diff --git a/HLMLib/.directory b/HLMLib/.directory deleted file mode 100644 index 504e714..0000000 --- a/HLMLib/.directory +++ /dev/null @@ -1,3 +0,0 @@ -[Dolphin] -Timestamp=2009,3,11,9,43,42 -ViewMode=1 diff --git a/HLMLib/ChangeLog b/HLMLib/ChangeLog deleted file mode 100644 index 55fd3ed..0000000 --- a/HLMLib/ChangeLog +++ /dev/null @@ -1,22 +0,0 @@ -2003-07-25 D. Mrva - - * LCMap.c (SetClassWords): Check that a class is not in the list of words excluded from that class. - -2003-04-30 Gareth Moore - - * LGBase.c (ReadHGram): Remove ':' from list of word separators. - -2003-02-23 D. Mrva - - * LGBase.h (MAXINF): set the value to 128 - - * LGBase.c (OpenInputSet): check the max number of input grams allowed - -2002-12-16 Steve Young - - * LModel.h (UNLOG_NATURAL): Remove extra minus sign. - -2002-12-09 Gunnar Evermann - - * Initial import of HLMLib source. - diff --git a/HLMLib/LCMap.c b/HLMLib/LCMap.c old mode 100644 new mode 100755 index 8f040bb..55fcbf0 --- a/HLMLib/LCMap.c +++ b/HLMLib/LCMap.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LCMap: Class Map Routines */ +/* File: LCMap Class map routines */ /* ----------------------------------------------------------- */ -char *lcmap_version = "!HVER!LCMap: 3.4.1 [CUED 12/03/09]"; +char *lcmap_version = "!HVER!LCMap: 3.5.0 [CUED 12/10/15]"; char *lcmap_vc_id = "$Id: LCMap.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LCMap.h b/HLMLib/LCMap.h old mode 100644 new mode 100755 index 89b3632..5403aa8 --- a/HLMLib/LCMap.h +++ b/HLMLib/LCMap.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LCMap: Class Map and Associated Routines */ +/* File: LCMap Class map and associated routines */ /* ----------------------------------------------------------- */ -/* !HVER!lcmap: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LCMap: 3.5.0 [CUED 12/10/15] */ #ifndef _LCMAP_H #define _LCMAP_H @@ -153,10 +156,13 @@ ClassEntry *GetWordClassEntry(ClassMap *c, int wdndx); not found. */ -/* -------------------- End of LCMap.h ---------------------- */ #ifdef __cplusplus } #endif #endif + +/* -------------------- End of LCMap.h ---------------------- */ + + diff --git a/HLMLib/LGBase.c b/HLMLib/LGBase.c old mode 100644 new mode 100755 index 84faeeb..68db2cd --- a/HLMLib/LGBase.c +++ b/HLMLib/LGBase.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGBase: Gram File Database Routines */ +/* File: LGBase Gram file database routines */ /* ----------------------------------------------------------- */ -char *lgbase_version = "!HVER!LGBase: 3.4.1 [CUED 12/03/09]"; +char *lgbase_version = "!HVER!LGBase: 3.5.0 [CUED 12/10/15]"; char *lgbase_vc_id = "$Id: LGBase.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LGBase.h b/HLMLib/LGBase.h old mode 100644 new mode 100755 index fd27687..ca7926f --- a/HLMLib/LGBase.h +++ b/HLMLib/LGBase.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGBase: Gram File Database Routines */ +/* File: LGBase Gram file database routines */ /* ----------------------------------------------------------- */ -/* !HVER!lgbase: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LGBase: 3.5.0 [CUED 12/10/15] */ #ifndef _LGBASE_H_ #define _LGBASE_H_ @@ -263,10 +266,13 @@ FoFTab *ReadFoFTab(MemHeap *mem, char *fn); Create a FoF table holding contents of file fn */ -/* -------------------- End of LGBase.h ---------------------- */ #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LGBase.h ---------------------- */ + diff --git a/HLMLib/LModel.c b/HLMLib/LModel.c old mode 100644 new mode 100755 index 0095ee2..74b7f23 --- a/HLMLib/LModel.c +++ b/HLMLib/LModel.c @@ -3,34 +3,37 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LModel: ARPA style LM handling */ +/* File: LModel ARPA style LM handling */ /* ----------------------------------------------------------- */ -char *lmodel_version = "!HVER!LModel: 3.4.1 [CUED 12/03/09]"; +char *lmodel_version = "!HVER!LModel: 3.5.0 [CUED 12/10/15]"; char *lmodel_vc_id = "$Id: LModel.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; @@ -796,7 +799,7 @@ static int LoadNGram(Source *src, int nSize, BackOffLM *lm, int *itran) LM_Id ndx=0; NGramInfo *gi; LMProbType ptype; - Byte fsize, flags; + Byte flags; SMEntry *se=NULL; FLEntry *feptr=NULL, *fe=NULL; float prob,bowt,scale; @@ -828,7 +831,6 @@ static int LoadNGram(Source *src, int nSize, BackOffLM *lm, int *itran) for (i=0; igInfo[nSize].nEntry; i++) { has_bowt = FALSE; hasOOV = FALSE; if (isBin) { /* binary model */ - fsize = (Byte) GetCh(src); flags = (Byte) GetCh(src); READ_FLOAT(src,&prob,TRUE); for (j=0; jgInfo[0].nEntry+=num_fe; @@ -1186,7 +1188,7 @@ static void ReadClassCounts(Source *src, int nWords, BackOffLM *lm) nid2 = GetNameId(lm->htab, ptr, TRUE); /* Get name id of class */ class_id = atoi(ptr+5) - 1; /* assume called CLASSn */ /* GLM */ - nid2->ptr = (void*) class_id; + nid2->ptr = (void*) (unsigned long int)class_id; ptr = ptr2 + 1; /* Pass over NULL */ ptr += strspn(ptr, " \t"); /* Skip over whitespace */ @@ -1242,7 +1244,7 @@ static void CountClassTotals(BackOffLM *lm) word_id = ((WordProb*)(lm->classBM[i+1]->ptr))->id; if (word_id!=i) HError(15490, "CountClassTotals: Inconsistent word ids found"); - class_id = (int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); + class_id = (int)(unsigned long int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); lm->totals[class_id] += lm->word[i]; } } @@ -1257,7 +1259,7 @@ static void CalcWordClassProbs(BackOffLM *lm) /* For each word */ for (i=0; iclassW; i++) { - class_id = (int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); + class_id = (int)(unsigned long int)(((WordProb*)(lm->classBM[i+1]->ptr))->class->ptr); prob = (((double)(lm->word[i]))) / ((double)(lm->totals[class_id])); ((WordProb*)(lm->classBM[i+1]->ptr))->prob = LOG_NATURAL(prob); } diff --git a/HLMLib/LModel.h b/HLMLib/LModel.h old mode 100644 new mode 100755 index 8bae187..facd7b1 --- a/HLMLib/LModel.h +++ b/HLMLib/LModel.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LModel: ARPA style LM handling */ +/* File: LModel ARPA style LM handling */ /* ----------------------------------------------------------- */ -/* !HVER!LModel: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LModel: 3.5.0 [CUED 12/10/15] */ /* Language model handling @@ -271,10 +274,12 @@ float *GetNGramProbVecSE(BackOffLM *lm, int *nId, int nSize, FLEntry *sfe); LogFloat LMTrans2(LModel *LM, LMState src, LabId wdid, LMState *dest); -/* -------------------- End of LModel.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LModel.h ---------------------- */ + diff --git a/HLMLib/LPCalc.c b/HLMLib/LPCalc.c old mode 100644 new mode 100755 index e0b6ecc..1f18522 --- a/HLMLib/LPCalc.c +++ b/HLMLib/LPCalc.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPCalc: probability calculation */ +/* File: LPCalc: probability calculation */ /* ----------------------------------------------------------- */ -char *lpcalc_version = "!HVER!LPCalc: 3.4.1 [CUED 12/03/09]"; +char *lpcalc_version = "!HVER!LPCalc: 3.5.0 [CUED 12/10/15]"; char *lpcalc_vc_id = "$Id: LPCalc.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" /* HMM ToolKit Modules */ diff --git a/HLMLib/LPCalc.h b/HLMLib/LPCalc.h old mode 100644 new mode 100755 index 656def2..f6d00cf --- a/HLMLib/LPCalc.h +++ b/HLMLib/LPCalc.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPCalc: probability calculation */ +/* File: LPCalc probability calculation */ /* ----------------------------------------------------------- */ -/* !HVER!LPCalc: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LPCalc: 3.5.0 [CUED 12/10/15] */ #ifndef _LPCALC_H #define _LPCALC_H @@ -96,10 +99,12 @@ void ComputeFoFTab(FoFTab *ftab, int nSize, NGInputSet *inSet); ComputeFoFTab: scan files and produce FoF table */ -/* -------------------- End of LPCalc.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LPCalc.h ---------------------- */ + diff --git a/HLMLib/LPMerge.c b/HLMLib/LPMerge.c old mode 100644 new mode 100755 index 644331a..f263f77 --- a/HLMLib/LPMerge.c +++ b/HLMLib/LPMerge.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPMerge.c: probability merging */ +/* File: LPMerge.c probability merging */ /* ----------------------------------------------------------- */ -char *lpmerge_version = "!HVER!LPMerge: 3.4.1 [CUED 12/03/09]"; +char *lpmerge_version = "!HVER!LPMerge: 3.5.0 [CUED 12/10/15]"; char *lpmerge_vc_id = "$Id: LPMerge.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" /* HMM ToolKit Modules */ @@ -147,7 +150,8 @@ static BackOffLM *InitTargetModel(MemHeap *heap, int nSize, WordMap *wList) /* InitialiseMerge: create lookup tables */ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) { - int i,j,nw; + int i,nw; + long int j; LMInfo *li; Boolean inLM; LabId lid, *lip; @@ -168,7 +172,7 @@ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) na = (int *) New(heap,(nWords+2)*sizeof(NameId)); for (lip = mi->wList->id, j=1; j<=nWords; j++, lip++) { nid = GetNameId(li->lm->htab, (*lip)->name, FALSE); - na[j] = (nid==NULL) ? 0 : (int) nid->aux; + na[j] = (nid==NULL) ? 0 : (int)(long int)nid->aux; } l2nId[i] = na; } @@ -180,7 +184,7 @@ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) la = (int *) New(heap,(nw+2)*sizeof(int)); for (nip=li->lm->binMap+1,j=1; j<=nw; j++,nip++) { lid = GetLabId((*nip)->name, FALSE); - la[j] = (lid==NULL) ? 0 : (int) lid->aux; + la[j] = (lid==NULL) ? 0 : (int)(long int)lid->aux; } n2lId[i] = la; } @@ -192,7 +196,7 @@ static void InitialiseMerge(MemHeap *heap, MergeInfo *mi) /* ensure words present at least in one model */ for (lip = mi->wList->id, j=0; jaux)]!=0) + if (l2nId[i][(int)(long int)((*lip)->aux)]!=0) inLM = TRUE; if (!inLM) HError(15620,"InitialiseMerge: Unable to find word %s in any model\n",(*lip)->name); @@ -420,28 +424,11 @@ BackOffLM *MergeModels(MemHeap *heap, LMInfo *lmInfo, int nLModel, /* ---------------------- Normalisation -------------------- */ -static void NormaliseFE(FLEntry *tgtFE) -{ - int i; - double psum; - FLEntry *fe; - SMEntry *se; - - psum = 0.0; - for (se=tgtFE->sea,i=0; inse; i++,se++) - psum += se->prob; - for (se=tgtFE->sea,i=0; inse; i++,se++) - se->prob = se->prob/psum; - for (fe=tgtFE->fea,i=0; infe; i++,fe++) - NormaliseFE(fe); -} - /* EXPORT->NormaliseLM: normalise probs and calculate back-off weights */ void NormaliseLM(BackOffLM *lm) { FLEntry *context[LM_NSIZE]; - /* NormaliseFE(&lm->root); */ context[0] = &lm->root; CalcBackOff(lm,context,0); } diff --git a/HLMLib/LPMerge.h b/HLMLib/LPMerge.h old mode 100644 new mode 100755 index dc52f24..67f5d7e --- a/HLMLib/LPMerge.h +++ b/HLMLib/LPMerge.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPMerge: LM interpolation */ +/* File: LPMerge LM interpolation */ /* ----------------------------------------------------------- */ -/* !HVER!LPMerge: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LPMerge: 3.5.0 [CUED 12/10/15] */ /* ------------------- Model interpolation ----------------- */ @@ -64,10 +67,12 @@ void NormaliseLM(BackOffLM *lm); Normalise probabilities and calculate back-off weights */ -/* -------------------- End of LPMerge.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LPMerge.h ---------------------- */ + diff --git a/HLMLib/LUtil.c b/HLMLib/LUtil.c old mode 100644 new mode 100755 index e4d0f06..0c86e3c --- a/HLMLib/LUtil.c +++ b/HLMLib/LUtil.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LUtil: General Utility Routines */ +/* File: LUtil General Utility Routines */ /* ----------------------------------------------------------- */ -char *lutil_version = "!HVER!LUtil: 3.4.1 [CUED 12/03/09]"; +char *lutil_version = "!HVER!LUtil: 3.5.0 [CUED 12/10/15]"; char *lutil_vc_id = "$Id: LUtil.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LUtil.h b/HLMLib/LUtil.h old mode 100644 new mode 100755 index f335ac0..470b080 --- a/HLMLib/LUtil.h +++ b/HLMLib/LUtil.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LUtil: General Utility Routines */ +/* File: LUtil General Utility Routines */ /* ----------------------------------------------------------- */ -/* !HVER!LUtil: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LUtil: 3.5.0 [CUED 12/10/15] */ #ifndef _LUTIL_H #define _LUTIL_H @@ -133,10 +136,12 @@ void PrintHashTabStats(HashTab *htab); void usort(void *base, int n, size_t size, int (*compar)(const void *, const void *)); -/* --------------------- End of LUtil.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* --------------------- End of LUtil.h ---------------------- */ + diff --git a/HLMLib/LWMap.c b/HLMLib/LWMap.c old mode 100644 new mode 100755 index 745d4b5..0e870e6 --- a/HLMLib/LWMap.c +++ b/HLMLib/LWMap.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LWMap: Word List and Word Map Routines */ +/* File: LWMap Word List and Word Map Routines */ /* ----------------------------------------------------------- */ -char *lwmap_version = "!HVER!LWMap: 3.4.1 [CUED 12/03/09]"; +char *lwmap_version = "!HVER!LWMap: 3.5.0 [CUED 12/10/15]"; char *lwmap_vc_id = "$Id: LWMap.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; #include "HShell.h" diff --git a/HLMLib/LWMap.h b/HLMLib/LWMap.h old mode 100644 new mode 100755 index a8bedee..98a0bf6 --- a/HLMLib/LWMap.h +++ b/HLMLib/LWMap.h @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LWMap: Word List and Word Map Routines */ +/* File: LWMap Word list and word map routines */ /* ----------------------------------------------------------- */ -/* !HVER!lwmap: 3.4.1 [CUED 12/03/09] */ +/* !HVER!LWMap: 3.5.0 [CUED 12/10/15] */ #ifndef _LWMAP_H @@ -171,10 +174,12 @@ int WordLMCmp(int ndx1, int ndx2, WordMap *wm); +1 if ndx1 ordered after ndx2 (ie same as strcmp) */ -/* -------------------- End of LWMap.h ---------------------- */ - #ifdef __cplusplus } #endif #endif + + +/* -------------------- End of LWMap.h ---------------------- */ + diff --git a/HLMLib/Makefile.in b/HLMLib/MakefileCPU old mode 100644 new mode 100755 similarity index 71% rename from HLMLib/Makefile.in rename to HLMLib/MakefileCPU index ea3dd4d..41fd7a8 --- a/HLMLib/Makefile.in +++ b/HLMLib/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,32 +17,32 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HLMLib/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include -CC = @CC@ -CFLAGS = @CFLAGS@ -DSANITY -I. -I../HTKLib/ -RANLIB = @RANLIB@ -INSTALL = @INSTALL@ +CC = gcc +CFLAGS = -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -DSANITY -I. -I../HTKLib/ +RANLIB = ranlib +INSTALL = /usr/bin/install -c target = HLMLib.a modules = LModel.o LPMerge.o LPCalc.o LUtil.o LWMap.o LCMap.o LGBase.o diff --git a/HLMLib/MakefileMKL b/HLMLib/MakefileMKL new file mode 100755 index 0000000..f852ea2 --- /dev/null +++ b/HLMLib/MakefileMKL @@ -0,0 +1,76 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMLib/MakefileMKL +# ----------------------------------------------------------- + +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = icc +CFLAGS := $(CFLAGS) -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I. -DMKL -DPHNALG -I../HTKLib/ +LDFLAGS = -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm + +RANLIB = ranlib +INSTALL = /usr/bin/install -c +target = HLMLib.a +modules = LModel.o LPMerge.o LPCalc.o LUtil.o LWMap.o LCMap.o LGBase.o + +all: $(target) + +$(target): $(modules) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(modules) $(target) + +cleanup: + -rm -f $(modules) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: $(target) mkinstalldir + $(INSTALL) -m 755 $< $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HLMLib/MakefileNVCC b/HLMLib/MakefileNVCC new file mode 100755 index 0000000..5c52f19 --- /dev/null +++ b/HLMLib/MakefileNVCC @@ -0,0 +1,76 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMLib/MakefileNVCC +# ----------------------------------------------------------- + +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = /usr/local/cuda/bin/nvcc +CFLAGS := -m64 -ccbin gcc -gencode arch=compute_30,code=sm_30 -D'ARCH="x86_64"' -DCUDA -DSANITY -I. -I../HTKLib/ +LDFLAGS = -L/usr/local/cuda/lib -Wl,-rpath=/usr/local/cuda/lib -L/usr/local/cuda/lib64 -Wl,-rpath=/usr/local/cuda/lib64 -lcblas -lpthread + +RANLIB = ranlib +INSTALL = /usr/bin/install -c +target = HLMLib.a +modules = LModel.o LPMerge.o LPCalc.o LUtil.o LWMap.o LCMap.o LGBase.o + +all: $(target) + +$(target): $(modules) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(modules) $(target) + +cleanup: + -rm -f $(modules) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: $(target) mkinstalldir + $(INSTALL) -m 755 $< $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HLMLib/htk_hlmlib_nt.mkf b/HLMLib/htk_hlmlib_nt.mkf deleted file mode 100644 index a70440a..0000000 --- a/HLMLib/htk_hlmlib_nt.mkf +++ /dev/null @@ -1,62 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTKLib static library, MSVC -# - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< -CC=cl -CL=link -CPU=win32 - -# the MSDOS is needed to set _fmode to binary in HShell.c -HTKCF = /I "." /I "../HTKLib" /D "WIN32_AUDIO" /D ARCH=\"WIN32\" - -# use the following for optimised compilation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for a debug compilation -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -CFLAGS = $(SYSCF) $(HTKCF) - -# the following is only needed when making a DLL -SYSLF = /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# the following is only needed when making a debug DLL -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# flags used -# /MT multi-threaded executable -# /ML single-threaded executable -# /W1 warning level 1 -# /GX synchronous exception handling -# /O2 maximise speed -# /G5 P5 optimisation -# /G6 P6 optimisation -# /Ob2 allow inlining of functions not tagged with _inline - -libHLM = HLMLib.$(CPU) - -syslib = kernel32.lib user32.lib gdi32.lib winspool.lib \ - comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ - uuid.lib odbc32.lib odbccp32.lib winmm.lib - -libs = $(syslib) - -core = LCMap.obj LGBase.obj LModel.obj LPCalc.obj LPMerge.obj \ - LUtil.obj LWMap.obj - - -all: $(libHLM).lib - -$(libHLM).lib: $(core) - lib /OUT:$(libHLM).lib $(core) - lib /list $(libHLM).lib - -clean: - del *.obj $(libHLM).lib - -cleanup: - del *.obj - diff --git a/HLMTools/.directory b/HLMTools/.directory deleted file mode 100644 index 1949c3a..0000000 --- a/HLMTools/.directory +++ /dev/null @@ -1,3 +0,0 @@ -[Dolphin] -Timestamp=2009,3,11,9,44,15 -ViewMode=1 diff --git a/HLMTools/ChangeLog b/HLMTools/ChangeLog deleted file mode 100644 index 4783664..0000000 --- a/HLMTools/ChangeLog +++ /dev/null @@ -1,79 +0,0 @@ -2003-10-15 Gunnar Evermann - - * LMerge.c: Remove unused VERSION constant. - -2003-02-04 D. Mrva - - * LFoF.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LSubset.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LPlex.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LNorm.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LNewMap.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LMerge.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LLink.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LGPrep.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LGList.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LGCopy.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LBuild.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * LAdapt.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - - * HLMCopy.c (main): Add return EXIT_SUCCESS after EXIT() to make compiler happy - -2003-01-29 D. Mrva - - * LGCopy.c (main): Always exit with Exit(EXIT_SUCCESS) instead of Exit(0). - - * LNorm.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LNewMap.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LMerge.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LLink.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LGPrep.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LGList.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LFoF.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LBuild.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LAdapt.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * HLMCopy.c (main): Always exit with Exit(EXIT_SUCCESS) - rather than with return EXIT_SUCCESS. - - * LPlex.c (main): Always exit with Exit(EXIT_SUCCESS) instead of exit(0). - -2002-12-16 Gunnar Evermann - - * Cluster.c (import_classmap): Fix classmap check. - - * LPlex.c (ProcessTextStream): Always enable buffer size check and - turn warning into error. - From Gareth Moore - -2002-12-09 Gunnar Evermann - - * Initial import of HLMTools source. diff --git a/HLMTools/Cluster.c b/HLMTools/Cluster.c old mode 100644 new mode 100755 index fd76c2a..820a31e --- a/HLMTools/Cluster.c +++ b/HLMTools/Cluster.c @@ -3,33 +3,34 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* author: Gareth Moore */ +/* author: */ +/* Gareth Moore */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 1999-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1999-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* Cluster.c: Cluster words into classes */ - +/* File: Cluster.c Cluster words into classes */ +/* ----------------------------------------------------------- */ -char *Cluster_version = "!HVER!Cluster: 3.4.1 [CUED 12/03/09]"; +char *Cluster_version = "!HVER!Cluster: 3.5.0 [CUED 12/10/15]"; char *Cluster_vc_id = "$Id: Cluster.c,v 1.1.1.1 2006/10/11 09:54:43 jal58 Exp $"; /* HTK/HLM libraries: */ @@ -867,11 +868,13 @@ void do_recovery(char *fname, int words) file = FOpen(fname, NoFilter, &pipe_status); check_file(file, fname, "do_recovery"); - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); if (strncmp(tmp, "Clustering automatic", 20)!=0) { HError(17013, "This is not a recovery status file"); } - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read current word point from status file"); @@ -884,7 +887,8 @@ void do_recovery(char *fname, int words) else { from = atoi(ptr); } - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read recovery class map file name from status file"); @@ -893,7 +897,8 @@ void do_recovery(char *fname, int words) ptr = strtok(ptr, " \t\n"); import_classmap(ptr, words); - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read recovery unknown word status from status file"); @@ -903,7 +908,8 @@ void do_recovery(char *fname, int words) unk_sep = (*ptr=='1'); start_class = unk_sep?3:2; - fgets(tmp, 256, file); + if(fgets(tmp, 256, file)==NULL) + HError(17013,"Cluster:do_recovery: Error reading from %s",fname); ptr = strchr(tmp, ':'); if (!ptr) { HError(17013, "Failure to read recovery word sort order status from status file"); @@ -1351,7 +1357,8 @@ void import_classmap(char *fname, int numb_words) size = atoi(ptr); /* Read number of words in class */ for (i=0; i= (int)block_end) { + if (((int)(unsigned long int)block+(int)size) >= (int)(unsigned long int)block_end) { block = New(&global_heap, block_grab_size); - block_end = (void *) ((int)block+(int)block_grab_size); + block_end = (void *)(unsigned long int)((int)(unsigned long int)block+(int)block_grab_size); } /* Hand back the next free space */ ptr = block; - block = (void*) ((int) block + (int) size); /* Next free byte */ - block = (void*) ((((int)block)+3) & (~(int)3)); /* Word-align */ + block = (void*)(unsigned long int)((int)(unsigned long int)block + (int) size); /* Next free byte */ + block = (void*)(unsigned long int)((((int)(unsigned long int)block)+3) & (~(int)3)); /* Word-align */ return ptr; } diff --git a/HLMTools/HLMCopy.c b/HLMTools/HLMCopy.c old mode 100644 new mode 100755 index c76337c..f3261d0 --- a/HLMTools/HLMCopy.c +++ b/HLMTools/HLMCopy.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLMCopy.c LM conversion/normalisation utility */ +/* File: HLMCopy.c LM conversion/normalisation utility */ /* ----------------------------------------------------------- */ -char *prog_version = "!HVER!HLMCopy: 3.4.1 [CUED 12/03/09]"; +char *prog_version = "!HVER!HLMCopy: 3.5.0 [CUED 12/10/15]"; char *prog_vc_id = "$Id: HLMCopy.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include diff --git a/HLMTools/LAdapt.c b/HLMTools/LAdapt.c old mode 100644 new mode 100755 index 31d7797..c90d89f --- a/HLMTools/LAdapt.c +++ b/HLMTools/LAdapt.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LAdapt.c - adapt LM with new text */ +/* File: LAdapt.c dapt LM with new text */ /* ----------------------------------------------------------- */ -char *ladapt_version = "!HVER!LAdapt: 3.4.1 [CUED 12/03/09]"; +char *ladapt_version = "!HVER!LAdapt: 3.5.0 [CUED 12/10/15]"; char *ladapt_vc_id = "$Id: LAdapt.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LBuild.c b/HLMTools/LBuild.c old mode 100644 new mode 100755 index 2a4494e..2db1168 --- a/HLMTools/LBuild.c +++ b/HLMTools/LBuild.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LBuild.c - generate LM */ +/* File: LBuild.c generate LM */ /* ----------------------------------------------------------- */ -char *lbuild_version = "!HVER!LBuild: 3.4.1 [CUED 12/03/09]"; +char *lbuild_version = "!HVER!LBuild: 3.5.0 [CUED 12/10/15]"; char *lbuild_vc_id = "$Id: LBuild.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LFoF.c b/HLMTools/LFoF.c old mode 100644 new mode 100755 index be98c58..1a38ecc --- a/HLMTools/LFoF.c +++ b/HLMTools/LFoF.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LFoF.c - compute frequency of frequency files */ +/* File: LFoF.c compute frequency of frequency files */ /* ----------------------------------------------------------- */ -char *lfof_version = "!HVER!LFoF: 3.4.1 [CUED 12/03/09]"; +char *lfof_version = "!HVER!LFoF: 3.5.0 [CUED 12/10/15]"; char *lfof_vc_id = "$Id: LFoF.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LGCopy.c b/HLMTools/LGCopy.c old mode 100644 new mode 100755 index 074e3b0..39f91c6 --- a/HLMTools/LGCopy.c +++ b/HLMTools/LGCopy.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGCopy - copy ngram files and optionally map OOVs */ +/* File: LGCopy copy ngram files and optionally map OOVs */ /* ----------------------------------------------------------- */ -char *lgcopy_version = "!HVER!LGCopy: 3.4.1 [CUED 12/03/09]"; +char *lgcopy_version = "!HVER!LGCopy: 3.5.0 [CUED 12/10/15]"; char *lgcopy_vc_id = "$Id: LGCopy.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LGList.c b/HLMTools/LGList.c old mode 100644 new mode 100755 index 8f2c12a..935906e --- a/HLMTools/LGList.c +++ b/HLMTools/LGList.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGList.c: Display contents of a gram file */ +/* File: LGList.c Display contents of a gram file */ /* ----------------------------------------------------------- */ -char *lglist_version = "!HVER!LGList: 3.4.1 [CUED 12/03/09]"; +char *lglist_version = "!HVER!LGList: 3.5.0 [CUED 12/10/15]"; char *lglist_vc_id = "$Id: LGList.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LGPrep.c b/HLMTools/LGPrep.c old mode 100644 new mode 100755 index 18699b0..43e4c3e --- a/HLMTools/LGPrep.c +++ b/HLMTools/LGPrep.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LGPrep - prepare a sorted GramBase */ +/* File: LGPrep prepare a sorted GramBase */ /* ----------------------------------------------------------- */ -char *lgprep_version = "!HVER!LGPrep: 3.4.1 [CUED 12/03/09]"; +char *lgprep_version = "!HVER!LGPrep: 3.5.0 [CUED 12/10/15]"; char *lgprep_vc_id = "$Id: LGPrep.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LLink.c b/HLMTools/LLink.c old mode 100644 new mode 100755 index 190e566..1be6a99 --- a/HLMTools/LLink.c +++ b/HLMTools/LLink.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LFile.c: link LM files to make a class LM */ +/* File: LFile.c link LM files to make a class LM */ /* ----------------------------------------------------------- */ -char *llink_version = "!HVER!LLink: 3.4.1 [CUED 12/03/09]"; +char *llink_version = "!HVER!LLink: 3.5.0 [CUED 12/10/15]"; char *llink_vc_id = "$Id: LLink.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" @@ -142,7 +144,8 @@ int main(int argc, char *argv[]) if (!single_file) { file = CFOpen(wcFile, LangModFilter, &pipe_status); - fscanf(file, "Word|Class %20s", type); + if(fscanf(file, "Word|Class %20s", type)!=1) + HError(17119, "Failed to extract string from %s",wcFile); if (strcmp(type, "probabilities") && strcmp(type, "counts")) { HError(17119, "Word|Class file is of an unknown type"); } @@ -176,7 +179,8 @@ int main(int argc, char *argv[]) fprintf(write, "CLASS MODEL\n"); file = CFOpen(wcFile, LangModFilter, &ps2); - fscanf(file, "Word|Class %20s\n", type); + if(fscanf(file, "Word|Class %20s\n", type)!=1) + HError(17119, "Failed to extract string from %s",wcFile); if (strcmp(type, "probabilities") && strcmp(type, "counts")) { HError(17119, "Word|Class file is of an unknown type"); } diff --git a/HLMTools/LMerge.c b/HLMTools/LMerge.c old mode 100644 new mode 100755 index 0243693..3a3bf1a --- a/HLMTools/LMerge.c +++ b/HLMTools/LMerge.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LMerge: combine language models */ +/* File: LMerge combine language models */ /* ----------------------------------------------------------- */ -char *lmerge_version = "!HVER!LMerge: 3.4.1 [CUED 12/03/09]"; +char *lmerge_version = "!HVER!LMerge: 3.5.0 [CUED 12/10/15]"; char *lmerge_vc_id = "$Id: LMerge.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include diff --git a/HLMTools/LNewMap.c b/HLMTools/LNewMap.c old mode 100644 new mode 100755 index 9fe52b9..2fc0ebc --- a/HLMTools/LNewMap.c +++ b/HLMTools/LNewMap.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LNewMap.c: create an empty word map file */ +/* File: LNewMap.c create an empty word map file */ /* ----------------------------------------------------------- */ -char *lnewmap_version = "!HVER!LNewMap: 3.4.1 [CUED 12/03/09]"; +char *lnewmap_version = "!HVER!LNewMap: 3.5.0 [CUED 12/10/15]"; char *lnewmap_vc_id = "$Id: LNewMap.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/LNorm.c b/HLMTools/LNorm.c old mode 100644 new mode 100755 index 403af0a..e340160 --- a/HLMTools/LNorm.c +++ b/HLMTools/LNorm.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LNorm: normalise model */ +/* File: LNorm normalise model */ /* ----------------------------------------------------------- */ -char *lnorm_version = "!HVER!LNorm: 3.4.1 [CUED 12/03/09]"; +char *lnorm_version = "!HVER!LNorm: 3.5.0 [CUED 12/10/15]"; char *lnorm_vc_id = "$Id: LNorm.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include diff --git a/HLMTools/LPlex.c b/HLMTools/LPlex.c old mode 100644 new mode 100755 index 5271490..6fcf829 --- a/HLMTools/LPlex.c +++ b/HLMTools/LPlex.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LPlex: compute perplexity */ +/* File: LPlex compute perplexity */ /* ----------------------------------------------------------- */ -char *lplex_version = "!HVER!LPlex: 3.4.1 [CUED 12/03/09]"; +char *lplex_version = "!HVER!LPlex: 3.5.0 [CUED 12/10/15]"; char *lplex_vc_id = "$Id: LPlex.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include @@ -329,22 +331,23 @@ static void LinkEquiv(void) for (p=eqList; p!=NULL; p=p->next) { cl = p->classId; eq = p->equivId; if (eq->aux==NULL) { - eq->aux = (Ptr) (nWords + unkEquiv); + eq->aux = (Ptr)(unsigned long int)(nWords + unkEquiv); unkEquiv++; } - eqId[(int) eq->aux] = cl; + eqId[(unsigned long int)eq->aux] = cl; } } /* Initialise: perform global initialisations */ static void Initialise(void) { - int i,j,ndx; + int j; + unsigned long int i,ndx; float x; LMInfo *li; Boolean inLM; LabId *wid,lab; - NameId *na,nid; + NameId *na; Boolean isPipe; nulClass = GetLabId(nulName,TRUE); @@ -393,7 +396,7 @@ static void Initialise(void) { lab = GetLabId(na[j+1]->name, TRUE); if (lab->aux==NULL) - lab->aux = (Ptr) (++nWords); + lab->aux = (Ptr)(unsigned long int)(++nWords); } } else @@ -404,7 +407,7 @@ static void Initialise(void) { lab = GetLabId(na[j+1]->name,TRUE); if (lab->aux==NULL) - lab->aux = (Ptr) (++nWords); + lab->aux = (Ptr)(unsigned long int)(++nWords); } } } @@ -418,7 +421,7 @@ static void Initialise(void) for (j=0; jlm->classW; j++) { lab = GetLabId(na[j+1]->name,TRUE); - ndx = ((int) lab->aux) - 1; + ndx = ((unsigned long int) lab->aux) - 1; wList.id[ndx] = lab; } } @@ -429,7 +432,7 @@ static void Initialise(void) for (j=0; jlm->vocSize; j++) { lab = GetLabId(na[j+1]->name,TRUE); - ndx = ((int) lab->aux) - 1; + ndx = ((unsigned long int) lab->aux) - 1; wList.id[ndx] = lab; } } @@ -459,14 +462,14 @@ static void Initialise(void) for (wid = wList.id, j=0; jlm->classLM) { - nid = na[(int) ((*wid)->aux)] = GetNameId(li->lm->classH, (*wid)->name, FALSE); + na[(unsigned long int)((*wid)->aux)] = GetNameId(li->lm->classH, (*wid)->name, FALSE); } else { - nid = na[(int) ((*wid)->aux)] = GetNameId(li->lm->htab, (*wid)->name, FALSE); + na[(unsigned long int)((*wid)->aux)] = GetNameId(li->lm->htab, (*wid)->name, FALSE); } #ifdef SANITY - if (nid==NULL) + if (na[(unsigned long int)((*wid)->aux)]==NULL) HError(-16625,"Unable to find word %s in model %s\n",(*wid)->name,li->fn); #endif } @@ -476,7 +479,7 @@ static void Initialise(void) /* ensure words present at least in one model */ for (wid = wList.id, j=0; jaux)]!=NULL) + if (l2nId[i][(unsigned long int)((*wid)->aux)]!=NULL) inLM = TRUE; if (!inLM) HError(16625,"Unable to find word %s in any model\n",(*wid)->name); @@ -485,7 +488,7 @@ static void Initialise(void) /* create equivalence class lookup array */ eqId = (LabId *) New(&permHeap,(nWords+NumEquiv()+2)*sizeof(NameId)); for (wid = wList.id, i=0; iaux)] = NULL; + eqId[(unsigned long int)((*wid)->aux)] = NULL; } /* link equivalence classes */ @@ -616,7 +619,7 @@ static LabId GetEQLab(LabId id) if (id->aux==NULL) return id; - if ((cl = (LabId) eqId[(int) (id->aux)])==NULL) + if ((cl = (LabId) eqId[(unsigned long int)(id->aux)])==NULL) return id; return cl; } @@ -639,7 +642,7 @@ static double GetProb(LabId *wlab, int nSize) if (nLModel==1) { inThisLM = TRUE; for (j=0; jaux)])==NULL) + if ((nGram[j] = l2nId[0][(unsigned long int)(wlab[j]->aux)])==NULL) inThisLM = FALSE; } if (inThisLM) { @@ -656,7 +659,7 @@ static double GetProb(LabId *wlab, int nSize) inAnyLM = FALSE; for (li=lmInfo, i=0; iaux)])==NULL) + if ((nGram[j] = l2nId[i][(unsigned long int) (wlab[j]->aux)])==NULL) inThisLM = FALSE; } if (!inThisLM) diff --git a/HLMTools/LSubset.c b/HLMTools/LSubset.c old mode 100644 new mode 100755 index 310388f..6c2a391 --- a/HLMTools/LSubset.c +++ b/HLMTools/LSubset.c @@ -3,33 +3,35 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* Cambridge University Engineering Department */ +/* http://svr-www.eng.cam.ac.uk/ */ /* */ -/* main authors: Valtcho Valtchev, Steve Young, */ -/* Julian Odell, Gareth Moore */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* main authors: */ +/* Valtcho Valtchev, Steve Young, */ +/* Julian Odell, Gareth Moore */ /* */ -/* 1994-2002 Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1994-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: LSubset.c: produce a subset map */ +/* File: LSubset.c produce a subset map */ /* ----------------------------------------------------------- */ -char *lsubset_version = "!HVER!LSubset: 3.4.1 [CUED 12/03/09]"; +char *lsubset_version = "!HVER!LSubset: 3.5.0 [CUED 12/10/15]"; char *lsubset_vc_id = "$Id: LSubset.c,v 1.1.1.1 2006/10/11 09:54:44 jal58 Exp $"; #include "HShell.h" diff --git a/HLMTools/Makefile.in b/HLMTools/MakefileCPU old mode 100644 new mode 100755 similarity index 65% rename from HLMTools/Makefile.in rename to HLMTools/MakefileCPU index baae7c9..abdd7ed --- a/HLMTools/Makefile.in +++ b/HLMTools/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,35 +17,35 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HLMTools/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh inc = ../HTKLib -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include hlib = ../HTKLib llib = ../HLMLib HLIBS = $(hlib)/HTKLib.a $(llib)/HLMLib.a -CC = @CC@ -CFLAGS = @CFLAGS@ -I$(hlib) -I$(llib) -LDFLAGS = @LDFLAGS@ $(HLIBS) -lm -INSTALL = @INSTALL@ +CC = gcc +CFLAGS = -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(hlib) -I$(llib) +LDFLAGS = -L/usr/X11R6/lib $(HLIBS) -lpthread -lm +INSTALL = /usr/bin/install -c PROGS = Cluster HLMCopy LAdapt LBuild LFoF \ LGCopy LGList LGPrep LLink LMerge \ LNewMap LNorm LPlex LSubset @@ -54,9 +54,9 @@ all: $(PROGS) # build $(PROGS) %: %.c $(HLIBS) - if [ ! -d $(bindir) -a X_@TRADHTK@ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) - if [ X_@TRADHTK@ = X_yes ] ; then $(INSTALL) -m 755 $@@BINARY_EXTENSION@ $(bindir) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi strip: $(PROGS) -strip $(PROGS) @@ -71,9 +71,9 @@ distclean: -rm -f *.o $(PROGS) Makefile *.exe install: mkinstalldir $(PROGS) - for program in $(PROGS) ; do $(INSTALL) -m 755 $${program}@BINARY_EXTENSION@ $(bindir) ; done + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done mkinstalldir: - if [ ! -d $(bindir) -a X_@TRADHTK@ = X_yes ] ; then mkdir -p $(bindir) ; fi + -mkdir -p $(bindir) .PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HLMTools/MakefileMKL b/HLMTools/MakefileMKL new file mode 100755 index 0000000..4032b02 --- /dev/null +++ b/HLMTools/MakefileMKL @@ -0,0 +1,81 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMTools/MakefileMKL +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include +hlib = ../HTKLib +llib = ../HLMLib +HLIBS = $(hlib)/HTKLib.a $(llib)/HLMLib.a + +CC = icc +CFLAGS = -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(inc) -DMKL -DPHNALG -I$(hlib) -I$(llib) +LDFLAGS = -L/usr/X11R6/lib $(HLIBS) -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.a /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread -lm + +INSTALL = /usr/bin/install -c +PROGS = Cluster HLMCopy LAdapt LBuild LFoF \ + LGCopy LGList LGPrep LLink LMerge \ + LNewMap LNorm LPlex LSubset + +all: $(PROGS) + +# build $(PROGS) +%: %.c $(HLIBS) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) Makefile *.exe + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HLMTools/MakefileNVCC b/HLMTools/MakefileNVCC new file mode 100755 index 0000000..686d4d0 --- /dev/null +++ b/HLMTools/MakefileNVCC @@ -0,0 +1,81 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HLMTools/MakefileNVCC +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include +hlib = ../HTKLib +llib = ../HLMLib +HLIBS = $(hlib)/HTKLib.a $(llib)/HLMLib.a + +CC = /usr/local/cuda/bin/nvcc +CFLAGS = -m64 -ccbin gcc -gencode arch=compute_35,code=sm_35 -D'ARCH="x86_64"' -DCUDA -D_SVID_SOURCE -DOSS_AUDIO -I$(hlib) -I$(llib) +LDFLAGS = -L/usr/X11R6/lib $(HLIBS) -lcudart -lcublas -lpthread -lm + +INSTALL = /usr/bin/install -c +PROGS = Cluster HLMCopy LAdapt LBuild LFoF \ + LGCopy LGList LGPrep LLink LMerge \ + LNewMap LNorm LPlex LSubset + +all: $(PROGS) + +# build $(PROGS) +%: %.c $(HLIBS) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) Makefile *.exe + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HLMTools/htk_hlmtools_nt.mkf b/HLMTools/htk_hlmtools_nt.mkf deleted file mode 100644 index b053f08..0000000 --- a/HLMTools/htk_hlmtools_nt.mkf +++ /dev/null @@ -1,85 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTK tools, MSVC -# - -.SUFFIXES: .exe - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< - -.obj.exe: - $(CL) $(SYSLF) /OUT:$(HBIN)/$@ $< $(libs) - -CC=cl -CL=link -CPU=win32 - -HBIN = ../bin.win32 - -# use the following for full optimisation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" - -# use the following for debugging -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for non-debug link -SYSLF = /nologo /subsystem:console /incremental:no - -# use the following for debug link -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:console /incremental:no - -# the following is for HLM tools linked with HTKLib and HLMLib -HTKCF = /I "../HTKLib" /I "../HLMLib" /I "." - -htklib = ../HTKLib/HTKLib.$(CPU).lib - -hlmlib = ../HLMLib/HLMLib.$(CPU).lib - -CFLAGS = $(SYSCF) $(HTKCF) - -syslib = winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \ - advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib - -libs = $(syslib) $(htklib) $(hlmlib) - -tools = Cluster.exe HLMCopy.exe LAdapt.exe LBuild.exe LFoF.exe LGCopy.exe \ - LGList.exe LGPrep.exe LMerge.exe LNorm.exe LPlex.exe LSubset.exe \ - LNewMap.exe LLink.exe - -Cluster.exe: Cluster.obj - -HLMCopy.exe: HLMCopy.obj - -LAdapt.exe: LAdapt.obj - -LBuild.exe: LBuild.obj - -LFoF.exe: LFoF.obj - -LGCopy.exe: LGCopy.obj - -LGList.exe: LGList.obj - -LGPrep.exe: LGPrep.obj - -LMerge.exe: LMerge.obj - -LNorm.exe: LNorm.obj - -LPlex.exe: LPlex.obj - -LSubset.exe: LSubset.obj - -LNewMap.exe: LNewMap.obj - -LLink.exe: LLink.obj - -all: $(tools) - echo done - -clean: - del *.obj *.exe - -cleanup: - del *.obj diff --git a/HTK/HTK.dsp b/HTK/HTK.dsp deleted file mode 100644 index 5ecd9d1..0000000 --- a/HTK/HTK.dsp +++ /dev/null @@ -1,96 +0,0 @@ -# Microsoft Developer Studio Project File - Name="HTK" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=HTK - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "HTK.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "HTK.mak" CFG="HTK - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "HTK - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "HTK - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "HTK - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x809 /d "NDEBUG" -# ADD RSC /l 0x809 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "HTK - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x809 /d "_DEBUG" -# ADD RSC /l 0x809 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "HTK - Win32 Release" -# Name "HTK - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# End Target -# End Project diff --git a/HTK/HTK.dsw b/HTK/HTK.dsw deleted file mode 100644 index 0fec66b..0000000 --- a/HTK/HTK.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "HTK"=".\HTK.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/HTK/HTK.ncb b/HTK/HTK.ncb deleted file mode 100644 index 4ec6703..0000000 Binary files a/HTK/HTK.ncb and /dev/null differ diff --git a/HTK/HTK.opt b/HTK/HTK.opt deleted file mode 100644 index 4939b99..0000000 Binary files a/HTK/HTK.opt and /dev/null differ diff --git a/HTKBook/ChangeLog b/HTKBook/ChangeLog deleted file mode 100644 index 828ecea..0000000 --- a/HTKBook/ChangeLog +++ /dev/null @@ -1,197 +0,0 @@ -2006-12-13 Anna Langley - - * updated Makefile for Latex2HTML and added latex2html-init - -2004-07-13 Gunnar Evermann - - * errors.tex: Add error codes for LLF processing. - -2004-04-19 B. Jia - - * HTKRef/HMMIRest.tex: document HMMIRest options -qp and -rp - - * HTKRef/HCompV.tex: document HCompV -p option - - * config.tex: document HParm CMEANPATHMASK and VARSCALEPATHMASK - -2004-04-16 Gunnar Evermann - - * config.tex: document HEREST:UPDATEMODE. - -2004-03-21 M. J. F. Gales - - * Initial documentation for new adaptation code. - -2004-03-08 Anna Langley - - * Makefile: Corrected options for latex2html to - fix problems with navigation links. - -2004-02-07 Gunnar Evermann - - * HTKRef/HDMan.tex: Document -j switch. - Reported by "Ying Lin" - -2003-12-17 Gunnar Evermann - - * errors.tex: Added new error code 3233 (Empty Transcription) - -2003-03-12 Dan Povey - - * HTKRef/HERest.tex: - * HTKRef/HMMIRest.tex: document VARFLOORPERCENTILE. - -2003-03-07 David Mrva - - * hlmtutorial.tex: - * HTKRef/LGCopy.tex: Correct minor inconsistencies. - -2003-02-14 Gunnar Evermann - - * HTKRef/HLRescore.tex: New file. - - * HTKRef/HHEd.tex: New command PS. - -2002-12-19 Gunnar Evermann - - * train.tex: Mention strctural constraints for 2-model - re-estimation model sets. - - * speechio.tex: Document _T qualifier. - - * models.tex: Document input linear transforms. - - * htkoview.tex (New in 3.2): Enumerate new features. - - * HTKRef/HLRescore.tex: New section. - -2002-12-18 Gunnar Evermann - - * errors.tex: Added error code docs for HLRescore and HLat. - -2002-11-15 Gunnar Evermann - - * htkbook.tex: Add Dan Povey to author list. - -2002-07-15 Thomas Hain - - * train.tex: Added section on two-model re-estimation - * HTKRef/HHEd.tex Added descriptions of commands FA, FV and MD. - * errors.tex: Added HHEd error code for CovKind mismatch. - * config.tex: Added config variables for HModel, HHEd and HEREst. - -2002-07-16 Gunnar Evermann - - * htkslf.tex: Update description and include new example lattice. - -2002-07-05 Gunnar Evermann - - * htkoview.tex: Document use of multiple config files. - -2002-06-30 Gunnar Evermann - - * HTKRef/HHEd.tex: Document FC command. - -2002-04-24 Gunnar Evermann - - * refine.tex: Correct RC command example. - -2002-02-19 Håkan Melin - - * speechio.tex: Correct sign in LP cepstrum calculation. - -2002-01-16 Gunnar Evermann - - * Makefile (html): Create dir for html version. - -2002-01-16 Gareth Moore - - * HTKRef/HResults.tex: Add FAQ entry for confusion matrix. - - * netdict.tex: Clarify dictionary format definition. - - * config.tex: Add documentation for all filters in HShell. - - * openviron.tex: Clarify. - - * HTKRef/HResults.tex: Document confusion matrix output. - -2001-12-13 Gunnar Evermann - - * htkoview.tex: New features in 3.1. - - * openviron.tex: Document extended filename syntax. - - * speechio.tex: Document VTLN, cluster-based CMN/CVN and PLP. - - * config.tex: - * errors.tex: New error codes and config variables for the above. - - * HTKXFigs/vtlnpiecewise.fig: - * HTKFigs/vtlnpiecewise.eps: New files. - -2001-09-26 Gunnar Evermann - - * exampsys.tex: Add comment about applying TI to sil/sp. - Save big MMFs as binary. - -2001-08-28 Gunnar Evermann - - * exampsys.tex: Lots of improvements and corrections. - From: Will Bradley and - Alexios Daniel - -2001-07-03 Gunnar Evermann - - * config.tex: Use a multi-page supertabular environment instead of - many small one-page tabulars. - -2001-04-17 Gunnar Evermann - - * errors.tex : Correct error messages and add new error codes. - New range 3400-3499 for HSGen. - - -2001-04-11 Gunnar Evermann - - * HTKRef/HVite.tex: Document pruning increase/limt parameters. - -2001-03-18 Gunnar Evermann - - * errors.tex (HParm): mean & var normalisation. - -2000-12-18 Gunnar Evermann - - * exampsys.tex (Step 13 - Generating the Transforms): add RN - command to regtree.hed - -2000-11-30 Gunnar Evermann - - * config.tex: Add HVITE:SAVEBINARY. - Make LaTeX source more readable. - -2000-11-15 Gunnar Evermann - - * exampsys.tex (Step 10): Fix HDMan invocation. - -2000-09-06 Rich Wareham - - * HTK.tex: Removed warnings when generating HTML - -2000-09-05 Gunnar Evermann - - * *.tex: Add AucTex master file magic. - - * HTKRef/*.tex: Add labels for subsections to avoid LaTeX warnings. - - * exampsys.tex: Remove reference V2.2. - - * htkbook.tex: Hack to allow generation of PDF and PS. - - * HTK.tex: Use relative path for figures. - Use epsfig instead of epsf.tex. - -2000-09-04 Gunnar Evermann - - * created ChangeLog. - diff --git a/HTKBook/ChangeLog.CUHTK b/HTKBook/ChangeLog.CUHTK deleted file mode 100644 index c840b0b..0000000 --- a/HTKBook/ChangeLog.CUHTK +++ /dev/null @@ -1,8 +0,0 @@ -2003-02-14 Dan Povey - - * HTKRef/HMMIRest.tex: Updates for MMI/MPE-MAP. - -2002-11-15 Gunnar Evermann - - * htkbook.tex: - * HTKRef/HMMIRest.tex: New section. diff --git a/HTKBook/HTK.tex b/HTKBook/HTK.tex deleted file mode 100644 index 212c589..0000000 --- a/HTKBook/HTK.tex +++ /dev/null @@ -1,373 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% General HTK macros - Julian Odell 23/04/97 -% (made plain version) Rich Wareham 19/07/00 -% - -% HTK Documentation Utilities - -\usepackage[dvips]{epsfig} -\usepackage{html} -\usepackage{color} -\usepackage{supertabular} - -%begin{latexonly} -\usepackage{calc} -\usepackage{ifthen} % Only include for tex -\newcommand{\iftex}[1]{ #1 } % Do tex -\newcommand{\ifhtml}[1]{ } % Dont do HTML -%end{latexonly} -\html{ - \newcommand{\iftex}[1]{ } % Dont do tex - \newcommand{\ifhtml}[1]{ #1 } % Do HTML - - % And set the page colour - \pagecolor{white} -} - -\newcommand{\ifoddpage}[3] { - \ifthenelse{\isodd{\pageref{f:#1}} } {#2} {#3} -} -\newcommand{\ifevenpage}[3] { - \ifthenelse{\isodd{\pageref{f:#1}} } {#3} {#2} -} - -\newcommand{\htmlparbox}[2] { - \ifhtml{ \parbox{#1} {#2} } -} - -\newcommand{\figDir}{HTKFigs/} - -% Global Constants and document settings - -%begin{latexonly} -\setlength{\oddsidemargin}{\oddsidemargin - 1cm} -\setlength{\textwidth}{\textwidth + 3cm} -\setlength{\topmargin}{\topmargin - 2cm} -\setlength{\textheight}{\textheight + 4cm} -%end{latexonly}\newlength{\pictextwidth} - - -% Basics - -%\href{key} - -% Hack to allow us to generate PDF and PS. -%begin{latexonly} - \providecommand{\href}[1]{\ref{#1}} - \renewcommand{\href}[1]{\ref{#1}} -%end{latexonly} - -% Only do thin if we are generating HTML -\html{ - \newcommand{\href}[1]{\ref{#}} -} - -%\hequation{equation}{eqlabel} -\newcommand{\hequation}[2]{ -\begin{equation} #1 \label{e:#2} -\end{equation} -} - -% Headings - -\newcounter{tabctr}[chapter] -\newcounter{figctr}[chapter] - -\def\thetabctr{\thechapter.\arabic{tabctr}} -\def\thefigctr{\thechapter.\arabic{figctr}} -\def\thesecctr{\thechapter.\arabic{section}} - -\newcommand{\mychaptitle}{} -\newcommand{\mysecttitle}{} - -\newcommand{\mychap}[2]{ - \newpage - \chapter{#1}\label{c:#2} - \iftex{ \renewcommand{\mychaptitle}{\bfseries \rmfamily #1} - \markboth{\mychaptitle}{\mysecttitle} } -} - -\newcommand{\mysect}[2]{ - \section{#1}\label{s:#2} - \iftex{ \renewcommand{\mysecttitle} - { \bfseries \rmfamily \thesecctr \hspace{0.5cm} #1} - \markboth{\mychaptitle}{\mysecttitle} } -} - -\newcommand{\mysubsect}[2]{ - \subsection{#1}\label{s:#2} -% \iftex{ \markboth{\mychaptitle}{\mysecttitle\ - #1} } % Too long -} - -% Formatting Macros - -\newcommand{\htool}[1]{\textsc{#1}} -\newcommand{\ttitem}[1]{\item[{\tt #1}]} -\newcommand{\fwitem}[2]{\item[{\makebox[#1][l]{\tt #2}}]} -\newcommand{\mathitem}[1]{\item[$ #1 $]} -\newcommand{\incop}{\mbox{$ \:+\!\!=\; $}} -\newcommand{\bm}[1]{{\mbox{\boldmath $#1$}}} -\newcommand{\transpose}{{\scriptstyle\sf T}} - -\newenvironment{optlist}{ - \begin{list}{??}{ - } -}{ - \end{list} -} - -\newenvironment{varlist}{ - \begin{list}{??}{ - } -}{ - \end{list} -} - -\newenvironment{program}{ - \ttfamily - \begin{tabbing} - +++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= ++ \= \kill -}{ - \end{tabbing} -} - -% Table captions are quite special - -%\tabcap{tabname}{caption} -\newcommand{\tabcap}[2]{ - \refstepcounter{tabctr} - \label{t:#1} - \mbox{ \rule{0cm}{0.6cm} - \textbf{ Table. \thetabctr\ \ #2} } -} - -% All the various figure macros - -%\dofig{picname}{width_in_mm}{caption}{capspace} -\newcommand{\dofig}[4]{ - - \begin{center}\parbox{#2mm} { \begin{center} - \setlength{\epsfxsize}{#2mm} - \epsfbox{\figDir/#1.eps} % DIRECTORY OPTION - \refstepcounter{figctr} - \begin{center} - \textbf{ Fig. \thefigctr\ \ #3} - \end{center} \label{f:#1} \end{center} } \end{center} - -} - -%\putfig{picname}{width_in_mm}{caption} -\newcommand{\putfig}[3]{ - \dofig{#1}{#2}{#3}{0} -} - -%\centrefig{picname}{width_in_mm}{caption} -\newcommand{\centrefig}[3]{ - \dofig{#1}{#2}{#3}{0} -} - -%\sidefig{picname}{width_in_mm}{caption}{capspace}{text} -\newcommand{\sidefig}[5]{ - \dofig{#1}{#2}{#3}{#4} - #5 -} - -%\sidepic{picname}{width_in_mm}{text} -\newcommand{\sidepic}[3]{ - - \begin{center}\parbox{#2mm} { \begin{center} - \setlength{\epsfxsize}{#2mm} - \epsfbox{\figDir/#1.eps} % DIRECTORY OPTION - \label{f:#1} \end{center} }\end{center} - - {#3} -} - -% Now programs - -%\doprog{picname}{width_in_mm}{caption}{program} -\newcommand{\doprog}[4]{ - - \begin{center} \parbox{#2mm} {\noindent - \fbox{ \parbox{#2mm}{ \hspace{#2mm} - \begin{program}#4\end{program} - } } - - \refstepcounter{figctr} - \label{f:#1} - - \begin{center} - \textbf{ Fig. \thefigctr\ \ #3} - \end{center} - } \end{center} - -} - -%\sideprog{progname}{width_in_mm}{caption}{prog}{text} -\newcommand{\sideprog}[5]{ - \doprog{#1}{#2}{#3}{#4} - #5 -} - -%\progbyprog{width_in_mm}{progname1}{progname2}{caption1}{caption2}{prog1}{prog2} -\newcommand{\progbyprog}[7]{ - \doprog{#2}{#1}{#4}{#6} - \doprog{#3}{#1}{#5}{#7} - \vspace{0.3cm} -} - - -%\putprog{progname}{width_in_mm}{caption}{prog} -\newcommand{\putprog}[4]{ - - \begin{center} \begin{figure} - \vspace{5mm} - \begin{center} - \framebox[#2mm]{ - \begin{minipage}{#2mm} - \begin{program}#4\end{program} - \end{minipage} } - - \refstepcounter{figctr} - \label{f:#1} - \vspace{0.4cm} - \mbox{ \textbf{ Fig. \thefigctr\ \ #3} } - \end{center} - \end{figure} \end{center} - -} - -% This section includes commands for each document covered -% -% Currently this is -% The HTKBook -% The HAPIBook -% The grapHvite book -% Inside HTK -% Inside grapHvite -% - -% HTKBook stuff - -\newcommand{\HTK}{HTK} -\newcommand{\version}{3.4} -\newcommand{\inthisversion}{In \HTK\ \version ,\ } -\newcommand{\HTKFF}{\HTK} -\newcommand{\HTKBook}{\textit{HTK Book}} -\newcommand{\ESPSwaves}{\textit{ESPS/waves+}} -\newcommand{\erno}[1]{\fwitem{2.0cm} {\ \ \ $#1$}} -\newcommand{\module}[1]{\item[#1]{\ ~}} -\newcommand{\refpart}{Reference Section} - -%\hmkw{hmmKeyword} -\newcommand{\hmkw}[1]{\mbox{$<$\textsf{#1}$>$}} - -%\hmmc{hmmMacro} -\newcommand{\hmmc}[2]{\mbox{$\sim$\textsf{#1 ``#2''}}} - -%\hmmt{hmmMacro} -\newcommand{\hmmt}[1]{\mbox{$\sim$\textsf{#1}}} - - -% HAPIBook stuff - -\newcommand{\HAPI}{{HAPI}} -\newcommand{\NULL}{{\tt NULL}} -\newcommand{\findex}[1]{\index{#1@{\bf #1}}} -\newcommand{\pindex}[1]{\index{configuration parameters!#1}} -\newcommand{\java}{{\sc Java}} -\newcommand{\jhapi}{{\sc Jhapi}} - -% Common grapHvite phrases - -\newcommand{\grapHvite}{\textbf{\textit {grapHvite}}} -\newcommand{\GNB}{\grapHvite\ Netbuilder} -\newcommand{\grapHviteOverview} {{\it \grapHvite\ Overview}} -\newcommand{\seeSec}[1]{see section {\bf \ref{s:#1}}} -\newcommand{\seeSub}[1]{see {section \bf \ref{s:#1}}} -\newcommand{\seeFig}[1]{see Fig {\bf \href{f:#1}}} -\newcommand{\fig} [1]{figure {\href{f:#1}}} -\newcommand{\seeApp}[1]{see Appendix {\bf \ref{c:#1}}} -\newcommand{\app}[1]{Appendix {\bf \ref{c:#1}}} -\newcommand{\sub}[1]{section {\bf \ref{s:#1}}} -\newcommand{\sect}[1]{section {\bf \ref{s:#1}}} - -% GrapHvite Specific Formats - -\newcommand{\facility}[1]{{\it #1}} -\newcommand{\key}[1]{{\sl #1}} -\newcommand{\ul}[1]{\underline{#1}} -\newcommand{\gTerm}[1]{{\bf #1}} -\newcommand{\network}[1]{{\it #1}} -\newcommand{\config}[1]{{\it #1}} -\newcommand{\bb}[1]{{\bf #1}} - -% Colourboxes need some highlighting for HTML - - \newcommand{\button}[1]{\colorbox[gray]{0.83}{{\small{\textsf{#1}}}}} - \newcommand{\menu}[1]{\colorbox[gray]{0.83}{{\small \textbf{#1}}}} - \newcommand{\menuItem}[1]{\colorbox[gray]{0.83}{{\small{ #1}}}} - \newcommand{\gLabel}[1]{{\colorbox[gray] {0.83} {\small{\textsf {#1}}}}} - -\newcommand{\moptitem}[1] { \optitem{\menuItem{#1}}} -\newenvironment{mylist}[1]{ - \begin{list}{}{ - \settowidth{\labelwidth} {#1} - \setlength{\leftmargin}{\labelwidth} - \addtolength{\leftmargin}{\labelsep} - \setlength{\parsep}{0.5ex plus0.2ex minus 0.2ex} - \setlength{\itemsep}{0.3ex} - \renewcommand{\makelabel}[1]{##1\hfill} -} } { - \end{list} -} - -\newenvironment{widelist}{ - \begin{list}{??}{ - \setlength{\itemindent}{0cm} - \setlength{\rightmargin}{0.5cm} - \setlength{\leftmargin}{2.5cm} - \setlength{\listparindent}{0cm} - \setlength{\labelwidth}{\textwidth} - \setlength{\labelsep}{0.5cm} } -}{ - \end{list} -} - -\newcommand{\doMenu}[1]{ - \setlength{\epsfysize} {5cm} - \raisebox{-5cm} - {\epsfbox{#1menu.eps}} % DIRECTORY OPTION -} - -\newcommand{\mysubsub}[2]{ - \subsubsection{#1}\label{s:#2} -} - -% HLM Book - language modelling tools - -\newcommand{\HLM}{HLM} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/HTKFigs/Blocking.eps b/HTKBook/HTKFigs/Blocking.eps deleted file mode 100644 index 7288a58..0000000 --- a/HTKBook/HTKFigs/Blocking.eps +++ /dev/null @@ -1,2388 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Blocking.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/11/94 3:57:00 p.m. -%%BoundingBox: 2.000 445.000 276.462 791.500 -%%QDBoundingBox: 2.000 0.500 276.462 347.000 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.010 5.320 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.428 41.892 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 41.714 84.182 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.010 140.463 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.428 177.035 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 41.714 219.325 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 6.000 113.000 6.000 104.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 114.000 113.000 6.000 113.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 114.000 104.000 114.000 113.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 74.000 131.000 74.000 122.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 182.000 131.000 74.000 131.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 182.000 122.000 182.000 131.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -75.000 85.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -6.000 85.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 8.000 84.999 73.000 85.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 66.000 2.000 0.000 0.000 16.000 89.500 rect -%@EndRect -gsave -46.750 74.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -44.500 4.000 S -(r) -36.713 4.000 S -(a) -32.051 4.000 S -(m) -25.837 4.000 S -(e) -14.948 4.000 S -( ) -8.734 4.000 S -(P) -5.234 4.000 S -(e) 2.551 4.000 S -(r) 8.765 4.000 S -(i) 13.427 4.000 S -(o) 17.317 4.000 S -(d) 24.317 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -5.500 19.500 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -113.500 19.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 111.500 19.500 7.500 19.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 8.500 0.000 0.000 16.000 111.000 rect -%@EndRect -gsave -64.000 8.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -55.000 4.000 S -(i) -41.786 4.000 S -(n) -37.896 4.000 S -(d) -30.896 4.000 S -(o) -23.896 4.000 S -(w) -16.896 4.000 S -( ) -6.786 4.000 S -(D) -3.286 4.000 S -(u) 6.824 4.000 S -(r) 13.824 4.000 S -(a) 18.486 4.000 S -(t) 24.700 4.000 S -(i) 28.589 4.000 S -(o) 32.479 4.000 S -(n) 39.479 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.000 42.000 0.000 0.000 31.000 34.000 rect -%@EndRect -gsave -59.000 175.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.051 -4.000 S -(l) -8.051 -4.000 S -(o) -4.162 -4.000 S -(c) 2.837 -4.000 S -(k) 9.051 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.000 109.500 0.000 0.000 31.000 34.000 rect -%@EndRect -gsave -126.500 175.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.551 -4.000 S -(l) -8.551 -4.000 S -(o) -4.662 -4.000 S -(c) 2.337 -4.000 S -(k) 8.551 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -10.947 11.000 S -(+) -3.947 11.000 S -(1) 3.947 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 60.000 158.000 60.000 113.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -60.000 221.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 59.999 219.000 60.000 194.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -127.500 221.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 127.499 219.000 127.500 194.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 127.000 159.000 127.000 132.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 154.500 163.000 0.000 0.000 24.000 25.000 rect -%@EndRect -gsave -175.500 166.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -12.500 7.000 S -(.) -6.500 7.000 S -(.) -0.500 7.000 S -(.) 5.500 7.000 S -( ) 11.500 7.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 200.500 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -209.500 168.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -9.000 5.000 S -(t) -2.786 5.000 S -(c) 1.103 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 230.000 46.500 0.000 0.000 72.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 239.000 46.500 239.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 248.000 46.500 248.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 257.000 46.500 257.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 266.000 46.500 266.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 275.000 46.500 275.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 284.000 46.500 284.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.750 293.000 46.500 293.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 230.000 114.000 0.000 0.000 72.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 239.000 114.000 239.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 248.000 114.000 248.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 257.000 114.000 257.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 266.000 114.000 266.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 275.000 114.000 275.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 284.000 114.000 284.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.000 293.000 114.000 293.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.000 141.000 0.000 0.000 54.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 248.000 141.000 0.000 0.000 54.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 158.250 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 248.000 158.250 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 237.500 166.000 0.000 0.000 46.000 58.000 rect -%@EndRect -gsave -195.000 260.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -27.872 -11.000 S -(a) -20.086 -11.000 S -(r) -13.872 -11.000 S -(a) -9.210 -11.000 S -(m) -2.996 -11.000 S -(e) 7.893 -11.000 S -(t) 14.106 -11.000 S -(e) 17.996 -11.000 S -(r) 24.210 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -18.544 4.000 S -(e) -8.434 4.000 S -(c) -2.220 4.000 S -(t) 3.993 4.000 S -(o) 7.882 4.000 S -(r) 14.882 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -11.551 19.000 S -(i) -3.765 19.000 S -(z) 0.124 19.000 S -(e) 6.337 19.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 299.000 24.000 0.000 0.000 24.000 120.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 323.000 54.000 0.000 0.000 12.000 60.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 299.000 84.000 0.000 0.000 24.000 120.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 323.000 114.000 0.000 0.000 12.000 60.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 331.500 39.500 0.000 0.000 15.000 149.000 rect -%@EndRect -gsave -114.000 339.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -73.170 5.000 S -(p) -65.384 5.000 S -(e) -58.384 5.000 S -(e) -52.170 5.000 S -(c) -45.957 5.000 S -(h) -39.743 5.000 S -( ) -32.743 5.000 S -(V) -29.243 5.000 S -(e) -19.132 5.000 S -(c) -12.918 5.000 S -(t) -6.705 5.000 S -(o) -2.815 5.000 S -(r) 4.184 5.000 S -(s) 8.846 5.000 S -( ) 14.294 5.000 S -(o) 17.794 5.000 S -(r) 24.794 5.000 S -( ) 29.457 5.000 S -(F) 32.957 5.000 S -(r) 40.743 5.000 S -(a) 45.405 5.000 S -(m) 51.619 5.000 S -(e) 62.508 5.000 S -(s) 68.722 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 20.750 20.750 0.000 0.000 17.000 72.011 rect -%@EndRect -gsave -56.755 29.250 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -35.750 5.000 S -(I) -28.548 5.000 S -(N) -21.347 5.000 S -(D) -14.146 5.000 S -(O) -6.945 5.000 S -(W) 0.255 5.000 S -(S) 7.457 5.000 S -(I) 14.658 5.000 S -(Z) 21.859 5.000 S -(E) 29.060 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.250 4.750 0.000 0.000 17.000 72.011 rect -%@EndRect -gsave -40.755 96.750 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -35.750 4.000 S -(A) -28.548 4.000 S -(R) -21.347 4.000 S -(G) -14.146 4.000 S -(E) -6.945 4.000 S -(T) 0.255 4.000 S -(R) 7.457 4.000 S -(A) 14.658 4.000 S -(T) 21.859 4.000 S -(E) 29.060 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 21.750 163.250 0.000 0.000 17.000 72.011 rect -%@EndRect -gsave -199.255 30.250 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -35.250 5.000 S -(O) -28.048 5.000 S -(U) -20.847 5.000 S -(R) -13.646 5.000 S -(C) -6.445 5.000 S -(E) 0.755 5.000 S -(R) 7.957 5.000 S -(A) 15.158 5.000 S -(T) 22.359 5.000 S -(E) 29.560 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/ClassLM.eps b/HTKBook/HTKFigs/ClassLM.eps deleted file mode 100644 index 827704a..0000000 --- a/HTKBook/HTKFigs/ClassLM.eps +++ /dev/null @@ -1,3584 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (ClassLM2.eps) -%%CreationDate: 2/27/2002 3:16 PM -%%BoundingBox: 111 230 481 608 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentNeededFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -%%IncludeFont: Helvetica-Bold -%%IncludeFont: Helvetica-Oblique -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold -[/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Oblique Helvetica-Oblique -[/_Helvetica-Oblique/Helvetica-Oblique 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 256.7642 607.4453 m -254.2446 607.4453 252.3247 605.5254 252.3247 603.0059 c -252.3247 576.7275 l -252.3247 574.3281 254.2446 572.4082 256.7642 572.4082 c -335.5977 572.4082 l -337.998 572.4082 339.917 574.3281 339.917 576.7275 c -339.917 603.0059 l -339.917 605.5254 337.998 607.4453 335.5977 607.4453 c -256.7642 607.4453 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 256.7642 607.4453 m -254.2446 607.4453 252.3247 605.5254 252.3247 603.0059 c -252.3247 576.7275 l -252.3247 574.3281 254.2446 572.4082 256.7642 572.4082 c -335.5977 572.4082 l -337.998 572.4082 339.917 574.3281 339.917 576.7275 c -339.917 603.0059 l -339.917 605.5254 337.998 607.4453 335.5977 607.4453 c -256.7642 607.4453 l -s 0 To -1 0 0 1 285.082 585.4873 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(Text) Tx -(\r) Tx -TO -0 0 0 0 k -374.9541 546.1309 m -462.5469 546.1309 l -462.5469 511.0938 l -374.9541 511.0938 l -374.9541 546.1309 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 374.9541 546.1309 m -374.9541 511.0938 l -462.5469 511.0938 l -462.5469 546.1309 l -374.9541 546.1309 l -s 0 To -1 0 0 1 391.873 524.8926 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --3 Tt --0.035 Tc -(LNew) Tx -(\r) Tx -TO -0 To -1 0 0 1 422.9502 524.8926 0 Tp -TP -0 Tr -20 Tt -0.2336 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 439.3887 524.8926 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -252.3247 546.1309 m -339.917 546.1309 l -339.917 511.0938 l -252.3247 511.0938 l -252.3247 546.1309 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 252.3247 546.1309 m -252.3247 511.0938 l -339.917 511.0938 l -339.917 546.1309 l -252.3247 546.1309 l -s 0 To -1 0 0 1 275.4829 524.8926 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M 5 Tt -0.0584 Tc -(LG) Tx -(\r) Tx -TO -0 To -1 0 0 1 291.5615 524.8926 0 Tp -TP -0 Tr -11 Tt -0.1285 Tc -(Pr) Tx -(\r) Tx -TO -0 To -1 0 0 1 304.04 524.8926 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ep) Tx -(\r) Tx -TO -0 0 0 0 k -256.7642 484.8154 m -254.2446 484.8154 252.3247 482.8955 252.3247 480.376 c -252.3247 454.2178 l -252.3247 451.8184 254.2446 449.7783 256.7642 449.7783 c -335.5977 449.7783 l -337.998 449.7783 339.917 451.8184 339.917 454.2178 c -339.917 480.376 l -339.917 482.8955 337.998 484.8154 335.5977 484.8154 c -256.7642 484.8154 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 256.7642 484.8154 m -254.2446 484.8154 252.3247 482.8955 252.3247 480.376 c -252.3247 454.2178 l -252.3247 451.8184 254.2446 449.7783 256.7642 449.7783 c -335.5977 449.7783 l -337.998 449.7783 339.917 451.8184 339.917 454.2178 c -339.917 480.376 l -339.917 482.8955 337.998 484.8154 335.5977 484.8154 c -256.7642 484.8154 l -s 0 To -1 0 0 1 269.7231 462.8574 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 282.8022 462.8574 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 302.2402 462.8574 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(file) Tx -(\r) Tx -TO -0 To -1 0 0 1 317.2393 462.8574 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -379.3945 484.8154 m -376.874 484.8154 374.9541 482.8955 374.9541 480.376 c -374.9541 454.2178 l -374.9541 451.8184 376.874 449.7783 379.3945 449.7783 c -458.2275 449.7783 l -460.627 449.7783 462.5469 451.8184 462.5469 454.2178 c -462.5469 480.376 l -462.5469 482.8955 460.627 484.8154 458.2275 484.8154 c -379.3945 484.8154 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 379.3945 484.8154 m -376.874 484.8154 374.9541 482.8955 374.9541 480.376 c -374.9541 454.2178 l -374.9541 451.8184 376.874 449.7783 379.3945 449.7783 c -458.2275 449.7783 l -460.627 449.7783 462.5469 451.8184 462.5469 454.2178 c -462.5469 480.376 l -462.5469 482.8955 460.627 484.8154 458.2275 484.8154 c -379.3945 484.8154 l -s 0 To -1 0 0 1 392.2334 462.8574 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M 32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 409.8721 462.8574 0 Tp -TP -0 Tr -6 Tt -0.0701 Tc -(rd) Tx -(\r) Tx -TO -0 To -1 0 0 1 423.3105 462.8574 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 439.6289 462.8574 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -252.3247 423.501 m -339.917 423.501 l -339.917 388.4639 l -252.3247 388.4639 l -252.3247 423.501 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 252.3247 423.501 m -252.3247 388.4639 l -339.917 388.4639 l -339.917 423.501 l -252.3247 423.501 l -s 0 To -1 0 0 1 273.9229 402.2627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --4 Tt --0.0467 Tc -(LGCo) Tx -(\r) Tx -TO -0 To -1 0 0 1 305.4805 402.2627 0 Tp -TP -0 Tr -26 Tt -0.3037 Tc -(py) Tx -(\r) Tx -TO -0 0 0 0 k -374.9541 423.501 m -462.5469 423.501 l -462.5469 388.4639 l -374.9541 388.4639 l -374.9541 423.501 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 374.9541 423.501 m -374.9541 388.4639 l -462.5469 388.4639 l -462.5469 423.501 l -374.9541 423.501 l -s 0 To -1 0 0 1 400.9922 402.2627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M -5 Tt --0.0584 Tc -(LBui) Tx -(\r) Tx -TO -0 To -1 0 0 1 426.9102 402.2627 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ld) Tx -(\r) Tx -TO -0 0 0 0 k -381.5537 362.1855 m -377.9541 362.1855 374.9541 359.1865 374.9541 355.5869 c -374.9541 316.2295 l -374.9541 312.5098 377.9541 309.6299 381.5537 309.6299 c -455.9482 309.6299 l -459.667 309.6299 462.5469 312.5098 462.5469 316.2295 c -462.5469 355.5869 l -462.5469 359.1865 459.667 362.1855 455.9482 362.1855 c -381.5537 362.1855 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 381.5537 362.1855 m -377.9541 362.1855 374.9541 359.1865 374.9541 355.5869 c -374.9541 316.2295 l -374.9541 312.5098 377.9541 309.6299 381.5537 309.6299 c -455.9482 309.6299 l -459.667 309.6299 462.5469 312.5098 462.5469 316.2295 c -462.5469 355.5869 l -462.5469 359.1865 459.667 362.1855 455.9482 362.1855 c -381.5537 362.1855 l -s 0 To -1 0 0 1 389.2334 339.5078 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --3 Tt --0.035 Tc -(Cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 400.3926 339.5078 0 Tp -TP -0 Tr -0 Tt -0 Tc -(a) Tx -(\r) Tx -TO -0 To -1 0 0 1 406.752 339.5078 0 Tp -TP -0 Tr -(ss-cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 430.8701 339.5078 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(as) Tx -(\r) Tx -TO -0 To -1 0 0 1 443.1084 339.5078 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 To -1 0 0 1 390.3135 326.1885 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(co) Tx -(\r) Tx -TO -0 To -1 0 0 1 402.5518 326.1885 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(mp) Tx -(\r) Tx -TO -0 To -1 0 0 1 418.751 326.1885 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(onent) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -296.481 572.4082 m -296.481 551.0498 l -296.481 550.8105 296.3608 550.5703 296.1211 550.5703 c -295.8809 550.5703 295.7612 550.8105 295.7612 550.9297 c -295.7612 572.4082 l -295.7612 572.6484 295.8809 572.7686 296.1211 572.7686 c -296.2412 572.7686 296.481 572.6484 296.481 572.4082 c -296.481 572.4082 l -f 301.041 552.0098 m -296.1211 546.1309 l -291.2017 552.0098 l -301.041 552.0098 l -f *U -*u -296.481 511.0938 m -296.481 489.6152 l -296.481 489.4951 296.3608 489.2549 296.1211 489.2549 c -296.001 489.2549 295.7612 489.4951 295.7612 489.6152 c -295.7612 511.0938 l -295.7612 511.333 295.8809 511.4531 296.1211 511.4531 c -296.3608 511.4531 296.481 511.333 296.481 511.0938 c -296.481 511.0938 l -f 301.041 490.6953 m -296.2412 484.8154 l -291.3213 490.6953 l -301.041 490.6953 l -f *U -*u -419.1104 511.0938 m -419.2305 489.6152 l -419.2305 489.4951 418.9912 489.2549 418.8711 489.2549 c -418.6309 489.2549 418.3906 489.4951 418.3906 489.6152 c -418.3906 511.0938 l -418.3906 511.333 418.5107 511.4531 418.751 511.4531 c -418.9912 511.4531 419.1104 511.333 419.1104 511.0938 c -419.1104 511.0938 l -f 423.6709 490.6953 m -418.8711 484.8154 l -413.9512 490.6953 l -423.6709 490.6953 l -f *U -*u -419.1104 449.7783 m -419.2305 428.3008 l -419.2305 428.1807 418.9912 427.9404 418.8711 427.9404 c -418.6309 427.9404 418.3906 428.1807 418.3906 428.3008 c -418.3906 449.7783 l -418.3906 450.0186 418.5107 450.1387 418.751 450.1387 c -418.9912 450.1387 419.1104 450.0186 419.1104 449.7783 c -419.1104 449.7783 l -f 423.6709 429.3799 m -418.8711 423.501 l -413.9512 429.2607 l -423.6709 429.3799 l -f *U -*u -340.2773 467.417 m -372.915 410.4219 l -373.0342 410.1816 372.915 409.9424 372.7949 409.8223 c -372.5547 409.8223 372.3145 409.8223 372.1943 410.0615 c -339.6777 467.0566 l -339.5576 467.2969 339.5576 467.5371 339.7979 467.6572 c -339.917 467.6572 340.1572 467.6572 340.2773 467.417 c -340.2773 467.417 l -f 376.2744 413.4219 m -374.9541 405.9824 l -367.875 408.6221 l -376.2744 413.4219 l -f *U -*u -296.481 444.9785 m -296.481 428.3008 l -296.481 428.1807 296.3608 427.9404 296.1211 427.9404 c -296.001 427.9404 295.7612 428.1807 295.7612 428.3008 c -295.7612 444.9785 l -295.7612 445.0986 296.001 445.3389 296.1211 445.3389 c -296.3608 445.3389 296.481 445.0986 296.481 444.9785 c -296.481 444.9785 l -f 291.3213 444.0195 m -296.1211 449.7783 l -301.041 444.0195 l -291.3213 444.0195 l -f 301.041 429.3799 m -296.2412 423.501 l -291.3213 429.2607 l -301.041 429.3799 l -f *U -*u -419.1104 383.5439 m -419.2305 366.9854 l -419.2305 366.8652 418.9912 366.626 418.8711 366.626 c -418.6309 366.626 418.3906 366.8652 418.3906 366.9854 c -418.3906 383.5439 l -418.3906 383.7842 418.6309 383.9043 418.751 383.9043 c -418.9912 383.9043 419.1104 383.7842 419.1104 383.5439 c -419.1104 383.5439 l -f 413.9512 382.584 m -418.751 388.4639 l -423.6709 382.584 l -413.9512 382.584 l -f 423.6709 368.0654 m -418.8711 362.1855 l -413.9512 367.9453 l -423.6709 368.0654 l -f *U -*u -342.0771 410.4219 m -372.1943 463.2178 l -372.3145 463.457 372.5547 463.457 372.7949 463.3379 c -372.915 463.2178 373.0342 463.0977 372.915 462.8574 c -342.6768 410.0615 l -342.5576 409.8223 342.3174 409.8223 342.1973 409.8223 c -341.957 409.9424 341.957 410.1816 342.0771 410.4219 c -342.0771 410.4219 l -f 347.1172 408.6221 m -339.917 405.9824 l -338.5977 413.4219 l -347.1172 408.6221 l -f 367.875 464.6572 m -374.9541 467.2969 l -376.2744 459.8574 l -367.875 464.6572 l -f *U -*u -342.6768 524.5322 m -372.915 471.7363 l -373.0342 471.4971 372.915 471.2568 372.7949 471.1367 c -372.5547 471.1367 372.3145 471.1367 372.1943 471.377 c -342.0771 524.1729 l -341.957 524.4121 341.957 524.6523 342.1973 524.6523 c -342.3174 524.7725 342.5576 524.7725 342.6768 524.5322 c -342.6768 524.5322 l -f 338.5977 521.1729 m -339.917 528.6123 l -347.1172 525.9727 l -338.5977 521.1729 l -f 376.2744 474.7363 m -374.9541 467.2969 l -367.875 469.9365 l -376.2744 474.7363 l -f *U -0 0 0 0 k -129.6948 484.8154 m -217.2876 484.8154 l -217.2876 449.7783 l -129.6948 449.7783 l -129.6948 484.8154 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 129.6948 484.8154 m -129.6948 449.7783 l -217.2876 449.7783 l -217.2876 484.8154 l -129.6948 484.8154 l -s 0 To -1 0 0 1 153.813 463.5771 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf -3 Tt -0.035 Tc -(Cluste) Tx -(\r) Tx -TO -0 To -1 0 0 1 189.4502 463.5771 0 Tp -TP -0 Tr -0 Tt -0 Tc -(r) Tx -(\r) Tx -TO -0 0 0 0 k -134.1348 423.501 m -131.6147 423.501 129.6948 421.5811 129.6948 419.0615 c -129.6948 392.7832 l -129.6948 390.3838 131.6147 388.4639 134.1348 388.4639 c -212.9678 388.4639 l -215.3677 388.4639 217.2876 390.3838 217.2876 392.7832 c -217.2876 419.0615 l -217.2876 421.5811 215.3677 423.501 212.9678 423.501 c -134.1348 423.501 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 134.1348 423.501 m -131.6147 423.501 129.6948 421.5811 129.6948 419.0615 c -129.6948 392.7832 l -129.6948 390.3838 131.6147 388.4639 134.1348 388.4639 c -212.9678 388.4639 l -215.3677 388.4639 217.2876 390.3838 217.2876 392.7832 c -217.2876 419.0615 l -217.2876 421.5811 215.3677 423.501 212.9678 423.501 c -134.1348 423.501 l -s 0 To -1 0 0 1 146.2534 401.543 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --2 Tt --0.0234 Tc -(Clas) Tx -(\r) Tx -TO -0 To -1 0 0 1 169.5317 401.543 0 Tp -TP -0 Tr -281 Tt -3.2818 Tc -(sm) Tx -(\r) Tx -TO -0 To -1 0 0 1 188.4902 401.543 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ap) Tx -(\r) Tx -TO -0 0 0 0 k -136.2944 362.1855 m -132.6948 362.1855 129.6948 359.1865 129.6948 355.5869 c -129.6948 316.2295 l -129.6948 312.5098 132.6948 309.6299 136.2944 309.6299 c -210.688 309.6299 l -214.4077 309.6299 217.2876 312.5098 217.2876 316.2295 c -217.2876 355.5869 l -217.2876 359.1865 214.4077 362.1855 210.688 362.1855 c -136.2944 362.1855 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 136.2944 362.1855 m -132.6948 362.1855 129.6948 359.1865 129.6948 355.5869 c -129.6948 316.2295 l -129.6948 312.5098 132.6948 309.6299 136.2944 309.6299 c -210.688 309.6299 l -214.4077 309.6299 217.2876 312.5098 217.2876 316.2295 c -217.2876 355.5869 l -217.2876 359.1865 214.4077 362.1855 210.688 362.1855 c -136.2944 362.1855 l -s 0 To -1 0 0 1 144.6938 339.5078 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M 32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 162.4521 339.5078 0 Tp -TP -0 Tr --4 Tt --0.0467 Tc -(rd-c) Tx -(\r) Tx -TO -0 To -1 0 0 1 182.2505 339.5078 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(la) Tx -(\r) Tx -TO -0 To -1 0 0 1 191.3696 339.5078 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(ss) Tx -(\r) Tx -TO -0 To -1 0 0 1 145.0537 326.0693 0 Tp -TP -0 Tr -(co) Tx -(\r) Tx -TO -0 To -1 0 0 1 157.2925 326.0693 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(mp) Tx -(\r) Tx -TO -0 To -1 0 0 1 173.4912 326.0693 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(onent) Tx -(\r) Tx -TO -0 0 0 0 k -252.3247 353.4268 m -339.917 353.4268 l -339.917 318.3896 l -252.3247 318.3896 l -252.3247 353.4268 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 252.3247 353.4268 m -252.3247 318.3896 l -339.917 318.3896 l -339.917 353.4268 l -252.3247 353.4268 l -s 0 To -1 0 0 1 281.0024 332.1885 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --3 Tt --0.035 Tc -(LLin) Tx -(\r) Tx -TO -0 To -1 0 0 1 305.6006 332.1885 0 Tp -TP -0 Tr -0 Tt -0 Tc -(k) Tx -(\r) Tx -TO -0 0 0 0 k -258.9243 283.2324 m -255.3242 283.2324 252.3247 280.3525 252.3247 276.7529 c -252.3247 237.2764 l -252.3247 233.6768 255.3242 230.7969 258.9243 230.7969 c -333.3184 230.7969 l -337.0381 230.7969 339.917 233.6768 339.917 237.2764 c -339.917 276.7529 l -339.917 280.3525 337.0381 283.2324 333.3184 283.2324 c -258.9243 283.2324 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 258.9243 283.2324 m -255.3242 283.2324 252.3247 280.3525 252.3247 276.7529 c -252.3247 237.2764 l -252.3247 233.6768 255.3242 230.7969 258.9243 230.7969 c -333.3184 230.7969 l -337.0381 230.7969 339.917 233.6768 339.917 237.2764 c -339.917 276.7529 l -339.917 280.3525 337.0381 283.2324 333.3184 283.2324 c -258.9243 283.2324 l -s 0 To -1 0 0 1 261.8037 260.6738 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --3 Tt --0.035 Tc -(Cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 272.9629 260.6738 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(as) Tx -(\r) Tx -TO -0 To -1 0 0 1 285.2021 260.6738 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 To -1 0 0 1 294.3213 260.6738 0 Tp -TP -0 Tr -/_Helvetica-Oblique 11.6789 Tf -(n) Tx -(\r) Tx -TO -0 To -1 0 0 1 300.6807 260.6738 0 Tp -TP -0 Tr -/_Helvetica 11.6789 Tf -(-) Tx -(\r) Tx -TO -q 304.6406 271.1133 m -333.6777 271.1133 l -333.6777 258.1543 l -304.6406 258.1543 l -H W N 0 To -1 0 0 1 304.6406 260.6738 0 Tp -TP -0 Tr -0 O -0 0 0 1 k --1 Tt --0.0117 Tc -(gram) Tx -(\r) Tx -TO -Q 0 A -0 To -1 0 0 1 288.4419 247.2354 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M []0 d /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(LM) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -173.8511 444.8594 m -173.8511 428.3008 l -173.8511 428.1807 173.7314 427.9404 173.4912 427.9404 c -173.3711 427.9404 173.1313 428.1807 173.1313 428.3008 c -173.1313 444.8594 l -173.1313 445.0986 173.2515 445.2188 173.4912 445.2188 c -173.7314 445.2188 173.8511 445.0986 173.8511 444.8594 c -173.8511 444.8594 l -f 168.6919 443.8994 m -173.4912 449.7783 l -178.4111 443.8994 l -168.6919 443.8994 l -f 178.4111 429.3799 m -173.4912 423.501 l -168.6919 429.2607 l -178.4111 429.3799 l -f *U -*u -252.3247 466.9375 m -222.207 466.8174 l -221.9673 466.8174 221.8472 467.0566 221.8472 467.1768 c -221.8472 467.417 221.9673 467.5371 222.207 467.5371 c -252.3247 467.6572 l -252.5645 467.6572 252.6846 467.5371 252.6846 467.2969 c -252.6846 467.0566 252.5645 466.9375 252.3247 466.9375 c -252.3247 466.9375 l -f 223.167 462.3779 m -217.2876 467.1768 l -223.167 472.0967 l -223.167 462.3779 l -f *U -*u -129.6948 466.9375 m -112.1763 466.9375 l -112.5361 467.2969 l -112.5361 335.9082 l -112.1763 336.2676 l -124.8955 336.2676 l -125.1353 336.2676 125.2554 336.1484 125.2554 335.9082 c -125.2554 335.668 125.1353 335.5479 124.8955 335.5479 c -112.1763 335.5479 l -111.9365 335.5479 111.8164 335.668 111.8164 335.9082 c -111.8164 467.2969 l -111.8164 467.5371 111.9365 467.6572 112.1763 467.6572 c -129.6948 467.6572 l -129.9351 467.6572 130.0547 467.5371 130.0547 467.2969 c -130.0547 467.0566 129.9351 466.9375 129.6948 466.9375 c -129.6948 466.9375 l -f 123.9355 340.708 m -129.6948 335.9082 l -123.9355 330.9883 l -123.9355 340.708 l -f *U -*u -217.2876 336.2676 m -247.5249 336.2676 l -247.645 336.2676 247.8853 336.0283 247.8853 335.7881 c -247.8853 335.668 247.645 335.4277 247.5249 335.4277 c -217.2876 335.5479 l -217.0479 335.5479 216.9277 335.668 216.9277 335.9082 c -216.9277 336.1484 217.0479 336.2676 217.2876 336.2676 c -217.2876 336.2676 l -f 246.4453 340.708 m -252.3247 335.7881 l -246.4453 330.9883 l -246.4453 340.708 l -f *U -*u -374.9541 335.5479 m -344.8369 335.4277 l -344.5967 335.4277 344.4775 335.668 344.4775 335.7881 c -344.4775 336.0283 344.5967 336.2676 344.8369 336.2676 c -374.9541 336.2676 l -375.1943 336.2676 375.3145 336.1484 375.3145 335.9082 c -375.3145 335.668 375.1943 335.5479 374.9541 335.5479 c -374.9541 335.5479 l -f 345.7969 330.9883 m -339.917 335.7881 l -345.7969 340.708 l -345.7969 330.9883 l -f *U -*u -296.481 318.3896 m -296.6011 288.1514 l -296.6011 287.9121 296.3608 287.792 296.1211 287.792 c -296.001 287.792 295.7612 287.9121 295.7612 288.1514 c -295.7612 318.3896 l -295.7612 318.6289 295.8809 318.749 296.1211 318.749 c -296.3608 318.749 296.481 318.6289 296.481 318.3896 c -296.481 318.3896 l -f 301.041 289.1113 m -296.2412 283.2324 l -291.3213 289.1113 l -301.041 289.1113 l -f *U -*u -462.5469 467.6572 m -480.0654 467.6572 l -479.7061 467.2969 l -479.7061 502.334 l -480.0654 501.9746 l -173.4912 501.9746 l -173.8511 502.334 l -173.8511 489.6152 l -173.8511 489.4951 173.7314 489.2549 173.4912 489.2549 c -173.2515 489.2549 173.1313 489.4951 173.1313 489.6152 c -173.1313 502.334 l -173.1313 502.5742 173.2515 502.6943 173.4912 502.6943 c -480.0654 502.6943 l -480.3057 502.6943 480.4258 502.5742 480.4258 502.334 c -480.4258 467.2969 l -480.4258 467.0566 480.3057 466.9375 480.0654 466.9375 c -462.5469 466.9375 l -462.4268 466.9375 462.1875 467.0566 462.1875 467.2969 c -462.1875 467.5371 462.4268 467.6572 462.5469 467.6572 c -462.5469 467.6572 l -f 178.4111 490.6953 m -173.4912 484.8154 l -168.6919 490.6953 l -178.4111 490.6953 l -f *U -*u -217.2876 406.3418 m -247.5249 406.2227 l -247.645 406.2227 247.8853 406.1025 247.8853 405.8623 c -247.8853 405.6221 247.645 405.502 247.5249 405.502 c -217.2876 405.6221 l -217.0479 405.6221 216.9277 405.7422 216.9277 405.9824 c -216.9277 406.2227 217.0479 406.3418 217.2876 406.3418 c -217.2876 406.3418 l -f 246.5654 410.7822 m -252.3247 405.8623 l -246.4453 401.0625 l -246.5654 410.7822 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/Config.eps b/HTKBook/HTKFigs/Config.eps deleted file mode 100644 index 9d49d41..0000000 --- a/HTKBook/HTKFigs/Config.eps +++ /dev/null @@ -1,1843 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Config.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/14/94 6:08:14 p.m. -%%BoundingBox: 17.500 625.500 222.986 773.500 -%%QDBoundingBox: 17.500 18.500 222.986 166.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 72.000 18.000 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 108.000 18.000 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.500 173.500 0.000 0.000 27.000 49.486 rect -%@EndRect -gsave -198.243 153.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -24.000 -3.000 S -(u) -15.996 -3.000 S -(i) -9.996 -3.000 S -(l) -6.662 -3.000 S -(t) -3.328 -3.000 S -(-) 0.005 -3.000 S -(i) 4.001 -3.000 S -(n) 7.335 -3.000 S -( ) 13.335 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -24.000 10.000 S -(e) -15.333 10.000 S -(f) -10.007 10.000 S -(a) -6.011 10.000 S -(u) -0.685 10.000 S -(l) 5.314 10.000 S -(t) 8.648 10.000 S -(s) 11.982 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 18.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 27.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 36.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 45.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 54.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 63.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 72.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 81.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 90.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 99.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 108.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 117.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 126.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 135.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 144.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 153.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 18.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 54.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 63.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 72.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 81.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 99.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 117.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 126.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 153.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 27.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 54.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 63.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 117.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 135.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 153.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -90.000 63.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 89.999 59.000 90.000 36.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 173.500 0.000 0.000 27.000 33.333 rect -%@EndRect -gsave -190.166 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -16.000 -3.000 S -(o) -7.996 -3.000 S -(n) -1.996 -3.000 S -(f) 4.003 -3.000 S -(i) 8.000 -3.000 S -(g) 11.333 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -16.000 10.000 S -(i) -9.326 10.000 S -(l) -5.992 10.000 S -(e) -2.658 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.500 173.500 0.000 0.000 27.000 40.652 rect -%@EndRect -gsave -193.826 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -20.000 -3.000 S -(s) -11.333 -3.000 S -(e) -6.664 -3.000 S -(r) -1.337 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -20.000 10.000 S -(e) -11.333 10.000 S -(f) -6.007 10.000 S -(a) -2.011 10.000 S -(u) 3.314 10.000 S -(l) 9.314 10.000 S -(t) 12.648 10.000 S -(s) 15.982 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.500 27.500 0.000 0.000 14.000 123.632 rect -%@EndRect -gsave -89.316 25.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -61.000 3.000 S -(o) -52.996 3.000 S -(n) -46.996 3.000 S -(f) -40.996 3.000 S -(i) -37.000 3.000 S -(g) -33.666 3.000 S -(u) -27.666 3.000 S -(r) -21.666 3.000 S -(a) -17.669 3.000 S -(t) -12.343 3.000 S -(i) -9.009 3.000 S -(o) -5.675 3.000 S -(n) 0.324 3.000 S -( ) 6.324 3.000 S -(P) 9.324 3.000 S -(a) 15.998 3.000 S -(r) 21.324 3.000 S -(a) 25.320 3.000 S -(m) 30.646 3.000 S -(e) 39.980 3.000 S -(t) 45.306 3.000 S -(e) 48.640 3.000 S -(r) 53.966 3.000 S -(s) 57.962 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/HLMoperation.eps b/HTKBook/HTKFigs/HLMoperation.eps deleted file mode 100644 index ae80d4f..0000000 --- a/HTKBook/HTKFigs/HLMoperation.eps +++ /dev/null @@ -1,3128 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (IntroDiagram.eps) -%%CreationDate: 2/21/2002 2:02 AM -%%BoundingBox: 177 300 415 538 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentNeededFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -%%IncludeFont: Helvetica-Bold -%%IncludeFont: Helvetica-Oblique -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold -[/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Oblique Helvetica-Oblique -[/_Helvetica-Oblique/Helvetica-Oblique 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 182.3105 537.3711 m -179.791 537.3711 177.8711 535.4512 177.8711 533.0518 c -177.8711 506.6533 l -177.8711 504.2539 179.791 502.334 182.3105 502.334 c -269.9033 502.334 l -272.3027 502.334 274.2227 504.2539 274.2227 506.6533 c -274.2227 533.0518 l -274.2227 535.4512 272.3027 537.3711 269.9033 537.3711 c -182.3105 537.3711 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 182.3105 537.3711 m -179.791 537.3711 177.8711 535.4512 177.8711 533.0518 c -177.8711 506.6533 l -177.8711 504.2539 179.791 502.334 182.3105 502.334 c -269.9033 502.334 l -272.3027 502.334 274.2227 504.2539 274.2227 506.6533 c -274.2227 533.0518 l -274.2227 535.4512 272.3027 537.3711 269.9033 537.3711 c -182.3105 537.3711 l -s 0 To -1 0 0 1 191.4297 515.4131 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Bold 11.6789 Tf -0 Ts -100 Tz --5 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0584 Tc -0 Tw -(Tr) Tx -(\r) Tx -TO -0 To -1 0 0 1 203.1885 515.4131 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ai) Tx -(\r) Tx -TO -0 To -1 0 0 1 212.7881 515.4131 0 Tp -TP -0 Tr -0 Tt -0 Tc -(ning) Tx -(\r) Tx -TO -0 To -1 0 0 1 240.7461 515.4131 0 Tp -TP -0 Tr --4 Tt --0.0467 Tc -(te) Tx -(\r) Tx -TO -0 To -1 0 0 1 251.1846 515.4131 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(xt) Tx -(\r) Tx -TO -0 0 0 0 k -322.459 537.3711 m -320.0596 537.3711 318.0195 535.4512 318.0195 533.0518 c -318.0195 506.6533 l -318.0195 504.2539 320.0596 502.334 322.459 502.334 c -410.0518 502.334 l -412.4512 502.334 414.3711 504.2539 414.3711 506.6533 c -414.3711 533.0518 l -414.3711 535.4512 412.4512 537.3711 410.0518 537.3711 c -322.459 537.3711 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 322.459 537.3711 m -320.0596 537.3711 318.0195 535.4512 318.0195 533.0518 c -318.0195 506.6533 l -318.0195 504.2539 320.0596 502.334 322.459 502.334 c -410.0518 502.334 l -412.4512 502.334 414.3711 504.2539 414.3711 506.6533 c -414.3711 533.0518 l -414.3711 535.4512 412.4512 537.3711 410.0518 537.3711 c -322.459 537.3711 l -s 0 To -1 0 0 1 339.9775 515.4131 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 352.9365 515.4131 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 372.4951 515.4131 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(file) Tx -(\r) Tx -TO -0 To -1 0 0 1 387.4932 515.4131 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -177.8711 476.0566 m -414.3711 476.0566 l -414.3711 423.501 l -177.8711 423.501 l -177.8711 476.0566 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 177.8711 476.0566 m -177.8711 423.501 l -414.3711 423.501 l -414.3711 476.0566 l -177.8711 476.0566 l -s 0 To -1 0 0 1 188.0703 455.0576 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M (Vocabu) Tx -(\r) Tx -TO -0 To -1 0 0 1 227.5469 455.0576 0 Tp -TP -0 Tr -5 Tt -0.0584 Tc -(lary) Tx -(\r) Tx -TO -0 To -1 0 0 1 249.7451 455.0576 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(and) Tx -(\r) Tx -TO -0 To -1 0 0 1 272.4229 455.0576 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(cl) Tx -(\r) Tx -TO -0 To -1 0 0 1 280.9424 455.0576 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(as) Tx -(\r) Tx -TO -0 To -1 0 0 1 293.1816 455.0576 0 Tp -TP -0 Tr -281 Tt -3.2818 Tc -(sm) Tx -(\r) Tx -TO -0 To -1 0 0 1 312.1396 455.0576 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ap) Tx -(\r) Tx -TO -0 To -1 0 0 1 324.9785 455.0576 0 Tp -TP -0 Tr -(pi) Tx -(\r) Tx -TO -0 To -1 0 0 1 334.0986 455.0576 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ng,) Tx -(\r) Tx -TO -0 To -1 0 0 1 353.5361 455.0576 0 Tp -TP -0 Tr -(plus) Tx -(\r) Tx -TO -0 To -1 0 0 1 378.2549 455.0576 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 388.5732 455.0576 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 257.5439 441.7393 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(fi) Tx -(\r) Tx -TO -0 To -1 0 0 1 263.4238 441.7393 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(le) Tx -(\r) Tx -TO -0 To -1 0 0 1 275.7832 441.7393 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(se) Tx -(\r) Tx -TO -0 To -1 0 0 1 288.0225 441.7393 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(que) Tx -(\r) Tx -TO -0 To -1 0 0 1 307.5801 441.7393 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(nc) Tx -(\r) Tx -TO -0 To -1 0 0 1 319.8193 441.7393 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 328.9385 441.7393 0 Tp -TP -0 Tr -0 Tt -0 Tc -(g) Tx -(\r) Tx -TO -0 0 0 0 k -322.459 397.2227 m -320.0596 397.2227 318.0195 395.3027 318.0195 392.9033 c -318.0195 366.5059 l -318.0195 364.1055 320.0596 362.1855 322.459 362.1855 c -410.0518 362.1855 l -412.4512 362.1855 414.3711 364.1055 414.3711 366.5059 c -414.3711 392.9033 l -414.3711 395.3027 412.4512 397.2227 410.0518 397.2227 c -322.459 397.2227 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 322.459 397.2227 m -320.0596 397.2227 318.0195 395.3027 318.0195 392.9033 c -318.0195 366.5059 l -318.0195 364.1055 320.0596 362.1855 322.459 362.1855 c -410.0518 362.1855 l -412.4512 362.1855 414.3711 364.1055 414.3711 366.5059 c -414.3711 392.9033 l -414.3711 395.3027 412.4512 397.2227 410.0518 397.2227 c -322.459 397.2227 l -s 0 To -1 0 0 1 338.5381 375.1445 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Oblique 11.6789 Tf -(n) Tx -(\r) Tx -TO -0 To -1 0 0 1 344.8975 375.1445 0 Tp -TP -0 Tr -/_Helvetica 11.6789 Tf -1 Tt -0.0117 Tc -(-gra) Tx -(\r) Tx -TO -0 To -1 0 0 1 365.6553 375.1445 0 Tp -TP -0 Tr -287 Tt -3.3518 Tc -(mL) Tx -(\r) Tx -TO -0 To -1 0 0 1 385.0938 375.1445 0 Tp -TP -0 Tr -0 Tt -0 Tc -(M) Tx -(\r) Tx -TO -0 0 0 0 k -182.3105 397.2227 m -179.791 397.2227 177.8711 395.3027 177.8711 392.9033 c -177.8711 366.5059 l -177.8711 364.1055 179.791 362.1855 182.3105 362.1855 c -269.9033 362.1855 l -272.3027 362.1855 274.2227 364.1055 274.2227 366.5059 c -274.2227 392.9033 l -274.2227 395.3027 272.3027 397.2227 269.9033 397.2227 c -182.3105 397.2227 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 182.3105 397.2227 m -179.791 397.2227 177.8711 395.3027 177.8711 392.9033 c -177.8711 366.5059 l -177.8711 364.1055 179.791 362.1855 182.3105 362.1855 c -269.9033 362.1855 l -272.3027 362.1855 274.2227 364.1055 274.2227 366.5059 c -274.2227 392.9033 l -274.2227 395.3027 272.3027 397.2227 269.9033 397.2227 c -182.3105 397.2227 l -s 0 To -1 0 0 1 202.5889 375.2646 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Bold 11.6789 Tf --15 Tt --0.1752 Tc -(Te) Tx -(\r) Tx -TO -0 To -1 0 0 1 216.1475 375.2646 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(st) Tx -(\r) Tx -TO -0 To -1 0 0 1 229.8262 375.2646 0 Tp -TP -0 Tr -(text) Tx -(\r) Tx -TO -0 0 0 0 k -182.3105 335.9082 m -179.791 335.9082 177.8711 333.9883 177.8711 331.5879 c -177.8711 305.3105 l -177.8711 302.9111 179.791 300.8711 182.3105 300.8711 c -410.0518 300.8711 l -412.4512 300.8711 414.3711 302.9111 414.3711 305.3105 c -414.3711 331.5879 l -414.3711 333.9883 412.4512 335.9082 410.0518 335.9082 c -182.3105 335.9082 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 182.3105 335.9082 m -179.791 335.9082 177.8711 333.9883 177.8711 331.5879 c -177.8711 305.3105 l -177.8711 302.9111 179.791 300.8711 182.3105 300.8711 c -410.0518 300.8711 l -412.4512 300.8711 414.3711 302.9111 414.3711 305.3105 c -414.3711 331.5879 l -414.3711 333.9883 412.4512 335.9082 410.0518 335.9082 c -182.3105 335.9082 l -s 0 To -1 0 0 1 270.9834 313.9502 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --2 Tt --0.0234 Tc -(Perplexi) Tx -(\r) Tx -TO -0 To -1 0 0 1 313.2197 313.9502 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ty) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -274.2227 520.2129 m -313.2197 520.2129 l -313.3398 520.2129 313.5801 519.9727 313.5801 519.8525 c -313.5801 519.6123 313.3398 519.373 313.2197 519.373 c -274.2227 519.4922 l -273.9834 519.4922 273.8633 519.6123 273.8633 519.8525 c -273.8633 520.0928 273.9834 520.2129 274.2227 520.2129 c -274.2227 520.2129 l -f 312.2598 524.6523 m -318.0195 519.7324 l -312.1396 514.9326 l -312.2598 524.6523 l -f *U -*u -366.375 501.9746 m -300.8613 477.4961 l -300.6211 477.376 300.3809 477.4961 300.3809 477.6162 c -300.2607 477.8564 300.3809 478.0957 300.6211 478.0957 c -366.1357 502.6943 l -366.2559 502.6943 366.4951 502.6943 366.6152 502.4541 c -366.6152 502.2139 366.4951 502.0938 366.375 501.9746 c -366.375 501.9746 l -f 303.2607 473.5361 m -296.1816 476.0566 l -299.9014 482.6553 l -303.2607 473.5361 l -f *U -*u -296.3018 423.8604 m -361.8154 399.2627 l -361.9355 399.2627 362.0557 399.0225 362.0557 398.7832 c -361.9355 398.6631 361.6963 398.543 361.5762 398.6631 c -296.0615 423.1406 l -295.8213 423.2607 295.7012 423.501 295.8213 423.6211 c -295.8213 423.8604 296.0615 423.9805 296.3018 423.8604 c -296.3018 423.8604 l -f 362.416 403.8223 m -366.2559 397.2227 l -359.0557 394.7031 l -362.416 403.8223 l -f *U -*u -226.2266 362.5459 m -291.7412 337.9482 l -291.8613 337.9482 291.9814 337.708 291.8613 337.4678 c -291.8613 337.3477 291.6221 337.2275 291.502 337.3477 c -225.9873 361.8262 l -225.7471 361.9453 225.627 362.0654 225.7471 362.3057 c -225.7471 362.4258 225.9873 362.5459 226.2266 362.5459 c -226.2266 362.5459 l -f 292.3418 342.5078 m -296.1816 335.9082 l -288.9814 333.3877 l -292.3418 342.5078 l -f *U -*u -366.375 361.8262 m -300.8613 337.3477 l -300.6211 337.2275 300.3809 337.3477 300.3809 337.4678 c -300.2607 337.708 300.3809 337.9482 300.6211 337.9482 c -366.1357 362.5459 l -366.2559 362.5459 366.4951 362.4258 366.6152 362.3057 c -366.6152 362.0654 366.4951 361.9453 366.375 361.8262 c -366.375 361.8262 l -f 303.2607 333.3877 m -296.1816 335.9082 l -299.9014 342.5078 l -303.2607 333.3877 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/HTKFormat.eps b/HTKBook/HTKFigs/HTKFormat.eps deleted file mode 100644 index 3cf492f..0000000 --- a/HTKBook/HTKFigs/HTKFormat.eps +++ /dev/null @@ -1,4998 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: HTKFormat.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/6/94 2:47:27 p.m. -%%BoundingBox: 14.750 588.250 468.750 765.750 -%%QDBoundingBox: 14.750 26.250 468.750 203.750 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 48.250 90.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 48.250 108.250 0.000 0.000 18.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 55.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 61.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 55.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 61.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 53.250 143.250 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -151.750 59.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -8.250 3.000 S -( ) -4.749 3.000 S -(¥) -2.249 3.000 S -( ) 1.251 3.000 S -(¥) 3.751 3.000 S -( ) 7.252 3.000 S -( ) 9.752 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 55.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 61.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 66.250 126.250 48.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.250 90.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.250 108.250 0.000 0.000 18.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 82.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 88.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 82.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 88.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 82.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 88.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 93.250 126.250 75.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.250 198.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.250 204.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -208.250 83.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 90.250 0.000 0.000 18.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 109.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 115.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 109.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 115.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 109.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 115.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 120.250 126.250 102.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.250 15.250 0.000 0.000 12.000 34.000 rect -%@EndRect -gsave -32.250 57.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -16.250 4.000 S -(P) -8.919 4.000 S -(C) -2.246 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.250 15.250 0.000 0.000 12.000 58.583 rect -%@EndRect -gsave -44.541 83.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -29.250 4.000 S -(P) -21.919 4.000 S -(C) -15.246 4.000 S -(_) -7.242 4.000 S -(E) -1.242 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 15.250 0.000 0.000 12.000 60.166 rect -%@EndRect -gsave -45.333 109.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -29.250 4.000 S -(P) -21.919 4.000 S -(C) -15.246 4.000 S -(_) -7.242 4.000 S -(D) -1.242 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 15.250 0.000 0.000 12.000 80.750 rect -%@EndRect -gsave -55.625 136.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -40.250 4.000 S -(P) -32.919 4.000 S -(C) -26.246 4.000 S -(_) -18.242 4.000 S -(E) -12.242 4.000 S -(_) -4.912 4.000 S -(D) 1.087 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.250 15.250 0.000 0.000 12.000 104.500 rect -%@EndRect -gsave -67.500 165.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -52.250 4.000 S -(P) -44.919 4.000 S -(C) -38.246 4.000 S -(_) -30.242 4.000 S -(E) -24.242 4.000 S -(_) -16.912 4.000 S -(D) -10.912 4.000 S -(_) -2.246 4.000 S -(N) 3.753 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 216.250 0.000 0.000 18.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 102.250 234.250 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.250 209.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -212.250 116.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.250 226.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -229.750 116.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.250 298.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -302.750 116.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.250 120.250 198.250 102.250 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.750 199.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -206.250 109.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -206.250 109.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 217.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -223.750 109.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -223.750 109.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.250 289.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -295.750 109.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -295.750 109.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 108.250 0.000 0.000 18.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 136.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 142.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 136.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 142.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 136.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 142.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 147.250 126.250 129.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 198.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.250 204.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -208.250 137.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 216.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 129.250 216.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 227.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -230.250 143.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 244.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -247.750 143.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 316.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -320.750 143.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.250 147.250 180.250 129.250 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.750 217.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -224.250 136.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -224.250 136.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 235.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -241.750 136.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -241.750 136.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.250 307.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -313.750 136.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -313.750 136.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 129.250 306.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.250 327.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -333.750 137.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -333.750 137.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 198.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 216.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.250 209.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -212.250 170.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.250 226.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -229.750 170.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.250 298.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -302.750 170.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.250 174.250 234.250 156.250 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.750 199.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -206.250 163.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -206.250 163.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 217.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -223.750 163.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -223.750 163.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 289.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -295.750 163.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -295.750 163.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 288.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.250 309.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -315.750 164.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -315.750 164.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 156.250 108.250 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 163.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 163.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 169.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 163.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 163.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 169.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 163.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 163.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 169.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 174.250 126.250 156.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 84.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 111.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.250 252.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -261.250 111.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.250 147.250 234.250 129.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.250 147.250 252.250 129.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 138.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.250 270.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -279.250 138.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 165.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.250 252.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -261.250 165.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 15.250 0.000 0.000 12.000 66.000 rect -%@EndRect -gsave -48.250 190.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -32.250 4.000 S -(P) -24.919 4.000 S -(C) -18.246 4.000 S -(_) -10.242 4.000 S -(E) -4.242 4.000 S -(_) 3.087 4.000 S -(D) 9.087 4.000 S -(_) 17.753 4.000 S -(A) 23.753 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 90.250 0.000 0.000 18.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 108.250 0.000 0.000 18.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 93.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -97.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.250 100.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -103.250 196.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 111.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -115.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.250 118.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -121.250 196.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 182.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -186.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.250 189.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -193.750 196.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.250 201.250 126.250 183.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 198.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.250 204.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -208.250 191.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.250 201.250 180.250 183.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.250 144.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -153.250 192.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 216.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 216.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 227.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -230.250 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 244.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -247.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 316.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -320.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.750 217.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -224.250 190.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -224.250 190.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 235.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -241.750 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -241.750 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 307.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -313.750 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -313.750 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 183.250 306.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.250 327.250 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -333.750 191.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 3.000 S -grestore -restore -save -gsave -333.750 191.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -1.308 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.250 201.250 234.250 183.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.250 201.250 252.250 183.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.250 270.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -279.250 192.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.750 237.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -241.750 32.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.750 244.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -246.750 38.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.750 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 28.750 256.750 0.000 0.000 12.000 75.000 rect -%@EndRect -gsave -294.250 34.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -36.750 3.000 S -(a) -30.080 3.000 S -(s) -25.641 3.000 S -(i) -21.750 3.000 S -(c) -18.971 3.000 S -( ) -14.533 3.000 S -(C) -12.033 3.000 S -(o) -5.363 3.000 S -(e) -0.363 3.000 S -(f) 4.075 3.000 S -(f) 7.405 3.000 S -(i) 10.735 3.000 S -(c) 13.513 3.000 S -(i) 17.952 3.000 S -(e) 20.730 3.000 S -(n) 25.168 3.000 S -(t) 30.168 3.000 S -(s) 32.947 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.750 238.750 0.000 0.000 12.000 68.000 rect -%@EndRect -gsave -272.750 49.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -33.750 3.000 S -( ) -27.641 3.000 S -( ) -25.141 3.000 S -( ) -22.641 3.000 S -( ) -20.141 3.000 S -( ) -17.641 3.000 S -(L) -15.141 3.000 S -(o) -9.033 3.000 S -(g) -4.033 3.000 S -( ) 0.966 3.000 S -(E) 3.466 3.000 S -(n) 9.575 3.000 S -(e) 14.575 3.000 S -(r) 19.013 3.000 S -(g) 22.343 3.000 S -(y) 27.343 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.750 272.250 0.000 0.000 12.000 72.000 rect -%@EndRect -gsave -308.250 65.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -35.250 3.000 S -(e) -28.028 3.000 S -(l) -23.589 3.000 S -(t) -20.811 3.000 S -(a) -18.033 3.000 S -( ) -13.594 3.000 S -(c) -11.094 3.000 S -(o) -6.656 3.000 S -(e) -1.656 3.000 S -(f) 2.782 3.000 S -(f) 6.112 3.000 S -(i) 9.442 3.000 S -(c) 12.220 3.000 S -(i) 16.659 3.000 S -(e) 19.437 3.000 S -(n) 23.875 3.000 S -(t) 28.875 3.000 S -(s) 31.654 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 60.250 255.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -262.250 66.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -262.250 66.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.808 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 65.250 246.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -248.750 71.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.750 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 60.250 235.750 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -242.250 66.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.750 3.000 S -grestore -restore -save -gsave -242.250 66.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.808 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.250 250.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -252.750 67.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(,) -1.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.750 272.250 0.000 0.000 12.000 102.000 rect -%@EndRect -gsave -323.250 83.750 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -50.250 3.000 S -(c) -43.028 3.000 S -(c) -38.589 3.000 S -(e) -34.151 3.000 S -(l) -29.712 3.000 S -(e) -26.934 3.000 S -(r) -22.496 3.000 S -(a) -19.166 3.000 S -(t) -14.727 3.000 S -(i) -11.949 3.000 S -(o) -9.170 3.000 S -(n) -4.170 3.000 S -( ) 0.829 3.000 S -(c) 3.329 3.000 S -(o) 7.767 3.000 S -(e) 12.767 3.000 S -(f) 17.206 3.000 S -(f) 20.536 3.000 S -(i) 23.866 3.000 S -(c) 26.644 3.000 S -(i) 31.083 3.000 S -(e) 33.861 3.000 S -(n) 38.299 3.000 S -(t) 43.299 3.000 S -(s) 46.078 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.250 255.750 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -262.750 84.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.750 3.000 S -grestore -restore -save -gsave -262.750 84.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.631 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 246.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -248.750 89.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.750 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.250 235.750 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -242.750 84.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.750 3.000 S -grestore -restore -save -gsave -242.750 84.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.631 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.250 250.750 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -252.750 85.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(,) -1.750 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 342.250 0.000 0.000 18.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 183.250 342.250 0.000 0.000 18.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 353.250 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -356.250 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.250 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 370.750 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -373.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.750 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.250 442.250 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -446.750 197.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -4.250 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.750 343.750 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -350.750 190.750 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.750 3.000 S -grestore -restore -save -gsave -350.750 190.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.631 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 361.250 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -368.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.250 3.000 S -grestore -restore -save -gsave -368.250 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.131 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.250 433.250 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -440.250 190.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.250 3.000 S -grestore -restore -save -gsave -440.250 190.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -0.131 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 183.250 432.250 0.000 0.000 18.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.250 453.250 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -460.250 191.250 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -6.250 3.000 S -grestore -restore -save -gsave -460.250 191.250 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.131 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.250 201.250 360.250 183.250 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.250 201.250 378.250 183.250 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.250 396.750 0.000 0.000 12.000 17.000 rect -%@EndRect -gsave -405.250 192.250 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(¥) -7.750 3.000 S -( ) -4.249 3.000 S -(¥) -1.749 3.000 S -( ) 1.751 3.000 S -(¥) 4.251 3.000 S -( ) 7.752 3.000 S -( ) 10.252 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/LTool.eps b/HTKBook/HTKFigs/LTool.eps deleted file mode 100644 index 32aeb7d..0000000 --- a/HTKBook/HTKFigs/LTool.eps +++ /dev/null @@ -1,3670 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (BlockDiagram.eps) -%%CreationDate: 2/21/2002 2:24 AM -%%BoundingBox: 85 322 507 516 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%DocumentNeededFonts: Helvetica -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 96.8174 366.6865 m -85.8984 355.7666 l -85.8984 323.0088 l -145.0537 323.0088 l -155.9727 333.9287 l -155.9727 366.6865 l -96.8174 366.6865 l -f 85.8984 355.7666 m -145.0537 355.7666 l -155.9727 366.6865 l -96.8174 366.6865 l -85.8984 355.7666 l -f 0.1843 0.1255 0.102 0.0118 k -145.0537 355.7666 m -155.9727 366.6865 l -155.9727 333.9287 l -145.0537 323.0088 l -145.0537 355.7666 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 96.8174 366.6865 m -85.8984 355.7666 l -85.8984 323.0088 l -145.0537 323.0088 l -155.9727 333.9287 l -155.9727 366.6865 l -96.8174 366.6865 l -s 85.8984 355.7666 m -145.0537 355.7666 l -155.9727 366.6865 l -S 0 D -145.0537 355.7666 m -145.0537 323.0088 l -S *U -0 To -1 0 0 1 105.2168 336.8076 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(LUti) Tx -(\r) Tx -TO -0 To -1 0 0 1 125.9746 336.8076 0 Tp -TP -0 Tr -0 Tt -0 Tc -(l) Tx -(\r) Tx -TO -0 0 0 0 k -96.8174 401.7236 m -85.8984 390.8037 l -85.8984 357.9268 l -145.0537 357.9268 l -155.9727 368.8447 l -155.9727 401.7236 l -96.8174 401.7236 l -f 85.8984 390.8037 m -145.0537 390.8037 l -155.9727 401.7236 l -96.8174 401.7236 l -85.8984 390.8037 l -f 0.1843 0.1255 0.102 0.0118 k -145.0537 390.8037 m -155.9727 401.7236 l -155.9727 368.8447 l -145.0537 357.9268 l -145.0537 390.8037 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 96.8174 401.7236 m -85.8984 390.8037 l -85.8984 357.9268 l -145.0537 357.9268 l -155.9727 368.8447 l -155.9727 401.7236 l -96.8174 401.7236 l -s 85.8984 390.8037 m -145.0537 390.8037 l -155.9727 401.7236 l -S 0 D -145.0537 390.8037 m -145.0537 357.9268 l -S *U -0 To -1 0 0 1 98.2568 371.7256 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -12 Tt --0.1401 Tc -(LP) Tx -(\r) Tx -TO -0 To -1 0 0 1 112.416 371.7256 0 Tp -TP -0 Tr -1 Tt -0.0117 Tc -(Calc) Tx -(\r) Tx -TO -0 0 0 0 k -96.8174 436.7598 m -85.8984 425.8408 l -85.8984 392.9639 l -145.0537 392.9639 l -155.9727 403.8818 l -155.9727 436.7598 l -96.8174 436.7598 l -f 85.8984 425.8408 m -145.0537 425.8408 l -155.9727 436.7598 l -96.8174 436.7598 l -85.8984 425.8408 l -f 0.1843 0.1255 0.102 0.0118 k -145.0537 425.8408 m -155.9727 436.7598 l -155.9727 403.8818 l -145.0537 392.9639 l -145.0537 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 96.8174 436.7598 m -85.8984 425.8408 l -85.8984 392.9639 l -145.0537 392.9639 l -155.9727 403.8818 l -155.9727 436.7598 l -96.8174 436.7598 l -s 85.8984 425.8408 m -145.0537 425.8408 l -155.9727 436.7598 l -S 0 D -145.0537 425.8408 m -145.0537 392.9639 l -S *U -0 To -1 0 0 1 97.8975 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -12 Tt --0.1401 Tc -(LM) Tx -(\r) Tx -TO -0 To -1 0 0 1 114.0957 406.7627 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(odel) Tx -(\r) Tx -TO -0 0 0 0 k -170.251 414.5615 m -147.2129 391.6436 l -147.2129 322.6494 l -328.998 322.6494 l -351.916 345.6865 l -351.916 414.5615 l -170.251 414.5615 l -f 147.2129 391.6436 m -328.998 391.6436 l -351.916 414.5615 l -170.251 414.5615 l -147.2129 391.6436 l -f 0.1843 0.1255 0.102 0.0118 k -328.998 391.6436 m -351.916 414.5615 l -351.916 345.6865 l -328.998 322.6494 l -328.998 391.6436 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 170.251 414.5615 m -147.2129 391.6436 l -147.2129 322.6494 l -328.998 322.6494 l -351.916 345.6865 l -351.916 414.5615 l -170.251 414.5615 l -s 147.2129 391.6436 m -328.998 391.6436 l -351.916 414.5615 l -S 0 D -328.998 391.6436 m -328.998 322.6494 l -S *U -0 To -1 0 0 1 159.4521 353.2471 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -3 Tt --0.035 Tc -(HT) Tx -(\r) Tx -TO -0 To -1 0 0 1 174.9307 353.2471 0 Tp -TP -0 Tr -289 Tt -3.3752 Tc -(KL) Tx -(\r) Tx -TO -0 To -1 0 0 1 192.4492 353.2471 0 Tp -TP -0 Tr -9 Tt -0.1051 Tc -(an) Tx -(\r) Tx -TO -0 To -1 0 0 1 205.4082 353.2471 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(guage) Tx -(\r) Tx -TO -0 To -1 0 0 1 241.166 353.2471 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(Mode) Tx -(\r) Tx -TO -0 To -1 0 0 1 270.3232 353.2471 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(ll) Tx -(\r) Tx -TO -0 To -1 0 0 1 275.6025 353.2471 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 284.6016 353.2471 0 Tp -TP -0 Tr -276 Tt -3.2234 Tc -(gt) Tx -(\r) Tx -TO -0 To -1 0 0 1 297.5605 353.2471 0 Tp -TP -0 Tr -9 Tt -0.1051 Tc -(oo) Tx -(\r) Tx -TO -0 To -1 0 0 1 310.5195 353.2471 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(ls) Tx -(\r) Tx -TO -0.0784 0.0549 0.0392 0 k -158.1318 436.7598 m -147.2129 425.8408 l -147.2129 392.9639 l -206.3682 392.9639 l -217.2871 403.8818 l -217.2871 436.7598 l -158.1318 436.7598 l -f 0.0588 0.0392 0.0314 0 k -147.2129 425.8408 m -206.3682 425.8408 l -217.2871 436.7598 l -158.1318 436.7598 l -147.2129 425.8408 l -f 0.2431 0.1686 0.1373 0.0235 k -206.3682 425.8408 m -217.2871 436.7598 l -217.2871 403.8818 l -206.3682 392.9639 l -206.3682 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 158.1318 436.7598 m -147.2129 425.8408 l -147.2129 392.9639 l -206.3682 392.9639 l -217.2871 403.8818 l -217.2871 436.7598 l -158.1318 436.7598 l -s 147.2129 425.8408 m -206.3682 425.8408 l -217.2871 436.7598 l -S 0 D -206.3682 425.8408 m -206.3682 392.9639 l -S *U -0 To -1 0 0 1 157.292 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -1 Tt --0.0117 Tc -(LG) Tx -(\r) Tx -TO -0 To -1 0 0 1 172.7715 406.7627 0 Tp -TP -0 Tr -11 Tt -0.1285 Tc -(Ba) Tx -(\r) Tx -TO -0 To -1 0 0 1 187.0498 406.7627 0 Tp -TP -0 Tr -3 Tt -0.035 Tc -(se) Tx -(\r) Tx -TO -0.0784 0.0549 0.0392 0 k -219.4473 436.7598 m -208.5283 425.8408 l -208.5283 392.9639 l -267.6836 392.9639 l -278.6025 403.8818 l -278.6025 436.7598 l -219.4473 436.7598 l -f 0.0588 0.0392 0.0314 0 k -208.5283 425.8408 m -267.6836 425.8408 l -278.6025 436.7598 l -219.4473 436.7598 l -208.5283 425.8408 l -f 0.2431 0.1686 0.1373 0.0235 k -267.6836 425.8408 m -278.6025 436.7598 l -278.6025 403.8818 l -267.6836 392.9639 l -267.6836 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 219.4473 436.7598 m -208.5283 425.8408 l -208.5283 392.9639 l -267.6836 392.9639 l -278.6025 403.8818 l -278.6025 436.7598 l -219.4473 436.7598 l -s 208.5283 425.8408 m -267.6836 425.8408 l -278.6025 436.7598 l -S 0 D -267.6836 425.8408 m -267.6836 392.9639 l -S *U -0 To -1 0 0 1 219.4473 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -22 Tt --0.2569 Tc -(LW) Tx -(\r) Tx -TO -0 To -1 0 0 1 237.2061 406.7627 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 253.2842 406.7627 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0.0784 0.0549 0.0392 0 k -280.7627 436.7598 m -269.8428 425.8408 l -269.8428 392.9639 l -328.998 392.9639 l -339.917 403.8818 l -339.917 436.7598 l -280.7627 436.7598 l -f 0.0588 0.0392 0.0314 0 k -269.8428 425.8408 m -328.998 425.8408 l -339.917 436.7598 l -280.7627 436.7598 l -269.8428 425.8408 l -f 0.2431 0.1686 0.1373 0.0235 k -328.998 425.8408 m -339.917 436.7598 l -339.917 403.8818 l -328.998 392.9639 l -328.998 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 280.7627 436.7598 m -269.8428 425.8408 l -269.8428 392.9639 l -328.998 392.9639 l -339.917 403.8818 l -339.917 436.7598 l -280.7627 436.7598 l -s 269.8428 425.8408 m -328.998 425.8408 l -339.917 436.7598 l -S 0 D -328.998 425.8408 m -328.998 392.9639 l -S *U -0 To -1 0 0 1 282.2021 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -12 Tt --0.1401 Tc -(LC) Tx -(\r) Tx -TO -0 To -1 0 0 1 296.9609 406.7627 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 313.2793 406.7627 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -342.0771 366.6865 m -331.1582 355.7666 l -331.1582 322.8896 l -390.3135 322.8896 l -401.2324 333.8076 l -401.2324 366.6865 l -342.0771 366.6865 l -f 331.1582 355.7666 m -390.3135 355.7666 l -401.2324 366.6865 l -342.0771 366.6865 l -331.1582 355.7666 l -f 0.1843 0.1255 0.102 0.0118 k -390.3135 355.7666 m -401.2324 366.6865 l -401.2324 333.8076 l -390.3135 322.8896 l -390.3135 355.7666 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 342.0771 366.6865 m -331.1582 355.7666 l -331.1582 322.8896 l -390.3135 322.8896 l -401.2324 333.8076 l -401.2324 366.6865 l -342.0771 366.6865 l -s 331.1582 355.7666 m -390.3135 355.7666 l -401.2324 366.6865 l -S 0 D -390.3135 355.7666 m -390.3135 322.8896 l -S *U -0 To -1 0 0 1 345.0771 336.6885 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -2 Tt --0.0234 Tc -(HMem) Tx -(\r) Tx -TO -0 0 0 0 k -342.0771 401.7236 m -331.1582 390.8037 l -331.1582 358.0459 l -390.3135 358.0459 l -401.2324 368.9658 l -401.2324 401.7236 l -342.0771 401.7236 l -f 331.1582 390.8037 m -390.3135 390.8037 l -401.2324 401.7236 l -342.0771 401.7236 l -331.1582 390.8037 l -f 0.1843 0.1255 0.102 0.0118 k -390.3135 390.8037 m -401.2324 401.7236 l -401.2324 368.9658 l -390.3135 358.0459 l -390.3135 390.8037 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 342.0771 401.7236 m -331.1582 390.8037 l -331.1582 358.0459 l -390.3135 358.0459 l -401.2324 368.9658 l -401.2324 401.7236 l -342.0771 401.7236 l -s 331.1582 390.8037 m -390.3135 390.8037 l -401.2324 401.7236 l -S 0 D -390.3135 390.8037 m -390.3135 358.0459 l -S *U -0 To -1 0 0 1 344.957 371.8447 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -3 Tt --0.035 Tc -(HS) Tx -(\r) Tx -TO -0 To -1 0 0 1 361.2754 371.8447 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(he) Tx -(\r) Tx -TO -0 To -1 0 0 1 374.1143 371.8447 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(ll) Tx -(\r) Tx -TO -0 0 0 0 k -342.0771 436.7598 m -331.1582 425.8408 l -331.1582 392.9639 l -390.3135 392.9639 l -401.2324 403.8818 l -401.2324 436.7598 l -342.0771 436.7598 l -f 331.1582 425.8408 m -390.3135 425.8408 l -401.2324 436.7598 l -342.0771 436.7598 l -331.1582 425.8408 l -f 0.1843 0.1255 0.102 0.0118 k -390.3135 425.8408 m -401.2324 436.7598 l -401.2324 403.8818 l -390.3135 392.9639 l -390.3135 425.8408 l -f *u -1 D -0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 342.0771 436.7598 m -331.1582 425.8408 l -331.1582 392.9639 l -390.3135 392.9639 l -401.2324 403.8818 l -401.2324 436.7598 l -342.0771 436.7598 l -s 331.1582 425.8408 m -390.3135 425.8408 l -401.2324 436.7598 l -S 0 D -390.3135 425.8408 m -390.3135 392.9639 l -S *U -0 To -1 0 0 1 347.957 406.7627 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M -1 Tt --0.0117 Tc -(HDict) Tx -(\r) Tx -TO -0 0 0 0 k -85.8984 515.5933 m -155.9727 515.5933 l -155.9727 471.7969 l -85.8984 471.7969 l -85.8984 515.5933 l -f 0 To -1 0 0 1 95.3779 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k -(Langu) Tx -(\r) Tx -TO -0 To -1 0 0 1 127.8945 494.9551 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ag) Tx -(\r) Tx -TO -0 To -1 0 0 1 140.8535 494.9551 0 Tp -TP -0 Tr -0 Tt -0 Tc -(e) Tx -(\r) Tx -TO -0 To -1 0 0 1 105.457 481.5161 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(Mode) Tx -(\r) Tx -TO -0 To -1 0 0 1 134.4941 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(l) Tx -(\r) Tx -TO -0 0 0 0 k -155.9727 515.5933 m -217.2871 515.5933 l -217.2871 471.7969 l -155.9727 471.7969 l -155.9727 515.5933 l -f 0 To -1 0 0 1 172.4111 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k --2 Tt --0.0234 Tc -(Clas) Tx -(\r) Tx -TO -0 To -1 0 0 1 195.6895 494.9551 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 To -1 0 0 1 175.6504 481.5161 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 191.8496 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -217.2871 515.5933 m -278.6025 515.5933 l -278.6025 471.917 l -217.2871 471.917 l -217.2871 515.5933 l -f 0 To -1 0 0 1 234.3262 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k -32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 252.085 494.9551 0 Tp -TP -0 Tr --4 Tt --0.0467 Tc -(rd) Tx -(\r) Tx -TO -0 To -1 0 0 1 236.9658 481.5161 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 253.165 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -269.8428 515.5933 m -331.1582 515.5933 l -331.1582 471.917 l -269.8428 471.917 l -269.8428 515.5933 l -f 0 To -1 0 0 1 286.2822 494.9551 0 Tp -TP -0 Tr -0 0 0 1 k --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 299.2412 494.9551 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 290.4814 481.5161 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(fi) Tx -(\r) Tx -TO -0 To -1 0 0 1 296.2412 481.5161 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(le) Tx -(\r) Tx -TO -0 To -1 0 0 1 305.3604 481.5161 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -331.1582 506.834 m -404.2324 506.834 l -404.2324 463.0376 l -331.1582 463.0376 l -331.1582 506.834 l -f 0 To -1 0 0 1 342.0771 486.3154 0 Tp -TP -0 Tr -0 0 0 1 k -(Dict) Tx -(\r) Tx -TO -0 To -1 0 0 1 362.1152 486.3154 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(io) Tx -(\r) Tx -TO -0 To -1 0 0 1 371.2344 486.3154 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(nar) Tx -(\r) Tx -TO -0 To -1 0 0 1 388.1533 486.3154 0 Tp -TP -0 Tr -0 Tt -0 Tc -(y) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -182.6104 466.9971 m -182.6104 450.4385 l -182.6104 450.1987 182.4902 450.0786 182.25 450.0786 c -182.1299 450.0786 181.8906 450.1987 181.8906 450.4385 c -181.8906 466.9971 l -181.8906 467.2373 182.0107 467.3574 182.25 467.3574 c -182.4902 467.3574 182.6104 467.2373 182.6104 466.9971 c -182.6104 466.9971 l -f 179.3701 466.0376 m -182.25 471.917 l -185.25 466.0376 l -179.3701 466.0376 l -f 185.25 451.3984 m -182.3701 445.6392 l -179.3701 451.3984 l -185.25 451.3984 l -f *U -*u -243.9258 466.9971 m -244.0449 450.4385 l -244.0449 450.1987 243.8057 450.0786 243.5654 450.0786 c -243.4453 450.0786 243.2051 450.1987 243.2051 450.4385 c -243.2051 466.9971 l -243.2051 467.2373 243.4453 467.3574 243.5654 467.3574 c -243.8057 467.3574 243.9258 467.2373 243.9258 466.9971 c -243.9258 466.9971 l -f 240.6855 466.0376 m -243.5654 471.917 l -246.5654 466.0376 l -240.6855 466.0376 l -f 246.5654 451.3984 m -243.6855 445.6392 l -240.6855 451.3984 l -246.5654 451.3984 l -f *U -*u -305.2402 466.9971 m -305.3604 450.4385 l -305.3604 450.1987 305.1201 450.0786 304.8799 450.0786 c -304.7607 450.0786 304.5205 450.1987 304.5205 450.4385 c -304.5205 466.9971 l -304.5205 467.2373 304.7607 467.3574 304.8799 467.3574 c -305.1201 467.3574 305.2402 467.2373 305.2402 466.9971 c -305.2402 466.9971 l -f 302.001 466.0376 m -304.8799 471.917 l -307.8799 466.0376 l -302.001 466.0376 l -f 307.8799 451.3984 m -305 445.6392 l -302.001 451.3984 l -307.8799 451.3984 l -f *U -*u -366.5547 466.9971 m -366.6748 450.4385 l -366.6748 450.1987 366.4355 450.0786 366.3154 450.0786 c -366.0752 450.0786 365.835 450.1987 365.835 450.4385 c -365.835 466.9971 l -365.835 467.2373 366.0752 467.3574 366.1953 467.3574 c -366.4355 467.3574 366.5547 467.2373 366.5547 466.9971 c -366.5547 466.9971 l -f 363.3154 466.0376 m -366.1953 471.917 l -369.1953 466.0376 l -363.3154 466.0376 l -f 369.1953 451.3984 m -366.3154 445.6392 l -363.3154 451.3984 l -369.1953 451.3984 l -f *U -*u -121.2949 466.9971 m -121.2949 450.4385 l -121.2949 450.1987 121.1758 450.0786 120.9355 450.0786 c -120.8154 450.0786 120.5752 450.1987 120.5752 450.4385 c -120.5752 466.9971 l -120.5752 467.2373 120.6953 467.3574 120.9355 467.3574 c -121.1758 467.3574 121.2949 467.2373 121.2949 466.9971 c -121.2949 466.9971 l -f 118.0557 466.0376 m -120.9355 471.917 l -123.8154 466.0376 l -118.0557 466.0376 l -f 123.9355 451.3984 m -120.9355 445.6392 l -118.0557 451.3984 l -123.9355 451.3984 l -f *U -0 0 0 0 k -418.751 401.7236 m -506.3438 401.7236 l -506.3438 357.9268 l -418.751 357.9268 l -418.751 401.7236 l -f 0 To -1 0 0 1 440.2295 381.085 0 Tp -TP -0 Tr -0 0 0 1 k --5 Tt --0.0584 Tc -(Term) Tx -(\r) Tx -TO -0 To -1 0 0 1 467.3467 381.085 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 476.4658 381.085 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(al) Tx -(\r) Tx -TO -0 To -1 0 0 1 432.4297 367.6455 0 Tp -TP -0 Tr -14 Tt -0.1635 Tc -(in) Tx -(\r) Tx -TO -0 To -1 0 0 1 441.5488 367.6455 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(pu) Tx -(\r) Tx -TO -0 To -1 0 0 1 454.3877 367.6455 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(t/) Tx -(\r) Tx -TO -0 To -1 0 0 1 460.9873 367.6455 0 Tp -TP -0 Tr -2 Tt -0.0234 Tc -(outpu) Tx -(\r) Tx -TO -0 To -1 0 0 1 490.1445 367.6455 0 Tp -TP -0 Tr -0 Tt -0 Tc -(t) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -422.71 375.085 m -414.9111 374.9658 l -414.6709 374.9658 414.5508 375.2041 414.5508 375.3252 c -414.5508 375.5654 414.6709 375.6846 414.9111 375.6846 c -422.71 375.8057 l -422.8301 375.8057 423.0703 375.5654 423.0703 375.4443 c -423.0703 375.2041 422.8301 375.085 422.71 375.085 c -422.71 375.085 l -f 421.6309 378.3252 m -427.5098 375.4443 l -421.751 372.4443 l -421.6309 378.3252 l -f 415.8711 372.4443 m -409.9912 375.3252 l -415.8711 378.3252 l -415.8711 372.4443 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/MMFeg.eps b/HTKBook/HTKFigs/MMFeg.eps deleted file mode 100644 index efd4f62..0000000 --- a/HTKBook/HTKFigs/MMFeg.eps +++ /dev/null @@ -1,1193 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: MMFeg.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:3/17/97 10:39:20 p.m. -%%BoundingBox: 26 593 334 765 -%%QDBoundingBox: 26.500 27.500 333.513 198.500 -%%DocumentFonts: -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=F tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 36.500 0.000 0.000 13.000 32.405 rect -%@EndRect -gsave -52.702 34.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -16.000 4.000 S -(a) -10.599 4.000 S -(c) -5.198 4.000 S -(r) 0.202 4.000 S -(o) 5.603 4.000 S -(s) 11.004 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 50.500 36.500 0.000 0.000 73.000 135.013 rect -%@EndRect -gsave -104.006 87.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 -26.000 S -(o) -61.599 -26.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -14.000 S -( ) -61.599 -14.000 S -( ) -56.198 -14.000 S -(<) -50.797 -14.000 S -(V) -45.396 -14.000 S -(e) -39.995 -14.000 S -(c) -34.594 -14.000 S -(S) -29.193 -14.000 S -(i) -23.792 -14.000 S -(z) -18.392 -14.000 S -(e) -12.991 -14.000 S -(>) -7.590 -14.000 S -( ) -2.189 -14.000 S -(3) 3.211 -14.000 S -(9) 8.612 -14.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -2.000 S -( ) -61.599 -2.000 S -( ) -56.198 -2.000 S -(<) -50.797 -2.000 S -(M) -45.396 -2.000 S -(F) -39.995 -2.000 S -(C) -34.594 -2.000 S -(C) -29.193 -2.000 S -(_) -23.792 -2.000 S -(0) -18.392 -2.000 S -(_) -12.991 -2.000 S -(D) -7.590 -2.000 S -(_) -2.189 -2.000 S -(A) 3.211 -2.000 S -(>) 8.612 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 10.000 S -(v) -61.599 10.000 S -( ) -56.198 10.000 S -(") -50.797 10.000 S -(v) -45.396 10.000 S -(a) -39.995 10.000 S -(r) -34.594 10.000 S -(F) -29.193 10.000 S -(l) -23.792 10.000 S -(o) -18.392 10.000 S -(o) -12.991 10.000 S -(r) -7.590 10.000 S -(1) -2.189 10.000 S -(") 3.211 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 22.000 S -( ) -61.599 22.000 S -( ) -56.198 22.000 S -(<) -50.797 22.000 S -(V) -45.396 22.000 S -(a) -39.995 22.000 S -(r) -34.594 22.000 S -(i) -29.193 22.000 S -(a) -23.792 22.000 S -(n) -18.392 22.000 S -(c) -12.991 22.000 S -(e) -7.590 22.000 S -(>) -2.189 22.000 S -( ) 3.211 22.000 S -(3) 8.612 22.000 S -(9) 14.013 22.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 34.000 S -( ) -61.599 34.000 S -( ) -56.198 34.000 S -( ) -50.797 34.000 S -( ) -45.396 34.000 S -( ) -39.995 34.000 S -(0) -34.594 34.000 S -(.) -29.193 34.000 S -(0) -23.792 34.000 S -(0) -18.392 34.000 S -(1) -12.991 34.000 S -(2) -7.590 34.000 S -( ) -2.189 34.000 S -(0) 3.211 34.000 S -(.) 8.612 34.000 S -(0) 14.013 34.000 S -(0) 19.414 34.000 S -(0) 24.814 34.000 S -(3) 30.215 34.000 S -( ) 35.616 34.000 S -(.) 41.017 34.000 S -(.) 46.418 34.000 S -(.) 51.819 34.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 27.000 0.000 0.000 90.000 135.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 198.500 0.000 0.000 13.000 37.806 rect -%@EndRect -gsave -217.403 34.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -18.000 4.000 S -(m) -12.599 4.000 S -(m) -7.198 4.000 S -(d) -1.797 4.000 S -(e) 3.603 4.000 S -(f) 9.004 4.000 S -(s) 14.405 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.500 198.500 0.000 0.000 85.000 135.013 rect -%@EndRect -gsave -266.006 92.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 -32.000 S -(h) -61.599 -32.000 S -( ) -56.198 -32.000 S -(") -50.797 -32.000 S -(a) -45.396 -32.000 S -(a) -39.995 -32.000 S -(") -34.594 -32.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -20.000 S -( ) -61.599 -20.000 S -( ) -56.198 -20.000 S -(<) -50.797 -20.000 S -(B) -45.396 -20.000 S -(e) -39.995 -20.000 S -(g) -34.594 -20.000 S -(i) -29.193 -20.000 S -(n) -23.792 -20.000 S -(H) -18.392 -20.000 S -(M) -12.991 -20.000 S -(M) -7.590 -20.000 S -(>) -2.189 -20.000 S -( ) 3.211 -20.000 S -(.) 8.612 -20.000 S -(.) 14.013 -20.000 S -(.) 19.414 -20.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 -8.000 S -( ) -61.599 -8.000 S -( ) -56.198 -8.000 S -(<) -50.797 -8.000 S -(E) -45.396 -8.000 S -(n) -39.995 -8.000 S -(d) -34.594 -8.000 S -(H) -29.193 -8.000 S -(M) -23.792 -8.000 S -(M) -18.392 -8.000 S -(>) -12.991 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -67.000 4.000 S -(h) -61.599 4.000 S -( ) -56.198 4.000 S -(") -50.797 4.000 S -(e) -45.396 4.000 S -(h) -39.995 4.000 S -(") -34.594 4.000 S -( ) -29.193 4.000 S -( ) -23.792 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 16.000 S -( ) -61.599 16.000 S -( ) -56.198 16.000 S -(<) -50.797 16.000 S -(B) -45.396 16.000 S -(e) -39.995 16.000 S -(g) -34.594 16.000 S -(i) -29.193 16.000 S -(n) -23.792 16.000 S -(H) -18.392 16.000 S -(M) -12.991 16.000 S -(M) -7.590 16.000 S -(>) -2.189 16.000 S -( ) 3.211 16.000 S -(.) 8.612 16.000 S -(.) 14.013 16.000 S -(.) 19.414 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -67.000 28.000 S -( ) -61.599 28.000 S -( ) -56.198 28.000 S -(<) -50.797 28.000 S -(E) -45.396 28.000 S -(n) -39.995 28.000 S -(d) -34.594 28.000 S -(H) -29.193 28.000 S -(M) -23.792 28.000 S -(M) -18.392 28.000 S -(>) -12.991 28.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -67.000 40.000 S -(.) -61.599 40.000 S -(.) -56.198 40.000 S -( ) -50.797 40.000 S -(e) -45.396 40.000 S -(t) -39.995 40.000 S -(c) -34.594 40.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 189.000 0.000 0.000 153.000 135.000 rect -%@EndRect -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Spmods.eps b/HTKBook/HTKFigs/Spmods.eps deleted file mode 100644 index 9967b18..0000000 --- a/HTKBook/HTKFigs/Spmods.eps +++ /dev/null @@ -1,1825 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Spmods.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/30/94 10:06:09 a.m. -%%BoundingBox: 23.500 496.500 251.449 728.500 -%%QDBoundingBox: 23.500 63.500 251.449 295.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 176.000 117.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 171.000 135.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 148.756 181.487 136.000 195.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 192.000 132.000 0.000 0.000 6.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 168.000 132.000 0.000 0.000 6.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 174.000 114.000 0.000 0.000 6.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 174.000 150.000 0.000 0.000 6.000 7.000 rect -%@EndOval -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.000 108.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 124.500 117.500 0.000 0.000 14.000 36.644 rect -%@EndRect -gsave -135.822 131.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.000 3.000 S -(W) -9.333 3.000 S -(a) 1.992 3.000 S -(v) 7.318 3.000 S -(e) 13.318 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 108.500 0.000 0.000 27.000 51.304 rect -%@EndRect -gsave -134.152 77.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -25.000 -3.000 S -(a) -13.673 -3.000 S -(v) -8.347 -3.000 S -(e) -2.347 -3.000 S -(f) 2.978 -3.000 S -(o) 6.974 -3.000 S -(r) 12.974 -3.000 S -(m) 16.970 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -8.681 10.000 S -(i) -2.007 10.000 S -(l) 1.326 10.000 S -(e) 4.660 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 117.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.999 115.000 135.000 90.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 36.500 0.000 0.000 27.000 48.638 rect -%@EndRect -gsave -60.819 77.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -24.000 -3.000 S -(a) -17.326 -3.000 S -(r) -12.000 -3.000 S -(a) -8.003 -3.000 S -(m) -2.677 -3.000 S -(e) 6.656 -3.000 S -(t) 11.982 -3.000 S -(e) 15.316 -3.000 S -(r) 20.642 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -9.014 10.000 S -(i) -2.340 10.000 S -(l) 0.993 10.000 S -(e) 4.327 10.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 108.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.500 118.500 0.000 0.000 14.000 33.996 rect -%@EndRect -gsave -135.498 230.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(P) -7.333 3.000 S -(a) -0.660 3.000 S -(r) 4.666 3.000 S -(m) 8.662 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.000 180.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 124.500 189.500 0.000 0.000 14.000 38.666 rect -%@EndRect -gsave -208.833 131.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.000 3.000 S -(A) -10.333 3.000 S -(u) -1.667 3.000 S -(d) 4.332 3.000 S -(i) 10.332 3.000 S -(o) 13.666 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 180.500 0.000 0.000 27.000 51.304 rect -%@EndRect -gsave -206.152 77.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -14.347 -3.000 S -(u) -5.681 -3.000 S -(d) 0.318 -3.000 S -(i) 6.318 -3.000 S -(o) 9.652 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -12.012 10.000 S -(n) -8.016 10.000 S -(p) -2.016 10.000 S -(u) 3.983 10.000 S -(t) 9.983 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 117.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 206.999 115.000 207.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 198.000 135.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 162.000 63.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 162.000 63.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -63.000 117.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 62.999 115.000 63.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 162.000 207.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 162.000 207.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 173.000 153.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 270.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.999 268.000 135.000 243.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 270.500 23.500 0.000 0.000 25.000 227.949 rect -%@EndRect -gsave -137.474 283.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -30.686 -2.000 S -(b) -22.020 -2.000 S -(s) -16.020 -2.000 S -(e) -11.350 -2.000 S -(r) -6.024 -2.000 S -(v) -2.028 -2.000 S -(a) 3.971 -2.000 S -(t) 9.297 -2.000 S -(i) 12.631 -2.000 S -(o) 15.965 -2.000 S -(n) 21.965 -2.000 S -(s) 27.965 -2.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -80.670 10.000 S -(P) -77.340 10.000 S -(a) -71.779 10.000 S -(r) -67.340 10.000 S -(a) -64.010 10.000 S -(m) -59.572 10.000 S -(e) -51.793 10.000 S -(t) -47.355 10.000 S -(e) -44.577 10.000 S -(r) -40.138 10.000 S -( ) -36.808 10.000 S -(V) -34.308 10.000 S -(e) -27.086 10.000 S -(c) -22.648 10.000 S -(t) -18.209 10.000 S -(o) -15.431 10.000 S -(r) -10.431 10.000 S -(s) -7.101 10.000 S -( ) -3.209 10.000 S -(a) -0.709 10.000 S -(n) 3.728 10.000 S -(d) 8.728 10.000 S -(/) 13.728 10.000 S -(o) 16.506 10.000 S -(r) 21.506 10.000 S -( ) 24.836 10.000 S -(V) 27.336 10.000 S -(Q) 34.558 10.000 S -( ) 41.780 10.000 S -(S) 44.280 10.000 S -(y) 49.841 10.000 S -(m) 54.841 10.000 S -(b) 62.620 10.000 S -(o) 67.620 10.000 S -(l) 72.620 10.000 S -(s) 75.398 10.000 S -(\)) 79.290 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 99.000 27.000 0.000 0.000 153.000 216.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 36.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 224.500 48.500 0.000 0.000 14.000 31.347 rect -%@EndRect -gsave -64.173 231.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(S) -6.333 3.000 S -(i) 0.339 3.000 S -(g) 3.673 3.000 S -(P) 9.673 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 230.000 180.000 230.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 180.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 224.500 194.500 0.000 0.000 14.000 25.998 rect -%@EndRect -gsave -207.499 231.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -12.000 3.000 S -(V) -3.333 3.000 S -(Q) 5.332 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 230.000 108.000 230.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.decode.eps b/HTKBook/HTKFigs/Tool.decode.eps deleted file mode 100644 index c34b2f9..0000000 --- a/HTKBook/HTKFigs/Tool.decode.eps +++ /dev/null @@ -1,2711 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.decode.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 9:35:45 a.m. -%%BoundingBox: 71.601 560.938 389.624 785.062 -%%QDBoundingBox: 71.601 6.937 389.624 231.061 -%%DocumentFonts: Times-Roman -%%+ Times-Bold -%%+ Helvetica -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 115.262 133.601 0.000 0.000 75.000 145.800 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 100.262 133.601 0.000 0.000 15.000 162.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 15.000] CP -[24.300 0.000] CP -[162.000 0.000 ] CP -[145.800 15.000 ] CP -[145.800 15.000 0.000 15.000 0.000 15.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 100.262 279.401 0.000 0.000 90.000 16.199 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[16.199 0.000] CP -[16.199 75.000] CP -[0.000 90.000 ] CP -[0.000 15.000 ] CP -[0.000 15.000 16.199 0.000 16.199 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 125.679 171.851 0.000 0.000 39.000 81.496 rect -%@EndRect -gsave -212.599 145.179 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -25.031 -4.000 S -(V) -11.030 -4.000 S -13.000 (_Times-Bold) fess -(I) 1.968 -4.000 S -(T) 7.221 -4.000 S -(E) 16.226 -4.000 S -18.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -28.771 15.000 S -(H) -22.777 15.000 S -(R) -8.776 15.000 S -13.000 (_Times-Bold) fess -(E) 4.222 15.000 S -(C) 13.227 15.000 S -18.000 (_Times-Bold) fess -(\)) 22.976 15.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -214.601 109.262 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 214.601 105.262 214.601 48.262 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -277.851 107.512 moveto -/Triangular 16.799 8.399 false 302.937 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 280.024 104.154 295.976 79.512 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 46.425 72.101 0.000 0.000 12.666 9.189 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 22.500 91.739 0.000 0.000 26.599 8.500 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.300 90.479 0.000 0.000 15.199 11.333 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -113.147 52.900 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 111.980 52.900 101.813 52.900 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 22.500 114.406 0.000 0.000 26.599 8.500 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.300 113.147 0.000 0.000 15.199 11.333 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.814 52.900 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.647 52.900 124.480 52.900 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.479 52.993 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.313 52.993 81.290 52.993 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 46.425 135.911 0.000 0.000 12.666 9.189 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.358 159.601 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 26.833 175.092 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.183 193.006 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.358 216.846 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 26.833 232.337 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 28.183 250.251 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -154.601 109.262 moveto -/Triangular 16.799 8.399 false 229.201 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 151.986 106.235 116.601 65.262 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 18.087 319.842 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.554 319.842 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 59.645 319.842 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.842 22.243 moveto -/Triangular 7.049 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.842 22.243 310.923 22.243 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.842 34.710 moveto -/Triangular 7.049 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.842 34.710 310.923 34.710 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.842 63.801 moveto -/Triangular 7.049 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.842 63.801 310.923 63.801 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 22.243 306.464 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 34.710 306.464 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 55.489 306.464 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 346.598 22.243 342.139 22.243 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 346.598 34.710 342.139 34.710 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 346.598 63.801 342.139 63.801 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 22.243 342.139 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 34.710 342.139 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 55.489 342.139 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.057 43.022 351.057 26.399 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 38.866 351.057 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 47.178 351.057 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.057 59.645 351.057 51.333 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.464 43.022 306.464 26.399 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 38.866 297.545 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 47.178 297.545 0.000 0.000 8.311 8.918 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.464 59.645 306.464 51.333 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 58.869 326.512 0.000 0.000 8.000 21.680 rect -%@EndRect -gsave -337.352 62.869 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -9.987 2.000 S -(e) -7.324 2.000 S -(r) -4.660 2.000 S -(o) -2.662 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 17.311 325.292 0.000 0.000 8.000 27.338 rect -%@EndRect -gsave -338.962 21.311 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.207 2.000 S -(n) -10.207 2.000 S -(e) -7.207 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.185 326.106 0.000 0.000 8.000 31.106 rect -%@EndRect -gsave -341.659 34.185 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -15.393 2.000 S -(w) -13.726 2.000 S -(o) -9.393 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 302.005 47.178 297.607 47.178 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 359.790 47.178 355.516 47.178 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 43.022 275.249 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.658 283.177 0.000 0.000 8.000 14.188 rect -%@EndRect -gsave -290.271 46.658 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.322 2.000 S -(i) -3.987 2.000 S -(l) -2.320 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {4.155 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 43.022 359.976 0.000 0.000 8.311 22.296 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.658 368.310 0.000 0.000 8.000 20.813 rect -%@EndRect -gsave -378.717 46.658 T translate -0.0 rotate -1 1 scale -6.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -10.189 2.000 S -(i) -7.854 2.000 S -(l) -6.187 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 46.947 351.800 0.000 0.000 8.773 5.945 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 46.947 301.262 0.000 0.000 8.773 5.945 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.526 75.114 304.234 75.114 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 357.746 72.112 357.746 51.333 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 68.188 350.314 0.000 0.000 6.926 7.432 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 68.188 301.262 0.000 0.000 6.926 7.432 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 301.262 71.882 301.262 50.641 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -324.549 75.114 moveto -/Triangular 7.049 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.549 75.114 333.715 75.114 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Helvetica -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica /Helvetica EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 6.937 210.311 0.000 0.000 20.000 10.010 rect -%@EndRect -gsave -215.317 16.937 T translate -0.0 rotate -1 1 scale -18.000 (_Helvetica) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(?) -4.188 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -214.601 217.262 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 214.601 213.262 214.601 190.262 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 217.061 179.061 0.000 0.000 14.000 77.308 rect -%@EndRect -gsave -217.716 224.061 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -38.438 3.000 S -(n) -32.438 3.000 S -(e) -26.438 3.000 S -( ) -21.112 3.000 S -(t) -18.112 3.000 S -(w) -14.778 3.000 S -(o) -6.112 3.000 S -( ) -0.112 3.000 S -(t) 2.887 3.000 S -(h) 6.221 3.000 S -(r) 12.221 3.000 S -(e) 16.218 3.000 S -(e) 21.544 3.000 S -( ) 26.870 3.000 S -(.) 29.870 3.000 S -(.) 32.870 3.000 S -(.) 35.870 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.500 325.500 0.000 0.000 14.000 9.000 rect -%@EndRect -gsave -330.000 47.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -4.000 3.000 S -(.) -1.000 3.000 S -(.) 2.000 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.disc.eps b/HTKBook/HTKFigs/Tool.disc.eps deleted file mode 100644 index cd3ccb6..0000000 --- a/HTKBook/HTKFigs/Tool.disc.eps +++ /dev/null @@ -1,2605 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.disc.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/29/95 11:35:52 p.m. -%%BoundingBox: 44.000 559.137 297.366 752.262 -%%QDBoundingBox: 44.000 39.737 297.366 232.862 -%%DocumentFonts: Times-Roman -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 126.000 45.000 0.000 0.000 45.000 135.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 58.500 0.000 0.000 31.000 114.551 rect -%@EndRect -gsave -115.775 147.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -57.000 -3.000 S -(I) -46.110 -3.000 S -10.000 (_Times-Bold) fess -(N) -40.662 -3.000 S -(I) -33.079 -3.000 S -(T) -28.993 -3.000 S -14.000 (_Times-Bold) fess -( ) -21.989 -3.000 S -(/) -18.489 -3.000 S -( ) -14.600 -3.000 S -(H) -11.100 -3.000 S -(S) -0.210 -3.000 S -10.000 (_Times-Bold) fess -(M) 7.575 -3.000 S -(O) 17.486 -3.000 S -(O) 25.653 -3.000 S -(T) 33.820 -3.000 S -(H) 40.823 -3.000 S -14.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -57.000 12.000 S -(R) -46.110 12.000 S -10.000 (_Times-Bold) fess -(E) -36.000 12.000 S -(S) -28.996 12.000 S -(T) -23.156 12.000 S -14.000 (_Times-Bold) fess -( ) -16.153 12.000 S -(/) -12.653 12.000 S -( ) -8.763 12.000 S -(H) -5.263 12.000 S -(E) 5.625 12.000 S -(R) 14.963 12.000 S -10.000 (_Times-Bold) fess -(E) 25.073 12.000 S -(S) 32.077 12.000 S -(T) 37.916 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -117.000 117.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 116.999 113.000 117.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -117.000 198.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 116.999 194.000 117.000 171.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 219.723 56.500 0.000 0.000 11.375 10.658 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.237 79.277 0.000 0.000 23.887 9.859 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 218.712 77.817 0.000 0.000 13.649 13.145 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -104.108 225.537 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 102.941 225.537 90.962 225.537 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -79.277 211.887 moveto -/Triangular 8.224 7.049 false 275.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.379 210.725 79.642 207.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.237 105.568 0.000 0.000 23.887 9.859 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 218.712 104.108 0.000 0.000 13.649 13.145 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.399 225.537 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.232 225.537 117.253 225.537 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -105.568 211.887 moveto -/Triangular 8.224 7.049 false 275.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 105.670 210.725 105.934 207.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.237 131.860 0.000 0.000 23.887 9.859 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 218.712 130.399 0.000 0.000 13.649 13.145 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -156.690 225.537 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.523 225.537 143.545 225.537 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -131.860 211.887 moveto -/Triangular 8.224 7.049 false 275.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.961 210.725 132.225 207.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -77.817 225.621 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 76.650 225.621 67.158 225.621 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 219.723 155.980 0.000 0.000 11.375 10.658 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.274 59.500 0.000 0.000 11.666 10.161 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.237 81.215 0.000 0.000 24.499 9.399 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 61.237 79.822 0.000 0.000 13.999 12.532 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -104.887 68.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 103.720 68.237 92.354 68.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.215 54.237 moveto -/Triangular 8.224 7.049 false 274.672 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.309 53.074 81.563 49.959 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.237 106.279 0.000 0.000 24.499 9.399 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 61.237 104.887 0.000 0.000 13.999 12.532 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -129.951 68.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.784 68.237 117.419 68.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -106.279 54.237 moveto -/Triangular 8.224 7.049 false 274.672 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.374 53.074 106.627 49.959 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.237 131.344 0.000 0.000 24.499 9.399 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 61.237 129.951 0.000 0.000 13.999 12.532 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.016 68.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.849 68.237 142.483 68.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -131.344 54.237 moveto -/Triangular 8.224 7.049 false 274.672 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.438 53.074 131.692 49.959 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -79.822 68.323 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 78.655 68.323 69.661 68.323 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.274 154.338 0.000 0.000 11.666 10.161 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.830 202.000 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.131] CP -[0.294 2.377 0.606 0.162 0.937 0.486] CP -[1.268 0.810 1.562 2.161 1.819 4.538] CP -[2.076 6.915 2.499 9.293 3.087 11.670] CP -[3.675 14.047 4.117 14.804 4.411 13.939] CP -[4.705 13.075 4.962 11.616 5.183 9.563] CP -[5.403 7.510 5.716 5.835 6.120 4.538] CP -[6.524 3.241 6.910 3.457 7.278 5.186] CP -[7.646 6.915 7.903 8.320 8.050 9.401] CP -[8.197 10.481 8.601 10.049 9.263 8.104] CP -[9.925 6.159 10.605 5.511 11.303 6.159] CP -[12.002 6.807 12.461 7.023 12.682 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.209 214.792 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.450] CP -[0.437 8.137 0.802 7.616 1.094 6.885] CP -[1.386 6.155 1.614 5.503 1.778 4.929] CP -[1.942 4.355 2.107 3.547 2.271 2.503] CP -[2.435 1.460 2.645 0.782 2.900 0.469] CP -[3.156 0.156 3.411 0.443 3.666 1.330] CP -[3.922 2.217 4.122 3.156 4.268 4.147] CP -[4.414 5.138 4.533 5.764 4.624 6.025] CP -[4.715 6.286 4.816 6.912 4.925 7.903] CP -[5.035 8.894 5.244 9.989 5.554 11.189] CP -[5.865 12.389 6.102 13.093 6.266 13.302] CP -[6.430 13.511 6.649 13.537 6.923 13.380] CP -[7.196 13.224 7.379 12.963 7.470 12.598] CP -[7.561 12.232 7.716 11.424 7.935 10.172] CP -[8.154 8.920 8.364 7.929 8.565 7.198] CP -[8.765 6.468 8.920 5.790 9.030 5.164] CP -[9.139 4.538 9.267 4.564 9.413 5.242] CP -[9.559 5.920 9.714 6.703 9.878 7.590] CP -[10.042 8.477 10.243 9.103 10.480 9.468] CP -[10.717 9.833 10.890 9.494 11.000 8.450] CP -[11.109 7.407 11.210 6.520 11.301 5.790] CP -[11.392 5.060 11.556 5.060 11.794 5.790] CP -[12.031 6.520 12.240 7.355 12.423 8.294] CP -[12.605 9.233 12.788 9.755 12.970 9.859] CP -[13.153 9.963 13.308 9.624 13.435 8.842] CP -[13.563 8.059 13.764 7.538 14.037 7.277] CP -[14.311 7.016 14.521 7.303 14.667 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.643 229.585 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.936] CP -[0.750 1.978 1.258 0.814 1.523 2.444] CP -[1.788 4.074 2.053 5.529 2.319 6.809] CP -[2.584 8.090 2.815 7.799 3.014 5.936] CP -[3.213 4.074 3.357 2.910 3.445 2.444] CP -[3.533 1.978 3.732 2.793 4.041 4.889] CP -[4.350 6.984 4.571 8.905 4.704 10.651] CP -[4.836 12.397 5.046 12.513 5.333 11.000] CP -[5.620 9.487 5.985 7.450 6.427 4.889] CP -[6.868 2.328 7.200 1.222 7.420 1.571] CP -[7.641 1.920 7.840 2.793 8.017 4.190] CP -[8.193 5.587 8.436 6.344 8.746 6.460] CP -[9.055 6.577 9.342 6.344 9.607 5.762] CP -[9.872 5.180 10.126 5.180 10.369 5.762] CP -[10.612 6.344 10.844 6.518 11.065 6.286] CP -[11.285 6.053 11.628 6.227 12.092 6.809] CP -[12.555 7.391 12.942 7.624 13.251 7.508] CP -[13.560 7.391 13.847 7.100 14.112 6.635] CP -[14.377 6.169 14.631 5.645 14.874 5.063] CP -[15.117 4.481 15.360 4.539 15.603 5.238] CP -[15.846 5.936 16.122 6.460 16.431 6.809] CP -[16.741 7.159 17.050 7.042 17.359 6.460] CP -[17.668 5.878 17.944 5.762 18.187 6.111] CP -[18.430 6.460 18.971 6.635 19.811 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.830 249.271 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.131] CP -[0.294 2.377 0.606 0.162 0.937 0.486] CP -[1.268 0.810 1.562 2.161 1.819 4.538] CP -[2.076 6.915 2.499 9.293 3.087 11.670] CP -[3.675 14.047 4.117 14.804 4.411 13.939] CP -[4.705 13.075 4.962 11.616 5.183 9.563] CP -[5.403 7.510 5.716 5.835 6.120 4.538] CP -[6.524 3.241 6.910 3.457 7.278 5.186] CP -[7.646 6.915 7.903 8.320 8.050 9.401] CP -[8.197 10.481 8.601 10.049 9.263 8.104] CP -[9.925 6.159 10.605 5.511 11.303 6.159] CP -[12.002 6.807 12.461 7.023 12.682 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.209 262.064 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.450] CP -[0.437 8.137 0.802 7.616 1.094 6.885] CP -[1.386 6.155 1.614 5.503 1.778 4.929] CP -[1.942 4.355 2.107 3.547 2.271 2.503] CP -[2.435 1.460 2.645 0.782 2.900 0.469] CP -[3.156 0.156 3.411 0.443 3.666 1.330] CP -[3.922 2.217 4.122 3.156 4.268 4.147] CP -[4.414 5.138 4.533 5.764 4.624 6.025] CP -[4.715 6.286 4.816 6.912 4.925 7.903] CP -[5.035 8.894 5.244 9.989 5.554 11.189] CP -[5.865 12.389 6.102 13.093 6.266 13.302] CP -[6.430 13.511 6.649 13.537 6.923 13.380] CP -[7.196 13.224 7.379 12.963 7.470 12.598] CP -[7.561 12.232 7.716 11.424 7.935 10.172] CP -[8.154 8.920 8.364 7.929 8.565 7.198] CP -[8.765 6.468 8.920 5.790 9.030 5.164] CP -[9.139 4.538 9.267 4.564 9.413 5.242] CP -[9.559 5.920 9.714 6.703 9.878 7.590] CP -[10.042 8.477 10.243 9.103 10.480 9.468] CP -[10.717 9.833 10.890 9.494 11.000 8.450] CP -[11.109 7.407 11.210 6.520 11.301 5.790] CP -[11.392 5.060 11.556 5.060 11.793 5.790] CP -[12.031 6.520 12.240 7.355 12.423 8.294] CP -[12.605 9.233 12.788 9.755 12.970 9.859] CP -[13.153 9.963 13.308 9.624 13.435 8.842] CP -[13.563 8.059 13.764 7.538 14.037 7.277] CP -[14.311 7.016 14.521 7.303 14.667 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.643 276.856 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.936] CP -[0.750 1.978 1.258 0.814 1.523 2.444] CP -[1.788 4.074 2.054 5.529 2.319 6.809] CP -[2.584 8.090 2.815 7.799 3.014 5.936] CP -[3.213 4.074 3.357 2.910 3.445 2.444] CP -[3.533 1.978 3.732 2.793 4.041 4.889] CP -[4.350 6.984 4.571 8.905 4.704 10.651] CP -[4.836 12.397 5.046 12.513 5.333 11.000] CP -[5.620 9.487 5.985 7.450 6.427 4.889] CP -[6.868 2.328 7.200 1.222 7.420 1.571] CP -[7.641 1.920 7.840 2.793 8.017 4.190] CP -[8.193 5.587 8.436 6.344 8.746 6.460] CP -[9.055 6.577 9.342 6.344 9.607 5.762] CP -[9.872 5.180 10.126 5.180 10.369 5.762] CP -[10.612 6.344 10.844 6.518 11.065 6.286] CP -[11.285 6.053 11.628 6.227 12.092 6.809] CP -[12.555 7.391 12.942 7.624 13.251 7.508] CP -[13.560 7.391 13.847 7.100 14.112 6.635] CP -[14.377 6.169 14.631 5.645 14.874 5.063] CP -[15.117 4.481 15.360 4.539 15.603 5.238] CP -[15.846 5.936 16.122 6.460 16.431 6.809] CP -[16.741 7.159 17.050 7.042 17.359 6.460] CP -[17.668 5.878 17.944 5.762 18.187 6.111] CP -[18.430 6.460 18.971 6.635 19.811 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.195 284.183 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[12.682 7.131] CP -[12.388 2.377 12.075 0.162 11.744 0.486] CP -[11.414 0.810 11.119 2.161 10.862 4.538] CP -[10.605 6.915 10.182 9.293 9.594 11.670] CP -[9.006 14.047 8.565 14.804 8.271 13.939] CP -[7.976 13.075 7.719 11.616 7.499 9.563] CP -[7.278 7.510 6.966 5.835 6.561 4.538] CP -[6.157 3.241 5.771 3.457 5.403 5.186] CP -[5.036 6.915 4.778 8.320 4.631 9.401] CP -[4.484 10.481 4.080 10.049 3.418 8.104] CP -[2.757 6.159 2.076 5.511 1.378 6.159] CP -[0.680 6.807 0.220 7.023 0.000 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.574 269.406 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[14.667 8.450] CP -[14.229 8.137 13.864 7.616 13.572 6.885] CP -[13.280 6.155 13.052 5.503 12.888 4.929] CP -[12.724 4.355 12.560 3.547 12.396 2.503] CP -[12.231 1.460 12.022 0.782 11.766 0.469] CP -[11.511 0.156 11.255 0.443 11.000 1.330] CP -[10.745 2.217 10.544 3.156 10.398 4.147] CP -[10.252 5.138 10.133 5.764 10.042 6.025] CP -[9.951 6.286 9.851 6.912 9.741 7.903] CP -[9.632 8.894 9.422 9.989 9.112 11.189] CP -[8.802 12.389 8.565 13.093 8.400 13.302] CP -[8.236 13.511 8.017 13.537 7.744 13.380] CP -[7.470 13.224 7.288 12.963 7.196 12.598] CP -[7.105 12.232 6.950 11.424 6.731 10.172] CP -[6.512 8.920 6.302 7.929 6.102 7.198] CP -[5.901 6.468 5.746 5.790 5.637 5.164] CP -[5.527 4.538 5.399 4.564 5.253 5.242] CP -[5.107 5.920 4.952 6.703 4.788 7.590] CP -[4.624 8.477 4.423 9.103 4.186 9.468] CP -[3.949 9.833 3.776 9.494 3.666 8.450] CP -[3.557 7.407 3.457 6.520 3.365 5.790] CP -[3.274 5.060 3.110 5.060 2.873 5.790] CP -[2.636 6.520 2.426 7.355 2.243 8.294] CP -[2.061 9.233 1.878 9.755 1.696 9.859] CP -[1.514 9.963 1.359 9.624 1.231 8.842] CP -[1.103 8.059 0.903 7.538 0.629 7.277] CP -[0.355 7.016 0.145 7.303 0.000 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.009 249.469 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[19.811 5.936] CP -[19.060 1.978 18.552 0.814 18.287 2.444] CP -[18.022 4.074 17.757 5.529 17.492 6.809] CP -[17.227 8.090 16.995 7.799 16.796 5.936] CP -[16.597 4.074 16.454 2.910 16.365 2.444] CP -[16.277 1.978 16.078 2.793 15.769 4.889] CP -[15.460 6.984 15.239 8.905 15.106 10.651] CP -[14.974 12.397 14.764 12.513 14.477 11.000] CP -[14.190 9.487 13.825 7.450 13.384 4.889] CP -[12.942 2.328 12.611 1.222 12.390 1.571] CP -[12.169 1.920 11.970 2.793 11.793 4.190] CP -[11.617 5.587 11.374 6.344 11.065 6.460] CP -[10.755 6.577 10.468 6.344 10.203 5.762] CP -[9.938 5.180 9.684 5.180 9.441 5.762] CP -[9.198 6.344 8.966 6.518 8.746 6.286] CP -[8.525 6.053 8.182 6.227 7.719 6.809] CP -[7.255 7.391 6.868 7.624 6.559 7.508] CP -[6.250 7.391 5.963 7.100 5.698 6.635] CP -[5.433 6.169 5.179 5.645 4.936 5.063] CP -[4.693 4.481 4.450 4.539 4.207 5.238] CP -[3.964 5.936 3.688 6.460 3.379 6.809] CP -[3.069 7.159 2.760 7.042 2.451 6.460] CP -[2.142 5.878 1.866 5.762 1.623 6.111] CP -[1.380 6.460 0.839 6.635 -0.000 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.830 235.898 0.000 0.000 15.236 12.682 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[12.682 7.131] CP -[12.388 2.377 12.075 0.162 11.744 0.486] CP -[11.414 0.810 11.119 2.161 10.862 4.538] CP -[10.605 6.915 10.182 9.293 9.594 11.670] CP -[9.006 14.047 8.565 14.804 8.271 13.939] CP -[7.976 13.075 7.719 11.616 7.499 9.563] CP -[7.278 7.510 6.966 5.835 6.561 4.538] CP -[6.157 3.241 5.771 3.457 5.403 5.186] CP -[5.036 6.915 4.778 8.320 4.631 9.401] CP -[4.484 10.481 4.080 10.049 3.418 8.104] CP -[2.757 6.159 2.076 5.511 1.378 6.159] CP -[0.680 6.807 0.220 7.023 0.000 6.807] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.209 221.120 0.000 0.000 13.615 14.667 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[14.667 8.450] CP -[14.229 8.137 13.864 7.616 13.572 6.885] CP -[13.280 6.155 13.052 5.503 12.888 4.929] CP -[12.724 4.355 12.560 3.547 12.396 2.503] CP -[12.231 1.460 12.022 0.782 11.766 0.469] CP -[11.511 0.156 11.255 0.443 11.000 1.330] CP -[10.745 2.217 10.544 3.156 10.398 4.147] CP -[10.252 5.138 10.133 5.764 10.042 6.025] CP -[9.951 6.286 9.851 6.912 9.741 7.903] CP -[9.632 8.894 9.422 9.989 9.112 11.189] CP -[8.802 12.389 8.565 13.093 8.400 13.302] CP -[8.236 13.511 8.017 13.537 7.744 13.380] CP -[7.470 13.224 7.288 12.963 7.196 12.598] CP -[7.105 12.232 6.950 11.424 6.731 10.172] CP -[6.512 8.920 6.302 7.929 6.102 7.198] CP -[5.901 6.468 5.746 5.790 5.637 5.164] CP -[5.527 4.538 5.399 4.564 5.253 5.242] CP -[5.108 5.920 4.952 6.703 4.788 7.590] CP -[4.624 8.477 4.423 9.103 4.186 9.468] CP -[3.949 9.833 3.776 9.494 3.666 8.450] CP -[3.557 7.407 3.457 6.520 3.365 5.790] CP -[3.274 5.060 3.110 5.060 2.873 5.790] CP -[2.636 6.520 2.426 7.355 2.243 8.294] CP -[2.061 9.233 1.879 9.755 1.696 9.859] CP -[1.514 9.963 1.359 9.624 1.231 8.842] CP -[1.103 8.059 0.903 7.538 0.629 7.277] CP -[0.355 7.016 0.145 7.303 0.000 8.137] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.558 200.634 0.000 0.000 13.270 19.811 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[19.811 5.936] CP -[19.060 1.978 18.552 0.814 18.287 2.444] CP -[18.022 4.074 17.757 5.529 17.492 6.809] CP -[17.227 8.090 16.995 7.799 16.796 5.936] CP -[16.597 4.074 16.454 2.910 16.365 2.444] CP -[16.277 1.978 16.078 2.793 15.769 4.889] CP -[15.460 6.984 15.239 8.905 15.106 10.651] CP -[14.974 12.397 14.764 12.513 14.477 11.000] CP -[14.190 9.487 13.825 7.450 13.384 4.889] CP -[12.942 2.328 12.611 1.222 12.390 1.571] CP -[12.169 1.920 11.970 2.793 11.793 4.190] CP -[11.617 5.587 11.374 6.344 11.065 6.460] CP -[10.755 6.577 10.468 6.344 10.203 5.762] CP -[9.938 5.180 9.684 5.180 9.441 5.762] CP -[9.198 6.344 8.966 6.518 8.746 6.286] CP -[8.525 6.053 8.182 6.227 7.719 6.809] CP -[7.255 7.391 6.868 7.624 6.559 7.508] CP -[6.250 7.391 5.963 7.100 5.698 6.635] CP -[5.433 6.169 5.179 5.645 4.936 5.063] CP -[4.693 4.481 4.450 4.539 4.207 5.238] CP -[3.964 5.936 3.688 6.460 3.379 6.809] CP -[3.069 7.159 2.760 7.042 2.451 6.460] CP -[2.142 5.878 1.866 5.762 1.623 6.111] CP -[1.380 6.460 0.839 6.635 0.000 6.635] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 117.000 45.000 0.000 0.000 9.000 153.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.000] CP -[18.000 0.000] CP -[153.000 0.000 ] CP -[135.000 9.000 ] CP -[135.000 9.000 0.000 9.000 0.000 9.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 117.000 180.000 0.000 0.000 54.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.000] CP -[18.000 0.000] CP -[18.000 36.000 ] CP -[0.000 54.000 ] CP -[0.000 54.000 0.000 9.000 0.000 9.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 128.326 215.000 0.000 0.000 41.633 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 120.000 269.000 0.000 0.000 49.960 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.326] CP -[18.000 0.000] CP -[18.000 33.306 ] CP -[0.000 49.960 ] CP -[0.000 49.960 0.000 8.326 0.000 8.326] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 120.000 215.000 0.000 0.000 8.326 72.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.326] CP -[18.000 0.000] CP -[72.000 0.000 ] CP -[54.000 8.326 ] CP -[54.000 8.326 0.000 8.326 0.000 8.326] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 138.571 218.576 0.000 0.000 16.000 51.531 rect -%@EndRect -gsave -244.341 146.571 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -24.923 4.000 S -(Q) -14.033 4.000 S -10.000 (_Times-Bold) fess -(U) -3.144 4.000 S -(A) 4.438 4.000 S -(N) 12.021 4.000 S -(T) 19.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -256.000 123.000 moveto -/Triangular 9.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 255.999 120.666 256.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -186.000 143.000 moveto -/Triangular 9.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 188.333 142.999 213.000 143.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.hedit.eps b/HTKBook/HTKFigs/Tool.hedit.eps deleted file mode 100644 index e0081d9..0000000 --- a/HTKBook/HTKFigs/Tool.hedit.eps +++ /dev/null @@ -1,1838 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.hedit.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 7:01:46 a.m. -%%BoundingBox: 44.000 489.237 226.000 762.262 -%%QDBoundingBox: 44.000 29.737 226.000 302.762 -%%DocumentFonts: Times-Bold -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 126.000 45.000 0.000 0.000 90.000 162.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 155.500 105.500 0.000 0.000 20.000 67.551 rect -%@EndRect -gsave -139.275 165.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -33.000 5.000 S -(H) -18.999 5.000 S -(E) -4.998 5.000 S -13.000 (_Times-Bold) fess -(D) 7.007 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 45.000 0.000 0.000 18.000 180.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[27.000 0.000] CP -[180.000 0.000 ] CP -[162.000 18.000 ] CP -[162.000 18.000 0.000 18.000 0.000 18.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 207.000 0.000 0.000 108.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[18.000 0.000] CP -[18.000 90.000] CP -[0.000 108.000 ] CP -[0.000 18.000 ] CP -[0.000 18.000 18.000 0.000 18.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 117.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 113.000 135.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 243.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 239.000 135.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 267.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 239.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 275.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 275.237 109.558 275.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 257.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 256.075 94.758 251.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 275.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 275.237 143.932 275.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 239.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 275.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 275.237 178.306 275.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 257.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 256.075 163.506 251.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 275.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 275.348 78.435 275.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 267.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 66.237 109.558 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 47.075 94.758 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 128.654 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 66.237 143.932 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -128.654 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.755 47.075 129.132 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 66.237 178.306 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 47.075 163.506 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 66.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 66.348 78.435 66.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 269.000 100.000 0.000 0.000 30.000 70.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 269.000 100.000 0.000 0.000 30.000 70.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -139.493 299.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.326 299.237 130.306 299.237 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.labs.eps b/HTKBook/HTKFigs/Tool.labs.eps deleted file mode 100644 index 1f5151e..0000000 --- a/HTKBook/HTKFigs/Tool.labs.eps +++ /dev/null @@ -1,482 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.labs.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:09 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 416 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 416 0 lineto 416 353 lineto closepath clip newpath --179.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Bold ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Bold ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.langmod.eps b/HTKBook/HTKFigs/Tool.langmod.eps deleted file mode 100644 index c356993..0000000 --- a/HTKBook/HTKFigs/Tool.langmod.eps +++ /dev/null @@ -1,2412 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.langmod.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/31/95 10:07:51 p.m. -%%BoundingBox: 71.500 557.500 448.808 781.500 -%%QDBoundingBox: 71.500 10.500 448.808 234.500 -%%DocumentFonts: Times-Bold -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 90.000 180.000 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 81.500 0.000 0.000 53.000 45.110 rect -%@EndRect -gsave -104.055 123.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 -16.000 S -(A) -13.333 -16.000 S -(u) -4.667 -16.000 S -(d) 1.332 -16.000 S -(i) 7.332 -16.000 S -(o) 10.666 -16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 -3.000 S -(W) -13.333 -3.000 S -(a) -2.007 -3.000 S -(v) 3.318 -3.000 S -(e) 9.318 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 10.000 S -(P) -13.333 10.000 S -(a) -6.660 10.000 S -(r) -1.333 10.000 S -(m) 2.662 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.000 23.000 S -(V) -13.333 23.000 S -(Q) -4.667 23.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 135.500 0.000 0.000 14.000 35.982 rect -%@EndRect -gsave -153.491 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 3.000 S -(L) -8.333 3.000 S -(a) -1.003 3.000 S -(b) 4.322 3.000 S -(e) 10.322 3.000 S -(l) 15.648 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 194.500 0.000 0.000 14.000 28.664 rect -%@EndRect -gsave -208.832 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 3.000 S -(L) -4.666 3.000 S -(M) 3.337 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 247.500 0.000 0.000 14.000 25.992 rect -%@EndRect -gsave -260.496 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -12.000 3.000 S -(N) -3.333 3.000 S -(e) 5.332 3.000 S -(t) 10.658 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 297.500 0.000 0.000 27.000 65.996 rect -%@EndRect -gsave -330.498 146.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -32.000 -3.000 S -(M) -23.333 -3.000 S -(o) -12.664 -3.000 S -(d) -6.664 -3.000 S -(e) -0.664 -3.000 S -(l) 4.662 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -32.000 10.000 S -(U) -23.333 10.000 S -(t) -14.667 10.000 S -(i) -11.333 10.000 S -(l) -8.000 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.500 297.500 0.000 0.000 14.000 33.333 rect -%@EndRect -gsave -314.166 178.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(S) -7.333 3.000 S -(h) -0.660 3.000 S -(e) 5.339 3.000 S -(l) 10.666 3.000 S -(l) 14.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 207.500 299.500 0.000 0.000 14.000 30.650 rect -%@EndRect -gsave -314.825 214.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(G) -6.333 3.000 S -(r) 2.332 3.000 S -(a) 6.328 3.000 S -(f) 11.654 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 81.500 0.000 0.000 14.000 33.996 rect -%@EndRect -gsave -98.498 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(M) -7.333 3.000 S -(e) 3.335 3.000 S -(m) 8.662 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 137.500 0.000 0.000 14.000 33.996 rect -%@EndRect -gsave -154.498 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.000 3.000 S -(M) -7.333 3.000 S -(a) 3.335 3.000 S -(t) 8.662 3.000 S -(h) 11.996 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 189.500 0.000 0.000 14.000 34.652 rect -%@EndRect -gsave -206.826 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 3.000 S -(T) -8.333 3.000 S -(r) -1.003 3.000 S -(a) 2.992 3.000 S -(i) 8.318 3.000 S -(n) 11.652 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 246.500 0.000 0.000 14.000 27.322 rect -%@EndRect -gsave -260.161 215.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -13.000 3.000 S -(R) -4.333 3.000 S -(e) 3.669 3.000 S -(c) 8.996 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.500 83.500 0.000 0.000 14.000 31.347 rect -%@EndRect -gsave -99.173 178.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(S) -6.333 3.000 S -(i) 0.339 3.000 S -(g) 3.673 3.000 S -(P) 9.673 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.000 72.000 0.000 0.000 144.000 270.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 234.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 126.000 180.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 126.000 234.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 234.000 288.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 126.000 126.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 198.000 72.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 162.000 72.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 162.000 288.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 81.000 72.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 81.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 81.000 180.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 81.000 234.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.000 81.000 288.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 81.000 342.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 110.000 342.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 142.000 342.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 386.000 175.000 342.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 386.000 206.000 342.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 234.000 180.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 234.000 234.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 81.000 117.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 206.000 387.000 81.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 176.500 0.000 0.000 16.000 58.713 rect -%@EndRect -gsave -205.856 161.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.000 4.000 S -(T) -18.889 4.000 S -(K) -10.337 4.000 S -( ) -0.227 4.000 S -(T) 3.272 4.000 S -(o) 11.824 4.000 S -(o) 18.824 4.000 S -(l) 25.824 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 171.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -405.000 171.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.000 171.000 362.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 207.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -405.000 207.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.000 207.000 362.000 207.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 390.500 0.000 0.000 27.000 54.980 rect -%@EndRect -gsave -417.990 167.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -21.500 -3.000 S -(e) -14.169 -3.000 S -(r) -8.843 -3.000 S -(m) -4.847 -3.000 S -(i) 4.486 -3.000 S -(n) 7.820 -3.000 S -(a) 13.820 -3.000 S -(l) 19.146 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -7.507 10.000 S -(/) -3.511 10.000 S -(O) -0.177 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 189.500 387.500 0.000 0.000 27.000 61.308 rect -%@EndRect -gsave -418.154 203.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -23.000 -3.000 S -(r) -14.333 -3.000 S -(a) -10.337 -3.000 S -(p) -5.011 -3.000 S -(h) 0.988 -3.000 S -(i) 6.988 -3.000 S -(c) 10.322 -3.000 S -(a) 15.648 -3.000 S -(l) 20.974 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -7.343 10.000 S -(/) -3.347 10.000 S -(O) -0.013 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -123.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -123.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 122.999 85.000 123.000 53.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -178.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -178.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.999 85.000 178.000 53.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -287.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.999 85.000 287.000 53.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -403.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.000 53.000 403.000 134.937 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.500 98.500 0.000 0.000 27.000 52.652 rect -%@EndRect -gsave -124.826 37.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.000 -3.000 S -(p) -10.326 -3.000 S -(e) -4.326 -3.000 S -(e) 1.000 -3.000 S -(c) 6.326 -3.000 S -(h) 11.652 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -11.000 10.000 S -(a) -2.333 10.000 S -(t) 2.992 10.000 S -(a) 6.326 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 36.500 161.500 0.000 0.000 14.000 31.986 rect -%@EndRect -gsave -177.493 43.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -15.000 3.000 S -(a) -7.669 3.000 S -(b) -2.343 3.000 S -(e) 3.656 3.000 S -(l) 8.982 3.000 S -(s) 12.316 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.500 201.500 0.000 0.000 27.000 56.308 rect -%@EndRect -gsave -229.654 37.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -25.184 -3.000 S -(a) -17.180 -3.000 S -(n) -11.180 -3.000 S -(g) -4.506 -3.000 S -(u) 1.493 -3.000 S -(a) 8.166 -3.000 S -(g) 14.166 -3.000 S -(e) 20.166 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -16.175 10.000 S -(o) -4.849 10.000 S -(d) 1.150 10.000 S -(e) 7.824 10.000 S -(l) 13.150 10.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.500 252.500 0.000 0.000 40.000 67.998 rect -%@EndRect -gsave -286.499 30.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -19.658 -10.000 S -(a) -12.328 -10.000 S -(t) -7.001 -10.000 S -(t) -3.667 -10.000 S -(i) -0.333 -10.000 S -(c) 3.000 -10.000 S -(e) 8.326 -10.000 S -(s) 13.652 -10.000 S -(/) 18.322 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -24.000 3.000 S -(o) -15.996 3.000 S -(n) -9.996 3.000 S -(s) -3.996 3.000 S -(t) 0.673 3.000 S -(r) 4.007 3.000 S -(a) 8.003 3.000 S -(i) 13.330 3.000 S -(n) 16.664 3.000 S -(t) 22.664 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -19.995 16.000 S -(e) -11.329 16.000 S -(t) -6.002 16.000 S -(w) -2.668 16.000 S -(o) 5.997 16.000 S -(r) 11.997 16.000 S -(k) 15.993 16.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 36.500 313.500 0.000 0.000 14.000 65.994 rect -%@EndRect -gsave -346.497 43.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -24.661 3.000 S -(i) -15.995 3.000 S -(c) -12.661 3.000 S -(t) -7.334 3.000 S -(i) -4.000 3.000 S -(o) -0.666 3.000 S -(n) 5.333 3.000 S -(a) 11.333 3.000 S -(r) 16.659 3.000 S -(y) 20.655 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -345.000 51.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -345.000 87.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 344.999 85.000 345.000 53.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.500 373.500 0.000 0.000 27.000 65.994 rect -%@EndRect -gsave -406.497 37.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.005 -3.000 S -(M) -5.339 -3.000 S -(M) 5.330 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -26.000 10.000 S -(e) -17.333 10.000 S -(f) -12.007 10.000 S -(i) -8.011 10.000 S -(n) -4.677 10.000 S -(i) 1.322 10.000 S -(t) 4.656 10.000 S -(i) 7.990 10.000 S -(o) 11.324 10.000 S -(n) 17.324 10.000 S -(s) 23.324 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 135.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 403.406 135.000 362.000 135.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 301.500 0.000 0.000 14.000 29.326 rect -%@EndRect -gsave -316.163 103.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 3.000 S -(D) -5.333 3.000 S -(i) 3.332 3.000 S -(c) 6.666 3.000 S -(t) 11.992 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 81.000 180.000 0.000 0.000 9.000 99.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.000] CP -[45.000 0.000] CP -[99.000 0.000 ] CP -[54.000 9.000 ] CP -[54.000 9.000 0.000 9.000 0.000 9.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -231.000 51.000 moveto -/Triangular 16.799 8.399 false 90.006 DrawArrowHead -231.000 87.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 230.999 83.000 231.000 55.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/Tool.model.eps b/HTKBook/HTKFigs/Tool.model.eps deleted file mode 100644 index 596031b..0000000 --- a/HTKBook/HTKFigs/Tool.model.eps +++ /dev/null @@ -1,482 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.model.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 416 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 416 0 lineto 416 353 lineto closepath clip newpath --179.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 4895 2574 m - 4895 3166 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 4599 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Bold ff 210.00 scf sf -8937 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.netdict.eps b/HTKBook/HTKFigs/Tool.netdict.eps deleted file mode 100644 index 7884f69..0000000 --- a/HTKBook/HTKFigs/Tool.netdict.eps +++ /dev/null @@ -1,488 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.netdict.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 420 355 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 355 moveto 0 0 lineto 420 0 lineto 420 355 lineto closepath clip newpath --175.0 410.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 4855 2587 m 5810 2587 l 5810 3184 l 4855 3184 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 5810 2587 m 6765 2587 l 6765 3184 l 5810 3184 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6750 2587 m 7705 2587 l 7705 3184 l 6750 3184 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6765 2587 m 7422 2169 l 8377 2169 l 7720 2587 l 6765 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 4855 2587 m 5512 2169 l 6467 2169 l 5810 2587 l 4855 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 5810 2587 m 6467 2169 l 7422 2169 l 6765 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7720 2587 m 8377 2169 l 8377 2766 l 7720 3184 l 7720 2587 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7720 4378 m - 6765 4378 l gs col-1 s gr -% Polyline -n 7720 4974 m - 6765 4974 l gs col-1 s gr -% Polyline -n 7720 3184 m 8377 2766 l 8377 3363 l 7720 3781 l - cp gs col-1 s gr -% Polyline -n 2945 3781 m 3900 3781 l 3900 4378 l 2945 4378 l - cp gs col-1 s gr -% Polyline -n 6765 3781 m 7720 3781 l 7720 4378 l 6765 4378 l - cp gs col-1 s gr -% Polyline -n 7720 3781 m 8377 3363 l 8377 3960 l 7720 4378 l - cp gs col-1 s gr -% Polyline -n 5810 2587 m 6765 2587 l 7422 2169 l 6467 2169 l 5810 2587 l - cp gs col-1 s gr -% Polyline -n 2945 2587 m 3900 2587 l 3900 3781 l 2945 3781 l - cp gs col-1 s gr -% Polyline -n 2945 4378 m 3900 4378 l 3900 4974 l 2945 4974 l - cp gs col-1 s gr -% Polyline -n 2945 2587 m 3602 2169 l 4557 2169 l 3900 2587 l 2945 2587 l - cp gs col-1 s gr -% Polyline -n 3900 2587 m 4855 2587 l 4855 3184 l 3900 3184 l - cp gs col-1 s gr -% Polyline -n 2945 4974 m 3900 4974 l 3900 5571 l 2945 5571 l - cp gs col-1 s gr -% Polyline -n 6765 3781 m - 7720 3781 l gs col-1 s gr -% Polyline -n 6765 3781 m 7720 3781 l 7720 4378 l 6765 4378 l - cp gs col-1 s gr -% Polyline -n 7720 2587 m - 8377 2169 l gs col-1 s gr -% Polyline -n 7720 4378 m - 8377 3960 l gs col-1 s gr -% Polyline -n 7720 3781 m - 8377 3363 l gs col-1 s gr -% Polyline -n 7720 3184 m - 8377 2766 l gs col-1 s gr -% Polyline -n 7720 5571 m - 8377 5154 l gs col-1 s gr -% Polyline -n 6825 3184 m - 3900 3184 l gs col-1 s gr -% Polyline -n 7720 4974 m - 8377 4557 l gs col-1 s gr -% Polyline -n 7720 3781 m 8377 3363 l 8377 3960 l 7720 4378 l 7720 3781 l - cp gs col-1 s gr -% Polyline -n 3900 4974 m - 6765 4974 l gs col-1 s gr -% Polyline -n 6765 3184 m - 6765 5571 l gs col-1 s gr -% Polyline -n 8377 2766 m - 8377 5154 l gs col-1 s gr -% Polyline -n 3900 3184 m - 3900 5571 l gs col-1 s gr -% Polyline -n 3900 4378 m - 2945 4378 l gs col-1 s gr -% Polyline -n 2945 4974 m - 3900 4974 l gs col-1 s gr -% Polyline -n 4855 2587 m - 4855 3184 l gs col-1 s gr -% Polyline -n 2945 2587 m - 3602 2169 l gs col-1 s gr -% Polyline -n 3900 2587 m - 3900 3243 l gs col-1 s gr -% Polyline -n 3900 2587 m - 4557 2169 l gs col-1 s gr -% Polyline -gs clippath -3840 2363 m 3960 2363 l 3960 2076 l 3900 2316 l 3840 2076 l cp -3960 1617 m 3840 1617 l 3840 1904 l 3900 1664 l 3960 1904 l cp -eoclip -n 3900 1632 m - 3900 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3960 1904 m 3900 1664 l 3840 1904 l 3960 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3840 2076 m 3900 2316 l 3960 2076 l 3840 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4795 2363 m 4915 2363 l 4915 2076 l 4855 2316 l 4795 2076 l cp -4915 1617 m 4795 1617 l 4795 1904 l 4855 1664 l 4915 1904 l cp -eoclip -n 4855 1632 m - 4855 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4915 1904 m 4855 1664 l 4795 1904 l 4915 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4795 2076 m 4855 2316 l 4915 2076 l 4795 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5750 2363 m 5870 2363 l 5870 2076 l 5810 2316 l 5750 2076 l cp -5870 1617 m 5750 1617 l 5750 1904 l 5810 1664 l 5870 1904 l cp -eoclip -n 5810 1632 m - 5810 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5870 1904 m 5810 1664 l 5750 1904 l 5870 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5750 2076 m 5810 2316 l 5870 2076 l 5750 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6705 2363 m 6825 2363 l 6825 2076 l 6765 2316 l 6705 2076 l cp -6825 1617 m 6705 1617 l 6705 1904 l 6765 1664 l 6825 1904 l cp -eoclip -n 6765 1632 m - 6765 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6825 1904 m 6765 1664 l 6705 1904 l 6825 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6705 2076 m 6765 2316 l 6825 2076 l 6705 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7660 2363 m 7780 2363 l 7780 2076 l 7720 2316 l 7660 2076 l cp -7780 1617 m 7660 1617 l 7660 1904 l 7720 1664 l 7780 1904 l cp -eoclip -n 7720 1632 m - 7720 2348 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7780 1904 m 7720 1664 l 7660 1904 l 7780 1904 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7660 2076 m 7720 2316 l 7780 2076 l 7660 2076 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 2945 3781 m - 3900 3781 l gs col-1 s gr -% Polyline -n 4855 4974 m - 4855 5571 l gs col-1 s gr -% Polyline -n 5810 4974 m - 5810 5571 l gs col-1 s gr -% Polyline -gs clippath -9153 1617 m 9033 1617 l 9033 1904 l 9093 1664 l 9153 1904 l cp -8064 3183 m 8064 3303 l 8351 3303 l 8111 3243 l 8351 3183 l cp -eoclip -n 8079 3243 m 9093 3243 l - 9093 1632 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8351 3183 m 8111 3243 l 8351 3303 l 8351 3183 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9153 1904 m 9093 1664 l 9033 1904 l 9153 1904 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6228 6303 m 6348 6303 l 6348 6016 l 6288 6256 l 6228 6016 l cp -6348 5556 m 6228 5556 l 6228 5843 l 6288 5603 l 6348 5843 l cp -eoclip -n 6288 5571 m - 6288 6288 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6348 5843 m 6288 5603 l 6228 5843 l 6348 5843 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6228 6016 m 6288 6256 l 6348 6016 l 6228 6016 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5213 6303 m 5333 6303 l 5333 6016 l 5273 6256 l 5213 6016 l cp -5333 5556 m 5213 5556 l 5213 5843 l 5273 5603 l 5333 5843 l cp -eoclip -n 5273 5571 m - 5273 6288 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5333 5843 m 5273 5603 l 5213 5843 l 5333 5843 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5213 6016 m 5273 6256 l 5333 6016 l 5213 6016 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8810 4497 m 8810 4377 l 8523 4377 l 8763 4437 l 8523 4497 l cp -8064 4377 m 8064 4497 l 8351 4497 l 8111 4437 l 8351 4377 l cp -eoclip -n 8079 4437 m - 8795 4437 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8351 4377 m 8111 4437 l 8351 4497 l 8351 4377 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8523 4497 m 8763 4437 l 8523 4377 l 8523 4497 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8810 3900 m 8810 3780 l 8523 3780 l 8763 3840 l 8523 3900 l cp -8064 3780 m 8064 3900 l 8351 3900 l 8111 3840 l 8351 3780 l cp -eoclip -n 8079 3840 m - 8795 3840 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8351 3780 m 8111 3840 l 8351 3900 l 8351 3780 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8523 3900 m 8763 3840 l 8523 3780 l 8523 3900 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 2945 4378 m 3900 4378 l 3900 4974 l 2945 4974 l - cp gs col-1 s gr -% Polyline -n 2945 4974 m 3900 4974 l 3900 5571 l 2945 5571 l - cp gs col-1 s gr -% Polyline -n 6765 3184 m 7720 3184 l 7720 3781 l 6765 3781 l - cp gs col-1 s gr -% Polyline -n 2945 2587 m 7720 2587 l 7720 5571 l 2945 5571 l - cp gs col-1 s gr -% Polyline -n 4200 2175 m - 5550 2175 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -7004 5333 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8855 1273 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8735 1453 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9034 3840 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9034 4437 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5989 6586 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5094 6586 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5034 6765 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5034 4139 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3557 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3378 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3199 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 3020 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4064 2945 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 3422 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 3661 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 4139 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6929 4736 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5974 5333 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5079 5333 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4049 5333 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 5333 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 4736 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3109 4139 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9288 4019 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9288 4616 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3646 1273 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3706 1453 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4526 1453 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Bold ff 210.00 scf sf -5079 2945 m -gs 1 -1 sc (HLM) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6034 2945 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6929 2945 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Bold ff 210.00 scf sf -5421 1273 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Bold ff 210.00 scf sf -5556 1453 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6527 1094 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6467 1273 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6527 1453 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Bold ff 210.00 scf sf -7497 1453 m -gs 1 -1 sc (Dictionary) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.shell.eps b/HTKBook/HTKFigs/Tool.shell.eps deleted file mode 100644 index 395fa2e..0000000 --- a/HTKBook/HTKFigs/Tool.shell.eps +++ /dev/null @@ -1,488 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.shell.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 419 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 419 0 lineto 419 353 lineto closepath clip newpath --178.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 4895 2574 m - 4895 3166 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 4599 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Bold ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Bold ff 210.00 scf sf -9367 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Bold ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.spio.eps b/HTKBook/HTKFigs/Tool.spio.eps deleted file mode 100644 index 1980126..0000000 --- a/HTKBook/HTKFigs/Tool.spio.eps +++ /dev/null @@ -1,482 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: Tool.spio.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 417 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 417 0 lineto 417 353 lineto closepath clip newpath --178.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 4895 2574 m - 4895 3166 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 4599 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3947 4000 m - 3947 5200 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Bold ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/Tool.train.eps b/HTKBook/HTKFigs/Tool.train.eps deleted file mode 100644 index 63be010..0000000 --- a/HTKBook/HTKFigs/Tool.train.eps +++ /dev/null @@ -1,3212 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: Tool.train.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:6/24/95 8:44:01 a.m. -%%BoundingBox: 44.000 500.262 390.797 762.262 -%%QDBoundingBox: 44.000 29.737 390.797 291.737 -%%DocumentFonts: Times-Bold -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=T tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet - - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 126.000 45.000 0.000 0.000 90.000 162.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.500 61.500 0.000 0.000 39.000 132.551 rect -%@EndRect -gsave -127.775 166.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -66.000 -4.000 S -(C) -51.999 -4.000 S -13.000 (_Times-Bold) fess -(O) -39.000 -4.000 S -(M) -28.499 -4.000 S -(P) -15.757 -4.000 S -18.000 (_Times-Bold) fess -(V) -7.510 -4.000 S -( ) 5.488 -4.000 S -(/) 9.988 -4.000 S -( ) 14.989 -4.000 S -(H) 19.489 -4.000 S -(I) 33.489 -4.000 S -13.000 (_Times-Bold) fess -(N) 40.494 -4.000 S -(I) 50.244 -4.000 S -(T) 55.497 -4.000 S -18.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -66.000 15.000 S -(R) -51.999 15.000 S -13.000 (_Times-Bold) fess -(E) -39.000 15.000 S -(S) -29.995 15.000 S -(T) -22.487 15.000 S -18.000 (_Times-Bold) fess -( ) -13.483 15.000 S -(/) -8.983 15.000 S -( ) -3.982 15.000 S -(H) 0.517 15.000 S -(E) 14.518 15.000 S -(R) 26.524 15.000 S -13.000 (_Times-Bold) fess -(E) 39.523 15.000 S -(S) 48.528 15.000 S -(T) 56.036 15.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 45.000 0.000 0.000 18.000 180.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[27.000 0.000] CP -[180.000 0.000 ] CP -[162.000 18.000 ] CP -[162.000 18.000 0.000 18.000 0.000 18.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -2.000 0 108.000 207.000 0.000 0.000 108.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[18.000 0.000] CP -[18.000 90.000] CP -[0.000 108.000 ] CP -[0.000 18.000 ] CP -[0.000 18.000 18.000 0.000 18.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 117.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 113.000 135.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -135.000 243.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 134.999 239.000 135.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -217.000 159.000 moveto -/Triangular 16.799 8.399 false 320.500 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 220.085 156.454 257.000 126.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 246.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 273.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 282.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 282.237 109.558 282.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 264.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 263.075 94.758 258.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 246.237 128.654 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 273.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 282.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 282.237 143.932 282.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -128.654 264.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.755 263.075 129.132 258.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 246.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 273.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 282.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 282.237 178.306 282.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 264.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 263.075 163.506 258.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 282.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 282.348 78.435 282.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 64.500 0.000 0.000 15.000 13.935 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 94.280 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 92.370 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.745 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.578 66.237 109.558 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.280 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.381 47.075 94.758 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 128.654 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 126.745 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.119 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.952 66.237 143.932 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -128.654 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.755 47.075 129.132 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 30.237 163.029 0.000 0.000 31.500 12.890 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.237 161.119 0.000 0.000 17.999 17.187 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.493 66.237 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.326 66.237 178.306 66.237 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -163.029 48.237 moveto -/Triangular 8.224 7.049 false 274.980 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.129 47.075 163.506 42.737 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -92.370 66.348 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.204 66.348 78.435 66.348 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.570 194.564 0.000 0.000 15.000 13.935 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.096 246.000 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 50.571 261.491 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.920 279.405 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.096 303.245 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.708] CP -[0.356 2.236 0.734 0.152 1.135 0.457] CP -[1.535 0.762 1.891 2.032 2.203 4.269] CP -[2.515 6.505 3.027 8.741 3.739 10.978] CP -[4.451 13.214 4.985 13.925 5.341 13.112] CP -[5.698 12.299 6.009 10.927 6.276 8.995] CP -[6.543 7.064 6.922 5.489 7.411 4.269] CP -[7.901 3.049 8.369 3.252 8.814 4.879] CP -[9.259 6.505 9.570 7.826 9.748 8.843] CP -[9.927 9.859 10.416 9.453 11.218 7.623] CP -[12.019 5.793 12.842 5.184 13.688 5.793] CP -[14.534 6.403 15.090 6.607 15.358 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 50.571 318.736 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.949] CP -[0.530 7.655 0.972 7.164 1.325 6.477] CP -[1.678 5.790 1.955 5.177 2.153 4.637] CP -[2.352 4.097 2.551 3.336 2.750 2.355] CP -[2.949 1.374 3.203 0.736 3.512 0.441] CP -[3.821 0.147 4.131 0.417 4.440 1.251] CP -[4.749 2.085 4.992 2.968 5.169 3.901] CP -[5.346 4.833 5.489 5.422 5.600 5.667] CP -[5.710 5.913 5.832 6.501 5.964 7.434] CP -[6.097 8.366 6.351 9.397 6.726 10.525] CP -[7.102 11.654 7.389 12.316 7.588 12.513] CP -[7.787 12.709 8.052 12.734 8.383 12.586] CP -[8.715 12.439 8.936 12.194 9.046 11.850] CP -[9.157 11.507 9.344 10.746 9.609 9.568] CP -[9.875 8.391 10.129 7.458 10.372 6.771] CP -[10.615 6.084 10.802 5.446 10.935 4.858] CP -[11.068 4.269 11.222 4.293 11.399 4.931] CP -[11.576 5.569 11.763 6.305 11.962 7.139] CP -[12.161 7.974 12.404 8.563 12.691 8.906] CP -[12.978 9.250 13.188 8.931 13.321 7.949] CP -[13.453 6.968 13.575 6.133 13.685 5.446] CP -[13.796 4.759 13.995 4.759 14.282 5.446] CP -[14.569 6.133 14.823 6.919 15.044 7.802] CP -[15.265 8.685 15.486 9.176 15.707 9.274] CP -[15.928 9.372 16.116 9.053 16.270 8.317] CP -[16.425 7.581 16.668 7.090 16.999 6.845] CP -[17.331 6.600 17.585 6.870 17.761 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.920 336.650 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.584] CP -[0.909 1.861 1.524 0.766 1.845 2.299] CP -[2.166 3.832 2.487 5.201 2.808 6.405] CP -[3.129 7.610 3.410 7.336 3.650 5.584] CP -[3.891 3.832 4.065 2.737 4.172 2.299] CP -[4.279 1.861 4.520 2.628 4.894 4.599] CP -[5.268 6.570 5.536 8.376 5.696 10.019] CP -[5.857 11.662 6.111 11.771 6.459 10.347] CP -[6.806 8.924 7.248 7.008 7.783 4.599] CP -[8.317 2.190 8.719 1.149 8.986 1.478] CP -[9.254 1.806 9.494 2.628 9.708 3.942] CP -[9.922 5.256 10.216 5.967 10.591 6.077] CP -[10.965 6.186 11.313 5.967 11.634 5.420] CP -[11.955 4.872 12.262 4.872 12.557 5.420] CP -[12.851 5.967 13.132 6.132 13.399 5.913] CP -[13.667 5.694 14.081 5.858 14.643 6.405] CP -[15.205 6.953 15.673 7.172 16.047 7.062] CP -[16.421 6.953 16.769 6.679 17.090 6.241] CP -[17.411 5.803 17.719 5.310 18.013 4.763] CP -[18.307 4.215 18.601 4.270 18.895 4.927] CP -[19.190 5.584 19.524 6.077 19.898 6.405] CP -[20.273 6.734 20.647 6.624 21.022 6.077] CP -[21.396 5.529 21.731 5.420 22.025 5.748] CP -[22.319 6.077 22.974 6.241 23.991 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 35.500 245.500 0.000 0.000 12.000 107.504 rect -%@EndRect -gsave -299.252 41.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -53.000 3.000 S -(h) -50.221 3.000 S -( ) -45.221 3.000 S -( ) -42.721 3.000 S -( ) -40.221 3.000 S -(i) -37.721 3.000 S -(h) -34.943 3.000 S -( ) -29.943 3.000 S -( ) -27.443 3.000 S -(s) -24.943 3.000 S -( ) -21.051 3.000 S -( ) -18.551 3.000 S -(i) -16.051 3.000 S -(h) -13.273 3.000 S -( ) -8.273 3.000 S -( ) -5.773 3.000 S -(z) -3.273 3.000 S -( ) 1.165 3.000 S -( ) 3.665 3.000 S -(s) 6.165 3.000 S -( ) 10.056 3.000 S -( ) 12.556 3.000 S -(p) 15.056 3.000 S -( ) 20.056 3.000 S -( ) 22.556 3.000 S -(i) 25.056 3.000 S -(y) 27.834 3.000 S -( ) 32.834 3.000 S -( ) 35.334 3.000 S -(t) 37.834 3.000 S -( ) 40.613 3.000 S -( ) 43.113 3.000 S -(s) 45.613 3.000 S -(h) 49.504 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 97.096 345.283 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[15.358 6.708] CP -[15.001 2.236 14.623 0.152 14.222 0.457] CP -[13.822 0.762 13.466 2.032 13.154 4.269] CP -[12.842 6.505 12.330 8.741 11.618 10.978] CP -[10.906 13.214 10.372 13.925 10.016 13.112] CP -[9.659 12.299 9.348 10.927 9.081 8.995] CP -[8.814 7.064 8.435 5.489 7.946 4.269] CP -[7.456 3.049 6.988 3.252 6.543 4.879] CP -[6.098 6.505 5.787 7.826 5.609 8.843] CP -[5.430 9.859 4.941 9.453 4.139 7.623] CP -[3.338 5.793 2.515 5.184 1.669 5.793] CP -[0.823 6.403 0.267 6.607 0.000 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 95.571 327.388 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.761 7.949] CP -[17.231 7.655 16.789 7.164 16.436 6.477] CP -[16.082 5.790 15.806 5.177 15.607 4.637] CP -[15.409 4.097 15.210 3.336 15.011 2.355] CP -[14.812 1.374 14.558 0.736 14.249 0.441] CP -[13.939 0.147 13.630 0.417 13.321 1.251] CP -[13.012 2.085 12.769 2.968 12.592 3.901] CP -[12.415 4.833 12.272 5.422 12.161 5.667] CP -[12.051 5.913 11.929 6.501 11.797 7.434] CP -[11.664 8.366 11.410 9.397 11.034 10.525] CP -[10.659 11.654 10.372 12.316 10.173 12.513] CP -[9.974 12.709 9.709 12.734 9.377 12.586] CP -[9.046 12.439 8.825 12.194 8.715 11.850] CP -[8.604 11.507 8.416 10.746 8.151 9.568] CP -[7.886 8.391 7.632 7.458 7.389 6.771] CP -[7.146 6.084 6.958 5.446 6.826 4.858] CP -[6.693 4.269 6.539 4.293 6.362 4.931] CP -[6.185 5.569 5.997 6.305 5.799 7.139] CP -[5.600 7.974 5.357 8.563 5.070 8.906] CP -[4.782 9.250 4.573 8.931 4.440 7.949] CP -[4.307 6.968 4.186 6.133 4.075 5.446] CP -[3.965 4.759 3.766 4.759 3.479 5.446] CP -[3.192 6.133 2.938 6.919 2.717 7.802] CP -[2.496 8.685 2.275 9.176 2.054 9.274] CP -[1.833 9.372 1.645 9.053 1.491 8.317] CP -[1.336 7.581 1.093 7.090 0.762 6.845] CP -[0.430 6.600 0.176 6.870 0.000 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.920 303.245 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[23.991 5.584] CP -[23.081 1.861 22.466 0.766 22.145 2.299] CP -[21.824 3.832 21.503 5.201 21.182 6.405] CP -[20.861 7.610 20.580 7.336 20.340 5.584] CP -[20.099 3.832 19.925 2.737 19.818 2.299] CP -[19.711 1.861 19.470 2.628 19.096 4.599] CP -[18.722 6.570 18.454 8.376 18.294 10.019] CP -[18.133 11.662 17.879 11.771 17.531 10.347] CP -[17.184 8.924 16.742 7.008 16.207 4.599] CP -[15.673 2.190 15.271 1.149 15.004 1.478] CP -[14.736 1.806 14.496 2.628 14.282 3.942] CP -[14.068 5.256 13.774 5.967 13.399 6.077] CP -[13.025 6.186 12.677 5.967 12.356 5.420] CP -[12.035 4.872 11.728 4.872 11.433 5.420] CP -[11.139 5.967 10.858 6.132 10.591 5.913] CP -[10.323 5.694 9.909 5.858 9.347 6.405] CP -[8.786 6.953 8.317 7.172 7.943 7.062] CP -[7.569 6.953 7.221 6.679 6.900 6.241] CP -[6.579 5.803 6.271 5.310 5.977 4.763] CP -[5.683 4.215 5.389 4.270 5.095 4.927] CP -[4.800 5.584 4.466 6.077 4.092 6.405] CP -[3.717 6.734 3.343 6.624 2.968 6.077] CP -[2.594 5.529 2.260 5.420 1.965 5.748] CP -[1.671 6.077 1.016 6.241 -0.000 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 97.096 288.038 0.000 0.000 14.332 15.358 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[15.358 6.708] CP -[15.001 2.236 14.623 0.152 14.222 0.457] CP -[13.822 0.762 13.466 2.032 13.154 4.269] CP -[12.842 6.505 12.330 8.741 11.618 10.978] CP -[10.906 13.214 10.372 13.925 10.016 13.112] CP -[9.659 12.299 9.348 10.927 9.081 8.995] CP -[8.814 7.064 8.435 5.489 7.946 4.269] CP -[7.456 3.049 6.988 3.252 6.543 4.879] CP -[6.098 6.505 5.787 7.826 5.609 8.843] CP -[5.430 9.859 4.941 9.453 4.139 7.623] CP -[3.338 5.793 2.515 5.184 1.669 5.793] CP -[0.823 6.403 0.267 6.607 0.000 6.403] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 95.571 270.142 0.000 0.000 12.807 17.761 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.761 7.949] CP -[17.231 7.655 16.789 7.164 16.436 6.477] CP -[16.082 5.790 15.806 5.177 15.607 4.637] CP -[15.409 4.097 15.210 3.336 15.011 2.355] CP -[14.812 1.374 14.558 0.736 14.249 0.441] CP -[13.939 0.147 13.630 0.417 13.321 1.251] CP -[13.012 2.085 12.769 2.968 12.592 3.901] CP -[12.415 4.833 12.272 5.422 12.161 5.667] CP -[12.051 5.913 11.929 6.501 11.797 7.434] CP -[11.664 8.366 11.410 9.397 11.034 10.525] CP -[10.659 11.654 10.372 12.316 10.173 12.513] CP -[9.974 12.709 9.709 12.734 9.378 12.586] CP -[9.046 12.439 8.825 12.194 8.715 11.850] CP -[8.604 11.507 8.417 10.746 8.151 9.568] CP -[7.886 8.391 7.632 7.458 7.389 6.771] CP -[7.146 6.084 6.958 5.446 6.826 4.858] CP -[6.693 4.269 6.539 4.293 6.362 4.931] CP -[6.185 5.569 5.997 6.305 5.799 7.139] CP -[5.600 7.974 5.357 8.563 5.070 8.906] CP -[4.782 9.250 4.573 8.931 4.440 7.949] CP -[4.307 6.968 4.186 6.133 4.075 5.446] CP -[3.965 4.759 3.766 4.759 3.479 5.446] CP -[3.192 6.133 2.938 6.919 2.717 7.802] CP -[2.496 8.685 2.275 9.176 2.054 9.274] CP -[1.833 9.372 1.645 9.053 1.491 8.317] CP -[1.336 7.581 1.093 7.090 0.762 6.845] CP -[0.430 6.600 0.176 6.870 0.000 7.655] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.920 246.000 0.000 0.000 12.483 23.991 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[23.991 5.584] CP -[23.081 1.861 22.466 0.766 22.145 2.299] CP -[21.824 3.832 21.503 5.201 21.182 6.405] CP -[20.861 7.610 20.580 7.336 20.340 5.584] CP -[20.099 3.832 19.925 2.737 19.818 2.299] CP -[19.711 1.861 19.470 2.628 19.096 4.599] CP -[18.722 6.570 18.454 8.376 18.294 10.019] CP -[18.133 11.662 17.879 11.771 17.531 10.347] CP -[17.184 8.924 16.742 7.008 16.207 4.599] CP -[15.673 2.190 15.271 1.149 15.004 1.478] CP -[14.736 1.806 14.496 2.628 14.282 3.942] CP -[14.068 5.256 13.774 5.967 13.399 6.077] CP -[13.025 6.186 12.677 5.967 12.356 5.420] CP -[12.035 4.872 11.728 4.872 11.433 5.420] CP -[11.139 5.967 10.858 6.132 10.591 5.913] CP -[10.323 5.694 9.909 5.858 9.347 6.405] CP -[8.786 6.953 8.317 7.172 7.943 7.062] CP -[7.569 6.953 7.221 6.679 6.900 6.241] CP -[6.579 5.803 6.271 5.310 5.977 4.763] CP -[5.683 4.215 5.389 4.270 5.095 4.927] CP -[4.800 5.584 4.466 6.077 4.092 6.405] CP -[3.717 6.734 3.343 6.624 2.968 6.077] CP -[2.594 5.529 2.260 5.420 1.965 5.748] CP -[1.671 6.077 1.016 6.241 0.000 6.241] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 80.500 247.500 0.000 0.000 12.000 105.004 rect -%@EndRect -gsave -300.002 86.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -52.000 3.000 S -(h) -48.108 3.000 S -( ) -43.108 3.000 S -( ) -40.608 3.000 S -(t) -38.108 3.000 S -( ) -35.330 3.000 S -( ) -32.830 3.000 S -(i) -30.330 3.000 S -(y) -27.551 3.000 S -( ) -22.551 3.000 S -( ) -20.051 3.000 S -(p) -17.551 3.000 S -( ) -12.551 3.000 S -( ) -10.051 3.000 S -(s) -7.551 3.000 S -( ) -3.660 3.000 S -( ) -1.160 3.000 S -(z) 1.339 3.000 S -( ) 5.778 3.000 S -( ) 8.278 3.000 S -(i) 10.778 3.000 S -(h) 13.556 3.000 S -( ) 18.556 3.000 S -( ) 21.056 3.000 S -(s) 23.556 3.000 S -( ) 27.448 3.000 S -( ) 29.948 3.000 S -(i) 32.448 3.000 S -(h) 35.226 3.000 S -( ) 40.226 3.000 S -( ) 42.726 3.000 S -(t) 45.226 3.000 S -(h) 48.004 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 173.560 245.702 0.000 0.000 12.082 13.105 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 5.655] CP -[0.303 1.885 0.626 0.128 0.968 0.385] CP -[1.310 0.642 1.614 1.713 1.880 3.599] CP -[2.146 5.484 2.583 7.369 3.190 9.254] CP -[3.798 11.139 4.254 11.739 4.558 11.054] CP -[4.862 10.368 5.128 9.211 5.355 7.583] CP -[5.583 5.955 5.906 4.627 6.324 3.599] CP -[6.742 2.570 7.141 2.742 7.521 4.113] CP -[7.901 5.484 8.166 6.598 8.318 7.455] CP -[8.470 8.312 8.888 7.969 9.572 6.426] CP -[10.256 4.884 10.958 4.370 11.680 4.884] CP -[12.402 5.398 12.877 5.569 13.105 5.398] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 172.275 258.921 0.000 0.000 10.797 15.156 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.701] CP -[0.452 6.453 0.829 6.039 1.131 5.460] CP -[1.432 4.881 1.668 4.364 1.838 3.909] CP -[2.007 3.454 2.177 2.813 2.346 1.985] CP -[2.516 1.158 2.733 0.620 2.997 0.372] CP -[3.261 0.124 3.525 0.351 3.789 1.054] CP -[4.052 1.758 4.260 2.502 4.411 3.288] CP -[4.561 4.074 4.684 4.571 4.778 4.778] CP -[4.873 4.984 4.976 5.481 5.089 6.267] CP -[5.202 7.053 5.419 7.922 5.740 8.873] CP -[6.060 9.824 6.305 10.383 6.475 10.548] CP -[6.645 10.714 6.871 10.735 7.154 10.610] CP -[7.436 10.486 7.625 10.280 7.719 9.990] CP -[7.813 9.700 7.974 9.059 8.200 8.066] CP -[8.426 7.073 8.643 6.287 8.850 5.708] CP -[9.057 5.129 9.218 4.591 9.331 4.095] CP -[9.444 3.599 9.576 3.619 9.727 4.157] CP -[9.878 4.695 10.038 5.315 10.207 6.019] CP -[10.377 6.722 10.584 7.218 10.830 7.508] CP -[11.075 7.797 11.254 7.529 11.367 6.701] CP -[11.480 5.874 11.584 5.171 11.678 4.591] CP -[11.772 4.012 11.942 4.012 12.187 4.591] CP -[12.432 5.171 12.649 5.832 12.837 6.577] CP -[13.026 7.322 13.214 7.735 13.403 7.818] CP -[13.591 7.901 13.751 7.632 13.883 7.011] CP -[14.015 6.391 14.223 5.977 14.505 5.770] CP -[14.788 5.564 15.005 5.791 15.156 6.453] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 174.184 274.285 0.000 0.000 8.959 16.265 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.886] CP -[0.956 1.628] CP -[1.913 8.959 ] CP -[2.870 0.000 ] CP -[3.827 8.959 ] CP -[4.783 0.814 ] CP -[5.740 8.959 ] CP -[6.697 0.000 ] CP -[7.654 8.959 ] CP -[8.611 0.000 ] CP -[9.567 8.959 ] CP -[10.524 0.814 ] CP -[11.481 8.959 ] CP -[12.438 2.443 ] CP -[13.395 8.144 ] CP -[14.351 3.257 ] CP -[15.308 6.515 ] CP -[16.265 4.886 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.957 290.461 0.000 0.000 3.549 14.295 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 0.968] CP -[0.234 0.645] CP -[0.234 0.322 ] CP -[0.468 0.322 ] CP -[0.468 0.000 ] CP -[0.703 0.000 ] CP -[0.703 0.322 ] CP -[0.937 0.322 ] CP -[1.171 0.645 ] CP -[1.406 0.645 ] CP -[1.406 0.968 ] CP -[1.640 0.968 ] CP -[1.874 0.968 ] CP -[1.874 1.290 ] CP -[2.109 1.290 ] CP -[2.109 1.613 ] CP -[2.109 1.936 ] CP -[2.343 2.581 ] CP -[2.577 2.581 ] CP -[2.812 2.581 ] CP -[3.046 2.581 ] CP -[3.280 2.581 ] CP -[3.515 2.581 ] CP -[3.749 2.259 ] CP -[3.749 1.936 ] CP -[3.984 1.936 ] CP -[3.984 1.613 ] CP -[4.218 1.613 ] CP -[4.218 1.290 ] CP -[4.452 1.290 ] CP -[4.687 1.290 ] CP -[5.390 1.290 ] CP -[5.624 1.613 ] CP -[5.624 1.936 ] CP -[5.858 1.936 ] CP -[5.858 2.259 ] CP -[6.093 2.259 ] CP -[6.093 2.581 ] CP -[6.327 2.581 ] CP -[6.561 2.581 ] CP -[6.561 2.904 ] CP -[6.796 2.904 ] CP -[6.796 2.581 ] CP -[6.796 2.259 ] CP -[7.030 1.936 ] CP -[7.030 2.259 ] CP -[7.265 2.259 ] CP -[7.265 2.581 ] CP -[7.499 2.581 ] CP -[7.499 2.904 ] CP -[7.733 2.904 ] CP -[7.733 3.227 ] CP -[7.968 3.227 ] CP -[8.202 3.227 ] CP -[8.436 2.904 ] CP -[8.436 2.581 ] CP -[8.436 2.259 ] CP -[8.671 2.259 ] CP -[8.905 2.259 ] CP -[8.905 1.936 ] CP -[9.139 1.936 ] CP -[9.374 1.936 ] CP -[9.608 1.936 ] CP -[9.842 1.936 ] CP -[10.077 1.936 ] CP -[10.077 2.259 ] CP -[10.311 2.581 ] CP -[10.311 2.904 ] CP -[10.546 2.904 ] CP -[10.546 3.227 ] CP -[10.780 3.227 ] CP -[10.780 3.549 ] CP -[11.014 3.549 ] CP -[11.249 3.549 ] CP -[11.483 3.549 ] CP -[11.483 3.227 ] CP -[11.483 2.904 ] CP -[11.483 2.581 ] CP -[11.483 2.259 ] CP -[11.483 1.936 ] CP -[11.483 1.613 ] CP -[11.483 1.290 ] CP -[11.483 0.968 ] CP -[11.717 0.968 ] CP -[11.952 0.968 ] CP -[12.420 0.645 ] CP -[12.655 0.645 ] CP -[12.655 0.968 ] CP -[12.655 1.290 ] CP -[12.889 1.290 ] CP -[13.123 1.290 ] CP -[13.123 1.613 ] CP -[13.123 1.936 ] CP -[13.358 1.936 ] CP -[13.592 1.936 ] CP -[13.592 2.259 ] CP -[13.826 2.259 ] CP -[14.061 2.259 ] CP -[14.295 2.259 ] CP -[14.295 1.936 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.203 305.048 0.000 0.000 10.523 20.471 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.707] CP -[0.775 1.569 1.300 0.646 1.574 1.938] CP -[1.848 3.230 2.122 4.384 2.396 5.400] CP -[2.670 6.415 2.909 6.184 3.115 4.707] CP -[3.320 3.230 3.469 2.307 3.560 1.938] CP -[3.651 1.569 3.857 2.215 4.176 3.877] CP -[4.496 5.538 4.724 7.061 4.861 8.446] CP -[4.998 9.831 5.214 9.923 5.511 8.723] CP -[5.808 7.523 6.184 5.908 6.641 3.877] CP -[7.097 1.846 7.440 0.969 7.668 1.246] CP -[7.896 1.523 8.101 2.215 8.284 3.323] CP -[8.467 4.430 8.718 5.031 9.037 5.123] CP -[9.357 5.215 9.653 5.031 9.927 4.569] CP -[10.201 4.107 10.464 4.107 10.715 4.569] CP -[10.966 5.031 11.205 5.169 11.434 4.984] CP -[11.662 4.800 12.016 4.938 12.495 5.400] CP -[12.974 5.861 13.373 6.046 13.693 5.954] CP -[14.012 5.861 14.309 5.631 14.583 5.261] CP -[14.857 4.892 15.119 4.477 15.370 4.015] CP -[15.621 3.554 15.873 3.600 16.124 4.154] CP -[16.375 4.707 16.660 5.123 16.979 5.400] CP -[17.299 5.677 17.618 5.584 17.938 5.123] CP -[18.257 4.661 18.543 4.569 18.794 4.846] CP -[19.045 5.123 19.604 5.261 20.471 5.261] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 173.092 325.656 0.000 0.000 15.632 13.573 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 7.317] CP -[0.314 2.439 0.649 0.166 1.003 0.498] CP -[1.357 0.831 1.672 2.217 1.947 4.656] CP -[2.222 7.095 2.675 9.534 3.304 11.973] CP -[3.934 14.412 4.406 15.188 4.721 14.302] CP -[5.036 13.415 5.311 11.918 5.547 9.811] CP -[5.783 7.705 6.118 5.986 6.550 4.656] CP -[6.983 3.326 7.396 3.547 7.790 5.321] CP -[8.183 7.095 8.459 8.536 8.616 9.645] CP -[8.773 10.754 9.206 10.310 9.914 8.315] CP -[10.622 6.319 11.350 5.654 12.098 6.319] CP -[12.845 6.984 13.337 7.206 13.573 6.984] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 174.060 339.372 0.000 0.000 13.050 13.573 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 6.108] CP -[0.314 2.036 0.649 0.138 1.003 0.416] CP -[1.357 0.694 1.672 1.851 1.947 3.887] CP -[2.222 5.923 2.675 7.959 3.304 9.996] CP -[3.934 12.032 4.406 12.680 4.721 11.939] CP -[5.036 11.199 5.311 9.949 5.547 8.191] CP -[5.783 6.432 6.118 4.998 6.550 3.887] CP -[6.983 2.776 7.396 2.961 7.790 4.442] CP -[8.183 5.923 8.459 7.126 8.616 8.052] CP -[8.773 8.978 9.206 8.607 9.914 6.941] CP -[10.622 5.275 11.350 4.720 12.098 5.275] CP -[12.845 5.831 13.337 6.016 13.573 5.831] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 174.789 353.556 0.000 0.000 10.947 12.636 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.124] CP -[0.293 1.708 0.604 0.116 0.933 0.349] CP -[1.263 0.582 1.556 1.552 1.813 3.261] CP -[2.069 4.969 2.490 6.677 3.076 8.385] CP -[3.662 10.093 4.102 10.637 4.395 10.015] CP -[4.688 9.394 4.944 8.346 5.164 6.871] CP -[5.384 5.396 5.695 4.192 6.098 3.261] CP -[6.501 2.329 6.885 2.484 7.252 3.726] CP -[7.618 4.969 7.874 5.978 8.021 6.754] CP -[8.167 7.531 8.570 7.220 9.230 5.823] CP -[9.889 4.425 10.566 3.959 11.262 4.425] CP -[11.958 4.891 12.416 5.046 12.636 4.891] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.535 366.393 0.000 0.000 8.061 23.904 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[23.904 3.908] CP -[23.673 3.231 23.683 2.262 23.312 2.171] CP -[23.149 2.132 23.092 2.498 22.989 2.791] CP -[22.705 3.599 22.817 4.545 22.450 5.149] CP -[22.225 5.518 22.018 5.557 21.750 5.397] CP -[21.519 5.258 21.439 4.908 21.266 4.528] CP -[20.963 3.867 20.924 3.159 20.566 2.667] CP -[20.400 2.439 20.262 2.261 20.081 2.419] CP -[19.547 2.885 19.689 4.398 19.220 5.149] CP -[18.898 5.664 18.638 5.909 18.251 5.769] CP -[17.382 5.456 17.003 4.314 16.366 2.916] CP -[16.160 2.461 16.193 1.835 15.936 1.551] CP -[15.556 1.133 15.236 1.248 14.859 1.675] CP -[14.511 2.068 14.400 2.631 14.213 3.412] CP -[13.872 4.831 14.232 6.393 13.674 7.382] CP -[13.291 8.061 12.884 7.927 12.436 7.506] CP -[12.037 7.130 11.938 6.444 11.682 5.645] CP -[11.582 5.331 11.574 5.079 11.467 4.776] CP -[11.308 4.324 11.109 4.288 10.983 3.784] CP -[10.778 2.971 11.013 2.176 10.767 1.427] CP -[10.495 0.598 10.188 0.000 9.744 0.186] CP -[8.779 0.593 8.738 2.859 8.075 4.528] CP -[7.724 5.412 7.622 6.214 7.160 6.761] CP -[6.745 7.252 6.428 7.389 5.976 7.134] CP -[5.376 6.795 5.180 5.870 4.683 5.025] CP -[4.406 4.553 4.272 4.218 3.984 3.784] CP -[3.582 3.179 3.371 2.694 2.907 2.419] CP -[2.500 2.179 2.240 2.207 1.830 2.419] CP -[1.399 2.642 1.226 3.216 0.807 3.536] CP -[0.502 3.769 0.314 3.763 0.000 3.908] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 152.500 248.500 0.000 0.000 12.000 138.051 rect -%@EndRect -gsave -317.525 158.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -69.000 3.000 S -( ) -64.561 3.000 S -( ) -62.061 3.000 S -(b) -59.561 3.000 S -( ) -54.561 3.000 S -( ) -52.061 3.000 S -(i) -49.561 3.000 S -(h) -46.783 3.000 S -( ) -41.783 3.000 S -(t) -39.283 3.000 S -( ) -36.504 3.000 S -( ) -34.004 3.000 S -(l) -31.504 3.000 S -( ) -28.726 3.000 S -( ) -26.226 3.000 S -(o) -23.726 3.000 S -(h) -18.726 3.000 S -( ) -13.726 3.000 S -( ) -11.226 3.000 S -(n) -8.726 3.000 S -( ) -3.726 3.000 S -( ) -1.226 3.000 S -(g) 1.273 3.000 S -( ) 6.273 3.000 S -( ) 8.773 3.000 S -(a) 11.273 3.000 S -(x) 15.711 3.000 S -( ) 20.711 3.000 S -( ) 23.211 3.000 S -(s) 25.711 3.000 S -( ) 29.603 3.000 S -(p) 32.103 3.000 S -( ) 37.103 3.000 S -( ) 39.603 3.000 S -( ) 42.103 3.000 S -(i) 44.603 3.000 S -(y) 47.381 3.000 S -( ) 52.381 3.000 S -(t) 54.881 3.000 S -( ) 57.660 3.000 S -(s) 60.160 3.000 S -(h) 64.051 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 119.500 271.500 0.000 0.000 20.000 31.500 rect -%@EndRect -gsave -287.250 129.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -15.000 5.000 S -( ) -10.500 5.000 S -(.) -6.000 5.000 S -( ) -1.500 5.000 S -(.) 3.000 5.000 S -( ) 7.500 5.000 S -(.) 12.000 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/VQUse.eps b/HTKBook/HTKFigs/VQUse.eps deleted file mode 100644 index b56b53f..0000000 --- a/HTKBook/HTKFigs/VQUse.eps +++ /dev/null @@ -1,2075 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: VQUse.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/27/94 9:42:59 p.m. -%%BoundingBox: 9.500 280.500 256.601 783.500 -%%QDBoundingBox: 9.500 8.500 256.601 511.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.500 62.500 0.000 0.000 16.000 39.662 rect -%@EndRect -gsave -82.331 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.000 4.000 S -(P) -8.889 4.000 S -(a) -1.103 4.000 S -(r) 5.110 4.000 S -(m) 9.772 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 54.000 0.000 0.000 36.000 54.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.500 111.500 0.000 0.000 16.000 30.331 rect -%@EndRect -gsave -126.665 145.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 4.000 S -(V) -4.889 4.000 S -(Q) 5.220 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 126.000 99.000 0.000 0.000 36.000 54.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 187.000 126.000 162.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 60.000 129.000 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 135.500 0.000 0.000 31.000 57.551 rect -%@EndRect -gsave -164.275 77.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -9.334 -3.000 S -(Q) 0.775 -3.000 S -( ) 10.886 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -28.000 12.000 S -(o) -18.662 12.000 S -(d) -11.662 12.000 S -(e) -4.662 12.000 S -(b) 1.551 12.000 S -(o) 8.551 12.000 S -(o) 15.551 12.000 S -(k) 22.551 12.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 170.500 137.500 0.000 0.000 17.000 115.218 rect -%@EndRect -gsave -195.109 179.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -57.000 5.000 S -(A) -49.798 5.000 S -(R) -42.597 5.000 S -(G) -35.396 5.000 S -(E) -28.195 5.000 S -(T) -20.994 5.000 S -(K) -13.792 5.000 S -(I) -6.591 5.000 S -(N) 0.609 5.000 S -(D) 7.810 5.000 S -(=) 15.011 5.000 S -(X) 22.212 5.000 S -(X) 29.414 5.000 S -(X) 36.615 5.000 S -(_) 43.816 5.000 S -(V) 51.017 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.999 187.000 72.000 108.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 187.500 45.500 0.000 0.000 31.000 56.745 rect -%@EndRect -gsave -73.872 203.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -28.000 -3.000 S -(a) -20.213 -3.000 S -(r) -14.000 -3.000 S -(a) -9.337 -3.000 S -(m) -3.124 -3.000 S -(e) 7.765 -3.000 S -(t) 13.979 -3.000 S -(e) 17.869 -3.000 S -(r) 24.083 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -18.672 12.000 S -(e) -8.562 12.000 S -(c) -2.348 12.000 S -(t) 3.865 12.000 S -(o) 7.755 12.000 S -(r) 14.755 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.500 108.500 0.000 0.000 16.000 31.616 rect -%@EndRect -gsave -124.308 204.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(+) -15.000 4.000 S -( ) -7.104 4.000 S -(V) -3.604 4.000 S -(Q) 6.505 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 45.000 225.000 45.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 225.000 45.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 216.000 99.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 225.000 108.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 225.000 108.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 216.000 144.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 9.500 0.000 0.000 76.000 85.148 rect -%@EndRect -gsave -52.074 315.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -26.653 -26.000 S -(D) -17.315 -26.000 S -(H) -7.205 -26.000 S -(M) 2.905 -26.000 S -(M) 15.353 -26.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -30.915 -11.000 S -(e) -21.577 -11.000 S -(c) -15.363 -11.000 S -(o) -9.149 -11.000 S -(g) -2.149 -11.000 S -(n) 4.850 -11.000 S -(i) 11.850 -11.000 S -(s) 15.739 -11.000 S -(e) 21.187 -11.000 S -(r) 27.401 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -42.000 4.000 S -(i) -31.889 4.000 S -(t) -28.000 4.000 S -(h) -24.110 4.000 S -( ) -17.110 4.000 S -(V) -13.610 4.000 S -(Q) -3.500 4.000 S -(-) 6.610 4.000 S -(b) 11.272 4.000 S -(a) 18.272 4.000 S -(s) 24.486 4.000 S -(e) 29.934 4.000 S -(d) 36.148 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -25.087 19.000 S -(a) -14.977 19.000 S -(u) -8.763 19.000 S -(s) -1.763 19.000 S -(s) 3.684 19.000 S -(i) 9.132 19.000 S -(a) 13.022 19.000 S -(n) 19.236 19.000 S -( ) 26.236 19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -31.691 34.000 S -(r) -23.905 34.000 S -(e) -19.243 34.000 S -(S) -13.029 34.000 S -(e) -5.243 34.000 S -(l) 0.970 34.000 S -(e) 4.860 34.000 S -(c) 11.074 34.000 S -(t) 17.288 34.000 S -(o) 21.177 34.000 S -(r) 28.177 34.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.000 270.000 moveto -/Triangular 14.099 7.049 false 291.822 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.742 268.143 72.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 117.500 0.000 0.000 46.000 62.979 rect -%@EndRect -gsave -148.989 300.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -22.831 -11.000 S -(i) -12.720 -11.000 S -(s) -8.831 -11.000 S -(c) -3.382 -11.000 S -(r) 2.831 -11.000 S -(e) 7.493 -11.000 S -(t) 13.707 -11.000 S -(e) 17.596 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.013 4.000 S -(M) -6.903 4.000 S -(M) 5.544 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -31.000 19.000 S -(e) -21.662 19.000 S -(c) -15.448 19.000 S -(o) -9.234 19.000 S -(g) -2.234 19.000 S -(n) 4.765 19.000 S -(i) 11.765 19.000 S -(s) 15.655 19.000 S -(e) 21.103 19.000 S -(r) 27.317 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 270.000 moveto -/Triangular 14.099 7.049 false 248.216 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.257 268.143 126.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.000 72.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 80.999 70.000 81.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 328.000 117.000 328.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 417.000 54.500 0.000 0.000 16.000 39.662 rect -%@EndRect -gsave -74.331 425.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.000 4.000 S -(P) -8.889 4.000 S -(a) -1.103 4.000 S -(r) 5.110 4.000 S -(m) 9.772 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 409.500 45.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 463.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.999 461.500 72.000 436.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 409.500 moveto -/Triangular 14.099 7.049 false 321.193 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.557 408.245 113.000 376.500 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 395.500 106.500 0.000 0.000 17.000 150.101 rect -%@EndRect -gsave -181.550 404.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -75.000 5.000 S -(O) -67.798 5.000 S -(U) -60.597 5.000 S -(R) -53.396 5.000 S -(C) -46.195 5.000 S -(E) -38.994 5.000 S -(K) -31.792 5.000 S -(I) -24.591 5.000 S -(N) -17.390 5.000 S -(D) -10.189 5.000 S -(=) -2.988 5.000 S -(D) 4.212 5.000 S -(I) 11.414 5.000 S -(S) 18.615 5.000 S -(C) 25.816 5.000 S -(R) 33.017 5.000 S -(E) 40.218 5.000 S -(T) 47.419 5.000 S -(E) 54.621 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 351.000 112.000 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 355.500 115.500 0.000 0.000 31.000 64.148 rect -%@EndRect -gsave -147.574 371.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -32.000 -3.000 S -(Q) -21.889 -3.000 S -( ) -11.779 -3.000 S -(S) -8.279 -3.000 S -(p) -0.493 -3.000 S -(e) 6.506 -3.000 S -(e) 12.720 -3.000 S -(c) 18.934 -3.000 S -(h) 25.148 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.779 12.000 S -(a) -15.668 12.000 S -(t) -9.455 12.000 S -(a) -5.565 12.000 S -( ) 0.648 12.000 S -(F) 4.148 12.000 S -(i) 11.934 12.000 S -(l) 15.824 12.000 S -(e) 19.713 12.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 465.500 42.500 0.000 0.000 46.000 62.979 rect -%@EndRect -gsave -73.989 488.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -22.831 -11.000 S -(i) -12.720 -11.000 S -(s) -8.831 -11.000 S -(c) -3.382 -11.000 S -(r) 2.831 -11.000 S -(e) 7.493 -11.000 S -(t) 13.707 -11.000 S -(e) 17.596 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.013 4.000 S -(M) -6.903 4.000 S -(M) 5.544 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -31.000 19.000 S -(e) -21.662 19.000 S -(c) -15.448 19.000 S -(o) -9.234 19.000 S -(g) -2.234 19.000 S -(n) 4.765 19.000 S -(i) 11.765 19.000 S -(s) 15.655 19.000 S -(e) 21.103 19.000 S -(r) 27.317 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 9.000 49.000 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 12.500 53.500 0.000 0.000 31.000 64.148 rect -%@EndRect -gsave -85.574 28.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.139 -3.000 S -(p) -12.353 -3.000 S -(e) -5.353 -3.000 S -(e) 0.860 -3.000 S -(c) 7.074 -3.000 S -(h) 13.288 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.779 12.000 S -(a) -15.668 12.000 S -(t) -9.455 12.000 S -(a) -5.565 12.000 S -( ) 0.648 12.000 S -(F) 4.148 12.000 S -(i) 11.934 12.000 S -(l) 15.824 12.000 S -(e) 19.713 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.000 267.000 moveto -/Triangular 14.099 7.049 false 318.311 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 74.492 265.669 119.000 226.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 331.500 122.500 0.000 0.000 16.000 60.265 rect -%@EndRect -gsave -152.632 339.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -30.000 4.000 S -(r) -23.000 4.000 S -( ) -18.337 4.000 S -(c) -14.837 4.000 S -(o) -8.624 4.000 S -(p) -1.624 4.000 S -(y) 5.375 4.000 S -( ) 12.375 4.000 S -(t) 15.875 4.000 S -(o) 19.765 4.000 S -( ) 26.765 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 126.000 moveto -/Triangular 14.099 7.049 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.585 124.585 90.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -143.000 126.000 moveto -/Triangular 14.099 7.049 false -55.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 164.000 96.000 144.146 124.361 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/WordLM.eps b/HTKBook/HTKFigs/WordLM.eps deleted file mode 100644 index c5a5415..0000000 --- a/HTKBook/HTKFigs/WordLM.eps +++ /dev/null @@ -1,3106 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: Adobe Illustrator(TM) 3.2 -%%AI8_CreatorVersion: 9.0 -%%For: (Home User) (Home) -%%Title: (WordLM2.eps) -%%CreationDate: 2/27/2002 3:15 PM -%%BoundingBox: 190 278 402 560 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%DocumentFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentNeededFonts: Helvetica -%%+ Helvetica-Bold -%%+ Helvetica-Oblique -%%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0 -%%+ procset Adobe_cmykcolor 1.1 0 -%%+ procset Adobe_cshow 1.1 0 -%%+ procset Adobe_customcolor 1.0 0 -%%+ procset Adobe_typography_AI3 1.0 1 -%%+ procset Adobe_pattern_AI3 1.0 0 -%%+ procset Adobe_Illustrator_AI3 1.0 1 -%AI3_ColorUsage: Color -%AI3_IncludePlacedImages -%AI3_TemplateBox: 296.5 419.5 296.5 419.5 -%AI3_TileBox: -55 -123 517 699 -%AI3_DocumentPreview: Header -%%PageOrigin:-55 -123 -%%AI3_PaperRect:-9 833 586 -9 -%%AI3_Margin:9 -9 -14 9 -%AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 -%AI9_Flatten: 1 -%%EndComments -%%BeginProlog -%%BeginResource: procset Adobe_packedarray 2.0 0 -%%Title: (Packed Array Operators) -%%Version: 2.0 0 -%%CreationDate: (8/2/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -userdict /Adobe_packedarray 5 dict dup begin put -/initialize -{ -/packedarray where - { - pop - } - { - Adobe_packedarray begin - Adobe_packedarray - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - } ifelse -} def -/terminate -{ -} def -/packedarray -{ -array astore readonly -} def -/setpacking -{ -pop -} def -/currentpacking -{ -false -} def -currentdict readonly pop end -%%EndResource -Adobe_packedarray /initialize get exec -%%BeginResource: procset Adobe_cmykcolor 1.1 0 -%%Title: (CMYK Color Operators) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cmykcolor 4 dict dup begin put -/initialize -{ -/setcmykcolor where - { - pop - } - { - userdict /Adobe_cmykcolor_vars 2 dict dup begin put - /_setrgbcolor - /setrgbcolor load def - /_currentrgbcolor - /currentrgbcolor load def - Adobe_cmykcolor begin - Adobe_cmykcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - end - Adobe_cmykcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_cmykcolor eq - { - end - } if -} def -/setcmykcolor -{ -1 sub 4 1 roll -3 - { - 3 index add neg dup 0 lt - { - pop 0 - } if - 3 1 roll - } repeat -Adobe_cmykcolor_vars /_setrgbcolor get exec -pop -} def -/currentcmykcolor -{ -Adobe_cmykcolor_vars /_currentrgbcolor get exec -3 - { - 1 sub neg 3 1 roll - } repeat -0 -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_cshow 1.1 0 -%%Title: (cshow Operator) -%%Version: 1.1 0 -%%CreationDate: (1/23/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_cshow 3 dict dup begin put -/initialize -{ -/cshow where - { - pop - } - { - userdict /Adobe_cshow_vars 1 dict dup begin put - /_cshow - {} def - Adobe_cshow begin - Adobe_cshow - { - dup xcheck - { - bind - } if - userdict 3 1 roll put - } forall - end - end - } ifelse -} def -/terminate -{ -} def -/cshow -{ -exch -Adobe_cshow_vars - exch /_cshow - exch put - { - 0 0 Adobe_cshow_vars /_cshow get exec - } forall -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_customcolor 1.0 0 -%%Title: (Custom Color Operators) -%%Version: 1.0 0 -%%CreationDate: (5/9/88) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_customcolor 5 dict dup begin put -/initialize -{ -/setcustomcolor where - { - pop - } - { - Adobe_customcolor begin - Adobe_customcolor - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_customcolor begin - } ifelse -} def -/terminate -{ -currentdict Adobe_customcolor eq - { - end - } if -} def -/findcmykcustomcolor -{ -5 packedarray -} def -/setcustomcolor -{ -exch -aload pop pop -4 - { - 4 index mul 4 1 roll - } repeat -5 -1 roll pop -setcmykcolor -} def -/setoverprint -{ -pop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_typography_AI3 2.0 0 -%%Title: (Typography Operators) -%%Version: 2.0 0 -%%CreationDate:(5/31/90) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_typography_AI3 48 dict dup begin put -/initialize -{ -/TZ - where - { - pop - } - { - Adobe_typography_AI3 begin - Adobe_typography_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - end - Adobe_typography_AI3 begin - } ifelse -} def -/terminate -{ -currentdict Adobe_typography_AI3 eq - { - end - } if -} def -/modifyEncoding -{ - /_tempEncode exch ddef - - /_pntr 0 ddef - - { - counttomark -1 roll - dup type dup /marktype eq - { - pop pop exit - } - { - /nametype eq - { - _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll - put - } - { - /_pntr exch ddef - } - ifelse - } - ifelse - } - loop - - _tempEncode -} -def -/TE -{ - StandardEncoding 256 array copy modifyEncoding - /_nativeEncoding exch def -} def -% -/TZ -{ - dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse - /_useNativeEncoding exch def - pop pop - - findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict - - begin - - mark exch - { - 1 index /FID ne { def } if cleartomark mark - } - forall - pop - - /FontName exch def - - counttomark 0 eq - { - 1 _useNativeEncoding eq - { - /Encoding _nativeEncoding def - } - if - cleartomark - } - { - /Encoding load 256 array copy - modifyEncoding /Encoding exch def - } - ifelse - FontName currentdict - end - - definefont pop -} -def -/tr -{ -_ax _ay 3 2 roll -} def -/trj -{ -_cx _cy _sp _ax _ay 6 5 roll -} def -/a0 -{ -/Tx - { - dup - currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - } ddef -/Tj - { - dup - currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - } ddef - -} def -/a1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - tr _psf - newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - dup currentpoint 3 2 roll - trj _pjsf - newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef - -} def -/e0 -{ -/Tx - { - tr _psf - } ddef -/Tj - { - trj _pjsf - } ddef -} def -/e1 -{ -/Tx - { - dup currentpoint 4 2 roll gsave - tr _psf - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll gsave - trj _pjsf - grestore 3 1 roll moveto tr sp - } ddef -} def -/i0 -{ -/Tx - { - tr sp - } ddef -/Tj - { - trj jsp - } ddef -} def -/i1 -{ -W N -} def -/o0 -{ -/Tx - { - tr sw rmoveto - } ddef -/Tj - { - trj swj rmoveto - } ddef -} def -/r0 -{ -/Tx - { - tr _ctm _pss - } ddef -/Tj - { - trj _ctm _pjss - } ddef -} def -/r1 -{ -/Tx - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - tr _ctm _pss - grestore 3 1 roll moveto tr sp - } ddef -/Tj - { - dup currentpoint 4 2 roll currentpoint gsave newpath moveto - trj _ctm _pjss - grestore 3 1 roll moveto tr sp - } ddef -} def -/To -{ - pop _ctm currentmatrix pop -} def -/TO -{ - iTe _ctm setmatrix newpath -} def -/Tp -{ - pop _tm astore pop _ctm setmatrix - _tDict begin /W {} def /h {} def -} def -/TP -{ - end - iTm 0 0 moveto -} def -/Tr -{ - _render 3 le {currentpoint newpath moveto} if - dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse - dup /_render exch ddef - _renderStart exch get load exec -} def -/iTm -{ -_ctm setmatrix _tm concat 0 _rise translate _hs 1 scale -} def -/Tm -{ -_tm astore pop iTm 0 0 moveto -} def -/Td -{ -_mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto -} def -/iTe -{ - _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse - /_render -1 ddef -} def -/Ta -{ -pop -} def -/Tf -{ -dup 1000 div /_fScl exch ddef -exch findfont exch scalefont setfont -} def -/Tl -{ -pop -0 exch _leading astore pop -} def -/Tt -{ -pop -} def -/TW -{ -3 npop -} def -/Tw -{ -/_cx exch ddef -} def -/TC -{ -3 npop -} def -/Tc -{ -/_ax exch ddef -} def -/Ts -{ -/_rise exch ddef -currentpoint -iTm -moveto -} def -/Ti -{ -3 npop -} def -/Tz -{ -100 div /_hs exch ddef -iTm -} def -/TA -{ -pop -} def -/Tq -{ -pop -} def -/Th -{ -pop pop pop pop pop -} def -/TX {pop} def -%/Tx -%/Tj -/Tk -{ -exch pop _fScl mul neg 0 rmoveto -} def -/TK -{ -2 npop -} def -/T* -{ -_leading aload pop neg Td -} def -/T*- -{ -_leading aload pop Td -} def -/T- -{ -_hyphen Tx -} def -/T+ -{} def -/TR -{ -_ctm currentmatrix pop -_tm astore pop -iTm 0 0 moveto -} def -/TS -{ -0 eq {Tx} {Tj} ifelse -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_pattern_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Pattern Operators) -%%Version: 1.1 0 -%%CreationDate: (7/21/89) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_pattern_AI3 16 dict dup begin put -/initialize -{ -/definepattern where - { - pop - } - { - Adobe_pattern_AI3 begin - Adobe_pattern_AI3 - { - dup xcheck - { - bind - } if - pop pop - } forall - mark - cachestatus 7 1 roll pop pop pop pop exch pop exch - { - { - 10000 add - dup 2 index gt - { - exit - } if - dup setcachelimit - } loop - } stopped - cleartomark - } ifelse -} def -/terminate -{ -currentdict Adobe_pattern_AI3 eq - { - end - } if -} def -errordict -/nocurrentpoint -{ -pop -stop -} put -errordict -/invalidaccess -{ -pop -stop -} put -/patternencoding -256 array def -0 1 255 -{ -patternencoding exch ( ) 2 copy exch 0 exch put cvn put -} for -/definepattern -{ -17 dict begin -/uniform exch def -/cache exch def -/key exch def -/procarray exch def -/mtx exch matrix invertmatrix def -/height exch def -/width exch def -/ctm matrix currentmatrix def -/ptm matrix def -/str 32 string def -/slice 9 dict def -slice /s 1 put -slice /q 256 procarray length div sqrt floor cvi put -slice /b 0 put -/FontBBox [0 0 0 0] def -/FontMatrix mtx matrix copy def -/Encoding patternencoding def -/FontType 3 def -/BuildChar - { - exch - begin - /setstrokeadjust where {pop true setstrokeadjust} if - slice begin - dup q dup mul mod s idiv /i exch def - dup q dup mul mod s mod /j exch def - q dup mul idiv procarray exch get - /xl j width s div mul def - /xg j 1 add width s div mul def - /yl i height s div mul def - /yg i 1 add height s div mul def - uniform - { - 1 1 - } - { - width 0 dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - 0 height dtransform - dup mul exch dup mul add sqrt dup 1 add exch div - } ifelse - width 0 cache - { - xl 4 index mul yl 4 index mul xg 6 index mul yg 6 index mul - setcachedevice - } - { - setcharwidth - } ifelse - gsave - scale - newpath - xl yl moveto - xg yl lineto - xg yg lineto - xl yg lineto - closepath - clip - newpath - end - end - exec - grestore - } def -key currentdict definefont -end -} def -/patterncachesize -{ -gsave -newpath -0 0 moveto -width 0 lineto -width height lineto -0 height lineto -closepath -patternmatrix setmatrix -pathbbox -exch ceiling 4 -1 roll floor sub 3 1 roll -ceiling exch floor sub -mul 1 add -grestore -} def -/patterncachelimit -{ -cachestatus 7 1 roll 6 npop 8 mul -} def -/patternpath -{ -exch dup begin setfont -ctm setmatrix -concat -slice exch /b exch slice /q get dup mul mul put -FontMatrix concat -uniform - { - width 0 dtransform round width div exch round width div exch - 0 height dtransform round height div exch height div exch - 0 0 transform round exch round exch - ptm astore setmatrix - } - { - ptm currentmatrix pop - } ifelse -{currentpoint} stopped not - { - 2 npop - pathbbox - true - 4 index 3 index eq - 4 index 3 index eq - and - { - pop false - { - {2 npop} - {3 npop true} - {7 npop true} - {pop true} - pathforall - } stopped - { - 5 npop true - } if - } if - { - height div ceiling height mul 4 1 roll - width div ceiling width mul 4 1 roll - height div floor height mul 4 1 roll - width div floor width mul 4 1 roll - 2 index sub height div ceiling cvi exch - 3 index sub width div ceiling cvi exch - 4 2 roll moveto - FontMatrix mtx invertmatrix - dup dup 4 get exch 5 get rmoveto - ptm ptm concatmatrix pop - slice /s - patterncachesize patterncachelimit div ceiling sqrt ceiling cvi - dup slice /q get gt - { - pop slice /q get - } if - put - 0 1 slice /s get dup mul 1 sub - { - slice /b get add - gsave - 0 1 str length 1 sub - { - str exch 2 index put - } for - pop - dup - { - gsave - ptm setmatrix - 1 index str length idiv {str show} repeat - 1 index str length mod str exch 0 exch getinterval show - grestore - 0 height rmoveto - } repeat - grestore - } for - 2 npop - } - { - 4 npop - } ifelse - } if -end -} def -/patternclip -{ -clip -} def -/patternstrokepath -{ -strokepath -} def -/patternmatrix -matrix def -/patternfill -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternclip -Adobe_pattern_AI3 /patternpath get exec -grestore -newpath -} def -/patternstroke -{ -dup type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get - } if -gsave -patternstrokepath -true - { - { - { - newpath - moveto - } - { - lineto - } - { - curveto - } - { - closepath - 3 copy - Adobe_pattern_AI3 /patternfill get exec - } pathforall - 3 npop - } stopped - { - 5 npop - patternclip - Adobe_pattern_AI3 /patternfill get exec - } if - } - { - patternclip - Adobe_pattern_AI3 /patternfill get exec - } ifelse -grestore -newpath -} def -/patternashow -{ -3 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 4 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath currentpoint - 6 index 6 index 6 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -5 npop -} def -/patternawidthshow -{ -6 index type /dicttype eq - { - Adobe_pattern_AI3 /patternmatrix get 7 1 roll - } if - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 9 index 9 index 9 index - Adobe_pattern_AI3 /patternfill get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -8 npop -} def -/patternashowstroke -{ -4 index type /dicttype eq - { - patternmatrix /patternmatrix get 5 1 roll - } if -4 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put pop - gsave - false charpath - currentpoint - 4 index setmatrix - 7 index 7 index 7 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/patternawidthshowstroke -{ -7 index type /dicttype eq - { - patternmatrix /patternmatrix get 8 1 roll - } if -7 1 roll - { - 2 npop (0) exch - 2 copy 0 exch put - gsave - _sp eq {5 index 5 index rmoveto} if - false charpath currentpoint - 7 index setmatrix - 10 index 10 index 10 index - Adobe_pattern_AI3 /patternstroke get exec - grestore - newpath moveto - 2 copy rmoveto - } exch cshow -9 npop -} def -currentdict readonly pop end -setpacking -%%EndResource -%%BeginResource: procset Adobe_Illustrator_AI3 1.1 0 -%%Title: (Adobe Illustrator (R) Version 3.0 Full Prolog) -%%Version: 1.1 0 -%%CreationDate: (3/7/1994) () -%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved) -currentpacking true setpacking -userdict /Adobe_Illustrator_AI3 71 dict dup begin put -/initialize -{ -userdict /Adobe_Illustrator_AI3_vars 67 dict dup begin put -/_lp /none def -/_pf {} def -/_ps {} def -/_psf {} def -/_pss {} def -/_pjsf {} def -/_pjss {} def -/_pola 0 def -/_doClip 0 def -/cf currentflat def -/_tm matrix def -/_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def -/_renderEnd [null null null null /i1 /i1 /i1 /i1] def -/_render -1 def -/_rise 0 def -/_ax 0 def -/_ay 0 def -/_cx 0 def -/_cy 0 def -/_leading [0 0] def -/_ctm matrix def -/_mtx matrix def -/_sp 16#020 def -/_hyphen (-) def -/_fScl 0 def -/_cnt 0 def -/_hs 1 def -/_nativeEncoding 0 def -/_useNativeEncoding 0 def -/_tempEncode 0 def -/_pntr 0 def -/_tDict 2 dict def -/_wv 0 def -/Tx {} def -/Tj {} def -/CRender {} def -/_AI3_savepage {} def -/_gf null def -/_cf 4 array def -/_if null def -/_of false def -/_fc {} def -/_gs null def -/_cs 4 array def -/_is null def -/_os false def -/_sc {} def -/_pd 1 dict def -/_ed 15 dict def -/_pm matrix def -/_fm null def -/_fd null def -/_fdd null def -/_sm null def -/_sd null def -/_sdd null def -/_i null def -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3 dup /nc get begin - { - dup xcheck - { - bind - } if - pop pop - } forall -end -end -end -Adobe_Illustrator_AI3 begin -Adobe_Illustrator_AI3_vars begin -newpath -} def -/terminate -{ -end -end -} def -/_ -null def -/ddef -{ -Adobe_Illustrator_AI3_vars 3 1 roll put -} def -/xput -{ -dup load dup length exch maxlength eq - { - dup dup load dup - length 2 mul dict copy def - } if -load begin def end -} def -/npop -{ - { - pop - } repeat -} def -/sw -{ -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -} def -/swj -{ -dup 4 1 roll -dup length exch stringwidth -exch 5 -1 roll 3 index mul add -4 1 roll 3 1 roll mul add -6 2 roll /_cnt 0 ddef -{1 index eq {/_cnt _cnt 1 add ddef} if} forall pop -exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop -} def -/ss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put pop - gsave - false charpath currentpoint - 4 index setmatrix - stroke - grestore - moveto - 2 copy rmoveto - } exch cshow -3 npop -} def -/jss -{ -4 1 roll - { - 2 npop - (0) exch 2 copy 0 exch put - gsave - _sp eq - { - exch 6 index 6 index 6 index 5 -1 roll widthshow - currentpoint - } - { - false charpath currentpoint - 4 index setmatrix stroke - }ifelse - grestore - moveto - 2 copy rmoveto - } exch cshow -6 npop -} def -/sp -{ - { - 2 npop (0) exch - 2 copy 0 exch put pop - false charpath - 2 copy rmoveto - } exch cshow -2 npop -} def -/jsp -{ - { - 2 npop - (0) exch 2 copy 0 exch put - _sp eq - { - exch 5 index 5 index 5 index 5 -1 roll widthshow - } - { - false charpath - }ifelse - 2 copy rmoveto - } exch cshow -5 npop -} def -/pl -{ -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} def -/setstrokeadjust where - { - pop true setstrokeadjust - /c - { - curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll curveto - } def - /V - /v load def - /y - { - 2 copy curveto - } def - /Y - /y load def - /l - { - lineto - } def - /L - /l load def - /m - { - moveto - } def - } - { - /c - { - pl curveto - } def - /C - /c load def - /v - { - currentpoint 6 2 roll pl curveto - } def - /V - /v load def - /y - { - pl 2 copy curveto - } def - /Y - /y load def - /l - { - pl lineto - } def - /L - /l load def - /m - { - pl moveto - } def - } ifelse -/d -{ -setdash -} def -/cf {} def -/i -{ -dup 0 eq - { - pop cf - } if -setflat -} def -/j -{ -setlinejoin -} def -/J -{ -setlinecap -} def -/M -{ -setmiterlimit -} def -/w -{ -setlinewidth -} def -/H -{} def -/h -{ -closepath -} def -/N -{ -_pola 0 eq - { - _doClip 1 eq {clip /_doClip 0 ddef} if - newpath - } - { - /CRender {N} ddef - }ifelse -} def -/n -{N} def -/F -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _pf grestore clip newpath /_lp /none ddef _fc - /_doClip 0 ddef - } - { - _pf - }ifelse - } - { - /CRender {F} ddef - }ifelse -} def -/f -{ -closepath -F -} def -/S -{ -_pola 0 eq - { - _doClip 1 eq - { - gsave _ps grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - _ps - }ifelse - } - { - /CRender {S} ddef - }ifelse -} def -/s -{ -closepath -S -} def -/B -{ -_pola 0 eq - { - _doClip 1 eq - gsave F grestore - { - gsave S grestore clip newpath /_lp /none ddef _sc - /_doClip 0 ddef - } - { - S - }ifelse - } - { - /CRender {B} ddef - }ifelse -} def -/b -{ -closepath -B -} def -/W -{ -/_doClip 1 ddef -} def -/* -{ -count 0 ne - { - dup type (stringtype) eq {pop} if - } if -_pola 0 eq {newpath} if -} def -/u -{} def -/U -{} def -/q -{ -_pola 0 eq {gsave} if -} def -/Q -{ -_pola 0 eq {grestore} if -} def -/*u -{ -_pola 1 add /_pola exch ddef -} def -/*U -{ -_pola 1 sub /_pola exch ddef -_pola 0 eq {CRender} if -} def -/D -{pop} def -/*w -{} def -/*W -{} def -/` -{ -/_i save ddef -6 1 roll 4 npop -concat pop -userdict begin -/showpage {} def -0 setgray -0 setlinecap -1 setlinewidth -0 setlinejoin -10 setmiterlimit -[] 0 setdash -/setstrokeadjust where {pop false setstrokeadjust} if -newpath -0 setgray -false setoverprint -} def -/~ -{ -end -_i restore -} def -/@ -{} def -/& -{} def -/O -{ -0 ne -/_of exch ddef -/_lp /none ddef -} def -/R -{ -0 ne -/_os exch ddef -/_lp /none ddef -} def -/g -{ -/_gf exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _gf setgray - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/G -{ -/_gs exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _gs setgray - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/k -{ -_cf astore pop -/_fc -{ -_lp /fill ne - { - _of setoverprint - _cf aload pop setcmykcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/K -{ -_cs astore pop -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _cs aload pop setcmykcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/x -{ -/_gf exch ddef -findcmykcustomcolor -/_if exch ddef -/_fc -{ -_lp /fill ne - { - _of setoverprint - _if _gf 1 exch sub setcustomcolor - /_lp /fill ddef - } if -} ddef -/_pf -{ -_fc -fill -} ddef -/_psf -{ -_fc -ashow -} ddef -/_pjsf -{ -_fc -awidthshow -} ddef -/_lp /none ddef -} def -/X -{ -/_gs exch ddef -findcmykcustomcolor -/_is exch ddef -/_sc -{ -_lp /stroke ne - { - _os setoverprint - _is _gs 1 exch sub setcustomcolor - /_lp /stroke ddef - } if -} ddef -/_ps -{ -_sc -stroke -} ddef -/_pss -{ -_sc -ss -} ddef -/_pjss -{ -_sc -jss -} ddef -/_lp /none ddef -} def -/dp -{ -dup null eq -{ -pop -_dp 0 ne - { - 0 1 _dp 1 sub _dl mod - { - _da exch get 3 get - } for - _dp 1 sub _dl mod 1 add packedarray - _da 0 get aload pop 8 -1 roll 5 -1 roll pop 4 1 roll - definepattern pop - } if -} -{ -_dp 0 ne _dp _dl mod 0 eq and - { - null dp - } if -7 packedarray _da exch _dp _dl mod exch put -_dp _dl mod _da 0 get 4 get 2 packedarray -/_dp _dp 1 add def -} ifelse -} def -/E -{ -_ed begin -dup 0 get type /arraytype ne - { - 0 - { - dup 1 add index type /arraytype eq - { - 1 add - } - { - exit - } ifelse - } loop - array astore - } if -/_dd exch def -/_ury exch def -/_urx exch def -/_lly exch def -/_llx exch def -/_n exch def -/_y 0 def -/_dl 4 def -/_dp 0 def -/_da _dl array def -0 1 _dd length 1 sub - { - /_d exch _dd exch get def - 0 2 _d length 2 sub - { - /_x exch def - /_c _d _x get _ ne def - /_r _d _x 1 add get cvlit def - _r _ ne - { - _urx _llx sub _ury _lly sub [1 0 0 1 0 0] - [ - /save cvx - _llx neg _lly neg /translate cvx - _c - { - nc /begin cvx - } if - _r dup type /stringtype eq - { - cvx - } - { - {exec} /forall cvx - } ifelse - _c - { - /end cvx - } if - /restore cvx - ] cvx - /_fn 12 _n length add string def - _y _fn cvs pop - /_y _y 1 add def - _fn 12 _n putinterval - _fn _c false dp - _d exch _x 1 add exch put - } if - } for - } for -null dp -_n _dd /_pd -end xput -} def -/fc -{ -_fm dup concatmatrix pop -} def -/p -{ -/_fm exch ddef -9 -2 roll _pm translate fc -7 -2 roll _pm scale fc -5 -1 roll _pm rotate fc -4 -2 roll exch 0 ne - { - dup _pm rotate fc - 1 -1 _pm scale fc - neg _pm rotate fc - } - { - pop - } ifelse -dup _pm rotate fc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore fc -neg _pm rotate fc -_pd exch get /_fdd exch ddef -/_pf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - patternfill - } - { - pop - fill - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_psf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 9 copy 6 npop patternashow - } - { - pop - 6 copy 3 npop ashow - } ifelse - grestore - pop - } for - pop - } for -restore -%3 npop newpath -sw rmoveto -} ddef -/_pjsf -{ -save -/_doClip 0 ddef -0 1 _fdd length 1 sub - { - /_fd exch _fdd exch get ddef - _fd - 0 2 _fd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _fc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _fm - 12 copy 6 npop patternawidthshow - } - { - pop 9 copy 3 npop awidthshow - } ifelse - grestore - pop - } for - pop - } for -restore -swj rmoveto -} ddef -/_lp /none ddef -} def -/sc -{ -_sm dup concatmatrix pop -} def -/P -{ -/_sm exch ddef -9 -2 roll _pm translate sc -7 -2 roll _pm scale sc -5 -1 roll _pm rotate sc -4 -2 roll exch 0 ne - { - dup _pm rotate sc - 1 -1 _pm scale sc - neg _pm rotate sc - } - { - pop - } ifelse -dup _pm rotate sc -exch dup sin exch cos div 1 0 0 1 0 6 2 roll -_pm astore sc -neg _pm rotate sc -_pd exch get /_sdd exch ddef -/_ps -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - patternstroke - } - { - pop stroke - } ifelse - grestore - pop - } for - pop - } for -restore -newpath -} ddef -/_pss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 10 copy 6 npop patternashowstroke - } - { - pop 7 copy 3 npop ss - } ifelse - grestore - pop - } for - pop - } for -restore -pop sw rmoveto -} ddef -/_pjss -{ -save -/_doClip 0 ddef -0 1 _sdd length 1 sub - { - /_sd exch _sdd exch get ddef - _sd - 0 2 _sd length 2 sub - { - gsave - 2 copy get dup _ ne - { - cvx exec _sc - } - { - pop - } ifelse - 2 copy 1 add get dup _ ne - { - aload pop findfont _sm - 13 copy 6 npop patternawidthshowstroke - } - { - pop 10 copy 3 npop jss - } ifelse - grestore - pop - } for - pop - } for -restore -pop swj rmoveto -} ddef -/_lp /none ddef -} def -/A -{ -pop -} def -/nc 3 dict def -nc begin -/setgray -{ -pop -} bind def -/setcmykcolor -{ -4 npop -} bind def -/setcustomcolor -{ -2 npop -} bind def -currentdict readonly pop end -currentdict readonly pop end -setpacking -/annotatepage -{ -} def -%%EndResource -%%EndProlog -%%BeginSetup -%%IncludeFont: Helvetica -%%IncludeFont: Helvetica-Bold -%%IncludeFont: Helvetica-Oblique -Adobe_cmykcolor /initialize get exec -Adobe_cshow /initialize get exec -Adobe_customcolor /initialize get exec -Adobe_typography_AI3 /initialize get exec -Adobe_pattern_AI3 /initialize get exec -Adobe_Illustrator_AI3 /initialize get exec -[ -39/quotesingle 96/grave 130/quotesinglbase/florin/quotedblbase/ellipsis -/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE 145/quoteleft -/quoteright/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark -/scaron/guilsinglright/oe/dotlessi 159/Ydieresis /space 164/currency 166/brokenbar -168/dieresis/copyright/ordfeminine 172/logicalnot/hyphen/registered/macron/ring -/plusminus/twosuperior/threesuperior/acute/mu 183/periodcentered/cedilla -/onesuperior/ordmasculine 188/onequarter/onehalf/threequarters 192/Agrave -/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute -/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde -/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave -/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute -/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex -/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute -/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex -/udieresis/yacute/thorn/ydieresis -TE -%AI3_BeginEncoding: _Helvetica Helvetica -[/_Helvetica/Helvetica 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold -[/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginEncoding: _Helvetica-Oblique Helvetica-Oblique -[/_Helvetica-Oblique/Helvetica-Oblique 0 0 1 TZ %AI3_EndEncoding TrueType -%AI3_BeginPattern: (Azure Rings) -(Azure Rings) 22.5 22.5 58.5 58.5 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1.75 w 4 M []0 d 40.5 58.5 m -40.5 48.5586 32.4409 40.5 22.5 40.5 c -12.5591 40.5 4.5 48.5586 4.5 58.5 c -4.5 68.4414 12.5591 76.5 22.5 76.5 c -32.4409 76.5 40.5 68.4414 40.5 58.5 c -s 40.5 22.5 m -40.5 12.5586 32.4409 4.5 22.5 4.5 c -12.5591 4.5 4.5 12.5586 4.5 22.5 c -4.5 32.4414 12.5591 40.5 22.5 40.5 c -32.4409 40.5 40.5 32.4414 40.5 22.5 c -s 40.5 40.5 m -40.5 30.5586 32.4409 22.5 22.5 22.5 c -12.5591 22.5 4.5 30.5586 4.5 40.5 c -4.5 50.4414 12.5591 58.5 22.5 58.5 c -32.4409 58.5 40.5 50.4414 40.5 40.5 c -s 58.5 58.5 m -58.5 48.5586 50.4409 40.5 40.5 40.5 c -30.5591 40.5 22.5 48.5586 22.5 58.5 c -22.5 68.4414 30.5591 76.5 40.5 76.5 c -50.4409 76.5 58.5 68.4414 58.5 58.5 c -s 58.5 22.5 m -58.5 12.5586 50.4409 4.5 40.5 4.5 c -30.5591 4.5 22.5 12.5586 22.5 22.5 c -22.5 32.4414 30.5591 40.5 40.5 40.5 c -50.4409 40.5 58.5 32.4414 58.5 22.5 c -s 58.5 40.5 m -58.5 30.5586 50.4409 22.5 40.5 22.5 c -30.5591 22.5 22.5 30.5586 22.5 40.5 c -22.5 50.4414 30.5591 58.5 40.5 58.5 c -50.4409 58.5 58.5 50.4414 58.5 40.5 c -s 76.5 58.5 m -76.5 48.5586 68.4409 40.5 58.5 40.5 c -48.5591 40.5 40.5 48.5586 40.5 58.5 c -40.5 68.4414 48.5591 76.5 58.5 76.5 c -68.4409 76.5 76.5 68.4414 76.5 58.5 c -s 76.5 22.5 m -76.5 12.5586 68.4409 4.5 58.5 4.5 c -48.5591 4.5 40.5 12.5586 40.5 22.5 c -40.5 32.4414 48.5591 40.5 58.5 40.5 c -68.4409 40.5 76.5 32.4414 76.5 22.5 c -s 76.5 40.5 m -76.5 30.5586 68.4409 22.5 58.5 22.5 c -48.5591 22.5 40.5 30.5586 40.5 40.5 c -40.5 50.4414 48.5591 58.5 58.5 58.5 c -68.4409 58.5 76.5 50.4414 76.5 40.5 c -s %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Blue Tablecloth) -(Blue Tablecloth) 0 0 12 12 [ -%AI3_Tile -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 6 m -0 6 L -0 12 L -6 12 L -6 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 6 m -6 6 L -6 12 L -12 12 L -12 6 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0 0 0 0 k - 0 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12 0 m -6 0 L -6 6 L -12 6 L -12 0 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.3098 0 0 k - 0.3922 0.3098 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6 0 m -0 0 L -0 6 L -6 6 L -6 0 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Camouflage) -(Camouflage) 1 1 73 73 [ -%AI3_Tile -(0 O 0 R 0.6 0.1412 0.9373 0.0275 k - 0.6 0.1412 0.9373 0.0275 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 73 m -1 1 L -73 1 L -73 73 L -1 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4941 0.3529 0.9529 0.2 k - 0.4941 0.3529 0.9529 0.2 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 18.5449 73 m -18.5449 1 L -46.7832 1 L -46.7832 73 L -18.5449 73 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1098 0.9059 0.0157 k - 0.1882 0.1098 0.9059 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 11.9512 1 m -11.9512 4.7129 9.2314 2.8813 9.2314 6.5938 c -9.2314 10.2334 4.25 10.2334 4.25 13.8735 c -4.25 17.4858 10.0313 17.4858 10.0313 21.0991 c -10.0313 24.832 10.208 24.832 10.208 28.5654 c -10.208 32.3071 5.5205 32.3071 5.5205 36.0469 c -5.5205 39.7021 11.8838 39.7021 11.8838 43.356 c -11.8838 47.0566 7.4609 47.0566 7.4609 50.7568 c -7.4609 54.4043 5.7959 54.4043 5.7959 58.0542 c -5.7959 61.7686 4.6631 61.7686 4.6631 65.4805 c -4.6631 69.1636 11.9512 69.3184 11.9512 73 C -27.9268 73 L -27.9268 69.3184 22.0635 69.1636 22.0635 65.4805 c -22.0635 61.7686 28.6631 61.7686 28.6631 58.0542 c -28.6631 54.4043 25.1553 54.4043 25.1553 50.7568 c -25.1553 47.0566 28.8145 47.0566 28.8145 43.356 c -28.8145 39.7021 22.1191 39.7021 22.1191 36.0469 c -22.1191 32.3071 26.3945 32.3071 26.3945 28.5654 c -26.3945 24.832 24.4248 24.832 24.4248 21.0991 c -24.4248 17.4858 20.3838 17.4858 20.3838 13.8735 c -20.3838 10.2334 24.6055 10.2334 24.6055 6.5938 c -24.6055 2.8813 27.9268 4.7129 27.9268 1 C -11.9512 1 L -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9216 0.2157 0.9451 0.0745 k - 0.9216 0.2157 0.9451 0.0745 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 41.875 1 m -41.875 4.7134 42.3867 2.8818 42.3867 6.5938 c -42.3867 10.2334 40.5947 10.2334 40.5947 13.8735 c -40.5947 17.4858 41.5742 17.4858 41.5742 21.0991 c -41.5742 24.832 43.6484 24.832 43.6484 28.5659 c -43.6484 32.3076 39.1709 32.3076 39.1709 36.0469 c -39.1709 39.7026 39.7549 39.7026 39.7549 43.356 c -39.7549 47.0566 45.3896 47.0566 45.3896 50.7568 c -45.3896 54.4043 40.1055 54.4043 40.1055 58.0542 c -40.1055 61.7686 40.6289 61.7686 40.6289 65.4805 c -40.6289 69.1636 41.875 69.3184 41.875 73 C -59.0752 73 L -59.0752 69.4219 53.4805 70.1934 53.4805 66.6143 c -53.4805 62.9136 55.8945 62.9136 55.8945 59.2153 c -55.8945 55.502 61.0059 55.502 61.0059 51.7886 c -61.0059 48.1489 60.5635 48.1489 60.5635 44.5103 c -60.5635 40.897 59.9277 40.897 59.9277 37.2842 c -59.9277 33.5508 56.3662 33.5508 56.3662 29.8169 c -56.3662 26.0762 61.0908 26.0762 61.0908 22.3354 c -61.0908 18.6812 52.6025 18.6812 52.6025 15.0264 c -52.6025 11.3262 55.7461 11.3262 55.7461 7.6265 c -55.7461 3.978 59.0752 4.6484 59.0752 1 C -41.875 1 L -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Clown Attack) -(Clown Attack) 5.25 11 41.25 47 [ -%AI3_Tile -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 17.5 18.25 m -17.5 15.2119 15.0376 12.75 12 12.75 c -8.9624 12.75 6.5 15.2119 6.5 18.25 c -6.5 21.2881 8.9624 23.75 12 23.75 c -15.0376 23.75 17.5 21.2881 17.5 18.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.9529 0 0 k - 0.0078 0.9529 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 22.25 34.125 m -22.25 31.2939 19.9556 29 17.125 29 c -14.2944 29 12 31.2939 12 34.125 c -12 36.9561 14.2944 39.25 17.125 39.25 c -19.9556 39.25 22.25 36.9561 22.25 34.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 30 31.625 m -30 29.4854 28.2646 27.75 26.125 27.75 c -23.9849 27.75 22.25 29.4854 22.25 31.625 c -22.25 33.7646 23.9849 35.5 26.125 35.5 c -28.2646 35.5 30 33.7646 30 31.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 23.25 24.5 m -23.25 22.4287 21.5713 20.75 19.5 20.75 c -17.4287 20.75 15.75 22.4287 15.75 24.5 c -15.75 26.5713 17.4287 28.25 19.5 28.25 c -21.5713 28.25 23.25 26.5713 23.25 24.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9569 0.9294 0 0 k - 0.9569 0.9294 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 36 22.25 m -36 19.0742 33.4258 16.5 30.25 16.5 c -27.0742 16.5 24.5 19.0742 24.5 22.25 c -24.5 25.4258 27.0742 28 30.25 28 c -33.4258 28 36 25.4258 36 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.1882 0.1216 0.8 0.0157 k - 0.1882 0.1216 0.8 0.0157 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 24.25 16.5 m -24.25 14.8438 22.9067 13.5 21.25 13.5 c -19.5933 13.5 18.25 14.8438 18.25 16.5 c -18.25 18.1563 19.5933 19.5 21.25 19.5 c -22.9067 19.5 24.25 18.1563 24.25 16.5 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 43.875 m -37.25 39.5264 33.7236 36 29.375 36 c -25.0264 36 21.5 39.5264 21.5 43.875 c -21.5 48.2236 25.0264 51.75 29.375 51.75 c -33.7236 51.75 37.25 48.2236 37.25 43.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0078 0.1961 0.9373 0 k - 0.0078 0.1961 0.9373 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 38.75 26.625 m -38.75 25.7275 38.0225 25 37.125 25 c -36.2275 25 35.5 25.7275 35.5 26.625 c -35.5 27.5225 36.2275 28.25 37.125 28.25 c -38.0225 28.25 38.75 27.5225 38.75 26.625 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0196 0.5961 0.9137 0 k - 0.0196 0.5961 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.875 42 m -19.875 41.1025 19.1475 40.375 18.25 40.375 c -17.3525 40.375 16.625 41.1025 16.625 42 c -16.625 42.8975 17.3525 43.625 18.25 43.625 c -19.1475 43.625 19.875 42.8975 19.875 42 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 12.75 28.125 m -12.75 26.8135 11.6865 25.75 10.375 25.75 c -9.0635 25.75 8 26.8135 8 28.125 c -8 29.4365 9.0635 30.5 10.375 30.5 c -11.6865 30.5 12.75 29.4365 12.75 28.125 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 43.25 33 m -43.25 30.998 41.627 29.375 39.625 29.375 c -37.623 29.375 36 30.998 36 33 c -36 35.002 37.623 36.625 39.625 36.625 c -41.627 36.625 43.25 35.002 43.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 43.75 m -13.25 40.9883 11.0117 38.75 8.25 38.75 c -5.4883 38.75 3.25 40.9883 3.25 43.75 c -3.25 46.5117 5.4883 48.75 8.25 48.75 c -11.0117 48.75 13.25 46.5117 13.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 6.5 22.25 m -6.5 20.7314 5.2686 19.5 3.75 19.5 c -2.2314 19.5 1 20.7314 1 22.25 c -1 23.7686 2.2314 25 3.75 25 c -5.2686 25 6.5 23.7686 6.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.0118 0.6 0 k - 0.0235 0.0118 0.6 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 34.4883 32.75 m -34.4883 31.9277 33.8223 31.2617 33 31.2617 c -32.1777 31.2617 31.5117 31.9277 31.5117 32.75 c -31.5117 33.5723 32.1777 34.2383 33 34.2383 c -33.8223 34.2383 34.4883 33.5723 34.4883 32.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 43.75 m -49.25 40.9883 47.0117 38.75 44.25 38.75 c -41.4883 38.75 39.25 40.9883 39.25 43.75 c -39.25 46.5117 41.4883 48.75 44.25 48.75 c -47.0117 48.75 49.25 46.5117 49.25 43.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3922 0.9451 0 0 k - 0.3922 0.9451 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 42.5 22.25 m -42.5 20.7314 41.2686 19.5 39.75 19.5 c -38.2314 19.5 37 20.7314 37 22.25 c -37 23.7686 38.2314 25 39.75 25 c -41.2686 25 42.5 23.7686 42.5 22.25 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 49.25 7.752 m -49.25 4.9902 47.0117 2.752 44.25 2.752 c -41.4883 2.752 39.25 4.9902 39.25 7.752 c -39.25 10.5137 41.4883 12.752 44.25 12.752 c -47.0117 12.752 49.25 10.5137 49.25 7.752 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.8353 0 0 0 k - 0.8353 0 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 37.25 7.875 m -37.25 3.5264 33.7236 0 29.375 0 c -25.0264 0 21.5 3.5264 21.5 7.875 c -21.5 12.2236 25.0264 15.75 29.375 15.75 c -33.7236 15.75 37.25 12.2236 37.25 7.875 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0314 0.0196 0.9137 0 k - 0.0314 0.0196 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 13.25 7.75 m -13.25 4.9883 11.0117 2.75 8.25 2.75 c -5.4883 2.75 3.25 4.9883 3.25 7.75 c -3.25 10.5117 5.4883 12.75 8.25 12.75 c -11.0117 12.75 13.25 10.5117 13.25 7.75 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.9255 0 1 0 k - 0.9255 0 1 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 7.25 33 m -7.25 30.998 5.627 29.375 3.625 29.375 c -1.623 29.375 0 30.998 0 33 c -0 35.002 1.623 36.625 3.625 36.625 c -5.627 36.625 7.25 35.002 7.25 33 c -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.0235 0.4078 0 0 k - 0.0235 0.4078 0 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 39.6533 16.0381 m -39.6533 15.1064 38.8975 14.3506 37.9658 14.3506 c -37.0342 14.3506 36.2783 15.1064 36.2783 16.0381 c -36.2783 16.9697 37.0342 17.7256 37.9658 17.7256 c -38.8975 17.7256 39.6533 16.9697 39.6533 16.0381 c -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Pyramids) -(Pyramids) 1 1 19.5 19.5 [ -%AI3_Tile -(0 O 0 R 0.1882 0.1294 0.102 0.0118 k - 0.1882 0.1294 0.102 0.0118 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 19.5 m -10.25 10.25 l -19.5 19.5 l -1 19.5 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.6235 0.4863 0.4863 0.4784 k - 0.6235 0.4863 0.4863 0.4784 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 1 m -10.25 10.25 l -1 1 l -19.5 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.3529 0.2549 0.2235 0.0667 k - 0.3529 0.2549 0.2235 0.0667 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 1 1 m -10.25 10.25 l -1 19.5 l -1 1 l -f %AI6_EndPatternLayer -) & -(0 O 0 R 0.4902 0.3647 0.3451 0.2196 k - 0.4902 0.3647 0.3451 0.2196 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 1 w 4 M []0 d 19.5 19.5 m -10.25 10.25 l -19.5 1 l -19.5 19.5 l -f %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%AI3_BeginPattern: (Red Stripe) -(Red Stripe) 37 19 73 55 [ -%AI3_Tile -(0 O 0 R 0.0118 0.9608 0.9137 0 k - 0.0118 0.9608 0.9137 0 K -) @ -( -%AI6_BeginPatternLayer -0 J 0 j 18 w 4 M []0 d 37 37 m -73 37 l -S %AI6_EndPatternLayer -) & -] E -%AI3_EndPattern -%%EndSetup -0 A -u 8 i -0 O -0 0 0 0 k -0 J 0 j 1 w 4 M []0 d 195.4497 559.269 m -192.9297 559.269 191.0098 557.3491 191.0098 554.9497 c -191.0098 528.6714 l -191.0098 526.272 192.9297 524.2319 195.4497 524.2319 c -274.2827 524.2319 l -276.6826 524.2319 278.6025 526.272 278.6025 528.6714 c -278.6025 554.9497 l -278.6025 557.3491 276.6826 559.269 274.2827 559.269 c -195.4497 559.269 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 195.4497 559.269 m -192.9297 559.269 191.0098 557.3491 191.0098 554.9497 c -191.0098 528.6714 l -191.0098 526.272 192.9297 524.2319 195.4497 524.2319 c -274.2827 524.2319 l -276.6826 524.2319 278.6025 526.272 278.6025 528.6714 c -278.6025 554.9497 l -278.6025 557.3491 276.6826 559.269 274.2827 559.269 c -195.4497 559.269 l -s 0 To -1 0 0 1 223.7671 537.311 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf -0 Ts -100 Tz --1 Tt -0 TA -0 0 5 TC -100 100 200 TW -0 0 0 Ti -0 Ta -0 Tq -0 0 Tl --0.0117 Tc -0 Tw -(Text) Tx -(\r) Tx -TO -0 0 0 0 k -313.6396 497.9546 m -401.2324 497.9546 l -401.2324 462.9175 l -313.6396 462.9175 l -313.6396 497.9546 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 313.6396 497.9546 m -313.6396 462.9175 l -401.2324 462.9175 l -401.2324 497.9546 l -313.6396 497.9546 l -s 0 To -1 0 0 1 330.5586 476.7163 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --3 Tt --0.035 Tc -(LNew) Tx -(\r) Tx -TO -0 To -1 0 0 1 361.6348 476.7163 0 Tp -TP -0 Tr -20 Tt -0.2336 Tc -(Ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 378.0742 476.7163 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -191.0098 497.9546 m -278.6025 497.9546 l -278.6025 462.9175 l -191.0098 462.9175 l -191.0098 497.9546 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 191.0098 497.9546 m -191.0098 462.9175 l -278.6025 462.9175 l -278.6025 497.9546 l -191.0098 497.9546 l -s 0 To -1 0 0 1 214.168 476.7163 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M 5 Tt -0.0584 Tc -(LG) Tx -(\r) Tx -TO -0 To -1 0 0 1 230.2466 476.7163 0 Tp -TP -0 Tr -11 Tt -0.1285 Tc -(Pr) Tx -(\r) Tx -TO -0 To -1 0 0 1 242.7256 476.7163 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(ep) Tx -(\r) Tx -TO -0 0 0 0 k -195.4497 436.6392 m -192.9297 436.6392 191.0098 434.7192 191.0098 432.3198 c -191.0098 406.041 l -191.0098 403.6426 192.9297 401.7227 195.4497 401.7227 c -274.2827 401.7227 l -276.6826 401.7227 278.6025 403.6426 278.6025 406.041 c -278.6025 432.3198 l -278.6025 434.7192 276.6826 436.6392 274.2827 436.6392 c -195.4497 436.6392 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 195.4497 436.6392 m -192.9297 436.6392 191.0098 434.7192 191.0098 432.3198 c -191.0098 406.041 l -191.0098 403.6426 192.9297 401.7227 195.4497 401.7227 c -274.2827 401.7227 l -276.6826 401.7227 278.6025 403.6426 278.6025 406.041 c -278.6025 432.3198 l -278.6025 434.7192 276.6826 436.6392 274.2827 436.6392 c -195.4497 436.6392 l -s 0 To -1 0 0 1 208.4082 414.6816 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica 11.6789 Tf --7 Tt --0.0818 Tc -(Gr) Tx -(\r) Tx -TO -0 To -1 0 0 1 221.4873 414.6816 0 Tp -TP -0 Tr --12 Tt --0.1401 Tc -(am) Tx -(\r) Tx -TO -0 To -1 0 0 1 240.9258 414.6816 0 Tp -TP -0 Tr -4 Tt -0.0467 Tc -(file) Tx -(\r) Tx -TO -0 To -1 0 0 1 255.9243 414.6816 0 Tp -TP -0 Tr -0 Tt -0 Tc -(s) Tx -(\r) Tx -TO -0 0 0 0 k -318.0791 436.6392 m -315.5596 436.6392 313.6396 434.7192 313.6396 432.3198 c -313.6396 406.041 l -313.6396 403.6426 315.5596 401.7227 318.0791 401.7227 c -396.9121 401.7227 l -399.3125 401.7227 401.2324 403.6426 401.2324 406.041 c -401.2324 432.3198 l -401.2324 434.7192 399.3125 436.6392 396.9121 436.6392 c -318.0791 436.6392 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 318.0791 436.6392 m -315.5596 436.6392 313.6396 434.7192 313.6396 432.3198 c -313.6396 406.041 l -313.6396 403.6426 315.5596 401.7227 318.0791 401.7227 c -396.9121 401.7227 l -399.3125 401.7227 401.2324 403.6426 401.2324 406.041 c -401.2324 432.3198 l -401.2324 434.7192 399.3125 436.6392 396.9121 436.6392 c -318.0791 436.6392 l -s 0 To -1 0 0 1 330.918 414.6816 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M 32 Tt -0.3737 Tc -(Wo) Tx -(\r) Tx -TO -0 To -1 0 0 1 348.5566 414.6816 0 Tp -TP -0 Tr -6 Tt -0.0701 Tc -(rd) Tx -(\r) Tx -TO -0 To -1 0 0 1 361.9961 414.6816 0 Tp -TP -0 Tr -10 Tt -0.1168 Tc -(ma) Tx -(\r) Tx -TO -0 To -1 0 0 1 378.3145 414.6816 0 Tp -TP -0 Tr -0 Tt -0 Tc -(p) Tx -(\r) Tx -TO -0 0 0 0 k -191.0098 375.3242 m -278.6025 375.3242 l -278.6025 340.2871 l -191.0098 340.2871 l -191.0098 375.3242 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 191.0098 375.3242 m -191.0098 340.2871 l -278.6025 340.2871 l -278.6025 375.3242 l -191.0098 375.3242 l -s 0 To -1 0 0 1 212.6079 354.0859 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M /_Helvetica-Bold 11.6789 Tf --4 Tt --0.0467 Tc -(LGCo) Tx -(\r) Tx -TO -0 To -1 0 0 1 244.1655 354.0859 0 Tp -TP -0 Tr -26 Tt -0.3037 Tc -(py) Tx -(\r) Tx -TO -0 0 0 0 k -313.6396 375.3242 m -401.2324 375.3242 l -401.2324 340.2871 l -313.6396 340.2871 l -313.6396 375.3242 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 0.73 w 8 M 313.6396 375.3242 m -313.6396 340.2871 l -401.2324 340.2871 l -401.2324 375.3242 l -313.6396 375.3242 l -s 0 To -1 0 0 1 339.6777 354.0859 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 1 w 4 M -5 Tt --0.0584 Tc -(LBui) Tx -(\r) Tx -TO -0 To -1 0 0 1 365.5957 354.0859 0 Tp -TP -0 Tr --1 Tt --0.0117 Tc -(ld) Tx -(\r) Tx -TO -0 0 0 0 k -318.0791 314.0098 m -315.5596 314.0098 313.6396 312.0898 313.6396 309.6895 c -313.6396 283.4121 l -313.6396 281.0117 315.5596 278.9727 318.0791 278.9727 c -396.9121 278.9727 l -399.3125 278.9727 401.2324 281.0117 401.2324 283.4121 c -401.2324 309.6895 l -401.2324 312.0898 399.3125 314.0098 396.9121 314.0098 c -318.0791 314.0098 l -f 0 R -0.0235 0.0196 0.0196 0.9922 K -1 J 1 j 0.73 w 10 M 318.0791 314.0098 m -315.5596 314.0098 313.6396 312.0898 313.6396 309.6895 c -313.6396 283.4121 l -313.6396 281.0117 315.5596 278.9727 318.0791 278.9727 c -396.9121 278.9727 l -399.3125 278.9727 401.2324 281.0117 401.2324 283.4121 c -401.2324 309.6895 l -401.2324 312.0898 399.3125 314.0098 396.9121 314.0098 c -318.0791 314.0098 l -s 0 To -1 0 0 1 329.5977 291.9316 0 Tp -TP -0 Tr -0 O -0 0 0 1 k -0 J 0 j 1 w 4 M /_Helvetica-Oblique 11.6789 Tf -0 Tt -0 Tc -(n) Tx -(\r) Tx -TO -0 To -1 0 0 1 335.958 291.9316 0 Tp -TP -0 Tr -/_Helvetica 11.6789 Tf -1 Tt -0.0117 Tc -(-gra) Tx -(\r) Tx -TO -0 To -1 0 0 1 356.7168 291.9316 0 Tp -TP -0 Tr -287 Tt -3.3518 Tc -(mL) Tx -(\r) Tx -TO -0 To -1 0 0 1 376.1543 291.9316 0 Tp -TP -0 Tr -0 Tt -0 Tc -(M) Tx -(\r) Tx -TO -*u -0.0235 0.0196 0.0196 0.9922 k -235.166 524.2319 m -235.166 502.8735 l -235.166 502.6343 235.0464 502.5142 234.8062 502.5142 c -234.5664 502.5142 234.4463 502.6343 234.4463 502.8735 c -234.4463 524.2319 l -234.4463 524.4722 234.5664 524.5923 234.8062 524.5923 c -234.9263 524.5923 235.166 524.4722 235.166 524.2319 c -235.166 524.2319 l -f 239.7256 503.8335 m -234.8062 497.9546 l -229.8867 503.8335 l -239.7256 503.8335 l -f *U -*u -235.166 462.9175 m -235.166 441.5591 l -235.166 441.3188 235.0464 441.1987 234.8062 441.1987 c -234.686 441.1987 234.4463 441.3188 234.4463 441.5591 c -234.4463 462.9175 l -234.4463 463.1567 234.5664 463.2769 234.8062 463.2769 c -235.0464 463.2769 235.166 463.1567 235.166 462.9175 c -235.166 462.9175 l -f 239.7256 442.519 m -234.8062 436.6392 l -230.0068 442.519 l -239.7256 442.519 l -f *U -*u -357.7969 462.9175 m -357.916 441.5591 l -357.916 441.3188 357.6758 441.1987 357.4355 441.1987 c -357.3164 441.1987 357.0762 441.3188 357.0762 441.5591 c -357.0762 462.9175 l -357.0762 463.1567 357.1953 463.2769 357.4355 463.2769 c -357.6758 463.2769 357.7969 463.1567 357.7969 462.9175 c -357.7969 462.9175 l -f 362.3555 442.519 m -357.5566 436.6392 l -352.6367 442.519 l -362.3555 442.519 l -f *U -*u -357.7969 401.7227 m -357.916 380.2441 l -357.916 380.0039 357.6758 379.8848 357.4355 379.8848 c -357.3164 379.8848 357.0762 380.0039 357.0762 380.2441 c -357.0762 401.7227 l -357.0762 401.8418 357.1953 402.082 357.4355 402.082 c -357.6758 402.082 357.7969 401.8418 357.7969 401.7227 c -357.7969 401.7227 l -f 362.3555 381.2031 m -357.5566 375.3242 l -352.6367 381.2031 l -362.3555 381.2031 l -f *U -*u -278.9624 419.3608 m -311.5996 362.2461 l -311.5996 362.0059 311.5996 361.8848 311.3594 361.7656 c -311.2402 361.6465 311 361.6465 310.8799 361.8848 c -278.2427 419.0005 l -278.2427 419.1206 278.2427 419.3608 278.4824 419.481 c -278.6025 419.6011 278.8428 419.481 278.9624 419.3608 c -278.9624 419.3608 l -f 314.959 365.3652 m -313.6396 357.8066 l -306.5605 360.4453 l -314.959 365.3652 l -f *U -*u -235.166 396.8027 m -235.166 380.2441 l -235.166 380.0039 235.0464 379.8848 234.8062 379.8848 c -234.686 379.8848 234.4463 380.0039 234.4463 380.2441 c -234.4463 396.8027 l -234.4463 397.043 234.5664 397.1621 234.8062 397.1621 c -235.0464 397.1621 235.166 397.043 235.166 396.8027 c -235.166 396.8027 l -f 230.0068 395.8418 m -234.8062 401.7227 l -239.7256 395.8418 l -230.0068 395.8418 l -f 239.7256 381.2031 m -234.8062 375.3242 l -230.0068 381.2031 l -239.7256 381.2031 l -f *U -*u -357.7969 335.4883 m -357.916 318.9297 l -357.916 318.6895 357.6758 318.5684 357.4355 318.5684 c -357.3164 318.5684 357.0762 318.6895 357.0762 318.9297 c -357.0762 335.4883 l -357.0762 335.6074 357.3164 335.8477 357.4355 335.8477 c -357.6758 335.8477 357.7969 335.6074 357.7969 335.4883 c -357.7969 335.4883 l -f 352.6367 334.4082 m -357.4355 340.2871 l -362.3555 334.5273 l -352.6367 334.4082 l -f 362.3555 319.8887 m -357.5566 314.0098 l -352.6367 319.8887 l -362.3555 319.8887 l -f *U -*u -280.7622 362.2461 m -310.8799 415.1602 l -311 415.2813 311.2402 415.2813 311.3594 415.2813 c -311.5996 415.1602 311.5996 414.9219 311.5996 414.8008 c -281.3623 361.8848 l -281.2422 361.6465 281.0024 361.6465 280.8823 361.7656 c -280.6426 361.8848 280.6426 362.0059 280.7622 362.2461 c -280.7622 362.2461 l -f 285.6821 360.4453 m -278.6025 357.8066 l -277.2827 365.3652 l -285.6821 360.4453 l -f 306.5605 416.4805 m -313.6396 419.1206 l -314.959 411.6816 l -306.5605 416.4805 l -f *U -*u -281.3623 476.4761 m -311.5996 423.5601 l -311.5996 423.3208 311.5996 423.2007 311.3594 423.0806 c -311.2402 422.9604 311 422.9604 310.8799 423.2007 c -280.7622 476.1157 l -280.6426 476.2358 280.6426 476.4761 280.8823 476.5962 c -281.0024 476.7163 281.2422 476.5962 281.3623 476.4761 c -281.3623 476.4761 l -f 277.2827 472.9966 m -278.6025 480.436 l -285.6821 477.7964 l -277.2827 472.9966 l -f 314.959 426.6802 m -313.6396 419.1206 l -306.5605 421.7603 l -314.959 426.6802 l -f *U -U %%PageTrailer -gsave annotatepage grestore showpage -%%Trailer -Adobe_Illustrator_AI3 /terminate get exec -Adobe_pattern_AI3 /terminate get exec -Adobe_typography_AI3 /terminate get exec -Adobe_customcolor /terminate get exec -Adobe_cshow /terminate get exec -Adobe_cmykcolor /terminate get exec -Adobe_packedarray /terminate get exec -%%EOF diff --git a/HTKBook/HTKFigs/bmemops.eps b/HTKBook/HTKFigs/bmemops.eps deleted file mode 100644 index 52efbcd..0000000 --- a/HTKBook/HTKFigs/bmemops.eps +++ /dev/null @@ -1,2191 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: bmemops.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/22/96 9:27:00 a.m. -%%BoundingBox: 27 560 357 765 -%%QDBoundingBox: 27.000 27.000 356.500 232.000 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 81.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 90.000 81.000 0.000 0.000 30.000 69.000 rect -%@EndRect -gsave -115.500 105.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(M) -24.106 -2.000 S -(e) -11.658 -2.000 S -(m) -5.444 -2.000 S -(o) 5.444 -2.000 S -(r) 12.444 -2.000 S -(y) 17.106 -2.000 S -0.000 0.000 0.000 setrgbcolor -(H) -14.769 13.000 S -(e) -4.658 13.000 S -(a) 1.555 13.000 S -(p) 7.769 13.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 27.000 63.000 0.000 0.000 16.000 71.000 rect -%@EndRect -gsave -98.500 35.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F -0.000 0.000 0.000 setrgbcolor -(C) -35.500 4.000 S -(r) -28.298 4.000 S -(e) -21.097 4.000 S -(a) -13.896 4.000 S -(t) -6.695 4.000 S -(e) 0.505 4.000 S -(H) 7.707 4.000 S -(e) 14.908 4.000 S -(a) 22.109 4.000 S -0.000 0.000 0.000 setrgbcolor -(p) -35.500 20.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 72.000 moveto -/Triangular 12.924 9.399 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 116.237 70.855 99.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 153.000 81.000 0.000 0.000 16.000 64.000 rect -%@EndRect -gsave -113.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(R) -31.500 4.000 S -(e) -24.298 4.000 S -(s) -17.097 4.000 S -(e) -9.896 4.000 S -(t) -2.695 4.000 S -0.000 0.000 0.000 setrgbcolor -(H) 4.505 4.000 S -(e) 11.707 4.000 S -(a) 18.908 4.000 S -0.000 0.000 0.000 setrgbcolor -(p) -31.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 171.000 81.000 0.000 0.000 16.000 71.000 rect -%@EndRect -gsave -116.500 179.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(D) -35.500 4.000 S -(e) -28.298 4.000 S -(l) -21.097 4.000 S -(e) -13.896 4.000 S -(t) -6.695 4.000 S -(e) 0.505 4.000 S -0.000 0.000 0.000 setrgbcolor -(H) 7.707 4.000 S -(e) 14.908 4.000 S -(a) 22.109 4.000 S -0.000 0.000 0.000 setrgbcolor -(p) -35.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 216.000 27.000 0.000 0.000 16.000 99.000 rect -%@EndRect -gsave -76.500 224.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(P) -49.500 4.000 S -(r) -42.298 4.000 S -(i) -35.097 4.000 S -(n) -27.896 4.000 S -(t) -20.695 4.000 S -0.000 0.000 0.000 setrgbcolor -(H) -13.494 4.000 S -(e) -6.292 4.000 S -(a) 0.908 4.000 S -(p) 8.109 4.000 S -(S) 15.310 4.000 S -(t) 22.511 4.000 S -(a) 29.712 4.000 S -(t) 36.914 4.000 S -0.000 0.000 0.000 setrgbcolor -(s) -49.500 20.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 126.000 54.000 0.000 0.000 126.000 36.000 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 126.000 54.000 0.000 0.000 126.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.000 207.000 moveto -/Triangular 12.924 9.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.999 205.625 54.000 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 81.000 216.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 126.000 225.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 90.000 moveto -/Triangular 12.924 9.399 false 168.702 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.651 90.269 162.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 135.000 moveto -/Triangular 12.924 9.399 false 191.323 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.651 134.730 162.000 126.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 105.000 176.000 0.000 0.000 16.000 22.000 rect -%@EndRect -gsave -187.000 113.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(N) -10.500 4.000 S -(e) -3.298 4.000 S -(w) 3.902 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 32.355 167.000 0.000 0.000 69.414 189.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 20.769 268.765 0.000 0.000 92.585 87.234 rect -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 20.769 268.765 0.000 0.000 92.585 87.234 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -164.242 72.792 moveto -/Triangular 12.924 9.399 false 292.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 164.757 71.518 169.894 58.800 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 105.000 257.000 0.000 0.000 16.000 50.000 rect -%@EndRect -gsave -282.000 113.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess -0.000 0.000 0.000 setrgbcolor -(D) -24.500 4.000 S -(i) -17.298 4.000 S -(s) -10.097 4.000 S -(p) -2.896 4.000 S -(o) 4.304 4.000 S -(s) 11.505 4.000 S -0.000 0.000 0.000 setrgbcolor -(e) -24.500 20.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/bobig.eps b/HTKBook/HTKFigs/bobig.eps deleted file mode 100644 index fba2472..0000000 --- a/HTKBook/HTKFigs/bobig.eps +++ /dev/null @@ -1,2776 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: bobig.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/3/95 3:45:41 p.m. -%%BoundingBox: 49.514 520.500 396.714 759.500 -%%QDBoundingBox: 49.514 32.500 396.714 271.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 88.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 86.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 96.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 102.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 124.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 138.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 160.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 168.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 174.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 196.500 282.014 0.000 0.000 18.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 194.000 309.514 0.000 0.000 20.000 12.999 rect -%@EndRect -gsave -316.013 204.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.985 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.000 324.514 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -327.514 210.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -2.985 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 92.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 164.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 200.500 237.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 92.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 164.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 200.500 174.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 97.500 183.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 79.500 138.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 79.500 138.014 79.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 97.500 381.014 79.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.014 97.500 381.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 133.500 174.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 70.500 129.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 70.500 129.014 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 133.500 390.014 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.014 133.500 390.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 205.500 174.014 205.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.014 223.500 138.014 205.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 223.500 138.014 223.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 381.014 205.500 381.014 223.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.014 205.500 381.014 205.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 169.500 354.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 390.014 232.500 390.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 232.500 390.014 232.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.014 169.500 129.014 232.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 183.014 169.500 129.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 237.014 97.500 183.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 132.500 179.014 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 169.500 179.014 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 206.500 180.014 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 132.500 180.014 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 97.500 178.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 168.500 178.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 205.500 179.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 194.014 185.500 179.014 170.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.014 205.500 194.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 205.500 193.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.014 169.500 194.014 186.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.014 134.500 193.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.014 97.500 193.014 185.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 189.014 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 97.500 237.014 97.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 133.500 237.014 133.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 169.500 237.014 169.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 282.014 205.500 237.014 205.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 247.014 0.000 0.000 16.000 7.786 rect -%@EndRect -gsave -250.907 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -3.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 258.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -260.345 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -1.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 264.014 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -269.069 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 38.500 276.014 0.000 0.000 14.000 3.333 rect -%@EndRect -gsave -277.681 45.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.485 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 282.014 0.000 0.000 16.000 2.802 rect -%@EndRect -gsave -283.415 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -0.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 287.014 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -292.069 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 299.014 0.000 0.000 14.000 4.025 rect -%@EndRect -gsave -301.026 44.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -0.794 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 32.500 307.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -309.345 40.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -1.485 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -208.014 112.500 moveto -/Triangular 14.099 7.049 false 302.369 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.084 110.810 246.014 52.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 34.000 320.514 0.000 0.000 16.000 76.200 rect -%@EndRect -gsave -358.614 42.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -37.985 4.000 S -(e) -34.096 4.000 S -( ) -27.882 4.000 S -(f) -24.382 4.000 S -(u) -19.720 4.000 S -(l) -12.720 4.000 S -(l) -8.830 4.000 S -( ) -4.940 4.000 S -(b) -1.440 4.000 S -(i) 5.559 4.000 S -(g) 9.448 4.000 S -(r) 16.448 4.000 S -(a) 21.110 4.000 S -(m) 27.324 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 229.514 0.000 0.000 16.000 7.786 rect -%@EndRect -gsave -233.407 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -2.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 240.514 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -242.845 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -1.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 246.514 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -251.569 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.500 258.514 0.000 0.000 14.000 3.333 rect -%@EndRect -gsave -260.181 264.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -0.985 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 251.500 265.514 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -267.845 259.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -1.985 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.000 281.514 0.000 0.000 16.000 60.258 rect -%@EndRect -gsave -311.643 260.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -29.985 4.000 S -(e) -26.096 4.000 S -( ) -19.882 4.000 S -(u) -16.382 4.000 S -(n) -9.382 4.000 S -(i) -2.382 4.000 S -(g) 1.507 4.000 S -(r) 8.507 4.000 S -(a) 13.169 4.000 S -(m) 19.383 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -219.014 196.500 moveto -/Triangular 14.099 7.049 false 437.502 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.448 198.452 231.014 250.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 51.014 0.000 0.000 16.000 9.337 rect -%@EndRect -gsave -55.683 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 63.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -65.345 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -1.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 69.014 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -74.069 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -4.485 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 134.500 80.014 0.000 0.000 14.000 4.025 rect -%@EndRect -gsave -82.026 141.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -0.794 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 87.014 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -89.345 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -1.485 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -186.014 195.500 moveto -/Triangular 14.099 7.049 false 210.570 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 184.291 194.483 103.014 146.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 152.000 49.514 0.000 0.000 31.000 57.972 rect -%@EndRect -gsave -78.500 167.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -28.985 -4.000 S -(a) -21.985 -4.000 S -(c) -15.771 -4.000 S -(k) -9.558 -4.000 S -(o) -2.558 -4.000 S -(f) 4.441 -4.000 S -(f) 9.104 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -28.985 11.000 S -(e) -18.875 11.000 S -(i) -12.661 11.000 S -(g) -8.771 11.000 S -(h) -1.771 11.000 S -(t) 5.228 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 134.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 134.000 360.000 134.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 170.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 170.000 360.000 170.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 206.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 206.000 360.000 206.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 98.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.714 98.000 360.000 98.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 134.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 134.000 149.000 134.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 170.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 170.000 149.000 170.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 206.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 206.000 149.000 206.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -167.000 98.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.714 98.000 149.000 98.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/clusterset.eps b/HTKBook/HTKFigs/clusterset.eps deleted file mode 100644 index e04a458..0000000 --- a/HTKBook/HTKFigs/clusterset.eps +++ /dev/null @@ -1,259 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: clusterset.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:12:00 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.00 -%%Orientation: Portrait -%%BoundingBox: 0 0 416 207 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --53.0 263.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06000 0.06000 sc -7.500 slw -% Ellipse -n 5259 2550 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 3450 2550 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5250 2850 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 900 1200 m 2700 1200 l 2700 2700 l 900 2700 l cp gs col-1 s gr -% Polyline -n 900 1500 m 2700 1500 l gs col-1 s gr -% Polyline -n 900 1800 m 2700 1800 l gs col-1 s gr -% Polyline -n 900 2100 m 2700 2100 l gs col-1 s gr -% Polyline -n 900 2400 m 2700 2400 l gs col-1 s gr -% Polyline -n 3300 2400 m 3600 2400 l 3600 3900 l 3300 3900 l cp gs col-1 s gr -% Polyline -n 3300 2700 m 3600 2700 l gs col-1 s gr -% Polyline -n 3300 3000 m 3600 3000 l gs col-1 s gr -% Polyline -n 3300 3300 m 3600 3300 l gs col-1 s gr -% Polyline -n 3300 3600 m 3600 3600 l gs col-1 s gr -% Polyline -n 4200 2400 m 5400 2400 l gs col-1 s gr -% Polyline -n 4200 2700 m 5400 2700 l gs col-1 s gr -% Polyline -n 4200 3000 m 5400 3000 l gs col-1 s gr -% Polyline -n 6300 2700 m 7800 2700 l 7800 3000 l 6300 3000 l cp gs col-1 s gr -% Polyline -n 6300 3300 m 7800 3300 l 7800 3600 l 6300 3600 l cp gs col-1 s gr -% Polyline -n 4200 2100 m 5400 2100 l 5400 3300 l 4200 3300 l cp gs col-1 s gr -% Polyline -n 6600 2700 m 6600 3000 l gs col-1 s gr -% Polyline -n 6900 2700 m 6900 3000 l gs col-1 s gr -% Polyline -n 7200 2700 m 7200 3000 l gs col-1 s gr -% Ellipse -n 2550 2550 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 7500 2700 m 7500 3000 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -4275 3225 m -gs 1 -1 sc (aveCost = 1.2) col-1 sh gr -% Polyline -n 6600 3300 m 6600 3600 l gs col-1 s gr -% Polyline -n 6900 3300 m 6900 3600 l gs col-1 s gr -% Polyline -n 7200 3300 m 7200 3600 l gs col-1 s gr -% Polyline -n 7500 3300 m 7500 3600 l gs col-1 s gr -% Interp Spline -gs clippath -3222 2272 m 3281 2380 l 3178 2313 l 3288 2431 l 3332 2391 l cp clip -n 2625 2550 m - 2832.6 2325.0 2945.1 2250.0 3075 2250 curveto - 3139.9 2250.0 3196.2 2287.5 3300 2400 curveto - gs col-1 s gr - gr - -% arrowhead -n 3222 2272 m 3281 2380 l 3178 2313 l 3200 2292 l 3222 2272 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4104 1985 m 4178 2083 l 4066 2032 l 4193 2133 l 4230 2086 l cp clip -n 3525 2550 m - 3528.2 2179.0 3584.4 2029.0 3750 1950 curveto - 3872.6 1891.5 3985.1 1929.0 4200 2100 curveto - gs col-1 s gr - gr - -% arrowhead -n 4104 1985 m 4178 2083 l 4066 2032 l 4085 2008 l 4104 1985 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6224 2571 m 6281 2679 l 6179 2611 l 6288 2731 l 6332 2691 l cp clip -n 5250 2550 m - 5613.9 2404.5 5782.6 2367.0 5925 2400 curveto - 6023.9 2422.9 6117.6 2497.9 6300 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 6224 2571 m 6281 2679 l 6179 2611 l 6202 2591 l 6224 2571 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6218 3175 m 6280 3280 l 6175 3217 l 6289 3332 l 6332 3289 l cp clip -n 5250 2850 m - 5596.0 2861.1 5746.0 2879.8 5850 2925 curveto - 5950.8 2968.7 6063.3 3062.5 6300 3300 curveto - gs col-1 s gr - gr - -% arrowhead -n 6218 3175 m 6280 3280 l 6175 3217 l 6196 3196 l 6218 3175 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (x) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1725 m -gs 1 -1 sc (isTree - FALSE) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2025 m -gs 1 -1 sc (numClust = 5) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2325 m -gs 1 -1 sc (ck - DIAGC) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2625 m -gs 1 -1 sc (cl) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4425 2625 m -gs 1 -1 sc (vCtr) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4425 2925 m -gs 1 -1 sc (cov) col-1 sh gr -/Times-Bold ff 180.00 scf sf -1425 1050 m -gs 1 -1 sc (ClusterSet) col-1 sh gr -/Times-Roman ff 180.00 scf sf -6675 3900 m -gs 1 -1 sc (Covariance) col-1 sh gr -/Times-Roman ff 180.00 scf sf -6750 2550 m -gs 1 -1 sc (Centroid) col-1 sh gr -/Times-Bold ff 180.00 scf sf -4500 1950 m -gs 1 -1 sc (Cluster) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2625 4125 m -gs 1 -1 sc (Array [1..numClust]) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2625 4350 m -gs 1 -1 sc (of Cluster) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4425 2325 m -gs 1 -1 sc (csize = 12) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/coercions.eps b/HTKBook/HTKFigs/coercions.eps deleted file mode 100644 index 6891c2c..0000000 --- a/HTKBook/HTKFigs/coercions.eps +++ /dev/null @@ -1,1332 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: coercions.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/30/94 11:49:39 a.m. -%%BoundingBox: 0.500 618.000 315.505 748.000 -%%QDBoundingBox: 0.500 44.000 315.505 174.000 -%%DocumentFonts: -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 0.500 0.000 0.000 17.000 43.207 rect -%@EndRect -gsave -22.103 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -21.000 4.000 S -(P) -13.798 4.000 S -(R) -6.597 4.000 S -(E) 0.603 4.000 S -(F) 7.804 4.000 S -(C) 15.005 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 99.500 0.000 0.000 17.000 21.603 rect -%@EndRect -gsave -110.301 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -10.000 4.000 S -(P) -2.798 4.000 S -(C) 4.402 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.000 72.500 0.000 0.000 17.000 64.810 rect -%@EndRect -gsave -104.905 165.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -32.000 4.000 S -(P) -24.798 4.000 S -(C) -17.597 4.000 S -(E) -10.396 4.000 S -(P) -3.195 4.000 S -(S) 4.005 4.000 S -(T) 11.207 4.000 S -(R) 18.408 4.000 S -(A) 25.609 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 171.500 0.000 0.000 17.000 50.408 rect -%@EndRect -gsave -196.704 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -25.000 4.000 S -(E) -17.798 4.000 S -(L) -10.597 4.000 S -(S) -3.396 4.000 S -(P) 3.804 4.000 S -(E) 11.005 4.000 S -(C) 18.207 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 279.500 0.000 0.000 17.000 36.005 rect -%@EndRect -gsave -297.502 102.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -18.000 4.000 S -(B) -10.798 4.000 S -(A) -3.597 4.000 S -(N) 3.603 4.000 S -(K) 10.804 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 157.000 279.500 0.000 0.000 17.000 28.804 rect -%@EndRect -gsave -293.902 165.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -14.000 4.000 S -(F) -6.798 4.000 S -(C) 0.402 4.000 S -(C) 7.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -45.500 103.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -90.500 103.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.500 103.000 47.500 103.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.500 103.000 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -270.500 103.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 268.500 103.000 227.500 103.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.500 112.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -108.500 157.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.499 155.000 108.500 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.500 157.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.499 155.000 297.500 112.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 44.000 127.500 0.000 0.000 17.000 57.609 rect -%@EndRect -gsave -156.304 52.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -28.000 4.000 S -(A) -20.798 4.000 S -(V) -13.597 4.000 S -(E) -6.396 4.000 S -(F) 0.804 4.000 S -(O) 8.005 4.000 S -(R) 15.207 4.000 S -(M) 22.408 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -118.500 89.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 119.609 87.335 136.500 62.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -190.500 89.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.390 87.335 172.500 62.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/cover.eps b/HTKBook/HTKFigs/cover.eps deleted file mode 100644 index 5df642b..0000000 --- a/HTKBook/HTKFigs/cover.eps +++ /dev/null @@ -1,134 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: cover.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 469 512 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 512 moveto 0 0 lineto 469 0 lineto 469 512 lineto closepath clip newpath --107.0 546.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -/Times-Roman ff 750.00 scf sf -9600 5625 m -gs 1 -1 sc (Steve Young) dup sw pop neg 0 rm col-1 sh gr -% Polyline -60.000 slw -n 2400 7275 m - 5100 7275 l gs col-1 s gr -% Polyline -n 2400 7950 m - 5100 7950 l gs col-1 s gr -/Times-Bold ff 900.00 scf sf -1800 1200 m -gs 1 -1 sc (The) col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 6750 m -gs 1 -1 sc (Dan Kershaw) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 7335 m -gs 1 -1 sc (Julian Odell) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 7920 m -gs 1 -1 sc (Dave Ollason) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 8505 m -gs 1 -1 sc (Valtcho Valtchev) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 525.00 scf sf -9600 9090 m -gs 1 -1 sc (Phil Woodland) dup sw pop neg 0 rm col-1 sh gr -/Times-Bold ff 1125.00 scf sf -6000 3600 m -gs 1 -1 sc (BOOK) col-1 sh gr -/Times-Bold ff 2100.00 scf sf -3150 3600 m -gs 1 -1 sc (T) col-1 sh gr -/Times-Bold ff 1425.00 scf sf -4200 3600 m -gs 1 -1 sc (K) col-1 sh gr -/Times-Bold ff 1425.00 scf sf -2370 3600 m -gs 1 -1 sc (H) col-1 sh gr -/Times-Bold ff 525.00 scf sf -2400 7800 m -gs 1 -1 sc (Version 2.2) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/dbhier.eps b/HTKBook/HTKFigs/dbhier.eps deleted file mode 100644 index 6c2bf28..0000000 --- a/HTKBook/HTKFigs/dbhier.eps +++ /dev/null @@ -1,2736 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: dbhier.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:2/10/95 11:21:30 p.m. -%%BoundingBox: 62.500 598.000 412.484 786.708 -%%QDBoundingBox: 62.500 5.291 412.484 194.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.984 63.000 325.984 54.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 63.000 298.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 72.000 298.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.984 72.000 325.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.984 72.000 352.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.984 72.000 379.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 72.000 406.984 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 99.000 298.984 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.984 99.000 271.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.984 108.000 271.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 108.000 298.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.984 108.000 325.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.984 108.000 352.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.984 108.000 379.984 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 135.000 298.984 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 135.000 262.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.984 144.000 262.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.984 144.000 298.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 334.984 144.000 334.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 370.984 144.000 370.984 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 406.984 144.000 406.984 135.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 253.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -266.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(1) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 289.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -302.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(2) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 325.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -338.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(3) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 361.984 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -374.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -12.515 3.000 S -(4) -7.515 3.000 S -(.) -2.515 3.000 S -(l) -0.015 3.000 S -(a) 2.762 3.000 S -(b) 7.200 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 397.984 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -404.984 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.515 3.000 S -( ) -4.015 3.000 S -(.) -1.515 3.000 S -( ) 0.984 3.000 S -(.) 3.484 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 262.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -270.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(1) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 289.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -297.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(2) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 316.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -324.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(3) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 343.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -351.484 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.515 3.000 S -(p) -2.624 3.000 S -(4) 2.375 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 289.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -297.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(1) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 316.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -324.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(2) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 343.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -351.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(3) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 370.984 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -378.484 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.515 3.000 S -(r) -1.515 3.000 S -(4) 1.814 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 397.984 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -404.984 79.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.515 3.000 S -( ) -4.015 3.000 S -(.) -1.515 3.000 S -( ) 0.984 3.000 S -(.) 3.484 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 370.984 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -377.984 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.515 3.000 S -( ) -4.015 3.000 S -(.) -1.515 3.000 S -( ) 0.984 3.000 S -(.) 3.484 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 74.500 121.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -126.500 80.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -5.500 3.000 S -(b) -0.500 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.204 27.000 99.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 36.000 99.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.204 36.708 325.204 27.708 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 63.000 99.000 54.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 63.000 72.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 72.000 72.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 72.000 99.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 72.000 126.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 99.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 99.000 99.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 108.000 99.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 108.000 126.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 108.000 153.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 108.000 180.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 108.000 207.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 135.000 99.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 135.000 72.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 144.000 72.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 144.000 99.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 144.000 126.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 144.000 153.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 144.000 180.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 171.000 99.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 171.000 72.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 180.000 72.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 180.000 108.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 180.000 144.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 180.000 180.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 180.000 216.000 171.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 63.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -78.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(1) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 99.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -114.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(2) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 135.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -150.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(3) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 171.000 0.000 0.000 12.000 31.000 rect -%@EndRect -gsave -186.500 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -15.500 3.000 S -(4) -10.500 3.000 S -(.) -5.500 3.000 S -(w) -3.000 3.000 S -(a) 4.221 3.000 S -(v) 8.660 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 207.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -214.000 187.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.500 3.000 S -( ) -4.000 3.000 S -(.) -1.500 3.000 S -( ) 1.000 3.000 S -(.) 3.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 63.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -70.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(1) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 90.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -97.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(2) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 117.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -124.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(3) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 144.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -151.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 3.000 S -(p) -3.608 3.000 S -(4) 1.391 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 90.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -97.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(1) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 117.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -124.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(2) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 144.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -151.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(3) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 171.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -178.500 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -7.500 3.000 S -(r) -2.500 3.000 S -(4) 0.830 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 198.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -205.000 115.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.500 3.000 S -( ) -4.000 3.000 S -(.) -1.500 3.000 S -( ) 1.000 3.000 S -(.) 3.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 90.000 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -101.500 43.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -11.500 3.000 S -(i) -6.500 3.000 S -(s) -3.721 3.000 S -(k) 0.169 3.000 S -(1) 5.169 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 5.791 218.334 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -220.334 11.791 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(/) -1.165 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.543 27.000 219.543 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.543 36.000 219.543 27.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 210.543 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -222.043 43.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.956 3.000 S -(i) -5.956 3.000 S -(s) -3.178 3.000 S -(k) 0.713 3.000 S -(2) 5.713 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.500 316.204 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -327.704 43.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -11.295 3.000 S -(i) -6.295 3.000 S -(s) -3.516 3.000 S -(k) 0.374 3.000 S -(3) 5.374 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 171.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -178.000 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -6.500 3.000 S -( ) -4.000 3.000 S -(.) -1.500 3.000 S -( ) 1.000 3.000 S -(.) 3.500 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/decflow.eps b/HTKBook/HTKFigs/decflow.eps deleted file mode 100644 index f481bd8..0000000 --- a/HTKBook/HTKFigs/decflow.eps +++ /dev/null @@ -1,2100 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: decflow.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 9:55:43 a.m. -%%BoundingBox: 85.887 149.000 320.934 782.500 -%%QDBoundingBox: 85.887 9.500 320.934 643.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 585.000 90.000 117.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 162.500 0.000 0.000 31.000 108.465 rect -%@EndRect -gsave -216.732 86.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -54.000 -3.000 S -(r) -44.662 -3.000 S -(e) -40.000 -3.000 S -(a) -33.786 -3.000 S -(t) -27.572 -3.000 S -(e) -23.682 -3.000 S -( ) -17.468 -3.000 S -(R) -13.968 -3.000 S -(e) -4.630 -3.000 S -(c) 1.583 -3.000 S -(o) 7.796 -3.000 S -(g) 14.796 -3.000 S -(n) 21.796 -3.000 S -(i) 28.796 -3.000 S -(t) 32.686 -3.000 S -(i) 36.576 -3.000 S -(o) 40.465 -3.000 S -(n) 47.465 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.260 12.000 S -(e) -14.149 12.000 S -(t) -7.936 12.000 S -(w) -4.046 12.000 S -(o) 6.063 12.000 S -(r) 13.063 12.000 S -(k) 17.726 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 144.000 0.000 0.000 45.000 144.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 162.500 0.000 0.000 16.000 108.465 rect -%@EndRect -gsave -216.732 161.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -46.227 4.000 S -(t) -38.441 4.000 S -(a) -34.551 4.000 S -(r) -28.337 4.000 S -(t) -23.675 4.000 S -( ) -19.786 4.000 S -(R) -16.286 4.000 S -(e) -6.948 4.000 S -(c) -0.734 4.000 S -(o) 5.479 4.000 S -(g) 12.479 4.000 S -(n) 19.479 4.000 S -(i) 26.479 4.000 S -(s) 30.369 4.000 S -(e) 35.817 4.000 S -(r) 42.031 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 144.000 0.000 0.000 36.000 144.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 241.500 162.500 0.000 0.000 31.000 108.465 rect -%@EndRect -gsave -216.732 257.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -49.143 -3.000 S -(e) -39.805 -3.000 S -(a) -33.591 -3.000 S -(d) -27.377 -3.000 S -( ) -20.377 -3.000 S -(a) -16.877 -3.000 S -(n) -10.663 -3.000 S -(d) -3.663 -3.000 S -( ) 3.336 -3.000 S -(P) 6.836 -3.000 S -(r) 14.622 -3.000 S -(o) 19.284 -3.000 S -(c) 26.284 -3.000 S -(e) 32.498 -3.000 S -(s) 38.712 -3.000 S -(s) 44.160 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -33.980 12.000 S -(b) -23.870 12.000 S -(s) -16.870 12.000 S -(e) -11.422 12.000 S -(r) -5.208 12.000 S -(v) -0.546 12.000 S -(a) 6.453 12.000 S -(t) 12.667 12.000 S -(i) 16.557 12.000 S -(o) 20.446 12.000 S -(n) 27.446 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 234.000 144.000 0.000 0.000 45.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 63.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 61.357 216.000 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 144.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 142.357 216.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 234.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 232.357 216.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 252.000 moveto -/Triangular 13.512 8.224 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 253.642 117.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.000 351.000 moveto -/Triangular 13.512 8.224 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 352.642 90.000 369.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 117.000 216.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 207.000 216.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 324.000 117.000 207.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 297.000 162.000 0.000 0.000 54.000 108.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[54.000 0.000] CP -[0.000 27.000] CP -[54.000 54.000 ] CP -[108.000 27.000 ] CP -[108.000 27.000 54.000 0.000 54.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 308.500 193.500 0.000 0.000 31.000 46.641 rect -%@EndRect -gsave -216.820 324.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -18.536 -3.000 S -(n) -9.984 -3.000 S -(d) -2.984 -3.000 S -( ) 4.015 -3.000 S -(o) 7.515 -3.000 S -(f) 14.515 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -23.000 12.000 S -(p) -15.213 12.000 S -(e) -8.213 12.000 S -(e) -2.000 12.000 S -(c) 4.213 12.000 S -(h) 10.427 12.000 S -(?) 17.427 12.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 297.000 216.000 279.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 324.000 162.000 324.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 387.500 162.500 0.000 0.000 16.000 108.465 rect -%@EndRect -gsave -216.732 395.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -46.207 4.000 S -(e) -36.096 4.000 S -(n) -29.882 4.000 S -(e) -22.882 4.000 S -(r) -16.668 4.000 S -(a) -12.006 4.000 S -(t) -5.792 4.000 S -(e) -1.903 4.000 S -( ) 4.310 4.000 S -(L) 7.810 4.000 S -(a) 16.362 4.000 S -(t) 22.576 4.000 S -(t) 26.465 4.000 S -(i) 30.355 4.000 S -(c) 34.245 4.000 S -(e) 40.458 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 378.000 144.000 0.000 0.000 36.000 144.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 304.500 144.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -149.555 312.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 349.500 225.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -230.555 357.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -5.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 378.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 376.357 216.000 351.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 475.500 162.500 0.000 0.000 31.000 108.465 rect -%@EndRect -gsave -216.732 491.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -29.513 -3.000 S -(o) -20.175 -3.000 S -(n) -13.175 -3.000 S -(v) -6.175 -3.000 S -(e) 0.824 -3.000 S -(r) 7.038 -3.000 S -(t) 11.700 -3.000 S -( ) 15.589 -3.000 S -(t) 19.089 -3.000 S -(o) 22.979 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -37.477 12.000 S -(r) -28.925 12.000 S -(a) -24.263 12.000 S -(n) -18.049 12.000 S -(s) -11.049 12.000 S -(c) -5.601 12.000 S -(r) 0.612 12.000 S -(i) 5.274 12.000 S -(p) 9.164 12.000 S -(t) 16.164 12.000 S -(i) 20.053 12.000 S -(o) 23.943 12.000 S -(n) 30.943 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 468.000 144.000 0.000 0.000 45.000 144.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 558.000 162.000 0.000 0.000 54.000 108.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[54.000 0.000] CP -[0.000 27.000] CP -[54.000 54.000 ] CP -[108.000 27.000 ] CP -[108.000 27.000 54.000 0.000 54.000 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 567.500 183.500 0.000 0.000 46.000 64.641 rect -%@EndRect -gsave -215.820 590.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -22.617 -11.000 S -(n) -12.506 -11.000 S -(o) -5.506 -11.000 S -(t) 1.493 -11.000 S -(h) 5.382 -11.000 S -(e) 12.382 -11.000 S -(r) 18.596 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -26.882 4.000 S -(t) -16.772 4.000 S -(t) -12.882 4.000 S -(e) -8.993 4.000 S -(r) -2.779 4.000 S -(a) 1.882 4.000 S -(n) 8.096 4.000 S -(c) 15.096 4.000 S -(e) 21.310 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(?) -2.786 19.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 565.500 144.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -149.555 573.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 610.500 234.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -239.555 618.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -5.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 468.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 466.357 216.000 414.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 558.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 556.357 216.000 513.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 585.000 162.000 585.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 643.000 moveto -/Triangular 13.512 8.224 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 641.357 216.000 613.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 252.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -286.717 25.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -34.000 -3.000 S -(e) -24.662 -3.000 S -(c) -18.448 -3.000 S -(o) -12.234 -3.000 S -(g) -5.234 -3.000 S -(n) 1.765 -3.000 S -(i) 8.765 -3.000 S -(t) 12.655 -3.000 S -(i) 16.544 -3.000 S -(o) 20.434 -3.000 S -(n) 27.434 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.275 12.000 S -(e) -14.165 12.000 S -(t) -7.951 12.000 S -(w) -4.062 12.000 S -(o) 6.048 12.000 S -(r) 13.048 12.000 S -(k) 17.710 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -252.000 45.000 moveto -/Triangular 16.099 9.799 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 255.285 44.999 315.000 45.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 187.500 248.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -282.717 203.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -27.393 -3.000 S -(n) -17.282 -3.000 S -(k) -10.282 -3.000 S -(n) -3.282 -3.000 S -(o) 3.717 -3.000 S -(w) 10.717 -3.000 S -(n) 20.827 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -19.996 12.000 S -(p) -12.210 12.000 S -(e) -5.210 12.000 S -(e) 1.003 12.000 S -(c) 7.217 12.000 S -(h) 13.431 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -247.000 224.000 moveto -/Triangular 16.099 9.799 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 250.285 223.999 310.000 224.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 421.500 248.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -282.717 437.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -19.213 -3.000 S -(a) -10.662 -3.000 S -(t) -4.448 -3.000 S -(t) -0.558 -3.000 S -(i) 3.331 -3.000 S -(c) 7.220 -3.000 S -(e) 13.434 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.506 12.000 S -(S) -11.844 12.000 S -(L) -4.058 12.000 S -(F) 4.493 12.000 S -(\)) 12.279 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -310.000 458.000 moveto -/Triangular 16.099 9.799 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 306.714 458.000 247.000 458.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 520.500 248.500 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -282.717 536.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -28.356 -3.000 S -(a) -19.805 -3.000 S -(b) -13.591 -3.000 S -(e) -6.591 -3.000 S -(l) -0.377 -3.000 S -( ) 3.512 -3.000 S -(F) 7.012 -3.000 S -(i) 14.798 -3.000 S -(l) 18.687 -3.000 S -(e) 22.577 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -21.756 12.000 S -(r) -14.756 12.000 S -( ) -10.094 12.000 S -(M) -6.594 12.000 S -(L) 5.853 12.000 S -(F) 14.405 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -310.000 557.000 moveto -/Triangular 16.099 9.799 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 306.714 557.000 247.000 557.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/decinet.eps b/HTKBook/HTKFigs/decinet.eps deleted file mode 100644 index fc7456c..0000000 --- a/HTKBook/HTKFigs/decinet.eps +++ /dev/null @@ -1,1558 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: decinet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/3/95 3:37:31 p.m. -%%BoundingBox: 44.500 665.500 306.000 760.112 -%%QDBoundingBox: 44.500 31.887 306.000 126.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 153.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.500 162.500 0.000 0.000 16.000 28.779 rect -%@EndRect -gsave -176.889 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -14.000 4.000 S -(o) -7.000 4.000 S -(i) 0.000 4.000 S -(n) 3.889 4.000 S -(t) 10.889 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 54.000 81.000 0.000 0.000 72.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 60.000 93.500 0.000 0.000 61.000 27.979 rect -%@EndRect -gsave -107.489 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.000 -19.000 S -(n) -6.000 -19.000 S -(e) 1.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.000 -4.000 S -(w) -9.110 -4.000 S -(o) 1.000 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -13.000 11.000 S -(.) -9.500 11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -13.000 26.000 S -(e) -6.786 26.000 S -(r) -0.572 26.000 S -(o) 4.089 26.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.714 90.000 45.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.714 90.000 126.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 36.000 72.000 36.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 45.000 63.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 90.000 135.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 117.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 63.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.000 36.000 moveto -/Triangular 10.574 8.224 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 91.285 35.999 108.000 36.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 54.000 234.000 0.000 0.000 72.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 60.000 246.500 0.000 0.000 61.000 27.979 rect -%@EndRect -gsave -260.489 90.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.000 -19.000 S -(n) -6.000 -19.000 S -(e) 1.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.000 -4.000 S -(w) -9.110 -4.000 S -(o) 1.000 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -13.000 11.000 S -(.) -9.500 11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -13.000 26.000 S -(e) -6.786 26.000 S -(r) -0.572 26.000 S -(o) 4.089 26.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.714 90.000 198.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -306.000 90.000 moveto -/Triangular 10.574 8.224 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 304.714 90.000 279.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 36.000 225.000 36.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 45.000 216.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 90.000 288.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 270.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 36.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.000 36.000 moveto -/Triangular 10.574 8.224 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 244.285 35.999 261.000 36.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/dialnet.eps b/HTKBook/HTKFigs/dialnet.eps deleted file mode 100644 index a16791e..0000000 --- a/HTKBook/HTKFigs/dialnet.eps +++ /dev/null @@ -1,3151 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: dialnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/17/95 9:01:19 p.m. -%%BoundingBox: 35.500 494.500 477.000 776.937 -%%QDBoundingBox: 35.500 15.062 477.000 297.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 146.500 78.470 0.000 0.000 14.000 43.986 rect -%@EndRect -gsave -100.463 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -21.029 3.000 S -(e) -16.359 3.000 S -(n) -11.033 3.000 S -(t) -5.033 3.000 S -(-) -1.699 3.000 S -(s) 2.296 3.000 S -(t) 6.966 3.000 S -(a) 10.300 3.000 S -(r) 15.626 3.000 S -(t) 19.622 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 72.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 70.399 153.000 36.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 142.399 153.000 126.000 153.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 38.500 256.836 0.000 0.000 14.000 17.326 rect -%@EndRect -gsave -265.500 45.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -8.663 3.000 S -(n) -2.663 3.000 S -(e) 3.336 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 65.500 256.500 0.000 0.000 14.000 18.000 rect -%@EndRect -gsave -265.500 72.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -9.000 3.000 S -(w) -5.666 3.000 S -(o) 3.000 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 92.500 253.508 0.000 0.000 14.000 23.982 rect -%@EndRect -gsave -265.500 99.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -11.991 3.000 S -(h) -8.657 3.000 S -(r) -2.657 3.000 S -(e) 1.338 3.000 S -(e) 6.665 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 146.500 255.175 0.000 0.000 14.000 20.648 rect -%@EndRect -gsave -265.500 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -10.324 3.000 S -(e) -4.998 3.000 S -(r) 0.328 3.000 S -(o) 4.324 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 72.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 108.000 234.000 54.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 110.500 175.502 0.000 0.000 14.000 17.994 rect -%@EndRect -gsave -184.500 117.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -8.997 3.000 S -(i) -2.997 3.000 S -(a) 0.336 3.000 S -(l) 5.663 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.000 162.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 117.000 207.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 108.000 216.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 18.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.000 18.000 225.000 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 72.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 108.000 297.000 54.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 99.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.000 108.000 315.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 18.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 18.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.600 17.999 288.000 18.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 153.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 218.500 169.836 0.000 0.000 14.000 29.326 rect -%@EndRect -gsave -184.500 225.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -14.663 3.000 S -(h) -8.663 3.000 S -(o) -2.663 3.000 S -(n) 3.336 3.000 S -(e) 9.336 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 162.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 153.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 254.500 175.839 0.000 0.000 14.000 17.320 rect -%@EndRect -gsave -184.500 261.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -8.660 3.000 S -(a) -3.333 3.000 S -(l) 1.992 3.000 S -(l) 5.326 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 252.000 162.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 153.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 252.000 153.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 144.000 153.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 135.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 135.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 198.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 198.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 182.500 251.167 0.000 0.000 14.000 28.664 rect -%@EndRect -gsave -265.500 189.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(J) -14.332 3.000 S -(u) -9.662 3.000 S -(l) -3.662 3.000 S -(i) -0.328 3.000 S -(a) 3.005 3.000 S -(n) 8.332 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 182.500 324.169 0.000 0.000 14.000 26.660 rect -%@EndRect -gsave -337.500 189.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -13.330 3.000 S -(d) -4.664 3.000 S -(e) 1.335 3.000 S -(l) 6.662 3.000 S -(l) 9.996 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 315.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 189.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.399 189.000 288.000 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 171.000 288.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 234.000 234.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 218.500 252.840 0.000 0.000 14.000 25.318 rect -%@EndRect -gsave -265.500 225.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -12.659 3.000 S -(a) -3.993 3.000 S -(v) 1.333 3.000 S -(e) 7.333 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 225.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.399 225.000 288.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 207.000 288.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 144.000 234.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 144.000 297.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 117.000 306.000 117.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 119.500 253.508 0.000 0.000 14.000 25.986 rect -%@EndRect -gsave -266.501 126.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -12.991 3.000 S -(.) -9.991 3.000 S -(.) -6.991 3.000 S -( ) -3.991 3.000 S -(e) -0.991 3.000 S -(t) 4.334 3.000 S -(c) 7.668 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 225.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 243.000 216.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 281.500 252.169 0.000 0.000 14.000 26.660 rect -%@EndRect -gsave -265.500 288.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.330 3.000 S -(t) -6.656 3.000 S -(e) -3.322 3.000 S -(v) 2.003 3.000 S -(e) 8.003 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 279.000 243.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 281.500 321.166 0.000 0.000 14.000 32.666 rect -%@EndRect -gsave -337.500 288.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -16.333 3.000 S -(o) -7.666 3.000 S -(u) -1.666 3.000 S -(n) 4.333 3.000 S -(g) 10.333 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 279.000 315.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 288.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.399 288.000 288.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 297.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 279.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 270.000 288.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 252.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 234.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 245.500 252.506 0.000 0.000 14.000 25.986 rect -%@EndRect -gsave -265.500 252.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -12.993 3.000 S -(.) -9.993 3.000 S -(.) -6.993 3.000 S -( ) -3.993 3.000 S -(e) -0.993 3.000 S -(t) 4.333 3.000 S -(c) 7.666 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 279.000 234.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 270.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 218.500 318.834 0.000 0.000 14.000 37.330 rect -%@EndRect -gsave -337.500 225.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -18.665 3.000 S -(l) -9.999 3.000 S -(l) -6.665 3.000 S -(a) -3.331 3.000 S -(s) 1.995 3.000 S -(o) 6.665 3.000 S -(n) 12.665 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 216.000 315.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 171.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 207.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 351.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 369.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 369.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 144.000 369.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 279.000 369.000 162.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 146.500 402.448 0.000 0.000 14.000 40.652 rect -%@EndRect -gsave -422.774 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -20.051 3.000 S -(e) -15.381 3.000 S -(n) -10.055 3.000 S -(t) -4.055 3.000 S -(-) -0.721 3.000 S -(e) 3.274 3.000 S -(n) 8.600 3.000 S -(d) 14.600 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 396.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 394.399 153.000 378.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -477.000 153.000 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 475.399 153.000 450.000 153.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/digitnets.eps b/HTKBook/HTKFigs/digitnets.eps deleted file mode 100644 index f8ad673..0000000 --- a/HTKBook/HTKFigs/digitnets.eps +++ /dev/null @@ -1,4420 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: digitnets.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 11:28:42 p.m. -%%BoundingBox: 8.500 496.975 531.500 786.500 -%%QDBoundingBox: 8.500 5.500 531.500 295.024 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 15.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 128.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -138.000 79.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 24.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 24.000 99.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 51.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 51.000 99.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 114.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 114.000 99.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 24.000 162.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 51.000 162.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 114.000 162.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 69.000 180.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 105.000 180.000 87.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 69.000 90.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 105.000 90.000 87.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 128.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -141.000 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 23.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 50.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 9.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 252.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 78.000 18.000 78.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 78.000 189.000 78.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 6.000 11.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -19.500 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(a) -3.837 4.000 S -(\)) 2.375 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 15.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 398.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -408.000 79.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 24.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 24.000 369.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 51.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 51.000 369.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 114.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 114.000 369.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 24.000 432.000 24.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 51.000 432.000 51.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 114.000 432.000 114.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 24.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 96.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 69.000 450.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 105.000 450.000 87.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 69.000 360.000 33.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 60.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 78.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 105.000 360.000 87.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 398.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -411.000 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 23.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 50.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 279.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 522.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 78.000 288.000 78.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 522.000 78.000 459.000 78.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 6.000 281.000 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -290.000 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(b) -3.837 4.000 S -(\)) 3.162 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.000 297.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.000 313.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -320.500 77.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.000 468.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.000 484.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -491.500 77.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 168.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 258.000 117.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.000 128.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -138.000 232.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 177.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 177.000 99.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 204.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 204.000 99.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 267.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.000 267.000 99.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 90.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 177.000 162.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 204.000 162.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 267.000 162.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 162.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 222.000 180.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 180.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 258.000 180.000 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 222.000 90.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 72.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.000 258.000 90.000 240.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.000 128.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -141.000 266.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 176.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 128.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -139.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 9.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 252.000 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 231.000 18.000 231.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 231.000 189.000 231.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.000 11.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -19.500 166.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(c) -3.837 4.000 S -(\)) 2.375 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 27.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 43.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -50.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 198.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 214.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -221.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 181.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 79.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 187.000 291.500 85.500 291.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.500 285.000 193.500 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 178.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 79.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.500 284.500 79.500 238.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.500 291.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.500 291.499 145.000 291.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 168.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 258.000 387.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.000 398.500 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -408.000 232.000 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 7.000 S -(.) -3.000 7.000 S -(.) 3.000 7.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 177.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 177.000 369.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 204.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 204.000 369.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -387.000 267.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 385.000 267.000 369.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 177.000 432.000 177.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 204.000 432.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 267.000 432.000 267.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 177.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 249.000 432.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 222.000 450.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 450.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 258.000 450.000 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 222.000 360.000 186.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 213.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 231.000 342.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 258.000 360.000 240.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.000 398.000 0.000 0.000 15.000 26.000 rect -%@EndRect -gsave -411.000 266.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(z) -12.500 4.000 S -(e) -6.286 4.000 S -(r) -0.072 4.000 S -(o) 4.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 176.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.500 4.000 S -(n) -3.500 4.000 S -(e) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 398.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -409.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 522.000 231.000 459.000 231.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.000 281.000 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -290.000 166.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -8.500 4.000 S -(d) -3.837 4.000 S -(\)) 3.162 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 468.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 484.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -491.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 451.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 230.500 349.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 457.000 291.500 355.500 291.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 463.500 285.000 463.500 240.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 448.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 276.500 349.500 0.000 0.000 15.000 15.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 349.500 284.500 349.500 238.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.500 291.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 398.500 291.499 415.000 291.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 231.000 288.000 231.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 349.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 280.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 337.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 292.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 344.000 212.500 297.500 212.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 279.000 0.000 0.000 9.000 9.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 518.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.000 449.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 506.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 212.500 461.500 0.000 0.000 19.000 12.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 513.000 212.500 466.500 212.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 226.000 522.000 0.000 0.000 9.000 9.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 222.000 297.000 0.000 0.000 18.000 45.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.000 313.000 0.000 0.000 15.000 15.000 rect -%@EndRect -gsave -320.500 230.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -7.500 4.000 S -(i) -2.051 4.000 S -(l) 1.837 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -329.000 212.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 327.000 212.500 310.500 212.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -500.000 212.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 498.000 212.500 481.500 212.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/discriminative.eps b/HTKBook/HTKFigs/discriminative.eps deleted file mode 100644 index f74630e..0000000 --- a/HTKBook/HTKFigs/discriminative.eps +++ /dev/null @@ -1,523 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: discriminative.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Tue Feb 24 11:35:13 2009 -%%For: mjfg@mjfghp (Mark Gales) -%%BoundingBox: 0 0 571 652 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 652 moveto 0 0 lineto 571 0 lineto 571 652 lineto closepath clip newpath --10.6 717.5 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06000 0.06000 sc -% -% Fig objects follow -% -% -% here starts figure with depth 0 -% Polyline -30.000 slw -n 345 3360 m 210 3360 210 4275 135 arcto 4 {pop} repeat - 210 4410 1950 4410 135 arcto 4 {pop} repeat - 2085 4410 2085 3495 135 arcto 4 {pop} repeat - 2085 3360 345 3360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -720 3735 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -600 4050 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -375 4275 m -gs 1 -1 sc (\(wlat.den\)) col-1 sh gr -% Polyline -n 2775 3450 m 4500 3450 l 4500 4125 l 2775 4125 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -3225 3900 m -gs 1 -1 sc (HD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3675 3900 m -gs 1 -1 sc (ecode) col-1 sh gr -% Polyline -n 300 5025 m 2025 5025 l 2025 5700 l 300 5700 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -600 5475 m -gs 1 -1 sc (HLR) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1200 5475 m -gs 1 -1 sc (escore) col-1 sh gr -% Polyline -n 2835 1125 m 2700 1125 2700 2040 135 arcto 4 {pop} repeat - 2700 2175 4290 2175 135 arcto 4 {pop} repeat - 4425 2175 4425 1260 135 arcto 4 {pop} repeat - 4425 1125 2835 1125 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Courier ff 240.00 scf sf -3075 2067 m -gs 1 -1 sc (\(hmm20\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2775 1500 m -gs 1 -1 sc (ML Acoustic) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3075 1800 m -gs 1 -1 sc (Models) col-1 sh gr -% Polyline -n 5475 3450 m 7200 3450 l 7200 4125 l 5475 4125 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5775 3900 m -gs 1 -1 sc (HLR) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6375 3900 m -gs 1 -1 sc (escore) col-1 sh gr -% Polyline -gs clippath -3465 7815 m 3585 7815 l 3585 7528 l 3525 7768 l 3465 7528 l cp -eoclip -n 3525 7200 m - 3525 7800 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 7528 m 3525 7768 l 3585 7528 l 3465 7528 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 2745 7860 m 2610 7860 2610 8775 135 arcto 4 {pop} repeat - 2610 8910 4350 8910 135 arcto 4 {pop} repeat - 4485 8910 4485 7995 135 arcto 4 {pop} repeat - 4485 7860 2745 7860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -2700 8250 m -gs 1 -1 sc (Phone marked) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3075 8550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -2850 8775 m -gs 1 -1 sc (\(plat.den\)) col-1 sh gr -% Polyline -n 3900 9600 m 6000 9600 l 6000 10275 l 3900 10275 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -5025 10050 m -gs 1 -1 sc (EST \(x4\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3975 10050 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 4110 10875 m 3975 10875 3975 11790 135 arcto 4 {pop} repeat - 3975 11925 5790 11925 135 arcto 4 {pop} repeat - 5925 11925 5925 11010 135 arcto 4 {pop} repeat - 5925 10875 4110 10875 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Courier ff 240.00 scf sf -4425 11817 m -gs 1 -1 sc (\(hmm24\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4050 11250 m -gs 1 -1 sc (MPE Acoustic) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4425 11550 m -gs 1 -1 sc (Models) col-1 sh gr -% Polyline -gs clippath -4890 10890 m 5010 10890 l 5010 10603 l 4950 10843 l 4890 10603 l cp -eoclip -n 4950 10275 m - 4950 10875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4890 10603 m 4950 10843 l 5010 10603 l 4890 10603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 7920 3285 m 7785 3285 7785 4200 135 arcto 4 {pop} repeat - 7785 4335 9525 4335 135 arcto 4 {pop} repeat - 9660 4335 9660 3420 135 arcto 4 {pop} repeat - 9660 3285 7920 3285 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Courier ff 240.00 scf sf -7905 4200 m -gs 1 -1 sc (\(words.mlf\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7860 3960 m -gs 1 -1 sc (Transcriptions) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8295 3660 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7800 1725 m -gs 1 -1 sc (LGP) col-1 sh gr -/Times-Roman ff 240.00 scf sf -8325 1725 m -gs 1 -1 sc (rep) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8625 1725 m -gs 1 -1 sc (/LB) col-1 sh gr -/Times-Roman ff 240.00 scf sf -9075 1725 m -gs 1 -1 sc (uild) col-1 sh gr -% Polyline -gs clippath -3390 3465 m 3510 3465 l 3510 3178 l 3450 3418 l 3390 3178 l cp -eoclip -n 3450 2175 m - 3450 3450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3390 3178 m 3450 3418 l 3510 3178 l 3390 3178 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6090 3465 m 6210 3465 l 6210 3178 l 6150 3418 l 6090 3178 l cp -eoclip -n 6150 2175 m - 6150 3450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6090 3178 m 6150 3418 l 6210 3178 l 6090 3178 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3927 3369 m 3981 3476 l 4238 3348 l 3997 3402 l 4184 3241 l cp -eoclip -n 5618 2141 m 5618 2591 l - 3968 3416 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4184 3241 m 3997 3402 l 4238 3348 l 4184 3241 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2085 3765 m 2085 3885 l 2372 3885 l 2132 3825 l 2372 3765 l cp -eoclip -n 2700 3825 m - 2100 3825 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2372 3765 m 2132 3825 l 2372 3885 l 2372 3765 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1065 5040 m 1185 5040 l 1185 4753 l 1125 4993 l 1065 4753 l cp -eoclip -n 1125 4425 m - 1125 5025 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1065 4753 m 1125 4993 l 1185 4753 l 1065 4753 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2640 5385 m 2640 5265 l 2353 5265 l 2593 5325 l 2353 5385 l cp -eoclip -n 2025 5325 m - 2625 5325 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2353 5385 m 2593 5325 l 2353 5265 l 2353 5385 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4410 6765 m 4410 6885 l 4697 6885 l 4457 6825 l 4697 6765 l cp -eoclip -n 3900 2175 m 3900 2850 l 4950 2850 l 4950 6825 l - 4425 6825 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4697 6765 m 4457 6825 l 4697 6885 l 4697 6765 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -5415 6885 m 5415 6765 l 5128 6765 l 5368 6825 l 5128 6885 l cp -eoclip -n 4800 6825 m - 5400 6825 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5128 6885 m 5368 6825 l 5128 6765 l 5128 6885 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6240 4815 m 6360 4815 l 6360 4528 l 6300 4768 l 6240 4528 l cp -eoclip -n 6300 4125 m - 6300 4800 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6240 4528 m 6300 4768 l 6360 4528 l 6240 4528 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3465 6540 m 3585 6540 l 3585 6253 l 3525 6493 l 3465 6253 l cp -eoclip -n 3525 5925 m - 3525 6525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 6253 m 3525 6493 l 3585 6253 l 3465 6253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6165 6540 m 6285 6540 l 6285 6253 l 6225 6493 l 6165 6253 l cp -eoclip -n 6225 5925 m - 6225 6525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6165 6253 m 6225 6493 l 6285 6253 l 6165 6253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 2700 6525 m 4425 6525 l 4425 7200 l 2700 7200 l - cp gs col-1 s gr -% Polyline -n 5400 6525 m 7125 6525 l 7125 7200 l 5400 7200 l - cp gs col-1 s gr -% Polyline -gs clippath -6165 7815 m 6285 7815 l 6285 7528 l 6225 7768 l 6165 7528 l cp -eoclip -n 6225 7200 m - 6225 7800 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6165 7528 m 6225 7768 l 6285 7528 l 6165 7528 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 5445 7860 m 5310 7860 5310 8775 135 arcto 4 {pop} repeat - 5310 8910 7050 8910 135 arcto 4 {pop} repeat - 7185 8910 7185 7995 135 arcto 4 {pop} repeat - 7185 7860 5445 7860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -4065 9540 m 4185 9540 l 4185 9253 l 4125 9493 l 4065 9253 l cp -eoclip -n 4125 8925 m - 4125 9525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4065 9253 m 4125 9493 l 4185 9253 l 4065 9253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -5715 9540 m 5835 9540 l 5835 9253 l 5775 9493 l 5715 9253 l cp -eoclip -n 5775 8925 m - 5775 9525 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5715 9253 m 5775 9493 l 5835 9253 l 5715 9253 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4890 9615 m 5010 9615 l 5010 9328 l 4950 9568 l 4890 9328 l cp -eoclip -n 4950 6825 m - 4950 9600 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4890 9328 m 4950 9568 l 5010 9328 l 4890 9328 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 5160 1125 m 5025 1125 5025 2040 135 arcto 4 {pop} repeat - 5025 2175 6615 2175 135 arcto 4 {pop} repeat - 6750 2175 6750 1260 135 arcto 4 {pop} repeat - 6750 1125 5160 1125 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 5445 4860 m 5310 4860 5310 5790 135 arcto 4 {pop} repeat - 5310 5925 7215 5925 135 arcto 4 {pop} repeat - 7350 5925 7350 4995 135 arcto 4 {pop} repeat - 7350 4860 5445 4860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 2745 4860 m 2610 4860 2610 5790 135 arcto 4 {pop} repeat - 2610 5925 4515 5925 135 arcto 4 {pop} repeat - 4650 5925 4650 4995 135 arcto 4 {pop} repeat - 4650 4860 2745 4860 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -6735 1590 m 6735 1710 l 7022 1710 l 6782 1650 l 7022 1590 l cp -eoclip -n 7725 1650 m - 6750 1650 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7022 1590 m 6782 1650 l 7022 1710 l 7022 1590 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -7185 3690 m 7185 3810 l 7472 3810 l 7232 3750 l 7472 3690 l cp -eoclip -n 7800 3750 m - 7200 3750 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7472 3690 m 7232 3750 l 7472 3810 l 7472 3690 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -8685 2010 m 8565 2010 l 8565 2297 l 8625 2057 l 8685 2297 l cp -eoclip -n 8625 3300 m - 8625 2025 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8685 2297 m 8625 2057 l 8565 2297 l 8685 2297 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 7725 1350 m 9525 1350 l 9525 2025 l 7725 2025 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -2850 6975 m -gs 1 -1 sc (HD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3300 6975 m -gs 1 -1 sc (ecode.mod) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5400 8250 m -gs 1 -1 sc (Phone marked) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5775 8550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -5550 8775 m -gs 1 -1 sc (\(plat.num\)) col-1 sh gr -/Courier ff 240.00 scf sf -5250 2025 m -gs 1 -1 sc (\(trainbg\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5325 1500 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5475 1800 m -gs 1 -1 sc (Model) col-1 sh gr -/Courier ff 240.00 scf sf -5325 5775 m -gs 1 -1 sc (\(wlat.num.det\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5925 5250 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5850 5550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3225 5250 m -gs 1 -1 sc (Word) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3075 5550 m -gs 1 -1 sc (Lattices) col-1 sh gr -/Courier ff 240.00 scf sf -2625 5775 m -gs 1 -1 sc (\(wlat.den.det\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5550 6975 m -gs 1 -1 sc (HD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6000 6975 m -gs 1 -1 sc (ecode.mod) col-1 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff --git a/HTKBook/HTKFigs/discriminative.fig b/HTKBook/HTKFigs/discriminative.fig deleted file mode 100644 index 523446b..0000000 --- a/HTKBook/HTKFigs/discriminative.fig +++ /dev/null @@ -1,168 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -A4 -100.00 -Single --2 -1200 2 -6 150 3300 2100 4425 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 2085 4410 210 4410 210 3360 2085 3360 2085 4410 -4 0 -1 0 0 0 20 0.0000 4 195 690 720 3735 Word\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 600 4050 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 180 1500 375 4275 (wlat.den)\001 --6 -6 2700 3375 4575 4200 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2775 3450 4500 3450 4500 4125 2775 4125 2775 3450 -4 0 -1 0 0 0 20 0.0000 4 195 450 3225 3900 HD\001 -4 0 -1 0 0 0 16 0.0000 4 150 555 3675 3900 ecode\001 --6 -6 225 4950 2100 5775 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 300 5025 2025 5025 2025 5700 300 5700 300 5025 -4 0 -1 0 0 0 20 0.0000 4 195 600 600 5475 HLR\001 -4 0 -1 0 0 0 16 0.0000 4 105 600 1200 5475 escore\001 --6 -6 2625 1050 4500 2250 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4425 2175 2700 2175 2700 1125 4425 1125 4425 2175 -4 0 -1 0 0 5 16 0.0000 0 180 1050 3075 2067 (hmm20)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1620 2775 1500 ML Acoustic\001 -4 0 -1 0 0 0 20 0.0000 4 210 915 3075 1800 Models\001 --6 -6 5400 3375 7275 4200 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5475 3450 7200 3450 7200 4125 5475 4125 5475 3450 -4 0 -1 0 0 0 20 0.0000 4 195 600 5775 3900 HLR\001 -4 0 -1 0 0 0 16 0.0000 4 105 600 6375 3900 escore\001 --6 -6 2550 7125 4500 8925 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 7200 3525 7800 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4485 8910 2610 8910 2610 7860 4485 7860 4485 8910 -4 0 -1 0 0 0 20 0.0000 4 210 1740 2700 8250 Phone marked\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 3075 8550 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 195 1500 2850 8775 (plat.den)\001 --6 -6 3825 9525 6075 12000 -6 3825 9525 6075 10350 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3900 9600 6000 9600 6000 10275 3900 10275 3900 9600 -4 0 -1 0 0 0 16 0.0000 4 210 885 5025 10050 EST (x4)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 3975 10050 HMMIR\001 --6 -6 3900 10800 6000 12000 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 5925 11925 3975 11925 3975 10875 5925 10875 5925 11925 -4 0 -1 0 0 5 16 0.0000 0 180 1050 4425 11817 (hmm24)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1785 4050 11250 MPE Acoustic\001 -4 0 -1 0 0 0 20 0.0000 4 210 915 4425 11550 Models\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4950 10275 4950 10875 --6 -6 7770 3270 9675 4350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 9660 4335 7785 4335 7785 3285 9660 3285 9660 4335 -4 0 -1 0 0 5 16 0.0000 0 180 1650 7905 4200 (words.mlf)\001 -4 0 -1 0 0 0 20 0.0000 4 270 1770 7860 3960 Transcriptions\001 -4 0 -1 0 0 0 20 0.0000 4 195 690 8295 3660 Word\001 --6 -6 7800 1500 8625 1800 -4 0 -1 0 0 0 20 0.0000 4 195 570 7800 1725 LGP\001 -4 0 -1 0 0 0 16 0.0000 4 165 300 8325 1725 rep\001 --6 -6 8625 1500 9450 1725 -4 0 -1 0 0 0 20 0.0000 4 195 465 8625 1725 /LB\001 -4 0 -1 0 0 0 16 0.0000 4 165 360 9075 1725 uild\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3450 2175 3450 3450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6150 2175 6150 3450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 5618 2141 5618 2591 3968 3416 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2700 3825 2100 3825 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1125 4425 1125 5025 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 5325 2625 5325 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 5 - 1 1 2.00 120.00 240.00 - 3900 2175 3900 2850 4950 2850 4950 6825 4425 6825 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4800 6825 5400 6825 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6300 4125 6300 4800 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 5925 3525 6525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6225 5925 6225 6525 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2700 6525 4425 6525 4425 7200 2700 7200 2700 6525 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5400 6525 7125 6525 7125 7200 5400 7200 5400 6525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6225 7200 6225 7800 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 7185 8910 5310 8910 5310 7860 7185 7860 7185 8910 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4125 8925 4125 9525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5775 8925 5775 9525 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4950 6825 4950 9600 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 6750 2175 5025 2175 5025 1125 6750 1125 6750 2175 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 7350 5925 5310 5925 5310 4860 7350 4860 7350 5925 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4650 5925 2610 5925 2610 4860 4650 4860 4650 5925 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7725 1650 6750 1650 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7800 3750 7200 3750 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8625 3300 8625 2025 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7725 1350 9525 1350 9525 2025 7725 2025 7725 1350 -4 0 -1 0 0 0 20 0.0000 4 195 450 2850 6975 HD\001 -4 0 -1 0 0 0 16 0.0000 4 150 1035 3300 6975 ecode.mod\001 -4 0 -1 0 0 0 20 0.0000 4 210 1740 5400 8250 Phone marked\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 5775 8550 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 195 1500 5550 8775 (plat.num)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1350 5250 2025 (trainbg)\001 -4 0 -1 0 0 0 20 0.0000 4 255 1185 5325 1500 Language\001 -4 0 -1 0 0 0 20 0.0000 4 210 795 5475 1800 Model\001 -4 0 -1 0 0 5 16 0.0000 0 180 2100 5325 5775 (wlat.num.det)\001 -4 0 -1 0 0 0 20 0.0000 4 195 690 5925 5250 Word\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 5850 5550 Lattices\001 -4 0 -1 0 0 0 20 0.0000 4 195 690 3225 5250 Word\001 -4 0 -1 0 0 0 20 0.0000 4 195 975 3075 5550 Lattices\001 -4 0 -1 0 0 5 16 0.0000 0 180 2100 2625 5775 (wlat.den.det)\001 -4 0 -1 0 0 0 20 0.0000 4 195 450 5550 6975 HD\001 -4 0 -1 0 0 0 16 0.0000 4 150 1035 6000 6975 ecode.mod\001 diff --git a/HTKBook/HTKFigs/dmaker.eps b/HTKBook/HTKFigs/dmaker.eps deleted file mode 100644 index 3139b2b..0000000 --- a/HTKBook/HTKFigs/dmaker.eps +++ /dev/null @@ -1,1816 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: dmaker.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 4:58:19 p.m. -%%BoundingBox: 54.500 429.500 451.500 765.500 -%%QDBoundingBox: 54.500 26.500 451.500 362.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.500 154.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -166.165 95.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 144.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -147.000 81.000 moveto -/Triangular 14.099 7.049 false 230.809 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.735 79.450 116.000 43.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -166.000 81.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 165.999 79.000 166.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 154.500 0.000 0.000 16.000 25.662 rect -%@EndRect -gsave -167.331 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.000 4.000 S -(r) -4.213 4.000 S -(c) 0.448 4.000 S -(1) 6.662 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 88.500 0.000 0.000 16.000 49.375 rect -%@EndRect -gsave -113.187 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.000 4.000 S -(r) -16.213 4.000 S -(c) -11.551 4.000 S -(1) -5.337 4.000 S -(.) 1.662 4.000 S -(d) 5.162 4.000 S -(e) 12.162 4.000 S -(d) 18.375 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 144.000 189.000 0.000 0.000 45.000 189.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.500 269.500 0.000 0.000 16.000 36.538 rect -%@EndRect -gsave -287.769 167.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -18.000 4.000 S -(e) -5.551 4.000 S -(r) 0.662 4.000 S -(g) 5.324 4.000 S -(e) 12.324 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.000 144.000 moveto -/Triangular 14.099 7.049 false 233.146 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.799 142.400 171.000 108.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 228.500 275.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -287.165 236.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 222.000 265.000 0.000 0.000 27.000 45.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.000 225.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.999 223.000 287.000 189.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.500 275.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -287.165 95.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 265.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -268.000 81.000 moveto -/Triangular 14.099 7.049 false 230.809 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 266.735 79.450 237.000 43.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.000 81.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.999 79.000 287.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 275.500 0.000 0.000 16.000 25.662 rect -%@EndRect -gsave -288.331 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.000 4.000 S -(r) -4.213 4.000 S -(c) 0.448 4.000 S -(2) 6.662 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 209.500 0.000 0.000 16.000 49.375 rect -%@EndRect -gsave -234.187 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.000 4.000 S -(r) -16.213 4.000 S -(c) -11.551 4.000 S -(2) -5.337 4.000 S -(.) 1.662 4.000 S -(d) 5.162 4.000 S -(e) 12.162 4.000 S -(d) 18.375 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.500 406.500 0.000 0.000 16.000 23.331 rect -%@EndRect -gsave -418.165 95.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(d) -2.448 4.000 S -(i) 4.551 4.000 S -(t) 8.441 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 396.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -399.000 81.000 moveto -/Triangular 14.099 7.049 false 230.809 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 397.735 79.450 368.000 43.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -418.000 81.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 417.999 79.000 418.000 45.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 406.500 0.000 0.000 16.000 25.662 rect -%@EndRect -gsave -419.331 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.000 4.000 S -(r) -4.213 4.000 S -(c) 0.448 4.000 S -(3) 6.662 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 26.500 340.500 0.000 0.000 16.000 49.375 rect -%@EndRect -gsave -365.187 34.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.000 4.000 S -(r) -16.213 4.000 S -(c) -11.551 4.000 S -(3) -5.337 4.000 S -(.) 1.662 4.000 S -(d) 5.162 4.000 S -(e) 12.162 4.000 S -(d) 18.375 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 144.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.999 142.000 288.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 144.000 moveto -/Triangular 14.099 7.049 false 321.362 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 370.561 142.750 414.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -286.000 330.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.999 328.000 286.000 249.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 331.500 250.500 0.000 0.000 31.000 72.713 rect -%@EndRect -gsave -286.856 347.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.029 -3.000 S -(T) -3.918 -3.000 S -(K) 4.632 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.577 12.000 S -(i) -19.467 12.000 S -(c) -15.577 12.000 S -(t) -9.363 12.000 S -(i) -5.474 12.000 S -(o) -1.584 12.000 S -(n) 5.415 12.000 S -(a) 12.415 12.000 S -(r) 18.629 12.000 S -(y) 23.291 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 283.500 319.500 0.000 0.000 16.000 58.707 rect -%@EndRect -gsave -348.853 291.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -29.000 4.000 S -(l) -22.000 4.000 S -(o) -18.110 4.000 S -(b) -11.110 4.000 S -(a) -4.110 4.000 S -(l) 2.103 4.000 S -(.) 5.993 4.000 S -(d) 9.493 4.000 S -(e) 16.493 4.000 S -(d) 22.707 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -307.000 250.000 moveto -/Triangular 14.099 7.049 false 38.662 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 347.000 282.000 308.561 251.249 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 55.000 121.000 0.000 0.000 216.000 330.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 241.500 126.500 0.000 0.000 16.000 47.834 rect -%@EndRect -gsave -150.417 249.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.000 4.000 S -(D) -12.889 4.000 S -(M) -2.779 4.000 S -10.000 (_Times-Roman) fess -(A) 9.668 4.000 S -(N) 17.251 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 142.500 54.500 0.000 0.000 31.000 31.875 rect -%@EndRect -gsave -70.437 158.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -15.000 -3.000 S -(o) -1.786 -3.000 S -(r) 5.213 -3.000 S -(d) 9.875 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -9.951 12.000 S -(i) -1.399 12.000 S -(s) 2.489 12.000 S -(t) 7.937 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.000 162.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 187.000 162.000 90.000 162.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/egsils.eps b/HTKBook/HTKFigs/egsils.eps deleted file mode 100644 index 68b6ef7..0000000 --- a/HTKBook/HTKFigs/egsils.eps +++ /dev/null @@ -1,2179 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: egsils.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 10:38:22 p.m. -%%BoundingBox: 36.279 533.122 289.279 777.122 -%%QDBoundingBox: 36.279 14.877 289.279 258.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 51.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 203.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 219.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 219.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 231.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 207.779 0.000 0.000 45.000 36.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 140.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 156.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 156.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 168.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 144.779 0.000 0.000 45.000 36.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 77.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 93.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 93.908 0.000 0.000 38.000 11.741 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.377 105.650 0.000 0.000 36.000 16.258 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 81.779 0.000 0.000 45.000 36.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 90.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 81.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.612 78.377 117.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.779 47.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.779 46.211 90.779 38.377 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 153.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 144.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 206.612 78.377 180.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 47.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.779 46.211 153.779 38.377 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 216.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 207.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -270.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 269.612 78.377 243.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.779 47.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.779 46.211 216.779 38.377 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 80.612 78.377 54.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.377 36.779 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 69.377 270.779 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 204.377 153.779 0.000 0.000 54.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 144.779 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 195.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 206.612 195.377 180.779 195.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 226.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.779 227.544 153.779 235.377 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.779 195.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.612 195.377 117.779 195.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 186.377 99.779 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 186.377 207.779 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 162.779 114.377 162.779 96.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 225.779 114.377 225.779 96.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 162.779 177.377 162.779 159.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 99.779 114.377 99.779 96.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 186.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 186.377 108.779 0.000 0.000 36.000 108.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.500 244.500 0.000 0.000 23.000 26.098 rect -%@EndRect -gsave -257.549 190.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -13.000 -2.000 S -(h) -9.108 -2.000 S -(a) -4.108 -2.000 S -(r) 0.330 -2.000 S -(e) 3.660 -2.000 S -(d) 8.098 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -9.113 9.000 S -(t) -5.221 9.000 S -(a) -2.443 9.000 S -(t) 1.995 9.000 S -(e) 4.773 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.779 150.377 moveto -/Triangular 8.224 7.049 false 386.593 DrawArrowHead -} bind def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.823 150.899 234.779 177.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 34.500 55.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -62.113 42.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 223.500 118.500 0.000 0.000 16.000 12.448 rect -%@EndRect -gsave -124.724 231.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(p) -0.551 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -190.914 54.010 moveto -/Triangular 8.224 7.049 false 190.100 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.765 53.806 184.535 52.876 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.369 53.647 moveto -/Triangular 8.224 7.049 false 354.747 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.531 53.540 142.598 52.887 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -196.168 218.818 moveto -/Triangular 8.224 7.049 false 168.767 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 195.024 219.046 184.921 221.054 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/egtranstie.eps b/HTKBook/HTKFigs/egtranstie.eps deleted file mode 100644 index 4c97f4b..0000000 --- a/HTKBook/HTKFigs/egtranstie.eps +++ /dev/null @@ -1,1979 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: egtranstie.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/28/95 5:30:38 p.m. -%%BoundingBox: 36.279 488.122 352.279 786.122 -%%QDBoundingBox: 36.279 5.877 352.279 303.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 34.500 50.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -78.856 41.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(p) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.377 45.779 0.000 0.000 99.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 64.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 60.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 73.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 69.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 82.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 91.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.500 55.500 0.000 0.000 45.000 51.000 rect -%@EndRect -gsave -81.000 119.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(<) -25.000 -13.000 S -(t) -19.360 -13.000 S -(r) -16.582 -13.000 S -(a) -13.251 -13.000 S -(n) -8.813 -13.000 S -(s) -3.813 -13.000 S -(P) 0.078 -13.000 S -(>) 5.639 -13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 -2.000 S -(.) -20.000 -2.000 S -(0) -17.500 -2.000 S -( ) -12.500 -2.000 S -(1) -10.000 -2.000 S -(.) -5.000 -2.000 S -(0) -2.500 -2.000 S -( ) 2.500 -2.000 S -(0) 5.000 -2.000 S -(.) 10.000 -2.000 S -(0) 12.500 -2.000 S -( ) 17.500 -2.000 S -(.) 20.000 -2.000 S -(.) 22.500 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 9.000 S -(.) -20.000 9.000 S -(0) -17.500 9.000 S -( ) -12.500 9.000 S -(0) -10.000 9.000 S -(.) -5.000 9.000 S -(4) -2.500 9.000 S -( ) 2.500 9.000 S -(0) 5.000 9.000 S -(.) 10.000 9.000 S -(6) 12.500 9.000 S -( ) 17.500 9.000 S -(.) 20.000 9.000 S -(.) 22.500 9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -25.000 20.000 S -(.) -22.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 50.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -78.856 167.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(b) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.377 45.779 0.000 0.000 99.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 190.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 199.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 208.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 204.500 55.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -61.992 217.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 222.500 55.500 0.000 0.000 45.000 51.000 rect -%@EndRect -gsave -81.000 245.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(<) -25.000 -13.000 S -(t) -19.360 -13.000 S -(r) -16.582 -13.000 S -(a) -13.251 -13.000 S -(n) -8.813 -13.000 S -(s) -3.813 -13.000 S -(P) 0.078 -13.000 S -(>) 5.639 -13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 -2.000 S -(.) -20.000 -2.000 S -(0) -17.500 -2.000 S -( ) -12.500 -2.000 S -(1) -10.000 -2.000 S -(.) -5.000 -2.000 S -(0) -2.500 -2.000 S -( ) 2.500 -2.000 S -(0) 5.000 -2.000 S -(.) 10.000 -2.000 S -(0) 12.500 -2.000 S -( ) 17.500 -2.000 S -(.) 20.000 -2.000 S -(.) 22.500 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 9.000 S -(.) -20.000 9.000 S -(0) -17.500 9.000 S -( ) -12.500 9.000 S -(0) -10.000 9.000 S -(.) -5.000 9.000 S -(4) -2.500 9.000 S -( ) 2.500 9.000 S -(0) 5.000 9.000 S -(.) 10.000 9.000 S -(6) 12.500 9.000 S -( ) 17.500 9.000 S -(.) 20.000 9.000 S -(.) 22.500 9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -25.000 20.000 S -(.) -22.500 20.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 6.377 36.779 0.000 0.000 297.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.500 266.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -294.856 104.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(p) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 261.779 0.000 0.000 68.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 114.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 127.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 123.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 136.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 145.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 154.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.500 271.500 0.000 0.000 12.000 51.000 rect -%@EndRect -gsave -297.000 168.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -25.000 3.000 S -(t) -19.589 3.000 S -( ) -16.811 3.000 S -(") -14.311 3.000 S -(T) -10.229 3.000 S -(_) -4.121 3.000 S -(a) 0.878 3.000 S -(h) 5.317 3.000 S -(") 10.317 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 6.377 252.779 0.000 0.000 297.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.500 266.500 0.000 0.000 14.000 56.712 rect -%@EndRect -gsave -294.856 203.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -28.000 3.000 S -(h) -21.507 3.000 S -( ) -15.507 3.000 S -(") -12.507 3.000 S -(t) -7.609 3.000 S -(-) -4.275 3.000 S -(a) -0.279 3.000 S -(h) 5.046 3.000 S -(+) 11.046 3.000 S -(b) 17.814 3.000 S -(") 23.814 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 213.377 261.779 0.000 0.000 68.000 72.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 226.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 222.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 235.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 231.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 244.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 240.500 271.500 0.000 0.000 26.000 12.984 rect -%@EndRect -gsave -277.992 253.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -6.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.500 271.500 0.000 0.000 12.000 51.000 rect -%@EndRect -gsave -297.000 267.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -25.000 3.000 S -(t) -19.589 3.000 S -( ) -16.811 3.000 S -(") -14.311 3.000 S -(T) -10.229 3.000 S -(_) -4.121 3.000 S -(a) 0.878 3.000 S -(h) 5.317 3.000 S -(") 10.317 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 33.500 271.500 0.000 0.000 45.000 51.000 rect -%@EndRect -gsave -297.000 56.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(<) -25.000 -13.000 S -(t) -19.360 -13.000 S -(r) -16.582 -13.000 S -(a) -13.251 -13.000 S -(n) -8.813 -13.000 S -(s) -3.813 -13.000 S -(P) 0.078 -13.000 S -(>) 5.639 -13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 -2.000 S -(.) -20.000 -2.000 S -(0) -17.500 -2.000 S -( ) -12.500 -2.000 S -(1) -10.000 -2.000 S -(.) -5.000 -2.000 S -(0) -2.500 -2.000 S -( ) 2.500 -2.000 S -(0) 5.000 -2.000 S -(.) 10.000 -2.000 S -(0) 12.500 -2.000 S -( ) 17.500 -2.000 S -(.) 20.000 -2.000 S -(.) 22.500 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -25.000 9.000 S -(.) -20.000 9.000 S -(0) -17.500 9.000 S -( ) -12.500 9.000 S -(0) -10.000 9.000 S -(.) -5.000 9.000 S -(4) -2.500 9.000 S -( ) 2.500 9.000 S -(0) 5.000 9.000 S -(.) 10.000 9.000 S -(6) 12.500 9.000 S -( ) 17.500 9.000 S -(.) 20.000 9.000 S -(.) 22.500 9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -25.000 20.000 S -(.) -22.500 20.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 15.500 262.500 0.000 0.000 14.000 47.279 rect -%@EndRect -gsave -286.139 22.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -23.000 3.000 S -(t) -16.507 3.000 S -( ) -13.173 3.000 S -(") -10.173 3.000 S -(T) -5.275 3.000 S -(_) 2.054 3.000 S -(a) 8.054 3.000 S -(h) 13.380 3.000 S -(") 19.380 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 33.377 261.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.779 132.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.612 132.377 153.779 132.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 150.377 162.779 0.000 0.000 27.000 52.652 rect -%@EndRect -gsave -189.105 163.877 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -24.470 -4.000 S -(H) -15.804 -4.000 S -(E) -7.138 -4.000 S -9.000 (_Times-Roman) fess -(D) 0.191 -4.000 S -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) 6.691 -4.000 S -(T) 9.691 -4.000 S -(i) 17.021 -4.000 S -(e) 20.355 -4.000 S -( ) 25.681 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -24.393 9.000 S -(o) -16.389 9.000 S -(m) -10.389 9.000 S -(m) -1.055 9.000 S -(a) 8.278 9.000 S -(n) 13.604 9.000 S -(d) 19.604 9.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/endpointer.eps b/HTKBook/HTKFigs/endpointer.eps deleted file mode 100644 index 7b0acd7..0000000 --- a/HTKBook/HTKFigs/endpointer.eps +++ /dev/null @@ -1,2263 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: endpointer.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/1/4 8:06:24 a.m. -%%BoundingBox: 4.500 299.500 557.700 582.750 -%%QDBoundingBox: 4.500 209.250 557.700 492.500 -%%DocumentFonts: Times-Roman -%%+ Times-Italic -%%+ Times-Bold -%%+ Palatino-Bold -%%+ Times-BoldItalic -%%+ Courier-Bold -%%+ Courier -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=F tNote=F tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tLayer -% -% -%tLayer -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tLayer -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfEndGrp -% -% -%tLayer -% -% -%tLayer -% -%@BeginRuler -%@ 4.5000000000000000000e+0 viewScale -%@ 2.2222222222222220990e-1 realScale -%@ 16 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -0.100 0 229.500 49.500 0.000 0.000 117.000 504.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 58.500] CP -[0.000 58.500 33.750 58.500 33.750 58.500] CP -[36.000 54.000 ] CP -[38.250 60.750 ] CP -[40.500 58.500 ] CP -[56.250 58.500 ] CP -[58.500 63.000 ] CP -[60.750 58.500 ] CP -[72.000 58.500 ] CP -[76.500 45.000 ] CP -[81.000 76.500 ] CP -[85.500 27.000 ] CP -[90.000 99.000 ] CP -[94.500 18.000 ] CP -[99.000 45.000 ] CP -[103.500 0.000 ] CP -[110.250 117.000 ] CP -[117.000 31.500 ] CP -[121.500 58.500 ] CP -[126.000 13.500 ] CP -[130.500 72.000 ] CP -[135.000 36.000 ] CP -[139.500 94.500 ] CP -[148.500 18.000 ] CP -[150.750 69.750 ] CP -[155.250 49.500 ] CP -[157.500 112.500 ] CP -[159.750 36.000 ] CP -[164.250 78.750 ] CP -[168.750 51.750 ] CP -[171.000 65.250 ] CP -[180.000 58.500 ] CP -[193.500 63.000 ] CP -[202.500 58.500 ] CP -[204.750 54.000 ] CP -[207.000 58.500 ] CP -[216.000 58.500 ] CP -[216.000 63.000 ] CP -[220.500 58.500 ] CP -[229.500 58.500 ] CP -[234.000 58.500 ] CP -[238.500 58.500 ] CP -[243.000 58.500 ] CP -[247.500 58.500 ] CP -[252.000 58.500 ] CP -[256.500 49.500 ] CP -[258.750 78.750 ] CP -[261.000 38.250 ] CP -[265.500 96.750 ] CP -[270.000 49.500 ] CP -[272.250 85.500 ] CP -[276.750 31.500 ] CP -[279.000 72.000 ] CP -[283.500 20.250 ] CP -[285.750 90.000 ] CP -[290.250 58.500 ] CP -[292.500 108.000 ] CP -[297.000 38.250 ] CP -[299.250 114.750 ] CP -[301.500 54.000 ] CP -[306.000 74.250 ] CP -[310.500 31.500 ] CP -[312.750 90.000 ] CP -[319.500 49.500 ] CP -[324.000 69.750 ] CP -[326.250 54.000 ] CP -[330.750 63.000 ] CP -[337.500 45.000 ] CP -[339.750 76.500 ] CP -[344.250 47.250 ] CP -[346.500 99.000 ] CP -[353.250 33.750 ] CP -[355.500 65.250 ] CP -[360.000 15.750 ] CP -[362.250 83.250 ] CP -[369.000 42.750 ] CP -[373.500 67.500 ] CP -[378.000 54.000 ] CP -[382.500 58.500 ] CP -[387.000 60.750 ] CP -[391.500 58.500 ] CP -[398.250 56.250 ] CP -[407.250 58.500 ] CP -[504.000 58.500 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 373.500 49.500 0.000 0.000 18.000 504.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[36.000 18.000] CP -[36.000 0.000 ] CP -[38.250 0.000 ] CP -[38.250 18.000 ] CP -[58.500 18.000 ] CP -[58.500 0.000 ] CP -[60.750 0.000 ] CP -[60.750 18.000 ] CP -[72.000 18.000 ] CP -[72.000 0.000 ] CP -[184.500 0.000 ] CP -[184.500 18.000 ] CP -[200.250 18.000 ] CP -[200.250 0.000 ] CP -[204.750 0.000 ] CP -[204.750 18.000 ] CP -[216.000 18.000 ] CP -[216.000 0.000 ] CP -[220.500 0.000 ] CP -[220.500 18.000 ] CP -[256.500 18.000 ] CP -[256.500 0.000 ] CP -[396.000 0.000 ] CP -[396.000 18.000 ] CP -[504.000 18.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 427.500 49.500 0.000 0.000 18.000 504.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 18.000] CP -[72.000 18.000] CP -[72.000 0.000 ] CP -[184.500 0.000 ] CP -[184.500 18.000 ] CP -[256.500 18.000 ] CP -[256.500 0.000 ] CP -[396.000 0.000 ] CP -[396.000 18.000 ] CP -[504.000 18.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 362.250 13.500 0.000 0.000 27.000 39.058 rect -%@EndRect -gsave -33.029 375.750 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -14.798 -4.000 S -(r) -8.125 -4.000 S -(a) -4.128 -4.000 S -(m) 1.197 -4.000 S -(e) 10.531 -4.000 S -( ) 15.857 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -16.796 9.000 S -(n) -9.466 9.000 S -(e) -3.466 9.000 S -(r) 1.859 9.000 S -(g) 5.855 9.000 S -(y) 11.855 9.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 411.750 4.500 0.000 0.000 27.000 64.886 rect -%@EndRect -gsave -36.943 425.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -20.219 -3.000 S -(i) -8.893 -3.000 S -(n) -5.559 -3.000 S -(d) 0.440 -3.000 S -(o) 6.440 -3.000 S -(w) 12.440 -3.000 S -( ) 21.106 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -31.211 10.000 S -(l) -25.885 10.000 S -(a) -22.551 10.000 S -(s) -17.225 10.000 S -(s) -12.555 10.000 S -(i) -7.885 10.000 S -(f) -4.551 10.000 S -(i) -0.555 10.000 S -(c) 2.778 10.000 S -(a) 8.104 10.000 S -(t) 13.430 10.000 S -(i) 16.764 10.000 S -(o) 20.098 10.000 S -(n) 26.098 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 249.750 27.820 0.000 0.000 14.000 30.667 rect -%@EndRect -gsave -43.154 256.750 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -14.679 3.000 S -(i) -8.005 3.000 S -(g) -4.671 3.000 S -(n) 1.328 3.000 S -(a) 7.328 3.000 S -(l) 12.654 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 364.500 508.500 0.000 0.000 11.000 44.636 rect -%@EndRect -gsave -530.818 370.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.676 3.000 S -(p) -7.670 3.000 S -(e) -3.170 3.000 S -(e) 0.823 3.000 S -(c) 4.818 3.000 S -(h) 8.812 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 393.750 510.750 0.000 0.000 11.000 37.886 rect -%@EndRect -gsave -529.693 399.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.051 3.000 S -(i) -8.046 3.000 S -(l) -5.545 3.000 S -(e) -3.045 3.000 S -(n) 0.949 3.000 S -(c) 5.449 3.000 S -(e) 9.443 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Courier-Bold /Courier-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 452.250 45.251 0.000 0.000 16.000 8.497 rect -%@EndRect -gsave -49.500 460.250 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -4.152 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 83.549 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -87.750 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -3.950 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 124.049 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -128.250 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -3.450 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 418.500 238.799 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -243.000 426.500 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -3.700 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 418.500 292.799 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -297.000 426.500 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.700 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 477.299 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -481.500 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -4.200 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 436.799 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -441.000 455.750 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -3.700 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 454.500 549.299 0.000 0.000 16.000 8.401 rect -%@EndRect -gsave -553.500 462.500 T translate -0.0 rotate -1 1 scale -14.000 (_Courier-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -4.200 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 94.500 481.500 94.500 218.250 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 472.500 481.500 472.500 216.000 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.500 481.500 121.500 445.500 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 445.500 481.500 445.500 445.500 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 416.250 508.500 0.000 0.000 11.000 44.636 rect -%@EndRect -gsave -530.818 421.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -12.676 2.000 S -(p) -7.670 2.000 S -(e) -3.170 2.000 S -(e) 0.823 2.000 S -(c) 4.818 2.000 S -(h) 8.812 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 447.750 510.750 0.000 0.000 11.000 37.886 rect -%@EndRect -gsave -529.693 453.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.051 3.000 S -(i) -8.046 3.000 S -(l) -5.545 3.000 S -(e) -3.045 3.000 S -(n) 0.949 3.000 S -(c) 5.449 3.000 S -(e) 9.443 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Courier /Courier EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 481.500 78.750 0.000 0.000 11.000 60.386 rect -%@EndRect -gsave -108.943 487.000 T translate -0.0 rotate -1 1 scale -9.000 (_Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -23.860 3.000 S -(I) -18.459 3.000 S -(L) -13.058 3.000 S -(M) -7.657 3.000 S -(A) -2.257 3.000 S -(R) 3.143 3.000 S -(G) 8.544 3.000 S -(I) 13.945 3.000 S -(N) 19.346 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.500 477.000 moveto -/SwallowTail 14.099 9.399 false 0.000 DrawArrowHead -121.500 477.000 moveto -/SwallowTail 14.099 9.399 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 120.000 477.000 96.000 477.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 481.500 465.750 0.000 0.000 11.000 60.386 rect -%@EndRect -gsave -495.943 487.000 T translate -0.0 rotate -1 1 scale -9.000 (_Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -29.261 3.000 S -(I) -23.860 3.000 S -(L) -18.459 3.000 S -(S) -13.058 3.000 S -(E) -7.657 3.000 S -(Q) -2.257 3.000 S -(C) 3.143 3.000 S -(O) 8.544 3.000 S -(U) 13.945 3.000 S -(N) 19.346 3.000 S -(T) 24.747 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -445.500 472.500 moveto -/SwallowTail 14.099 9.399 false 0.000 DrawArrowHead -551.250 472.500 moveto -/SwallowTail 14.099 9.399 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 549.750 472.500 447.000 472.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 398.250 137.250 0.000 0.000 11.000 60.386 rect -%@EndRect -gsave -167.443 403.750 T translate -0.0 rotate -1 1 scale -9.000 (_Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -28.761 2.000 S -(P) -23.360 2.000 S -(C) -17.959 2.000 S -(S) -12.558 2.000 S -(E) -7.157 2.000 S -(Q) -1.757 2.000 S -(C) 3.643 2.000 S -(O) 9.044 2.000 S -(U) 14.445 2.000 S -(N) 19.846 2.000 S -(T) 25.247 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -0.100 121.500 427.500 121.500 391.500 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[9.000 9.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -0.100 132.750 427.500 132.750 391.500 Line -%@EndLine -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 132.750 405.000 121.500 405.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 209.250 198.000 0.000 0.000 14.000 156.058 rect -%@EndRect -gsave -276.029 216.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -48.282 3.000 S -(r) -41.608 3.000 S -(o) -37.612 3.000 S -(c) -31.612 3.000 S -(e) -26.286 3.000 S -(s) -20.959 3.000 S -(s) -16.290 3.000 S -(e) -11.620 3.000 S -(d) -6.293 3.000 S -( ) -0.293 3.000 S -(U) 2.706 3.000 S -(t) 11.372 3.000 S -(t) 14.706 3.000 S -(e) 18.040 3.000 S -(r) 23.366 3.000 S -(a) 27.362 3.000 S -(n) 32.688 3.000 S -(c) 38.688 3.000 S -(e) 44.014 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.2500000000000000000e+0 viewScale -%@ 4.4444444444444441980e-1 realScale -%@ 32 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -94.500 220.500 moveto -/SwallowTail 14.099 9.399 false 0.000 DrawArrowHead -472.500 220.500 moveto -/SwallowTail 14.099 9.399 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 471.000 220.500 96.000 220.500 Line -%@EndLine -% -%tLayer -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/flatst.eps b/HTKBook/HTKFigs/flatst.eps deleted file mode 100644 index 99eea4a..0000000 --- a/HTKBook/HTKFigs/flatst.eps +++ /dev/null @@ -1,1578 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: flatst.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:44:18 a.m. -%%BoundingBox: 22.500 566.500 445.500 765.500 -%%QDBoundingBox: 22.500 26.500 445.500 225.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.500 175.500 0.000 0.000 39.000 88.514 rect -%@EndRect -gsave -219.757 51.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -44.000 -4.000 S -(r) -33.989 -4.000 S -(o) -27.995 -4.000 S -(t) -18.995 -4.000 S -(o) -13.994 -4.000 S -( ) -4.994 -4.000 S -(H) -0.494 -4.000 S -(M) 12.504 -4.000 S -(M) 28.509 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -36.735 15.000 S -(e) -23.736 15.000 S -(f) -15.747 15.000 S -(i) -9.753 15.000 S -(n) -4.752 15.000 S -(i) 4.247 15.000 S -(t) 9.248 15.000 S -(i) 14.249 15.000 S -(o) 19.250 15.000 S -(n) 28.250 15.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 117.500 184.500 0.000 0.000 20.000 70.004 rect -%@EndRect -gsave -219.502 127.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -35.000 5.000 S -(C) -22.000 5.000 S -(o) -9.995 5.000 S -(m) -0.995 5.000 S -(p) 13.005 5.000 S -(V) 22.005 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 166.000 0.000 0.000 45.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 103.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 120.083 0.000 0.000 20.000 29.667 rect -%@EndRect -gsave -134.917 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -14.416 5.000 S -(h) -9.415 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 166.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 183.083 0.000 0.000 20.000 16.989 rect -%@EndRect -gsave -191.577 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -8.416 5.000 S -(h) -0.427 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 229.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 246.083 0.000 0.000 20.000 9.000 rect -%@EndRect -gsave -250.583 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -4.416 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.000 292.000 0.000 0.000 27.000 50.135 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.375 309.083 0.000 0.000 20.000 9.000 rect -%@EndRect -gsave -313.583 196.375 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -4.416 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.500 364.500 0.000 0.000 20.000 20.979 rect -%@EndRect -gsave -374.989 194.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -10.000 5.000 S -(t) -2.010 5.000 S -(c) 2.990 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.000 166.000 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -220.000 108.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 219.999 106.000 220.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.000 180.000 moveto -/Triangular 14.099 7.049 false 321.362 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.561 178.750 175.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -193.000 180.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.999 178.000 193.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -256.000 180.000 moveto -/Triangular 14.099 7.049 false 243.452 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 255.105 178.211 238.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -310.000 180.000 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 308.335 178.890 256.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 153.000 94.000 0.000 0.000 72.000 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[18.000 0.000] CP -[0.000 0.000] CP -[0.000 72.000 ] CP -[18.000 72.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.500 22.500 0.000 0.000 20.000 62.964 rect -%@EndRect -gsave -53.982 185.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -31.000 5.000 S -(d) -25.005 5.000 S -(e) -16.005 5.000 S -(n) -8.016 5.000 S -(t) 0.983 5.000 S -(i) 5.984 5.000 S -(c) 10.985 5.000 S -(a) 18.974 5.000 S -(l) 26.963 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 337.000 0.000 0.000 63.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 346.500 0.000 0.000 58.000 89.481 rect -%@EndRect -gsave -391.240 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -36.001 -14.000 S -(a) -25.991 -14.000 S -(m) -18.001 -14.000 S -(p) -4.000 -14.000 S -(l) 4.999 -14.000 S -(e) 10.000 -14.000 S -( ) 17.989 -14.000 S -(o) 22.489 -14.000 S -(f) 31.489 -14.000 S -( ) 37.483 -14.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -30.249 5.000 S -(r) -19.254 5.000 S -(a) -13.260 5.000 S -(i) -5.270 5.000 S -(n) -0.270 5.000 S -(i) 8.729 5.000 S -(n) 13.730 5.000 S -(g) 22.730 5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -25.248 24.000 S -(p) -15.237 24.000 S -(e) -6.237 24.000 S -(e) 1.751 24.000 S -(c) 9.740 24.000 S -(h) 17.729 24.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.000 117.000 moveto -/Triangular 14.099 7.049 false 336.825 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 275.838 116.212 337.000 90.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/headapt.eps b/HTKBook/HTKFigs/headapt.eps deleted file mode 100644 index ec12410..0000000 --- a/HTKBook/HTKFigs/headapt.eps +++ /dev/null @@ -1,375 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: headapt.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 388 377 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 377 moveto 0 0 lineto 388 0 lineto 388 377 lineto closepath clip newpath --125.0 469.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - - /DrawSplineSection { - /y3 exch def - /x3 exch def - /y2 exch def - /x2 exch def - /y1 exch def - /x1 exch def - /xa x1 x2 x1 sub 0.666667 mul add def - /ya y1 y2 y1 sub 0.666667 mul add def - /xb x3 x2 x3 sub 0.666667 mul add def - /yb y3 y2 y3 sub 0.666667 mul add def - x1 y1 lineto - xa ya xb yb x3 y3 curveto - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -15.000 slw -n 2667 3943 m 3073 3639 l 6720 3639 l - 6315 3943 l gs col7 0.85 shd ef gr gs col-1 s gr -% Polyline -n 6315 3943 m 6720 3639 l 6720 5361 l - 6315 5767 l gs col7 0.85 shd ef gr gs col-1 s gr -% Polyline -n 2685 3936 m 6333 3936 l 6333 5760 l 2685 5760 l - cp gs col7 0.85 shd ef gr gs col-1 s gr -% Polyline -0.000 slw -n 3534 6929 m 3592 7045 l 3650 6929 l - 3534 6929 l cp gs col7 0.00 shd ef gr -% Polyline -n 4463 6929 m 4521 7045 l 4579 6929 l - 4463 6929 l cp gs col7 0.00 shd ef gr -% Polyline -n 5391 6929 m 5449 7045 l 5507 6929 l - 5391 6929 l cp gs col7 0.00 shd ef gr -15.000 slw -% Ellipse -n 3766 7542 246 246 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 4688 7540 246 246 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 5617 7540 246 246 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 6485 7542 183 183 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 2896 7542 183 183 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col0 s gr - -% Polyline -gs clippath -4478 7602 m 4478 7482 l 4191 7482 l 4431 7542 l 4191 7602 l cp -eoclip -n 3998 7542 m - 4463 7542 l gs col-1 s gr gr - -% arrowhead -n 4191 7602 m 4431 7542 l 4191 7482 l 4191 7602 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -5406 7602 m 5406 7482 l 5119 7482 l 5359 7542 l 5119 7602 l cp -eoclip -n 4927 7542 m - 5391 7542 l gs col-1 s gr gr - -% arrowhead -n 5119 7602 m 5359 7542 l 5119 7482 l 5119 7602 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -3549 7602 m 3549 7482 l 3262 7482 l 3502 7542 l 3262 7602 l cp -eoclip -n 3070 7542 m - 3534 7542 l gs col-1 s gr gr - -% arrowhead -n 3262 7602 m 3502 7542 l 3262 7482 l 3262 7602 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6335 7602 m 6335 7482 l 6048 7482 l 6288 7542 l 6048 7602 l cp -eoclip -n 5856 7542 m - 6320 7542 l gs col-1 s gr gr - -% arrowhead -n 6048 7602 m 6288 7542 l 6048 7482 l 6048 7602 l cp gs 0.00 setgray ef gr col-1 s -% Open spline -gs n 3882.0 7335.0 m 3911.0 7219.0 l - 3911.0 7219.0 3940.0 7103.0 3940.0 6987.0 DrawSplineSection - 3940.0 6987.0 3940.0 6871.0 3853.0 6726.0 DrawSplineSection - 3853.0 6726.0 3766.0 6581.0 3679.0 6726.0 DrawSplineSection - 3679.0 6726.0 3592.0 6871.0 3592.0 6987.0 DrawSplineSection - 3592.0 6987.0 3592.0 7103.0 3621.0 7219.0 DrawSplineSection - 3650.0 7335.0 l gs col-1 s gr - gr - -% Open spline -gs n 4811.0 7335.0 m 4840.0 7219.0 l - 4840.0 7219.0 4869.0 7103.0 4869.0 6987.0 DrawSplineSection - 4869.0 6987.0 4869.0 6871.0 4782.0 6726.0 DrawSplineSection - 4782.0 6726.0 4695.0 6581.0 4608.0 6726.0 DrawSplineSection - 4608.0 6726.0 4521.0 6871.0 4521.0 6987.0 DrawSplineSection - 4521.0 6987.0 4521.0 7103.0 4550.0 7219.0 DrawSplineSection - 4579.0 7335.0 l gs col-1 s gr - gr - -% Open spline -gs n 5740.0 7335.0 m 5769.0 7219.0 l - 5769.0 7219.0 5798.0 7103.0 5798.0 6987.0 DrawSplineSection - 5798.0 6987.0 5798.0 6871.0 5711.0 6726.0 DrawSplineSection - 5711.0 6726.0 5624.0 6581.0 5536.5 6726.0 DrawSplineSection - 5536.5 6726.0 5449.0 6871.0 5449.0 6987.0 DrawSplineSection - 5449.0 6987.0 5449.0 7103.0 5478.0 7219.0 DrawSplineSection - 5507.0 7335.0 l gs col-1 s gr - gr - -/Times-Roman ff 270.00 scf sf -7200 3675 m -gs 1 -1 sc (Labelled) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 3990 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 4305 m -gs 1 -1 sc (or) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 4620 m -gs 1 -1 sc (Enrollment) col-1 sh gr -/Times-Roman ff 270.00 scf sf -7200 4935 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -0.000 slw -n 3534 2156 m 3592 2272 l 3650 2156 l - 3534 2156 l cp gs col7 0.00 shd ef gr -% Polyline -n 4463 2156 m 4521 2272 l 4579 2156 l - 4463 2156 l cp gs col7 0.00 shd ef gr -% Polyline -n 5391 2156 m 5449 2272 l 5507 2156 l - 5391 2156 l cp gs col7 0.00 shd ef gr -15.000 slw -% Ellipse -n 3766 2794 246 246 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 4688 2792 246 246 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 5617 2792 246 246 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 2896 2794 183 183 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 6485 2794 183 183 0 360 DrawEllipse gs col-1 s gr - -% Polyline -gs clippath -4478 2854 m 4478 2734 l 4191 2734 l 4431 2794 l 4191 2854 l cp -eoclip -n 3998 2794 m - 4463 2794 l gs col-1 s gr gr - -% arrowhead -n 4191 2854 m 4431 2794 l 4191 2734 l 4191 2854 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -5406 2854 m 5406 2734 l 5119 2734 l 5359 2794 l 5119 2854 l cp -eoclip -n 4927 2794 m - 5391 2794 l gs col-1 s gr gr - -% arrowhead -n 5119 2854 m 5359 2794 l 5119 2734 l 5119 2854 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -3549 2854 m 3549 2734 l 3262 2734 l 3502 2794 l 3262 2854 l cp -eoclip -n 3070 2794 m - 3534 2794 l gs col-1 s gr gr - -% arrowhead -n 3262 2854 m 3502 2794 l 3262 2734 l 3262 2854 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6335 2854 m 6335 2734 l 6048 2734 l 6288 2794 l 6048 2854 l cp -eoclip -n 5856 2794 m - 6320 2794 l gs col-1 s gr gr - -% arrowhead -n 6048 2854 m 6288 2794 l 6048 2734 l 6048 2854 l cp gs 0.00 setgray ef gr col-1 s -% Open spline -gs n 3882.0 2562.0 m 3911.0 2446.0 l - 3911.0 2446.0 3940.0 2330.0 3940.0 2214.0 DrawSplineSection - 3940.0 2214.0 3940.0 2098.0 3853.0 1952.5 DrawSplineSection - 3853.0 1952.5 3766.0 1807.0 3679.0 1952.5 DrawSplineSection - 3679.0 1952.5 3592.0 2098.0 3592.0 2214.0 DrawSplineSection - 3592.0 2214.0 3592.0 2330.0 3621.0 2446.0 DrawSplineSection - 3650.0 2562.0 l gs col-1 s gr - gr - -% Open spline -gs n 4811.0 2562.0 m 4840.0 2446.0 l - 4840.0 2446.0 4869.0 2330.0 4869.0 2214.0 DrawSplineSection - 4869.0 2214.0 4869.0 2098.0 4782.0 1952.5 DrawSplineSection - 4782.0 1952.5 4695.0 1807.0 4608.0 1952.5 DrawSplineSection - 4608.0 1952.5 4521.0 2098.0 4521.0 2214.0 DrawSplineSection - 4521.0 2214.0 4521.0 2330.0 4550.0 2446.0 DrawSplineSection - 4579.0 2562.0 l gs col-1 s gr - gr - -% Open spline -gs n 5740.0 2562.0 m 5769.0 2446.0 l - 5769.0 2446.0 5798.0 2330.0 5798.0 2214.0 DrawSplineSection - 5798.0 2214.0 5798.0 2098.0 5711.0 1952.5 DrawSplineSection - 5711.0 1952.5 5624.0 1807.0 5536.5 1952.5 DrawSplineSection - 5536.5 1952.5 5449.0 2098.0 5449.0 2214.0 DrawSplineSection - 5449.0 2214.0 5449.0 2330.0 5478.0 2446.0 DrawSplineSection - 5507.0 2562.0 l gs col-1 s gr - gr - -/Times-Bold ff 360.00 scf sf -5197 4905 m -gs 1 -1 sc ( /HV) dup sw pop neg 0 rm col-1 sh gr -/Times-Bold ff 300.00 scf sf -5189 4904 m -gs 1 -1 sc (ITE) col-1 sh gr -/Times-Bold ff 360.00 scf sf -3772 4905 m -gs 1 -1 sc (HE) dup sw pop neg 0 rm col-1 sh gr -/Times-Bold ff 300.00 scf sf -3764 4904 m -gs 1 -1 sc (REST) col-1 sh gr -% Polyline -gs clippath -4635 6248 m 4755 6248 l 4755 5961 l 4695 6201 l 4635 5961 l cp -eoclip -n 4695 5768 m - 4695 6233 l gs col-1 s gr gr - -% arrowhead -n 4635 5961 m 4695 6201 l 4755 5961 l 4635 5961 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6556 4572 m 6635 4663 l 6851 4474 l 6631 4587 l 6772 4383 l cp -eoclip -n 7072 4202 m - 6607 4608 l gs col-1 s gr gr - -% arrowhead -n 6772 4383 m 6631 4587 l 6851 4474 l 6772 4383 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 4643 3375 m 4658 3375 l gs col-1 s gr -% Polyline -gs clippath -4665 3837 m 4785 3837 l 4785 3550 l 4725 3790 l 4665 3550 l cp -eoclip -n 4725 3125 m - 4725 3822 l gs col-1 s gr gr - -% arrowhead -n 4665 3550 m 4725 3790 l 4785 3550 l 4665 3550 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 270.00 scf sf -4695 6523 m -gs 1 -1 sc (Transformed Speaker Independent Model Set) dup sw pop 2 div neg 0 rm col-1 sh gr -/Times-Roman ff 270.00 scf sf -4695 1749 m -gs 1 -1 sc (Speaker Independent Model Set) dup sw pop 2 div neg 0 rm col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/headaptrdp.eps b/HTKBook/HTKFigs/headaptrdp.eps deleted file mode 100644 index 9310145..0000000 --- a/HTKBook/HTKFigs/headaptrdp.eps +++ /dev/null @@ -1,968 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: headaptrdp.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 604 542 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 542 moveto 0 0 lineto 604 0 lineto 604 542 lineto closepath clip newpath --4.0 550.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -n 6705 4422 m 10095 4422 l 10095 6595 l 6705 6595 l - cp gs col7 0.75 shd ef gr -% Polyline -n 6705 4422 m 10095 4422 l 10095 6595 l 6705 6595 l - cp gs col7 0.85 shd ef gr -% Polyline -n 105 4422 m 3495 4422 l 3495 6595 l 105 6595 l - cp gs col7 0.75 shd ef gr -% Polyline -n 105 4422 m 3495 4422 l 3495 6595 l 105 6595 l - cp gs col7 0.85 shd ef gr -/Times-Roman ff 255.00 scf sf -6198 5945 m -gs 1 -1 sc (OR) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -15.000 slw -n 6994 4565 m 6889 4565 6889 5041 105 arcto 4 {pop} repeat - 6889 5146 7653 5146 105 arcto 4 {pop} repeat - 7758 5146 7758 4670 105 arcto 4 {pop} repeat - 7758 4565 6994 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7034 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -n 6994 4565 m 6889 4565 6889 5041 105 arcto 4 {pop} repeat - 6889 5146 7653 5146 105 arcto 4 {pop} repeat - 7758 5146 7758 4670 105 arcto 4 {pop} repeat - 7758 4565 6994 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7034 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -n 394 4565 m 289 4565 289 5041 105 arcto 4 {pop} repeat - 289 5146 1053 5146 105 arcto 4 {pop} repeat - 1158 5146 1158 4670 105 arcto 4 {pop} repeat - 1158 4565 394 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -434 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -n 394 4565 m 289 4565 289 5041 105 arcto 4 {pop} repeat - 289 5146 1053 5146 105 arcto 4 {pop} repeat - 1158 5146 1158 4670 105 arcto 4 {pop} repeat - 1158 4565 394 4565 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -434 4855 m -gs 1 -1 sc (f) col-1 sh gr -% Polyline -0.000 slw -n 105 771 m 3495 771 l 3495 3640 l 105 3640 l - cp gs col7 0.85 shd ef gr -% Polyline - [30] 0 sd -n 6675 7125 m 10125 7125 l 10125 9150 l 6675 9150 l - cp gs col7 0.85 shd ef gr [] 0 sd -% Polyline -15.000 slw -n 7357 4783 m 7252 4783 7252 5259 105 arcto 4 {pop} repeat - 7252 5364 8017 5364 105 arcto 4 {pop} repeat - 8122 5364 8122 4888 105 arcto 4 {pop} repeat - 8122 4783 7357 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7396 5073 m -gs 1 -1 sc (s) col-1 sh gr -% Polyline -n 7357 4783 m 7252 4783 7252 5259 105 arcto 4 {pop} repeat - 7252 5364 8017 5364 105 arcto 4 {pop} repeat - 8122 5364 8122 4888 105 arcto 4 {pop} repeat - 8122 4783 7357 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7396 5073 m -gs 1 -1 sc (s) col-1 sh gr -% Polyline -n 3756 1000 m 3696 1000 3696 1642 60 arcto 4 {pop} repeat - 3696 1702 5149 1702 60 arcto 4 {pop} repeat - 5209 1702 5209 1060 60 arcto 4 {pop} repeat - 5209 1000 3756 1000 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3800 1357 m 3847 1169 l 3988 1075 l 4034 1543 l 4081 1262 l 4081 1450 l - 4128 1214 l 4174 1496 l 4222 1450 l 4268 1310 l 4268 1214 l - 4314 1357 l 4363 1214 l 4455 1543 l 4503 1214 l 4503 1450 l - 4550 1262 l 4596 1450 l 4596 1543 l 4643 1310 l 4690 1214 l - 4736 1403 l 4831 1310 l 4877 1403 l 4925 1310 l 4972 1450 l - 5017 1357 l 5065 1403 l - 5112 1357 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3756 1000 m 3696 1000 3696 1642 60 arcto 4 {pop} repeat - 3696 1702 5149 1702 60 arcto 4 {pop} repeat - 5209 1702 5209 1060 60 arcto 4 {pop} repeat - 5209 1000 3756 1000 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3800 1357 m 3847 1169 l 3988 1075 l 4034 1543 l 4081 1262 l 4081 1450 l - 4128 1214 l 4174 1496 l 4222 1450 l 4268 1310 l 4268 1214 l - 4314 1357 l 4363 1214 l 4455 1543 l 4503 1214 l 4503 1450 l - 4550 1262 l 4596 1450 l 4596 1543 l 4643 1310 l 4690 1214 l - 4736 1403 l 4831 1310 l 4877 1403 l 4925 1310 l 4972 1450 l - 5017 1357 l 5065 1403 l - 5112 1357 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 6957 7257 m 6882 7257 6882 7522 75 arcto 4 {pop} repeat - 6882 7597 8170 7597 75 arcto 4 {pop} repeat - 8245 7597 8245 7332 75 arcto 4 {pop} repeat - 8245 7257 6957 7257 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -7563 7484 m -gs 1 -1 sc (transform 1) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 757 4783 m 652 4783 652 5259 105 arcto 4 {pop} repeat - 652 5364 1417 5364 105 arcto 4 {pop} repeat - 1522 5364 1522 4888 105 arcto 4 {pop} repeat - 1522 4783 757 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -796 5073 m -gs 1 -1 sc (s) col-1 sh gr -% Polyline -n 757 4783 m 652 4783 652 5259 105 arcto 4 {pop} repeat - 652 5364 1417 5364 105 arcto 4 {pop} repeat - 1522 5364 1522 4888 105 arcto 4 {pop} repeat - 1522 4783 757 4783 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -796 5073 m -gs 1 -1 sc (s) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1304 1116 m -gs 1 -1 sc (000 103 p) col-1 sh gr -% Polyline -n 1219 921 m 1144 921 1144 1826 75 arcto 4 {pop} repeat - 1144 1901 2051 1901 75 arcto 4 {pop} repeat - 2126 1901 2126 996 75 arcto 4 {pop} repeat - 2126 921 1219 921 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 1219 921 m 1144 921 1144 1826 75 arcto 4 {pop} repeat - 1144 1901 2051 1901 75 arcto 4 {pop} repeat - 2126 1901 2126 996 75 arcto 4 {pop} repeat - 2126 921 1219 921 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1304 1349 m -gs 1 -1 sc (103 114 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1304 1583 m -gs 1 -1 sc (114 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1304 1816 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1304 1349 m -gs 1 -1 sc (103 114 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1304 1583 m -gs 1 -1 sc (114 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1304 1816 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 1463 1164 m 1388 1164 1388 2073 75 arcto 4 {pop} repeat - 1388 2148 2297 2148 75 arcto 4 {pop} repeat - 2372 2148 2372 1239 75 arcto 4 {pop} repeat - 2372 1164 1463 1164 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -1550 1363 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1550 1595 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1550 1830 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1550 2063 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 7718 5001 m 7613 5001 7613 5476 105 arcto 4 {pop} repeat - 7613 5581 8379 5581 105 arcto 4 {pop} repeat - 8484 5581 8484 5106 105 arcto 4 {pop} repeat - 8484 5001 7718 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7758 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 7718 5001 m 7613 5001 7613 5476 105 arcto 4 {pop} repeat - 7613 5581 8379 5581 105 arcto 4 {pop} repeat - 8484 5581 8484 5106 105 arcto 4 {pop} repeat - 8484 5001 7718 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -7758 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 3999 1325 m 3939 1325 3939 1966 60 arcto 4 {pop} repeat - 3939 2026 5392 2026 60 arcto 4 {pop} repeat - 5452 2026 5452 1385 60 arcto 4 {pop} repeat - 5452 1325 3999 1325 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4043 1682 m 4090 1493 l 4231 1400 l 4277 1869 l 4325 1587 l 4325 1774 l - 4371 1539 l 4417 1821 l 4465 1774 l 4512 1634 l 4512 1539 l - 4557 1682 l 4606 1539 l 4699 1869 l 4746 1539 l 4746 1774 l - 4793 1587 l 4839 1774 l 4839 1869 l 4887 1634 l 4933 1539 l - 4979 1728 l 5075 1634 l 5120 1728 l 5168 1634 l 5215 1774 l - 5261 1682 l 5308 1728 l - 5355 1682 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3999 1325 m 3939 1325 3939 1966 60 arcto 4 {pop} repeat - 3939 2026 5392 2026 60 arcto 4 {pop} repeat - 5452 2026 5452 1385 60 arcto 4 {pop} repeat - 5452 1325 3999 1325 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4043 1682 m 4090 1493 l 4231 1400 l 4277 1869 l 4325 1587 l 4325 1774 l - 4371 1539 l 4417 1821 l 4465 1774 l 4512 1634 l 4512 1539 l - 4557 1682 l 4606 1539 l 4699 1869 l 4746 1539 l 4746 1774 l - 4793 1587 l 4839 1774 l 4839 1869 l 4887 1634 l 4933 1539 l - 4979 1728 l 5075 1634 l 5120 1728 l 5168 1634 l 5215 1774 l - 5261 1682 l 5308 1728 l - 5355 1682 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7297 7541 m 7222 7541 7222 7807 75 arcto 4 {pop} repeat - 7222 7882 8511 7882 75 arcto 4 {pop} repeat - 8586 7882 8586 7616 75 arcto 4 {pop} repeat - 8586 7541 7297 7541 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -7904 7768 m -gs 1 -1 sc (transform 2) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 1118 5001 m 1013 5001 1013 5476 105 arcto 4 {pop} repeat - 1013 5581 1779 5581 105 arcto 4 {pop} repeat - 1884 5581 1884 5106 105 arcto 4 {pop} repeat - 1884 5001 1118 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1158 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 1118 5001 m 1013 5001 1013 5476 105 arcto 4 {pop} repeat - 1013 5581 1779 5581 105 arcto 4 {pop} repeat - 1884 5581 1884 5106 105 arcto 4 {pop} repeat - 1884 5001 1118 5001 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1158 5291 m -gs 1 -1 sc (ch) col-1 sh gr -% Polyline -n 1463 1164 m 1388 1164 1388 2073 75 arcto 4 {pop} repeat - 1388 2148 2297 2148 75 arcto 4 {pop} repeat - 2372 2148 2372 1239 75 arcto 4 {pop} repeat - 2372 1164 1463 1164 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1550 1363 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1550 1595 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1550 1830 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1550 2063 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 1711 1412 m 1636 1412 1636 2318 75 arcto 4 {pop} repeat - 1636 2393 2543 2393 75 arcto 4 {pop} repeat - 2618 2393 2618 1487 75 arcto 4 {pop} repeat - 2618 1412 1711 1412 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -1795 1607 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1795 1840 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1795 2075 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -1795 2307 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 8080 5218 m 7975 5218 7975 5693 105 arcto 4 {pop} repeat - 7975 5798 8743 5798 105 arcto 4 {pop} repeat - 8848 5798 8848 5323 105 arcto 4 {pop} repeat - 8848 5218 8080 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8122 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 8080 5218 m 7975 5218 7975 5693 105 arcto 4 {pop} repeat - 7975 5798 8743 5798 105 arcto 4 {pop} repeat - 8848 5798 8848 5323 105 arcto 4 {pop} repeat - 8848 5218 8080 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8122 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 4242 1649 m 4182 1649 4182 2290 60 arcto 4 {pop} repeat - 4182 2350 5636 2350 60 arcto 4 {pop} repeat - 5696 2350 5696 1709 60 arcto 4 {pop} repeat - 5696 1649 4242 1649 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4286 2006 m 4333 1819 l 4474 1724 l 4520 2193 l 4568 1911 l 4568 2099 l - 4615 1863 l 4660 2145 l 4708 2099 l 4755 1959 l 4755 1863 l - 4801 2006 l 4849 1863 l 4942 2193 l 4990 1863 l 4990 2099 l - 5036 1911 l 5082 2099 l 5082 2193 l 5130 1959 l 5177 1863 l - 5222 2052 l 5318 1959 l 5365 2052 l 5411 1959 l 5458 2099 l - 5505 2006 l 5552 2052 l - 5598 2006 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4242 1649 m 4182 1649 4182 2290 60 arcto 4 {pop} repeat - 4182 2350 5636 2350 60 arcto 4 {pop} repeat - 5696 2350 5696 1709 60 arcto 4 {pop} repeat - 5696 1649 4242 1649 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4286 2006 m 4333 1819 l 4474 1724 l 4520 2193 l 4568 1911 l 4568 2099 l - 4615 1863 l 4660 2145 l 4708 2099 l 4755 1959 l 4755 1863 l - 4801 2006 l 4849 1863 l 4942 2193 l 4990 1863 l 4990 2099 l - 5036 1911 l 5082 2099 l 5082 2193 l 5130 1959 l 5177 1863 l - 5222 2052 l 5318 1959 l 5365 2052 l 5411 1959 l 5458 2099 l - 5505 2006 l 5552 2052 l - 5598 2006 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7638 7825 m 7563 7825 7563 8091 75 arcto 4 {pop} repeat - 7563 8166 8852 8166 75 arcto 4 {pop} repeat - 8927 8166 8927 7900 75 arcto 4 {pop} repeat - 8927 7825 7638 7825 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -8245 8053 m -gs 1 -1 sc (transform 3) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 1480 5218 m 1375 5218 1375 5693 105 arcto 4 {pop} repeat - 1375 5798 2143 5798 105 arcto 4 {pop} repeat - 2248 5798 2248 5323 105 arcto 4 {pop} repeat - 2248 5218 1480 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1522 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 1480 5218 m 1375 5218 1375 5693 105 arcto 4 {pop} repeat - 1375 5798 2143 5798 105 arcto 4 {pop} repeat - 2248 5798 2248 5323 105 arcto 4 {pop} repeat - 2248 5218 1480 5218 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1522 5508 m -gs 1 -1 sc (t) col-1 sh gr -% Polyline -n 1711 1412 m 1636 1412 1636 2318 75 arcto 4 {pop} repeat - 1636 2393 2543 2393 75 arcto 4 {pop} repeat - 2618 2393 2618 1487 75 arcto 4 {pop} repeat - 2618 1412 1711 1412 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1795 1607 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1795 2075 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1795 1840 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1795 2307 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 8444 5435 m 8339 5435 8339 5910 105 arcto 4 {pop} repeat - 8339 6015 9104 6015 105 arcto 4 {pop} repeat - 9209 6015 9209 5540 105 arcto 4 {pop} repeat - 9209 5435 8444 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8484 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Polyline -n 8444 5435 m 8339 5435 8339 5910 105 arcto 4 {pop} repeat - 8339 6015 9104 6015 105 arcto 4 {pop} repeat - 9209 6015 9209 5540 105 arcto 4 {pop} repeat - 9209 5435 8444 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8484 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Polyline -n 4486 1974 m 4426 1974 4426 2615 60 arcto 4 {pop} repeat - 4426 2675 5879 2675 60 arcto 4 {pop} repeat - 5939 2675 5939 2034 60 arcto 4 {pop} repeat - 5939 1974 4486 1974 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4530 2331 m 4576 2143 l 4718 2049 l 4763 2518 l 4811 2235 l 4811 2423 l - 4858 2188 l 4904 2470 l 4951 2423 l 4998 2283 l 4998 2188 l - 5044 2331 l 5093 2188 l 5186 2518 l 5233 2188 l 5233 2423 l - 5280 2235 l 5326 2423 l 5326 2518 l 5373 2283 l 5420 2188 l - 5467 2377 l 5561 2283 l 5608 2377 l 5655 2283 l 5701 2423 l - 5748 2331 l 5795 2377 l - 5842 2331 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4486 1974 m 4426 1974 4426 2615 60 arcto 4 {pop} repeat - 4426 2675 5879 2675 60 arcto 4 {pop} repeat - 5939 2675 5939 2034 60 arcto 4 {pop} repeat - 5939 1974 4486 1974 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4530 2331 m 4576 2143 l 4718 2049 l 4763 2518 l 4811 2235 l 4811 2423 l - 4858 2188 l 4904 2470 l 4951 2423 l 4998 2283 l 4998 2188 l - 5044 2331 l 5093 2188 l 5186 2518 l 5233 2188 l 5233 2423 l - 5280 2235 l 5326 2423 l 5326 2518 l 5373 2283 l 5420 2188 l - 5467 2377 l 5561 2283 l 5608 2377 l 5655 2283 l 5701 2423 l - 5748 2331 l 5795 2377 l - 5842 2331 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 8661 8678 m 8586 8678 8586 8943 75 arcto 4 {pop} repeat - 8586 9018 9874 9018 75 arcto 4 {pop} repeat - 9949 9018 9949 8753 75 arcto 4 {pop} repeat - 9949 8678 8661 8678 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -9268 8904 m -gs 1 -1 sc (transform n) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 1844 5435 m 1739 5435 1739 5910 105 arcto 4 {pop} repeat - 1739 6015 2504 6015 105 arcto 4 {pop} repeat - 2609 6015 2609 5540 105 arcto 4 {pop} repeat - 2609 5435 1844 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1884 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Polyline -n 1844 5435 m 1739 5435 1739 5910 105 arcto 4 {pop} repeat - 1739 6015 2504 6015 105 arcto 4 {pop} repeat - 2609 6015 2609 5540 105 arcto 4 {pop} repeat - 2609 5435 1844 5435 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -1884 5725 m -gs 1 -1 sc (aa) col-1 sh gr -% Ellipse -n 8643 8412 37 37 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 1955 1656 m 1880 1656 1880 2564 75 arcto 4 {pop} repeat - 1880 2639 2788 2639 75 arcto 4 {pop} repeat - 2863 2639 2863 1731 75 arcto 4 {pop} repeat - 2863 1656 1955 1656 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -2038 2086 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2038 2553 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 1955 1656 m 1880 1656 1880 2564 75 arcto 4 {pop} repeat - 1880 2639 2788 2639 75 arcto 4 {pop} repeat - 2863 2639 2863 1731 75 arcto 4 {pop} repeat - 2863 1656 1955 1656 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -2038 1855 m -gs 1 -1 sc (000 023 s) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2038 2086 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2038 2320 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2038 2553 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2038 2320 m -gs 1 -1 sc (092 134 t) col-1 sh gr -% Ellipse -n 8416 8279 37 37 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 8889 8507 37 37 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -/Times-Roman ff 255.00 scf sf -9609 7484 m -gs 1 -1 sc (TMF) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 2201 1901 m 2126 1901 2126 2809 75 arcto 4 {pop} repeat - 2126 2884 3033 2884 75 arcto 4 {pop} repeat - 3108 2884 3108 1976 75 arcto 4 {pop} repeat - 3108 1901 2201 1901 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 195.00 scf sf -2286 2099 m -gs 1 -1 sc (000 046 s) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2286 2332 m -gs 1 -1 sc (046 091 ih) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2286 2564 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 195.00 scf sf -2286 2799 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 8806 5652 m 8701 5652 8701 6128 105 arcto 4 {pop} repeat - 8701 6233 9467 6233 105 arcto 4 {pop} repeat - 9572 6233 9572 5757 105 arcto 4 {pop} repeat - 9572 5652 8806 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8848 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 8806 5652 m 8701 5652 8701 6128 105 arcto 4 {pop} repeat - 8701 6233 9467 6233 105 arcto 4 {pop} repeat - 9572 6233 9572 5757 105 arcto 4 {pop} repeat - 9572 5652 8806 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -8848 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 4729 2298 m 4669 2298 4669 2939 60 arcto 4 {pop} repeat - 4669 2999 6123 2999 60 arcto 4 {pop} repeat - 6183 2999 6183 2358 60 arcto 4 {pop} repeat - 6183 2298 4729 2298 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4773 2655 m 4820 2468 l 4961 2373 l 5008 2842 l 5054 2560 l 5054 2748 l - 5101 2512 l 5148 2794 l 5195 2748 l 5241 2608 l 5241 2512 l - 5288 2655 l 5336 2512 l 5429 2842 l 5476 2512 l 5476 2748 l - 5523 2560 l 5570 2748 l 5570 2842 l 5616 2608 l 5663 2512 l - 5710 2702 l 5805 2608 l 5851 2702 l 5898 2608 l 5945 2748 l - 5992 2655 l 6038 2702 l - 6085 2655 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4729 2298 m 4669 2298 4669 2939 60 arcto 4 {pop} repeat - 4669 2999 6123 2999 60 arcto 4 {pop} repeat - 6183 2999 6183 2358 60 arcto 4 {pop} repeat - 6183 2298 4729 2298 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4773 2655 m 4820 2468 l 4961 2373 l 5008 2842 l 5054 2560 l 5054 2748 l - 5101 2512 l 5148 2794 l 5195 2748 l 5241 2608 l 5241 2512 l - 5288 2655 l 5336 2512 l 5429 2842 l 5476 2512 l 5476 2748 l - 5523 2560 l 5570 2748 l 5570 2842 l 5616 2608 l 5663 2512 l - 5710 2702 l 5805 2608 l 5851 2702 l 5898 2608 l 5945 2748 l - 5992 2655 l 6038 2702 l - 6085 2655 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 2206 5652 m 2101 5652 2101 6128 105 arcto 4 {pop} repeat - 2101 6233 2867 6233 105 arcto 4 {pop} repeat - 2972 6233 2972 5757 105 arcto 4 {pop} repeat - 2972 5652 2206 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2248 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 2206 5652 m 2101 5652 2101 6128 105 arcto 4 {pop} repeat - 2101 6233 2867 6233 105 arcto 4 {pop} repeat - 2972 6233 2972 5757 105 arcto 4 {pop} repeat - 2972 5652 2206 5652 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2248 5943 m -gs 1 -1 sc (eh) col-1 sh gr -% Polyline -n 2201 1901 m 2126 1901 2126 2809 75 arcto 4 {pop} repeat - 2126 2884 3033 2884 75 arcto 4 {pop} repeat - 3108 2884 3108 1976 75 arcto 4 {pop} repeat - 3108 1901 2201 1901 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -2286 2099 m -gs 1 -1 sc (000 046 s) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2286 2332 m -gs 1 -1 sc (046 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2286 2564 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2286 2799 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -% Polyline -n 9170 5871 m 9065 5871 9065 6346 105 arcto 4 {pop} repeat - 9065 6451 9829 6451 105 arcto 4 {pop} repeat - 9934 6451 9934 5976 105 arcto 4 {pop} repeat - 9934 5871 9170 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -9209 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 9170 5871 m 9065 5871 9065 6346 105 arcto 4 {pop} repeat - 9065 6451 9829 6451 105 arcto 4 {pop} repeat - 9934 6451 9934 5976 105 arcto 4 {pop} repeat - 9934 5871 9170 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -9209 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 4972 2623 m 4912 2623 4912 3264 60 arcto 4 {pop} repeat - 4912 3324 6366 3324 60 arcto 4 {pop} repeat - 6426 3324 6426 2683 60 arcto 4 {pop} repeat - 6426 2623 4972 2623 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 5016 2980 m 5063 2792 l 5204 2698 l 5251 3166 l 5298 2884 l 5298 3072 l - 5345 2838 l 5391 3119 l 5438 3072 l 5485 2932 l 5485 2838 l - 5531 2980 l 5579 2838 l 5673 3166 l 5720 2838 l 5720 3072 l - 5766 2884 l 5813 3072 l 5813 3166 l 5860 2932 l 5907 2838 l - 5953 3026 l 6048 2932 l 6095 3026 l 6142 2932 l 6188 3072 l - 6235 2980 l 6282 3026 l - 6328 2980 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4972 2623 m 4912 2623 4912 3264 60 arcto 4 {pop} repeat - 4912 3324 6366 3324 60 arcto 4 {pop} repeat - 6426 3324 6426 2683 60 arcto 4 {pop} repeat - 6426 2623 4972 2623 60 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 5016 2980 m 5063 2792 l 5204 2698 l 5251 3166 l 5298 2884 l 5298 3072 l - 5345 2838 l 5391 3119 l 5438 3072 l 5485 2932 l 5485 2838 l - 5531 2980 l 5579 2838 l 5673 3166 l 5720 2838 l 5720 3072 l - 5766 2884 l 5813 3072 l 5813 3166 l 5860 2932 l 5907 2838 l - 5953 3026 l 6048 2932 l 6095 3026 l 6142 2932 l 6188 3072 l - 6235 2980 l 6282 3026 l - 6328 2980 l gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 2570 5871 m 2465 5871 2465 6346 105 arcto 4 {pop} repeat - 2465 6451 3229 6451 105 arcto 4 {pop} repeat - 3334 6451 3334 5976 105 arcto 4 {pop} repeat - 3334 5871 2570 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2609 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 2570 5871 m 2465 5871 2465 6346 105 arcto 4 {pop} repeat - 2465 6451 3229 6451 105 arcto 4 {pop} repeat - 3334 6451 3334 5976 105 arcto 4 {pop} repeat - 3334 5871 2570 5871 105 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 255.00 scf sf -2609 6161 m -gs 1 -1 sc (ih) col-1 sh gr -% Polyline -n 2447 2148 m 2372 2148 2372 3056 75 arcto 4 {pop} repeat - 2372 3131 3280 3131 75 arcto 4 {pop} repeat - 3355 3131 3355 2223 75 arcto 4 {pop} repeat - 3355 2148 2447 2148 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 2447 2148 m 2372 2148 2372 3056 75 arcto 4 {pop} repeat - 2372 3131 3280 3131 75 arcto 4 {pop} repeat - 3355 3131 3355 2223 75 arcto 4 {pop} repeat - 3355 2148 2447 2148 75 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 180.00 scf sf -2530 2811 m -gs 1 -1 sc (092 134 t) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2530 2345 m -gs 1 -1 sc (000 023 b) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2530 2577 m -gs 1 -1 sc (024 091 ih) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2530 3045 m -gs 1 -1 sc (135 182 ih) col-1 sh gr -/Times-Roman ff 255.00 scf sf -9876 4855 m -gs 1 -1 sc (MMF) dup sw pop neg 0 rm col-1 sh gr -% Polyline -n 5412 162 m 5292 162 5292 564 120 arcto 4 {pop} repeat - 5292 684 6216 684 120 arcto 4 {pop} repeat - 6336 684 6336 282 120 arcto 4 {pop} repeat - 6336 162 5412 162 120 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 270.00 scf sf -5814 510 m -gs 1 -1 sc (trainlist) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 3640 771 m - 3640 422 l gs col-1 s gr -% Polyline -n 3640 422 m - 5292 422 l gs col-1 s gr -% Polyline -n 6336 422 m 7814 422 l - 7814 771 l gs col-1 s gr -/Times-Roman ff 255.00 scf sf -5425 1269 m -gs 1 -1 sc (data/adapt1.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5913 1918 m -gs 1 -1 sc (data/adapt3.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6156 2243 m -gs 1 -1 sc (data/adapt4.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6399 2567 m -gs 1 -1 sc (data/adapt5.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6561 2892 m -gs 1 -1 sc (data/adapt6.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5669 1593 m -gs 1 -1 sc (data/adapt2.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5425 1269 m -gs 1 -1 sc (data/adapt1.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5913 1918 m -gs 1 -1 sc (data/adapt3.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6156 2243 m -gs 1 -1 sc (data/adapt4.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6399 2567 m -gs 1 -1 sc (data/adapt5.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -6561 2892 m -gs 1 -1 sc (data/adapt6.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -5669 1593 m -gs 1 -1 sc (data/adapt2.mfc) col-1 sh gr -/Times-Roman ff 255.00 scf sf -3276 4855 m -gs 1 -1 sc (MMF) dup sw pop neg 0 rm col-1 sh gr -% Polyline -n 105 7029 m 105 7378 l - 1234 7378 l gs col-1 s gr -% Polyline -n 1354 7116 m 1234 7116 1234 7518 120 arcto 4 {pop} repeat - 1234 7638 2157 7638 120 arcto 4 {pop} repeat - 2277 7638 2277 7236 120 arcto 4 {pop} repeat - 2277 7116 1354 7116 120 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 270.00 scf sf -1756 7465 m -gs 1 -1 sc (hmmlist) dup sw pop 2 div neg 0 rm col-1 sh gr -% Polyline -n 2277 7378 m 3495 7378 l - 3495 7029 l gs col-1 s gr -% Polyline -gs clippath -4290 5235 m 4290 5115 l 4003 5115 l 4243 5175 l 4003 5235 l cp -eoclip -n 3600 5175 m - 4275 5175 l gs col-1 s gr gr - -% arrowhead -n 4003 5235 m 4243 5175 l 4003 5115 l 4003 5235 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6615 5235 m 6615 5115 l 6328 5115 l 6568 5175 l 6328 5235 l cp -eoclip -n 5925 5175 m - 6600 5175 l gs col-1 s gr gr - -% arrowhead -n 6328 5235 m 6568 5175 l 6328 5115 l 6328 5235 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -5040 4515 m 5160 4515 l 5160 4228 l 5100 4468 l 5040 4228 l cp -eoclip -n 5100 3825 m - 5100 4500 l gs col-1 s gr gr - -% arrowhead -n 5040 4228 m 5100 4468 l 5160 4228 l 5040 4228 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6333 6870 m 6433 6804 l 6273 6565 l 6357 6798 l 6173 6631 l cp -eoclip -n 5775 5925 m - 6375 6825 l gs col-1 s gr gr - -% arrowhead -n 6173 6631 m 6357 6798 l 6273 6565 l 6173 6631 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 5768 5700 m 4459 5700 l 4459 4718 l 5768 4718 l - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5114 5312 m -gs 1 -1 sc (HEAdapt) dup sw pop 2 div neg 0 rm col-1 sh gr -/Times-Roman ff 255.00 scf sf -3203 3465 m -gs 1 -1 sc (MLF) dup sw pop neg 0 rm col-1 sh gr -% Polyline -0.000 slw -n 3408 2683 m - 4015 2683 l gs col7 0.75 shd ef gr -% Polyline -n 3408 2683 m - 4015 2683 l gs col7 0.75 shd ef gr -% Polyline -15.000 slw -gs clippath -4665 3210 m 4665 3090 l 4378 3090 l 4618 3150 l 4378 3210 l cp -eoclip -n 3450 2625 m 3675 2625 l 3675 3150 l - 4650 3150 l gs col-1 s gr gr - -% arrowhead -n 4378 3210 m 4618 3150 l 4378 3090 l 4378 3210 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 195.00 scf sf -1611 2590 m -gs 1 -1 sc (*/adapt3.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1855 2836 m -gs 1 -1 sc (*/adapt4.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2101 3082 m -gs 1 -1 sc (*/adapt5.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2346 3326 m -gs 1 -1 sc (*/adapt6.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1611 2590 m -gs 1 -1 sc (*/adapt3.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1855 2836 m -gs 1 -1 sc (*/adapt4.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2101 3082 m -gs 1 -1 sc (*/adapt5.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -2346 3326 m -gs 1 -1 sc (*/adapt6.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1119 2099 m -gs 1 -1 sc (*/adapt1.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1365 2345 m -gs 1 -1 sc (*/adapt2.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1119 2099 m -gs 1 -1 sc (*/adapt1.lab) dup sw pop neg 0 rm col-1 sh gr -/Times-Roman ff 195.00 scf sf -1365 2345 m -gs 1 -1 sc (*/adapt2.lab) dup sw pop neg 0 rm col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/herestdp.eps b/HTKBook/HTKFigs/herestdp.eps deleted file mode 100644 index c8ef8e9..0000000 --- a/HTKBook/HTKFigs/herestdp.eps +++ /dev/null @@ -1,4452 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: herestdp.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/31/95 8:24:26 p.m. -%%BoundingBox: 44.500 350.500 503.005 751.500 -%%QDBoundingBox: 44.500 40.500 503.005 441.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=T tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.149 setcmykcolor end} {0.850 0.850 0.850 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 225.000 261.000 0.000 0.000 216.000 225.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 315.000 45.000 0.000 0.000 117.000 180.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 378.000 163.994 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -169.438 386.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.505 4.000 S -(h) -0.616 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 324.500 56.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 333.500 74.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 342.500 92.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 351.500 110.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 360.500 128.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 369.500 146.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 378.500 164.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 372.000 153.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -160.601 380.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 381.000 172.994 0.000 0.000 16.000 26.000 rect -%@EndRect -gsave -185.994 389.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -12.505 4.000 S -(h) -8.616 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 362.000 136.994 0.000 0.000 16.000 12.427 rect -%@EndRect -gsave -143.208 370.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.505 4.000 S -(a) 0.708 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 354.000 118.994 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -120.938 362.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 344.000 97.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -104.601 352.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 334.000 83.994 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -86.718 342.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 326.000 66.994 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -69.325 334.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -1.505 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 72.000 45.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 50.000 108.000 0.000 0.000 27.000 63.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.199 setcmykcolor end} {0.800 0.800 0.800 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 45.000 0.000 0.000 117.000 180.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.000 163.994 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -169.438 170.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.505 4.000 S -(h) -0.616 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.500 56.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.500 74.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 126.500 92.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 135.500 110.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.500 128.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.500 146.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 162.500 164.494 0.000 0.000 36.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.000 153.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -160.601 164.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.000 172.994 0.000 0.000 16.000 26.000 rect -%@EndRect -gsave -185.994 173.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -12.505 4.000 S -(h) -8.616 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.000 136.994 0.000 0.000 16.000 12.427 rect -%@EndRect -gsave -143.208 154.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.505 4.000 S -(a) 0.708 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 138.000 118.994 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -120.938 146.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 128.000 97.994 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -104.601 136.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -6.505 4.000 S -(h) -0.291 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 83.994 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -86.718 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.505 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.000 66.994 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -69.325 118.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -1.505 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 236.000 295.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 246.000 304.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -332.389 274.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(1) -10.000 -19.000 S -(0) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -(e) 7.500 -19.000 S -(h) 11.938 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 254.000 313.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 264.000 322.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -350.389 292.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(2) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(s) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 272.000 331.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 282.000 340.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -368.389 310.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(5) -5.000 -19.000 S -(6) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(i) 10.000 -19.000 S -(h) 12.778 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 290.000 349.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 300.000 358.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -386.389 328.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(2) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(b) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 308.000 367.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 318.000 376.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -404.389 346.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(1) -5.000 -19.000 S -(6) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(a) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(t) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 326.000 385.000 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 336.000 394.000 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -422.389 364.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -19.000 S -(0) -22.500 -19.000 S -(0) -17.500 -19.000 S -( ) -12.500 -19.000 S -(0) -10.000 -19.000 S -(2) -5.000 -19.000 S -(3) 0.000 -19.000 S -( ) 5.000 -19.000 S -( ) 7.500 -19.000 S -(b) 10.000 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 -8.000 S -(2) -22.500 -8.000 S -(4) -17.500 -8.000 S -( ) -12.500 -8.000 S -(0) -10.000 -8.000 S -(9) -5.000 -8.000 S -(1) 0.000 -8.000 S -( ) 5.000 -8.000 S -( ) 7.500 -8.000 S -( ) 10.000 -8.000 S -(i) 12.500 -8.000 S -(h) 15.278 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.500 3.000 S -(9) -22.500 3.000 S -(2) -17.500 3.000 S -( ) -12.500 3.000 S -(1) -10.000 3.000 S -(3) -5.000 3.000 S -(4) 0.000 3.000 S -( ) 5.000 3.000 S -( ) 7.500 3.000 S -( ) 10.000 3.000 S -(t) 12.500 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.500 14.000 S -(3) -22.500 14.000 S -(5) -17.500 14.000 S -( ) -12.500 14.000 S -(1) -10.000 14.000 S -(8) -5.000 14.000 S -(2) 0.000 14.000 S -( ) 5.000 14.000 S -( ) 7.500 14.000 S -( ) 10.000 14.000 S -(i) 12.500 14.000 S -(h) 15.278 14.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 80.500 250.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 89.500 259.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.500 261.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.500 270.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 118.500 272.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 127.500 281.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 137.500 283.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 146.500 292.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 156.500 294.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 165.500 303.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 175.500 305.494 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 184.500 314.494 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 376.994 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -415.769 89.000 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.505 4.000 S -(a) -32.504 4.000 S -(t) -26.503 4.000 S -(a) -20.502 4.000 S -(/) -14.501 4.000 S -(t) -8.500 4.000 S -(r) -2.500 4.000 S -(1) 3.500 4.000 S -(.) 9.501 4.000 S -(m) 15.502 4.000 S -(f) 21.503 4.000 S -(c) 27.504 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.557 386.686 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -425.461 108.557 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -37.813 4.000 S -(a) -31.812 4.000 S -(t) -25.811 4.000 S -(a) -19.810 4.000 S -(/) -13.809 4.000 S -(t) -7.808 4.000 S -(r) -1.807 4.000 S -(2) 4.193 4.000 S -(.) 10.194 4.000 S -(m) 16.195 4.000 S -(f) 22.196 4.000 S -(c) 28.197 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 121.115 396.378 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -435.153 128.115 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.121 4.000 S -(a) -32.120 4.000 S -(t) -26.119 4.000 S -(a) -20.118 4.000 S -(/) -14.117 4.000 S -(t) -8.116 4.000 S -(r) -2.115 4.000 S -(3) 3.885 4.000 S -(.) 9.886 4.000 S -(m) 15.887 4.000 S -(f) 21.888 4.000 S -(c) 27.889 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.673 406.070 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -444.846 147.673 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.429 4.000 S -(a) -32.428 4.000 S -(t) -26.427 4.000 S -(a) -20.426 4.000 S -(/) -14.425 4.000 S -(t) -8.424 4.000 S -(r) -2.423 4.000 S -(4) 3.577 4.000 S -(.) 9.578 4.000 S -(m) 15.579 4.000 S -(f) 21.580 4.000 S -(c) 27.581 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.230 415.763 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -454.538 167.230 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.736 4.000 S -(a) -32.735 4.000 S -(t) -26.734 4.000 S -(a) -20.733 4.000 S -(/) -14.733 4.000 S -(t) -8.732 4.000 S -(r) -2.731 4.000 S -(5) 3.269 4.000 S -(.) 9.270 4.000 S -(m) 15.271 4.000 S -(f) 21.272 4.000 S -(c) 27.273 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 179.788 425.455 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -464.230 186.788 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.044 4.000 S -(a) -32.043 4.000 S -(t) -26.042 4.000 S -(a) -20.041 4.000 S -(/) -14.040 4.000 S -(t) -8.039 4.000 S -(r) -2.038 4.000 S -(6) 3.962 4.000 S -(.) 9.963 4.000 S -(m) 15.964 4.000 S -(f) 21.965 4.000 S -(c) 27.966 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 321.500 265.494 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -292.498 328.500 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.005 4.000 S -(/) -20.004 4.000 S -(t) -14.003 4.000 S -(r) -8.002 4.000 S -(1) -2.001 4.000 S -(.) 3.999 4.000 S -(l) 10.000 4.000 S -(a) 16.000 4.000 S -(b) 22.001 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 338.113 279.647 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -306.651 345.113 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.852 4.000 S -(/) -20.851 4.000 S -(t) -14.850 4.000 S -(r) -8.849 4.000 S -(2) -2.848 4.000 S -(.) 3.152 4.000 S -(l) 9.153 4.000 S -(a) 15.154 4.000 S -(b) 21.155 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 354.726 293.800 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -320.805 361.726 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.699 4.000 S -(/) -20.698 4.000 S -(t) -14.697 4.000 S -(r) -8.696 4.000 S -(3) -2.695 4.000 S -(.) 3.305 4.000 S -(l) 9.306 4.000 S -(a) 15.307 4.000 S -(b) 21.308 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 371.339 307.954 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -334.958 378.339 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.545 4.000 S -(/) -20.544 4.000 S -(t) -14.543 4.000 S -(r) -8.542 4.000 S -(4) -2.541 4.000 S -(.) 3.459 4.000 S -(l) 9.459 4.000 S -(a) 15.460 4.000 S -(b) 21.461 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 387.952 322.107 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -349.111 394.952 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.392 4.000 S -(/) -20.391 4.000 S -(t) -14.390 4.000 S -(r) -8.389 4.000 S -(5) -2.388 4.000 S -(.) 3.612 4.000 S -(l) 9.613 4.000 S -(a) 15.614 4.000 S -(b) 21.615 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 404.566 336.260 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -363.265 411.566 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(*) -26.239 4.000 S -(/) -20.238 4.000 S -(t) -14.237 4.000 S -(r) -8.236 4.000 S -(6) -2.235 4.000 S -(.) 3.765 4.000 S -(l) 9.766 4.000 S -(a) 15.767 4.000 S -(b) 21.768 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 474.494 357.500 447.494 357.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 474.494 249.500 474.494 357.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.494 248.500 475.494 248.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -376.494 212.500 moveto -/Triangular 14.687 10.574 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.494 213.888 376.494 248.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -196.494 248.500 moveto -/Triangular 14.687 10.574 false 325.431 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.637 247.711 283.494 188.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 237.500 88.494 0.000 0.000 63.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -133.494 237.500 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.494 236.111 133.494 194.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -133.494 336.500 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.494 335.111 133.494 300.500 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 260.500 83.494 0.000 0.000 20.000 107.000 rect -%@EndRect -gsave -136.994 270.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.503 5.000 S -(E) -14.504 5.000 S -(R) -3.509 5.000 S -(e) 8.496 5.000 S -(s) 16.485 5.000 S -(t) 23.490 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 45.000 81.000 45.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 72.000 225.000 81.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 56.000 118.000 0.000 0.000 16.000 45.896 rect -%@EndRect -gsave -140.948 64.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -22.500 4.000 S -(m) -15.500 4.000 S -(m) -4.610 4.000 S -(l) 6.279 4.000 S -(i) 10.168 4.000 S -(s) 14.058 4.000 S -(t) 19.506 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.500 181.500 0.000 0.000 14.000 28.013 rect -%@EndRect -gsave -195.506 108.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -14.000 3.000 S -(M) -3.330 3.000 S -(F) 7.339 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 317.500 181.500 0.000 0.000 14.000 28.013 rect -%@EndRect -gsave -195.506 324.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -14.000 3.000 S -(M) -3.330 3.000 S -(F) 7.339 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 63.000 270.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 41.000 333.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 72.000 270.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 63.000 450.000 72.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.000 343.000 0.000 0.000 16.000 42.772 rect -%@EndRect -gsave -364.386 55.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -20.500 4.000 S -(r) -16.610 4.000 S -(a) -11.948 4.000 S -(i) -5.734 4.000 S -(n) -1.844 4.000 S -(l) 5.155 4.000 S -(i) 9.044 4.000 S -(s) 12.934 4.000 S -(t) 18.382 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 414.000 441.000 0.000 0.000 14.000 24.673 rect -%@EndRect -gsave -453.336 421.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -11.500 3.000 S -(L) -0.830 3.000 S -(F) 6.500 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hierarch.eps b/HTKBook/HTKFigs/hierarch.eps deleted file mode 100644 index 6229dcd..0000000 --- a/HTKBook/HTKFigs/hierarch.eps +++ /dev/null @@ -1,3640 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hierarch.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:4/1/95 3:46:14 p.m. -%%BoundingBox: 10.500 534.500 427.500 769.500 -%%QDBoundingBox: 10.500 22.500 427.500 257.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.000 322.000 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -329.500 114.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -7.500 5.000 S -(.) -3.000 5.000 S -(.) 1.500 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.000 118.000 315.500 38.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 357.000 115.500 317.000 37.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 303.500 117.500 316.000 39.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.000 303.000 0.000 0.000 12.000 26.000 rect -%@EndRect -gsave -316.000 29.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -12.500 4.000 S -(m) -6.500 4.000 S -(m) 2.833 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 34.500 312.500 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 411.500 118.000 318.000 38.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 70.000 124.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 136.000 0.000 0.000 12.000 84.000 rect -%@EndRect -gsave -178.000 73.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(=) -41.500 3.000 S -( ) -35.860 3.000 S -(p) -33.360 3.000 S -(o) -28.360 3.000 S -(t) -23.360 3.000 S -(e) -20.582 3.000 S -(n) -16.143 3.000 S -(t) -11.143 3.000 S -(i) -8.365 3.000 S -(a) -5.586 3.000 S -(l) -1.148 3.000 S -( ) 1.629 3.000 S -(t) 4.129 3.000 S -(i) 6.908 3.000 S -(e) 9.686 3.000 S -( ) 14.125 3.000 S -(p) 16.625 3.000 S -(o) 21.625 3.000 S -(i) 26.625 3.000 S -(n) 29.403 3.000 S -(t) 34.403 3.000 S -(s) 37.181 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 63.000 118.000 0.000 0.000 22.000 110.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 214.000 57.000 0.000 0.000 13.000 8.000 rect -%@EndRect -gsave -61.000 220.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -3.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 64.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -67.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 84.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -87.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.000 76.000 0.000 0.000 13.000 9.000 rect -%@EndRect -gsave -80.500 219.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -4.500 2.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 209.000 72.000 191.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 209.000 72.000 191.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 75.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -78.000 183.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 69.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -72.500 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 188.000 69.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 78.000 172.000 126.000 152.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.000 174.500 126.000 152.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 120.000 172.500 125.500 152.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 204.500 60.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 205.500 78.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 214.000 102.500 0.000 0.000 13.000 8.000 rect -%@EndRect -gsave -106.500 220.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.000 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 110.500 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -113.500 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 130.500 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -133.500 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.000 122.500 0.000 0.000 13.000 9.000 rect -%@EndRect -gsave -127.000 219.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -4.000 2.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.500 209.000 117.500 191.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.500 209.000 117.500 191.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 119.500 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -122.500 183.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 113.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -117.000 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 188.500 115.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 206.000 105.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 206.000 123.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 214.000 165.000 0.000 0.000 13.000 8.000 rect -%@EndRect -gsave -169.000 220.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -3.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 173.000 0.000 0.000 11.000 10.000 rect -%@EndRect -gsave -178.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.500 2.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.000 197.000 0.000 0.000 11.000 10.000 rect -%@EndRect -gsave -202.000 226.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 213.000 189.000 0.000 0.000 13.000 9.000 rect -%@EndRect -gsave -193.500 219.500 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -4.500 2.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 173.000 209.000 182.000 191.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 191.000 209.000 182.000 191.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 179.000 184.000 0.000 0.000 11.000 10.000 rect -%@EndRect -gsave -189.000 184.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.500 2.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 178.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -181.500 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.000 179.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 206.000 170.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 205.500 188.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 142.000 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -149.500 205.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -7.500 5.000 S -(.) -3.000 5.000 S -(.) 1.500 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.500 204.500 moveto -/Triangular 14.099 7.049 false 292.326 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.259 202.649 140.500 185.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 193.000 14.000 0.000 0.000 12.000 12.000 rect -%@EndRect -gsave -20.000 199.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.500 3.000 S -(u) -0.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -56.000 207.000 moveto -/Triangular 14.099 7.049 false 188.758 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.023 206.695 30.000 203.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 190.000 11.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.000 36.000 0.000 0.000 12.000 15.000 rect -%@EndRect -gsave -43.500 170.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -7.500 3.000 S -(m) -2.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -68.000 188.000 moveto -/Triangular 14.099 7.049 false 214.454 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.350 186.868 50.500 176.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 34.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.000 133.000 0.000 0.000 12.000 16.500 rect -%@EndRect -gsave -141.250 177.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -1.410 3.000 S -(v) 4.000 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 167.500 135.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 119.000 124.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.500 155.000 209.000 119.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 182.000 232.000 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 248.000 182.000 232.000 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.000 182.000 232.000 155.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.000 225.777 0.000 0.000 12.000 23.333 rect -%@EndRect -gsave -237.444 196.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -10.722 4.000 S -(t) -5.396 4.000 S -(c) -2.062 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.500 155.000 207.000 119.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 319.500 153.000 207.000 118.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 364.000 154.000 207.000 118.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 309.000 0.000 0.000 13.000 27.000 rect -%@EndRect -gsave -322.500 167.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -({) -13.500 4.000 S -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1.000 0 160.500 309.000 0.000 0.000 13.000 27.000 rect -%@EndRect -gsave -322.500 167.000 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -7.740 4.000 S -grestore -restore -save -gsave -322.500 167.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -2.806 4.000 S -( ) 0.193 4.000 S -( ) 3.193 4.000 S -(}) 6.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 322.000 0.000 0.000 12.000 5.000 rect -%@EndRect -gsave -324.500 173.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.000 354.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -366.500 168.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -({) -12.500 4.000 S -(d) -6.740 4.000 S -( ) -0.740 4.000 S -( ) 2.259 4.000 S -(}) 5.259 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 368.000 0.000 0.000 12.000 4.000 rect -%@EndRect -gsave -370.000 173.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -1.500 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 152.000 363.000 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 152.000 318.500 0.000 0.000 6.000 6.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 209.500 314.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -321.500 215.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -7.000 3.000 S -(w) -1.589 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -321.000 181.500 moveto -/Triangular 14.099 7.049 false 448.886 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 321.040 183.499 321.500 206.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 206.500 312.500 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 210.000 359.000 0.000 0.000 12.000 12.000 rect -%@EndRect -gsave -365.000 216.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.500 3.000 S -(d) -0.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -365.500 182.000 moveto -/Triangular 14.099 7.049 false 448.886 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 365.540 183.999 366.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 207.000 357.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.500 288.000 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -291.000 105.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.000 293.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -296.000 110.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -2.500 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 206.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.000 197.000 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -200.000 103.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.000 202.000 0.000 0.000 11.000 6.000 rect -%@EndRect -gsave -205.000 108.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.500 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 300.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.500 363.000 0.000 0.000 12.000 6.000 rect -%@EndRect -gsave -366.000 108.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 108.000 369.000 0.000 0.000 11.000 19.000 rect -%@EndRect -gsave -378.500 113.500 T translate -0.0 rotate -1 1 scale -10.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -9.500 2.000 S -(-) -2.278 2.000 S -(1) 3.209 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 355.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.000 155.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -160.500 108.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.500 3.000 S -(s) -0.089 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -197.000 116.000 moveto -/Triangular 14.099 7.049 false 188.758 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 195.023 115.695 171.000 112.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 152.000 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.375 409.000 0.000 0.000 6.000 6.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 124.500 400.000 0.000 0.000 12.000 27.000 rect -%@EndRect -gsave -413.500 130.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -({) -13.500 4.000 S -(a) -7.740 4.000 S -( ) -2.414 4.000 S -( ) 0.585 4.000 S -( ) 3.585 4.000 S -(}) 6.585 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 413.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -416.500 135.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -3.500 3.000 S -(j) -0.721 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -412.000 112.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 411.999 110.500 412.000 90.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 75.000 406.500 0.000 0.000 12.000 10.000 rect -%@EndRect -gsave -411.500 81.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -5.000 3.000 S -(t) 0.410 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 403.500 0.000 0.000 18.000 18.000 rect -%@EndOval -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 184.000 158.000 0.000 0.000 12.000 10.000 rect -%@EndRect -gsave -163.000 190.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -2.688 3.000 S -(i) 2.721 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 180.500 153.500 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.000 207.000 moveto -/Triangular 14.099 7.049 false 330.278 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.736 206.007 155.000 195.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.000 243.000 54.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 243.000 54.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 243.000 207.000 234.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 244.500 105.500 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -127.500 250.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -22.000 4.000 S -(t) -15.326 4.000 S -(r) -11.992 4.000 S -(e) -7.996 4.000 S -(a) -2.669 4.000 S -(m) 2.656 4.000 S -( ) 11.990 4.000 S -(1) 14.990 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 243.000 216.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 243.000 216.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 234.000 252.000 243.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 245.000 213.000 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -235.000 251.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -21.500 4.000 S -(t) -14.826 4.000 S -(r) -11.492 4.000 S -(e) -7.496 4.000 S -(a) -2.169 4.000 S -(m) 3.156 4.000 S -( ) 12.490 4.000 S -(2) 15.490 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 243.000 261.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 243.000 261.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 234.000 297.000 243.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 245.000 258.000 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -280.000 251.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -21.500 4.000 S -(t) -14.826 4.000 S -(r) -11.492 4.000 S -(e) -7.496 4.000 S -(a) -2.169 4.000 S -(m) 3.156 4.000 S -( ) 12.490 4.000 S -(3) 15.490 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 263.500 182.000 279.500 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.500 182.000 279.500 155.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.500 182.000 279.500 155.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 190.000 273.277 0.000 0.000 12.000 23.333 rect -%@EndRect -gsave -284.944 196.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -11.222 4.000 S -(t) -5.896 4.000 S -(c) -2.562 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hinitdp.eps b/HTKBook/HTKFigs/hinitdp.eps deleted file mode 100644 index 7bee439..0000000 --- a/HTKBook/HTKFigs/hinitdp.eps +++ /dev/null @@ -1,3745 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hinitdp.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:21:53 a.m. -%%BoundingBox: 91.502 428.144 466.014 759.855 -%%QDBoundingBox: 91.502 32.144 466.014 363.855 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=T tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.144 110.002 0.000 0.000 44.000 59.493 rect -%@EndRect -gsave -139.749 59.144 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -14.526 -10.000 S -(n) -9.864 -10.000 S -(p) -2.864 -10.000 S -(u) 4.135 -10.000 S -(t) 11.135 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.497 5.000 S -(M) -19.387 5.000 S -(M) -6.938 5.000 S -( ) 5.509 5.000 S -(D) 9.009 5.000 S -(e) 19.119 5.000 S -(f) 25.333 5.000 S -grestore -restore -save -gsave -139.749 59.144 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.753 19.000 S -(i) -11.752 19.000 S -(h) -5.751 19.000 S -(.) 0.249 19.000 S -(1) 6.250 19.000 S -(\)) 12.251 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 32.644 96.502 0.000 0.000 54.000 90.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.144 110.002 0.000 0.000 44.000 59.493 rect -%@EndRect -gsave -139.749 230.144 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -19.195 -10.000 S -(u) -9.085 -10.000 S -(t) -2.085 -10.000 S -(p) 1.804 -10.000 S -(u) 8.804 -10.000 S -(t) 15.804 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.497 5.000 S -(M) -19.387 5.000 S -(M) -6.938 5.000 S -( ) 5.509 5.000 S -(D) 9.009 5.000 S -(e) 19.119 5.000 S -(f) 25.333 5.000 S -grestore -restore -save -gsave -139.749 230.144 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.753 19.000 S -(i) -11.752 19.000 S -(h) -5.751 19.000 S -(.) 0.249 19.000 S -(2) 6.250 19.000 S -(\)) 12.251 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 203.644 96.502 0.000 0.000 54.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 113.644 96.502 0.000 0.000 63.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -141.502 113.644 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.502 112.255 141.502 86.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -141.502 203.644 moveto -/Triangular 14.687 10.574 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.502 202.255 141.502 176.644 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.644 91.502 0.000 0.000 20.000 107.000 rect -%@EndRect -gsave -145.002 146.644 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.495 5.000 S -(I) -5.496 5.000 S -(n) 0.498 5.000 S -(i) 9.498 5.000 S -(t) 14.499 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 37.644 213.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.644 222.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 56.644 224.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 65.644 233.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 75.644 235.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 84.644 244.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 94.644 246.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.644 255.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 113.644 257.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 122.644 266.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.644 268.502 0.000 0.000 36.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 141.644 277.502 0.000 0.000 19.000 91.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 17.000] CP -[1.000 17.000] CP -[1.000 16.000 ] CP -[1.000 15.000 ] CP -[1.000 13.000 ] CP -[1.000 12.000 ] CP -[1.000 11.000 ] CP -[1.000 10.000 ] CP -[1.000 9.000 ] CP -[1.000 8.000 ] CP -[1.000 7.000 ] CP -[2.000 7.000 ] CP -[2.000 6.000 ] CP -[2.000 5.000 ] CP -[3.000 4.000 ] CP -[4.000 4.000 ] CP -[4.000 3.000 ] CP -[4.000 2.000 ] CP -[5.000 2.000 ] CP -[5.000 1.000 ] CP -[5.000 0.000 ] CP -[5.000 1.000 ] CP -[6.000 1.000 ] CP -[6.000 2.000 ] CP -[6.000 4.000 ] CP -[7.000 5.000 ] CP -[7.000 6.000 ] CP -[7.000 7.000 ] CP -[8.000 8.000 ] CP -[9.000 9.000 ] CP -[9.000 10.000 ] CP -[10.000 10.000 ] CP -[10.000 11.000 ] CP -[11.000 12.000 ] CP -[12.000 13.000 ] CP -[13.000 14.000 ] CP -[14.000 15.000 ] CP -[14.000 16.000 ] CP -[14.000 17.000 ] CP -[15.000 18.000 ] CP -[16.000 18.000 ] CP -[16.000 19.000 ] CP -[16.000 18.000 ] CP -[16.000 17.000 ] CP -[16.000 16.000 ] CP -[16.000 15.000 ] CP -[16.000 14.000 ] CP -[16.000 13.000 ] CP -[16.000 12.000 ] CP -[16.000 11.000 ] CP -[16.000 10.000 ] CP -[16.000 9.000 ] CP -[17.000 8.000 ] CP -[17.000 7.000 ] CP -[17.000 6.000 ] CP -[17.000 5.000 ] CP -[18.000 4.000 ] CP -[18.000 3.000 ] CP -[19.000 3.000 ] CP -[19.000 4.000 ] CP -[20.000 5.000 ] CP -[21.000 6.000 ] CP -[22.000 9.000 ] CP -[23.000 12.000 ] CP -[23.000 13.000 ] CP -[23.000 14.000 ] CP -[24.000 14.000 ] CP -[24.000 13.000 ] CP -[25.000 13.000 ] CP -[25.000 12.000 ] CP -[26.000 11.000 ] CP -[27.000 11.000 ] CP -[28.000 11.000 ] CP -[28.000 10.000 ] CP -[29.000 10.000 ] CP -[30.000 9.000 ] CP -[31.000 8.000 ] CP -[31.000 7.000 ] CP -[31.000 6.000 ] CP -[31.000 5.000 ] CP -[32.000 5.000 ] CP -[33.000 6.000 ] CP -[34.000 6.000 ] CP -[35.000 7.000 ] CP -[36.000 8.000 ] CP -[36.000 9.000 ] CP -[37.000 10.000 ] CP -[37.000 11.000 ] CP -[38.000 11.000 ] CP -[38.000 12.000 ] CP -[39.000 13.000 ] CP -[40.000 13.000 ] CP -[40.000 14.000 ] CP -[41.000 14.000 ] CP -[41.000 13.000 ] CP -[42.000 12.000 ] CP -[42.000 11.000 ] CP -[42.000 10.000 ] CP -[43.000 9.000 ] CP -[43.000 8.000 ] CP -[43.000 7.000 ] CP -[44.000 7.000 ] CP -[44.000 6.000 ] CP -[44.000 5.000 ] CP -[45.000 5.000 ] CP -[46.000 6.000 ] CP -[47.000 6.000 ] CP -[49.000 9.000 ] CP -[50.000 10.000 ] CP -[52.000 12.000 ] CP -[52.000 13.000 ] CP -[53.000 13.000 ] CP -[52.000 14.000 ] CP -[51.000 15.000 ] CP -[50.000 15.000 ] CP -[52.000 14.000 ] CP -[53.000 11.000 ] CP -[53.000 9.000 ] CP -[53.000 8.000 ] CP -[53.000 7.000 ] CP -[53.000 6.000 ] CP -[54.000 6.000 ] CP -[55.000 6.000 ] CP -[56.000 7.000 ] CP -[57.000 7.000 ] CP -[57.000 8.000 ] CP -[58.000 10.000 ] CP -[59.000 10.000 ] CP -[60.000 11.000 ] CP -[60.000 12.000 ] CP -[61.000 12.000 ] CP -[61.000 11.000 ] CP -[61.000 10.000 ] CP -[61.000 9.000 ] CP -[61.000 8.000 ] CP -[62.000 7.000 ] CP -[63.000 7.000 ] CP -[64.000 8.000 ] CP -[64.000 9.000 ] CP -[65.000 9.000 ] CP -[65.000 10.000 ] CP -[66.000 10.000 ] CP -[67.000 10.000 ] CP -[68.000 11.000 ] CP -[69.000 11.000 ] CP -[70.000 11.000 ] CP -[71.000 11.000 ] CP -[73.000 10.000 ] CP -[74.000 10.000 ] CP -[75.000 10.000 ] CP -[76.000 10.000 ] CP -[77.000 10.000 ] CP -[78.000 10.000 ] CP -[79.000 10.000 ] CP -[80.000 10.000 ] CP -[81.000 11.000 ] CP -[81.000 10.000 ] CP -[82.000 10.000 ] CP -[82.000 9.000 ] CP -[83.000 8.000 ] CP -[83.000 7.000 ] CP -[84.000 8.000 ] CP -[85.000 8.000 ] CP -[86.000 8.000 ] CP -[87.000 8.000 ] CP -[88.000 8.000 ] CP -[89.000 7.000 ] CP -[90.000 7.000 ] CP -[91.000 7.000 ] CP -[91.000 8.000 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -186.502 133.644 moveto -/Triangular 14.687 10.574 false 321.865 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 187.594 132.786 228.502 100.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 176.644 216.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 186.644 225.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -253.891 214.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(1) -10.497 -19.000 S -(0) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -(e) 7.002 -19.000 S -(h) 11.440 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 194.644 234.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 204.644 243.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -271.891 232.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(2) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(s) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 212.644 252.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 222.644 261.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -289.891 250.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(5) -5.497 -19.000 S -(6) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(i) 9.502 -19.000 S -(h) 12.280 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 230.644 270.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 240.644 279.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -307.891 268.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(2) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(b) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 248.644 288.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 258.644 297.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -325.891 286.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(1) -5.497 -19.000 S -(6) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(a) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(t) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 266.644 306.502 0.000 0.000 72.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 276.644 315.502 0.000 0.000 56.000 56.778 rect -%@EndRect -gsave -343.891 304.644 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -19.000 S -(0) -22.997 -19.000 S -(0) -17.997 -19.000 S -( ) -12.997 -19.000 S -(0) -10.497 -19.000 S -(2) -5.497 -19.000 S -(3) -0.497 -19.000 S -( ) 4.502 -19.000 S -( ) 7.002 -19.000 S -(b) 9.502 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 -8.000 S -(2) -22.997 -8.000 S -(4) -17.997 -8.000 S -( ) -12.997 -8.000 S -(0) -10.497 -8.000 S -(9) -5.497 -8.000 S -(1) -0.497 -8.000 S -( ) 4.502 -8.000 S -( ) 7.002 -8.000 S -( ) 9.502 -8.000 S -(i) 12.002 -8.000 S -(h) 14.780 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(0) -27.997 3.000 S -(9) -22.997 3.000 S -(2) -17.997 3.000 S -( ) -12.997 3.000 S -(1) -10.497 3.000 S -(3) -5.497 3.000 S -(4) -0.497 3.000 S -( ) 4.502 3.000 S -( ) 7.002 3.000 S -( ) 9.502 3.000 S -(t) 12.002 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -27.997 14.000 S -(3) -22.997 14.000 S -(5) -17.997 14.000 S -( ) -12.997 14.000 S -(1) -10.497 14.000 S -(8) -5.497 14.000 S -(2) -0.497 14.000 S -( ) 4.502 14.000 S -( ) 7.002 14.000 S -( ) 9.502 14.000 S -(i) 12.002 14.000 S -(h) 14.780 14.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.144 340.002 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -378.777 46.144 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.497 4.000 S -(a) -32.496 4.000 S -(t) -26.495 4.000 S -(a) -20.494 4.000 S -(/) -14.493 4.000 S -(t) -8.492 4.000 S -(r) -2.491 4.000 S -(1) 3.509 4.000 S -(.) 9.510 4.000 S -(m) 15.511 4.000 S -(f) 21.512 4.000 S -(c) 27.513 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 58.701 349.694 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -388.469 65.701 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -37.805 4.000 S -(a) -31.804 4.000 S -(t) -25.803 4.000 S -(a) -19.802 4.000 S -(/) -13.801 4.000 S -(t) -7.800 4.000 S -(r) -1.799 4.000 S -(2) 4.201 4.000 S -(.) 10.202 4.000 S -(m) 16.203 4.000 S -(f) 22.204 4.000 S -(c) 28.205 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.259 359.386 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -398.162 85.259 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.113 4.000 S -(a) -32.112 4.000 S -(t) -26.111 4.000 S -(a) -20.110 4.000 S -(/) -14.109 4.000 S -(t) -8.108 4.000 S -(r) -2.107 4.000 S -(3) 3.893 4.000 S -(.) 9.894 4.000 S -(m) 15.895 4.000 S -(f) 21.896 4.000 S -(c) 27.897 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.817 369.079 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -407.854 104.817 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.420 4.000 S -(a) -32.419 4.000 S -(t) -26.418 4.000 S -(a) -20.417 4.000 S -(/) -14.416 4.000 S -(t) -8.415 4.000 S -(r) -2.414 4.000 S -(4) 3.586 4.000 S -(.) 9.587 4.000 S -(m) 15.587 4.000 S -(f) 21.588 4.000 S -(c) 27.589 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 117.375 378.771 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -417.546 124.375 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.728 4.000 S -(a) -32.727 4.000 S -(t) -26.726 4.000 S -(a) -20.725 4.000 S -(/) -14.724 4.000 S -(t) -8.723 4.000 S -(r) -2.722 4.000 S -(5) 3.278 4.000 S -(.) 9.279 4.000 S -(m) 15.280 4.000 S -(f) 21.281 4.000 S -(c) 27.282 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.932 388.463 0.000 0.000 14.000 77.550 rect -%@EndRect -gsave -427.238 143.932 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -38.036 4.000 S -(a) -32.035 4.000 S -(t) -26.034 4.000 S -(a) -20.033 4.000 S -(/) -14.032 4.000 S -(t) -8.031 4.000 S -(r) -2.030 4.000 S -(6) 3.970 4.000 S -(.) 9.971 4.000 S -(m) 15.972 4.000 S -(f) 21.973 4.000 S -(c) 27.974 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 267.644 153.502 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -203.355 274.644 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -48.997 4.000 S -(a) -42.996 4.000 S -(b) -36.995 4.000 S -(s) -30.994 4.000 S -(/) -24.993 4.000 S -(t) -18.992 4.000 S -(r) -12.991 4.000 S -(1) -6.990 4.000 S -(.) -0.989 4.000 S -(l) 5.011 4.000 S -(a) 11.012 4.000 S -(b) 17.013 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.086 165.963 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -215.816 291.086 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.536 4.000 S -(a) -43.535 4.000 S -(b) -37.534 4.000 S -(s) -31.533 4.000 S -(/) -25.532 4.000 S -(t) -19.531 4.000 S -(r) -13.530 4.000 S -(2) -7.529 4.000 S -(.) -1.528 4.000 S -(l) 4.472 4.000 S -(a) 10.473 4.000 S -(b) 16.474 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 300.528 178.424 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -228.277 307.528 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.075 4.000 S -(a) -43.074 4.000 S -(b) -37.073 4.000 S -(s) -31.072 4.000 S -(/) -25.071 4.000 S -(t) -19.070 4.000 S -(r) -13.069 4.000 S -(3) -7.068 4.000 S -(.) -1.067 4.000 S -(l) 4.933 4.000 S -(a) 10.934 4.000 S -(b) 16.935 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.971 190.886 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -240.738 323.971 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.613 4.000 S -(a) -43.612 4.000 S -(b) -37.611 4.000 S -(s) -31.611 4.000 S -(/) -25.610 4.000 S -(t) -19.609 4.000 S -(r) -13.608 4.000 S -(4) -7.607 4.000 S -(.) -1.606 4.000 S -(l) 4.394 4.000 S -(a) 10.395 4.000 S -(b) 16.396 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 333.413 203.347 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -253.200 340.413 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.152 4.000 S -(a) -43.151 4.000 S -(b) -37.150 4.000 S -(s) -31.149 4.000 S -(/) -25.148 4.000 S -(t) -19.147 4.000 S -(r) -13.146 4.000 S -(5) -7.145 4.000 S -(.) -1.144 4.000 S -(l) 4.856 4.000 S -(a) 10.856 4.000 S -(b) 16.857 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 349.855 215.808 0.000 0.000 14.000 99.705 rect -%@EndRect -gsave -265.661 356.855 T translate -0.0 rotate -1 1 scale -10.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -49.691 4.000 S -(a) -43.690 4.000 S -(b) -37.689 4.000 S -(s) -31.688 4.000 S -(/) -25.687 4.000 S -(t) -19.686 4.000 S -(r) -13.685 4.000 S -(6) -7.684 4.000 S -(.) -1.683 4.000 S -(l) 4.317 4.000 S -(a) 10.318 4.000 S -(b) 16.319 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.502 293.644 369.502 293.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.502 203.644 396.502 293.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.502 203.644 396.502 203.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -333.502 167.644 moveto -/Triangular 14.687 10.574 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.502 169.033 333.502 203.644 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 140.644 285.502 0.000 0.000 23.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 140.644 330.502 0.000 0.000 23.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.502 167.644 moveto -/Triangular 14.687 10.574 false 405.029 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.484 168.626 333.502 203.644 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hmm1.eps b/HTKBook/HTKFigs/hmm1.eps deleted file mode 100644 index 6828f62..0000000 --- a/HTKBook/HTKFigs/hmm1.eps +++ /dev/null @@ -1,2535 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hmm1.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:3/19/95 2:39:24 p.m. -%%BoundingBox: 19.000 599.000 299.000 791.000 -%%QDBoundingBox: 19.000 1.000 299.000 193.000 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 77.000 19.500 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 26.000 77.199 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 74.600 73.500 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -140.100 90.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 138.100 90.800 106.800 90.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -77.199 58.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 77.385 56.408 78.125 48.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 26.000 143.800 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 74.600 140.099 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -206.700 90.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.700 90.800 173.400 90.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -143.800 58.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.986 56.408 144.725 48.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 26.000 210.400 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 74.600 206.699 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -273.300 90.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.300 90.800 240.000 90.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -210.400 58.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 210.586 56.408 211.325 48.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.500 91.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.500 91.000 46.500 91.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 48.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -53.500 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 56.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -63.500 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -7.000 4.000 S -(2) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 111.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -116.000 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 120.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -127.000 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(3) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 179.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -184.000 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 188.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -195.000 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 62.500 243.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -248.500 71.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.500 253.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -260.500 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -7.000 4.000 S -(5) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 1.500 78.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -83.000 10.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.500 87.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -94.000 16.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(2) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 1.500 145.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -150.000 10.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 11.000 154.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -161.000 17.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(3) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 1.500 212.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -217.000 10.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 11.000 221.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -228.000 17.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -6.000 4.000 S -(4) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 28.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -33.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 85.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -90.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 153.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -158.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 218.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -223.500 91.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -5.000 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 77.000 271.500 0.000 0.000 27.000 27.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 82.000 280.500 0.000 0.000 20.000 9.000 rect -%@EndRect -gsave -285.000 92.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -4.000 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 96.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 96.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -164.500 124.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.500 124.000 147.500 124.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 163.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 163.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -231.500 124.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 229.500 124.000 214.500 124.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 120.500 130.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -135.000 129.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 139.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -146.000 135.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 120.500 196.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -201.000 129.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 130.000 205.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -212.000 136.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(5) 0.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.500 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.499 164.000 88.500 107.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.500 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.499 164.000 155.500 107.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.500 166.000 moveto -/Triangular 14.099 7.049 false 269.048 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.466 164.000 222.500 107.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.000 75.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -80.500 178.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 179.000 84.000 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -87.000 186.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -2.500 3.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.000 90.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -94.000 180.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 171.000 103.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -107.000 180.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.500 144.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -149.500 176.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 153.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -157.000 184.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 159.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -163.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 173.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -177.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.500 209.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -214.500 176.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.000 218.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -222.000 184.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 224.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -228.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 237.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -241.000 178.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 30.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 86.000 30.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -98.500 124.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 96.500 124.000 81.500 124.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 119.500 60.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -65.000 128.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 68.000 0.000 0.000 14.000 12.000 rect -%@EndRect -gsave -74.000 136.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -5.500 3.000 S -(3) 0.500 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hmmirest_par.eps b/HTKBook/HTKFigs/hmmirest_par.eps deleted file mode 100644 index a0a6e9f..0000000 --- a/HTKBook/HTKFigs/hmmirest_par.eps +++ /dev/null @@ -1,393 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: hmmirest_par.fig -%%Creator: fig2dev Version 3.2 Patchlevel 4 -%%CreationDate: Tue Feb 24 15:31:55 2009 -%%For: mjfg@mjfghp (Mark Gales) -%%BoundingBox: 0 0 553 361 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 361 moveto 0 0 lineto 553 0 lineto 553 361 lineto closepath clip newpath --29.5 380.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -10 setmiterlimit -0 slj 0 slc - 0.06000 0.06000 sc -% -% Fig objects follow -% -% -% here starts figure with depth 30 -% Polyline -30.000 slw -n 5670 3285 m 5535 3285 5535 3915 135 arcto 4 {pop} repeat - 5535 4050 7140 4050 135 arcto 4 {pop} repeat - 7275 4050 7275 3420 135 arcto 4 {pop} repeat - 7275 3285 5670 3285 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 3195 3270 m 3060 3270 3060 3900 135 arcto 4 {pop} repeat - 3060 4035 4665 4035 135 arcto 4 {pop} repeat - 4800 4035 4800 3405 135 arcto 4 {pop} repeat - 4800 3270 3195 3270 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 8070 3285 m 7935 3285 7935 3915 135 arcto 4 {pop} repeat - 7935 4050 9540 4050 135 arcto 4 {pop} repeat - 9675 4050 9675 3420 135 arcto 4 {pop} repeat - 9675 3285 8070 3285 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5625 3750 m -gs 1 -1 sc (HDR2.acc.n) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3150 3735 m -gs 1 -1 sc (HDR1.acc.n) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8025 3750 m -gs 1 -1 sc (HDR3.acc.n) col-1 sh gr -% here ends figure; -% -% here starts figure with depth 20 -% Polyline -30.000 slw -n 2745 3735 m 2610 3735 2610 4365 135 arcto 4 {pop} repeat - 2610 4500 4215 4500 135 arcto 4 {pop} repeat - 4350 4500 4350 3870 135 arcto 4 {pop} repeat - 4350 3735 2745 3735 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 5220 3735 m 5085 3735 5085 4365 135 arcto 4 {pop} repeat - 5085 4500 6690 4500 135 arcto 4 {pop} repeat - 6825 4500 6825 3870 135 arcto 4 {pop} repeat - 6825 3735 5220 3735 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7620 3735 m 7485 3735 7485 4365 135 arcto 4 {pop} repeat - 7485 4500 9090 4500 135 arcto 4 {pop} repeat - 9225 4500 9225 3870 135 arcto 4 {pop} repeat - 9225 3735 7620 3735 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -/Times-Roman ff 300.00 scf sf -2700 4275 m -gs 1 -1 sc (HDR1.acc.2) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5175 4275 m -gs 1 -1 sc (HDR2.acc.2) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7575 4275 m -gs 1 -1 sc (HDR3.acc.2) col-1 sh gr -% here ends figure; -% -% here starts figure with depth 10 -% Polyline -30.000 slw -n 2445 4260 m 2310 4260 2310 4890 135 arcto 4 {pop} repeat - 2310 5025 3915 5025 135 arcto 4 {pop} repeat - 4050 5025 4050 4395 135 arcto 4 {pop} repeat - 4050 4260 2445 4260 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 4920 4260 m 4785 4260 4785 4890 135 arcto 4 {pop} repeat - 4785 5025 6390 5025 135 arcto 4 {pop} repeat - 6525 5025 6525 4395 135 arcto 4 {pop} repeat - 6525 4260 4920 4260 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% Polyline -n 7320 4260 m 7185 4260 7185 4890 135 arcto 4 {pop} repeat - 7185 5025 8790 5025 135 arcto 4 {pop} repeat - 8925 5025 8925 4395 135 arcto 4 {pop} repeat - 8925 4260 7320 4260 135 arcto 4 {pop} repeat - cp gs col7 1.00 shd ef gr gs col-1 s gr -% here ends figure; -% -% here starts figure with depth 0 -% Polyline -30.000 slw -n 2475 1875 m 4575 1875 l 4575 2550 l 2475 2550 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -3600 2325 m -gs 1 -1 sc (EST \(1\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2550 2325 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 4950 1875 m 7050 1875 l 7050 2550 l 4950 2550 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -6075 2325 m -gs 1 -1 sc (EST \(2\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5025 2325 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 5370 360 m 5235 360 5235 1140 135 arcto 4 {pop} repeat - 5235 1275 6690 1275 135 arcto 4 {pop} repeat - 6825 1275 6825 495 135 arcto 4 {pop} repeat - 6825 360 5370 360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -5550 750 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5850 1050 m -gs 1 -1 sc (Files) col-1 sh gr -% Polyline -gs clippath -5940 1890 m 6060 1890 l 6060 1603 l 6000 1843 l 5940 1603 l cp -eoclip -n 6000 1275 m - 6000 1875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5940 1603 m 6000 1843 l 6060 1603 l 5940 1603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 7425 1875 m 9525 1875 l 9525 2550 l 7425 2550 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -8550 2325 m -gs 1 -1 sc (EST \(3\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7500 2325 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 7845 360 m 7710 360 7710 1140 135 arcto 4 {pop} repeat - 7710 1275 9165 1275 135 arcto 4 {pop} repeat - 9300 1275 9300 495 135 arcto 4 {pop} repeat - 9300 360 7845 360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -8025 750 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -8325 1050 m -gs 1 -1 sc (Files) col-1 sh gr -% Polyline -gs clippath -8415 1890 m 8535 1890 l 8535 1603 l 8475 1843 l 8415 1603 l cp -eoclip -n 8475 1275 m - 8475 1875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8415 1603 m 8475 1843 l 8535 1603 l 8415 1603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -n 2895 360 m 2760 360 2760 1140 135 arcto 4 {pop} repeat - 2760 1275 4215 1275 135 arcto 4 {pop} repeat - 4350 1275 4350 495 135 arcto 4 {pop} repeat - 4350 360 2895 360 135 arcto 4 {pop} repeat - cp gs col-1 s gr -/Times-Roman ff 300.00 scf sf -3075 750 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3375 1050 m -gs 1 -1 sc (Files) col-1 sh gr -% Polyline -n 5025 5625 m 7125 5625 l 7125 6300 l 5025 6300 l - cp gs col-1 s gr -/Times-Roman ff 240.00 scf sf -6150 6075 m -gs 1 -1 sc (EST \(0\)) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5100 6075 m -gs 1 -1 sc (HMMIR) col-1 sh gr -% Polyline -n 660 1935 m 525 1935 525 2340 135 arcto 4 {pop} repeat - 525 2475 1665 2475 135 arcto 4 {pop} repeat - 1800 2475 1800 2070 135 arcto 4 {pop} repeat - 1800 1935 660 1935 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -2415 2310 m 2415 2190 l 2128 2190 l 2368 2250 l 2128 2310 l cp -eoclip -n 1800 2250 m - 2400 2250 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2128 2310 m 2368 2250 l 2128 2190 l 2128 2310 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3465 1890 m 3585 1890 l 3585 1603 l 3525 1843 l 3465 1603 l cp -eoclip -n 3525 1275 m - 3525 1875 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 1603 m 3525 1843 l 3585 1603 l 3465 1603 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1185 2460 m 1065 2460 l 1065 2747 l 1125 2507 l 1185 2747 l cp -eoclip -n 5025 6000 m 1125 6000 l - 1125 2475 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1185 2747 m 1125 2507 l 1065 2747 l 1185 2747 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3465 3165 m 3585 3165 l 3585 2878 l 3525 3118 l 3465 2878 l cp -eoclip -n 3525 2550 m - 3525 3150 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3465 2878 m 3525 3118 l 3585 2878 l 3465 2878 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -5940 3165 m 6060 3165 l 6060 2878 l 6000 3118 l 5940 2878 l cp -eoclip -n 6000 2550 m - 6000 3150 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5940 2878 m 6000 3118 l 6060 2878 l 5940 2878 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -8415 3165 m 8535 3165 l 8535 2878 l 8475 3118 l 8415 2878 l cp -eoclip -n 8475 2550 m - 8475 3150 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8415 2878 m 8475 3118 l 8535 2878 l 8415 2878 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -7131 5699 m 7207 5791 l 7429 5609 l 7206 5715 l 7353 5516 l cp -eoclip -n 8006 5061 m - 7181 5736 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7353 5516 m 7206 5715 l 7429 5609 l 7353 5516 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4951 5812 m 5027 5720 l 4805 5537 l 4953 5736 l 4729 5630 l cp -eoclip -n 4153 5082 m - 4978 5757 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4729 5630 m 4953 5736 l 4805 5537 l 4729 5630 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -6015 5640 m 6135 5640 l 6135 5353 l 6075 5593 l 6015 5353 l cp -eoclip -n 6075 5025 m - 6075 5625 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6015 5353 m 6075 5593 l 6135 5353 l 6015 5353 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 300.00 scf sf -720 2310 m -gs 1 -1 sc (HMMs) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2400 4725 m -gs 1 -1 sc (HDR1.acc.1) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4875 4725 m -gs 1 -1 sc (HDR2.acc.1) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7275 4725 m -gs 1 -1 sc (HDR3.acc.1) col-1 sh gr -% here ends figure; -$F2psEnd -rs -showpage diff --git a/HTKBook/HTKFigs/hmmirest_par.fig b/HTKBook/HTKFigs/hmmirest_par.fig deleted file mode 100644 index 7b75529..0000000 --- a/HTKBook/HTKFigs/hmmirest_par.fig +++ /dev/null @@ -1,136 +0,0 @@ -#FIG 3.2 -Portrait -Center -Inches -A4 -100.00 -Single --2 -1200 2 -6 2460 1860 4590 2565 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2475 1875 4575 1875 4575 2550 2475 2550 2475 1875 -4 0 -1 0 0 0 16 0.0000 4 210 765 3600 2325 EST (1)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 2550 2325 HMMIR\001 --6 -6 4935 1860 7065 2565 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 4950 1875 7050 1875 7050 2550 4950 2550 4950 1875 -4 0 -1 0 0 0 16 0.0000 4 210 765 6075 2325 EST (2)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 5025 2325 HMMIR\001 --6 -6 5175 300 6900 1950 -6 5175 300 6900 1350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 6825 1275 5235 1275 5235 360 6825 360 6825 1275 -4 0 -1 0 0 0 20 0.0000 4 195 585 5550 750 Data\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 5850 1050 Files\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6000 1275 6000 1875 --6 -6 7410 1860 9540 2565 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7425 1875 9525 1875 9525 2550 7425 2550 7425 1875 -4 0 -1 0 0 0 16 0.0000 4 210 765 8550 2325 EST (3)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 7500 2325 HMMIR\001 --6 -6 7650 300 9375 1950 -6 7650 300 9375 1350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 9300 1275 7710 1275 7710 360 9300 360 9300 1275 -4 0 -1 0 0 0 20 0.0000 4 195 585 8025 750 Data\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 8325 1050 Files\001 --6 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8475 1275 8475 1875 --6 -6 2700 300 4425 1350 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 4350 1275 2760 1275 2760 360 4350 360 4350 1275 -4 0 -1 0 0 0 20 0.0000 4 195 585 3075 750 Data\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 3375 1050 Files\001 --6 -6 2550 3675 4425 4575 -2 4 0 3 -1 7 20 0 20 0.000 0 0 9 0 0 5 - 4350 4500 2610 4500 2610 3735 4350 3735 4350 4500 --6 -6 5025 3675 6900 4575 -2 4 0 3 -1 7 20 0 20 0.000 0 0 9 0 0 5 - 6825 4500 5085 4500 5085 3735 6825 3735 6825 4500 --6 -6 5520 3270 7290 4065 -2 4 0 3 -1 7 30 0 20 0.000 0 0 9 0 0 5 - 7275 4050 5535 4050 5535 3285 7275 3285 7275 4050 -4 0 -1 29 0 0 20 0.0000 4 195 1500 5625 3750 HDR2.acc.n\001 --6 -6 7425 3675 9300 4575 -2 4 0 3 -1 7 20 0 20 0.000 0 0 9 0 0 5 - 9225 4500 7485 4500 7485 3735 9225 3735 9225 4500 --6 -6 3045 3255 4815 4050 -2 4 0 3 -1 7 30 0 20 0.000 0 0 9 0 0 5 - 4800 4035 3060 4035 3060 3270 4800 3270 4800 4035 -4 0 -1 29 0 0 20 0.0000 4 195 1500 3150 3735 HDR1.acc.n\001 --6 -6 2700 4050 4200 4275 -4 0 -1 19 0 0 20 0.0000 4 195 1500 2700 4275 HDR1.acc.2\001 --6 -6 5175 4080 6675 4275 -4 0 -1 19 0 0 20 0.0000 4 195 1500 5175 4275 HDR2.acc.2\001 --6 -6 7920 3270 9690 4065 -2 4 0 3 -1 7 30 0 20 0.000 0 0 9 0 0 5 - 9675 4050 7935 4050 7935 3285 9675 3285 9675 4050 -4 0 -1 29 0 0 20 0.0000 4 195 1500 8025 3750 HDR3.acc.n\001 --6 -6 7575 4080 9075 4275 -4 0 -1 19 0 0 20 0.0000 4 195 1500 7575 4275 HDR3.acc.2\001 --6 -6 5010 5610 7140 6315 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5025 5625 7125 5625 7125 6300 5025 6300 5025 5625 -4 0 -1 0 0 0 16 0.0000 4 210 765 6150 6075 EST (0)\001 -4 0 -1 0 0 0 20 0.0000 4 195 1065 5100 6075 HMMIR\001 --6 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 1800 2475 525 2475 525 1935 1800 1935 1800 2475 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 1800 2250 2400 2250 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 1275 3525 1875 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 5025 6000 1125 6000 1125 2475 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3525 2550 3525 3150 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6000 2550 6000 3150 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8475 2550 8475 3150 -2 4 0 3 -1 7 10 0 20 0.000 0 0 9 0 0 5 - 4050 5025 2310 5025 2310 4260 4050 4260 4050 5025 -2 4 0 3 -1 7 10 0 20 0.000 0 0 9 0 0 5 - 6525 5025 4785 5025 4785 4260 6525 4260 6525 5025 -2 4 0 3 -1 7 10 0 20 0.000 0 0 9 0 0 5 - 8925 5025 7185 5025 7185 4260 8925 4260 8925 5025 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 8006 5061 7181 5736 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4153 5082 4978 5757 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 6075 5025 6075 5625 -4 0 -1 0 0 0 20 0.0000 4 195 885 720 2310 HMMs\001 -4 0 -1 0 0 0 20 0.0000 4 195 1500 2400 4725 HDR1.acc.1\001 -4 0 -1 0 0 0 20 0.0000 4 195 1500 4875 4725 HDR2.acc.1\001 -4 0 -1 0 0 0 20 0.0000 4 195 1500 7275 4725 HDR3.acc.1\001 diff --git a/HTKBook/HTKFigs/hsetdef.eps b/HTKBook/HTKFigs/hsetdef.eps deleted file mode 100644 index d1b41ca..0000000 --- a/HTKBook/HTKFigs/hsetdef.eps +++ /dev/null @@ -1,1959 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hsetdef.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:4/6/95 8:59:06 p.m. -%%BoundingBox: 26.500 470.500 435.115 768.000 -%%QDBoundingBox: 26.500 24.000 435.115 321.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 24.000 45.000 0.000 0.000 17.000 288.046 rect -%@EndRect -gsave -189.023 32.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -143.500 4.000 S -(T) -136.298 4.000 S -(o) -129.097 4.000 S -(o) -121.896 4.000 S -(l) -114.695 4.000 S -( ) -107.494 4.000 S -( ) -100.292 4.000 S -(-) -93.091 4.000 S -(H) -85.890 4.000 S -( ) -78.689 4.000 S -(m) -71.488 4.000 S -(f) -64.287 4.000 S -(1) -57.085 4.000 S -( ) -49.884 4.000 S -( ) -42.683 4.000 S -(-) -35.482 4.000 S -(H) -28.281 4.000 S -( ) -21.080 4.000 S -(m) -13.878 4.000 S -(f) -6.677 4.000 S -(2) 0.523 4.000 S -( ) 7.724 4.000 S -( ) 14.925 4.000 S -(.) 22.126 4.000 S -(.) 29.328 4.000 S -(.) 36.529 4.000 S -(.) 43.730 4.000 S -( ) 50.931 4.000 S -( ) 58.132 4.000 S -(h) 65.333 4.000 S -(l) 72.535 4.000 S -(i) 79.736 4.000 S -(s) 86.937 4.000 S -(t) 94.138 4.000 S -( ) 101.339 4.000 S -( ) 108.541 4.000 S -(.) 115.742 4.000 S -(.) 122.943 4.000 S -(.) 130.144 4.000 S -(.) 137.345 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.000 45.000 0.000 0.000 81.000 49.207 rect -%@EndRect -gsave -69.603 145.500 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 -28.000 S -(s) -17.298 -28.000 S -( ) -10.097 -28.000 S -(.) -2.896 -28.000 S -(.) 4.304 -28.000 S -(.) 11.505 -28.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 -12.000 S -(s) -17.298 -12.000 S -( ) -10.097 -12.000 S -(.) -2.896 -12.000 S -(.) 4.304 -12.000 S -(.) 11.505 -12.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 4.000 S -(s) -17.298 4.000 S -( ) -10.097 4.000 S -(.) -2.896 4.000 S -(.) 4.304 4.000 S -(.) 11.505 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -24.500 20.000 S -(t) -17.298 20.000 S -( ) -10.097 20.000 S -(.) -2.896 20.000 S -(.) 4.304 20.000 S -(.) 11.505 20.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -24.500 36.000 S -(e) -17.298 36.000 S -(t) -10.097 36.000 S -(c) -2.896 36.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.500 135.500 0.000 0.000 97.000 79.212 rect -%@EndRect -gsave -175.106 154.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -39.000 -35.000 S -(h) -31.798 -35.000 S -( ) -24.597 -35.000 S -(") -17.396 -35.000 S -(h) -10.195 -35.000 S -(a) -2.994 -35.000 S -(") 4.207 -35.000 S -( ) 11.408 -35.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -39.000 -19.000 S -( ) -31.798 -19.000 S -( ) -24.597 -19.000 S -(.) -17.396 -19.000 S -(.) -10.195 -19.000 S -(.) -2.994 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -39.000 -3.000 S -(h) -31.798 -3.000 S -( ) -24.597 -3.000 S -(") -17.396 -3.000 S -(h) -10.195 -3.000 S -(b) -2.994 -3.000 S -(") 4.207 -3.000 S -( ) 11.408 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -39.000 13.000 S -( ) -31.798 13.000 S -( ) -24.597 13.000 S -(.) -17.396 13.000 S -(.) -10.195 13.000 S -(.) -2.994 13.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(~) -39.000 29.000 S -(h) -31.798 29.000 S -( ) -24.597 29.000 S -(") -17.396 29.000 S -(h) -10.195 29.000 S -(c) -2.994 29.000 S -(") 4.207 29.000 S -( ) 11.408 29.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -39.000 45.000 S -( ) -31.798 45.000 S -( ) -24.597 45.000 S -(.) -17.396 45.000 S -(.) -10.195 45.000 S -(.) -2.994 45.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 105.500 252.500 0.000 0.000 81.000 14.402 rect -%@EndRect -gsave -259.701 146.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 -27.000 S -(a) 0.201 -27.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 -11.000 S -(b) 0.201 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 5.000 S -(c) 0.201 5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 21.000 S -(d) 0.201 21.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 37.000 S -(e) 0.201 37.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 36.000 0.000 0.000 105.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 126.000 0.000 0.000 105.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 243.000 0.000 0.000 105.000 36.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 258.500 106.500 0.000 0.000 31.000 100.816 rect -%@EndRect -gsave -156.908 274.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -28.562 -3.000 S -(o) -16.114 -3.000 S -(d) -9.114 -3.000 S -(e) -2.114 -3.000 S -(l) 4.099 -3.000 S -( ) 7.989 -3.000 S -(S) 11.489 -3.000 S -(e) 19.275 -3.000 S -(t) 25.489 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -40.412 12.000 S -(a) -33.412 12.000 S -(,) -27.198 12.000 S -(h) -23.698 12.000 S -(b) -16.698 12.000 S -(,) -9.698 12.000 S -(h) -6.198 12.000 S -(c) 0.801 12.000 S -(,) 7.015 12.000 S -(h) 10.515 12.000 S -(d) 17.515 12.000 S -(,) 24.515 12.000 S -(h) 28.015 12.000 S -(e) 35.015 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 252.000 108.000 0.000 0.000 45.000 99.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 27.000 216.000 27.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 216.000 27.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 207.000 297.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -158.000 252.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 157.999 248.000 158.000 217.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 229.000 333.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 333.500 0.000 0.000 17.000 14.402 rect -%@EndRect -gsave -340.701 217.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 5.000 S -(d) 0.201 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 283.000 333.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 262.500 333.500 0.000 0.000 17.000 14.402 rect -%@EndRect -gsave -340.701 271.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -7.000 5.000 S -(e) 0.201 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.000 321.000 324.000 204.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.000 321.000 324.000 321.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.000 204.000 324.000 204.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -208.000 277.000 moveto -/Triangular 16.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 212.000 276.999 324.000 277.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 135.000 288.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -351.000 198.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 350.999 196.000 351.000 135.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.500 361.500 0.000 0.000 53.000 73.615 rect -%@EndRect -gsave -398.307 185.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -36.000 -16.000 S -(e) -29.326 -16.000 S -(a) -24.000 -16.000 S -(r) -18.673 -16.000 S -(c) -14.677 -16.000 S -(h) -9.351 -16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -36.000 -3.000 S -(o) -29.326 -3.000 S -(r) -23.326 -3.000 S -( ) -19.330 -3.000 S -(F) -16.330 -3.000 S -(i) -9.656 -3.000 S -(l) -6.322 -3.000 S -(e) -2.988 -3.000 S -(s) 2.337 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -36.000 10.000 S -(a) -27.996 10.000 S -(l) -22.669 10.000 S -(l) -19.335 10.000 S -(e) -16.001 10.000 S -(d) -10.675 10.000 S -( ) -4.675 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -36.000 23.000 S -(h) -31.101 23.000 S -(d) -25.101 23.000 S -(") -19.101 23.000 S -( ) -14.203 23.000 S -(a) -11.203 23.000 S -(n) -5.876 23.000 S -(d) 0.123 23.000 S -( ) 6.123 23.000 S -(") 9.123 23.000 S -(h) 14.021 23.000 S -(e) 20.021 23.000 S -(") 25.347 23.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 115.500 290.500 0.000 0.000 53.000 47.982 rect -%@EndRect -gsave -314.491 142.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.346 -16.000 S -(M) -7.680 -16.000 S -(M) 2.989 -16.000 S -(s) 13.659 -16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -22.334 10.000 S -(d) -16.334 10.000 S -( ) -10.334 10.000 S -(a) -7.334 10.000 S -(n) -2.008 10.000 S -(d) 3.991 10.000 S -( ) 9.991 10.000 S -(h) 12.991 10.000 S -(e) 18.991 10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -23.000 23.000 S -(n) -17.000 23.000 S -(d) -11.000 23.000 S -(e) -5.000 23.000 S -(f) 0.326 23.000 S -(i) 4.322 23.000 S -(n) 7.656 23.000 S -(e) 13.656 23.000 S -(d) 18.982 23.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 65.000 moveto -/Triangular 14.099 7.049 false 317.625 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.476 63.651 111.000 44.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -173.000 65.000 moveto -/Triangular 14.099 7.049 false 293.519 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 173.797 63.165 183.000 42.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 66.000 moveto -/Triangular 14.099 7.049 false 286.947 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.582 64.086 268.000 43.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 81.500 45.500 0.000 0.000 17.000 21.603 rect -%@EndRect -gsave -56.301 90.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -10.000 5.000 S -(f) -2.798 5.000 S -(1) 4.402 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 81.500 135.500 0.000 0.000 17.000 21.603 rect -%@EndRect -gsave -146.301 90.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -10.000 5.000 S -(f) -2.798 5.000 S -(2) 4.402 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 81.500 243.500 0.000 0.000 17.000 36.005 rect -%@EndRect -gsave -261.502 90.000 T translate -0.0 rotate -1 1 scale -12.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -18.000 5.000 S -(l) -10.798 5.000 S -(i) -3.597 5.000 S -(s) 3.603 5.000 S -(t) 10.804 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hslab.eps b/HTKBook/HTKFigs/hslab.eps deleted file mode 100644 index 6d46025..0000000 --- a/HTKBook/HTKFigs/hslab.eps +++ /dev/null @@ -1,29774 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: HSLab.eps -%%Creator: XV Version 2.21 Rev: 4/29/92 - by John Bradley -%%BoundingBox: -45 145 658 648 -%%Pages: 1 -%%DocumentFonts: -%%EndComments -%%EndProlog - -%%Page: 1 1 - -% remember original state -/origstate save def - -% build a temporary dictionary -20 dict begin - -% define string to hold a scanline's worth of data -/pix 2109 string def - -% lower left corner --45 145 translate - -% size of image (on paper, in 1/72inch coords) -703 503 scale - -% define 'colorimage' if it isn't defined -% ('colortogray' and 'mergeprocs' come from xwd2ps -% via xgrab) -/colorimage where % do we know about 'colorimage'? - { pop } % yes: pop off the 'dict' returned - { % no: define one - /colortogray { % define an RGB->I function - /rgbdata exch store % call input 'rgbdata' - rgbdata length 3 idiv - /npixls exch store - /rgbindx 0 store - /grays npixls string store % str to hold the result - 0 1 npixls 1 sub { - grays exch - rgbdata rgbindx get 20 mul % Red - rgbdata rgbindx 1 add get 32 mul % Green - rgbdata rgbindx 2 add get 12 mul % Blue - add add 64 idiv % I = .5G + .31R + .18B - put - /rgbindx rgbindx 3 add store - } for - grays - } bind def - - % Utility procedure for colorimage operator. - % This procedure takes two procedures off the - % stack and merges them into a single procedure. - - /mergeprocs { % def - dup length - 3 -1 roll - dup - length - dup - 5 1 roll - 3 -1 roll - add - array cvx - dup - 3 -1 roll - 0 exch - putinterval - dup - 4 2 roll - putinterval - } bind def - - /colorimage { % def - pop pop % remove 'false 3' operands - {colortogray} mergeprocs - image - } bind def - } ifelse % end of 'false' case - - - -703 503 8 % dimensions of data -[703 0 0 -503 0 503] % mapping matrix -{currentfile pix readhexstring pop} -false 3 colorimage - -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000000000 -000000000000000000000000000000ffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000000000000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000000000000000ffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000000000ffffffffffffffffff000000ffffff -000000000000ffffffffffff000000ffffff000000000000ffffffffffff000000000000 -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffff000000ffffff000000000000ffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffff000000ffffff000000000000ffffffffffff000000 -000000ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000000000000000ffffffffffffffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000ffffff000000000000ffffffffffffffffffffffff000000000000000000 -ffffffffffffffffffffffff000000ffffff000000000000ffffffffffff000000000000 -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffff000000000000ffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -ffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000ffffff -000000000000ffffffffffff000000000000ffffffffffffffffffffffff000000ffffff -000000000000ffffffffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffff000000000000000000ffffffffffffffffffffffff000000ffffff000000000000 -ffffffffffff000000000000ffffffffffffffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffff000000000000ffffffffffffffffffffffff000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000ffffff000000000000ffffffffffff -000000000000000000ffffffffffffffffff000000000000000000000000ffffffffffff -000000000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffff000000000000 -ffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffff000000000000ffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000000000ffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000000000ffffffffffff000000000000ffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -ffffffffffff000000000000ffffffffffff000000ffffffffffffffffff000000000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffffffffff -000000000000ffffffffffff000000ffffffffffffffffff000000000000ffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000000000ffffffffffff000000ffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff000000 -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffff -ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffff000000 -ffffffffffffffffff000000000000000000000000000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000000000000000000000000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000000000000000000000000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000000000 -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffff000000ffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffff000000000000000000000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000000000000000 -000000000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffff000000ffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffff000000000000ffffffffffffffffff000000ffffffffffff -000000000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffff000000000000000000ffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffff000000ffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000 -000000ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff -ffffff000000000000000000ffffff000000ffffffffffff000000000000000000000000 -ffffffffffffffffffffffff000000000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000000000 -ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffff000000000000000000ffffff000000ffffffffffff000000000000000000 -000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffffffffff000000000000000000ffffff000000ffffffffffff000000ffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffff000000ffffffffffffffffff000000000000 -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff -ffffff000000000000000000ffffff000000ffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffff000000000000000000000000 -ffffffffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffff -000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -000000000000000000ffffff000000ffffffffffffffffff000000000000ffffffffffff -000000000000000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000ffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffff000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000000000000000ffffff000000000000ffffff -000000ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffff000000ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000ffffff000000000000ffffff -000000ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000ffffff -000000000000000000000000000000000000000000000000ffffff000000000000ffffff -000000ffffff000000ffffffffffffffffff000000ffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffffffffffffffff000000000000ffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffff000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000ffffff000000000000000000 -000000ffffff000000ffffffffffffffffff000000ffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000ffffff000000000000ffffff000000ffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff -000000000000ffffff000000ffffff000000ffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000ffffff000000000000000000 -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000ffffff000000000000ffffff000000ffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000ffffff000000ffffff000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000000000ffffff000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff000000 -ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000ffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000000000ffffff000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffff000000ffffff000000ffffffffffff000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000ffffff000000ffffff000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff000000 -ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000ffffffffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffff000000ffffff000000ffffffffffff000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffff000000ffffffffffff000000000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000ffffff -ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -000000000000000000000000ffffff000000ffffff000000ffffff000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000ffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -000000ffffff000000000000ffffff000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000000000ffffff000000000000ffffffffffffffffff -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000ffffff -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000ffffff000000000000 -000000000000ffffff000000000000000000000000000000000000ffffff000000ffffff -ffffff000000ffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000ffffffffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000ffffff000000ffffff -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -000000ffffff000000000000ffffff000000000000ffffff000000ffffffffffff000000 -000000ffffff000000ffffffffffff000000ffffffffffffffffff000000ffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000ffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000ffffffffffffffffff -ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffff000000ffffff000000ffffff000000ffffff -000000ffffff000000000000ffffff000000ffffff000000ffffffffffffffffffffffff -000000ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff000000ffffff -000000ffffff000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000ffffff000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000ffffff000000ffffff -000000000000ffffff000000000000ffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff000000 -ffffff000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000ffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -000000000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000000000ffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff -000000ffffff000000000000ffffff000000000000ffffff000000ffffffffffff000000 -000000ffffff000000ffffffffffff000000ffffffffffff000000000000ffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffff000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffffffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000ffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffff000000ffffffffffff000000000000000000ffffff000000000000 -000000ffffff000000000000ffffff000000ffffff000000ffffff000000000000ffffff -000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000ffffff000000ffffff -000000000000ffffff000000000000ffffff000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000000000000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffff000000000000000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -000000000000000000000000ffffff000000ffffff000000000000ffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000000000ffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000ffffff000000000000ffffff000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -ffffffffffff000000000000000000000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000ffffff000000000000ffffff000000000000ffffff000000000000ffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffffffffff -ffffffffffff000000000000ffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000ffffff -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffffffffff -ffffffffffffffffffffffff000000000000000000ffffffffffff000000ffffff000000 -000000000000ffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000ffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000ffffff -000000000000000000000000000000ffffff000000000000ffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000000000000000000000000000 -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000ffffff000000000000000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000000000ffffff -ffffff000000000000000000000000000000ffffff000000000000ffffffffffffffffff -000000000000000000ffffff000000ffffffffffff000000ffffff000000000000ffffff -ffffff000000ffffff000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffff000000000000ffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -ffffff000000000000000000000000000000000000000000ffffff000000000000000000 -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffff000000000000000000000000000000ffffff000000000000ffffffffffff -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -ffffffffffff000000000000ffffff000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000ffffff000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000 -000000ffffffffffff000000000000ffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000ffffff000000 -000000ffffffffffffffffffffffffffffffffffff000000000000000000000000ffffff -000000ffffff000000ffffff000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffff000000ffffff000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000ffffffffffff000000000000ffffffffffffffffffffffffffffff000000ffffff -000000000000ffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000000000 -000000ffffffffffff000000ffffffffffffffffffffffffffffff000000000000000000 -000000ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000000000000000 -ffffffffffff000000000000000000000000ffffffffffffffffff000000000000ffffff -ffffff000000000000000000000000000000ffffff000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -ffffff000000000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000ffffffffffffffffff -ffffffffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffff000000000000000000 -000000000000000000000000000000ffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -000000ffffff000000ffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffff000000000000000000ffffff000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffff000000ffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffff000000ffffffffffff000000000000000000000000000000 -000000ffffff000000ffffffffffffffffff000000ffffffffffffffffff000000ffffff -ffffffffffffffffffffffff000000ffffff000000000000000000000000ffffff000000 -000000000000ffffffffffffffffff000000000000000000ffffff000000000000000000 -000000000000000000000000000000ffffffffffff000000000000000000ffffffffffff -ffffff000000000000ffffffffffff000000000000000000000000000000000000000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000ffffff000000000000000000000000ffffff000000ffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000000000000000000000000000000000000000ffffffffffffffffff000000ffffff -000000000000000000000000ffffffffffff000000000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffff000000ffffff000000000000000000000000000000000000 -000000ffffffffffff000000ffffffffffffffffff000000ffffff000000000000000000 -000000ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffff000000000000ffffff000000000000000000000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000ffffff000000000000000000 -000000ffffff000000000000000000000000ffffffffffffffffff000000ffffffffffff -ffffff000000000000000000000000000000ffffffffffff000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffff000000000000ffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000ffffff000000ffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffff000000000000000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000ffffff000000000000ffffffffffffffffff000000000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffff000000000000ffffff000000ffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -000000ffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffff000000000000000000ffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffff000000000000ffffff000000000000000000 -ffffffffffff000000000000000000ffffffffffffffffff000000000000ffffffffffff -ffffff000000000000000000000000000000000000ffffffffffffffffff000000ffffff -ffffff000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000ffffff000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000000000000000000000ffffff000000000000ffffff000000000000000000ffffff -ffffff000000000000000000000000000000000000000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffff000000000000000000ffffff000000 -000000ffffff000000000000000000ffffff000000000000000000000000000000000000 -000000000000ffffff000000000000000000ffffff000000ffffff000000000000000000 -000000ffffff000000000000000000000000000000000000000000ffffffffffff000000 -000000000000000000ffffffffffffffffff000000ffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffff000000 -000000000000000000ffffffffffff000000ffffffffffff000000000000ffffffffffff -ffffffffffff000000000000000000ffffffffffffffffff000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000000000000000ffffff000000ffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000ffffff000000000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000ffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffff000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -ffffffffffffffffff000000000000000000000000000000000000000000000000000000 -ffffffffffff000000000000000000ffffff000000000000000000000000000000000000 -000000ffffff000000000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffff000000ffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffff000000000000ffffffffffff000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000ffffff000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000 -ffffff000000000000ffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffff000000ffffffffffff -ffffff000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffff000000ffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000000000000000000000ffffff000000ffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000ffffffffffffffffff000000ffffffffffff000000000000000000 -000000000000000000000000000000ffffffffffff000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000ffffffffffffffffff -ffffffffffff000000ffffff000000ffffffffffffffffffffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000ffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffffffffffffffff000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffff000000ffffff000000000000ffffffffffff000000 -ffffffffffffffffffffffff000000000000ffffff000000000000000000ffffff000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffff000000000000000000000000000000ffffffffffff000000000000 -000000000000000000ffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffff000000000000ffffff000000000000ffffffffffffffffff -ffffffffffffffffff000000000000ffffff000000000000000000ffffffffffffffffff -ffffffffffffffffff000000000000000000000000ffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000ffffff000000000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000000000000000000000000000000000000000000000000000 -ffffff000000000000ffffff000000ffffff000000ffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffff000000000000000000ffffffffffffffffff -ffffffffffffffffffffffff000000000000000000ffffffffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000ffffff000000000000ffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffff000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffff000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000ffffff000000ffffff000000000000ffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000ffffff000000000000ffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffff000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000ffffffffffff000000000000000000000000ffffff000000000000 -000000ffffffffffffffffff000000000000ffffff000000000000ffffffffffffffffff -ffffff000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff -000000000000000000ffffff000000000000000000ffffffffffffffffffffffff000000 -000000000000000000000000000000ffffff000000000000000000000000000000000000 -000000000000ffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000ffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffffffffffffffff000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffff000000000000 -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000000000 -000000000000000000ffffff000000000000000000000000000000000000000000000000 -ffffffffffffffffff000000000000ffffff000000ffffff000000000000000000000000 -ffffff000000000000ffffffffffffffffff000000ffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000ffffff000000000000000000000000 -000000000000ffffff000000000000000000ffffff000000ffffff000000000000000000 -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000000000ffffff -000000ffffff000000000000000000ffffff000000000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000ffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000ffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000ffffff -ffffff000000ffffffffffffffffffffffffffffff000000000000000000000000000000 -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffff000000000000000000000000000000000000ffffff -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffffffffffffffff000000000000000000000000000000000000 -000000ffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000ffffffffffff000000000000000000000000000000ffffff000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffff000000ffffff000000000000ffffff000000000000ffffff -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffffffffff000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000 -ffffff000000ffffffffffff000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffff000000000000ffffffffffffffffff000000000000000000000000 -ffffff000000000000ffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffff000000000000000000000000 -000000000000ffffff000000000000ffffffffffff000000ffffffffffff000000000000 -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000000000000000ffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000ffffff -ffffffffffffffffff000000ffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffffffffffffffffffffff000000ffffff000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffff000000 -000000000000000000000000000000000000ffffffffffffffffff000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000ffffffffffff000000000000000000ffffff000000ffffff000000000000 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000ffffff000000000000ffffff000000000000000000 -000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000 -ffffff000000000000ffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffff000000000000000000000000 -000000000000ffffffffffff000000ffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -000000ffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffff000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000ffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000ffffff000000 -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000ffffff000000000000000000000000000000ffffff000000 -ffffffffffff000000000000000000000000ffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000ffffffffffffffffffffffff000000ffffffffffffffffffffffff000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000ffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000000000000000000000ffffffffffffffffff000000ffffff000000ffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000000000000000000000ffffff000000000000000000000000 -000000000000000000ffffff000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000ffffff000000 -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000ffffffffffff000000000000000000000000ffffff000000 -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000ffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000ffffff000000000000ffffffffffffffffff000000000000 -000000000000000000ffffff000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff000000000000 -000000000000000000ffffff000000000000ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000ffffffffffff000000000000000000ffffffffffffffffff -ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000000000000000000000000000000000ffffff000000ffffff000000ffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffff000000ffffff000000000000ffffffffffffffffff000000000000 -000000000000000000ffffff000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffff -000000000000000000ffffff000000ffffffffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000000000000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000ffffff000000000000 -000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000000000000000000000000000ffffff000000ffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000ffffff000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000000000000000000000000000000000000000 -ffffff000000000000000000000000000000000000000000000000000000000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000ffffffffffff000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffff000000000000000000000000000000000000ffffff000000ffffffffffffffffff -ffffff000000000000000000ffffffffffff000000000000000000ffffffffffff000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffff000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffff000000000000000000000000000000000000000000000000 -ffffff000000ffffff000000000000000000000000000000000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000ffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000ffffff000000000000ffffff000000ffffffffffffffffff -ffffff000000ffffff000000ffffffffffff000000000000000000ffffffffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffff000000ffffff000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000000000ffffff000000ffffffffffffffffff -ffffff000000ffffff000000ffffffffffff000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff000000000000 -000000000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffff000000ffffff000000000000000000000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000000000ffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffff000000000000000000000000000000000000ffffff000000ffffff000000000000 -000000000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000ffffff -ffffffffffffffffff000000ffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000000000000000ffffff000000ffffffffffff000000ffffff000000000000 -000000ffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffff000000ffffff000000000000ffffffffffff -ffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000000000000000ffffff000000ffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000ffffff000000ffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000ffffff -ffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffff000000ffffff000000ffffffffffff000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000ffffffffffffffffff000000ffffffffffffffffffffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000 -000000000000000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888 -888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3888888 -888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888888888888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888 -888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3 -d3d3d3d3d3d3888888888888888888d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000 -000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888 -d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888888888888888d3d3d3d3d3d3d3d3d3888888888888888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888888888d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000 -000000d3d3d3000000000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000 -000000d3d3d3000000000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888888888888888 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888888888d3d3d3d3d3d3d3d3d3888888888888888888888888888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3 -888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3888888888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3888888d3d3d3d3d3d3888888d3d3d3d3d3d3d3d3d3888888d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3000000d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888888888888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888 -d3d3d3888888d3d3d3d3d3d3d3d3d3888888888888d3d3d3888888d3d3d3d3d3d3888888 -888888888888d3d3d3d3d3d3d3d3d3d3d3d3888888888888888888d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3888888d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3000000d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3000000d3d3d3d3d3d3000000000000 -000000000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000000000000000000000000000d3d3d3d3d3d3000000000000000000000000000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3000000d3d3d3000000d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3000000000000000000 -d3d3d3000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3000000 -000000000000d3d3d3000000d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3000000d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -000000000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000000000d3d3d3d3d3d3d3d3d3 -d3d3d3000000000000000000d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000d3d3d3d3d3d3000000d3d3d3d3d3d3 -d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3000000000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3ffffff000000 -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -000000ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffff000000d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3 -d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3000000ffffff000000ffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000ffffff000000ffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000ffffff000000ffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffff000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffff000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000000000000000000000 -000000000000000000000000000000000000000000000000000000ffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffff -000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff -ffffffffffffffffffffffffffffffffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000ffffff000000 -ffffff000000ffffff000000ffffff000000ffffff - -showpage - -% stop using temporary dictionary -end - -% restore original state -origstate restore - -%%Trailer diff --git a/HTKBook/HTKFigs/htktools.eps b/HTKBook/HTKFigs/htktools.eps deleted file mode 100644 index 52403d9..0000000 --- a/HTKBook/HTKFigs/htktools.eps +++ /dev/null @@ -1,2284 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: htktools.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:59:43 p.m. -%%BoundingBox: 43.008 334.500 474.991 759.500 -%%QDBoundingBox: 43.008 32.500 474.991 457.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.500 124.508 0.000 0.000 27.000 99.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.000 134.008 0.000 0.000 16.000 80.869 rect -%@EndRect -gsave -174.442 119.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -39.491 4.000 S -(r) -30.939 4.000 S -(a) -26.277 4.000 S -(n) -20.063 4.000 S -(s) -13.063 4.000 S -(c) -7.615 4.000 S -(r) -1.401 4.000 S -(i) 3.260 4.000 S -(p) 7.149 4.000 S -(t) 14.149 4.000 S -(i) 18.039 4.000 S -(o) 21.929 4.000 S -(n) 28.929 4.000 S -(s) 35.929 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 105.500 241.508 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.000 257.008 0.000 0.000 16.000 40.427 rect -%@EndRect -gsave -277.222 119.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -19.491 4.000 S -(p) -11.705 4.000 S -(e) -4.705 4.000 S -(e) 1.508 4.000 S -(c) 7.722 4.000 S -(h) 13.936 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 169.508 69.500 106.508 69.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.500 43.508 0.000 0.000 54.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.000 50.008 0.000 0.000 31.000 54.889 rect -%@EndRect -gsave -77.453 70.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -26.491 -4.000 S -(L) -16.381 -4.000 S -(E) -7.829 -4.000 S -10.000 (_Times-Roman) fess -(D) 0.722 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -26.491 11.000 S -(L) -16.381 11.000 S -(S) -7.829 11.000 S -10.000 (_Times-Roman) fess -(T) -0.043 11.000 S -(A) 6.370 11.000 S -(T) 13.953 11.000 S -(S) 20.366 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -169.508 105.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 169.508 103.500 169.508 69.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 322.508 69.500 277.508 69.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.500 322.508 0.000 0.000 72.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 48.000 332.008 0.000 0.000 61.000 55.889 rect -%@EndRect -gsave -359.953 78.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 -19.000 S -(S) -17.381 -19.000 S -(L) -9.595 -19.000 S -10.000 (_Times-Roman) fess -(A) -1.043 -19.000 S -(B) 6.539 -19.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 -4.000 S -(C) -17.381 -4.000 S -10.000 (_Times-Roman) fess -(O) -8.043 -4.000 S -(P) -0.460 -4.000 S -(Y) 5.378 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 11.000 S -(L) -17.381 11.000 S -10.000 (_Times-Roman) fess -(I) -8.829 11.000 S -(S) -5.333 11.000 S -(T) 0.506 11.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.491 26.000 S -(Q) -17.381 26.000 S -10.000 (_Times-Roman) fess -(U) -7.270 26.000 S -(A) 0.311 26.000 S -(N) 7.894 26.000 S -(T) 15.477 26.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -277.508 105.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.508 103.500 277.508 69.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 152.008 0.000 0.000 31.000 153.417 rect -%@EndRect -gsave -228.716 182.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -76.491 -4.000 S -(C) -66.381 -4.000 S -10.000 (_Times-Roman) fess -(O) -57.043 -4.000 S -(M) -49.460 -4.000 S -(P) -40.124 -4.000 S -14.000 (_Times-Roman) fess -(V) -34.284 -4.000 S -(,) -24.174 -4.000 S -( ) -20.674 -4.000 S -(H) -17.174 -4.000 S -(I) -7.064 -4.000 S -10.000 (_Times-Roman) fess -(N) -2.402 -4.000 S -(I) 5.180 -4.000 S -(T) 8.677 -4.000 S -14.000 (_Times-Roman) fess -(,) 15.091 -4.000 S -( ) 18.591 -4.000 S -(H) 22.091 -4.000 S -(R) 32.201 -4.000 S -10.000 (_Times-Roman) fess -(E) 41.539 -4.000 S -(S) 47.953 -4.000 S -(T) 53.792 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -76.491 11.000 S -(E) -66.381 11.000 S -(R) -57.829 11.000 S -10.000 (_Times-Roman) fess -(E) -48.491 11.000 S -(S) -42.077 11.000 S -(T) -36.238 11.000 S -14.000 (_Times-Roman) fess -(,) -29.824 11.000 S -( ) -26.324 11.000 S -(H) -22.824 11.000 S -(S) -12.714 11.000 S -10.000 (_Times-Roman) fess -(M) -4.927 11.000 S -(O) 4.408 11.000 S -(O) 11.990 11.000 S -(T) 19.573 11.000 S -(H) 25.987 11.000 S -14.000 (_Times-Roman) fess -(,) 33.570 11.000 S -( ) 37.070 11.000 S -(H) 40.570 11.000 S -(H) 50.680 11.000 S -(E) 60.791 11.000 S -10.000 (_Times-Roman) fess -(D) 69.342 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 159.500 133.508 0.000 0.000 45.000 180.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -187.508 159.500 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 186.398 157.835 169.508 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -259.508 159.500 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.617 157.835 277.508 132.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 239.000 206.008 0.000 0.000 16.000 40.455 rect -%@EndRect -gsave -226.235 247.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -19.491 4.000 S -(M) -9.381 4.000 S -(M) 3.066 4.000 S -(s) 15.515 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 231.500 178.508 0.000 0.000 27.000 90.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 231.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 229.500 223.508 204.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 336.000 58.008 0.000 0.000 16.000 54.434 rect -%@EndRect -gsave -85.225 344.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -26.491 4.000 S -(e) -16.381 4.000 S -(t) -10.167 4.000 S -(w) -6.277 4.000 S -(o) 3.832 4.000 S -(r) 10.832 4.000 S -(k) 15.494 4.000 S -(s) 22.494 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 282.000 56.008 0.000 0.000 16.000 59.869 rect -%@EndRect -gsave -85.942 290.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.491 4.000 S -(i) -19.381 4.000 S -(c) -15.491 4.000 S -(t) -9.277 4.000 S -(i) -5.388 4.000 S -(o) -1.498 4.000 S -(n) 5.501 4.000 S -(a) 12.501 4.000 S -(r) 18.715 4.000 S -(y) 23.377 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 276.500 43.508 0.000 0.000 27.000 81.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 330.500 43.508 0.000 0.000 27.000 81.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 230.000 62.008 0.000 0.000 16.000 47.834 rect -%@EndRect -gsave -85.925 238.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.491 4.000 S -(D) -13.381 4.000 S -(M) -3.270 4.000 S -10.000 (_Times-Roman) fess -(A) 9.177 4.000 S -(N) 16.760 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 222.500 52.508 0.000 0.000 27.000 63.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -83.508 276.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 83.508 274.500 83.508 249.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -83.508 357.500 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 83.508 359.500 83.508 384.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 384.500 52.508 0.000 0.000 45.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 392.000 62.008 0.000 0.000 31.000 44.736 rect -%@EndRect -gsave -84.376 407.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.491 -4.000 S -(B) -11.381 -4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -2.043 -4.000 S -(I) 5.539 -4.000 S -(L) 9.035 -4.000 S -(D) 15.449 -4.000 S -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.491 11.000 S -(P) -11.381 11.000 S -10.000 (_Times-Roman) fess -(A) -3.595 11.000 S -(R) 3.987 11.000 S -(S) 10.990 11.000 S -(E) 16.830 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 294.500 178.508 0.000 0.000 36.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 305.000 205.008 0.000 0.000 16.000 36.544 rect -%@EndRect -gsave -223.280 313.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.491 4.000 S -(V) -7.381 4.000 S -10.000 (_Times-Roman) fess -(I) 2.729 4.000 S -(T) 6.225 4.000 S -(E) 12.639 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -178.508 303.500 moveto -/Triangular 14.099 7.049 false 189.475 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.535 303.171 124.508 294.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -178.508 321.500 moveto -/Triangular 14.099 7.049 false 161.576 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.610 322.132 124.508 339.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 294.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 292.500 223.508 258.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 366.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 364.500 223.508 330.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 366.500 175.508 0.000 0.000 27.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 372.000 185.008 0.000 0.000 16.000 80.869 rect -%@EndRect -gsave -225.442 380.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -39.491 4.000 S -(r) -30.939 4.000 S -(a) -26.277 4.000 S -(n) -20.063 4.000 S -(s) -13.063 4.000 S -(c) -7.615 4.000 S -(r) -1.401 4.000 S -(i) 3.260 4.000 S -(p) 7.149 4.000 S -(t) 14.149 4.000 S -(i) 18.039 4.000 S -(o) 21.929 4.000 S -(n) 28.929 4.000 S -(s) 35.929 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -223.508 393.500 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.508 395.500 223.508 420.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 420.500 192.508 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 428.000 197.008 0.000 0.000 16.000 64.736 rect -%@EndRect -gsave -229.376 436.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -31.491 4.000 S -(R) -21.381 4.000 S -10.000 (_Times-Roman) fess -(E) -12.043 4.000 S -(S) -5.629 4.000 S -(U) 0.209 4.000 S -(L) 7.792 4.000 S -(T) 14.206 4.000 S -(S) 20.620 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 33.500 394.508 33.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 222.500 412.508 33.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 222.500 412.508 222.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 231.500 412.508 231.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 384.500 412.508 231.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 384.500 412.508 384.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 393.500 412.508 393.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 412.508 456.500 412.508 393.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[4.000 2.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 394.508 456.500 412.508 456.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.000 416.008 0.000 0.000 20.000 38.979 rect -%@EndRect -gsave -435.498 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -18.491 5.000 S -(r) -7.496 5.000 S -(a) -1.502 5.000 S -(i) 6.486 5.000 S -(n) 11.487 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 293.000 416.008 0.000 0.000 20.000 30.990 rect -%@EndRect -gsave -431.503 303.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -15.491 5.000 S -(e) -4.496 5.000 S -(s) 3.492 5.000 S -(t) 10.497 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 410.000 416.008 0.000 0.000 20.000 58.983 rect -%@EndRect -gsave -445.500 420.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -29.491 5.000 S -(n) -16.492 5.000 S -(a) -7.492 5.000 S -(l) 0.496 5.000 S -(y) 5.497 5.000 S -(s) 14.497 5.000 S -(e) 21.502 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/hvalign.eps b/HTKBook/HTKFigs/hvalign.eps deleted file mode 100644 index 400c692..0000000 --- a/HTKBook/HTKFigs/hvalign.eps +++ /dev/null @@ -1,1473 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: hvalign.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 4:21:48 p.m. -%%BoundingBox: 53.500 638.500 252.500 764.500 -%%QDBoundingBox: 53.500 27.500 252.500 153.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.500 61.500 0.000 0.000 31.000 80.869 rect -%@EndRect -gsave -101.934 67.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -33.187 -3.000 S -(o) -19.974 -3.000 S -(r) -12.974 -3.000 S -(d) -8.312 -3.000 S -( ) -1.312 -3.000 S -(L) 2.187 -3.000 S -(e) 10.739 -3.000 S -(v) 16.953 -3.000 S -(e) 23.953 -3.000 S -(l) 30.167 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -40.000 12.000 S -(r) -31.448 12.000 S -(a) -26.786 12.000 S -(n) -20.572 12.000 S -(s) -13.572 12.000 S -(c) -8.124 12.000 S -(r) -1.910 12.000 S -(i) 2.751 12.000 S -(p) 6.641 12.000 S -(t) 13.641 12.000 S -(i) 17.531 12.000 S -(o) 21.420 12.000 S -(n) 28.420 12.000 S -(s) 35.420 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 54.000 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 72.500 0.000 0.000 14.000 54.008 rect -%@EndRect -gsave -99.504 34.500 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -27.000 4.000 S -(o) -20.999 4.000 S -(r) -14.998 4.000 S -(d) -8.997 4.000 S -(s) -2.996 4.000 S -(.) 3.004 4.000 S -(m) 9.005 4.000 S -(l) 15.006 4.000 S -(f) 21.007 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.000 54.000 0.000 0.000 36.000 90.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 127.500 69.500 0.000 0.000 16.000 59.869 rect -%@EndRect -gsave -99.434 135.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.000 4.000 S -(i) -18.889 4.000 S -(c) -15.000 4.000 S -(t) -8.786 4.000 S -(i) -4.896 4.000 S -(o) -1.006 4.000 S -(n) 5.993 4.000 S -(a) 12.993 4.000 S -(r) 19.207 4.000 S -(y) 23.869 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.500 86.500 0.000 0.000 14.000 24.003 rect -%@EndRect -gsave -98.501 107.500 T translate -0.0 rotate -1 1 scale -10.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -12.000 4.000 S -(i) -5.999 4.000 S -(c) 0.001 4.000 S -(t) 6.002 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 180.000 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.500 198.500 0.000 0.000 16.000 36.544 rect -%@EndRect -gsave -216.772 86.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.000 4.000 S -(V) -7.889 4.000 S -10.000 (_Times-Roman) fess -(I) 2.220 4.000 S -(T) 5.717 4.000 S -(E) 12.131 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 193.500 0.000 0.000 16.000 43.920 rect -%@EndRect -gsave -215.460 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -21.000 4.000 S -(i) -16.337 4.000 S -(l) -12.448 4.000 S -(e) -8.558 4.000 S -(.) -2.344 4.000 S -(m) 1.155 4.000 S -(f) 12.044 4.000 S -(c) 16.707 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 129.500 193.500 0.000 0.000 16.000 39.245 rect -%@EndRect -gsave -213.122 137.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -19.000 4.000 S -(i) -14.337 4.000 S -(l) -10.448 4.000 S -(e) -6.558 4.000 S -(.) -0.344 4.000 S -(r) 3.155 4.000 S -(e) 7.817 4.000 S -(c) 14.031 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 72.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 70.666 216.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 126.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.999 124.666 216.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 63.000 moveto -/Triangular 9.399 7.049 false 338.222 DrawArrowHead -} bind def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.237 62.504 189.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 81.000 moveto -/Triangular 9.399 7.049 false 194.050 DrawArrowHead -} bind def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.706 80.676 144.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 90.000 moveto -/Triangular 9.399 7.049 false 128.668 DrawArrowHead -} bind def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 179.167 91.041 144.000 135.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/isoprob.eps b/HTKBook/HTKFigs/isoprob.eps deleted file mode 100644 index 104c2bd..0000000 --- a/HTKBook/HTKFigs/isoprob.eps +++ /dev/null @@ -1,2555 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: isoprob.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:14:54 p.m. -%%BoundingBox: 3.857 460.500 469.500 788.500 -%%QDBoundingBox: 3.857 3.500 469.500 331.500 -%%DocumentFonts: Times-Roman -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.022 4.357 0.000 0.000 81.042 56.739 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.678 80.579] CP -[14.691 73.478 15.367 68.461 15.704 65.528] CP -[16.042 62.595 15.704 59.199 14.691 55.340] CP -[13.678 51.481 12.158 48.702 10.132 47.004] CP -[8.105 45.306 6.248 42.605 4.559 38.900] CP -[2.870 35.195 1.688 31.568 1.013 28.017] CP -[0.337 24.467 0.253 20.839 0.759 17.134] CP -[1.266 13.429 2.448 10.496 4.306 8.335] CP -[6.163 6.174 8.781 4.476 12.158 3.241] CP -[15.535 2.006 20.179 1.157 26.090 0.694] CP -[32.000 0.231 37.235 0.694 41.794 2.083] CP -[46.354 3.473 49.309 5.325 50.660 7.641] CP -[52.011 9.956 52.602 12.889 52.433 16.440] CP -[52.264 19.990 52.940 23.000 54.460 25.470] CP -[55.979 27.940 56.739 29.792 56.739 31.027] CP -[56.739 32.262 55.051 32.803 51.673 32.648] CP -[48.296 32.494 47.705 34.578 49.900 38.900] CP -[52.095 43.222 50.829 45.075 46.101 44.457] CP -[41.372 43.840 40.190 44.149 42.554 45.384] CP -[44.918 46.618 46.860 47.776 48.380 48.857] CP -[49.900 49.937 50.744 51.944 50.913 54.877] CP -[51.082 57.810 48.718 58.736 43.821 57.656] CP -[38.924 56.575 35.462 56.498 33.435 57.424] CP -[31.409 58.350 30.396 60.897 30.396 65.065] CP -[30.396 69.233 29.889 72.707 28.876 75.485] CP -[27.863 78.264 27.694 80.116 28.369 81.042] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 22.595 0.000 0.000 17.597 10.132 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[9.118 2.778] CP -[5.403 0.926 2.955 1.157 1.773 3.473] CP -[0.591 5.788 0.168 7.795 0.506 9.493] CP -[0.844 11.191 2.364 12.966 5.066 14.819] CP -[7.767 16.671 9.287 16.594 9.625 14.587] CP -[9.963 12.580 8.949 10.960 6.585 9.725] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 44.886 0.000 0.000 4.167 9.118 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.941 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.580 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 98.057 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 97.558 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.408 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.721 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 82.138 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.190 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 132.142 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 168.713 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 211.003 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 177.666 132.977 177.666 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 132.500 132.977 132.500 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 222.833 132.977 222.833 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 267.999 132.977 267.999 96.977 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 267.284 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 303.856 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 346.146 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 312.809 132.977 312.809 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 357.975 132.977 357.975 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 403.142 132.977 403.142 96.977 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 151.090 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 196.138 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 241.185 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 286.233 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 331.280 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 376.328 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -155.380 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 155.380 180.727 155.380 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -200.428 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 200.428 180.727 200.428 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -245.475 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 245.475 180.727 245.475 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -290.523 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 290.523 180.727 290.523 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -335.570 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 335.570 180.727 335.570 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -380.618 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 380.618 180.727 380.618 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -39.000 0.000 0.000 54.000 180.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -24.000 0.000 0.000 54.000 150.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 20.000 123.000 0.000 0.000 36.000 315.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.666 194.599 0.000 0.000 22.666 194.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.666 145.999 0.000 0.000 22.666 194.400 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 264.833 267.499 0.000 0.000 11.333 48.599 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 264.833 218.900 0.000 0.000 11.333 48.599 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -268.380 313.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 268.380 309.727 268.380 277.727 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.000 408.000 0.000 0.000 31.000 61.000 rect -%@EndRect -gsave -438.500 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -29.927 11.000 S -(a) -16.713 11.000 S -(v) -10.500 11.000 S -(e) -3.500 11.000 S -(f) 2.713 11.000 S -(o) 7.375 11.000 S -(r) 14.375 11.000 S -(m) 19.038 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 205.000 416.000 0.000 0.000 31.000 45.000 rect -%@EndRect -gsave -438.500 220.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -21.769 11.000 S -(e) -11.658 11.000 S -(c) -5.444 11.000 S -(t) 0.769 11.000 S -(o) 4.658 11.000 S -(r) 11.658 11.000 S -(s) 16.320 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 133.000 0.000 0.000 15.000 131.000 rect -%@EndRect -gsave -198.500 11.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -65.500 4.000 S -(o) -56.162 4.000 S -(n) -49.162 4.000 S -(c) -42.162 4.000 S -(e) -35.948 4.000 S -(p) -29.734 4.000 S -(t) -22.734 4.000 S -(:) -18.844 4.000 S -( ) -14.955 4.000 S -(a) -11.455 4.000 S -( ) -5.241 4.000 S -(s) -1.741 4.000 S -(i) 3.707 4.000 S -(n) 7.596 4.000 S -(g) 14.596 4.000 S -(l) 21.596 4.000 S -(e) 25.486 4.000 S -( ) 31.700 4.000 S -(w) 35.200 4.000 S -(o) 45.310 4.000 S -(r) 52.310 4.000 S -(d) 56.972 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 39.000 0.000 0.000 15.000 74.000 rect -%@EndRect -gsave -76.000 174.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -36.500 4.000 S -(a) -28.713 4.000 S -(r) -22.500 4.000 S -(a) -17.837 4.000 S -(m) -11.624 4.000 S -(e) -0.734 4.000 S -(t) 5.479 4.000 S -(e) 9.369 4.000 S -(r) 15.583 4.000 S -(i) 20.245 4.000 S -(s) 24.134 4.000 S -(e) 29.583 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.000 34.000 0.000 0.000 22.000 80.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 292.000 40.000 0.000 0.000 15.000 60.000 rect -%@EndRect -gsave -70.000 299.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -29.500 4.000 S -(e) -20.162 4.000 S -(c) -13.948 4.000 S -(o) -7.734 4.000 S -(g) -0.734 4.000 S -(n) 6.265 4.000 S -(i) 13.265 4.000 S -(s) 17.155 4.000 S -(e) 22.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 289.000 37.000 0.000 0.000 21.000 65.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 173.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.000 173.000 114.000 173.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.000 300.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.000 300.000 102.000 300.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.000 270.000 0.000 0.000 15.000 12.000 rect -%@EndRect -gsave -276.000 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.000 263.000 0.000 0.000 15.000 12.000 rect -%@EndRect -gsave -269.000 323.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Bold) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.500 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/isoword.eps b/HTKBook/HTKFigs/isoword.eps deleted file mode 100644 index e95bab2..0000000 --- a/HTKBook/HTKFigs/isoword.eps +++ /dev/null @@ -1,2314 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: isoword.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/4/95 10:39:21 p.m. -%%BoundingBox: 8.500 461.000 216.500 767.000 -%%QDBoundingBox: 8.500 25.000 216.500 331.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 66.199 63.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.334 74.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.617 88.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 66.199 105.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.334 117.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.617 130.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 84.067 137.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.000 124.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.944 105.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 84.067 94.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.000 81.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.944 63.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.500 52.000 0.000 0.000 63.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.567 63.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.500 74.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.444 88.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.567 105.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.500 117.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.444 130.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 25.000 61.500 0.000 0.000 14.000 90.972 rect -%@EndRect -gsave -106.986 32.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -45.000 3.000 S -(n) -36.333 3.000 S -(l) -30.333 3.000 S -(a) -27.000 3.000 S -(b) -21.673 3.000 S -(e) -15.673 3.000 S -(l) -10.347 3.000 S -(l) -7.013 3.000 S -(e) -3.679 3.000 S -(d) 1.646 3.000 S -( ) 7.646 3.000 S -(T) 10.646 3.000 S -(o) 17.976 3.000 S -(k) 23.976 3.000 S -(e) 29.976 3.000 S -(n) 35.302 3.000 S -(s) 41.302 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.500 61.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 185.000 75.500 0.000 0.000 14.000 25.330 rect -%@EndRect -gsave -88.165 192.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -12.000 3.000 S -(I) -3.333 3.000 S -(n) 0.662 3.000 S -(i) 6.662 3.000 S -(t) 9.996 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.500 115.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.000 123.500 0.000 0.000 14.000 46.669 rect -%@EndRect -gsave -146.834 147.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.000 3.000 S -(C) -14.333 3.000 S -(o) -6.330 3.000 S -(m) -0.330 3.000 S -(p) 9.003 3.000 S -(V) 15.003 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 240.500 61.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 248.000 72.500 0.000 0.000 14.000 30.000 rect -%@EndRect -gsave -87.500 255.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.000 3.000 S -(R) -6.333 3.000 S -(e) 1.669 3.000 S -(s) 6.996 3.000 S -(t) 11.666 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 177.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 87.999 175.500 88.000 105.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -142.000 132.500 moveto -/Triangular 14.099 7.049 false 251.583 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.367 130.602 133.000 105.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -115.000 177.500 moveto -/Triangular 14.099 7.049 false 326.332 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 116.664 176.390 142.000 159.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 240.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 87.999 238.500 88.000 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -88.000 303.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 87.999 301.500 88.000 267.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 304.000 51.500 0.000 0.000 27.000 72.693 rect -%@EndRect -gsave -87.846 317.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -30.807 -4.000 S -(h) -19.481 -4.000 S -(o) -13.481 -4.000 S -(l) -7.481 -4.000 S -(e) -4.147 -4.000 S -( ) 1.178 -4.000 S -(W) 4.178 -4.000 S -(o) 15.504 -4.000 S -(r) 21.504 -4.000 S -(d) 25.500 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.991 9.000 S -(M) -8.325 9.000 S -(M) 2.344 9.000 S -(s) 13.014 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -1.000 216.000 39.000 9.000 39.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/itemtree.eps b/HTKBook/HTKFigs/itemtree.eps deleted file mode 100644 index 3e9e875..0000000 --- a/HTKBook/HTKFigs/itemtree.eps +++ /dev/null @@ -1,1419 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: itemtree.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 11:27:23 a.m. -%%BoundingBox: 3.500 526.500 292.500 788.500 -%%QDBoundingBox: 3.500 3.500 292.500 265.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 76.000 0.000 0.000 15.000 64.000 rect -%@EndRect -gsave -108.000 11.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --32.000 6 31.207 6 U -(h) -31.500 4.000 S -(m) -24.500 4.000 S -(m) -13.610 4.000 S -(N) -2.720 4.000 S -(a) 7.389 4.000 S -(m) 13.603 4.000 S -(e) 24.493 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.000 4.000 0.000 0.000 15.000 36.000 rect -%@EndRect -gsave -22.000 83.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --18.000 6 18.000 6 U -(t) -17.500 4.000 S -(r) -13.610 4.000 S -(a) -8.948 4.000 S -(n) -2.734 4.000 S -(s) 4.265 4.000 S -(P) 9.713 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.000 139.000 0.000 0.000 15.000 36.000 rect -%@EndRect -gsave -157.000 83.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --18.000 6 17.979 6 U -(s) -17.500 4.000 S -(t) -12.051 4.000 S -(a) -8.162 4.000 S -(t) -1.948 4.000 S -(e) 1.941 4.000 S -([) 8.155 4.000 S -(]) 12.817 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.000 58.000 0.000 0.000 15.000 48.000 rect -%@EndRect -gsave -82.000 146.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -23.500 4.000 S -(t) -18.051 4.000 S -(r) -14.162 4.000 S -(e) -9.500 4.000 S -(a) -3.286 4.000 S -(m) 2.927 4.000 S -([) 13.817 4.000 S -(]) 18.479 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.000 166.000 0.000 0.000 15.000 20.000 rect -%@EndRect -gsave -176.000 146.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --10.000 6 9.662 6 U -(d) -9.500 4.000 S -(u) -2.500 4.000 S -(r) 4.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.000 247.000 0.000 0.000 15.000 45.000 rect -%@EndRect -gsave -269.500 146.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --23.000 6 21.551 6 U -(w) -22.500 4.000 S -(e) -12.389 4.000 S -(i) -6.175 4.000 S -(g) -2.286 4.000 S -(h) 4.713 4.000 S -(t) 11.713 4.000 S -(s) 15.603 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 193.000 85.000 0.000 0.000 15.000 33.000 rect -%@EndRect -gsave -101.500 200.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --17.000 6 15.103 6 U -(m) -16.500 4.000 S -(i) -5.610 4.000 S -(x) -1.720 4.000 S -([) 5.279 4.000 S -(]) 9.941 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 250.000 40.000 0.000 0.000 15.000 32.000 rect -%@EndRect -gsave -56.000 257.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --16.000 6 15.317 6 U -(m) -15.500 4.000 S -(e) -4.610 4.000 S -(a) 1.603 4.000 S -(n) 7.817 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 250.000 130.000 0.000 0.000 15.000 22.000 rect -%@EndRect -gsave -141.000 257.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --11.000 6 10.213 6 U -(c) -10.500 4.000 S -(o) -4.286 4.000 S -(v) 2.713 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 22.000 70.000 94.000 25.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 149.000 72.000 121.000 25.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 85.000 133.000 139.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 103.000 187.000 148.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 96.000 187.000 85.000 160.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 175.000 133.000 157.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 265.000 133.000 166.000 97.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 58.000 250.000 94.000 214.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 139.000 250.000 103.000 214.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/labegs.eps b/HTKBook/HTKFigs/labegs.eps deleted file mode 100644 index 2d6ad9f..0000000 --- a/HTKBook/HTKFigs/labegs.eps +++ /dev/null @@ -1,3306 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: labegs.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:2/13/95 8:30:13 p.m. -%%BoundingBox: 8.500 417.386 207.500 783.500 -%%QDBoundingBox: 8.500 8.500 207.500 374.613 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=T tPoly=T tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet - - - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 38.496 11.312 0.000 0.000 23.100 17.092 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 10.813] CP -[0.396 3.604 0.817 0.245 1.263 0.737] CP -[1.709 1.228 2.105 3.276 2.452 6.881] CP -[2.799 10.485 3.369 14.089 4.161 17.694] CP -[4.954 21.298 5.548 22.445 5.945 21.134] CP -[6.341 19.823 6.688 17.612 6.985 14.499] CP -[7.283 11.386 7.704 8.847 8.249 6.881] CP -[8.794 4.915 9.314 5.242 9.809 7.864] CP -[10.305 10.485 10.652 12.615 10.850 14.253] CP -[11.048 15.891 11.593 15.236 12.485 12.287] CP -[13.377 9.338 14.293 8.355 15.234 9.338] CP -[16.176 10.321 16.795 10.649 17.092 10.321] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.038 28.554 0.000 0.000 20.643 19.768 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.812] CP -[0.590 12.338 1.081 11.547 1.475 10.440] CP -[1.868 9.332 2.175 8.344 2.397 7.474] CP -[2.618 6.604 2.839 5.378 3.061 3.796] CP -[3.282 2.214 3.565 1.186 3.909 0.711] CP -[4.253 0.237 4.597 0.672 4.942 2.016] CP -[5.286 3.361 5.556 4.785 5.753 6.287] CP -[5.950 7.790 6.110 8.739 6.232 9.135] CP -[6.355 9.530 6.491 10.479 6.638 11.982] CP -[6.786 13.485 7.068 15.146 7.486 16.965] CP -[7.904 18.784 8.224 19.852 8.445 20.168] CP -[8.667 20.484 8.962 20.524 9.330 20.287] CP -[9.699 20.049 9.945 19.654 10.068 19.100] CP -[10.191 18.547 10.400 17.321 10.695 15.422] CP -[10.990 13.524 11.273 12.022 11.543 10.914] CP -[11.814 9.807 12.023 8.779 12.170 7.830] CP -[12.318 6.881 12.490 6.920 12.687 7.948] CP -[12.883 8.976 13.092 10.163 13.314 11.507] CP -[13.535 12.852 13.805 13.801 14.125 14.355] CP -[14.445 14.908 14.678 14.394 14.826 12.812] CP -[14.973 11.231 15.109 9.886 15.231 8.779] CP -[15.354 7.671 15.576 7.671 15.895 8.779] CP -[16.215 9.886 16.498 11.151 16.744 12.575] CP -[16.989 13.999 17.235 14.790 17.481 14.948] CP -[17.727 15.106 17.936 14.592 18.108 13.406] CP -[18.280 12.219 18.551 11.428 18.920 11.033] CP -[19.288 10.637 19.571 11.072 19.768 12.338] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.688 48.593 0.000 0.000 17.129 21.214 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.343] CP -[1.247 3.114] CP -[2.495 17.129 ] CP -[3.743 0.000 ] CP -[4.991 17.129 ] CP -[6.239 1.557 ] CP -[7.487 17.129 ] CP -[8.735 0.000 ] CP -[9.983 17.129 ] CP -[11.231 0.000 ] CP -[12.479 17.129 ] CP -[13.727 1.557 ] CP -[14.975 17.129 ] CP -[16.223 4.671 ] CP -[17.471 15.572 ] CP -[18.719 6.228 ] CP -[19.967 12.457 ] CP -[21.214 9.343 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 46.901 69.692 0.000 0.000 6.787 18.645 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 1.850] CP -[0.305 1.233] CP -[0.305 0.616 ] CP -[0.611 0.616 ] CP -[0.611 -0.000 ] CP -[0.917 -0.000 ] CP -[0.917 0.616 ] CP -[1.222 0.616 ] CP -[1.528 1.233 ] CP -[1.834 1.233 ] CP -[1.834 1.850 ] CP -[2.139 1.850 ] CP -[2.445 1.850 ] CP -[2.445 2.468 ] CP -[2.751 2.468 ] CP -[2.751 3.085 ] CP -[2.751 3.702 ] CP -[3.056 4.936 ] CP -[3.362 4.936 ] CP -[3.668 4.936 ] CP -[3.973 4.936 ] CP -[4.279 4.936 ] CP -[4.585 4.936 ] CP -[4.890 4.319 ] CP -[4.890 3.702 ] CP -[5.196 3.702 ] CP -[5.196 3.085 ] CP -[5.502 3.085 ] CP -[5.502 2.468 ] CP -[5.807 2.468 ] CP -[6.113 2.468 ] CP -[7.030 2.468 ] CP -[7.336 3.085 ] CP -[7.336 3.702 ] CP -[7.641 3.702 ] CP -[7.641 4.319 ] CP -[7.947 4.319 ] CP -[7.947 4.936 ] CP -[8.253 4.936 ] CP -[8.558 4.936 ] CP -[8.558 5.553 ] CP -[8.864 5.553 ] CP -[8.864 4.936 ] CP -[8.864 4.319 ] CP -[9.170 3.702 ] CP -[9.170 4.319 ] CP -[9.475 4.319 ] CP -[9.475 4.936 ] CP -[9.781 4.936 ] CP -[9.781 5.553 ] CP -[10.087 5.553 ] CP -[10.087 6.170 ] CP -[10.392 6.170 ] CP -[10.698 6.170 ] CP -[11.004 5.553 ] CP -[11.004 4.936 ] CP -[11.004 4.319 ] CP -[11.309 4.319 ] CP -[11.615 4.319 ] CP -[11.615 3.702 ] CP -[11.921 3.702 ] CP -[12.226 3.702 ] CP -[12.532 3.702 ] CP -[12.838 3.702 ] CP -[13.143 3.702 ] CP -[13.143 4.319 ] CP -[13.449 4.936 ] CP -[13.449 5.553 ] CP -[13.755 5.553 ] CP -[13.755 6.170 ] CP -[14.060 6.170 ] CP -[14.060 6.787 ] CP -[14.366 6.787 ] CP -[14.672 6.787 ] CP -[14.977 6.787 ] CP -[14.977 6.170 ] CP -[14.977 5.553 ] CP -[14.977 4.936 ] CP -[14.977 4.319 ] CP -[14.977 3.702 ] CP -[14.977 3.085 ] CP -[14.977 2.468 ] CP -[14.977 1.850 ] CP -[15.283 1.850 ] CP -[15.589 1.850 ] CP -[16.200 1.233 ] CP -[16.506 1.233 ] CP -[16.506 1.850 ] CP -[16.506 2.468 ] CP -[16.811 2.468 ] CP -[17.117 2.468 ] CP -[17.117 3.085 ] CP -[17.117 3.702 ] CP -[17.423 3.702 ] CP -[17.728 3.702 ] CP -[17.728 4.319 ] CP -[18.034 4.319 ] CP -[18.340 4.319 ] CP -[18.645 4.319 ] CP -[18.645 3.702 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 41.636 88.717 0.000 0.000 20.120 26.701 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.001] CP -[1.012 3.000 1.696 1.235 2.053 3.706] CP -[2.411 6.177 2.768 8.383 3.125 10.324] CP -[3.482 12.266 3.795 11.825 4.063 9.001] CP -[4.331 6.177 4.524 4.412 4.643 3.706] CP -[4.762 3.000 5.030 4.235 5.447 7.412] CP -[5.864 10.589 6.161 13.501 6.340 16.149] CP -[6.519 18.796 6.801 18.973 7.188 16.678] CP -[7.575 14.384 8.066 11.295 8.662 7.412] CP -[9.257 3.529 9.704 1.853 10.001 2.382] CP -[10.299 2.912 10.567 4.235 10.805 6.353] CP -[11.043 8.471 11.371 9.618 11.787 9.795] CP -[12.204 9.971 12.591 9.618 12.948 8.736] CP -[13.305 7.853 13.648 7.853 13.975 8.736] CP -[14.303 9.618 14.615 9.883 14.913 9.530] CP -[15.211 9.177 15.672 9.442 16.297 10.324] CP -[16.922 11.207 17.443 11.560 17.860 11.383] CP -[18.277 11.207 18.664 10.766 19.021 10.060] CP -[19.378 9.354 19.720 8.559 20.048 7.677] CP -[20.375 6.794 20.703 6.883 21.030 7.942] CP -[21.358 9.001 21.730 9.795 22.146 10.324] CP -[22.563 10.854 22.980 10.677 23.397 9.795] CP -[23.813 8.912 24.185 8.736 24.513 9.265] CP -[24.840 9.795 25.570 10.060 26.701 10.060] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 37.599 115.597 0.000 0.000 29.887 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.990] CP -[0.410 4.663 0.846 0.317 1.308 0.953] CP -[1.770 1.589 2.180 4.239 2.540 8.902] CP -[2.899 13.566 3.489 18.229 4.310 22.892] CP -[5.131 27.556 5.747 29.039 6.158 27.344] CP -[6.568 25.648 6.927 22.786 7.235 18.759] CP -[7.543 14.731 7.979 11.446 8.544 8.902] CP -[9.108 6.359 9.647 6.783 10.160 10.174] CP -[10.673 13.566 11.033 16.321 11.238 18.441] CP -[11.443 20.561 12.008 19.713 12.931 15.897] CP -[13.855 12.082 14.804 10.810 15.779 12.082] CP -[16.754 13.354 17.396 13.778 17.704 13.354] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.451 133.486 0.000 0.000 24.951 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.679] CP -[0.410 3.893 0.846 0.265 1.308 0.796] CP -[1.770 1.327 2.180 3.539 2.540 7.432] CP -[2.899 11.325 3.489 15.218 4.310 19.111] CP -[5.131 23.005 5.747 24.243 6.157 22.828] CP -[6.568 21.412 6.927 19.023 7.235 15.661] CP -[7.543 12.298 7.979 9.555 8.544 7.432] CP -[9.108 5.308 9.647 5.662 10.160 8.494] CP -[10.673 11.325 11.033 13.626 11.238 15.395] CP -[11.443 17.165 12.008 16.457 12.931 13.272] CP -[13.855 10.086 14.804 9.025 15.779 10.086] CP -[16.754 11.148 17.396 11.502 17.704 11.148] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 40.844 151.986 0.000 0.000 20.930 16.481 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.797] CP -[0.382 3.265 0.788 0.222 1.218 0.667] CP -[1.648 1.113 2.030 2.968 2.364 6.234] CP -[2.699 9.500 3.248 12.766 4.012 16.032] CP -[4.777 19.297 5.350 20.337 5.732 19.149] CP -[6.114 17.961 6.449 15.957 6.735 13.137] CP -[7.022 10.316 7.428 8.016 7.954 6.234] CP -[8.479 4.453 8.981 4.750 9.458 7.125] CP -[9.936 9.500 10.271 11.430 10.462 12.914] CP -[10.653 14.399 11.178 13.805 12.038 11.133] CP -[12.898 8.461 13.782 7.570 14.690 8.461] CP -[15.597 9.352 16.194 9.648 16.481 9.352] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 42.270 168.729 0.000 0.000 15.412 31.178 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[31.178 7.472] CP -[30.877 6.177 30.890 4.324 30.405 4.152] CP -[30.193 4.076 30.119 4.776 29.984 5.337] CP -[29.614 6.882 29.761 8.691 29.282 9.844] CP -[28.989 10.551 28.718 10.624 28.369 10.319] CP -[28.067 10.053 27.964 9.384 27.737 8.658] CP -[27.343 7.395 27.291 6.041 26.824 5.100] CP -[26.607 4.664 26.428 4.324 26.192 4.626] CP -[25.495 5.516 25.681 8.410 25.069 9.844] CP -[24.648 10.829 24.310 11.297 23.805 11.030] CP -[22.671 10.431 22.177 8.248 21.347 5.575] CP -[21.077 4.706 21.121 3.508 20.785 2.966] CP -[20.290 2.167 19.873 2.387 19.381 3.203] CP -[18.927 3.954 18.783 5.031 18.538 6.523] CP -[18.093 9.236 18.564 12.223 17.836 14.114] CP -[17.336 15.412 16.804 15.157 16.221 14.351] CP -[15.701 13.632 15.571 12.321 15.238 10.793] CP -[15.107 10.192 15.096 9.712 14.957 9.133] CP -[14.749 8.268 14.490 8.198 14.325 7.235] CP -[14.058 5.682 14.364 4.162 14.044 2.728] CP -[13.689 1.144 13.288 -0.000 12.710 0.356] CP -[11.450 1.134 11.397 5.467 10.533 8.658] CP -[10.075 10.348 9.942 11.881 9.339 12.928] CP -[8.798 13.866 8.385 14.128 7.794 13.639] CP -[7.012 12.991 6.757 11.223 6.109 9.607] CP -[5.747 8.706 5.572 8.066 5.196 7.235] CP -[4.673 6.079 4.397 5.151 3.791 4.626] CP -[3.261 4.166 2.921 4.220 2.387 4.626] CP -[1.825 5.053 1.599 6.149 1.053 6.761] CP -[0.655 7.206 0.410 7.195 0.000 7.472] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 9.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.000 33.942 0.000 0.000 16.000 19.256 rect -%@EndRect -gsave -43.571 17.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -9.557 4.000 S -(c) -5.667 4.000 S -(e) 0.546 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 17.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 23.497 71.228 9.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.613 30.914 0.000 0.000 16.000 157.262 rect -%@EndRect -gsave -109.545 87.613 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -78.585 4.000 S -(a) -73.923 4.000 S -(\)) -67.709 4.000 S -( ) -63.047 4.000 S -(1) -59.547 4.000 S -(-) -52.547 4.000 S -(a) -47.885 4.000 S -(l) -41.671 4.000 S -(t) -37.781 4.000 S -(e) -33.892 4.000 S -(r) -27.678 4.000 S -(n) -23.016 4.000 S -(a) -16.016 4.000 S -(t) -9.802 4.000 S -(i) -5.912 4.000 S -(v) -2.023 4.000 S -(e) 4.976 4.000 S -(,) 11.190 4.000 S -( ) 14.690 4.000 S -(1) 18.190 4.000 S -(-) 25.190 4.000 S -(l) 29.852 4.000 S -(e) 33.742 4.000 S -(v) 39.956 4.000 S -(e) 46.956 4.000 S -(l) 53.170 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 165.496 11.312 0.000 0.000 23.100 17.092 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 10.813] CP -[0.396 3.604 0.817 0.245 1.263 0.737] CP -[1.709 1.228 2.105 3.276 2.452 6.881] CP -[2.799 10.485 3.369 14.089 4.161 17.694] CP -[4.954 21.298 5.548 22.445 5.945 21.134] CP -[6.341 19.823 6.688 17.612 6.985 14.499] CP -[7.283 11.386 7.704 8.847 8.249 6.881] CP -[8.794 4.915 9.314 5.242 9.809 7.864] CP -[10.305 10.485 10.652 12.615 10.850 14.253] CP -[11.048 15.891 11.593 15.236 12.485 12.287] CP -[13.377 9.338 14.293 8.355 15.234 9.338] CP -[16.176 10.321 16.795 10.649 17.092 10.321] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 163.038 28.554 0.000 0.000 20.643 19.768 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.812] CP -[0.590 12.338 1.081 11.547 1.475 10.440] CP -[1.868 9.332 2.175 8.344 2.397 7.474] CP -[2.618 6.604 2.839 5.378 3.061 3.796] CP -[3.282 2.214 3.565 1.186 3.909 0.711] CP -[4.253 0.237 4.597 0.672 4.942 2.016] CP -[5.286 3.361 5.556 4.785 5.753 6.287] CP -[5.950 7.790 6.110 8.739 6.232 9.135] CP -[6.355 9.530 6.491 10.479 6.638 11.982] CP -[6.786 13.485 7.068 15.146 7.486 16.965] CP -[7.904 18.784 8.224 19.852 8.445 20.168] CP -[8.667 20.484 8.962 20.524 9.330 20.287] CP -[9.699 20.049 9.945 19.654 10.068 19.100] CP -[10.191 18.547 10.400 17.321 10.695 15.422] CP -[10.990 13.524 11.273 12.022 11.543 10.914] CP -[11.814 9.807 12.023 8.779 12.170 7.830] CP -[12.318 6.881 12.490 6.920 12.687 7.948] CP -[12.883 8.976 13.092 10.163 13.314 11.507] CP -[13.535 12.852 13.805 13.801 14.125 14.355] CP -[14.445 14.908 14.678 14.394 14.826 12.812] CP -[14.973 11.231 15.109 9.886 15.231 8.779] CP -[15.354 7.671 15.576 7.671 15.895 8.779] CP -[16.215 9.886 16.498 11.151 16.744 12.575] CP -[16.989 13.999 17.235 14.790 17.481 14.948] CP -[17.727 15.106 17.936 14.592 18.108 13.406] CP -[18.280 12.219 18.551 11.428 18.920 11.033] CP -[19.288 10.637 19.571 11.072 19.768 12.338] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 166.688 48.593 0.000 0.000 17.129 21.214 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.343] CP -[1.247 3.114] CP -[2.495 17.129 ] CP -[3.743 0.000 ] CP -[4.991 17.129 ] CP -[6.239 1.557 ] CP -[7.487 17.129 ] CP -[8.735 0.000 ] CP -[9.983 17.129 ] CP -[11.231 0.000 ] CP -[12.479 17.129 ] CP -[13.727 1.557 ] CP -[14.975 17.129 ] CP -[16.223 4.671 ] CP -[17.471 15.572 ] CP -[18.719 6.228 ] CP -[19.967 12.457 ] CP -[21.214 9.343 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 173.901 69.692 0.000 0.000 6.787 18.645 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 1.850] CP -[0.305 1.233] CP -[0.305 0.616 ] CP -[0.611 0.616 ] CP -[0.611 -0.000 ] CP -[0.917 -0.000 ] CP -[0.917 0.616 ] CP -[1.222 0.616 ] CP -[1.528 1.233 ] CP -[1.834 1.233 ] CP -[1.834 1.850 ] CP -[2.139 1.850 ] CP -[2.445 1.850 ] CP -[2.445 2.468 ] CP -[2.751 2.468 ] CP -[2.751 3.085 ] CP -[2.751 3.702 ] CP -[3.056 4.936 ] CP -[3.362 4.936 ] CP -[3.668 4.936 ] CP -[3.973 4.936 ] CP -[4.279 4.936 ] CP -[4.585 4.936 ] CP -[4.890 4.319 ] CP -[4.890 3.702 ] CP -[5.196 3.702 ] CP -[5.196 3.085 ] CP -[5.502 3.085 ] CP -[5.502 2.468 ] CP -[5.807 2.468 ] CP -[6.113 2.468 ] CP -[7.030 2.468 ] CP -[7.336 3.085 ] CP -[7.336 3.702 ] CP -[7.641 3.702 ] CP -[7.641 4.319 ] CP -[7.947 4.319 ] CP -[7.947 4.936 ] CP -[8.253 4.936 ] CP -[8.558 4.936 ] CP -[8.558 5.553 ] CP -[8.864 5.553 ] CP -[8.864 4.936 ] CP -[8.864 4.319 ] CP -[9.170 3.702 ] CP -[9.170 4.319 ] CP -[9.475 4.319 ] CP -[9.475 4.936 ] CP -[9.781 4.936 ] CP -[9.781 5.553 ] CP -[10.087 5.553 ] CP -[10.087 6.170 ] CP -[10.392 6.170 ] CP -[10.698 6.170 ] CP -[11.004 5.553 ] CP -[11.004 4.936 ] CP -[11.004 4.319 ] CP -[11.309 4.319 ] CP -[11.615 4.319 ] CP -[11.615 3.702 ] CP -[11.921 3.702 ] CP -[12.226 3.702 ] CP -[12.532 3.702 ] CP -[12.838 3.702 ] CP -[13.143 3.702 ] CP -[13.143 4.319 ] CP -[13.449 4.936 ] CP -[13.449 5.553 ] CP -[13.755 5.553 ] CP -[13.755 6.170 ] CP -[14.060 6.170 ] CP -[14.060 6.787 ] CP -[14.366 6.787 ] CP -[14.672 6.787 ] CP -[14.977 6.787 ] CP -[14.977 6.170 ] CP -[14.977 5.553 ] CP -[14.977 4.936 ] CP -[14.977 4.319 ] CP -[14.977 3.702 ] CP -[14.977 3.085 ] CP -[14.977 2.468 ] CP -[14.977 1.850 ] CP -[15.283 1.850 ] CP -[15.589 1.850 ] CP -[16.200 1.233 ] CP -[16.506 1.233 ] CP -[16.506 1.850 ] CP -[16.506 2.468 ] CP -[16.811 2.468 ] CP -[17.117 2.468 ] CP -[17.117 3.085 ] CP -[17.117 3.702 ] CP -[17.423 3.702 ] CP -[17.728 3.702 ] CP -[17.728 4.319 ] CP -[18.034 4.319 ] CP -[18.340 4.319 ] CP -[18.645 4.319 ] CP -[18.645 3.702 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 168.636 88.717 0.000 0.000 20.120 26.701 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.001] CP -[1.012 3.000 1.696 1.235 2.053 3.706] CP -[2.411 6.177 2.768 8.383 3.125 10.324] CP -[3.482 12.266 3.795 11.825 4.063 9.001] CP -[4.331 6.177 4.524 4.412 4.643 3.706] CP -[4.762 3.000 5.030 4.235 5.447 7.412] CP -[5.864 10.589 6.161 13.501 6.340 16.149] CP -[6.519 18.796 6.801 18.973 7.188 16.678] CP -[7.575 14.384 8.066 11.295 8.662 7.412] CP -[9.257 3.529 9.704 1.853 10.001 2.382] CP -[10.299 2.912 10.567 4.235 10.805 6.353] CP -[11.043 8.471 11.371 9.618 11.787 9.795] CP -[12.204 9.971 12.591 9.618 12.948 8.736] CP -[13.305 7.853 13.648 7.853 13.975 8.736] CP -[14.303 9.618 14.615 9.883 14.913 9.530] CP -[15.211 9.177 15.672 9.442 16.297 10.324] CP -[16.922 11.207 17.443 11.560 17.860 11.383] CP -[18.277 11.207 18.664 10.766 19.021 10.060] CP -[19.378 9.354 19.720 8.559 20.048 7.677] CP -[20.375 6.794 20.703 6.883 21.030 7.942] CP -[21.358 9.001 21.730 9.795 22.146 10.324] CP -[22.563 10.854 22.980 10.677 23.397 9.795] CP -[23.813 8.912 24.185 8.736 24.513 9.265] CP -[24.840 9.795 25.570 10.060 26.701 10.060] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 164.599 115.597 0.000 0.000 29.887 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.990] CP -[0.410 4.663 0.846 0.317 1.308 0.953] CP -[1.770 1.589 2.180 4.239 2.540 8.902] CP -[2.899 13.566 3.489 18.229 4.310 22.892] CP -[5.131 27.556 5.747 29.039 6.158 27.344] CP -[6.568 25.648 6.927 22.786 7.235 18.759] CP -[7.543 14.731 7.979 11.446 8.544 8.902] CP -[9.108 6.359 9.647 6.783 10.160 10.174] CP -[10.673 13.566 11.033 16.321 11.238 18.441] CP -[11.443 20.561 12.008 19.713 12.931 15.897] CP -[13.855 12.082 14.804 10.810 15.779 12.082] CP -[16.754 13.354 17.396 13.778 17.704 13.354] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 166.451 133.486 0.000 0.000 24.951 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.679] CP -[0.410 3.893 0.846 0.265 1.308 0.796] CP -[1.770 1.327 2.180 3.539 2.540 7.432] CP -[2.899 11.325 3.489 15.218 4.310 19.111] CP -[5.131 23.005 5.747 24.243 6.157 22.828] CP -[6.568 21.412 6.927 19.023 7.235 15.661] CP -[7.543 12.298 7.979 9.555 8.544 7.432] CP -[9.108 5.308 9.647 5.662 10.160 8.494] CP -[10.673 11.325 11.033 13.626 11.238 15.395] CP -[11.443 17.165 12.008 16.457 12.931 13.272] CP -[13.855 10.086 14.804 9.025 15.779 10.086] CP -[16.754 11.148 17.396 11.502 17.704 11.148] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 167.844 151.986 0.000 0.000 20.930 16.481 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.797] CP -[0.382 3.265 0.788 0.222 1.218 0.667] CP -[1.648 1.113 2.030 2.968 2.364 6.234] CP -[2.699 9.500 3.248 12.766 4.012 16.032] CP -[4.777 19.297 5.350 20.337 5.732 19.149] CP -[6.114 17.961 6.449 15.957 6.735 13.137] CP -[7.022 10.316 7.428 8.016 7.954 6.234] CP -[8.479 4.453 8.981 4.750 9.458 7.125] CP -[9.936 9.500 10.271 11.430 10.462 12.914] CP -[10.653 14.399 11.178 13.805 12.038 11.133] CP -[12.898 8.461 13.782 7.570 14.690 8.461] CP -[15.597 9.352 16.194 9.648 16.481 9.352] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 169.270 168.729 0.000 0.000 15.412 31.178 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[31.178 7.472] CP -[30.877 6.177 30.890 4.324 30.405 4.152] CP -[30.193 4.076 30.119 4.776 29.984 5.337] CP -[29.614 6.882 29.761 8.691 29.282 9.844] CP -[28.989 10.551 28.718 10.624 28.369 10.319] CP -[28.067 10.053 27.964 9.384 27.737 8.658] CP -[27.343 7.395 27.291 6.041 26.824 5.100] CP -[26.607 4.664 26.428 4.324 26.192 4.626] CP -[25.495 5.516 25.681 8.410 25.069 9.844] CP -[24.648 10.829 24.310 11.297 23.805 11.030] CP -[22.671 10.431 22.177 8.248 21.347 5.575] CP -[21.077 4.706 21.121 3.508 20.785 2.966] CP -[20.290 2.167 19.873 2.387 19.381 3.203] CP -[18.927 3.954 18.783 5.031 18.538 6.523] CP -[18.093 9.236 18.564 12.223 17.836 14.114] CP -[17.336 15.412 16.804 15.157 16.221 14.351] CP -[15.701 13.632 15.571 12.321 15.238 10.793] CP -[15.107 10.192 15.096 9.712 14.957 9.133] CP -[14.749 8.268 14.490 8.198 14.325 7.235] CP -[14.058 5.682 14.364 4.162 14.044 2.728] CP -[13.689 1.144 13.288 -0.000 12.710 0.356] CP -[11.450 1.134 11.397 5.467 10.533 8.658] CP -[10.075 10.348 9.942 11.881 9.339 12.928] CP -[8.798 13.866 8.385 14.128 7.794 13.639] CP -[7.012 12.991 6.757 11.223 6.109 9.607] CP -[5.747 8.706 5.572 8.066 5.196 7.235] CP -[4.673 6.079 4.397 5.151 3.791 4.626] CP -[3.261 4.166 2.921 4.220 2.387 4.626] CP -[1.825 5.053 1.599 6.149 1.053 6.761] CP -[0.655 7.206 0.410 7.195 0.000 7.472] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 118.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 33.942 0.000 0.000 16.000 19.256 rect -%@EndRect -gsave -43.571 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -9.557 4.000 S -(c) -5.667 4.000 S -(e) 0.546 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 132.497 71.228 118.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 206.613 30.914 0.000 0.000 16.000 136.431 rect -%@EndRect -gsave -99.130 214.613 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -67.585 4.000 S -(b) -62.923 4.000 S -(\)) -55.923 4.000 S -( ) -51.261 4.000 S -(1) -47.761 4.000 S -(-) -40.761 4.000 S -(a) -36.099 4.000 S -(l) -29.885 4.000 S -(t) -25.995 4.000 S -(e) -22.106 4.000 S -(r) -15.892 4.000 S -(n) -11.230 4.000 S -(a) -4.230 4.000 S -(t) 1.983 4.000 S -(i) 5.873 4.000 S -(v) 9.762 4.000 S -(e) 16.762 4.000 S -(,) 22.976 4.000 S -( ) 26.476 4.000 S -(2) 29.976 4.000 S -(-) 36.976 4.000 S -(l) 41.638 4.000 S -(e) 45.528 4.000 S -(v) 51.742 4.000 S -(e) 58.742 4.000 S -(l) 64.956 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 19.942 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -26.549 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -6.557 4.000 S -(y) -0.343 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 146.497 71.228 132.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 55.942 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -58.666 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 82.942 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -86.442 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(k) -2.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 102.942 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -105.273 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(r) -1.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 131.942 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -137.387 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.557 4.000 S -(y) -0.667 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 176.942 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -182.387 140.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.557 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.228 146.497 98.228 132.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 113.228 146.497 113.228 132.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 167.228 146.497 167.228 132.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 44.228 146.497 44.228 132.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 317.496 11.312 0.000 0.000 23.100 17.092 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[-0.000 10.813] CP -[0.396 3.604 0.817 0.245 1.263 0.737] CP -[1.709 1.228 2.105 3.276 2.452 6.881] CP -[2.799 10.485 3.369 14.089 4.161 17.694] CP -[4.954 21.298 5.548 22.445 5.945 21.134] CP -[6.341 19.823 6.688 17.612 6.985 14.499] CP -[7.283 11.386 7.704 8.847 8.249 6.881] CP -[8.794 4.915 9.314 5.242 9.809 7.864] CP -[10.305 10.485 10.652 12.615 10.850 14.253] CP -[11.048 15.891 11.593 15.236 12.485 12.287] CP -[13.377 9.338 14.293 8.355 15.234 9.338] CP -[16.176 10.321 16.795 10.649 17.092 10.321] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 315.038 28.554 0.000 0.000 20.643 19.768 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.812] CP -[0.590 12.338 1.081 11.547 1.475 10.440] CP -[1.868 9.332 2.175 8.344 2.397 7.474] CP -[2.618 6.604 2.839 5.378 3.061 3.796] CP -[3.282 2.214 3.565 1.186 3.909 0.711] CP -[4.253 0.237 4.597 0.672 4.942 2.016] CP -[5.286 3.361 5.556 4.785 5.753 6.287] CP -[5.950 7.790 6.110 8.739 6.232 9.135] CP -[6.355 9.530 6.491 10.479 6.638 11.982] CP -[6.786 13.485 7.068 15.146 7.486 16.965] CP -[7.904 18.784 8.224 19.852 8.445 20.168] CP -[8.667 20.484 8.962 20.524 9.330 20.287] CP -[9.699 20.049 9.945 19.654 10.068 19.100] CP -[10.191 18.547 10.400 17.321 10.695 15.422] CP -[10.990 13.524 11.273 12.022 11.543 10.914] CP -[11.814 9.807 12.023 8.779 12.170 7.830] CP -[12.318 6.881 12.490 6.920 12.687 7.948] CP -[12.883 8.976 13.092 10.163 13.314 11.507] CP -[13.535 12.852 13.805 13.801 14.125 14.355] CP -[14.445 14.908 14.678 14.394 14.826 12.812] CP -[14.973 11.231 15.109 9.886 15.231 8.779] CP -[15.354 7.671 15.576 7.671 15.895 8.779] CP -[16.215 9.886 16.498 11.151 16.744 12.575] CP -[16.989 13.999 17.235 14.790 17.481 14.948] CP -[17.727 15.106 17.936 14.592 18.108 13.406] CP -[18.280 12.219 18.551 11.428 18.920 11.033] CP -[19.288 10.637 19.571 11.072 19.768 12.338] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 318.688 48.593 0.000 0.000 17.129 21.214 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.343] CP -[1.247 3.114] CP -[2.495 17.129 ] CP -[3.743 0.000 ] CP -[4.991 17.129 ] CP -[6.239 1.557 ] CP -[7.487 17.129 ] CP -[8.735 0.000 ] CP -[9.983 17.129 ] CP -[11.231 0.000 ] CP -[12.479 17.129 ] CP -[13.727 1.557 ] CP -[14.975 17.129 ] CP -[16.223 4.671 ] CP -[17.471 15.572 ] CP -[18.719 6.228 ] CP -[19.967 12.457 ] CP -[21.214 9.343 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 325.901 69.692 0.000 0.000 6.787 18.645 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 1.850] CP -[0.305 1.233] CP -[0.305 0.616 ] CP -[0.611 0.616 ] CP -[0.611 -0.000 ] CP -[0.917 -0.000 ] CP -[0.917 0.616 ] CP -[1.222 0.616 ] CP -[1.528 1.233 ] CP -[1.834 1.233 ] CP -[1.834 1.850 ] CP -[2.139 1.850 ] CP -[2.445 1.850 ] CP -[2.445 2.468 ] CP -[2.751 2.468 ] CP -[2.751 3.085 ] CP -[2.751 3.702 ] CP -[3.056 4.936 ] CP -[3.362 4.936 ] CP -[3.668 4.936 ] CP -[3.973 4.936 ] CP -[4.279 4.936 ] CP -[4.585 4.936 ] CP -[4.890 4.319 ] CP -[4.890 3.702 ] CP -[5.196 3.702 ] CP -[5.196 3.085 ] CP -[5.502 3.085 ] CP -[5.502 2.468 ] CP -[5.807 2.468 ] CP -[6.113 2.468 ] CP -[7.030 2.468 ] CP -[7.336 3.085 ] CP -[7.336 3.702 ] CP -[7.641 3.702 ] CP -[7.641 4.319 ] CP -[7.947 4.319 ] CP -[7.947 4.936 ] CP -[8.253 4.936 ] CP -[8.558 4.936 ] CP -[8.558 5.553 ] CP -[8.864 5.553 ] CP -[8.864 4.936 ] CP -[8.864 4.319 ] CP -[9.170 3.702 ] CP -[9.170 4.319 ] CP -[9.475 4.319 ] CP -[9.475 4.936 ] CP -[9.781 4.936 ] CP -[9.781 5.553 ] CP -[10.087 5.553 ] CP -[10.087 6.170 ] CP -[10.392 6.170 ] CP -[10.698 6.170 ] CP -[11.004 5.553 ] CP -[11.004 4.936 ] CP -[11.004 4.319 ] CP -[11.309 4.319 ] CP -[11.615 4.319 ] CP -[11.615 3.702 ] CP -[11.921 3.702 ] CP -[12.226 3.702 ] CP -[12.532 3.702 ] CP -[12.838 3.702 ] CP -[13.143 3.702 ] CP -[13.143 4.319 ] CP -[13.449 4.936 ] CP -[13.449 5.553 ] CP -[13.755 5.553 ] CP -[13.755 6.170 ] CP -[14.060 6.170 ] CP -[14.060 6.787 ] CP -[14.366 6.787 ] CP -[14.672 6.787 ] CP -[14.977 6.787 ] CP -[14.977 6.170 ] CP -[14.977 5.553 ] CP -[14.977 4.936 ] CP -[14.977 4.319 ] CP -[14.977 3.702 ] CP -[14.977 3.085 ] CP -[14.977 2.468 ] CP -[14.977 1.850 ] CP -[15.283 1.850 ] CP -[15.589 1.850 ] CP -[16.200 1.233 ] CP -[16.506 1.233 ] CP -[16.506 1.850 ] CP -[16.506 2.468 ] CP -[16.811 2.468 ] CP -[17.117 2.468 ] CP -[17.117 3.085 ] CP -[17.117 3.702 ] CP -[17.423 3.702 ] CP -[17.728 3.702 ] CP -[17.728 4.319 ] CP -[18.034 4.319 ] CP -[18.340 4.319 ] CP -[18.645 4.319 ] CP -[18.645 3.702 ] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 320.636 88.717 0.000 0.000 20.120 26.701 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.001] CP -[1.012 3.000 1.696 1.235 2.053 3.706] CP -[2.411 6.177 2.768 8.383 3.125 10.324] CP -[3.482 12.266 3.795 11.825 4.063 9.001] CP -[4.331 6.177 4.524 4.412 4.643 3.706] CP -[4.762 3.000 5.030 4.235 5.447 7.412] CP -[5.864 10.589 6.161 13.501 6.340 16.149] CP -[6.519 18.796 6.801 18.973 7.188 16.678] CP -[7.575 14.384 8.066 11.295 8.662 7.412] CP -[9.257 3.529 9.704 1.853 10.001 2.382] CP -[10.299 2.912 10.567 4.235 10.805 6.353] CP -[11.043 8.471 11.371 9.618 11.787 9.795] CP -[12.204 9.971 12.591 9.618 12.948 8.736] CP -[13.305 7.853 13.648 7.853 13.975 8.736] CP -[14.303 9.618 14.615 9.883 14.913 9.530] CP -[15.211 9.177 15.672 9.442 16.297 10.324] CP -[16.922 11.207 17.443 11.560 17.860 11.383] CP -[18.277 11.207 18.664 10.766 19.021 10.060] CP -[19.378 9.354 19.720 8.559 20.048 7.677] CP -[20.375 6.794 20.703 6.883 21.030 7.942] CP -[21.358 9.001 21.730 9.795 22.146 10.324] CP -[22.563 10.854 22.980 10.677 23.397 9.795] CP -[23.813 8.912 24.185 8.736 24.513 9.265] CP -[24.840 9.795 25.570 10.060 26.701 10.060] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 316.599 115.597 0.000 0.000 29.887 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.990] CP -[0.410 4.663 0.846 0.317 1.308 0.953] CP -[1.770 1.589 2.180 4.239 2.540 8.902] CP -[2.899 13.566 3.489 18.229 4.310 22.892] CP -[5.131 27.556 5.747 29.039 6.158 27.344] CP -[6.568 25.648 6.927 22.786 7.235 18.759] CP -[7.543 14.731 7.979 11.446 8.544 8.902] CP -[9.108 6.359 9.647 6.783 10.160 10.174] CP -[10.673 13.566 11.033 16.321 11.238 18.441] CP -[11.443 20.561 12.008 19.713 12.931 15.897] CP -[13.855 12.082 14.804 10.810 15.779 12.082] CP -[16.754 13.354 17.396 13.778 17.704 13.354] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 318.451 133.486 0.000 0.000 24.951 17.704 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.679] CP -[0.410 3.893 0.846 0.265 1.308 0.796] CP -[1.770 1.327 2.180 3.539 2.540 7.432] CP -[2.899 11.325 3.489 15.218 4.310 19.111] CP -[5.131 23.005 5.747 24.243 6.157 22.828] CP -[6.568 21.412 6.927 19.023 7.235 15.661] CP -[7.543 12.298 7.979 9.555 8.544 7.432] CP -[9.108 5.308 9.647 5.662 10.160 8.494] CP -[10.673 11.325 11.033 13.626 11.238 15.395] CP -[11.443 17.165 12.008 16.457 12.931 13.272] CP -[13.855 10.086 14.804 9.025 15.779 10.086] CP -[16.754 11.148 17.396 11.502 17.704 11.148] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 319.844 151.986 0.000 0.000 20.930 16.481 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.797] CP -[0.382 3.265 0.788 0.222 1.218 0.667] CP -[1.648 1.113 2.030 2.968 2.364 6.234] CP -[2.699 9.500 3.248 12.766 4.012 16.032] CP -[4.777 19.297 5.350 20.337 5.732 19.149] CP -[6.114 17.961 6.449 15.957 6.735 13.137] CP -[7.022 10.316 7.428 8.016 7.954 6.234] CP -[8.479 4.453 8.981 4.750 9.458 7.125] CP -[9.936 9.500 10.271 11.430 10.462 12.914] CP -[10.653 14.399 11.178 13.805 12.038 11.133] CP -[12.898 8.461 13.782 7.570 14.690 8.461] CP -[15.597 9.352 16.194 9.648 16.481 9.352] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 321.270 168.729 0.000 0.000 15.412 31.178 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[31.178 7.472] CP -[30.877 6.177 30.890 4.324 30.405 4.152] CP -[30.193 4.076 30.119 4.776 29.984 5.337] CP -[29.614 6.882 29.761 8.691 29.282 9.844] CP -[28.989 10.551 28.718 10.624 28.369 10.319] CP -[28.067 10.053 27.964 9.384 27.737 8.658] CP -[27.343 7.395 27.291 6.041 26.824 5.100] CP -[26.607 4.664 26.428 4.324 26.192 4.626] CP -[25.495 5.516 25.681 8.410 25.069 9.844] CP -[24.648 10.829 24.310 11.297 23.805 11.030] CP -[22.671 10.431 22.177 8.248 21.347 5.575] CP -[21.077 4.706 21.121 3.508 20.785 2.966] CP -[20.290 2.167 19.873 2.387 19.381 3.203] CP -[18.927 3.954 18.783 5.031 18.538 6.523] CP -[18.093 9.236 18.564 12.223 17.836 14.114] CP -[17.336 15.412 16.804 15.157 16.221 14.351] CP -[15.701 13.632 15.571 12.321 15.238 10.793] CP -[15.107 10.192 15.096 9.712 14.957 9.133] CP -[14.749 8.268 14.490 8.198 14.325 7.235] CP -[14.058 5.682 14.364 4.162 14.044 2.728] CP -[13.689 1.144 13.288 -0.000 12.710 0.356] CP -[11.450 1.134 11.397 5.467 10.533 8.658] CP -[10.075 10.348 9.942 11.881 9.339 12.928] CP -[8.798 13.866 8.385 14.128 7.794 13.639] CP -[7.012 12.991 6.757 11.223 6.109 9.607] CP -[5.747 8.706 5.572 8.066 5.196 7.235] CP -[4.673 6.079 4.397 5.151 3.791 4.626] CP -[3.261 4.166 2.921 4.220 2.387 4.626] CP -[1.825 5.053 1.599 6.149 1.053 6.761] CP -[0.655 7.206 0.410 7.195 0.000 7.472] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 288.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 288.000 33.942 0.000 0.000 16.000 24.875 rect -%@EndRect -gsave -46.380 296.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -11.557 4.000 S -(y) -5.343 4.000 S -(e) 1.656 4.000 S -(s) 7.870 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 288.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 296.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 302.497 71.228 288.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 358.613 30.914 0.000 0.000 16.000 135.645 rect -%@EndRect -gsave -98.737 366.613 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -67.585 4.000 S -(c) -62.923 4.000 S -(\)) -56.709 4.000 S -( ) -52.047 4.000 S -(3) -48.547 4.000 S -(-) -41.547 4.000 S -(a) -36.885 4.000 S -(l) -30.671 4.000 S -(t) -26.781 4.000 S -(e) -22.892 4.000 S -(r) -16.678 4.000 S -(n) -12.016 4.000 S -(a) -5.016 4.000 S -(t) 1.197 4.000 S -(i) 5.087 4.000 S -(v) 8.976 4.000 S -(e) 15.976 4.000 S -(,) 22.190 4.000 S -( ) 25.690 4.000 S -(1) 29.190 4.000 S -(-) 36.190 4.000 S -(l) 40.852 4.000 S -(e) 44.742 4.000 S -(v) 50.956 4.000 S -(e) 57.956 4.000 S -(l) 64.170 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 270.000 33.942 0.000 0.000 16.000 19.256 rect -%@EndRect -gsave -43.571 278.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -9.557 4.000 S -(c) -5.667 4.000 S -(e) 0.546 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 270.000 122.142 0.000 0.000 16.000 75.492 rect -%@EndRect -gsave -159.889 278.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -37.357 4.000 S -(r) -31.143 4.000 S -(e) -26.481 4.000 S -(a) -20.267 4.000 S -(m) -14.053 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 71.228 284.497 71.228 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.000 9.000 0.000 0.000 14.497 198.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.000 33.942 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -36.273 260.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -1.557 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.000 104.142 0.000 0.000 16.000 39.641 rect -%@EndRect -gsave -123.963 260.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.357 4.000 S -(c) -13.908 4.000 S -(r) -7.695 4.000 S -(e) -3.032 4.000 S -(a) 3.180 4.000 S -(m) 9.394 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.228 266.497 53.228 252.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/markovgen.eps b/HTKBook/HTKFigs/markovgen.eps deleted file mode 100644 index 07ab8f6..0000000 --- a/HTKBook/HTKFigs/markovgen.eps +++ /dev/null @@ -1,3730 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: markovgen.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:17:14 p.m. -%%BoundingBox: 0.000 522.500 395.000 792.000 -%%QDBoundingBox: 0.000 0.000 395.000 269.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 82.000 49.500 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 107.199 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 103.500 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -170.100 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 168.100 95.800 136.800 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -107.199 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 107.385 61.408 108.125 53.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 173.800 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 170.099 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -236.700 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.700 95.800 203.400 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -173.800 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 173.986 61.408 174.725 53.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 240.400 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 236.699 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -303.300 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 301.300 95.800 270.000 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -240.400 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.586 61.408 241.325 53.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 31.000 307.000 0.000 0.000 56.699 24.974 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.600 303.300 0.000 0.000 32.399 33.300 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.900 95.800 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 367.900 95.800 336.599 95.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -307.000 63.399 moveto -/Triangular 14.099 7.049 false 275.357 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 307.186 61.408 307.925 53.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -103.500 96.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 101.500 96.000 76.500 96.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 82.000 367.500 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 78.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -83.500 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 86.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -93.500 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -7.000 4.000 S -(2) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 141.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -146.000 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 150.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -157.000 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(3) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 209.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -214.000 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 218.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -225.000 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 273.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -278.500 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 283.500 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -290.500 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -7.000 4.000 S -(5) -1.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 340.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -345.000 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 349.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -356.000 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -6.500 4.000 S -(6) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 108.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -113.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 117.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -124.000 15.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(2) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 175.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -180.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.000 184.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -191.000 16.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(3) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 242.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -247.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.000 251.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -258.000 16.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -6.000 4.000 S -(4) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 0.500 309.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -314.000 9.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 10.000 318.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -325.000 16.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -6.000 4.000 S -(5) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 58.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -63.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 115.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -120.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 183.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -188.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 248.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -253.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 316.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -321.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -5.000 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 87.000 376.500 0.000 0.000 19.000 10.000 rect -%@EndRect -gsave -381.500 96.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -5.000 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 126.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 126.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.500 129.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.500 129.000 177.500 129.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 193.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.000 193.500 0.000 0.000 38.000 119.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.500 129.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.500 129.000 244.500 129.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 166.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -171.000 141.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 175.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -182.000 147.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -6.500 4.000 S -(4) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 248.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -253.000 140.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.000 257.500 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -264.000 147.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.000 4.000 S -(5) 0.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 76.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 130.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 184.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 238.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 292.500 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 213.000 346.500 0.000 0.000 27.000 9.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 74.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -79.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 83.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -87.000 262.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 128.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -133.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 137.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -141.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 182.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -187.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 191.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -195.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 236.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -241.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 245.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -249.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 290.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -295.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 299.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -303.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 247.500 344.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -349.500 256.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 257.000 353.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -357.000 263.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -80.500 206.000 moveto -/Triangular 14.099 7.049 false 289.176 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.156 204.110 113.500 111.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.500 205.000 moveto -/Triangular 14.099 7.049 false 263.345 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.267 203.013 123.500 111.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.500 206.000 moveto -/Triangular 14.099 7.049 false 271.250 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.542 204.000 191.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -242.500 205.000 moveto -/Triangular 14.099 7.049 false 272.455 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.584 203.001 246.500 111.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -296.500 207.000 moveto -/Triangular 14.099 7.049 false 250.177 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.821 205.118 261.500 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -350.500 206.000 moveto -/Triangular 14.099 7.049 false 252.318 DrawArrowHead -} bind def -/SD {[6.000 5.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 349.891 204.094 320.500 112.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 90.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -95.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 99.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -103.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 110.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -115.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 119.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -123.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 105.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -109.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 124.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -128.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 345.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -350.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 354.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -358.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 365.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -370.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 375.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -379.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 360.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -364.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 381.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -385.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 134.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -139.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 143.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -147.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 154.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -159.500 182.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.500 164.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -168.000 188.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 149.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -153.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 175.000 170.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -174.000 184.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 191.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -196.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 200.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -204.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 211.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -216.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 221.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -225.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 206.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -210.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 227.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -231.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 244.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -249.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 253.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -257.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 264.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -269.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 274.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -278.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 259.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -263.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 279.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -283.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 289.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -294.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.000 298.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -302.000 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.500 309.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -314.500 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.000 319.500 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -323.000 188.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 304.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -308.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 174.500 325.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -329.000 183.500 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 23.000 18.500 0.000 0.000 46.000 49.000 rect -%@EndRect -gsave -43.000 46.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -21.662 -11.000 S -(a) -9.213 -11.000 S -(r) -3.000 -11.000 S -(k) 1.662 -11.000 S -(o) 8.662 -11.000 S -(v) 15.662 -11.000 S -( ) 22.662 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -17.775 4.000 S -(o) -5.327 4.000 S -(d) 1.672 4.000 S -(e) 8.672 4.000 S -(l) 14.886 4.000 S -( ) 18.775 4.000 S -grestore -restore -save -gsave -43.000 46.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -14.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -6.106 19.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 210.000 0.500 0.000 0.000 31.000 70.000 rect -%@EndRect -gsave -35.500 225.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -34.213 -4.000 S -(b) -24.103 -4.000 S -(s) -17.103 -4.000 S -(e) -11.655 -4.000 S -(r) -5.441 -4.000 S -(v) -0.779 -4.000 S -(a) 6.220 -4.000 S -(t) 12.434 -4.000 S -(i) 16.324 -4.000 S -(o) 20.213 -4.000 S -(n) 27.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -26.820 11.000 S -(e) -19.034 11.000 S -(q) -12.820 11.000 S -(u) -5.820 11.000 S -(e) 1.179 11.000 S -(n) 7.393 11.000 S -(c) 14.393 11.000 S -(e) 20.606 11.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/melfbank.eps b/HTKBook/HTKFigs/melfbank.eps deleted file mode 100644 index 28e6eca..0000000 --- a/HTKBook/HTKFigs/melfbank.eps +++ /dev/null @@ -1,2031 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: melfbank.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:2/5/95 3:37:33 p.m. -%%BoundingBox: 62.500 587.500 426.234 738.000 -%%QDBoundingBox: 62.500 54.000 426.234 204.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 81.500 0.000 0.000 14.000 9.333 rect -%@EndRect -gsave -86.166 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 90.500 0.000 0.000 11.000 4.500 rect -%@EndRect -gsave -92.750 183.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 305.500 0.000 0.000 14.000 9.333 rect -%@EndRect -gsave -310.166 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 315.000 0.000 0.000 11.000 5.005 rect -%@EndRect -gsave -317.502 183.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -2.500 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 54.000 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 56.000 72.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 144.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 367.000 144.000 72.000 144.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 138.000 378.000 0.000 0.000 14.000 19.318 rect -%@EndRect -gsave -387.659 145.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -9.500 3.000 S -(r) -5.503 3.000 S -(e) -1.507 3.000 S -(q) 3.818 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 72.000 72.000 72.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 63.000 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -66.000 75.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -2.500 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 90.500 72.000 72.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 108.500 144.000 90.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 108.500 72.000 90.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 126.500 144.000 108.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 126.000 72.000 108.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 144.000 144.000 126.000 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 144.500 72.000 126.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 162.500 144.000 144.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 171.500 72.000 144.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 198.500 144.000 171.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 203.000 72.000 171.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 234.500 144.000 203.000 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 234.500 72.000 198.500 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 270.500 144.000 234.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 270.000 72.000 234.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 306.000 144.000 270.000 72.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 310.500 72.000 270.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 351.000 144.000 310.500 72.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -90.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.999 169.000 90.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 107.999 169.000 108.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 169.000 126.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -144.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 143.999 169.000 144.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -171.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.999 169.000 171.000 117.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 196.000 0.000 0.000 14.000 9.333 rect -%@EndRect -gsave -200.666 179.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -4.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 206.000 0.000 0.000 11.000 3.019 rect -%@EndRect -gsave -207.509 183.000 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -0.981 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -202.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 201.999 169.000 202.000 117.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.999 169.000 234.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -270.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 269.999 169.000 270.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -311.000 171.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 310.999 169.000 311.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 72.000 0.000 0.000 18.000 252.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 189.000 99.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 189.000 189.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 189.000 216.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.000 189.000 297.000 171.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 135.000 0.000 0.000 14.000 9.000 rect -%@EndRect -gsave -139.500 180.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -4.500 3.000 S -(.) -1.500 3.000 S -(.) 1.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.000 252.000 0.000 0.000 14.000 9.000 rect -%@EndRect -gsave -256.500 180.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -4.500 3.000 S -(.) -1.500 3.000 S -(.) 1.500 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 164.000 333.000 0.000 0.000 31.000 93.234 rect -%@EndRect -gsave -379.617 179.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -46.500 -4.000 S -(n) -37.948 -4.000 S -(e) -30.948 -4.000 S -(r) -24.734 -4.000 S -(g) -20.072 -4.000 S -(y) -13.072 -4.000 S -( ) -6.072 -4.000 S -(i) -2.572 -4.000 S -(n) 1.317 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -46.500 11.000 S -(a) -37.948 11.000 S -(c) -31.734 11.000 S -(h) -25.520 11.000 S -( ) -18.520 11.000 S -(B) -15.020 11.000 S -(a) -5.682 11.000 S -(n) 0.531 11.000 S -(d) 7.531 11.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.500 184.500 0.000 0.000 13.000 37.806 rect -%@EndRect -gsave -203.403 198.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -18.000 4.000 S -(E) -12.599 4.000 S -(L) -7.198 4.000 S -(S) -1.797 4.000 S -(P) 3.603 4.000 S -(E) 9.004 4.000 S -(C) 14.405 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/memheap.eps b/HTKBook/HTKFigs/memheap.eps deleted file mode 100644 index 6e766f1..0000000 --- a/HTKBook/HTKFigs/memheap.eps +++ /dev/null @@ -1,4904 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: memheap.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/22/96 6:44:00 p.m. -%%BoundingBox: -1 476 487 793 -%%QDBoundingBox: -1.000 -0.500 486.500 315.500 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 35.000 54.000 0.000 0.000 12.000 51.000 rect -%@EndRect -gsave -79.500 41.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(M) -25.500 4.000 S -(e) -14.830 4.000 S -(m) -9.503 4.000 S -(H) -0.169 4.000 S -(e) 8.496 4.000 S -(a) 13.822 4.000 S -(p) 19.148 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 63.000 0.000 0.000 12.000 72.000 rect -%@EndRect -gsave -99.000 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -35.500 4.000 S -(a) -29.500 4.000 S -(m) -24.173 4.000 S -(e) -14.839 4.000 S -(=) -9.513 4.000 S -(Ó) -2.746 4.000 S -(a) 2.580 4.000 S -(h) 7.906 4.000 S -(e) 13.906 4.000 S -(a) 19.232 4.000 S -(p) 24.558 4.000 S -(Ó) 30.558 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {} def -/PC {} def -1.000 0 54.000 54.000 0.000 0.000 198.000 81.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 72.000 54.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 90.000 54.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 108.000 54.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 126.000 54.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 144.000 54.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 162.000 54.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 180.000 54.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 198.000 54.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 216.000 54.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 234.000 54.000 234.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 63.000 0.000 0.000 12.000 70.000 rect -%@EndRect -gsave -98.000 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(t) -34.500 4.000 S -(y) -31.166 4.000 S -(p) -25.166 4.000 S -(e) -19.166 4.000 S -(=) -13.839 4.000 S -(M) -7.072 4.000 S -(H) 3.597 4.000 S -(E) 12.263 4.000 S -(A) 19.593 4.000 S -(P) 28.259 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 111.000 63.000 0.000 0.000 12.000 57.000 rect -%@EndRect -gsave -91.500 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(g) -28.500 4.000 S -(r) -22.500 4.000 S -(o) -18.503 4.000 S -(w) -12.503 4.000 S -(f) -3.837 4.000 S -( ) 0.158 4.000 S -(=) 3.158 4.000 S -( ) 9.925 4.000 S -(0) 12.925 4.000 S -(.) 18.925 4.000 S -(1) 21.925 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 93.000 63.000 0.000 0.000 12.000 44.000 rect -%@EndRect -gsave -85.000 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(e) -21.500 4.000 S -(l) -16.173 4.000 S -(e) -12.839 4.000 S -(m) -7.513 4.000 S -(S) 1.820 4.000 S -(i) 8.494 4.000 S -(z) 11.828 4.000 S -(e) 17.154 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 129.000 63.000 0.000 0.000 12.000 63.000 rect -%@EndRect -gsave -94.500 135.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(m) -31.500 4.000 S -(i) -22.166 4.000 S -(n) -18.832 4.000 S -(E) -12.832 4.000 S -(l) -5.501 4.000 S -(e) -2.167 4.000 S -(m) 3.158 4.000 S -(=) 12.492 4.000 S -(1) 19.259 4.000 S -(0) 25.259 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 147.000 63.000 0.000 0.000 12.000 65.000 rect -%@EndRect -gsave -95.500 153.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(m) -32.500 4.000 S -(a) -23.166 4.000 S -(x) -17.839 4.000 S -(E) -11.839 4.000 S -(l) -4.509 4.000 S -(e) -1.175 4.000 S -(m) 4.150 4.000 S -(=) 13.484 4.000 S -(2) 20.251 4.000 S -(0) 26.251 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 165.000 63.000 0.000 0.000 12.000 60.000 rect -%@EndRect -gsave -93.000 171.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(c) -29.500 4.000 S -(u) -24.173 4.000 S -(r) -18.173 4.000 S -(E) -14.177 4.000 S -(l) -6.847 4.000 S -(e) -3.513 4.000 S -(m) 1.812 4.000 S -(=) 11.146 4.000 S -(1) 17.914 4.000 S -(1) 23.914 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 183.000 63.000 0.000 0.000 12.000 57.000 rect -%@EndRect -gsave -91.500 189.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(t) -28.500 4.000 S -(o) -25.166 4.000 S -(t) -19.166 4.000 S -(U) -15.832 4.000 S -(s) -7.166 4.000 S -(e) -2.496 4.000 S -(d) 2.830 4.000 S -(=) 8.830 4.000 S -(1) 15.597 4.000 S -(2) 21.597 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 201.000 63.000 0.000 0.000 12.000 59.000 rect -%@EndRect -gsave -92.500 207.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(t) -29.500 4.000 S -(o) -26.166 4.000 S -(t) -20.166 4.000 S -(A) -16.832 4.000 S -(l) -8.166 4.000 S -(l) -4.832 4.000 S -(o) -1.498 4.000 S -(c) 4.501 4.000 S -(=) 9.828 4.000 S -(2) 16.595 4.000 S -(1) 22.595 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 219.000 63.000 0.000 0.000 12.000 23.000 rect -%@EndRect -gsave -74.500 225.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -11.500 4.000 S -(e) -5.500 4.000 S -(a) -0.173 4.000 S -(p) 5.152 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 237.000 63.000 0.000 0.000 12.000 50.000 rect -%@EndRect -gsave -88.000 243.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(p) -24.500 4.000 S -(r) -18.500 4.000 S -(o) -14.503 4.000 S -(t) -8.503 4.000 S -(e) -5.169 4.000 S -(c) 0.156 4.000 S -(t) 5.482 4.000 S -(S) 8.816 4.000 S -(t) 15.490 4.000 S -(k) 18.824 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 0.500 0.500 0.000 0.000 -1.000 -1.000 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 0.500 0.500 0.000 0.000 -1.000 -1.000 rect -setlinecap -%@EndArc -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 270.000 54.000 0.000 0.000 36.000 95.000 rect -%@EndRect -gsave -101.500 288.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(D) -47.500 -8.000 S -(e) -38.833 -8.000 S -(t) -33.507 -8.000 S -(e) -30.173 -8.000 S -(r) -24.847 -8.000 S -(m) -20.851 -8.000 S -(i) -11.517 -8.000 S -(n) -8.183 -8.000 S -(e) -2.183 -8.000 S -(s) 3.142 -8.000 S -( ) 7.812 -8.000 S -(n) 10.812 -8.000 S -(u) 16.812 -8.000 S -(m) 22.812 -8.000 S -(b) 32.146 -8.000 S -(e) 38.146 -8.000 S -(r) 43.472 -8.000 S -0.000 0.000 0.000 setrgbcolor -(o) -47.500 4.000 S -(f) -41.500 4.000 S -( ) -37.503 4.000 S -(e) -34.503 4.000 S -(l) -29.177 4.000 S -(e) -25.843 4.000 S -(m) -20.517 4.000 S -(e) -11.183 4.000 S -(n) -5.857 4.000 S -(t) 0.142 4.000 S -(s) 3.476 4.000 S -( ) 8.146 4.000 S -(i) 11.146 4.000 S -(n) 14.480 4.000 S -( ) 20.480 4.000 S -(n) 23.480 4.000 S -(e) 29.480 4.000 S -(x) 34.806 4.000 S -(t) 40.806 4.000 S -0.000 0.000 0.000 setrgbcolor -(b) -47.500 16.000 S -(l) -41.500 16.000 S -(o) -38.166 16.000 S -(c) -32.166 16.000 S -(k) -26.839 16.000 S -( ) -20.839 16.000 S -(a) -17.839 16.000 S -(l) -12.513 16.000 S -(l) -9.179 16.000 S -(o) -5.845 16.000 S -(c) 0.154 16.000 S -(a) 5.480 16.000 S -(t) 10.806 16.000 S -(e) 14.140 16.000 S -(d) 19.466 16.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 151.187 40.000 0.000 0.000 28.812 18.000 rect -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 151.187 40.000 0.000 0.000 28.812 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.000 165.593 40.000 151.195 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 144.000 22.000 0.000 0.000 14.390 18.000 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 144.000 22.000 0.000 0.000 14.390 18.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 108.000 40.000 0.000 0.000 28.789 18.000 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 108.000 40.000 0.000 0.000 28.789 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.000 122.394 40.000 136.796 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 129.593 22.000 0.000 0.000 14.406 18.000 rect -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 0 129.593 22.000 0.000 0.000 14.406 18.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -27.000 144.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 9.000 144.000 25.750 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 9.000 288.000 9.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 36.000 288.000 9.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 180.000 0.000 0.000 108.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 90.000 180.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 108.000 180.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 126.000 180.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 144.000 180.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 162.000 180.000 162.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 93.000 189.000 0.000 0.000 12.000 41.000 rect -%@EndRect -gsave -209.500 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(f) -20.500 4.000 S -(i) -16.503 4.000 S -(r) -13.169 4.000 S -(s) -9.173 4.000 S -(t) -4.503 4.000 S -(F) -1.169 4.000 S -(r) 5.503 4.000 S -(e) 9.500 4.000 S -(e) 14.826 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 111.000 189.000 0.000 0.000 12.000 47.000 rect -%@EndRect -gsave -212.500 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -23.500 4.000 S -(u) -17.500 4.000 S -(m) -11.500 4.000 S -(E) -2.166 4.000 S -(l) 5.164 4.000 S -(e) 8.498 4.000 S -(m) 13.824 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 129.000 189.000 0.000 0.000 12.000 22.000 rect -%@EndRect -gsave -200.000 135.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(u) -10.500 4.000 S -(s) -4.500 4.000 S -(e) 0.169 4.000 S -(d) 5.496 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 147.000 189.000 0.000 0.000 12.000 20.000 rect -%@EndRect -gsave -199.000 153.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(d) -9.500 4.000 S -(a) -3.500 4.000 S -(t) 1.826 4.000 S -(a) 5.160 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 165.000 189.000 0.000 0.000 12.000 21.000 rect -%@EndRect -gsave -199.500 171.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -10.500 4.000 S -(e) -4.500 4.000 S -(x) 0.826 4.000 S -(t) 6.826 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 225.000 108.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 225.000 153.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 81.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.750 81.000 153.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 207.000 180.000 0.000 0.000 108.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 225.000 180.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 243.000 180.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 261.000 180.000 261.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 279.000 180.000 279.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 297.000 180.000 297.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 189.000 0.000 0.000 12.000 56.000 rect -%@EndRect -gsave -217.000 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -27.500 4.000 S -(u) -21.500 4.000 S -(m) -15.500 4.000 S -(F) -6.166 4.000 S -(r) 0.507 4.000 S -(e) 4.503 4.000 S -(e) 9.830 4.000 S -(=) 15.156 4.000 S -(7) 21.923 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 228.000 189.000 0.000 0.000 12.000 41.000 rect -%@EndRect -gsave -209.500 234.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(f) -20.500 4.000 S -(i) -16.503 4.000 S -(r) -13.169 4.000 S -(s) -9.173 4.000 S -(t) -4.503 4.000 S -(F) -1.169 4.000 S -(r) 5.503 4.000 S -(e) 9.500 4.000 S -(e) 14.826 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 246.000 189.000 0.000 0.000 12.000 47.000 rect -%@EndRect -gsave -212.500 252.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -23.500 4.000 S -(u) -17.500 4.000 S -(m) -11.500 4.000 S -(E) -2.166 4.000 S -(l) 5.164 4.000 S -(e) 8.498 4.000 S -(m) 13.824 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 264.000 189.000 0.000 0.000 12.000 22.000 rect -%@EndRect -gsave -200.000 270.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(u) -10.500 4.000 S -(s) -4.500 4.000 S -(e) 0.169 4.000 S -(d) 5.496 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 282.000 189.000 0.000 0.000 12.000 20.000 rect -%@EndRect -gsave -199.000 288.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(d) -9.500 4.000 S -(a) -3.500 4.000 S -(t) 1.826 4.000 S -(a) 5.160 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 300.000 189.000 0.000 0.000 12.000 21.000 rect -%@EndRect -gsave -199.500 306.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -10.500 4.000 S -(e) -4.500 4.000 S -(x) 0.826 4.000 S -(t) 6.826 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 207.000 moveto -/Triangular 8.812 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 224.999 205.750 225.000 171.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 45.000 288.000 0.000 0.000 12.000 193.000 rect -%@EndRect -gsave -384.500 51.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(E) -96.500 4.000 S -(l) -89.169 4.000 S -(e) -85.835 4.000 S -(m) -80.509 4.000 S -( ) -71.175 4.000 S -(a) -68.175 4.000 S -(l) -62.849 4.000 S -(l) -59.515 4.000 S -(o) -56.181 4.000 S -(c) -50.181 4.000 S -(a) -44.855 4.000 S -(t) -39.529 4.000 S -(i) -36.195 4.000 S -(o) -32.861 4.000 S -(n) -26.861 4.000 S -( ) -20.861 4.000 S -(b) -17.861 4.000 S -(i) -11.861 4.000 S -(t) -8.527 4.000 S -( ) -5.193 4.000 S -(m) -2.193 4.000 S -(a) 7.140 4.000 S -(p) 12.466 4.000 S -( ) 18.466 4.000 S -(\() 21.466 4.000 S -(M) 25.462 4.000 S -(H) 36.132 4.000 S -(E) 44.798 4.000 S -(A) 52.128 4.000 S -(P) 60.794 4.000 S -( ) 67.468 4.000 S -(o) 70.468 4.000 S -(n) 76.468 4.000 S -(l) 82.468 4.000 S -(y) 85.802 4.000 S -(\)) 91.802 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 288.000 0.000 0.000 27.000 180.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 234.000 243.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 270.000 moveto -/Triangular 8.812 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 368.999 268.750 369.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 288.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 306.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 324.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 342.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 378.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 396.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 414.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 297.000 450.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 468.000 297.000 468.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 198.000 288.000 0.000 0.000 18.000 180.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.000 216.000 306.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.000 216.000 324.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 216.000 342.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 216.000 360.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 216.000 378.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 216.000 396.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.000 216.000 414.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 432.000 216.000 432.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 216.000 450.000 198.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 294.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -297.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 312.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -315.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 330.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -333.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 348.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -351.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 366.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -369.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 384.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -387.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 402.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -405.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 420.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -423.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 438.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -441.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 200.000 456.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -459.500 206.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 270.000 243.000 270.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 270.000 261.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 207.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 207.000 286.750 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 270.000 450.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 288.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.750 288.000 243.000 288.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 288.000 0.000 0.000 27.000 198.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 127.082 437.230 0.000 0.000 77.843 17.984 rect -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 127.082 437.230 0.000 0.000 77.843 17.984 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 446.378 175.000 406.781 175.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 164.566 398.281 0.000 0.000 38.859 17.984 rect -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 164.566 398.281 0.000 0.000 38.859 17.984 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 127.112 318.753 0.000 0.000 77.781 17.984 rect -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 127.112 318.753 0.000 0.000 77.781 17.984 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 327.578 175.000 367.183 175.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A2} def -/SS {pop} def -/LC {} def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 4.712 164.543 357.691 0.000 0.000 38.906 17.984 rect -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {} def -/PF {} def -1.000 4.712 164.543 357.691 0.000 0.000 38.906 17.984 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 117.000 243.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 184.000 270.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 184.000 270.000 184.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 99.000 243.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 135.000 moveto -/Triangular 8.812 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 368.999 133.750 369.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 288.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 306.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 324.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {0.889 0.889 0.889 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 135.000 342.000 0.000 0.000 27.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 162.000 450.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 468.000 162.000 468.000 135.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 99.000 378.000 0.000 0.000 24.000 82.000 rect -%@EndRect -gsave -419.000 111.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(f) -40.477 -2.000 S -(i) -36.481 -2.000 S -(r) -33.147 -2.000 S -(s) -29.151 -2.000 S -(t) -24.481 -2.000 S -( ) -21.147 -2.000 S -(f) -18.147 -2.000 S -(r) -14.151 -2.000 S -(e) -10.155 -2.000 S -(e) -4.829 -2.000 S -( ) 0.497 -2.000 S -(e) 3.497 -2.000 S -(l) 8.823 -2.000 S -(e) 12.157 -2.000 S -(m) 17.483 -2.000 S -(e) 26.817 -2.000 S -(n) 32.143 -2.000 S -(t) 38.143 -2.000 S -0.000 0.000 0.000 setrgbcolor -(\() -37.987 10.000 S -(o) -33.991 10.000 S -(r) -27.991 10.000 S -( ) -23.995 10.000 S -(t) -20.995 10.000 S -(o) -17.661 10.000 S -(p) -11.661 10.000 S -( ) -5.661 10.000 S -(o) -2.661 10.000 S -(f) 3.338 10.000 S -( ) 7.334 10.000 S -(s) 10.334 10.000 S -(t) 15.004 10.000 S -(a) 18.338 10.000 S -(c) 23.665 10.000 S -(k) 28.991 10.000 S -(\)) 34.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 63.000 288.000 0.000 0.000 18.000 198.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 306.000 81.000 306.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.000 81.000 324.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 342.000 81.000 342.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 81.000 360.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 81.000 378.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 81.000 396.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.000 81.000 414.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 432.000 81.000 432.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 450.000 81.000 450.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 468.000 81.000 468.000 63.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 294.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -297.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 312.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -315.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 330.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -333.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 348.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -351.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 366.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -369.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 384.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -387.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 402.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -405.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 420.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -423.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 438.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -441.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 456.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -459.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 65.000 474.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -477.500 71.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(0) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 135.000 243.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 135.000 261.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 72.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 72.000 286.750 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 432.000 162.000 432.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.000 162.000 414.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 162.000 396.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 162.000 378.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 153.000 moveto -/Triangular 8.812 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.750 153.000 243.000 153.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 36.000 180.000 0.000 0.000 24.000 72.000 rect -%@EndRect -gsave -216.000 48.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(H) -35.500 -2.000 S -(e) -26.833 -2.000 S -(a) -21.507 -2.000 S -(d) -16.181 -2.000 S -( ) -10.181 -2.000 S -(o) -7.181 -2.000 S -(f) -1.181 -2.000 S -( ) 2.814 -2.000 S -(C) 5.814 -2.000 S -(h) 13.818 -2.000 S -(a) 19.818 -2.000 S -(i) 25.144 -2.000 S -(n) 28.478 -2.000 S -0.000 0.000 0.000 setrgbcolor -(=) -35.500 10.000 S -( ) -28.732 10.000 S -(T) -25.732 10.000 S -(o) -18.402 10.000 S -(p) -12.402 10.000 S -( ) -6.402 10.000 S -(o) -3.402 10.000 S -(f) 2.597 10.000 S -( ) 6.593 10.000 S -(S) 9.593 10.000 S -(t) 16.267 10.000 S -(a) 19.601 10.000 S -(c) 24.927 10.000 S -(k) 30.253 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 300.000 217.000 0.000 0.000 12.000 32.000 rect -%@EndRect -gsave -233.000 306.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -15.500 4.000 S -(U) -6.833 4.000 S -(L) 1.832 4.000 S -(L) 9.162 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 210.000 189.000 0.000 0.000 12.000 62.000 rect -%@EndRect -gsave -220.000 216.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -30.500 4.000 S -(u) -24.500 4.000 S -(m) -18.500 4.000 S -(F) -9.166 4.000 S -(r) -2.492 4.000 S -(e) 1.503 4.000 S -(e) 6.830 4.000 S -( ) 12.156 4.000 S -(=) 15.156 4.000 S -( ) 21.923 4.000 S -(2) 24.923 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/messencode.eps b/HTKBook/HTKFigs/messencode.eps deleted file mode 100644 index c90a2a2..0000000 --- a/HTKBook/HTKFigs/messencode.eps +++ /dev/null @@ -1,3012 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: messencode.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:12:11 p.m. -%%BoundingBox: 3.857 453.500 469.500 788.500 -%%QDBoundingBox: 3.857 3.500 469.500 338.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 68.022 4.357 0.000 0.000 81.042 56.739 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.678 80.579] CP -[14.691 73.478 15.367 68.461 15.704 65.528] CP -[16.042 62.595 15.704 59.199 14.691 55.340] CP -[13.678 51.481 12.158 48.702 10.132 47.004] CP -[8.105 45.306 6.248 42.605 4.559 38.900] CP -[2.870 35.195 1.688 31.568 1.013 28.017] CP -[0.337 24.467 0.253 20.839 0.759 17.134] CP -[1.266 13.429 2.448 10.496 4.306 8.335] CP -[6.163 6.174 8.781 4.476 12.158 3.241] CP -[15.535 2.006 20.179 1.157 26.090 0.694] CP -[32.000 0.231 37.235 0.694 41.794 2.083] CP -[46.354 3.473 49.309 5.325 50.660 7.641] CP -[52.011 9.956 52.602 12.889 52.433 16.440] CP -[52.264 19.990 52.940 23.000 54.460 25.470] CP -[55.979 27.940 56.739 29.792 56.739 31.027] CP -[56.739 32.262 55.051 32.803 51.673 32.648] CP -[48.296 32.494 47.705 34.578 49.900 38.900] CP -[52.095 43.222 50.829 45.075 46.101 44.457] CP -[41.372 43.840 40.190 44.149 42.554 45.384] CP -[44.918 46.618 46.860 47.776 48.380 48.857] CP -[49.900 49.937 50.744 51.944 50.913 54.877] CP -[51.082 57.810 48.718 58.736 43.821 57.656] CP -[38.924 56.575 35.462 56.498 33.435 57.424] CP -[31.409 58.350 30.396 60.897 30.396 65.065] CP -[30.396 69.233 29.889 72.707 28.876 75.485] CP -[27.863 78.264 27.694 80.116 28.369 81.042] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 22.595 0.000 0.000 17.597 10.132 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[9.118 2.778] CP -[5.403 0.926 2.955 1.157 1.773 3.473] CP -[0.591 5.788 0.168 7.795 0.506 9.493] CP -[0.844 11.191 2.364 12.966 5.066 14.819] CP -[7.767 16.671 9.287 16.594 9.625 14.587] CP -[9.963 12.580 8.949 10.960 6.585 9.725] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 86.546 44.886 0.000 0.000 4.167 9.118 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.941 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 102.580 58.857 0.000 0.000 26.049 13.438 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 98.057 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 97.558 63.337 0.000 0.000 35.955 18.664 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 91.408 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.721 72.330 0.000 0.000 49.440 23.822 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 82.138 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.190 80.271 0.000 0.000 68.242 33.086 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 132.142 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 168.713 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 211.003 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 177.666 132.977 177.666 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 132.500 132.977 132.500 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 222.833 132.977 222.833 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 267.999 132.977 267.999 96.977 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.988 267.284 0.000 0.000 24.274 36.256 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 11.362] CP -[0.840 3.787 1.734 0.258 2.679 0.774] CP -[3.625 1.291 4.466 3.443 5.202 7.230] CP -[5.937 11.018 7.146 14.805 8.827 18.593] CP -[10.509 22.380 11.770 23.586 12.610 22.208] CP -[13.451 20.831 14.187 18.507 14.817 15.236] CP -[15.448 11.965 16.341 9.296 17.497 7.230] CP -[18.653 5.164 19.757 5.509 20.808 8.263] CP -[21.859 11.018 22.594 13.256 23.015 14.978] CP -[23.435 16.699 24.591 16.010 26.483 12.912] CP -[28.374 9.813 30.318 8.780 32.315 9.813] CP -[34.312 10.846 35.626 11.190 36.256 10.846] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 100.406 303.856 0.000 0.000 21.692 41.931 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 13.464] CP -[1.251 12.965 2.294 12.134 3.129 10.970] CP -[3.963 9.807 4.615 8.768 5.084 7.854] CP -[5.554 6.939 6.023 5.651 6.493 3.989] CP -[6.962 2.327 7.562 1.246 8.292 0.748] CP -[9.022 0.249 9.752 0.706 10.482 2.119] CP -[11.213 3.532 11.786 5.028 12.203 6.607] CP -[12.621 8.186 12.960 9.183 13.220 9.599] CP -[13.481 10.015 13.768 11.012 14.081 12.591] CP -[14.394 14.170 14.994 15.916 15.880 17.827] CP -[16.767 19.739 17.445 20.861 17.914 21.193] CP -[18.384 21.526 19.010 21.567 19.792 21.318] CP -[20.574 21.068 21.096 20.653 21.356 20.071] CP -[21.617 19.489 22.061 18.201 22.686 16.206] CP -[23.312 14.212 23.912 12.633 24.486 11.469] CP -[25.059 10.305 25.503 9.225 25.816 8.228] CP -[26.128 7.230 26.494 7.272 26.911 8.352] CP -[27.328 9.433 27.771 10.679 28.241 12.092] CP -[28.710 13.505 29.284 14.503 29.962 15.084] CP -[30.640 15.666 31.135 15.126 31.448 13.464] CP -[31.761 11.801 32.048 10.389 32.309 9.225] CP -[32.569 8.061 33.039 8.061 33.717 9.225] CP -[34.395 10.389 34.995 11.718 35.516 13.214] CP -[36.038 14.710 36.559 15.541 37.081 15.708] CP -[37.602 15.874 38.046 15.334 38.411 14.087] CP -[38.776 12.840 39.349 12.009 40.132 11.594] CP -[40.914 11.178 41.514 11.635 41.931 12.965] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.691 346.146 0.000 0.000 21.142 56.637 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 9.458] CP -[2.146 3.152 3.599 1.298 4.356 3.894] CP -[5.114 6.491 5.872 8.809 6.629 10.849] CP -[7.387 12.889 8.050 12.426 8.618 9.458] CP -[9.186 6.491 9.597 4.636 9.849 3.894] CP -[10.102 3.152 10.670 4.451 11.554 7.789] CP -[12.438 11.127 13.070 14.187 13.448 16.969] CP -[13.827 19.751 14.427 19.937 15.248 17.526] CP -[16.069 15.115 17.111 11.869 18.373 7.789] CP -[19.636 3.709 20.583 1.947 21.215 2.503] CP -[21.846 3.060 22.414 4.451 22.920 6.676] CP -[23.425 8.902 24.119 10.107 25.003 10.293] CP -[25.887 10.478 26.708 10.107 27.466 9.180] CP -[28.223 8.253 28.949 8.253 29.644 9.180] CP -[30.339 10.107 31.002 10.385 31.633 10.015] CP -[32.264 9.644 33.243 9.922 34.569 10.849] CP -[35.895 11.776 37.000 12.147 37.884 11.962] CP -[38.768 11.776 39.589 11.313 40.346 10.571] CP -[41.104 9.829 41.830 8.994 42.525 8.067] CP -[43.219 7.140 43.914 7.233 44.608 8.345] CP -[45.303 9.458 46.092 10.293 46.976 10.849] CP -[47.860 11.406 48.744 11.220 49.628 10.293] CP -[50.512 9.365 51.301 9.180 51.996 9.736] CP -[52.690 10.293 54.237 10.571 56.637 10.571] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 312.809 132.977 312.809 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 357.975 132.977 357.975 96.977 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 403.142 132.977 403.142 96.977 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 151.090 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 196.138 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 241.185 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 286.233 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 331.280 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.727 376.328 0.000 0.000 36.000 6.435 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -155.380 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 155.380 180.727 155.380 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -200.428 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 200.428 180.727 200.428 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -245.475 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 245.475 180.727 245.475 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -290.523 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 290.523 180.727 290.523 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -335.570 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 335.570 180.727 335.570 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -380.618 184.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 380.618 180.727 380.618 148.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -39.000 0.000 0.000 54.000 180.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 20.000 -24.000 0.000 0.000 54.000 150.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 20.000 123.000 0.000 0.000 36.000 315.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 196.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -201.000 36.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 36.500 203.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -207.500 42.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -4.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 277.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -282.000 36.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.000 285.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -288.500 43.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 349.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -354.000 36.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 37.000 357.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -360.500 43.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.000 393.000 0.000 0.000 15.000 18.000 rect -%@EndRect -gsave -402.000 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -8.500 4.000 S -(t) -2.286 4.000 S -(c) 1.603 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 166.599 0.000 0.000 24.000 86.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 145.000 0.000 0.000 24.000 86.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 199.000 0.000 0.000 12.000 21.599 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 177.400 0.000 0.000 12.000 21.599 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 280.399 0.000 0.000 24.000 21.600 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 274.999 0.000 0.000 24.000 21.600 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 288.499 0.000 0.000 12.000 5.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 283.099 0.000 0.000 12.000 5.400 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 338.599 0.000 0.000 24.000 50.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 242.000 326.000 0.000 0.000 24.000 50.400 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 357.500 0.000 0.000 12.000 12.599 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 266.000 344.900 0.000 0.000 12.000 12.599 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.500 193.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -198.000 325.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 325.500 200.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -204.500 331.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -4.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.500 283.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -288.000 325.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 326.000 291.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -294.500 332.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 316.500 353.500 0.000 0.000 18.000 9.000 rect -%@EndRect -gsave -358.000 325.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -4.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 326.000 361.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -364.500 332.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -200.380 316.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 200.380 312.727 200.380 280.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -289.380 316.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 289.380 312.727 289.380 280.727 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -359.380 316.727 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 359.380 312.727 359.380 280.727 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 102.000 408.000 0.000 0.000 31.000 61.000 rect -%@EndRect -gsave -438.500 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -29.927 11.000 S -(a) -16.713 11.000 S -(v) -10.500 11.000 S -(e) -3.500 11.000 S -(f) 2.713 11.000 S -(o) 7.375 11.000 S -(r) 14.375 11.000 S -(m) 19.038 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 205.000 416.000 0.000 0.000 31.000 45.000 rect -%@EndRect -gsave -438.500 220.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.213 -4.000 S -(p) -12.427 -4.000 S -(e) -5.427 -4.000 S -(e) 0.786 -4.000 S -(c) 7.000 -4.000 S -(h) 13.213 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -21.769 11.000 S -(e) -11.658 11.000 S -(c) -5.444 11.000 S -(t) 0.769 11.000 S -(o) 4.658 11.000 S -(r) 11.658 11.000 S -(s) 16.320 11.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 133.000 0.000 0.000 15.000 182.000 rect -%@EndRect -gsave -224.000 11.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -90.500 4.000 S -(o) -81.162 4.000 S -(n) -74.162 4.000 S -(c) -67.162 4.000 S -(e) -60.948 4.000 S -(p) -54.734 4.000 S -(t) -47.734 4.000 S -(:) -43.844 4.000 S -( ) -39.955 4.000 S -(a) -36.455 4.000 S -( ) -30.241 4.000 S -(s) -26.741 4.000 S -(e) -21.292 4.000 S -(q) -15.079 4.000 S -(u) -8.079 4.000 S -(e) -1.079 4.000 S -(n) 5.134 4.000 S -(c) 12.134 4.000 S -(e) 18.348 4.000 S -( ) 24.562 4.000 S -(o) 28.062 4.000 S -(f) 35.062 4.000 S -( ) 39.724 4.000 S -(s) 43.224 4.000 S -(y) 48.672 4.000 S -(m) 55.672 4.000 S -(b) 66.562 4.000 S -(o) 73.562 4.000 S -(l) 80.562 4.000 S -(s) 84.452 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.000 39.000 0.000 0.000 15.000 74.000 rect -%@EndRect -gsave -76.000 174.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -36.500 4.000 S -(a) -28.713 4.000 S -(r) -22.500 4.000 S -(a) -17.837 4.000 S -(m) -11.624 4.000 S -(e) -0.734 4.000 S -(t) 5.479 4.000 S -(e) 9.369 4.000 S -(r) 15.583 4.000 S -(i) 20.245 4.000 S -(s) 24.134 4.000 S -(e) 29.583 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.000 34.000 0.000 0.000 22.000 80.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 292.000 40.000 0.000 0.000 15.000 60.000 rect -%@EndRect -gsave -70.000 299.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -29.500 4.000 S -(e) -20.162 4.000 S -(c) -13.948 4.000 S -(o) -7.734 4.000 S -(g) -0.734 4.000 S -(n) 6.265 4.000 S -(i) 13.265 4.000 S -(s) 17.155 4.000 S -(e) 22.603 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 289.000 37.000 0.000 0.000 21.000 65.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 173.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.000 173.000 114.000 173.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.000 300.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 128.000 300.000 102.000 300.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/mononet.eps b/HTKBook/HTKFigs/mononet.eps deleted file mode 100644 index 6a8ac31..0000000 --- a/HTKBook/HTKFigs/mononet.eps +++ /dev/null @@ -1,2225 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: mononet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 3:58:04 p.m. -%%BoundingBox: 36.500 604.562 505.500 745.437 -%%QDBoundingBox: 36.500 46.562 505.500 187.437 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 181.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 121.500 343.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 361.000 121.500 217.000 121.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.000 121.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 281.600 121.499 307.000 121.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 112.500 181.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 76.500 343.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 361.000 112.500 217.000 112.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.000 112.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 281.600 112.499 307.000 112.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.500 37.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.000 49.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -56.113 118.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.500 415.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 110.000 427.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -434.113 118.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.500 469.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.059 475.841 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -487.117 119.059 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.658 4.000 S -(n) -2.106 4.000 S -(d) 4.893 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 103.609 91.278 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.169 97.378 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -110.599 119.169 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.121 4.000 S -(t) -5.334 4.000 S -(a) -1.445 4.000 S -(r) 4.768 4.000 S -(t) 9.430 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -91.000 117.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 89.399 117.795 73.000 117.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -469.000 117.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 467.399 117.795 451.000 117.795 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 67.500 172.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.358 191.767 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -195.267 81.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -2.732 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 67.500 235.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.358 256.249 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -258.194 81.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -1.250 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 67.500 298.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.358 319.249 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -321.194 81.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.250 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 81.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.399 81.795 217.000 81.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.000 81.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.399 81.795 280.000 81.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 67.500 361.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -361.000 81.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 359.399 81.795 343.000 81.795 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 74.538 367.266 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -374.656 82.538 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.233 4.000 S -(i) -0.233 4.000 S -(t) 3.656 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 139.500 172.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.358 193.249 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -196.749 153.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -3.250 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 139.500 235.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 145.358 256.139 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -259.639 153.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -3.360 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 139.500 298.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.358 319.880 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -321.825 153.358 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.619 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 153.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.399 153.795 217.000 153.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.000 153.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.399 153.795 280.000 153.795 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 139.500 361.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -361.000 153.795 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 359.399 153.795 343.000 153.795 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.538 365.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -374.729 154.538 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.000 85.500 moveto -/Triangular 9.399 5.874 false 149.046 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.628 86.323 127.000 112.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.000 148.500 moveto -/Triangular 9.399 5.874 false 210.979 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.627 147.676 127.000 121.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.000 112.500 moveto -/Triangular 9.399 5.874 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 413.868 111.368 388.000 85.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.000 121.500 moveto -/Triangular 9.399 5.874 false 135.009 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 413.868 122.631 388.000 148.500 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 49.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 388.000 49.500 172.000 49.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -271.000 49.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 272.600 49.499 298.000 49.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 370.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 157.500 154.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 388.000 184.500 172.000 184.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -271.000 184.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 272.600 184.499 298.000 184.500 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/muacc.eps b/HTKBook/HTKFigs/muacc.eps deleted file mode 100644 index 11d449a..0000000 --- a/HTKBook/HTKFigs/muacc.eps +++ /dev/null @@ -1,150 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: muacc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:15:29 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 249 58 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 96.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 900 900 m 2100 900 l 2100 1500 l 900 1500 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 2700 900 m 4800 900 l 4800 1200 l 2700 1200 l cp gs col-1 s gr -% Polyline -gs clippath -2553 1020 m 2673 1050 l 2553 1080 l 2715 1080 l 2715 1020 l cp clip -n 1950 1050 m 2700 1050 l gs col-1 s gr gr - -% arrowhead -n 2553 1020 m 2673 1050 l 2553 1080 l 2553 1050 l 2553 1020 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 3000 900 m 3000 1200 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 3600 900 m 3600 1200 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -3300 750 m -gs 1 -1 sc ([1 .. sWidth]) col-1 sh gr -% Polyline -n 4200 900 m 4200 1200 l gs col-1 s gr -% Polyline -n 4500 900 m 4500 1200 l gs col-1 s gr -% Polyline -n 3900 900 m 3900 1200 l gs col-1 s gr -/Times-Bold ff 180.00 scf sf -1275 750 m -gs 1 -1 sc (MuAcc) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (mu) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ = 3.4) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/netforcsr.eps b/HTKBook/HTKFigs/netforcsr.eps deleted file mode 100644 index bd409e6..0000000 --- a/HTKBook/HTKFigs/netforcsr.eps +++ /dev/null @@ -1,1843 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: netforcsr.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:56:27 p.m. -%%BoundingBox: 53.500 554.475 288.500 720.500 -%%QDBoundingBox: 53.500 71.500 288.500 237.524 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 72.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 83.500 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -90.106 81.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -6.000 4.000 S -(x) 0.213 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 72.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 86.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -90.000 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 126.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 108.500 139.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -144.944 116.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.000 4.000 S -(y) -1.110 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 72.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 86.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -90.000 153.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 126.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 144.500 139.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -144.944 152.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.000 4.000 S -(y) -1.110 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 180.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 194.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -198.000 153.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 234.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 249.500 0.000 0.000 16.000 6.213 rect -%@EndRect -gsave -252.606 81.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -3.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 234.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 109.500 246.500 0.000 0.000 16.000 13.213 rect -%@EndRect -gsave -253.106 117.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.000 4.000 S -(e) 1.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 234.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 239.500 0.000 0.000 16.000 26.427 rect -%@EndRect -gsave -252.713 153.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -13.000 4.000 S -(e) -6.000 4.000 S -(e) 0.213 4.000 S -(n) 6.427 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 198.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.000 216.000 54.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 81.000 108.000 81.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 117.000 108.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 153.000 108.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 117.000 162.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 153.000 162.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 153.000 216.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 234.000 72.000 234.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 198.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 216.000 288.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 81.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 54.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 189.000 72.000 189.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 180.500 116.500 0.000 0.000 16.000 16.317 rect -%@EndRect -gsave -124.658 188.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -8.000 4.000 S -(t) -1.786 4.000 S -(c) 2.103 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 189.000 270.000 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.000 234.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 164.000 233.999 189.000 234.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/overview.eps b/HTKBook/HTKFigs/overview.eps deleted file mode 100644 index 57bac82..0000000 --- a/HTKBook/HTKFigs/overview.eps +++ /dev/null @@ -1,2398 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: overview.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:06:42 p.m. -%%BoundingBox: 8.338 555.500 234.672 786.500 -%%QDBoundingBox: 8.338 5.500 234.672 236.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 53.000 68.000 0.000 0.000 20.000 107.481 rect -%@EndRect -gsave -121.740 63.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -53.500 5.000 S -(r) -42.504 5.000 S -(a) -36.510 5.000 S -(i) -28.521 5.000 S -(n) -23.520 5.000 S -(i) -14.520 5.000 S -(n) -9.519 5.000 S -(g) -0.519 5.000 S -( ) 8.480 5.000 S -(T) 12.980 5.000 S -(o) 23.975 5.000 S -(o) 32.975 5.000 S -(l) 41.975 5.000 S -(s) 46.976 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 37.238 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -37.238 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 37.238 119.020 37.238 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -51.815 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 50.731 127.505 45.029 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -20.148 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 19.065 127.505 13.362 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 8.838 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 67.648 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 35.981 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 21.405 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -21.405 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 21.405 119.020 21.405 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 20.148 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -35.981 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 34.898 127.505 29.196 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 53.071 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -53.071 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.071 119.020 53.071 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 51.815 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -67.648 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.565 127.505 60.862 127.505 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 5.500 13.500 0.000 0.000 16.000 70.355 rect -%@EndRect -gsave -48.677 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -35.000 4.000 S -(p) -27.213 4.000 S -(e) -20.213 4.000 S -(e) -14.000 4.000 S -(c) -7.786 4.000 S -(h) -1.572 4.000 S -( ) 5.427 4.000 S -(D) 8.927 4.000 S -(a) 19.038 4.000 S -(t) 25.251 4.000 S -(a) 29.141 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 49.000 14.000 0.000 0.000 27.000 216.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 118.238 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -118.238 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 118.238 119.020 118.238 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.815 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.731 127.505 126.029 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -101.148 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 100.065 127.505 94.362 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 89.838 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 148.648 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 116.981 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 102.405 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -102.405 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 102.405 119.020 102.405 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 101.148 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -116.981 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.898 127.505 110.196 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 134.071 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -134.071 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.071 119.020 134.071 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 132.815 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -148.648 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 147.565 127.505 141.862 127.505 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 199.238 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.238 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 199.238 119.020 199.238 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -213.815 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 212.731 127.505 207.029 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.148 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.065 127.505 175.362 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 170.838 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.037 229.648 0.000 0.000 4.934 4.523 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 197.981 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 183.405 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -183.405 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 183.405 119.020 183.405 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 182.148 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -197.981 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.898 127.505 191.196 127.505 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 110.234 215.071 0.000 0.000 14.803 6.785 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -215.071 120.103 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.071 119.020 215.071 115.169 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 122.570 213.815 0.000 0.000 9.868 9.047 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -229.648 127.505 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 228.565 127.505 222.862 127.505 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -41.000 103.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.999 101.000 41.000 76.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.000 103.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.999 101.000 194.000 76.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -68.000 49.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.890 47.335 50.000 22.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -122.000 103.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.999 101.000 122.000 76.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -41.000 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 40.999 164.000 41.000 139.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.000 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.999 164.000 194.000 139.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -122.000 166.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.999 164.000 122.000 139.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 170.000 82.000 0.000 0.000 20.000 80.973 rect -%@EndRect -gsave -122.486 180.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -39.500 5.000 S -(e) -27.494 5.000 S -(c) -19.504 5.000 S -(o) -11.515 5.000 S -(g) -2.515 5.000 S -(n) 6.484 5.000 S -(i) 15.484 5.000 S -(s) 20.485 5.000 S -(e) 27.490 5.000 S -(r) 35.479 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 166.000 14.000 0.000 0.000 27.000 216.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 5.500 157.500 0.000 0.000 16.000 75.420 rect -%@EndRect -gsave -195.210 13.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -37.000 4.000 S -(r) -28.448 4.000 S -(a) -23.786 4.000 S -(n) -17.572 4.000 S -(s) -10.572 4.000 S -(c) -5.124 4.000 S -(r) 1.089 4.000 S -(i) 5.751 4.000 S -(p) 9.641 4.000 S -(t) 16.641 4.000 S -(i) 20.531 4.000 S -(o) 24.420 4.000 S -(n) 31.420 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -176.000 49.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.109 47.335 194.000 22.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.500 13.500 0.000 0.000 16.000 99.148 rect -%@EndRect -gsave -63.074 228.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -49.000 4.000 S -(n) -38.889 4.000 S -(k) -31.889 4.000 S -(n) -24.889 4.000 S -(o) -17.889 4.000 S -(w) -10.889 4.000 S -(n) -0.779 4.000 S -( ) 6.220 4.000 S -(S) 9.720 4.000 S -(p) 17.506 4.000 S -(e) 24.506 4.000 S -(e) 30.720 4.000 S -(c) 36.934 4.000 S -(h) 43.148 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -68.000 193.000 moveto -/Triangular 14.099 7.049 false 123.698 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 66.890 194.664 50.000 220.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.500 157.500 0.000 0.000 16.000 75.420 rect -%@EndRect -gsave -195.210 228.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -37.000 4.000 S -(r) -28.448 4.000 S -(a) -23.786 4.000 S -(n) -17.572 4.000 S -(s) -10.572 4.000 S -(c) -5.124 4.000 S -(r) 1.089 4.000 S -(i) 5.751 4.000 S -(p) 9.641 4.000 S -(t) 16.641 4.000 S -(i) 20.531 4.000 S -(o) 24.420 4.000 S -(n) 31.420 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -194.000 220.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 176.000 193.000 192.890 218.335 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/parher.eps b/HTKBook/HTKFigs/parher.eps deleted file mode 100644 index fbe17f4..0000000 --- a/HTKBook/HTKFigs/parher.eps +++ /dev/null @@ -1,1834 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: parher.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:42:30 a.m. -%%BoundingBox: 15.000 449.000 428.000 757.000 -%%QDBoundingBox: 15.000 35.000 428.000 343.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.500 243.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 274.499 241.500 274.500 216.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 243.500 175.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 217.500 0.000 0.000 19.000 102.000 rect -%@EndRect -gsave -268.500 263.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -51.000 6.000 S -(c) -38.000 6.000 S -(c) -30.011 6.000 S -(u) -22.022 6.000 S -(m) -13.022 6.000 S -(u) 0.978 6.000 S -(l) 9.978 6.000 S -(a) 14.979 6.000 S -(t) 22.968 6.000 S -(o) 27.969 6.000 S -(r) 36.969 6.000 S -(s) 42.963 6.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.500 306.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 274.499 304.500 274.500 279.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 112.500 0.000 0.000 36.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 188.500 123.423 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -164.164 198.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.076 5.000 S -(E) -27.077 5.000 S -(R) -16.082 5.000 S -(e) -4.076 5.000 S -(s) 3.912 5.000 S -(t) 10.917 5.000 S -( ) 15.918 5.000 S -(\() 20.418 5.000 S -(1) 26.412 5.000 S -(\)) 35.412 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 306.500 166.500 0.000 0.000 36.000 234.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 314.500 231.500 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -272.241 324.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.000 5.000 S -(E) -27.000 5.000 S -(R) -16.005 5.000 S -(e) -4.000 5.000 S -(s) 3.989 5.000 S -(t) 10.994 5.000 S -( ) 15.995 5.000 S -(\() 20.495 5.000 S -(0) 26.489 5.000 S -(\)) 35.489 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 15.500 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 191.500 24.500 0.000 0.000 19.000 53.000 rect -%@EndRect -gsave -51.000 201.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -26.000 6.000 S -(M) -13.000 6.000 S -(M) 3.003 6.000 S -(s) 19.008 6.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -112.500 199.500 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 110.500 199.500 88.500 199.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 51.500 324.500 166.500 324.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -51.500 216.500 moveto -/Triangular 14.099 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 51.500 218.500 51.500 324.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 220.500 0.000 0.000 36.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 188.500 231.423 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -272.164 198.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.076 5.000 S -(E) -27.077 5.000 S -(R) -16.082 5.000 S -(e) -4.076 5.000 S -(s) 3.912 5.000 S -(t) 10.917 5.000 S -( ) 15.918 5.000 S -(\() 20.418 5.000 S -(2) 26.412 5.000 S -(\)) 35.412 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.500 328.500 0.000 0.000 36.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 188.500 339.423 0.000 0.000 20.000 81.483 rect -%@EndRect -gsave -380.164 198.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -40.076 5.000 S -(E) -27.077 5.000 S -(R) -16.082 5.000 S -(e) -4.076 5.000 S -(s) 3.912 5.000 S -(t) 10.917 5.000 S -( ) 15.918 5.000 S -(\() 20.418 5.000 S -(3) 26.412 5.000 S -(\)) 35.412 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -193.500 243.500 moveto -/Triangular 14.687 10.574 false 216.885 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.388 242.666 157.500 216.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -364.500 243.500 moveto -/Triangular 14.687 10.574 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 365.270 242.344 382.500 216.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -274.500 180.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 274.499 178.500 274.500 135.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.500 238.500 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 98.000 257.000 0.000 0.000 31.000 37.727 rect -%@EndRect -gsave -275.863 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -18.500 -4.000 S -(a) -8.389 -4.000 S -(t) -2.175 -4.000 S -(a) 1.713 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -18.500 11.000 S -( ) -15.000 11.000 S -( ) -11.500 11.000 S -(F) -8.000 11.000 S -(i) -0.213 11.000 S -(l) 3.675 11.000 S -(e) 7.565 11.000 S -(s) 13.779 11.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -373.500 180.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 373.499 178.500 373.500 135.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.500 337.500 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 98.000 356.000 0.000 0.000 31.000 37.727 rect -%@EndRect -gsave -374.863 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -18.500 -4.000 S -(a) -8.389 -4.000 S -(t) -2.175 -4.000 S -(a) 1.713 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -18.500 11.000 S -( ) -15.000 11.000 S -( ) -11.500 11.000 S -(F) -8.000 11.000 S -(i) -0.213 11.000 S -(l) 3.675 11.000 S -(e) 7.565 11.000 S -(s) 13.779 11.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -157.500 180.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 157.499 178.500 157.500 135.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 90.500 121.500 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 98.000 140.000 0.000 0.000 31.000 37.727 rect -%@EndRect -gsave -158.863 113.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -18.500 -4.000 S -(a) -8.389 -4.000 S -(t) -2.175 -4.000 S -(a) 1.713 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) -18.500 11.000 S -( ) -15.000 11.000 S -( ) -11.500 11.000 S -(F) -8.000 11.000 S -(i) -0.213 11.000 S -(l) 3.675 11.000 S -(e) 7.565 11.000 S -(s) 13.779 11.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 35.000 185.000 0.000 0.000 20.000 166.957 rect -%@EndRect -gsave -268.478 45.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -82.500 5.000 S -(a) -72.489 5.000 S -(r) -64.500 5.000 S -(t) -58.505 5.000 S -(i) -53.504 5.000 S -(t) -48.503 5.000 S -(i) -43.502 5.000 S -(o) -38.501 5.000 S -(n) -29.501 5.000 S -( ) -20.501 5.000 S -(T) -16.001 5.000 S -(r) -5.006 5.000 S -(a) 0.987 5.000 S -(i) 8.976 5.000 S -(n) 13.977 5.000 S -(i) 22.977 5.000 S -(n) 27.978 5.000 S -(g) 36.978 5.000 S -( ) 45.978 5.000 S -(D) 50.478 5.000 S -(a) 63.477 5.000 S -(t) 71.466 5.000 S -(a) 76.467 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 121.500 81.500 121.500 63.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 409.500 63.500 121.500 63.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 409.500 81.500 409.500 63.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/qstree.eps b/HTKBook/HTKFigs/qstree.eps deleted file mode 100644 index 06e7670..0000000 --- a/HTKBook/HTKFigs/qstree.eps +++ /dev/null @@ -1,2930 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: qstree.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 11:33:11 a.m. -%%BoundingBox: 88.338 291.500 458.544 698.500 -%%QDBoundingBox: 88.338 93.500 458.544 500.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 100.000 235.112 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.112 114.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.112 113.138 235.112 107.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -260.659 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.576 124.888 248.766 124.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -205.159 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.076 124.888 193.266 124.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 121.333 185.338 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 121.333 288.409 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.777 232.909 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 100.000 207.362 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.362 114.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.362 113.138 207.362 107.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.777 205.159 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -232.909 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.826 124.888 221.016 124.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 100.000 262.862 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.862 114.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.862 113.138 262.862 107.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 117.777 260.659 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.409 124.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.326 124.888 276.516 124.888 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 116.500 123.673 0.000 0.000 16.000 41.330 rect -%@EndRect -gsave -144.338 124.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.826 4.000 S -(-) -14.378 4.000 S -(a) -9.716 4.000 S -(w) -3.502 4.000 S -(+) 6.607 4.000 S -(n) 14.503 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 152.000 124.338 0.000 0.000 16.000 39.771 rect -%@EndRect -gsave -144.224 160.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -19.161 4.000 S -(-) -15.271 4.000 S -(a) -10.609 4.000 S -(w) -4.395 4.000 S -(+) 5.714 4.000 S -(n) 13.609 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 189.000 124.338 0.000 0.000 16.000 38.219 rect -%@EndRect -gsave -143.448 197.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -18.161 4.000 S -(-) -12.713 4.000 S -(a) -8.051 4.000 S -(w) -1.837 4.000 S -(+) 8.272 4.000 S -(t) 16.168 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 136.000 235.112 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.112 150.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.112 149.138 235.112 143.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -260.659 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.576 160.888 248.766 160.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -205.159 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.076 160.888 193.266 160.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 157.333 185.338 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 157.333 288.409 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.777 232.909 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 136.000 207.362 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.362 150.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.362 149.138 207.362 143.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.777 205.159 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -232.909 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.826 160.888 221.016 160.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 136.000 262.862 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.862 150.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.862 149.138 262.862 143.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.777 260.659 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.409 160.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.326 160.888 276.516 160.888 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 172.000 235.112 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.112 186.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.112 185.138 235.112 179.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -260.659 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.576 196.888 248.766 196.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -205.159 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.076 196.888 193.266 196.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 193.333 185.338 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 193.333 288.409 0.000 0.000 7.111 7.928 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.777 232.909 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 172.000 207.362 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.362 186.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.362 185.138 207.362 179.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.777 205.159 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -232.909 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 231.826 196.888 221.016 196.888 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 172.000 262.862 0.000 0.000 21.333 11.892 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.862 186.222 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 262.862 185.138 262.862 179.111 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.777 260.659 0.000 0.000 14.222 15.857 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.409 196.888 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.326 196.888 276.516 196.888 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 226.838 256.000 226.838 94.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.838 94.000 226.838 94.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.838 256.000 253.838 94.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 212.500 234.338 0.000 0.000 26.000 17.000 rect -%@EndRect -gsave -242.838 225.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -5.661 6.000 S -(.) 0.338 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 220.500 139.179 0.000 0.000 16.000 16.317 rect -%@EndRect -gsave -147.338 228.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -7.320 4.000 S -(t) -1.106 4.000 S -(c) 2.783 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 133.500 326.458 0.000 0.000 16.000 49.758 rect -%@EndRect -gsave -351.338 141.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - --24.541 6 26.217 6 U -(E) -24.041 4.000 S -(x) -15.489 4.000 S -(a) -8.489 4.000 S -(m) -2.275 4.000 S -(p) 8.614 4.000 S -(l) 15.614 4.000 S -(e) 19.503 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 153.500 325.338 0.000 0.000 46.000 82.044 rect -%@EndRect -gsave -366.360 176.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -40.161 -11.000 S -(l) -30.823 -11.000 S -(u) -26.934 -11.000 S -(s) -19.934 -11.000 S -(t) -14.485 -11.000 S -(e) -10.596 -11.000 S -(r) -4.382 -11.000 S -( ) 0.279 -11.000 S -(c) 3.779 -11.000 S -(e) 9.993 -11.000 S -(n) 16.207 -11.000 S -(t) 23.207 -11.000 S -(r) 27.097 -11.000 S -(e) 31.759 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -40.161 4.000 S -(t) -34.713 4.000 S -(a) -30.823 4.000 S -(t) -24.609 4.000 S -(e) -20.720 4.000 S -(s) -14.506 4.000 S -( ) -9.058 4.000 S -(o) -5.558 4.000 S -(f) 1.441 4.000 S -( ) 6.104 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -40.161 19.000 S -(h) -33.161 19.000 S -(o) -26.161 19.000 S -(n) -19.161 19.000 S -(e) -12.161 19.000 S -( ) -5.947 19.000 S -(/) -2.447 19.000 S -(a) 1.441 19.000 S -(w) 7.655 19.000 S -(/) 17.766 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 287.000 231.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 341.000 168.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 341.000 294.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 186.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 249.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 395.000 339.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 123.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 312.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.250 setcmykcolor end} {0.750 0.750 0.750 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 447.000 375.838 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 185.838 344.000 233.838 303.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.838 343.000 248.838 302.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.838 448.000 172.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.838 448.000 182.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.838 446.000 299.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 343.838 397.000 307.838 358.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 324.838 447.000 342.838 412.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 380.838 448.000 355.838 411.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 301.500 270.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -273.838 309.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 302.500 206.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -209.838 310.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 360.500 195.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -198.838 368.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 360.500 151.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -154.838 368.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 361.500 330.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -333.838 369.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 361.500 280.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -283.838 369.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 407.500 367.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -370.838 415.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(y) -3.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 407.500 323.338 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -326.838 415.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.161 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -240.838 287.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.838 285.000 240.838 251.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 94.338 0.000 0.000 16.000 129.206 rect -%@EndRect -gsave -158.941 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -64.161 4.000 S -(=) -54.823 4.000 S -(C) -46.928 4.000 S -(e) -37.590 4.000 S -(n) -31.376 4.000 S -(t) -24.376 4.000 S -(r) -20.486 4.000 S -(a) -15.824 4.000 S -(l) -9.610 4.000 S -(-) -5.721 4.000 S -(C) -1.059 4.000 S -(o) 8.278 4.000 S -(n) 15.278 4.000 S -(s) 22.278 4.000 S -(o) 27.727 4.000 S -(n) 34.727 4.000 S -(a) 41.727 4.000 S -(n) 47.940 4.000 S -(t) 54.940 4.000 S -(?) 58.830 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 105.338 0.000 0.000 16.000 54.537 rect -%@EndRect -gsave -132.606 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -27.161 4.000 S -(=) -18.609 4.000 S -(N) -10.714 4.000 S -(a) -0.604 4.000 S -(s) 5.609 4.000 S -(a) 11.058 4.000 S -(l) 17.271 4.000 S -(?) 21.161 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 321.338 0.000 0.000 16.000 55.323 rect -%@EndRect -gsave -349.000 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -27.161 4.000 S -(=) -17.823 4.000 S -(N) -9.928 4.000 S -(a) 0.182 4.000 S -(s) 6.395 4.000 S -(a) 11.844 4.000 S -(l) 18.058 4.000 S -(?) 21.947 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.838 477.000 88.838 459.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 430.838 477.000 88.838 477.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 430.838 459.000 430.838 477.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 484.500 170.338 0.000 0.000 16.000 177.249 rect -%@EndRect -gsave -258.962 492.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -88.161 4.000 S -(t) -80.375 4.000 S -(a) -76.485 4.000 S -(t) -70.271 4.000 S -(e) -66.382 4.000 S -(s) -60.168 4.000 S -( ) -54.720 4.000 S -(i) -51.220 4.000 S -(n) -47.330 4.000 S -( ) -40.330 4.000 S -(e) -36.830 4.000 S -(a) -30.616 4.000 S -(c) -24.402 4.000 S -(h) -18.188 4.000 S -( ) -11.188 4.000 S -(l) -7.688 4.000 S -(e) -3.799 4.000 S -(a) 2.414 4.000 S -(f) 8.628 4.000 S -( ) 13.290 4.000 S -(n) 16.790 4.000 S -(o) 23.790 4.000 S -(d) 30.790 4.000 S -(e) 37.790 4.000 S -( ) 44.004 4.000 S -(a) 47.504 4.000 S -(r) 53.718 4.000 S -(e) 58.380 4.000 S -( ) 64.594 4.000 S -(t) 68.094 4.000 S -(i) 71.983 4.000 S -(e) 75.873 4.000 S -(d) 82.087 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 380.500 364.338 0.000 0.000 16.000 94.206 rect -%@EndRect -gsave -411.441 388.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -46.161 4.000 S -(=) -37.609 4.000 S -(C) -29.714 4.000 S -(e) -20.376 4.000 S -(n) -14.162 4.000 S -(t) -7.162 4.000 S -(r) -3.272 4.000 S -(a) 1.389 4.000 S -(l) 7.603 4.000 S -(-) 11.492 4.000 S -(S) 16.154 4.000 S -(t) 23.940 4.000 S -(o) 27.830 4.000 S -(p) 34.830 4.000 S -(?) 41.830 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/recipe.eps b/HTKBook/HTKFigs/recipe.eps deleted file mode 100644 index 90f8433..0000000 --- a/HTKBook/HTKFigs/recipe.eps +++ /dev/null @@ -1,2309 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: recipe.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/15/95 4:21:49 p.m. -%%BoundingBox: 42.617 467.500 307.291 605.088 -%%QDBoundingBox: 42.617 186.911 307.291 324.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 132.302 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.302 281.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 132.302 280.918 132.302 278.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 158.261 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -158.261 281.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 158.261 280.918 158.261 278.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 184.219 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -184.219 281.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 184.219 280.918 184.219 278.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 287.096 130.242 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 287.096 156.200 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 287.096 182.159 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.242 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 129.575 293.985 119.117 293.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -156.200 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.534 293.985 145.075 293.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.159 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.492 293.985 171.034 293.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -208.117 293.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.450 293.985 196.992 293.985 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 262.874 43.117 0.000 0.000 17.000 53.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 8.185] CP -[0.188 5.498 0.565 3.567 1.130 2.392] CP -[1.695 1.217 2.190 0.923 2.614 1.511] CP -[3.038 2.098 3.415 3.358 3.745 5.288] CP -[4.075 7.219 4.334 8.856 4.522 10.199] CP -[4.711 11.543 4.946 12.760 5.229 13.851] CP -[5.511 14.943 5.959 15.635 6.571 15.929] CP -[7.184 16.223 7.632 15.929 7.914 15.048] CP -[8.197 14.166 8.338 13.075 8.338 11.774] CP -[8.338 10.472 8.550 9.171 8.974 7.870] CP -[9.398 6.569 9.799 5.645 10.175 5.100] CP -[10.552 4.554 10.906 4.680 11.235 5.477] CP -[11.565 6.275 11.872 7.282 12.154 8.500] CP -[12.437 9.717 12.790 10.724 13.214 11.522] CP -[13.638 12.319 14.086 12.571 14.557 12.277] CP -[15.028 11.983 15.334 11.732 15.475 11.522] CP -[15.617 11.312 15.805 10.640 16.041 9.507] CP -[16.276 8.374 16.677 7.387 17.242 6.548] CP -[17.807 5.708 18.302 5.540 18.726 6.044] CP -[19.150 6.548 19.433 7.198 19.574 7.996] CP -[19.715 8.793 19.927 9.444 20.210 9.948] CP -[20.493 10.451 20.893 10.598 21.412 10.388] CP -[21.930 10.179 22.377 9.633 22.754 8.751] CP -[23.131 7.870 23.508 7.345 23.885 7.177] CP -[24.262 7.009 24.874 7.345 25.722 8.185] CP -[26.570 9.024 27.300 9.192 27.913 8.688] CP -[28.525 8.185 29.091 7.681 29.609 7.177] CP -[30.127 6.674 30.692 5.771 31.305 4.470] CP -[31.917 3.169 32.553 2.098 33.213 1.259] CP -[33.872 0.419 34.320 0.167 34.555 0.503] CP -[34.791 0.839 35.027 1.888 35.262 3.651] CP -[35.498 5.414 35.757 7.135 36.039 8.814] CP -[36.322 10.493 36.487 11.732 36.534 12.529] CP -[36.581 13.327 36.840 14.271 37.311 15.362] CP -[37.783 16.454 38.348 16.832 39.007 16.496] CP -[39.667 16.160 40.091 15.887 40.279 15.677] CP -[40.468 15.467 40.751 14.817 41.127 13.725] CP -[41.504 12.634 41.787 11.354 41.975 9.885] CP -[42.164 8.416 42.494 6.925 42.965 5.414] CP -[43.436 3.903 43.789 3.085 44.025 2.959] CP -[44.260 2.833 44.708 3.127 45.367 3.840] CP -[46.027 4.554 46.475 5.624 46.710 7.051] CP -[46.946 8.479 47.205 9.507 47.487 10.137] CP -[47.770 10.766 48.076 11.060 48.406 11.018] CP -[48.736 10.976 49.113 10.640 49.537 10.011] CP -[49.961 9.381 50.385 8.646 50.809 7.807] CP -[51.233 6.967 51.680 6.779 52.152 7.240] CP -[52.623 7.702 52.905 8.059 53.000 8.311] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -2.897 209.463 184.403 0.000 0.000 11.404 11.811 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {3.258 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {0.500 0.500 0.500 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 -2.897 228.265 182.440 0.000 0.000 6.516 70.476 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -2.897 219.297 184.303 0.000 0.000 10.182 7.086 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -2.897 228.801 180.123 0.000 0.000 7.738 11.024 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {7.250 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {DR} def -/flipRatio 0.508 def -/rampAngle 90 def -/rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def -/PC {} def -/RF {} def -1.000 0.680 195.683 78.612 0.000 0.000 14.500 30.776 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 191.412 83.570 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 191.412 83.569 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 204.091 99.227 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.680 204.091 99.227 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.791 207.273 89.067 198.588 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 102.320 205.465 90.523 195.913 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.310 210.314 86.514 200.762 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0.680 226.295 99.547 0.000 0.000 4.027 51.578 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 141.264 243.280 143.545 240.463 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 252.000 108.000 0.000 0.000 72.000 117.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 288.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.000 288.000 72.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 288.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.000 288.000 225.000 288.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 267.500 234.500 0.000 0.000 14.000 64.781 rect -%@EndRect -gsave -266.890 274.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -32.000 3.000 S -( ) -27.101 3.000 S -(c) -24.101 3.000 S -(a) -18.775 3.000 S -(l) -13.449 3.000 S -(l) -10.115 3.000 S -( ) -6.781 3.000 S -(J) -3.781 3.000 S -(u) 0.888 3.000 S -(l) 6.888 3.000 S -(i) 10.222 3.000 S -(a) 13.556 3.000 S -(n) 18.882 3.000 S -( ) 24.882 3.000 S -(") 27.882 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 294.500 234.500 0.000 0.000 14.000 72.791 rect -%@EndRect -gsave -270.895 301.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -36.000 3.000 S -( ) -31.101 3.000 S -(d) -28.101 3.000 S -(i) -22.101 3.000 S -(a) -18.767 3.000 S -(l) -13.441 3.000 S -( ) -10.107 3.000 S -(3) -7.107 3.000 S -(3) -1.107 3.000 S -(2) 4.892 3.000 S -(6) 10.892 3.000 S -(5) 16.892 3.000 S -(4) 22.892 3.000 S -( ) 28.892 3.000 S -(") 31.892 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 295.874 43.117 0.000 0.000 17.000 53.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[53.000 8.185] CP -[52.811 5.498 52.434 3.567 51.869 2.392] CP -[51.304 1.217 50.809 0.923 50.385 1.511] CP -[49.961 2.098 49.584 3.358 49.254 5.288] CP -[48.924 7.219 48.665 8.856 48.477 10.199] CP -[48.288 11.543 48.053 12.760 47.770 13.851] CP -[47.488 14.943 47.040 15.635 46.428 15.929] CP -[45.815 16.223 45.367 15.929 45.085 15.048] CP -[44.802 14.166 44.661 13.075 44.661 11.774] CP -[44.661 10.472 44.449 9.171 44.025 7.870] CP -[43.601 6.569 43.200 5.645 42.824 5.100] CP -[42.447 4.554 42.093 4.680 41.764 5.477] CP -[41.434 6.275 41.127 7.282 40.845 8.500] CP -[40.562 9.717 40.209 10.724 39.785 11.522] CP -[39.361 12.319 38.913 12.571 38.442 12.277] CP -[37.971 11.983 37.665 11.732 37.524 11.522] CP -[37.382 11.312 37.194 10.640 36.958 9.507] CP -[36.723 8.374 36.322 7.387 35.757 6.548] CP -[35.192 5.708 34.697 5.540 34.273 6.044] CP -[33.849 6.548 33.566 7.198 33.425 7.996] CP -[33.284 8.793 33.072 9.444 32.789 9.948] CP -[32.506 10.451 32.106 10.598 31.587 10.388] CP -[31.069 10.179 30.622 9.633 30.245 8.751] CP -[29.868 7.870 29.491 7.345 29.114 7.177] CP -[28.737 7.009 28.125 7.345 27.277 8.185] CP -[26.429 9.024 25.699 9.192 25.086 8.688] CP -[24.474 8.185 23.908 7.681 23.390 7.177] CP -[22.872 6.674 22.307 5.771 21.694 4.470] CP -[21.082 3.169 20.446 2.098 19.786 1.259] CP -[19.127 0.419 18.679 0.167 18.444 0.503] CP -[18.208 0.839 17.972 1.888 17.737 3.651] CP -[17.501 5.414 17.242 7.135 16.960 8.814] CP -[16.677 10.493 16.512 11.732 16.465 12.529] CP -[16.418 13.327 16.159 14.271 15.688 15.362] CP -[15.216 16.454 14.651 16.832 13.992 16.496] CP -[13.332 16.160 12.908 15.887 12.720 15.677] CP -[12.531 15.467 12.248 14.817 11.872 13.725] CP -[11.495 12.634 11.212 11.354 11.024 9.885] CP -[10.835 8.416 10.505 6.925 10.034 5.414] CP -[9.563 3.903 9.210 3.085 8.974 2.959] CP -[8.739 2.833 8.291 3.127 7.632 3.840] CP -[6.972 4.554 6.524 5.624 6.289 7.051] CP -[6.053 8.479 5.794 9.507 5.512 10.137] CP -[5.229 10.766 4.923 11.060 4.593 11.018] CP -[4.263 10.976 3.886 10.640 3.462 10.011] CP -[3.038 9.381 2.614 8.646 2.190 7.807] CP -[1.766 6.967 1.319 6.779 0.847 7.240] CP -[0.376 7.702 0.094 8.059 0.000 8.311] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/recnetlev.eps b/HTKBook/HTKFigs/recnetlev.eps deleted file mode 100644 index 0d85ba0..0000000 --- a/HTKBook/HTKFigs/recnetlev.eps +++ /dev/null @@ -1,2197 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: recnetlev.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/2/95 10:25:29 a.m. -%%BoundingBox: 98.500 490.500 360.486 734.500 -%%QDBoundingBox: 98.500 57.500 360.486 301.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.666 72.000 99.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.666 72.000 171.000 72.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 238.000 158.000 0.000 0.000 45.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -158.000 263.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 157.999 261.666 158.000 255.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.000 153.000 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.666 288.000 180.000 288.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 238.000 212.000 0.000 0.000 45.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -212.000 263.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 211.999 261.666 212.000 255.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.000 207.000 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 259.666 288.000 234.000 288.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 238.000 266.000 0.000 0.000 45.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -266.000 263.000 moveto -/Triangular 9.399 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 265.999 261.666 266.000 255.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 274.000 261.000 0.000 0.000 27.000 27.000 rect -%@EndOval -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 313.666 288.000 288.000 288.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 288.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.666 288.000 126.000 288.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 157.000 135.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.666 171.000 171.000 171.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 157.000 207.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -279.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.666 171.000 243.000 171.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -351.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 349.666 171.000 315.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 157.000 279.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.000 171.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.666 171.000 99.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 58.000 126.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.666 72.000 252.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 58.000 207.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.000 72.000 moveto -/Triangular 9.399 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 358.666 72.000 333.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 58.000 288.000 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 171.000 207.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 351.000 171.000 255.000 73.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 288.000 207.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.000 288.000 243.000 171.000 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 320.500 0.000 0.000 31.000 31.875 rect -%@EndRect -gsave -336.437 104.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -15.000 -3.000 S -(o) -1.786 -3.000 S -(r) 5.213 -3.000 S -(d) 9.875 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -12.665 12.000 S -(e) -8.775 12.000 S -(v) -2.562 12.000 S -(e) 4.437 12.000 S -(l) 10.651 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 187.500 311.500 0.000 0.000 31.000 48.986 rect -%@EndRect -gsave -335.993 203.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.000 -3.000 S -(e) -13.889 -3.000 S -(t) -7.675 -3.000 S -(w) -3.786 -3.000 S -(o) 6.324 -3.000 S -(r) 13.324 -3.000 S -(k) 17.986 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.110 12.000 S -(e) -9.220 12.000 S -(v) -3.006 12.000 S -(e) 3.993 12.000 S -(l) 10.207 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.500 321.500 0.000 0.000 31.000 35.006 rect -%@EndRect -gsave -339.003 275.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 -3.000 S -(M) -6.889 -3.000 S -(M) 5.558 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.100 12.000 S -(e) -9.210 12.000 S -(v) -2.996 12.000 S -(e) 4.003 12.000 S -(l) 10.217 12.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 135.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -140.555 69.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 144.500 0.000 0.000 14.000 15.996 rect -%@EndRect -gsave -152.498 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -7.000 3.000 S -(-) -1.000 3.000 S -(1) 2.996 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 222.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -227.555 69.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 231.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -234.500 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 297.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -302.555 69.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.500 306.500 0.000 0.000 14.000 18.767 rect -%@EndRect -gsave -315.883 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -9.000 3.000 S -(+) -3.000 3.000 S -(1) 3.767 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 160.500 288.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -293.555 168.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 297.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -300.500 176.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 159.500 146.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -150.000 167.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 168.500 153.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -156.500 175.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 158.500 219.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -223.000 166.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 167.500 226.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -229.500 174.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 162.500 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -165.224 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 285.500 167.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -170.500 292.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 216.500 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -219.224 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 285.500 221.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -224.500 292.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 277.500 270.500 0.000 0.000 16.000 5.448 rect -%@EndRect -gsave -273.224 285.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 285.500 275.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -278.500 292.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 3.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/recsys.eps b/HTKBook/HTKFigs/recsys.eps deleted file mode 100644 index 0765ada..0000000 --- a/HTKBook/HTKFigs/recsys.eps +++ /dev/null @@ -1,1949 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: recsys.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/29/95 8:38:46 p.m. -%%BoundingBox: 29.500 126.177 416.484 557.862 -%%QDBoundingBox: 29.500 234.137 416.484 665.822 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -277.086 502.511 moveto -/Triangular 14.099 7.049 false 389.082 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 278.834 503.482 340.866 537.944 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -275.669 593.220 moveto -/Triangular 14.099 7.049 false 330.547 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.410 592.236 340.866 556.370 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 486.921 107.007 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 580.464 207.637 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 587.303 227.602 0.000 0.000 16.000 31.875 rect -%@EndRect -gsave -243.540 595.303 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.897 4.000 S -(R) -5.787 4.000 S -(e) 3.550 4.000 S -(c) 9.764 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 649.822 186.744 0.000 0.000 16.000 110.824 rect -%@EndRect -gsave -242.156 657.822 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -54.755 4.000 S -(e) -45.418 4.000 S -(c) -39.204 4.000 S -(o) -32.990 4.000 S -(g) -25.990 4.000 S -(n) -18.990 4.000 S -(i) -11.990 4.000 S -(t) -8.100 4.000 S -(i) -4.210 4.000 S -(o) -0.321 4.000 S -(n) 6.678 4.000 S -( ) 13.678 4.000 S -(O) 17.178 4.000 S -(u) 27.289 4.000 S -(t) 34.289 4.000 S -(p) 38.178 4.000 S -(u) 45.178 4.000 S -(t) 52.178 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 486.921 207.637 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 493.759 227.602 0.000 0.000 16.000 30.324 rect -%@EndRect -gsave -242.764 501.759 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.897 4.000 S -(N) -4.787 4.000 S -(e) 5.323 4.000 S -(t) 11.536 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 494.492 124.500 0.000 0.000 16.000 34.213 rect -%@EndRect -gsave -141.606 502.492 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(D) -6.889 4.000 S -(i) 3.220 4.000 S -(c) 7.110 4.000 S -(t) 13.324 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.637 502.511 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.637 502.511 176.456 502.511 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -241.653 580.464 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 241.653 578.464 241.653 518.102 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.070 649.913 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.070 647.913 243.070 610.228 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 530.858 338.031 0.000 0.000 29.763 72.283 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 538.283 346.535 0.000 0.000 16.000 56.396 rect -%@EndRect -gsave -374.733 546.283 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.964 4.000 S -(M) -17.854 4.000 S -(M) -5.405 4.000 S -( ) 7.042 4.000 S -(S) 10.542 4.000 S -(e) 18.328 4.000 S -(t) 24.542 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.637 594.637 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 205.637 594.637 70.157 594.637 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 576.759 29.500 0.000 0.000 31.000 40.427 rect -%@EndRect -gsave -49.713 592.259 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.000 -3.000 S -(p) -12.213 -3.000 S -(e) -5.213 -3.000 S -(e) 1.000 -3.000 S -(c) 7.213 -3.000 S -(h) 13.427 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -14.562 12.000 S -(n) -9.899 12.000 S -(p) -2.899 12.000 S -(u) 4.100 12.000 S -(t) 11.100 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <1F1F1F8F8F8FC7C7C7E3E3E3F1F1F1F8F8F87C7C7C3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 458.574 91.417 0.000 0.000 168.661 215.433 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 607.893 101.429 0.000 0.000 16.000 36.544 rect -%@EndRect -gsave -119.701 615.893 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -18.070 4.000 S -(V) -7.960 4.000 S -10.000 (_Times-Roman) fess -(I) 2.149 4.000 S -(T) 5.646 4.000 S -(E) 12.060 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 409.988 105.003 0.000 0.000 16.000 59.869 rect -%@EndRect -gsave -134.938 417.988 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -29.496 4.000 S -(i) -19.385 4.000 S -(c) -15.496 4.000 S -(t) -9.282 4.000 S -(i) -5.392 4.000 S -(o) -1.502 4.000 S -(n) 5.497 4.000 S -(a) 12.497 4.000 S -(r) 18.710 4.000 S -(y) 23.373 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 403.299 98.503 0.000 0.000 29.763 72.283 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 392.980 209.885 0.000 0.000 31.000 84.362 rect -%@EndRect -gsave -252.067 408.480 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -41.614 -3.000 S -(o) -28.400 -3.000 S -(r) -21.400 -3.000 S -(d) -16.738 -3.000 S -( ) -9.738 -3.000 S -(N) -6.238 -3.000 S -(e) 3.872 -3.000 S -(t) 10.086 -3.000 S -(w) 13.975 -3.000 S -(o) 24.086 -3.000 S -(r) 31.086 -3.000 S -(k) 35.748 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.157 12.000 S -(S) -11.495 12.000 S -(L) -3.708 12.000 S -(F) 4.842 12.000 S -(\)) 12.629 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 382.039 196.299 0.000 0.000 46.771 109.133 rect -%@EndRect -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -141.023 486.921 moveto -/Triangular 14.099 7.049 false 262.523 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 140.762 484.938 133.937 433.062 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 534.169 171.413 0.000 0.000 31.000 68.434 rect -%@EndRect -gsave -205.630 549.669 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -34.086 -4.000 S -(e) -24.748 -4.000 S -(c) -18.534 -4.000 S -(o) -12.320 -4.000 S -(g) -5.320 -4.000 S -(n) 1.679 -4.000 S -(i) 8.679 -4.000 S -(t) 12.568 -4.000 S -(i) 16.458 -4.000 S -(o) 20.347 -4.000 S -(n) 27.347 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -24.362 11.000 S -(e) -14.252 11.000 S -(t) -8.038 11.000 S -(w) -4.148 11.000 S -(o) 5.961 11.000 S -(r) 12.961 11.000 S -(k) 17.623 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -244.488 486.921 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 244.488 484.921 244.488 428.811 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 313.500 149.909 0.000 0.000 16.000 44.736 rect -%@EndRect -gsave -172.277 321.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.590 4.000 S -(P) -11.480 4.000 S -10.000 (_Times-Roman) fess -(A) -3.694 4.000 S -(R) 3.888 4.000 S -(S) 10.892 4.000 S -(E) 16.731 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 306.921 135.353 0.000 0.000 29.763 69.448 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 242.500 95.169 0.000 0.000 31.000 89.031 rect -%@EndRect -gsave -139.685 258.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -33.847 -3.000 S -(B) -25.295 -3.000 S -(N) -15.958 -3.000 S -(F) -5.847 -3.000 S -( ) 1.938 -3.000 S -(S) 5.438 -3.000 S -(t) 13.224 -3.000 S -(y) 17.114 -3.000 S -(l) 24.114 -3.000 S -(e) 28.003 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -44.330 12.000 S -(r) -34.220 12.000 S -(a) -29.558 12.000 S -(m) -23.344 12.000 S -(m) -12.454 12.000 S -(a) -1.564 12.000 S -(r) 4.648 12.000 S -( ) 9.310 12.000 S -(R) 12.810 12.000 S -(u) 22.148 12.000 S -(l) 29.148 12.000 S -(e) 33.038 12.000 S -(s) 39.252 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 234.637 80.078 0.000 0.000 46.771 120.472 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -159.448 306.921 moveto -/Triangular 14.099 7.049 false 232.142 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 158.220 305.342 139.606 281.409 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -210.472 372.118 moveto -/Triangular 14.099 7.049 false 226.235 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.088 370.674 177.874 338.102 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 314.917 311.484 0.000 0.000 16.000 44.524 rect -%@EndRect -gsave -333.746 322.917 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -22.015 4.000 S -(B) -11.905 4.000 S -10.000 (_Times-Roman) fess -(U) -2.567 4.000 S -(I) 5.015 4.000 S -(L) 8.511 4.000 S -(D) 14.925 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 308.338 296.928 0.000 0.000 29.763 69.448 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.917 310.602 0.000 0.000 31.000 89.031 rect -%@EndRect -gsave -355.118 259.417 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -41.952 -3.000 S -(x) -33.401 -3.000 S -(t) -26.401 -3.000 S -(e) -22.511 -3.000 S -(n) -16.297 -3.000 S -(d) -9.297 -3.000 S -(e) -2.297 -3.000 S -(d) 3.916 -3.000 S -( ) 10.916 -3.000 S -(H) 14.416 -3.000 S -(T) 24.526 -3.000 S -(K) 33.078 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -11.443 12.000 S -(L) -3.657 12.000 S -(F) 4.893 12.000 S -( ) 12.680 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 234.637 295.511 0.000 0.000 46.771 120.472 rect -%@EndRect -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -301.181 370.700 moveto -/Triangular 14.099 7.049 false 308.068 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 302.413 369.125 326.692 338.102 Line -%@EndLine -%@BeginRuler -%@ 3.5433070866141730400e-1 viewScale -%@ 2.8222222222222224100e+0 realScale -%@ 8 realDivs -%@ 0300 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -336.614 308.338 moveto -/Triangular 14.099 7.049 false 308.311 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 337.853 306.768 357.874 281.409 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/regtree1.eps b/HTKBook/HTKFigs/regtree1.eps deleted file mode 100644 index 71e53f2..0000000 --- a/HTKBook/HTKFigs/regtree1.eps +++ /dev/null @@ -1,176 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: regtree1.fig -%%Creator: fig2dev Version 3.1 Patchlevel 1 -%%CreationDate: Thu May 29 13:36:46 1997 -%%For: djk@ecrlpro1 (D.J. Kershaw) -%%Orientation: Portrait -%%BoundingBox: 0 0 254 212 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {} def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --116.0 286.0 translate -1 -1 scale - -/clp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/l {lineto} bind def -/m {moveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit - 0.06000 0.06000 sc -15.000 slw -% Ellipse -n 4050 1607 348 348 0 360 DrawEllipse gs col-1 s gr - -% Ellipse -n 2889 3000 348 348 0 360 DrawEllipse gs col-1 s gr - - [100.0] 0 setdash -% Ellipse -n 3470 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - [] 0 setdash -% Ellipse -n 2309 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - -% Ellipse -n 5211 3000 348 348 0 360 DrawEllipse gs col-1 s gr - - [100.0] 0 setdash -% Ellipse -n 5791 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - [] 0 setdash - [100.0] 0 setdash -% Ellipse -n 4630 4393 348 348 0 360 DrawEllipse gs col7 0.85 shd ef gr gs col-1 s gr - [] 0 setdash -% Polyline -n 3818 1955 m 3121 2652 l gs col-1 s gr -7.500 slw -n 3333.13 2524.72 m 3121.00 2652.00 l 3248.28 2439.87 l 3291.21 2482.79 l 3333.13 2524.72 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline -n 4282 1955 m 4979 2652 l gs col-1 s gr -7.500 slw -n 4851.72 2439.87 m 4979.00 2652.00 l 4766.87 2524.72 l 4809.79 2482.79 l 4851.72 2439.87 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline -n 2657 3348 m 2424 3987 l gs col-1 s gr -7.500 slw -n 2562.59 3782.08 m 2424.00 3987.00 l 2449.85 3740.97 l 2506.72 3762.02 l 2562.59 3782.08 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline - [100.0] 0 setdash -n 3147 3346 m 3379 3985 l gs col-1 s gr [] 0 setdash -7.500 slw -n 3353.49 3738.93 m 3379.00 3985.00 l 3240.70 3779.88 l 3297.60 3759.91 l 3353.49 3738.93 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline - [100.0] 0 setdash -n 4979 3348 m 4747 3987 l gs col-1 s gr [] 0 setdash -7.500 slw -n 4885.30 3781.88 m 4747.00 3987.00 l 4772.51 3740.93 l 4829.40 3761.91 l 4885.30 3781.88 l clp gs 0.00 setgray ef gr gs col-1 s gr -15.000 slw -% Polyline - [100.0] 0 setdash -n 5469 3346 m 5701 3985 l gs col-1 s gr [] 0 setdash -7.500 slw -n 5675.49 3738.93 m 5701.00 3985.00 l 5562.70 3779.88 l 5619.60 3759.91 l 5675.49 3738.93 l clp gs 0.00 setgray ef gr gs col-1 s gr -/Times-Roman findfont 285.00 scalefont setfont -4050 1723 m -gs 1 -1 sc (1) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -2889 3116 m -gs 1 -1 sc (2) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -5211 3116 m -gs 1 -1 sc (3) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -2309 4509 m -gs 1 -1 sc (4) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -3470 4509 m -gs 1 -1 sc (5) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -4630 4509 m -gs 1 -1 sc (6) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -/Times-Roman findfont 285.00 scalefont setfont -5791 4509 m -gs 1 -1 sc (7) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr -$F2psEnd -restore diff --git a/HTKBook/HTKFigs/restloop.eps b/HTKBook/HTKFigs/restloop.eps deleted file mode 100644 index 2e7aebf..0000000 --- a/HTKBook/HTKFigs/restloop.eps +++ /dev/null @@ -1,1516 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: restloop.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 9:50:33 a.m. -%%BoundingBox: 144.000 388.000 401.000 767.000 -%%QDBoundingBox: 144.000 25.000 401.000 404.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 111.000 172.000 0.000 0.000 39.000 138.955 rect -%@EndRect -gsave -241.477 130.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -68.500 -5.000 S -(o) -58.489 -5.000 S -(r) -49.489 -5.000 S -(w) -43.495 -5.000 S -(a) -30.496 -5.000 S -(r) -22.506 -5.000 S -(d) -16.512 -5.000 S -(/) -7.512 -5.000 S -(B) -2.511 -5.000 S -(a) 9.494 -5.000 S -(c) 17.483 -5.000 S -(k) 25.472 -5.000 S -(w) 34.472 -5.000 S -(a) 47.471 -5.000 S -(r) 55.460 -5.000 S -(d) 61.455 -5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(A) -36.520 14.000 S -(l) -23.521 14.000 S -(g) -18.520 14.000 S -(o) -9.520 14.000 S -(r) -0.520 14.000 S -(i) 5.473 14.000 S -(t) 10.474 14.000 S -(h) 15.475 14.000 S -(m) 24.475 14.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 201.000 154.000 0.000 0.000 20.000 185.950 rect -%@EndRect -gsave -246.975 211.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -92.500 5.000 S -(p) -79.500 5.000 S -(d) -70.500 5.000 S -(a) -61.500 5.000 S -(t) -53.511 5.000 S -(e) -48.510 5.000 S -( ) -40.521 5.000 S -(H) -36.021 5.000 S -(M) -23.022 5.000 S -(M) -7.017 5.000 S -( ) 8.987 5.000 S -(P) 13.487 5.000 S -(a) 23.498 5.000 S -(r) 31.487 5.000 S -(a) 37.481 5.000 S -(m) 45.470 5.000 S -(e) 59.471 5.000 S -(t) 67.460 5.000 S -(e) 72.461 5.000 S -(r) 80.451 5.000 S -(s) 86.445 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 106.500 144.500 0.000 0.000 45.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 187.500 144.500 0.000 0.000 45.000 207.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 199.000 0.000 0.000 20.000 86.967 rect -%@EndRect -gsave -242.483 294.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -42.500 5.000 S -(o) -30.494 5.000 S -(n) -21.494 5.000 S -(v) -12.494 5.000 S -(e) -3.494 5.000 S -(r) 4.495 5.000 S -(g) 10.489 5.000 S -(e) 19.489 5.000 S -(d) 27.478 5.000 S -(?) 36.478 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 106.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 104.500 243.500 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 187.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 185.500 243.500 151.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 268.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 266.500 243.500 232.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 266.500 184.500 0.000 0.000 54.000 117.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[58.500 0.000] CP -[0.000 27.000] CP -[58.500 54.000 ] CP -[117.000 27.000 ] CP -[117.000 27.000 58.500 0.000 58.500 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 293.500 301.500 293.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 81.500 400.500 293.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 81.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.500 81.499 400.500 81.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 269.000 325.000 0.000 0.000 20.000 21.999 rect -%@EndRect -gsave -335.999 279.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -10.500 5.000 S -(o) 2.499 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 323.000 258.000 0.000 0.000 20.000 27.993 rect -%@EndRect -gsave -271.996 333.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -13.500 5.000 S -(e) -0.500 5.000 S -(s) 7.488 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.000 360.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.999 358.000 243.000 320.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 372.000 181.000 0.000 0.000 20.000 121.491 rect -%@EndRect -gsave -241.745 382.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -60.500 5.000 S -(s) -49.504 5.000 S -(t) -42.500 5.000 S -(i) -37.499 5.000 S -(m) -32.498 5.000 S -(a) -18.497 5.000 S -(t) -10.507 5.000 S -(e) -5.506 5.000 S -(d) 2.482 5.000 S -( ) 11.482 5.000 S -(H) 15.982 5.000 S -(M) 28.981 5.000 S -(M) 44.986 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 358.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.000 199.000 0.000 0.000 20.000 92.496 rect -%@EndRect -gsave -245.248 49.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -45.500 5.000 S -(n) -39.505 5.000 S -(i) -30.505 5.000 S -(t) -25.504 5.000 S -(i) -20.503 5.000 S -(a) -15.502 5.000 S -(l) -7.513 5.000 S -( ) -2.512 5.000 S -(H) 1.987 5.000 S -(M) 14.986 5.000 S -(M) 30.991 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 25.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/segstore.eps b/HTKBook/HTKFigs/segstore.eps deleted file mode 100644 index d9a4261..0000000 --- a/HTKBook/HTKFigs/segstore.eps +++ /dev/null @@ -1,606 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: segstore.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:16:48 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 429 569 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --31.0 620.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 2034 3350 m 2500 3350 l gs col-1 s gr -% Polyline -n 2091 3409 m 2441 3409 l gs col-1 s gr -% Polyline -n 2091 3466 m 2384 3466 l gs col-1 s gr -% Polyline -n 2150 3525 m 2325 3525 l gs col-1 s gr -% Polyline -n 1916 3116 m 2266 3116 l 2266 3350 l gs col-1 s gr -% Ellipse -n 5591 3491 66 66 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 5709 3725 m 6175 3725 l gs col-1 s gr -% Polyline -n 5766 3784 m 6116 3784 l gs col-1 s gr -% Polyline -n 5766 3841 m 6059 3841 l gs col-1 s gr -% Polyline -n 5825 3900 m 6000 3900 l gs col-1 s gr -% Polyline -n 5591 3491 m 5941 3491 l 5941 3725 l gs col-1 s gr -% Polyline -n 4800 1200 m 5700 1200 l 5700 2100 l 4800 2100 l cp gs col-1 s gr -% Polyline -n 4800 1500 m 5700 1500 l gs col-1 s gr -% Polyline -n 4800 1800 m 5700 1800 l gs col-1 s gr -% Polyline -n 4800 2700 m 5700 2700 l 5700 3600 l 4800 3600 l cp gs col-1 s gr -% Polyline -n 4800 3000 m 5700 3000 l gs col-1 s gr -% Polyline -n 4800 3300 m 5700 3300 l gs col-1 s gr -% Ellipse -n 3525 9300 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 3675 9600 m 4275 9600 l gs col-1 s gr -% Polyline -n 3750 9675 m 4200 9675 l gs col-1 s gr -% Polyline -n 3750 9750 m 4125 9750 l gs col-1 s gr -% Polyline -n 3825 9825 m 4050 9825 l gs col-1 s gr -% Polyline -n 3525 9300 m 3975 9300 l 3975 9600 l gs col-1 s gr -% Polyline -n 2775 5850 m 3675 5850 l 3675 6750 l 2775 6750 l cp gs col-1 s gr -% Polyline -n 2775 6150 m 3675 6150 l gs col-1 s gr -% Polyline -n 2775 6450 m 3675 6450 l gs col-1 s gr -% Polyline -n 2775 8550 m 3675 8550 l 3675 9450 l 2775 9450 l cp gs col-1 s gr -% Polyline -n 2775 8850 m 3675 8850 l gs col-1 s gr -% Polyline -n 2775 9150 m 3675 9150 l gs col-1 s gr -% Ellipse -n 2587 4837 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 2813 4836 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 3037 4837 54 54 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 1087 4875 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 1650 8100 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 1725 8400 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 3525 6300 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 3450 9000 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 3562 6600 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 4650 6375 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 900 4725 m 2400 4725 l 2400 5025 l 900 5025 l cp gs col-1 s gr -% Polyline -n 3300 4725 m 4800 4725 l 4800 5025 l 3300 5025 l cp gs col-1 s gr -% Polyline -n 1200 4725 m 1200 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 1500 4725 m 1500 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 1800 4725 m 1800 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 2100 4725 m 2100 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 3600 4725 m 3600 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 3900 4725 m 3900 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 4200 4725 m 4200 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 4500 4725 m 4500 5025 l gs col7 0.00 shd ef gr gs col-1 s gr -% Polyline -n 4500 7725 m 5700 7725 l 5700 8325 l 4500 8325 l cp gs col-1 s gr -% Polyline -n 4500 8025 m 5700 8025 l gs col-1 s gr -% Polyline -n 4800 7725 m 4800 8325 l gs col-1 s gr -% Polyline -n 5100 7725 m 5100 8325 l gs col-1 s gr -% Polyline -n 5400 7725 m 5400 8325 l gs col-1 s gr -% Polyline -n 4500 8325 m 4800 8325 l 4800 8625 l 4500 8625 l cp gs col-1 s gr -% Polyline -n 4500 6225 m 5100 6225 l 5100 6525 l 4500 6525 l cp gs col-1 s gr -% Polyline -n 4800 6225 m 4800 6525 l gs col-1 s gr -% Polyline -n 675 6750 m 1875 6750 l 1875 8550 l 675 8550 l cp gs col-1 s gr -% Polyline -n 675 7350 m 1875 7350 l gs col-1 s gr -% Polyline -n 675 7650 m 1875 7650 l gs col-1 s gr -% Polyline -n 675 7950 m 1875 7950 l gs col-1 s gr -% Polyline -n 675 8250 m 1875 8250 l gs col-1 s gr -% Polyline -n 675 7050 m 1875 7050 l gs col-1 s gr -% Interp Spline -gs clippath -666 6600 m 668 6723 l 608 6616 l 650 6772 l 708 6757 l cp clip -n 1050 4875 m - 696.8 5305.9 565.5 5512.2 525 5700 curveto - 481.1 5903.7 518.6 6166.2 675 6750 curveto - gs col-1 s gr - gr - -% arrowhead -n 666 6600 m 668 6723 l 608 6616 l 637 6608 l 666 6600 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4516 9087 m 4559 9202 l 4467 9121 l 4559 9254 l 4608 9220 l cp clip - [66.7] 0 sd -n 3450 9000 m - 3851.7 8838.8 4039.2 8801.3 4200 8850 curveto - 4311.5 8883.8 4405.2 8977.5 4575 9225 curveto - gs col-1 s gr - gr - [] 0 sd -% arrowhead -n 4516 9087 m 4559 9202 l 4467 9121 l 4492 9104 l 4516 9087 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2855 5723 m 2784 5824 l 2799 5702 l 2742 5853 l 2798 5875 l cp clip -n 1650 8100 m - 1935.5 8208.3 2066.7 8208.3 2175 8100 curveto - 2896.9 7378.1 1453.1 6196.9 2175 5475 curveto - 2340.0 5310.0 2610.0 5310.0 2775 5475 curveto - 2852.3 5552.3 2852.3 5646.1 2775 5850 curveto - gs col-1 s gr - gr - -% arrowhead -n 2855 5723 m 2784 5824 l 2799 5702 l 2827 5712 l 2855 5723 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2666 8446 m 2752 8535 l 2635 8497 l 2772 8583 l 2804 8533 l cp clip -n 1725 8400 m - 2062.6 8324.5 2212.6 8305.8 2325 8325 curveto - 2418.5 8341.0 2531.0 8397.3 2775 8550 curveto - gs col-1 s gr - gr - -% arrowhead -n 2666 8446 m 2752 8535 l 2635 8497 l 2650 8472 l 2666 8446 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4366 6157 m 4473 6217 l 4350 6215 l 4507 6258 l 4522 6200 l cp clip -n 3525 6300 m - 3863.2 6190.2 4013.2 6152.7 4125 6150 curveto - 4194.2 6148.4 4287.9 6167.1 4500 6225 curveto - gs col-1 s gr - gr - -% arrowhead -n 4366 6157 m 4473 6217 l 4350 6215 l 4358 6186 l 4366 6157 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -3326 8439 m 3238 8526 l 3275 8408 l 3192 8547 l 3243 8578 l cp clip -n 3600 6600 m - 3732.9 7060.5 3770.4 7266.7 3750 7425 curveto - 3719.8 7659.3 3588.5 7940.6 3225 8550 curveto - gs col-1 s gr - gr - -% arrowhead -n 3326 8439 m 3238 8526 l 3275 8408 l 3300 8424 l 3326 8439 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4428 7593 m 4482 7704 l 4382 7632 l 4487 7756 l 4533 7717 l cp clip -n 4650 6375 m - 4280.7 6634.5 4149.4 6784.5 4125 6975 curveto - 4099.3 7175.3 4193.1 7362.8 4500 7725 curveto - gs col-1 s gr - gr - -% arrowhead -n 4428 7593 m 4482 7704 l 4382 7632 l 4405 7613 l 4428 7593 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -975 4650 m -gs 1 -1 sc (0) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1275 4650 m -gs 1 -1 sc (1) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1575 4650 m -gs 1 -1 sc (2) col-1 sh gr -% Ellipse -n 1916 3116 66 66 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -/Times-Roman ff 180.00 scf sf -1875 4650 m -gs 1 -1 sc (3) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4575 5850 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2175 4650 m -gs 1 -1 sc (4) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3300 4650 m -gs 1 -1 sc (95) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3600 4650 m -gs 1 -1 sc (96) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3900 4650 m -gs 1 -1 sc (97) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4200 4650 m -gs 1 -1 sc (98) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4500 4650 m -gs 1 -1 sc (99) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 6375 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 6675 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Bold ff 180.00 scf sf -825 6600 m -gs 1 -1 sc (Sequence) col-1 sh gr -/Times-Bold ff 180.00 scf sf -2925 5700 m -gs 1 -1 sc (ItemBlock) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4725 7575 m -gs 1 -1 sc (fv[SMAX]) col-1 sh gr -/Times-Bold ff 180.00 scf sf -4500 7350 m -gs 1 -1 sc (Feature Vector) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 6975 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 8175 m -gs 1 -1 sc (hd) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 8475 m -gs 1 -1 sc (tl) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 7875 m -gs 1 -1 sc (blkSize = 2) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 6075 m -gs 1 -1 sc (used = 2) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 9075 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 9375 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2850 8775 m -gs 1 -1 sc (used = 1) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 7275 m -gs 1 -1 sc (nItems = 3) col-1 sh gr -/Times-Roman ff 180.00 scf sf -825 7575 m -gs 1 -1 sc (nFree = 1) col-1 sh gr -% Ellipse -n 1875 2850 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 4012 2850 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 4012 3150 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 5475 3150 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 5559 1650 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Ellipse -n 5550 1950 84 84 0 360 DrawEllipse gs 0.00 setgray ef gr gs col-1 s gr - -% Polyline -n 600 1200 m 2100 1200 l 2100 3300 l 600 3300 l cp gs col-1 s gr -% Polyline -n 600 1500 m 2100 1500 l gs col-1 s gr -% Polyline -n 600 1800 m 2100 1800 l gs col-1 s gr -% Polyline -n 600 2100 m 2100 2100 l gs col-1 s gr -% Polyline -n 600 2400 m 2100 2400 l gs col-1 s gr -% Polyline -n 600 2700 m 2100 2700 l gs col-1 s gr -% Polyline -n 600 3000 m 2100 3000 l gs col-1 s gr -% Polyline -n 600 3000 m 2100 3000 l gs col-1 s gr -% Polyline -n 3000 1500 m 4200 1500 l 4200 3300 l 3000 3300 l cp gs col-1 s gr -% Polyline -n 3000 2100 m 4200 2100 l gs col-1 s gr -% Polyline -n 3000 2400 m 4200 2400 l gs col-1 s gr -% Polyline -n 3000 2700 m 4200 2700 l gs col-1 s gr -% Polyline -n 3000 3000 m 4200 3000 l gs col-1 s gr -% Polyline -n 3000 1800 m 4200 1800 l gs col-1 s gr -% Interp Spline -gs clippath -6322 3752 m 6298 3873 l 6262 3755 l 6271 3917 l 6331 3913 l cp clip - [66.7] 0 sd -n 5475 3150 m - 5749.1 3022.0 5880.3 3003.2 6000 3075 curveto - 6198.1 3193.8 6273.1 3400.0 6300 3900 curveto - gs col-1 s gr - gr - [] 0 sd -% arrowhead -n 6322 3752 m 6298 3873 l 6262 3755 l 6292 3753 l 6322 3752 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -5805 2593 m 5714 2677 l 5755 2560 l 5667 2696 l 5717 2729 l cp clip -n 5475 1950 m - 5796.1 1761.6 5927.3 1724.1 6000 1800 curveto - 6126.3 1931.9 6051.3 2156.9 5700 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 5805 2593 m 5714 2677 l 5755 2560 l 5780 2577 l 5805 2593 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4905 1093 m 4814 1177 l 4854 1060 l 4767 1196 l 4817 1229 l cp clip -n 3975 2850 m - 4219.7 2939.3 4332.2 2939.3 4425 2850 curveto - 4961.4 2333.8 3963.6 1416.2 4500 900 curveto - 4603.1 800.8 4796.9 800.0 4875 900 curveto - 4923.3 961.9 4904.6 1036.9 4800 1200 curveto - gs col-1 s gr - gr - -% arrowhead -n 4905 1093 m 4814 1177 l 4854 1060 l 4880 1076 l 4905 1093 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4715 2823 m 4789 2724 l 4770 2847 l 4833 2698 l 4778 2674 l cp clip -n 4050 3150 m - 4300.4 3196.6 4412.9 3196.6 4500 3150 curveto - 4604.8 3093.9 4679.8 2981.4 4800 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 4715 2823 m 4789 2724 l 4770 2847 l 4742 2835 l 4715 2823 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2963 1355 m 2988 1475 l 2909 1381 l 2979 1527 l 3034 1500 l cp clip -n 1875 2850 m - 2173.7 2885.2 2305.0 2866.5 2400 2775 curveto - 2800.7 2389.3 2329.4 1218.6 2700 1125 curveto - 2779.6 1104.9 2854.6 1198.6 3000 1500 curveto - gs col-1 s gr - gr - -% arrowhead -n 2963 1355 m 2988 1475 l 2909 1381 l 2936 1368 l 2963 1355 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -858 4581 m 887 4701 l 805 4609 l 880 4752 l 934 4724 l cp clip -n 5550 1575 m - 6188.6 1483.2 6469.8 1520.7 6675 1725 curveto - 7204.3 2251.9 7493.6 3244.6 6975 3900 curveto - 6227.7 4844.5 4547.0 4165.7 3825 4200 curveto - 3140.5 4232.5 1533.3 3383.3 825 4200 curveto - 731.1 4308.3 749.8 4439.5 900 4725 curveto - gs col-1 s gr - gr - -% arrowhead -n 858 4581 m 887 4701 l 805 4609 l 832 4595 l 858 4581 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -750 2625 m -gs 1 -1 sc (hasVq = FALSE) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 2325 m -gs 1 -1 sc (hasfv = TRUE) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 2025 m -gs 1 -1 sc (o) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 1425 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 2925 m -gs 1 -1 sc (fvSegs) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 3225 m -gs 1 -1 sc (vqSegs) col-1 sh gr -/Times-Bold ff 180.00 scf sf -975 1050 m -gs 1 -1 sc (SegStore) col-1 sh gr -/Times-Bold ff 180.00 scf sf -3225 1350 m -gs 1 -1 sc (Sequence) col-1 sh gr -/Times-Bold ff 180.00 scf sf -4950 1050 m -gs 1 -1 sc (ItemBlock) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 1725 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2925 m -gs 1 -1 sc (hd) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 3225 m -gs 1 -1 sc (tl) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2625 m -gs 1 -1 sc (blkSize = 100) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 1425 m -gs 1 -1 sc (used = 100) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 1725 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 2025 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 3225 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 3525 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 2925 m -gs 1 -1 sc (used = 34) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2025 m -gs 1 -1 sc (nItems = 134) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3150 2325 m -gs 1 -1 sc (nFree = 66) col-1 sh gr -/Times-Roman ff 180.00 scf sf -750 1725 m -gs 1 -1 sc (segLen = 2) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4575 6150 m -gs 1 -1 sc (0) col-1 sh gr -/Times-Roman ff 180.00 scf sf -4875 6150 m -gs 1 -1 sc (1) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2475 4425 m -gs 1 -1 sc (items) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/sequence.eps b/HTKBook/HTKFigs/sequence.eps deleted file mode 100644 index 050504a..0000000 --- a/HTKBook/HTKFigs/sequence.eps +++ /dev/null @@ -1,326 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: sequence.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 17:44:46 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.00 -%%Orientation: Portrait -%%BoundingBox: 0 0 362 238 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --143.0 307.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06000 0.06000 sc -/Times-Roman ff 180.00 scf sf -2700 2925 m -gs 1 -1 sc (nItems = 11) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 2625 m -gs 1 -1 sc (mem) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 3225 m -gs 1 -1 sc (nFree = 4) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 3525 m -gs 1 -1 sc (blkSize = 5) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 3825 m -gs 1 -1 sc (hd) col-1 sh gr -/Times-Roman ff 180.00 scf sf -2700 4125 m -gs 1 -1 sc (tl) col-1 sh gr -7.500 slw -% Polyline -n 6900 4200 m 8400 4200 l 8400 4500 l 6900 4500 l cp gs col-1 s gr -% Polyline -n 7200 4200 m 7200 4500 l gs col-1 s gr -% Polyline -n 7500 4200 m 7500 4500 l gs col-1 s gr -% Polyline -n 7800 4200 m 7800 4500 l gs col-1 s gr -% Polyline -n 8100 4200 m 8100 4500 l gs col-1 s gr -% Polyline -n 6900 1800 m 8400 1800 l 8400 2100 l 6900 2100 l cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7200 1800 m 7200 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7500 1800 m 7500 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7800 1800 m 7800 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 8100 1800 m 8100 2100 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 6900 3000 m 8400 3000 l 8400 3300 l 6900 3300 l cp gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7200 3000 m 7200 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7500 3000 m 7500 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 7800 3000 m 7800 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Polyline -n 8100 3000 m 8100 3300 l gs col7 0.75 shd ef gr gs col-1 s gr -% Ellipse -n 3750 3750 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 3781 4050 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 4381 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 3150 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 1950 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 2250 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 3450 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Ellipse -n 5850 4650 106 106 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 4800 1500 m 6000 1500 l 6000 2400 l 4800 2400 l cp gs col-1 s gr -% Polyline -n 5175 1500 m 5175 1500 l 5175 1500 l 5175 1500 l cp gs col-1 s gr -% Polyline -n 4800 2700 m 6000 2700 l 6000 3600 l 4800 3600 l cp gs col-1 s gr -% Polyline -n 4800 3900 m 6000 3900 l 6000 4800 l 4800 4800 l cp gs col-1 s gr -% Polyline -n 2400 2400 m 3975 2400 l 3975 4200 l 2400 4200 l cp gs col-1 s gr -% Polyline -n 4800 1800 m 6000 1800 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -5100 4125 m -gs 1 -1 sc (used = 1) col-1 sh gr -% Polyline -n 4800 2100 m 6000 2100 l gs col-1 s gr -% Polyline -n 4800 3000 m 6000 3000 l gs col-1 s gr -% Polyline -n 4800 3300 m 6000 3300 l gs col-1 s gr -% Polyline -n 4800 4200 m 6000 4200 l gs col-1 s gr -% Polyline -n 4800 4500 m 6000 4500 l gs col-1 s gr -% Polyline -n 5850 4650 m 6450 4650 l 6450 4950 l gs col-1 s gr -% Polyline -n 6225 5025 m 6675 5025 l gs col-1 s gr -% Polyline -n 6375 5100 m 6525 5100 l gs col-1 s gr -% Polyline -n 6150 4950 m 6825 4950 l gs col-1 s gr -% Polyline -gs clippath -6750 1791 m 6873 1803 l 6759 1850 l 6919 1828 l 6911 1768 l cp clip -n 5850 1950 m 6900 1800 l gs 0.75 setgray ef gr gs col-1 s gr gr - -% arrowhead -n 6750 1791 m 6873 1803 l 6759 1850 l 6754 1821 l 6750 1791 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6753 3012 m 6876 3024 l 6762 3071 l 6922 3049 l 6914 2989 l cp clip -n 5853 3171 m 6903 3021 l gs 0.75 setgray ef gr gs col-1 s gr gr - -% arrowhead -n 6753 3012 m 6876 3024 l 6762 3071 l 6757 3042 l 6753 3012 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -gs clippath -6753 4212 m 6876 4224 l 6762 4271 l 6922 4249 l 6914 4189 l cp clip -n 5853 4371 m 6903 4221 l gs 0.75 setgray ef gr gs col-1 s gr gr - -% arrowhead -n 6753 4212 m 6876 4224 l 6762 4271 l 6757 4242 l 6753 4212 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -n 2400 2700 m 3975 2700 l gs col-1 s gr -% Polyline -n 2400 3000 m 3975 3000 l gs col-1 s gr -% Polyline -n 2400 3300 m 3975 3300 l gs col-1 s gr -% Polyline -n 2400 3600 m 3975 3600 l gs col-1 s gr -% Polyline -n 2400 3900 m 3975 3900 l gs col-1 s gr -% Polyline -n 6900 4200 m 7200 4200 l 7200 4500 l 6900 4500 l cp gs col7 0.75 shd ef gr gs col-1 s gr -% Interp Spline -gs clippath -4711 1379 m 4779 1481 l 4671 1423 l 4791 1532 l 4831 1488 l cp clip -n 3750 3750 m - 4094.2 3356.7 4225.5 3169.2 4275 3000 curveto - 4404.9 2555.9 3777.5 1473.4 4200 1200 curveto - 4318.0 1123.6 4468.0 1198.6 4800 1500 curveto - gs col-1 s gr - gr - -% arrowhead -n 4711 1379 m 4779 1481 l 4671 1423 l 4691 1401 l 4711 1379 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -4676 3816 m 4775 3889 l 4653 3872 l 4802 3933 l 4825 3878 l cp clip -n 3750 4050 m - 3977.7 3844.0 4090.2 3769.0 4200 3750 curveto - 4325.6 3728.2 4475.6 3765.7 4800 3900 curveto - gs col-1 s gr - gr - -% arrowhead -n 4676 3816 m 4775 3889 l 4653 3872 l 4664 3844 l 4676 3816 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6137 2638 m 6021 2684 l 6101 2589 l 5970 2685 l 6005 2733 l cp clip -n 5850 2250 m - 6369.4 2056.9 6556.9 2019.4 6600 2100 curveto - 6647.9 2189.4 6497.9 2339.4 6000 2700 curveto - gs col-1 s gr - gr - -% arrowhead -n 6137 2638 m 6021 2684 l 6101 2589 l 6119 2614 l 6137 2638 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -6140 3852 m 6024 3898 l 6104 3803 l 5973 3899 l 6008 3947 l cp clip -n 5853 3464 m - 6372.4 3270.9 6559.9 3233.4 6603 3314 curveto - 6650.9 3403.4 6500.9 3553.4 6003 3914 curveto - gs col-1 s gr - gr - -% arrowhead -n 6140 3852 m 6024 3898 l 6104 3803 l 6122 3828 l 6140 3852 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -5100 2025 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 2325 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 3225 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 4425 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 3525 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 4725 m -gs 1 -1 sc (next) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 2925 m -gs 1 -1 sc (used = 5) col-1 sh gr -/Times-Roman ff 180.00 scf sf -7425 1575 m -gs 1 -1 sc (items) col-1 sh gr -/Times-Bold ff 180.00 scf sf -2850 2250 m -gs 1 -1 sc (Sequence) col-1 sh gr -/Times-Bold ff 180.00 scf sf -5025 1350 m -gs 1 -1 sc (ItemBlock) col-1 sh gr -/Times-Roman ff 180.00 scf sf -5100 1725 m -gs 1 -1 sc (used = 5) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/softarch.eps b/HTKBook/HTKFigs/softarch.eps deleted file mode 100644 index b579eb8..0000000 --- a/HTKBook/HTKFigs/softarch.eps +++ /dev/null @@ -1,481 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: softarch.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 416 353 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 353 moveto 0 0 lineto 416 0 lineto 416 353 lineto closepath clip newpath --179.0 407.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -7.500 slw -n 7737 4350 m - 6789 4350 l gs col-1 s gr -% Polyline -n 7737 4942 m - 6789 4942 l gs col-1 s gr -/Times-Roman ff 210.00 scf sf -3620 1271 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3679 1449 m -gs 1 -1 sc (Data) col-1 sh gr -% Polyline -n 3000 2574 m 3947 2574 l 3947 3758 l 3000 3758 l - cp gs col-1 s gr -% Polyline -n 3000 3758 m 3947 3758 l 3947 4350 l 3000 4350 l - cp gs col-1 s gr -% Polyline -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 3651 2159 l 4599 2159 l 3947 2574 l 3000 2574 l - cp gs col-1 s gr -% Polyline -n 7737 3166 m 8388 2751 l 8388 3343 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l - cp gs col-1 s gr -% Polyline -n 6789 3166 m 7737 3166 l 7737 3758 l 6789 3758 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6789 3758 m - 7737 3758 l gs col-1 s gr -% Polyline -n 8388 2159 m - 8388 2810 l gs col-1 s gr -% Polyline -n 6789 3166 m - 7737 3166 l gs col-1 s gr -% Polyline -n 6789 3758 m 7737 3758 l 7737 4350 l 6789 4350 l - cp gs col-1 s gr -% Polyline -n 7737 2574 m - 8388 2159 l gs col-1 s gr -% Polyline -n 6789 2574 m - 7441 2159 l gs col-1 s gr -% Polyline -n 7737 4350 m - 8388 3935 l gs col-1 s gr -% Polyline -n 7737 3758 m - 8388 3343 l gs col-1 s gr -% Polyline -n 7737 3166 m - 8388 2751 l gs col-1 s gr -% Polyline -n 7737 5534 m - 8388 5119 l gs col-1 s gr -% Polyline -n 6789 2574 m - 6789 3343 l gs col-1 s gr -% Polyline -n 7737 4942 m - 8388 4527 l gs col-1 s gr -% Polyline -n 7737 3758 m 8388 3343 l 8388 3935 l 7737 4350 l 7737 3758 l - cp gs col-1 s gr -% Polyline -n 3947 4942 m - 6789 4942 l gs col-1 s gr -% Polyline -n 6789 3166 m - 6789 5534 l gs col-1 s gr -% Polyline -n 8388 2751 m - 8388 5119 l gs col-1 s gr -% Polyline -n 3947 3166 m - 3947 5534 l gs col-1 s gr -% Polyline -n 3651 2159 m - 8388 2159 l gs col-1 s gr -% Polyline -n 3947 4350 m - 3000 4350 l gs col-1 s gr -% Polyline -n 3000 4942 m - 3947 4942 l gs col-1 s gr -% Polyline -n 3000 2574 m - 3651 2159 l gs col-1 s gr -% Polyline -n 3947 2574 m - 3947 3225 l gs col-1 s gr -% Polyline -n 5842 2574 m - 6493 2159 l gs col-1 s gr -% Polyline -n 4895 2574 m - 5546 2159 l gs col-1 s gr -% Polyline -gs clippath -3887 2352 m 4007 2352 l 4007 2065 l 3947 2305 l 3887 2065 l cp -4007 1611 m 3887 1611 l 3887 1898 l 3947 1658 l 4007 1898 l cp -eoclip -n 3947 1626 m - 3947 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4007 1898 m 3947 1658 l 3887 1898 l 4007 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 3887 2065 m 3947 2305 l 4007 2065 l 3887 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -4835 2352 m 4955 2352 l 4955 2065 l 4895 2305 l 4835 2065 l cp -4955 1611 m 4835 1611 l 4835 1898 l 4895 1658 l 4955 1898 l cp -eoclip -n 4895 1626 m - 4895 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4955 1898 m 4895 1658 l 4835 1898 l 4955 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 4835 2065 m 4895 2305 l 4955 2065 l 4835 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5782 2352 m 5902 2352 l 5902 2065 l 5842 2305 l 5782 2065 l cp -5902 1611 m 5782 1611 l 5782 1898 l 5842 1658 l 5902 1898 l cp -eoclip -n 5842 1626 m - 5842 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5902 1898 m 5842 1658 l 5782 1898 l 5902 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5782 2065 m 5842 2305 l 5902 2065 l 5782 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6729 2352 m 6849 2352 l 6849 2065 l 6789 2305 l 6729 2065 l cp -6849 1611 m 6729 1611 l 6729 1898 l 6789 1658 l 6849 1898 l cp -eoclip -n 6789 1626 m - 6789 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6849 1898 m 6789 1658 l 6729 1898 l 6849 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6729 2065 m 6789 2305 l 6849 2065 l 6729 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -7677 2352 m 7797 2352 l 7797 2065 l 7737 2305 l 7677 2065 l cp -7797 1611 m 7677 1611 l 7677 1898 l 7737 1658 l 7797 1898 l cp -eoclip -n 7737 1626 m - 7737 2337 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 7797 1898 m 7737 1658 l 7677 1898 l 7797 1898 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 7677 2065 m 7737 2305 l 7797 2065 l 7677 2065 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 3758 m - 3947 3758 l gs col-1 s gr -% Polyline -n 4895 4942 m - 4895 5534 l gs col-1 s gr -% Polyline -n 5842 4942 m - 5842 5534 l gs col-1 s gr -% Polyline -n 5842 2574 m - 5842 3166 l gs col-1 s gr -% Polyline -gs clippath -9159 1611 m 9039 1611 l 9039 1898 l 9099 1658 l 9159 1898 l cp -8077 3165 m 8077 3285 l 8364 3285 l 8124 3225 l 8364 3165 l cp -eoclip -n 8092 3225 m 9099 3225 l - 9099 1626 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3165 m 8124 3225 l 8364 3285 l 8364 3165 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 9159 1898 m 9099 1658 l 9039 1898 l 9159 1898 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -6256 6259 m 6376 6259 l 6376 5972 l 6316 6212 l 6256 5972 l cp -6376 5519 m 6256 5519 l 6256 5806 l 6316 5566 l 6376 5806 l cp -eoclip -n 6316 5534 m - 6316 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 6376 5806 m 6316 5566 l 6256 5806 l 6376 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 6256 5972 m 6316 6212 l 6376 5972 l 6256 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -5249 6259 m 5369 6259 l 5369 5972 l 5309 6212 l 5249 5972 l cp -5369 5519 m 5249 5519 l 5249 5806 l 5309 5566 l 5369 5806 l cp -eoclip -n 5309 5534 m - 5309 6244 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 5369 5806 m 5309 5566 l 5249 5806 l 5369 5806 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 5249 5972 m 5309 6212 l 5369 5972 l 5249 5972 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 4469 m 8818 4349 l 8531 4349 l 8771 4409 l 8531 4469 l cp -8077 4349 m 8077 4469 l 8364 4469 l 8124 4409 l 8364 4349 l cp -eoclip -n 8092 4409 m - 8803 4409 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 4349 m 8124 4409 l 8364 4469 l 8364 4349 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 4469 m 8771 4409 l 8531 4349 l 8531 4469 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -gs clippath -8818 3877 m 8818 3757 l 8531 3757 l 8771 3817 l 8531 3877 l cp -8077 3757 m 8077 3877 l 8364 3877 l 8124 3817 l 8364 3757 l cp -eoclip -n 8092 3817 m - 8803 3817 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 8364 3757 m 8124 3817 l 8364 3877 l 8364 3757 l cp gs 0.00 setgray ef gr col-1 s -% arrowhead -n 8531 3877 m 8771 3817 l 8531 3757 l 8531 3877 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -7.500 slw -n 3000 4350 m 3947 4350 l 3947 4942 l 3000 4942 l - cp gs col-1 s gr -% Polyline -n 3000 4942 m 3947 4942 l 3947 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 3000 2574 m 7737 2574 l 7737 5534 l 3000 5534 l - cp gs col-1 s gr -% Polyline -n 6849 3166 m - 3947 3166 l gs col-1 s gr -% Polyline -n 3947 2574 m 4599 2159 l 5546 2159 l 4895 2574 l 3947 2574 l - cp gs col-1 s gr -% Polyline -n 3947 2574 m 4895 2574 l 4895 3166 l 3947 3166 l - cp gs col-1 s gr -/Times-Roman ff 210.00 scf sf -8743 1449 m -gs 1 -1 sc (Definitions) col-1 sh gr -/Times-Roman ff 210.00 scf sf -8862 1271 m -gs 1 -1 sc (HMM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 3817 m -gs 1 -1 sc (Terminal) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9039 4409 m -gs 1 -1 sc (Graphical) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6020 6540 m -gs 1 -1 sc (Adaptation) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5132 6540 m -gs 1 -1 sc (Model) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5072 6718 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6138 2929 m -gs 1 -1 sc (HNet) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5455 1271 m -gs 1 -1 sc (Language) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5514 1449 m -gs 1 -1 sc (Models) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6418 1271 m -gs 1 -1 sc (Constraint) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1449 m -gs 1 -1 sc (Network) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6478 1093 m -gs 1 -1 sc (Lattices/) col-1 sh gr -/Times-Roman ff 210.00 scf sf -7516 1449 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3402 m -gs 1 -1 sc (HModel) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 2929 m -gs 1 -1 sc (HDict) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 3639 m -gs 1 -1 sc (HUtil) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4113 m -gs 1 -1 sc (HShell) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 4705 m -gs 1 -1 sc (HGraf) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6951 5297 m -gs 1 -1 sc (HRec) col-1 sh gr -/Times-Roman ff 210.00 scf sf -6004 5297 m -gs 1 -1 sc (HAdapt) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 5297 m -gs 1 -1 sc (HMath) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4705 m -gs 1 -1 sc (HMem) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 4113 m -gs 1 -1 sc (HSigP) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3537 m -gs 1 -1 sc (HVQ) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3359 m -gs 1 -1 sc (HParm) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3181 m -gs 1 -1 sc (HWave) col-1 sh gr -/Times-Roman ff 210.00 scf sf -3162 3004 m -gs 1 -1 sc (HAudio) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4093 5297 m -gs 1 -1 sc (HTrain) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 5297 m -gs 1 -1 sc (HFB) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4997 4113 m -gs 1 -1 sc (HTK Tool) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 4586 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -9292 3994 m -gs 1 -1 sc (I/O) col-1 sh gr -/Times-Roman ff 210.00 scf sf -5116 2929 m -gs 1 -1 sc (HLM) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4642 1449 m -gs 1 -1 sc (Labels) col-1 sh gr -/Times-Roman ff 210.00 scf sf -4109 2929 m -gs 1 -1 sc (HLabel) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/step1.eps b/HTKBook/HTKFigs/step1.eps deleted file mode 100644 index 5e81a7f..0000000 --- a/HTKBook/HTKFigs/step1.eps +++ /dev/null @@ -1,1345 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step1.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/17/95 6:54:40 p.m. -%%BoundingBox: 45.279 632.122 118.279 750.500 -%%QDBoundingBox: 45.279 41.500 118.279 159.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 45.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.500 50.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -83.157 55.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -22.331 -3.000 S -(r) -13.665 -3.000 S -(a) -9.669 -3.000 S -(m) -4.343 -3.000 S -(m) 4.990 -3.000 S -(a) 14.324 -3.000 S -(r) 19.650 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -grestore -restore -save -gsave -83.157 55.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -10.144 10.000 S -(r) -4.743 10.000 S -(a) 0.657 10.000 S -(m) 6.058 10.000 S -grestore -restore -save -gsave -83.157 55.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.377 45.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 55.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -83.657 146.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -23.666 -3.000 S -(o) -12.340 -3.000 S -(r) -6.340 -3.000 S -(d) -2.344 -3.000 S -( ) 3.655 -3.000 S -(N) 6.655 -3.000 S -(e) 15.321 -3.000 S -(t) 20.647 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.340 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.500 55.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -83.657 146.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -13.344 10.000 S -(d) -7.943 10.000 S -(n) -2.542 10.000 S -(e) 2.858 10.000 S -(t) 8.259 10.000 S -grestore -restore -save -gsave -83.657 146.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.659 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.377 68.779 0.000 0.000 12.000 31.954 rect -%@EndRect -gsave -84.756 101.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(P) -8.498 3.000 S -7.000 (_Times-Roman) fess -(A) -2.937 3.000 S -(R) 2.478 3.000 S -(S) 7.481 3.000 S -(E) 11.652 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 54.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.779 86.211 81.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -81.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.779 131.211 81.779 114.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step10.eps b/HTKBook/HTKFigs/step10.eps deleted file mode 100644 index 917ca18..0000000 --- a/HTKBook/HTKFigs/step10.eps +++ /dev/null @@ -1,314 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: step10.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 284 450 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 450 moveto 0 0 lineto 284 0 lineto 284 450 lineto closepath clip newpath --65.0 578.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /hypen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/Courier /Courier-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -% Polyline -30.000 slw -n 1230 2175 m 1125 2175 1125 2745 105 arcto 4 {pop} repeat - 1125 2850 2820 2850 105 arcto 4 {pop} repeat - 2925 2850 2925 2280 105 arcto 4 {pop} repeat - 2925 2175 1230 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 4080 2175 m 3975 2175 3975 2745 105 arcto 4 {pop} repeat - 3975 2850 5670 2850 105 arcto 4 {pop} repeat - 5775 2850 5775 2280 105 arcto 4 {pop} repeat - 5775 2175 4080 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 1350 3450 m 2700 3450 l 2700 4275 l 1350 4275 l - cp gs col-1 s gr -% Polyline -n 1335 5550 m 1200 5550 1200 6465 135 arcto 4 {pop} repeat - 1200 6600 2790 6600 135 arcto 4 {pop} repeat - 2925 6600 2925 5685 135 arcto 4 {pop} repeat - 2925 5550 1335 5550 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 1200 7275 m 2925 7275 l 2925 7950 l 1200 7950 l - cp gs col-1 s gr -% Polyline -n 1335 8550 m 1200 8550 1200 9465 135 arcto 4 {pop} repeat - 1200 9600 2790 9600 135 arcto 4 {pop} repeat - 2925 9600 2925 8685 135 arcto 4 {pop} repeat - 2925 8550 1335 8550 135 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 4080 4500 m 3975 4500 3975 5070 105 arcto 4 {pop} repeat - 3975 5175 5670 5175 105 arcto 4 {pop} repeat - 5775 5175 5775 4605 105 arcto 4 {pop} repeat - 5775 4500 4080 4500 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 4080 5550 m 3975 5550 3975 6120 105 arcto 4 {pop} repeat - 3975 6225 5670 6225 105 arcto 4 {pop} repeat - 5775 6225 5775 5655 105 arcto 4 {pop} repeat - 5775 5550 4080 5550 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -gs clippath -2910 7515 m 2910 7635 l 3197 7635 l 2957 7575 l 3197 7515 l cp -eoclip -n 4875 6225 m 4875 7575 l - 2925 7575 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3197 7515 m 2957 7575 l 3197 7635 l 3197 7515 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 7290 m 2085 7290 l 2085 7003 l 2025 7243 l 1965 7003 l cp -eoclip -n 2025 6600 m - 2025 7275 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 7003 m 2025 7243 l 2085 7003 l 1965 7003 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 5565 m 2085 5565 l 2085 5278 l 2025 5518 l 1965 5278 l cp -eoclip -n 2025 4275 m - 2025 5550 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 5278 m 2025 5518 l 2085 5278 l 1965 5278 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 8565 m 2085 8565 l 2085 8278 l 2025 8518 l 1965 8278 l cp -eoclip -n 2025 7950 m - 2025 8550 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 8278 m 2025 8518 l 2085 8278 l 1965 8278 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2685 3615 m 2685 3735 l 2972 3735 l 2732 3675 l 2972 3615 l cp -eoclip -n 4875 2850 m 4875 3675 l - 2700 3675 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2972 3615 m 2732 3675 l 2972 3735 l 2972 3615 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1965 3465 m 2085 3465 l 2085 3178 l 2025 3418 l 1965 3178 l cp -eoclip -n 2025 2850 m - 2025 3450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1965 3178 m 2025 3418 l 2085 3178 l 1965 3178 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4111 5610 m 4165 5503 l 3908 5375 l 4096 5536 l 3854 5482 l cp -eoclip -n 2475 4275 m 2475 4725 l - 4125 5550 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3854 5482 m 4096 5536 l 3908 5375 l 3854 5482 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -2685 3990 m 2685 4110 l 2972 4110 l 2732 4050 l 2972 3990 l cp -eoclip -n 4875 4500 m 4875 4050 l - 2700 4050 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 2972 3990 m 2732 4050 l 2972 4110 l 2972 3990 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman-iso ff 300.00 scf sf -1425 5908 m -gs 1 -1 sc (Tied-State) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 6223 m -gs 1 -1 sc (Triphones) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 7725 m -gs 1 -1 sc (HR) col-1 sh gr -/Times-Roman-iso ff 240.00 scf sf -1800 7725 m -gs 1 -1 sc (EST \(x2\)) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 8908 m -gs 1 -1 sc (Tied-State) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 9223 m -gs 1 -1 sc (Triphones) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -4275 4800 m -gs 1 -1 sc (Edit Script) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1575 3975 m -gs 1 -1 sc (HHE) col-1 sh gr -/Times-Roman-iso ff 240.00 scf sf -2175 3975 m -gs 1 -1 sc (D) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -1425 2475 m -gs 1 -1 sc (Triphones) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -4275 2475 m -gs 1 -1 sc (State Occs) col-1 sh gr -/Courier-iso ff 240.00 scf sf -1575 9492 m -gs 1 -1 sc (\(hmm15\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -1575 6492 m -gs 1 -1 sc (\(hmm13\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -1575 2775 m -gs 1 -1 sc (\(hmm12\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -4200 6150 m -gs 1 -1 sc (\(tiedlist\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -4200 5100 m -gs 1 -1 sc (\(tree.hed\)) col-1 sh gr -/Courier-iso ff 240.00 scf sf -4350 2775 m -gs 1 -1 sc (\(stats\)) col-1 sh gr -/Times-Roman-iso ff 300.00 scf sf -4200 5850 m -gs 1 -1 sc (HMM List) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/step11.eps b/HTKBook/HTKFigs/step11.eps deleted file mode 100644 index 25b2a7a..0000000 --- a/HTKBook/HTKFigs/step11.eps +++ /dev/null @@ -1,2121 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step11.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/22/95 4:24:10 p.m. -%%BoundingBox: 50.610 659.122 509.886 786.811 -%%QDBoundingBox: 50.610 5.188 509.886 132.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.544 167.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -184.446 109.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(V) -8.498 3.000 S -7.000 (_Times-Roman) fess -(I) -1.277 3.000 S -(T) 1.220 3.000 S -(E) 5.801 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 153.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 5.688 54.890 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.811 50.610 0.000 0.000 50.000 82.778 rect -%@EndRect -gsave -92.000 34.811 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -24.490 -15.000 S -(i) -17.160 -15.000 S -(e) -13.826 -15.000 S -(d) -8.500 -15.000 S -(-) -2.500 -15.000 S -(S) 1.496 -15.000 S -(t) 8.169 -15.000 S -(a) 11.503 -15.000 S -(t) 16.830 -15.000 S -(e) 20.164 -15.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -23.828 -2.000 S -(r) -16.498 -2.000 S -(i) -12.501 -2.000 S -(p) -9.167 -2.000 S -(h) -3.167 -2.000 S -(o) 2.832 -2.000 S -(n) 8.832 -2.000 S -(e) 14.832 -2.000 S -(s) 20.158 -2.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.332 11.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.811 50.610 0.000 0.000 50.000 82.778 rect -%@EndRect -gsave -92.000 34.811 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -13.002 11.000 S -(m) -7.601 11.000 S -(m) -2.200 11.000 S -(1) 3.200 11.000 S -(5) 8.601 11.000 S -grestore -restore -save -gsave -92.000 34.811 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.002 11.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 234.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 233.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -273.025 108.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -27.467 -9.000 S -(e) -19.463 -9.000 S -(c) -14.137 -9.000 S -(o) -8.811 -9.000 S -(g) -2.811 -9.000 S -(n) 3.188 -9.000 S -(i) 9.188 -9.000 S -(s) 12.522 -9.000 S -(e) 17.192 -9.000 S -(d) 22.519 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -15.470 4.000 S -(o) -4.144 4.000 S -(r) 1.855 4.000 S -(d) 5.852 4.000 S -(s) 11.852 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -29.808 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 233.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -273.025 108.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(r) -26.478 17.000 S -(e) -21.077 17.000 S -(c) -15.676 17.000 S -(o) -10.275 17.000 S -(u) -4.875 17.000 S -(t) 0.525 17.000 S -(.) 5.926 17.000 S -(m) 11.327 17.000 S -(l) 16.728 17.000 S -(f) 22.129 17.000 S -grestore -restore -save -gsave -273.025 108.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 27.530 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.612 109.377 126.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.612 109.377 207.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 14.688 144.890 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 140.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -182.000 37.311 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -23.324 -8.000 S -(o) -11.998 -8.000 S -(r) -5.998 -8.000 S -(d) -2.001 -8.000 S -( ) 3.998 -8.000 S -(N) 6.998 -8.000 S -(e) 15.664 -8.000 S -(t) 20.990 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.332 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 140.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -182.000 37.311 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -13.002 5.000 S -(d) -7.601 5.000 S -(n) -2.200 5.000 S -(e) 3.200 5.000 S -(t) 8.601 5.000 S -grestore -restore -save -gsave -182.000 37.311 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.002 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 14.688 225.890 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 221.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -263.000 37.311 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.158 -8.000 S -(i) -16.492 -8.000 S -(c) -13.158 -8.000 S -(t) -7.832 -8.000 S -(i) -4.498 -8.000 S -(o) -1.164 -8.000 S -(n) 4.835 -8.000 S -(a) 10.835 -8.000 S -(r) 16.162 -8.000 S -(y) 20.158 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -13.631 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.811 221.610 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -263.000 37.311 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.301 5.000 S -(i) -4.900 5.000 S -(c) 0.500 5.000 S -(t) 5.900 5.000 S -grestore -restore -save -gsave -263.000 37.311 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.301 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 54.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 53.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -93.025 108.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.973 -9.000 S -(e) -15.643 -9.000 S -(s) -10.316 -9.000 S -(t) -5.646 -9.000 S -( ) -2.312 -9.000 S -(F) 0.687 -9.000 S -(i) 7.360 -9.000 S -(l) 10.694 -9.000 S -(e) 14.028 -9.000 S -(s) 19.354 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -20.638 4.000 S -(i) -13.308 4.000 S -(s) -9.974 4.000 S -(t) -5.304 4.000 S -(e) -1.970 4.000 S -(d) 3.355 4.000 S -( ) 9.355 4.000 S -(i) 12.355 4.000 S -(n) 15.689 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -24.407 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 88.500 53.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -93.025 108.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -21.077 17.000 S -(e) -15.676 17.000 S -(s) -10.275 17.000 S -(t) -4.875 17.000 S -(.) 0.525 17.000 S -(s) 5.926 17.000 S -(c) 11.327 17.000 S -(p) 16.728 17.000 S -grestore -restore -save -gsave -93.025 108.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 22.129 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 90.779 69.377 90.779 51.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.779 95.211 162.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.779 95.211 180.779 51.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.779 95.211 198.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.779 69.377 90.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 69.377 198.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 69.377 261.779 51.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 103.544 342.779 0.000 0.000 12.000 51.333 rect -%@EndRect -gsave -368.446 109.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -24.720 3.000 S -(R) -17.498 3.000 S -7.000 (_Times-Roman) fess -(E) -10.828 3.000 S -(S) -6.247 3.000 S -(U) -2.076 3.000 S -(L) 3.339 3.000 S -(T) 7.921 3.000 S -(S) 12.502 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 333.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -414.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 413.612 109.377 387.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -333.779 109.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 332.612 109.377 306.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 15.377 324.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.500 322.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -362.025 36.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -23.787 -9.000 S -(e) -15.783 -9.000 S -(f) -10.457 -9.000 S -(e) -6.461 -9.000 S -(r) -1.135 -9.000 S -(e) 2.860 -9.000 S -(n) 8.187 -9.000 S -(c) 14.187 -9.000 S -(e) 19.513 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.797 4.000 S -(r) -24.467 4.000 S -(a) -20.471 4.000 S -(n) -15.145 4.000 S -(s) -9.145 4.000 S -(c) -4.475 4.000 S -(r) 0.851 4.000 S -(i) 4.847 4.000 S -(p) 8.181 4.000 S -(t) 14.181 4.000 S -(i) 17.515 4.000 S -(o) 20.849 4.000 S -(n) 26.849 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -32.509 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 16.500 322.500 0.000 0.000 39.000 79.051 rect -%@EndRect -gsave -362.025 36.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -29.178 17.000 S -(e) -23.778 17.000 S -(s) -18.377 17.000 S -(t) -12.976 17.000 S -(r) -7.575 17.000 S -(e) -2.174 17.000 S -(f) 3.226 17.000 S -(.) 8.627 17.000 S -(m) 14.028 17.000 S -(l) 19.428 17.000 S -(f) 24.829 17.000 S -grestore -restore -save -gsave -362.025 36.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.230 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 95.211 360.779 60.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 96.000 421.000 0.000 0.000 27.000 88.886 rect -%@EndRect -gsave -465.443 109.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -43.500 -4.000 S -(e) -35.496 -4.000 S -(s) -30.169 -4.000 S -(u) -25.500 -4.000 S -(l) -19.500 -4.000 S -(t) -16.166 -4.000 S -(s) -12.832 -4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.500 9.000 S -(u) -36.826 9.000 S -(m) -30.826 9.000 S -(m) -21.492 9.000 S -(a) -12.158 9.000 S -(r) -6.832 9.000 S -(y) -2.835 9.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step2.eps b/HTKBook/HTKFigs/step2.eps deleted file mode 100644 index f8bacef..0000000 --- a/HTKBook/HTKFigs/step2.eps +++ /dev/null @@ -1,2054 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step2.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 7:43:26 a.m. -%%BoundingBox: 63.279 569.122 367.815 750.122 -%%QDBoundingBox: 63.279 41.877 367.815 222.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 68.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -101.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -16.003 -3.000 S -(I) -8.673 -3.000 S -(M) -4.677 -3.000 S -(I) 5.992 -3.000 S -(T) 9.988 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -19.346 10.000 S -(r) -12.672 10.000 S -(o) -8.676 10.000 S -(m) -2.676 10.000 S -(p) 6.657 10.000 S -(t) 12.657 10.000 S -(s) 15.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 73.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -101.657 145.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -24.337 -3.000 S -(o) -13.011 -3.000 S -(r) -7.011 -3.000 S -(d) -3.015 -3.000 S -( ) 2.984 -3.000 S -(L) 5.984 -3.000 S -(i) 13.314 -3.000 S -(s) 16.648 -3.000 S -(t) 21.318 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -17.340 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 73.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -101.657 145.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -13.344 10.000 S -(l) -7.943 10.000 S -(i) -2.542 10.000 S -(s) 2.858 10.000 S -(t) 8.259 10.000 S -grestore -restore -save -gsave -101.657 145.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.659 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.377 81.835 0.000 0.000 12.000 39.780 rect -%@EndRect -gsave -101.725 101.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.664 3.000 S -(o) -15.773 3.000 S -(r) -10.773 3.000 S -(t) -7.443 3.000 S -( ) -4.664 3.000 S -(|) -2.164 3.000 S -( ) -0.162 3.000 S -(u) 2.337 3.000 S -(n) 7.337 3.000 S -(i) 12.337 3.000 S -(q) 15.115 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 72.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.779 86.211 99.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.779 131.211 99.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 132.377 288.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 284.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -326.157 145.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -25.173 -3.000 S -(d) -17.843 -3.000 S -(i) -11.843 -3.000 S -(t) -8.509 -3.000 S -( ) -5.175 -3.000 S -(S) -2.175 -3.000 S -(c) 4.498 -3.000 S -(r) 9.824 -3.000 S -(i) 13.820 -3.000 S -(p) 17.154 -3.000 S -(t) 23.154 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -30.342 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 131.500 284.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -326.157 145.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(g) -26.346 10.000 S -(l) -20.945 10.000 S -(o) -15.544 10.000 S -(b) -10.144 10.000 S -(a) -4.743 10.000 S -(l) 0.657 10.000 S -(.) 6.058 10.000 S -(d) 11.459 10.000 S -(e) 16.860 10.000 S -(d) 22.261 10.000 S -grestore -restore -save -gsave -326.157 145.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 27.662 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.377 209.779 0.000 0.000 12.000 34.167 rect -%@EndRect -gsave -226.863 146.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -16.720 3.000 S -(D) -9.498 3.000 S -(M) -2.277 3.000 S -7.000 (_Times-Roman) fess -(A) 6.614 3.000 S -(N) 12.030 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 198.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 153.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -25.841 -3.000 S -(E) -17.837 -3.000 S -(E) -10.507 -3.000 S -(P) -3.177 -3.000 S -( ) 3.496 -3.000 S -(D) 6.496 -3.000 S -(i) 15.162 -3.000 S -(c) 18.496 -3.000 S -(t) 23.822 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -10.144 10.000 S -(e) -4.743 10.000 S -(e) 0.657 10.000 S -(p) 6.058 10.000 S -grestore -restore -save -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 234.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 239.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -272.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -27.833 -3.000 S -(a) -19.167 -3.000 S -(m) -13.841 -3.000 S -(e) -4.507 -3.000 S -(s) 0.818 -3.000 S -( ) 5.488 -3.000 S -(D) 8.488 -3.000 S -(i) 17.154 -3.000 S -(c) 20.488 -3.000 S -(t) 25.814 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.840 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 239.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -272.157 56.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -12.844 10.000 S -(a) -7.443 10.000 S -(m) -2.042 10.000 S -(e) 3.358 10.000 S -(s) 8.759 10.000 S -grestore -restore -save -gsave -272.157 56.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.159 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 132.377 moveto -/Triangular 8.224 7.049 false 254.072 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.458 131.256 189.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.779 132.377 moveto -/Triangular 8.224 7.049 false 293.219 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 244.239 131.305 270.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.779 146.377 moveto -/Triangular 8.224 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.946 146.377 288.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.612 146.377 135.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.377 189.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 194.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -227.157 209.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.000 -3.000 S -(i) -16.334 -3.000 S -(c) -13.000 -3.000 S -(t) -7.674 -3.000 S -(i) -4.340 -3.000 S -(o) -1.006 -3.000 S -(n) 4.993 -3.000 S -(a) 10.993 -3.000 S -(r) 16.319 -3.000 S -(y) 20.315 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 194.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -227.157 209.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.144 10.000 S -(i) -4.743 10.000 S -(c) 0.657 10.000 S -(t) 6.058 10.000 S -grestore -restore -save -gsave -227.157 209.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 195.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 194.211 225.779 159.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 146.377 171.779 146.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 137.377 152.779 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.500 159.500 0.000 0.000 12.000 5.639 rect -%@EndRect -gsave -162.319 145.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(+) -2.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 178.500 86.500 0.000 0.000 23.000 26.098 rect -%@EndRect -gsave -99.549 190.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -8.559 -2.000 S -(e) -2.450 -2.000 S -(s) 1.987 -2.000 S -(t) 5.879 -2.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -13.000 9.000 S -(o) -5.778 9.000 S -(c) -0.778 9.000 S -(a) 3.660 9.000 S -(b) 8.098 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 160.779 189.377 135.779 189.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -161.779 155.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 161.779 156.544 161.779 189.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step3.eps b/HTKBook/HTKFigs/step3.eps deleted file mode 100644 index 9eb6a7f..0000000 --- a/HTKBook/HTKFigs/step3.eps +++ /dev/null @@ -1,1972 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step3.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/17/95 5:23:27 p.m. -%%BoundingBox: 26.779 479.122 235.279 750.122 -%%QDBoundingBox: 26.779 41.877 235.279 312.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 63.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 68.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -101.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -16.003 -3.000 S -(I) -8.673 -3.000 S -(M) -4.677 -3.000 S -(I) 5.992 -3.000 S -(T) 9.988 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -19.346 10.000 S -(r) -12.672 10.000 S -(o) -8.676 10.000 S -(m) -2.676 10.000 S -(p) 6.657 10.000 S -(t) 12.657 10.000 S -(s) 15.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 150.377 108.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 149.500 118.500 0.000 0.000 27.000 56.315 rect -%@EndRect -gsave -146.657 163.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -21.832 -3.000 S -(e) -14.502 -3.000 S -(r) -9.176 -3.000 S -(m) -5.180 -3.000 S -(i) 4.153 -3.000 S -(n) 7.487 -3.000 S -(a) 13.487 -3.000 S -(l) 18.813 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -20.505 10.000 S -(i) -9.179 10.000 S -(n) -5.845 10.000 S -(d) 0.154 10.000 S -(o) 6.154 10.000 S -(w) 12.154 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.779 150.377 moveto -/Triangular 8.224 7.049 false 251.583 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.410 149.271 99.779 69.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 104.377 173.779 0.000 0.000 12.000 30.002 rect -%@EndRect -gsave -188.780 110.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.720 3.000 S -(S) -7.498 3.000 S -(G) -1.937 3.000 S -7.000 (_Times-Roman) fess -(E) 5.284 3.000 S -(N) 9.865 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 162.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 42.377 153.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -23.166 -3.000 S -(o) -11.840 -3.000 S -(r) -5.840 -3.000 S -(d) -1.844 -3.000 S -( ) 4.155 -3.000 S -(N) 7.155 -3.000 S -(e) 15.821 -3.000 S -(t) 21.147 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.840 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.500 158.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -12.844 10.000 S -(d) -7.443 10.000 S -(n) -2.042 10.000 S -(e) 3.358 10.000 S -(t) 8.759 10.000 S -grestore -restore -save -gsave -191.157 56.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 14.159 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.779 96.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.779 95.211 189.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.779 150.377 moveto -/Triangular 8.224 7.049 false 315.022 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.604 149.552 189.779 123.377 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 190.672 27.279 0.000 0.000 36.246 23.945 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[5.772 36.039] CP -[6.200 32.863 6.485 30.619 6.627 29.307] CP -[6.770 27.995 6.627 26.476 6.200 24.750] CP -[5.772 23.024 5.131 21.782 4.275 21.022] CP -[3.420 20.263 2.636 19.055 1.924 17.398] CP -[1.211 15.741 0.712 14.118 0.427 12.530] CP -[0.142 10.942 0.106 9.320 0.320 7.663] CP -[0.534 6.006 1.033 4.694 1.817 3.728] CP -[2.601 2.761 3.705 2.002 5.131 1.449] CP -[6.556 0.897 8.516 0.517 11.010 0.310] CP -[13.504 0.103 15.714 0.310 17.638 0.932] CP -[19.562 1.553 20.809 2.381 21.379 3.417] CP -[21.949 4.453 22.199 5.764 22.127 7.352] CP -[22.056 8.940 22.341 10.287 22.983 11.391] CP -[23.624 12.496 23.945 13.324 23.945 13.877] CP -[23.945 14.429 23.232 14.671 21.807 14.602] CP -[20.381 14.532 20.132 15.465 21.058 17.398] CP -[21.985 19.331 21.450 20.159 19.455 19.883] CP -[17.460 19.607 16.961 19.745 17.958 20.297] CP -[18.956 20.850 19.776 21.367 20.417 21.851] CP -[21.058 22.334 21.415 23.232 21.486 24.543] CP -[21.557 25.855 20.560 26.269 18.493 25.786] CP -[16.426 25.303 14.965 25.268 14.110 25.682] CP -[13.255 26.097 12.827 27.236 12.827 29.100] CP -[12.827 30.964 12.613 32.517 12.186 33.760] CP -[11.758 35.003 11.687 35.831 11.972 36.246] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.957 34.976 0.000 0.000 7.870 4.275 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[3.848 1.242] CP -[2.280 0.414 1.247 0.517 0.748 1.553] CP -[0.249 2.589 0.071 3.486 0.213 4.245] CP -[0.356 5.005 0.997 5.799 2.137 6.627] CP -[3.278 7.456 3.919 7.421 4.062 6.524] CP -[4.204 5.626 3.777 4.901 2.779 4.349] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.957 44.383 0.000 0.000 1.864 3.848 rect -%@EndOval -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 206.290 50.279 0.000 0.000 11.650 5.671 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 206.128 50.279 0.000 0.000 11.650 5.671 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 204.105 52.169 0.000 0.000 16.081 7.876 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 203.882 52.169 0.000 0.000 16.081 7.876 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 201.132 55.965 0.000 0.000 22.112 10.053 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 200.824 55.965 0.000 0.000 22.112 10.053 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 196.985 59.316 0.000 0.000 30.521 13.963 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 196.562 59.316 0.000 0.000 30.521 13.963 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[5.000 4.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.779 168.377 54.779 195.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.779 186.377 moveto -/Triangular 8.224 7.049 false 333.458 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.823 185.856 90.779 177.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.377 110.779 0.000 0.000 12.000 29.310 rect -%@EndRect -gsave -125.434 209.377 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -13.720 3.000 S -(S) -6.498 3.000 S -(L) -0.937 3.000 S -7.000 (_Times-Roman) fess -(A) 5.171 3.000 S -(B) 10.587 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 195.377 99.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.779 209.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.612 209.377 81.779 209.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -171.779 209.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 170.612 209.377 153.779 209.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 195.377 171.779 0.000 0.000 117.000 63.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 202.500 178.500 0.000 0.000 100.000 45.268 rect -%@EndRect -gsave -201.134 252.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 -41.000 S -(r) -15.891 -41.000 S -(a) -12.561 -41.000 S -(i) -8.123 -41.000 S -(n) -5.344 -41.000 S -( ) -0.344 -41.000 S -(F) 2.155 -41.000 S -(i) 7.716 -41.000 S -(l) 10.495 -41.000 S -(e) 13.273 -41.000 S -(s) 17.711 -41.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -22.000 -30.000 S -(0) -16.438 -30.000 S -(0) -11.438 -30.000 S -(0) -6.438 -30.000 S -(1) -1.438 -30.000 S -(.) 3.561 -30.000 S -(w) 6.061 -30.000 S -(a) 13.283 -30.000 S -(v) 17.721 -30.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -22.000 -19.000 S -(0) -16.438 -19.000 S -(0) -11.438 -19.000 S -(0) -6.438 -19.000 S -(2) -1.438 -19.000 S -(.) 3.561 -19.000 S -(w) 6.061 -19.000 S -(a) 13.283 -19.000 S -(v) 17.721 -19.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -22.000 -8.000 S -(.) -19.500 -8.000 S -(.) -17.000 -8.000 S -( ) -14.500 -8.000 S -(e) -12.000 -8.000 S -(t) -7.561 -8.000 S -(c) -4.783 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 14.000 S -(e) -15.891 14.000 S -(s) -11.453 14.000 S -(t) -7.561 14.000 S -( ) -4.783 14.000 S -(F) -2.283 14.000 S -(i) 3.278 14.000 S -(l) 6.056 14.000 S -(e) 8.834 14.000 S -(s) 13.273 14.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 25.000 S -(0) -15.891 25.000 S -(0) -10.891 25.000 S -(0) -5.891 25.000 S -(1) -0.891 25.000 S -(.) 4.108 25.000 S -(w) 6.608 25.000 S -(a) 13.830 25.000 S -(v) 18.268 25.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -22.000 36.000 S -(0) -15.891 36.000 S -(0) -10.891 36.000 S -(0) -5.891 36.000 S -(2) -0.891 36.000 S -(.) 4.108 36.000 S -(w) 6.608 36.000 S -(a) 13.830 36.000 S -(v) 18.268 36.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -22.000 47.000 S -(.) -19.500 47.000 S -(.) -17.000 47.000 S -( ) -14.500 47.000 S -(e) -12.000 47.000 S -(t) -7.561 47.000 S -(c) -4.783 47.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step4.eps b/HTKBook/HTKFigs/step4.eps deleted file mode 100644 index a1f658d..0000000 --- a/HTKBook/HTKFigs/step4.eps +++ /dev/null @@ -1,1817 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step4.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 7:51:35 a.m. -%%BoundingBox: 90.279 542.122 268.815 768.122 -%%QDBoundingBox: 90.279 23.877 268.815 249.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 24.377 99.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 24.500 104.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -137.157 38.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -16.003 -3.000 S -(I) -8.673 -3.000 S -(M) -4.677 -3.000 S -(I) 5.992 -3.000 S -(T) 9.988 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -19.346 10.000 S -(r) -12.672 10.000 S -(o) -8.676 10.000 S -(m) -2.676 10.000 S -(p) 6.657 10.000 S -(t) 12.657 10.000 S -(s) 15.991 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.779 78.377 135.779 51.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 96.377 90.779 0.000 0.000 27.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.500 95.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -137.157 109.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -25.173 -3.000 S -(d) -17.843 -3.000 S -(i) -11.843 -3.000 S -(t) -8.509 -3.000 S -( ) -5.175 -3.000 S -(S) -2.175 -3.000 S -(c) 4.498 -3.000 S -(r) 9.824 -3.000 S -(i) 13.820 -3.000 S -(p) 17.154 -3.000 S -(t) 23.154 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -38.444 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 95.500 95.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -137.157 109.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -34.447 10.000 S -(k) -29.047 10.000 S -(p) -23.646 10.000 S -(h) -18.245 10.000 S -(o) -12.844 10.000 S -(n) -7.443 10.000 S -(e) -2.042 10.000 S -(s) 3.358 10.000 S -(0) 8.759 10.000 S -(.) 14.159 10.000 S -(l) 19.560 10.000 S -(e) 24.961 10.000 S -(d) 30.362 10.000 S -grestore -restore -save -gsave -137.157 109.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 35.763 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 143.044 213.779 0.000 0.000 12.000 24.854 rect -%@EndRect -gsave -226.206 149.044 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -11.720 3.000 S -(L) -4.498 3.000 S -(E) 1.609 3.000 S -7.000 (_Times-Roman) fess -(D) 7.718 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 198.779 0.000 0.000 36.000 54.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 195.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 201.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 221.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -29.500 -10.000 S -(h) -22.826 -10.000 S -(o) -16.826 -10.000 S -(n) -10.826 -10.000 S -(e) -4.826 -10.000 S -( ) 0.499 -10.000 S -(L) 3.499 -10.000 S -(e) 10.829 -10.000 S -(v) 16.155 -10.000 S -(e) 22.155 -10.000 S -(l) 27.481 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.665 3.000 S -(r) -24.335 3.000 S -(a) -20.339 3.000 S -(n) -15.013 3.000 S -(s) -9.013 3.000 S -(c) -4.343 3.000 S -(r) 0.982 3.000 S -(i) 4.979 3.000 S -(p) 8.312 3.000 S -(t) 14.312 3.000 S -(i) 17.646 3.000 S -(o) 20.980 3.000 S -(n) 26.980 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 201.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 221.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -29.047 16.000 S -(h) -23.646 16.000 S -(o) -18.245 16.000 S -(n) -12.844 16.000 S -(e) -7.443 16.000 S -(s) -2.042 16.000 S -(0) 3.358 16.000 S -(.) 8.759 16.000 S -(m) 14.159 16.000 S -(l) 19.560 16.000 S -(f) 24.961 16.000 S -grestore -restore -save -gsave -227.157 221.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 16.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 131.211 225.779 105.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 99.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 104.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -137.157 191.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.000 -3.000 S -(i) -16.334 -3.000 S -(c) -13.000 -3.000 S -(t) -7.674 -3.000 S -(i) -4.340 -3.000 S -(o) -1.006 -3.000 S -(n) 4.993 -3.000 S -(a) 10.993 -3.000 S -(r) 16.319 -3.000 S -(y) 20.315 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.500 104.500 0.000 0.000 27.000 65.315 rect -%@EndRect -gsave -137.157 191.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.144 10.000 S -(i) -4.743 10.000 S -(c) 0.657 10.000 S -(t) 6.058 10.000 S -grestore -restore -save -gsave -137.157 191.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 195.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 194.211 225.779 168.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 155.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 155.377 135.779 155.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -28.161 -10.000 S -(o) -16.835 -10.000 S -(r) -10.835 -10.000 S -(d) -6.839 -10.000 S -( ) -0.839 -10.000 S -(L) 2.160 -10.000 S -(e) 9.490 -10.000 S -(v) 14.816 -10.000 S -(e) 20.816 -10.000 S -(l) 26.143 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.665 3.000 S -(r) -24.335 3.000 S -(a) -20.339 3.000 S -(n) -15.013 3.000 S -(s) -9.013 3.000 S -(c) -4.343 3.000 S -(r) 0.982 3.000 S -(i) 4.979 3.000 S -(p) 8.312 3.000 S -(t) 14.312 3.000 S -(i) 17.646 3.000 S -(o) 20.980 3.000 S -(n) 26.980 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -27.642 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -23.646 16.000 S -(o) -18.245 16.000 S -(r) -12.844 16.000 S -(d) -7.443 16.000 S -(s) -2.042 16.000 S -(.) 3.358 16.000 S -(m) 8.759 16.000 S -(l) 14.159 16.000 S -(f) 19.560 16.000 S -grestore -restore -save -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 24.961 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.779 78.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 188.612 78.377 135.779 78.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.779 177.377 135.779 156.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 141.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 141.377 135.779 141.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.779 141.377 135.779 123.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step5.eps b/HTKBook/HTKFigs/step5.eps deleted file mode 100644 index 4a81efe..0000000 --- a/HTKBook/HTKFigs/step5.eps +++ /dev/null @@ -1,1637 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step5.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/28/95 4:44:01 p.m. -%%BoundingBox: 63.279 578.122 390.202 741.122 -%%QDBoundingBox: 63.279 50.877 390.202 213.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -33.004 -10.000 S -(o) -25.000 -10.000 S -(n) -19.000 -10.000 S -(f) -13.000 -10.000 S -(i) -9.004 -10.000 S -(g) -5.670 -10.000 S -(u) 0.329 -10.000 S -(r) 6.329 -10.000 S -(a) 10.325 -10.000 S -(t) 15.651 -10.000 S -(i) 18.985 -10.000 S -(o) 22.319 -10.000 S -(n) 28.319 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -8.676 3.000 S -(i) -2.002 3.000 S -(l) 1.331 3.000 S -(e) 4.665 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -19.541 16.000 S -grestore -restore -save -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -15.544 16.000 S -(o) -10.144 16.000 S -(n) -4.743 16.000 S -(f) 0.657 16.000 S -(i) 6.058 16.000 S -(g) 11.459 16.000 S -grestore -restore -save -gsave -227.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 16.860 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 189.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 185.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -227.157 195.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -24.508 -3.000 S -(c) -17.834 -3.000 S -(r) -12.508 -3.000 S -(i) -8.512 -3.000 S -(p) -5.178 -3.000 S -(t) 0.821 -3.000 S -( ) 4.155 -3.000 S -(F) 7.155 -3.000 S -(i) 13.829 -3.000 S -(l) 17.163 -3.000 S -(e) 20.497 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -30.342 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 181.500 185.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -227.157 195.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -26.346 10.000 S -(o) -20.945 10.000 S -(d) -15.544 10.000 S -(e) -10.144 10.000 S -(t) -4.743 10.000 S -(r) 0.657 10.000 S -(.) 6.058 10.000 S -(s) 11.459 10.000 S -(c) 16.860 10.000 S -(p) 22.261 10.000 S -grestore -restore -save -gsave -227.157 195.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 27.662 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 189.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 133.500 208.500 0.000 0.000 14.000 34.674 rect -%@EndRect -gsave -225.837 140.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 3.000 S -(C) -8.333 3.000 S -9.000 (_Times-Roman) fess -(O) -0.330 3.000 S -(P) 6.169 3.000 S -(Y) 11.174 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 123.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 122.211 225.779 105.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 160.544 225.779 177.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.500 77.500 0.000 0.000 62.000 87.702 rect -%@EndRect -gsave -121.351 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -43.000 -21.000 S -(a) -31.673 -21.000 S -(v) -26.347 -21.000 S -(e) -20.347 -21.000 S -(f) -15.021 -21.000 S -(o) -11.025 -21.000 S -(r) -5.025 -21.000 S -(m) -1.029 -21.000 S -( ) 8.304 -21.000 S -(F) 11.304 -21.000 S -(i) 17.978 -21.000 S -(l) 21.312 -21.000 S -(e) 24.646 -21.000 S -(s) 29.972 -21.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.500 77.500 0.000 0.000 62.000 87.702 rect -%@EndRect -gsave -121.351 153.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 -8.000 S -(0) -37.599 -8.000 S -(0) -32.198 -8.000 S -(0) -26.797 -8.000 S -(1) -21.396 -8.000 S -(.) -15.995 -8.000 S -(w) -10.594 -8.000 S -(a) -5.193 -8.000 S -(v) 0.207 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 4.000 S -(0) -37.599 4.000 S -(0) -32.198 4.000 S -(0) -26.797 4.000 S -(2) -21.396 4.000 S -(.) -15.995 4.000 S -(w) -10.594 4.000 S -(a) -5.193 4.000 S -(v) 0.207 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 16.000 S -(0) -37.599 16.000 S -(0) -32.198 16.000 S -(0) -26.797 16.000 S -(3) -21.396 16.000 S -(.) -15.995 16.000 S -(w) -10.594 16.000 S -(a) -5.193 16.000 S -(v) 0.207 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -43.000 28.000 S -(t) -37.599 28.000 S -(c) -32.198 28.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 63.779 0.000 0.000 81.000 99.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 122.500 302.500 0.000 0.000 62.000 87.702 rect -%@EndRect -gsave -346.351 153.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -43.000 -21.000 S -(F) -32.330 -21.000 S -(C) -25.656 -21.000 S -(C) -17.652 -21.000 S -( ) -9.648 -21.000 S -(F) -6.648 -21.000 S -(i) 0.025 -21.000 S -(l) 3.359 -21.000 S -(e) 6.693 -21.000 S -(s) 12.019 -21.000 S -grestore -restore -save -gsave -346.351 153.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 -8.000 S -(0) -37.599 -8.000 S -(0) -32.198 -8.000 S -(0) -26.797 -8.000 S -(1) -21.396 -8.000 S -(.) -15.995 -8.000 S -(m) -10.594 -8.000 S -(f) -5.193 -8.000 S -(c) 0.207 -8.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 4.000 S -(0) -37.599 4.000 S -(0) -32.198 4.000 S -(0) -26.797 4.000 S -(2) -21.396 4.000 S -(.) -15.995 4.000 S -(m) -10.594 4.000 S -(f) -5.193 4.000 S -(c) 0.207 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -43.000 16.000 S -(0) -37.599 16.000 S -(0) -32.198 16.000 S -(0) -26.797 16.000 S -(3) -21.396 16.000 S -(.) -15.995 16.000 S -(m) -10.594 16.000 S -(f) -5.193 16.000 S -(c) 0.207 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(e) -43.000 28.000 S -(t) -37.599 28.000 S -(c) -32.198 28.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 114.377 288.779 0.000 0.000 81.000 99.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -189.779 141.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 188.612 141.377 162.779 141.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.779 141.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.612 141.377 261.779 141.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step6.eps b/HTKBook/HTKFigs/step6.eps deleted file mode 100644 index 70c3d4b..0000000 --- a/HTKBook/HTKFigs/step6.eps +++ /dev/null @@ -1,1986 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step6.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 8:13:41 a.m. -%%BoundingBox: 72.279 560.122 352.279 786.122 -%%QDBoundingBox: 72.279 5.877 352.279 231.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 140.044 207.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -224.446 146.044 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(E) -8.498 3.000 S -(R) -2.390 3.000 S -7.000 (_Times-Roman) fess -(E) 4.279 3.000 S -(S) 8.860 3.000 S -(T) 13.031 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 189.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 203.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -29.500 -10.000 S -(h) -22.826 -10.000 S -(o) -16.826 -10.000 S -(n) -10.826 -10.000 S -(e) -4.826 -10.000 S -( ) 0.499 -10.000 S -(L) 3.499 -10.000 S -(e) 10.829 -10.000 S -(v) 16.155 -10.000 S -(e) 22.155 -10.000 S -(l) 27.481 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -31.665 3.000 S -(r) -24.335 3.000 S -(a) -20.339 3.000 S -(n) -15.013 3.000 S -(s) -9.013 3.000 S -(c) -4.343 3.000 S -(r) 0.982 3.000 S -(i) 4.979 3.000 S -(p) 8.312 3.000 S -(t) 14.312 3.000 S -(i) 17.646 3.000 S -(o) 20.980 3.000 S -(n) 26.980 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 185.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -227.157 203.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -29.047 16.000 S -(h) -23.646 16.000 S -(o) -18.245 16.000 S -(n) -12.844 16.000 S -(e) -7.443 16.000 S -(s) -2.042 16.000 S -(0) 3.358 16.000 S -(.) 8.759 16.000 S -(m) 14.159 16.000 S -(l) 19.560 16.000 S -(f) 24.961 16.000 S -grestore -restore -save -gsave -227.157 203.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 16.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.377 171.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 167.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -209.157 77.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -33.171 -10.000 S -(r) -25.841 -10.000 S -(a) -21.845 -10.000 S -(i) -16.519 -10.000 S -(n) -13.185 -10.000 S -(i) -7.185 -10.000 S -(n) -3.851 -10.000 S -(g) 2.148 -10.000 S -( ) 8.148 -10.000 S -(F) 11.148 -10.000 S -(i) 17.822 -10.000 S -(l) 21.156 -10.000 S -(e) 24.490 -10.000 S -(s) 29.816 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -18.508 3.000 S -(i) -15.174 3.000 S -(s) -11.840 3.000 S -(t) -7.170 3.000 S -(e) -3.836 3.000 S -(d) 1.489 3.000 S -( ) 7.489 3.000 S -(i) 10.489 3.000 S -(n) 13.823 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -27.642 16.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 57.500 167.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -209.157 77.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -23.646 16.000 S -(r) -18.245 16.000 S -(a) -12.844 16.000 S -(i) -7.443 16.000 S -(n) -2.042 16.000 S -(.) 3.358 16.000 S -(s) 8.759 16.000 S -(c) 14.159 16.000 S -(p) 19.560 16.000 S -grestore -restore -save -gsave -209.157 77.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 24.961 16.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 75.500 0.000 0.000 39.000 84.391 rect -%@EndRect -gsave -117.695 29.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -39.639 -9.000 S -(r) -32.965 -9.000 S -(o) -28.969 -9.000 S -(t) -22.969 -9.000 S -(o) -19.635 -9.000 S -(t) -13.635 -9.000 S -(y) -10.301 -9.000 S -(p) -4.301 -9.000 S -(e) 1.698 -9.000 S -( ) 7.024 -9.000 S -(H) 10.024 -9.000 S -(M) 18.690 -9.000 S -(M) 29.360 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -24.466 4.000 S -(e) -15.800 4.000 S -(f) -10.474 4.000 S -(i) -6.478 4.000 S -(n) -3.144 4.000 S -(i) 2.855 4.000 S -(t) 6.189 4.000 S -(i) 9.523 4.000 S -(o) 12.857 4.000 S -(n) 18.857 4.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.636 17.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 9.500 75.500 0.000 0.000 39.000 84.391 rect -%@EndRect -gsave -117.695 29.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(p) -13.306 17.000 S -(r) -7.905 17.000 S -(o) -2.504 17.000 S -(t) 2.896 17.000 S -(o) 8.297 17.000 S -grestore -restore -save -gsave -117.695 29.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.697 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 6.377 72.779 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 198.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.779 78.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.779 77.211 117.779 51.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 90.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 100.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -123.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(0) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 100.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -123.608 145.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.779 131.211 207.779 105.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.779 160.544 225.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 288.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 298.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -321.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(1) 1.667 -9.000 S -grestore -restore -save -gsave -321.608 145.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.612 146.377 144.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.612 146.377 252.779 146.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 86.044 99.779 0.000 0.000 12.000 37.369 rect -%@EndRect -gsave -118.464 92.044 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.720 3.000 S -(C) -10.498 3.000 S -7.000 (_Times-Roman) fess -(O) -3.828 3.000 S -(M) 1.587 3.000 S -(P) 8.256 3.000 S -10.000 (_Times-Roman) fess -(V) 12.427 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 78.377 90.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.779 123.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.779 122.211 117.779 105.377 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.377 261.779 0.000 0.000 36.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 54.500 265.500 0.000 0.000 26.000 82.216 rect -%@EndRect -gsave -306.608 67.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.730 -3.000 S -(M) -15.064 -3.000 S -(M) -4.394 -3.000 S -( ) 6.275 -3.000 S -(l) 9.275 -3.000 S -(i) 12.609 -3.000 S -(s) 15.943 -3.000 S -(t) 20.613 -3.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 54.500 265.500 0.000 0.000 26.000 82.216 rect -%@EndRect -gsave -306.608 67.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -34.997 10.000 S -(m) -29.596 10.000 S -(o) -24.195 10.000 S -(n) -18.794 10.000 S -(o) -13.393 10.000 S -(p) -7.992 10.000 S -(h) -2.592 10.000 S -(o) 2.808 10.000 S -(n) 8.209 10.000 S -(e) 13.610 10.000 S -(s) 19.011 10.000 S -(0) 24.412 10.000 S -(\)) 29.813 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.779 132.377 moveto -/Triangular 8.224 7.049 false -90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.779 114.377 234.779 131.211 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.779 114.377 234.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.779 114.377 297.779 87.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step7.eps b/HTKBook/HTKFigs/step7.eps deleted file mode 100644 index 1e4e3b1..0000000 --- a/HTKBook/HTKFigs/step7.eps +++ /dev/null @@ -1,1860 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step7.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/28/95 5:13:13 p.m. -%%BoundingBox: 22.500 578.122 398.716 726.122 -%%QDBoundingBox: 22.500 65.877 398.716 213.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.044 271.779 0.000 0.000 23.000 33.333 rect -%@EndRect -gsave -288.446 147.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 -3.000 S -(E) -8.498 -3.000 S -(R) -2.390 -3.000 S -7.000 (_Times-Roman) fess -(E) 4.279 -3.000 S -(S) 8.860 -3.000 S -(T) 13.031 -3.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -7.591 8.000 S -7.000 (_Times-Roman) fess -(X) -4.261 8.000 S -10.000 (_Times-Roman) fess -(2) 1.154 8.000 S -(\)) 6.154 8.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 94.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 180.500 90.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -132.157 194.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -25.173 -3.000 S -(d) -17.843 -3.000 S -(i) -11.843 -3.000 S -(t) -8.509 -3.000 S -( ) -5.175 -3.000 S -(S) -2.175 -3.000 S -(c) 4.498 -3.000 S -(r) 9.824 -3.000 S -(i) 13.820 -3.000 S -(p) 17.154 -3.000 S -(t) 23.154 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -22.241 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 180.500 90.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -132.157 194.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -18.245 10.000 S -(i) -12.844 10.000 S -(l) -7.443 10.000 S -(.) -2.042 10.000 S -(h) 3.358 10.000 S -(e) 8.759 10.000 S -(d) 14.159 10.000 S -grestore -restore -save -gsave -132.157 194.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 19.560 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.377 95.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 91.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -133.157 87.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.181 -3.000 S -(M) -14.515 -3.000 S -(M) -3.845 -3.000 S -( ) 6.824 -3.000 S -(l) 9.824 -3.000 S -(i) 13.158 -3.000 S -(s) 16.492 -3.000 S -(t) 21.162 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 10.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 73.500 91.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -133.157 87.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -29.047 10.000 S -(o) -23.646 10.000 S -(n) -18.245 10.000 S -(o) -12.844 10.000 S -(p) -7.443 10.000 S -(h) -2.042 10.000 S -(o) 3.358 10.000 S -(n) 8.759 10.000 S -(e) 14.159 10.000 S -(s) 19.560 10.000 S -(1) 24.961 10.000 S -grestore -restore -save -gsave -133.157 87.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 261.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 180.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 190.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -213.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(5) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 190.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -213.608 145.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -131.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 131.779 131.211 131.779 105.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -130.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 130.779 160.544 130.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 342.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 352.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -375.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(7) 1.667 -9.000 S -grestore -restore -save -gsave -375.608 145.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.612 146.377 234.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 341.612 146.377 315.779 146.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.544 118.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -135.446 145.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(H) -8.498 3.000 S -(E) -1.277 3.000 S -7.000 (_Times-Roman) fess -(D) 4.831 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 108.779 0.000 0.000 27.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 27.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 37.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -60.608 145.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(4) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 37.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -60.608 145.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 107.612 146.377 81.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 179.612 146.377 153.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 66.377 27.779 0.000 0.000 30.000 54.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.500 22.500 0.000 0.000 27.000 68.309 rect -%@EndRect -gsave -56.654 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -9.844 -3.000 S -(d) -2.514 -3.000 S -(i) 3.485 -3.000 S -(t) 6.819 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.230 10.000 S -(i) -14.561 10.000 S -(l) -11.227 10.000 S -( ) -7.893 10.000 S -(-) -4.893 10.000 S -(>) -0.896 10.000 S -( ) 5.870 10.000 S -(s) 8.870 10.000 S -(p) 13.540 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.779 123.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.779 122.211 54.779 96.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step8.eps b/HTKBook/HTKFigs/step8.eps deleted file mode 100644 index 355efb6..0000000 --- a/HTKBook/HTKFigs/step8.eps +++ /dev/null @@ -1,1869 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step8.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/18/95 10:28:17 p.m. -%%BoundingBox: 72.279 560.122 388.279 732.122 -%%QDBoundingBox: 72.279 59.877 388.279 231.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 177.377 202.779 0.000 0.000 54.000 72.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 198.500 0.000 0.000 40.000 83.315 rect -%@EndRect -gsave -240.157 203.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -32.828 -10.000 S -(r) -25.498 -10.000 S -(a) -21.502 -10.000 S -(i) -16.176 -10.000 S -(n) -12.842 -10.000 S -(i) -6.842 -10.000 S -(n) -3.508 -10.000 S -(g) 2.491 -10.000 S -( ) 8.491 -10.000 S -(D) 11.491 -10.000 S -(a) 20.157 -10.000 S -(t) 25.483 -10.000 S -(a) 28.817 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -20.506 3.000 S -(i) -13.176 3.000 S -(s) -9.842 3.000 S -(t) -5.172 3.000 S -(e) -1.838 3.000 S -(d) 3.487 3.000 S -( ) 9.487 3.000 S -(i) 12.487 3.000 S -(n) 15.821 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -28.344 16.000 S -grestore -restore -save -gsave -240.157 203.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -24.348 16.000 S -(r) -18.947 16.000 S -(a) -13.546 16.000 S -(i) -8.145 16.000 S -(n) -2.745 16.000 S -(.) 2.655 16.000 S -(s) 8.056 16.000 S -(c) 13.457 16.000 S -(p) 18.858 16.000 S -(\)) 24.259 16.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.377 176.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 64.500 172.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -214.157 78.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -23.181 -3.000 S -(M) -14.515 -3.000 S -(M) -3.845 -3.000 S -( ) 6.824 -3.000 S -(l) 9.824 -3.000 S -(i) 13.158 -3.000 S -(s) 16.492 -3.000 S -(t) 21.162 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -33.043 10.000 S -grestore -restore -save -gsave -214.157 78.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -29.047 10.000 S -(o) -23.646 10.000 S -(n) -18.245 10.000 S -(o) -12.844 10.000 S -(p) -7.443 10.000 S -(h) -2.042 10.000 S -(o) 3.358 10.000 S -(n) 8.759 10.000 S -(e) 14.159 10.000 S -(s) 19.560 10.000 S -(1) 24.961 10.000 S -grestore -restore -save -gsave -214.157 78.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 30.362 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 123.377 288.779 0.000 0.000 45.000 99.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 293.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -339.108 146.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -29.549 -9.000 S -(h) -22.875 -9.000 S -(o) -16.875 -9.000 S -(n) -10.875 -9.000 S -(e) -4.875 -9.000 S -( ) 0.450 -9.000 S -(L) 3.450 -9.000 S -(e) 10.780 -9.000 S -(v) 16.106 -9.000 S -(e) 22.106 -9.000 S -(l) 27.432 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 126.500 293.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -339.108 146.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -34.497 17.000 S -(a) -29.096 17.000 S -(l) -23.695 17.000 S -(i) -18.294 17.000 S -(g) -12.893 17.000 S -(n) -7.492 17.000 S -(e) -2.092 17.000 S -(d) 3.308 17.000 S -(.) 8.709 17.000 S -(m) 14.110 17.000 S -(l) 19.511 17.000 S -(f) 24.912 17.000 S -(\)) 30.313 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -230.779 132.377 moveto -/Triangular 8.224 7.049 false 243.452 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 230.257 131.334 212.779 96.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -238.779 159.377 moveto -/Triangular 8.224 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 238.779 160.544 238.779 177.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 139.544 226.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -243.446 145.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(V) -8.498 3.000 S -7.000 (_Times-Roman) fess -(I) -1.277 3.000 S -(T) 1.220 3.000 S -(E) 5.801 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 216.779 0.000 0.000 27.000 45.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 60.377 252.779 0.000 0.000 45.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 262.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -285.608 82.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 -9.000 S -(m) -17.000 -9.000 S -(m) -7.666 -9.000 S -(7) 1.667 -9.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 63.500 262.500 0.000 0.000 38.000 46.216 rect -%@EndRect -gsave -285.608 82.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -23.000 4.000 S -(a) -17.599 4.000 S -(c) -12.198 4.000 S -(r) -6.797 4.000 S -(o) -1.396 4.000 S -(s) 4.004 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -23.000 16.000 S -(m) -17.599 16.000 S -(m) -12.198 16.000 S -(d) -6.797 16.000 S -(e) -1.396 16.000 S -(f) 4.004 16.000 S -(s) 9.405 16.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.779 137.377 moveto -/Triangular 8.224 7.049 false 201.816 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.696 136.944 171.779 119.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.779 146.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 287.612 146.377 261.779 146.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 96.377 72.779 0.000 0.000 45.000 99.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.500 77.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -123.108 119.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -28.210 -9.000 S -(o) -16.884 -9.000 S -(r) -10.884 -9.000 S -(d) -6.888 -9.000 S -( ) -0.888 -9.000 S -(L) 2.111 -9.000 S -(e) 9.441 -9.000 S -(v) 14.767 -9.000 S -(e) 20.767 -9.000 S -(l) 26.093 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -grestore -restore -save -gsave -123.108 119.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -29.096 17.000 S -(w) -23.695 17.000 S -(o) -18.294 17.000 S -(r) -12.893 17.000 S -(d) -7.492 17.000 S -(s) -2.092 17.000 S -(.) 3.308 17.000 S -(m) 8.709 17.000 S -(l) 14.110 17.000 S -(f) 19.511 17.000 S -(\)) 24.912 17.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 162.500 90.500 0.000 0.000 27.000 83.315 rect -%@EndRect -gsave -132.157 176.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -25.000 -3.000 S -(i) -16.334 -3.000 S -(c) -13.000 -3.000 S -(t) -7.674 -3.000 S -(i) -4.340 -3.000 S -(o) -1.006 -3.000 S -(n) 4.993 -3.000 S -(a) 10.993 -3.000 S -(r) 16.319 -3.000 S -(y) 20.315 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -14.140 10.000 S -grestore -restore -save -gsave -132.157 176.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -10.144 10.000 S -(i) -4.743 10.000 S -(c) 0.657 10.000 S -(t) 6.058 10.000 S -grestore -restore -save -gsave -132.157 176.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.459 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.779 150.377 moveto -/Triangular 8.224 7.049 false 149.046 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.779 150.978 171.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 159.377 90.779 0.000 0.000 36.000 81.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.779 132.377 moveto -/Triangular 8.224 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.426 131.407 270.779 105.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/step9.eps b/HTKBook/HTKFigs/step9.eps deleted file mode 100644 index d476d1d..0000000 --- a/HTKBook/HTKFigs/step9.eps +++ /dev/null @@ -1,2019 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: step9.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/20/95 6:16:03 p.m. -%%BoundingBox: 221.500 501.500 406.716 768.122 -%%QDBoundingBox: 221.500 23.877 406.716 290.500 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 24.377 315.779 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 315.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -361.108 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -28.389 -9.000 S -(o) -17.719 -9.000 S -(n) -11.719 -9.000 S -(o) -5.719 -9.000 S -(p) 0.280 -9.000 S -(h) 6.280 -9.000 S -(o) 12.280 -9.000 S -(n) 18.280 -9.000 S -(e) 24.280 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -grestore -restore -save -gsave -361.108 47.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -34.497 17.000 S -(a) -29.096 17.000 S -(l) -23.695 17.000 S -(i) -18.294 17.000 S -(g) -12.893 17.000 S -(n) -7.492 17.000 S -(e) -2.092 17.000 S -(d) 3.308 17.000 S -(.) 8.709 17.000 S -(m) 14.110 17.000 S -(l) 19.511 17.000 S -(f) 24.912 17.000 S -(\)) 30.313 17.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.544 349.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -366.446 100.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(L) -8.498 3.000 S -(E) -2.390 3.000 S -7.000 (_Times-Roman) fess -(D) 3.718 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 333.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 86.211 360.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 315.779 0.000 0.000 45.000 90.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 135.500 315.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -361.108 155.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -21.384 -9.000 S -(r) -14.054 -9.000 S -(i) -10.058 -9.000 S -(p) -6.724 -9.000 S -(h) -0.724 -9.000 S -(o) 5.275 -9.000 S -(n) 11.275 -9.000 S -(e) 17.275 -9.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.049 4.000 S -(r) -26.719 4.000 S -(a) -22.723 4.000 S -(n) -17.397 4.000 S -(s) -11.397 4.000 S -(c) -6.727 4.000 S -(r) -1.401 4.000 S -(i) 2.594 4.000 S -(p) 5.928 4.000 S -(t) 11.928 4.000 S -(i) 15.262 4.000 S -(o) 18.596 4.000 S -(n) 24.596 4.000 S -(s) 30.596 4.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 135.500 315.500 0.000 0.000 39.000 91.216 rect -%@EndRect -gsave -361.108 155.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -31.796 17.000 S -(w) -26.395 17.000 S -(i) -20.995 17.000 S -(n) -15.594 17.000 S -(t) -10.193 17.000 S -(r) -4.792 17.000 S -(i) 0.608 17.000 S -(.) 6.009 17.000 S -(m) 11.410 17.000 S -(l) 16.811 17.000 S -(f) 22.211 17.000 S -(\)) 27.612 17.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -360.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 131.211 360.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 24.377 225.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 33.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 52.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -30.943 -8.000 S -(o) -20.273 -8.000 S -(n) -14.273 -8.000 S -(o) -8.273 -8.000 S -(p) -2.273 -8.000 S -(h) 3.726 -8.000 S -(o) 9.726 -8.000 S -(n) 15.726 -8.000 S -(e) 21.726 -8.000 S -(s) 27.052 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -13.742 5.000 S -grestore -restore -save -gsave -262.889 52.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -10.412 5.000 S -(m) -5.011 5.000 S -(m) 0.389 5.000 S -(9) 5.790 5.000 S -grestore -restore -save -gsave -262.889 52.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 11.190 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.544 250.779 0.000 0.000 12.000 33.333 rect -%@EndRect -gsave -267.446 100.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -15.720 3.000 S -(H) -8.498 3.000 S -(E) -1.277 3.000 S -7.000 (_Times-Roman) fess -(D) 4.831 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 87.377 234.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 87.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 86.211 261.779 69.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 132.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 131.211 261.779 114.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.377 225.779 0.000 0.000 45.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 160.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -23.938 -8.000 S -(r) -16.608 -8.000 S -(i) -12.612 -8.000 S -(p) -9.278 -8.000 S -(h) -3.278 -8.000 S -(o) 2.721 -8.000 S -(n) 8.721 -8.000 S -(e) 14.721 -8.000 S -(s) 20.047 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.443 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 160.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -13.113 5.000 S -(m) -7.712 5.000 S -(m) -2.311 5.000 S -(1) 3.089 5.000 S -(0) 8.490 5.000 S -grestore -restore -save -gsave -262.889 160.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.891 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 202.544 232.779 0.000 0.000 12.000 60.333 rect -%@EndRect -gsave -262.946 208.544 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -29.720 3.000 S -(E) -22.498 3.000 S -(R) -16.390 3.000 S -7.000 (_Times-Roman) fess -(E) -9.720 3.000 S -(S) -5.139 3.000 S -(T) -0.968 3.000 S -10.000 (_Times-Roman) fess -( ) 3.613 3.000 S -(\() 6.113 3.000 S -7.000 (_Times-Roman) fess -(X) 9.443 3.000 S -10.000 (_Times-Roman) fess -(2) 14.859 3.000 S -(\)) 19.859 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 195.377 225.779 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 195.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 194.211 261.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -261.779 249.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.779 248.211 261.779 222.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 249.377 225.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 272.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -23.938 -8.000 S -(r) -16.608 -8.000 S -(i) -12.612 -8.000 S -(p) -9.278 -8.000 S -(h) -3.278 -8.000 S -(o) 2.721 -8.000 S -(n) 8.721 -8.000 S -(e) 14.721 -8.000 S -(s) 20.047 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.443 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 221.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -262.889 272.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(h) -13.113 5.000 S -(m) -7.712 5.000 S -(m) -2.311 5.000 S -(1) 3.089 5.000 S -(2) 8.490 5.000 S -grestore -restore -save -gsave -262.889 272.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.891 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.779 208.377 360.779 177.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.779 209.377 moveto -/Triangular 8.224 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.946 209.377 360.779 209.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 249.377 315.779 0.000 0.000 36.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 311.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -352.889 272.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -25.102 -8.000 S -(t) -18.428 -8.000 S -(a) -15.094 -8.000 S -(t) -9.768 -8.000 S -(e) -6.434 -8.000 S -( ) -1.107 -8.000 S -(O) 1.892 -8.000 S -(c) 10.558 -8.000 S -(c) 15.884 -8.000 S -(s) 21.210 -8.000 S -10.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -16.443 5.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 253.500 311.500 0.000 0.000 37.000 82.778 rect -%@EndRect -gsave -352.889 272.000 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -13.113 5.000 S -(t) -7.712 5.000 S -(a) -2.311 5.000 S -(t) 3.089 5.000 S -(s) 8.490 5.000 S -grestore -restore -save -gsave -352.889 272.000 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -10.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) 13.891 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -319.779 253.377 moveto -/Triangular 8.224 7.049 false 217.790 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.857 252.663 279.779 222.377 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/streams.eps b/HTKBook/HTKFigs/streams.eps deleted file mode 100644 index 38707cf..0000000 --- a/HTKBook/HTKFigs/streams.eps +++ /dev/null @@ -1,5105 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: streams.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:12/29/94 8:17:19 p.m. -%%BoundingBox: 8.500 494.500 477.500 788.250 -%%QDBoundingBox: 8.500 3.750 477.500 297.500 -%%DocumentFonts: Symbol -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 22.250 348.250 0.000 0.000 12.000 66.000 rect -%@EndRect -gsave -381.250 28.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -32.250 4.000 S -(P) -24.919 4.000 S -(C) -18.246 4.000 S -(_) -10.242 4.000 S -(E) -4.242 4.000 S -(_) 3.087 4.000 S -(D) 9.087 4.000 S -(_) 17.753 4.000 S -(A) 23.753 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 54.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 351.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 354.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -368.218 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -368.218 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 405.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 408.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -422.924 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -422.924 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 387.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 390.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -396.879 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -396.879 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 441.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 443.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -450.585 54.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -450.585 54.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 47.250 339.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -342.915 54.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 90.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 333.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 336.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -350.218 90.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -350.218 90.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 369.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 372.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -386.924 90.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -386.924 90.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 315.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.250 318.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -324.879 108.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -324.879 108.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.250 335.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -342.585 108.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -342.585 108.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 297.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 101.250 303.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -306.915 108.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 135.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 144.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 155.250 300.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -314.218 162.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -314.218 162.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 171.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.250 300.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -314.924 180.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -314.924 180.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 153.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 155.250 336.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -342.879 162.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -342.879 162.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 171.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 173.250 335.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -342.585 180.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -342.585 180.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 135.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 137.250 339.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -342.915 144.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 207.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 209.250 305.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -319.750 216.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 225.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 227.250 300.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -314.218 234.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -314.218 234.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 243.000 297.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 245.250 300.250 0.000 0.000 15.000 29.349 rect -%@EndRect -gsave -314.924 252.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.250 2.000 S -grestore -restore -save -gsave -314.924 252.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -6.908 2.000 S -(P) 0.421 2.000 S -(C) 7.095 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 261.000 315.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.250 318.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -324.879 270.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -324.879 270.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 261.000 333.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.250 335.250 0.000 0.000 15.000 14.671 rect -%@EndRect -gsave -342.585 270.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -7.250 2.000 S -grestore -restore -save -gsave -342.585 270.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) 0.091 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 261.000 297.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.250 303.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -306.915 270.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 288.000 0.000 0.000 252.000 189.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 72.000 288.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 126.000 288.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 198.000 288.000 198.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.000 459.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -462.500 105.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 169.500 459.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -463.000 177.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.500 459.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -463.000 267.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.250 177.250 0.000 0.000 14.000 42.166 rect -%@EndRect -gsave -198.333 11.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -20.250 3.000 S -(P) -12.919 3.000 S -(C) -6.246 3.000 S -(_) 1.757 3.000 S -(D) 7.757 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 162.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 170.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -184.750 36.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 198.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 201.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -215.218 36.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -215.218 36.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 162.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 65.250 170.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -184.750 72.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 162.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 165.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -179.218 90.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -179.218 90.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 18.000 153.000 0.000 0.000 90.000 90.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 54.000 153.000 54.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.000 225.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -228.500 87.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.250 46.250 0.000 0.000 14.000 35.337 rect -%@EndRect -gsave -63.918 11.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -17.250 3.000 S -(P) -9.919 3.000 S -(C) -3.246 3.000 S -(_) 4.757 3.000 S -(E) 10.757 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 36.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 44.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -58.750 36.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 27.000 72.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 29.250 78.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -81.915 36.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 36.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 65.250 44.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -58.750 72.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 36.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 83.250 42.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -45.915 90.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 18.000 27.000 0.000 0.000 90.000 72.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 54.000 27.000 54.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.000 81.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -84.500 87.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 120.250 33.250 0.000 0.000 14.000 77.500 rect -%@EndRect -gsave -72.000 127.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -38.250 3.000 S -(P) -30.919 3.000 S -(C) -24.246 3.000 S -(_) -16.242 3.000 S -(E) -10.242 3.000 S -(_) -2.912 3.000 S -(D) 3.087 3.000 S -(_) 11.753 3.000 S -(N) 17.753 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 26.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -40.750 153.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 54.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 57.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -71.218 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -71.218 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 90.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 93.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -99.879 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -99.879 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 26.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -40.750 189.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 54.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 57.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -71.218 189.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -71.218 189.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 18.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 200.250 21.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -27.879 207.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -27.879 207.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 234.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 236.250 26.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -40.750 243.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.000 18.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 254.250 21.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -35.218 261.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -35.218 261.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 18.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 272.250 21.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -27.879 279.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -27.879 279.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 9.000 0.000 0.000 162.000 108.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 171.000 9.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 225.000 9.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 99.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -102.500 204.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.000 99.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -102.500 267.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 121.250 177.250 0.000 0.000 14.000 53.750 rect -%@EndRect -gsave -204.125 128.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -26.250 3.000 S -(P) -18.919 3.000 S -(C) -12.246 3.000 S -(_) -4.242 3.000 S -(E) 1.757 3.000 S -(_) 9.087 3.000 S -(D) 15.087 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 152.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -166.750 153.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 198.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 201.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -215.218 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -215.218 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 234.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 237.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -243.879 153.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -243.879 153.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 144.000 180.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 146.250 186.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -189.915 153.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 152.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -166.750 189.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 180.000 180.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 182.250 183.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -197.218 189.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -197.218 189.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 162.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 200.250 165.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -171.879 207.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -171.879 207.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 144.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 200.250 150.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -153.915 207.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 234.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 236.250 152.250 0.000 0.000 14.000 29.000 rect -%@EndRect -gsave -166.750 243.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -14.250 3.000 S -(P) -6.919 3.000 S -(C) -0.246 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.000 144.000 0.000 0.000 15.000 36.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 254.250 147.250 0.000 0.000 15.000 27.937 rect -%@EndRect -gsave -161.218 261.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -13.250 2.000 S -grestore -restore -save -gsave -161.218 261.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -7.320 2.000 S -(P) 0.009 2.000 S -(C) 6.683 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 162.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 272.250 165.250 0.000 0.000 15.000 13.259 rect -%@EndRect -gsave -171.879 279.750 T translate -0.0 rotate -1 1 scale -12.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(d) -6.250 2.000 S -grestore -restore -save -gsave -171.879 279.750 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -0.320 2.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 270.000 144.000 0.000 0.000 15.000 18.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 272.250 150.250 0.000 0.000 14.000 7.330 rect -%@EndRect -gsave -153.915 279.250 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -3.250 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 135.000 0.000 0.000 162.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 171.000 135.000 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 225.000 135.000 225.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.000 243.000 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -246.500 204.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 259.500 243.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -247.000 267.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/structshare.eps b/HTKBook/HTKFigs/structshare.eps deleted file mode 100644 index dd48233..0000000 --- a/HTKBook/HTKFigs/structshare.eps +++ /dev/null @@ -1,3057 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: structshare.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/21/96 11:00:20 a.m. -%%BoundingBox: 8 454 280 784 -%%QDBoundingBox: 8.500 8.500 279.500 337.500 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 45.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.000 53.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -72.000 61.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 68.000 45.500 68.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 81.000 72.000 68.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 9.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 17.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -36.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 113.000 9.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 36.000 126.000 36.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 81.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 89.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -108.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 113.000 81.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 108.000 126.000 108.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 189.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 55.000 197.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -216.000 61.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 68.000 189.500 68.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 81.000 216.000 68.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 153.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 161.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -180.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 207.000 113.000 153.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 126.000 180.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 99.000 225.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 233.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -252.000 106.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 113.000 225.500 113.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 126.000 252.000 113.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 9.000 117.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 23.000 117.500 23.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 36.000 144.000 23.500 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 54.000 moveto -/Triangular 14.099 7.049 false 333.458 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.788 53.105 126.000 27.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -36.000 99.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 37.109 97.335 54.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -108.000 99.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 106.890 97.335 90.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -180.000 99.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.109 97.335 198.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 99.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 250.890 97.335 234.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 54.000 moveto -/Triangular 14.099 7.049 false 206.580 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.211 53.105 162.000 27.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 145.500 81.000 0.000 0.000 12.000 137.000 rect -%@EndRect -gsave -149.500 151.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -68.500 3.000 S -(a) -65.169 3.000 S -(\)) -60.731 3.000 S -( ) -57.401 3.000 S -( ) -54.901 3.000 S -(A) -52.401 3.000 S -( ) -45.179 3.000 S -(H) -42.679 3.000 S -(i) -35.458 3.000 S -(e) -32.679 3.000 S -(r) -28.241 3.000 S -(a) -24.911 3.000 S -(r) -20.472 3.000 S -(c) -17.142 3.000 S -(h) -12.704 3.000 S -(i) -7.704 3.000 S -(c) -4.925 3.000 S -(a) -0.487 3.000 S -(l) 3.951 3.000 S -( ) 6.729 3.000 S -(D) 9.229 3.000 S -(a) 16.451 3.000 S -(t) 20.889 3.000 S -(a) 23.667 3.000 S -( ) 28.106 3.000 S -(S) 30.606 3.000 S -(t) 36.167 3.000 S -(r) 38.946 3.000 S -(u) 42.276 3.000 S -(c) 47.276 3.000 S -(t) 51.714 3.000 S -(u) 54.493 3.000 S -(r) 59.493 3.000 S -(e) 62.823 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 234.000 45.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 235.000 53.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -72.000 241.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 99.000 248.000 45.500 248.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 72.000 261.000 72.000 248.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 279.000 9.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 280.000 17.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -36.000 286.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 63.000 293.000 9.500 293.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 36.000 306.000 36.000 293.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 234.000 189.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 235.000 197.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -216.000 241.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(0) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 248.000 189.500 248.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 216.000 261.000 216.000 248.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 279.000 117.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 280.000 125.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -144.000 286.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(2) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 293.000 117.500 293.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 306.000 144.000 293.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 279.000 225.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 280.000 233.500 0.000 0.000 12.000 37.000 rect -%@EndRect -gsave -252.000 286.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -18.000 3.000 S -(U) -13.000 3.000 S -(s) -5.778 3.000 S -(e) -1.886 3.000 S -( ) 2.551 3.000 S -( ) 5.051 3.000 S -( ) 7.551 3.000 S -( ) 10.051 3.000 S -(1) 12.551 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 293.000 225.500 293.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 306.000 252.000 293.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 189.000 117.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 203.000 117.500 203.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 144.000 216.000 144.000 203.500 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 234.000 moveto -/Triangular 14.099 7.049 false 333.458 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.788 233.105 126.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -36.000 279.000 moveto -/Triangular 14.099 7.049 false 303.711 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 37.109 277.335 54.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 279.000 moveto -/Triangular 14.099 7.049 false 216.885 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.399 277.800 90.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -162.000 279.000 moveto -/Triangular 14.099 7.049 false 323.152 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 163.599 277.799 198.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 279.000 moveto -/Triangular 14.099 7.049 false 236.327 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 250.890 277.335 234.000 252.000 Line -%@EndLine -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 234.000 moveto -/Triangular 14.099 7.049 false 206.580 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.211 233.105 162.000 207.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 2.3203125000000000000e+0 viewScale -%@ 1.7430555555555553580e+0 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 325.500 90.000 0.000 0.000 12.000 111.000 rect -%@EndRect -gsave -145.500 331.500 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -55.500 3.000 S -(b) -52.169 3.000 S -(\)) -47.169 3.000 S -( ) -43.839 3.000 S -( ) -41.339 3.000 S -(W) -38.839 3.000 S -(i) -29.401 3.000 S -(t) -26.623 3.000 S -(h) -23.844 3.000 S -( ) -18.844 3.000 S -(S) -16.344 3.000 S -(t) -10.783 3.000 S -(r) -8.004 3.000 S -(u) -4.674 3.000 S -(c) 0.325 3.000 S -(t) 4.763 3.000 S -(u) 7.541 3.000 S -(r) 12.541 3.000 S -(e) 15.872 3.000 S -( ) 20.310 3.000 S -(S) 22.810 3.000 S -(h) 28.372 3.000 S -(a) 33.372 3.000 S -(r) 37.810 3.000 S -(i) 41.140 3.000 S -(n) 43.918 3.000 S -(g) 48.918 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/subsmixrep.eps b/HTKBook/HTKFigs/subsmixrep.eps deleted file mode 100644 index 6d1ba59..0000000 --- a/HTKBook/HTKFigs/subsmixrep.eps +++ /dev/null @@ -1,2008 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: subsmixrep.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:11/15/95 9:00:54 p.m. -%%BoundingBox: 95.500 566.500 387.705 784.500 -%%QDBoundingBox: 95.500 7.500 387.705 225.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 294.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -294.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 292.000 108.000 231.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -366.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 364.000 108.000 330.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 45.000 294.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 189.000 294.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -296.000 198.000 moveto -/Triangular 14.099 7.049 false 234.284 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 294.831 196.376 231.250 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -294.000 63.000 moveto -/Triangular 14.099 7.049 false 144.473 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 292.372 64.162 231.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.205 108.000 330.000 66.459 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -368.821 94.643 moveto -/Triangular 14.099 7.049 false 215.377 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 367.190 93.486 353.321 83.643 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.205 108.000 330.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -359.896 150.287 moveto -/Triangular 14.099 7.049 false 122.079 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 358.834 151.982 330.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 387.000 109.000 329.000 199.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.000 238.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -243.000 68.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 248.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -252.000 74.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -3.500 4.000 S -(j) -0.166 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.000 255.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -260.000 68.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 262.000 0.000 0.000 12.000 5.000 rect -%@EndRect -gsave -264.500 74.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.808 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 68.000 265.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -269.000 74.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 247.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -252.500 115.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 115.000 257.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -261.500 121.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.000 4.000 S -(j) -0.666 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 106.000 264.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -269.500 115.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 115.000 272.500 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -278.000 121.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -4.308 4.000 S -(2) -0.974 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.500 233.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -238.500 165.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.500 243.500 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -247.500 171.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -4.000 4.000 S -(j) -0.666 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.500 250.500 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -255.500 165.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -5.000 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.500 257.500 0.000 0.000 12.000 5.000 rect -%@EndRect -gsave -260.000 171.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.308 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 165.500 260.500 0.000 0.000 12.000 12.000 rect -%@EndRect -gsave -266.500 171.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -6.000 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 135.500 302.000 0.000 0.000 24.000 19.000 rect -%@EndRect -gsave -311.500 147.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.500 7.000 S -(.) -3.500 7.000 S -(.) 2.500 7.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 7.500 273.000 0.000 0.000 31.000 86.000 rect -%@EndRect -gsave -316.000 23.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.389 -3.000 S -(i) -9.603 -3.000 S -(n) -5.713 -3.000 S -(g) 1.286 -3.000 S -(l) 8.286 -3.000 S -(e) 12.175 -3.000 S -( ) 18.389 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -27.886 12.000 S -(a) -17.775 12.000 S -(u) -11.562 12.000 S -(s) -4.562 12.000 S -(s) 0.886 12.000 S -(i) 6.334 12.000 S -(a) 10.224 12.000 S -(n) 16.437 12.000 S -(s) 23.437 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 132.000 0.000 0.000 36.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -132.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 130.000 108.000 96.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -195.000 108.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 193.000 108.000 168.000 108.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 147.000 0.000 0.000 15.000 5.000 rect -%@EndRect -gsave -149.500 107.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.693 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.500 96.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -101.000 94.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.500 106.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -110.000 100.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -3.500 4.000 S -(j) -0.166 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 43.000 110.000 0.000 0.000 46.000 88.000 rect -%@EndRect -gsave -154.000 66.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -39.158 -11.000 S -(-) -26.710 -11.000 S -(c) -22.048 -11.000 S -(o) -15.834 -11.000 S -(m) -8.834 -11.000 S -(p) 2.055 -11.000 S -(o) 9.055 -11.000 S -(n) 16.055 -11.000 S -(e) 23.055 -11.000 S -(n) 29.269 -11.000 S -(t) 36.269 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(G) -25.162 4.000 S -(a) -15.051 4.000 S -(u) -8.837 4.000 S -(s) -1.837 4.000 S -(s) 3.610 4.000 S -(i) 9.058 4.000 S -(a) 12.948 4.000 S -(n) 19.162 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(m) -21.272 19.000 S -(i) -10.382 19.000 S -(x) -6.493 19.000 S -(t) 0.506 19.000 S -(u) 4.396 19.000 S -(r) 11.396 19.000 S -(e) 16.058 19.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 222.331 102.500 205.331 102.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 222.331 108.000 205.331 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 222.331 113.000 205.331 113.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 51.500 307.500 0.000 0.000 16.000 4.696 rect -%@EndRect -gsave -309.848 59.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 61.500 312.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -315.500 68.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 97.500 307.500 0.000 0.000 16.000 4.696 rect -%@EndRect -gsave -309.848 105.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 107.500 312.500 0.000 0.000 14.000 6.000 rect -%@EndRect -gsave -315.500 114.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 196.500 305.500 0.000 0.000 16.000 4.696 rect -%@EndRect -gsave -307.848 204.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(j) -1.193 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 206.500 310.500 0.000 0.000 14.000 10.669 rect -%@EndRect -gsave -315.834 213.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -5.000 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/subword.eps b/HTKBook/HTKFigs/subword.eps deleted file mode 100644 index 301e0af..0000000 --- a/HTKBook/HTKFigs/subword.eps +++ /dev/null @@ -1,4497 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: subword.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/4/95 9:49:31 p.m. -%%BoundingBox: 71.500 348.500 414.500 784.000 -%%QDBoundingBox: 71.500 8.000 414.500 443.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 210.000 351.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 216.500 356.500 0.000 0.000 16.000 54.448 rect -%@EndRect -gsave -383.724 224.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.000 4.000 S -(C) -16.889 4.000 S -(o) -7.551 4.000 S -(m) -0.551 4.000 S -(p) 10.337 4.000 S -(V) 17.337 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 288.000 225.000 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 294.500 241.500 0.000 0.000 16.000 43.551 rect -%@EndRect -gsave -263.275 302.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.000 4.000 S -(E) -10.889 4.000 S -(R) -2.337 4.000 S -(e) 7.000 4.000 S -(s) 13.213 4.000 S -(t) 18.662 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 333.000 171.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 180.500 0.000 0.000 16.000 35.772 rect -%@EndRect -gsave -198.386 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(H) -6.889 4.000 S -(E) 3.220 4.000 S -(d) 11.772 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 83.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 94.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 108.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 125.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 137.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 150.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.750 83.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -134.448 45.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 157.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 144.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 125.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 114.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 101.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 83.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.250 83.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -125.886 75.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 72.000 0.000 0.000 63.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.500 79.500 0.000 0.000 14.000 96.281 rect -%@EndRect -gsave -127.640 25.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -48.000 3.000 S -(a) -40.669 3.000 S -(b) -35.343 3.000 S -(e) -29.343 3.000 S -(l) -24.017 3.000 S -(l) -20.683 3.000 S -(e) -17.349 3.000 S -(d) -12.023 3.000 S -( ) -6.023 3.000 S -(U) -3.023 3.000 S -(t) 5.642 3.000 S -(t) 8.976 3.000 S -(e) 12.310 3.000 S -(r) 17.636 3.000 S -(a) 21.632 3.000 S -(n) 26.958 3.000 S -(c) 32.958 3.000 S -(e) 38.285 3.000 S -(s) 43.611 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 135.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 133.000 126.000 99.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 189.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 108.500 0.000 0.000 16.000 35.000 rect -%@EndRect -gsave -126.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(R) -6.889 4.000 S -(e) 2.448 4.000 S -(s) 8.662 4.000 S -(t) 14.110 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 110.500 0.000 0.000 16.000 29.551 rect -%@EndRect -gsave -125.275 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 4.000 S -(I) -3.889 4.000 S -(n) 0.772 4.000 S -(i) 7.772 4.000 S -(t) 11.662 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 187.000 126.000 162.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 405.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 401.000 261.000 315.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 306.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.000 306.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 333.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 378.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 227.000 377.999 261.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 360.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 378.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 342.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 306.000 315.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -297.000 306.000 moveto -/Triangular 16.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 301.000 305.999 315.000 306.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 412.500 230.500 0.000 0.000 31.000 58.324 rect -%@EndRect -gsave -259.662 428.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -29.000 -3.000 S -(u) -21.213 -3.000 S -(b) -14.213 -3.000 S -(-) -7.213 -3.000 S -(W) -2.551 -3.000 S -(o) 10.662 -3.000 S -(r) 17.662 -3.000 S -(d) 22.324 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -20.065 12.000 S -(M) -9.955 12.000 S -(M) 2.493 12.000 S -(s) 14.941 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 210.000 moveto -/Triangular 14.099 7.049 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.585 208.585 324.000 156.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 216.000 0.000 0.000 108.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.500 215.500 0.000 0.000 14.000 106.951 rect -%@EndRect -gsave -268.975 91.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -53.000 3.000 S -(n) -44.333 3.000 S -(l) -38.333 3.000 S -(a) -35.000 3.000 S -(b) -29.673 3.000 S -(e) -23.673 3.000 S -(l) -18.347 3.000 S -(l) -15.013 3.000 S -(e) -11.679 3.000 S -(d) -6.353 3.000 S -( ) -0.353 3.000 S -(U) 2.646 3.000 S -(t) 11.312 3.000 S -(t) 14.646 3.000 S -(e) 17.980 3.000 S -(r) 23.306 3.000 S -(a) 27.302 3.000 S -(n) 32.628 3.000 S -(c) 38.628 3.000 S -(e) 43.955 3.000 S -(s) 49.281 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 17.500 234.500 0.000 0.000 14.000 69.316 rect -%@EndRect -gsave -269.158 24.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.000 3.000 S -(r) -26.669 3.000 S -(a) -22.673 3.000 S -(n) -17.347 3.000 S -(s) -11.347 3.000 S -(c) -6.677 3.000 S -(r) -1.351 3.000 S -(i) 2.644 3.000 S -(p) 5.978 3.000 S -(t) 11.978 3.000 S -(i) 15.312 3.000 S -(o) 18.646 3.000 S -(n) 24.646 3.000 S -(s) 30.646 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.750 224.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -275.448 47.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.250 224.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -266.886 64.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 35.000 216.000 0.000 0.000 42.000 107.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -2.000 0 9.000 207.000 0.000 0.000 216.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 288.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 284.000 261.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 288.000 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.335 286.890 126.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 288.000 moveto -/Triangular 14.099 7.049 false 331.541 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.757 287.046 382.000 237.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/sysoview.eps b/HTKBook/HTKFigs/sysoview.eps deleted file mode 100644 index 867a974..0000000 --- a/HTKBook/HTKFigs/sysoview.eps +++ /dev/null @@ -1,437 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: sysoview.fig -%%Creator: fig2dev Version 3.2.3 Patchlevel -%%CreationDate: Tue Sep 5 16:20:10 2000 -%%For: ge204@htk () -%%BoundingBox: 0 0 509 419 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 419 moveto 0 0 lineto 509 0 lineto 509 419 lineto closepath clip newpath --34.0 466.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06000 0.06000 sc -/Times-Roman ff 300.00 scf sf -900 7200 m -gs 1 -1 sc (HP) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1275 7200 m -gs 1 -1 sc (ARSE) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3600 5700 m -gs 1 -1 sc (HV) col-1 sh gr -/Times-Roman ff 240.00 scf sf -4050 5700 m -gs 1 -1 sc (ITE) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2025 3450 m -gs 1 -1 sc (HC) col-1 sh gr -/Times-Roman ff 240.00 scf sf -2475 3450 m -gs 1 -1 sc (OMP) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3000 3450 m -gs 1 -1 sc (V, H) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3600 3450 m -gs 1 -1 sc (INIT) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4125 3450 m -gs 1 -1 sc (, HR) col-1 sh gr -/Times-Roman ff 240.00 scf sf -4650 3450 m -gs 1 -1 sc (EST) col-1 sh gr -/Times-Roman ff 300.00 scf sf -5100 3450 m -gs 1 -1 sc (, HER) col-1 sh gr -/Times-Roman ff 240.00 scf sf -5850 3450 m -gs 1 -1 sc (EST) col-1 sh gr -% Polyline -30.000 slw -n 830 6600 m 1950 6600 l 1950 7275 l 830 7275 l - cp gs col-1 s gr -% Polyline -n 705 5850 m 600 5850 600 6120 105 arcto 4 {pop} repeat - 600 6225 1995 6225 105 arcto 4 {pop} repeat - 2100 6225 2100 5955 105 arcto 4 {pop} repeat - 2100 5850 705 5850 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 705 5025 m 600 5025 600 5295 105 arcto 4 {pop} repeat - 600 5400 1995 5400 105 arcto 4 {pop} repeat - 2100 5400 2100 5130 105 arcto 4 {pop} repeat - 2100 5025 705 5025 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 750 4275 m 2025 4275 l 2025 4650 l 750 4650 l - cp gs col-1 s gr -% Polyline -n 1950 3075 m 6375 3075 l 6375 3900 l 1950 3900 l - cp gs col-1 s gr -% Polyline -n 3630 4275 m 3525 4275 3525 4545 105 arcto 4 {pop} repeat - 3525 4650 4545 4650 105 arcto 4 {pop} repeat - 4650 4650 4650 4380 105 arcto 4 {pop} repeat - 4650 4275 3630 4275 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 3300 5250 m 4800 5250 l 4800 5925 l 3300 5925 l - cp gs col-1 s gr -% Polyline -n 3255 6450 m 3150 6450 3150 6720 105 arcto 4 {pop} repeat - 3150 6825 4920 6825 105 arcto 4 {pop} repeat - 5025 6825 5025 6555 105 arcto 4 {pop} repeat - 5025 6450 3255 6450 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 3375 7200 m 4800 7200 l 4800 7575 l 3375 7575 l - cp gs col-1 s gr -% Polyline -n 4530 2175 m 4425 2175 4425 2445 105 arcto 4 {pop} repeat - 4425 2550 5520 2550 105 arcto 4 {pop} repeat - 5625 2550 5625 2280 105 arcto 4 {pop} repeat - 5625 2175 4530 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 2430 2175 m 2325 2175 2325 2445 105 arcto 4 {pop} repeat - 2325 2550 4095 2550 105 arcto 4 {pop} repeat - 4200 2550 4200 2280 105 arcto 4 {pop} repeat - 4200 2175 2430 2175 105 arcto 4 {pop} repeat - cp gs col-1 s gr -% Polyline -n 1275 975 m 2550 975 l 2550 1800 l 1275 1800 l - cp gs col-1 s gr -% Polyline -n 6000 900 m 7275 900 l 7275 2175 l 6000 2175 l - cp gs col-1 s gr -% Polyline - [60] 0 sd -n 7500 825 m 7800 825 l 7800 2400 l - 7500 2400 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 7500 2550 m 7800 2550 l 7800 4125 l - 7500 4125 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 7500 4275 m 7800 4275 l 7800 6675 l - 7500 6675 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 7500 6825 m 7800 6825 l 7800 7725 l - 7500 7725 l gs col-1 s gr [] 0 sd -% Polyline -gs clippath -4995 2190 m 5055 2190 l 5055 2023 l 5025 2143 l 4995 2023 l cp -eoclip -n 6000 1575 m 5025 1575 l - 5025 2175 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4995 2023 m 5025 2143 l 5055 2023 l 4995 2023 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4616 3069 m 4665 3104 l 4763 2968 l 4669 3049 l 4714 2933 l cp -eoclip -n 5025 2550 m - 4650 3075 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4714 2933 m 4669 3049 l 4763 2968 l 4714 2933 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3270 2190 m 3330 2190 l 3330 2023 l 3300 2143 l 3270 2023 l cp -eoclip -n 2550 1350 m 3300 1350 l - 3300 2175 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3270 2023 m 3300 2143 l 3330 2023 l 3270 2023 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3659 3104 m 3708 3069 l 3610 2933 l 3656 3049 l 3561 2968 l cp -eoclip -n 3300 2550 m - 3675 3075 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3561 2968 m 3656 3049 l 3610 2933 l 3561 2968 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1320 5040 m 1380 5040 l 1380 4873 l 1350 4993 l 1320 4873 l cp -eoclip -n 1350 4650 m - 1350 5025 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1320 4873 m 1350 4993 l 1380 4873 l 1320 4873 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -1380 6210 m 1320 6210 l 1320 6377 l 1350 6257 l 1380 6377 l cp -eoclip -n 1350 6225 m - 1350 6600 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 1380 6377 m 1350 6257 l 1320 6377 l 1380 6377 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3311 5431 m 3318 5372 l 3152 5351 l 3268 5396 l 3145 5410 l cp -eoclip -n 2100 5250 m - 3300 5400 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3145 5410 m 3268 5396 l 3152 5351 l 3145 5410 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -3321 5800 m 3307 5742 l 3145 5783 l 3269 5783 l 3159 5841 l cp -eoclip -n 2100 6075 m - 3300 5775 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 3159 5841 m 3269 5783 l 3145 5783 l 3159 5841 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4020 4290 m 4080 4290 l 4080 4123 l 4050 4243 l 4020 4123 l cp -eoclip -n 4050 3900 m - 4050 4275 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4020 4123 m 4050 4243 l 4080 4123 l 4020 4123 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4020 5265 m 4080 5265 l 4080 5098 l 4050 5218 l 4020 5098 l cp -eoclip -n 4050 4650 m - 4050 5250 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4020 5098 m 4050 5218 l 4080 5098 l 4020 5098 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4020 6465 m 4080 6465 l 4080 6298 l 4050 6418 l 4020 6298 l cp -eoclip -n 4050 5925 m - 4050 6450 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4020 6298 m 4050 6418 l 4080 6298 l 4020 6298 l cp gs 0.00 setgray ef gr col-1 s -% Polyline -30.000 slw -gs clippath -4080 6810 m 4020 6810 l 4020 6977 l 4050 6857 l 4080 6977 l cp -eoclip -n 4050 6825 m - 4050 7200 l gs col-1 s gr gr - -% arrowhead -15.000 slw -n 4080 6977 m 4050 6857 l 4020 6977 l 4080 6977 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 300.00 scf sf -7875 1500 m -gs 1 -1 sc (Data) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 1770 m -gs 1 -1 sc (Prep) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 3375 m -gs 1 -1 sc (Training) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 5550 m -gs 1 -1 sc (Testing) col-1 sh gr -/Times-Roman ff 300.00 scf sf -7875 7350 m -gs 1 -1 sc (Analysis) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3675 4575 m -gs 1 -1 sc (HMMs) col-1 sh gr -/Times-Roman ff 300.00 scf sf -750 6150 m -gs 1 -1 sc (Networks) col-1 sh gr -/Times-Roman ff 300.00 scf sf -675 5325 m -gs 1 -1 sc (Dictionary) col-1 sh gr -/Times-Roman ff 300.00 scf sf -1350 1275 m -gs 1 -1 sc (HLE) col-1 sh gr -/Times-Roman ff 300.00 scf sf -900 4575 m -gs 1 -1 sc (HDM) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1575 4575 m -gs 1 -1 sc (AN) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 2100 m -gs 1 -1 sc (HQ) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 1200 m -gs 1 -1 sc (HSL) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6600 1200 m -gs 1 -1 sc (AB) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 1500 m -gs 1 -1 sc (HC) col-1 sh gr -/Times-Roman ff 300.00 scf sf -6075 1800 m -gs 1 -1 sc (HL) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4650 2475 m -gs 1 -1 sc (Speech) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1950 1275 m -gs 1 -1 sc (D) col-1 sh gr -/Times-Roman ff 300.00 scf sf -1350 1650 m -gs 1 -1 sc (HLS) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6525 2100 m -gs 1 -1 sc (UANT) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6450 1800 m -gs 1 -1 sc (IST) col-1 sh gr -/Times-Roman ff 240.00 scf sf -6525 1500 m -gs 1 -1 sc (OPY) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1875 1650 m -gs 1 -1 sc (TATS) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3450 7500 m -gs 1 -1 sc (HR) col-1 sh gr -/Times-Roman ff 300.00 scf sf -900 6900 m -gs 1 -1 sc (HB) col-1 sh gr -/Times-Roman ff 240.00 scf sf -1275 6900 m -gs 1 -1 sc (UILD) col-1 sh gr -/Times-Roman ff 240.00 scf sf -3825 7500 m -gs 1 -1 sc (ESULTS) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2325 3825 m -gs 1 -1 sc (HS) col-1 sh gr -/Times-Roman ff 240.00 scf sf -2700 3825 m -gs 1 -1 sc (MOOTH) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3600 3825 m -gs 1 -1 sc (, HHE) col-1 sh gr -/Times-Roman ff 240.00 scf sf -4350 3825 m -gs 1 -1 sc (D) col-1 sh gr -/Times-Roman ff 240.00 scf sf -5325 3825 m -gs 1 -1 sc (DAPT) col-1 sh gr -/Times-Roman ff 300.00 scf sf -4575 3825 m -gs 1 -1 sc (, HEA) col-1 sh gr -/Times-Roman ff 300.00 scf sf -3225 6750 m -gs 1 -1 sc (Transcriptions) col-1 sh gr -/Times-Roman ff 300.00 scf sf -2400 2475 m -gs 1 -1 sc (Transcriptions) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/tcover.eps b/HTKBook/HTKFigs/tcover.eps deleted file mode 100644 index 2a21772..0000000 --- a/HTKBook/HTKFigs/tcover.eps +++ /dev/null @@ -1,2068 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: tcover.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/21/96 12:01:01 a.m. -%%BoundingBox: 10 238 374 773 -%%QDBoundingBox: 10.500 19.500 373.222 553.500 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginText -save -%%IncludeFont: NewCenturySchlbk-Roman -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 19.500 10.500 0.000 0.000 53.000 152.335 rect -%@EndRect -gsave -86.667 46.000 T translate -0.0 rotate -1 1 scale -48.000 (NewCenturySchlbk-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(I) -76.000 17.000 S -(n) -56.453 17.000 S -(s) -27.132 17.000 S -(i) -4.914 17.000 S -(d) 10.203 17.000 S -(e) 37.765 17.000 S -( ) 61.765 17.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Helvetica-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica-Bold /Helvetica-Bold EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 146.500 79.500 0.000 0.000 128.000 93.328 rect -%@EndRect -gsave -126.164 210.500 T translate -0.0 rotate -1 1 scale -128.000 (_Helvetica-Bold) plain F -0.000 0.000 0.000 setrgbcolor -(H) -46.000 36.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 146.500 224.500 0.000 0.000 128.000 93.328 rect -%@EndRect -gsave -271.164 210.500 T translate -0.0 rotate -1 1 scale -128.000 (_Helvetica-Bold) fess -0.000 0.000 0.000 setrgbcolor -(K) -46.000 36.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 114.500 144.500 0.000 0.000 170.000 104.187 rect -%@EndRect -gsave -196.593 199.500 T translate -0.0 rotate -1 1 scale -170.000 (_Helvetica-Bold) fess -0.000 0.000 0.000 setrgbcolor -(T) -52.000 47.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -restore -save -%%IncludeFont: NewCenturySchlbk-Roman -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 330.500 202.500 0.000 0.000 120.000 170.722 rect -%@EndRect -gsave -287.861 390.500 T translate -0.0 rotate -1 1 scale -24.000 (NewCenturySchlbk-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(J) -51.199 -40.000 S -(o) -37.851 -40.000 S -(o) -25.851 -40.000 S -(p) -13.851 -40.000 S -( ) -0.070 -40.000 S -(J) 6.597 -40.000 S -(a) 19.945 -40.000 S -(n) 33.292 -40.000 S -(s) 47.953 -40.000 S -(e) 59.062 -40.000 S -(n) 71.062 -40.000 S -0.000 0.000 0.000 setrgbcolor -(J) -51.644 -16.000 S -(u) -38.296 -16.000 S -(l) -23.636 -16.000 S -(i) -16.078 -16.000 S -(a) -8.519 -16.000 S -(n) 4.828 -16.000 S -( ) 19.488 -16.000 S -(O) 26.156 -16.000 S -(d) 44.824 -16.000 S -(e) 58.605 -16.000 S -(l) 70.605 -16.000 S -(l) 78.164 -16.000 S -0.000 0.000 0.000 setrgbcolor -(D) -62.753 8.000 S -(a) -44.085 8.000 S -(v) -30.738 8.000 S -(e) -17.847 8.000 S -( ) -5.847 8.000 S -(O) 0.820 8.000 S -(l) 19.488 8.000 S -(l) 27.046 8.000 S -(a) 34.605 8.000 S -(s) 47.953 8.000 S -(o) 59.062 8.000 S -(n) 71.062 8.000 S -0.000 0.000 0.000 setrgbcolor -(P) -77.402 32.000 S -(h) -61.394 32.000 S -(i) -46.734 32.000 S -(l) -39.175 32.000 S -( ) -31.617 32.000 S -(W) -24.949 32.000 S -(o) -1.406 32.000 S -(o) 10.593 32.000 S -(d) 22.593 32.000 S -(l) 36.375 32.000 S -(a) 43.933 32.000 S -(n) 57.281 32.000 S -(d) 71.941 32.000 S -0.000 0.000 0.000 setrgbcolor -(S) -53.402 56.000 S -(t) -38.285 56.000 S -(e) -28.945 56.000 S -(v) -16.945 56.000 S -(e) -4.054 56.000 S -( ) 7.945 56.000 S -(Y) 14.613 56.000 S -(o) 31.511 56.000 S -(u) 43.511 56.000 S -(n) 58.171 56.000 S -(g) 72.832 56.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: ArialMT-CondensedLight -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_ArialMT-CondensedLight /ArialMT-CondensedLight EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 412.500 18.500 0.000 0.000 26.000 119.000 rect -%@EndRect -gsave -78.000 425.500 T translate -0.0 rotate -1 1 scale -24.000 (_ArialMT-CondensedLight) plain F -0.000 0.000 0.000 setrgbcolor -(V) -59.000 9.000 S -(e) -45.001 9.000 S -(r) -33.757 9.000 S -(s) -25.009 9.000 S -(i) -13.765 9.000 S -(o) -6.517 9.000 S -(n) 6.226 9.000 S -( ) 18.970 9.000 S -(2) 26.968 9.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -3.000 122.000 410.000 14.000 410.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -3.000 122.000 443.000 14.000 443.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: NewCenturySchlbk-Roman -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 537.500 34.500 0.000 0.000 16.000 320.000 rect -%@EndRect -gsave -194.500 545.500 T translate -0.0 rotate -1 1 scale -14.000 (NewCenturySchlbk-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(©) -159.917 5.000 S -( ) -149.602 5.000 S -(E) -145.712 5.000 S -(n) -135.602 5.000 S -(t) -127.050 5.000 S -(r) -121.602 5.000 S -(o) -115.388 5.000 S -(p) -108.388 5.000 S -(i) -100.349 5.000 S -(c) -95.940 5.000 S -( ) -89.726 5.000 S -(C) -85.836 5.000 S -(a) -75.726 5.000 S -(m) -67.940 5.000 S -(b) -55.492 5.000 S -(r) -47.706 5.000 S -(i) -41.492 5.000 S -(d) -37.083 5.000 S -(g) -29.043 5.000 S -(e) -21.524 5.000 S -( ) -14.524 5.000 S -(R) -10.634 5.000 S -(e) -0.524 5.000 S -(s) 6.475 5.000 S -(e) 12.956 5.000 S -(a) 19.956 5.000 S -(r) 27.742 5.000 S -(c) 33.956 5.000 S -(h) 40.169 5.000 S -( ) 48.721 5.000 S -(L) 52.611 5.000 S -(a) 61.949 5.000 S -(b) 69.735 5.000 S -(o) 77.521 5.000 S -(r) 84.521 5.000 S -(a) 90.735 5.000 S -(t) 98.521 5.000 S -(o) 103.969 5.000 S -(r) 110.969 5.000 S -(y) 117.183 5.000 S -( ) 124.703 5.000 S -(1) 128.592 5.000 S -(9) 136.378 5.000 S -(9) 144.165 5.000 S -(6) 151.951 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/tiedstate.eps b/HTKBook/HTKFigs/tiedstate.eps deleted file mode 100644 index 95aee47..0000000 --- a/HTKBook/HTKFigs/tiedstate.eps +++ /dev/null @@ -1,6154 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: tiedstate.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/25/95 8:10:59 p.m. -%%BoundingBox: 121.135 427.750 440.135 706.250 -%%QDBoundingBox: 121.135 85.750 440.135 364.250 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 155.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.266 120.638 155.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.445 132.388 164.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.945 132.388 126.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 121.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 191.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 153.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 136.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 136.516 120.638 136.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 135.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.695 132.388 145.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 174.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -174.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 174.016 120.638 174.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 172.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -191.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 190.195 132.388 183.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 236.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -236.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.266 120.638 236.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -253.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.445 132.388 245.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.945 132.388 207.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 202.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 272.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 234.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 217.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.516 120.638 217.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 216.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.695 132.388 226.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 255.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -255.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 255.016 120.638 255.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 253.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -272.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.195 132.388 264.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 317.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -317.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 317.266 120.638 317.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -334.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.445 132.388 326.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.945 132.388 288.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 283.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 353.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 315.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 298.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.516 120.638 298.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 297.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 314.695 132.388 307.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 336.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -336.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 336.016 120.638 336.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 334.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -353.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.195 132.388 345.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 398.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -398.266 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 398.266 120.638 398.266 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.528 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.445 132.388 407.492 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.028 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.945 132.388 369.992 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 364.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 128.833 434.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 396.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 379.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.516 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.516 120.638 379.516 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 378.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.778 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 395.695 132.388 388.742 132.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.500 417.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -417.016 121.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 417.016 120.638 417.016 114.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 125.277 415.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -434.278 132.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 433.195 132.388 426.242 132.388 Line -%@EndLine -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 139.135 0.000 0.000 16.000 34.336 rect -%@EndRect -gsave -156.304 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -16.364 4.000 S -(-) -12.474 4.000 S -(i) -7.812 4.000 S -(h) -3.922 4.000 S -(+) 3.077 4.000 S -(n) 10.972 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 220.135 0.000 0.000 16.000 41.336 rect -%@EndRect -gsave -240.804 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -20.364 4.000 S -(-) -16.474 4.000 S -(i) -11.812 4.000 S -(h) -7.922 4.000 S -(+) -0.922 4.000 S -(n) 6.972 4.000 S -(g) 13.972 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 305.135 0.000 0.000 16.000 31.999 rect -%@EndRect -gsave -321.135 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -15.364 4.000 S -(-) -10.702 4.000 S -(i) -6.039 4.000 S -(h) -2.150 4.000 S -(+) 4.849 4.000 S -(l) 12.745 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 85.750 386.135 0.000 0.000 16.000 32.785 rect -%@EndRect -gsave -402.528 93.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -16.364 4.000 S -(-) -10.915 4.000 S -(i) -6.253 4.000 S -(h) -2.364 4.000 S -(+) 4.635 4.000 S -(l) 12.531 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 130.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 136.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 136.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 141.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 130.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 150.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 156.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 156.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 161.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 150.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 170.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 176.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 176.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 181.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 170.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 139.901 161.763 139.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 158.733 161.763 158.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.564 161.763 177.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 211.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 217.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 217.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 222.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 211.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 231.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 237.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 237.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 242.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 231.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 251.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 257.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 257.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 262.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 251.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 220.901 161.763 220.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 239.733 161.763 239.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 258.564 161.763 258.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 292.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 298.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 298.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 303.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 292.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 312.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 318.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 318.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 323.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 312.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 332.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 338.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 338.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 343.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 332.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 301.901 161.763 301.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 320.733 161.763 320.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 339.564 161.763 339.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 373.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 379.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 379.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 384.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 373.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 393.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 399.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 399.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 404.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 393.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.750 413.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 419.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 419.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 424.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 167.149 413.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 382.901 161.763 382.901 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 401.733 161.763 401.733 139.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 420.564 161.763 420.564 139.319 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 155.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -155.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 155.266 295.638 155.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -172.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.445 307.388 164.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -135.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.945 307.388 126.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 121.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 191.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 153.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 136.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 136.516 295.638 136.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 135.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.695 307.388 145.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 174.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -174.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 174.016 295.638 174.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 172.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -191.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 190.195 307.388 183.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 236.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -236.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.266 295.638 236.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -253.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.445 307.388 245.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.945 307.388 207.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 202.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 272.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 234.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 217.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.516 295.638 217.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 216.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 233.695 307.388 226.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 255.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -255.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 255.016 295.638 255.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 253.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -272.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 271.195 307.388 264.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 317.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -317.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 317.266 295.638 317.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -334.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.445 307.388 326.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -297.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 295.945 307.388 288.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 283.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 353.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 315.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 298.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -298.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 298.516 295.638 298.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 297.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -315.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 314.695 307.388 307.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 336.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -336.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 336.016 295.638 336.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 334.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -353.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.195 307.388 345.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 398.266 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -398.266 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 398.266 295.638 398.266 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -415.528 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 414.445 307.388 407.492 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.028 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.945 307.388 369.992 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 364.635 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 303.833 434.278 0.000 0.000 7.111 5.357 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 396.778 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 379.516 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.516 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 379.516 295.638 379.516 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 378.028 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.778 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 395.695 307.388 388.742 307.388 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 282.500 417.016 0.000 0.000 21.333 8.035 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -417.016 296.722 moveto -/Triangular 7.637 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 417.016 295.638 417.016 289.611 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 300.277 415.528 0.000 0.000 14.222 10.714 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -434.278 307.388 moveto -/Triangular 7.637 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 433.195 307.388 426.242 307.388 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 136.327 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 143.167 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 143.167 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 147.487 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 136.687 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 195.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 201.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 201.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 206.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 195.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 233.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 239.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 239.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 244.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 233.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 142.997 335.989 139.901 314.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 200.637 335.989 158.733 314.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 240.564 336.763 177.564 314.319 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 247.135 336.750 258.457 315.654 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 204.306 335.632 239.135 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 208.950 335.632 321.176 315.509 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 147.806 336.406 222.108 314.735 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 305.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 311.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 311.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 316.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 305.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 341.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 347.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 347.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 352.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 341.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 336.750 395.135 0.000 0.000 27.000 18.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 401.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 401.975 0.000 0.000 16.200 4.320 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 406.295 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 342.149 395.495 0.000 0.000 16.200 6.480 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 308.018 336.406 301.827 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 318.080 336.406 383.094 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 345.169 335.632 339.751 315.509 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 354.457 336.406 421.018 314.735 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 404.765 337.180 402.443 314.735 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 140.771 0.000 0.000 16.000 34.336 rect -%@EndRect -gsave -157.940 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -16.728 4.000 S -(-) -12.838 4.000 S -(i) -8.176 4.000 S -(h) -4.286 4.000 S -(+) 2.713 4.000 S -(n) 10.608 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 221.771 0.000 0.000 16.000 41.336 rect -%@EndRect -gsave -242.440 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -19.728 4.000 S -(-) -15.838 4.000 S -(i) -11.176 4.000 S -(h) -7.286 4.000 S -(+) -0.286 4.000 S -(n) 7.608 4.000 S -(g) 14.608 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 306.771 0.000 0.000 16.000 31.999 rect -%@EndRect -gsave -322.771 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -15.728 4.000 S -(-) -11.066 4.000 S -(i) -6.404 4.000 S -(h) -2.514 4.000 S -(+) 4.485 4.000 S -(l) 12.380 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 261.750 387.771 0.000 0.000 16.000 32.785 rect -%@EndRect -gsave -404.164 269.750 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -15.728 4.000 S -(-) -10.280 4.000 S -(i) -5.618 4.000 S -(h) -1.728 4.000 S -(+) 5.271 4.000 S -(l) 13.167 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -277.664 263.750 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 277.664 259.750 277.664 200.750 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 216.500 288.500 0.000 0.000 16.000 83.671 rect -%@EndRect -gsave -330.335 224.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -39.024 4.000 S -(C) -30.472 4.000 S -( ) -21.134 4.000 S -(C) -17.634 4.000 S -(o) -8.296 4.000 S -(m) -1.296 4.000 S -(m) 9.592 4.000 S -(a) 20.482 4.000 S -(n) 26.696 4.000 S -(d) 33.696 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/tmixeg.eps b/HTKBook/HTKFigs/tmixeg.eps deleted file mode 100644 index 5a2107e..0000000 --- a/HTKBook/HTKFigs/tmixeg.eps +++ /dev/null @@ -1,2564 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: tmixeg.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:4/7/95 9:48:23 p.m. -%%BoundingBox: 17.500 496.500 432.500 765.500 -%%QDBoundingBox: 17.500 26.500 432.500 295.500 -%%DocumentFonts: Helvetica -%%+ Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 214.656 238.500 0.000 0.000 19.343 36.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 19.343] CP -[2.160 18.287 3.579 18.017 5.538 16.637] CP -[6.777 15.764 7.414 15.142 8.307 13.931] CP -[9.719 12.017 9.996 10.631 11.076 8.520] CP -[12.156 6.410 12.434 5.023 13.846 3.109] CP -[14.739 1.898 15.204 0.974 16.615 0.403] CP -[17.613 0.000 18.386 0.000 19.384 0.403] CP -[20.795 0.974 21.260 1.898 22.153 3.109] CP -[23.565 5.023 23.843 6.410 24.923 8.520] CP -[26.003 10.631 26.280 12.017 27.692 13.931] CP -[28.585 15.142 29.222 15.764 30.461 16.637] CP -[32.420 18.017 33.839 18.287 36.000 19.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 205.656 184.500 0.000 0.000 28.343 36.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 28.343] CP -[2.160 26.796 3.579 26.400 5.538 24.378] CP -[6.777 23.100 7.414 22.187 8.307 20.414] CP -[9.719 17.609 9.996 15.577 11.076 12.485] CP -[12.156 9.392 12.434 7.360 13.846 4.556] CP -[14.739 2.782 15.204 1.428 16.615 0.591] CP -[17.613 0.000 18.386 0.000 19.384 0.591] CP -[20.795 1.428 21.260 2.782 22.153 4.556] CP -[23.565 7.360 23.843 9.392 24.923 12.485] CP -[26.003 15.577 26.280 17.609 27.692 20.414] CP -[28.585 22.187 29.222 23.100 30.461 24.378] CP -[32.420 26.400 33.839 26.796 36.000 28.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 196.656 391.500 0.000 0.000 37.343 18.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 37.343] CP -[1.080 35.305 1.789 34.783 2.769 32.119] CP -[3.388 30.435 3.707 29.233 4.153 26.896] CP -[4.859 23.201 4.998 20.523 5.538 16.449] CP -[6.078 12.375 6.217 9.698 6.923 6.002] CP -[7.369 3.665 7.602 1.882 8.307 0.779] CP -[8.806 0.000 9.193 0.000 9.692 0.779] CP -[10.397 1.882 10.630 3.665 11.076 6.002] CP -[11.782 9.698 11.921 12.375 12.461 16.449] CP -[13.001 20.523 13.140 23.201 13.846 26.896] CP -[14.292 29.233 14.611 30.435 15.230 32.119] CP -[16.210 34.783 16.919 35.305 18.000 37.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 214.656 90.000 0.000 0.000 19.343 45.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 19.343] CP -[2.700 18.287 4.474 18.017 6.923 16.637] CP -[8.471 15.764 9.268 15.142 10.384 13.931] CP -[12.149 12.017 12.496 10.631 13.846 8.520] CP -[15.196 6.410 15.542 5.023 17.307 3.109] CP -[18.424 1.898 19.005 0.974 20.769 0.403] CP -[22.016 0.000 22.983 0.000 24.230 0.403] CP -[25.994 0.974 26.575 1.898 27.692 3.109] CP -[29.457 5.023 29.803 6.410 31.153 8.520] CP -[32.503 10.631 32.850 12.017 34.615 13.931] CP -[35.731 15.142 36.528 15.764 38.076 16.637] CP -[40.525 18.017 42.300 18.287 45.000 19.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 205.656 40.500 0.000 0.000 28.343 36.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 28.343] CP -[2.160 26.796 3.579 26.400 5.538 24.378] CP -[6.777 23.100 7.414 22.187 8.307 20.414] CP -[9.719 17.609 9.996 15.577 11.076 12.485] CP -[12.156 9.392 12.434 7.360 13.846 4.556] CP -[14.739 2.782 15.204 1.428 16.615 0.591] CP -[17.613 0.000 18.386 0.000 19.384 0.591] CP -[20.795 1.428 21.260 2.782 22.153 4.556] CP -[23.565 7.360 23.843 9.392 24.923 12.485] CP -[26.003 15.577 26.280 17.609 27.692 20.414] CP -[28.585 22.187 29.222 23.100 30.461 24.378] CP -[32.420 26.400 33.839 26.796 36.000 28.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 196.656 144.000 0.000 0.000 37.343 27.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 37.343] CP -[1.620 35.305 2.684 34.783 4.153 32.119] CP -[5.083 30.435 5.560 29.233 6.230 26.896] CP -[7.289 23.201 7.497 20.523 8.307 16.449] CP -[9.117 12.375 9.325 9.698 10.384 6.002] CP -[11.054 3.665 11.403 1.882 12.461 0.779] CP -[13.209 0.000 13.790 0.000 14.538 0.779] CP -[15.596 1.882 15.945 3.665 16.615 6.002] CP -[17.674 9.698 17.882 12.375 18.692 16.449] CP -[19.502 20.523 19.710 23.201 20.769 26.896] CP -[21.439 29.233 21.916 30.435 22.846 32.119] CP -[24.315 34.783 25.380 35.305 27.000 37.343] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginText -save -%%IncludeFont: Helvetica -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica /Helvetica EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 54.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -57.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 108.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -111.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 153.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -156.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 198.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -201.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 252.500 0.000 0.000 14.000 6.673 rect -%@EndRect -gsave -255.836 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.000 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 252.500 396.500 0.000 0.000 14.000 9.996 rect -%@EndRect -gsave -401.498 259.500 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -4.000 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 189.000 27.000 0.000 0.000 81.000 396.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 58.000 27.000 0.000 0.000 32.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 70.000 36.000 0.000 0.000 20.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 45.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 71.000 54.000 0.000 0.000 19.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 63.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 72.000 0.000 0.000 9.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 84.000 81.000 0.000 0.000 6.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 90.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 99.000 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 108.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.000 117.000 0.000 0.000 33.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 66.000 126.000 0.000 0.000 24.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 171.000 0.000 0.000 17.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 180.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 59.000 189.000 0.000 0.000 31.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 83.000 198.000 0.000 0.000 7.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 71.000 207.000 0.000 0.000 19.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 78.000 216.000 0.000 0.000 12.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 225.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.000 234.000 0.000 0.000 33.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 78.000 243.000 0.000 0.000 12.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 56.000 252.000 0.000 0.000 34.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 80.000 261.000 0.000 0.000 10.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.000 270.000 0.000 0.000 30.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 51.000 315.000 0.000 0.000 39.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 78.000 324.000 0.000 0.000 12.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 333.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 83.000 342.000 0.000 0.000 7.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 79.000 351.000 0.000 0.000 11.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 60.000 360.000 0.000 0.000 30.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 73.000 369.000 0.000 0.000 17.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 63.000 378.000 0.000 0.000 27.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 53.000 387.000 0.000 0.000 37.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 81.000 396.000 0.000 0.000 9.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 69.000 405.000 0.000 0.000 21.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.000 414.000 0.000 0.000 33.000 9.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 62.500 0.000 0.000 16.000 35.382 rect -%@EndRect -gsave -80.191 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.000 4.000 S -(t) -9.213 4.000 S -(a) -5.324 4.000 S -(t) 0.889 4.000 S -(e) 4.779 4.000 S -( ) 10.993 4.000 S -(i) 14.493 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 206.500 0.000 0.000 16.000 35.382 rect -%@EndRect -gsave -224.191 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -17.000 4.000 S -(t) -9.213 4.000 S -(a) -5.324 4.000 S -(t) 0.889 4.000 S -(e) 4.779 4.000 S -( ) 10.993 4.000 S -(j) 14.493 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 30.500 350.500 0.000 0.000 16.000 38.493 rect -%@EndRect -gsave -369.746 38.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -19.000 4.000 S -(t) -11.213 4.000 S -(a) -7.324 4.000 S -(t) -1.110 4.000 S -(e) 2.779 4.000 S -( ) 8.993 4.000 S -(k) 12.493 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Helvetica -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Helvetica /Helvetica EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.000 27.000 0.000 0.000 14.000 110.050 rect -%@EndRect -gsave -82.025 106.000 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -54.500 3.000 S -( ) -47.826 3.000 S -(2) -44.492 3.000 S -( ) -37.818 3.000 S -(3) -34.484 3.000 S -( ) -27.810 3.000 S -(4) -24.476 3.000 S -( ) -17.802 3.000 S -(5) -14.468 3.000 S -( ) -7.794 3.000 S -(6) -4.460 3.000 S -( ) 2.212 3.000 S -( ) 5.546 3.000 S -( ) 8.880 3.000 S -( ) 12.214 3.000 S -(.) 15.548 3.000 S -(.) 18.882 3.000 S -(.) 22.216 3.000 S -( ) 25.550 3.000 S -( ) 28.884 3.000 S -( ) 32.218 3.000 S -( ) 35.552 3.000 S -( ) 38.886 3.000 S -( ) 42.220 3.000 S -(M) 45.554 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.000 171.000 0.000 0.000 14.000 110.050 rect -%@EndRect -gsave -226.025 106.000 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -54.500 3.000 S -( ) -47.826 3.000 S -(2) -44.492 3.000 S -( ) -37.818 3.000 S -(3) -34.484 3.000 S -( ) -27.810 3.000 S -(4) -24.476 3.000 S -( ) -17.802 3.000 S -(5) -14.468 3.000 S -( ) -7.794 3.000 S -(6) -4.460 3.000 S -( ) 2.212 3.000 S -( ) 5.546 3.000 S -( ) 8.880 3.000 S -( ) 12.214 3.000 S -(.) 15.548 3.000 S -(.) 18.882 3.000 S -(.) 22.216 3.000 S -( ) 25.550 3.000 S -( ) 28.884 3.000 S -( ) 32.218 3.000 S -( ) 35.552 3.000 S -( ) 38.886 3.000 S -( ) 42.220 3.000 S -(M) 45.554 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 99.000 315.000 0.000 0.000 14.000 110.050 rect -%@EndRect -gsave -370.025 106.000 T translate -0.0 rotate -1 1 scale -12.000 (_Helvetica) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -54.500 3.000 S -( ) -47.826 3.000 S -(2) -44.492 3.000 S -( ) -37.818 3.000 S -(3) -34.484 3.000 S -( ) -27.810 3.000 S -(4) -24.476 3.000 S -( ) -17.802 3.000 S -(5) -14.468 3.000 S -( ) -7.794 3.000 S -(6) -4.460 3.000 S -( ) 2.212 3.000 S -( ) 5.546 3.000 S -( ) 8.880 3.000 S -( ) 12.214 3.000 S -(.) 15.548 3.000 S -(.) 18.882 3.000 S -(.) 22.216 3.000 S -( ) 25.550 3.000 S -( ) 28.884 3.000 S -( ) 32.218 3.000 S -( ) 35.552 3.000 S -( ) 38.886 3.000 S -( ) 42.220 3.000 S -(M) 45.554 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -90.000 180.000 moveto -/Triangular 16.799 8.399 false 261.889 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 89.434 176.040 81.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -225.000 180.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 224.999 176.000 225.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -360.000 180.000 moveto -/Triangular 16.799 8.399 false 278.149 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 360.565 176.040 369.000 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 18.000 0.000 0.000 90.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 162.000 0.000 0.000 90.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 27.000 306.000 0.000 0.000 90.000 126.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 279.500 153.500 0.000 0.000 16.000 136.472 rect -%@EndRect -gsave -221.736 287.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -68.000 4.000 S -(i) -59.448 4.000 S -(e) -55.558 4.000 S -(d) -49.344 4.000 S -(-) -42.344 4.000 S -(M) -37.682 4.000 S -(i) -25.234 4.000 S -(x) -21.344 4.000 S -(t) -14.344 4.000 S -(u) -10.455 4.000 S -(r) -3.455 4.000 S -(e) 1.207 4.000 S -( ) 7.420 4.000 S -(C) 10.920 4.000 S -(o) 20.258 4.000 S -(d) 27.258 4.000 S -(e) 34.258 4.000 S -(b) 40.472 4.000 S -(o) 47.472 4.000 S -(o) 54.472 4.000 S -(k) 61.472 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 225.500 324.500 0.000 0.000 26.000 18.000 rect -%@EndRect -gsave -333.500 238.500 T translate -0.0 rotate -1 1 scale -24.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(.) -9.000 6.000 S -(.) -3.000 6.000 S -(.) 3.000 6.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/toolkit.eps b/HTKBook/HTKFigs/toolkit.eps deleted file mode 100644 index ea48c47..0000000 --- a/HTKBook/HTKFigs/toolkit.eps +++ /dev/null @@ -1,3256 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: toolkit.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/14/95 11:32:12 a.m. -%%BoundingBox: 44.382 404.625 297.617 618.515 -%%QDBoundingBox: 44.382 173.484 297.617 387.374 -%%DocumentFonts: Times-Bold -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 269.874 87.117 0.000 0.000 72.000 0.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.117 305.874 87.117 269.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.117 386.874 87.117 341.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 159.117 386.874 159.117 305.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 293.374 159.117 305.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 368.874 159.117 386.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 368.874 285.117 294.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.117 293.374 212.617 258.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.117 291.874 212.617 260.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 160.617 302.374 277.117 291.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 97.117 271.874 160.617 302.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 212.617 296.874 212.617 260.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.617 307.874 213.617 309.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 213.117 318.874 213.117 309.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.117 316.624 235.117 308.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 213.117 319.374 234.617 316.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.017 313.329 222.476 0.000 0.000 12.500 5.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 -0.139 361.222 198.996 0.000 0.000 14.000 45.333 rect -%@EndRect -gsave -221.663 368.222 T translate -8.000 rotate -1 1 scale -12.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -22.503 3.000 S -(n) -14.499 3.000 S -(t) -7.825 3.000 S -(r) -3.829 3.000 S -(o) 1.496 3.000 S -(p) 7.496 3.000 S -(i) 14.170 3.000 S -(c) 17.504 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 213.117 258.874 87.117 269.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 212.617 261.374 97.617 271.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 61.617 196.624 87.117 269.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.617 190.374 212.117 257.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 62.117 196.374 180.617 189.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 59.617 208.374 61.117 197.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 79.117 267.374 59.117 208.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 86.617 269.374 79.617 267.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 123.117 265.874 102.617 267.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.117 259.374 177.617 261.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.617 192.374 65.117 198.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 209.117 255.874 179.117 191.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.617 266.374 208.617 255.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 88.617 265.874 65.117 198.874 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.617 200.874 178.617 192.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 68.117 207.374 177.617 200.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 203.117 255.374 177.617 200.374 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 231.353 49.769 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -51.000 245.439 moveto -/Triangular 4.699 7.049 false 243.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 50.698 244.845 49.437 242.370 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 219.568 72.898 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -74.130 233.654 moveto -/Triangular 4.699 7.049 false 243.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.827 233.060 72.566 230.585 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 207.783 96.027 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -97.259 221.869 moveto -/Triangular 4.699 7.049 false 243.017 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 96.956 221.275 95.695 218.800 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 247.167 53.986 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 235.382 77.115 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -0.471 223.597 100.244 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.794 257.423 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.200 257.725 44.882 262.473 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -77.923 245.638 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 77.329 245.941 68.011 250.689 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -101.052 233.853 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 100.458 234.156 91.140 238.904 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -124.182 222.068 moveto -/Triangular 4.699 7.049 false 153.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 123.587 222.371 114.269 227.119 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 197.874 177.302 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -177.302 209.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.302 208.918 177.302 206.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 197.874 203.261 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -203.261 209.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 203.261 208.918 203.261 206.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 197.874 229.219 0.000 0.000 20.666 11.125 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -229.219 209.585 moveto -/Triangular 4.699 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 229.219 208.918 229.219 206.141 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 215.096 175.242 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 215.096 201.200 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 215.096 227.159 0.000 0.000 13.777 14.833 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -175.242 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 174.575 221.985 164.117 221.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -201.200 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 200.534 221.985 190.075 221.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -227.159 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 226.492 221.985 216.034 221.985 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -253.117 221.985 moveto -/Triangular 4.699 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.450 221.985 241.992 221.985 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 258.874 192.117 0.000 0.000 29.000 104.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 260.874 199.117 0.000 0.000 26.000 89.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 12.518] CP -[0.316 8.409 0.949 5.456 1.898 3.659] CP -[2.848 1.861 3.678 1.412 4.390 2.311] CP -[5.102 3.209 5.735 5.135 6.289 8.088] CP -[6.843 11.041 7.278 13.545 7.594 15.600] CP -[7.911 17.654 8.306 19.516 8.781 21.185] CP -[9.255 22.854 10.007 23.913 11.035 24.362] CP -[12.064 24.812 12.815 24.362 13.290 23.014] CP -[13.765 21.666 14.002 19.997 14.002 18.007] CP -[14.002 16.017 14.358 14.027 15.070 12.037] CP -[15.782 10.046 16.455 8.634 17.087 7.800] CP -[17.720 6.965 18.314 7.158 18.867 8.377] CP -[19.421 9.597 19.936 11.138 20.410 13.000] CP -[20.885 14.861 21.478 16.402 22.190 17.622] CP -[22.902 18.841 23.654 19.227 24.445 18.777] CP -[25.236 18.328 25.750 17.943 25.988 17.622] CP -[26.225 17.301 26.541 16.274 26.937 14.540] CP -[27.332 12.807 28.005 11.298 28.954 10.014] CP -[29.903 8.730 30.734 8.474 31.446 9.244] CP -[32.158 10.014 32.633 11.009 32.870 12.229] CP -[33.107 13.449 33.463 14.444 33.938 15.214] CP -[34.413 15.985 35.085 16.209 35.956 15.888] CP -[36.826 15.567 37.577 14.733 38.210 13.385] CP -[38.843 12.037 39.476 11.234 40.109 10.977] CP -[40.742 10.720 41.770 11.234 43.194 12.518] CP -[44.618 13.802 45.844 14.059 46.873 13.288] CP -[47.901 12.518 48.851 11.748 49.721 10.977] CP -[50.591 10.207 51.540 8.827 52.569 6.837] CP -[53.597 4.846 54.665 3.209 55.773 1.925] CP -[56.880 0.641 57.632 0.256 58.027 0.770] CP -[58.423 1.283 58.819 2.888 59.214 5.585] CP -[59.610 8.281 60.045 10.913 60.519 13.481] CP -[60.994 16.049 61.271 17.943 61.350 19.162] CP -[61.429 20.382 61.864 21.827 62.656 23.496] CP -[63.447 25.165 64.396 25.743 65.503 25.229] CP -[66.611 24.716 67.323 24.298 67.639 23.977] CP -[67.956 23.656 68.431 22.661 69.063 20.992] CP -[69.696 19.323 70.171 17.365 70.487 15.118] CP -[70.804 12.871 71.358 10.592 72.149 8.281] CP -[72.940 5.970 73.533 4.718 73.929 4.525] CP -[74.324 4.333 75.076 4.782 76.183 5.874] CP -[77.291 6.965 78.043 8.602 78.438 10.785] CP -[78.834 12.967 79.269 14.540 79.743 15.503] CP -[80.218 16.466 80.732 16.916 81.286 16.851] CP -[81.840 16.787 82.473 16.274 83.185 15.311] CP -[83.897 14.348 84.609 13.224 85.321 11.940] CP -[86.033 10.656 86.784 10.367 87.576 11.074] CP -[88.367 11.780 88.841 12.325 89.000 12.711] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 296.617 288.374 194.117 288.374 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 297.117 288.374 297.117 260.624 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {0.900 0.900 0.900 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 235.874 156.117 0.000 0.000 39.999 40.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 252.624 172.867 0.000 0.000 6.500 6.500 rect -%@EndOval -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 244.124 160.867 0.000 0.000 6.000 30.000 rect -%@EndRect -gsave -175.867 247.124 T translate -0.0 rotate -1 1 scale -5.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -14.632 3.000 S -(a) -11.128 3.000 S -(r) -8.362 3.000 S -(p) -6.431 3.000 S -(a) -3.421 3.000 S -( ) -0.655 3.000 S -(T) 1.012 3.000 S -(I) 4.212 3.000 S -(M) 5.423 3.000 S -(I) 9.364 3.000 S -(T) 10.575 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 263.124 170.617 0.000 0.000 6.000 12.000 rect -%@EndRect -gsave -176.617 266.124 T translate -0.0 rotate -1 1 scale -5.000 (Courier) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -5.882 3.000 S -(I) -2.339 3.000 S -(S) -1.128 3.000 S -(T) 1.900 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.221 181.404 165.069 0.000 0.000 11.404 11.811 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {3.258 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {0.500 0.500 0.500 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 -1.221 209.357 116.608 0.000 0.000 6.516 70.476 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.221 178.602 158.517 0.000 0.000 10.182 7.086 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.221 176.759 148.543 0.000 0.000 7.738 11.024 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 -0.226 291.325 60.783 0.000 0.000 31.585 58.861 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[4.347 31.406] CP -[12.956 27.277 17.985 23.314 19.433 19.517] CP -[20.880 15.720 22.543 12.566 24.420 10.055] CP -[26.297 7.543 28.655 6.968 31.492 8.327] CP -[34.330 9.687 37.130 11.748 39.892 14.510] CP -[42.655 17.272 46.476 18.720 51.354 18.853] CP -[56.233 18.986 58.721 18.978 58.820 18.829] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -55.309 295.721 moveto -/Triangular 4.699 7.049 false 77.005 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 62.057 324.952 55.459 296.371 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.366 310.105 moveto -/Triangular 4.699 7.049 false 167.011 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.716 310.255 62.057 324.952 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[3.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 92.038 317.004 88.018 299.594 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/PF {fill} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/SS { setlinewidth SD stroke} def -1.000 87.000 318.000 87.000 301.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {7.250 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {DR} def -/flipRatio 0.508 def -/rampAngle 90 def -/rampColors [[0.000 0.000 0.000] [0.333 0.333 0.333] [0.666 0.666 0.666] [1.000 1.000 1.000]] def -/PC {} def -/RF {} def -1.000 0.349 252.825 93.466 0.000 0.000 14.500 30.776 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 251.296 96.832 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 251.296 96.832 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 258.186 115.764 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0.349 258.186 115.764 0.000 0.000 10.785 6.071 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.743 262.293 102.776 257.574 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.545 259.761 103.282 254.570 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 115.333 265.651 101.070 260.460 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0.349 271.852 120.956 0.000 0.000 4.027 51.578 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 166.679 282.836 167.919 279.430 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/tracc.eps b/HTKBook/HTKFigs/tracc.eps deleted file mode 100644 index af0f702..0000000 --- a/HTKBook/HTKFigs/tracc.eps +++ /dev/null @@ -1,181 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: tracc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:17:35 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 192 138 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 171.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Ellipse -n 1950 1350 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 2700 900 m 3900 900 l 3900 2100 l 2700 2100 l cp gs col-1 s gr -% Polyline -n 2700 2400 m 3900 2400 l 3900 2700 l 2700 2700 l cp gs col-1 s gr -% Polyline -n 900 900 m 2100 900 l 2100 1800 l 900 1800 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 900 1500 m 2100 1500 l gs col-1 s gr -% Polyline -n 3000 900 m 3000 2100 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 2100 l gs col-1 s gr -% Polyline -n 3600 900 m 3600 2100 l gs col-1 s gr -% Polyline -n 2700 1200 m 3900 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 2700 1500 m 3900 1500 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -3075 675 m -gs 1 -1 sc ([1..N]) col-1 sh gr -% Polyline -n 2700 1800 m 3900 1800 l gs col-1 s gr -% Polyline -n 3000 2400 m 3000 2700 l gs col-1 s gr -% Polyline -n 3300 2400 m 3300 2700 l gs col-1 s gr -% Polyline -n 3600 2400 m 3600 2700 l gs col-1 s gr -% Interp Spline -gs clippath -2650 758 m 2686 876 l 2599 789 l 2682 928 l 2733 897 l cp clip -n 1950 1050 m - 2062.9 729.5 2156.7 617.0 2325 600 curveto - 2463.0 586.1 2556.7 661.1 2700 900 curveto - gs col-1 s gr - gr - -% arrowhead -n 2650 758 m 2686 876 l 2599 789 l 2625 774 l 2650 758 l cp gs 0.00 setgray ef gr col-1 s -% Interp Spline -gs clippath -2553 2368 m 2673 2399 l 2553 2428 l 2715 2430 l 2715 2370 l cp clip -n 1950 1350 m - 1915.0 1865.2 1952.5 2090.2 2100 2250 curveto - 2200.0 2358.3 2350.0 2395.8 2700 2400 curveto - gs col-1 s gr - gr - -% arrowhead -n 2553 2368 m 2673 2399 l 2553 2428 l 2553 2398 l 2553 2368 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (tran) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1725 m -gs 1 -1 sc (minDur) col-1 sh gr -/Times-Bold ff 180.00 scf sf -1275 750 m -gs 1 -1 sc (TrAcc) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/tsubword.eps b/HTKBook/HTKFigs/tsubword.eps deleted file mode 100644 index 301e0af..0000000 --- a/HTKBook/HTKFigs/tsubword.eps +++ /dev/null @@ -1,4497 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: subword.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/4/95 9:49:31 p.m. -%%BoundingBox: 71.500 348.500 414.500 784.000 -%%QDBoundingBox: 71.500 8.000 414.500 443.500 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=T tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 210.000 351.000 0.000 0.000 27.000 63.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 216.500 356.500 0.000 0.000 16.000 54.448 rect -%@EndRect -gsave -383.724 224.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -27.000 4.000 S -(C) -16.889 4.000 S -(o) -7.551 4.000 S -(m) -0.551 4.000 S -(p) 10.337 4.000 S -(V) 17.337 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 288.000 225.000 0.000 0.000 27.000 72.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 294.500 241.500 0.000 0.000 16.000 43.551 rect -%@EndRect -gsave -263.275 302.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -21.000 4.000 S -(E) -10.889 4.000 S -(R) -2.337 4.000 S -(e) 7.000 4.000 S -(s) 13.213 4.000 S -(t) 18.662 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 333.000 171.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 339.500 180.500 0.000 0.000 16.000 35.772 rect -%@EndRect -gsave -198.386 347.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(H) -6.889 4.000 S -(E) 3.220 4.000 S -(d) 11.772 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 83.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 94.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 108.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.367 125.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 51.299 137.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.536 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.414 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.475 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 52.244 150.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.750 83.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -134.448 45.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 157.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 144.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 125.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.867 114.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 82.799 101.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.536 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.414 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.475 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 83.744 83.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 70.250 83.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -125.886 75.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 36.000 72.000 0.000 0.000 63.000 108.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 18.500 79.500 0.000 0.000 14.000 96.281 rect -%@EndRect -gsave -127.640 25.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(L) -48.000 3.000 S -(a) -40.669 3.000 S -(b) -35.343 3.000 S -(e) -29.343 3.000 S -(l) -24.017 3.000 S -(l) -20.683 3.000 S -(e) -17.349 3.000 S -(d) -12.023 3.000 S -( ) -6.023 3.000 S -(U) -3.023 3.000 S -(t) 5.642 3.000 S -(t) 8.976 3.000 S -(e) 12.310 3.000 S -(r) 17.636 3.000 S -(a) 21.632 3.000 S -(n) 26.958 3.000 S -(c) 32.958 3.000 S -(e) 38.285 3.000 S -(s) 43.611 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 135.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 133.000 126.000 99.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 189.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 195.500 108.500 0.000 0.000 16.000 35.000 rect -%@EndRect -gsave -126.000 203.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -17.000 4.000 S -(R) -6.889 4.000 S -(e) 2.448 4.000 S -(s) 8.662 4.000 S -(t) 14.110 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 99.000 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 110.500 0.000 0.000 16.000 29.551 rect -%@EndRect -gsave -125.275 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.000 4.000 S -(I) -3.889 4.000 S -(n) 0.772 4.000 S -(i) 7.772 4.000 S -(t) 11.662 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -126.000 189.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 125.999 187.000 126.000 162.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 405.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 401.000 261.000 315.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 306.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.000 306.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 333.000 198.000 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 378.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 227.000 377.999 261.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 360.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.000 378.000 198.000 378.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 342.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 286.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 342.000 261.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 315.000 306.000 315.000 342.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -297.000 306.000 moveto -/Triangular 16.799 8.399 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 301.000 305.999 315.000 306.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 412.500 230.500 0.000 0.000 31.000 58.324 rect -%@EndRect -gsave -259.662 428.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -29.000 -3.000 S -(u) -21.213 -3.000 S -(b) -14.213 -3.000 S -(-) -7.213 -3.000 S -(W) -2.551 -3.000 S -(o) 10.662 -3.000 S -(r) 17.662 -3.000 S -(d) 22.324 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -20.065 12.000 S -(M) -9.955 12.000 S -(M) 2.493 12.000 S -(s) 14.941 12.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -378.000 210.000 moveto -/Triangular 14.099 7.049 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 376.585 208.585 324.000 156.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 102.000 216.000 0.000 0.000 108.000 108.000 rect -%@EndRect -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 130.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 132.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 147.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 148.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 116.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.417 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.203 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.510 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 175.699 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.336] CP -[0.267 8.467 0.550 9.925 0.851 9.712] CP -[1.151 9.499 1.418 8.609 1.652 7.044] CP -[1.886 5.478 2.270 3.913 2.804 2.348] CP -[3.338 0.782 3.739 0.284 4.006 0.853] CP -[4.273 1.423 4.507 2.383 4.707 3.735] CP -[4.907 5.087 5.191 6.190 5.558 7.044] CP -[5.926 7.898 6.276 7.755 6.610 6.617] CP -[6.944 5.478 7.178 4.553 7.311 3.842] CP -[7.445 3.130 7.812 3.415 8.413 4.696] CP -[9.014 5.976 9.632 6.403 10.266 5.976] CP -[10.900 5.550 11.318 5.407 11.518 5.550] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.834 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.400] CP -[0.397 3.606 0.729 3.950 0.994 4.431] CP -[1.259 4.912 1.466 5.341 1.615 5.719] CP -[1.764 6.097 1.913 6.629 2.062 7.316] CP -[2.211 8.003 2.402 8.450 2.634 8.656] CP -[2.866 8.862 3.098 8.673 3.330 8.089] CP -[3.562 7.505 3.744 6.887 3.877 6.234] CP -[4.009 5.581 4.117 5.169 4.200 4.997] CP -[4.283 4.826 4.374 4.414 4.473 3.761] CP -[4.573 3.108 4.763 2.387 5.045 1.597] CP -[5.326 0.807 5.542 0.343 5.691 0.206] CP -[5.840 0.068 6.039 0.051 6.287 0.154] CP -[6.536 0.257 6.702 0.429 6.784 0.669] CP -[6.867 0.910 7.008 1.442 7.207 2.267] CP -[7.406 3.091 7.596 3.744 7.779 4.225] CP -[7.961 4.705 8.102 5.152 8.201 5.564] CP -[8.301 5.976 8.416 5.959 8.549 5.513] CP -[8.682 5.066 8.822 4.551 8.972 3.967] CP -[9.121 3.383 9.303 2.971 9.518 2.730] CP -[9.734 2.490 9.891 2.713 9.991 3.400] CP -[10.090 4.087 10.181 4.671 10.264 5.152] CP -[10.347 5.633 10.496 5.633 10.711 5.152] CP -[10.927 4.671 11.117 4.122 11.283 3.503] CP -[11.449 2.885 11.614 2.541 11.780 2.473] CP -[11.946 2.404 12.087 2.627 12.202 3.143] CP -[12.318 3.658 12.501 4.001 12.749 4.173] CP -[12.998 4.345 13.188 4.156 13.321 3.606] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 177.117 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.829] CP -[0.682 7.435 1.143 8.201 1.384 7.128] CP -[1.624 6.055 1.865 5.097 2.106 4.254] CP -[2.346 3.410 2.557 3.602 2.738 4.829] CP -[2.918 6.055 3.049 6.821 3.129 7.128] CP -[3.209 7.435 3.390 6.898 3.670 5.518] CP -[3.951 4.139 4.152 2.874 4.272 1.724] CP -[4.393 0.574 4.583 0.498 4.844 1.494] CP -[5.105 2.491 5.436 3.832 5.837 5.518] CP -[6.238 7.205 6.539 7.933 6.739 7.703] CP -[6.940 7.473 7.121 6.898 7.281 5.978] CP -[7.442 5.059 7.662 4.560 7.943 4.484] CP -[8.224 4.407 8.485 4.560 8.725 4.944] CP -[8.966 5.327 9.197 5.327 9.417 4.944] CP -[9.638 4.560 9.849 4.445 10.049 4.599] CP -[10.250 4.752 10.561 4.637 10.982 4.254] CP -[11.403 3.870 11.754 3.717 12.035 3.794] CP -[12.316 3.870 12.577 4.062 12.817 4.369] CP -[13.058 4.675 13.289 5.020 13.509 5.403] CP -[13.730 5.787 13.951 5.748 14.171 5.288] CP -[14.392 4.829 14.643 4.484 14.924 4.254] CP -[15.205 4.024 15.485 4.100 15.766 4.484] CP -[16.047 4.867 16.298 4.944 16.518 4.714] CP -[16.739 4.484 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 301.472 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.104 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 288.050 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 269.943 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.864 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.156 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.567 258.538 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[11.518 4.696] CP -[11.251 1.565 10.967 0.106 10.667 0.320] CP -[10.366 0.533 10.099 1.423 9.865 2.988] CP -[9.632 4.553 9.248 6.119 8.714 7.684] CP -[8.179 9.250 7.779 9.748 7.512 9.178] CP -[7.244 8.609 7.011 7.649 6.810 6.297] CP -[6.610 4.945 6.326 3.842 5.959 2.988] CP -[5.592 2.134 5.241 2.276 4.907 3.415] CP -[4.574 4.553 4.340 5.478 4.206 6.190] CP -[4.073 6.901 3.705 6.617 3.105 5.336] CP -[2.504 4.055 1.886 3.628 1.252 4.055] CP -[0.617 4.482 0.200 4.625 0.000 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 192.500 245.116 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[13.321 5.564] CP -[12.923 5.358 12.592 5.015 12.327 4.534] CP -[12.062 4.053 11.855 3.623 11.705 3.246] CP -[11.556 2.868 11.407 2.335 11.258 1.648] CP -[11.109 0.961 10.918 0.515 10.686 0.309] CP -[10.454 0.103 10.223 0.291 9.991 0.875] CP -[9.759 1.459 9.576 2.078 9.444 2.730] CP -[9.311 3.383 9.204 3.795 9.121 3.967] CP -[9.038 4.139 8.947 4.551 8.847 5.204] CP -[8.748 5.856 8.557 6.578 8.276 7.368] CP -[7.994 8.158 7.779 8.621 7.629 8.759] CP -[7.480 8.896 7.282 8.913 7.033 8.810] CP -[6.784 8.707 6.619 8.535 6.536 8.295] CP -[6.453 8.055 6.312 7.522 6.113 6.698] CP -[5.915 5.873 5.724 5.221 5.542 4.740] CP -[5.360 4.259 5.219 3.812 5.119 3.400] CP -[5.020 2.988 4.904 3.005 4.771 3.452] CP -[4.639 3.898 4.498 4.413 4.349 4.997] CP -[4.200 5.581 4.017 5.994 3.802 6.234] CP -[3.587 6.474 3.429 6.251 3.330 5.564] CP -[3.230 4.877 3.139 4.293 3.056 3.812] CP -[2.974 3.331 2.824 3.331 2.609 3.812] CP -[2.394 4.293 2.203 4.843 2.037 5.461] CP -[1.872 6.079 1.706 6.423 1.540 6.492] CP -[1.375 6.560 1.234 6.337 1.118 5.822] CP -[1.002 5.307 0.820 4.963 0.571 4.791] CP -[0.323 4.620 0.132 4.809 0.000 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 193.444 227.009 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[17.993 3.909] CP -[17.311 1.303 16.849 0.536 16.609 1.609] CP -[16.368 2.682 16.127 3.640 15.887 4.484] CP -[15.646 5.327 15.435 5.135 15.255 3.909] CP -[15.074 2.682 14.944 1.916 14.863 1.609] CP -[14.783 1.303 14.603 1.839 14.322 3.219] CP -[14.041 4.599 13.840 5.863 13.720 7.013] CP -[13.600 8.163 13.409 8.240 13.148 7.243] CP -[12.888 6.247 12.557 4.905 12.155 3.219] CP -[11.754 1.533 11.453 0.804 11.253 1.034] CP -[11.052 1.264 10.872 1.839 10.711 2.759] CP -[10.551 3.679 10.330 4.177 10.049 4.254] CP -[9.768 4.330 9.508 4.177 9.267 3.794] CP -[9.026 3.411 8.796 3.411 8.575 3.794] CP -[8.354 4.177 8.144 4.292 7.943 4.139] CP -[7.742 3.985 7.432 4.100 7.010 4.484] CP -[6.589 4.867 6.238 5.020 5.957 4.944] CP -[5.676 4.867 5.416 4.675 5.175 4.369] CP -[4.934 4.062 4.703 3.717 4.483 3.334] CP -[4.262 2.951 4.041 2.989 3.821 3.449] CP -[3.600 3.909 3.349 4.254 3.069 4.484] CP -[2.788 4.714 2.507 4.637 2.226 4.254] CP -[1.945 3.870 1.695 3.794 1.474 4.024] CP -[1.253 4.254 0.762 4.369 0.000 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 227.009 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 238.628 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.417 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.203 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 252.063 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.510 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.067 269.943 0.000 0.000 10.032 11.518 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 4.696] CP -[0.267 1.565 0.550 0.106 0.851 0.320] CP -[1.151 0.533 1.418 1.423 1.652 2.988] CP -[1.886 4.553 2.270 6.119 2.804 7.684] CP -[3.338 9.250 3.739 9.748 4.006 9.178] CP -[4.273 8.609 4.507 7.649 4.707 6.297] CP -[4.907 4.945 5.191 3.842 5.558 2.988] CP -[5.926 2.134 6.276 2.276 6.610 3.415] CP -[6.944 4.553 7.178 5.478 7.311 6.190] CP -[7.445 6.901 7.812 6.617 8.413 5.336] CP -[9.014 4.055 9.632 3.628 10.266 4.055] CP -[10.900 4.482 11.318 4.625 11.518 4.482] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.000 281.562 0.000 0.000 8.965 13.321 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 5.564] CP -[0.397 5.358 0.729 5.015 0.994 4.534] CP -[1.259 4.053 1.466 3.623 1.615 3.246] CP -[1.764 2.868 1.913 2.335 2.062 1.648] CP -[2.211 0.961 2.402 0.515 2.634 0.309] CP -[2.866 0.103 3.098 0.291 3.330 0.875] CP -[3.562 1.459 3.744 2.078 3.877 2.730] CP -[4.009 3.383 4.117 3.795 4.200 3.967] CP -[4.283 4.139 4.374 4.551 4.473 5.204] CP -[4.573 5.856 4.763 6.578 5.045 7.368] CP -[5.326 8.158 5.542 8.621 5.691 8.759] CP -[5.840 8.896 6.039 8.913 6.287 8.810] CP -[6.536 8.707 6.702 8.535 6.784 8.295] CP -[6.867 8.055 7.008 7.522 7.207 6.698] CP -[7.406 5.873 7.596 5.221 7.779 4.740] CP -[7.961 4.259 8.102 3.812 8.201 3.400] CP -[8.301 2.988 8.416 3.005 8.549 3.452] CP -[8.682 3.898 8.822 4.413 8.972 4.997] CP -[9.121 5.581 9.303 5.994 9.518 6.234] CP -[9.734 6.474 9.891 6.251 9.991 5.564] CP -[10.090 4.877 10.181 4.293 10.264 3.812] CP -[10.347 3.331 10.496 3.331 10.711 3.812] CP -[10.927 4.293 11.117 4.843 11.283 5.461] CP -[11.449 6.079 11.614 6.423 11.780 6.492] CP -[11.946 6.560 12.087 6.337 12.202 5.822] CP -[12.318 5.307 12.501 4.963 12.749 4.791] CP -[12.998 4.620 13.188 4.809 13.321 5.358] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginBezi -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 161.944 294.997 0.000 0.000 8.738 17.993 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[0.000 3.909] CP -[0.682 1.303 1.143 0.536 1.384 1.609] CP -[1.624 2.682 1.865 3.640 2.106 4.484] CP -[2.346 5.327 2.557 5.135 2.738 3.909] CP -[2.918 2.682 3.049 1.916 3.129 1.609] CP -[3.209 1.303 3.390 1.839 3.670 3.219] CP -[3.951 4.599 4.152 5.863 4.272 7.013] CP -[4.393 8.163 4.583 8.240 4.844 7.243] CP -[5.105 6.247 5.436 4.905 5.837 3.219] CP -[6.238 1.533 6.539 0.804 6.739 1.034] CP -[6.940 1.264 7.121 1.839 7.281 2.759] CP -[7.442 3.679 7.662 4.177 7.943 4.254] CP -[8.224 4.330 8.485 4.177 8.725 3.794] CP -[8.966 3.411 9.197 3.411 9.417 3.794] CP -[9.638 4.177 9.849 4.292 10.049 4.139] CP -[10.250 3.985 10.561 4.100 10.982 4.484] CP -[11.403 4.867 11.754 5.020 12.035 4.944] CP -[12.316 4.867 12.577 4.675 12.817 4.369] CP -[13.058 4.062 13.289 3.717 13.509 3.334] CP -[13.730 2.951 13.951 2.989 14.171 3.449] CP -[14.392 3.909 14.643 4.254 14.924 4.484] CP -[15.205 4.714 15.485 4.637 15.766 4.254] CP -[16.047 3.870 16.298 3.794 16.518 4.024] CP -[16.739 4.254 17.231 4.369 17.993 4.369] CP -/useClip true def -PC PF -LC SS -saveobj restore -%@EndBezi -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.500 215.500 0.000 0.000 14.000 106.951 rect -%@EndRect -gsave -268.975 91.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -53.000 3.000 S -(n) -44.333 3.000 S -(l) -38.333 3.000 S -(a) -35.000 3.000 S -(b) -29.673 3.000 S -(e) -23.673 3.000 S -(l) -18.347 3.000 S -(l) -15.013 3.000 S -(e) -11.679 3.000 S -(d) -6.353 3.000 S -( ) -0.353 3.000 S -(U) 2.646 3.000 S -(t) 11.312 3.000 S -(t) 14.646 3.000 S -(e) 17.980 3.000 S -(r) 23.306 3.000 S -(a) 27.302 3.000 S -(n) 32.628 3.000 S -(c) 38.628 3.000 S -(e) 43.955 3.000 S -(s) 49.281 3.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 17.500 234.500 0.000 0.000 14.000 69.316 rect -%@EndRect -gsave -269.158 24.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -34.000 3.000 S -(r) -26.669 3.000 S -(a) -22.673 3.000 S -(n) -17.347 3.000 S -(s) -11.347 3.000 S -(c) -6.677 3.000 S -(r) -1.351 3.000 S -(i) 2.644 3.000 S -(p) 5.978 3.000 S -(t) 11.978 3.000 S -(i) 15.312 3.000 S -(o) 18.646 3.000 S -(n) 24.646 3.000 S -(s) 30.646 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.750 224.634 0.000 0.000 11.000 101.628 rect -%@EndRect -gsave -275.448 47.250 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -49.865 3.000 S -(h) -47.365 3.000 S -( ) -42.865 3.000 S -( ) -40.615 3.000 S -( ) -38.365 3.000 S -(i) -36.115 3.000 S -(h) -33.614 3.000 S -( ) -29.114 3.000 S -( ) -26.864 3.000 S -(s) -24.614 3.000 S -( ) -21.112 3.000 S -( ) -18.862 3.000 S -(i) -16.612 3.000 S -(h) -14.111 3.000 S -( ) -9.611 3.000 S -( ) -7.361 3.000 S -(s) -5.111 3.000 S -( ) -1.609 3.000 S -( ) 0.640 3.000 S -(p) 2.890 3.000 S -( ) 7.390 3.000 S -( ) 9.640 3.000 S -(i) 11.890 3.000 S -(y) 14.391 3.000 S -( ) 18.891 3.000 S -( ) 21.141 3.000 S -(t) 23.391 3.000 S -( ) 25.891 3.000 S -( ) 28.141 3.000 S -(s) 30.391 3.000 S -(h) 33.894 3.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 59.250 224.134 0.000 0.000 11.000 85.504 rect -%@EndRect -gsave -266.886 64.750 T translate -0.0 rotate -1 1 scale -9.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -42.365 2.000 S -(h) -38.863 2.000 S -( ) -34.363 2.000 S -( ) -32.113 2.000 S -(t) -29.863 2.000 S -( ) -27.362 2.000 S -( ) -25.112 2.000 S -(i) -22.862 2.000 S -(y) -20.362 2.000 S -( ) -15.862 2.000 S -( ) -13.612 2.000 S -(s) -11.362 2.000 S -( ) -7.859 2.000 S -( ) -5.609 2.000 S -(z) -3.359 2.000 S -( ) 0.634 2.000 S -( ) 2.884 2.000 S -(i) 5.134 2.000 S -(h) 7.635 2.000 S -( ) 12.135 2.000 S -( ) 14.385 2.000 S -(s) 16.635 2.000 S -( ) 20.137 2.000 S -( ) 22.387 2.000 S -(i) 24.637 2.000 S -(h) 27.138 2.000 S -( ) 31.638 2.000 S -( ) 33.888 2.000 S -(t) 36.138 2.000 S -(h) 38.638 2.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 35.000 216.000 0.000 0.000 42.000 107.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -2.000 0 9.000 207.000 0.000 0.000 216.000 126.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -261.000 288.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 260.999 284.000 261.000 225.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -234.000 288.000 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 232.335 286.890 126.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -288.000 288.000 moveto -/Triangular 14.099 7.049 false 331.541 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.757 287.046 382.000 237.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/useforiso.eps b/HTKBook/HTKFigs/useforiso.eps deleted file mode 100644 index d9e4fec..0000000 --- a/HTKBook/HTKFigs/useforiso.eps +++ /dev/null @@ -1,3287 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: useforiso.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:20:48 p.m. -%%BoundingBox: 8.750 273.500 423.750 788.500 -%%QDBoundingBox: 8.750 3.500 423.750 518.500 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%+ Times-Bold -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 155.250 0.000 0.000 19.000 12.000 rect -%@EndRect -gsave -161.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -5.250 6.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 166.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -169.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 283.750 0.000 0.000 19.000 12.000 rect -%@EndRect -gsave -289.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -5.750 6.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 294.750 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -298.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -2.750 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 35.250 0.000 0.000 19.000 12.000 rect -%@EndRect -gsave -41.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -5.250 6.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 46.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -49.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 4.000 9.250 0.000 0.000 19.000 88.000 rect -%@EndRect -gsave -53.250 13.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -43.250 5.000 S -(a) -37.255 5.000 S -(\)) -29.266 5.000 S -( ) -23.272 5.000 S -(T) -18.772 5.000 S -(r) -7.777 5.000 S -(a) -1.783 5.000 S -(i) 6.206 5.000 S -(n) 11.207 5.000 S -(i) 20.207 5.000 S -(n) 25.208 5.000 S -(g) 34.208 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 81.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 99.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 117.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 135.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 153.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 171.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 81.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 99.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 117.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 135.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 81.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 99.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 117.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 135.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 153.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 216.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 234.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 252.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 270.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 288.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 216.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 234.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 252.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 270.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 216.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 234.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 252.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 270.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 288.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 324.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 342.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 360.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 378.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 396.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 324.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 342.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 360.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 378.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 324.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 342.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 360.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 378.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 171.000 396.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 414.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 99.000 396.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.250 207.000 198.250 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.250 207.000 315.250 90.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 117.250 0.000 0.000 19.000 27.000 rect -%@EndRect -gsave -130.750 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -13.250 5.000 S -(n) -4.250 5.000 S -(e) 4.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 234.250 0.000 0.000 19.000 28.000 rect -%@EndRect -gsave -248.250 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.250 5.000 S -(w) -8.249 5.000 S -(o) 4.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 67.000 351.250 0.000 0.000 19.000 37.000 rect -%@EndRect -gsave -369.750 76.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -18.250 5.000 S -(h) -13.249 5.000 S -(r) -4.249 5.000 S -(e) 1.745 5.000 S -(e) 9.734 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 31.000 180.250 0.000 0.000 19.000 139.000 rect -%@EndRect -gsave -249.750 40.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -69.250 5.000 S -(r) -58.254 5.000 S -(a) -52.260 5.000 S -(i) -44.271 5.000 S -(n) -39.270 5.000 S -(i) -30.270 5.000 S -(n) -25.269 5.000 S -(g) -16.269 5.000 S -( ) -7.269 5.000 S -(E) -2.769 5.000 S -(x) 8.225 5.000 S -(a) 17.225 5.000 S -(m) 25.214 5.000 S -(p) 39.215 5.000 S -(l) 48.215 5.000 S -(e) 53.216 5.000 S -(s) 61.206 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -126.250 270.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 126.249 266.000 126.250 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -252.250 270.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 252.249 266.000 252.250 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -2.000 setlinewidth -369.250 270.000 moveto -/Triangular 16.799 8.399 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -2.000 369.249 266.000 369.250 216.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 113.750 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -122.750 284.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 130.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -134.750 290.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.750 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 239.250 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -248.250 284.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.250 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 257.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -261.250 290.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.250 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 356.750 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -365.750 284.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 284.000 373.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -377.750 290.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.750 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 229.000 18.250 0.000 0.000 39.000 64.000 rect -%@EndRect -gsave -50.250 248.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -31.250 -5.000 S -(s) -20.254 -5.000 S -(t) -13.250 -5.000 S -(i) -8.249 -5.000 S -(m) -3.248 -5.000 S -(a) 10.752 -5.000 S -(t) 18.742 -5.000 S -(e) 23.743 -5.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -31.250 14.000 S -(o) -15.245 14.000 S -(d) -6.245 14.000 S -(e) 2.754 14.000 S -(l) 10.744 14.000 S -(s) 15.745 14.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 100.000 41.250 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -48.750 109.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -7.250 5.000 S -(.) 1.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 136.000 41.250 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -48.750 145.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -7.250 5.000 S -(.) 1.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 172.000 41.250 0.000 0.000 19.000 15.000 rect -%@EndRect -gsave -48.750 181.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -7.250 5.000 S -(.) 1.750 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 323.000 10.250 0.000 0.000 19.000 115.000 rect -%@EndRect -gsave -67.750 332.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -57.250 5.000 S -(b) -51.255 5.000 S -(\)) -42.255 5.000 S -( ) -36.261 5.000 S -(R) -31.761 5.000 S -(e) -19.755 5.000 S -(c) -11.766 5.000 S -(o) -3.777 5.000 S -(g) 5.222 5.000 S -(n) 14.222 5.000 S -(i) 23.222 5.000 S -(t) 28.223 5.000 S -(i) 33.224 5.000 S -(o) 38.225 5.000 S -(n) 47.225 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 382.000 12.000 0.000 0.000 19.000 106.000 rect -%@EndRect -gsave -65.000 391.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -52.500 5.000 S -(n) -39.500 5.000 S -(k) -30.500 5.000 S -(n) -21.500 5.000 S -(o) -12.500 5.000 S -(w) -3.500 5.000 S -(n) 9.498 5.000 S -( ) 18.498 5.000 S -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1.000 0 382.000 12.000 0.000 0.000 19.000 106.000 rect -%@EndRect -gsave -65.000 391.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) 22.998 5.000 S -grestore -restore -save -gsave -65.000 391.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -( ) 36.999 5.000 S -(=) 41.499 5.000 S -( ) 51.650 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 127.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 145.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 163.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 181.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 199.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 381.000 217.250 0.000 0.000 18.000 9.000 rect -%@EndRect -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 460.000 53.000 0.000 0.000 19.000 16.000 rect -%@EndRect -gsave -61.000 469.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -7.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 67.250 0.000 0.000 19.000 5.000 rect -%@EndRect -gsave -69.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -2.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 72.250 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -81.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 468.500 88.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -92.250 474.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.250 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 96.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -99.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 460.000 173.000 0.000 0.000 19.000 16.000 rect -%@EndRect -gsave -181.000 469.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -7.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 187.250 0.000 0.000 19.000 5.000 rect -%@EndRect -gsave -189.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -2.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 192.250 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -201.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.250 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 468.500 209.250 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -213.250 474.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.250 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 218.250 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -221.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.250 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Bold -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Bold /Times-Bold EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 460.000 302.000 0.000 0.000 19.000 16.000 rect -%@EndRect -gsave -310.000 469.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Bold) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -7.500 5.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 315.750 0.000 0.000 19.000 5.000 rect -%@EndRect -gsave -318.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(|) -1.750 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 320.750 0.000 0.000 19.000 18.000 rect -%@EndRect -gsave -329.750 469.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(M) -8.750 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 468.500 337.750 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -341.750 474.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.750 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 459.500 345.750 0.000 0.000 19.000 7.000 rect -%@EndRect -gsave -349.250 469.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -2.750 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.250 454.000 moveto -/Triangular 14.099 7.049 false 326.748 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 74.922 452.902 137.250 412.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -177.250 450.000 moveto -/Triangular 14.099 7.049 false 268.428 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 177.194 448.000 176.250 414.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -287.250 448.000 moveto -/Triangular 14.099 7.049 false 205.360 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 285.442 447.143 211.250 412.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 18.250 486.000 18.250 459.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.250 486.000 18.250 486.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.250 486.000 369.250 459.000 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 499.000 135.250 0.000 0.000 19.000 93.000 rect -%@EndRect -gsave -181.750 508.500 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -46.250 5.000 S -(h) -34.244 5.000 S -(o) -25.244 5.000 S -(o) -16.244 5.000 S -(s) -7.244 5.000 S -(e) -0.239 5.000 S -( ) 7.750 5.000 S -(M) 12.250 5.000 S -(a) 28.254 5.000 S -(x) 36.244 5.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vaacc.eps b/HTKBook/HTKFigs/vaacc.eps deleted file mode 100644 index 6202cd0..0000000 --- a/HTKBook/HTKFigs/vaacc.eps +++ /dev/null @@ -1,152 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: vaacc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 16:17:59 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 249 58 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 96.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 900 900 m 2100 900 l 2100 1500 l 900 1500 l cp gs col-1 s gr -% Polyline -n 2700 900 m 4800 900 l 4800 1200 l 2700 1200 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 3000 900 m 3000 1200 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 1200 l gs col-1 s gr -% Polyline -n 3600 900 m 3600 1125 l gs col-1 s gr -% Polyline -n 3600 975 m 3600 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 3900 900 m 3900 1200 l gs col-1 s gr -/Times-Bold ff 180.00 scf sf -1275 750 m -gs 1 -1 sc (VaAcc) col-1 sh gr -% Polyline -n 4200 900 m 4200 1200 l gs col-1 s gr -% Polyline -n 4500 900 m 4500 1200 l gs col-1 s gr -% Polyline -gs clippath -2553 1020 m 2673 1050 l 2553 1080 l 2715 1080 l 2715 1020 l cp clip -n 1950 1050 m 2700 1050 l gs col-1 s gr gr - -% arrowhead -n 2553 1020 m 2673 1050 l 2553 1080 l 2553 1050 l 2553 1020 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (cov) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ = 2.7) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3300 750 m -gs 1 -1 sc ([1 .. sWidth]) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/vitloop.eps b/HTKBook/HTKFigs/vitloop.eps deleted file mode 100644 index 80af921..0000000 --- a/HTKBook/HTKFigs/vitloop.eps +++ /dev/null @@ -1,1674 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vitloop.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:7/29/95 10:17:23 a.m. -%%BoundingBox: 144.000 253.000 401.000 767.000 -%%QDBoundingBox: 144.000 25.000 401.000 539.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=F tArc=F tFree=F tPoly=T tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet - -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 268.000 172.000 0.000 0.000 20.000 154.467 rect -%@EndRect -gsave -249.233 278.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -76.500 5.000 S -(i) -63.500 5.000 S -(t) -58.500 5.000 S -(e) -53.499 5.000 S -(r) -45.509 5.000 S -(b) -39.515 5.000 S -(i) -30.515 5.000 S -( ) -25.514 5.000 S -(S) -21.014 5.000 S -(e) -11.003 5.000 S -(g) -3.014 5.000 S -(m) 5.985 5.000 S -(e) 19.986 5.000 S -(n) 27.975 5.000 S -(t) 36.975 5.000 S -(a) 41.976 5.000 S -(t) 49.965 5.000 S -(i) 54.966 5.000 S -(o) 59.967 5.000 S -(n) 68.967 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 340.000 154.000 0.000 0.000 20.000 185.950 rect -%@EndRect -gsave -246.975 350.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -92.500 5.000 S -(p) -79.500 5.000 S -(d) -70.500 5.000 S -(a) -61.500 5.000 S -(t) -53.511 5.000 S -(e) -48.510 5.000 S -( ) -40.521 5.000 S -(H) -36.021 5.000 S -(M) -23.022 5.000 S -(M) -7.017 5.000 S -( ) 8.987 5.000 S -(P) 13.487 5.000 S -(a) 23.498 5.000 S -(r) 31.487 5.000 S -(a) 37.481 5.000 S -(m) 45.470 5.000 S -(e) 59.471 5.000 S -(t) 67.460 5.000 S -(e) 72.461 5.000 S -(r) 80.451 5.000 S -(s) 86.445 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 259.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 331.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 39.000 181.000 0.000 0.000 20.000 119.504 rect -%@EndRect -gsave -240.752 49.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(P) -59.500 5.000 S -(r) -49.489 5.000 S -(o) -43.495 5.000 S -(t) -34.495 5.000 S -(o) -29.494 5.000 S -(t) -20.494 5.000 S -(y) -15.493 5.000 S -(p) -6.493 5.000 S -(e) 2.506 5.000 S -( ) 10.496 5.000 S -(H) 14.996 5.000 S -(M) 27.995 5.000 S -(M) 44.000 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 25.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 421.000 199.000 0.000 0.000 20.000 86.967 rect -%@EndRect -gsave -242.483 431.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -42.500 5.000 S -(o) -30.494 5.000 S -(n) -21.494 5.000 S -(v) -12.494 5.000 S -(e) -3.494 5.000 S -(r) 4.495 5.000 S -(g) 10.489 5.000 S -(e) 19.489 5.000 S -(d) 27.478 5.000 S -(?) 36.478 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 106.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 104.500 243.500 70.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 331.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 329.500 243.500 295.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 403.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 401.500 243.500 367.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginPoly -/saveobj save def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 401.500 184.500 0.000 0.000 54.000 117.000 -pbox astore pop -0 792 translate 1 -1 scale exch translate pop CTM currentmatrix pop -/objectCord mstore def -pbox bbox copy pop -/CP {aload pop moveto /CP {aload length 2 eq {lineto}{curveto}ifelse} bind def} bind def -[58.500 0.000] CP -[0.000 27.000] CP -[58.500 54.000 ] CP -[117.000 27.000 ] CP -[117.000 27.000 58.500 0.000 58.500 0.000] CP -closepath -/useClip true def -PC PF -LC SS -saveobj restore -%@EndPoly -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 428.500 301.500 428.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 400.500 235.500 400.500 427.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 235.500 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.500 235.499 400.500 235.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 404.000 325.000 0.000 0.000 20.000 21.999 rect -%@EndRect -gsave -335.999 414.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(N) -10.500 5.000 S -(o) 2.499 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 458.000 258.000 0.000 0.000 20.000 27.993 rect -%@EndRect -gsave -271.996 468.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(Y) -13.500 5.000 S -(e) -0.500 5.000 S -(s) 7.488 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.000 495.000 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 242.999 493.000 243.000 455.000 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 507.000 181.000 0.000 0.000 20.000 121.491 rect -%@EndRect -gsave -241.745 517.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -60.500 5.000 S -(n) -54.505 5.000 S -(i) -45.505 5.000 S -(t) -40.504 5.000 S -(i) -35.503 5.000 S -(a) -30.502 5.000 S -(l) -22.513 5.000 S -(i) -17.512 5.000 S -(s) -12.511 5.000 S -(e) -5.506 5.000 S -(d) 2.482 5.000 S -( ) 11.482 5.000 S -(H) 15.982 5.000 S -(M) 28.981 5.000 S -(M) 44.986 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {13.500 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 493.500 162.500 0.000 0.000 45.000 162.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 116.000 171.000 0.000 0.000 20.000 165.471 rect -%@EndRect -gsave -253.735 126.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(U) -82.500 5.000 S -(n) -69.500 5.000 S -(i) -60.500 5.000 S -(f) -55.500 5.000 S -(o) -49.505 5.000 S -(r) -40.505 5.000 S -(m) -34.511 5.000 S -( ) -20.510 5.000 S -(S) -16.010 5.000 S -(e) -6.000 5.000 S -(g) 1.989 5.000 S -(m) 10.989 5.000 S -(e) 24.990 5.000 S -(n) 32.979 5.000 S -(t) 41.979 5.000 S -(a) 46.980 5.000 S -(t) 54.969 5.000 S -(i) 59.970 5.000 S -(o) 64.971 5.000 S -(n) 73.971 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 189.000 173.000 0.000 0.000 20.000 151.945 rect -%@EndRect -gsave -248.972 199.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(I) -75.500 5.000 S -(n) -69.505 5.000 S -(i) -60.505 5.000 S -(t) -55.504 5.000 S -(i) -50.503 5.000 S -(a) -45.502 5.000 S -(l) -37.513 5.000 S -(i) -32.512 5.000 S -(s) -27.511 5.000 S -(e) -20.506 5.000 S -( ) -12.517 5.000 S -( ) -8.017 5.000 S -(P) -3.517 5.000 S -(a) 6.493 5.000 S -(r) 14.482 5.000 S -(a) 20.476 5.000 S -(m) 28.465 5.000 S -(e) 42.466 5.000 S -(t) 50.456 5.000 S -(e) 55.457 5.000 S -(r) 63.446 5.000 S -(s) 69.440 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 106.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 178.500 144.500 0.000 0.000 36.000 207.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 178.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 176.500 243.500 142.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -243.500 259.500 moveto -/Triangular 14.099 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.499 257.500 243.500 214.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vmatrep.eps b/HTKBook/HTKFigs/vmatrep.eps deleted file mode 100644 index d9bae7c..0000000 --- a/HTKBook/HTKFigs/vmatrep.eps +++ /dev/null @@ -1,4815 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vmatrep.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:1/22/96 8:33:38 p.m. -%%BoundingBox: 17 538 531 765 -%%QDBoundingBox: 17.500 27.500 530.500 254.000 -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=T tPoly=T tBMap=T tNote=T tBez=T tPMap=T -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=T -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/Min {2 copy lt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - FontDirectory basefontname known not { - /basefontname /Times-Roman def - } if - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : ZeroLine -/ZeroLine { - gsave - newpath - MAV /ArrowType get length 0 ne { - /UseClip {} def - 0 792 translate - 1 -1 scale - pop pop pop pop pop - CTM currentmatrix pop - ArrowType - } if - grestore -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs -pbox left get pbox right get sub abs -2 copy lt { -Min -2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} { -Min -2 div dup dup dup -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox top get add pbox top 3 -1 roll put -pbox left get pbox bottom get moveto -pbox left get add pbox top get -2 index -180 0 arc -dup pbox left get add pbox bottom get -3 -1 roll 0 180 arc -closepath -} ifelse -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet - - -%%BeginProcSet : BitMap -/BitMap { - /buffer ^1 string def - ^2 ^5 2 div add 792 ^3 sub ^6 2 div add translate - ^4 57.3 mul rotate - 0 ^5 2 div sub 0 ^6 2 div sub translate - ^5 ^6 scale - ^5 ^6 ^7 [^5 0 0 -^6 0 ^6] {currentfile buffer readhexstring pop} image -}bind def -%%EndProcSet -%%BeginProcSet : note -/note { -gsave pbox astore pop -0 792 translate 1 -1 scale CTM currentmatrix pop exch translate -pbox right get pbox left get sub 2 div -pbox bottom get pbox top get sub 2 div -translate 57.3 mul rotate setlinewidth -noteBody aload pop moveto -noteBody length 2 div 1 sub cvi{lineto}repeat -dogEar aload pop moveto -dogEar length 2 div 1 sub cvi{lineto}repeat -0.992 0.975 0.507 setrgbcolor gsave fill grestore -gsave newpath -stickem aload pop moveto -stickem length 2 div 1 sub cvi{lineto}repeat -0.760 0.760 0.760 setrgbcolor fill -grestore -0 0 0 setrgbcolor stroke -noteShadow aload pop moveto -noteShadow length 2 div 1 sub cvi{lineto}repeat -dogEarShadow aload pop moveto -dogEarShadow length 2 div 1 sub cvi{lineto}repeat -0 0 0 setrgbcolor gsave stroke grestore fill -grestore -}bind def -%%EndProcSet - - -%%BeginProcSet : RGB4toGray4 - /redTbl4 [0 0 1 1 1 1 2 2 3 3 3 4 4 4 5 5] def - /greenTbl4 [0 1 1 2 2 3 3 4 4 5 6 6 7 7 7 8] def - /blueTbl4 [0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2] def - /RGB4toGray4 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup - -4 bitshift redTbl4 exch get - exch 15 and greenTbl4 exch get add - RGBBuf i 1 add get dup - -4 bitshift blueTbl4 exch get 3 -1 roll add 4 bitshift - exch 15 and redTbl4 exch get - RGBBuf i 2 add get dup - -4 bitshift greenTbl4 exch get 3 -1 roll add - exch 15 and blueTbl4 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB8toGray8 -/RGB8toGray8 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get 0.33 mul - RGBBuf i 1 add get 0.55 mul add - RGBBuf i 2 add get 0.12 mul add round cvi - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB24toGray8 -/RGB24toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : RGB2toGray2 - /redTbl2 [0 0 1 1] def - /greenTbl2 [0 1 1 2] def - /blueTbl2 [0 0 0 0] def - /RGB2toGray2 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup dup - -6 bitshift redTbl2 exch get - exch -4 bitshift 3 and - greenTbl2 exch get add - exch -2 bitshift 3 and - blueTbl2 exch get add - 6 bitshift exch 3 and - redTbl2 exch get - RGBBuf i 1 add get dup dup dup - -6 bitshift greenTbl2 exch get - exch -4 bitshift 3 and - blueTbl2 exch get add - 4 -1 roll add - 4 bitshift 4 -1 roll or - 3 1 roll -2 bitshift 3 and - redTbl2 exch get exch 3 and - greenTbl2 exch get add - RGBBuf i 2 add get dup dup dup - -6 bitshift blueTbl2 exch get - 5 -1 roll add - 2 bitshift 5 -1 roll or - 4 1 roll -4 bitshift 3 and - redTbl2 exch get - exch -2 bitshift 3 and - greenTbl2 exch get add - exch 3 and - greenTbl2 exch get add or - grayBuf j 3 -1 roll put - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%EndProcSet -%%BeginProcSet : RGB1toGray1 -/RGB1toGray1 { - currentfile RGBBuf readhexstring pop pop - /i 0 def - /j 0 def - grayBuf length { - RGBBuf i get dup dup - 1 bitshift 128 and exch - 3 bitshift 64 and or exch - 5 bitshift 32 and or - RGBBuf i 1 add get dup - -1 bitshift 16 and exch - 1 bitshift 8 and or or - RGBBuf i 2 add get dup dup - -5 bitshift 4 and exch - -3 bitshift 2 and or exch - -1 bitshift 1 and or or - /i i 3 add def - /j j 1 add def - } repeat - grayBuf -} bind def -%%EndProcSet -%%BeginProcSet : RGB16toGray8 -/RGB16toGray8 {RGB8toGray8} bind def -%%EndProcSet -%%BeginProcSet : BW -/ScalePoint { - 0 0 - 4 -2 roll - 0 0 1 1 - 8 4 roll GetBoxesRatio scale -} bind def -/PointDict 4 dict def -PointDict begin -/XPoint { - -.5 .5 moveto - .5 -.5 lineto - .5 .5 moveto - -.5 -.5 lineto - } bind def - /DiamondPoint { - 0.0 .5 moveto - .5 0.0 lineto - 0.0 -0.5 lineto - -.5 0.0 lineto - closepath - } bind def - /PlusPoint { - 0.0 .5 moveto - 0.0 -.5 lineto - -.5 0.0 moveto - .5 0.0 lineto - } bind def - /SquarePoint { - -.5 .5 moveto - .5 .5 lineto - .5 -.5 lineto - -.5 -.5 lineto - closepath - } bind def -end -/DrawPoint { - gsave - [] 0 setdash - 0 setlinecap - translate - msave - ScalePoint - PointDict exch get exec - mrestore - 1.0 setlinewidth stroke - grestore -} bind def -%%EndProcSet -%%BeginProcSet : Wall object Procs -%%EndProcSet -%%BeginProcSet : Subscriber -/Subscriber { - msave - R PC PF LC SS newpath - mrestore -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%BeginProcSet : rampdelta -/rampdelta { -/len 0 3 -1 roll add def -/i2 0 3 -1 roll add def -/i1 0 3 -1 roll add def -/nRampSteps len cellPenW div cvi 1 add dup 512 gt {pop 512} if def -/rampPenW len nRampSteps div def -rampColors i1 get aload pop c1 astore pop -rampColors i2 get aload pop c2 astore pop -c2 0 get c1 0 get sub nRampSteps div d 0 3 -1 roll put -c2 1 get c1 1 get sub nRampSteps div d 1 3 -1 roll put -c2 2 get c1 2 get sub nRampSteps div d 2 3 -1 roll put -d aload pop -} bind def -%%EndProcSet -%%BeginProcSet : adddelta -/adddelta { -d astore pop - mycurrentrgbcolor c1 copy pop -c1 0 get d 0 get add c2 0 3 -1 roll put -c1 1 get d 1 get add c2 1 3 -1 roll put -c1 2 get d 2 get add c2 2 3 -1 roll put -c2 aload pop setrgbcolor -c2 mycurrentrgbcolor copy pop -} bind def -%%EndProcSet -%%BeginProcSet : rampline -/rampline { -segbox ulx get rampPenW add segbox ulx 3 -1 roll put -segbox llx get rampPenW add segbox llx 3 -1 roll put -segbox ulx get segbox uly get moveto -segbox llx get segbox lly get lineto -delta aload pop adddelta stroke -}bind def -%%EndProcSet -%%BeginProcSet : slantrampseg -/slantrampseg { -gsave newpath -segbox ulx get segbox urx get sub abs -rampdelta delta astore pop -segbox ulx get rampPenW .5 mul sub segbox ulx 3 -1 roll put -segbox llx get rampPenW .5 mul sub segbox llx 3 -1 roll put -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -rampPenW setlinewidth nRampSteps {rampline} repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : flipramp -/flipramp { -rampColors 0 get rampColors 3 get rampColors 0 3 -1 roll put rampColors 3 3 -1 roll put -rampColors 1 get rampColors 2 get rampColors 1 3 -1 roll put rampColors 2 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : leftrbox -/leftrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : rightrbox -/rightrbox { -rbox segbox copy pop -rbox urx get rbox ulx get sub -flipRatio mul dup -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -} bind def -%%EndProcSet -%%BeginProcSet : drawslantramp -/drawslantramp { -segbox urx get segbox ulx get sub 3 div dup dup dup dup dup dup dup dup dup -segbox ulx get add segbox urx 3 -1 roll put -segbox llx get add segbox lrx 3 -1 roll put -segbox aload pop -0 0 1 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -segbox aload pop -1 1 2 slantrampseg -segbox astore pop -segbox ulx get add segbox ulx 3 -1 roll put -segbox llx get add segbox llx 3 -1 roll put -segbox urx get add segbox urx 3 -1 roll put -segbox lrx get add segbox lrx 3 -1 roll put -2 2 3 slantrampseg -}bind def -%%EndProcSet -%%BeginProcSet : tan -/tan { -dup sin exch cos div -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/rampbox { -pbox top get dup rbox uly 3 -1 roll put rbox ury 3 -1 roll put -pbox left get dup rbox ulx 3 -1 roll put rbox llx 3 -1 roll put -pbox bottom get dup rbox lly 3 -1 roll put rbox lry 3 -1 roll put -pbox right get dup rbox urx 3 -1 roll put rbox lrx 3 -1 roll put -}bind def -%%EndProcSet -%%BeginProcSet : rampbox -/LoadSegBox { -4 copy -segbox llx 6 -1 roll put -segbox lly 5 -1 roll put -segbox lrx 4 -1 roll put -segbox lry 6 -1 roll put -segbox urx 5 -1 roll put -segbox ury 3 -1 roll put -segbox ulx 4 -1 roll put -segbox uly 3 -1 roll put -} bind def -/TransToCenter { -gsave -flattenpath -pathbbox -grestore -2 index -sub 2.0 div exch -3 index sub 2.0 div -4 -1 roll add -3 1 roll add -translate -} bind def -/RotRampGrad { -gsave -TransToCenter --1.0 mul 180.0 add rotate -flattenpath -pathbbox -clip -newpath -LoadSegBox -flipRatio 1 lt dup{flipramp}if flipRatio 0 gt and -{ -/flipRatio 1.0 flipRatio sub def -segbox rbox copy pop leftrbox drawslantramp flipramp rightrbox drawslantramp -} -{drawslantramp} ifelse -grestore -} bind def -/bbg { -pbox exch get -} bind def -%%BeginProcSet : DR -/DR { % Directional ramp -/workingMatrix mstore def -objectCord setmatrix -flipramp -gsave -flattenpath pathbbox -grestore -pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -rampAngle RotRampGrad -RF -workingMatrix setmatrix -}bind def -%%EndProcSet -%%BeginProcSet : ramparc -/ramparc { -gsave -circum rampdelta delta astore pop -/rampPenW 60.0 nRampSteps div def -/ang1 exch rampAngle sub def -/ang2 rampPenW ang1 add def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor 1 setlinewidth -nRampSteps {ramparcseg}repeat -grestore -}bind def -%%EndProcSet -%%BeginProcSet : ramparcseg -/ramparcseg { -newpath -rampcenter aload pop moveto -rampcenter aload pop rampradius ang2 ang1 arcn fill -/ang1 ang2 def -/ang2 ang2 rampPenW add def -delta aload pop adddelta -}bind def -%%EndProcSet -/GetRadius { -rbox urx get rbox llx get sub 2 div rampcenter 0 get abs add dup mul -rbox lly get rbox ury get sub 2 div rampcenter 1 get abs add dup mul -add sqrt -} bind def -%%BeginProcSet : circularRamp -/circularRamp { -rampbox -/rampradius GetRadius def -CalcCrcm -flipramp -0 0 0 1 ramparc -1 60 1 2 ramparc -2 120 2 3 ramparc -flipramp -0 180 0 1 ramparc -1 240 1 2 ramparc -2 300 2 3 ramparc -}bind def -%%EndProcSet -/GetCircumf { -2.0 mul 3.1415926 mul -} bind def -/CalcCrcm { -rampradius GetCircumf -/circum exch 6.0 div def -} bind def -%%BeginProcSet : CR -/CR { -gsave -clip -MTC currentmatrix pop -CTM setmatrix -flattenpath -pathbbox pbox bottom 3 -1 roll put pbox right 3 -1 roll put pbox top 3 -1 roll put pbox left 3 -1 roll put -pbox left get pbox right get sub abs 2 div -pbox left get add rampcenter 0 get add rampcenter 0 3 -1 roll put -pbox top get pbox bottom get sub abs 2 div -pbox top get add rampcenter 1 get add rampcenter 1 3 -1 roll put -circularRamp -MTC setmatrix -grestore -RF -}bind def -%%EndProcSet -%%BeginProcSet : shaperamp -/SBR { -gsave -clip -/workingMatrix mstore def -objectCord setmatrix -flattenpath -/BaseBox pathbbox 4 array astore def -/len BaseBox 2 get BaseBox 0 get sub dup mul -BaseBox 3 get BaseBox 1 get sub dup mul -add sqrt -12.0 div -def -/EndBox -BaseBox aload pop -3 -1 roll sub -3 1 roll -exch sub -/dbx exch def -/dby exch def -BaseBox aload pop pop pop -/blly exch def -/bllx exch def -sbox 0 get 100.0 div dby mul blly add -sbox 1 get 100.0 div dbx mul bllx add -sbox 2 get 100.0 div dby mul blly add -sbox 3 get 100.0 div dbx mul bllx add -exch -4 -2 roll -exch -4 -2 roll -4 array astore -def -BaseBox EndBox ShapeBurst -workingMatrix setmatrix -grestore -} bind def -%%EndProcSet -/GetBoxCenter { -2 index -sub 2.0 div -3 -1 roll add -3 1 roll -1 index sub -2.0 div add -exch -} bind def -/GetInterBox { -/boxInter exch def -4 1 7 { --1 roll -7 index -} for -sub boxInter mul -8 -1 roll add -7 1 roll -sub boxInter mul -7 -1 roll add -6 1 roll -sub boxInter mul -6 -1 roll add -5 1 roll -sub boxInter mul -5 -1 roll add -4 1 roll -} bind def -/GetBoxCenterDeltas { -GetBoxCenter -6 2 roll -GetBoxCenter -3 -1 roll exch sub -3 1 roll sub -exch -} bind def -/GetBoxCornerDeltas { -pop pop -4 2 roll pop pop -3 -1 roll sub -3 1 roll exch sub -exch -} bind def -%%BeginProcSet : getpath -/getpath { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{}pathforall -/pfa k array def -/k 0 def -{{moveto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore pfa k 3 -1 roll put /k k 1 add def} -{{curveto} 7 array astore pfa k 3 -1 roll put /k k 1 add def} -{}pathforall -}bind def -%%EndProcSet -/ShapeBurst { -getpath -newpath -/SBERect exch 4 array copy def -/SBBRect exch 4 array copy def -/interRect1 SBBRect aload pop SBERect aload pop .3333333 GetInterBox 4 array astore def -/interRect2 SBBRect aload pop SBERect aload pop .6666666 GetInterBox 4 array astore def -0 0 1 SBBRect interRect1 ShapeBurstSeg -msave -interRect1 0 get interRect1 1 get translate -SBBRect aload pop interRect1 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -1 1 2 interRect1 interRect2 ShapeBurstSeg -mrestore -msave -interRect2 0 get interRect2 1 get translate -SBBRect aload pop interRect2 aload pop GetBoxesRatio scale -SBBRect 0 get -1.0 mul SBBRect 1 get -1.0 mul translate -2 2 3 interRect2 SBERect ShapeBurstSeg -mrestore -} bind def -/ShapeBurstSeg { -/sbr1 exch 4 array copy def -/sbr0 exch 4 array copy def -/blx sbr0 0 get def -/bly sbr0 1 get def -len rampdelta delta astore pop -sbr0 aload pop sbr1 aload pop GetBoxesRatio -/ratioY exch def -/ratioX exch def -sbr0 aload pop sbr1 aload pop GetBoxCornerDeltas -/dlly exch nRampSteps div def -/dllx exch nRampSteps div def -/scaleStepX 1.0 ratioX sub nRampSteps div def -/scaleStepY 1.0 ratioY sub nRampSteps div def -/currentScaleX 1.0 scaleStepX sub def -/currentScaleY 1.0 scaleStepY sub def -/translationX blx dllx add def -/translationY bly dlly add def -/currentScaleX 1.0 def -/currentScaleY 1.0 def -/translationX blx def -/translationY bly def -rampColors exch get aload mycurrentrgbcolor copy pop setrgbcolor -nRampSteps { -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -delta aload pop adddelta -/translationX translationX dllx add def -/translationY translationY dlly add def -/currentScaleX currentScaleX scaleStepX sub def -/currentScaleY currentScaleY scaleStepY sub def -mrestore -} repeat -msave -translationX translationY translate -currentScaleX currentScaleY scale -blx -1.0 mul bly -1.0 mul translate -pfa {aload pop exec} forall fill -mrestore -} bind def -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 239.000 39.000 0.000 0.000 15.000 79.000 rect -%@EndRect -gsave -78.500 246.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F -0.000 0.000 0.000 setrgbcolor -(\() -39.500 5.000 S -(S) -34.837 5.000 S -(\)) -27.051 5.000 S -0.000 0.000 0.000 setrgbcolor -(V) -22.389 5.000 S -(e) -12.279 5.000 S -(c) -6.065 5.000 S -(t) 0.148 5.000 S -(o) 4.038 5.000 S -(r) 11.038 5.000 S -( ) 15.700 5.000 S -(\() 19.200 5.000 S -(N) 23.862 5.000 S -(\)) 33.972 5.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 54.000 0.000 0.000 162.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 90.000 54.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 108.000 54.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 126.000 54.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 144.000 54.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 162.000 54.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 180.000 54.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 198.000 54.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 81.000 216.000 54.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -54.000 81.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 18.000 81.000 52.833 81.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 92.000 34.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -37.500 98.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 110.000 34.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -37.500 116.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 221.000 31.671 0.000 0.000 12.000 11.328 rect -%@EndRect -gsave -37.335 227.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.828 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 137.000 34.000 0.000 0.000 48.000 4.000 rect -%@EndRect -gsave -36.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -14.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -2.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 62.000 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -66.500 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 54.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 59.000 63.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -66.500 65.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 36.000 54.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 41.000 63.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -66.500 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 39.000 23.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -35.500 45.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -12.500 4.000 S -(o) -6.500 4.000 S -(o) -0.500 4.000 S -(k) 5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 23.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -35.500 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -12.500 4.000 S -(U) -6.500 4.000 S -(s) 2.166 4.000 S -(e) 6.835 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 28.000 19.000 0.000 0.000 48.000 72.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 153.000 0.000 0.000 162.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 90.000 153.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 108.000 153.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 126.000 153.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 144.000 153.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 162.000 153.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 180.000 153.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 198.000 153.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.000 216.000 153.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 81.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 81.000 151.833 81.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 92.000 133.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -136.500 98.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 110.000 133.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -136.500 116.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 221.000 130.671 0.000 0.000 12.000 11.328 rect -%@EndRect -gsave -136.335 227.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.828 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 137.000 133.000 0.000 0.000 48.000 4.000 rect -%@EndRect -gsave -135.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -14.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -2.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 161.000 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -165.500 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 153.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 59.000 162.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -165.500 65.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 36.000 153.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 41.000 162.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -165.500 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 39.000 122.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -134.500 45.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -12.500 4.000 S -(o) -6.500 4.000 S -(o) -0.500 4.000 S -(k) 5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 122.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -134.500 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -12.500 4.000 S -(U) -6.500 4.000 S -(s) 2.166 4.000 S -(e) 6.835 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 28.000 118.000 0.000 0.000 48.000 72.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 239.000 171.000 0.000 0.000 15.000 105.000 rect -%@EndRect -gsave -223.500 246.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -52.500 5.000 S -(S) -47.837 5.000 S -(\)) -40.051 5.000 S -(M) -35.389 5.000 S -(a) -22.941 5.000 S -(t) -16.727 5.000 S -(r) -12.837 5.000 S -(i) -8.175 5.000 S -(x) -4.286 5.000 S -( ) 2.713 5.000 S -(\() 6.213 5.000 S -(N) 10.875 5.000 S -( ) 20.986 5.000 S -(x) 24.486 5.000 S -( ) 31.486 5.000 S -(M) 34.986 5.000 S -(\)) 47.434 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 92.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 106.000 225.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 106.000 243.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 106.000 261.000 92.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 106.000 279.000 92.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 94.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 100.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 99.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 99.000 205.833 99.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 76.000 229.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -232.500 82.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 76.000 247.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -250.500 82.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 76.000 283.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -288.500 82.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 73.000 264.000 0.000 0.000 12.000 13.000 rect -%@EndRect -gsave -270.500 79.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -6.500 4.000 S -(.) -3.500 4.000 S -(.) -0.500 4.000 S -(.) 2.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 110.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 124.000 225.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 124.000 243.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 124.000 261.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 124.000 279.000 110.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 112.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 118.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 117.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 117.000 205.833 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 128.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 142.000 225.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 142.000 243.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 142.000 261.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 142.000 279.000 128.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 130.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 136.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 135.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 135.000 205.833 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 146.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 160.000 225.000 146.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 160.000 243.000 146.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 160.000 261.000 146.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 160.000 279.000 146.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 148.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 154.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 153.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 153.000 205.833 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 164.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 178.000 225.000 164.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 178.000 243.000 164.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 178.000 261.000 164.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 178.000 279.000 164.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 166.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 172.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 171.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 171.000 205.833 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 182.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 196.000 225.000 182.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 196.000 243.000 182.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 196.000 261.000 182.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 196.000 279.000 182.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 184.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 190.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 189.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 189.000 205.833 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 200.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 214.000 225.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 214.000 243.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 214.000 261.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 214.000 279.000 200.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 202.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 208.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 207.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 207.000 205.833 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 218.000 208.000 0.000 0.000 14.000 88.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 225.000 232.000 225.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 243.000 232.000 243.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.000 232.000 261.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 232.000 279.000 218.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 220.000 211.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -216.500 226.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(M) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -207.000 225.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 225.000 205.833 225.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 72.000 351.000 0.000 0.000 162.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 90.000 351.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 108.000 351.000 108.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 126.000 351.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 144.000 351.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 162.000 351.000 162.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 180.000 351.000 180.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 198.000 351.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 216.000 351.000 216.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -351.000 81.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.000 81.000 349.833 81.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 92.000 331.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -334.500 98.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 110.000 331.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -334.500 116.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 221.000 328.671 0.000 0.000 12.000 11.328 rect -%@EndRect -gsave -334.335 227.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.828 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 137.000 331.000 0.000 0.000 48.000 4.000 rect -%@EndRect -gsave -333.000 161.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -14.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 -2.000 S -0.000 0.000 0.000 setrgbcolor -(.) -1.500 10.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 75.000 359.000 0.000 0.000 12.000 9.000 rect -%@EndRect -gsave -363.500 81.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 54.000 351.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 59.000 360.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -363.500 65.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 36.000 351.000 0.000 0.000 18.000 27.000 rect -%@EndRect -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 41.000 360.000 0.000 0.000 12.000 7.000 rect -%@EndRect -gsave -363.500 47.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(*) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 39.000 320.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -332.500 45.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(h) -12.500 4.000 S -(o) -6.500 4.000 S -(o) -0.500 4.000 S -(k) 5.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 57.000 320.000 0.000 0.000 12.000 25.000 rect -%@EndRect -gsave -332.500 63.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(n) -12.500 4.000 S -(U) -6.500 4.000 S -(s) 2.166 4.000 S -(e) 6.835 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/backpen {/setcmykcolor where -{begin gsave 0 0 0 0 setcmykcolor stroke grestore end} -{gsave 1 1 1 setrgbcolor stroke grestore} - ifelse} def -/penpat <7C7C7CF8F8F8F1F1F1E3E3E3C7C7C78F8F8F1F1F1F3E3E3E> def -/iSizeX 24 def -/iSizeY 24 def -/SS {/pat penpat def DefaultPatternFont setlinewidth SD backpen PatternStroke} def -/PF {} def -/PC {} def -1.000 0 28.000 316.000 0.000 0.000 48.000 72.000 rect -%@EndRect -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 239.000 387.000 0.000 0.000 15.000 104.000 rect -%@EndRect -gsave -439.000 246.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(\() -51.500 5.000 S -(S) -46.837 5.000 S -(\)) -39.051 5.000 S -(T) -34.389 5.000 S -(r) -25.837 5.000 S -(i) -21.175 5.000 S -(M) -17.286 5.000 S -(a) -4.837 5.000 S -(t) 1.375 5.000 S -( ) 5.265 5.000 S -(\() 8.765 5.000 S -(N) 13.427 5.000 S -( ) 23.538 5.000 S -(x) 27.038 5.000 S -( ) 34.038 5.000 S -(N) 37.538 5.000 S -(\)) 47.648 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 92.000 406.000 0.000 0.000 14.000 34.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 106.000 423.000 92.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 93.000 411.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -416.500 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(1) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 99.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 99.000 403.833 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 110.000 406.000 0.000 0.000 14.000 52.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 124.000 423.000 110.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 124.000 441.000 110.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 111.000 411.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -416.500 117.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(2) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 117.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 117.000 403.833 117.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 128.000 406.000 0.000 0.000 14.000 70.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 142.000 423.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 142.000 441.000 128.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 459.000 142.000 459.000 128.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 129.000 411.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -416.500 135.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(3) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 135.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 135.000 403.833 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 153.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 153.000 403.833 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 171.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 171.000 403.833 171.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 189.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 189.000 403.833 189.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 200.000 406.000 0.000 0.000 14.000 106.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 214.000 423.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 214.000 441.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 459.000 214.000 459.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 214.000 477.000 200.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 495.000 214.000 495.000 200.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 202.000 407.000 0.000 0.000 12.000 32.000 rect -%@EndRect -gsave -423.000 208.000 T translate -0.0 rotate -1 1 scale -10.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -15.500 3.000 S -(-) -8.278 3.000 S -(1) -4.948 3.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 207.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 207.000 403.833 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PC {1.000 1.000 1.000 setrgbcolor } def -/PF {gsave fill grestore} def -1.000 0 218.000 406.000 0.000 0.000 14.000 124.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 423.000 232.000 423.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 441.000 232.000 441.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 459.000 232.000 459.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 477.000 232.000 477.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 495.000 232.000 495.000 218.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 513.000 232.000 513.000 218.000 Line -%@EndLine -%@BeginText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -1 0 220.000 409.000 0.000 0.000 12.000 11.000 rect -%@EndRect -gsave -414.500 226.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess -0.000 0.000 0.000 setrgbcolor -(N) -5.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -405.000 225.000 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC {0.000 0.000 0.000 setrgbcolor } def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 225.000 403.833 225.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vqtohmm.eps b/HTKBook/HTKFigs/vqtohmm.eps deleted file mode 100644 index 553d782..0000000 --- a/HTKBook/HTKFigs/vqtohmm.eps +++ /dev/null @@ -1,1536 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vqtohmm.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/29/95 10:44:44 p.m. -%%BoundingBox: 65.500 556.122 215.279 764.500 -%%QDBoundingBox: 65.500 27.500 215.279 235.877 -%%DocumentFonts: Times-Roman -%%+ -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=F tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 27.500 65.500 0.000 0.000 26.000 74.970 rect -%@EndRect -gsave -102.985 40.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -37.000 -3.000 S -(p) -30.326 -3.000 S -(e) -24.326 -3.000 S -(e) -19.000 -3.000 S -(c) -13.673 -3.000 S -(h) -8.347 -3.000 S -( ) -2.347 -3.000 S -(V) 0.652 -3.000 S -(e) 9.318 -3.000 S -(c) 14.644 -3.000 S -(t) 19.970 -3.000 S -(o) 23.304 -3.000 S -(r) 29.304 -3.000 S -(s) 33.300 -3.000 S -grestore -restore -save -gsave -102.985 40.500 T translate -0.0 rotate -1 1 scale -%%IncludeFont: Courier -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(X) -10.316 10.000 S -(X) -4.915 10.000 S -(X) 0.485 10.000 S -(X) 5.886 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 55.377 79.779 0.000 0.000 81.000 45.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 64.377 79.779 64.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 73.377 79.779 73.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 82.377 79.779 82.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 91.377 79.779 91.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 100.377 79.779 100.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 109.377 79.779 109.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 118.377 79.779 118.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 124.779 127.377 79.779 127.377 Line -%@EndLine -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.500 154.500 0.000 0.000 27.000 59.662 rect -%@EndRect -gsave -184.331 127.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(V) -7.834 -3.000 S -(Q) 0.831 -3.000 S -( ) 9.497 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(C) -23.833 10.000 S -(o) -15.830 10.000 S -(d) -9.830 10.000 S -(e) -3.830 10.000 S -(b) 1.496 10.000 S -(o) 7.496 10.000 S -(o) 13.496 10.000 S -(k) 19.496 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 109.377 151.779 0.000 0.000 36.000 63.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -151.779 132.377 moveto -/Triangular 8.224 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 150.612 132.377 124.779 132.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 172.377 106.779 0.000 0.000 9.000 99.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 178.779 181.377 178.779 172.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -192.779 172.377 moveto -/Triangular 8.224 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 192.779 171.211 192.779 145.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -133.779 172.377 moveto -/Triangular 8.224 7.049 false 233.146 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 133.079 171.444 106.779 136.377 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 208.377 124.779 0.000 0.000 27.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 208.500 134.500 0.000 0.000 27.000 39.978 rect -%@EndRect -gsave -154.489 222.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(D) -19.000 -3.000 S -(i) -10.333 -3.000 S -(s) -7.000 -3.000 S -(c) -2.330 -3.000 S -(r) 2.996 -3.000 S -(e) 6.992 -3.000 S -(t) 12.318 -3.000 S -(e) 15.652 -3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(H) -14.013 10.000 S -(M) -5.347 10.000 S -(M) 5.322 10.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -151.779 208.377 moveto -/Triangular 8.224 7.049 false 329.059 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 152.779 207.777 196.779 181.377 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 77.500 0.000 0.000 26.000 58.652 rect -%@EndRect -gsave -106.826 196.500 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(O) -29.000 -3.000 S -(b) -20.333 -3.000 S -(s) -14.333 -3.000 S -(e) -9.664 -3.000 S -(r) -4.337 -3.000 S -(v) -0.341 -3.000 S -(a) 5.658 -3.000 S -(t) 10.984 -3.000 S -(i) 14.318 -3.000 S -(o) 17.652 -3.000 S -(n) 23.652 -3.000 S -%@BeginText -restore -save -%%IncludeFont: Courier -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 183.500 77.500 0.000 0.000 26.000 58.652 rect -%@EndRect -gsave -106.826 196.500 T translate -0.0 rotate -1 1 scale -9.000 (Courier) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(X) -15.876 10.000 S -(X) -10.475 10.000 S -(X) -5.074 10.000 S -(X) 0.326 10.000 S -(_) 5.727 10.000 S -(V) 11.127 10.000 S -grestore -%@EndText -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/vtlnpiecewise.eps b/HTKBook/HTKFigs/vtlnpiecewise.eps deleted file mode 100644 index 94f1929..0000000 --- a/HTKBook/HTKFigs/vtlnpiecewise.eps +++ /dev/null @@ -1,195 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: vtlnpiecewise.eps -%%Creator: fig2dev Version 3.2 Patchlevel 3c -%%CreationDate: Tue Apr 24 14:02:24 2001 -%%For: ge204@watch (G. Evermann, (RS - Woodland)) -%%BoundingBox: 0 0 154 146 -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save -newpath 0 146 moveto 0 0 lineto 154 0 lineto 154 146 lineto closepath clip newpath --13.0 157.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def - -$F2psBegin -%%Page: 1 1 -10 setmiterlimit - 0.06299 0.06299 sc -% -% Fig objects follow -% -/Times-Roman ff 120.00 scf sf -2440 2440 m -gs 1 -1 sc (orig) col-1 sh gr -/Times-Roman ff 150.00 scf sf -2395 2395 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 120.00 scf sf -825 2420 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 90.00 scf sf -845 2465 m -gs 1 -1 sc (L) col-1 sh gr -/Times-Roman ff 120.00 scf sf -1835 2430 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 90.00 scf sf -1865 2470 m -gs 1 -1 sc (U) col-1 sh gr -/Symbol ff 120.00 scf sf -675 1315 m -gs 1 -1 sc (a) col-1 sh gr -/Times-Roman ff 90.00 scf sf -755 1355 m -gs 1 -1 sc (min) col-1 sh gr -/Symbol ff 120.00 scf sf -1300 1865 m -gs 1 -1 sc (a) col-1 sh gr -/Times-Roman ff 90.00 scf sf -1390 1900 m -gs 1 -1 sc (max) col-1 sh gr -% Polyline -7.500 slw -gs clippath -480 210 m 420 210 l 420 362 l 450 242 l 480 362 l cp -eoclip -n 450 225 m - 450 2475 l gs col-1 s gr gr - -% arrowhead -n 480 362 m 450 242 l 420 362 l col-1 s -% Polyline -gs clippath -2490 2280 m 2490 2220 l 2338 2220 l 2458 2250 l 2338 2280 l cp -eoclip -n 225 2250 m - 2475 2250 l gs col-1 s gr gr - -% arrowhead -n 2338 2280 m 2458 2250 l 2338 2220 l col-1 s -% Polyline - [60] 0 sd -n 225 450 m - 2475 450 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 2250 225 m - 2250 2475 l gs col-1 s gr [] 0 sd -% Polyline -n 1575 675 m - 2250 450 l gs col-1 s gr -% Polyline - [15 45] 45 sd -n 450 2250 m - 2250 450 l gs col-1 s gr [] 0 sd -% Polyline - [15 45] 45 sd -n 1575 675 m - 2025 1125 l gs col-1 s gr [] 0 sd -% Polyline - [15 45] 45 sd -n 900 2025 m - 675 1800 l gs col-1 s gr [] 0 sd -% Polyline -n 450 2250 m - 675 1800 l gs col-1 s gr -% Polyline -n 450 2250 m - 900 2025 l gs col-1 s gr -% Polyline -n 900 2025 m - 2025 1125 l gs col-1 s gr -% Polyline -n 2025 1125 m 2250 450 l - 2250 495 l gs col-1 s gr -% Polyline -n 675 1800 m - 1575 675 l gs col-1 s gr -% Polyline - [60] 0 sd -n 785 1925 m - 785 2405 l gs col-1 s gr [] 0 sd -% Polyline - [60] 0 sd -n 1800 900 m - 1800 2380 l gs col-1 s gr [] 0 sd -/Times-Roman ff 150.00 scf sf -515 285 m -gs 1 -1 sc (f) col-1 sh gr -/Times-Roman ff 120.00 scf sf -560 345 m -gs 1 -1 sc (scaled) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/vtrellis.eps b/HTKBook/HTKFigs/vtrellis.eps deleted file mode 100644 index 94f6582..0000000 --- a/HTKBook/HTKFigs/vtrellis.eps +++ /dev/null @@ -1,3133 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: vtrellis.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/9/95 10:26:12 p.m. -%%BoundingBox: 2.000 526.000 387.500 789.000 -%%QDBoundingBox: 2.000 3.000 387.500 266.000 -%%DocumentFonts: Times-Roman -%%+ Symbol -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=T kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 189.582 5.775 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 192.926 20.482 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -28.527 207.329 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 28.527 208.745 28.527 229.402 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -16.973 205.285 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 15.556 205.285 11.837 205.285 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 151.976 6.203 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 155.320 20.909 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -28.955 169.723 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 28.955 171.139 28.955 191.796 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -17.401 167.679 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 15.984 167.679 12.265 167.679 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 81.446 6.631 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 84.790 21.337 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -29.382 99.192 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 29.382 100.609 29.382 121.265 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -17.828 97.148 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 16.412 97.148 12.693 97.148 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 28.955 61.995 28.955 84.477 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 -1.570 229.815 23.387 0.000 0.000 9.392 10.279 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 -1.570 52.189 23.815 0.000 0.000 9.392 10.279 rect -%@EndOval -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 114.370 6.631 0.000 0.000 19.959 13.408 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 -1.570 117.714 21.337 0.000 0.000 14.089 16.090 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -29.382 132.116 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 29.382 133.533 29.382 154.190 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -17.828 130.073 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 16.412 130.073 12.693 130.073 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 230.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 237.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 194.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 201.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 156.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 163.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 118.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 125.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 91.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 49.000 47.000 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -51.000 56.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -73.817 24.500 moveto -/Triangular 9.987 7.049 false 90.006 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 73.817 25.916 73.817 240.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 3.500 55.817 0.000 0.000 15.000 29.000 rect -%@EndRect -gsave -70.317 11.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.682 5.000 S -(t) -5.896 5.000 S -(a) -2.006 5.000 S -(t) 4.207 5.000 S -(e) 8.096 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -334.817 240.500 moveto -/Triangular 9.987 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 333.401 240.500 73.817 240.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 219.500 343.817 0.000 0.000 46.000 42.000 rect -%@EndRect -gsave -364.817 242.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -20.682 -11.000 S -(p) -12.896 -11.000 S -(e) -5.896 -11.000 S -(e) 0.317 -11.000 S -(c) 6.531 -11.000 S -(h) 12.745 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(F) -20.682 4.000 S -(r) -12.896 4.000 S -(a) -8.234 4.000 S -(m) -2.020 4.000 S -(e) 8.869 4.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -20.682 19.000 S -(T) -16.020 19.000 S -(i) -7.468 19.000 S -(m) -3.578 19.000 S -(e) 7.310 19.000 S -(\)) 13.524 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 204.500 73.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 168.500 73.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 132.500 73.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 96.500 73.817 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 60.500 73.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 109.817 240.500 109.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 240.500 145.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 240.500 181.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 240.500 217.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 240.500 253.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 105.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 141.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 141.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 199.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 105.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -109.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(1) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 141.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -145.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(2) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 177.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -181.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 213.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -217.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 249.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -253.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(5) -3.182 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 243.500 285.317 0.000 0.000 15.000 8.000 rect -%@EndRect -gsave -289.317 251.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(6) -3.182 5.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 240.500 289.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 163.500 249.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 141.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 127.500 249.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 177.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 213.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 249.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 91.500 285.317 0.000 0.000 9.000 9.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 109.817 204.500 73.817 240.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 204.500 109.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 204.500 145.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 204.500 181.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 168.500 217.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 96.500 253.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 96.500 253.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.817 96.500 181.817 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 132.500 109.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 145.817 168.500 109.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 168.500 145.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 132.500 145.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 168.500 145.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 132.500 145.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 96.500 145.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 132.500 145.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 181.817 96.500 145.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 181.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 96.500 181.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 132.500 181.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 96.500 181.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 132.500 181.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 96.500 217.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 217.817 132.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 217.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 96.500 217.817 168.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.817 132.500 217.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 217.817 168.500 181.817 204.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 240.500 325.817 60.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.817 60.500 289.817 96.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 123.500 28.817 0.000 0.000 77.000 16.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 123.500 28.817 0.000 0.000 77.000 16.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 88.500 28.817 0.000 0.000 74.000 16.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 88.500 28.817 0.000 0.000 74.000 16.000 rect -setlinecap -%@EndArc -% -%tfBegGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 123.000 334.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -339.500 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 344.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -348.000 138.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 123.000 359.000 0.000 0.000 18.000 11.000 rect -%@EndRect -gsave -364.500 132.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -5.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 132.000 370.000 0.000 0.000 12.000 8.000 rect -%@EndRect -gsave -374.000 138.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(4) -3.500 4.000 S -grestore -%@EndText -%@BeginText -restore -save -%%IncludeFont: Symbol -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 125.000 353.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -357.000 134.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\() -3.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 125.000 379.000 0.000 0.000 18.000 8.000 rect -%@EndRect -gsave -383.000 134.000 T translate -0.0 rotate -1 1 scale -18.000 (Symbol) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(\)) -3.500 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -258.500 166.000 moveto -/Triangular 14.099 7.049 false -13.680 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 353.000 143.000 260.443 165.527 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -242.500 121.000 moveto -/Triangular 14.099 7.049 false -13.419 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 341.000 97.500 244.445 120.535 Line -%@EndLine -% -%tfBegGrp -% -%@BeginText -restore -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 84.000 342.000 0.000 0.000 18.000 10.000 rect -%@EndRect -gsave -347.000 93.000 T translate -0.0 rotate -1 1 scale -18.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(a) -4.500 6.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 93.000 351.000 0.000 0.000 12.000 14.000 rect -%@EndRect -gsave -358.000 99.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(3) -6.500 4.000 S -(5) -0.500 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wdnet.eps b/HTKBook/HTKFigs/wdnet.eps deleted file mode 100644 index 528692b..0000000 --- a/HTKBook/HTKFigs/wdnet.eps +++ /dev/null @@ -1,1691 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wdnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 4:16:48 p.m. -%%BoundingBox: 73.500 641.562 344.500 755.437 -%%QDBoundingBox: 73.500 36.562 344.500 150.437 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 230.599 100.250 187.399 86.750 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -187.944 86.961 moveto -/Triangular 9.399 5.874 false 377.795 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.468 87.449 201.188 91.205 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 100.250 182.000 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 66.500 225.200 0.000 0.000 20.250 10.799 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 230.599 86.750 187.399 100.250 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -187.944 100.038 moveto -/Triangular 9.399 5.874 false 342.255 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.468 99.550 201.188 95.794 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 120.500 173.000 0.000 0.000 27.000 72.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -200.000 147.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 201.600 147.499 218.000 147.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.000 66.500 moveto -/Triangular 9.399 5.874 false 155.219 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.547 67.170 127.405 91.716 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -182.000 120.500 moveto -/Triangular 9.399 5.874 false 204.806 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 180.547 119.829 127.405 95.283 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -291.188 91.716 moveto -/Triangular 9.399 5.874 false 204.571 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.733 91.051 236.000 66.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -290.594 94.688 moveto -/Triangular 9.399 5.874 false 154.707 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 289.147 95.372 236.000 120.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.500 173.000 0.000 0.000 27.000 72.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 84.500 74.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 86.000 88.500 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -101.720 94.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.000 4.000 S -(t) -5.213 4.000 S -(a) -1.324 4.000 S -(r) 4.889 4.000 S -(t) 9.551 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 84.500 290.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 86.000 304.500 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -315.775 94.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -11.000 4.000 S -(n) -2.448 4.000 S -(d) 4.551 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 111.500 182.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 113.000 200.500 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -209.444 121.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.000 4.000 S -(u) -1.000 4.000 S -(t) 6.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 57.500 182.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 59.000 200.500 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -207.889 67.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.000 4.000 S -(i) 0.000 4.000 S -(t) 3.889 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -200.000 39.500 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 201.600 39.499 218.000 39.500 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wdnet0.eps b/HTKBook/HTKFigs/wdnet0.eps deleted file mode 100644 index ec92a51..0000000 --- a/HTKBook/HTKFigs/wdnet0.eps +++ /dev/null @@ -1,1705 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wdnet0.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/31/95 10:53:31 a.m. -%%BoundingBox: 72.500 635.475 333.030 750.525 -%%QDBoundingBox: 72.500 41.474 333.030 156.524 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 72.000 270.000 72.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 162.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 45.000 180.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 90.000 162.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 45.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 218.000 44.999 225.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 63.000 279.000 54.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 252.000 126.000 270.000 126.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 117.000 162.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 153.000 180.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 108.000 162.000 135.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 153.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 218.000 152.999 225.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 126.000 261.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 135.000 279.000 144.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 73.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 87.500 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -100.720 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.000 4.000 S -(t) -5.213 4.000 S -(a) -1.324 4.000 S -(r) 4.889 4.000 S -(t) 9.551 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 278.530 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 293.030 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -304.306 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.469 4.000 S -(n) -1.917 4.000 S -(d) 5.082 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 118.000 217.500 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -226.444 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.000 4.000 S -(u) -1.000 4.000 S -(t) 6.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 64.000 217.500 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -224.889 72.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.000 4.000 S -(i) 0.000 4.000 S -(t) 3.889 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 153.000 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 99.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.000 99.000 126.979 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.469 74.550 moveto -/Triangular 14.099 7.049 false 144.321 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.845 75.717 171.000 95.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.489 122.979 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.825 121.870 170.020 104.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -279.489 95.489 moveto -/Triangular 14.099 7.049 false 215.997 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.871 94.314 252.000 75.530 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.510 104.020 moveto -/Triangular 14.099 7.049 false 147.772 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 278.818 105.087 252.000 122.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wdnet1.eps b/HTKBook/HTKFigs/wdnet1.eps deleted file mode 100644 index 39c1208..0000000 --- a/HTKBook/HTKFigs/wdnet1.eps +++ /dev/null @@ -1,1547 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wdnet1.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/1/95 11:51:19 a.m. -%%BoundingBox: 72.500 657.000 378.030 750.525 -%%QDBoundingBox: 72.500 41.474 378.030 135.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=T tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR1 -/RR1 { -pbox top get pbox bottom get sub abs 2 div dup dup dup -pbox left get add pbox left 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox left get pbox bottom get moveto -pbox right get 0 3 -1 roll 90 -90 arcn -pbox left get 0 3 -1 roll -90 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : RR2 -/RR2 { -dup dup dup dup dup dup dup dup -pbox top get add pbox top 3 -1 roll put -pbox left get add pbox left 3 -1 roll put -pbox bottom get exch sub pbox bottom 3 -1 roll put -pbox right get exch sub pbox right 3 -1 roll put -pbox bottom get add pbox left get exch moveto -pbox right get pbox bottom get 3 -1 roll 90 0 arcn -pbox right get pbox top get 3 -1 roll 0 270 arcn -pbox left get pbox top get 3 -1 roll 270 180 arcn -pbox left get pbox bottom get 3 -1 roll 180 90 arcn closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 252.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 45.000 162.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 270.000 45.000 180.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 162.000 90.000 162.000 63.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 45.000 moveto -/Triangular 14.099 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 218.000 44.999 225.000 45.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 288.000 90.000 288.000 63.000 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 73.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 87.500 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -100.720 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.000 4.000 S -(t) -5.213 4.000 S -(a) -1.324 4.000 S -(r) 4.889 4.000 S -(t) 9.551 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 89.500 323.530 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 91.000 338.030 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -349.306 99.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.469 4.000 S -(n) -1.917 4.000 S -(d) 5.082 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 116.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 118.000 217.500 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -226.444 126.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.000 4.000 S -(u) -1.000 4.000 S -(t) 6.000 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {9.000 RR2} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 62.500 199.000 0.000 0.000 18.000 54.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 64.000 217.500 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -224.889 72.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -7.000 4.000 S -(i) 0.000 4.000 S -(t) 3.889 4.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 153.000 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 99.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.000 99.000 126.979 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.469 74.550 moveto -/Triangular 14.099 7.049 false 144.321 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.845 75.717 171.000 95.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -198.489 122.979 moveto -/Triangular 14.099 7.049 false 213.706 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 196.825 121.870 170.020 104.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -279.489 95.489 moveto -/Triangular 14.099 7.049 false 215.997 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 277.871 94.314 252.000 75.530 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -280.510 104.020 moveto -/Triangular 14.099 7.049 false 147.772 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 278.818 105.087 252.000 122.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 90.000 279.000 0.000 0.000 18.000 18.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -324.000 99.000 moveto -/Triangular 14.099 7.049 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 322.000 99.000 297.979 99.000 Line -%@EndLine -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wintnet.eps b/HTKBook/HTKFigs/wintnet.eps deleted file mode 100644 index b46c1d5..0000000 --- a/HTKBook/HTKFigs/wintnet.eps +++ /dev/null @@ -1,2247 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wintnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:8/30/95 3:58:46 p.m. -%%BoundingBox: 0.500 637.031 469.500 777.906 -%%QDBoundingBox: 0.500 14.093 469.500 154.968 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 145.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 89.031 307.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.000 89.031 181.000 89.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -244.000 89.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.600 89.031 271.000 89.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 80.031 145.000 0.000 0.000 72.000 72.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 44.031 307.000 0.000 0.000 36.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 325.000 80.031 181.000 80.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -244.000 80.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 245.600 80.031 271.000 80.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.031 1.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.531 13.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -20.113 85.531 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.031 379.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.531 391.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -398.113 85.531 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.031 433.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.590 439.841 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -451.117 86.590 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.658 4.000 S -(n) -2.106 4.000 S -(d) 4.893 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 71.141 55.278 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 78.700 61.378 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -74.599 86.700 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.121 4.000 S -(t) -5.334 4.000 S -(a) -1.445 4.000 S -(r) 4.768 4.000 S -(t) 9.430 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -55.000 85.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 53.399 85.327 37.000 85.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -433.000 85.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 431.399 85.327 415.000 85.327 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 35.031 136.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.889 148.249 0.000 0.000 16.000 18.785 rect -%@EndRect -gsave -157.642 48.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -9.250 4.000 S -(+) -2.250 4.000 S -(i) 5.645 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 35.031 199.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.889 208.286 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -221.954 48.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -13.213 4.000 S -(-) -6.213 4.000 S -(i) -1.551 4.000 S -(+) 2.337 4.000 S -(t) 10.233 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 35.031 262.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.889 277.212 0.000 0.000 16.000 12.441 rect -%@EndRect -gsave -283.433 48.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.287 4.000 S -(-) -1.397 4.000 S -(t) 3.264 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.000 49.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.399 49.327 181.000 49.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.000 49.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.399 49.327 244.000 49.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 35.031 325.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -325.000 49.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 323.399 49.327 307.000 49.327 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 42.069 329.784 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -337.174 50.069 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.715 4.000 S -(i) 0.284 4.000 S -(t) 4.174 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.031 136.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.889 148.249 0.000 0.000 16.000 21.895 rect -%@EndRect -gsave -159.197 120.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -10.250 4.000 S -(+) -3.250 4.000 S -(u) 4.645 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.031 199.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -0.000 0 112.889 208.286 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -223.509 120.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.213 4.000 S -(-) -8.213 4.000 S -(u) -3.551 4.000 S -(+) 3.448 4.000 S -(t) 11.343 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 107.031 262.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.889 277.212 0.000 0.000 16.000 15.551 rect -%@EndRect -gsave -284.988 120.889 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -7.287 4.000 S -(-) -0.287 4.000 S -(t) 4.375 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -199.000 121.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 197.399 121.327 181.000 121.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -262.000 121.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 260.399 121.327 244.000 121.327 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 107.031 325.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -325.000 121.327 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 323.399 121.327 307.000 121.327 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 114.069 329.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -338.729 122.069 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.000 53.031 moveto -/Triangular 9.399 5.874 false 149.046 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.628 53.854 91.000 80.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -136.000 116.031 moveto -/Triangular 9.399 5.874 false 210.979 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 134.627 115.208 91.000 89.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.000 80.031 moveto -/Triangular 9.399 5.874 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 377.868 78.899 352.000 53.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -379.000 89.031 moveto -/Triangular 9.399 5.874 false 135.009 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 377.868 90.162 352.000 116.031 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 17.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.000 17.031 136.000 17.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 17.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.600 17.031 262.000 17.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 334.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 125.031 118.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 352.000 152.031 136.000 152.031 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -235.000 152.031 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 236.600 152.031 262.000 152.031 Line -%@EndLine -% -%tfEndGrp -% -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wlroper.eps b/HTKBook/HTKFigs/wlroper.eps deleted file mode 100644 index 238b24c..0000000 --- a/HTKBook/HTKFigs/wlroper.eps +++ /dev/null @@ -1,3121 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: wlroper.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:10/25/95 11:58:18 p.m. -%%BoundingBox: 11.000 485.000 457.375 753.000 -%%QDBoundingBox: 11.000 39.000 457.375 307.000 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=F tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 81.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 236.500 81.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 254.500 81.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 272.500 81.000 272.500 Line -%@EndLine -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 87.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -100.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 162.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 236.500 162.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 254.500 162.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 198.000 272.500 162.000 272.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 168.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -181.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 243.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 236.500 243.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 254.500 243.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 279.000 272.500 243.000 272.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 249.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -262.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 218.500 324.000 0.000 0.000 72.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 236.500 324.000 236.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 254.500 324.000 254.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 360.000 272.500 324.000 272.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 221.500 330.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -343.500 229.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -% -%tfEndGrp -% -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 91.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -99.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -8.500 5.000 S -(-) -4.610 5.000 S -(3) 0.051 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 172.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -180.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -8.500 5.000 S -(-) -4.610 5.000 S -(2) 0.051 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 252.000 0.000 0.000 15.000 17.000 rect -%@EndRect -gsave -260.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -8.500 5.000 S -(-) -4.610 5.000 S -(1) 0.051 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 256.500 339.000 0.000 0.000 15.000 5.000 rect -%@EndRect -gsave -341.500 264.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -2.500 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 90.000 0.000 0.000 16.000 21.000 rect -%@EndRect -gsave -100.500 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 170.000 0.000 0.000 16.000 21.000 rect -%@EndRect -gsave -180.500 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -10.500 4.000 S -(w) -6.610 4.000 S -(o) 3.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 252.000 0.000 0.000 16.000 20.213 rect -%@EndRect -gsave -262.106 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -9.500 4.000 S -(n) -2.500 4.000 S -(e) 4.500 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 275.000 332.000 0.000 0.000 16.000 20.213 rect -%@EndRect -gsave -342.106 283.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -9.500 4.000 S -(n) -2.500 4.000 S -(e) 4.500 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -49.000 247.500 moveto -/Triangular 9.987 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 50.416 247.499 98.000 247.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -55.000 300.500 moveto -/Triangular 9.987 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 56.416 300.499 117.000 300.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -117.000 273.500 moveto -/Triangular 9.987 7.049 false 387.581 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 118.256 274.155 163.000 297.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -118.000 283.500 moveto -/Triangular 9.987 7.049 false 387.099 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 119.261 284.144 163.000 306.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 245.500 117.000 300.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 179.000 245.000 153.000 245.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 210.000 297.000 162.500 297.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 235.000 246.000 210.000 296.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 261.500 245.500 235.000 245.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 290.500 306.500 162.500 306.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 315.500 245.500 290.500 306.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 345.500 245.500 315.500 245.500 Line -%@EndLine -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 110.500 81.000 0.000 0.000 36.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 117.000 128.500 81.000 128.500 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 110.500 135.000 0.000 0.000 36.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 171.000 128.500 135.000 128.500 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -99.000 218.500 moveto -/Triangular 9.987 7.049 false 270.019 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 98.999 217.083 99.000 137.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 182.500 153.000 137.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -324.000 218.500 moveto -/Triangular 9.987 7.049 false 191.902 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 322.613 218.208 153.000 182.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 69.500 57.000 0.000 0.000 16.000 119.000 rect -%@EndRect -gsave -116.500 77.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -58.515 4.000 S -(e) -49.177 4.000 S -(c) -42.963 4.000 S -(o) -36.750 4.000 S -(r) -29.750 4.000 S -(d) -25.087 4.000 S -(i) -18.087 4.000 S -(n) -14.198 4.000 S -(g) -7.198 4.000 S -( ) -0.198 4.000 S -(D) 3.301 4.000 S -(e) 13.412 4.000 S -(c) 19.625 4.000 S -(i) 25.839 4.000 S -(s) 29.729 4.000 S -(i) 35.177 4.000 S -(o) 39.067 4.000 S -(n) 46.067 4.000 S -(s) 53.067 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 54.000 155.500 54.000 65.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 155.500 54.000 155.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 65.500 54.000 65.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -225.000 65.500 moveto -/Triangular 9.987 7.049 false 170.550 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 223.602 65.732 183.000 72.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.500 86.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -99.500 121.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 140.000 0.000 0.000 15.000 27.000 rect -%@EndRect -gsave -153.500 120.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(l) -13.500 5.000 S -(o) -9.610 5.000 S -(g) -2.610 5.000 S -(P) 4.389 5.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 236.000 394.000 0.000 0.000 46.000 63.375 rect -%@EndRect -gsave -425.687 259.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(R) -20.025 -11.000 S -(e) -10.687 -11.000 S -(c) -4.474 -11.000 S -(o) 1.739 -11.000 S -(r) 8.739 -11.000 S -(d) 13.401 -11.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(W) -31.500 19.000 S -(o) -18.286 19.000 S -(r) -11.286 19.000 S -(d) -6.624 19.000 S -( ) 0.375 19.000 S -(E) 3.875 19.000 S -(n) 12.427 19.000 S -(d) 19.427 19.000 S -(s) 26.427 19.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -374.000 255.500 moveto -/Triangular 9.987 7.049 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 375.416 255.499 447.000 255.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.500 84.500 243.500 84.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 81.000 226.500 0.000 0.000 7.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.500 48.500 243.500 48.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 45.000 226.500 0.000 0.000 7.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 234.500 120.500 243.500 120.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 117.000 226.500 0.000 0.000 7.000 7.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 39.500 219.000 0.000 0.000 90.000 18.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 453.000 156.500 453.000 48.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 199.000 84.500 217.000 84.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 199.000 156.500 199.000 84.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 156.500 199.000 156.500 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {[2.000 3.000 ] 0 setdash} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 189.000 155.500 189.000 65.500 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 71.000 11.000 0.000 0.000 66.000 37.000 rect -%@EndRect -gsave -29.500 104.000 T translate -0.0 rotate -1 1 scale -12.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -10.666 -23.000 S -(e) -2.663 -23.000 S -(s) 2.663 -23.000 S -(t) 7.333 -23.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(T) -15.328 -10.000 S -(o) -7.998 -10.000 S -(k) -1.998 -10.000 S -(e) 4.001 -10.000 S -(n) 9.328 -10.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(c) -12.656 3.000 S -(a) -7.330 3.000 S -(m) -2.003 3.000 S -(e) 7.330 3.000 S -( ) 12.656 3.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(f) -11.663 16.000 S -(r) -7.666 16.000 S -(o) -3.670 16.000 S -(m) 2.329 16.000 S - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(") -13.561 29.000 S -(o) -8.663 29.000 S -(n) -2.663 29.000 S -(e) 3.336 29.000 S -(") 8.663 29.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 245.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 299.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 353.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 76.000 245.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 76.000 299.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 245.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 299.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 353.000 0.000 0.000 18.000 36.000 rect -%@EndOval -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 299.000 49.000 281.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 353.000 49.000 335.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 407.000 49.000 389.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 299.000 85.000 281.000 85.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 407.000 85.000 335.000 85.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 299.000 121.000 281.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 353.000 121.000 335.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 407.000 121.000 389.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 40.000 407.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 76.000 407.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 112.000 407.000 0.000 0.000 18.000 36.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 49.000 443.000 49.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 85.000 443.000 85.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 452.000 121.000 443.000 121.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -369.000 156.557 moveto -/Triangular 14.099 7.049 false 0.000 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 396.000 156.557 371.000 156.557 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.500 257.500 0.000 0.000 16.000 10.110 rect -%@EndRect -gsave -262.555 49.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(w) -5.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.500 310.500 0.000 0.000 16.000 14.000 rect -%@EndRect -gsave -317.500 48.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -7.000 4.000 S -(h) 0.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 40.500 367.500 0.000 0.000 16.000 7.000 rect -%@EndRect -gsave -371.000 48.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(n) -3.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.500 261.500 0.000 0.000 16.000 3.889 rect -%@EndRect -gsave -263.444 85.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -1.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 76.500 308.500 0.000 0.000 16.000 17.110 rect -%@EndRect -gsave -317.055 84.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -8.000 4.000 S -(w) -1.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 258.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -263.944 120.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -5.000 4.000 S -(h) -1.110 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 314.500 0.000 0.000 16.000 4.662 rect -%@EndRect -gsave -316.831 120.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(r) -2.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 112.500 366.500 0.000 0.000 16.000 10.889 rect -%@EndRect -gsave -371.944 120.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -5.000 4.000 S -(y) -1.110 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 41.500 411.500 0.000 0.000 16.000 20.213 rect -%@EndRect -gsave -421.606 49.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(o) -10.000 4.000 S -(n) -3.000 4.000 S -(e) 4.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.500 410.500 0.000 0.000 16.000 27.979 rect -%@EndRect -gsave -424.489 121.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.000 4.000 S -(h) -9.110 4.000 S -(r) -2.110 4.000 S -(e) 2.551 4.000 S -(e) 8.765 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.500 412.500 0.000 0.000 16.000 30.000 rect -%@EndRect -gsave -427.500 85.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -15.000 4.000 S -(w) -11.110 4.000 S -(o) -1.000 4.000 S -grestore -%@EndText -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 94.000 65.500 0.000 0.000 16.000 119.000 rect -%@EndRect -gsave -125.000 102.000 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(B) -43.813 4.000 S -(e) -34.476 4.000 S -(f) -28.262 4.000 S -(o) -23.600 4.000 S -(r) -16.600 4.000 S -(e) -11.937 4.000 S -( ) -5.724 4.000 S -( ) -2.224 4.000 S -( ) 1.275 4.000 S -( ) 4.775 4.000 S -( ) 8.275 4.000 S -( ) 11.775 4.000 S -(A) 15.275 4.000 S -(f) 25.386 4.000 S -(t) 30.048 4.000 S -(e) 33.937 4.000 S -(r) 40.151 4.000 S -grestore -%@EndText -restore -%%Trailer -end diff --git a/HTKBook/HTKFigs/wtacc.eps b/HTKBook/HTKFigs/wtacc.eps deleted file mode 100644 index 41d6d81..0000000 --- a/HTKBook/HTKFigs/wtacc.eps +++ /dev/null @@ -1,169 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: wtacc.fig -%%Creator: fig2dev Version 3.1 Patchlevel 2 -%%CreationDate: Wed Mar 6 17:30:57 1996 -%%For: dgo@ecrlhp1 (Dave Ollason) -%Magnification: 1.05 -%%Orientation: Portrait -%%BoundingBox: 0 0 249 96 -%%Pages: 0 -%%BeginSetup -%%IncludeFeature: *PageSize Letter -%%EndSetup -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --55.0 134.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def - /DrawEllipse { - /endangle exch def - /startangle exch def - /yrad exch def - /xrad exch def - /y exch def - /x exch def - /savematrix mtrx currentmatrix def - x y tr xrad yrad sc 0 0 1 startangle endangle arc - closepath - savematrix setmatrix - } def - -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n 0 792 m 0 0 l 612 0 l 612 792 l cp clip - 0.06299 0.06299 sc -7.500 slw -% Polyline -n 900 900 m 2100 900 l 2100 2100 l 900 2100 l cp gs col-1 s gr -% Polyline -n 900 1200 m 2100 1200 l gs col-1 s gr -% Polyline -n 900 1500 m 2100 1500 l gs col-1 s gr -% Polyline -n 900 1800 m 2100 1800 l gs col-1 s gr -% Polyline -n 2700 900 m 4800 900 l 4800 1200 l 2700 1200 l cp gs col-1 s gr -% Polyline -n 3000 900 m 3000 1200 l gs col-1 s gr -% Polyline -n 3300 900 m 3300 1200 l gs col-1 s gr -% Polyline -n 3600 900 m 3600 1200 l gs col-1 s gr -% Polyline -n 3900 900 m 3900 1200 l gs col-1 s gr -% Polyline -n 4200 900 m 4200 1200 l gs col-1 s gr -% Ellipse -n 1950 1050 84 84 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col-1 s gr - -% Polyline -n 4500 900 m 4500 1200 l gs col-1 s gr -/Times-Roman ff 180.00 scf sf -1500 1425 m -gs 1 -1 sc (= 4.6) col-1 sh gr -% Polyline -gs clippath -2553 1020 m 2673 1050 l 2553 1080 l 2715 1080 l 2715 1020 l cp clip -n 1950 1050 m 2700 1050 l gs col7 0.00 shd ef gr gs col-1 s gr gr - -% arrowhead -n 2553 1020 m 2673 1050 l 2553 1080 l 2553 1050 l 2553 1020 l cp gs 0.00 setgray ef gr col-1 s -/Times-Roman ff 180.00 scf sf -1200 750 m -gs 1 -1 sc (WtAcc) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1125 m -gs 1 -1 sc (c) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1425 m -gs 1 -1 sc (occ) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 1725 m -gs 1 -1 sc (prob) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1200 2025 m -gs 1 -1 sc (time) col-1 sh gr -/Times-Roman ff 180.00 scf sf -3450 750 m -gs 1 -1 sc ([1 .. M]) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1575 2025 m -gs 1 -1 sc (= 15) col-1 sh gr -/Times-Roman ff 180.00 scf sf -1575 1725 m -gs 1 -1 sc (= -0.2) col-1 sh gr -$F2psEnd -rs diff --git a/HTKBook/HTKFigs/xwrdnet.eps b/HTKBook/HTKFigs/xwrdnet.eps deleted file mode 100644 index 15c77c6..0000000 --- a/HTKBook/HTKFigs/xwrdnet.eps +++ /dev/null @@ -1,2813 +0,0 @@ -%!PS-Adobe-2.0 EPSF-1.2 -%%Title: xwrdnet.eps -%%Creator: CLARIS EPSF Export Filter V1.0 -%%CreationDate:9/1/95 11:53:19 a.m. -%%BoundingBox: 17.500 546.062 486.500 740.937 -%%QDBoundingBox: 17.500 51.062 486.500 245.937 -%%DocumentFonts: Times-Roman -%%DocumentProcessColors: Cyan Magenta Yellow Black -%%ObjectsIncluded: tText=T tLine=T tRect=T tRRect=F tOval=T tArc=T tFree=F tPoly=F tBMap=F tNote=F tBez=F tPMap=F -%%AttributesIncluded: kBaWPattType=T kPixPattType=F kGradientType=F -%%EndComments -/MAV 300 dict def -MAV begin -/useClip true def -/top 0 def -/left 1 def -/bottom 2 def -/right 3 def -/CM 6 array def -/CTM 6 array def -/CTMR 6 array def -/MTC 6 array def -/blimit 1500 def -/bcnt 0 def -/rbox 8 array def -/segbox 8 array def -/bbox1 4 array def -/c1 3 array def -/c2 3 array def -/d 3 array def -/delta 3 array def -/mycurrentrgbcolor 3 array def -/ulx 0 def -/uly 1 def -/llx 2 def -/lly 3 def -/urx 4 def -/ury 5 def -/lrx 6 def -/lry 7 def -/sp [0 0] def -/ep [0 0] def -/bbox 4 array def -/pbox 4 array def -/scrnProc currentscreen 3 1 roll pop pop def -/currentcolorscreen where { -begin -currentcolorscreen -end -3 1 roll pop pop -4 2 roll pop pop -5 -2 roll pop pop -6 -2 roll pop pop -/kProc exch def -/bProc exch def -/gProc exch def -/rProc exch def -} if -/Max {2 copy gt {pop}{exch pop} ifelse} bind def -/cellPenW 72.0 /currentcolorscreen where -{begin currentcolorscreen end pop pop -10 1 roll pop pop 8 1 roll pop pop - 6 1 roll pop pop Max Max Max } -{currentscreen pop pop} ifelse div 2.0 div def -%%BeginProcSet : rect -/rect { - /saveobj save def - R PC PF LC SS - saveobj restore -} bind def -%%EndProcSet -%%BeginProcSet : R -/R { - newpath - pbox astore pop - 0 792 translate 1 -1 scale CTMR currentmatrix pop exch translate - /objectCord mstore def - pbox right get 2 div - dup pbox left get exch sub - pbox left 3 -1 roll put - dup pbox right 3 -1 roll put - pbox bottom get 2 div - dup pbox top get exch sub - pbox top 3 -1 roll put - dup pbox bottom 3 -1 roll put - translate - CTM currentmatrix pop - 57.3 mul rotate - RT -} bind def -%%EndProcSet -%%BeginProcSet : SaveScreenBW - /SaveScreenBW { - currentscreen - /scrnProc exch def - /scrnAngle exch def - /scrnFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreScreenBW - /RestoreScreenBW { - scrnFreq scrnAngle MAV /scrnProc get setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleBW - /SetFreqAngleBW { - currentscreen - 3 1 roll - pop pop - setscreen - } bind def -%%EndProcSet -%%BeginProcSet : SaveScreenColor - /SaveScreenColor { - currentcolorscreen - /grayProc exch def - /grayAngle exch def - /grayFreq exch def - /bProc exch def - /bAngle exch def - /bFreq exch def - /gProc exch def - /gAngle exch def - /gFreq exch def - /rProc exch def - /rAngle exch def - /rFreq exch def - } bind def -%%EndProcSet -%%BeginProcSet : RestoreColorScreen - /RestoreColorScreen { - rFreq rAngle MAV /rProc get gFreq gAngle MAV /gProc get bFreq bAngle MAV /bProc get grayFreq grayAngle MAV /grayProc get setcolorscreen - } bind def -%%EndProcSet -%%BeginProcSet : SetFreqAngleColor - /SetFreqAngleColor { - currentcolorscreen - 3 1 roll pop pop - 4 2 roll pop pop - 5 -2 roll pop pop - 6 -2 roll pop pop - 4 1 roll - 6 1 roll - 8 1 roll - 10 1 roll - setcolorscreen - } bind def -%%EndProcSet -/initmsaverestore { -userdict begin -/mdict 10 dict def -mdict begin -/mindex -1 def -/mstacksize 25 def -/mstack mstacksize array def -/incmindex { -/mindex mindex 1 add def -} bind def -/decmindex { -/mindex mindex 1 sub def -} bind def -/checkmindex { -mindex 0 lt { -(%ERROR: msave/mrestore stack underflow: Offending command 'mrestore' -) print flush -stop -} -{ -mindex mstacksize ge { -(%ERROR: msave/mrestore stack overflow: Offending command 'msave' -) print flush -stop -} if -} ifelse -} bind def -/mpush { -incmindex -checkmindex -mstack mindex -3 -1 roll put -} bind def -/mpop { -checkmindex -mstack mindex get -decmindex -} bind def -end -end -} bind def -/msave { -mdict begin -matrix currentmatrix mpush -end -} bind def -/mrestore { -mdict begin -mpop setmatrix -end -} bind def -/msavelevel { -mdict begin -mindex 1 add -end -} bind def -/mstore { -matrix currentmatrix -} bind def -/AutoSizeY { -0 0 pl -dup 3 1 roll -4 -1 roll -add -pl exch pop -exch sub -} bind def -/pl { -transform -0.25 sub round 0.25 add exch -0.25 sub round 0.25 add exch -itransform -} bind def -/pll { -transform -round exch -round exch -itransform -} bind def -/pr { -dtransform -round exch -round exch -idtransform -} bind def -/m { -pl moveto -} bind def -/l { -pl lineto -} bind def -/c { -pl curveto -} bind def -/rm { -pr rmoveto -} bind def -/rl { -pr rlineto -} bind def -/ar { -5 -2 roll pl -5 2 roll -arc -} bind def -/an { -5 -2 roll pl -5 2 roll -arcn -} bind def -/MakePatternFont { -/FontDict 20 dict def -FontDict begin -/FontName exch def -/Encoding exch def -/FontMatrix [1 0 0 1 0 0 ] def -/FontType 3 def -/FontBBox [ 0 0 1 1 ] def -/PatternDict exch def -/RenderPattern { -patternDict exch get -exec -} bind def -/BuildChar { -exch begin -1 0 0 0 1 1 setcachedevice -Encoding exch get RenderPattern -end -} bind def -FontName FontDict definefont pop -end -} bind def -/SnapToPattenGrid - { - exch - dup 0 lt { - 1 index sub - } if - 1 index - div truncate - mul -} bind def -/FillPatternString { -dup length -1 sub -0 1 3 -1 roll { -2 index -2 index -3 -2 roll -put -} for -pop pop -} bind def -/AutoSizeY { - 0.0 exch dtransform - round - idtransform exch pop -} bind def - /AutoSizeX { - 0.0 dtransform - exch - round - exch - idtransform pop -} bind def -/AutoCellSize { - AutoSizeY - exch - AutoSizeX - exch -} bind def -/CheckPath { - false - { pop pop pop true exit} - { pop pop pop true exit} - { pop pop pop pop pop pop pop true exit} - { pop true exit} - pathforall -} bind def -/PatternFill { % patternCharacter - /patternString 1 string def - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /patternSize exch 24.0 mul def - /PatternSizeX exch 24.0 mul patternString length mul def - /flaterror 0 def - patternString FillPatternString - gsave - flaterror 1 add setflat - flattenpath - pathbbox - grestore - psy add flaterror add psy SnapToPattenGrid - exch psx add flaterror add psx SnapToPattenGrid - 3 -1 roll flaterror sub psy SnapToPattenGrid - 4 -1 roll flaterror sub psx SnapToPattenGrid - 4 2 roll pll - 4 2 roll pll - /llxsnap exch def - /llysnap exch def - /urxsnap exch def - /urysnap exch def - gsave - useClip true eq {clip}{eoclip} ifelse newpath - /PatternFont findfont [psx 0.0 0.0 psy 0.0 0.0] makefont setfont - llysnap patternSize urysnap { - llxsnap exch moveto - llxsnap PatternSizeX urxsnap { - pop - patternString show - %currentpoint am - } for - } bind for - grestore - cm setmatrix -} bind def % End 'PatternFill' -/DefaultPatternFont { - /cm mstore def - patternMatrix setmatrix - 1 1 AutoCellSize - dup 0 eq { pop 1} if - exch - dup 0 eq { pop 1} if - exch - /psy exch iSizeY mul def - /psx exch iSizeX mul def - /patternDict 64 dict def - patternDict begin - /NotDef {} def - /LiteDiagLines { - iSizeX iSizeY false [iSizeX 0.0 0.0 iSizeY -1.0 mul 0.0 iSizeY] - {pat} - imagemask - } bind def - end - /CustEncoding 256 array def - 0 255 1 { - CustEncoding exch /NotDef put - } bind for - CustEncoding 65 /LiteDiagLines put - patternDict CustEncoding /PatternFont MakePatternFont - /pathSegProc { - strokepath - CheckPath { - 65 PatternFill newpath - } if - } bind def - cm setmatrix -} bind def -/XRound { - dup - 3 -1 roll - exch mul round - exch div -} bind def -/RoundMatrix { - /i 0 def - dup { - 100000.0 XRound - 1 index - exch i exch put - /i i 1 add def - } forall -} bind def -/GetBoxesRatio { -3 -1 roll sub -7 1 roll -exch sub -6 1 roll -3 -1 roll sub -5 1 roll -exch sub -4 1 roll -3 -1 roll div -3 1 roll -exch div -exch -} bind def -%%BeginProcSet : Text Attributes Procs -/T {792 exch sub} bind def -/sx 0 def -/sy 0 def -/ex 0 def -/ey 0 def -/lw 0 def -/siz 0 def -/U {gsave 0 setlinecap -/lw siz 0.078125 mul def /ey exch neg def /ex exch def /sy exch neg def /sx exch def -fontkind plain eq - { - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - } - { - currentdict /outlineFontSize known outlineFontSize 0 gt and - { - fontkind outline eq - { - /sy sy 0.0119444 siz mul sub def - /ey ey 0.0119444 siz mul sub def - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - fontkind shadow eq fontkind outlineshadow eq or - { - /sy sy 0.0358332 siz mul sub def - /ey ey 0.0358332 siz mul sub def - lw setlinewidth - lw 2 div sx add sy - lw 2 div sub moveto - lw 2 div ex add ey - lw 2 div sub lineto stroke - gsave - 1 1 1 setrgbcolor lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto stroke - grestore - lw siz 0.0119444 mul sub setlinewidth sx sy moveto ex ey lineto - strokepath 0.0119444 siz mul setlinewidth stroke - } if - } if - } ifelse -grestore} bind def -/plain 1 def -/outline 2 def -/shadow 3 def -/outlineshadow 4 def -/fess { - currentdict /outlineFontSize known { - /outlineFontSize 2 index def - } if - findfont exch dup /siz exch def scalefont setfont -} bind def -/SHDW {gsave siz oldfontname fess siz 0.055 mul x add y siz 0.05 mul sub moveto c show grestore} def -/NRML {gsave 1 1 1 setrgbcolor siz oldfontname fess x y moveto c show grestore siz /Outline fess x y moveto c show} def -/S { -fontkind plain eq {neg moveto show} if -fontkind outline eq {neg /y exch def /x exch def /c exch def NRML} if -fontkind shadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -fontkind outlineshadow eq {neg /y exch def /x exch def /c exch def SHDW NRML} if -} bind def -/F { -/fontkind exch def -fontkind plain eq {fess} if -fontkind outline eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind shadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -fontkind outlineshadow eq {dup /oldfontname exch def exch dup /siz exch def exch OLF} if -} bind def -/makeoutlinedict 15 dict def -/makeoutlinefont - { - makeoutlinedict begin - /uniqueid exch def - /strokewidth exch def - /newfontname exch def - /basefontname exch def - /basefontdict basefontname findfont def - /numentries basefontdict maxlength 1 add def - basefontdict /UniqueID known not - {/numentries numentries 1 add def} if - /outfontdict numentries dict def - basefontdict - { - exch dup /FID ne {exch outfontdict 3 1 roll put} {pop pop} ifelse - }forall - outfontdict /FontName newfontname put - outfontdict /PaintType 2 put - outfontdict /StrokeWidth strokewidth put - outfontdict /UniqueID uniqueid put - newfontname outfontdict definefont pop - end - }def -/UID { - findfont dup /UniqueID known - {/UniqueID get 1 add} - {pop 1} - ifelse -} def -/OLF { -dup -/Outline -1000 62 div -4 -1 roll -UID -/outlineFontSize 5 index def -makeoutlinefont -/Outline findfont exch scalefont setfont -} def -/CopyEncoding { -findfont -/Encoding get -dup length array -/tarrayz exch def -tarrayz 0 -3 -1 roll -putinterval -tarrayz -} bind def -/Re-encode { -dup length array copy -/eap 0 def -exch { -dup type /integertype eq { -/eap exch def -} { -1 index -exch -eap exch -put -/eap eap 1 add def -} ifelse -} forall -} bind def -/EncodeFont { -findfont dup -length dict -begin -{ 1 index /FID ne -{ def } -{ pop pop } ifelse -} forall -/FontName exch def -/Encoding exch def -FontName currentdict -end -definefont pop -} bind def -%%EndProcSet -%%BeginProcSet : clip2pathbbox -/clip2pathbbox { - /magicNum linewidth 2 div 1 2 sqrt div mul def - pathbbox - /urymn exch magicNum add def - /urxmn exch magicNum add def - /llymn exch magicNum sub def - /llxmn exch magicNum sub def - newpath llxmn llymn moveto llxmn urymn lineto urxmn urymn lineto urxmn llymn lineto - closepath clip newpath -} bind def -%%EndProcSet -%% Line takes the following arguments: -%% linewidth xEnd yEnd xStart yStart -%%BeginProcSet : Line -/Line { -MAV /LC get length 0 ne -{ - gsave - newpath - MAV /ArrowType get length 0 eq - MAV /SD get length 0 eq and - {2 setlinecap /UseClip {clip2pathbbox} def } - {0 setlinecap /UseClip {} def } ifelse - 0 792 translate - 1 -1 scale - CTM currentmatrix pop - /yStart exch def /xStart exch def /yEnd exch def /xEnd exch def /linewidth exch def - MAV /ArrowType get length 0 eq xStart xEnd ne yStart yEnd ne and and - {xStart yStart moveto xEnd yEnd lineto UseClip xStart yStart moveto xEnd yEnd lineto} - {xStart yStart moveto xEnd yEnd lineto} ifelse - linewidth setlinewidth SD strokepath - CheckPath {LC PF ArrowType} if - grestore -} -{pop pop pop pop pop} ifelse -} bind def -/CompensateForStroke { - sin currentlinewidth mul - exch - cos currentlinewidth mul - dup 0 translate - 4 -1 roll exch 2.0 mul sub - 3 1 roll - 2.0 mul sub -} bind def -/arrowdict 10 dict def -arrowdict begin - /SwallowTail { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - .666 0.0 lineto - 1.0 .5 lineto - closepath - } bind def - /Triangular { - newpath - 0.0 0.0 moveto - 1.0 -.5 lineto - 1.0 .5 lineto - closepath - } bind def - /OpenTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - } bind def - /ClosedTri { - newpath - 1.0 0.5 moveto - 0.0 0.0 lineto - 1.0 -0.5 lineto - closepath - } bind def - /SlashBar { - newpath - 0.5 -.5 moveto - -.5 0.5 lineto - } bind def - /Dot { - newpath - 0.5 0.0 moveto - 0 0 1 0 360 arc - closepath - } bind def - /ExtSlashBar { - newpath - 1.0 -.5 moveto - 0.0 0.5 lineto - } bind def -end -/ScaleArrowHead { - 0 0 4 -2 roll - 0 0 1 1 - 8 -4 roll GetBoxesRatio - scale -} bind def -/DrawArrowHead { - gsave - [] 0 setdash - currentpoint translate rotate - { - 4 copy - gsave - initmatrix - 100 200 translate - msave - ScaleArrowHead pop - arrowdict exch get exec - mrestore - strokepath - 0 0 3 index 3 index - pathbbox 8 4 roll - GetBoxesRatio - 4 2 roll - grestore - 3 index 1.0 exch sub - 6 -1 roll - { - 2 index mul - 0 translate - }{ - pop - } ifelse - msave - ScaleArrowHead scale - arrowdict exch get exec - mrestore - strokepath - } { - msave - ScaleArrowHead - arrowdict exch get exec - mrestore - } ifelse - CheckPath { - LC PF - } if - grestore -} bind def -%%EndProcSet -%%BeginProcSet : SR -/SR { - pbox left get pbox top get moveto - pbox right get pbox top get lineto - pbox right get pbox bottom get lineto - pbox left get pbox bottom get lineto - closepath -} bind def -%%EndProcSet -%%BeginProcSet : E -/E { -1.415 setmiterlimit -CM currentmatrix pop -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 0 360 arc closepath -CM setmatrix -} bind def -%%EndProcSet -%%BeginProcSet : A1 -/A1 {msave -pbox right get pbox left get sub abs dup -pbox bottom get pbox top get sub abs dup 3 -1 roll -lt {exch dup 3 -1 roll exch div 1 exch} -{dup 3 -1 roll exch div 1} ifelse scale -0 0 3 -1 roll 2 div 5 -1 roll -90 add 5 -1 roll -90 add arcn -mrestore} bind def -%%EndProcSet -%%BeginProcSet : A2 -/A2 {msave 0 0 moveto A1 closepath mrestore} def -%%EndProcSet -/StripFromFront { -dup length -2 index sub -3 1 roll -exch 3 -1 roll -getinterval -} bind def -/MakePathArray { - /k 0 def - {/k k 1 add def pop pop}{/k k 1 add def pop pop}{/k k 1 add def pop pop pop pop pop pop}{/k k 1 add def }pathforall - k array - /k 0 def - {{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{curveto} 7 array astore 1 index k 3 -1 roll put /k k 1 add def} - {{closepath} 1 array astore 1 index k 3 -1 roll put /k k 1 add def} -pathforall -}bind def -/MakeFlatPathArray { -/k 0 def -{/k k 1 add def pop pop}{/k k 1 add def pop pop}{pop pop pop pop pop pop}{}pathforall -k array -/k 0 def -{{moveto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{{lineto} 3 array astore 1 index k 3 -1 roll put /k k 1 add def} -{ pop pop pop pop pop pop} -{} -pathforall -}bind def -/FractionalLine { -2 index sub -.00001 mul -exch -3 index sub -.00001 mul -4 -1 roll add -3 1 roll -add -} bind def -/calcLineLength { - exch - 4 -1 roll - sub - dup mul - 3 1 roll exch - sub - dup mul - add sqrt -} bind def -/InitTotalLineLength { - /oldY exch def - /oldX exch def - theDash aload pop currentLineLength add setdash -} bind def -/AccumeLineLength { - 3 copy pop - 2 copy - oldX oldY - 4 2 roll calcLineLength - /segmentLength exch def - /currentLineLength currentLineLength segmentLength add def - /oldY exch def - /oldX exch def -} bind def -/DecumeLastLineLength { - /currentLineLength currentLineLength segmentLength sub def -} bind def -/DrawFlattendSegment { - /pointCount 2 def - dup 0 lt { pop 0 } if - fpc - 3 1 roll - 2 index - 1 index - gt { - 2 copy get - dup length - dup 3 eq { - pop - dup 0 get - exch 1 get - 2 copy InitTotalLineLength - m - } { - } ifelse - } { - pop 1 index - } ifelse - dup 1 add - 3 index - exch sub - dup 10 gt { pop 10} if - { - 1 add - 2 copy - get aload pop - AccumeLineLength - exec - } repeat - 3 1 roll pop pop - DecumeLastLineLength -} bind def -/IncFPC { - fpc add - /fpc exch def -} bind def -/DrawFlatPathArray { - fpc - 0 { - dup 2 index - 1 sub - lt { - flatPathArray exch - newpath - 1 sub DrawFlattendSegment - gsave - pathSegProc - grestore - newpath - } - { - pop pop - exit - } ifelse - } loop -} bind def -/RecordFirstSubSegment { - closepathArray 0 pathArray 0 get - put - closepathArray 1 - pathArray 0 get aload pop pop - pathArray 1 get dup length 3 eq { - aload pop pop - } { - newpath - 0 0 moveto - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - segmentArray 1 get aload pop pop - } ifelse - FractionalLine {lineto} 3 array astore - put -} bind def -/AppendClosePath { - closepathArray 0 get 2 {lineto} put - flatPathArray fpc closepathArray 0 get put - 1 IncFPC - flatPathArray fpc closepathArray 1 get put - 1 IncFPC -} bind def -/RecordCurrentDash { - /theDash - currentdash 2 array astore def - /currentLineLength 0 def -} bind def -/PatternStroke { - 0 setlinecap - RecordCurrentDash - /saveFlat currentflat def - .5 setflat - /pathArray MakePathArray def - /closepathArray 2 array def - /pathLength pathArray length def - /flatPathArray 513 array def - /currentLineLength 0 def - /fpc 0 def - pathArray pathLength 1 sub get - length 1 eq { - /usingClosepath true def - RecordFirstSubSegment - /pathLength pathLength 1 sub def - } { - /usingClosepath false def - } ifelse - 0 1 pathLength 1 sub { - pathArray exch get - dup length 3 eq { - fpc 1 add 512 ge { - DrawFlatPathArray - fpc 2 ge { - flatPathArray flatPathArray fpc 2 sub get 0 put - flatPathArray flatPathArray fpc 1 sub get 1 put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } if - flatPathArray exch fpc exch put - 1 IncFPC - } { - dup length 7 eq { - newpath - /nToStrip 0 def - fpc 1 gt { - flatPathArray fpc 2 sub get aload pop pop m - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } { - fpc 1 eq { - flatPathArray fpc 1 sub get aload pop exec - /nToStrip 2 def - } if - } ifelse - aload pop exec - /segmentArray flattenpath MakeFlatPathArray def - /segmentArray nToStrip segmentArray StripFromFront def - segmentArray length fpc add 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - segmentArray length 512 lt { - flatPathArray fpc segmentArray putinterval - segmentArray length IncFPC - } { - segmentArray length - /exitLoop false def - 0 - { - 2 copy sub - dup 500 gt { - pop 500 - } { - /exitLoop true def - } ifelse - segmentArray 2 index 2 index getinterval - flatPathArray fpc 3 -1 roll putinterval - dup IncFPC - add - exitLoop { - exit - } { - DrawFlatPathArray - fpc 1 gt { - flatPathArray flatPathArray fpc 2 sub get 0 exch put - flatPathArray flatPathArray fpc 1 sub get 1 exch put - /fpc 2 def - }{ - /fpc 0 def - } ifelse - } ifelse - } loop - } ifelse - } ifelse - } if - } ifelse - } for - fpc 0 gt { - usingClosepath { - AppendClosePath - } if - DrawFlatPathArray - } if - saveFlat setflat -} bind def - -%%EndProlog -initmsaverestore -/tctm matrix currentmatrix def -tctm RoundMatrix setmatrix -/patternMatrix mstore def -10 setmiterlimit -2 setlinecap -newpath -% -%tLayer -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 18.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -save -%%IncludeFont: Times-Roman -[ 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis -/Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute -/egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde -/oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex -/udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls -/registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash -/.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef -/.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash -/questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef -/guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe -/endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide -/.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright -/fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand -/Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex -/Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex -/Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla -/hungarumlaut/ogonek/caron] -StandardEncoding Re-encode /_Times-Roman /Times-Roman EncodeFont - -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 30.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -37.113 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) plain F - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 396.000 0.000 0.000 27.000 36.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 141.500 408.500 0.000 0.000 16.000 13.227 rect -%@EndRect -gsave -415.113 149.500 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -6.000 4.000 S -(i) -0.551 4.000 S -(l) 3.337 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.000 450.000 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 142.559 456.841 0.000 0.000 16.000 22.551 rect -%@EndRect -gsave -468.117 150.559 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(E) -10.658 4.000 S -(n) -2.106 4.000 S -(d) 4.893 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 135.109 72.278 0.000 0.000 27.000 36.000 rect -%@EndRect -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 142.669 78.378 0.000 0.000 16.000 26.441 rect -%@EndRect -gsave -91.599 150.669 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(S) -13.121 4.000 S -(t) -5.334 4.000 S -(a) -1.445 4.000 S -(r) 4.768 4.000 S -(t) 9.430 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -72.000 149.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 70.399 149.295 54.000 149.295 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -450.000 149.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 448.399 149.295 432.000 149.295 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.858 163.249 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -176.918 85.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -13.250 4.000 S -(-) -9.360 4.000 S -(b) -4.698 4.000 S -(+) 2.301 4.000 S -(i) 10.196 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 99.000 216.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 104.858 225.286 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -238.954 112.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -13.213 4.000 S -(-) -6.213 4.000 S -(i) -1.551 4.000 S -(+) 2.337 4.000 S -(t) 10.233 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 72.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 77.858 288.212 0.000 0.000 16.000 27.336 rect -%@EndRect -gsave -301.881 85.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -13.287 4.000 S -(-) -9.397 4.000 S -(t) -4.735 4.000 S -(+) -0.845 4.000 S -(b) 7.049 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 113.295 moveto -/Triangular 9.399 5.874 false 156.048 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.537 113.945 198.000 121.295 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -278.000 120.295 moveto -/Triangular 9.399 5.874 false 202.394 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 276.520 119.686 261.000 113.295 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 108.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 122.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 122.295 324.000 122.295 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 114.038 346.784 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -354.174 122.038 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.715 4.000 S -(i) 0.284 4.000 S -(t) 4.174 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 123.000 moveto -/Triangular 9.399 5.874 false 154.994 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.550 123.676 108.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.000 144.000 moveto -/Triangular 9.399 5.874 false 225.016 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 394.868 142.868 369.000 117.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 54.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 54.000 153.000 54.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 54.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 53.999 279.000 54.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.858 158.249 0.000 0.000 16.000 36.674 rect -%@EndRect -gsave -176.586 121.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -18.250 4.000 S -(i) -12.802 4.000 S -(l) -8.912 4.000 S -(-) -5.022 4.000 S -(b) -0.360 4.000 S -(+) 6.639 4.000 S -(i) 14.534 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.000 107.000 moveto -/Triangular 9.399 5.874 false 222.002 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.810 105.929 197.000 89.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 108.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 113.858 285.212 0.000 0.000 16.000 33.564 rect -%@EndRect -gsave -301.995 121.858 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(i) -16.287 4.000 S -(-) -12.397 4.000 S -(t) -7.735 4.000 S -(+) -3.845 4.000 S -(s) 4.049 4.000 S -(i) 9.498 4.000 S -(l) 13.387 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -282.000 92.000 moveto -/Triangular 9.399 5.874 false 141.018 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 280.756 93.006 261.000 109.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 72.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 86.295 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 86.295 324.000 86.295 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 79.038 346.784 0.000 0.000 16.000 14.779 rect -%@EndRect -gsave -354.174 87.038 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -6.715 4.000 S -(i) 0.284 4.000 S -(t) 4.174 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.141 162.249 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -177.473 211.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(t) -14.250 4.000 S -(-) -10.360 4.000 S -(b) -5.698 4.000 S -(+) 1.301 4.000 S -(u) 9.196 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 171.000 216.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 177.141 224.286 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -239.509 185.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -15.213 4.000 S -(-) -8.213 4.000 S -(u) -3.551 4.000 S -(+) 3.448 4.000 S -(t) 11.343 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 198.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 203.141 288.212 0.000 0.000 16.000 30.447 rect -%@EndRect -gsave -303.436 211.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -14.287 4.000 S -(-) -7.287 4.000 S -(t) -2.624 4.000 S -(+) 1.264 4.000 S -(b) 9.160 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -216.000 183.704 moveto -/Triangular 9.399 5.874 false 203.977 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 214.537 183.054 198.000 175.704 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -278.000 176.704 moveto -/Triangular 9.399 5.874 false 157.630 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 276.520 177.313 261.000 183.704 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 162.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 174.704 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 174.704 324.000 174.704 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 166.961 346.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -355.729 174.961 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -153.000 174.000 moveto -/Triangular 9.399 5.874 false 205.030 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 151.550 173.323 108.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -396.000 153.000 moveto -/Triangular 9.399 5.874 false 135.009 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 394.868 154.131 369.000 180.000 Line -%@EndLine -% -%tfBegGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 351.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 216.000 135.000 0.000 0.000 27.000 36.000 rect -setlinecap -%@EndArc -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 369.000 243.000 153.000 243.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 243.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 242.999 279.000 243.000 Line -%@EndLine -% -%tfEndGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 162.000 153.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 168.141 156.249 0.000 0.000 16.000 39.785 rect -%@EndRect -gsave -176.142 176.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(s) -19.250 4.000 S -(i) -13.802 4.000 S -(l) -9.912 4.000 S -(-) -6.022 4.000 S -(b) -1.360 4.000 S -(+) 5.639 4.000 S -(u) 13.534 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -217.000 190.000 moveto -/Triangular 9.399 5.874 false 138.023 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 215.810 191.070 197.000 208.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginOval -/RT {E} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC { /setcmykcolor where - {begin 0.000 0.000 0.000 0.000 setcmykcolor end} {1.000 1.000 1.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -1.000 0 162.000 279.000 0.000 0.000 27.000 45.000 rect -%@EndOval -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 168.141 283.212 0.000 0.000 16.000 36.674 rect -%@EndRect -gsave -301.550 176.141 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(u) -18.287 4.000 S -(-) -11.287 4.000 S -(t) -6.624 4.000 S -(+) -2.735 4.000 S -(s) 5.160 4.000 S -(i) 10.608 4.000 S -(l) 14.498 4.000 S -grestore -%@EndText -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -282.000 205.000 moveto -/Triangular 9.399 5.874 false 219.007 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 280.756 203.993 261.000 188.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginRect -/RT {SR} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {} def -/PC {} def -1.000 0 198.000 342.000 0.000 0.000 27.000 27.000 rect -%@EndRect -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -342.000 210.704 moveto -/Triangular 9.399 5.874 false 180.012 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 340.399 210.704 324.000 210.704 Line -%@EndLine -%@BeginText -%@BeginRect -/RT {SR} def -/LC {} def -/SS {pop} def -/PF {} def -/PC {} def -0.000 0 202.961 346.784 0.000 0.000 16.000 17.889 rect -%@EndRect -gsave -355.729 210.961 T translate -0.0 rotate -1 1 scale -14.000 (_Times-Roman) fess - /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse - -(b) -8.715 4.000 S -(u) -1.715 4.000 S -(t) 5.284 4.000 S -grestore -%@EndText -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 135.000 378.000 99.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 126.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 144.000 369.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 144.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 198.000 126.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 207.000 135.000 207.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 144.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 143.999 261.000 144.000 Line -%@EndLine -% -%tfEndGrp -% -% -%tfBegGrp -% -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 180.000 90.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 189.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 378.000 162.000 378.000 198.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 90.000 0.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 153.000 360.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 135.000 153.000 369.000 153.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 270.000 180.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 135.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 126.000 99.000 126.000 144.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginArc -currentlinecap -0 setlinecap -/RT { 360.000 270.000 A1 gsave} def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PC {} def -/PF {} def -1.000 0 90.000 126.000 0.000 0.000 18.000 18.000 rect -setlinecap -%@EndArc -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ } def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 153.000 90.000 135.000 90.000 Line -%@EndLine -%@BeginRuler -%@ 9.0000000000000000000e+0 viewScale -%@ 1.1111111111111110490e-1 realScale -%@ 8 realDivs -%@ 0000 rulerFormat -%@EndRuler -%@BeginLine -/ArrowType{ -1.000 setlinewidth -252.000 153.000 moveto -/Triangular 9.399 5.874 false 360.025 DrawArrowHead -} bind def -/SD {} def -/SS {setlinewidth SD stroke} def -/LC { /setcmykcolor where - {begin 0.000 0.000 0.000 1.000 setcmykcolor end} {0.000 0.000 0.000 setrgbcolor} ifelse -} def -/PF {gsave fill grestore} def -/SS {setlinewidth SD stroke} def -1.000 253.600 152.999 261.000 153.000 Line -%@EndLine -% -%tfEndGrp -% -restore -%%Trailer -end diff --git a/HTKBook/HTKRef/Cluster.aux b/HTKBook/HTKRef/Cluster.aux deleted file mode 100644 index 71ea54b..0000000 --- a/HTKBook/HTKRef/Cluster.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.1}Cluster}{251}{section.17.1}} -\newlabel{s:Cluster}{{17.1}{251}{Cluster\relax }{section.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.1.1}Function}{251}{subsection.17.1.1}} -\newlabel{s:Cluster-Function}{{17.1.1}{251}{Function\relax }{subsection.17.1.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.1.2}Use}{252}{subsection.17.1.2}} -\newlabel{s:Cluster-Use}{{17.1.2}{252}{Use\relax }{subsection.17.1.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.1.3}Tracing}{253}{subsection.17.1.3}} -\newlabel{s:Cluster-Tracing}{{17.1.3}{253}{Tracing\relax }{subsection.17.1.3}{}} -\@setckpt{HTKRef/Cluster}{ -\setcounter{page}{254} -\setcounter{equation}{0} -\setcounter{enumi}{3} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{1} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{114} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/Cluster.tex b/HTKBook/HTKRef/Cluster.tex deleted file mode 100644 index 73c0529..0000000 --- a/HTKBook/HTKRef/Cluster.tex +++ /dev/null @@ -1,195 +0,0 @@ -% -% Cluster - Gareth Moore 23/01/02 (updated 27/03/02) -% - -\newpage -\mysect{Cluster}{Cluster} - -\mysubsect{Function}{Cluster-Function} - -\index{cluster@\htool{Cluster}|(} -This program is used to statistically cluster words into deterministic -classes. The main purpose of \htool{Cluster} is to optimise a class -map on the basis of the training text likelihood, although it can also -import an existing class map and generate one of the files necessary -for creating a class-based language model from the \HTK\ language -modelling tools. - -Class-based language models use a reduced number of classes relative -to the number of words, with each class containing one or more words, -to allow a language model to be able to generalise to unseen training -contexts. Class-based models also typically require less training -text to produce a well-trained model than a similar complexity word -model, and are often more compact due to the much reduced number of -possible distinct history contexts that can be encountered in the -training data. - -\htool{Cluster} takes as input a set of one or more training text gram -files, which may optionally be weighted on input, and their associated -word map. It then clusters the words in the word map into classes -using a bigram likelihood measure. Due to the computational -complexity of this task a sub-optimal greedy algorithm is used, but -multiple iterations of this algorithm may be performed in order to -further refine the class map, although at some point a local maximum -will be reached where the class map will not change -further.\footnote{On a 65,000 word vocabulary test set with 170 million -words of training text this was found to occur after around 45 -iterations} In practice as few as two iterations may be perfectly -adequate, even with large training data sets. - -The algorithm works by considering each word in the vocabulary in turn -and calculating the change in bigram training text likelihood if the -word was moved from its default class (see below) to each other class -in turn. The word is then moved to the class which increases the -likelihood the most, or it is left in its current class if no such -increase is found. Each iteration of the algorithm considers each -word exactly once. Because this can be a slow process, with typical -execution times measured in terms of a few hours, not a few minutes, -the \htool{Cluster} tool also allows \textit{recovery} files to be written -at regular intervals, which contain the current class map part-way -through an iteration along with associated files detailing at what -point in the iteration the class map was exported. These files are -not essential for operation, but might be desirable if there is a risk -of a long-running process being killed via some external influence. -During the execution of an iteration the tool claims no new -memory,\footnote{other than a few small local variables taken from the -stack as functions are called} so it cannot crash -in the middle of an iteration due to a lack of memory (it can, -however, fail to start an iteration in the first place). - -Before beginning an iteration, \htool{Cluster} places each word either -into a default class or one specified via the \texttt{-l}, import -classmap, or \texttt{-x}, use recovery, options. The default -distribution, given $m$ classes, is to place the most frequent $(m-1)$ -words into singleton classes and then the remainder into the remaining -class. \htool{Cluster} allows words to be considered in either -decreasing frequency of occurrence order, or the order they are -encountered in the word map. The popular choice is to use the former -method, although in experiments it was found that the more random -second approach typically gave better class maps after fewer -iterations in practice.\footnote{Note that these schemes are -approximately similar, since the most frequent words are most likely -to be encountered sooner in the training text and thus occur higher up -in the word map} The \texttt{-w} option specifies this choice. - -During execution \htool{Cluster} will always write a logfile -describing the changes it makes to the classmap, unless you explicitly -disable this using the \texttt{-n} option. If the \texttt{-v} switch -is used then this logfile is written in explicit English, allowing you -to easily trace the execution of the clusterer; without \texttt{-v} -then similar information is exported in a more compact format. - -Two or three special classes are also defined. The sentence start and -sentence end word tokens are always kept in singleton classes, and -optionally the unknown word token can be kept in a singleton class too --- pass the \texttt{-k} option.\footnote{The author always uses this -option but has not empirically tested its efficaciousness} These -tokens are placed in these classes on initialisation and no moves to -or from these classes are ever considered. - -Language model files are built using either the \texttt{-p} or -\texttt{-q} options, which are effectively equivalent if using -the \HTK\ language modelling tools as black boxes. The former creates -a word-given-class probabilities file, whilst the latter stores word -counts and lets the language model code itself calculate the same -probabilities. - -\mysubsect{Use}{Cluster-Use} - -\htool{Cluster} is invoked by the command line -\begin{verbatim} - Cluster [options] mapfile [mult] gramfile [[mult] gramfile ...] -\end{verbatim} -The given word map is loaded and then each of the specified gram files -is imported. The list of input gram files can be interspersed with -multipliers. These are floating-point format numbers which must begin -with a plus or minus character (e.g. \texttt{+1.0}, \texttt{-0.5}, -etc.). The effect of a multiplier \texttt{mult} is to scale the $n$-gram -counts in the following gram files by the factor \texttt{mult}. The -resulting scaled counts are rounded to the nearest integer when -actually used in the clustering algorithm. A multiplier stays in -effect until it is redefined. - -The allowable options to \htool{Cluster} are as follows -\begin{optlist} - - \ttitem{-c n} Use {\tt n} classes. This specifies the number of - classes that should be in the resultant class map. - - \ttitem{-i n} Perform {\tt n} iterations. This is the number of - iterations of the clustering algorithm that should be - performed. (If you are using the {\tt -x} option then - completing the current iteration does not count towards - the total number, so use {\tt -i 0} to complete it and - then finish) - - \ttitem{-k} Keep the special unknown word token in its own - singleton class. If not passed it can be moved to or from - any class. - - \ttitem{-l fn} Load the classmap {\tt fn} at start up and when - performing any further iterations do so from this starting - point. - - \ttitem{-m} Record the running value of the maximum likelihood - function used by the clusterer to optimised the training - text likelihood in the log file. This option is principally - provided for debugging purposes. - - \ttitem{-n} Do not write any log file during execution of an - iteration. - - \ttitem{-o fn} Specify the prefix of all output files. All output - class map, logfile and recovery files share the same filename - prefix, and this is specified via the {\tt -o} switch. The - default is {\tt cluster}. - - \ttitem{-p fn} Write a word-given-class probabilities file. Either - this or the {\tt -q} switch are required to actually build a - class-based language model. The \HTK\ language model library, - \htool{LModel}, supports both probability and count-based - class files. There is no difference in use, although each - allows different types of manual manipulation of the file. - Note that if you do not pass {\tt -p} or {\tt -q} you may - run \htool{Cluster} at a later date using the {\tt -l} and - {\tt -i 0} options to just produce a language model file. - - \ttitem{-q fn} Write a word-given-class counts file. See the - documentation for {\tt -p}. - - \ttitem{-r n} Write recovery files after moving {\tt n} words - since the previous recovery file was written or an iteration - began. Pass {\tt -r n} to disable writing of recovery files. - - \ttitem{-s tkn} Specify the sentence start token. - - \ttitem{-t tkn} Specify the sentence end token. - - \ttitem{-u tkn} Specify the unknown word token. - - \ttitem{-v} Use verbose log file format. - - \ttitem{-w [WMAP/FREQ]} Specify the order in which word moves are - considered. Default is {\tt WMAP} in which words are - considered in the order they are encountered in the word map. - Specifying {\tt FREQ} will consider the most frequent word - first and then the remainder in decreasing order of frequency. - - \ttitem{-x fn} Continue execution from recovery file {\tt fn}. - -\end{optlist} -\stdopts{Cluster} - -\mysubsect{Tracing}{Cluster-Tracing} - -\htool{Cluster} supports the following trace options, where each trace flag is -given using an octal base: -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} report major file operations - good for following start-up. - \ttitem{00004} more detailed progress reporting. - \ttitem{00010} trace memory usage during execution and at end. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{cluster@\htool{Cluster}|)} diff --git a/HTKBook/HTKRef/HBuild.aux b/HTKBook/HTKRef/HBuild.aux deleted file mode 100644 index de5609e..0000000 --- a/HTKBook/HTKRef/HBuild.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.2}HBuild}{254}{section.17.2}} -\newlabel{s:HBuild}{{17.2}{254}{HBuild\relax }{section.17.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.1}Function}{254}{subsection.17.2.1}} -\newlabel{s:HBuild-Function}{{17.2.1}{254}{Function\relax }{subsection.17.2.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.2}Use}{254}{subsection.17.2.2}} -\newlabel{s:HBuild-Use}{{17.2.2}{254}{Use\relax }{subsection.17.2.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.2.3}Tracing}{255}{subsection.17.2.3}} -\newlabel{s:HBuild-Tracing}{{17.2.3}{255}{Tracing\relax }{subsection.17.2.3}{}} -\@setckpt{HTKRef/HBuild}{ -\setcounter{page}{256} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{2} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HBuild.tex b/HTKBook/HTKRef/HBuild.tex deleted file mode 100644 index 7cc01ba..0000000 --- a/HTKBook/HTKRef/HBuild.tex +++ /dev/null @@ -1,129 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\newpage -\mysect{HBuild}{HBuild} - -\mysubsect{Function}{HBuild-Function} - -\index{hbuild@\htool{HBuild}|(} -This program is used to convert input files that represent language -models in a number of different formats and output a standard -\HTK\ lattice. The main purpose of \htool{HBuild} is to allow the -expansion of \HTK\ multi-level lattices and the conversion of -bigram language models (such as those generated by \htool{HLStats}) -into lattice format. - -The specific input file types supported by \htool{HBuild} are: -\begin{enumerate} -\item \HTK\ multi-level lattice files. -\item Back-off bigram files in ARPA/MIT-LL format. -\item Matrix bigram files produced by \htool{HLStats}. -\item Word lists (to generate a word-loop grammar). -\item Word-pair grammars in ARPA Resource Management format. -\end{enumerate} - -The formats of both types of bigram supported by \htool{HBuild} -are described in Chapter~\ref{c:netdict}. The format for multi-level -\HTK\ lattice files is described in Chapter~\ref{c:htkslf}. - -\mysubsect{Use}{HBuild-Use} - -\htool{HBuild} is invoked by the command line -\begin{verbatim} - HBuild [options] wordList outLatFile -\end{verbatim} -The {\tt wordList} should contain a list of all the words used -in the input language model. The options specify the type of input -language model as well as the source filename. If none of the flags -specifying input language model type are given a simple word-loop -is generated using the {\tt wordList} given. After processing the -input language model, the resulting lattice -is saved to file {\tt outLatFile}. - -The operation of \htool{HBuild} is controlled by the following -command line options -\begin{optlist} - \ttitem{-b} Output the lattice in binary format. This increases - speed of subsequent loading (default ASCII text lattices). - - \ttitem{-m fn} The matrix format bigram in {\tt fn} forms the input - language model. - - \ttitem{-n fn} The ARPA/MIT-LL format back-off bigram in {\tt fn} - forms the input language model. - - \ttitem{-s st en} Set the bigram entry and exit words to {\tt st} - and {\tt en}. (Default {\tt !ENTER} and {\tt !EXIT}). - Note that no words will follow the exit word, or precede - the entry word. Both the entry and exit word must be included - in the {\tt wordList}. This option is only effective in conjunction - with the \texttt{-n} option. - - \ttitem{-t st en} This option is used with word-loops and word-pair - grammars. - An output lattice is produced with an initial word-symbol - {\tt st} (before the loop) and a final word-symbol {\tt en} - (after the loop). This allows initial and final silences - to be specified. (Default is that the initial and final nodes - are labelled with {\tt !NULL}). Note that {\tt st} and {\tt en} - shouldn't be included in the {\tt wordList} unless they occur - elsewhere in the network. This is only effective for word-loop and - word-pair grammars. - - \ttitem{-u s} The unknown word is {\tt s} (default !NULL). This - option only has an effect when bigram input language models - are specified. It can be used in conjunction with the {\tt -z} - flag to delete the symbol for unknown words from the output - lattice. - - \ttitem{-w fn} The word-pair grammar in {\tt fn} - forms the input language model. The file must be in - the format used for the ARPA Resource Management grammar. - - \ttitem{-x fn} The extended HTK lattice in {\tt fn} - forms the input language model. This option is - used to expand a multi-level lattice into a single - level lattice that can be processed by other \HTK\ tools. - - \ttitem{-z} Delete (zap) any references to the unknown word (see {\tt -u} - option) in the output lattice. - -\end{optlist} -\stdopts{HBuild} - -\mysubsect{Tracing}{HBuild-Tracing} - -\htool{HBuild} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hbuild@\htool{HBuild}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HCompV.aux b/HTKBook/HTKRef/HCompV.aux deleted file mode 100644 index c89c24f..0000000 --- a/HTKBook/HTKRef/HCompV.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.3}HCompV}{256}{section.17.3}} -\newlabel{s:HCompV}{{17.3}{256}{HCompV\relax }{section.17.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.1}Function}{256}{subsection.17.3.1}} -\newlabel{s:HCompV-Function}{{17.3.1}{256}{Function\relax }{subsection.17.3.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.2}Use}{256}{subsection.17.3.2}} -\newlabel{s:HCompV-Use}{{17.3.2}{256}{Use\relax }{subsection.17.3.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.3.3}Tracing}{257}{subsection.17.3.3}} -\newlabel{s:HCompV-Tracing}{{17.3.3}{257}{Tracing\relax }{subsection.17.3.3}{}} -\@setckpt{HTKRef/HCompV}{ -\setcounter{page}{258} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{3} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HCompV.tex b/HTKBook/HTKRef/HCompV.tex deleted file mode 100644 index 365f968..0000000 --- a/HTKBook/HTKRef/HCompV.tex +++ /dev/null @@ -1,188 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 11/11/95 -% - - -\newpage -\mysect{HCompV}{HCompV} - -\mysubsect{Function}{HCompV-Function} - -\index{hcompv@\htool{HCompV}|(} -This program will calculate the global mean and covariance -of a set of training data. It is primarily used to initialise -the parameters of a HMM such that all component means and all covariances -are set equal to the global data mean and covariance. This might form -the first stage of a \textit{flat start} training scheme -where all models are initially given the same parameters. -Alternatively, the covariances may be used as the basis for Fixed -Variance and Grand Variance training schemes. These can sometimes be -beneficial in adverse conditions where a fixed covariance matrix can -give increased robustness. - -When training large model sets from limited data, setting a floor -is often necessary to prevent variances being badly underestimated -through lack of data. One way of doing this is to define -a variance macro called \texttt{varFloorN} -where \texttt{N} is the stream index. \htool{HCompV} can also be -used to create these variance floor macros with values equal to -a specified fraction of the global variance. - -Another application of \htool{HCompV} is the estimation of mean and variance -vectors for use in cluster-based mean and variance normalisation -schemes. Given a list of utterances and a speaker pattern -\htool{HCompV} will estimate a mean and a variance for each speaker. - -\mysubsect{Use}{HCompV-Use} - -\htool{HCompV} is invoked via the command line -\begin{verbatim} - HCompV [options] [hmm] trainFiles ... -\end{verbatim} -where \texttt{hmm} is the name of the physical HMM whose parameters -are to be initialised. Note that no HMM name needs to be specified -when cepstral mean or variance vectors are estimated (\texttt{-c} -option). The effect of this command is to compute the covariance of -the speech training data and then copy it into every Gaussian -component of the given HMM definition. If there are multiple data -streams, then a separate covariance is estimated for each stream. The -HMM can have a mix of diagonal and full covariances and an option -exists to update the means also. The HMM definition can be contained -within one or more macro files loaded via the standard \texttt{-H} -option. Otherwise, the definition will be read from a file called -\texttt{hmm}. Any tyings in the input definition will be preserved in -the output. By default, the new updated definition overwrites the -existing one. However, a new definition file including any macro -files can be created by specifying an appropriate target directory -using the standard \texttt{-M} option. - -In addition to the above, an option \texttt{-f} is provided to compute -variance floor macros equal to a specified fraction -of the global variance. In this case, the newly created macros are -written to a file called \texttt{vFloors}. -For each stream \texttt{N} defined for \texttt{hmm}, a variance macro -called \texttt{varFloorN} is created. -If a target directory is specified -using the standard \texttt{-M} option then the new file will be written -there, otherwise it is written in the current directory. - -The list of train files can be stored in a script file if required. -Furthermore, the data used for estimating the global -covariance can be limited to that corresponding to a specified label. - - -The calculation of cluster-based mean and variances estimates is -enabled by the option \texttt{-c} which specifies the output directory -where the estimated vectors should be stored. - -The detailed operation of \htool{HCompV} is controlled by the following -command line options -\begin{optlist} - \ttitem{-c s} Calculate cluster-based mean/variance estimate and - store results in the specified directory. - - \ttitem{-k s} Speaker pattern for cluster-based mean/variance - estimation. Each utterance filename is matched against the pattern - and the characters that are matched against \verb|%| are used as the - cluster name. One mean/variance vector is estimated for each - cluster. - - \ttitem{-p s} Path pattern for cluster-based mean/variance - estimation. Each utterance filename is matched against the pattern - and the characters that are matched against \verb|%| are spliced to - the end of the directory string specified with option `-c' for the final - mean/variance vectors output. - - \ttitem{-q s} For cluster-based mean/variance estimation different - types of output can be requested. Any subset of the letters - \texttt{nmv} can be specified. Specifying \texttt{n} causes the - number of frames in a cluster to be written to the output file. - \texttt{m} and \texttt{v} cause the mean and variance vectors to be - included, respectively. - - \ttitem{-f f} Create variance floor macros with values equal to - \texttt{f} times the global variance. One macro is created for - each input stream and the output is stored in a file - called \texttt{vFloors}. - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HCompV} searches - through all of the training files and uses only the speech - frames from segments with the given label. When this option is not - used, \htool{HCompV} uses - all of the data in each training file. - - \ttitem{-m} The covariances of the output HMM are always updated - however updating the means must be specifically requested. When - this option is set, \htool{HCompV} updates all the HMM component - means with the sample mean computed from the training files. - - \ttitem{-o s} The string {\tt s} is used as the name of the output - HMM in place of the source name. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal elements of - the covariance matrix) to the real value {\tt f} (default value - 0.0). - -\stdoptB -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HCompV} - -\mysubsect{Tracing}{HCompV-Tracing} - -\htool{HCompV} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show covariance matrices. - \ttitem{00004} trace data loading. - \ttitem{00010} list label segments. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hcompv@\htool{HCompV}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HCopy.aux b/HTKBook/HTKRef/HCopy.aux deleted file mode 100644 index 5bac4ff..0000000 --- a/HTKBook/HTKRef/HCopy.aux +++ /dev/null @@ -1,40 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.4}HCopy}{258}{section.17.4}} -\newlabel{s:HCopy}{{17.4}{258}{HCopy\relax }{section.17.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.4.1}Function}{258}{subsection.17.4.1}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.4.2}Use}{258}{subsection.17.4.2}} -\newlabel{t:validcons}{{17.1}{259}{Use\relax }{tabctr.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.4.3}Trace Output}{260}{subsection.17.4.3}} -\@setckpt{HTKRef/HCopy}{ -\setcounter{page}{261} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{4} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HCopy.tex b/HTKBook/HTKRef/HCopy.tex deleted file mode 100644 index 536240d..0000000 --- a/HTKBook/HTKRef/HCopy.tex +++ /dev/null @@ -1,205 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\newpage -\mysect{HCopy}{HCopy} - -\subsection{Function} - -\index{hcopy@\htool{HCopy}|(} -This program will copy one or more data files to a designated output -file, optionally converting the data into a parameterised form. While -the source files can be in any supported format, the output format is -always \HTKFF. By default, the whole of the source file is copied to -the target but options exist to only copy a specified segment. Hence, -this program is used to convert data files in other formats to the \HTKFF\ -format, to concatenate or segment data files, and to parameterise the -result. If any option is set which leads to the extraction of a segment -of the source file rather than all of it, then segments will be -extracted from all source files and concatenated to the target. - -Labels will be copied/concatenated if any of the options indicating -labels are specified (\texttt{-i -l -x -G -I -L -P -X}). In this case, each -source data file must have an associated label file, and a target label -file is created. The name of the target label file is the root name of -the target data file with the extension \texttt{.lab}, unless the \texttt{-X} -option is used. This new label file will contain the appropriately -copied/truncated/concatenated labels to correspond with the target data -file; all start and end boundaries are recalculated if necessary. - -When used in conjunction with \htool{HSLab}, \htool{HCopy} provides a facility for tasks -such as cropping silence surrounding recorded utterances. Since input -files may be coerced, \htool{HCopy} can also be used to convert the parameter -kind of a file, for example from WAVEFORM to MFCC, depending on the -configuration options. -Not all possible conversions can actually be performed; see Table~\href{t:validcons} for a list of valid conversions. Conversions must be specified via a configuration file as described in chapter~\ref{c:speechio}. Note also that the parameterisation qualifier \texttt{\_N} cannot be used when saving files to disk, and is meant only for on-the-fly parameterisation. - -\subsection{Use} - -\htool{HCopy} is invoked by typing the command line -\begin{verbatim} - HCopy [options] sa1 [ + sa2 + ... ] ta [ sb1 [ + sb2 + ... ] tb ... ] -\end{verbatim} -This causes the contents of the one or more source files -\texttt{sa1}, \texttt{sa2}, \ldots - to be concatenated -and the result copied to the given target file \texttt{ta}. To avoid the overhead -of reinvoking the tool when processing large databases, multiple -sources and targets may be specified, for example -\begin{verbatim} -HCopy srcA.wav + srcB.wav tgtAB.wav srcC.wav tgtD.wav -\end{verbatim} -will create two new files \texttt{tgtAB.wav} and \texttt{tgtD.wav}. -\htool{HCopy} takes file arguments from a script specified using the \texttt{-S} option -exactly as from the -command line, except that any newlines are ignored. - -The allowable options to \htool{HCopy} are as follows where all times -and durations are given in 100 ns units and -are written as floating-point numbers. - - -\begin{optlist} - - \ttitem{-a i} Use level i of associated label files with the \texttt{-n} - and \texttt{-x} options. Note that this is not the same as using the - \texttt{TRANSLEVEL} configuration variable since the \texttt{-a} option -still allows all levels to be copied through to the output files. - - \ttitem{-e f} End copying from the source file at time \texttt{f}. The - default is the end of the file. If \texttt{f} is negative or zero, it is - interpreted as a time relative to the end of the file, while a positive value - indicates an absolute time from the start of the file. - - \ttitem{-i mlf} Output label files to master file \texttt{mlf}. - - \ttitem{-l s} Output label files to the directory \texttt{s}. - The default is to output to the current directory. - - \ttitem{-m t} Set a margin of duration \texttt{t} around the - segments defined by the \texttt{-n} and \texttt{-x} options. - - \ttitem{-n i [j]} Extract the speech segment corresponding to the {\tt - i}'th label in the source file. If \texttt{j} is specified, then the - segment corresponding to the sequence of labels \texttt{i} to \texttt{j} - is extracted. Labels are numbered from their position in the - label file. A negative index can be used to count from the end - of the label list. Thus, \texttt{-n 1 -1} would specify the segment - starting at the first label and ending at the last. - - \ttitem{-s f} Start copying from the source file at time \texttt{f}. - The default is 0.0, ie the beginning of the file. - - \ttitem{-t n} Set the line width to \texttt{n} chars when formatting - trace output. - - \ttitem{-x s [n]} Extract the speech segment corresponding to the - first occurrence of label \texttt{s} in the source file. If \texttt{n} - is specified, then the \texttt{n}'th occurrence is extracted. If - multiple files are being concatenated, segments are extracted - from each file in turn, and the label must exist for each - concatenated file. - -\stdoptF -\stdoptG -\stdoptI -\stdoptL -\stdoptO -\stdoptP -\stdoptX - -\end{optlist} -\stdopts{HCopy} - -Note that the parameter kind conversion -mechanisms described in chapter~\ref{c:speechio} -will be applied to all source files. In particular, if an automatic -conversion is requested via the configuration file, then \htool{HCopy} will copy -or concatenate the converted source files, not the actual contents. -Similarly, automatic byte swapping may occur depending on the source -format and the configuration variable \texttt{BYTEORDER}. Because the -sampling rate may change during conversions, the options that -specify a position within a file i.e. \texttt{-s} and \texttt{-e} -use absolute times rather than sample index numbers. All times in \HTK\ -are given in units of 100ns and -are written as floating-point numbers. To save writing long strings of zeros, -standard -exponential notation may be used, for example \texttt{-s 1E6} indicates a -start time of 0.1 seconds from the beginning of the file. - -\begin{center} -\begin{tabular}{|r||ccccccccccc|} \cline{2-12} - \multicolumn{1}{c}{} & \multicolumn{11}{|c|}{\it Outputs } \\ -\cline{2-11} \cline{2-11} \hline - ~ & ~ & ~ & ~ & L & ~ & ~ & ~ & ~ & ~ & ~ & ~ \\ - ~ & W & ~ & ~ & P & ~ & ~ & ~ & ~ & ~ & D & ~ \\ - ~ & A & ~ & ~ & C & ~ & ~ & ~ & M & ~ & I & ~ \\ - ~ & V & ~ & L & E & I & ~ & ~ & E & ~ & S & ~ \\ - ~ & E & ~ & P & P & R & ~ & F & L & ~ & C & ~ \\ - ~ & F & ~ & R & S & E & M & B & S & U & R & ~ \\ - ~ & O & L & E & T & E & F & A & P & S & E & P \\ - ~ & R & P & F & R & F & C & N & E & E & T & L \\ -{\it Inputs} & M & C & C & A & C & C & K & C & R & E & P \\ \hline -~WAVEFORM & $\surd$ & $\surd$ & $\surd$ & $\surd$ &$\surd$& $\surd$ & $\surd$ & $\surd$ & ~ &$\surd$ & ~\\ -~~~~~~LPC & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$ & ~\\ -~~~LPREFC & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$& ~\\ -LPCEPSTRA & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$& ~\\ -~~~~IREFC & ~ & $\surd$ & $\surd$ & $\surd$ &$\surd$& ~ & ~ & ~ & ~ &$\surd$& ~\\ -~~~~~MFCC & ~ & ~ & ~ & ~ & ~ & $\surd$ & ~ & ~ & ~ &$\surd$& ~\\ -~~~~FBANK & ~ & ~ & ~ & ~ & ~ & $\surd$ & $\surd$ & ~ & ~ &$\surd$& ~\\ -~~MELSPEC & ~ & ~ & ~ & ~ & ~ & $\surd$ & $\surd$ & $\surd$ & ~ &$\surd$& ~\\ -~~~~~USER & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & $\surd$ &$\surd$ & ~\\ -~DISCRETE & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & $\surd$ & ~ \\ -~~~~~~PLP & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & ~ & $\surd$ & $\surd$ \\ -\hline -\end{tabular} -\tabcap{validcons}{Valid Parameter Conversions} -\end{center} - -Note that truncations are performed {\em after\/} any desired coding, -which may result in a loss of time resolution if the target file format -has a lower sampling rate. Also, because of windowing effects, -truncation, coding, and concatenation operations are not necessarily -interchangeable. If in doubt, perform all truncation/concatenation in -the waveform domain and then perform parameterisation as a last, separate -invocation of \htool{HCopy}. - -\subsection{Trace Output} - -\htool{HCopy} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\ttitem{00002} source and target file formats and parameter kinds. -\ttitem{00004} segment boundaries computed from label files. -\ttitem{00010} display memory usage after processing each file. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hcopy@\htool{HCopy}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HDMan.aux b/HTKBook/HTKRef/HDMan.aux deleted file mode 100644 index d8d1771..0000000 --- a/HTKBook/HTKRef/HDMan.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.5}HDMan}{261}{section.17.5}} -\newlabel{s:HDMan}{{17.5}{261}{HDMan\relax }{section.17.5}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.5.1}Function}{261}{subsection.17.5.1}} -\newlabel{s:HDMan-Function}{{17.5.1}{261}{Function\relax }{subsection.17.5.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.5.2}Use}{262}{subsection.17.5.2}} -\newlabel{s:HDMan-Use}{{17.5.2}{262}{Use\relax }{subsection.17.5.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.5.3}Tracing}{263}{subsection.17.5.3}} -\newlabel{s:HDMan-Tracing}{{17.5.3}{263}{Tracing\relax }{subsection.17.5.3}{}} -\@setckpt{HTKRef/HDMan}{ -\setcounter{page}{264} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{4} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{5} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{82} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HDMan.tex b/HTKBook/HTKRef/HDMan.tex deleted file mode 100644 index 2ecd154..0000000 --- a/HTKBook/HTKRef/HDMan.tex +++ /dev/null @@ -1,208 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\newpage -\mysect{HDMan}{HDMan} - -\mysubsect{Function}{HDMan-Function} - -\index{hdman@\htool{HDMan}|(} -The \HTK\ tool \htool{HDMan} is used to prepare a pronunciation dictionary -from one or more sources. It -reads in a list of \textit{editing} commands from a -script file and then outputs an edited and merged copy of -one or more dictionaries. - -Each source pronunciation dictionary consists of comment lines and definition -lines. Comment lines start with the \texttt{\#} character (or optionally any -one of a set of specified comment chars) and are ignored by \htool{HDMan}. -Each definition line starts with a word and is followed by a sequence of -symbols (phones) that define the pronunciation. The words and the phones are -delimited by spaces or tabs, and the end of line delimits each definition. - -Dictionaries used by \htool{HDMan} are read using the standard \HTK\ string -conventions (see section~\ref{s:htkstrings}), however, the command \texttt{IR} -can be used in a \htool{HDMan} source edit script to switch to using this raw -format. Note that in the default mode, words and phones should not begin with unmatched quotes (they should be escaped with the backslash). All dictionary entries must already be alphabetically sorted before using \htool{HDMan}. - -Each edit command in the script file must be on a separate line. Lines in the -script file starting with a \texttt{\#} are comment lines and are ignored. The -commands supported are listed below. They can be displayed by \htool{HDMan} -using the \texttt{-Q} option. - -When no edit files are specified, \htool{HDMan} simply merges all of -the input dictionaries and outputs them in sorted order. All input -dictionaries must be sorted. Each input dictionary \texttt{xxx} may be -processed by its own private set of edit commands stored in \texttt{xxx.ded}. -Subsequent to the processing of the input dictionaries by their own -unique edit scripts, the merged dictionary can be processed by -commands in \texttt{global.ded} (or some other specified -global edit file name). - -Dictionaries are processed on a word by word basis in the order that -they appear on the command line. Thus, all of -the pronunciations for a given word are loaded into a buffer, then -all edit commands are applied to these pronunciations. The result -is then output and the next word loaded. - -Where two or more dictionaries give pronunciations for the same word, -the default behaviour is that only the first set of pronunciations -encountered are retained and all others are ignored. An option exists -to override this so that all pronunciations are concatenated. - -Dictionary entries can be filtered by a word list such that all entries not in -the list are ignored. Note that the word identifiers in the word list should -match exactly (e.g. same case) their corresponding entries in the dictionary. - -The edit commands provided by \htool{HDMan} are as follows - - - -\begin{varlist} - \fwitem{2cm}{AS A B ...} Append silence models A, B, etc to - each pronunciation. - \fwitem{2cm}{CR X A Y B } Replace phone \texttt{Y} in the context of \texttt{A\_B} - by \texttt{X}. Contexts may include an asterix \texttt{*} to denote any - phone or a defined context set - defined using the \texttt{DC} command. - \fwitem{2cm}{DC X A B ...} Define the set \texttt{A}, \texttt{B}, \ldots as - the context \texttt{X}. - \fwitem{2cm}{DD X A B ...} Delete the definition for word \texttt{X} starting - with phones \texttt{A}, \texttt{B}, \ldots. - \fwitem{2cm}{DP A B C ...} Delete any occurrences of phones \texttt{A} or - \texttt{B} or \texttt{C} \ldots. - \fwitem{2cm}{DS src} Delete each pronunciation from source \texttt{src} - unless it is the only one for the current word. - \fwitem{2cm}{DW X Y Z ...} Delete words (\& definitions) \texttt{X}, - \texttt{Y}, \texttt{Z}, \ldots. - \fwitem{2cm}{FW X Y Z ...} Define \texttt{X}, - \texttt{Y}, \texttt{Z}, \ldots\ as function words and - change each phone - in the definition to a function word specific phone. For example, - in word \texttt{W} phone \texttt{A} would become \texttt{W.A}. - \fwitem{2cm}{IR} Set the input mode to raw. - In raw mode, words are regarded as arbitrary sequences of printing - chars. In the default mode, words are strings as defined - in section~\ref{s:htkstrings}. - \fwitem{2cm}{LC [X]} Convert all phones to be left-context dependent. If \texttt{X} is given - then the 1st phone \texttt{a} in each word is changed to \texttt{X-a} - otherwise it is unchanged. - \fwitem{2cm}{LP} Convert all phones to lowercase. - \fwitem{2cm}{LW} Convert all words to lowercase. - \fwitem{2cm}{MP X A B ...} Merge any sequence of phones \texttt{A} \texttt{B} - \ldots\ and rename as \texttt{X}. - \fwitem{2cm}{RC [X]} Convert all phones to be right-context dependent. If - \texttt{X} is given then the last phone \texttt{z} in each word is - changed to \texttt{z+X} otherwise it is unchanged. - \fwitem{2cm}{RP X A B ...} Replace all occurrences of phones \texttt{A} - or \texttt{B} \ldots by \texttt{X}. - \fwitem{2cm}{RS system} Remove stress marking. Currently the only - stress marking system - supported is that used in the dictionaries produced by - Carnegie Melon University (system = cmu). - \fwitem{2cm}{RW X A B ...} Replace all occurrences of word \texttt{A} - or \texttt{B} \ldots by \texttt{X}. - \fwitem{2cm}{SP X A B ...} Split phone \texttt{X} into the sequence - \texttt{A} \texttt{B} \texttt{C} \ldots. - \fwitem{2cm}{TC [X [Y]] } Convert phones to triphones. If - \texttt{X} is given then the first phone \texttt{a} is converted to - \texttt{X-a+b} otherwise it is unchanged. If \texttt{Y} is given - then the last phone \texttt{z} is converted to \texttt{y-z+Y} - otherwise if \texttt{X} is given - then it is changed to \texttt{y-z+X} otherwise it is unchanged. - \fwitem{2cm}{UP} Convert all phones to uppercase. - \fwitem{2cm}{UW} Convert all words to uppercase. - -\end{varlist} - -\mysubsect{Use}{HDMan-Use} - -\htool{HDMan} is invoked by typing the command line -\begin{verbatim} - HDMan [options] newDict srcDict1 srcDict2 ... -\end{verbatim} -This causes \htool{HDMan} read in the source dictionaries \texttt{srcDict1}, -\texttt{srcDict2}, etc.\ and generate a new dictionary \texttt{newDict}. -The available options are - -\begin{optlist} - - \ttitem{-a s} Each character in the string \texttt{s} denotes the - start of a comment line. By default there is just one - comment character defined which is \texttt{\#}. - \ttitem{-b s} Define \texttt{s} to be a word boundary symbol. - \ttitem{-e dir} Look for edit scripts in the directory \texttt{dir}. - \ttitem{-g f} File \texttt{f} holds the global edit script. By - default, \htool{HDMan} expects the global edit script to be - called \texttt{global.ded}. - \ttitem{-h i j} Skip the first \texttt{i} lines of the \texttt{j}'th - listed source dictionary. - \ttitem{-i} Include word output symbols in the output dictionary. - \ttitem{-j} Include pronunciation probabilities in the output dictionary. - \ttitem{-l s} Write a log file to \texttt{s}. The log file will include - dictionary statistics and a list of the number of occurrences - of each phone. - \ttitem{-m} Merge pronunciations from all source dictionaries. By default, - \htool{HDMan} generates a single pronunciation for each word. If several - input dictionaries have pronunciations for a word, then the first encountered - is used. Setting this option causes all distinct pronunciations to be - output for each word. - \ttitem{-n f} Output a list of all distinct phones encountered - to file \texttt{f}. - \ttitem{-o} Disable dictionary output. - \ttitem{-p f} Load the phone list stored in file \texttt{f}. This - enables a check to be made that all output phones are in the supplied - list. You need to create a log file (\texttt{-l}) to view the results of - this check. - \ttitem{-t} Tag output words with the name of the source dictionary which - provided the pronunciation. - \ttitem{-w f} Load the word list stored in file \texttt{f}. Only - pronunciations for the words in this list will be extracted from - the source dictionaries. -\stdoptQ -\end{optlist} -\stdopts{HDMan} - -\mysubsect{Tracing}{HDMan-Tracing} - -\htool{HDMan} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting - \ttitem{00002} word buffer operations - \ttitem{00004} show valid inputs - \ttitem{00010} word level editing - \ttitem{00020} word level editing in detail - \ttitem{00040} print edit scripts - \ttitem{00100} new phone recording - \ttitem{00200} pron deletions - \ttitem{00400} word deletions -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hdman@\htool{HDMan}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HDecode.aux b/HTKBook/HTKRef/HDecode.aux deleted file mode 100644 index 0f863c6..0000000 --- a/HTKBook/HTKRef/HDecode.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.6}HDecode}{264}{section.17.6}} -\newlabel{s:HDecode}{{17.6}{264}{HDecode\relax }{section.17.6}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.6.1}Function}{264}{subsection.17.6.1}} -\newlabel{s:HDecode-Function}{{17.6.1}{264}{Function\relax }{subsection.17.6.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.6.2}Use}{265}{subsection.17.6.2}} -\newlabel{s:HDecode-Use}{{17.6.2}{265}{Use\relax }{subsection.17.6.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.6.3}Tracing}{266}{subsection.17.6.3}} -\newlabel{s:HDecode-Tracing}{{17.6.3}{266}{Tracing\relax }{subsection.17.6.3}{}} -\@setckpt{HTKRef/HDecode}{ -\setcounter{page}{267} -\setcounter{equation}{0} -\setcounter{enumi}{5} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{5} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{6} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{119} -\setcounter{Hfootnote}{83} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HDecode.tex b/HTKBook/HTKRef/HDecode.tex deleted file mode 100644 index 5d33eb6..0000000 --- a/HTKBook/HTKRef/HDecode.tex +++ /dev/null @@ -1,253 +0,0 @@ - -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell - 24/11/97 -% -\newpage -\mysect{HDecode}{HDecode} - -{\bf\large -WARNING: The HTK Large Vocabulary -Decoder \htool{HDecode} has -been specifically written for speech recognition tasks -using cross-word triphone models. Known restrictions are: -\begin{itemize} -\item only works for cross-word triphones; -\item supports N-gram language models upto tri-grams; -\item \texttt{sil} and \texttt{sp} models are reserved as silence -models and are, by default, automatically added to the end of all -pronunciation variants of each word in the recognition dictionary; -\item \texttt{sil} must be used as the pronunciation for the sentence start - and sentence end tokens; -\item \texttt{sil} and \texttt{sp} models cannot occur in the dictionary, - except for the dictionary entry of the sentence start - and sentence end tokens; -\item word lattices generated with \htool{HDecode} must be made {\em -deterministic} using \htool{HLRescore} to remove duplicate paths -prior to being used for acoustic model rescoring -with \htool{HDecode} or \htool{HVite}. -\end{itemize} -} - -\mysubsect{Function}{HDecode-Function} - -\index{hdecode@\htool{HDecode}|(} - -\htool{HDecode} is a decoder specifically written for large vocabulary -speech recognition. In contrast to the other tools in HTK there are a number -of limitations to its use. See the warnings above. - -Similar to \htool{HVite}, the best transcription hypothesis will be generated -in the Master Label File (MLF) format. Optionally, multiple hypotheses can -also be generated as a word lattice in the form of the HTK Standard Lattice -File (SLF) format. In the \htool{HDecode} tutorial section, a range of -different options of using \htool{HDecode} and detailed examples are given. - -There are two main modes that \htool{HDecode} can be run in. The first is -\emph{full decoding} where an $n$-gram language model is used for recognition. -The current version of \htool{HDecode} supports using word based uni-gram, -bi-gram or tri-gram language models. Higher order $n$-gram models, or if the -size of the language model is very large, should be applied by rescoring -lattices generated using simpler language models. See the \htool{HDecode} -tutorial section and \htool{HLRescore} reference page for example of lattice -expansion by applying additional language models. The second mode that -\htool{HDecode} can be run in is \emph{lattice rescoring}. Here, for example, -a different acoustic model can be used to rescore lattices. - -The acoustic and language model scores can be adjusted using the -\texttt{-a} and \texttt{-s} options respectively. -In the case where the supplied dictionary -contains pronunciation probability information, the corresponding scale -factor can be adjusted using the \texttt{-r} option. The \texttt{-q} option -can be used to control the type of information to be included in the -generated lattices. - -\htool{HDecode}, when compiled with the \texttt{MODALIGN} setting, -can also be used to align the HMM models to a given word level lattice -(also known as model marking the lattice). When using the default -\texttt{Makefile} supplied with \htool{HDecode}, this binary will be -made and stored in \htool{HDecode.mod}. - -When using \htool{HDecode}, the run-time can be adjusted by changing the main -and relative token pruning beam widths (see the \texttt{-t} option), word end -beam width (see the \texttt{-v} option), the maximum model pruning (see the -\texttt{-u} option). The number of tokens used per state (see the \texttt{-n} -option) can also significantly affect both the decoding time and the size of -lattices generated. - -Decoding with adapted acoustic models is supported by \htool{HDecode}. The use -of an adaptation transformation is enabled using the \texttt{-m} option. The -path, name and extension of the transformation matrices are specified using -the \texttt{-J} and the file names are derived from the name of the speech -file using a \emph{mask} (see the \texttt{-h} option). Incremental adaptation -and transform estimation, are not currently supported by \htool{HDecode}. - -\htool{HDecode} also allows probability calculation to be carried out in -blocks at the same time. The block size (in frames) can be specified using -the \texttt{-k} option. However, when CMLLR adaptation is used, probabilities -have to be calculated one frame at a time (i.e. using \texttt{-k 1})\footnote{ -This is due to the different observation caching mechanisms used in -\htool{HDecode} and the \htool{HAdapt} module}. - -\htool{HDecode} performs recognition by expanding a phone model network with -language model and pronunciation model information dynamically applied. The -lattices generated are word lattices, though generated using triphone -acoustic models. This is similar to a projection operation of a phone level -finite state network on to word level, but identical word paths that -correspond to different phone alignments are kept distinct. Note that these -duplicated word paths are not permitted when using either \htool{HDecode} or -\htool{HVite} for acoustic model lattice rescoring or alignment. Input word -lattices are expected to be deterministic in both cases. The impact of using -non-deterministic lattices for the two HTK decoders are different in nature -due to internal design differences, but in both cases the merging step to -remove the duplicates is very important prior to lattice rescoring or -alignment. See \htool{HDecode} tutorial page and \htool{HLRescore} reference -page for information on how to produce deterministic word lattices. - - -\mysubsect{Use}{HDecode-Use} - -\htool{HDecode} is invoked via the command line -\begin{verbatim} - HDecode [options] dictFile hmmList testFiles ... -\end{verbatim} - -The detailed operation of \htool{HDecode} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-a f} Set acoustic scale factor to \texttt{f} (default value 1.0). - - \ttitem{-d dir} This specifies the directory to search for the - HMM definition files corresponding to the labels used in - the recognition network. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the input transforms. - - \ttitem{-i s} Output transcriptions to MLF \texttt{s}. - - \ttitem{-k i} Set frame block size in output probability calculation for - diagonal covariance systems. - - \ttitem{-l dir} This specifies the directory to store the output - label or lattice files. If this option is not used then \htool{HDecode} will store - the output MLF files in the current directory, and lattices - under the same directory as the data. - When recognition output is directed to an MLF, this option can - be used to add a path to each output file name in the same was as \htool{HVite}. - - \ttitem{-m } Use an input transform. (default is off) - - \ttitem{-n i} Use \texttt{i} tokens in each set during token - propagation. (default is 32 tokens per state) - - \ttitem{-o s} Choose how the output labels should be formatted. - \texttt{s} is a string with certain letters (from \texttt{NSCTWMX}) - indicating binary flags that control formatting options. - \texttt{N} normalise acoustic scores by dividing by the duration - (in frames) of the segment. - \texttt{S} remove scores from output label. By default - scores will be set to the total likelihood of the segment. - \texttt{C} Set the transcription labels to start and end on - frame centres. By default start times are set to the start - time of the frame and end times are set to the end time of - the frame. - \texttt{T} Do not include times in output label files. - \texttt{W} Do not include words in output label files - when performing state or model alignment. - \texttt{M} Do not include model names in output label - files when performing state and model alignment. - \texttt{X} Strip the triphone context. - - \ttitem{-p f} Set the word insertion log probability to \texttt{f} - (default 0.0). - - \ttitem{-q s} Choose how the output lattice should be formatted. - \texttt{s} is a string with certain letters (from \texttt{ABtvaldmnr}) - indicating binary flags that control formatting options. - \texttt{A} attach word labels to arcs rather than nodes. - \texttt{B} output lattices in binary for speed. - \texttt{t} output node times. - \texttt{v} output pronunciation information. - \texttt{a} output acoustic likelihoods. - \texttt{l} output language model likelihoods. - \texttt{d} output word alignments (if available). - \texttt{m} output within word alignment durations. - \texttt{n} output within word alignment likelihoods. - \texttt{r} output pronunciation probabilities. - - \ttitem{-r f} Set the dictionary pronunciation probability scale - factor to \texttt{f}. (default value 1.0). - - \ttitem{-s f} Set the grammar scale factor to \texttt{f} (default value 1.0). - - \ttitem{-t f [g]} Enable beam searching such that any model whose - maximum log probability token falls more than - \texttt{f} below the maximum among all models is deactivated. - An extra parameter \texttt{g} can be specified as the relative - token beam width. - - \ttitem{-u i} Set the maximum number of active models to \texttt{i}. - Setting \texttt{i} to \texttt{0} disables this limit (default 0). - - \ttitem{-v f [g]} Enable word end pruning. Do not propagate tokens from - word end nodes that fall more than \texttt{f} below the maximum - word end likelihood. (default \texttt{0.0}). - An extra parameter \texttt{g} can be specified to give - additional pruning at both the start and end of a word. - - \ttitem{-w s} Load language model from \texttt{s}. - - \ttitem{-x ext} This sets the extension to use for HMM definition - files to \texttt{ext}. - - \ttitem{-y ext} This sets the extension for output label files to - \texttt{ext} (default \texttt{rec}). - - \ttitem{-z ext} Enable output of lattices with extension \texttt{ext} - (default off). - - \ttitem{-L dir} This specifies the directory to find input lattices. - -% \ttitem{-R s} Load 1-best alignment label file from \texttt{-s}. - - \ttitem{-X ext} Set the extension for the input lattice files - to be \texttt{ext} (default value \texttt{lat}). - -\stdoptF -\stdoptG -\stdoptH -\stdoptJ -\stdoptP - -\end{optlist} -\stdopts{HDecode} - -\mysubsect{Tracing}{HDecode-Tracing} - -\htool{HDecode} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} enable basic progress reporting. - \ttitem{0002} list observations. - \ttitem{0004} show adaptation process. - \ttitem{0010} show memory usage at start and finish. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hvite@@\htool{HDecode}|)} - - diff --git a/HTKBook/HTKRef/HERest.aux b/HTKBook/HTKRef/HERest.aux deleted file mode 100644 index c1431df..0000000 --- a/HTKBook/HTKRef/HERest.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.7}HERest}{267}{section.17.7}} -\newlabel{s:HERest}{{17.7}{267}{HERest\relax }{section.17.7}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.7.1}Function}{267}{subsection.17.7.1}} -\newlabel{s:HERest-Function}{{17.7.1}{267}{Function\relax }{subsection.17.7.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.7.2}Use}{268}{subsection.17.7.2}} -\newlabel{s:HERest-Use}{{17.7.2}{268}{Use\relax }{subsection.17.7.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.7.3}Tracing}{270}{subsection.17.7.3}} -\newlabel{s:HERest-Tracing}{{17.7.3}{270}{Tracing\relax }{subsection.17.7.3}{}} -\@setckpt{HTKRef/HERest}{ -\setcounter{page}{271} -\setcounter{equation}{0} -\setcounter{enumi}{3} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{5} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{7} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{131} -\setcounter{Hfootnote}{83} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HERest.tex b/HTKBook/HTKRef/HERest.tex deleted file mode 100644 index 1d835f1..0000000 --- a/HTKBook/HTKRef/HERest.tex +++ /dev/null @@ -1,362 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Dave Ollason 24/11/97 -% - -\newpage -\mysect{HERest}{HERest} - -\mysubsect{Function}{HERest-Function} - -\index{herest@\htool{HERest}|(} This program is used to perform a -single re-estimation of the parameters of a set of HMMs, or linear -transforms, using an {\em embedded training} version of the Baum-Welch -algorithm. Training data consists of one or more utterances each of -which has a transcription in the form of a standard label file -(segment boundaries are ignored). For each training utterance, a -composite model is effectively synthesised by concatenating the -phoneme models given by the transcription. Each phone model has the -same set of accumulators allocated to it as are used in HRest but in -\htool{HERest} they are updated simultaneously by performing a -standard Baum-Welch pass over each training utterance using the -composite model. - -\htool{HERest} is intended to operate on HMMs with initial parameter values -estimated by HInit/HRest. -\htool{HERest} supports multiple mixture Gaussians, discrete and tied-mixture -HMMs, multiple data streams, parameter tying within and between models, and -full or diagonal covariance matrices. \htool{HERest} also supports tee-models -(see section~\ref{s:teemods}), for handling optional silence and non-speech -sounds. These may be placed between the units (typically words or phones) -listed in the transcriptions but they cannot be used at the start or end of a -transcription. Furthermore, chains of tee-models are not permitted. - -\htool{HERest} includes features to allow parallel operation where a network -of processors is available. When the training set is large, it can be split into separate chunks that are processed in parallel on multiple machines/processors, consequently speeding up the training process. - -Like all re-estimation tools, \htool{HERest} allows a floor to be set on -each individual variance by defining a variance floor macro for each data -stream (see chapter~\ref{c:Training}). The configuration variable {\tt -VARFLOORPERCENTILE} allows the same thing to be done in a different way -which appears to improve recognition results. By setting this to e.g. 20, -the variances from each dimension are floored to the 20th percentile of the -distribution of variances for that dimension. - -%as suggested in: -%\bibitem[Lee, Giachin, Rabiner, Pieraccini \& Rosenberg, 1992]{lee92csl} -%Lee C-H., Giachin E., Rabiner L.R., Pieraccini R. \& Rosenberg A.E. -%(1992). ``Improved Acoustic Modeling for Large Vocabulary Continuous -%Speech Recognition,'' {\it Computer Speech and Language} {\bf 6}, pp. -%103-127. - - -\htool{HERest} supports two specific methods for initialisation of -model parameters , \textit{single pass retraining} and \textit{2-model - reestimation}. - -\textit{Single pass retraining} is useful when the parameterisation of -the front-end (e.g. from MFCC to PLP coefficients) is to be modified. -Given a set of well-trained models, a set of new models using a -different parameterisation of the training data can be generated in a -single pass. This is done by computing the forward and backward -probabilities using the original well-trained models and the original -training data, but then switching to a new set of training data to -compute the new parameter estimates. - -In \textit{2-model re-estimation} one model set can be used to obtain -the forward backward probabilities which then are used to update the -parameters of another model set. Contrary to \textit{single pass - retraining} the two model sets are not required to be tied in the -same fashion. This is particularly useful for training of single -mixture models prior to decision-tree based state clustering. The use -of 2-model re-estimation in \htool{HERest} is triggered by setting the -config variables {\tt ALIGNMODELMMF} or {\tt ALIGNMODELDIR} and {\tt - ALIGNMODELEXT} together with {\tt ALIGNHMMLIST} (see section \ref{s:twomodel}). -As the model list can differ for the alignment model set a separate set of -input transforms may be specified using the {\tt ALIGNXFORMDIR} and -{\tt ALIGNXFORMEXT}. - -\htool{HERest} for updating model parameters operates in two distinct stages. - -\begin{enumerate} - -\item - In the first stage, one of the following two options applies - \begin{enumerate} - \item - Each input data file contains training data which is - processed and the accumulators for state occupation, - state transition, means and variances are updated. - - \item - Each data file contains a dump of the accumulators - produced by previous runs of the program. These - are read in and added together to form a single set - of accumulators. - \end{enumerate} - -\item - In the second stage, one of the following options applies - \begin{enumerate} - \item - The accumulators are used to calculate new - estimates for the HMM parameters. - \item - The accumulators are dumped into a file. - \end{enumerate} -\end{enumerate} - -Thus, on a single processor the default combination 1(a) and 2(a) would -be used. However, if N processors are available then the -training data would be split into N equal groups and \htool{HERest} would -be set to process one data set on each processor using the combination -1(a) and 2(b). -When all processors had finished, the -program would then be run again using the combination 1(b) and 2(a) -to load in the partial accumulators created by the N processors -and do the final parameter re-estimation. The choice of which combination -of operations \htool{HERest} will perform is governed by the {\tt -p} option -switch as described below. - -As a further performance optimisation, \htool{HERest} will also prune the -$\alpha$ and $\beta$ matrices. By this means, a factor of 3 to 5 -speed improvement and a similar reduction in memory requirements can be -achieved with negligible effects on training performance (see the {\tt --t} option below). - -\htool{HERest} is able to make use of, and estimate, linear -transformations for model adaptation. There are three types of linear -transform that are made use in \htool{HERest}. -\begin{itemize} -\item {\it Input transform}: the input transform is used to determine -the forward-backward probabilities, hence the component posteriors, for -estimating model and transform -\item {\it Output transform}: the output transform is generated when the -{\tt -u} option is set to {\tt a}. The transform will be stored in the -current directory, or the directory specified by the {\tt -K} option -and optionally the transform extension. -\item {\it Parent transform}: the parent transform determines the -model, or features, on which the model set or transform is to be -generated. For transform estimation this allows {\em cascades} of transforms -to be used to adapt the model parameters. For model estimation this -supports {\em speaker adaptive training}. Note the current implementation -only supports adaptive training with CMLLR. Any parent transform can be -used when generating transforms. -\end{itemize} -When input or parent transforms are specified the transforms may -physically be stored in multiple directories. Which transform to be used -is determined in the following search order: -order is used. -\begin{enumerate} -\item Any loaded macro that matches the transform (and its' extension) name. -\item If it is a parent transform, the directory specified with the -{\tt -E} option. -\item The list of directories specified with the {\tt -J} option. -The directories are searched in the order that they are specified -in the command line. -\end{enumerate} -As the search order above looks for loaded macros first it is -recommended that unique extensions are specified for each set of -transforms generated. Transforms may either be stored in -a single TMF. These TMFs may be loaded using the {\tt -H} option. -When macros are specified for the regression class trees and -the base classes the following search order is used -\begin{enumerate} -\item Any loaded macro that matches the macro name. -\item The path specified by the configuration variable. -\item The list of directories specified with the {\tt -J} option. -The directories are searched in the order that they are specified -in the command line. -\end{enumerate} -Baseclasses and regression classes may also be loaded using the -{\tt -H} option. - -\htool{HERest} can also estimate semi-tied transformations by -specifying the {\tt s} update option with the {\tt -u} flag. This uses the same baseclass -specification as the linear transformation adaptation code to allow -multiple transformations to be estimated. The specification of the -baseclasses is identical to that used for linear adaptation. Updating -semi-tied transforms always updates the means and diagonal covariance -matrices as well. Full covariance matrices are not supported. When -using this form of estimation, full covariance statistics are -accumulated. This makes the memory requirements large compared to -estimating diagonal covariance matrices. - -\mysubsect{Use}{HERest-Use} - -\htool{HERest} is invoked via the command line -\begin{verbatim} - HERest [options] hmmList trainFile ... -\end{verbatim} -This causes the set of HMMs given in {\tt hmmList} to be loaded. -The given list of -training files is then used to perform one re-estimation cycle. As always, -the list of training files can be stored in a script file if required. On -completion, \htool{HERest} outputs new updated versions of each HMM definition. If -the number of training examples falls below a specified threshold -for some particular HMM, then -the new parameters for that HMM are ignored and the original parameters are used -instead. - -The detailed operation of \htool{HERest} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-a} Use an input transform to obtain alignments for updating - models or transforms (default off). - - \ttitem{-c f} Set the threshold for tied-mixture observation - pruning to {\tt f}. - For tied-mixture \texttt{TIEDHS} systems, only those - mixture component probabilities which fall within {\tt f} of - the maximum mixture component probability are used in calculating - the state output probabilities (default 10.0). - - \ttitem{-d dir} - Normally \htool{HERest} looks for HMM definitions - (not already loaded via MMF files) - in the current directory. This option tells \htool{HERest} to look in - the directory {\tt dir} to find them. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the output transforms. If \texttt{PAXFORMMASK} - or \texttt{INXFORMMASK} are not specified then the input - transform mask is assumed for both output and parent transforms. - - \ttitem{-l N} Set the maximum number of files to use for each - speaker, determined by the output transform speaker mask, - to estimate the transform with.(default $\infty$). - - \ttitem{-m N} Set the minimum number of training examples - required for any model to {\tt N}. If the actual number - falls below this value, the HMM is not updated and the original - parameters are used for the new version (default value 3). - - \ttitem{-o ext} This causes the file name extensions of the - original models (if any) to be replaced by {\tt ext}. - - \ttitem{-p N} This switch is used to set parallel mode operation. - If {\tt p} is set to a positive integer {\tt N}, then \htool{HERest} will - process the training files and then dump all the accumulators - into a file called {\tt HERN.acc}. If {\tt p} is set to 0, then - it treats all file names input on the command line as the names - of {\tt .acc} dump files. It reads them all in, adds together - all the partial accumulations and then re-estimates all the - HMM parameters in the normal way. - - \ttitem{-r} This enables single-pass retraining. The list of training - files is processed pair-by-pair. For each pair, the first file - should match the parameterisation of the original model set. The - second file should match the parameterisation of the required new - set. All speech input processing is controlled by configuration - variables in the normal way except that the variables describing - the old parameterisation are qualified by the name \texttt{HPARM1} - and the variables describing the new parameterisation are - qualified by the name \texttt{HPARM2}. The stream widths for the - old and the new must be identical. - - \ttitem{-s file} This causes statistics on occupation of each - state to be output to the named file. This file - is needed for the {\tt RO} command of HHEd but it is also - generally useful for assessing the amount of training material - available for each HMM state. - - \ttitem{-t f [i l]} Set the pruning threshold to {\tt f}. During the - backward probability calculation, at - each time $t$ - all (log) $\beta$ values falling more than {\tt f} below the - maximum $\beta$ value at that time are ignored. During the - subsequent forward pass, (log) $\alpha$ values are only - calculated if there are corresponding valid $\beta$ values. - Furthermore, if the ratio of the $ \alpha \beta $ product divided - by the total probability (as computed on the backward pass) - falls below a fixed threshold then those values of $\alpha$ - and $\beta$ are ignored. Setting {\tt f} to zero disables - pruning (default value 0.0). Tight pruning thresholds can - result in \htool{HERest} failing to process an utterance. - if the {\tt i} and {\tt l} options are given, then a pruning - error results in the threshold being increased by {\tt i} and - utterance processing restarts. If errors continue, this procedure will - be repeated until the limit {\tt l} is reached. - - \ttitem{-u flags} By default, \htool{HERest} updates all of the HMM parameters, - that is, means, variances, mixture weights and - transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance) , - {\tt t} (transition), {\tt a} (linear transform), {\tt p} (use - MAP adaptation), {\tt s} (semi-tied transform), and {\tt w} (mixture weight). The - presence of a letter enables - the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f} (default value - 0.0). - - \ttitem{-w f} Any mixture weight which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - - \ttitem{-x ext} By default, \htool{HERest} expects a HMM definition for - the label X to be stored in a file called {\tt X}. This - option causes \htool{HERest} to look for the HMM definition in the - file {\tt X.ext}. - - \ttitem{-z file} Save all output transforms to file. Default - is TMF. - -\stdoptB -\stdoptE -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptJ -\stdoptK -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HERest} - -\mysubsect{Tracing}{HERest-Tracing} - -\htool{HERest} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show the logical/physical HMM map. - \ttitem{00004} list the updated model parameters. - of tied mixture components. -\end{optlist} - - -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{herest@\htool{HERest}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HHEd.aux b/HTKBook/HTKRef/HHEd.aux deleted file mode 100644 index 588460c..0000000 --- a/HTKBook/HTKRef/HHEd.aux +++ /dev/null @@ -1,40 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.8}HHEd}{271}{section.17.8}} -\newlabel{s:HHEd}{{17.8}{271}{HHEd\relax }{section.17.8}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.8.1}Function}{271}{subsection.17.8.1}} -\@writefile{toc}{\contentsline {subsubsection}{\texttt {AT i j prob itemList(t)}}{272}{section*.12}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.8.2}Use}{279}{subsection.17.8.2}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.8.3}Tracing}{279}{subsection.17.8.3}} -\@setckpt{HTKRef/HHEd}{ -\setcounter{page}{281} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{5} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{8} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{83} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HHEd.tex b/HTKBook/HTKRef/HHEd.tex deleted file mode 100644 index 64d1377..0000000 --- a/HTKBook/HTKRef/HHEd.tex +++ /dev/null @@ -1,808 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell 20/05/97 -% -\newpage -\mysect{HHEd}{HHEd} - -\subsection{Function} - -\index{hhed@\htool{HHEd}|(} -\htool{HHEd} is a script driven editor for manipulating sets of HMM definitions. -Its basic operation is to load in a set of HMMs, apply a sequence of edit -operations and then output the transformed set. \htool{HHEd} is mainly used for -applying tyings across selected HMM parameters. It also has facilities for -cloning HMMs, clustering states and editing HMM structures. - -Many \htool{HHEd} commands operate on sets of similar items selected from the -set of currently loaded HMMs. For example, it is possible to define a set of -all final states of all vowel models, or all mean vectors of all mixture -components within the model X, etc. Sets such as these are defined by item -lists using the syntax rules given below. In all commands, all of the items in -the set defined by an item list must be of the same type where the possible -types are -\begin{tabbing} -+++++++ \= ++ \= ++++++++++++++++ \= ++ \= \kill -\> s \> -- state \> t \> -- transition matrix \\ -\> p \> -- pdf \> w \> -- stream weights \\ -\> m \> -- mixture component \> d \> -- duration parameters \\ -\> u \> -- mean vector \> x \> -- transform matrix \\ -\> v \> -- variance vector \> i \> -- inverse covariance matrix \\ -\> h \> -- HMM definition -\end{tabbing} -\noindent -Most of the above correspond directly to the tie points shown in -Fig~\href{f:hierarch}. There is just one exception. The type ``p'' -corresponds to a pdf (ie a sum of Gaussian mixtures). Pdf's cannot -be tied, however, they can be named in a Tie (\texttt{TI}) command -(see below) in which case, the effect is to join all of the contained -mixture components into one pool of mixtures and then all of the -mixtures in the pool are shared across all pdf's. This allows -conventional {\it tied-mixture} or {\it semi-continuous} HMM systems -to be constructed. - -The syntax rules for item lists are as follows. An item list -consists of a comma separated list of item sets. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> itemList\> = \> ``\{'' itemSet \{ ``,'' itemSet \} ``\}'' -\end{tabbing}} -\noindent -Each {\sf itemSet} consists of the name of one -or more HMMs (or a pattern -representing a set of HMMs) followed by a specification -which represents a set of paths down the parameter hierarchy -each terminating at one of the required parameter items. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> itemSet \> = \> hmmName . [``transP'' $|$ ``state'' state ]\\ -\> hmmName \> = \> ident $|$ identList \\ -\> identList\> = \> ``('' ident \{ ``,'' ident \} ``)'' \\ -\> ident \> = \> $<$ char $|$ metachar $>$ \\ -\> metachar \> = \> ``?'' $|$ ``$\star$'' -\end{tabbing}} -\noindent -A {\sf hmmName} consists of a single {\sf ident} or -a comma separated list of {\sf ident}'s. The following examples -are all valid {\sf hmmName}'s: -\begin{verbatim} - aa three model001 (aa,iy,ah,uh) (one,two,three) -\end{verbatim} -In addition, an {\sf ident} can contain the metacharacter -``?'' which matches any single character and the metacharacter -``$\star$'' which matches a string of zero or more characters. -For example, the item list -\begin{verbatim} - {*-aa+*.transP} -\end{verbatim} -would represent the set of transition matrices of all loaded -triphone variations of \texttt{aa}. - -Items within states require the state indices to be specified -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> state \> = \> index [``.'' stateComp ] \\ -\> index \> = \> ``['' intRange \{ ``,'' intRange \} ``]'' \\ -\> intRange \> = \> integer [ ``-'' integer ] -\end{tabbing}} -For example, the item list -\begin{verbatim} - {*.state[1,3-5,9]} -\end{verbatim} -represents the set of all states 1, 3 to 5 inclusive and 9 of all -currently loaded HMMs. Items within states include durational -parameters, stream weights, pdf's and all items within mixtures -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> stateComp \> = \> ``dur'' $|$ ``weights'' $|$ [ `` stream'' index ] - ``.'' ``mix'' [ mix ] -\end{tabbing}} -For example, -\begin{verbatim} - {(aa,ah,ax).state[2].dur} -\end{verbatim} -denotes the set of durational parameter vectors from state 2 of the -HMMs \texttt{aa}, \texttt{ah} and \texttt{ax}. Similarly, -\begin{verbatim} - {*.state[2-4].weights} -\end{verbatim} -denotes the set of stream weights for states 2 to 4 of all currently -loaded HMMs. The specification of pdf's may optionally include a -list of the relevant streams, if omitted, stream 1 is assumed. -For example, -\begin{verbatim} - {three.state[3].mix} -\end{verbatim} -and -\begin{verbatim} - {three.state[3].stream[1].mix} -\end{verbatim} -both denote a list of the single pdf belonging to stream 1 of state 3 -of the HMM \texttt{three}. - -Within a pdf, the possible item types are mixture components, -mean vectors, and the various possible forms of covariance -parameters -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> mix \> = \> index [ ``.'' ( ``mean'' $|$ ``cov'' ) ] -\end{tabbing}} -For example, -\begin{verbatim} - {*.state[2].mix[1-3]} -\end{verbatim} -denotes the set of mixture components 1 to 3 from state 2 of all -currently loaded HMMs and -\begin{verbatim} - {(one,two).state[4].stream[3].mix[1].mean} -\end{verbatim} -denotes the set of mean vectors from mixture component 1, stream 3, -state 4 of the HMMs \texttt{one} and \texttt{two}. When {\sf cov} -is specified, the type of the covariance item referred to is -determined from the \texttt{CovKind} of the loaded models. Thus, -for diagonal covariance models, the item list -\begin{verbatim} - {*.state[2-4].mix[1].cov} -\end{verbatim} -would denote the set of variance vectors for mixture 1, states 2 to 4 -of all loaded HMMs. - -Note finally, that it is not an error to specify non-existent models, -states, mixtures, etc. All item list specifications are regarded -as patterns which are matched against the currently loaded set of -models. All and only those items which match are included in -the set. However, both a null result and a set of items of mixed -type do result in errors. - -All \htool{HHEd} commands consist of a 2 character command name followed -by zero or more arguments. In the following descriptions, item -lists are shown as \texttt{itemList(c)} where the character c denotes the -type of item expected by that command. If this type indicator is -missing then the command works for all item types. - -The \htool{HHEd} commands are as follows - -\subsubsection{\texttt{AT i j prob itemList(t)}} - -Add a transition from state \texttt{i} to state \texttt{j} with probability -\texttt{prob} for all transition matrices in \texttt{itemList}. The remaining -transitions out of state \texttt{i} are rescaled so that $\sum_k a_{ik} = 1 $. -For example, -\begin{verbatim} - AT 1 3 0.1 {*.transP} -\end{verbatim} -would add a skip transition to all loaded models from state 1 to state 3 -with probability 0.1. - -\subsubsection*{\tt AU hmmList} - -Use a set of decision trees to create a new set of models specified -by the \texttt{hmmList}. The decision trees may be made as a result -of either the \texttt{TB} or \texttt{LT} command. - -Each model in \texttt{hmmList} is constructed in the following manner. -If a model with the same logical name already exists in the -current HMM set this is used unchanged, otherwise the model is -synthesised from the decision trees. If the trees cluster at the -model level the synthesis results in a logical model sharing the -physical model from the tree that matches the new context. If -the clustering was performed at the state level a prototype model -(an example of the same phone model occurring in a different context) -is found and a new HMM is constructed that shares the transition -matrix with the prototype model but consists of tied states selected -using the decision tree. - -\subsubsection*{\tt CL hmmList} - -Clone a HMM list. The file \texttt{hmmList} should hold a list of HMMs -all of whose logical names are either the same as, or are context-dependent -versions of the currently loaded set of HMMs. For each name in \texttt{hmmList}, -the corresponding HMM in the loaded set is cloned. On completion, the -currently loaded set is discarded and replaced by the new set. For example, -if the file \texttt{mylist} contained -\begin{verbatim} - A-A+A - A-A+B - B-A+A - B-B+B - B-B+A -\end{verbatim} -and the currently loaded HMMs were just \texttt{A} and \texttt{B}, then -\texttt{A} would be cloned 3 times to give the models \texttt{A-A+A}, -\texttt{A-A+B} and \texttt{B-A+A}, and \texttt{B} would be cloned 2 times -to give \texttt{B-B+B} and \texttt{B-B+A}. On completion, the original -definitions for \texttt{A} and \texttt{B} would be deleted (they could -be retained by including them in the new \texttt{hmmList}). - -\subsubsection*{\tt CO newList} - -Compact a set of HMMs. The effect of this command is to -scan the currently loaded set of HMMs and identify all identical -definitions. The physical name of the first model in each identical -set is then assigned to all models in that set and all -model definitions are replaced by a pointer to the first -model definition. On completion, -a new list of HMMs which includes the new model tyings is -written out to file \texttt{newList}. For example, suppose that -models \texttt{A}, \texttt{B}, \texttt{C} and \texttt{D} were currently -loaded and \texttt{A} and \texttt{B} were identical. Then the command -\begin{verbatim} - CO tlist -\end{verbatim} -would tie HMMs \texttt{A} and \texttt{B}, -set the physical name of \texttt{B} to \texttt{A} and output the -new HMM list -\begin{verbatim} - A - B A - C - D -\end{verbatim} -to the file \texttt{tlist}. This command is used mainly after -performing a sequence of parameter tying commands. - -\subsubsection*{\tt DP s n id ...} - -Duplicates a set of HMMs. This command is used to replicate a -set of HMMs whilst allowing control over which structures will -be shared between them. -The first parameter controls duplication of tied structures. Any -macros whose type appears in string \texttt{s} are duplicated -with new names and only used in the duplicate model set. The remaining -shared structures are common through all the model sets (original and -duplicates). -The second parameter defines the number of times the current -HMM set should be duplicated with the remaining \texttt{n} parameters -providing suffices to make the original macro identifiers unique -in each duplicated HMM set. - -For instance the following script could be used to duplicate -a set of tied state models to produce gender dependent ones -with tied variances. -\begin{verbatim} - MM "v_" { (*).state[2-4].mix[1-2].cov } - DP "v" 2 ":m" ":f" -\end{verbatim} -The \texttt{MM} command converts all variances into macros -(with each macro referring to only one variance). -The \texttt{DP} command then duplicates the current HMM set twice. -Each of the duplicate sets will share the tied variances with -the original set but will have new mixture means, weights and -state macros. The new macro names will be constructed by -appending the id \texttt{":m"} or \texttt{":f"} to the original -macro name whilst the model names have the id appended after -the base phone name (so \texttt{ax-b+d} becomes \texttt{ax-b:m+d} or -\texttt{ax-b:f+d}. - -\subsubsection*{\tt FA varscale} - -Computes an average within state variance vector for a given HMM set, -using statistics generated by \htool{HERest} (see {\tt LS} for loading -stats). The average variance vector is scaled and stored in the HMM -set, any variance floor vectors present are replaced. Subsequently, -the variance floor is applied to all variances in the model set. This -can be inhibited by setting \texttt{APPLYVFLOOR} to \texttt{FALSE}. - -\subsubsection*{\tt FC} - -Converts all covariances in the modelset to full. This command -takes an HMM set with diagonal covariances and creates full -covariances which are initialised with the variances of the diagonal -system. The tying structure of the original system is kept intact. - -\subsubsection*{\tt FV file} - -Loads one variance floor macro per stream from file. The file -containing the variance floor macros can, for example, be generated by -\htool{HCompV}. Any variance floor vectors present in the model set -are replaced. Secondly the variance floor is applied to all variances. -This can be inhibited but setting \texttt{APPLYVFLOOR} to -\texttt{FALSE}. - -\subsubsection*{\tt HK hsetkind} - -Converts model set from one kind to another. Although hsetkind can -take the value PLAINHS, SHAREDHS, TIEDHS or DISCRETEHS, the HK command is -most likely to be used when building tied-mixture systems (hsetkind=TIEDHS). - -\subsubsection*{\tt JO size minw} - -Set the size and minimum mixture weight for subsequent -Tie (\texttt{TI}) commands applied to pdf's. -The value of \texttt{size} sets the total number of -mixtures in the tied mixture set ({\it codebook}) and \texttt{minw} -sets a floor on the mixture weights as a multiple of \texttt{MINMIX}. -This command only applies to tying item lists of type ``p'' -(see the Tie \texttt{ TI} command below). - -\subsubsection*{\tt LS statsfile} - -This command is used to read in the \htool{HERest} statistics file -(see the \htool{HERest} \texttt{-s} option) stored in \texttt{statsfile}. These -statistics are needed for certain clustering operations. -The statistics file contains the occupation count for every HMM state. - -\subsubsection*{\tt LT treesfile} - -This command reads in the decision trees stored in \texttt{treesfile}. -The trees file will consist of a set of questions defining contexts -that may appear in the subsequent trees. The trees are used to -identify either the state or the model that should be used in -a particular context. The file would normally be produced by -\texttt{ST} after tree based clustering has been performed. - -\subsubsection*{\tt MD nmix itemlist} - -Decrease the number of mixture components in each pdf in the -\texttt{itemList} to \texttt{m}. This employs a stepwise greedy -merging strategy. For a given set of mixture components the pair with -minimal merging cost is found and merged. This is repeated until only -\texttt{m} mixture components are left. Any defunct mixture components -(i.e. components with a weight below \texttt{MINMIX}) are deleted -prior to this process. - -Note that after application of this command a pdf in {\tt itemlist} -may consist of fewer, but not more than \texttt{m} mixture components. - -As an example, the command -\begin{verbatim} - MD 6 {*-aa+*.state[3].mix} -\end{verbatim} -would decrease the number of mixture components in state 3 of all -triphones of \texttt{aa} to 6. - -\subsubsection*{\tt MM macro itemList} - -This command makes each item (I=1..N) in \texttt{itemList} into a -macro with name \texttt{nameI} and a usage of one. This command -can prevent unnecessary duplication of structures when HMMs -are cloned or duplicated. - -\subsubsection*{\tt MT triList newTriList} - -Make a set of triphones by merging the currently loaded set of -biphones. This is a very specialised command. All currently -loaded HMMs must have 3 emitting states and be either left -or right context-dependent biphones. The list of HMMs stored -in \texttt{triList} should contain one or more triphones. For -each triphone in \texttt{triList} of the form \texttt{X-Y+Z}, there -must be currently loaded biphones \texttt{X-Y} and \texttt{Y+Z}. -A new triphone \texttt{X-Y+Z} is then synthesised by first cloning -\texttt{Y+Z} and then replacing the state information for the -initial emitting state by the state information for the initial -emitting state of \texttt{X-Y}. Note that the underlying physical -names of the biphones used to create the triphones are recorded -so that where possible, triphones generated from tied biphones -are also tied. On completion, the new list of triphones including -aliases is written to the file \texttt{newTriList}. - -\subsubsection*{\tt MU m itemList(p)} - -Increase the number of non-defunct mixture components -in each pdf in the \texttt{itemList} to \texttt{m} (when \texttt{m} -is just a number) or by \texttt{m} (when \texttt{m} is a number -preceeded by a \texttt{+} sign. A defunct mixture -is one for which the weight has fallen below \texttt{MINMIX}. This command -works in two steps. Firstly, the weight of each mixture -in each pdf is checked. If any defunct mixtures are discovered, -then each is successively replaced by a non-defunct -mixture component until either the required total number of non-defunct -mixtures is reached or there are no defunct mixtures left. -This replacement works by first deleting the defunct mixture -and then finding the mixture with the largest weight and splitting -it. -The split operation is as follows. The weight of the mixture -component is first halved and then the mixture is cloned. The -two identical mean vectors are then perturbed by adding $0.2$ -standard deviations to one and subtracting the same amount -from the other. - -In the second step, the mixture component with the largest -weight is split as above. This is repeated until the required -number of mixture components are obtained. -Whenever, a mixture is split, a count is incremented for that mixture -so that splitting occurs evenly across the mixtures. Furthermore, -a mixture whose {\it gconst} value falls more than four standard -deviations below the mean is not split. - -As an example, the command -\begin{verbatim} - MU 6 {*-aa+*.state[3].mix} -\end{verbatim} -would increase the number of mixture components in state 3 -of all triphones of \texttt{aa} to 6. - -\subsubsection*{\tt NC N macro itemList(s)} - -N-cluster the states listed in the -\texttt{itemList} and tie each cluster \texttt{i} as macro \texttt{macroi} -where \texttt{i} is 1,2,3,\ldots,\texttt{N}. -The set of states in the \texttt{itemList} are divided into \texttt{N} -clusters using the following furthest neighbour hierarchical -cluster algorithm: -\begin{verbatim} - create 1 cluster for each state; - n = number of clusters; - while (n>N) { - find i and j for which g(i,j) is minimum; - merge clusters i and j; - } -\end{verbatim} -Here \texttt{g(i,j)} is the inter-group distance between -clusters \texttt{i} and \texttt{j} defined as the maximum -distance between any state in cluster \texttt{i} and any state -in cluster \texttt{j}. The calculation of the inter-state -distance depends on the type of HMMs involved. Single -mixture Gaussians use -\begin{equation} - d(i,j) = \frac{1}{S} \sum_{s=1}^S - \left[ - \frac{1}{V_s} \sum_{k=1}^{V_s} - \frac{({\mu}_{isk} - {\mu}_{jsk})^2}{ - {\sigma}_{isk}{\sigma}_{jsk}} - \right]^{\frac{1}{2}} -\end{equation} -where $V_s$ is the dimensionality of stream $s$. Fully tied -mixture systems (ie \texttt{TIEDHS}) use -\begin{equation} - d(i,j) = \frac{1}{S} \sum_{s=1}^S - \left[ - \frac{1}{M_s} \sum_{m=1}^{M_s} - (c_{ism} - c_{jsm})^2 - \right]^{\frac{1}{2}} -\end{equation} -and all others use -\begin{equation} - d(i,j) = - \frac{1}{S} \sum_{s=1}^S - \frac{1}{M_s} \sum_{m=1}^{M_s} - \log[b_{js}(\bm{\mu}_{ism})] + \log[b_{is}(\bm{\mu}_{jsm})] -\end{equation} -where $b_{js}(\bm{x})$ is as defined in equation~\ref{e:cdpdf} for -the continuous case and equation~\ref{e:ddpdf} for the discrete case. The actual -tying of the states in each cluster is performed exactly as for -the Tie (\texttt{TI}) command below. The macro for the \texttt{i}'th -tied cluster is called \texttt{macroi}. - -\subsubsection*{\tt PR } - -This command takes a model set that has been estimated with an HLDA transform, -but stored as a semi-tied transform rather than an input transform and -transforms it into a model-set with the projected number of dimensions and -an input transform. - -\subsubsection*{\tt PS nstates power [numiters] } - -This command sets the number of Gaussians in each HMM state -proportional to a power of the number of frames available for training it. The -number of frames is obtained from a ``stats'' file output by \htool{HERest}, -which is loaded by the \texttt{LS} command. Typical usage might be: -\begin{verbatim} - LS - PS 16 0.2 -\end{verbatim} -in order to achieve an average of 16 Gaussians per state with a power -of 0.2. - -It is always advisable when increasing the number of Gaussians in states to -increase the number by small increments and re-estimate HMMs using -\htool{HERest} once or more in between. It may be difficult to avoid a -large increase in number of Gaussians in particular states when moving from -a HMM set with a constant number of Gaussians per state to one controlled -by a power law. Therefore the PS command has a facility for increasing -the number of Gaussians gradually where the target is larger than the -initial number of Gaussians, so that HERest can be run in between. In this -example, one could use the \htool{HHEd} command \texttt{PS}~16~0.2~3, run -\htool{HERest}, use the command \texttt{PS}~16~0.2~2, run \htool{HERest}, -and then run \texttt{PS}~16~0.2~1 before the final re-estimation with -\htool{HERest}. The last argument is the number of iterations remaining. -A fairly similar effect could be obtained by increasing the power linearly -from zero. - - -\subsubsection*{\tt QS name itemList(h)} - -Define a question \texttt{name} which is true for all the models in -\texttt{itemList}. These questions can subsequently be used as part -of the decision tree based clustering procedure (see \texttt{TB} -command below). - -\subsubsection*{\tt RC N identifier [itemlist]} - -This command is used to grow a regression class tree for adaptation -purposes. A regression class tree is grown with -\texttt{N} terminal or leaf nodes, using the centroid splitting algorithm -with a Euclidean distance measure to cluster the model set's mixture -components. Hence each leaf node specifies a particular mixture -component cluster. The regression class tree is saved with the macro -identifier \texttt{identifier\_N}. Each Gaussian component is also -labelled with a regression class number (corresponding to the leaf -node number that the Gaussian component resides in). In order to grow -the regression class tree it is necessary to load in a \texttt{statsfile} -using the \texttt{LS} command. It is also possible to specify an -\texttt{itemlist} containing the ``non-speech'' sound components -such as the silence mixture components. If this is included then the -first split made will result in one leaf containing the specified -non-speech sound components, while the other leaf will contain the -rest of the model set components. Tree construction then continues as usual. - -\subsubsection*{\tt RN hmmIdName} - -Rename or add the hmm set identifier in the global options macro to -{\tt hmmIdName}. - -\subsubsection*{\tt RM hmmFile} - -Load the hmm from \texttt{hmmFile} and subtract the mean from state 2, -mixture 1 of the model from every loaded model. Every component -of the mean is subtracted including deltas and accelerations. - -\subsubsection*{\tt RO f [statsfile]} - -This command is used to remove outlier states during clustering -with subsequent \texttt{NC} or \texttt{TC} commands. -If \texttt{statsfile} is present it first reads in the \htool{HERest} statistics -file (see \texttt{LS}) otherwise it expects a separate \texttt{LS} command -to have already been used to read in the statistics. -Any subsequent \texttt{NC}, \texttt{TC} or \texttt{TB} commands are -extended to ensure that the occupancy clusters produced exceeds the -threshold \texttt{f}. -For \texttt{TB} this is used to choose which questions are allowed to -be used to split each node. Whereas for \texttt{NC} and \texttt{TC} -a final merging pass is used and for as long the smallest cluster count -falls below the threshold \texttt{f}, then that cluster is merged with -its nearest neighbour. - -\subsubsection*{\tt RT i j itemList(t)} - -Remove the transition from state \texttt{i} to \texttt{j} in all transition -matrices given in the \texttt{itemList}. After removal, the remaining -non-zero transition probabilities for state \texttt{i} -are rescaled so that $\sum_k a_{ik} = 1 $. - -\subsubsection*{\tt SH} - -Show the current HMM set. This command can be inserted into -edit scripts for debugging. It prints a summary of each -loaded HMM identifying any tied parameters. - -\subsubsection*{\tt SK skind} - -Change the sample kind of all loaded HMMs to \texttt{skind}. This -command is typically used in conjunction with the \texttt{SW} command. -For example, to add delta coefficients to a set of models, the \texttt{SW} -command would be used to double the stream widths and then this -command would be used to add the \texttt{\_D} qualifier. - -\subsubsection*{\tt SS N} - -Split into N independent data streams. -This command causes the currently loaded set of HMMs to be converted -from 1 data stream to N independent data streams. The widths of -each stream are determined from the single stream vector size and -the sample kind as described in section~\ref{s:streams}. -Execution of this command will cause -any tyings associated with the split stream to -be undone. - -\subsubsection*{\tt ST filename} - -Save the currently defined questions and trees to file \texttt{filename}. -This allows subsequent construction of models using for new contexts -using the \texttt{LT} and \texttt{AU} commands. - -\subsubsection*{\tt SU N w1 w2 w3 .. wN} - -Split into N independent data streams with stream widths as specified. -This command is similar to the \texttt{SS} command except that the -width of each stream is defined explicity by the user rather -than using the built-in stream splitting rules. -Execution of this command will cause -any tyings associated with the split stream to -be undone. - -\subsubsection*{\tt SW s n} - -Change the width of stream \texttt{s} of all currently loaded HMMs to -\texttt{n}. Changing the width of stream involves changing the dimensions -of all mean and variance vectors or covariance matrices. If \texttt{n} -is greater than the current width of stream \texttt{s}, then mean vectors -are extended with zeroes and variance vectors are extended with 1's. -Covariance matrices are extended with zeroes everywhere except for the -diagonal elements which are set to 1. This command preserves any -tyings which may be in force. - -\subsubsection*{\tt TB f macro itemList(s or h)} - -Decision tree cluster all states in the given \texttt{itemList} and -tie them as \texttt{macroi} where \texttt{i} is 1,2,3,\ldots. -This command performs a top down clustering of the states or -models appearing in \texttt{itemlist}. This clustering starts by -placing all items in a single root node and then choosing a -question from the current set to split the node in such a way -as to maximise the likelihood of a single diagonal covariance -Gaussian at each of the child nodes generating the training data. -This splitting continues until the increase in likelihood falls -below threshold \texttt{f} or no questions are available which do -not pass the outlier threshold test. -This type of clustering is only implimented for single mixture, -diagonal covariance untied models. - -\subsubsection*{\tt TC f macro itemList(s)} - -Cluster all states in the given -\texttt{itemList} and tie them as \texttt{macroi} where -\texttt{i} is 1,2,3,\ldots. This command is identical to the -\texttt{NC} command described above except that the number of clusters -is varied such that the maximum within cluster distance is less than -the value given by \texttt{f}. - -\subsubsection*{\tt TI macro itemList} - -Tie the items in \texttt{itemList} and assign them to the specified -\texttt{macro} name. This command applies to any item type but -all of the items in \texttt{itemList} must be of the same type. -The detailed method of tying depends on the item type as follows: -\begin{description} - \item[state(s)] the state with the largest total value of \texttt{gConst} - in stream 1 (indicating broad variances) and the minimum number of - defunct mixture weights (see \texttt{MU} command) is selected from the - item list and all states are tied to this typical state. - \item[transitions(t)] all transition matrices in the item list are - tied to the last in the list. - \item[mixture(m)] all mixture components in the item list are tied - to the last in the list. - \item[mean(u)] the average vector of all the mean vectors - in the item list is calculated and all the means are tied to this - average vector. - \item[variance(v)] a vector is constructed for which each element - is the maximum of the corresponding elements from the set of - variance vectors to be tied. All of the variances are then tied - to this maximum vector. - \item[covariance(i)] all covariance matrices in the item list are tied - to the last in the list. - \item[xform(x)] all transform matrices in the item list are tied - to the last in the list. - \item[duration(d)] all duration vectors in the item list are tied - to the last in the list. - \item[stream weights(w)] all stream weight vectors in the item - list are tied to the last in the list. - \item[pdf(p)] as noted earlier, pdf's are tied to create tied - mixture sets rather than to create a shared pdf. The procedure - for tying pdf's is as follows - \begin{enumerate} - \item All mixtures from all pdf's in the item list are collected - together in order of mixture weight. - \item If the number of mixtures exceeds the join size $J$ [see the - Join (\texttt{JO}) command above], then all but the first $J$ mixtures - are discarded. - \item If the number of mixtures is less than $J$, then the - mixture with the largest weight is repeatedly split until - there are exactly $J$ mixture components. The split procedure - used is the same as for the MixUp (\texttt{MU}) command - described above. - \item All pdf's in the item list are made to share all $J$ - mixture components. The weight for each mixture is set - proportional to the log likelihood of the mean vector of - that mixture with respect to the original pdf. - \item Finally, all mixture weights below the floor set by the - Join command are raised to the floor value and all of the - mixture weights are renormalised. - \end{enumerate} -\end{description} - -\subsubsection*{\tt TR n} - -Change the level of detail for tracing and consists of a number -of separate flags which can be added together. -Values 0001, 0002, 0004, 0008 have the same meaning as the command -line trace level but apply only to a single block of commands -(a block consisting of a set of commands of the name). -A value of 0010 can be used to show current memory usage. - -\subsubsection*{\tt UT itemList} - -Untie all items in \texttt{itemList}. For each item in the item list, -if the usage counter for that item is greater than 1 then it -is cloned, the original shared item is replaced by the cloned copy -and the usage count of the shared item is reduced by 1. -If the usage count is already 1, the associated macro is simply -deleted and the usage count set to 0 to indicate an unshared item. -Note that it is not possible to untie a pdf since these are not -actually shared [see the Tie (\texttt{TI}) command above]. - -\subsubsection*{\tt XF filename} - -Sets the input transform of the model-set to be filename. - -\subsection{Use} - -\htool{HHEd} is invoked by typing the command line -\begin{verbatim} - HHEd [options] edCmdFile hmmList -\end{verbatim} -where \texttt{edCmdFile} is a text file containing a sequence of edit commands -as described above and \texttt{hmmList} defines the set of HMMs to be edited -(see \htool{HModel} for the format of HMM list). -If the models are to be kept in separate files rather than being stored in an -MMF, the configuration variable \texttt{KEEPDISTINCT} should be set to true. -The available options for \htool{HHEd} are - -\begin{optlist} - - \ttitem{-d dir} This option tells \htool{HHEd} to look in - the directory \texttt{dir} to find the model definitions. - - \ttitem{-o ext} This causes the file name extensions of the - original models (if any) to be replaced by \texttt{ext}. - - \ttitem{-w mmf} Save all the macros and model definitions in a - single master macro file \texttt{mmf}. - - \ttitem{-x s} Set the extension for the edited output files to be \texttt{s} - (default is to to use the original names unchanged). - - \ttitem{-z} Setting this option causes all aliases in the loaded - HMM set to be deleted (zapped) immediately before - loading the definitions. The result is that all logical names - are ignored and the actual HMM list - consists of just the physically distinct HMMs. -\stdoptB -\stdoptH -\stdoptM -\stdoptQ - -\end{optlist} -\stdopts{HHEd} - -\subsection{Tracing} - -\htool{HHEd} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} intermediate progress reporting. - \ttitem{00004} detailed progress reporting. - \ttitem{00010} show item lists used for each command. - \ttitem{00020} show memory usage. - \ttitem{00100} show changes to macro definitions. - \ttitem{00200} show changes to stream widths. - \ttitem{00400} show clusters. - \ttitem{00800} show questions. - \ttitem{01000} show tree filtering. - \ttitem{02000} show tree splitting. - \ttitem{04000} show tree merging. - \ttitem{10000} show good question scores. - \ttitem{20000} show all question scores. - \ttitem{40000} show all merge scores. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hhed@\htool{HHEd}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HInit.aux b/HTKBook/HTKRef/HInit.aux deleted file mode 100644 index 2c9ea57..0000000 --- a/HTKBook/HTKRef/HInit.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.9}HInit}{281}{section.17.9}} -\newlabel{s:HInit}{{17.9}{281}{HInit\relax }{section.17.9}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.9.1}Function}{281}{subsection.17.9.1}} -\newlabel{s:HInit-Function}{{17.9.1}{281}{Function\relax }{subsection.17.9.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.9.2}Use}{281}{subsection.17.9.2}} -\newlabel{s:HInit-Use}{{17.9.2}{281}{Use\relax }{subsection.17.9.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.9.3}Tracing}{282}{subsection.17.9.3}} -\newlabel{s:HInit-Tracing}{{17.9.3}{282}{Tracing\relax }{subsection.17.9.3}{}} -\@setckpt{HTKRef/HInit}{ -\setcounter{page}{283} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{7} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{9} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{85} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HInit.tex b/HTKBook/HTKRef/HInit.tex deleted file mode 100644 index 203cd7c..0000000 --- a/HTKBook/HTKRef/HInit.tex +++ /dev/null @@ -1,181 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 31/10/95 -% - -\newpage -\mysect{HInit}{HInit} - -\mysubsect{Function}{HInit-Function} - -\index{hinit@\htool{HInit}|(} -\htool{HInit} is used to provide initial estimates for the parameters -of a single HMM using a set of observation sequences. -It works by repeatedly using Viterbi alignment to segment the -training observations and then recomputing the parameters -by pooling the vectors in each segment. For mixture Gaussians, each -vector in each segment is aligned with the component with the highest -likelihood. Each cluster of vectors then determines the parameters -of the associated mixture component. -In the absence of an initial model, the process -is started by performing a uniform -segmentation of each training observation and for mixture Gaussians, -the vectors in each uniform segment are clustered using a modified K-Means -algorithm\footnote{This algorithm is significantly different from -earlier versions of HTK where K-means clustering was used at every -iteration and the Viterbi alignment was limited to states}. - -\htool{HInit} can be used to provide initial estimates of whole word models -in which case the observation sequences are realisations of the -corresponding vocabulary word. -Alternatively, \htool{HInit} can be used to generate initial estimates of -{\em seed} HMMs for phoneme-based speech recognition. -In this latter case, the observation sequences will consist -of segments of continuously spoken training material. \htool{HInit} will -{\it cut} these out of the training data automatically by simply -giving it a segment label. - -In both of the above applications, \htool{HInit} normally takes -as input a prototype -HMM definition which defines the required HMM topology i.e.\ it has -the form of the required HMM except that means, variances and mixture -weights are ignored\footnote{Prototypes should either -have GConst set (the value does -not matter) to avoid {\tt HTK} trying to compute it or -variances should be set to a positive value such as 1.0 to -ensure that GConst is computable}. The -transition matrix of the prototype specifies both the allowed -transitions and their initial probabilities. Transitions which -are assigned zero probability will remain zero and hence denote -non-allowed transitions. \htool{HInit} estimates transition probabilities -by counting the number of times each state is visited during -the alignment process. - -\htool{HInit} supports multiple mixtures, multiple streams, -parameter tying within a single model, full or diagonal -covariance matrices, tied-mixture models and discrete models. -The output of HInit is typically input to HRest. - -Like all re-estimation tools, \htool{HInit} allows a floor to be set on -each individual variance by defining a variance floor macro for each -data stream (see chapter~\ref{c:Training}). - -\mysubsect{Use}{HInit-Use} - -\htool{HInit} is invoked via the command line -\begin{verbatim} - HInit [options] hmm trainFiles ... -\end{verbatim} -This causes the means and variances of the given {\tt hmm} to be -estimated repeatedly using the data in {\tt trainFiles} -until either a maximum iteration limit is reached -or the estimation converges. -The HMM definition can be contained within one or more macro -files loaded via the standard \texttt{-H} option. Otherwise, the -definition will be read from a file called \texttt{hmm}. -The list of train files can be stored in a script file if required. - -The detailed operation of \htool{HInit} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-e f} This sets the convergence factor to the real value {\tt f}. - The convergence factor is the relative change between successive - values of $P_{max}({O}|\lambda)$ computed as a by-product - of the Viterbi alignment stage (default value 0.0001). - - \ttitem{-i N} This sets the maximum number of estimation cycles - to {\tt N} (default value 20). - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HInit} searches - through all of the training files and cuts out all segments with - the given label. When this option is not used, \htool{HInit} assumes that - each training file is a single token. - - \ttitem{-m N} This sets the minimum number of training examples so - that if fewer than {\tt N} examples are supplied an error is - reported (default value 3). - - \ttitem{-n} This flag suppresses the initial uniform - segmentation performed by \htool{HInit} allowing it to be used - to update the parameters of an existing model. - - \ttitem{-o s} The string {\tt s} is used as the name of the output - HMM in place of the source name. This is provided in \htool{HInit} - since it is often used to initialise a model from a prototype - input definition. The default is to use the source name. - - \ttitem{-u flags} By default, \htool{HInit} updates all - of the HMM parameters, - that is, means, variances, mixture weights - and transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance), - {\tt t} (transition) and {\tt w} (mixture weight). The presence of a - letter enables the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f} The default value - is 0.0. - - \ttitem{-w f} Any mixture weight or discrete observation probability - which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - -\stdoptB -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HInit} - -\mysubsect{Tracing}{HInit-Tracing} - -\htool{HInit} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{000001} basic progress reporting. - \ttitem{000002} file loading information. - \ttitem{000004} segments within each file. - \ttitem{000010} uniform segmentation. - \ttitem{000020} Viterbi alignment. - \ttitem{000040} state alignment. - \ttitem{000100} mixture component alignment. - \ttitem{000200} count updating. - \ttitem{000400} output probabilities. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hinit@\htool{HInit}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HLEd.aux b/HTKBook/HTKRef/HLEd.aux deleted file mode 100644 index 160c720..0000000 --- a/HTKBook/HTKRef/HLEd.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.10}HLEd}{283}{section.17.10}} -\newlabel{s:HLEd}{{17.10}{283}{HLEd\relax }{section.17.10}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.10.1}Function}{283}{subsection.17.10.1}} -\newlabel{s:HLEd-Function}{{17.10.1}{283}{Function\relax }{subsection.17.10.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.10.2}Use}{284}{subsection.17.10.2}} -\newlabel{s:HLEd-Use}{{17.10.2}{284}{Use\relax }{subsection.17.10.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.10.3}Tracing}{285}{subsection.17.10.3}} -\newlabel{s:HLEd-Tracing}{{17.10.3}{285}{Tracing\relax }{subsection.17.10.3}{}} -\@setckpt{HTKRef/HLEd}{ -\setcounter{page}{286} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{8} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{10} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{86} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLEd.tex b/HTKBook/HTKRef/HLEd.tex deleted file mode 100644 index 831bdf8..0000000 --- a/HTKBook/HTKRef/HLEd.tex +++ /dev/null @@ -1,202 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\newpage -\mysect{HLEd}{HLEd} - -\mysubsect{Function}{HLEd-Function} - -\index{hled@\htool{HLEd}|(} -This program is a simple editor for manipulating label files. -Typical examples of its use might be to merge a sequence of -labels into a single composite label or to expand a set of -labels into a context sensitive set. \htool{HLEd} works by -reading in a list of {\em editing} commands from an edit -script file and then makes an edited copy of one or more -label files. For multiple level files, edit commands are applied -to the \textit{current level} which is initially the first (i.e.\ 1). -Other levels may be edited by moving to the required level using the -\texttt{ML} Move Level command. - -Each edit command in the script file must be -on a separate line. The first two-letter mnemonic on each line is the command name and -the remaining letters denote labels\footnote{In earlier versions of -HTK, \htool{HLEd} command names consisted of a single letter. These -are still supported for backwards compatibility and they are included -in the command summary produced using the \texttt{-Q} option. -However, commands -introduced since version 2.0 have two letter names.}. -The commands supported may be divided into -two sets. Those in the first set are used to edit individual -labels and they are as follows - -\begin{varlist} - \fwitem{2cm}{CH X A Y B} Change \texttt{Y} in the context of \texttt{A\_B} - to \texttt{X}. \texttt{A} and/or \texttt{B} may be a \texttt{*} to match - any context, otherwise they must be defined by a \texttt{DC} command - (see below). A - block of consecutive \texttt{CH} commands are effectively executed in - parallel so that the contexts are those that exist before any of - the commands in the block are applied. - \fwitem{2cm}{DC A B C ..} define the context \texttt{A} as the set of labels - \texttt{B}, \texttt{C}, etc. - \fwitem{2cm}{DE A B ..} Delete any occurrences of labels \texttt{A} - or \texttt{B} etc. - \fwitem{2cm}{FI A Y B} Find \texttt{Y} in the context of \texttt{A\_B} - and count the number of occurrences. - \fwitem{2cm}{ME X A B ..} Merge any sequence of labels \texttt{A} - \texttt{B} \texttt{C} etc.\ and call the new segment \texttt{X}. - \fwitem{2cm}{ML N} Move to label level \texttt{N}. - \fwitem{2cm}{RE X A B ..} Replace all occurrences of labels \texttt{A} - or \texttt{B} etc.\ by the label \texttt{X}. -\end{varlist} - -The commands in the second set perform global operations on whole -transcriptions. They are as follows. - -\begin{varlist} - \fwitem{2cm}{DL [N]} Delete all labels in the current level. If the - optional integer arg is given, then level \texttt{N} is deleted. - \fwitem{2cm}{EX} Expand all labels either from words to phones using the - first pronunciation from a dictionary when it is specified on the - command line otherwise expand labels of the form - \texttt{A\_B\_C\_D\_...} into a sequence of separate labels - \texttt{A B C D ....}. This is useful for label formats which - include a complete orthography as a single label or for creating - a set of sub-word labels from a word orthography for a sub-word - based recogniser. When a label is expanded in this way, the - label duration is divided into equal length segments. This can - only be performed on the root level of a multiple level file. - \fwitem{2cm}{FG X} Mark all unlabelled segments of the input - file of duration greater than $T_g$ msecs with the label \texttt{X}. - The default value for $T_g$ is 50000.0 (=5msecs) but this - can be changed using the \texttt{-g} command line option. This - command - is mainly used for explicitly labelling inter-word silences in - data files for which only the actual speech has been transcribed. - \fwitem{2cm}{IS A B} Insert label \texttt{A} at the start of every - transcription and \texttt{B} at the end. This command is usually - used to insert silence labels. - \fwitem{2cm}{IT} Ignore triphone contexts in \texttt{CH} and \texttt{FI} - commands. - \fwitem{2cm}{LC [X]} Convert all phoneme labels to left context - dependent. If \texttt{X} is given then the first phoneme label - \texttt{a} becomes \texttt{X-a} otherwise it is left unchanged. - \fwitem{2cm}{NB X} The label \texttt{X} (typically a short pause) - should be ignored at word boundaries when using the context - commands \texttt{LC}, \texttt{RC} and \texttt{TC}. - \fwitem{2cm}{RC [X]} Convert all phoneme labels to right context - dependent. If \texttt{X} is given then the last phoneme label - \texttt{z} becomes \texttt{z+X} otherwise it is left unchanged. - \fwitem{2cm}{SB X} Define the label \texttt{X} to be a sentence boundary - marker. This label can then be used in context-sensitive change - commands. - \fwitem{2cm}{SO} Sort all labels into time order. - \fwitem{2cm}{SP} Split multiple levels into multiple alternative label lists. - \fwitem{2cm}{TC [X[Y]]} Convert all phoneme labels to Triphones, that is - left and right context - dependent. If \texttt{X} is given then the first phoneme label - \texttt{a} becomes \texttt{X-a+b} otherwise it is left unchanged. - If \texttt{Y} is given then the last phoneme label - \texttt{z} becomes \texttt{y-z+Y} otherwise if \texttt{X} is given then it - becomes \texttt{y-z+X} otherwise it is left unchanged. - \fwitem{2cm}{WB X} Define \texttt{X} to be an inter-word label. - This command affects the operation of the \texttt{LC}, \texttt{RC} - and \texttt{TC} commands. The expansion of context labels is - blocked wherever an inter-word label occurs. -\end{varlist} - -The source and target label file formats can be -defined using the \texttt{-G} and \texttt{-P} command line arguments. They can -also be set using the configuration variables \texttt{SOURCELABEL} -and \texttt{TARGETLABEL}. The default for both cases is the HTK format. - -\mysubsect{Use}{HLEd-Use} - -\htool{HLEd} is invoked by typing the command line -\begin{verbatim} - HLEd [options] edCmdFile labFiles .. -\end{verbatim} -This causes \htool{HLEd} to be applied to each \texttt{labFile} in turn -using the edit commands listed in \texttt{edCmdFile}. The -\texttt{labFiles} may be master label files. -The available options are - -\begin{optlist} - - \ttitem{-b} Suppress label boundary times in output files. - - \ttitem{-d s} Read a dictionary from file {\tt s} and use this - for expanding labels when the {\tt EX} command is used. - - \ttitem{-i mlf} This specifies that the output transcriptions - are written to the master label file \texttt{mlf}. - - \ttitem{-g t} Set the minimum gap detected by the \texttt{FG} to be \texttt{t} - (default 50000.0 = 5msecs). - All gaps of shorter duration than \texttt{t} are ignored and not labelled. - - \ttitem{-l s} Directory to store output label files (default is current directory). - When output is directed to an MLF, this option can be used to - add a path to each output file name. In particular, setting the option - \verb+-l '*'+ will cause a label file named \texttt{xxx} to be prefixed - by the pattern \verb+"*/xxx"+ in the output MLF file. This is useful - for generating MLFs which are independent of the location of the - corresponding data files. - - \ttitem{-m} Strip all labels to monophones on loading. - - \ttitem{-n fn} This option causes a list of all new label names - created to be output to the file \texttt{fn}. - -\stdoptG -\stdoptI -\stdoptP -\stdoptX - -\end{optlist} -\stdopts{HLEd} - -\mysubsect{Tracing}{HLEd-Tracing} - -\htool{HLEd} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{000001} basic progress reporting. - \ttitem{000002} edit script details. - \ttitem{000004} general command operation. - \ttitem{000010} change operations. - \ttitem{000020} level split/merge operations. - \ttitem{000040} delete level operation. - \ttitem{000100} edit file input. - \ttitem{000200} memory usage. - \ttitem{000400} dictionary expansion in \texttt{EX} command -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hled@\htool{HLEd}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HLMCopy.aux b/HTKBook/HTKRef/HLMCopy.aux deleted file mode 100644 index 5a668e5..0000000 --- a/HTKBook/HTKRef/HLMCopy.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.12}HLMCopy}{287}{section.17.12}} -\newlabel{s:HLMCopy}{{17.12}{287}{HLMCopy\relax }{section.17.12}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.12.1}Function}{287}{subsection.17.12.1}} -\newlabel{s:HLMCopy-Function}{{17.12.1}{287}{Function\relax }{subsection.17.12.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.12.2}Use}{287}{subsection.17.12.2}} -\newlabel{s:HLMCopy-Use}{{17.12.2}{287}{Use\relax }{subsection.17.12.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.12.3}Tracing}{287}{subsection.17.12.3}} -\newlabel{s:HLMCopy-Tracing}{{17.12.3}{287}{Tracing\relax }{subsection.17.12.3}{}} -\@setckpt{HTKRef/HLMCopy}{ -\setcounter{page}{288} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{12} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLMCopy.tex b/HTKBook/HTKRef/HLMCopy.tex deleted file mode 100644 index 53fbeca..0000000 --- a/HTKBook/HTKRef/HLMCopy.tex +++ /dev/null @@ -1,97 +0,0 @@ -% -% HTKBook - Julian Odell 14/08/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{HLMCopy}{HLMCopy} - -\mysubsect{Function}{HLMCopy-Function} - -\index{hlmcopy@\htool{HLMCopy}|(} -The basic function of this tool is to copy language models. During this -operation the target model can be optionally adjusted to a specific vocabulary, -reduced in size by applying pruning parameters to the different $n$-gram -components and written out in a different file format. Previously unseen words -can be added to the language model with unigram entries supplied in a unigram -probability file. -At the same time, the tool can be used to extract word pronunciations from a -number of source dictionaries and output a target dictionary for a specified word -list. \htool{HLMCopy} is a key utility enabling the user to construct custom -dictionaries and language models tailored to a particular recognition task. - -\mysubsect{Use}{HLMCopy-Use} - -\htool{HLMCopy} is invoked by the command line -\begin{verbatim} - HLMCopy [options] inLMFile outLMFile -\end{verbatim} -This copies the language model {\tt inLMFile} to {\tt outLMFile} optionally -applying editing operations controlled by the following options. -\begin{optlist} - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. - Pruning can be applied to the bigram and higher - components of a model ($n$>1). The pruning procedure will keep only - $n$-grams which have been observed more than $c$ times. Note - that this option is only applicable to count-based language - models. - - \ttitem{-d f} Use dictionary {\tt f} as a source of pronunciations - for the output dictionary. A set of dictionaries can be - specified, in order of priority, with multiple {\tt -d} - options. - - \ttitem{-f s} Set the output language model format to {\tt s}. - Possible options are {\tt TEXT} for the standard ARPA-MIT - LM format, {\tt BIN} for Entropic {\em binary} format and - {\tt ULTRA} for Entropic {\em ultra} format. - - \ttitem{-n n} Save target model as $n$-gram. - - \ttitem{-m} Allow multiple identical pronunciations for a single - word. Normally identical pronunciations are deleted. This - option may be required when a single word/pronunciation has - several different output symbols. - - \ttitem{-o} Allow pronunciations for a single word to be selected - from multiple dictionaries. Normally the dictionaries are - prioritised by the order they appear on the command line with - only entries in the first dictionary containing a - pronunciation for a particular word being copied to the output - dictionary. - - \ttitem{-u f} Use unigrams from file {\tt f} as replacements for the - ones in the language model itself. Any words appearing in the - output language model which have entries in the unigram file - (which is formatted as {\tt LOG10PROB WORD}) use the - likelihood ({\tt log10(prob)}) from the unigram file rather - than from the language model. This allows simple language - model adaptation as well as allowing unigram probabilities to - be assigned words in the output vocabulary that do not appear - in the input language model. In some instances you may wish - to use \htool{LNorm} to renormalise the model after using {\tt - -u}. - - \ttitem{-v f} Write a dictionary covering the output vocabulary to - file {\tt f}. If any required words cannot be found in the - set of input dictionaries an error will be generated. - - \ttitem{-w f} Read a word-list defining the output vocabulary from - {\tt f}. This will be used to select the vocabulary for both - the output language model and output dictionary. - -\end{optlist} -\stdopts{HLMCopy} - -\mysubsect{Tracing}{HLMCopy-Tracing} - -\htool{HLMCopy} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlmcopy@\htool{HLMCopy}|)} diff --git a/HTKBook/HTKRef/HLRescore.aux b/HTKBook/HTKRef/HLRescore.aux deleted file mode 100644 index c03ab35..0000000 --- a/HTKBook/HTKRef/HLRescore.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.13}HLRescore}{288}{section.17.13}} -\newlabel{s:HLRescore}{{17.13}{288}{HLRescore\relax }{section.17.13}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.13.1}Function}{288}{subsection.17.13.1}} -\newlabel{s:HLRescore-Function}{{17.13.1}{288}{Function\relax }{subsection.17.13.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.13.2}Use}{288}{subsection.17.13.2}} -\newlabel{s:HLRescore-Use}{{17.13.2}{288}{Use\relax }{subsection.17.13.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.13.3}Tracing}{290}{subsection.17.13.3}} -\newlabel{s:HLRescore-Tracing}{{17.13.3}{290}{Tracing\relax }{subsection.17.13.3}{}} -\@setckpt{HTKRef/HLRescore}{ -\setcounter{page}{291} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{13} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLRescore.tex b/HTKBook/HTKRef/HLRescore.tex deleted file mode 100644 index 04be762..0000000 --- a/HTKBook/HTKRef/HLRescore.tex +++ /dev/null @@ -1,201 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Gunnar Evermann 10.12.2002 -% - -\newpage -\mysect{HLRescore}{HLRescore} - -\mysubsect{Function}{HLRescore-Function} - -\index{hlrescore@\htool{HLRescore}|(} -\htool{HLRescore} is a general lattice post-processing tool. It reads -lattices (for example produced by \htool{HVite}) and applies one of -the following operations on them: - -\begin{itemize} -\item finding 1-best path through lattice -\item pruning lattice using forward-backward scores -\item expanding lattices with new language model -\item converting lattices to equivalent word networks -\item calculating various lattice statistics -\item converting word MLF files to lattices with a language model -\end{itemize} - -A typical scenario for the use of \htool{HLRescore} is the application -of a higher order n-gram to the word lattices generated with HVite and -a bigram. This would involve the following steps: - -\begin{itemize} -\item lattice generation with HVite using a bigram -\item lattice pruning with HLRescore (\texttt{-t}) -\item expansion of lattices using a trigram (\texttt{-n}) -\item finding 1-best transcription in the expanded lattice - (\texttt{-f}) -\end{itemize} - -Another common use of HLRescore is the tuning of the language -model scaling factor and the word insertion penalty for use in -recognition. Instead of having to re-run a decoder many times with -different parameter settings the decoder is run once to generate -lattices. \htool{HLRescore} can be used to find the best transcription -for a give parameter setting very quickly. These different -transcriptions can then be scored (using \htool{HResults}) and the -parameter setting that yields the lowest word error rate can be -selected. - -Lattices produced by standard HTK decoders, for example, -\htool{HVite} and \htool{HDecode}, may still contain duplicate word -paths corresponding to different phonetic contexts caused by -pronunciation variants or optional between word short pause silence -models. These duplicate lattice nodes and arcs must be merged to -ensure that the finite state grammar created from the lattices by HTK -decoders are deterministic, and therefore usable for recognition. -This function is also supported by HLRescore. - - -\mysubsect{Use}{HLRescore-Use} - -\htool{HLRescore} is invoked via the command line -\begin{verbatim} - HLRescore [options] vocabFile LatFiles...... -\end{verbatim} - -\htool{HLRescore} reads each of the lattice files and performs the -requested operation(s) on them. At least one of the following -operations must be selected: find 1-best (\texttt{-f}), write lattices -(\texttt{-w}), calculate statistics (\texttt{-c}). - - -The detailed operation of \htool{HLRescore} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-i mlf} Output transcriptions to master file \texttt{mlf}. - - \ttitem{-l s} Directory in which to store label/lattice files. - - \ttitem{-m s} Direction of merging duplicate nodes and arcs of - lattices. The default value is \texttt{b}, indicating a merging in - a backward direction starting from the sentence end node of the - lattice will be performed. If using direction \texttt{f}, then the - forward merging will be performed instead. - - \ttitem{-n lm} Load ARPA-format n-gram language model from file - \texttt{lm} and expand lattice with this LM. All acoustic scores are - unchanged but the LM scores are replaced and lattices nodes (i.e.\ - contexts) are expanded as required by the structure of the LM. - - \ttitem{-wn lm} Load Resource Management format word pair language - model from file \texttt{lm} and apply this LM to a lattice converted - from a word MLF file. - - \ttitem{-o s} Choose how the output labels should be formatted. - \texttt{s} is a string with certain letters (from \texttt{NSCTWM}) - indicating binary flags that control formatting options. - \texttt{N} normalize acoustic scores by dividing by the duration - (in frames) of the segment. - \texttt{S} remove scores from output label. By default - scores will be set to the total likelihood of the segment. - \texttt{C} Set the transcription labels to start and end on - frame centres. By default start times are set to the start - time of the frame and end times are set to the end time of - the frame. - \texttt{T} Do not include times in output label files. - \texttt{W} Do not include words in output label files - when performing state or model alignment. - \texttt{M} Do not include model names in output label - files. - - \ttitem{-t f [a]} Perform lattice pruning after reading lattices with - beamwidth \texttt{f}. If second argument is given lower beam to - limit arcs per second to \texttt{a}. - - \ttitem{-u f} Perform lattice pruning before writing output - lattices. Otherwise like \texttt{-t}. - - \ttitem{-p f} Set the word insertion log probability to \texttt{f} - (default 0.0). - - \ttitem{-a f} Set the acoustic model scale factor to \texttt{f}. - (default value 1.0). - - \ttitem{-r f} Set the dictionary pronunciation probability scale - factor to \texttt{f}. (default value 1.0). - - \ttitem{-s f} Set the grammar scale factor to \texttt{f}. - This factor post-multiplies the language model likelihoods - from the word lattices. (default value 1.0). - - \ttitem{-d} Take pronunciation probabilities from the dictionary - instead of from the lattice. - - \ttitem{-c} Calculate and output lattice statistics. - - \ttitem{-f} Find 1-best transcription (path) in lattice. - - \ttitem{-w} Write output lattice after processing. - - \ttitem{-q s} Choose how the output lattice should be formatted. - \texttt{s} is a string with certain letters (from \texttt{ABtvaldmn}) - indicating binary flags that control formatting options. - \texttt{A} attach word labels to arcs rather than nodes. - \texttt{B} output lattices in binary for speed. - \texttt{t} output node times. - \texttt{v} output pronunciation information. - \texttt{a} output acoustic likelihoods. - \texttt{l} output language model likelihoods. - \texttt{d} output word alignments (if available). - \texttt{m} output within word alignment durations. - \texttt{n} output within word alignment likelihoods. - - \ttitem{-y ext} This sets the extension for output label files to - \texttt{ext} (default \texttt{rec}). - -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptJ -\stdoptK -\stdoptP - -\end{optlist} -\stdopts{HLRescore} - -\mysubsect{Tracing}{HLRescore-Tracing} - -\htool{HLRescore} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} enable basic progress reporting. - \ttitem{0002} output generated transcriptions. - \ttitem{0004} show details of lattice I/O - \ttitem{0010} show memory usage after each lattice -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlrescore@\htool{HLRescore}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HLStats.aux b/HTKBook/HTKRef/HLStats.aux deleted file mode 100644 index c5f9290..0000000 --- a/HTKBook/HTKRef/HLStats.aux +++ /dev/null @@ -1,44 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.14}HLStats}{291}{section.17.14}} -\newlabel{s:HLStats}{{17.14}{291}{HLStats\relax }{section.17.14}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.1}Function}{291}{subsection.17.14.1}} -\newlabel{s:HLStats-Function}{{17.14.1}{291}{Function\relax }{subsection.17.14.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.2}Bigram Generation}{291}{subsection.17.14.2}} -\newlabel{s:HLStats-Bigram Generation}{{17.14.2}{291}{Bigram Generation\relax }{subsection.17.14.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.3}Use}{292}{subsection.17.14.3}} -\newlabel{s:HLStats-Use}{{17.14.3}{292}{Use\relax }{subsection.17.14.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.14.4}Tracing}{292}{subsection.17.14.4}} -\newlabel{s:HLStats-Tracing}{{17.14.4}{292}{Tracing\relax }{subsection.17.14.4}{}} -\@setckpt{HTKRef/HLStats}{ -\setcounter{page}{293} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{14} -\setcounter{subsection}{4} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{141} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HLStats.tex b/HTKBook/HTKRef/HLStats.tex deleted file mode 100644 index 9cae227..0000000 --- a/HTKBook/HTKRef/HLStats.tex +++ /dev/null @@ -1,198 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell 24/11/97 -% - -\newpage -\mysect{HLStats}{HLStats} - -\mysubsect{Function}{HLStats-Function} - -\index{hlstats@\htool{HLStats}|(} -This program will read in a HMM list and -a set of \HTK\ format transcriptions (label files). It will then -compute various statistics which are intended to assist in -analysing acoustic training data and generating simple language -models for recognition. The specific functions provided by \htool{HLStats} -are: -\begin{enumerate} -\item number of occurrences of each distinct - logical HMM and/or each distinct physical HMM. The list printed - can be limited to the N most infrequent models. -\item minimum, maximum and average durations of each logical HMM - in the transcriptions. -\item a matrix of bigram probabilities -\item an ARPA/MIT-LL format text file of back-off bigram probabilities -\item a list of labels which cover the given set of transcriptions. -\end{enumerate} - -\mysubsect{Bigram Generation}{HLStats-Bigram Generation} - -When using the bigram generating options, each transcription is -assumed to have a unique entry and exit label which by default are -\texttt{!ENTER} and \texttt{!EXIT}. If these labels are not present -they are inserted. In addition, any label occurring in a transcription -which is not listed in the HMM list is mapped to a unique label called -\texttt{!NULL}. - -\htool{HLStats} processes all input transcriptions and -maps all labels to a set of unique integers in the range 1 to $L$, where -$L$ is the number of distinct labels. -For each adjacent pair of labels $i$ -and $j$, it counts the total number of occurrences $N(i,j)$. -Let the total -number of occurrences of label $i$ be $N(i) = \sum_{j=1}^L N(i,j)$. - -For matrix bigrams, the bigram probability $p(i,j)$ is given by -\[ - p(i,j) = \left\{ - \begin{array}{ll} - \alpha N(i,j)/N(i) & \mbox{if $N(i) > 0$} \\ - 1/L & \mbox{if $N(i) = 0$} \\ - f & \mbox{otherwise} - \end{array} - \right. -\] -where $f$ is a floor probability set by the \texttt{-f} option -and $\alpha$ is chosen to ensure that $\sum_{j=1}^L p(i,j) = 1$. - -For back-off bigrams, the unigram probabilities $p(i)$ are given -by -\[ - p(i) = \left\{ - \begin{array}{ll} - N(i)/N & \mbox{if $N(i) > u$} \\ - u/N & \mbox{otherwise} - \end{array} - \right. -\] -where $u$ is unigram floor count set by the \texttt{-u} option -and $N = \sum_{i=1}^L \max [N(i)$,u]. - -The backed-off bigram probabilities are given by -\[ - p(i,j) = \left\{ - \begin{array}{ll} - (N(i,j) - D )/N(i) & \mbox{if $N(i,j) > t$} \\ - b(i) p(j) & \mbox{otherwise} - \end{array} - \right. -\] -where $D$ is a discount and $t$ is a bigram count threshold set -by the \texttt{-t} option. The discount $D$ is fixed at $0.5$ -but can be changed via the configuration variable \texttt{DISCOUNT}. -The back-off weight $b(i)$ is calculated to ensure -that $\sum_{j=1}^L p(i,j) = 1$, i.e. -\[ - b(i) = \frac{1 - \sum_{j \in B} p(i,j)}{1 - \sum_{j \in B} p(j)} -\] -where $B$ is the set of all words for which $p(i,j)$ has a bigram. - -The formats of matrix and ARPA/MIT-LL format bigram files are described -in Chapter~\ref{c:netdict}. - -\mysubsect{Use}{HLStats-Use} - -\htool{HLStats} is invoked by the command line -\begin{verbatim} - HLStats [options] hmmList labFiles .... -\end{verbatim} -The {\tt hmmList} should contain a list of all the labels (ie model names) -used in the following label files for which statistics are required. Any -labels not appearing in the list are ignored and assumed to be -out-of-vocabulary. The list of labels is specified in the same way as for a -HMM list (see \htool{HModel}) and the logical$\Rightarrow$ -physical mapping is preserved -to allow statistics to be collected about physical names as well as logical -ones. The {\tt labFiles} may be master label files. -The available options are - -\begin{optlist} - - \ttitem{-b fn} Compute bigram statistics and store result in the - file {\tt fn}. - - \ttitem{-c N} Count the number of occurrences of each logical model - listed in the {\tt hmmList} and on completion list all models - for which there are {\tt N} or less occurrences. - - \ttitem{-d} Compute minimum, maximum and average duration statistics for each - label. - - \ttitem{-f f} Set the matrix - bigram floor probability to {\tt f} - (default value 0.0). This option should be used in - conjunction with the {\tt -b} option. - - \ttitem{-h N} Set the bigram hashtable size to medium(N=1) or - large (N=2). This option should be used in - conjunction with the {\tt -b} option. The default is small(N=0). - - \ttitem{-l fn} Output a list of covering labels to file {\tt fn}. - Only labels occurring in the {\tt labList} are counted (others - are assumed to be out-of-vocabulary). - However, this list may contain labels that do not occur in any of - the label files. The list of labels written to {\tt fn} will however - contain only those labels which occur at least once. - - \ttitem{-o} Produce backed-off bigrams rather than matrix ones. These - are output in the standard ARPA/MIT-LL textual format. - - \ttitem{-p N} Count the number of occurrences of each physical model - listed in the {\tt hmmList} and on completion list all models - for which there are {\tt N} or less occurrences. - - \ttitem{-s st en} Set the sentence start and end labels to {\tt st} - and {\tt en}. (Default {\tt !ENTER} and {\tt !EXIT}). - - \ttitem{-t n} Set the threshold count for including a bigram - in a backed-off bigram language model. This option should be used in - conjunction with the {\tt -b} and {\tt -o} options. - - \ttitem{-u f} Set the unigram floor probability to {\tt f} when - constructing a back-off bigram language model. - This option should be used in - conjunction with the {\tt -b} and {\tt -o} options. -\stdoptG -\stdoptI -\end{optlist} -\stdopts{HLStats} - -\mysubsect{Tracing}{HLStats-Tracing} - -\htool{HLStats} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} trace memory usage. - \ttitem{00004} show basic statistics whilst calculating bigrams. - This includes the global training data entropy - and the entropy for each distinct label. - \ttitem{00010} show file names as they are processed. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlstats@\htool{HLStats}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HList.aux b/HTKBook/HTKRef/HList.aux deleted file mode 100644 index 3add5fc..0000000 --- a/HTKBook/HTKRef/HList.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.11}HList}{286}{section.17.11}} -\newlabel{s:HList}{{17.11}{286}{HList\relax }{section.17.11}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.11.1}Function}{286}{subsection.17.11.1}} -\newlabel{s:HList-Function}{{17.11.1}{286}{Function\relax }{subsection.17.11.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.11.2}Use}{286}{subsection.17.11.2}} -\newlabel{s:HList-Use}{{17.11.2}{286}{Use\relax }{subsection.17.11.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.11.3}Tracing}{286}{subsection.17.11.3}} -\newlabel{s:HList-Tracing}{{17.11.3}{286}{Tracing\relax }{subsection.17.11.3}{}} -\@setckpt{HTKRef/HList}{ -\setcounter{page}{287} -\setcounter{equation}{3} -\setcounter{enumi}{5} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{11} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{136} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HList.tex b/HTKBook/HTKRef/HList.tex deleted file mode 100644 index 79bb1fe..0000000 --- a/HTKBook/HTKRef/HList.tex +++ /dev/null @@ -1,114 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 11/11/95 -% - -\newpage -\mysect{HList}{HList} - -\mysubsect{Function}{HList-Function} - -\index{hlist@\htool{HList}|(} -This program will list the contents of one or more -data sources in any \HTK\ supported format. It uses the full \HTK\ speech -input facilities described in chapter~\ref{c:speechio} and it can thus -read data from a waveform file, from a parameter file and direct from -an audio source. \htool{HList} provides -a dual r\^{o}le in \HTK. Firstly, it is used for examining the contents -of speech data files. For this function, the \texttt{TARGETKIND} configuration -variable should not be set since no conversions -of the data are required. -Secondly, it is used for checking that input -conversions are being performed properly. In the latter case, a configuration -designed for a recognition system can be used with \htool{HList} to -make sure that the translation from the source data into the required -observation structure is exactly as intended. To assist this, options -are provided to split the input data into separate data streams (\texttt{-n}) -and to explicitly list the identity of each parameter in an observation -(\texttt{-o}). - -\mysubsect{Use}{HList-Use} - -HList is invoked by typing the command line -\begin{verbatim} - HList [options] file ... -\end{verbatim} -This causes the contents of each {\tt file} to be listed to the -standard output. If no files are given and the source format -is \texttt{HAUDIO}, then the audio source is listed. The source -form of the data can be converted and listed in a variety of target forms by -appropriate settings of the configuration variables, in particular -\texttt{TARGETKIND}\footnote{The \texttt{TARGETKIND} is equivalent to -the \texttt{HCOERCE} environment variable used in earlier versions -of HTK}. - -The allowable options to \htool{HList} are - -\begin{optlist} - - \ttitem{-d} Force each observation to be listed as discrete VQ symbols. - For this to be possible the source must be either \texttt{DISCRETE} - or have an associated VQ table specified via the \texttt{VQTABLE} - configuration variable. - - \ttitem{-e N} End listing samples at sample index N. - - \ttitem{-h} Print the source header information. - - \ttitem{-i N} Print N items on each line. - - \ttitem{-n N} Display the data split into N independent data streams. - - \ttitem{-o} Show the observation structure. This identifies the r\^{o}le - of each item in each sample vector. - - \ttitem{-p} Playback the audio. When sourcing from an audio device, - this option enables the playback buffer so that after displaying the - sampled data, the captured audio is replayed. - - \ttitem{-r} Print the raw data only. This is useful for exporting a file - into a program which can only accept simple character format data. - - \ttitem{-s N} Start listing samples from sample index N. The first sample -index is 0. - - \ttitem{-t} Print the target header information. - -\stdoptF - -\end{optlist} -\stdopts{HList} - -\mysubsect{Tracing}{HList-Tracing} - -\htool{HList} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlist@\htool{HList}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HMMIRest.aux b/HTKBook/HTKRef/HMMIRest.aux deleted file mode 100644 index 4a2a4ca..0000000 --- a/HTKBook/HTKRef/HMMIRest.aux +++ /dev/null @@ -1,44 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.15}HMMIRest}{293}{section.17.15}} -\newlabel{s:HMMIRest}{{17.15}{293}{HMMIRest\relax }{section.17.15}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.15.1}Function}{293}{subsection.17.15.1}} -\newlabel{s:HMMIRest-Function}{{17.15.1}{293}{Function\relax }{subsection.17.15.1}{}} -\newlabel{eq:mmimodels}{{17.4}{293}{Function\relax }{equation.17.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.15.2}Use}{294}{subsection.17.15.2}} -\newlabel{s:HMMIRest-Use}{{17.15.2}{294}{Use\relax }{subsection.17.15.2}{}} -\newlabel{sec:hmmirestuse}{{17.15.2}{294}{Use\relax }{subsection.17.15.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.15.3}Tracing}{295}{subsection.17.15.3}} -\newlabel{s:HMMIRest-Tracing}{{17.15.3}{295}{Tracing\relax }{subsection.17.15.3}{}} -\@setckpt{HTKRef/HMMIRest}{ -\setcounter{page}{296} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{9} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{15} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{87} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HMMIRest.tex b/HTKBook/HTKRef/HMMIRest.tex deleted file mode 100644 index a848641..0000000 --- a/HTKBook/HTKRef/HMMIRest.tex +++ /dev/null @@ -1,264 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: */ -%/* */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -% - -% HTKBook - this chapter written by Dan Povey 01/11/02 -% - -\newpage -\mysect{HMMIRest}{HMMIRest} - -\mysubsect{Function}{HMMIRest-Function} - -\index{hmmirest@\htool{HMMIRest}|(} - -\htool{HMMIRest} is used to perform a single iteration of Extended Baum-Welch -for discriminative training of HMMs. Maximum Mutual Information (MMI), -Minimum Phone Error (MPE) and Minimum Word Error (MWE) are supported. -For further details of the theory and configuration settings for -discriminative training see section~\ref{s:discriminative}. A tutorial example -for discriminative training is given in section~\ref{s:egdiscriminative}. - -Discriminative training needs to be initialised with trained models; these -will generally be trained using MLE. Also essential are phone-marked lattices. -Two sets of lattices are needed: a lattice for the correct transcription of -each training file, and a lattice derived from the recognition of each -training file. These are called the ``numerator'' and ``denominator'' -lattices respectively, a reference to their respective positions in the -MMI objective function, which can be expressed as follows: - -\newcommand{\num}{{{\tt num}}} -\newcommand{\den}{{{\tt den}}} -\newcommand{\MMI}{{\tt{mmi}}} -\newcommand{\calO}{ {\bm O} } -\newcommand{\calM}{ {\cal M} } - -\begin{equation} - {\cal F}_\MMI(\lambda) = \sum_{r=1}^R\log \frac { P^\kappa(\calO_r | \calM^\num_r) } { P^\kappa(\calO_r | \calM^\den_r) }, - \label{eq:mmimodels} -\end{equation} -where $\lambda$ is the HMM parameters, $\kappa$ is a scale on the likelihoods, $\calO_r$ is the -speech data for the $r$'th training file and $\calM^\num_r$ and $\calM^\den_r$ are the numerator -and denominator models. - -The MPE/MWE criteria are examples of minimum Bayes' risk training. MPE can be expressed as -\begin{eqnarray} -{\cal F}_{\tt mpe}(\lambda) = \sum_{r=1}^R\sum_{\cal H} -\left(\frac{P^\kappa(\bm{O}^r|{\cal M}_{\cal H})} -{P^\kappa(\bm{O}^r|{\cal M}^{\tt den}_r)}\right) -{\cal L}({\cal H},{\cal H}^r_{\tt ref}) -\end{eqnarray} -where ${\cal M}_{\cal H}$ is the acoustic model for hypothesis -${\cal H}$. ${\cal L}({\cal H},{\cal H}^r_{\tt ref})$ is a loss function -measured at the phone-level. Rather than minimising the phone, or word, error, -the normalised average phone accuracy -is maximised. This may be expressed as -\begin{eqnarray} -{\hat{\lambda}} = \arg\max_{\lambda}\left\{ -1 - \frac{1}{\sum_{r=1}^RQ^r}{\cal F}_{\tt mpe}(\lambda) -\right\} -\end{eqnarray} -where $Q^r$ is the number of phones in the transcription for sequence $r$. -In practice approximate forms of the MMI and normalised average phone accuracy -criteria are optimised. - -The numerator and denominator lattices need to contain phone alignment information -(the start and end times of each phone) and language model likelihoods. -Phone alignment information can be obtained by using \htool{HDecode.mod} with -the letter \texttt{d} included in the lattice format options (specified to \htool{HDecode.mod} by the -\texttt{-q} command line option). It is important that the language model -applied to the lattice not be too informative. In addition the -pruning beam used to create the lattice should be large enough that a -reasonable set of confusable hypotheses are represented in the lattice. For -more details of this process see the tutorial -section~\ref{s:egdiscriminative}. - -Having created these lattices using an initial set of models, the -tool \htool{HMMIRest} can be used to re-estimate the HMMs for -typically 4-8 iterations, using the same set of lattices. - -\htool{HMMIRest} supports multiple mixture Gaussians, tied-mixture -HMMs, multiple data streams, parameter tying within and between models -(but not if means and variances are tied independently), and diagonal -covariance matrices only. - - -%\htool{HMMIRest} supports variance flooring in the same way as \htool{HERest}. - -%It also supports \textit{Single pass retraining}, useful when the parameterisation of -%the front-end (e.g. from MFCC to PLP coefficients) is to be modified. - - -Like \htool{HERest}, \htool{HMMIRest} includes features to allow parallel -operation where a network of processors is available. When the training set -is large, it can be split into separate chunks that are processed in -parallel on multiple machines/processors, speeding up the training process. -\htool{HMMIRest} can operate in two modes: -\begin{enumerate} -\item Single-pass operation: the data files on the command line are the - speech files to be used for re-estimation of the HMM set; the re-estimated - HMM is written by the program to the directory specified by the {\texttt{-M}} - option. -\item Two-pass operation with data split into \texttt{P} blocks: - \begin{enumerate} - \item First pass: multiple jobs are started with the options \texttt{-p 1}, - \texttt{-p 2} $\ldots$ \texttt{-p P} are given; the different subsets of training - files should be given on each command line or in a file specified by the \texttt{-S} - option. Accumulator files \texttt{/HDR

.acc.1} to \texttt{

/HDR

.acc.n} - are written, where \texttt{

} is - the directory specified by the $\texttt{-M}$ and \texttt{

} is the number specified - by the \texttt{-p} option. The number of accumulates stored depends on - the criterion and form of prior. - \item Second pass: \htool{HMMIRest} is called with \texttt{-p 0}, and the - command-line arguments are the accumulator files written by the first pass. - The re-estimated HMM set is written to the directory specified by the $\texttt{-M}$ option. - \end{enumerate} -\end{enumerate} -For more details of options of this form with \htool{HMMIRest} see section~\ref{s:hmmiresttrain} - -If there are a large number of training files, the directories specified for -the numerator and denominator lattice can contain subdirectories containing -the actual lattices. The name of the subdirectory required can be extracted -from the filenames by adding configuration variables for instance as follows: -\begin{verbatim} -LATMASKNUM = */%%%?????.??? -LATMASKDEN = */%%%?????.??? -\end{verbatim} -which would convert a filename \texttt{foo/bar12345.lat} to \texttt{

/bar/bar12345.lat}, -where \texttt{} would be the directory specified by the \texttt{-q} or \texttt{-r} option. -The \texttt{\%}'s are converted to the directory name and other characters are discarded. - -\mysubsect{Use}{HMMIRest-Use} - \label{sec:hmmirestuse} - -\htool{HMMIRest} is invoked via the command line -\begin{verbatim} - HMMIRest [options] hmmList trainFile ... -\end{verbatim} -or alternatively if the training is in parallel mode, the second pass is invoked as -\begin{verbatim} - HMMIRest [options] hmmList accFile ... -\end{verbatim} - -The full list of the options accepted by \htool{HMMIRest} is as follows. Some -of the options are marked (\texttt{hist}) to indicate that they were mainly -used for debugging and development experiments, but maintained for backward compatibility. - -\begin{optlist} - - \ttitem{-a} Use an input transform to obtain alignments for updating - models or transforms (default off). - - \ttitem{-d dir} - Normally \htool{HMMIRest} looks for HMM definitions - (not already loaded via MMF files) - in the current directory. This option tells \htool{HMMIRest} to look in - the directory {\tt dir} to find them. - - \ttitem{-g} (\texttt{hist}) Maximum Likelihood (ML) mode-- Maximum Likelihood lattice-based - estimation using only the numerator (correct-sentence) lattices. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the output transforms. - - \ttitem{-l} (\texttt{hist}) Maximum number of sentences to use (useful only for troubleshooting) - - \ttitem{-o ext} (\texttt{hist}) This causes the file name extensions of the - original models (if any) to be replaced by {\tt ext}. - - \ttitem{-p N} Set parallel mode. 1, 2 $\ldots$ N for a forward-backward - pass on data split into N blocks. 0 for re-estimating using accumulator - files that this will write. Default (-1) is single-pass operation. - - \ttitem{-q dir} Directory to look for numerator lattice files. These files - will have a filename the same as the speech file, but with extension - \texttt{lat} (or as given by \texttt{-Q} option). - - \ttitem{-qp s} Path pattern for the extended path to look for numerator lattice files. - The matched string will be spliced to the end of the directory string specified by - option `-q' for a deeper path. - - \ttitem{-r dir} Directory to look for denominator lattice files. - - \ttitem{-rp s} Path pattern for the extended path to look for denominator lattice files. - The matched string will be spliced to the end of the directory string specified by - option `-r' for a deeper path. - - \ttitem{-s file} File to write HMM statistics. - - \ttitem{-twodatafiles} Expect two of each data file for single pass retraining. - This works as for HERest; command line contains alternating alignment and update - files. - - \ttitem{-u flags} By default, \htool{HMMIRest} updates all of the HMM parameters, - that is, means, variances, mixture weights and - transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance) , - {\tt t} (transition) and {\tt w} (mixture weight). The - presence of a letter enables - the updating of the corresponding parameter set. - - \ttitem{-umle flags} (\texttt{hist}) A format as in \texttt{-u}; directs that the specified parameters - be updated using the ML criterion (for MMI operation only, not MPE/MWE). - - \ttitem{-w floor} (\texttt{hist}) Set the mixture weight floor as a multiple - of \texttt{MINMIX=1.0e-5}. Default is 2. - - \ttitem{-x ext} By default, \htool{HMMIRest} expects a HMM definition for - the label X to be stored in a file called {\tt X}. This - option causes \htool{HMMIRest} to look for the HMM definition in the - file {\tt X.ext}. -\stdoptB -\stdoptE -\stdoptF -\stdoptH -\ttitem{-Hprior mmf} Load HMM macro file {\tt mmf}, to be used as prior model in adaptation. Use with configuration variables {\tt PRIORTAU} etc. -\stdoptI -\stdoptJ -\stdoptM - - \ttitem{-Q ext} Set the lattice file extension to {\tt ext} -\end{optlist} - -\stdopts{HMMIRest} - -\mysubsect{Tracing}{HMMIRest-Tracing} - - -The command-line trace option can only be set to 0 (trace off) -or 1 (trace on), which is the default. Tracing behaviour can -be altered by the {\tt TRACE} configuration variables in the modules \htool{HArc} -and \htool{HFBLat}. - -\index{hmmirest@\htool{HMMIRest}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HParse.aux b/HTKBook/HTKRef/HParse.aux deleted file mode 100644 index 4cc9769..0000000 --- a/HTKBook/HTKRef/HParse.aux +++ /dev/null @@ -1,46 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.16}HParse}{296}{section.17.16}} -\newlabel{s:HParse}{{17.16}{296}{HParse\relax }{section.17.16}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.1}Function}{296}{subsection.17.16.1}} -\newlabel{s:HParse-Function}{{17.16.1}{296}{Function\relax }{subsection.17.16.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.2}Network Definition}{296}{subsection.17.16.2}} -\newlabel{s:HParse-Network Definition}{{17.16.2}{296}{Network Definition\relax }{subsection.17.16.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.3}Compatibility Mode}{298}{subsection.17.16.3}} -\newlabel{s:HParse-Compatibility Mode}{{17.16.3}{298}{Compatibility Mode\relax }{subsection.17.16.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.4}Use}{298}{subsection.17.16.4}} -\newlabel{s:HParse-Use}{{17.16.4}{298}{Use\relax }{subsection.17.16.4}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.16.5}Tracing}{299}{subsection.17.16.5}} -\newlabel{s:HParse-Tracing}{{17.16.5}{299}{Tracing\relax }{subsection.17.16.5}{}} -\@setckpt{HTKRef/HParse}{ -\setcounter{page}{300} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{13} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{16} -\setcounter{subsection}{5} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{91} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HParse.tex b/HTKBook/HTKRef/HParse.tex deleted file mode 100644 index d1eb2e8..0000000 --- a/HTKBook/HTKRef/HParse.tex +++ /dev/null @@ -1,331 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Phil Woodland and Steve Young 24/11/97 -% - -\newpage -\mysect{HParse}{HParse} - -\mysubsect{Function}{HParse-Function} - -\index{hparse@\htool{HParse}|(} -The \htool{HParse} program generates word level lattice files (for use -with e.g. \htool{HVite}) from a text file syntax description containing a -set of rewrite rules based on extended Backus-Naur Form (EBNF). -The EBNF rules are used to generate an internal -representation of the corresponding finite-state network where \htool{HParse} -network nodes represent the words in the network, and are connected via -sets of links. This \htool{HParse} network is then converted to \HTK\ V2 word -level lattice. The program provides one convenient way of defining such -word level lattices. - -\htool{HParse} also provides a {\em compatibility mode} for use -with \htool{HParse} syntax descriptions used in \HTK\ V1.5 where -the same format was used to define both the word level syntax -and the dictionary. -In compatibility mode \htool{HParse} will output the word level -portion of such a syntax as an \HTK\ V2 lattice file (via \htool{HNet}) -and the pronunciation information as an \HTK\ V2 dictionary file (via -\htool{HDict}). - -The lattice produced by \htool{HParse} will often contain a number -of \texttt{!NULL} nodes in order to reduce the number of arcs in the -lattice. The use of such \texttt{!NULL} nodes can both -reduce size and increase efficiency when used by recognition programs -such as \htool{HVite}. - -\mysubsect{Network Definition}{HParse-Network Definition} - -The syntax rules for the textual definition of the network are -as follows. Each node in the network has a \texttt{nodename}. -This node name will normally correspond to a word in the final syntax -network. Additionally, for use in compatibility mode, -each node can also have an external name. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= \kill -\> name \> = \> char\{char\} \\ -\> nodename \> = \> name [ "\%" ( "\%" $|$ name ) ] -\end{tabbing}} - -\noindent -Here \texttt{char} represents any character except one of the meta chars -\texttt{\{ \} [ ] $<$ $>$$|$ = \$ ( ) ; $\backslash$ / *}. The latter may, -however, be escaped using a backslash. The first name in a \texttt{nodename} -represents the name of the node (``internal name''), and the second optional name is -the ``external'' name. This is used only in compatibility mode, and is, by default -the same as the internal name. - -Network definitions may also contain variables -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= \kill -\> variable \> = \> \$name -\end{tabbing}} -\noindent -Variables are identified by a leading \$ character. They stand for -sub-networks and must be defined before they appear in the RHS of a rule -using the form -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> subnet \> = \> variable ``='' expr ``;'' -\end{tabbing}} -\noindent -An \texttt{expr} consists of a set of alternative sequences representing -parallel branches of the network. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> expr \> = \> sequence \{``$|$'' sequence\} \\ -\> sequence \> = \> factor\{factor\} -\end{tabbing}} -\noindent -Each sequence is composed of a sequence of factors where a factor -is either a node name, a variable representing some sub-network or -an expression contained within various sorts of brackets. - -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> factor \> = \> ``('' expr ``)'' \> $|$ \\ -\>\>\> ``\{'' expr ``\}'' \> $|$ \\ -\>\>\> ``$<$'' expr ``$>$'' \> $|$ \\ -\>\>\> ``['' expr ``]'' \> $|$ \\ -\>\>\> ``$<<$'' expr ``$>>$'' \> $|$ \\ -\>\>\> nodename \> $|$ \\ -\>\>\> variable -\end{tabbing}} - -Ordinary parentheses are used to bracket sub-expressions, curly braces \{ \} denote zero or more repetitions and angle brackets $<>$ denote one or more repetitions. Square brackets [$\:$] are used to enclose optional items. The double angle brackets are a special feature included for building context dependent loops and are explained further below. -Finally, the complete network is defined by a list of sub-network -definitions followed by a single expression within parentheses. -{\sf -\begin{tabbing} -++++++ \= ++++++++ \= ++ \= ++++++++++++ \= \kill -\> network \> = \> \{subnet\} ``('' expr ``)'' -\end{tabbing}} -\noindent -Note that C style comments may be placed anywhere in the text of -the network definition. - -As an example, the following network defines a syntax for some -simple edit commands -\begin{verbatim} - $dir = up | down | left | right; - $mvcmd = move $dir | top | bottom; - $item = char | word | line | page; - $dlcmd = delete [$item]; /* default is char */ - $incmd = insert; - $encmd = end [insert]; - $cmd = $mvcmd|$dlcmd|$incmd|$encmd; - ({sil} < $cmd {sil} > quit) -\end{verbatim} - -Double angle brackets are used to -construct contextually consistent context-dependent loops such -as a word-pair grammar.\footnote{The expression between -double angle brackets must be a simple list of alternative node names or -a variable which has such a list as its value} -This function can also be used to generate consistent triphone loops -for phone recognition\footnote{In \HTK\ V2 it is preferable for -these context-loop expansions to be done automatically via \htool{HNet}, -to avoid requiring a dictionary entry for every context-dependent -model}. -The entry and exit conditions to a -context-dependent loop can be controlled by the invisible -pseudo-words TLOOP\_BEGIN and TLOOP\_END. The right context of TLOOP\_BEGIN -defines the legal loop start nodes, and the left context of TLOOP\_END -defines the legal loop finishers. If TLOOP\_BEGIN/TLOOP\_END are not -present then all models are connected to the entry/exit of the loop. - -A word-pair grammar simply defines the legal -set of words that can follow each word in the vocabulary. -To generate a network to represent such a grammar a -right context-dependent loop could be used. -The legal sentence set of sentence start and end words are defined as -above using TLOOP\_BEGIN/TLOOP\_END. - -For example, the following lists the legal followers for each -word in a 7 word vocabulary - -\begin{tabbing} -+++\=++++++++\=++\= \kill -\> ENTRY \> - \> show, tell, give \\ -\> show \> - \> me, all \\ -\> tell \> - \> me, all \\ -\> me \> - \> all \\ -\> all \> - \> names, addresses \\ -\> names \> - \> and, names, addresses, show, tell, EXIT \\ -\> addresses \> - \> and, names, addresses, show, tell, EXIT \\ -\> and \> - \> names, addresses, show, tell -\end{tabbing} - -\htool{HParse} can generate a suitable lattice to represent this word-pair -grammar by using the following specification: -\begin{verbatim} - $TLOOP_BEGIN_FLLWRS = show|tell|give; - $TLOOP_END_PREDS = names|addresses; - $show_FLLWRS = me|all; - $tell_FLLWRS = me|all; - $me_FLLWRS = all; - $all_FLLWRS = names|addresses; - $names_FLLWRS = and|names|addresses|show|tell|TLOOP_END; - $addresses_FLLWRS = and|names|addresses|show|tell|TLOOP_END; - $and_FLLWRS = names|addresses|show|tell; - - ( sil << - TLOOP_BEGIN+TLOOP_BEGIN_FLLWRS | - TLOOP_END_PREDS-TLOOP_END | - show+show_FLLWRS | - tell+tell_FLLWRS | - me+me_FLLWRS | - all+all_FLLWRS | - names+names_FLLWRS | - addresses+addresses_FLLWRS | - and+and_FLLWRS - >> sil ) -\end{verbatim} -where it is assumed that each utterance begins and ends with \texttt{sil} -model. - -In this example, each set of contexts is defined by creating a variable -whose alternatives are the individual contexts. The actual context-dependent - loop is indicated by the \texttt{<< >>} brackets. -Each element in this loop is a single -variable name of the form \texttt{A-B+C} where \texttt{A} represents the left -context, \texttt{C} represents the right context and \texttt{B} is the actual word. -Each of \texttt{A}, \texttt{B} and \texttt{C} can be nodenames or -variable names but note that this is the only case where variable -names are expanded automatically and the usual -\texttt{\$} symbol is not used\footnote{If the base-names or left/right context of the context-dependent names in a context-dependent loop are variables, -no \texttt{\$} symbols are used when writing the context-dependent -nodename.}. Both \texttt{A} and \texttt{C} are optional, and left and -right contexts can be mixed in the same triphone loop. - -\mysubsect{Compatibility Mode}{HParse-Compatibility Mode} -In \htool{HParse} compatibility mode, the interpretation of the -ENBF network is that used by the \HTK\ V1.5 \htool{HVite} program. -in which \htool{HParse} ENBF notation was used to define both the word -level syntax and the dictionary. -Compatibility mode is aimed at converting files written for -\HTK\ V1.5 into their equivalent \HTK\ V2 representation. -Therefore \htool{HParse} will output the word level -portion of such a ENBF syntax as an \HTK\ V2 lattice file and the -pronunciation information is optionally stored in -an \HTK\ V2 dictionary file. When operating in compatibility mode -and not generating dictionary output, the pronunciation information -is discarded. - -In compatibility mode, the reserved -node names \texttt{WD\_BEGIN} and \texttt{WD\_END} are used to delimit word -boundaries---nodes between a \texttt{WD\_BEGIN/WD\_END} pair are called -``word-internal'' while all other nodes are ``word-external''. -All \texttt{WD\_BEGIN/WD\_END} nodes -must have an ``external name'' attached that denotes the word. -It is a requirement that the number of \texttt{WD\_BEGIN} and the number -of \texttt{WD\_END} nodes are equal and furthermore that there isn't -a direct connection from a \texttt{WD\_BEGIN} node to a \texttt{WD\_END}. -For example a portion of such an \HTK\ V1.5 network could be -\begin{verbatim} - $A = WD_BEGIN%A ax WD_END%A; - $ABDOMEN = WD_BEGIN%ABDOMEN ae b d ax m ax n WD_END%ABDOMEN; - $ABIDES = WD_BEGIN%ABIDES ax b ay d z WD_END%ABIDES; - $ABOLISH = WD_BEGIN%ABOLISH ax b aa l ih sh WD_END%ABOLISH; - ... etc - - - ( < - $A | $ABDOMEN | $ABIDES | $ABOLISH | ... etc - > ) -\end{verbatim} -\htool{HParse} will output the connectivity of the words -in an HTK V2 word lattice format file -and the pronunciation information in an HTK V2 dictionary. -Word-external nodes are treated as words and stored in the lattice -with corresponding entries in the dictionary. - -It should be noted that in \HTK\ V1.5 any ENBF network could appear -between a \texttt{WD\_BEGIN/WD\_END} pair, which includes loops. -Care should therefore be taken with syntaxes that define very complex -sets of alternative pronunciations. It should also be noted -that each dictionary entry is limited in length to 100 phones. -If multiple instances of the same word are found in the expanded -HParse network, a dictionary entry will be created for only the -first instance and subsequent instances are ignored (a warning is -printed). If words with a NULL external name are present then -the dictionary will contain a NULL output symbol. - -Finally, since the implementation of the generation of -the \htool{HParse} network has been revised\footnote{With the added benefit -of rectifying some residual bugs in the HTK V1.5 implementation} -the semantics of variable definition and use has been slightly changed. -Previously variables could be redefined during network definition -and each use would follow the most recent definition. In HTK V2 only -the final definition of any variable is used in network expansion. - -\mysubsect{Use}{HParse-Use} - -\htool{HParse} is invoked via the command line -\begin{verbatim} - HParse [options] syntaxFile latFile -\end{verbatim} -\htool{HParse} will then read the set of ENBF rules -in \texttt{syntaxFile} and produce the output lattice in \texttt{latFile}. - -The detailed operation of \htool{HParse} is controlled by the following -command line options -\begin{optlist} - \ttitem{-b} Output the lattice in binary format. This increases - speed of subsequent loading (default ASCII text lattices). - - \ttitem{-c} Set V1.5 compatibility mode. Compatibility mode can also - be set by using the configuration variable V1COMPAT - (default compatibility mode disabled). - - \ttitem{-d s} Output dictionary to file {\tt s}. This is only - a valid option when operating in compatibility mode. - If not set no dictionary will be produced. - - \ttitem{-l} Include language model log probabilities in the output - These log probabilities are calculated as - $-\log (\mbox{number of followers})$ for each network node. -\end{optlist} -\stdopts{HParse} - -\mysubsect{Tracing}{HParse-Tracing} - -\htool{HParse} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} basic progress reporting. - \ttitem{0002} show final HParse network (before conversion to a lattice) - \ttitem{0004} print memory statistics after HParse lattice generation - \ttitem{0010} show progress through glue node removal. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hparse@\htool{HParse}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HQuant.aux b/HTKBook/HTKRef/HQuant.aux deleted file mode 100644 index e6c9f78..0000000 --- a/HTKBook/HTKRef/HQuant.aux +++ /dev/null @@ -1,44 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.17}HQuant}{300}{section.17.17}} -\newlabel{s:HQuant}{{17.17}{300}{HQuant\relax }{section.17.17}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.1}Function}{300}{subsection.17.17.1}} -\newlabel{s:HQuant-Function}{{17.17.1}{300}{Function\relax }{subsection.17.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.2}VQ Codebook Format}{300}{subsection.17.17.2}} -\newlabel{s:HQuant-VQ Codebook Format}{{17.17.2}{300}{VQ Codebook Format\relax }{subsection.17.17.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.3}Use}{300}{subsection.17.17.3}} -\newlabel{s:HQuant-Use}{{17.17.3}{300}{Use\relax }{subsection.17.17.3}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.17.4}Tracing}{301}{subsection.17.17.4}} -\newlabel{s:HQuant-Tracing}{{17.17.4}{301}{Tracing\relax }{subsection.17.17.4}{}} -\@setckpt{HTKRef/HQuant}{ -\setcounter{page}{302} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{13} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{17} -\setcounter{subsection}{4} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{91} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HQuant.tex b/HTKBook/HTKRef/HQuant.tex deleted file mode 100644 index 2322cf3..0000000 --- a/HTKBook/HTKRef/HQuant.tex +++ /dev/null @@ -1,205 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 11/11/95 -% - -\newpage -\mysect{HQuant}{HQuant} - -\mysubsect{Function}{HQuant-Function} - -\index{hquant@\htool{HQuant}|(} -This program will construct a \HTK\ format VQ table consisting of one or -more codebooks, each corresponding to an independent data stream. -A codebook is a collection of indexed reference vectors that are intended to -represent the structure of the training data. Ideally, every compact -cluster of points in the training data is represented by one reference -vector. VQ -tables are used directly when building systems based on Discrete -Probability HMMs. In this case, the continuous-valued speech vectors -in each stream are replaced by the index of the closest reference -vector in each corresponding codebook. -Codebooks can also be used to attach VQ indices to -continuous observations. A typical use of this is to preselect -Gaussians in probability computations. More information on the -use of VQ tables is given in section~\ref{s:vquant}. - -Codebook construction consists of finding clusters in the training data, -assigning a unique reference vector (the cluster centroid) to each, -and storing the resultant reference vectors and associated codebook data -in a VQ table. \htool{HQuant} uses a top-down clustering process whereby -clusters are iteratively split until the desired number of clusters are -found. The optimal codebook size (number of reference vectors) depends -on the structure and amount of the training data, but a value of 256 is -commonly used. - -\htool{HQuant} can construct both linear (i.e.\ flat) and tree-structured -(i.e.\ binary) codebooks. Linear codebooks can have lower quantisation -errors but tree-structured codebooks have $\log_2 N$ access times -compared to $N$ for the linear case. The distance metric can either be -Euclidean, diagonal covariance Mahalanobis or full covariance -Mahalanobis. - -\mysubsect{VQ Codebook Format}{HQuant-VQ Codebook Format} - -Externally, a VQ table is stored in a text file consisting of a header -followed by a sequence of entries representing each tree node. One tree -is built for each stream and linear codebooks are represented by a tree -in which there are only right branches. - -The header consists of a magic number followed by the covariance kind, -the number of following nodes, the number of streams and the width -of each stream. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> header =\> magic type covkind numNodes numS swidth1 swidth2 \ldots -\end{tabbing} -} -\noindent -where {\sf magic} is a magic number which is usually the -code for the parameter kind of the data. The {\sf type} -defines the type of codebook -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> type =\> linear (0) , binary tree-structured (1) -\end{tabbing} -} -\noindent -The covariance kind determines the type of distance metric to be -used -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> covkind =\> diagonal covariance (1), full covariance (2), euclidean (5) -\end{tabbing} -} -\noindent -Within the file, these covariances are stored in inverse form. - -Each node entry has the following form -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> node-entry =\> stream vqidx nodeId leftId rightId \\ -\> \> mean-vector \\ -\> \> [inverse-covariance-matrix $|$ inverse-variance-vector] -\end{tabbing} -} -\noindent -{\sf Stream} is the stream index for this entry. {\sf Vqidx} -is the VQ index corresponding to this entry. This is the number that -appears in vector quantised speech files. In tree-structured code-books, -it is zero for non-terminal nodes. Every node has a unique -integer identifier (distinct from the VQ index) given by {\sf nodeId}. -The left and right daughter of the current node are given by -{\sf leftId} and {\sf rightId}. In a linear codebook, the left identifier -is always zero. - -Some examples of VQ tables are given in Chapter~\ref{c:discmods}. - -\mysubsect{Use}{HQuant-Use} - -\htool{HQuant} is invoked via the command line - -\begin{verbatim} - HQuant [options] vqFile trainFiles ... -\end{verbatim} -where \texttt{vqFile} is the name of the output VQ table file. -The effect of this command -is to read in training data from each \texttt{trainFile}, cluster the -data and write the final cluster centres into the VQ table file. - -The list of training files can be stored in a script file if required. -Furthermore, the data used for training the codebook -can be limited to that corresponding to a specified label. This can be -used, for example, to train phone specific codebooks. When constructing -a linear codebook, the maximum number of iterations per cluster can be -limited by setting the configuration variable \texttt{MAXCLUSTITER}. -The minimum number of samples in any one cluster can be set using the - configuration variable \texttt{MINCLUSTSIZE}. - -The detailed operation of \htool{HQuant} is controlled by the following -command line options -\begin{optlist} - \ttitem{-d} Use a diagonal-covariance Mahalanobis distance metric for - clustering (default is to use a Euclidean distance metric). - - \ttitem{-f} Use a full-covariance Mahalanobis distance metric for - clustering (default is to use a Euclidean distance metric). - - \ttitem{-g} Output the global covariance to a codebook. Normally, - covariances are computed individually for each cluster using - the data in that cluster. This option computes a global covariance - across all the clusters. - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HQuant} searches - through all of the training files and uses only the speech - frames from segments with the given label. When this option is not - used, \htool{HQuant} uses all of the data in each training file. - - \ttitem{-n S N} Set size of codebook for stream \texttt{S} - to \texttt{N} (default 256). - If tree-structured codebooks are required then \texttt{N} - must be a power of 2. - - \ttitem{-s N} Set number of streams to \texttt{N} (default 1). - Unless the \texttt{-w} option is used, the width of each stream - is set automatically depending on the size and parameter kind of the - training data. - - \ttitem{-t} Create tree-structured codebooks (default linear). - - \ttitem{-w S N} Set width of stream \texttt{S} to \texttt{N}. - This option overrides the default decomposition that \HTK\ normally - uses to divide a parameter file into streams. If this option is used, - it must be repeated for each individual stream. - -\stdoptF -\stdoptG -\stdoptI -\stdoptL -\stdoptX -\end{optlist} -\stdopts{HQuant} -\mysubsect{Tracing}{HQuant-Tracing} - -\htool{HQuant} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} dump global mean and covariance - \ttitem{00004} trace data loading. - \ttitem{00010} list label segments. - \ttitem{00020} dump clusters. - \ttitem{00040} dump VQ table. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. - -\index{hquant@\htool{HQuant}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HRest.aux b/HTKBook/HTKRef/HRest.aux deleted file mode 100644 index e7667ce..0000000 --- a/HTKBook/HTKRef/HRest.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.18}HRest}{302}{section.17.18}} -\newlabel{s:HRest}{{17.18}{302}{HRest\relax }{section.17.18}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.18.1}Function}{302}{subsection.17.18.1}} -\newlabel{s:HRest-Function}{{17.18.1}{302}{Function\relax }{subsection.17.18.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.18.2}Use}{302}{subsection.17.18.2}} -\newlabel{s:HRest-Use}{{17.18.2}{302}{Use\relax }{subsection.17.18.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.18.3}Tracing}{303}{subsection.17.18.3}} -\newlabel{s:HRest-Tracing}{{17.18.3}{303}{Tracing\relax }{subsection.17.18.3}{}} -\@setckpt{HTKRef/HRest}{ -\setcounter{page}{304} -\setcounter{equation}{6} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{14} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{18} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{92} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HRest.tex b/HTKBook/HTKRef/HRest.tex deleted file mode 100644 index 2d82d49..0000000 --- a/HTKBook/HTKRef/HRest.tex +++ /dev/null @@ -1,170 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 31/10/95 -% - -\newpage -\mysect{HRest}{HRest} - -\mysubsect{Function}{HRest-Function} - -\index{hrest@\htool{HRest}|(} -\htool{HRest} performs basic Baum-Welch re-estimation of the parameters of -a single HMM using a set of observation sequences. \htool{HRest} can be used -for normal isolated word training in which the observation sequences -are realisations of the corresponding vocabulary word. - -Alternatively, -\htool{HRest} can be used to generate \textit{seed} HMMs for phoneme-based -recognition. In this latter case, the observation sequences will consist -of segments of continuously spoken training material. \htool{HRest} will -\textit{cut} these out of the training data automatically by simply -giving it a segment label. - -In both of the above applications, \htool{HRest} is intended to operate on -HMMs with initial parameter values estimated by \htool{HInit}. - -\htool{HRest} supports multiple mixture components, multiple streams, -parameter tying within a single model, full or diagonal -covariance matrices, tied-mixture models and discrete models. -The outputs of \htool{HRest} are often further -processed by \htool{HERest}. - -Like all re-estimation tools, \htool{HRest} allows a floor to be set on -each individual variance by defining a variance floor macro for each -data stream (see chapter~\ref{c:Training}). If any diagonal covariance -component falls below $0.00001$, then the corresponding mixture weight is -set to zero. A warning is issued if the number of mixtures is greater -than one, otherwise an error occurs. Applying a variance floor via the -{\tt -v} option or a variance floor macro can be used to prevent this. - -\mysubsect{Use}{HRest-Use} - -\htool{HRest} is invoked via the command line -\begin{verbatim} - HRest [options] hmm trainFiles ... -\end{verbatim} -This causes the parameters of the given {\tt hmm} to be -re-estimated repeatedly using the data in {\tt trainFiles} -until either a maximum iteration limit is reached -or the re-estimation converges. -The HMM definition can be contained within one or more macro -files loaded via the standard \texttt{-H} option. Otherwise, the -definition will be read from a file called \texttt{hmm}. -The list of train files -can be stored in a script file if required. - -The detailed operation of \htool{HRest} is controlled by the following -command line options -\begin{optlist} - \ttitem{-c f} Set the threshold for tied-mixture observation - pruning to {\tt f}. - When all mixtures of all models are tied to create a full - tied-mixture system, the calculation of output probabilities - is treated as a special case. Only those - mixture component probabilities which fall within {\tt f} of - the maximum mixture component probability are used in calculating - the state output probabilities (default 10.0). - - \ttitem{-e f} This sets the convergence factor to the real value {\tt f}. - The convergence factor is the relative change between successive - values of $P({O}|\lambda)$ (default value 0.0001). - - \ttitem{-i N} This sets the maximum number of re-estimation cycles - to {\tt N} (default value 20). - - \ttitem{-l s} The string {\tt s} must be the name of a - segment label. When this option is used, \htool{HRest} searches - through all of the training files and cuts out all segments with - the given label. When this option is not used, \htool{HRest} assumes that - each training file is a single token. - - \ttitem{-m N} Sets the minimum number of training examples to be {\tt N}. - If fewer than {\tt N} examples are supplied then an error is - reported (default value 3). - - \ttitem{-t} Normally, training sequences are rejected if they - have fewer frames - than the number of emitting states in the HMM. Setting this - switch disables this reject mechanism\footnote{Using this option - only makes sense if the HMM has skip transitions}. - - \ttitem{-u flags} By default, \htool{HRest} updates all - of the HMM parameters, - that is, means, variances, mixture weights - and transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance), - {\tt t} (transition) and {\tt w} (mixture weight). The presence of a - letter enables the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f}. This is ignored - if an explicit variance floor macro is defined. The default value - is 0.0. - - \ttitem{-w f} Any mixture weight or discrete observation probability - which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - -\stdoptB -\stdoptF -\stdoptG -\stdoptH -\stdoptI -\stdoptL -\stdoptM -\stdoptX - -\end{optlist} -\stdopts{HRest} - -\mysubsect{Tracing}{HRest-Tracing} - -\htool{HRest} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{000001} basic progress reporting. - \ttitem{000002} output information on the training data loaded. - \ttitem{000004} the observation probabilities. - \ttitem{000010} the alpha matrices. - \ttitem{000020} the beta matrices. - \ttitem{000040} the occupation counters. - \ttitem{000100} the transition counters. - \ttitem{000200} the mean counters. - \ttitem{000400} the variance counters. - \ttitem{001000} the mixture weight counters. - \ttitem{002000} the re-estimated transition matrix. - \ttitem{004000} the re-estimated mixture weights. - \ttitem{010000} the re-estimated means. - \ttitem{020000} the re-estimated variances. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hrest@\htool{HRest}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HResults.aux b/HTKBook/HTKRef/HResults.aux deleted file mode 100644 index e8a8807..0000000 --- a/HTKBook/HTKRef/HResults.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.19}HResults}{304}{section.17.19}} -\newlabel{s:HResults}{{17.19}{304}{HResults\relax }{section.17.19}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.19.1}Function}{304}{subsection.17.19.1}} -\newlabel{s:HResults-Function}{{17.19.1}{304}{Function\relax }{subsection.17.19.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.19.2}Use}{305}{subsection.17.19.2}} -\newlabel{s:HResults-Use}{{17.19.2}{305}{Use\relax }{subsection.17.19.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.19.3}Tracing}{307}{subsection.17.19.3}} -\newlabel{s:HResults-Tracing}{{17.19.3}{307}{Tracing\relax }{subsection.17.19.3}{}} -\@setckpt{HTKRef/HResults}{ -\setcounter{page}{308} -\setcounter{equation}{8} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{15} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{19} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{93} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HResults.tex b/HTKBook/HTKRef/HResults.tex deleted file mode 100644 index fbaac83..0000000 --- a/HTKBook/HTKRef/HResults.tex +++ /dev/null @@ -1,292 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell 24/11/97 -% - - -\newpage -\mysect{HResults}{HResults} - -\mysubsect{Function}{HResults-Function} - -\index{hresults@\htool{HResults}|(} -\htool{HResults} is the \HTK\ performance analysis tool. -It reads in a set of label files (typically output -from a recognition tool such as \htool{HVite}) and compares them -with the corresponding reference transcription files. -For the analysis of speech recognition output, the comparison -is based on a Dynamic Programming-based string alignment procedure. -For the analysis of word-spotting output, the comparison -uses the standard US NIST FOM metric. - -When used to calculate the sentence accuracy using DP the basic -output is recognition statistics for the whole file set in the format -\begin{verbatim} - --------------------------- Overall Results ------------------- - SENT: %Correct=13.00 [H=13, S=87, N=100] - WORD: %Corr=53.36, Acc=44.90 [H=460,D=49,S=353,I=73,N=862] - =============================================================== -\end{verbatim} -The first line gives the sentence-level accuracy based on the -total number of label files which are identical to the transcription -files. The second line is the word accuracy based on the DP matches -between the label files and the transcriptions \footnote{ -The choice of ``Sentence'' and ``Word'' here is the usual -case but is otherwise arbitrary. -\htool{HResults} just compares label sequences. The sequences -could be paragraphs, sentences, phrases or words, and the labels -could be phrases, words, syllables or phones, etc. Options exist -to change the output designations `SENT' and `WORD' to whatever -is appropriate.}. -In this second line, -$H$ is the number of correct labels, $D$ is the number of deletions, -$S$ is the number of substitutions, $I$ is the number of insertions and -$N$ is the total number of labels in the defining transcription files. -The percentage number of labels correctly recognised is given by -\begin{equation} - \mbox{\%Correct} = \frac{H}{N} \times 100\% -\end{equation} -and the accuracy is computed by -\begin{equation} - \mbox{Accuracy} = \frac{H-I}{N} \times 100\% -\end{equation} - -In addition to the standard \HTK\ output format, -\htool{HResults} provides an alternative similar to that used -in the US NIST scoring package, i.e.\ -\begin{verbatim} - |=============================================================| - | # Snt | Corr Sub Del Ins Err S. Err | - |-------------------------------------------------------------| - | Sum/Avg | 87 | 53.36 40.95 5.68 8.47 55.10 87.00 | - `-------------------------------------------------------------' - -\end{verbatim} - - -When \htool{HResults} is used to generate a confusion matrix, the -values are as follows: -\begin{description} -\item[\%c] The percentage correct in the row; that is, how many times a phone - instance was correctly labelled. -\item[\%e] The percentage of incorrectly labeled phones in the row as - a percentage of the total number of labels in the set. -\end{description} -An example from the HTKDemo routines: -\begin{verbatim} -====================== HTK Results Analysis ======================= - Date: Thu Jan 10 19:00:03 2002 - Ref : labels/bcplabs/mon - Rec : test/te1.rec - : test/te2.rec - : test/te3.rec ------------------------- Overall Results -------------------------- -SENT: %Correct=0.00 [H=0, S=3, N=3] -WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] ------------------------- Confusion Matrix ------------------------- - S C V N L Del [ %c / %e] - S 6 1 0 1 0 0 [75.0/1.5] - C 2 35 3 1 0 18 [85.4/4.5] - V 0 1 28 0 1 12 [93.3/1.5] - N 0 1 0 7 0 1 [87.5/0.8] - L 0 1 1 0 9 4 [81.8/1.5] -Ins 2 2 0 2 0 -=================================================================== -\end{verbatim} -Reading across the rows, \%c indicates the number of correct instances -divided by the total number of instances in the row. \%e is the -number of incorrect instances in the row divided by the total number -of instances (N). - -Optional extra outputs available from \htool{HResults} are -\begin{itemize} - \item recognition statistics on a per file basis - \item recognition statistics on a per speaker basis - \item recognition statistics from best of N alternatives - \item time-aligned transcriptions - \item confusion matrices -\end{itemize} -For comparison purposes, it is also possible to assign two -labels to the same equivalence class (see {\tt -e option}). -Also, the {\em null} label {\tt ???} is defined so that making any -label equivalent to the null label means that it will be -ignored in the matching process. Note that the order of equivalence -labels is important, to ensure that label {\tt X} is ignored, the -command line option \verb+-e ??? X+ would be used. -Label files containing triphone labels of the form {\tt A-B+C} can be -optionally stripped down to just the class name {\tt B} via the {\tt -s} -switch. - -The word spotting mode of scoring can be used to calculate hits, -false alarms and the associated figure of merit for each of a -set of keywords. -Optionally it can also calculate ROC information over a range of -false alarm rates. A typical output is as follows -\begin{verbatim} ------------------------- Figures of Merit ------------------------- - KeyWord: #Hits #FAs #Actual FOM - A: 8 1 14 30.54 - B: 4 2 14 15.27 - Overall: 12 3 28 22.91 -------------------------------------------------------------------- -\end{verbatim} -which shows the number of hits and false alarms (FA) for two keywords -\texttt{A} and \texttt{B}. A label in the test file with start time $t_s$ -and end time $t_e$ constitutes a hit if there is a corresponding label -in the reference file such that $t_s < t_m < t_e$ where $t_m$ is the -mid-point of the reference label. - -Note that for keyword scoring, the test -transcriptions must include a score with each labelled word spot -and all transcriptions must include boundary time information. - -The FOM gives the \% of hits -averaged over the range 1 to 10 FA's per hour. This is calculated -by first ordering all spots for a particular keyword according to -the match score. Then for each FA rate $f$, the number of hits are counted -starting from the top of the ordered list and stopping when -$f$ have been encountered. This corresponds to \textit{a posteriori} -setting of the keyword detection threshold and effectively gives an -upper bound on keyword spotting performance. - -\mysubsect{Use}{HResults-Use} - -\htool{HResults} is invoked by typing the command line -\begin{verbatim} - HResults [options] hmmList recFiles ... -\end{verbatim} -This causes \htool{HResults} to be applied to each {\tt recFile} in turn. The -{\tt hmmList} should contain a list of all model names for which result -information is required. Note, however, that since the context dependent parts -of a label can be stripped, this list is not necessarily the same as the one -used to perform the actual recognition. For each {\tt recFile}, a -transcription file with the same name but the extension {\tt .lab} (or some -user specified extension - see the {\tt -X} option) is read in and matched with -it. The {\tt recfiles} may be master label files (MLFs), but note that even if such an MLF is loaded using the {\tt -I} option, the list of files to be checked still needs to be passed, either as individual command line arguments or via a script with the {\tt -S} option. For this reason, it is simpler to pass the {\tt recFile} MLF as one of the command line filename arguments. For loading reference label file MLF's, the {\tt -I} option must be used. The reference labels and the recognition labels must have different file extensions. -The available options are -\begin{optlist} - \ttitem{-a s} change the label \texttt{SENT} in the output to - \texttt{s}. - - \ttitem{-b s} change the label \texttt{WORD} in the output to - \texttt{s}. - - \ttitem{-c} when comparing labels convert to upper case. Note that - case is still significant for equivalences (see \texttt{-e} below). - - \ttitem{-d N} search the first \texttt{N} alternatives for each test label - file to find the most accurate match with the reference labels. - Output results will be based on the most accurate match to allow - NBest error rates to be found. - - \ttitem{-e s t} the label {\tt t} is made equivalent to the - label {\tt s}. More precisely, {\tt t} is assigned to an equivalence - class of which {\tt s} is the identifying member. - - \ttitem{-f} Normally, \htool{HResults} accumulates statistics for all - input files and just outputs a summary on completion. - This option forces match statistics to be output for each - input test file. - - \ttitem{-g fmt} This sets the test label format to {\tt fmt}. - If this is not set, the {\tt recFiles} should be in the - same format as the reference files. - - \ttitem{-h} Output the results in the same format as US NIST scoring - software. - - \ttitem{-k s} Collect and output results on a speaker by speaker basis - (as well as globally). \texttt{s} defines a pattern which is used - to extract the speaker identifier from the test label file name. - In addition to the pattern matching metacharacters - \texttt{*} and \texttt{?} - (which match zero or more characters and a single character - respectively), the character \texttt{\%} matches any character whilst - including it as part of the speaker identifier. - - \ttitem{-m N} Terminate after collecting statistics from the first - \texttt{N} files. - - \ttitem{-n} Set US NIST scoring software compatibility. - - \ttitem{-p} This option causes a phoneme confusion matrix to - be output. - - \ttitem{-s} This option causes all phoneme labels with the form - {\tt A-B+C} to be converted to {\tt B}. It is useful for - analysing the results of phone recognisers using context dependent - models. - - \ttitem{-t} This option causes a time-aligned transcription of - each test file to be output provided that it differs from - the reference transcription file. - - \ttitem{-u f} Changes the time unit for calculating false alarm - rates (for word spotting scoring) to \texttt{f} hours (default is 1.0). - - \ttitem{-w} Perform word spotting analysis rather than string - accuracy calculation. - - \ttitem{-z s} This redefines the null class name to {\tt s}. - The default null class name is {\tt ???}, which may be difficult - to manage in shell script programming. - -\stdoptG -\stdoptI -\stdoptL -\stdoptX - -\end{optlist} -\stdopts{HResults} - -\mysubsect{Tracing}{HResults-Tracing} - -\htool{HResults} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show error rate for each test alternative. - \ttitem{00004} show speaker identifier matches. - \ttitem{00010} warn about non-keywords found during word spotting. - \ttitem{00020} show detailed word spotting scores. - \ttitem{00040} show memory usage. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hresults@\htool{HResults}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HSGen.aux b/HTKBook/HTKRef/HSGen.aux deleted file mode 100644 index 4904411..0000000 --- a/HTKBook/HTKRef/HSGen.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.20}HSGen}{308}{section.17.20}} -\newlabel{s:HSGen}{{17.20}{308}{HSGen\relax }{section.17.20}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.20.1}Function}{308}{subsection.17.20.1}} -\newlabel{s:HSGen-Function}{{17.20.1}{308}{Function\relax }{subsection.17.20.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.20.2}Use}{308}{subsection.17.20.2}} -\newlabel{s:HSGen-Use}{{17.20.2}{308}{Use\relax }{subsection.17.20.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.20.3}Tracing}{308}{subsection.17.20.3}} -\newlabel{s:HSGen-Tracing}{{17.20.3}{308}{Tracing\relax }{subsection.17.20.3}{}} -\@setckpt{HTKRef/HSGen}{ -\setcounter{page}{309} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{15} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{20} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{93} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HSGen.tex b/HTKBook/HTKRef/HSGen.tex deleted file mode 100644 index b02807d..0000000 --- a/HTKBook/HTKRef/HSGen.tex +++ /dev/null @@ -1,96 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 31/10/95 -% - -\newpage -\mysect{HSGen}{HSGen} - -\mysubsect{Function}{HSGen-Function} - -\index{hsgen@\htool{HSGen}|(} -This program will read in a word network definition in standard -\HTK\ lattice format representing a Regular Grammar $G$ and randomly -generate sentences from the language $L(G)$ of $G$. The sentences are -written to standard output, one per line and an option is provided -to number them if required. - -The empirical entropy $H_e$ can also be calculated using the formula -\begin{equation} - H_e = \frac{\sum_k P(S_k)}{\sum_k |S_k|} -\end{equation} -where $S_k$ is the $k$'th sentence generated and $|S_k|$ is its length. -The perplexity $P_e$ is computed from $H_e$ by -\begin{equation} - P_e = 2^{H_e} -\end{equation} -The probability of each sentence $P(S_k)$ is computed from the product of -the individual branch probabilities. - - -\mysubsect{Use}{HSGen-Use} - -\htool{HSGen} is invoked by the command line -\begin{verbatim} - HSGen [options] wdnet dictfile -\end{verbatim} -where \texttt{dictfile} is a dictionary containing all of the words -used in the word network stored in \texttt{wdnet}. This dictionary -is only used as a word list, the pronunciations are ignored. - -The available options are - -\begin{optlist} - - \ttitem{-l} When this option is set, each generated sentence - is preceded by a line number. - - \ttitem{-n N} This sets the total number of sentences generated - to be \texttt{N} (default value 100). - - \ttitem{-q} Set quiet mode. This suppresses the printing of sentences. - It is useful when estimating the entropy of $L(G)$ since the - accuracy of the latter depends on the number of sentences generated. - - \ttitem{-s} Compute word network statistics. When set, the number of - network nodes, the vocabulary size, the empirical entropy, the - perplexity, the average sentence length, the minimum sentence length - and the maximum sentence length - are computed and printed on the standard output. -\end{optlist} -\stdopts{HSLab} - -\mysubsect{Tracing}{HSGen-Tracing} - -\htool{HSLab} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting - \ttitem{00002} detailed trace of lattice traversal -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hsgen@\htool{HSGen}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HSLab.aux b/HTKBook/HTKRef/HSLab.aux deleted file mode 100644 index 6858c2a..0000000 --- a/HTKBook/HTKRef/HSLab.aux +++ /dev/null @@ -1,43 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.21}HSLab}{309}{section.17.21}} -\newlabel{s:HSLab}{{17.21}{309}{HSLab\relax }{section.17.21}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.21.1}Function}{309}{subsection.17.21.1}} -\newlabel{s:HSLab-Function}{{17.21.1}{309}{Function\relax }{subsection.17.21.1}{}} -\newlabel{f:hslab}{{17.1}{310}{Function\relax }{figctr.17.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.21.2}Use}{310}{subsection.17.21.2}} -\newlabel{s:HSLab-Use}{{17.21.2}{310}{Use\relax }{subsection.17.21.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.21.3}Tracing}{312}{subsection.17.21.3}} -\newlabel{s:HSLab-Tracing}{{17.21.3}{312}{Tracing\relax }{subsection.17.21.3}{}} -\@setckpt{HTKRef/HSLab}{ -\setcounter{page}{313} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{15} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{21} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{93} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HSLab.tex b/HTKBook/HTKRef/HSLab.tex deleted file mode 100644 index d6db216..0000000 --- a/HTKBook/HTKRef/HSLab.tex +++ /dev/null @@ -1,235 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 30/10/95 -% - -\newpage -\mysect{HSLab}{HSLab} - -\newcommand{\hbut}[1]{\texttt{#1}} -\newcommand{\hbbut}[1]{\fbox{\texttt{#1}}} - -\mysubsect{Function}{HSLab-Function} - -\index{hslab@\htool{HSLab}|(} -\htool{HSLab} is an interactive label editor for manipulating speech label files. -An example of using \htool{HSLab} would be to load a sampled waveform file, -determine the boundaries of the speech units of interest and assign labels -to them. Alternatively, an existing label file can be loaded and edited by -changing current label boundaries, deleting and creating new labels. -\htool{HSLab} is the only tool in the HTK package which makes use of the -graphics library \htool{HGraf}. - -When started \htool{HSLab} displays a window which is split into two parts: a -display section and a control section (see Fig~\href{f:hslab}). -The display section contains the plotted speech waveform with the -associated labels. The control section consists of a palette of buttons -which are used to invoke the various facilities available in the tool. -The buttons are laid out into three different groups depending on the -function they perform. Group one (top row) contains buttons related to -basic input/output commands. -Group two (middle row) implements the viewing and record/playback functions. -The buttons in group three (bottom row) are used for labelling. To invoke a -particular function, place the mouse pointer onto the corresponding button -and click once. All commands which require further interaction with the user -after invocation will display guiding text in the message area telling the -user what he or she is expected to do next. For example, to delete a label, -the user will click on \hbut{Delete}, the message ``Please select label to delete'' -will appear in the message area and the user will be expected to click in that -part of the display section corresponding to the label to be deleted (not on -the label itself). - -A {\em marked region} is a slice of the waveform currently visible in the -window. A region is marked by clicking on \hbut{Mark} and specifying two -boundaries by clicking in the display section. -When marked, a region will be displayed in inverse colours. In the presence -of a marked region the commands \hbut{Play}, \hbut{Label} and \hbut{Label as} -will be applied to the specified region rather than to the whole of the -waveform visible on the screen. -Part of the waveform can also be made into a marked region with the commands -\hbut{Zoom Out} and \hbut{Select}. \hbut{Zoom Out} will take the user back -to the previous level of magnification and the waveform being displayed before -the execution of the command will become a marked region. -\hbut{Select} will make the part of the waveform corresponding to a particular -label into a marked region. This can be useful for playing back existing labels. - -Labelling is carried out with \hbut{Label } and \hbut{Label as}. \hbut{Label} -will assign {\em The Current Label} to a specified slice of the waveform, -whilst \hbut{Label as} will prompt the user to type-in the labelling string. -{\em The Current Label} is shown in the button in the bottom right corner of -the control section. It defaults to ``Speech'' and it can be changed by clicking -on the button it resides in. -Multiple alternative transcriptions are manipulated using the \hbut{Set [?]} and -\hbut{New} buttons. The former is used to select the desired transcription, the -latter is used to create a new alternative transcription. - -\centrefig{hslab}{120}{HSLab display window} - -\mysubsect{Use}{HSLab-Use} - -\htool{HSLab} is invoked by typing the command line -\begin{verbatim} - HSLab [options] dataFile -\end{verbatim} -where \texttt{dataFile} is a data file in any of the supported formats with a -\texttt{WAVEFORM} sample kind. If the given data file does not exist, then -\htool{HSLab} will assume that a new file is to be recorded with this name. - -The available options for \htool{HSLab} are - -\begin{optlist} - \ttitem{-a} With this switch present, the numeric part of the global labelling - string is automatically incremented after every \texttt{Label} operation. - - \ttitem{-i file} This option allows transcription files to be output to the - named master label file (MLF). - - \ttitem{-n} Normally \htool{HSLab} expects to load an existing label file - whose name is derived from the speech data file. This option tells - \htool{HSLab} that a new empty transcription is to be created for the loaded - data-file. - - \ttitem{-s string} This option allows the user to set the string displayed - in the ``command'' button used to trigger external commands. - -\stdoptF -\stdoptG -\stdoptI -\stdoptL -\stdoptX -\end{optlist} -\stdopts{HSLab} - -The following is a summary of the function of each \htool{HSLab} -button. - -\begin{optlist} - \ttitem{\hbbut{Load}} Load a speech data file and associated transcription. - If changes have been made to the currently loaded transcription - since it was last saved the user will be prompted to save these - changes before loading the new file. - - \ttitem{\hbbut{Save}} Save changes made to the transcription into a specified - label file. - - \ttitem{\hbbut{About}} Print information about HSLab. - - \ttitem{\hbbut{Quit}} Exit from \htool{HSLab}. If alterations have been made - to the currently loaded transcription since it was last saved, the user - will be prompted to save these changes before exiting. - - \ttitem{\hbbut{Command}} This button is used to trigger an external command which - can process the waveform file currently loaded in \htool{HSLab}. This - is accomplished by setting the environment variable \texttt{HSLABCMD} to the - shell command required to perform the processing. When the \texttt{Command} - button is pressed, any occurrence of \texttt{\$} in the shell command is - replaced by the name of the currently loaded waveform file. Note that - only the filename without its extension is substituted. The string - displayed in the ``command'' button can be changed using the \texttt{-s} - option. - - \ttitem{\hbbut{Mark}} Mark a region of the displayed waveform. The user - is prompted to specify the start and the end point of a region with - the mouse pointer. The marked region will be displayed in inverse - colours. Only one region can be marked at a time. - - \ttitem{\hbbut{Unmark}} Unmark a previously marked region. - - \ttitem{\hbbut{<--}} Scroll the display to the left. - - \ttitem{\hbbut{-->}} Scroll the display to the right. - - \ttitem{\hbbut{Z.In}} Zoom into a part of the displayed waveform. If there is - a currently marked region then that region will be zoomed into, - otherwise, the user will be prompted to select a slice of the - waveform by specifying two points using the mouse pointer. - - \ttitem{\hbbut{Z.Out}} Restore the previous viewing level. - - \ttitem{\hbbut{Restore}} Display the complete waveform into the window. Any - marked regions will be unmarked. - - \ttitem{\hbbut{Play}} If there is a marked region of the waveform then - that portion of the signal will be played through the internal speaker. - Otherwise, the command will apply to the waveform visible on the - screen. - - \ttitem{\hbbut{Rec}} This initiates recording from the audio input device. The maximum - duration of a recording is limited to 2 mins at 16KHz sampling rate. Two bar-graphs - are displayed: the first (red) shows the number of samples recorded, the second - bar (green) displays the energy of the incoming signal. Once pressed, the - \texttt{Rec} button changes into \texttt{Stop} which, in turn, is used to terminate - the operation. When finished, the audio data stored in the buffer is written - out to disk. Each recording is stored in alternating files - \texttt{dataFile\_0} and \texttt{dataFile\_1}. - - \ttitem{\hbbut{Pause}} Clicking on this button pauses/un-pauses the recording operation. - - \ttitem{\hbbut{Volume}} This button is used to select the playback volume of the - audio device. - - \ttitem{\hbbut{x1}} This button selects the current level of waveform magnification. - The available factors are $\times 1$, $\times 2$, $\times 4$, $\times 8$, - $\times 16$, and $\times 32$. - - \ttitem{\hbbut{Label}} If a marked region exists, then the waveform contained in the - region will be labelled with {\em The Current Label}. Otherwise, the - command will be applied to the waveform visible on the screen. - - \ttitem{\hbbut{Labelas}} Same as above, however, the user is prompted to type in - the labelling string. - - \ttitem{\hbbut{Delete}} Delete a label. - - \ttitem{\hbbut{Edit}} Edit the string of a label. - - \ttitem{\hbbut{Select}} Select a label as a marked region. - - \ttitem{\hbbut{Adjust}} Adjust the boundaries of a label. To select the label - boundary to adjust, click in the display near to the label boundary. - - \ttitem{\hbbut{Set [?]}} This button is used to select the current alternative - transcription displayed and used in \htool{HSLab}. - - \ttitem{\hbbut{New}} Creates a new alternative transcription. If an empty alternative - transcription already exists, then a new transcription is not created. - - \ttitem{\hbbut{Undo}} Single level undo operation for labelling commands. - - \ttitem{\hbbut{Speech}} Change the current labelling string (the button in the - bottom right of the control area). -\end{optlist} - -The following ``mouse'' shortcuts are provided. To mark a region position the pointer at -one of the desired boundaries, then press the left mouse button and while holding it down -position the pointer at the other region boundary. Upon releasing the mouse button the -marked region will be highlighted. To play a label position the mouse cursor anywhere within -the corresponding label ``slice'' in the label area of the display and click the left -mouse button. - -\mysubsect{Tracing}{HSLab-Tracing} -\htool{HSLab} does not provide any trace options. -\index{hslab@\htool{HSLab}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HSmooth.aux b/HTKBook/HTKRef/HSmooth.aux deleted file mode 100644 index 1040238..0000000 --- a/HTKBook/HTKRef/HSmooth.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.22}HSmooth}{313}{section.17.22}} -\newlabel{s:HSmooth}{{17.22}{313}{HSmooth\relax }{section.17.22}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.22.1}Function}{313}{subsection.17.22.1}} -\newlabel{s:HSmooth-Function}{{17.22.1}{313}{Function\relax }{subsection.17.22.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.22.2}Use}{313}{subsection.17.22.2}} -\newlabel{s:HSmooth-Use}{{17.22.2}{313}{Use\relax }{subsection.17.22.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.22.3}Tracing}{314}{subsection.17.22.3}} -\newlabel{s:HSmooth-Tracing}{{17.22.3}{314}{Tracing\relax }{subsection.17.22.3}{}} -\@setckpt{HTKRef/HSmooth}{ -\setcounter{page}{315} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{22} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HSmooth.tex b/HTKBook/HTKRef/HSmooth.tex deleted file mode 100644 index 612c292..0000000 --- a/HTKBook/HTKRef/HSmooth.tex +++ /dev/null @@ -1,135 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Dave Ollason 11/11/95 -% - - -\newpage -\mysect{HSmooth}{HSmooth} - -\mysubsect{Function}{HSmooth-Function} - -\index{hsmooth@\htool{HSmooth}|(} -This program is used to smooth a set of context-dependent tied mixture -or discrete HMM's using deleted interpolation. -The program operates as a replacement for the second pass of \htool{HERest} -when working in {\it parallel mode}\footnote{It is not,of course, -necessary to have multiple processors to use this program since each -`parallel' activation can be executed sequentially on a single -processor}. It reads in the $N$ sets of accumulator files containing the -statistics accumulated during the first pass and then interpolates the -mixture weights between each context dependent model and its corresponding -context independent version. The interpolation weights are chosen to -maximise the likelihood of each deleted block with respect to the -probability distributions estimated from all other blocks. - -\mysubsect{Use}{HSmooth-Use} - -\htool{HSmooth} is invoked via the command line -\begin{verbatim} - HSmooth [options] hmmList accFile ... -\end{verbatim} -where {\tt hmmList} contains the list of context dependent models -to be smoothed and each {\tt accFile} is a file of the form -{\tt HERN.acc} dumped by a previous execution of \htool{HERest} with the {\tt -p} -option set to {\tt N}. The HMM definitions are loaded and then for -every state and stream of every context dependent model X, the optimal -interpolation weight is found for smoothing between the mixture -weights determined from the X accumulators alone and those determined -from the context independent version of X. The latter is computed simply -by summing the accumulators across all context dependent allophones of X. - -The detailed operation of \htool{HSmooth} is controlled by the following -command line options -\begin{optlist} - \ttitem{-b f} Set the value of epsilon for convergence - in the binary chop optimisation procedure to {\tt f}. - The binary chop optimisation procedure for each - interpolation weight terminates when the gradient is - within epsilon of zero (default 0.001). - - \ttitem{-c N} Set maximum number of interpolation iterations - for the binary chop optimisation procedure to be N - (default 16). - -\ttitem{-d dir} Normally \htool{HSmooth} expects to find the HMM definitions - in the current directory. This option tells \htool{HSmooth} to look in - the directory {\tt dir} to find them. - - - \ttitem{-m N} Set the minimum number of training examples - required for any model to {\tt N}. If the actual number - falls below this value, the HMM is not updated and the original - parameters are used for the new version (default value 1). - - \ttitem{-o ext} This causes the file name extensions of the - original models (if any) to be replaced by {\tt ext}. - - \ttitem{-s file} This causes statistics on occupation of each - state to be output to the named file. - - \ttitem{-u flags} By default, \htool{HSmooth} updates all of the HMM parameters, - that is, means, variances and transition probabilities. This - option causes just the parameters indicated by the {\tt flags} - argument to be updated, this argument is a string containing one - or more of the letters {\tt m} (mean), {\tt v} (variance) , - {\tt t} (transition) and {\tt w} (mixture weight). The - presence of a letter enables - the updating of the corresponding parameter set. - - \ttitem{-v f} This sets the minimum variance (i.e. diagonal element of - the covariance matrix) to the real value {\tt f} (default value - 0.0). - - \ttitem{-w f} Any mixture weight which falls below the global - constant {\tt MINMIX} is treated as being zero. - When this parameter is set, all mixture weights are floored - to {\tt f * MINMIX}. - - \ttitem{-x ext} By default, \htool{HSmooth} expects a HMM definition for - the model X to be stored in a file called {\tt X}. This - option causes \htool{HSmooth} to look for the HMM definition in the - file {\tt X.ext}. - -\stdoptB -\stdoptH -\stdoptM - -\end{optlist} -\stdopts{HSmooth} - -\mysubsect{Tracing}{HSmooth-Tracing} - -\htool{HSmooth} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} show interpolation weights. - \ttitem{00004} give details of optimisation algorithm. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hsmooth@\htool{HSmooth}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/HVite.aux b/HTKBook/HTKRef/HVite.aux deleted file mode 100644 index e35a09b..0000000 --- a/HTKBook/HTKRef/HVite.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.23}HVite}{315}{section.17.23}} -\newlabel{s:HVite}{{17.23}{315}{HVite\relax }{section.17.23}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.23.1}Function}{315}{subsection.17.23.1}} -\newlabel{s:HVite-Function}{{17.23.1}{315}{Function\relax }{subsection.17.23.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.23.2}Use}{315}{subsection.17.23.2}} -\newlabel{s:HVite-Use}{{17.23.2}{315}{Use\relax }{subsection.17.23.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.23.3}Tracing}{317}{subsection.17.23.3}} -\newlabel{s:HVite-Tracing}{{17.23.3}{317}{Tracing\relax }{subsection.17.23.3}{}} -\@setckpt{HTKRef/HVite}{ -\setcounter{page}{318} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{23} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/HVite.tex b/HTKBook/HTKRef/HVite.tex deleted file mode 100644 index 868dda2..0000000 --- a/HTKBook/HTKRef/HVite.tex +++ /dev/null @@ -1,265 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young and Julian Odell - 24/11/97 -% - -\newpage -\mysect{HVite}{HVite} - -\mysubsect{Function}{HVite-Function} - -\index{hvite@\htool{HVite}|(} -\htool{HVite} is a general-purpose Viterbi word recogniser. It will -match a speech file against a network of HMMs and output a transcription -for each. When performing N-best recognition a word level lattice -containing multiple hypotheses can also be produced. - -Either a word level lattice or a label file is read in and then -expanded using the supplied dictionary to create a model based -network. This allows arbitrary finite state word networks and -simple forced alignment to be specified. - -This expansion can be used to create context independent, word internal -context dependent and cross word context dependent networks. The way -in which the expansion is performed is determined automatically from -the dictionary and HMMList. When all labels appearing in the -dictionary are defined in the HMMList no expansion of model names is -performed. Otherwise if all the labels in the dictionary can be -satisfied by models dependent only upon word internal context these -will be used else cross word context expansion will be performed. -These defaults can be overridden by \htool{HNet} configuration parameters. - -\htool{HVite} supports shared parameters and appropriately pre-computes -output probabilities. -For increased processing speed, \htool{HVite} can optionally perform a beam -search controlled by a user specified threshold (see \texttt{-t} option). -When fully tied mixture models are used, observation pruning is also provided -(see the \texttt{-c} option). -Speaker adaptation is also supported by \htool{HVite} both in terms of -recognition using an adapted model set or a TMF (see the \texttt{-k} option), -and in the estimation of a transform by unsupervised adaptation using -linear transformation in an incremental mode (see the \texttt{-j} option) or -in a batch mode (\texttt{-K} option). - -\mysubsect{Use}{HVite-Use} - -\htool{HVite} is invoked via the command line -\begin{verbatim} - HVite [options] dictFile hmmList testFiles ... -\end{verbatim} -HVite will then either load a single network file and match this -against each of the test files \texttt{-w netFile}, or create a -new network for each test file either from the corresponding -label file \texttt{-a} or from a word lattice \texttt{-w}. -When a new network is created for each test file the path name -of the label (or lattice) file to load is determined from the -test file name and the \texttt{-L} and \texttt{-X} options -described below. - -If no \texttt{testFiles} are specified the \texttt{-w s} option must -be specified and recognition will be performed from direct audio. - -The \texttt{hmmList} should contain a list of the models required to -construct the network from the word level representation. - -The recogniser output is written in the form of a label file whose -path name is determined from the test file name and the \texttt{-l} and -\texttt{-x} options described below. The list of test files can be stored -in a script file if required. - -When performing N-best recognition (see \texttt{-n N} option described -below) the output label file can contain multiple alternatives -\texttt{-n N M} and a lattice file containing multiple hypotheses can -be produced. - -The detailed operation of \htool{HVite} is controlled by the following -command line options -\begin{optlist} - - \ttitem{-a} Perform alignment. \htool{HVite} will load a label file and - create an alignment network for each test file. - - \ttitem{-b s} Use \texttt{s} as the sentence boundary during alignment. - - \ttitem{-c f} Set the tied-mixture observation pruning threshold to \texttt{f}. - When all mixtures of all models are tied to create a full - tied-mixture system, the calculation of output probabilities - is treated as a special case. Only those mixture - component probabilities which fall within \texttt{f} of - the maximum mixture component probability are used in calculating - the state output probabilities (default 10.0). - - \ttitem{-d dir} This specifies the directory to search for the - HMM definition files corresponding to the labels used in - the recognition network. - \ttitem{-e} When using direct audio input, output transcriptions - are not normally saved. When this option is set, each - output transcription is written to a file called \texttt{PnS} - where \texttt{n} is an integer which increments with each output - file, \texttt{P} and \texttt{S} are strings which are by default - empty but can be set using the configuration variables - \texttt{RECOUTPREFIX} and \texttt{RECOUTSUFFIX}. - -\ttitem{-f} During recognition keep track of full state alignment. The output - label file will contain multiple levels. The first level will be the - state number and the second will be the word name (not the output symbol). - - \ttitem{-g} When using direct audio input, this option enables audio - replay of each input utterance after it has been recognised. - - \ttitem{-h mask} Set the mask for determining which transform names are - to be used for the input transforms. - - \ttitem{-i s} Output transcriptions to MLF \texttt{s}. - - \ttitem{-j i} Perform incremental MLLR adaptation every i utterances - - \ttitem{-k} Use an input transform (default off). - - \ttitem{-l dir} This specifies the directory to store the output label - files. If this option is not used then \htool{HVite} will store - the label files in the same directory as the data. - When output is directed to an MLF, this option can be used to - add a path to each output file name. In particular, setting the option - \verb+-l '*'+ will cause a label file named \texttt{xxx} to be prefixed - by the pattern \verb+"*/xxx"+ in the output MLF file. This is useful - for generating MLFs which are independent of the location of the - corresponding data files. - - \ttitem{-m} During recognition keep track of model boundaries. The output - label file will contain multiple levels. The first level will be the - model number and the second will be the word name (not the output - symbol). - - - \ttitem{-n i [N]} Use \texttt{i} tokens in each state to perform - N-best recognition. The number of alternative output - hypotheses \texttt{N} defaults to 1. - - \ttitem{-o s} Choose how the output labels should be formatted. - \texttt{s} is a string with certain letters (from \texttt{NSCTWM}) - indicating binary flags that control formatting options. - \texttt{N} normalise acoustic scores by dividing by the duration - (in frames) of the segment. - \texttt{S} remove scores from output label. By default - scores will be set to the total likelihood of the segment. - \texttt{C} Set the transcription labels to start and end on - frame centres. By default start times are set to the start - time of the frame and end times are set to the end time of - the frame. - \texttt{T} Do not include times in output label files. - \texttt{W} Do not include words in output label files - when performing state or model alignment. - \texttt{M} Do not include model names in output label - files when performing state and model alignment. - - \ttitem{-p f} Set the word insertion log probability to \texttt{f} - (default 0.0). - - \ttitem{-q s} Choose how the output lattice should be formatted. - \texttt{s} is a string with certain letters (from \texttt{ABtvaldmn}) - indicating binary flags that control formatting options. - \texttt{A} attach word labels to arcs rather than nodes. - \texttt{B} output lattices in binary for speed. - \texttt{t} output node times. - \texttt{v} output pronunciation information. - \texttt{a} output acoustic likelihoods. - \texttt{l} output language model likelihoods. - \texttt{d} output word alignments (if available). - \texttt{m} output within word alignment durations. - \texttt{n} output within word alignment likelihoods. - - \ttitem{-r f} Set the dictionary pronunciation probability scale - factor to \texttt{f}. (default value 1.0). - - \ttitem{-s f} Set the grammar scale factor to \texttt{f}. - This factor post-multiplies the language model likelihoods - from the word lattices. (default value 1.0). - - \ttitem{-t f [i l]} Enable beam searching such that any model whose - maximum log probability token falls more than \texttt{f} below - the maximum for all models is deactivated. Setting \texttt{f} - to 0.0 disables the beam search mechanism (default value - \texttt{0.0}). In alignment mode two extra parameters - \texttt{i} and \texttt{l} can be specified. If the alignment - fails at the initial pruning threshold \texttt{f}, then the - threshold will by increased by \texttt{i} and the alignment - will be retried. This procedure is repeated until the - alignment succeeds or the threshold limit \texttt{l} is - reached. - - \ttitem{-u i} Set the maximum number of active models to \texttt{i}. - Setting \texttt{i} to \texttt{0} disables this limit (default 0). - - \ttitem{-v f} Enable word end pruning. Do not propagate tokens from - word end nodes that fall more than \texttt{f} below the maximum - word end likelihood. (default \texttt{0.0}). - - \ttitem{-w [s]} Perform recognition from word level networks. If - \texttt{s} is included then use it to define the network used - for every file. - - \ttitem{-x ext} This sets the extension to use for HMM definition - files to \texttt{ext}. - - \ttitem{-y ext} This sets the extension for output label files to - \texttt{ext} (default \texttt{rec}). - - \ttitem{-z ext} Enable output of lattices (if performing NBest - recognition) with extension \texttt{ext} (default off). - - \ttitem{-L dir} This specifies the directory to find input label (when - \texttt{-a} is specified) or network files (when \texttt{-w} is - specified). - - \ttitem{-X s} Set the extension for the input label or network files - to be \texttt{s} (default value \texttt{lab}). - -\stdoptE -\stdoptG -\stdoptH -\stdoptI -\stdoptJ -\stdoptK -\stdoptP - -\end{optlist} -\stdopts{HVite} - -\mysubsect{Tracing}{HVite-Tracing} - -\htool{HVite} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{0001} enable basic progress reporting. - \ttitem{0002} list observations. - \ttitem{0004} frame-by-frame best token. - \ttitem{0010} show memory usage at start and finish. - \ttitem{0020} show memory usage after each utterance. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hvite@\htool{HVite}|)} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKRef/LAdapt.aux b/HTKBook/HTKRef/LAdapt.aux deleted file mode 100644 index 1cb53f4..0000000 --- a/HTKBook/HTKRef/LAdapt.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.24}LAdapt}{318}{section.17.24}} -\newlabel{s:LAdapt}{{17.24}{318}{LAdapt\relax }{section.17.24}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.24.1}Function}{318}{subsection.17.24.1}} -\newlabel{s:Function}{{17.24.1}{318}{Function\relax }{subsection.17.24.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.24.2}Use}{318}{subsection.17.24.2}} -\newlabel{s:LAdapt-Use}{{17.24.2}{318}{Use\relax }{subsection.17.24.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.24.3}Tracing}{319}{subsection.17.24.3}} -\newlabel{s:LAdapt-Tracing}{{17.24.3}{319}{Tracing\relax }{subsection.17.24.3}{}} -\@setckpt{HTKRef/LAdapt}{ -\setcounter{page}{320} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{24} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LAdapt.tex b/HTKBook/HTKRef/LAdapt.tex deleted file mode 100644 index 307a5a0..0000000 --- a/HTKBook/HTKRef/LAdapt.tex +++ /dev/null @@ -1,98 +0,0 @@ -% -% HTKBook - Valtcho Valtchev 04/02/98 -% -% Updated - Gareth Moore 15/01/02 - 1/3/02 -% - -\newpage -\mysect{LAdapt}{LAdapt} - -\mysubsect{Function}{Function} - -\index{ladapt@\htool{LAdapt}|(} -This program will adapt an existing language model from supplied text -data. This is accomplished in two stages. First, the text data is -scanned and a new language model is generated. In the second stage, an -existing model is loaded and adapted (merged) with the newly created -one according to the specified ratio. The target model can be -optionally pruned to a specific vocabulary. Note that you can only -apply this tool to word models or the class $n$-gram component of a -class model -- that is, you cannot apply it to full class models. - -\mysubsect{Use}{LAdapt-Use} - -\htool{LAdapt} is invoked by the command line -\begin{verbatim} - LAdapt [options] -i weight inLMFile outLMFile [texttfile ...] -\end{verbatim} -The text data is scanned and a new LM generated. The input language model is -then loaded and the two models merged. The effect of the weight (0.0-1.0) is to -control the overall contribution of each model during the merging process. The -output to outLMFile is an $n$-gram model stored in the user-specified format. - -The allowable options to \htool{LAdapt} are as follows -\begin{optlist} - \ttitem{-a n} Allow upto \texttt{n} new words in input text - (default 100000). - - \ttitem{-b n} Set the $n$-gram buffer size to $n$. This controls the size of the - buffer used to accumulate $n$-gram statistics whilst scanning the input - text. Larger buffer sizes will result in more efficient operation of - the tool with fewer sort operations required (default 2000000). - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. Pruning can - be applied to the bigram ($n$=2) and longer ($n$>2) components of the - newly generated model. The pruning procedure will keep only $n$-grams - which have been observed more than $c$ times. - - \ttitem{-d s} Set the root $n$-gram data file name to {\tt s}. By default, - $n$-gram statistics from the text data will be accumulated and stored - as {\tt gram.0, gram.1, ...}, etc. Note that a larger buffer size will - result in fewer files. - - \ttitem{-f s} Set the output language model format to {\tt s}. - Possible options are {\tt text} for the standard ARPA-MIT - LM format, {\tt bin} for Entropic {\em binary} format and - {\tt ultra} for Entropic {\em ultra} format. - - \ttitem{-g} Use existing $n$-gram data files. If this option is specified the - tool will use the existing gram files rather than scanning the actual - texts. This option is useful when adapting multiple language models - from the same text data or when experimenting with different merging - weights. - - \ttitem{-i w f} Interpolate with model {\tt f} using weight {\tt w}. Note - that at least one model must be specified with this option. - - \ttitem{-j n c} Set weighted discounting pruning for $n$ grams to - $c$. This cannot be applied to unigrams ($n$=1). - - \ttitem{-n n} Produce $n$-gram language model. - - \ttitem{-s s} Store {\tt s} in the header of the gram files. - - \ttitem{-t} Force Turing-Good discounting if configured otherwise. - - \ttitem{-w fn} Load word list from {\tt fn}. The word list will be used to - define the target model's vocabulary. If a word list is not specified, - the target model's vocabulary will have all words from the source - model(s) together with any new words encountered in the text - data. - - \ttitem{-x} Create a count-based model. -\end{optlist} -\stdopts{LAdapt} - -\mysubsect{Tracing}{LAdapt-Tracing} - -\htool{LAdapt} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting - \ttitem{00002} monitor buffer saving - \ttitem{00004} trace word input stream - \ttitem{00010} trace shift register input -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{ladapt@\htool{LAdapt}|)} diff --git a/HTKBook/HTKRef/LBuild.aux b/HTKBook/HTKRef/LBuild.aux deleted file mode 100644 index 3132cef..0000000 --- a/HTKBook/HTKRef/LBuild.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.25}LBuild}{320}{section.17.25}} -\newlabel{s:LBuild}{{17.25}{320}{LBuild\relax }{section.17.25}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.25.1}Function}{320}{subsection.17.25.1}} -\newlabel{s:LBuild-Function}{{17.25.1}{320}{Function\relax }{subsection.17.25.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.25.2}Use}{320}{subsection.17.25.2}} -\newlabel{s:LBuild-Use}{{17.25.2}{320}{Use\relax }{subsection.17.25.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.25.3}Tracing}{320}{subsection.17.25.3}} -\newlabel{s:LBuild-Tracing}{{17.25.3}{320}{Tracing\relax }{subsection.17.25.3}{}} -\@setckpt{HTKRef/LBuild}{ -\setcounter{page}{321} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{25} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LBuild.tex b/HTKBook/HTKRef/LBuild.tex deleted file mode 100644 index 1c0ae1f..0000000 --- a/HTKBook/HTKRef/LBuild.tex +++ /dev/null @@ -1,100 +0,0 @@ -% -% HLMBook - Steve Young 13/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LBuild}{LBuild} - -\mysubsect{Function}{LBuild-Function} - -\index{lbuild@\htool{LBuild}|(} -\index{n-gram language model} - -This program will read one or more input gram files and -generate/update a back-off $n$-gram language model as described in -section~\ref{s:mkngoview}. The \texttt{-n} option specifies the order of -the final model. Thus, to generate a trigram language model, the user -may simply invoke the tool with \texttt{-n 3} which will cause it to -compute the FoF table and then generate the unigram, bigram and -trigram stages of the model. Note that intermediate model/FoF files -will not be generated. - -As for all tools which process gram files, the input gram files must -each be sorted but they need not be sequenced. The counts in each -input file can be modified by applying a multiplier factor. Any $n$-gram -containing an id which is not in the word map is ignored, thus, the -supplied word map will typically contain just those word and class ids -required for the language model under construction (see -\htool{LSubset}). - -\htool{LBuild} supports Turing-Good and absolute discounting -as described in section~\ref{s:HLMdiscounts}. - -\mysubsect{Use}{LBuild-Use} - -\htool{LBuild} is invoked by typing the command line -\begin{verbatim} - LBuild [options] wordmap outfile [mult] gramfile .. [mult] gramfile .. -\end{verbatim} - -The given word map file is loaded and then the set of named gram files -are merged to form a single sorted stream of $n$-grams. Any $n$-grams -containing ids not in the word map are ignored. The list of input -gram files can be interspersed with multipliers. These are -floating-point format numbers which must begin with a plus or minus -character (e.g. \texttt{+1.0}, \texttt{-0.5}, etc.). The effect of a -multiplier \texttt{x} is to scale the $n$-gram counts in the following -gram files by the factor \texttt{x}. A multiplier stays in effect -until it is redefined. The output to \texttt{outfile} is a back-off -$n$-gram language model file in the specified file format. - -See the \htool{LPCalc} options in section~\ref{s:coninlib} for -details on changing the discounting type from the default of -Turing-Good, as well as other configuration file options. - -The allowable options to \htool{LBuild} are as follows - -\begin{optlist} - \ttitem{-c n c} Set cutoff for \texttt{n}-gram to \texttt{c}. - - \ttitem{-d n c} Set weighted discount pruning for \texttt{n}-gram - to \texttt{c} for Seymore-Rosenfeld pruning. - - \ttitem{-f t} Set output model format to \texttt{t} (TEXT, BIN, ULTRA). - - \ttitem{-k n} Set discounting range for Good-Turing discounting to - $[1..n]$. - - \ttitem{-l f} Build model by updating existing LM in \texttt{f}. - - \ttitem{-n n} Set final model order to \texttt{n}. - - \ttitem{-t ff} Load the FoF file \texttt{f}. This is only used for - Turing-Good discounting, and is not essential. - - \ttitem{-u c} Set the minimum occurrence count for unigrams to - \texttt{c}. (Default is 1) - - \ttitem{-x} Produce a counts model. -\end{optlist} -\stdopts{LBuild} - - -\mysubsect{Tracing}{LBuild-Tracing} - -\htool{LBuild} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lbuild@\htool{LBuild}|)} - - - - - diff --git a/HTKBook/HTKRef/LFoF.aux b/HTKBook/HTKRef/LFoF.aux deleted file mode 100644 index d0f11b5..0000000 --- a/HTKBook/HTKRef/LFoF.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.26}LFoF}{321}{section.17.26}} -\newlabel{s:LFoF}{{17.26}{321}{LFoF\relax }{section.17.26}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.26.1}Function}{321}{subsection.17.26.1}} -\newlabel{s:LFoF-Function}{{17.26.1}{321}{Function\relax }{subsection.17.26.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.26.2}Use}{321}{subsection.17.26.2}} -\newlabel{s:LFoF-Use}{{17.26.2}{321}{Use\relax }{subsection.17.26.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.26.3}Tracing}{321}{subsection.17.26.3}} -\newlabel{s:LFoF-Tracing}{{17.26.3}{321}{Tracing\relax }{subsection.17.26.3}{}} -\@setckpt{HTKRef/LFoF}{ -\setcounter{page}{322} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{26} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LFoF.tex b/HTKBook/HTKRef/LFoF.tex deleted file mode 100644 index c02b29c..0000000 --- a/HTKBook/HTKRef/LFoF.tex +++ /dev/null @@ -1,74 +0,0 @@ -% -% HLMBook - Steve Young 13/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LFoF}{LFoF} - -\mysubsect{Function}{LFoF-Function} - -\index{lFoF@\htool{LFoF}|(} -This program will read one or more input gram files and generate a -\textit{frequency-of-frequency} or \textit{FoF} file. A FoF file is a -list giving the number of times that an $n$-gram occurs just once, the -number of times that an $n$-gram occurs just twice, etc. The format of a -FoF file is described in section~\ref{s:FoFs}.\index{FoF file} - -As for all tools which process gram files, the input gram files must -each be sorted but they need not be sequenced. The counts in each -input file can be modified by applying a multiplier factor. Any $n$-gram -containing an id which is not in the word map is ignored, thus, the -supplied word map will typically contain just those word and class ids -required for the language model under construction (see -\htool{LSubset}). - -\htool{LFoF} also provides an option to generate an estimate -of the number of $n$-grams which would be included in the final language -model for each possible cutoff by setting \texttt{LPCALC: TRACE = 2}. - -\mysubsect{Use}{LFoF-Use} - -\htool{LFoF} is invoked by typing the command line -\begin{verbatim} - LFoF [options] wordmap foffile [mult] gramfile .. [mult] gramfile .. -\end{verbatim} -The given word map file is loaded and then the set of named gram files -are merged to form a single sorted stream of $n$-grams. Any $n$-grams -containing ids not in the word map are ignored. The list of input gram -files can be interspersed with multipliers. These are floating-point -format numbers which must begin with a plus or minus character -(e.g. \texttt{+1.0}, \texttt{-0.5}, etc.). The effect of a multiplier -\texttt{x} is to scale the $n$-gram counts in the following gram files by -the factor \texttt{x}. A multiplier stays in effect until it is -redefined. The output to \texttt{foffile} is a FoF file as described -in section~\ref{s:FoFs}. - -The allowable options to \htool{LFoF} are as follows - -\begin{optlist} - \ttitem{-f N} set the number of FoF entries to N (default 100). - \ttitem{-n N} Set $n$-gram size to \texttt{N} (defaults to max). -\end{optlist} -\stdopts{LFoF} - - -\mysubsect{Tracing}{LFoF-Tracing} - -\htool{LFoF} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} -\ttitem{00001} basic progress reporting -%\ttitem{00002} print FoF table every 100,000 input grams -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lFoF@\htool{LFoF}|)} - - - - - - - diff --git a/HTKBook/HTKRef/LGCopy.aux b/HTKBook/HTKRef/LGCopy.aux deleted file mode 100644 index 38371f8..0000000 --- a/HTKBook/HTKRef/LGCopy.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.27}LGCopy}{322}{section.17.27}} -\newlabel{s:LGCopy}{{17.27}{322}{LGCopy\relax }{section.17.27}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.27.1}Function}{322}{subsection.17.27.1}} -\newlabel{s:LGCopy-Function}{{17.27.1}{322}{Function\relax }{subsection.17.27.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.27.2}Use}{322}{subsection.17.27.2}} -\newlabel{s:LGCopy-Use}{{17.27.2}{322}{Use\relax }{subsection.17.27.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.27.3}Tracing}{323}{subsection.17.27.3}} -\newlabel{s:LGCopy-Tracing}{{17.27.3}{323}{Tracing\relax }{subsection.17.27.3}{}} -\@setckpt{HTKRef/LGCopy}{ -\setcounter{page}{324} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{27} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LGCopy.tex b/HTKBook/HTKRef/LGCopy.tex deleted file mode 100644 index 2d38c06..0000000 --- a/HTKBook/HTKRef/LGCopy.tex +++ /dev/null @@ -1,128 +0,0 @@ -% -% HLMBook - Steve Young 03/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LGCopy}{LGCopy} - -\mysubsect{Function}{LGCopy-Function} - -\index{lgcopy@\htool{LGCopy}|(} -This program will copy one or more input gram files to a set of one or -more output gram files. The input gram files must each be sorted but -they need not be sequenced. Unless word-to-class mapping is being -performed, the output files will, however, be sequenced. Hence, given -a collection of unsequenced gram files, \htool{LGCopy} can be used to -generate an equivalent sequenced set. This is useful for reducing the -number of parallel input streams that tools such as \htool{LBuild} -must maintain, thereby improving efficiency. - -As for all tools which can input gram files, the counts in each input -file can be modified by applying a multiplier factor. Note, however, -that since the counts within gram files are stored as integers, use of -non-integer multiplier factors will lead to the counts being rounded -in the output gram files. - -In addition to manipulating the counts, the \texttt{-n} option also -allows the input grams to be truncated by summing the counts of all -equivalenced grams. For example, if the 3-grams \texttt{a x y 5} and -\texttt{b x y 3} were truncated to 2-grams, then \texttt{x y 8} would -be output. Truncation is performed before any of the mapping -operations described below. - -\htool{LGCopy} also provides options to map gram words to classes -using a class map file and filter the resulting output. The most -common use of this facility is to map out-of-vocabulary (OOV) words -into the unknown symbol in preparation for building a conventional -word $n$-gram language model for a specific vocabulary. However, it can -also be used to prepare for building a class-based $n$-gram language -model. - -Word-to-class mapping is enabled by specifying the class map file with -the \texttt{-w} option. Each $n$-gram word is then replaced by its class -symbol as defined by the class map. If the \texttt{-o} option is also -specified, only $n$-grams containing class symbols are stored in the -internal buffer. - -\mysubsect{Use}{LGCopy-Use} - -\htool{LGCopy} is invoked by typing the command line -\begin{verbatim} - LGCopy [options] wordmap [mult] gramfile .... [mult] gramfile ... -\end{verbatim} -The given word map file is loaded and then the set of named gram files -are input in parallel to form a single sorted stream of $n$-grams. Counts -for identical $n$-grams in multiple source files are summed. The merged -stream is written to a sequence of output gram files named -\texttt{data.0}, \texttt{data.1}, etc. The list of input gram files -can be interspersed with multipliers. These are floating-point format -numbers which must begin with a plus or minus character -(e.g. \texttt{+1.0}, \texttt{-0.5}, etc.). The effect of a multiplier -\texttt{x} is to scale the $n$-gram counts in the following gram files by -the factor \texttt{x}. The resulting scaled counts are rounded to the -nearest integer on output. A multiplier stays in effect until it is -redefined. The scaled input grams can be truncated, mapped and -filtered before being output as described above. - -The allowable options to \htool{LGCopy} are as follows - -\begin{optlist} - - \ttitem{-a n} Set the maximum number of new classes that can be - added to the word map (default 1000, only used in conjuction with - class maps). - - \ttitem{-b n} Set the internal gram buffer size to n (default - 2000000). \htool{LGCopy} stores incoming $n$-grams in this buffer. - When the buffer is full, the contents are sorted and written to an - output gram file. Thus, the buffer size determines the amount of - process memory that \htool{LGCopy} will use and the size of the - individual output gram files. - - \ttitem{-d} Directory in which to store the output gram files - (default current directory). - - \ttitem{-i n} Set the index of the first gram file output to be n - (default 0). - - \ttitem{-m s} Save class-resolved word map to \texttt{fn}. - - \ttitem{-n n} Normally, $n$-gram size is preserved from input to - output. This option allows the output $n$-gram size to be truncated - to n where n must be less than the input $n$-gram size. - - \ttitem{-o n} Output class mappings only. Normally all input $n$-grams - are copied to the output, however, if a class map is specified, this - options forces the tool to output only $n$-grams containing at least - one class symbol. - - \ttitem{-r s} Set the root name of the output gram files to - \texttt{s} (default ``data''). - - \ttitem{-w fn} Load class map from \texttt{fn}. - -\end{optlist} -\stdopts{LGCopy} - - -\mysubsect{Tracing}{LGCopy-Tracing} - -\htool{LGCopy} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\ttitem{00002} monitor buffer save operations. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lgcopy@\htool{LGCopy}|)} - - - - - - - diff --git a/HTKBook/HTKRef/LGList.aux b/HTKBook/HTKRef/LGList.aux deleted file mode 100644 index 367ee65..0000000 --- a/HTKBook/HTKRef/LGList.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.28}LGList}{324}{section.17.28}} -\newlabel{s:LGList}{{17.28}{324}{LGList\relax }{section.17.28}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.28.1}Function}{324}{subsection.17.28.1}} -\newlabel{s:LGList-Function}{{17.28.1}{324}{Function\relax }{subsection.17.28.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.28.2}Use}{324}{subsection.17.28.2}} -\newlabel{s:LGList-Use}{{17.28.2}{324}{Use\relax }{subsection.17.28.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.28.3}Tracing}{324}{subsection.17.28.3}} -\newlabel{s:LGList-Tracing}{{17.28.3}{324}{Tracing\relax }{subsection.17.28.3}{}} -\@setckpt{HTKRef/LGList}{ -\setcounter{page}{325} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{28} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LGList.tex b/HTKBook/HTKRef/LGList.tex deleted file mode 100644 index 2228da5..0000000 --- a/HTKBook/HTKRef/LGList.tex +++ /dev/null @@ -1,63 +0,0 @@ -% -% HLMBook - Steve Young 07/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LGList}{LGList} - -\mysubsect{Function}{LGList-Function} - -\index{lglist@\htool{LGList}|(} -This program will list the contents of one or more \HLM\ gram files. -In addition to printing the whole file, an option is provided to print -just those $n$-grams containing certain specified words and/or ids. It -is mainly used for debugging. - -\mysubsect{Use}{LGList-Use} - -\htool{LGList} is invoked by typing the command line -\begin{verbatim} - LGList [options] wmapfile gramfile .... -\end{verbatim} -The specified gram files are printed to the output. The $n$-grams are -printed one per line following a summary of the header information. -Each $n$-gram is printed in the form of a list of words followed by the -count. - -Normally all $n$-grams are printed. However, if either of the options -\texttt{-i} or \texttt{-f} are used to add words to a \textit{filter -list}, then only those $n$-grams which include a word in the filter list -are printed. - -The allowable options to \htool{LGList} are as follows - -\begin{optlist} - \ttitem{-f w} Add word \texttt{w} to the filter list. This option - can be repeated, it can also be mixed with uses of the - \texttt{-i} option. - \ttitem{-i n} Add word with id \texttt{n} to the filter list. This - option can be repeated, it can also be mixed with uses of the - \texttt{-f} option. -\end{optlist} -\stdopts{LGList} - -\mysubsect{Tracing}{LGList-Tracing} - -\htool{LGList} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - -\ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lglist@\htool{LGList}|)} - - - - - - - diff --git a/HTKBook/HTKRef/LGPrep.aux b/HTKBook/HTKRef/LGPrep.aux deleted file mode 100644 index 3bfcce1..0000000 --- a/HTKBook/HTKRef/LGPrep.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.29}LGPrep}{325}{section.17.29}} -\newlabel{s:LGPrep}{{17.29}{325}{LGPrep\relax }{section.17.29}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.29.1}Function}{325}{subsection.17.29.1}} -\newlabel{s:LGPrep-Function}{{17.29.1}{325}{Function\relax }{subsection.17.29.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.29.2}Use}{326}{subsection.17.29.2}} -\newlabel{s:LGPrep-Use}{{17.29.2}{326}{Use\relax }{subsection.17.29.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.29.3}Tracing}{327}{subsection.17.29.3}} -\newlabel{s:LGPrep-Tracing}{{17.29.3}{327}{Tracing\relax }{subsection.17.29.3}{}} -\@setckpt{HTKRef/LGPrep}{ -\setcounter{page}{328} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{29} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LGPrep.tex b/HTKBook/HTKRef/LGPrep.tex deleted file mode 100644 index 77c9aff..0000000 --- a/HTKBook/HTKRef/LGPrep.tex +++ /dev/null @@ -1,218 +0,0 @@ -% -% HLMBook - Steve Young 08/01/97 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LGPrep}{LGPrep} - -\mysubsect{Function}{LGPrep-Function} - -\index{lgprep@\htool{LGPrep}|(} - -The function of this tool is to scan a language model training text -and generate a set of gram files holding the $n$-grams seen in the text -along with their counts. By default, the output gram files are named -\texttt{gram.0}, \texttt{gram.1}, \texttt{gram.2}, etc. However, the -root name can be changed using the \texttt{-r} option and the start -index can be set using the -\texttt{-i} option. - -Each output gram file is sorted but the files themselves will not be -sequenced (see section~\ref{s:gramfs}). Thus, when using -\htool{LGPrep} with substantial training texts, it is good practice to -subsequently copy the complete set of output gram files using -\htool{LGCopy} to reorder them into sequence. This process will also -remove duplicate occurrences making the resultant files more compact -and faster to read by the \HLM\ processing tools. - -Since \htool{LGPrep} will often encounter new words in its input, it -is necessary to update the word map. The normal operation therefore -is that \htool{LGPrep} begins by reading in a word map containing all -the word ids required to decode all previously generated gram files. -This word map is then updated to include all the new words seen in the -current input text. On completion, the updated word map is output to -a file of the same name as the input word map in the directory used to -store the new gram files. Alternatively, it can be output to a -specified file using the \texttt{-w} option. The sequence number in -the header of the newly created word map will be one greater than that -of the original. - -\htool{LGPrep} can also apply a set of ``match and replace'' edit -rules to the input text stream. The purpose of this facility is not -to replace input text conditioning filters but to make simple changes -to the text after the main gram files have been generated. The -editing works by passing the text through a window one word at a time. -The edit rules consist of a pattern and a replacement text. At each -step, the pattern of each rule is matched against the window and if a -match occurs, then the matched word sequence is replaced by the string -in the replaced part of the rule. Two sets of gram files are -generated by this process. A ``negative'' set of gram files contain -$n$-grams corresponding to just the text strings which were modified and -a ``positive'' set of gram files contain $n$-grams corresponding to the -modified text. All text for which no rules matched is ignored and -generates no gram file output. Once the positive and negative gram -files have been generated, the positive grams are added (i.e. input -with a weight of +1) to the original set of gram files and the -negative grams are subtracted (i.e. input with a weight of -1). The -net result is that the tool reading the full set of gram files -receives a stream of $n$-grams which will be identical to the stream that -it would have received if the editing commands had been applied to the -text source when the original main gram file set had been generated. - -The edit rules are stored in a file and read in using the \texttt{-f} -option. They consist of set definitions and rule definitions, each -written on a separate line. Each set defines a set of words and is -identified by an integer in the range 0 to 255 -\begin{verbatim} - = '#' ... . -\end{verbatim} -For example, -\begin{verbatim} - #4 red green blue -\end{verbatim} -defines set number 4 as being the 3 words ``red", ``green" and ``blue". Rules -consist of an \textit{application factor}, a \textit{pattern} and and a -\textit{replacement} -\begin{verbatim} - = : - = { | '*' | ! | % } - = { '$' | string } % $' - work around emacs - % colouring bug -\end{verbatim} -The application factor should be a real number in the range 0 to 1 and -it specifies the proportion of occurrences of the pattern which should -be replaced. The pattern consists of a sequence of words, wildcard -symbols (``\texttt{*}") which match anyword, and set references of the -form \texttt{\%n} denoting any word which is in set number \texttt{n} -and \texttt{!n} denoting any word which is not in set number -\texttt{n}. The replacement consists of a sequence of words and field -references of the form \texttt{\$i} which denotes the \texttt{i'th} -matching word in the input. - -As an example, the following rules would translate 50\% of the -occurrences of numbers in the form ``one hundred fifty" to ``one -hundred and fifty" and 30\% of the occurrences of ``one hundred" to -``a hundred". -\begin{verbatim} - #0 one two three four five six seven eight nine fifty sixty seventy - #1 hundred - 0.5 * * hundred %0 * * : $0 $1 $2 and $3 $4 $5 - 0.3 * * !0 one %1 * * : $0 $1 $2 a $4 $5 $6 -\end{verbatim} -Note finally, that \htool{LGPrep} processes edited text in a parallel -stream to normal text, so it is possible to generate edited gram files -whilst generating the main gram file set. However, normally the main -gram files already exist and so it is normal to suppress gram file -generation using the \texttt{-z} option when using edit rules. - -\mysubsect{Use}{LGPrep-Use} - -\htool{LGPrep} is invoked by typing the command line -\begin{verbatim} - LGPrep [options] wordmap [textfile ...] -\end{verbatim} -Each text file is processed in turn and treated as a continuous stream -of words. If no text files are specified standard input is used and -this is the more usual case since it allows the input text source to -be filtered before input to -\htool{LGPrep}, for example, using \htool{LCond.pl} (in {\tt LMTutorial/extras/}). - -Each $n$-gram in the input stream is stored in a buffer. When the buffer -is full it is sorted and multiple occurrences of the same $n$-gram are -merged and the count set accordingly. When this process ceases to -yield sufficient buffer space, the contents are written to an output -gram file. - -The word map file defines the mapping of source words to the numeric -ids used within \HLM\ tools. Any words not in the map are allocated -new ids and added to the map. On completion, a new map with the same -name (unless specified otherwise with the \texttt{-w} option) is -output to the same directory as the output gram files. To initialise -the first invocation of this updating process, a word map file should -be created with a text editor containing the following: -\begin{verbatim} - Name=xxxx - SeqNo=0 - Language=yyyy - Entries=0 - Fields=ID - \Words\ -\end{verbatim} -where \texttt{xxxx} is an arbitrarily chosen name for the word map and -\texttt{yyyy} is the language. Fields specifying the escaping mode to use -(\texttt{HTK} or \texttt{RAW}) and changing \texttt{Fields} to include -frequency counts in the output (i.e.\ \texttt{FIELDS = ID,WFC}) can -also be given. Alternatively, they can be added to the output using -command line options. - -The allowable options to \htool{LGPrep} are as follows - -\begin{optlist} - \ttitem{-a n} Allow upto \texttt{n} new words in input texts - (default 100000). - - \ttitem{-b n} Set the internal gram buffer size to n (default - 2000000). \htool{LGPrep} stores incoming $n$-grams in this buffer. - When the buffer is full, the contents are sorted and written to an - output gram file. Thus, the buffer size determines the amount of - process memory that \htool{LGPrep} will use and the size of the - individual output gram files. - - \ttitem{-c} Add word counts to the output word map. This overrides - the setting in the input word map (default off). - - \ttitem{-d} Directory in which to store the output gram files - (default current directory). - - \ttitem{-e n} Set the internal edited gram buffer size to \texttt{n} - (default 100000). - - \ttitem{-f s} Fix (i.e. edit) the text source using the rules in - \texttt{s}. - - \ttitem{-h} Do not use HTK escaping in the output word map (default - on). - - \ttitem{-i n} Set the index of the first gram file output - to be \texttt{n} (default 0). - - \ttitem{-n n} Set the output $n$-gram size to \texttt{n} (default 3). - - \ttitem{-q} Tag words at sentence start with underscore (\_). - - \ttitem{-r s} Set the root name of the output gram files to - \texttt{s} (default ``gram''). - - \ttitem{-s s} Write the string \texttt{s} into the source field of - the output gram files. This string should be a comment - describing the text source. - - \ttitem{-w s} Write the output map file to \texttt{s} (default same - as input map name stored in the output gram directory). - - \ttitem{-z} Suppress gram file output. This option allows - \htool{LGPrep} to be used just to compute a word frequency map. - It is also normally applied when applying edit rules to the - input. - - \stdoptQ -\end{optlist} -\stdopts{LGPrep} - -\mysubsect{Tracing}{LGPrep-Tracing} - -\htool{LGPrep} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} -\ttitem{00001} basic progress reporting. -\ttitem{00002} monitor buffer save operations. -\ttitem{00004} Trace word input stream. -\ttitem{00010} Trace shift register input. -\ttitem{00020} Rule input monitoring. -\ttitem{00040} Print rule set. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lgprep@\htool{LGPrep}|)} diff --git a/HTKBook/HTKRef/LLink.aux b/HTKBook/HTKRef/LLink.aux deleted file mode 100644 index 223b786..0000000 --- a/HTKBook/HTKRef/LLink.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.30}LLink}{328}{section.17.30}} -\newlabel{s:LLink}{{17.30}{328}{LLink\relax }{section.17.30}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.30.1}Function}{328}{subsection.17.30.1}} -\newlabel{s:Function1}{{17.30.1}{328}{Function\relax }{subsection.17.30.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.30.2}Use}{328}{subsection.17.30.2}} -\newlabel{s:LLink-Use}{{17.30.2}{328}{Use\relax }{subsection.17.30.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.30.3}Tracing}{328}{subsection.17.30.3}} -\newlabel{s:LLink-Tracing}{{17.30.3}{328}{Tracing\relax }{subsection.17.30.3}{}} -\@setckpt{HTKRef/LLink}{ -\setcounter{page}{329} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{30} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LLink.tex b/HTKBook/HTKRef/LLink.tex deleted file mode 100644 index 45d0059..0000000 --- a/HTKBook/HTKRef/LLink.tex +++ /dev/null @@ -1,68 +0,0 @@ -% -% This file by Gareth Moore 12/2/02 -% New -s flag added 18/2/02 -% - -\newpage -\mysect{LLink}{LLink} - -\mysubsect{Function}{Function1} - -\index{ladapt@\htool{LLink}|(} -This tool will create the link file necessary to use the word-given-class and -class-given-class components of a class $n$-gram language model - -Having created the class $n$-gram component with \htool{LBuild} and -the word-given-class component with \htool{Cluster}, you can then -create a third file which points to these two other files by using the -\htool{LLink} tool. This file is the language model you pass to -utilities such as \htool{LPlex}. Alternatively if run with its {\tt --s} option then \htool{LLink} will link the two components together -and create a single resulting file. - - -\mysubsect{Use}{LLink-Use} - -\htool{LLink} is invoked by the command line -\begin{verbatim} - LLink [options] word-classLMfile class-classLMfile outLMfile -\end{verbatim} -The tool checks for the existence of the two existing component -language model files, with {\tt word-} {\tt classLMfile} being the -word-given-class file from \htool{Cluster} and {\tt class-classLMfile} -being the class $n$-gram model generated by \htool{LBuild}. The -word-given-class file is read to discover whether it is a count or -probability-based file, and then an appropriate link file is written -to {\tt outLMfile}. This link file is then suitable for passing to -\htool{LPlex}. Optionally you may overrule the count/probability -distinction by using the {\tt -c} and {\tt -p} parameters. Passing -the {\tt -s} parameter joins the two files into one single resulting -language model rather than creating a third link file which points to -the other two. - -The allowable options to \htool{LLink} are as follows -\begin{optlist} - \ttitem{-c} Force the link file to describe the word-given-class - component as a `counts' file. - - \ttitem{-p} Force the link file to describe the word-given-class - component as a `probabilities' file. - - \ttitem{-s} Write a single file containing both the word-class - component and the class-class component. This single - resulting file is then a self-contained language model - requiring no other files. - -\end{optlist} -\stdopts{LLink} - -\mysubsect{Tracing}{LLink-Tracing} - -\htool{LLink} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{ladapt@\htool{LLink}|)} diff --git a/HTKBook/HTKRef/LMerge.aux b/HTKBook/HTKRef/LMerge.aux deleted file mode 100644 index fd116b5..0000000 --- a/HTKBook/HTKRef/LMerge.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.31}LMerge}{329}{section.17.31}} -\newlabel{s:LMerge}{{17.31}{329}{LMerge\relax }{section.17.31}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.31.1}Function}{329}{subsection.17.31.1}} -\newlabel{s:LMerge-Function}{{17.31.1}{329}{Function\relax }{subsection.17.31.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.31.2}Use}{329}{subsection.17.31.2}} -\newlabel{s:LMerge-Use}{{17.31.2}{329}{Use\relax }{subsection.17.31.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.31.3}Tracing}{329}{subsection.17.31.3}} -\newlabel{s:LMerge-Tracing}{{17.31.3}{329}{Tracing\relax }{subsection.17.31.3}{}} -\@setckpt{HTKRef/LMerge}{ -\setcounter{page}{330} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{31} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LMerge.tex b/HTKBook/HTKRef/LMerge.tex deleted file mode 100644 index 1415f56..0000000 --- a/HTKBook/HTKRef/LMerge.tex +++ /dev/null @@ -1,54 +0,0 @@ -% -% HLMBook - V.Valtchev 26/05/98 -% -% Updated - Gareth Moore 15/01/02 - 1/3/02 -% - -\newpage -\mysect{LMerge}{LMerge} - -\mysubsect{Function}{LMerge-Function} - -\index{lmerge@\htool{LMerge}|(} -This program combines one or more language models to produce an output -model for a specified vocabulary. You can only apply it to word -models or the class $n$-gram component of a class model -- that is, -you cannot apply it to full class models. - -\mysubsect{Use}{LMerge-Use} - -\htool{LMerge} is invoked by typing the command line -\begin{verbatim} - LMerge [options] wordList inModel outModel -\end{verbatim} -The word map and class map are loaded, word-class mappings performed and -a new map is saved to \texttt{outMapFile}. The output map's name will be -set to -\begin{verbatim} -Name = inMapName%%classMapName -\end{verbatim} - -The allowable options to \htool{LMerge} are as follows - -\begin{optlist} -{ - \ttitem{-f s} Set the output LM file format to \texttt{s}. Available options - are \texttt{text}, \texttt{bin} or \texttt{ultra} (default \texttt{bin}). - - \ttitem{-i f fn} Interpolate with model \texttt{fn} using weight \texttt{f}. - - \ttitem{-n n} Produce an \texttt{n}-gram model. - -} -\end{optlist} -\stdopts{LMerge} - - -\mysubsect{Tracing}{LMerge-Tracing} - -\htool{LMerge} Does not provide any trace options. However, trace -information is available from the underlying library modules -\htool{LWMap} and \htool{LCMap} by setting the appropriate trace -configuration parameters. - -\index{lmerge@\htool{LMerge}|)} diff --git a/HTKBook/HTKRef/LNewMap.aux b/HTKBook/HTKRef/LNewMap.aux deleted file mode 100644 index 6596cf0..0000000 --- a/HTKBook/HTKRef/LNewMap.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.32}LNewMap}{330}{section.17.32}} -\newlabel{s:LNewMap}{{17.32}{330}{LNewMap\relax }{section.17.32}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.32.1}Function}{330}{subsection.17.32.1}} -\newlabel{s:Function2}{{17.32.1}{330}{Function\relax }{subsection.17.32.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.32.2}Use}{330}{subsection.17.32.2}} -\newlabel{s:LNewMap-Use}{{17.32.2}{330}{Use\relax }{subsection.17.32.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.32.3}Tracing}{330}{subsection.17.32.3}} -\newlabel{s:LNewMap-Tracing}{{17.32.3}{330}{Tracing\relax }{subsection.17.32.3}{}} -\@setckpt{HTKRef/LNewMap}{ -\setcounter{page}{331} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{32} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LNewMap.tex b/HTKBook/HTKRef/LNewMap.tex deleted file mode 100644 index 84d68de..0000000 --- a/HTKBook/HTKRef/LNewMap.tex +++ /dev/null @@ -1,47 +0,0 @@ -% -% This file by Gareth Moore 12/2/02 -% - -\newpage -\mysect{LNewMap}{LNewMap} - -\mysubsect{Function}{Function2} - -\index{ladapt@\htool{LNewMap}|(} -This tool will create an empty word map suitable for use with -\htool{LGPrep}. - -\mysubsect{Use}{LNewMap-Use} - -\htool{LNewMap} is invoked by the command line -\begin{verbatim} - LNewMap [options] name mapfn -\end{verbatim} -A new word map is created with the file name `mapfn', with its -constituent {\tt Name} header set to the text passed in `name'. -It also creates default {\tt SeqNo}, {\tt Entries}, {\tt EscMode} and {\tt Fields} -headers in the file. The contents of the {\tt EscMode} header may be -altered from the default of {\tt RAW} using the {\tt -e} option, whilst -the {\tt Fields} header contains {\tt ID} but may be added to using the {\tt --f} option. - -The allowable options to \htool{LNewMap} are therefore -\begin{optlist} - \ttitem{-e esc} Change the contents of the {\tt EscMode} header to - {\tt esc}. Default is {\tt RAW}. - - \ttitem{-f fld} Add the field {\tt fld} to the {\tt Fields} header. - -\end{optlist} -\stdopts{LNewMap} - -\mysubsect{Tracing}{LNewMap-Tracing} - -\htool{LNewMap} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{ladapt@\htool{LNewMap}|)} diff --git a/HTKBook/HTKRef/LNorm.aux b/HTKBook/HTKRef/LNorm.aux deleted file mode 100644 index a41b8b8..0000000 --- a/HTKBook/HTKRef/LNorm.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.33}LNorm}{331}{section.17.33}} -\newlabel{s:LNorm}{{17.33}{331}{LNorm\relax }{section.17.33}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.33.1}Function}{331}{subsection.17.33.1}} -\newlabel{s:LNorm-Function}{{17.33.1}{331}{Function\relax }{subsection.17.33.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.33.2}Use}{331}{subsection.17.33.2}} -\newlabel{s:LNorm-Use}{{17.33.2}{331}{Use\relax }{subsection.17.33.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.33.3}Tracing}{331}{subsection.17.33.3}} -\newlabel{s:LNorm-Tracing}{{17.33.3}{331}{Tracing\relax }{subsection.17.33.3}{}} -\@setckpt{HTKRef/LNorm}{ -\setcounter{page}{332} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{33} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LNorm.tex b/HTKBook/HTKRef/LNorm.tex deleted file mode 100644 index 22ee885..0000000 --- a/HTKBook/HTKRef/LNorm.tex +++ /dev/null @@ -1,63 +0,0 @@ -% -% Gareth Moore 27/03/02 -% - -\newpage -\mysect{LNorm}{LNorm} - -\mysubsect{Function}{LNorm-Function} - -\index{hlmcopy@\htool{LNorm}|(} -The basic function of this tool is to renormalise language models, -optionally pruning the vocabulary at the same time or applying cutoffs -or weighted discounts. - -\mysubsect{Use}{LNorm-Use} - -\htool{LNorm} is invoked by the command line -\begin{verbatim} - LNorm [options] inLMFile outLMFile -\end{verbatim} -This reads in the language model {\tt inLMFile} and writes a new -language model to {\tt outLMFile}, applying editing operations -controlled by the following options. In many respects it is similar -to \htool{HLMCopy}, but unlike \htool{HLMCopy} it will always -renormalise the resulting model. - -\begin{optlist} - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. - Pruning can be applied to the bigram and higher - components of a model ($n$>1). The pruning procedure will keep only - $n$-grams which have been observed more than $c$ times. Note - that this option is only applicable to count-based language - models. - - \ttitem{-d f} Set weighted discount pruning for \texttt{n}-gram - to \texttt{c} for Seymore-Rosenfeld pruning. Note that this - option is only applicable to count-based language models. - - \ttitem{-f s} Set the output language model format to {\tt s}. - Possible options are {\tt TEXT} for the standard ARPA-MIT - LM format, {\tt BIN} for Entropic {\em binary} format and - {\tt ULTRA} for Entropic {\em ultra} format. - - \ttitem{-n n} Save target model as $n$-gram. - - \ttitem{-w f} Read a word-list defining the output vocabulary from - {\tt f}. This will be used to select the vocabulary for - the output language model. - -\end{optlist} -\stdopts{LNorm} - -\mysubsect{Tracing}{LNorm-Tracing} - -\htool{LNorm} supports the following trace options where each -trace flag is given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{hlmcopy@\htool{LNorm}|)} diff --git a/HTKBook/HTKRef/LPlex.aux b/HTKBook/HTKRef/LPlex.aux deleted file mode 100644 index c4364da..0000000 --- a/HTKBook/HTKRef/LPlex.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.34}LPlex}{332}{section.17.34}} -\newlabel{s:LPlex}{{17.34}{332}{LPlex\relax }{section.17.34}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.34.1}Function}{332}{subsection.17.34.1}} -\newlabel{s:LPlex-Function}{{17.34.1}{332}{Function\relax }{subsection.17.34.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.34.2}Use}{332}{subsection.17.34.2}} -\newlabel{s:LPlex-Use}{{17.34.2}{332}{Use\relax }{subsection.17.34.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.34.3}Tracing}{333}{subsection.17.34.3}} -\newlabel{s:LPlex-Tracing}{{17.34.3}{333}{Tracing\relax }{subsection.17.34.3}{}} -\@setckpt{HTKRef/LPlex}{ -\setcounter{page}{334} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{34} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LPlex.tex b/HTKBook/HTKRef/LPlex.tex deleted file mode 100644 index 7903d6f..0000000 --- a/HTKBook/HTKRef/LPlex.tex +++ /dev/null @@ -1,96 +0,0 @@ -% -% HLMBook - Valtcho Valtchev 04/02/98 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LPlex}{LPlex} - -\mysubsect{Function}{LPlex-Function} - -\index{lplex@\htool{LPlex}|(} -This program computes the perplexity and out of vocabulary (OOV) statistics of -text data using one or more language models. The perplexity is calculated on -per-utterance basis. Each utterance in the text data should start with a -sentence start symbol ({\tt }) and finish with a sentence end ({\tt }) -symbol. The default values for the sentence markers can be changed via the -config parameters {\tt STARTWORD} and {\tt ENDWORD} respectively. Text data can -be supplied as an \HTK\ Master Label File (MLF) or as plain text ({\tt -t} -option). Multiple perplexity tests can be performed on the same texts using -separate $n$-gram components of the model(s). OOV words in the test data can be -handled in two ways. By default the probability of $n$-grams containing words -not in the lexicon is simply not calculated. This is useful for testing closed -vocabulary models on texts containing OOVs. If the {\tt -u} option is -specified, $n$-grams giving the probability of an OOV word conditioned on its -predecessors are discarded, however, the probability of words in the lexicon -can be conditioned on context including OOV words. The latter mode of operation -relies on the presence of the unknown class symbol ({\tt !!UNK}) in the -language model (the default value can be changed via the config parameter {\tt -UNKNOWNNAME}). If multiple models are specified ({\tt -i} option) the -probability of an $n$-gram will be calculated as a sum of the weighted -probabilities from each of the models. - -\mysubsect{Use}{LPlex-Use} - -\htool{LPlex} is invoked by the command line -\begin{verbatim} - LPlex [options] langmodel labelFiles ... -\end{verbatim} - -The allowable options to \htool{LPlex} are as follows -\begin{optlist} - - \ttitem{-c n c} Set the pruning threshold for $n$-grams to $c$. Pruning can - be applied to the bigram (n=2) and trigram (n=3) components of the - model. The pruning procedure will keep only $n$-grams which have been - observed more than $c$ times. Note that this option is only applicable - to the model generated from the text data. - - \ttitem{-e s t} Label {\tt t} is made equivalent to label {\tt s}. More - precisely {\tt t} is assigned to an equivalence class of which {\tt s} - is the identifying member. The equivalence mappings are applied to the - text and should be used to map symbols in the text to symbols in the - language model's vocabulary. - - \ttitem{-i w fn} Interpolate with model {\tt fn} using weight {\tt w}. - - \ttitem{-n n} Perform a perplexity test using the $n$-gram component of the - model. Multiple tests can be specified. By default the tool will use - the maximum value of $n$ available. - - \ttitem{-o} Print a sorted list of unique OOV words encountered in the text - and their occurrence counts. - - \ttitem{-t} Text stream mode. If this option is set, the specified test files - will be assumed to contain plain text. - - \ttitem{-u} In this mode OOV words can be present in the $n$-gram context - when predicting words in the vocabulary. The conditional probability of - OOV words is still ignored. - - \ttitem{-w fn} Load word list in {\tt fn}. The word list will be used as the - restricting vocabulary for the perplexity calculation. If a word list - file is not specified, the target vocabulary will be constructed by - combining the vocabularies of all specified language models. - - \ttitem{-z s} Redefine the null equivalence class name to {\tt s}. The default - null class name is {\tt ???}. Any words mapped to the null class will be - deleted from the text. -\end{optlist} -\stdopts{LPlex} - -\mysubsect{Tracing}{LPlex-Tracing} - -\htool{LPlex} supports the following trace options where each trace flag is -given using an octal base -\begin{optlist} - \ttitem{00001} basic progress reporting. - \ttitem{00002} print information after each utterance processed. - \ttitem{00004} display encountered OOVs. - \ttitem{00010} display probability of each $n$-gram looked up. - \ttitem{00020} print each utterance and its perplexity. -\end{optlist} -Trace flags are set using the \texttt{-T} option or the \texttt{TRACE} -configuration variable. -\index{lplex@\htool{LPlex}|)} diff --git a/HTKBook/HTKRef/LSubset.aux b/HTKBook/HTKRef/LSubset.aux deleted file mode 100644 index 889eb77..0000000 --- a/HTKBook/HTKRef/LSubset.aux +++ /dev/null @@ -1,42 +0,0 @@ -\relax -\@writefile{toc}{\contentsline {section}{\numberline {17.35}LSubset}{334}{section.17.35}} -\newlabel{s:LSubset}{{17.35}{334}{LSubset\relax }{section.17.35}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.35.1}Function}{334}{subsection.17.35.1}} -\newlabel{s:LSubset-Function}{{17.35.1}{334}{Function\relax }{subsection.17.35.1}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.35.2}Use}{334}{subsection.17.35.2}} -\newlabel{s:LSubset-Use}{{17.35.2}{334}{Use\relax }{subsection.17.35.2}{}} -\@writefile{toc}{\contentsline {subsection}{\numberline {17.35.3}Tracing}{334}{subsection.17.35.3}} -\newlabel{s:LSubset-Tracing}{{17.35.3}{334}{Tracing\relax }{subsection.17.35.3}{}} -\@setckpt{HTKRef/LSubset}{ -\setcounter{page}{335} -\setcounter{equation}{10} -\setcounter{enumi}{2} -\setcounter{enumii}{2} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{16} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{35} -\setcounter{subsection}{3} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{145} -\setcounter{Hfootnote}{94} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{1} -\setcounter{figctr}{1} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/LSubset.tex b/HTKBook/HTKRef/LSubset.tex deleted file mode 100644 index 0d2957e..0000000 --- a/HTKBook/HTKRef/LSubset.tex +++ /dev/null @@ -1,60 +0,0 @@ -% -% HLMBook - V.Valtchev 26/05/98 -% -% Updated - Gareth Moore 15/01/02 -% - -\newpage -\mysect{LSubset}{LSubset} - -\mysubsect{Function}{LSubset-Function} - -\index{lsubset@\htool{LSubset}|(} -This program will resolve a word map against a class map and produce a -new word map which contains the class-mapped words. The tool is typically -used to generated a vocabulary-specific $n$-gram word map which is then -supplied to \htool{LBuild} to build the actual language models. - -All class symbols present in the class map will be added to the output -map. The \texttt{-a} option can be used to set the maximum number of -new class symbols in the final word map. Note that the word-class map -resolution procedure is identical to the the one used in \htool{LSubset} -when filtering $n$-gram files. - -\mysubsect{Use}{LSubset-Use} - -\htool{LSubset} is invoked by typing the command line -\begin{verbatim} - LSubset [options] inMapFile classMap outMapFile -\end{verbatim} -The word map and class map are loaded, word-class mappings performed and -a new map is saved to \texttt{outMapFile}. The output map's name will be -set to -\begin{verbatim} -Name = inMapName%%classMapName -\end{verbatim} - -The allowable options to \htool{LSubset} are as follows - -\begin{optlist} - - \ttitem{-a n} Set the maximum number of new classes that can be added - to the output map (default 1000). - -\end{optlist} -\stdopts{LSubset} - -\mysubsect{Tracing}{LSubset-Tracing} - -\htool{LSubset} does not provide any trace options. However, trace -information is available from the underlying library modules -\htool{LWMap} and \htool{LCMap} by seeting the appropriate trace -configuration parameters. - -\index{lsubset@\htool{LSubset}|)} - - - - - - diff --git a/HTKBook/HTKRef/tools.aux b/HTKBook/HTKRef/tools.aux deleted file mode 100644 index 1ffafec..0000000 --- a/HTKBook/HTKRef/tools.aux +++ /dev/null @@ -1,34 +0,0 @@ -\relax -\@setckpt{HTKRef/tools}{ -\setcounter{page}{251} -\setcounter{equation}{0} -\setcounter{enumi}{3} -\setcounter{enumii}{1} -\setcounter{enumiii}{2} -\setcounter{enumiv}{3} -\setcounter{footnote}{0} -\setcounter{mpfootnote}{0} -\setcounter{part}{4} -\setcounter{chapter}{17} -\setcounter{section}{0} -\setcounter{subsection}{0} -\setcounter{subsubsection}{0} -\setcounter{paragraph}{0} -\setcounter{subparagraph}{0} -\setcounter{figure}{0} -\setcounter{table}{0} -\setcounter{Item}{114} -\setcounter{Hfootnote}{78} -\setcounter{lpart}{0} -\setcounter{lchapter}{0} -\setcounter{lsection}{0} -\setcounter{lsubsection}{0} -\setcounter{lsubsubsection}{0} -\setcounter{lparagraph}{0} -\setcounter{lsubparagraph}{0} -\setcounter{lsubsubparagraph}{0} -\setcounter{tabctr}{0} -\setcounter{figctr}{0} -\setcounter{parentequation}{0} -\setcounter{section@level}{2} -} diff --git a/HTKBook/HTKRef/tools.tex b/HTKBook/HTKRef/tools.tex deleted file mode 100644 index 4e69f9d..0000000 --- a/HTKBook/HTKRef/tools.tex +++ /dev/null @@ -1,91 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 23/09/95 -% - -% Define standard option descriptions - -%\stdopts{toolname} -\newcommand{\stdopts}[1]{ -\htool{#1} also supports the standard options \texttt{-A}, -\texttt{-C}, \texttt{-D}, \texttt{-S}, \texttt{-T}, and \texttt{-V} as described -in section~\ref{s:stdopts}. -} - -\newcommand{\stdoptB}{ - \ttitem{-B} Output HMM definition files in binary format. -} -\newcommand{\stdoptE}{ - \ttitem{-E dir [ext]} Parent transform directory and optional extension - for parent transforms. The default option is that no parent - transform is used. -} -\newcommand{\stdoptF}{ - \ttitem{-F fmt} Set the source data format to {\tt fmt}. -} -\newcommand{\stdoptG}{ - \ttitem{-G fmt} Set the label file format to {\tt fmt}. -} -\newcommand{\stdoptH}{ - \ttitem{-H mmf} Load HMM macro model file {\tt mmf}. This option - may be repeated to load multiple MMFs. -} -\newcommand{\stdoptI}{ - \ttitem{-I mlf} This loads the master label file {\tt mlf}. This option - may be repeated to load several MLFs. -} -\newcommand{\stdoptJ}{ - \ttitem{-J dir [ext]} Add directory to the list of possible input - transform directories. Only one of the options can specify the - extension to use for the input transforms. -} -\newcommand{\stdoptK}{ - \ttitem{-K dir [ext]} Output transform directory and optional extension - for output transforms. The default option is that there is no - output extension and the current transform directory is used. -} -\newcommand{\stdoptL}{ - \ttitem{-L dir} Search directory \texttt{dir} for label files (default - is to search current directory). -} -\newcommand{\stdoptM}{ - \ttitem{-M dir} Store output HMM macro model files in the directory \texttt{dir}. - If this option is not given, the new HMM definition will overwrite - the existing one. -} -\newcommand{\stdoptO}{ - \ttitem{-O fmt} Set the target data format to {\tt fmt}. -} -\newcommand{\stdoptP}{ - \ttitem{-P fmt} Set the target label format to {\tt fmt}. -} -\newcommand{\stdoptQ}{ - \ttitem{-Q} Print a summary of all commands supported by this tool. -} -\newcommand{\stdoptX}{ - \ttitem{-X ext} Set label file extension to {\tt ext} - (default is \texttt{lab}). -} - - -%%% Local Variables: -%%% mode: plain-tex -%%% TeX-master: "../htkbook" -%%% End: diff --git a/HTKBook/HTKXFigs/ClassLM.doc b/HTKBook/HTKXFigs/ClassLM.doc deleted file mode 100644 index 93f7d8a..0000000 Binary files a/HTKBook/HTKXFigs/ClassLM.doc and /dev/null differ diff --git a/HTKBook/HTKXFigs/HLMoperation.doc b/HTKBook/HTKXFigs/HLMoperation.doc deleted file mode 100644 index 3cd432d..0000000 Binary files a/HTKBook/HTKXFigs/HLMoperation.doc and /dev/null differ diff --git a/HTKBook/HTKXFigs/LTool.doc b/HTKBook/HTKXFigs/LTool.doc deleted file mode 100644 index 696bc8a..0000000 Binary files a/HTKBook/HTKXFigs/LTool.doc and /dev/null differ diff --git a/HTKBook/HTKXFigs/Tool.labs.fig b/HTKBook/HTKXFigs/Tool.labs.fig deleted file mode 100644 index c596d80..0000000 --- a/HTKBook/HTKXFigs/Tool.labs.fig +++ /dev/null @@ -1,183 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 2 14 0.0000 4 150 630 4642 1449 Labels\001 -4 0 -1 0 0 2 14 0.0000 4 150 720 4109 2929 HLabel\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/Tool.model.fig b/HTKBook/HTKXFigs/Tool.model.fig deleted file mode 100644 index 462cf55..0000000 --- a/HTKBook/HTKXFigs/Tool.model.fig +++ /dev/null @@ -1,183 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 4895 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 4599 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 -4 0 -1 0 0 2 14 0.0000 4 150 1035 8743 1449 Definitions\001 -4 0 -1 0 0 2 14 0.0000 4 150 570 8937 1271 HMM\001 -4 0 -1 0 0 2 14 0.0000 4 150 765 6951 3402 HModel\001 -4 0 -1 0 0 2 14 0.0000 4 150 525 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/Tool.netdict.fig b/HTKBook/HTKXFigs/Tool.netdict.fig deleted file mode 100644 index 47b8ce0..0000000 --- a/HTKBook/HTKXFigs/Tool.netdict.fig +++ /dev/null @@ -1,185 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6765 4378 7720 4437 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4378 6765 4378 --6 -6 6765 4974 7720 5034 -6 6765 4974 7720 5034 -6 6765 4974 7720 5034 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4974 6765 4974 --6 --6 --6 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7720 3184 8377 2766 8377 3363 7720 3781 7720 3184 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 3781 3900 3781 3900 4378 2945 4378 2945 3781 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6765 3781 7720 3781 7720 4378 6765 4378 6765 3781 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7720 3781 8377 3363 8377 3960 7720 4378 7720 3781 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 5810 2587 6765 2587 7422 2169 6467 2169 5810 2587 5810 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 2587 3900 2587 3900 3781 2945 3781 2945 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4378 3900 4378 3900 4974 2945 4974 2945 4378 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 2945 2587 3602 2169 4557 2169 3900 2587 2945 2587 2945 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3900 2587 4855 2587 4855 3184 3900 3184 3900 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4974 3900 4974 3900 5571 2945 5571 2945 4974 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6765 3781 7720 3781 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6765 3781 7720 3781 7720 4378 6765 4378 6765 3781 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 2587 8377 2169 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4378 8377 3960 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 3781 8377 3363 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 3184 8377 2766 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 5571 8377 5154 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6825 3184 3900 3184 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7720 4974 8377 4557 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7720 3781 8377 3363 8377 3960 7720 4378 7720 3781 7720 3781 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 4974 6765 4974 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6765 3184 6765 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8377 2766 8377 5154 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 3184 3900 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 4378 2945 4378 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2945 4974 3900 4974 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4855 2587 4855 3184 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2945 2587 3602 2169 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 2587 3900 3243 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3900 2587 4557 2169 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3900 1632 3900 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4855 1632 4855 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5810 1632 5810 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6765 1632 6765 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7720 1632 7720 2348 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2945 3781 3900 3781 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4855 4974 4855 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5810 4974 5810 5571 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8079 3243 9093 3243 9093 1632 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6288 5571 6288 6288 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5273 5571 5273 6288 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8079 4437 8795 4437 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8079 3840 8795 3840 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4378 3900 4378 3900 4974 2945 4974 2945 4378 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 4974 3900 4974 3900 5571 2945 5571 2945 4974 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 4855 2587 5810 2587 5810 3184 4855 3184 4855 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6765 3184 7720 3184 7720 3781 6765 3781 6765 3184 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 5810 2587 6765 2587 6765 3184 5810 3184 5810 2587 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2945 2587 7720 2587 7720 5571 2945 5571 2945 2587 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 6750 2587 7705 2587 7705 3184 6750 3184 6750 2587 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 6765 2587 7422 2169 8377 2169 7720 2587 6765 2587 6765 2587 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 4855 2587 5512 2169 6467 2169 5810 2587 4855 2587 4855 2587 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 5810 2587 6467 2169 7422 2169 6765 2587 5810 2587 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4200 2175 5550 2175 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 7720 2587 8377 2169 8377 2766 7720 3184 7720 2587 7720 2587 -4 0 -1 0 0 0 14 0.0000 4 150 495 7004 5333 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8855 1273 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 915 8735 1453 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9034 3840 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9034 4437 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 5989 6586 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5094 6586 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5034 6765 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 5034 4139 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3109 3557 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3109 3378 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3109 3199 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3109 3020 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4064 2945 HLabel\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6929 3422 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6929 3661 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6929 4139 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6929 4736 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 5974 5333 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5079 5333 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4049 5333 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3109 5333 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3109 4736 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3109 4139 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9288 4019 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9288 4616 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 195 645 3646 1273 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3706 1453 Data\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4526 1453 Labels\001 -4 0 -1 0 0 2 14 0.0000 4 150 510 5079 2945 HLM\001 -4 0 -1 0 0 2 14 0.0000 4 150 510 6034 2945 HNet\001 -4 0 -1 0 0 2 14 0.0000 4 150 585 6929 2945 HDict\001 -4 0 -1 0 0 2 14 0.0000 4 195 885 5421 1273 Language\001 -4 0 -1 0 0 2 14 0.0000 4 150 675 5556 1453 Models\001 -4 0 -1 0 0 2 14 0.0000 4 165 810 6527 1094 Lattices/\001 -4 0 -1 0 0 2 14 0.0000 4 150 990 6467 1273 Constraint\001 -4 0 -1 0 0 2 14 0.0000 4 150 780 6527 1453 Network\001 -4 0 -1 0 0 2 14 0.0000 4 195 990 7497 1453 Dictionary\001 diff --git a/HTKBook/HTKXFigs/Tool.shell.fig b/HTKBook/HTKXFigs/Tool.shell.fig deleted file mode 100644 index ee46bbc..0000000 --- a/HTKBook/HTKXFigs/Tool.shell.fig +++ /dev/null @@ -1,187 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 4895 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 4599 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 2 14 0.0000 4 150 885 9039 3817 Terminal\001 -4 0 -1 0 0 2 14 0.0000 4 165 315 9367 3994 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 -4 0 -1 0 0 2 14 0.0000 4 150 660 3162 4705 HMem\001 -4 0 -1 0 0 2 14 0.0000 4 150 675 3162 5297 HMath\001 -4 0 -1 0 0 2 14 0.0000 4 150 690 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/Tool.spio.fig b/HTKBook/HTKXFigs/Tool.spio.fig deleted file mode 100644 index b3aca9d..0000000 --- a/HTKBook/HTKXFigs/Tool.spio.fig +++ /dev/null @@ -1,181 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 4895 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 4599 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 3 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4000 3947 5200 -2 2 0 2 -1 7 1 0 15 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 2 14 0.0000 4 195 690 3620 1271 Speech\001 -4 0 -1 0 0 2 14 0.0000 4 150 450 3679 1449 Data\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 -4 0 -1 0 0 2 14 0.0000 4 195 615 3162 4113 HSigP\001 -4 0 -1 0 0 2 14 0.0000 4 195 495 3162 3537 HVQ\001 -4 0 -1 0 0 2 14 0.0000 4 150 690 3162 3359 HParm\001 -4 0 -1 0 0 2 14 0.0000 4 150 735 3162 3181 HWave\001 -4 0 -1 0 0 2 14 0.0000 4 150 705 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 diff --git a/HTKBook/HTKXFigs/WordLM.doc b/HTKBook/HTKXFigs/WordLM.doc deleted file mode 100644 index f1e637b..0000000 Binary files a/HTKBook/HTKXFigs/WordLM.doc and /dev/null differ diff --git a/HTKBook/HTKXFigs/cover.fig b/HTKBook/HTKXFigs/cover.fig deleted file mode 100644 index acfbd3d..0000000 --- a/HTKBook/HTKXFigs/cover.fig +++ /dev/null @@ -1,23 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6600 5100 9600 5850 -4 2 -1 0 0 0 50 0.0000 0 690 3915 9600 5625 Steve Young\001 --6 -2 1 0 5 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 7275 5100 7275 -2 1 0 5 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 7950 5100 7950 -4 0 -1 0 0 2 60 0.0000 0 630 1530 1800 1200 The\001 -4 2 -1 0 0 0 35 0.0000 0 375 2955 9600 6750 Dan Kershaw\001 -4 2 -1 0 0 0 35 0.0000 0 375 2610 9600 7335 Julian Odell\001 -4 2 -1 0 0 0 35 0.0000 0 375 2895 9600 7920 Dave Ollason\001 -4 2 -1 0 0 0 35 0.0000 0 375 3720 9600 8505 Valtcho Valtchev\001 -4 2 -1 0 0 0 35 0.0000 0 375 3195 9600 9090 Phil Woodland\001 -4 0 -1 0 0 2 75 0.0000 0 795 3405 6000 3600 BOOK\001 -4 0 -1 0 0 2 140 0.0000 4 1485 1395 3150 3600 T\001 -4 0 -1 0 0 2 95 0.0000 0 1005 1125 4200 3600 K\001 -4 0 -1 0 0 2 95 0.0000 4 1005 1125 2370 3600 H\001 -4 0 -1 0 0 2 35 0.0000 0 375 2610 2400 7800 Version 2.2\001 diff --git a/HTKBook/HTKXFigs/headapt.fig b/HTKBook/HTKXFigs/headapt.fig deleted file mode 100644 index de42426..0000000 --- a/HTKBook/HTKXFigs/headapt.fig +++ /dev/null @@ -1,125 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 2625 6600 6750 7875 -6 3534 6929 3650 7045 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 3534 6929 3592 7045 3650 6929 3534 6929 --6 -6 4463 6929 4579 7045 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 4463 6929 4521 7045 4579 6929 4463 6929 --6 -6 5391 6929 5507 7045 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 5391 6929 5449 7045 5507 6929 5391 6929 --6 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 3766 7542 246 246 3766 7542 4012 7788 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 4688 7540 246 246 4688 7540 4934 7786 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 5617 7540 246 246 5617 7540 5863 7786 -1 3 0 2 -1 7 0 0 17 0.000 1 0.0000 6485 7542 183 183 6485 7542 6668 7725 -1 3 0 2 0 7 0 0 17 0.000 1 0.0000 2896 7542 183 183 2896 7542 3079 7725 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3998 7542 4463 7542 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4927 7542 5391 7542 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3070 7542 3534 7542 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5856 7542 6320 7542 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 3882 7335 3940 7103 3940 6871 3766 6581 3592 6871 3592 7103 - 3650 7335 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 4811 7335 4869 7103 4869 6871 4695 6581 4521 6871 4521 7103 - 4579 7335 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 5740 7335 5798 7103 5798 6871 5624 6581 5449 6871 5449 7103 - 5507 7335 --6 -6 7200 3450 8550 4950 -4 0 -1 0 0 0 18 0.0000 4 195 960 7200 3675 Labelled\001 -4 0 -1 0 0 0 18 0.0000 4 255 1305 7200 3990 Adaptation\001 -4 0 -1 0 0 0 18 0.0000 4 135 240 7200 4305 or\001 -4 0 -1 0 0 0 18 0.0000 4 195 1290 7200 4620 Enrollment\001 -4 0 -1 0 0 0 18 0.0000 4 195 555 7200 4935 Data\001 --6 -6 2625 1800 6750 3075 -6 3534 2156 3650 2272 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 3534 2156 3592 2272 3650 2156 3534 2156 --6 -6 4463 2156 4579 2272 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 4463 2156 4521 2272 4579 2156 4463 2156 --6 -6 5391 2156 5507 2272 -2 1 0 0 -1 7 0 0 0 0.000 0 0 -1 0 0 4 - 5391 2156 5449 2272 5507 2156 5391 2156 --6 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 3766 2794 246 246 3766 2794 3940 2968 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 4688 2792 246 246 4688 2792 4862 2967 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 5617 2792 246 246 5617 2792 5791 2967 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 2896 2794 183 183 2896 2794 3070 2852 -1 3 0 2 -1 7 0 0 -1 0.000 1 0.0000 6485 2794 183 183 6485 2794 6659 2852 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3998 2794 4463 2794 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4927 2794 5391 2794 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3070 2794 3534 2794 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5856 2794 6320 2794 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 3882 2562 3940 2330 3940 2098 3766 1807 3592 2098 3592 2330 - 3650 2562 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 4811 2562 4869 2330 4869 2098 4695 1807 4521 2098 4521 2330 - 4579 2562 -3 0 0 2 -1 7 0 0 -1 0.000 0 0 0 7 - 5740 2562 5798 2330 5798 2098 5624 1807 5449 2098 5449 2330 - 5507 2562 --6 -6 2925 4650 6075 4950 -6 2925 4650 6075 4950 -6 2925 4650 6075 4950 -6 4425 4650 6075 4950 -6 4425 4650 5250 4950 -4 2 -1 0 0 2 24 0.0000 0 255 750 5197 4905 /HA\001 --6 -4 0 -1 0 0 2 20 0.0000 4 210 840 5189 4904 DAPT\001 --6 -4 2 -1 0 0 2 24 0.0000 0 255 810 3772 4905 HEA\001 --6 --6 -4 0 -1 0 0 2 20 0.0000 4 210 840 3764 4904 DAPT\001 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4695 5768 4695 6233 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 7072 4202 6607 4608 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 1 - 4650 3375 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 4725 3125 4725 3822 -2 2 0 2 -1 7 1 0 17 0.000 0 0 -1 0 0 5 - 2685 3936 6333 3936 6333 5760 2685 5760 2685 3936 -2 1 0 2 -1 7 2 0 17 0.000 0 0 -1 0 0 4 - 2667 3943 3073 3639 6720 3639 6315 3943 -2 1 0 2 -1 7 2 0 17 0.000 0 0 -1 0 0 4 - 6315 3943 6720 3639 6720 5361 6315 5767 -4 1 -1 0 0 0 18 0.0000 4 255 5070 4695 6523 Transformed Speaker Independent Model Set\001 -4 1 -1 0 0 0 18 0.0000 4 255 3540 4695 1749 Speaker Independent Model Set\001 diff --git a/HTKBook/HTKXFigs/headaptrdp.fig b/HTKBook/HTKXFigs/headaptrdp.fig deleted file mode 100644 index b4b7699..0000000 --- a/HTKBook/HTKXFigs/headaptrdp.fig +++ /dev/null @@ -1,473 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 75 75 10125 9150 -6 1611 1363 2653 2406 -2 4 0 2 -1 7 4 0 20 0.000 0 0 5 0 0 5 - 2618 2393 1636 2393 1636 1412 2618 1412 2618 2393 -4 0 -1 4 0 0 13 0.0000 0 135 765 1795 1607 000 023 b\001 -4 0 -1 4 0 0 13 0.0000 0 135 810 1795 1840 024 091 ih\001 -4 0 -1 4 0 0 13 0.0000 0 135 735 1795 2075 092 134 t\001 -4 0 -1 4 0 0 13 0.0000 0 135 810 1795 2307 135 182 ih\001 --6 -6 2101 1855 3144 2897 -2 4 0 2 -1 7 2 0 20 0.000 0 0 5 0 0 5 - 3108 2884 2126 2884 2126 1901 3108 1901 3108 2884 -4 0 -1 2 0 0 13 0.0000 0 135 765 2286 2099 000 046 s\001 -4 0 -1 2 0 0 13 0.0000 0 135 810 2286 2332 046 091 ih\001 -4 0 -1 2 0 0 13 0.0000 0 135 735 2286 2564 092 134 t\001 -4 0 -1 2 0 0 13 0.0000 0 135 810 2286 2799 135 182 ih\001 --6 -6 1365 1116 2408 2161 -2 4 0 2 -1 7 5 0 20 0.000 0 0 5 0 0 5 - 2372 2148 1388 2148 1388 1164 2372 1164 2372 2148 -4 0 -1 5 0 0 13 0.0000 0 135 765 1550 1363 000 023 b\001 -4 0 -1 5 0 0 13 0.0000 0 135 810 1550 1595 024 091 ih\001 -4 0 -1 5 0 0 13 0.0000 0 135 735 1550 1830 092 134 t\001 -4 0 -1 5 0 0 13 0.0000 0 135 810 1550 2063 135 182 ih\001 --6 -6 75 75 10125 9150 -6 6675 4350 10125 6600 -6 6816 4492 7831 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 7758 5146 6889 5146 6889 4565 7758 4565 7758 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 7034 4855 f\001 --6 -6 7179 4711 8194 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 8122 5364 7252 5364 7252 4783 8122 4783 8122 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 7396 5073 s\001 --6 -6 7543 4929 8557 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 8484 5581 7613 5581 7613 5001 8484 5001 8484 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 7758 5291 ch\001 --6 -6 7904 5146 8919 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 8848 5798 7975 5798 7975 5218 8848 5218 8848 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 8122 5508 t\001 --6 -6 8266 5364 9281 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 9209 6015 8339 6015 8339 5435 9209 5435 9209 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 8484 5725 aa\001 --6 -6 8630 5581 9644 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 9572 6233 8701 6233 8701 5652 9572 5652 9572 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 8848 5943 eh\001 --6 -6 8992 5798 10008 6524 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 9934 6451 9065 6451 9065 5871 9934 5871 9934 6451 -4 0 -1 1 0 0 17 0.0000 0 180 195 9209 6161 ih\001 --6 -6 6816 4492 7831 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 7758 5146 6889 5146 6889 4565 7758 4565 7758 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 7034 4855 f\001 --6 -6 7179 4711 8194 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 8122 5364 7252 5364 7252 4783 8122 4783 8122 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 7396 5073 s\001 --6 -6 7543 4929 8557 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 8484 5581 7613 5581 7613 5001 8484 5001 8484 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 7758 5291 ch\001 --6 -6 7904 5146 8919 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 8848 5798 7975 5798 7975 5218 8848 5218 8848 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 8122 5508 t\001 --6 -6 8266 5364 9281 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 9209 6015 8339 6015 8339 5435 9209 5435 9209 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 8484 5725 aa\001 --6 -6 8630 5581 9644 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 9572 6233 8701 6233 8701 5652 9572 5652 9572 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 8848 5943 eh\001 --6 -2 2 0 0 -1 7 8 0 15 0.000 0 0 -1 0 0 5 - 6705 4422 10095 4422 10095 6595 6705 6595 6705 4422 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 9934 6451 9065 6451 9065 5871 9934 5871 9934 6451 -2 2 0 0 -1 7 8 0 17 0.000 0 0 -1 0 0 5 - 6705 4422 10095 4422 10095 6595 6705 6595 6705 4422 -4 2 -1 0 0 0 17 0.0000 0 180 630 9876 4855 MMF\001 -4 0 -1 1 0 0 17 0.0000 0 180 195 9209 6161 ih\001 --6 -6 3600 75 7875 3450 -6 5198 75 6473 792 -6 5205 75 6422 771 -2 4 0 2 -1 7 0 0 -1 0.000 0 0 8 0 0 5 - 6336 684 5292 684 5292 162 6336 162 6336 684 -4 1 -1 0 0 0 18 0.0000 4 195 885 5814 510 trainlist\001 --6 --6 -6 4371 1918 5994 2729 -2 4 0 2 -1 7 3 0 20 0.000 0 0 4 0 0 5 - 5939 2675 4426 2675 4426 1974 5939 1974 5939 2675 -2 1 0 2 -1 7 3 0 20 0.000 0 0 -1 0 0 29 - 4530 2331 4576 2143 4718 2049 4763 2518 4811 2235 4811 2423 - 4858 2188 4904 2470 4951 2423 4998 2283 4998 2188 5044 2331 - 5093 2188 5186 2518 5233 2188 5233 2423 5280 2235 5326 2423 - 5326 2518 5373 2283 5420 2188 5467 2377 5561 2283 5608 2377 - 5655 2283 5701 2423 5748 2331 5795 2377 5842 2331 --6 -6 4615 2243 6237 3054 -2 4 0 2 -1 7 2 0 20 0.000 0 0 4 0 0 5 - 6183 2999 4669 2999 4669 2298 6183 2298 6183 2999 -2 1 0 2 -1 7 2 0 20 0.000 0 0 -1 0 0 29 - 4773 2655 4820 2468 4961 2373 5008 2842 5054 2560 5054 2748 - 5101 2512 5148 2794 5195 2748 5241 2608 5241 2512 5288 2655 - 5336 2512 5429 2842 5476 2512 5476 2748 5523 2560 5570 2748 - 5570 2842 5616 2608 5663 2512 5710 2702 5805 2608 5851 2702 - 5898 2608 5945 2748 5992 2655 6038 2702 6085 2655 --6 -6 4858 2567 6480 3378 -2 4 0 2 -1 7 1 0 20 0.000 0 0 4 0 0 5 - 6426 3324 4912 3324 4912 2623 6426 2623 6426 3324 -2 1 0 2 -1 7 1 0 20 0.000 0 0 -1 0 0 29 - 5016 2980 5063 2792 5204 2698 5251 3166 5298 2884 5298 3072 - 5345 2838 5391 3119 5438 3072 5485 2932 5485 2838 5531 2980 - 5579 2838 5673 3166 5720 2838 5720 3072 5766 2884 5813 3072 - 5813 3166 5860 2932 5907 2838 5953 3026 6048 2932 6095 3026 - 6142 2932 6188 3072 6235 2980 6282 3026 6328 2980 --6 -6 4371 1918 5994 2729 -2 4 0 2 -1 7 3 0 20 0.000 0 0 4 0 0 5 - 5939 2675 4426 2675 4426 1974 5939 1974 5939 2675 -2 1 0 2 -1 7 3 0 20 0.000 0 0 -1 0 0 29 - 4530 2331 4576 2143 4718 2049 4763 2518 4811 2235 4811 2423 - 4858 2188 4904 2470 4951 2423 4998 2283 4998 2188 5044 2331 - 5093 2188 5186 2518 5233 2188 5233 2423 5280 2235 5326 2423 - 5326 2518 5373 2283 5420 2188 5467 2377 5561 2283 5608 2377 - 5655 2283 5701 2423 5748 2331 5795 2377 5842 2331 --6 -6 4615 2243 6237 3054 -2 4 0 2 -1 7 2 0 20 0.000 0 0 4 0 0 5 - 6183 2999 4669 2999 4669 2298 6183 2298 6183 2999 -2 1 0 2 -1 7 2 0 20 0.000 0 0 -1 0 0 29 - 4773 2655 4820 2468 4961 2373 5008 2842 5054 2560 5054 2748 - 5101 2512 5148 2794 5195 2748 5241 2608 5241 2512 5288 2655 - 5336 2512 5429 2842 5476 2512 5476 2748 5523 2560 5570 2748 - 5570 2842 5616 2608 5663 2512 5710 2702 5805 2608 5851 2702 - 5898 2608 5945 2748 5992 2655 6038 2702 6085 2655 --6 -6 4858 2567 6480 3378 -2 4 0 2 -1 7 1 0 20 0.000 0 0 4 0 0 5 - 6426 3324 4912 3324 4912 2623 6426 2623 6426 3324 -2 1 0 2 -1 7 1 0 20 0.000 0 0 -1 0 0 29 - 5016 2980 5063 2792 5204 2698 5251 3166 5298 2884 5298 3072 - 5345 2838 5391 3119 5438 3072 5485 2932 5485 2838 5531 2980 - 5579 2838 5673 3166 5720 2838 5720 3072 5766 2884 5813 3072 - 5813 3166 5860 2932 5907 2838 5953 3026 6048 2932 6095 3026 - 6142 2932 6188 3072 6235 2980 6282 3026 6328 2980 --6 -6 3600 375 5775 2475 -6 3885 1269 5507 2080 -2 4 0 2 -1 7 5 0 20 0.000 0 0 4 0 0 5 - 5452 2026 3939 2026 3939 1325 5452 1325 5452 2026 -2 1 0 2 -1 7 5 0 20 0.000 0 0 -1 0 0 29 - 4043 1682 4090 1493 4231 1400 4277 1869 4325 1587 4325 1774 - 4371 1539 4417 1821 4465 1774 4512 1634 4512 1539 4557 1682 - 4606 1539 4699 1869 4746 1539 4746 1774 4793 1587 4839 1774 - 4839 1869 4887 1634 4933 1539 4979 1728 5075 1634 5120 1728 - 5168 1634 5215 1774 5261 1682 5308 1728 5355 1682 --6 -6 4128 1593 5750 2405 -2 4 0 2 -1 7 4 0 20 0.000 0 0 4 0 0 5 - 5696 2350 4182 2350 4182 1649 5696 1649 5696 2350 -2 1 0 2 -1 7 4 0 20 0.000 0 0 -1 0 0 29 - 4286 2006 4333 1819 4474 1724 4520 2193 4568 1911 4568 2099 - 4615 1863 4660 2145 4708 2099 4755 1959 4755 1863 4801 2006 - 4849 1863 4942 2193 4990 1863 4990 2099 5036 1911 5082 2099 - 5082 2193 5130 1959 5177 1863 5222 2052 5318 1959 5365 2052 - 5411 1959 5458 2099 5505 2006 5552 2052 5598 2006 --6 -6 3640 944 5264 1756 -2 4 0 2 -1 7 6 0 20 0.000 0 0 4 0 0 5 - 5209 1702 3696 1702 3696 1000 5209 1000 5209 1702 -2 1 0 2 -1 7 6 0 20 0.000 0 0 -1 0 0 29 - 3800 1357 3847 1169 3988 1075 4034 1543 4081 1262 4081 1450 - 4128 1214 4174 1496 4222 1450 4268 1310 4268 1214 4314 1357 - 4363 1214 4455 1543 4503 1214 4503 1450 4550 1262 4596 1450 - 4596 1543 4643 1310 4690 1214 4736 1403 4831 1310 4877 1403 - 4925 1310 4972 1450 5017 1357 5065 1403 5112 1357 --6 -6 3885 1269 5507 2080 -2 4 0 2 -1 7 5 0 20 0.000 0 0 4 0 0 5 - 5452 2026 3939 2026 3939 1325 5452 1325 5452 2026 -2 1 0 2 -1 7 5 0 20 0.000 0 0 -1 0 0 29 - 4043 1682 4090 1493 4231 1400 4277 1869 4325 1587 4325 1774 - 4371 1539 4417 1821 4465 1774 4512 1634 4512 1539 4557 1682 - 4606 1539 4699 1869 4746 1539 4746 1774 4793 1587 4839 1774 - 4839 1869 4887 1634 4933 1539 4979 1728 5075 1634 5120 1728 - 5168 1634 5215 1774 5261 1682 5308 1728 5355 1682 --6 -6 4128 1593 5750 2405 -2 4 0 2 -1 7 4 0 20 0.000 0 0 4 0 0 5 - 5696 2350 4182 2350 4182 1649 5696 1649 5696 2350 -2 1 0 2 -1 7 4 0 20 0.000 0 0 -1 0 0 29 - 4286 2006 4333 1819 4474 1724 4520 2193 4568 1911 4568 2099 - 4615 1863 4660 2145 4708 2099 4755 1959 4755 1863 4801 2006 - 4849 1863 4942 2193 4990 1863 4990 2099 5036 1911 5082 2099 - 5082 2193 5130 1959 5177 1863 5222 2052 5318 1959 5365 2052 - 5411 1959 5458 2099 5505 2006 5552 2052 5598 2006 --6 -6 3640 944 5264 1756 -2 4 0 2 -1 7 6 0 20 0.000 0 0 4 0 0 5 - 5209 1702 3696 1702 3696 1000 5209 1000 5209 1702 -2 1 0 2 -1 7 6 0 20 0.000 0 0 -1 0 0 29 - 3800 1357 3847 1169 3988 1075 4034 1543 4081 1262 4081 1450 - 4128 1214 4174 1496 4222 1450 4268 1310 4268 1214 4314 1357 - 4363 1214 4455 1543 4503 1214 4503 1450 4550 1262 4596 1450 - 4596 1543 4643 1310 4690 1214 4736 1403 4831 1310 4877 1403 - 4925 1310 4972 1450 5017 1357 5065 1403 5112 1357 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3640 771 3640 422 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3640 422 5292 422 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 6336 422 7814 422 7814 771 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5425 1269 data/adapt1.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5913 1918 data/adapt3.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6156 2243 data/adapt4.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6399 2567 data/adapt5.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6561 2892 data/adapt6.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5669 1593 data/adapt2.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5425 1269 data/adapt1.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5913 1918 data/adapt3.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6156 2243 data/adapt4.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6399 2567 data/adapt5.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 6561 2892 data/adapt6.mfc\001 -4 0 -1 0 0 0 17 0.0000 0 240 1770 5669 1593 data/adapt2.mfc\001 --6 -6 6825 7200 8302 7654 -2 4 0 2 -1 7 6 0 20 0.000 0 0 5 0 0 5 - 8245 7597 8245 7257 6882 7257 6882 7597 8245 7597 -4 1 -1 6 0 0 13 0.0000 4 135 855 7563 7484 transform 1\001 --6 -6 7166 7484 8643 7938 -2 4 0 2 -1 7 5 0 20 0.000 0 0 5 0 0 5 - 8586 7882 8586 7541 7222 7541 7222 7882 8586 7882 -4 1 -1 5 0 0 13 0.0000 4 135 855 7904 7768 transform 2\001 --6 -6 7507 7768 8984 8222 -2 4 0 2 -1 7 4 0 20 0.000 0 0 5 0 0 5 - 8927 8166 8927 7825 7563 7825 7563 8166 8927 8166 -4 1 -1 4 0 0 13 0.0000 4 135 855 8245 8053 transform 3\001 --6 -6 8529 8621 10006 9075 -2 4 0 2 -1 7 3 0 20 0.000 0 0 5 0 0 5 - 9949 9018 9949 8678 8586 8678 8586 9018 9949 9018 -4 1 -1 3 0 0 13 0.0000 4 135 855 9268 8904 transform n\001 --6 -6 75 3750 6675 7725 -6 75 4350 3525 7725 -6 75 4350 3525 6600 -6 216 4492 1231 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 1158 5146 289 5146 289 4565 1158 4565 1158 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 434 4855 f\001 --6 -6 579 4711 1594 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 1522 5364 652 5364 652 4783 1522 4783 1522 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 796 5073 s\001 --6 -6 943 4929 1957 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 1884 5581 1013 5581 1013 5001 1884 5001 1884 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 1158 5291 ch\001 --6 -6 1304 5146 2319 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 2248 5798 1375 5798 1375 5218 2248 5218 2248 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 1522 5508 t\001 --6 -6 1666 5364 2681 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 2609 6015 1739 6015 1739 5435 2609 5435 2609 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 1884 5725 aa\001 --6 -6 2030 5581 3044 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 2972 6233 2101 6233 2101 5652 2972 5652 2972 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 2248 5943 eh\001 --6 -6 2392 5798 3408 6524 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 3334 6451 2465 6451 2465 5871 3334 5871 3334 6451 -4 0 -1 1 0 0 17 0.0000 0 180 195 2609 6161 ih\001 --6 -6 216 4492 1231 5218 -2 4 0 2 -1 7 7 0 20 0.000 0 0 7 0 0 5 - 1158 5146 289 5146 289 4565 1158 4565 1158 5146 -4 0 -1 7 0 0 17 0.0000 0 180 75 434 4855 f\001 --6 -6 579 4711 1594 5435 -2 4 0 2 -1 7 6 0 20 0.000 0 0 7 0 0 5 - 1522 5364 652 5364 652 4783 1522 4783 1522 5364 -4 0 -1 6 0 0 17 0.0000 0 135 105 796 5073 s\001 --6 -6 943 4929 1957 5652 -2 4 0 2 -1 7 5 0 20 0.000 0 0 7 0 0 5 - 1884 5581 1013 5581 1013 5001 1884 5001 1884 5581 -4 0 -1 5 0 0 17 0.0000 0 180 270 1158 5291 ch\001 --6 -6 1304 5146 2319 5871 -2 4 0 2 -1 7 4 0 20 0.000 0 0 7 0 0 5 - 2248 5798 1375 5798 1375 5218 2248 5218 2248 5798 -4 0 -1 4 0 0 17 0.0000 0 165 75 1522 5508 t\001 --6 -6 1666 5364 2681 6089 -2 4 0 2 -1 7 3 0 20 0.000 0 0 7 0 0 5 - 2609 6015 1739 6015 1739 5435 2609 5435 2609 6015 -4 0 -1 3 0 0 17 0.0000 0 135 270 1884 5725 aa\001 --6 -6 2030 5581 3044 6307 -2 4 0 2 -1 7 2 0 20 0.000 0 0 7 0 0 5 - 2972 6233 2101 6233 2101 5652 2972 5652 2972 6233 -4 0 -1 2 0 0 17 0.0000 0 180 270 2248 5943 eh\001 --6 -2 2 0 0 -1 7 8 0 15 0.000 0 0 -1 0 0 5 - 105 4422 3495 4422 3495 6595 105 6595 105 4422 -2 4 0 2 -1 7 1 0 20 0.000 0 0 7 0 0 5 - 3334 6451 2465 6451 2465 5871 3334 5871 3334 6451 -2 2 0 0 -1 7 8 0 17 0.000 0 0 -1 0 0 5 - 105 4422 3495 4422 3495 6595 105 6595 105 4422 -4 2 -1 0 0 0 17 0.0000 0 180 630 3276 4855 MMF\001 -4 0 -1 1 0 0 17 0.0000 0 180 195 2609 6161 ih\001 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 105 7029 105 7378 1234 7378 -2 4 0 2 -1 7 0 0 -1 0.000 0 0 8 0 0 5 - 2277 7638 1234 7638 1234 7116 2277 7116 2277 7638 -4 1 -1 0 0 0 18 0.0000 4 195 930 1756 7465 hmmlist\001 --6 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 2277 7378 3495 7378 3495 7029 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 3600 5175 4275 5175 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5925 5175 6600 5175 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5100 3825 5100 4500 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 5775 5925 6375 6825 -2 2 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 5768 5700 4459 5700 4459 4718 5768 4718 5768 5700 -4 1 -1 8 0 0 17 0.0000 0 180 345 6198 5945 OR\001 -4 1 -1 0 0 0 20 0.0000 0 270 1200 5114 5312 HEAdapt\001 --6 -1 3 0 2 -1 7 3 0 0 0.000 1 0.0000 8643 8412 37 37 8643 8412 8680 8450 -2 4 0 2 -1 7 5 0 20 0.000 0 0 5 0 0 5 - 2372 2148 1388 2148 1388 1164 2372 1164 2372 2148 -2 4 0 2 -1 7 2 0 20 0.000 0 0 5 0 0 5 - 3108 2884 2126 2884 2126 1901 3108 1901 3108 2884 -2 4 0 2 -1 7 4 0 20 0.000 0 0 5 0 0 5 - 2618 2393 1636 2393 1636 1412 2618 1412 2618 2393 -2 2 0 0 -1 7 7 0 17 0.000 0 0 -1 0 0 5 - 105 771 3495 771 3495 3640 105 3640 105 771 -2 4 0 2 -1 7 1 0 20 0.000 0 0 5 0 0 5 - 3355 3131 2372 3131 2372 2148 3355 2148 3355 3131 -2 2 1 0 -1 7 7 0 17 2.000 0 0 -1 0 0 5 - 6675 7125 10125 7125 10125 9150 6675 9150 6675 7125 -4 0 -1 4 0 0 12 0.0000 0 135 765 1795 1607 000 023 b\001 --6 -2 4 0 2 -1 7 1 0 20 0.000 0 0 5 0 0 5 - 3355 3131 2372 3131 2372 2148 3355 2148 3355 3131 -4 0 -1 6 0 0 12 0.0000 0 180 765 1304 1116 000 103 p\001 --6 -2 4 0 2 -1 7 3 0 20 0.000 0 0 5 0 0 5 - 2863 2639 1880 2639 1880 1656 2863 1656 2863 2639 -4 2 -1 0 0 0 17 0.0000 0 180 555 3203 3465 MLF\001 --6 -6 675 900 4725 3375 -6 1725 1875 3300 2850 -4 0 -1 4 0 0 12 0.0000 0 135 735 1795 2075 092 134 t\001 -4 0 -1 1 0 0 12 0.0000 0 135 735 2530 2811 092 134 t\001 -4 0 -1 1 0 0 12 0.0000 0 135 765 2530 2345 000 023 b\001 -4 0 -1 3 0 0 13 0.0000 0 135 810 2038 2086 024 091 ih\001 -4 0 -1 3 0 0 13 0.0000 0 135 810 2038 2553 135 182 ih\001 --6 -2 1 0 0 -1 7 0 0 15 0.000 0 0 -1 0 0 2 - 3408 2683 4015 2683 -2 4 0 2 -1 7 6 0 20 0.000 0 0 5 0 0 5 - 2126 1901 1144 1901 1144 921 2126 921 2126 1901 -2 4 0 2 -1 7 3 0 20 0.000 0 0 5 0 0 5 - 2863 2639 1880 2639 1880 1656 2863 1656 2863 2639 -2 1 0 0 -1 7 0 0 15 0.000 0 0 -1 0 0 2 - 3408 2683 4015 2683 -2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 1 0 4 - 1 1 2.00 120.00 240.00 - 3450 2625 3675 2625 3675 3150 4650 3150 -2 4 0 2 -1 7 6 0 20 0.000 0 0 5 0 0 5 - 2126 1901 1144 1901 1144 921 2126 921 2126 1901 -4 2 -1 0 0 0 13 0.0000 0 180 915 1611 2590 */adapt3.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1855 2836 */adapt4.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2101 3082 */adapt5.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2346 3326 */adapt6.lab\001 -4 0 -1 6 0 0 12 0.0000 0 135 810 1304 1349 103 114 ih\001 -4 0 -1 6 0 0 12 0.0000 0 135 735 1304 1583 114 134 t\001 -4 0 -1 6 0 0 12 0.0000 0 135 810 1304 1816 135 182 ih\001 -4 0 -1 5 0 0 12 0.0000 0 135 765 1550 1363 000 023 b\001 -4 0 -1 5 0 0 12 0.0000 0 135 810 1550 1595 024 091 ih\001 -4 0 -1 5 0 0 12 0.0000 0 135 735 1550 1830 092 134 t\001 -4 0 -1 5 0 0 12 0.0000 0 135 810 1550 2063 135 182 ih\001 -4 0 -1 4 0 0 12 0.0000 0 135 810 1795 1840 024 091 ih\001 -4 0 -1 4 0 0 12 0.0000 0 135 810 1795 2307 135 182 ih\001 -4 0 -1 3 0 0 12 0.0000 0 135 765 2038 1855 000 023 s\001 -4 0 -1 3 0 0 12 0.0000 0 135 810 2038 2086 024 091 ih\001 -4 0 -1 3 0 0 12 0.0000 0 135 735 2038 2320 092 134 t\001 -4 0 -1 3 0 0 12 0.0000 0 135 810 2038 2553 135 182 ih\001 -4 0 -1 2 0 0 12 0.0000 0 135 765 2286 2099 000 046 s\001 -4 0 -1 2 0 0 12 0.0000 0 135 810 2286 2332 046 091 ih\001 -4 0 -1 2 0 0 12 0.0000 0 135 735 2286 2564 092 134 t\001 -4 0 -1 2 0 0 12 0.0000 0 135 810 2286 2799 135 182 ih\001 -4 0 -1 1 0 0 12 0.0000 0 135 810 2530 2577 024 091 ih\001 -4 0 -1 1 0 0 12 0.0000 0 135 810 2530 3045 135 182 ih\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1611 2590 */adapt3.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1855 2836 */adapt4.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2101 3082 */adapt5.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 2346 3326 */adapt6.lab\001 -4 0 -1 6 0 0 13 0.0000 0 135 810 1304 1349 103 114 ih\001 -4 0 -1 6 0 0 13 0.0000 0 135 735 1304 1583 114 134 t\001 -4 0 -1 6 0 0 13 0.0000 0 135 810 1304 1816 135 182 ih\001 -4 0 -1 3 0 0 13 0.0000 0 135 735 2038 2320 092 134 t\001 --6 --6 -6 8325 7275 9900 8625 -1 3 0 2 -1 7 3 0 0 0.000 1 0.0000 8416 8279 37 37 8416 8279 8453 8318 -1 3 0 2 -1 7 3 0 0 0.000 1 0.0000 8889 8507 37 37 8889 8507 8927 8545 -4 1 -1 3 0 0 17 0.0000 4 180 555 9609 7484 TMF\001 --6 --6 --6 -4 2 -1 0 0 0 13 0.0000 0 180 915 1119 2099 */adapt1.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1365 2345 */adapt2.lab\001 --6 -4 2 -1 0 0 0 13 0.0000 0 180 915 1119 2099 */adapt1.lab\001 -4 2 -1 0 0 0 13 0.0000 0 180 915 1365 2345 */adapt2.lab\001 --6 diff --git a/HTKBook/HTKXFigs/softarch-big.fig b/HTKBook/HTKXFigs/softarch-big.fig deleted file mode 100644 index 95eaae0..0000000 --- a/HTKBook/HTKXFigs/softarch-big.fig +++ /dev/null @@ -1,219 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 6000 5250 7200 5325 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 5250 6000 5250 --6 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 1200 975 9750 8325 -6 6000 6000 7200 6075 -6 6000 6000 7200 6075 -6 6000 6000 7200 6075 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 6000 6000 6000 --6 --6 --6 -6 1200 975 9750 7725 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 3000 5625 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3600 3000 4425 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 3000 3225 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 2400 1800 2400 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3600 1800 3600 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4800 1800 4800 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6000 1800 6000 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7200 1800 7200 2700 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 4500 2400 4500 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3600 6000 3600 6750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 6000 4800 6750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4800 3000 4800 3750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7650 3825 8925 3825 8925 1800 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5400 6750 5400 7650 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4125 6750 4125 7650 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7650 5325 8550 5325 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7650 4575 8550 4575 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 3000 7200 3000 7200 6750 1200 6750 1200 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 5250 2400 5250 2400 6000 1200 6000 1200 5250 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 6000 2400 6000 2400 6750 1200 6750 1200 6000 -4 0 -1 0 0 0 14 0.0000 4 195 645 2175 1350 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 2250 1575 Data\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 3375 1575 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4575 1575 Models\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 4500 1350 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 5700 1575 Network\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 5625 1350 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 5700 1125 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 6825 1575 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 915 8475 1575 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8625 1350 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 2700 3450 HLabel\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 3975 3450 HLM\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5175 3450 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6300 3450 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 1500 4950 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 1500 5700 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 1500 6450 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 2775 6450 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 3975 6450 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 5100 6450 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6300 6450 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6300 5700 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6300 4950 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 1500 4125 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 1500 3900 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 1500 3675 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 1500 3450 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 8850 4575 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9075 4800 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 8850 5325 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9075 5550 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6300 4050 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6300 4350 HUtil\001 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 3000 2025 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 3000 2400 3825 -4 0 -1 0 0 0 14 0.0000 4 150 870 3825 4950 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 5025 8025 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 3825 8250 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 3900 8025 Model\001 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2025 2475 8025 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 5250 1200 5250 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1200 6000 2400 6000 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3600 3000 3600 3750 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 3750 2400 6750 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 2400 6000 6000 6000 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3750 6000 6750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8025 3225 8025 6225 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 6750 8025 6225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3000 6000 3975 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6075 3750 2400 3750 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 6000 8025 5475 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7200 4500 8025 3975 8025 4725 7200 5250 7200 4500 7200 4500 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 3000 8025 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3000 6825 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 5250 8025 4725 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 4500 8025 3975 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7200 3750 8025 3225 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 3750 7200 3750 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 4500 7200 4500 7200 5250 6000 5250 6000 4500 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6000 4500 7200 4500 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8025 2475 8025 3300 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 6000 2400 6000 2400 6750 1200 6750 1200 6000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 5250 2400 5250 2400 6000 1200 6000 1200 5250 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 4500 7200 4500 7200 5250 6000 5250 6000 4500 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7200 4500 8025 3975 8025 4725 7200 5250 7200 4500 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 3000 2400 3000 2400 4500 1200 4500 1200 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 4500 2400 4500 2400 5250 1200 5250 1200 4500 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 1200 3000 2025 2475 3225 2475 2400 3000 1200 3000 1200 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 2400 3000 3600 3000 3600 3750 2400 3750 2400 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 2400 3000 3225 2475 4425 2475 3600 3000 2400 3000 2400 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 3750 7200 3750 7200 4500 6000 4500 6000 3750 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7200 3750 8025 3225 8025 3975 7200 4500 7200 3750 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3600 3000 4800 3000 4800 3750 3600 3750 3600 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 4800 3000 6000 3000 6000 3750 4800 3750 4800 3000 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 3000 7200 3000 7200 3750 6000 3750 6000 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3600 3000 4425 2475 5625 2475 4800 3000 3600 3000 3600 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 4800 3000 5625 2475 6825 2475 6000 3000 4800 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 4800 3000 6000 3000 6825 2475 5625 2475 4800 3000 4800 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 6000 3000 6825 2475 8025 2475 7200 3000 6000 3000 6000 3000 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7200 3000 8025 2475 8025 3225 7200 3750 7200 3000 7200 3000 diff --git a/HTKBook/HTKXFigs/softarch.fig b/HTKBook/HTKXFigs/softarch.fig deleted file mode 100644 index 904198e..0000000 --- a/HTKBook/HTKXFigs/softarch.fig +++ /dev/null @@ -1,183 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 6789 4350 7737 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 6789 4350 --6 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -6 6789 4942 7737 5001 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 6789 4942 --6 --6 --6 -6 3600 1050 4275 1500 -4 0 -1 0 0 0 14 0.0000 4 195 645 3620 1271 Speech\001 -4 0 -1 0 0 0 14 0.0000 4 150 420 3679 1449 Data\001 --6 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 3947 2574 3947 3758 3000 3758 3000 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 3758 3947 3758 3947 4350 3000 4350 3000 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3000 2574 3651 2159 4599 2159 3947 2574 3000 2574 3000 2574 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3166 8388 2751 8388 3343 7737 3758 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3166 7737 3166 7737 3758 6789 3758 6789 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2159 8388 2810 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 7737 3166 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6789 3758 7737 3758 7737 4350 6789 4350 6789 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 2574 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 7441 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4350 8388 3935 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3758 8388 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 3166 8388 2751 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 5534 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 2574 6789 3343 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 7737 4942 8388 4527 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 7737 3758 8388 3343 8388 3935 7737 4350 7737 3758 7737 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4942 6789 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6789 3166 6789 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 8388 2751 8388 5119 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 3166 3947 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3651 2159 8388 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 4350 3000 4350 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 4942 3947 4942 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 2574 3651 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3947 2574 3947 3225 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 6493 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 2574 5546 2159 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 3947 1626 3947 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 4895 1626 4895 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5842 1626 5842 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6789 1626 6789 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 7737 1626 7737 2337 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 3000 3758 3947 3758 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 4895 4942 4895 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 4942 5842 5534 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 5842 2574 5842 3166 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 3 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3225 9099 3225 9099 1626 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 6316 5534 6316 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 5309 5534 5309 6244 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 4409 8803 4409 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 1 2 - 1 1 2.00 120.00 240.00 - 1 1 2.00 120.00 240.00 - 8092 3817 8803 3817 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4350 3947 4350 3947 4942 3000 4942 3000 4350 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 4942 3947 4942 3947 5534 3000 5534 3000 4942 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3000 2574 7737 2574 7737 5534 3000 5534 3000 2574 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 6849 3166 3947 3166 -2 3 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 6 - 3947 2574 4599 2159 5546 2159 4895 2574 3947 2574 3947 2574 -2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3947 2574 4895 2574 4895 3166 3947 3166 3947 2574 -4 0 -1 0 0 0 14 0.0000 4 150 915 8743 1449 Definitions\001 -4 0 -1 0 0 0 14 0.0000 4 150 540 8862 1271 HMM\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 9039 3817 Terminal\001 -4 0 -1 0 0 0 14 0.0000 4 195 855 9039 4409 Graphical\001 -4 0 -1 0 0 0 14 0.0000 4 195 960 6020 6540 Adaptation\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 5132 6540 Model\001 -4 0 -1 0 0 0 14 0.0000 4 195 720 5072 6718 Training\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 6138 2929 HNet\001 -4 0 -1 0 0 0 14 0.0000 4 195 870 5455 1271 Language\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 5514 1449 Models\001 -4 0 -1 0 0 0 14 0.0000 4 150 900 6418 1271 Constraint\001 -4 0 -1 0 0 0 14 0.0000 4 150 780 6478 1449 Network\001 -4 0 -1 0 0 0 14 0.0000 4 180 765 6478 1093 Lattices/\001 -4 0 -1 0 0 0 14 0.0000 4 195 900 7516 1449 Dictionary\001 -4 0 -1 0 0 0 14 0.0000 4 150 705 6951 3402 HModel\001 -4 0 -1 0 0 0 14 0.0000 4 150 510 6951 2929 HDict\001 -4 0 -1 0 0 0 14 0.0000 4 150 450 6951 3639 HUtil\001 -4 0 -1 0 0 0 14 0.0000 4 150 570 6951 4113 HShell\001 -4 0 -1 0 0 0 14 0.0000 4 150 555 6951 4705 HGraf\001 -4 0 -1 0 0 0 14 0.0000 4 150 495 6951 5297 HRec\001 -4 0 -1 0 0 0 14 0.0000 4 195 690 6004 5297 HAdapt\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 5297 HMath\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 4705 HMem\001 -4 0 -1 0 0 0 14 0.0000 4 195 540 3162 4113 HSigP\001 -4 0 -1 0 0 0 14 0.0000 4 195 435 3162 3537 HVQ\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 3162 3359 HParm\001 -4 0 -1 0 0 0 14 0.0000 4 150 660 3162 3181 HWave\001 -4 0 -1 0 0 0 14 0.0000 4 150 675 3162 3004 HAudio\001 -4 0 -1 0 0 0 14 0.0000 4 150 615 4093 5297 HTrain\001 -4 0 -1 0 0 0 14 0.0000 4 150 405 5116 5297 HFB\001 -4 0 -1 0 0 0 14 0.0000 4 150 870 4997 4113 HTK Tool\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 4586 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 180 285 9292 3994 I/O\001 -4 0 -1 0 0 0 14 0.0000 4 150 480 5116 2929 HLM\001 -4 0 -1 0 0 0 14 0.0000 4 150 585 4642 1449 Labels\001 -4 0 -1 0 0 0 14 0.0000 4 150 645 4109 2929 HLabel\001 diff --git a/HTKBook/HTKXFigs/step10.fig b/HTKBook/HTKXFigs/step10.fig deleted file mode 100644 index df054fd..0000000 --- a/HTKBook/HTKXFigs/step10.fig +++ /dev/null @@ -1,63 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 2925 2850 1125 2850 1125 2175 2925 2175 2925 2850 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5775 2850 3975 2850 3975 2175 5775 2175 5775 2850 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1350 3450 2700 3450 2700 4275 1350 4275 1350 3450 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 2925 6600 1200 6600 1200 5550 2925 5550 2925 6600 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1200 7275 2925 7275 2925 7950 1200 7950 1200 7275 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 9 0 0 5 - 2925 9600 1200 9600 1200 8550 2925 8550 2925 9600 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5775 5175 3975 5175 3975 4500 5775 4500 5775 5175 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5775 6225 3975 6225 3975 5550 5775 5550 5775 6225 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 4875 6225 4875 7575 2925 7575 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 6600 2025 7275 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 4275 2025 5550 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 7950 2025 8550 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 4875 2850 4875 3675 2700 3675 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 120.00 240.00 - 2025 2850 2025 3450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 2475 4275 2475 4725 4125 5550 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 120.00 240.00 - 4875 4500 4875 4050 2700 4050 -4 0 -1 0 0 0 20 0.0000 4 210 1380 1425 5908 Tied-State\001 -4 0 -1 0 0 0 20 0.0000 4 270 1230 1425 6223 Triphones\001 -4 0 -1 0 0 0 20 0.0000 4 210 450 1425 7725 HR\001 -4 0 -1 0 0 0 16 0.0000 4 225 900 1800 7725 EST (x2)\001 -4 0 -1 0 0 0 20 0.0000 4 210 1380 1425 8908 Tied-State\001 -4 0 -1 0 0 0 20 0.0000 4 270 1230 1425 9223 Triphones\001 -4 0 -1 0 0 0 20 0.0000 4 270 1350 4275 4800 Edit Script\001 -4 0 -1 0 0 0 20 0.0000 4 210 660 1575 3975 HHE\001 -4 0 -1 0 0 0 16 0.0000 4 165 165 2175 3975 D\001 -4 0 -1 0 0 0 20 0.0000 4 270 1230 1425 2475 Triphones\001 -4 0 -1 0 0 0 20 0.0000 4 210 1260 4275 2475 State Occs\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 1575 9492 (hmm15)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 1575 6492 (hmm13)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 1575 2775 (hmm12)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1500 4200 6150 (tiedlist)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1500 4200 5100 (tree.hed)\001 -4 0 -1 0 0 5 16 0.0000 0 210 1050 4350 2775 (stats)\001 -4 0 -1 0 0 0 20 0.0000 4 210 1410 4200 5850 HMM List\001 diff --git a/HTKBook/HTKXFigs/sysoview.fig b/HTKBook/HTKXFigs/sysoview.fig deleted file mode 100644 index 261df06..0000000 --- a/HTKBook/HTKXFigs/sysoview.fig +++ /dev/null @@ -1,128 +0,0 @@ -#FIG 3.1 -Portrait -Center -Inches -1200 2 -6 900 6975 1950 7200 -4 0 -1 0 0 0 20 0.0000 4 210 420 900 7200 HP\001 -4 0 -1 0 0 0 16 0.0000 4 165 615 1275 7200 ARSE\001 --6 -6 3600 5475 4500 5700 -4 0 -1 0 0 0 20 0.0000 4 210 480 3600 5700 HV\001 -4 0 -1 0 0 0 16 0.0000 4 165 390 4050 5700 ITE\001 --6 -6 2025 3225 6300 3525 -4 0 -1 0 0 0 20 0.0000 4 210 450 2025 3450 HC\001 -4 0 -1 0 0 0 16 0.0000 4 165 525 2475 3450 OMP\001 -4 0 -1 0 0 0 20 0.0000 4 270 630 3000 3450 V, H\001 -4 0 -1 0 0 0 16 0.0000 4 165 510 3600 3450 INIT\001 -4 0 -1 0 0 0 20 0.0000 4 270 600 4125 3450 , HR\001 -4 0 -1 0 0 0 16 0.0000 4 165 435 4650 3450 EST\001 -4 0 -1 0 0 0 20 0.0000 4 270 780 5100 3450 , HER\001 -4 0 -1 0 0 0 16 0.0000 4 165 435 5850 3450 EST\001 --6 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 830 6600 1950 6600 1950 7275 830 7275 830 6600 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 2100 6225 600 6225 600 5850 2100 5850 2100 6225 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 2100 5400 600 5400 600 5025 2100 5025 2100 5400 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 750 4275 2025 4275 2025 4650 750 4650 750 4275 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1950 3075 6375 3075 6375 3900 1950 3900 1950 3075 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 4650 4650 3525 4650 3525 4275 4650 4275 4650 4650 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3300 5250 4800 5250 4800 5925 3300 5925 3300 5250 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5025 6825 3150 6825 3150 6450 5025 6450 5025 6825 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 3375 7200 4800 7200 4800 7575 3375 7575 3375 7200 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 5625 2550 4425 2550 4425 2175 5625 2175 5625 2550 -2 4 0 3 -1 7 0 0 -1 0.000 0 0 7 0 0 5 - 4200 2550 2325 2550 2325 2175 4200 2175 4200 2550 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 1275 975 2550 975 2550 1800 1275 1800 1275 975 -2 2 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 0 5 - 6000 900 7275 900 7275 2175 6000 2175 6000 900 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 825 7800 825 7800 2400 7500 2400 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 2550 7800 2550 7800 4125 7500 4125 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 4275 7800 4275 7800 6675 7500 6675 -2 1 1 3 -1 7 0 0 -1 4.000 0 0 -1 0 0 4 - 7500 6825 7800 6825 7800 7725 7500 7725 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 60.00 120.00 - 6000 1575 5025 1575 5025 2175 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 5025 2550 4650 3075 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 3 - 1 1 2.00 60.00 120.00 - 2550 1350 3300 1350 3300 2175 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 3300 2550 3675 3075 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 1350 4650 1350 5025 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 1 2 - 1 1 2.00 60.00 120.00 - 1350 6225 1350 6600 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 2100 5250 3300 5400 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 2100 6075 3300 5775 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 4050 3900 4050 4275 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 4050 4650 4050 5250 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 1 1 2.00 60.00 120.00 - 4050 5925 4050 6450 -2 1 0 3 -1 7 0 0 -1 0.000 0 0 -1 0 1 2 - 1 1 2.00 60.00 120.00 - 4050 6825 4050 7200 -4 0 -1 0 0 0 20 0.0000 4 210 570 7875 1500 Data\001 -4 0 -1 0 0 0 20 0.0000 4 270 570 7875 1770 Prep\001 -4 0 -1 0 0 0 20 0.0000 4 270 1050 7875 3375 Training\001 -4 0 -1 0 0 0 20 0.0000 4 270 930 7875 5550 Testing\001 -4 0 -1 0 0 0 20 0.0000 4 270 1140 7875 7350 Analysis\001 -4 0 -1 0 0 0 20 0.0000 4 210 960 3675 4575 HMMs\001 -4 0 -1 0 0 0 20 0.0000 4 210 1260 750 6150 Networks\001 -4 0 -1 0 0 0 20 0.0000 4 270 1350 675 5325 Dictionary\001 -4 0 -1 0 0 0 20 0.0000 4 210 600 1350 1275 HLE\001 -4 0 -1 0 0 0 20 0.0000 4 210 750 900 4575 HDM\001 -4 0 -1 0 0 0 16 0.0000 4 165 360 1575 4575 AN\001 -4 0 -1 0 0 0 20 0.0000 4 270 450 6075 2100 HQ\001 -4 0 -1 0 0 0 20 0.0000 4 210 570 6075 1200 HSL\001 -4 0 -1 0 0 0 16 0.0000 4 165 330 6600 1200 AB\001 -4 0 -1 0 0 0 20 0.0000 4 210 450 6075 1500 HC\001 -4 0 -1 0 0 0 20 0.0000 4 210 420 6075 1800 HL\001 -4 0 -1 0 0 0 20 0.0000 4 270 810 4650 2475 Speech\001 -4 0 -1 0 0 0 16 0.0000 4 165 165 1950 1275 D\001 -4 0 -1 0 0 0 20 0.0000 4 210 570 1350 1650 HLS\001 -4 0 -1 0 0 0 16 0.0000 4 165 675 6525 2100 UANT\001 -4 0 -1 0 0 0 16 0.0000 4 165 375 6450 1800 IST\001 -4 0 -1 0 0 0 16 0.0000 4 165 450 6525 1500 OPY\001 -4 0 -1 0 0 0 16 0.0000 4 165 615 1875 1650 TATS\001 -4 0 -1 0 0 0 20 0.0000 4 210 450 3450 7500 HR\001 -4 0 -1 0 0 0 20 0.0000 4 210 420 900 6900 HB\001 -4 0 -1 0 0 0 16 0.0000 4 165 570 1275 6900 UILD\001 -4 0 -1 0 0 0 16 0.0000 4 165 885 3825 7500 ESULTS\001 -4 0 -1 0 0 0 20 0.0000 4 210 390 2325 3825 HS\001 -4 0 -1 0 0 0 16 0.0000 4 165 870 2700 3825 MOOTH\001 -4 0 -1 0 0 0 20 0.0000 4 270 810 3600 3825 , HHE\001 -4 0 -1 0 0 0 16 0.0000 4 165 165 4350 3825 D\001 -4 0 -1 0 0 0 16 0.0000 4 165 630 5325 3825 DAPT\001 -4 0 -1 0 0 0 20 0.0000 4 270 810 4575 3825 , HEA\001 -4 0 -1 0 0 0 20 0.0000 4 270 1800 3225 6750 Transcriptions\001 -4 0 -1 0 0 0 20 0.0000 4 270 1800 2400 2475 Transcriptions\001 diff --git a/HTKBook/HTKXFigs/vtlnpiecewise.fig b/HTKBook/HTKXFigs/vtlnpiecewise.fig deleted file mode 100644 index f73e163..0000000 --- a/HTKBook/HTKXFigs/vtlnpiecewise.fig +++ /dev/null @@ -1,63 +0,0 @@ -#FIG 3.1 -Landscape -Center -Metric -1200 2 -6 2395 2290 2635 2455 -6 2440 2350 2635 2455 -4 0 -1 0 0 0 8 0.0000 4 105 195 2440 2440 orig\001 --6 -4 0 -1 0 0 0 10 0.0000 4 105 60 2395 2395 f\001 --6 -6 825 2345 905 2465 -6 825 2345 905 2465 -4 0 -1 0 0 0 8 0.0000 4 75 45 825 2420 f\001 -4 0 -1 0 0 0 6 0.0000 4 60 60 845 2465 L\001 --6 --6 -6 1835 2355 1925 2470 -4 0 -1 0 0 0 8 0.0000 4 75 45 1835 2430 f\001 -4 0 -1 0 0 0 6 0.0000 4 60 60 1865 2470 U\001 --6 -6 675 1255 905 1355 -4 0 -1 0 0 32 8 0.0000 4 60 90 675 1315 a\001 -4 0 -1 0 0 0 6 0.0000 4 60 150 755 1355 min\001 --6 -6 1300 1805 1555 1900 -4 0 -1 0 0 32 8 0.0000 4 60 90 1300 1865 a\001 -4 0 -1 0 0 0 6 0.0000 4 45 165 1390 1900 max\001 --6 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 1 2 - 0 0 1.00 60.00 120.00 - 450 225 450 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 1 0 2 - 0 0 1.00 60.00 120.00 - 225 2250 2475 2250 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 225 450 2475 450 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 2250 225 2250 2475 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 1575 675 2250 450 -2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 2 - 450 2250 2250 450 -2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 2 - 1575 675 2025 1125 -2 1 2 1 -1 7 0 0 -1 3.000 0 0 -1 0 0 2 - 900 2025 675 1800 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 450 2250 675 1800 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 450 2250 900 2025 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 900 2025 2025 1125 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 - 2025 1125 2250 450 2250 495 -2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 - 675 1800 1575 675 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 785 1925 785 2405 -2 1 1 1 -1 7 0 0 -1 4.000 0 0 -1 0 0 2 - 1800 900 1800 2380 -4 0 -1 0 0 0 10 0.0000 4 105 60 515 285 f\001 -4 0 -1 0 0 0 8 0.0000 4 75 315 560 345 scaled\001 diff --git a/HTKBook/Makefile b/HTKBook/Makefile deleted file mode 100644 index aaa7493..0000000 --- a/HTKBook/Makefile +++ /dev/null @@ -1,86 +0,0 @@ -all: htkbook.ps html htkbook.pdf - -maintex = htkbook.tex HTK.tex errors.tex hlmtutorial.tex labels.tex \ - speechio.tex adapt.tex exampsys.tex models.tex \ - train.tex config.tex fundaments.tex netdict.tex decode.tex \ - hlmfiles.tex htkoview.tex openviron.tex discmods.tex \ - hlmfund.tex htkslf.tex refine.tex - -reftex = HTKRef/Cluster.tex HTKRef/HInit.tex HTKRef/HResults.tex \ - HTKRef/LGCopy.tex HTKRef/HBuild.tex HTKRef/HLEd.tex \ - HTKRef/HSGen.tex HTKRef/LGList.tex HTKRef/HCompV.tex \ - HTKRef/HLMCopy.tex HTKRef/HSLab.tex HTKRef/LGPrep.tex \ - HTKRef/HCopy.tex HTKRef/HLStats.tex HTKRef/HSmooth.tex \ - HTKRef/LMerge.tex HTKRef/HDMan.tex HTKRef/HList.tex \ - HTKRef/HVite.tex HTKRef/LPlex.tex \ - HTKRef/HParse.tex HTKRef/LAdapt.tex HTKRef/LSubset.tex \ - HTKRef/HERest.tex HTKRef/HQuant.tex HTKRef/LBuild.tex \ - HTKRef/tools.tex HTKRef/HHEd.tex HTKRef/HRest.tex \ - HTKRef/LFoF.tex HTKRef/HLRescore.tex - -figures = HTKFigs/Blocking.eps HTKFigs/melfbank.eps \ - HTKFigs/Config.eps HTKFigs/memheap.eps \ - HTKFigs/HLMoperation.eps HTKFigs/messencode.eps \ - HTKFigs/HTKFormat.eps HTKFigs/mononet.eps \ - HTKFigs/LTool.eps HTKFigs/muacc.eps \ - HTKFigs/netforcsr.eps HTKFigs/overview.eps \ - HTKFigs/MMFeg.eps HTKFigs/parher.eps \ - HTKFigs/ClassLM.eps HTKFigs/qstree.eps \ - HTKFigs/Spmods.eps HTKFigs/recipe.eps \ - HTKFigs/Tool.decode.eps HTKFigs/recnetlev.eps \ - HTKFigs/digitnets.eps HTKFigs/subsmixrep.eps \ - HTKFigs/dmaker.eps HTKFigs/subword.eps \ - HTKFigs/egsils.eps HTKFigs/sysoview.eps \ - HTKFigs/egtranstie.eps HTKFigs/tcover.eps \ - HTKFigs/endpointer.eps HTKFigs/tiedstate.eps \ - HTKFigs/flatst.eps HTKFigs/tmixeg.eps \ - HTKFigs/headapt.eps HTKFigs/toolkit.eps \ - HTKFigs/headaptrdp.eps HTKFigs/tracc.eps \ - HTKFigs/herestdp.eps HTKFigs/tsubword.eps \ - HTKFigs/hierarch.eps HTKFigs/useforiso.eps \ - HTKFigs/hinitdp.eps HTKFigs/vaacc.eps \ - HTKFigs/hmm1.eps HTKFigs/vitloop.eps \ - HTKFigs/hsetdef.eps HTKFigs/vmatrep.eps \ - HTKFigs/hslab.eps HTKFigs/vqtohmm.eps \ - HTKFigs/htktools.eps HTKFigs/vtlnpiecewise.eps \ - HTKFigs/hvalign.eps HTKFigs/vtrellis.eps \ - HTKFigs/isoprob.eps HTKFigs/wdnet.eps \ - HTKFigs/isoword.eps HTKFigs/wdnet0.eps \ - HTKFigs/itemtree.eps HTKFigs/wdnet1.eps \ - HTKFigs/labegs.eps HTKFigs/wintnet.eps \ - HTKFigs/WordLM.eps HTKFigs/wtacc.eps \ - HTKFigs/markovgen.eps HTKFigs/xwrdnet.eps \ - HTKFigs/wlroper.eps - -htkbook.pdf: $(maintex) $(reftex) $(figures) - sed -e 's/\%\\usepackage\[dvipdfm/\\usepackage\[dvipdfm/' htkbook.tex >htkbook-pdf.tex - latex htkbook-pdf.tex - latex htkbook-pdf.tex - makeindex htkbook-pdf.idx - latex htkbook-pdf.tex - dvipdfm -p a4 -o htkbook.pdf htkbook-pdf.dvi - # If dvipdfm is not installed then try: - # dvipdf htkbook-pdf.dvi htkbook.pdf (but linked references will fail) - -htkbook.ps: htkbook.dvi - dvips -t a4 -K -o htkbook.ps htkbook.dvi - -htkbook.dvi: $(maintex) $(reftex) $(figures) - latex htkbook - latex htkbook - makeindex htkbook.idx - latex htkbook - -html: htkbook.dvi - -mkdir -p htkbook - latex2html -t "HTKBook for HTK3" -address "Back to HTK site
See front page for HTK Authors" -white -transparent -html_version 4.0,frame -dir htkbook htkbook.tex - -all: htkbook.ps htkbook.pdf html - -.PHONY: clean -clean: - -rm -f *.aux *.log *.toc htkbook.i* *.dvi *.ps *.pdf \ - *.ps.gz *.pdf.gz \ - HTKRef/*.aux htkbook-pdf.* - -rm -rf htkbook/ - diff --git a/HTKBook/README b/HTKBook/README deleted file mode 100644 index ef93252..0000000 --- a/HTKBook/README +++ /dev/null @@ -1,12 +0,0 @@ -This directory contains the LaTeX sources of the HTK user -documentation (HTKBook). - -Postscript, pdf and html versions of the HTKBook can be downloaded -from - - http://htk.eng.cam.ac.uk/docs/docs.shtml - -Currently the generation of pdf and html probably only works at CUED, -but we are planning to clean up the LaTeX to make it more portable. - - ge 4.9.2000 diff --git a/HTKBook/adapt.tex b/HTKBook/adapt.tex deleted file mode 100644 index 9a7a732..0000000 --- a/HTKBook/adapt.tex +++ /dev/null @@ -1,915 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -\mychap{HMM Adaptation}{Adapt} - -\sidepic{headapt}{80}{ -Chapter~\ref{c:Training} described how the parameters are estimated -for plain continuous density HMMs within \HTK, primarily using the -embedded training tool \htool{HERest}. Using the training strategy -depicted in figure~\ref{f:subword}, together with other techniques can -produce high performance speaker independent acoustic models for a -large vocabulary recognition system. However it is possible to build -improved acoustic models by tailoring a model set to a specific -speaker. By collecting data from a speaker and training -a model set on this speaker's data alone, the speaker's characteristics -can be modelled more accurately. Such systems are commonly -known as \textit{speaker dependent} systems, and on a typical word -recognition task, may have half the errors of a speaker -independent system. The drawback of speaker dependent systems is that -a large amount of data (typically hours) must be collected in order to -obtain sufficient model accuracy. -} - -Rather than training speaker dependent models, -\textit{adaptation} techniques can be applied. In this case, by using -only a small amount of data from a new speaker, a good speaker -independent system model set can be adapted to better fit the -characteristics of this new speaker. - -Speaker adaptation techniques can be used in various different -modes\index{adaptation!adaptation modes}. If -the true transcription of the adaptation data is known then -it is termed -\textit{supervised adaptation}\index{adaptation!supervised adaptation}, -whereas if the adaptation -data is unlabelled then it is termed -\textit{unsupervised adaptation}\index{adaptation!unsupervised -adaptation}. -In the case where all the adaptation data is available in one block, -e.g. from a speaker enrollment session, then this termed \textit{static -adaptation}. Alternatively adaptation can proceed incrementally as -adaptation data becomes available, and this is termed -\textit{incremental adaptation}. -% \htool{HVite} can provide unsupervised incremental adaptation. - -\HTK\ provides two tools to adapt continuous density HMMs. -\htool{HERest}\index{headapt@\htool{HERest}} -performs offline supervised adaptation using various forms of linear -transformation and/or maximum a-posteriori (MAP) adaptation, while -unsupervised adaptation is supported by \htool{HVite} (using only -linear transformations). In this case \htool{HVite} not only performs -recognition, but simultaneously adapts the model set as the data -becomes available through recognition. Currently, linear -transformation adaptation can be applied in both incremental and -static modes while MAP supports only static adaptation. - -This chapter describes the operation of supervised adaptation with the -\htool{HERest} tools. The first sections of the chapter give an -overview of linear transformation schemes and MAP adaptation and this -is followed by a section describing the general usages of -\htool{HERest} to build simple and more complex adapted systems. The -chapter concludes with a section detailing the various formulae used -by the adaptation tool. The use of \htool{HVite} to perform -unsupervised adaptation is described in the RM Demo. - -\mysect{Model Adaptation using Linear Transformations}{mllr} - -\mysubsect{Linear Transformations}{whatismllr} - -This section briefly discusses the forms of transform available. Note -that this form of adaptation is only available with diagonal -continuous density HMMs. - -The transformation matrices are all obtained by solving a maximisation -problem using the \textit{Expectation-Maximisation} (EM) -technique. Using EM results in the maximisation of a standard -\textit{auxiliary function}. (Full details are available in -section~\ref{s:mllrformulae}.) - -\mysubsub{Maximum Likelihood Linear Regression ({\tt MLLRMEAN})}{mumllr} - -Maximum likelihood linear regression or MLLR\index{adaptation!MLLR} -computes a set of transformations that will reduce the mismatch -between an initial model set and the adaptation data\footnote{ -MLLR can also be used to perform environmental compensation by -reducing the mismatch due to channel or additive noise effects.}. -More specifically MLLR is a model adaptation technique -that estimates a set of linear transformations for the mean and -variance parameters of a Gaussian mixture HMM system. -%The set of -%transformations are estimated so to as to maximise the likelihood of the -%adaptation data. -The effect of these transformations is to shift the -component means and alter the variances in the initial system -so that each state in the HMM system is more likely to generate the -adaptation data. - -The transformation matrix used to give a new estimate of the adapted mean is -given by -\hequation{ - \hat{\bm{\mu}} = \bm{W}\bm{\xi}, -}{mtrans} -where $\bm{W}$ is the $n \times \left( n + 1 \right)$ -transformation matrix (where $n$ is the dimensionality of the data) -and $\bm{\xi}$ is the extended mean vector, -\[ - \bm{\xi} = \left[\mbox{ }w\mbox{ }\mu_1\mbox{ }\mu_2\mbox{ }\dots\mbox{ }\mu_n\mbox{ }\right]^\transpose -\] -where $w$ represents a bias offset whose value is fixed (within \HTK) at 1.\\ -Hence $\bm{W}$ can be decomposed into -\hequation{ - \bm{W} = \left[\mbox{ }\bm{b}\mbox{ }\bm{A}\mbox{ }\right] -}{decompmtrans} -where $\bm{A}$ represents an $n \times n$ -transformation matrix and $\bm{b}$ represents a bias vector. This -form of transform is referred to in the code as {\tt MLLRMEAN}. - -\mysubsub{Variance MLLR ({\tt MLLRVAR} and {\tt MLLRCOV})}{vmllr} - -There are two standard forms of linear adaptation of the variances. The first -is of the form -\[ - \hat{\bm{\Sigma}} = \bm{B}^\transpose\bm{H}\bm{B} -\] -where $\bm{H}$ is the linear transformation to be estimated and -$\bm{B}$ is the inverse of the Choleski factor of $\bm{\Sigma}^{-1}$, -so -\[ - \bm{\Sigma}^{-1} = \bm{C}\bm{C}^\transpose -\] -and -\[ - \bm{B}= \bm{C}^{-1} -\] -This form of transform results in an effective full covariance matrix if -the transform matrix $\bm{H}$ is full. This makes likelihood calculations -highly inefficient. This form of transform is only available with a -diagonal transform and in conjunction with estimating an MLLR transform. The -MLLR transform is used as a parent transform for estimating $\bm{H}$. -This form of transform is referred to in the code as {\tt MLLRVAR}. - -An alternative more efficient form of variance transformation is also available. -Here, the transformation of the covariance matrix is of the form -\hequation{ - \hat{\bm{\Sigma}} = \bm{H}\bm{\Sigma}\bm{H}^\transpose, -}{covtrans} -where $\bm{H}$ is the $n\times n$ covariance transformation matrix. -This form of transformation, referred to in the code as {\tt MLLRCOV} -can be efficiently implemented as a transformation of the means and -the features. -\hequation{ - {\cal N}(\bm{o};\bm{\mu},\bm{H}\bm{\Sigma}\bm{H}) = - \frac{1}{|\bm{H}|}{\cal N}(\bm{H}^{-1}\bm{o};\bm{H}^{-1}\bm{\mu},\bm{\Sigma}) = - {|\bm{A}|}{\cal N}(\bm{A}\bm{o};\bm{A}\bm{\mu},\bm{\Sigma}) -} {covlike} -where $\bm{A}=\bm{H}^{-1}$. -Using this form it is possible to estimate and efficiently apply full transformations. -{\tt MLLRCOV} transformations are normally estimated using {\tt MLLRMEAN} transformations -as the parent transform. - -\mysubsub{Constrained MLLR ({\tt CMLLR})}{cmllr} - -Constrained maximum likelihood linear regression or CMLLR\index{adaptation!CMLLR} -computes a set of transformations that will reduce the mismatch -between an initial model set and the adaptation data\footnote{ -MLLR can also be used to perform environmental compensation by -reducing the mismatch due to channel or additive noise effects.}. -More specifically CMLLR is a feature adaptation technique -that estimates a set of linear transformations for the features. -The effect of these transformations is to shift the -feature vector in the initial system -so that each state in the HMM system is more likely to generate the -adaptation data. -Note that due to computational reasons, CMLLR is only implemented -within \HTK\ for diagonal covariance, continuous density -HMMs. - -The transformation matrix used to give a new estimate of the adapted mean is -given by -\hequation{ - \hat{\bm{o}} = \bm{W}\bm{\zeta}, -}{mtrans2} -where $\bm{W}$ is the $n \times \left( n + 1 \right)$ -transformation matrix (where $n$ is the dimensionality of the data) -and $\bm{\zeta}$ is the extended observation vector, -\[ - \bm{\zeta} = \left[\mbox{ }w\mbox{ }o_1\mbox{ }o_2\mbox{ }\dots\mbox{ }o_n\mbox{ }\right]^\transpose -\] -where $w$ represents a bias offset whose value is fixed (within \HTK) at 1.\\ -Hence $\bm{W}$ can be decomposed into -\hequation{ - \bm{W} = \left[\mbox{ }\bm{b}\mbox{ }\bm{A}\mbox{ }\right] -}{decompmtrans2} -where $\bm{A}$ represents an $n \times n$ -transformation matrix and $\bm{b}$ represents a bias vector. -This form of transform is referred to in the code as {\tt CMLLR}. - -Since multiple \texttt{CMLLR} transforms may be used it is important to -include the Jacobian in the likelihood calculation. -\hequation{ - {\cal L}(\bm{o};\bm{\mu},\bm{\Sigma}, \bm{A}, \bm{b}) = - {|\bm{A}|}{\cal N}(\bm{A}\bm{o}+\bm{b};\bm{\mu},\bm{\Sigma}) -} {cmllrlike} -This is the implementation used in the code. - - -\mysubsect{Input/Output/Parent Transformations}{whattransform} -There are three types of linear transform that may be used with -the HTKTools. -\begin{itemize} - -\item {\it Input transform}: the input transform is used to determine -the forward-backward probabilities, hence the component posteriors, -for estimating model and transform parameters. MLLR transforms can be -iteratively estimated by refining the posteriors using a newly -estimated transform. - -\item {\it Output transform}: the output transform is the transform -that is generated. The form of the transform is specified using the -appropriate configuration options. - -\item {\it Parent transform}: the parent transform determines the -model, or features, on which the model set or transform is to be -generated. For transform estimation this allows {\em cascades} of transforms -to be used to adapt the model parameters. For model estimation this -supports {\em speaker adaptive training}. Note the current implementation -only supports adaptive training with CMLLR. Any parent transform can be -used when generating transforms. -\end{itemize} - -There is no difference in the storage of the transform parameters, whether it is to be a parent transform or an input transform. There is -also no restrictions on the base classes, or regression classes, that -are used for each transform. - -\mysubsect{Base Class Definitions}{base_classes} -The first requirement to allow adaptation is to specify the set of -the components that share the same transform. This is achieved using a -baseclass. The baseclass definition files uses the same syntax for -defining components as the \htool{HHEd} command. However, for -baseclass definitions the components must always be specified. - -\begin{figure}[htbp] -\begin{verbatim} - ~b ``global'' - CUED_WSJ* - MIXBASE - 1 - 1 {*.state[2-4].mix[1-12]} -\end{verbatim} -\caption{Global base class definition} -\label{fig:globbase} -\end{figure} -The simplest form of transform uses a global transformation for all -components. Figure~\ref{fig:globbase} shows a global transformation -for a system where there are upto 3 emitting states and upto 12 -Gaussian components per state. - -\begin{figure}[htbp] -\begin{verbatim} - ~b ``baseclass_4.base'' - CUED_WSJ* - MIXBASE - 4 - 1 {(one,sil).state[2-4].mix[1-12]} - 2 {two.state[2-4].mix[1-12]} - 3 {three.state[2-4].mix[1-12]} - 4 {four.state[2-4].mix[1-12]} -\end{verbatim} -\caption{Four base classes definition} -\end{figure} - -These baseclasses may be directly used to determine which components -share a particular transform. However a more general approach -is to use a regression class tree. - -\mysubsect{Regression Class Trees}{reg_classes} -\index{adaptation!regression tree} -To improve the flexibility of the adaptation process it is possible to -determine the appropriate set of baseclasses depending on the amount -of adaptation data that is available. If a small amount of data is -available then a \textit{global} adaptation transform -\index{adaptation!global transforms} can be generated. A global transform -(as its name suggests) is applied -to every Gaussian component in the model set. However as more -adaptation data becomes available, improved adaptation is possible by -increasing the number of transformations. Each transformation is now -more specific and applied to certain groupings of Gaussian components. -For instance the Gaussian components could be grouped into the broad -phone classes: silence, vowels, stops, glides, nasals, fricatives, etc. -The adaptation data could now be used to construct more specific broad -class transforms to apply to these groupings. - -Rather than specifying static component groupings or classes, a robust -and dynamic method is used for the construction of further transformations -as more adaptation data becomes available. MLLR makes -use of a \textit{regression class tree} to group the Gaussians in the -model set, so that the set of transformations to be estimated can be -chosen according to the amount and type of adaptation data that is -available. The tying of each transformation across a number of mixture -components makes it possible to adapt distributions for which there -were no observations at all. With this process all models can be -adapted and the adaptation process is dynamically refined when more -adaptation data becomes available. - -The regression class tree is constructed so as to cluster together -components that are close in acoustic space, so that similar -components can be transformed in a similar way. Note that the tree is -built using the original speaker independent model set, and is thus -independent of any new speaker. The tree is constructed with a -centroid splitting algorithm, which uses a Euclidean distance -measure. For more details see section~\ref{s:hhedregtree}. The -terminal nodes or leaves of the tree specify the final component -groupings, and are termed the \textit{base (regression) classes}. Each -Gaussian component of a model set belongs to one particular base -class. The tool \htool{HHEd} can be used to build a binary regression -class tree, and to label each component with a base class number. -Both the tree and component base class numbers can be saved as part of -the MMF, or simply stored separately. Please refer to -section~\ref{s:hhedregtree} for further details. - -\sidefig{regtree1}{55}{A binary regression tree}{4}{} -Figure~\ref{f:regtree1} shows a simple example of a binary regression -tree with four base classes, denoted as $\{C_4, C_5, C_6, -C_7\}$. During ``dynamic'' adaptation, the occupation counts are -accumulated for each of the regression base classes. The diagram shows -a solid arrow and circle (or node), indicating that there is -sufficient data for a transformation matrix to be generated using the -data associated with that class. A dotted line and circle indicates -that there is insufficient data. For example neither node 6 or 7 has -sufficient data; however when pooled at node 3, there is sufficient -adaptation data. The amount of data that is ``determined'' as -sufficient is set as a configuration option for \htool{HERest} (see -reference section~\ref{s:HERest}). - -\htool{HERest} uses a top-down approach to traverse the regression -class tree. Here the search starts at the root node and progresses -down the tree generating transforms only for those nodes which -\begin{enumerate} -\item have sufficient data \textbf{and} -\item are either terminal nodes (i.e. base classes) \textbf{or} have -any children without sufficient data. -\end{enumerate} - -In the example shown in figure~\ref{f:regtree1}, transforms are constructed -only for regression nodes 2, 3 and 4, which can be denoted as -${\bf W}_2$, ${\bf W}_3$ and ${\bf W}_4$. Hence when the transformed -model set is required, the transformation matrices (mean and variance) -are applied in the following fashion to the Gaussian components in -each base class:- -\[ - \left\{ - \begin{array}{ccl} - {\bf W}_2 & \rightarrow & \left\{C_5\right\} \\ - {\bf W}_3 & \rightarrow & \left\{C_6, C_7\right\} \\ - {\bf W}_4 & \rightarrow & \left\{C_4\right\} - \end{array} - \right\} -\] - -At this point it is interesting to note that the global adaptation -case is the same as a tree with just a root node, and is in fact -treated as such. - -\begin{center} -\begin{figure} -\begin{verbatim} - ~r "regtree_4.tree" - ~b "baseclass_4.base" - 1 2 2 3 - 2 2 4 5 - 3 2 6 7 - 4 1 1 - 5 1 2 - 6 1 3 - 7 1 4 -\end{verbatim} -\caption{Regression class tree example} -\label{fig:regtree} -\end{figure} -\end{center} -An example of a regression class tree is shown in figure~\ref{fig:regtree}. -This uses the four baseclasses from the baseclass macro ``baseclass\_4.base''. -A binary regression tree is shown, thus there are 4 terminal nodes. - -\mysubsect{Linear Transform Format}{tmfs} - -\htool{HERest} estimates the required transformation statistics and can -either output a set of transformation models, or a single transform -model file (TMF)\index{adaptation!transform model file}. The advantage -in storing the transforms as opposed to an adapted MMF is that the -TMFs are considerably smaller than MMFs (especially triphone -MMFs). This section gives examples of the format that the transforms -are stored in. For a description of the transform definition see -section~\ref{s:hmmdef}. - -\noindent - -\begin{figure}[htbp] -\begin{verbatim} - ~a ``cued'' - BASE - ~b ``global'' - - CMLLR - 1 - 1 5 - - 5 - -0.357 0.001 -0.002 0.132 0.072 - -0.3419 - 2 3 2 - 1 - 3 3 - 0.942 -0.032 -0.001 - -0.102 0.922 -0.015 - -0.016 0.045 0.910 - 2 - 2 2 - 1.028 -0.032 - -0.017 1.041 - - 1 1 -\end{verbatim} -\caption{Example Constrained MLLR transform using hard weights} -\end{figure} -Figure~\ref{fig:hiermllr} shows the format of a single transform. In -the same fashion as HMMs all transforms are stored as macros. The -header information gives how the transform was estimated, currently -either with a regression class tree {\tt TREE} or directly using the -base classes {\tt BASE}. The base class macro is then specified. The -form of transformation is then described in the transformset. The code -currently supports constrained MLLR (illustrated), MLLR mean -adaptation, MLLR full variance adaptation and diagonal variance -adaptation. Arbitrary block structures are allowable. The assignment -of base class to transform number is specified at the end of the file. - -The {\tt LOGDET} value stored with the transform is {\em twice} the -log-determinant of the transform\footnote{There is no advantage in storing -twice the log determininat, however this is maintained for backward -compatibility with internal HTK releases.}. - -\mysubsect{Hierarchy of Transform}{hieradapt} -It is possible to specify a hierarchy of transformations. This results -from using a parent transform during the training process. -\begin{figure}[htbp] -\begin{verbatim} - ~a ``mjfg'' - TREE - ~b ``baseclass_4.base'' - ~a ``cued'' - - MLLRMEAN - 2 - 1 5 - - 5 - -0.357 0.001 -0.002 0.132 0.072 - 2 3 2 - 1 - 3 3 - 0.942 -0.032 -0.001 - -0.102 0.922 -0.015 - -0.016 0.045 0.910 - 2 - 2 2 - 1.028 -0.032 - -0.017 1.041 - 2 5 - - 5 - -0.357 0.001 -0.002 0.132 0.072 - 2 3 2 - 1 - 3 3 - 0.942 -0.032 -0.001 - -0.102 0.922 -0.015 - -0.016 0.045 0.910 - 2 - 2 2 - 1.028 -0.032 - -0.017 1.041 - - 1 1 - 2 1 - 3 1 - 4 2 -\end{verbatim} -\caption{Example of an MLLR transform using with a parent transform} -\label{fig:hiermllr} -\end{figure} -Figure~\ref{fig:hiermllr} shows the use of a set of MLLR transforms -generated using a parent CMLLR transform stored in the macro ``cued''. The -action of this transform is -\begin{enumerate} -\item Apply transform {\tt cued} -\item Apply transform {\tt mjfg} -\end{enumerate} -The parent transform is always applied {\it before} the transform -itself. - -Hierarchy of transforms automatically result from using a parent transform -when estimating a transform. - -\mysubsect{Multiple Stream Systems}{streamadapt} -The specification of the base-class components are given in terms -of the Gaussian component. In HTK this is specified for a particular -stream of the HMM state. When multiple streams are used there are two -situations to consider\footnote{The current code in \htool{HHEd} for -generating decision trees does not support generating trees for multiple -streams. However, the code does support adaptation for hand generated -trees.}. - -First, if the streams have the same number of components, then transforms -may be shared between different streams. For example it may be decided that -the same linear transform is to be used by the static stream, the delta -stream and the delta-delta stream. - -Second, if the streams have different dimensions associated with them. For -this case the root node is a special node for which a transform cannot be -generated. It is required to partition the Gaussian components so that -all subsequent nodes have the same dimensionality associated with them. - - -\mysect{Adaptive Training with Linear Transforms}{adapttrain} -In order to improve the performance of systems when there are multiple -speakers, or acoustic environments, present in the training corpus -adaptive training may be used. Here, rather than using adaptation -transformations only during test, adaptation transforms are estimated -for each training speaker. The model, sometimes referred to as a {\em canonical -model}, is then estimated given the set of speaker transforms. In the -same fashion as standard training, the whole process can then be repeated. - -In the current implementation, adaptive training is only supported -with constrained MLLR as the transform for each speaker. As CMLLR is -implemented as one, or more, feature-space transformations. The -estimation formulae in section~\ref{s:bwformulae} are simplified -modified to accumulate statistics using -$\bm{A}^{(i)}\bm{o}+\bm{b}^{(i)}$ for all the data from speaker $i$ -rather than $\bm{o}$. The update formula for $\bm{\mu}_{jsm}$ then -becomes -\newcommand{\satliksum}[1]{ - \sum_{i=1}^I\sum_{r=1}^{R^i} \sum_{t=1}^{T_r} L^r_{#1}(t) -} -\[ - \hat{\bm{\mu}}_{jsm} = \frac{ - \satliksum{jsm}(\bm{A}^{(i)}\bm{o}^r_{st}+\bm{b}^{(i)})}{\satliksum{jsm}} -\] - -Specifying that adaptive training is to be used simply requires specifying -the parent transform that the model set should be built on. Note that usually -the parent transform will also be used as an input transform. - -Discriminative adaptive training can also be implemented in HTK. The normal -procedure is to adaptively train an ML system as above. Then, fixing the -ML-estimated CMLLR linear transforms, only the canonical model parameters are -discriminativeloy updated. Thus the update formula for the mean would be -(assuming a single stream) -\newcommand{\liksumdiscs}[1]{ - \sum_{i=1}^I\sum_{r=1}^{R_i} \sum_{t=1}^{T_r} (L^{{\tt num}r}_{#1}(t) - L^{{\tt den}r}_{#1}(t)) -} -\begin{eqnarray*} -\hat{\bm{\mu}}_{jm} = \frac{\liksumdiscs{jm}(\bm{A}^{(i)}\bm{o}^r_{t}+\bm{b}^{(i)}) + D_{jm}{\bm{\mu}}_{jm} -+ \tau^{\tt I}{\bm\mu}^{\tt p}_{jm}} -{\liksumdiscs{jm} + D_{jm} + \tau^{\tt I}} -\end{eqnarray*} -For full details of the various options for discriminative training see -section~\ref{s:discriminative}. There is currently no support in HTK for -discriminatively training linear transforms. - -\mysect{Model Adaptation using MAP}{mapadapt} - -Model adaptation can also be accomplished using a maximum a -posteriori (MAP) approach\index{adaptation!MAP}. -This adaptation process is sometimes -referred to as Bayesian adaptation. MAP adaptation involves the use -of prior knowledge about the model parameter distribution. -Hence, if we know what the parameters of the model are -likely to be (before observing any adaptation data) using the prior -knowledge, we might well be able to make good use of the limited -adaptation data, to obtain a decent MAP estimate. This type of prior -is often termed an informative prior. -Note that if the prior -distribution indicates no preference as to what the model parameters -are likely to be (a non-informative prior), then the MAP estimate -obtained will be identical to that obtained using a maximum likelihood -approach. - -For MAP adaptation purposes, the informative priors that are generally -used are the speaker independent model parameters. For mathematical -tractability conjugate priors are used, which results in a simple -adaptation formula. The update formula for a -single stream system for state $j$ and mixture component $m$ is - -\hequation{ -\hat{\bm{\mu}}_{jm} = \frac{ N_{jm} } { N_{jm} + \tau } \bar{\bm{\mu}}_{jm} + - \frac{ \tau } { N_{jm} + \tau } \bm{\mu}_{jm} -}{meanmap} - -where $\tau$ is a weighting of the a priori knowledge to the -adaptation speech data and $N$ is the occupation likelihood of the -adaptation data, defined as, -\[ - N_{jm} = \liksum{jm} -\] - -where $\bm{\mu}_{jm}$ is the speaker independent mean -and $\bar{\bm{\mu}}_{jm}$ is the mean of the observed adaptation -data and is defined as, -\[ - \bar{\bm{\mu}}_{jm} = \frac{ - \liksum{jm}\bm{o}^r_{t}}{\liksum{jm}} -\] - -As can be seen, if the occupation likelihood -of a Gaussian component ($N_{jm}$) is small, then the -mean MAP estimate will remain close to the speaker -independent component mean. -With MAP adaptation, every single mean -component in the system is updated with a MAP estimate, based on the -prior mean, the weighting and the adaptation data. Hence, MAP -adaptation requires a new ``speaker-dependent'' model set to be saved. - -One obvious drawback to MAP adaptation is that it requires more -adaptation data to be effective when compared to MLLR, because MAP -adaptation is specifically defined at the component level. When -larger amounts of adaptation training data become available, MAP -begins to perform better than MLLR, due to this detailed update of -each component (rather than the pooled Gaussian transformation -approach of MLLR). In fact the two adaptation processes can be -combined to improve performance still further, by using the MLLR -transformed means as the priors for MAP adaptation (by replacing -$\bm{\mu}_{jm}$ in equation~\ref{e:meanmap} with the transformed mean -of equation~\ref{e:mtrans}). In this case -components that have a low occupation likelihood in the adaptation -data, (and hence would not change much using MAP alone) have been -adapted using a regression class transform in MLLR. An example usage -is shown in the following section. - -%\pagebreak - -\mysect{Linear Transformation Estimation Formulae}{mllrformulae} - -For reference purposes, this section lists the various formulae -employed within the \HTK\ adaptation tool\index{adaptation!MLLR -formulae}. It is assumed throughout -that single stream data is used and that diagonal covariances are also -used. All are standard and can be found in various literature. - -The following notation is used in this section -\begin{tabbing} -++ \= ++++++++ \= \kill -\> $\mathcal{M}$ \> the model set\\ -\> $\hat{\mathcal{M}}$ \> the adapted model set\\ -\> $T$ \> number of observations \\ -\> $m$ \> a mixture component \\ -\> $\bm{O}$ \> a sequence of $d$-dimensional observations \\ -\> $\bm{o}(t)$ \> the observation at time $t$, $1 \leq t \leq T $\\ -\> $\bm{\zeta}(t)$\> extended observation at time $t$, $1 \leq t \leq T $ -\\ -\> $\bm{\mu}_{m_r}$ \> mean vector for the mixture component $m_r$\\ -\> $\bm{\xi}_{m_r}$ \> extended mean vector for the mixture component $m_r$\\ -\> $\bm{\Sigma}_{m_r}$ \> covariance matrix for the mixture component $m_r$ \\ -\> $L_{m_r}(t)$ \> the occupancy probability for the mixture component $m_r$\\ -\> \> at time $t$ -\end{tabbing} - -To enable robust transformations to be trained, the transform matrices -are tied across a number of Gaussians. The set of Gaussians which -share a transform is referred to as a regression class. For a -particular transform case $\bm{W_r}$, the $M_r$ Gaussian components -$\left\{m_1, m_2, \dots, m_{M_r}\right\}$ will be tied together, as -determined by the regression class tree (see -section~\ref{s:reg_classes}). The standard auxiliary -function shown below is used to estimate the transforms. -\newcommand{\like}{L_{m_r}(t)} -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = -- \frac{1}{2} -\sum_{r=1}^R -\sum_{m_r=1}^{M_r} -\sum_{t=1}^T -\like\left[ -K^{(m)}+\log(|{\hat{\bm\Sigma}}_{m_r}|)+({\bm o}(t)- -{\hat{\bm\mu}}_{m_r})^\transpose{{\hat{\bm\Sigma}}}_{m_r}^{-1}({\bm o}(t)-{\hat{\bm\mu}}_{m_r}) -\right] \nonumber -\end{eqnarray} -where $K^{(m)}$ subsumes all constants and $\like$, the occupation likelihood, is defined as, -\[ - \like = p(q_{m_r}(t)\;|\;\mathcal{M}, \bm{O}_T) -\] -and $q_{m_r}(t)$ indicates the Gaussian component $m_r$ at time $t$, -and $\bm{O}_T = \left\{\bm{o}(1),\dots,\bm{o}(T)\right\}$ is the -adaptation data. The occupation likelihood is obtained from the -forward-backward process described in section~\ref{s:bwformulae}. - - -\mysubsect{Mean Transformation Matrix ({\tt MLLRMEAN})}{mtransest} -Substituting the for expressions for MLLR mean adaptation -\begin{eqnarray} -\hat{\bm{\mu}}_{m_r} = \bm{W}_r\bm{\xi}_{m_r}, \:\:\:\: -\hat{\bm{\Sigma}}_{m_r} = {\bm{\Sigma}}_{m_r} -\end{eqnarray} -into the auxiliary function, and using the fact that the covariance -matrices are diagonal, yields -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = K -- \frac{1}{2} -\sum_{r=1}^R -\sum_{j=1}^d{ -\left({\bm{w}}_{rj}{\bf G}^{(j)}_r{\bm{w}}^\transpose_{rj} -2 {\bm{w}}_{rj}{\bf k}^{(j)\transpose}_r -\right)} \nonumber -\end{eqnarray} -where ${\bm{w}}_{rj}$ is the $j^{th}$ {\em row} of $\bm{W}_r$, -\begin{eqnarray} -{\bf G}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{1}{\sigma_{m_ri}^{2}}{\bm\xi}_{m_r}{\bm\xi}^{\transpose}_{m_r} -\sum_{t=1}^T\like -\label{eq:gi_mllr} -\end{eqnarray} -and -\begin{eqnarray} -{\bf k}^{(i)}_{r} = \sum_{m_r=1}^{M_r}\sum\limits_{t=1}^T -\like\frac{1}{\sigma^{2}_{m_ri}} -o_i(t){\bm\xi}^{T}_{m_r} -\end{eqnarray} -Differentiating the auxiliary function with respect to the transform -${\bm W}_r$ , and then maximising it with respect to the transformed mean -yields the following update -\begin{eqnarray} -{{\bm{w}}}_{ri} = {\bf k}_r^{(i)}{\bf G}_r^{(i)-1} \label{eq:mllrmeansol} -\end{eqnarray} - -The above expressions assume that each base regression class $r$ has a -separate transform. If regression class trees are used then the shared -transform parameters may be simply estimated by combining the -statistics of the base regression classes. The regression class tree -is used to generate the classes dynamically, so it is not known -a-priori which regression classes will be used to estimate the -transform. This does not present a problem, since $\bm{G}^{(i)}$ and -$\bm{k}^{(i)}$ for the chosen regression class may be obtained from its -child classes (as defined by the tree). If the parent node $R$ has -children $\left\{R_1,\dots,R_C\right\}$ then -\[ - {\bf k}^{(i)} = \sum_{c=1}^{C} {\bf k}^{(i)}_{R_c} -\] -and -\[ - {\bf G}^{(i)} = \sum_{c=1}^{C} {\bf G}^{(i)}_{R_c} -\] -The same approach of combining statistics from multiple children can -be applied to all the estimation formulae in this section. - -\mysubsect{Variance Transformation Matrix ({\tt MLLRVAR}, {\tt MLLRCOV})}{vtransest} - -Estimation of the first variance transformation matrices is only available -for diagonal covariance Gaussian systems in the current implementation, -though full transforms can in theory be estimated. The Gaussian covariance is -transformed using\footnote{In the current implementation of the code this -form of transform can only be estimated in addition to the {\tt MLLRMEAN} -transform}, -\[ - \hat{\bm{\mu}}_{m_r} = \bm{\mu}_{m_r}, \:\:\:\: - \hat{\bm{\Sigma}}_{r} = \bm{B}_{m_r}^\transpose\bm{H}_r\bm{B}_{m_r} -\] -where $\bm{H}_m$ is the linear transformation to be estimated and -$\bm{B}_m$ is the inverse of the Choleski factor of $\bm{\Sigma}_{m_r}^{-1}$, -so -\[ - \bm{\Sigma}_{m_r}^{-1} = \bm{C}_{m_r}\bm{C}_{m_r}^\transpose -\] -and -\[ - \bm{B}_{m_r} = \bm{C}_{m_r}^{-1} -\] -After rewriting the auxiliary function, the transform matrix $\bm{H}_m$ -is estimated from, -\[ - \bm{H}_r = \frac{ \sum_{m_r=1}^{M_r}\bm{C}_{m_r}^\transpose \left[ - \like(\bm{o}(t) - \hat{\bm{\mu}}_{m_r}) - (\bm{o}(t) - \hat{\bm{\mu}}_{m_r})^\transpose \right] - \bm{C}_{m_r} } { \like } -\] -Here, $\bm{H}_r$ is forced to be a diagonal transformation by setting -the off-diagonal terms to zero, which ensures that -$\hat{\bm{\Sigma}}_{m_r}$ is also diagonal. - -The alternative form of variance adaptation us supported for full, -block and diagonal transforms. Substituting the for expressions for -variance adaptation -\begin{eqnarray} -\hat{\bm{\mu}}_{m_r} = \bm{\mu}_{m_r}, \:\:\:\: -\hat{\bm{\Sigma}}_{m_r} = {\bm H}_r{\bm{\Sigma}}_{m_r}{\bm H}_r^\transpose -\end{eqnarray} -into the auxiliary function, and using the fact that the covariance -matrices are diagonal yields -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = K + -\sum_{r=1}^R -\beta_r\log({\bf c}_{ri}{\bf a}_{ri}^\transpose)- -\frac{1}{2} -\sum_{j=1}^d{ -\left({\bf a}_{rj}{\bf G}^{(j)}_r{\bf a}^\transpose_{rj} -\right)} \nonumber -\end{eqnarray} -where -\begin{eqnarray} -\beta_r &=& \sum_{m_r=1}^{M_r}\sum_{t=1}^T\like\\ -{\bm A}_r &=& {\bm H}_r^{-1} -\end{eqnarray} -${\bf a}_{ri}$ is $i^{th}$ row of ${\bm -A}_r$, the $1\times n$ row vector ${\bf c}_{ri}$ is the vector of -cofactors of ${\bm A}_r$, $c_{rij}={\mbox{cof}}({\bf A}_{rij})$, -and ${\bf G}^{(i)}_r$ is defined as -\begin{eqnarray} -{\bf G}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{1}{\sigma_{m_ri}^{2}} -\sum_{t=1}^T\like(\bm{o}(t)-\hat{\bm{\mu}}_{m_r}) -(\bm{o}(t)-\hat{\bm{\mu}}_{m_r})^\transpose -\label{eq:gi_mllr2} -\end{eqnarray} -Differentiating the auxiliary function with respect to the transform -${\bm A}_r$ , and then maximising it with respect to the transformed mean -yields the following update -\begin{eqnarray} -{\bf a}_{ri} ={\bf c}_{ri}{\bf G}^{(i)-1}_r -\sqrt{\left(\frac{\beta_r}{{\bf -c}_{ri}{\bf G}_r^{(i)-1}{\bf c}^\transpose_{ri}}\right)} -\end{eqnarray} -This is an iterative optimisation scheme as the cofactors mean the estimate -of row $i$ is dependent on all the other rows (in that block). For the -diagonal transform case it is of course non-iterative and simplifies to -the same form as the {\tt MLLRVAR} transform. - -\mysubsect{Constrained MLLR Transformation Matrix ({\tt CMLLR})}{cmllrest} - -Substituting the for expressions for CMLLR adaptation where\footnote{For -efficiency this transformation is implemented as -\begin{eqnarray} -\hat{\bm o}_r(t) = \bm{A}_r\bm{o}(t) + \bm{b}_r = \bm{W}_r\bm{\zeta}(t) -\end{eqnarray} -} -\begin{eqnarray} -\hat{\bm{\mu}}_{m_r} = \bm{H}_r\bm{\mu}_{m_r} + \tilde{\bm{b}}_r, \:\:\:\: -\hat{\bm{\Sigma}}_{m_r} = {\bm H}_r{\bm{\Sigma}}_{m_r}{\bm H}_r^\transpose -\end{eqnarray} -into the auxiliary function, and using the fact that the covariance -matrices are diagonal yields -\begin{eqnarray} -{\cal Q}({\cal M},{\hat{\cal M}}) = K + -\sum_{r=1}^R\left[ -\beta\log({\bf p}_{ri}\bm{w}_{ri}^\transpose)- -\frac{1}{2} -\sum_{j=1}^d{ -\left(\bm{w}_{rj}{\bf G}^{(j)}_r\bm{w}^\transpose_{rj} - 2\bm{w}_{rj}{\bf k}^{(j)}_r -\right)}\right] \nonumber -\end{eqnarray} -where -\begin{eqnarray} -\bm{W}_r = \left[\begin{array}{c c} --\bm{A}_r\tilde{\bm{b}}_r & \bm{H}_r^{-1} \end{array} -\right] = \left[\begin{array}{c c} -\bm{b} & \bm{A} \end{array} -\right] -\end{eqnarray} -$\bm{w}_{ri}$ is $i^{th}$ row of $\bm{W}_r$, the $1\times n$ row vector ${\bf p}_{ri}$ is the zero -extended vector of cofactors of ${\bf A}_r$, ${\bf G}^{(i)}_r$ and ${\bf k}^{(i)}_r$ are defined as -\begin{eqnarray} -{\bf G}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{1}{\sigma_{m_ri}^{2}} -\sum_{t=1}^T\like{\bm\zeta}(t){\bm\zeta}^{\transpose}(t) -\label{eq:gi_mllr3} -\end{eqnarray} -and -\begin{eqnarray} -{\bf k}^{(i)}_r=\sum_{m_r=1}^{M_r} -\frac{\mu_{m_ri}}{\sigma_{m_ri}^{2}} -\sum_{t=1}^T\like{\bm\zeta}^{\transpose}(t) -\label{eq:gi_mllr4} -\end{eqnarray} -Differentiating the auxiliary function with respect to the transform -$\bm{W}_r$ , and then maximising it with respect to the transformed mean -yields the following update -\begin{eqnarray} -\bm{w}_{ri} = \left(\alpha{{\bf p}_{ri}} + {\bf k}^{(i)}_r\right){\bf G}^{(i)-1}_r -\end{eqnarray} -where $\alpha$ satisfies -\begin{eqnarray} -\alpha^2{\bf p}_{ri}{\bf G}^{(i)-1}_r{\bf p}_{ri}^\transpose+ -\alpha{\bf p}_{ri}{\bf G}^{(i)-1}_r{\bf k}^{(i)\transpose}_r - \beta=0\label{eq:alpha_quad} -\end{eqnarray} -There are thus two possible solutions for $\alpha$. The solutions that -yields the maximum increase in the auxiliary function (obtained by -simply substituting in the two options) is used. This is an iterative -optimisation scheme as the cofactors mean the estimate of row $i$ is -dependent on all the other rows (in that block). - -%%% Local Variables: -%%% mode: plain-tex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/config.tex b/HTKBook/config.tex deleted file mode 100644 index 6fc51d2..0000000 --- a/HTKBook/config.tex +++ /dev/null @@ -1,489 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Dave Ollason and Steve Young 11/11/95 -% -% Language modelling details added by Gareth Moore 15-16/01/02 - -\mychap{Configuration Variables}{confvars} - -\index{configuration variables!summary} -This chapter tabulates all configuration variables used in \HTK. - -\mysect{Configuration Variables used in Library Modules}{coninlib} - -%\begin{table}[h] -\begin{center} -\tablecaption{Library Module Configuration Variables} -\tablehead{\hline -Module & Name & Default & Description \\ \hline\hline} -\tabletail{\hline} -\begin{supertabular}{|p{1.8cm}|l|l|p{6.6cm}|} - -% all - & \texttt{TRACE} & \texttt{0} & Trace setting\\ \hline - -% HParm HWave -\htool{HParm} & \texttt{SOURCEFORMAT} & \texttt{HTK} - & File format of source \\ \cline{2-4} -\htool{HWave} & \texttt{TARGETFORMAT} & \texttt{HTK} & File format of target \\ \hline - -% HLabel HAudio HWave HParm -\htool{HLabel} \htool{HAudio} \htool{HWave} \htool{HParm} - & \texttt{SOURCERATE} & \texttt{0.0} & Sample rate of source in 100ns units \\ \hline - -% HParm -\htool{HParm} \htool{HWave} - & \texttt{TARGETRATE} & \texttt{0.0} & Sample rate of target in 100ns units \\ \hline - -% HAudio - & \texttt{LINEOUT} & \texttt{T} & Enable audio output to machine line output \\ \cline{2-4} - & \texttt{PHONESOUT} & \texttt{T} & Enable audio output to machine phones output \\ \cline{2-4} -\htool{HAudio} - & \texttt{SPEAKEROUT} & \texttt{F}& Enable audio output to machine internal speaker \\ \cline{2-4} - & \texttt{LINEIN} & \texttt{T} & Enable audio input from machine line input \\ \cline{2-4} - & \texttt{MICIN} & \texttt{F} & Enable audio input from machine mic input \\ \hline - -% HWave - & \texttt{NSAMPLES} & & Num samples in alien file input via a pipe\\ \cline{2-4} -\htool{HWave} & \texttt{HEADERSIZE} & & Size of header in an alien file\\ \cline{2-4} - & \texttt{BYTEORDER} & & Define byte order \texttt{VAX} or other\\ \cline{2-4} - & \texttt{STEREOMODE} & & Select channel: \texttt{RIGHT} or \texttt{LEFT} \\ \hline - -% HParm - & \texttt{SOURCEKIND} & \texttt{ANON} & Parameter kind of source \\ \cline{2-4} - & \texttt{TARGETKIND} & \texttt{ANON} & Parameter kind of target \\ \cline{2-4} - & \texttt{MATTRANFN } & & Input transformation file \\ \cline{2-4} - & \texttt{SAVECOMPRESSED} & \texttt{F} & Save the output file in compressed form \\ \cline{2-4} - & \texttt{SAVEWITHCRC} & \texttt{T} & Attach a checksum to output parameter file \\ \cline{2-4} -\htool{HParm} - & \texttt{ADDDITHER} & \texttt{0.0} & Level of noise added to input signal \\ \cline{2-4} - & \texttt{ZMEANSOURCE} & \texttt{F} & Zero mean source waveform before analysis \\ \cline{2-4} - & \texttt{WINDOWSIZE} & \texttt{256000.0} & Analysis window size in 100ns units \\ \cline{2-4} - & \texttt{USEHAMMING} & \texttt{T} & Use a Hamming window \\ \cline{2-4} - & \texttt{DOUBLEFFT} & \texttt{F} & Use twice the required size for FFT \\ \cline{2-4} - & \texttt{PREEMCOEF} & \texttt{0.97} & Set pre-emphasis coefficient \\ \cline{2-4} - & \texttt{LPCORDER} & \texttt{12} & Order of LPC analysis \\ \cline{2-4} - & \texttt{NUMCHANS} & \texttt{20} & Number of filterbank channels \\ \cline{2-4} - & \texttt{LOFREQ} & \texttt{-1.0} & Low frequency cut-off in fbank analysis \\ \cline{2-4} - & \texttt{HIFREQ} & \texttt{-1.0} & High frequency cut-off in fbank analysis \\ \cline{2-4} - & \texttt{WARPFREQ} & \texttt{1.0} & Frequency warping factor \\ \cline{2-4} - & \texttt{WARPLCUTOFF} & & Lower frequency threshold for non-linear warping \\ \cline{2-4} - & \texttt{CMEANDIR} & & Directory to find cepstral mean vectors \\ \cline{2-4} - & \texttt{CMEANMASK} & & Filename mask for cepstral mean vectors \\ \cline{2-4} - & \texttt{CMEANPATHMASK} & & Path name mask for cepstral mean vectors, the matched string is used to extend CMEANDIR string \\ \cline{2-4} - & \texttt{VARSCALEDIR} & & Directory to find cepstral variance vectors \\ \cline{2-4} - & \texttt{VARSCALEMASK} & & Filename mask for cepstral variance vectors \\ \cline{2-4} - & \texttt{VARSCALEPATHMASK} & & Path name mask for cepstral variance vectors, the matched string is used to extend VARSCALEDIR string\\ \cline{2-4} - & \texttt{VARSCALEFN} & & Filename of global variance scaling vector \\ \cline{2-4} - & \texttt{COMPRESSFACT} & 0.33 & Amplitude compression factor for PLP \\ \hline - -% HLabel HParm -\htool{HLabel} \htool{HParm} - & \texttt{V1COMPAT} & \texttt{F} & HTK V1 compatibility setting \\ \hline - -%\end{tabular} -%\end{center} -%\caption{Library Module Configuration Variables} -%\end{table} -%\clearpage - -%\begin{table}[h] -%\begin{center} -%\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{1.1cm}|p{6.6cm}|} \hline -%Module & Name & Default & Description \\ \hline\hline - -% HWave HShell -\htool{HWave} - & \texttt{NATURALREADORDER} & \texttt{F} & Enable natural read order for binary files \\ \cline{2-4} -\htool{HShell} - & \texttt{NATURALWRITEORDER} & \texttt{F} & Enable natural write order for binary files \\ \hline - -% HParm - & \texttt{USEPOWER} & \texttt{F} & Use power not magnitude in fbank analysis \\ \cline{2-4} - & \texttt{NUMCEPS} & \texttt{12} & Number of cepstral parameters \\ \cline{2-4} - & \texttt{CEPLIFTER} & \texttt{22} & Cepstral liftering coefficient \\ \cline{2-4} - & \texttt{ENORMALISE} & \texttt{T} & Normalise log energy \\ \cline{2-4} - & \texttt{ESCALE} & \texttt{0.1} & Scale log energy \\ \cline{2-4} - & \texttt{SILFLOOR} & \texttt{50.0} & Energy silence floor in dBs \\ \cline{2-4} - & \texttt{DELTAWINDOW} & \texttt{2} & Delta window size \\ \cline{2-4} - & \texttt{ACCWINDOW} & \texttt{2} & Acceleration window size \\ \cline{2-4} - & \texttt{VQTABLE} & \texttt{NULL} & Name of VQ table \\ \cline{2-4} - & \texttt{SIMPLEDIFFS} & \texttt{F} & Use simple differences for delta calculations \\ \cline{2-4} - & \texttt{RAWENERGY} & \texttt{T} & Use raw energy \\ \cline{2-4} - & \texttt{AUDIOSIG} & \texttt{0} & Audio signal number for remote control \\ \cline{2-4} - & \texttt{USESILDET} & \texttt{F} & Enable speech/silence detector \\ \cline{2-4} - & \texttt{MEASURESIL} & \texttt{T} & Measure background silence level \\ \cline{2-4} -\htool{HParm} - & \texttt{OUTSILWARN} & \texttt{T} & Print a warning message to {\tt stdout} before -measuring audio levels \\ \cline{2-4} - & \texttt{SPEECHTHRESH} & \texttt{9.0} & Threshold for speech above silence level (in dB) \\ \cline{2-4} - & \texttt{SILENERGY} & \texttt{0.0} & Average background noise level (in dB) - will -normally be measured rather than supplied in configuration \\ \cline{2-4} - & \texttt{SPCSEQCOUNT} & \texttt{10} & Window over which speech/silence decision reached \\ \cline{2-4} - & \texttt{SPCGLCHCOUNT} & \texttt{0} & Maximum number of frames marked as silence in window which is - classified as speech whilst expecting start of speech \\ \cline{2-4} - & \texttt{SILSEQCOUNT} & \texttt{100} & Number of frames classified as silence needed to mark end of - utterance \\ \cline{2-4} - & \texttt{SILGLCHCOUNT} & \texttt{2} & Maximum number of frames marked as silence in window which is - classified as speech whilst expecting silence \\ \cline{2-4} - & \texttt{SILMARGIN} & \texttt{40} & Number of extra frames included before and after start and end of - speech marks from the speech/silence detector \\ \hline - -% HLabel - & \texttt{STRIPTRIPHONES} & \texttt{F} & Enable triphone stripping \\ \cline{2-4} - & \texttt{TRANSALT} & \texttt{0} & Filter all but specified label alternative \\ \cline{2-4} -\htool{HLabel} - & \texttt{TRANSLEV} & \texttt{0} & Filter all but specified label level \\ \cline{2-4} - & \texttt{LABELSQUOTE} & \texttt{NULL} & Select method for quoting in label files \\ \cline{2-4} - & \texttt{SOURCELABEL} & \texttt{HTK} & Source label format \\ \cline{2-4} - & \texttt{TARGETLABEL} & \texttt{HTK} & Target label format \\ \hline - -%\end{tabular} -%\end{center} -%\caption{Library Module Configuration Variables (cont)} -%\end{table} - -%\begin{table}[h] -%\begin{center} -%\begin{tabular}{|p{1.4cm}|p{2.6cm}|p{1.5cm}|p{6.6cm}|} \hline -%Module & Name & Default & Description \\ \hline\hline - -% HMem -\htool{HMem} & \texttt{PROTECTSTAKS} & \texttt{F} & Enable stack protection \\ \hline - - -% HModel - & \texttt{CHKHMMDEFS} & \texttt{T} & Check consistency of HMM defs \\ \cline{2-4} - & \texttt{SAVEBINARY} & \texttt{F} & Save HMM defs in binary format \\ \cline{2-4} - & \texttt{KEEPDISTINCT} & \texttt{F} & Keep orphan HMMs in distinct files \\ \cline{2-4} - & \texttt{SAVEGLOBOPTS} & \texttt{T} & Save \hmmt{o} with HMM defs \\ \cline{2-4} - & \texttt{SAVEREGTREE} & \texttt{F} & Save \hmmt{r} macros with HMM defs \\ \cline{2-4} -\htool{HModel} - & \texttt{SAVEBASECLASS} & \texttt{F} & Save \hmmt{b} macros with HMM defs \\ \cline{2-4} - & \texttt{SAVEINPUTXFORM} & \texttt{T} & Save \hmmt{i} macros with HMM defs \\ \cline{2-4} - & \texttt{ORPHANMACFILE} & \texttt{NULL} & Last resort file for new macros \\ \cline{2-4} - & \texttt{HMMSETKIND} & \texttt{NULL} & Kind of HMM Set \\ \cline{2-4} - & \texttt{ALLOWOTHERHMMS} & \texttt{T} & Allow MMFs to contain HMM definitions which are - not listed in the HMM List \\ \cline{2-4} - & \texttt{DISCRETELZERO} & \texttt{F} & Map DLOGZERO to LZERO in output probability - calculations \\ \hline - -% HNet - & \texttt{FORCECXTEXP} & \texttt{F} & Force triphone context expansion to get - model names (is overridden by \texttt{ALLOWCXTEXP}) \\ \cline{2-4} - & \texttt{FORCELEFTBI} & \texttt{F} & Force left biphone - context expansion to get model names ie. don't try triphone names \\ \cline{2-4} - & \texttt{FORCERIGHTBI} & \texttt{F} & Force right biphone - context expansion to get model names ie. don't try triphone names \\ \cline{2-4} -\htool{HNet} - & \texttt{ALLOWCXTEXP} & \texttt{T} & Allow context expansion to get model names \\ \cline{2-4} - & \texttt{ALLOWXWRDEXP} & \texttt{F} & Allow context expansion across words \\ \cline{2-4} - & \texttt{FACTORLM} & \texttt{F} & Factor language model likelihoods throughout words rather - than applying all at transition into word. This can increase accuracy when pruning is tight and - language model likelihoods are relatively high. \\ \cline{2-4} - & \texttt{CFWORDBOUNDARY} & \texttt{T} & In word-internal triphone systems, context-free - phones will be treated as word boundaries \\ \hline - -% HRec -\htool{HRec} - & \texttt{FORCEOUT} & \texttt{F} & Forces the most likely partial hypothesis to be used as - the recognition result even when no token reaches the end of the network by the last frame - of the utterance \\ \hline - -% HShell - & \texttt{ABORTONERR} & \texttt{F} & Causes HError to abort rather than exit \\ \cline{2-4} -\htool{HShell} & \texttt{NONUMESCAPES} & \texttt{F} & Prevent writing in \verb+012+ format \\ \cline{2-4} - & \texttt{MAXTRYOPEN} & \texttt{1} & Maximum number of - attempts which will be made to open the same file \\ \cline{2-4} - & \texttt{EXTENDFILENAMES} & \texttt{T} & Support for extended - filenames \\ \hline - - -% HTrain - & \texttt{MAXCLUSTITER} & \texttt{10} & Maximum number - of cluster iterations \\ \cline{2-4} -\htool{HTrain} & \texttt{MINCLUSTSIZE} & \texttt{3} & Minimum number - of elements in any one cluster \\ \cline{2-4} - & \texttt{BINARYACCFORMAT} & \texttt{T} & Save - accumulator files in binary format \\ \hline - -% HFB -\htool{HFB} & \texttt{HSKIPSTART} & \texttt{-1} & Start of skip over region (debugging only) \\ \cline{2-4} - & \texttt{HSKIPEND} & \texttt{-1} & End of skip over region (debugging only) \\ \hline - -% HFBLat - - & \texttt{MINFORPROB} & \texttt{10.0} & Mixture prunning threshold \\ \cline{2-4} - & \texttt{PROBSCALE} & \texttt{1.0} & Scaling factor for the state acoustic and language model probabilities \\ \cline{2-4} - & \texttt{LANGPROBSCALE} & \texttt{1.0} & Additional scaling factor for language model probabilities \\ \cline{2-4} - & \texttt{LATPROBSCALE} & \texttt{1.0} & Scaling factor for the lattice-arc and language model probabilities \\ \cline{2-4} - & \texttt{PHNINSPEN} & \texttt{0.0} & Insertion penalty for each phone \\ \cline{2-4} -\htool{HFBLat} & \texttt{NOSILENCE} & \texttt{F} & Ignore silence from reference transcription when using \emph{non-exact} MPE \\ \cline{2-4} - & \texttt{QUINPHONE} & \texttt{F} & Support quinphone model. Only available if compiled with the \texttt{SUPPORT\_QUINPHONE} directive \\ \cline{2-4} - & \texttt{EXACTCORRECTNESS} & \texttt{F} & Do \emph{exact} version of MPE/MWE \\ \cline{2-4} - & \texttt{PHONEMEE} & \texttt{T} & Set to \texttt{TRUE} for MPE or MWE \\ \cline{2-4} - & \texttt{CALCASERROR} & \texttt{F} & \\ \cline{2-4} - & \texttt{MWE} & \texttt{F} & Set to \texttt{TRUE} for MWE training \\ \cline{2-4} - & \texttt{MEECONTEXT} & \texttt{F} & Use context when calculating accuracies \\ \cline{2-4} - & \texttt{USECONTEXT} & \texttt{F} & Same as \texttt{MEECONTEXT} \\ \cline{2-4} - & \texttt{INSCORRECTNESS} & \texttt{-1} & Correctness of an inserted phone \\ \cline{2-4} - & \texttt{PDE} & \texttt{F} & Use partial distance elimination \\ \hline - -% HAdapt - & \texttt{USEBIAS} & \texttt{F} & Specify a bias with linear transforms \\ \cline{2-4} - & \texttt{SPLITTHRESH} & \texttt{1000.0} & Minimum occupancy to generate a transform \\ \cline{2-4} - & \texttt{TRANSKIND} & \texttt{{\tt MLLRMEAN}} & Transformation kind \\ \cline{2-4} - & \texttt{ADAPTKIND} & \texttt{{\tt BASE}} & Use regression tree or base classes \\ \cline{2-4} - & \texttt{BLOCKSIZE} & \texttt{full} & Block structure of transform\\ \cline{2-4} - & \texttt{BASECLASS} & \texttt{global} & Macroname of baseclass\\ \cline{2-4} - & \texttt{REGTREE} & \texttt{} & Macroname of regression tree\\ \cline{2-4} - \htool{HAdapt} & \texttt{MAXXFORMITER} & \texttt{10} & Maximum iterations for iteratively estimated transforms \\ \cline{2-4} - & \texttt{MLLRDIAGCOV} & \texttt{F} & Generate a diagonal variance transform with MLLR mean transform \\ \cline{2-4} - & \texttt{SAVESPKRMODELS} & \texttt{F} & Store the adapted model set in addition to the transforms \\ \cline{2-4} - & \texttt{KEEPXFORMDISTINCT} & \texttt{T} & Save transforms separate files rather than a TMF \\ \cline{2-4} - & \texttt{MAXSEMITIEDITER} & \texttt{10} & Maximum iterations of model/transform updates for semitied systems \\ \cline{2-4} - & \texttt{SEMITIEDMACRO} & \texttt{SEMITIED} & Macroname for the semitied transform\\ \cline{2-4} - & \texttt{SEMITIED2INPUTXFORM} & \texttt{F} & Store the semi-tied transform as an input xform\\ \cline{2-4} - & \texttt{INITNUISANCEFR} & \texttt{T} & Initialise nuisance dimensions using Fisher ratios\\ \cline{2-4} - & \texttt{NUMNUISANCEDIM} & 0 & Number of dimensions to remove using HLDA\\ \hline - - - -% HMap - & \texttt{MAPTAU} & \texttt{10} & $\tau$ for use with MAP estimation \\ \cline{2-4} - & \texttt{MINEGS} & \texttt{0} & Minimum observations to update state \\ \cline{2-4} - \htool{HMap} & \texttt{MINVAR} & 0 & minimum variance floor value \\ \cline{2-4} - & \texttt{MIXWEIGHTFLOOR} & 0 & MINMIX times this value is the prior floor \\ \hline - - & \texttt{HWAVEFILTER} & & Filter for waveform file input\\ \cline{2-4} - & \texttt{HPARMFILTER} & & Filter for parameter file input\\ \cline{2-4} - & \texttt{HLANGMODFILTER} & & Filter for language model file input\\ \cline{2-4} - & \texttt{HMMLISTFILTER} & & Filter for HMM list file input\\ \cline{2-4} - & \texttt{HMMDEFFILTER} & & Filter for HMM definition file input\\ \cline{2-4} - & \texttt{HLABELFILTER} & & Filter for Label file input\\ \cline{2-4} - & \texttt{HNETFILTER} & & Filter for Network file input\\ \cline{2-4} - & \texttt{HDICTFILTER} & & Filter for Dictionary file input \\ \cline{2-4} - & \texttt{LGRAMFILTER} & & Filter for gram file input\\ \cline{2-4} - & \texttt{LWMAPFILTER} & & Filter for word map file input\\ \cline{2-4} -\htool{HShell} & \texttt{LCMAPFILTER} & & Filter for class map file input\\ \cline{2-4} - & \texttt{LMTEXTFILTER} & & Filter for text file input\\ \cline{2-4} - & \texttt{HWAVEOFILTER} & & Filter for waveform file output\\ \cline{2-4} - & \texttt{HPARMOFILTER} & & Filter for parameter file output\\ \cline{2-4} - & \texttt{HLANGMODOFILTER}& & Filter for language model file output\\ \cline{2-4} - & \texttt{HMMLISTOFILTER} & & Filter for HMM list file output\\ \cline{2-4} - & \texttt{HMMDEFOFILTER} & & Filter for HMM definition file output\\ \cline{2-4} - & \texttt{HLABELOFILTER} & & Filter for Label file output\\ \cline{2-4} - & \texttt{HNETOFILTER} & & Filter for Network file output\\ \cline{2-4} - & \texttt{HDICTOFILTER} & & Filter for Dictionary file output \\ \cline{2-4} - & \texttt{LGRAMOFILTER} & & Filter for gram file output\\ \cline{2-4} - & \texttt{LWMAPOFILTER} & & Filter for word map file output\\ \cline{2-4} - & \texttt{LCMAPOFILTER} & & Filter for class map file -output\\ -\hline -\htool{LModel} & \texttt{RAWMITFORMAT}& \texttt{F} & Disable \HTK\ escaping for LM tools\\ \cline{2-4} - & \texttt{USEINTID} & \texttt{F} & Use 4 byte ID fields to save binary models \\ -\hline - - & \texttt{INWMAPRAW} & \texttt{F} & Disable \HTK\ escaping for input word lists and maps \\ \cline{2-4} -\htool{LWMap} & \texttt{OUTWMAPRAW} & \texttt{F} & Disable \HTK\ escaping for output word lists and maps \\ \cline{2-4} - & \texttt{STARTWORD} & {\tt } & Set sentence start symbol\\ \cline{2-4} - & \texttt{ENDWORD} & {\tt } & Set sentence end symbol\\ -\hline - - & \texttt{INCMAPRAW} & \texttt{F} & Disable \HTK\ escaping for input class lists and maps \\ \cline{2-4} -\htool{LCMap} & \texttt{OUTCMAPRAW} & \texttt{F} & Disable \HTK\ escaping for output class lists and maps \\ \cline{2-4} - & \texttt{UNKNOWNNAME}& {\tt !!UNK} & Set OOV class symbol\\ \cline{2-4} - & \texttt{UNKNOWNID} & \texttt{1} & Set unknown symbol class ID \\ -\hline - - & \texttt{UNIFLOOR} & {\tt 1} & Unigram floor count \\ \cline{2-4} -\htool{LPCalc} & \texttt{KRANGE} & {\tt 7} & Good-Turing discounting range \\ \cline{2-4} - & \texttt{\textit{n}G\_CUTOFF} & {\tt 1} & \textit{n}-gram cutoff - (eg. \texttt{2G\_CUTOFF})\\ \cline{2-4} - & \texttt{DCTYPE} & \texttt{TG} & Discounting type - (\texttt{TG} for Turing-Good or \texttt{ABS} for Absolute\\ -% or \texttt{LIN} for Linear) - this seems not to have been fully implemented (!) \\ -\hline -\htool{LGBase} & \texttt{CHECKORDER} & \texttt{F} & Check N-gram ordering in files \\ - -\htool{HLVLM} & \texttt{RAWMITFORMAT}& \texttt{F} & Disable \HTK\ escaping for LM tools\\ \hline -\htool{HLVRec} & \texttt{MAXLMLA} & off & Maximum jump in LM lookahead per model \\\cline{2-4} - & \texttt{BUILDLATSENTEND} & F & Build lattice from single token in the SENTEND node \\\cline{2-4} - & \texttt{FORCELATOUT} & T & Always output lattice, even when no token survived \\\cline{2-4} - & \texttt{GCFREQ} & 100 & Garbage collection period, unit is frame. \\\hline - -\end{supertabular} -\end{center} -%\caption{Library Module Configuration Variables (cont)} -%\end{table} -\clearpage - -\newpage -\mysect{Configuration Variables used in Tools}{conintools} - -\begin{center} -\tablecaption{Tool Specific Configuration Variables} -\tablehead{\hline -Module & Name & Default & Description \\ \hline\hline} -\tabletail{\hline} -\begin{supertabular}{|p{1.8cm}|l|l|p{6.6cm}|} - -% HCompV - & \texttt{UPDATEMEANS} & \texttt{F} & Update means \\ \cline{2-4} -\htool{HCompV} & \texttt{SAVEBINARY} & \texttt{F} & Load/Save in binary format \\ \cline{2-4} - & \texttt{MINVARFLOOR} & \texttt{0.0} & Minimum variance floor \\ \hline - -% HCopy - & \texttt{NSTREAMS} & \texttt{1} & Number of streams \\ \cline{2-4} - & \texttt{SAVEASVQ} & \texttt{F} & Save only the VQ indices \\ \cline{2-4} -\htool{HCopy} & \texttt{SOURCEFORMAT} & \texttt{HTK} & File format of source \\ \cline{2-4} - & \texttt{TARGETFORMAT} & \texttt{HTK} & File format of target \\ \cline{2-4} - & \texttt{SOURCEKIND} & \texttt{ANON} & Parameter kind of source \\ \cline{2-4} - & \texttt{TARGETKIND} & \texttt{ANON} & Parameter kind of target \\ \hline - -%HERest -\htool{HERest} - & \texttt{SAVEBINARY} & \texttt{F} & Load/Save in binary format \\ \cline{2-4} - & \texttt{BINARYACFORMAT} & \texttt{T} & Load/Save accumulators in binary format \\ \cline{2-4} - & \texttt{ALIGNMODELMMF} & & MMF file for alignment (2-model reest) \\ \cline{2-4} - & \texttt{ALIGNHMMLIST} & & Model list for alignment (2-model reest) \\ \cline{2-4} - & \texttt{ALIGNMODELDIR} & & Dir containing HMMs for alignment (2-model reest). \\ \cline{2-4} - & \texttt{ALIGNMODELEXT} & & Ext to be used with above Dir (2model-reest) \\ \cline{2-4} - & \texttt{ALIGNXFORMEXT} & & Input transform ext to be used with 2model-reest \\ \cline{2-4} - & \texttt{ALIGNXFORMDIR} & & Input transform dir to be used with 2model-reest \\ \cline{2-4} - & \texttt{INXFORMMASK} & & Input transform mask (default output transform mask) \\ \cline{2-4} - & \texttt{PAXFORMMASK} & & Parent transform mask (default output parent mask) \\ \cline{2-4} - & \texttt{UPDATEMODE} & & with \texttt{-p 0} choose mode: - \texttt{UDATE} update models (default), \texttt{DUMP} dump sum of - accumulators, \texttt{BOTH} do both\\ \cline{2-4} -\hline - -% HHEd -\htool{HHEd} & \texttt{TREEMERGE} & \texttt{T} & After tree splitting, merge leaves \\ \cline{2-4} - & \texttt{TIEDMIXNAME} & \texttt{TM} & Tied mixture base name \\ \cline{2-4} - & \texttt{APPLYVFLOOR} & \texttt{T} & Apply variance floor to model set \\ \cline{2-4} - & \texttt{USELEAFSTATS} & \texttt{T} & Use stats to obtain tied state pdf's \\ \cline{2-4} - & \texttt{MMFIDMASK} & * & Used with RC \htool{HHEd} command \\ - \hline - -% HMMIRest -& \texttt{VARFLOORPERCENTILE} & \texttt{0} & Maximum number of Gaussian components (as the percentage of the total Gaussian components in the system) to undergo variance floor \\ \cline{2-4} -& \texttt{C} & \texttt{1.0} & C value for both component weights and transition probabilities update \\ \cline{2-4} -& \texttt{CW} & \texttt{1.0} & C value for component weights update\\ \cline{2-4} -& \texttt{CT} & \texttt{1.0} & C value for transition probabilities update\\ \cline{2-4} -& \texttt{MINOCC} & \texttt{10} & Minimum occupancy counts for Gaussian means and variances \\ \cline{2-4} -& \texttt{MINOCCTRANS} & \texttt{10} & Minimum occupancy counts for transition probabilities \\ \cline{2-4} -& \texttt{MINOCCWEIGHTS} & \texttt{10} & Minimum occupancy counts for component weights \\ \cline{2-4} -& \texttt{SAVEBINARY} & \texttt{F} & Save HMM models in binary format \\ \cline{2-4} -& \texttt{E} & \texttt{2.0} & Scaling factor for the denominator counts to determine D-smoothing constant value \\ \cline{2-4} -\htool{HMMIRest} -& \texttt{DFACTOROCC} & \texttt{2.0} & Scaling factor for the D-smoothing constant value required to yield positive variances \\ \cline{2-4} -& \texttt{HCRIT} & \texttt{1.0} & Scaling factor for the denominator statistics \\ \cline{2-4} -& \texttt{MPE} & \texttt{F} & Use MPE criterion \\ \cline{2-4} -& \texttt{MWE} & \texttt{F} & Use MWE criterion \\ \cline{2-4} -& \texttt{MEE} & \texttt{F} & Use MWE criterion if MWE is set to \texttt{TRUE} for \htool{HFBLat}. Otherwise, use MPE criterion \\ \cline{2-4} -& \texttt{MLE} & \texttt{F} & Use MLE criterion \\ \cline{2-4} -& \texttt{MMIPRIOR} & \texttt{F} & Use dynamic MMI prior \\ \cline{2-4} -& \texttt{MMITAUI} & \texttt{0.0} & I-smoothing constant value for MMI prior \\ \cline{2-4} -& \texttt{ISMOOTHTAU} & \texttt{0.0} & I-smoothing constant value for Gaussian means and variances \\ \cline{2-4} -& \texttt{ICRITOCC} & \texttt{0.0} & Same as \texttt{ISMOOTHTAU} \\ \cline{2-4} -& \texttt{ISMOOTHTAUT} & \texttt{0.0} & I-smoothing constant value for transition probabilities \\ \cline{2-4} -& \texttt{ISMOOTHTAUW} & \texttt{0.0} & I-smoothing constant value for component weights \\ \cline{2-4} -& \texttt{PRIORTAU} & \texttt{0.0} & Prior smoothing constant value for Gaussian means and variances \\ \cline{2-4} -& \texttt{PRIORTAUW} & \texttt{0.0} & Prior smoothing constant value for component weights \\ \cline{2-4} -& \texttt{PRIORTAUT} & \texttt{0.0} & Prior smoothing constant value for transition probabilities \\ \cline{2-4} -& \texttt{STATICPRIOR} & \texttt{F} & Use a static prior for parameter estimation \\ \cline{2-4} -& \texttt{MIXWEIGHTFLOOR} & \texttt{2.0} & Component weights floor (as the number of times of \texttt{MINMIX}) \\ \cline{2-4} -& \texttt{LATFILEMASK} & \texttt{NULL} & Mask for lattice filename \\ \cline{2-4} -& \texttt{LATMASKNUM} & \texttt{NULL} & Mask for numerator lattice directory \\ \cline{2-4} -& \texttt{LATMASKDEN} & \texttt{NULL} & Mask for denominator lattice directory \\ \cline{2-4} -& \texttt{INXFORMMASK} & \texttt{NULL} & Speaker mask for loading input adaptation transforms \\ \cline{2-4} -& \texttt{PAXFORMMASK} & \texttt{NULL} & Speaker mask for loading parent adaptation transforms \\ \cline{2-4} -& \texttt{USELLF} & \texttt{F} & Load lattices in LLF format \\ \cline{2-4} - & \texttt{UPDATEMODE} & & with \texttt{-p 0} choose mode: - \texttt{UDATE} update models (default), \texttt{DUMP} dump sum of - accumulators, \texttt{BOTH} do both\\ \hline - -% HParse -\htool{HParse} & \texttt{V1COMPAT} & \texttt{F} & Enable compatibility with HTK V1.X \\ \hline - -% HResults - & \texttt{REFLEVEL} & \texttt{0} & Label level to be used as reference \\ \cline{2-4} - & \texttt{TESTLEVEL} & \texttt{0} & Label level to be scored \\ \cline{2-4} - & \texttt{STRIPCONTEXT} & \texttt{F} & Strip triphone contexts \\ \cline{2-4} -\htool{HResults} & \texttt{IGNORECASE} & \texttt{F} & If enabled, - converts labels to uppercase \\ \cline{2-4} - & \texttt{NISTSCORE} & \texttt{F} & Use NIST formatting \\ \cline{2-4} - & \texttt{PHRASELABEL} & \texttt{SENT} & Label for phrase level statistics \\ \cline{2-4} - & \texttt{PHONELABEL} & \texttt{WORD} & Label for word level statistics \\ \cline{2-4} - & \texttt{SPEAKERMASK} & \texttt{NULL} & If set then report on a per - speaker basis \\ \hline - -% HVite - & \texttt{RECOUTPREFIX} & \texttt{NULL} & Prefix for direct - audio output name \\ \cline{2-4} -\htool{HVite} & \texttt{RECOUTSUFFIX} & \texttt{NULL} & Suffix for direct audio output name\\ \cline{2-4} - & \texttt{SAVEBINARY} & \texttt{F} & Save transforms as binary \\ \hline - -% HLStats -\htool{HLStats} & \texttt{DISCOUNT} & \texttt{0.5} & Discount constant - for backoff bigrams\\ \hline - -% HList -\htool{HList} - & \texttt{AUDIOSIG} & \texttt{0} & Audio signal numberfor remote control - \\ \cline{2-4} - & \texttt{SOURCERATE} & \texttt{0.0} & Sample rate of source in 100ns units - \\ \hline - -% all - & \texttt{TRACE} & \texttt{0} & Trace setting\\ \hline - -\htool{HDecode} -& \texttt{USEHMODEL} & F & Use adaptation data structure and likelihood calculation routine of -\htool{HModel} \\\cline{2-4} - & \texttt{STARTWORD} & $<$s$>$ & Word used as the start of network \\\cline{2-4} - & \texttt{ENDWORD} & $<$/s$>$ & Word used as the end of network \\\cline{2-4} - & \texttt{FASTLMLABEAM} & off & Fast language model look ahead beam \\\hline - -\end{supertabular} -\end{center} -%\caption{Tool Specific Configuration Variables} -%\end{table} -\clearpage - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/decode.tex b/HTKBook/decode.tex deleted file mode 100644 index 4e0d5c2..0000000 --- a/HTKBook/decode.tex +++ /dev/null @@ -1,861 +0,0 @@ - -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{Decoding with \htool{HVite}}{decode} - -\sidepic{Tool.decode}{80}{ } -The previous chapter has described how to construct a recognition -network specifying what is allowed to be spoken and how -each word is pronounced. Given such a network, its associated -set of HMMs, and an unknown utterance, the probability of -any path through the network can be computed. The task of a -decoder is to find those paths which are the most likely.\index{decoder} - -As mentioned previously, decoding in \HTK\ is performed by a library -module called \htool{HRec}. \htool{HRec} uses the token passing -paradigm to find the best path and, optionally, multiple alternative -paths. In the latter case, it generates a lattice containing the -multiple hypotheses which can if required be converted to an N-best -list. To drive \htool{HRec} from the command line, \HTK\ provides a -tool called \htool{HVite}. As well as providing basic recognition, -\htool{HVite} can perform forced alignments, lattice rescoring and -recognise direct audio input. - -To assist in evaluating the performance -of a recogniser using a test database and a set of reference transcriptions, -\HTK\ also provides a tool called \htool{HResults} to compute word -accuracy and various related statistics. -The principles and use of these recognition facilities are described -in this chapter. - - -\mysect{Decoder Operation}{decop} - -\index{decoder!operation} -As described in Chapter~\ref{c:netdict} and illustrated by -Fig.~\href{f:recsys}, decoding in \HTK\ is controlled by a recognition -network compiled from a word-level network, a dictionary and a set of -HMMs. The recognition network consists of a set of nodes connected -by arcs. Each node is either a HMM model instance or a word-end. -Each model node is itself a network consisting of states connected by -arcs. Thus, once fully compiled, a recognition -network\index{recognition!network} ultimately -consists of HMM states connected by transitions. However, it can be -viewed at three different levels: word, model and state. -Fig.~\href{f:recnetlev} illustrates this hierarchy. - -\sidefig{recnetlev}{62}{Recognition Network Levels}{2}{ -For an unknown -input utterance with $T$ frames, every path from the start node to the -exit node of the network which passes through exactly $T$ emitting HMM -states is a potential recognition -hypothesis\index{recognition!hypothesis}. -Each of these paths has a log probability which is computed by summing -the log probability of each individual transition in the path and the -log probability of each emitting state generating the corresponding -observation. Within-HMM transitions are determined from the HMM -parameters, between-model transitions are constant and word-end -transitions are determined by the language model likelihoods attached -to the word level networks. - -The job of the decoder is to find those paths through the network -which have the highest log probability. These paths -are found using a \textit{Token Passing} algorithm. A token represents -a partial path through the network extending from time 0 through to time $t$. -At time 0, a token is placed in every possible start node. \index{token passing} -} - -Each time step, -tokens are propagated along connecting transitions stopping whenever they -reach an emitting HMM state. When there are multiple exits from a node, -the token is copied so that all possible paths are explored in parallel. -As the token passes across transitions and through nodes, its log probability -is incremented by the corresponding transition and emission probabilities. -A network node can hold at most $N$ tokens. Hence, at the end of each time step, -all but the $N$ best tokens in any node are discarded. - - -As each token passes through the network it must maintain a history -recording its route. The amount of detail in this history\index{token history} depends -on the required recognition output. Normally, only word sequences -are wanted and hence, only transitions out of word-end nodes\index{word-end nodes} need -be recorded. However, for some purposes, it is useful to know the -actual model sequence and the time of each model to model transition. -Sometimes a description of each path down to the state level -is required. All of this information, whatever level of detail is -required, can conveniently be represented using a lattice structure. - -Of course, the number of tokens allowed per node and the amount of -history information requested will have a significant impact on -the time and memory needed to compute the lattices. The most -efficient configuration is $N=1$ combined with just -word level history information and this is sufficient -for most purposes. - -A large network will have many nodes and one way to make a significant -reduction in the computation needed is to only propagate tokens which -have some chance of being amongst the eventual winners. This process -is called \textit{pruning}. It is implemented at each time step by -keeping a record of the best token overall and de-activating all -tokens whose log probabilities fall more than a \textit{beam-width} -below the best. For efficiency reasons, it is best to implement primary -pruning\index{pruning} at the model rather than the state level. Thus, models -are deactivated when they have no tokens in any state within the beam and -they are reactivated whenever active tokens are propagated into them. -State-level pruning is also implemented by replacing any token by a -null (zero probability) token if it falls outside of the beam. -If the pruning beam-width\index{beam width} is set too small then the most likely -path might be pruned before its token reaches the end of the utterance. -This results in a \textit{search error}. Setting the beam-width is -thus a compromise between speed and avoiding search errors. - -When using word loops with bigram probabilities, tokens emitted from -word-end nodes will have a language model probability added to them -before entering the following word. Since the range of language -model probabilities is relatively small, a narrower beam can be -applied to word-end nodes without incurring additional -search errors\index{search errors}. -This beam is calculated relative to the best word-end token and -it is called a \textit{word-end beam}. In the case, of a recognition -network with an arbitrary topology, word-end pruning may still be -beneficial but this can only be justified empirically. - -Finally, a third type of pruning control is provided. An upper-bound -on the allowed use of compute resource can be applied by setting -an upper-limit on the number of models in the network which can -be active simultaneously. When this limit is reached, the pruning -beam-width is reduced in order to prevent it being exceeded. - - -\mysect{Decoder Organisation}{decorg} - -The decoding process itself is performed by a set of core functions -provided within the library module \htool{HRec}\index{hrec@\htool{HRec}}. The process -of recognising a sequence of utterances is illustrated in -Fig.~\href{f:decflow}. - -\index{decoder!organisation} -The first stage is to create a \textit{recogniser-instance}. This is -a data structure containing the compiled recognition network and -storage for storing tokens. The point of encapsulating all of the -information and storage needed for recognition into a single object is -that \htool{HRec}\index{hrec@\htool{HRec}} is re-entrant and can support -multiple recognisers\index{multiple recognisers} -simultaneously. Thus, although this facility is not utilised in the -supplied recogniser \htool{HVite}\index{hvite@\htool{HVite}}, it does provide applications -developers with the capability to have multiple recognisers running -with different networks. - -Once a recogniser has been created, each unknown input is -processed by first executing a \textit{start recogniser} call, and then -processing each observation one-by-one. When all input observations -have been processed, recognition is completed by generating a lattice. -This can be saved to disk as a standard lattice format (SLF) file or -converted to a transcription. - -The above decoder organisation is extremely flexible and this is -demonstrated by the \HTK\ tool \htool{HVite} which is a simple -shell program designed to allow \htool{HRec} to be driven from -the command line. - -Firstly, input -control in the form of a recognition network allows three distinct modes -of operation - -\sidefig{decflow}{62}{Recognition Processing}{2}{ -\begin{enumerate} -\item \textit{Recognition} \\ -This is the conventional case in which the recognition network -is compiled from a task level word network.\index{decoder!recognition mode} - -\item \textit{Forced Alignment} \\ -In this case, the recognition network -is constructed from a word level transcription (i.e.\ orthography) -and a dictionary. The compiled network may include optional silences -between words and pronunciation variants. Forced alignment is often useful -during training to automatically derive phone level transcriptions. -It can also be used in automatic annotation systems. -\index{decoder!alignment mode} - -\item \textit{Lattice-based Rescoring} \\ -In this case, the input network is compiled from a lattice generated -during an earlier recognition run. This mode of operation can be -extremely useful for recogniser development since rescoring can be -an order of magnitude faster than normal recognition. The required -lattices are usually generated by a basic recogniser running with -multiple tokens, the idea being to generate a lattice containing both -the correct transcription plus a representative number of confusions. -Rescoring can then be used to quickly evaluate the performance of more -advanced recognisers and the effectiveness of new recognition techniques. -\index{decoder!rescoring mode} - -\end{enumerate} - -The second source of flexibility lies in the provision of multiple -tokens and recognition output -in the form of a lattice. In addition to providing a mechanism -for rescoring, lattice output can be used as a source of multiple -hypotheses either for further recognition processing or input -to a natural language processor. Where convenient, lattice output -can easily be converted into N-best lists. -} - -Finally, since \htool{HRec} is explicitly driven step-by-step at the -observation level, it allows fine control over the recognition process and a -variety of traceback and on-the-fly output possibilities. - -For application developers, \htool{HRec} and the \HTK\ library modules -on which it depends can be linked directly into applications. It -will also be available in the form of an industry standard API. However, -as mentioned earlier the \HTK\ toolkit -also supplies a tool called \htool{HVite} which is a shell program -designed to allow \htool{HRec} to be driven from the command line. -The remainder of this chapter will therefore explain the various facilities -provided for recognition from the perspective of \htool{HVite}. - -\mysect{Recognition using Test Databases}{hvrec} - -When building a speech recognition system or investigating speech -recognition algorithms, performance must be monitored by testing -on databases of test utterances for which reference transcriptions -are available. To use \htool{HVite} for this purpose it is -invoked with a command line of the form -\begin{verbatim} - HVite -w wdnet dict hmmlist testf1 testf2 .... -\end{verbatim} -where \texttt{wdnet} is an SLF file containing the word level network, -\texttt{dict} is the pronouncing dictionary and hmmlist contains -a list of the HMMs to use. The effect of this command is that -\htool{HVite} will use \htool{HNet} to compile the word level network -and then use \htool{HRec} to recognise each test file. The parameter kind -of these test files must match exactly with that used to train the HMMs. -For evaluation purposes, test files are normally stored in parameterised -form but only the basic static coefficients are saved on disk. For example, -delta parameters are normally computed during loading. As explained in -Chapter~\ref{c:speechio}, \HTK\ can perform a range of parameter conversions -on loading and these are controlled by configuration variables. Thus, -when using \htool{HVite}, it is normal to include a configuration file -via the \texttt{-C} option in which the required target parameter kind -is specified. Section~\ref{s:recaudio} below on processing direct -audio input explains the use of configuration files in more detail. -\index{decoder!evaluation} - -In the simple -default form of invocation given above, \htool{HVite} would -expect to find each HMM definition in a separate file in the current -directory and each -output transcription would be written to a separate file in the current directory. -Also, of course, there will typically be a large number of test files. - -In practice, it is much more convenient to store HMMs in master macro files (MMFs), -store transcriptions in master label files (MLFs) and list data files -in a script file. Thus, a more common form of the above invocation would -be -\begin{verbatim} - HVite -T 1 -S test.scp -H hmmset -i results -w wdnet dict hmmlist -\end{verbatim} -where the file \texttt{test.scp} contains the list of test file names, -\texttt{hmmset} is an MMF containing the HMM definitions\footnote{ -Large HMM sets will often be distributed across a number of MMF files, -in this case, the \texttt{-H} option will be repeated for each file.}, -and \texttt{results} is the MLF for storing the recognition output. - -\index{decoder!progress reporting} -As shown, it is usually a good idea to enable basic progress reporting -by setting the trace option as shown. This will cause the recognised -word string to be printed after processing each file. For example, -in a digit recognition task the trace output might look like -\begin{verbatim} - File: testf1.mfc - SIL ONE NINE FOUR SIL - [178 frames] -96.1404 [Ac=-16931.8 LM=-181.2] (Act=75.0) -\end{verbatim} -where the information listed after the recognised string is the total -number of frames in the utterance, the average -log probability\index{average log probability} per frame, -the total acoustic likelihood, the total language model likelihood and -the average number of active models.\index{decoder!trace output} - -The corresponding transcription -written to the output MLF form will contain an entry of the form -\index{decoder!output MLF} - -\begin{verbatim} - "testf1.rec" - 0 6200000 SIL -6067.333008 - 6200000 9200000 ONE -3032.359131 - 9200000 12300000 NINE -3020.820312 - 12300000 17600000 FOUR -4690.033203 - 17600000 17800000 SIL -302.439148 - . -\end{verbatim} -This shows the start and end time of each word and the total log probability. -The fields output by \htool{HVite} can be controlled using -the \texttt{-o}. For example, the option \texttt{-o ST} would suppress -the scores and the times to give -\begin{verbatim} - "testf1.rec" - SIL - ONE - NINE - FOUR - SIL - . -\end{verbatim} - -In order to use \htool{HVite} effectively and efficiently, it is important to -set appropriate values for its pruning\index{pruning} thresholds and the language model -scaling parameters. The main pruning beam is set by the \texttt{-t} option. -Some experimentation will be necessary to determine appropriate levels -but around 250.0 is usually a reasonable starting point. Word-end pruning -(\texttt{-v}) and the maximum model limit\index{maximum model limit} (\texttt{-u}) can also be set -if required, but these are not mandatory and their effectiveness will -depend greatly on the task. - -The relative levels of insertion -and deletion errors\index{deletion errors} -\index{insertion errors} can be controlled -by scaling the language model\index{language model scaling} likelihoods using the \texttt{-s} option -and adding a fixed \textit{penalty} using the \texttt{-p} option. -For example, setting \texttt{-s 10.0 -p -20.0} would mean that every language -model log probability $x$ would be converted to $10x - 20$ before being -added to the tokens emitted from the corresponding word-end node. As -an extreme example, setting \texttt{-p 100.0} -caused the digit recogniser above to output -\begin{verbatim} - SIL OH OH ONE OH OH OH NINE FOUR OH OH OH OH SIL -\end{verbatim} -where adding 100 to each word-end transition has resulted in a large number of -insertion errors. The word inserted is ``oh'' primarily because it is the -shortest in the vocabulary. -Another problem which may occur during recognition is the inability to arrive -at the final node in the recognition network after processing the whole -utterance. \index{forceout@\texttt{FORCEOUT}} The user is made aware of the -problem by the message ``No tokens survived to final node of network''. The -inability to match the data against the recognition network is usually caused -by poorly trained acoustic models and/or very tight pruning beam-widths. In -such cases, partial recognition results can still be obtained by setting the -\htool{HRec} configuration variable \texttt{FORCEOUT} true. -\index{partial results} The results will be based on the most likely partial -hypothesis found in the network. - -\mysect{Evaluating Recognition Results}{receval} - -\index{decoder!results analysis} -Once the test data has been processed by the recogniser, the next step is to -analyse the results. The tool \index{hresults@\htool{HResults}} -\htool{HResults} is provided for this purpose. \htool{HResults} compares -the transcriptions output by \htool{HVite} with the original reference -transcriptions and then outputs various statistics. \htool{HResults} matches -each of the recognised and reference label sequences by performing an optimal -string match\index{string matching} using dynamic programming. Except when -scoring word-spotter output as described later, it does not take any notice of -any boundary timing information stored in the files being compared. The -optimal string match works by calculating a score for the match with respect to -the reference such that identical labels match with score 0, a label insertion -carries a score of 7, a deletion carries a score of 7 and a substitution -carries a score of 10\footnote{The default behaviour of \htool{HResults} is -slightly different to the widely used US NIST scoring software which uses -weights of 3,3 and 4 and a slightly different alignment algorithm. Identical -behaviour to NIST can be obtained by setting the -n option.}. The optimal -string match is the label alignment which has the lowest possible score. - -Once the optimal alignment has been found, the number of substitution -errors ($S$), deletion errors ($D$) and insertion errors ($I$) can be -calculated. The percentage correct is then -\begin{equation} - \mbox{Percent Correct} = \frac{N-D-S}{N} \times 100\% -\end{equation} -where $N$ is the total number of labels in the reference transcriptions. -Notice that this measure ignores insertion errors. For many purposes, -the percentage accuracy defined as -\begin{equation} - \mbox{Percent Accuracy} = \frac{N-D-S-I}{N} \times 100\% -\end{equation} -is a more representative figure of -recogniser performance\index{recogniser performance}. - -\htool{HResults} outputs both of the above measures. As with all -\HTK\ tools it can process individual label files and files stored in MLFs. -Here the examples will assume that both reference and test transcriptions -are stored in MLFs. - -As an example of use, suppose that the MLF \texttt{results} contains -recogniser output transcriptions, \texttt{refs} contains -the corresponding reference transcriptions and \texttt{wlist} -contains a list of all labels appearing in these files. Then typing the command -\begin{verbatim} - HResults -I refs wlist results -\end{verbatim} -would generate something like the following -\begin{verbatim} - ====================== HTK Results Analysis ======================= - Date: Sat Sep 2 14:14:22 1995 - Ref : refs - Rec : results - ------------------------ Overall Results -------------------------- - SENT: %Correct=98.50 [H=197, S=3, N=200] - WORD: %Corr=99.77, Acc=99.65 [H=853, D=1, S=1, I=1, N=855] - =================================================================== -\end{verbatim} -The first part shows the date and the names of the files being used. -The line labelled \texttt{SENT} shows the total number of -complete sentences which were recognised correctly. The second line -labelled \texttt{WORD} -gives the -recognition statistics\index{recognition!statistics} for the individual words\footnote{ -All the examples here will assume that each label corresponds to a word -but in general the labels could stand for any recognition unit such as -phones, syllables, etc. \htool{HResults} does not care what the labels -mean but for human consumption, the labels \texttt{SENT} -and \texttt{WORD} can be changed using the \texttt{-a} and \texttt{-b} -options.}. - -It is often useful to visually inspect the -recognition errors\index{recognition!errors}. Setting the -\texttt{-t} option causes aligned test and reference transcriptions to -be output for all sentences containing errors. For example, a typical -output might be -\begin{verbatim} - Aligned transcription: testf9.lab vs testf9.rec - LAB: FOUR SEVEN NINE THREE - REC: FOUR OH SEVEN FIVE THREE -\end{verbatim} -here an ``oh'' has been inserted by the recogniser and ``nine'' -has been recognised as ``five'' - -If preferred, results output can be formatted in an identical -manner to NIST scoring software\index{NIST scoring software} by setting the {\tt -h} option. -For example, the results given above would appear as follows in -NIST format\index{NIST format} -\begin{verbatim} - ,-------------------------------------------------------------. - | HTK Results Analysis at Sat Sep 2 14:42:06 1995 | - | Ref: refs | - | Rec: results | - |=============================================================| - | # Snt | Corr Sub Del Ins Err S. Err | - |-------------------------------------------------------------| - | Sum/Avg | 200 | 99.77 0.12 0.12 0.12 0.35 1.50 | - `-------------------------------------------------------------' -\end{verbatim} - -When computing recognition results it is sometimes -inappropriate to distinguish certain labels. For example, to assess -a digit recogniser used for voice dialling it might be required to -treat the alternative vocabulary items ``oh'' and ``zero'' as being -equivalent. This can be done by making them equivalent using the -\texttt{-e} option, that is -\begin{verbatim} - HResults -e ZERO OH ..... -\end{verbatim} -If a label is equated to the special label \verb+???+, then it -is ignored. Hence, for example, if the recognition output had -silence marked by \texttt{SIL}, the setting the option -\verb+-e ??? SIL+ would cause all the \texttt{SIL} labels to be -ignored.\index{word equivalence} - -\htool{HResults} contains a number of other options. -Recognition statistics can be generated for each file -individually by setting the {\tt -f} option and a -confusion matrix\index{confusion matrix} -can be generated by setting the {\tt -p} option. -When comparing phone recognition results, \htool{HResults} will -strip any triphone contexts by setting the {\tt -s} option. -\htool{HResults} can also process N-best recognition output. -Setting the option \texttt{-d N} causes \htool{HResults} to -search the first \texttt{N} alternatives of each test output -file to find the most accurate match with the reference labels. - -When analysing the performance of a speaker independent recogniser -it is often useful to obtain accuracy figures on a per speaker basis. -This can be done using the option \texttt{-k mask} where \texttt{mask} -is a pattern used to extract -the speaker identifier\index{speaker identifier} from the test label file name. -The pattern consists of a string of characters which can include -the pattern matching metacharacters -\texttt{*} and \texttt{?} to match zero or more characters and a single character, -respectively. -The pattern -should also contain a string of one or more \texttt{\%} characters which -are used as a mask to identify the speaker identifier. - -For example, -suppose that the test filenames had the following structure -\begin{verbatim} - DIGITS_spkr_nnnn.rec -\end{verbatim} -where \texttt{spkr} is a 4 character speaker id and \texttt{nnnn} -is a 4 digit utterance id. Then executing \htool{HResults} by -\begin{verbatim} - HResults -h -k '*_%%%%_????.*' .... -\end{verbatim} -would give output of the form -\begin{verbatim} - ,-------------------------------------------------------------. - | HTK Results Analysis at Sat Sep 2 15:05:37 1995 | - | Ref: refs | - | Rec: results | - |-------------------------------------------------------------| - | SPKR | # Snt | Corr Sub Del Ins Err S. Err | - |-------------------------------------------------------------| - | dgo1 | 20 | 100.00 0.00 0.00 0.00 0.00 0.00 | - |-------------------------------------------------------------| - | pcw1 | 20 | 97.22 1.39 1.39 0.00 2.78 10.00 | - |-------------------------------------------------------------| - ...... - |=============================================================| - | Sum/Avg | 200 | 99.77 0.12 0.12 0.12 0.35 1.50 | - `-------------------------------------------------------------' -\end{verbatim} - -In addition to string matching, \htool{HResults} can also -analyse the results of a recogniser configured for word-spotting. -In this case, there is no DP alignment. Instead, each recogniser -label $w$ is compared with the reference transcriptions. -If the start and end times of $w$ lie either side of the mid-point -of an identical label in the reference, then that recogniser label -represents a \textit{hit}, otherwise it is a \textit{false-alarm} (FA). - -The recogniser output must include the log likelihood scores as -well as the word boundary information. \index{Figure of Merit} -These scores are used to compute the \textit{Figure of Merit} (FOM) -defined by NIST which is an upper-bound estimate on word spotting -accuracy averaged over 1 to 10 false alarms per hour. -The FOM\index{FOM} is calculated as follows where it is assumed that the -total duration of the test speech is $T$ hours. For each word, all of -the spots are ranked in score order. The percentage of true hits -$p_i$ found before the $i$'th false alarm is then calculated for -$i = 1 \ldots N+1$ where $N$ is the first integer $\ge 10T - 0.5$. -The figure of merit is then defined as -\hequation{ -\mbox{FOM} = \frac{1}{10T}(p_1 + p_2 + \ldots + p_N + a p_{N+1}) -}{nistfom} -where $a = 10T - N$ is a factor that interpolates to 10 false -alarms per hour. - -Word spotting analysis is enabled by setting the \texttt{-w} option -and the resulting output has the form -\begin{verbatim} - ------------------- Figures of Merit -------------------- - KeyWord: #Hits #FAs #Actual FOM - BADGE: 92 83 102 73.56 - CAMERA: 20 2 22 89.86 - WINDOW: 84 8 92 86.98 - VIDEO: 72 6 72 99.81 - Overall: 268 99 188 87.55 - --------------------------------------------------------- -\end{verbatim} -If required the standard time unit of 1 hour as used in the above -definition of FOM can be changed using the \texttt{-u option}. - - -\mysect{Generating Forced Alignments}{falign} - -\index{decoder!forced alignment} -\sidefig{hvalign}{55}{Forced Alignment}{-4}{ -\htool{HVite} can be made to compute forced alignments by not -specifying a network with the \texttt{-w} option but by specifying -the \texttt{-a} option instead. In this mode, \htool{HVite} -computes a new network for each input utterance using the word -level transcriptions and a dictionary. By default, the output -transcription will just contain the words and their boundaries. -One of the main uses of forced alignment\index{forced alignment}, -however, is to -determine the actual pronunciations used in the utterances -used to train the HMM system in this case, the \texttt{-m} -option can be used to generate model level output transcriptions. -} -This type of forced alignment is usually part of a \textit{bootstrap} -process, initially models are trained on the basis of one fixed -pronunciation per \index{hled@\htool{HLEd}} -\index{ex@\texttt{EX} command}word\footnote{ -The \htool{HLEd} \texttt{EX} command can be used to compute phone -level transcriptions when there is only one possible -phone transcription -per word}. -Then \htool{HVite} is used in forced alignment mode -to select the best matching pronunciations. The new phone level -transcriptions can then be used to retrain the HMMs. Since training -data may have leading and trailing silence, it is usually -necessary to insert a silence model at the start and end of the -recognition network. The \texttt{-b} option can be used to do this. - -As an illustration, executing -\begin{verbatim} - HVite -a -b sil -m -o SWT -I words.mlf \ - -H hmmset dict hmmlist file.mfc -\end{verbatim} -would result in the following sequence of events (see Fig.~\href{f:hvalign}). -The input file name \texttt{file.mfc} would have its extension replaced by -\texttt{lab} and then a label file of this name would be searched for. -In this case, the MLF file \texttt{words.mlf} has been loaded. -Assuming that this file contains a word level transcription called -\texttt{file.lab}, this transcription along with the dictionary \texttt{dict} -will be used to construct a network equivalent to \texttt{file.lab} -but with alternative pronunciations included in parallel. Since \texttt{-b} -option has been set, the specified \texttt{sil} model will be inserted -at the start and end of the network. The decoder then finds the best -matching path through the network and constructs a lattice which -includes model alignment information. Finally, the lattice is converted -to a transcription and output to the label file \texttt{file.rec}. -As for testing on a database, alignments will normally be computed on -a large number of input files so in practice the input files would be listed -in a \texttt{.scp} file and the output transcriptions would be written -to an MLF using the \texttt{-i} option. - -When the \texttt{-m} option is used, the transcriptions output by \htool{HVite} -would by default contain both the model level and -word level transcriptions -\index{transcriptions!word level}. -\index{transcriptions!model level} -\index{transcriptions!phone level} -For example, a typical fragment of the output might be -\begin{verbatim} - 7500000 8700000 f -1081.604736 FOUR 30.000000 - 8700000 9800000 ao -903.821350 - 9800000 10400000 r -665.931641 - 10400000 10400000 sp -0.103585 - 10400000 11700000 s -1266.470093 SEVEN 22.860001 - 11700000 12500000 eh -765.568237 - 12500000 13000000 v -476.323334 - 13000000 14400000 n -1285.369629 - 14400000 14400000 sp -0.103585 -\end{verbatim} -Here the score alongside each model name is the acoustic score for that segment. -The score alongside the word is just the language model score. - -Although the above information can be useful for some purposes, for example -in bootstrap training, only the model names are required. -The formatting option \texttt{-o SWT} in the above suppresses all output -except the model names.\index{decoder!output formatting} - -\mysect{Recognition using Direct Audio Input}{recaudio} - -\index{decoder!live input} -In all of the preceding discussion, it has been assumed that input was -from speech files stored on disk. These files would normally have -been stored in parameterised form so that little or no conversion -of the source speech data was required. When \htool{HVite} -is invoked with no files listed on the command line, it assumes that -input is to be taken directly from the audio input. In this case, -configuration variables must be used to specify firstly how the -speech waveform is to be captured and secondly, how the captured -waveform is to be converted to parameterised form. - -Dealing with waveform capture\index{waveform capture} first, as described in -section~\ref{s:audioio}, \HTK\ provides two main forms of control over speech -capture: signals/keypress and an automatic speech/silence -detector\index{speech/silence detector}. To use the speech/silence detector -alone, the configuration file would contain the following -\begin{verbatim} - # Waveform capture - SOURCERATE=625.0 - SOURCEKIND=HAUDIO - SOURCEFORMAT=HTK - USESILDET=T - MEASURESIL=F - OUTSILWARN=T - ENORMALISE=F -\end{verbatim} - -where the source sampling rate is being set to 16kHz. Notice that the -\texttt{SOURCEKIND}\index{sourcekind@\texttt{SOURCEKIND}} must be set to -\texttt{HAUDIO} and the \texttt{SOURCEFORMAT} must be set to -\texttt{HTK}. Setting the Boolean variable -\texttt{USESILDET}\index{usesildet@\texttt{USESILDET}} causes the -speech/silence detector to be used, and the -\texttt{MEASURESIL}\index{measuresil@\texttt{MEASURESIL}} -\texttt{OUTSILWARN}\index{outsilwarn@\texttt{OUTSILWARN}} -variables result in a measurement being taken of the background silence level -prior to capturing the first utterance. To make sure that each input utterance -is being captured properly, the \htool{HVite} option \texttt{-g} can be set to -cause the captured wave to be output after each recognition attempt. Note that -for a live audio input system, the configuration variable -\texttt{ENORMALISE} should be explicitly set to \texttt{FALSE} both when training models and when performing recognition. Energy normalisation cannot -be used with live audio input, and the default setting for this variable -is \texttt{TRUE}. - -As an alternative to using the speech/silence detector, a -signal\index{signals!for recording control} can be used to start and stop -recording. For example, -\begin{verbatim} - # Waveform capture - SOURCERATE=625.0 - SOURCEKIND=HAUDIO - SOURCEFORMAT=HTK - AUDIOSIG=2 -\end{verbatim} -would result in the Unix interrupt signal (usually the Control-C key) being -used as a start and stop control\footnote{ The underlying signal number must be -given, \HTK\ cannot interpret the standard Unix signal names such as -\texttt{SIGINT} }. Key-press control of the audio input can be obtained by -setting \texttt{AUDIOSIG} to a negative number. - -Both of the above can be used together, in this case, audio capture is disabled -until the specified signal is received. From then on control is in the hands -of the speech/silence detector. - -The captured waveform must be converted to the required -target parameter kind. Thus, the configuration file must define -all of the parameters needed to control the -conversion of the waveform to the required target kind. -This process is described in detail in Chapter~\ref{c:speechio}. -As an example, the following parameters would allow conversion -to Mel-frequency cepstral coefficients with delta and acceleration -parameters. -\begin{verbatim} - # Waveform to MFCC parameters - TARGETKIND=MFCC_0_D_A - TARGETRATE=100000.0 - WINDOWSIZE=250000.0 - ZMEANSOURCE=T - USEHAMMING = T - PREEMCOEF = 0.97 - USEPOWER = T - NUMCHANS = 26 - CEPLIFTER = 22 - NUMCEPS = 12 -\end{verbatim} -Many of these variable settings are the default settings -and could be omitted, they are included explicitly here as a reminder -of the main configuration options available. - -When \htool{HVite} is executed in direct audio input mode, -it issues a prompt prior to each input and it is normal to enable -basic tracing so that the recognition results can be seen. -A typical terminal output might be -\begin{verbatim} - READY[1]> - Please speak sentence - measuring levels - Level measurement completed - DIAL ONE FOUR SEVEN - == [258 frames] -97.8668 [Ac=-25031.3 LM=-218.4] (Act=22.3) - - READY[2]> - CALL NINE TWO EIGHT - == [233 frames] -97.0850 [Ac=-22402.5 LM=-218.4] (Act=21.8) - - etc -\end{verbatim} -If required, a transcription of each spoken input can be output -to a label file or an MLF in the usual way by setting the \texttt{-e} option. -However, to do this -a file name must be synthesised. This is done by using a counter -prefixed by the value of the -\htool{HVite} configuration variable -\texttt{RECOUTPREFIX}\index{recoutprefix@\texttt{RECOUTPREFIX}} and -suffixed by the value of \texttt{RECOUTSUFFIX} -\index{recoutsuffix@\texttt{RECOUTSUFFIX}}. -For example, with the settings -\begin{verbatim} - RECOUTPREFIX = sjy - RECOUTSUFFIX = .rec -\end{verbatim} -then the output transcriptions would be stored as -\texttt{sjy0001.rec}, \texttt{sjy0002.rec} etc. - - -\mysect{N-Best Lists and Lattices}{nbest} - -\index{decoder!N-best} -As noted in section~\ref{s:decop}, \htool{HVite} can generate -lattices\index{lattice generation} -and N-best\index{N-best} outputs. To generate an N-best list, the \texttt{-n} option -is used to specify the number of N-best tokens to store per state and -the number of N-best hypotheses to generate. The result is that -for each input utterance, a multiple alternative -transcription\index{multiple alternative transcriptions} is generated. -For example, setting \texttt{-n 4 20} with a digit -recogniser would generate an output of the form -\begin{verbatim} - "testf1.rec" - FOUR - SEVEN - NINE - OH - /// - FOUR - SEVEN - NINE - OH - OH - /// - - etc -\end{verbatim} - - -The lattices from which the N-best lists are generated can be output by setting -the option \texttt{-z ext}. In this case, a lattice called \texttt{testf.ext} will -be generated for each input test file \texttt{testf.xxx}. By default, these lattices -will be stored in the same directory as the test files, but they can be redirected -to another directory using the \texttt{-l} option. - -\index{output lattice format} -The lattices generated by \htool{HVite} have the following general form -\begin{verbatim} - VERSION=1.0 - UTTERANCE=testf1.mfc - lmname=wdnet - lmscale=20.00 wdpenalty=-30.00 - vocab=dict - N=31 L=56 - I=0 t=0.00 - I=1 t=0.36 - I=2 t=0.75 - I=3 t=0.81 - ... etc - I=30 t=2.48 - J=0 S=0 E=1 W=SILENCE v=0 a=-3239.01 l=0.00 - J=1 S=1 E=2 W=FOUR v=0 a=-3820.77 l=0.00 - ... etc - J=55 S=29 E=30 W=SILENCE v=0 a=-246.99 l=-1.20 -\end{verbatim} - -The first 5 lines comprise a header which records names of the files used to -generate the lattice along with the settings of the language model scale and -penalty factors. Each node in the lattice represents a point in time measured in -seconds and each arc represents a word spanning the segment of the input -starting at the time of its start node and ending at the time of its end node. -For each such span, \texttt{v} gives the number of the pronunciation used, -\texttt{a} gives the acoustic score and \texttt{l} gives the language model -score. - -The language model scores in output lattices do not include the scale factors -and penalties. These are removed so that the lattice can be used as a -constraint network for subsequent recogniser testing. When using \htool{HVite} -normally, the word level network file is specified using the \texttt{-w} -option. When the \texttt{-w} option is included but no file name is included, -\htool{HVite} constructs the name of a lattice file from the name of the test -file and inputs that. Hence, a new recognition network is created for each -input file and recognition is very fast. For example, this is an efficient way -of experimentally determining optimum values for the language -model scale\index{lattice!language model scale factor} and -penalty factors. - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/discmods.tex b/HTKBook/discmods.tex deleted file mode 100644 index 0012a77..0000000 --- a/HTKBook/discmods.tex +++ /dev/null @@ -1,443 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{Discrete and Tied-Mixture Models}{discmods} - -\sidepic{Tool.disc}{80}{ -Most of the discussion so far has focused on using \HTK\ -to model sequences of continuous-valued vectors. In contrast, this chapter -is mainly concerned with using \HTK\ to model sequences of discrete -symbols. -Discrete symbols arise naturally in modelling many types of -data, for example, letters and words, bitmap images, and DNA sequences. -Continuous signals can also be converted to discrete symbol sequences -by using a quantiser and in particular, speech vectors can be -\textit{vector quantised} as described in section~\ref{s:vquant}. -In all cases, \HTK\ expects a set of $N$ discrete symbols to be represented by -the contiguous sequence of integer numbers from 1 to $N$. -}\index{discrete HMMs} - -In \HTK\ discrete probabilities are regarded as being closely analogous -to the mixture weights of a continuous density system. As a consequence, -the representation and processing of discrete HMMs shares a great deal -with continuous density models. It follows from this that most of the -principles and practice developed already are equally applicable to -discrete systems. As a consequence, this chapter can be quite brief. - -The first topic covered concerns building HMMs for discrete -symbol sequences. The use of discrete HMMs with speech is then -presented. The tool \htool{HQuant} is described and the method -of converting continuous speech vectors to discrete symbols is -reviewed. This is -followed by a brief discussion of tied-mixture systems which can be -regarded as a compromise between continuous and discrete density systems. -Finally, the use of the \HTK\ tool \htool{HSmooth} for -parameter smoothing by deleted interpolation is presented. - -\mysect{Modelling Discrete Sequences}{discseq} - -Building HMMs for discrete symbol sequences is essentially the same -as described previously for continuous density systems. -Firstly, a prototype HMM definition must be specified in order -to fix the model topology. For example, the following -is a 3 state ergodic HMM in which the emitting states -are fully connected. -\begin{verbatim} - ~o 1 1 - ~h "dproto" - - 5 - 2 10 - 5461*10 - 3 10 - 5461*10 - 4 10 - 5461*10 - 5 - 0.0 1.0 0.0 0.0 0.0 - 0.0 0.3 0.3 0.3 0.1 - 0.0 0.3 0.3 0.3 0.1 - 0.0 0.3 0.3 0.3 0.1 - 0.0 0.0 0.0 0.0 0.0 - -\end{verbatim} -As described in chapter~\ref{c:HMMDefs}, the notation for discrete -HMMs borrows heavily on that used for continuous density models -by equating mixture components with symbol indices. Thus, -this definition assumes that each training data sequence contains -a single stream of symbols indexed from 1 to 10. In this example, -all symbols in each state have been set to be equally likely\footnote{ -Remember that discrete probabilities are scaled such that -32767 is equivalent to a probability of 0.000001 and 0 is -equivalent to a probability of 1.0 -}. If prior information is available then this can of course be used -to set these initial values. - -The training data needed to build a discrete HMM can take one of two forms. It -can either be discrete (\texttt{SOURCEKIND=DISCRETE}) in which case it consists -of a sequence of 2-byte integer symbol indices. Alternatively, it can consist -of continuous parameter vectors with an associated VQ codebook. This latter -case is dealt with in the next section. Here it will be assumed that the data -is symbolic and that it is therefore stored in discrete form.\index{discrete -data} Given a set of training files listed in the script file -\texttt{train.scp}, an initial HMM could be estimated using -\begin{verbatim} - HInit -T 1 -w 1.0 -o dhmm -S train.scp -M hmm0 dproto -\end{verbatim} -This use of \htool{HInit} is identical to that which would be -used for building whole word HMMs where no associated label file is -assumed and the whole of each training sequence is used to estimate -the HMM parameters. Its effect is to read in the prototype -stored in the file \texttt{dproto} and then use the training examples -to estimate initial values for the output distributions -and transition probabilities. This is done by firstly uniformly -segmenting the data and for each segment counting the number of occurrences -of each symbol. These counts are then normalised to provide output distributions -for each state. \htool{HInit} then uses the Viterbi algorithm to resegment -the data and recompute the parameters. This is repeated until convergence -is achieved or an upper limit on the iteration count is reached. -The transition probabilities at each step are estimated simply by -counting the number of times that each transition is made in the Viterbi alignments -and normalising. The final model is renamed \texttt{dhmm} and stored in -the directory \texttt{hmm0}. - -When building discrete HMMs, it is important to floor the discrete -probabilities so that no symbol has a zero probability. This is -achieved using the \texttt{-w} option which specifies a floor value -as a multiple of a global constant called \texttt{MINMIX} whose -value is $10^{-5}$. - -The initialised HMM created by \htool{HInit} -can then be further refined if desired by using \htool{HRest} -to perform Baum-Welch re-estimation. It would be invoked in a similar -way to the above except that there is now no need to rename the model. -For example, -\begin{verbatim} - HRest -T 1 -w 1.0 -S train.scp -M hmm1 hmm0/dhmm -\end{verbatim} -would read in the model stored in \texttt{hmm0/dhmm} and write out a new -model of the same name to the directory \texttt{hmm1}. - -\mysect{Using Discrete Models with Speech}{speechvq} - -As noted in section~\ref{s:vquant}, discrete HMMs can be used to model -speech by using a vector quantiser to map continuous density vectors into -discrete symbols. A vector quantiser depends on a so-called \textit{codebook} -which defines a set of partitions of the vector space. Each partition -is represented by the mean value of the speech vectors belonging -to that partition and optionally a variance representing the spread. -Each incoming speech vector is then -matched with each partition and assigned the index corresponding -to the partition which is closest using a Mahalanobis distance metric. - -In \HTK\ such a codebook can be built using the tool \htool{HQuant}. This tool -takes as input a set of continuous speech vectors, clusters them and uses -the centroid and optionally the variance of each cluster to define -the partitions. \htool{HQuant} can build both linear and tree structured -codebooks. To build a linear codebook, all training vectors are initially -placed in one cluster and the mean calculated. The mean is then perturbed -to give two means and the training vectors are partitioned according to -which mean is nearest to them. The means are then recalculated and the -data is repartitioned. At each cycle, the total distortion (i.e. total -distance between the cluster members and the mean) is recorded and repartitioning -continues until there is no significant reduction in distortion. The whole -process then repeats by perturbing the mean of the cluster with the highest -distortion. This continues until the required number of clusters have been -found. - -Since all training vectors are reallocated at every cycle, this is an -expensive algorithm to compute. The maximum number of iterations within -any single cluster increment can be limited using the configuration -variable \texttt{MAXCLUSTITER}\index{maxclustiter@\texttt{MAXCLUSTITER}} -and although this can speed-up the computation -significantly, the overall training process is still computationally expensive. -Once built, vector quantisation is performed by scanning all codebook -entries and finding the nearest entry. Thus, if a large codebook is used, -the run-time VQ look-up operation can also be expensive. - -As an alternative to building a linear codebook, a tree-structured codebook -can be used. The algorithm for this is essentially the same as above -except that every cluster is split at each stage so that the first cluster -is split into two, they are split into four and so on. At each stage, the -means are recorded so that when using the codebook for vector quantising -a fast binary search can be used to find the appropriate leaf cluster. -Tree-structured codebooks are much faster to build since there is no -repeated reallocation of vectors and much faster in use since only $O(\log_2 N)$ -distance need to be computed where $N$ is the size of the codebook. -Unfortunately, however, tree-structured codebooks will normally incur higher -VQ distortion for a given codebook size. - -When delta and acceleration coefficients are used, it is usually best -to split the data into multiple streams (see section~\ref{s:streams}. -In this case, a separate codebook is built for each stream. - -As an example, the following invocation of \htool{HQuant} would -generate a linear codebook in the file \texttt{linvq} using -the data stored in the files listed in \texttt{vq.scp}. -\begin{verbatim} - HQuant -C config -s 4 -n 3 64 -n 4 16 -S vq.scp linvq -\end{verbatim} -Here the configuration file \texttt{config} specifies the \texttt{TARGETKIND} -as being \texttt{MFCC\_E\_D\_A} i.e.\ static coefficients plus deltas plus -accelerations plus energy. The \texttt{-s} options requests that this -parameterisation be split into -4 separate streams. By default, each individual codebook has 256 entries, however, -the \texttt{-n} option can be used to specify alternative sizes. - -If a tree-structured codebook was wanted rather than a linear codebook, -the \texttt{-t} option would be set. -Also the default is to use Euclidean distances both for building the -codebook and for subsequent coding. Setting the \texttt{-d} option -causes a diagonal covariance Mahalanobis metric to be used and -the \texttt{-f} option causes a full covariance Mahalanobis metric -to be used. - -\index{hcopy@\htool{HCopy}} -\sidefig{vqtohmm}{55}{VQ Processing}{-4}{ -Once the codebook is built, normal speech vector files can be -converted to discrete files using \htool{HCopy}. -This was explained -previously in section~\ref{s:vquant}. The basic mechanism is to -add the qualifier \texttt{\_V} to the -\texttt{TARGETKIND}.\index{qualifiers!aaav@\texttt{\_V}} This causes -\htool{HParm} to append a codebook index to each constructed observation -vector. If the configuration variable \texttt{SAVEASVQ} is set true, then -the output routines in \htool{HParm} will discard the original vectors -and just save the VQ indices in a \texttt{DISCRETE} file. -Alternatively, \HTK\ will regard any speech vector with \texttt{\_V} set -as being compatible with discrete HMMs. Thus, it is not necessary -to explicitly create a database of discrete training files if -a set of continuous speech vector parameter files already exists. -Fig.~\href{f:vqtohmm} illustrates this process. -}\index{saveasvq@\texttt{SAVEASVQ}} -\index{targetkind@\texttt{TARGETKIND}} - -Once the training data has been configured for discrete HMMs, the -rest of the training process is similar to that previously described. -The normal sequence is to build a set of monophone models and then -clone them to make triphones. As in continuous density systems, -state tying can be used to improve the -robustness of the parameter estimates. However, in the case of discrete HMMs, -alternative methods based on interpolation are possible. These are discussed -in section~\ref{s:psmooth}. - -\mysect{Tied Mixture Systems}{tiedmix} - -\index{tied-mixtures} -Discrete systems have the advantage of low run-time computation. However, -vector quantisation reduces accuracy and this can lead to poor performance. -As a intermediate between discrete and continuous, a fully tied-mixture -system can be used. -Tied-mixtures are conceptually just another example of the general parameter tying -mechanism built-in to \HTK. However, to use them effectively in -speech recognition systems a number of storage and computational -optimisations must be made. Hence, they are given special treatment in \HTK. - -When specific mixtures are tied as in -\begin{verbatim} - TI "mix" {*.state[2].mix[1]} -\end{verbatim} -then a Gaussian mixture component is shared across all of the owners -of the tie. In this example, all models will share the same Gaussian -for the first mixture component of state 2. However, if the mixture -component index is missing, then all of the mixture components participating in -the tie are {\it joined} rather than tied. More specifically, the commands -\begin{verbatim} - JO 128 2.0 - TI "mix" {*.state[2-4].mix} -\end{verbatim} -has the following effect. All of the mixture components in states 2 to 4 of -all models are collected into a pool. If the number of components -in the pool exceeds 128, as set by the preceding join command -\texttt{JO}\index{jo@\texttt{JO} command}, then -components with the smallest weights are removed until the pool size is exactly -128. Similarly, if the size of the initial pool is less than 128, then mixture -components are split using the same algorithm as for the Mix-Up \texttt{MU} -command.\index{mixture tying} All states then share all of the -mixture components in this pool. The new mixture weights are chosen to be proportional -to the log probability of the corresponding new mixture component mean with -respect to the original distribution for that state. The log is used here -to give a wider spread of mixture weights. All mixture weights are floored -to the value of the second argument of the \texttt{JO} command times -\texttt{MINMIX}\index{minmix@\texttt{MINMIX}}. - -The net effect of the above two commands is to create a set of \texttt{tied-mixture} -HMMs\footnote{Also called {\it semi-continuous} HMMs in the the literature.} -where the same set of mixture components is shared across all states of -all models. However, the type of the HMM set so created will still be -\texttt{SHARED} and the internal representation will be the same as for -any other set of parameter tyings. To obtain the optimised representation -of the tied-mixture weights -described in section~\ref{s:tmix}, the following \htool{HHEd} -\texttt{HK}\index{hk@\texttt{HK} command} command must be issued -\begin{verbatim} - HK TIEDHS -\end{verbatim} -This will convert the internal representation to the special tied-mixture -form in which all of the tied mixtures are stored in a global table and -referenced implicitly instead -of being referenced explicitly using pointers. - -Tied-mixture HMMs work best if the information relating to different sources -such as delta coefficients and energy are separated into distinct data streams. -This can be done by setting up multiple data stream HMMs from the outset. -However, it is simpler to use the -\texttt{SS}\index{ss@\texttt{SS} command} -command in \htool{HHEd} to split the data streams of the currently loaded HMM set. -Thus, for example, the command -\begin{verbatim} - SS 4 -\end{verbatim} -would convert the currently loaded HMMs to use four separate data streams -rather than one. When used in the construction of tied-mixture HMMs -this is analogous to the use of multiple codebooks in discrete density -HMMs. - -The procedure for building a set of tied-mixture HMMs may be summarised -as follows\index{tied-mixtures!build procedure} -\begin{enumerate} -\item Choose a {\it codebook} size for each data stream and then - decide how many Gaussian components will be needed from an initial set of - monophones to approximately fill this codebook. - For example, suppose that there are 48 three state monophones. If - codebook sizes of 128 are chosen for streams 1 and 2, and - a codebook size of 64 is chosen for stream 3 then single Gaussian - monophones would provide enough mixtures in total to fill the codebooks. -\item Train the initial set of monophones. -\item Use \htool{HHEd} to first split the HMMs into the required number of - data streams, tie - each individual stream and then convert the tied-mixture HMM set to - have the kind \texttt{TIEDHS}. - A typical script to do this for four streams would be -\begin{verbatim} - SS 4 - JO 256 2.0 - TI st1 {*.state[2-4].stream[1].mix} - JO 128 2.0 - TI st2 {*.state[2-4].stream[2].mix} - JO 128 2.0 - TI st3 {*.state[2-4].stream[3].mix} - JO 64 2.0 - TI st4 {*.state[2-4].stream[4].mix} - HK TIEDHS -\end{verbatim} -\item Re-estimate the models using \htool{HERest} in the normal way. -\end{enumerate} -Once the set of retrained tied-mixture models has been produced, context -dependent models can be constructed using similar methods to those -outlined previously. - -When evaluating probabilities in tied-mixture systems, it is often -sufficient to sum just the most likely mixture components since for any -particular input vector, its probability with respect to many of the Gaussian -components will be very low.\index{pruning!in tied mixtures} -\HTK\ tools recognise \texttt{TIEDHS} -HMM sets as being special in the sense that additional optimisations -are possible. When full tied-mixtures are used, then an additional layer of pruning -is applied. At each time frame, the log probability of the current observation -is computed for each mixture component. Then only those components which lie within -a threshold of the most likely component are retained. This -pruning is controlled by the \texttt{-c} option in -\htool{HRest}, \htool{HERest} and \htool{HVite}. - -\mysect{Parameter Smoothing}{psmooth} - -When large sets of context-dependent triphones are built using -discrete models or -tied-mixture models, under-training\index{under-training} can be a -severe problem since each -state has a large number of mixture weight parameters to estimate. -The \HTK\ tool \htool{HSmooth} allows these discrete probabilities or -mixture component weights -to be smoothed with the monophone weights using a technique called -deleted interpolation\index{deleted interpolation}. - -\htool{HSmooth} is used in combination with \htool{HERest} -working in parallel mode. The training data is split -into blocks and each block is used separately to re-estimate the -HMMs. However, since \htool{HERest} is in parallel mode, it outputs a dump -file of accumulators instead of updating the models. \htool{HSmooth} is then -used in place of the second pass of \htool{HERest}. It reads in the -accumulator information from each of the blocks, performs deleted -interpolation smoothing on the accumulator values and then outputs -the re-estimated HMMs in the normal way. - -\htool{HSmooth}\index{hsmooth@\htool{HSmooth}} implements a -conventional deleted interpolation scheme. -However, optimisation of the smoothing weights uses a fast -binary chop\index{binary chop} scheme -rather than the more usual Baum-Welch approach. -The algorithm for finding the optimal interpolation weights for a given -state and stream is as follows where the description is given in terms -of tied-mixture weights but the same applies to discrete probabilities. - -Assume that \htool{HERest} -has been set-up to output $N$ separate blocks of accumulators. -Let $w_i^{(n)}$ be the $i$'th -mixture weight based on the accumulator blocks $1$ to $N$ but excluding -block $n$, and let $\bar{w}_i^{(n)}$ be the corresponding context -independent weight. Let $x_i^{(n)}$ be the $i$'th mixture weight -count for the deleted block $n$. The derivative of the log -likelihood of the deleted block, given the probability distribution with -weights $c_i = \lambda w_i + (1 - \lambda) \bar{w}_i$ is given by -\begin{equation} - D(\lambda) = \sum_{n=1}^N \sum_{i=1}^M x_i^{(n)} - \left[ \frac{w_i^{(n)} - \bar{w}_i^{(n)}}{ - \lambda w_i^{(n)} + (1 - \lambda ) \bar{w}_i^{(n)}} - \right] -\end{equation} -Since the log likelihood is a convex function of $\lambda$, this derivative -allows the optimal value of $\lambda$ to be found by a simple -binary chop algorithm, viz. -\begin{verbatim} - function FindLambdaOpt: - if (D(0) <= 0) return 0; - if (D(1) >= 0) return = 1; - l=0; r=1; - for (k=1; k<=maxStep; k++){ - m = (l+r)/2; - if (D(m) == 0) return m; - if (D(m) > 0) l=m; else r=m; - } - return m; -\end{verbatim} - -\htool{HSmooth} is invoked in a similar way to \htool{HERest}. -For example, suppose that the directory \texttt{hmm2} contains a set of -accumulator files output by the first pass of \htool{HERest} running in parallel -mode using as source the HMM definitions listed in \texttt{hlist} and -stored in \texttt{hmm1/HMMDefs}. Then the command -\begin{verbatim} - HSmooth -c 4 -w 2.0 -H hmm1/HMMDefs -M hmm2 hlist hmm2/*.acc -\end{verbatim} -would generate a new smoothed HMM set in \texttt{hmm2}. Here the \texttt{-w} -option is used to set the minimum mixture component weight in any state to -twice the value of \texttt{MINMIX}\index{minmix@\texttt{MINMIX}}. -The \texttt{-c} option sets the maximum -number of iterations of the binary chop procedure to be 4. - - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/errors.tex b/HTKBook/errors.tex deleted file mode 100644 index 98907c6..0000000 --- a/HTKBook/errors.tex +++ /dev/null @@ -1,1583 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Julian Odell and Steve Young 15/11/95 -% -% This chapter added to by Gareth Moore 17/01/02 - -\mychap{Error and Warning Codes}{errors} -\index{errors!full listing}\index{warning codes!full listing} - -When a problem occurs in any \HTK\ tool, either -error\index{error message!format} -or warning messages\index{warning message!format} are printed. - -If a warning occurs then a message is sent to standard output and -execution continues. The format of this warning message is as follows: -\begin{verbatim} - WARNING [-nnnn] Function: 'Brief Explanation' in HTool -\end{verbatim} - -The message consists of four parts. On the first line is the tool -name and the error number\index{error number!structure of}. Positive -error numbers are fatal, whilst negative numbers are warnings and -allow execution to continue. On the second line is the function in -which the problem occurred and a brief textual explanation. The -reason for sending warnings to standard output is so that they are -synchronised with any trace output. - -If an error occurs a number of error messages may be produced on -standard error. Many of the functions in the \HTK\ Library do not exit -immediately when an error condition occurs, but instead print a message and return a failure -value back to their calling function. This process may be repeated several -times. When the \HTK\ Tool that called the function receives the failure -value, it exits the program with a fatal error message. Thus the -displayed output has a typical format as follows: - -\begin{verbatim} - ERROR [+nnnn] FunctionA: 'Brief explanation' - ERROR [+nnnn] FunctionB: 'Brief explanation' - ERROR [+nnnn] FunctionC: 'Brief explanation' - FATAL ERROR - Terminating program HTool -\end{verbatim} - -Error numbers in \HTK\ are allocated on a module by module -and tool by tool basis in blocks of 100 as shown by the table shown -overleaf. -Within each block of 100 numbers the first 20 (0 - 19) -and the final 10 (90-99) are reserved for standard types -of error which are common to all tools and library -modules. - -All other codes are module or tool specific. - -\mysect{Generic Errors}{generr} - -\begin{itemize} -\erno{+??00} Initialisation failed \\ - The initialisation procedure for the tool produced an - error. This could be due to errors in the command line - arguments or configuration file. -\erno{+??01} Facility not implemented \\ - HTK does not support the operation requested. - -\erno{+??05} Available memory exhausted \\ - The operation requires more memory than is available. -\erno{+??06} Audio not available \\ - The audio device is not available, either there is no driver for - the current machine, the library was compiled with \texttt{NO\_AUDIO} - set or another process has exclusive access to the audio device. - -\begin{center} -\begin{tabular}{|c|c|c|c|} -\hline -HCopy & 1000-1099 & HShell & 5000-5099 \\ -HList & 1100-1199 & HMem & 5100-5199 \\ -HLEd & 1200-1299 & HMath & 5200-5299 \\ -HLStats & 1300-1399 & HSigP & 5300-5399 \\ -HDMan & 1400-1499 & & \\ -HSLab & 1500-1599 & HAudio & 6000-6099 \\ - & & HVQ & 6100-6199 \\ - & & HWave & 6200-6299 \\ -HCompV & 2000-2099 & HParm & 6300-6399 \\ -HInit & 2100-2199 & HLabel & 6500-6599 \\ -HRest & 2200-2299 & & \\ -HERest & 2300-2399 & HGraf & 6800-6899 \\ -HSmooth & 2400-2499 & & \\ -HQuant & 2500-2599 & HModel & 7000-7099 \\ -HHEd & 2600-2699 & HTrain & 7100-7199 \\ - & & HUtil & 7200-7299 \\ - & & HFB & 7300-7399 \\ - & & HAdapt & 7400-7499 \\ -HBuild & 3000-3099 & & \\ -HParse & 3100-3199 & HDict & 8000-8099 \\ -HVite & 3200-3299 & HLM & 8100-8199 \\ -HResults & 3300-3399 & HNet & 8200-8299 \\ -HSGen & 3400-3499 & HRec & 8500-8599 \\ -HLRescore& 4000-4100 & HLat & 8600-8699 \\ -\hline -LCMap & 15000-15099 & LAdapt & 16400-16499 \\ -LWMap & 15100-15199 & LPlex & 16600-16699 \\ -LUtil & 15200-15299 & HLMCopy & 16900-16999 \\ -LGBase & 15300-15399 & Cluster & 17000-17099 \\ -LModel & 15400-15499 & LLink & 17100-17199 \\ -LPCalc & 15500-15599 & LNewMap & 17200-17299 \\ -LPMerge & 15600-15699 & & \\ -\hline -\end{tabular} -\end{center} - -\erno{+??10} Cannot open file for reading \\ - Specified file could not be opened for reading. The file may not - exist or the filter through which it is read may not be set correctly. -\erno{+??11} Cannot open file for writing \\ - Specified file could not be opened for writing. The directory may - not exist or be writable by the user or the filter through which the - file is written may not be set correctly. -\erno{+??13} Cannot read from file \\ - Cannot read data from file. The file may have been truncated, - incorrectly formatted or the filter process may have died. -\erno{+??14} Cannot write to file \\ - Cannot write data to file. The file system is full or the filter - process has died. - -\erno{+??15} Required function parameter not set \\ - You have called a library routine without setting one of the arguments. -\erno{+??16} Memory heap of incorrect type \\ - Some library routines require you to pass them a heap of a particular - type. - -\erno{+??19} Command line syntax error \\ - The command line is badly formed, refer to the manual or the command - summary printed when the command is executed without arguments. - -\erno{+??9?} Sanity check failed \\ - Several functions perform checks that structures are self consistent - and that everything is functioning correctly. When these sanity checks - fail they indicate the code is not functioning as intended. These - errors should not occur and are not correctable by the user. -\end{itemize} - -\mysect{Summary of Errors by Tool and Module}{errsum} - -\begin{itemize} - -\module{\htool{HCopy}} - -\begin{itemize} -\erno{+1030} Non-existent part of file specified\\ - \htool{HCopy} needed to access a non-existent part of the input file. - Check that the times are specified correctly, that the label file - contains enough labels and that it corresponds to the data file. - -\erno{\pm 1031} Label file formatted incorrectly\\ - \htool{HCopy} is only able to properly copy label files with the - same number of levels/alternatives. When using labels with multiple - alternatives only the first one is used to determine segment - boundaries. - -\erno{+1032} Appending files of different type/size/rate\\ - Files that are joined together must have the same parameter kind and - sample rate. - -\erno{-1089} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HList}} - -\module{\htool{HLEd}} - -\begin{itemize} -\erno{+1230} Edit script syntax error\\ - The \htool{HLEd} command script contains a syntax error, check the - input script against the descriptions of each command in - section~\ref{s:HLEd} or obtained by running \texttt{HLEd -Q}. - -\erno{\pm 1231} Operation invalid\\ - You have either exceeded \htool{HLEd} limits on the number of - boundaries that can be specified, tried to perform an operation on - a non-existent level or tried to sort an auxiliary level into time - order. None of these operations are supported. - -\erno{+1232} Cannot find pronunciation\\ - The dictionary does not contain a valid pronunciation (only occurs - when attempting expansion from a dictionary). - -\erno{-1289} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HLStats}} - -\begin{itemize} -\erno{+1328} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{\pm 1330} No operation specified\\ - You have invoked \htool{HLStats} but have not specified an operation - to be performed. - -\erno{-1389} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HDMan}} - -\begin{itemize} -\erno{\pm 1430} Limit exceeded\\ - \htool{HDMan} has several built in limits on the number of different - pronunciation, phones, contexts and command arguments. This error - occurs when you try to exceed one of them. - -\erno{\pm 1431} Item not found\\ - Could not find item for deletion. Check that it actually occurs in the - dictionary. - -\erno{\pm 1450} Edit script file syntax error\\ - The \htool{HDMan} command script contains a syntax error, check the - input script against the descriptions of each command in - section~\ref{s:HDMan} or obtained by running \texttt{HDMan -Q}. - -\erno{\pm 1451} Dictionary file syntax error\\ - One of the input dictionaries contained a syntax error. Ensure that - it is in a \HTK\ readable form (see section~\ref{s:usehdman}). - -\erno{\pm 1452} Word out of order in dictionary error\\ - Entries in the dictionary must be sorted into alphabetical (ASCII) order. - -\end{itemize} - -\module{\htool{HSLab}} - -\begin{itemize} -\erno{-1589} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HCompV}} - -\begin{itemize} -\erno{+2020} HMM does not appear in HMMSet\\ - Supplied HMM filename does not appear in HMMSet. Check - correspondence between HMM filename and HMMSet. - -\erno{+2021} Not enough data to calculate variance\\ - There are not enough frames of data to evaluate a - reliable estimate of variance. Use more data. - -\erno{+2028} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+2030} Needs continuous models\\ - HCompV can only operate on models with an HMM set kind - of \texttt{PLAINHS} or \texttt{SHAREDHS}. - -\erno{+2039} Speaker pattern matching failure\\ - The specified speaker pattern could not be matched against a - given utterance file name. - -\erno{+2050} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\erno{-2089} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HInit}} - -\begin{itemize} -\erno{+2120} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2121} Too little data\\ - Not enough data to reliably estimate parameters. Use more - training data. - -\erno{+2122} Segment with fewer frames than model states\\ - Segment may be too short to be matched to model, do not use - this segment for training. - -\erno{+2123} Cannot mix covariance kind in a single mix\\ - Covariance kind of all mixture components in any one state must be - the same. - -\erno{+2124} Bad covariance kind\\ - Covariance kind of mixture component must be either - \texttt{FULLC} or \texttt{DIAGC}. - -\erno{+2125} No best mix found\\ - The Viterbi mixture component allocation failed to find a most likely - component with this data. Check that data is not corrupt and - that parameter values produced by the initial uniform segmentation - are reasonable. - -\erno{+2126} No path through segment\\ - The Viterbi segmentation failed to find a path through - model with this data. Check that data is not corrupt and that - a valid path exists through the model. - -\erno{+2127} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{+2128} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+2129} HMM not found\\ - HMM missing from HMMSet. Check that the HMMSet is complete and - has not been corrupted. - -\erno{+2150} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\erno{+2170} Index out of range\\ - Trying to access a mixture component or VQ index beyond the - range in the current HMM. - -\erno{-2189} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HRest}} - -\begin{itemize} -\erno{+2220} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2221} Too few training examples\\ - There are fewer training examples than the minimum set by the - \texttt{-m} option (default 3). Either reduce the value specified - by \texttt{-m} or use more training examples. - -\erno{+2222} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{+2223} Floor too high\\ - Mix weight floor has been set so high that the sum over all - mixture components exceeds unity. Reduce the floor value. - -\erno{-2225} Defunct Mix X.Y.Z \\ - Not enough training data to re-estimate the covariance vector of - mixture component Z in stream Y of state X. The weight of the mixture - component is set to 0.0 and it will never recover even with further - training. - -\erno{+2226} No training data\\ - None of the supplied training data could be used to - re-estimate the model. Data may be corrupt or has been floored. - -\erno{+2228} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+2250} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\erno{-2289} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HERest}} - -\begin{itemize} -\erno{+2320} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2321} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{-2326} No transitions\\ - No transition out of an emitting state, ensure that - there is a transition path from beginning to end of model. - -\erno{+2327} Floor too high\\ - Mix weight floor has been set so high that the sum over all - mixture components exceeds unity. Reduce the floor value. - -\erno{+2328} No mixtures above floor\\ - None of the mixture component weights are greater than the floor value, - reduce the floor value. - -\erno{-2330} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{-2331} Not enough training examples\\ - Model was not updated as there were not enough training examples. - Either reduce the minimum specified by \texttt{-m} or - use more data. - -\erno{-2389} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HSmooth}} - -\begin{itemize} -\erno{+2420} Unknown update flag\\ - Unknown flag set by \texttt{-u} option, use combinations of - \texttt{tmvw}. - -\erno{+2421} Invalid HMM set kind\\ - \htool{HSmooth} can only be used if HMM set kind is either - \texttt{DISCRETE} or \texttt{TIED}. - -\erno{+2422} Too many monophones in list\\ - \htool{HSmooth} is limited to HMMSets containing fewer than - 500 monophones. - -\erno{+2423} Different number of states for smoothing\\ - Monophones and context-dependent models have differing - numbers of states. - -\erno{-2424} No transitions\\ - No transition out of an emitting state, ensure that - there is a transition path from beginning to end of model. - -\erno{+2425} Floor too high\\ - Mix weight floor has been set so high that the sum over all - mixture components exceeds unity. Reduce the floor value. - -\erno{-2427} Zero occurrence count\\ - Parameter has had no data assigned to it and cannot be - updated. Ensure that each parameter can be estimated by - using more training data or fewer parameters. - -\erno{-2428} Not enough training examples\\ - Model was not updated as there were not enough training examples. - Either reduce the minimum specified by \texttt{-m} or - use more data. - -\erno{+2429} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\end{itemize} - -\module{\htool{HQuant}} - -\begin{itemize} -\erno{+2530} Stream widths invalid\\ - The chosen stream widths are invalid. Check that these match the - parameter kind and are specified correctly. - -\erno{+2531} Data does not match codebook\\ - Ensure that the parameter kind of the data matches that of the codebook - being generated. - -\end{itemize} - -\module{\htool{HHEd}} - -\begin{itemize} - -\erno{+2628} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{\pm 2630} Tying null or different sized items\\ - You have executed a tie command on items which do not have the - appropriate structure or the structures are not matched. Ensure - that the item list refers only to the items that you wish to tie - together. - -\erno{-2631} Performing operation on no items\\ - The item list was empty, no operation is performed. - -\erno{+2632} Command parameter invalid\\ - The parameters to the command are invalid either because they - refer to parts of the model that do not exist (for instance a - state that does not appear in the model) or because they - do not represent an acceptable value (for instance HMMSet kind - is not \texttt{PLAINHS}, \texttt{SHAREDHS}, \texttt{TIEDHS} or - \texttt{DISCRETEHS}). - -\erno{+2634} Join parameters invalid or not set\\ - Make sure than the join parameters (set by the \texttt{JO} command) - are reasonable. In particular take care that the floor is low enough - to ensure that when summed over all the mixture - components the sum is below 1.0. - -\erno{+2635} Cannot find matching item\\ - Search for specified item was unsuccessful. When this occurs with - the \texttt{CL} or \texttt{MT} commands ensure that the appropriate - monophone/biphone models are in the current HMMSet. - -\erno{-2637} Small gConst\\ - A small gConst indicates a very low variance in that particular - Gaussian. This could be indicative of over-training of the models. - -\erno{-2638} No typical state\\ - When tying states together a search is performed for the distribution - with largest variance and all tied states share this distribution. If - this cannot be found the first in the list will be used instead. - -\erno{-2639} Long macro name\\ - In general macro names should not exceed 20 characters in length. - -\erno{+2640} Not implemented\\ - You have asked \htool{HHEd} to perform a function that is not - implemented. - -\erno{+2641} Invalid stream split\\ - The specified number/width of the streams does not agree with the - parameter kind/vector size of the models. - -\erno{+2650} Edit script syntax error\\ - The \htool{HHEd} command script contains a syntax error, check the - input script against the descriptions of each command in - section~\ref{s:HHEd} or obtained by running \texttt{HHEd -Q}. - -\erno{+2651} Command range error\\ - The value specified in the command script is out of range. Ensure that - the specified state exists and the the value given is valid. - -\erno{\pm 2655} Stats file load error\\ - Either loading occupation statistics for the second time or executing - an operation that needs the statistics loaded without loading them. - -\erno{+2660} Trees file syntax error\\ - The trees file format did not correspond to that expected. Ensure that - the file is complete and has not been corrupted. - -\erno{+2661} Trees file macro/question not recognised\\ - The question or macro referred to does not exist. Ensure that the file - is complete and has not been corrupted. - -\erno{+2662} Trying to synthesize for unknown model\\ - There is no tree or prototype model for the new context. Ensure that a - tree has been constructed for the base phone. - -\erno{\pm 2663} Invalid types to tree cluster\\ - Tree clustering will only work for single Gaussian diagonal - covariance untied models of similar topology. - -\end{itemize} - -\module{\htool{HBuild}} - -\begin{itemize} -\erno{\pm 3030} Mismatch between command line and language model\\ - Ensure that the \texttt{!ENTER} and \texttt{!EXIT} words are correctly - defined and that the supplied files are of the appropriate type. - -\erno{\pm 3031} Unknown word\\ - Ensure that the word list corresponds to the language model/lattice - supplied. - -\end{itemize} - -\module{\htool{HParse}} - -\begin{itemize} -\erno{\pm 3130} Variable not defined\\ - You have referenced a network that has not yet been defined. Check - that all networks are defined before they are referenced. - -\erno{\pm 3131} Loop or word expansion error\\ - There is either a mismatch between the \texttt{WD\_BEGIN WD\_END} - pairs or a triphone loop is badly formed. - -\erno{\pm 3132} Dictionary error\\ - When generating a dictionary a word exceeded the maximum number of - phones, a word occurred twice or no dictionary was produced. - -\erno{\pm 3150} Syntax error in HParse file\\ - The \htool{HParse} network definition contains a syntax error, check - the input file against the network description in - section~\ref{s:HParse}. - -\end{itemize} - -\module{\htool{HVite}} - -\begin{itemize} - -\erno{+3228} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{\pm 3230} Unsupported operation\\ - \htool{HVite} is not able to perform the operation requested - -\erno{\pm 3231} Data does not match HMMs\\ - There is a mismatch between the data file and the HMMSet. Ensure that - the data is parameterised in the correct format and the configuration - parameters match those used during training. - -\erno{+3232} MMF Load Error\\ - The HMMSet does not contain a well-formed regression class tree. - -\erno{+3233} Transcription empty\\ - In alignment mode a segment had an empty transcription and no - boundary word was specified. - -\erno{-3289} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HResults}} - -\begin{itemize} -\erno{-3330} Empty file\\ - The file was empty and will be skipped. - -\erno{+3331} Unknown label\\ - The label did not appear in the list supplied to HResults. - This error will only occur if calculating confusion matrices so - normally the contents of the word list file will have no effect - on results. - -\erno{+3332} Too many labels\\ - \htool{HResults} will only generate confusion statistics for a small - number of labels. - -\erno{\pm 3333} Cannot calculate word spot results\\ - When calculating word spotting results the label files need to have - both times and scores present. - -\erno{-3389} ALIEN format set\\ - Input format has been set to \texttt{ALIEN}, ensure that this was - intended. - -\end{itemize} - -\module{\htool{HSGen}} - -\begin{itemize} -\erno{-3420} Network malformed\\ - The word network is malformed. The information in a node (word - and following arcs) is set incorrectly. - -\end{itemize} - -\module{\htool{HLRescore}} - -\begin{itemize} - -\erno{-4089} ALIEN format set\\ - Input/output format has been set to \texttt{ALIEN}, ensure that - this was intended. - -\end{itemize} - -\module{\htool{HShell}} - -\begin{itemize} -\erno{+5020} Command line processing error -\erno{+5021} Command line argument type error -\erno{+5022} Command line argument range error\\ - The command line is badly formed. Ensure that it matches the - syntax and values expected by the command (check the manual - page or the syntax obtained by running \htool{HTool} without any - arguments). - -\erno{+5050} Configuration file format error\\ - \htool{HShell} was unable to parse the configuration. Check that - it is of the format described in section~\ref{s:config}. - -\erno{+5051} Script file format error\\ - Check that the script file is just a list of file names and that - if any file names are quoted that the quotes occur in pairs. - -\erno{+5070} Module version syntax error\\ - A module registered with HShell with an incorrectly formatted - version string (which should be of the form - \texttt{"!HVER!HModule: Vers.str [WHO DD/MM/YY]"}). - -\erno{+5071} Too many configuration parameters\\ - The size of the buffer used by one of the tools or modules to read - its configuration parameters was exceeded. Either reduce the total - number of configuration parameters in the file or make more of then - specific to their particular module rather than global. - -\erno{+5072} Configuration parameter of wrong type\\ - The configuration parameter is of the wrong type. Check that its type - agrees with that shown in chapter~\ref{c:confvars}. - -\erno{+5073} Configuration parameter out of range\\ - The configuration parameter is out of range. - -\end{itemize} - -\module{\htool{HMem}} - -\begin{itemize} -\erno{+5170} Heap parameters invalid\\ - You have tried to create a heap with unreasonable parameters. Adjust - these so that the growth factor is positive and the initial block - size is no larger than the maximum. For \texttt{MSTAK} the element - size should be 1. - -\erno{+5171} Heap not found\\ - The specified heap could not be found, ensure that it has not been - deleted or memory overwritten. - -\erno{+5172} Heap does not support operation\\ - The heap is of the wrong type to support the requested operation. In - particular it is not possible to \texttt{Reset} or \texttt{Delete} a - \texttt{CHEAP}. - -\erno{+5173} Wrong element size for MHEAP\\ - You have tried to allocate an item of the wrong size from a - \texttt{MHEAP}. All items on a \texttt{MHEAP} must be of the same size. - -\erno{+5174} Heap not initialised\\ - You have tried to allocate an item on a heap that has not yet been - created. Ensure that \texttt{CreateHeap} is called to initialise - the heap before any items are allocated from it. - -\erno{+5175} Freeing unseen item\\ - You have tried to free an item from the wrong heap. This can occur - if the wrong heap is specified, the item pointer has been corrupted - or the item has already been freed implicitly by a - \texttt{Reset/DeleteHeap} call. - -\end{itemize} - -\module{\htool{HMath}} - -\begin{itemize} -\erno{+5220} Singular covariance matrix\\ - The covariance matrix was not invertible. This may indicate a lack - of training data or linearly dependent parameters. - -\erno{+5270} Size mismatch\\ - The input parameters were of incompatible sizes. - -\erno{+5271} Log of negative\\ - Result would be logarithm of a negative number. - -\end{itemize} - -\module{\htool{HSigP}} - -\begin{itemize} -\erno{+5320} No results for WaveToLPC\\ - Call did not include Vectors for the results. - -\erno{+5321} Vector size mismatch\\ - Input vectors were of mismatched sizes. - -\erno{-5322} Clamped samples during zero mean\\ - During a zero mean operation samples were clipped as they were outside - the allowable range. - -\end{itemize} - -\module{\htool{HAudio}} - -\begin{itemize} -\erno{+6020} Replay buffer not active\\ - Attempt to access a replay buffer when one was not attached. - -\erno{+6021} Cannot StartAudio without measuring silence\\ - An attempt was made to start audio input through the silence detector - without first measuring or supplying the background silence values. - -\erno{+6070} Audio frame size/rate invalid\\ - The choice of frame period and window duration are invalid. Check - both these and the sample rate. - -\erno{-6071} Setting speech threshold below silence\\ - The thresholds used in the speech detector have been set so that the - threshold for detecting speech is set below that of detecting silence. - -\end{itemize} - -\module{\htool{HVQ}} - -\begin{itemize} -\erno{+6150} VQ file format error\\ - The VQ file was incorrectly formatted. Ensure that the file is - complete and has not been corrupted. - -\erno{+6151} VQ file range error\\ - A value from the VQ file was out of range. Ensure that the file is - complete and has not been corrupted. - -\erno{+6170} Magic number mismatch\\ - The VQ magic number (normally based on parameter kind) does not match - that expected. Check that the parameter kind used to quantise the data - and create the VQ table matches the current parameter kind. - -\erno{+6171} VQ table already exists\\ - All VQ tables must have distinct names. This error will occur if you - try to create or load a VQ table with the same name as one already - loaded. - -\erno{+6172} Invalid covariance kind\\ - Entries in VQ tables must have either \texttt{NULLC}, \texttt{FULLC} or - \texttt{INVDIAGC} covariance kind. - -\erno{+6173} Node not in table\\ - A node was missing from the VQ table. Ensure that the VQ table was - properly created or that the file was complete. - -\erno{+6174} Stream codebook mismatch\\ - The number or size of streams in the VQ table does not match that - requested. - -\end{itemize} - -\module{\htool{HWave}} - -\begin{itemize} -\erno{+6220} Cannot fseek/ftell\\ - Unless the wave file is read through a pipe fseek and ftell are - expected to work correctly so that \htool{HWave} can calculate the - file size. If this error occurs when using an input pipe, supply - the number of samples in the file using the configuration variable - \texttt{NSAMPLES}. - -\erno{+6221} File appears to be a infinite\\ - \htool{HWave} cannot determine the size of the file. - -\erno{+6230} Config parameter not set\\ - A necessary configuration parameter has not been set. Determine the - correct value and place this in the configuration file before - re-invoking the tool. - -\erno{+6250} Premature end of header\\ - \htool{HWave} could not read the complete file header. - -\erno{+6251} Header contains invalid data\\ - \htool{HWave} was unable to successfully parse the header. The header - is invalid, of the wrong type or be a variation that \htool{HWave} does - not handle. - -\erno{+6252} Header missing essential data\\ - The header was missing a piece of information necessary for - \htool{HWave} to load the file. Check the processing of the - input file and re-process if necessary. - -\erno{+6253} Premature end of data\\ - The file ended before all the data was read correctly. Check that the - file is complete, has not been corrupted and where necessary - \texttt{NSAMPLES} is set correctly. - -\erno{+6254} Data formated incorrectly\\ - The data could not be decoded properly. Check that the file was - complete and processed correctly. - -\erno{+6270} File format invalid\\ - The file format is not valid for the operation requested. - -\erno{+6271} Attempt to read outside file\\ - You have tried to read a sample outside of the waveform file. - -\end{itemize} - -\module{\htool{HParm}} - -\begin{itemize} -\erno{+6320} Configuration mismatch\\ - The data file does not match the configuration. Check the - configuration file is correct. - -\erno{+6321} Invalid parameter kind\\ - Parameter kind is not valid. Check the configuration file. - -\erno{+6322} Conversion not possible\\ - The specified conversion is not possible. Check the configuration is - correct and re-code the data from waveform files if necessary. - -\erno{+6323} Audio error\\ - An audio error has been detected. Check the \htool{HAudio} - configuration and the audio device. - -\erno{+6324} Buffer not initialised\\ - Ensure that the buffer is used in the correct manner. - -\erno{+6325} Silence detection failed\\ - The silence detector was not initialised correctly before use. - -\erno{+6328} Load/Make HMMSet failed\\ - The model set could not be loaded due to either an error opening the - file or the data within being inconsistent. - -\erno{+6350} CRC error\\ - The CRC does not match that of the data. Check the data file is - complete and has not been corrupted. - -\erno{-6351} Byte swapping not possible\\ - \htool{HParm} will attempt to byte swap parameter files but this - may not work if the floating point representation of the machine - that generated the file is different from that which is reading it. - -\erno{+6352} File too short to parameterise\\ - The file does not contain enough data to produce a single observation. - Check the file is complete and not corrupt. If it is, it should be - discarded. - -\erno{+6370} Unknown parameter kind\\ - The specified parameter kind is not recognised. Refer to - section~\ref{s:spiosum} for a list of allowable parameter kinds - and qualifiers. - -\erno{+6371} Invalid parameters for coding\\ - The chosen parameters are not valid for coding. Choose different ones. - -\erno{+6372} Stream widths not valid\\ - Cannot split the data into the specified number of streams. Check that - the parameter kind is correct and matches any models used. - -\erno{+6373} Buffer/observation mismatch\\ - The observation parameter kind should match that of the input buffer. - Check that the configuration parameter kind is correct and matches - that of any models used. - -\erno{+6374} Buffer size too small for window\\ - Calculation of delta parameters requires a window larger than the - buffer size chosen. Increase the size of the buffer. - -\erno{+6375} Frame not in buffer\\ - An attempt was made to access a frame that does not appear in the - buffer. Make sure that the file actually contains the specified frame. - -\erno{+6376} Mean/Variance normalisation failed\\ - The mean or variance normalisation vector from the file - specified by the normalisation dir and mask cannot be applied. - Make sure the file format is correct and the vectors are of - the right dimension. - -\end{itemize} - -\module{\htool{HLabel}} - -\begin{itemize} -\erno{+6520} MLF index out of range\\ - An attempt was made to access an MLF that has not been loaded or to - load too many MLFs. - -\erno{+6521} fseek/ftell not possible\\ - \htool{HLabel} needs random access to MLFs. This error is generated - when this is not possible (for instance if access is via a pipe). - -\erno{+6550} HTK format error -\erno{+6551} MLF format error -\erno{+6552} TIMIT format error -\erno{\pm 6553} ESPS format error -\erno{+6554} SCRIBE format error\\ - A label file was formatted incorrectly. Label - file formats are described in chapter~\ref{c:labels}. - -\erno{+6570} Level out of range\\ - Attempted to access a non-existent label level. Check that the correct - label file has been loaded. - -\erno{+6571} Label out of range\\ - Attempted to access a non-existent label. Check that the correct - label file has been loaded and that the correct level is being - accessed. - -\erno{+6572} Invalid format\\ - The specified file format is not valid for the particular operation. - -\end{itemize} - -\module{\htool{HModel}} - -\begin{itemize} -\erno{+7020} Cannot find physical HMM\\ - No physical HMM exists for a particular logical model. Check that the - HMMSet was loaded or created correctly. - -\erno{+7021} INVDIAG internal format\\ - Attempts to load or save models with \texttt{INVDIAG} covariance kind - will fail as this is a purely internal model format. - -\erno{\pm 7023} varFloor should be variance floor\\ - \htool{HModel} reserves the macro name \texttt{varFloorN} as the - variance floor for stream \texttt{N}. These should be variance - macros (type \texttt{v}) of the correct size for the particular stream. - -\erno{+7024} Variance tending to 0.0\\ - A variance has become too low. Start using a variance floor or - increase the amount of training data. - -\erno{+7025} Bad covariance kind\\ - The particular functionality does not support the covariance - kind of the mixture component. - -\erno{+7030} HMM set incomplete or inconsistent\\ - The HMMSet contained missing or inconsistent data. Check that the - file is complete and has not been corrupted. - -\erno{+7031} HMM parameters inconsistent\\ - Some model parameters were inconsistent. Check that the file is - complete and has not been corrupted. - -\erno{\pm 7032} Option mismatch\\ - All HMMs in a particular set must have consistent options. - -\erno{+7035} Unknown macro\\ - Macro does not exist. Check that the name is correct and appears - in the HMMSet. - -\erno{+7036} Duplicate macro\\ - Attempted to create a macro with the same name as one already present. - Choose a different name. - -\erno{+7037} Invalid macro\\ - Macro had invalid type. See section~\ref{s:HMMmac} describes the - allowable macro types. - -\erno{+7050} Model file format error -\erno{+7060} HMM List format error\\ - The file was formated incorrectly. Check the file is complete and - has not been corrupted. - -\erno{+7070} Invalid HMM kind\\ - Invalid HMMSet kind. Check that this is specified correctly. - -\erno{+7071} Observation not compatible with HMMSet\\ - Attempted to calculate an observation likelihood for an observation - not compatible with the HMMSet. Check that the parameter kind is - set correctly. - -\end{itemize} - -\module{\htool{HTrain}} - -\begin{itemize} -\erno{+7120} Clustering failed\\ - Almost certainly due to a lack of data, reduce the - number of clusters requested or increase amount of data. - -\erno{+7150} Accumulator file format error\\ - Cannot read an item from an accumulator file. Check - that file is complete and not corrupted. - -\erno{+7170} Unsupported covariance kind\\ - Covariance kind must be either \texttt{FULLC}, \texttt{DIAGC} or - \texttt{INVDIAGC}. - -\erno{+7171} Item out of range\\ - Attempt made to access data beyond expected range. Check that - the item number is correct. - -\erno{+7172} Tree size must be power of 2\\ - Requested codebook size must be a power of 2 when - using tree based clustering. - -\erno{-7173} Segment empty\\ - Empty data segment in file. Check that file has not - become corrupted and that the start and end segment times - are correct. - -\end{itemize} - -\module{\htool{HUtil}} - -\begin{itemize} -\erno{+7220} HMMSet empty\\ - A scan was initiated for a HMMSet with no members. - -\erno{+7230} Item list parse error\\ - The item list syntax was incorrect. Check the item list specification - in section~\ref{s:HHEd}. - -\erno{+7231} Item list type error\\ - Each item in a particular list should be of the same type and size. - -\erno{+7250} Stats file format error\\ - Stats file is of wrong format. Note the format of the stats file has - changed in HTK\_V2.0 and old files will need converting to the new - format. - -\erno{+7251} Stats file model error\\ - A model name encountered in the stats file is invalid check that the - model set corresponds to that used to generate the stats file and that - the stats file is complete and has not been corrupted. - -\erno{+7270} Accessing non-existent macro\\ - Attempt to perform operation on non-existent macro. - -\erno{+7271} Member id out of range\\ - Attempt to perform set operation on out of range member. - -\end{itemize} - -\module{\htool{HFB}} - -\begin{itemize} - -\erno{+7321} Unknown model\\ - Model in HMM List not found in HMMSet, check that the - correct HMM List is being used. - -\erno{+7322} Invalid output probability\\ - Mixture component probability has not been set. This should - not occur in normal use. - -\erno{+7323} Beta prune failed on taper\\ - Utterance is possibly too short for minimum duration - of model sequence. Check transcription. - -\erno{-7324} No path through utterance\\ - No path was found on the beta training pass, relax the - pruning threshold. - -\erno{-7325} Empty label file\\ - No labels found in label file, check label file. - -\erno{+7326} Single-pass retraining data mismatch\\ - Paired training files must contain the same number of observations. - Use original data to re-parameterise. - -\erno{\pm 7332} HMM with unreachable states\\ - HMM has an unreachable state, check transition matrix.\\ - -\erno{-7333} Transition matrix with discontinuity\\ - Check transition matrix.\\ - -\erno{+7350} Data does not match HMM\\ - An aspect of the data does not match the equivalent aspect in - the HMMSet. Check the parameter kind of the data. - -\end{itemize} - -\module{\htool{HDict}} - -\begin{itemize} -\erno{+8050} Dictionary file format error\\ - The dictionary file is not correctly formatted. - Section~\ref{s:usehdman} describes the HTK dictionary file format. - -\end{itemize} - -\module{\htool{HLM}} - -\begin{itemize} -\erno{+8150} LM syntax error\\ - The language model file was formatted incorrectly. Check the file is - complete and has not been corrupted. - -\erno{\pm 8151} LM range error\\ - The specified value(s) for the language model probability are not - valid. Check the input files are correct. - -\end{itemize} - -\module{\htool{HNet}} - -\begin{itemize} -\erno{+8220} No such word\\ - The specified word does not exist or does not have a valid - pronunciation. - -\erno{-8221} Duplicate pronunciations removed\\ - During network generations duplicate identical pronunciations - of the same word are removed. - -\erno{+8230} Contexts not consistent\\ - \htool{HNet} can only deal with the standard HTK method for specifying - context \texttt{left-phone+right} and will only allow context free - phones if they are context independent and only form part of the word. - This may be indicative of an inconsistency between the symbols in the dictionary - and the hmms as defined. There may be a model/phone in the dictionary that has - not been defined in the HMM list or may not have a corresponding model. - See also section~\ref{s:netexpand} on context expansion. - - -\erno{+8231} No such model\\ - A particular model could not be found. Make sure that the network is - being expanded in the correct fashion and then ensure that your HMM - list will cover all required contexts. - -\erno{+8232} Lattice badly formed\\ - Could not convert lattice to network. The lattice should have a single - well defined start and a single well defined end. When cross word - expansion is being performed the number of \texttt{!NULL} words that - can be concatenated in a string is limited. - -\erno{+8250} Lattice format error\\ - The lattice file is formatted incorrectly. Ensure that the lattice - is of the format described in chapter~\ref{c:htkslf}. - -\erno{+8251} Lattice file data error\\ - The value specified in the lattice file is invalid. - -\erno{+8252} Lattice file with multiple start/end nodes\\ - A lattice should have only one well defined start node and one - well defined end node. - -\erno{+8253} Lattice with invalid sub lattices\\ - The sub lattices referred to by the main lattices are - malformed. - -\end{itemize} - - -\module{\htool{HRec}} - -\begin{itemize} -\erno{\pm 8520} Invalid HMM\\ - One of the HMMs in the network is invalid. Check that the HMMSet - has been correctly initialised. - -\erno{+8521} Network structure invalid\\ - The network is incorrectly structured. Take care to avoid loops - that can be traversed without consuming observations (this may occur - if you introduce any 'tee' words in which all the models making up that - word contain tee-transitions). Also ensure that the recogniser and - the network have been created and initialised correctly. - -\erno{+8522} Lattice structure invalid\\ - The lattice was incorrectly formed. Ensure that the lattice was - created properly. - -\erno{\pm 8570} Recogniser not initialised correctly\\ - Ensure the recogniser is initialised and used correctly. - -\erno{+8571} Data does not match HMMs\\ - The observation does not match the HMM structure. Check the parameter - kind of the data and ensure that the data is matched to the HMMs. - -\end{itemize} - - -\module{\htool{HLat}} - -\begin{itemize} - -\erno{8621} Lattice incompatible with dictionary\\ - The lattice refers to a pronunciation variant (filed - \texttt{v=}) that doesn't exist in the current dictionary. - -\erno{\pm 8622} Lattice structure invalid\\ - The lattice does not meet the requirements for some operation. - All lattices must have unique start and end nodes and for many - operations the lattices need to be acyclic (i.e.\ be a - Directed Acyclic Graph). - -\erno{8623} Start or end word not found\\ - The specified lattice start or end word could not be found in - the dictionary. - -\erno{8624} Lattice end node label invalid\\ - The lattice end node must either be labelled with \verb|!NULL| - or the specified end word (default: \verb|!SENT_END|) - -\erno{-8630} LLF file not found\\ - The specified LLF file could not be found or isn't in the - right format. - -\erno{8631} Lattice not found in LLF file\\ - A lattice couldn't be found in the LLF file. Note that the - order in the LLF file must correspond to the order of processing. - -\erno{8632} Lattice not found\\ - The specified lattice file could not be opened. - -\erno{8690} Lattice operation not supported\\ - The requested operation is not supported, yet. -\erno{8691} Lattice processing sanity check failed\\ - During processing an internal sanity check failed. This should - never happen.. - -\end{itemize} - - -\module{\htool{HGraf}} - -\begin{itemize} -\erno{+6870} X11 error\\ - Ensure that the \texttt{DISPLAY} variable is set and that the - X11 window system is configured correctly. - -\end{itemize} - - -% Language modelling libraries and tools - -% LCMap -\module{\htool{LCMap}} - -\begin{itemize} -\erno{+15050} Unlikely num map entries[\texttt{n}] in \texttt{XYZ}\\ - A negative or infeasibly large number of class map entries - have been specified. - -\erno{+15051} ReadMapHeader: UNKxxx configs must be set for hdrless map\\ - There is no header on the map so you must set UNKNOWNID and UNKNOWNNAME. - -\erno{+15052} No name in \texttt{XYZ}\\ - No NAME header in class map. - -\erno{+15053} Unknown escmode \texttt{XYZ} in \texttt{XYZ}\\ - ESCMODE header must specify either HTK or RAW. - -\erno{+15054} Class name \texttt{XYZ} duplicate in \texttt{XYZ}\\ - Two classes in the class map have the same name, which is not allowed. - -\erno{+15055} Bad index \texttt{n} for class \texttt{XYZ} in \texttt{XYZ}\\ - A class index less than 1 or greater than or equal to BASEWORDNDX (defined - at compile time in \htool{LWMap} - default is 65536) was found - in the class map. If you need more than \htool{BASEWORDNDX} - classes then you must recompile \HTK\ with a new base word - value. - -\erno{+15056} Number of entries = \texttt{n} for class \texttt{XYZ} in \texttt{XYZ}\\ - There must be at least one member in each class - empty - classes are not allowed. - -\erno{+15057} Bad type \texttt{XYZ} for class \texttt{XYZ} in \texttt{XYZ}\\ - Classes must be defined using either IN or NOTIN. - -\erno{+15058} A class is in its own exclusive list. This typically happens when a class map - is specified as a plain list of words. Such list is by default assumed to be - a list of words excluded from class !!UNK. The error is triggered when !!UNK - is in the word list. !!UNK must be removed from the list. - -\end{itemize} - - -% LWMap -\module{\htool{LWMap}} - -\begin{itemize} -\erno{+15150} Word list/word map file format error\\ - Check that the word list/word map file is correctly formatted. - -\erno{+15151} Unlikely num map entries[\texttt{n}] in \texttt{XYZ}\\ - A negative or infeasibly large number of word map entries - have been specified. - -\erno{+15152} No NAME header in \texttt{XYZ}\\ - No NAME header in word map. - -\erno{+15153} No SEQNO header in \texttt{XYZ}\\ - No SEQNO header in word map. - -\erno{+15154} Unknown escmode \texttt{XYZ} in \texttt{XYZ}\\ - ESCMODE header must specify either HTK or RAW. - -\erno{+15155} Word name \texttt{XYZ} is duplicated in \texttt{XYZ}\\ - There are duplicate words in the word map, which is not allowed. - -\end{itemize} - - -% LUtil -\module{\htool{LUtil}} - -\begin{itemize} -\erno{+15250} Header format error\\ - Ensure that word maps and/or n-gram files used by the program start - with the appropriate header. -\end{itemize} - - -% LGBase -\module{\htool{LGBase}} - -\begin{itemize} -\erno{+15330} n-gram file consistency check failure\\ - The n-gram file is incompatible with other resources used by the - program. - -\erno{+15340} File \texttt{XYZ} is \texttt{n}-gram but inset is \texttt{n}-gram\\ - The specified input gram file is not of the expected gram size. - -\erno{+15341} Requested N[\texttt{n}] greater than gram size [\texttt{n}]\\ - An n-gram was requested which was larger than any of those - supplied in the input files. - -\erno{+15345} n-grams out of order\\ - The input gram file is not correctly sorted. - -\erno{+15350} n-gram file format error\\ - Ensure that n-gram files used by the program are formatted correctly - and start with the appropriate header. -\end{itemize} - - -% LModel -\module{\htool{LModel}} - -\begin{itemize} -\erno{+15420} Cannot find n-gram component\\ - The internal structure of the language model is corrupted. This error - is usually caused when an n-gram $(a,b,c)$ is encountered without - the presence of n-gram $(a,b)$. -\erno{+15430} Incompatible probability kind in conversion\\ - The currently used language model does not allow the required - conversion operation. This error is caused by attempting to prune a - model stored in the ultra file format. -\erno{+15440} Cannot prune models in ultra format\\ - Pruning of language models stored in {\em ultra} file format is not - supported. -\erno{+15445} Word ID size error\\ - Language models with vocabularies of over 65,536 words require the - use of larger word identifiers. This is a sanity check error. -\erno{-15450} Word \texttt{XYZ} not in unigrams - skipping n-gram.\\ - There should be a unigram count for each word in other length grams. -\erno{+15450} Language model file format error\\ - The language model file is formatted incorrectly. Check the file is - complete and has not been corrupted. -\erno{-15451} Extraneous line warning\\ - Extra lines were found on the end of a file and are being ignored. -\erno{-15460} Model order reduced\\ - Due to the effects of pruning the model order is automatically reduced. -\end{itemize} - - -% LPCalc -\module{\htool{LPCalc}} - -\begin{itemize} -\erno{+15520} Unable to find FLEntry to attach\\ - Indicates that the LM data structures are corrupt. This is normally caused - by NGram files which have not been sorted. -\erno{+15525} Attempt to overwrite entries when attaching\\ - Indicates that the LM structure is corrupt. Ensure that the word map file - used is suitable for decoding the NGram database files. -\erno{-15540} \texttt{n}-gram cutoff out of range\\ - An inapplicable cutoff was ignored. -\erno{+15540} Pruning error\\ - The pruning parameters specified are not compatible with the parameters - of the language model. -\end{itemize} - - -% LPMerge -\module{\htool{LPMerge}} - -\begin{itemize} -\erno{+15620} Unable to find word in any model\\ - Indicates that the target model vocabulary contains a word which cannot - be found in any of the source models. -\end{itemize} - - - -% LPlex -\module{\htool{LPlex}} - -\begin{itemize} -\erno{+16620} symbol {\tt XYZ} not in word list\\ - The sentence start symbol, sentence end symbol and OOV symbol (only if - OOVs are to be included in the perplexity calculation) must be in the - language model's vocabulary. Note that the vocabulary list is either - specified with the {\tt -w} option or is implicitly derived from the - language model. - -\erno{+16625} Unable to find word {\tt XYZ} in any model\\ - Ensure that all words in the vocabulary list specified with the {\tt -w} - option are present in at least one of the language models. - -\erno{+16630} Maximum number of unique OOVs reached\\ - Too many OOVs encountered in the input text. - -\erno{-16635} Transcription file {\tt fn} is empty\\ - The label file does not contain any words. - -\erno{-16640} Word too long, will be split: {\tt XYZ}\\ - The word read from the input stream is of over 200 characters. - -\erno{-16645} Text buffer size exceeded ({\tt n})\\ - The maximum number of words allowed in a single utterance has been - reached. - -\erno{+16650} Maximum utterance length in a label file exceeded (limit - is compiled to be {\tt n} tokens)\\ - No label file utterance end has been encountered within - {\tt n} tokens -- perhaps this is a text file and you forgot - to pass the {\tt -t} option? -\end{itemize} - - -% HLMCopy -\module{\htool{HLMCopy}} - -\begin{itemize} -\erno{+16920} Maximum number of phones reached\\ - When \htool{HLMCopy} is used to copy dictionaries, the target dictionary's - phone table is composed by combining the phone tables of all source - dictionaries. Check that the number of different phones resulting from - combining the phone tables of the source dictionaries does not exceed the - internally set limit. - -\erno{+16930} Cannot find definition for word {\tt XYZ}\\ - When copying dictionaries, ensure that each word in the vocabulary list - occurs in at least one source dictionary. -\end{itemize} - - -% Cluster -\module{\htool{Cluster}} - -\begin{itemize} -\erno{+17050} Word {\tt XYZ} found in class map but not in word map\\ - All words in the class map must be found in the word map too. - -\erno{-17051} Unknown word token {\tt XYZ} was explicitly given with -u, but - does not occur in the word map\\ - This warning appears if you specify an unknown word token - which is not found in the word map. - -\erno{+17051} Token not found in word list\\ - Sentence start, end and unknown (if used) tokens must be found - in the word map. - -\erno{+17052} Not all words were assigned to classes\\ - A classmap was imported which did not include all words in the - word map. - -\erno{-17053} Word {\tt XYZ} is in word map but not in any gram files\\ - The stated word will remain in whichever class it is already - in - either as defaulted to or supplied via the input class map. -\end{itemize} - - -\end{itemize} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/exampsys.tex b/HTKBook/exampsys.tex deleted file mode 100644 index 09d62ea..0000000 --- a/HTKBook/exampsys.tex +++ /dev/null @@ -1,2167 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% -% revised by JBA and VV - -\mychap{A Tutorial Example of Using HTK}{exampsys} - -\sidepic{recipe}{80}{ -This final chapter of the tutorial part of the book will describe the -construction of a recogniser for simple voice dialling applications. This -recogniser will be designed to recognise continuously spoken digit strings and -a limited set of names. It is sub-word based so that adding a new name to the -vocabulary involves only modification to the pronouncing dictionary and task -grammar. The HMMs will be continuous density mixture Gaussian tied-state -triphones with clustering performed using phonetic decision trees. Although -the voice dialling task itself is quite simple, the system design is -general-purpose and would be useful for a range of applications. -} - -In addition to the construction of a simple voice-dialling system, examples for -using more advanced options, such as decorrelating transforms, the large -vocabulary decoder and discriminative training, are also given. These sections -do not necessarily link fully with the other parts of the tutorial, but aim to -give the user an idea of the form of command-lines and steps that might be -involved in using these options. - -The system will be built from scratch even to the extent of recording training -and test data using the \HTK\ tool \htool{HSLab}. To make this tractable, the -system will be speaker dependent\footnote{A stage of the tutorial deals -with adapting the speaker dependent models for new speakers}, but the same design -would be followed to build a speaker independent system. The only difference being -that data would be required from a large number of speakers and there would -be a consequential increase in model complexity. - -Building a speech recogniser from scratch involves a number of inter-related -subtasks and pedagogically it is not obvious what the best order is to present -them. In the presentation here, the ordering is chronological so that in effect -the text provides a recipe that could be followed to construct a similar -system. The entire process is described in considerable detail in order give a -clear view of the range of functions that \HTK\ addresses and thereby to -motivate the rest of the book. - -The \HTK\ software distribution also contains an example of constructing a -recognition system for the 1000 word ARPA Naval Resource Management Task. This -is contained in the directory \texttt{RMHTK} of the \HTK\ distribution. -Further demonstration of \HTK's capabilities can be found in the directory -\texttt{HTKDemo}. Some example scripts that may be of assistance during the -tutorial are available in the \texttt{HTKTutorial} directory. - -At each step of the tutorial presented in this chapter, the user is advised to -thoroughly read the entire section before executing the commands, and also to -consult the reference section for each \HTK\ tool being introduced -(chapter~\ref{c:toolref}), so that all command line options and arguments are -clearly understood. - -\mysect{Data Preparation}{egdataprep} - -The first stage of any recogniser development project is data preparation. -\index{data preparation} Speech data is needed both for training and for -testing. In the system to be built here, all of this speech will be recorded -from scratch and to do this scripts are needed to prompt for each sentence. In -the case of the test data, these prompt scripts will also provide the reference -transcriptions against which the recogniser's performance can be measured and a -convenient way to create them is to use the task grammar as a random generator. -In the case of the training data, the prompt scripts will be used in -conjunction with a pronunciation dictionary to provide the initial phone level -transcriptions needed to start the HMM training process. Since the application -requires that arbitrary names can be added to the recogniser, training data -with good phonetic balance and coverage is needed. Here for convenience the -prompt scripts needed for training are taken from the TIMIT acoustic-phonetic -database. - -It follows from the above that before the data can be recorded, a phone set -must be defined, a dictionary must be constructed to cover both training and -testing and a task grammar must be defined. - -\subsection{Step 1 - the Task Grammar} - -The goal of the system to be built here is to provide a voice-operated -interface for phone dialling. Thus, the recogniser must handle digit strings -and also personal name lists. Examples of typical inputs might be -\begin{quote} -Dial three three two six five four - -Dial nine zero four one oh nine - -Phone Woodland - -Call Steve Young -\end{quote} - -\HTK\ provides a grammar definition language for -specifying simple task grammars\index{task grammar} such as this. It consists -of a set of variable definitions followed by a regular -expression describing the words to recognise. For the -voice dialling application, a suitable grammar might be -\begin{verbatim} - $digit = ONE | TWO | THREE | FOUR | FIVE | - SIX | SEVEN | EIGHT | NINE | OH | ZERO; - $name = [ JOOP ] JANSEN | - [ JULIAN ] ODELL | - [ DAVE ] OLLASON | - [ PHIL ] WOODLAND | - [ STEVE ] YOUNG; - ( SENT-START ( DIAL <$digit> | (PHONE|CALL) $name) SENT-END ) -\end{verbatim} -where the vertical bars denote alternatives, the square brackets denote -optional items and the angle braces denote one or more repetitions. The -complete grammar can be depicted as a network as shown in -Fig.~\href{f:dialnet}. - -\centrefig{dialnet}{110}{Grammar for Voice Dialling} - -\sidefig{step1}{25}{Step 1}{-4}{ -The above high level representation of a task grammar -is provided for user convenience. The \HTK\ recogniser actually -requires a -word network to be defined using a low level notation -called \HTK\ Standard Lattice Format\index{standard lattice format} (SLF) -\index{SLF} -in which each word instance and each word-to-word transition -is listed explicitly. This word network can be created -automatically from the grammar above using -the \htool{HParse} -tool, thus assuming that the file \texttt{gram} contains the -above grammar, executing -}\index{hparse@\htool{HParse}} -\begin{verbatim} - HParse gram wdnet -\end{verbatim} -will create an equivalent word network in -the file \texttt{wdnet} (see Fig~\href{f:step1}). - - -\subsection{Step 2 - the Dictionary} - -The first step in building a dictionary is to create a sorted list of the -required words. -In the telephone dialling task pursued here, it is quite easy to create a list -of required words by hand. However, if the task were more complex, it would be -necessary to build a word list from the sample sentences present in the training -data. Furthermore, to build robust acoustic models, it is necessary to train -them on a large set of sentences containing many words and preferably -phonetically balanced. For these reasons, the training data will consist of -English sentences unrelated to the phone recognition task. Below, a short -example of creating a word list from sentence prompts will be given. As noted -above the training sentences given here are extracted from some prompts used -with the TIMIT database\index{TIMIT database} and for convenience reasons they -have been renumbered. For example, the first few items might be as follows -\vspace{1cm} -\begin{verbatim} - S0001 ONE VALIDATED ACTS OF SCHOOL DISTRICTS - S0002 TWO OTHER CASES ALSO WERE UNDER ADVISEMENT - S0003 BOTH FIGURES WOULD GO HIGHER IN LATER YEARS - S0004 THIS IS NOT A PROGRAM OF SOCIALIZED MEDICINE - etc -\end{verbatim} -The desired training word list\index{word list} (\texttt{wlist}) could then be -extracted automatically from these. Before using HTK, one would need to edit -the text into a suitable format. For example, it would be necessary to change -all white space to newlines and then to use the UNIX utilities \texttt{sort} -and \texttt{uniq} to sort the words into a unique alphabetically ordered set, -with one word per line. The script \texttt{prompts2wlist} from the -\texttt{HTKTutorial} directory can be used for this purpose. - -The dictionary\index{dictionary!construction}\index{dictionary!format} -itself can be built from a standard source -using \htool{HDMan}\index{hdman@\htool{HDMan}}. -For this example, the British English BEEP pronouncing dictionary will be -used\footnote{Available by anonymous ftp from -\texttt{svr-ftp.eng.cam.ac.uk/pub/comp.speech/dictionaries/beep.tar.gz}. -Note that items beginning with unmatched quotes, found at the start -of the dictionary, should be removed.}. -Its phone set will be adopted without modification except that -the stress marks will be removed and a short-pause (\texttt{sp}) will -be added to the end of every pronunciation. If the dictionary contains any -silence markers then the \texttt{MP} command will merge the \texttt{sil} and -\texttt{sp} phones into a single \texttt{sil}. These changes can be applied -using \htool{HDMan} and an edit script (stored in \texttt{global.ded}) -containing the three commands -\begin{verbatim} - AS sp - RS cmu - MP sil sil sp -\end{verbatim} -where \texttt{cmu} refers to a style of stress marking\index{stress marking} in which -the lexical stress level is -marked by a single digit appended to the phone name (e.g.\ \texttt{eh2} means -the phone \texttt{eh} with level 2 stress). - -\centrefig{step2}{100}{Step 2} - -\noindent -The command -\begin{verbatim} - HDMan -m -w wlist -n monophones1 -l dlog dict beep names -\end{verbatim} -will create a new dictionary called \texttt{dict} by searching the source -dictionaries \texttt{beep} and \texttt{names} to find pronunciations for each -word in \texttt{wlist} (see Fig~\href{f:step2}). Here, the \texttt{wlist} in -question needs only to be a sorted list of the words appearing in the task -grammar given above. - -Note that \texttt{names} is a manually constructed file containing -pronunciations for the proper names used in the task grammar. The option -\texttt{-l} instructs \htool{HDMan} to output a log file \texttt{dlog} which -contains various statistics about the constructed dictionary. In particular, -it indicates if there are words missing. \htool{HDMan} can also output a list -of the phones used, here called \texttt{monophones1}. Once training and test -data has been recorded, an HMM will be estimated for each of these phones. - -The general format of each dictionary entry\index{dictionary!entry} is -\begin{verbatim} - WORD [outsym] p1 p2 p3 .... -\end{verbatim} -which means that the word \texttt{WORD} is pronounced as the sequence of phones -\texttt{p1 p2 p3 ...}. The string in square brackets specifies the string to -output when that word is recognised. If it is omitted then the word itself is -output. If it is included but empty, then nothing is output. - -To see what the dictionary is like, here are a few entries. -\begin{verbatim} - A ah sp - A ax sp - A ey sp - CALL k ao l sp - DIAL d ay ax l sp - EIGHT ey t sp - PHONE f ow n sp - SENT-END [] sil - SENT-START [] sil - SEVEN s eh v n sp - TO t ax sp - TO t uw sp - ZERO z ia r ow sp -\end{verbatim} -Notice that function words such as \texttt{A} and \texttt{TO} -have multiple pronunciations. -The entries for \texttt{SENT-START} and \texttt{SENT-END} have a silence -model \texttt{sil} as their pronunciations and null output symbols. - -\subsection{Step 3 - Recording the Data} - -The\index{recording speech} training and test data will be recorded using the -\HTK\ tool \htool{HSLab}\index{hslab@\htool{HSLab}}. This is a combined -waveform recording and labelling tool. In this example \htool{HSLab} will be -used just for recording, as labels already exist. However, if you do not have -pre-existing training sentences (such as those from the TIMIT database) you can -create them either from pre-existing text (as described above) or by labelling -your training utterances using \htool{HSLab}. \htool{HSLab} is invoked by typing -\begin{verbatim} - HSLab noname -\end{verbatim} -This will cause a window to appear with a waveform display area in the upper -half and a row of buttons, including a record button in the lower half. When -the name of a normal file is given as argument, \htool{HSLab} displays its -contents. Here, the special file name \texttt{noname} indicates that new data -is to be recorded. \htool{HSLab} makes no special provision for prompting the -user. However, each time the record button is pressed, it writes the -subsequent recording alternately to a file called \verb|noname_0.| and to a -file called \verb|noname_1.|. Thus, it is simple to write a shell script -which for each successive line of a prompt file, outputs the prompt, waits for -either \verb|noname_0.| or \verb|noname_1.| to appear, and then renames -the file to the name prepending the prompt (see Fig.~\href{f:step3}). -\index{extensions!wav@\texttt{wav}} - -While the prompts for training sentences already were provided for above, the -prompts for test sentences need to be generated before recording them. -The tool\index{prompt script!generationof}\index{hsgen@\htool{HSGen}} -\htool{HSGen} can be used to do this by randomly traversing a word network and -outputting each word encountered. For example, typing -\begin{verbatim} - HSGen -l -n 200 wdnet dict > testprompts -\end{verbatim} -would generate 200 numbered test utterances, the first few of which would look something like: -\begin{verbatim} - 1. PHONE YOUNG - 2. DIAL OH SIX SEVEN SEVEN OH ZERO - 3. DIAL SEVEN NINE OH OH EIGHT SEVEN NINE NINE - 4. DIAL SIX NINE SIX TWO NINE FOUR ZERO NINE EIGHT - 5. CALL JULIAN ODELL - ... etc -\end{verbatim} -These can be piped to construct the prompt file \texttt{testprompts} for -the required test data. - -\subsection{Step 4 - Creating the Transcription Files} - -\sidefig{step3}{50}{Step 3}{-4}{} -To train a set of HMMs, every file of training data must have an associated -phone level transcription. Since there is no hand labelled data to bootstrap a -set of models, a flat-start scheme will be used instead. To do this, two sets -of phone transcriptions will be needed. The set used initially will have no -short-pause (\texttt{sp}) models between words. Then once reasonable phone -models have been generated, an \texttt{sp} model will be inserted between words -to take care of any pauses introduced by the speaker.\index{flat start} - -The starting point for both sets of phone transcription is an -orthographic\index{transcription!orthographic} transcription in \HTK\ label -format. This can be created fairly easily using a text editor or a scripting -language. -An example of this is found in the RM Demo at point 0.4. Alternatively, the -script \texttt{prompts2mlf} has been provided in the \texttt{HTKTutorial} -directory. -The effect should be to convert the prompt utterances exampled above into the -following form: -\begin{verbatim} - #!MLF!# - "*/S0001.lab" - ONE - VALIDATED - ACTS - OF - SCHOOL - DISTRICTS - . - "*/S0002.lab" - TWO - OTHER - CASES - ALSO - WERE - UNDER - ADVISEMENT - . - "*/S0003.lab" - BOTH - FIGURES - (etc.) -\end{verbatim} -As can be seen, the prompt labels need to be converted into path names, each -word should be written on a single line and each utterance should be terminated -by a single period on its own. The first line of the file just identifies the -file as a \textit{Master Label File} (MLF). This is a single file containing a -complete set of transcriptions. \HTK\ allows each individual transcription to -be stored in its own file but it is more efficient to use an MLF. -\index{master label files}\index{MLF} - -The form of the path name used in the MLF deserves some explanation since it is -really a \textit{pattern} and not a name.\index{master label files!patterns} -When \HTK\ processes speech files, it expects to find a transcription (or -{\it label file}) with the same name but a different extension. Thus, if the file -\texttt{/root/sjy/data/S0001.wav} was being processed, \HTK\ would look for a -label file called \texttt{/root/sjy/data/S0001.lab}. When MLF files are used, -\HTK\ scans the file for a pattern which matches the required label file name. -However, an asterix will match any character string and hence the pattern used -in the example is in effect path independent. It therefore allows the same -transcriptions to be used with different versions of the speech data to be -stored in different locations. - -Once the word level MLF has been created, phone level MLFs can be generated -using the label editor \htool{HLEd}\index{hled@\htool{HLEd}}. For example, -assuming that the above word level MLF is stored in the file -\texttt{words.mlf}, the command -\begin{verbatim} - HLEd -l '*' -d dict -i phones0.mlf mkphones0.led words.mlf -\end{verbatim} -will generate a phone level transcription of the following form -where the \texttt{-l} option is needed to generate the path '\verb+*+' in the -output patterns. -\begin{verbatim} - #!MLF!# - "*/S0001.lab" - sil - w - ah - n - v - ae - l - ih - d - .. etc -\end{verbatim} -This process is illustrated in Fig.~\href{f:step4}. - -The \htool{HLEd} edit script \texttt{mkphones0.led} -contains the following commands -\begin{verbatim} - EX - IS sil sil - DE sp -\end{verbatim} -The expand \texttt{EX} command replaces each word in \texttt{words.mlf} -by the corresponding pronunciation in the dictionary file \texttt{dict}. -The \texttt{IS} -command inserts a silence model \texttt{sil} at the start and end of -every utterance. Finally, the delete \texttt{DE} command deletes all -short-pause \texttt{sp} labels, which are not wanted in the transcription -labels at this point. - -\centrefig{step4}{60}{Step 4} - -\subsection{Step 5 - Coding the Data} - -The final stage of data preparation is to parameterise the raw speech -waveforms into sequences of feature vectors. \HTK\ support both -FFT-based\index{analysis!FFT-based} -and LPC-based\index{analysis!LPC-based} analysis. -Here Mel Frequency Cepstral Coefficients (MFCCs)\index{MFCC coefficients}, -which are derived from FFT-based log spectra, will be used. - -Coding can be performed using the tool \htool{HCopy}\index{hcopy@\htool{HCopy}} -configured to\index{coding} -automatically convert its input into MFCC vectors. To do this, a configuration -file (\texttt{config}) is needed which specifies all of the conversion -parameters\index{parameterisation}. -Reasonable settings for these are as follows -\begin{verbatim} - # Coding parameters - TARGETKIND = MFCC_0 - TARGETRATE = 100000.0 - SAVECOMPRESSED = T - SAVEWITHCRC = T - WINDOWSIZE = 250000.0 - USEHAMMING = T - PREEMCOEF = 0.97 - NUMCHANS = 26 - CEPLIFTER = 22 - NUMCEPS = 12 - ENORMALISE = F -\end{verbatim} -Some of these settings are in fact the default setting, but they -are given explicitly here for completeness. In brief, they specify -that the target parameters are to be MFCC using $C_0$ as the energy -component, the frame period is 10msec (\HTK\ uses units of 100ns), -the output should be saved in compressed format, and a crc checksum should -be added. The FFT should use a Hamming window and the signal should -have first order preemphasis applied using a coefficient of 0.97. -The filterbank should have 26 channels and 12 MFCC coefficients should -be output. -The variable \texttt{ENORMALISE} is by default true and performs energy -normalisation on recorded audio files. It cannot be used with live audio and -since the target system is for live audio, this variable should be set to -false. - -Note that explicitly creating coded data files is not necessary, as coding can -be done "on-the-fly" from the original waveform files by specifying the -appropriate configuration file (as above) with the relevant HTK tools. However, -creating these files reduces the amount of preprocessing required during -training, which itself can be a time-consuming process. - -To run \htool{HCopy}, a list of -each source file and its corresponding output file is needed. For example, -the first few lines might look like\index{extensions!mfc@\texttt{mfc}} -\begin{verbatim} - /root/sjy/waves/S0001.wav /root/sjy/train/S0001.mfc - /root/sjy/waves/S0002.wav /root/sjy/train/S0002.mfc - /root/sjy/waves/S0003.wav /root/sjy/train/S0003.mfc - /root/sjy/waves/S0004.wav /root/sjy/train/S0004.mfc - (etc.) -\end{verbatim} -Files containing lists of files are referred to as script files\footnote{ -Not to be confused with files containing \textit{edit} scripts. -} -and\index{extensions!scp@\texttt{scp}} -by convention are given the extension \texttt{scp} (although -\HTK\ does not demand this). Script files are specified using the standard -\texttt{-S} option and their contents are read simply as extensions -to the command line. Thus, they avoid the need for command lines with -several thousand arguments\footnote{ -Most UNIX shells, especially the C shell, only allow a limited and -quite small number of arguments.}. -\index{command line!arguments}\index{command line!script files} - -\centrefig{step5}{100}{Step 5} - -\noindent -Assuming that the above script is stored in the file \texttt{codetr.scp}, -the training data would be coded by executing -\begin{verbatim} - HCopy -T 1 -C config -S codetr.scp -\end{verbatim} -This is illustrated in Fig.~\href{f:step5}. A similar procedure is -used to code the test data (using \verb|TARGETKIND = MFCC_0_D_A| in -config) after which all of the pieces are in place to start training -the HMMs. - - -\mysect{Creating Monophone HMMs}{egcreatmono} - -In this section, the creation of a well-trained set of single-Gaussian -monophone HMMs will be described. The starting point will be -a set of identical monophone HMMs in which every mean and variance is -identical. These are then retrained, short-pause models are -added and the silence model is extended slightly. The monophones -are then retrained. - -Some of the dictionary entries have multiple pronunciations. However, -when \htool{HLEd} was used to expand the word level MLF to create the -phone level MLFs, it arbitrarily selected the first pronunciation it found. -Once reasonable monophone HMMs have been created, the recogniser tool -\htool{HVite} can be used to perform a \textit{forced alignment} -of\index{forced alignment} -the training data. By this means, a new phone level MLF is created in which -the choice of pronunciations depends on the acoustic evidence. This new -MLF can be used to perform a final re-estimation of the monophone HMMs. -\index{monophone HMM!construction of} - -\subsection{Step 6 - Creating Flat Start Monophones} - -The first step in HMM training is to define a prototype model. The -parameters of this model are not important, its purpose is to -define the model topology. For phone-based systems, a good -topology to use is 3-state left-right with no skips such as the following -\begin{verbatim} - ~o 39 - ~h "proto" - - 5 - 2 - 39 - 0.0 0.0 0.0 ... - 39 - 1.0 1.0 1.0 ... - 3 - 39 - 0.0 0.0 0.0 ... - 39 - 1.0 1.0 1.0 ... - 4 - 39 - 0.0 0.0 0.0 ... - 39 - 1.0 1.0 1.0 ... - 5 - 0.0 1.0 0.0 0.0 0.0 - 0.0 0.6 0.4 0.0 0.0 - 0.0 0.0 0.6 0.4 0.0 - 0.0 0.0 0.0 0.7 0.3 - 0.0 0.0 0.0 0.0 0.0 - -\end{verbatim} -where each ellipsed vector is of length 39. This number, 39, is computed from -the length of the parameterised static vector (\texttt{MFCC\_0} = 13) plus -the delta coefficients (+13) plus the acceleration coefficients (+13). - -The \HTK\ tool \htool{HCompV}\index{hcompv@\htool{HCompV}} will scan a set of data files, compute -the global mean and variance and set all of the Gaussians in a given HMM -to have the same mean and variance.\index{flat start} -Hence, assuming that a list of all the training files is stored in -\texttt{train.scp}, the command -\begin{verbatim} - HCompV -C config -f 0.01 -m -S train.scp -M hmm0 proto -\end{verbatim} -will create a new version of \texttt{proto} in the directory \texttt{hmm0} -in which the zero means and unit variances above have been replaced -by the global speech means and variances. -Note that the prototype HMM defines the parameter kind as \texttt{MFCC\_0\_D\_A} (Note: 'zero' not 'oh'). -This means that delta and acceleration coefficients are to be computed and -appended to the static MFCC coefficients computed and stored during the -coding process described above. To ensure that these are computed during loading, -the configuration file \texttt{config} should be modified -to change the target kind, i.e.\ the configuration file entry for -\texttt{TARGETKIND} should be changed to -\begin{verbatim} - TARGETKIND = MFCC_0_D_A -\end{verbatim} -\htool{HCompV} has a number of options specified for it. The -\texttt{-f} option causes a variance floor -macro\index{variance floor macros} (called \texttt{vFloors}) to be generated which -is equal to 0.01 times the global variance. This is a vector -of values which will be used to set a floor on the variances estimated -in the subsequent steps. The \texttt{-m} option asks for means to be computed -as well as variances. Given this -new prototype model stored in the directory -\texttt{hmm0}, a \textit{Master Macro File}\index{master macro files} -(MMF) called \texttt{hmmdefs} \index{MMF} -containing a copy for each of the required monophone HMMs is constructed -by manually copying the prototype and relabelling it for each required -monophone (including ``sil''). -The format of an MMF is similar to that -of an MLF and it serves a similar purpose in that it avoids having -a large number of individual HMM definition files\index{HMM!definition files} -(see Fig.~\href{f:MMFeg}). - -\centrefig{MMFeg}{85}{Form of Master Macro Files} - -The flat start monophones stored in the directory \texttt{hmm0} are -re-estimated using the embedded re-estimation\index{embedded re-estimation} -tool \htool{HERest}\index{herest@\htool{HERest}} -invoked as follows -\begin{verbatim} - HERest -C config -I phones0.mlf -t 250.0 150.0 1000.0 \ - -S train.scp -H hmm0/macros -H hmm0/hmmdefs -M hmm1 monophones0 -\end{verbatim} -The effect of this is to load all the models in \texttt{hmm0} which are -listed in -the model list \texttt{monophones0} (\texttt{monophones1} less the short -pause (\texttt{sp}) model). These are then re-estimated them using the data -listed in \texttt{train.scp} and the new model set is stored in the -directory \texttt{hmm1}. -Most of the files used in this invocation of \htool{HERest} have -already been described. The exception is the file \texttt{macros}. -This should contain a so-called \textit{global options} macro and -the variance floor macro \texttt{vFloors} generated earlier. The global options macro -simply defines the HMM parameter kind and the vector size i.e. -\begin{verbatim} - ~o 39 -\end{verbatim} -See Fig.~\href{f:MMFeg}. This can be combined with \texttt{vFloors} into a text file -called \texttt{macros}. - -\centrefig{step6}{85}{Step 6} - -The \texttt{-t} option sets the pruning\index{pruning} thresholds to be used during -training. Pruning limits the range of state alignments that the -forward-backward algorithm includes in its summation and it -can reduce the amount of computation required by an -order of magnitude. For most training files, a very tight pruning threshold -can be set, however, some training files will provide poorer acoustic -matching and in consequence a wider pruning beam is needed. \htool{HERest} -deals with this by having an auto-incrementing pruning threshold. In the -above example, pruning is normally 250.0. If re-estimation fails on any -particular file, the threshold is increased by 150.0 and the file is -reprocessed. This is repeated until either the file is successfully -processed or the pruning limit of 1000.0 is exceeded. At this point it -is safe to assume that there -is a serious problem with the training file and hence the fault should be fixed -(typically it will be an incorrect transcription) or the training file should be discarded. -The process leading to the initial set of monophones in the directory -\texttt{hmm0} is illustrated in Fig.~\href{f:step6}. - -Each time \htool{HERest} is run it performs a single re-estimation. Each new -HMM set is stored in a new directory. Execution of \htool{HERest} should be -repeated twice more, changing the name of the input and output directories (set -with the options \texttt{-H} and \texttt{-M}) each time, until the directory -\texttt{hmm3} contains the final set of initialised monophone HMMs. - -\subsection{Step 7 - Fixing the Silence Models} - -\sidefig{egsils}{55}{Silence Models}{-4}{ -The previous step has generated a 3 state left-to-right HMM for each -phone and also a HMM for the silence model\index{silence model} \texttt{sil}. The -next step is to add extra transitions from states 2 to 4 and from -states 4 to 2\index{transitions!adding them} -in the silence model. The idea here is to make the model more robust -by allowing individual states to absorb the various -impulsive noises in the training data. The backward skip allows this to happen -without committing the model to transit to the following word. - -Also, at this point, a 1 state -short pause\index{short pause} \texttt{sp} model should be created. -This should be a so-called \textit{tee-model}\index{tee-models} -which has a direct transition from entry to exit node. -This \texttt{sp} has its emitting state tied to the centre state of the silence model. -The required topology of the two silence models is shown in Fig.~\href{f:egsils}. -} - -These silence models can be created in two stages -\begin{itemize} -\item -Use a text editor on the file \texttt{hmm3/hmmdefs} to copy the centre state of -the \texttt{sil} model to -make a new \texttt{sp} model and store the resulting MMF \texttt{hmmdefs}, which -includes the new \texttt{sp} model, in the new directory \texttt{hmm4}. - -\item Run the HMM editor \htool{HHEd}\index{hhed@\htool{HHEd}} to add -the extra transitions required -and tie the \texttt{sp} state to the centre \texttt{sil} state -\end{itemize} - -\htool{HHEd} works in a similar way to \htool{HLEd}. It applies a set of commands in -a script to modify a set of HMMs. In this case, it is executed as follows -\begin{verbatim} - HHEd -H hmm4/macros -H hmm4/hmmdefs -M hmm5 sil.hed monophones1 -\end{verbatim} -where \texttt{sil.hed} contains the following commands -\begin{verbatim} - AT 2 4 0.2 {sil.transP} - AT 4 2 0.2 {sil.transP} - AT 1 3 0.3 {sp.transP} - TI silst {sil.state[3],sp.state[2]} -\end{verbatim} -The \texttt{AT}\index{at@\texttt{AT} command} commands add transitions to the -given transition matrices and the final \texttt{TI}\index{ti@\texttt{TI} -command} command creates a tied-state called \texttt{silst}. The parameters of -this tied-state are stored in the \texttt{hmmdefs} file and within each silence -model, the original state parameters are replaced by the name of this -macro\index{macros}. Macros are described in more detail below. For now it is -sufficient to regard them simply as the mechanism by which -\HTK\ implements parameter sharing. -Note that the phone list used here has been changed, because the original list -\texttt{monophones0} has been extended by the new \texttt{sp} model. The new -file is called \texttt{monophones1} and has been used in the above \htool{HHEd} -command. - -\centrefig{step7}{110}{Step 7} - -Finally, another two passes of \htool{HERest} are applied using the phone -transcriptions with \texttt{sp} models between words. This leaves the -set of monophone HMMs created so far in the directory \texttt{hmm7}. -This step is illustrated in Fig.~\href{f:step7} - -\subsection{Step 8 - Realigning the Training Data} - -As noted earlier, the dictionary contains multiple pronunciations for -some words, particularly function words. The phone models created so -far can be used to \textit{realign} the training data and create new -transcriptions. This can be done with a single invocation of the\index{realignment} -\HTK\ recognition tool \htool{HVite}\index{hvite@\htool{HVite}}, viz -\begin{verbatim} - HVite -l '*' -o SWT -b silence -C config -a -H hmm7/macros \ - -H hmm7/hmmdefs -i aligned.mlf -m -t 250.0 -y lab \ - -I words.mlf -S train.scp dict monophones1 -\end{verbatim} -This command uses the HMMs stored in \texttt{hmm7} to transform the input -word level transcription \texttt{words.mlf} to the new phone level transcription -\texttt{aligned.mlf} using the pronunciations stored in the dictionary -\texttt{dict} (see Fig~\href{f:step8}). The key difference between this -operation and the original word-to-phone mapping performed by \htool{HLEd} -in step 4 is that the recogniser considers all pronunciations for each -word and outputs the pronunciation that best matches the acoustic data. -\index{phone alignment}\index{phone mapping} - -In the above, the \texttt{-b} option is used to insert a silence model\index{silence model} -at the start and end of each utterance. The name \texttt{silence} is used -on the assumption that the dictionary contains an entry -\begin{verbatim} - silence sil -\end{verbatim} -Note that the dictionary should be sorted firstly by case (upper case first) and secondly -alphabetically. The \texttt{-t} option sets a pruning level of 250.0 and the \texttt{-o} -option is used to suppress the printing of scores, word names and time -boundaries in the output MLF. - -\centrefig{step8}{85}{Step 8} - -Once the new phone alignments have been created, another 2 passes -of \htool{HERest} can be applied to reestimate the HMM set parameters -again. Assuming that this is done, the final monophone HMM set will -be stored in directory \texttt{hmm9}. - -When aligning the data, it is sometimes clear that there is significant -amounts of silence at the beginning and end of some utterances (to spot this the -time-stamp information would need to be output during the alignment -so the option {\tt -o SW} would need to be used). Rather than explicitly -extracting the portion of the utterance with the appropriate amount of silence at the start and end, the script file specified using the {\tt -S} option can -be used for this purpose. Suppose that \texttt{train.scp} contains the -following lines -\begin{verbatim} -/root/sjy/data/S0001.mfc -/root/sjy/data/S0002.mfc -/root/sjy/data/S0003.mfc -... -\end{verbatim} -To specify a particular segmentation from this a new scp-file would be -generated containing -\begin{verbatim} -S0001.mfc=/root/sjy/data/S0001.mfc[20,297] -S0002.mfc=/root/sjy/data/S0002.mfc[25,496] -S0003.mfc=/root/sjy/data/S0003.mfc[22,308] -... -\end{verbatim} -Where for the first utterance only the segment from the 21st frame (the first frame is labelled as frame 0) to the 298th frame inclusive of the original MFCC file should be used. Note with this form of scp file the label file would also have to be modified to (here the word level MLF is considered, but both word and phone-level MLFs would need to be changed) -\begin{verbatim} - #!MLF!# - "S0001.lab" - ONE - VALIDATED - ACTS - OF - SCHOOL - DISTRICTS - . - "S0002.lab" - TWO - .... -\end{verbatim} -This is a general process for specifying segmentations of the training -and test data without explicitly extracting the data (and thus requiring a new -MFCC file to be stored). For tasks where data must be segmented as part of the -recognition task, for example Broadcast News transcription, this form of -approach is very useful. - -Note for the rest of this tutorial it is assumed that this segmentation -process was {\em not} necessary. - -\mysect{Creating Tied-State Triphones}{egcreattri} - -Given a set of monophone HMMs, the final stage of model building is to create -context-dependent triphone\index{HMM!triphones} HMMs. This is done in -two steps. Firstly, the -monophone transcriptions are converted to triphone transcriptions and a set -of triphone models are created by copying the monophones and re-estimating. -Secondly, similar acoustic states of these triphones are tied to ensure that -all state distributions can be robustly estimated. - -\subsection{Step 9 - Making Triphones from Monophones} - -Context-dependent triphones can be made by simply -cloning\index{HMM!cloning}\index{cloning} monophones and then -re-estimating using triphone transcriptions. The latter should be created -first using \htool{HLEd}\index{hled@\htool{HLEd}} because -a side-effect is to generate a list of all -the triphones for which there is at least one example in the training data. -That is, executing -\begin{verbatim} - HLEd -n triphones1 -l '*' -i wintri.mlf mktri.led aligned.mlf -\end{verbatim} -will convert the monophone transcriptions in \texttt{aligned.mlf} to -an equivalent set of triphone transcriptions in \texttt{wintri.mlf}. -At the same time, a list of triphones is written to the file \texttt{triphones1}. -The edit script \texttt{mktri.led} contains the commands -\begin{verbatim} - WB sp - WB sil - TC -\end{verbatim} -The two \texttt{WB}\index{wb@\texttt{WB} command} commands define \texttt{sp} and \texttt{sil} -as \textit{word boundary symbols}. These then block the addition of -context in the \texttt{TI} command, seen in the following script, which converts all phones -(except word boundary symbols) to triphones -\index{triphones!word internal}\index{triphones!from monophones}\index{triphones!by cloning}. -For example, -\begin{verbatim} - sil th ih s sp m ae n sp ... -\end{verbatim} -becomes -\begin{verbatim} - sil th+ih th-ih+s ih-s sp m+ae m-ae+n ae-n sp ... -\end{verbatim} -This style of triphone transcription is referred to as \textit{word internal}. -\index{word internal} -Note that some biphones will also be generated as contexts at word boundaries -will sometimes only include two phones. - -The cloning of models can be done efficiently using the HMM editor \htool{HHEd}: -\begin{verbatim} - HHEd -B -H hmm9/macros -H hmm9/hmmdefs -M hmm10 - mktri.hed monophones1 -\end{verbatim} -where the edit script \texttt{mktri.hed} -contains a clone command \texttt{CL} followed by \texttt{TI} commands to tie all of -the transition matrices in each triphone\index{triphones!notation} set, that is: -\begin{verbatim} - CL triphones1 - TI T_ah {(*-ah+*,ah+*,*-ah).transP} - TI T_ax {(*-ax+*,ax+*,*-ax).transP} - TI T_ey {(*-ey+*,ey+*,*-ey).transP} - TI T_b {(*-b+*,b+*,*-b).transP} - TI T_ay {(*-ay+*,ay+*,*-ay).transP} - ... -\end{verbatim} -The file \texttt{mktri.hed} can be generated using the {\em Perl} script -\texttt{maketrihed} included in the \texttt{HTKTutorial} directory. -When running the \htool{HHEd}\index{hled@\htool{HHEd}} command you -will get warnings about trying to tie transition matrices for the sil -and sp models. Since neither model is context-dependent there aren't -actually any matrices to tie. - -The clone command \texttt{CL}\index{cl@\texttt{CL} command} takes as its -argument the name of the file containing the list of triphones (and -biphones)\index{cloning}\index{parameter tying}\index{item lists} generated -above. For each model of the form \texttt{a-b+c} in this list, it looks for -the monophone \texttt{b} and makes a copy of it.\index{tying!transition -matrices} Each \texttt{TI} command takes as its argument the name of a macro -and a list of HMM components. The latter uses a notation which attempts to -mimic the hierarchical structure of the HMM parameter set in which the -transition matrix \texttt{transP} can be regarded as a sub-component of each -HMM. The list of items within brackets are patterns designed to match the set -of triphones, right biphones and left biphones for each phone. - -\centrefig{egtranstie}{80}{Tying Transition Matrices} - -Up to now macros and tying have only been mentioned in passing. Although a -full explanation must wait until chapter~\ref{c:HMMDefs}, a brief explanation -is warranted here. Tying means that one or more HMMs share the same set of -parameters. On the left side of Fig.~\href{f:egtranstie}, two HMM definitions -are shown. Each HMM has its own individual transition matrix. On the right -side, the effect of the first \texttt{TI} command in the edit script -\texttt{mktri.hed} is shown. The individual transition matrices have been -replaced by a reference to a \textit{macro} called \texttt{T\_ah} which -contains a matrix shared by both models. When reestimating tied parameters, -the data which would have been used for each of the original untied parameters -is pooled so that a much more reliable estimate can be obtained. - -Of course, tying could affect performance if performed indiscriminately. -Hence, it is important to only tie parameters which have little effect on -discrimination. This is the case here where the transition parameters do not -vary significantly with acoustic context but nevertheless need to be estimated -accurately. Some triphones will occur only once or twice and so very poor -estimates would be obtained if tying was not done. These problems of data -insufficiency will affect the output distributions too, but this will be dealt -with in the next step. - -Hitherto, all HMMs have been stored in text format and could be inspected like -any text file. Now however, the model files will be getting larger and space -and load/store times become an issue. For increased efficiency, -\HTK\ can store and load MMFs in binary\index{HMM!binary storage} -format. Setting the standard \texttt{-B} option causes this to happen. - -\sidefig{step9}{55}{Step 9}{-4}{ -Once the context-dependent models have been cloned, the new triphone set can be -re-estimated using \htool{HERest}. This is done as previously except that the -monophone model list is replaced by a triphone list and the triphone -transcriptions are used in place of the monophone transcriptions. - -For the final pass of \htool{HERest}, the \texttt{-s} option should be used to -generate a file of state occupation statistics called \texttt{stats}. In -combination with the means and variances, these enable likelihoods to be -calculated for clusters of states and are needed during the state-clustering -process \index{statistics!state occupation} described below. -Fig.~\href{f:step9} illustrates this step of the HMM construction -procedure. Re-estimation should be again done twice, so that the resultant -model sets will ultimately be saved in \texttt{hmm12}. -} -\begin{verbatim} - HERest -B -C config -I wintri.mlf -t 250.0 150.0 1000.0 -s stats \ - -S train.scp -H hmm11/macros -H hmm11/hmmdefs -M hmm12 triphones1 -\end{verbatim} - - -\subsection{Step 10 - Making Tied-State Triphones} - -The outcome of the previous stage is a set of triphone HMMs with all triphones -in a phone set sharing the same transition matrix. When estimating these -models, many of the variances in the output distributions -will have been floored since there will be\index{variance!flooring problems}\index{state tying} -\index{tying!states}\index{data insufficiency} -insufficient data associated with many of the states. The last step in -the model building process is to tie states within triphone sets -in order to share data and thus be able to make robust parameter estimates. - -In the previous step, the \texttt{TI} command was used to -explicitly tie all members of a set of transition matrices together. -However, -the choice of which states to tie requires a bit more subtlety since -the performance of the recogniser depends crucially on how accurate -the state output distributions capture the statistics of the speech data. - -\htool{HHEd} provides two mechanisms which allow states to be clustered -and\index{state clustering} -then each cluster tied. The first is data-driven and uses a similarity -measure between states. The second uses decision trees\index{decision trees} -and is based on asking questions about the left and right contexts of each -triphone. The decision tree attempts to find those contexts which make the largest -difference to the acoustics and which should therefore distinguish clusters. - -Decision tree state tying is performed by running \htool{HHEd} -in the normal way, i.e. -\begin{verbatim} - HHEd -B -H hmm12/macros -H hmm12/hmmdefs -M hmm13 \ - tree.hed triphones1 > log -\end{verbatim} -Notice that the output is saved in a log file. This is important since -some tuning of thresholds is usually needed. - -The edit script \texttt{tree.hed}, which contains the instructions regarding -which contexts to examine for possible clustering, can be rather long and -complex. A script for automatically generating this file, \texttt{mkclscript}, -is found in the RM Demo. A version of the \texttt{tree.hed} script, which can -be used with this tutorial, is included in the \texttt{HTKTutorial} directory. -Note that this script is only capable of creating the TB commands (decision -tree clustering of states). The questions (QS) still need defining by -the user. There is, however, an example list of questions which may be -suitable to some tasks (or at least useful as an example) supplied with the -RM demo (lib/quests.hed). The entire script appropriate for clustering -English phone models is too long to show here in the text, however, its main -components are given by the following fragments: - -\begin{verbatim} - - RO 100.0 stats - TR 0 - QS "L_Class-Stop" {p-*,b-*,t-*,d-*,k-*,g-*} - QS "R_Class-Stop" {*+p,*+b,*+t,*+d,*+k,*+g} - QS "L_Nasal" {m-*,n-*,ng-*} - QS "R_Nasal" {*+m,*+n,*+ng} - QS "L_Glide" {y-*,w-*} - QS "R_Glide" {*+y,*+w} - .... - QS "L_w" {w-*} - QS "R_w" {*+w} - QS "L_y" {y-*} - QS "R_y" {*+y} - QS "L_z" {z-*} - QS "R_z" {*+z} - - TR 2 - - TB 350.0 "aa_s2" {(aa, *-aa, *-aa+*, aa+*).state[2]} - TB 350.0 "ae_s2" {(ae, *-ae, *-ae+*, ae+*).state[2]} - TB 350.0 "ah_s2" {(ah, *-ah, *-ah+*, ah+*).state[2]} - TB 350.0 "uh_s2" {(uh, *-uh, *-uh+*, uh+*).state[2]} - .... - TB 350.0 "y_s4" {(y, *-y, *-y+*, y+*).state[4]} - TB 350.0 "z_s4" {(z, *-z, *-z+*, z+*).state[4]} - TB 350.0 "zh_s4" {(zh, *-zh, *-zh+*, zh+*).state[4]} - - TR 1 - - AU "fulllist" - CO "tiedlist" - - ST "trees" -\end{verbatim} -Firstly, the \texttt{RO}\index{ro@\texttt{RO} command} command is used to set -the outlier threshold\index{outlier threshold} to 100.0 and load the statistics -file\index{statistics file} generated at the end of the previous step. The -outlier threshold determines the minimum occupancy\index{minimum occupancy} of -any cluster and prevents a single outlier state forming a singleton cluster -just because it is acoustically very different to all the other states. The -\texttt{TR}\index{tr@\texttt{TR} command} command sets the trace level to zero -in preparation for loading in the questions. Each -\texttt{QS}\index{qs@\texttt{QS} command} command loads a single question and -each question is defined by a set of contexts. For example, the first -\texttt{QS} command defines a question called \texttt{L\_Class-Stop} which is -true if the left context is either of the stops \texttt{p}, -\texttt{b}, \texttt{t}, \texttt{d}, \texttt{k} or \texttt{g}. - -\sidefig{step10}{50}{Step 10}{-4}{} -Notice that for a triphone system, it is necessary to include questions -referring to both the right and left contexts of a phone. The questions should -progress from wide, general classifications (such as consonant, vowel, nasal, -diphthong, etc.) to specific instances of each phone. -Ideally, the full set of questions loaded using the \texttt{QS} command would -include every possible context which can influence the acoustic realisation of -a phone, and can include any linguistic or phonetic classification which may be -relevant. There is no harm in creating extra unnecessary questions, because -those which are determined to be irrelevant to the data will be ignored. - -The second \texttt{TR} command enables intermediate level progress reporting so -that each of the following \texttt{TB} commands\index{tb@\texttt{TB} command} -can\index{tree building} be monitored. Each of these \texttt{TB} commands -clusters one specific set of states. For example, the first \texttt{TB} -command applies to the first emitting state of all context-dependent models for -the phone \texttt{aa}. - -Each \texttt{TB} command works as follows. Firstly, each set of states defined -by the final argument is pooled to form a single cluster. Each question in the -question set loaded by the \texttt{QS} commands is used to split the pool into -two sets. The use of two sets rather than one, allows the log likelihood of -the training data to be increased and the question which maximises this -increase is selected for the first branch of the tree. The process is then -repeated until the increase in log likelihood achievable by any question at any -node is less than the threshold specified by the first argument (350.0 in this -case). - -Note that the values given in the \texttt{RO} and \texttt{TB} commands affect -the degree of tying and therefore the number of states output in the clustered -system. The values should be varied according to the amount of training data -available. -As a final step to the clustering, any pair of clusters which can be merged -\index{cluster merging} such that the decrease in log likelihood is below -the threshold is merged. On completion, the states in each cluster $i$ are -tied to form a single shared state with macro name \texttt{xxx\_i} where -\texttt{xxx} is the name given by the second argument of the \texttt{TB} -command. - -The set of triphones used so far only includes those needed to cover the -training data. The \texttt{AU} command takes as its argument a new list of -triphones expanded to include all those needed for recognition. This list can -be generated, for example, by using \htool{HDMan} on the entire dictionary (not -just the training dictionary), converting it to triphones using the command -\texttt{TC} and outputting a list of the distinct triphones to a file using the -option \texttt{-n} - -\begin{verbatim} - HDMan -b sp -n fulllist -g global.ded -l flog beep-tri beep -\end{verbatim} - -\noindent -The -b sp option specifies that the sp phone is used as a word boundary, and so -is excluded from triphones. The effect of the \texttt{AU} command is to use the -decision trees to synthesise all of the new previously unseen triphones in the new -list. -\index{au@\texttt{AU} command} - -Once all state-tying has been completed and new models synthesised, -some models may share exactly -the same 3 states and transition matrices and are thus identical. -The \texttt{CO} command\index{co@\texttt{CO} command}\index{model compaction} is used -to compact the model set by finding all identical models and tying them -together\footnote{ -Note that if the transition matrices had not been tied, the \texttt{CO} -command would be ineffective since all models would be different by -virtue of their unique transition matrices.}, producing a new list of models -called \texttt{tiedlist}. - -One of the advantages of using decision tree clustering is that it allows -previously\index{unseen triphones} -unseen triphones to be synthesised. To do this, the trees must -be saved and this is done by the \texttt{ST} command\index{st@\texttt{ST} command}. -Later if new previously unseen triphones are required, for example in the -pronunciation of a new vocabulary item, the existing model set can be -reloaded into \htool{HHEd}, the trees reloaded using -the \texttt{LT} command\index{lt@\texttt{LT} command} -and then a new extended list of triphones created using -the \texttt{AU} command.\index{au@\texttt{AU} command} - -After \htool{HHEd} has completed, the effect of tying can be studied and -the thresholds adjusted if necessary. The log file will -include summary statistics which give the total number of physical -states remaining and the number of models after compacting. - -Finally, and for the last time, the models are re-estimated twice using -\htool{HERest}. Fig.~\href{f:step10} illustrates this last step in the HMM -build process. The trained models are then contained in the file -\texttt{hmm15/hmmdefs}. - -\mysect{Recogniser Evaluation}{egrectest} - -The recogniser is now complete and its performance can be evaluated. -The recognition network and dictionary have already been constructed, -and test data has been recorded. -Thus, all that is necessary is to run the recogniser and -then evaluate the results using the \HTK\ analysis tool \htool{HResults}\index{recogniser evaluation} - -\subsection{Step 11 - Recognising the Test Data} - -Assuming that \texttt{test.scp} holds a list of the coded test files, -then each test file will be recognised and its transcription output to -an MLF called \texttt{recout.mlf} by executing the following -\begin{verbatim} - HVite -H hmm15/macros -H hmm15/hmmdefs -S test.scp \ - -l '*' -i recout.mlf -w wdnet \ - -p 0.0 -s 5.0 dict tiedlist -\end{verbatim} -The options \texttt{-p} and \texttt{-s} set the \textit{word insertion penalty} -\index{word insertion penalty} -and the \textit{grammar scale factor}, \index{grammar scale factor} -respectively. The word insertion penalty -is a fixed value added to each token when it transits from the end of one word -to the start of the next. The grammar scale factor is the amount by which -the language model probability is scaled before being -added to each token as it transits from the end of one word -to the start of the next. These parameters can have a significant effect -on recognition performance and hence, some tuning on development test data -is well worthwhile. - -The dictionary contains monophone transcriptions whereas the supplied HMM list -contains word internal triphones. \htool{HVite}\index{hvite@\htool{HVite}} -will make the necessary -conversions when loading the word network \texttt{wdnet}. However, -if the HMM list contained both monophones and context-dependent phones -then \htool{HVite} would become confused. The required form of -word-internal network\index{networks!word-internal} -expansion can be forced by setting the configuration variable -\texttt{FORCECXTEXP}\index{forcecxtexp@\texttt{FORCECXTEXP}} to true and -\texttt{ALLOWXWRDEXP}\index{allowxwrdexp@\texttt{ALLOWXWRDEXP}} to -false (see chapter~\ref{c:netdict} for details).\index{accuracy figure} - -Assuming that the MLF \texttt{testref.mlf} contains word level transcriptions -for each test file\footnote{The \htool{HLEd} tool may have to be used to insert silences -at the start and end of each transcription or alternatively -\htool{HResults} can be used to ignore silences (or any other symbols) using -the \texttt{-e} option.}, the actual -performance can be determined by running -\htool{HResults} as follows -\begin{verbatim} - HResults -I testref.mlf tiedlist recout.mlf -\end{verbatim} -the result would be a print-out of the form -\begin{verbatim} - ====================== HTK Results Analysis ============== - Date: Sun Oct 22 16:14:45 1995 - Ref : testrefs.mlf - Rec : recout.mlf - ------------------------ Overall Results ----------------- - SENT: %Correct=98.50 [H=197, S=3, N=200] - WORD: %Corr=99.77, Acc=99.65 [H=853, D=1, S=1, I=1, N=855] - ========================================================== -\end{verbatim} -The line starting with \texttt{SENT:} indicates that of the 200 test utterances, -197 (98.50\%) were correctly recognised. The following line starting with \texttt{WORD:} -gives the word level statistics and indicates that of the 855 words in total, -853 (99.77\%) were recognised correctly. There was 1 deletion error (\texttt{D}), -1 substitution\index{recognition!results analysis} -error (\texttt{S}) and 1 insertion error (\texttt{I}). The accuracy figure (\texttt{Acc}) -of 99.65\% is lower than the percentage correct (\texttt{Cor}) because it takes -account of the insertion errors which the latter ignores. - -\centrefig{step11}{120}{Step 11} - -\mysect{Running the Recogniser Live}{egreclive} - -The recogniser can also be run with live input\index{live input}. -\index{recognition!direct audio input} -To do this it is only -necessary to set the configuration variables needed to convert the input -audio to the correct form of parameterisation. Specifically, the following -needs to be appended to the configuration file \texttt{config} to -create a new configuration file \texttt{config2} -\begin{verbatim} - # Waveform capture - SOURCERATE=625.0 - SOURCEKIND=HAUDIO - SOURCEFORMAT=HTK - ENORMALISE=F - USESILDET=T - MEASURESIL=F - OUTSILWARN=T -\end{verbatim} -These indicate that the source is direct audio with sample period 62.5 -$\mu$secs. The silence detector is enabled and a measurement of the background -speech/silence levels should be made at start-up. The final line makes sure -that a warning is printed when this silence measurement is being made. - -Once the configuration file has been set-up for direct audio input, -\htool{HVite} can be run as in the previous step except that no files need be -given as arguments - -\begin{verbatim} - HVite -H hmm15/macros -H hmm15/hmmdefs -C config2 \ - -w wdnet -p 0.0 -s 5.0 dict tiedlist -\end{verbatim} - -On start-up, \htool{HVite} will prompt the user to speak an -arbitrary sentence (approx. 4 secs) in order to measure the speech and -background silence levels. It will then repeatedly recognise and, if trace -level bit 1 is set, it will output each utterance to the terminal. A typical -session is as follows\index{recognition!output} - -\begin{verbatim} - Read 1648 physical / 4131 logical HMMs - Read lattice with 26 nodes / 52 arcs - Created network with 123 nodes / 151 links - - READY[1]> - Please speak sentence - measuring levels - Level measurement completed - DIAL FOUR SIX FOUR TWO FOUR OH - == [303 frames] -95.5773 [Ac=-28630.2 LM=-329.8] (Act=21.8) - - READY[2]> - DIAL ZERO EIGHT SIX TWO - == [228 frames] -99.3758 [Ac=-22402.2 LM=-255.5] (Act=21.8) - - READY[3]> - etc -\end{verbatim} -During loading, information will be printed out regarding the different -recogniser components. The physical models are the distinct HMMs used by -the system, while the logical models include all model names. The number -of logical models is higher than the number of physical models because many -logically distinct models have been determined to be physically identical -and have been merged during the previous model building steps. The lattice -information refers to the number of links and nodes in the recognition syntax. -The network information refers to actual recognition network built by -expanding the lattice using the current HMM set, dictionary and any context -expansion rules specified. -After each utterance, the numerical information gives the total number -of frames, the average log likelihood per frame, the total acoustic score, -the total language model score and the average number of models active. - -Note that if it was required to recognise a new name, then the -following two changes would be needed -\begin{enumerate} -\item the grammar would be altered to include the new name -\item a pronunciation for the new name would be added to the dictionary -\end{enumerate} -If the new name required triphones which did not exist, then they could be -created by loading the existing triphone set into -\htool{HHEd}\index{hhed@\htool{HHEd}}, loading the decision trees using the -\texttt{LT} command\index{lt@\texttt{LT} command} and then using the -\texttt{AU} command\index{au@\texttt{AU} command} to generate a new complete -triphone set.\index{triphones!synthesising unseen} - -\mysect{Adapting the HMMs}{exsysadapt} - -The previous sections have described the stages required to build a simple -voice dialling system. To simplify this process, speaker dependent models were -developed using training data from a single user. Consequently, recognition -accuracy for any other users would be poor. -To overcome this limitation, a set of speaker independent models could be -constructed, but this would require large amounts of training data from a -variety of speakers. An alternative is to adapt the current speaker dependent -models to the characteristics of a new speaker using a small amount of -training or adaptation data\index{adaptation}. In general, adaptation -techniques are applied to well trained speaker independent model sets to -enable them to better model the characteristics of particular speakers. - -\HTK\ supports both supervised adaptation\index{adaptation!supervised adaptation}, -where the true transcription of the data is known and unsupervised -adaptation\index{adaptation!unsupervised adaptation} where the -transcription is hypothesised. -In \HTK\ supervised adaptation is performed offline by -\htool{HERest} using maximum likelihood linear transformations -(for example MLLR, CMLLR)\index{adaptation!MLLR} -and/or maximum a-posteriori (MAP)\index{adaptation!MAP} techniques to -estimate -a series of transforms or a transformed model set, that reduces the mismatch -between the current model set and the adaptation data. Unsupervised -adaptation is provided by \htool{HVite}, using just linear transformations. - -The following sections describe offline supervised adaptation (using -MLLR) with the use of \htool{HERest}. - -\subsection{Step 12 - Preparation of the Adaptation Data} - -As in normal recogniser development, the first stage in adaptation involves -data preparation. Speech data from the new user is required for both adapting -the models and testing the adapted system. The data can be obtained in a -similar fashion to that taken to prepare the original test data. -Initially, prompt lists for the adaptation and test data will be generated using -\htool{HSGen}. For example, typing - -\begin{verbatim} - HSGen -l -n 20 wdnet dict > promptsAdapt - HSGen -l -n 20 wdnet dict > promptsTest -\end{verbatim} - -\noindent -would produce two prompt files for the adaptation and test data. The amount of -adaptation data required will normally be found empirically, but a performance -improvement should be observable after just 30 seconds of speech. -In this case, around 20 utterances should be sufficient. -\htool{HSLab} can be used to record the associated speech. - -Assuming that the script files \texttt{codeAdapt.scp} and \texttt{codeTest.scp} -list the source and output files for the adaptation and test data respectively -then both sets of speech can then be coded using the \htool{HCopy} commands given -below. - -\begin{verbatim} - HCopy -C config -S codeAdapt.scp - HCopy -C config -S codeTest.scp -\end{verbatim} - -\noindent -The final stage of preparation involves generating context dependent phone -transcriptions of the adaptation data and word level transcriptions of the test -data for use in adapting the models and evaluating their performance. -The transcriptions of the test data can be obtained using \texttt{prompts2mlf}. -To minimise the problem of multiple pronunciations the phone level -transcriptions of the adaptation data can be obtained by using \htool{HVite} -to perform a \textit{forced alignment} of the adaptation data. Assuming -that word level transcriptions are listed in \texttt{adaptWords.mlf}, then the -following command will place the phone transcriptions in -\texttt{adaptPhones.mlf}. - -\begin{verbatim} - HVite -l '*' -o SWT -b silence -C config -a -H hmm15/macros \ - -H hmm15/hmmdefs -i adaptPhones.mlf -m -t 250.0 \ - -I adaptWords.mlf -y lab -S adapt.scp dict tiedlist -\end{verbatim} - -\subsection{Step 13 - Generating the Transforms} -\index{adaptation!generating transforms} \htool{HERest} provides -support for a range of linear transformations and possible number of -transformations. Regression class trees\index{adaptation!regression -tree} can be used to dynamically specify the number of transformations -to be generated, or the number may be pre-determined using a set of -baseclasses. The \HTK\ tool \htool{HHEd} can be used to build a -regression class tree and store it along with a set of baseclasses. For -example, - -\begin{verbatim} - HHEd -B -H hmm15/macros -H hmm15/hmmdefs -M classes regtree.hed tiedlist -\end{verbatim} - -\noindent -creates a regression class tree using the models stored in -\texttt{hmm15} and stores the regression class tree and base classes -in the \texttt{classes} directory. The \htool{HHEd} edit script -\texttt{regtree.hed} contains the following commands - -\begin{verbatim} - LS "hmm15/stats" - RC 32 "rtree" -\end{verbatim} - - -\noindent -%% The \texttt{RN}\index{rn@\texttt{RN} command} command assigns an -%% identifier to the HMM set. -The \texttt{LS}\index{ls@\texttt{LS} command} command loads the state -occupation statistics file -\texttt{stats} generated by the last application of \htool{HERest} which -created the models in \texttt{hmm15}. -The \texttt{RC}\index{rc@\texttt{RC} command} command then attempts to build -a regression class tree with 32 terminal or leaf nodes using these statistics. -In addition a global transform is used as the default. This baseclass for this -must still be specified, using in the file ``global'' for example - -\begin{verbatim} - ~b ``global'' - * - MIXBASE - 1 - 1 {*.state[2-4].mix[1-12]} - -\end{verbatim} -This file should be be added to the classes directory. - -\htool{HERest} and \htool{HVite} can be used to perform static adaptation, where all the -adaptation data is processed in a single block. Note as with standard HMM -training \htool{HERest} will expect the list of model names. In contrast -\htool{HVite} only needs to list of words. \htool{HVite} can also be used -for incremental adaptation. In this tutorial the use of static -adaptation with \htool{HERest} will be described with MLLR as the form -of linear adaptation. - -The example use of \htool{HERest} for adaptation involves two -passes. On the first pass a global adaptation is performed. The second -pass then uses the global transformation as an {\em input} -transformation, to transform the model set, producing better -frame/state alignments which are then used to estimate a set of more -specific transforms, using a regression class tree. After estimating -the transforms, \htool{HERest} can output either the newly adapted -model set or, in the default setting, the transformations themselves -in either a transform model file (TMF)\index{adaptation!transform -model file} or as a set of distinct transformations . The latter -forms can be advantageous if storage is an issue since the TMFs (or -transforms) are -significantly smaller than MMFs and the computational overhead -incurred when transforming a model set using a transform is negligible. - -The two applications of \htool{HERest} below demonstrate a static two-pass -adaptation approach where the global and regression class transformations are -stored in the directory \texttt{xforms} with file extensions \texttt{mllr1} -for the global transform and \texttt{mllr2} for multiple regression class -system. -\begin{verbatim} - HERest -C config -C config.global -S adapt.scp -I adaptPhones.mlf \ - -H hmm15/macros -u a -H hmm15/hmmdefs -z -K xforms mllr1 -J classes \ - -h '*/%%%%%%_*.mfc' tiedlist - - HERest -a -C config -C config.rc -S adapt.scp -I adaptPhones.mlf \ - -H hmm15/macros -u a -H hmm15/hmmdefs -J xforms mllr1 -K xforms mllr2 \ - -J classes -h '*/%%%%%%_*.mfc' tiedlist -\end{verbatim} -where config.global has the form -\begin{verbatim} - HADAPT:TRANSKIND = MLLRMEAN - HADAPT:USEBIAS = TRUE - HADAPT:BASECLASS = global - HADAPT:ADAPTKIND = BASE - HADAPT:KEEPXFORMDISTINCT = TRUE - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} - config.rc has the form -\begin{verbatim} - HADAPT:TRANSKIND = MLLRMEAN - HADAPT:USEBIAS = TRUE - HADAPT:REGTREE = rtree.tree - HADAPT:ADAPTKIND = TREE - HADAPT:SPLITTHRESH = 1000.0 - HADAPT:KEEPXFORMDISTINCT = TRUE - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -The last two entries yield useful log information to do with which -transforms are being used and from where. \texttt{-h} is a mask that -is used to detect when the speaker changes and also is used to -determine the name of the speaker transform. File Masks may also be -separately specified specified using configuration variables: -\begin{verbatim} - INXFORMMASK - PAXFORMMASK -\end{verbatim} -The output transform mask is assumed to be specified using the {\tt -h} option -and by default the input and parent transforms are assumed to be the same. - -The transformed models can also be stored. This is specified by adding -\begin{verbatim} - HADAPT:SAVESPKRMODELS = TRUE -\end{verbatim} -To the configuration. Note this option should NOT be used with -transforms that modify the feature-space, such as {\tt MLLRCOV} and -{\tt CMLLR}. - -One important difference between the standard HMM macros and the -adaptation macros, is that for adaptation multiple directories may be -specified using the {\tt -J} option to search for the appropriate macro. -This is useful when using multiple {\em parent} transforms. The set of adaptation -transforms are: {\tt a, b, r, f, g, x, y, j}. The {\tt -J} (along with the -{\tt -K} and {\tt -E} for output and parent transforms respectively) flag -takes an optional argument that specifies the input transform transform -file extension. For the {\tt -J} flag this can {\em only} be specified on the -first time that a {\tt -J} flag is encountered in the command line. It -is strongly recommended that this option is used as it allows easy tracking -of transforms. - -\subsection{Step 14 - Evaluation of the Adapted System} - -To evaluate the performance of the adaptation, the test data previously recorded -is recognised using \htool{HVite}. Assuming that \texttt{testAdapt.scp} contains a list -of all of the coded test files, then \htool{HVite} can be invoked in much the same way -as before but with the additional \texttt{-J} argument used to load the model -transformation file and baseclasses. - -\begin{verbatim} - - HVite -H hmm15/macros -H hmm15/hmmdefs -S testAdapt.scp -l '*' \ - -J xforms mllr2 -h '*/%%%%%%_*.mfc' -k -i recoutAdapt.mlf -w wdnet \ - -J classes -C config -p 0.0 -s 5.0 dict tiedlist - -\end{verbatim} - -\noindent -The results of the adapted model set can then be observed using \htool{HResults} -in the usual manner. - -The RM Demo contains a section on speaker adaptation (section 10). These describes -the various options available in detail along with example configuration files that -may be used. - -\mysect{Adaptive training}{exadaptive} -\htool{HERest} also supports adaptive training with {\tt CMLLR} transforms. In -adaptive training adaptation transforms are used to represent speaker -differences during training so that a ``neutral'' {\em canonical model} can be -trained. - -The first stage is to generate a {\tt CMLLR} transform for each training -speaker. All the data for each speaker must be contiguous in the script file, -in this case \texttt{train.scp}. Using the regression tree from the previous -section, the following command can be run to generate the transforms -\begin{verbatim} - HERest -C config -C config.cmllr -S train.scp -I wintri.mlf \ - -J classes -h '*/%%%%%%_*.mfc' -K hmm15/cmllr cmllr1 \ - -H hmm15/macros -u a -H hmm15/hmmdefs -M hmm15/cmllr tiedlist -\end{verbatim} -where the configuration file \texttt{config.cmllr} contains -\begin{verbatim} - HADAPT:TRANSKIND = CMLLR - HADAPT:USEBIAS = TRUE - HADAPT:REGTREE = rtree.tree - HADAPT:ADAPTKIND = TREE - HADAPT:SPLITTHRESH = 1000.0 - HADAPT:KEEPXFORMDISTINCT = TRUE - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -The transforms will be stored in the directory \texttt{hmm15/cmllr} with a file -extension \texttt{cmllr1}. -To update the canonical model the following command would be run -\begin{verbatim} - HERest -C config -S train.scp -I wintri.mlf \ - -J hmm15/cmllr cmllr1 -J classes -h '*/%%%%%%_*.mfc' \ - -E hmm15/cmllr cmllr1 -a \ - -H hmm15/macros -H hmm15/hmmdefs -M hmm15a tiedlist -\end{verbatim} -The estimated model-set is put in directory \texttt{hmm15a}. It is -possible to interleave updates of the transforms with updates of the -canonical model, or simply use the same set of transforms with multiple -iterations of \htool{HERest}. - -\mysect{Semi-Tied and HLDA transforms}{exsyslintran} -\htool{HERest} also supports estimation of a semi-tied transform. Here only a global -semi-tied transform is described, however multiple baseclasses can be used. A new -configuration file, \texttt{config.semi}, is required. This contains -\begin{verbatim} - HADAPT:TRANSKIND = SEMIT - HADAPT:USEBIAS = FALSE - HADAPT:BASECLASS = global - HADAPT:SPLITTHRESH = 0.0 - HADAPT:MAXXFORMITER = 100 - HADAPT:MAXSEMITIEDITER = 20 - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -The \texttt{global} macro in step 13 is required to have been generated. The example -command below can then be run. This generate a new model set stored in hmm16 and -a semi-tied transform in \texttt{hmm16/SEMITIED}. -\begin{verbatim} - - HERest -C config -C config.semi -S train.scp -I wintri.mlf \ - -H hmm15/macros -u stw -H hmm15/hmmdefs -K hmm16 -M hmm16 tiedlist - -\end{verbatim} -An additional iteration of \htool{HERest} can then be run using -\begin{verbatim} - - HERest -C config -S train.scp -I wintri.mlf -H hmm16/macros -u tmvw\ - -J hmm16 -J classes -H hmm16/hmmdefs -M hmm17 tiedlist - -\end{verbatim} -To evaluate the semi-tied estimated model the following command can be used -\begin{verbatim} - - HVite -H hmm17/macros -H hmm17/hmmdefs -S test.scp -l '*' \ - -J hmm16 -J classes -i recout_st.mlf -w wdnet \ - -C config -p 0.0 -s 5.0 dict tiedlist - -\end{verbatim} -Note the {\tt -J} options must be included as the semi-tied transform is -stored in the same fashion as the adaptation transforms. Thus the transform -itself is stored in directory {\tt hmm16} and the global base class in {\tt classes}. - -There are a number of useful other options that may be explored using, for example -HLDA. If \texttt{config.semi} is replaced by \texttt{config.hlda} containing -\begin{verbatim} - HADAPT:TRANSKIND = SEMIT - - HADAPT:USEBIAS = FALSE - HADAPT:BASECLASS = global - HADAPT:SPLITTHRESH = 0.0 - HADAPT:MAXXFORMITER = 100 - HADAPT:MAXSEMITIEDITER = 20 - HADAPT:SEMITIED2INPUTXFORM = TRUE - HADAPT:NUMNUISANCEDIM = 5 - HADAPT:SEMITIEDMACRO = HLDA - - HADAPT:TRACE = 61 - HMODEL:TRACE = 512 -\end{verbatim} -An HLDA \texttt{InputXForm} that reduces the number of dimensions by 5 is estimated -and stored with the model-set. A copy of the transform is stored also stored in -a file called \texttt{hmm16/HLDA}. For input transforms (and global semi-tied transforms) -there are two forms in which the transform can be stored. First it may be stored as -an \texttt{AdaptXForm} of type \texttt{SEMIT}. The second form is as an input transform. -The latter is preferable if the feature-vector size is modified. The form of transform -is determined by how \texttt{HADAPT:SEMITIED2INPUTXFORM} is set. - -One of the advantages of storing a global transform as an input transform is that there -is no need to specify any {\tt -J} options as the {\tt INPUTXFORM} is by default -stored with the model set options. To prevent the {\tt INPUTXFORM} being stored -with the model set (for example to allow backward compatibility) set the -following configuration option -\begin{verbatim} - HMODEL:SAVEINPUTXFORM = FALSE -\end{verbatim} - -\newpage -\mysect{Using the HTK Large Vocabulary Decoder {\tt HDecode}}{eghdecode} - -{\bf -WARNING: The HTK Large Vocabulary -Decoder \htool{HDecode} has -been specifically written for speech recognition tasks -using cross-word triphone models. Known restrictions are: -\begin{itemize} -\item only works for cross-word triphones; -\item supports N-gram language models up to tri-grams; -\item \texttt{sil} and \texttt{sp} models are reserved as silence -models and are, by default, automatically added to the end of all -pronunciation variants of each word in the recognition dictionary; -\item \texttt{sil} must be used as the pronunciation for the sentence start - and sentence end tokens; -\item \texttt{sil} and \texttt{sp} models cannot occur in the dictionary, - except for the dictionary entry of the sentence start - and sentence end tokens; -\item word lattices generated with \htool{HDecode} must be made {\em -deterministic} using \htool{HLRescore} to remove duplicate paths -prior to being used for acoustic model rescoring -with \htool{HDecode} or \htool{HVite}. -\end{itemize} -} - -The decoder distributed with HTK, \htool{HVite}, is only suitable for small -and medium vocabulary systems\footnote{\htool{HVite} becomes progressively less -efficient as the vocabulary size is increased and cross-word triphones are used.} and systems using bigrams. For larger vocabulary systems, or -those requiring trigram language models to be used directly in the search, \htool{HDecode} is -available as an extension\footnote{An additional, more restrictive, licence - must be agreed to in order to download \htool{HDecode}.} to HTK. -\htool{HDecode} has been specifically written for large vocabulary -speech recognition using cross-word triphone models. -Known restrictions are listed above. For detailed usage, see the -\htool{HDecode} reference page~\ref{s:HDecode} for more information. \htool{HDecode} will also -be used to generate lattices for discriminative training described in the next -section. - -In this section, examples are given for using \htool{HDecode} for large vocabulary -speech recognition. Due to the limitations described above, the word-internal -tripone systems generated in the previous stages {\em cannot} be used with -\htool{HDecode}. For this section it is assumed that there is a cross-word -triphone system in the directory \texttt{hmm20} along with a model-list in -{\tt xwrdtiedlist}. In contrast to the previous sections both the macros and -HMM definitions are stored in the same file \texttt{hmm20/models}. For an -example of how to build a cross-word state-clustered triphone system, see the -Resource Management (RM) example script step 9, in the RM \texttt{samples} -tar-ball. - -Note: the grammar scale factors used in this section, and the next section on -discriminative training, are consistent with the values used in the previous -tutorial sections. However for large vocabulary speech recognition systems -grammar scale factors in the range 12-15 are commonly used. - -\subsection{Dictionary and Language Model} - -\htool{HDecode} automatically adds {\tt sp} or {\tt sil} to the end of each -pronunciation to represent an optionally deletable or non-deletable inter-word -silences. These silences are {\em not} allowed to be in the dictionary entries -other than for the tokens at the start and end of the sentences, -\texttt{SENT-START} and \texttt{SENT-END} in the previous sections. It may -therefore be necessary to modify the dictionary. For example, the dictionary used -for recognition in the previous section should be modified to look like - -\begin{verbatim} - A ah - A ax - A ey - CALL k ao l - DIAL d ay ax l - EIGHT ey t - PHONE f ow n - SENT-END [] sil - SENT-START [] sil - SEVEN s eh v n - TO t ax - TO t uw - ZERO z ia r ow -\end{verbatim} -This recognition dictionary will be assumed to be scored in the file -\texttt{dict.hdecode}. - -A range of bigram and trigram language models, which must match the dictionary -in \texttt{dict.hdecode}, can be used. For example the first few entries of a -bigram language model are shown below. -\begin{verbatim} -\data\ -ngram 1=994 -ngram 2=1490 - -\1-grams: --4.6305 !!UNK --1.0296 SENT-END -1.9574 --1.0295 SENT-START -1.8367 --2.2940 A -0.6935 -... ... -\end{verbatim} -where \texttt{!!UNK} is a symbol representing the out-of-vocabulary -word-class. For more details of the form of language models that can be used -see chapter~\ref{c:hlmtutor}. Note if \texttt{!!UNK} (or \texttt{}) is not the symbol used for the -OOV class a large number of warnings will be printed in the log-file. To avoid -this \htool{HLMCopy} may be used to extract the word-list \texttt{excluding} -the unknown word symbol. - -For large vocabulary speech recognition tasks these language model files may become -very large. It is therefore common to store them in a compressed format. For -this section the language model is assumed be compressed using \texttt{gzip} -and stored in a file \texttt{bg\_lm.gz} in the ARPA-MIT format. - -\subsection{Option 1 - Recognition} - -\htool{HDecode} can be used to generate 1-best output, or -lattices. For both options the same configuration file, assumed to be stored -in \texttt{config.hdecode}, may be used. This should -contain the following entries -\begin{verbatim} -TARGETKIND = MFCC_0_D_A -HLANGMODFILTER = 'gunzip -c $.gz' -HNETFILTER = 'gunzip -c $.gz' -HNETOFILTER = 'gzip -c > $.gz' -RAWMITFORMAT = T -STARTWORD = SENT-START -ENDWORD = SENT-END - -\end{verbatim} -This configuration file has specified the frontend, the filter for reading the -language model\footnote{\texttt{gzip} and \texttt{gunzip} are assumed to be in the current - path.}, \texttt{HLANGMODFILTER} and filters for reading and writing -lattices, \texttt{HNETFILTER} and \texttt{HNETOFILTER} respectively. - -Recognition can then be run on the files specified in \texttt{test.scp} using -the following command. -\begin{verbatim} - HDecode -H hmm20/models -S test.scp \ - -t 220.0 220.0 \ - -C config.hdecode -i recout.mlf -w bg_lm \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist - -\end{verbatim} -The output will be written to an MLF in -\texttt{recout.mlf}. The \texttt{-w} option specifies the $n$-gram model, in -this case a bigram to be used. The final recognition results may be analysed using -\htool{HResults} in the same way as \htool{HVite}. - -In common with \htool{HVite}, there are a number of options that need to be -set empirically to obtain good recognition performance and speed. The options -\texttt{-p} and \texttt{-s} specify the \textit{word insertion penalty} -\index{word insertion penalty} and the \textit{grammar scale factor} -\index{grammar scale factor} respectively as in \htool{HVite}. There are also -a number of pruning options that may be tuned to adjust the run time. These -include the main beam (see the \texttt{-t} option), word end beam (see the -\texttt{-v} option) and the maximum model pruning (see the \texttt{-u} -option). - -\subsection{Option 2 - Speaker Adaptation} - -\htool{HDecode} also supports the use of speaker -adaptation transforms, as described in the tutorial steps 12-14. Note incremental -adaptation and transform estimation are {\em not} currently supported for -\htool{HDecode}. - -Similar command line options are used for speaker adaptation with -\htool{HDecode} as \htool{HVite}. The main difference is that the use of an -input transform is specified using the \texttt{-m} option in \htool{HDecode} -rather than the \texttt{-k} option in \htool{HVite}. Assuming that a set of -MLLR transforms have been generated using \htool{HERest} as described in -section~\ref{s:exsysadapt} and are stored in directory \texttt{xforms} with a -transform extension \texttt{mllr2}. Decoding can be run using -\begin{verbatim} - HDecode -H hmm20/models -S testAdapt.scp \ - -t 220.0 220.0 \ - -J xforms mllr2 -h '*/%%%%%%_*.mfc' -m -i recoutAdapt.mlf -w bg_lm \ - -J classes -C config.hdecode -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -\end{verbatim} -The recognition output is written to \texttt{recoutAdapt.mlf}. - -\subsection{Option 3 - Lattice Generation} - -\htool{HDecode} also support lattice generation to allow more complex language -models to be applied, or for lattice-based discriminative training. The -\texttt{-z ext} option, where \texttt{ext} specifies the extension to be used -for the lattice, specifies that lattices should be generated. - -The lattices are to stored in a directory (which must be generated) -\texttt{lat\_bg}. The following command will perform lattice generation -\begin{verbatim} - HDecode -H hmm20/models -S test.scp \ - -t 220.0 220.0 \ - -C config.hdecode -i recout.mlf -w bg_lm \ - -o M -z lat -l lat_bg -X lat \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -\end{verbatim} - -In addition to the standard printing options, word insertion and grammar scale -factors, an option to specify the number of tokens used per state (see the -\texttt{-n} option) is available This can significantly affect the decoding time and the -size of lattices generated. Increasing the value (the default is 32) increases -the decoding time and size of the lattices. Note the lattice will be -compressed using \texttt{gzip} as specified with the \texttt{HNETOFILTER}. - -Prior to rescoring the -lattices generated by \htool{HDecode} must be made deterministic using -\htool{HLRescore}. The first stage is to generate a list of the lattices that -need to be made deterministic. Let \texttt{test.lcp} hold this -list, for example a few possible entries are given below -\begin{verbatim} -adg0_4_sr009.lat -adg0_4_sr049.lat -adg0_4_sr089.lat -adg0_4_sr129.lat -adg0_4_sr169.lat -... ... - -\end{verbatim} -For the bigram lattices previously generated in \texttt{lat\_bg} the following -command needs to be run -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -t 200.0 1000.0 \ - -m f -L lat_bg -w -l lat_bg_det dict.hdecode -\end{verbatim} -The resulting deterministic bigram lattices are now stored under directory -\texttt{lat\_bg\_det}. The configuration file -\texttt{config.hlrescore} should contain the following -settings, -\begin{verbatim} -HLANGMODFILTER = 'gunzip -c $.gz' -HNETFILTER = 'gunzip -c $.gz' -HNETOFILTER = 'gzip -c > $.gz' -RAWMITFORMAT = T -STARTWORD = SENT-START -ENDWORD = SENT-END -FIXBADLATS = T -\end{verbatim} -The \texttt{FIXBADLATS} configuration option ensures that if the final word in the lattice is -\texttt{!NULL}, and the word specified in \texttt{ENDWORD} is missing, then -\texttt{!NULL} is replaced by the word specified in \texttt{ENDWORD}. This is -found to make lattice generation more robust. - - -\subsection{Option 4 - Lattice Rescoring} - -More complicated language models, for instance, higher order $n$-gram -models, may be applied to expand the initial lattices and -improve recognition performance. Assume that a compressed version of a -trigram language model with the same vocabulary as the bigram above is stored -in \texttt{tg\_lm.gz}. - -The 1-best path in the lattice after applying the trigram language -model may be obtained using the following command. -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -f -i recout_tg.mlf -n tg_lm -L lat_bg -w -l lat_tg \ - -p 0.0 -s 5.0 dict.hdecode -\end{verbatim} -The 1-best output is placed in \texttt{recout\_tg.mlf}. In addition, -compressed version of the lattices now with trigram language model are stored -in \texttt{lat\_tg}. - - -It is then possible to rescore these trigram lattices using \htool{HDecode} -with either a different set of acoustic models, or a different grammar scale -factor. However, prior to this it is again necessary to ensure that -the lattices are deterministic. Thus the following command is required -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -t 200.0 1000.0 -m f -L lat_tg \ - -w -l lat_tg_det dict.hdecode -\end{verbatim} -These lattices can then be rescored using -\begin{verbatim} - HDecode -H hmm21/models -S test.scp \ - -t 220.0 220.0 \ - -C config.hdecode -i recout_rescore.mlf -L lat_tg_det \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist2 -\end{verbatim} -where the new set of acoustic models are assumed to be stored in -\texttt{hmm21/models} and model-list in \texttt{xwrdtiedlist2}. - -%% Lattices with HMM model alignment and time stamps may also be -%% obtained using -%% \begin{verbatim} -%% HDecode.mod -H hmm20/models -S test.scp \ -%% -t 220.0 220.0 -z lat -l lattices.align/ -q tvaldm \ -%% -C config.hdecode -l '*' -i recout.mlf -w -L ./ \ -%% -o M -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -%% \end{verbatim} -%% and the generated lattices with model alignment will be stored under -%% \texttt{lattices.align}. - -\newpage -\mysect{Discriminative Training}{egdiscriminative} - -A further refinement to the acoustic models is to use a \textit{Discriminative Training} -approach to HMM parameter estimation. Discriminative training -can bring considerable improvements in recognition accuracy -and is increasingly being used in large vocabulary speech recognition -systems. - -{\bf Note that as \htool{HDecode} is run to create the lattices, a cross-word - triphone model set must be used. The form of dictionary described in the - HDecode section is also required.} - -\centrefig{discriminative}{90}{Discriminative Training} - -The implementation of discriminative training with HTK requires the following -steps summarised in Fig.~\ref{f:discriminative}. The individual steps and -related command-lines are given below. - -\subsection{Step 1 - Generation of Initial Maximum Likelihood Models} -A cross-word triphone set of HMMs must be initially trained -using standard maximum likelihood estimation (with \htool{HERest}). Since -\htool{HDecode} is used in this recipe for both word lattice generation -and phone-marking of the lattices, cross-word triphone models are assumed in -this section, as in the previous section. These models are again -stored in the MMF \texttt{hmm20/MODELS}. - -\subsection{Step 2 - Training Data LM Creation} -A ``weak'' language model, i.e. a unigram or bigram, must be created for use in discriminative training. -It is essential that the vocabulary includes (at least) the words in the -correct word-level transcripts. Since a weak language model is required, it -is possible to use only the transcripts of the acoustic training data in LM -creation. If a bigram LM is used, typically the count cutoff is set so that -there are approximately the same number of bigrams as unigrams. Details of -how this can be done can be found in the \htool{HLM} tutorial section~\ref{c:hlmtutor}, but a -brief outline is given below. - -First of all the data in the training set MLF must be modified into a suitable -form for language model training with sentence start and sentence end symbols. -Traditionally in language modelling \texttt{} and \texttt{} are used -for these symbols. However in keeping with the \htool{HDecode} section above, -\texttt{SENT-START} and \texttt{SENT-END} will be used in this section. The form of one -sentence per line with word-start/end markers can be simply created from a -word-level MLF using e.g. \texttt{awk}. - -It is assumed that the word-level training transcripts with one sentence per -lines is in the file \texttt{lmtrain.txt}, and a sub-directory \texttt{lmdb} -has been created to store the database files needed for LM creation. First -\htool{LNewMap} is used to -create a new word-map, then \htool{LGPrep} run to create the database. - -\begin{verbatim} -LNewMap empty.wmap -LGPrep -A -b 500000 -n 2 empty.wmap -d lmdb lmtrain.txt -\end{verbatim} - -The data files in \texttt{lmdb} can then be used to create a language -model. The file \texttt{lmdb/wmap} has a short header, and then gives a list -of all the words encountered in training. -%This first -%field can be extracted and used as a training data wordlist. Assume -%this is \texttt{wordlist.train}. -The \htool{LBuild} command can now be used to build the required bigram -model. If it is assumed that a suitable cut-off value for the bigram is known -in order to have a model with the desired number of bigrams (in the command -below it is set to 5) then the required \htool{LBuild} command would be -\begin{verbatim} -LBuild -A -C config.lbuild lmdb/wmap -c 5 -n 2 trainbg lmdb/gram.* -\end{verbatim} -The cut-off parameter (value supplied to \texttt{-c}) should be varied until a -bigram of a suitable size is obtained (it is also possible to find this -information in advance with the aid of the \htool{LFoF} command). In order to -compress the resulting language model (using \texttt{gzip}) the file -\texttt{config.lbuild} should contain -\begin{verbatim} -HLANGMODOFILTER = 'gzip -c > $.gz' -\end{verbatim} -The result of the above command is that a bigram LM for the training data in file \texttt{trainbg.gz}. - -\subsection{Step 3 - Word Lattice Creation} -Two sets of ``phone-marked'' lattices, called the denominator and numerator lattices, are -required for discriminative training. The first stage in generating these -phone-marked lattices is to produce word lattices. - -The denominator word lattices represent the set of most likeliy word sequences -for a particular training sentence. These denominator word lattices are -created using \htool{HDecode} in a recognition mode (similar to the -\htool{HDecode} lattice generation section above) with the initial ML-trained -models, the training data language model and speech data. Numerator word-level -lattices are created using \htool{HLRescore} and include language model log -probabilities. - -The denominator word lattices creation stage uses \htool{HDecode}. The -lattices will be placed in a subdirectory \texttt{wlat.den}. The dictionary -for the training data is assumed to be available in \texttt{dict.hdecode} and a list of -training files in \texttt{train.scp}. Lattices are created using -\begin{verbatim} - HDecode -A -H hmm20/models -S train.scp -t 220.0 220.0 -C config.hdecode \ - -i wlat.den/recout.mlf -w trainbg -o M -z lat -l wlat.den -X lat \ - -p 0.0 -s 5.0 dict.hdecode xwrdtiedlist -\end{verbatim} -where it has been assumed that a suitable grammar scale factor is \texttt{-s - 5.0}, consistent with the previous section describing the use of -\htool{HDecode}. - -Similarly numerator word lattices will be created in \texttt{wlat.num}. Assuming that the training word-level -MLF file is located in \texttt{trainwords.mlf} and a list of these labels is -contained in \texttt{train.labscp}, the following command can be run -\begin{verbatim} - HLRescore -A -C config.hlrescore -S train.labscp -I words.mlf \ - -n trainbg -f -t tvalqr -w -s 5.0 -l wlat.num dict.hdecode -\end{verbatim} -using the config file \texttt{config.hlrescore} defined in the section above -for \texttt{HDecode}. An example of the first few lines of \texttt{train.labscp} might be -\begin{verbatim} -*/adg0_4_sr009.lab -*/adg0_4_sr049.lab -*/adg0_4_sr089.lab -*/adg0_4_sr129.lab -*/adg0_4_sr169.lab -... ... - -\end{verbatim} -Note that not all lattices may be generated successfully in the \htool{HDecode} step, and a check should be -made that all the lattices exist before continuing. If some have failed the pruning parameters can be -altered or a new list of successful training files created for subsequent stages. - -\subsection{Step 4 - Phone Marking of Numerator and Denominator - Lattices} - -The word-level lattices are further processed using \htool{HDecode.mod}, the -initial models and the speech data to produce the phone-marked lattices used -for discriminative training. Note lattices can also be phone-marked using -\htool{HVite}. Model-marking with \htool{HVite} does not have the same -restrictions, in terms of the nature of the acoustic models, as -\htool{HDecode} and \htool{HDecode.mod}. - -Before the phone-marked denominator lattices can be created, the denominator word lattices must -be made determininstic. These will be written into the directory \texttt{wlat.den.det} assuming a list of lattices -is in \texttt{denwordlat.lcp} with the command -\begin{verbatim} - HLRescore -C config.hlrescore -S test.lcp \ - -t 220.0 1000.0 -s 5.0 \ - -m f -L wlat.den -w -l wlat.den.det dict.hdecode -\end{verbatim} -Lattices with HMM model alignment and time stamps for the numerator can then be obtained using the command -\begin{verbatim} - HDecode.mod -H hmm20/models -S train2.scp -t 1000.0 1000.0 \ - -z lat -l plat.num -q tvaldm -C config.hdecode \ - -i plat.num/rec.mlf -w -L wlat.num -o M -p 0.0 -s 5.0 \ - dict.hdecode xwrdtiedlist -\end{verbatim} -The generated numerator lattices with model alignment will be stored under the directory -\texttt{plat.num}, \texttt{train2.scp} should contain the list of training files for which word lattices could -be created. The same procedure can be used to create the denominator phone-marked lattices, stored in -\texttt{plat.den}, from the determinised word lattices: -\begin{verbatim} - HDecode.mod -H hmm20/models -S train2.scp -t 220.0 220.0 \ - -z lat -l plat.den -q tvaldm -C config.hdecode \ - -i plat.den/rec.mlf -w -L wlat.den.det -o M -p 0.0 -s 5.0 \ - dict.hdecode xwrdtiedlist -\end{verbatim} -Again a check should be made on the phone-marked lattices that are created and the set of training -files for which both the numerator and denominator lattices exist will be stored in \texttt{train3.scp}. - -\subsection{Step 5 - Generating Discriminatively Trained Models} - -Having generated the required numerator and denominator phone-marked lattices, -\htool{HMMIRest} can be run to discriminatively train the HMMs. -A number (typically 4-8) of iterations of the Extended Baum-Welch (EBW) -algorithm are run, each invocation of \htool{HMMIRest} corresponds to one iteration of -EBW. There are a number of configuration options to \htool{HMMIRest} that -allow the choice of objective function to be varied; the amount and type of -smoothing; learning rate in EBW updates etc. For large amounts of data, each -iteration of \htool{HMMIRest} can be run in two phases: the first phase in -which blocks of data are processed in parallel and accumulators are created -for each block of data; and the second estimation phase in which the sets of -accumulators are loaded and the HMM parameters re-estimated. Here the -commands are given that assume that the data is not processed in a parallel -mode. - -For basic MMI training the following form could be used for the first iteration creating a model set in directory \texttt{hmm21} -\begin{verbatim} - HMMIRest -C config.mmirest -A -H hmm20/models -S train3.scp -q plat.num - -r plat.den -u tmvw -M hmm21 xwrdtiedlist -\end{verbatim} -There are a wide variety of options in MMI training, but normally I-smoothing - would be used (typically with a value of 100 for MMI) and the file \texttt{config.mmirest} -would contain: -\begin{verbatim} -TARGETKIND = MFCC_0_D_A -HNETFILTER = 'gunzip -c $.gz' -LATPROBSCALE = 0.2 -ISMOOTHTAU = 100 -E = 2 -ARC: TRACE = 3 -HMMIREST: TRACE = 3 -MPE = FALSE - -\end{verbatim} -The value \texttt{E=2} sets a learning rate parameter, and the trace options -allow some detail on the processing of \htool{HMMIRest} to be printed. The -invocation of \htool{HMMIRest} above will perform a single iteration of the -EBW algorithm. Note that the value of \texttt{LATPROBSCALE} has been set to -the reciprocal of the normal grammar scale factor. - -For MPE training, the above configuration file can simply be altered to have the line -\begin{verbatim} -MPE = TRUE -\end{verbatim} -and the value of \texttt{ISMOOTHTAU} might be reduced by a factor of 2. - -\mysect{Summary}{exsyssum} -This chapter has described the construction of a tied-state phone-based -continuous speech recogniser and in so doing, it has touched on most of the -main areas addressed by \HTK: recording, data preparation, HMM definitions, -training tools, adaptation tools, networks, decoding and evaluating. The -rest of this book discusses each of these topics in detail. - - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/fundaments.tex b/HTKBook/fundaments.tex deleted file mode 100644 index 91a6c80..0000000 --- a/HTKBook/fundaments.tex +++ /dev/null @@ -1,786 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{The Fundamentals of \HTK}{fundaments} - -\sidepic{overview}{40}{} -\HTK\ is a toolkit for building Hidden Markov Models (HMMs). -HMMs can be used to model any time series and the core of -\HTK\ is similarly general-purpose. However, \HTK\ is primarily -designed for building HMM-based speech processing tools, in -particular recognisers. Thus, much of the infrastructure -support in \HTK\ is dedicated to this task. As shown in the picture -above, there are two major processing stages involved. Firstly, -the \HTK\ training tools are used to estimate the parameters of a set -of HMMs using -training utterances and their associated transcriptions. Secondly, -unknown utterances are transcribed using the \HTK\ recognition tools. - - -The main body of this book is mostly concerned with the mechanics of these -two processes. However, before launching into detail it is necessary to -understand some of the basic principles of HMMs. It is also helpful to have -an overview of the toolkit and to have some appreciation of -how training and recognition in \HTK\ is organised. - -This first part of the book attempts to provide this information. In this -chapter, the basic ideas of HMMs and their use in speech recognition are -introduced. The following chapter then presents a brief overview -of \HTK\ and, for users of older versions, it highlights the main -differences in version 2.0 and later. Finally in this tutorial part of the book, chapter 3 -describes how a HMM-based speech -recogniser can be built using -\HTK. It does this by describing the construction of a simple small vocabulary -continuous speech recogniser. - -The second part of the book then revisits the topics skimmed over here -and discusses each in detail. This can be -read in conjunction with the third and final part -of the book which provides a reference manual for \HTK. This includes -a description of each tool, summaries of the various -parameters used to configure \HTK\ and a list of the error messages that -it generates when things go wrong. - -Finally, note that this book is concerned only with \HTK\ as a tool-kit. -It does not provide information for using the \HTK\ libraries as a programming -environment. - -\mysect{General Principles of HMMs}{genpHMM} - -\sidefig{messencode}{50}{Message Encoding/Decoding}{-4}{} -Speech recognition systems generally assume that the speech signal is -a realisation of some message encoded as a sequence of one or more -symbols (see Fig.~\href{f:messencode} ). To effect the reverse -operation of recognising the underlying symbol sequence given a spoken -utterance, the continuous speech waveform is first converted to a -sequence of equally spaced discrete parameter vectors. This sequence -of parameter vectors is assumed to form an exact representation of -the speech waveform on the basis that for the duration covered by a -single vector (typically 10ms or so), the speech waveform can be -regarded as being stationary. Although this is not strictly true, it -is a reasonable approximation. Typical parametric representations in -common use are smoothed spectra or linear prediction coefficients plus -various other representations derived from these. - -The r\^{o}le of the recogniser is to effect a mapping between sequences -of speech vectors and the wanted underlying symbol sequences. Two -problems make this very difficult. Firstly, the mapping from symbols -to speech is not one-to-one since different underlying symbols can -give rise to similar speech sounds. Furthermore, there are large -variations in the realised speech waveform due to speaker variability, -mood, environment, etc. Secondly, the boundaries between symbols -cannot be identified explicitly from the speech waveform. Hence, it -is not possible to treat the speech waveform as a sequence of -concatenated static patterns. - -The second problem of not knowing the word boundary locations -can be avoided by restricting the task to -isolated word recognition. As shown in Fig.~\href{f:isoprob}, -this implies that the speech waveform corresponds to a single -underlying symbol (e.g. word) chosen from a fixed vocabulary. -Despite the fact that this -simpler problem is somewhat artificial, it nevertheless has -a wide range of practical applications. -Furthermore, it serves as a good basis for -introducing the basic ideas of HMM-based -recognition before dealing with the more complex continuous speech -case. Hence, isolated word recognition using HMMs will be dealt -with first. - -\mysect{Isolated Word Recognition}{isowrdrec} - -Let each spoken word be represented by a sequence of speech vectors or {\it -observations} $\bm{O}$, defined as -\begin{equation} -\bm{O} = \bm{o}_1, \bm{o}_2, \ldots, \bm{o}_T -\end{equation} -where $\bm{o}_t$ is the speech vector observed at time $t$. The -isolated word recognition problem can then be regarded as that of -computing -\begin{equation} \label{e:2} - \arg\max_i \left\{ P(w_i | \bm{O}) \right\} -\end{equation} -where $w_i$ is the $i$'th vocabulary word. This probability -is not computable directly but using Bayes' Rule\index{Bayes' Rule} gives -\begin{equation} \label{e:3} - P(w_i | \bm{O}) = \frac{P(\bm{O}|w_i) P(w_i)}{P(\bm{O})} -\end{equation} -Thus, for a given set of prior probabilities $P(w_i)$, the most -probable spoken word depends only on the likelihood $P(\bm{O}|w_i) $. -Given the dimensionality of the observation sequence $\bm{O}$, the -direct estimation of the joint conditional probability -$P(\bm{o}_1,\bm{o}_2,\ldots | w_i)$ from examples of spoken words -is not practicable. However, if a parametric model of word production -such as a Markov model -is assumed, then estimation from data is possible since the problem -of estimating the class conditional observation densities $P(\bm{O}|w_i)$ -is replaced by the much simpler problem of estimating the Markov -model parameters. - -\sidefig{isoprob}{50}{Isolated Word Problem}{-4} -In HMM based speech recognition, it is assumed that the sequence of -observed speech vectors corresponding to each word is generated -by a Markov model\index{HMM!definitions} as shown in Fig.~\href{f:markovgen}. -A Markov model is a finite state machine which changes state -once every time unit and each time $t$ that a state $j$ is entered, a -speech vector $\bm{o}_t$ is generated from the probability density -$b_j(\bm{o}_t)$. Furthermore, the transition from state $i$ to state $j$ -is also probabilistic and is governed by the discrete probability $a_{ij}$. -Fig.~\href{f:markovgen} shows an example of this process where the six state -model moves through the state sequence $X=1,2,2,3,4,4,5,6$ in -order to generate the sequence $\bm{o}_1$ to $\bm{o}_6$. Notice that -in \HTK, the entry and exit states of a HMM are non-emitting. This -is to facilitate the construction of composite models as explained in -more detail later. - - -The joint probability that $\bm{O}$ is generated by the model $M$ moving -through the state sequence -$X$ is calculated simply as the product of the transition -probabilities and the output probabilities. So for the state sequence $X$ in -Fig.~\href{f:markovgen} -\begin{equation} \label{e:4} -P(\bm{O},X|M) = a_{12} b_2(\bm{o}_1) a_{22} b_2(\bm{o}_2) a_{23} - b_3(\bm{o}_3) \ldots -\end{equation} -However, in practice, only the observation sequence -$\bm{O}$ is known and the -underlying state sequence $X$ is hidden. This is why it is -called a {\it Hidden Markov Model}. - -\centrefig{markovgen}{85}{The Markov Generation Model} - -Given that $X$ is unknown, the -required likelihood\index{likelihood computation} is computed -by summing over all possible state -sequences $X = x(1), x(2), x(3), \ldots, x(T)$, that is -\begin{equation} \label{e:5} -P(\bm{O}|M) = \sum_X a_{x(0)x(1)} \prod_{t=1}^T b_{x(t)}(\bm{o}_t) -a_{x(t)x(t+1)} \end{equation} -where $x(0)$ is constrained to be the model entry state and $x(T+1)$ -is constrained to be the model exit state. - -As an alternative to equation~\ref{e:5}, the likelihood can be -approximated by only considering the most likely state -sequence, that is -\begin{equation} \label{e:6} -\hat{P}(\bm{O}|M) = \max_X \left\{ - a_{x(0)x(1)} \prod_{t=1}^T b_{x(t)}(\bm{o}_t) a_{x(t)x(t+1)} - \right\} -\end{equation} - -Although the direct computation of equations \ref{e:5} and \ref{e:6} -is not tractable, simple recursive procedures exist which allow -both quantities to be calculated very efficiently. -Before going any further, however, notice that if equation~\ref{e:2} is -computable then the recognition problem is solved. Given a set of models -$M_i$ corresponding to words $w_i$, equation~\ref{e:2} is -solved by using \ref{e:3} and assuming that -\begin{equation} \label{e:7} -P(\bm{O}|w_i) = P(\bm{O}|M_i). -\end{equation} - -All this, of course, assumes that the parameters $\{a_{ij}\}$ and -$\{b_{j}(\bm{o}_t)\}$ are known for each model $M_i$. Herein lies the -elegance and power of the HMM framework. Given a set of training examples -corresponding to a particular model, the parameters of that model can be -determined automatically by a robust and efficient re-estimation -procedure. Thus, provided that a sufficient number of representative -examples of each word can be collected then a HMM can be constructed -which implicitly models all of the many sources of variability inherent -in real speech. Fig.~\href{f:useforiso} summarises the use of HMMs -for isolated word recognition. Firstly, a -HMM is trained for each vocabulary word using a number of examples -of that word. In this case, the vocabulary consists of -just three words: ``one'', ``two'' and ``three''. -Secondly, to recognise some unknown word, the likelihood of -each model generating that word is calculated and the most likely -model identifies the word. - -\centrefig{useforiso}{84}{Using HMMs for Isolated Word Recognition} - -\mysect{Output Probability Specification}{outprobspec} - -Before\index{output probability!continuous case} the problem of parameter estimation can be discussed in more -detail, the form of the output distributions $\{b_{j}(\bm{o}_t)\}$ -needs to be made explicit. \HTK\ is designed primarily for modelling -continuous parameters using continuous density multivariate output -distributions. It can also handle observation sequences -consisting of discrete symbols in which case, the output distributions -are discrete probabilities. For simplicity, however, the presentation -in this chapter will assume that continuous density -distributions are being used. The minor differences that the use -of discrete probabilities entail are noted in chapter~\ref{c:HMMDefs} -and discussed in more detail in chapter~\ref{c:discmods}. - -In common with most other\index{Gaussian mixture}\index{streams}\index{codebooks} -continuous density HMM systems, \HTK\ represents output distributions -by Gaussian Mixture Densities. -In \HTK, however, a further -generalisation is made. \HTK\ allows each observation vector at time $t$ -to be split into a number of $S$ independent data streams $o_{st}$. The -formula for computing $b_{j}(\bm{o}_t)$ is then -\begin{equation} \label{e:8} - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left[ - \sum_{m=1}^{M_s} c_{jsm} {\cal N}(\bm{o}_{st}; - \bm{\mu}_{jsm}, \bm{\Sigma}_{jsm}) - \right]^{\gamma_s} -\end{equation} -where $M_s$ is the number of mixture components in stream $s$, $c_{jsm}$ -is the weight of the $m$'th component and -${\cal N}(\cdot; \bm{\mu}, \bm{\Sigma})$ is a multivariate Gaussian with -mean vector $\bm{\mu}$ and covariance matrix $\bm{\Sigma}$, -that is\index{stream weight}\index{codebook exponent} -\begin{equation} -{\cal N}(\bm{o}; \bm{\mu}, \bm{\Sigma}) = - \frac{1}{\sqrt{(2 \pi)^n | \bm{\Sigma} |}} - e^{- \frac{1}{2}(\bm{o}-\bm{\mu})^\transpose \bm{\Sigma}^{-1}(\bm{o}-\bm{\mu})} -\end{equation} -where $n$ is the dimensionality of $\bm{o}$. - -The exponent $\gamma_s$ is a stream weight\footnote{often -referred to as a codebook exponent.}. It -can be used to give a particular stream more emphasis, however, -it can only be set manually. No current \HTK\ training tools -can estimate values for it. - -Multiple data streams are used to -enable separate modelling of multiple information sources. In -\HTK, the processing of streams is completely general. However, -the speech input modules assume that the -source data is split into at most 4 streams. Chapter~\ref{c:speechio} -discusses this in more detail but for now it is sufficient to -remark that the default streams are the -basic parameter vector, first (delta) and second (acceleration) -difference coefficients and log energy. - -\mysect{Baum-Welch Re-Estimation}{bwrest} - -To determine the parameters of a HMM it is first necessary to make -a rough guess at what they might be. Once this is done, more -accurate (in the maximum likelihood sense) parameters -can be found by applying the so-called -Baum-Welch re-estimation\index{Baum-Welch re-estimation} -formulae. - -\sidefig{subsmixrep}{60}{Representing a Mixture}{-4}{ -Chapter~\ref{c:Training} gives the formulae used -in \HTK\ in full detail. -Here the basis -of the formulae will be presented in a very informal way. -Firstly, it should be noted that the inclusion of multiple data -streams does not alter matters significantly since each stream -is considered to be statistically independent. Furthermore, -mixture components can be considered to be a special form of -sub-state in which the transition probabilities are the mixture -weights (see Fig.~\href{f:subsmixrep}). -} - -Thus, the essential problem is to estimate the means and -variances of a HMM in which each state output distribution is a single -component Gaussian, that is -\begin{equation} \label{e:10} -b_j(\bm{o}_t) = \frac{1}{\sqrt{(2 \pi)^n | \bm{\Sigma_j} |}} - e^{- \frac{1}{2}(\bm{o}_t - \bm{\mu}_j)^\transpose\bm{\Sigma}_j^{-1}(\bm{o}_t - \bm{\mu}_j)} -\end{equation} -If there was just one state $j$ in the HMM, this parameter -estimation would be easy. The maximum likelihood estimates of -$\bm{\mu}_j$ and $\bm{\Sigma}_j$ would be just the simple averages, -that is -\begin{equation} \label{e:11} - \hat{\bm{\mu}}_j = \frac{1}{T} \sum_{t=1}^{T} \bm{o}_t -\end{equation} -and -\begin{equation} \label{e:12} - \hat{\bm{\Sigma}}_j = \frac{1}{T} \sum_{t=1}^{T} - (\bm{o}_t - \bm{\mu}_j) (\bm{o}_t - \bm{\mu}_j)^\transpose -\end{equation} -In practice, of course, there are multiple states and there is no -direct assignment of observation vectors to individual states -because the underlying state sequence is unknown. Note, however, -that if some approximate assignment of vectors to states could be made then -equations \ref{e:11} and \ref{e:12} could be used to give the -required initial values for the parameters. Indeed, this is exactly -what is done in the \HTK\ tool called \htool{HInit}\index{hinit@\htool{HInit}}. -\htool{HInit} first divides the -training observation vectors equally amongst the model states and then -uses equations \ref{e:11} and \ref{e:12} to give initial values for -the mean and variance of each state. It then finds the maximum -likelihood state sequence using the Viterbi\index{Viterbi training} -algorithm described below, -reassigns the observation vectors to states and then uses -equations \ref{e:11} and \ref{e:12} again to get better initial -values. This process is repeated until the estimates -do not change. - -Since the full likelihood of each observation sequence -is based on the summation of all possible state sequences, -each observation vector $\bm{o}_t$ contributes to the computation -of the maximum likelihood parameter values for each state $j$. -In other words, instead of assigning each observation vector -to a specific state as in the above approximation, each -observation is assigned to every state in proportion to -the probability of the model being in that state when the -vector was observed. Thus, if $L_j(t)$ denotes the probability -of being in state $j$ at time $t$ then the -equations \ref{e:11} and \ref{e:12} given above become the -following weighted averages -\begin{equation} \label{e:13} - \hat{\bm{\mu}}_j = \frac{ \sum_{t=1}^{T} L_j(t) \bm{o}_t} - {\sum_{t=1}^{T} L_j(t)} -\end{equation} -and -\begin{equation} \label{e:14} - \hat{\bm{\Sigma}}_j = \frac{ \sum_{t=1}^{T} L_j(t) - (\bm{o}_t - \bm{\mu}_j) (\bm{o}_t - \bm{\mu}_j)^\transpose } - {\sum_{t=1}^{T} L_j(t)} -\end{equation} -where the summations in the denominators are included to give -the required normalisation. - -Equations \ref{e:13} and \ref{e:14} are the -Baum-Welch re-estimation\index{Baum-Welch re-estimation} -formulae for the means and covariances of a HMM. A similar but -slightly more complex formula can be derived for the transition -probabilities (see chapter~\ref{c:Training}). - -Of course, to apply equations \ref{e:13} and \ref{e:14}, the -probability of state occupation $L_j(t)$ must be calculated. -This is done efficiently using the so-called {\it Forward-Backward} -\index{Forward-Backward algorithm} -algorithm. Let the forward probability\footnote{ -Since the output distributions are densities, these are not -really probabilities but it is a convenient fiction. -} -\index{forward probability} $\alpha_j(t)$ for some model -$M$ with $N$ states be defined as -\begin{equation} \label{e:15} - \alpha_j(t) = P(\bm{o}_1,\ldots,\bm{o}_t, x(t)=j | M). -\end{equation} -That is, $\alpha_j(t)$ is the joint probability of observing the -first $t$ speech vectors and being in state $j$ at time $t$. This -forward probability can be efficiently calculated by the following -recursion -\begin{equation} \label{e:16} - \alpha_j(t) = \left[ \sum_{i=2}^{N-1} \alpha_i(t-1) a_{ij} \right] - b_j(\bm{o}_t). -\end{equation} -This recursion depends on the fact that the probability -of being in state $j$ at time $t$ and seeing observation $\bm{o}_t$ -can be deduced by summing the forward probabilities for all -possible predecessor states $i$ weighted by the transition -probability $a_{ij}$. The slightly odd limits are caused by -the fact that states $1$ and $N$ are non-emitting\footnote{ -To understand equations involving a non-emitting state at time $t$, the time -should be thought of as being $t-\delta t$ if it is an entry state, and $t+\delta t$ -if it is an exit state. This becomes important when HMMs are connected together -in sequence so that transitions across non-emitting states take place -\textit{between frames}. -}. The -initial conditions for the above recursion are -\begin{equation} - \alpha_1(1) = 1 -\end{equation} -\begin{equation} - \alpha_j(1) = a_{1j} b_j(\bm{o}_1) -\end{equation} -for $1 = -\end{verbatim} -where \texttt{} is the name of the field and \texttt{} -is its value. The field name is case insensitive and zero or more -spaces can surround the \texttt{=} sign. The \texttt{} starts -with the first printing character and ends at the last printing -character on the line. \HTK\ style escaping is never used in \HLM\ -headers. - -Fields may be given in any order. Field names which are unrecognised -by \HTK\ are ignored. Further field names may be introduced in -future, but these are guaranteed not to start with the letter ``U''. - -(NB. The above format rules do not apply to the files described in section -\ref{s:HLMclasslmfileformats} -- see that section for more details) - - -\mysect{Word Map Files}{wmaps} - -A word map file is a text file consisting of a header and a list of -word entries. The header\index{word map!header} contains the -following -\begin{enumerate} - -\item a name consisting of any printable character string - (\texttt{Name=sss}). - -\item the number of word entries (\texttt{Entries=nnn}) - -\item a sequence number (\texttt{SeqNo=nnn}) - -\item whether or not word ids \texttt{ID}s and word frequency counts - \texttt{WFC}s are included (\texttt{Fields=ID} or - \texttt{Fields=ID,WFC}). When the \texttt{Fields} field is - missing, the word map contains only word names and it - degenerates to the special case of a word list. - -\item escaping mode (\texttt{EscMode=HTK} or \texttt{EscMode=RAW}). - The default is \texttt{HTK}. - -\item the language (\texttt{Language=xxx}) - -\item word map source, a text string used with derived word maps - to describe the source from which the subset was derived. - (\texttt{Source=...}). - -\end{enumerate} -The first two of these fields must always be included, and for word -maps, the \texttt{Fields} field must also be included. The remaining -fields are optional. More header fields may be defined later and the -user is free to insert others. - -The word entries begin with the keyword \verb+\Words\+. Each word is -on a separate line with the format\index{word map!entries} -\begin{verbatim} - word [id [count]] -\end{verbatim} -where the id and count are optional. Proper word maps always have an -\texttt{id}. When the \texttt{count} is included, it denotes the -number of times that the word has been encountered during the -processing of text data. - -For example, a typical word map file might be -\begin{verbatim} - Name=US_Business_News - SeqNo=13 - Entries=133986 - Fields=ID,WFC - Language=American - EscMode=RAW - \Words\ - 65536 34850 - CAN'T 65537 2087 - THE 65538 12004 - DOLLAR 65539 169 - IS 65540 4593 - .... -\end{verbatim} -In this example,\index{word map!example of} the word map is called -``US\_Business\_News'' and it has been updated 13 times since it was -originally created. It contains a total of 133986 entries and word -frequency counts are included. The language is ``American'' and there -is no escaping used (e.g.\ can't is written \verb+CAN'T+ rather than -the standard \HTK\ escaped form of \verb+CAN\'T+). - -As noted above, when the \texttt{Fields} field is missing, the word -map contains only the words and serves the purpose of a simple word -list. For example, a typical word list might be defined as follows -\begin{verbatim} - Name=US_Business_News - Entries=10000 - \Words\ - A - ABLE - ABOUT - ... - ZOO -\end{verbatim} -Word lists are used to define subsets of the words in a word map. -Whenever a tool requires a word list, a simple list of words -can be input instead of the above. For example, the previous list -could be input as -\begin{verbatim} - A - ABLE - ABOUT - ... - ZOO -\end{verbatim} -In this case, the default is to assume that all input words are -escaped. If raw mode input is required, the configuration variable -\texttt{INWMAPRAW} should be set true (see -section~\ref{s:htkstrings}).\index{vocabulary list} - -As explained in section~\ref{s:htkstrings}, by default \HTK\ tools -output word maps in HTK escaped form. However, this can be overridden -by setting the \htool{LWMap} configuration variable -\texttt{OUTWMAPRAW} to true. - -\mysect{Class Map Files}{cmaps} - -A class map file defines one or more word classes. It has a header -similar to that of a word map file, containing values for -\texttt{Name}, \texttt{Entries}, \texttt{EscMode} and \texttt{Language}. -In this case, the number of entries refers to the number of classes -defined. \index{class map!header} - -The class definitions are introduced by the keyword \verb+\Classes\+. -Each class definition has a single line sub-header consisting of a -name, an id number, the number of class members (or non-members) and a -keyword which must be \texttt{IN} or \texttt{NOTIN}. In the latter -case, the class consists of all words \textit{except} those listed -i.e. the class is defined by its complement. \index{class -map!complements} - -The following is a simple example of a class map file. -\begin{verbatim} - Name=Simple_Classes - Entries=97 - EscMode=HTK - Language=British - \Classes\ - ARTICLES 1 3 IN - A - AN - THE - COLOURS 2 4 IN - RED - BLUE - GREEN - YELLOW - SHAPES 3 6 IN - SQUARE - CIRCLE - ... - etc -\end{verbatim} -This class map file defines 97 distinct classes, the first of which is -a class called \texttt{ARTICLES} (id=1) with 3 members: (a, an, the). - -For simple word-based language models, the class map file is used to -define the class of unknown words. This is usually just the -complement of the vocabulary list. For example, a typical class map -file defining the \textit{unknown} class \texttt{!!UNKID} might -be\index{unknown class} \index{class map!defining unknown} -\begin{verbatim} - Name=Vocab_65k_V2.3 - Entries=1 - Language=American - EscMode=NONE - \Classes\ - !!UNKID 1 65426 NOTIN - A - ABATE - ABLE - ABORT - ABOUND - ... -\end{verbatim} -Since this case is so common, the tools also allow a plain -vocabulary list to be supplied in place of a proper class map file. -For example, supplying a class map file containing just -\begin{verbatim} - A - ABATE - ABLE - ABORT - ABOUND - ... -\end{verbatim} -would have an equivalent effect to the previous example provided that -the \htool{LCMap} configuration variables \texttt{UNKNOWNID} and -\texttt{UNKNOWNNAME} have been set in order to define the id and name -to be used for the unknown class. In the example given, including the -following two lines in the configuration file would have the desired -effect -\begin{verbatim} - LCMAP: UNKNOWNID = 1 - LCMAP: UNKNOWNNAME = !!UNKID -\end{verbatim} -Notice that the similarity with the special case of word lists -described in section~\ref{s:wmaps}. A plain word list can therefore -be used to define both a vocabulary subset and the unknown class. In -a conventional language model, these are, of course, the same thing. - -In a similar fashion to word maps, the input of a headerless class map -can be set to raw mode by setting the \htool{LCMap} configuration -variable \texttt{INCMAPRAW} and all class maps can be output in raw -mode \index{class map!as vocabulary list} by setting the configuration -variable -\texttt{OUTCMAPRAW} to true.\index{vocabulary list} - -\mysect{Gram Files}{gramfs} - -Statistical language models are estimated by counting the number of -events in a sample source text. These event counts are stored in -\textit{gram} files. Provided that they share a common word map, gram -files can be grouped together in arbitrary ways to form the raw data -pool from which a language model can be constructed. For example, a -text source containing 100m words could be processed and stored as two -gram files. A few months later, a 3rd gram file could be generated -from a newly acquired text source. This new gram file could then be -added to the original two files to build a new language model. The -original source text is not needed and the gram files need not be -changed. \index{gram files!format} - -A gram file consists of a header\index{ngram!files} followed by a -sorted list of $n$-gram counts.\index{gram files!header} The header -contains the following items, each written on a separate line -\begin{enumerate} - -\item $n$-gram size ie 2 for bigrams, 3 for trigrams, etc. (\texttt{Ngram=N}) - -\item Word map. Name of word map to be used with this gram - file. (\texttt{WMap=wmapname}) - -\item First gram. The first $n$-gram in the file (\texttt{gram1 = w1 w2 w3 ...}) - -\item Sequence number. If given then the actual word map must have a sequence - number which is greater than or equal to this. - (\texttt{SeqNo=nnn)} - -\item Last gram. The last $n$-gram in the file (\texttt{gramN = w1 w2 w3 ...}) - -\item Number of distinct $n$-grams in file. (\texttt{Entries = N}) - -\item Word map check. This is an optional field containing a word and its id. - It can be included as a double check that the correct word map - is being used to interpret this gram file. The given word is - looked up in the word map and if the corresponding id does not - match, an error is reported. (\texttt{WMCheck = word id}) - -\item Text source. This is an optional text string describing the text source - which was used to generate the gram file (\texttt{Source=...}). - -\end{enumerate} -For example, a typical gram file header might be -\begin{verbatim} - Ngram = 3 - WMap = US_Business_News - Entries = 50345980 - WMCheck = XEROX 340987 - Gram1 = AN ABLE ART - GramN = ZEALOUS ZOO OWNERS - Source = WSJ Aug 94 to Dec 94 -\end{verbatim} - -The $n$-grams themselves begin immediately following the line containing -the keyword \verb+\Grams\+\footnote{That is, the first byte of the -binary data immediately follows the newline character}. They are -listed in lexicographic sort order such that for the $n$-gram $\{w_1 w_2 -\ldots w_N\}$, $w_1$ varies the least rapidly and $w_N$ varies the -most rapidly. Each $n$-gram consists of a sequence of $N$ 3-byte word -ids followed by a single 1-byte count. If the $n$-gram occurred more -than 255 times, then it is repeated with the counts being interpreted -to the base 256. For example, if a gram file contains the -sequence\index{gram files!count encoding} -\begin{verbatim} - w1 w2 ... wN c1 - w1 w2 ... wN c2 - w1 w2 ... wN c3 -\end{verbatim} -corresponding to the $n$-gram $\{w_1 w_2 \ldots w_N\}$, the corresponding -count is\index{ngram!count encoding}\index{count encoding} -\[ - c_1 + c_2*256 + c_3*256^2 -\] - -When a group of gram files are used as input to a tool, they -must be organised so that the tool receives $n$-grams as a single stream -in sort order i.e.\ as far as the tool is concerned, the net effect -must be as if there is just a single gram file. Of course,\index{gram -file!input} a sufficient approach would be to open all input gram -files in parallel and then scan them as needed to extract the required -sorted $n$-gram sequence. However, if two $n$-gram files were organised -such that the last $n$-gram in one file was ordered before the first -$n$-gram of the second file, it would be much more efficient to open and -read the files in sequence. Files such as these are said to be -\texttt{sequenced} and in general, \HTK\ tools are supplied with a mix -of sequenced and non-sequenced files. To optimise input in this -general case, all \HTK\ tools which input gram files start by scanning -the header fields\index{sequenced gram files} \texttt{gram1} and -\texttt{gramN}. This information allows a sequence table to be -constructed which determines the order in which the constituent gram -file must be opened and closed. This sequence table is designed to -minimise the number of individual gram files which must be kept open -in parallel. \index{gram file!sequencing} - -This gram file sequencing is invisible to the \HTK\ user, but it -is important to be aware of it. When a large number of gram files are -accumulated to form a frequently used database, it may be worth -copying the gram files using \htool{LGCopy}. This will have the effect of -transforming the gram files into a fully sequenced set thus ensuring -that subsequent reading of the data is maximally efficient. - -\mysect{Frequency-of-frequency (FoF) Files}{FoFs} - -A FoF file contains a list of the number of times that an $n$-gram -occurred just once, twice, three times, \ldots, n times. Its format -is similar to a word map file. The header contains the following -information\index{frequency-of-frequency}\index{FoF files} -\begin{enumerate} -\item $n$-gram size ie 2 for bigrams, 3 for trigrams, etc. (\texttt{Ngram=N}) -\item the number of frequencies counted (i.e.\ the number of rows in the - FoF table (\texttt{Entries=nnn}) -\item Text source. This is an optional text string describing the text source -which was used to generate the gram files used to compute this -FoF file. (\texttt{Source=...}). -\end{enumerate} -More header fields may be defined later and the user is free to insert -others.\index{FoF file!header} - -The data part starts with the keyword \verb+\FoFs\+. Each -contains a list of the unigrams, bigrams, \ldots, $n$-grams occurring exactly -\texttt{k} times, where \texttt{k} is the number of the row of the -table -- the first row shows the number of $n$-grams occurring exactly -1 time, for example.\index{FoF file!counts} - -As an example, the following is a FoF file computed from a set of trigram gram -files. -\begin{verbatim} - Ngram = 3 - Entries = 100 - Source = WSJ Aug 94 to Dec 94 - \FoFs\ - 1020 23458 78654 - 904 19864 56089 - ... -\end{verbatim} - -FoF files are generated by the tool \texttt{LFoF}. This tool will -also output a list containing an estimate of the number of $n$-grams that -will occur in a language model for a given cut-off -- set the -configuration parameter {\tt LPCALC: TRACE = 3}.\index{lFoF@\htool{LFoF}} - - -\mysect{Word LM file formats}{HLMlmfileformats} -\index{ARPA-MIT LM format} -\index{LM file formats!binary} -\index{LM file formats!ultra} -\index{LM file formats!ARPA-MIT format} -\index{files!language models} -Language models can be stored on disk in three different file formats -- {\em text}, {\em binary} and {\em ultra}. The text format is the -standard ARPA-MIT formad used to distribute pre-computed language -models. The binary format is a proprietary file format which is -optimised for flexibility and memory usage. All tools will output -models in this format unless instructed otherwise. The {\em ultra} LM -format is a further development of the binary LM format optimised for -fast loading times and small memory footprint. At the same time, -models stored in this format cannot be pruned further in terms of size -and vocabulary. - -\mysubsect{The ARPA-MIT LM format}{HLMarpamitlm} -\index{ARPA-MIT LM format} -This format for storing $n$-gram back-off language models is defined -as follows -\begin{verbatim} - = [ { } ] - \data\ -
- - \end\ - = { } -\end{verbatim} -An ARPA-style language model file comes in two parts - the header and -the $n$-gram definitions. The header contains a description of the -contents of the file. -\begin{verbatim} -
= { ngram = } -\end{verbatim} -The first {\tt } gives the $n$-gram order and the second {\tt -} gives the number of $n$-gram entries stored. - -For example, a trigram language model consists of three sections - the -unigram, bigram and trigram sections respectively. The corresponding -entry in the header indicates the number of entries for that -section. This can be used to aid the loading-in procedure. The body -part contains all sections of the language model and is defined as -follows: -\begin{verbatim} - = { } - = \-grams: - { } - = \-grams: - { } - = { } - = { } -\end{verbatim} -Each $n$-gram definition starts with a probability value stored as -$\log_{10}$ followed by a sequence of $n$ words describing the actual -$n$-gram. In all sections excepts the last one this is followed by a -back-off weight which is also stored as $\log_{10}$. The following -example shows an extract from a trigram language model stored in the -ARPA-text format. - -\begin{verbatim} -\data\ -ngram 1=19979 -ngram 2=4987955 -ngram 3=6136155 - -\1-grams: --1.6682 A -2.2371 --5.5975 A'S -0.2818 --2.8755 A. -1.1409 --4.3297 A.'S -0.5886 --5.1432 A.S -0.4862 -... - -\2-grams: --3.4627 A BABY -0.2884 --4.8091 A BABY'S -0.1659 --5.4763 A BACH -0.4722 --3.6622 A BACK -0.8814 -... - -\3-grams: --4.3813 !SENT_START A CAMBRIDGE --4.4782 !SENT_START A CAMEL --4.0196 !SENT_START A CAMERA --4.9004 !SENT_START A CAMP --3.4319 !SENT_START A CAMPAIGN -... -\end\ -\end{verbatim} - -\mysubsect{The modified ARPA-MIT format}{HLMmodifiedarpamitlm} -The efficient loading of the language model file requires prior -information as to memory requirements. Such information is partially -available from the header of the file which shows how many entries -will be found in each section of the model. From the back-off nature -of the language model it is clear that the back-off weight associated -with an $n$-gram $(w_1, w_2, \ldots, w_{n-1})$ is only useful when -$p(w_n | w_1, word_2, \ldots, w_{n-1})$ is an explicitly entry in the -file or computed via backing-off to the corresponding -$(n-1)$-grams. In other words, the presence of a back-off weight -associated with the $n$-gram $w_1, w_2, \ldots, w_{n-1}$ can be used -to indicate the existence of explicit $n$-grams $w_1, w_2, \ldots, -w_n$. The use of such information can greatly reduce the storage -requirements of the language model since the back-off weight requires -extra storage. For example, considering the statistics shown in table -\ref{fg_stats}, such selective memory allocation can result in dramatic -savings. -\begin{table} - \center - \begin{tabular}{|l|r|r|} \hline - {Component} & {\# with back-off weights} & {Total} \\ \hline - {unigram} & 65,467 & 65,467 \\ \hline - {bigram} & 2,074,422 & 6,224,660 \\ \hline - {trigram} & 4,485,738 & 9,745,297 \\ \hline - {fourgram} & 0 & 9,946,193 \\ \hline - \end{tabular} - \caption{Component statistics for a 65k word fourgram language model with - cut-offs: bigram 1, trigram 2, fourgram 2.} - \label{fg_stats} -\end{table} -This information is accommodated by modifying the syntax and semantics -of the rule -\begin{verbatim} - = { } [ ] -\end{verbatim} -whereby a back-off weight associated with $n$-gram $(w_1, w_2,\ldots, -w_{n-1})$ indicates the existence of $n$-grams $(w_1, w_2, \ldots, -w_n)$. This version will be referred to as the modified ARPA-text -format. - -\mysubsect{The binary LM format}{HLMbinarylmformat} -\index{LM file formats!binary} -This format is the binary version of modified ARPA-text format. It was -designed to be a compact, self-contained format which aids the fast -loading of large language model files. The format is similar to the -original ARPA-text format with the following modification -\begin{verbatim} -
= { (ngram =) | (ngram ~) } -\end{verbatim} -The first alternative in the rule describes a section stored as text, -the second one describes a section stored in binary. The unigram -section of a language model file is always stored as text. -\begin{verbatim} - = | - = { } [ ] - = { } [ ] -\end{verbatim} -In the above definition, {\tt } is a 1-byte flags field, {\tt -} is a 1-byte unsigned number indicating the total size in -bytes of the remaining fields, {\tt } is a 4-bytes field for -the $n$-gram probability, {\tt } is a numeric word id, and -the last {\tt } is the back-off weight. The numeric word -identifier is an unsigned integer assigned to each word in the order -of occurrence of the words in the unigram section. The minimum size of -this field is 2-bytes as used in vocabulary lists with up to 65,5355 -words. If this number is exceeded the field size is automatically -extended to accommodate all words. The size of the fields used to -store the probability and back-off weight are typically 4 bytes, -however this may vary on different computer architectures. The least -significant bit of the flags field indicates the presence/absence of a -back-off weight with corresponding values 1/0. The remaining bits of -the flags field are not used at present. - - - -\mysect{Class LM file formats}{HLMclasslmfileformats} -\index{files!language models} -\index{Class language models} -Class language models replace the word language model described in -section \ref{s:HLMlmfileformats} with an identical component which -models class $n$-grams instead of word $n$-grams. They add to this a -second component which includes the deterministic word-to-class -mapping with associated word-given-class probabilities, expressed -either as counts (which are normalised to probabilities on loading) or -as explicit natural log probabilities. These two components are then -either combined into a single file or are pointed to with a special -link file. - - -\mysubsect{Class counts format}{HLMclasscountslmformat} -\index{LM file formats!class counts} -The format of a word-given-class counts file, as generated using the -\texttt{-q} option from \htool{Cluster}, is as follows:\\ -\texttt{Word|Class counts}\\ -\textit{[blank line]}\\ -\texttt{Derived from: }\\ -\texttt{Number of classes: }\\ -\texttt{Number of words: }\\ -\texttt{Iterations: }\\ -\textit{[blank line]}\\ -\texttt{Word Class name Count}\\ -followed by one line for each word in the model of the form:\\ -\texttt{ CLASS }\\ - -The fields are mostly self-explanatory. The {\tt Iterations:} header -is for information only and records how many iterations had been -performed to produce the classmap contained within the file, and the -{\tt Derived from:} header is similarly also for display purposes -only. Any number of headers may be present; the header section is -terminated by finding a line beginning with the four characters making -up {\tt Word}. The colon-terminated headers may be in any order. - -{\tt CLASS} must be the name of a class in the classmap -(technically actually the wordmap) used to build the class-given-class -history $n$-gram component of the language model -- the file built by -\htool{LBuild}. In the current implementation these class names are -restricted to being of the form {\tt CLASS}, although a -modification to the code in \htool{LModel.c} would allow this -restriction to be removed. Each line after the header specifies the -count of each word and the class it is in, so for example\\ -\texttt{THE CLASS73 1859}\\ -would specify that the word {\tt THE} was in class {\tt CLASS73} and -occurred 1859 times. - - -\mysubsect{The class probabilities format}{HLMclassprobslmformat} -\index{LM file formats!class probabilities} -The format of a word-given-class probabilities file, as generated using the -\texttt{-p} option from \htool{Cluster}, is very similar to that of -the counts file described in the previous sub-section, and is as follows:\\ -\texttt{Word|Class probabilities}\\ -\textit{[blank line]}\\ -\texttt{Derived from: }\\ -\texttt{Number of classes: }\\ -\texttt{Number of words: }\\ -\texttt{Iterations: }\\ -\textit{[blank line]}\\ -\texttt{Word Class name Probability (log)}\\ -followed by one line for each word in the model of the form:\\ -\texttt{ CLASS }\\ - -As in the previous section, the fields are mostly self-explanatory. -The {\tt Iterations:} header is for information only and records how -many iterations had been performed to produce the classmap contained -within the file, and the {\tt Derived from:} header is similarly also -for display purposes only. Any number of headers may be present; the -header section is terminated by finding a line beginning with the four -characters making up {\tt Word}. The colon-terminated headers may be -in any order. - -{\tt CLASS} must be the name of a -class in the classmap (technically actually the wordmap) used to build -the class-given-class history $n$-gram component of the language model --- the file built by \htool{LBuild}. In the current implementation -these class names are restricted to being of the form {\tt -CLASS}, although a modification to the code in \htool{LModel.c} -would allow this restriction to be removed. Each {\tt } -specifies the natural logarithm of the probability of the word given -the class, or -99.9900 if the probability of the word is less than -$1.0\times10^{-20}$. - - -\mysubsect{The class LM three file format}{HLMclasslmformat} -\index{LM file formats!class} -A special class language model file, generated by \htool{LLink}, -links together either the word-given-class probability or count files -described above (either can be used to give the same results) with a -class-given-class history $n$-gram file constructed using -\htool{LBuild}. It is a simple text file which specifies the filename -of the two relevant components: - -\noindent\texttt{Class-based LM}\\ -\texttt{Word|Class counts: } $\;$or$\;$ \texttt{Word|Class probabilities: }\\ -\texttt{Class|Class grams: }\\ -The second line must state {\tt counts} or {\tt probabilities} as -appropriate for the relevant file. - - -\mysubsect{The class LM single file format}{HLMclassSinglmformat} -\index{LM file formats!class} -An alternative to the class language model file described in section -\ref{s:HLMclasslmformat} is the composite single-file class language -model file, produced by {\htool{LLink} \tt -s} -- this does {\it not} -require the two component files to be present since it integrates them -into a single file. The format of this resulting file is as follows: - -\begin{verbatim} - CLASS MODEL - Word|Class - - Derived from: - Number of classes: - Number of words: - Iterations: - - Class n-gram counts follow; word|class component is at end of file. -\end{verbatim} -The second line must state either {\tt counts} or {\tt probabilities} as -appropriate for the relevant component file used when constructing -this composite file. The fields are mostly self-explanatory. The -{\tt Iterations:} header is for information only and records how many -iterations had been performed to produce the classmap contained within -the file, and the {\tt Derived from:} header is similarly also for -display purposes only. Any number of headers may be present; the -header section is terminated by finding a line beginning with the five -characters making up {\tt Class}. The colon-terminated headers may be -in any order. - -The class-given-classes $n$-gram component of the model then follows -immediately in any of the formats supported by word $n$-gram language -models -- ie. those described in section \ref{s:HLMlmfileformats}. No -blank lines are expected between the header shown above and the -included model, although they may be supported by the embedded model. - -Immediately following the class-given-classes $n$-gram component -follows the body of the word-given-class probabilities or counts file -as described in sections \ref{s:HLMclasscountslmformat} and -\ref{s:HLMclassprobslmformat} above. That is, the remainder of the -file consists of lines of the form: -\begin{verbatim} - CLASS -\end{verbatim} -One line is expected for each word as specified in the header at the -top of the file. Integer word counts should be provided in the final -field for each word in the case of a counts file, or word-given-class -probabilities if a probabilities file -- as specified by the second -line of the overall file. In the latter case each {\tt } -specifies the natural logarithm of the probability of the word given -the class, or -99.9900 if the probability of the word is less than -$1.0\times10^{-20}$. - -{\tt CLASS} must be the name of a -class in the classmap (technically actually the wordmap) used to build -the class-given-class history $n$-gram component of the language model --- the file built by \htool{LBuild}. In the current implementation -these class names are restricted to being of the form {\tt -CLASS}, although a modification to the code in \htool{LModel.c} -would allow this restriction to be removed. - - -\mysect{Language modelling tracing}{HLMlibtracing}\index{tracing} -Each of the \HTK\ language modelling tools provides its own trace -facilities, as documented with the relevant tool in chapter -\ref{c:toolref}. The standard libraries also provide their own trace -settings, which can be set in a passed configuration file. Each of -the supported trace levels is documented below with the octal value -necessary to enable it. - -\mysubsect{LCMap}{LCMapTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Class map loading -\end{itemize} - -\mysubsect{LGBase}{LGBaseTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Trace $n$-gram squashing -\item 0004 Trace $n$-gram buffer sorting -\item 0010 Display $n$-gram input set tree -\item 0020 Display maximum parallel input streams -\item 0040 Trace parallel input streaming -\item 0100 Display information on FoF input/output -\end{itemize} - -\mysubsect{LModel}{LModelTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Trace loading of language models -\item 0004 Trace saving of language models -\item 0010 Trace word mappings -\item 0020 Trace $n$-gram lookup -\end{itemize} - -\mysubsect{LPCalc}{LPCalcTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 FoF table tracing -\end{itemize} - -\mysubsect{LPMerge}{LPMergeTrace} -\begin{itemize} -\item 0001 Top level tracing -\end{itemize} - -\mysubsect{LUtil}{LUtilTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Show header processing -\item 0004 Hash table tracing -\end{itemize} - -\mysubsect{LWMap}{LWMapTrace} -\begin{itemize} -\item 0001 Top level tracing -\item 0002 Trace word map loading -\item 0004 Trace word map sorting -\end{itemize} - - -\mysect{Run-time configuration parameters}{HLMconfigParms}\index{configuration parameters!operating -environment} -Section \ref{s:openvsum} lists the major standard \HTK\ configuration -parameter options whilst the rest of chapter \ref{c:openviron} -describes the general \HTK\ environment and how to set those -configuration parameters, whilst chapter \ref{c:confvars} provides a -comprehensive list. For ease of reference those parameters -specifically relevant to the language modelling tools are reproduced -in table \ref{t:openvcparmsLM}. - -\begin{center} -\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{6.4cm}|} \hline -Module & Name & Description \\ \hline -\htool{HShell} & \texttt{ABORTONERR} & Core dump on error (for debugging) \\ -\htool{HShell} & \texttt{HLANGMODFILTER} & Filter for language model file input\\ -\htool{HShell} & \texttt{HLABELFILTER} & Filter for Label file input\\ -\htool{HShell} & \texttt{HDICTFILTER} & Filter for Dictionary file input \\ -\htool{HShell} & \texttt{LGRAMFILTER} & Filter for gram file input\\ -\htool{HShell} & \texttt{LWMAPFILTER} & Filter for word map file input\\ -\htool{HShell} & \texttt{LCMAPFILTER} & Filter for class map file input\\ -\htool{HShell} & \texttt{HLANGMODOFILTER} & Filter for language model file output\\ -\htool{HShell} & \texttt{HLABELOFILTER} & Filter for Label file output\\ -\htool{HShell} & \texttt{HDICTOFILTER} & Filter for Dictionary file output \\ -\htool{HShell} & \texttt{LGRAMOFILTER} & Filter for gram file output\\ -\htool{HShell} & \texttt{LWMAPOFILTER} & Filter for word map file output\\ -\htool{HShell} & \texttt{LCMAPOFILTER} & Filter for class map file output\\ -\htool{HShell} & \texttt{MAXTRYOPEN} & Number of file open retries \\ -\htool{HShell} & \texttt{NONUMESCAPES} & Prevent string output using \verb+\012+ format \\ -\htool{HShell} & \texttt{NATURALREADORDER} & Enable natural read order for HTK binary files \\ -\htool{HShell} & \texttt{NATURALWRITEORDER} & Enable natural write order for HTK binary files \\ -\htool{HMem} & \texttt{PROTECTSTAKS} & Warn if stack is cut-back (debugging) \\ - & \texttt{TRACE} & Trace control (default=0) \\ - & \texttt{STARTWORD} & Set sentence start symbol ({\tt }) \\ - & \texttt{ENDWORD} & Set sentence end symbol ({\tt }) \\ - & \texttt{UNKNOWNNAME} & Set OOV class symbol ({\tt !!UNK}) \\ - & \texttt{RAWMITFORMAT} & Disable \HTK\ escaping for LM tools\\ -\htool{LWMap} & \texttt{INWMAPRAW} & Disable \HTK\ escaping for input word lists and maps \\ -\htool{LWMap} & \texttt{OUTWMAPRAW} & Disable \HTK\ escaping for output word lists and maps \\ -\htool{LCMap} & \texttt{INCMAPRAW} & Disable \HTK\ escaping for input class lists and maps \\ -\htool{LCMap} & \texttt{OUTCMAPRAW} & Disable \HTK\ escaping for output class lists and maps \\ -\htool{LCMap} & \texttt{UNKNOWNID} & Set unknown symbol class ID (1)\\ -\htool{LCMap} & \texttt{USEINTID} & Use 4 byte ID fields to save - binary models (see section \ref{s:HLMuseintid})\\ -\htool{LPCalc} & \texttt{UNIFLOOR} & Unigram floor count (1)\\ -\htool{LPCalc} & \texttt{KRANGE} & Good-Turing discounting range (7)\\ -\htool{LPCalc} & \texttt{\textit{n}G\_CUTOFF} & \textit{n}-gram cutoff - (eg. \texttt{2G\_CUTOFF}) (1)\\ -\htool{LPCalc} & \texttt{DCTYPE} & Discounting type - (\texttt{TG} for Turing-Good or \texttt{ABS} for Absolute) -% \texttt{LIN} for Linear) - not fully implemented (!) - (\texttt{TG})\\ -\htool{LGBase} & \texttt{CHECKORDER} & Check N-gram ordering in files \\ -\hline -\end{tabular} -\tabcap{openvcparmsLM}{Configuration Parameters used in Operating Environment} -\end{center} - - -\mysubsect{USEINTID}{HLMuseintid}\index{configuration -parameters!\texttt{USEINTID}} - -Setting this to {\tt T} as opposed to its default of {\tt F} forces the -\htool{LModel} library to save language models using an unsigned int for each -word ID as opposed to the default of an unsigned short. In most -systems these lengths correspond to 4-byte and 2-byte fields -respectively. Note that if you do not set this that \htool{LModel} -will automatically choose an int field size if the short field is too -small -- the exception to this is if you have compiled with {\tt -LM\_ID\_SHORT} which limits the field size to an unsigned short, in -which case the tool will be forced to abort; see section -\ref{s:HLMlmidshort} below. - - - -\mysect{Compile-time configuration -parameters}{HLMctconfigParms}\index{configuration -parameters!compile-time} -There are some compile-time switches which may be set when building -the language modelling library and tools. - -\mysubsect{LM\_ID\_SHORT}{HLMlmidshort}\index{compile-time parameters!\texttt{LM\_ID\_SHORT}} - -When compiling the \HTK\ language modelling library, setting {\tt -LM\_ID\_SHORT} (for example by passing {\tt -D LM\_ID\_SHORT} to the C -compiler) forces the compiler to use an unsigned short for each -language model ID it stores, as opposed to the default of an unsigned -int -- in most systems this will result in either a 2-byte integer or -a 4-byte integer respectively. If you set this then you {\it must} -ensure you also set {\tt LM\_ID\_SHORT} when compiling the \HTK\ -language modelling tools too, otherwise you will encounter a mismatch -leading to strange results! (Your compiler may warn of this error, -however). For this reason it is safest to set {\tt LM\_ID\_SHORT} via a -{\tt \#define} in {\tt LModel.h}. You might want to set this if you -know how many distinct word ids you require and you do not want to -waste memory, although on some systems using shorts can actually be -slower than using a full-size int. - -Note that the run-time {\tt USEINTID} parameter described in section -\ref{s:HLMuseintid} above only affects the size of ID fields when -saving a binary model from {\tt LModel}, so is independent of {\tt -LM\_ID\_SHORT}. The only restriction is that you cannot load or save a -model with more ids than can fit into an unsigned short when {\tt -LM\_ID\_SHORT} is set -- the tools will abort with an error should you -try this. - - -\mysubsect{LM\_COMPACT}{HLMcompact}\index{compile-time parameters!\texttt{LM\_COMPACT}} - -When {\tt LM\_COMPACT} is defined at compile time, when a language model -is loaded then its probabilities are compressed into an unsigned short as opposed -to being loaded into a float. The exact size of these types -depends on your processor architecture, but in general an unsigned -short is more than half as small as a float. Using the compact -storage type therefore significantly reduces the accuracy with which -probabilities are stored. - -The side effect of setting this is therefore reduced accuracy when -running a language model, such as when using \htool{LPlex}; or a loss -of accuracy when rebuilding from an existing language model using -\htool{LMerge}, \htool{LAdapt}, \htool{LBuild} or \htool{HLMCopy}. - - -\mysubsect{LMPROB\_SHORT}{HLMprobshort}\index{compile-time parameters!\texttt{LMPROB\_SHORT}} - -Setting {\tt LMPROB\_SHORT} causes language model probabilities to be -stored and loaded using a short type. Unlike {\tt LM\_COMPACT}, this -option certainly {\it does} affect the writing of language model -files. If you save a file using this format then you must ensure you -reload it in the same way to ensure you obtain sensible results. - - -\mysubsect{INTERPOLATE\_MAX}{HLMinterpmax}\index{compile-time parameters!\texttt{INTERPOLATE\_MAX}} - -If the library and tools are compiled with {\tt INTERPOLATE\_MAX} then -language model interpolation in \htool{LPlex} and the \htool{LPMerge} -library (which is used by \htool{LAdapt} and \htool{LMerge}) will -ignore the individual model weights and always pick the highest -probability from each of the models at any given point. Note that -this option will \textit{not} normalise the models. - - -\mysubsect{SANITY}{HLMinterpmax2}\index{compile-time parameters!\texttt{SANITY}} - -Turning on {\tt SANITY} when compiling the library will add a word map -check to \htool{LGBase} and some sanity checks to \htool{LPCalc}. - - -\mysubsect{INTEGRITY\_CHECK}{HLMintegcheck}\index{compile-time parameters!\texttt{INTEGRITY\_CHECK}} - -Compiling with {\tt INTEGRITY\_CHECK} will add run-time integrity -checking to the \htool{Cluster} tool. Specifically it will check that -the class counts have not become corrupted and that all maximum -likelihood move updates have been correctly calculated. You should -not need to enable this unless you suspect a major tool problem, and -doing so will slow down the tool execution. It could probe useful if -you wanted to adapt the way the clustering works, however. diff --git a/HTKBook/hlmfund.tex b/HTKBook/hlmfund.tex deleted file mode 100644 index 77ad6fb..0000000 --- a/HTKBook/hlmfund.tex +++ /dev/null @@ -1,849 +0,0 @@ -% -% !HVER!hlmfund [SJY 05/04/97] -% -% Updated (and about 90% rewritten) - Gareth Moore 16/01/02 - 27/03/02 -% - -\mychap{Fundamentals of language modelling}{hlmfund} - -The \HTK\ language modelling tools are designed for constructing and -testing statistical $n$-gram language models. This chapter introduces -language modelling and provides an overview of the supplied tools. It -is strongly recommended that you read this chapter and then work -through the tutorial in the following chapter -- this will provide you -with everything you need to know to get started building language models. - -\sidepic{HLMoperation}{80}{ -An $n$-gram is a sequence of $n$ symbols (e.g. words, syntactic -categories, etc) and an $n$-gram language model (LM) is used to -predict each symbol in the sequence given its $n-1$ predecessors. It -is built on the assumption that the probability of a specific $n$-gram -occurring in some unknown test text can be estimated from the -frequency of its occurrence in some given training text. Thus, as -illustrated by the picture above, $n$-gram construction is a three stage -process. Firstly, the training text is scanned and its $n$-grams are -counted and stored in a database of \textit{gram} files. In the -second stage some words may be mapped to an out of vocabulary class or -other class mapping may be applied, and then in the final stage -the counts in the resulting gram files are used to compute -$n$-gram probabilities which are stored in the \textit{language model} -file. Lastly, the \textit{goodness} of a language model can be -estimated by using it to compute a measure called \textit{perplexity} -on a previously unseen test set. In general, the better a language model -then the lower its test-set perplexity.} - -Although the basic principle of an $n$-gram LM is very simple, in -practice there are usually many more potential $n$-grams than can ever -be collected in a training text in sufficient numbers to yield robust -frequency estimates. Furthermore, for any real application such as -speech recognition, the use of an essentially static and finite -training text makes it difficult to generate a single LM which is -well-matched to varying test material. For example, an LM trained on -newspaper text would be a good predictor for dictating news -reports but the same LM would be a poor predictor for personal letters -or a spoken interface to a flight reservation system. A final -difficulty is that the \textit{vocabulary} of an $n$-gram LM is finite -and fixed at construction time. Thus, if the LM is word-based, it can -only predict words within its vocabulary and furthermore new words -cannot be added without rebuilding the LM. - -The following four sections provide a thorough introduction to the -theory behind $n$-gram models. It is well worth reading through this -section because it will provide you with at least a basic -understanding of what many of the tools and their parameters actually -do -- you can safely skip the equations if you choose because the text -explains all the most important parts in plain English. The final -section of this chapter then introduces the tools provided to -implement the various aspects of $n$-gram language modelling that have -been described. - - -\mysect{{\it n}-gram language models}{ngramLMs} -Language models estimate the probability of a word sequence, $\hat -P(w_1, w_2, \ldots, w_m)$ -- that is, they evaluate $P(w_i)$ as defined in equation -\ref{e:3} in chapter \ref{c:fundaments}.\footnote{The theory components of this chapter -- -these first four sections -- are condensed from portions of -{\textbf{``Adaptive Statistical Class-based Language Modelling''}, -G.L. Moore; \textit{Ph.D thesis, Cambridge University} 2001}} - -The probability $\hat P(w_1, w_2, \ldots, w_m)$ can be decomposed as a -product of conditional probabilities: -\begin{equation} -\hat P(w_1, w_2, \ldots, w_m) = \prod_{i=1}^{m} \hat P(w_i \;|\; w_1, -\ldots, w_{i-1})\label{cond_prob_model} -\end{equation} - - -\mysubsect{Word {\it n}-gram models}{wordngrams} -Equation \ref{cond_prob_model} presents an opportunity for -approximating $\hat{P}(\cal{W})$ by limiting the context: -\begin{equation} -\hat P(w_1, w_2, \ldots, w_m) \simeq \prod_{i=1}^{m} \hat P(w_i \;|\; w_{i-n+1}, -\ldots, w_{i-1})\label{ngram_model} -\end{equation} -for some $n \geqslant 1$. If language is assumed to be ergodic -- that -is, it has the property that the probability of any state can be -estimated from a large enough history independent of the starting -conditions\footnote{See section 5 of [Shannon 1948] -for a more formal definition of ergodicity.} -- then for sufficiently high $n$ equation -\ref{ngram_model} is exact. Due to reasons of data sparsity, however, -values of $n$ in the range of 1 to 4 inclusive are typically used, and -there are also practicalities of storage space for these estimates to -consider. Models using contiguous but limited context in this way are -usually referred to as $n$-gram language models, and the conditional -context component of the probability (``$w_{i-n+1}, \ldots, w_{i-1}$'' -in equation \ref{ngram_model}) is referred to as the {\it history}. - -Estimates of probabilities in $n$-gram models are commonly based on maximum -likelihood estimates -- that is, by counting events in context on some given -training text: -\begin{equation} -\hat P(w_i | w_{i-n+1}, \ldots, w_{i-1}) = -\frac{C(w_{i-n+1}, \ldots, w_i)}{C(w_{i-n+1}, \ldots, w_{i-1})}\label{ngramcountdiv} -\end{equation} -where $C(.)$ is the count of a given word sequence in the -training text. Refinements to this maximum likelihood estimate are -described later in this chapter. - -The choice of $n$ has a significant effect on the number of potential -parameters that the model can have, which is maximally bounded by -$|\mathbb{W}|^n$, where $\mathbb{W}$ is the set of words in the -language model, also known as the {\it vocabulary}. A 4-gram model -with a typically-sized 65,000 word vocabulary can therefore -potentially have $65,000\,^4 -\simeq 1.8\times10^{19}$ parameters. In practice, however, only a -small subset of the possible parameter combinations represent likely -word sequences, so the storage requirement is far less than this -theoretical maximum -- of the order of $10^{11}$ times less in -fact.\footnote{Based on the analysis of 170 million words of newspaper -and broadcast news text.} Even given this significant reduction in -coverage and a very large training text\footnote{A couple of hundred -million words, for example.} there are still many plausible word -sequences which will not be encountered in the training text, or will -not be found a statistically significant number of times. It would not -be sensible to assign all unseen sequences zero probability, so -methods of coping with low and zero occurrence word tuples have been -developed. This is discussed later in section \ref{robust_estimation}. - -It is not only the storage space that must be considered, however -- -it is also necessary to be able to attach a reasonable degree of -confidence to the derived estimates. Suitably large quantities of -example training text are also therefore required to ensure statistical -significance. Increasing the amount of training text not only gives -greater confidence in model estimates, however, but also demands more -storage space and longer analysis periods when estimating model -parameters, which may place feasibility limits on how much data can be -used in constructing the final model or how thoroughly it can be -analysed. At the other end of the scale for restricted domain models -there may be only a limited quantity of suitable in-domain text -available, so local estimates may need smoothing with global priors. -In addition, if language models are to be used for speech recognition -then it is good to train them on {\it precise} acoustic transcriptions -where possible -- that is, text which features the hesitations, -repetitions, word fragments, mistakes and all the other sources of -deviation from purely grammatical language that characterise everyday -speech. However, such acoustically accurate transcriptions are in -limited supply since they must be specifically prepared; real-world -transcripts as available for various other purposes almost -ubiquitously correct any disfluencies or mistakes made by speakers. - - -\mysubsect{Equivalence classes}{HLMequivalenceclasses} -The word $n$-gram model described in equation \ref{ngram_model} uses -an equivalence mapping on the word history which assumes that all -contexts which have the same most recent $n-1$ words all have the same -probability. This concept can be expressed more generally by defining -an equivalence class function that acts on word histories, $\mathcal -E(.)$, such that if $\mathcal E(x) = \mathcal E(y)$ then $\forall w:$ -$P(w | x) = P(w | y)$: -\begin{equation} -P(w_i \;|\; w_1, w_2, \ldots, w_{i-1}) = -P(w_i \;|\; \mathcal E(w_1, w_2, \ldots, w_{i-1}))\label{equiv_cond_prob_model} -\end{equation} - -A definition of $\mathcal{E}$ that describes a word $n$-gram is thus: -\begin{equation} -\mathcal E_{\textrm{word-{\it n}-gram}}(w_1, \ldots, w_{i}) = \mathcal E(w_{i-n+1}, \ldots, w_{i}) -\end{equation} - -In a good language model the choice of $\mathcal{E}$ should be such that it -provides a reliable predictor of the next word, resulting in classes -which occur frequently enough in the training text that they can be -well modelled, and does not result in so many distinct history -equivalence classes that it is infeasible to store or analyse all the -resultant separate probabilities. - - -\mysubsect{Class {\it n}-gram models}{HLMclassngram}\label{classngram-description} -One method of reducing the number of word history equivalence classes -to be modelled in the $n$-gram case is to consider some words as -equivalent. This can be implemented by mapping a set of words to a -word class $g \in \mathbb{G}$ by using a classification function $G(w) -= g$. If any class contains more than one word then this mapping will -result in less distinct word classes than there are words, -$|\mathbb{G}| < |\mathbb{W}|$, thus reducing the number of separate -contexts that must be considered. The equivalence classes can then be -described as a sequence of these classes: -\begin{equation} -\mathcal E_{\textrm{class-{\it n}-gram}}(w_1, \ldots, w_{i}) = \mathcal -E(G(w_{i-n+1}), \ldots, G(w_{i}))\label{equiv_classes} -\end{equation} - -A deterministic word-to-class mapping like this has some advantages -over a word $n$-gram model since the reduction in the number of -distinct histories reduces the storage space and training data -requirements whilst improving the robustness of the probability -estimates for a given quantity of training data. Because multiple -words can be mapped to the same class, the model has the ability to -make more confident assumptions about infrequent words in a class -based on other more frequent words in the same class\footnote{Since it -is assumed that words are placed in the same class because they share -certain properties.} than is possible in the word $n$-gram case -- and -furthermore for the same reason it is able to make generalising -assumptions about words used in contexts which are not explicitly -encountered in the training text. These gains, however, clearly -correspond with a loss in the ability to distinguish between different -histories, although this might be offset by the ability to -choose a higher value of $n$. - -The most commonly used form of class $n$-gram model uses a single -classification function, $G(.)$, as in equation \ref{equiv_classes}, -which is applied to each word in the $n$-gram, including the word which -is being predicted. Considering for clarity the bigram\footnote{By convention -{\it unigram} refers to a 1-gram, -{\it bigram} indicates a 2-gram and {\it trigram} is a 3-gram. There is no -standard term for a 4-gram.} -case, then given $G(.)$ the language model has the terms $w_i$, -$w_{i-1}$, $G(w_i)$ and $G(w_{i-1})$ available to it. The probability -estimate can be decomposed as follows: -\begin{eqnarray} -P_{\textrm{class'}}(w_i \;|\; w_{i-1}) -& = & P(w_i \;|\; G(w_i), G(w_{i-1}), w_{i-1} )\nonumber\\ - & \qquad\qquad\times & P(G(w_i) \;|\; G(w_{i-1}), w_{i-1}) -\label{chap2equalToOne} -\end{eqnarray} - -It is assumed that $P(w_i -\;|\; G(w_i), G(w_{i-1}), w_{i-1})$ is independent of $G(w_{i-1})$ and -$w_{i-1}$ and that $P(G(w_i) \;|\; G(w_{i-1}), w_{i-1})$ is -independent of $w_{i-1}$, resulting in the model: -\begin{equation} -P_{\textrm{class}}(w_i \;|\; w_{i-1}) = P(w_i \;|\; G(w_{i})) \;\times\; -P(G(w_i) \;|\; G(w_{i-1})) -\label{normclass} -\end{equation} - -Almost all reported class $n$-gram work using statistically-found classes -is based on clustering algorithms which optimise $G(.)$ on the basis -of bigram training set likelihood, even if the class map is to be used -with longer-context models. It is interesting to -note that this approximation appears to works well, however, -suggesting that the class maps found are in some respects ``general'' -and capture some features of natural language which apply irrespective -of the context length used when finding these features. - - -\mysect{Statistically-derived Class Maps}{HLMclustering}\label{clustering_section} -An obvious question that arises is how to compute or otherwise obtain -a class map for use in a language model. This section discusses -one strategy which has successfully been used. - -Methods of statistical class map construction seek to maximise the -likelihood of the training text given the class model by making -iterative controlled changes to an initial class map -- in order to -make this problem more computationally feasible they typically use a -deterministic map. - -\mysubsect{Word exchange algorithm}{HLMexchangealg}\label{KN-clustering} -[Kneser and Ney 1993]\footnote{R. Kneser and H. Ney, -\textbf{``Improved Clustering Techniques for Class-Based Statistical Language -Modelling''}; \textit{Proceedings of the European Conference on Speech -Communication and Technology} 1993, pp. 973-976} describes an -algorithm to build a class map by starting from some initial guess at -a solution and then iteratively searching for changes to improve the -existing class map. This is repeated until some minimum change -threshold has been reached or a chosen number of iterations have been -performed. The initial guess at a class map is typically chosen by a -simple method such as randomly distributing words amongst classes or -placing all words in the first class except for the most frequent -words which are put into singleton classes. Potential moves are then -evaluated and those which increase the likelihood of the training text -most are applied to the class map. The algorithm is described in -detail below, and is implemented in the \HTK\ tool \htool{Cluster}. - -Let $\mathcal{W}$ be the training text list of words $(w_1, w_2, w_3, -\ldots)$ and let $\mathbb{W}$ be the set of all words in -$\mathcal{W}$. -From equation -\ref{cond_prob_model} it follows that: -\begin{equation} -P_\mathrm{class}(\mathcal{W}) \;=\; \prod_{x, y \in \mathbb{W}} -P_\mathrm{class}(x \;|\; y)^{C(x,y)}\label{classnorm_totprob} -\end{equation} -where $(x, y)$ is some word pair `$x$' preceded by `$y$' and $C(x, y)$ -is the number of times that the word pair `$y$ $x$' occurs in the list -$\mathcal{W}$. - -In general evaluating equation \ref{classnorm_totprob} will lead to -problematically small values, so logarithms can be used: -\begin{equation} -\log P_\mathrm{class}(\mathcal{W}) \;=\; \sum_{x, y \in \mathbb{W}} -C(x, y) . \log P_\mathrm{class}(x \;|\; y) \label{classnorm_logprob} -\end{equation} - -Given the definition of a class $n$-gram model in equation -\ref{normclass}, the maximum likelihood bigram -probability estimate of a word is: -\begin{eqnarray} -P_\mathrm{class}(w_i \;|\; w_{i-1}) & = & - \frac{C(w_i)}{C(G(w_i))} - \times - \frac{C\left(G(w_i), G(w_{i-1})\right)} - {C(G(w_{i-1}))} \label{classnorm_breakdown} -\end{eqnarray} -where $C(w)$ is the number of times that the word `$w$' occurs in the -list $\mathcal{W}$ and $C(G(w))$ is the number of times that the class -$G(w)$ occurs in the list resulting from applying $G(.)$ to each entry -of $\mathcal{W}$;\footnote{That is, $C(G(w))=\sum_{x: -G(x)=G(w)}C(x)$.} similarly $C(G(w_x), G(w_y))$ is the count of the -class pair `$G(w_y)$ $G(w_x)$' in that resultant list. - -Substituting equation \ref{classnorm_breakdown} into equation \ref{classnorm_logprob} -and then rearranging gives: -\begin{eqnarray} -\log P_\mathrm{class}(\mathcal{W}) & \;=\; & -\sum_{x,y \in \mathbb{W}} C(x,y) . \log\left( - \frac{C(x)}{C(G(x))} \times \frac{C(G(x),G(y))}{C(G(y))} - \right) \nonumber -\\ -&\;=\;& \sum_{x,y \in \mathbb{W}} C(x,y) . \log - \left(\frac{C(x)}{C(G(x))}\right) - \;+\; \sum_{x,y \in \mathbb{W}} C(x,y) - . \log\left(\frac{C(G(x),G(y))}{C(G(y))}\right) \nonumber -\\ -&\;=\;& \sum_{x \in \mathbb{W}} C(x) . \log \left(\frac{C(x)}{C(G(x))}\right) - \;+\; \sum_{g,h \in \mathbb{G}} C(g,h) . \log\left(\frac{C(g,h)}{C(h)}\right) - \nonumber -\\ -&\;=\;& \sum_{x \in \mathbb{W}} C(x) . \log C(x) - \;-\; \sum_{x \in \mathbb{W}} C(x) . \log C(G(x))\nonumber\\ -&&\;+\; \sum_{g,h \in \mathbb{G}} C(g,h) . \log C(g,h) - \;-\; \sum_{g \in \mathbb{G}} C(g) . \log C(g) \nonumber -\\ -&\;=\;& \sum_{x \in \mathbb{W}} C(x) . \log C(x) - \;+\; \sum_{g,h \in \mathbb{G}} C(g,h) . \log C(g,h)\nonumber\\ -&&\;-\; 2 \sum_{g \in \mathbb{G}} C(g) . \log C(g)\label{classnorm_ml} -\end{eqnarray} -where $(g,h)$ is some class sequence `$h$ $g$'. - -Note that the first of these three terms in the final stage of equation -\ref{classnorm_ml}, ``$\sum_{x \in \mathbb{W}} C(x)$ $.$ $\log(C(x))$'', is -independent of the class map function $G(.)$, therefore it is not -necessary to consider it when optimising $G(.)$. The value a class -map must seek to maximise, $F_{\mathrm{M}_\mathrm{C}}$, can now be defined: -\begin{eqnarray} -F_{\mathrm{M}_\mathrm{C}} -&\;=\;& - \sum_{g,h \in \mathbb{G}} C(g,h) . \log C(g,h) -\;-\; 2 \sum_{g \in \mathbb{G}} C(g) . \log C(g)\label{classnorm_Fml} -\end{eqnarray} - -A fixed number of classes must be decided before running the -algorithm, which can now be formally defined: - -\begin{center}\framebox[13.5cm]{\parbox{12cm}{\vspace{0.5cm} -\begin{enumerate} -\item {\bfseries Initialise}:\label{Cstepone} $\forall w \in\mathbb{W}:\; G(w) = 1$\\ -Set up the class map so that all words are in the first class and all -other classes are empty ({\it or} initialise using some other scheme) - -\item{\bfseries Iterate}: $\forall i \in \{1\ldots n\} \; \wedge \; \neg s$\\ -For a given number of iterations $1 \ldots n$ or until some stop -criterion $s$ is fulfilled -\begin{enumerate} -\item {\bfseries Iterate}: $\forall w \in\mathbb{W}$\\ -For each word $w$ in the vocabulary -\begin{enumerate}\label{Csteptwo} -\item {\bfseries Iterate}: $\forall c\in\mathbb{G}$\\ -For each class $c$ -\begin{enumerate} -\item {\bfseries Move} word $w$ to class $c$, remembering its previous class -\item {\bfseries Calculate} the change in $F_{\mathrm{M}_\mathrm{C}}$ for this move -\item {\bfseries Move} word $w$ back to its previous class -\end{enumerate} -\item {\bfseries Move} word $w$ to the class which increased $F_{\mathrm{M}_\mathrm{C}}$ by the -most, or do not move it if no move increased $F_{\mathrm{M}_\mathrm{C}}$ -\end{enumerate} -\end{enumerate} -\end{enumerate} -\vspace{0.5cm}}}\end{center} - -The initialisation scheme given here in step \ref{Cstepone} represents -a word unigram language model, making no assumptions about which words -should belong in which class.\footnote{Given this initialisation, the -first $(|\mathbb{G}|-1)$ moves will be to place each word into an -empty class, however, since the class map which maximises -$F_{\mathrm{M}_\mathrm{C}}$ is the one which places each word into a singleton -class.} The algorithm is greedy and so can get stuck in a local -maximum and is therefore not guaranteed to find the optimal class map -for the training text. The algorithm is rarely run until total -convergence, however, and it is found in practice that an extra -iteration can compensate for even a deliberately poor choice of -initialisation. - -The above algorithm requires the number of classes to be fixed before -running. It should be noted that as the number of classes utilised -increases so the overall likelihood of the training text will tend -tend towards that of the word model.\footnote{Which will be higher, -given maximum likelihood estimates.} This is why the algorithm does -not itself modify the number of classes, otherwise it would -na\"{\i}vely converge on $|\mathbb{W}|$ classes. - - - -\mysect{Robust model estimation}{HLMrobustestimates}\label{robust_estimation} -Given a suitably large amount of training data, an extremely long $n$-gram -could be trained to give a very good model of language, as per equation -\ref{cond_prob_model} -- in practice, however, -any actual extant model must be an approximation. Because it is an -approximation, it will be detrimental to include within the model -information which in fact was just noise introduced by the limits of -the bounded sample set used to train the model -- this information may -not accurately represent text not contained within the training -corpus. In the same way, word sequences which were not observed in the -training text cannot be assumed to represent impossible sequences, so -some probability mass must be reserved for these. The issue of how to -redistribute the probability mass, as assigned by the maximum likelihood -estimates derived from the raw statistics of a specific corpus, into a -sensible estimate of the real world is addressed by various standard -methods, all of which aim to create more robust language models. - -\mysubsect{Estimating probabilities}{HLMdiscounts}\label{discounting_and_other_fun_things} -Language models seek to estimate the probability of each possible word -sequence event occurring. In order to calculate maximum likelihood -estimates this set of events must be finite so that the language model -can ensure that the sum of the probabilities of all events is 1 given -some context. In an $n$-gram model the combination of the finite vocabulary -and fixed length history limits the number of unique events to -$|\mathbb{W}|^n$. For any $n>1$ it is highly unlikely that all word -sequence events will be encountered in the training corpora, and many -that do occur may only appear one or two times. A language model -should not give any unseen event zero probability,\footnote{If it did -then from equation \ref{cond_prob_model} it follows that the -probability of any piece of text containing that event would also be -zero, and would have infinite perplexity.} but without an infinite -quantity of training text it is almost certain that there will be -events it does not encounter during training, so various mechanisms -have been developed to redistribute probability within the model such that these -unseen events are given some non-zero probability. %The same or -%similar mechanisms can also be used to -%redistribute probability amongst infrequently-occurring events too in -%the assumption that these were not seen commonly enough to draw firm -%conclusions about their behaviour. - -%Various methods of discounting probability mass from observed events and -%redistributing it to unseen events have been developed. - -As in equation \ref{ngramcountdiv}, the maximum likelihood estimate of -the probability of an event $\mathcal{A}$ occurring is defined by the -number of times that event is observed, $a$, and the total number of -samples in the training set of all observations, $A$, where -$P(\mathcal{A}) = \frac{a}{A}$. With this definition, events that do -not occur in the training data are assigned zero probability since it -will be the case that $a=0$. [Katz 1987]\footnote{S.M. Katz, -\textbf{``Estimation of Probabilities from Sparse Data for the -Language Model Component of a Speech Recogniser''}; \textit{IEEE -Transactions on Acoustic, Speech and Signal Processing} 1987, vol. 35 -no. 3 pp. 400-401} suggests multiplying each observed count by a discount -coefficient factor, $d_a$, which is dependent upon the number of times -the event is observed, $a$, such that $a' = d_a \,.\, a$. -Using this discounted occurrence count, the probability of an event -that occurs $a$ times now becomes -$P_\mathrm{discount}(\mathcal{A}) = \frac{a'}{A\,}$. -Different discounting schemes have been proposed that define the -discount coefficient, $d_a$, in specific ways. The same discount -coefficient is used for all events that occur the same number of -times on the basis of the symmetry requirement that two events that -occur with equal frequency, $a$, must have the same probability, $p_a$. - -Defining $c_a$ as the number of events that occur exactly $a$ times -such that $A = \sum_{a\ge 1} a\,.\,c_a$ %and given the discount -%coefficients $d_a$ it therefore -it follows that the total amount of -reserved mass, left over for distribution amongst the unseen events, -is -%\begin{eqnarray} -%p_0 &=& \frac{1}{c_0} \; \sum_{a\ge 1} -% a \,\frac{(1-d_a)\,.\,c_a}{A}\nonumber\\ -%&=& \frac{1}{c_0\,.\,A} \; \left( \sum_{a\ge 1} c_a\,.\,a -% - \sum_{a\ge 1} d_a\,.\,c_a\,.\,a \right) \nonumber\\ -%&=& -$\frac{1}{c_0} \; ( 1\;-$ $\frac{1}{A}\sum_{a\ge 1}$ $d_a\,.\,c_a\,.\,a)$. -%\end{eqnarray} - -\subsubsection{Good-Turing discounting} -In [Good 1953]\footnote{I.J. Good, \textbf{``The Population Frequencies -of Species and the Estimation of Population Parameters''}; -\textit{Biometrika} 1953, vol. 40 (3,4) pp. 237-264} -a method of discounting maximum likelihood estimates was proposed -whereby the count of an event occurring $a$ times is discounted with -\begin{equation} -d_a = (a+1) \frac{c_{a+1}}{a\,.\,c_a} -\end{equation} -A problem with this scheme, referred to as {\it Good-Turing} discounting, -is that due to the count in the denominator it will fail if there is a -case where $c_a = 0$ if there is any count $c_b > 0$ for -$b>a$. Inevitably as $a$ increases the count $c_a$ will tend towards -zero and for high $a$ there are likely to be many such zero counts. A -solution to this problem was proposed in -[Katz 1987], which defines a cut-off value $k$ at which counts $a$ -for $a > k$ are not discounted\footnote{It is suggested that ``$k=5$ -or so is a good choice''} -- this is justified by -considering these more frequently observed counts as reliable and -therefore not needing to be discounted. Katz then describes a revised -discount equation which preserves the same amount of mass for the -unseen events: -\begin{equation} -d_a = \left\{ \begin{array}{c@{\quad:\quad}l} - \frac{(a+1) \frac{c_{a+1}}{a\,.\,c_a} \;-\; (k+1)\frac{c_{k+1}}{c_1}} - {1 - (k+1)\frac{c_{k+1}}{c_1}} - & 1 \le a \le k\\ -1 & a>k -\end{array}\right. -\end{equation} -This method is itself unstable, however -- for example if $k.c_k > c_1$ -then $d_a$ will be negative for $1 \le a \le k$. - -\subsubsection{Absolute discounting} -An alternative discounting method is {\it absolute} -discounting,\footnote{H. Ney, U. Essen and R. Kneser, \textbf{``On -Structuring Probabilistic Dependences in Stochastic Language -Modelling''}; \textit{Computer Speech and Language} 1994, vol.8 no.1 -pp.1-38} in which a constant value $m$ is subtracted from each -count. The effect of this is that the events with the lowest counts -are discounted relatively more than those with higher counts. The -discount coefficient is defined as -\begin{equation} -d_a = \frac{a-m}{a} -\end{equation} - -In order to discount the same amount of probability mass as the -Good-Turing estimate, $m$ must be set to: -\begin{equation} -m = \frac{c_1}{\sum_{a=1}^{A}a\,.\,c_a} -\end{equation} - -%\subsubsection{Linear discounting} -%In {\it linear} discounting, event counts are discounted in proportion to -%their magnitude, thus $d_a$ is constant over all values of $a$. In -%order to discount the same quantity of probability mass as the -%Good-Turing discounting scheme, $d_a$ must be defined as -%\begin{equation} -%d_a = 1 \,-\, \frac{c_1}{A} -%\end{equation} - - -\mysubsect{Smoothing probabilities}{HLMsmoothingprobs}\label{smoothing_probs} -The above discounting schemes present various methods of -redistributing probability mass from observed events to unseen -events. Additionally, if events are infrequently observed then they -can be smoothed with less precise but more frequently observed events. - -In [Katz 1987] a {\it back off} scheme is proposed and used alongside -Good-Turing discounting. In this method probabilities are -redistributed via the recursive utilisation of lower level conditional -distributions. Given the $n$-gram case, if the $n$-tuple is not observed -frequently enough in the training text then a probability based on the -occurrence count of a shorter-context $(n-1)$-tuple is used -instead -- using the shorter context estimate is referred to as -{\it backing off}. -In practice probabilities are typically considered -badly-estimated if their corresponding word sequences are not -explicitly stored in the language model, either because they did not -occur in the training text or they have been discarded using some -pruning mechanism. - -Katz defines a function $\hat{\beta}(w_{i-n+1}, -\ldots w_{i-1})$ which represents the total -probability of all the unseen events in a particular context. % $w_1, -%%w_2, \ldots w_{i-1}$, given an existing probability estimate function $\hat{P}$: -%\begin{equation} -%\hat{\beta}(w_1, \ldots, w_{i-1}) = 1\, - \,\sum_{w_i: c(w_1, \ldots, w_i)>0} -% \hat{P}(w_i | w_1, \ldots, w_{i-1}) -%\end{equation} -%where $c(w_1, \ldots, w_i)$ is the occurrence count of the sequence -%$w_1, \ldots, w_i$ stored in the language model. -The probability mass $\hat{\beta}$ is then distributed amongst all the -unseen $w_i$ and the language model probability estimate becomes:% where $c(w_1,$ $\ldots,$ $w_i)$ $=$ $0$: -%\begin{equation} -%\hat{P}(w_i | w_1, \ldots, w_{i-1}) = \alpha(w_1, \ldots, w_{i-1}) \,.\, \hat{P}(w_i | w_2, \ldots, w_{i-1}) -%\end{equation} -%given: -%\begin{equation} -%\alpha(w_1, \ldots, w_{i-1}) = \frac{\hat{\beta}(w_1, \ldots, w_{i-1})} -% {\sum_{w_i: c(w_1, \ldots, w_i)=0}\hat{P}(w_i | w_2, \ldots, w_{i-1})} -%\end{equation} -% -%Combining this back off scheme for unseen events with a discounting -%method, the resulting language model probability estimate becomes: -\begin{equation} -\hat{P}(w_i \;|\; w_{i-n+1},\ldots,w_{i-1}) =\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\qquad{}\nonumber -\end{equation} -\vspace{-0.5cm}\begin{equation} -\left\{ \begin{array}{l@{\quad:\quad}l} -\alpha(w_{i-n+1}, \ldots, w_{i-1}) \,.\, \hat{P}(w_i | w_{i-n+2}, \ldots, w_{i-1}) & -c(w_{i-n+1}, \ldots, w_i) = 0\\ -d_{c(w_{i-n+1}, \ldots, w_i)} \,.\, \frac{c(w_{i-n+1}, \ldots, w_i)}{c(w_{i-n+1}, -\ldots, w_{i-1})} & 1 \le c(w_{i-n+1}, \ldots, w_i) \le k\\ -\frac{c(w_{i-n+1}, \ldots, w_i)}{c(w_{i-n+1}, -\ldots, w_{i-1})} & c(w_{i-n+1}, \ldots, w_i) > k\\ -\end{array}\right. -\end{equation} -where $c(.)$ is the count of an event and: -\begin{equation} -\alpha(w_{i-n+1}, \ldots, w_{i-1}) = \frac{\hat{\beta}(w_{i-n+1}, -\ldots, w_{i-1})} {\sum_{w_i: c(w_{i-n+1}, \ldots, w_i)=0}\hat{P}(w_i -| w_{i-n+2}, \ldots, w_{i-1})} -\end{equation} -A back off scheme such as this can be implemented efficiently because -all the back off weights $\alpha$ can be computed once and then stored -as part of the language model, and through its recursive nature it is -straightforward to incorporate within a language model. Through the -use of pruning methods, contexts which occur `too infrequently' are not -stored in the model so in practice the test $c(w_1,\ldots,w_{i})=0$ is -implemented as referring to whether or not the context is in the model. - -%\subsubsection{Interpolation}\label{interp_bit} -%Instead of backing off to a shorter-context estimate only when a -%longer context is not stored within the language model, a model can -%combine multiple contexts in every estimate it makes by means of -%linear interpolation: -%\begin{equation} -%\hat{P}(w_i \;|\; w_1,\ldots,w_{i-1}) = \lambda_1 \frac{c(w_i)}{A} \;+\; -% \sum_{m=1}^{i-1} \lambda_{i-m+1} -% \frac{c(w_m,\ldots,w_i)}{c(w_m,\ldots,w_{i-1})} -%\end{equation} -%where $\lambda_m$ is the weight of each component of the language -%model such that $\sum_m \lambda_m = 1$. In this example $\lambda_1$ and -%$\lambda_2$ are the weight of the unigram and bigram models -%respectively. The weights $\lambda_m$ are chosen so as to maximise the -%probability of a held-out test set which was not originally used for -%training each of the component models. - -\subsubsection{Cut-offs} -With a back off scheme low count events -can be discarded -- {\it cut-off} -- from the model and more frequently observed -shorter-context estimates can be used instead. An additional advantage -of discarding low occurrence events is that the model size can be -substantially reduced, since in general as $a$ decreases so the number -of events $c_a$ increases -- in fact the Good-Turing discounting -scheme depends upon this relationship. - - -\mysect{Perplexity}{HLMperplexity} -A measure of language model performance based on average probability -can be developed within the field of information theory -[Shannon 1948]\footnote{C.E. Shannon, \textbf{``A Mathematical -Theory of Communication''}; \textit{The Bell System Technical Journal} -1948, vol. 27 pp. 379-423, 623-656. Available online at -\texttt{http://galaxy.ucsd.edu/new/external/shannon.pdf}}. -A speaker emitting language can be considered to be a discrete -information source which is generating a sequence of words $w_1, w_2, -\ldots, w_m$ from a vocabulary set, $\mathbb{W}$. The probability of a -symbol $w_i$ is dependent upon the previous symbols $w_1, \ldots, -w_{i-1}$. The information source's inherent per-word entropy $H$ -represents the amount of non-redundant information provided by each -new word on average, defined in bits as: -\begin{equation} -H = - \lim_{m \to \infty} \frac{1}{m} \sum_{w_1, w_2, \ldots, w_m}\left( P(w_1, w_2, \ldots, w_m)\; -\log_2 P(w_1, w_2, \ldots, w_m) \right) -\end{equation} - -This summation is over all possible sequences of words, but if the -source is ergodic then the summation over all possible word sequences -can be discarded and the equation becomes equivalent to: -\begin{equation} -H = - \lim_{m \to \infty} \frac{1}{m} \log_2 P(w_1, w_2, \ldots, w_m) -\end{equation} -It is reasonable to assume ergodicity on the basis that we use -language successfully without having been privy to all words that have -ever been spoken or written, and we can disambiguate words on the -basis of only the recent parts of a conversation or piece of text. - -Having assumed this ergodic property, it follows that given a large -enough value of $m$, $H$ can be approximated with: -\begin{equation}\label{2-3} -\hat{H} = - \frac{1}{m} \log_2 P(w_1, w_2, \ldots, w_m) -\end{equation} -This last estimate is feasible to evaluate, thus providing the basis -for a metric suitable for assessing the performance of a language model. - -Considering a language model as an information source, it follows that -a language model which took advantage of all possible features of -language to predict words would also achieve a per-word entropy of -$H$. It therefore makes sense to use a measure related to entropy to -assess the actual performance of a language model. Perplexity, $PP$, -is one such measure that is in standard use, defined such that: -\begin{equation}\label{2-4} -PP = 2^{\hat{H}} -\end{equation} -Substituting equation \ref{2-3} into equation \ref{2-4} and -rearranging obtains: -\begin{equation} -PP = \hat{P}(w_1, w_2, \ldots, w_m)^{-\frac{1}{m}}\label{pp_sum_eqn} -\end{equation} -where $\hat{P}(w_1, w_2, \ldots, w_m)$ is the probability estimate assigned to -the word sequence $(w_1,$ $w_2,$ $\ldots, w_m)$ by a language model. - -Perplexity can be considered to be a measure of on average how many -different equally most probable words can follow any given word. -Lower perplexities represent better language models, although this -simply means that they `model language better', rather than -necessarily work better in speech recognition systems -- perplexity is -only loosely correlated with performance in a speech recognition -system since it has no ability to note the relevance of acoustically -similar or dissimilar words. - -In order to calculate perplexity both a language model and some test -text are required, so a meaningful comparison between two language -models on the basis of perplexity requires the same test text and word -vocabulary set to have been used in both cases. The size of the -vocabulary can easily be seen to be relevant because as its -cardinality is reduced so the number of possible words given any -history must monotonically decrease, therefore the probability -estimates must on average increase and so the perplexity will decrease. - - -\mysect{Overview of $n$-Gram Construction Process}{mkngoview} -This section describes the overall process of building an $n$-gram -language model using the \HTK\ tools. As noted in the introduction, -it is a three stage process. Firstly, the training text is scanned -and the $n$-grams counts are stored in a set of \textit{gram} files. -Secondly, and optionally, the counts in the gram files are modified to -perform vocabulary and class mapping. Finally the resulting gram -files are used to build the LM. This separation into stages adds some -complexity to the overall process but it makes it much more efficient -to handle very large quantities of data since the gram files only need -to be constructed once but they can be augmented, processed and used -for constructing LMs many times. - -The overall process involved in building an $n$-gram language model -using the \HTK\ tools is illustrated in Figure~\ref{f:WordLM}. The -procedure begins with some training text, which first of all should be -conditioned into a suitable format by performing operations such as -converting numbers to a citation form, expanding common abbreviations -and so on. The precise format of the training text depends on your -requirements, however, and can vary enormously -- therefore -conditioning tools are not supplied with \HTK.\footnote{In fact a very -simple text conditioning Perl script is included in {\tt -LMTutorial/extras/LCond.pl} for demonstration purposes only -- it -converts text to uppercase (so that words are considered equivalent -irrespective of case) and reads the input punctuation in order to tag -sentences, stripping most other punctuation. See the script for more -details.} - -Given some input text, the tool \htool{LGPrep} scans the input word -sequence and counts $n$-grams.\footnote{\htool{LGPrep} can also -perform text modification using supplied rules.} These $n$-gram counts -are stored in a buffer which fills as each new $n$-gram is -encountered. When this buffer becomes full, the $n$-grams within it -are sorted and stored in a \textit{gram} file. -All words (and symbols generally) are represented within \HTK\ by a -unique integer id. The mapping from words to ids is recorded in a -word map. On startup, \htool{LGPrep} loads in an existing word map, -then each new word encountered in the input text is allocated a new id -and added to the map. On completion, \htool{LGPrep} outputs the new -updated word map. If more text is input, this process is repeated and -hence the word map will expand as more and more data is processed. - -Although each of the gram files output by \htool{LGPrep} is sorted, -the range of $n$-grams within individual files will overlap. To build -a language model, all $n$-gram counts must be input in sort order so -that words with equivalent histories can be grouped. To accommodate -this, all \HTK\ language modelling tools can read multiple gram files -and sort them on-the-fly. This can be inefficient, however, and it is -therefore useful to first copy a newly generated set of gram files -using the \HLM\ tool \htool{LGCopy}. This yields a set of gram files -which are \textit{sequenced}, i.e. the ranges of $n$-grams within each -gram file do not overlap and can therefore be read in a single stream. -Furthermore, the sequenced files will take less disc space since the -counts for identical $n$-gram in different files will have been -merged. - -\centrefig{WordLM}{65}{The main stages in building an $n$-gram language -model} - -The set of (possibly sequenced) gram files and their associated word -map provide the raw data for building an $n$-gram LM. The next stage -in the construction process is to define the vocabulary of the LM and -convert all $n$-grams which contain OOV (out of vocabulary) words so -that each OOV word is replaced by a single symbol representing the -\textit{unknown} class. For example, the $n$-gram \texttt{AN OLEAGINOUS -AFFAIR} would be converted to \texttt{AN !!UNK AFFAIR} if the word -``oleaginous'' was not in the selected vocabulary and \texttt{!!UNK} -is the name chosen for the unknown class. - -This assignment of OOV words to a class of unknown words is a specific -example of a more general mechanism. In \HTK, any word can be -associated with a named class by listing it in a \textit{class map} -file. Classes can be defined either by listing the class members or -by listing all non-members. For defining the unknown class the latter -is used, so a plain text list of all in-vocabulary words is supplied -and all other words are mapped to the OOV class. The tool -\htool{LGCopy} can use a class map to make a copy of a set of gram -files in which all words listed in the class map are replaced by the -class name, and also output a word map which contains only the -required vocabulary words and their ids plus any classes and their -ids. - -As shown in Figure~\ref{f:WordLM}, the LM itself is built using the -tool \htool{LBuild}. This takes as input the gram files and the word -map and generates the required LM. The language model -can be built in steps (first a unigram, then a bigram, then a trigram, -etc.) or in a single pass if required. - - -\mysect{Class-Based Language Models}{cllmoview} - -\centrefig{ClassLM}{110}{The main stages in building a -class-based language model} - -As described in section \ref{s:HLMclassngram}, a class-base language -model consists of two separate components. The first is an $n$-gram -which models the sequence of classes (i.e.\ $p(c_i, | c_{i-n+1}, -\ldots, c_{n-1})$) and the second is a class map with associated word -counts or probabilities within classes allowing the word-given-class -probability bigram\ $p(w_k|c_k)$ to be evaluated. These files may -then either be linked into a single composite file or a third `linking' -file is create to point to these two separate files -- both of these -operations can be performed using the \htool{LLink} tool. - -Given a set of word classes defined in a class map file and a set of -word level gram files, building a class-based model with the \HTK\ -tools requires only a few simple modifications to the basic procedure -described above for building a word $n$-gram: -\begin{itemize} -\item \htool{Cluster} is used with the word map and word level gram - files derived from the source text to construct a class map which - defines which class each word is in. The same tool is then used to - generate the word-classes component file referred to above. - Note that \htool{Cluster} can also be used to generate this file - from an existing or manually-generated class map. - -\item \htool{LGCopy} is used with the class map to convert the word level - gram files derived from the source text into class gram files. - \htool{LBuild} can then be used directly with the class level gram - files to build the class sequence $n$-gram language model - referred to above. - -\item \htool{LLink} is then run to create either a language model - script pointing to the two separate language model files or a single - composite file. The resulting language model - is then ready for use. -\end{itemize} -The main steps of this procedure are illustrated in -Figure~\ref{f:ClassLM}. - -The next chapter provides a more thorough introduction to the tools as -well as a tutorial to work through explaining how to use them in -practice. diff --git a/HTKBook/hlmtutorial.tex b/HTKBook/hlmtutorial.tex deleted file mode 100644 index 0b4d70e..0000000 --- a/HTKBook/hlmtutorial.tex +++ /dev/null @@ -1,979 +0,0 @@ -% -% !HVER!hlmtutorial [SJY 05/04/97] -% -% Updated (and about 80% rewritten) - Gareth Moore 16/01/02 -% - -\mychap{A Tutorial Example of Building Language Models}{hlmtutor} - -This chapter describes the construction and evaluation of language -models using the \HTK\ language modelling tools. The models will be -built from scratch with the exception of the text conditioning stage -necessary to transform the raw text into its most common and useful -representation (e.g. number conversions, abbreviation expansion and -punctuation filtering). All resources used in this tutorial can be -found in the \texttt{LMTutorial} directory of the \HTK\ distribution. - -The text data used to build and test the language models are the -copyright-free texts of 50 Sherlock Holmes stories by Arthur Conan Doyle. -The texts have been partitioned into training and test material (49 -stories for training and 1 story for testing) and reside in the -\texttt{train} and \texttt{test} subdirectories respectively. - -\mysect{Database preparation}{HLMdatabaseprep} - -The first stage of any language model development project is data -preparation. As mentioned in the introduction, the text data used in -these example has already been conditioned. If you examine each file -you will observe that they contains a sequence of tagged sentences. -When training a language model you need to include sentence start and -end labelling because the tools cannot otherwise infer this. Although -there is only one sentence per line in these files, this is not a -restriction of the \HTK\ tools and is purely for clarity -- you can -have the entire input text on a single line if you want. Notice that -the default sentence start and sentence end tokens of {\tt } and -{\tt } are used -- if you were to use different tokens for these -you would need to pass suitable configuration parameters to the \HTK\ -tools.\footnote{{\tt STARTWORD} and {\tt ENDWORD} to be precise.} An -extremely simple text conditioning tool is supplied in the form of -\htool{LCond.pl} in the {\tt LMTutorial/extras} folder -- this only -segments text into sentences on the basis of punctuation, as well as -converting to uppercase and stripping most punctuation symbols, and is -not intended for serious use. In particular it does not convert -numbers into words and will not expand abbreviations. Exactly what -conditioning you perform on your source text is dependent on the task -you are building a model for. - -Once your text has been conditioned, the next step is to use the tool -\htool{LGPrep} to scan the input text and produce a -preliminary set of sorted $n$-gram files. In this tutorial we will -store all $n$-gram files created by \htool{LGPrep} will be stored in -the \texttt{holmes.0} directory, so create this directory now. In a -Unix-type system, for example, the standard command is -\begin{verbatim} -$ mkdir holmes.0 -\end{verbatim} % $ - -The \HTK\ tools maintain a cumulative word map to which every new -word is added and assigned a unique id. This means that you can add -future $n$-gram files without having to rebuild existing ones so long -as you start from the same word map, thus ensuring that each id -remains unique. The side effect of this ability is that -\htool{LGPrep} always expects to be given a word map, so to prepare -the first $n$-gram file (also referred to elsewhere as a `gram' file) -you must pass an empty word map file. - -You can prepare an initial, empty word map using the \htool{LNewMap} -tool. It needs to be passed the name to be used internally in the word -map as well as a file name to write it to; optionally you may also -change the default character escaping mode and request additional -fields. Type the following: -\begin{verbatim} -$ LNewMap -f WFC Holmes empty.wmap -\end{verbatim} % $ -and you'll see that an initial, empty word map file has been created -for you in the file \texttt{empty.wmap}. Examine the file and you -will see that it contains just a header and no words. It looks like -this: -\begin{verbatim} -Name = Holmes -SeqNo = 0 -Entries = 0 -EscMode = RAW -Fields = ID,WFC -\Words\ -\end{verbatim} -Pay particular attention to the {\tt SeqNo} field since this -represents the sequence number of the word map. Each time you add -words to the word map the sequence number will increase -- the tools -will compare the sequence number in the word map with that in any data -files they are passed, and if the word map is too old to contain all -the necessary words then it will be rejected. The {\tt Name} field -must also match, although initially you can set this to whatever you -like.\footnote{The exception to this is that differing text may follow -a {\tt \%} character.} The other fields specify that no \HTK\ -character escaping will be used, and that we wish to store the -(compulsory) word ID field as well as an optional count field, which -will reveal how many times each word has been encountered to date. -The {\tt ID} field is always present which is why you did not need to -pass it with the {\tt -f} option to \htool{LNewMap}. - -To clarify, if we were to use the Sherlock Holmes texts together with -other previously generated $n$-gram databases then the most recent -word map available must be used instead of the prototype map file -above. This would ensure that the map saved by \htool{LGPrep} once the -new texts have been processed would be suitable for decoding all -available $n$-gram files. - -We'll now process the text data with the following command: -\begin{verbatim} -$ LGPrep -T 1 -a 100000 -b 200000 -d holmes.0 -n 4 - -s "Sherlock Holmes" empty.wmap train/*.txt -\end{verbatim} % $ - -The \texttt{-a} option sets the maximum number of new words that can -be encountered in the texts to 100,000 (in fact, this is the default). -If, during processing, this limit is exceeded then \htool{LGPrep} will -terminate with an error and the operation will have to be repeated by -setting this limit to a larger value. - -The \texttt{-b} option sets the internal $n$-gram buffer size to -200,000 $n$-gram entries. This setting has a direct effect on the -overall process size. The memory requirement for the internal buffer can -be calculated according to $mem_{bytes} = (n+1)*4*b$ where $n$ is the -$n$-gram size (set with the \texttt{-n} option) and $b$ is the buffer -size. In the above example, the $n$-gram size is set to four which -will enable us to generate bigram, trigram and four-gram language -models. The smaller the buffer then in general the more separate -files will be written out -- each time the buffer fills a new $n$-gram -file is generated in the output directory, specified by the {\tt -d} -option. - -The {\tt -T 1} option switches on tracing at the lowest level. In -general you should probably aim to run each tool with at least {\tt -T -1} since this will give you better feedback about the progress of the -tool. Other useful options to pass are {\tt -D} to check the state of -configuration variables -- very useful to check you have things set up -correctly -- and {\tt -A} so that if you save the tool output you will -be able to see what options it was run with. It's good practice to -always pass {\tt -T 1 -A -D} to every \HTK\ tool in fact. You should -also note that all \HTK\ tools require the option switches to be -passed {\it before} the compulsory tool parameters -- trying to run -{\tt LGPrep train/*.txt -T 1} will result in an error, for example. - -Once the operation has completed, the \texttt{holmes.0} directory should -contain the following files: -\begin{verbatim} -gram.0 gram.1 gram.2 wmap -\end{verbatim} -The saved word map file \texttt{wmap} has grown to include all newly -encountered words and the identifiers that the tool has assigned them, -and at the same time the map sequence count has been incremented by -one. -\begin{verbatim} -Name = Holmes -SeqNo = 1 -Entries = 18080 -EscMode = RAW -Fields = ID,WFC -\Words\ - 65536 33669 -IT 65537 8106 -WAS 65538 7595 -... -\end{verbatim} -Remember that map sequence count together with the map's name field -are used to verify the compatibility between the map and any $n$-gram -files. The contents of the $n$-gram files can be inspected using the -\htool{LGList} tool: (if not using a Unix type system you may need to -omit the {\tt | more} and find some other way of viewing the output in -a more manageable format; try {\tt > file.txt} and viewing the -resulting file if that works) -\begin{verbatim} -$ LGList holmes.0/wmap holmes.0/gram.2 | more - -4-Gram File holmes.0/gram.2[165674 entries]: - Text Source: Sherlock Holmes -' IT IS NO : 1 -'CAUSE I SAVED HER : 1 -'EM WHO : 1 - ' IT : 1 - A BAND : 1 - A BEAUTIFUL : 1 - A BIG : 1 - A BIT : 1 - A BROKEN : 1 - A BROWN : 2 - A BUZZ : 1 - A CAMP : 1 -... -\end{verbatim} % $ -If you examine the other $n$-gram files you will notice that whilst -the contents of each $n$-gram file are sorted, the files themselves -are not sequenced -- that is, one file does not carry on where the -previous one left off; each is an independent set of $n$-grams. To -derive a sequenced set of $n$-gram files, where no grams are repeated -between files, the tool \htool{LGCopy} must be used on these existing -gram files. For the purposes of this tutorial the new set of -files will be stored in the \texttt{holmes.1} directory, so create -this and then run {\tt LGCopy}: -\begin{verbatim} -$ mkdir holmes.1 -$ LGCopy -T 1 -b 200000 -d holmes.1 holmes.0/wmap holmes.0/gram.* -Input file holmes.0/gram.0 added, weight=1.0000 -Input file holmes.0/gram.1 added, weight=1.0000 -Input file holmes.0/gram.2 added, weight=1.0000 -Copying 3 input files to output files with 200000 entries - saving 200000 ngrams to file holmes.1/data.0 - saving 200000 ngrams to file holmes.1/data.1 - saving 89516 ngrams to file holmes.1/data.2 -489516 out of 489516 ngrams stored in 3 files -\end{verbatim} -The resulting $n$-gram files, together with the word map, can now be -used to generate language models for a specific vocabulary list. Note -that it is not necessary to sequence the files in this way before -building a language model, but if you have too many separate -unsequenced $n$-gram files then you may encounter performance problems -or reach the limit of your filing system to maintain open files -- in -practice, therefore, it is a good idea to always sequence them. - -\mysect{Mapping OOV words}{HLMmapoov} -An important step in building a language model is to decide on the -system's vocabulary. For the purpose of this tutorial, we have -supplied a word list in the file \texttt{5k.wlist} which contains the -5000 most common words found in the text. We'll build our language -models and all intermediate files in the \texttt{lm\_5k} directory, -so create it with a suitable command: -\begin{verbatim} -$ mkdir lm_5k -\end{verbatim} % $ - -Once the system's vocabulary has been specified, the tool -\htool{LGCopy} should be used to filter out all out-of-vocabulary -(OOV) words. To achieve this, the 5K word list is used as a special -case of a class map which maps all OOVs into members of the -``unknown'' word class. The unknown class symbol defaults to -\texttt{!!UNK}, although this can be changed via the configuration -parameter \texttt{UNKNOWNNAME}. Run \htool{LGCopy} again: - -\begin{verbatim} -$ LGCopy -T 1 -o -m lm_5k/5k.wmap -b 200000 -d lm_5k -w 5k.wlist - holmes.0/wmap holmes.1/data.* -Input file holmes.1/data.0 added, weight=1.0000 -Input file holmes.1/data.1 added, weight=1.0000 -Input file holmes.1/data.2 added, weight=1.0000 -Copying 3 input files to output files with 200000 entries -Class map = 5k.wlist [Class mappings only] - saving 75400 ngrams to file lm_5k/data.0 -92918 out of 489516 ngrams stored in 1 files -\end{verbatim} % $ - -Because the {\tt -o} option was passed, all $n$-grams containing OOVs -will be extracted from the input files and the OOV words mapped to the -unknown symbol with the results stored in the files -\texttt{lm\_5k/data.*}. A new word map containing the new class -symbols (\texttt{!!UNK} in this case) and only words in the vocabulary -will be saved to \texttt{lm\_5k/5k.wmap}. Note how the newly produced -OOV $n$-gram files can no longer be decoded by the original word map -\texttt{holmes.0/wmap}: -\begin{verbatim} -$ LGList holmes.0/wmap lm_5k/data.0 | - ERROR [+15330] OpenNGramFile: Gram file map Holmes%%5k.wlist - inconsistent with Holmes - FATAL ERROR - Terminating program LGList -\end{verbatim} % $ -The error is due to the mismatch between the original map's name -(``Holmes'') and the name of the map stored in the header of the -$n$-gram file we attempted to list (``Holmes\%\%5k.wlist''). The latter -name indicates that the word map was derived from the original map -\texttt{Holmes} by resolving class membership using the class map -\texttt{5k.wlist}. As a further consistency indicator, the original -map has a sequence count of 1 whilst the class-resolved map has a -sequence count of 2. - -The correct command for listing the contents of the OOV $n$-gram -file is: -\begin{verbatim} -$ LGList lm_5k/5k.wmap lm_5k/data.0 | more - -4-Gram File lm_5k/data.0[75400 entries]: - Text Source: LGCopy -!!UNK !!UNK !!UNK !!UNK : 50 -!!UNK !!UNK !!UNK : 20 -!!UNK !!UNK !!UNK A : 2 -!!UNK !!UNK !!UNK ACCOUNTS : 1 -!!UNK !!UNK !!UNK ACROSS : 1 -!!UNK !!UNK !!UNK AND : 17 -... -\end{verbatim} % $ - -At the same time the class resolved map \texttt{lm\_5k/5k.wmap} can -be used to list the contents of the $n$-gram, database files -- the -newer map can view the older grams, but not vice-versa. -\begin{verbatim} -$ LGList lm_5k/5k.wmap holmes.1/data.2 | more - -4-Gram File holmes.1/data.2[89516 entries]: - Text Source: LGCopy -THE SUSSEX MANOR HOUSE : 1 -THE SWARTHY GIANT GLARED : 1 -THE SWEEP OF HIS : 1 -THE SWEET FACE OF : 1 -THE SWEET PROMISE OF : 1 -THE SWINGING DOOR OF : 1 -... -\end{verbatim} % $ -However, any $n$-grams containing OOV words will be discarded since -these are no longer in the word map. - -Note that the required word map \texttt{lm\_5k/5k.wmap} can also be -produced also using the \htool{LSubset} tool: -\begin{verbatim} -$ LSubset -T 1 holmes.0/wmap 5k.wlist lm_5k/5k.wmap -\end{verbatim} % $ - -Note also that had the {\tt -o} option not been passed to -\htool{LGCopy} then the $n$-gram files built in {\tt lm\_5k} would have -contained not only those with OOV entries but also all the remaining -purely in-vocabulary words, the union of those shown by the two -preceding {\tt LGList} commands, in fact. The method that you choose -to use depends on what experiments you are performing -- the \HTK\ -tools allow you a degree of flexibility. - - -\mysect{Language model generation}{HLMlanmodgen} -Language models are built using the \htool{LBuild} command. If you're -constructing a class-based model you'll also need the \htool{Cluster} -tool, but for now we'll construct a standard word $n$-gram model. - -You'll probably want to accept the default of using Turing-Good -discounting for your $n$-gram model, so the first step in generating a -language model is to produce a frequency of frequency (FoF) table for -the chosen vocabulary list. This is performed automatically by -\htool{LBuild}, but optionally you can generate this yourself using -the \htool{LFoF} tool and pass the result into \htool{LBuild}. This -has only a negligible effect on computation time, but the result is -interesting in itself because it provides useful information for -setting cut-offs. Cut-offs are where you choose to discard low -frequency events from the training text -- you might wish to do this -to decrease model size, or because you judge these infrequent events -to be unimportant. - -In this example, you can generate a suitable table from the language -model databases and the newly generated OOV $n$-gram files: -\begin{verbatim} -$ LFoF -T 1 -n 4 -f 32 lm_5k/5k.wmap lm_5k/5k.fof - holmes.1/data.* lm_5k/data.* -Input file holmes.1/data.0 added, weight=1.0000 -Input file holmes.1/data.1 added, weight=1.0000 -Input file holmes.1/data.2 added, weight=1.0000 -Input file lm_5k/data.0 added, weight=1.0000 -Calculating FoF table -\end{verbatim} % $ - -After executing the command, the FoF table will be stored in -\texttt{lm\_5k/5k.fof}. It shows the number of times a word is found -with a given frequency -- if you recall the definition of Turing-Good -discounting you will see that this needs to be known. See chapter -\ref{c:hlmfiles} for further details of the FoF file format. - -You can also pass a configuration parameter to \htool{LFoF} to make it -output a related table showing the number of $n$-grams that will be -left if different cut-off rates are applied. Rerun \htool{LFoF} and -also pass it the existing configuration file {\tt config}: -\begin{verbatim} -$ LFoF -C config -T 1 -n 4 -f 32 lm_5k/5k.wmap lm_5k/5k.fof - holmes.1/data.* lm_5k/data.* -Input file holmes.1/data.0 added, weight=1.0000 -Input file holmes.1/data.1 added, weight=1.0000 -Input file holmes.1/data.2 added, weight=1.0000 -Input file lm_5k/data.0 added, weight=1.0000 -Calculating FoF table - -cutoff 1-g 2-g 3-g 4-g -0 5001 128252 330433 471998 -1 5001 49014 60314 40602 -2 5001 30082 28646 15492 -3 5001 21614 17945 8801 -... -\end{verbatim} % $ -The information can be interpreted as follows. A bigram cut-off value -of 1 will leave 49014 bigrams in the model, whilst a trigram cut-off -of 3 will result in 17945 trigrams in the model. The configuration -file \texttt{config} forces the tool to print out this extra -information by setting \texttt{LPCALC: TRACE=3}. This is the trace -level for one of the library modules, and is separate from the trace -level for the tool itself (in this case we are passing {\tt -T 1} to -set trace level 1. The trace field consists of a series of bits, so -setting trace 3 actually turns on two of those trace flags. - -We'll now proceed to build our actual language model. In this the -model will be generated in stages by executing the \htool{LBuild} -separately for each of the unigram, bigram and trigram sections of the -model (we won't build a 4-gram model in this example, although the -$n$-gram files we've build allow us to do so at a later date if we so -wish), but you can build the final trigram in one go if you like. The -following command will generate the unigram model: -\begin{verbatim} -$ LBuild -T 1 -n 1 lm_5k/5k.wmap lm_5k/ug - holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ -Look in the {\tt lm\_5k} directory and you'll discover the model {\tt -ug} which can now be used on its own as a complete ARPA format -unigram language model. - -We'll now build a bigram model with a cut-off of 1 and to save -regenerating the unigram component we'll include our existing unigram model: -\begin{verbatim} -$ LBuild -C config -T 1 -t lm_5k/5k.fof -c 2 1 -n 2 - -l lm_5k/ug lm_5k/5k.wmap lm_5k/bg1 - holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ -Passing the {\tt config} file again means that we get given some -discount coefficient information. Try rerunning the tool without the -{\tt -C config} to see the difference. We've also passed in the -existing {\tt lm\_5k/5k.fof} file although this is not necessary -- -try omitting this and you'll find that the resulting file is -identical. What will be different, however, is that the tool will -print out the cut-off table seen when running \htool{LFoF} with the -{\tt LPCALC: TRACE = 3} parameter set; if you don't want to see this -then don't set {\tt LPCALC: TRACE = 3} in the configuration file (try -running the above command without {\tt -t} and {\tt -C}). - -Note that this bigram model is created in \HTK\'s own binary version -of the ARPA format language model, with just the unigram component in -text format by default. This makes the model more compact and faster -to load. If you want to override this then simply add the {\tt -f -TEXT} parameter to the command. - -Finally, the trigram model can be generated using the command: -\begin{verbatim} -$ LBuild -T 1 -c 3 1 -n 3 -l lm_5k/bg1 - lm_5k/5k.wmap lm_5k/tg1_1 - holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ - -Alternatively instead of the three stages above, you can also build -the final trigram in one step: -\begin{verbatim} -$ LBuild -T 1 -c 2 1 -c 3 1 -n 3 lm_5k/5k.wmap - lm_5k/tg2-1_1 holmes.1/data.* lm_5k/data.* -\end{verbatim} % $ -If you compare the two trigram models you'll see that they're the same -size -- there will probably be a few insignificant changes in -probability due to more cumulative rounding errors incorporated in the -three stage procedure. - - -\mysect{Testing the LM perplexity}{HLMtestingpp} -\index{Perplexity} -Once the language models have been generated, their ``goodness'' can -be evaluated by computing the perplexity of previously unseen text -data. This won't necessarily tell you how well the language model -will perform in a speech recognition task because it takes no account -of acoustic similarities or the vagaries of any particular system, but -it will reveal how well a given piece of test text is modelled by your -language model. The directory \texttt{test} contains a single story -which was withheld from the training text for testing purposes -- if -it had been included in the training text then it wouldn't be fair to -test the perplexity on it since the model would have already `seen' it. - -Perplexity evaluation is carried out using \htool{LPlex}. The tool -accepts input text in one of two forms -- either as an HTK style MLF -(this is the default mode) or as a simple text stream. The text stream -mode, specified with the \texttt{-t} option, will be used to evaluate -the test material in this example. - -\begin{verbatim} -$ LPlex -n 2 -n 3 -t lm_5k/tg1_1 test/red-headed_league.txt -LPlex test #0: 2-gram -perplexity 131.8723, var 7.8744, utterances 556, words predicted 8588 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg1_1: -Lang model requested exact backed n/a mean stdev - bigram 8588 78.9% 20.6% 0.4% -4.88 2.81 - trigram 0 0.0% 0.0% 0.0% 0.00 0.00 -LPlex test #1: 3-gram -perplexity 113.2480, var 8.9254, utterances 556, words predicted 8127 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg1_1: -Lang model requested exact backed n/a mean stdev - bigram 5357 68.2% 31.1% 0.6% -5.66 2.93 - trigram 8127 34.1% 30.2% 35.7% -4.73 2.99 -\end{verbatim} % $ -The multiple \texttt{-n} options instruct \htool{LPlex} to perform two -separate tests on the data. The first test (\texttt{-n 2}) will use -only the bigram part of the model (and unigram when backing off), -whilst the second test (\texttt{-n 3}) will use the full trigram -model. For each test, the first part of the result gives general -information such as the number of utterances and tokens encountered, -words predicted and OOV statistics. The second part of the results -gives explicit access statistics for the back off model. For the -trigram model test, the total number of words predicted is 8127. From -this number, 34.1\% were found as explicit trigrams in the model, 30.2\% -were computed by backing off to the respective bigrams and 35.7\% were -simply computed as bigrams by shortening the word context. - -These perplexity tests do not include the prediction of words from -context which includes OOVs. To include such $n$-grams in the -calculation the \texttt{-u} option should be used. -\begin{verbatim} -$ LPlex -u -n 3 -t lm_5k/tg1_1 test/red-headed_league.txt -LPlex test #0: 3-gram -perplexity 117.4177, var 8.9075, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg1_1: -Lang model requested exact backed n/a mean stdev - bigram 5911 68.5% 30.9% 0.6% -5.75 2.94 - trigram 9187 35.7% 31.2% 33.2% -4.77 2.98 -\end{verbatim} % $ -The number of tokens predicted has now risen to 9187. For analysing -OOV rates the tool provides the \texttt{-o} option which will print a -list of unique OOVs encountered together with their occurrence counts. -Further trace output is available with the -\texttt{-T} option. - - -\mysect{Generating and using count-based models}{HLMgeneratingcount} -\index{Count-based language models} -The language models generated in the previous section are static in -terms of their size and vocabulary. For example, in order to evaluate -a trigram model with cut-offs 2 (bigram) and 2 (trigram) the user -would be required to rebuild the bigram and trigram stages of the -model. When large amounts of text data are used this can be a very -time consuming operation. - -The HLM toolkit provides the capabilities to generate and manipulate a -more generic type of model, called a count-based models, which can be -dynamically adjusted in terms of its size and vocabulary. Count-based -models are produced by specifying the \texttt{-x} option to -\htool{LBuild}. The user may set cut-off parameters which control the -initial size of the model, but if so then once the model is generated -only higher cut-off values may be specified in the subsequent -operations. The following command demonstrates how to generate a -count-based model: -\begin{verbatim} -$ LBuild -C config -T 1 -t lm_5k/5k.fof -c 2 1 -c 3 1 - -x -n 3 lm_5k/5k.wmap lm_5k/tg1_1c - holmes.1/data.* lm_5k/data.0 -\end{verbatim} % $ -Note that in the above example the full trigram model is generated -by a single invocation of the tool and no intermediate files are -kept (i.e. the unigram and bigram models files). - -The generated model can now be used in perplexity tests and different -model sizes can be obtained by specifying new cut-off values via the -\texttt{-c} option of \htool{LPlex}. Thus, using a trigram model with -cut-offs (2,2) gives -\begin{verbatim} -$ LPlex -c 2 2 -c 3 2 -T 1 -u -n 3 -t lm_5k/tg1_1c - test/red-headed_league.txt -... -LPlex test #0: 3-gram -Processing text stream: test/red-headed_league.txt -perplexity 126.2665, var 9.0519, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) -... -\end{verbatim} % $ -and a model with cut-offs (3,3) gives -\begin{verbatim} -$ LPlex -c 2 3 -c 3 3 -T 1 -u -n 3 -t lm_5k/tg1_1c - test/red-headed_league.txt -... -Processing text stream: test/red-headed_league.txt -perplexity 133.4451, var 9.0880, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) -... -\end{verbatim} % $ - -However, the count model \texttt{tg1\_1c} cannot be used directly in -recognition tools such as \htool{HVite} or \htool{HLvx}. An ARPA -style model of the required size suitable for recognition can be -derived using the \htool{HLMCopy} tool: -\begin{verbatim} -$ HLMCopy -T 1 lm_5k/tg1_1c lm_5k/rtg1_1 -\end{verbatim} % $ -This will be the same as the original trigram model built above, with -the exception of some insignificant rounding differences. - - -\mysect{Model interpolation}{HLMmodelinterp} -\index{Interpolating language models} -The \HTK\ language modelling tools also provide the capabilities to -produce and evaluate interpolated language models. Interpolated -models are generated by combining a number of existing models in a -specified ratio to produce a new model using the tool \htool{LMerge}. -Furthermore, \htool{LPlex} can also compute perplexities using -linearly interpolated $n$-gram probabilities from a number of source -models. The use of model interpolation will be demonstrated by -combining the previously generated Sherlock Holmes model with an -existing 60,000 word business news domain trigram model -(\texttt{60bn\_tg.lm}). The perplexity measure of the unseen Sherlock -Holmes text using the business news model is 297 with an OOV rate of -1.5\%. ({\tt LPlex -t -u 60kbn\_tg.lm test/*}). In the following -example, the perplexity of the test date will be calculated by -combining the two models in the ratio of 0.6 \texttt{60kbn\_tg.lm} and -0.4 \texttt{tg1\_1c}: -\begin{verbatim} -$ LPlex -T 1 -u -n 3 -t -i 0.6 ./60kbn_tg.lm - lm_5k/tg1_1c test/red-headed_league.txt -Loading language model from lm_5k/tg1_1c -Loading language model from ./60kbn_tg.lm -Using language model(s): - 3-gram lm_5k/tg1_1c, weight 0.40 - 3-gram ./60kbn_tg.lm, weight 0.60 -Found 60275 unique words in 2 model(s) -LPlex test #0: 3-gram -Processing text stream: test/red-headed_league.txt -perplexity 188.0937, var 11.2408, utterances 556, words predicted 9721 -num tokens 10408, OOV 131, OOV rate 1.33% (excl. ) - -Access statistics for lm_5k/tg1_1c: -Lang model requested exact backed n/a mean stdev - bigram 5479 68.0% 31.3% 0.6% -5.69 2.93 - trigram 8329 34.2% 30.6% 35.1% -4.75 2.99 - -Access statistics for ./60kbn_tg.lm: -Lang model requested exact backed n/a mean stdev - bigram 5034 83.0% 17.0% 0.1% -7.14 3.57 - trigram 9683 48.0% 26.9% 25.1% -5.69 3.53 -\end{verbatim} % $ - -A single combined model can be generated using \htool{LMerge}: -\begin{verbatim} -$ LMerge -T 1 -i 0.6 ./60kbn_tg.lm 5k_unk.wlist - lm_5k/rtg1_1 5k_merged.lm -\end{verbatim} % $ -Note that \htool{LMerge} cannot merge count-based models, hence the -use of \texttt{lm\_5k/rtg1\_1} instead of its count-based equivalent -\texttt{lm\_5k/tg1\_1c}. Furthermore, the word list supplied to the -tool also includes the OOV symbol (\texttt{!!UNK}) in order to -preserve OOV $n$-grams in the output model which in turn allows the -use of the \texttt{-u} option in \htool{LPlex}. - -Note that the perplexity you will obtain with this combined model is -much lower than that when interpolating the two together because the -word list has been reduced from the union of the 60K and 5K ones down -to a single 5K list. You can build a 5K version of the 60K model -using \htool{HLMCopy} and the {\tt -w} option, but first you need to -construct a suitable word list -- if you pass it the {\tt -5k\_unk.wlist} one it will complain about the words in it that weren't -found in the language model. In the {\tt extras} subdirectory you'll -find a Perl script to rip the word list from the {\tt 60kbn\_tg.lm} -model, {\tt getwordlist.pl}, and the result of running it in {\tt -60k.wlist} (the script will work with any ARPA type language model). -The intersection of the 60K and 5K word lists is what is required, so -if you then run the {\tt extras/intersection.pl} Perl script, amended -to use suitable filenames, you'll get the result in {\tt -60k-5k-int.wlist}. Then \htool{HLMCopy} can be used to produce a 5K -vocabulary version of the 60K model: -\begin{verbatim} -$ HLMCopy -T 1 -w 60k-5k-int.wlist 60kbn_tg.lm 5kbn_tg.lm -\end{verbatim} % $ -This can then be linearly interpolated with the previous 5K model to -compare the perplexity result with that obtained from the -\htool{LMerge}-generated model. If you try this you will find that -the perplexities are similar, but not exactly the same (a perplexity -of 112 with the merged model and 114 with the two models linearly -interpolated, in fact) -- this is because using \htool{LMerge} to -combine two models and then using the result is not precisely the same -as linearly interpolating two separate models; it is similar, however. - -It is also possible to add to an existing language model using the -\htool{LAdapt} tool, which will construct a new model using supplied -text and then merge it with the existing one in exactly the same way -as \htool{LMerge}. Effectively this tool allows you to short-cut the -process by performing many operations with a single command -- see the -documentation in section \ref{s:LAdapt} for full details. - - -\mysect{Class-based models}{HLMclassModels} -\index{Class language models} -A class-based $n$-gram model is similar to a word-based $n$-gram in -that both store probabilities $n$-tuples of tokens -- except in the -class model case these tokens consist of word {\it classes} instead of -words (although word models typically include at least one class for -the unknown word). Thus building a class model involves constructing -class $n$-grams. A second component of the model calculates the -probability of a word given each class. The HTK tools only support -deterministic class maps, so each word can only be in one class. -Class language models use a separate file to store each of the two -components -- the word-given-class probabilities and the class -$n$-grams -- as well as a third file which points to the two component -files. Alternatively, the two components can be combined together -into a standalone separate file. In this section we'll see how to -build these files using the supplied tools. - -Before a class model can be built it is necessary to construct a class -map which defines which words are in each class. The supplied -\htool{Cluster} tool can derive a class map based on the bigram word -statistics found in some text, although if you are constructing a -large number of classes it can be rather slow (execution time measured -in hours, typically). In many systems class models are combined with -word models to give further gains, so we'll build a class model based -on the Holmes training text and then interpolate it with our existing -word model to see if we can get a better overall model. - -Constructing a class map requires a decision to be made as to how many -separate classes are required. A sensible number depends on what you -are building the model for, and whether you intend it purely to -interpolate with a word model. In the latter case, for example, a -sensible number of classes is often around the 1000 mark when using a -64K word vocabulary. We only have 5000 words in our vocabulary so -we'll choose to construct 150 classes in this case. - -Create a directory called {\tt holmes.2} and run \htool{Cluster} with -\begin{verbatim} -$ Cluster -T 1 -c 150 -i 1 -k -o holmes.2/class lm_5k/5k.wmap - holmes.1/data.* lm_5k/data.0 -Preparing input gram set -Input gram file holmes.1/data.0 added (weight=1.000000) -Input gram file lm_5k/data.0 added (weight=1.000000) -Beginning iteration 1 -Iteration complete -Cluster completed successfully -\end{verbatim} % $ -The word map and gram files are passed as before -- any OOV mapping -should be made before building the class map. Passing the {\tt -k} -option told \htool{Cluster} to keep the unknown word token {\tt !!UNK} -in its own singleton class, whilst the {\tt -c 150} options specifies -that we wish to create 150 classes. The {\tt -i 1} performs only one -iteration of the clustering -- performing further iterations is likely -to give further small improvements in performance, but we won't wait -for this here. Whilst \htool{Cluster} is running you can look at the -end of the {\tt holmes.2/class.1.log} to see how far it has got. On a -Unix-like system you could use a command like {\tt tail -holmes.2/class.1.log}, or if you wanted to monitor progress then {\tt -tail -f holmes.2/class.1.log} would do the trick. The {\tt 1} refers -to the iteration, whilst the results are written to this filename -because of the {\tt -o holmes.2/class} option which sets the prefix -for all output files. - -In the {\tt holmes.2} directory you will also see the files {\tt -class.recovery} and {\tt class.recovery.cm} -- these are a recovery -status file and its associated class map which are exported at regular -intervals because the \htool{Cluster} tool can take so long to run. -In this way you can kill the tool before it has finished and resume -execution at a later date by using the {\tt -x} option; in this case -you would use {\tt -x holmes.2/class.recovery} for example (making -sure you pass the same word map and gram files -- the tool does -{\it not} currently check that you pass it the same files when restarting). - -Once the tool finishes running you should see the file {\tt -holmes.2/class.1.cm} which is the resulting class map. It is in plain -text format so feel free to examine it. Note, for example, how {\tt -CLASS23} consists almost totally of verb forms ending in {\tt -ED}, -whilst {\tt CLASS41} lists various general words for a person or -object. Had you created more classes then you would be likely to see -more distinctive classes. We can now use this file to build the class -$n$-gram component of our language model. -\begin{verbatim} -$ LGCopy -T 1 -d holmes.2 -m holmes.2/cmap -w holmes.2/class.1.cm - lm_5k/5k.wmap holmes.1/data.* lm_5k/data.0 -Input file holmes.1/data.0 added, weight=1.0000 -Input file lm_5k/data.0 added, weight=1.0000 -Copying 2 input files to output files with 2000000 entries -Class map = holmes.2/class.1.cm - saving 162397 ngrams to file holmes.2/data.0 -330433 out of 330433 ngrams stored in 1 files -\end{verbatim} % $ - -The {\tt -w} option specifies an input class map which is applied when -copying the gram files, so we now have a class gram file in {\tt -holmes.2/data.0}. It has an associated word map file {\tt -holmes.2/cmap} -- although this only contains class names it is -technically a word map since it is taken as input wherever a word map -is required by the \HTK\ language modelling tools; recall that word -maps can contain classes as witnessed by {\tt !!UNK} previously. - -You can examine the class $n$-grams in a similar way to previously by -using \htool{LGList} -\begin{verbatim} -$ LGList holmes.2/cmap holmes.2/data.0 | more - -3-Gram File holmes.2/data.0[162397 entries]: - Text Source: LGCopy -CLASS1 CLASS10 CLASS103 : 1 -CLASS1 CLASS10 CLASS11 : 2 -CLASS1 CLASS10 CLASS118 : 1 -CLASS1 CLASS10 CLASS12 : 1 -CLASS1 CLASS10 CLASS126 : 2 -CLASS1 CLASS10 CLASS140 : 2 -CLASS1 CLASS10 CLASS147 : 1 -... -\end{verbatim} % $ - -And similarly the class $n$-gram component of the overall language -model is built using \htool{LBuild} as previously with -\begin{verbatim} -$ LBuild -T 1 -c 2 1 -c 3 1 -n 3 holmes.2/cmap - lm_5k/cl150-tg_1_1.cc holmes.2/data.* -Input file holmes.2/data.0 added, weight=1.0000 -\end{verbatim} % $ - -To build the word-given-class component of the model we must run -\htool{Cluster} again. -\begin{verbatim} -$ Cluster -l holmes.2/class.1.cm -i 0 -q lm_5k/cl150-counts.wc - lm_5k/5k.wmap holmes.1/data.* lm_5k/data.0 -\end{verbatim} % $ - -This is very similar to how we ran \htool{Cluster} earlier, except -that we now want to perform 0 iterations ({\tt -i 0}) and we start by -loading in the existing class map with {\tt -l holmes.2/class.1.cm}. -We don't need to pass {\tt -k} because we aren't doing any further -clustering and we don't need to specify the number of classes since -this is read from the class map along with the class contents. The -{\tt -q lm\_5k/cl150-counts.wc} option tells the tool to write -word-given-class counts to the specified file. Alternatively we could -have specified {\tt -p} instead of {\tt -q} and written probabilities -as opposed to counts. The file is in a plain text format, and either -the {\tt -p} or {\tt -q} version is sufficient for forming the -word-given-class component of a class language model. Note that in -fact we could have simply added either {\tt -p} or {\tt -q} the -first time we ran \htool{Cluster} and generated both the class map and -language model component file in one go. - -Given the two language model components we can now link them together -to make our overall class $n$-gram language model. -\begin{verbatim} -$ LLink lm_5k/cl150-counts.wc lm_5k/cl150-tg_1_1.cc - lm_5k/cl150-tg_1_1 -\end{verbatim} % $ - -The \htool{LLink} tool creates a simple text file pointing to the two -necessary components, auto-detecting whether a count or probabilities -file has been supplied. The resulting file, {\tt lm\_5k/cl150-tg\_1\_1} -is the finished overall class $n$-gram model, which we can now assess -the performance of with \htool{LPlex}. -\begin{verbatim} -$ LPlex -n 3 -t lm_5k/cl150-tg_1_1 test/red-headed_league.txt -LPlex test #0: 3-gram -perplexity 125.9065, var 7.4139, utterances 556, words predicted 8127 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/cl150-tg_1_1: -Lang model requested exact backed n/a mean stdev - bigram 2867 95.4% 4.6% 0.0% -4.61 1.64 - trigram 8127 64.7% 24.1% 11.2% -4.84 2.72 -\end{verbatim} % $ - -The class trigram model performs worse than the word trigram (which -had a perplexity of 117.4), but this is not a surprise since this is -true of almost every reasonably-sized test set -- the class model is -less specific. Interpolating the two often leads to further -improvements, however. We can find out if this will happen in this -case by interpolating the models with \htool{LPlex}. -\begin{verbatim} -$ LPlex -u -n 3 -t -i 0.4 lm_5k/cl150-tg_1_1 lm_5k/tg1_1 - test/red-headed_league.txt -LPlex test #0: 3-gram -perplexity 102.6389, var 7.3924, utterances 556, words predicted 9187 -num tokens 10408, OOV 665, OOV rate 6.75% (excl. ) - -Access statistics for lm_5k/tg2-1_1: -Lang model requested exact backed n/a mean stdev - bigram 5911 68.5% 30.9% 0.6% -5.75 2.94 - trigram 9187 35.7% 31.2% 33.2% -4.77 2.98 - -Access statistics for lm_5k/cl150-tg_1_1: -Lang model requested exact backed n/a mean stdev - bigram 3104 95.5% 4.5% 0.0% -4.67 1.62 - trigram 9187 66.2% 23.9% 9.9% -4.87 2.75 -\end{verbatim} % $ -So a further gain is obtained -- the interpolated model performs -significantly better. Further improvement might be possible by -attempting to optimise the interpolation weight. - -Note that we could also have used \htool{LLink} to build a single -class language model file instead of producing a third file which -points to the two components. We can do this by using the {\tt -s} -single file option. -\begin{verbatim} -$ LLink -s lm_5k/cl150-counts.wc lm_5k/cl150-tg_1_1.cc - lm_5k/cl150-tg_1_1.all -\end{verbatim} % $ -The file {\tt lm\_5k/cl150-tg\_1\_1.all} is now a standalone language -model, identical in performance to {\tt lm\_5k/cl150-tg\_1\_1} created -earlier. - - -\mysect{Problem solving}{HLMproblemSolving} -\index{Problem solving} -Sometimes a tool returns an error message which doesn't seem to make -sense when you check the files you've passed and the switches -you've given. This section provides a few problem-solving hints. - -\mysubsect{File format problems}{HLMfileproblems} -If a file which seems to be in the correct format is giving errors -such as `Bad header' then make sure that you are using the correct -input filter. If the file is gzipped then ensure you are using a -suitable configuration parameter to decompress it on input; similarly -if it isn't compressed then check you're not trying to decompress it. -Also check to see if you have two files, one with and one without a -{\tt .gz} extension -- maybe you're picking up the wrong one and -checking the other file. - -You might be missing a switch or configuration file to tell the tool -which format the file is in. In general none of the \HTK\ language -modelling tools can auto-detect file formats -- unless you tell them -otherwise they will expect the file type they are configured to -default to and will give an error relevant to that type if it does not -match. For example, if you omit to pass {\tt -t} to \htool{LPlex} -then it will treat an input text file as a -\HTK\ label file and you will get a `Too many columns' error if a line -has more than 100 words on it or a ridiculously high perplexity -otherwise. Check the command documentation in chapter -\ref{c:toolref}. - -\mysubsect{Command syntax problems}{HLMsyntaxproblems} -If a tool is giving unexpected syntax errors then check that you have -placed all the option switches {\it before} the compulsory parameters --- the tools will not work if this rule is not followed. You must -also place whitespace between switches and any options they expect. -The ordering of switches is not important, but the order of compulsory -parameters cannot be changed. Check the switch syntax -- passing a -redundant parameter to one will cause problems since it will be -interpreted as the first compulsory parameter. - -All \HTK\ tools assume that a parameter which starts with a digit is a -number of some kind -- you cannot pass filenames which start with a -digit, therefore. This is a limitation of the routines in -\htool{HShell}. - -\mysubsect{Word maps}{HLMwordmapproblems} -If your word map and gram file combination is being rejected then make -sure they match in terms of their sequence number. Although gram -files are mainly stored in a binary format the header is in plain text -and so if you look at the top of the file you can compare it -manually with the word map. Note it is not a good idea to fiddle the -values to match since they are bound to be different for a good -reason! Word maps must have the same or a higher sequence id than a -gram file in order to open that gram file -- the names must match too. - -The tools might not behave as you expect. For example, \htool{LGPrep} -will write its word map to the file {\tt wmap} unless you tell it -otherwise, irrespective of the input filename. It will also place it -in the same directory as the gram files unless you changed its name -from {\tt wmap}(!) -- check you are picking up the correct word map -when building subsequent gram files. - -The word ids start at 65536 in order to allow space for that many -classes below them -- anything lower is assumed to be a class. In -turn the number of classes is limited to 65535. - -\mysubsect{Memory problems}{HLMmemoryproblems} -Should you encounter memory problems then try altering the amount of -space reserved by the tools using the relevant tool switches such as -{\tt -a} and {\tt -b} for {\tt LGPrep} and {\tt LGCopy}. You could -also try turning on memory tracing to see how much memory is used and -for what (use the configuration {\tt TRACE} parameters and the {\tt --T} option as appropriate. Language models can become very large, -however -- hundreds of megabytes in size, for example -- so it is -important to apply cut-offs and/or discounting as appropriate to keep -them to a suitable size for your system. - -\mysubsect{Unexpected perplexities}{HLMperpproblems} -If perplexities are not what you expected, then there are many things -that could have gone wrong -- you may not have constructed a suitable -model -- but also some mistakes you might have made. Check that you -passed all the switches you intended, and check that you have been -consistent in your use of {\tt *RAW*} configuration parameters -- -using escaped characters in the language model without them in your -test text will lead to unexpected results. If you have not escaped -words in your word map then check they're not escaped in any class -map. When using a class model make sure you're passing the correct -input file of the three separate components. - -Check the switches to {\tt LPlex} -- did you set {\tt -u} as you -intended? If you passed a text file did you pass {\tt -t}? Not doing -so will lead either to a format error or to extremely bizarre -perplexities! - -Did you build the length of $n$-gram you meant to? Check the final -language model by looking at the header of it, which is always stored -in plain text format. You can easily see how many $n$-grams there are -for each size of $n$. diff --git a/HTKBook/htkbook-pdf.tex b/HTKBook/htkbook-pdf.tex deleted file mode 100644 index ca50344..0000000 --- a/HTKBook/htkbook-pdf.tex +++ /dev/null @@ -1,207 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-6 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 23/09/95, VV 20/03/97 -% - -% Preamble -\documentclass[a4paper,oneside]{book} - -% This next line is uncommented by the Makefile when building the -% PDF version: -\usepackage[dvipdfm,colorlinks]{hyperref} - -\input{HTK} -\usepackage{makeidx} -\usepackage{amsmath} -\usepackage{amssymb} - -\makeindex - -% Start of Document -\pagestyle{empty} -\begin{document} -\newlength{\saveindent} -\setlength{\saveindent}{\parindent} - -%\initfloatingfigs - -% Show title page -% \setlength{\epsfxsize}{150mm} -% \leavevmode -% \epsfbox{\figDir/cover.eps} - -{ \Large \ \\ - -\vspace{1cm} - -\noindent The HTK Book - -\vspace{1cm} - -\noindent Steve Young \\ -\noindent Gunnar Evermann \\ -\noindent Mark Gales \\ -\noindent Thomas Hain \\ -\noindent Dan Kershaw \\ -\noindent Xunying (Andrew) Liu \\ -\noindent Gareth Moore \\ -\noindent Julian Odell \\ -\noindent Dave Ollason \\ -\noindent Dan Povey \\ -\noindent Valtcho Valtchev \\ -\noindent Phil Woodland \\ - -\vspace{0.5cm} - -\noindent The HTK Book (for HTK Version \version) - -\vspace{1.0cm} - -\noindent \copyright COPYRIGHT 1995-1999 Microsoft Corporation. - -\noindent \copyright COPYRIGHT 2001-2009 Cambridge University Engineering Department. - -\vspace{0.2cm} - -\noindent All Rights Reserved - -\vspace{0,5cm} - -\noindent First published December 1995 -\vspace{0.05cm} - -\noindent Reprinted March 1996 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.1 March 1997 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.2 January 1999 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.0 July 2000 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.1 December 2001 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.2 December 2002 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.3 April 2005 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.4 March 2009 -\vspace{0.05cm} - -} - -% TOC -\newpage -\tableofcontents - -% Actual contents -\newpage -\pagestyle{myheadings} -\pagenumbering{arabic} - -\part{Tutorial Overview} -\include{fundaments} -\include{htkoview} -\include{exampsys} - -\part{HTK in Depth} -\include{openviron} -\include{speechio} -\include{labels} -\include{models} -\include{train} -\include{adapt} -\include{refine} -\include{discmods} -\include{netdict} -\include{decode} - -\part{Language Modelling} -\include{hlmfund} -\include{hlmtutorial} -\include{hlmfiles} - -\part{Reference Section} -\mychap{The HTK Tools}{toolref} -\include{HTKRef/tools} -\include{HTKRef/Cluster} -\include{HTKRef/HBuild} -\include{HTKRef/HCompV} -\include{HTKRef/HCopy} -\include{HTKRef/HDMan} -\include{HTKRef/HDecode} -\include{HTKRef/HERest} -\include{HTKRef/HHEd} -\include{HTKRef/HInit} -\include{HTKRef/HLEd} -\include{HTKRef/HList} -\include{HTKRef/HLMCopy} -\include{HTKRef/HLRescore} -\include{HTKRef/HLStats} -\include{HTKRef/HMMIRest} -\include{HTKRef/HParse} -\include{HTKRef/HQuant} -\include{HTKRef/HRest} -\include{HTKRef/HResults} -\include{HTKRef/HSGen} -\include{HTKRef/HSLab} -\include{HTKRef/HSmooth} -\include{HTKRef/HVite} -\include{HTKRef/LAdapt} -\include{HTKRef/LBuild} -\include{HTKRef/LFoF} -\include{HTKRef/LGCopy} -\include{HTKRef/LGList} -\include{HTKRef/LGPrep} -\include{HTKRef/LLink} -\include{HTKRef/LMerge} -\include{HTKRef/LNewMap} -\include{HTKRef/LNorm} -\include{HTKRef/LPlex} -\include{HTKRef/LSubset} -\include{config} -\include{errors} -\include{htkslf} - -\clearpage -\markboth{\bfseries \rmfamily Index}{\bfseries \rmfamily Index} -\printindex -\end{document} - - diff --git a/HTKBook/htkbook.tex b/HTKBook/htkbook.tex deleted file mode 100644 index 0bb715b..0000000 --- a/HTKBook/htkbook.tex +++ /dev/null @@ -1,207 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-6 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 23/09/95, VV 20/03/97 -% - -% Preamble -\documentclass[a4paper,oneside]{book} - -% This next line is uncommented by the Makefile when building the -% PDF version: -%\usepackage[dvipdfm,colorlinks]{hyperref} - -\input{HTK} -\usepackage{makeidx} -\usepackage{amsmath} -\usepackage{amssymb} - -\makeindex - -% Start of Document -\pagestyle{empty} -\begin{document} -\newlength{\saveindent} -\setlength{\saveindent}{\parindent} - -%\initfloatingfigs - -% Show title page -% \setlength{\epsfxsize}{150mm} -% \leavevmode -% \epsfbox{\figDir/cover.eps} - -{ \Large \ \\ - -\vspace{1cm} - -\noindent The HTK Book - -\vspace{1cm} - -\noindent Steve Young \\ -\noindent Gunnar Evermann \\ -\noindent Mark Gales \\ -\noindent Thomas Hain \\ -\noindent Dan Kershaw \\ -\noindent Xunying (Andrew) Liu \\ -\noindent Gareth Moore \\ -\noindent Julian Odell \\ -\noindent Dave Ollason \\ -\noindent Dan Povey \\ -\noindent Valtcho Valtchev \\ -\noindent Phil Woodland \\ - -\vspace{0.5cm} - -\noindent The HTK Book (for HTK Version \version) - -\vspace{1.0cm} - -\noindent \copyright COPYRIGHT 1995-1999 Microsoft Corporation. - -\noindent \copyright COPYRIGHT 2001-2009 Cambridge University Engineering Department. - -\vspace{0.2cm} - -\noindent All Rights Reserved - -\vspace{0,5cm} - -\noindent First published December 1995 -\vspace{0.05cm} - -\noindent Reprinted March 1996 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.1 March 1997 -\vspace{0.05cm} - -\noindent Revised for HTK Version 2.2 January 1999 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.0 July 2000 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.1 December 2001 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.2 December 2002 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.3 April 2005 -\vspace{0.05cm} - -\noindent Revised for HTK Version 3.4 March 2009 -\vspace{0.05cm} - -} - -% TOC -\newpage -\tableofcontents - -% Actual contents -\newpage -\pagestyle{myheadings} -\pagenumbering{arabic} - -\part{Tutorial Overview} -\include{fundaments} -\include{htkoview} -\include{exampsys} - -\part{HTK in Depth} -\include{openviron} -\include{speechio} -\include{labels} -\include{models} -\include{train} -\include{adapt} -\include{refine} -\include{discmods} -\include{netdict} -\include{decode} - -\part{Language Modelling} -\include{hlmfund} -\include{hlmtutorial} -\include{hlmfiles} - -\part{Reference Section} -\mychap{The HTK Tools}{toolref} -\include{HTKRef/tools} -\include{HTKRef/Cluster} -\include{HTKRef/HBuild} -\include{HTKRef/HCompV} -\include{HTKRef/HCopy} -\include{HTKRef/HDMan} -\include{HTKRef/HDecode} -\include{HTKRef/HERest} -\include{HTKRef/HHEd} -\include{HTKRef/HInit} -\include{HTKRef/HLEd} -\include{HTKRef/HList} -\include{HTKRef/HLMCopy} -\include{HTKRef/HLRescore} -\include{HTKRef/HLStats} -\include{HTKRef/HMMIRest} -\include{HTKRef/HParse} -\include{HTKRef/HQuant} -\include{HTKRef/HRest} -\include{HTKRef/HResults} -\include{HTKRef/HSGen} -\include{HTKRef/HSLab} -\include{HTKRef/HSmooth} -\include{HTKRef/HVite} -\include{HTKRef/LAdapt} -\include{HTKRef/LBuild} -\include{HTKRef/LFoF} -\include{HTKRef/LGCopy} -\include{HTKRef/LGList} -\include{HTKRef/LGPrep} -\include{HTKRef/LLink} -\include{HTKRef/LMerge} -\include{HTKRef/LNewMap} -\include{HTKRef/LNorm} -\include{HTKRef/LPlex} -\include{HTKRef/LSubset} -\include{config} -\include{errors} -\include{htkslf} - -\clearpage -\markboth{\bfseries \rmfamily Index}{\bfseries \rmfamily Index} -\printindex -\end{document} - - diff --git a/HTKBook/htkoview.tex b/HTKBook/htkoview.tex deleted file mode 100644 index b1ad8d1..0000000 --- a/HTKBook/htkoview.tex +++ /dev/null @@ -1,684 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{An Overview of the \HTK\ Toolkit}{htkoview} - -\sidepic{toolkit}{50}{} -The basic principles of HMM-based recognition were outlined in -the previous chapter and a number of the key \HTK\ tools have already -been mentioned. This chapter describes the software architecture -of a \HTK\ tool. It then gives a brief outline of all the -\HTK\ tools and the way that they are used together to construct -and test HMM-based recognisers. For the benefit of existing \HTK\ users, -the major changes in recent versions of \HTK\ are listed. -The following chapter will then illustrate -the use of the \HTK\ toolkit -by working through a practical example of building a simple -continuous speech recognition system. - -\mysect{\HTK\ Software Architecture}{softarch} - -Much of the functionality of \HTK\ is built into the library modules. -These modules ensure that every tool interfaces to the outside world -in exactly the same way. They also provide a central resource of -commonly used functions. Fig.~\href{f:softarch} illustrates -the software\index{software architecture} -structure of a typical \HTK\ tool and shows its input/output interfaces. - -User input/output and interaction with the operating system is -controlled by the library -module \htool{HShell}\index{hshell@\htool{HShell}} and all memory management -is controlled by \htool{HMem}\index{hmem@\htool{HMem}}. -Math support is provided by \htool{HMath}\index{hmath@\htool{HMath}} -and the signal processing operations needed for speech analysis are -in \htool{HSigP}\index{hsigp@\htool{HSigP}}.\index{library modules} -Each of the file types required by \HTK\ has a dedicated -interface module. -\htool{HLabel}\index{hlabel@\htool{HLabel}} provides the interface for label files, -\htool{HLM}\index{hlm@\htool{HLM}} for language model files, -\htool{HNet}\index{hnet@\htool{HNet}} for networks and lattices, -\htool{HDict}\index{hdict@\htool{HDict}} for dictionaries, -\htool{HVQ}\index{hvq@\htool{HVQ}} for VQ codebooks and -\htool{HModel}\index{hmodel@\htool{HModel}} for HMM definitions. - -\sidefig{softarch}{75}{Software Architecture}{-4}{ -All speech input and output at the waveform level -is via \htool{HWave} -and at the parameterised level via \htool{HParm}. -As well as providing a consistent interface, \htool{HWave} and -\htool{HLabel} -support multiple file formats allowing data to be imported -from other systems. Direct audio input is -supported by \htool{HAudio} -and simple interactive graphics is -provided by \htool{HGraf}. -\htool{HUtil} provides a -number of utility routines for manipulating -HMMs while \htool{HTrain} and \htool{HFB} contain support for the -various \HTK\ training tools. \htool{HAdapt} provides support -for the various \HTK\ adaptation tools. -Finally, \htool{HRec} contains -the main recognition processing functions. -}\index{haudio@\htool{HAudio}} -\index{hrec@\htool{HRec}} -\index{hutil@\htool{HUtil}} -\index{hwave@\htool{HWave}} -\index{hparm@\htool{HParm}} -\index{hgraf@\htool{HGraf}} -\index{htrain@\htool{HTrain}} - -As noted in the next section, fine control over -the behaviour of these library modules -is provided by setting configuration variables\index{configuration variables}. Detailed descriptions -of the functions provided by the library modules are given in the second -part of this book and the relevant configuration variables are described -as they arise. For reference purposes, a complete list is given in -chapter~\ref{c:confvars}. - -\mysect{Generic Properties of a HTK Tool}{genprops} - -\HTK\ tools are designed to run with a traditional command-line style interface. -Each tool\index{command line!options} -has a number of required arguments plus optional arguments. -The latter are always prefixed by a minus sign. As an example, -the following command would invoke the mythical \HTK\ tool called -\htool{HFoo} -\begin{verbatim} - HFoo -T 1 -f 34.3 -a -s myfile file1 file2 -\end{verbatim} -This tool has two main arguments called \texttt{file1} and -\texttt{file2} plus four optional arguments. Options -are always introduced by a single letter option name followed -where appropriate by the option value. The option value -is always separated from the option name by a space. Thus, the value of the -\texttt{-f} option is a real number, the value of the -\texttt{-T} option is an integer number and the value of the -\texttt{-s} option is a string. The \texttt{-a} option has no following -value and it is used as a simple flag to enable or disable some -feature of the tool. Options whose names are a capital letter -have the same meaning across all tools. For example, the \texttt{-T} -option is always used to control the trace output of a \HTK\ tool. - -In addition to command line arguments, the operation of a tool -can be controlled by parameters stored -in a configuration file\index{configuration files}. -For example, if the command -\begin{verbatim} - HFoo -C config -f 34.3 -a -s myfile file1 file2 -\end{verbatim} -is executed, the tool \htool{HFoo} will load the -parameters stored in the configuration -file \texttt{config} during its initialisation procedures. Multiple -configuration files can be specified by repeating the \verb|-C| -option, e.g.\ -\begin{verbatim} - HFoo -C config1 -C config2 -f 34.3 -a -s myfile file1 file2 -\end{verbatim} -Configuration parameters can sometimes be used as an -alternative to using command line arguments. For example, trace -options can always be set within a configuration file. However, the -main use of configuration files is to control the detailed behaviour -of the library modules on which all \HTK\ tools depend. - -Although this style of command-line -working may seem old-fashioned when compared to modern -graphical user interfaces, it has many advantages. In particular, -it makes it simple to write shell scripts to control \HTK\ tool execution. This -is vital for performing large-scale system building and experimentation. -Furthermore, defining all operations using text-based commands allows -the details of system construction or experimental procedure to -be recorded and documented. - -Finally, note that a summary of the command line and -options for any \HTK\ tool can be obtained simply by executing -the tool with no arguments. - -\mysect{The Toolkit}{toolkit} - -The \HTK\ tools are best introduced by going through the -processing steps involved in building a sub-word based continuous speech -recogniser. As shown in Fig.~\href{f:sysoview}, there are 4 -main phases: data preparation, training, testing and analysis. - -\subsection{Data Preparation Tools} - -\index{data preparation} -In order to build a set of HMMs, a set of speech data files -and their associated transcriptions are required. Very often -speech data will be obtained from database archives, typically -on CD-ROMs. Before it can be used in training, it must be -converted into the appropriate parametric form and any associated -transcriptions must be converted to have the correct format -and use the required phone or word labels. If the speech needs to be -recorded, then the tool \htool{HSLab}\index{hslab@\htool{HSLab}} can be used both to record the -speech and to manually annotate it with any required transcriptions. - -Although all \HTK\ tools can parameterise waveforms \textit{on-the-fly}, in practice -it is usually better to -parameterise the data just once. The tool \htool{HCopy}\index{hcopy@\htool{HCopy}} -is used for this. As the name suggests, \htool{HCopy} is used to copy one -or more source files to an output file. -Normally, \htool{HCopy} copies the whole file, but a variety -of mechanisms are provided for extracting segments of files and concatenating -files. By setting the appropriate configuration variables, all input files -can be converted to parametric form as they are read-in. -Thus, simply copying each file in this manner performs the required encoding. -The tool \htool{HList}\index{hlist@\htool{HList}} can be used to check the contents of any speech file -and since it can also convert input on-the-fly, it can be used to check -the results of any conversions before processing large quantities of data. -Transcriptions will also need preparing. Typically the labels used in the -original source transcriptions will not be exactly as required, for example, -because of differences in the phone sets used. Also, HMM training might -require the labels to be context-dependent. The tool \htool{HLEd}\index{hled@\htool{HLEd}} is -a script-driven label editor which is designed to make the required transformations -to label files. \htool{HLEd} can also output files to a single \textit{Master Label -File} MLF which is usually more convenient for subsequent processing. -Finally on data preparation, \htool{HLStats}\index{hlstats@\htool{HLStats}} can gather and display statistics -on label files and where required, \htool{HQuant}\index{hquant@\htool{HQuant}} can be used to build a -VQ codebook in preparation for building discrete probability HMM system. - -\subsection{Training Tools} - -The second step of system building is to\index{training tools} -define the topology required for each HMM by writing a prototype definition. -\HTK\ allows HMMs to be built with any desired topology. -HMM definitions can be stored externally as simple text files and -hence it is possible to edit them with any convenient text -editor. Alternatively, the standard \HTK\ distribution includes -a number of example HMM prototypes and a script to generate -the most common topologies automatically. -With the exception of the transition -probabilities, all of the HMM parameters given in -the prototype definition\index{prototype definition} -are ignored. The purpose of the prototype definition is only -to specify the overall characteristics and topology of the HMM. The -actual parameters will be computed later by the training tools. -Sensible values for -the transition probabilities must be given but the training -process is very insensitive to these. An acceptable and simple strategy -for choosing these probabilities is to make all of the transitions -out of any state equally likely. - - -\centrefig{sysoview}{100}{\HTK\ Processing Stages} - -The actual training process takes place in stages and it is -illustrated in more detail in Fig.~\href{f:tsubword}. -Firstly, an initial set of models must be created. If there is -some speech data available for which the location of the sub-word (i.e.\ phone) -boundaries have been marked, then this can be used as \textit{bootstrap data}. -In this case, the tools \htool{HInit}\index{hinit@\htool{HInit}} -and \htool{HRest}\index{hrest@\htool{HRest}} -provide {\it isolated word} style -training using the fully labelled bootstrap\index{bootstrapping} data. Each of the required -HMMs is generated individually. \htool{HInit} reads in all of the bootstrap -training data and {\it cuts out} all of the examples of the required -phone. It then iteratively computes an initial set of parameter values -using a {\it segmental k-means} procedure\index{segmental k-means}. On the first cycle, the training data -is uniformly segmented, each model state is matched with the -corresponding data segments and then means and variances are estimated. -If mixture Gaussian models are being trained, then a modified form -of k-means clustering is used. On the second and successive cycles, -the uniform segmentation is replaced by Viterbi alignment. -The initial parameter values computed by \htool{HInit} are then further re-estimated -by \htool{HRest}. Again, the fully labelled bootstrap data is used but this -time the segmental k-means procedure is replaced by the Baum-Welch re-estimation -procedure described in the previous chapter. When no bootstrap data is -available, a so-called \textit{flat start} can be used. In this case all -of the phone models are initialised to be identical and have state means -and variances equal to the global speech mean and variance. The tool -\htool{HCompV}\index{hcompv@\htool{HCompV}} can be used for this.\index{flat start} - -\centrefig{tsubword}{90}{Training Sub-word HMMs} - -Once an initial set of models has been created, the tool \htool{HERest} -is used to perform {\em embedded training} using the -entire\index{embedded training} -training set. \htool{HERest}\index{herest@\htool{HERest}} performs a single Baum-Welch -re-estimation of the whole set of HMM phone models simultaneously. For each -training utterance, the corresponding phone models are concatenated and then -the forward-backward algorithm is used to accumulate the statistics of state -occupation, means, variances, etc., for each HMM in the sequence. When -all of the training data has been processed, the accumulated statistics -are used to compute re-estimates of the HMM parameters. \htool{HERest} is -the core \HTK\ training tool. It is designed to process large databases, it has -facilities for pruning\index{pruning} to reduce computation and it can be run in parallel -across a network of machines. - -The philosophy of system construction in \HTK\ is that HMMs should be -\index{HMM!build philosophy} -refined incrementally. Thus, a typical progression is to start with a -simple set of single Gaussian context-independent phone models and then -iteratively refine them by expanding them to include context-dependency -and use multiple mixture component Gaussian distributions. -The tool \htool{HHEd}\index{hhed@\htool{HHEd}} is a -HMM definition editor which will clone models\index{HMM!editor} -into context-dependent sets, apply a variety of parameter tyings -and increment the number of mixture components in specified distributions. -The usual process is to modify a set of HMMs in stages using \htool{HHEd} -and then -re-estimate the parameters of the modified set using \htool{HERest} -after each stage. -To improve performance for specific speakers the tools -\htool{HERest}\index{herest@\htool{HERest}} -and \htool{HVite}\index{hvite@\htool{HVite}} can be -used to adapt HMMs to better model the characteristics of particular -speakers using a small amount of training or adaptation data. -The end result of which is a speaker adapted system. - -The single biggest problem in building context-dependent -HMM systems is always data -insufficiency. The more complex the model set, the more data is -needed to make robust estimates of its parameters, and since data is -usually limited, a balance must be struck between complexity and -the available data. -For continuous density systems, this balance is achieved by -tying parameters together as mentioned above. Parameter tying -allows data to be pooled so that the shared parameters can be robustly -estimated. -In addition to continuous density systems, \HTK\ also supports -fully tied mixture systems and discrete probability systems. In these -cases, the data insufficiency problem is usually addressed by smoothing -the distributions and the -tool \htool{HSmooth}\index{hsmooth@\htool{HSmooth}} is used for this. - -\subsection{Recognition Tools} - -\HTK\ provides a recognition tool\index{recognition!tools} called -\htool{HVite}\index{hvite@\htool{HVite}} that allows recognition -using language models and lattices. -\htool{HLRecsore}\index{hvite@\htool{HLRescore}} is a tool that allows -lattices generated using \htool{HVite} (or \htool{HDecode}) to -be manipulated for example to apply a more complex language model. -An additional recogniser is also available as an extension to \HTK\, -\htool{HDecode}\index{hdecode@\htool{HDecode}}. Note: \htool{HDecode} is -distributed under a more restrictive licence agreement. - -\subsubsection{\htool{HVite}} -\HTK\ provides a recognition -tool\index{recognition!tools} called \htool{HVite}\index{hvite@\htool{HVite}} -which uses the token passing algorithm described in the previous -chapter to perform Viterbi-based speech recognition. \htool{HVite} -takes as input a network describing the allowable word sequences, -a dictionary defining how each word is pronounced and a set of HMMs. -It operates by converting the word network to a phone network and -then attaching the appropriate HMM definition to each phone instance. -Recognition can then be performed on either a list of stored speech -files or on direct audio input. As noted at the end of the last -chapter, \htool{HVite} can support cross-word triphones and it can -run with multiple tokens to generate -lattices containing multiple hypotheses. It can also be configured -to rescore lattices and perform forced alignments. - -The word networks needed to drive \htool{HVite} are usually either -simple word loops in which any word can follow any other word or they -are directed graphs representing a finite-state task grammar. In the -former case, bigram probabilities are normally attached to the word -transitions. Word networks are stored using -the \HTK\ standard lattice format\index{lattice!format}. -This is a text-based format and\index{standard lattice format}\index{SLF} -hence word networks can be created directly using a text-editor. -However, this is rather tedious and hence \HTK\ provides two -tools to assist in creating word networks. Firstly, \htool{HBuild} -allows sub-networks to be created and used within higher level networks. -Hence, although the same low level notation is used, much duplication -is avoided. Also, \htool{HBuild}\index{hbuild@\htool{HBuild}} can be used to generate word loops -and it can also read in a backed-off bigram language model and -modify the word loop transitions to incorporate the bigram probabilities. -Note that the label statistics tool \htool{HLStats} mentioned earlier -can be used to generate a backed-off bigram language model. - -As an alternative to specifying a word network directly, a higher -level grammar notation can be used. This notation is based on -the Extended Backus Naur Form (EBNF\index{EBNF}) used in compiler specification and -it is compatible with the grammar specification language used in -earlier versions of \HTK. The -tool \htool{HParse}\index{hparse@\htool{HParse}} is supplied -to convert this notation into the equivalent word network. - -Whichever method is chosen to generate a word network, it is useful -to be able to see examples of the \textit{language} that it defines. -The tool \htool{HSGen}\index{hsgen@\htool{HSGen}} is -provided to do this. It takes as input -a network and then randomly traverses the network outputting word -strings. These strings can then be inspected to ensure that they -correspond to what is required. \htool{HSGen} can also compute -the empirical perplexity of the task. - -Finally, the construction of large dictionaries can involve merging -several sources and performing a variety of transformations on each -sources. The dictionary management -tool \htool{HDMan}\index{hdman@\htool{HDMan}} is supplied -to assist with this process. - -\subsubsection{\htool{HLRescore}} -\htool{HLRescore} is a tools for manipulating lattices. It reads -lattices in standard lattice format (for example produced by -\htool{HVite}) and applies one of the following operations on them: - -\begin{itemize} -\item finding 1-best path through lattice: this allows language -model scale factors and insertion penalties to be optimised rapidly; -\item expanding lattices with new language model: allows the application -of more complex language, e,g, 4-grams, than can be efficiently used -on the decoder. -\item converting lattices to equivalent word networks: this is necessary -prior to using lattices generated with \htool{HVite} (or \htool{HDecode}) -to merge duplicate paths. -\item calculating various lattice statistics -\item pruning lattice using forward-backward scores: efficient pruning -of lattices for -\item converting word MLF files to lattices with a language model: this -is necessary for generating numerator lattices for discriminative training. -\end{itemize} - -\htool{HLRescore} expects lattices which are directed acyclic graphs -(DAGs). If cycles occur in the lattices then \htool{HLRescore} will -throw an error. These cycles may occur after the merging operation -({\tt -m} option) with HLRescore. - -\subsubsection{\htool{HDecode}} -\htool{HDecode} is a decoder suited for large vocabulary speech -recognition and lattice generation, that is available as an extension -to \HTK, distributed under a slightly more restrictive licence. -Similar to \htool{HVite}, \htool{HDecode} transcribes speech files -using a HMM model set and a dictionary (vocabulary). The best -transcription hypothesis will be generated in the Master Label File -(MLF) format. Optionally, multiple hypotheses can also be generated as -a word lattice in the form of the HTK Standard Lattice Format (SLF). - -The search space of the recognition process is defined by a model -based network, produced from expanding a supplied language model or a -word level lattice using the dictionary. In the absence of a word -lattice, a language model must be supplied to perform a \emph{full -decoding}. The current version of \htool{HDecode} only supports -trigram and bigram full decoding. When a word lattice is supplied, the use of a -language model is optional. This mode of operation is known as -\emph{lattice rescoring}. - -\htool{HDecode} expects lattices where there are no duplicates of word -paths. However by default lattices that are generated by -\htool{HDecode} contains duplicates due to multiple pronunciations -and optional inter-word silence. To modify the lattices to be suitable -for lattic rescoring \htool{HLRescore} should be used to merge (using -the {\tt -m} option)multiple paths. Note as a side-effect of this -merged lattices may not be DAGs (cycles may exist), thus merged lattices -may not be suitable for applying more complex LMs (using for example -\htool{HLRescore}). - -The current implementation of \htool{HDecode} has a number of limitations -for use as a general decoder for HMMs. It has primarily been developed for -speech recognition. Limitations include: -\begin{itemize} -\item only works for cross-word triphones; -\item \texttt{sil} and \texttt{sp} models are reserved as silence -models and are, by default, automatically added to the end of all -``words'' in the pronunciation dictionary. -\item lattices generated with \htool{HDecode} must be {\em merged} -to remove duplicate word paths prior to being used for lattice rescoring -with \htool{HDecode} and \htool{HVite}. -\end{itemize} - -\subsection{Analysis Tool} - -\index{results analysis} -Once the HMM-based recogniser has been built, it is necessary -to evaluate its performance. This is usually done by using it -to transcribe some pre-recorded test sentences and match the -recogniser output with the correct reference transcriptions. -This comparison is performed by a tool called -\htool{HResults} which uses dynamic programming to align the two transcriptions -and then count substitution, deletion and insertion errors. -Options are provided to ensure that the -algorithms and output formats used -by \htool{HResults}\index{hresults@\htool{HResults}} are compatible -with those used by the US National Institute of Standards and Technology -(NIST). -As well as global performance measures, -\htool{HResults} can also provide speaker-by-speaker breakdowns, -confusion matrices and time-aligned transcriptions. For word spotting -applications, it can also compute \textit{Figure of Merit} (FOM) scores -and \textit{Receiver Operating Curve} (ROC) information. -\index{NIST}\index{FOM}\index{Figure of Merit} - - -\mysect{What's New In Version 3.4.1}{whatsnew} - -This \index{new features!in Version 3.4.1} section lists the new -features in \HTK\ Version 3.4.1 compared to the preceding Version~3.4. - -\begin{enumerate} -\item The HTK Book has been extended to include tutorial sections on - \htool{HDecode} and discriminative training. An initial description of the - theory and options for discriminative training has also been added. - -\item \htool{HDecode} has been extended to support decoding with trigram - language models. - -\item Lattice generation with \htool{HDecode} has been improved to yield a - greater lattice density. - -\item \htool{HVite} now supports model-marking of lattices. - -\item Issues with \htool{HERest} using single-pass retraining with HLDA and - other input transforms have been resolved. - -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - - -\mysubsect{New In Version 3.4}{nv3.4} - -This \index{new features!in Version 3.4} section lists the new -features in \HTK\ Version 3.4 compared to the preceding Version~3.3. - -\begin{enumerate} -\item \htool{HMMIRest} has now been added as a tool for performing -discriminative training. This supports both Minimum Phone Error (MPE) -and Maximum Mutual Information (MMI) training. To support this -additional library modules for performing the forward-backward -algorithm on lattices, and the ability to mark phone boundary -times in lattices have been added. - -\item \htool{HDecode} has now been added as a tool for performing -large vocabulary decoding. See section~\ref{s:HDecode} for -further details of limitations associated with this tool. - -\item \htool{HERest} has been extended to support estimating -semitied and HLDA transformations. - -\item Compilation issues have now been dealt with. - -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - -\mysubsect{New In Version 3.3}{nv3.3} - -This \index{new features!in Version 3.3} section lists the new -features in \HTK\ Version 3.3 compared to the preceding Version~3.2. -\begin{enumerate} -\item \htool{HERest} now incorporates the adaptation transform -generation that was previously performed in \htool{HEAdapt}. The -range of linear transformations and the ability to combine transforms -hierarchically has now been included. The system also now supports -adaptive training with constrained MLLR transforms. - -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - -\mysubsect{New In Version 3.2}{nv3.2} - -This \index{new features!in Version 3.2} section lists the new -features in \HTK\ Version 3.2 compared to the preceding Version~3.1. - -\begin{enumerate} -\item The \htool{HLM} toolkit has been incorporated into HTK. It - supports the training and testing of word or class-based n-gram - language models. -\item \htool{HPARM} supports global feature space transforms. -\item \htool{HPARM} now supports third differentials - ($\Delta\Delta\Delta$ parameters). -\item A new tool named \htool{HLRescore} offers support for a number - of lattice post-processing operations such as lattice pruning, - finding the 1-best path in a lattice and language model expansion of - lattices. -\item \htool{HERest} supports 2-model re-estimation which allows the - use of a separate alignment model set in the Baum-Welch - re-estimation. -\item The initialisation of the decision-tree state clustering in - \htool{HHEd} has been improved. -\item \htool{HHEd} supports a number of new commands related to - variance flooring and decreasing the number of mixtures. -\item A major bug in the estimation of block-diagonal MLLR transforms - has been fixed. -\item Many other smaller changes and bug fixes have been integrated. -\end{enumerate} - -\subsection{New In Version 3.1}{} - -This \index{new features!in Version 3.1} section lists the new -features in \HTK\ Version 3.1 compared to the preceding Version~3.0 -which was functionally equivalent to Version~2.2. - -\begin{enumerate} - -\item \htool{HPARM} supports Perceptual Linear Prediction (PLP) feature - extraction. - -\item \htool{HPARM} supports Vocal Tract Length Normalisation (VTLN) - by warping the frequency axis in the filterbank analysis. - -\item \htool{HPARM} supports variance scaling. - -\item \htool{HPARM} supports cluster-based cepstral mean and variance - normalisation. - -\item All tools support an extended filename syntax that can be used - to deal with unsegmented data more easily. - -\end{enumerate} - - -\subsection{New In Version 2.2}{} - -This section lists the new features and refinements in \HTK\ Version -2.2 compared to the preceding Version 2.1. - -\begin{enumerate} - -\item Speaker adaptation is now supported via the \htool{HEAdapt} and -\htool{HVite} tools, which adapt a current set of models to a new speaker and/or -environment. -\begin{itemize} - -\item \htool{HEAdapt} performs offline supervised adaptation using maximum -likelihood linear regression (MLLR) and/or maximum a-posteriori (MAP) adaptation. - -\item \htool{HVite} performs unsupervised adaptation using just MLLR. - -\end{itemize} - -Both tools can be used in a static mode, where all the -data is presented prior to any adaptation, or in an incremental fashion. - -\item Improved support for PC WAV files\\ -In addition to 16-bit PCM linear, HTK can now read -\begin{itemize} - -\item 8-bit CCITT mu-law - -\item 8-bit CCITT a-law - -\item 8-bit PCM linear - -\end{itemize} - -\end{enumerate} - -\subsection{Features Added To Version 2.1}{} - -For the benefit of users of earlier versions of \HTK\, this -\index{new features!in Version 2.1} section lists the main changes -in \HTK\ Version 2.1 compared to the preceding Version 2.0. - -\begin{enumerate} - -\item The speech input handling has been partially re-designed and a new -energy-based speech/silence detector has been incorporated into \htool{HParm}. -The detector is robust yet flexible and can be configured through a number of -configuration variables. Speech/silence detection can now be performed on -waveform files. The calibration of speech/silence detector parameters is now -accomplished by asking the user to speak an arbitrary sentence. - -\item \htool{HParm} now allows random noise signal to be added to waveform -data via the configuration parameter \texttt{ADDDITHER}. This prevents -numerical overflows which can occur with artificially created waveform data -under some coding schemes. - -\item \htool{HNet} has been optimised for more efficient operation when -performing forced alignments of utterances using \htool{HVite}. Further -network optimisations tailored to biphone/triphone-based phone recognition -have also been incorporated. - -\item \htool{HVite} can now produce partial recognition hypothesis even when -no tokens survive to the end of the network. This is accomplished by setting -the \htool{HRec} configuration parameter \texttt{FORCEOUT} to true. - -\item Dictionary support has been extended to allow pronunciation probabilities -to be associated with different pronunciations of the same word. At the same -time, \htool{HVite} now allows the use of a pronunciation scale factor during -recognition. - -\item \HTK\ now provides consistent support for reading and writing of \HTK\ -binary files (waveforms, binary MMFs, binary SLFs, \htool{HERest} accumulators) -across different machine architectures incorporating automatic byte swapping. -By default, all binary data files handled by the tools are now written/read in -big-endian (\texttt{NONVAX}) byte order. The default behaviour can be changed -via the configuration parameters \texttt{NATURALREADORDER} and -\texttt{NATURALWRITEORDER}. - -\item \htool{HWave} supports the reading of waveforms in Microsoft WAVE file -format. - -\item \htool{HAudio} allows key-press control of live audio input. - -\end{enumerate} - - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/htkslf.tex b/HTKBook/htkslf.tex deleted file mode 100644 index aaca27e..0000000 --- a/HTKBook/htkslf.tex +++ /dev/null @@ -1,334 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% - - -\mychap{\HTK\ Standard Lattice Format (SLF)}{htkslf} -\index{standard lattice format!definition} -\mysect{SLF Files}{slffiles} - -Lattices in \HTK\ are used for storing multiple -hypotheses\index{multiple hypotheses} from the output of a speech -recogniser and for specifying finite state syntax networks for -recognition. The \HTK\ standard lattice format (SLF) is designed to -be extensible and to be able to serve a variety of purposes. However, -in order to facilitate the transfer of lattices\index{lattices}, it -incorporates a core set of common features. - -An SLF file can contain zero or more sub-lattices\index{sub-lattices} -followed by a main lattice. Sub-lattices are used for defining -sub-networks prior to their use in subsequent sub-lattices or the main -lattice. They are identified by the presence of a -\texttt{SUBLAT}\index{sublat@\texttt{SUBLAT}} field and they are -terminated by a single period on a line by itself. Sub-lattices offer -a convenient way to structure finite state grammar networks. They are -never used in the output word lattices generated by a decoder. Some -lattice processing operations like lattice pruning or expansion will -destroy the sub-lattice structure, i.e.\ expand all sub-lattice -references and generate one unstructured lattice. - -A lattice consists of optional header\index{lattice!header} -information followed by a sequence of node definitions and a sequence -of link (arc) definitions. Nodes and links are numbered and the first -definition line must give the total number of each. - -Each link\index{lattice!link} represents a word instance occurring -between two nodes, however for more compact storage the nodes often -hold the word labels since these are frequently common to all words -entering a node (the node effectively represents the end of several -word instances). This is also used in lattices representing word-level -networks where each node is a word end, and each arc is a word -transition. - -Each node\index{lattice!node} may optionally be labelled with a word -hypothesis and with a time. Each link has a start and end node number -and may optionally be labelled with a word hypothesis (including the -pronunciation variant, acoustic score and segmentation of the word -hypothesis) and a language model score. - -The lattice must have exactly one start node (no incoming arcs) and -one end node (no outgoing arcs). The special word identifier -\verb|!NULL| can be used for the start and end node if necessary. - -\mysect{Format}{slfformat} - -The format\index{lattice!format} is designed to allow optional -information that at its most detailed gives full identity, alignment -and score (log likelihood) information at the word and phone level to -allow calculation of the alignment and likelihood of an individual -hypothesis. However, without scores or times the lattice is just a -word graph. The format is designed to be extensible. Further field -names can be defined to allow arbitrary information to be added to the -lattice without making the resulting file unreadable by others. - -The lattices are stored in a text file as a series of fields that form -two blocks: - -\begin{itemize} -\item A header, specifying general information about the lattice. -\item The node and link definitions. -\end{itemize} - -Either block may contain comment lines\index{lattice!comment lines}, -for which the first character is a `\#' and the rest of the line is -ignored. - -All non-comment lines consist of fields, separated by white space. -Fields consist of an alphanumeric field name, followed by a delimiter -(the character `=' or `\verb|~|') and a (possibly ``quoted'') field -value. Single character field names are reserved for fields defined -in the specification and single character abbreviations may be used -for many of the fields defined below. Field values can be specified -either as normal text (e.g.\ \verb|a=-318.31|) or in a binary -representation if the `=' character is replaced by `\verb|~|'. The -binary representation consists of a 4-byte floating point number (IEEE -754) or a 4-byte integer number stored in big-endian byte order by -default (see section~\ref{s:byteswap} for a discussion of different -byte-orders in HTK). - -The convention used to define the current field -names\index{lattice!field names} is that lower case is used for -optional fields and upper case is used for required fields. The -meaning of field names can be dependent on the context in which they -appear. - -The header must include a field specifying which utterance was used to -generate the lattice and a field specifying the version of the lattice -specification used. The header is terminated by a line which defines -the number of nodes and links in the lattice. - -The node definitions are optional but if included each node definition -consists of a single line which specifies the node number followed by -optional fields that may (for instance) define the time of the node or -the word hypothesis ending at that node. - -The link definitions are required and each link definition consists of -a single line which specifies the link number as well as the start and -end node numbers that it connects to and optionally other information -about the link such as the word identity and language model score. If -word identity information is not present in node definitions then it -must appear in link definitions. - -\mysect{Syntax}{slfsyntax} - -The following rules define the syntax\index{lattice!syntax} of an SLF -lattice. Any unrecognised fields will be ignored and no user defined -fields may share the first character with pre-defined field names. The -syntax specification below employs the modified BNF notation used in -section~\ref{s:hmmdef}. For the node and arc field names only the -abbreviated names are given and only the text format is documented in -the syntax. - - -\begin{verbatim} -latticedef = laticehead - lattice { lattice } - - -latticehead = "VERSION=" number - "UTTERANCE=" string - "SUBLAT=" string - { "vocab=" string | "hmms=" string | "lmname=" string | - "wdpenalty=" floatnumber | "lmscale=" floatnumber | - "acscale=" floatnumber | "base=" floatnumber | "tscale=" floatnumber } - -lattice = sizespec - { node } - { arc } - -sizespec = "N=" intnumber "L=" intnumber - -node = "I=" intnumber - { "t=" floatnumber | "W=" string | - "s=" string | "L=" string | "v=" intnumber } - -arc = "J=" intnumber - "S=" intnumber - "E=" intnumber - { "a=" floatnumber | "l=" floatnumber | "a=" floatnumber | "r=" floatnumber | - "W=" string | "v=" intnumber | "d=" segments } - -segments = ":" segment {segment} -segment = string [ "," floatnumber [ "," floatnumber ]] ":" -\end{verbatim} - - -\mysect{Field Types}{slffields} - -The currently defined fields are as follows:- - -\begin{verbatim} - Field abbr o|c Description - -Header fields - VERSION=%s V o Lattice specification adhered to - UTTERANCE=%s U o Utterance identifier - SUBLAT=%s S o Sub-lattice name - acscale=%f o Scaling factor for acoustic likelihoods - tscale=%f o Scaling factor for times (default 1.0, i.e.\ seconds) - base=%f o LogBase for Likelihoods (0.0 not logs, default base e) - lmname=%s o Name of Language model - lmscale=%f o Scaling factor for language model - wdpenalty=%f o Word insertion penalty - -Lattice Size fields - NODES=%d N c Number of nodes in lattice - LINKS=%d L c Number of links in lattice - -Node Fields - I=%d Node identifier. Starts node information - time=%f t o Time from start of utterance (in seconds) - WORD=%s W wc Word (If lattice labels nodes rather that links) - L=%s wc Substitute named sub-lattice for this node - var=%d v wo Pronunciation variant number - s=%s s o Semantic Tag - -Link Fields - J=%d Link identifier. Starts link information - START=%d S c Start node number (of the link) - END=%d E c End node number (of the link) - WORD=%s W wc Word (If lattice labels links rather that nodes) - var=%d v wo Pronunciation variant number - div=%s d wo Segmentation (modelname, duration, likelihood) triples - acoustic=%f a wo Acoustic likelihood of link - language=%f l o General language model likelihood of link - r=%f r o Pronunciation probability - -Note: The word identity (and associated `w' fields var,div and acoustic) must - appear on either the link or the end node. - - abbr is a possible single character abbreviation for the field name - o|c indicates whether field is optional or compulsory. -\end{verbatim} - -% ngram=%f n o NGram likelihood of link - -\mysect{Example SLF file}{slfeg} - -The following is a real lattice (generated by the \HTK\ Switchboard -Large Vocabulary System with a 54k dictionary and a word fourgram LM) -with word labels occurring on the end nodes of the links. - -Note that the \verb|!SENT_SENT| and \verb|!SENT_END| ``words'' model -initial and final silence. - -\begin{verbatim} -VERSION=1.0 -UTTERANCE=s22-0017-A_0017Af-s22_000070_000157.plp -lmname=/home/solveb/hub5/lib/lang/fgintcat_54khub500.txt -lmscale=12.00 wdpenalty=-10.00 -vocab=/home/solveb/hub5/lib/dicts/54khub500v3.lvx.dct -N=32 L=45 -I=0 t=0.00 W=!NULL -I=1 t=0.05 W=!SENT_START v=1 -I=2 t=0.05 W=!SENT_START v=1 -I=3 t=0.15 W=!SENT_START v=1 -I=4 t=0.15 W=!SENT_START v=1 -I=5 t=0.19 W=HOW v=1 -I=6 t=0.29 W=UM v=1 -I=7 t=0.29 W=M v=1 -I=8 t=0.29 W=HUM v=1 -I=9 t=0.70 W=OH v=1 -I=10 t=0.70 W=O v=1 -I=11 t=0.70 W=KOMO v=1 -I=12 t=0.70 W=COMO v=1 -I=13 t=0.70 W=CUOMO v=1 -I=14 t=0.70 W=HELLO v=1 -I=15 t=0.70 W=OH v=1 -I=16 t=0.70 W=LOW v=1 -I=17 t=0.71 W=HELLO v=1 -I=18 t=0.72 W=HELLO v=1 -I=19 t=0.72 W=HELLO v=1 -I=20 t=0.72 W=HELLO v=1 -I=21 t=0.73 W=CUOMO v=1 -I=22 t=0.73 W=HELLO v=1 -I=23 t=0.77 W=I v=1 -I=24 t=0.78 W=I'M v=1 -I=25 t=0.78 W=TO v=1 -I=26 t=0.78 W=AND v=1 -I=27 t=0.78 W=THERE v=1 -I=28 t=0.79 W=YEAH v=1 -I=29 t=0.80 W=IS v=1 -I=30 t=0.88 W=!SENT_END v=1 -I=31 t=0.88 W=!NULL -J=0 S=0 E=1 a=-318.31 l=0.000 -J=1 S=0 E=2 a=-318.31 l=0.000 -J=2 S=0 E=3 a=-1094.09 l=0.000 -J=3 S=0 E=4 a=-1094.09 l=0.000 -J=4 S=2 E=5 a=-1063.12 l=-5.496 -J=5 S=3 E=6 a=-1112.78 l=-4.395 -J=6 S=4 E=7 a=-1086.84 l=-9.363 -J=7 S=2 E=8 a=-1876.61 l=-7.896 -J=8 S=6 E=9 a=-2673.27 l=-5.586 -J=9 S=7 E=10 a=-2673.27 l=-2.936 -J=10 S=1 E=11 a=-4497.15 l=-17.078 -J=11 S=1 E=12 a=-4497.15 l=-15.043 -J=12 S=1 E=13 a=-4497.15 l=-12.415 -J=13 S=2 E=14 a=-4521.94 l=-7.289 -J=14 S=8 E=15 a=-2673.27 l=-3.422 -J=15 S=5 E=16 a=-3450.71 l=-8.403 -J=16 S=2 E=17 a=-4635.08 l=-7.289 -J=17 S=2 E=18 a=-4724.45 l=-7.289 -J=18 S=2 E=19 a=-4724.45 l=-7.289 -J=19 S=2 E=20 a=-4724.45 l=-7.289 -J=20 S=1 E=21 a=-4796.74 l=-12.415 -J=21 S=2 E=22 a=-4821.53 l=-7.289 -J=22 S=18 E=23 a=-435.64 l=-4.488 -J=23 S=18 E=24 a=-524.33 l=-3.793 -J=24 S=19 E=25 a=-520.16 l=-4.378 -J=25 S=20 E=26 a=-521.50 l=-3.435 -J=26 S=17 E=27 a=-615.12 l=-4.914 -J=27 S=22 E=28 a=-514.04 l=-5.352 -J=28 S=21 E=29 a=-559.43 l=-1.876 -J=29 S=9 E=30 a=-1394.44 l=-2.261 -J=30 S=10 E=30 a=-1394.44 l=-1.687 -J=31 S=11 E=30 a=-1394.44 l=-2.563 -J=32 S=12 E=30 a=-1394.44 l=-2.352 -J=33 S=13 E=30 a=-1394.44 l=-3.285 -J=34 S=14 E=30 a=-1394.44 l=-0.436 -J=35 S=15 E=30 a=-1394.44 l=-2.069 -J=36 S=16 E=30 a=-1394.44 l=-2.391 -J=37 S=23 E=30 a=-767.55 l=-4.081 -J=38 S=24 E=30 a=-692.95 l=-3.868 -J=39 S=25 E=30 a=-692.95 l=-2.553 -J=40 S=26 E=30 a=-692.95 l=-3.294 -J=41 S=27 E=30 a=-692.95 l=-0.855 -J=42 S=28 E=30 a=-623.50 l=-0.762 -J=43 S=29 E=30 a=-556.71 l=-3.019 -J=44 S=30 E=31 a=0.00 l=0.000 -\end{verbatim} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/labels.tex b/HTKBook/labels.tex deleted file mode 100644 index a9744f6..0000000 --- a/HTKBook/labels.tex +++ /dev/null @@ -1,823 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{Transcriptions and Label Files}{labels} - -\sidepic{Tool.labs}{80}{} -Many of the operations performed by \HTK\ which involve speech data -files assume that the speech is divided into segments and each segment -has a name or \textit{label}. The set of labels associated with a -speech file constitute a \textit{transcription} and each transcription is -stored in a separate \textit{label file}. Typically, the name of the -label file will be the same as the corresponding speech file but with -a different extension. For convenience, label files are often stored -in a separate directory and all \HTK\ tools have an option to specify -this. When very large numbers of files are being processing, label -file access can be greatly facilitated by using\index{master label files} -\textit{Master Label Files (MLFs)}. MLFs may be regarded as index\index{MLF} -files holding pointers to the actual label files which can either be -embedded in the same index file or stored anywhere else in the file system. -Thus, MLFs allow large sets of files to be stored in a single file, they -allow a single transcription to be shared by many logical label files -and they allow arbitrary file redirection.\index{label files} - -The \HTK\ interface to label files is provided by the module \htool{HLabel} -which implements the MLF facility and support for a number of external -label file formats. -All of the facilities supplied by \htool{HLabel}, including the -supported label file formats, are described in this chapter. -In addition, \HTK\ provides a tool called \htool{HLEd} for simple -batch editing of label files and this is also described. -Before proceeding to the details, however, the general structure of -label files will be reviewed. - -\mysect{Label File Structure}{labstruct} - -Most transcriptions are single-alternative and single-level, that is -to say, the associated speech file is described by a single sequence -of labelled segments. Most standard label formats are of this kind. -Sometimes, however, it is useful to have several levels of labels associated -with the same basic segment sequence. For example, in training a HMM -system it is useful to have both the word level transcriptions and the -phone level transcriptions \textit{side-by-side}. \index{labels!side-by-side} - -Orthogonal to the requirement for multiple levels of description, -a transcription may also need to include multiple alternative -descriptions of the same speech file. For example, the output -of a speech recogniser may be in the form of an \textit{N-best} list -where each word sequence in the list represents one possible interpretation -of the input.\index{labels!multiple level} - -As an example, Fig.~\href{f:labegs} shows a speech file and three -different ways in which it might be labelled. In part (a), just a simple -orthography is given and this single-level single-alternative type of -transcription is the commonest case. Part (b) shows a 2-level -transcription where the basic level consists of a sequence of phones but -a higher level of word labels are also provided. Notice that there is a -distinction between the basic level and the higher levels, since only the -basic level has explicit boundary locations marked for every segment. -The higher levels do not have explicit boundary information since this -can always be inferred from the basic level boundaries. Finally, part (c) -shows the case where knowledge of the contents of the speech file is -uncertain and three possible word sequences are given. - -\HTK\ label files support multiple-alternative and multiple-level -transcriptions. In addition to start and end times on the basic level, a -label at any level may also have a score associated with it. When a -transcription is loaded, all but one specific alternative can be discarded by -setting the configuration variable \texttt{TRANSALT}\index{transalt@\texttt{TRANSALT}} to the required -alternative \texttt{N}, where the first (i.e. normal) alternative is numbered -1. Similarly, all but a specified level can be discarded by setting the -configuration variable -\texttt{TRANSLEV}\index{translev@\texttt{TRANSLEV}} to -the required level number where again the first (i.e. -normal) level is numbered 1. - -All non-\HTK\ formats are limited to -single-level single-alternative transcriptions. - - -\mysect{Label File Formats}{labform} - -As with speech data files, \HTK\ not only defines its own format for -label files but also supports a number of external formats. Defining -an external format is similar to the case for speech data files except -that the relevant configuration variables for specifying a format -other than \HTK\ are called \texttt{SOURCELABEL}\index{sourcelabel@\texttt{SOURCELABEL}} and \texttt{TARGETLABEL}. -The source label format can also be specified using the -\texttt{-G}\index{standard options!aaag@\texttt{-G}} command -line option. As with using the -\texttt{-F}\index{standard options!aaaf@\texttt{-F}} command -line option for speech data files, the \texttt{-G} option overrides any -setting of \texttt{SOURCELABEL}\index{labels!external formats} - -\subsection{HTK Label Files} - -The \HTK\ label format is text based. As noted above, a single label -file can contain multiple-alternatives and multiple-levels. - -Each line of a \HTK\ label file contains\index{label files!HTK format} -the actual label optionally preceded by start and end times, and -optionally followed by a match score. -\begin{verbatim} - [start [end] ] name [score] { auxname [auxscore] } [comment] -\end{verbatim} -where \texttt{start} denotes the start time of the labelled segment -in 100ns units, \texttt{end} -denotes the end time in 100ns units, \texttt{name} is the name -of the segment and \texttt{score} is a floating point confidence score. -All fields except the name are optional. If \texttt{end} is omitted then -it is set equal to -1 and ignored. This case would occur with data which had -been labelled frame synchronously. If \texttt{start} and \texttt{end} are both -missing then both are set to -1 and the label file is treated as a -simple symbolic transcription. The -optional score would typically be a log probability generated by a -recognition tool. When omitted the score is set to 0.0. - -The following example corresponds to the transcription shown -in part (a) of Fig.~\ref{f:labegs} -\begin{verbatim} - 0000000 3600000 ice - 3600000 8200000 cream -\end{verbatim} -Multiple levels are described by adding further names alongside -the basic name. The lowest level (shortest segments) should be -given first since only the lowest level has start and end times. -The label file corresponding to the transcription illustrated in -part (b) of Fig.~\ref{f:labegs} would be as follows. -\begin{verbatim} - 0000000 2200000 ay ice - 2200000 3600000 s - 3600000 4300000 k cream - 4300000 5000000 r - 5000000 7400000 iy - 7400000 8200000 m -\end{verbatim} -Finally, multiple alternatives are written as a sequence of separate -label lists separated by three slashes (///). -The label file corresponding to the transcription illustrated in -part (c) of Fig.~\ref{f:labegs} would therefore be as follows. -\begin{verbatim} - 0000000 2200000 I - 2200000 8200000 scream - /// - 0000000 3600000 ice - 3600000 8200000 cream - /// - 0000000 3600000 eyes - 3600000 8200000 cream -\end{verbatim} - -Actual label names can be any sequence of characters. -However, the \texttt{-} and \texttt{+} characters are reserved for identifying -the left and right context\index{labels!context markers}, -respectively, in a context-dependent phone -label. For example, the label \texttt{N-aa+V} might be used to denote -the phone \texttt{aa} when preceded by a nasal and followed by a vowel. -These context-dependency conventions are used in the label editor \htool{HLEd}, -and are understood by all \HTK\ tools. - -\subsection{ESPS Label Files} - -An \ESPSwaves\ label file is a text file with one label stored per -line. Each label indicates a segment boundary. \index{label files!ESPS format} -A complete description -of the \ESPSwaves\ label format is given in the \ESPSwaves\ -manual pages {\bf xwaves (1-ESPS)} and {\bf xlabel (1-ESPS)}. -Only details required for use with \HTK\ are given here. - -The label data follows -a header which ends with a line containing only -a \texttt{\#}. The header contents are generally ignored by \htool{HLabel}. -The labels follow the header in the form -\begin{verbatim} - time ccode name -\end{verbatim} -where \texttt{time} is a floating point number which denotes the boundary -location in seconds, -\texttt{ccode} is an integer color map entry used by \ESPSwaves\ in drawing -segment boundaries and \texttt{name} is the name of the segment boundary. A -typical value for \texttt{ccode} is \texttt{121}. - -While each \HTK\ label can contain both a start and an end time which -indicate -the boundaries of a labeled segment, \ESPSwaves\ labels -contain a single time in seconds which (by convention) refers -to the end of the labeled segment. The starting time -of the segment is taken to be the end of the previous -segment and \texttt{0} initially. - -\ESPSwaves\ label files may have several boundary names per line. -However, \htool{HLabel} only reads \ESPSwaves\ label files with a single name -per boundary. Multiple-alternative and/or multiple-level \HTK\ label -data structures cannot be saved using \ESPSwaves\ format label files. - -\subsection{TIMIT Label Files} - -\index{label files!TIMIT format} -TIMIT label files are identical to single-alternative single-level HTK -label files without scores except that the start and end times are -given as sample numbers rather than absolute times. TIMIT label files -are used on both the prototype and final versions of the TIMIT CD ROM. - -\subsection{SCRIBE Label Files} - -\index{label files!SCRIBE format} -The SCRIBE label file format is a subset of the European SAM label file format. -SAM label files are text files and each line begins with a label identifying -the type of information stored on that line. The \HTK\ SCRIBE format recognises -just three label types -\begin{tabbing} -++ \= +++++++ \= \kill -\> LBA \>-- acoustic label \\ -\> LBB \>-- broad class label \\ -\> UTS \>-- utterance -\end{tabbing} -For each of these, the rest of the line is divided into comma separated -fields. The LBA and LBB types have 4 fields: start sample, centre sample, end sample -and label. \HTK\ expects the centre sample to be blank. The UTS type has 3 fields: -start sample, end sample and label. UTS labels may be multi-word since they can -refer to a complete utterance. In order to make such labels usable within \HTK\ tools, -between word blanks are converted to underscore characters. The -\texttt{EX}\index{ex@\texttt{EX} command} command -in the \HTK\ label editor \htool{HLEd} can then be used to split such -a compound label into individual word labels if required. - - -\mysect{Master Label Files}{mlfs} - -\subsection{General Principles of MLFs} - -\index{master label files} -Logically, the organisation of data and label files is very simple. -Every data file has a label file of the same name (but -different extension) which is either stored in the same directory as -the data file or in some other specified directory. - -\sidefig{labegs}{60}{Example Transcriptions}{2}{} -This scheme is sufficient for most needs and commendably simple. -However, there are many cases where either it makes unnecessarily -inefficient use of the operating system or it seriously inconveniences -the user. For example, to use a training tool with -isolated word data may require the generation of hundreds or thousands of -label files each having just one label entry. Even where individual -label files are appropriate (as in the phonetically transcribed TIMIT -database), each label file must be -stored in the same directory as the data file it transcribes, or all label files -must be stored in the same directory. One cannot, for example, have a -different directory of label files for each TIMIT dialect region and -then run the \HTK\ training tool \htool{HERest} on the whole database. - -All of these problems can be solved by the use of Master Label Files -(MLFs). Every \HTK\ tool which uses label files has a -\texttt{-I}\index{standard options!aaai@\texttt{-I}} option -which can be used to specify the name of an MLF file. When an MLF has been -loaded, the normal rules for locating a label file apply except that -the MLF is searched first. If the required label file \texttt{f} is found via -the MLF then that is loaded, otherwise the file \texttt{f} is opened as normal. -If \texttt{f} does not exist, then an error is reported. -The \texttt{-I} option may be repeated on the command line to open -several MLF files simultaneously. In this case, each is searched in turn -before trying to open the required file. - -MLFs can do two things. Firstly, they can contain -embedded label definitions\index{master label files!embedded label definitions} -so that many or all of the needed label definitions can be -stored in the same file. Secondly, they can contain the names of -sub-directories to search for label files. In effect, they allow -multiple search paths\index{master label files!multiple search paths} -to be defined. Both of these two types of -definition can be mixed in a single MLF. - -MLFs are quite complex to understand and use. However, they add -considerable power and flexibility to \HTK\ which combined with the -\texttt{-S}\index{standard options!aaas@\texttt{-S}} and -\texttt{-L}\index{standard options!aaal@\texttt{-L}} -options mean that virtually any organisation of -data and label files can be accommodated. - -\subsection{Syntax and Semantics} - -An MLF consists of one or more individual definitions. Blank lines in -an MLF are ignored but otherwise the line structure is significant. -The first line must contain just \texttt{\#!MLF!\#} to identify it as an MLF file. -This is not necessary for use with the \texttt{-I} option but some -\HTK\ tools need to be able to distinguish an MLF from a normal label file. -The following syntax\index{master label files!syntax} of MLF files is described using an -extended BNF notation in which -alternatives are separated by a vertical bar $|$, parentheses (\ ) denote -factoring, brackets [\ ] denote options, and braces \{\ \} denote zero or more -repetitions. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> MLF = \> ``\#!MLF!\#'' \\ -\>\> MLFDef \{ MLFDef \} -\end{tabbing} -} - -Each definition is either a transcription for immediate loading or a -subdirectory to search. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> MLFDef = \> ImmediateTranscription $|$ SubDirDef -\end{tabbing} -} - -An immediate transcription consists of a pattern on a line -by itself immediately followed -by a transcription which as far as the MLF is concerned is arbitrary -text. It is read using whatever label file ``driver'' routines are -installed in \htool{HLabel}. It is terminated by a period written on a line -of its own. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> ImmediateTranscription = \\ -\>\> Pattern \\ -\>\> Transcription \\ -\>\>``.'' -\end{tabbing} -} -A subdirectory definition simply gives the name of a subdirectory -to search. If the required label file is found in that subdirectory -then the label file is loaded, otherwise the next matching subdirectory -definition is checked. - -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> SubDirDef = \> Pattern SearchMode String \\ -\> SearchMode = \> ``\verb+->+'' $|$ ``\verb+=>+'' -\end{tabbing} -} -\noindent -The two types of search mode are described below. A pattern is just a -string -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> Pattern = \> String -\end{tabbing} -} -\noindent -except that the characters `\texttt{?}' and `\texttt{*}' embedded in the string act -as wildcards\index{master label files!wildcards} such that `\texttt{?}' matches any single character and -`\texttt{*}' matches 0 or more characters. -A string is any sequence of characters enclosed in double quotes. - -\subsection{MLF Search} - -The names of label files in \HTK\ are invariably reconstructed from an -existing data file name and this means that the -file names used to access label files can be partial or full path names in which -the path has been constructed either from the path of the corresponding -data file or by direct specification via the {\tt -L} option. These -path names are retained in the MLF search\index{master label files!search} which proceeds as follows. -The given label file specification \texttt{../d3/d2/d1/name} is matched -against each pattern in the MLF. If a pattern matches, then either the -named subdirectory is searched or an immediate definition is loaded. -Pattern matching continues in this way until a definition is found. If -no pattern matches\index{master label files!pattern matching} then an attempt is made to open \texttt{../d3/d2/d1/name} -directly. If this fails an error is reported. - -The search of a sub-directory\index{master label files!sub-directory search} proceeds as follows. In simple search -mode indicated by \texttt{->}, the file \texttt{name} must occur directly in the -sub-directory. In full search mode indicated by \texttt{=>}, the files -\texttt{name, d1/name, d2/d1/name}, etc. are searched for in that order. -This full search allows a hierarchy of label files to be constructed -which mirrors a hierarchy of data files (see Example 4 below). - -Hashing is performed when the label file specification is either -a full path name or in the form \texttt{*/file} so in these cases -the search is very fast. Any other use of metacharacters invokes -a linear search with a full and relatively slow pattern match at each step. -Note that all tools which generate label files have a \texttt{-l} -option which is used to define the output directory in which to store -individual label files. When outputting master label files, the \texttt{-l} -option can be used to define the path in the output label file specifications. -In particular, setting the option \texttt{-l '*'} causes -the form \texttt{*/file} to be generated.\index{master label files!patterns} - -\subsection{MLF Examples} - -\index{master label files!examples} -\begin{enumerate} -\item -Suppose a data set consisted of two training data files with -corresponding label files: -\newline -\texttt{a.lab} contains -\begin{verbatim} - 000000 590000 sil - 600000 2090000 a - 2100000 4500000 sil -\end{verbatim} -\texttt{b.lab} contains -\begin{verbatim} - 000000 990000 sil - 1000000 3090000 b - 3100000 4200000 sil -\end{verbatim} -Then the above two individual label files could be replaced by a single MLF -\begin{verbatim} - #!MLF!# - "*/a.lab" - 000000 590000 sil - 600000 2090000 a - 2100000 4500000 sil - . - "*/b.lab" - 000000 990000 sil - 1000000 3090000 b - 3100000 4200000 sil - . -\end{verbatim} - -\item -A digit data base contains training tokens \texttt{one.1.wav, one.2.wav, one.3.wav, ..., -two.1.wav, two.2.wav, two.3.wav, ...}, etc. Label files are required containing -just the name of the model so that \HTK\ tools such as \htool{HERest} can be used. -If MLFs are not used, individual label files are needed. For example, -the individual label files \texttt{one.1.lab, one.2.lab, one.3.lab, ....} would be -needed -to identify instances of ``one'' even though each file contains the same entry, just -\begin{verbatim} - one -\end{verbatim} -Using an MLF containing -\begin{verbatim} - #!MLF!# - "*/one.*.lab" - one - . - "*/two.*.lab" - two - . - "*/three.*.lab" - three - . - -\end{verbatim} -avoids the need for many duplicate label files. - -\item -A training database \texttt{/db} contains directories \texttt{dr1, dr2, ..., dr8}. -Each directory contains a subdirectory called \texttt{labs} holding the -label files for the data files in that directory. The following -MLF would allow them to be found -\begin{verbatim} - #!MLF!# - "*" -> "/db/dr1/labs" - "*" -> "/db/dr2/labs" - ... - "*" -> "/db/dr7/labs" - "*" -> "/db/dr8/labs" -\end{verbatim} -Each attempt to open a label file will result in a linear search -through \texttt{dr1} to \texttt{dr8} to find that file. If the sub-directory name -is embedded into the label file name, then this searching can -be avoided. For example, if the label files in directory \texttt{drx} had -the form \texttt{drx\_xxxx.lab}, then the MLF would be written as -\begin{verbatim} - #!MLF!# - "*/dr1_*" -> "/db/dr1/labs" - "*/dr2_*" -> "/db/dr2/labs" - ... - "*/dr7_*" -> "/db/dr7/labs" - "*/dr8_*" -> "/db/dr8/labs" -\end{verbatim} - -\item -A training database is organised as a hierarchy where -\texttt{/disk1/db/dr1/sp2/u3.wav} is the data file for the third -repetition from speaker 2 in dialect region \texttt{dr1} -(see Figure~\ref{f:dbhier}). - -\centrefig{dbhier}{80}{Database Hierarchy: Data [Left]; Labels [Right].} - -Suppose -that a similar hierarchy of label files was constructed on -\texttt{disk3}. -These label files could be found by any \HTK\ tool by using an -MLF containing just -\begin{verbatim} - #!MLF!# - "*" => "/disk3" -\end{verbatim} -If for some reason all of the \texttt{drN} directories were -renamed \texttt{ldrN} in the label hierarchy, then this could be -handled by an MLF file containing -\begin{verbatim} - #!MLF!# - "*/dr1/*" => "/disk3/ldr1" - "*/dr2/*" => "/disk3/ldr2" - "*/dr3/*" => "/disk3/ldr3" - etc. -\end{verbatim} -\end{enumerate} -These few examples should illustrate the flexibility and power of MLF files. -It should noted, however, that when generating label names automatically from data file names, HTK sometimes discards path details. For example, during recognition, if the data files /disk1/dr2/sx43.wav and /disk2/dr4/sx43.wav are being recognised, and a single directory is specified for the output label files, then recognition results for both files will be written to a file called sx43.lab, and the latter occurrence will overwrite the former. - - -\mysect{Editing Label Files}{edlab} - -\HTK\ training tools typically expect the labels used in -transcription files to correspond\index{labels!editing} -directly to the names of the HMMs chosen to build an application. Hence, -the label files supplied with a speech database will often need -modifying. For example, the original transcriptions attached to a database -might be at a fine level of acoustic detail. Groups of labels corresponding -to a sequence of acoustic events (e.g. \texttt{pcl p'}) might need converting -to some simpler form (e.g. \texttt{p}) which is more suitable for being -represented by a HMM. As a second example, current high performance speech -recognisers use a large number of context dependent models to allow more -accurate acoustic modelling. For this case, the labels in the transcription -must be converted to show the required contexts explicitly. - -\HTK\ supplies a tool called \htool{HLEd} for rapidly and efficiently converting -label files. The \htool{HLEd} command invocation specifies the names of the files -to be converted and the name of a script file holding the actual -\htool{HLEd}\index{hled@\htool{HLEd}} commands. For example, the command -\begin{verbatim} - HLEd edfile.led l1 l2 l3 -\end{verbatim} -would apply the edit commands stored in the file \texttt{edfile.led} -to each of the label files \texttt{l1}, \texttt{l2} and \texttt{l3}. More commonly -the new label files are stored in a new directory to avoid overwriting -the originals. This is done by using the -\texttt{-l} option. For example, -\begin{verbatim} - HLEd -l newlabs edfile.led l1 l2 l3 -\end{verbatim} -would have the same effect as previously except that the new -label files would be stored in the directory \texttt{newlabs}. - -Each edit command stored in an edit file\index{edit file} is identified by -a mnemonic consisting of two letters\footnote{ -Some command names have single -letter\index{edit commands!single letter} alternatives for compatibility with -earlier versions of \HTK.} -and must be stored on a separate -line. The supplied edit commands can be divided into two groups. -The first group consist of commands which perform selective -changes to specific labels and the second group contains commands -which perform global transformations. -The reference section defines all of these -commands. Here a few examples will be given to illustrate the -use of \htool{HLEd}. - -As a first example, when using the -TIMIT database\index{TIMIT database}, -the original 61 phoneme symbol set is often mapped -into a simpler 48 phoneme symbol set. The aim of this mapping -is to delete all glottal stops, replace all closures preceding a voiced stop -by a generic -voiced closure (\texttt{vcl}), all closures preceding an unvoiced stop -by a generic -unvoiced closure (\texttt{cl}) and the different types of silence to -a single generic silence (\texttt{sil}). A \htool{HLEd} script to -do this might be -\begin{verbatim} - # Map 61 Phone Timit Set -> 48 Phones - SO - DE q - RE cl pcl tcl kcl qcl - RE vcl bcl dcl gcl - RE sil h# #h pau -\end{verbatim} -The first line is a comment indicated by the initial hash character. -The command on the second line is the {\it Sort} command -\texttt{SO}\index{so@\texttt{SO} command}.\index{labels!sorting} -This is an example of a global command. -Its effect is to sort all the labels into time order. -Normally the labels in a transcription will already be in time order -but some speech editors simply output labels in the order that the -transcriber marked them. Since this would confuse the re-estimation -tools, it is good practice to explicitly sort all label files in this -way. - -The command on the third line is the {\it Delete} command -\texttt{DE}\index{de@\texttt{DE} command}. -This is -a selective command. Its\index{labels!deleting} -effect is to delete all of the labels -listed on the rest of the command line, wherever they occur. -In this case, there is -just one label listed for deletion, the -glottal stop \texttt{q}. -Hence, the overall effect of this command will be to delete all occurrences -of the \texttt{q} label in the edited label files. - -The remaining commands in this example script are {\it Replace} commands -\texttt{RE}. The effect of a Replace command is to substitute the first -label following the \texttt{RE}\index{re@\texttt{RE} command} for every occurrence of the remaining labels -on that line.\index{labels!replacing} Thus, for example, the -command on the third line causes all occurrences of the labels \texttt{pcl}, -\texttt{tcl}, \texttt{kcl} or \texttt{qcl} to be replaced by the label \texttt{cl}. - -To illustrate the overall effect of the above \htool{HLEd} command script on -a complete label file, the following \texttt{TIMIT} format label file -\begin{verbatim} - 0000 2241 h# - 2241 2715 w - 2715 4360 ow - 4360 5478 bcl - 5478 5643 b - 5643 6360 iy - 6360 7269 tcl - 7269 8313 t - 8313 11400 ay - 11400 12950 dcl - 12950 14360 dh - 14360 14640 h# -\end{verbatim} -would be converted by the above script to the following -\begin{verbatim} - 0 1400625 sil - 1400625 1696875 w - 1696875 2725000 ow - 2725000 3423750 vcl - 3423750 3526875 b - 3526875 3975000 iy - 3975000 4543125 cl - 4543125 5195625 t - 5195625 7125000 ay - 7125000 8093750 vcl - 8093750 8975000 dh - 8975000 9150000 sil -\end{verbatim} -Notice that label boundaries in TIMIT format are given in terms of sample -numbers (16kHz sample rate), whereas the edited output file is in -\HTK\ format in which all times are in absolute 100ns units. - -As well as the Replace command, there is -also a {\it Merge} command \texttt{ME}\index{me@\texttt{ME} command}. This command is used -to replace a sequence of labels by a single label. \index{labels!merging} -For example, the following commands would merge the closure and release -labels in the previous TIMIT transcription into single labels -\begin{verbatim} - ME b bcl b - ME d dcl dh - ME t tcl t -\end{verbatim} -As shown by this example, the label used for the merged sequence can be -the same as occurs in the original but some care is needed since -\htool{HLEd} commands are normally applied in sequence. Thus, a command -on line $n$ is applied to the label sequence that remains after the -commands on lines 1 to $n-1$ have been applied. - -There is one exception to the above rule of sequential edit command -application. The {\it Change} command \index{labels!changing} -\texttt{CH}\index{ch@\texttt{CH} command} provides for context -sensitive replacement. However, when a sequence of Change commands occur -in a script, the sequence is applied as a block so that the contexts -which apply for each command are those that existed just prior to the -block being executed. The Change command takes 4 arguments \texttt{X A Y -B} such that every occurrence of label \texttt{Y} in the context of -\texttt{A \_ B} is changed to the label \texttt{X}. The contexts -\texttt{A} and \texttt{B} refer to sets of labels and are defined by -separate \textit{Define Context} commands \texttt{DC}\index{dc@\texttt{DC} command}. -The \texttt{CH} and -\texttt{DC} commands are primarily used for creating context sensitive -labels. For example, suppose that a set of context-dependent phoneme -models are needed for TIMIT. Rather than treat all possible contexts -separately and build separate triphones for each (see below), the -possible contexts will be grouped into just 5 broad classes: C -(consonant), V (vowel), N (nasal), L (liquid) and S (silence). The goal -then is to translate a label sequence such as \texttt{sil b ah t iy n ...} -into \texttt{sil+C S-b+V C-ah+C V-t+V C-iy+N V-n+ ...} where the -\texttt{-} and \texttt{+} symbols within a label are recognised by -\HTK\ as defining the left and right context, respectively. To perform this -transformation, it is necessary to firstly use \texttt{DC} commands to -define the 5 contexts, that is -\begin{verbatim} - DC V iy ah ae eh ix ... - DC C t k d k g dh ... - DC L l r w j ... - DC N n m ng ... - DC S h# #h epi ... -\end{verbatim} -Having defined the required contexts, a change command must be -written for each context dependent triphone, that is -\begin{verbatim} - CH V-ah+V V ah V - CH V-ah+C V ah C - CH V-ah+N V ah N - CH V-ah+L V ah L - ... - etc -\end{verbatim} -This script will, of course, be rather long (25 $\times$ number of -phonemes) but it can easily be generated automatically -by a simple program or shell script. - -The previous example shows how to transform a set of phonemes into a -context dependent set in which the contexts are user-defined. -\index{labels!context dependent} For -convenience, \htool{HLEd} provides a set of global transformation commands -for converting phonemic transcriptions to conventional left or right -biphones, or full triphones. For example, a script containing the single -{\it Triphone Conversion} command \texttt{TC}\index{tc@\texttt{TC} command} will convert phoneme -files to regular -triphones. As an illustration, applying the \texttt{TC} command to a file -containing the sequence \texttt{sil b ah t iy n ...} would give the -transformed sequence -\texttt{sil+b sil-b+ah b-ah+t ah-t+iy t-iy+n iy-n+ ...}. Notice that the -first and last phonemes in the sequence cannot be transformed in the -normal way. Hence, the left-most and right-most contexts of these -start and end phonemes can be specified -explicitly as arguments to the \texttt{TC} commands if required. For -example, the command \texttt{TC \# \#} would give the sequence -\texttt{\#-sil+b sil-b+ah b-ah+t ah-t+iy t-iy+n iy-n+ ... +\#}. -Also, the contexts at pauses and word boundaries can be blocked -using the -\texttt{WB} command. For example, if \texttt{WB sp} was executed, the -effect of a subsequent \texttt{TC} command on the sequence -\texttt{sil b ah t sp iy n ...} would be to give the sequence -\texttt{sil+b sil-b+ah b-ah+t ah-t sp iy+n iy-n+ ...}, -where \texttt{sp} represents a short pause. Conversely, the \texttt{NB} -command can be used to ignore a label as far as context is concerned. For example, -if \texttt{NB sp} was executed, the -effect of a subsequent \texttt{TC} command on the sequence -\texttt{sil b ah t sp iy n ...} would be to give the sequence -\texttt{sil+b sil-b+ah b-ah+t ah-t+iy sp t-iy+n iy-n+ ...}. - -When processing \HTK\ format label files with multiple levels, only the -level 1 (i.e. left-most) labels are affected.\index{labels!moving level} To process a higher -level, the \textit{Move Level} command \texttt{ML}\index{ml@\texttt{ML} command} should be used. -For example, in the script -\begin{verbatim} - ML 2 - RE one 1 - RE two 2 - ... -\end{verbatim} -the Replace commands are applied to level 2 which is the first level -above the basic level. The command \texttt{ML 1} returns to the -base level. A complete level can be deleted by the -\textit{Delete Level} command \texttt{DL}. This command can -be given a numeric argument to delete a specific level or -with no argument, the current level is deleted. -Multiple levels can also be split into single level alternatives -by using the \textit{Split Level} command \texttt{SL}. - -When processing \HTK\ format files with multiple alternatives, -each alternative is processed as though it were a separate file. - -Remember also that in addition to the explicit \htool{HLEd} commands, -levels and alternatives can be filtered on input by setting the -configuration variables \texttt{TRANSLEV}\index{translev@\texttt{TRANSLEV}} and -\texttt{TRANSALT}\index{transalt@\texttt{TRANSALT}} -(see section~\ref{s:labstruct}). - -Finally, it should be noted that most \HTK\ tools require -all HMMs used in a system to be defined in\index{HMM lists} -a {\it HMM List}. \htool{HLEd} can be made to automatically generate such -a list as a by-product of editing the label files by using the -\texttt{-n} option. For example, the following command would apply -the script \texttt{timit.led} to all files in the directory \texttt{tlabs}, -write the converted files to the directory \texttt{hlabs} -and also write out a list of all new labels in the edited -files to \texttt{tlist}. -\begin{verbatim} - HLEd -n tlist -l hlabs -G TIMIT timit.led tlabs/* -\end{verbatim} -Notice here that the \texttt{-G} option is used to inform \htool{HLEd} -that the format of the source files is \texttt{TIMIT}. This could also -be indicated by setting the configuration variable -\texttt{SOURCELABEL}\index{sourcelabel@\texttt{SOURCELABEL}}. - -\mysect{Summary}{labelsum} - -Table~\href{t:labelcparms} -lists all of the -configuration parameters recognised by \htool{HLabel} -along with a brief description. A missing module name means -that it is recognised by -more than one module. - -\begin{center} -\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{6.4cm}|} \hline -Module & Name & Description \\ \hline -\htool{HLabel} & \texttt{LABELSQUOTE} & Specify label quote character \\ -\htool{HLabel} & \texttt{SOURCELABEL} & Source label format \\ -\htool{HLabel} & \texttt{SOURCERATE} & Sample period for SCRIBE format \\ -\htool{HLabel} & \texttt{STRIPTRIPHONES} & Remove triphone contexts on input \\ -\htool{HLabel} & \texttt{TARGETLABEL} & Target label format\\ -\htool{HLabel} & \texttt{TRANSALT} & Filter alternatives on input \\ -\htool{HLabel} & \texttt{TRANSLEV} & Filter levels on input \\ -\htool{HLabel} & \texttt{V1COMPAT} & Version 1.5 compatibility mode \\ - & \texttt{TRACE} & trace control (default=0) \\ \hline -\end{tabular} -\tabcap{labelcparms}{Configuration Parameters used with Labels} -\end{center} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/latex2html-init b/HTKBook/latex2html-init deleted file mode 100644 index 0a01ff7..0000000 --- a/HTKBook/latex2html-init +++ /dev/null @@ -1 +0,0 @@ -$ACCENT_IMAGES=textrm diff --git a/HTKBook/models.tex b/HTKBook/models.tex deleted file mode 100644 index a9e85d9..0000000 --- a/HTKBook/models.tex +++ /dev/null @@ -1,1543 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{HMM Definition Files}{HMMDefs} - -\sidepic{Tool.model}{80}{} -The principle function of \HTK\ is to manipulate sets of hidden -Markov models (HMMs). The definition of a HMM must specify the -model topology, the transition parameters and the output -distribution parameters. The HMM observation vectors can be -divided into multiple independent data streams and each stream can -have its own weight. In addition, a HMM can have ancillary -information such as duration parameters. -\HTK\ supports both continuous mixture densities and discrete -distributions. \HTK\ also provides a generalised tying mechanism which -allows parameters to be shared within and between models. - -\index{HMM!definitions} -In order to encompass this rich variety of HMM types within -a single framework, \HTK\ uses a formal language -to define HMMs. The interpretation of this language is handled -by the library module \htool{HModel} which is responsible for converting -between the external and internal representations of HMMs. In addition, -it provides all the basic probability function calculations. -A second module \htool{HUtil} provides various additional facilities for -manipulating HMMs once they have been loaded into memory. - -The purpose of this chapter is to describe -the HMM definition language in some detail. The chapter begins by -describing how to write -individual HMM definitions. \HTK\ macros are -then explained and the mechanisms for defining a complete -model set are presented. The various flavours of -HMM are then described and the use of binary files discussed. -Finally, a formal description of the \HTK\ HMM definition -language is given. - -As will be seen, the definition of a large -HMM system can involve considerable complexity. However, in -practice, HMM systems are built incremently. The usual -starting point is a single HMM definition which is then -repeatedly cloned and refined using the various \HTK\ tools -(in particular, \htool{HERest} and \htool{HHEd}). -Hence, in practice, the \HTK\ user rarely has to -generate complex HMM definition files directly. - -\mysect{The HMM Parameters}{HMMparm} - -A HMM consists of a number of states. Each state $j$ has an associated -observation probability distribution $b_{j}(\bm{o}_t)$ which -determines the probability of generating observation $\bm{o}_t$ at -time $t$ and each pair of states $i$ and $j$ has an associated -transition probability $a_{ij}$. In \HTK\, the entry state $1$ and -the exit state $N$ of an $N$ state HMM are non-emitting. - -\sidefig{hmm1}{70}{Simple Left-Right HMM}{-4}{ -Fig.~\href{f:hmm1} shows a simple left-right HMM with five states in -total. Three of these are emitting states and have output probability -distributions associated with them. The transition matrix for -this model will have 5 rows and 5 columns. Each row will sum to one -except for the final row which is always all zero since no -transitions are allowed out of the final state. - -\HTK\ is principally concerned with continuous\index{HMM!parameters} -density models in which each observation probability distribution -is represented by a mixture Gaussian density. In this case, -for state $j$ -the probability $b_{j}(\bm{o}_t)$ of generating -observation $\bm{o}_t$ is given by -} - -\hequation{ - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left[ - \sum_{m=1}^{M_{js}} c_{jsm} {\cal N}(\bm{o}_{st}; - \bm{\mu}_{jsm}, \bm{\Sigma}_{jsm}) - \right]^{\gamma_s} -}{cdpdf} -where $M_{js}$ is the number of mixture components\index{mixture component} -in state $j$ for stream $s$, -$c_{jsm}$ is the weight of the $m$'th component and -${\cal N}(\cdot; \bm{\mu}, \bm{\Sigma})$ is a multivariate Gaussian -with mean vector\index{mean vector} $\bm{\mu}$ and -covariance matrix\index{covariance matrix} $\bm{\Sigma}$, that -is\index{output probability!continuous case} -\hequation{ -{\cal N}(\bm{o}; \bm{\mu}, \bm{\Sigma}) = - \frac{1}{\sqrt{(2 \pi)^n | \bm{\Sigma} |}} - e^{- \frac{1}{2}(\bm{o}-\bm{\mu})^\transpose \bm{\Sigma}^{-1}(\bm{o}-\bm{\mu})} -}{gnorm} -where $n$ is the dimensionality of $\bm{o}$. The exponent $\gamma_s$ is -a stream weight\index{stream weight} and its -default value is one. Other values can be -used to emphasise particular streams, however, none of the standard -\HTK\ tools manipulate it. - -\HTK\ also supports discrete probability -distributions\index{discrete probability} in which -case \index{output probability!discrete case} -\hequation{ - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left\{ - P_{js}[v_s(\bm{o}_{st})] - \right\}^{\gamma_s} -}{ddpdf} -where $v_s(\bm{o}_{st})$ is the output of the vector -quantiser for stream $s$ -given input vector $\bm{o}_{st}$ and $P_{js}[v]$ is the -probability of state $j$ generating symbol $v$ in stream $s$. - -In addition to the above, any model or state can have an -associated vector of duration parameters -\index{duration parameters} $\{d_k\}$\footnote{ -No current \HTK\ tool can estimate or use these. -}. -Also, -it is necessary to specify the kind of the observation -vectors, and the width of the observation vector in each stream. -Thus, the total information needed to define a single HMM is -as follows - \begin{itemize} - \item type of observation vector - \item number and width of each data stream - \item optional model duration parameter vector - \item number of states - \item for each emitting state and each stream - \begin{itemize} - \item mixture component weights or discrete probabilities - \item if continuous density, then means and covariances - \item optional stream weight vector - \item optional duration parameter vector - \end{itemize} - \item transition matrix -\end{itemize} -The following sections explain how these are defined. - -\mysect{Basic HMM Definitions}{OneHMM} - -Some \HTK\ tools require a single HMM to be defined. For example, the -isolated-unit re-estimation tool \htool{HRest} would be invoked as -\begin{verbatim} - HRest hmmdef s1 s2 s3 .... -\end{verbatim} - -\noindent -This would cause the model defined in the file \texttt{hmmdef} -to be input and its parameters re-estimated using the speech data -files \texttt{s1}, \texttt{s2}, etc.\index{HMM definition!basic form} - -\sideprog{hmm1def}{60}{Definition for Simple L-R HMM}{ -\hmmc{h}{hmm1} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 0.2 0.1 0.1 0.9 \\ -\>\> \hmkw{Variance} 4 \\ -\>\>\> 1.0 1.0 1.0 1.0 \\ -\> \hmkw{State} 3 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 0.4 0.9 0.2 0.1 \\ -\>\> \hmkw{Variance} 4 \\ -\>\>\> 1.0 2.0 2.0 0.5 \\ -\> \hmkw{State} 4 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 1.2 3.1 0.5 0.9 \\ -\>\> \hmkw{Variance} 4 \\ -\>\>\> 5.0 5.0 5.0 5.0 \\ -\> \hmkw{TransP} 5 \\ -\>\> 0.0 0.5 0.5 0.0 0.0 \\ -\>\> 0.0 0.4 0.4 0.2 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 0.0 \\ -\>\> 0.0 0.0 0.0 0.7 0.3 \\ -\>\> 0.0 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -}{} -HMM definition files consist of a sequence of symbols representing -the elements of a simple language. These symbols are mainly -keywords written within angle brackets and integer and -floating point numbers. -The full \HTK\ definition language is presented -more formally later in section~\ref{s:hmmdef}. For now, the -main features of the language will be described by some -examples.\index{HMM definition!symbols in} - -Fig~\href{f:hmm1def} shows a HMM definition corresponding to the simple -left-right HMM illustrated in Fig~\href{f:hmm1}. It is a continuous density -HMM with 5 states in total, 3 of which are emitting. The first symbol in the -file \hmmt{h} indicates that the following string is the name of a macro of -type \textsf{h} which means that it is a HMM definition (macros are explained -in detail later). Thus, this definition describes a HMM called ``hmm1''. -Note that HMM names should be composed of alphanumeric characters only and must -not consist solely of numbers. The HMM definition itself is bracketed by the -symbols \hmkw{BeginHMM}\index{beginhmm@$<$BeginHMM$>$} and -\hmkw{EndHMM}\index{endhmm@$<$EndHMM$>$}.\index{HMM name} - -The first -line of the definition proper specifies\index{HMM definition!global features} -the \textit{global} features of the HMM. In any system -consisting of many HMMs, these -features will be the same for all of them. -In this case, the global definitions indicate that -the observation vectors have 4 components -(\hmkw{VecSize}\index{vecsize@$<$VecSize$>$} 4) and that they denote -MFCC coefficients\index{MFCC coefficients} (\hmkw{MFCC}). - -The next line specifies the number of states in the HMM. There -then follows a definition for each emitting state $j$, each of which -has a single mean -vector $\bm{\mu}_j$ introduced by the keyword \hmkw{Mean} -\index{mean@$<$Mean$>$} -and a diagonal variance vector $\bm{\Sigma}_j$ -introduced by the keyword \hmkw{Variance}. -\index{variance@$<$Variance$>$} -The definition ends with the transition matrix $\{a_{ij}\}$ -introduced by the keyword -\hmkw{TransP}\index{transp@$<$TransP$>$}. -\index{HMM definition!mean vector} -\index{HMM definition!covariance matrix} -\index{HMM definition!transition matrix} - -Notice that -the dimension of each vector or matrix is specified -explicitly before listing the component values. These -dimensions must be consistent with the corresponding observation -width (in the case of output distribution parameters) or -number of states (in the case of transition matrices). -Although in this example they could be inferred, -\HTK\ requires that -they are included explicitly since, as will -be described shortly, they can be detached from the HMM definition -and stored elsewhere as a macro.\index{vector dimensions}\index{matrix dimensions} - - -The definition for \textsf{hmm1} makes use of many defaults. -In particular, there is no definition for the number of -input data streams or for the number of -mixture components per output distribution. Hence, in both -cases, a default of 1 is assumed. - -Fig~\href{f:hmm2def} shows a HMM definition in which -the emitting states are 2 component mixture Gaussians. -The number of mixture components in each state $j$ is indicated by the keyword -\hmkw{NumMixes}\index{nummixes@$<$NumMixes$>$} and each mixture component -is prefixed by the keyword \hmkw{Mixture}\index{mixture@$<$Mixture$>$} followed by the -component index $m$ and component weight $c_{jm}$. Note -that there is no requirement for the number of mixture components -to be the same in each distribution.\index{HMM definition!mixture components} - - -State definitions and the mixture components within them may be -listed in any order. When a HMM definition is loaded, a check is made -that all the required components have been defined. In addition, -checks are made that the mixture component weights and each row -of the transition matrix sum to one. -If very rapid loading is required, this consistency checking can be inhibited -by setting the Boolean configuration variable -\texttt{CHKHMMDEFS}\index{chkhmmdefs@\texttt{CHKHMMDEFS}} to -false. - -As an alternative to diagonal variance vectors, a Gaussian distribution -can have a full rank covariance\index{full rank covariance} matrix. An example of -this is shown in the definition for \textsf{hmm3} shown in -Fig~\href{f:hmm3def}. Since covariance matrices are symmetric, -they are stored in upper triangular form\index{upper triangular form} -i.e. each row of the matrix -starts at the diagonal element\footnote{ -Covariance matrices are actually stored internally in lower triangular -form}. Also, covariance matrices are stored -in their inverse form i.e.\ HMM definitions contain $\bm{\Sigma}^{-1}$ -rather than $\bm{\Sigma}$. To reflect this, the keyword chosen to -introduce a full covariance matrix is \hmkw{InvCovar}\index{invcovar@$<$InvCovar$>$}. - - -\sideprog{hmm2def}{60}{Simple Mixture Gaussian HMM}{ -\hmmc{h}{hmm2} \\ -\hmkw{BeginHMM} \\ -\>\hmkw{VecSize} 4 \hmkw{MFCC} \\ -\>\hmkw{NumStates} 4 \\ -\>\hmkw{State} 2 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.4 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.3 0.2 0.2 1.0 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\>\> \hmkw{Mixture} 2 0.6 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.0 0.0 0.8 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\>\hmkw{State} 3 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.7 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.2 0.6 1.4 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\>\> \hmkw{Mixture} 2 0.3 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 2.1 0.0 1.0 1.8 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\>\> 1.0 1.0 1.0 1.0 \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.5 0.5 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -}{} - -Notice that only the second -state has a full covariance Gaussian component. The first state -has a mixture of two diagonal variance Gaussian components. Again, this -illustrates the flexibility of HMM definition in \HTK. If required -the structure of every -Gaussian can be individually configured. - -Another possible way to store covariance information is in the form -of the Choleski decomposition\index{Choleski decomposition} $L$ of the -inverse covariance matrix -i.e. $\bm{\Sigma}^{-1} = LL^\transpose$. -Again this is stored externally in upper triangular form so $L^\transpose$ is -actually stored. It is distinguished from the normal inverse covariance -matrix by using the keyword \hmkw{LLTCovar}\index{lltcovar@$<$LLTCovar$>$} -in place of \hmkw{InvCovar}\footnote{ -The Choleski storage format is not used by default in \HTK\ Version 2}. - - -The definition for \textsf{hmm3} also illustrates another -macro type, that is, \hmmt{o}. This macro is used as an alternative -way of specifying global options and, in fact, it is the format used -by \HTK\ tools when they write out a HMM definition. It is provided so that global -options can be specified ahead of any other HMM parameters. As will -be seen later, this is useful when using many types of macro. -\index{HMM definition!global options macro} - -As noted earlier, the observation vectors used to represent -the speech signal can be divided into two or more statistically -independent data streams. This corresponds to the splitting-up -of the input speech vectors as described in section~\ref{s:streams}. -In HMM definitions, the use of multiple data -streams must be indicated by specifying the number of streams and -the width (i.e\ dimension) of each stream as a global -option. This is done using the keyword \hmkw{StreamInfo} -\index{streaminfo@$<$StreamInfo$>$} followed -by the number of streams, and then a sequence of numbers indicating -the width of each stream. The sum of these -stream widths must equal the original vector size as indicated -by the \hmkw{VecSize} keyword. - -An example of a HMM definition for multiple data -streams\index{HMM definition!multiple data streams} -is \textsf{hmm4} shown in -Fig~\href{f:hmm4def}. This HMM is intended to model 2 distinct -streams, the first has 3 components and the second has 1. -This is indicated by the global option \hmkw{StreamInfo} 2 3 1. -The definition of each state output distribution now -includes means and variances for each individual stream. - -Thus, in Fig~\href{f:hmm4def}, each state is subdivided into -2 streams using the \hmkw{Stream}\index{stream@$<$Stream$>$} keyword followed by the stream -number. Note also, that each individual stream can be weighted. -In state 2 of \textsf{hmm4}, the vector following the -\hmkw{SWeights}\index{sweights@$<$SWeights$>$} keyword indicates that -stream 1 has a weight of 0.9 whereas -stream 2 has a weight of 1.1. There is no stream weight -\index{HMM definition! stream weight} vector -in state 3 and hence the default weight of 1.0 will be -assigned to each stream. - -\vspace{1.0cm} - - -\putprog{hmm3def}{100}{HMM with Full Covariance}{ -\hmmt{o} \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\hmmc{h}{hmm3} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.4 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\> \> 0.3 0.2 0.2 1.0 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\>\> \> 1.0 1.0 1.0 1.0 \\ -\>\>\> \hmkw{Mixture} 2 0.6 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.0 0.0 0.8 \\ -\>\>\> \hmkw{Variance} 4 \\ -\>\> \>\> 1.0 1.0 1.0 1.0 \\ -\> \hmkw{State} 3 \hmkw{NumMixes} 1 \\ -\>\> \hmkw{Mean} 4 \\ -\>\>\> 0.1 \> 0.2 \> 0.6 \> 1.4 \\ -\>\> \hmkw{InvCovar} 4 \\ -\>\>\> 1.0 \> 0.1 \> 0.0 \> 0.0\\ -\>\>\> \> 1.0 \> 0.2 \> 0.0\\ -\>\>\> \>\> 1.0 \> 0.1\\ -\>\>\> \>\>\> 1.0 \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.5 0.5 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - -No \HTK\ tools are supplied for estimating optimal stream -weight\index{HMM definition!stream weight} -values. Hence, they must either be set manually or derived -from some outside source. However, once set, they are used in -the calculation of output probabilities as specified in -equations~\ref{e:cdpdf} and \ref{e:ddpdf}, and hence they will -affect the operation of both the training and recognition tools. - -\putprog{hmm4def}{100}{HMM with 2 Data Streams}{ -\hmmt{o} \> \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\> \hmkw{StreamInfo} 2 3 1 \\ -\hmmc{h}{hmm4} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \\ -\>\> \hmkw{SWeights} 2 0.9 1.1 \\ -\>\> \hmkw{Stream} 1 \\ -\>\>\> \hmkw{Mean} 3 \\ -\>\>\>\> 0.2 0.1 0.1 \\ -\>\>\> \hmkw{Variance} 3 \\ -\>\>\>\> 1.0 1.0 1.0 \\ -\>\> \hmkw{Stream} 2 \\ -\>\>\> \hmkw{Mean} 1 0.0 \\ -\>\>\> \hmkw{Variance} 1 4.0 \\ -\> \hmkw{State} 3 \\ -\>\> \hmkw{Stream} 1 \\ -\>\>\> \hmkw{Mean} 3 \\ -\>\>\>\> 0.3 0.2 0.0 \\ -\>\>\> \hmkw{Variance} 3 \\ -\>\>\>\> 1.0 1.0 1.0 \\ -\>\> \hmkw{Stream} 2 \\ -\>\>\> \hmkw{Mean} 1 0.5 \\ -\>\>\> \hmkw{Variance} 1 3.0 \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.6 0.4 0.0 \\ -\>\> 0.0 0.0 0.4 0.6 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - -\mysect{Macro Definitions}{HMMmac} - -So far, basic model definitions have been described in which -all of the information required to define a HMM has been -given directly between the \hmkw{BeginHMM} and \hmkw{EndHMM} -keywords. As an alternative, \HTK\ allows the internal -parts of a definition to be written as separate units, possibly -in several different files, and then referenced by name wherever they -are needed. Such definitions are called \textit{macros}. - - -\sideprog{mac5def}{50}{Simple Macro Definitions}{ -\hmmt{o} \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\\ -\hmmc{v}{var} \\ -\> \hmkw{Variance} 4 \\ -\>\> 1.0 1.0 1.0 1.0 \\ -}{} - -HMM (\hmmt{h}) and global option macros -\index{macros}\index{HMM definition!macros} (\hmmt{o}) -have already been described. In fact, these are both rather -special cases since neither is ever referenced explicitly by -another definition. Indeed, the option macro is unusual in that -since it is global and must be unique, it has no name. -As an illustration of the use of macros, it may be observed -that the variance vectors in the HMM definition \textsf{hmm2} given -in Fig~\href{f:hmm2def} are all identical. If this was -intentional, then the variance vector could be defined as a macro -as illustrated in Fig~\href{f:mac5def}. - -A macro definition\index{macro definition} consists of a macro type indicator -followed by a user-defined macro name. In this case, the indicator is \hmmt{v} -and the name is \textsf{var}. Notice that a global options macro is included -before the definition for \textsf{var}. \HTK\ must know these before it can -process any other definitions thus the first macro file specified on the -command line of any \HTK\ tool must have the global options macro. Global -options macro need not be repeated at the head of every definition file, but it -does no harm to do so. - -\sideprog{hmm5def}{60}{A Definition Using Macros}{ - -\hmmc{h}{hmm5} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.4 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.3 0.2 0.2 1.0 \\ -\>\>\> \hmmc{v}{var} \\ -\>\> \hmkw{Mixture} 2 0.6 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.0 0.0 0.8 \\ -\>\>\> \hmmc{v}{var} \\ -\> \hmkw{State} 3 \hmkw{NumMixes} 2 \\ -\>\> \hmkw{Mixture} 1 0.7 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 0.1 0.2 0.6 1.4 \\ -\>\>\> \hmmc{v}{var} \\ -\>\> \hmkw{Mixture} 2 0.3 \\ -\>\>\> \hmkw{Mean} 4 \\ -\>\>\>\> 2.1 0.0 1.0 1.8 \\ -\>\>\> \hmmc{v}{var} \\ -\> \hmkw{TransP} 4 \\ -\>\> 0.0 1.0 0.0 0.0 \\ -\>\> 0.0 0.5 0.5 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 \\ -\>\> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} - -}{} - -Once defined, a macro is used simply by writing the type -indicator and name exactly as written in the definition. -Thus, for example, Fig~\href{f:hmm5def} defines a HMM called -\textsf{hmm5} which uses the variance macro \textsf{var} but -is otherwise identical to the earlier HMM definition \textsf{hmm2}. - -\index{macro substitution} -The definition for \textsf{hmm5} can be understood by substituting -the textual body of the \textsf{var} macro everywhere that it is -referenced. Textually this would make the definition for \textsf{hmm5} -identical to that for \textsf{hmm2}, and indeed, if input to a recogniser, -their effects would be similar. -However, as will become clear in later chapters, -the HMM definitions \textsf{hmm2} and \textsf{hmm5} differ -in two ways. Firstly, if -any attempt was made to re-estimate the parameters of \textsf{hmm2}, -the values of the variance vectors would almost certainly -diverge. However, -the variance vectors of \textsf{hmm5} are tied together and are -guaranteed to remain identical, even after re-estimation. Thus, -in general, the use of a macro enforces a \textit{tying} which -results in the corresponding parameters being shared amongst -all the HMM structures which reference that macro. -Secondly, when used in a recognition tool, the computation required -to decode using HMMs with tied parameters will often be reduced. -This is particularly true when higher level parts of a HMM definition -are tied such as whole states. - -There are many different macro types\index{HMM definition!macro types}\index{macros!types}. Some have special -meanings but the following correspond to -the various distinct points in the hierarchy of HMM parameters which -can be tied. -\begin{tabbing} -+ \= ++++ \= \kill -\> \hmmt{s} \> shared state distribution\\ -\> \hmmt{m} \> shared Gaussian mixture component \\ -\> \hmmt{u} \> shared mean vector \\ -\> \hmmt{v} \> shared diagonal variance vector \\ -\> \hmmt{i} \> shared inverse full covariance matrix \\ -\> \hmmt{c} \> shared Choleski $L^\transpose$ matrix \\ -\> \hmmt{x} \> shared arbitrary transform matrix\footnote{ -Transform matrices are not used by any of the supported HTK tools. -} - \\ -\> \hmmt{t} \> shared transition matrix \\ -\> \hmmt{d} \> shared duration parameters \\ -\> \hmmt{w} \> shared stream weight vector -\end{tabbing} - -Fig~\href{f:hierarch} illustrates these potential -tie points\index{parameter tie points} graphically for the case of continuous density HMMs. -In this figure, each solid black circle represents a potential -tie point, and the associated macro type is indicated alongside it. - -\centrefig{hierarch}{120}{HMM Hierarchy and Potential Tie Points} - -\noindent -The tie points for discrete HMMs are identical except that the -macro types \hmmt{m}, \hmmt{v}, \hmmt{c}, \hmmt{i} and \hmmt{u} are not -relevant and are therefore excluded. - -The macros with special meanings\index{macros!special meanings} are as follows -\begin{tabbing} -+ \= ++++ \= ++++++++++++++ \= ++++ \=\kill -\> \hmmt{l} \> logical HMM \> \hmmt{h} \> physical HMM \\ -\> \hmmt{o} \> global option values \> \hmmt{p} \> tied mixture \\ -\> \hmmt{r} \> regression class tree \> \hmmt{j} \> linear transform -\end{tabbing} -The distinction between logical and physical HMMs will be explained -in the next section and option macros have already been described. -The \hmmt{p} macro is used by the HMM editor \htool{HHEd} -for building tied mixture systems (see section~\ref{s:tmix}). -The \hmmt{l} or \hmmt{p} macros are special in the sense -that they are created implicitly in order to represent specific kinds -of parameter sharing and they never occur explicitly in HMM definitions. - -\mysect{HMM Sets}{hmmsets} - -The previous sections have described how a single HMM definition -can be specified. However, many \HTK\ tools require complete model -sets to be specified rather than just a single model.\index{HMM sets} -When this is the case, the individual HMMs which belong to the set -are listed in a file rather than being enumerated explicitly on -the command line. Thus, for example, a typical invocation of -the tool \htool{HERest} might be as follows -\begin{verbatim} - HERest ... -H mf1 -H mf2 ... hlist -\end{verbatim} -where each \texttt{-H} option names a macro file and \texttt{hlist} -contains a list of HMM names, one per line. For example, it might contain -\begin{verbatim} - ha - hb - hc -\end{verbatim} -In a case such as this, the macro files would normally\index{HMM lists} -contain definitions for the models \texttt{ha}, -\texttt{hb} and \texttt{hc}, along with any lower level macro -definitions that they might require. - -As an illustration, -Fig~\href{f:mac6def} and Fig~\href{f:hmm6def} give examples of -what the macro files \texttt{mf1} and \texttt{mf2} might contain. -The first file contains definitions for three states and a -transition matrix. The second file -contains definitions for the three HMMs. In this example, -each HMM shares the three -states and the common transition matrix. A HMM set such as -this is called a \textit{tied-state} system. - -The order in which macro files are listed on -the command line and the order of definition within -each file must ensure that all macro -definitions are defined before they are referenced. -Thus, macro files are typically organised such that all -low level structures come first followed by states and -transition matrices, with the actual HMM definitions coming last. - - -When the HMM list contains the name of a HMM for which no corresponding -macro has been defined, then an attempt is made to open a file with the -same name. This file is expected to contain a single definition -corresponding to the required HMM. Thus, the general mechanism for -loading a set of HMMs is as shown in Fig~\href{f:hsetdef}. In this -example, the HMM list \texttt{hlist} contains the names of five HMMs -of which -only three have been predefined via the macro files. Hence, the -remaining definitions are found in individual HMM definition files -\texttt{hd} and \texttt{he}. - -When a large number of HMMs must be loaded from individual files, it is -common to store them in a specific directory. Most \HTK\ tools allow -this directory to be specified explicitly using a command line option. -For example, in the command -\begin{verbatim} - HERest -d hdir ... hlist .... -\end{verbatim} -the definitions for the HMM listed in \texttt{hlist} will be -searched for in the subdirectory \texttt{hdir}. - - -After loading each HMM set,\index{tied-state} \htool{HModel} marks it as belonging -to one of the following categories (called the \textit{HSKind}\index{hskind@HSKind} -\begin{itemize} -\item \texttt{PLAINHS} -\item \texttt{SHAREDHS} -\item \texttt{TIEDHS} -\item \texttt{DISCRETEHS} -\end{itemize} - - -Any HMM set containing discrete output distributions is assigned\index{HMM sets!types} -to the \texttt{DISCRETEHS}\index{discretehs@\texttt{DISCRETEHS}} category (see section~\ref{s:dischmm}). -If all mixture components are tied, then it -is assigned to the \texttt{TIEDHS} category (see section~\ref{s:tmix}). -If it contains any shared states (\hmmt{s} macros) -or Gaussians (\hmmt{m} macros) then it is \texttt{SHAREDHS}\index{sharedhs@\texttt{SHAREDHS}}. -Otherwise, it is \texttt{PLAINHS}. The category assigned -to a HMM set determines which of several possible optimisations -the various \HTK\ tools can apply to it. As a check, the required kind of -a HMM set can also be set via the configuration variable \texttt{HMMSETKIND}. -For debugging purposes, this can also be used to re-categorise a -\texttt{SHAREDHS} system as \texttt{PLAINHS}\index{plainhs@\texttt{PLAINHS}}. - -As shown in Figure~\href{f:hierarch}, complete HMM -definitions can be tied as well as their individual parameters. However, -tying at the HMM level is defined in a different way. -HMM lists have so far\index{HMM tying} -been described as simply a list of model names. In fact, every HMM has two -names: a {\it logical} name and a {\it physical name}. The logical name -reflects the r\^{o}le of the model and the physical name is used to -identify the definition on disk. By default, the logical and physical names -are identical. HMM tying is implemented by letting several logically -distinct HMMs share the same physical definition. This is done by giving -an explicit physical name immediately after the logical name in a HMM -list\index{HMM lists}. - -\putprog{mac6def}{100}{File mf1: shared state and -transition matrix macros}{ - -\hmmt{o} \>\> \hmkw{VecSize} 4 \hmkw{MFCC} \\ -\hmmc{s}{stateA} \\ -\> \hmkw{Mean} 4 \\ -\>\> 0.2 0.1 0.1 0.9 \\ -\> \hmkw{Variance} 4 \\ -\>\> 1.0 1.0 1.0 1.0 \\ -\hmmc{s}{stateB} \\ -\> \hmkw{Mean} 4 \\ -\>\> 0.4 0.9 0.2 0.1 \\ -\> \hmkw{Variance} 4 \\ -\>\> 1.0 2.0 2.0 0.5 \\ -\hmmc{s}{stateC} \\ -\> \hmkw{Mean} 4 \\ -\>\> 1.2 3.1 0.5 0.9 \\ -\> \hmkw{Variance} 4 \\ -\>\> 5.0 5.0 5.0 5.0 \\ -\hmmc{t}{tran} \\ -\> \hmkw{TransP} 5 \\ -\>\> 0.0 0.5 0.5 0.0 0.0 \\ -\>\> 0.0 0.4 0.4 0.2 0.0 \\ -\>\> 0.0 0.0 0.6 0.4 0.0 \\ -\>\> 0.0 0.0 0.0 0.7 0.3 \\ -\>\> 0.0 0.0 0.0 0.0 0.0 -} - - -\putprog{hmm6def}{100}{Simple Tied-State System}{\hmmc{h}{ha} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmmc{s}{stateA} \\ -\> \hmkw{State} 3 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmkw{State} 4 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmmc{t}{tran} \\ -\hmkw{EndHMM} \\ - \\ -\hmmc{h}{hb} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmkw{State} 3 \\ -\>\> \hmmc{s}{stateA} \\ -\> \hmkw{State} 4 \\ -\>\> \hmmc{s}{stateC} \\ -\> \hmmc{t}{tran} \\ -\hmkw{EndHMM} \\ - \\ -\hmmc{h}{hc} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 5 \\ -\> \hmkw{State} 2 \\ -\>\> \hmmc{s}{stateC} \\ -\> \hmkw{State} 3 \\ -\>\> \hmmc{s}{stateC} \\ -\> \hmkw{State} 4 \\ -\>\> \hmmc{s}{stateB} \\ -\> \hmmc{t}{tran} \\ -\hmkw{EndHMM} -} - -\centrefig{hsetdef}{120}{Defining a Model Set} - -For example, in the HMM list shown in Fig~\href{f:hlisteg}, -the logical HMMs {\tt two}, {\tt too} and {\tt to} are tied -and share the same physical HMM definition {\tt tuw}. The HMMs {\tt one} -and {\tt won} are also tied but in this case {\tt won} shares {\tt one}'s -definition. There is, however, no subtle distinction here. The two different -cases are given just to emphasise that the names used for the logical and physical -HMMs can be the same or different, as is convenient. Finally, in this example, -the models {\tt three} and {\tt four} are untied. - - -\sideprog{hlisteg}{70}{HMM List with Tying}{ -two \>\>tuw \\ -too \>\> tuw \\ -to \>\> tuw \\ -one \\ -won \>\> one \\ -three \\ -four -}{} -This mechanism is implemented internally by creating a \hmmt{l} macro -definition for every HMM in the HMM list. If an explicit physical HMM -is also given in the list, then the logical HMM is linked to -that macro, otherwise a \hmmt{h} macro -is created with the same name as the \hmmt{l} macro. Notice that this is -one case where the ``define before use'' rule is relaxed. If an undefined -\hmmt{h} is encountered then a dummy place-holder is created for it and, -as explained above, -\htool{HModel} subsequently tries to find a HMM definition -file of the same name. - -Finally it should be noted that -in earlier versions of \HTK, there were no HMM macros. However, -HMM definitions could be listed in a single \index{master macro file} -\textit{master macro file} or MMF\index{MMF}. Each HMM definition began -with its name written as a quoted string and ended with a period -written on its own (just like master label files), and the first -line of an MMF contained the string \texttt{\#!MMF!\#}. \inthisversion -the use of MMFs has been subsumed within the general macro -definition facility using the \hmmt{h} type. -However, for compatibility, the older MMF style of file can still be -read by all \HTK\ tools. - -\mysect{Tied-Mixture Systems}{tmix} - -A Tied-Mixture System\index{tied-mixture system} is one in which all -Gaussian components are stored in -a pool and all state output distributions share this pool. Fig~\href{f:tmixeg} -illustrates this for the case of single data stream. - -\sidefig{tmixeg}{60}{Tied Mixture System}{-2}{} -Each state output distribution is defined by $M$ -mixture component weights and since all states share the same components, -all of the state-specific discrimination is encapsulated within these -weights. The set of Gaussian components selected for the pool -should be representative of the acoustic space covered by the feature -vectors. To keep $M$ manageable, multiple data streams are typically -used with tied-mixture systems. For example, static parameters may -be in one stream and delta parameters in another (see section~\ref{s:streams}). -Each stream then has a separate pool of Gaussians which are often referred -to as \textit{codebooks}. - -More formally, for $S$ independent data streams, -the output distribution for state $j$ -is defined as \index{tied-mixtures!output distribution} - -\hequation{ - b_{j}(\bm{o}_t) = \prod_{s=1}^S \left[ - \sum_{m=1}^{M_s} c_{jsm} {\cal N}(\bm{o}_{st}; - \bm{\mu}_{sm}, \bm{\Sigma}_{sm}) - \right]^{\gamma_s} -}{tmixpdf} -where the notation is identical to that used in equation~\ref{e:cdpdf}. -Note however that this equation differs from equation~\ref{e:cdpdf} -in that the Gaussian component parameters and the -number of mixture components -per stream are state independent. - - -Tied-mixture systems lack the modelling accuracy of fully continuous -density systems. However, they can often be implemented more efficiently -since the total number of Gaussians which must be evaluated at -each input frame is independent of the number of active HMM states and -is typically much smaller. - - -A tied-mixture HMM system in \HTK\ is defined by representing the -pool of shared Gaussians as \hmmt{m} macros with names ``xxx1'', -``xxx2'', \ldots, ``xxxM'' where ``xxx'' is an arbitrary name. -Each HMM state definition is then specified by giving the name -``xxx'' followed by a list of the mixture weights. Multiple -streams are identified using the \hmkw{Stream}\index{stream@$<$Stream$>$} keyword as described -previously. - -As an example, Fig~\href{f:tmixpool} shows a set of macro -definitions which specify a 5 Gaussian component tied-mixture pool. - - -Fig~\href{f:tmixhmm} then shows a typical -tied-mixture\index{HMM definition!tied-mixture} HMM definition -which uses this pool. As can be seen, the mixture component weights -are represented an array of real numbers as in the continuous density case. - -The number of components in each tied-mixture codebook is typically -of the order of 2 or 3 hundred. Hence, the list of mixture weights in -each state is often long with many values being repeated, particularly -floor values. To allow more efficient coding, successive identical -values can be represented as a single value plus a repeat count in the -form of an asterix followed by an integer multiplier. For example, -Fig~\href{f:tmixhmm2} shows the same HMM definition as above but using -repeat counts. When \HTK\ writes out a tied-mixture definition, it -uses repeat counts wherever possible. - -\putprog{tmixpool}{60}{Tied-Mixture Codebook}{ -\hmmt{o} \hmkw{VecSize} 2 \hmkw{MFCC} \\ -\hmmc{m}{mix1} \\ - \> \hmkw{Mean} \>\>\> 2 0.0 0.1 \\ - \> \hmkw{Variance} \>\>\> 2 1.0 1.0 \\ -\hmmc{m}{mix2} \\ - \> \hmkw{Mean} \>\>\> 2 0.2 0.3 \\ - \> \hmkw{Variance} \>\>\> 2 2.0 1.0 \\ -\hmmc{m}{mix3} \\ - \> \hmkw{Mean} \>\>\> 2 0.0 0.1 \\ - \> \hmkw{Variance} \>\>\> 2 1.0 2.0 \\ -\hmmc{m}{mix4} \\ -\> \hmkw{Mean} \>\>\> 2 0.4 0.1 \\ -\> \hmkw{Variance} \>\>\> 2 1.0 1.5 \\ -\hmmc{m}{mix5} \\ -\> \hmkw{Mean} \>\>\> 2 0.9 0.7 \\ -\> \hmkw{Variance} \>\>\> 2 1.5 1.0 -} - -\mysect{Discrete Probability HMMs}{dischmm} - -Discrete probability\index{discrete probability} HMMs model -observation sequences which -consist of symbols drawn from a discrete and finite set of size -$M$. As in the case of tied-mixture systems described above, -this set is often referred to as a \textit{codebook}. - -The form of the output distributions in a discrete HMM was -given in -equation~\ref{e:ddpdf}. It consists of a table giving the -probability of each possible observation symbol. Each symbol is -identified by an index in the range 1 to $M$ and hence the -probability of any symbol can be determined by a simple -table look-up operation. - -For speech -applications, the observation symbols are generated by a -vector quantiser which typically associates a prototype -speech -vector with each codebook\index{codebook} symbol. Each incoming speech vector -is then represented by the symbol whose associated -prototype is closest. The prototypes themselves are chosen -to cover the acoustic space and they are usually calculated -by clustering a representative sample of speech vectors. - -In \HTK, discrete HMMs are specified using a very similar -notation to that used for tied-mixture HMMs. A discrete HMM\index{discrete HMMs} can -have multiple data streams but the width of each stream must be -1. The output probabilities are stored as logs in a scaled -\index{discrete HMM!output probability scaling} -integer format such that if $d_{js}[v]$ is the stored discrete -probability for symbol $v$ in stream $s$ of state $j$, the true -probability is given by -\hequation{ - P_{js}[v] = exp(-d_{js}[v]/2371.8) -}{dpscale} -Storage in the form of scaled logs allows discrete probability -HMMs to be implemented very efficiently since \HTK\ tools -mostly use log arithmetic and direct storage in log form -avoids the need for a run-time conversion. The -range determined by the constant 2371.8 -was selected to enable probabilities from 1.0 down to -0.000001 to be stored. - - -\putprog{tmixhmm2}{85}{HMM using Repeat Counts}{ - -\hmmc{h}{htm} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.2 0.1 0.3*2 0.1\\ -\>\hmkw{State} 3 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.4 0.3 0.1*3\\ -\>\hmkw{TransP} 4 \\ -\> \> ... \\ -\hmkw{EndHMM} -} - -As an example, Fig~\href{f:dischmm} shows the definition of a discrete -HMM called \textsf{dhmm1}. As can be seen, this has two streams. The codebook -for stream 1 is size 10 and for stream 2, it is size 2. For consistency with -the representation used for continuous density HMMs, these sizes are encoded -in the \hmkw{NumMixes}\index{nummixes@$<$NumMixes$>$} specifier. - -\mysect{Input Linear Transforms}{lintran} - -When reading feature vectors from files HTK will coerce them to the -\texttt{TARGETKIND} specified in the config file. Often the -\texttt{TARGETKIND} will contain certain qualifiers (specifying for -example delta parameters). In addition to this parameter coercion it -is possible to apply a linear transform before, or after, appending -delta, acceleration and third derivative parameters. - -\putprog{lintran}{70}{Input Linear Transform}{ -\hmmc{j}{lintran.mat} \\ -\hmkw{MMFIdMask} *\\ -\hmkw{MFCC} \\ -\hmkw{PreQual}\\ -\hmkw{LinXform}\\ -\> \hmkw{VecSize} 2\\ -\> \hmkw{BlockInfo} 1 2\\ -\> \hmkw{Block} 1\\ -\> \> \hmkw{Xform} 2 5\\ -\> \> \> 1.0 0.1 0.2 0.1 0.4\\ -\> \> \> 0.2 1.0 0.1 0.1 0.1 -} -Figure~\ref{f:lintran} shows an example linear transform. The -\hmkw{PreQual} keyword specifies that the linear transform -is to be applied before the delta and delta-delta -parameters specified in \texttt{TARGETKIND} are added. The default -mode, no \hmkw{PreQual} keyword, applies the linear transform -after the addition of the qualifiers. - -The linear transform fully supports projection from higher -number of features to a smaller number of features. In the -example, the parameterised data must consist of 5 \texttt{MFCC} -parameters\footnote{If C0 or normalised log-energy are added -these will be stripped prior to applying the linear transform}. -The model sets that are generated using this transform have -a vector size of 2. - -By default the linear transform is stored with the HMM. This is -achieved by adding the \hmkw{InputXform} keyword and specifying the -transform or macroname. To allow compatibility with tools only -supporting the old format models it is possible to specify that no -linear transform is to be stored with the model. -\begin{verbatim} - # Do not store linear transform - HMODEL: SAVEINPUTXFORM = FALSE -\end{verbatim} -In addition it is possible to specify the linear transform as a -\htool{HPARM} configuration variable, \texttt{MATRTRANFN}. -\begin{verbatim} - # Specifying an input linear transform - HPARM: MATTRANFN = /home/test/lintran.mat -\end{verbatim} -When a linear transform is specified in this form it is not necessary -to have a macroname linked with it. In this case the filename -will be used as the macroname (having stripped the directory name) - -\mysect{Tee Models}{teemods} - -Normally, the transition probability from the non-emitting entry -state to the non-emitting exit state of a HMM will be zero to ensure -that the HMM aligns with at least one observation vector. -Models which have a non-zero entry to exit transition probability -are referred to as {\it tee-models}. - -Tee-models\index{tee-models} are useful for modelling optional transient effects -such as short pauses and noise bursts, particularly between words. - -Although most \HTK\ tools support tee-models, they are incompatible with -those that work with isolated models such as \htool{HInit} and -\htool{HRest}. When a tee-model is loaded into one of these tools, its -entry to exit transition probability is reset to zero and the first row of -its transition matrix is renormalised. - -\putprog{tmixhmm}{80}{Tied-Mixture HMM}{ -\hmmc{h}{htm} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.2 0.1 0.3 0.3 0.1\\ -\>\hmkw{State} 3 \hmkw{NumMixes} 5 \\ -\> \> \hmkw{TMix} mix 0.4 0.3 0.1 0.1 0.1\\ -\>\hmkw{TransP} 4 \\ -\> \> 0.0 1.0 0.0 0.0 \\ -\> \> 0.0 0.5 0.5 0.0 \\ -\> \> 0.0 0.0 0.6 0.4 \\ -\> \> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - -\mysect{Binary Storage Format}{binsave} - -Throughout this chapter, a text-based representation -has been used for the external storage of HMM -definitions. For experimental work, text-based storage allows -simple and direct -access to HMM parameters and this can be invaluable. -However, when using very large HMM sets, storage in text form -is less practical since it is inefficient in its use of -memory and the time taken to load can be excessive due to -the large number of character to float conversions needed. - -To solve these problems, \HTK\ also provides a -binary storage\index{HMM definition!binary storage}\index{binary storage} -format. In binary mode, keywords are written as a single -colon followed by an 8 bit code representing the actual -keyword. Any subsequent numerical information following -the keyword is then in binary. Integers are written as -16-bit shorts and all floating-point numbers are written -as 32-bit single precision floats. The repeat -factor used in the run-length encoding -scheme for tied-mixture and discrete HMMs is written as -a single byte. Its presence immediately after a 16-bit -discrete log probability is indicated by setting the top -bit to 1 (this is the reason why the range of discrete -log probabilities is limited to -0 to 32767 i.e.\ only 15 bits are used for the actual -value). For tied-mixtures, the repeat count is signalled -by subtracting 2.0 from the weight. - -Binary storage format and text storage format can be mixed -within and between input files. Each time a keyword is -encountered, its coding is used to determine whether the -subsequent numerical information should be input in text -or binary form. This means, for example, that binary -files can be manually patched by replacing a binary-format -definition by a text format definition\footnote{The fact that -this is possible does not mean that it is recommended practice!}. - -\HTK\ tools provide a standard command line option (\texttt{-B}) to indicate -that HMM definitions should be output in binary format. -Alternatively, the Boolean configuration -variable \texttt{SAVEBINARY}\index{savebinary@\texttt{SAVEBINARY}} can be set to true to -force binary format output. - -\putprog{dischmm}{80}{Discrete Probability HMM}{ -\hmmt{o} \hmkw{DISCRETE} \hmkw{StreamInfo} 2 1 1 \\ -\hmmc{h}{dhmm1} \\ -\hmkw{BeginHMM} \\ -\> \hmkw{NumStates} 4 \\ -\> \hmkw{State} 2 \\ -\>\> \hmkw{NumMixes} 10 2 \\ -\>\> \hmkw{SWeights} 2 0.9 1.1 \\ -\>\> \hmkw{Stream} 1 \\ -\> \>\> \hmkw{DProb} 3288*4 32767*6 \\ -\>\> \hmkw{Stream} 2 \\ -\>\> \> \hmkw{DProb} 1644*2 \\ -\> \hmkw{State} 3 \\ -\>\> \hmkw{NumMixes} 10 2 \\ -\>\> \hmkw{SWeights} 2 0.9 1.1 \\ -\> \> \hmkw{Stream} 1 \\ -\> \> \> \hmkw{DProb} 5461*10 \\ -\> \> \hmkw{Stream} 2 \\ -\> \> \> \hmkw{DProb} 1644*2 \\ -\>\hmkw{TransP} 4 \\ -\> \> 0.0 1.0 0.0 0.0 \\ - \> \> 0.0 0.5 0.5 0.0 \\ - \> \> 0.0 0.0 0.6 0.4 \\ -\> \> 0.0 0.0 0.0 0.0 \\ -\hmkw{EndHMM} -} - - -\mysect{The HMM Definition Language}{hmmdef} - -To conclude this chapter, -this section presents a formal\index{HMM definition!formal syntax} description -of the HMM definition language used by \HTK. -Syntax is described using an extended BNF notation in which -alternatives are separated by a vertical bar $|$, parentheses () denote -factoring, brackets [\ ] denote options, and braces \{\} denote zero or more -repetitions. - -All keywords are enclosed in angle brackets\footnote{ -This definition covers the textual version only. The syntax for -the binary format -is identical apart from the way that the lexical items are encoded.} and -the case of the -keyword name is not significant. -White space is not significant except within double-quoted strings. - -The top level structure of a HMM definition is shown by the following -rule. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> hmmdef = \> [ $\sim$h macro ] \\ -\>\> $<$BeginHMM$>$ \\ -\>\>\> [ globalOpts ] \\ -\>\>\> $<$NumStates$>$ short \\ -\>\>\> state \{ state \} \\ -\>\>\> transP \\ -\>\>\> [ duration ] \\ -\>\> $<$EndHMM$>$ -\end{tabbing} -} -A HMM definition consists of an optional set of global options\index{HMM definition!global options} followed by -the \hmkw{NumStates}\index{numstates@$<$NumStates$>$} keyword whose following argument specifies the number of states in -the model inclusive of the non-emitting entry and exit states\footnote{ -Integer numbers are specified as either \textsf{char} or \textsf{short}. -This has no effect on text-based definitions but for binary format it indicates -the underlying C type used to represent the number.}. -The information for each state is then given in turn, followed by the -parameters of the transition matrix and the model duration parameters, if any. -The name of the HMM is given by the \hmmt{h} macro. If the HMM is the -only definition within a file, the \hmmt{h} macro name can be omitted -and the HMM name is assumed to be the same as the file name. - -The global options\index{global options} are common to all HMMs. They can be given -separately using a \hmmt{o} option macro -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> optmacro = \> $\sim$o globalOpts -\end{tabbing} -} -\noindent -or they can be included in one or more HMM definitions. Global -options may be repeated but no definition can change a previous -definition. All global options must be defined before any other -macro definition is processed. In practice this means that any -HMM system which uses parameter tying must have a \hmmt{o} option macro -at the head of the first macro file processed. - -The full set of global options is given below. Every HMM set must -define the vector size (via \hmkw{VecSize}\index{vecsize@$<$VecSize$>$}), the stream widths -(via \hmkw{StreamInfo}\index{streaminfo@$<$StreamInfo$>$}) -and the observation parameter kind. However, if only the stream -widths are given, then the vector size will be inferred. If -only the vector size is given, then a single stream of identical -width will be assumed. All other options default to null. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= ++ \= +++++++++++++++++ \= +++ \= \kill -\> globalOpts = \> option \{ option \} \\ -\> option = \> $<$HmmSetId$>$ string $|$ \\ -\>\> $<$StreamInfo$>$ short \{ short \} $|$ \\ -\>\> $<$VecSize$>$ short $|$ \\ -\>\> $<$ProjSize$>$ short $|$ \\ -\>\> $<$InputXform$>$ inputXform $|$ \\ -\>\> $<$ParentXform$>$ $\sim$a macro $|$ \\ -\>\> covkind $|$ \\ -\>\> durkind $|$ \\ -\>\> parmkind -\end{tabbing} -} -\noindent -The {\sf $<$HmmSetId$>$} option allows the user to give the MMF an -identifier. This is used as a sanity check to make sure that a TMF can -be safely applied to this MMF. -The arguments to the -{\sf $<$StreamInfo$>$} option are the number of streams (default 1) and then -for each stream, the width of that stream. The {\sf $<$VecSize$>$} option -gives the total number of elements in each input vector. {\sf $<$ProjSize$>$} -is the number of ``nuisance'' dimensions removed using, for example, -an HLDA transform. The {\sf $<$ParentXForm$>$} allows the semi-tied macro, -if any, associated with the model-set to be specified. -If both \hmkw{VecSize} and \hmkw{StreamInfo} are included then the -sum of all the stream widths must equal the input vector size. - -The {\sf covkind } defines the kind of the covariance matrix -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> covkind =\> $<$DiagC$>$ $|$ $<$InvDiagC$>$ $|$ $<$FullC$>$ $|$ \\ -\>\> $<$LLTC$>$ $|$ $<$XformC$>$ -\end{tabbing} -} -\noindent -where {\sf $<$InvDiagC$>$} is used internally. {\sf $<$LLTC$>$} -and {\sf $<$XformC$>$} are not used in \HTK\ Version 3.4. -Setting the covariance kind as a global option forces all components to -have this kind. In particular, it prevents mixing full and diagonal covariances -within a HMM set. - -The {\sf durkind} denotes the type of duration -model used according to the following rules -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> durkind =\> $<$nullD$>$ $|$ $<$poissonD$>$ $|$ $<$gammaD$>$ $|$ $<$genD$>$ -\end{tabbing} -} -\noindent -For anything other than {\sf $<$nullD$>$}, a duration vector\index{duration vector} must -be supplied for the model or each state as described below. Note that no -current HTK tool can estimate or use such duration vectors. - -The parameter kind is any legal parameter kind including qualified forms -(see section~\ref{s:genio}) -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> parmkind =\> $<$basekind\{\_D$|$\_A$|$\_T$|$\_E$|$\_N$|$\_Z$|$\_O$|$\_V$|$\_C$|$\_K\}$>$ \\ -\> basekind =\> $<$discrete$>$$|$$<$lpc$>$$|$$<$lpcepstra$>$$|$$<$mfcc$>$ $|$ $<$fbank$>$ $|$ \\ - \> \> $<$melspec$>$$|$ $<$lprefc$>$$|$$<$lpdelcep$>$ $|$ $<$user$>$ -\end{tabbing} -} -\noindent -where the syntax rule for {\sf parmkind} is non-standard in that no spaces -are allowed between the base kind and any subsequent qualifiers. -As noted in chapter~\ref{c:speechio}, {\sf $<$lpdelcep$>$} is -provided only for compatibility -with earlier versions of \HTK\ and its further use should be avoided. - -Each state of each HMM must have its own section defining the parameters -associated with that state -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> state =\> $<$State: Exp $>$ short stateinfo -\end{tabbing} -} -\noindent -where the short following {\sf $<$State: Exp $>$} is the state number. State -information can be defined in any order. The syntax is as follows -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> stateinfo = \> $\sim$s macro $|$ \\ - \>\> [ mixes ] [ weights ] stream \{ stream \} [ duration ] \\ -\> macro = \> string -\end{tabbing} -} -\noindent -A {\sf stateinfo} definition consists of an -optional specification of the number of mixture components, an optional set of stream weights, -followed by a block of information for each stream, optionally terminated with -a duration vector. Alternatively, {\sf $\sim$s macro} can be -written where {\sf macro} is the name of a previously defined macro. - -The optional {\sf mixes} in a {\sf stateinfo} definition specify -the number of mixture components (or discrete codebook size) for -each stream of that state -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> mixes = \> $<$NumMixes$>$ short \{short\} -\end{tabbing} -} -\noindent -where there should be one {\sf short} for each stream. If this -specification is omitted, it is assumed that all streams -have just one mixture component. - -The optional {\sf weights} in a {\sf stateinfo} definition define -a set of exponent weights for each independent data stream. The -syntax is -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> weights = \> $\sim$w macro $|$ $<$SWeights$>$ short vector \\ -\> vector = \> float \{ float \} -\end{tabbing} -} -\noindent -where the {\sf short} gives the number $S$ of weights (which should match the -value given in the \hmkw{StreamInfo} option) and the {\sf vector} -contains the $S$ stream weights $\gamma_s$ (see section~\ref{s:HMMparm}). - -The definition of each {\sf stream} -depends on the kind of HMM set. In the normal case, it -consists of a sequence of mixture -component -definitions optionally preceded by the stream number. If the stream -number is omitted then it is assumed to be 1. For tied-mixture -and discrete HMM sets, special forms are used. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> stream = \> [ $<$Stream$>$ short ] \\ -\> \> (mixture \{ mixture \} $|$ tmixpdf $|$ discpdf) -\end{tabbing} -} - -The definition of each mixture component consists of a Gaussian -pdf optionally preceded by the mixture number and its weight -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> mixture = \> [ $<$Mixture$>$ short float ] mixpdf -\end{tabbing} -} -\noindent -If the \hmkw{Mixture}\index{mixture@$<$Mixture$>$} part is missing then mixture 1 is assumed and the -weight defaults to 1.0. - -The {\sf tmixpdf} option is used only for fully -tied mixture sets. Since the {\sf mixpdf} parts are all macros in -a tied mixture system and since they are identical for every stream -and state, it is only necessary to know the mixture weights. The -{\sf tmixpdf} syntax allows these to be specified in the following -compact form -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> tmixpdf = \> $<$TMix$>$ macro weightList \\ -\> weightList = \> repShort \{ repShort \} \\ -\> repShort = \> short [ $\ast$ char ] -\end{tabbing} -} -\noindent -where each {\sf short} is a mixture component weight scaled so that -a weight of 1.0 is represented by the integer 32767. -The optional asterix -followed by a {\sf char} is used to indicate -a repeat count. For example, {\tt 0*5} is equivalent to 5 zeroes. -The Gaussians which make-up the pool of tied-mixtures are defined -using \hmmt{m} macros called -{\sf macro1}, {\sf macro2}, {\sf macro3}, etc. - -Discrete probability HMMs are defined in a similar way -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> discpdf = \> $<$DProb$>$ weightList -\end{tabbing} -} -\noindent -The only difference is that the weights in the \textsf{weightList} -are scaled log probabilities as defined in section~\ref{s:dischmm}. - -The definition of a Gaussian pdf requires the mean vector to -be given and one of the possible forms of covariance -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> mixpdf = \> $\sim$m macro $|$ mean cov [ $<$GConst$>$ float ] \\ -\> mean = \> $\sim$u macro $|$ $<$Mean$>$ short vector \\ -\> cov = \> var $|$ inv $|$ xform \\ -\> var = \> $\sim$v macro $|$ $<$Variance$>$ short vector \\ -\> inv = \> $\sim$i macro $|$ \\ -\> \> ($<$InvCovar$>$ $|$ $<$LLTCovar$>$) short tmatrix \\ -\> xform = \> $\sim$x macro $|$ $<$Xform$>$ short short matrix \\ -\> matrix = \> float \{float\} \\ -\> tmatrix = \> matrix \\ -\end{tabbing} -} -\noindent -In {\sf mean} and {\sf var}, the {\sf short} preceding the {\sf vector} -defines the length of the vector, in {\sf inv} the {\sf short} preceding the {\sf -tmatrix} gives the size of this square upper triangular matrix, and in {\sf xform} the -two {\sf short}'s preceding the {\sf matrix} give the number of rows and -columns. -The optional {\sf $<$GConst$>$}\footnote{specifically, in equation -~\ref{e:gnorm} -the GCONST value seen in HMM sets is calculated by multiplying the determinant -of the covariance matrix by $\bm{(2 \pi)^n}$} \index{GCONST value} gives -that part of the log -probability of a Gaussian that can be precomputed. If it is omitted, then -it will be computed during load-in, including it simply saves some time. -\HTK\ tools which output HMM definitions always include this field. - -In addition to defining the output distributions, a state can have a -duration probability distribution defined for it. However, no current HTK -tool can estimate or use these. -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> duration = \> $\sim$d macro $|$ $<$Duration$>$ short vector -\end{tabbing} -} -\noindent -Alternatively, as shown by the top level syntax for a {\sf hmmdef}, -duration parameters can be specified for a whole model. - -The transition matrix is defined by -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> transP = \> $\sim$t macro $|$ $<$TransP$>$ short matrix -\end{tabbing} -} -\noindent -where the {\sf short} in this case should be equal to the number of -states in the model. - -To support HMM adaptation (as described in -chapter~\ref{c:Adapt}) baseclasses and regression class trees are -defined. A baseclass is defined as {\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> baseClass = \> $\sim$b macro baseopts classes\\ -\> baseopts = \> $<$MMFIdMask$>$ string $<$Parameters$>$ baseKind $<$NumClasses$>$ int\\ -\> baseKind = \>MIXBASE $|$ MEANBASE $|$ COVBASE \\ -\> classes = \> $<$Class$>$ int itemlist \{ classes \} \\ -\end{tabbing} -} -\noindent -where itemlist is a list of mixture components specified using -the same conventions as the \htool{HHEd} command -described in section~\ref{s:parmtying}. A regression class tree may -also exist for an HMM set. This is defined by {\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> regTree = \> $\sim$r macro $<$BaseClass$>$ baseclasses node \\ -\> baseclasses = \> $\sim$b macro $|$ baseopts classes \\ -\> node = \> ($<$Node$>$ int int int \{ int \} $|$ $<$TNode$>$ int int -int \{ int \}) \{ node \} -\end{tabbing} -} -\noindent -For the definition of a node ($<$Node$>$) in {\sf node} the first integer is the -node number, the second the number of children followed the of children -node numbers\footnote{Though the notation support n-ary trees, the regression -class tree code can only generate binary regression class trees.}. The -integers in the definition of a terminal node ($<$TNode$>$) define the node number, -number of base classes associated with the terminal and the base class-index numbers. - -Adaptation transforms are defined using -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> adaptXForm = \> $\sim$a macro adaptOpts $<$XformSet$>$ xformset \\ -\> adaptOpts = \> $<$AdaptKind$>$ adaptkind $<$BaseClass$>$ baseclasses [$<$ParentXForm$>$ parentxform] \\ -\> parentxform = \> $\sim$a macro $|$ adaptOpts $<$XformSet$>$ xformset\\ -\> adaptKind = \> TREE $|$ BASE\\ -\> xformset = \> $<$XFormKind$>$ xformKind $<$NumXForms$>$ int \{ linxform \}\\ -\> xformKind = \> MLLRMEAN $|$ MLLRCOV $|$ MLLRVAR $|$ CMLLR $|$ SEMIT\\ -\> linxform = \> $<$LinXForm$>$ int $<$VecSize$>$ int [$<$OFFSET$>$ xformbias] \\ -\> \> $<$BlockInfo$>$ -int int \{int\} block \{block\}\\ -\> xformbias = \> $\sim$y macro $|$ $<$Bias$>$ short vector \\ -\> block = \> $<$Block$>$ int xform\\ -\end{tabbing} -} -\noindent -In the definition of the $<$BlockInfo$>$ the first integer is the number of blocks, -followed the size of each of the clocks. For examples of the adaptation transform -format see section~\ref{s:tmfs}. - -Finally the input transform is defined by -{\sf -\begin{tabbing} -++++ \= ++++++++ \= \kill -\> inputXform = \> $\sim$j macro $|$ inhead inmatrix\\ -\> inhead = \> $<$MMFIdMask$>$ string parmkind [$<$PreQual$>$]\\ -\> inmatrix = \> $<$LinXform$>$ $<$VecSize$>$ int $<$BlockInfo$>$ -int int \{int\} block \{block\}\\ -\> block = \> $<$Block$>$ int xform -\end{tabbing} -} -\noindent -where the {\sf short} following \hmkw{VecSize} is the number of dimensions -after applyingthe linear transform and must match the vector size -of the HMM definition. The first {\sf short} after \hmkw{BlockInfo} -is the number of block, this is followed by the number of output -dimensions from each of the blocks. - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/netdict.tex b/HTKBook/netdict.tex deleted file mode 100644 index b3054ea..0000000 --- a/HTKBook/netdict.tex +++ /dev/null @@ -1,1131 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 24/11/97 -% - -\mychap{Networks, Dictionaries and Language Models}{netdict} - -\sidepic{Tool.netdict}{80}{ -The preceding chapters have described how to process speech -data and how to train various types of HMM. -This and the following chapter are concerned with building -a speech recogniser using \HTK. This chapter focuses on -the use of networks\index{networks} and dictionaries\index{dictionaries}. -A network describes the -sequence of words that can be recognised and, for the case of sub-word -systems, a dictionary describes the sequence of HMMs that constitute -each word. -A word level network will typically represent either -a \textit{Task Grammar} which defines all of the legal word -sequences explicitly -or a \textit{Word Loop} which simply puts all words of the vocabulary -in a loop and therefore allows any word to follow any other word. -Word-loop networks are often augmented by a stochastic language model. -Networks can also be used -to define phone recognisers and various types of word-spotting systems. -} - -Networks are specified using the \HTK\ \textit{Standard Lattice Format} (SLF) -which is described in detail in Chapter~\ref{c:htkslf}. -This is a general purpose text format which is used for representing -multiple hypotheses in a recogniser output as well as word networks. -Since SLF\index{SLF} format is text-based, it can be written directly using any text editor. -However, this can be rather tedious and \HTK\ provides -two tools which allow the application designer to use a higher-level -representation. Firstly, the tool \htool{HParse} allows networks -to be generated from a source text containing extended BNF format -grammar rules. This format was the only grammar definition -language provided in earlier versions of \HTK\ and hence -\htool{HParse} also provides backwards compatibility. -\index{standard lattice format} - -\htool{HParse} task grammars are very easy to write, but they -do not allow fine control -over the actual network used by the recogniser. -The tool \htool{HBuild} works directly at the SLF level to provide -this detailed control. Its main function is to -enable a large word network to be decomposed into -a set of small self-contained sub-networks using as input an extended -SLF format. This enhances the -design process and avoids the need for unnecessary repetition. - -\htool{HBuild} can also be used to perform a number -of special-purpose functions. Firstly, it can construct -word-loop and word-pair grammars automatically. Secondly, -it can incorporate a statistical bigram -language model into a network. These can be generated from label -transcriptions using \htool{HLStats}. However, -\HTK\ supports the standard ARPA MIT-LL text format for backed-off -N-gram language models, and hence, import from other sources is possible. - -Whichever tool is used to generate a word network, it is important -to ensure that the generated network represents the intended grammar. -It is also helpful to have some measure of the difficulty of the -recognition task. To assist with this, the tool \htool{HSGen} is -provided. This tool will generate example word sequences from -an SLF network using random sampling. It will also estimate the -perplexity of the network. - -When a word network is loaded into a recogniser, -a dictionary is consulted to convert each -word in the network into a sequence of phone HMMs. The dictionary can -have multiple pronunciations in which case several sequences may be joined -in parallel to make a word. Options exist in this process to automatically -convert the dictionary entries to context-dependent triphone -models, either within a word or cross-word. Pronouncing -dictionaries are a vital resource in building speech recognition -systems and, in practice, word pronunciations can be derived from -many different sources. The \HTK\ tool \htool{HDMan} enables a dictionary -to be constructed automatically from different sources. Each source -can be individually edited and translated and merged to form a -uniform \HTK\ format dictionary. - -The various facilities for describing a word network and expanding into a -HMM level network suitable for building a recogniser are implemented -by the \HTK\ library module \htool{HNet}. The facilities for loading -and manipulating dictionaries are implemented by the \HTK\ library module -\htool{HDict} and for loading -and manipulating language models are implemented by -\htool{HLM}. These facilities and those provided by -\htool{HParse}, \htool{HBuild}, \htool{HSGen}, -\htool{HLStats} and \htool{HDMan} are -the subject of this chapter. - -\mysect{How Networks are Used}{netuse} - -Before delving into the details of word networks\index{networks!in recognition} and dictionaries, it will -be helpful to understand their r\^{o}le in building a speech recogniser -using \HTK. Fig~\href{f:recsys} illustrates the overall recognition -process. A word network is defined using HTK Standard Lattice Format -(SLF). An SLF word network is just a text file and it can be written -directly with a text editor or a tool can be used to build it. \HTK\ provides -two such tools, \htool{HBuild} and -\htool{HParse}. These both take as input a textual description and -output an SLF file. -% Another way to generate SLF files is to use Entropic's \textit{grapHvite} package, which includes a -% graphical tool that allows the required networks to be constructed on -% the screen. -Whatever method is chosen, word network SLF generation -is done \textit{off-line} -and is part of the system build process. - -An SLF file contains a list of nodes representing words and a -list of arcs representing the transitions between words. The transitions -can have probabilities attached to them and these can be used to indicate -\textit{preferences} in a grammar network. They can also be used to -represent bigram probabilities in a back-off bigram network and -\htool{HBuild} can generate such a bigram network automatically. -In addition to an SLF file, a \HTK\ recogniser requires a -dictionary to supply pronunciations for each word in the network -and a set of acoustic HMM phone models. -Dictionaries are input via the \HTK\ interface module \htool{HDict}. - -The dictionary, HMM set and word network are input to the \HTK\ library -module \htool{HNet} whose function is to generate an equivalent network of -HMMs. Each word in the dictionary may have several pronunciations and in -this case there will be one branch in the network corresponding to each -alternative pronunciation. Each pronunciation may consist either of a list -of phones or a list of HMM names. In the former case, \htool{HNet} can -optionally expand the HMM network to use either word internal triphones or -cross-word triphones. -Once the HMM network has been constructed, it can be -input to the decoder module \htool{HRec} and used to recognise -speech input. Note that HMM network construction is performed \textit{on-line} -at recognition time as part of the initialisation process. - -\centrefig{recsys}{100}{Overview of the Recognition Process} - -For convenience, \HTK\ provides a recognition\index{recognition!overall process} tool called \htool{HVite} -to allow the functions provided by \htool{HNet} and \htool{HRec} -to be invoked from the command line. \htool{HVite} is particularly -useful for running experimental evaluations on test speech stored -in disk files and for basic testing using live audio input. -However, application developers -should note that \htool{HVite} is just a shell containing calls to -load the word network, dictionary and models; generate the recognition -network and then repeatedly recognise each input utterance. -For embedded applications, it may well be appropriate to -dispense with \htool{HVite} and call the functions in -\htool{HNet} and \htool{HRec} directly from the application. -The use of \htool{HVite} is explained in the next chapter. - -\mysect{Word Networks and Standard Lattice Format}{slfintro} - -\index{standard lattice format} -This section provides a basic introduction to the \HTK\ Standard Lattice -Format (SLF). SLF files are used for a variety of functions some of -which lie beyond the scope of the standard \HTK\ package. The -description here is limited to those features of SLF which are required -to describe word networks suitable for input to \htool{HNet}. The -following Chapter describes the further features of SLF used for -representing the output of a recogniser. For reference, a full -description of SLF is given in Chapter~\ref{c:htkslf}. - -\index{SLF!format} -A word network in SLF\index{SLF} consists of a list of nodes and a list of arcs. -The nodes represent words and the arcs represent the transition between -words\footnote{More precisely, nodes represent the ends of -words and arcs represent the transitions between word ends. -This distinction becomes important when describing -recognition output since acoustic scores are attached -to arcs not nodes. }. -Each node and arc definition is written on a single line and -consists of a number of fields. Each field specification consists of a -``name=value'' pair. Field names can be any length but all commonly used -field names consist of a single letter. By convention, field names -starting with a capital letter are mandatory whereas field names -starting with a lower-case letter are optional. Any line beginning with -a \texttt{\#} is a comment and is ignored. - -\centrefig{wdnet}{80}{A Simple Word Network} - -The following example should illustrate the basic format \index{SLF!word network} -of an SLF word network file. It corresponds to the network -illustrated in Fig~\href{f:wdnet} which represents all sequences -consisting of the words ``bit'' and ``but'' starting with the -word ``start'' and ending with the word ``end''. As will be -seen later, the start and end words will be mapped to a silence -model so this grammar allows speakers to -say ``bit but but bit bit ....etc''. -\begin{verbatim} - # Define size of network: N=num nodes and L=num arcs - N=4 L=8 - # List nodes: I=node-number, W=word - I=0 W=start - I=1 W=end - I=2 W=bit - I=3 W=but - # List arcs: J=arc-number, S=start-node, E=end-node - J=0 S=0 E=2 - J=1 S=0 E=3 - J=2 S=3 E=1 - J=3 S=2 E=1 - J=4 S=2 E=3 - J=5 S=3 E=3 - J=6 S=3 E=2 - J=7 S=2 E=2 -\end{verbatim} -Notice that the first line which defines the size of the network must be -given before any node or arc definitions. -A node is a \textit{network start node} if it has no predecessors, -and a node is \textit{network end node} if it has no successors. -There must be one and only one network start node and one network -end node. -In the above, node 0 is a network start node and node 1 is a -network end node. -The choice of the names ``start'' and ``end'' for these nodes -has no significance. - -\centrefig{wdnet1}{80}{A Word Network Using Null Nodes} - -A word network can have null nodes indicated by the special -predefined word name \texttt{!NULL}. Null nodes are useful for reducing -the number of arcs required. For example, the \textit{Bit-But} -network could be defined as follows\index{SLF!null nodes} -\begin{verbatim} - # Network using null nodes - N=6 L=7 - I=0 W=start - I=1 W=end - I=2 W=bit - I=3 W=but - I=4 W=!NULL - I=5 W=!NULL - J=0 S=0 E=4 - J=1 S=4 E=2 - J=2 S=4 E=3 - J=3 S=2 E=5 - J=4 S=3 E=5 - J=5 S=5 E=4 - J=6 S=5 E=1 -\end{verbatim} -In this case, there is no significant saving, however, if there -were many words in parallel, the total number of arcs would be -much reduced by using null nodes to form common start and end points for -the loop-back connections. - -By default, all arcs are equally likely. However, the optional -field \texttt{l=x} can be used to attach the log transition probability -\texttt{x} to an arc. For example, if the word ``but'' was twice -as likely as ``bit'', the arcs numbered 1 and 2 in the last example -could be changed to -\begin{verbatim} - J=1 S=4 E=2 l=-1.1 - J=2 S=4 E=3 l=-0.4 -\end{verbatim} -Here the probabilities have been normalised to sum to 1, however, -this is not necessary. The recogniser simply adds the scaled log probability -to the path score and hence it can be regarded as an additive -word transition penalty.\index{SLF!arc probabilities} - -\mysect{Building a Word Network with \htool{HParse}}{usehparse} - -Whilst the construction of a word level SLF network file by hand -is not difficult, it can be somewhat tedious. In earlier versions -of \HTK, a high level grammar notation based on extended -Backus-Naur\index{extended Backus-Naur Form} -Form (EBNF\index{EBNF}) was used to specify recognition grammars. This -\textit{HParse} -format was read-in directly by the recogniser and compiled into -a finite state recognition network at run-time. - -\inthisversion \textit{HParse} format is still supported but in the form of -an \textit{off-line} compilation into an SLF word network which can -subsequently be used to drive a recogniser. - -A HParse format\index{HParse format} grammar\index{grammar} consists of an -extended form of regular expression -enclosed within parentheses. Expressions are constructed -from sequences of words and the metacharacters -\begin{description} -\item[\texttt{|}] denotes alternatives -\item[\texttt{[ ]}] encloses options -\item[\texttt{\{ \}}] denotes zero or more repetitions -\item[\texttt{< >}] denotes one or more repetitions -\item[\texttt{<< >>}] denotes context-sensitive loop -\end{description} -The following examples will illustrate the use of all of these -except the last which is a special-purpose facility provided -for constructing context-sensitive loops as found in for example, -context-dependent phone loops and word-pair grammars. It is described -in the reference entry for \htool{HParse}\index{hparse@\htool{HParse}}. - -As a first example, suppose -that a simple isolated word single digit recogniser\index{digit recogniser} was required. -A suitable syntax would be -\begin{verbatim} - ( - one | two | three | four | five | - six | seven | eight | nine | zero - ) -\end{verbatim} -This would translate into the network shown in part (a) of -Fig.~\href{f:digitnets}. -If this HParse format syntax definition -was stored in a file called {\tt digitsyn}, -the equivalent SLF word network would be generated in the -file \texttt{digitnet} by typing -\begin{verbatim} - HParse digitsyn digitnet -\end{verbatim} - -The above digit syntax assumes that each input digit is -properly end-pointed. This -requirement can be removed by adding a silence model -before and after the digit -\begin{verbatim} - ( - sil (one | two | three | four | five | - six | seven | eight | nine | zero) sil - ) -\end{verbatim} -As shown by graph (b) in Fig.~\href{f:digitnets}, the allowable sequence of -models now consists of silence followed by a digit followed by silence. -If a sequence of digits needed to be recognised then angle brackets can -be used to indicate one or more repetitions, the HParse grammar -\begin{verbatim} - ( - sil < one | two | three | four | five | - six | seven | eight | nine | zero > sil - ) -\end{verbatim} -would accomplish this. -Part (c) of Fig.~\href{f:digitnets} -shows the network that would result in this case. - -\centrefig{digitnets}{120}{Example Digit Recognition Networks} - -HParse\index{HParse format!variables} grammars can define -variables to represent sub-expressions. -Variable names start with a dollar symbol and they are given values -by definitions of the form -\begin{verbatim} - $var = expression ; -\end{verbatim} -For example, the above connected digit grammar could be rewritten as -\begin{verbatim} - $digit = one | two | three | four | five | - six | seven | eight | nine | zero; - ( - sil < $digit > sil - ) -\end{verbatim} -Here \texttt{\$digit} is a variable whose value is the expression appearing -on the right hand side of the assignment. Whenever the name of a variable -appears within an expression, the corresponding expression is substituted. -Note however that variables must be defined before use, hence, recursion -is prohibited. - -As a final refinement of the digit grammar, the start and end silence -can be made optional by enclosing them within square brackets thus -\begin{verbatim} - $digit = one | two | three | four | five | - six | seven | eight | nine | zero; - ( - [sil] < $digit > [sil] - ) -\end{verbatim} -Part (d) of Fig.~\href{f:digitnets} -shows the network that would result in this last case. - -HParse format grammars are a convenient way of specifying -task grammars\index{task grammar} for interactive voice interfaces. As a final -example, the following defines a simple grammar for the control -of a telephone by voice. -\begin{verbatim} - $digit = one | two | three | four | five | - six | seven | eight | nine | zero; - $number = $digit { [pause] $digit}; - $scode = shortcode $digit $digit; - $telnum = $scode | $number; - $cmd = dial $telnum | - enter $scode for $number | - redial | cancel; - $noise = lipsmack | breath | background; - ( < $cmd | $noise > ) -\end{verbatim} -The dictionary entries for \texttt{pause}, \texttt{lipsmack}, -\texttt{breath} and \texttt{background} would reference HMMs trained -to model these types of noise and the corresponding output symbols -in the dictionary would be null. - -Finally, it should be noted that when the HParse -format\index{HParse format!in V1.5} was used in -earlier versions of \HTK, word grammars contained word pronunciations -embedded within them. This was done by using the reserved node names -\texttt{WD\_BEGIN} and \texttt{WD\_END} to delimit word boundaries. To -provide backwards compatibility, \htool{HParse} can process these old -format networks but when doing so it outputs a dictionary as well as a -word network. This compatibility mode\index{HParse format!compatibility mode} is defined fully in the -reference section, to use it the configuration variable -\texttt{V1COMPAT}\index{v1compat@\texttt{V1COMPAT}} must be set -true or the \texttt{-c} option set. - -Finally on the topic of word -networks\index{word networks!tee-models in}, it is important to note that -any network containing an unbroken loop of one or more tee-models -will generate an error. -For example, if \texttt{sp} is a single state tee-model used to -represent short pauses, then the following network would generate an -error\index{tee-models!in networks} -\begin{verbatim} - ( sil < sp | $digit > sil ) -\end{verbatim} -the intention here is to recognise a sequence of digits which may -optionally be separated by short pauses. However, the syntax allows -an endless sequence of \texttt{sp} models and hence, the recogniser could -traverse this sequence without ever consuming any input. The solution to -problems such as these is to rearrange the network. For example, the -above could be written as -\begin{verbatim} - ( sil < $digit sp > sil ) -\end{verbatim} -%$ - -\mysect{Bigram Language Models}{biglms} - -\index{language models!bigram} -Before continuing with the description of network generation -and, in particular, the use of \htool{HBuild}\index{hbuild@\htool{HBuild}}, the -use of bigram language models needs to be described. -Support for statistical language models in \HTK\ is provided -by the library module \htool{HLM}. Although the interface to -\htool{HLM}\index{hlm@\htool{HLM}} can support general N-grams\index{N-grams}, -the facilities for -constructing and using N-grams are limited to bigrams. - -A bigram language model can be built using \htool{HLStats}\index{hlstats@\htool{HLStats}} -invoked as follows where it is a assumed that all of the -label files used for -training are stored in an MLF called \texttt{labs} -\begin{verbatim} - HLStats -b bigfn -o wordlist labs -\end{verbatim} -All words used in the label files must be listed in the \texttt{wordlist}. -This command will read all of the transcriptions in \texttt{labs}, -build a table of -bigram counts in memory, and then output a back-off bigram\index{back-off bigrams} -to the file \texttt{bigfn}. The formulae used for this are -given in the reference entry for \htool{HLStats}. However, the -basic idea is encapsulated in the following formula -\[ - p(i,j) = \left\{ - \begin{array}{ll} - (N(i,j) - D )/N(i) & \mbox{if $N(i,j) > t$} \\ - b(i) p(j) & \mbox{otherwise} - \end{array} - \right. -\] -where $N(i,j)$ is the number of times word $j$ follows word $i$ and -$N(i)$ is the number of times that word $i$ appears. -Essentially, a small part of the available probability mass -is deducted from the higher bigram counts and distributed amongst -the infrequent bigrams. This process is called \textit{discounting}. -The default value for the discount constant $D$ is 0.5 but -this can be altered using the configuration variable -\texttt{DISCOUNT}\index{discount@\texttt{DISCOUNT}}. -When a bigram count falls below the threshold -$t$, the bigram is backed-off to the unigram probability suitably scaled -by a back-off weight in order to ensure that all bigram probabilities for a given -history sum to one. - -Backed-off bigrams\index{back-off bigrams!ARPA MIT-LL format} are -stored in a text file using the standard -ARPA MIT-LL format which as used in \HTK\ is as follows - -\begin{verbatim} - \data\ - ngram 1= - ngram 2= - - \1-grams: - P(!ENTER) !ENTER B(!ENTER) - P(W1) W1 B(W1) - P(W2) W2 B(W2) - ... - P(!EXIT) !EXIT B(!EXIT) - - \2-grams: - P(W1 | !ENTER) !ENTER W1 - P(W2 | !ENTER) !ENTER W2 - P(W1 | W1) W1 W1 - P(W2 | W1) W1 W2 - P(W1 | W2) W2 W1 - .... - P(!EXIT | W1) W1 !EXIT - P(!EXIT | W2) W2 !EXIT - \end\ -\end{verbatim} -where all probabilities are stored as base-10 logs. The default -start and end words, \texttt{!ENTER} and \texttt{!EXIT} can be changed -using the \htool{HLStats} \texttt{-s} option. - -For some applications, a simple matrix style of bigram representation -may be more appropriate. If the \texttt{-o} option is omitted in -the above invocation of \htool{HLStats}, then a simple full bigram -matrix will be output using the format -\begin{verbatim} - !ENTER 0 P(W1 | !ENTER) P(W2 | !ENTER) ..... - W1 0 P(W1 | W1) P(W2 | W1) ..... - W2 0 P(W1 | W2) P(W2 | W2) ..... - ... - !EXIT 0 PN PN ..... -\end{verbatim} -where the probability $P(w_j|w_i)$ is given by row $i,j$ of the matrix. -If there are a total of N words in the vocabulary then \texttt{PN} -in the above is set to $1/(N+1)$, this ensures that the last row -sums to one. As a very crude form of smoothing, a floor can be set -using the \texttt{-f minp} option to prevent any entry falling -below \texttt{minp}. Note, however, that this does not affect the -bigram entries in the first -column which are zero by definition. Finally, as with the storage -of tied-mixture and discrete probabilities, a run-length encoding -scheme is used whereby any value can be followed by an -asterisk and a repeat count (see section~\ref{s:tmix}). - -\mysect{Building a Word Network with \htool{HBuild}}{usehbuild} - -\sidefig{decinet}{62}{Decimal Syntax}{-2}{ -As mentioned in the introduction, the main function of \htool{HBuild} -is allow a word-level network to be constructed from -a main lattice and a set of sub-lattices\index{sub-lattices}. Any lattice -can contain node definitions which refer to other lattices. -This allows a word-level recognition network to be decomposed -into a number of sub-networks which can be reused at different -points in the network. -}\index{hbuild@\htool{HBuild}} - -For example, suppose that decimal number -input was required. A suitable network structure would be -as shown in Fig.~\href{f:decinet}. However, to write this directly -in an SLF file would require the digit loop to be written twice. -This can be avoided by defining the digit loop as a sub-network -and referencing it within the main \textit{decimal} network as -follows - -\begin{verbatim} - # Digit network - SUBLAT=digits - N=14 L=21 - # define digits - I=0 W=zero - I=1 W=one - I=2 W=two - ... - I=9 W=nine - # enter/exit & loop-back null nodes - I=10 W=!NULL - I=11 W=!NULL - I=12 W=!NULL - I=13 W=!NULL - # null->null->digits - J=0 S=10 E=11 - J=1 S=11 E=0 - J=2 S=11 E=1 - ... - J=10 S=11 E=9 - # digits->null->null - J=11 S=0 E=12 - ... - J=19 S=9 E=12 - J=20 S=12 E=13 - # finally add loop back - J=21 S=12 E=11 - . - - # Decimal netork - N=5 L=4 - # digits -> point -> digits - I=0 W=start - I=1 L=digits - I=2 W=pause - I=3 L=digits - I=4 W=end - # digits -> point -> digits - J=0 S=0 E=1 - J=1 S=1 E=2 - J=2 S=2 E=3 - J=3 S=3 E=4 -\end{verbatim} -The sub-network is identified by the field -\texttt{SUBLAT}\index{sublat@\texttt{SUBLAT}} in the header -and it is terminated by a single period on a line by itself. The -main body of the sub-network is written as normal. -Once defined, a sub-network can be substituted into a higher level -network using an \texttt{L} field in a node definition, as in nodes -1 and 3 of the decimal network above. - -Of course, this process can be continued and a higher level network -could reference the decimal network wherever it needed decimal -number entry. - -\centrefig{bobig}{100}{Back-off Bigram Word-Loop Network} - -One of the commonest form of recognition network is the -word-loop\index{word-loop network} -where all vocabulary items are placed in parallel with a loop-back -to allow any word sequence to be recognised. This is the basic -arrangement used in most dictation or transcription applications. -\htool{HBuild} can build such a loop automatically from a list -of words. It can also read in a bigram in either ARPA MIT-LL -format or HTK matrix format and attach a bigram probability to -each word transition. Note, however, that using a full bigram -language model means that every distinct pair of words must -have its own unique loop-back transition. This increases the size of -the network considerably and slows down the recogniser. -When a back-off bigram is used, however, backed-off transitions -can share a common loop-back transition. Fig.~\href{f:bobig} -illustrates this. When backed-off bigrams are input via an ARPA MIT-LL -format file, \htool{HBuild} will exploit this where possible. - -Finally, \htool{HBuild} can automatically construct a -word-pair grammar\index{word-pair grammar} as -used in the ARPA Naval Resource Management task. - - -\mysect{Testing a Word Network using \htool{HSGen}}{usehsgen} - -When designing task grammars, it is useful to be able to check -that the language defined by the final word network is as envisaged. -One simple way to check this is to use the network as a generator by -randomly traversing it and outputting the name of each word node -encountered. \HTK\ provides a very simple tool called -\htool{HSGen}\index{hsgen@\htool{HSGen}} -for doing this. - -As an example if the file \texttt{bnet} contained the simple Bit-But -netword described above and the file \texttt{bdic} contained a corresponding -dictionary then the command -\begin{verbatim} - HSGen bnet bdic -\end{verbatim} -would generate a random list of examples of the language -defined by \texttt{bnet}, for example, -\begin{verbatim} - start bit but bit bit bit end - start but bit but but end - start bit bit but but end - .... etc -\end{verbatim} -This is perhaps not too informative in this case but for more -complex grammars, this type of output can be quite illuminating. - -\htool{HSGen} will also estimate the empirical entropy -by recording -the probability of each sentence generated\index{sentence generation}. -To use this facility, it -is best to suppress the sentence output and generate a large number -of examples. For example, executing -\begin{verbatim} - HSGen -s -n 1000 -q bnet bdic -\end{verbatim} -where the \texttt{-s} option requests statistics, the \texttt{-q} option -suppresses the output and \texttt{-n 1000} asks for 1000 sentences -would generate the following output -\begin{verbatim} - Number of Nodes = 4 [0 null], Vocab Size = 4 - Entropy = 1.156462, Perplexity = 2.229102 - 1000 Sentences: average len = 5.1, min=3, max=19 -\end{verbatim} - -\mysect{Constructing a Dictionary}{usehdman} - -As explained in section~\ref{s:netuse}, the word level network is expanded by -\htool{HNet} to create the network of HMM instances needed by the recogniser. -The way in which each word is expanded is determined from a -dictionary\index{dictionary!construction}. - -A dictionary for use in \HTK\ has a very simple format.\index{dictionary!formats} -Each line consists of a single word pronunciation with format -\begin{verbatim} - WORD [ '['OUTSYM']' ] [PRONPROB] P1 P2 P3 P4 .... -\end{verbatim} -where \texttt{WORD} represents the word, followed by the optional -parameters \texttt{OUTSYM} and \texttt{PRONPROB}, where -\texttt{OUTSYM} is the symbol to output when that word is -recognised (which must be enclosed in square brackets, \verb|[| and -\verb|]|) and \texttt{PRONPROB} is the pronunciation probability -($0.0$ - $1.0$). \texttt{P1}, \texttt{P2}, \ldots is the sequence of -phones or HMMs to be used in recognising that word. The output symbol -and the pronunciation probability are optional. If an output symbol is -not specified, the name of the word itself is output. If a -pronunciation probability is not specified then a default of 1.0 is -assumed. Empty square brackets, -\texttt{[]}, can be used to suppress any output when that word is recognised. -For example, a dictionary might contain -\begin{verbatim} - bit b ih t - but b ah t - dog [woof] d ao g - cat [meow] k ae t - start [] sil - end [] sil -\end{verbatim} - -\noindent -If any word has more than one pronunciation, then the word -has a repeated entry, for example, -\begin{verbatim} - the th iy - the th ax -\end{verbatim} -corresponding to the stressed and unstressed forms of the word -``the''.\index{dictionary!output symbols} - -The pronunciations in a dictionary are normally at the phone -level as in the above examples. However, if context-dependent -models are wanted, these can be included directly in the dictionary. -For example, the Bit-But entries might be written as -\begin{verbatim} - bit b+ih b-ih+t ih-t - but b+ah b-ah+t ah-t -\end{verbatim} -In principle, this is never necessary since \htool{HNet} can perform context -expansion automatically, however, it saves computation to do this -off-line as part of the dictionary construction process. Of course, -this is only possible for word-internal context dependencies. -Cross-word dependencies can only be generated by \htool{HNet}. - -\centrefig{dmaker}{110}{Dictionary Construction using \htool{HDMan}} - -Pronouncing dictionaries are a valuable resource and if produced -manually, they can require considerable investment. There are -a number of commercial and public domain dictionaries available, -however, these will typically have differing formats and will -use different phone sets. To assist in the process of -dictionary construction, \HTK\ provides a tool called \htool{HDMan} -which can be used to edit and merge differing source dictionaries -to form a single uniform dictionary. The way that -\htool{HDMan}\index{hdman@\htool{HDMan}} works is illustrated in Fig.~\href{f:dmaker}. - -Each source dictionary file must have one pronunciation per line and the -words must be sorted into alphabetical order. The word entries must be -valid \HTK\ strings as defined in section~\ref{s:htkstrings}. If an -arbitrary character sequence is to be allowed, then the input edit -script should have the command \texttt{IM RAW} as its first command. - -The basic operation of -\htool{HDMan} is to scan the input streams and for each new word -encountered, copy the entry to the output. In the figure, a word list -is also shown. This is optional but if included -\htool{HDMan} only copies words in the list. Normally, \htool{HDMan} -copies just the first pronunciation that it finds for any word. Thus, -the source dictionaries are usually arranged in order of -\textit{reliability}, possibly preceded by a small dictionary of special -word pronunciations. For example, in Fig.~\href{f:dmaker}, the main -dictionary might be \texttt{Src2}. \texttt{Src1} might be a small -dictionary containing correct pronunciations for words in \texttt{Src2} -known to have errors in them. Finally, \texttt{Src3} might be a large -poor quality dictionary (for example, it could be generated -by a rule-based text-to-phone system) which is included as a last resort -source of pronunciations for words not in the main dictionary. - -As shown in the figure, \htool{HDMan} can apply a set of editing -commands to each source dictionary and it can also edit the -output stream. The commands available are described in full in -the reference section. They operate in a similar way to -those in \htool{HLEd}. Each set of commands is written in -an edit script with one command per line. Each input edit script -has the same name as the corresponding source dictionary but with -the extension \texttt{.ded} added. The output edit script is stored -in a file called \texttt{global.ded}\index{global@\texttt{global.ded}}. -The commands provided -include replace and delete at the word and phone level, context-sensitive -replace and automatic conversions to left biphones, right biphones -and word internal triphones.\index{dictionary!edit commands} - -When \htool{HDMan} loads a dictionary it adds word boundary symbols to -the start and end of each pronunciation and then deletes them when -writing out the new dictionary. The default for these word boundary -symbols is \texttt{\#} but it can be redefined using the \texttt{-b} -option. The reason for this is to allow context-dependent edit commands -to take account of word-initial and word-final phone positions. -The examples below will illustrate this. - -Rather than go through each \htool{HDMan} edit command in detail, some examples -will illustrate the typical manipulations that can be performed -by \htool{HDMan}. Firstly, suppose that a dictionary transcribed -unstressed ``-ed'' endings as \texttt{ih0 d} -but the required dictionary -does not mark stress but uses a schwa in such cases, that is, -the transformations\index{mp@\texttt{MP} command}\index{sp@\texttt{SP} command} -\begin{verbatim} - ih0 d # -> ax d - ih0 -> ih (otherwise) -\end{verbatim} -are required. -These could be achieved by the following 3 commands -\begin{verbatim} - MP axd0 ih0 d # - SP axd0 ax d # - RP ih ih0 -\end{verbatim} -The context sensitive replace is achieved by merging all sequences -of \texttt{ih0 d \#} and then splitting the result into the sequence -\texttt{ax d \#}. The final \texttt{RP} command\index{rp@\texttt{RP} command} then unconditionally -replaces all occurrences of \texttt{ih0} by \texttt{ih}. -As a second similar example, suppose that all examples of \texttt{ax l} -(as in ``bottle'') are to be replaced by the single phone \texttt{el} -provided that the immediately following phone is a non-vowel. -This requires the use of the \texttt{DC} command\index{dc@\texttt{DC} command} to define a -context consisting of all non-vowels, then a merge using \texttt{MP} -as above followed by a context-sensitive replace -\begin{verbatim} - DC nonv l r w y .... m n ng # - MP axl ax l - CR el * axl nonv - SP axl ax l -\end{verbatim} -the final step converts all non-transformed cases of \texttt{ax l} -back to their original form. - -As a final example, a typical output transformation applied via -the edit script \texttt{global.ded} will convert all phones to -context-dependent form and append a short pause model \texttt{sp} -at the end of each pronunciation. The following two commands will -do this -\begin{verbatim} - TC - AS sp -\end{verbatim} -For example, these commands would convert the dictionary entry -\begin{verbatim} - BAT b ah t -\end{verbatim} -into -\begin{verbatim} - BAT b+ah b-ah+t ah-t sp -\end{verbatim} - -Finally, if the \texttt{-l} option is set, -\htool{HDMan} will generate a log file containing -a summary of the pronunciations used from each source and -how many words, if any are missing. It is also possible to -give \htool{HDMan} a phone list using the \texttt{-n} option. -In this case, \htool{HDMan} will record how many times each phone -was used and also, any phones that appeared in pronunciations but -are not in the phone list. This is useful for detecting errors and -unexpected phone symbols in the source dictionary. - -\mysect{Word Network Expansion}{netexpand} - -\index{word network@expansion rules} -Now that word networks and dictionaries have been explained, -the conversion of word level networks -to model-based recognition networks will be described. Referring -again to Fig~\href{f:recsys}, this expansion -is performed automatically by the module \htool{HNet}. By default, -\htool{HNet} attempts to infer the required expansion from the -contents of the dictionary and the associated list of HMMs. -However, 5 configurations parameters are supplied to apply -more precise control where required: -\texttt{ALLOWCXTEXP}\index{allowcxtexp@\texttt{ALLOWCXTEXP}}, -\texttt{ALLOWXWRDEXP}\index{allowxwrdexp@\texttt{ALLOWXWRDEXP}}, -\texttt{FORCECXTEXP}\index{forcecxtexp@\texttt{FORCECXTEXP}}, -\texttt{FORCELEFTBI}\index{forceleftbi@\texttt{FORCELEFTBI}} and -\texttt{FORCERIGHTBI}\index{forcerightbi@\texttt{FORCERIGHTBI}}. - -The expansion proceeds in four stages. -\begin{enumerate} -\item \textit{Context definition} \\ -The first step is to determine how model -names are constructed from the dictionary entries and whether -cross-word context expansion should be performed. -The dictionary is scanned and each distinct phone is -classified as either -\begin{enumerate} -\item \textit{Context Free} \\ - In this case, the phone is skipped when determining context. - An example is a model (\texttt{sp}) for short pauses. - This will typically be inserted at the end of every word - pronunciation but since it tends to cover a very short - segment of speech it should not block context-dependent - effects in a cross-word triphone system. -\item \textit{Context Independent} \\ - The phone only exists in context-independent form. A typical - example would be a silence model (\texttt{sil}). - Note that the distinction that would be made by \htool{HNet} between - \texttt{sil} and \texttt{sp} is that whilst both would - only appear in the HMM set - in context-independent form, \texttt{sil} would appear in the contexts - of other phones whereas \texttt{sp} would not. -\item \textit{Context Dependent} \\ - This classification depends on whether a phone appears in the context - part of the name and whether - any context dependent versions of the phone exist in the HMMSet. - Context Dependent phones will be subject to model name expansion. -\end{enumerate} - -\item \textit{Determination of network type} \\ -The default behaviour is to produce the simplest network -possible. If the dictionary is closed (every phone name appears -in the HMM list), then no expansion of phone names is performed. -The resulting network is generated by straightforward -substitution of each dictionary pronunciation for each -word in the word network. If the dictionary is not closed, -then if word internal context expansion -would find each model in the HMM set then word internal -context expansion is used. -Otherwise, full cross-word -context expansion is applied. - -The determination of the network type\index{network type} can be modified by -using the configuration parameters mentioned earlier. By default -\texttt{ALLOWCXTEXP} is set true. If \texttt{ALLOWCXTEXP} is set false, then -no expansion of phone names is performed and each phone corresponds to the -model of the same name. The default value of \texttt{ALLOWXWRDEXP} is false thus -preventing context expansion across word boundaries. This also limits the -expansion of the phone labels in the dictionary to word internal contexts -only. If \texttt{FORCECXTEXP} is set true, then context expansion will be -performed. For example, if the HMM set contained all monophones, all biphones -and all triphones, then given a monophone dictionary, the default behaviour of -\htool{HNet} would be to generate a monophone recognition network since the -dictionary would be closed. However, if \texttt{FORCECXTEXP} is set true and -\texttt{ALLOWXWRDEXP} is set false then word internal context expansion will -be performed. If \texttt{FORCECXTEXP} is set true and \texttt{ALLOWXWRDEXP} is -set true then full cross-word context expansion will be performed. - -\item \textit{Network expansion} \\ -Each word in the word network is transformed into a \textit{word-end} -node preceded by the sequence of model nodes corresponding to -the word's pronunciation. -For cross word context expansion, the initial and final context -dependent phones (and any preceding/following context independent -ones) are duplicated as many times as is necessary -to cater for each different cross -word context. Each duplicated word-final phone is followed by -a similarly duplicated word-end node. -Null words are simply transformed into word-end nodes with -no preceding model nodes. - -\item \textit{Linking of models to network nodes} \\ -Each model node is linked to the corresponding HMM definition. -In each case, the required HMM model name is -determined from the phone name and the surrounding -context names. The algorithm used for this is -\begin{enumerate} -\item Construct the context-dependent name and see if the - corresponding model exists. -\item Construct the context-independent name and see if the - corresponding model exists. -\end{enumerate} -If the configuration variable \texttt{ALLOWCXTEXP} is false (a) -is skipped and if the configuration variable \texttt{FORCECXTEXP} is true -(b) is skipped. If no matching model is found, an error is -generated. When the right context -is a boundary or \texttt{FORCELEFTBI} is true, then the -context-dependent name takes the form of a left biphone, that is, -the phone \texttt{p} with left context \texttt{l} becomes \texttt{l-p}. -When the left context -is a boundary or \texttt{FORCERIGHTBI} is true, then the -context-dependent name takes the form of a right biphone, that is, -the phone \texttt{p} with right context \texttt{r} becomes \texttt{p+r}. -Otherwise, the context-dependent name is a full triphone, that is, -\texttt{l-p+r}. -Context-free phones are skipped in this process so -\begin{verbatim} - sil aa r sp y uw sp sil -\end{verbatim} -would be expanded as -\begin{verbatim} - sil sil-aa+r aa-r+y sp r-y+uw y-uw+sil sp sil -\end{verbatim} -assuming that \texttt{sil} is context-independent and \texttt{sp} is -context-free. -\index{cfwordboundary@\texttt{CFWORDBOUNDARY}} For word-internal systems, -the context expansion can be further controlled via the configuration variable -\texttt{CFWORDBOUNDARY}. When set true (default setting) context-free phones -will be treated as word boundaries so -\begin{verbatim} - aa r sp y uw sp -\end{verbatim} -would be expanded to -\begin{verbatim} - aa+r aa-r sp y+uw y-uw sp -\end{verbatim} -Setting \texttt{CFWORDBOUNDARY} false would produce -\begin{verbatim} - aa+r aa-r+y sp r-y+uw y-uw sp -\end{verbatim} - -\end{enumerate} -Note that in practice, stages (3) and (4) above actually proceed concurrently -so that for the first and last phone of context-dependent models, logical -models which have the same underlying physical model can be merged. - -\centrefig{mononet}{100}{Monophone Expansion of Bit-But Network} - -Having described the expansion process in some detail, some simple -examples will help clarify the process. All of these are based -on the Bit-But word network illustrated in Fig.~\href{f:wdnet}. -Firstly, assume that the dictionary contains simple monophone -pronunciations, that is -\begin{verbatim} - bit b i t - but b u t - start sil - end sil -\end{verbatim} -and the HMM set consists of just monophones -\begin{verbatim} - b i t u sil -\end{verbatim} -In this case, \htool{HNet} will find a closed dictionary. There will -be no expansion and it will directly generate the network -shown in Fig~\href{f:mononet}. In this figure, the rounded boxes -represent model nodes and the square boxes represent word-end nodes. - -Similarly, if the dictionary -contained word-internal triphone pronunciations such as -\begin{verbatim} - bit b+i b-i+t i-t - but b+u b-u+t u-t - start sil - end sil -\end{verbatim} -and the HMM set contains all the required models -\begin{verbatim} - b+i b-i+t i-t b+u b-u+t u-t sil -\end{verbatim} -then again \htool{HNet} will find a closed dictionary -and the network shown in Fig.~\href{f:wintnet} would be generated. - -\centrefig{wintnet}{100}{Word Internal Triphone Expansion of Bit-But Network} - -If however the dictionary contained just the simple monophone pronunciations -as in the first case above, but the HMM set contained just triphones, -that is -\begin{verbatim} - sil-b+i t-b+i b-i+t i-t+sil i-t+b - sil-b+u t-b+u b-u+t u-t+sil u-t+b sil -\end{verbatim} -then \htool{HNet} would perform full cross-word expansion and -generate the network shown in Fig.~\href{f:xwrdnet}. - -\centrefig{xwrdnet}{100}{Cross-Word Triphone Expansion of Bit-But Network} - -Now suppose that still using the simple monophone pronunciations, -the HMM set contained all monophones, biphones and triphones. In this -case, the default would be to generate the monophone network of -Fig~\href{f:mononet}. If \texttt{FORCECXTEXP} is true but -\texttt{ALLOWXWRDEXP} is set false then the word-internal -network\index{word-internal network expansion} -of Fig.~\href{f:wintnet} would be generated. Finally, if both -\texttt{FORCECXTEXP} and -\texttt{ALLOWXWRDEXP} are set true then the cross-word network -\index{cross-word network expansion} -of Fig.~\href{f:xwrdnet} would be generated. - -\mysect{Other Kinds of Recognition System}{othernets} - -Although the recognition facilities of \HTK\ are aimed primarily -at sub-word based connected word recognition, it can nevertheless -support a variety of other types of recognition system. - -To build a phoneme recogniser, a word-level network is defined using -an SLF file in the usual -way except that each ``word'' in the network represents a single phone. -The structure of the network will typically be a loop in which all -phones loop back to each other.\index{phone recognition} - -The dictionary then contains an entry for each ``word'' such that the word and -the pronunciation are the same, for example, the dictionary might contain -\begin{verbatim} - ih ih - eh eh - ah ah - ... etc -\end{verbatim} - -Phoneme recognisers often use biphones to provide some measure of -context-dependency. Provided that the HMM set contains all the necessary -biphones, then \htool{HNet} will expand a simple phone loop into a context-sensitive -biphone loop simply by setting the configuration variable -\texttt{FORCELEFTBI} or \texttt{FORCERIGHTBI} to true, as appropriate. - -Whole word recognisers can be set-up in a similar way. The word network -is designed using the same considerations as for a sub-word based system -but the dictionary gives the name of the whole-word HMM in place of each -word pronunciation.\index{whole word recognition} - -Finally, word spotting\index{word spotting} systems can be defined by placing each keyword -in a word network in parallel with the appropriate filler models. -The keywords can be whole-word models or subword based. Note in this -case that word transition penalties placed on the transitions can be -used to gain fine control over the false alarm rate. - - -%%% Local Variables: -%%% mode: plain-tex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/openviron.tex b/HTKBook/openviron.tex deleted file mode 100644 index 2114fe7..0000000 --- a/HTKBook/openviron.tex +++ /dev/null @@ -1,764 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001-2002 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{The Operating Environment}{openviron} - -\sidepic{Tool.shell}{80}{ -This chapter discusses the various ways of controlling the operation of -\HTK\ tools along with related aspects of file system organisation, error -reporting and memory management. All of the operating -system\index{operating system} and user -interface functions are provided by the \HTK\ -module \htool{HShell}. -Memory management is a low level function which is largely invisible to -the user, but it is useful to have a basic understanding of it in order to -appreciate memory requirements and interpret diagnostic output from -tools. Low level memory management in \HTK\ is provided by -\htool{HMem} and the management of -higher level structures such as vectors -and matrices is provided by \htool{HMath}. -} -\index{hshell@\htool{HShell}} -\index{hmath@\htool{HMath}} -\index{hmem@\htool{HMem}} - -The behaviour of a \HTK\ tool depends on three sources of information. -Firstly, -all \HTK\ tools are executed by issuing commands to the operating -system shell. -Each command typically contains the names of the various files that the -tool needs to function and a number of optional arguments which -control the detailed behaviour of the tool. -Secondly, -as noted in chapter~\ref{c:htkoview} and shown in the adjacent figure, every \HTK\ tool uses a set -of standard library modules to interface to the various file types and -to connect with the outside world. Many of these modules can be -customised by setting parameters in a {\it configuration file}. -Thirdly, a small number of parameters are specified using -environment variables. - -Terminal output mostly depends on the specific tool -being used, however, there -are some generic output functions which are provided by the library -modules and which are therefore common across tools. These include -version reporting, memory usage and error reporting. - -Finally, \HTK\ can read and write most data sources through pipes\index{pipes} as an alternative -to direct input and output from data files. This allows -filters to be used, and in particular, it allows many of the external -files used by \HTK\ to be stored directly in compressed form and then decompressed -\textit{on-the-fly} when the data is read back in. - -All of the above is discussed in more detail in the following sections. - -\mysect{The Command Line}{cmdline} - -The general form of command line for invoking a tool -is\footnote{All of the examples in this book assume the -UNIX Operating System and the C Shell but the principles apply to -any OS which supports hierarchical files and command line arguments} -\index{command line!arguments}\index{command line!options} -\begin{verbatim} - tool [options] files ... -\end{verbatim} -Options always consist of a dash followed by a single letter. Some options -are followed by an argument as follows -\begin{tabbing} -+++++ \= ++++++++++++ \= \kill -\> \texttt{-i} \> - a switch option \\ -\> \texttt{-t 3} \> - an integer valued option \\ -\> \texttt{-a 0.01} \> - a float valued option \\ -\> \texttt{-s hello} \> - a string valued option -\end{tabbing} -Option names consisting of a capital letter are common across all tools -(see section~\ref{s:stdopts}). -Integer arguments\index{command line!integer argument formats} may be given -in any of the standard C formats, for example, -\texttt{13}, \texttt{0xD} and \texttt{015} all represent the same number. -Typing the name of a tool on its own always causes a short summary of -the command line options to be printed in place of its normal -operation. For example, typing -\begin{verbatim} - HERest -\end{verbatim} -would result in the following output -\begin{verbatim} - USAGE: HERest [options] hmmList dataFiles... - - Option Default - - -c f Mixture pruning threshold 10.0 - -d s dir to find hmm definitions current - -m N set min examples needed per model 3 - -o s extension for new hmm files as src - -p N set parallel mode to N off - ... -\end{verbatim} -The first line shows the names of the required files and the rest -consists of a listing of each option, its meaning, and its default -value. - -The precise naming convention for specifying files depends on the operating -system being used, but \HTK\ always assumes the existence of a hierarchical -file system and it maintains a distinction between directory paths -and file names. - -In general, a file will be located either in -the current directory, some subdirectory of the current directory or some -subdirectory of the root directory. For example, in the command -\begin{verbatim} - HList s1 dir/s2 /users/sjy/speech/s3 -\end{verbatim} -file \texttt{s1} must be in the current directory, \texttt{s2} must be in the -directory \texttt{dir} within the current directory and \texttt{s3} must be in the -directory \texttt{/users/sjy/speech}. - -Some tools allow directories to be specified via configuration -parameters and command line options. In all cases, the final path -character (eg / in UNIX) need not (but may be) -included. For example, both of the following are acceptable and have -equivalent effect -\begin{verbatim} - HInit -L mymodels/new/ hmmfile data* - HInit -L mymodels/new hmmfile data* -\end{verbatim} -where the \texttt{-L} option specifies the directory in which to find the -label files associated with the data files. - -\mysect{Script Files}{script} - -Tools which require a potentially very long list of files (e.g.\ training -tools) always allow the files to be specified in a script\index{files!script} -file\index{script files} via the \texttt{-S} option instead of via the command -line. -\index{standard options!aaas@\texttt{-S}}This is particularly useful when running -under an OS with limited file name expansion capability. Thus, for example, -\htool{HInit}\index{hinit@\htool{HInit}} may be invoked by either -\begin{verbatim} - HInit hmmfile s1 s2 s3 s4 s5 .... -\end{verbatim} -or -\begin{verbatim} - HInit -S filelist hmmfile -\end{verbatim} -where \texttt{filelist} holds the list of files \texttt{s1}, \texttt{s2}, etc. -Each file listed in a script should be separated by white space or a new line. -Usually, files are listed on separate lines, however, when using -\htool{HCopy}\index{hcopy@\htool{HCopy}} which read pairs of files as its -arguments, it is normal to write each pair on a single line. Script files -should only be used for storing ellipsed\index{command line!ellipsed arguments} -file list arguments. Note that shell meta-characters should not be -used in script files and will not be interpreted by the \HTK\ tools. - -Starting with \HTK\ 3.1 the syntax of script files has been extended. -In addition to directly specifying the name of a physical file it is -possible to define aliases and to select a segment from a file. The -general syntax of an extended filename \index{extended filenames} is -\begin{verbatim} - logfile=physfile[s,e] -\end{verbatim} -where \texttt{logfile} is the logical filename used by the HTK tools -and will appear in mlf files and similar. \texttt{physfile} is the -physical name of the actual file on disk that will be accessed and -\texttt{s} and \texttt{e} are indices that can be used to select only -a segment of the file. One example of a use of this feature is the -evaluation of different segmentations of the audio data. A new -segmentation can be used by creating a new script file without having -to create multiple copies of the data. - -A typical script file might look like: -\begin{verbatim} -s23-0001-A_000143_000291.plp=/data/plp/complete/s23-0001-A.plp[143,291] -s23-0001-A_000291_000500.plp=/data/plp/complete/s23-0001-A.plp[291,500] -s23-0001-A_000500_000889.plp=/data/plp/complete/s23-0001-A.plp[500,889] -\end{verbatim} - - -\mysect{Configuration Files}{config} - -Configuration files\index{configuration files|(}\index{files!configuration} -are used for customising the \HTK\ working environment. -They consist of a list of parameter-values pairs along with an optional -prefix which limits the scope of the parameter to a specific module -or tool. - -The name of a configuration file can be specified explicitly on the -command line using the \texttt{-C}\index{standard -options!aaac@\texttt{-C}} command. For example, when executing -\begin{verbatim} - HERest ... -C myconfig s1 s2 s3 s4 ... -\end{verbatim} -The operation of \htool{HERest} will depend on the parameter settings -in the file \texttt{myconfig}. - -When an explicit configuration file is specified, only those parameters mentioned -in that file are actually changed and all other parameters retain their -default values. These defaults are built-in. However, user-defined defaults -can be set by assigning the name of a default configuration file to -the environment variable \texttt{HCONFIG}\index{HCONFIG@\texttt{HCONFIG}}. -\index{configuration files!default} -Thus, for example, using the UNIX C Shell, writing -\begin{verbatim} - setenv HCONFIG myconfig - HERest ... s1 s2 s3 s4 ... -\end{verbatim} -would have an identical effect to the preceding example. However, in this -case, a further refinement of the configuration values is possible since -the opportunity to specify an explicit configuration file on the command -line remains. For example, in -\begin{verbatim} - setenv HCONFIG myconfig - HERest ... -C xconfig s1 s2 s3 s4 ... -\end{verbatim} - -\sidefig{Config}{60}{Defining a Configuration}{2} -\noindent -the parameter values in \texttt{xconfig} will over-ride those in -\texttt{myconfig} which in turn will over-ride the built-in defaults. -In practice, most \HTK\ users will set general-purpose -default configuration values using \texttt{HCONFIG} and will then over-ride -these as required for specific tasks using the \texttt{-C} command line option. -This is illustrated in Fig.~\href{f:Config} where the darkened rectangles -indicate \textit{active} parameter definitions. -Viewed from above, -all of the remaining parameter definitions can be seen to be masked by -higher level over-rides. - -The configuration file itself consists of a sequence of parameter -definitions of the form\index{configuration files!format} -\begin{verbatim} - [MODULE:] PARAMETER = VALUE -\end{verbatim} -One parameter definition is written per line and square brackets -indicate that the module name is -optional. Parameter definitions are not case sensitive -but by convention they are written in upper case. A \verb+#+ character -indicates that the rest of the line is a comment. - -As an example, the following is a simple configuration file -\begin{verbatim} - # Example config file - TARGETKIND = MFCC - NUMCHANS = 20 - WINDOWSIZE = 250000.0 # ie 25 msecs - PREEMCOEF = 0.97 - ENORMALISE = T - HSHELL: TRACE = 02 # octal - HPARM: TRACE = 0101 -\end{verbatim} -The first five lines contain no module name and hence they apply -globally, that is, any library module or tool which is interested -in the configuration parameter \texttt{NUMCHANS} will read the given -parameter value. In practice, this is not a problem with library modules -since nearly all configuration parameters have unique -names. The final two lines show the same parameter name being given -different values within different modules. This is an example of -a parameter which every module responds to and hence does not have a unique -name. - -This example also shows each of the four possible types of value that can -appear in a configuration file: string\index{string values}, -integer\index{integer values}, float\index{float values} and -Boolean\index{Boolean values}. -The configuration parameter \texttt{TARGETKIND} -\index{targetkind@\texttt{TARGETKIND}} requires a string -value specifying the name of a speech parameter kind. Strings not -starting with a letter should be enclosed in double quotes. -\texttt{NUMCHANS}\index{numchans@\texttt{NUMCHANS}} requires an -integer value specifying the number of -filter-bank channels to use in the analysis. -\texttt{WINDOWSIZE}\index{windowsize@\texttt{WINDOWSIZE}} actually requires a floating-point value -specifying the window size in units of 100ns. However, an integer -can always be given wherever a float is required. -\texttt{PREEMCOEF} also requires a floating-point value specifying the -pre-emphasis coefficient to be used. Finally, \texttt{ENORMALISE} -\index{enormalise@\texttt{ENORMALISE}} is -a Boolean parameter which determines whether or not energy -normalisation is to be performed, its value must be \texttt{T}, \texttt{TRUE} or -\texttt{F}, \texttt{FALSE}. Notice also that, as in command line options, -integer values can use the C conventions for writing in non-decimal bases. -Thus, the trace value of 0101 is equal to decimal 65. This is particularly -useful in this -case because trace values are typically interpreted as bit-strings by -\HTK\ modules and tools.\index{configuration files!types} - -If the name of a configuration variable is mis-typed, there will be no -warning and the variable will simply be ignored. To help guard -against this, the standard option \texttt{-D} can be used. This -displays all of the configuration variables before and after the tool -runs. In the latter case, all configuration variables which are still -unread are marked by a hash character. The initial display allows the -configuration values to be checked before potentially wasting a large -amount of cpu time through incorrectly set parameters. The final -display shows which configuration variables were actually used during -the execution of the tool. The form of the output is shown by the -following example -\begin{verbatim} - HTK Configuration Parameters[3] - Module/Tool Parameter Value - # SAVEBINARY TRUE - HPARM TARGETRATE 256000.000000 - TARGETKIND MFCC_0 -\end{verbatim} -Here three configuration parameters have been set but the hash -(\verb+#+) indicates that \texttt{SAVEBINARY} has not been used. -\index{configuration variables!display} -\index{configuration files|)} - -\mysect{Standard Options}{stdopts} - -\index{standard options} As noted in section~\ref{s:cmdline}, options -consisting of a capital letter are common across all tools. Many are -specific to particular file types and they will be introduced as they -arise. However, there are six options that are standard across all -tools. Three of these have been mentioned already. The -option \texttt{-C}\index{standard options!aaac@\texttt{-C}} is used to -specify a configuration file name and the option -\texttt{-S}\index{standard options!aaas@\texttt{-S}} is used to -specify a script file name, whilst the option -\texttt{-D}\index{standard options!aaad@\texttt{-D}} is used to -display configuration settings. - -The two remaining standard options provided directly by -\htool{HShell} are \texttt{-A}\index{standard options!aaaa@\texttt{-A}} -and \texttt{-V}. -The option \texttt{-A} causes the current command line arguments to -be printed. When running experiments via -scripts, it is a good idea to use this option to record in a log file the -precise settings used for each tool. -The option \texttt{-V}\index{standard options!aaav@\texttt{-V}} -causes version information for the tool and each module used by that -tool to be listed. These should always be quoted when making bug reports. - -Finally, all tools implement the trace -option \texttt{-T}\index{standard options!aaat@\texttt{-T}}. -Trace values are typically bit strings and the meaning of each bit -is described in the reference section for each tool. Setting a trace\index{tracing} -option via the command line overrides any setting for that same trace -option in a configuration file. This is a general rule, command line -options always override defaults set in configuration files. - -All of the standard options are listed in the final summary section of -this chapter. As a general rule, you should consider passing at least --A -D -V -T 1 to all tools, which will guarantee that sufficient -information is available in the tool output. - - -\mysect{Error Reporting}{erep} - -The \htool{HShell} module provides a standard mechanism for reporting -errors\index{errors} and warnings\index{warnings}. -A typical error message is as follows -\begin{verbatim} - HList: ERROR [+1110] - IsWave: cannot open file speech.dat -\end{verbatim} -This indicates that the tool \htool{HList} is reporting an error -number +1110. All errors have positive error -numbers\index{error numbers!structure of} and always -result in the tool terminating. Warnings have negative error numbers -and the tool does not terminate. The first two digits of an error -number indicate the module or tool in which the error is located -(\htool{HList} in this case) -and the last two digits define the class of error. -The second line of the error message names the actual routine -in which the error occurred (here \texttt{IsWave}) and the -actual error message. All errors and warnings are listed -in the reference section at the end of this book indexed by -error/warning number. This listing contains more details on each -error or warning along with suggested causes. - -Error messages are sent to the standard error stream but warnings -are sent to the standard output stream. The reason for the latter -is that most -\HTK\ tools are run with progress tracing enabled. Sending warnings -to the standard output stream ensures that they are properly -interleaved with the trace of progress so that it is easy to determine -the point at which the warning was issued. Sending warnings to -standard error would lose this information. - -The default behaviour of a \HTK\ tool on terminating due to an -error is to exit normally returning the error number as exit status. -If, however, the configuration variable -\texttt{ABORTONERR}\index{abortonerr@\texttt{ABORTONERR}} is set to -true then the tool will core dump. This is a debugging facility which -should not concern most users.\index{termination} - -\mysect{Strings and Names}{htkstrings} - -Many \HTK\ definition files include names of various types of -objects: for example labels, model names, words, etc. -In order to achieve some uniformity, \HTK\ applies standard -rules for reading strings which are names.\index{strings!rules for} -These rules are not, however, necessary when using the language -modelling tools -- see below. - -A name string consists of a single white space delimited word or -a quoted string. Either the single quote \verb+'+ or -the double quote \verb+"+ can be used to quote strings but the -start and end quotes must be matched. The backslash \verb+\+ -character can also -be used to introduce otherwise reserved characters. The -character following a backslash is inserted into the string without special -processing unless that character is a digit in the range 0 to 7. -In that case, the three -characters following the backslash are read and interpreted as an octal -character code. When the three characters are not octal digits the result -is not well defined.\index{strings!metacharacters in} - -In summary the special processing is -\begin{center} -\begin{tabular}{|c|l|} \hline -Notation & Meaning \\ \hline -\verb+\\+ & \verb+\+ \\ \hline -\verb+\_ + & represents a space that will not terminate a string \\ \hline -\verb+\'+ & \verb+'+ (and will not end a quoted string) \\ \hline -\verb+\"+ & \verb+"+ (and will not end a quoted string) \\ \hline -\verb+\nnn+ & the character with octal code \verb+\nnn+ \\ \hline -\end{tabular} -\end{center} - -\noindent\index{non-printing chars} -Note that the above allows the same effect to be achieved in a number of -different ways. For example, -\begin{verbatim} - "\"QUOTE" - \"QUOTE - '"QUOTE' - \042QUOTE -\end{verbatim} -all produce the string \verb+"QUOTE+. - -The only exceptions to the above general rules are: -\begin{itemize} - -\item Where models are specified in \htool{HHEd} scripts, -commas (\verb+,+), -dots (\verb+.+), -and closing brackets (\verb+)+) -are all used as extra delimiters to allow \htool{HHEd} scripts -created for earlier versions of \HTK\ to be used unchanged. -Hence for example, \texttt{(a,b,c,d)} would be split into 4 -distinct name strings \texttt{a}, \texttt{b}, \texttt{c} and \texttt{d}. - -\item When the configuration variable -\texttt{RAWMITFORMAT} is set true, each word in a language model -definition file consists of a white space delimited string with no -special processing being performed. - -\item Source dictionaries read by \htool{HDMan} are read using -the standard \HTK\ string conventions, however, the command \texttt{IR} -can be used in a \htool{HDMan} source edit script to switch to using -this raw format. - -\item -To ensure that the general definition of a name string works -properly in \HTK\ master label files, all -MLFs must have the reserved \texttt{.} and \verb+///+ terminators -alone on a line with no surrounding white space. -If this causes problems reading old MLF files, the configuration -variable \texttt{V1COMPAT} should be set true in the module \htool{HLabel}. -In this case, -\HTK\ will attempt to simulate the behaviour of the older version 1.5. - -\item -To force numbers to be interpreted as strings rather than times or scores in a -label file, they must be quoted. If the configuration variable -\texttt{QUOTECHAR} is set to \verb+'+ or \verb+"+ then output labels will be -quoted with the specified quote character. If \texttt{QUOTECHAR} is set to -\verb+\+, then output labels will be escaped. The default is to select the -simplest quoting mechanism.\index{strings!output of} -\end{itemize} - -Note that under some versions of \texttt{Unix} \HTK\ can support the 8-bit -character sets used for the representation of various orthographies. In -such cases the shell environment variable \texttt{\$LANG} usually governs -which ISO character set is in use. - -\subsubsection{Language modelling tools} -Although these string conventions are unnecessary in \HLM, to maintain -compatibility with \HTK the same conventions are used. However, a -number of options are provided to allow a mix of escaped and unescaped -text files to be handled. Word maps allow the type of escaping (HTK -or none) to be defined in their headers. When a degenerate form of -word map is used (i.e. a map with no header), the \htool{LWMap} -configuration variable \texttt{INWMAPRAW} may be set to true to -disable \HTK\ escaping. By default, \HLM\ tools output word lists and -maps in HTK escaped form. However, this can be overridden by setting -the configuration variable \texttt{OUTWMAPRAW} to true. Similar -conventions apply to class maps. A degenerate class map can be read -in raw mode by setting the \htool{LClass} configuration variable -\texttt{INCMAPRAW} to true, and a class map can be written in raw form -by setting \texttt{OUTCMAPRAW} to true. - -Input/output of N-gram language model files are handled by the \HLM\ -module \texttt{LModel}. Hence, by default input/output of LMs stored -in the ARPA-MIT text format will assume \HTK\ escaping conventions. -This can be disabled for both input and output by setting -\texttt{RAWMITFORMAT} to true. - -% $ - -\mysect{Memory Management}{memman} - -Memory management\index{memory management} is a very low level function and is -mostly invisible to \HTK\ users. However, some applications require very large -amounts of memory. For example, building the models for a large vocabulary -continuous speech dictation system might require 150MB or more. Clearly, when -memory demands become this large, a proper understanding of the impact of -system design decisions on memory usage is important. The first step in this -is to have a basic understanding of memory allocation in \HTK. - -Many \HTK\ tools dynamically construct large and complex data structures in -memory. To keep strict control over this and to reduce memory allocation -overheads to an absolute minimum, \HTK\ performs its own memory -management. Thus, every time that a module or tool wishes to allocate some -memory, it does so by calling routines in -\htool{HMem}\index{hmem@\htool{HMem}}. At a slightly higher level, math objects -such as vectors and matrices are allocated by \htool{HMath} but using the -primitives provided by \htool{HMem}. - -To make memory allocation\index{memory!allocators} and de-allocation very fast, -tools create specific memory allocators for specific objects or groups of -objects. These memory allocators are divided into a sequence of blocks, and -they are organised as either Stacks\index{stacks}, M-heaps\index{M-heaps} or -C-heaps\index{C-heaps}. A Stack constrains the pattern of allocation and -de-allocation requests to be made in a last-allocated first-deallocated order -but allows objects of any size to be allocated. An M-heap allows an arbitrary -pattern of allocation and de-allocation requests to be made but all allocated -objects must be the same size. Both of these memory allocation disciplines are -more restricted than the general mechanism supplied by the operating system, -and as a result, such memory operations are faster and incur no storage -overhead due to the need to maintain hidden housekeeping information in each -allocated object. Finally, a C-heap uses the underlying operating system and -allows arbitrary allocation patterns, and as a result incurs the associated -time and space overheads. The use of C-heaps is avoided wherever possible. - -Most tools provide one or more trace options which show how -much memory has been allocated. The following shows the form of -the output\index{memory!statistics} -\begin{verbatim} - ---------------------- Heap Statistics ------------------------ - nblk=1, siz= 100000*1, used= 32056, alloc= 100000 : Global Stack[S] - nblk=1, siz= 200*28, used= 100, alloc= 5600 : cellHeap[M] - nblk=1, siz= 10000*1, used= 3450, alloc= 10000 : mlfHeap[S] - nblk=2, siz= 7504*1, used= 9216, alloc= 10346 : nameHeap[S] - --------------------------------------------------------------- -\end{verbatim} -Each line describes the status of each memory allocator and gives the number of -blocks allocated, the current block size (number of elements in block $\times$ -the number of bytes in each element)\footnote{ Block sizes typically grow as -more blocks are allocated}, the total number of bytes in use by the tool and -the total number of bytes currently allocated to that allocator. The end of -each line gives the name of the allocator and its type: Stack[S], M-heap[M] or -C-heap[M]. The element size for Stacks will always be 1 but will be variable -in M-heaps.\index{memory!element sizes} The documentation for the memory -intensive \HTK\ tools indicates what each of the main memory allocators are -used for and this information allows the effects of various system design -choices to be monitored. - -\mysect{Input/Output via Pipes and Networks}{iopipes} - -Most types of file in \HTK\ can be input or output via a pipe\index{pipes} -instead of directly from or to disk. The mechanism for doing this is to assign -the required input or output filter\index{output filter} command to a -configuration parameter or to an environment variable, either can be used. -Within this command, any occurrence of the dollar symbol -\verb+$+ will be replaced by the name of the required file. The -output of the command will then be input to or output from the \HTK\ tool via a -pipe.\index{filters} - -For example, the following command will -normally list the contents of the speech waveform file \texttt{spfile} -\begin{verbatim} - HList spfile -\end{verbatim} -However, if the value of the environment variable \texttt{HWAVEFILTER} -is set as follows -\begin{verbatim} - setenv HWAVEFILTER 'gunzip -c $' -\end{verbatim} -then the effect is to invoke the decompression filter\index{decompression -filter} \texttt{gunzip} with its input connected to the file \texttt{spfile} -and its output connected to \htool{HList} via a pipe. Each different type of -file has a unique associated variable so that multiple input and/or filters can -be used. The full list of these is given in the summary section at the end of -this chapter. - -\HTK\ is often used to process large amounts of data and typically this -data is distributed across a network. In many systems, an attempt to open a -file can fail because of temporary network \textit{glitches}. In the majority -of cases, a second or third attempt to open the file a few seconds later will -succeed and all will be well. To allow this to be done automatically, -\HTK\ tools can be configured to retry opening a file several times before giving up. -This is done simply by setting the configuration parameter -\texttt{MAXTRYOPEN}\index{maxtryopen@\texttt{MAXTRYOPEN}} to the required -number of retries\footnote{ This does not work if input filters are used. }. -\index{files!network problems}\index{files!opening} - -\mysect{Byte-swapping of HTK data files}{byteswap} - -\index{natreadorder@\texttt{NATURALREADORDER}} -\index{natwriteorder@\texttt{NATURALWRITEORDER}} -\index{byte swapping} -Virtually all \HTK\ tools can read and write data to and from binary files. The -use of binary format as opposed to text can speed up the performance of the -tools and at the same time reduce the file size when manipulating large -quantities of data. Typical binary files used by the \HTK\ tools are speech -waveform/parameter files, binary master model files (MMF), binary accumulator -files used in HMM parameter estimation and binary lattice files. However, the -use of binary data format often introduces incompatibilities between different -machine architectures due to the different byte ordering conventions used to -represent numerical quantities. In such cases, byte swapping of the data is -required. To avoid incompatibilities across different machine architectures, -all \HTK\ binary data files are written out using big-endian (\texttt{NONVAX}) -representation of numerical values. Similarly, during loading \HTK\ binary -format files are assumed to be in \texttt{NONVAX} byte order. The default -behaviour can be altered using the configuration parameters -\texttt{NATURALREADORDER} and -\texttt{NATURALWRITEORDER}. Setting \texttt{NATURALREADORDER} to true will -instruct the \HTK\ tools to interpret the binary input data in the machine's -natural byte order (byte swapping will never take place). Similarly, setting -\texttt{NATURALWRITEORDER} to true will instruct the tools to write out data -using the machine's natural byte order. The default value of these two -configuration variables is false which is the appropriate setting when using -\HTK\ in a multiple machine architecture environment. In an environment -comprising entirely of machines with \texttt{VAX} byte order both configuration -parameters can be set true which will disable the byte swapping procedure -during reading and writing of data. - -\mysect{Summary}{openvsum} - -This section summarises the globally-used environment -variables\index{environment variables} and configuration -parameters\index{configuration parameters!operating environment}. It -also provides a list of all the standard command line options used -with \HTK. - -Table~\href{t:openvcparms} lists all of the configuration parameters -along with a brief description. A missing module name means that it -is recognised by more than one module. Table~\href{t:openvars} lists -all of the environment parameters used by these modules. Finally, -table~\href{t:stdopts} lists all of the standard options. - -\begin{center} -\begin{tabular}{|p{1.4cm}|p{3.0cm}|p{6.4cm}|} \hline -Module & Name & Description \\ \hline -\htool{HShell} & \texttt{ABORTONERR} & Core dump on error (for debugging) \\ -\htool{HShell} & \texttt{HWAVEFILTER} & Filter for waveform file input\\ -\htool{HShell} & \texttt{HPARMFILTER} & Filter for parameter file input\\ -\htool{HShell} & \texttt{HLANGMODFILTER} & Filter for language model file input\\ -\htool{HShell} & \texttt{HMMLISTFILTER} & Filter for HMM list file input\\ -\htool{HShell} & \texttt{HMMDEFFILTER} & Filter for HMM definition file input\\ -\htool{HShell} & \texttt{HLABELFILTER} & Filter for Label file input\\ -\htool{HShell} & \texttt{HNETFILTER} & Filter for Network file input\\ -\htool{HShell} & \texttt{HDICTFILTER} & Filter for Dictionary file input \\ -\htool{HShell} & \texttt{LGRAMFILTER} & Filter for gram file input\\ -\htool{HShell} & \texttt{LWMAPFILTER} & Filter for word map file input\\ -\htool{HShell} & \texttt{LCMAPFILTER} & Filter for class map file input\\ -\htool{HShell} & \texttt{LMTEXTFILTER} & Filter for text file input\\ -\htool{HShell} & \texttt{HWAVEOFILTER} & Filter for waveform file output\\ -\htool{HShell} & \texttt{HPARMOFILTER} & Filter for parameter file output\\ -\htool{HShell} & \texttt{HLANGMODOFILTER} & Filter for language model file output\\ -\htool{HShell} & \texttt{HMMLISTOFILTER} & Filter for HMM list file output\\ -\htool{HShell} & \texttt{HMMDEFOFILTER} & Filter for HMM definition file output\\ -\htool{HShell} & \texttt{HLABELOFILTER} & Filter for Label file output\\ -\htool{HShell} & \texttt{HNETOFILTER} & Filter for Network file output\\ -\htool{HShell} & \texttt{HDICTOFILTER} & Filter for Dictionary file output \\ -\htool{HShell} & \texttt{LGRAMOFILTER} & Filter for gram file output\\ -\htool{HShell} & \texttt{LWMAPOFILTER} & Filter for word map file output\\ -\htool{HShell} & \texttt{LCMAPOFILTER} & Filter for class map file output\\ -\htool{HShell} & \texttt{MAXTRYOPEN} & Number of file open retries \\ -\htool{HShell} & \texttt{NONUMESCAPES} & Prevent string output using \verb+\012+ format \\ -\htool{HShell} & \texttt{NATURALREADORDER} & Enable natural read order for HTK binary files \\ -\htool{HShell} & \texttt{NATURALWRITEORDER} & Enable natural write order for HTK binary files \\ -\htool{HMem} & \texttt{PROTECTSTAKS} & Warn if stack is cut-back (debugging) \\ - & \texttt{TRACE} & Trace control (default=0) \\ - & \texttt{STARTWORD} & Set sentence start symbol ({\tt }) \\ - & \texttt{ENDWORD} & Set sentence end symbol ({\tt }) \\ - & \texttt{UNKNOWNNAME} & Set OOV class symbol ({\tt !!UNK}) \\ - & \texttt{RAWMITFORMAT} & Disable \HTK\ escaping for LM tools\\ -\htool{LWMap} & \texttt{INWMAPRAW} & Disable \HTK\ escaping for input word lists and maps \\ -\htool{LWMap} & \texttt{OUTWMAPRAW} & Disable \HTK\ escaping for output word lists and maps \\ -\htool{LCMap} & \texttt{INCMAPRAW} & Disable \HTK\ escaping for input class lists and maps \\ -\htool{LCMap} & \texttt{OUTCMAPRAW} & Disable \HTK\ escaping for output class lists and maps \\ -\hline -\end{tabular} -\tabcap{openvcparms}{Configuration Parameters used in Operating Environment} -\end{center} - -\vspace*{1cm} -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.2cm}|} \hline -Env Variable & Meaning \\ \hline -\texttt{HCONFIG} & Name of default configuration file\\ -\texttt{HxxxFILTER} & Input/Output filters as above \\ \hline -\end{tabular} -\tabcap{openvars}{Environment Variables used in Operating Environment} -\end{center} - -\vspace*{1cm} -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.2cm}|} \hline -Standard Option & Meaning \\ \hline -\texttt{-A} & Print command line arguments\\ -\texttt{-B} & Store output HMM macro files in binary \\ -\texttt{-C cf} & Configuration file is cf \\ -\texttt{-D} & Display configuration variables\\ -\texttt{-E dir [ext]} & Search for parent transform macros in directory dir \\ -\texttt{-F fmt} & Set source data file format to fmt \\ -\texttt{-G fmt} & Set source label file format to fmt \\ -\texttt{-H mmf} & Load HMM macro file mmf \\ -\texttt{-I mlf} & Load master label file mlf \\ -\texttt{-J dir [ext]} & Search for transform macros in directory dir \\ -\texttt{-K dir [ext]} & Save transform models in directory dir \\ -\texttt{-L dir} & Look for label files in directory dir \\ -\texttt{-M dir} & Store output HMM macro files in directory dir \\ -\texttt{-O fmt} & Set output data file format to fmt \\ -\texttt{-P fmt} & Set output label file format to fmt \\ -\texttt{-Q} & Print command summary info\\ -\texttt{-S scp} & Use command line script file scp \\ -\texttt{-T N} & Set trace level to N \\ -\texttt{-V} & Print version information\\ -\texttt{-X ext} & Set label file extension to ext \\ \hline -\end{tabular} -\tabcap{stdopts}{Summary of Standard Options} -\end{center}\index{standard options!summary} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/refine.tex b/HTKBook/refine.tex deleted file mode 100644 index c419d37..0000000 --- a/HTKBook/refine.tex +++ /dev/null @@ -1,799 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 15/11/95 -% - -\mychap{HMM System Refinement}{Refine} - -\sidepic{Tool.hedit}{55}{ } -In chapter~\ref{c:Training}, the basic processes involved in training -a continuous density HMM system were explained and examples were given -of building a set of HMM phone models. In the practical application -of these techniques to building real systems, there are often a number of -problems to overcome. Most of these arise from the conflicting desire -to have a large number of model parameters in order to -achieve high accuracy, whilst at the same time having limited and uneven -training data. \index{HMM refinement} - -As mentioned previously, -the \HTK\ philosophy is to build systems incrementally. Starting -with a set of context-independent -monophone HMMs, a system can be refined in a sequence of stages. Each refinement -step typically uses the \HTK\ HMM definition editor \htool{HHEd} followed -by re-estimation using \htool{HERest}. These incremental manipulations of -the HMM set often involve parameter tying, thus many of \htool{HHEd}'s -operations involve generating new macro definitions. - -The principle types of manipulation that can be performed -by \htool{HHEd}\index{hhed@\htool{HHEd}} -are -\begin{itemize} -\item HMM cloning to form context-dependent model sets -\item Generalised parameter tying -\item Data driven and decision tree based clustering. -\item Mixture component splitting -\item Adding/removing state transitions -\item Stream splitting, resizing and recasting -\end{itemize} -This chapter describes how the \HTK\ tool \htool{HHEd} is used, its -editing language and the main operations that can be -performed. - -\mysect{Using \htool{HHEd}}{usingHHEd} - -The HMM editor \htool{HHEd} takes as input a set of HMM definitions and -outputs a new modified set, usually to a new directory. It is invoked -by a command line of the form -\begin{verbatim} - HHEd -H MMF1 -H MMF2 ... -M newdir cmds.hed hmmlist -\end{verbatim} -where \texttt{cmds.hed} is an edit script containing -a list of edit commands. Each command -is written on a separate line and begins with a 2 letter command name. -\index{model training!HMM editing} - -The effect -of executing the above command line would be to read in the HMMs listed in -\texttt{hmmlist} and defined -by files \texttt{MMF1}, \texttt{MMF2}, etc., apply the editing operations -defined in \texttt{cmds.hed} and then write the resulting system out -to the directory \texttt{newdir}. As with all tools, \HTK\ will -attempt to replicate the file structure of the input in the output -directory. By default, any new macros generated by \htool{HHEd} will be -written to one or more of the existing MMFs. In doing this, \HTK\ will -attempt to ensure that the ``definition before use'' rule for macros is -preserved, but it cannot always guarantee this. Hence, it is usually -best to define explicit target file names for new macros. This can be -done in two ways. Firstly, explicit target file names can be -given in the edit script -using the \texttt{UF}\index{uf@\texttt{UF} command} command. -For example, if \texttt{cmds.hed} contained -\begin{verbatim} - .... - UF smacs - # commands to generate state macros - .... - UF vmacs - # commands to generate variance macros - .... -\end{verbatim} -then the output directory would contain an MMF called \texttt{smacs} -containing a set of state macro definitions and an MMF called \texttt{vmacs} -containing a set of variance macro definitions, these would be in addition -to the existing MMF files \texttt{MMF1}, \texttt{MMF2}, etc. - -Alternatively, the whole HMM system can be written to a single -file using the \texttt{-w} option. For example, -\begin{verbatim} - HHEd -H MMF1 -H MMF2 ... -w newMMF cmds.hed hmmlist -\end{verbatim} -would write the whole of the edited HMM set to the file \texttt{newMMF}. - -\index{master macro files!input/output} -As mentioned previously, each execution of \htool{HHEd} is normally followed -by re-estimation using \htool{HERest}. Normally, all the information -needed by \htool{HHEd} is contained in the model set itself. However, -some clustering operations require various statistics about the -training data (see sections~\ref{s:ddclust} and \ref{s:tbclust}). -These statistics are gathered by \htool{HERest}\index{herest@\htool{HERest}} and -output to a \textit{stats file}, which is then read in by \htool{HHEd}. -Note, however, that the statistics file\index{statistics file} -generated by \htool{HERest} -refers to the input model set not the re-estimated set. Thus -for example, in the following sequence, the \htool{HHEd} edit script in -\texttt{cmds.hed} contains a command -(see the \texttt{RO} command\index{ro@\texttt{RO} command} -in section~\ref{s:ddclust}) -which references a statistics file (called \texttt{stats}) -describing the HMM set defined by \texttt{hmm1/MMF}. -\begin{verbatim} - HERest -H hmm1/MMF -M hmmx -s stats hmmlist train1 train2 .... - HHEd -H hmm1/MMF -M hmm2 cmds.hed hmmlist -\end{verbatim} -The required statistics file is generated by \htool{HERest} but the re-estimated -model set stored in \texttt{hmmx/MMF} is ignored and can be deleted. - -\mysect{Constructing Context-Dependent Models}{mkCDHMMs} - -\index{model training!context dependency} -The first stage of model refinement is usually to convert a set of -initialised and trained context-independent monophone HMMs to a -set of context dependent models\index{context dependent models}. As -explained in section~\ref{s:edlab}, \HTK\ uses the convention that a HMM -name of the form \texttt{l-p+r} denotes the context-dependent version of the -phone \texttt{p} which is to be used when the left neighbour is the phone -\texttt{l} and the right neighbour is the phone \texttt{r}. To make a set -of context dependent phone models, it is only necessary to construct a HMM -list, called say \texttt{cdlist}, containing the required context-dependent models and -then execute \htool{HHEd} with a single command in its edit script -\begin{verbatim} - CL cdlist -\end{verbatim} -The effect of this command is that for each model \texttt{l-p+r} in \texttt{cdlist} -it makes a copy of the monophone \texttt{p}. -\index{cloning}\index{cl@\texttt{CL} command} - -The set of context-dependent models output by the above must be reestimated using -\htool{HERest}. To do this, the training data transcriptions must be converted -to use context-dependent labels and the original monophone hmm list must be -replaced by \texttt{cdlist}. In fact, it is best to do this conversion before -cloning the monophones because if the \htool{HLEd} \texttt{TC} -command\index{tc@\texttt{TC} command} -is used then the \texttt{-n} option -can be used to generate the required list of context dependent HMMs automatically. - -Before building a set of context-dependent models, -it is necessary to decide whether or not cross-word -triphones\index{cross-word triphones} are -to be used. If they are, then word boundaries in the training data can be ignored and -all monophone labels can be converted to triphones. If, however, word internal triphones -are to be used, then word boundaries in the training transcriptions must be marked in -some way (either by an explicit marker which is subsequently deleted or by using a short -pause \textit{tee-model}). This word boundary marker is then identified to \htool{HLEd} -using the \texttt{WB} command\index{wb@\texttt{WB} command} to make the \texttt{TC} command use biphones rather -than triphones at word boundaries\index{marking word boundaries} (see -section~\ref{s:edlab}). - -All \HTK\ tools can read and write -HMM definitions in text or binary form. Text is good for seeing exactly -what the tools are producing, but binary is much faster to load and store, and -much more compact. Binary output is enabled either using the standard option -\texttt{-B} or by setting the configuration variable -\texttt{SAVEBINARY}\index{savebinary@\texttt{SAVEBINARY}}. -In the above example, the HMM set input to \htool{HHEd} will contain a small -set of monophones whereas the output will be a large set of triphones. -In order, to save storage and computation, this is usually a good point to -switch to binary storage\index{binary storage} of MMFs. - -\mysect{Parameter Tying and Item Lists}{parmtying} - -As explained in Chapter~\ref{c:HMMDefs}, \HTK\ uses macros to support a -generalised parameter tying facility. Referring again to -Fig.~7.\ref{f:hierarch}, each of the solid black circles denotes a potential -{\em tie-point} in the hierarchy of HMM parameters. When two or more -parameter sets are tied, the same set of parameter values are shared by all -the {\em owners} of the tied set. Externally, tied parameters\index{tied parameters} are -represented by macros and internally they are represented by structure -sharing. The accumulators needed for the numerators and denominators of -the Baum-Welch re-estimation formulae given in section~\ref{s:bwformulae} -are attached directly to the parameters themselves. Hence, when the values -of a tied parameter set are re-estimated, all of the data which would have -been used to estimate each individual untied parameter are effectively -pooled leading to more robust parameter estimation.\index{model training!tying} - -Note also that although parameter tying is implemented in -a way which makes it transparent to the \HTK\ re-estimation and recognition -tools, in practice, these tools do notice when a system has been tied -and try to take advantage of it by avoiding redundant computations. - -Although macro definitions could be written by hand, in practice, -tying is performed by executing \htool{HHEd} commands and the -resulting -macros are thus generated automatically. The basic \htool{HHEd} command for -tying a set of parameters is the \texttt{TI} command which has the form -\begin{verbatim} - TI macroname itemlist -\end{verbatim} -This causes all items in the given \texttt{itemlist} to be tied together -and output as a macro called \texttt{macroname}. Macro names are -written as a string of -characters optionally enclosed in double quotes. The latter are necessary -if the name contains one or more characters which are not letters or digits. - -\sidefig{itemtree}{62}{Item List Construction}{2}{ -Item lists use a simple language to identify sets of points in the -HMM parameter hierarchy illustrated in Fig.~7.\ref{f:hierarch}. -This language is defined fully in the reference entry -for \htool{HHEd}. -The essential idea is that item lists\index{item lists} represent paths down the hierarchical -parameter tree where the direction {\it down} should be regarded as -travelling from the {\it root} -of the tree to towards the {\it leaves}. -A path can be unique, or more usually, it can -be a pattern representing a set of paths down the tree. The point at -which each path stops identifies one member of the set represented by -the item list. -Fig.~\href{f:itemtree} shows the possible paths down the tree. In -text form the branches are replaced by dots and the underlined node -names are possible terminating points. At the topmost level, an -item list is a comma separated list of paths enclosed in braces. -} - -Some examples, should make all this clearer. Firstly, the -following is a legal but somewhat long-winded way of specifying -the set of items comprising states 2, 3 and 4 of the HMM called \texttt{aa} -\begin{verbatim} - { aa.state[2],aa.state[3],aa.state[4] } -\end{verbatim} -however in practice this would be written much more compactly as -\begin{verbatim} - { aa.state[2-4] } -\end{verbatim} -It must be emphasised that indices in item lists are really {\it patterns}. -The set represented by an item list consists of all those elements which -match the patterns. Thus, if \texttt{aa} only had two emitting states, the above item -list would not generate an error. It would simply only match two items. -The reason for this is that the same pattern can be applied to many different -objects. For example, the HMM name can be replaced by a list of names -enclosed in brackets, furthermore each HMM name can include `?' characters -which match any single character and `*' characters which match zero or -more characters. Thus \index{item lists!pattern matching} -\begin{verbatim} - { (aa+*,iy+*,eh+*).state[2-4] } -\end{verbatim} -represents states 2, 3 and 4 -of all biphone models corresponding to -the phonemes \texttt{aa}, \texttt{iy} and \texttt{eh}. If \texttt{aa} had just 2 emitting -states and the others had 4 emitting states, then this item list would include -2 states from each of the \texttt{aa} models and 3 states from -each of the others. Moving further down the tree, the item list -\begin{verbatim} - { *.state[2-4].stream[1].mix[1,3].cov } -\end{verbatim} -denotes the set of all covariance vectors (or matrices) of the first and -third mixture -components of stream 1, of states 2 to 4 of all HMMs. Since many HMM systems -are single stream, the \texttt{stream} part of the path can be omitted if its value -is 1. Thus, the above could have been written -\begin{verbatim} - { *.state[2-4].mix[1,3].cov } -\end{verbatim} -These last two examples also show that indices\index{item lists!indexing} can be written as comma -separated lists as well as ranges, for example, \texttt{[1,3,4-6,9]} -is a valid index list representing states 1, 3, 4, 5, 6, and 9. - -When item lists are used as the argument to a \texttt{TI} -command\index{ti@\texttt{TI} command}, the -kind of items represented by the list determines the macro type in a fairly -obvious way. The only non-obvious cases are firstly that lists ending -in \texttt{cov} generate \hmmt{v}, \hmmt{i}, \hmmt{c}, or \hmmt{x} macros as -appropriate. If an explicit set of mixture components is defined -as in -\begin{verbatim} - { *.state[2].mix[1-5] } -\end{verbatim} -then \hmmt{m} macros are generated but omitting -the indices altogether denotes a special case of mixture -tying\index{tied-mixtures} -which is explained later in Chapter~\ref{c:discmods}. - -To illustrate the use of item lists, some example \texttt{TI} commands -can now be given. Firstly, when a set of context-dependent models is created, it can -be beneficial to share one transition matrix across all variants -of a phone rather than having a distinct transition matrix for each. -This could be achieved by adding \texttt{TI} -commands immediately after the \texttt{CL} command described in -the previous section, that is\index{tying!examples of} -\begin{verbatim} - CL cdlist - TI T_ah {*-ah+*.transP} - TI T_eh {*-eh+*.transP} - TI T_ae {*-ae+*.transP} - TI T_ih {*-ih+*.transP} - ... etc -\end{verbatim} - -As a second example, a so-called Grand Variance\index{grand variance} -HMM system can -be generated very easily with the following HHEd command -\begin{verbatim} - TI "gvar" { *.state[2-4].mix[1].cov } -\end{verbatim} -where it is assumed that the HMMs are 3-state -single mixture component models. The effect -of this command is to tie all state distributions to a single global variance -vector. For applications, where there is limited training data, this technique -can improve performance, particularly in noise. - -Speech recognition systems will often have distinct -models for silence and short pauses. A -silence model\index{silence model} \texttt{sil} may have -the normal 3 state topology whereas a short pause model may have just -a single state. To avoid the two models \textit{competing} with each other, the -\texttt{sp} model state can be tied to the centre state of the \texttt{sil} model -thus -\begin{verbatim} - TI "silst" { sp.state[2], sil.state[3] } -\end{verbatim} - -So far nothing has been said about how the parameters are actually -determined when a set of items is replaced by a single shared representative. -When states are tied, the state with the broadest variances and as few as -possible zero mixture component weights is selected from the pool and used -as the representative. When mean vectors are tied, the average of all the -mean vectors in the pool is used and when variances are tied, the largest -variance in the the pool is used. In all other cases, the last item in the -tie-list is arbitrarily chosen as representative. -All of these selection criteria are \textit{ad hoc}, but since -the tie operations are always followed by explicit re-estimation -using \htool{HERest}, the precise choice of representative for a tied -set is not critical.\index{tying!exemplar selection} - -Finally, tied parameters can be -untied. For example, subsequent refinements of the context-dependent model set -generated above with tied transition matrices might result in -a much more compact set of models for which individual transition -parameters could be robustly estimated. This -can be done using the \texttt{UT} command\index{ut@\texttt{UT} command} whose effect is to untie all of the -items in its argument list. For example, the command -\begin{verbatim} - UT {*-iy+*.transP} -\end{verbatim} -would untie the transition parameters in all variants of the \texttt{iy} -phoneme. -This untying works by simply making unique copies of the tied parameters. -These untied parameters can then subsequently be re-estimated. - -\mysect{Data-Driven Clustering}{ddclust} - -In -section~\ref{s:mkCDHMMs}, a method of triphone construction was described -which involved cloning all monophones and then re-estimating them using data -for which monophone labels have been replaced by triphone labels. -This will lead to a very large set of models, and relatively little -training data for each model. Applying the argument that context will not greatly affect -the centre states of triphone models, one way to reduce the -total number of parameters without -significantly altering the models' ability to represent the different -contextual effects might be to tie all of the centre states across all -models derived from the same monophone. This tying could -be\index{clustering!data-driven} -done by writing an edit script of the form -\begin{verbatim} - TI "iyS3" {*-iy+*.state[3]} - TI "ihS3" {*-ih+*.state[3]} - TI "ehS3" {*-eh+*.state[3]} - .... etc -\end{verbatim} -Each \texttt{TI} command would tie all the centre states of all triphones -in each phone group. Hence, if there were an average of 100 triphones -per phone group then the total number of states per group -would be reduced from -300 to 201. - -Explicit tyings such as these can have some positive effect but overall they -are not very satisfactory. Tying all centre states is too severe and worse -still, the problem of undertraining for the left and right states remains. -A much better approach is to use clustering to decide which states to -tie. \htool{HHEd} provides two mechanisms for this. In this section -a data-driven clustering approach will be described and in -the next section, an alternative decision tree-based approach is presented. - -Data-driven clustering is performed by the \index{model training!clustering} -\texttt{TC}\index{tc@\texttt{TC} command} and -\texttt{NC}\index{nc@\texttt{NC} command} -commands. These both invoke the same top-down hierarchical -procedure. Initially all states are placed in individual -clusters. The pair of clusters which when combined would form the smallest -resultant cluster are merged. This process repeats until either the -size of the largest -cluster reaches the threshold set by the \texttt{TC} command or -the total number of clusters has fallen to that -specified by by the \texttt{NC} command. The size of cluster -is defined as the greatest distance between any two states. -The distance metric depends on the type of state distribution. -For single Gaussians, a weighted Euclidean distance between the means -is used and for tied-mixture systems a Euclidean distance between the -mixture weights is used. For all other cases, the average probability -of each component mean with respect to the other state is used. -The details of the algorithm and these metrics are given in the reference -section for \htool{HHEd}. - -\centrefig{tiedstate}{100}{Data-driven state tying} - -As an example, the following \htool{HHEd} script would cluster and tie the -corresponding states of the triphone group for the phone \texttt{ih} -\begin{verbatim} - TC 100.0 "ihS2" {*-ih+*.state[2]} - TC 100.0 "ihS3" {*-ih+*.state[3]} - TC 100.0 "ihS4" {*-ih+*.state[4]} -\end{verbatim} -In this example, each \texttt{TC} command performs clustering on the specified -set of states, each cluster is tied and output as a macro. The macro name -is generated by appending the cluster index to -the macro name given in the command. The effect of this command -is illustrated in Fig.~\href{f:tiedstate}. Note that if a word-internal -triphone system is being built, it is sensible to include biphones as well -as triphones in the item list, for example, the first command above would -be written as -\begin{verbatim} - TC 100.0 "ihS2" {(*-ih,ih+*,*-ih+*).state[2]} -\end{verbatim} -If the above \texttt{TC} commands are repeated for all phones, the resulting set of -tied-state models will have far -fewer parameters in total than the original untied set. The numeric argument -immediately following the \texttt{TC} command name is the cluster threshold. Increasing -this value will allow larger and hence, fewer clusters. The aim, of -course, is to strike the right balance between compactness and the acoustic -accuracy of the individual models. In practice, the use of this command -requires some experimentation to find a good threshold value. \htool{HHEd} provides -extensive trace output for monitoring clustering operations. Note in this -respect that as well as setting tracing from the command line and the -configuration file, tracing in \htool{HHEd} can be set by the \texttt{TR} command. -Thus, tracing can be controlled at the command level. Further trace -information can be obtained by including the \texttt{SH} command\index{sh@\texttt{SH} command} at strategic -points in the edit script. The effect of executing this command is to list -out all of the parameter tyings currently in force. - -A potential problem with the use of the \texttt{TC} and \texttt{NC} commands is -that {\it outlier} states will tend to form their own singleton -clusters\index{singleton clusters} for -which there is then insufficient data to properly train. One solution to -this is to use the \texttt{RO} command\index{ro@\texttt{RO} command} to -remove outliers\index{removing outliers}. This command has -the form -\begin{verbatim} - RO thresh "statsfile" -\end{verbatim} -where \texttt{statsfile} is the name of a statistics file\index{statistics -file} output using the -\texttt{-s} option of \htool{HERest}. This statistics file holds the -{\em occupation counts} for all states of the HMM set being trained. -The term {\em occupation count} refers to the number of frames allocated to a -particular state and can be used as a measure of how much training data is -available for estimating the parameters of that state. -The \texttt{RO} command must be executed {\it before} the \texttt{TC} or -\texttt{NC} commands used to do the actual clustering. Its effect is to simply -read in the statistics information from the given file and then to set a flag -instructing the -\texttt{TC} or \texttt{NC} commands to remove any outliers remaining at -the conclusion -of the normal clustering process. This is done by repeatedly finding the -cluster with the smallest total occupation count and merging it with its -nearest neighbour. This process is repeated until all clusters have a total -occupation count which exceeds \texttt{thresh}, thereby ensuring that every -cluster of states will be properly trained in the subsequent re-estimation -performed by \htool{HERest}.\index{state tying} - - -On completion of the above clustering and tying procedures, many of the models -may be effectively identical, since acoustically similar triphones may share -common clusters for all their emitting states. They are then, in effect, -so-called {\it generalised triphones}.\index{generalised triphones} State tying -can be further exploited if the HMMs which are effectively equivalent are -identified and then tied via the physical-logical mapping\footnote{The physical -HMM which corresponding to several logical HMMs will be arbitrarily named after -one of them.} facility provided by HMM lists (see section~\ref{s:hmmsets}). The -effect of this would be to reduce the total number of HMM definitions required. -\htool{HHEd} provides a compaction command to do all of this automatically. -For example, the command -\begin{verbatim} - CO newList -\end{verbatim} -\index{co@\texttt{CO} command}will compact\index{model training!compacting} -the currently loaded HMM set by identifying equivalent models -and then tying them via the new HMM list output to the -file \texttt{newList}. Note, however, that for two HMMs to be tied, they -must be identical in all respects. -This is one of the reasons why transition parameters are often tied -across triphone groups otherwise HMMs with identical states would still -be left distinct due to minor differences in their transition matrices. - -\mysect{Tree-Based Clustering}{tbclust} - -\index{clustering!tree-based} -One limitation of the data-driven clustering procedure described above is -that it does not deal with triphones for which there are no examples in the -training data. When building word-internal triphone systems, this -problem can often -be avoided by careful design of the training database but when building large -vocabulary cross-word triphone systems \textit{unseen} triphones are unavoidable. -\index{unseen triphones} - -\centrefig{qstree}{100}{Decision tree-based state tying} - -\htool{HHEd} provides an alternative decision -tree based clustering\index{decision tree-based clustering} mechanism -which provides a similar quality of clustering but offers a solution -to the unseen triphone problem. Decision tree-based clustering is invoked -by the command \texttt{TB} which is analogous to the \texttt{TC} command -described above and has an identical form, that is -\begin{verbatim} - TB thresh macroname itemlist -\end{verbatim} -Apart from the clustering mechanism, there are some other differences between -\texttt{TC} and \texttt{TB}. Firstly, \texttt{TC} uses a distance metric between -states whereas \texttt{TB} uses a log likelihood criterion. Thus, the threshold -values are not directly comparable. Furthermore, \texttt{TC} supports any type -of output distribution whereas \texttt{TB} only supports single-Gaussian -continuous density output distributions. -Secondly, although the following describes only state clustering, -the \texttt{TB} command\index{tb@\texttt{TB} command} can also be used to cluster whole -models. - -A phonetic decision tree is a binary tree in which a yes/no phonetic -question\index{phonetic questions} -is attached to each node. -Initially all states in a given item list (typically a specific phone state position) -are placed at the -root node of a tree. Depending on each answer, the pool of states is -successively split and this continues until the states have trickled -down to leaf-nodes. All states in the same leaf node are then tied. -For example, Fig~\href{f:qstree} illustrates the case of tying the centre -states of all triphones of the phone /aw/ (as in ``out''). All of the states trickle -down the tree and depending on the answer to the questions, they end up -at one of the shaded terminal nodes. For example, in the illustrated -case, the centre state of \texttt{s-aw+n} would join the second leaf -node from the right since its right context is a central consonant, -and its right -context is a nasal but its left context is not a central stop. - -The question at each node is chosen to (locally) maximise the likelihood -of the training data given the final set of state tyings. -Before any tree building can take place, all of the possible phonetic -questions must be loaded into \htool{HHEd} using \texttt{QS} -commands\index{qs@\texttt{QS} command}. Each -question takes the form ``Is the left or right context in the set P?'' where the -context is the model context as defined by its logical name. The -set P is -represented by an item list and -for convenience every question is given a name. As an example, the -following command -\begin{verbatim} - QS "L_Nasal" { ng-*,n-*,m-* } -\end{verbatim} -defines the question ``Is the left context a nasal?''. - -It is possible to calculate the log likelihood of the training -data given any pool of states (or models). Furthermore, this -can be done without reference to the -training data itself since for single Gaussian distributions the means, variances -and state occupation counts (input via a stats file) form sufficient statistics. -Splitting any pool into two will increase the log likelihood since it provides twice -as many parameters to model the same amount of data. The increase obtained when -each possible question is used can thus be calculated and the question selected -which gives the biggest improvement. - -Trees are therefore built using a top-down sequential optimisation process. -Initially all states (or models) are placed in a single cluster at the root -of the tree. The question is then found which gives the best split of the root -node. This process is repeated until the increase in log likelihood falls -below the threshold specified in the \texttt{TB} command. -As a final stage, the decrease in log likelihood is calculated for merging -terminal nodes with differing parents. Any pair of nodes for which this -decrease is less than the threshold used to stop splitting are then merged. -\index{tree optimisation} - -As with the \texttt{TC} command, it is useful to prevent the creation of -clusters with very little associated training data. The \texttt{RO} command -can therefore be used in tree clustering as well as in data-driven clustering. -When used with trees, any split which would result in a total occupation count -falling below the value specified is prohibited. Note that the \texttt{RO} -command can also be used to load the required stats file. Alternatively, -the stats file can be loaded using the \texttt{LS} command\index{ls@\texttt{LS} command}. - -As with data-driven clustering, using the trace facilities provided by -\htool{HHEd} is recommended for monitoring and setting the appropriate thresholds. -Basic tracing provides the following summary data for each tree -\begin{verbatim} - TB 350.00 aw_s3 {} - Tree based clustering - Start aw[3] : 28 have LogL=-86.899 occ=864.2 - Via aw[3] : 5 gives LogL=-84.421 occ=864.2 - End aw[3] : 5 gives LogL=-84.421 occ=864.2 - TB: Stats 28->5 [17.9%] { 4537->285 [6.3%] total } -\end{verbatim} -This example corresponds to the case illustrated in Fig~\href{f:qstree}. -The \texttt{TB} -command has been invoked with a threshold of 350.0 to cluster -the centre states of the triphones of the phone \textit{aw}. -At the start of clustering with all 28 states in a single pool, the average -log likelihood per unit of occupation is -86.9 and on completion with -5 clusters this has increased to -84.4. The middle line labelled ``via'' gives -the position after the tree has been built but before terminal nodes have been -merged (none were merged in this case). The last line summarises the overall -position. After building this tree, a total of 4537 states were reduced -to 285 clusters.\index{clustering!tracing in} - -As noted at the start of this section, an important advantage of tree-based clustering -is that it allows triphone models which have no training data to be synthesised. -This is done in \htool{HHEd} using the \texttt{AU} command\index{au@\texttt{AU} command} which has the form -\begin{verbatim} - AU hmmlist -\end{verbatim} -Its effect is to scan the given \texttt{hmmlist} and any physical models listed -which are not in the currently loaded set are synthesised. This is done -by descending the previously constructed trees for that phone and answering the -questions at each node based on the new unseen context. When each leaf node is -reached, the state representing that cluster is used for the corresponding state -in the unseen triphone\index{unseen triphones!synthesising}. - -The \texttt{AU} command can be used within the same edit script as the tree building -commands. However, it will often be the case that a new set of triphones is needed -at a later date, perhaps as a result of vocabulary changes. To make this possible, -a complete set of trees can be saved using the \texttt{ST} -command\index{st@\texttt{ST} command} and then later -reloaded using the \texttt{LT} command\index{lt@\texttt{LT} command}. -\index{decision trees!loading and storing} - -\mysect{Mixture Incrementing}{upmix} - -When building sub-word based continuous density systems, -the final system will typically consist of multiple mixture component -context-dependent HMMs. However, as indicated previously, the early -stages of triphone construction, particularly state tying, are best done -with single Gaussian models. Indeed, if tree-based clustering is to be -used there is no option.\index{mixture incrementing}\index{up-mixing} - -In \HTK\ therefore, the conversion from single Gaussian HMMs to multiple -mixture component HMMs is usually one of the final steps in building -a system. The mechanism provided to do this is the \htool{HHEd} \texttt{MU} command -which will increase the number of components in a mixture by -a process called \textit{mixture splitting}. -This approach to building a multiple -mixture component system is extremely -flexible since it allows the number of mixture components to be repeatedly increased -until the desired level of performance is achieved.\index{mixture splitting} - -The \texttt{MU} command\index{mu@\texttt{MU} command} has the form -\begin{verbatim} - MU n itemList -\end{verbatim} -where \texttt{n} gives the new number of mixture components required -and \texttt{itemList} defines the actual mixture distributions to -modify. This command works by repeatedly splitting the 'heaviest' -mixture component until the required number of components is obtained. -The 'heaviness' score of a mixture component is defined as the mixture -weight minus the number of splits involving that component that have -already been carried out by the current MU command. Subtracting the -number of splits discourages repeated splitting of the same mixture -component. If the GCONST value~\ref{s:hmmdef} of a component is more -than four standard deviations smaller than the average gConst, a -further adjustment is made to the 'heaviness' score of the component -in order to make it very unlikely that the component will be selected -for splitting. The actual split is performed by copying the mixture -component, dividing the weights of both copies by 2, and finally -perturbing the means by plus or minus 0.2 standard deviations. For -example, the command -\begin{verbatim} - MU 3 {aa.state[2].mix} -\end{verbatim} -would increase the number of mixture components in the output distribution -for state 2 of model \texttt{aa} to 3. Normally, however, the number of -components in all mixture distributions will be increased at the same time. -Hence, a command of the form is more usual -\begin{verbatim} - MU 3 {*.state[2-4].mix} -\end{verbatim} -It is usually a good idea to increment mixture components in -stages, for example, by incrementing by 1 or 2 then re-estimating, then -incrementing by 1 or 2 again and re-estimating, and so on until the -required number of components are obtained. This also allows recognition performance -to be monitored to find the optimum. - -One final point with regard to multiple mixture component distributions is that -all \HTK\ tools ignore mixture components whose weights fall below a threshold value -called \texttt{MINMIX} (defined in \texttt{HModel.h}). Such mixture components -are called {\it defunct}. Defunct mixture components can be -prevented by setting the \texttt{-w} option in \htool{HERest} so that all mixture -weights are floored to some level above -\texttt{MINMIX}\index{minmix@\texttt{MINMIX}}. If -mixture weights\index{mixture weight floor} -are allowed to fall below \texttt{MINMIX} then the corresponding Gaussian -parameters will not be written out when the model containing that component -is saved. It is possible to recover from this, however, since the \texttt{MU} command -will replace defunct mixtures\index{defunct mixtures} before performing any requested mixture -component increment. - -\mysect{Regression Class Tree Construction}{hhedregtree} - -In order to perform most model adaptation tasks (see -chapter~\ref{c:Adapt}), it will be necessarily to produce a binary regression -class tree\index{adaptation!regression tree}. -This tree is stored in the MMF, along with a regression -base class identifier for each mixture component. An example -regression tree and how it may be used is shown in -subsection~\ref{s:reg_classes}. \htool{HHEd} provides the means to -construct a regression class tree for a given MMF, and is invoked -using the \texttt{RC} command\index{rc@\texttt{RC} command}. -It is also necessary to supply a -statistics file, which is output using the \texttt{-s} option of -\texttt{HERest}. The statistics file can be loaded by invoking the -\texttt{LS}\index{ls@\texttt{LS} command} command. - -A centroid-splitting algorithm using a Euclidean distance measure is -used to grow the binary regression class tree to cluster the model -set's mixture components. Each leaf node therefore specifies a -particular mixture component cluster. This algorithm proceeds -as follows until the requested number of terminals has been achieved. -\begin{itemize} -\item Select a terminal node that is to be split. -\item Calculated the mean and variance from the mixture components clustered -at this node. -\item Create two children. Initialise their means to the parent mean -perturbed in opposite directions (for each child) by a fraction of -the variance. -\item For each component at the parent node assign the component -to one of the children by using a Euclidean distance measure to -ascertain which child mean the component is closest to. -\item Once all the components have been assigned, calculate the new -means for the children, based on the component assignments. -\item Keep re-assigning components to the children and re-estimating -the child means until there is no change in assignments from one -iteration to the next. Now finalise the split. -\end{itemize} - -As an example, the following \htool{HHEd} script would produce a -regression class tree with 32 terminal nodes, or regression base -classes:- -\begin{verbatim} - LS "statsfile" - RC 32 "rtree" -\end{verbatim} - -A further optional argument is possible with the -\texttt{RC} command. -This argument allows the user to specify the non-speech class -mixture components using an \texttt{itemlist}, -such as the silence mixture components. -\begin{verbatim} - LS "statsfile" - RC 32 "rtree" {sil.state[2-4].mix} -\end{verbatim} -In this case the first split that will be made in the regression class tree -will be to split the speech and non-speech sounds, after which the -tree building continues as usual. - -\mysect{Miscellaneous Operations}{misedit} - -The preceding sections have described the main \htool{HHEd} commands used for -building continuous density systems with tied parameters. A further group -of commands (\texttt{JO}, \texttt{TI} and \texttt{HK}) are used to build -tied-mixture systems and these are described in Chapter~\ref{c:discmods}. -Those -remaining cover a miscellany of functions. They are documented in the -reference entry for \htool{HHEd} and include commands to add and remove -state transitions\index{state transitions!adding/removing} -(\texttt{AT}\index{at@\texttt{AT} command}, -\texttt{RT}\index{rt@\texttt{RT} command}); synthesise triphones from -biphones (\texttt{MT}\index{mt@\texttt{MT} command}); -change the parameter kind of a HMM (\texttt{SK}\index{sk@\texttt{SK} command}); -modify stream dimensions (\texttt{SS}\index{ss@\texttt{SS} command}, -\texttt{SU}\index{su@\texttt{SU} command}, -\texttt{SW}\index{sw@\texttt{SW} command}); change/add an identifier name -to an MMF (\texttt{RN}\index{rn@\texttt{RN}} command); and expand -HMM sets by duplication, for example, as needed in making gender -dependent models (\texttt{DP}\index{dp@\texttt{DP} command}). - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/speechio.tex b/HTKBook/speechio.tex deleted file mode 100644 index 9550b57..0000000 --- a/HTKBook/speechio.tex +++ /dev/null @@ -1,1959 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* developed at: */ -%/* */ -%/* Speech Vision and Robotics group */ -%/* Cambridge University Engineering Department */ -%/* http://svr-www.eng.cam.ac.uk/ */ -%/* */ -%/* Entropic Cambridge Research Laboratory */ -%/* (now part of Microsoft) */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* 2001 Cambridge University */ -%/* Engineering Department */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{Speech Input/Output}{speechio} - -Many tools need to input parameterised speech data and \HTK\ provides -a number of different methods for doing this: -\begin{itemize} -\item input from a previously encoded speech parameter file -\item input from a waveform file which is encoded as part of the - input processing -\item input from an audio device which is encoded as part of the - input processing. -\end{itemize} -For input from a waveform file, a large number of different file formats -are supported, including all of the commonly used CD-ROM formats. -Input/output for parameter files is limited to the standard \HTK\ file format -and the new Entropic Esignal format. - - -\sidepic{Tool.spio}{60}{} -All \HTK\ speech input\index{speech input} is controlled by configuration -parameters which give details of what processing operations to apply to each -input speech file or audio source. This chapter describes speech input/output -in \HTK. The general mechanisms are explained and the various configuration -parameters are defined. The facilities for signal pre-processing, linear -prediction-based processing, Fourier-based processing and vector quantisation -are presented and the supported file formats are given. Also described are the -facilities for augmenting the basic speech parameters with energy measures, -delta coefficients and acceleration (delta-delta) coefficients and for -splitting each parameter vector into multiple data streams to form -\textit{observations}. The chapter concludes with a brief description of the -tools \htool{HList} and \htool{HCopy} which are provided for viewing, -manipulating and encoding speech files. - -\mysect{General Mechanism}{genio} - -The facilities for speech input and output in \HTK\ are provided -by five distinct modules: \htool{HAudio}, \htool{HWave}, -\htool{HParm}, \htool{HVQ} and \htool{HSigP}. The interconnections -between these modules are shown in Fig.~\href{f:Spmods}. -\index{speech input!general mechanism} - -\sidefig{Spmods}{62}{Speech Input Subsystem}{2}{ -Waveforms -are read from files using \htool{HWave}, or are input direct from -an audio device using \htool{HAudio}. In a few rare cases, such as -in the display tool \htool{HSLab}, only the speech waveform is needed. -However, in most cases the waveform is wanted in parameterised form and -the required encoding is performed by \htool{HParm} -using the signal processing operations defined in -\htool{HSigP}. The parameter vectors are output by \htool{HParm} -in the form of observations which are the basic units of data processed -by the \HTK\ recognition and training tools. An observation contains all -components of a raw parameter vector but it may be possibly split into -a number of independent parts. Each such part is regarded by a \HTK\ tool -as a statistically independent data stream. Also, an observation -may include VQ indices attached to each data stream. Alternatively, -VQ indices can be read directly from a parameter file in which case the -observation will contain only VQ indices. -} - -Usually a \HTK\ tool will require a number of speech data files to be -specified on the command line. In the majority of cases, these -files will be required in parameterised form. Thus, the following example -invokes the \HTK\ embedded training tool \htool{HERest} -to re-estimate a set of models using the speech data -files \texttt{s1}, \texttt{s2}, \texttt{s3}, \ldots . These are -input via the library module \htool{HParm} and they -must be in exactly the form needed by the models. -\begin{verbatim} - HERest ... s1 s2 s3 s4 ... -\end{verbatim} - -However, if the external form of the speech data files is not in the -required form, it will often be possible to convert them automatically during -the input process. -To do this, configuration parameter values are specified whose function -is to define exactly -how the conversion should be done. -The key idea is that there is a -\textit{source parameter kind} and \textit{target parameter kind}. -The source refers to the natural form of the data in -the external medium and the target refers to the form of the -data that is required internally by the \HTK\ tool. -The principle function of the speech -input subsystem is to convert the source parameter kind into the -required target parameter kind. \index{speech input!automatic conversion} - -Parameter kinds consist of a base form to which one or more -qualifiers may be attached where each qualifier consists of -a single letter preceded by an underscore character.\index{qualifiers} -Some examples of parameter kinds are -\begin{varlist} - \fwitem{2cm}{WAVEFORM} simple waveform - \fwitem{2cm}{LPC} linear prediction coefficients - \fwitem{2cm}{LPC\_D\_E} LPC with energy and delta coefficients - \fwitem{2cm}{MFCC\_C} compressed mel-cepstral coefficients -\end{varlist} -\index{speech input!target kind} - -The required source and target parameter kinds are specified -using the configuration parameters \texttt{SOURCEKIND} -\index{sourcekind@\texttt{SOURCEKIND}} and -\texttt{TARGETKIND}\index{targetkind@\texttt{TARGETKIND}}. -Thus, if the following configuration parameters were defined -\begin{verbatim} - SOURCEKIND = WAVEFORM - TARGETKIND = MFCC_E -\end{verbatim} -then the speech input subsystem would expect each input file to contain -a speech waveform and it would convert it to mel-frequency cepstral -coefficients with log energy appended. - -The source need not be a waveform. For example, the configuration -parameters -\begin{verbatim} - SOURCEKIND = LPC - TARGETKIND = LPREFC -\end{verbatim} -would be used to read in files containing linear prediction coefficients -and convert them to reflection coefficients. - -For convenience, a special parameter kind called -\texttt{ANON}\index{anon@\texttt{ANON}} is provided. When the source is -specified as \texttt{ANON} then the actual kind of the source is determined -from the input file. When \texttt{ANON} is used in the target kind, then it is -assumed to be identical to the source. For example, the effect of the -following configuration parameters -\begin{verbatim} - SOURCEKIND = ANON - TARGETKIND = ANON_D -\end{verbatim} -would simply be to add delta coefficients to whatever the source form -happened to be. -The source and target parameter kinds default to \texttt{ANON} -to indicate that by default -no input conversions are performed. Note, however, that where two or more -files are listed on the command line, the meaning of -\texttt{ANON} will not be re-interpreted from one file to the next. Thus, it -is a general rule, that any tool reading multiple source speech files requires -that all the files have the same parameter kind. - -The conversions applied by \HTK's input subsystem can be complex and may -not always behave exactly as expected. There are two facilities that can -be used to help check and debug the set-up of the speech i/o -configuration parameters. -Firstly, the tool \htool{HList} simply displays speech data by listing it -on the terminal. However, since \htool{HList} uses the speech -input subsystem like -all \HTK\ tools, if a value for \texttt{TARGETKIND} is set, then -it will display the target -form rather than the source form. This is the simplest way to check the form of -the speech data that will actually be delivered to a \HTK\ tool. -\htool{HList} is described -in more detail in section~\ref{s:UseHList} below. - -Secondly, trace output can be generated from the \htool{HParm} module -by setting the \texttt{TRACE} configuration file parameter. This is a -bit-string in which individual bits cover different parts of the -conversion processing. The details are given in the reference section. - -To summarise, speech input in \HTK\ is controlled by configuration -parameters. The key parameters are \texttt{SOURCEKIND} and {\tt -TARGETKIND} which specify the source and target parameter kinds. -These determine the end-points of the required input conversion. -However, to properly specify the detailed steps in between, more -configuration parameters must be defined. -These are described in subsequent sections. - -\mysect{Speech Signal Processing}{sigproc} - -In this section, the basic mechanisms involved in transforming a -speech waveform into a sequence of parameter vectors will be -described. Throughout this section, it is assumed that the -\texttt{SOURCEKIND} is \texttt{WAVEFORM} and that data is being read from -a HTK format file via \htool{HWave}. Reading from different format -files is described below in section~\ref{s:waveform}. -Much of the -material in this section also applies to data read direct from an audio -device, the -additional features needed to deal with this latter case are -described later in section~\ref{s:audioio}. -\vspace{0.2cm} -\index{speech input!blocking} - -The overall process is illustrated in Fig.~\href{f:Blocking} -which shows the sampled waveform being converted into a -sequence of parameter blocks. In general, \HTK\ regards -both waveform files and parameter files as being just -sample sequences, the only difference being that in the former -case the samples are 2-byte integers and in the latter they -are multi-component vectors. The sample rate of the input -waveform will normally be determined from the input file -itself. However, it can be set explicitly using the -configuration parameter \texttt{SOURCERATE}. The period -between each parameter vector determines the output sample -rate and it is set using the configuration parameter -\texttt{TARGETRATE}. The segment of waveform used to determine -each parameter vector is usually referred to as a window -and its size is set by the -configuration parameter \texttt{WINDOWSIZE}. Notice that the -window size and frame rate are independent. Normally, -the window size will be larger than the frame rate so that -successive windows overlap as illustrated in -Fig.~\href{f:Blocking}. -\index{sourcerate@\texttt{SOURCERATE}} -\index{targetrate@\texttt{TARGETRATE}} -\index{windowsize@\texttt{WINDOWSIZE}} - -For example, a waveform sampled -at 16kHz -would be converted into 100 parameter vectors per -second using a 25 msec window by setting the following -configuration parameters. -\begin{verbatim} - SOURCERATE = 625 - TARGETRATE = 100000 - WINDOWSIZE = 250000 -\end{verbatim} -Remember that all durations are specified in 100 nsec units\footnote{ -The somewhat bizarre choice of 100nsec units originated in Version 1 of -\HTK\ when times were represented by integers and this unit was the best -compromise between precision and range. Times are now represented by -doubles and hence the constraints no longer apply. However, the need for backwards -compatibility means that 100nsec units have been retained. The names -\texttt{SOURCERATE} and \texttt{TARGETRATE} are also non-ideal, -\texttt{SOURCEPERIOD} and \texttt{TARGETPERIOD} would be better. -}. - -\sidefig{Blocking}{50}{Speech Encoding Process}{2}{} -Independent of what parameter kind is required, there are some simple -pre-processing operations that can be applied prior to performing the actual -signal analysis.\index{speech input!pre-processing} -Firstly, the DC mean can be removed from the source waveform by setting the -Boolean configuration parameter -\texttt{ZMEANSOURCE}\index{zmeansource@\texttt{ZMEANSOURCE}} to true -(i.e.\ \texttt{T}). This is useful when\index{speech input!DC offset} -the original analogue-digital conversion has added a DC offset to the -signal. It is applied to each window individually so that it can be -used both when reading from a file and when using direct audio -input\footnote{ This method of applying a zero mean is different to -HTK Version 1.5 where the mean was calculated and subtracted from the -whole speech file in one operation. The configuration variable -\texttt{V1COMPAT} can be set to revert to this older behaviour.}. - -Secondly, it is common practice to pre-emphasise -the signal by applying the first order difference equation -\hequation{ - {s^{\prime}}_n = s_n - k\,s_{n-1} -}{preemp} -to the samples\index{speech input!pre-emphasis} -$\{s_n, n=1,N \}$ in each window. Here $k$ is the -pre-emphasis\index{pre-emphasis} coefficient which should be in the range -$0 \leq k < 1$. It is specified using the configuration -parameter \texttt{PREEMCOEF}\index{preemcoef@\texttt{PREEMCOEF}}. -Finally, -it is usually beneficial to taper the -samples in each window so that discontinuities at the window -edges are attenuated. This is done by setting the -Boolean configuration -parameter \texttt{USEHAMMING}\index{usehamming@\texttt{USEHAMMING}} -to true. -This applies the following transformation to the samples -$\{s_n, n=1,N\}$ in the window -\hequation{ - {s^{\prime}}_n = \left\{ 0.54 - 0.46 \cos \left( \frac{2 \pi (n-1)}{N-1} - \right) \right\} s_n -}{ham} -When both pre-emphasis and Hamming windowing are enabled, -pre-emphasis is performed -first.\index{speech input!Hamming window function} \index{Hamming Window} - -In practice, all three of the above are usually applied. -Hence, a configuration file will typically contain the -following -\begin{verbatim} - ZMEANSOURCE = T - USEHAMMING = T - PREEMCOEF = 0.97 -\end{verbatim} -Certain types of artificially generated waveform data can cause numerical -overflows with some coding schemes. In such cases adding a small amount of -random noise to the waveform data solves the problem. The noise is added -to the samples using -\hequation{ - {s^{\prime}}_n = s_n + q RND() -}{dither} -where $RND()$ is a uniformly distributed random value over the interval -$[-1.0, +1.0)$ and $q$ is the scaling factor. The amount of noise added -to the data ($q$) is set with the configuration parameter -\index{adddither@\texttt{ADDDITHER}}\texttt{ADDDITHER} (default value $0.0$). -A positive value causes the noise signal added to be the same every time -(ensuring that the same file always gives exactly the same results). With a -negative value the noise is random and the same file may produce slightly -different results in different trials. - -One problem that can arise when processing speech waveform files obtained from -external sources, such as databases on CD-ROM, is that the -byte-order\index{byte-order} may be different to that used by the machine on -which \HTK\ is running. To deal with this problem, \htool{HWave} can perform -automatic byte-swapping in order to preserve proper byte order. \HTK\ assumes -by default that speech waveform data is encoded as a sequence of 2-byte -integers as is the case for most current speech databases\footnote{Many of the -more recent speech databases use compression. In these cases, the data may be -regarded as being logically encoded as a sequence of 2-byte integers even if -the actual storage uses a variable length encoding scheme.}. -If the source format is known, then \htool{HWave} will also make an assumption -about the byte order used to create speech files in that format. It then checks -the byte order of the machine that it is running on and automatically performs -byte-swapping if the order is different. For unknown formats, proper byte order -can be ensured by setting the configuration parameter -\texttt{BYTEORDER}\index{byteorder@\texttt{BYTEORDER}} to \texttt{VAX} if the -speech data was created on a little-endian machine such as a VAX or an IBM PC, -and to anything else (e.g. \texttt{NONVAX}) if the speech data was created on a -big-endian machine such as a SUN, HP or Macintosh machine. \index{speech -input!byte order} - -The reading/writing of \HTK\ format waveform files can be further controlled -via the configuration parameters \texttt{NATURALREADORDER} and -\texttt{NATURALWRITEORDER}. The effect and default settings of these parameters -are described in section~\href{s:byteswap}. -\index{byte swapping} -Note that \texttt{BYTEORDER} should not be used when \texttt{NATURALREADORDER} -is set to true. Finally, note that \HTK\ can also byte-swap parameterised -files in a similar way provided that only the byte-order of each 4 byte float -requires inversion. - -\mysect{Linear Prediction Analysis}{lpcanal} - -In linear prediction (LP) \index{linear prediction} analysis, the -vocal tract transfer function -is modelled by an all-pole filter\index{all-pole filter} with transfer function\footnote{ -Note that some textbooks define the denominator of equation~\ref{e:allpole} -as $1 - \sum_{i=1}^p a_i z^{-i}$ so that the filter coefficients are the -negatives of those computed by \HTK.} -\hequation{ -H(z) = \frac{1}{\sum_{i=0}^p a_i z^{-i}} -}{allpole} -where $p$ is the number of poles and $a_0 \equiv 1$. -The filter coefficients $\{a_i \}$ are chosen to minimise -the mean square filter prediction error summed over the analysis -window. The \HTK\ module \htool{HSigP} uses the \textit{autocorrelation -method} to perform this optimisation as follows. - -Given a window of speech samples $\{s_n, n=1,N \}$, -the first $p+1$ terms of the autocorrelation sequence are -calculated from -\hequation{ -r_i = \sum_{j=1}^{N-i} s_j s_{j+i} -}{autoco} -where $i = 0,p$. -The filter coefficients are then computed recursively -using a set of auxiliary coefficients $\{k_i\}$ which can be -interpreted as the reflection coefficients of an equivalent -acoustic tube and the prediction error $E$ which is initially -equal to $r_0$. Let $\{k_j^{(i-1)} \}$ and $\{a_j^{(i-1)} \}$ -be the reflection and filter coefficients for a filter of order -$i-1$, then a filter of order $i$ can be calculated in three steps. -Firstly, a new set of reflection coefficients\index{reflection coefficients} are calculated. -\hequation{ - k_j^{(i)} = k_j^{(i-1)} -}{kupdate1} -for $j = 1,i-1$ and -\hequation{ - k_i^{(i)} = \left\{ r_i + - \sum_{j=1}^{i-1} a_j^{(i-1)} r_{i-j} \right\} / E^{(i-1)} -}{kupdate2} -Secondly, the prediction energy is updated. -\hequation{ -E^{(i)} = (1 - k_i^{(i)} k_i^{(i)} ) E^{(i-1)} -}{Eupdate} -Finally, new filter coefficients are computed -\hequation{ -a_j^{(i)} = a_j^{(i-1)} - k_i^{(i)} a_{i-j}^{(i-1)} -}{aupdate1} -for $j = 1,i-1$ and -\hequation{ -a_i^{(i)} = - k_i^{(i)} -}{aupdate2} -This process is repeated from $i=1$ through to the required filter order -$i=p$. - -To effect the above transformation, the target parameter kind must -be set to either \texttt{LPC}\index{lpc@\texttt{LPC}} to obtain the LP filter parameters $\{a_i\}$ or -\texttt{LPREFC}\index{lprefc@\texttt{LPREFC}} to obtain the reflection coefficients $\{k_i \}$. The -required filter order must also be set using the configuration -parameter \texttt{LPCORDER}\index{lpcorder@\texttt{LPCORDER}}. -Thus, for example, the following configuration -settings would produce a target parameterisation -consisting of 12 reflection coefficients per vector. -\begin{verbatim} - TARGETKIND = LPREFC - LPCORDER = 12 -\end{verbatim} - -An alternative LPC-based parameterisation is obtained by setting the -target kind to \texttt{LPCEPSTRA}\index{lpcepstra@\texttt{LPCEPSTRA}} to generate linear prediction cepstra. -The cepstrum of a signal is computed by taking a Fourier (or similar) -transform of the log spectrum. In the case of linear -prediction cepstra\index{linear prediction!cepstra}, the -required spectrum is the linear prediction spectrum which can be obtained -from the Fourier transform of the filter coefficients. However, it can be shown -that the required cepstra can be more efficiently computed using -a simple recursion -\hequation{ - c_n = -a_n - \frac{1}{n} \sum_{i=1}^{n-1} (n-i) a_i c_{n-i} -}{lpcepstra} -The number of cepstra generated need not be the same as the number of -filter coefficients, hence it is set by a separate configuration -parameter called \texttt{NUMCEPS}\index{numceps@\texttt{NUMCEPS}}. - -The principal advantage of cepstral coefficients is that they are -generally decorrelated and this allows diagonal covariances -to be used in the HMMs. However, one minor problem with -them is that the higher order cepstra are numerically quite small and -this results in -a very wide range of variances when going from the low to high cepstral -coefficients\index{cepstral coefficients!liftering}. -\HTK\ does not have a problem with this but for pragmatic reasons such as -displaying model parameters, flooring variances, etc., it is convenient to re-scale -the cepstral coefficients to have similar magnitudes. This is done by -setting the configuration parameter \texttt{CEPLIFTER}\index{ceplifter@\texttt{CEPLIFTER}} to some value $L$ to -\textit{lifter} the cepstra according to the following formula -\hequation{ - {c^{\prime}}_n = \left( 1 + \frac{L}{2} sin \frac{\pi n}{L} - \right) c_n -}{ceplifter} - -As an example, the following configuration parameters would -use a 14'th order linear prediction analysis to -generate 12 liftered LP cepstra per target vector -\begin{verbatim} - TARGETKIND = LPCEPSTRA - LPCORDER = 14 - NUMCEPS = 12 - CEPLIFTER = 22 -\end{verbatim} -These are typical of the values needed to generate a good front-end -parameterisation for a speech recogniser based on linear prediction. -\index{cepstral analysis!LPC based}\index{cepstral analysis!liftering coefficient} - -Finally, note that the conversions supported by \HTK\ are not limited to -the case where the source is a waveform. \HTK\ can convert any -LP-based parameter into any other LP-based parameter. - -\mysect{Filterbank Analysis}{fbankanal} - -The human ear resolves frequencies non-linearly across the audio spectrum and -empirical evidence suggests that designing a front-end to operate in a similar -non-linear manner improves recognition performance. A popular alternative to -linear prediction based analysis is therefore filterbank analysis since this -provides a much more straightforward route to obtaining the desired non-linear -frequency resolution. However, filterbank amplitudes are highly correlated and -hence, the use of a cepstral transformation in this case is virtually mandatory -if the data is to be used in a HMM based recogniser with diagonal covariances. -\index{cepstral analysis!filter bank} \index{speech input!filter bank} - -\HTK\ provides a simple Fourier transform based filterbank designed to -give approximately equal resolution on a mel-scale. Fig.~\href{f:melfbank} -illustrates the general form of this filterbank. As can be seen, -the filters used are triangular and they are equally spaced along the mel-scale -which is defined by -\hequation{ - \mbox{Mel}(f) = 2595 \log_{10}(1 + \frac{f}{700}) -}{melscale} -To implement this filterbank, the window of speech data is -transformed\index{mel scale} using a Fourier transform and the magnitude is -taken. The magnitude coefficients are then \textit{binned} by correlating them -with each triangular filter. Here binning means that each FFT magnitude -coefficient is multiplied by the corresponding filter gain and the results -accumulated. Thus, each bin holds a weighted sum representing the spectral -magnitude in that filterbank channel.\index{binning} As an alternative, the -Boolean configuration parameter -\texttt{USEPOWER}\index{usepower@\texttt{USEPOWER}} can be set true to use the -power rather than the magnitude of the Fourier transform in the binning -process. \index{cepstral analysis!power vs magnitude} - -\centrefig{melfbank}{110}{Mel-Scale Filter Bank} - -\index{speech input!bandpass filtering} -Normally the triangular filters are spread over the whole frequency range from -zero upto the Nyquist frequency. However, band-limiting is often useful to -reject unwanted frequencies or avoid allocating filters to frequency regions in -which there is no useful signal energy. For filterbank analysis only, lower -and upper frequency cut-offs can be set using the configuration parameters -\texttt{LOFREQ}\index{lofreq@\texttt{LOFREQ}} and -\texttt{HIFREQ}\index{hifreq@\texttt{HIFREQ}}. For example, -\begin{verbatim} - LOFREQ = 300 - HIFREQ = 3400 -\end{verbatim} -might be used for processing telephone speech. When low and high pass cut-offs -are set in this way, the specified number of filterbank channels are distributed -equally on the mel-scale across the resulting pass-band such that the lower cut-off -of the first filter is at \texttt{LOFREQ} and the upper cut-off of the last -filter is at \texttt{HIFREQ}. - -If mel-scale filterbank parameters are required directly, then the target kind -should be set to \texttt{MELSPEC}\index{melspec@\texttt{MELSPEC}}. -Alternatively, log filterbank parameters can be generated by setting the target -kind to \texttt{FBANK}. - - -\mysect{Vocal Tract Length Normalisation}{vtln} - -A simple speaker normalisation technique can be implemented by -modifying the filterbank analysis described in the previous section. -Vocal tract length normalisation (VTLN) aims to compensate for the -fact that speakers have vocal tracts of different sizes. VTLN can be -implemented by warping the frequency axis in the filterbank analysis. -In HTK simple linear frequency warping is supported. The warping -factor~$\alpha$ is controlled by the configuration variable -\texttt{WARPFREQ}\index{melspec@\texttt{WARPFREQ}}. Here values of -$\alpha < 1.0$ correspond to a compression of the frequency axis. As -the warping would lead to some filters being placed outside the -analysis frequency range, the simple linear warping function is -modified at the upper and lower boundaries. The result is that the -lower boundary frequency of the analysis -(\texttt{LOFREQ}\index{melspec@\texttt{LOFREQ}}) and the upper -boundary frequency (\texttt{HIFREQ}\index{melspec@\texttt{HIFREQ}}) -are always mapped to themselves. The regions in which the warping -function deviates from the linear warping with factor~$\alpha$ are -controlled with the two configuration variables -(\texttt{WARPLCUTOFF}\index{melspec@\texttt{WARPLCUTOFF}}) and -(\texttt{WARPUCUTOFF}\index{melspec@\texttt{WARPUCUTOFF}}). -Figure~\href{f:vtlnpiecewise} shows the overall shape of the resulting -piece-wise linear warping functions. - -\centrefig{vtlnpiecewise}{60}{Frequency Warping} - -The warping factor~$\alpha$ can for example be found using a search -procedure that compares likelihoods at different warping factors. A -typical procedure would involve recognising an utterance with -$\alpha=1.0$ and then performing forced alignment of the hypothesis -for all warping factors in the range $0.8 - 1.2$. The factor that -gives the highest likelihood is selected as the final warping factor. -Instead of estimating a separate warping factor for each utterance, -large units can be used by for example estimating only one~$\alpha$ -per speaker. - -Vocal tract length normalisation can be applied in testing as well as -in training the acoustic models. - -\mysect{Cepstral Features}{cepstrum} - -Most often, however, cepstral parameters are required -and these are indicated by setting the target kind to \texttt{MFCC} standing -for Mel-Frequency Cepstral Coefficients (MFCCs). These are calculated from the -log filterbank amplitudes $\{m_j\}$ using the Discrete Cosine Transform -\hequation{ - c_i = \sqrt{\frac{2}{N}} \sum_{j=1}^N m_j \cos \left( \frac{\pi i}{N}(j-0.5) \right) -}{dct} -where $N$ is the number of filterbank channels set by the configuration -parameter \texttt{NUMCHANS}\index{numchans@\texttt{NUMCHANS}}. The required -number of cepstral coefficients is set by -\texttt{NUMCEPS}\index{numceps@\texttt{NUMCEPS}} as in the linear prediction -case. Liftering can also be applied to MFCCs using the -\texttt{CEPLIFTER}\index{ceplifter@\texttt{CEPLIFTER}} configuration parameter -(see equation~\ref{e:ceplifter}). - -MFCCs are the parameterisation of choice for many speech recognition applications. -They give good discrimination and lend themselves to a number of manipulations. -In particular, the effect of inserting a transmission channel on the input -speech is to multiply the speech spectrum by the channel transfer function. -In the log cepstral domain, this multiplication becomes a simple addition which -can be removed by subtracting the cepstral mean from all input vectors. -In practice, of course, the mean has to be estimated over a limited amount -of speech data so the subtraction will not be perfect. Nevertheless, this -simple technique is very effective in practice where it -compensates for long-term spectral effects such as those caused by different -microphones and audio channels. To perform this -so-called \textit{Cepstral Mean Normalisation} (CMN) in \HTK\, it is only necessary -to add the \texttt{\_Z}\index{qualifiers!aaaz@\texttt{\_Z}} qualifier to the -target parameter kind. The mean is estimated by computing the average of -each cepstral parameter across each input speech file. Since this cannot be done -with live audio, cepstral mean compensation is not supported for this case. -\index{cepstral mean normalisation} - -In addition to the mean normalisation the variance of the data can be -normalised. For improved robustness both mean and variance of the data -should be calculated on a larger units (e.g.\ on all the data from a -speaker instead of just on a single utterance). To use -speaker-/cluster-based normalisation the mean and variance estimates -are computed offline before the actual recognition and stored in -separate files (two files per cluster). The configuration variables -\texttt{CMEANDIR}\index{numchans@\texttt{CMEANDIR}} and -\texttt{VARSCALEDIR}\index{numchans@\texttt{VARSCALEDIR}} point to the -directories where these files are stored. To find the actual filename -a second set of variables -(\texttt{CMEANMASK}\index{numchans@\texttt{CMEANMASK}} and -\texttt{VARSCALEMASK}\index{numchans@\texttt{VARSCALEMASK}}) has to be -specified. These masks are regular expressions in which you can use -the special characters \texttt{?}, \texttt{*} and \texttt{\%}. The -appropriate mask is matched against the filename of the file to be -recognised and the substring that was matched against the \texttt{\%} -characters is used as the filename of the normalisation file. An -example config setting is: - -\begin{verbatim} -CMEANDIR = /data/eval01/plp/cmn -CMEANMASK = %%%%%%%%%%_* -VARSCALEDIR = /data/eval01/plp/cvn -VARSCALEMASK = %%%%%%%%%%_* -VARSCALEFN = /data/eval01/plp/globvar -\end{verbatim} - -So, if the file \verb|sw1-4930-B_4930Bx-sw1_000126_000439.plp| is to be -recognised then the normalisation estimates would be loaded from the -following files: - -\begin{verbatim} -/data/eval01/plp/cmn/sw1-4930-B -/data/eval01/plp/cvn/sw1-4930-B -\end{verbatim} - -The file specified by -\texttt{VARSCALEFN}\index{numchans@\texttt{VARSCALEFN}} contains the -global target variance vector, i.e. the variance of the data is first -normalised to 1.0 based on the estimate in the appropriate file in -\texttt{VARSCALEDIR}\index{numchans@\texttt{VARSCALEDIR}} and then -scaled to the target variance given in -\texttt{VARSCALEFN}\index{numchans@\texttt{VARSCALEFN}}. - -The format of the files is very simple and each of them just contains -one vector. Note that in the case of the cepstral mean only the static -coefficients will be normalised. A cmn file could for example look like: - -\begin{verbatim} - - 13 --10.285290 -9.484871 -6.454639 ... -\end{verbatim} - - -The cepstral variance normalised always applies to the full -observation vector after all qualifiers like delta and acceleration -coefficients have been added, e.g.: - -\begin{verbatim} - - 39 -33.543018 31.241779 36.076199 ... -\end{verbatim} - -The global variance vector will always have the same number of -dimensions as the cvn vector, e.g.: - -\begin{verbatim} - 39 - 2.974308e+01 4.143743e+01 3.819999e+01 ... -\end{verbatim} - -These estimates can be generated using \htool{HCompV}. See the -reference section for details. - - -\mysect{Perceptual Linear Prediction}{plp} - -An alternative to the Mel-Frequency Cepstral Coefficients is the use -of Perceptual Linear Prediction (PLP) coefficients. - -As implemented in HTK the PLP feature extraction is based on the -standard mel-frequency filterbank (possibly warped). The mel -filterbank coefficients are weighted by an equal-loudness curve and -then compressed by taking the cubic root.\footnote{the degree of - compression can be controlled by setting the configuration parameter - \texttt{COMPRESSFACT}\index{enormalise@\texttt{COMPRESSFACT}} which - is the power to which the amplitudes are raised and defaults to - 0.33)} From the resulting auditory spectrum LP coefficients are -estimated which are then converted to cepstral coefficients in the -normal way (see above). - - -\mysect{Energy Measures}{energy} - -\index{speech input!energy measures} -To augment the spectral parameters derived from linear prediction or -mel-filterbank analysis, an energy term can be appended by including the -qualifier \texttt{\_E}\index{qualifiers!aaae@\texttt{\_E}} in the target kind. -The energy is computed as the log of the signal energy, that is, for speech -samples $\{s_n, n=1,N \}$ -\hequation{ - E = log \sum_{n=1}^N s_n^2 -}{logenergy} - -This log energy measure can be normalised to the range $-E_{min}..1.0$ by -setting the Boolean configuration parameter -\texttt{ENORMALISE}\index{enormalise@\texttt{ENORMALISE}} to true (default -setting). This -normalisation is implemented by subtracting the maximum value of $E$ in the -utterance and adding $1.0$. -Note that energy normalisation is incompatible with live audio -input and in such circumstances the configuration variable \texttt{ENORMALISE} -should be explicitly set false. -The lowest energy in the utterance can be clamped using the configuration -parameter -\texttt{SILFLOOR}\index{silfloor@\texttt{SILFLOOR}} which gives the ratio -between the maximum and minimum energies in the utterance in dB. Its default -value is 50dB. -Finally, the overall log energy can be arbitrarily scaled by the value of the -configuration parameter \texttt{ESCALE}\index{escale@\texttt{ESCALE}} whose -default is $0.1$. \index{silence floor} - -When calculating energy for LPC-derived parameterisations, the default is to -use the zero-th delay autocorrelation coefficient ($r_0$). However, this means -that the energy is calculated after windowing and pre-emphasis. If the -configuration parameter \texttt{RAWENERGY}\index{rawenergy@\texttt{RAWENERGY}} -is set true, however, then energy is calculated separately before any windowing -or pre-emphasis regardless of the requested parameterisation\footnote{ In any -event, setting the compatibility variable \texttt{V1COMPAT} to true in -\htool{HPARM} will ensure that the calculation of energy is compatible with -that computed by the Version 1 tool \htool{HCode}. }. - -In addition to, or in place of, the log energy, the qualifier -\texttt{\_O}\index{qualifiers!aaao@\texttt{\_O}} can be added to a target kind -to indicate that the 0'th cepstral parameter $C_0$ is to be appended. This -qualifier is only valid if the target kind is \texttt{MFCC}. Unlike earlier -versions of \HTK\, scaling factors set by the configuration variable -\texttt{ESCALE} are not applied to $C_0$\footnote{ Unless \texttt{V1COMPAT} is -set to true. }. - -\mysect{Delta, Acceleration and Third Differential Coefficients}{delta} - -\index{speech input!dynamic coefficients} -The performance of a speech recognition system can be greatly enhanced by -adding time derivatives to the basic static parameters. In \HTK, these are -indicated by attaching qualifiers to the basic parameter kind. The qualifier -\texttt{\_D} indicates that first order regression coefficients (referred to as -delta coefficients) are appended, the qualifier -\texttt{\_A}\index{qualifiers!aaaa@\texttt{\_A}} indicates that second order -regression coefficients (referred to as acceleration coefficients) and - the qualifier -\texttt{\_T}\index{qualifiers!aaaa@\texttt{\_T}} indicates that third order -regression coefficients (referred to as third differential coefficients) are -appended. The \texttt{\_A} qualifier cannot be used without also using the -\texttt{\_D}\index{qualifiers!aaad@\texttt{\_D}} qualifier. Similarly -the \texttt{\_T} qualifier cannot be used without also using the -\texttt{\_D} and \texttt{\_A} qualifiers. - -The delta coefficients\index{delta coefficients} are computed using the -following regression formula\index{regression formula} -\hequation{ - d_t = \frac{ \sum_{\theta =1}^\Theta \theta(c_{t+\theta} - c_{t-\theta}) }{ - 2 \sum_{\theta = 1}^\Theta \theta^2 } -}{deltas} -where $d_t$ is a delta coefficient at time $t$ computed in terms of the -corresponding static coefficients $c_{t-\Theta}$ to $c_{t+\Theta}$. The value -of $\Theta$ is set using the configuration parameter -\texttt{DELTAWINDOW}\index{deltawindow@\texttt{DELTAWINDOW}}. The same formula -is applied to the delta coefficients to obtain acceleration coefficients except -that in this case the window size is set by -\texttt{ACCWINDOW}\index{accwindow@\texttt{ACCWINDOW}}. Similarly -the third differentials use \texttt{THIRDWINDOW}. Since -equation~\ref{e:deltas} relies on past and future speech parameter values, -some modification is needed at the beginning and end of the speech. The -default behaviour is to replicate the first or last vector as needed to fill -the regression window. - -In older version 1.5 of \HTK\ and earlier, this end-effect problem was solved -by using simple -first order differences at the start and end of the speech, that is -\begin{equation} - d_t = c_{t+1} - c_t,\;\;\; t<\Theta -\end{equation} -and -\begin{equation} - d_t = c_t - c_{t-1}, \;\;\; t \geq T-\Theta -\end{equation} -where $T$ is the length of the data file. If required, this older behaviour -can be restored by setting the configuration variable -\texttt{V1COMPAT}\index{v1compat@\texttt{V1COMPAT}} -to true in \htool{HParm}. - -For some purposes, it is useful to use simple differences throughout. This -can be achieved by setting the configuration -variable \texttt{SIMPLEDIFFS}\index{simplediffs@\texttt{SIMPLEDIFFS}} -to true in \htool{HParm}. In this case, just the end-points of the delta window -are used, i.e. -\hequation{ - d_t = \frac{ (c_{t+\Theta} - c_{t-\Theta}) }{ - 2 \Theta} -}{simdiffs} -\index{simple differences} - -When delta and acceleration coefficients are requested, they are computed for -all static parameters including energy if present. In some applications, the -absolute energy is not useful but time derivatives of the energy may be. By -including the \texttt{\_E} qualifier together with the -\texttt{\_N}\index{qualifiers!aaan@\texttt{\_N}} qualifier, the absolute energy -is suppressed leaving just the delta and acceleration coefficients of the -energy. - -\mysect{Storage of Parameter Files}{parmstore} - -Whereas \HTK\ can handle waveform data in a variety of file formats, -all parameterised speech data is stored externally in either native -\HTK\ format data files or Entropic Esignal format files. -Entropic ESPS format is no longer supported directly, but input and output -filters can be used to convert ESPS to Esignal format on input and -Esignal to ESPS on output. - -\subsection{\HTK\ Format Parameter Files} - -\HTK\ format files consist of a contiguous sequence of \textit{samples} -preceded by a header. Each sample is a vector of either 2-byte integers or -4-byte floats. 2-byte integers are used for compressed forms as described -below and for vector quantised data as described later in -section~\ref{s:vquant}. \HTK\ format data files can also be used to store -speech waveforms as described in section~\ref{s:waveform}. \index{file -formats!HTK} - -The \HTK\ file format header is 12 bytes long and contains the following data -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{nSamples}\>-- number of samples in file (4-byte integer) \\ -\>\texttt{sampPeriod}\>-- sample period in 100ns units (4-byte integer) \\ -\>\texttt{sampSize}\>-- number of bytes per sample (2-byte integer) \\ -\>\texttt{parmKind}\>-- a code indicating the sample kind (2-byte integer) -\end{tabbing} -The parameter kind\index{parameter kind} consists of a 6 bit -code representing the basic parameter kind plus additional bits for -each of the possible qualifiers\index{qualifiers}. The basic parameter kind codes are -\begin{tabbing} -++++\= +++ \= ++++++++ \= \kill -\>0 \> \texttt{WAVEFORM} \> sampled waveform \\ -\>1 \> \texttt{LPC} \> linear prediction filter coefficients \\ -\>2 \> \texttt{LPREFC} \> linear prediction reflection coefficients \\ -\>3 \> \texttt{LPCEPSTRA} \> LPC cepstral coefficients \\ -\>4 \> \texttt{LPDELCEP} \> LPC cepstra plus delta coefficients \\ -\>5 \> \texttt{IREFC} \> LPC reflection coef in 16 bit integer format \\ -\>6 \> \texttt{MFCC} \> mel-frequency cepstral coefficients \\ -\>7 \> \texttt{FBANK} \> log mel-filter bank channel outputs \\ -\>8 \> \texttt{MELSPEC} \> linear mel-filter bank channel outputs \\ -\>9 \> \texttt{USER} \> user defined sample kind \\ -\>10 \> \texttt{DISCRETE} \> vector quantised data \\ -\>11 \> \texttt{PLP} \> PLP cepstral coefficients \\ -\end{tabbing} -and the bit-encoding for the qualifiers (in octal) is -\begin{tabbing} -++++\= +++ \= ++++++++ \= \kill -\>\texttt{\_E} \> 000100 \> has energy \\ -\>\texttt{\_N} \> 000200 \> absolute energy suppressed \\ -\>\texttt{\_D} \> 000400 \> has delta coefficients \\ -\>\texttt{\_A} \> 001000 \> has acceleration coefficients\\ -\>\texttt{\_C} \> 002000 \> is compressed \\ -\>\texttt{\_Z} \> 004000 \> has zero mean static coef. \\ -\>\texttt{\_K} \> 010000 \> has CRC checksum \\ -\>\texttt{\_O} \> 020000 \> has 0'th cepstral coef. \\ -\>\texttt{\_V} \> 040000 \> has VQ data \\ -\>\texttt{\_T} \> 100000 \> has third differential coef. \\ -\end{tabbing}\index{qualifiers!codes} -The \texttt{\_A} qualifier can only be specified when \texttt{\_D} -is also specified. -The \texttt{\_N} qualifier is only valid when both energy and delta -coefficients are present. -The sample kind \texttt{LPDELCEP} is identical to \texttt{LPCEPSTRA\_D} -and is retained for compatibility with older versions of \HTK. -The \texttt{\_C}\index{qualifiers!aaac@\texttt{\_C}} and -\texttt{\_K}\index{qualifiers!aaak@\texttt{\_K}} only exist in external files. Compressed -files are always decompressed on loading and any attached CRC -is checked and removed. An external file can contain both an energy -term and a 0'th order cepstral coefficient. These may be retained -on loading but normally one or the other is discarded\footnote{ -Some applications may require the 0'th order cepstral coefficient -in order to recover the filterbank coefficients from the cepstral -coefficients.}. - -\putfig{HTKFormat}{130}{Parameter Vector Layout in \HTK\ Format Files} - -All parameterised forms of \HTK\ data files consist of a sequence of vectors. -Each vector is organised as shown by the examples in Fig~\href{f:HTKFormat} -where various different qualified forms are listed. As can be seen, an energy -value if present immediately follows the base coefficients. If delta -coefficients are added, these follow the base coefficients and energy value. -Note that the base form \texttt{LPC} is used in this figure only as an example, -the same layout applies to all base sample kinds. If the 0'th order cepstral -coefficient is included as well as energy then it is inserted immediately -before the energy coefficient, otherwise it replaces it. - -For external storage of speech parameter files, two compression methods are -provided. For LP coding only, the \texttt{IREFC} parameter kind exploits the -fact that the reflection coefficients are bounded by $\pm 1$ and hence they can -be stored as scaled integers such that $+1.0$ is stored as $32767$ and $-1.0$ -is stored as $-32767$. For other types of parameterisation, a more general -compression facility indicated by the -\texttt{\_C}\index{qualifiers!aaac@\texttt{\_C}} qualifier is used. -\HTK\ compressed parameter files consist of a set of compressed parameter -vectors stored as shorts such that for parameter $x$ -\begin{eqnarray} -x_{short} & = & A*x_{float}-B \nonumber -\end{eqnarray} -The coefficients $A$ and $B$ are defined as -\begin{eqnarray} -A & = & 2*I/(x_{max}-x_{min}) \nonumber\\ -B & = & (x_{max}+x_{min})*I/(x_{max}-x_{min}) \nonumber -\end{eqnarray} -where $x_{max}$ is the maximum value of parameter $x$ in the whole file and -$x_{min}$ is the corresponding minimum. $I$ is the maximum range of a 2-byte -integer i.e.\ 32767. The values of $A$ and $B$ are stored as two floating -point vectors prepended to the start of the file immediately after the header. - -When a \HTK\ tool writes out a speech file to external storage, no further -signal conversions are performed. Thus, for most purposes, the target -parameter kind specifies both the required internal representation and the form -of the written output, if any. However, there is a distinction in the way that -the external data is actually stored. Firstly, it can be compressed as -described above by setting the configuration parameter \texttt{SAVECOMPRESSED} -to true. If the target kind is \texttt{LPREFC} then this compression is -implemented by converting to \texttt{IREFC} otherwise the general compression -algorithm described above is used. Secondly, in order to avoid data corruption -problems, externally stored \HTK\ parameter files can have a cyclic redundancy -checksum appended. This is indicated by the qualifier -\texttt{\_K}\index{qualifiers!aaak@\texttt{\_K}} and it is generated by setting -the configuration parameter \texttt{SAVEWITHCRC} to true. The principle tool -which uses these output conversions is \htool{HCopy} (see -section~\ref{s:UseHCopy}). - -\subsection{Esignal Format Parameter Files} - -\index{file formats!Esignal} -The default for parameter files is native \HTK\ format. However, \HTK\ tools -also support the Entropic Esignal format for both input and output. Esignal -replaces the Entropic ESPS file format. To ensure compatibility Entropic -provides conversion programs from ESPS to ESIG and vice versa. - -To indicate that a source file is in Esignal format the configuration -variable \texttt{SOURCEFORMAT}\index{sourceformat@\texttt{SOURCEFORMAT}} -should be set to \texttt{ESIG}. Alternatively, -\texttt{-F ESIG}\index{standard options!aaaf@\texttt{-F}} can be specified -as a command-line option. -To generate Esignal format output files, the configuration variable -\texttt{TARGETFORMAT} should be set to \texttt{ESIG} or the command line option -\texttt{-O ESIG} should be set. - -ESIG files consist of three parts: a preamble, a sequence of field -specifications called the field list and a sequence of records. The preamble -and the field list together constitute the header. The preamble is purely -ASCII. Currently it consists of 6 information items that are all terminated -by a new line. The information in the preamble is the following: -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{line 1}\>-- identification of the file format \\ -\>\texttt{line 2}\>-- version of the file format\\ -\>\texttt{line 3}\>-- architecture (ASCII, EDR1, EDR2, machine name)\\ -\>\texttt{line 4}\>-- preamble size (48 bytes)\\ -\>\texttt{line 5}\>-- total header size\\ -\>\texttt{line 6}\>-- record size\\ -\end{tabbing} -All ESIG files that are output by \HTK\ programs contain the following -global fields: -\begin{description} - \item[commandLine] the command-line used to generate the file; - \item[recordFreq] a double value that indicates the sample frequency - in Herz; - \item[startTime] a double value that indicates a time at which the first - sample is presumed to be starting; - \item[parmKind] a character string that indicates the full - type of parameters in the file, e.g: \texttt{MFCC\_E\_D}. - \item[source\_1] if the input file was an ESIG file this field includes the - header items in the input file. -\end{description} -After that there are field specifiers for the records. The first specifier -is for the basekind of the parameters, e.g: \texttt{MFCC}. Then for each -available qualifier there are additional specifiers. Possible specifiers are: -\begin{tabbing} -++++\= \kill -\>\texttt{zeroc} \\ -\>\texttt{energy}\\ -\>\texttt{delta}\\ -\>\texttt{delta\_zeroc} \\ -\>\texttt{delta\_energy}\\ -\>\texttt{accs}\\ -\>\texttt{accs\_zeroc} \\ -\>\texttt{accs\_energy}\\ -\end{tabbing}\index{qualifiers!ESIG field specifiers} -The data segments of the ESIG files have exactly the same format as the -the corresponding \HTK\ files. This format was described in the previous -section. - -\HTK\ can only input parameter files that have a valid parameter kind as value -of the header field \texttt{parmKind}. If this field does not exist or if the -value of this field does not contain a valid parameter kind, the file is -rejected. After the header has been read the file is treated as an \HTK\ file. - - -\mysect{Waveform File Formats}{waveform} - -For reading waveform data files, \HTK\ can support a variety of different -formats and these are all briefly described in this section. The default -speech file format is \HTK. If a different format is to be used, it can be -specified by setting the configuration parameter -\texttt{SOURCEFORMAT}\index{sourceformat@\texttt{SOURCEFORMAT}}. However, -since file formats need to be changed often, they can also be set individually -via the \texttt{-F}\index{standard options!aaaf@\texttt{-F}} command-line -option. This over-rides any setting of the \texttt{SOURCEFORMAT} configuration -parameter. - -Similarly for the output of waveforms, the format can be set using either the -configuration parameter \texttt{TARGETFORMAT} or the \texttt{-O} command-line -option. However, for output only native \HTK\ format (\texttt{HTK}), Esignal -format (\texttt{ESIG}) and headerless (\texttt{NOHEAD}) waveform files are -supported. - -The following sub-sections give a brief description of each of the waveform -file formats supported by \HTK. - -\subsection{HTK File Format} - -\index{file formats!HTK} -The \HTK\ file format for waveforms is identical to that described in -section~\ref{s:parmstore} above. It consists of a 12 byte header followed -by a sequence of 2 byte integer speech samples. For waveforms, the -\texttt{sampSize} field will be 2 and the \texttt{parmKind} field will be 0. -The \texttt{sampPeriod} field gives the sample period in 100ns units, hence for -example, it will have the value 1000 for speech files sampled at 10kHz and 625 -for speech files sampled at 16kHz. - -\subsection{Esignal File Format} - -\index{file formats!Esignal} -The Esignal file format for waveforms is similar to that described in -section~\ref{s:parmstore} above with the following exceptions. When reading an -ESIG waveform file the \HTK\ programs only check whether the record length -equals 2 and whether the datatype of the only field in the data records is -\texttt{SHORT}. The data field that is created on output of a waveform is -called \texttt{WAVEFORM}. - -\subsection{TIMIT File Format} - -\index{file formats!TIMIT} -The TIMIT format has the same structure as the HTK format except that the -12-byte header contains the following - -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{hdrSize}\>-- number of bytes in header ie 12 (2-byte integer) \\ -\>\texttt{version}\>-- version number (2-byte integer) \\ -\>\texttt{numChannels}\>-- number of channels (2-byte integer) \\ -\>\texttt{sampRate}\>-- sample rate (2-byte integer) \\ -\>\texttt{nSamples}\>-- number of samples in file (4-byte integer) -\end{tabbing} -TIMIT format data is used only on the prototype TIMIT CD ROM. - -\subsection{NIST File Format} - -\index{file formats!NIST} -The NIST file format is also referred to as the Sphere file format. -A NIST header consists of ASCII text. It begins with a label of the -form \texttt{NISTxx} where xx is a version code followed by the number -of bytes in the header. The remainder of the header consists of -name value pairs of which \HTK\ decodes the following -\begin{tabbing} -++ \= +++++++++++++ \= \kill -\>\texttt{sample\_rate} \>-- sample rate in Hz \\ -\>\texttt{sample\_n\_bytes} \>-- number of bytes in each sample \\ -\>\texttt{sample\_count} \>-- number of samples in file \\ -\>\texttt{sample\_byte\_format} \>-- byte order \\ -\>\texttt{sample\_coding} \>-- speech coding eg pcm, $\mu$law, shortpack \\ -\>\texttt{channels\_interleaved} \>-- for 2 channel data only -\end{tabbing} -The current NIST Sphere data format\index{NIST Sphere data format} subsumes a -variety of internal data organisations. HTK currently supports interleaved -$\mu$law used in Switchboard, Shortpack compression used in the original -version of WSJ0 and standard 16bit linear PCM as used in Resource Management, -TIMIT, etc. It does not currently support the Shorten compression format as -used in WSJ1 due to licensing restrictions. Hence, to read WSJ1, the files -must be converted using the NIST supplied decompression routines into standard -16 bit linear PCM. This is most conveniently done under UNIX by using the -decompression program as an input filter set via the environment variable -\texttt{HWAVEFILTER}\index{hwavefilter@\texttt{HWAVEFILTER}} (see -section~\ref{s:iopipes}). - -For interleaved $\mu$law as used in Switchboard, the default is to add the two -channels together. The left channel only can be obtained by setting the -environment variable \texttt{STEREOMODE} to \texttt{LEFT} and the right channel -only can be obtained by setting the environment variable \texttt{STEREOMODE} to -\texttt{RIGHT}. \index{mu law encoded files } - -\subsection{SCRIBE File Format} - -\index{file formats!SCRIBE} -The SCRIBE format is a subset of the standard laid down by the European Esprit -Programme SAM Project. SCRIBE data files are headerless and therefore consist -of just a sequence of 16 bit sample values. \HTK\ assumes by default that the -sample rate is 20kHz. The configuration parameter \texttt{SOURCERATE} should -be set to over-ride this. The byte ordering assumed for SCRIBE data files is -\texttt{VAX} (little-endian). - -\subsection{SDES1 File Format} - -\index{file formats!Sound Designer(SDES1)} -The SDES1 format refers to the ``Sound Designer I'' format defined by -Digidesign Inc in 1985 for multimedia and general audio applications. It is -used for storing short monoaural sound samples. The SDES1 header is complex -(1336 bytes) since it allows for associated display window information to be -stored in it as well as providing facilities for specifying repeat loops. The -HTK input routine for this format just picks out the following information -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{headerSize} \>-- size of header ie 1336 (2 byte integer) \\ -\>(182 byte filler) \\ -\>\texttt{fileSize} \>-- number of bytes of sampled data (4 byte integer)\\ -\>(832 byte filler) \\ -\>\texttt{sampRate} \>-- sample rate in Hz (4 byte integer) \\ -\>\texttt{sampPeriod} \>-- sample period in microseconds (4 byte integer) \\ -\>\texttt{sampSize} \>-- number of bits per sample ie 16 (2 byte integer) -\end{tabbing} - -\subsection{AIFF File Format} - -\index{file formats!Audio Interchange (AIFF)} -The AIFF format was defined by Apple Computer for storing monoaural and -multichannel sampled sounds. An AIFF file consists of a number of {\it -chunks}. A {\it Common} chunk contains the fundamental parameters of the sound -(sample rate, number of channels, etc) and a {\it Sound Data} chunk contains -sampled audio data. \HTK\ only partially supports AIFF since some of the -information in it is stored as floating point numbers. In particular, the -sample rate is stored in this form and to avoid portability problems, -\HTK\ ignores the given sample rate and assumes that it is 16kHz. If this -default rate is incorrect, then the true sample period should be -specified by setting the \texttt{SOURCERATE} configuration parameter. -Full details of the AIFF format are available from Apple Developer -Technical Support. - -\subsection{SUNAU8 File Format} - -\index{file formats!Sun audio (SUNAU8)} -The SUNAU8 format defines a subset of the ``.au'' and ``.snd'' audio file -format used by Sun and NeXT. An SUNAU8 speech data file consists of a header -followed by 8 bit $\mu$law encoded speech samples. The header is 28 bytes and -contains the following fields, each of which is 4 bytes -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{magicNumber} \>-- magic number 0x2e736e64 \\ -\>\texttt{dataLocation} \>-- offset to start of data \\ -\>\texttt{dataSize} \>-- number of bytes of data \\ -\>\texttt{dataFormat} \>-- data format code which is 1 for 8 bit $\mu$law \\ -\>\texttt{sampRate} \>-- a sample rate code which is always 8012.821 Hz \\ -\>\texttt{numChan} \>-- the number of channels \\ -\>\texttt{info} \>-- arbitrary character string min length 4 bytes -\end{tabbing} -No default byte ordering is assumed for this format. If the data source is -known to be different to the machine being used, then the environment variable -\texttt{BYTEORDER} must be set appropriately. Note that when used on Sun Sparc -machines with 16 bit audio device the sampling rate of 8012.821Hz is not -supported and playback will be performed at 8KHz. - -\subsection{OGI File Format} - -\index{file formats!OGI} -The OGI format is similar to TIMIT. The header contains the following - -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{hdrSize}\>-- number of bytes in header \\ -\>\texttt{version}\>-- version number (2-byte integer) \\ -\>\texttt{numChannels}\>-- number of channels (2-byte integer) \\ -\>\texttt{sampRate}\>-- sample rate (2-byte integer) \\ -\>\texttt{nSamples}\>-- number of samples in file (4-byte integer) \\ -\>\texttt{lendian}\>-- used to test for byte swapping (4-byte integer) -\end{tabbing} - -\subsection{WAV File Format}{} - -\index{file formats!WAV} -The WAV file format is a subset of Microsoft's RIFF specification for the -storage of multimedia files. A RIFF file starts out with a file header followed -by a sequence of data ``chunks''. A WAV file is often just a RIFF file with a -single ``WAVE'' chunk which consists of two sub-chunks - a ``fmt'' chunk -specifying the data format and a ``data'' chunk containing the actual sample -data. The WAV file header contains the following - -\begin{tabbing} -++ \= +++++++++ \= \kill -\>\texttt{'RIFF'}\>-- RIFF file identification (4 bytes) \\ -\>\texttt{}\>-- length field (4 bytes)\\ -\>\texttt{'WAVE'}\>-- WAVE chunk identification (4 bytes) \\ -\>\texttt{'fmt '}\>-- format sub-chunk identification (4 bytes) \\ -\>\texttt{flength}\>-- length of format sub-chunk (4 byte integer) \\ -\>\texttt{format}\>-- format specifier (2 byte integer) \\ -\>\texttt{chans}\>-- number of channels (2 byte integer) \\ -\>\texttt{sampsRate}\>-- sample rate in Hz (4 byte integer) \\ -\>\texttt{bpsec}\>-- bytes per second (4 byte integer) \\ -\>\texttt{bpsample}\>-- bytes per sample (2 byte integer) \\ -\>\texttt{bpchan}\>-- bits per channel (2 byte integer) \\ -\>\texttt{'data'}\>-- data sub-chunk identification (4 bytes) \\ -\>\texttt{dlength}\>-- length of data sub-chunk (4 byte integer) -\end{tabbing} -Support is provided for 8-bit CCITT mu-law, 8-bit CCITT a-law, 8-bit PCM -linear and 16-bit PCM linear - all in stereo or mono (use of \texttt{STEREOMODE} -parameter as per NIST). The default byte ordering assumed for \texttt{WAV} -data files is \texttt{VAX} (little-endian). - -\subsection{ALIEN and NOHEAD File Formats} - -\index{file formats!ALIEN} -\index{file formats!NOHEAD} -\HTK\ tools can read speech waveform files with alien formats provided that -their overall structure is that of a header followed by data. This is done by -setting the format to \texttt{ALIEN} and setting the environment variable -\texttt{HEADERSIZE} to the number of bytes in the header. \HTK\ will then -attempt to infer the rest of the information it needs. However, if input is -from a pipe, then the number of samples expected must be set using the -environment variable \texttt{NSAMPLES}\index{nsamples@\texttt{NSAMPLES}}. The -sample rate of the source file is defined by the configuration parameter -\texttt{SOURCERATE} as described in section~\ref{s:sigproc}. If the file has -no header then the format \texttt{NOHEAD} may be specified instead of -\texttt{ALIEN}\index{alien@\texttt{ALIEN}} in which case -\texttt{HEADERSIZE}\index{headersize@\texttt{HEADERSIZE}} is assumed to be -zero. - -\mysect{Direct Audio Input/Output}{audioio} - -\index{speech input!direct audio} -Many \HTK\ tools, particularly recognition tools, can input speech waveform -data directly from an audio device. The basic mechanism for doing this is to -simply specify the \texttt{SOURCEKIND} as being -\texttt{HAUDIO}\index{haudio@\texttt{HAUDIO}} following which speech samples -will be read directly from the host computer's audio input device. - -Note that for live audio input, the configuration variable -\texttt{ENORMALISE} should be set to false both during training and recognition. Energy normalisation cannot -be used with live audio input, and the default setting for this variable -is \texttt{TRUE}. When training models for live audio input, be sure to -set \texttt{ENORMALISE} to false. If you have existing models trained with -\texttt{ENORMALISE} set to true, you can retrain them using {\it single-pass -retraining} (see section~\ref{s:singlepass}). - -When using direct audio input\index{direct audio input}, the input sampling -rate may be set explicitly using the configuration parameter -\texttt{SOURCERATE}, \index{sourcerate@\texttt{SOURCERATE}} otherwise -\HTK\ will assume that it has been set by some external means such as an -audio control panel. In the latter case, it must be possible for -\htool{HAudio} to obtain the sample rate from the audio driver -otherwise an error message will be generated. - -Although the detailed control of audio hardware is typically machine dependent, -\HTK\ provides a number of Boolean configuration variables to request specific -input and output sources. These are indicated by the following table -\begin{center}\index{audio source}\index{audio output} -\begin{tabular}{|c|l|} \hline -Variable & Source/Sink \\ \hline -\texttt{LINEIN} & line input \\ -\texttt{MICIN} & microphone input \\ -\texttt{LINEOUT} & line output \\ -\texttt{PHONESOUT} & headphones output \\ -\texttt{SPEAKEROUT} & speaker output \\ \hline -\end{tabular} -\end{center} -\index{linein@\texttt{LINEIN}} -\index{micin@\texttt{MICIN}} -\index{lineout@\texttt{LINEOUT}} -\index{phonesout@\texttt{PHONESOUT}} -\index{speakerout@\texttt{SPEAKEROUT}} - -The major complication in using direct audio is in starting and stopping the -input device. The simplest approach to this is for \HTK\ tools to take direct -control and, for example, enable the audio input for a fixed period determined -via a command line option. However, the \htool{HAudio}/\htool{HParm} modules -provides two more powerful built-in facilities for audio input control. - -\index{direct audio input!silence detector!speech detector} -The first method of audio input control involves the use of an automatic -energy-based speech/silence detector which is enabled by setting the -configuration parameter -\texttt{USESILDET}\index{usesildet@\texttt{USESILDET}} to true. Note that -the speech/silence detector can also operate on waveform input files. - -The automatic speech/silence detector uses a two level algorithm which first -classifies each frame of data as either speech or silence and then applies a -heuristic to determine the start and end of each utterance.\index{HParm!SILENERGY} \index{HParm!SPEECHTHRESH}The detector classifies each -frame as speech or silence based solely on the log energy of the signal. When -the energy value exceeds a threshold the frame is marked as speech otherwise as -silence. The threshold is made up of two components both of which can be set by -configuration variables. The first component represents the mean energy level -of silence and can be set explicitly via the configuration -parameter \texttt{SILENERGY}. However, it is more usual to take a measurement -from the environment directly. Setting the configuration parameter -\texttt{MEASURESIL} to true will cause the detector to calibrate its parameters -from the current acoustic environment just prior to sampling. The second -threshold component is the level above which frames are classified as speech -(\texttt{SPEECHTHRESH}) . -\index{HParm!SPCSEQCOUNT} \index{HParm!SPCGLCHCOUNT} \index{HParm!SILGLCHCOUNT} -Once each frame has been classified as speech or silence they are grouped into -windows consisting of \texttt{SPCSEQCOUNT} consecutive frames. When the number -of frames marked as silence within each window falls below a glitch count the -whole window is classed as speech. Two separate glitch counts are used, {\tt -SPCGLCHCOUNT} before speech onset is detected and {\tt SILGLCHCOUNT} whilst -searching for the end of the utterance. This allows the algorithm to take -account of the tendancy for the end of an utterance to be somewhat quieter than -the beginning. -\index{HParm!SILMARGIN} \index{HParm!SILSEQCOUNT} -Finally, a top level heuristic is used to determine the start and end of the -utterance. The heuristic defines the start of speech as the beginning of the -first window classified as speech. The actual start of the processed utterance -is \texttt{SILMARGIN} frames before the detected start of speech to ensure that -when the speech detector triggers slightly late the recognition accuracy is not -affected. Once the start of the utterance has been found the detector searches -for \texttt{SILSEQCOUNT} windows all classified as silence and sets the end of -speech to be the end of the last window classified as speech. Once again the -processed utterance is extended \texttt{SILMARGIN} frames to ensure that if the -silence detector has triggered slightly early the whole of the speech is still -available for further processing. - -\centrefig{endpointer}{120}{Endpointer Parameters} - -Fig~\href{f:endpointer} shows an example of the speech/silence detection -process. The waveform data is first classified as speech or silence at frame -and then at window level before finally the start and end of the utterance are -marked. In the example, audio input starts at point {\tt A} and is stopped -automatically at point {\tt H}. The start of speech, {\tt C}, occurs when a -window of \texttt{SPCSEQCOUNT} frames are classified as speech and the start of -the utterance occurs \texttt{SILMARGIN} frames earlier at {\tt B}. The period -of silence from {\tt D} to {\tt E} is not marked as the end of the utterance -because it is shorter than \texttt{SILSEQCOUNT}. However after point {\tt F} -no more windows are classified as speech (although a few frames are) and so -this is marked as the end of speech with the end of the utterance extended to -{\tt G}. - -\index{direct audio input!signal control!keypress} -The second built-in mechanism for controlling audio input is by arranging for -a signal to be sent from some other process. Sending the signal for the first -time starts the audio device. If the speech detector is not enabled then -sampling starts immediately and is stopped by sending the signal a second -time. If automatic speech/silence detection is enabled, then the first signal -starts the detector. Sampling stops immediately when a second signal is -received or when silence is detected. The signal number is set using the -configuration parameter \texttt{AUDIOSIG}\index{audiosig@\texttt{AUDIOSIG}}. -Keypress control operates in a similar fashion and is enabled by setting the -configuration parameter \texttt{AUDIOSIG} to a negative number. In this mode -an initial keypress will be required to start sampling/speech detection and -a second keypress will stop sampling immediately. - -Audio output\index{audio output} is also supported by \HTK. There are no -generic facilities for output and the precise behaviour will depend on the tool -used. It should be noted, however, that the audio input facilities provided by -\htool{HAudio} include provision for attaching a \textit{replay buffer} to an -audio input channel. This is typically used to store the last few seconds of -each input to a recognition tool in a circular buffer so that the last -utterance input can be replayed on demand. - - -\mysect{Multiple Input Streams}{streams} - -\index{multiple streams} -As noted in section~\ref{s:genio}, \HTK\ tools regard the input observation -sequence as being divided into a number of independent \textit{data streams}. -For building continuous density HMM systems, this facility is of limited -use and by far the most common case is that of a single data stream. -However, when building tied-mixture systems or when -using vector quantisation, a more uniform coverage of the -acoustic space is obtained by separating energy, deltas, etc., into -separate streams. - -This separation of parameter vectors into streams takes place at -the point where the vectors -are extracted from the converted input file or audio device and -transformed into an observation. The tools for HMM construction -and for recognition thus view the input data as a sequence of observations -but note that this is entirely internal to \HTK. Externally data is -always stored as a single sequence of parameter vectors. - -When multiple streams\index{multiple streams!rules for} are required, -the division of the parameter vectors is performed automatically -based on the parameter kind. This works according -to the following rules. - -\begin{description} -\item[1 stream] single parameter vector. This is the default case. -\item[2 streams] if the parameter vector contains energy terms, then - they are extracted and placed in stream 2. Stream 1 contains the - remaining static coefficients and their deltas and accelerations, - if any. Otherwise, - the parameter vector must have appended delta - coefficients and no appended acceleration coefficients. - The vector is then split so that the static - coefficients form stream 1 and - the corresponding delta coefficients form stream 2. -\item[3 streams] - if the parameter vector has acceleration coefficients, then vector - is split with static coefficients plus any energy in stream 1, - delta coefficients plus any delta energy in stream 2 and - acceleration coefficients plus any acceleration energy in stream 3. - Otherwise, the parameter vector must include log energy and - must have appended delta coefficients. The vector is then split - into three parts so that the static coefficients form stream - 1, the delta coefficients form stream 2, and the log energy - and delta log energy are combined to form stream 3. -\item[4 streams] - the parameter vector must include log energy and - must have appended delta and acceleration coefficients. - The vector is split into 4 parts so that the static coefficients form stream - 1, the delta coefficients form stream 2, the acceleration - coefficients form stream 3 and the log energy, delta energy - and acceleration energy are combined to form stream 4. -\end{description} -In all cases, -the static log energy can be -suppressed (via the \texttt{\_N}\index{qualifiers!aaan@\texttt{\_N}} qualifier). -If none of the above rules apply for some required number of -streams, then the parameter vector is simply incompatible with that -form of observation. For example, the parameter kind \texttt{LPC\_D\_A} -cannot be split into 2 streams, instead 3 streams should be used. -\index{energy suppression} - -\putfig{streams}{100}{Example Stream Construction} - -Fig.~\href{f:streams} illustrates the way that streams are constructed -for a number of common cases. As earlier, the choice of \texttt{LPC} -as the static coefficients is purely for illustration and the same -mechanism applies to all base parameter kinds. - -As discussed further in the next section, -multiple data streams are often used with vector quantised data. In this -case, each VQ symbol per input sample is placed in a separate data stream. - -\mysect{Vector Quantisation}{vquant} - -Although \HTK\ was designed primarily for building continuous density HMM -systems, it also supports discrete density HMMs. Discrete HMMs are -particularly useful for modelling data which is naturally symbolic. They can -also be used with continuous signals such as speech by quantising each speech -vector to give a unique VQ symbol for each input frame. The \HTK\ module -\htool{HVQ} provides a basic facility for performing this vector -quantisation\index{vector quantisation}. The VQ table (or codebook) can be -constructed using the \HTK\ tool \htool{HQuant}. - -When used with speech, the principle justification for using discrete HMMs is -the much reduced computation. However, the use of vector quantisation -introduces errors and it can lead to rather fragile systems. For this reason, -the use of continuous density systems is generally preferred. To facilitate -the use of continuous density systems when there are computational constraints, -\HTK\ also allows VQ to be used as the basis for pre-selecting a subset of -Gaussian\index{Gaussian pre-selection} components for evaluation at each time -frame. - -\sidefig{VQUse}{65}{Using Vector Quantisation}{2}{ Fig.~\href{f:VQUse} -illustrates the different ways that VQ can be used in \HTK\ for a single data -stream. For multiple streams, the same principles are applied to each stream -individually. A converted speech waveform or file of parameter vectors can -have VQ indices attached simply by specifying the name of a VQ table using the -configuration parameter \texttt{VQTABLE}\index{vqtable@\texttt{VQTABLE}} and by -adding the \texttt{\_V} qualifier to the target kind. The effect of this is -that each \textit{observation} passed to a recogniser can include both a -conventional parameter vector and a VQ index. \index{vector quantisation!uses -of} \index{qualifiers!aaav@\texttt{\_V}} For continuous density HMM systems, a -possible use of this might be to preselect Gaussians for evaluation (but note -that \HTK\ does not currently support this facility). - -When used with a discrete HMM system, the -continuous parameter vectors are ignored and only the VQ -indices are used. -For training and evaluating discrete HMMs, it is convenient to -store speech data in vector quantised form. This is done using -the tool \htool{HCopy} to read in and vector quantise each speech file. -Normally, \htool{HCopy} copies the target form directly into the -output file. However, if the configuration parameter \texttt{SAVEASVQ} -is set, then it will -store only the VQ indices and mark the kind of the newly created -file as \texttt{DISCRETE}. Discrete files created in this -way can be read -directly by \htool{HParm} and the VQ symbols passed directly to -a tool as indicated by the lower part of Fig.~\href{f:VQUse}. -} -\index{saveasvq@\texttt{SAVEASVQ}} -\index{discrete@\texttt{DISCRETE}} - -\index{vector quantisation!distance metrics} -\htool{HVQ} supports three types of distance metric and two organisations of -VQ codebook. Each codebook consists of a collection of nodes where each -node has a mean vector and optionally a covariance matrix or diagonal -variance vector. The corresponding distance metric used for each of these -is simple Euclidean, full covariance Mahalanobis or diagonal covariance -Mahalanobis. The codebook nodes are arranged in -the form of a simple linear table -or as a binary tree. In the linear case, the input vector is compared with -every node in turn and the nearest determines the VQ index. In the binary -tree case, each non-terminal node has a left and a right daughter. Starting -with the top-most root node, the input is compared with the left and right -daughter node and the nearest is selected. This process is repeated until a -terminal node is reached. \index{vector quantisation!type of} - - -\index{vector quantisation!code book external format}\index{files!VQ codebook} -VQ Tables are stored externally in text files consisting of a header -followed by a sequence of node entries. The header consists of the -following information -\begin{tabbing} -++ \= +++++++ \= + \= \kill -\> \textit{magic}\> --\> a magic number usually the original parameter kind \\ -\> \textit{type} \> --\> 0 = linear tree, 1 = binary tree \\ -\> \textit{mode} \> --\> 1 = diagonal covariance Mahalanobis \\ -\>\>\> 2 = full covariance Mahalanobis \\ -\>\>\> 5 = Euclidean \\ -\> \textit{numNodes} \> --\> total number of nodes in the codebook \\ -\> \textit{numS}\> --\> number of independent data streams \\ -\> \textit{sw1,sw2,...}\> --\> width of each data stream \\ -\end{tabbing} -Every node has a unique integer identifier and consists of the -following -\begin{tabbing} -++ \= +++++++ \= + \= \kill -\> \textit{stream}\> --\>stream number for this node \\ -\> \textit{vqidx}\> --\>VQ index for this node (0 if non-terminal) \\ -\> \textit{nodeId}\> --\>integer id of this node \\ -\> \textit{leftId}\> --\>integer id of left daughter node \\ -\> \textit{rightId}\> --\>integer id of right daughter node \\ -\> \textit{mean}\> --\>mean vector \\ -\> \textit{cov}\> --\>diagonal variance or full covariance \\ -\end{tabbing} -The inclusion of the optional variance vector or covariance matrix depends -on the mode in the header. If present they are stored in inverse form. -In a binary tree, the root id is always 1. In linear codebooks, the -left and right daughter node id's are ignored. - -\mysect{Viewing Speech with \htool{HList}}{UseHList} - -\index{speech input!monitoring} -As mentioned in section~\ref{s:genio}, the tool \htool{HList}\index{hlist@\htool{HList}} provides -a dual r\^{o}le in \HTK. Firstly, it can be used for examining the contents -of speech data files. -In general, \htool{HList} displays three types of information -\begin{enumerate} - \item \textit{source header}: requested using the \texttt{-h} option - \item \textit{target header}: requested using the \texttt{-t} option - \item \textit{target data}: printed by default. The begin and end samples of the -displayed data can be specified using the \texttt{-s} and \texttt{-e} options. -\end{enumerate} -When the default configuration parameters are used, -no conversions are applied and the target -data is identical to the contents of the file. - -\index{files!listing contents} -As an example, suppose that the file called \texttt{timit.wav} holds speech -waveform data using the TIMIT format. The command -\begin{verbatim} - HList -h -e 49 -F TIMIT timit.wav -\end{verbatim} -would display the source header information and the first 50 samples of the -file. The output would look something like the following - -\begin{list}{}{\setlength{\leftmargin}{-1cm}} -\item -\begin{verbatim} - ----------------------------- Source: timit.wav --------------------------- - Sample Bytes: 2 Sample Kind: WAVEFORM - Num Comps: 1 Sample Period: 62.5 us - Num Samples: 31437 File Format: TIMIT - ------------------------------ Samples: 0->49 ----------------------------- - 0: 8 -4 -1 0 -2 -1 -3 -2 0 0 - 10: -1 0 -1 -2 -1 1 0 -1 -2 1 - 20: -2 0 0 0 2 1 -2 2 1 0 - 30: 1 0 0 -1 4 2 0 -1 4 0 - 40: 2 2 1 -1 -1 1 1 2 1 1 - ------------------------------------ END ---------------------------------- -\end{verbatim} -\end{list} -The source information confirms that the file contains \texttt{WAVEFORM} -data with 2 byte samples and 31437 samples in total. The sample period is -$62.5\mu s$ which corresponds to a 16kHz sample rate. -The displayed data is numerically small because it corresponds to leading silence. -Any part of the file could be viewed by suitable choice of the begin and end -sample indices. For example, -\begin{verbatim} - HList -s 5000 -e 5049 -F TIMIT timit.wav -\end{verbatim} -would display samples 5000 through to 5049. -The output might look like the following -\begin{list}{}{\setlength{\leftmargin}{-1cm}} -\item -\begin{verbatim} - ---------------------------- Samples: 5000->5049 -------------------------- - 5000: 85 -116 -159 -252 23 99 69 92 79 -166 - 5010: -100 -123 -111 48 -19 15 111 41 -126 -304 - 5020: -189 91 162 255 80 -134 -174 -55 57 155 - 5030: 90 -1 33 154 68 -149 -70 91 165 240 - 5040: 297 50 13 72 187 189 193 244 198 128 - ------------------------------------ END ---------------------------------- -\end{verbatim} -\end{list} - -The second use of \htool{HList} is to check that input conversions -are being performed properly. Suppose that the above TIMIT format file is -part of a database to be used for training a recogniser and that mel-frequency -cepstra are to be used along with energy and the first differential coefficients. -Suitable configuration parameters needed to achieve this might be as follows -\begin{verbatim} - # Wave -> MFCC config file - SOURCEFORMAT = TIMIT # same as -F TIMIT - TARGETKIND = MFCC_E_D # MFCC + Energy + Deltas - TARGETRATE = 100000 # 10ms frame rate - WINDOWSIZE = 200000 # 20ms window - NUMCHANS = 24 # num filterbank chans - NUMCEPS = 8 # compute c1 to c8 -\end{verbatim} -\htool{HList} can be used to check this. For example, typing -\begin{verbatim} - HList -C config -o -h -t -s 100 -e 104 -i 9 timit.wav -\end{verbatim} -will cause the waveform file to be converted, then the source header, -the target header and parameter vectors 100 through to 104 to be listed. -A typical output would be as follows -\begin{verbatim} - ------------------------------ Source: timit.wav --------------------------- - Sample Bytes: 2 Sample Kind: WAVEFORM - Num Comps: 1 Sample Period: 62.5 us - Num Samples: 31437 File Format: TIMIT - ------------------------------------ Target -------------------------------- - Sample Bytes: 72 Sample Kind: MFCC_E_D - Num Comps: 18 Sample Period: 10000.0 us - Num Samples: 195 File Format: HTK - -------------------------- Observation Structure --------------------------- - x: MFCC-1 MFCC-2 MFCC-3 MFCC-4 MFCC-5 MFCC-6 MFCC-7 MFCC-8 E - Del-1 Del-2 Del-3 Del-4 Del-5 Del-6 Del-7 Del-8 DelE - ------------------------------ Samples: 100->104 --------------------------- - 100: 3.573 -19.729 -1.256 -6.646 -8.293 -15.601 -23.404 10.988 0.834 - 3.161 -1.913 0.573 -0.069 -4.935 2.309 -5.336 2.460 0.080 - 101: 3.372 -16.278 -4.683 -3.600 -11.030 -8.481 -21.210 10.472 0.777 - 0.608 -1.850 -0.903 -0.665 -2.603 -0.194 -2.331 2.180 0.069 - 102: 2.823 -15.624 -5.367 -4.450 -12.045 -15.939 -22.082 14.794 0.830 - -0.051 0.633 -0.881 -0.067 -1.281 -0.410 1.312 1.021 0.005 - 103: 3.752 -17.135 -5.656 -6.114 -12.336 -15.115 -17.091 11.640 0.825 - -0.002 -0.204 0.015 -0.525 -1.237 -1.039 1.515 1.007 0.015 - 104: 3.127 -16.135 -5.176 -5.727 -14.044 -14.333 -18.905 15.506 0.833 - -0.034 -0.247 0.103 -0.223 -1.575 0.513 1.507 0.754 0.006 - ------------------------------------- END ---------------------------------- -\end{verbatim} - -The target header information shows that the converted data consists -of 195 parameter vectors, each vector having 18 components and being 72 bytes in -size. The structure of each parameter vector is displayed as a simple sequence -of floating-point numbers. The layout information described in -section~\ref{s:parmstore} can be used to interpret the data. -However, including the \texttt{-o} option, as in the example, causes \htool{HList} -to output a schematic of the observation structure. Thus, it can be seen that -the first row of each sample contains the static coefficients and the second -contains the delta -coefficients. The energy is in the final column. -The command line option \texttt{-i 9} controls the number of values displayed -per line and can be used to aid in the visual interpretation of the data. -Notice finally that the command line option \texttt{-F TIMIT} was not required -in this case because the source format was specified in the configuration file. - -It should be stressed that when \htool{HList} displays parameterised data, -it does so in exactly the form that \textit{observations} are passed to -a \HTK\ tool. So, for example, if the above data was input to a system -built using 3 data streams, then this can be simulated by using the -command line option \texttt{-n} to set the number of streams. For example, typing -\begin{verbatim} - HList -C config -n 3 -o -s 100 -e 101 -i 9 timit.wav -\end{verbatim} -would result in the following output -\begin{verbatim} - ------------------------ Observation Structure ----------------------- - nTotal=18 nStatic=8 nDel=16 eSep=T - x.1: MFCC-1 MFCC-2 MFCC-3 MFCC-4 MFCC-5 MFCC-6 MFCC-7 MFCC-8 - x.2: Del-1 Del-2 Del-3 Del-4 Del-5 Del-6 Del-7 Del-8 - x.3: E DelE - -------------------------- Samples: 100->101 ------------------------- - 100.1: 3.573 -19.729 -1.256 -6.646 -8.293 -15.601 -23.404 10.988 - 100.2: 3.161 -1.913 0.573 -0.069 -4.935 2.309 -5.336 2.460 - 100.3: 0.834 0.080 - 101.1: 3.372 -16.278 -4.683 -3.600 -11.030 -8.481 -21.210 10.472 - 101.2: 0.608 -1.850 -0.903 -0.665 -2.603 -0.194 -2.331 2.180 - 101.3: 0.777 0.069 - --------------------------------- END -------------------------------- -\end{verbatim} -Notice that the data is identical to the previous case, but it has been -re-organised into separate streams.\index{observations!displaying structure of} - -\mysect{Copying and Coding using \htool{HCopy}}{UseHCopy} - -\index{files!copying} -\htool{HCopy}\index{hcopy@\htool{HCopy}} is a general-purpose tool -for copying and manipulating speech files. -The general form of invocation is -\begin{verbatim} - HCopy src tgt -\end{verbatim} -which will make a new copy called \texttt{tgt} of the file called \texttt{src}. -\htool{HCopy} can also concatenate several sources together as in -\begin{verbatim} - HCopy src1 + src2 + src3 tgt -\end{verbatim} -which concatenates the contents of \texttt{src1}, \texttt{src2} and \texttt{src3}, -storing the results in the file \texttt{tgt}. As well as putting speech files -together, \htool{HCopy} can also take them apart. For example, -\begin{verbatim} - HCopy -s 100 -e -100 src tgt -\end{verbatim} -will extract samples 100 through to N-100 of the file \texttt{src} to the file -\texttt{tgt} where N is the total number of samples in the source file. -The range of samples to be copied can also be specified with reference to -a label file, and modifications made to the speech file can be tracked in a -copy of the label file. All of the various options provided by \htool{HCopy} -are given in the reference section and in total they provide a powerful -facility for manipulating speech data files. - -However, the use of \htool{HCopy} extends beyond that of copying, chopping -and concatenating files. \htool{HCopy} reads in all files using the speech -input/output subsystem described in the preceding sections. Hence, by specifying -an appropriate configuration file, \htool{HCopy} is also a speech coding tool. -For example, if the configuration file \texttt{config} was set-up to convert -waveform data to MFCC coefficients, the command -\begin{verbatim} - HCopy -C config -s 100 -e -100 src.wav tgt.mfc -\end{verbatim} -would parameterise the file waveform file \texttt{src.wav}, excluding the -first and last 100 samples, and store the result in \texttt{tgt.mfc}. - -\htool{HCopy} will process its arguments in pairs, and as with all \HTK\ tools, -argument lists can be written in a script file specified via the \texttt{-S} -option. When coding a large database, the separate invocation of \htool{HCopy} -for each file needing to be processed would incur a very large overhead. Hence, -it is better to create a file, \texttt{flist} say, containing a list of -all source and target files, as in for example, -\begin{verbatim} - src1.wav tgt1.mfc - src2.wav tgt2.mfc - src3.wav tgt3.mfc - src4.wav tgt4.mfc - etc -\end{verbatim} -and then invoke \htool{HCopy} by -\begin{verbatim} - HCopy -C config -s 100 -e -100 -S flist -\end{verbatim} -which would encode each file listed in \texttt{flist} in a single invocation. - -Normally \htool{HCopy} makes a direct copy of the target speech data in the -output file. However, if the configuration -parameter \texttt{SAVECOMPRESSED}\index{savecompressed@\texttt{SAVECOMPRESSED}} -is set true then the output is saved in compressed -form and if the -configuration parameter \texttt{SAVEWITHCRC}\index{savewithcrc@\texttt{SAVEWITHCRC}} -is set true then a checksum is appended to the output -(see section~\ref{s:parmstore}). If the configuration -parameter \texttt{SAVEASVQ} is set true then only -VQ indices are saved and the kind of the target file is changed to -\texttt{DISCRETE}. For this to work, the target kind must have the -qualifier \texttt{\_V} -\index{qualifiers!aaav@\texttt{\_V}} -attached (see section~\ref{s:vquant}). -\index{compression}\index{check sums} -\index{files!compressing}\index{files!adding checksums} - -\centrefig{coercions}{100}{Valid Parameter Kind Conversions} - -\mysect{Version 1.5 Compatibility}{v1spcompat} - -The redesign of the \HTK\ front-end in version 2 has introduced -a number of differences in parameter encoding. The main -changes are -\begin{enumerate} - \item Source waveform zero mean processing is now performed on a frame-by-frame - basis. - \item Delta coefficients use a modified form of regression rather than - simple differences at the start and end of the utterance. - \item Energy scaling is no longer applied to the zero'th MFCC coefficient. -\end{enumerate} -If a parameter encoding is required which is as close as possible -to the version 1.5 encoding, then the compatibility configuration -variable \texttt{V1COMPAT} should be set to true. - -Note also in this context that the default values for the various -configuration values have been chosen to be consistent with the -defaults or recommended practice for version 1.5. - -\mysect{Summary}{spiosum} - -\index{speech input!summary of variables} -This section summarises the various file formats, parameter kinds, qualifiers -and configuration parameters used by \HTK. Table~\href{t:fileform} lists the -audio speech file formats which can be read by the \htool{HWave} module. -Table~\href{t:parmkinds} lists the basic parameter kinds supported by the -\htool{HParm} module and Fig.~\href{f:coercions} shows the various automatic -conversions that can be performed by appropriate choice of source and target -parameter kinds. Table~\href{t:qualifiers} lists the available qualifiers for -parameter kinds. The first 6 of these are used to describe the target kind. -The source kind may already have some of these, \htool{HParm} adds the rest as -needed. Note that \htool{HParm} can also delete qualifiers when converting -from source to target. The final two qualifiers in Table~\href{t:qualifiers} -are only used in external files to indicate compression and an attached -checksum. \htool{HParm} adds these qualifiers to the target form during output -and only in response to setting the configuration parameters -\texttt{SAVECOMPRESSED} and \texttt{SAVEWITHCRC}. Adding the -\texttt{\_C}\index{qualifiers!aaac@\texttt{\_C}} or -\texttt{\_K}\index{qualifiers!aaak@\texttt{\_K}} qualifiers to the target kind -simply causes an error. Finally, Tables \href{t:spiocparms1} and -\href{t:spiocparms2} lists all of the configuration parameters along with their -meaning and default values. - -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.7cm}|} \hline -Name & Description \\ \hline -\texttt{\HTK} & The standard \HTK\ file format\\ -\texttt{TIMIT} & As used in the original prototype TIMIT CD-ROM\\ -\texttt{NIST} & The standard SPHERE format used by the US NIST\\ -\texttt{SCRIBE} & Subset of the European SAM standard used in the SCRIBE CD-ROM\\ -\texttt{SDES1} & The Sound Designer 1 format defined by Digidesign Inc. \\ -\texttt{AIFF} & Audio interchange file format\\ -\texttt{SUNAU8} & Subset of 8bit ".au" and ".snd" formats used by Sun and NeXT\\ -\texttt{OGI} & Format used by Oregan Graduate Institute similar to TIMIT\\ -\texttt{WAV} & Microsoft WAVE files used on PCs\\ -\texttt{ESIG} & Entropic Esignal file format\\ \hline -\texttt{AUDIO} & Pseudo format to indicate direct audio input \\ -\texttt{ALIEN} & Pseudo format to indicate unsupported file, the - alien header size must be set via the environment variable \texttt{HDSIZE} \\ -\texttt{NOHEAD} & As for the ALIEN format but header size is zero \\ \hline -\end{tabular} -\tabcap{fileform}{Supported File Formats} -\end{center} - -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.7cm}|} \hline -Kind & Meaning \\ \hline -\texttt{WAVEFORM} & scalar samples (usually raw speech data) \\ -\texttt{LPC} & linear prediction coefficients \\ -\texttt{LPREFC} & linear prediction reflection coefficients \\ -\texttt{LPCEPSTRA} & LP derived cepstral coefficients \\ -\texttt{LPDELCEP} & LP cepstra + delta coef (obsolete) \\ -\texttt{IREFC} & LPREFC stored as 16bit (short) integers \\ -\texttt{MFCC} & mel-frequency cepstral coefficients \\ -\texttt{FBANK} & log filter-bank parameters \\ -\texttt{MELSPEC} & linear filter-bank parameters \\ -\texttt{USER} & user defined parameters \\ -\texttt{DISCRETE} & vector quantised codebook symbols \\ -\texttt{PLP} & perceptual linear prediction coefficients \\ -\texttt{ANON} & matches actual parameter kind \\ \hline -\end{tabular} -\tabcap{parmkinds}{Supported Parameter Kinds} -\end{center} - -\begin{center} -\begin{tabular}{|p{2.6cm}|p{8.7cm}|} \hline -Qualifier & Meaning \\ \hline -\texttt{\_A} & Acceleration coefficients appended \\ -\texttt{\_C} & External form is compressed\\ -\texttt{\_D} & Delta coefficients appended \\ -\texttt{\_E} & Log energy appended\\ -\texttt{\_K} & External form has checksum appended\\ -\texttt{\_N} & Absolute log energy suppressed \\ -\texttt{\_T} & Third differential coefficients appended \\ -\texttt{\_V} & VQ index appended\\ -\texttt{\_Z} & Cepstral mean subtracted\\ -\texttt{\_0} & Cepstral C0 coefficient appended\\ \hline -\end{tabular} -\tabcap{qualifiers}{Parameter Kind Qualifiers} -\end{center}\index{qualifiers!summary} - -\begin{center} -\begin{tabular}{|p{1.2cm}|p{3.0cm}|p{1.3cm}|p{6.5cm}|} \hline -Module & Name & Default & Description \\ \hline -\htool{HAudio} & \texttt{LINEIN} & \texttt{T} & Select line input for audio\\ -\htool{HAudio} & \texttt{MICIN} & \texttt{F} & Select microphone input for audio\\ -\htool{HAudio} & \texttt{LINEOUT} & \texttt{T} & Select line output for audio\\ -\htool{HAudio} & \texttt{SPEAKEROUT} & \texttt{F} & Select speaker output for audio\\ -\htool{HAudio} & \texttt{PHONESOUT} & \texttt{T} & Select headphones output for audio\\ - - & \texttt{SOURCEKIND} & \texttt{ANON} & Parameter kind of source \\ - & \texttt{SOURCEFORMAT} & \texttt{HTK} & File format of source \\ - & \texttt{SOURCERATE} & \texttt{0.0} & Sample period of source in 100ns units \\ -\htool{HWave} & \texttt{NSAMPLES} & & Num samples in alien file input via a pipe\\ -\htool{HWave} & \texttt{HEADERSIZE} & & Size of header in an alien file\\ -\htool{HWave} & \texttt{STEREOMODE} & & Select channel: \texttt{RIGHT} or \texttt{LEFT} \\ -\htool{HWave} & \texttt{BYTEORDER} & & Define byte order \texttt{VAX} or other\\ - & \texttt{NATURALREADORDER} & \texttt{F} & Enable natural read order for HTK files \\ - & \texttt{NATURALWRITEORDER} & \texttt{F} & Enable natural write order for HTK files \\ - & \texttt{TARGETKIND} & \texttt{ANON} & Parameter kind of target \\ - & \texttt{TARGETFORMAT} & \texttt{HTK} & File format of target \\ - & \texttt{TARGETRATE} & \texttt{0.0} & Sample period of target in 100ns units \\ -\htool{HParm} & \texttt{SAVECOMPRESSED} & \texttt{F} & Save the output file in compressed form \\ -\htool{HParm} & \texttt{SAVEWITHCRC} & \texttt{T} & Attach a checksum to output parameter file \\ -\htool{HParm} & \texttt{ADDDITHER} & \texttt{0.0} & Level of noise added to input signal \\ -\htool{HParm} & \texttt{ZMEANSOURCE} & \texttt{F} & Zero mean source waveform before analysis \\ -\htool{HParm} & \texttt{WINDOWSIZE} & \texttt{256000.0} & Analysis window size in 100ns units \\ -\htool{HParm} & \texttt{USEHAMMING} & \texttt{T} & Use a Hamming window \\ -\htool{HParm} & \texttt{PREEMCOEF} & \texttt{0.97} & Set pre-emphasis coefficient \\ -\htool{HParm} & \texttt{LPCORDER} & \texttt{12} & Order of LPC analysis \\ -\htool{HParm} & \texttt{NUMCHANS} & \texttt{20} & Number of filterbank channels \\ -\htool{HParm} & \texttt{LOFREQ} & \texttt{-1.0} & Low frequency cut-off in fbank analysis \\ -\htool{HParm} & \texttt{HIFREQ} & \texttt{-1.0} & High frequency cut-off in fbank analysis \\ -\htool{HParm} & \texttt{USEPOWER} & \texttt{F} & Use power not magnitude in fbank analysis \\ -\htool{HParm} & \texttt{NUMCEPS} & \texttt{12} & Number of cepstral parameters \\ -\htool{HParm} & \texttt{CEPLIFTER} & \texttt{22} & Cepstral liftering coefficient \\ -\htool{HParm} & \texttt{ENORMALISE} & \texttt{T} & Normalise log energy \\ -\htool{HParm} & \texttt{ESCALE} & \texttt{0.1} & Scale log energy \\ -\htool{HParm} & \texttt{SILFLOOR} & \texttt{50.0} & Energy silence floor (dB) \\ -\htool{HParm} & \texttt{DELTAWINDOW} & \texttt{2} & Delta window size \\ -\htool{HParm} & \texttt{ACCWINDOW} & \texttt{2} & Acceleration window size \\ -\htool{HParm} & \texttt{VQTABLE} & \texttt{NULL} & Name of VQ table \\ -\htool{HParm} & \texttt{SAVEASVQ} & \texttt{F} & Save only the VQ indices \\ -\htool{HParm} & \texttt{AUDIOSIG} & \texttt{0} & Audio signal number for remote control \\ \hline -\end{tabular} -\tabcap{spiocparms1}{Configuration Parameters} -\end{center} - -\begin{center} -\begin{tabular}{|p{1.1cm}|p{2.6cm}|p{1.4cm}|p{6.5cm}|} \hline -Module & Name & Default & Description \\ \hline -\htool{HParm} & \texttt{USESILDET} & \texttt{F} & Enable speech/silence detector \\ -\htool{HParm} & \texttt{MEASURESIL} & \texttt{T} & Measure background noise level prior to sampling \\ -\htool{HParm} & \texttt{OUTSILWARN} & \texttt{T} & Print a warning message to {\tt stdout} before - measuring audio levels \\ -\htool{HParm} & \texttt{SPEECHTHRESH} & \texttt{9.0} & Threshold for speech above silence level (dB) \\ -\htool{HParm} & \texttt{SILENERGY} & \texttt{0.0} & Average background noise level (dB) \\ -\htool{HParm} & \texttt{SPCSEQCOUNT} & \texttt{10} & Window over which speech/silence decision reached \\ -\htool{HParm} & \texttt{SPCGLCHCOUNT} & \texttt{0} & Maximum number of frames marked as silence in window which is -classified as speech whilst expecting start of speech \\ -\htool{HParm} & \texttt{SILSEQCOUNT} & \texttt{100} & Number of frames classified as silence needed to mark end of -utterance \\ -\htool{HParm} & \texttt{SILGLCHCOUNT} & \texttt{2} & Maximum number of frames marked as silence in window which is -classified as speech whilst expecting silence \\ -\htool{HParm} & \texttt{SILMARGIN} & \texttt{40} & Number of extra frames included before and after start and end of -speech marks from the speech/silence detector \\ -\htool{HParm} & \texttt{V1COMPAT} & \texttt{F} & Set Version 1.5 compatibility mode \\ - & \texttt{TRACE} & \texttt{0} & Trace setting\\ \hline -\end{tabular} -\tabcap{spiocparms2}{Configuration Parameters (cont)} -\end{center} - - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "htkbook" -%%% End: diff --git a/HTKBook/train.tex b/HTKBook/train.tex deleted file mode 100644 index 6423232..0000000 --- a/HTKBook/train.tex +++ /dev/null @@ -1,1631 +0,0 @@ -%/* ----------------------------------------------------------- */ -%/* */ -%/* ___ */ -%/* |_| | |_/ SPEECH */ -%/* | | | | \ RECOGNITION */ -%/* ========= SOFTWARE */ -%/* */ -%/* */ -%/* ----------------------------------------------------------- */ -%/* Copyright: Microsoft Corporation */ -%/* 1995-2000 Redmond, Washington USA */ -%/* http://www.microsoft.com */ -%/* */ -%/* Use of this software is governed by a License Agreement */ -%/* ** See the file License for the Conditions of Use ** */ -%/* ** This banner notice must not be removed ** */ -%/* */ -%/* ----------------------------------------------------------- */ -% -% HTKBook - Steve Young 1/12/97 -% - -\mychap{HMM Parameter Estimation}{Training} - -\sidepic{Tool.train}{80}{ -In chapter~\ref{c:HMMDefs} the various types of HMM were described -and the way in which they are represented within \HTK\ was explained. -Defining the structure and overall form of a set of HMMs is the first -step towards building a recogniser. The second step is to estimate -the parameters of the HMMs from examples of the data sequences that -they are intended to model. This process of parameter estimation -\index{parameter estimation} is -usually called \textit{training}. -\HTK\ supplies five basic tools for parameter estimation: \htool{HCompV}, -\htool{HInit}, \htool{HRest}, \htool{HERest} and \htool{HMMIRest}. -\htool{HCompV} and \htool{HInit} are used for initialisation. -\htool{HCompV} will set the mean and variance of every Gaussian component -in a HMM definition to be equal to the global mean and variance of the -speech training data. This is typically used as an initialisation stage -for \textit{flat-start} training. -Alternatively, a more detailed initialisation is -possible using \htool{HInit} which will compute the parameters of a new -HMM using a Viterbi style of estimation. -} - -\htool{HRest} and \htool{HERest} are used to refine the -parameters of existing HMMs using Baum-Welch Re-estimation. -Like \htool{HInit}, \htool{HRest} -performs \textit{isolated-unit} training whereas -\htool{HERest} operates on complete model sets and performs \textit{embedded-unit} -training. In general, whole word HMMs are built using \htool{HInit} -and \htool{HRest}, and continuous speech sub-word based systems -are built using \htool{HERest} initialised by either \htool{HCompV} or -\htool{HInit} and \htool{HRest}. - -\htool{HMMIRest} is used to discriminatively train the parameters of a trained -HMM. This uses modified versions of the Extended Baum-Welch re-estimation -formulae. Normally \htool{HMMIRest} will use models previously trained using -\htool{HERest}. - -This chapter describes these training tools and their use for -estimating the parameters of plain (i.e. untied) -continuous density HMMs. The use of tying and special cases such as -tied-mixture HMM sets and discrete probability HMMs are dealt -with in later chapters. The first section of this chapter gives an overview of the -various training strategies possible with \HTK. This is then followed -by sections covering initialisation, isolated-unit training, and -embedded training. The chapter continues with a section detailing -the various formulae used by the training tools. The final section describes -discriminative training. - -\mysect{Training Strategies}{tstrats} - -As indicated in the introduction above, the basic operation of -the \HTK\ training tools -involves reading in a set of one or more HMM definitions, and then using -speech data to estimate the parameters of these definitions. The speech -data files are normally stored in parameterised form such as \texttt{LPC} or -\texttt{MFCC} -parameters. However, additional parameters such as delta coefficients are -normally computed \textit{on-the-fly} whilst loading each file. - - -\sidefig{isoword}{62}{Isolated Word Training}{-4}{ -In fact, -it is also possible to use waveform data directly by performing the full parameter -conversion \textit{on-the-fly}. Which approach is preferred depends on the -available computing resources. The advantages of storing the data already -encoded are that the data is more compact in parameterised form and pre-encoding -avoids wasting compute time converting the data each time that it is read -in. However, if the training data is derived from CD-ROMs and they can be -accessed automatically on-line, then the extra compute may be worth the -saving in magnetic disk storage.\index{isolated word training} - -The methods for configuring speech data -input to \HTK\ tools were described in detail in chapter~\ref{c:speechio}. -All of the various input mechanisms are supported by the \HTK\ training -tools except direct audio input. - -The precise way in which the training tools are used depends on the -type of HMM system to be built and the form of the available -training data. Furthermore, -\HTK\ tools are designed to interface cleanly to each other, so a -large number of configurations are possible. In practice, however, -HMM-based speech recognisers are either whole-word or sub-word. -} - -As the name suggests, whole word modelling\index{whole word modelling} refers to a technique -whereby each individual word in the system vocabulary is modelled by -a single HMM. As shown in Fig.~\href{f:isoword}, whole word HMMs -are most commonly trained on examples of each word spoken in -isolation. If these training examples, which are often called -\textit{tokens}, have had leading and trailing silence removed, then -they can be input directly into the training tools without the need -for any label information. The most common method of building whole -word HMMs is to firstly use -\htool{HInit}\index{hinit@\htool{HInit}} to calculate initial -parameters for the model and then -use -\htool{HRest}\index{hrest@\htool{HRest}} to refine the parameters using Baum-Welch -re-estimation. Where there is limited training data and recognition -in adverse noise environments is needed, so-called {\it fixed -variance} models can offer improved robustness. These are models in -which all the variances are set equal to -the global speech variance\index{global speech variance} -and never subsequently re-estimated. The tool -\htool{HCompV}\index{hcompv@\htool{HCompV}} can be used to -compute this global variance. -\index{training!whole-word} - -\centrefig{subword}{90}{Training Subword HMMs} - -Although \HTK\ gives full support for building whole-word -HMM systems, the bulk of its facilities are focused on -building sub-word systems in which the basic units are the -individual sounds of the language called \textit{phones}. -One HMM is constructed for each such phone\index{phones} and -continuous speech\index{continuous speech recognition} -is recognised by joining the phones together to -make any required vocabulary using a pronunciation dictionary. - -\index{training!sub-word} -The basic procedures involved in training a set of subword models -are shown in Fig.~\href{f:subword}. The core process involves the -embedded training\index{embedded training} tool -\htool{HERest}\index{herest@\htool{HERest}}. \htool{HERest} uses -continuously spoken utterances as its source of training data -and simultaneously re-estimates the complete set of subword HMMs. -For each input utterance, \htool{HERest} needs a transcription i.e.\ a list of -the phones in that utterance. \htool{HERest} then joins together all of the -subword HMMs corresponding to this phone list to make a single -composite HMM. This composite HMM is used to collect -the necessary statistics for the re-estimation. When all of the -training utterances have been processed, the total set of accumulated -statistics are used to re-estimate the parameters of all of the phone -HMMs. -It is important to emphasise that in the above process, the transcriptions -are only needed to identify the sequence of phones in each utterance. -No phone boundary information is needed. - -The initialisation\index{phone model initialisation} of a -set of phone HMMs prior to embedded re-estimation -using \htool{HERest} can be achieved in two different ways. As shown on the -left of Fig.~\href{f:subword}, a small set of hand-labelled -\textit{bootstrap} training data can be used along with\index{bootstrapping} -the isolated training tools \htool{HInit} and \htool{HRest} to -initialise each phone HMM individually. When used in this way, -both \htool{HInit} and \htool{HRest} use the label information -to extract all the segments of speech corresponding to the current -phone HMM in order to perform isolated word training. - -A simpler initialisation procedure uses \htool{HCompV} to assign the global -speech mean and variance to every Gaussian distribution in every phone -HMM. This so-called \textit{flat start} procedure implies that during the -first cycle of embedded re-estimation, each training utterance will be -uniformly segmented. The hope then is that enough of the phone models -align with actual realisations of that phone so that on the second and -subsequent iterations, the models align as intended.\index{flat start} - -One of the major problems to be faced in building any HMM-based -system is that the amount of training data for each model will be -variable and is rarely sufficient. To overcome this, \HTK\ allows -a variety of sharing mechanisms to be implemented whereby HMM parameters -are tied together so that the training data is pooled and more robust -estimates result. These tyings, along with a variety of other -manipulations, are performed using the \HTK\ HMM editor \htool{HHEd}. -The use of \htool{HHEd}\index{hhed@\htool{HHEd}} is -described in a later chapter. Here it is -sufficient to note that a phone-based HMM set typically goes through -several refinement cycles of editing using \htool{HHEd} followed -by parameter re-estimation using \htool{HERest} before the final model set is -obtained. - -Having described in outline the main training strategies, each -of the above procedures will be described in more detail. - -\mysect{Initialisation using \htool{HInit}}{inithmm} - -In order to create a HMM definition, it is first necessary to produce -a prototype definition. As explained in Chapter~\ref{c:HMMDefs}, HMM definitions -can be stored as a text file and hence the simplest way of creating -a prototype is by using a text editor to manually produce a definition of the form -shown in Fig~\ref{f:hmm1def}, Fig~\ref{f:hmm2def} etc. The function of a prototype -definition is to describe the form and topology of the HMM, the actual numbers used -in the definition are not important. Hence, the vector size and parameter kind should -be specified and the number of states chosen. The allowable transitions between states -should be indicated by putting non-zero values in the corresponding elements of the -transition matrix and zeros elsewhere. The rows of the transition matrix must sum to one -except for the final row which should be all zero. Each state definition should show the -required number of streams and mixture components in each stream. All mean values -can be zero but diagonal variances should be positive and covariance matrices -should have positive diagonal elements. All state definitions can be identical. -\index{model training!initialisation} - -Having set up an appropriate prototype, a HMM can be initialised using the \HTK tool -\htool{HInit}. The basic principle of \htool{HInit} depends on the concept of a HMM as -a generator of speech vectors. Every training example can be viewed as the output -of the HMM whose parameters are to be estimated. -Thus, if the state that generated each vector in the training -data was known, then the unknown means and variances could be estimated by averaging all the -vectors associated with each state. Similarly, the transition matrix could be estimated -by simply counting the number of time slots that each state was occupied. This process -is described more formally in section~\ref{s:bwformulae} below. - -\sidefig{vitloop}{60}{\htool{HInit} Operation}{2}{ -The above idea can be implemented by an iterative scheme as shown in Fig~\href{f:vitloop}. -Firstly, the Viterbi\index{Viterbi training} -algorithm is used to find the most likely state sequence corresponding to -each training example, then the HMM parameters are estimated. As a side-effect -of finding the Viterbi state alignment, the log likelihood of the training data -can be computed. Hence, the whole estimation process can be repeated until -no further increase in likelihood is obtained. - -This process requires some initial HMM parameters to get started. To circumvent -this problem, \htool{HInit} starts by uniformly segmenting the data and associating -each successive segment with successive states. Of course, this only makes sense -if the HMM is left-right. If the HMM is ergodic, then the uniform -segmentation\index{uniform segmentation} can be disabled and some other -approach taken. For example, -\htool{HCompV} can be used as described below. - -If any HMM state has multiple mixture components, then the training vectors are -associated with the mixture component with the highest likelihood. The number of -vectors associated with each component within a state can then be used to estimate the mixture -weights. In the uniform segmentation stage, a K-means -clustering\index{K-means clustering} algorithm is used -to cluster the vectors within each state.\index{model training!mixture components} - -Turning now to the practical use of \htool{HInit}, whole word models can be initialised by -typing a command of the form -} - -\begin{verbatim} - HInit hmm data1 data2 data3 -\end{verbatim} -where \texttt{hmm} is the name of the file holding the prototype -HMM and \texttt{data1}, \texttt{data2}, etc.\ are the -names of the speech files holding the training examples, each file holding a single example -with no leading or trailing silence. The HMM definition can be distributed across a number -of macro files loaded using the standard \texttt{-H} option. For example, in -\begin{verbatim} - HInit -H mac1 -H mac2 hmm data1 data2 data3 ... -\end{verbatim} -then the macro files \texttt{mac1} and \texttt{mac2} would be loaded first. If these contained a -definition for \texttt{hmm}, then no further HMM definition input would be attempted. If however, -they did not contain a definition for \texttt{hmm}, then \htool{HInit} would attempt to open a file called -\texttt{hmm} and would expect to find a definition for \texttt{hmm} within it. \htool{HInit} can in principle -load a large set of HMM definitions, but it will only update the parameters of the single named -HMM. On completion, \htool{HInit} will write out new versions of all HMM definitions loaded on start-up. -The default behaviour is to write these to the current directory which has the usually -undesirable effect of overwriting the prototype definition. This can be prevented by -specifying a new directory for the output definitions using the \texttt{-M} option. -Thus, typical usage of \htool{HInit} takes the form \index{model training!whole word} -\begin{verbatim} - HInit -H globals -M dir1 proto data1 data2 data3 ... - mv dir1/proto dir1/wordX -\end{verbatim} -Here \texttt{globals} is assumed to hold a global -options macro\index{global options macro} (and possibly others). -The actual HMM definition is loaded from the file \texttt{proto} in the current directory and -the newly initialised definition along with a copy of \texttt{globals} will be written to -\texttt{dir1}. Since the newly created HMM will still be called \texttt{proto}, it is renamed -as appropriate. - -For most real tasks, the number of data files required will -exceed the command line argument -limit and a script file\index{script files} is used instead. -Hence, if the names of the data files are stored in the file -\texttt{trainlist} then typing -\begin{verbatim} - HInit -S trainlist -H globals -M dir1 proto -\end{verbatim} -would have the same effect as previously. - -\centrefig{hinitdp}{90}{File Processing in \htool{HInit}} - -When building sub-word models, \htool{HInit} can be used in the same manner as above to initialise -each individual sub-word HMM. However, in this case, the training data is typically continuous -speech with associated label files identifying the speech segments corresponding to -each sub-word. To illustrate this, the following command could be used to initialise -a sub-word HMM for the phone \texttt{ih} -\begin{verbatim} - HInit -S trainlist -H globals -M dir1 -l ih -L labs proto - mv dir1/proto dir1/ih -\end{verbatim} -where the option \texttt{-l} defines the name of the sub-word model, and -the file \texttt{trainlist} is assumed to hold -\begin{verbatim} - data/tr1.mfc - data/tr2.mfc - data/tr3.mfc - data/tr4.mfc - data/tr5.mfc - data/tr6.mfc -\end{verbatim} -In this case, \htool{HInit} will first try to find label -\index{model training!sub-word initialisation} -files corresponding to each data file. In the example here, the -standard \texttt{-L}\index{standard options!aaal@\texttt{-L}} option -indicates that they are -stored in a directory called \texttt{labs}. As an alternative, they -could be stored in a Master Label File\index{master label files} (MLF) and -loaded via the standard option \texttt{-I}. -Once the label files have been loaded, each data file is scanned and all segments -corresponding the label \texttt{ih} are loaded. Figure~\href{f:hinitdp} -illustrates this process. - -All \HTK\ tools support the \texttt{-T} -\index{standard options!aaat@\texttt{-T}} trace option and although the details of -tracing varies from tool to tool, setting the least significant bit (e.g.\ by \texttt{-T 1}), -causes all tools to output top level progress information. In the case -of \htool{HInit}, this information includes the log likelihood at each iteration and hence -it is very useful for monitoring convergence\index{monitoring convergence}. For example, enabling top level tracing -in the previous example might result in the following being output -\begin{verbatim} - Initialising HMM proto . . . - States : 2 3 4 (width) - Mixes s1: 1 1 1 ( 26 ) - Num Using: 0 0 0 - Parm Kind: MFCC_E_D - Number of owners = 1 - SegLab : ih - maxIter : 20 - epsilon : 0.000100 - minSeg : 3 - Updating : Means Variances MixWeights/DProbs TransProbs - 16 Observation Sequences Loaded - Starting Estimation Process - Iteration 1: Average LogP = -898.24976 - Iteration 2: Average LogP = -884.05402 Change = 14.19574 - Iteration 3: Average LogP = -883.22119 Change = 0.83282 - Iteration 4: Average LogP = -882.84381 Change = 0.37738 - Iteration 5: Average LogP = -882.76526 Change = 0.07855 - Iteration 6: Average LogP = -882.76526 Change = 0.00000 - Estimation converged at iteration 7 - Output written to directory :dir1: -\end{verbatim} -The first part summarises the structure of the HMM, in this case, the data is -single stream MFCC coefficients with energy and deltas appended. The HMM has -3 emitting states, each single Gaussian and the stream width is 26. The current -option settings are then given followed by the convergence information. In this -example, convergence was reached after 6 iterations, however if the \texttt{maxIter} -limit was reached, then the process would terminate regardless. - -\htool{HInit} provides a variety of command line options for controlling -its detailed behaviour. -\index{model training!update control} -The types of parameter -estimated by \htool{HInit} can be controlled -using the \texttt{-u} option, for example, \texttt{-u mtw} would update the means, -transition matrices and -mixture component weights but would leave the variances untouched. -A variance floor\index{variance floors} -can be applied using the \texttt{-v} to prevent any variance getting too small. This -option applies the same variance floor to all speech vector elements. More precise -control can be obtained by specifying a variance macro (i.e.\ a \texttt{~v} macro) -called \texttt{varFloor1}\index{varfloorn@\texttt{varFloorN}} for -stream 1, \texttt{varFloor2} for stream 2, etc. Each -element of these variance vectors then defines a floor for the corresponding HMM variance -components. - -The full list of options supported by \htool{HInit} is described in the \refpart. - -\mysect{Flat Starting with \htool{HCompV}}{flatstart} - -One limitation of using \htool{HInit} for the initialisation -of sub-word models is that it requires labelled training data. -For cases where this is not readily available, an alternative -initialisation strategy is to make all models equal initially and -move straight to embedded training using \htool{HERest}. The -idea behind this so-called \textit{flat start} training is similar to the -uniform segmentation strategy adopted by \htool{HInit} since by making -all states of all models equal, the first iteration of embedded training -will effectively rely on a uniform segmentation of the data. - -\centrefig{flatst}{90}{Flat Start Initialisation} - -Flat start\index{flat start} initialisation is provided by the \HTK\ tool \htool{HCompV} whose operation -is illustrated by Fig~\href{f:flatst}. The input/output of HMM definition files -and training files in \htool{HCompV}\index{hcompv@\htool{HCompV}} works in exactly the same way as described above for -\htool{HInit}. It reads in a prototype HMM definition and some training data -and outputs a new definition in which every mean and covariance is equal to -the global speech mean and covariance. Thus, for example, the following -command would read a prototype definition called \texttt{proto}, read in all speech -vectors from \texttt{data1}, \texttt{data2}, \texttt{data3}, etc, -compute the global mean and covariance -and write out a new version of \texttt{proto} in \texttt{dir1} with this mean and -covariance. -\begin{verbatim} - HCompV -m -H globals -M dir1 proto data1 data2 data3 ... -\end{verbatim} - -The default operation of \htool{HCompV} is only to update the covariances of the HMM -and leave the means unchanged. The use of the \texttt{-m} option above causes the -means to be updated too. This apparently curious default behaviour arises because -\htool{HCompV} is also used to initialise the variances in so-called -\textit{Fixed-Variance} HMMs. These are HMMs initialised in the normal way except -that all covariances are set equal to the global speech covariance and never -subsequently changed.\index{fixed-variance} - -Finally, it should be noted that \htool{HCompV} can also be used to generate -variance floor macros by using the \texttt{-f} option. -\index{variance floor macros!generating} - -\mysect{Isolated Unit Re-Estimation using \htool{HRest}}{resthmm} - -\sidefig{restloop}{60}{\htool{HRest} Operation}{2}{ \htool{HRest} is the final tool in the set -designed to manipulate isolated unit HMMs. Its operation is very similar to -\htool{HInit} except that, as shown in Fig~\href{f:restloop}, it expects the input -HMM definition to have been initialised and it uses Baum-Welch -re-estimation\index{Baum-Welch re-estimation!isolated unit} in place -of Viterbi training. This involves finding the probability of being in each -state at each time frame using the \textit{Forward-Backward} algorithm. -This probability is then used to form weighted averages -for the HMM parameters. Thus, whereas Viterbi training makes a hard decision -as to which state each training vector was ``generated'' by, Baum-Welch -takes a soft decision. This can be helpful when estimating phone-based HMMs -since there are no hard boundaries between phones in real speech and using -a soft decision may give better results.\index{forward-backward!isolated unit} -The mathematical details of the Baum-Welch re-estimation -process are given below in section~\ref{s:bwformulae}. - -\htool{HRest} is usually applied directly to the models generated by \htool{HInit}. Hence for -example, the generation of a sub-word model for the phone \texttt{ih} begun -in section~\ref{s:inithmm} -would be continued by executing the following command -} - -\begin{verbatim} - HRest -S trainlist -H dir1/globals -M dir2 -l ih -L labs dir1/ih -\end{verbatim} -This will load the HMM definition for \texttt{ih} from \texttt{dir1}, -re-estimate the parameters using the speech segments labelled with \texttt{ih} -and write the new definition to directory \texttt{dir2}. - -If \htool{HRest} is used to build models with a large number of mixture components per state, -a strategy must be chosen for dealing with \textit{defunct mixture components}. -These are mixture components which have very little associated training data and -as a consequence either the variances or the corresponding mixture weight becomes -very small. If either of these events happen, the mixture component is effectively -deleted and provided that at least one component in that state is left, a warning -is issued. If this behaviour is not desired then the variance can be floored as -described previously using the \texttt{-v} option (or a variance floor macro) -and/or the mixture weight can be floored using the \texttt{-w} option. -\index{defunct mixture components} - -Finally, a problem which can arise when -using \htool{HRest} to initialise sub-word models -is that of over-short training -segments\index{over-short training segments}. By default, -\htool{HRest} ignores all training examples which have fewer frames than -the model has emitting states. For example, suppose that a -particular phone with 3 emitting states had only a few training -examples with more than 2 frames of data. In this case, there would be two -solutions. Firstly, the number of emitting states could be reduced. Since -\HTK\ does not require all models to have the same number of states, -this is perfectly feasible. -Alternatively, some skip transitions could be added and the default -reject mechanism disabled by setting the \texttt{-t} option. -Note here that \htool{HInit} has the same reject mechanism and suffers -from the same problems. \htool{HInit}, however, does not allow -the reject mechanism to be suppressed since the uniform segmentation -process would otherwise fail. - -\mysect{Embedded Training using \htool{HERest}}{eresthmm} - -\index{model training!embedded} -Whereas isolated unit training is sufficient for building whole word -models and initialisation of models using hand-labelled \textit{bootstrap} -data, the main HMM training procedures for building sub-word systems -revolve around the concept of \textit{embedded training}. Unlike the -processes described so far, embedded training\index{embedded training} simultaneously updates all -of the HMMs in a system using all of the training data. It is performed by -\htool{HERest}\index{herest@\htool{HERest}} which, unlike \htool{HRest}, performs just a single iteration. -\index{Baum-Welch re-estimation!embedded unit} - -In outline, \htool{HERest} works as follows. On startup, \htool{HERest} -loads in a complete -set of HMM definitions. Every training file must have an associated -label file which gives a transcription for that file. Only the -sequence of labels is used by \htool{HERest}, however, and any boundary location -information is ignored. Thus, these transcriptions can be generated -automatically from the known orthography of what was said and -a pronunciation dictionary. - -\htool{HERest} processes each training file in turn. After loading it into memory, -it uses the associated transcription to -construct a composite HMM which spans the whole utterance. -This composite HMM is made by concatenating instances of the phone HMMs -corresponding to each label in the transcription. The Forward-Backward -algorithm is then applied and the sums needed to form the weighted -averages accumulated in the normal way. When all of the training -files have been processed, the new parameter estimates are formed -from the weighted sums and the updated HMM set is output. -\index{forward-backward!embedded} - -The mathematical details of embedded Baum-Welch re-estimation -are given below in section~\ref{s:bwformulae}. - -In order to use \htool{HERest}, it is first necessary to construct a -file containing a list -of all HMMs in the model set with each model name being written on a separate line. -The names of the models in this\index{HMM lists} -list must correspond to the labels used in the transcriptions and there -must be a corresponding model for every distinct transcription label. -\htool{HERest} is typically invoked by a command line of the form -\begin{verbatim} - HERest -S trainlist -I labs -H dir1/hmacs -M dir2 hmmlist -\end{verbatim} -where \texttt{hmmlist} contains the list of HMMs. On startup, \htool{HERest} will -load the HMM master macro file (MMF) \texttt{hmacs} (there may be -several of these). It then searches for a definition for each -HMM listed in the \texttt{hmmlist}, if any HMM name is not found, -it attempts to open a file of the same name in the current directory -(or a directory designated by the \texttt{-d} option). -Usually in large subword systems, however, all of the HMM definitions -will be stored in MMFs. Similarly, all of the required transcriptions -will be stored in one or more Master Label Files -\index{master label files} (MLFs), and in the -example, they are stored in the single MLF called \texttt{labs}. - -\centrefig{herestdp}{90}{File Processing in \htool{HERest}} - -Once all MMFs and MLFs have been loaded, \htool{HERest} processes each file in the -\texttt{trainlist}, and accumulates the required statistics as described -above. On completion, an updated MMF is output to the directory -\texttt{dir2}. If a second iteration is required, then \htool{HERest} is reinvoked -reading in the MMF from \texttt{dir2} and outputting -a new one to \texttt{dir3}, and so on. -This process is illustrated by Fig~\href{f:herestdp}. - -When performing embedded training, it is good practice to -monitor the performance of the models on unseen test data -and stop training when no further improvement is obtained. Enabling -top level tracing by setting \texttt{-T 1} will cause \htool{HERest} to -output the overall log likelihood per frame of the training data. -This measure could be used as a termination condition for -repeated application of \htool{HERest}. However, -repeated re-estimation to convergence\index{monitoring convergence} -may take an impossibly long time. -Worse still, it can lead to over-training since the models can become too -closely matched to the training data and fail to generalise well on unseen -test data. Hence in practice around 2 to 5 cycles of -embedded re-estimation are normally sufficient when training phone -models. - -In order to get accurate acoustic models, a large amount of training -data is needed. Several hundred -utterances are needed for speaker dependent recognition and -several thousand are needed for -speaker independent recognition. In the latter case, a single -iteration of embedded training -might take several hours to compute. There are two mechanisms for -speeding up this computation. Firstly, \htool{HERest} has a pruning -\index{model training!pruning} mechanism -incorporated into its forward-backward computation. \htool{HERest} calculates -the backward probabilities $\beta_j(t)$ first and then the forward probabilities -$\alpha_j(t)$. -The full computation of these probabilities for all values of state $j$ -and time $t$ is unnecessary since many of these combinations will be highly -improbable. On the forward pass, \htool{HERest} restricts the computation of -the $\alpha$ values to just those for which the total log likelihood -as determined by the product $\alpha_j(t)\beta_j(t)$ is -within a fixed distance from the total likelihood $P(\bm{O}|M)$. This -pruning is always enabled since it is completely safe and causes no loss -of modelling accuracy. - -Pruning on the backward pass is also possible. -However, in this case, the likelihood product $\alpha_j(t)\beta_j(t)$ -is unavailable since $\alpha_j(t)$ has yet to be computed, and hence a -much broader {\it beam} must be set to -avoid pruning errors. Pruning on the backward path is therefore under -user control. It is set using the \texttt{-t} option which has two -forms. In the simplest case, a fixed pruning beam is set. For example, -using \texttt{-t 250.0} would set a fixed beam of 250.0. This method -is adequate when there is sufficient compute time available to -use a generously wide beam. When a narrower beam is used, \htool{HERest} will -reject any utterance for which the beam proves to be too narrow. -This can be avoided by using an incremental threshold. For example, -executing -\begin{verbatim} - HERest -t 120.0 60.0 240.0 -S trainlist -I labs \ - -H dir1/hmacs -M dir2 hmmlist -\end{verbatim} -would cause \htool{HERest} to run normally -at a beam width\index{beam width} of 120.0. However, if a pruning -error\index{pruning errors} occurs, the -beam is increased by 60.0 and \htool{HERest} reprocesses the offending training -utterance. Repeated errors cause the beam width to be increased -again and this continues until either the utterance is -successfully processed or the upper beam limit is reached, in this -case 240.0. Note that errors which occur at very high beam widths -are often caused by transcription errors, hence, it is best not to -set the upper limit too high. - -\centrefig{parher}{90}{\htool{HERest} Parallel Operation} - -\index{model training!in parallel} -The second way of speeding-up the operation of \htool{HERest} is to use more than -one computer in parallel. The way that this is done is to divide the -training data amongst the available machines and then to run \htool{HERest} on each -machine such that each invocation of \htool{HERest} -uses the same initial set of models but has its own private set of data. -By setting the option {\tt -p N} where {\tt N} is an integer, \htool{HERest} will -dump the contents of all its accumulators\index{accumulators} into a file called {\tt HERN.acc} -rather than updating and outputting a new set of models. These dumped -files are collected together and input to a new invocation of \htool{HERest} with -the option {\tt -p 0} set. \htool{HERest} then reloads the accumulators from -all of the dump files and updates the models in the normal way. -This process is illustrated in Figure~\href{f:parher}. - -To give a concrete example, suppose that four networked workstations -were available to execute the \htool{HERest} command given earlier. The training files -listed previously in \texttt{trainlist} would be split -into four equal sets and a list -of the files in each set stored in {\tt trlist1}, -{\tt trlist2}, {\tt trlist3}, and {\tt trlist4}. -On the first workstation, the command -\begin{verbatim} - HERest -S trlist1 -I labs -H dir1/hmacs -M dir2 -p 1 hmmlist -\end{verbatim} -would be executed. This will load in the HMM definitions in -{\tt dir1/hmacs}, process the files listed in {\tt trlist1} and finally -dump its accumulators into a file called {\tt HER1.acc} in the output -directory {\tt dir2}. At the same time, the command -\begin{verbatim} - HERest -S trlist2 -I labs -H dir1/hmacs -M dir2 -p 2 hmmlist -\end{verbatim} -would be executed on the second workstation, and so on. When -\htool{HERest} has finished on all four -workstations, the following command will be executed on just one of them -\begin{verbatim} - HERest -H dir1/hmacs -M dir2 -p 0 hmmlist dir2/*.acc -\end{verbatim} -where the list of training files has been replaced by the dumped accumulator -files. This will cause the accumulated -statistics to be reloaded and merged so that the model parameters can -be reestimated and the new model set output to \texttt{dir2} -The time to perform this last phase of the operation is very small, hence -the whole process will be around four times quicker than for the -straightforward sequential case. - -\mysect{Single-Pass Retraining}{singlepass} - -In addition to re-estimating the parameters of a HMM set, \htool{HERest} -also provides a mechanism for mapping a set of models trained using -one parameterisation into another set based on a different parameterisation. -This facility allows the front-end of a HMM-based recogniser to be -modified without having to rebuild the models from scratch. - -This facility is known as single-pass retraining\index{single-pass retraining}. -Given one set of well-trained models, a new set matching a -different training data parameterisation can be generated in a single -re-estimation pass. This is done by computing the forward and backward -probabilities using the original models together with the original -training data, but then switching to the new training data to compute -the parameter estimates for the new set of models. - -Single-pass retraining is enabled in \htool{HERest} by setting the -\texttt{-r} switch. This causes the input training files to be read -in pairs. The first of each pair is used to compute the -forward/backward probabilities and the second is used to estimate the -parameters for the new models. Very often, of course, data input to -\HTK\ is modified by the \htool{HParm} module in accordance with -parameters set in a configuration file. In single-pass retraining mode, -configuration parameters can be prefixed by the pseudo-module names -\texttt{HPARM1} and \texttt{HPARM2}. Then when reading in the first -file of each pair, only the \texttt{HPARM1} parameters are used and -when reading the second file of each pair, only the \texttt{HPARM2} -parameters are used.\index{configuration parameters!switching} - -As an example, suppose that a set of models has been trained on data -with \texttt{MFCC\_E\_D} parameterisation and a new set of models using -Cepstral Mean Normalisation (\texttt{\_Z}) is required. These two data -parameterisations are specified in a configuration file -(\texttt{config}) as two separate instances of the configuration -variable \texttt{TARGETKIND} i.e. -\begin{verbatim} - # Single pass retraining - HPARM1: TARGETKIND = MFCC_E_D - HPARM2: TARGETKIND = MFCC_E_D_Z -\end{verbatim} -\htool{HERest} would then be invoked with the \texttt{-r} option set to enable -single-pass retraining. For example, -\begin{verbatim} - HERest -r -C config -S trainList -I labs -H dir1/hmacs -M dir2 hmmList -\end{verbatim} -The script file \texttt{trainlist} contains a list of data file -pairs. For each pair, the first file should match the parameterisation of -the original model set and the second file should match that of the -required new set. -This will cause the model parameter estimates to be performed using the -new set of training data and a new set of models matching this data will -be output to \texttt{dir2}. This process of single-pass retraining is -a significantly faster route to a new set of models than training a fresh -set from scratch. - -\mysect{Two-model Re-Estimation}{twomodel} - -Another method for initialisation of model parameters implemented in -\htool{HERest} is two-model re-estimation. HMM sets often use the same -basic units such as triphones but differ in the way the underlying HMM -parameters are tied. In these cases two-model re-estimation can be -used to obtain the state-level alignment using one model set which is -used to update the parameters of a second model set. This is helpful -when the model set to be updated is less well trained. - -A typical use of two-model re-estimation\index{two-model - re-estimation} is the initialisation of state clustered triphone -models. In the standard case triphone models are obtained by cloning -of monophone models and subsequent clustering of triphone states. -However, the unclustered triphone models are considerably less -powerful than state clustered triphone HMMs using mixtures of -Gaussians. The consequence is poor state level alignment and thus poor -parameter estimates, prior to clustering. This can be ameliorated by -the use of well-trained \textit{alignment models} for computing the -forward-backward probabilities. In the maximisation stage of the -Baum-Welch algorithm the state level posteriors are used to -re-restimate the parameters of the \textit{update model set}. Note that -the corresponding models in the two sets must have the same number of -states. - -As an example, suppose that we would like to update a set of cloned -single Gaussian monophone models in {\tt dir1/hmacs} using the well -trained state-clustered triphones in {\tt dir2/hmacs} as alignment -models. Associated with each model set are the model lists {\tt - hmmlist1} and {\tt hmmlist2} respectively. In order to use the -second model set for alignment a configuration file {\tt - config.2model} containing -\begin{verbatim} - # alignment model set for two-model re-estimation - ALIGNMODELMMF = dir2/hmacs - ALIGNHMMLIST = hmmlist2 -\end{verbatim} -is necessary. \htool{HERest} only needs to be invoked using that -configuration file. -\begin{verbatim} - HERest -C config -C config.2model -S trainlist -I labs -H dir1/hmacs -M dir3 hmmlist1 -\end{verbatim} -The models in directory {\tt dir1} are updated using the alignment -models stored in directory {\tt dir2} and the result is written to -directory {\tt dir3}. Note that {\tt trainlist} is a standard \HTK\ -script and that the above command uses the capability of HERest to -accept multiple configuration files on the command line. If each HMM -is stored in a separate file, the configuration variables {\tt - ALIGNMODELDIR} and {\tt ALIGNMODELEXT} can be used. - -Only the state level alignment is obtained using the alignment models. -In the exceptional case that the update model set contains mixtures of -Gaussians, component level posterior probabilities are obtained from -the update models themselves. - -\mysect{Parameter Re-Estimation Formulae}{bwformulae} - -\index{model training!re-estimation formulae} -For reference purposes, this section lists the various formulae -employed within the \HTK\ parameter estimation tools. -All are standard, however, the use of non-emitting -states and multiple data streams leads to various special cases which are -usually not covered fully in the literature. - -The following notation is used in this section -\begin{tabbing} -++ \= ++++++++ \= \kill -\> $N$ \> number of states \\ -\> $S$ \> number of streams \\ -\> $M_s$ \> number of mixture components in stream $s$\\ -\> $T$ \> number of observations \\ -\> $Q$ \> number of models in an embedded training sequence \\ -\> $N_q$ \> number of states in the $q$'th model in a training sequence \\ -\> $\bm{O}$ \> a sequence of observations \\ -\> $\bm{o}_t$ \> the observation at time $t$, $1 \leq t \leq T $ \\ -\> $\bm{o}_{st}$ \> the observation vector for stream $s$ at time $t$ \\ -\> $a_{ij}$ \> the probability of a transition from state $i$ to $j$ \\ -\> $c_{jsm}$ \> weight of mixture component $m$ in state $j$ stream $s$\\ -\> $\bm{\mu}_{jsm}$ \> vector of means for the mixture component $m$ of state $j$ - stream $s$\\ -\> $\bm{\Sigma}_{jsm}$ \> covariance matrix for the mixture component $m$ - of state $j$ stream $s$ \\ -\> $\lambda$ \> the set of all parameters defining a HMM -\end{tabbing} - -\subsection{Viterbi Training (\htool{HInit})} - -\index{model training!Viterbi formulae} -In this style of model training, a set of training observations -$\bm{O}^r, \;\; 1 \leq r \leq R$ is used to estimate the -parameters of a single HMM by iteratively computing Viterbi alignments. -When used to initialise a new HMM, the Viterbi segmentation is -replaced by a uniform segmentation (i.e.\ each training -observation is divided into $N$ equal segments) -for the first iteration. - -Apart from the first iteration on a new model, -each training sequence $\bm{O}$ is segmented using a state alignment procedure -which results from maximising -\[ - \phi_N(T) = \max_i \phi_i(T) a_{iN} -\] -for $1t \geq 1$ is -calculated by the backward recursion -\[ - \beta_i(t) = \sum_{j=2}^{N-1} a_{ij} b_j(\bm{o}_{t+1}) \beta_j(t+1) -\] -with initial conditions given by -\[ - \beta_i(T) = a_{iN} -\] -for $1 1$, -\[ - \alpha^{(q)}_{1}(t) = - \left\{ \begin{array}{cl} - 0 & \mbox{if $q=1$} \\ - \alpha^{(q-1)}_{N_{q-1}}(t-1) + - \alpha^{(q-1)}_1(t) a^{(q-1)}_{1N_{q-1}}& \mbox{otherwise} - \end{array} - \right. -\] -\[ - \alpha^{(q)}_j(t) = - \left[ - \alpha^{(q)}_1(t) a^{(q)}_{1j} + - \sum_{i=2}^{N_q-1} \alpha^{(q)}_{i}(t-1) a^{(q)}_{ij} - \right] - b^{(q)}_j(\bm{o}_t) -\] -\[ - \alpha^{(q)}_{N_q}(t) = - \sum_{i=2}^{N_q-1} \alpha^{(q)}_{i}(t) a^{(q)}_{iN_q} -\] -For the backward probability, the initial conditions are set at time -$t=T$ as follows -\[ - \beta^{(q)}_{N_q}(T) = - \left\{ \begin{array}{cl} - 1 & \mbox{if $q=Q$} \\ - \beta^{(q+1)}_{N_{q+1}}(T) a^{(q+1)}_{1N_{q+1}} & \mbox{otherwise} - \end{array} - \right. -\] -\[ - \beta^{(q)}_i(T) = a^{(q)}_{iN_q} \beta^{(q)}_{N_q}(T) -\] -\[ - \beta^{(q)}_1(T) = \sum^{N_q - 1}_{j=2} - a^{(q)}_{1j} b^{(q)}_j(\bm{o}_T) \beta^{(q)}_j(T) -\] -where once again, all unspecified $\beta$ values are zero. For -time $t - - * Makefile adapted for HDecode release - -2005-08-10 Anna Langley - - * Added: HForest, HFBLat - -2005-07-05 Mark Gales - * HAdapt.c fix - -2005-05-06 Anna Langley - - * Remove references to TimeStruct, SetTime, GiveTime from: - * HShell.c: - * HShell.h: - * HFB.c: - -2005-04-22 Matt Stuttle - - * HParm.c: - -2005-02-24 Anna Langley - - * Files for autoconf installs added - -2004-08-18 Andrew Liu - - * fix in HFB for component level 2 model single pass training - -2004-08-12 Gunnar Evermann - - * HUtil.c (PMix): Make item list parsing work with logweights. - -2004-08-09 Mark Gales - - * HAdapt.c (EstMLLRCovXForm): Use double-precision during - transform estimation. - -2004-08-08 Mark Gales - - * HAdapt.c (EstCMLLRXForm): Calculate determinant directly during - transform estimation. - -2004-08-07 Gunnar Evermann - - * HAdapt.c (FixDet): Make intermediate results double-precision. - - * HLat.c (ScanLLF): Print name of lattice skipped. - - * HShell.c (ReadUntilLine): Increase maximum length. - -2004-08-04 Antti-Veikko Rosti - - * HFB.c: Partial distance elimination (PDE) for faster training added. - Mixture weights in the log-scale are supported. New block in ShStr() - added for the case hset->numSharedMix == 0 to speed up training. - - * HModel.c: Mixture component re-ordering implemented for PDE and a - config option (REORDERCOMPS=FALSE) added. The components are sorted - according to descending gConst values before saving the model set. - - * HUtil.c, HUtil.h: Functions ConvLogWt() and ConvExtWt() added to - convert mixture weight into the log-scale and back. - -2004-07-31 Gunnar Evermann - - * HArc.c: Make trace variable static. - -2004-07-29 Gunnar Evermann - - * HForest.[hc]: new module. - - * HShell.[hc] (RegisterExtFileName): Export function RegisterExtFileName. - - * HLabel.c (LoadHTKList): - (SaveHTKLabels): New config variable HTKLABELTIMESCALE. Times in - HTK format label files are multiplied by this on loading and - divided by on saving. - -2004-07-23 Mark Gales - - * HAdapt.c: change TMF storage to output xform directory - * HModel.c: bug fix for sanity check on regression class tree parse. - * HFBLat.c: double semi-colon removal. - -2004-07-17 Antti-Veikko Rosti - - * HFBLat.c: Bug fix to correct mixture occupation caching in - UpMixParms(). - -2004-07-16 Mark Huckvale - - * HGraf.null.c (HTextHeight): Add placeholder function. - * HShell.h: CYGWIN compatibility. - -2004-07-14 Gunnar Evermann - - * HLat.c: Implement LLF processing to speedup loading of many - lattice files and reduce network traffic. - -2004-07-14 Antti-Veikko Rosti - - * HFB.c, HFBLat.c: Removed unused variables and unnecessary - transforms in ShStrP() and UpMixParms(). Added T_TIM trace - flag in HFBLat.c. - -2004-07-12 Antti-Veikko Rosti - - * HFB.c, HFBLat.c: increase the initial and maximum number of - elements in a block for heaps AlphaBetaFB and fbLatArcStore. - Added T_TIM trace in HFB.c. - - * HArc.c, HArc.h, HFB.c, HFB.h, HFBLat.c, HTrain.c, HTrain.h: - added mixture component output probability caching. - -2004-07-06 Gunnar Evermann - - * HShell.c: Limit MAXTRYOPEN to 3 to avoid thrashing file servers. - -2004-06-26 Gunnar Evermann - - * HModel.c (Str2BaseClassKind): Use correct BaseClassKind. - -2004-06-25 Gunnar Evermann - - * HLM.c (ReadNGrams): Avoid compiler warnings. - - * HAdapt.c (GetAlpha): use DVectorSize rather than VectorSize. - - * HFB.c (SetTraceFB): Replace extern traceFB variable with - function - - * HFBLat.c: Disable error-checking _exp() wrapper. - - * Makefile (clean): Remove icc's .il files - -2004-06-16 Gunnar Evermann - - * HFB.c: Make Forward Backward score check a warning rather than - an error. - -2004-06-15 Lan Wang - * HAdapt.c: bug fix for CMLLR (USEBIAS=F) - -2004-06-09 Kai Yu - * HFB.c: Component-level alignment in two-model re-estimation: - HFB:ALIGNCOMPLEVEL=TRUE to allow component-level alignment. The - aligned hmm and the update hmm should have the same component - number. - -2004-06-07 Gunnar Evermann - - * HLat.c (LatPrune): New lattice pruning mode: - HLAT:BEAMPRUNEARCS=F do not apply beam pruning to arcs. - -2004-04-26 K. Yu - - * HFBLat.[hc]: Add support for MMI priors in MPE training. - -2004-04-16 Gunnar Evermann - - * HParm.c (SetParmHMMSet): Mark ~j macro read from file specified - in HPARM:MATTRANFN as LOADFIDX instead of CREATEFIDX. Otherwise it - will be saved in TMFs. - -2004-04-02 Bin Jia - - * *.[ch]: Various fixes for new adaptation code. - -2004-02-18 Gunnar Evermann - - * HModel.h (LMINMIX): Correct value of LMINMIX. - -2004-01-30 Gunnar Evermann - - * HShell.c (MakeFN): Increase number of characters allowed in - filen names. - -2003-10-14 Gunnar Evermann - - * HModel.h: Redfine XFORM -- ugly hack to make HTK compile on - Windows. - - * HMath.c (minab): Rename min() macro to avoid potential conflict - with definition from stdlib.h. - (InvSVD): Rename variable small to isSmall to fix compilation - problem in Visual C++. - -2003-10-03 Gunnar Evermann - - * HModel.c (CheckDiscrete): Ensure that in discrete HMM Sets all - streams have width of 1. - - * HParm.c (AddQualifiers): Ensure tht HIGHDIFF=T is only used when - the source feature file does not contain derivatives. - -2003-10-02 Gunnar Evermann - - * HShell.h: Remove C++ type alias for Booleans. - -2003-09-23 Gunnar Evermann - - * HParm.c (EmptyBuffer): Initialise chType; - -2003-09-10 Gunnar Evermann - - * HShell.c (ParseString): Fix parsing of octal charcter codes. - From Tanel Alum�e - -2003-07-28 Anna Langley - * Makefile: corrected typo ($Arch) - -2003-07-28 Anna Langley - * htk_htklib_nt.mkf: applied changed supplied by Arlindo Veiga - which compile the HLat library. - -2003-07-21 S.E. Tranter - * HParm.c (OpenParmChannel): check that the end index in the - scp file doesnt overrun the end of the coded data file - -2003-07-08 Anna Langley - - * HAdapt.c, HArc.c, HMath.c, HModel.c, strarr.c: fixed compilation - warnings of unused variables. - -2003-07-09 Anna Langley - * HShell.c: - * HShell.h: - * HTrain.h: Minor modifications to allow compilation on win32 - -2003-06-03 M. J. F. Gales - - * HUtil.c: added code to support optional parsing of only the - physical HMMs. - - * HModel.c (GetBaseClass): Handle large HMM sets by only parsing - the Physical models. - (InitModel): added coinfig variable to allow storage of input - transform. Also bug fixes for storage of input transform with MMF. - (GetLinXForm): fixed problem with initialisation of transform - determinant. - - -2003-05-07 Lan Wang - - * HModel.c (GetLinXForm): Initialise xf->det. - -2003-04-30 Gunnar Evermann - - * HAdapt.c: apply 2003-04-02 change again. - -2003-04-22 Gunnar Evermann - - * HUtil.c (InitUtil): - (ResetUtilItemList): Increase maximum size of itemHeap blocks to - cope with large HMM sets. - -2003-04-17 Gunnar Evermann - - * HLabel.c (HASHSIZE): - * HModel.h (MACHASHSIZE): Increase hash tables sizes to deal with - large HMM sets, e.g. Mandarin tonal models. - -2003-04-04 Gunnar Evermann - - * revert previous (2003-04-02) change. - -2003-04-02 Lan Wang - - * HAdapt.c: speed-ups. - -2003-03-30 Gunnar Evermann - - * HNet.c (NewLattice): - (NewILattice): - (ReadOneLattice): Initialise ln->score to 0.0 - - * HLat.c (LatSetScores): New function: set ln->score to node - posterior. - -2003-03-27 Gunnar Evermann - - * HParm.c: Increase limit for length of config values. - -2003-03-12 Mark Gales - - * HUtil.c (PHIdent): Bug fix. Revert to old behaviour where - specifying non-existing models is silently ignored. - -2003-03-10 Dan Povey - - * HArc.c: Raise default trae level and check whether lattices have - phone marks - -2003-03-06 Lan Wang - - * HAdapt.c: - * HFBLat.c: - * HModel.[hc]: Bug fixes for adaptation estimation. - -2003-02-14 Gunnar Evermann - - * HModel.c (PutOptions): Save CovKind in MMF Options if it is - specified (i.e. not NULLC). - -2003-02-10 Gunnar Evermann - - * HMem.c (Dispose): Fix sanity check. - -2003-02-05 Dan Povey - - * HExactMPE.c: - * HFBLat.c: Fix for exact MPE. - -2003-02-05 Lan Wang - - * HFBLat.[hc]: Bug fixes for lattice MLLR and MMI(MPE).SAT.CMLLR. - -2003-02-05 Gunnar Evermann - - * HShell.c (PrintStdOpts): Add new transform options -E -J -K. - -2003-02-03 Mark Gales - - * HAdapt.[hc]: New adaptation code. - -2002-12-19 Gunnar Evermann - - * *.[hc]: Bump version to 3.2. - -2002-12-18 Gunnar Evermann - - * HLat.c: Fix error codes. - - * HLabel.c (MAXMLFS): Increase MAXMLFS from 20 to 200. - -2002-12-13 Dan Povey - - * HNet.c (GetFieldValue): Check length of string read from source. - - * HShell.[hc] (ReadStringWithLen): New function: like ReadString() - but checks string length. - -2002-12-10 Dan Povey - - * HShell.h: Clarify description of FOpen(). - - * HNet.c (CopyLattice): Set la->prlike fields. - (LatticeFromLabels): - -2002-11-21 Gunnar Evermann - - * HDict.h: Add aux field to WordPron structure for use in HDecode. - -2002-11-15 Mark Gales - - * HFB.c: Added compatibilty check for input transforms and 2 - model estimation - - * HModel.c: Corrected description - - * HParm.c: Corrected error codes from 999. - -2002-11-14 Dan Povey - - * HTrain.c: Use PreComps for PLAINHS in addition to SHAREDHS. - - * HTrain.[hc] (CreateWtAcc): Allocate WtAcc array once. - (ScalePDF): - (ScaleAccs): - (ScaleAccsParallel): New functions. - - * HShell.[hc] (SetTime): - (GiveTime): New functions - - * HNet.c (ReadOneLattice): Add field prscale to lattices. - -2002-11-14 Gunnar Evermann - - * HUtil.c (GoNextHMM): Fix use of (? :) in assignment. Previous - version wasn't ANSI C. - -2002-11-11 Andrew Liu - - * HMath.[hc] (LinTranQuaProd): New function. - -2002-11-08 Gunnar Evermann - - * HUtil.c (SetMacroHook): - (GetMacroUse): - (SetMacroUse): Support for InputXForm macro ~j. - * HModel.[hc]: Data Structures and functions for reading/writing - InputXFroms. - * HParm.[hc]: Apply input transform to data and variance scale - vectors. - Suport for third and fourth differntials. - - From: Andrew Liu - Mark Gales - -2002-10-30 Zhu Dong-Lai - - * HAdapt.c (GetMeanTransform): Fix implementation of MLLR for - block-diagonal transforms. - -2002-10-17 Dan Povey - - * HTrain.[hc] (CreateMuAcc): - (CreateVaAcc): - (CreateTrAcc): - (CreateWtAcc): - (TMAttachAccs): - (AttachAccsParallel): - (TMZeroAccs): - (ZeroAccsParallel): - (TMShowAccs): - (ShowAccsParallel): - (AttachPreComps): - (DumpAccsParallel): - (LoadAccsParallel): - (RestorePDF): - (RestoreAccsParallel): Support for parallel accumulators. - - (LoadWtAcc): - (LoadMuAcc): - (LoadVaAcc): Check for infinity in accumulator files. - -2002-10-16 Dan Povey - - * HNet.c (ReadOneLattice): Initialise lattice fields. - Set pronunciation variant for arclabs lattices. - -2002-08-28 Gunnar Evermann - - * HFB.c (InitFB): - (InitialiseForBack): Allow setting of pruning threshold via config - variables. Values specified via calls to InitialiseForBack() take - precedence. - (InitFB): Allow module name HFWDBKWD in config files for backward - compatibility. - -2002-07-12 Thomas Hain - - * HTrain.h: Added prototype for AttachPreComps - * HTrain.c (AttachPreComps): Added function - * HFB.h: Added prototype for UseAlignHMMSet, extended structs - to allow 2model re-estimation. - * HFB.c : Added capability to use one model set for FB - and one for model updates. - * HModel.h: Added ext function prototype for ApplyVFloor - * HModel.c (ApplyVFloor): New function to apply variance floor to - hset - -2002-08-13 Gunnar Evermann - - * HNet.c (ConvLogLikeFromBase): - (ConvLogLikeToBase): New function for for conversion of log - likelihoods for reading/storing lattices in files. - (WriteLattice): - (WriteOneLattice): - (ReadOneLattice): Support for "base" and "tscale" lattice header - fields. - -2002-08-13 Gunnar Evermann - - * HModel.c (PutOptions): Save CovKind in MMF Options if it is - specified (i.e. not NULLC). - (SetCovKindUsage): New function. Set HMMSet CovKind if it is - unspecified but consistent across mixtures. - -2002-08-09 Gunnar Evermann - - * HLM.h: Add new LMType: hlmModel. - - * HMem.h: - * HMem.c (CNew): New function. - - * HLabel.c (GetTrSym): Fix buffer overrun. - (ExtendAux): Check number of levels. - * HShell.h: Remove comments referring to LClass. - From: Gareth Moore - -2002-07-16 Gunnar Evermann - - * HNet.c (WriteOneLattice): Always re-order lattice nodes, even if - we don't store them. - -2002-06-27 Gunnar Evermann - - * HParm.h: Add prototypes for Ext data source functions. - From: Peter Gober - - * HParm.c (OpenAsChannel): Fix buffer allocation for ch_ext_wave. - From: Peter Gober - -2002-06-11 Gunnar Evermann - - * HLat.c (LatFindBest): If give pronunciation variant can't be - found in dicitonary (e.g. if it only is a word list), then fall - back to word name as the output symbol. - -2002-06-05 Gunnar Evermann - - * HLM.c (LMTrans): New function for use in HLat and decoders. - (ReadNGrams): Add support for reading binary ARPA N-grams. - - * HLM.h (NSIZE): Allow 4-grams. - - * HLat.[hc]: Add new module. - -2002-06-05 Gunnar Evermann - - * *.[hc]: Bump version to 3.1.1. - -2002-06-05 Gunnar Evermann - - * HModel.c (GetTransMat): Check for wrong TransP matrix size. - From: Peter Gober - -2002-02-14 Gunnar Evermann - - * HNet.c (FindWordNode): - (NewNode): - (CreateX1Model): - (ExpandWordNet): Initialise node->aux to 0. - From: K.K. Chin - -2002-01-24 Gunnar Evermann - - * Makefile (HTKLib.$(CPU).a): Always add all modules. - -2002-01-16 Gunnar Evermann - - * *.[hc]: Bump version to 3.1. - -2001-12-11 Gareth Moore - - * HShell.c (PrintStdOpts): Tool usage report formatting tidied. - -2001-12-03 Gunnar Evermann - - * HModel.c (LoadHMMSet): Check hset consistency before assigning - indexes. - -2001-11-23 Gunnar Evermann - - * HNet.c (NewPronHolder): Handle prons will NULL outSym. - -2001-08-28 Gunnar Evermann - - * HDict.c (ShowDict): Handle prons with NULL outSym. - -2001-08-03 Gunnar Evermann - - * HNet.h: Add aux field to NetNode. - * HRec.c (TokSetMerge): Compare NetNodes instead of Prons when - deciding which tokens to recombine. - From: K.K. Chin - -2001-06-08 Gunnar Evermann - - * HParm.c: Correct initialisation of IOConfigRec defChan - From: Mark Gales - - -2001-04-18 Gunnar Evermann - - * HSigP.c (ASpec2LPCep): Init lp[lpcOrder+1] to avoid reading from - uninitialised in LPC2Cepstrum(). This doesn't change the results - but makes Purify et al. happy. - -2001-04-17 Gunnar Evermann - - * HVQ.c (VQNodeScore): - * HLM.c (WriteBoNGram): Fix error codes. - - * HSigP.c (ASpec2LPCep): New error code 5323 for PLP. - - * HParm.c (RunSilDet): - (SetExtSpDetParms): New error code 6325 for sil detector errors. - - * HNet.c : New error code 8253 for Sublat errors. - - * HMem.c: Remove unused license check. - - * Makefile (depend): New target. Add header file dependencies. - - * HFB.c (StepBack): Print top-level trace messages if traceHFB - (set by 'HERest -T 1') is true. - -2001-04-14 Gunnar Evermann - - * HFB.c (StepForward): Always initialise ab->occa. - -2001-04-13 Gunnar Evermann - - * HNet.c (WriteOneLattice): Fix sort order of lattice arcs. - - * HRec.c (InitVRecInfo): Initialise sanity checking info. - (CollectPaths): Fix some silly if statements. - (NewNRefPath): Initialise used field. - (NewNRefAlign): Ditto. - - * HParm.c (InitParm): Initialise fields of defChan. - -2001-04-12 Gunnar Evermann - - * HParm.c (LoadVarScale): - (LoadVarScaleVector): - (LoadCMeanVector): Check InitSource return value. - -2001-04-11 Gunnar Evermann - - * HShell.c (ReadRawString): Moved from HDman. - - * HParm.c: - * HSigP.c (Wave2FBank): - (InitFBank): Implement Vocal Tract Length Normalisation. - -2001-04-09 Gunnar Evermann - - * HParm.c: - * HSigP.c (InitFBank): Make DOUBLEFFT a config variable. - -2001-03-14 Gunnar Evermann - - * HNet.c (NewLattice): Initialise prlike. - -2001-03-08 Gunnar Evermann - - * HWave.c (OpenWaveInput): Handle extended filenames. - -2001-02-09 Gunnar Evermann - - * HParm.c: - * HShell.[hc]: Moved MaskMatch to HShell. - -2001-02-07 Gunnar Evermann - - * HParm.c: Add side-based normalisation. - -2001-02-02 Gunnar Evermann - - * HSigP.c: - * HParm.h: - * HParm.c: Add support for PLP frontend. - -2000-12-04 Gunnar Evermann - - * HLabel.c (SaveESPSLabels): Don't close f here, it's done in LSave. - -2000-11-30 Gunnar Evermann - - * HShell.c (PrintStdOpts): Modify description of -B option. - -2000-11-16 Gunnar Evermann - - * HRec.c (cSOutP): Take log of mixture weight. - From Ruth Aloni-lavi - -2000-11-10 Gunnar Evermann - - * HMem.h: - * HMem.c: Consistently use size_t for all memory block sizes - instead of mixing signed/unsigned int/long. - -2000-10-26 Gunnar Evermann - - * HFB.h: - * HFB.c (FBFile): Return Boolean indicating whether alignment - succeeded. - From: Mark Gales - -2000-10-06 Gunnar Evermann - - * HSigP.c: - * HMem.c: - * HMath.c: - * HLabel.c: - * HAudio.c: Remove MPW segment pragmas. - -2000-10-06 Steve Young - - * HShell.c (KeyPressed): On Win32 check for KeyDown to avoid - registering key twice. - -2000-09-25 Gunnar Evermann - - * HShell.c (InfoPrinted): Remove reference to SCCS. - - * Makefile: Copy compile settings from env files. - -2000-09-15 Gunnar Evermann - - * HAdapt.c (GetSymbol): - * HUtil.c (GetKey): - * HGraf.c (HSetColour,HSetGrey,HSetFontSize,HSetLineWidth,InitGCs): - * HParm.c (ReadIOConfig): - * HWave.c (Str2Format): C++ fix for incrementing enums. - - * HLabel.c (GetScribeLab): Warning fix. - -2000-09-13 G. Evermann - - * htk_htklib_nt.mkf: Use HGraf_WIN32.obj. - -2000-09-08 Gunnar Evermann - - * esig_edr.c: - * esig_asc.c: - * esignal.c: - * HMem.c: - * HFB.c: - * HAdapt.c: - * HNet.c: - * HRec.c: - * HNet.h: - * HLM.c: - * HDict.c: - * HTrain.c: - * HUtil.c: - * HModel.c: - * HLabel.c: - * HGraf.c: - * HVQ.c: - * HParm.c: - * HAudio.c: - * HWave.c: - * HSigP.c: - * Hshell.c: - * HMath.c: Warning elimination. - Explicitly cast malloc return values to avoid C++ warnings. - Remove unused variables. - Put parentheses about assignments used as truth values. - Explicitly cast doubles to ints. - Use correct format chars in printf calls. - C++ compatability. - Many of the warning fixes are from Dave Hart - - * HMath.c (FixSVD): #ifdef 0 unused code. - - * HShell.h: Use predefined type bool in C++. - - * HModel.c: Use EOFSYM in symMap[] instead of EOF (from stdio.h!). - - * HLabel.c (SaveToMasterfile): Return FAIL if no file name given. - - * HAudio.c (InitAudi): Call IsVAXOrder instead of treating its - address as a Boolen. - - -2000-09-06 Gunnar Evermann - - * *.h: Guard against repeated inclusion. - Add C++ wrapper. - -2000-09-04 Gunnar Evermann - - * *.[hc]: Reindented. - - * *.[hc]: Cleaned up version headers and set version to 3.0. - diff --git a/HTKLib/ChangeLog.CUHTK b/HTKLib/ChangeLog.CUHTK deleted file mode 100644 index 49501d0..0000000 --- a/HTKLib/ChangeLog.CUHTK +++ /dev/null @@ -1,16 +0,0 @@ -2002-12-10 Dan Povey - - * HArc.c: Clean-up indentation. - - * HFBLat.c: Fix. - -2002-11-16 Dan Povey - - * HFBLat.c: General clean-up of comments and indentation. - -2002-11-14 Dan Povey - - * HArc.[hc]: - * HFBLat.[hc]: - * HExactMPE.[hc]: New modules. - diff --git a/HTKLib/HANNet.c b/HTKLib/HANNet.c new file mode 100755 index 0000000..b7f5dfd --- /dev/null +++ b/HTKLib/HANNet.c @@ -0,0 +1,1545 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HANNet.c ANN model definition data type */ +/* ----------------------------------------------------------- */ + +char *hannet_version = "!HVER!HANNet: 3.5.0 [CUED 12/10/15]"; +char *hannet_vc_id = "$Id: HANNet.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +#include "config.h" +#include +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HAudio.h" +#include "HParm.h" +#include "HLabel.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HDict.h" +#include "HAdapt.h" +#include + +/* ------------------------------ Trace Flags ------------------------------ */ + +static int trace = 0; + +#define T_TOP 0001 +#define T_CCH 0002 + +/* --------------------------- Memory Management --------------------------- */ + + +/* ----------------------------- Configuration ------------------------------*/ + +static ConfParam *cParm[MAXGLOBS]; /* config parameters */ +static int nParm = 0; +static size_t batchSamples = 1; /* the number of samples in batch; 1 sample by default */ +static char ANNUpdateFlagStr[MAXSTRLEN]; /* the string pointer indicating the layers to update */ +/*static char layerUpdateFlagStr[MAXSTRLEN];*/ /* cz277 - 150811 */ +/*static char actfunUpdateFlagStr[MAXSTRLEN];*/ /* cz277 - 150811 */ +static char matrixUpdateFlagStr[MAXSTRLEN]; /* cz277 - 151020 */ +static char vectorUpdateFlagStr[MAXSTRLEN]; /* cz277 - 151020 */ + +/*static Boolean hasShownUpdtFlag = FALSE;*/ +/* cz277 - 1007 */ +static int batchIndex = 0; +/* cz277 - 150811 */ +static RILink headNMatRPLInfo = NULL; +static int numNMatRPLInfo = 0; +static RILink headNVecRPLInfo = NULL; +static int numNVecRPLInfo = 0; +static char maskStrNMatRPLInfo[MAXSTRLEN]; +static char inDirStrNMatRPLInfo[MAXSTRLEN]; +static char extStrNMatRPLInfo[MAXSTRLEN]; +static char outDirStrNMatRPLInfo[MAXSTRLEN]; +static char maskStrNVecRPLInfo[MAXSTRLEN]; +static char inDirStrNVecRPLInfo[MAXSTRLEN]; +static char extStrNVecRPLInfo[MAXSTRLEN]; +static char outDirStrNVecRPLInfo[MAXSTRLEN]; + +/* get the batch size */ +int GetNBatchSamples(void) { + return batchSamples; +} + +/* set the batch size */ +void SetNBatchSamples(int userBatchSamples) { + batchSamples = userBatchSamples; +#ifdef CUDA + RegisterTmpNMat(1, batchSamples); +#endif +} + +/* cz277 - xform */ +/*void InitRPLInfo(RPLInfo *rplInfo) { + rplInfo->nSpkr = 0; + rplInfo->inRPLMask = NULL; + rplInfo->curOutSpkr = NewString(&gcheap, MAXSTRLEN); + rplInfo->curInSpkr = NewString(&gcheap, MAXSTRLEN); + rplInfo->cacheInSpkr = NewString(&gcheap, MAXSTRLEN); + rplInfo->inRPLDir = NULL; + rplInfo->inRPLExt = NULL; + rplInfo->outRPLDir = NULL; + rplInfo->outRPLExt = NULL; + rplInfo->saveBinary = FALSE; + rplInfo->rplNMat = NULL; + memset(&rplInfo->saveRplNMatHost, 0, sizeof(NMatHost)); + rplInfo->rplNVec = NULL; + memset(&rplInfo->saveRplNVecHost, 0, sizeof(NVecHost)); +}*/ + +/* */ +void InitANNet(void) +{ + int intVal; + ConfParam *cpVal; + + /* cz277 - 150811 */ + strcpy(ANNUpdateFlagStr, ""); + /*strcpy(layerUpdateFlagStr, ""); + strcpy(actfunUpdateFlagStr, "");*/ + /* cz277 - 1501020 */ + strcpy(matrixUpdateFlagStr, ""); + strcpy(vectorUpdateFlagStr, ""); + + /* cz277 - 150811 */ + strcpy(maskStrNMatRPLInfo, ""); + strcpy(inDirStrNMatRPLInfo, ""); + strcpy(extStrNMatRPLInfo, ""); + strcpy(outDirStrNMatRPLInfo, ""); + strcpy(maskStrNVecRPLInfo, ""); + strcpy(inDirStrNVecRPLInfo, ""); + strcpy(extStrNVecRPLInfo, ""); + strcpy(outDirStrNVecRPLInfo, ""); + + Register(hannet_version, hannet_vc_id); + nParm = GetConfig("HANNET", TRUE, cParm, MAXGLOBS); + + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) { + trace = intVal; + } + if (GetConfInt(cParm, nParm, "MINIBATCHSIZE", &intVal)) { + if (intVal <= 0) + HError(8720, "InitANNet: Negative or zero batch size"); + SetNBatchSamples(intVal); + } + /* cz277 - 150811 */ + if (GetConfAny(cParm, nParm, "ANNUPDATEFLAG", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: ANNUPDATEFLAG has to be string kind"); + strcat(ANNUpdateFlagStr, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(ANNUpdateFlagStr, ";"); + cpVal = cpVal->append; + } + } + /* cz277 - 151020 */ + if (GetConfAny(cParm, nParm, "NMATUPDATEFLAG", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: NMATUPDATEFLAG has to be string kind"); + strcat(matrixUpdateFlagStr, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(matrixUpdateFlagStr, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "NVECUPDATEFLAG", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: NVECUPDATEFLAG has to be string kind"); + strcat(vectorUpdateFlagStr, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(vectorUpdateFlagStr, ";"); + cpVal = cpVal->append; + } + } + /* cz277 - 150811 */ + if (GetConfAny(cParm, nParm, "REPLACEABLENMATMASK", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATMASK has to be string kind"); + strcat(maskStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(maskStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENMATINDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATINDIR has to be string kind"); + strcat(inDirStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(inDirStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENMATEXT", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATEXT has to be string kind"); + strcat(extStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(extStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENMATOUTDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENMATOUTDIR has to be string kind"); + strcat(outDirStrNMatRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(outDirStrNMatRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECMASK", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECMASK has to be string kind"); + strcat(maskStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(maskStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECINDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECINDIR has to be string kind"); + strcat(inDirStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(inDirStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECEXT", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECEXT has to be string kind"); + strcat(extStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(extStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + if (GetConfAny(cParm, nParm, "REPLACEABLENVECOUTDIR", &cpVal)) { + while (cpVal != NULL) { + if (cpVal->kind != StrCKind) + HError(8720, "InitANNet: REPLACEABLENVECOUTDIR has to be string kind"); + strcat(outDirStrNVecRPLInfo, cpVal->val.s); + if (cpVal->val.s[strlen(cpVal->val.s) - 1] != ';') + strcat(outDirStrNVecRPLInfo, ";"); + cpVal = cpVal->append; + } + } + } + +} + + +/* cz277 - 150811 */ +char *GetANNUpdateFlagStr() { + return ANNUpdateFlagStr; +} + +/* cz277 - 150820 */ +char *GetNMatUpdateFlagStr() { + return matrixUpdateFlagStr; +} + +/* cz277 - 150820 */ +char *GetNVecUpdateFlagStr() { + return vectorUpdateFlagStr; +} + +/* cz277 - 150811 */ +/*char *GetLayerUpdateFlagStr() { + return layerUpdateFlagStr; +}*/ + +/* cz277 - 150811 */ +/*char *GetActFunUpdateFlagStr() { + return actfunUpdateFlagStr; +}*/ + +/* cz277 - 150811 */ +char *GetMaskStrNMatRPLInfo() { + return maskStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetInDirStrNMatRPLInfo() { + return inDirStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetExtStrNMatRPLInfo() { + return extStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetOutDirStrNMatRPLInfo() { + return outDirStrNMatRPLInfo; +} + +/* cz277 - 150811 */ +char *GetMaskStrNVecRPLInfo() { + return maskStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +char *GetInDirStrNVecRPLInfo() { + return inDirStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +char *GetExtStrNVecRPLInfo() { + return extStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +char *GetOutDirStrNVecRPLInfo() { + return outDirStrNVecRPLInfo; +} + +/* cz277 - 150811 */ +RILink GetHeadNMatRPLInfo() { + return headNMatRPLInfo; +} + +/* cz277 - 150811 */ +RILink GetHeadNVecRPLInfo() { + return headNVecRPLInfo; +} + +/* cz277 - 150811 */ +void SetHeadNMatRPLInfo(RILink info) { + headNMatRPLInfo = info; +} + +/* cz277 - 150811 */ +void SetHeadNVecRPLInfo(RILink info) { + headNVecRPLInfo = info; +} + +int GetNumNMatRPLInfo() { + return numNMatRPLInfo; +} + +int GetNumNVecRPLInfo() { + return numNVecRPLInfo; +} + +void SetNumNMatRPLInfo(int n) { + numNMatRPLInfo = n; +} + +void SetNumNVecRPLInfo(int n) { + numNVecRPLInfo = n; +} + +int GetGlobalBatchIndex() { + return batchIndex; +} + +void SetGlobalBatchIndex(int index) { + batchIndex = index; +} + +static inline void FillBatchFromFeaMixOLD(FeaMix *feaMix, int batLen, int *CMDVecPL) { + int i, j, k, srcOff = 0, curOff = 0, dstOff, hisOff, hisDim; + FELink feaElem; + + /* if it is the shared */ + if (feaMix->feaList[0]->feaMats[0] == feaMix->mixMats[0]) + return; + + /* cz277 - 1007 */ + if (feaMix->batchIndex != batchIndex - 1 && feaMix->batchIndex != batchIndex) + HError(8790, "FillBatchFromFeaMix: Wrong batch index"); + else if (feaMix->batchIndex == batchIndex) + return; + else + ++feaMix->batchIndex; + + /* otherwise, fill the batch with a mixture of the FeaElem */ + for (i = 0; i < feaMix->elemNum; ++i) { + feaElem = feaMix->feaList[i]; + + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { + for (j = 0, srcOff = 0, dstOff = curOff; j < batLen; ++j, srcOff += feaElem->extDim, dstOff += feaMix->mixDim) { + CopyNSegment(feaElem->feaMats[0], srcOff, feaElem->extDim, feaMix->mixMats[0], dstOff); + } + } + else if (feaElem->inputKind == ANNFEAIK) { /* ANNFEAIK, left context is consecutive */ + for (j = 0; j < batLen; ++j) { + /* cz277 - gap */ + hisDim = feaElem->hisLen * feaElem->feaDim; + hisOff = j * hisDim; + if (CMDVecPL != NULL && feaElem->hisMat != NULL) { + if (CMDVecPL[j] == 0) { /* reset the history */ + ClearNMatrixSegment(feaElem->hisMat, hisOff, hisDim); + } + else if (CMDVecPL[j] > 0) { /* shift the history */ + CopyNSegment(feaElem->hisMat, CMDVecPL[j] * hisDim, hisDim, feaElem->hisMat, hisOff); + } + } + /* standard operations */ + dstOff = j * feaMix->mixDim + curOff; + for (k = 1; k <= feaElem->ctxMap[0]; ++k, dstOff += feaElem->feaDim) { + if (feaElem->ctxMap[k] < 0) { + /* first, previous segments from hisMat to feaMix->mixMat */ + srcOff = ((j + 1) * feaElem->hisLen + feaElem->ctxMap[k]) * feaElem->feaDim; + CopyNSegment(feaElem->hisMat, srcOff, feaElem->feaDim, feaMix->mixMats[0], dstOff); + } + else if (feaElem->ctxMap[k] == 0) { + /* second, copy current segment from feaMat to feaMix->mixMat */ + srcOff = j * feaElem->srcDim + feaElem->dimOff; + CopyNSegment(feaElem->feaMats[0], srcOff, feaElem->feaDim, feaMix->mixMats[0], dstOff); + } + else { + HError(9999, "FillBatchFromFeaMix: The future of ANN features are not applicable"); + } + } + /* shift history info in hisMat and copy current segment from feaMat to hisMat */ + if (feaElem->hisMat != NULL) { + dstOff = hisOff; + srcOff = dstOff + feaElem->feaDim; + for (k = 0; k < feaElem->hisLen - 1; ++k, srcOff += feaElem->feaDim, dstOff += feaElem->feaDim) { + CopyNSegment(feaElem->hisMat, srcOff, feaElem->feaDim, feaElem->hisMat, dstOff); + } + srcOff = j * feaElem->srcDim + feaElem->dimOff; + CopyNSegment(feaElem->feaMats[0], srcOff, feaElem->feaDim, feaElem->hisMat, dstOff); + } + } + } + curOff += feaElem->extDim; + } +} + +/* cz277 - xform */ +static inline void FillBatchFromFeaMix(LELink layerElem, int batLen) { + int i, j, k, l, n, m, srcOff, curOff, dstOff, t, c, curCtx; + FELink feaElem; + FeaMix *feaMix; + NMatrix *mixMat, *feaMat; + + feaMix = layerElem->feaMix; + if (feaMix->batchIndex != batchIndex - 1 && feaMix->batchIndex != batchIndex) + HError(8790, "FillBatchFromFeaMix: Problematic batch index of a feaMix"); + if (feaMix->batchIndex == batchIndex) + return; + /* update the batchIndex */ + ++feaMix->batchIndex; + + /* if mixMats are shared with feaMats -- no need to reload the features */ + if (feaMix->elemNum == 1) { + feaElem = feaMix->feaList[0]; + if (!(feaElem->inputKind == ANNFEAIK && IntVecSize(feaElem->ctxMap) > 1)) + return; + } + /* if feaMat is shared and is processed for current batch */ + /*if (feaMix->batchIndex != batchIndex || feaMix->batchIndex != batchIndex + 1) + HError(9999, "FillBatchFromFeaMix: Wrong batch index"); + else if (feaMix->batchIndex == batchIndex + 1) + return; + ++feaMix->batchIndex;*/ + /* otherwise */ + n = IntVecSize(layerElem->drvCtx); + for (i = 1, j = 1; i <= n; ++i) { + while (layerElem->drvCtx[i] != feaMix->ctxPool[j]) + ++j; + mixMat = feaMix->mixMats[j]; + for (k = 0, curOff = 0; k < feaMix->elemNum; ++k) { + feaElem = feaMix->feaList[k]; + l = 1; + /* 1. extended input features */ + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { + if (feaElem->inputKind == INPFEAIK) { + while (layerElem->drvCtx[i] != feaElem->ctxPool[l]) + ++l; + } + feaMat = feaElem->feaMats[l]; + for (t = 0, srcOff = 0, dstOff = curOff; t < batLen; ++t, srcOff += feaElem->extDim, dstOff += feaMix->mixDim) { + CopyNSegment(feaMat, srcOff, feaElem->extDim, mixMat, dstOff); + } + } + else if (feaElem->inputKind == ANNFEAIK) { /* 2. ANN features */ + m = IntVecSize(feaElem->ctxMap); + for (c = 1; c <= m; ++c) { + curCtx = feaElem->ctxMap[c] + layerElem->drvCtx[i]; + while (curCtx != feaElem->ctxPool[l]) + ++l; + feaMat = feaElem->feaMats[l]; + for (t = 0; t < batLen; ++t) { + srcOff = t * feaElem->srcDim + feaElem->dimOff; + dstOff = t * feaMix->mixDim + curOff + (c - 1) * feaElem->feaDim; + CopyNSegment(feaMat, srcOff, feaElem->feaDim, mixMat, dstOff); + } + } + } + curOff += feaElem->extDim; + } + } +} + + +/* fill a batch with error signal */ +static inline void FillBatchFromErrMixOLD(FeaMix *errMix, int batLen, NMatrix *mixMat) { + int i, j, srcOff, dstOff; + FELink errElem; + + /* if it is the shared */ + if (errMix->feaList[0]->feaMats[1] == mixMat) { + return; + } + + /* otherwise, fill the batch with a mixture of the FeaElem */ + dstOff = 0; + /* reset mixMat to 0 */ + /*SetNMatrix(0.0, mixMat, batLen);*/ + ClearNMatrix(mixMat, batLen); + /* accumulate the error signals from each source */ + for (i = 0; i < batLen; ++i) { + for (j = 0; j < errMix->elemNum; ++j) { + errElem = errMix->feaList[j]; + srcOff = i * errElem->srcDim + errElem->dimOff; + AddNSegment(errElem->feaMats[1], srcOff, errElem->extDim, mixMat, dstOff); + dstOff += errElem->extDim; + } + } +} + +/* cz277 - many */ +static inline void FillBatchFromErrMix(LELink layerElem, int batLen) { + int c, i, j, k, l, m, n, t, srcOff, dstOff; + FELink errElem; + FeaMix *errMix; + + errMix = layerElem->errMix; + if (errMix == NULL) + return; + if (errMix->batchIndex != batchIndex - 1 && errMix->batchIndex != batchIndex) + HError(8790, "FillBatchFromErrMix: Wrong batch index of an errMix"); + if (errMix->batchIndex == batchIndex) + return; + /* update the batchIndex */ + ++errMix->batchIndex; + + if (errMix->elemNum == 1) { + errElem = errMix->feaList[0]; + if (IntVecSize(errElem->ctxMap) == 1) + if (errElem->srcDim == errElem->feaDim) + return; + } + + n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) + ClearNMatrix(errMix->mixMats[i], batLen); + + for (i = 0; i < errMix->elemNum; ++i) { + errElem = errMix->feaList[i]; + m = IntVecSize(errElem->ctxPool); + n = IntVecSize(errElem->ctxMap); + for (j = 1; j <= m; ++j) { + for (k = 1; k <= n; ++k) { + srcOff = errElem->dimOff + (k - 1) * errElem->feaDim; + c = errElem->ctxPool[j] + errElem->ctxMap[k]; + l = 1; + while (errMix->ctxPool[l] != c) + ++l; + for (t = 0, dstOff = 0; t < batLen; ++t, srcOff += errElem->srcDim, dstOff += errElem->feaDim) { + AddNSegment(errElem->feaMats[j], srcOff, errElem->feaDim, errMix->mixMats[l], dstOff); + } + } + } + } + + /* scale the mixMats */ + /*n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) { + if (layerElem->trainInfo->drvCnt[i] > 1) + ScaleNMatrix(1.0 / (float) layerElem->trainInfo->drvCnt[i], batLen, errMix->mixDim, errMix->mixMats[i]); + }*/ + +} + + +/* temp function */ +void ShowAddress(ANNSet *annSet) { + /*int i;*/ + AILink curAI; + ADLink annDef; + /*LELink layerElem;*/ + + curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + printf("ANNInfo = %p. ANNDef = %p: \n", curAI, annDef); + /*for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i];*/ + /*printf("layerElem = %p, feaMix[0]->feaMat = %p, xFeaMat = %p, yFeaMat = %p, trainInfo = %p, dxFeaMat = %p, dyFeaMat = %p, labMat = %p\n", layerElem, layerElem->feaMix->feaList[0]->feaMat, layerElem->xFeaMat, layerElem->yFeaMat, layerElem->trainInfo, layerElem->trainInfo->dxFeaMat, layerElem->trainInfo->dyFeaMat, layerElem->trainInfo->labMat);*/ + /*} + printf("\n");*/ + curAI = curAI->next; + } +} + +/* update the map sum matrix for outputs */ +void UpdateOutMatMapSum(ANNSet *annSet, int batLen, int streamIdx) { + + /* cz277 - many */ + HNBlasTNgemm(annSet->mapStruct->mappedTargetNum, batLen, annSet->outLayers[streamIdx]->nodeNum, 1.0, annSet->mapStruct->maskMatMapSum[streamIdx], annSet->outLayers[streamIdx]->yFeaMats[1], 0.0, annSet->mapStruct->outMatMapSum[streamIdx]); +} + +/* update the map sum matrix for labels */ +void UpdateLabMatMapSum(ANNSet *annSet, int batLen, int streamIdx) { + + HNBlasTNgemm(annSet->mapStruct->mappedTargetNum, batLen, annSet->outLayers[streamIdx]->nodeNum, 1.0, annSet->mapStruct->maskMatMapSum[streamIdx], annSet->outLayers[streamIdx]->trainInfo->labMat, 0.0, annSet->mapStruct->labMatMapSum[streamIdx]); +} + + +/* the batch with input features are assumed to be filled */ +void CheckANNBatchIndex(ANNSet *annSet, int index) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + Boolean first = TRUE; + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "CheckANNBatchIndex: Function not implemented"); break; + case CONVOLUTIONLAK: HError(8701, "CheckANNBatchIndex: Function not implemented"); break; + case PERCEPTRONLAK: + if (index < 0 && first == TRUE) { + index = layerElem->wghtMat->batchIndex; + first = FALSE; + } + if (layerElem->wghtMat->batchIndex != index) + HError(8790, "CheckANNBatchIndex: Wrong batch index of ~M \"%s\"", layerElem->wghtMat->id->name); + if (layerElem->biasVec->batchIndex != index) + HError(8790, "CheckANNBatchIndex: Wrong batch index of ~V \"%s\"", layerElem->biasVec->id->name); + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + if (layerElem->actfunVecs[j]->batchIndex != index) + HError(8790, "CheckANNBatchIndex: Wrong batch index of ~V \"%s\"", layerElem->actfunVecs[j]->id->name); + break; + case SUBSAMPLINGLAK: HError(8701, "CheckANNBatchIndex: Function not implemented"); break; + default: + HError(8791, "CheckANNBatchIndex: Unknown layer kind"); + } + } + + /* get the next ANNDef */ + curAI = curAI->next; + } +} + +/* cz277 - batch sync */ +/* the batch with input features are assumed to be filled */ +void SetNBundleBatchIndex(ANNSet *annSet, int index) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "SetANNBatchIndex: Function not implemented"); break; + case CONVOLUTIONLAK: HError(8701, "SetANNBatchIndex: Function not implemented"); break; + case PERCEPTRONLAK: + layerElem->wghtMat->batchIndex = index; + layerElem->biasVec->batchIndex = index; + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->batchIndex = index; + break; + case SUBSAMPLINGLAK: HError(8701, "SetANNBatchIndex: Function not implemented"); break; + default: + HError(8791, "SetANNBatchIndex: Unknown layer kind"); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + + +/* the batch with input features are assumed to be filled */ +void SetFeaMixBatchIndex(ANNSet *annSet, int index) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /*batchIndex = index;*/ + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + if (layerElem->feaMix != NULL) + layerElem->feaMix->batchIndex = index; + if (layerElem->errMix != NULL) + layerElem->errMix->batchIndex = index; + } + + /* get the next ANNDef */ + curAI = curAI->next; + } + +} + + +/* cz277 - pact */ +/* y = 1 / sqrt(var) * x + (- mean / sqrt(var)) */ +static void InitAffineScaleByVar(int vecLen, NVector *varVec) { + int i; + + if (!(vecLen <= varVec->vecLen)) + HError(8721, "InitAffineScaleByVar: Wrong vector length"); +#ifdef CUDA + SyncNVectorDev2Host(varVec); +#endif + /* convert variance */ + for (i = 0; i < vecLen; ++i) { + if (varVec->vecElems[i] <= 0.0) + HError(8721, "InitAffineScaleByVar: variance should be > 0.0"); + varVec->vecElems[i] = 1.0 / sqrt(varVec->vecElems[i]); + } +#ifdef CUDA + SyncNVectorHost2Dev(varVec); +#endif +} + +/* cz277 - pact */ +/* y = 1 / sqrt(var) * x + (- mean / sqrt(var)) */ +static void InitAffineShiftByMean(int vecLen, NVector *scaleVec, NVector *meanVec) { + int i; + + if (!(vecLen <= meanVec->vecLen && vecLen <= scaleVec->vecLen)) + HError(8721, "InitAffineShiftByMean: Wrong vector length"); +#ifdef CUDA + SyncNVectorDev2Host(meanVec); + SyncNVectorDev2Host(scaleVec); +#endif + /* convert mean */ + for (i = 0; i < vecLen; ++i) + meanVec->vecElems[i] = (-1.0) * meanVec->vecElems[i] * scaleVec->vecElems[i]; +#ifdef CUDA + SyncNVectorHost2Dev(meanVec); + SyncNVectorHost2Dev(scaleVec); +#endif +} + +/* cz277 - pact */ +void DoStaticUpdateOperation(int status, int drvIdx, LELink layerElem, int batLen) { + double nSamples; + size_t *cnt1, *cnt2; + + if (layerElem->trainInfo == NULL) + return; + if (layerElem->trainInfo->initFlag == FALSE) + return; + + switch (layerElem->actfunKind) { + case AFFINEAF: + if (layerElem->drvCtx[drvIdx] == 0) { + cnt1 = (size_t *) layerElem->actfunVecs[1]->accptr; + cnt2 = (size_t *) layerElem->actfunVecs[2]->accptr; + switch (status) { + case 0: + *cnt1 += batLen; + *cnt2 += batLen; + break; + case 1: + nSamples = *cnt2; + if (nSamples == 0) + HError(-8721, "DoStaticUpdateOperation: nSamples = 0, inf will generate"); + AccMeanNVector(layerElem->yFeaMats[drvIdx], batLen, layerElem->nodeNum, (NFloat) nSamples, layerElem->actfunVecs[2]->variables); + break; + case 2: + nSamples = *cnt1; + if (nSamples == 0) + HError(-8721, "DoStaticUpdateOperation: nSamples = 0, inf will generate"); + AccVarianceNVector(layerElem->yFeaMats[drvIdx], batLen, layerElem->nodeNum, (NFloat) nSamples, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[1]->variables); + break; + case 3: + nSamples = *cnt1; + if (nSamples > 0) { + InitAffineScaleByVar(layerElem->nodeNum, layerElem->actfunVecs[1]->variables); + *cnt1 = 0; + } + break; + case 4: + nSamples = *cnt2; + if (nSamples > 0) { + InitAffineShiftByMean(layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables); + *cnt2 = 0; + } + break; + default: + break; + } + } + break; + default: + break; + } +} + +/* cz277 - pact */ +/*void ForwardPropBlank(ANNSet *annSet, int batLen) { + int i, j, n; + AILink curAI; + ADLink annDef; + LELink layerElem; + + curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + for (j = 1; j <= n; ++j) { + DoStaticUpdateOperation(layerElem->status, j, layerElem, batLen); + } + } + curAI = curAI->next; + } +}*/ + +void ComputeForwardPropActivation(int batLen, LELink layerElem, int ctxIdx) { + NMatrix *yNMat; + + yNMat = layerElem->yFeaMats[ctxIdx]; + switch (layerElem->actfunKind) { + case AFFINEAF: + ApplyAffineAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case HERMITEAF: + ApplyHermiteAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case LINEARAF: + CopyNSegment(yNMat, 0, batLen * layerElem->nodeNum, yNMat, 0); + break; + case RELUAF: + ApplyReLUAct(yNMat, batLen, layerElem->nodeNum, 0.0, yNMat); + break; + case PRELUAF: + ApplyPReLUAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMRELUAF: + if (layerElem->trainInfo != NULL) + CopyNSegment(yNMat, 0, batLen * layerElem->nodeNum, layerElem->trainInfo->cacheMats[ctxIdx], 0); + ApplyParmReLUAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case SIGMOIDAF: + ApplySigmoidAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case LHUCSIGMOIDAF: + ApplyLHUCSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PSIGMOIDAF: + ApplyPSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMSIGMOIDAF: + if (layerElem->trainInfo != NULL) + CopyNSegment(yNMat, 0, batLen * layerElem->nodeNum, layerElem->trainInfo->cacheMats[ctxIdx], 0); + ApplyParmSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[3]->variables, yNMat); + break; + case SOFTRELUAF: + ApplySoftReLAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case SOFTMAXAF: + ApplySoftmaxAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case TANHAF: + ApplyTanHAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + default: + HError(8791, "ComputeActivationForwardPropBatch: Unknown activation function type"); + } +} + +void ForwardPropActivationOnlyLayer(int batLen, LELink layerElem) { + + HError(8701, "ForwardPropActivationOnlyLayer: Function not implemented"); + return; +} + +void ForwardPropConvolutionLayer(int batLen, LELink layerElem) { + + HError(8701, "ForwardPropConvolutionLayer: Function not implemented"); + return; +} + +void ForwardPropPerceptronLayer(int batLen, LELink layerElem) { + int i, n; + + if (layerElem->layerKind != PERCEPTRONLAK) + HError(8792, "ForwardPropPerceptronLayer: Function can only process a PERCEPTRON layer"); + + n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) { + /* y = b, B^T should be row major matrix, duplicate the bias vectors */ + DupNVector(layerElem->biasVec->variables, layerElem->yFeaMats[i], batLen); + /* y += w * b, X^T is row major, W^T is column major, Y^T = X^T * W^T + B^T */ + HNBlasTNgemm(layerElem->nodeNum, batLen, layerElem->inputDim, 1.0, layerElem->wghtMat->variables, layerElem->xFeaMats[i], 1.0, layerElem->yFeaMats[i]); + /* cz277 - pact */ + DoStaticUpdateOperation(layerElem->status, i, layerElem, batLen); + /* apply activation transformation */ + ComputeForwardPropActivation(batLen, layerElem, i); + } + + return; +} + +void ForwardPropSubsamplingLayer(int batLen, LELink layerElem) { + + HError(8701, "ForwardPropSubsamplingLayer: Function not implemented"); + return; +} + + +/* the batch with input features are assumed to be filled */ +void ForwardProp(ANNSet *annSet, int batLen, int *CMDVecPL) { + /*int i, j, n;*/ + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* update the batch index */ + ++batchIndex; + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + FillBatchFromFeaMix(layerElem, batLen); + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: ForwardPropActivationOnlyLayer(batLen, layerElem); break; + case CONVOLUTIONLAK: ForwardPropConvolutionLayer(batLen, layerElem); break; + case PERCEPTRONLAK: ForwardPropPerceptronLayer(batLen, layerElem); break; + case SUBSAMPLINGLAK: ForwardPropSubsamplingLayer(batLen, layerElem); break; + default: + HError(8791, "ForwardProp: Unknown layer kind"); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void AccGradProbeWeight(LayerElem *layerElem) { + int i, j, k, size; + NFloat *wghtMat; + +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->wghtMat->gradients); +#endif + wghtMat = layerElem->wghtMat->gradients->matElems; + /* weights */ + size = layerElem->nodeNum * layerElem->inputDim; + j = DVectorSize(layerElem->wghtGradInfoVec); + for (i = 0; i < size; ++i) { + if (wghtMat[i] > layerElem->maxWghtGrad) + layerElem->maxWghtGrad = wghtMat[i]; + if (wghtMat[i] < layerElem->minWghtGrad) + layerElem->minWghtGrad = wghtMat[i]; + layerElem->meanWghtGrad += wghtMat[i]; + k = wghtMat[i] / PROBERESOLUTE + j / 2; + layerElem->wghtGradInfoVec[k + 1] += 1; + } +} +#endif + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void AccGradProbeBias(LayerElem *layerElem) { + int i, j, k, size; + NFloat *biasVec; + +#ifdef CUDA + SyncNVectorDev2Host(layerElem->biasVec->gradients); +#endif + biasVec = layerElem->biasVec->gradients->vecElems; + /* biases */ + size = layerElem->nodeNum; + j = DVectorSize(layerElem->biasGradInfoVec); + for (i = 0; i < size; ++i) { + if (biasVec[i] > layerElem->maxBiasGrad) + layerElem->maxBiasGrad = biasVec[i]; + if (biasVec[i] < layerElem->minBiasGrad) + layerElem->minBiasGrad = biasVec[i]; + layerElem->meanBiasGrad += biasVec[i]; + k = biasVec[i] / PROBERESOLUTE + j / 2; + layerElem->biasGradInfoVec[k + 1] += 1; + } +} +#endif + + +/* function to compute the error signal for frame level criteria (for sequence level, do nothing) */ +/*void CalcOutLayerBackwardSignal(LELink layerElem, int batLen, ObjFunKind objfunKind, int ctxIdx) {*/ +void ComputeBackwardPropOutActivation(ObjFunKind objfunKind, int batLen, LELink layerElem, int ctxIdx) { + + if (layerElem->isFinalLayer == FALSE) + HError(8792, "ComputeBackwardPropInputSignal: Function only valid for output layers"); + if (ctxIdx != 1 || layerElem->drvCtx[ctxIdx] != 0) + HError(8701, "ComputeBackwardPropInputSignal: Out layer can only have single current frame now"); + + switch (objfunKind) { + case MMSEOF: + /* proceed for MMSE objective function */ + switch (layerElem->actfunKind) { + case LINEARAF: + SubNMatrix(layerElem->yFeaMats[ctxIdx], layerElem->trainInfo->labMat, batLen, layerElem->nodeNum, layerElem->yFeaMats[ctxIdx]); + break; + default: + HError(8701, "ComputeBackwardPropInputSignal: Unsupported output activation function for MMSE"); + } + break; + case XENTOF: + /* proceed for XENT objective function */ + switch (layerElem->actfunKind) { + case SOFTMAXAF: + SubNMatrix(layerElem->yFeaMats[ctxIdx], layerElem->trainInfo->labMat, batLen, layerElem->nodeNum, layerElem->yFeaMats[ctxIdx]); + break; + default: + HError(8701, "ComputeBackwardPropInputSignal: Unsupported output activation function for XENT"); + } + break; + case MLOF: + case MMIOF: + case MPEOF: + case MWEOF: + case SMBROF: + break; + default: + HError(8791, "ComputeBackwardPropInputSignal: Unknown objective function kind"); + } +} + +void ComputeBackwardPropHiddenActivation(int batLen, Boolean accFlag, LELink layerElem, int ctxIdx) { + NMatrix *yNMat, *dyNMat; + + yNMat = layerElem->yFeaMats[ctxIdx]; + dyNMat = layerElem->trainInfo->dyFeaMats[ctxIdx]; /* sum_k w_{k,j} * delta_k */ + switch (layerElem->actfunKind) { + case AFFINEAF: + ApplyTrAffineAct(dyNMat, yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, accFlag, layerElem->actfunVecs[1]->gradients, layerElem->actfunVecs[2]->gradients); + ApplyDAffineAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case HERMITEAF: + HError(8701, "ComputeBackwardPropHiddenActivation: HERMITE Not implemented yet"); + break; + case LINEARAF: + ApplyDLinearAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case RELUAF: + ApplyDReLUAct(yNMat, batLen, layerElem->nodeNum, 0.0, yNMat); + break; + case PRELUAF: + ApplyTrPReLUAct(dyNMat, yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, accFlag, layerElem->actfunVecs[1]->gradients); + ApplyDPReLUAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMRELUAF: + ApplyTrParmReLUAct(dyNMat, layerElem->trainInfo->cacheMats[ctxIdx], batLen, layerElem->nodeNum, accFlag, layerElem->actfunVecs[1]->gradients, layerElem->actfunVecs[2]->gradients); + ApplyDParmReLUAct(layerElem->trainInfo->cacheMats[ctxIdx], batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, yNMat); + break; + case SIGMOIDAF: + ApplyDSigmoidAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case LHUCSIGMOIDAF: + ApplyTrLHUCSigmoidAct(dyNMat, yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, accFlag, layerElem->actfunVecs[1]->gradients); + ApplyDLHUCSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PSIGMOIDAF: + ApplyTrPSigmoidAct(dyNMat, yNMat, layerElem->actfunVecs[1]->variables, batLen, layerElem->nodeNum, accFlag, layerElem->actfunVecs[1]->gradients); + ApplyDPSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, yNMat); + break; + case PARMSIGMOIDAF: + ApplyTrParmSigmoidAct(dyNMat, layerElem->trainInfo->cacheMats[ctxIdx], batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[3]->variables, accFlag, layerElem->actfunVecs[1]->gradients, layerElem->actfunVecs[2]->gradients, layerElem->actfunVecs[3]->gradients); + ApplyDParmSigmoidAct(yNMat, batLen, layerElem->nodeNum, layerElem->actfunVecs[1]->variables, layerElem->actfunVecs[2]->variables, layerElem->actfunVecs[3]->variables, yNMat); + break; + case SOFTRELUAF: + ApplyDSoftReLAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + case SOFTMAXAF: + HError(8701, "ComputeBackwardPropHiddenActivation: SOFTMAX as hidden activation function not implemented yet!"); + break; + case TANHAF: + ApplyDTanHAct(yNMat, batLen, layerElem->nodeNum, yNMat); + break; + default: + HError(8791, "ComputeBackwardPropHiddenActivation: Unsupported hidden activation function kind"); + } +} + + +/* attention: these two operations are gonna to change dyFeaMat elements to their square */ +void ComputeBackwardPropSumSquaredGradients(int batLen, LELink layerElem, NMatrix *dyFeaMat) { + int i, n; + + n = IntVecSize(layerElem->drvCtx); + for (i = 1; i <= n; ++i) { + SquaredNMatrix(layerElem->xFeaMats[i], batLen, layerElem->inputDim, GetTmpNMat()); + SquaredNMatrix(dyFeaMat, batLen, layerElem->nodeNum, dyFeaMat); + if (layerElem->wghtMat->updateflag == TRUE) + HNBlasNTgemm(layerElem->inputDim, layerElem->nodeNum, batLen, 1.0, GetTmpNMat(), dyFeaMat, 1.0, layerElem->wghtMat->sumsquaredgrad); + if (layerElem->biasVec->updateflag == TRUE) + SumNMatrixByCol(dyFeaMat, batLen, layerElem->nodeNum, TRUE, layerElem->biasVec->sumsquaredgrad); + } +} + +void BackwardPropActivationOnlyLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + + HError(8701, "BackwardPropActivationOnlyLayer: Function not implemented yet!"); + return; +} + +void BackwardPropConvolutionLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + + HError(8701, "BackwardPropConvolutionLayer: Function not implemented yet!"); + return; +} + +void BackwardPropPerceptronLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + int i, n; + Boolean acc; + NMatrix *dyNMat; + + n = IntVecSize(layerElem->drvCtx); + for (i = 1, acc = accFlag; i <= n; ++i, acc = TRUE) { + if (layerElem->isFinalLayer) { + /* delta_k */ + dyNMat = layerElem->yFeaMats[i]; + ComputeBackwardPropOutActivation(objfunKind, batLen, layerElem, i); + } + else { + /* sum_k w_{k,j} * delta_k */ + dyNMat = layerElem->trainInfo->dyFeaMats[i]; + ComputeBackwardPropHiddenActivation(batLen, acc, layerElem, i); + /* times sigma_k (dyFeaMat, from the next layer) */ + /* dyFeaMat: sum_k w_{k,j} * delta_k -> delta_j */ + /* delta_j = h'(a_j) * (sum_k w_{k,j} * delta_k) */ + MulNMatrix(layerElem->yFeaMats[i], dyNMat, batLen, layerElem->nodeNum, dyNMat); + } + /* Y^T is row major, W^T is column major, X^T = Y^T * W^T */ + /* sum_k w_{k,j} * delta_k */ + HNBlasNNgemm(layerElem->inputDim, batLen, layerElem->nodeNum, 1.0, layerElem->wghtMat->variables, dyNMat, 0.0, layerElem->trainInfo->dxFeaMats[i]); + /* compute and accumulate the updates */ + /* {layerElem->xFeaMat[n_frames * inputDim]}^T * dyFeaMat[n_frames * nodeNum] = deltaWeights[inputDim * nodeNum] */ + if (layerElem->wghtMat->updateflag == TRUE) { + HNBlasNTgemm(layerElem->inputDim, layerElem->nodeNum, batLen, 1.0, layerElem->xFeaMats[i], dyNMat, acc, layerElem->wghtMat->gradients); +#ifdef GRADPROBE + AccGradProbeWeight(layerElem); +#endif + } + /* graidents for biases */ + if (layerElem->biasVec->updateflag == TRUE) { + SumNMatrixByCol(dyNMat, batLen, layerElem->nodeNum, acc, layerElem->biasVec->gradients); +#ifdef GRADPROBE + AccGradProbeBias(layerElem); +#endif + } + /* cz277 - ssginfo*/ + if (layerElem->wghtMat->sumsquaredgrad != NULL && layerElem->biasVec->sumsquaredgrad != NULL) + ComputeBackwardPropSumSquaredGradients(batLen, layerElem, dyNMat); + } + + return; +} + +void BackwardPropSubsamplingLayer(ObjFunKind objfunKind, int batLen, Boolean accFlag, LELink layerElem) { + + HError(8701, "BackwardPropSubsamplingLayer: Function not implemented yet!"); + return; +} + + +/* delta_j = h'(a_j) * sum_k [w_k,j * delta_k] */ +/* dtl_j = sum_k [w_k,j * dtl_k * h'(a_k)] */ +/* dtl_j = delta_j / h'(a_j) */ +/* backward propagation algorithm */ +void BackwardProp(ObjFunKind objfunKind, ANNSet *annSet, int batLen, Boolean accFlag) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* init the ANNInfo pointer */ + curAI = annSet->defsTail; + /* proceed in the backward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = annDef->layerNum - 1; i >= 0; --i) { + /* get current LayerElem */ + layerElem = annDef->layerList[i]; + FillBatchFromErrMix(layerElem, batLen); /* cz277 - many */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: BackwardPropActivationOnlyLayer(objfunKind, batLen, accFlag, layerElem); break; + case CONVOLUTIONLAK: BackwardPropConvolutionLayer(objfunKind, batLen, accFlag, layerElem); break; + case PERCEPTRONLAK: BackwardPropPerceptronLayer(objfunKind, batLen, accFlag, layerElem); break; + case SUBSAMPLINGLAK: BackwardPropSubsamplingLayer(objfunKind, batLen, accFlag, layerElem); break; + default: + HError(8791, "BackwardProp: Unknown layer kind"); + } + } + /* get the previous ANNDef */ + curAI = curAI->prev; + } +} + +void ResetAllBundleProcessedFields(char *invoker, ANNSet *annSet) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* reset all processed fields to FALSE */ + curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "%s: Function not implemented", invoker); break; + case CONVOLUTIONLAK: HError(8701, "%s: Function not implemented", invoker); break; + case PERCEPTRONLAK: + layerElem->wghtMat->processed = FALSE; + layerElem->biasVec->processed = FALSE; + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->processed = FALSE; + break; + case SUBSAMPLINGLAK: HError(8701, "%s: Function not implemented", invoker); break; + default: + HError(8791, "%s: Unknown layer kind", invoker); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + +static void NormNVecBundleGradient(NVecBundle *bundle, float scale) { + BTLink curLink; + LELink layerElem; + int drvCnt = 0; + + if (bundle->kind != SIBK) + HError(8792, "NormNVecBundleGradient: Only SIBK bundle is allowed"); + if (bundle->hook == NULL) + HError(8793, "NormNVecBundleGradient: SI bundle should have the trace field set"); + /*if (bundle->batchIndex != batchIndex && bundle->batchIndex != batchIndex + 1) + HError(9999, "NormNVecBundleGradient: Wrong bundle batch index");*/ + if (scale == 0.0) + HError(8793, "NormNVecBundleGradient: Input scaling factor can not be 0, try 1.0"); + if (bundle->processed == TRUE) + return; + bundle->processed = TRUE; + + curLink = (BTLink) bundle->hook; + while (curLink != NULL) { + layerElem = curLink->layerElem; + if (layerElem->trainInfo == NULL) + HError(8700, "NormNVecBundleGradient: All trainInfo should be initialised"); + drvCnt += layerElem->trainInfo->tDrvCnt; + curLink = curLink->nextTrace; + } + if (scale * drvCnt != 1.0) + ScaleNVector(1.0 / (scale * drvCnt), bundle->gradients->vecLen, bundle->gradients); + /* cz277 - ssgInfo */ + +} + +static void NormNMatBundleGradient(NMatBundle *bundle, float scale) { + BTLink curLink; + LELink layerElem; + int drvCnt = 0; + + if (bundle->kind != SIBK) + HError(8792, "NormNMatBundleGradient: Only SIBK bundle is allowed"); + if (bundle->hook == NULL) + HError(8793, "NormNMatBundleGradient: SI bundle should have the trace field set"); + if (scale == 0.0) + HError(8793, "NormNMatBundleGradient: Input scaling factor can not be 0, try 1.0"); + if (bundle->processed == TRUE) + return; + bundle->processed = TRUE; + + curLink = (BTLink) bundle->hook; + while (curLink != NULL) { + layerElem = curLink->layerElem; + if (layerElem->trainInfo == NULL) + HError(8700, "NormNMatBundleGradient: All trainInfo should be initialised"); + drvCnt += layerElem->trainInfo->tDrvCnt; + curLink = curLink->nextTrace; + } + if (scale * drvCnt != 1.0) + ScaleNMatrix(1.0 / (scale * drvCnt), bundle->gradients->rowNum, bundle->gradients->colNum, bundle->gradients); + /* cz277 - ssgInfo */ + +} + +/* the batch with input features are assumed to be filled */ +void NormBackwardPropGradients(ANNSet *annSet, float scale) { + int i, j; + AILink curAI; + ADLink annDef; + LELink layerElem; + + /* reset all processed fields to FALSE */ + ResetAllBundleProcessedFields("NormBackwardPropGradients", annSet); + + /* init the ANNInfo pointer */ + curAI = annSet->defsHead; + /* proceed in the forward fashion */ + while (curAI != NULL) { + /* fetch current ANNDef */ + annDef = curAI->annDef; + /* proceed layer by layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(8701, "NormBackwardPropGradients: Function not implemented"); break; + case CONVOLUTIONLAK: HError(8701, "NormBackwardPropGradients: Function not implemented"); break; + case PERCEPTRONLAK: + NormNMatBundleGradient(layerElem->wghtMat, scale); + NormNVecBundleGradient(layerElem->biasVec, scale); + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + NormNVecBundleGradient(layerElem->actfunVecs[j], scale); + break; + case SUBSAMPLINGLAK: HError(8701, "NormBackwardPropGradients: Function not implemented"); break; + default: + HError(8791, "NormBackwardPropGradients: Unknown layer kind"); + } + } + /* get the next ANNDef */ + curAI = curAI->next; + } +} + +/* randomise an ANN layer */ +void RandANNLayer(LELink layerElem, int seed, float scale) { + float r; + + switch (layerElem->actfunKind) { + case AFFINEAF: + case LINEARAF: + case RELUAF: + case PRELUAF: + case PARMRELUAF: + case SOFTRELUAF: + r = 16.0 / ((float) (layerElem->nodeNum + layerElem->inputDim)); + /* 0.004 for a (2000, 2000) layer; r = 0.001 for a (12000, 2000) layer */ + r *= scale; + RandInit(seed); + RandNSegmentUniform(-1.0 * r, r, layerElem->nodeNum * layerElem->inputDim, layerElem->wghtMat->variables->matElems); + break; + /*r = sqrt(2.0 / ((1.0 + pow(PLRELUNEGSCALE, 2.0)) * layerElem->nodeNum)); + RandNSegmentGaussian(0.0, r, layerElem->wghtMat->rowNum * layerElem->wghtMat->colNum, layerElem->wghtMat->matElems);*/ + default: + r = 4 * sqrt(6.0 / (float) (layerElem->nodeNum + layerElem->inputDim)); + r *= scale; + RandInit(seed); + RandNSegmentUniform(-1.0 * r, r, layerElem->nodeNum * layerElem->inputDim, layerElem->wghtMat->variables->matElems); + /* r = 0.22 for a (1000, 1000) layer; r = 0.083 for a (12000, 2000) layer */ + break; + } + + /*if (layerElem->actfunKind == RELAF || layerElem->actfunKind == SOFTRELAF) { + RandMaskNSegment(0.25, 0.0, layerElem->wghtMat->rowNum * layerElem->wghtMat->colNum, layerElem->wghtMat->matElems); + }*/ + + ClearNVector(layerElem->biasVec->variables); + /* TODO: if HERMITEAF */ +#ifdef CUDA + SyncNMatrixHost2Dev(layerElem->wghtMat->variables); + SyncNVectorDev2Host(layerElem->biasVec->variables); +#endif + +} + +/* generate a new ANN layer and randomise it */ +/*LELink GenNewPerceptronLayer(HMMSet *hset, int nodeNum, int inputDim, char *wghtName, char *biasName) { + LELink layerElem; + + layerElem = GenBlankLayer(hset->heap); + layerElem->nodeNum = nodeNum; + layerElem->inputDim = inputDim; + layerElem->wghtMat = FetchNMatBundle(hset, wghtName); + if (layerElem->wghtMat->variables == NULL) { + layerElem->wghtMat->variables = CreateNMatrix(heap, nodeNum, inputDim); + layerElem->wghtMat->kind = SIBK; + } + else { + if (layerElem->wghtMat->variables->rowNum != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix row"); + if (layerElem->wghtMat->variables->colNum != inputDim) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix column"); + } + CreateBundleTrace(heap, layerElem, &layerElem->wghtMat->hook); + layerElem->biasVec = FetchNVecBundle(hset, biasName); + if (layerElem->biasVec->variables == NULL) { + layerElem->biasVec->variables = CreateNVector(heap, nodeNum); + layerElem->biasVec->kind = SIBK; + } + else if (layerElem->biasVec->variables->vecLen != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong bias vector length"); + CreateBundleTrace(heap, layerElem, &layerElem->biasVec->hook); + + return layerElem; +}*/ + +/*void SetFeaMixBatchIdxes(ANNSet *annSet, int newIdx) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + NMatrix *dyFeaMat; + + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + if (layerElem->feaMix->batIdx == 0) { + layerElem->feaMix->batIdx = newIdx; + } + } + curAI = curAI->next; + } +}*/ + +/* cz277 - max norm2 */ +Boolean IsLinearInvariant(ActFunKind actfunKind) { + switch (actfunKind) { + case LINEARAF: + case RELUAF: + return TRUE; + default: + return FALSE; + } +} + +/* cz277 - pact */ +Boolean CacheActMatrixOrNot(ActFunKind actfunKind) { + switch (actfunKind) { + case PARMRELUAF: + case PARMSIGMOIDAF: + return TRUE; + default: + return FALSE; + } +} + +/* cz277 - 150824 */ +void CreateBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head) { + BTLink *trace; + + /* create a node at the end of the tracing list */ + trace = head; + while (*trace != NULL) + trace = &(*trace)->nextTrace; + /* allocate a new BundleTrace */ + *trace = (BTLink) New(heap, sizeof(BundleTrace)); + memset(*trace, 0, sizeof(BundleTrace)); + (*trace)->layerElem = layerElem; +} + +void CancelBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head) { + BTLink *trace, *prev = NULL; + + trace = head; + while (*trace != NULL && (*trace)->layerElem != layerElem) { + prev = trace; + trace = &(*trace)->nextTrace; + } + if (*trace == NULL) + HError(8700, "CancelBundleTrace: Fail to get the target layer from the trace list"); + if (prev == NULL) + *head = (*trace)->nextTrace; + else + (*prev)->nextTrace = (*trace)->nextTrace; + if (heap->type != MSTAK) + Dispose(heap, *trace); +} + +/* ------------------------- End of HANNet.c ------------------------- */ + diff --git a/HTKLib/HANNet.h b/HTKLib/HANNet.h new file mode 100755 index 0000000..cb498b9 --- /dev/null +++ b/HTKLib/HANNet.h @@ -0,0 +1,361 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HANNet.h ANN model definition data type */ +/* ----------------------------------------------------------- */ + +/* !HVER!HANNet: 3.5.0 [CUED 12/10/15] */ + + +#ifndef _HANNET_H_ +#define _HANNET_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "HMem.h" + +/* ------------------------- Trace Flags ------------------------- */ + +/* + The following types define the in-memory representation of a ANN +*/ + +/* ------------------------- Predefined Types ------------------------- */ + +#define MAPTARGETPREF "_MAPPED" /* the prefix to convert the mapped target */ +/* cz277 - 1007 */ +#define MAXFEAMIXOWNER 20 /* the maximum number of layers or hset streams that could own a feature mixture */ + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +#define PROBERESOLUTE 50 +#define PROBEBOUNDARY 1000 +#endif + +#define AUTOMACRONAMEPREFIX "AUTOMACRONAME_" + +/* ------------------------- ANN Definition ------------------------- */ + +enum _InputKind {INPFEAIK, ANNFEAIK, ERRFEAIK, AUGFEAIK}; /* cz277 - aug */ +typedef enum _InputKind InputKind; + +enum _ActFunKind {AFFINEAF, HERMITEAF, LINEARAF, RELUAF, LHUCRELUAF, PRELUAF, PARMRELUAF, SIGMOIDAF, LHUCSIGMOIDAF, PSIGMOIDAF, PARMSIGMOIDAF, SOFTRELUAF, LHUCSOFTRELUAF, PSOFTRELUAF, PARMSOFTRELUAF, SOFTMAXAF, TANHAF}; +typedef enum _ActFunKind ActFunKind; + +enum _LayerKind {ACTIVATIONONLYLAK, CONVOLUTIONLAK, PERCEPTRONLAK, SUBSAMPLINGLAK}; +typedef enum _LayerKind LayerKind; + +enum _ObjFunKind {UNKOF = 0, MLOF = 1, MMIOF = 2, MMSEOF = 4, MPEOF = 8, MWEOF = 16, SMBROF = 32, XENTOF = 64}; +typedef enum _ObjFunKind ObjFunKind; + +/*enum _ANNUpdtKind {WEIGHTUK = 1, BIASUK = 2, ACTFUNUK = 4};*/ /* cz277 - 150811 */ +/*typedef enum _ANNUpdtKind ANNUpdtKind;*/ + +enum _BundleKind {SDBK, SIBK}; +typedef enum _BundleKind BundleKind; + + +typedef struct _LayerElem *LELink; +typedef struct _FeaElem *FELink; +typedef struct _ANNDef *ADLink; +typedef struct _ANNInfo *AILink; +typedef struct _LayerInfo *LILink; +typedef struct _RPLInfo *RILink; +typedef struct _BundleTrace *BTLink; + +/* cz277 - 150811 */ +typedef struct _BundleTrace { + LELink layerElem; + size_t x; + size_t y; + BTLink nextTrace; +} BundleTrace; + +/* cz277 - 150811 */ +typedef struct _NVecBundle { + LabId id; + BundleKind kind; + NVector *variables; + NVector *gradients; + NVector *updates; + NVector *neglearnrates; + NVector *sumsquaredgrad; + int batchIndex; + Boolean processed; + Boolean updateflag; /* cz277 - 151020 */ + size_t accum; + size_t *accptr; + int nUse; + Ptr hook; +} NVecBundle; + +/* cz277 - 150811 */ +typedef struct _NMatBundle { + LabId id; + BundleKind kind; + NMatrix *variables; + NMatrix *gradients; + NMatrix *updates; + NMatrix *neglearnrates; + NMatrix *sumsquaredgrad; + int batchIndex; + Boolean processed; + Boolean updateflag; /* cz277 - 151020 */ + size_t accum; + size_t *accptr; + int nUse; + Ptr hook; +} NMatBundle; + +/* cz277 - xform */ +typedef struct _RPLInfo { + int nSpkr; + char *inRPLMask; + char curOutSpkr[MAXSTRLEN]; + char curInSpkr[MAXSTRLEN]; + char cacheInSpkr[MAXSTRLEN]; + char *inRPLDir; + char *inRPLExt; + char *outRPLDir; + char *outRPLExt; + /*char *macroName;*/ + Boolean saveBinary; + LabId id; + union { + NMatBundle *curNMat; + NVecBundle *curNVec; + }; + union { + NMatBundle savNMat; + NVecBundle savNVec; + }; + RILink nextInfo; +} RPLInfo; + +typedef struct _FeaElem { + int feaDim; /* the dimension of this kind of feature (without context expansion) */ + int extDim; /* the dimension of this kind of feature (with context expansion and transforms) */ + IntVec ctxMap; /* the array contains the offset to current for context expansion */ + InputKind inputKind; /* the kind of the feature */ + LELink feaSrc; /* the layer pointer to the source of current feature element */ + NMatrix **feaMats; /* cz277 - many */ + int dimOff; /* the offset of the start dimension in feaMat of this FeaElem; useful for backprop */ + int srcDim; /* the dimension of the feature in feaMat */ + int augFeaIdx; /* the index of this (if it was) augmented feature index; default: 0 */ + int streamIdx; /* the index of the associated stream; default: 0 */ + char mName[MAXSTRLEN]; /* the ANN feature source macro name */ + char mType; /* the ANN feature source macro type */ + Boolean doBackProp; /* cz277 - semi */ + int hisLen; /* the length of the history */ + NMatrix *hisMat; /* the matrix for ANN feature history */ + int nUse; /* the usage counter */ + IntVec ctxPool; /* cz277 - many */ /* tells what each feaMat is associated with (only valid for INPFEAIK) */ +} FeaElem; + +typedef struct _FeaMix { + /* cz277 - 1007 */ + int batchIndex; /* the number of batches been processed */ + int ownerNum; /* the number of owners of this feature mixture */ + LELink ownerList[MAXFEAMIXOWNER]; /* the layers which employs this feature mxiture */ + int elemNum; /* number of different feature components */ + int mixDim; /* the total dimension of the input (a mixture of different features) */ + FELink *feaList; /* the feature information structure */ + NMatrix **mixMats; /* cz277 - many */ + IntVec ctxPool; /* cz277 - many */ + int nUse; /* usage counter */ +} FeaMix; + + +typedef struct _TrainInfo { + NMatrix *labMat; /* the batches for the output targets for all streams */ + NMatrix **dxFeaMats; /* cz277 - many */ /* de/dx */ + NMatrix **dyFeaMats; /* cz277 - many */ /* de/dy */ + NMatrix **cacheMats; /* cz277 - 150811 */ + IntVec drvCnt; /* cz277 - many */ + int tDrvCnt; /* cz277 - many */ + /*ANNUpdtKind updateFlag;*/ /* whether update this layer or not */ + /*long actfunUpdateFlag;*/ /* cz277 - 150811 */ + Boolean initFlag; /* cz277 - 150811 */ +} TrainInfo; + +typedef struct _ANNInfo { + AILink next; /* pointer to the next item of the chain */ + AILink prev; /* pointer to the previous item of the chain */ + ADLink annDef; /* one owner of this layer */ + int index; /* for LayerElem, the index of this layer in that owner ANNDef */ + int fidx; /* the file index of the associated ANNDef */ +} ANNInfo; /* for ANNSet, the index of this of this ANNDef in that ANNSet */ + +typedef struct _LayerElem { + int ownerCnt; /* the number of owners in the owner chain */ + ANNInfo *ownerHead; /* the head of the chain contains all owners */ + ANNInfo *ownerTail; /* the tail of the chain contains all owners */ + /*ActFunInfo actfunInfo;*/ /* cz277 - pact */ + FeaMix *feaMix; /* a list of different features for forward propagation */ + FeaMix *errMix; /* a list of different error signals for back propagation */ + int inputDim; /* the number of inputs to each node in current layer (column number of wgthMat) */ + int nodeNum; /* the number of nodes in current layer (row number of wghtMat) */ + NMatBundle *wghtMat; /* the weight matrix of current layer (a transposed matrix) */ + NVecBundle *biasVec; /* the bias vector of current layer */ + ActFunKind actfunKind; + int actfunParmNum; + NVecBundle **actfunVecs; + NMatrix **xFeaMats; /* cz277 - many */ /* the feature batch for the input signal, could point to another yFeaMat in a different LayerElem */ + NMatrix **yFeaMats; /* cz277 - many */ /* the feature batch for the output signal */ + TrainInfo *trainInfo; /* the structure for training info, could be NULL (if not training) */ + LayerKind layerKind; /* the type of current layer */ + Boolean isFinalLayer; /* cz277 - 150811 */ + int nUse; /* usage counter */ + int nDrv; /* feature derived counter */ + IntVec drvCtx; /* cz277 - many */ + int status; /* cz277 - many */ + /* cz277 - gradprobe */ +#ifdef GRADPROBE + DVector wghtGradInfoVec; + DVector biasGradInfoVec; + NFloat maxWghtGrad; + NFloat minWghtGrad; + NFloat meanWghtGrad; + NFloat maxBiasGrad; + NFloat minBiasGrad; + NFloat meanBiasGrad; +#endif +} LayerElem; + +typedef struct _ANNDef { + int layerNum; /* the number of layers */ + LELink *layerList; /* a list of layers */ + int targetNum; /* number of targets in this ANN */ + char *annDefId; /* identifier for the ANNDef */ + int nUse; /* usage counter */ + int nDrv; +} ANNDef; + +typedef struct _TargetMap { + char *name; /* the input name of this target */ + char *mappedName; /* the modified name of this mapped target (with MAPTARGETPREF) */ + int index; /* the index of this mapped target, in MappedList, maxResults, and sumResults */ + IntVec maxResults; /* mapped confusion list */ + IntVec sumResults; /* summed confusion list */ + int sampNum; /* the total number of samples */ + float mappedTargetPen[SMAX];/* the penalty of the mapped target */ +} TargetMap; + +typedef struct _TargetMapStruct { + TargetMap *targetMapList; /* used to convert the index of a mapped target to its structure */ + int mappedTargetNum; /* the total number of mapped targets */ + IntVec mapVectors[SMAX]; /* the mapping vectors for target map */ + NMatrix *maskMatMapSum[SMAX]; /* the mat matrix generated by extending mapVec to get outMatMapSum*/ + NMatrix *labMatMapSum[SMAX]; + NMatrix *outMatMapSum[SMAX];/* the mapping matrix for the yFeaMat of the output layers */ + NMatrix *llhMatMapSum[SMAX];/* the mapping matrix with llh values */ + NVector *penVecMapSum[SMAX]; +} TargetMapStruct; + +typedef struct _ANNSet { + int annNum; /* an ANN is a mixture of a set of sub ANNs */ + AILink defsHead; /* the head of the chain contains all sub ANNs (ANNDefs) */ + AILink defsTail; /* the tail of the chain contains all sub ANNs (ANNDefs) */ + LELink outLayers[SMAX]; /* pointers to the output layer in each stream */ + TargetMapStruct *mapStruct; /* the structure for target mapping */ + NMatrix *llhMat[SMAX]; /* the llr matrix of the yFeaMat of the output layers */ + NVector *penVec[SMAX]; +} ANNSet; + + +/* ------------------------ Global Settings ------------------------- */ + +int GetNBatchSamples(void); +void SetNBatchSamples(int userBatchSamples); +void InitANNet(void); +int GetGlobalBatchIndex(void); +void SetGlobalBatchIndex(int index); + +void UpdateOutMatMapSum(ANNSet *annSet, int batLen, int streamIdx); +void UpdateLabMatMapSum(ANNSet *annSet, int batLen, int streamIdx); +void ForwardProp(ANNSet *annSet, int batLen, int *CMDVecPL); +void ComputeBackwardPropOutActivation(ObjFunKind objfunKind, int batLen, LELink layerElem, int ctxIdx); +void BackwardProp(ObjFunKind objfunKind, ANNSet *annSet, int batLen, Boolean accFlag); + +void RandANNLayer(LELink layerElem, int seed, float scale); +/*void SetFeaMixBatchIdxes(ANNSet *annSet, int newIdx);*/ + +/* cz277 - max norm2 */ +Boolean IsLinearInvariant(ActFunKind actfunKind); + + +/* cz277 - pact */ +Boolean CacheActMatrixOrNot(ActFunKind actfunKind); + +char *GetANNUpdateFlagStr(void); +/*char *GetLayerUpdateFlagStr(void); +char *GetActFunUpdateFlagStr(void);*/ +char *GetNMatUpdateFlagStr(void); +char *GetNVecUpdateFlagStr(void); + +char *GetMaskStrNMatRPLInfo(void); +char *GetInDirStrNMatRPLInfo(void); +char *GetExtStrNMatRPLInfo(void); +char *GetOutDirStrNMatRPLInfo(void); +char *GetMaskStrNVecRPLInfo(void); +char *GetInDirStrNVecRPLInfo(void); +char *GetExtStrNVecRPLInfo(void); +char *GetOutDirStrNVecRPLInfo(void); +RILink GetHeadNMatRPLInfo(void); +RILink GetHeadNVecRPLInfo(void); +void SetHeadNMatRPLInfo(RILink info); +void SetHeadNVecRPLInfo(RILink info); +int GetNumNMatRPLInfo(void); +int GetNumNVecRPLInfo(void); +void SetNumNMatRPLInfo(int n); +void SetNumNVecRPLInfo(int n); + +/* cz277 - 150824 */ +void ResetAllBundleProcessedFields(char *invoker, ANNSet *annSet); +void CheckANNBatchIndex(ANNSet *annSet, int index); +void NormBackwardPropGradients(ANNSet *annSet, float scale); +/* cz277 - batch sync */ +void SetNBundleBatchIndex(ANNSet *annSet, int index); +void SetFeaMixBatchIndex(ANNSet *annSet, int index); + +void CreateBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head); +void CancelBundleTrace(MemHeap *heap, LELink layerElem, BTLink *head); + + +#ifdef __cplusplus +} +#endif + +#endif /* _HANNET_H_ */ + +/* ------------------------- End of HANNet.h ------------------------- */ diff --git a/HTKLib/HAdapt.c b/HTKLib/HAdapt.c old mode 100644 new mode 100755 index a95593c..9f19b60 --- a/HTKLib/HAdapt.c +++ b/HTKLib/HAdapt.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* author: */ +/* M.J.F. Gales */ /* */ -/* 2003 M.J.F. Gales and */ -/* Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2003-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAdapt.c Adaptation Library module */ +/* File: HAdapt.c Adaptation library module */ /* ----------------------------------------------------------- */ -char *hadapt_version = "!HVER!HAdapt: 3.4.1 [CUED 12/03/09]"; -char *hadapt_vc_id = "$Id: HAdapt.c,v 1.2 2006/12/07 11:09:07 mjfg Exp $"; +char *hadapt_version = "!HVER!HAdapt: 3.5.0 [CUED 12/10/15]"; +char *hadapt_vc_id = "$Id: HAdapt.c,v 1.3 2015/10/12 12:07:24 cz277 Exp $"; #include /* Standard C Libraries */ @@ -46,11 +49,16 @@ char *hadapt_vc_id = "$Id: HAdapt.c,v 1.2 2006/12/07 11:09:07 mjfg Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" /* cz277 - ANN */ #include "HModel.h" #include "HTrain.h" #include "HUtil.h" #include "HAdapt.h" #include "HFB.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HNCache.h" /* cz277 - ANN */ /* trace flags */ #define T_TOP 00001 /* Top level tracing */ @@ -323,7 +331,9 @@ static IntVec ParseConfIntVec(MemHeap *x, char *inbuf) } /* EXPORT->InitAdapt: initialise configuration parameters */ -void InitAdapt (XFInfo *xfinfo) +/*void InitAdapt (XFInfo *xfinfo) */ +/* cz277 - xform */ +void InitAdapt() { int i; Boolean b; @@ -408,8 +418,9 @@ void InitAdapt (XFInfo *xfinfo) cmllrAdaptKind = Str2AdaptKind(buf); } + /* cz277 - xform */ /* Initialise the XFInfo values */ - xfinfo->outSpkrPat = "*.%%%"; + /*xfinfo->outSpkrPat = "*.%%%"; xfinfo->inSpkrPat = NULL; xfinfo->paSpkrPat = NULL; xfinfo->outXFormExt = NULL; @@ -426,10 +437,39 @@ void InitAdapt (XFInfo *xfinfo) xfinfo->paXForm = NULL; xfinfo->al_hset = NULL; xfinfo->alXFormExt = NULL; - xfinfo->alXFormDir = NULL; + xfinfo->alXFormDir = NULL;*/ + CheckAdaptOptions(); } +/* cz277 - xform */ +void InitXFInfo(XFInfo *xfinfo) { + xfinfo->nSpkr = 0; + xfinfo->curOutSpkr = NULL; + xfinfo->curInSpkr = NULL; + xfinfo->curPaSpkr = NULL; + + /* Initialise the XFInfo values */ + xfinfo->outSpkrPat = "*.%%%"; + xfinfo->inSpkrPat = NULL; + xfinfo->paSpkrPat = NULL; + xfinfo->outXFormExt = NULL; + xfinfo->inXFormExt = NULL; + xfinfo->paXFormExt = NULL; + xfinfo->outXFormDir = NULL; + xfinfo->paXFormDir = NULL; + xfinfo->useOutXForm = FALSE; + xfinfo->useInXForm = FALSE; + xfinfo->usePaXForm = FALSE; + xfinfo->xformTMF = NULL; + xfinfo->inXForm = NULL; + xfinfo->outXForm = NULL; + xfinfo->paXForm = NULL; + xfinfo->al_hset = NULL; + xfinfo->alXFormExt = NULL; + xfinfo->alXFormDir = NULL; +} + /* Additional code to parse configs to for appropriate thresholds */ static float GetSplitThresh(AdaptXForm *xform) @@ -992,7 +1032,6 @@ static void CreateBaseTriMat(MemHeap *x, MixPDF *mp, AdaptXForm *xform, int clas regAcc->obsVec = CreateVector(x,vsize); ZeroVector(regAcc->obsVec); regAcc->bDiagMat = CreateBlockTriMat(x,blockSize); - ZeroBlockTriMat(regAcc->bDiagMat); tm = (TriMat *)New(x,sizeof(TriMat)*(vsize+1)); vsp = (int *)tm; *vsp = vsize; for (b=1,cntj=1;b<=IntVecSize(blockSize);b++) { @@ -1032,13 +1071,14 @@ void UpdateAccCache(double Lr, Vector svec, MixPDF *mp) TriMat m; int vsize = VectorSize(svec); Vector covar; - int i, j, bl, bstart, nblock, bsize; + int i, j, bl, bstart, bsize; + unsigned long int nblock; paac = GetPAAccCache(mp); if ( paac != NULL ) { /* This needs to be altered so that it does not rely on a non-zero first element */ if ( paac->bTriMat[1][1][1] == 0 ) { - nblock = (int)(paac->bTriMat[0]); + nblock = (unsigned long int)(paac->bTriMat[0]); for (bl=1,bstart=0;bl<=nblock;bl++) { m = paac->bTriMat[bl]; bsize = TriMatSize(m); @@ -1061,7 +1101,8 @@ void UpdateAccCache(double Lr, Vector svec, MixPDF *mp) void UpdateBaseAccs(Vector svec) { - int i,j,b,k, bsize, nblock, bl; + int i,j,b,k, bsize, bl; + unsigned long int nblock; int cnt, cnti, cntj; TriMat tm, m; RegAcc *ra; @@ -1076,7 +1117,7 @@ void UpdateBaseAccs(Vector svec) ra = GetRegAcc(mp); if ((ra->bTriMat != NULL) && (ra->bVector[1]>0)) { acc = ra->bVector; - nblock = (int)(ra->bDiagMat[0]); + nblock = (unsigned long int)(ra->bDiagMat[0]); /* generate the outer-product */ /* moved to here for speed with large numbers of baseclasses */ @@ -1114,7 +1155,8 @@ void UpdateBaseAccs(Vector svec) void UpdateBaseAccsWithPaac(void) { - int i,j,k, b, bsize, nblock, bl; + int i,j,k, b, bsize, bl; + unsigned long int nblock; int cnti; TriMat tm, m; RegAcc *ra; @@ -1133,7 +1175,7 @@ void UpdateBaseAccsWithPaac(void) for (paac = headac; paac!= NULL; paac=paac->next) { if ( (paac->baseclass == b)&& (paac->bVector[1]>0) ){ acc = paac->bVector; - nblock = (int)(ra->bDiagMat[0]); + nblock = (unsigned long int)(ra->bDiagMat[0]); for (bl=1,cnti=1;bl<=nblock;bl++) { m = paac->bTriMat[bl]; bsize = TriMatSize(m); @@ -1378,7 +1420,6 @@ static AccStruct *CreateAccStruct(MemHeap *x, AdaptXForm *xform, static void SetSemiTiedAvCov(HMMSet *hset) { HMMScanState hss; - StateInfo *si ; StreamElem *ste; MixPDF *mp; STriMat inv; @@ -1410,7 +1451,6 @@ static void SetSemiTiedAvCov(HMMSet *hset) NewHMMScan(hset,&hss); occAcc = 0.0; while(GoNextState(&hss,FALSE)) { - si = hss.si; while (GoNextStream(&hss,TRUE)) { s = hss.s; if (strmProj) vsize = hset->vecSize; @@ -1547,7 +1587,7 @@ static float SetNodeOcc(RegNode *node, BaseClass *bclass) static Boolean ParseNode(RegNode *node, AdaptXForm *xform, RegTree *rtree, IntVec classes) { - int b,c,size; + int b,c; Boolean genXForm; IntVec lclasses; @@ -1556,7 +1596,6 @@ static Boolean ParseNode(RegNode *node, AdaptXForm *xform, genXForm = FALSE; if (trace&T_TRE) printf("Node %d (%f)\n",node->nodeIndex,node->nodeOcc); if (node->nodeOcc > rtree->thresh) { - size = IntVecSize(classes); lclasses = CreateIntVec(&gstack,IntVecSize(classes)); ZeroIntVec(lclasses); if (node->numChild>0) { /* Not a terminal node */ @@ -1910,7 +1949,6 @@ static AccCache *CreateAccCache(IntVec size, int b) ac->bVector = CreateDVector(&acccaStack,vsize); ZeroDVector(ac->bVector); ac->bTriMat = CreateBlockTriMat(&acccaStack,size); - ZeroBlockTriMat(ac->bTriMat); ac->next = headac; headac = ac; return(ac); @@ -3715,6 +3753,7 @@ static Boolean GenClassXForm(BaseClass *bclass, AdaptXForm *xform) } Dispose(&gstack,accs); } + FreeIntVec(&gstack,classes); return TRUE; } @@ -4538,12 +4577,13 @@ Boolean UpdateSpkrStats(HMMSet *hset, XFInfo *xfinfo, char *datafn) if (!keepXFormDistinct) { if (xfinfo->xformTMF == NULL) { MakeFN("TMF",xfinfo->outXFormDir,NULL,newFn); - SaveAllXForms(hset,newFn,xfinfo->saveBinary); - } else + } else { MakeFN(xfinfo->xformTMF,xfinfo->outXFormDir,NULL,newFn); - SaveAllXForms(hset,newFn,xfinfo->saveBinary); + } + SaveAllXForms(hset,newFn,xfinfo->saveBinary); } } + return spkrChange; } @@ -4595,3 +4635,5 @@ void UpdateProjectModels(HMMSet *hset, char *dir) } +/* ------------------------- End of HAdapt.c ------------------------- */ + diff --git a/HTKLib/HAdapt.h b/HTKLib/HAdapt.h old mode 100644 new mode 100755 index a474643..4299313 --- a/HTKLib/HAdapt.h +++ b/HTKLib/HAdapt.h @@ -3,31 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* ----------------------------------------------------------- */ -/* Copyright: */ +/* author: */ +/* M.J.F. Gales */ /* */ -/* 2003 M.J.F. Gales and */ -/* Cambridge University */ -/* Engineering Department */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2003-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAdapt.h Adaptation Library module */ +/* File: HAdapt.h Adaptation Library module */ /* ----------------------------------------------------------- */ +/* !HVER!HAdapt: 3.5.0 [CUED 12/10/15] */ + #ifndef _HADAPT_H_ #define _HADAPT_H_ @@ -36,6 +41,12 @@ extern "C" { #endif typedef struct { + /* cz277 - xform */ + int nSpkr; + char *curOutSpkr; + char *curInSpkr; + char *curPaSpkr; + char *outSpkrPat; char *inSpkrPat; char *paSpkrPat; @@ -60,7 +71,10 @@ typedef struct { /* -------------------- Initialisation Functions -------------------------- */ -void InitAdapt(XFInfo *xfinfo); +/* cz277 - xform */ +void InitAdapt(); +void InitXFInfo(XFInfo *xfinfo); + /* Initialise configuration parameters */ @@ -195,4 +209,4 @@ void UpdateProjectModels(HMMSet *hset, char *dir); #endif /* _HADAPT_H_ */ -/* ---------------------------- END HAdapt.h ------------------------------ */ +/* ---------------------- End of HAdapt.h ------------------------ */ diff --git a/HTKLib/HArc.c b/HTKLib/HArc.c old mode 100644 new mode 100755 index b3ebb33..b80111d --- a/HTKLib/HArc.c +++ b/HTKLib/HArc.c @@ -3,31 +3,33 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HArc.c Forward Backward routines */ +/* File: HArc.c Forward backward routines */ /* ----------------------------------------------------------- */ -char *arc_version = "!HVER!HArc: 3.4.1 [CUED 12/03/09]"; -char *arc_vc_id = "$Id: HArc.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; +char *arc_version = "!HVER!HArc: 3.5.0 [CUED 12/10/15]"; +char *arc_vc_id = "$Id: HArc.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; /* @@ -43,6 +45,7 @@ char *arc_vc_id = "$Id: HArc.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -68,7 +71,7 @@ static Boolean IsLMScale = FALSE; static float WDPEN = 0; static Boolean IsWdPen = FALSE; static float FRAMEDUR = 0; -static int debug=0; +/*static int debug=0;*/ #define MAX(a,b) ((a)>(b) ? (a):(b)) @@ -77,9 +80,8 @@ static int debug=0; Boolean StackInitialised=FALSE; static MemHeap tempArcStack; /* for temporary structures. */ - - - +/* cz277 - mtload */ +static MemHeap arcstak; /* -------------------------- Arc support routines.----------------------- */ @@ -147,7 +149,11 @@ int TimeToNFrames(float time, ArcInfo *aInfo){ float fans; int ans; fans = time/aInfo->framedur; ans = (int)(fans+0.5); - if(fabs(ans-fans) > 0.1) HError(1, "There is a problem with lattice frame length. Set ARC:FRAMEDUR to frame length in seconds (e.g 0.01)"); + + if(fabs(ans-fans) > 0.1) { + HError(1, "There is a problem with lattice frame length. Set ARC:FRAMEDUR to frame length in seconds (e.g 0.01)"); + } + return ans; } @@ -210,8 +216,8 @@ HArc *CreateArc(MemHeap *mem, Lattice *lat, LArc *la, int start_time, int pos, i void PrintArc(FILE *f, HArc *a){ ArcTrans *at; - fprintf(f, "Arc{ id=%d, pos=%d, parentLarc=0x%x, t_start=%f, t_end=%f", - a->id, a->pos, (int)a->parentLarc, (float)a->t_start, (float)a->t_end); + fprintf(f, "Arc{ id=%d, pos=%d, parentLarc=%p, t_start=%f, t_end=%f", + a->id, a->pos, a->parentLarc, (float)a->t_start, (float)a->t_end); if(a->prec && a->t_end > a->prec->t_end){ printf("(>%f by %E)\n", (float)a->prec->t_end, (float)(a->t_end - a->prec->t_end)); if(a->t_end + 0.0 == a->prec->t_end){ printf("****\n"); } @@ -270,7 +276,17 @@ int arc_compare( const void* a , const void* b ) void SortArcs( ArcInfo *aInfo ) { int q; - HArc **arclist = New( &gstack , aInfo->nArcs * sizeof(HArc*) ); + + /* cz277 - mtload */ + if(!StackInitialised) { + CreateHeap(&tempArcStack, "tempArcStore", MSTAK, 1, 0.5, 10000, 100000); + StackInitialised = TRUE; + } + + /* cz277 - mtload */ + /*HArc **arclist = New( &gstack , aInfo->nArcs * sizeof(HArc*) );*/ + HArc **arclist = New(&tempArcStack, aInfo->nArcs * sizeof(HArc*)); + HArc *a , *prec = NULL ; HArc **al = arclist , **ale = arclist + aInfo->nArcs ; int id = 1 ; @@ -301,7 +317,11 @@ void SortArcs( ArcInfo *aInfo ) q=0; for(a=aInfo->start;a;a=a->foll) a->id = ++q; - Dispose( &gstack , arclist ); + /* cz277 - mtload */ + /*Dispose( &gstack , arclist );*/ + /*Dispose(&gcheap, arclist);*/ + Dispose(&tempArcStack, arclist); + } @@ -348,9 +368,182 @@ void FixLatTimes(Lattice *lat){ /*Makes it so that the sum of phone lengths equa } +/* -------------------------- Creates the arcs from the lattice. ----------------------- */ +/* cz277 - cuda fblat */ +#ifdef CUDA +void InitAcousticDev(Acoustic *ac, AcousticDev *acDev) { + int i, j, T1, Nq1, size; + StreamElem *ste; + AcousticDev acHost; + int *indexes; + NFloat *transp; + + Nq1 = ac->Nq + 1; + T1 = ac->t_end - ac->t_start + 1 + 1; + /* Nq */ + acHost.Nq = ac->Nq; + acHost.t_start = ac->t_start; + acHost.t_end = ac->t_end; + acHost.aclike = ac->aclike; + acHost.locc = ac->locc; + acHost.SP = ac->SP; + + /* indexes */ + size = sizeof(int) * Nq1; + indexes = (int *) New(&arcstak, size); + for (i = 2; i < ac->Nq; ++i) { + indexes[i] = ac->hmm->svec[i].info->pdf[1].targetIdx; + } + DevNew((void **) &acHost.indexes, size); + SyncHost2Dev(indexes, acHost.indexes, size); + /* transp */ + size = sizeof(NFloat) * Nq1 * Nq1; + transp = (NFloat *) New(&arcstak, size); + for (i = 1; i <= ac->Nq; ++i) + for (j = 1; j <= ac->Nq; ++j) + transp[i * Nq1 + j] = ac->hmm->transP[i][j]; + DevNew((void **) &acHost.transp, size); + SyncHost2Dev(transp, acHost.transp, size); + /* alphaPlus */ + size = sizeof(NFloat) * T1 * Nq1; + acHost.alphaPlus = NULL; + if (ac->alphaPlus != NULL) { + DevNew((void **) &acHost.alphaPlus, size); + } + /* betaPlus */ + acHost.betaPlus = NULL; + if (ac->betaPlus != NULL) { + DevNew((void **) &acHost.betaPlus, size); + } + /* otprob */ + acHost.otprob = NULL; + if (ac->otprob != NULL) { + DevNew((void **) &acHost.otprob, size); + } + + /*Dispose(&arcstak, transp);*/ + Dispose(&arcstak, indexes); + + /* transfer */ + SyncHost2Dev(&acHost, acDev, sizeof(AcousticDev)); +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void ClearAcousticDev(AcousticDev *acDev) { + int i, T1, Nq1, size; + AcousticDev acHost; + + SyncDev2Host(acDev, &acHost, sizeof(AcousticDev)); + T1 = acHost.t_end - acHost.t_start + 1 + 1; + Nq1 = acHost.Nq + 1; + /* indexes */ + size = sizeof(int) * Nq1; + DevDispose(acHost.indexes, size); + /* transp */ + size = sizeof(NFloat) * Nq1 * Nq1; + DevDispose(acHost.transp, size); + /* alphaPlus */ + size = sizeof(NFloat) * T1 * Nq1; + if (acHost.alphaPlus != NULL) { + DevDispose(acHost.alphaPlus, size); + } + /* betaPlus */ + if (acHost.betaPlus != NULL) { + DevDispose(acHost.betaPlus, size); + } + /* otprob */ + if (acHost.otprob != NULL) { + DevDispose(acHost.otprob, size); + } -/* -------------------------- Creates the arcs from the lattice. ----------------------- */ +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void SyncAcousticDev2HostBeta(AcousticDev *acDev, Acoustic *ac, MemHeap *mem) { + int i, j, t, T1, Nq1, size, base; + NFloat *betaPlus, *otprob; + AcousticDev acHost; + + SyncDev2Host(acDev, &acHost, sizeof(AcousticDev)); + T1 = acHost.t_end - acHost.t_start + 1 + 1; + Nq1 = acHost.Nq + 1; + /* aclike */ + ac->aclike = acHost.aclike; + + /* betaPlus (not necessary?) */ + if (acHost.SP == FALSE) { + size = sizeof(NFloat) * T1 * Nq1; + betaPlus = (NFloat *) New(&arcstak, size); + SyncDev2Host(acHost.betaPlus, betaPlus, size); + for (i = ac->t_start; i <= ac->t_end; ++i) { + t = i - ac->t_start + 1; + base = t * Nq1; + for (j = 1; j <= ac->Nq; ++j) + ac->betaPlus[i][j] = betaPlus[base + j]; + } + /* otprob (not necessary?) */ + otprob = (NFloat *) New(&arcstak, size); + SyncDev2Host(acHost.otprob, otprob, size); + for (i = ac->t_start; i <= ac->t_end; ++i) { + t = i - ac->t_start + 1; + base = t * Nq1; + for (j = 2; j < ac->Nq; ++j) { + if (ac->otprob[i][j][0] == NULL) + ac->otprob[i][j][0] = (float *) New(mem, sizeof(float) * 1); + ac->otprob[i][j][0][0] = (float) otprob[base + j]; + } + } + + /* Dispose(&arcstak, otprob); */ + Dispose(&arcstak, betaPlus); + } +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void SyncAcousticHost2DevAlpha(Acoustic *ac, AcousticDev *acDev) { + NFloat locc; + + locc = ac->locc; + /* locc */ + SyncHost2Dev(&locc, &acDev->locc, sizeof(float)); +} +#endif + + +/* cz277 - cuda fblat */ +#ifdef CUDA +void SyncAcousticDev2HostAlpha(AcousticDev *acDev, Acoustic *ac) { + int size, i, j, t, T1, Nq1, base; + AcousticDev acHost; + NFloat *alphaPlus; + + SyncDev2Host(acDev, &acHost, sizeof(AcousticDev)); + T1 = acHost.t_end - acHost.t_start + 1 + 1; + Nq1 = acHost.Nq + 1; + /* alphaPlus */ + size = sizeof(NFloat) * T1 * Nq1; + alphaPlus = (NFloat *) New(&arcstak, size); + SyncDev2Host(acHost.alphaPlus, alphaPlus, size); + for (i = ac->t_start; i <= ac->t_end; ++i) { + t = i - ac->t_start + 1; + base = t * Nq1; + for (j = 1; j <= ac->Nq; ++j) + ac->alphaPlus[i][j] = alphaPlus[base + j]; + } + Dispose(&arcstak, alphaPlus); + +} +#endif void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ @@ -361,8 +554,11 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ int l; float framedur; - if(!StackInitialised) - CreateHeap(&tempArcStack, "tempArcStore", MSTAK, 1, 0.5, 1000, 10000); + /* cz277 - mtload */ + if(!StackInitialised) { + CreateHeap(&tempArcStack, "tempArcStore", MSTAK, 1, 0.5, 10000, 100000); + StackInitialised = TRUE; + } aInfo->start=aInfo->end=0; aInfo->nArcs=0; @@ -437,6 +633,7 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ aInfo->Q = Q = q; /* num unique arcs. */ aInfo->T = T; aInfo->ac = New(aInfo->mem, sizeof(Acoustic) * (q+1)); + q=0; for(arc=aInfo->start;arc;arc=arc->foll){ if(!arc->calcArc){ /* if this is one of the 'calculated' arcs */ @@ -453,6 +650,8 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ if(ac->t_start == ac->t_end+1){ ac->SP=TRUE; ac->alphat=ac->alphat1=NULL;ac->betaPlus=NULL;ac->otprob=NULL; + /* cz277 - cuda fblat */ + ac->alphaPlus = NULL; } else { int j,s,SS,S = hset->swidth[0]; /* probably just 1. */ StreamElem *ste; @@ -463,9 +662,15 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ ac->alphat1 = CreateDVector(aInfo->mem, ac->Nq); ac->betaPlus = ((DVector*)New(aInfo->mem, sizeof(DVector)*(ac->t_end-ac->t_start+1)))-ac->t_start; ac->otprob = ((float****)New(aInfo->mem, sizeof(float***)*(ac->t_end-ac->t_start+1)))-ac->t_start; + /* cz277 - cuda fblat */ + ac->alphaPlus = ((DVector *) New(aInfo->mem, sizeof(DVector) * (ac->t_end - ac->t_start + 1))) - ac->t_start; + for(t=ac->t_start;t<=ac->t_end;t++){ ac->betaPlus[t] = CreateDVector(aInfo->mem,ac->Nq); ac->otprob[t] = ((float***)New(aInfo->mem,(ac->Nq-2)*sizeof(float **)))-2; + /* cz277 - cuda fblat */ + ac->alphaPlus[t] = CreateDVector(aInfo->mem, ac->Nq); + for(j=2;jNq;j++){ ac->otprob[t][j] = (float**)New(aInfo->mem,SS*sizeof(float*)); /*2..Nq-1*/ ste = ac->hmm->svec[j].info->pdf+1; @@ -484,9 +689,7 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ } for(arc=aInfo->start;arc;arc=arc->foll) if(arc->calcArc) arc->ac = arc->calcArc->ac; - /* Set up arrays qLo[t] and qHi[t] which are used to speed up iterations over q. */ - aInfo->qLo = (int*)New(aInfo->mem, sizeof(int)*(aInfo->T+1)); /* For efficiency later, work out min & max q active at each time t. */ aInfo->qHi = (int*)New(aInfo->mem, sizeof(int)*(aInfo->T+1)); for(t=1;t<=T;t++){ aInfo->qLo[t] = T+1; aInfo->qHi[t] = -1; } @@ -499,8 +702,26 @@ void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ } } - if(trace&T_ARC && debug++ < 100){ - printf("[HArc:] %d arcs, depth %f, depth[reduced] %f\n", aInfo->nArcs, Depth(aInfo,TRUE), Depth(aInfo,FALSE)); + /* cz277 - cuda fblat */ +#ifdef CUDA + if (aInfo->FBLatCUDA == TRUE) { + /* acDev */ + DevNew((void **) &aInfo->acDev, sizeof(AcousticDev) * (aInfo->Q + 1)); + for (l = 1; l <= aInfo->Q; ++l) { + InitAcousticDev(&aInfo->ac[l], &aInfo->acDev[l]); + } + /* qLoDev & qHiDev */ + DevNew((void **) &aInfo->qLoDev, sizeof(int) * (aInfo->T + 1)); + DevNew((void **) &aInfo->qHiDev, sizeof(int) * (aInfo->T + 1)); + SyncHost2Dev(aInfo->qLo, aInfo->qLoDev, sizeof(int) * (aInfo->T + 1)); + SyncHost2Dev(aInfo->qHi, aInfo->qHiDev, sizeof(int) * (aInfo->T + 1)); + } +#endif + + /* cz277 - arcs */ + /*if(trace&T_ARC && debug++ < 100){*/ + if(trace&T_ARC) { + printf("\t\t[HArc:] %d arcs, depth %f, depth[reduced] %f\n", aInfo->nArcs, Depth(aInfo,TRUE), Depth(aInfo,FALSE)); if(trace&T_ARC2) PrintArcs(stdout, aInfo->start); } @@ -533,10 +754,14 @@ Boolean LatInLatRec(LNode *n1, LNode *n2){ return TRUE; /*Path found.*/ } - if(n1->pred && n1->pred->parc != NULL) return TRUE; /*This is to take the case where the numerator could have choices of arcs (multiple prons). + if(n1->pred && n1->pred->parc != NULL) { + return TRUE; /*This is to take the case where the numerator could have choices of arcs (multiple prons). Where the arcs re-join, just check the last one re-joining. This makes sure we don't take exponential time.*/ + } - if(n1->foll==NULL || n2->foll==NULL) return FALSE; + if(n1->foll==NULL || n2->foll==NULL) { + return FALSE; + } else{ LNode *newn1; LArc *la; @@ -553,7 +778,9 @@ Boolean LatInLatRec(LNode *n1, LNode *n2){ SameArcs(n1FollArc, la)) if(LatInLatRec(newn1, newn2)) ThisIsOK = TRUE; /*We've found a path to the end (or to re-join point). --> this num pron is OK.*/ } - if (!ThisIsOK) return FALSE; /*This num pron was not there.*/ + if (!ThisIsOK) { + return FALSE; /*This num pron was not there.*/ + } } return TRUE; } @@ -581,5 +808,9 @@ void InitArc(void) if (GetConfFlt(cParm,nParm,"FRAMEDUR",&f)){ FRAMEDUR = f; } /* Important. Frame duration in seconds. If != 0.01, specify it. */ if (GetConfFlt(cParm,nParm,"WDPEN",&f)){ WDPEN = f; IsWdPen = TRUE; } /* Overrides lattice-specified one. */ } + /* cz277 - mtload */ + CreateHeap(&arcstak, "HArc Stack", MSTAK, 1, 0.0, 100000, ULONG_MAX); } +/* ------------------------- End of HArc.c ------------------------- */ + diff --git a/HTKLib/HArc.h b/HTKLib/HArc.h old mode 100644 new mode 100755 index 682c00d..010e438 --- a/HTKLib/HArc.h +++ b/HTKLib/HArc.h @@ -3,33 +3,38 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: Arc.h -- Routines used in HFwdBkwdLat.c */ +/* File: HArc.h -- Routines used in HFBLat.c */ /* An alternative kind of lattice format used there. */ /* ----------------------------------------------------------- */ -/* !HVER!HArc: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HArc: 3.5.0 [CUED 12/10/15] */ +/* cz277 - cuda fblat */ +#ifdef CUDA +#include "HCUDA.h" +#endif /* Turns a Lattice into Arc structure. @@ -91,7 +96,6 @@ struct _CorrN{ double *beta; /* [starti..endi]. */ }; - typedef struct _Acoustic{ HArc *myArc; @@ -108,8 +112,8 @@ typedef struct _Acoustic{ DVector alphat; /* 1..Nq */ DVector alphat1; /* 1..Nq [for time t-1] */ DVector *betaPlus; /* [myArc->t_start..myArc->t_end][1..Nq] */ + DVector *alphaPlus; /* cz277 - cuda fblat */ /* [myArc->t_start..myArc->t_end][1..Nq] */ float ****otprob; /* [myArc->t_start..myArc->t_end][0..(S>1?S:0)][2..Nq-1][0..(M>1)?M:0] */ - } Acoustic; /* for calculating acoustic likelihoods... */ typedef struct _MPEStruct{ @@ -160,7 +164,11 @@ struct _Arc{ }; -#define MAXLATS 10 +/*#define MAXLATS 10*/ + +/* cz277 - ANN */ +#define MAXLATS 2000 + /*Will usually be only 1 or 2-- i.e, recognised lat plus aligned correct-transcription lattice.*/ typedef struct ArcInfoStruct{ @@ -181,9 +189,25 @@ typedef struct ArcInfoStruct{ Acoustic *ac; /* 1..Q */ int *qLo; /* [t], lowest q active at time t */ int *qHi; /* [t], highest q active at time t */ -}ArcInfo; + /* cz277 - cuda fblat */ +#ifdef CUDA + AcousticDev *acDev; /* 1 ... Q */ + int *qLoDev; /* 1 ... T */ + int *qHiDev; /* 1 ... T */ +#endif + Boolean FBLatCUDA; /* from FBInfo->FBLatCUDA */ + +}ArcInfo; +/* cz277 - cuda fblat */ +#ifdef CUDA +void InitAcousticDev(Acoustic *ac, AcousticDev *acDev); +void ClearAcousticDev(AcousticDev *acDev); +void SyncAcousticDev2HostBeta(AcousticDev *acDev, Acoustic *ac, MemHeap *mem); +void SyncAcousticHost2DevAlpha(Acoustic *ac, AcousticDev *acDev); +void SyncAcousticDev2HostAlpha(AcousticDev *acDev, Acoustic *ac); +#endif void ArcFromLat(ArcInfo *aInfo, HMMSet *hset); /*Takes a ArcInfo with the 'nLats', 'lat' and 'mem' in place, and creates the arcs .*/ @@ -206,8 +230,6 @@ int TimeToNFrames(float time, ArcInfo *aInfo); as the first and last frames of the phone). */ -/* ------------------------- End of Arc.h --------------------------- */ - void AttachMPEInfo(ArcInfo *aInfo); /* attaches the "mpe" fields */ Boolean LatInLat(Lattice *numLat, Lattice *denLat); @@ -216,3 +238,7 @@ Boolean LatInLat(Lattice *numLat, Lattice *denLat); #define EndOfWord(a) (a->pos == a->parentLarc->nAlign-1) void InitArc(void); + +/* ------------------------- End of Arc.h --------------------------- */ + + diff --git a/HTKLib/HAudio.c b/HTKLib/HAudio.c old mode 100644 new mode 100755 index cd7e510..8af2456 --- a/HTKLib/HAudio.c +++ b/HTKLib/HAudio.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAudio.c: Audio Input/Output Interface */ +/* File: HAudio.c Audio input/output interface */ /* ----------------------------------------------------------- */ -char *haudio_version = "!HVER!HAudio: 3.4.1 [CUED 12/03/09]"; +char *haudio_version = "!HVER!HAudio: 3.5.0 [CUED 12/10/15]"; char *haudio_vc_id = "$Id: HAudio.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" /* HTK Libraries */ @@ -2171,7 +2187,7 @@ void StartAudioInput(AudioIn a, int sig) if (sig<0) { /* Means use keys to start/stop */ #ifndef WIN32 printf("Press return to start sampling\n"); - read(0, &c, 1); + if(read(0, &c, 1)<0) HError(6006,"StartAudioInput: error reading from audio device"); #endif StartAudioSignal(); } diff --git a/HTKLib/HAudio.h b/HTKLib/HAudio.h old mode 100644 new mode 100755 index a4b2e79..06f3b88 --- a/HTKLib/HAudio.h +++ b/HTKLib/HAudio.h @@ -3,23 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HAudio.h: Audio Input/Output */ +/* File: HAudio.h Audio Input/Output */ /* ----------------------------------------------------------- */ -/* !HVER!HAudio: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HAudio: 3.5.0 [CUED 12/10/15] */ + #ifndef _HAUDIO_H_ #define _HAUDIO_H_ diff --git a/HTKLib/HCUDA.cu b/HTKLib/HCUDA.cu new file mode 100755 index 0000000..44aec57 --- /dev/null +++ b/HTKLib/HCUDA.cu @@ -0,0 +1,2340 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HCUDA.h CUDA utilities */ +/* ----------------------------------------------------------- */ + + +#ifdef __cplusplus +extern "C" { +#endif + +const char *hcuda_version = "!HVER!HCUDA: 3.5.0 [CUED 12/10/15]"; +const char *hcuda_vc_id = "$Id: HCUDA.cu,v 1.0 2015/10/12 12:07:23 cz277 Exp $"; + +#include +#include +#include +#include "HCUDA.h" +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "config.h" + + +/* --------------------------- Trace Flags ------------------------ */ + +#define CEIL(x,y) (((x)+(y)-1) / (y)) + +/* --------------------------- Trace Flags ------------------------ */ +#define T_TOP 0001 /* Top Level tracing */ + +static ConfParam *cParm[MAXGLOBS]; /* config parameters */ +static int nParm = 0; + +static int GPUDevId = -1; /* */ +static Boolean GPUInit = FALSE; /* */ +static const char *GPUIdEnvVar = ""; /* */ +cublasHandle_t handle; /* */ +static size_t GPUMemUsed = 0; /* */ + +/* ----------------------- Device Management ---------------------- */ + +/* */ +static void ShowAllGPUs(void) { + int nGPU, i; + cudaError_t error; + cudaDeviceProp prop; + /*CUResult result;*/ + + error = cudaGetDeviceCount(&nGPU); + if (error != cudaSuccess) + HError(8800, (char *)"ShowAllGPUs: %s", cudaGetErrorString(error)); + if (nGPU == 0) + HError(8820, (char *)"ShowAllGPUs: No GPU device"); + for (i = 0; i < nGPU; ++i) { + error = cudaGetDeviceProperties(&prop, i); + if (error != cudaSuccess) + HError(8800, (char *)"ShowAllGPUs: %s", cudaGetErrorString(error)); + printf("GPU %d: %s, %luMB, SM = %d.%d", i, prop.name, prop.totalGlobalMem / 1048576, prop.major, prop.minor); + if (GPUDevId == i) + printf(" [Selected]"); + printf("\n"); + } +} + +/* To check CUDA requirement */ +static void CheckCUDAReq(cudaDeviceProp *prop) +{ + int driverVer; + int runtimeVer; + int cublasVer; + cudaError_t error; + cublasStatus_t status; + + error = cudaDriverGetVersion(&driverVer); + if (error != cudaSuccess) + HError(8800, (char *)"CheckCUDAReq: %s", cudaGetErrorString(error)); + if (driverVer < MINCUDAVER) + HError(8800, (char *)"CheckCUDAReq: CUDA driver version %d is lower than the minimum required version %d", driverVer, MINCUDAVER); + + error = cudaRuntimeGetVersion(&runtimeVer); + if (error != cudaSuccess) + HError(8800, (char *)"CheckCUDAReq: %s", cudaGetErrorString(error)); + if (runtimeVer < MINCUDAVER) + HError(8800, (char *)"CheckCUDAReq: CUDA runtime version %d is lower than the minimum required version %d", runtimeVer, MINCUDAVER); + + status = cublasGetVersion(handle, &cublasVer); + if (status != CUBLAS_STATUS_SUCCESS) + HError(8800, (char *)"CheckCUDAReq: Fail to get CUBLAS library version"); + if (cublasVer < MINCUDAVER) + HError(8800, (char *)"CheckCUDAReq: CUBLAS library version %d is lower than the minimum required version %d", cublasVer, MINCUDAVER); + + if (prop->major <= MINMAJORSMARCH && prop->minor <= MINMINORSMARCH) + HError(8800, (char *)"CheckCUDAReq: SM architecture is lower than the minimum requirement, %d.%d", MINMAJORSMARCH, MINMINORSMARCH); + + printf("CUDA driver version %d\n", driverVer); + printf("CUDA runtime version %d\n", runtimeVer); + printf("CUBLAS library version %d\n", cublasVer); +} + +/* Initialize the GPU device. It first loads the GPU device + from the config file. Then +*/ +void InitCUDA(void) +{ + ConfParam *cpVal; + + Register((char *)hcuda_version, (char *)hcuda_vc_id); + + /* load parameters from the config file */ + nParm = GetConfig((char *)"HCUDA", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfAny(cParm, nParm, (char *)"GPUID", &cpVal)) { + if (cpVal->kind == IntCKind) + GPUDevId = cpVal->val.i; + else if (cpVal->kind == StrCKind) + GPUIdEnvVar = CopyString(&gcheap, cpVal->val.s); + else + HError(8820, (char *)"InitCUDA: Unknown GPUID value kind"); + /*strcpy(buf, cpVal->val.s); + GPUIdEnvVar = (char *) New(&gcheap, sizeof(char) * strlen(buf)); + strcpy(GPUIdEnvVar, buf);*/ + } + } +} + +/* */ +void StartCUDA(void) { + char *envVar; + cudaError_t error; + cublasStatus_t status; + cudaDeviceProp prop; + + /* initialize the library and device */ + if (!GPUInit) { + /* select a device */ + if (strcmp(GPUIdEnvVar, "") != 0) { /* use env variable */ + envVar = getenv(GPUIdEnvVar); + if (envVar == NULL) { + HError(-8821, (char *)"InitCUDA: Environment variable %s not defined, reset to use GPU 0\n", GPUIdEnvVar); + GPUDevId = 0; + } + else { + GPUDevId = atoi(envVar); + } + } + if (GPUDevId < 0) { + error = cudaChooseDevice(&GPUDevId, &prop); + if (error != cudaSuccess) + HError(8800, (char *)"InitCUDA: %s", cudaGetErrorString(error)); + } + error = cudaSetDevice(GPUDevId); + if (error != cudaSuccess) + HError(8800, (char *)"InitCUDA: %s", cudaGetErrorString(error)); + error = cudaGetDeviceProperties(&prop, GPUDevId); + if (error != cudaSuccess) + HError(8800, (char *)"InitCUDA: %s", cudaGetErrorString(error)); + /* initiate CUBLAS */ + status = cublasCreate(&handle); + if (status != CUBLAS_STATUS_SUCCESS) + HError(8800, (char *)"InitCUDA: Fail to initialise CUBLAS"); + /* check version */ + CheckCUDAReq(&prop); + /* set GPUInit flag */ + GPUInit = TRUE; + /* show devices */ + ShowAllGPUs(); + } + else { + printf("InitCUDA: GPU device %d already initialised", GPUDevId); + } + printf("\n"); +} + +/* */ +void StopCUDA(void) { + if (GPUInit) { + /* destroy the context on the GPU */ + cublasDestroy(handle); + /* shutdown CUBLAS */ + cudaDeviceReset(); + /* reset GPU IDs and the flag */ + GPUDevId = -1; + GPUInit = FALSE; + } + else { + printf("StopCUDA: GPU device has already stopped"); + } +} + +/* --------------------------- Trace Flags ------------------------ */ + +__global__ void HKern_SetNSegment(NFloat val, NFloat *segPtr, int segLen) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + segPtr[pos] = val; + } +} + +__global__ void HKern_ScaledSelfAddNSegment(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + lhPtr[pos] = scale * lhPtr[pos] + rhPtr[pos]; + } +} + +__global__ void HKern_DupNSegment(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int srcPos, dstPos; + + dstPos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (dstPos < segLen * times) { + srcPos = dstPos % segLen; + dstPtr[dstPos] = srcPtr[srcPos]; + } +} + +__global__ void HKern_SubNSegment(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + resPtr[pos] = lhPtr[pos] - rhPtr[pos]; + } +} + +__global__ void HKern_MulNSegment(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + resPtr[pos] = lhPtr[pos] * rhPtr[pos]; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyAffineAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + dstPtr[pos] = scalePtr[colIdx] * srcPtr[pos] + shiftPtr[colIdx]; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyDAffineAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + dstPtr[pos] = scalePtr[colIdx]; + } +} + + +/* cz277 - pact */ +__global__ void HKern_ApplyTrAffineAct(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step, off = THREADPERBLOCK; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /* dScale */ + tmpPtr[off + thdIdx] = 0.0; /* dShift */ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += errPtr[pos] * actPtr[pos]; + tmpPtr[off + thdIdx] += errPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + tmpPtr[off + thdIdx] += tmpPtr[off + pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) { + dScalePtr[colIdx] = 0.0; + dShiftPtr[colIdx] = 0.0; + } + dScalePtr[colIdx] += tmpPtr[0]; + dShiftPtr[colIdx] += tmpPtr[off + 0]; + } + } +} + +/* cz277 - laf */ +__global__ void HKern_AccMeanNSegment(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += valPtr[pos] / tSamp; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + meanPtr[colIdx] += tmpPtr[0]; + } + } +} + +/* cz277 - laf */ +__global__ void HKern_AccVarianceNSegment(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += pow(valPtr[pos] - meanPtr[colIdx], 2) / tSamp; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + varPtr[colIdx] += tmpPtr[0]; + } + } +} + + +/* cz277 - pact */ +__global__ void HKern_ApplyParmReLUAct(NFloat *srcPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (srcPtr[pos] > 0.0) + dstPtr[pos] = posPtr[colIdx] * srcPtr[pos]; + else + dstPtr[pos] = negPtr[colIdx] * srcPtr[pos]; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyDParmReLUAct(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (inpPtr[pos] > 0.0) + dstPtr[pos] = posPtr[colIdx]; + else + dstPtr[pos] = negPtr[colIdx]; + } +} + + +/* cz277 - pact */ +__global__ void HKern_ApplyTrParmReLUAct(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step, off = THREADPERBLOCK; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /* alpha */ + tmpPtr[off + thdIdx] = 0.0; /* beta */ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + if (inpPtr[pos] > 0.0) + tmpPtr[thdIdx] += errPtr[pos] * inpPtr[pos]; + else + tmpPtr[off + thdIdx] += errPtr[pos] * inpPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + tmpPtr[off + thdIdx] += tmpPtr[off + pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) { + dPosPtr[colIdx] = 0.0; + dNegPtr[colIdx] = 0.0; + } + dPosPtr[colIdx] += tmpPtr[0]; + dNegPtr[colIdx] += tmpPtr[off + 0]; + } + } +} + + +/* cz277 - laf */ +__global__ void HKern_ApplyPReLUAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (srcPtr[pos] > 0.0) + dstPtr[pos] = scalePtr[colIdx] * srcPtr[pos]; + else + dstPtr[pos] = 0.0; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyDPReLUAct(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + rowIdx = pos / col; + colIdx = pos % col; + if (rowIdx < row) { + if (scalePtr[colIdx] != 0.0 && srcPtr[pos] / scalePtr[colIdx] > 0.0) + dstPtr[pos] = scalePtr[colIdx]; + else + dstPtr[pos] = 0.0; + } +} + +/* cz277 - pact */ +__global__ void HKern_ApplyTrPReLUAct(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + NFloat act; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + if (scalePtr[colIdx] != 0.0) { + act = srcPtr[pos] / scalePtr[colIdx]; + if (act > 0.0) + tmpPtr[thdIdx] += errPtr[pos] * act; + } + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dScalePtr[colIdx] = 0.0; + dScalePtr[colIdx] += tmpPtr[0]; + } + } +} + +__global__ void HKern_ApplyReLUAct(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + if (srcPtr != dstPtr && srcPtr[pos] > 0) { + dstPtr[pos] = srcPtr[pos]; + } + if (srcPtr[pos] < 0) { + dstPtr[pos] = srcPtr[pos] * scale; + /* cz277 - standard ReLU */ + /*dstPtr[pos] = 0.0;*/ + } + } +} + +__global__ void HKern_ApplyDReLUAct(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + if (srcPtr[pos] > 0.0) { + dstPtr[pos] = 1.0; + } + else { + dstPtr[pos] = scale; + /* cz277 - standard ReLU */ + /*dstPtr[pos] = 0.0;*/ + } + } +} + +__global__ void HKern_ApplyDLinearAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = 1.0; + } +} + +__global__ void HKern_ApplyLHUCSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal, lhucVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = -1.0 * rolePtr[colIdx]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + floatVal = -1.0 * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = lhucVal * 1.0 / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDLHUCSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal, lhucVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = -1.0 * rolePtr[colIdx]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + floatVal = srcPtr[pos] / lhucVal; + dstPtr[pos] = srcPtr[pos] * (1.0 - floatVal); + } +} + +__global__ void HKern_ApplyTrLHUCSigmoidActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + NFloat floatVal; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + floatVal = -1.0 * rolePtr[colIdx]; + CHKNFLTEXPE(floatVal) + floatVal = 0.5 * 2.0 / (1.0 + exp(floatVal)); + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*actPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += errPtr[pos] * actPtr[pos] * (1.0 - floatVal); + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dRolePtr[colIdx] = 0.0; + dRolePtr[colIdx] += tmpPtr[0]; + } + } +} + + +__global__ void HKern_ApplyParmSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat* thetaPtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = (-1.0) * gammaPtr[colIdx] * srcPtr[pos] + thetaPtr[colIdx]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[colIdx] / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDParmSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int pos, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + if (etaPtr[colIdx] != 0.0) + dstPtr[pos] = gammaPtr[colIdx] * srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[colIdx]); + else + dstPtr[pos] = 0.0; + } +} + +__global__ void HKern_ApplyTrParmSigmoidActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step, off = THREADPERBLOCK; + NFloat floatVal, fracVal; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /*actPtr[base + idx * col];*/ + tmpPtr[off + thdIdx] = 0.0; + tmpPtr[off + off + thdIdx] = 0.0; + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + floatVal = (-1.0) * gammaPtr[colIdx] * inpPtr[pos] + thetaPtr[colIdx]; + CHKNFLTEXPE(floatVal) + fracVal = 1.0 / (1.0 + exp(floatVal)); + tmpPtr[thdIdx] += errPtr[pos] * fracVal; + if (etaPtr[colIdx] != 0.0) { + tmpPtr[off + thdIdx] += errPtr[pos] * inpPtr[pos] * etaPtr[colIdx] * fracVal * (1.0 - fracVal); + tmpPtr[off + off + thdIdx] -= errPtr[pos] * etaPtr[colIdx] * fracVal * (1.0 - fracVal); + } + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + tmpPtr[off + thdIdx] += tmpPtr[off + pos]; + tmpPtr[off + off + thdIdx] += tmpPtr[off + off + pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) { + dEtaPtr[colIdx] = 0.0; + dGammaPtr[colIdx] = 0.0; + dThetaPtr[colIdx] = 0.0; + } + dEtaPtr[colIdx] += tmpPtr[0]; + dGammaPtr[colIdx] += tmpPtr[off + 0]; + dThetaPtr[colIdx] += tmpPtr[off + off + 0]; + } + } +} + + +__global__ void HKern_ApplyPSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int pos, colIdx; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + floatVal = (-1.0) * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[colIdx] / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDPSigmoidAct(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int pos, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + colIdx = pos % col; + /* dstPtr[pos] = srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[colIdx]); */ + if (etaPtr[colIdx] != 0.0) + dstPtr[pos] = 1.0 / etaPtr[colIdx] * srcPtr[pos] * (etaPtr[colIdx] - srcPtr[pos]); + else + dstPtr[pos] = 0.0; + } +} + +__global__ void HKern_ApplyTrPSigmoidActCUDA(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0; /*actPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + /* tmpPtr[thdIdx] += errPtr[pos] * srcPtr[pos] / etaPtr[colIdx]; */ + if (etaPtr[colIdx] != 0.0) + tmpPtr[thdIdx] += errPtr[pos] * 1.0 / etaPtr[colIdx] * srcPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dEtaPtr[colIdx] = 0.0; + dEtaPtr[colIdx] += tmpPtr[0]; + } + } +} + + +__global__ void HKern_ApplySigmoidAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = -1.0 * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = 1.0 / (1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDSigmoidAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = (1 - srcPtr[pos]) * srcPtr[pos]; + } +} + +__global__ void HKern_ApplyTanHAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + CHKNFLTEXPE(floatVal) + floatVal = exp(floatVal); + dstPtr[pos] = (floatVal - 1.0 / floatVal) / (floatVal + 1.0 / floatVal); + } +} + +__global__ void HKern_ApplyDTanHAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = 1 - pow(srcPtr[pos], 2); + } +} + +__global__ void HKern_DualSumByRow(NFloat *srcPtr, int col, int size, int incr, NFloat *dstPtr) { + int lhpos, rhpos, lhidx, rhidx, mod; + + lhpos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (lhpos < size) { + mod = incr * 2; + lhidx = lhpos % col; + if (lhidx % mod == 0) { + rhidx = lhidx + incr; + rhpos = lhpos + incr; + if (rhidx >= col) { + dstPtr[lhpos] = srcPtr[lhpos]; + } + else { + dstPtr[lhpos] = srcPtr[lhpos] + srcPtr[rhpos]; + } + } + } +} + +__global__ void HKern_ApplySoftmaxAct(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int frame, i, base, off; + NFloat den, floatVal; + + frame = (blockIdx.x * blockDim.x) + threadIdx.x; + if (frame < row) { + den = 0.0; + base = frame * col; + for (i = 0, off = base; i < col; ++i, ++off) { + floatVal = srcPtr[off]; + CHKNFLTEXPE(floatVal) + floatVal = exp(floatVal); + dstPtr[off] = floatVal; + den += floatVal; + } + for (i = 0, off = base; i < col; ++i, ++off) { + dstPtr[off] /= den; + } + } +} + +__global__ void HKern_ApplyRedSoftmaxAct(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos; + NFloat maxVal, sumVal, tmpVal; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + base = rowIdx * col; + /* 1. find the max val for current frame (rowIdx) and store it in tmpPtr[thdIdx] */ + /* a. collect the maxes for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = srcPtr[base + idx]; + idx += thdNum; + while (idx < col) { + pos = base + idx; + if (tmpPtr[thdIdx] < srcPtr[pos]) + tmpPtr[thdIdx] = srcPtr[pos]; + idx += thdNum; + } + __syncthreads(); + /* b. dual max within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx && tmpPtr[thdIdx] < tmpPtr[pos]) { + tmpPtr[thdIdx] = tmpPtr[pos]; + } + } + __syncthreads(); + } + maxVal = tmpPtr[0]; + __syncthreads(); + /* 2. find the sum */ + /* a. collect the sum for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (idx < col) { + pos = base + idx; + tmpVal = srcPtr[pos] - maxVal; + CHKNFLTEXPE(tmpVal) + dstPtr[pos] = exp(tmpVal); + tmpPtr[thdIdx] += dstPtr[pos]; + idx += thdNum; + } + __syncthreads(); + /* b. dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + sumVal = tmpPtr[0]; + /* 3. normalise */ + idx = thdIdx; + while (idx < col) { + dstPtr[base + idx] /= sumVal; + idx += thdNum; + } + } +} + +__global__ void HKern_ApplySoftReLAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = log(1.0 + exp(floatVal)); + } +} + +__global__ void HKern_ApplyDSoftReLAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = 1.0 - 1.0 / exp(floatVal); + } +} + +__global__ void HKern_ApplySoftSignAct(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + dstPtr[pos] = srcPtr[pos] / (1 + abs(srcPtr[pos])); + } +} + +__global__ void HKern_ApplyLogTrans(NFloat *srcPtr, int len, NFloat *dstPtr) { + int pos; + NFloat floatVal; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + floatVal = srcPtr[pos]; + if (floatVal <= 0) { + floatVal = LZERO; + } + else { + floatVal = log(floatVal); + if (floatVal < LSMALL) { + floatVal = LSMALL; + } + } + dstPtr[pos] = floatVal; + } +} + +__global__ void HKern_RedSumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, colIdx, thdNum, base, idx, incr, pos, step; + + thdIdx = threadIdx.x; /* num threads per block */ + colIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, row); + if (thdIdx < thdNum && colIdx < col) { + /*base = colIdx;*/ + /* collect the sums for the groups (and transpose the matrix) */ + tmpPtr[thdIdx] = 0.0;/*srcPtr[base + idx * col];*/ + base = colIdx; + idx = thdIdx; + pos = base + idx * col; + step = thdNum * col; + while (idx < row) { + tmpPtr[thdIdx] += srcPtr[pos]; + pos += step; + idx += thdNum; + } + __syncthreads(); + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + + /* copy the value to dstPtr */ + if (thdIdx == 0) { + if (accFlag == FALSE) + dstPtr[colIdx] = 0.0; + dstPtr[colIdx] += tmpPtr[0]; + } + } +} + +__global__ void HKern_SumNMatrixByCol(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, pos; + NFloat sum; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < col) { + sum = 0.0; + for (i = 0; i < row; ++i) { + sum += srcPtr[i * col + pos]; + } + dstPtr[pos] = sum; + } +} + +__global__ void HKern_SumNMatrixByColAcc(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, pos; + NFloat sum; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < col) { + sum = 0.0; + for (i = 0; i < row; ++i) { + sum += srcPtr[i * col + pos]; + } + dstPtr[pos] += sum; + } +} + +__global__ void HKern_SquaredNSegment(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + dstPtr[pos] = pow(srcPtr[pos], 2); + } +} + +__global__ void HKern_CompAdaGradNSegment(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + nlrSeg[pos] = eta / sqrt(K + ssgSeg[pos]); + } +} + +__global__ void HKern_CalXENTCriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + __shared__ NFloat tmpPtr[THREADPERBLOCK]; + int thdIdx, thdNum, pos, idx, incr; + NFloat tn, yn; + + thdIdx = threadIdx.x; + thdNum = blockDim.x; + + if (thdIdx < thdNum) { + /* a. collect the sums for the groups */ + pos = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (pos < segLen) { + tn = refPtr[pos]; + yn = hypPtr[pos]; + if (tn == 0.0) + tmpPtr[thdIdx] += 0.0; + else if (yn == 0.0) + tmpPtr[thdIdx] += tn * LZERO; + else + tmpPtr[thdIdx] += (-1.0) * tn * log(yn / tn); + pos += thdNum; + } + __syncthreads(); + /* b. dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) + tmpPtr[thdIdx] += tmpPtr[pos]; + } + __syncthreads(); + } + *crtPtr = tmpPtr[0]; + } +} + +__global__ void HKern_CalMMSECriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + __shared__ NFloat tmpPtr[THREADPERBLOCK]; + int thdIdx, thdNum, pos, idx, incr; + + thdIdx = threadIdx.x; + thdNum = blockDim.x; + + if (thdIdx < thdNum) { + /* a. collect the sums for the groups */ + pos = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (pos < segLen) { + tmpPtr[thdIdx] += pow(refPtr[pos] - hypPtr[pos], 2); + pos += thdNum; + } + __syncthreads(); + /* dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + *crtPtr = tmpPtr[0]; + } +} + +__global__ void HKern_AddSegmentTargetPen(NFloat *srcPtr, NFloat *penPtr, int row, int col, NFloat *dstPtr) { + int pos, off; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + off = pos % col; + dstPtr[pos] = srcPtr[pos] + penPtr[off]; + } +} + +/*__global__ void HKern_SubNSegmentByConst(NFloat *srcSeg, int segLen, float constVal, NFloat *dstSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + dstSeg[pos] = srcSeg[pos] - constVal; + } +}*/ + +/* cz277 - semi */ +__global__ void HKern_ShiftNSegmentVals(NFloat *srcSeg, int segLen, float shiftVal, NFloat *dstSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < segLen) { + dstSeg[pos] = srcSeg[pos] + shiftVal; + } +} + +/* cz277 - 1007 */ +__global__ void HKern_CopyPartialNSegment(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + int pos, rowIdx, colIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < minRow * minCol) { + rowIdx = pos / minCol; + colIdx = pos % minCol; + dstPtr[rowIdx * dstCol + colIdx] = srcPtr[rowIdx * srcCol + colIdx]; + } +} + +/* cz277 - gradlim */ +__global__ void HKern_ClipNSegmentVals(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg) { + int pos; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < len) { + if (srcSeg[pos] > upperLim) + dstSeg[pos] = upperLim; + else if (srcSeg[pos] < lowerLim) + dstSeg[pos] = lowerLim; + else if (srcSeg != dstSeg) + dstSeg[pos] = srcSeg[pos]; + } +} + +__global__ void HKern_RedMaxElementIndex(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos, off = THREADPERBLOCK; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + base = rowIdx * col; + /* find the max val for current frame (rowIdx) and store it in tmpPtr[thdIdx] */ + /* a. collect the maxes for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = srcPtr[base + idx]; + tmpPtr[off + thdIdx] = idx; + idx += thdNum; + while (idx < col) { + pos = base + idx; + if (tmpPtr[thdIdx] < srcPtr[pos]) { + tmpPtr[thdIdx] = srcPtr[pos]; + tmpPtr[off + thdIdx] = idx; + } + idx += thdNum; + } + __syncthreads(); + /* b. dual max within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx && tmpPtr[thdIdx] < tmpPtr[pos]) { + tmpPtr[thdIdx] = tmpPtr[pos]; + tmpPtr[off + thdIdx] = tmpPtr[off + pos]; + } + } + __syncthreads(); + } + /*__syncthreads();*/ + if (thdIdx == 0) + dstPtr[rowIdx] = tmpPtr[off + 0]; + /*dstPtr[rowIdx] = (NFloat) tmpPtr[off + 0];*/ + /*__syncthreads();*/ + } +} + +/* cz277 - max norm */ +__global__ void HKern_RedCalNMatrixL2NormByRow(NFloat *matPtr, int row, int col, NFloat *normPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + /* 1. accumulate the L2 norm for each row */ + base = rowIdx * col; + idx = thdIdx; + tmpPtr[thdIdx] = 0.0; + while (idx < col) { + pos = base + idx; + tmpPtr[thdIdx] += pow(matPtr[pos], 2); + idx += thdNum; + } + __syncthreads(); + /* b. dual add within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx) { + tmpPtr[thdIdx] += tmpPtr[pos]; + } + } + __syncthreads(); + } + if (thdIdx == 0) { + normPtr[rowIdx] = sqrt(tmpPtr[0]); + } + } +} + +/* cz277 - max norm */ +__global__ void HKern_RedMaxElementValue(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + extern __shared__ NFloat tmpPtr[]; + int thdIdx, rowIdx, thdNum, base, idx, incr, pos; + + thdIdx = threadIdx.x; /* num threads per block */ + rowIdx = blockIdx.x; /* block index, i.e., row num (minibatch size) */ + thdNum = min(blockDim.x, col); + if (thdIdx < thdNum && rowIdx < row) { + base = rowIdx * col; + /* find the max val for current frame (rowIdx) and store it in tmpPtr[thdIdx] */ + /* a. collect the maxes for the groups */ + idx = thdIdx; + tmpPtr[thdIdx] = srcPtr[base + idx]; + idx += thdNum; + while (idx < col) { + pos = base + idx; + if (tmpPtr[thdIdx] < srcPtr[pos]) { + tmpPtr[thdIdx] = srcPtr[pos]; + } + idx += thdNum; + } + __syncthreads(); + /* b. dual max within current block */ + for (idx = thdNum; idx > 1; idx = incr) { + incr = idx / 2; + if (idx % 2 != 0) { + ++incr; + } + if (thdIdx < incr) { + pos = thdIdx + incr; + if (pos < idx && tmpPtr[thdIdx] < tmpPtr[pos]) { + tmpPtr[thdIdx] = tmpPtr[pos]; + } + } + __syncthreads(); + } + /*__syncthreads();*/ + if (thdIdx == 0) + dstPtr[rowIdx] = sqrt(tmpPtr[0]); + } +} + +__global__ void HKern_DivideNMatrixByRow(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr) { + int pos, rowIdx; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < row * col) { + rowIdx = (int) pos / col; + dstPtr[pos] = srcPtr[pos] / normPtr[rowIdx]; + } +} + +/* --------------------------- HFBLat Kerns ------------------------ */ + +/* cz277 - cuda fblat */ +__global__ void HKern_Setotprob4q(int T, NFloat *llhPtr, int ncols, int *qLo, int *qHi, int Q, float probScale, AcousticDev *acList) { + int pos, tIdx, tRel, qIdx, s, Nq1; + AcousticDev *curAc; + NFloat *otprob; + NFloat *matptr; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < T * Q) { + tIdx = pos / Q + 1; + qIdx = pos % Q + 1; + if (qIdx >= qLo[tIdx] && qIdx <= qHi[tIdx]) { + curAc = &acList[qIdx]; + Nq1 = curAc->Nq + 1; + if (tIdx >= curAc->t_start && tIdx <= curAc->t_end) { /* q is active at t */ + matptr = llhPtr + (tIdx - 1) * ncols; + tRel = tIdx - curAc->t_start + 1; + otprob = curAc->otprob + tRel * Nq1; + for (s = 2; s < curAc->Nq; ++s) { + otprob[s] = matptr[curAc->indexes[s] - 1]; + } + } + } + } +} + + +/* cz277 - cuda fblat */ +__device__ NFloat LAddDev(NFloat x, NFloat y) { + NFloat temp, diff, z; + + if (x < y) { + temp = x; + x = y; + y = temp; + } + diff = y - x; + if (diff < -23.025851) { + if (x < LSMALL) { + return LZERO; + } + else { + return x; + } + } + else { + z = exp(diff); + return x + log(1.0 + z); + } +} + +/* cz277 - cuda fblat */ +__global__ void HKern_SetModelPlus(int Q, AcousticDev *acList) { + int tIdx, tRel, qIdx, Nq1, i, j; + AcousticDev *curAc; + NFloat *bqt, *bqt1, x; + + qIdx = (blockIdx.x * blockDim.x) + threadIdx.x; + if (qIdx < Q) { + qIdx += 1; + curAc = acList + qIdx; + Nq1 = curAc->Nq + 1; + for (tIdx = curAc->t_end; tIdx >= curAc->t_start; --tIdx) { + tRel = tIdx - curAc->t_start + 1; + /* SetModelPlus subroutine */ + x = LZERO; + bqt = &curAc->betaPlus[tRel * Nq1]; + bqt1 = &curAc->betaPlus[(tRel + 1) * Nq1]; + if (tIdx == curAc->t_end) + bqt[curAc->Nq] = 0; + else + bqt[curAc->Nq] = LZERO; + for (i = 2; i < curAc->Nq; ++i) { + x = bqt[curAc->Nq] + curAc->transp[i * Nq1 + curAc->Nq]; + if (tIdx + 1 <= curAc->t_end) { /* in beam next time frame */ + for (j = 2; j < curAc->Nq; ++j) { + x = LAddDev(x, bqt1[j] + curAc->transp[i * Nq1 + j]); + } + } + x += curAc->otprob[tRel * Nq1 + i]; + bqt[i] = x; + } + x = LZERO; + for (i = 2; i < curAc->Nq; ++i) { + x = LAddDev(x, bqt[i] + curAc->transp[1 * Nq1 + i]); + } + bqt[1] = x; + } + /* neet to set the total accumulated acoustics (tRel ~ tIdx = curAc->t_start) */ + if (curAc->SP == TRUE) + curAc->aclike = curAc->transp[1 * Nq1 + curAc->Nq]; + else + curAc->aclike = curAc->betaPlus[tRel * Nq1 + 1]; + } +} + + +/* cz277 - cuda fblat */ +__global__ void HKern_ZeroAlphas(int T, int Q, AcousticDev *acList) { + int i, pos, Nq1, tIdx, tRel, qIdx; + AcousticDev *curAc; + NFloat *alpha; + + pos = (blockIdx.x * blockDim.x) + threadIdx.x; + if (pos < T * Q) { + tIdx = pos / Q + 1; + qIdx = pos % Q + 1; + curAc = &acList[qIdx]; + /* q is active at t */ + if (tIdx >= curAc->t_start && tIdx <= curAc->t_end) { + tRel = tIdx - curAc->t_start + 1; + Nq1 = curAc->Nq + 1; + alpha = &curAc->alphaPlus[tRel * Nq1]; + if (curAc->SP == FALSE) { + for (i = 1; i < Nq1; ++i) { + alpha[i] = LZERO; + } + } + } + } +} + + +/* cz277 - cuda fblat */ +__global__ void HKern_StepAlpha(int Q, AcousticDev *acList) { + int tIdx, qIdx, Nq1, i, j, tRel; + AcousticDev *curAc; + NFloat *aq, *laq, x = 0.0, y, a; + NFloat *outprob; + + qIdx = (blockIdx.x * blockDim.x) + threadIdx.x; + if (qIdx < Q) { + qIdx += 1; + curAc = acList + qIdx; + /* for each time */ + for (tIdx = curAc->t_start; tIdx <= curAc->t_end; ++tIdx) { + tRel = tIdx - curAc->t_start + 1; + Nq1 = curAc->Nq + 1; + aq = &curAc->alphaPlus[tRel * Nq1]; + laq = (tIdx - 1 >= curAc->t_start && tIdx - 1 <= curAc->t_end)? &curAc->alphaPlus[(tRel - 1) * Nq1]: NULL; + /* outprob != NULL ?? */ + outprob = &curAc->otprob[tRel * Nq1]; + if (tIdx == curAc->t_start) + aq[1] = curAc->locc - curAc->aclike; + else + aq[1] = LZERO; + x = LZERO; + for (j = 2; j < curAc->Nq; ++j) { + a = curAc->transp[1 * Nq1 + j]; + x = (a > LSMALL)? a + aq[1]: LZERO; + for (i = 2; i <= curAc->Nq; ++i) { + a = curAc->transp[i * Nq1 + j]; + y = (laq? laq[i]: LZERO); + if (a > LSMALL && y > LSMALL) { + x = LAddDev(x, y + a); + /*x = log(x + y + a);*/ + } + } + aq[j] = x + outprob[j]; + } + x = LZERO; + for (i = 2; i < curAc->Nq; ++i) { + a = curAc->transp[i * Nq1 + curAc->Nq]; + y = aq[i]; + if (a > LSMALL && y > LSMALL) { + x = LAddDev(x, y + a); + /*x = log(x + y + a);*/ + } + } + aq[curAc->Nq] = x; + /* work out the exit problem for checking purpose */ + } + } +} + + +/* --------------------------- Trace Flags ------------------------ */ + +/* */ +void SyncDev2Host(void *devPtr, void *hostPtr, size_t size) { + cudaMemcpy(hostPtr, devPtr, size, cudaMemcpyDeviceToHost); +} + +/* */ +void SyncHost2Dev(void *hostPtr, void *devPtr, size_t size) { + cudaMemcpy(devPtr, hostPtr, size, cudaMemcpyHostToDevice); +} + +/* */ +void DevDispose(void *devPtr, size_t size) { + cudaFree(devPtr); + GPUMemUsed -= size; +} + +/* */ +Boolean DevNew(void **devAddr, size_t size) { + if (cudaMalloc(devAddr, size) != cudaSuccess) + return FALSE; + GPUMemUsed += size; + return TRUE; +} + +/* */ +void ShowGPUMemUsage(void) { + printf("(More than) %luMB space allocated in GPU %d memory\n", GPUMemUsed / 1048576, GPUDevId); +} + +/* */ +void SetNSegmentCUDA(NFloat val, NFloat *segPtr, int segLen) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SetNSegmentCUDA: Block number exceeds the maximum"); + HKern_SetNSegment<<>>(val, segPtr, segLen); +} + +/* */ +void ClearNSegmentCUDA(NFloat *segPtr, int segLen) { + int nBlocks; + cudaError_t status; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ClearNSegmentCUDA: Block number exceeds the maximum"); + /*HKern_SetNSegment<<>>(0, segPtr, segLen);*/ + status = cudaMemset(segPtr, 0, segLen * sizeof(NFloat)); + if (status != cudaSuccess) + HError(8822, (char *)"ClearNSegmentCUDA: cudaMemset funtion failed"); + /*cudaDeviceSynchronize();*/ +} + + +/* */ +void CopyNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDcopy(handle, segLen, srcPtr, 1, dstPtr, 1); +#else + status = cublasScopy(handle, segLen, srcPtr, 1, dstPtr, 1); +#endif + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"CopyNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* */ +void AddNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + cublasStatus_t status; + const NFloat alpha = 1.0; + +#ifdef DOUBLEANN + status = cublasDaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#else + status = cublasSaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#endif + + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"AddNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* cz277 - l2 fix */ +void AddScaledNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr) { + cublasStatus_t status; + const NFloat alpha = scale; + +#ifdef DOUBLEANN + status = cublasDaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#else + status = cublasSaxpy(handle, segLen, &alpha, srcPtr, 1, dstPtr, 1); +#endif + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"AddScaledNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* */ +void ScaleNSegmentCUDA(int segLen, NFloat scale, NFloat *valPtr) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDscal(handle, segLen, &scale, valPtr, 1); +#else + status = cublasSscal(handle, segLen, &scale, valPtr, 1); +#endif + if (status != CUBLAS_STATUS_SUCCESS) + HError(8822, (char *)"ScaleNSegmentCUDA: CUBLAS library copy function failed"); +} + +/* */ +void ScaledSelfAddNSegmentCUDA(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ScaledSelfAddNSegmentCUDA: Block number exceeds the maximum"); + HKern_ScaledSelfAddNSegment<<>>(rhPtr, segLen, scale, lhPtr); +} + +/* */ +void DupNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int nBlocks; + + nBlocks = CEIL(segLen * times, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"DupNSegmentCUDA: Block number exceeds the maximum"); + HKern_DupNSegment<<>>(srcPtr, segLen, dstPtr, times); +} + +/* */ +void SubNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SubNSegmentCUDA: Block number exceeds the maximum"); + HKern_SubNSegment<<>>(lhPtr, rhPtr, segLen, resPtr); +} + +/* */ +void MulNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"MulNSegmentCUDA: Block number exceeds the maximum"); + HKern_MulNSegment<<>>(lhPtr, rhPtr, segLen, resPtr); +} + +/* cz277 - pact */ +void ApplyAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyAffineActCUDA: Block number exceeds the maximum"); + HKern_ApplyAffineAct<<>>(srcPtr, row, col, scalePtr, shiftPtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyDAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDAffineActCUDA: Block number exceeds the maximum"); + HKern_ApplyDAffineAct<<>>(srcPtr, row, col, scalePtr, shiftPtr, dstPtr); +} + + +/* cz277 - pact */ +void ApplyTrAffineActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = 2 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrStdDevAffineActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrAffineAct<<>>(errPtr, actPtr, row, col, scalePtr, shiftPtr, accFlag, dScalePtr, dShiftPtr); +} + + +/* cz277 - laf */ +void AccMeanNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"AccMeanNSegmentCUDA: Block number exceeds the maximum"); + HKern_AccMeanNSegment<<>>(valPtr, row, col, tSamp, meanPtr); +} + +/* cz277 - laf */ +void AccVarianceNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"AccVarianceNSegmentCUDA: Block number exceeds the maximum"); + HKern_AccVarianceNSegment<<>>(valPtr, row, col, tSamp, meanPtr, varPtr); +} + +/* cz277 - pact */ +void ApplyParmReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyParmReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyParmReLUAct<<>>(srcPtr, row, col, posPtr, negPtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyDParmReLUActCUDA(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDParmReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyDParmReLUAct<<>>(inpPtr, row, col, posPtr, negPtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyTrParmReLUActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = 2 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrParmReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrParmReLUAct<<>>(errPtr, inpPtr, row, col, accFlag, dPosPtr, dNegPtr); +} + +/* cz277 - pact */ +void ApplyPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyPReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyPReLUAct<<>>(srcPtr, row, col, scalePtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyDPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDPReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyDPReLUAct<<>>(srcPtr, row, col, scalePtr, dstPtr); +} + +/* cz277 - pact */ +void ApplyTrPReLUActCUDA(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrPReLUActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrPReLUAct<<>>(errPtr, srcPtr, row, col, scalePtr, accFlag, dScalePtr); +} + +/* */ +void ApplyReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyReLActCUDA: Block number exceeds the maximum"); + HKern_ApplyReLUAct<<>>(srcPtr, len, scale, dstPtr); +} + +/* */ +void ApplyDReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDReLActCUDA: Block number exceeds the maximum"); + HKern_ApplyDReLUAct<<>>(srcPtr, len, scale, dstPtr); +} + +/* */ +void ApplyDLinearActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDLinearActCUDA: Block number exceeds the maximum"); + HKern_ApplyDLinearAct<<>>(srcPtr, len, dstPtr); +} + +void ApplyLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyLHUCSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyLHUCSigmoidAct<<>>(srcPtr, row, col, rolePtr, dstPtr); +} + +void ApplyDLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDLHUCSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDLHUCSigmoidAct<<>>(srcPtr, row, col, rolePtr, dstPtr); +} + +void ApplyTrLHUCSigmoidActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrLHUCSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrLHUCSigmoidActCUDA<<>>(errPtr, actPtr, row, col, rolePtr, accFlag, dRolePtr); +} + +void ApplyPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyPSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyPSigmoidAct<<>>(srcPtr, row, col, etaPtr, dstPtr); +} + +void ApplyDPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDPSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDPSigmoidAct<<>>(srcPtr, row, col, etaPtr, dstPtr); +} + +void ApplyTrPSigmoidActCUDA(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrPSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrPSigmoidActCUDA<<>>(errPtr, srcPtr, etaPtr, row, col, accFlag, dEtaPtr); +} + + +void ApplyParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyParmSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyParmSigmoidAct<<>>(srcPtr, row, col, etaPtr, gammaPtr, thetaPtr, dstPtr); +} + +void ApplyDParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row * col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDParmSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDParmSigmoidAct<<>>(srcPtr, row, col, etaPtr, gammaPtr, thetaPtr, dstPtr); +} + +void ApplyTrParmSigmoidActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = 3 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTrParmSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyTrParmSigmoidActCUDA<<>>(errPtr, inpPtr, row, col, etaPtr, gammaPtr, thetaPtr, accFlag, dEtaPtr, dGammaPtr, dThetaPtr); +} + + +/* */ +void ApplySigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplySigmoidAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyDSigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDSigmoidActCUDA: Block number exceeds the maximum"); + HKern_ApplyDSigmoidAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyTanHActCUDA: Block number exceeds the maximum"); + HKern_ApplyTanHAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyDTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyDTanHActCUDA: Block number exceeds the maximum"); + HKern_ApplyDTanHAct<<>>(srcPtr, len, dstPtr); +} + + +/* */ +void ApplyRedSoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks, sBytes; + + nBlocks = row; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyRedSoftmaxActCUDA: Block number exceeds the maximum"); + HKern_ApplyRedSoftmaxAct<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +void ApplySoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(row, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftmaxActCUDA: Block number exceeds the maximum"); + HKern_ApplySoftmaxAct<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +void ApplySoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftReLActCUDA: Block number exceeds the maximum"); + HKern_ApplySoftReLAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyDSoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftReLActCUDA: Block number exceeds the maximum"); + HKern_ApplyDSoftReLAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplySoftSignActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplySoftSignActCUDA: Block number exceeds the maximum"); + HKern_ApplySoftSignAct<<>>(srcPtr, len, dstPtr); +} + +/* */ +void ApplyLogTransCUDA(NFloat *srcPtr, int len, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ApplyLogTransCUDA: Block number exceeds the maximum"); + HKern_ApplyLogTrans<<>>(srcPtr, len, dstPtr); +} + +/* */ +void RedSumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr) { + int nBlocks, sBytes; + + nBlocks = col; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"RedSumNMatrixByColCUDA: Block number exceeds the maximum"); + HKern_RedSumNMatrixByColCUDA<<>>(srcPtr, row, col, accFlag, dstPtr); +} + +/* */ +void SumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(col, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SumNMatrixByColCUDA: Block number exceeds the maximum"); + HKern_SumNMatrixByCol<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +void SquaredNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SquaredNSegmentCUDA: Block number exceeds the maximum"); + HKern_SquaredNSegment<<>>(srcPtr, segLen, dstPtr); +} + +/* */ +void CompAdaGradNSegmentCUDA(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"CompAdaGradNSegmentCUDA: Block number exceeds the maximum"); + HKern_CompAdaGradNSegment<<>>(eta, K, segLen, ssgSeg, nlrSeg); +} + +/* */ +void HNBlasNNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, &alpha, A, m, B, k, &beta, C, m); +#else + status = cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, m, n, k, &alpha, A, m, B, k, &beta, C, m); +#endif + if (status != CUBLAS_STATUS_SUCCESS) { + HError(8890, (char *)"HNBlasNNgemmCUDA: CUBLAS library gemm function failed"); + } +} + +/* */ +void HNBlasNTgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDgemm(handle, CUBLAS_OP_N, CUBLAS_OP_T, m, n, k, &alpha, A, m, B, n, &beta, C, m); +#else + status = cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_T, m, n, k, &alpha, A, m, B, n, &beta, C, m); +#endif + if (status != CUBLAS_STATUS_SUCCESS) { + HError(8890, (char *)"HNBlasNTgemmCUDA: CUBLAS library gemm function failed"); + } +} + +/* */ +void HNBlasTNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + cublasStatus_t status; + +#ifdef DOUBLEANN + status = cublasDgemm(handle, CUBLAS_OP_T, CUBLAS_OP_N, m, n, k, &alpha, A, k, B, k, &beta, C, m); +#else + status = cublasSgemm(handle, CUBLAS_OP_T, CUBLAS_OP_N, m, n, k, &alpha, A, k, B, k, &beta, C, m); +#endif + if (status != CUBLAS_STATUS_SUCCESS) { + HError(8890, (char *)"HNBlasTNgemmCUDA: CUBLAS library gemm function failed"); + } +} + +/* */ +void CalXENTCriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + HKern_CalXENTCriterionCUDA<<<1, THREADPERBLOCK>>>(refPtr, hypPtr, segLen, crtPtr); +} + +/* */ +void CalMMSECriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr) { + HKern_CalMMSECriterionCUDA<<<1, THREADPERBLOCK>>>(refPtr, hypPtr, segLen, crtPtr); +} + +/* */ +void AddNSegmentTargetPenCUDA(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg) { + int nBlocks, size; + + size = row * col; + nBlocks = CEIL(size, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"AddNVectorTargetPenCUDA: Block number exceeds the maximum"); + + HKern_AddSegmentTargetPen<<>>(srcSeg, penSeg, row, col, dstSeg); +} + +void FindMaxElementCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int nBlocks, sBytes; + + nBlocks = row; + sBytes = 2 * sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"FindMaxElementCUDA: Block number exceeds the maximum"); + HKern_RedMaxElementIndex<<>>(srcPtr, row, col, dstPtr); +} + +/* */ +/*void SubNSegmentByConstCUDA(NFloat *srcSeg, int segLen, NFloat constVal, NFloat *dstSeg) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(9999, (char *)"SubNSegmentByConstCUDA: Block number exceeds the maximum"); + + HKern_SubNSegmentByConst<<>>(srcSeg, segLen, constVal, dstSeg); +}*/ + +/* cz277 - semi */ +/* */ +void ShiftNSegmentValsCUDA(NFloat *srcSeg, int segLen, NFloat shiftVal, NFloat *dstSeg) { + int nBlocks; + + nBlocks = CEIL(segLen, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ShiftNSegmentValsCUDA: Block number exceeds the maximum"); + + HKern_ShiftNSegmentVals<<>>(srcSeg, segLen, shiftVal, dstSeg); +} + +/* cz277 - 1007 */ +void CopyPartialNSegmentCUDA(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + int len, nBlocks; + + len = minRow * minCol; + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"CopyPartialNSegmentCUDA: Block number exceeds the maximum"); + HKern_CopyPartialNSegment<<>>(minRow, minCol, srcPtr, srcCol, dstPtr, dstCol); +} + +/* --------------------------- HFBLat funcs ------------------------ */ + +/* cz277 - cuda fblat */ +void SetModelBetaPlusCUDA(int T, NMatrix *llhMat, int *qLo, int *qHi, int Q, float probScale, AcousticDev *acList) { + int nBlocks; + + /* t in [1 ... T]; q in [1 ... Q] */ + nBlocks = CEIL(T * Q, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"SetModelBetaPlusCUDA: Block number exceeds the maximum"); + /* setotprob */ + HKern_Setotprob4q<<>>(T, llhMat->devElems, llhMat->colNum, qLo, qHi, Q, probScale, acList); + /* set model beta plus */ + nBlocks = CEIL(Q, THREADPERBLOCK); + HKern_SetModelPlus<<>>(Q, acList); + +} + + +/* cz277 - cuda fblat */ +void ZeroAlphasCUDA(int T, int Q, AcousticDev *acList) { + int nBlocks; + + nBlocks = CEIL(T * Q, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"ZeroAlphasCUDA: Block number exceeds the maximum"); + HKern_ZeroAlphas<<>>(T, Q, acList); +} + + +/* cz277 - cuda fblat */ +void StepAlphaCUDA(int Q, AcousticDev *acList) { + int nBlocks; + + nBlocks = CEIL(Q, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"StepAlphaCUDA: Block number exceeds the maximum"); + HKern_StepAlpha<<>>(Q, acList); +} + +/* cz277 - gradlim */ +void ClipNSegmentValsCUDA(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg) { + int nBlocks; + + nBlocks = CEIL(len, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"LimitNSegmentValsCUDA: Block number exceeds the maximum"); + HKern_ClipNSegmentVals<<>>(srcSeg, len, upperLim, lowerLim, dstSeg); +} + +/* cz277 - max norm */ +void CalNMatrixL2NormByRowCUDA(NFloat *matPtr, int row, int col, NFloat *normPtr) { + int nBlocks, sBytes; + + nBlocks = row; + sBytes = sizeof(NFloat) * THREADPERBLOCK; + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"CalExtNMatrixL2NormCUDA: Block number exceeds the maximum"); + HKern_RedCalNMatrixL2NormByRow<<>>(matPtr, row, col, normPtr); +} + +void DivideNMatrixByRowCUDA(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr) { + int nBlocks, size; + + size = row * col; + nBlocks = CEIL(size, THREADPERBLOCK); + if (nBlocks > MAXBLOCKNUM) + HError(8890, (char *)"DivideNMatrixByRowCUDA: Block number exceeds the maximum"); + + HKern_DivideNMatrixByRow<<>>(srcPtr, row, col, normPtr, dstPtr); +} + + +#ifdef __cplusplus +} +#endif + + +/* --------------------------- End of HCUDA.cu ---------------------------- */ + diff --git a/HTKLib/HCUDA.h b/HTKLib/HCUDA.h new file mode 100755 index 0000000..2ffa47a --- /dev/null +++ b/HTKLib/HCUDA.h @@ -0,0 +1,177 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HCUDA.h CUDA utilities */ +/* ----------------------------------------------------------- */ + +/* !HVER!HCUDA: 3.5.0 [CUED 12/10/15] */ + +#ifndef _HCUDA_H_ +#define _HCUDA_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/*#include "HShell.h"*/ +#include "HMem.h" + +#define THREADPERBLOCK 256 /* */ +#define MAXBLOCKNUM 2147483647 /* */ + +#define MINCUDAVER 4000 /* */ +#define MINMAJORSMARCH 2 /* */ +#define MINMINORSMARCH 0 /* */ + +/* +#define MINCUDAVER 6000 +#define MINMAJORSMARCH 3 +#define MINMINORSMARCH 0 +*/ + +/* cz277 - cuda fblat */ +/* a simplified structure to the struct Acoustic in HArc.h */ +#ifdef CUDA +typedef struct _AcousticDev{ + int Nq; + int t_start; + int t_end; + NFloat aclike; + NFloat locc; + Boolean SP; + + int *indexes; /* [1 ... Nq] */ + NFloat *transp; /* [1 ... Nq][1 ... Nq] */ + /*NFloat *alphat;*/ /* [1 ... Nq] */ + /*NFloat *alphat1;*/ /* [1 ... Nq] */ + NFloat *betaPlus; /* [t_start ... t_end][1 ... Nq] */ + NFloat *alphaPlus; /* [t_start ... t_end][1 ... Nq] */ + NFloat *otprob; /* [t_start ... t_end][1 ... Nq] */ +} AcousticDev; +#endif + +void InitCUDA(void); /* use to initialize CUDA */ +void StartCUDA(void); /* */ +void StopCUDA(void); /* use to shutdown CUDA */ + +void SyncDev2Host(void *devPtr, void *hostPtr, size_t size); +void SyncHost2Dev(void *hostPtr, void *devPtr, size_t size); +void DevDispose(void *devPtr, size_t size); +Boolean DevNew(void **devAddr, size_t size); +void ShowGPUMemUsage(void); + +/*void SetNSegment(NFloat val, NFloat *seg, int len);*/ +void CopyNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr); +void AddNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr); +void ScaleNSegmentCUDA(int segLen, NFloat scale, NFloat *valPtr); +void ScaledSelfAddNSegmentCUDA(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr); +void DupNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times); +void SubNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr); +void MulNSegmentCUDA(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr); +/* cz277 - laf */ +void ApplyAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr); +void ApplyDAffineActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr); +void ApplyTrAffineActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr); +void AccMeanNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr); +void AccVarianceNSegmentCUDA(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr); +void ApplyLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr); +void ApplyDLHUCSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr); +void ApplyTrLHUCSigmoidActCUDA(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr); +void ApplyPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr); +void ApplyDPReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr); +void ApplyTrPReLUActCUDA(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr); +void ApplyParmReLUActCUDA(NFloat *srcPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr); +void ApplyDParmReLUActCUDA(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr); +void ApplyTrParmReLUActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr); +void ApplyPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr); +void ApplyDPSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr); +void ApplyTrPSigmoidActCUDA(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr); +void ApplyParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr); +void ApplyDParmSigmoidActCUDA(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr); +void ApplyTrParmSigmoidActCUDA(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr); + +void ApplyReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr); +void ApplyDReLUActCUDA(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr); +void ApplyDLinearActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplySigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyDSigmoidActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyDTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplySoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); +void ApplyRedSoftmaxActCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); +void ApplySoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyDSoftReLActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplySoftSignActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyTanHActCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void ApplyLogTransCUDA(NFloat *srcPtr, int len, NFloat *dstPtr); +void SumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); +void RedSumNMatrixByColCUDA(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr); +void SquaredNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat *dstPtr); +void CompAdaGradNSegmentCUDA(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg); +void HNBlasNNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C); +void HNBlasNTgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C); +void HNBlasTNgemmCUDA(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C); +void FindMaxElementCUDA(NFloat *srcPtr, int row, int col, NFloat *dstPtr); + +void CalXENTCriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr); +void CalMMSECriterionCUDA(NFloat *refPtr, NFloat *hypPtr, int segLen, NFloat *crtPtr); +void AddNSegmentTargetPenCUDA(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg); +/*void SubNSegmentByConstCUDA(NFloat *srcSeg, int segLen, NFloat constVal, NFloat *dstSeg);*/ +/* cz277 - semi */ +void ShiftNSegmentValsCUDA(NFloat *srcSeg, int segLen, NFloat shiftVal, NFloat *dstSeg); +void SetNSegmentCUDA(NFloat val, NFloat *segPtr, int segLen); +void ClearNSegmentCUDA(NFloat *segPtr, int segLen); +void CopyPartialNSegmentCUDA(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol); +/* cz277 - l2 fix */ +void AddScaledNSegmentCUDA(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr); + +/* cz277 - cuda fblat */ +void SetModelBetaPlusCUDA(int T, NMatrix *llhMat, int *qLo, int *qHi, int Q, float probScale, AcousticDev *acList); + +/* cz277 - cuda fblat */ +void ZeroAlphasCUDA(int T, int Q, AcousticDev *acList); +void StepAlphaCUDA(int Q, AcousticDev *acList); + +/* cz277 - gradlim */ +void ClipNSegmentValsCUDA(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg); + +/* cz277 - max norm */ +void CalNMatrixL2NormByRowCUDA(NFloat *matPtr, int row, int col, NFloat *normPtr); +void DivideNMatrixByRowCUDA(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr); + + +#ifdef __cplusplus +} +#endif + +#endif + +/* ----------------------- End of HCUDA.h --------------------------- */ + diff --git a/HTKLib/HDict.c b/HTKLib/HDict.c old mode 100644 new mode 100755 index 9ea9b44..6843c80 --- a/HTKLib/HDict.c +++ b/HTKLib/HDict.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HDict.c Dictionary Storage */ +/* File: HDict.c Dictionary storage */ /* ----------------------------------------------------------- */ -char *hdict_version = "!HVER!HDict: 3.4.1 [CUED 12/03/09]"; +char *hdict_version = "!HVER!HDict: 3.5.0 [CUED 12/10/15]"; char *hdict_vc_id = "$Id: HDict.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" @@ -58,7 +74,7 @@ void InitDict(void) /* VocabHash: return a hash value for given Word LabId */ static int VocabHash(LabId name) { - return (int) (((unsigned) name)%VHASHSIZE); + return (int) (((unsigned long int) name)%VHASHSIZE); } /* NewWord: Add a new word wordName to voc */ diff --git a/HTKLib/HDict.h b/HTKLib/HDict.h old mode 100644 new mode 100755 index b5c8fa1..b7a748f --- a/HTKLib/HDict.h +++ b/HTKLib/HDict.h @@ -3,23 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HDict.h Dictionary Storage */ +/* File: HDict.h Dictionary Storage */ /* ----------------------------------------------------------- */ -/* !HVER!HDict: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HDict: 3.5.0 [CUED 12/10/15] */ + #ifndef _HDICT_H_ #define _HDICT_H_ diff --git a/HTKLib/HExactMPE.c b/HTKLib/HExactMPE.c old mode 100644 new mode 100755 index 0299045..8364357 --- a/HTKLib/HExactMPE.c +++ b/HTKLib/HExactMPE.c @@ -3,21 +3,22 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ @@ -27,7 +28,7 @@ /* File: HExactMPE.c Discriminative training */ /* ----------------------------------------------------------- */ -char *hexactmpe_version = "!HVER!HExactMPE: 3.4.1 [CUED 12/03/09]"; +char *hexactmpe_version = "!HVER!HExactMPE: 3.5.0 [CUED 12/10/15]"; char *hexactmpe_vc_id = "$Id: HExactMPE.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; /* @@ -46,6 +47,7 @@ char *hexactmpe_vc_id = "$Id: HExactMPE.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Ex #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -268,7 +270,7 @@ float DoCorrectness(FBLatInfo *fbInfo, MemHeap *mem, ArcInfo *ai, float prune, if(locc > prune){ /* ... if above prune threshold then attach the 'cn' structure */ if(!PhoneMEE && StartOfWord(a)/*expands to a->pos==0*/){ /* This is the MWE case. Create a cn structure for the first phone of the word. */ LArc *la = a->parentLarc; - int iword = (int)/*from LabId*/ la->end->word->wordName; + int iword = (int)(unsigned long int)la->end->word->wordName; int id = (a->calcArc ? a->calcArc->id : a->id); HArc *b,*lastArc; int x; @@ -285,7 +287,7 @@ float DoCorrectness(FBLatInfo *fbInfo, MemHeap *mem, ArcInfo *ai, float prune, cn->nArcs = la->nAlign; x=1; /*n arcs in cn.*/ lastArc=a; if(a->follTrans) - for(b=a->follTrans->end;b->parentLarc==la;b->follTrans&&(b=b->follTrans->end)){ + for(b=a->follTrans->end;b->parentLarc==la;b=b->follTrans->end){ HArc *cb = (b->calcArc ? b->calcArc : b); x++; b->mpe->cn = (CorrN*)(void*)-1; @@ -329,10 +331,8 @@ float DoCorrectness(FBLatInfo *fbInfo, MemHeap *mem, ArcInfo *ai, float prune, for(x=cn->nArcs;x>1;x--){ /* loop only happens in Quinphone case (when nArcs>1). */ if(b){ - HArc *cb; b=b->follTrans->end; /*so b is last one ... */ b->mpe->cn = (CorrN*)(void*)-1; /* set to -1 for all others but the first...*/ - cb = (b->calcArc ? b->calcArc : b); cn->scaled_aclike += b->ac->aclike * latProbScale + translm(b->precTrans->lmlike)/*should be zero unless inspen used in a funny way.*/; } /* else will be error . */ } @@ -661,7 +661,7 @@ void DoExactCorrectness(FBLatInfo *fbInfo, Lattice *lat){ w=0; for(node=lat->lnodes+0; node->foll; node=node->foll->end) if(node->foll->nAlign > 1 || (node->foll->nAlign==1 && ! IsSilence(node->foll->lAlign[0].label->name))) /* a word [ not sil. ]...*/ - iwords[w++][0] = (int)node->foll->end->word->wordName; /* word is at the node at the end of the arc. */ + iwords[w++][0] = (int)(unsigned long int)node->foll->end->word->wordName; /* word is at the node at the end of the arc. */ for(larc=lat->larcs,a=0;ana;larc++,a++){ if(IsNonSilArc(larc)){ /* Is a word [not sil]*/ @@ -841,5 +841,5 @@ void InitExactMPE(void) } - +/* ------------------------- End of HExactMPE.c ------------------------- */ diff --git a/HTKLib/HExactMPE.h b/HTKLib/HExactMPE.h old mode 100644 new mode 100755 index a06662d..78ee7fc --- a/HTKLib/HExactMPE.h +++ b/HTKLib/HExactMPE.h @@ -3,32 +3,32 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HExactMPE.h MPE implementation (exact) */ +/* File: HExactMPE.h MPE implementation (exact) */ /* ----------------------------------------------------------- */ -/* !HVER!HExactMPE: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HExactMPE: 3.5.0 [CUED 12/10/15] */ /* A (rather long) routine called from HFBLat.c, relating to the exact implementation of MPE. @@ -45,3 +45,5 @@ void InitExactMPE(void); /* set configs. */ void DoExactCorrectness(FBLatInfo *fbInfo, Lattice *lat); #endif +/* ------------------- End of HExactMPE.h -------------------- */ + diff --git a/HTKLib/HFB.c b/HTKLib/HFB.c old mode 100644 new mode 100755 index 63dc748..1971a77 --- a/HTKLib/HFB.c +++ b/HTKLib/HFB.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFB.c: Forward Backward routines module */ +/* File: HFB.c: Forward backward routines module */ /* ----------------------------------------------------------- */ -char *hfb_version = "!HVER!HFB: 3.4.1 [CUED 12/03/09]"; +char *hfb_version = "!HVER!HFB: 3.5.0 [CUED 12/10/15]"; char *hfb_vc_id = "$Id: HFB.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" /* HMM ToolKit Modules */ @@ -44,6 +47,7 @@ char *hfb_vc_id = "$Id: HFB.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -996,7 +1000,6 @@ static void Setotprob(AlphaBeta *ab, FBInfo *fbInfo, ParmBuf pbuf, StreamElem *ste; HLink hmm; LogFloat sum; - PruneInfo *p; int skipstart, skipend; HMMSet *hset; Boolean seenState=FALSE; @@ -1004,7 +1007,6 @@ static void Setotprob(AlphaBeta *ab, FBInfo *fbInfo, ParmBuf pbuf, hset = fbInfo->al_hset; skipstart = fbInfo->skipstart; skipend = fbInfo->skipend; - p = ab->pInfo; otprob = ab->otprob; ReadAsTable(pbuf,t-1,&ot); if (hset->hsKind == TIEDHS) @@ -1158,9 +1160,7 @@ static LogDouble SetBeta(AlphaBeta *ab, FBInfo *fbInfo, UttInfo *utt) HLink hmm; PruneInfo *p; int skipstart, skipend; - HMMSet *hset; - hset = fbInfo->al_hset; skipstart = fbInfo->skipstart; skipend = fbInfo->skipend; pbuf=utt->pbuf; @@ -1751,33 +1751,33 @@ static void UpMixParms(FBInfo *fbInfo, int q, HLink hmm, HLink al_hmm, static void StepForward(FBInfo *fbInfo, UttInfo *utt) { - int q,t,start,end,negs; - DVector aqt,aqt1,bqt,bqt1,bq1t; - HLink al_hmm, up_hmm; - AlphaBeta *ab; - - /* reset the memory heap for alpha for a new utterance */ - /* ResetHeap(&(fbMemInfo.alphaStack)); */ - - ab = fbInfo->ab; - CreateAlpha(ab,fbInfo->al_hset,utt->Q); /* al_hset may be idential to up_hset */ - InitAlpha(ab,&start,&end,utt->Q,fbInfo->skipstart,fbInfo->skipend); - ab->occa = NULL; - if (trace&T_OCC) - CreateTraceOcc(ab,utt); - for (q=1;q<=utt->Q;q++){ /* inc access counters */ - up_hmm = ab->up_qList[q]; - negs = (int)up_hmm->hook+1; - up_hmm->hook = (void *)negs; - } - - ResetObsCache(); - - for (t=1;t<=utt->T;t++) { - - GetInputObs(utt, t, fbInfo->hsKind); - - if (fbInfo->hsKind == TIEDHS) + int q, t, start, end; + unsigned long int negs; + DVector aqt, aqt1, bqt, bqt1, bq1t; + HLink al_hmm, up_hmm; + AlphaBeta *ab; + + /* reset the memory heap for alpha for a new utterance */ + /* ResetHeap(&(fbMemInfo.alphaStack)); */ + ab = fbInfo->ab; + CreateAlpha(ab, fbInfo->al_hset, utt->Q); /* al_hset may be idential to up_hset */ + InitAlpha(ab, &start, &end, utt->Q, fbInfo->skipstart, fbInfo->skipend); + ab->occa = NULL; + if (trace & T_OCC) { + CreateTraceOcc(ab, utt); + } + for (q = 1; q <= utt->Q; q++) { /* inc access counters */ + up_hmm = ab->up_qList[q]; + negs = (unsigned long int)up_hmm->hook + 1; + up_hmm->hook = (void *)negs; + } + ResetObsCache(); + + for (t = 1; t <= utt->T; t++) { + + GetInputObs(utt, t, fbInfo->hsKind); + + if (fbInfo->hsKind == TIEDHS) PrecomputeTMix(fbInfo->al_hset,&(utt->ot),pruneSetting.minFrwdP,0); if (t>1) diff --git a/HTKLib/HFB.h b/HTKLib/HFB.h old mode 100644 new mode 100755 index 5122a27..ed15792 --- a/HTKLib/HFB.h +++ b/HTKLib/HFB.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFB.h: Forward Backward routines module */ +/* File: HFB.h Forward Backward routines module */ /* ----------------------------------------------------------- */ -/* !HVER!HFB: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HFB: 3.5.0 [CUED 12/10/15] */ #ifndef _HFB_H_ #define _HFB_H_ @@ -150,3 +166,6 @@ void PrLog(LogDouble x); #endif #endif /* _HFB_H_ */ + +/* ------------------------- End of HFB.h ------------------------- */ + diff --git a/HTKLib/HFBLat.c b/HTKLib/HFBLat.c old mode 100644 new mode 100755 index a9227ce..d6e3118 --- a/HTKLib/HFBLat.c +++ b/HTKLib/HFBLat.c @@ -3,32 +3,33 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFBLat.c Lattice Forward Backward routines */ +/* File: HFBLat.c Lattice forward backward routines */ /* ----------------------------------------------------------- */ -char *hfblat_version = "!HVER!HFBLat: 3.4.1 [CUED 12/03/09]"; -char *hfblat_vc_id = "$Id: HFBLat.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; +char *hfblat_version = "!HVER!HFBLat: 3.5.0 [CUED 12/10/15]"; +char *hfblat_vc_id = "$Id: HFBLat.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; /* Performs forward/backward alignment @@ -43,6 +44,7 @@ char *hfblat_vc_id = "$Id: HFBLat.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -57,6 +59,10 @@ char *hfblat_vc_id = "$Id: HFBLat.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include #include +/*#ifdef CUDA +#include "HCUDA.h" +#endif*/ + #if 0 float _exp(float x){ int _errno=errno; @@ -81,6 +87,8 @@ float _exp(float x){ static float minFrwdP = 10.0; /* mix prune threshold */ static int trace = 1; /* Trace level */ +static Boolean matchMPETone = FALSE; /* use variable length informatiln in MPE cost */ +static char *matchMPEMask = NULL; /* mask to use on fixed length information */ static Boolean PhoneMEE = TRUE; /*IMPORTANT*/ /* If true and the MPE routines are called, do MPE, else MWE (word level) */ static Boolean CalcAsError = FALSE; /* if TRUE, new way of calc'ing error... */ static Boolean PhoneMEEUseContext = FALSE; /*Compare phones-in-context. I doubt you would want this true, anyway it makes little difference.*/ @@ -126,6 +134,13 @@ static FBLatInfo *fbInfo; /* current fbInfo, so don't have to pass it around. */ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; +/* Local stack to allow storage of internal structrures */ +static MemHeap infoStack; + +/* cz277 - cuda fblat */ +#ifdef CUDA +static Boolean FBLatCUDA = FALSE; +#endif /* some macros and definitions.. */ @@ -165,13 +180,15 @@ typedef struct _CorrectArcList{ /* returns phone (with no context) as an identifying int. Turns a-b+c --> b and makes it into an integer. */ int GetNoContextPhone(LabId phone, int *nStates_quinphone/*actually,number of HMMs per phone*/, int *state_quinphone, HArc *a, int *frame_end){ - char _buf[MAXSTRLEN], *buf=_buf,*tmp; int i,len; + char _buf[MAXSTRLEN], *buf=_buf,*tmp, *posSt, *tonSt; + int i,len; + char cntxt[MAXSTRLEN], mpeCntxt[MAXSTRLEN]; int ans; char *lab = phone->name; if(PhoneMEEUseContext){ - if(Quinphone) HError(1, "Quinphone not compatible with context phones..."); - return (int) phone; + if(Quinphone) HError(8401, "Quinphone not compatible with context phones..."); + return (int) (unsigned long int)phone; } strcpy(buf,lab); #ifdef SUPPORT_QUINPHONE @@ -185,24 +202,60 @@ int GetNoContextPhone(LabId phone, int *nStates_quinphone/*actually,number of HM } else { /* x_n_nnn */ int i; *tmp='\0'; - if(!(tmp = strchr(buf,'_'))) HError(1, "Unrecognised quinphone %s", phone->name); + if(!(tmp = strchr(buf,'_'))) HError(8420, "Unrecognised quinphone %s", phone->name); *tmp='\0'; *nStates_quinphone = 3; - if ( (*state_quinphone = i = tmp[1]-(int)'0') < 2 || i > 4) /* 2,3,4 */ HError(1, "Unrecognised quinphone %s [maybe more states than expected? Just change this line].", phone->name); + if ( (*state_quinphone = i = tmp[1]-(int)'0') < 2 || i > 4) /* 2,3,4 */ HError(8420, "Unrecognised quinphone %s [maybe more states than expected? Just change this line].", phone->name); if(i==2 && frame_end!=NULL){ - if(!a || !a->follTrans || !a->follTrans->end->follTrans) HError(1, "Problem with arc structure in quinphones..."); + if(!a || !a->follTrans || !a->follTrans->end->follTrans) HError(8420, "Problem with arc structure in quinphones..."); *frame_end=a->follTrans->end->follTrans->end->t_end; /*set frame_end*/ } goto get_id;/*return GetId(buf);*/ } - } else HError(1, "Unrecognised quinphone %s", phone->name); + } else HError(8420, "Unrecognised quinphone %s", phone->name); } #endif if((tmp=strchr(buf,'-'))){ buf=tmp+1; } if((tmp=strchr(buf,'+'))){ *tmp='\0'; } get_id: + /* Need to include options for taking into account additional context information */ + posSt=strchr(buf,'^'); + tonSt=strchr(buf,';'); + if ((posSt != NULL) || (tonSt != NULL)) { + if ((posSt != NULL) && (matchMPEMask != NULL)) { + tmp = posSt+1; i=0; + while ((*tmp != ';') && (*tmp != '\0')) { + cntxt[i] = *tmp; + i++; tmp++; + } + cntxt[i] = '\0'; + if (!(MaskMatch(matchMPEMask,mpeCntxt,cntxt))) { + HError(8490,"Can't match MPE mask with context"); + } + /* copy the context back in */ + tmp = posSt+1; i=0; + while (mpeCntxt[i] != '\0') { + *tmp = mpeCntxt[i]; + tmp++; i++; + } + } else { + if (posSt == NULL) tmp=tonSt; + else tmp=posSt; + } + if ((matchMPETone == FALSE) || (tonSt == NULL)) { + *tmp = '\0'; + } else { + *tmp = ';'; + tmp++; tonSt++; + while (*tonSt != '\0') { + *tmp = *tonSt; + tmp++; tonSt++; + } + *tmp = '\0'; + } + } ans=0; tmp=buf; for(i=1,len=0;*buf;buf++,i<<=8,len++){ ans = ((int)ans + i * *buf); @@ -210,7 +263,7 @@ int GetNoContextPhone(LabId phone, int *nStates_quinphone/*actually,number of HM /* Want to return an integer identifier for the string. Put the string into an integer if it is <4 chars long, otherwise call GetLabId. Calling GetLabId too much can be inefficient so I use this approach instead for short phones. */ - if(len > sizeof(int)) return (int) GetLabId(tmp, TRUE); + if(len > sizeof(int)) return (int) (unsigned long int)GetLabId(tmp, TRUE); else return ans; } @@ -230,9 +283,11 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ int t; int larcid; CorrectArcList **correctArc; + correctArc=New(&fbInfo->tempStack, sizeof(CorrectArcList*)*(fbInfo->T+1)); ResetObsCache(); - if(!numLat) HError(-1, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); + + if(!numLat) HError(-8421, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); for(t=1;t<=fbInfo->T;t++) correctArc[t] = NULL; { @@ -252,7 +307,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ { LabId label = numLat->larcs[larcid].lAlign[seg].label; if(!PhoneMEEUseContext) i_label = GetNoContextPhone(label,&quinphone_nstates,&quinphone_state,NULL,NULL); - else i_label = (int)label; /* Use address of LabId. */ + else i_label = (int)(unsigned long int)label; /* Use address of LabId. */ } end_time = start_time + numLat->larcs[larcid].lAlign[seg].dur; @@ -263,12 +318,12 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ seg++; /* Use one more state.. */ label = numLat->larcs[larcid].lAlign[seg].label; if(seg>=numLat->larcs[larcid].nAlign){ /*outer loop condition not still true..*/ - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); } end_time += numLat->larcs[larcid].lAlign[seg].dur; /* Confirm correct phone + pos: */ if(!(i_label == GetNoContextPhone(label,&dummy,&quinphone_newstate,NULL,NULL) && quinphone_newstate == quinphone_state+1)) - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); quinphone_state = quinphone_newstate; } } @@ -301,7 +356,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ #endif ca = New(&fbInfo->tempStack, sizeof(CorrectArc)); ca->start = i_start; ca->end = i_end; - ca->i_label = (int)numLat->larcs[larcid].end->word->wordName; + ca->i_label = (int)(unsigned long int)numLat->larcs[larcid].end->word->wordName; for(i=i_start;i<=i_end;i++){ CorrectArcList *cal = New(&fbInfo->tempStack, sizeof(CorrectArcList)); @@ -309,8 +364,9 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ } } } + #ifdef SUPPORT_QUINPHONE - if(PhoneMEEUseContext&&Quinphone) HError(1, "Context and quinphone not compatible."); + if(PhoneMEEUseContext&&Quinphone) HError(8420, "Context and quinphone not compatible."); #endif /*now set the correctness field (for MPE). */ if(PhoneMEE){ @@ -331,7 +387,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ /*get phone start&end times.*/ i_start=a->t_start;i_end=a->t_end; if(!PhoneMEEUseContext) iphone = GetNoContextPhone(phone,&quinphone_nstates,&quinphone_state, a, &i_end); - else iphone = (int)phone; + else iphone = (int)(unsigned long int)phone; #ifdef SUPPORT_QUINPHONE if(Quinphone && quinphone_nstates>1 && quinphone_state > 2){ ZeroCorrectness = TRUE; } #endif @@ -386,7 +442,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ LabId word = a->word; int currBegin=-1,currEnd=-1; float currCorrect = -1; /*-1 is the min correctness (for wrong phones).*/ - if(!word) HError(1, "word is zero...coding error."); + if(!word) HError(8491, "word is zero...coding error."); start_time = la->start->time; end_time = la->end->time; i_start = 1 + TimeToNFrames(start_time, fbInfo->aInfo); @@ -400,7 +456,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ otherWord = cal->h->i_label; /*is actually the (int)LabId in this case.*/ proportion = (float)(MIN(i_end,currEnd)-MAX(i_start,currBegin)+1)/ ((float)(currEnd-currBegin+1)); - if(otherWord == (int)word) + if(otherWord == (int)(unsigned long int)word) /*Work out how much overlap we have with the correct phone*/ /* ref length div by overlap length */ currCorrect = MAX(currCorrect, InsCorrectness + proportion*(-InsCorrectness+1)); @@ -423,7 +479,7 @@ static void SetCorrectness(FBLatInfo *fbInfo, Lattice *numLat){ if(a->calcArc) a->mpe->correctness = a->calcArc->mpe->correctness; } } - if (fbInfo->T != fbInfo->aInfo->T) HError(1, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); + if (fbInfo->T != fbInfo->aInfo->T) HError(8422, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); Dispose(&fbInfo->tempStack, correctArc); } @@ -482,7 +538,7 @@ float GetLowestNegError(int tStart, int tEnd, int tCurr, float curr_corr, float best = MAX(tmp,best); } } - if(best==-100 && *compute_count > 0) HError(-1, "Error in computing approximate error (no matching phone-start found...)"); + if(best==-100 && *compute_count > 0) HError(-8423, "Error in computing approximate error (no matching phone-start found...)"); return best; } } @@ -523,7 +579,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re CorrectArcList **correctArc; correctArc=New(&fbInfo->tempStack, sizeof(CorrectArcList*)*(fbInfo->T+1)); ResetObsCache(); - if(!numLat) HError(-1, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); + if(!numLat) HError(-8421, "MEE mode and no numLat provided. FBLat needs to be given both lattices in this mode."); for(t=1;t<=fbInfo->T;t++) correctArc[t] = NULL; { /* Set up arrays of correct-transcription.. */ @@ -543,7 +599,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re { LabId label = numLat->larcs[larcid].lAlign[seg].label; if(!PhoneMEEUseContext) i_label = GetNoContextPhone(label,&quinphone_nstates,&quinphone_state,NULL,NULL); - else i_label = (int)label; /* Use address of LabId. */ + else i_label = (int)(unsigned long int)label; /* Use address of LabId. */ is_nonsil = (int) ! IsSilence(label->name); } @@ -556,12 +612,12 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re seg++; /* Use one more state.. */ label = numLat->larcs[larcid].lAlign[seg].label; if(seg>=numLat->larcs[larcid].nAlign){ /*outer loop condition not still true..*/ - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); } end_time += numLat->larcs[larcid].lAlign[seg].dur; /* Confirm correct phone + pos: */ if(!(i_label == GetNoContextPhone(label,&dummy,&quinphone_newstate,NULL,NULL) && quinphone_newstate == quinphone_state+1)) - HError(1, "Confused about quinphones...[first quinphone of model was %s", name); + HError(8420, "Confused about quinphones...[first quinphone of model was %s", name); quinphone_state = quinphone_newstate; } } @@ -594,7 +650,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re #endif ca = New(&fbInfo->tempStack, sizeof(CorrectArc)); ca->start = i_start; ca->end = i_end; - ca->i_label = (int)numLat->larcs[larcid].end->word->wordName; + ca->i_label = (int)(unsigned long int)numLat->larcs[larcid].end->word->wordName; for(i=i_start;i<=i_end;i++){ CorrectArcList *cal = New(&fbInfo->tempStack, sizeof(CorrectArcList)); @@ -603,7 +659,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re } } #ifdef SUPPORT_QUINPHONE - if(PhoneMEEUseContext&&Quinphone) HError(1, "Context and quinphone not compatible."); + if(PhoneMEEUseContext&&Quinphone) HError(8420, "Context and quinphone not compatible."); #endif /*now set the correctness field (for MPE). */ if(PhoneMEE){ @@ -623,7 +679,7 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re /*get phone start&end times.*/ i_start=a->t_start;i_end=a->t_end; if(!PhoneMEEUseContext) iphone = GetNoContextPhone(phone,&quinphone_nstates,&quinphone_state, a, &i_end); - else iphone = (int)phone; + else iphone = (int)(unsigned long int)phone; #ifdef SUPPORT_QUINPHONE if(Quinphone && quinphone_nstates>1 && quinphone_state > 2){ ZeroCorrectness = TRUE; } #endif @@ -648,10 +704,10 @@ static void SetCorrectnessAsError(FBLatInfo *fbInfo, Lattice *numLat){ /* re a->mpe->correctness = a->calcArc->mpe->correctness; } } - } else HError(1, "MWE not supported for approximate error..."); + } else HError(8423, "MWE not supported for approximate error..."); } - if (fbInfo->T != fbInfo->aInfo->T) HError(1, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); + if (fbInfo->T != fbInfo->aInfo->T) HError(8422, "Lattice and acoustics mismatch in T (%d[lat],%d[acoustic]): may have to set e.g. FRAMEDUR=x (for x!=0.01) in config file", fbInfo->aInfo->T,fbInfo->T); Dispose(&fbInfo->tempStack, correctArc); } @@ -675,76 +731,105 @@ static void ZeroAlpha(int sq, int eq) } } +#ifdef CUDA +/* cz277 - cuda fblat */ +static void StepAlphaSwapOnly(int t) { + DVector tmp; + int q; + Acoustic *ac; + + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; ++q) { /*swap alphat, alphat1*/ + ac = fbInfo->aInfo->ac + q; + if (!ac->SP) { + tmp = ac->alphat1; + ac->alphat1 = ac->alphat; + ac->alphat = tmp; + } + } +} +#endif + /* StepAlpha: calculate alphat column for time t */ /* Calculates the forward (alpha) likelihoods given the previous alpha likelihoods, i.e. for t-1 */ static void StepAlpha(int t) { - DVector aq,laq,tmp; - float ***outprob; - int i,j,q,Nq; - LogDouble x=0.0,y,a; - HLink hmm; + DVector aq, laq, tmp; + float ***outprob; + int i, j, q, Nq; + LogDouble x = 0.0, y, a; + HLink hmm; + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*swap alphat, alphat1*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + if (!ac->SP) { + tmp = ac->alphat1; + ac->alphat1 = ac->alphat; + ac->alphat = tmp; + } + } - for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*swap alphat, alphat1*/ - Acoustic *ac = fbInfo->aInfo->ac+q; - if(!ac->SP){ tmp = ac->alphat1; ac->alphat1=ac->alphat; ac->alphat=tmp; } - } - - /* Zero any alphas that may be nonzero.*/ - /* not needed. */ - /* if(t>2) + /* Zero any alphas that may be nonzero.*/ + /* not needed. */ + /* if(t>2) ZeroAlpha(fbInfo->aInfo->qLo[t-2],fbInfo->aInfo->qHi[t-2]); / * Because the alphat vectors are swapped over each time, we need to zero the one from t-2. */ - for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*This is just to avoid iterating over all q's.*/ - Acoustic *ac = fbInfo->aInfo->ac+q; + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /*This is just to avoid iterating over all q's.*/ + Acoustic *ac = fbInfo->aInfo->ac+q; - if(t >= ac->t_start && t<=ac->t_end){ /*If it's in the beam...*/ - hmm = ac->hmm; Nq = hmm->numStates; - aq = ac->alphat; laq = (t-1>=ac->t_start&&t-1<=ac->t_end)?ac->alphat1:NULL; - if((outprob = ac->otprob[t]) == NULL) - HError(2322,"StepAlpha: Outprob NULL at time %d model %d in StepAlpha",t,q); - - - - if(t==ac->t_start) aq[1] = ac->locc - ac->aclike; - /* This is the forward log likelihood at the start of the phone model. It is a "cheating" log likelihood + if (t >= ac->t_start && t <= ac->t_end) { /*If it's in the beam...*/ + hmm = ac->hmm; + Nq = hmm->numStates; + aq = ac->alphat; + laq = (t - 1 >= ac->t_start && t - 1 <= ac->t_end) ? ac->alphat1 : NULL; + if ((outprob = ac->otprob[t]) == NULL) { + HError(8491,"StepAlpha: Outprob NULL at time %d model %d in StepAlpha", t, q); + } + if (t == ac->t_start) { + aq[1] = ac->locc - ac->aclike; + } + /* This is the forward log likelihood at the start of the phone model. It is a "cheating" log likelihood in the sense that it is calculated to give the model the log occupancy "locc". */ - else aq[1] = LZERO; /* no entry to the model unless at its start time. */ - - x=LZERO; - for (j=2;jtransP[1][j]; - x = (a>LSMALL)?a+aq[1]:LZERO; - for (i=2;i<=Nq;i++){ - a = hmm->transP[i][j]; y = (laq?laq[i]:LZERO); - if (a>LSMALL && y>LSMALL) - x = LAdd(x,y+a); + else { + aq[1] = LZERO; /* no entry to the model unless at its start time. */ + } + + x = LZERO; + for (j = 2; j < Nq; j++) { /*Calculate the alpha probs for the emitting states.*/ + a = hmm->transP[1][j]; + x = (a > LSMALL) ? a + aq[1] : LZERO; + for (i = 2; i <= Nq; i++) { + a = hmm->transP[i][j]; + y = (laq ? laq[i] : LZERO); + if (a > LSMALL && y > LSMALL) { + x = LAdd(x, y + a); + } + } + aq[j] = x + outprob[j][0][0]; } - aq[j] = x + outprob[j][0][0]; - } - x = LZERO; - for (i=2;itransP[i][Nq]; y = aq[i]; - if (a>LSMALL && y>LSMALL) - x = LAdd(x,y+a); - } - aq[Nq] = x; + x = LZERO; + for (i = 2; i < Nq; i++) { + a = hmm->transP[i][Nq]; + y = aq[i]; + if (a > LSMALL && y > LSMALL) { + x = LAdd(x, y + a); + } + } + aq[Nq] = x; - if(t==ac->t_end){ /*Work out the exit prob, just for checking purposes...... */ - double transP; - hmm = ac->hmm; Nq = hmm->numStates; - transP = hmm->transP[1][Nq]; - aq = ac->alphat; + if (t == ac->t_end) { /*Work out the exit prob, just for checking purposes...... */ + hmm = ac->hmm; + Nq = hmm->numStates; + aq = ac->alphat; - x = aq[Nq]; - if ( fabs(x - ac->locc) > 0.001 ) - HError(1, "StepAlpha: problem with occs.. (fabs(x-locc)=%d (>0.001))",x-ac->locc); /*x is like an occupancy for that segment.*/ - } - } - } + x = aq[Nq]; + if (fabs(x - ac->locc) > 0.001) { + HError(8424, "StepAlpha: problem with occs.. (fabs(x-locc)=%d (>0.001))", x - ac->locc); /*x is like an occupancy for that segment.*/ + } + } + } + } } /* NewOtprobVec: create prob vector size [0..M] */ @@ -802,7 +887,7 @@ static float * ShStrP(Vector v, int t, StreamElem *ste, AdaptXForm *xform, MemHe else { mixp = MOutP(ApplyCompFXForm(mp,v,xform,&det,t),mp); mixp += det; - if(isnan(mixp)) HError(1, "mixp zero..."); + if(isnan(mixp)) HError(8491, "mixp zero..."); pMix->prob = mixp; pMix->time = t; pMix->indx=-1; } x = LAdd(x,MixLogWeight(fbInfo->hset,me->weight)+mixp); @@ -821,128 +906,167 @@ static float * ShStrP(Vector v, int t, StreamElem *ste, AdaptXForm *xform, MemHe /* Setotprob: allocate and calculate otprob matrix at time t */ static void Setotprob(int t) { - int q,j,Nq,s; - float ***outprob; - StreamElem *ste; - HLink hmm; - LogFloat sum; - float local_probscale; + int q,j,Nq,s; + float ***outprob; + StreamElem *ste; + HLink hmm; + LogFloat sum; + float local_probscale; - ReadAsTable(fbInfo->al_pbuf,t-1,&fbInfo->al_ot); - - local_probscale = probScale; /* direct scale on acoustics on state level, usu. 1 */ + /* cz277 - ANN */ + if (fbInfo->hset->annSet != NULL && fbInfo->hsKind != HYBRIDHS) { /* TANDEM */ + /* TODO: Tandem */ + } + else if (fbInfo->al_pbuf != NULL) { + ReadAsTable(fbInfo->al_pbuf,t-1,&fbInfo->al_ot); + } - if (fbInfo->hsKind == TIEDHS) - PrecomputeTMix(fbInfo->hset,&(fbInfo->al_ot),minFrwdP,0); - + local_probscale = probScale; /* direct scale on acoustics on state level, usu. 1 */ + + if (fbInfo->hsKind == TIEDHS) { + PrecomputeTMix(fbInfo->hset,&(fbInfo->al_ot),minFrwdP,0); + } - for (q=fbInfo->aInfo->qHi[t];q>=fbInfo->aInfo->qLo[t];q--) { - if(t>=fbInfo->aInfo->ac[q].t_start && t<=fbInfo->aInfo->ac[q].t_end) { /* HMM is active at this time... */ - Acoustic *ac = fbInfo->aInfo->ac+q; - hmm = ac->hmm; Nq = hmm->numStates; - outprob = ac->otprob[t]; + for (q = fbInfo->aInfo->qHi[t]; q >= fbInfo->aInfo->qLo[t]; q--) { + if(t >= fbInfo->aInfo->ac[q].t_start && t <= fbInfo->aInfo->ac[q].t_end) { /* HMM is active at this time... */ + Acoustic *ac = fbInfo->aInfo->ac + q; + hmm = ac->hmm; + Nq = hmm->numStates; + outprob = ac->otprob[t]; - for (j=2;jsvec[j].info->pdf+1; sum = 0.0; - - - for (s=1;s<=fbInfo->S;s++,ste++){ - switch (fbInfo->hsKind){ - case TIEDHS: /* SOutP deals with tied mix calculation */ - case DISCRETEHS: - if (fbInfo->S==1) { - outprob[j][0] = NewOtprobVec(fbInfo->aInfo->mem,1); - outprob[j][0][0] = SOutP(fbInfo->hset,s,&fbInfo->al_ot, ste); - } else { - outprob[j][s] = NewOtprobVec(fbInfo->aInfo->mem,1); - outprob[j][s][0] = SOutP(fbInfo->hset,s,&fbInfo->al_ot, ste); - } - break; - case PLAINHS: /* x = SOutP(fbInfo->hset,s,&ot,ste); break; commented out by dp10006 since + for (j = 2; j < Nq; j++) { + ste = hmm->svec[j].info->pdf + 1; + sum = 0.0; + + for (s = 1; s <= fbInfo->S; s++, ste++) { + switch (fbInfo->hsKind) { + case TIEDHS: /* SOutP deals with tied mix calculation */ + case DISCRETEHS: + if (fbInfo->S == 1) { + outprob[j][0] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][0][0] = SOutP(fbInfo->hset, s, &fbInfo->al_ot, ste); + } else { + outprob[j][s] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][s][0] = SOutP(fbInfo->hset, s, &fbInfo->al_ot, ste); + } + break; + case PLAINHS: /* x = SOutP(fbInfo->hset,s,&ot,ste); break; commented out by dp10006 since sharing is needed in any case for lattices. */ - case SHAREDHS: - if (fbInfo->S==1) - outprob[j][0] = ShStrP(fbInfo->al_ot.fv[s],t+StartTime,ste,fbInfo->inXForm,fbInfo->aInfo->mem); - else - outprob[j][s] = ShStrP(fbInfo->al_ot.fv[s],t+StartTime,ste,fbInfo->inXForm,fbInfo->aInfo->mem); - break; - default: HError(1, "Unknown hset kind."); - } - if (fbInfo->S==1) - outprob[j][0][0] *= local_probscale; - else{ - outprob[j][s][0] *= local_probscale; - sum += outprob[j][s][0]; - } - } - if (fbInfo->S>1){ - outprob[j][0][0] = sum; - for (s=1;s<=fbInfo->S;s++) - outprob[j][s][0] = sum - outprob[j][s][0]; + case SHAREDHS: + if (fbInfo->S == 1) { + outprob[j][0] = ShStrP(fbInfo->al_ot.fv[s], t + StartTime, ste, fbInfo->inXForm, fbInfo->aInfo->mem); + } + else { + outprob[j][s] = ShStrP(fbInfo->al_ot.fv[s], t + StartTime, ste, fbInfo->inXForm, fbInfo->aInfo->mem); + } + break; + case HYBRIDHS: /* cz277 - ANN */ + if (fbInfo->S == 1) { + outprob[j][0] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][0][0] = fbInfo->hset->annSet->llhMat[1]->matElems[(t - 1) * fbInfo->hset->annSet->outLayers[1]->nodeNum + (ste->targetIdx - 1)]; + } + else { + outprob[j][s] = NewOtprobVec(fbInfo->aInfo->mem, 1); + outprob[j][s][0] = fbInfo->hset->annSet->llhMat[s]->matElems[(t - 1) * fbInfo->hset->annSet->outLayers[s]->nodeNum + (ste->targetIdx - 1)]; + } + break; + default: + HError(8492, "Unknown hset kind."); + } + if (fbInfo->S == 1) { + outprob[j][0][0] *= local_probscale; + } + else { + outprob[j][s][0] *= local_probscale; + sum += outprob[j][s][0]; + } + } + if (fbInfo->S > 1) { + outprob[j][0][0] = sum; + for (s = 1; s <= fbInfo->S; s++) { + outprob[j][s][0] = sum - outprob[j][s][0]; + } + } } - } - } - } + } + } } -void SetModelBetaPlus(int t, int q){ - double x=LZERO; - Acoustic *ac = fbInfo->aInfo->ac+q; - HLink hmm = ac->hmm; - int Nq = hmm->numStates,i,j; - DVector bqt = ac->betaPlus[t],bqt1; - float ***outprob = ac->otprob[t]; - - if(t==ac->t_end) bqt[Nq] = 0; /* We are calculating the acoustic likelihood for each model separately. */ - else bqt[Nq] = LZERO; +void SetModelBetaPlus(int t, int q) { + double x = LZERO; + Acoustic *ac = fbInfo->aInfo->ac + q; + HLink hmm = ac->hmm; + int Nq = hmm->numStates, i, j; + DVector bqt = ac->betaPlus[t], bqt1; + float ***outprob = ac->otprob[t]; + + if(t == ac->t_end) + bqt[Nq] = 0; /* We are calculating the acoustic likelihood for each model separately. */ + else + bqt[Nq] = LZERO; - for(i=2;itransP[i][Nq]; - if(t+1<=ac->t_end){ /*in beam next time frame*/ - bqt1=ac->betaPlus[t+1]; - for(j=2;jtransP[i][j]); - } - x += outprob[i][0][0]; - bqt[i] = x; - } - x=LZERO; - for(i=2;itransP[1][i]); - bqt[1] = x; + for (i = 2; i < Nq; i++) { + x = bqt[Nq] + hmm->transP[i][Nq]; + if (t + 1 <= ac->t_end) { /*in beam next time frame*/ + bqt1 = ac->betaPlus[t + 1]; + for(j = 2; j < Nq; j++) { + x = LAdd(x, bqt1[j] + hmm->transP[i][j]); + } + } + x += outprob[i][0][0]; + bqt[i] = x; + } + x = LZERO; + for (i = 2; i < Nq; i++) + x = LAdd(x, bqt[i] + hmm->transP[1][i]); + bqt[1] = x; } /* SetBetaPlus: calculate gamma and otprob matrices */ static void SetBetaPlus() { - int t,q; /*,lNq=0,q_at_gMax;*/ - LogDouble x; - + int t,q; /*,lNq=0,q_at_gMax;*/ + LogDouble x; - /* - Columns T-1 -> 1. - */ - ResetObsCache(); - for (t=fbInfo->T;t>=1;t--) { - Setotprob(t); - for (q=fbInfo->aInfo->qHi[t];q>=fbInfo->aInfo->qLo[t];q--) { /*MAX(qHi[t],qLo[t]) because of the case for tee models where qHi[t]=qLo[t]-1 .*/ - Acoustic *ac = fbInfo->aInfo->ac + q; - if(t>=ac->t_start && t<=ac->t_end){ /*in beam.*/ - SetModelBetaPlus(t,q); - } - if(t==ac->t_start){ /* We need to set "aclike", the total accumulated acoustic - probability for this frame. */ - if(ac->SP) /* Is a tee model, i.e. zero time, t_end=t_start-1. */ - x = ac->hmm->transP[1][ac->hmm->numStates]; /* beta will not have been set for tee models. */ - else - x = ac->betaPlus[t][1]; /* state 1 of HMM. */ - ac->aclike = x; - } - } - } + /* + Columns T-1 -> 1. + */ + ResetObsCache(); + for (t = fbInfo->T; t >= 1; t--) { + Setotprob(t); + for (q = fbInfo->aInfo->qHi[t]; q >= fbInfo->aInfo->qLo[t]; q--) { /*MAX(qHi[t],qLo[t]) because of the case for tee models where qHi[t]=qLo[t]-1 .*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + if (t >= ac->t_start && t <= ac->t_end) { /*in beam.*/ + SetModelBetaPlus(t,q); + } + if (t == ac->t_start) { /* We need to set "aclike", the total accumulated acoustic probability for this frame. */ + if(ac->SP) /* Is a tee model, i.e. zero time, t_end=t_start-1. */ + x = ac->hmm->transP[1][ac->hmm->numStates]; /* beta will not have been set for tee models. */ + else + x = ac->betaPlus[t][1]; /* state 1 of HMM. */ + ac->aclike = x; + } + } + } + } +/* cz277 - cuda fblat */ +#ifdef CUDA +static void SetBetaPlusCUDA() { + int q; + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + HError(8492, "SetBetaPlusCUDA: The case is not valid for CUDA based FBLat rescore"); + } + SetModelBetaPlusCUDA(fbInfo->aInfo->T, fbInfo->llhMat[1], fbInfo->aInfo->qLoDev, fbInfo->aInfo->qHiDev, fbInfo->aInfo->Q, probScale, fbInfo->aInfo->acDev); + for (q = 1; q <= fbInfo->aInfo->Q; ++q) { + SyncAcousticDev2HostBeta(&fbInfo->aInfo->acDev[q], &fbInfo->aInfo->ac[q], fbInfo->aInfo->mem); + } + +} +#endif void UpSkipTranParms(int q, int t){ @@ -981,7 +1105,6 @@ static void UpTranParms(int t, int q){ N = hmm->numStates; ta = ((TrAcc*)GetHook(hmm->transP)) + local_accindx; if(DoingFourthAcc) tammi = ((TrAcc*)GetHook(hmm->transP)) + add_index; - for(i=1;itran[i], *ai = hmm->transP[i]; for(j=2;j<=N;j++){ @@ -994,8 +1117,7 @@ static void UpTranParms(int t, int q){ x = aqt[i]+ai[N]+bqtPlus[N]; /* bqtPlus[N] lacks likelihood from this time. */ } /* dont do tee transition in this part of the code. */ - - if(x > 0.001) HError(1, "too large transition occ! (%d>0)",x); + if(x > 0.001) HError(8424, "too large transition occ! (%d>0)",x); if (x>MINEARG){ float occmmi,occ; occmmi = exp(x); @@ -1067,18 +1189,17 @@ void DoAllMixUpdates(int t){ int s,m,k,vSize; MixPDF *mp; float Lr, unscaledLr, LrWithSign; - Vector mean,variance,up_otvs,al_otvs,mu_jm; + Vector mean,variance,up_otvs,mu_jm; LogFloat det; float zmean,zmeanlr; - MuAcc *ma,*mammi; + MuAcc *ma,*mammi=NULL; VaAcc *va,*vammi; int local_accindx; for(s=1;s<=fbInfo->S;s++){ float steSumLr = 0.0; vSize = fbInfo->hset->swidth[s]; - al_otvs = fbInfo->al_ot.fv[s]; for(m=0;mcov.var; if(mp->ckind != INVDIAGC && mp->ckind != DIAGC){ - HError(-1, "HFwdBkwdLat.c: expecting INVDIAGC or DIAGC"); + HError(-8493, "HFBLat.c: expecting INVDIAGC or DIAGC"); } /* -------------------- (a) MLLR updates --------------------*/ @@ -1163,7 +1284,7 @@ void DoAllMixUpdates(int t){ } } break; - default: HError(1, "Unknown CKIND."); + default: HError(8492, "Unknown CKIND."); } } else { ma->occ += Lr; @@ -1181,7 +1302,7 @@ void DoAllMixUpdates(int t){ } } } - if(steSumLr > 1.01 || steSumLr < 0.99) HError(-1, "Wrong steSumLr: %f, t=%d, s=%d",steSumLr, t, s); + if(steSumLr > 1.01 || steSumLr < 0.99) HError(-8425, "Wrong steSumLr: %f, t=%d, s=%d",steSumLr, t, s); } for(s=1;s<=fbInfo->S;s++) /*Reset.*/ nPDFs[s] = 0; @@ -1189,178 +1310,179 @@ void DoAllMixUpdates(int t){ /* UpMixParms: update mu/va accs of given hmm */ -static double UpMixParms(int q, HLink hmm, int t, DVector aqt, - DVector aqt1, DVector gqt) +static double UpMixParms(int q, HLink hmm, int t, DVector aqt, DVector aqt1, DVector gqt) { - Acoustic *ac = fbInfo->aInfo->ac+q; - double ans=LZERO; - double ans2=LZERO; - int mx,s,j,m=0,M=0,N,vSize; - TMixRec *tmRec = NULL; - float ***outprob; - LogFloat c_jm,prob=0; - LogDouble x,initx = LZERO; - double Lr,steSumLr; - float tmp; - StreamElem *ste; - MixtureElem *me; - MixPDF *mp=NULL; - WtAcc *wa, *wammi=NULL; - PreComp *pMix; - Boolean mmix=FALSE; /* TRUE if multiple mixture */ - float wght=0; - float mee_acc_scale = fbInfo->AccScale * (fbInfo->MPE? fbInfo->aInfo->ac[q].mpe_occscale: 1 ), - abs_mee_acc_scale = fabs(mee_acc_scale); int local_accindx = (mee_acc_scale > 0 ? fbInfo->num_index : fbInfo->den_index); - - float local_probscale; - - local_probscale = probScale; - N = hmm->numStates; - for (j=2;jotprob[t]; - if(aqt[j]+gqt[j]-outprob[j][0][0]/*-pr*/ > MINEARG){ - ans = LAdd(ans, aqt[j]+gqt[j]-outprob[j][0][0]); /*the total occ.*/ - } - - if(aqt[j]+gqt[j]-outprob[j][0][0] < -minFrwdP) continue; /*go to the next state. This added for the tiedhs case, - to speed things up.*/ - - initx = aqt[j]+gqt[j]-(outprob[j][0][0] * (1 + 1 / local_probscale)); - /*the outprob[j][0][0]*1 is to - get the correct occupancy (since both alpha and gamma contain this states outprob); - and the outprob[j][0][0]*1/probScale is to subtract the (unscaled) prob - so we get the 'initx', which is the x without this timeframe's prob.*/ - - /*Initx is the occupancy for this mixture, divided by the (unscaled) output prob for this state's PDF.*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + double ans = LZERO; + double ans2 = LZERO; + int mx, s, j, m = 0, M = 0, N; + TMixRec *tmRec = NULL; + float ***outprob; + LogFloat c_jm, prob = 0; + LogDouble x, initx = LZERO; + double Lr, steSumLr; + float tmp; + StreamElem *ste; + MixtureElem *me; + MixPDF *mp = NULL; + WtAcc *wa, *wammi = NULL; + PreComp *pMix; + Boolean mmix = FALSE; /* TRUE if multiple mixture */ + float wght = 0; + float mee_acc_scale = fbInfo->AccScale * (fbInfo->MPE ? fbInfo->aInfo->ac[q].mpe_occscale : 1); + float abs_mee_acc_scale = fabs(mee_acc_scale); + int local_accindx = (mee_acc_scale > 0 ? fbInfo->num_index : fbInfo->den_index); + float local_probscale; + + local_probscale = probScale; + N = hmm->numStates; + for (j = 2; j < N; j++) { + outprob = ac->otprob[t]; + if (aqt[j] + gqt[j] - outprob[j][0][0]/*-pr*/ > MINEARG) { + ans = LAdd(ans, aqt[j] + gqt[j] - outprob[j][0][0]); /*the total occ.*/ + } + if (aqt[j] + gqt[j] - outprob[j][0][0] < -minFrwdP) { + continue; /*go to the next state. This added for the tiedhs case, to speed things up.*/ + } + initx = aqt[j] + gqt[j] - (outprob[j][0][0] * (1 + 1 / local_probscale)); + /*the outprob[j][0][0]*1 is to + get the correct occupancy (since both alpha and gamma contain this states outprob); + and the outprob[j][0][0]*1/probScale is to subtract the (unscaled) prob + so we get the 'initx', which is the x without this timeframe's prob.*/ - ste = hmm->svec[j].info->pdf+1; - - for (s=1;s<=fbInfo->S;s++,ste++){ - /* Get observation vector for this state/stream */ - vSize = fbInfo->hset->swidth[s]; - - switch (fbInfo->hsKind){ - case TIEDHS: /* if tied mixtures then we only */ - tmRec = &(fbInfo->hset->tmRecs[s]); /* want to process the non-pruned */ - M = tmRec->topM; /* components */ - mmix = TRUE; - break; - case DISCRETEHS: - M = 1; - mmix = FALSE; - break; - case PLAINHS: - case SHAREDHS: - M = ste->nMix; - mmix = (M>1); - break; - } - - wa = ((WtAcc*)ste->hook) + local_accindx; - if(DoingFourthAcc) wammi = ((WtAcc*)ste->hook) + add_index; - steSumLr = 0.0; /* zero stream occupation count */ - + /*Initx is the occupancy for this mixture, divided by the (unscaled) output prob for this state's PDF.*/ + ste = hmm->svec[j].info->pdf + 1; + + for (s = 1; s <= fbInfo->S; s++, ste++) { + /* Get observation vector for this state/stream */ + switch (fbInfo->hsKind) { + case TIEDHS: /* if tied mixtures then we only */ + tmRec = &(fbInfo->hset->tmRecs[s]); /* want to process the non-pruned */ + M = tmRec->topM; /* components */ + mmix = TRUE; + break; + case DISCRETEHS: + M = 1; + mmix = FALSE; + break; + case PLAINHS: + case SHAREDHS: + M = ste->nMix; + mmix = (M > 1); + break; + } - /* process mixtures */ - for (mx=1;mx<=M;mx++) { - switch (fbInfo->hsKind){ /* Get wght and mpdf */ - case TIEDHS: - m=tmRec->probs[mx].index; - wght=MixWeight(fbInfo->hset,ste->spdf.tpdf[m]); - mp=tmRec->mixes[m]; - break; - case DISCRETEHS: - m=fbInfo->twoDataFiles ? fbInfo->up_ot.vq[s] : fbInfo->al_ot.vq[s]; - wght = 1.0; - mp=NULL; - break; - case PLAINHS: - case SHAREDHS: - m = mx; - me = ste->spdf.cpdf+m; - wght = MixWeight(fbInfo->hset,me->weight); - mp=me->mpdf; - break; + wa = ((WtAcc*) ste->hook) + local_accindx; + if (DoingFourthAcc) { + wammi = ((WtAcc*) ste->hook) + add_index; } - if (wght>MINMIX){ /* For this mixture m, if the weight is nonzero... */ - /* compute mixture likelihood */ - if (!mmix || (fbInfo->hsKind==DISCRETEHS)){ /* Don't need the MOutP for 1-mix systems. */ - x = aqt[j]+gqt[j]-outprob[j][0][0]/*-pr*/; - pMix = (PreComp *)mp->hook; - if(pMix->time != t+StartTime){ /* set the indx to -1, this relates to caching of the mixture occupation - probability on each time frame. */ - pMix->time = t+StartTime; + steSumLr = 0.0; /* zero stream occupation count */ + + /* process mixtures */ + for (mx = 1; mx <= M; mx++) { + switch (fbInfo->hsKind) { /* Get wght and mpdf */ + case TIEDHS: + m = tmRec->probs[mx].index; + wght = MixWeight(fbInfo->hset, ste->spdf.tpdf[m]); + mp = tmRec->mixes[m]; + break; + case DISCRETEHS: + m = fbInfo->twoDataFiles ? fbInfo->up_ot.vq[s] : fbInfo->al_ot.vq[s]; + wght = 1.0; + mp = NULL; + break; + case PLAINHS: + case SHAREDHS: + m = mx; + me = ste->spdf.cpdf + m; + wght = MixWeight(fbInfo->hset, me->weight); + mp=me->mpdf; + break; + } + if (wght > MINMIX) { /* For this mixture m, if the weight is nonzero... */ + /* compute mixture likelihood */ + if (!mmix || (fbInfo->hsKind == DISCRETEHS)) { /* Don't need the MOutP for 1-mix systems. */ + x = aqt[j] + gqt[j] - outprob[j][0][0]/*-pr*/; + pMix = (PreComp *) mp->hook; + if (pMix->time != t + StartTime) { /* set the indx to -1, this relates to caching of the mixture occupation probability on each time frame. */ + pMix->time = t + StartTime; #ifdef MIX_UPDATE_SHARING - pMix->indx = -1; + pMix->indx = -1; #endif - } - } else { /* Multiple-mixture --> need to work out the occupation probabilty of the individual mixture. */ - c_jm=log(wght); - x = initx+c_jm; - switch(fbInfo->hsKind){ - case TIEDHS : - tmp = tmRec->probs[m].prob; - prob = (tmp>=MINLARG)?(log(tmp)+tmRec->maxP):LZERO; /*maxP is a normalising factor subtracted from all the TMProbs.*/ - break; /*"prob" now contains the TM prob [not the mixture weight as well.]*/ - case SHAREDHS : case PLAINHS: - if (fbInfo->S==1) - prob = outprob[j][0][mx]; - else - prob = outprob[j][s][mx]; - pMix = (PreComp *)mp->hook; - if(pMix->time != t+StartTime){ /* set the indx to -1, this relates to caching of the mixture occupation + } + } + else { /* Multiple-mixture --> need to work out the occupation probabilty of the individual mixture. */ + c_jm = log(wght); + x = initx + c_jm; + switch (fbInfo->hsKind) { + case TIEDHS: + tmp = tmRec->probs[m].prob; + prob = (tmp >= MINLARG) ? (log(tmp) + tmRec->maxP) : LZERO; /*maxP is a normalising factor subtracted from all the TMProbs.*/ + break; /*"prob" now contains the TM prob [not the mixture weight as well.]*/ + case SHAREDHS: + case PLAINHS: + if (fbInfo->S == 1) { + prob = outprob[j][0][mx]; + } + else { + prob = outprob[j][s][mx]; + } + pMix = (PreComp *) mp->hook; + if (pMix->time != t + StartTime) { /* set the indx to -1, this relates to caching of the mixture occupation probability on each time frame. */ - pMix->time = t+StartTime; + pMix->time = t + StartTime; #ifdef MIX_UPDATE_SHARING - pMix->indx = -1; + pMix->indx = -1; #endif - } - break; - default: - HError(1, "Unknown hsKind."); - break; - } - x += prob; - if (fbInfo->S>1) /* adjust for parallel streams */ - x += outprob[j][s][0]/probScale; /* all the other streams... */ - } - - /* If transforms are used, x is the prob from the *alignment* transform, not the update transform. */ + } + break; + default: + HError(8492, "Unknown hsKind."); + break; + } + x += prob; + if (fbInfo->S > 1) { /* adjust for parallel streams */ + x += outprob[j][s][0] / probScale; /* all the other streams... */ + } + } - if (-x 1.001) - HError(1, "FwdBkwdLat: UpMixParms: invalid Lr."); - if (Lr>1.001) - HError(-999,"UpMix: Lr too big %f ", Lr); + /* More diagnostics */ + if (isnan(Lr)) + HError(8425, "HFBLat: UpMixParms: invalid Lr."); + if (Lr > 1.001) + HError(-8425, "UpMix: Lr too big %f ", Lr); - steSumLr += Lr; + steSumLr += Lr; - DoMixUpdate(mp, s, Lr, mee_acc_scale, t); /* This now does not actually update the mixture, but just notes down - the probability for later updating with "DoAllMixUpdates", which is called - once every time frame. */ - /* ------------------ update mixture weight counts ----------------- */ - if (fbInfo->uFlags&UPMIXES) { - wa->c[m] += Lr * abs_mee_acc_scale; - if(DoingFourthAcc) wammi->c[m] += Lr; - } - } - /* printf("q=%d, N=%d,j=%d, M=%d, m=%d, x=%f, prob=%f,stocc=%f\n", q,N,j,M,m,x,prob,aqt[j]+gqt[j]-outprob[j][0][0]); */ - } - } + DoMixUpdate(mp, s, Lr, mee_acc_scale, t); /* This now does not actually update the mixture, but just notes down + the probability for later updating with "DoAllMixUpdates", which is called + once every time frame. */ + /* ------------------ update mixture weight counts ----------------- */ + if (fbInfo->uFlags & UPMIXES) { + wa->c[m] += Lr * abs_mee_acc_scale; + if (DoingFourthAcc) + wammi->c[m] += Lr; + } + } + /* printf("q=%d, N=%d,j=%d, M=%d, m=%d, x=%f, prob=%f,stocc=%f\n", q,N,j,M,m,x,prob,aqt[j]+gqt[j]-outprob[j][0][0]); */ + } + } /* for (mx = 1; mx <= M; mx++) */ - wa = ((WtAcc*)ste->hook) + local_accindx; - wa->occ += steSumLr * abs_mee_acc_scale; - if(DoingFourthAcc){ /* do 4th acc if MPE with MMI prior */ - wammi = ((WtAcc*)ste->hook) + add_index; - wammi->occ += steSumLr; - } - } - } - return ans; + wa = ((WtAcc*) ste->hook) + local_accindx; + wa->occ += steSumLr * abs_mee_acc_scale; + if (DoingFourthAcc) { /* do 4th acc if MPE with MMI prior */ + wammi = ((WtAcc*) ste->hook) + add_index; + wammi->occ += steSumLr; + } + } /* for (s = 1; s <= fbInfo->S; s++, ste++) */ + } /* for (j = 2; j < N; j++) */ + + return ans; } @@ -1371,11 +1493,11 @@ static double UpMixParms(int q, HLink hmm, int t, DVector aqt, static void CheckData(char *fn, BufferInfo *info) { if (info->tgtVecSize!=fbInfo->hset->vecSize) - HError(2350,"CheckData: Vector size in %s[%d] is incompatible with hset [%d]", + HError(8426,"CheckData: Vector size in %s[%d] is incompatible with hset [%d]", fn,info->tgtVecSize,fbInfo->hset->vecSize); if (!fbInfo->twoDataFiles){ if (info->tgtPK != fbInfo->hset->pkind) - HError(2350,"CheckData: Parameterisation in %s is incompatible with hset ", + HError(8426,"CheckData: Parameterisation in %s is incompatible with hset ", fn); } } @@ -1385,70 +1507,198 @@ static void CheckData(char *fn, BufferInfo *info) /* StepForward: Step from 1 to T calc'ing Alpha columns and updating parms */ static void StepForward() { - int q,t,negs; - DVector aqt,aqt1,bqt,bqt1,tmp; - double occ, total_occ; - HLink hmm, up_hmm; - ResetObsCache(); - ZeroAlpha(1, fbInfo->Q); /*Zero the alphat column,*/ - for(q=1;q<=fbInfo->Q;q++){ /*And switch: now the alphat1 column is zero.*/ - Acoustic *ac = fbInfo->aInfo->ac + q; - tmp=ac->alphat;ac->alphat=ac->alphat1;ac->alphat1=tmp; - } - ZeroAlpha(1, fbInfo->Q); /*Now the alphat column is zero too.*/ - - for (q=1;q<=fbInfo->Q;q++){ /* inc access counters */ - up_hmm = fbInfo->aInfo->ac[q].hmm; - negs = (int)up_hmm->hook+1; - up_hmm->hook = (void *)negs; - } + int q, t, s, i, N; + unsigned long int negs; + DVector aqt, aqt1, bqt, tmp; + double occ, occConv, total_occ, total_exp_occ; + HLink hmm, up_hmm; + /* cz277 - ANN */ + StreamElem *ste; + float mee_acc_scale; + float ***outprob; + int pos; + float occScale = fbInfo->FSmoothH * probScale * fbInfo->AccScale; + + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + ZeroAlphasCUDA(fbInfo->T, fbInfo->Q, fbInfo->aInfo->acDev); /* cz277 - cuda fblat */ + } +#endif + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + ResetObsCache(); + ZeroAlpha(1, fbInfo->Q); /*Zero the alphat column,*/ + for(q = 1; q <= fbInfo->Q; q++) { /*And switch: now the alphat1 column is zero.*/ + Acoustic *ac = fbInfo->aInfo->ac + q; + tmp = ac->alphat; + ac->alphat = ac->alphat1; + ac->alphat1 = tmp; + } + ZeroAlpha(1, fbInfo->Q); /*Now the alphat column is zero too.*/ + } + + for (q = 1; q <= fbInfo->Q; q++) { /* inc access counters */ + up_hmm = fbInfo->aInfo->ac[q].hmm; + negs = (unsigned long int)up_hmm->hook + 1; + up_hmm->hook = (void *) negs; + } - for (t=1;t<=fbInfo->T;t++) { - /* Get Data */ - ReadAsTable(fbInfo->al_pbuf,t-1,&fbInfo->al_ot); +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + for(q = 1; q <= fbInfo->Q; ++q) { + SyncAcousticHost2DevAlpha(&fbInfo->aInfo->ac[q], &fbInfo->aInfo->acDev[q]); + } + /* cz27 - cuda fblat */ + StepAlphaCUDA(fbInfo->Q, fbInfo->aInfo->acDev); + for (q = 1; q <= fbInfo->Q; ++q) { + SyncAcousticDev2HostAlpha(&fbInfo->aInfo->acDev[q], &fbInfo->aInfo->ac[q]); + } + } +#endif - if (fbInfo->twoDataFiles) - ReadAsTable(fbInfo->up_pbuf,t-1,&fbInfo->up_ot); + for (t = 1; t <= fbInfo->T; t++) { + /* cz277 - ANN */ + if (fbInfo->hset->annSet != NULL && fbInfo->hsKind != HYBRIDHS) { /* TANDEM */ + /* TODO: Tandem */ + + } + else if (fbInfo->al_pbuf != NULL) { + /* Get Data */ + ReadAsTable(fbInfo->al_pbuf, t - 1, &fbInfo->al_ot); + if (fbInfo->twoDataFiles) { + ReadAsTable(fbInfo->up_pbuf, t - 1, &fbInfo->up_ot); + } + } - if (fbInfo->hsKind == TIEDHS) PrecomputeTMix(fbInfo->hset,&fbInfo->al_ot,minFrwdP,0); + /* cz277 - frame rejection */ + if (fbInfo->rejFrame && fbInfo->findRef && fbInfo->num_index == 0.0) { /* for numerator lattices */ + for (s = 1; s <= fbInfo->S; ++s) { + fbInfo->refVec[s][t] = -1; + } + } + if (fbInfo->hsKind == TIEDHS) { + PrecomputeTMix(fbInfo->hset, &fbInfo->al_ot, minFrwdP, 0); + } + + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + StepAlphaSwapOnly(t); + } +#endif + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + StepAlpha(t); /* Calculate this time's Alpha column. */ + } + + /* Now accumulate statistics. */ + total_occ = LZERO; + total_exp_occ = 0.0; + for (q = fbInfo->aInfo->qLo[t]; q <= fbInfo->aInfo->qHi[t]; q++) { /* inc accs for each active model */ + Acoustic *ac = fbInfo->aInfo->ac + q; + int tLo = ac->t_start, tHi = ac->t_end; + if (t == tLo && tHi == tLo - 1 && fbInfo->uFlags & UPTRANS) { /*In the ExactMatch case, where we have a skip transition.*/ + UpSkipTranParms(q, t); + } + if (t >= tLo && t <= tHi) { + hmm = ac->hmm; + aqt = ac->alphat; + bqt = ac->betaPlus[t]; + /*bqt1 = (t + 1 >= tLo && t + 1 <= tHi) ? ac->betaPlus[t + 1] : NULL;*/ + aqt1 = (t == 1) ? NULL : ac->alphat1; /* alpha from t-1 */ + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + aqt = ac->alphaPlus[t]; + if (aqt1 != NULL) + aqt1 = ac->alphaPlus[t - 1]; + } +#endif + if (fbInfo->uFlags & (UPMEANS | UPVARS | UPMIXES | UPXFORM | UPMIXES)) { + if ((occ = UpMixParms(q, hmm, t, aqt, aqt1, bqt)) > LSMALL) { + total_occ = LAdd(total_occ, occ); + } + } + if (fbInfo->uFlags & UPTRANS) { + UpTranParms(t, q); + } + /* cz277 - ANN */ + if (fbInfo->hsKind == HYBRIDHS) { + N = hmm->numStates; + if (fbInfo->MPE) { + mee_acc_scale = fbInfo->AccScale * ac->mpe_occscale; + } + else if (fbInfo->num_index == 1.0) { /* MMI denorminator */ + mee_acc_scale = fbInfo->AccScale * (-1.0); + } + else { + mee_acc_scale = fbInfo->AccScale; + } + /*mee_acc_scale = fabs(mee_acc_scale);*/ + outprob = ac->otprob[t]; + for (i = 2; i < N; ++i) { + /* to compute gamma^{MPE}_{q}(t) = \dfrac{a_q(t) * b_q(t)}{P}(c(q) - c_avg) */ + occ = aqt[i] + bqt[i] - outprob[i][0][0]; + total_occ = LAdd(total_occ, occ); + occConv = exp(occ); + occ = occConv * mee_acc_scale; + total_exp_occ += occConv; + occ *= probScale; + for (s = 1; s <= fbInfo->S; ++s) { + ste = &hmm->svec[i].info->pdf[s]; + if ((fbInfo->num_index == 0.0) && ((fbInfo->uFlags & UPTARGETPEN) != 0)) { /* ML or MMI numerator */ + ste->occAcc += occConv; + } + /* cz277 - seq bug 1 */ + /*pos = fbInfo->occMat[s]->colNum * t + ste->targetIdx - 1;*/ + pos = fbInfo->occMat[s]->colNum * (t - 1) + ste->targetIdx - 1; + + fbInfo->occMat[s]->matElems[pos] -= fbInfo->FSmoothH * occ; + /* cz277 - frame rejection */ + if (fbInfo->rejFrame && fbInfo->findRef && fbInfo->num_index == 0.0) { /* for numerator lattice */ + occConv = (-1.0) * (fbInfo->occMat[s]->matElems[pos] / occScale); /* abs(occ) */ + if ((fbInfo->refVec[s][t] == -1) || (fbInfo->occVec[s][t] < occConv)) { + fbInfo->occVec[s][t] = occConv; + fbInfo->refVec[s][t] = ste->targetIdx - 1; + } + } + } + } + } + } + } + /* cz277 - frame rejection */ + if (fbInfo->rejFrame) { + if (fbInfo->num_index == 1.0) { /* MMI denominator, (den - num) * occScale is stored */ + for (s = 1; s <= fbInfo->S; ++s) { + /* fbInfo->occVec[s][t] changes from the num occ to den occ */ + fbInfo->occVec[s][t] += fbInfo->occMat[s]->matElems[fbInfo->occMat[s]->colNum * t + fbInfo->refVec[s][t]] / occScale; + } + } + else if (fbInfo->findRef == FALSE && fbInfo->num_index == 0.0) { /* for MMI numerator */ + for (s = 1; s <= fbInfo->S; ++s) { + /* set fbInfo->occVec[s][t] to the num occ */ + fbInfo->occVec[s][t] = (-1.0) * (fbInfo->occMat[s]->matElems[fbInfo->occMat[s]->colNum * t + fbInfo->refVec[s][t]] / occScale); /* abs(occ) */ + } + } + } - StepAlpha(t); /* Calculate this time's Alpha column. */ + /* cz277 - ANN */ + if (fbInfo->hsKind != HYBRIDHS) { /* TODO: need to cover xfrom for hybrid system */ + DoAllMixUpdates(t); /* Iterates over all active mpdf's and actually accumulates stats. */ + } - /* Now accumulate statistics. */ - total_occ=LZERO; - for (q=fbInfo->aInfo->qLo[t];q<=fbInfo->aInfo->qHi[t];q++){ /* inc accs for each active model */ - Acoustic *ac = fbInfo->aInfo->ac+q; - int tLo = ac->t_start, - tHi = ac->t_end; - if(t==tLo && tHi==tLo-1 && fbInfo->uFlags&UPTRANS){ /*In the ExactMatch case, where we have a skip transition.*/ - UpSkipTranParms(q, t); - } - if(t>=tLo&&t<=tHi){ - hmm = ac->hmm; - aqt = ac->alphat; bqt = ac->betaPlus[t]; - - bqt1 = (t+1>=tLo&&t+1<=tHi) ? ac->betaPlus[t+1]:NULL; - aqt1 = (t==1) ? NULL:ac->alphat1; /* alpha from t-1 */ - - if (fbInfo->uFlags&(UPMEANS|UPVARS|UPMIXES|UPXFORM|UPMIXES)) - if((occ=UpMixParms(q,hmm,t,aqt,aqt1,bqt)) > LSMALL){ - total_occ = LAdd(total_occ, occ); - } - if (fbInfo->uFlags&UPTRANS) - UpTranParms(t,q); - } + /* cz277 - cuda fblat */ + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + if (fabs(total_occ) > 0.1) { + HError(8424, "in HFBLat.c: Wrong occ: exp(%f)\n", total_occ); + } + if (fabs(total_occ) > 1.0e-4) { + HError(-8424, "in HFBLat.c: Wrong occ: exp(%f)\n", total_occ); + } + } } - DoAllMixUpdates(t); /* Iterates over all active mpdf's and actually accumulates stats. */ - - if(fabs(total_occ) > 0.1) - HError( 1, "in HFwdBkwdLat.c: Wrong occ: exp(%f)\n",total_occ); - if(fabs(total_occ) > 1.0e-4) - HError( -1, "in HFwdBkwdLat.c: Wrong occ: exp(%f)\n",total_occ); - } } - - /* -------------------------- Top Level Forward-Backward Routine ------------------------ */ @@ -1479,8 +1729,8 @@ void FBLatAddLattice (FBLatInfo *fbInfo, Lattice *lat){ /* add this lattice, can do this repeatedly. */ fbInfo->aInfo->lat[ fbInfo->aInfo->nLats ++ ] = lat; - if(!lat) HError(1, "Zero lattice supplied to FBLat."); - if(fbInfo->aInfo->nLats > MAXLATS) HError(1,"fbInfo->aInfo->nLats > MAXLATS, increase array size MAXLATS."); + if(!lat) HError(8422, "Zero lattice supplied to FBLat."); + if(fbInfo->aInfo->nLats > MAXLATS) HError(8427,"fbInfo->aInfo->nLats > MAXLATS, increase array size MAXLATS."); } @@ -1523,256 +1773,350 @@ int MPE_GetFileLen(Lattice *lat){ void FBLatClearUp(FBLatInfo *fbInfo); -void FBLatFirstPass(FBLatInfo *_fbInfo, FileFormat dff, char * datafn, char *datafn2, Lattice *MPECorrLat){ - int q,T2=0; Boolean MPE; - - fbInfo = _fbInfo; - if(fbInfo->InUse) FBLatClearUp(fbInfo); - fbInfo->InUse=TRUE; /* will now initialise */ - - if (trace&T_TOP) { - printf(" Processing Data: %s\n", NameOf(datafn,buf1)); - fflush(stdout); - } - MPE = fbInfo->MPE = (MPECorrLat!=NULL); - - ArcFromLat(fbInfo->aInfo, fbInfo->hset); - if(MPE) AttachMPEInfo(fbInfo->aInfo); +Boolean FBLatFirstPass(FBLatInfo *_fbInfo, FileFormat dff, char * datafn, char *datafn2, Lattice *MPECorrLat){ + int q, T2 = 0; + Boolean MPE; - /*[trace:] PrintArcInfo(stdout, &fbInfo->aInfo);*/ - fbInfo->Q = fbInfo->aInfo->Q; - if (fbInfo->Q==0) - HError(2325,"FBLat: No arcs in lattice for %s",datafn); + fbInfo = _fbInfo; + if (fbInfo->InUse) { + FBLatClearUp(fbInfo); + } + fbInfo->InUse = TRUE; /* will now initialise */ - if (fbInfo->twoDataFiles) - SetNewConfig("HPARM1"); - fbInfo->al_pbuf=OpenBuffer(&fbInfo->al_dataStack,datafn,0,dff,FALSE_dup,FALSE_dup); - GetBufferInfo(fbInfo->al_pbuf,&fbInfo->al_info); - if (fbInfo->twoDataFiles){ - if(!datafn2) HError(1, "Need 2 data file names if single pass retraining."); - SetNewConfig("HPARM2"); - fbInfo->up_pbuf=OpenBuffer(&fbInfo->up_dataStack,datafn2,0,dff,FALSE_dup,FALSE_dup); - GetBufferInfo(fbInfo->up_pbuf,&fbInfo->up_info); - CheckData(datafn2,&fbInfo->up_info); - /* SyncBuffers(pbuf,pbuf2); */ - T2 = ObsInBuffer(fbInfo->up_pbuf); - }else - CheckData(datafn,&fbInfo->al_info); - fbInfo->T = ObsInBuffer(fbInfo->al_pbuf); + if (trace & T_TOP) { + printf("\tProcessing Data: %s\n", NameOf(datafn, buf1)); + fflush(stdout); + } + MPE = fbInfo->MPE = (MPECorrLat != NULL); - if (fbInfo->twoDataFiles && (fbInfo->T != T2)) - HError(2319,"HERest: Paired training files must be same length for single pass retraining"); + ArcFromLat(fbInfo->aInfo, fbInfo->hset); + if(MPE) { + AttachMPEInfo(fbInfo->aInfo); + } + + /*[trace:] PrintArcInfo(stdout, &fbInfo->aInfo);*/ + fbInfo->Q = fbInfo->aInfo->Q; + if (fbInfo->Q == 0) { + HError(8422, "FBLat: No arcs in lattice for %s", datafn); + } + + /* cz277 - ANN */ + if (fbInfo->hsKind == HYBRIDHS) { /* for hybrid systems, llhMat and T are already set */ + fbInfo->al_pbuf = NULL; + fbInfo->up_pbuf = NULL; + } + else if (fbInfo->hset->annSet != NULL) { /* TANDEMHS */ + /* TODO */ + } + else { /* if need to load the data */ + if (fbInfo->twoDataFiles) { + SetNewConfig("HPARM1"); + } + fbInfo->al_pbuf = OpenBuffer(&fbInfo->al_dataStack, datafn, 0, dff, FALSE_dup, FALSE_dup); + GetBufferInfo(fbInfo->al_pbuf, &fbInfo->al_info); + if (fbInfo->twoDataFiles) { + if(!datafn2) { + HError(8419, "Need 2 data file names if single pass retraining."); + } + SetNewConfig("HPARM2"); + fbInfo->up_pbuf = OpenBuffer(&fbInfo->up_dataStack, datafn2, 0, dff, FALSE_dup, FALSE_dup); + GetBufferInfo(fbInfo->up_pbuf, &fbInfo->up_info); + CheckData(datafn2, &fbInfo->up_info); + /* SyncBuffers(pbuf,pbuf2); */ + T2 = ObsInBuffer(fbInfo->up_pbuf); + } else { + CheckData(datafn,&fbInfo->al_info); + } + fbInfo->T = ObsInBuffer(fbInfo->al_pbuf); - if (fbInfo->firstTime){ - SetStreamWidths(fbInfo->al_info.tgtPK,fbInfo->al_info.tgtVecSize,fbInfo->hset->swidth,&eSep); + if (fbInfo->twoDataFiles && (fbInfo->T != T2)) { + HError(8428, "HERest: Paired training files must be same length for single pass retraining"); + } + + if (fbInfo->firstTime){ + SetStreamWidths(fbInfo->al_info.tgtPK, fbInfo->al_info.tgtVecSize, fbInfo->hset->swidth, &eSep); - fbInfo->al_ot = MakeObservation(&fbInfo->miscStack,fbInfo->hset->swidth,fbInfo->al_info.tgtPK, - fbInfo->hsKind==DISCRETEHS,eSep); + fbInfo->al_ot = MakeObservation(&fbInfo->miscStack, fbInfo->hset->swidth, fbInfo->al_info.tgtPK, fbInfo->hsKind == DISCRETEHS, eSep); - if (fbInfo->twoDataFiles){ /*todo, fix use of this. */ - fbInfo->up_ot = MakeObservation(&fbInfo->miscStack,fbInfo->hset->swidth,fbInfo->up_info.tgtPK, - fbInfo->hsKind==DISCRETEHS,eSep); - } - fbInfo->firstTime = FALSE; - } - - - SetBetaPlus(); /* Step back through file. */ - - { - HArc *a; ArcTrans *at; LogFloat lmprob; - fbInfo->pr = LZERO; + if (fbInfo->twoDataFiles) { /*todo, fix use of this. */ + fbInfo->up_ot = MakeObservation(&fbInfo->miscStack, fbInfo->hset->swidth, fbInfo->up_info.tgtPK, fbInfo->hsKind == DISCRETEHS, eSep); + } + fbInfo->firstTime = FALSE; + } + } + + /* cz277 - cuda fblat */ + /* Step back through file. */ +#ifdef CUDA + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + SetBetaPlusCUDA(); + } +#endif + if (fbInfo->aInfo->FBLatCUDA == FALSE) { + SetBetaPlus(); + } + + { + HArc *a; + ArcTrans *at; + LogFloat lmprob; + fbInfo->pr = LZERO; - /* Calculate beta [actually betaPlus, like a reversed alpha] */ - for(q=1;q<=fbInfo->Q;q++){ - Acoustic *ac = fbInfo->aInfo->ac+q; - ac->locc = LZERO; - if(ac->aclike == LZERO) HError(1, "Zero acoustic likelihood! (May be due to different model topology than used to create lattice)"); - } + /* Calculate beta [actually betaPlus, like a reversed alpha] */ + for (q = 1; q <= fbInfo->Q; q++) { + Acoustic *ac = fbInfo->aInfo->ac + q; + ac->locc = LZERO; + if (ac->aclike == LZERO) { + /* from mjfg, cz277 - 141022 */ + HError(-8425, "Zero acoustic likelihood! (May be due to different model topology than used to create lattice)"); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + } - for(a=fbInfo->aInfo->end;a;a=a->prec){ /*Calculate betaPlus .*/ - Acoustic *ac = a->ac; - LogDouble betaPlus; - if(!a->follTrans) betaPlus = 0; - else{ - betaPlus=LZERO; - for(at=a->follTrans;at;at=at->start_foll){ - lmprob = translm(at->lmlike); - betaPlus = LAdd(betaPlus, at->end->betaPlus + lmprob); + for (a = fbInfo->aInfo->end; a; a = a->prec) { /*Calculate betaPlus .*/ + Acoustic *ac = a->ac; + LogDouble betaPlus; + if (!a->follTrans) { + betaPlus = 0; } - } - betaPlus += ac->aclike * latProbScale; - if(isnan(betaPlus)) HError(1, "betaPlus isnan..."); - a->betaPlus = betaPlus; - if(!a->precTrans) fbInfo->pr = LAdd(fbInfo->pr, a->betaPlus); - } - - /*Now calculate alpha... The occupancy of an arc is its exp((alpha+betaPlus-outprob)-fbInfo->pr) */ - for(a=fbInfo->aInfo->start;a;a=a->foll){ - Acoustic *ac = a->ac; - LogDouble alpha, occ; - if(!a->precTrans) alpha = 0; - else{ - alpha=LZERO; - for(at=a->precTrans;at;at=at->end_foll){ - lmprob = translm(at->lmlike); - alpha = LAdd(alpha, at->start->alpha + lmprob); + else { + betaPlus = LZERO; + for (at = a->follTrans; at; at = at->start_foll) { + lmprob = translm(at->lmlike); + betaPlus = LAdd(betaPlus, at->end->betaPlus + lmprob); + } } - } - alpha += ac->aclike * latProbScale; - a->alpha = alpha; - occ = a->alpha + a->betaPlus - ac->aclike*latProbScale- fbInfo->pr; - - /*occ should be log of sth in the region 0.0 ... 1.0 */ - if(occ > 0.0001) HError(1, "occ > 1.0001 (%f)", occ); + betaPlus += ac->aclike * latProbScale; + if (isnan(betaPlus)) { + HError(-8424, "betaPlus isnan..."); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + a->betaPlus = betaPlus; + if (!a->precTrans) { + fbInfo->pr = LAdd(fbInfo->pr, a->betaPlus); + } + } + + /*Now calculate alpha... The occupancy of an arc is its exp((alpha+betaPlus-outprob)-fbInfo->pr) */ + for (a = fbInfo->aInfo->start; a; a = a->foll) { + Acoustic *ac = a->ac; + LogDouble alpha, occ; + if (!a->precTrans) { + alpha = 0; + } + else { + alpha = LZERO; + for (at = a->precTrans; at; at = at->end_foll) { + lmprob = translm(at->lmlike); + alpha = LAdd(alpha, at->start->alpha + lmprob); + } + } + alpha += ac->aclike * latProbScale; + a->alpha = alpha; + occ = a->alpha + a->betaPlus - ac->aclike * latProbScale - fbInfo->pr; - /* alpha_startprob[id] = LAdd(alpha_startprob[id], -gamma_startprob[id] + occ); */ - ac->locc = LAdd(ac->locc, occ); - } + /*occ should be log of sth in the region 0.0 ... 1.0 */ + if (occ > 0.0001) { + HError(-8424, "occ > 1.0001 (%f)", occ); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } - /* calculate & check overall probability of file */ - { - double pr = LZERO; - for(a=fbInfo->aInfo->start;a;a=a->foll){ - if(!a->follTrans) /* an ending arc. */ - pr = LAdd(pr, a->alpha); - } - if(fabs(pr-fbInfo->pr)>1.0e-6) HError(1, "Error in file pr..."); - } - - - if(MPE){ - int nTrans1=0,nTrans2=0; /*debug*/ - HArc *a; ArcTrans *at; double norm; - /*We are going to set the "alphaError" and "betaPlusError" fields for each of the arcs."*/ + /* alpha_startprob[id] = LAdd(alpha_startprob[id], -gamma_startprob[id] + occ); */ + ac->locc = LAdd(ac->locc, occ); + } + + /* calculate & check overall probability of file */ + { + double pr = LZERO; + for (a = fbInfo->aInfo->start; a; a = a->foll) { + if (!a->follTrans) {/* an ending arc. */ + pr = LAdd(pr, a->alpha); + } + } + if (fabs(pr - fbInfo->pr) > 1.0e-6) { + HError(-8424, "Error in file pr %e vs %e", pr, fbInfo->pr); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + } + if (MPE) { + int nTrans1=0, nTrans2=0; /*debug*/ + HArc *a; + ArcTrans *at; + double norm; + /*We are going to set the "alphaError" and "betaPlusError" fields for each of the arcs."*/ - if(!MPECorrLat) HError(-1, "No num lattice provided for MPE! "); - fbInfo->MPEFileLength = MPE_GetFileLen(MPECorrLat); + if (!MPECorrLat) { + HError(-8421, "No num lattice provided for MPE! "); + } + fbInfo->MPEFileLength = MPE_GetFileLen(MPECorrLat); #ifdef SUPPORT_EXACT_CORRECTNESS - if(ExactCorrectness){ - DoExactCorrectness(fbInfo, MPECorrLat); - } else { + if (ExactCorrectness) { + DoExactCorrectness(fbInfo, MPECorrLat); + } else { #endif - /* Inexact version of MPE/MWE. */ - if(CalcAsError) SetCorrectnessAsError(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ - else SetCorrectness(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ - - /*First set alphaError*/ - for(a=fbInfo->aInfo->start;a;a=a->foll){ - double alphaError; - if(!StartOfWord(a)) a->mpe->alphaError=a->precTrans->start->mpe->alphaError + a->mpe->correctness; - else{ /*start of word. Sum previous alphas.*/ - if(!a->precTrans){ alphaError = 0.0; } /*start of sentence*/ - else{ - norm = LZERO; alphaError = 0.0; - for(at=a->precTrans;at;at=at->end_foll){ - nTrans1++; - norm = LAdd(norm, at->start->alpha + translm(at->lmlike)); - } - for(at=a->precTrans;at;at=at->end_foll){ - alphaError += (at->start->alpha+translm(at->lmlike)-norm > MINEARG ? exp(at->start->alpha+translm(at->lmlike)-norm):0.0)*(at->start->mpe->alphaError); - } - } - alphaError += a->mpe->correctness; /*-1 .. 1*/ - a->mpe->alphaError = alphaError; - } - } - - /*now set betaPlusError (like betaError but includes present phone's contribution). */ - for(a=fbInfo->aInfo->end;a;a=a->prec){ - double betaPlusError; + + /* Inexact version of MPE/MWE. */ + if (CalcAsError) { + SetCorrectnessAsError(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ + } + else { + SetCorrectness(fbInfo, MPECorrLat); /* first set 'correctness' field for each arc, a value between -1 and 1. */ + } + /*First set alphaError*/ + for (a = fbInfo->aInfo->start; a; a = a->foll) { + double alphaError; + if (!StartOfWord(a)) { + a->mpe->alphaError = a->precTrans->start->mpe->alphaError + a->mpe->correctness; + } + else { /*start of word. Sum previous alphas.*/ + if (!a->precTrans) { + alphaError = 0.0; + } /*start of sentence*/ + else { + norm = LZERO; + alphaError = 0.0; + for (at = a->precTrans; at; at = at->end_foll) { + nTrans1++; + norm = LAdd(norm, at->start->alpha + translm(at->lmlike)); + } + for (at = a->precTrans; at; at = at->end_foll) { + alphaError += (at->start->alpha+translm(at->lmlike) - norm > MINEARG ? exp(at->start->alpha + translm(at->lmlike) - norm): 0.0) * (at->start->mpe->alphaError); + } + } + alphaError += a->mpe->correctness; /*-1 .. 1*/ + a->mpe->alphaError = alphaError; + } + } + /*now set betaPlusError (like betaError but includes present phone's contribution). */ + for (a = fbInfo->aInfo->end; a; a = a->prec) { + double betaPlusError; - /* current phone's contribution to correctness:*/ - betaPlusError = a->mpe->correctness; /*if Word MEE this will only be nonzero in the start-of-word case. */ - if(EndOfWord(a)){ /* --> multiple transitions from end of arc. */ - if(!a->follTrans){ betaPlusError += 0.0; } /*end of sentence*/ - else{ - norm = LZERO; - for(at=a->follTrans;at;at=at->start_foll){ /* Get normalising factor = sum following gamma...*/ - nTrans2++; - norm = LAdd(norm, at->end->betaPlus + translm(at->lmlike)); - } - for(at=a->follTrans;at;at=at->start_foll){ - if(at->end->betaPlus+translm(at->lmlike) -norm > MINEARG) - betaPlusError += exp(at->end->betaPlus + translm(at->lmlike) - norm)*(at->end->mpe->betaPlusError); - } - } - } else betaPlusError += a->follTrans->end->mpe->betaPlusError; - a->mpe->betaPlusError = betaPlusError; - } - - if(nTrans1!=nTrans2) HError(-1, "NTrans1!=NTrans2"); /*maybe should be +1 error */ + /* current phone's contribution to correctness:*/ + betaPlusError = a->mpe->correctness; /*if Word MEE this will only be nonzero in the start-of-word case. */ + if (EndOfWord(a)){ /* --> multiple transitions from end of arc. */ + if (!a->follTrans) { + betaPlusError += 0.0; + } /*end of sentence*/ + else { + norm = LZERO; + for (at = a->follTrans; at; at = at->start_foll) { /* Get normalising factor = sum following gamma...*/ + nTrans2++; + norm = LAdd(norm, at->end->betaPlus + translm(at->lmlike)); + } + for (at = a->follTrans; at; at = at->start_foll) { + if (at->end->betaPlus + translm(at->lmlike) - norm > MINEARG) { + betaPlusError += exp(at->end->betaPlus + translm(at->lmlike) - norm) * (at->end->mpe->betaPlusError); + } + } + } + } + else { + betaPlusError += a->follTrans->end->mpe->betaPlusError; + } + a->mpe->betaPlusError = betaPlusError; + } + if (nTrans1 != nTrans2) { + HError(-8993, "NTrans1!=NTrans2"); /*maybe should be +1 error */ + } + + /*Find the average correctness for the whole file, and do some checking...*/ + { + double avgErrBetaPlus = 0, avgErrAlpha = 0, normBetaPlus = 0, normAlpha = 0; + for (a = fbInfo->aInfo->start; a; a = a->foll) { + if (!a->precTrans) { /*start of file*/ + if (a->betaPlus-fbInfo->pr > MINEARG) { + avgErrBetaPlus += exp(a->betaPlus - fbInfo->pr) * a->mpe->betaPlusError; + normBetaPlus += exp(a->betaPlus-fbInfo->pr); + } + } + if (!a->follTrans) { /*end of file*/ + if (a->alpha - fbInfo->pr > MINEARG) { + avgErrAlpha += exp(a->alpha-fbInfo->pr) * a->mpe->alphaError; + normAlpha += exp(a->alpha - fbInfo->pr); + } + } + /* printf("Error for %s = %f/%f/%f ", a->phone->name, a->mpe->alphaError, a->mpe->betaPlusError, a->mpe->alphaError+a->mpe->betaPlusError); */ + } + + if (fabs(1 - normBetaPlus) > 0.1 || fabs(1 - normAlpha) > 0.1) { /*Sanity check*/ + HError(-8423, "normAlpha/normBetaPlus wrong!"); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + if (fabs(avgErrBetaPlus - avgErrAlpha) > 0.0001) { /*Sanity check*/ + HError(-8423, "avgErrBetaPlus and avgErrAlpha disagree (%f,%f)!", avgErrBetaPlus, avgErrAlpha); + FBLatClearUp(fbInfo); + StartTime += fbInfo->T; /*relates to caching of likelihoods */ + return FALSE; + } + fbInfo->AvgCorr = avgErrBetaPlus; /* set average correctness of file. */ + } + + { + /* Calculate the scales gamma_q^MPE = (AvgErr(node) - AvgErr(file)) for each arc. */ + /* Since the calculation is pooled for identical arcs in pools q=1..Q, this is actually + a weighted average of gamma_q^MPE over all the identically timed arcs, weighted by occupation probability gamma_q. */ + + for (q = 1; q <= fbInfo->Q; q++) { + fbInfo->aInfo->ac[q].mpe_occscale = 0; + } + for (a = fbInfo->aInfo->start; a; a = a->foll) { + Acoustic *ac = a->ac; + float occ = a->alpha + a->betaPlus - ac->aclike*latProbScale - fbInfo->pr; /* Occupancy of this cluster of identical arcs which is due to a. */ + float total_occ = ac->locc; /* total occupancy of this group of arcs */ + if (occ-total_occ > MINEARG) { + /* cz277 - ANN */ + /*ac->mpe_occscale += exp(occ-total_occ) * (a->mpe->alphaError+a->mpe->betaPlusError-fbInfo->AvgCorr - a->mpe->correctness);*/ + ac->mpe_occscale += exp(occ - total_occ) * (a->mpe->alphaError + a->mpe->betaPlusError - fbInfo->AvgCorr - a->mpe->correctness); + /* MEEScale is an average error for words including that arc, minus the global average error. */ + /* - a->mpe->correctness has to be subtracted because alpha and betaPlus both contain it.*/ + } + } + } - /*Find the average correctness for the whole file, and do some checking...*/ - { - double avgErrBetaPlus=0, avgErrAlpha=0, normBetaPlus=0, normAlpha=0; - for(a=fbInfo->aInfo->start;a;a=a->foll){ - if(!a->precTrans){ /*start of file*/ - if(a->betaPlus-fbInfo->pr > MINEARG){ - avgErrBetaPlus += exp(a->betaPlus-fbInfo->pr) * a->mpe->betaPlusError; - normBetaPlus += exp(a->betaPlus-fbInfo->pr); - } - } - if(!a->follTrans){ /*end of file*/ - if(a->alpha-fbInfo->pr > MINEARG){ - avgErrAlpha += exp(a->alpha-fbInfo->pr) * a->mpe->alphaError; - normAlpha += exp(a->alpha-fbInfo->pr); - } - } - /* printf("Error for %s = %f/%f/%f ", a->phone->name, a->mpe->alphaError, a->mpe->betaPlusError, a->mpe->alphaError+a->mpe->betaPlusError); */ - } +#ifdef SUPPORT_EXACT_CORRECTNESS + } /* endif (!ExactCorrectness) */ +#endif - if(fabs(1-normBetaPlus)>0.1 || fabs(1-normAlpha)>0.1) /*Sanity check*/ - HError(1, "normAlpha/normBetaPlus wrong!"); - if(fabs(avgErrBetaPlus - avgErrAlpha) > 0.0001) /*Sanity check*/ - HError(-1, "avgErrBetaPlus and avgErrAlpha disagree (%f,%f)!", avgErrBetaPlus, avgErrAlpha); - fbInfo->AvgCorr = avgErrBetaPlus; /* set average correctness of file. */ - } - - { - /* Calculate the scales gamma_q^MPE = (AvgErr(node) - AvgErr(file)) for each arc. */ - /* Since the calculation is pooled for identical arcs in pools q=1..Q, this is actually - a weighted average of gamma_q^MPE over all the identically timed arcs, weighted by occupation - probability gamma_q. */ - - for(q=1;q<=fbInfo->Q;q++) fbInfo->aInfo->ac[q].mpe_occscale = 0; - - for(a=fbInfo->aInfo->start;a;a=a->foll){ - Acoustic *ac = a->ac; - float occ = a->alpha + a->betaPlus - ac->aclike*latProbScale - fbInfo->pr; /* Occupancy of this cluster of identical arcs which is due to a. */ - float total_occ = ac->locc; /* total occupancy of this group of arcs */ - if(occ-total_occ > MINEARG){ - ac->mpe_occscale += exp(occ-total_occ) * (a->mpe->alphaError+a->mpe->betaPlusError-fbInfo->AvgCorr - a->mpe->correctness); - /* MEEScale is an average error for words including that arc, minus the global average error. */ - /* - a->mpe->correctness has to be subtracted because alpha and betaPlus both contain it.*/ - } - } - } - } /* endif (!ExactCorrectness) */ - - { + { #ifdef DEBUG_MEE - printf("\nMEEScale = "); - for(i=1;i<=fbInfo->Q;i++) printf("%f ", fbInfo->aInfo->ac[i].mpe_occscale); - - printf("\nMEEScale*fbscale = "); - for(i=1;i<=fbInfo->Q;i++) { - Acoustic *ac = fbInfo->aInfo->ac+i; - printf("%f ", ac->mpe_occscale * exp (ac->locc)); - } - printf("\n"); + printf("\nMEEScale = "); + for (i = 1; i <= fbInfo->Q; i++) { + printf("%f ", fbInfo->aInfo->ac[i].mpe_occscale); + } + printf("\nMEEScale*fbscale = "); + for(i = 1; i <= fbInfo->Q; i++) { + Acoustic *ac = fbInfo->aInfo->ac + i; + printf("%f ", ac->mpe_occscale * exp(ac->locc)); + } + printf("\n"); #endif - } - - if(CalcAsError) fbInfo->AvgCorr += fbInfo->MPEFileLength; - if(trace&T_TOP) printf("FLen=%d, AvCor=%f\n", fbInfo->MPEFileLength, fbInfo->AvgCorr); /*normal case.*/ + } - } /*endif ( MPE ) */ - } - if(trace&T_TOP) printf("T=%d, pr/fr=%f\n", fbInfo->T, fbInfo->pr/fbInfo->T); + if (CalcAsError) { + fbInfo->AvgCorr += fbInfo->MPEFileLength; + } + if (trace&T_TOP) { + printf("\t\tFLen=%d, AvCor=%f\n", fbInfo->MPEFileLength, fbInfo->AvgCorr); /*normal case.*/ + } + } /*endif ( MPE ) */ + } + if (trace&T_TOP) { + printf("\t\tT=%d, pr/fr=%f\n", fbInfo->T, fbInfo->pr/fbInfo->T); + } + return TRUE; } @@ -1780,13 +2124,13 @@ void FBLatSecondPass(FBLatInfo *_fbInfo, int num_index, int den_index){ fbInfo = _fbInfo; fbInfo->num_index = num_index; fbInfo->den_index = den_index; - - if(fbInfo->pr == 0) HError(1, "FBLatSecondPass: 1st pass not done!!"); + if(fbInfo->pr == 0) HError(8493, "FBLatSecondPass: 1st pass not done!!"); StepForward(); - FBLatClearUp(fbInfo); StartTime += fbInfo->T; /*relates to caching of likelihoods */ + /* cz277 - ANN */ + fbInfo->latPr[num_index] = fbInfo->pr; } @@ -1800,12 +2144,16 @@ void InitFBLat(void) int iter,i; double f; Boolean b; + char buf[MAXSTRLEN]; Register(hfblat_version,hfblat_vc_id); + /* setup the local memory management - defaults sensible? */ + CreateHeap(&infoStack,"InfoStore", MSTAK, 1, 1.0, 50000, 500000); + for(iter=0;iter<=1;iter++){ if(iter) nParm = GetConfig("HFBLAT", TRUE, cParm, MAXGLOBS); - else nParm = GetConfig("HFWDBKWDBLAT", TRUE, cParm, MAXGLOBS); /* Backward compatibility */ + else nParm = GetConfig("HFWDBKWDLAT", TRUE, cParm, MAXGLOBS); /* Backward compatibility */ if (nParm>0){ if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; @@ -1831,6 +2179,14 @@ void InitFBLat(void) this false. */ if (GetConfFlt(cParm,nParm,"INSCORRECTNESS",&f)) InsCorrectness=-fabs(f); /* to make sure negative.*/ /* this config also used in HFBExactMPE.c */ + + if (GetConfBool(cParm,nParm,"MATCHMPETONE",&b)) matchMPETone = b; + if (GetConfStr (cParm,nParm,"MATCHMPEMASK",buf)) + matchMPEMask = CopyString(&infoStack,buf); + /* cz277 - cuda fblat */ +#ifdef CUDA + if (GetConfBool(cParm, nParm, "USECUDA4FBLAT", &b)) FBLatCUDA = b; +#endif } } SET_totalProbScale; @@ -1850,6 +2206,7 @@ void InitialiseFBInfo(FBLatInfo *fbInfo, /* Stacks for global structures requiring memory allocation */ CreateHeap(&fbInfo->arcStack, "fbLatArcStore", MSTAK, 1, 1.0, 1000000, 20000000); CreateHeap(&fbInfo->tempStack, "fbLatTempStore", MSTAK, 1, 0.5, 1000, 10000); + CreateHeap(&fbInfo->al_dataStack, "fbLatDataStore", MSTAK, 1, 0.5, 1000, 10000); CreateHeap(&fbInfo->miscStack, "fbLatMiscStore", MSTAK, 1, 0.5, 1000, 10000); if (fbInfo->twoDataFiles) @@ -1876,22 +2233,68 @@ void InitialiseFBInfo(FBLatInfo *fbInfo, nPDFs[s] = 0; SavedMixesSize[s]=0; SavedMixes[s]=0; } } + + /* cz277 - ANN */ + for (s = 1; s <= SMAX; ++s) { + fbInfo->llhMat[s] = NULL; + fbInfo->occMat[s] = NULL; + } + /* cz277 - cuda fblat */ +#ifdef CUDA + if (fbInfo->hset->annSet != NULL && fbInfo->S == 1) { + fbInfo->aInfo->FBLatCUDA = FBLatCUDA; + } + else { + fbInfo->aInfo->FBLatCUDA = FALSE; + } +#endif + } -void FBLatClearUp(FBLatInfo *fbInfo){ - ResetHeap(&fbInfo->arcStack); - fbInfo->aInfo->mem = &fbInfo->arcStack; - fbInfo->aInfo->nLats = 0; /* important. */ - CloseBuffer(fbInfo->al_pbuf); - ResetHeap(&fbInfo->up_dataStack); - if (fbInfo->twoDataFiles){ - CloseBuffer(fbInfo->up_pbuf); - ResetHeap(&fbInfo->up_dataStack); - } - ResetHeap(&fbInfo->tempStack); - fbInfo->InUse=FALSE; +void FBLatClearUp(FBLatInfo *fbInfo) { + int s; + + /* cz277 - cuda fblat */ +#ifdef CUDA + int q; + + if (fbInfo->aInfo->FBLatCUDA == TRUE) { + DevDispose(fbInfo->aInfo->qLoDev, sizeof(int) * (fbInfo->aInfo->T + 1)); + DevDispose(fbInfo->aInfo->qHiDev, sizeof(int) * (fbInfo->aInfo->T + 1)); + for (q = 1; q <= fbInfo->Q; ++q) { + ClearAcousticDev(&fbInfo->aInfo->acDev[q]); + } + DevDispose(fbInfo->aInfo->acDev, sizeof(AcousticDev) * (fbInfo->aInfo->Q + 1)); + } +#endif + + ResetHeap(&fbInfo->arcStack); + fbInfo->aInfo->mem = &fbInfo->arcStack; + fbInfo->aInfo->nLats = 0; /* important. */ + /* cz277 - ANN */ + if (fbInfo->al_pbuf != NULL) { + CloseBuffer(fbInfo->al_pbuf); + /* from mjfg - cz277 141022 */ + ResetHeap(&fbInfo->al_dataStack); + } + /* cz277 - ANN */ + if (fbInfo->up_pbuf != NULL) { + ResetHeap(&fbInfo->up_dataStack); + if (fbInfo->twoDataFiles) { + CloseBuffer(fbInfo->up_pbuf); + ResetHeap(&fbInfo->up_dataStack); + } + } + for (s = 1; s <= fbInfo->S; ++s) { + if (fbInfo->occMat[s] != NULL) { + SetNMatrix(0.0, fbInfo->occMat[s], fbInfo->T); + } + } + + ResetHeap(&fbInfo->tempStack); + fbInfo->InUse = FALSE; } @@ -1902,6 +2305,11 @@ void SetDoingFourthAcc(Boolean DO, int indx){ add_index = indx; } +/* cz277 - ANN */ +float GetProbScale(void) { + return probScale; +} + /* --------------------------------- End HFBLat.c -------------------------------------- */ diff --git a/HTKLib/HFBLat.h b/HTKLib/HFBLat.h old mode 100644 new mode 100755 index 075baff..fabe684 --- a/HTKLib/HFBLat.h +++ b/HTKLib/HFBLat.h @@ -3,32 +3,32 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HFBLat.h Lattice Forward Backward routines */ +/* File: HFBLat.h Lattice Forward Backward routines */ /* ----------------------------------------------------------- */ -/* !HVER!HNET: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HFBLat: 3.5.0 [CUED 12/10/15] */ /* This module provides facilities to apply a HMM set to @@ -89,6 +89,18 @@ typedef struct { AdaptXForm *inXForm;/* current input transform (if any) */ AdaptXForm *paXForm;/* current parent transform (if any) */ /* ... */ + + /* cz277 - ANN */ + NMatrix *llhMat[SMAX]; + NMatrix *occMat[SMAX]; + + LogDouble latPr[2]; + float FSmoothH; + /* cz277 - frame rejection */ + IntVec refVec[SMAX]; /* the hard target index or the target that has the biggest num occ */ + DVector occVec[SMAX]; /* num occ when proc num lattice, den occ when proc den lattice */ + Boolean findRef; /* compute the state with the maximum num likelihood or not */ + Boolean rejFrame; /* do frame rejection or not */ } FBLatInfo; void InitFBLat(void); @@ -108,7 +120,7 @@ void FBLatSetAccScale(FBLatInfo *fbInfo, float AccScale); /*prepare to scale acc -void FBLatFirstPass(FBLatInfo *fbInfo, +Boolean FBLatFirstPass(FBLatInfo *fbInfo, FileFormat dff, char *datafn, char *datafn2 /*for single-pass retraining*/, Lattice *MPECorrLat /* Only used in MPE, equals correct lattice.*/ ); @@ -126,9 +138,8 @@ void GetTimes(LArc *larc, int i, int *start, int *end); /*gets times as ints. /* EXPORT-> SetDoingFourthAcc: Indicate whether it is currently storing MMI statistics */ void SetDoingFourthAcc(Boolean DO, int indx); -/* ------------------------- End of HFBLat.h --------------------------- */ - - - +/* cz277 - ANN */ +float GetProbScale(void); +/* ------------------------- End of HFBLat.h --------------------------- */ diff --git a/HTKLib/HGraf.c b/HTKLib/HGraf.c old mode 100644 new mode 100755 index f12ab84..ab455c8 --- a/HTKLib/HGraf.c +++ b/HTKLib/HGraf.c @@ -3,23 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HGraf.X.c: HGraf for X-Windows */ +/* File: HGraf.X.c HGraf for X-Windows */ /* ----------------------------------------------------------- */ -char *hgraf_version = "!HVER!HGraf(X): 3.4.1 [CUED 12/03/09]"; +char *hgraf_version = "!HVER!HGraf(X): 3.5.0 [CUED 12/10/15]"; char *hgraf_vc_id = "$Id: HGraf.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; /* @@ -176,11 +189,10 @@ static void InstallFonts(void) static void DecodeKeyPress(XKeyEvent *xkev, HEventRec *hev) { char buf[20]; - int n; KeySym key; XComposeStatus compose; - n = XLookupString(xkev,buf,20,&key,&compose); + XLookupString(xkev,buf,20,&key,&compose); hev->c = buf[0]; switch (key) { case XK_Shift_L: @@ -218,7 +230,7 @@ HEventRec HGetEvent(Boolean anyEvent, void (*action)(void)) { XEvent xev; HEventRec hev; - Boolean found,dummy; + Boolean found; XFlush(theDisp); found = FALSE; do { @@ -269,7 +281,7 @@ HEventRec HGetEvent(Boolean anyEvent, void (*action)(void)) XFlush(theDisp); /* execute a round-robin command to make sure that */ /* client doesnt get too far ahead of the server */ - dummy = HMousePos(&hev.x,&hev.y); + HMousePos(&hev.x,&hev.y); } } while (!found); return hev; diff --git a/HTKLib/HGraf.h b/HTKLib/HGraf.h old mode 100644 new mode 100755 index e34e51a..85ff0a6 --- a/HTKLib/HGraf.h +++ b/HTKLib/HGraf.h @@ -3,24 +3,37 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HGraf.h: Minimal Graphics Interface */ +/* File: HGraf.h Minimal Graphics Interface */ /* ----------------------------------------------------------- */ -/* Win32 port: Peter Silsbee */ +/* Win32 port: Peter Silsbee */ -/* !HVER!HGraf: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HGraf: 3.5.0 [CUED 12/10/15] */ /* This module provides a minimal graphics facility. It provides a diff --git a/HTKLib/HGraf.null.c b/HTKLib/HGraf.null.c old mode 100644 new mode 100755 index 353bd34..4c57715 --- a/HTKLib/HGraf.null.c +++ b/HTKLib/HGraf.null.c @@ -3,23 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HGraf.null.c: HGraf (null implementation) */ +/* File: HGraf.null.c HGraf (null implementation) */ /* ----------------------------------------------------------- */ -char *hgraf_version = "!HVER!HGraf(null): 3.4.1 [CUED 12/03/09]"; +char *hgraf_version = "!HVER!HGraf(null): 3.5.0 [CUED 12/10/15]"; char *hgraf_vc_id = "$Id: HGraf.null.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" diff --git a/HTKLib/HGraf_WIN32.c b/HTKLib/HGraf_WIN32.c deleted file mode 100644 index 2ab79c4..0000000 --- a/HTKLib/HGraf_WIN32.c +++ /dev/null @@ -1,1199 +0,0 @@ -/* ----------------------------------------------------------- */ -/* */ -/* ___ */ -/* |_| | |_/ SPEECH */ -/* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ -/* */ -/* */ -/* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ -/* */ -/* Use of this software is governed by a License Agreement */ -/* ** See the file License for the Conditions of Use ** */ -/* ** This banner notice must not be removed ** */ -/* */ -/* ----------------------------------------------------------- */ -/* File: HGraf.win32.c: HGraf for Windows NT */ -/* ----------------------------------------------------------- */ -/* Win32 port Peter Silsbee */ - -char *hgraf_version = "!HVER!HGraf(NT): 3.4.1 [CUED 12/03/09]"; -char *hgraf_vc_id = "$Id: HGraf_WIN32.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; - -/* define CAPTURE_ALT to allow application to respond to Alt-key presses. */ -/* "Normal" windows application behavior is to allow the system to handle it. */ -#define CAPTURE_ALT - -#include "HShell.h" -#include "HMem.h" -#include "HMath.h" -#include "HGraf.h" - -#include -#include -#include -#include - -#define DEF_FONTSIZE 12 /* default font size */ -#define MAX_POINT 64 /* max number of points for polygons */ - -static MemHeap btnHeap; /* heap for HButton structures */ - -/* -------------------- Global Windows variables: ------------------------*/ - -static HWND theWindow = NULL; /* A handle to the graphics window */ -static HDC memDC = NULL; /* A handle to the memory device context */ -static HDC DCSaved; /* to store memDC when saving Metafile */ -static HBITMAP theBitmap; /* Internal representation of window contents */ - -/* -------------------- Objects that draw ----------------------- */ - -static HBRUSH theBrush = NULL; /* Used to fill solid areas */ -static HPEN thePen = NULL; /* Used to draw lines */ -static HPEN thinPen = NULL; /* Always has width 1, needed for outlining filled shapes */ -static HFONT theFont = NULL; /* Current font for text output */ - -/* ------------ stuff that application keeps track of ------------*/ - -static Boolean winCreated = FALSE; /* prevent duplicate windows */ -static Boolean WritingToMeta = FALSE; /* TRUE if spooling to a metafile */ -static unsigned char colours[MAX_COLOURS][3]; /* r,g,b */ -static unsigned char greys[MAX_GREYS]; -static int dispDEEP,dispWIDE,dispHIGH; -static RECT ClientRect; -static POINT winPoints[MAX_POINT]; - -static int LineWidth = 1; -static COLORREF CurrentColour = RGB(0,0,0); -static POINT MousePos; /* updated when a WM_MOUSEMOVE occurs */ - /* Win32 does not support direct querying of the mouse position */ -static char *FONTNAME = "Helvetica"; - -#ifdef CAPTURE_ALT -enum _AltState {ALT_UP,ALT_DOWN}; /* keep track of Alt key */ -typedef enum _AltState AltState; -static AltState AltKeyState = ALT_UP; -#endif - -#ifdef WIN32 -LRESULT CALLBACK HGWinFunc(HWND WindowHandle, unsigned int msg, - WPARAM wParam, LPARAM lParam); -/* Handle messages from Windows */ - -KeyType HGetKeyType(char c); -/* Utility routine to help decode key presses */ -#endif - - -/* --------------------------- Initialisation ---------------------- */ - -static ConfParam *cParm[MAXGLOBS]; /* config parameters */ -static int nParm = 0; -static int trace = 0; /* Just for consistency */ - -/* EXPORT->InitGraf: initialise memory and configuration parameters */ - -void InitGraf(void) -{ - int i; - - Register(hgraf_version,hgraf_vc_id); - nParm = GetConfig("HGRAF", TRUE, cParm, MAXGLOBS); - if (nParm>0){ - if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; - } -} - -/* EXPORT->HGetEvent: return next relevant event in event queue */ -HEventRec HGetEvent(Boolean anyEvent, void (*action)(void)) -{ - HEventRec r={0,0,0,0,0}; - static KeyType SavedKeyType; - MSG msg; - Boolean hasEvent = FALSE; - HWND WindowHandle = (anyEvent) ? NULL : theWindow; - - do { - if (action==NULL) { - GetMessage(&msg,WindowHandle,0,0); - hasEvent=TRUE; - } else { - hasEvent=PeekMessage(&msg,WindowHandle,0,0,PM_REMOVE); - } - if (hasEvent) { - TranslateMessage(&msg); - switch (msg.message) { - case WM_LBUTTONDOWN: - r.event = HMOUSEDOWN; - r.x = MousePos.x = LOWORD(msg.lParam); - r.y = MousePos.y = HIWORD(msg.lParam); - SetCapture(theWindow); - break; - case WM_LBUTTONUP: - r.event = HMOUSEUP; - r.x = MousePos.x = LOWORD(msg.lParam); - r.y = MousePos.y = HIWORD(msg.lParam); - ReleaseCapture(); - break; - case WM_MOUSEMOVE: - r.event = HMOUSEMOVE; - r.x = MousePos.x = LOWORD(msg.lParam); - r.y = MousePos.y = HIWORD(msg.lParam); - break; -#ifdef CAPTURE_ALT /* alt key events are normally intended for the system */ - case WM_SYSKEYDOWN: - r.c = (unsigned char) msg.wParam; - if (r.c == VK_MENU) { - r.ktype = COMMANDKEY; - r.event = HKEYPRESS; - r.x = MousePos.x; - r.y = MousePos.y; - AltKeyState = ALT_DOWN; - break; - } /* else fall through to regular keydown */ -#endif - case WM_KEYDOWN: - r.event = HKEYPRESS; - r.x = MousePos.x; - r.y = MousePos.y; - r.c = (unsigned char) msg.wParam; - SavedKeyType = r.ktype = HGetKeyType(r.c); - if ((r.c != VK_DELETE) && - (r.ktype != CONTROLKEY) && - (r.ktype != COMMANDKEY) && - (r.ktype != SHIFTKEY)) - hasEvent = FALSE; /* other keys will be processed by WM_CHAR */ - /* message which should arrive shortly */ - break; -#ifdef CAPTURE_ALT - case WM_SYSCHAR: -#endif - case WM_CHAR: - r.event = HKEYPRESS; - r.x = MousePos.x; - r.y = MousePos.y; - r.c = (unsigned char) msg.wParam; - r.ktype = SavedKeyType; //HGetKeyType(r.c); - break; -#ifdef CAPTURE_ALT - case WM_SYSKEYUP: - r.c = (unsigned char) msg.wParam; - if (r.c == VK_MENU) { - r.ktype = COMMANDKEY; - r.event = HKEYRELEASE; - r.x = MousePos.x; - r.y = MousePos.y; - AltKeyState = ALT_UP; - break; - } /* else fall through to regular keydown */ -#endif - case WM_KEYUP: - r.event = HKEYRELEASE; - r.x = MousePos.x; - r.y = MousePos.y; - r.c = (unsigned char) msg.wParam; - r.ktype = HGetKeyType(r.c); - break; - case WM_PAINT: - DispatchMessage(&msg); /* force Win32 to remove message from */ - /* queue even though application is dispatching this message. */ - /* Applications should actually be able to ignore HREDRAW events. */ - /* Fall through to next messages */ - case WM_SIZING: - case WM_MOVING: - case WM_EXITSIZEMOVE: - r.event = HREDRAW; - break; - default: - hasEvent = FALSE; - DispatchMessage(&msg); /* Win32 should handle other messages */ - } - } - else if (action != NULL) { - (*action)(); - } - } while (!hasEvent); - return r; -} - -/* EXPORT->HEventsPending: Return number of events pending */ -/* This doesn't seem to be supported in Win32. It is possible */ -/* to see if the queue is empty, but there is no way to see if */ -/* there is just one event or if there are many. This function */ -/* should probably return a Boolean value. Currently it returns 1 */ -/* if there are one or more events pending, and 0 if there are none. */ -int HEventsPending(void) -{ - MSG msg; - - if (PeekMessage(&msg,theWindow,0,0,PM_NOREMOVE)) - return 1; - return 0; -} - -/* EXPORT->HMousePos: return mouse pos in x, y, returns TRUE if the pointer - is on the window */ -/* Win32: We only get mouse position information when (a) there is an event */ -/* when the mouse is positioned over the window, or (b) when we are capturing */ -/* the mouse. We only capture the mouse when the mouse button is depressed. */ -/* Thus, the mouse position determined from this function may not be up to */ -/* date. This shouldn't be a problem since the "focus" is not determined by */ -/* mouse position in Win32. That is, keyboard events that take place when the */ -/* mouse is outside the window still really do belong to our window, if the */ -/* event has been directed to our application. */ - -Boolean HMousePos(int *x, int *y) -{ - *x = MousePos.x; - *y = MousePos.y; - return (Boolean) IsInRect(*x,*y,ClientRect.left,ClientRect.top, - ClientRect.right,ClientRect.bottom); -} - -/* EXPORT: IsInRect: return TRUE iff (x,y) is in the rectangle (x0,y0,x1,y1) */ -Boolean IsInRect(int x, int y, int x0, int y0, int x1, int y1) -{ - return (x >= x0 && x<=x1 && y >= y0 && y <= y1); -} - -/* ------------------------- Colour Handling ------------------------------ */ - -#define GSTP 4 - -static void InstallColours(void) -{ - int pixVal=0; - int c; - int step; - LOGPALETTE *pal; - HPALETTE hpal,OldPal; - HDC dc; - /* WHITE */ - colours[0][0] = 255; colours[0][1] = 255; colours[0][2] = 255; - /* YELLOW */ - colours[1][0] = 255; colours[1][1] = 255; colours[1][2] = 0; - /* ORANGE */ - colours[2][0] = 255; colours[2][1] = 128; colours[2][2] = 0; - /* RED */ - colours[3][0] = 255; colours[3][1] = 0; colours[3][2] = 0; - /* MAUVE */ - colours[4][0] = 196; colours[4][1] = 100; colours[4][2] = 255; - /* PURPLE */ - colours[5][0] = 128; colours[5][1] = 0; colours[5][2] = 128; - /* DARK_BLUE */ - colours[6][0] = 0; colours[6][1] = 0; colours[6][2] = 196; - /* LIGHT_BLUE (CYAN) */ - colours[7][0] = 0; colours[7][1] = 255; colours[7][2] = 255; - /* DARK_GREEN */ - colours[8][0] = 0; colours[8][1] = 128; colours[8][2] = 0; - /* LIGHT_GREEN */ - colours[9][0] = 0; colours[9][1] = 255; colours[9][2] = 0; - /* DARK_BROWN */ - colours[10][0] = 128;colours[10][1] = 64; colours[10][2] = 64; - /* LIGHT_BROWN */ - colours[11][0] = 196;colours[11][1] = 140;colours[11][2] = 140; - /* LIGHT_GREY */ - colours[12][0] = 196;colours[12][1] = 196;colours[12][2] = 196; - /* GREY */ - colours[13][0] = 128;colours[13][1] = 128;colours[13][2] = 128; - /* DARK_GREY */ - colours[14][0] = 64; colours[14][1] = 64; colours[14][2] = 64; - /* BLACK */ - colours[15][0] = 0; colours[15][1] = 0; colours[15][2] = 0; - - step = 256/MAX_GREYS; - for (c = 0; c < MAX_GREYS; c++, pixVal+= step){ - greys[c] = pixVal; - } - - /* if display is 8 bits or less, create a palette containing - the best match to our desired colors. If it is 16 bits or - greater, matching will be no problem. */ - if (dispDEEP <= 8){ - pal = (LOGPALETTE *) - New(&gcheap,2*sizeof(WORD) + (MAX_GREYS + MAX_COLOURS)*sizeof(PALETTEENTRY)); - pal->palVersion = 0x300; - pal->palNumEntries = MAX_GREYS + MAX_COLOURS; - - /* most important colors should be first in list. Black, White, - the rest of the colors, then the greys. */ - - pal->palPalEntry[0].peRed = pal->palPalEntry[0].peGreen = - pal->palPalEntry[0].peBlue = 0; - pal->palPalEntry[0].peFlags = 0; - pal->palPalEntry[1].peRed = pal->palPalEntry[1].peGreen = - pal->palPalEntry[1].peBlue = 255; - pal->palPalEntry[1].peFlags = 0; - for (c=2;cpalPalEntry[c].peRed = colours[c-1][0]; - pal->palPalEntry[c].peGreen = colours[c-1][1]; - pal->palPalEntry[c].peBlue = colours[c-1][2]; - pal->palPalEntry[c].peFlags = 0; - } - - for (c=0;cpalPalEntry[MAX_COLOURS+c].peRed = greys[c]; - pal->palPalEntry[MAX_COLOURS+c].peGreen = greys[c]; - pal->palPalEntry[MAX_COLOURS+c].peBlue = greys[c]; - pal->palPalEntry[MAX_COLOURS+c].peFlags = 0; - } - hpal = CreatePalette(pal); - - OldPal = SelectPalette(memDC,hpal,FALSE); - RealizePalette(memDC); - SelectPalette(memDC,OldPal,FALSE); - - dc = GetDC(theWindow); - OldPal = SelectPalette(dc,hpal,FALSE); - RealizePalette(dc); - SelectPalette(dc,OldPal,FALSE); - ReleaseDC(theWindow,dc); - DeleteObject(hpal); - } /* if (dispDEEP <= 8) */ -} - -/* EXPORT-> HSetColour: Set current colour to c */ -void HSetColour(HColour c) -{ - CurrentColour = RGB(colours[c][0],colours[c][1],colours[c][2]); - - if (theBrush) DeleteObject(theBrush); - theBrush = CreateSolidBrush(CurrentColour); - - if (thePen) DeleteObject(thePen); - thePen = CreatePen(PS_SOLID,LineWidth,CurrentColour); - - if (thinPen) DeleteObject(thinPen); - thinPen = CreatePen(PS_SOLID,1,CurrentColour); -} - -/* EXPORT-> HSetGrey: Set current colour to grey level g */ -void HSetGrey(int g) -{ - CurrentColour = RGB(greys[g],greys[g],greys[g]); - - if (theBrush) DeleteObject(theBrush); - theBrush = CreateSolidBrush(CurrentColour); - - if (thePen) DeleteObject(thePen); - thePen = CreatePen(PS_SOLID,LineWidth,CurrentColour); - - if (thinPen) DeleteObject(thinPen); - thinPen = CreatePen(PS_SOLID,1,CurrentColour); -} - -/* CheckCorners: make sure (x0,y0) is north-west of (x1,y1) */ -static void CheckCorners(int *x0, int *y0, int *x1, int *y1) -{ - int a,b,c,d; - - if (*x0<*x1) {a=*x0; c=*x1;} else {a=*x1; c=*x0;} - if (*y0<*y1) {b=*y0; d=*y1;} else {b=*y1; d=*y0;} - *x0=a; *y0=b; *x1=c; *y1=d; -} - - -/* EXPORT-> HDrawLines: Draw multiple lines */ -void HDrawLines(HPoint *points, int n) -{ - int i; - HDC dc; - HGDIOBJ oldObject; - - if (n>MAX_POINT) - HError(6815, "HDrawLines: can only specify up to %d points",MAX_POINT); - for(i=0; i HDrawRectangle: draw a rectangle */ -void HDrawRectangle(int x0, int y0, int x1, int y1) -{ - POINT points[5]; - HGDIOBJ oldObject = SelectObject(memDC,thePen); - HDC dc = GetDC(theWindow); - - CheckCorners(&x0,&y0,&x1,&y1); - points[0].x = x0; points[0].y = y0; - points[1].x = x0; points[1].y = y1; - points[2].x = x1; points[2].y = y1; - points[3].x = x1; points[3].y = y0; - points[4].x = x0; points[4].y = y0; - - Polyline(memDC, points, 5); - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,thePen); - Polyline(dc, points, 5); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HFillRectangle: fill a rectangle */ -void HFillRectangle(int x0, int y0, int x1, int y1) -{ - HDC dc = GetDC(theWindow); - HGDIOBJ oldBrush = SelectObject(memDC,theBrush); - HGDIOBJ oldPen = SelectObject(memDC,thinPen); - - CheckCorners(&x0,&y0,&x1,&y1); - - Rectangle(memDC,x0,y0,x1,y1); - - SelectObject(memDC,oldBrush); - SelectObject(memDC,oldPen); - - oldBrush = SelectObject(dc,theBrush); - oldPen = SelectObject(dc,thinPen); - Rectangle(dc,x0,y0,x1,y1); - SelectObject(dc,oldBrush); - SelectObject(dc,oldPen); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HDrawLine: Draw one line */ -void HDrawLine(int x0, int y0, int x1, int y1) -{ - HDC dc = GetDC(theWindow); - HGDIOBJ oldObject = SelectObject(memDC,thePen); - - MoveToEx(memDC,x0,y0,NULL); - LineTo(memDC,x1,y1); - - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,thePen); - MoveToEx(dc,x0,y0,NULL); - LineTo(dc,x1,y1); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HFillPolygon: fill a convex polygon */ -void HFillPolygon(HPoint *points, int n) -{ - int i; - HDC dc; - HGDIOBJ oldPen; - HGDIOBJ oldBrush; - - if (n>MAX_POINT) - HError(6815, "HFillPolygon: can only specify up to %d points",MAX_POINT); - for(i=0; i HDrawArc: Draw arc from stAngle thru arcAngle degrees */ -void HDrawArc(int x0, int y0, int x1, int y1, int stAngle, int arcAngle) -{ - int Center_x = (x0+x1)/2; - int Center_y = (y0+y1)/2; - int StartArc_x, StartArc_y; - int EndArc_x, EndArc_y; - int radius; /* major axis */ - double startAngle, endAngle,convrt = PI/180; /* degrees to radians */ - HGDIOBJ oldObject = SelectObject(memDC,thePen); - HDC dc = GetDC(theWindow); - - CheckCorners(&x0,&y0,&x1,&y1); - - startAngle = stAngle *convrt; - endAngle=(arcAngle+stAngle)*convrt; - - radius = (((x1-x0) > (y1-y0)) ? x1-x0 : y1-y0)/2; - StartArc_x = Center_x + (int) (radius * cos((double) startAngle)); - StartArc_y = Center_y - (int) (radius * sin((double) startAngle)); - EndArc_x = Center_x + (int) (radius * cos((double) endAngle)); - EndArc_y = Center_y - (int) (radius * sin((double) endAngle)); - - Arc(memDC,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,thePen); - Arc(dc,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HFillArc: Draw filled arc from stAngle thru arcAngle degrees */ -void HFillArc(int x0,int y0,int x1,int y1,int stAngle,int arcAngle) -{ - int radius; - int Center_x = (x0+x1)/2; - int Center_y = (y0+y1)/2; - int StartArc_x,StartArc_y; - int EndArc_x,EndArc_y; - HGDIOBJ oldBrush = SelectObject(memDC,theBrush); - HGDIOBJ oldPen = SelectObject(memDC,thinPen); - HDC dc = GetDC(theWindow); - double startAngle, endAngle,convrt = PI/180; /* degrees to radians */ - - CheckCorners(&x0,&y0,&x1,&y1); - - /* calculate point locations */ - - startAngle = stAngle*convrt; - endAngle = (stAngle+arcAngle)*convrt; - - radius = (((x1-x0) > (y1-y0)) ? x1-x0 : y1-y0)/2; - StartArc_x = Center_x + (int) (radius * cos((double) startAngle)); - StartArc_y = Center_y - (int) (radius * sin((double) startAngle)); - EndArc_x = Center_x + (int) (radius * cos((double) endAngle)); - EndArc_y = Center_y - (int) (radius * sin((double) endAngle)); - - Pie(memDC,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - - SelectObject(memDC,oldBrush); - SelectObject(memDC,oldPen); - - oldBrush = SelectObject(dc,theBrush); - oldPen = SelectObject(dc,thinPen); - Pie(dc,x0,y0,x1,y1,StartArc_x,StartArc_y,EndArc_x,EndArc_y); - SelectObject(dc,oldBrush); - SelectObject(dc,oldPen); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HPrintf: works as printf on the graphics window at (x,y) */ -void HPrintf(int x, int y, char *format, ...) -{ - va_list arg; - char s[256]; - HGDIOBJ oldObject = SelectObject(memDC,theFont); - HDC dc = GetDC(theWindow); - - SetTextColor(memDC,CurrentColour); - va_start(arg, format); - vsprintf(s, format, arg); - - TextOut(memDC,x,y,s,strlen(s)); - SelectObject(memDC,oldObject); - - oldObject = SelectObject(dc,theFont); - TextOut(dc,x,y,s,strlen(s)); - SelectObject(dc,oldObject); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> copy rectangular area of the drawable */ -void HCopyArea(int srcx, int srcy, int width, int height, int destx, int desty) -{ - HDC dc = GetDC(theWindow); - BitBlt(memDC,destx,desty,width,height,memDC,srcx,srcy,SRCCOPY); - BitBlt(dc,destx,desty,width,height,memDC,srcx,srcy,SRCCOPY); - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> HPlotVector: plot vector v in given rectangle */ -void HPlotVector(int x0, int y0, int x1, int y1, Vector v, int st, int en, float ymax, float ymin) -{ - float yScale, yOffset, xInc, x; - int xOld, yOld, ix, iy, i; - - if (st >= en || st < 1 || en > VectorSize(v)) - HError(6815, "HPlotVector: Plot indices %d -> %d out of range", st, en); - x = (x1 - x0 - 1); xInc = x/(en - st); - yScale = (y1 - y0)/(ymin - ymax); - yOffset = y0 - ymax*yScale; - x = x0; xOld = x; yOld = v[st]*yScale + yOffset; - for (i = st+1; i <= en; i++){ - x += xInc; ix = x; - iy = v[i]*yScale + yOffset; - HDrawLine(xOld,yOld,ix,iy); - xOld = ix; yOld = iy; - } -} - -/* ----------------------------- Global Settings ------------------------------- */ - -/* EXPORT-> HSetFontSize: Set font size in points, 0 selects the default font */ -void HSetFontSize(int size) -{ - int FontSize = (size > 0) ? size : DEF_FONTSIZE; - - if (theFont) DeleteObject(theFont); - theFont = CreateFont(FontSize, - 0,0,0,FW_NORMAL, - 0,0,0,ANSI_CHARSET, - OUT_DEFAULT_PRECIS, - CLIP_DEFAULT_PRECIS, - DEFAULT_QUALITY, - DEFAULT_PITCH | FF_SWISS, - FONTNAME); -} - -/* EXPORT-> HSetLineWidth: set the line width */ -void HSetLineWidth(int w) -{ - LineWidth = w; - - if (thePen) DeleteObject(thePen); - thePen = CreatePen(PS_SOLID,LineWidth,CurrentColour); -} - -/* EXPORT-> HSetXMode: Set current transfer mode */ -void HSetXMode(XferMode m) -{ - HDC dc = GetDC(theWindow); - switch(m) { - case GCOPY: - SetROP2(memDC,R2_COPYPEN); - SetROP2(dc,R2_COPYPEN); - break; - case GOR: - SetROP2(memDC,R2_MERGEPEN); - SetROP2(dc,R2_MERGEPEN); - break; - case GXOR: - SetROP2(memDC,R2_XORPEN); - SetROP2(dc,R2_XORPEN); - break; - case GINVERT: - SetROP2(memDC,R2_NOT); - SetROP2(dc,R2_NOT); - break; - default: /* GCOPY */ - SetROP2(memDC,R2_COPYPEN); - SetROP2(dc,R2_COPYPEN); - break; - } - ReleaseDC(theWindow,dc); -} - -/* EXPORT-> CentreX: return position at which the the h-center of str will be at x */ -int CentreX(int x, char *str) -{ - SIZE size; - - GetTextExtentPoint32(memDC,str,strlen(str),&size); - return (x-size.cx/2); -} - -/* EXPORT-> CentreY: return position at which the the v-center of str will be at y */ -int CentreY(int y, char *str) -{ - HDC dc; - HGDIOBJ obj; - TEXTMETRIC tm; - int pos; - - dc = GetDC(theWindow); - obj = SelectObject(dc,theFont); - GetTextMetrics(dc,&tm); - pos = (y - ((tm.tmAscent + tm.tmDescent)/2) + tm.tmAscent); - SelectObject(dc,obj); - return pos; -} - -/* EXPORT HTextWidth: return the width of s in pixels */ -int HTextWidth(char *str) -{ - SIZE size; - - GetTextExtentPoint32(memDC,str,strlen(str),&size); - return (size.cx); -} - -/* EXPORT HTextHeight: return the height of s in pixels */ -int HTextHeight(char *str) -{ - SIZE size; - - GetTextExtentPoint32(memDC,str,strlen(str),&size); - return (size.cy); -} - -/* --------------------------- Misc/Button Routines -----------------------------*/ - -/* EXPORT->HDrawImage: draw grey scale image stored in p */ -void HDrawImage(unsigned char *p, int x, int y, int width, int height) -{ - HDC tdc = GetDC(theWindow); - HDC dc = CreateCompatibleDC(memDC); - HBITMAP bm = CreateCompatibleBitmap(tdc,width,height); - HGDIOBJ OldObject; - - char *data = New(&gcheap,sizeof(BITMAPINFOHEADER) + - sizeof(RGBQUAD)*MAX_GREYS); - BITMAPINFOHEADER *BitmapHeader = (BITMAPINFOHEADER *) data; - RGBQUAD *ColorTable = (RGBQUAD *) (data + sizeof(BITMAPINFOHEADER)); - BITMAPINFO *Info = (BITMAPINFO *) data; - - int i,j; - - /* if the length of the scan line is not a */ - /* multiple of four, the bitmap must be reshaped. */ - /* SetDIBits() expects scan lines to start on word boundaries. */ - - int ScanLineLen = 4*(1+(width-1)/4); - unsigned char *reshaped = NULL; - - BitmapHeader->biSize = sizeof(BITMAPINFOHEADER); - BitmapHeader->biWidth = width; - BitmapHeader->biHeight = -height; - BitmapHeader->biPlanes = 1; - BitmapHeader->biBitCount = 8; - BitmapHeader->biCompression = 0; - BitmapHeader->biSizeImage = 0; - BitmapHeader->biXPelsPerMeter = 0; - BitmapHeader->biYPelsPerMeter = 0; - BitmapHeader->biClrUsed = MAX_GREYS; - BitmapHeader->biClrImportant = MAX_GREYS; - for (i=0;iHFlush: flush any pending draw operations */ -void HFlush(void) -{ -} - -/* EXPORT-> HSpoolGraf: start saving an image of window in fname */ -/* must be balanced by a call to HEndSpoolGraf() */ -void HSpoolGraf(char *fname) -{ - int wmm,hmm; /* width and height in millimeters */ - int wpx,hpx; /* width and height in pixels */ - char *description = "Created by HGraf"; - RECT r; - HDC dc = GetDC(theWindow); - int er; - - wmm = GetDeviceCaps(dc, HORZSIZE); - hmm = GetDeviceCaps(dc, VERTSIZE); - wpx = GetDeviceCaps(dc, HORZRES); - hpx = GetDeviceCaps(dc, VERTRES); - - r.left = (ClientRect.left * wmm * 100)/wpx; - r.top = (ClientRect.top * hmm * 100)/hpx; - r.right = (ClientRect.right * wmm * 100)/wpx; - r.bottom = (ClientRect.bottom * hmm * 100)/hpx; - - DCSaved = memDC; - memDC = CreateEnhMetaFile(dc,fname,&r,description); - er = GetLastError(); - ReleaseDC(theWindow,dc); - WritingToMeta = TRUE; -} - -/* EXPORT-> HEndSpoolGraf: close file opened in HSpoolGraf() */ -/* It is recommended to redraw the window after this call. */ -void HEndSpoolGraf() -{ - WritingToMeta = FALSE; - CloseEnhMetaFile(memDC); - memDC = DCSaved; -} - - -/* EXPORT->HDumpGraf: dump a BMP image of current display into fname */ -void HDumpGraf(char *fname) -{ - BITMAPFILEHEADER FileHeader; - BITMAPINFOHEADER BitmapHeader; - BITMAPINFO *Info; - int ColorTableSize; - int ImageSize; - FILE *fp; - char *img; - HDC dc = GetDC(theWindow); - HBITMAP temp = CreateCompatibleBitmap(memDC,1,1); - - SelectObject(memDC,temp); - - /* retrieve information about the bitmap */ - BitmapHeader.biSize = sizeof(BITMAPINFOHEADER); - BitmapHeader.biBitCount = 0; - GetDIBits(memDC,theBitmap,0,0,NULL,&BitmapHeader,BI_RGB); - - switch (BitmapHeader.biCompression) { - case BI_RGB: - if (BitmapHeader.biBitCount > 8) { - ColorTableSize = 0; - } - else { - ColorTableSize = BitmapHeader.biClrUsed*sizeof(RGBQUAD); - } - break; - case BI_RLE8: - case BI_RLE4: - ColorTableSize = BitmapHeader.biClrUsed*sizeof(RGBQUAD); - break; - case BI_BITFIELDS: - ColorTableSize = 3*sizeof(DWORD); - } - - Info = (BITMAPINFO *) New(&gcheap,sizeof(BITMAPINFOHEADER) + ColorTableSize); - memcpy(Info,&BitmapHeader,sizeof(BITMAPINFOHEADER)); - - ImageSize = BitmapHeader.biSizeImage; - img = New(&gcheap,ImageSize); - - GetDIBits(memDC,theBitmap,0,ClientRect.bottom,img,Info,BI_RGB); - - FileHeader.bfType = 0x4d42; /* 'BM' */ - FileHeader.bfSize = sizeof(BITMAPINFOHEADER) + sizeof(BITMAPFILEHEADER) + - ImageSize + ColorTableSize; - FileHeader.bfReserved1 = FileHeader.bfReserved2 = 0; - FileHeader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER) + ColorTableSize; - - fp = fopen(fname,"wb"); - fwrite(&FileHeader,1,sizeof(BITMAPFILEHEADER),fp); - fwrite(Info,1,sizeof(BITMAPINFOHEADER) + ColorTableSize,fp); - fwrite(img,1,ImageSize,fp); - fclose(fp); - - SelectObject(memDC,theBitmap); - DeleteObject(temp); - Dispose(&gcheap,Info); - Dispose(&gcheap,img); -} - -#define BTN_WAIT 200 /* 200 milliseconds minimum button press */ -#define BTN_LINE_WIDTH 1 /* the line width for button drawing */ - -/* EXPORT->CreateHButton: create a button object with the specified parameters */ -HButton *CreateHButton(HButton *btnlst, ButtonId btnid, int x, int y, int w, - int h, char *str, HColour fg, HColour bg, void (*action)(void)) -{ - HButton *btn, *btnptr; - - btn = New(&btnHeap, sizeof(HButton)); - /* initialise the fields of the structure */ - btn->id = btnid; - btn->x = x; btn->y = y; btn->w = w; btn->h = h; - btn->str = str; - btn->fg = fg; btn->bg = bg; - btn->lit = FALSE; btn->active = TRUE; btn->toggle = FALSE; - btn->next = NULL; - /* append it to the end of the list if the list already exists */ - if (btnlst!=NULL){ - btnptr = btnlst; - while (btnptr->next != NULL) btnptr = btnptr->next; - btnptr->next = btn; - } - btn->action = action; - /* return ptr to the newly created button */ - return btn; -} - -/* EXPORT->RedrawHButton: readraw a single button object */ -void RedrawHButton(HButton *btn) -{ - int pad = 2; - int x, y, w, h, r, s, pos; - HPoint poly[9], shad[4]; - char sbuf[256], nullchar = '\0'; - - x = btn->x; y=btn->y; w=btn->w; h=btn->h; r=3; s=1; - - /* set up the polygon */ - poly[0].x = x; poly[0].y = y+r; - poly[1].x = x; poly[1].y = y+h-r; - poly[2].x = x+r; poly[2].y = y+h; - poly[3].x = x+w-r; poly[3].y = y+h; - poly[4].x = x+w; poly[4].y = y+h-r; - poly[5].x = x+w; poly[5].y = y+r; - poly[6].x = x+w-r; poly[6].y = y; - poly[7].x = x+r; poly[7].y = y; - poly[8].x = x; poly[8].y = y+r; - /* set up the extra lines for the shadow */ - shad[0].x = x+r+s; shad[0].y = y+h+s; - shad[1].x = x+w-r+s; shad[1].y = y+h+s; - shad[2].x = x+w+s; shad[2].y = y+h-r+s; - shad[3].x = x+w+s; shad[3].y = y+r+s; - - if (btn->lit) - HSetColour(btn->fg); - else - HSetColour(btn->bg); - HFillPolygon(poly, 9); - HSetColour(btn->fg); - HDrawLines(poly, 9); - HDrawLines(shad, 4); - if (btn->active) - if (btn->lit) - HSetColour(btn->bg); - else - HSetColour(btn->fg); - else - HSetGrey(30); - strcpy(sbuf, btn->str); - pos = strlen(sbuf); - while(HTextWidth(sbuf) > (w - 2*pad)) - sbuf[--pos]=nullchar; - HPrintf(CentreX(x+w/2, sbuf), CentreY(y+h/2, sbuf), "%s", sbuf); -} - -/* EXPORT->RedrawHButtonList: redraw the whole list of buttons */ -void RedrawHButtonList(HButton *btnlst) -{ - HButton *btnptr; - - HSetLineWidth(BTN_LINE_WIDTH); - for (btnptr=btnlst; btnptr!=NULL; btnptr=btnptr->next) - RedrawHButton(btnptr); - -} - -/* EXPORT->FindButton: find button given name */ -HButton *FindButton(HButton *btnlst, ButtonId key) -{ - HButton *btnptr; - - for (btnptr=btnlst; btnptr!=NULL; btnptr=btnptr->next) - if (btnptr->id==key) - return btnptr; - return NULL; -} - -/* EXPORT->SetActive: set active field in button list */ -void SetActive(HButton *btnlst, Boolean active) -{ - HButton *btnptr; - - for (btnptr=btnlst; btnptr!=NULL; btnptr=btnptr->next) - btnptr->active = active; -} - -/* EXPORT->CheckButtonList: find within which button the point(x,y) is */ -HButton *CheckButtonList(HButton *btnlst, int x, int y) -{ - HButton *btn; - - for (btn=btnlst; btn!=NULL; btn=btn->next) - if (IsInRect(x, y, btn->x, btn->y, btn->x + btn->w, btn->y + btn->h) && btn->active) - return btn; - return NULL; - -} - -/* EXPORT->SetButtonLit: show button press */ -void SetButtonLit(HButton *btn, Boolean lit) -{ - if (btn->lit != lit){ - btn->lit = lit; - RedrawHButton(btn); - } -} - -/* EXPORT->TrackButtons: tracks the buttons until the mouse button is released */ -ButtonId TrackButtons(HButton *btnlist, HEventRec hev) -{ - HButton *pressed, *released; - Boolean done; - - pressed = CheckButtonList(btnlist, hev.x, hev.y); - if (pressed != NULL){ - SetButtonLit(pressed, TRUE); - done = FALSE; -#ifdef USE_TIMER - HFlush(); Timer(BTN_WAIT); -#endif - do { - hev = HGetEvent(TRUE, pressed->action); - done = (hev.event==HMOUSEUP); - } while (!done); - released = CheckButtonList(btnlist, hev.x, hev.y); - SetButtonLit(pressed, FALSE); - if ( pressed == released) - return pressed->id; - } - return 0; -} - -static void InitGlobals(void) -{ - dispWIDE = GetSystemMetrics(SM_CXSCREEN); - dispHIGH = GetSystemMetrics(SM_CYSCREEN); - dispDEEP = GetDeviceCaps(memDC,BITSPIXEL); -} - - -/* EXPORT-> MakeXGraf: Create and open window, initialization */ -void MakeXGraf(char *wname, int x, int y, int w, int h, int bw) - /* WIN32: bw is ignored. */ -{ - WNDCLASS WindowClass; - char sbuf[256], *hgraf = "HGraf"; - HDC dc; - - if (winCreated) - HError(6870, "MakeXGraf: Attempt to recreate the graphics window"); - - WindowClass.hInstance = GetModuleHandle(NULL); - WindowClass.lpszClassName = hgraf; - WindowClass.lpfnWndProc = HGWinFunc; - WindowClass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; - WindowClass.hIcon = NULL; - WindowClass.hCursor = LoadCursor(NULL,IDC_ARROW); - WindowClass.lpszMenuName = NULL; - WindowClass.cbClsExtra = 0; - WindowClass.cbWndExtra = 0; - WindowClass.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); - - RegisterClass(&WindowClass); - - strcpy(sbuf, hgraf); strcat(sbuf, ": "); strcat(sbuf, wname); - - theWindow = - CreateWindow(hgraf, sbuf, WS_OVERLAPPEDWINDOW | WS_VISIBLE, - x,y, w,h, HWND_DESKTOP, NULL, - WindowClass.hInstance, NULL); - - /* adjust window size so that the client rectangle is the size requested */ - /* by the caller of MakeXGraf() --- Win32 interprets w and h as the dimensions */ - /* of the overall window. */ - GetClientRect(theWindow,&ClientRect); - MoveWindow(theWindow,x,y,w+w-ClientRect.right,h+h-ClientRect.bottom,TRUE); - GetClientRect(theWindow,&ClientRect); - - /* Obtain and initialize device contexts */ - dc = GetDC(theWindow); - memDC = CreateCompatibleDC(dc); - SetArcDirection(memDC,AD_COUNTERCLOCKWISE); - SetArcDirection(dc,AD_COUNTERCLOCKWISE); - SetPolyFillMode(memDC,WINDING); - SetPolyFillMode(memDC,WINDING); - SetTextAlign(memDC,TA_BASELINE | TA_LEFT); - SetTextAlign(dc,TA_BASELINE | TA_LEFT); - SetBkMode(memDC,TRANSPARENT); - SetBkMode(dc,TRANSPARENT); - theBitmap = CreateCompatibleBitmap(dc,w,h); - SelectObject(memDC,theBitmap); - ReleaseDC(theWindow,dc); - CreateHeap(&btnHeap, "Button heap", MHEAP, sizeof(HButton), 1.0, 100, 100); - - InitGlobals(); - InstallColours(); - - winCreated = TRUE; - HSetColour(WHITE); - HFillRectangle(0,0,ClientRect.right,ClientRect.bottom); -} - -/* EXPORT->TermHGraf: Terminate Graphics (also called via at_exit) */ -void TermHGraf() -{ - if (theBrush) DeleteObject(theBrush); - if (thePen) DeleteObject(thePen); - if (thinPen) DeleteObject(thinPen); - if (theFont) DeleteObject(theFont); - if (theBitmap) DeleteObject(theBitmap); - - DeleteHeap(&btnHeap); - DestroyWindow(theWindow); -} - -/********** Win32 specific functions */ - -/* Called by the window manager */ -LRESULT CALLBACK HGWinFunc(HWND WindowHandle, unsigned int msg, WPARAM wParam, LPARAM lParam) -{ - HDC dc; - PAINTSTRUCT ps; - - switch (msg) { - case WM_SIZING: /* for some reason we have to repaint when the window moves */ - case WM_MOVING: - InvalidateRect(theWindow,&ClientRect,FALSE); - return TRUE; - case WM_EXITSIZEMOVE: - InvalidateRect(theWindow,&ClientRect,FALSE); - return 0; - case WM_PAINT: - dc = BeginPaint(theWindow,&ps); - BitBlt(dc,0,0,ClientRect.right,ClientRect.bottom,memDC,0,0,SRCCOPY); - EndPaint(theWindow,&ps); - return 0; - default: - return DefWindowProc(WindowHandle, msg, wParam, lParam); - } -} - -KeyType HGetKeyType(char c) -{ - switch ((int) c) { - case VK_ESCAPE: - return ESCKEY; - case VK_DELETE: - case VK_BACK: - return DELKEY; - case VK_RETURN: - return ENTERKEY; - case VK_CONTROL: - return CONTROLKEY; - case VK_MENU: - return COMMANDKEY; - case VK_SHIFT: - return SHIFTKEY; - default: - return NORMALKEY; - } -} - - -/* ------------------------ End of HGraf.win32.c ------------------------- */ diff --git a/HTKLib/HLM.c b/HTKLib/HLM.c old mode 100644 new mode 100755 index ed93046..7b721ae --- a/HTKLib/HLM.c +++ b/HTKLib/HLM.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLM.c language model handling */ +/* File: HLM.c language model handling */ /* ----------------------------------------------------------- */ -char *hlm_version = "!HVER!HLM: 3.4.1 [CUED 12/03/09]"; +char *hlm_version = "!HVER!HLM: 3.5.0 [CUED 12/10/15]"; char *hlm_vc_id = "$Id: HLM.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HShell.h" @@ -232,12 +235,11 @@ static int WriteNGrams(FILE *file,NGramLM *nglm,int n,float scale) SEntry *se; LogFloat prob; lmId ndx[NSIZE+1]; - int c,i,j,k,N,g=1,hash,neCnt,total; + int c,i,j,k,g=1,hash,neCnt,total; if (trace&T_TIO) printf("\nn%1d ",n),fflush(stdout); fprintf(file,"\n\\%d-grams:\n",n); - N=VectorSize(nglm->unigrams); neTab=(NEntry **) New(&gstack,sizeof(NEntry*)*nglm->counts[0]); @@ -376,7 +378,7 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) lmId ndx[NSIZE+1]; NEntry *ne,*le=NULL; int i, g, idx, total; - unsigned char size, flags=0; + unsigned char flags=0; cse = (SEntry *) New(nglm->heap,count*sizeof(SEntry)); for (i=1;i<=NSIZE;i++) ndx[i]=0; @@ -389,7 +391,7 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) PROGRESS(g); if (bin) { - size = GetCh (&source); + GetCh (&source); flags = GetCh (&source); } @@ -401,7 +403,7 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) if (wdid->aux != NULL) HError(8150,"ReadNGrams: Duplicate word (%s) in 1-gram list", wdid->name); - wdid->aux = (Ptr)g; + wdid->aux = (Ptr)(unsigned long int)g; nglm->wdlist[g] = wdid; nglm->unigrams[g] = prob; ndx[0]=g; @@ -411,20 +413,20 @@ static int ReadNGrams(NGramLM *nglm,int n,int count, Boolean bin) if (flags & BIN_ARPA_INT_LMID) { unsigned int ui; if (!ReadInt (&source, (int *) &ui, 1, bin)) - HError (9999, "ReadNGrams: failed reading int lm word id"); + HError (8113, "ReadNGrams: failed reading int lm word id"); idx = ui; } else { unsigned short us; if (!ReadShort (&source, (short *) &us, 1, bin)) - HError (9999, "ReadNGrams: failed reading short lm word id at"); + HError (8113, "ReadNGrams: failed reading short lm word id at"); idx = us; } } else { ReadLMWord(wd); wdid = GetLabId(wd, FALSE); - idx = (wdid==NULL?0:(int)wdid->aux); + idx = (wdid==NULL?0:(unsigned long int)wdid->aux); } if (idx<1 || idx>nglm->vocSize) HError(8150,"ReadNGrams: Unseen word (%s) in %dGram",wd,n); @@ -517,7 +519,7 @@ static void ReadBoNGram(LModel *lm,char *fn) ngBin[j] = TRUE; break; default: - HError (9999, "ReadARPALM: unknown ngram format type '%c'", ngFmtCh); + HError (8191, "ReadARPALM: unknown ngram format type '%c'", ngFmtCh); } counts[j]=k; } @@ -670,9 +672,9 @@ static void ReadMatBigram(LModel *lm,char *fn) if (p>P) HError(8150,"ReadMatBigram: More rows than columns in bigram %s",fn); id=GetLabId(buf,TRUE); - if ((int)id->aux != 0) + if ((unsigned long int)id->aux != 0) HError(8150,"ReadMatBigram: Duplicated name %s in bigram %s",buf,fn); - id->aux = (Ptr) p; + id->aux = (Ptr)(unsigned long int)p; matbi->wdlist[p] = id; SkipWhiteSpace(&source); if (ReadRow(matbi->bigMat[p])!=P) @@ -764,12 +766,12 @@ float GetLMProb(LModel *lm, LabId prid[NSIZE], LabId wdid) switch (lm->type) { case boNGram: - word = (int)wdid->aux; + word = (int)(unsigned long int)wdid->aux; if (word==0 || word>lm->data.ngram->vocSize) return(LZERO); for (s=-1,i=0;iaux, cpid[i]=prid[i], s=i; + ndx[i]=(int)(unsigned long int)prid[i]->aux, cpid[i]=prid[i], s=i; else ndx[i]=0, cpid[i]=NULL; @@ -800,8 +802,8 @@ float GetLMProb(LModel *lm, LabId prid[NSIZE], LabId wdid) return(bowt+GetLMProb(lm,cpid,wdid)); /* else recurse */ break; case matBigram: - p=(int) prid[0]->aux; - q=(int) wdid->aux; + p=(int)(unsigned long int)prid[0]->aux; + q=(int)(unsigned long int)wdid->aux; return(lm->data.matbi->bigMat[p][q]); default: prob=LZERO; @@ -914,10 +916,10 @@ LogFloat LMTrans (LModel *lm, LMState src, LabId wdid, LMState *dest) assert (lm->type == boNGram); nglm = lm->data.ngram; - word = (int) wdid->aux; + word = (unsigned long int) wdid->aux; if (word==0 || word>lm->data.ngram->vocSize) { - HError (-9999, "word %d not in LM wordlist", word); + HError (-8120, "word %d not in LM wordlist", word); *dest = NULL; return (LZERO); } diff --git a/HTKLib/HLM.h b/HTKLib/HLM.h old mode 100644 new mode 100755 index 29457c1..99c94b5 --- a/HTKLib/HLM.h +++ b/HTKLib/HLM.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLM.h language model handling */ +/* File: HLM.h language model handling */ /* ----------------------------------------------------------- */ -/* !HVER!HLM: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HLM: 3.5.0 [CUED 12/10/15] */ #ifndef _HLM_H_ #define _HLM_H_ @@ -43,9 +46,12 @@ extern "C" { typedef enum { boNGram=1, matBigram, hlmModel } LMType; -#define MAX_LMID 65534 /* Max number of words */ -typedef unsigned short lmId; /* Type used by lm to id words 1..MAX_LMID */ -typedef unsigned short lmCnt; /* Type used by lm to count wds 0..MAX_LMID */ +/* #define MAX_LMID 65534 /\* Max number of words *\/ */ +#define MAX_LMID 2147483647 /* Max number of words */ +/* typedef unsigned short lmId; /\* Type used by lm to id words 1..MAX_LMID *\/ */ +/* typedef unsigned short lmCnt; /\* Type used by lm to count wds 0..MAX_LMID *\/ */ +typedef unsigned int lmId; /* Type used by lm to id words 1..MAX_LMID */ +typedef unsigned int lmCnt; /* Type used by lm to count wds 0..MAX_LMID */ #define NSIZE 4 /* Max length of ngram 2==bigram etc */ diff --git a/HTKLib/HLabel.c b/HTKLib/HLabel.c old mode 100644 new mode 100755 index 7299d66..36b73d3 --- a/HTKLib/HLabel.c +++ b/HTKLib/HLabel.c @@ -3,24 +3,37 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLabel.c: Speech Label File Input */ +/* File: HLabel.c Speech label file input */ /* ----------------------------------------------------------- */ -char *hlabel_version = "!HVER!HLabel: 3.4.1 [CUED 12/03/09]"; -char *hlabel_vc_id = "$Id: HLabel.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; +char *hlabel_version = "!HVER!HLabel: 3.5.0 [CUED 12/10/15]"; +char *hlabel_vc_id = "$Id: HLabel.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -197,9 +210,11 @@ LabId GetLabId(char *name, Boolean insert) int h; NameCell *p; + if(!name) HError(6570,"GetLabId: no label given"); ++numAccesses; ++numTests; if ((trace&T_HASH) && numAccesses%100 == 0) PrintNameTabStats(); + h = Hash(name); p = hashtab[h]; if (p==NULL) { /* special case - this slot empty */ if (insert) @@ -1017,6 +1032,22 @@ static void LoadSCRIBELabels(MemHeap *x, Transcription *t, Source *src) /* ----------------- TriPhone Stripping ------------------- */ +/* EXPORT->FTriStrip: Remove contexts of form A- and +B from s */ +void FTriStrip(char *s) +{ + char buf[100],*p; + + if ((p = strchr(s,'-')) == NULL) p = s; else ++p; + strcpy(buf,p); + if ((p = strrchr(buf,'+')) != NULL) + *p = '\0'; + if ((p = strrchr(buf,'^')) != NULL) + *p = '\0'; + else if ((p = strrchr(buf,';')) != NULL) + *p = '\0'; + strcpy(s,buf); +} + /* EXPORT->TriStrip: Remove contexts of form A- and +B from s */ void TriStrip(char *s) { @@ -1029,6 +1060,26 @@ void TriStrip(char *s) strcpy(s,buf); } +/* cz277 - ANN */ +/* phone name in str, state index in stateIdx */ +char *ExtractState(char *src, char *dst, int *stateIdx) { + char *ptr; + + strcpy(dst, src); + *stateIdx = 0; + if ((ptr = strchr(dst, ']')) == NULL) { + return dst; + } + *ptr = '\0'; + if ((ptr = strchr(dst, '[')) == NULL) { + return NULL; + } + *ptr = '\0'; + *stateIdx = atoi(++ptr); + + return dst; +} + /* EXPORT->LTriStrip: enable triphone stripping */ void LTriStrip(Boolean enab) { diff --git a/HTKLib/HLabel.h b/HTKLib/HLabel.h old mode 100644 new mode 100755 index 563ace6..d63fcb1 --- a/HTKLib/HLabel.h +++ b/HTKLib/HLabel.h @@ -3,24 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLabel.h: Speech Label File Input */ +/* File: HLabel.h Speech Label File Input */ /* ----------------------------------------------------------- */ -/* !HVER!HLabel: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HLabel: 3.5.0 [CUED 12/10/15] */ /* This module allows an internal data structure representing a @@ -291,6 +303,14 @@ void TriStrip(char *s); Remove contexts of form A- and +B from s */ +/* cz277 - ANN */ +char *ExtractState(char *src, char *dst, int *stateIdx); + +void FTriStrip(char *s); +/* + Remove contexts of form A- and +B from s and also items after : and ^ +*/ + void LTriStrip(Boolean enab); /* When enab is set, all triphone labels with the form A-B+C diff --git a/HTKLib/HLat.c b/HTKLib/HLat.c old mode 100644 new mode 100755 index b2b3857..f8fdff2 --- a/HTKLib/HLat.c +++ b/HTKLib/HLat.c @@ -3,38 +3,42 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Gunnar Evermann */ /* */ -/* author: Gunnar Evermann */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* 2001-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLat.c: Lattice Manipulation */ +/* File: HLat.c: Lattice manipulation */ /* ----------------------------------------------------------- */ -/*#### todo: +/* TODO: - implement lattice oracle WER calculation - allow batch processing? */ -char *hlat_version = "!HVER!HLat: 3.4.1 [CUED 12/03/09]"; +char *hlat_version = "!HVER!HLat: 3.5.0 [CUED 12/10/15]"; char *hlat_vc_id = "$Id: HLat.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; @@ -45,6 +49,7 @@ char *hlat_vc_id = "$Id: HLat.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -79,8 +84,9 @@ static Boolean compressMerge = TRUE; /* compressing lattice scores when merging static char *llfExt = "LLF"; /* extension for LLF lattice files */ +#ifndef NO_LAT_LM static MemHeap slaHeap, slnHeap;/* MHEAPs for use in LatExpand() */ - +#endif /* --------------------------- Prototypes ---------------------------- */ @@ -197,7 +203,6 @@ Boolean ScanLLF (LLFInfo *llf, char *fn, char *ext) return FALSE; } - Lattice *GetLattice (char *fn, char *path, char *ext, /* arguments of ReadLattice() below */ MemHeap *heap, Vocab *voc, @@ -565,6 +570,60 @@ LogDouble LatForwBackw (Lattice *lat, LatFBType type) return score; } +/* sxz20 */ +/* LatMakeLogical: replaces physical HMM names by the corresponding logical names + taking context into account */ +void LatMakeLogical (Lattice *lat, MemHeap *heap) +{ + int i,j,J; + LNode *ln; + LArc *la; + LNode **topOrder; + LAlign *align; + LabId labid; + + /* find topological order of nodes */ + topOrder = (LNode **) New (&gcheap, lat->nn * sizeof(LNode *)); + if (!LatTopSort (lat, topOrder)) + HError (527, "LatMakeLogical: lattice has cycles"); + if(topOrder[0]->pred!=NULL) + HError (527, "LatMakeLogical: initial node has incoming arcs"); + for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) { + ln->hook=NULL; + } + + /* forward direction */ + for (i = 0; i < lat->nn; ++i) { + ln = topOrder[i]; + for (la = ln->foll; la; la = la->farc) { + assert (la->start == ln); + J=la->nAlign; + printf("Examine arc %s with %d records\n",la->end->word->wordName->name,J); + for(j=0; jlAlign[j]); + assert(align); + labid=align->label; + if(strcmp(labid->name,"sil")!=0&&strcmp(labid->name,"sp")!=0){ + if(j==0){/*first*/ + if(la->start->hook==NULL) + HError(527,"Nothing is attached to the node"); + }else if(j==J){/*terminal*/ + }else{/*something inside*/ + /*if(strcmp(la->lAlign[j].labid->name,"sp")==0)*/ + } + printf("converting %s ",labid->name); + exit(0); + }else{ + la->end->hook = labid; + } + printf("%s ",labid->name); + } + printf("\n"); + } + } + Dispose (&gcheap, topOrder); +} + /* EXPORT->LatFindBest find the N-best paths (i.e. lowest sum of LArcTotLike()s) and generate @@ -687,13 +746,12 @@ Transcription *LatFindBest (MemHeap *heap, Lattice *lat, int N) */ void LatSetScores (Lattice *lat) { - LogDouble best; LNode *ln; int i; LatAttachInfo (&gcheap, sizeof (FBinfo), lat); - best = LatForwBackw (lat, LATFB_MAX); + LatForwBackw (lat, LATFB_MAX); for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) { ln->score = LNodeFw (ln) + LNodeBw (ln); @@ -904,7 +962,7 @@ void CalcStats (Lattice *lat) ln = topOrder[i]; /* count words */ - ln->word->aux = (Ptr) (((int)ln->word->aux) + 1); + ln->word->aux = (Ptr) (((unsigned long int)ln->word->aux) + 1); /* count incoming and outgoing arcs */ d = 0; @@ -1789,7 +1847,7 @@ void ApplyNGram2LabLat(Lattice *lat, LModel *lm) fprintf(stdout, "\n"); fprintf(stdout, "\n Vocab entries: "); for (j = 0; j < lat->nn - 2; j++) { - fprintf(stdout, "%s ", lm->data.ngram->wdlist[(int) revlab[j]->aux]->name); + fprintf(stdout, "%s ", lm->data.ngram->wdlist[(unsigned long int) revlab[j]->aux]->name); } fprintf(stdout, "\n\n"); fflush(stdout); diff --git a/HTKLib/HLat.h b/HTKLib/HLat.h old mode 100644 new mode 100755 index 1d7f252..5f14b1f --- a/HTKLib/HLat.h +++ b/HTKLib/HLat.h @@ -3,31 +3,32 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLat.h: Lattice Manipulation */ +/* File: HLat.h: Lattice Manipulation */ /* ----------------------------------------------------------- */ -/* !HVER!HLat: 3.4.1 [CUED 12/03/09] */ - +/* !HVER!HLat: 3.5.0 [CUED 12/10/15] */ #ifndef _HLAT_H_ #define _HLAT_H_ @@ -36,6 +37,9 @@ extern "C" { #endif +/* cz277 - ANN */ +/*#include "HLM.h"*/ + /* ------------------------ Initialisation --------------------------- */ void InitLat (void); @@ -95,7 +99,6 @@ Lattice *LatExpand (MemHeap *heap, Lattice *lat, LModel *lm); void ApplyNGram2LabLat(Lattice *lat, LModel *lm); #endif - Lattice *GetLattice (char *fn, char *path, char *ext, /* arguments of ReadLattice() below */ MemHeap *heap, Vocab *voc, @@ -105,8 +108,14 @@ Lattice *MergeLatNodesArcs(Lattice *lat, MemHeap *heap, Boolean mergeFwd); void ApplyWPNet2LabLat(Lattice *lat, Lattice *wdNet); +/* sxz20 not sure this way*/ +void LatMakeLogical (Lattice *lat, MemHeap *heap); + #ifdef __cplusplus } #endif #endif /* _HLAT_H_ */ + +/* ------------------------- End of HLat.h ------------------------- */ + diff --git a/HTKLib/HMap.c b/HTKLib/HMap.c old mode 100644 new mode 100755 index 7aaac4a..2c1ecd3 --- a/HTKLib/HMap.c +++ b/HTKLib/HMap.c @@ -3,33 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMap.c - MAP Model Updates */ +/* File: HMap.c MAP model updates */ /* ----------------------------------------------------------- */ /* @@ -38,7 +41,7 @@ (ie the forward-backward allignments have been performed). */ -char *hmap_version = "!HVER!HMap: 3.4.1 [CUED 12/03/09]"; +char *hmap_version = "!HVER!HMap: 3.5.0 [CUED 12/10/15]"; char *hmap_vc_id = "$Id: HMap.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include /* Standard C Libraries */ @@ -56,6 +59,7 @@ char *hmap_vc_id = "$Id: HMap.c,v 1.1.1.1 2006/10/11 09:54:57 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -381,12 +385,10 @@ static void UpdateVars(HMMSet *hset, int px, HLink hmm) static int TotMixInSet(HMMSet *hset) { HMMScanState hss; - HLink hmm; int nmix=0; NewHMMScan(hset,&hss); do { - hmm = hss.hmm; while (GoNextState(&hss,TRUE)) { while (GoNextStream(&hss,TRUE)) { if (hss.isCont) /* PLAINHS or SHAREDHS */ @@ -429,7 +431,7 @@ void MAPUpdateModels(HMMSet *hset, UPDSet uFlags) px=1; do { hmm = hss.hmm; - n = (int)hmm->hook; + n = (int)(unsigned long int)hmm->hook; if (n 0.0 ? fabs(a): -fabs(a)) +#define MAX(a, b) ((a)>(b)? (a): (b)) +#define MIN(a, b) ((a)<(b)? (a): (b)) + /* -------------------- Configuration Parameters --------------------- */ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int numParm = 0; +/* from mjfg - cz277 141022 */ +#define MAXMATRIXSIZE 400 + +/* cz277 - ANN */ +#ifdef MKL +static int nMKLThreads = 1; /* the number of threads used by CPU LAPACK/BLAS kernels (MKL) */ +static char *nMKLThreadEnvVar = ""; +#endif +static NMatrix *tmpNMat = NULL; /* the pointer to the temp matrix */ +static NVector *tmpNVec = NULL; +static int tmpRowNum = 1; /* the row number of the temp matrix*/ +static int tmpColNum = 1; /* the column number of the temp matrix */ /* ------------------ Vector Oriented Routines ----------------------- */ @@ -615,7 +659,7 @@ void LinTranQuaProd(Matrix Prod, Matrix A, Matrix C) Matrix tempMatrix_A_mult_C; if (NumRows(C) != NumCols(C)){ - HError(999,"HMath: LinTranQuaProd: Matrix C is not square!\n"); + HError(5221,"HMath: LinTranQuaProd: Matrix C is not square!\n"); } else { tempMatrix_A_mult_C = CreateMatrix(&gstack,NumRows(A),NumCols(C)); @@ -1155,6 +1199,7 @@ void SVD(DMatrix A, DMatrix U, DMatrix V, DVector d) HError(1, "SVD: The svd matrices and vector must be initialised b4 call"); A_tmp = CreateDMatrix(&gstack, n, n); + CopyDMatrix(A, A_tmp); InitIdentity(U); InitIdentity(V); @@ -1421,12 +1466,16 @@ static void LinSolve(Matrix a, int *perm, float *b) float MatInvert(Matrix c, Matrix invc) { Matrix a; - float col[100]; + float col[MAXMATRIXSIZE]; float det; int sign; - int n,i,j,perm[100]; + int n,i,j,perm[MAXMATRIXSIZE]; n=NumRows(c); + /* from mjfg - cz277 - 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateMatrix(&gstack,n,n); CopyMatrix(c,a); /* Make a copy of c */ LUDecompose(a,perm,&sign); /* Do LU Decomposition */ @@ -1474,12 +1523,16 @@ static void DLinSolve(DMatrix a, int *perm, double *b) double DMatInvert(DMatrix c, DMatrix invc) { DMatrix a; - double col[100]; + double col[MAXMATRIXSIZE]; double det; int sign; - int n,i,j,perm[100]; + int n,i,j,perm[MAXMATRIXSIZE]; n=NumDRows(c); + /* from mjfg - cz277 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateDMatrix(&gstack,n,n); CopyDMatrix(c,a); /* Make a copy of c */ DLUDecompose(a,perm,&sign); /* Do LU Decomposition */ @@ -1503,12 +1556,16 @@ double DMatInvert(DMatrix c, DMatrix invc) double DMatCofact(DMatrix c, int r, DVector cofact) { DMatrix a; - double col[100]; + double col[MAXMATRIXSIZE]; double det; int sign; - int n,i,perm[100]; + int n,i,perm[MAXMATRIXSIZE]; n=NumDRows(c); + /* from mjfg, cz277 - 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateDMatrix(&gstack,n,n); CopyDMatrix(c,a); /* Make a copy of c */ if (! DLUDecompose(a,perm,&sign)) /* Do LU Decomposition */ @@ -1532,12 +1589,16 @@ double MatCofact(Matrix c, int r, Vector cofact) { DMatrix a; DMatrix b; - double col[100]; + double col[MAXMATRIXSIZE]; float det; int sign; - int n,i,perm[100]; + int n,i,perm[MAXMATRIXSIZE]; n=NumRows(c); + /* from mjfg, cz277 - 141022 */ + if (n > MAXMATRIXSIZE) + HError (5221, "Matrix too large"); + a=CreateDMatrix(&gstack,n,n); b=CreateDMatrix(&gstack,n,n); Mat2DMat(c,b); @@ -1642,7 +1703,7 @@ float RandomValue(void) return RANDF(); } -/* EXPORT->GaussDeviate: random number with a N(mu,sigma) distribution */ +/* EXPORT->GaussDeviate: random number with a N(mu,sigma^2) distribution */ float GaussDeviate(float mu, float sigma) { double fac,r,v1,v2,x; @@ -1668,12 +1729,29 @@ float GaussDeviate(float mu, float sigma) return x*sigma+mu; } +/* from xl207, cz277 - gau */ +float GaussInv(float p) +{ + HError(999, "Gaussianisation is disabled"); + return 0.0; +} + +/* from xl207, cz277 - gau */ +float CumGauss(float x, float mean, float var) +{ + HError(999, "Gaussianisation is disabled"); + return 0.0; +} + /* --------------------- Initialisation ---------------------- */ /* EXPORT->InitMath: initialise this module */ void InitMath(void) { int i; +#ifdef MKL + ConfParam *cpVal; +#endif Register(hmath_version,hmath_vc_id); RandInit(-1); @@ -1681,7 +1759,3026 @@ void InitMath(void) numParm = GetConfig("HMATH", TRUE, cParm, MAXGLOBS); if (numParm>0){ if (GetConfInt(cParm,numParm,"TRACE",&i)) trace = i; +/* cz277 - ANN */ +#ifdef MKL + if (GetConfAny(cParm, numParm, "NMKLTHREADS", &cpVal)) { + if (cpVal->kind == IntCKind) + nMKLThreads = cpVal->val.i; + else if (cpVal->kind == StrCKind) + nMKLThreadEnvVar = CopyString(&gcheap, cpVal->val.s); + else + HError(5222, "InitMath: Unknown NMKLTHREADS value kind"); + } +#endif + } +} + +/* cz277 - ANN */ +/* --------------------- ANN related math kernels --------------------- */ + +/* cz277 - 151020 */ +#ifdef MKL +void StartMKL() { + char *envVar = NULL; + int maxMKLThreads = 1; + MKLVersion version; + + /* print the MKL version */ + mkl_get_version(&version); + printf("MKL version %d.%d.%d (build %s)\n", version.MajorVersion, version.MinorVersion, version.UpdateVersion, version.Build); + printf("%s\n", version.Platform); + /*printf("Optimised for %s\n", version.Processor);*/ + + /* set and print the thread number */ + maxMKLThreads = mkl_get_max_threads(); + if (nMKLThreads > maxMKLThreads) { + HError(-5223, "StartMKL: Thread number %d set by NMKLTHREADS > maximum thread number %d, reset to %d", nMKLThreads, maxMKLThreads, maxMKLThreads); + nMKLThreads = maxMKLThreads; + } + if (strcmp(nMKLThreadEnvVar, "") != 0) { + envVar = getenv(nMKLThreadEnvVar); + if (envVar == NULL) { + HError(-5223, "StartMKL: Environment variable %s not defined, reset to use 1 thread\n", envVar); + nMKLThreads = 1; + } + else { + nMKLThreads = atoi(envVar); + } + } + if (nMKLThreads > 0) { + mkl_set_dynamic(0); + mkl_set_num_threads(nMKLThreads); + printf("MKL thread number = %d\n", nMKLThreads); + } + else { + mkl_set_dynamic(maxMKLThreads); + printf("MKL dynamic threading control (upto %d threads)\n", maxMKLThreads); + } + printf("\n"); +} +#endif + + +void RegisterTmpNMat(int nrows, int ncols) { + if (nrows > tmpRowNum) + tmpRowNum = nrows; + if (ncols > tmpColNum) + tmpColNum = ncols; +} + +void CreateTmpNMat(MemHeap *heap) { + if (tmpRowNum != 0 && tmpColNum != 0) { + tmpNMat = CreateNMatrix(heap, tmpRowNum, tmpColNum); + tmpNVec = (NVector *) New(heap, sizeof(NVector)); + memset(tmpNVec, 0, sizeof(NVector)); + tmpNVec->vecLen = tmpNMat->rowNum * tmpNMat->colNum; + tmpNVec->vecElems = tmpNMat->matElems; +#ifdef CUDA + tmpNVec->devElems = tmpNMat->devElems; +#endif + } +} + +NMatrix *GetTmpNMat(void) { + return tmpNMat; +} + +NVector *GetTmpNVec(void) { + return tmpNVec; +} + +void FreeTmpNMat(MemHeap *heap) { + if (tmpNMat != NULL) { + FreeNMatrix(heap, tmpNMat); + tmpNMat = NULL; + tmpRowNum = 0; + tmpColNum = 0; + } +} + +static inline void CopyNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + memcpy(dstPtr, srcPtr, segLen * sizeof(NFloat)); +} + +#ifdef MKL +static inline void CopyNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + #ifdef DOUBLEANN + cblas_dcopy(segLen, srcPtr, 1, dstPtr, 1); + #else + cblas_scopy(segLen, srcPtr, 1, dstPtr, 1); + #endif +} +#endif + +void CopyNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff) { + if (trace & T_DIM) { + if (!(srcOff >= 0 && segLen >= 0 && (srcOff + segLen) < srcMat->rowNum * srcMat->colNum)) + HError(5221, "CopyNSegment: Illegal source matrix offset or segment length"); + if (!(dstOff >= 0 && (dstOff + segLen) < dstMat->rowNum * dstMat->colNum)) + HError(5221, "CopyNSegment: Illegal destinate matrix offset"); + } +#ifdef CUDA + CopyNSegmentCUDA(srcMat->devElems + srcOff, segLen, dstMat->devElems + dstOff); +#else + #ifdef MKL + CopyNSegmentMKL(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #else + CopyNSegmentCPU(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #endif +#endif +} + +void CopyNVectorSegment(NVector *srcVec, int srcOff, int segLen, NVector *dstVec, int dstOff) { + if (trace & T_DIM) { + if (!(srcOff >= 0 && segLen >= 0 && (srcOff + segLen) < srcVec->vecLen)) + HError(5221, "CopyNVectorSegment: Illegal source vector offset or segment length"); + if (!(dstOff >= 0 && (dstOff + segLen) < dstVec->vecLen)) + HError(5221, "CopyNVectorSegment: Illegal destinate vector offset"); + } +#ifdef CUDA + CopyNSegmentCUDA(srcVec->devElems + srcOff, segLen, dstVec->devElems + dstOff); +#else + #ifdef MKL + CopyNSegmentMKL(srcVec->vecElems + srcOff, segLen, dstVec->vecElems + dstOff); + #else + CopyNSegmentCPU(srcVec->vecElems + srcOff, segLen, dstVec->vecElems + dstOff); + #endif +#endif +} + +/*typedef struct _SRank { + int idx; + NFloat val; +} SRank; + +static int cmpfuncSRank(const void *a, const void *b) { + return (((SRank *)b)->val - ((SRank *)a)->val); +} + +static void SortOrthVecsCPU(NFloat *U, int nrows, int ncols, NFloat *d, NFloat *V) { + int i, j, k; + NFloat *temp; + SRank *slist; + + temp = (NFloat *) New(&gstack, sizeof(NFloat) * MAX(nrows, ncols) * MAX(nrows, ncols)); + slist = (SRank *) New(&gstack, ncols); + for (i = 0; i < ncols; ++i) { + slist[i].idx = i; + slist[i].val = d[i]; + } + qsort(slist, ncols, sizeof(SRank), cmpfuncSRank); + + CopyNSegmentCPU(U, nrows * ncols, temp); + for (i = 0; i < ncols; ++i) { + j = slist[i].idx; + if (i != j) { + for (k = 0; k < nrows; ++k) { + U[k * ncols + i] = temp[k * ncols + j]; + } + } + } + for (i = 0; i < ncols; ++i) { + d[i] = slist[i].val; + } + CopyNSegmentCPU(V, ncols * ncols, temp); + for (i = 0; i < ncols; ++i) { + j = slist[i].idx; + if (i != j) { + memcpy(&V[i * ncols], &temp[j * ncols], sizeof(NFloat) * ncols); + } + } + + Dispose(&gstack, temp); +} + +static double SVDanyPythag(NFloat a, NFloat b) { + double absa, absb, result; + + absa = fabs(a); + absb = fabs(b); + if (absa > absb) { + result = absa * sqrt(pow(absb / absa, 2) + 1.0); + } + else if (absb > 0.0) { + result = absb * sqrt(pow(absa / absb, 2) + 1.0); + } + else { + result = 0.0; + } + + return result; +} + +static void SVDanyCPU(NFloat *A, int nrows, int ncols, NFloat *U, NFloat *d, NFloat *Vt) { + int flag, i, its, j, jj, k, l, nm; + double anorm, c, f, g, h, s, scale, x, y, z, *rv1; + + if (A != U) { + CopyNSegmentCPU(A, nrows * ncols, U); + } + rv1 = (double *) New(&gstack, sizeof(double) * ncols); + + g = scale = anorm = 0.0; + for(i = 0; i < ncols; ++i) { + l = i + 1; + rv1[i] = scale * g; + g = s = scale = 0.0; + if (i < nrows) { + for(k = i; k < nrows; ++k) + scale += fabs(U[k * ncols + i]); + if (scale) { + for(k = i; k < nrows; ++k) { + U[k * ncols + i] /= scale; + s += U[k * ncols + i] * U[k * ncols + i]; + } + f = U[i * ncols + i]; + g = -SIGN(sqrt(s), f); + h = f * g - s; + U[i * ncols + i] = f - g; + for (j = l; j < ncols; ++j) { + for (s = 0.0, k = i; k < nrows; ++k) + s += U[k * ncols + i] * U[k * ncols + j]; + f = s / h; + for (k = i; k < nrows; ++k) + U[k * ncols + j] += f * U[k * ncols + i]; + } + for (k = i; k < nrows; ++k) + U[k * ncols + i] *= scale; + } + } + d[i] = scale * g; + g = s = scale = 0.0; + if (i < nrows && i != ncols-1) { + for (k = l; k < ncols; ++k) + scale += fabs(U[i * ncols + k]); + if (scale) { + for(k = l; k < ncols; ++k) { + U[i * ncols + k] /= scale; + s += U[i * ncols + k] * U[i * ncols + k]; + } + f = U[i * ncols + l]; + g = -SIGN(sqrt(s), f); + h = f * g - s; + U[i * ncols + l] = f - g; + for (k = l; k < ncols; ++k) + rv1[k] = U[i * ncols + k] / h; + for (j = l; j < nrows; ++j) { + for (s = 0.0, k = l; k < ncols; ++k) + s += U[j * ncols + k] * U[i * ncols + k]; + for (k = l; k < ncols; ++k) + U[j * ncols + k] += s * rv1[k]; + } + for (k = l; k < ncols; ++k) + U[i * ncols + k] *= scale; + } + } + anorm = MAX(anorm, (fabs(d[i]) + fabs(rv1[i]))); + } + + for (i = ncols - 1; i >= 0; --i) { + if(i < ncols - 1) { + if(g) { + for (j = l; j < ncols; ++j) + Vt[j * ncols + i] = (U[i * ncols + j] / U[i * ncols + l]) / g; + for (j = l; j < ncols; ++j) { + for (s = 0.0, k = l; k < ncols; ++k) + s += U[i * ncols + k] * Vt[k * ncols + j]; + for (k = l; k < ncols; ++k) + Vt[k * ncols + j] += s * Vt[k * ncols + i]; + } + } + for (j = l; j < ncols; ++j) + Vt[i * ncols + j] = Vt[j * ncols + i] = 0.0; + } + Vt[i * ncols + i] = 1.0; + g = rv1[i]; + l = i; + } + for (i = MIN(nrows, ncols) - 1; i >= 0; --i) { + l = i + 1; + g = d[i]; + for (j = l; j < ncols; ++j) + U[i * ncols + j] = 0.0; + if (g) { + g = 1.0 / g; + for (j = l; j < ncols; ++j) { + for (s = 0.0, k = l; k < nrows; ++k) + s += U[k * ncols + i] * U[k * ncols + j]; + f = (s / U[i * ncols + i]) * g; + for (k = i; k < nrows; ++k) + U[k * ncols + j] += f * U[k * ncols + i]; + } + for (j = i; j < nrows; ++j) + U[j * ncols + i] *= g; + } + else { + for (j = i; j < nrows; ++j) + U[j * ncols + i] = 0.0; + } + U[i * ncols + i] += 1.0; + } + + for (k = ncols - 1; k >= 0; --k) { + for (its = 0; its < MAXSVDITER; ++its) { + flag = 1; + for (l = k; l >= 0; --l) { + nm = l - 1; + if ((fabs(rv1[l]) + anorm) == anorm) { + flag = 0; + break; + } + if ((fabs(d[nm]) + anorm) == anorm) + break; + } + if (flag) { + c = 0.0; + s = 1.0; + for (i = l;i <= k; ++i) { + f = s * rv1[i]; + rv1[i] = c * rv1[i]; + if ((fabs(f) + anorm) == anorm) + break; + g = d[i]; + h = SVDanyPythag(f, g); + d[i] = h; + h = 1.0 / h; + c = g * h; + s = -f * h; + for (j = 0; j < nrows; ++j) { + y = U[j * ncols + nm]; + z = U[j * ncols + i]; + U[j * ncols + nm] = y * c + z * s; + U[j * ncols + i] = z * c - y * s; + } + } + } + z = d[k]; + if (l == k) { + if (z < 0.0) { + d[k] = -z; + for (j = 0; j < ncols; ++j) + Vt[j * ncols + k] = -Vt[j * ncols + k]; + } + break; + } + if (its == MAXSVDITER) + HError(999, "Fail to converge in %d iterations", MAXSVDITER); + x = d[l]; + nm = k - 1; + y = d[nm]; + g = rv1[nm]; + h = rv1[k]; + f = ((y - z) * (y + z) + (g - h) * (g + h)) / (2.0 * h * y); + g = SVDanyPythag(f, 1.0); + f = ((x - z) * (x + z) + h * ((y / (f + SIGN(g, f))) - h)) / x; + c = s = 1.0; + for (j = l; j <= nm; ++j) { + i = j + 1; + g = rv1[i]; + y = d[i]; + h = s * g; + g = c * g; + z = SVDanyPythag(f, h); + rv1[j] = z; + c = f / z; + s = h / z; + f = x * c + g * s; + g = g * c - x * s; + h = y * s; + y *= c; + for(jj = 0; jj < ncols; ++jj) { + x = Vt[jj * ncols + j]; + z = Vt[jj * ncols + i]; + Vt[jj * ncols + j] = x * c + z * s; + Vt[jj * ncols + i] = z * c - x * s; + } + z = SVDanyPythag(f, h); + d[j] = z; + if (z) { + z = 1.0 / z; + c = f * z; + s = h * z; + } + f = c * g + s * y; + x = c * y - s * g; + for (jj = 0; jj < nrows; ++jj) { + y = U[jj * ncols + j]; + z = U[jj * ncols + i]; + U[jj * ncols + j] = y * c + z * s; + U[jj * ncols + i] = z * c - y * s; + } + } + rv1[l] = 0.0; + rv1[k] = f; + d[k] = x; + } } + + Dispose(&gstack, rv1); + +} + +void NanySVD(NMatrix *A, NMatrix *U, NVector *d, NMatrix *Vt) { + +#ifdef CUDA + SyncNMatrixDev2Host(A); +#endif + if (trace & T_DIM) { + if (!(A->rowNum == U->rowNum)) + HError(9999, "NMatirxSVD: Inconsistent row dimensions of A and U"); + if (!(A->colNum == U->colNum == d->vecLen == Vt->rowNum == Vt->colNum)) + HError(9999, "NMatirxSVD: Inconsistent column dimensions of A, U, d, V"); + + } + SVDanyCPU(A->matElems, A->rowNum, A->colNum, U->matElems, d->vecElems, Vt->matElems); + SortOrthVecsCPU(U->matElems, U->rowNum, U->colNum, d->vecElems, V->matElems); + +}*/ + +#ifdef MKL +void NSVDanyMKL(NFloat *A, int nrows, int ncols, NFloat *U, NFloat *d, NFloat *Vt) { + int ret; + +#ifdef DOUBLEANN + ret = LAPACKE_dgesdd(LAPACK_ROW_MAJOR, 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols); +#else + ret = LAPACKE_sgesdd(LAPACK_ROW_MAJOR, 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols); +#endif + + /*superb = CreateVector(&gstack, MIN(nrows, ncols) - 1); +#ifdef DOUBLEANN + ret = LAPACKE_dgesvd(LAPACK_ROW_MAJOR, 'A', 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols, superb); +#else + ret = LAPACKE_sgesvd(LAPACK_ROW_MAJOR, 'A', 'A', nrows, ncols, A, ncols, d, U, nrows, Vt, ncols, superb); +#endif + Dispose(&gstack, superb);*/ + + if (ret > 0) + HError(5224, "NSVDanyMKL: LAPACK_?gesvd did not converge"); +} +#endif + +void NanySVD(NMatrix *A, NMatrix *U, NVector *d, NMatrix *Vt) { + +#ifdef CUDA + HError(5201, "NanySVD: GPU based SVD decomposition not implemented yet"); +#else + #ifdef MKL + NSVDanyMKL(A->matElems, A->rowNum, A->colNum, U->matElems, d->vecElems, Vt->matElems); + #else + HError(5201, "NanySVD: CPU based SVD decomposition not implemented yet"); + #endif +#endif + +} + +static inline void AddNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + dstPtr[i] += srcPtr[i]; + } +} + +#ifdef MKL +static inline void AddNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + #ifdef DOUBLEANN + vdAdd(segLen, srcPtr, dstPtr, dstPtr); + #else + vsAdd(segLen, srcPtr, dstPtr, dstPtr); + #endif +} +#endif + +void AddNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcOff >= 0 && segLen >= 0 && (srcOff + segLen) < srcMat->rowNum * srcMat->colNum)) + HError(5221, "CopyNSegment: Illegal source matrix offset or segment length"); + if (!(dstOff >= 0 && (dstOff + segLen) < dstMat->rowNum * dstMat->colNum)) + HError(5221, "CopyNSegment: Illegal destinate matrix offset"); + } +#ifdef CUDA + AddNSegmentCUDA(srcMat->devElems + srcOff, segLen, dstMat->devElems + dstOff); +#else + #ifdef MKL + AddNSegmentMKL(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #else + AddNSegmentCPU(srcMat->matElems + srcOff, segLen, dstMat->matElems + dstOff); + #endif +#endif +} + +void AddNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "AddNMatrix: Matrix row number inconsistent"); + if (!(col > 0 && col <= srcMat->colNum && col <= dstMat->colNum)) + HError(5221, "AddNMatrix: Matrix column number inconsistent"); + } +#ifdef CUDA + AddNSegmentCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + AddNSegmentMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + AddNSegmentCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +void AddNVector(NVector *srcVec, int len, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= srcVec->vecLen && len <= dstVec->vecLen)) + HError(5221, "AddNVector: Vector length inconsistent"); + } +#ifdef CUDA + AddNSegmentCUDA(srcVec->devElems, len, dstVec->devElems); +#else + #ifdef MKL + AddNSegmentMKL(srcVec->vecElems, len, dstVec->vecElems); + #else + AddNSegmentCPU(srcVec->vecElems, len, dstVec->vecElems); + #endif +#endif +} + +/* cz277 - l2 fix */ +static void AddScaledNSegmentCPU(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + dstPtr[i] += scale * srcPtr[i]; + } +} + +/* cz277 - l2 fix */ +#ifdef MKL +static void AddScaledNSegmentMKL(NFloat *srcPtr, int segLen, NFloat scale, NFloat *dstPtr) { + +#ifdef DOUBLEANN + cblas_daxpy(segLen, scale, srcPtr, 1, dstPtr, 1); +#else + cblas_saxpy(segLen, scale, srcPtr, 1, dstPtr, 1); +#endif +} +#endif + +/* cz277 - l2 fix */ +void AddScaledNMatrix(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "AddScaledNMatrix: Matrix row number inconsistent"); + if (!(col > 0 && col <= srcMat->colNum && col <= dstMat->colNum)) + HError(5221, "AddScaledNMatrix: Matrix column number inconsistent"); + } +#ifdef CUDA + AddScaledNSegmentCUDA(srcMat->devElems, row * col, scale, dstMat->devElems); +#else + #ifdef MKL + AddScaledNSegmentMKL(srcMat->matElems, row * col, scale, dstMat->matElems); + #else + AddScaledNSegmentCPU(srcMat->matElems, row * col, scale, dstMat->matElems); + #endif +#endif +} + +/* cz277 - l2 fix */ +void AddScaledNVector(NVector *srcVec, int len, NFloat scale, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= srcVec->vecLen && len <= dstVec->vecLen)) + HError(5221, "AddScaledNVector: Vector length inconsistent"); + } +#ifdef CUDA + AddScaledNSegmentCUDA(srcVec->devElems, len, scale, dstVec->devElems); +#else + #ifdef MKL + AddScaledNSegmentMKL(srcVec->vecElems, len, scale, dstVec->vecElems); + #else + AddScaledNSegmentCPU(srcVec->vecElems, len, scale, dstVec->vecElems); + #endif +#endif +} + +#ifdef MKL +static inline void ScaleNSegmentMKL(int segLen, NFloat scale, NFloat *valPtr) { + #ifdef DOUBLEANN + cblas_dscal(segLen, scale, valPtr, 1); + #else + cblas_sscal(segLen, scale, valPtr, 1); + #endif +} +#endif + +static inline void ScaleNSegmentCPU(int segLen, NFloat scale, NFloat *valPtr) { + int i; + + for (i = 0; i < segLen; ++i) + valPtr[i] *= scale; +} + +void ScaleNMatrix(NFloat scale, int row, int col, NMatrix *valMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row * col <= valMat->rowNum * valMat->colNum)) + HError(5221, "ScaleNMatrix: Matrix dimensions inconsistent"); + } +#ifdef CUDA + ScaleNSegmentCUDA(row * col, scale, valMat->devElems); +#else + #ifdef MKL + ScaleNSegmentMKL(row * col, scale, valMat->matElems); + #else + ScaleNSegmentCPU(row * col, scale, valMat->matElems); + #endif +#endif + +} + +void ScaleNVector(NFloat scale, int len, NVector *valVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len <= valVec->vecLen)) + HError(5221, "ScaleNVector: Vector lengths inconsistent"); + } +#ifdef CUDA + ScaleNSegmentCUDA(len, scale, valVec->devElems); +#else + #ifdef MKL + ScaleNSegmentMKL(len, scale, valVec->vecElems); + #else + ScaleNSegmentCPU(len, scale, valVec->vecElems); + #endif +#endif +} + +#ifdef MKL +static inline void ScaledSelfAddNSegmentMKL(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + #ifdef DOUBLEANN + cblas_dscal(segLen, scale, lhPtr, 1); + vdAdd(segLen, rhPtr, lhPtr, lhPtr); + #else + cblas_sscal(segLen, scale, lhPtr, 1); + vsAdd(segLen, rhPtr, lhPtr, lhPtr); + #endif +} +#endif + +static inline void ScaledSelfAddNSegmentCPU(NFloat *rhPtr, int segLen, NFloat scale, NFloat *lhPtr) { + int i; + + for (i = 0; i < segLen; ++i) + lhPtr[i] = scale * lhPtr[i] + rhPtr[i]; +} + +void ScaledSelfAddNVector(NVector *rhVec, int len, NFloat scale, NVector *lhVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len <= rhVec->vecLen && len <= lhVec->vecLen)) + HError(5221, "ScaledSelfAddNVector: Vector lengths inconsistent"); + } +#ifdef CUDA + ScaledSelfAddNSegmentCUDA(rhVec->devElems, len, scale, lhVec->devElems); +#else + #ifdef MKL + ScaledSelfAddNSegmentMKL(rhVec->vecElems, len, scale, lhVec->vecElems); + #else + ScaledSelfAddNSegmentCPU(rhVec->vecElems, len, scale, lhVec->vecElems); + #endif +#endif +} + +void ScaledSelfAddNMatrix(NMatrix *rhMat, int row, int col, NFloat scale, NMatrix *lhMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= rhMat->rowNum && row <= lhMat->colNum)) + HError(5221, "ScaledSelfAddNMatrix: Matrix row number inconsistent"); + if (!(col > 0 && col == rhMat->colNum && col == lhMat->colNum)) + HError(5221, "ScaledSelfAddNMatrix: Matrix column number inconsistent"); + } + +#ifdef CUDA + ScaledSelfAddNSegmentCUDA(rhMat->devElems, row * col, scale, lhMat->devElems); +#else + #ifdef MKL + ScaledSelfAddNSegmentMKL(rhMat->matElems, row * col, scale, lhMat->matElems); + #else + ScaledSelfAddNSegmentCPU(rhMat->matElems, row * col, scale, lhMat->matElems); + #endif +#endif +} + + +static inline void DupNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int i, off; + + for (i = 0, off = 0; i < times; ++i, off += segLen) { + memcpy(dstPtr + off, srcPtr, segLen * sizeof(NFloat)); + } +} + +#ifdef MKL +static inline void DupNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr, int times) { + int i, off; + + for (i = 0, off = 0; i < times; ++i, off += segLen) { + #ifdef DOUBLEANN + cblas_dcopy(segLen, srcPtr, 1, dstPtr + off, 1); + #else + cblas_scopy(segLen, srcPtr, 1, dstPtr + off, 1); + #endif + } +} +#endif + +void DupNVector(NVector *srcVec, NMatrix *dstMat, int times) { + /* safety check */ + if (trace & T_DIM) { + if (!(times > 0)) + HError(5221, "DupNVector: Times should be positive integer"); + if (srcVec->vecLen * times < dstMat->rowNum * dstMat->colNum) + HError(5221, "DupNVector: Too many duplicate times"); + } +#ifdef CUDA + DupNSegmentCUDA(srcVec->devElems, srcVec->vecLen, dstMat->devElems, times); +#else + #ifdef MKL + DupNSegmentMKL(srcVec->vecElems, srcVec->vecLen, dstMat->matElems, times); + #else + DupNSegmentCPU(srcVec->vecElems, srcVec->vecLen, dstMat->matElems, times); + #endif +#endif +} + +static inline void SubNSegmentCPU(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + resPtr[i] = lhPtr[i] - rhPtr[i]; + } +} + +#ifdef MKL +static inline void SubNSegmentMKL(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + #ifdef DOUBLEANN + vdSub(segLen, lhPtr, rhPtr, resPtr); + #else + vsSub(segLen, lhPtr, rhPtr, resPtr); + #endif +} +#endif + +void SubNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= lhMat->rowNum && row <= rhMat->rowNum && row <= resMat->rowNum)) { + HError(5221, "SubNMatrix: Matrix row dimension out of range"); + } + if (!(col == lhMat->colNum && col == rhMat->colNum && col == resMat->colNum)) { + HError(5221, "SubNMatrix: Inconsistent matrix col dimensions"); + } + } +#ifdef CUDA + SubNSegmentCUDA(lhMat->devElems, rhMat->devElems, row * col, resMat->devElems); +#else + #ifdef MKL + SubNSegmentMKL(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #else + SubNSegmentCPU(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #endif +#endif +} + +static inline void MulNSegmentCPU(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + resPtr[i] = lhPtr[i] * rhPtr[i]; + } +} + +#ifdef MKL +static inline void MulNSegmentMKL(NFloat *lhPtr, NFloat *rhPtr, int segLen, NFloat *resPtr) { + #ifdef DOUBLEANN + vdMul(segLen, lhPtr, rhPtr, resPtr); + #else + vsMul(segLen, lhPtr, rhPtr, resPtr); + #endif +} +#endif + +void MulNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(row > 0 && row <= lhMat->rowNum && row <= rhMat->rowNum && row <= resMat->rowNum)) { + HError(5221, "MulNMatrix: Matrix row dimension out of range"); + } + if (!(col == lhMat->colNum && col == rhMat->colNum && col == resMat->colNum)) { + HError(5221, "MulNMatrix: Inconsistent matrix col dimensions"); + } + } +#ifdef CUDA + MulNSegmentCUDA(lhMat->devElems, rhMat->devElems, row * col, resMat->devElems); +#else + #ifdef MKL + MulNSegmentMKL(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #else + MulNSegmentCPU(lhMat->matElems, rhMat->matElems, row * col, resMat->matElems); + #endif +#endif +} + +void MulNVector(NVector *lhVec, NVector *rhVec, int len, NVector *resVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= lhVec->vecLen && len <= rhVec->vecLen && len <= resVec->vecLen)) + HError(5221, "MulNVector: Vector lengths inconsistent"); + } +#ifdef CUDA + MulNSegmentCUDA(lhVec->devElems, rhVec->devElems, len, resVec->devElems); +#else + #ifdef MKL + MulNSegmentMKL(lhVec->vecElems, rhVec->vecElems, len, resVec->vecElems); + #else + MulNSegmentCPU(lhVec->vecElems, rhVec->vecElems, len, resVec->vecElems); + #endif +#endif +} + +/* cz277 - laf */ +static inline void ApplyAffineActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + dstPtr[i * col + j] = scalePtr[j] * srcPtr[i * col + j] + shiftPtr[j]; + } + } +} + +/* cz277 - laf */ +#ifdef MKL +static inline void ApplyAffineActMKL(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int i; + NFloat *curSrc, *curDst; + + for (i = 0, curSrc = srcPtr, curDst = dstPtr; i < row; ++i, curSrc += col, curDst += col) { +#ifdef DOUBLEANN + vdMul(col, curSrc, scalePtr, curDst); + vdAdd(col, curSrc, shiftPtr, curDst); +#else + vsMul(col, curSrc, scalePtr, curDst); + vsAdd(col, curSrc, shiftPtr, curDst); +#endif + } +} +#endif + +/* cz277 - laf */ +void ApplyAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col && scaleVec->vecLen == col && shiftVec->vecLen == col)) + HError(5221, "ApplyAffineAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyAffineAct: Input row number out of range"); + } +#ifdef CUDA + ApplyAffineActCUDA(srcMat->devElems, row, col, scaleVec->devElems, shiftVec->devElems, dstMat->devElems); +#else + #ifdef MKL + ApplyAffineActMKL(srcMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, dstMat->matElems); + #else + ApplyAffineActCPU(srcMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, dstMat->matElems); + #endif +#endif + +} + +/* cz277 - pact */ +static inline void ApplyDAffineActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, NFloat *dstPtr) { + int i; + + for (i = 0; i < row; ++i) { + memcpy(&dstPtr[i * col], scalePtr, col * sizeof(NFloat)); + } +} + +/* cz277 - pact */ +void ApplyDAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col && scaleVec->vecLen == col && shiftVec->vecLen == col)) + HError(5221, "ApplyDAffineAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDAffineAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDAffineActCUDA(srcMat->devElems, row, col, scaleVec->devElems, shiftVec->devElems, dstMat->devElems); +#else + ApplyDAffineActCPU(srcMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, dstMat->matElems); +#endif + +} + +/* cz277 - pact */ +static inline void ApplyTrAffineActCPU(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *scalePtr, NFloat *shiftPtr, Boolean accFlag, NFloat *dScalePtr, NFloat *dShiftPtr) { + int i, j; + + if (accFlag == FALSE) { + memset(dScalePtr, 0, col * sizeof(NFloat)); + memset(dShiftPtr, 0, col * sizeof(NFloat)); + } + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + dScalePtr[j] += errPtr[i * col + j] * actPtr[i * col + j]; + dShiftPtr[j] += errPtr[i * col + j]; + } + } +} + +/* cz277 - pact */ +void ApplyTrAffineAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *scaleVec, NVector *shiftVec, Boolean accFlag, NVector *dScaleVec, NVector *dShiftVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && actMat->colNum == col && scaleVec->vecLen == col && shiftVec->vecLen == col && dScaleVec->vecLen == col && dShiftVec->vecLen == col)) + HError(5221, "ApplyDTrAffineAct: Input column number incompatible"); + } +#ifdef CUDA + ApplyTrAffineActCUDA(errMat->devElems, actMat->devElems, row, col, scaleVec->devElems, shiftVec->devElems, accFlag, dScaleVec->devElems, dShiftVec->devElems); +#else + ApplyTrAffineActCPU(errMat->matElems, actMat->matElems, row, col, scaleVec->vecElems, shiftVec->vecElems, accFlag, dScaleVec->vecElems, dShiftVec->vecElems); +#endif +} + +/* cz277 - laf */ +static inline void AccMeanNSegmentCPU(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + meanPtr[j] += valPtr[i * col + j] / tSamp; + } + } +} + +/* cz277 - laf */ +void AccMeanNVector(NMatrix *valMat, int row, int col, NFloat tSamp, NVector *meanVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(valMat->colNum == col && meanVec->vecLen == col)) + HError(5221, "ApplyInitMeanAMVNAct: Input column number incompatible"); + /*if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyDAMVNAct: Input row number out of range");*/ + } +#ifdef CUDA + AccMeanNSegmentCUDA(valMat->devElems, row, col, tSamp, meanVec->devElems); +#else + AccMeanNSegmentCPU(valMat->matElems, row, col, tSamp, meanVec->vecElems); +#endif +} + +/* cz277 - laf */ +static inline void AccVarianceNSegmentCPU(NFloat *valPtr, int row, int col, NFloat tSamp, NFloat *meanPtr, NFloat *varPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + varPtr[j] += pow(valPtr[i * col + j] - meanPtr[j], 2.0) / tSamp; + } + } +} + +/* cz277 - laf */ +void AccVarianceNVector(NMatrix *srcMat, int row, int col, NFloat tSamp, NVector *meanVec, NVector *varVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && meanVec->vecLen == col && varVec->vecLen == col)) + HError(5221, "AccVarianceNVector: Input column number incompatible"); + /*if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyDAMVNAct: Input row number out of range");*/ + } +#ifdef CUDA + AccVarianceNSegmentCUDA(srcMat->devElems, row, col, tSamp, meanVec->devElems, varVec->devElems); +#else + AccVarianceNSegmentCPU(srcMat->matElems, row, col, tSamp, meanVec->vecElems, varVec->vecElems); +#endif +} + +void ApplyHermiteAct(NMatrix *srcMat, int row, int col, NVector *parmVec, NMatrix*dstMat) { + HError(5201, "Unimplemented method!"); +} + +static inline void ApplyReLUActCPU(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int i; + + /* len = row * col; */ + for (i = 0; i < len; ++i) { + if (srcPtr != dstPtr && srcPtr[i] > 0) + dstPtr[i] = srcPtr[i]; + if (srcPtr[i] < 0) + dstPtr[i] = srcPtr[i] * scale; + } +} + +void ApplyReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyReLUActCUDA(srcMat->devElems, row * col, scale, dstMat->devElems); +#else + ApplyReLUActCPU(srcMat->matElems, row * col, scale, dstMat->matElems); +#endif +} + +static inline void ApplyDReLUActCPU(NFloat *srcPtr, int len, NFloat scale, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (srcPtr[i] > 0) + dstPtr[i] = 1.0; + else + dstPtr[i] = scale; + } +} + +void ApplyDReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDReLUActCUDA(srcMat->devElems, row * col, scale, dstMat->devElems); +#else + ApplyDReLUActCPU(srcMat->matElems, row * col, scale, dstMat->matElems); +#endif +} + +void ApplyLHUCSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal, lhucVal; + + for (i = 0; i < col; ++i) { + floatVal = -1.0 * rolePtr[i]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + for (j = 0; j < row; ++j) { + pos = j * col + i; + floatVal = -1.0 * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = lhucVal * 1.0 / (1.0 + exp(floatVal)); + } + } +} + +void ApplyLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && roleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyLHUCSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyLHUCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyLHUCSigmoidActCUDA(srcMat->devElems, row, col, roleVec->devElems, dstMat->devElems); +#else + ApplyLHUCSigmoidActCPU(srcMat->matElems, row, col, roleVec->vecElems, dstMat->matElems); +#endif +} + +void ApplyDLHUCSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *rolePtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal, lhucVal; + + for (i = 0; i < col; ++i) { + floatVal = -1.0 * rolePtr[i]; + CHKNFLTEXPE(floatVal) + lhucVal = 2.0 / (1.0 + exp(floatVal)); + for (j = 0; j < row; ++j) { + pos = j * col + i; + floatVal = srcPtr[pos] / lhucVal; + dstPtr[pos] = srcPtr[pos] * (1 - floatVal); + } + } +} + +void ApplyDLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && roleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDLHUCSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDLHUCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDLHUCSigmoidActCUDA(srcMat->devElems, row, col, roleVec->devElems, dstMat->devElems); +#else + ApplyDLHUCSigmoidActCPU(srcMat->matElems, row, col, roleVec->vecElems, dstMat->matElems); +#endif +} + +void ApplyTrLHUCSigmoidActCPU(NFloat *errPtr, NFloat *actPtr, int row, int col, NFloat *rolePtr, Boolean accFlag, NFloat *dRolePtr) { + int i, j, pos; + NFloat floatVal; + + if (accFlag == FALSE) + memset(dRolePtr, 0, col * sizeof(NFloat)); + for (i = 0; i < col; ++i) { + floatVal = -1.0 * rolePtr[i]; + CHKNFLTEXPE(floatVal) + /*lhucVal = 2.0 / (1.0 + exp(floatVal)); * 0.5 */ + floatVal = 0.5 * 2.0 / (1.0 + exp(floatVal)); + for (j = 0; j < row; ++j) { + pos = j * col + i; + dRolePtr[i] += errPtr[pos] * actPtr[pos] * (1.0 - floatVal); + } + } +} + +void ApplyTrLHUCSigmoidAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *roleVec, Boolean accFlag, NVector *dRoleVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && actMat->colNum == col && roleVec->vecLen == col && dRoleVec->vecLen == col)) + HError(5221, "ApplyTrLHUCSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= errMat->rowNum && row <= actMat->rowNum)) + HError(5221, "ApplyTrLHUCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrLHUCSigmoidActCUDA(errMat->devElems, actMat->devElems, row, col, roleVec->devElems, accFlag, dRoleVec->devElems); +#else + ApplyTrLHUCSigmoidActCPU(errMat->matElems, actMat->matElems, row, col, roleVec->vecElems, accFlag, dRoleVec->vecElems); +#endif +} + +static inline void ApplyDLinearActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + dstPtr[i] = 1.0; + } +} + +void ApplyDLinearAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDLinearLAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDLinearAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDLinearActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + ApplyDLinearActCPU(srcMat->matElems, row * col, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyPSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + /* len = row * col; */ + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + floatVal = (-1.0) * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[j] / (1.0 + exp(floatVal)); + } + } +} + +/* cz277 - pact */ +void ApplyPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyPSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyPSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyPSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, dstMat->devElems); +#else + ApplyPSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyDPSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (etaPtr[j] != 0.0) + dstPtr[pos] = srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[j]); + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyDPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDPSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDPSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDPSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, dstMat->devElems); +#else + ApplyDPSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyTrPSigmoidActCPU(NFloat *errPtr, NFloat *srcPtr, NFloat *etaPtr, int row, int col, Boolean accFlag, NFloat *dEtaPtr) { + int i, j, pos; + + if (accFlag == FALSE) + memset(dEtaPtr, 0, col * sizeof(NFloat)); + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + if (etaPtr[j] != 0.0) + dEtaPtr[j] += errPtr[pos] * srcPtr[pos] / etaPtr[j]; + } + } +} + +/* cz277 - pact */ +void ApplyTrPSigmoidAct(NMatrix *errMat, NMatrix *srcMat, NVector *etaVec, int row, int col, Boolean accFlag, NVector *dEtaVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && srcMat->colNum == col && etaVec->vecLen == col && dEtaVec->vecLen == col)) + HError(5221, "ApplyTrPSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyTrPSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrPSigmoidActCUDA(errMat->devElems, srcMat->devElems, etaVec->devElems, row, col, accFlag, dEtaVec->devElems); +#else + ApplyTrPSigmoidActCPU(errMat->matElems, srcMat->matElems, etaVec->vecElems, row, col, accFlag, dEtaVec->vecElems); +#endif +} + + +/* cz277 - pact */ +static inline void ApplyParmSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + floatVal = (-1.0) * gammaPtr[j] * srcPtr[pos] + thetaPtr[j]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = etaPtr[j] / (1.0 + exp(floatVal)); + } + } +} + +/* cz277 - pact */ +void ApplyParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && gammaVec->vecLen == col && thetaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyParmSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyParmCSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyParmSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, gammaVec->devElems, thetaVec->devElems, dstMat->devElems); +#else + ApplyParmSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, gammaVec->vecElems, thetaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyDParmSigmoidActCPU(NFloat *srcPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (etaPtr[j] != 0.0) + dstPtr[pos] = gammaPtr[j] * srcPtr[pos] * (1.0 - srcPtr[pos] / etaPtr[j]); + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyDParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && etaVec->vecLen == col && gammaVec->vecLen == col && thetaVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDParmSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDParmSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDParmSigmoidActCUDA(srcMat->devElems, row, col, etaVec->devElems, gammaVec->devElems, thetaVec->devElems, dstMat->devElems); +#else + ApplyDParmSigmoidActCPU(srcMat->matElems, row, col, etaVec->vecElems, gammaVec->vecElems, thetaVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyTrParmSigmoidActCPU(NFloat *errPtr, NFloat *inpPtr, int row, int col, NFloat *etaPtr, NFloat *gammaPtr, NFloat *thetaPtr, Boolean accFlag, NFloat *dEtaPtr, NFloat *dGammaPtr, NFloat *dThetaPtr) { + int i, j, pos; + NFloat floatVal, expVal, fracVal; + + if (accFlag == FALSE) { + memset(dEtaPtr, 0, col * sizeof(NFloat)); + memset(dGammaPtr, 0, col * sizeof(NFloat)); + memset(dThetaPtr, 0, col * sizeof(NFloat)); + } + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + floatVal = (-1.0) * gammaPtr[j] * inpPtr[pos] + thetaPtr[j]; + CHKNFLTEXPE(floatVal) + expVal = exp(floatVal); + fracVal = 1.0 / (1.0 + expVal); + dEtaPtr[j] += errPtr[pos] * fracVal; + if (etaPtr[j] != 0.0) { + dGammaPtr[j] += errPtr[pos] * inpPtr[pos] * etaPtr[j] * fracVal * (1.0 - fracVal); + dThetaPtr[j] -= errPtr[pos] * etaPtr[j] * fracVal * (1.0 - fracVal); + } + } + } +} + +/* cz277 - pact */ +void ApplyTrParmSigmoidAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, Boolean accFlag, NVector *dEtaVec, NVector *dGammaVec, NVector *dThetaVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && inpMat->colNum == col && etaVec->vecLen == col && gammaVec->vecLen == col && thetaVec->vecLen == col && dEtaVec->vecLen == col && dGammaVec->vecLen == col && dThetaVec->vecLen == col)) + HError(5221, "ApplyTrParmSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= inpMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyTrParmSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrParmSigmoidActCUDA(errMat->devElems, inpMat->devElems, row, col, etaVec->devElems, gammaVec->devElems, thetaVec->devElems, accFlag, dEtaVec->devElems, dGammaVec->devElems, dThetaVec->devElems); +#else + ApplyTrParmSigmoidActCPU(errMat->matElems, inpMat->matElems, row, col, etaVec->vecElems, gammaVec->vecElems, thetaVec->vecElems, accFlag, dEtaVec->vecElems, dGammaVec->vecElems, dThetaVec->vecElems); +#endif +} + +/* cz277 - laf */ +/*static inline void ApplyPABCSoftReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *alphaPtr, NFloat *betaPtr, NFloat *gammaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + floatVal = betaPtr[j] * srcPtr[pos] + gammaPtr[j]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = alphaPtr[j] * log(1.0 + exp(floatVal)); + } + } +}*/ + +/* cz277 - laf */ +/*void ApplyPABCSoftReLUAct(NMatrix *srcMat, int row, int col, NVector *alphaVec, NVector *betaVec, NVector *gammaVec, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->colNum == col && alphaVec->vecLen == col && betaVec->vecLen == col && gammaVec->vecLen == col && dstMat->colNum == col)) + HError(9999, "ApplyPABCSoftReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyPABCSoftReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyPABCSoftReLUActCUDA(srcMat->devElems, row, col, alphaVec->devElems, betaVec->devElems, gammaVec->devElems, dstMat->devElems); +#else + ApplyPABCSoftReLUActCPU(srcMat->matElems, row, col, alphaVec->vecElems, betaVec->vecElems, gammaVec->vecElems, dstMat->matElems); +#endif +}*/ + +/* cz277 - laf */ +/*static inline void ApplyDPABCSoftReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *alphaPtr, NFloat *betaPtr, NFloat *dstPtr) { + int i, j, pos; + NFloat floatVal; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (alphaPtr[j] == 0.0) + dstPtr[pos] = 0.0; + else { + floatVal = -1.0 / alphaPtr[j] * srcPtr[pos]; + CHKNFLTEXPE(floatVal) + dstPtr[pos] = alphaPtr[j] * betaPtr[j] * (1 - exp(floatVal)); + } + + } + } +}*/ + +/* cz277 - laf */ +/*void ApplyDPABCSoftReLUAct(NMatrix *srcMat, int row, int col, NVector *alphaVec, NVector *betaVec, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->colNum == col && alphaVec->vecLen == col && betaVec->vecLen == col && dstMat->colNum == col)) + HError(9999, "ApplyDPABSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyDPABSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDPABCSoftReLUActCUDA(srcMat->devElems, row, col, alphaVec->devElems, betaVec->devElems, dstMat->devElems); +#else + ApplyDPABCSoftReLUActCPU(srcMat->matElems, row, col, alphaVec->vecElems, betaVec->vecElems, dstMat->matElems); +#endif +}*/ + + +/* cz277 - laf */ +static inline void ApplyParmReLUActCPU(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int i, j, pos; + + /* len = row * col; */ + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (inpPtr[pos] > 0) + dstPtr[pos] = posPtr[j] * inpPtr[pos]; + else + dstPtr[pos] = negPtr[j] * inpPtr[pos]; + } + } +} + +/* cz277 - laf */ +void ApplyParmReLUAct(NMatrix *srcMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && posVec->vecLen == col && negVec->vecLen && dstMat->colNum == col)) + HError(5221, "ApplyParmReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyParmReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyParmReLUActCUDA(srcMat->devElems, row, col, posVec->devElems, negVec->devElems, dstMat->devElems); +#else + ApplyParmReLUActCPU(srcMat->matElems, row, col, posVec->vecElems, negVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - laf */ +static inline void ApplyDParmReLUActCPU(NFloat *inpPtr, int row, int col, NFloat *posPtr, NFloat *negPtr, NFloat *dstPtr) { + int i, j, pos; + + /* len = row * col; */ + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (inpPtr[pos] > 0) + dstPtr[pos] = posPtr[j]; + else + dstPtr[pos] = negPtr[j]; + } + } +} + +/* cz277 - laf */ +void ApplyDParmReLUAct(NMatrix *inpMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(inpMat->colNum == col && posVec->vecLen == col && negVec->vecLen && dstMat->colNum == col)) + HError(5221, "ApplyDParmReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= inpMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDParmReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDParmReLUActCUDA(inpMat->devElems, row, col, posVec->devElems, negVec->devElems, dstMat->devElems); +#else + ApplyDParmReLUActCPU(inpMat->matElems, row, col, posVec->vecElems, negVec->vecElems, dstMat->matElems); +#endif +} + +static inline void ApplyTrParmReLUActCPU(NFloat *errPtr, NFloat *inpPtr, int row, int col, Boolean accFlag, NFloat *dPosPtr, NFloat *dNegPtr) { + int i, j, pos; + + if (accFlag == FALSE) { + memset(dPosPtr, 0, col * sizeof(NFloat)); + memset(dNegPtr, 0, col * sizeof(NFloat)); + } + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + if (inpPtr[pos] > 0.0) + dPosPtr[j] += errPtr[pos] * inpPtr[pos]; + else + dNegPtr[j] += errPtr[pos] * inpPtr[pos]; + } + } +} + +/* cz277 - pact */ +void ApplyTrParmReLUAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, Boolean accFlag, NVector *dPosVec, NVector *dNegVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && inpMat->colNum == col && dPosVec->vecLen == col && dNegVec->vecLen == col)) + HError(5221, "ApplyTrParmReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= inpMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyTrParmReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrParmReLUActCUDA(errMat->devElems, inpMat->devElems, row, col, accFlag, dPosVec->devElems, dNegVec->devElems); +#else + ApplyTrParmReLUActCPU(errMat->matElems, inpMat->matElems, row, col, accFlag, dPosVec->vecElems, dNegVec->vecElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyPReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (srcPtr[pos] > 0) + dstPtr[pos] = scalePtr[j] * srcPtr[pos]; + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && scaleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyPReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyPReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyPReLUActCUDA(srcMat->devElems, row, col, scaleVec->devElems, dstMat->devElems); +#else + ApplyPReLUActCPU(srcMat->matElems, row, col, scaleVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyDPReLUActCPU(NFloat *srcPtr, int row, int col, NFloat *scalePtr, NFloat *dstPtr) { + int i, j, pos; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + pos = i * col + j; + if (scalePtr[j] != 0.0 && srcPtr[pos] / scalePtr[j] > 0.0) + dstPtr[pos] = scalePtr[j]; + else + dstPtr[pos] = 0.0; + } + } +} + +/* cz277 - pact */ +void ApplyDPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && scaleVec->vecLen == col && dstMat->colNum == col)) + HError(5221, "ApplyDPReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyPDReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDPReLUActCUDA(srcMat->devElems, row, col, scaleVec->devElems, dstMat->devElems); +#else + ApplyDPReLUActCPU(srcMat->matElems, row, col, scaleVec->vecElems, dstMat->matElems); +#endif +} + +/* cz277 - pact */ +static inline void ApplyTrPReLUActCPU(NFloat *errPtr, NFloat *srcPtr, int row, int col, NFloat *scalePtr, Boolean accFlag, NFloat *dScalePtr) { + int i, j, pos; + NFloat act; + + if (accFlag == FALSE) + memset(dScalePtr, 0, col * sizeof(NFloat)); + for (i = 0, pos = 0; i < row; ++i) { + for (j = 0; j < col; ++j, ++pos) { + if (scalePtr[j] != 0.0) { + act = srcPtr[pos] / scalePtr[j]; + if (act > 0.0) + dScalePtr[j] += errPtr[pos] * act; + } + } + } +} + +/* cz277 - pact */ +void ApplyTrPReLUAct(NMatrix *errMat, NMatrix *srcMat, int row, int col, NVector *scaleVec, Boolean accFlag, NVector *dScaleVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(errMat->colNum == col && srcMat->colNum == col && scaleVec->vecLen == col && dScaleVec->vecLen == col)) + HError(5221, "ApplyDPReLUAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= errMat->rowNum)) + HError(5221, "ApplyDPReLUAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTrPReLUActCUDA(errMat->devElems, srcMat->devElems, row, col, scaleVec->devElems, accFlag, dScaleVec->devElems); +#else + ApplyTrPReLUActCPU(errMat->matElems, srcMat->matElems, row, col, scaleVec->vecElems, accFlag, dScaleVec->vecElems); +#endif +} + +static inline void ApplyDSoftReLActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + NFloat expVal; + + for (i = 0; i < len; ++i) { + expVal = srcPtr[i]; + CHKNFLTEXPE(expVal) + expVal = exp(expVal); + dstPtr[i] = 1.0 - 1.0 / expVal; + } +} + +#ifdef MKL +static inline void ApplyDSoftReLActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (srcPtr != dstPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdExp(len, dstPtr, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, 1.0, -1.0, 1.0, 0.0, dstPtr); + #else + vsExp(len, dstPtr, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, 1.0, -1.0, 1.0, 0.0, dstPtr); + #endif +} +#endif + +void ApplyDSoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDSoftReLAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDSoftReLAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDSoftReLActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyDSoftReLActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyDSoftReLActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySoftReLActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + NFloat expVal; + + for (i = 0; i < len; ++i) { + expVal = srcPtr[i]; + CHKNFLTEXPE(expVal) + expVal = exp(expVal); + dstPtr[i] = log(1.0 + expVal); + } +} + +#ifdef MKL +static inline void ApplySoftReLActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (srcPtr != dstPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + + #ifdef DOUBLEANN + vdExp(len, dstPtr, dstPtr); + vdLog1p(len, dstPtr, dstPtr); + #else + vsExp(len, dstPtr, dstPtr); + vsLog1p(len, dstPtr, dstPtr); + #endif +} +#endif + +void ApplySoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySoftReLAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySoftReLAct: Input row number out of range"); + } +#ifdef CUDA + ApplySoftReLActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplySoftReLActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplySoftReLActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySigmoidActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + float floatVal; + + /* len = row * col */ + for (i = 0; i < len; ++i) { + floatVal = -1.0 * srcPtr[i]; + CHKNFLTEXPE(floatVal) + dstPtr[i] = 1.0 / (1.0 + exp(floatVal)); + /*dstPtr[i] = 1.0 / (1.0 + exp(-1.0 * srcPtr[i]));*/ + } +} + +#ifdef MKL +/*static inline void ApplySigmoidActMKL(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int len; + + len = row * col; + #ifdef DOUBLEANN + vdExp(len, srcPtr, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, 1.0, 0.0, 1.0, 1.0, dstPtr); + #else + vsExp(len, srcPtr, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, 1.0, 0.0, 1.0, 1.0, dstPtr); + #endif +}*/ +static inline void ApplySigmoidActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) { + dstPtr[i] = -1.0 * srcPtr[i]; + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdExp(len, dstPtr, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, 0.0, 1.0, 1.0, 1.0, dstPtr); + #else + vsExp(len, dstPtr, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, 0.0, 1.0, 1.0, 1.0, dstPtr); + #endif +} +#endif + +void ApplySigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplySigmoidActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplySigmoidActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplySigmoidActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplyDSigmoidActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) + dstPtr[i] = (1 - srcPtr[i]) * srcPtr[i]; +} + +#ifdef MKL +static inline void ApplyDSigmoidActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + /*int len; + + len = row * col;*/ + #ifdef DOUBLEANN + vdSqr(len, srcPtr, tmpNMat->matElems); + vdSub(len, srcPtr, tmpNMat->matElems, dstPtr); + #else + vsSqr(len, srcPtr, tmpNMat->matElems); + vsSub(len, srcPtr, tmpNMat->matElems, dstPtr); + #endif +} +#endif + +void ApplyDSigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDSigmoidAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDSigmoidAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDSigmoidActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyDSigmoidActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyDSigmoidActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplyTanHActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + float floatVal; + + /* len = row * col */ + for (i = 0; i < len; ++i) { + floatVal = srcPtr[i]; + CHKNFLTEXPE(floatVal) + floatVal = exp(floatVal); + dstPtr[i] = (floatVal - 1.0 / floatVal) / (floatVal + 1.0 / floatVal); + } +} + +#ifdef MKL +static inline void ApplyTanHActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) { + if (dstPtr != srcPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdTanh(len, dstPtr, dstPtr); + #else + vsTanh(len, dstPtr, dstPtr); + #endif +} +#endif + +void ApplyTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyTanHAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyTanHAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTanHActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyTanHActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyTanHActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplyDTanHActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) + dstPtr[i] = 1 - pow(srcPtr[i], 2); +} + +#ifdef MKL +static inline void ApplyDTanHActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + /*int len; + + len = row * col;*/ + #ifdef DOUBLEANN + vdPowx(len, srcPtr, 2, dstPtr); + vdLinearFrac(len, dstPtr, dstPtr, -1.0, 1.0, 0.0, 1.0, dstPtr); + #else + vsPowx(len, srcPtr, 2, dstPtr); + vsLinearFrac(len, dstPtr, dstPtr, -1.0, 1.0, 0.0, 1.0, dstPtr); + #endif +} +#endif + +void ApplyDTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyDTanHAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyDTanHAct: Input row number out of range"); + } +#ifdef CUDA + ApplyDTanHActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyDTanHActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyDTanHActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySoftmaxActCPU(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, j, off; + NFloat sumval, maxval; + + for (i = 0, off = 0; i < row; ++i, off += col) { + #ifdef DOUBLEANN + maxval = MINFLTEXPE; + #else + maxval = MINDBLEXPE; + #endif + sumval = 0.0; + + for (j = 0; j < col; ++j) { + dstPtr[off + j] = srcPtr[off + j]; + CHKNFLTEXPE(dstPtr[off + j]) + if (dstPtr[off + j] > maxval) + maxval = dstPtr[off + j]; + } + for (j = 0; j < col; ++j) { + dstPtr[off + j] = exp(dstPtr[off + j] - maxval); + sumval += dstPtr[off + j]; + } + for (j = 0; j < col; ++j) { + dstPtr[off + j] /= sumval; + } + } +} + +#ifdef MKL +static inline void ApplySoftmaxActMKL(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, j, off; + NFloat sumval, maxval; + + for (i = 0, off = 0; i < row; ++i, off += col) { +#ifdef DOUBLEANN + maxval = MINFLTEXPE; +#else + maxval = MINDBLEXPE; +#endif + for (j = 0; j < col; ++j) { + dstPtr[off + j] = srcPtr[off + j]; + CHKNFLTEXPE(dstPtr[off + j]) + if (dstPtr[off + j] > maxval) + maxval = dstPtr[off + j]; + } + for (j = 0; j < col; ++j) { + dstPtr[off + j] -= maxval; + } + #ifdef DOUBLEANN + vdExp(col, &dstPtr[off], &dstPtr[off]); + sumval = cblas_dasum(col, &dstPtr[off], 1); + cblas_dscal(col, 1.0 / sumval, &dstPtr[off], 1); + #else + vsExp(col, &dstPtr[off], &dstPtr[off]); + sumval = cblas_sasum(col, &dstPtr[off], 1); + cblas_sscal(col, 1.0 / sumval, &dstPtr[off], 1); + #endif + } +} +#endif + +void ApplySoftmaxAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySoftmaxAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySoftmaxAct: Input row number out of range"); + } +#ifdef CUDA + ApplyRedSoftmaxActCUDA(srcMat->devElems, row, col, dstMat->devElems); +#else + #ifdef MKL + ApplySoftmaxActMKL(srcMat->matElems, row, col, dstMat->matElems); + #else + ApplySoftmaxActCPU(srcMat->matElems, row, col, dstMat->matElems); + #endif +#endif +} + +static inline void ApplySoftSignActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) + dstPtr[i] = srcPtr[i] / (1 + abs(srcPtr[i])); +} + +void ApplySoftSignAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplySoftSignAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplySoftSignAct: Input row number out of range"); + } +#ifdef CUDA + ApplySoftSignActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + ApplySoftSignActCPU(srcMat->matElems, row * col, dstMat->matElems); +#endif +} + +/* or 1.7159 * tanh(0.666666 * x) */ +/*static inline void ApplyTanHActCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + NFloat expVal; + + for (i = 0; i < len; ++i) { + expVal = srcPtr[i]; + CHKNFLTEXPE(expVal) + expVal = exp(expVal); + dstPtr[i] = (expVal - 1 / expVal) / (expVal + 1 / expVal); + } +} + +#ifdef MKL +static inline void ApplyTanHActMKL(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + for (i = 0; i < len; ++i) { + if (dstPtr != srcPtr) { + dstPtr[i] = srcPtr[i]; + } + CHKNFLTEXPE(dstPtr[i]) + } + #ifdef DOUBLEANN + vdTanh(len, dstPtr, dstPtr); + #else + vsTanh(len, dstPtr, dstPtr); + #endif +} +#endif + +void ApplyTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(9999, "ApplyTanHAct: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(9999, "ApplyTanHAct: Input row number out of range"); + } +#ifdef CUDA + ApplyTanHActCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + ApplyTanHActMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + ApplyTanHActCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} +*/ + +static inline void ApplyLogTransCPU(NFloat *srcPtr, int len, NFloat *dstPtr) { + int i; + + /*len = row * col;*/ + for (i = 0; i < len; ++i) { + if (srcPtr[i] <= 0) { /* srcPtr[i] < 0? */ + dstPtr[i] = LZERO; + } + else { + dstPtr[i] = log(srcPtr[i]); + if (dstPtr[i] < LSMALL) { + dstPtr[i] = LSMALL; + } + } + } +} + +/*#ifdef MKL +static inline void ApplyLogTransMKL(NFloat *srcPtr, int row, int col, NFloat *dstPtr) { + int i, len; + + len = row * col; + for (i = 0; i < len; ++i) { + if (srcPtr[i] <= 0) { + srcPtr[i] = 1E-20; + } + } + #ifdef DOUBLEANN + vdLn(len, srcPtr, dstPtr); + #else + vsLn(len, srcPtr, dstPtr); + #endif +} +#endif*/ + +void ApplyLogTrans(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col && dstMat->colNum == col)) + HError(5221, "ApplyLogTrans: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ApplyLogTrans: Input row number out of range"); + } +#ifdef CUDA + ApplyLogTransCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + ApplyLogTransCPU(srcMat->matElems, row * col, dstMat->matElems); +#endif +} + +static inline void SumNMatrixByColCPU(NFloat *srcPtr, int row, int col, Boolean accFlag, NFloat *dstPtr) { + NFloat *res_end_b8p = dstPtr + (col & ~7); + NFloat *res_end_p = dstPtr + col; + NFloat *res_p = dstPtr; + NFloat *in_p = srcPtr; + int i; + + if (accFlag == FALSE) + memset(res_p, 0, col * sizeof(NFloat)); + + while (res_p != res_end_b8p) { + res_p[0] += in_p[0]; + res_p[1] += in_p[1]; + res_p[2] += in_p[2]; + res_p[3] += in_p[3]; + res_p[4] += in_p[4]; + res_p[5] += in_p[5]; + res_p[6] += in_p[6]; + res_p[7] += in_p[7]; + res_p += 8; + in_p += 8; + } + while (res_p != res_end_p) + (*res_p++) += (*in_p++); + + for (i = 1; i != row; ++i) { + res_p = dstPtr; + while (res_p != res_end_b8p) { + res_p[0] += in_p[0]; + res_p[1] += in_p[1]; + res_p[2] += in_p[2]; + res_p[3] += in_p[3]; + res_p[4] += in_p[4]; + res_p[5] += in_p[5]; + res_p[6] += in_p[6]; + res_p[7] += in_p[7]; + res_p += 8; + in_p += 8; + } + while (res_p != res_end_p) + (*res_p++) += (*in_p++); + } +} + +void SumNMatrixByCol(NMatrix *srcMat, int row, int col, Boolean accFlag, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum >= row)) + HError(5221, "SumMatrixByCol: Row number inconsistent"); + if (!(srcMat->colNum == col && dstVec->vecLen == col)) + HError(5221, "SumMatrixByCol: Column number inconsistent"); + } +#ifdef CUDA + RedSumNMatrixByColCUDA(srcMat->devElems, row, col, accFlag, dstVec->devElems); +#else + SumNMatrixByColCPU(srcMat->matElems, row, col, accFlag, dstVec->vecElems); +#endif + +} + +static inline void SquaredNSegmentCPU(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + int i; + + for (i = 0; i < segLen; ++i) { + dstPtr[i] = pow(srcPtr[i], 2); + } +} + +#ifdef MKL +static inline void SquaredNSegmentMKL(NFloat *srcPtr, int segLen, NFloat *dstPtr) { + #ifdef DOUBLEANN + vdPowx(segLen, srcPtr, 2, dstPtr); + #else + vsPowx(segLen, srcPtr, 2, dstPtr); + #endif +} +#endif + +void SquaredNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum >= row && dstMat->rowNum >= row)) + HError(5221, "SquaredNMatrix: Incompatible matrix row number"); + if (!(srcMat->colNum >= col && dstMat->colNum >= col)) + HError(5221, "SquaredNMatrix: Incompatible matrix column number"); + } + +#ifdef CUDA + SquaredNSegmentCUDA(srcMat->devElems, row * col, dstMat->devElems); +#else + #ifdef MKL + SquaredNSegmentMKL(srcMat->matElems, row * col, dstMat->matElems); + #else + SquaredNSegmentCPU(srcMat->matElems, row * col, dstMat->matElems); + #endif +#endif +} + +void SquaredNVector(NVector *srcVec, int len, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcVec->vecLen >= len && dstVec->vecLen >= len)) + HError(5221, "SquaredNMatrix: Incompatible vector lengths"); + } + +#ifdef CUDA + SquaredNSegmentCUDA(srcVec->devElems, len, dstVec->devElems); +#else + #ifdef MKL + SquaredNSegmentMKL(srcVec->vecElems, len, dstVec->vecElems); + #else + SquaredNSegmentCPU(srcVec->vecElems, len, dstVec->vecElems); + #endif +#endif +} + +static inline void CompAdaGradNSegmentCPU(NFloat eta, int K, int segLen, NFloat *ssgSeg, NFloat *nlrSeg) { + int i; + + for (i = 0; i < segLen; ++i) { + nlrSeg[i] = eta / sqrt(K + ssgSeg[i]); + } +} + +void CompAdaGradNVector(NFloat eta, int K, NVector *ssgVec, NVector *nlrVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(ssgVec->vecLen == nlrVec->vecLen)) + HError(5221, "CompAdaGradNVector: Vector length inconsistent"); + } +#ifdef CUDA + CompAdaGradNSegmentCUDA(eta, K, nlrVec->vecLen, ssgVec->devElems, nlrVec->devElems); +#else + CompAdaGradNSegmentCPU(eta, K, nlrVec->vecLen, ssgVec->vecElems, nlrVec->vecElems); +#endif +} + +void CompAdaGradNMatrix(NFloat eta, int K, NMatrix *ssgMat, NMatrix *nlrMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(ssgMat->rowNum == nlrMat->rowNum)) + HError(5221, "CompAdaGradNMatrix: Matrix row inconsistent"); + if (!(ssgMat->colNum == nlrMat->colNum)) + HError(5221, "CompAdaGradNMatrix: Matrix column inconsistent"); + } +#ifdef CUDA + CompAdaGradNSegmentCUDA(eta, K, nlrMat->rowNum * nlrMat->colNum, ssgMat->devElems, nlrMat->devElems); +#else + CompAdaGradNSegmentCPU(eta, K, nlrMat->rowNum * nlrMat->colNum, ssgMat->matElems, nlrMat->matElems); +#endif +} + +static inline void FindMaxElementCPU(NFloat *srcPtr, int row, int col, IntVec resVec) { + int maxIdx, i, j; + NFloat maxVal; + + for (i = 0; i < row; ++i) { + maxIdx = 0; + maxVal = srcPtr[i * col + 0]; + for (j = 1; j < col; ++j) { + if (maxVal < srcPtr[i * col + j]) { + maxIdx = j; + maxVal = srcPtr[i * col + j]; + } + } + resVec[i + 1] = maxIdx; + } +} + + +/*#ifdef MKL +static inline void FindMaxElementMKL(NFloat *srcPtr, int row, int col, IntVec resVec) { + int i, maxIdx; + + for (i = 0; i < row; ++i) { +#ifdef DOUBLEANN + maxIdx = cblas_idamax(col, &srcPtr[i * col], 1); +#else + maxIdx = cblas_isamax(col, &srcPtr[i * col], 1); +#endif + resVec[i + 1] = maxIdx; + } +} +#endif*/ + +/* TODO: GPU support */ +void FindMaxElement(NMatrix *srcMat, int row, int col, IntVec resVec) { +#ifdef CUDA + int i; +#endif + + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == col)) + HError(5221, "FindMaxElement: Input column number incompatible"); + if (!(row > 0 && row <= srcMat->rowNum && row <= IntVecSize(resVec))) + HError(5221, "FindMaxElement: Input row number out of range"); + } + +#ifdef CUDA + FindMaxElementCUDA(srcMat->devElems, row, col, tmpNMat->devElems); + SyncNMatrixDev2Host(tmpNMat); + for (i = 0; i < row; ++i) + resVec[i + 1] = (int) tmpNMat->matElems[i]; +#else + FindMaxElementCPU(srcMat->matElems, row, col, resVec); +#endif + +} + +static inline void HNBlasNNgemmCPU(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + int i, j, l; + + /*for (i = 0; i < m; ++i) { + for (l = 0; l < k; ++l) { + C[i * k + l] *= beta; + for (j = 0; j < n; ++j) { + C[i * k + l] += alpha * A[i * n + j] * B[j * k + l]; + } + } + }*/ + for (i = 0; i < n; ++i) { + for (j = 0; j < m; ++j) { + C[i * m + j] *= beta; + for (l = 0; l < k; ++l) { + C[i * m + j] += alpha * A[l * m + j] * B[i * k + l]; + } + } + } +} + +#ifdef MKL +static inline void HNBlasNNgemmMKL(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + #ifdef DOUBLEANN + cblas_dgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, m, n, k, alpha, A, m, B, k, beta, C, m); + #else + cblas_sgemm(CblasColMajor, CblasNoTrans, CblasNoTrans, m, n, k, alpha, A, m, B, k, beta, C, m); + #endif +} +#endif + +/* do C[m * k] = a * A[m * n] * B[n * k] + b * C[m * k] */ +void HNBlasNNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C) { + /* safety check */ + if (trace & T_DIM) { + if (!(m > 0 && m <= A->rowNum && m <= C->rowNum)) + HError(5221, "HNBlasNNgemm: First input dimension out of range"); + if (!(n > 0 && n <= A->colNum && n <= B->rowNum)) + HError(5221, "HNBlasNNgemm: Second input dimension out of range"); + if (!(k > 0 && k <= B->colNum && k <= C->colNum)) + HError(5221, "HNBlasNNgemm: Third input dimension out of range"); + } +#ifdef CUDA + HNBlasNNgemmCUDA(m, n, k, alpha, A->devElems, B->devElems, beta, C->devElems); +#else + #ifdef MKL + HNBlasNNgemmMKL(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #else + HNBlasNNgemmCPU(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #endif +#endif +} + +static inline void HNBlasNTgemmCPU(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + int i, j, l; + /*for (i = 0; i < m; ++i) { + for (l = 0; l < k; ++l) { + C[i * k + l] *= beta; + for (j = 0; j < n; ++j) { + C[i * k + l] += alpha * A[i * n + j] * B[l * n + j]; + } + } + }*/ + for (i = 0; i < n; ++i) { + for (j = 0; j < m; ++j) { + C[i * m + j] *= beta; + for (l = 0; l < k; ++l) { + C[i * m + j] += alpha * A[l * m + j] * B[l * n + i]; + } + } + } +} + +#ifdef MKL +static inline void HNBlasNTgemmMKL(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + #ifdef DOUBLEANN + cblas_dgemm(CblasColMajor, CblasNoTrans, CblasTrans, m, n, k, alpha, A, m, B, n, beta, C, m); + #else + cblas_sgemm(CblasColMajor, CblasNoTrans, CblasTrans, m, n, k, alpha, A, m, B, n, beta, C, m); + #endif +} +#endif + +/* do C[m * k] = a * A[m * n] * B[k * n]^T + b * C[m * k] */ +void HNBlasNTgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C) { + /* safety check */ + if (trace & T_DIM) { + if (!(m > 0 && m <= A->rowNum && m <= C->rowNum)) + HError(5221, "HNBlasNTgemm: First input dimension out of range"); + if (!(n > 0 && n <= A->colNum && n <= B->colNum)) + HError(5221, "HNBlasNTgemm: Second input dimension out of range"); + if (!(k > 0 && k <= B->rowNum && k <= C->colNum)) + HError(5221, "HNBlasNTgemm: Third input dimension out of range"); + } +#ifdef CUDA + HNBlasNTgemmCUDA(m, n, k, alpha, A->devElems, B->devElems, beta, C->devElems); +#else + #ifdef MKL + HNBlasNTgemmMKL(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #else + HNBlasNTgemmCPU(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #endif +#endif + +} + +static inline void HNBlasTNgemmCPU(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + int i, j, l; + + for (i = 0; i < n; ++i) { + for (j = 0; j < m; ++j) { + C[i * m + j] *= beta; + for (l = 0; l < k; ++l) { + C[i * m + j] += alpha * A[j * k + l] * B[i * k + l]; + } + } + } +} + +#ifdef MKL +static inline void HNBlasTNgemmMKL(int m, int n, int k, NFloat alpha, NFloat *A, NFloat *B, NFloat beta, NFloat *C) { + #ifdef DOUBLEANN + cblas_dgemm(CblasColMajor, CblasTrans, CblasNoTrans, m, n, k, alpha, A, k, B, k, beta, C, m); + #else + cblas_sgemm(CblasColMajor, CblasTrans, CblasNoTrans, m, n, k, alpha, A, k, B, k, beta, C, m); + #endif +} +#endif + +/* do C[m * k] = a * A[n * m]^T * B[n * k] + b * C[m * k] */ +void HNBlasTNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C) { + /* safety check */ + if (trace & T_DIM) { + if (!(m > 0 && m <= A->colNum && m <= C->rowNum)) + HError(5221, "HNBlasTNgemm: First input dimension out of range"); + if (!(n > 0 && n <= A->rowNum && n <= B->rowNum)) + HError(5221, "HNBlasTNgemm: Second input dimension out of range"); + if (!(k > 0 && k <= B->colNum && k <= C->colNum)) + HError(5221, "HNBlasTNgemm: Third input dimension out of range"); + } +#ifdef CUDA + HNBlasTNgemmCUDA(m, n, k, alpha, A->devElems, B->devElems, beta, C->devElems); +#else + #ifdef MKL + HNBlasTNgemmMKL(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #else + HNBlasTNgemmCPU(m, n, k, alpha, A->matElems, B->matElems, beta, C->matElems); + #endif +#endif + +} + +void SetNSegmentCPU(NFloat val, NFloat *segPtr, int segLen) { + int i; + + for (i = 0; i < segLen; ++i) + segPtr[i] = val; +} + +void SetNVector(NFloat val, NVector *vec) { +#ifdef CUDA + SetNSegmentCUDA(val, vec->devElems, vec->vecLen); +#else + SetNSegmentCPU(val, vec->vecElems, vec->vecLen); +#endif +} + +void SetNMatrix(NFloat val, NMatrix *mat, int nrows) { + int len; + + len = nrows * mat->colNum; +#ifdef CUDA + SetNSegmentCUDA(val, mat->devElems, len); +#else + SetNSegmentCPU(val, mat->matElems, len); +#endif +} + +void SetNMatrixSegment(NFloat val, NMatrix *mat, int off, int len) { + +#ifdef CUDA + SetNSegmentCUDA(val, mat->devElems + off, len); +#else + SetNSegmentCPU(val, mat->matElems + off, len); +#endif +} + +void SetNVectorSegment(NFloat val, NVector *vec, int off, int len) { +#ifdef CUDA + SetNSegmentCUDA(val, vec->devElems + off, len); +#else + SetNSegmentCPU(val, vec->vecElems + off, len); +#endif +} + +static void ClearNSegmentCPU(NFloat *segPtr, int segLen) { + memset(segPtr, 0, segLen * sizeof(NFloat)); +} + +void ClearNVector(NVector *vec) { + +#ifdef CUDA + ClearNSegmentCUDA(vec->devElems, vec->vecLen); +#else + ClearNSegmentCPU(vec->vecElems, vec->vecLen); +#endif +} + +void ClearNMatrix(NMatrix *mat, int nrows) { + int len; + + len = nrows * mat->colNum; +#ifdef CUDA + ClearNSegmentCUDA(mat->devElems, len); +#else + ClearNSegmentCPU(mat->matElems, len); +#endif +} + +void ClearNMatrixSegment(NMatrix *mat, int off, int len) { + +#ifdef CUDA + ClearNSegmentCUDA(mat->devElems + off, len); +#else + ClearNSegmentCPU(mat->matElems + off, len); +#endif +} + +void ClearNVectorSegment(NVector *vec, int off, int len) { + +#ifdef CUDA + ClearNSegmentCUDA(vec->devElems + off, len); +#else + ClearNSegmentCPU(vec->vecElems + off, len); +#endif +} + +/*void ClearNVector(NVector *vec) { + + ClearNSegmentCPU(vec->vecElems, vec->vecLen); +#ifdef CUDA + SyncHost2Dev(vec->vecElems, vec->devElems, vec->vecLen * sizeof(NFloat)); +#endif +} + +void ClearNMatrix(NMatrix *mat, int nrows) { + int len; + + len = nrows * mat->colNum; + ClearNSegmentCPU(mat->matElems, len); +#ifdef CUDA + SyncHost2Dev(mat->matElems, mat->devElems, len * sizeof(NFloat)); +#endif +} + +void ClearNMatrixSegment(NMatrix *mat, int off, int len) { + + ClearNSegmentCPU(mat->matElems + off, len); +#ifdef CUDA + SyncHost2Dev(mat->matElems + off, mat->devElems + off, len * sizeof(NFloat)); +#endif +} + +void ClearNVectorSegment(NVector *vec, int off, int len) { + + ClearNSegmentCPU(vec->vecElems + off, len); +#ifdef CUDA + SyncHost2Dev(vec->vecElems + off, vec->devElems + off, len * sizeof(NFloat)); +#endif +}*/ + +/*void SetNVector(NFloat val, NVector *vec) { + +#ifdef CUDA + SyncNVectorDev2Host(vec); +#endif + SetNSegmentCPU(val, vec->vecElems, vec->vecLen); +#ifdef CUDA + SyncNVectorHost2Dev(vec); +#endif +} + +void SetNMatrix(NFloat val, NMatrix *mat, int nrows) { + +#ifdef CUDA + SyncNMatrixDev2Host(mat); +#endif + SetNSegmentCPU(val, mat->matElems, nrows * mat->colNum); +#ifdef CUDA + SyncNMatrixHost2Dev(mat); +#endif +} + +void SetNMatrixSegment(NFloat val, NMatrix *mat, int off, int len) { + +#ifdef CUDA + SyncNMatrixDev2Host(mat); +#endif + SetNSegmentCPU(val, mat->matElems + off, len); +#ifdef CUDA + SyncNMatrixHost2Dev(mat); +#endif +} + +void SetNVectorSegment(NFloat val, NVector *vec, int off, int len) { + +#ifdef CUDA + SyncNVectorDev2Host(vec); +#endif + SetNSegmentCPU(val, vec->vecElems + off, len); +#ifdef CUDA + SyncNVectorHost2Dev(vec); +#endif +}*/ + +/* cz277 - laf */ +void RandNSegmentGaussian(NFloat mu, NFloat sigma, int segLen, NFloat *segPtr) { + int i; + + if (sigma <= 0.0) + HError(5225, "RandNSegmentGauss: Standard deviation need to be positive"); + for (i = 0; i < segLen; ++i) { + segPtr[i] = GaussDeviate(mu, sigma); + } +} + +void RandNSegmentUniform(NFloat lower, NFloat upper, int segLen, NFloat *segPtr) { + int i; + NFloat range; + + range = upper - lower; + if (range < 0) + HError(5225, "RandNSegment: Random range should be positive"); + for (i = 0; i < segLen; ++i) { + segPtr[i] = RandomValue(); + if (range > 0) { /* range == 0 means no operation here */ + segPtr[i] *= range; + segPtr[i] += lower; + } + } +} + +/* cz277 - 0 mask */ +void RandMaskNSegment(NFloat prob, NFloat mask, int segLen, NFloat *segPtr) { + int i; + + if (prob < 0 || prob > 1) + HError(5225, "RandMaskNSegment: Mask probability shoudl be in [0, 1]"); + for (i = 0; i < segLen; ++i) { + if (RandomValue() < prob) + segPtr[i] = mask; + } +} + +static inline void CalXENTCriterionMKL(NFloat *refSeg, NFloat *hypSeg, int segLen) { + HError(5201, "CalXENTCriterionMKL: Unimplemented method"); +} + +static inline void CalXENTCriterionCPU(NFloat *refSeg, NFloat *hypSeg, int segLen) { + int i; + NFloat tn, yn, sum; + + sum = 0.0; + for (i = 0; i < segLen; ++i) { + tn = refSeg[i]; + yn = hypSeg[i]; + if (tn == 0.0) + sum += 0.0; + else if (yn == 0.0) + sum += tn * LZERO; + else + sum += (-1.0) * tn * log(yn / tn); + } + tmpNMat->matElems[0] = sum; +} + +NFloat CalXENTCriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum) { + int segLen; + + /* safety check */ + if (trace & T_DIM) { + if (!(refMat->colNum == hypMat->colNum)) + HError(5221, "CalXENTCriterion: Column number should be consistent"); + if (!(refMat->rowNum >= rowNum && hypMat->rowNum >= rowNum)) + HError(5221, "CalXENTCriterion: Row number out of range"); + } + segLen = rowNum * refMat->colNum; +#ifdef CUDA + CalXENTCriterionCUDA(refMat->devElems, hypMat->devElems, segLen, tmpNMat->devElems); + SyncNMatrixDev2Host(tmpNMat); +#else + /*#ifdef MKL + CalXENTCriterionMKL(refMat->matElems, hypMat->matElems, segLen); + #else + CalXENTCriterionCPU(refMat->matElems, hypMat->matElems, segLen); + #endif*/ + CalXENTCriterionCPU(refMat->matElems, hypMat->matElems, segLen); +#endif + return tmpNMat->matElems[0]; +} + +static inline void CalMMSECriterionMKL(NFloat *refSeg, NFloat *hypSeg, int segLen) { + HError(5201, "CalXENTCriterionMKL: Unimplemented method"); +} + +static inline void CalMMSECriterionCPU(NFloat *refSeg, NFloat *hypSeg, int segLen) { + int i; + + tmpNMat->matElems[0] = 0.0; + for (i = 0; i < segLen; ++i) + tmpNMat->matElems[0] += pow(hypSeg[i] - refSeg[i], 2.0); +} + +NFloat CalMMSECriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum) { + int segLen; + + /* safety check */ + if (trace & T_DIM) { + if (!(refMat->colNum == hypMat->colNum)) + HError(5221, "CalMMSECriterion: Column number should be consistent"); + if (!(refMat->rowNum >= rowNum && hypMat->rowNum >= rowNum)) + HError(5221, "CalMMSECriterion: Row number out of range"); + } + segLen = rowNum * refMat->colNum; +#ifdef CUDA + CalMMSECriterionCUDA(refMat->devElems, hypMat->devElems, segLen, tmpNMat->devElems); + SyncNMatrixDev2Host(tmpNMat); +#else + /*#ifdef MKL + CalMMSECriterionMKL(refMat->matElems, hypMat->matElems, segLen); + #else + CalMMSECriterionCPU(refMat->matElems, hypMat->matElems, segLen); + #endif*/ + CalMMSECriterionCPU(refMat->matElems, hypMat->matElems, segLen); +#endif + return tmpNMat->matElems[0] / refMat->colNum; +} + +static inline void AddNSegmentTargetPenCPU(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg) { + int i, j; + + for (i = 0; i < row; ++i) { + for (j = 0; j < col; ++j) { + dstSeg[i * col + j] = srcSeg[i * col + j] + penSeg[j]; + } + } +} + +#ifdef MKL +static inline void AddNSegmentTargetPenMKL(NFloat *srcSeg, NFloat *penSeg, int row, int col, NFloat *dstSeg) { + int i; + + for (i = 0; i < row; ++i) { +#ifdef DOUBLEANN + vdAdd(col, srcSeg + i * col, penSeg, dstSeg + i * col); +#else + vsAdd(col, srcSeg + i * col, penSeg, dstSeg + i * col); +#endif + } +} +#endif + +void AddNVectorTargetPen(NMatrix *srcMat, NVector *penVec, int nrows, NMatrix *dstMat) { + + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->colNum == penVec->vecLen && dstMat->colNum == penVec->vecLen)) + HError(5221, "AddNVectorTargetPen: Column number should equal to the vector length"); + if (!(nrows <= srcMat->rowNum && nrows <= dstMat->rowNum)) + HError(5221, "AddNVectorTargetPen: Row number out of range"); + } +#ifdef CUDA + AddNSegmentTargetPenCUDA(srcMat->devElems, penVec->devElems, nrows, penVec->vecLen, dstMat->devElems); +#else + #ifdef MKL + AddNSegmentTargetPenMKL(srcMat->matElems, penVec->vecElems, nrows, penVec->vecLen, dstMat->matElems); + #else + AddNSegmentTargetPenCPU(srcMat->matElems, penVec->vecElems, nrows, penVec->vecLen, dstMat->matElems); + #endif +#endif +} + +static inline void ShiftNSegmentValsCPU(NFloat *srcSeg, int segLen, NFloat shiftVal, NFloat *dstSeg) { + int i; + + for (i = 0; i < segLen; ++i) { + dstSeg[i] = srcSeg[i] + shiftVal; + } +} + +/* cz277 - semi */ +/* */ +void ShiftNMatrixVals(NMatrix *srcMat, int row, int col, NFloat shiftVal, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum >= row && dstMat->rowNum >= row)) + HError(5221, "ShiftNMatrixVals: Incompatible matrix row number"); + if (!(srcMat->colNum >= col && dstMat->colNum >= col)) + HError(5221, "ShiftNMatrixVals: Incompatible matrix column number"); + } +#ifdef CUDA + ShiftNSegmentValsCUDA(srcMat->devElems, row * col, shiftVal, dstMat->devElems); +#else + ShiftNSegmentValsCPU(srcMat->matElems, row * col, shiftVal, dstMat->matElems); +#endif +} + +/* cz277 - semi */ +/* */ +void ShiftNVectorVals(NVector *srcVec, int len, NFloat shiftVal, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(srcVec->vecLen >= len && dstVec->vecLen >= len)) + HError(5221, "ShiftNVectorVals: Incompatible vector lengths"); + } +#ifdef CUDA + ShiftNSegmentValsCUDA(srcVec->devElems, len, shiftVal, dstVec->devElems); +#else + ShiftNSegmentValsCPU(srcVec->vecElems, len, shiftVal, dstVec->vecElems); +#endif +} + +static void CopyPartialNSegmentCPU(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + int i; + + for (i = 0; i < minRow; ++i) { + memcpy(dstPtr + i * dstCol, srcPtr + i * srcCol, sizeof(NFloat) * minCol); + } +} + +void CopyPartialNSegment(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol) { + /* safety check */ + if (trace & T_DIM) { + if (!(minCol > srcCol || minCol > dstCol)) + HError(5221, "CopyPartialNSegment: minCol should be smaller than srcCol and dstCol"); + } + +#ifdef CUDA + CopyPartialNSegmentCUDA(minRow, minCol, srcPtr, srcCol, dstPtr, dstCol); +#else + CopyPartialNSegmentCPU(minRow, minCol, srcPtr, srcCol, dstPtr, dstCol); +#endif +} + +/* cz277 - gradlim */ +static void ClipNSegmentValsCPU(NFloat* srcSeg, int len, NFloat upperLim, NFloat lowerLim, NFloat *dstSeg) { + int i; + + for (i = 0; i < len; ++i) { + if (srcSeg[i] > upperLim) + dstSeg[i] = upperLim; + else if (srcSeg[i] < lowerLim) + dstSeg[i] = lowerLim; + else if (srcSeg != dstSeg) + dstSeg[i] = srcSeg[i]; + } +} + +/* cz277 - gradlim */ +void ClipNMatrixVals(NMatrix* srcMat, int row, int col, NFloat upperLim, NFloat lowerLim, NMatrix *dstMat) { + /* safety check */ + if (trace & T_DIM) { + if (!(col > 0 && col <= srcMat->colNum && col <= dstMat->colNum)) + HError(5221, "ClipNMatrixVals: Input matrix column number out of range"); + if (!(row > 0 && row <= srcMat->rowNum && row <= dstMat->rowNum)) + HError(5221, "ClipNMatrixVals: Input matrix row number out of range"); + if (!(upperLim >= lowerLim)) + HError(5225, "ClipNMatrixVals: Invalid input value limits"); + } +#ifdef CUDA + ClipNSegmentValsCUDA(srcMat->devElems, row * col, upperLim, lowerLim, dstMat->devElems); +#else + ClipNSegmentValsCPU(srcMat->matElems, row * col, upperLim, lowerLim, dstMat->matElems); +#endif + +} + +/* cz277 - gradlim */ +void ClipNVectorVals(NVector* srcVec, int len, NFloat upperLim, NFloat lowerLim, NVector *dstVec) { + /* safety check */ + if (trace & T_DIM) { + if (!(len > 0 && len <= srcVec->vecLen && len <= dstVec->vecLen)) + HError(5221, "ClipNVectorVals: Input vector length out of range"); + if (!(upperLim >= lowerLim)) + HError(5225, "ClipNVectorVals: Invalid input value limits"); + } +#ifdef CUDA + ClipNSegmentValsCUDA(srcVec->devElems, len, upperLim, lowerLim, dstVec->devElems); +#else + ClipNSegmentValsCPU(srcVec->vecElems, len, upperLim, lowerLim, dstVec->vecElems); +#endif + +} + +/* cz277 - max norm */ +static void CalNMatrixL2NormByRowCPU(NFloat *matPtr, int row, int col, NFloat *normPtr) { + int i, j; + + for (i = 0; i < row; ++i) { + normPtr[i] = 0.0; + for (j = 0; j < col; ++j) + normPtr[i] += pow(matPtr[i * col + j], 2.0); + normPtr[i] = sqrt(normPtr[i]); + } +} + +/* cz277 - max norm */ +void CalNMatrixL2NormByRow(NMatrix *srcMat, NVector *normVec) { + + /* safety check */ + if (trace & T_DIM) { + if (!(srcMat->rowNum <= normVec->vecLen)) + HError(5221, "CalNMatrixL2NormByRow: Norm vector dimension too small"); + } +#ifdef CUDA + CalNMatrixL2NormByRowCUDA(srcMat->devElems, srcMat->rowNum, srcMat->colNum, normVec->devElems); +#else + CalNMatrixL2NormByRowCPU(srcMat->matElems, srcMat->rowNum, srcMat->colNum, normVec->vecElems); +#endif +} + +void CalNVectorL2Norm(NVector *srcVec, NFloat *normVal) { + +#ifdef CUDA + NVector *tmpNVec = GetTmpNVec(); + CalNMatrixL2NormByRowCUDA(srcVec->devElems, 1, srcVec->vecLen, tmpNVec->devElems); + SyncNVectorDev2Host(tmpNVec); + normVal[0] = tmpNVec->vecElems[0]; +#else + CalNMatrixL2NormByRowCPU(srcVec->vecElems, 1, srcVec->vecLen, normVal); +#endif +} + +static void DivideNMatrixByRowCPU(NFloat *srcPtr, int row, int col, NFloat *normPtr, NFloat *dstPtr) { + int i, j; + + for (i = 0; i < row; ++i) + for (j = 0; j < col; ++j) + dstPtr[i * col + j] = srcPtr[i * col + j] / normPtr[i]; +} + +void DivideNMatrixByRow(NMatrix *srcMat, NVector *normVec, NMatrix *dstMat) { + if (trace & T_DIM) { + if (!(srcMat->rowNum <= normVec->vecLen)) + HError(5221, "DivideNMatrixByRow: Norm vector dimension too small"); + if (!(srcMat->rowNum == dstMat->rowNum && srcMat->colNum >= dstMat->colNum)) + HError(5221, "DivideNMatrixByRow: Inconsistent matrix dimensions"); + } +#ifdef CUDA + DivideNMatrixByRowCUDA(srcMat->devElems, srcMat->rowNum, srcMat->colNum, normVec->devElems, dstMat->devElems); +#else + DivideNMatrixByRowCPU(srcMat->matElems, srcMat->rowNum, srcMat->colNum, normVec->vecElems, dstMat->matElems); +#endif + +} + +/* cz277 - xform */ +int ClipInt(int min, int max, int val) { + if (val < min) + return min; + else if (val > max) + return max; + else + return val; } /* ------------------------- End of HMath.c ------------------------- */ diff --git a/HTKLib/HMath.h b/HTKLib/HMath.h old mode 100644 new mode 100755 index 9daea9c..d9facf0 --- a/HTKLib/HMath.h +++ b/HTKLib/HMath.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMath.h: Math Support */ +/* File: HMath.h Math Support */ /* ----------------------------------------------------------- */ -/* !HVER!HMath: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HMath: 3.5.0 [CUED 12/10/15] */ #ifndef _HMATH_H_ #define _HMATH_H_ @@ -43,6 +59,30 @@ extern "C" { #define LSMALL (-0.5E10) /* log values < LSMALL are set to LZERO */ #define MINEARG (-708.3) /* lowest exp() arg = log(MINLARG) */ #define MINLARG 2.45E-308 /* lowest log() arg = exp(MINEARG) */ +/* cz277 - ANN */ +/*#define MAXFLTEXPE (88.722839052)*/ /* FLT_MAX, 3.402823466e+38 */ +/*#define MINFLTEXPE (-87.3365447504)*/ /* FLT_MIN, 1.175494351e–38 */ +/*#define MAXDBLEXPE (709.78271289338399678)*/ /* DBL_MAX, 1.7976931348623158e+308 */ +/*#define MINDBLEXPE (-708.39641853226410622)*/ /* DBL_MIN, 2.2250738585072014e–308 */ +#define MAXFLTEXPE (87.3365447504) +#define MINFLTEXPE (-87.3365447504) +#define MAXDBLEXPE (708.39641853226410622) +#define MINDBLEXPE (-708.39641853226410622) + +#define RELUNEGSCALE 0.01 +/*#define RELUNEGSCALE 0.0*/ +#define PLRELUNEGSCALE 0.25 /* cz277 - laf */ + +#ifdef DOUBLEANN +#define CHKNFLTEXPE(x) if((x)MAXDBLEXPE) (x)=MAXDBLEXPE; +#else +#define CHKNFLTEXPE(x) if((x)MAXFLTEXPE) (x)=MAXFLTEXPE; +#endif + +/* cz277 - 1004 */ +/*#define MAX(a, b) (a > b? a: b) +#define MIN(a, b) (a < b? a: b)*/ + /* NOTE: On some machines it may be necessary to reduce the values of MINEARG and MINLARG @@ -247,6 +287,124 @@ float GaussDeviate(float mu, float sigma); Return a random number with a N(mu,sigma) distribution */ +/* from xl207, cz277 - gau */ +float GaussInv(float p); +float CumGauss(float x, float mean, float var); + +/* cz277 - ANN */ +/* --------------------- ANN related math kernels --------------------- */ + +/* cz277 - 151020 */ +#ifdef MKL +void StartMKL(void); +#endif + +void RegisterTmpNMat(int nrows, int ncols); +void CreateTmpNMat(MemHeap *heap); +NMatrix *GetTmpNMat(void); +NVector *GetTmpNVec(void); +void FreeTmpNMat(MemHeap *heap); + +void CopyNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff); +void CopyNVectorSegment(NVector *srcVec, int srcOff, int segLen, NVector *dstVec, int dstOff); +void AddNSegment(NMatrix *srcMat, int srcOff, int segLen, NMatrix *dstMat, int dstOff); +void AddNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void AddNVector(NVector *srcVec, int len, NVector *dstVec); +void DupNVector(NVector *srcVec, NMatrix *dstMat, int times); +void SubNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat); +void MulNMatrix(NMatrix *lhMat, NMatrix *rhMat, int row, int col, NMatrix *resMat); +void MulNVector(NVector *lhVec, NVector *rhVec, int len, NVector *resVec); +void ScaleNMatrix(NFloat scale, int row, int col, NMatrix *valMat); +void ScaleNVector(NFloat scale, int len, NVector *valVec); +void ScaledSelfAddNVector(NVector *rhVec, int len, NFloat scale, NVector *lhVec); +void ScaledSelfAddNMatrix(NMatrix *rhMat, int row, int col, NFloat scale, NMatrix *lhMat); +/*void SumNMatrixByCol(NMatrix *srcMat, int row, int col, NFloat alpha, NFloat beta, NVector *dstVec);*/ +void SumNMatrixByCol(NMatrix *srcMat, int row, int col, Boolean accFlag, NVector *dstVec); +void SquaredNMatrix(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void SquaredNVector(NVector *srcVec, int len, NVector *dstVec); +void CompAdaGradNVector(NFloat eta, int K, NVector *ssgVec, NVector *nlrVec); +void CompAdaGradNMatrix(NFloat eta, int K, NMatrix *ssgMat, NMatrix *nlrMat); +/* cz277 - laf */ +void ApplyAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat); +void ApplyDAffineAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NVector *shiftVec, NMatrix *dstMat); +void ApplyTrAffineAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *scaleVec, NVector *shiftVec, Boolean accFlag, NVector *dScaleVec, NVector *dShiftVec); +void AccMeanNVector(NMatrix *valMat, int row, int col, NFloat tSamp, NVector *meanVec); +void AccVarianceNVector(NMatrix *srcMat, int row, int col, NFloat tSamp, NVector *meanVec, NVector *varVec); +void ApplyLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat); +void ApplyDLHUCSigmoidAct(NMatrix *srcMat, int row, int col, NVector *roleVec, NMatrix *dstMat); +void ApplyTrLHUCSigmoidAct(NMatrix *errMat, NMatrix *actMat, int row, int col, NVector *roleVec, Boolean accFlag, NVector *dRoleVec); +void ApplyPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat); +void ApplyDPReLUAct(NMatrix *srcMat, int row, int col, NVector *scaleVec, NMatrix *dstMat); +void ApplyTrPReLUAct(NMatrix *errMat, NMatrix *srcMat, int row, int col, NVector *scaleVec, Boolean accFlag, NVector *dScaleVec); +void ApplyParmReLUAct(NMatrix *srcMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat); +void ApplyDParmReLUAct(NMatrix *inpMat, int row, int col, NVector *posVec, NVector *negVec, NMatrix *dstMat); +void ApplyTrParmReLUAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, Boolean accFlag, NVector *dPosVec, NVector *dNegVec); +void ApplyPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat); +void ApplyDPSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NMatrix *dstMat); +void ApplyTrPSigmoidAct(NMatrix *errMat, NMatrix *srcMat, NVector *etaVec, int row, int col, Boolean accFlag, NVector *dEtaVec); +void ApplyParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat); +void ApplyDParmSigmoidAct(NMatrix *srcMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, NMatrix *dstMat); +void ApplyTrParmSigmoidAct(NMatrix *errMat, NMatrix *inpMat, int row, int col, NVector *etaVec, NVector *gammaVec, NVector *thetaVec, Boolean accFlag, NVector *dEtaVec, NVector *dGammaVec, NVector *dThetaVec); + + +void ApplyHermiteAct(NMatrix *srcMat, int row, int col, NVector *parmVec, NMatrix*dstMat); +void ApplyReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat); +void ApplyDReLUAct(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat); +void ApplyDLinearAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDSigmoidAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDTanHAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySoftmaxAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDSoftmaxAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyDSoftReLAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplySoftSignAct(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void ApplyLogTrans(NMatrix *srcMat, int row, int col, NMatrix *dstMat); +void FindMaxElement(NMatrix *srcMat, int row, int col, IntVec resVec); +void HNBlasNNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C); +void HNBlasNTgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C); +void HNBlasTNgemm(int m, int n, int k, NFloat alpha, NMatrix *A, NMatrix *B, NFloat beta, NMatrix *C); +/*void SetNSegment(NFloat val, NFloat *segPtr, int segLen);*/ +void RandNSegmentGaussian(NFloat mu, NFloat sigma, int segLen, NFloat *segPtr); /* cz277 - laf */ +void RandNSegmentUniform(NFloat lower, NFloat upper, int segLen, NFloat *segPtr); +/* cz277 - 0 mask */ +void RandMaskNSegment(NFloat prob, NFloat mask, int segLen, NFloat *segPtr); + +NFloat CalXENTCriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum); +NFloat CalMMSECriterion(NMatrix *refMat, NMatrix *hypMat, int rowNum); +void AddNVectorTargetPen(NMatrix *srcMat, NVector *penVec, int nrows, NMatrix *dstMat); +/* cz277 - semi */ +void ShiftNMatrixVals(NMatrix *srcMat, int row, int col, NFloat shiftVal, NMatrix *dstMat); +void ShiftNVectorVals(NVector *srcVec, int len, NFloat shiftVal, NVector *dstVec); + +void SetNSegmentCPU(NFloat val, NFloat *segPtr, int segLen); +void SetNVector(NFloat val, NVector *vec); +void SetNMatrix(NFloat val, NMatrix *mat, int nrows); +void SetNMatrixSegment(NFloat val, NMatrix *mat, int off, int len); +void SetNVectorSegment(NFloat val, NVector *vec, int off, int len); +void ClearNVector(NVector *vec); +void ClearNMatrix(NMatrix *mat, int nrows); +void ClearNMatrixSegment(NMatrix *mat, int off, int len); +void ClearNVectorSegment(NVector *vec, int off, int len); +void CopyPartialNSegment(int minRow, int minCol, NFloat *srcPtr, int srcCol, NFloat *dstPtr, int dstCol); +void NanySVD(NMatrix *A, NMatrix *U, NVector *d, NMatrix *Vt); +/* cz277 - l2 fix */ +void AddScaledNMatrix(NMatrix *srcMat, int row, int col, NFloat scale, NMatrix *dstMat); +void AddScaledNVector(NVector *srcVec, int len, NFloat scale, NVector *dstVec); + +/* cz277 - gradlim */ +void ClipNMatrixVals(NMatrix* srcMat, int row, int col, NFloat upperLim, NFloat lowerLim, NMatrix *dstMat); +void ClipNVectorVals(NVector* srcVec, int len, NFloat upperLim, NFloat lowerLim, NVector *dstVec); + +/* cz277 - max norm */ +void CalNMatrixL2NormByRow(NMatrix *srcMat, NVector *normVec); +void CalNVectorL2Norm(NVector *srcVec, NFloat *normVal); +void DivideNMatrixByRow(NMatrix *srcMat, NVector *normVec, NMatrix *dstMat); + +/* cz277 - xform */ +int ClipInt(int min, int max, int val); + #ifdef __cplusplus } #endif @@ -254,3 +412,4 @@ float GaussDeviate(float mu, float sigma); #endif /* _HMATH_H_ */ /* ------------------------- End of HMath.h -------------------------- */ + diff --git a/HTKLib/HMem.c b/HTKLib/HMem.c old mode 100644 new mode 100755 index ac70525..e7e5d2b --- a/HTKLib/HMem.c +++ b/HTKLib/HMem.c @@ -3,32 +3,59 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMem.c: Memory Management Module */ +/* File: HMem.c Memory management module */ /* ----------------------------------------------------------- */ -char *hmem_version = "!HVER!HMem: 3.4.1 [CUED 12/03/09]"; -char *hmem_vc_id = "$Id: HMem.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hmem_version = "!HVER!HMem: 3.5.0 [CUED 12/10/15]"; +char *hmem_vc_id = "$Id: HMem.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" +/* cz277 - ANN */ +#include "config.h" +#include "HMath.h" int debug_level = 0; /* For esps linking */ +/* cz277 - ANN */ +#ifdef MKL +static int MKL_alignment = 64; +#endif + /* --------------------------- Trace Flags ------------------------ */ +#define MAX(a, b) ((a)>(b)?(a):(b)) +#define MIN(a, b) ((a)<(b)?(a):(b)) + static int trace = 0; #define T_TOP 0001 /* Top Level Trace */ @@ -106,11 +133,11 @@ static BlockP AllocBlock(size_t size, size_t num, HeapType type) int i; if (trace&T_TOP) - printf("HMem: AllocBlock of %u bytes\n",num*size); + printf("HMem: AllocBlock of %lu bytes\n",num*size); if ((p = (BlockP) malloc(sizeof(Block))) == NULL) HError(5105,"AllocBlock: Cannot allocate Block"); if ((p->data = (void *)malloc(size*num)) == NULL) - HError(5105,"AllocBlock: Cannot allocate block data of %u bytes",size*num); + HError(5105,"AllocBlock: Cannot allocate block data of %lu bytes",size*num); switch (type){ case MHEAP: if ((p->used = (ByteP)malloc((num+7)/8)) == NULL) @@ -193,7 +220,7 @@ void InitMem(void) Register(hmem_version, hmem_vc_id); CreateHeap(&gstack, "Global Stack", MSTAK, 1, 0.0, 100000, ULONG_MAX ); /* #### should be max size_t */ - CreateHeap(&gcheap, "Global C Heap", CHEAP, 1, 0.0, 0, 0 ); + CreateHeap(&gcheap, "Global C Heap", CHEAP, 1, 0.0, 100000, ULONG_MAX); numParm = GetConfig("HMEM", TRUE, cParm, MAXGLOBS); if (numParm>0){ if (GetConfInt(cParm,numParm,"TRACE",&i)) trace = i; @@ -212,9 +239,9 @@ void CreateHeap(MemHeap *x, char *name, HeapType type, size_t elemSize, if (numElem>maxElem) HError(5170,"CreateHeap: init num elem > max elem in heap %s",name); if (elemSize <= 0) - HError(5170,"CreateHeap: elem size = %u in heap %s",elemSize,name); + HError(5170,"CreateHeap: elem size = %lu in heap %s",elemSize,name); if (type == MSTAK && elemSize !=1) - HError(5170,"CreateHeap: elem size = %u in MSTAK heap %s",elemSize,name); + HError(5170,"CreateHeap: elem size = %lu in MSTAK heap %s",elemSize,name); x->name = (char *)malloc(strlen(name)+1); strcpy(x->name,name); /* cant use a MemHeap for this!! */ x->type = type; x->growf = growf; @@ -231,7 +258,7 @@ void CreateHeap(MemHeap *x, char *name, HeapType type, size_t elemSize, case MSTAK: c='S'; break; case CHEAP: c='C'; break; } - printf("HMem: Create Heap %s[%c] %u %.1f %u %u\n",name,c, + printf("HMem: Create Heap %s[%c] %lu %.1f %lu %lu\n",name,c, elemSize, growf, numElem, maxElem); } } @@ -319,7 +346,7 @@ void *New(MemHeap *x,size_t size) determined by the curElem, the grow factor growf and the upper limit maxElem. */ if (size != 0 && size != x->elemSize) - HError(5173,"New: MHEAP req for %u size elem from heap %s size %u", + HError(5173,"New: MHEAP req for %lu size elem from heap %s size %lu", size,x->name,x->elemSize); noSpace = x->totUsed == x->totAlloc; @@ -339,7 +366,7 @@ void *New(MemHeap *x,size_t size) } x->totUsed++; if (trace&T_MHP) - printf("HMem: %s[M] %u bytes at %p allocated\n",x->name,size,q); + printf("HMem: %s[M] %lu bytes at %p allocated\n",x->name,size,q); return q; case CHEAP: chdr = MRound(sizeof(size_t)); @@ -350,7 +377,7 @@ void *New(MemHeap *x,size_t size) x->totAlloc += size+chdr; ip = (size_t *)q; *ip = size; if (trace&T_CHP) - printf("HMem: %s[C] %u+%u bytes at %p allocated\n",x->name,chdr,size,q); + printf("HMem: %s[C] %lu+%lu bytes at %p allocated\n",x->name,chdr,size,q); return (Ptr)((ByteP)q+chdr); case MSTAK: /* set required size - must alloc on double boundaries */ @@ -374,7 +401,7 @@ void *New(MemHeap *x,size_t size) } x->totUsed += size; if (trace&T_STK) - printf("HMem: %s[S] %u bytes at %p allocated\n",x->name,size,q); + printf("HMem: %s[S] %lu bytes at %p allocated\n",x->name,size,q); if (x->protectStk) { pp = (Ptr *)((long)q + size - sizeof(Ptr)); /* #### fix this! */ *pp = q; @@ -437,7 +464,7 @@ void Dispose(MemHeap *x, void *p) free(cur->data); free(cur->used); free(cur); } if (trace&T_MHP) - printf("HMem: %s[M] %u bytes at %p de-allocated\n",x->name,size,p); + printf("HMem: %s[M] %lu bytes at %p de-allocated\n",x->name,size,p); return; case MSTAK: /* search for item to dispose */ @@ -480,7 +507,7 @@ void Dispose(MemHeap *x, void *p) cur->firstFree -= size; cur->numFree += size; x->totUsed -= size; if (trace&T_STK) - printf("HMem: %s[S] %u bytes at %p de-allocated\n",x->name,size,p); + printf("HMem: %s[S] %lu bytes at %p de-allocated\n",x->name,size,p); return; case CHEAP: chdr = MRound(sizeof(size_t)); @@ -488,7 +515,7 @@ void Dispose(MemHeap *x, void *p) ip = (size_t *)bp; x->totAlloc -= (*ip + chdr); x->totUsed -= *ip; if (trace&T_CHP) - printf("HMem: %s[C] %u+%u bytes at %p de-allocated\n", + printf("HMem: %s[C] %lu+%lu bytes at %p de-allocated\n", x->name,chdr,*ip,bp); free(bp); return; @@ -508,7 +535,7 @@ void PrintHeapStats(MemHeap *x) case CHEAP: tc = 'C'; break; } for (p=x->heap; p != NULL; p = p->next) ++nBlocks; - printf("nblk=%3d, siz=%6u*%-3u, used=%9u, alloc=%9u : %s[%c]\n", + printf("nblk=%3d, siz=%6lu*%-3lu, used=%9lu, alloc=%9lu : %s[%c]\n", nBlocks, x->curElem, x->elemSize, x->totUsed, x->totAlloc*x->elemSize,x->name,tc) ; fflush(stdout); @@ -669,6 +696,21 @@ void FreeSVector(MemHeap *x, Vector v) Dispose(x,(Ptr *)(v)-2); } +/* cz277 - ANN */ +/* compare different IntVec */ +Boolean CmpIntVec(IntVec lhVec, IntVec rhVec) +{ + int i; + + if (lhVec != rhVec || lhVec == NULL || IntVecSize(lhVec) != IntVecSize(rhVec)) + return FALSE; + for (i = 1; i < lhVec[0]; ++i) + if (lhVec[i] != rhVec[i]) + return FALSE; + + return TRUE; +} + /* EXPORT->MatrixElemSize: size of matrices for creating heaps */ size_t MatrixElemSize(int nrows,int ncols) { @@ -989,4 +1031,552 @@ char *CopyString(MemHeap *x, char *s) return t; } +/* ------------- ANN Vector/Matrix Memory Management -------------- */ + +size_t CVectorElemSize(int nlen) +{ + return nlen * sizeof(float); +} + +size_t CMatrixElemSize(int nrows, int ncols) +{ + return nrows * ncols * sizeof(float); +} + +size_t CDVectorElemSize(int nlen) +{ + return nlen * sizeof(double); +} + +size_t CDMatrixElemSize(int nrows, int ncols) +{ + return nrows * ncols * sizeof(double); +} + +size_t NVectorElemSize(int nlen) +{ + return nlen * sizeof(NFloat); +} + +size_t NMatrixElemSize(int nrows, int ncols) +{ + return nrows * ncols * sizeof(NFloat); +} + +CVector *CreateCVector(MemHeap *x, int nlen) +{ + CVector *v; + v = (CVector *) New(x, sizeof(CVector)); + v->vecLen = nlen; + v->vecElems = (float *) New(x, CVectorElemSize(nlen)); + v->nUse = 0; + return v; +} + +CMatrix *CreateCMatrix(MemHeap *x, int nrows, int ncols) +{ + CMatrix *m; + m = (CMatrix *) New(x, sizeof(CMatrix)); + m->rowNum = nrows; + m->colNum = ncols; + m->matElems = (float *) New(x, CMatrixElemSize(nrows, ncols)); + m->nUse = 0; + return m; +} + +CDVector *CreateCDVector(MemHeap *x, int nlen) +{ + CDVector *v; + v = (CDVector *) New(x, sizeof(CDVector)); + v->vecLen = nlen; + v->vecElems = (double *) New(x, CDVectorElemSize(nlen)); + v->nUse = 0; + return v; +} + +CDMatrix *CreateCDMatrix(MemHeap *x, int nrows, int ncols) +{ + CDMatrix *m; + m = (CDMatrix *) New(x, sizeof(CDMatrix)); + m->rowNum = nrows; + m->colNum = ncols; + m->matElems = (double *) New(x, CDMatrixElemSize(nrows, ncols)); + m->nUse = 0; + return m; +} + +/* cz277 - 150824 */ +NVector *CreateHostNVector(MemHeap *x, int nlen) +{ + NVector *v; + + v = (NVector *) New(x, sizeof(NVector)); + memset(v, 0, sizeof(NVector)); + + v->vecLen = nlen; +#ifdef MKL + v->vecElems = (NFloat *) mkl_malloc(NVectorElemSize(nlen), MKL_alignment); +#else + v->vecElems = (NFloat *) New(x, NVectorElemSize(nlen)); +#endif + /*v->hook = &v->acc;*/ + + return v; +} + +/* cz277 - 150824 */ +NVector *CreateNVector(MemHeap *x, int nlen) +{ + NVector *v; + + v = CreateHostNVector(x, nlen); +#ifdef CUDA + DevNew(&v->devElems, NVectorElemSize(nlen)); +#endif + + return v; +} + +NMatrix *CreateHostNMatrix(MemHeap *x, int nrows, int ncols) +{ + NMatrix *m; + + m = (NMatrix *) New(x, sizeof(NMatrix)); + memset(m, 0, sizeof(NMatrix)); + + m->rowNum = nrows; + m->colNum = ncols; +#ifdef MKL + m->matElems = (NFloat *) mkl_malloc(NMatrixElemSize(nrows, ncols), MKL_alignment); +#else + m->matElems = (NFloat *) New(x, NMatrixElemSize(nrows, ncols)); +#endif + /*m->hook = &m->acc;*/ + + return m; +} + +NMatrix *CreateNMatrix(MemHeap *x, int nrows, int ncols) +{ + NMatrix *m; + + m = CreateHostNMatrix(x, nrows, ncols); +#ifdef CUDA + DevNew(&m->devElems, NMatrixElemSize(nrows, ncols)); +#endif + + return m; +} + +size_t CVectorSize(CVector *v) +{ + return v->vecLen; +} + +size_t NumCRows(CMatrix *m) +{ + return m->rowNum; +} + +size_t NumCCols(CMatrix *m) +{ + return m->colNum; +} + +size_t CDVectorSize(CDVector *v) +{ + return v->vecLen; +} + +size_t NumCDRows(CDMatrix *m) +{ + return m->rowNum; +} + +size_t NumCDCols(CDMatrix *m) +{ + return m->colNum; +} + +size_t NVectorSize(NVector *v) +{ + return v->vecLen; +} + +size_t NumNRows(NMatrix *m) +{ + return m->rowNum; +} + +size_t NumNCols(NMatrix *m) +{ + return m->colNum; +} + +void FreeCVector(MemHeap *x, CVector *v) +{ + if (x->type == CHEAP) { + Dispose(x, v->vecElems); + Dispose(x, v); + } +} + +void FreeCMatrix(MemHeap *x, CMatrix *m) +{ + if (x->type == CHEAP) { + Dispose(x, m->matElems); + Dispose(x, m); + } +} + +void FreeCDVector(MemHeap *x, CDVector *v) +{ + if (x->type == CHEAP) { + Dispose(x, v->vecElems); + Dispose(x, v); + } +} + +void FreeCDMatrix(MemHeap *x, CDMatrix *m) +{ + if (x->type == CHEAP) { + Dispose(x, m->matElems); + Dispose(x, m); + } +} + +void FreeNVector(MemHeap *x, NVector *v) +{ +#ifdef CUDA + if (v->devElems != NULL) + DevDispose(v->devElems, NVectorElemSize(v->vecLen)); + if (x->type == CHEAP) + Dispose(x, v->vecElems); +#else + #ifdef MKL + mkl_free(v->vecElems); + #else + if (x->type == CHEAP) + Dispose(x, v->vecElems); + #endif +#endif + if (x->type == CHEAP) + Dispose(x, v); +} + +void FreeNMatrix(MemHeap *x, NMatrix *m) +{ +#ifdef CUDA + if (m->devElems != NULL) + DevDispose(m->devElems, NMatrixElemSize(m->rowNum, m->colNum)); + if (x->type == CHEAP) + Dispose(x, m->matElems); +#else + #ifdef MKL + mkl_free(m->matElems); + #else + if (x->type == CHEAP) + Dispose(x, m->matElems); + #endif +#endif + if (x->type == CHEAP) + Dispose(x, m); +} + +#ifdef CUDA +void SyncNVectorDev2Host(NVector *v) +{ + if (v->devElems == NULL) + HError(5190, "SyncNVectorDev2Host: Host only NVector cannot be synchronised"); + SyncDev2Host(v->devElems, v->vecElems, NVectorElemSize(v->vecLen)); +} + +void SyncNVectorHost2Dev(NVector *v) +{ + if (v->devElems == NULL) + HError(5190, "SyncNVectorHost2Dev: Host only NVector cannot be synchronised"); + SyncHost2Dev(v->vecElems, v->devElems, NVectorElemSize(v->vecLen)); +} + +void SyncNMatrixDev2Host(NMatrix *m) +{ + if (m->devElems == NULL) + HError(5190, "SyncNMatrixDev2Host: Host only NMatrix cannot be synchronised"); + SyncDev2Host(m->devElems, m->matElems, NMatrixElemSize(m->rowNum, m->colNum)); +} + +void SyncNMatrixHost2Dev(NMatrix *m) +{ + if (m->devElems == NULL) + HError(5190, "SyncNMatrixHost2Dev: Host only NMatrix cannot be synchronised"); + SyncHost2Dev(m->matElems, m->devElems, NMatrixElemSize(m->rowNum, m->colNum)); +} +#endif + +void CopyVector2NVector(Vector v1, NVector *v2) +{ + int i, size; + + size = VectorSize(v1); + if (v2->vecLen != size) + HError(5176, "CopyVector2NVector: Inconsistent vector lengths"); + + for (i = 0; i < size; ++i) + v2->vecElems[i] = v1[i + 1]; +#ifdef CUDA + if (v2->devElems != NULL) + SyncNVectorHost2Dev(v2); +#endif +} + + +void CopyNVector2Vector(NVector *v1, Vector v2) +{ + int i, size; + + size = VectorSize(v2); + if (v1->vecLen != size) + HError(5176, "CopyNVector2Vector: Inconsistent vector lengths"); + +#ifdef CUDA + if (v1->devElems != NULL) + SyncNVectorDev2Host(v1); +#endif + for (i = 0; i < size; ++i) + v2[i + 1] = v1->vecElems[i]; +} + + +void CopyMatrix2NMatrix(Matrix m1, NMatrix *m2) +{ + int i, j, nrows, ncols; + + nrows = NumRows(m1); + ncols = NumCols(m1); + if (nrows != m2->rowNum || ncols != m2->colNum) + HError(5176, "CopyMatrix2NMatrix: Inconsistent matrix dimensions"); + + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2->matElems[i * ncols + j] = m1[i + 1][j + 1]; +#ifdef CUDA + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); +#endif +} + + +void CopyNMatrix2Matrix(NMatrix *m1, Matrix m2) +{ + int i, j, nrows, ncols; + + nrows = NumRows(m2); + ncols = NumCols(m2); + if (nrows != m1->rowNum || ncols != m1->colNum) + HError(5176, "CopyNMatrix2Matrix: Inconsistent matrix dimensions"); + +#ifdef CUDA + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); +#endif + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2[i + 1][j + 1] = m1->matElems[i * ncols + j]; +} + + +void CopyNMatrix2TrMatrix(NMatrix *m1, Matrix m2) { + int i, j, nrows, ncols; + + nrows = NumRows(m2); + ncols = NumCols(m2); + if (nrows != m1->colNum || ncols != m1->rowNum) + HError(5176, "CopyNMatrix2TrMatrix: Inconsistent matrix dimensions"); + +#ifdef CUDA + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); +#endif + for (i = 0; i < ncols; ++i) + for (j = 0; j < nrows; ++j) + m2[j + 1][i + 1] = m1->matElems[i * nrows + j]; +} + + +void CopyMatrix2TrNMatrix(Matrix m1, NMatrix *m2) { + int i, j, nrows, ncols; + + nrows = NumRows(m1); + ncols = NumCols(m1); + if (nrows != m2->colNum || ncols != m2->rowNum) + HError(5176, "CopyMatrix2TrNMatrix: Inconsistent matrix dimensions"); + + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2->matElems[j * nrows + i] = m1[i + 1][j + 1]; +#ifdef CUDA + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); +#endif +} + +/* cz277 - low rank */ +void CopyPartialDMatrix2NMatrix(DMatrix m1, NMatrix *m2) { + int i, j, nrows, ncols; + + nrows = MIN(NumDRows(m1), m2->rowNum); + ncols = MIN(NumDCols(m1), m2->colNum); + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2->matElems[i * m2->colNum + j] = (NFloat) m1[i + 1][j + 1]; +#ifdef CUDA + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); +#endif +} + + +/* cz277 - low rank */ +void CopyDMatrix2NMatrix(DMatrix m1, NMatrix *m2) { + int nrows, ncols; + + nrows = NumDRows(m1); + ncols = NumDCols(m1); + if (nrows != m2->rowNum || ncols != m2->colNum) + HError(5176, "CopyDMatrix2NMatrix: Inconsistent matrix dimensions"); + + CopyPartialDMatrix2NMatrix(m1, m2); +} + + +/* cz277 - low rank */ +void CopyNMatrix2DMatrix(NMatrix *m1, DMatrix m2) { + int i, j, nrows, ncols; + + nrows = NumDRows(m2); + ncols = NumDCols(m2); + if (nrows != m1->rowNum || ncols != m1->colNum) + HError(5176, "CopyNMatrix2DMatrix: Inconsistent matrix dimensions"); +#ifdef CUDA + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); +#endif + for (i = 0; i < nrows; ++i) + for (j = 0; j < ncols; ++j) + m2[i + 1][j + 1] = m1->matElems[i * m1->colNum + j]; +} + + +void CopyPartialNMatrix2NMatrix(NMatrix *m1, NMatrix *m2) +{ + int nrows, ncols; + + nrows = MIN(m1->rowNum, m2->rowNum); + ncols = MIN(m1->colNum, m2->colNum); +#ifdef CUDA + if (m1->devElems != NULL && m2->devElems != NULL) + CopyPartialNSegment(nrows, ncols, m1->devElems, m1->colNum, m2->devElems, m2->colNum); + else { + if (m1->devElems != NULL) + SyncNMatrixDev2Host(m1); + CopyPartialNSegment(nrows, ncols, m1->matElems, m1->colNum, m2->matElems, m2->colNum); + if (m2->devElems != NULL) + SyncNMatrixHost2Dev(m2); + } +#else + CopyPartialNSegment(nrows, ncols, m1->matElems, m1->colNum, m2->matElems, m2->colNum); +#endif +} + +void CopyNMatrix2NMatrix(NMatrix *m1, NMatrix *m2) { + + if (m1->rowNum != m2->rowNum || m1->colNum != m2->colNum) + HError(5176, "CopyNMatrix2NMatrix: Inconsistent matrix dimensions"); + CopyPartialNMatrix2NMatrix(m1, m2); +} + +void CopyPartialNVector2NVector(NVector *v1, NVector *v2) +{ + int len; + + len = MIN(v1->vecLen, v2->vecLen); +#ifdef CUDA + if (v1->devElems != NULL && v2->devElems != NULL) + CopyPartialNSegment(1, len, v1->devElems, v1->vecLen, v2->devElems, v2->vecLen); + else { + if (v1->devElems != NULL) + SyncNVectorDev2Host(v1); + CopyPartialNSegment(1, len, v1->vecElems, v1->vecLen, v2->vecElems, v2->vecLen); + if (v2->devElems != NULL) + SyncNVectorHost2Dev(v2); + } +#else + CopyPartialNSegment(1, len, v1->vecElems, v1->vecLen, v2->vecElems, v2->vecLen); +#endif +} + +void CopyNVector2NVector(NVector *v1, NVector *v2) { + + if (v1->vecLen != v2->vecLen) + HError(5176, "CopyNVector2NVector: Inconsistent vector lengths"); + CopyPartialNVector2NVector(v1, v2); +} + +void CopyNFloatSeg2FloatSeg(NFloat *fv1, int segLen, float *fv2) { + int i; + + for (i = 0; i < segLen; ++i) + fv2[i] = (float) fv1[i]; +} + + +NMatrix *GenMaskTrNMatrix(MemHeap *x, int mappedTargetNum, IntVec mapVec) { + int i, nrows, ncols; + NMatrix *mat; + + ncols = IntVecSize(mapVec); + nrows = mappedTargetNum; + mat = CreateNMatrix(x, nrows, ncols); + SetNMatrix(0.0, mat, nrows); + for (i = 0; i < ncols; ++i) + mat->matElems[mapVec[i + 1] * ncols + i] = 1.0; + +#ifdef CUDA + if (mat->devElems != NULL) + SyncNMatrixHost2Dev(mat); +#endif + + return mat; +} + +void ShowNVector(NVector *inVec) { + int i; + +#ifdef CUDA + if (inVec->devElems != NULL) + SyncNVectorDev2Host(inVec); +#endif + for (i = 0; i < inVec->vecLen; ++i) + printf(" %d:%e", i, inVec->vecElems[i]); + printf("\n"); +} + +void ShowNMatrix(NMatrix *inMat, int nrows) { + int i, j; + +#ifdef CUDA + if (inMat->devElems != NULL) + SyncNMatrixDev2Host(inMat); +#endif + if (nrows <= 0) + nrows = inMat->rowNum; + + for (i = 0; i < nrows; ++i) { + printf("Line %d = ", i); + for (j = 0; j < inMat->colNum; ++j) + printf(" %d:%e", j, inMat->matElems[i * inMat->colNum + j]); + printf("\n"); + } +} + /* -------------------------- End of HMem.c ---------------------------- */ diff --git a/HTKLib/HMem.h b/HTKLib/HMem.h old mode 100644 new mode 100755 index c97f066..ed74cce --- a/HTKLib/HMem.h +++ b/HTKLib/HMem.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HMem.h: Memory Management Module */ +/* File: HMem.h Memory Management Module */ /* ----------------------------------------------------------- */ -/* !HVER!HMem: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HMem: 3.5.0 [CUED 12/10/15] */ /* This module provides a type MemHeap which once initialised @@ -54,6 +70,11 @@ extern "C" { #endif +#include "HShell.h" +#include + +#include "config.h" + /* ----------------- Define Memory Management Functions ---------------- */ typedef enum{MHEAP, MSTAK, CHEAP} HeapType; @@ -192,6 +213,10 @@ int ShortVecSize(ShortVec v); int IntVecSize(IntVec v); int VectorSize(Vector v); int DVectorSize(DVector v); + +/* cz277 - ANN */ +Boolean CmpIntVec(IntVec lhVec, IntVec rhVec); + /* Return the number of components in vector v */ @@ -286,6 +311,124 @@ char *CopyString(MemHeap *x, char *s); Returns a pointer to a copy of string s */ +/* ------------------ ANN Types ----------------- */ + +typedef struct _CVector { + size_t vecLen; + float *vecElems; /* index starts from 0 */ + int nUse; +} CVector; + +typedef struct _CMatrix { + size_t rowNum; + size_t colNum; + float *matElems; /* row is leading; index starts from 0 */ + int nUse; +} CMatrix; + +typedef struct _CDVector { + size_t vecLen; + double *vecElems; /* index starts from 0 */ + int nUse; +} CDVector; + +typedef struct _CDMatrix { + size_t rowNum; + size_t colNum; + double *matElems; /* row is leading; index starts from 0 */ + int nUse; +} CDMatrix; + +/* types used by various kernel functions */ +#ifdef DOUBLEANN +typedef double NFloat; +#else +typedef float NFloat; +#endif + +typedef struct _NVector { + size_t vecLen; + NFloat *vecElems; /* index starts from 0 */ +#ifdef CUDA + NFloat *devElems; /* the elements on the GPU */ +#endif + int nUse; +} NVector; + +typedef struct _NMatrix { + size_t rowNum; + size_t colNum; + NFloat *matElems; /* row is leading; index starts from 0 */ +#ifdef CUDA + NFloat *devElems; /* the elements on the GPU */ +#endif + int nUse; +} NMatrix; + + +/* ------------- ANN Vector/Matrix Memory Management -------------- */ + + +size_t CVectorElemSize(int nlen); +size_t CMatrixElemSize(int nrows, int ncols); +size_t CDVectorElemSize(int nlen); +size_t CDMatrixElemSize(int nrows, int ncols); +size_t NVectorElemSize(int nlen); +size_t NMatrixElemSize(int nrows, int ncols); + +CVector *CreateCVector(MemHeap *x, int nlen); +CMatrix *CreateCMatrix(MemHeap *x, int nrows, int ncols); +CDVector *CreateCDVector(MemHeap *x, int nlen); +CDMatrix *CreateCDMatrix(MemHeap *x, int nrows, int ncols); +NVector *CreateHostNVector(MemHeap *x, int nlen); +NMatrix *CreateHostNMatrix(MemHeap *x, int nrows, int ncols); +NVector *CreateNVector(MemHeap *x, int nlen); +NMatrix *CreateNMatrix(MemHeap *x, int nrows, int ncols); + +size_t CVectorSize(CVector *v); +size_t NumCRows(CMatrix *m); +size_t NumCCols(CMatrix *m); +size_t CDVectorSize(CDVector *v); +size_t NumCDRows(CDMatrix *m); +size_t NumCDCols(CDMatrix *m); +size_t NVectorSize(NVector *v); +size_t NumNRows(NMatrix *m); +size_t NumNCols(NMatrix *m); + +void FreeCVector(MemHeap *x, CVector *v); +void FreeCMatrix(MemHeap *x, CMatrix *m); +void FreeCDVector(MemHeap *x, CDVector *v); +void FreeCDMatrix(MemHeap *x, CDMatrix *m); +void FreeNVector(MemHeap *x, NVector *v); +void FreeNMatrix(MemHeap *x, NMatrix *m); + +#ifdef CUDA +void SyncNVectorDev2Host(NVector *v); +void SyncNVectorHost2Dev(NVector *v); +void SyncNMatrixDev2Host(NMatrix *m); +void SyncNMatrixHost2Dev(NMatrix *m); +#endif + +void CopyVector2NVector(Vector v1, NVector *v2); +void CopyNVector2Vector(NVector *v1, Vector v2); +void CopyMatrix2NMatrix(Matrix m1, NMatrix *m2); +void CopyNMatrix2Matrix(NMatrix *m1, Matrix m2); +void CopyMatrix2TrNMatrix(Matrix m1, NMatrix *m2); +void CopyNMatrix2TrMatrix(NMatrix *m1, Matrix m2); +void CopyPartialNMatrix2NMatrix(NMatrix *m1, NMatrix *m2); +void CopyNMatrix2NMatrix(NMatrix *m1, NMatrix *m2); +void CopyPartialNVector2NVector(NVector *v1, NVector *v2); +void CopyNVector2NVector(NVector *v1, NVector *v2); +void CopyNFloatSeg2FloatSeg(NFloat *fv1, int segLen, float *fv2); +NMatrix *GenMaskTrNMatrix(MemHeap *x, int mappedTargetNum, IntVec mapVec); +void CopyDMatrix2NMatrix(DMatrix m1, NMatrix *m2); +void CopyPartialDMatrix2NMatrix(DMatrix m1, NMatrix *m2); +void CopyNMatrix2DMatrix(NMatrix *m1, DMatrix m2); + +void ShowNVector(NVector *inVec); +void ShowNMatrix(NMatrix *inMat, int nrows); + + #ifdef __cplusplus } #endif diff --git a/HTKLib/HModel.c b/HTKLib/HModel.c old mode 100644 new mode 100755 index 3603075..5827924 --- a/HTKLib/HModel.c +++ b/HTKLib/HModel.c @@ -3,38 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ -/* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HModel.c HMM Model Definition Data Type */ +/* File: HModel.c HMM model definition data type */ /* ----------------------------------------------------------- */ -char *hmodel_version = "!HVER!HModel: 3.4.1 [CUED 12/03/09]"; -char *hmodel_vc_id = "$Id: HModel.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; +char *hmodel_version = "!HVER!HModel: 3.5.0 [CUED 12/10/15]"; +char *hmodel_vc_id = "$Id: HModel.c,v 1.3 2015/10/12 12:07:24 cz277 Exp $"; +#include #include "HShell.h" #include "HMem.h" #include "HMath.h" @@ -42,11 +43,17 @@ char *hmodel_vc_id = "$Id: HModel.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HTrain.h" #include "HAdapt.h" - +#include "HFB.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HNCache.h" +#include /*gives strncasecmp*/ /* --------------------------- Trace Flags ------------------------- */ static int trace = 0; @@ -111,6 +118,8 @@ static int nGaussPDE2 = 0; #endif void InitSymNames(void); +char *ActFunKind2Str(ActFunKind afkind, char *buf); +char *LayerKind2Str(LayerKind layerKind, char *buf); /* EXPORT->InitModel: initialise memory and configuration parameters */ void InitModel(void) @@ -119,12 +128,13 @@ void InitModel(void) double d; Boolean b; char buf[MAXSTRLEN]; - + Register(hmodel_version,hmodel_vc_id); CreateHeap(&xformStack,"XFormStore",MSTAK, 1, 0.5, 100 , 1000 ); strcpy(orphanMacFile,"newMacros"); InitSymNames(); nParm = GetConfig("HMODEL", TRUE, cParm, MAXGLOBS); + if (nParm>0){ if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; if (GetConfBool(cParm,nParm,"CHKHMMDEFS",&b)) checking = b; @@ -143,6 +153,8 @@ void InitModel(void) else if (strcmp(buf,"SHARED")==0) cfHSKind = SHAREDHS; else if (strcmp(buf,"TIED")==0) cfHSKind = TIEDHS; else if (strcmp(buf,"DISCRETE")==0) cfHSKind = DISCRETEHS; + else if (strcmp(buf, "HYBRID") == 0) cfHSKind = HYBRIDHS; /* cz277 - ANN */ + else if (strcmp(buf, "ANN") == 0) cfHSKind = ANNHS; /* cz277 - ANN */ else HError(7070,"InitModel: Unknown HMM kind %s",buf); forceHSKind = TRUE; @@ -155,6 +167,697 @@ void InitModel(void) } } +/* cz277 - ANN */ +void InitANNSet(HMMSet *hset) { + int i, j; + + /* cz277 - free */ + hset->annSet = (ANNSet *) New(hset->hmem, sizeof(ANNSet)); + /*hset->annSet = (ANNSet *) New(&gcheap, sizeof(ANNSet));*/ + hset->annSet->annNum = 0; + hset->annSet->defsHead = NULL; + hset->annSet->defsTail = NULL; + for (i = 0; i < SMAX; ++i) + hset->annSet->outLayers[i] = NULL; + hset->nInp[0] = hset->swidth[0]; + for (i = 1; i < SMAX; ++i) + hset->nInp[i] = 0; + for (i = 1; i < SMAX; ++i) + for (j = 1; j < MAXINPUSE; ++j) + hset->inpElem[i][j] = NULL; + for (i = 1; i < SMAX; ++i) + hset->stateInfoList[i] = NULL; + hset->annSet->mapStruct = NULL; + for (i = 1; i < SMAX; ++i) + hset->annSet->penVec[i] = NULL; +} + +/* cz277 - ANN */ +static char *GetNextFTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'F', ++hset->FTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - ANN */ +static char *GetNextLTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'L', ++hset->LTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - ANN */ +static char *GetNextNTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'N', ++hset->NTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - 150824 */ +static char *GetNextMTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'M', ++hset->MTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - 150824 */ +static char *GetNextVTypeMacroName(HMMSet *hset, char *retName) { + char buf[MAXSTRLEN]; + + sprintf(buf, "%s%c%d", AUTOMACRONAMEPREFIX, 'V', ++hset->VTypeMacroNum); + strcpy(retName, buf); + + return retName; +} + +/* cz277 - 1007 */ +LabId GetNextANNMacroName(char *invoker, HMMSet *hset, char type) { + LabId id; + char buf[MAXSTRLEN]; + char *(* GetNextMacroName)(HMMSet *, char *) = &GetNextFTypeMacroName; + + switch (type) { + case 'F': GetNextMacroName = &GetNextFTypeMacroName; break; + case 'L': GetNextMacroName = &GetNextLTypeMacroName; break; + case 'N': GetNextMacroName = &GetNextNTypeMacroName; break; + case 'M': GetNextMacroName = &GetNextMTypeMacroName; break; + case 'V': GetNextMacroName = &GetNextVTypeMacroName; break; + default: + HError(7092, "%s: Unknown ANN macro type", invoker); + } + id = GetLabId((*GetNextMacroName)(hset, buf), FALSE); + while (id != NULL) + id = GetLabId((*GetNextMacroName)(hset, buf), FALSE); + + return GetLabId(buf, TRUE); +} + +/* cz277 - 1007 */ +static Boolean GetThisMacroCount(char *macroname, char type, int *count) { + char *charptr, *intptr; + + charptr = macroname; + if (charptr == NULL) + HError(7093, "GetThisMacroCount: Empty macro name received"); + if (strncasecmp(AUTOMACRONAMEPREFIX, charptr, strlen(AUTOMACRONAMEPREFIX)) != 0) + return FALSE; + charptr += strlen(AUTOMACRONAMEPREFIX); + if (charptr[0] == type) { + intptr = ++charptr; + while (*charptr != '\0') { + if (!isdigit(*charptr)) + return FALSE; + ++charptr; + } + *count = atoi(intptr); + return TRUE; + } + else + return FALSE; +} + +/* 1007 */ +static void FreeSharedNMatrix(HMMSet *hset, NMatrix *shareMat) +{ + if (shareMat->nUse > 0) { + --shareMat->nUse; + } + else if (shareMat->nUse == 0) { + FreeNMatrix(hset->hmem, shareMat); + --shareMat->nUse; + } +} + +/* cz277 - 150811 */ +static void FreeSharedNVecBundle(MemHeap *x, NVecBundle *bundle) { + BTLink cur, next; + + --bundle->nUse; + if (bundle->nUse != 0) + return; + + if (bundle->variables != NULL) + FreeNVector(x, bundle->variables); + if (bundle->gradients != NULL) + FreeNVector(x, bundle->gradients); + if (bundle->updates != NULL) + FreeNVector(x, bundle->updates); + if (bundle->neglearnrates != NULL) + FreeNVector(x, bundle->neglearnrates); + if (bundle->sumsquaredgrad != NULL) + FreeNVector(x, bundle->sumsquaredgrad); + /*memset(bundle, 0, sizeof(NMatBundle));*/ + if (x->type == CHEAP) { + if (bundle->kind == SIBK) { + cur = bundle->hook; + while (cur != NULL) { + next = cur->nextTrace; + Dispose(x, cur); + cur = next; + } + } + Dispose(x, bundle); + } +} + +/* cz277 - 150811 */ +static void FreeSharedNMatBundle(MemHeap *x, NMatBundle *bundle) { + BTLink cur, next; + + --bundle->nUse; + if (bundle->nUse != 0) + return; + + if (bundle->variables != NULL) + FreeNMatrix(x, bundle->variables); + if (bundle->gradients != NULL) + FreeNMatrix(x, bundle->gradients); + if (bundle->updates != NULL) + FreeNMatrix(x, bundle->updates); + if (bundle->neglearnrates != NULL) + FreeNMatrix(x, bundle->neglearnrates); + if (bundle->sumsquaredgrad != NULL) + FreeNMatrix(x, bundle->sumsquaredgrad); + /*memset(bundle, 0, sizeof(NMatBundle));*/ + if (x->type == CHEAP) { + if (bundle->kind == SIBK) { + cur = bundle->hook; + while (cur != NULL) { + next = cur->nextTrace; + Dispose(x, cur); + cur = next; + } + } + Dispose(x, bundle); + } +} + +/* cz277 - 150824 */ +static void SetNVectorByNVector(NVector *svec, NVector *tvec) { + + if (svec->vecLen != tvec->vecLen) + HError(7093, "SetNVectorByNVector: Inconsistent source and target vector lengths"); +#ifdef CUDA + if (svec->devElems != NULL) + SyncNVectorDev2Host(svec); + if (tvec->devElems != NULL) + SyncNVectorDev2Host(tvec); +#endif + tvec->vecElems = svec->vecElems; +#ifdef CUDA + if (tvec->devElems != NULL) + SyncNVectorHost2Dev(tvec); +#endif +} + +/* cz277 - 150824 */ +void SetNVecBundleByNVecBundle(NVecBundle *sbundle, NVecBundle *tbundle) { + + if (sbundle->variables != NULL) { + if (tbundle->variables == NULL) + tbundle->variables = CreateHostNVector(&gcheap, sbundle->variables->vecLen); + SetNVectorByNVector(sbundle->variables, tbundle->variables); + } + if (sbundle->gradients != NULL) { + if (tbundle->gradients == NULL) + tbundle->gradients = CreateHostNVector(&gcheap, sbundle->gradients->vecLen); + SetNVectorByNVector(sbundle->gradients, tbundle->gradients); + } + if (sbundle->updates != NULL) { + if (tbundle->updates == NULL) + tbundle->updates = CreateHostNVector(&gcheap, sbundle->updates->vecLen); + SetNVectorByNVector(sbundle->updates, tbundle->updates); + } + if (sbundle->neglearnrates != NULL) { + if (tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNVector(&gcheap, sbundle->neglearnrates->vecLen); + SetNVectorByNVector(sbundle->neglearnrates, tbundle->neglearnrates); + } + if (sbundle->sumsquaredgrad != NULL) { + if (tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNVector(&gcheap, sbundle->sumsquaredgrad->vecLen); + SetNVectorByNVector(sbundle->sumsquaredgrad, tbundle->sumsquaredgrad); + } + tbundle->accptr = &sbundle->accum; +} + +/* cz277 - 150824 */ +void AugHostNVecBundleByNVecBundle(MemHeap *x, NVecBundle *sbundle, NVecBundle *tbundle) { + + if (sbundle->kind != SIBK || tbundle->kind != SDBK) + HError(7093, "AugHostNVecBundleByNVecBundle: Source/target bundle should be SI/SD"); + if (sbundle->variables == NULL || tbundle->variables == NULL) + HError(7093, "AugHostNVecBundleByNVecBundle: Both source and target variables cannot be NULL"); + if (sbundle->variables->vecLen != tbundle->variables->vecLen) + HError(7072, "AugHostNVecBundleByNVecBundle: Inconsistent vector lengths"); + + if (sbundle->gradients != NULL && tbundle->gradients == NULL) + tbundle->gradients = CreateHostNVector(x, sbundle->gradients->vecLen); + if (sbundle->updates != NULL && tbundle->updates == NULL) + tbundle->updates = CreateHostNVector(x, sbundle->updates->vecLen); + if (sbundle->neglearnrates != NULL && tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNVector(x, sbundle->neglearnrates->vecLen); + if (sbundle->sumsquaredgrad != NULL && tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNVector(x, sbundle->sumsquaredgrad->vecLen); +} + +/* cz277 - 150824 */ +static void SetNMatrixByNMatrix(NMatrix *smat, NMatrix *tmat) { + + if (smat->rowNum != tmat->rowNum || smat->colNum != tmat->colNum) + HError(7072, "SetNMatrixByNMatrix: Inconsistent source and target matrix dimensions"); +#ifdef CUDA + if (smat->devElems != NULL) + SyncNMatrixDev2Host(smat); + if (tmat->devElems != NULL) + SyncNMatrixDev2Host(tmat); +#endif + tmat->matElems = smat->matElems; +#ifdef CUDA + if (tmat->devElems != NULL) + SyncNMatrixHost2Dev(tmat); +#endif +} + +/* cz277 - 150824 */ +void SetNMatBundleByNMatBundle(NMatBundle *sbundle, NMatBundle *tbundle) { + + if (sbundle->variables != NULL) { + if (tbundle->variables == NULL) + tbundle->variables = CreateHostNMatrix(&gcheap, sbundle->variables->rowNum, sbundle->variables->colNum); + SetNMatrixByNMatrix(sbundle->variables, tbundle->variables); + } + if (sbundle->gradients != NULL) { + if (tbundle->gradients == NULL) + tbundle->gradients = CreateHostNMatrix(&gcheap, sbundle->gradients->rowNum, sbundle->gradients->colNum); + SetNMatrixByNMatrix(sbundle->gradients, tbundle->gradients); + } + if (sbundle->updates != NULL) { + if (tbundle->updates == NULL) + tbundle->updates = CreateHostNMatrix(&gcheap, sbundle->updates->rowNum, sbundle->updates->colNum); + SetNMatrixByNMatrix(sbundle->updates, tbundle->updates); + } + if (sbundle->neglearnrates != NULL) { + if (tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNMatrix(&gcheap, sbundle->neglearnrates->rowNum, sbundle->neglearnrates->colNum); + SetNMatrixByNMatrix(sbundle->neglearnrates, tbundle->neglearnrates); + } + if (sbundle->sumsquaredgrad != NULL) { + if (tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNMatrix(&gcheap, sbundle->sumsquaredgrad->rowNum, sbundle->sumsquaredgrad->colNum); + SetNMatrixByNMatrix(sbundle->sumsquaredgrad, tbundle->sumsquaredgrad); + } + tbundle->accptr = &sbundle->accum; +} + + +/* cz277 - 150824 */ +void AugHostNMatBundleByNMatBundle(MemHeap *x, NMatBundle *sbundle, NMatBundle *tbundle) { + + if (sbundle->kind != SIBK || tbundle->kind != SDBK) + HError(7093, "AugHostNMatBundleByNMatBundle: Source/target bundle should be SI/SD"); + if (sbundle->variables == NULL || tbundle->variables == NULL) + HError(7093, "AugHostNMatBundleByNMatBundle: Both source and target variables cannot be NULL"); + if (sbundle->variables->rowNum != tbundle->variables->rowNum || + sbundle->variables->colNum != tbundle->variables->colNum) + HError(7072, "AugHostNMatBundleByNMatBundle: Inconsistent matrix dimensions"); + + if (sbundle->gradients != NULL && tbundle->gradients == NULL) + tbundle->gradients = CreateHostNMatrix(x, sbundle->gradients->rowNum, sbundle->gradients->colNum); + if (sbundle->updates != NULL && tbundle->updates == NULL) + tbundle->updates = CreateHostNMatrix(x, sbundle->updates->rowNum, sbundle->updates->colNum); + if (sbundle->neglearnrates != NULL && tbundle->neglearnrates == NULL) + tbundle->neglearnrates = CreateHostNMatrix(x, sbundle->neglearnrates->rowNum, sbundle->neglearnrates->colNum); + if (sbundle->sumsquaredgrad != NULL && tbundle->sumsquaredgrad == NULL) + tbundle->sumsquaredgrad = CreateHostNMatrix(x, sbundle->sumsquaredgrad->rowNum, sbundle->sumsquaredgrad->colNum); +} + +/* clear the ANNSet if needed */ +void FreeANNSet(HMMSet *hset) { + int i, j, k, n; + AILink annInfo; + ADLink annDef; + LELink layerElem; + FELink feaElem; + + annInfo = hset->annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + /* proceed each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + /* remove errMix */ + if (layerElem->errMix != NULL) { + for (j = 0; j < layerElem->errMix->elemNum; ++j) { + feaElem = layerElem->errMix->feaList[j]; + n = IntVecSize(feaElem->ctxPool); + for (k = 1; k <= n; ++k) + FreeSharedNMatrix(hset, feaElem->feaMats[k]); + /*Dispose(&gcheap, feaElem->feaMats);*/ + } + n = IntVecSize(layerElem->errMix->ctxPool); + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->errMix->mixMats[j]); + /*Dispose(&gcheap, layerElem->errMix->mixMats);*/ + } + /* remove trainInfo */ + n = IntVecSize(layerElem->drvCtx); + if (layerElem->trainInfo != NULL) { + /* remove labMat */ + if (layerElem->trainInfo->labMat != NULL) + FreeNMatrix(hset->hmem, layerElem->trainInfo->labMat); + /* remove dxFeaMat, dyFeaMat */ + if (layerElem->trainInfo->cacheMats != NULL) + for (j = 1; j <= n; ++j) + FreeNMatrix(hset->hmem, layerElem->trainInfo->cacheMats[j]); + /*Dispose(hset->hmem, layerElem->trainInfo->cacheMats);*/ + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->trainInfo->dxFeaMats[j]); + /*Dispose(hset->hmem, layerElem->trainInfo->dxFeaMats);*/ + /*Dispose(&gcheap, layerElem->trainInfo->dxFeaMats);*/ + for (j = 1; j <= n; ++j) + if (layerElem->trainInfo->dyFeaMats[j] != NULL) + FreeSharedNMatrix(hset, layerElem->trainInfo->dyFeaMats[j]); + /*Dispose(hset->hmem, layerElem->trainInfo->dyFeaMats);*/ + /*Dispose(&gcheap, layerElem->trainInfo->dyFeaMats);*/ + /* remove drvCnt */ + /*Dispose(&gcheap, layerElem->trainInfo->drvCnt);*/ + } + /* remove xFeaMat */ + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->xFeaMats[j]); + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->yFeaMats[j]); + /*Dispose(&gcheap, layerElem->xFeaMats);*/ + /* remove mixMats */ + n = IntVecSize(layerElem->feaMix->ctxPool); + for (j = 1; j <= n; ++j) + FreeSharedNMatrix(hset, layerElem->feaMix->mixMats[j]); + /*Dispose(&gcheap, layerElem->feaMix->mixMats);*/ + /* remove feaMix */ + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + n = IntVecSize(feaElem->ctxPool); + for (k = 1; k <= n; ++k) + FreeSharedNMatrix(hset, feaElem->feaMats[k]); + /*Dispose(&gcheap, feaElem->feaMats);*/ + /* cz277 - gap */ + if (feaElem->hisMat != NULL) + FreeNMatrix(hset->hmem, feaElem->hisMat); + } + /*Dispose(&gcheap, layerElem->yFeaMats);*/ + /* remove bundled parameters */ + if (layerElem->wghtMat != NULL) + FreeSharedNMatBundle(hset->hmem, layerElem->wghtMat); + if (layerElem->biasVec != NULL) + FreeSharedNVecBundle(hset->hmem, layerElem->biasVec); + if (layerElem->actfunVecs != NULL) + for (j = 0; j <= layerElem->actfunParmNum; ++j) + if (layerElem->actfunVecs[j] != NULL) + FreeSharedNVecBundle(hset->hmem, layerElem->actfunVecs[j]); + } + annInfo = annInfo->next; + } + /* release llhMat */ + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->annSet->llhMat[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->llhMat[i]); + if (hset->annSet->penVec[i] != NULL) + FreeNVector(hset->hmem, hset->annSet->penVec[i]); + } + /* free targetMapStruct if needed */ + if (hset->annSet->mapStruct != NULL) { + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->annSet->mapStruct->maskMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->maskMatMapSum[i]); + if (hset->annSet->mapStruct->labMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->labMatMapSum[i]); + if (hset->annSet->mapStruct->outMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->outMatMapSum[i]); + if (hset->annSet->mapStruct->llhMatMapSum[i] != NULL) + FreeNMatrix(hset->hmem, hset->annSet->mapStruct->llhMatMapSum[i]); + if (hset->annSet->mapStruct->penVecMapSum[i] != NULL) + FreeNVector(hset->hmem, hset->annSet->mapStruct->penVecMapSum[i]); + } + } + + /* cz277 - many TODO */ + for (i = 1; i <= hset->swidth[0]; ++i) + if (hset->feaMix[i] != NULL) + for (j = 0; j < hset->feaMix[i]->elemNum; ++j) + FreeSharedNMatrix(hset, hset->feaMix[i]->feaList[j]->feaMats[1]); + FreeTmpNMat(hset->hmem); + /* cz277 - free */ + /* pop the last item annSet (MSTAK) */ + /*Dispose(hset->hmem, hset->annSet);*/ + /*Dispose(&gcheap, hset->annSet);*/ +} + +void ShowANNSet(HMMSet *hset) { + int i, j, k; + AILink annInfo; + ADLink annDef; + LELink layerElem; + FELink feaElem; + char buf[MAXSTRLEN], ctxstr[MAXSTRLEN]; + MLink m; + + annInfo = hset->annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + /* show ANN model name */ + m = FindMacroStruct(hset, 'N', annDef); + printf("ANN %s:\n", ReWriteString(m->id->name, NULL, DBL_QUOTE)); + /* show each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + LayerKind2Str(layerElem->layerKind, buf); + m = FindMacroStruct(hset, 'L', layerElem); + /* layer kind */ + printf("\t%d. %s layer %s: %d dim X %d dim", i + 1, buf, ReWriteString(m->id->name, NULL, DBL_QUOTE), layerElem->inputDim, layerElem->nodeNum); + layerElem->isFinalLayer == TRUE? printf(" [OUTPUT]\n"): printf("\n"); + /* layer input */ + m = FindMacroStruct(hset, 'F', layerElem->feaMix); + printf("\t\tInput feature mixture %s: %d dim\n", ReWriteString(m->id->name, NULL, DBL_QUOTE), layerElem->feaMix->mixDim); + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + switch (feaElem->inputKind) { + case INPFEAIK: + sprintf(buf, "Input feature stream %d", feaElem->streamIdx); + break; + case ANNFEAIK: + m = FindMacroStruct(hset, 'L', feaElem->feaSrc); + sprintf(buf, "ANN layer %s outputs", ReWriteString(m->id->name, NULL, DBL_QUOTE)); + break; + case AUGFEAIK: + sprintf(buf, "Augmented input vector %d", feaElem->augFeaIdx); + break; + default: + break; + } + strcpy(ctxstr,""); + for (k = 1; k <= IntVecSize(feaElem->ctxMap); ++k) + sprintf(ctxstr + strlen(ctxstr), " %d", feaElem->ctxMap[k]); + printf("\t\t\t%s: %d (%d - %d) dim, context shift {%s}\n", buf, feaElem->feaDim, feaElem->dimOff + 1, feaElem->dimOff + feaElem->feaDim, ctxstr + 1); + } + /* output according to the layerkind */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: break; + case CONVOLUTIONLAK: break; + case PERCEPTRONLAK: + m = FindMacroStruct(hset, 'M', layerElem->wghtMat); + layerElem->wghtMat->updateflag == TRUE? strcpy(buf, " [UPDATABLE]"): strcpy(buf, ""); + printf("\t\tWeight matrix %s: %lu dim X %lu dim%s\n", m->id->name, layerElem->wghtMat->variables->colNum, layerElem->wghtMat->variables->rowNum, buf); + m = FindMacroStruct(hset, 'V', layerElem->biasVec); + layerElem->biasVec->updateflag == TRUE? strcpy(buf, " [UPDATABLE]"): strcpy(buf, ""); + printf("\t\tBias vector %s: %lu dim%s\n", m->id->name, layerElem->biasVec->variables->vecLen, buf); + printf("\t\tActivation function %s\n", ReWriteString(ActFunKind2Str(layerElem->actfunKind, buf), NULL, DBL_QUOTE)); + if (layerElem->actfunVecs != NULL) { + for (j = 0; j <= layerElem->actfunParmNum; ++j) { + m = FindMacroStruct(hset, 'V', layerElem->actfunVecs[j]); + strcpy(buf, ""); + if (j == 0) + strcpy(buf, " [HYPER]"); + else if (layerElem->actfunVecs[j]->updateflag == TRUE) + strcpy(buf, " [UPDATABLE]"); + printf("\t\t\tParameter vector %s: %lu dim%s\n", m->id->name, layerElem->actfunVecs[j]->variables->vecLen, buf); + } + } + break; + case SUBSAMPLINGLAK: break; + default: + break; + } + printf("\n"); + } + annInfo = annInfo->next; + } +} + + +void InitNMatBundle(MemHeap *x, NMatBundle *bundle, char type) { + NMatrix **NMatObj=NULL; + + if (bundle->variables == NULL) + HError(7000, "InitNMatBundle: NMatrix bundle not properly initialised"); + + switch (tolower(type)) { + case 'g': NMatObj = &bundle->gradients; break; + case 'u': NMatObj = &bundle->updates; break; + case 'n': NMatObj = &bundle->neglearnrates; break; + case 's': NMatObj = &bundle->sumsquaredgrad; break; + default: + HError(7092, "InitNMatBundle: Unknown NMatrix bundle component type"); + } + if (*NMatObj == NULL) { + *NMatObj = CreateNMatrix(x, bundle->variables->rowNum, bundle->variables->colNum); + ClearNMatrix(*NMatObj, bundle->variables->rowNum); + } +} + + +void InitNVecBundle(MemHeap *x, NVecBundle *bundle, char type) { + NVector **NVecObj=NULL; + + if (bundle->variables == NULL) + HError(7000, "InitNVecBundle: NVector bundle not properly initialised"); + + switch (tolower(type)) { + case 'g': NVecObj = &bundle->gradients; break; + case 'u': NVecObj = &bundle->updates; break; + case 'n': NVecObj = &bundle->neglearnrates; break; + case 's': NVecObj = &bundle->sumsquaredgrad; break; + default: + HError(7092, "InitNVecBundle: Unknown NVector bundle component type"); + } + if (*NVecObj == NULL) { + *NVecObj = CreateNVector(x, bundle->variables->vecLen); + ClearNVector(*NVecObj); + } +} + +/* cz277 - ANN */ +void InitTrainInfo(HMMSet *hset, Boolean initLabMats, Boolean initLRInfo, Boolean initSSGInfo, Boolean initStruct) { + int i, j, k; + AILink annInfo; + ADLink annDef; + LELink layerElem; + char *bundleflag = "guns"; + Boolean process; + + annInfo = hset->annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + /* proceed each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + if (layerElem->trainInfo == NULL) { + layerElem->trainInfo = (TrainInfo *) New(hset->hmem, sizeof(TrainInfo)); + memset(layerElem->trainInfo, 0, sizeof(TrainInfo)); +#ifdef MKL + if (layerElem->actfunKind == SIGMOIDAF) + RegisterTmpNMat(GetNBatchSamples(), layerElem->nodeNum); +#endif + } + for (j = 0; j < strlen(bundleflag); ++j) { + switch (bundleflag[j]) { + case 'n': process = initStruct && initLRInfo; break; + case 's': process = initStruct && initSSGInfo; break; + default: process = initStruct; + } + if (process) { + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: + HError(7001, "InitTrainInfo: Function not implemented!"); + break; + case CONVOLUTIONLAK: + HError(7001, "InitTrainInfo: Function not implemented!"); + break; + case PERCEPTRONLAK: + InitNMatBundle(hset->hmem, layerElem->wghtMat, bundleflag[j]); + InitNVecBundle(hset->hmem, layerElem->biasVec, bundleflag[j]); + for (k = 1; k <= layerElem->actfunParmNum; ++k) + if (layerElem->actfunVecs[k] != NULL) + InitNVecBundle(hset->hmem, layerElem->actfunVecs[k], bundleflag[j]); + break; + case SUBSAMPLINGLAK: + HError(7001, "InitTrainInfo: Function not implemented!"); + break; + } + /* special treatment */ +#ifdef CUDA + if (bundleflag[j] == 's') + RegisterTmpNMat(GetNBatchSamples(), layerElem->inputDim); +#endif + } + } + } + /* get the next ANNDef */ + annInfo = annInfo->next; + } + if (initStruct && initLabMats) + for (i = 1; i <= hset->swidth[0]; ++i) + if (hset->annSet->outLayers[i]->trainInfo->labMat == NULL) + hset->annSet->outLayers[i]->trainInfo->labMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->outLayers[i]->nodeNum); +} + +/*ReturnStatus CheckTrainInfo(ANNSet *annSet) +{ + int i; + LELink layerElem; + AILink annInfo; + ADLink annDef; + Boolean firstItem = FALSE; + Boolean hasLR = FALSE; + Boolean hasSSG = FALSE; + + annInfo = annSet->defsHead; + while (annInfo != NULL) { + annDef = annInfo->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + if (!firstItem) { + firstItem = TRUE; + if (layerElem->trainInfo != NULL) { + if (layerElem->trainInfo->nlrInfo != NULL) + hasLR = TRUE; + if (layerElem->trainInfo->ssgInfo != NULL) + hasSSG = TRUE; + } + } + else { + if ((hasLR && layerElem->trainInfo == NULL) || + (hasLR && layerElem->trainInfo != NULL && layerElem->trainInfo->nlrInfo == NULL) || + (!hasLR && layerElem->trainInfo != NULL && layerElem->trainInfo->nlrInfo != NULL)) { + HError(9999, "CheckTrainInfo: Conflict settings for learning rates for different layers"); + return FAIL; + } + if ((hasSSG && layerElem->trainInfo == NULL) || + (hasSSG && layerElem->trainInfo != NULL && layerElem->trainInfo->ssgInfo == NULL) || + (!hasSSG && layerElem->trainInfo != NULL && layerElem->trainInfo->ssgInfo != NULL)) { + HError(9999, "CheckTrainInfo: Conflict settings for SSG structures for different layers"); + return FAIL; + } + } + } + annInfo = annInfo->next; + } + + return SUCCESS; +}*/ + /* -------------------- Check Model Consistency -------------------- */ /* CheckMix: check given mixture pdf of state n, stream s, mixture m */ @@ -260,6 +963,12 @@ static ReturnStatus CheckStream(char *defName, HLink hmm, StreamElem *se, int s, for (m=1; m<=se->nMix; m++) sum += exp((float)se->spdf.dpdf[m]/DLOGSCALE); break; + case HYBRIDHS: + sum = 1.0; /* cz277 - ANN */ + break; + case ANNHS: + sum = 1.0; /* cz277 - ANN */ + break; } if (sum<0.99 || sum>1.01){ HRError(7031,"CheckStream: %s: Mix weights sum %e for s=%d, j=%d", @@ -285,7 +994,7 @@ static ReturnStatus CheckState(char *defName, HLink hmm, StateInfo *si, int n) } ste = si->pdf+1; for (s=1; s<=S; s++,ste++){ - if (ste->spdf.cpdf == NULL){ + if ((ste->densKind == GMMDK && ste->spdf.cpdf == NULL) || (ste->densKind == ANNDK && ste->targetSrc == NULL)) { HRError(7030,"CheckState: %s: Stream %d missing in state %d",defName,s,n); return(FAIL); } @@ -399,7 +1108,13 @@ typedef enum { /* Only a character big !! */ STATE, TMIX, MIXTURE, STREAM, SWEIGHTS, MEAN, VARIANCE, INVCOVAR, XFORM, GCONST, DURATION, INVDIAGCOV, TRANSP, DPROB, LLTCOV, LLTCOVAR, - PROJSIZE, + PROJSIZE, + HMMFEATURESOURCE, NUMFEATURES, FEATURE, SOURCE, CONTEXTSHIFT, DIMRANGE, + ACTIVATION, INPUTFEATURE, WEIGHT, UPDATE, NEGLEARNRATE, SUMSQUAREDGRAD, HYPERPARAMETER, NUMPARAMETERS, PARAMETER, MATRIX, VECTOR, TARGETMACRO, + BEGINANN, NUMLAYERS, LAYER, ENDANN, LAYERKIND, BEGINLAYER, ENDLAYER, TARGETSOURCE, TARGETINDEX, TARGETPENALTY, AUGFEATURE, +#ifdef USEOLDANNMODEL + OPERAND, ANNKIND, RPLIDX, +#endif XFORMKIND=90, PARENTXFORM, NUMXFORMS, XFORMSET, LINXFORM, OFFSET, BIAS, LOGDET, BLOCKINFO, BLOCK, BASECLASS, CLASS, XFORMWGTSET, CLASSXFORM, MMFIDMASK, PARAMETERS, @@ -436,6 +1151,13 @@ static struct { { "HMMSETID", HMMSETID }, { "PARMKIND", PARMKIND }, { "MACRO", MACRO }, { "EOF", EOFSYM }, + /* cz277 - ANN: ANN related symbols */ + {"HMMFEATURESOURCE", HMMFEATURESOURCE}, {"NUMFEATURES", NUMFEATURES}, {"FEATURE", FEATURE}, {"SOURCE", SOURCE}, {"CONTEXTSHIFT", CONTEXTSHIFT}, {"DIMRANGE", DIMRANGE}, + {"ACTIVATION", ACTIVATION}, {"INPUTFEATURE", INPUTFEATURE}, {"WEIGHT", WEIGHT}, {"UPDATE", UPDATE}, {"NEGLEARNRATE", NEGLEARNRATE}, {"SUMSQUAREDGRAD", SUMSQUAREDGRAD}, {"HYPERPARAMETER", HYPERPARAMETER}, {"NUMPARAMETERS", NUMPARAMETERS}, {"PARAMETER", PARAMETER}, {"MATRIX", MATRIX}, {"VECTOR", VECTOR}, {"TARGETMACRO", TARGETMACRO}, + {"BEGINANN", BEGINANN}, {"NUMLAYERS", NUMLAYERS}, {"LAYER", LAYER}, {"ENDANN", ENDANN}, {"LAYERKIND", LAYERKIND}, {"BEGINLAYER", BEGINLAYER}, {"ENDLAYER", ENDLAYER}, {"TARGETSOURCE", TARGETSOURCE}, {"TARGETINDEX", TARGETINDEX}, {"TARGETPENALTY", TARGETPENALTY}, {"AUGFEATURE", AUGFEATURE}, +#ifdef USEOLDANNMODEL + {"OPERAND", OPERAND}, {"ANNKIND", ANNKIND}, {"RPLIDX", RPLIDX}, +#endif /* Transformation symbols */ {"XFORMKIND", XFORMKIND } , {"PARENTXFORM", PARENTXFORM }, {"NUMXFORMS", NUMXFORMS }, {"XFORMSET", XFORMSET }, @@ -460,7 +1182,7 @@ typedef struct { /* Token returned by the scanner */ ParmKind pkind; /* samp kind when sym==PARMKIND */ char macroType; /* current macro type if sym==MACRO */ } Token; - + void InitSymNames(void) { int i; @@ -469,9 +1191,9 @@ void InitSymNames(void) } /* InitScanner: initialise scanner for new source */ -ReturnStatus InitScanner(char *fname, Source *src, Token *tok, HMMSet *hset) +ReturnStatus InitScanner(char *fname, Source *src, Token *tok, IOFilter filter) { - if(InitSource(fname, src, HMMDefFilter)sym = NULLSYM; tok->macroType = ' '; @@ -499,92 +1221,145 @@ static void HMError(Source *src, char *message) /* GetToken: put next symbol from given source into token */ static ReturnStatus GetToken(Source *src, Token *tok) { - char buf[MAXSYMLEN],tmp[MAXSTRLEN]; - int i,c,imax,sym; + char buf[MAXSYMLEN], tmp[MAXSTRLEN]; + int i, c, imax, sym; - tok->binForm = FALSE; - while (isspace(c=GetCh(src))); /* Look for symbol or Macro */ - if (c != '<' && c != ':' && c != '~' && c != '.' && c != '#') { - if (c == EOF) { - if (trace&T_TOK) printf("HModel: tok=\n"); - tok->sym=EOFSYM; return(SUCCESS); - } - HMError(src,"GetToken: Symbol expected"); - return(FAIL); - } - if (c == '~'){ /* If macro sym return immediately */ - c = tolower(GetCh(src)); - if (c!='s' && c!='m' && c!='u' && c!='x' && c!='d' && c!='c' && - c!='r' && c!='a' && c!='b' && c!='g' && c!='f' && c!='y' && c!='j' && - c!='v' && c!='i' && c!='t' && c!='w' && c!='h' && c!='o') - { - HMError(src,"GetToken: Illegal macro type"); - return(FAIL); - } - tok->macroType = c; tok->sym = MACRO; - if (trace&T_TOK) printf("HModel: MACRO ~%c\n",c); - return(SUCCESS); - } - i=0; imax = MAXSYMLEN-1; - if (c=='#') { /* if V1 mmf header convert to ~h */ - while ((c=GetCh(src)) != '#' && isym = MACRO; tok->macroType = 'h'; - if (trace&T_TOK) printf("HModel: MACRO ~h (#!MMF!#)\n"); - return(SUCCESS); - } - if (c=='.'){ /* if . and not EOF convert to ~h */ - while (isspace(c=GetCh(src))); - if (c == EOF) { - if (trace&T_TOK) printf("HModel: tok=.\n"); - tok->sym=EOFSYM; - return(SUCCESS); - } - UnGetCh(c,src); - tok->sym = MACRO; tok->macroType = 'h'; - if (trace&T_TOK) printf("HModel: MACRO ~h (.)\n"); - return(SUCCESS); - } - if (c=='<') { /* Read verbose symbol string into buf */ - while ((c=GetCh(src)) != '>' && i missing in symbol"); - return(FAIL); - } - /* This is tacky and has to be fixed*/ - for (sym=0; symsym = symMap[sym].sym; - if (trace&T_TOK) printf("HModel: tok=<%s>\n",buf); - return(SUCCESS); /* and return */ - } - } else { - /* Read binary symbol into buf */ - tok->binForm = TRUE; - sym = GetCh(src); - if (sym>=BEGINHMM && symsym = (Symbol) sym; - return(SUCCESS); /* and return */ - } - } + tok->binForm = FALSE; + while (isspace(c = GetCh(src))); /* Look for symbol or Macro */ + if (c != '<' && c != ':' && c != '~' && c != '.' && c != '#') { + if (c == EOF) { + if (trace & T_TOK) + printf("HModel: tok=\n"); + tok->sym = EOFSYM; + return (SUCCESS); + } + HMError(src, "GetToken: Symbol expected"); + return (FAIL); + } + if (c == '~') { /* If macro sym return immediately */ + c = GetCh(src); +#ifdef USEOLDANNMODEL + switch (c) { + case '0': + c = 'M'; + break; + case '1': + c = 'V'; + break; + case 'e': + c = 'F'; + break; + case 'k': + c = 'L'; + break; + case 'n': + c = 'N'; + break; + } +#endif + + if (c != 's' && c != 'm' && c != 'u' && c != 'x' && c != 'd' && c != 'c' && + c != 'r' && c != 'a' && c != 'b' && c != 'g' && c != 'f' && c != 'y' && c != 'j' && + c != 'v' && c != 'i' && c != 't' && c != 'w' && c != 'h' && c != 'o' && c != 'q' && c != 'z' && + c != 'F' && c != 'L' && c != 'M' && c != 'N' && c != 'V') /* cz277 - 150811 */ + { + HMError(src, "GetToken: Illegal macro type"); + return (FAIL); + } + tok->macroType = c; + tok->sym = MACRO; + if (trace & T_TOK) + printf("HModel: MACRO ~%c\n", c); + return (SUCCESS); + } + i = 0; + imax = MAXSYMLEN - 1; + if (c == '#') { /* if V1 mmf header convert to ~h */ + while ((c = GetCh(src)) != '#' && i < imax) + buf[i++] = c; + buf[i] = '\0'; + if (strcmp(buf, "!MMF!") != 0) { + HMError(src, "GetToken: expecting V1 style MMF header #!MMF!#"); + return (FAIL); + } + tok->sym = MACRO; + tok->macroType = 'h'; + if (trace & T_TOK) + printf("HModel: MACRO ~h (#!MMF!#)\n"); + return (SUCCESS); + } + if (c == '.'){ /* if . and not EOF convert to ~h */ + while (isspace(c = GetCh(src))); + if (c == EOF) { + if (trace & T_TOK) + printf("HModel: tok=.\n"); + tok->sym = EOFSYM; + return (SUCCESS); + } + UnGetCh(c, src); + tok->sym = MACRO; + tok->macroType = 'h'; + if (trace & T_TOK) + printf("HModel: MACRO ~h (.)\n"); + return (SUCCESS); + } + if (c == '<') { /* Read verbose symbol string into buf */ + while ((c=GetCh(src)) != '>' && i < imax) + buf[i++] = islower(c)?toupper(c):c; + buf[i] = '\0'; + if (c != '>') { + HMError(src, "GetToken: > missing in symbol"); + return (FAIL); + } + /* cz277 - 150811 */ +#ifdef USEOLDANNMODEL + if (strcmp(buf, "ACTPARAMS") == 0) + strcpy(buf, "PARAMETER"); + else if (strcmp(buf, "NUMFEAS") == 0) + strcpy(buf, "NUMFEAS"); + else if (strcmp(buf, "INPUTFEA") == 0) + strcpy(buf, "INPUTFEATURE"); + else if (strcmp(buf, "TARGETSRC") == 0) + strcpy(buf, "TARGETSOURCE"); + else if (strcmp(buf, "TARGETIDX") == 0) + strcpy(buf, "TARGETINDEX"); + else if (strcmp(buf, "TARGETPEN") == 0) + strcpy(buf, "TARGETPENALTY"); + else if (strcmp(buf, "AUGFEA") == 0) + strcpy(buf, "AUGFEATURE"); + else if (strcmp(buf, "EXPAND") == 0) + strcpy(buf, "CONTEXTSHIFT"); +#endif + /* This is tacky and has to be fixed*/ + for (sym = 0; sym < NUMSYM; ++sym) /* Look symbol up in symMap */ + if (strcmp(symMap[sym].name, buf) == 0) { + tok->sym = symMap[sym].sym; + if (trace & T_TOK) + printf("HModel: tok=<%s>\n", buf); + return (SUCCESS); /* and return */ + } + } else { + /* Read binary symbol into buf */ + tok->binForm = TRUE; + sym = GetCh(src); + if (sym >= BEGINHMM && sym < PARMKIND) { + if (trace & T_TOK) + printf("HModel: tok=:%s\n", symNames[sym]); + tok->sym = (Symbol)sym; + return (SUCCESS); /* and return */ + } + } - /* if symbol not in symMap then it may be a sampkind */ - if ((tok->pkind = Str2ParmKind(buf)) != ANON){ - tok->sym = PARMKIND; - if (trace&T_TOK) printf("HModel: tok=SK[%s]\n",buf); - return(SUCCESS); - } - strcpy(tmp,"GetToken: Unknown symbol "); - HMError(src,strcat(tmp,buf)); - return(FAIL); + /* if symbol not in symMap then it may be a sampkind */ + if ((tok->pkind = Str2ParmKind(buf)) != ANON) { + tok->sym = PARMKIND; + if (trace & T_TOK) + printf("HModel: tok=SK[%s]\n", buf); + return (SUCCESS); + } + strcpy(tmp, "GetToken: Unknown symbol "); + HMError(src, strcat(tmp, buf)); + return (FAIL); } /* ------------------- HMM 'option' handling ----------------------- */ @@ -596,6 +1371,7 @@ static void OWarn(HMMSet *hset,Boolean equal,char *opt) HRError(-7032,"OWarn: change HMM Set %s",opt); } + /* GetOption: read a HMM option specifier - value set in nState pointer */ static ReturnStatus GetOption(HMMSet *hset, Source *src, Token *tok, int *nState) { @@ -606,7 +1382,8 @@ static ReturnStatus GetOption(HMMSet *hset, Source *src, Token *tok, int *nState Boolean ntok=TRUE; InputXForm* GetInputXForm(HMMSet *hset, Source *src, Token *tok); - + FeaMix *GetFeaMix(HMMSet *hset, Source *src, Token *tok); + switch (tok->sym) { case NUMSTATES: if (!ReadShort(src,&nSt,1,tok->binForm)){ @@ -699,6 +1476,46 @@ static ReturnStatus GetOption(HMMSet *hset, Source *src, Token *tok, int *nState OWarn(hset,hset->swidth[0]==sw[0],"swidth[0]"); for (i=0; i<=sw[0]; i++) hset->swidth[i] = sw[i]; break; + case HMMFEATURESOURCE: /* cz277 - ANN, can be put at the begining of the MMF */ + if (hset->swidth[0] == 0) { + HMError(src, "StreamInfo should be given before HMMFeaSrc"); + return FAIL; + } + if (hset->hsKind == HYBRIDHS || hset->hsKind == ANNHS) { + HMError(src, "HMMFeaSrc is only applicable to ANN-HMM systems"); + return FAIL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + if (tok->sym == STREAM) { + while (tok->sym == STREAM) { + if (!ReadInt(src, &i, 1, tok->binForm)) { + HMError(src, "Stream index expected"); + return FAIL; + } + if (i < 1 || i > hset->swidth[0]) + HMError(src, "Stream index out of range"); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + hset->feaMix[i] = GetFeaMix(hset, src, tok); + hset->feaMix[i]->ownerList[hset->feaMix[i]->ownerNum++] = NULL; + } + ntok = FALSE; + } + else if (tok->sym == NUMFEATURES) { + hset->feaMix[1] = GetFeaMix(hset, src, tok); + hset->feaMix[1]->ownerList[hset->feaMix[1]->ownerNum++] = NULL; + ntok = FALSE; + } + else { + HMError(src, "Feature mixture expected"); + return FAIL; + } + break; case DIAGCOV: OWarn(hset,hset->ckind==DIAGC,"covKind"); hset->ckind = DIAGC; @@ -779,7 +1596,7 @@ BaseClassKind Str2BaseClassKind(char *str) if (!(strcmp(str,"MIXBASE"))) bkind = MIXBASE; else if (!(strcmp(str,"MEANBASE"))) bkind = MEANBASE; else if (!(strcmp(str,"COVBASE"))) bkind = COVBASE; - else HError(999,"Unknown BaseClass kind"); + else HError(7001,"Unknown BaseClass kind"); return bkind; } @@ -793,7 +1610,7 @@ XFormKind Str2XFormKind(char *str) else if (!(strcmp(str,"MLLRVAR"))) xkind = MLLRVAR; else if (!(strcmp(str,"CMLLR"))) xkind = CMLLR; else if (!(strcmp(str,"SEMIT"))) xkind = SEMIT; - else HError(999,"Unknown XForm Class kind"); + else HError(7001,"Unknown XForm Class kind"); return xkind; } @@ -804,10 +1621,72 @@ AdaptKind Str2AdaptKind(char *str) if (!(strcmp(str,"TREE"))) akind = TREE; else if (!(strcmp(str,"BASE"))) akind = BASE; - else HError(999,"Unknown Adapt kind"); + else HError(7001,"Unknown Adapt kind"); return akind; } + +ActFunKind Str2ActFunKind(char *str) +{ + ActFunKind afkind = SIGMOIDAF; + if (!strcmp(str, "AFFINE")) + afkind = AFFINEAF; + else if (!strcmp(str, "HERMITE")) + afkind = HERMITEAF; + else if (!strcmp(str, "LINEAR")) + afkind = LINEARAF; + else if (!strcmp(str, "RELU")) + afkind = RELUAF; + else if (!strcmp(str, "LHUCRELU")) + afkind = LHUCRELUAF; + else if (!strcmp(str, "PRELU")) + afkind = PRELUAF; + else if (!strcmp(str, "PARMRELU")) + afkind = PARMRELUAF; + else if (!strcmp(str, "SIGMOID")) + afkind = SIGMOIDAF; + else if (!strcmp(str, "LHUCSIGMOID")) + afkind = LHUCSIGMOIDAF; + else if (!strcmp(str, "PSIGMOID")) + afkind = PSIGMOIDAF; + else if (!strcmp(str, "PARMSIGMOID")) + afkind = PARMSIGMOIDAF; + else if (!strcmp(str, "SOFTRELU")) + afkind = SOFTRELUAF; + else if (!strcmp(str, "LHUCSOFTRELU")) + afkind = LHUCSOFTRELUAF; + else if (!strcmp(str, "PSOFTRELU")) + afkind = PSOFTRELUAF; + else if (!strcmp(str, "PARMSOFTRELU")) + afkind = PARMSOFTRELUAF; + else if (!strcmp(str, "SOFTMAX")) + afkind = SOFTMAXAF; + else if (!strcmp(str, "TANH")) + afkind = TANHAF; + else + HError(7092, "Unknown activation function kind %s", str); + return afkind; +} + + +/* cz277 - 150811 */ +LayerKind Str2LayerKind(char *str) +{ + LayerKind layerKind=0; + + if (!strcmp(str, "ACTIVATIONONLY")) + layerKind = ACTIVATIONONLYLAK; + else if (!strcmp(str, "CONVOLUTION")) + layerKind = CONVOLUTIONLAK; + else if (!strcmp(str, "PERCEPTRON")) + layerKind = PERCEPTRONLAK; + else if (!strcmp(str, "SUBSAMPLING")) + layerKind = SUBSAMPLINGLAK; + else + HError(7092, "Unknown layer kind %s", str); + return layerKind; +} + /* ---------------------- Input XForm Directory Handling ---------------------- */ /* EXPORT->AddInXFormDir: Add given file name to set */ @@ -815,10 +1694,16 @@ AdaptKind Str2AdaptKind(char *str) void AddInXFormDir(HMMSet *hset, char *dirname) { XFDirLink p,q; + MemHeap *heap; - p = (XFDirLink)New(hset->hmem,sizeof(XFDirInfo)); + if (hset != NULL) + heap = hset->hmem; + else + heap = &xformStack; + /*p = (XFDirLink)New(hset->hmem,sizeof(XFDirInfo));*/ + p = (XFDirLink)New(heap, sizeof(XFDirInfo)); p->next = NULL; - p->dirName = CopyString(hset->hmem,dirname); + p->dirName = CopyString(heap,dirname); if (xformDirNames == NULL) xformDirNames = p; else { /* store in order of arrival */ @@ -1055,6 +1940,7 @@ static ReturnStatus GetOptions(HMMSet *hset, Source *src, Token *tok, int *nStat while (tok->sym == PARMKIND || tok->sym == INVDIAGCOV || tok->sym == HMMSETID || tok->sym == INPUTXFORM || tok->sym == PARENTXFORM || tok->sym == PROJSIZE || + tok->sym == HMMFEATURESOURCE || (tok->sym >= NUMSTATES && tok->sym <= XFORMCOV)){ if(GetOption(hset,src,tok,&p)*nState) *nState = p; } + FreezeOptions(hset); return(SUCCESS); } @@ -1094,6 +1981,29 @@ static Ptr GetStructure(HMMSet *hset, Source *src, char type) return m->structure; } +/* cz277 - semi */ +/*static Ptr GetStructureSafe(HMMSet *hset, Source *src, char type, char *buf) { + LabId id; + MLink m; + + if (!ReadString(src, buf)) { + HRError(7013, "GetStructureSafe: cannot read macro name"); + return NULL; + } + id = GetLabId(buf, FALSE); + if (id == NULL) { + return NULL; + } + m = FindMacroName(hset, type, id); + if (m == NULL) { + HRError(7035, "GetStructureSafe: no macro %s, type %c exists", buf, type); + return NULL; + } + if (trace & T_MAC) + printf("HModel: getting structure ~%c %s -> %p\n", type, buf, m->structure); + return m->structure; +}*/ + static ReturnStatus CheckBaseClass(HMMSet *hset, BaseClass *bclass) { int b,ncomp=0; @@ -1108,14 +2018,14 @@ static ReturnStatus CheckBaseClass(HMMSet *hset, BaseClass *bclass) mp->mIdx = -mp->mIdx; ncomp++; } else { /* item appears in list multiple times */ - HRError(999,"Component specified multiple times"); + HRError(7094,"Component specified multiple times"); return(FAIL); } } } /* have all the components been seen? */ if (ncomp != hset->numMix) { - HRError(999,"Components missing from Base Class list (%d %d)",ncomp,hset->numMix); + HRError(7094,"Components missing from Base Class list (%d %d)",ncomp,hset->numMix); return(FAIL); } /* mIdx is used in HRec, so reset */ @@ -1124,7 +2034,7 @@ static ReturnStatus CheckBaseClass(HMMSet *hset, BaseClass *bclass) mp = ((MixtureElem *)i->item)->mpdf; if (mp->mIdx<0) mp->mIdx = -mp->mIdx; else - HError(999,"CompressItemList: corrupted item list"); + HError(7094,"CompressItemList: corrupted item list"); } } return(SUCCESS); @@ -1146,12 +2056,11 @@ static void AddXFormItem(MemHeap *x, Ptr item, Ptr owner, ILink *list) static void CompressItemList(MemHeap *x, ILink ilist, ILink *bilist) { - ILink i,p; + ILink i; MixPDF *mp; MixtureElem *me; int ncomp=0,ndel=0; - p = NULL; /* the first component can't have already been seen! */ for (i=ilist; i!=NULL; i=i->next) { me = (MixtureElem *)i->item; mp = me->mpdf; @@ -1168,7 +2077,7 @@ static void CompressItemList(MemHeap *x, ILink ilist, ILink *bilist) mp = ((MixtureElem *)i->item)->mpdf; if (mp->mIdx<0) mp->mIdx = -mp->mIdx; else - HError(999,"CompressItemList: corrupted item list"); + HError(7073,"CompressItemList: corrupted item list"); } if ((ndel>0) && (trace&T_XFD)) printf(" CompressItemList: kept %d components, deleted %d components\n",ncomp,ndel); @@ -1225,7 +2134,7 @@ static BaseClass* GetBaseClass(HMMSet *hset,Source *src, Token *tok) /* Now check that things match the HMMSet */ for (i=1;i<=bclass->swidth[0];i++) if (bclass->swidth[i] != hset->swidth[i]) { - HError(999,"Stream width %d [%d] does not match model set [%d]",i,bclass->swidth[i],hset->swidth[i]); + HError(7031,"Stream width %d [%d] does not match model set [%d]",i,bclass->swidth[i],hset->swidth[i]); return(NULL); } if(GetToken(src,tok)swidth[0] != 1) - HError(999," must be specified in multiple stream base classes"); + HError(7030," must be specified in multiple stream base classes"); bclass->swidth = NULL; /* indicates a single stream - don't care */ } if (tok->sym == NUMCLASSES) { @@ -1254,33 +2163,40 @@ static BaseClass* GetBaseClass(HMMSet *hset,Source *src, Token *tok) bclass->ilist = (ILink *)New(hset->hmem,sizeof(ILink)*(nbases+1)); /* Set the indexes for the models - just in case being loaded from a macro */ - if (!indexSet) SetIndexes(hset); - /* BaseClasses Can only refer to physical HMMs for wild cards */ - SetParsePhysicalHMM(TRUE); - for (i=1;i<=nbases;i++) { - if (tok->sym != CLASS) { - HMError(src," symbol expected in GetBaseClass"); - return(NULL); - } - if (!ReadInt(src,&b,1,tok->binForm)){ - HMError(src,"Number of class expected"); - return(NULL); - } - if (b!=i) - HError(999,"Error reading classes in BaseClass"); - ilist= NULL; bclass->ilist[i] = NULL; - PItemList(&ilist,&type,hset,src,(trace&T_PAR)); - CompressItemList(hset->hmem,ilist,bclass->ilist+i); - ResetUtilItemList(); - /* multiple examples of the same component may be specified */ - if(GetToken(src,tok)numLogHMM != 0) { /* cz277 - xform hcopy */ + if (!indexSet) SetIndexes(hset); + /* BaseClasses Can only refer to physical HMMs for wild cards */ + SetParsePhysicalHMM(TRUE); + /* cz277 - xform */ + if (hset->hsKind != HYBRIDHS) { + for (i=1;i<=nbases;i++) { + if (tok->sym != CLASS) { + HMError(src," symbol expected in GetBaseClass"); + return(NULL); + } + if (!ReadInt(src,&b,1,tok->binForm)){ + HMError(src,"Number of class expected"); + return(NULL); + } + if (b!=i) + HError(7030,"Error reading classes in BaseClass"); + ilist= NULL; bclass->ilist[i] = NULL; + PItemList(&ilist,&type,hset,src,(trace&T_PAR)); + CompressItemList(hset->hmem,ilist,bclass->ilist+i); + ResetUtilItemList(); + /* multiple examples of the same component may be specified */ + if(GetToken(src,tok)numLogHMM != 0 && CheckBaseClass(hset,bclass)nUse = 0; } else if (tok->sym==MACRO && tok->macroType=='b'){ if((bclass=(BaseClass *)GetStructure(hset,src,'b'))==NULL){ @@ -1295,6 +2211,7 @@ static BaseClass* GetBaseClass(HMMSet *hset,Source *src, Token *tok) HMError(src," symbol expected in GetBaseClass"); return(NULL); } + bclass->nUse++; return bclass; } @@ -1377,7 +2294,7 @@ static RegTree *GetRegTree(HMMSet *hset, Source *src, Token *tok) return(NULL); } if ((rnode = FindNode(root, NULL, index)) == NULL) - HError(999,"Nodes are expected in numerical order"); + HError(7073,"Nodes are expected in numerical order"); rtree->numNodes ++; if (!ReadInt(src,&nchild,1,tok->binForm)){ HMError(src,"Number of children for regression tree expected"); @@ -1399,7 +2316,7 @@ static RegTree *GetRegTree(HMMSet *hset, Source *src, Token *tok) return(NULL); } if ((rnode = FindNode(root, NULL, index)) == NULL) - HError(999,"Nodes are expected in numerical order"); + HError(7073,"Nodes are expected in numerical order"); rtree->numTNodes ++; if (!ReadInt(src,&nbases,1,tok->binForm)){ HMError(src,"Number of baseclasses for regression base class expected"); @@ -1847,158 +2764,282 @@ static MixPDF *EmptyMixPDF(HMMSet *hset, int vSize, int s) } /* GetStream: parse src and store a StreamElem in pdf array */ -static ReturnStatus GetStream(HMMSet *hset, Source *src, Token *tok, - StreamElem *pdf, short *nMix) -{ - int m,S,M; - short s; - MixtureElem *cpdf; - - S=hset->swidth[0]; - if (trace&T_PAR) { - printf("HModel: GetStream - nMix ="); - for (s=1; s<=S; s++) printf(" %d",nMix[s]); - printf("\n"); - } - s = 1; - if (tok->sym == STREAM) { - if (!ReadShort(src,&s,1,tok->binForm)){ - HMError(src,"Stream Index expected"); - return(FAIL); - } - if (s<1 || s>S){ - HMError(src,"Stream Index out of range"); - return(FAIL); - } - if(GetToken(src,tok)sym == TMIX ) { - if (hset->hsKind == PLAINHS) - hset->hsKind = TIEDHS; - else - if (hset->hsKind != TIEDHS){ +static ReturnStatus GetStream(HMMSet *hset, Source *src, Token *tok, StreamElem *pdf, short *nMix) +{ + int m, S, M, intVal; + short s; + MixtureElem *cpdf; + float floatVal; + + S = hset->swidth[0]; + if (trace & T_PAR) { + printf("HModel: GetStream - nMix ="); + for (s = 1; s <= S; ++s) + printf(" %d", nMix[s]); + printf("\n"); + } + s = 1; + if (tok->sym == STREAM) { + if (!ReadShort(src, &s, 1, tok->binForm)) { + HMError(src, "Stream Index expected"); + return (FAIL); + } + if (s < 1 || s > S){ + HMError(src, "Stream Index out of range"); + return (FAIL); + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return (FAIL); + } + } + M = nMix[s]; + pdf[s].nMix = M; + /* cz277 - ANN */ + if (tok->sym == TARGETSOURCE) { + /* reset nMix */ + nMix[s] = 0; + pdf[s].nMix = 0; + /* set state density kind */ + pdf[s].densKind = ANNDK; + /* Get ~L or ~N */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "The ANN name or layer name for expected"); + return FAIL; + } + if (tok->sym == MACRO) { + if (tok->macroType == 'L') { + pdf[s].targetSrc = (LELink) GetStructure(hset, src, 'L'); + if (pdf[s].targetSrc == NULL) { + HMError(src, "Fail to acquire required "); + return FAIL; + } + /*++pdf[s].targetSrc->nUse;*/ /* cz277 - 150930 */ + } + /*else if (tok->macroType == 'N') { + annDef = (ADLink) GetStructure(hset, src, 'N'); + if (annDef == NULL) { + HRError(9999, "Fail to acquire required "); + return FAIL; + } + ++annDef->nUse; + pdf[s].targetSrc = annDef->layerList[annDef->layerNum - 1]; + }*/ + else { + HRError(7037, "Incompatible MACRO type for target source"); + return FAIL; + } + /* ++pdf[s].targetSrc->nDrv;*/ /* increase the reference count */ + /* set ANNSet.outLayers */ + if (hset->annSet->outLayers[s] == NULL) { + hset->annSet->outLayers[s] = pdf[s].targetSrc; + hset->annSet->outLayers[s]->isFinalLayer = TRUE; + } + else if (hset->annSet->outLayers[s] != pdf[s].targetSrc) { /* if there're multiple output layers */ + HRError(7074, "Multiple output layer in a stream is not supported"); + return FAIL; + } + } + else { + HRError(7037, "Unsupported kind"); + return FAIL; + } + /* */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + if (tok->sym != TARGETINDEX) { + HMError(src, " symbol expected"); + return FAIL; + } + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Target index in current stream expected"); + return FAIL; + } + /*pdf[s].targetIdx = intVal - 1; + if (pdf[s].targetIdx < 0 || pdf[s].targetIdx >= pdf[s].targetSrc->nodeNum) { + HRError(9999, "Target index out of range"); + return FAIL; + }*/ + pdf[s].targetIdx = intVal; + if (pdf[s].targetIdx <= 0 || pdf[s].targetIdx > pdf[s].targetSrc->nodeNum) { + HRError(7075, "Target index out of range"); + return FAIL; + } + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + pdf[s].targetPen = 0.0; + /* (optional) */ + if (tok->sym == TARGETPENALTY) { + if (!ReadFloat(src, &floatVal, 1, tok->binForm)) { + HMError(src, "Target penalty in current stream expected"); + return FAIL; + } + pdf[s].targetPen = floatVal; + if (hset->annSet->penVec[s] == NULL) { + hset->annSet->penVec[s] = CreateNVector(hset->hmem, hset->annSet->outLayers[s]->nodeNum); + hset->annSet->llhMat[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->outLayers[s]->nodeNum); + } + hset->annSet->penVec[s]->vecElems[pdf[s].targetIdx - 1] = pdf[s].targetPen; + + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FAIL; + } + } + /* initialise occAcc */ + pdf[s].occAcc = 0.0; + } + else if (tok->sym == TMIX ) { + pdf[s].densKind = GMMDK; /* cz277 - ANN */ + if (hset->hsKind == PLAINHS) { + hset->hsKind = TIEDHS; + } + else if (hset->hsKind != TIEDHS) { HRError(7032,"GetStream: change to TIEDHS from other than PLAINHS"); - return(FAIL); - } - pdf[s].spdf.tpdf = CreateTME(hset,M); - if((GetTiedMixtures(hset,src,tok,M,s,pdf[s].spdf.tpdf))sym == DPROB) { - if (hset->hsKind == PLAINHS) + return (FAIL); + } + pdf[s].spdf.tpdf = CreateTME(hset, M); + if ((GetTiedMixtures(hset, src, tok, M, s, pdf[s].spdf.tpdf)) < SUCCESS) { + HMError(src, "GetTiedMixtures failed"); + return (FAIL); + } + } + else if (tok->sym == DPROB) { + pdf[s].densKind = GMMDK; /* cz277 - ANN */ + if (hset->hsKind == PLAINHS) hset->hsKind = DISCRETEHS; - else if (hset->hsKind != DISCRETEHS){ + else if (hset->hsKind != DISCRETEHS) { HRError(7032,"GetStream: change to DISCRETEHS from other than PLAINHS"); - return(FAIL); - } - pdf[s].spdf.dpdf = CreateDME(hset,M); - if((GetDiscreteWeights(src,tok,M,pdf[s].spdf.dpdf))sym==MIXTURE) - if((GetMixture(hset,src,tok,M,cpdf))sym == MIXTURE) { + if ((GetMixture(hset, src, tok, M, cpdf)) < SUCCESS) { + HMError(src, "GetMixtures failed"); + return (FAIL); } - for (m=1; m<=M; m++) - if (cpdf[m].mpdf == NULL){ - if((cpdf[m].mpdf = EmptyMixPDF(hset,hset->swidth[s],s))==NULL){ - HMError(src,"EmptyMixPDF failed"); - return(FAIL); - } - cpdf[m].weight = 0.0; + } + for (m = 1; m <= M; ++m) { + if (cpdf[m].mpdf == NULL) { + if ((cpdf[m].mpdf = EmptyMixPDF(hset, hset->swidth[s], s)) == NULL) { + HMError(src, "EmptyMixPDF failed"); + return (FAIL); + } + cpdf[m].weight = 0.0; } - } - return(SUCCESS); + } + } + + return (SUCCESS); } /* GetStateInfo: parse src and return StateInfo structure */ static StateInfo *GetStateInfo(HMMSet *hset, Source *src, Token *tok) { - StateInfo *si; - int i,S; - short nMix[SMAX]; + StateInfo *si; + int i,S; + short nMix[SMAX]; - if (trace&T_PAR) printf("HModel: GetStateInfo\n"); - S = hset->swidth[0]; - if (tok->sym==MACRO && tok->macroType=='s') { - if((si = (StateInfo *)GetStructure(hset,src,'s'))==NULL){ - HMError(src,"GetStructure failed"); - return(NULL); - } - ++si->nUse; - if(GetToken(src,tok)sym == NUMMIXES){ - if (!ReadShort(src,nMix+1,S,tok->binForm)){ - HMError(src,"Num Mix in Each Stream expected"); - return(NULL); - } - if(GetToken(src,tok)hmem,sizeof(StateInfo)); - si->nUse = 0; si->hook = NULL; si->weights = NULL; - si->pdf = CreateSE(hset,S); - if (tok->sym==SWEIGHTS || (tok->sym==MACRO && tok->macroType=='w')){ - if((si->weights = GetSWeights(hset,src,tok))==NULL){ - HMError(src,"GetSWeights failed"); - return(NULL); - } - if (VectorSize(si->weights) != S){ - HMError(src,"Incorrect number of stream weights"); - return(NULL); - } - } - if((GetStream(hset,src,tok,si->pdf,nMix))sym==STREAM) - if((GetStream(hset,src,tok,si->pdf,nMix))swidth[0]; + if (tok->sym == MACRO && tok->macroType == 's') { + if ((si = (StateInfo *) GetStructure(hset, src, 's')) == NULL) { + HMError(src, "GetStructure failed"); return(NULL); - } - if (tok->sym==DURATION || (tok->sym==MACRO && tok->macroType=='d')){ - if((si->dur = GetDuration(hset,src,tok))==NULL){ - HMError(src,"GetDuration failed"); + } + ++si->nUse; + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); return(NULL); - } - } - else - si->dur = NULL; - } - if (S>1 && si->weights == NULL) { - si->weights = CreateSVector(hset->hmem,S); - for (i=1;i<=S;i++) - si->weights[i] = 1.0; - } - return si; -} - + } + } + else { + if (tok->sym == NUMMIXES) { + if (!ReadShort(src, nMix + 1, S, tok->binForm)) { + HMError(src, "Num Mix in Each Stream expected"); + return (NULL); + } + if(GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return (NULL); + } + } + else { + for (i = 1; i <= S; i ++) + nMix[i] = 1; + } + si = (StateInfo *) New(hset->hmem, sizeof(StateInfo)); + si->stateMap = NULL; /* cz277 - ANN */ + si->nUse = 0; + si->hook = NULL; + si->weights = NULL; + si->pdf = CreateSE(hset, S); + if (tok->sym == SWEIGHTS || (tok->sym == MACRO && tok->macroType == 'w')) { + if ((si->weights = GetSWeights(hset, src, tok)) == NULL) { + HMError(src, "GetSWeights failed"); + return(NULL); + } + if (VectorSize(si->weights) != S) { + HMError(src, "Incorrect number of stream weights"); + return (NULL); + } + } + if ((GetStream(hset, src, tok, si->pdf, nMix)) < SUCCESS) { + HMError(src, "GetStream failed"); + return (NULL); + } + while (tok->sym == STREAM) + if ((GetStream(hset, src, tok, si->pdf, nMix)) < SUCCESS) { + HMError(src, "GetStream failed"); + return (NULL); + } + if (tok->sym == DURATION || (tok->sym == MACRO && tok->macroType == 'd')) { + if ((si->dur = GetDuration(hset, src, tok)) == NULL) { + HMError(src, "GetDuration failed"); + return (NULL); + } + } + else + si->dur = NULL; + } + if (S > 1 && si->weights == NULL) { + si->weights = CreateSVector(hset->hmem, S); + for (i = 1; i <= S; i++) + si->weights[i] = 1.0; + } + /* cz277 - ANN */ + /* set HMMSet Kind */ + for (i = 2; i <= S; ++i) { + if (si->pdf[i].densKind != si->pdf[1].densKind) { + /*hset->hsKind = MIXEDHS;*/ + break; + } + } + if (hset->hsKind == PLAINHS && i > S && si->pdf[1].densKind == ANNDK) { + hset->hsKind = HYBRIDHS; + } + + return si; +} + /* GetTransMat: parse src and return Transition Matrix structure */ static SMatrix GetTransMat(HMMSet *hset, Source *src, Token *tok) { @@ -2447,8 +3488,8 @@ static AdaptXForm* GetAdaptXForm(HMMSet *hset, Source *src, Token *tok) int i,b; if (trace&T_PAR) printf("HModel: GetAdaptXForm\n"); - if ((hset->hsKind != PLAINHS) && (hset->hsKind != SHAREDHS)) - HError(999,"Can only estimated transforms with PLAINHS and SHAREDHS!"); + if ((hset->hsKind != PLAINHS) && (hset->hsKind != SHAREDHS) && (hset->hsKind != HYBRIDHS)) + HError(7073,"Can only estimated transforms with PLAINHS and SHAREDHS!"); if (tok->sym == ADAPTKIND) { xform = (AdaptXForm *)New(hset->hmem,sizeof(AdaptXForm)); xform->fname = CopyString(hset->hmem,src->name); @@ -2520,7 +3561,7 @@ static AdaptXForm* GetAdaptXForm(HMMSet *hset, Source *src, Token *tok) if (HardAssign(xform)) { xform->xformWgts.assign = CreateIntVec(hset->hmem,xform->bclass->numClasses); } else - HError(999,"Currently not supported"); + HError(7001,"Currently not supported"); for (i=1;i<=xform->bclass->numClasses;i++) { if(GetToken(src,tok)sym==MACRO && tok->macroType=='a'){ @@ -2575,6 +3616,1345 @@ static AdaptXForm* GetAdaptXForm(HMMSet *hset, Source *src, Token *tok) return xform; } +/* compare different FeaElem pointers */ +Boolean CmpFeaElem(FELink lhFEL, FELink rhFEL) { + /* cz277 - split */ + if (lhFEL == rhFEL) + return TRUE; + if (lhFEL->feaDim != rhFEL->feaDim) + return FALSE; + if (!CmpIntVec(lhFEL->ctxMap, rhFEL->ctxMap)) + return FALSE; + if (lhFEL->inputKind != rhFEL->inputKind) + return FALSE; + if (lhFEL->feaSrc != rhFEL->feaSrc) + return FALSE; + if (lhFEL->dimOff != rhFEL->dimOff) + return FALSE; + /*if (lhFEL->srcDim != rhFEL->srcDim) + return FALSE;*/ + if (lhFEL->streamIdx != rhFEL->streamIdx) + return FALSE; + /* cz277 - aug */ + if (lhFEL->augFeaIdx != rhFEL->augFeaIdx) + return FALSE; + + return TRUE; +} + +static FELink CreateFeaElem(MemHeap *x) { + FELink feaElem; + + feaElem = (FELink) New(x, sizeof(FeaElem)); + memset(feaElem, 0, sizeof(FeaElem)); + return feaElem; +} + +/* GenDefaultFeaMix: generate the default FeaMix structure */ +static FeaMix *GetDefaultInpFeaMix(HMMSet *hset, int streamIdx) +{ + FeaMix *feaMix; + FELink feaElem; + int i; + LabId id; + + if (streamIdx < 1 || streamIdx > hset->swidth[0]) + HError(7075, "GetDefaultInpFeaMix: Default stream index out of range"); + + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(feaMix, 0, sizeof(FeaMix)); + feaMix->elemNum = 1; + feaMix->mixDim = hset->swidth[streamIdx]; + /*feaMix->ownerNum = 0; + feaMix->nUse = 0; + feaMix->mixMats = NULL; + feaMix->ctxPool = NULL;*/ + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + /* search for the default FeaElem*/ + for (i = 0; i < hset->nInp[streamIdx]; ++i) { + feaElem = hset->inpElem[streamIdx][i]; + if (IntVecSize(feaElem->ctxMap) == 1 && feaElem->ctxMap[1] == 0) + break; + } + if (i == hset->nInp[streamIdx]) { /* register a new FeaElem */ + /*feaMix->feaList[0] = (FELink) New(hset->hmem, sizeof(FeaElem)); + feaElem = feaMix->feaList[0]; + feaElem->inputKind = INPFEAIK; + feaElem->ctxMap = CreateIntVec(&gcheap, 1); + feaElem->ctxMap[1] = 0; + feaElem->dimOff = 0; + feaElem->srcDim = hset->swidth[streamIdx]; + feaElem->feaDim = feaElem->srcDim; + feaElem->extDim = feaElem->feaDim * feaElem->ctxMap[0]; + //feaElem->feaMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), feaElem->extDim); + feaElem->feaMats = NULL; + feaElem->ctxPool = NULL; + feaElem->augFeaIdx = 0; + feaElem->feaSrc = NULL; + feaElem->hisLen = 0; + feaElem->hisMat = NULL; + feaElem->nUse = 0;*/ + + feaElem = CreateFeaElem(hset->hmem); + feaElem->inputKind = INPFEAIK; + /*feaElem->ctxMap = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxMap = CreateIntVec(hset->hmem, 1); + feaElem->ctxMap[1] = 0; + feaElem->srcDim = hset->swidth[streamIdx]; + feaElem->feaDim = feaElem->srcDim; + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + /* insert to hset->inpElem[streamIdx] */ + hset->inpElem[streamIdx][hset->nInp[streamIdx]++] = feaElem; + } + else { + feaElem = hset->inpElem[streamIdx][i]; + ++feaElem->nUse; + } + feaMix->feaList[0] = feaElem; + + /*feaMix->mixMat = feaMix->feaList[0]->feaMat;*/ + /* add a new macro */ + id = GetNextANNMacroName("GetDefaultInpFeaMix", hset, 'F'); + NewMacro(hset, 0, 'F', id, feaMix); + + return feaMix; +} + +FeaMix *GetDefaultANNFeaMix(HMMSet *hset, LELink srcLayer) { + FeaMix *feaMix; + FELink feaElem; + LabId id; + + /* gen feature mixture */ + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(feaMix, 0, sizeof(FeaMix)); + feaMix->elemNum = 1; + feaMix->mixDim = srcLayer->nodeNum; + /*feaMix->ownerNum = 0; + feaMix->nUse = 0;*/ + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * 1); + + feaElem = CreateFeaElem(hset->hmem); + feaElem->inputKind = ANNFEAIK; + /*feaElem->ctxMap = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxMap = CreateIntVec(hset->hmem, 1); + feaElem->ctxMap[1] = 0; + feaElem->feaSrc = srcLayer; + ++feaElem->feaSrc->nDrv; + feaElem->srcDim = feaElem->feaSrc->nodeNum; + feaElem->feaDim = feaElem->feaSrc->nodeNum; + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + + /* gen feature element */ + /*feaMix->feaList[0] = (FELink) New(hset->hmem, sizeof(FeaElem)); + feaElem = feaMix->feaList[0]; + feaElem->ctxMap = CreateIntVec(&gcheap, 1); + feaElem->ctxMap[1] = 0; + feaElem->inputKind = ANNFEAIK; + feaElem->feaSrc = srcLayer; + ++feaElem->feaSrc->nDrv; + feaElem->dimOff = 0; + feaElem->srcDim = feaElem->feaSrc->nodeNum; + feaElem->feaDim = feaElem->feaSrc->nodeNum; + feaElem->extDim = feaElem->feaDim * feaElem->ctxMap[0]; + feaElem->feaMats = NULL; + feaElem->ctxPool = NULL; + feaMix->mixMats = NULL; + feaMix->ctxPool = NULL; + feaElem->hisLen = 0; + feaElem->hisMat = NULL; + feaElem->doBackProp = TRUE; + feaElem->augFeaIdx = 0; + feaElem->streamIdx = 0; + feaElem->nUse = 0;*/ + + feaMix->feaList[0] = feaElem; + /* regist a new macro */ + id = GetNextANNMacroName("GetDefaultANNFeaMix", hset, 'F'); + NewMacro(hset, 0, 'F', id, feaMix); + + return feaMix; +} + +static int cmpfuncInt(const void *a, const void *b) { + return (*(int *)a - *(int *)b); +} + +static IntVec GetIntVec(HMMSet *hset, Source *src, Token *tok) +{ + IntVec intVec; + int intVal; + + if (trace & T_PAR) + printf("HModel: GetIntVec\n"); + + /* dim */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Size of the int vector expected"); + return NULL; + } + intVec = CreateIntVec(hset->hmem, intVal); + /* val val val ... */ + if (!ReadIntVec(src, intVec, tok->binForm)) { + HMError(src, "Values of the int vector expected"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + + return intVec; +} + +/* GetFeaMix: parse src and return FeaMix structure */ +FeaMix *GetFeaMix(HMMSet *hset, Source *src, Token *tok) +{ + FeaMix *feaMix; + FELink feaElem; + int intVals[MAXNTOKENARG]; + int i, j, sum; + int augFeaIdx; + + if (trace & T_PAR) + printf("HModel: GetFeaMix\n"); + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'F') { + feaMix = (FeaMix *) GetStructure(hset, src, 'F'); + if (feaMix == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + ++feaMix->nUse; + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else { /* an anonymous feature/feature MACRO definition */ + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(feaMix, 0, sizeof(FeaMix)); + /* num dim (optional) */ + if (tok->sym == NUMFEATURES) { /* a mixture of different features */ + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "Num feature component and total dimension expected"); + return NULL; + } + if (intVals[0] <= 0 || intVals[1] <= 0) { + HMError(src, "Bad feature component number or total dimension"); + return NULL; + } + feaMix->elemNum = intVals[0]; + feaMix->mixDim = intVals[1]; + /* idx dim */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else /* only one feature component */ + feaMix->elemNum = 1; + + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + for (i = 0, sum = 0; i < feaMix->elemNum; ++i, sum += feaElem->extDim) { /* load each feature component */ + /* initialise the FeaElem item */ + feaElem = CreateFeaElem(hset->hmem); + /* idx dim */ + if (tok->sym != FEATURE) { + HMError(src, " expected in GetFeaMix"); + return NULL; + } + /* idx dim */ + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "Feature component index and dimension expected"); + return NULL; + } + if (intVals[0] != (i + 1) || intVals[1] <= 0) { + HMError(src, "Bad feature component index or total dimension"); + return NULL; + } + feaElem->feaDim = intVals[1]; + /* name */ + if (GetToken(src, tok) < SUCCESS || tok->sym != SOURCE) { + HMError(src, "GetToken failed"); + return NULL; + } + else { + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "Feature source expected"); + return NULL; + } + /* name */ + if (tok->sym == MACRO) { + feaElem->inputKind = ANNFEAIK; + if (tok->macroType == 'L') { + feaElem->mType = tok->macroType; + if (!ReadString(src, feaElem->mName)) { + HMError(src, "Failed to read the macro name"); + return NULL; + } + /* all ANNFEAIK are treated as post defined features */ + /*feaElem->feaSrc = NULL;*/ + } + else { + HMError(src, "Incompatible MACRO as feature source"); + return NULL; + } + feaElem->srcDim = -1; + } + else if (tok->sym == AUGFEATURE) { /* cz277 - aug */ + feaElem->inputKind = AUGFEAIK; + /*feaElem->feaSrc = NULL;*/ + if (!ReadInt(src, intVals, 1, tok->binForm)) { + HMError(src, "Stream index for this FeaElem expected"); + return NULL; + } + augFeaIdx = intVals[0]; + if (augFeaIdx < 1 || augFeaIdx > MAXAUGFEAS) { + HMError(src, "Augmented feature index out of range"); + return NULL; + } + feaElem->augFeaIdx = augFeaIdx; + /* augmented feature is treated as a special INPFEAIK type, stored in inpElem, streamIdx 1 */ + feaElem->streamIdx = 1; + feaElem->srcDim = feaElem->feaDim; + } + else if (tok->sym == PARMKIND) { /* symbol is not in symMap; it is a sampKind */ + feaElem->inputKind = INPFEAIK; + /*feaElem->feaSrc = NULL;*/ + if (tok->pkind != hset->pkind) { + HMError(src, "Input feature different from that to the system"); + return NULL; + } + feaElem->streamIdx = 1; + feaElem->srcDim = hset->swidth[feaElem->streamIdx]; + } + else if (tok->sym == STREAM) { + feaElem->inputKind = INPFEAIK; + /*feaElem->feaSrc = NULL;*/ + if (!ReadInt(src, intVals, 1, tok->binForm)) { + HMError(src, "Stream index for this FeaElem expected"); + return NULL; + } + if (intVals[0] < 1 || intVals[0] > hset->swidth[0]) { + HMError(src, "Stream index out of range"); + return NULL; + } + feaElem->streamIdx = intVals[0]; + feaElem->srcDim = hset->swidth[feaElem->streamIdx]; + } + else { + HMError(src, "GetToken failed"); + return NULL; + } + } + /* next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /*feaElem->srcDim = feaElem->extDim;*/ + /* startdim enddim */ + if (tok->sym == DIMRANGE) { + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "The start and the end dimension expected"); + return NULL; + } + feaElem->dimOff = intVals[0] - 1; + if (feaElem->feaDim != (intVals[1] - intVals[0] + 1)) { + HMError(src, "Given dimension range does not match the specified dimension"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + if (tok->sym == CONTEXTSHIFT) { + feaElem->ctxMap = GetIntVec(hset, src, tok); + /* sort the context map */ + qsort(feaElem->ctxMap + 1, IntVecSize(feaElem->ctxMap), sizeof(int), cmpfuncInt); + } + else { + feaElem->ctxMap = CreateIntVec(hset->hmem, 1); + /*feaElem->ctxMap = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxMap[1] = 0; + } + /* check context expansion */ + if (feaElem->inputKind == ANNFEAIK) + for (j = 1; j <= feaElem->ctxMap[0]; ++j) + if (feaElem->ctxMap[j] == 0) + feaElem->doBackProp = TRUE; + /* set dimOff, extDim, srcDim, and feaMat */ + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + + /* cz277 - many */ + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { /* cz277 - aug */ + /* set the shared FeaElem item */ + for (j = 0; j < hset->nInp[feaElem->streamIdx]; ++j) + if (CmpFeaElem(hset->inpElem[feaElem->streamIdx][j], feaElem)) + break; + /* register this new FeaElem */ + if (j == hset->nInp[feaElem->streamIdx]) { + if (j >= MAXINPUSE) { + HRError(7075, "Maximum number of input feature usage reached, try increase MAXINPUSE"); + return NULL; + } + hset->inpElem[feaElem->streamIdx][hset->nInp[feaElem->streamIdx]++] = feaElem; + /*feaMix->feaList[i] = feaElem;*/ + } + else { /* has been registered, share it */ + Dispose(hset->hmem, feaElem); + feaElem = hset->inpElem[feaElem->streamIdx][j]; + ++feaElem->nUse; + } + } + feaMix->feaList[i] = feaElem; + } + + /* set feature mixture dimension when NUMFEATURES omitted */ + if (feaMix->elemNum == 1) + feaMix->mixDim = feaMix->feaList[0]->extDim; + /* check feaDim = sum(subDim * ctxNum) */ + if (feaMix->mixDim != sum) { + HMError(src, "Feature mixture from all sources do not have the same dimension as the claimed"); + return NULL; + } + } + + return feaMix; +} + +/* cz277 - 150824 */ +NMatBundle *FetchNMatBundle(HMMSet *hset, char *macroname) { + LabId id; + MLink m; + NMatBundle *bundle; + + id = GetLabId(macroname, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'M', id)) != NULL) + bundle = (NMatBundle *) m->structure; + else { + if (id == NULL) + id = GetLabId(macroname, TRUE); + bundle = (NMatBundle *) New(hset->hmem, sizeof(NMatBundle)); + memset(bundle, 0, sizeof(NMatBundle)); + bundle->id = id; + bundle->accptr = &bundle->accum; + } + + return bundle; +} + +/* cz277 - 150824 */ +static NMatBundle *GetNMatBundle(HMMSet *hset, Source *src, Token *tok, char *name) { + Matrix floatMat; + int intVals[2]; + NMatBundle *bundle; + LabId id = NULL; + char buf[MAXSTRLEN]; + NMatrix **NMatObj; + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'M') { + bundle = (NMatBundle *) GetStructure(hset, src, 'M'); + if (bundle == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + ++bundle->nUse; + } + else { + if (tok->sym == TARGETMACRO) { + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + if (tok->sym != MACRO || tok->macroType != 'M') { + HMError(src, "M type macro expected for "); + return NULL; + } + if (!ReadString(src, buf)) { + HMError(src, "M type macro name expected for "); + return NULL; + } + id = GetLabId(buf, TRUE); /* SI label id: allow SD NVecs loaded first */ + MakeNameNMatRPL(name, buf, buf); /* buf: SI name to extended name */ + bundle = FetchNMatBundle(hset, buf); + bundle->kind = SDBK; + if (bundle->hook == NULL) + bundle->hook = id; + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else { +#ifdef USEOLDANNMODEL + if (name == NULL) { /* assign auto-name to anonymous SI macro */ + id = GetNextANNMacroName("GetNMatBundle", hset, 'M'); + name = id->name; + HError(-1, "GetNMatBundle: Auto-name %s assgined to anonymous SI macro", name); + } +#endif + bundle = FetchNMatBundle(hset, name); + bundle->kind = SIBK; + bundle->updateflag = TRUE; +#ifdef USEOLDANNMODEL + if (id != NULL) { /* register the anonymous SI macro */ + ++bundle->nUse; + NewMacro(hset, 0, 'M', id, bundle); + } +#endif + } + /* type of parameters */ + switch (tok->sym) { + case UPDATE: NMatObj = &bundle->updates; break; + case NEGLEARNRATE: NMatObj = &bundle->neglearnrates; break; + case SUMSQUAREDGRAD: NMatObj = &bundle->sumsquaredgrad; break; + default: + NMatObj = &bundle->variables; + } + /* read next keyword */ + switch (tok->sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + /*if (!ReadInt(src, intVals, 1, tok->binForm)) { + HMError(src, "Update index expected"); + return NULL; + } + *bundle->accptr = intVals[0];*/ + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + break; + default: + break; + } +#ifdef USEOLDANNMODEL + if (tok->sym == WEIGHT) + tok->sym = MATRIX; +#endif + /* check */ + if (tok->sym != MATRIX) { + HMError(src, " expected"); + return NULL; + } + /* nrows ncols */ + if (!ReadInt(src, intVals, 2, tok->binForm)) { + HMError(src, "Value matrix row and col num expected"); + return NULL; + } + floatMat = CreateMatrix(&gstack, intVals[0], intVals[1]); + if (!ReadMatrix(src, floatMat, tok->binForm)) { + HMError(src, "Read value matrix failed"); + return NULL; + } + if (bundle->kind == SIBK) /* SI parameters */ + *NMatObj = CreateNMatrix(hset->hmem, intVals[0], intVals[1]); + else /* SD parameters (SDBK), no GPU space */ + *NMatObj = CreateHostNMatrix(hset->hmem, intVals[0], intVals[1]); + CopyMatrix2NMatrix(floatMat, *NMatObj); + FreeMatrix(&gstack, floatMat); + + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + + return bundle; +} + + +/* cz277 - 150824 */ +NVecBundle *FetchNVecBundle(HMMSet *hset, char *macroname) { + LabId id; + MLink m; + NVecBundle *bundle; + + id = GetLabId(macroname, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'V', id)) != NULL) + bundle = (NVecBundle *) m->structure; + else { + if (id == NULL) + id = GetLabId(macroname, TRUE); + bundle = (NVecBundle *) New(hset->hmem, sizeof(NVecBundle)); + memset(bundle, 0, sizeof(NVecBundle)); + bundle->id = id; + bundle->accptr = &bundle->accum; + } + + return bundle; +} + +/* cz277 - xform */ +static NVecBundle *GetNVecBundle(HMMSet *hset, Source *src, Token *tok, char *name) +{ + int intVal; + Vector floatVec; + NVecBundle *bundle; + LabId id = NULL; + char buf[MAXSTRLEN]; + NVector **NVecObj; + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'V') { + bundle = (NVecBundle *) GetStructure(hset, src, 'V'); + if (bundle == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + ++bundle->nUse; + } + else { + if (tok->sym == TARGETMACRO) { /* speaker dependent (SDBK) */ + if (name == NULL) { + HMError(src, "GetNVecBundle: Only SI parameter can have NULL name input"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + if (tok->sym != MACRO || tok->macroType != 'V') { + HMError(src, "V type macro expected for "); + return NULL; + } + if (!ReadString(src, buf)) { + HMError(src, "V type macro name expected for "); + return NULL; + } + id = GetLabId(buf, TRUE); /* SI label id: allow SD NVecs loaded first */ + MakeNameNVecRPL(name, buf, buf); /* buf: SI name to extended name */ + bundle = FetchNVecBundle(hset, buf); + bundle->kind = SDBK; + if (bundle->hook == NULL) + bundle->hook = id; + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + else { +#ifdef USEOLDANNMODEL + if (name == NULL) { /* assign auto-name to anonymous SI macro */ + id = GetNextANNMacroName("GetNVecBundle", hset, 'V'); + name = id->name; + HError(-1, "GetNVecBundle: Auto-name %s assgined to anonymous SI macro", name); + } +#endif + bundle = FetchNVecBundle(hset, name); + bundle->kind = SIBK; + bundle->updateflag = TRUE; +#ifdef USEOLDANNMODEL + if (id != NULL) { /* register the anonymous SI macro */ + ++bundle->nUse; + NewMacro(hset, 0, 'V', id, bundle); + } +#endif + } + /* type of parameters */ + switch (tok->sym) { + case UPDATE: NVecObj = &bundle->updates; break; + case NEGLEARNRATE: NVecObj = &bundle->neglearnrates; break; + case SUMSQUAREDGRAD: NVecObj = &bundle->sumsquaredgrad; break; + default: + NVecObj = &bundle->variables; + } + /* read next keyword */ + switch (tok->sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + /*if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Update index expected"); + return NULL; + } + *bundle->accptr = intVal;*/ + /* read the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + break; + default: + break; + } +#ifdef USEOLDANNMODEL + if (tok->sym == BIAS) + tok->sym = VECTOR; +#endif + /* */ + if (tok->sym != VECTOR) { + HMError(src, " expected"); + return NULL; + } + /* size */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Vector size expected"); + return NULL; + } + floatVec = CreateVector(&gstack, intVal); + if (!ReadVector(src, floatVec, tok->binForm)) { + HMError(src, "Read vector failed"); + return NULL; + } + if (bundle->kind == SIBK) + *NVecObj = CreateNVector(hset->hmem, intVal); + else + *NVecObj = CreateHostNVector(hset->hmem, intVal); + CopyVector2NVector(floatVec, *NVecObj); + FreeVector(&gstack, floatVec); + + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + + return bundle; +} + + +LELink GenBlankLayer(MemHeap *heap) { + LELink layerElem; + + layerElem = (LELink) New(heap, sizeof(LayerElem)); + memset(layerElem, 0, sizeof(LayerElem)); + layerElem->layerKind = PERCEPTRONLAK; + layerElem->isFinalLayer = FALSE; + layerElem->actfunKind = SIGMOIDAF; + /*memset(layerElem->actFunInfo.actParmVec, 0, sizeof(NVecBundle *) * MAXNACTFUNPARMVEC);*/ + + /* cz277 - pact */ + /*layerElem->actFunInfo.actFunKind = SIGMOIDAF; + memset(layerElem->actFunInfo.actParmVec, 0, sizeof(NVector *) * MAXNACTFUNPARMVEC); + layerElem->feaMix = NULL; + layerElem->errMix = NULL; + layerElem->nUse = 0; + layerElem->nDrv = 0; + layerElem->ownerCnt = 0; + layerElem->ownerHead = NULL; + layerElem->ownerTail = NULL; + layerElem->trainInfo = NULL; + layerElem->xFeaMats = NULL; + layerElem->yFeaMats = NULL; + layerElem->drvCtx = NULL; + layerElem->layerKind = PERCEPTRONLAK; + layerElem->isFinalLayer = FALSE; + layerElem->wghtMat = NULL; + layerElem->biasVec = NULL;*/ + + return layerElem; +} + +/* generate a new ANN layer and randomise it */ +/*LELink GenNewPerceptronLayer(HMMSet *hset, int nodeNum, int inputDim, char *wghtName, char *biasName) { + LELink layerElem; + + layerElem = GenBlankLayer(hset->hmem); + layerElem->nodeNum = nodeNum; + layerElem->inputDim = inputDim; + layerElem->wghtMat = FetchNMatBundle(hset, wghtName); + if (layerElem->wghtMat->variables == NULL) { + layerElem->wghtMat->variables = CreateNMatrix(hset->hmem, nodeNum, inputDim); + layerElem->wghtMat->kind = SIBK; + } + else { + if (layerElem->wghtMat->variables->rowNum != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix row"); + if (layerElem->wghtMat->variables->colNum != inputDim) + HError(9999, "GenNewPerceptronLayer: Wrong weight matrix column"); + } + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + layerElem->biasVec = FetchNVecBundle(hset, biasName); + if (layerElem->biasVec->variables == NULL) { + layerElem->biasVec->variables = CreateNVector(hset->hmem, nodeNum); + layerElem->biasVec->kind = SIBK; + } + else if (layerElem->biasVec->variables->vecLen != nodeNum) + HError(9999, "GenNewPerceptronLayer: Wrong bias vector length"); + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + + return layerElem; +}*/ + +Boolean CheckActFunParameters(LELink layerElem) { + char buf[MAXSTRLEN]; + int var, i; + + /* 0. return if non-parametric activation function */ + switch (layerElem->actfunKind) { + case LINEARAF: + case RELUAF: + case SIGMOIDAF: + case SOFTRELUAF: + case SOFTMAXAF: + case TANHAF: + if (layerElem->actfunVecs == NULL) + return TRUE; + else { + HRError(7050, "CheckActFunParameters: %s should have no variables", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + default: + break; + } + /* 1. check hyper variables */ + switch (layerElem->actfunKind) { + /*case HERMITEAF: + if (layerElem->actfunVecs[0] == NULL) { + HRError(7050, "CheckActFunParameters: Hyper variable expected for %s", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + break;*/ + default: + if (layerElem->actfunVecs[0] != NULL) { + HRError(7050, "CheckActFunParameters: Hyper variable cannot be set for %s", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + } + /* 2. check the common variable vector number */ + switch (layerElem->actfunKind) { + case AFFINEAF: var = 2; break; + case HERMITEAF: + if (layerElem->actfunParmNum == 0) { + HRError(7050, "CheckActFunParameters: %s expect common variables", ActFunKind2Str(layerElem->actfunKind, buf)); + return FALSE; + } + var = layerElem->actfunParmNum; + break; + case LHUCRELUAF: var = 1; break; + case PRELUAF: var = 1; break; + case PARMRELUAF: var = 2; break; + case LHUCSIGMOIDAF: var = 1; break; + case PSIGMOIDAF: var = 1; break; + case PARMSIGMOIDAF: var = 3; break; + case LHUCSOFTRELUAF: var = 1; break; + case PSOFTRELUAF: var = 1; break; + case PARMSOFTRELUAF: var = 3; break; + default: var = 0; + } + if (var != layerElem->actfunParmNum) { + HRError(7050, "CheckActFunParameters: %s should have %d vectors of common variables", ActFunKind2Str(layerElem->actfunKind, buf), var); + return FALSE; + } + /* check the vector dims */ + switch (layerElem->actfunKind) { + case AFFINEAF: + case HERMITEAF: + case LHUCRELUAF: + case PRELUAF: + case PARMRELUAF: + case LHUCSIGMOIDAF: + case PSIGMOIDAF: + case PARMSIGMOIDAF: + case LHUCSOFTRELUAF: + case PSOFTRELUAF: + case PARMSOFTRELUAF: + for (i = 1; i <= layerElem->actfunParmNum; ++i) + if (layerElem->actfunVecs[i] == NULL || layerElem->actfunVecs[i]->variables->vecLen != layerElem->nodeNum) + HError(7072, "CheckActFunParameters: Wrong activation function parameter vector sizes"); + break; + default: + break; + } + return TRUE; +} + +/* cz277 - pact */ +static Boolean GetActFunVectors(Source *src, Token *tok, HMMSet *hset, LELink layerElem) { + int i, nVec = 0, vecIdx; + NVecBundle *hyperVec = NULL; + char buf[MAXSTRLEN]; + + if (tok->sym != ACTIVATION) { + HMError(src, " symbol expected"); + return FALSE; + } + /* load activation function kind */ + if (!ReadString(src, buf)) { + HMError(src, "Activation function kind expected"); + return FALSE; + } + layerElem->actfunKind = Str2ActFunKind(buf); + /* get the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + /* get the control/hyper variable vector (optional) */ + if (tok->sym == HYPERPARAMETER) { + hyperVec = GetNVecBundle(hset, src, tok, NULL); + /* get the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + } + /* get the number of variable vectors (optional) */ + if (tok->sym == NUMPARAMETERS) { + if (!ReadInt(src, &nVec, 1, tok->binForm)) { + HMError(src, "Integer expected for "); + return FALSE; + } + if (nVec <= 0) + HError(7075, "GetActFunVectors: must be positive interger"); + /* get the next token */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + } + /* get the common variable vectors */ + if (nVec == 0 && tok->sym == PARAMETER) + nVec = 1; + /* set variable vector number and load the variable vectors */ + layerElem->actfunParmNum = nVec; + if (hyperVec != NULL || nVec > 0) { + layerElem->actfunVecs = (NVecBundle **) New(hset->hmem, sizeof(NVecBundle *) * (nVec + 1)); + memset(layerElem->actfunVecs, 0, sizeof(NVecBundle *) * (nVec + 1)); + layerElem->actfunVecs[0] = hyperVec; + /* load each */ + while (tok->sym == PARAMETER) { + if (!ReadInt(src, &vecIdx, 1, tok->binForm)) { + HMError(src, "Integer index expected for "); + return FALSE; + } + if (vecIdx <= 0 || vecIdx > nVec) { + HMError(src, " index should be positive and smaller than "); + return FALSE; + } + if (layerElem->actfunVecs[vecIdx] != NULL) { + HMError(src, "Multiple defined with the same index"); + return FALSE; + } + layerElem->actfunVecs[vecIdx] = GetNVecBundle(hset, src, tok, NULL); + } + /* sanity check */ + for (i = 1; i <= nVec; ++i) { + if (layerElem->actfunVecs[i] == NULL) { + HMError(src, " defination missing"); + return FALSE; + } + } + if (CheckActFunParameters(layerElem) == FALSE) { + HMError(src, "Activation function have wrong vectors of variables"); + return FALSE; + } + } + /* setup the tracing list */ + if (layerElem->actfunVecs != NULL) { + for (i = 0; i<= nVec; ++i) { + layerElem->actfunVecs[i]->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->actfunVecs[i]->hook); + /*++layerElem->actfunVecs[i]->nUse;*/ + } + } + + return TRUE; +} + +/* cz277 - 150811 */ +static Boolean GetActivationOnlyLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + HError(7001, "GetActivationOnlyLayer: Function not implemented yet!"); + return FALSE; +} + +static Boolean GetConvolutionLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + HError(7001, "GetConvolutionLayer: Function not implemented yet!"); + return FALSE; +} + +static Boolean GetPerceptronLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + /* 1. WEIGHT */ + if (tok->sym != WEIGHT) { + HMError(src, " symbol expected"); + return FALSE; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + layerElem->wghtMat = GetNMatBundle(hset, src, tok, NULL); + layerElem->wghtMat->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + /*++layerElem->wghtMat->nUse;*/ + layerElem->nodeNum = NumNRows(layerElem->wghtMat->variables); + layerElem->inputDim = NumNCols(layerElem->wghtMat->variables); + /* 2. BIAS */ + if (tok->sym != BIAS) { + HMError(src, " symbol expected"); + return FALSE; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return FALSE; + } + layerElem->biasVec = GetNVecBundle(hset, src, tok, NULL); + layerElem->biasVec->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + /*++layerElem->biasVec->nUse;*/ + /* Safety check */ + if (layerElem->nodeNum != NVectorSize(layerElem->biasVec->variables)) { + HRError(7072, "Input weight matrix and bias vector row do not match"); + return FALSE; + } + /* 3. ACTIVATION */ + if (tok->sym != ACTIVATION) { + HMError(src, " symbol expected"); + return FALSE; + } + if (GetActFunVectors(src, tok, hset, layerElem) == FALSE) { + HMError(src, "Fail to load activation function"); + return FALSE; + } + + return TRUE; +} + +static Boolean GetSubsamplingLayer(HMMSet *hset, Source *src, Token *tok, LELink layerElem) +{ + HError(7001, "GetSubsamplingLayer: Function not implemented yet!"); + return FALSE; +} + +/* cz277 - 150811 */ +static LELink GetLayerElem(HMMSet *hset, Source *src, Token *tok) +{ + LELink layerElem; + char buf[MAXSTRLEN]; + /* cz277 - gradprobe */ +#ifdef GRADPROBE + int probeSegNum; +#endif + + if (trace & T_PAR) + printf("HModel: GetLayerElem\n"); + + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'L') { + layerElem = (LELink) GetStructure(hset, src, 'L'); + if (layerElem == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + ++layerElem->nUse; + } + else { + layerElem = GenBlankLayer(hset->hmem); + /* assign auto-name to anonymous macro */ + /*if (name == NULL) { + id = GetNextANNMacroName("GetLayerElem", hset, 'L'); + name = id->name; + HError(-1, "GetLayerElem: Auto-name %s assgined to anonymous macro", name); + NewMacro(hset, fidx, 'L', id, layerElem); + }*/ + + /* the default input will be parmkind if it is an input layer; + otherwise the input will be the output of its previous layer. + these new features will be assigned later when defining ANNDef. + */ +#ifdef USEOLDANNMODEL + if (tok->sym == OPERAND) { + if (!ReadString(src, buf)) { + HMError(src, "Operand kind expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + if (tok->sym == ACTIVATION) { + if (!ReadString(src, buf)) { + HMError(src, "Activation function kind expected"); + return NULL; + } + layerElem->actfunKind = Str2ActFunKind(buf); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } + if (tok->sym == INPUTFEATURE) { + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + layerElem->feaMix = GetFeaMix(hset, src, tok); + if (layerElem->feaMix == NULL) { + HMError(src, "GetFeaMix failed"); + return NULL; + } + layerElem->feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + } + if (tok->sym != WEIGHT) { + HMError(src, " symbol expected"); + return NULL; + } + layerElem->wghtMat = GetNMatBundle(hset, src, tok, NULL); + layerElem->wghtMat->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + ++layerElem->wghtMat->nUse; +#ifdef CUDA + RegisterTmpNMat(1, layerElem->nodeNum); +#endif + if (tok->sym != BIAS) { + HMError(src, " symbol expected"); + return NULL; + } + /*layerElem->biasVec = GetNVector(hset, src, tok);*/ + layerElem->biasVec = GetNVecBundle(hset, src, tok, NULL); + layerElem->biasVec->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + ++layerElem->biasVec->nUse; + layerElem->nodeNum = NumNRows(layerElem->wghtMat->variables); + layerElem->inputDim = NumNCols(layerElem->wghtMat->variables); + } + else { +#endif /* USEOLDANNMODEL */ + + /* 1. */ + if (tok->sym != BEGINLAYER) { + HMError(src, " symbol expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* 2. */ + if (tok->sym != LAYERKIND) { + HMError(src, " symbol expected"); + return NULL; + } + if (!ReadString(src, buf)) { + HMError(src, "Layer kind expected"); + return NULL; + } + layerElem->layerKind = Str2LayerKind(buf); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* 3. ... */ + if (tok->sym != INPUTFEATURE) + HMError(src, " symbol expected"); + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + layerElem->feaMix = GetFeaMix(hset, src, tok); + if (layerElem->feaMix == NULL) { + HMError(src, "GetFeaMix failed"); + return NULL; + } + layerElem->feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + /* 4. load the rest fields */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: GetActivationOnlyLayer(hset, src, tok, layerElem); break; + case CONVOLUTIONLAK: GetConvolutionLayer(hset, src, tok, layerElem); break; + case PERCEPTRONLAK: GetPerceptronLayer(hset, src, tok, layerElem); break; + case SUBSAMPLINGLAK: GetSubsamplingLayer(hset, src, tok, layerElem); break; + default: + HMError(src, "Unknown layer kind"); + return NULL; + } + /* 5. (optional) */ + if (tok->sym != ENDLAYER) { + HMError(src, " symbol expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* cz277 - max norm */ +#ifdef CUDA + RegisterTmpNMat(1, layerElem->nodeNum); +#endif + +#ifdef USEOLDANNMODEL + } +#endif + + /* cz277 - gradprobe */ +#ifdef GRADPROBE + probeSegNum = PROBEBOUNDARY / PROBERESOLUTE * 2 + 1; + layerElem->wghtGradInfoVec = CreateDVector(hset->hmem, probeSegNum); + layerElem->biasGradInfoVec = CreateDVector(hset->hmem, probeSegNum); +#endif + } + + return layerElem; +} + + +static ADLink GetANNDef(HMMSet *hset, Source *src, Token *tok) +{ + char buf[MAXSTRLEN]; + int i, intVal; + AILink annInfo; + AILink curInfo; + ADLink annDef; + + if (trace & T_PAR) + printf("HModel: GetANNDef\n"); + + /* cz277 - 1015 */ + if (hset->annSet == NULL) + InitANNSet(hset); + + if (tok->sym == MACRO && tok->macroType == 'N') { + annDef = (ADLink) GetStructure(hset, src, 'N'); + if (annDef == NULL) { + HMError(src, "GetStructure failed"); + return NULL; + } + ++annDef->nUse; + } + else if (tok->sym == BEGINANN) { /* */ + annDef = (ADLink) New(hset->hmem, sizeof(ANNDef)); + annDef->nUse = 0; + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } +#ifdef USEOLDANNMODEL + if (tok->sym == ANNKIND) { + if (!ReadString(src, buf)) { + HMError(src, "ANN kind expected"); + return NULL; + } + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + } +#endif + /* num */ + if (tok->sym != NUMLAYERS) { + HMError(src, " symbol expected"); + return NULL; + } + /* num */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Layer num expected"); + return NULL; + } + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + annDef->layerNum = intVal - 1; /* since the first layer is a logical */ + annDef->layerList = (LELink *) New(hset->hmem, sizeof(LELink) * annDef->layerNum); + /* idx */ + for (i = 0; i < annDef->layerNum; ++i) { + if (tok->sym != LAYER) { + HMError(src, " symbol expected"); + return NULL; + } + /* idx */ + if (!ReadInt(src, &intVal, 1, tok->binForm)) { + HMError(src, "Layer index expected"); + return NULL; + } + if (intVal != i + 2) { /* position 0 stores layer 2 */ + HMError(src, "Bad layer index number"); + return NULL; + } + /* read next keyword */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + /* layer def or name */ + annDef->layerList[i] = GetLayerElem(hset, src, tok); + /* set owner and index */ + annInfo = (AILink) New(hset->hmem, sizeof(ANNInfo)); + annInfo->annDef = annDef; + annInfo->index = i; + if (annDef->layerList[i]->ownerHead == NULL) { /* empty bi-direct chain */ + annDef->layerList[i]->ownerHead = annInfo; + annDef->layerList[i]->ownerTail = annInfo; + annInfo->next = NULL; + annInfo->prev = NULL; + } + else { /* otherwise, add to the tail of the link */ + curInfo = annDef->layerList[i]->ownerTail; + curInfo->next = annInfo; + annInfo->next = NULL; + annInfo->prev = curInfo; + annDef->layerList[i]->ownerTail = annInfo; + } + ++annDef->layerList[i]->ownerCnt; + /* forbid layer sharing at present */ + if (annDef->layerList[i]->ownerCnt > 1) { + HMError(src, "Layer cannot be shared by multiple ANNs"); + return NULL; + } + } + /* */ + if (tok->sym != ENDANN) { + HMError(src, " symbol expected"); + return NULL; + } + + /* set numTargets */ + annDef->targetNum = annDef->layerList[annDef->layerNum - 1]->nodeNum; + } + else { + HMError(src, " symbol expected in GetANNDef"); + return NULL; + } + /* read next symbol */ + if (GetToken(src, tok) < SUCCESS) { + HMError(src, "GetToken failed"); + return NULL; + } + + return annDef; +} + /* ---------------------- Symbol Output Routine ------------------------ */ /* PutSymbol: output symbol to f in ascii or binary form */ @@ -2726,16 +5106,30 @@ void PutDiscrete(FILE *f, StreamElem *se, Boolean binary) static void PutMacroHdr(HMMSet *hset, FILE *f, MLink m, char mType, Ptr ptr, Boolean binary) { - if (m==NULL) - m = FindMacroStruct(hset,mType,ptr); - if (m != NULL) { - if (m->type != mType) - HError(7091,"PutMacroHdr: Macro type error ~%c vs ~%c",m->type, mType); - fprintf(f,"~%c %s",mType,ReWriteString(m->id->name,NULL,DBL_QUOTE)); - if (!binary) fprintf(f,"\n"); - return; + /* cz277 - 150811 */ + int offset = 0; + LabId id = NULL; + + if (m == NULL) + m = FindMacroStruct(hset, mType, ptr); + if (m != NULL) { + if (m->type != mType) + HError(7091, "PutMacroHdr: Macro type error ~%c vs ~%c", m->type, mType); + + /* cz277 - 150811 */ + if (m->type == 'M' && ((NMatBundle *) m->structure)->kind == SDBK) + id = (LabId) ((NMatBundle *) m->structure)->hook; + if (m->type == 'V' && ((NVecBundle *) m->structure)->kind == SDBK) + id = (LabId) ((NVecBundle *) m->structure)->hook; + if (id != NULL) + offset = strlen(id->name) + 1; + + fprintf(f, "~%c %s", mType, ReWriteString(m->id->name + offset, NULL, DBL_QUOTE)); /* cz277 - 150811 */ + if (!binary) fprintf(f, "\n"); + + return; } - HError(7035,"PutMacroHdr: Unable to find ~%c Macro to write",mType); + HError(7035, "PutMacroHdr: Unable to find ~%c Macro to write", mType); } @@ -2944,7 +5338,7 @@ static void GetMixPDFInfo(HMMSet *hset, HMMDef *hmm, MixtureElem *tme, int *stat } if (found) break; } - if (*state==0) HError(999,"GetMixPDFInfo: component not found"); + if (*state==0) HError(7073,"GetMixPDFInfo: component not found"); } @@ -2959,7 +5353,7 @@ static void PutBaseClass(HMMSet *hset, FILE *f, MLink q, BaseClass *bclass, HMMDef *hmm; if (bclass->fname == NULL) - HError(999,"Can only PutBaseClass with baseclasses that have been read"); + HError(7073,"Can only PutBaseClass with baseclasses that have been read"); if (bclass->nUse >0 || inMacro) PutMacroHdr(hset,f,q,'b',bclass,binary); if (bclass->nUse == 0 || inMacro) { @@ -3049,6 +5443,400 @@ static void PutMixPDF(HMMSet *hset, FILE *f, MLink q, MixPDF *mp, } } +/* cz277 - ANN */ +static void PutLayerElem(HMMSet *hset, FILE *f, MLink q, LELink layerElem, Boolean inMacro, Boolean binary); +static void PutANNDef(HMMSet *hset, FILE *f, MLink q, ADLink annDef, Boolean inMacro, Boolean binary); + +/* cz277 - ANN */ +static void PutFeaMix(HMMSet *hset, FILE *f, MLink q, FeaMix *feaMix, Boolean inMacro, Boolean binary) +{ + int i, j, s, sIdx, intVal; + FELink feaElem; + char buf[MAXSTRLEN]; + + if (feaMix->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'F', feaMix, binary); + if (feaMix->nUse == 0 || inMacro) { + /* num dim (optional) */ + if (feaMix->elemNum > 1) { + PutSymbol(f, NUMFEATURES, binary); + WriteInt(f, &feaMix->elemNum, 1, binary); + WriteInt(f, &feaMix->mixDim, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + /* output each FeaElem */ + for (i = 0; i < feaMix->elemNum; ++i) { + /* get current feature element */ + feaElem = feaMix->feaList[i]; + /* idx dim */ + PutSymbol(f, FEATURE, binary); + intVal = i + 1; + WriteInt(f, &intVal, 1, binary); + WriteInt(f, &feaElem->feaDim, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* name */ + PutSymbol(f, SOURCE, binary); + if (feaElem->inputKind == ANNFEAIK) { + if (!binary) + fprintf(f, " "); + if (feaElem->feaSrc->nUse > 0) { /* use ~L */ + PutLayerElem(hset, f, NULL, feaElem->feaSrc, FALSE, binary); + } + } + else if (feaElem->inputKind == AUGFEAIK) { /* cz277 - aug */ + /* idx */ + if (!binary) + fprintf(f, " "); + PutSymbol(f, AUGFEATURE, binary); + WriteInt(f, &feaElem->augFeaIdx, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + else if (feaElem->inputKind == INPFEAIK) { + if (hset->swidth[0] == 1) { /* if only 1 stream */ + if (!binary) + fprintf(f, " "); + fprintf(f, "<%s>", ParmKind2Str(hset->pkind, buf)); + } + else { + /* look for the right stream index */ + sIdx = -1; + for (s = 1; s <= hset->swidth[0]; ++i) { + for (j = 0; j < hset->nInp[s]; ++j) { + if (hset->inpElem[s][j] == feaElem) { + sIdx = s; + break; + } + } + if (sIdx > 0) + break; + } + if (sIdx == -1) + HError(7075, "PutFeaMix: Input feature stream index out of range"); + /* idx */ + if (!binary) + fprintf(f, " "); + PutSymbol(f, STREAM, binary); + WriteInt(f, &sIdx, 1, binary); + } + if (!binary) + fprintf(f, "\n"); + } + else + HError(7092, "PutFeaMix: Unsupported FeaElem source kind"); + /* cz277 - split2 */ + /* stdim eddim */ + if (!(feaElem->dimOff == 0 && feaElem->feaDim == feaElem->srcDim)) { + PutSymbol(f, DIMRANGE, binary); + intVal = feaElem->dimOff + 1; + WriteInt(f, &intVal, 1, binary); + intVal = feaElem->dimOff + feaElem->feaDim; + WriteInt(f, &intVal, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + /* winlen (optional) */ + /*if ((feaElem->inputKind != AUGFEAIK) && (!(feaElem->ctxMap[0] == 1 && feaElem->ctxMap[1] == 0))) {*/ + /* cz277 - gap */ + if (feaElem->inputKind != AUGFEAIK) { + PutSymbol(f, CONTEXTSHIFT, binary); + WriteInt(f, &feaElem->ctxMap[0], 1, binary); + if (!binary) + fprintf(f, "\n"); + WriteInt(f, &feaElem->ctxMap[1], feaElem->ctxMap[0], binary); + if (!binary) + fprintf(f, "\n"); + } + } + } +} + +static void PutNVecBundle(HMMSet *hset, FILE *f, MLink q, NVecBundle *bundle, Symbol sym, Boolean inMacro, Boolean binary) +{ + Vector floatVec; + int nlen; + MLink m=NULL; + + if (bundle->kind == SDBK) { + if ((m = FindMacroName(hset, 'V', (LabId) bundle->hook)) == NULL) + return; + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + return; + default: break; + } + } + + if (bundle->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'V', bundle, binary); + if (bundle->nUse == 0 || inMacro) { + if (bundle->kind == SDBK) { + PutSymbol(f, TARGETMACRO, binary); + if(m==NULL) + HError(7000,"PutNVecBundle: Bundle macro not initialised"); + PutMacroHdr(hset, f, q, 'V', (NVecBundle *) m->structure, binary); + } + if (bundle->variables == NULL) + HError(7000, "PutNVecBundle: Bundle structure should have variables field initialised"); + nlen = (int) bundle->variables->vecLen; + floatVec = CreateVector(&gstack, nlen); + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + PutSymbol(f, sym, binary); + if (!binary) + fprintf(f, "\n"); + break; + default: + break; + } + switch (sym) { + /*case 'g': CopyNVector2Vector(bundle->gradients, floatVec); break;*/ + case UPDATE: CopyNVector2Vector(bundle->updates, floatVec); break; + case NEGLEARNRATE: CopyNVector2Vector(bundle->neglearnrates, floatVec); break; + case SUMSQUAREDGRAD: CopyNVector2Vector(bundle->sumsquaredgrad, floatVec); break; + default: CopyNVector2Vector(bundle->variables, floatVec); + } + + PutSymbol(f, VECTOR, binary); + WriteInt(f, &nlen, 1, binary); + if (!binary) + fprintf(f, "\n"); + WriteVector(f, floatVec, binary); + FreeVector(&gstack, floatVec); + } +} + + +static void PutNMatBundle(HMMSet *hset, FILE *f, MLink q, NMatBundle *bundle, Symbol sym, Boolean inMacro, Boolean binary) { + Matrix floatMat; + int nrows, ncols; + MLink m=NULL; + + if (bundle->kind == SDBK && (m = FindMacroName(hset, 'M', (LabId) bundle->hook)) == NULL) + return; + if (bundle->kind == SDBK) { + if ((m = FindMacroName(hset, 'M', (LabId) bundle->hook)) == NULL) + return; + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + return; + default: break; + } + } + + if (bundle->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'M', bundle, binary); + if (bundle->nUse == 0 || inMacro) { + if (bundle->kind == SDBK) { + PutSymbol(f, TARGETMACRO, binary); + if(m==NULL) + HError(7000,"PutNMatBundle: Bundle macro not initialised"); + PutMacroHdr(hset, f, q, 'M', (NMatBundle *) m->structure, binary); + } + if (bundle->variables == NULL) + HError(7000, "PutNMatBundle: Bundle structure should have variables field initialised"); + nrows = (int) bundle->variables->rowNum; + ncols = (int) bundle->variables->colNum; + floatMat = CreateMatrix(&gstack, nrows, ncols); + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + PutSymbol(f, sym, binary); + /*batchIndex = (int) (*bundle->accptr); + WriteInt(f, &batchIndex, 1, binary);*/ + if (!binary) + fprintf(f, "\n"); + break; + default: + break; + } + switch (sym) { + /*case 'g': CopyNMatrix2Matrix(bundle->gradients, floatMat); break;*/ + case UPDATE: CopyNMatrix2Matrix(bundle->updates, floatMat); break; + case NEGLEARNRATE: CopyNMatrix2Matrix(bundle->neglearnrates, floatMat); break; + case SUMSQUAREDGRAD: CopyNMatrix2Matrix(bundle->sumsquaredgrad, floatMat); break; + default: CopyNMatrix2Matrix(bundle->variables, floatMat); + } + PutSymbol(f, MATRIX, binary); + WriteInt(f, &nrows, 1, binary); + WriteInt(f, &ncols, 1, binary); + if (!binary) + fprintf(f, "\n"); + WriteMatrix(f, floatMat, binary); + FreeMatrix(&gstack, floatMat); + } +} + +/* cz277 - ANN */ +static void PutLayerElem(HMMSet *hset, FILE *f, MLink q, LELink layerElem, Boolean inMacro, Boolean binary) +{ + int i; + char buf[MAXSTRLEN]; + + if (layerElem->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'L', layerElem, binary); + if (layerElem->nUse == 0 || inMacro) { + /* */ + PutSymbol(f, BEGINLAYER, binary); + if (!binary) + fprintf(f, "\n"); + /* */ + PutSymbol(f, LAYERKIND, binary); + if (!binary) + fprintf(f, " "); + WriteString(f, LayerKind2Str(layerElem->layerKind, buf), DBL_QUOTE); + if (!binary) + fprintf(f, "\n"); + /* */ + PutSymbol(f, INPUTFEATURE, binary); + if (!binary) + fprintf(f, "\n"); + PutFeaMix(hset, f, NULL, layerElem->feaMix, FALSE, binary); + /* nrows ncols */ + PutSymbol(f, WEIGHT, binary); + if (!binary) + fprintf(f, "\n"); + PutNMatBundle(hset, f, NULL, layerElem->wghtMat, WEIGHT, FALSE, binary); + /* size(nrows) */ + PutSymbol(f, BIAS, binary); + if (!binary) + fprintf(f, "\n"); + PutNVecBundle(hset, f, NULL, layerElem->biasVec, BIAS, FALSE, binary); + /* actfun */ + PutSymbol(f, ACTIVATION, binary); + if (!binary) + fprintf(f, " "); + WriteString(f, ActFunKind2Str(layerElem->actfunKind, buf), DBL_QUOTE); + if (!binary) + fprintf(f, "\n"); + if (layerElem->actfunVecs != NULL) { + /* (optional) */ + if (layerElem->actfunVecs[0] != NULL) { + PutSymbol(f, HYPERPARAMETER, binary); + PutNVecBundle(hset, f, NULL, layerElem->actfunVecs[0], HYPERPARAMETER, FALSE, binary); + } + /* num (optional) */ + if (layerElem->actfunParmNum > 1) { + PutSymbol(f, NUMPARAMETERS, binary); + WriteInt(f, &layerElem->actfunParmNum, 1, binary); + } + /* index (optional) */ + for (i = 1; i <= layerElem->actfunParmNum; ++i) { + PutSymbol(f, PARAMETER, binary); + WriteInt(f, &i, 1, binary); + if (!binary) + fprintf(f, "\n"); + PutNVecBundle(hset, f, NULL, layerElem->actfunVecs[i], PARAMETER, FALSE, binary); + } + } + /* */ + PutSymbol(f, ENDLAYER, binary); + if (!binary) + fprintf(f, "\n"); + } +} + +/* cz277 - ANN */ +static void PutANNTrainInfo(HMMSet *hset, FILE *f, Symbol sym, Boolean binary) +{ + int h; + MLink m; + + /* safety check */ + switch (sym) { + case UPDATE: + case NEGLEARNRATE: + case SUMSQUAREDGRAD: + break; + default: + HError(7092, "PutANNTrainInfo: Unknown TrainInfo kind"); + } + + /*PutSymbol(f, sym, binary); + updtIdx = GetUpdateIndex(); + WriteInt(f, &updtIdx, 1, binary); + if (!binary) + fprintf(f, "\n");*/ + /* process each macro */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'V') + PutNVecBundle(hset, f, NULL, (NVecBundle *) m->structure, sym, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'M') + PutNMatBundle(hset, f, NULL, (NMatBundle *) m->structure, sym, TRUE, binary); + +} + +/* cz277 - ANN */ +/* needs to record the order of all ANN related MACROs in case of cross reference */ +static void PutANNDef(HMMSet *hset, FILE *f, MLink q, ADLink annDef, Boolean inMacro, Boolean binary) +{ + int i, intVal; + + if (annDef->nUse > 0 || inMacro) + PutMacroHdr(hset, f, q, 'N', annDef, binary); + + if (annDef->nUse == 0 || inMacro) { + /* */ + PutSymbol(f, BEGINANN, binary); + if (!binary) + fprintf(f, "\n"); + /* num */ + PutSymbol(f, NUMLAYERS, binary); + intVal = annDef->layerNum + 1; + WriteInt(f, &intVal, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* put each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + /* idx */ + intVal = i + 2; + PutSymbol(f, LAYER, binary); + WriteInt(f, &intVal, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* put layer details */ + PutLayerElem(hset, f, NULL, annDef->layerList[i], FALSE, binary); + } + /* */ + PutSymbol(f, ENDANN, binary); + if (!binary) + fprintf(f, "\n"); + } +} + +static void PutHybridTarget(HMMSet *hset, FILE *f, StreamElem *se, Boolean binary) +{ + /* ~N/~L name */ + PutSymbol(f, TARGETSOURCE, binary); + fprintf(f, " "); + if (se->targetSrc->nUse > 0) /* ~L */ + PutLayerElem(hset, f, NULL, se->targetSrc, FALSE, binary); + else + HError(7093, "PutHybridTarget: Hybrid target source incorrectly referenced"); + /* idx */ + PutSymbol(f, TARGETINDEX, binary); + WriteInt(f, &se->targetIdx, 1, binary); + if (!binary) + fprintf(f, "\n"); + /* val (optional) */ + PutSymbol(f, TARGETPENALTY, binary); + WriteFloat(f, &se->targetPen, 1, binary); + if (!binary) + fprintf(f, "\n"); +} + /* PutStateInfo: output state info to stream f */ static void PutStateInfo(HMMSet *hset, FILE *f, MLink q, StateInfo *si, Boolean inMacro, Boolean binary) @@ -3084,6 +5872,9 @@ static void PutStateInfo(HMMSet *hset, FILE *f, MLink q, StateInfo *si, if (!binary) fprintf(f,"\n"); } switch (hset->hsKind) { + case HYBRIDHS: /* c277 - ANN */ + PutHybridTarget(hset, f, se, binary); + break; case TIEDHS: PutTiedMixtures(hset,f,s,se,binary); break; @@ -3221,17 +6012,18 @@ static void PutAdaptXForm(HMMSet *hset, FILE *f, MLink q, AdaptXForm *xform, if (HardAssign(xform)) { WriteInt(f,&(xform->xformWgts.assign[i]),1,binary); } else - HError(999,"Not currently supported"); + HError(7001,"Not currently supported"); fprintf(f,"\n"); } } } /* PutOptions: write the current global options to f */ -static void PutOptions(HMMSet *hset, FILE *f, Boolean binary) +static void PutOptions(HMMSet *hset, FILE *f, Boolean binary) { short i,S; char buf[64]; + int intTmp; if (hset->hmmSetId!=NULL) { PutSymbol(f,HMMSETID,binary); @@ -3264,6 +6056,22 @@ static void PutOptions(HMMSet *hset, FILE *f, Boolean binary) fprintf(f,"~a %s",ReWriteString(hset->semiTied->xformName,NULL,DBL_QUOTE)); if (!binary) fprintf(f,"\n"); } + + /* cz277 - semi */ + if (hset->annSet != NULL && hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS) { + PutSymbol(f, HMMFEATURESOURCE, binary); + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->swidth[0] != 1) { + PutSymbol(f, STREAM, binary); + intTmp = i; + WriteInt(f, &intTmp, 1, binary); + if (!binary) + fprintf(f, "\n"); + } + PutFeaMix(hset, f, NULL, hset->feaMix[i], FALSE, binary); + } + } + } /* PutHMMDef: Save the model hmm to given stream in either text or binary */ @@ -3323,7 +6131,7 @@ static unsigned Hash(char *name) /* EXPORT-> NewMacro: append a macro with given values to list */ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) { - unsigned int hashval; + unsigned long int hashval; MLink m; PtrMap *p; @@ -3357,6 +6165,14 @@ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) return m; } break; + case 'F': + case 'L': + case 'M': + case 'N': + case 'V': + if (m->structure != structure) + HError(7036, "NewMacro: different structures assigned to macro ~%c \"%s\"", m->type, m->id->name); + return m; case 'r': if (!(strcmp(((RegTree *)m->structure)->fname,((RegTree *)structure)->fname))) { HRError(7036,"Duplicate copy of ~r macro %s loaded from %s",id->name,((RegTree *)m->structure)->fname); @@ -3372,9 +6188,8 @@ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) m = (MLink)New(hset->hmem,sizeof(MacroDef)); if (type == 'h') ++hset->numPhyHMM; - else if (type == 'l'){ + else if (type == 'l') ++hset->numLogHMM; - } else ++hset->numMacros; hashval = Hash(id->name); @@ -3383,7 +6198,7 @@ MLink NewMacro(HMMSet *hset, short fidx, char type, LabId id, Ptr structure) m->structure = structure; m->next = hset->mtab[hashval]; hset->mtab[hashval] = m; if (hset->pmap != NULL) { - hashval = (unsigned int)m->structure % PTRHASHSIZE; + hashval = (unsigned long int)m->structure % PTRHASHSIZE; p = (PtrMap *)New(hset->hmem,sizeof(PtrMap)); p->ptr = m->structure; p->m = m; p->next = hset->pmap[hashval]; hset->pmap[hashval] = p; @@ -3396,9 +6211,8 @@ void DeleteMacro(HMMSet *hset, MLink p) { if (p->type == 'h') --hset->numPhyHMM; - else if (p->type == 'l'){ + else if (p->type == 'l') --hset->numLogHMM; - } else --hset->numMacros; p->type = '*'; @@ -3409,7 +6223,6 @@ void DeleteMacroStruct(HMMSet *hset, char type, Ptr structure) { MLink p; - p = FindMacroStruct(hset,type,structure); if (p==NULL) HError(7035,"DeleteMacroStruct: attempt to delete unknown macro"); @@ -3421,16 +6234,18 @@ void DeleteMacroStruct(HMMSet *hset, char type, Ptr structure) /* EXPORT->FindMacroName: find macro def based on given id */ MLink FindMacroName(HMMSet *hset, char type, LabId id) { - unsigned int hashval; - MLink m; + unsigned int hashval; + MLink m; - if (id == NULL) return NULL; - hashval = Hash(id->name); - m = hset->mtab[hashval]; - while (m != NULL && !(m->id == id && m->type == type)) - m = m->next; - return m; + if (id == NULL) + return NULL; + hashval = Hash(id->name); + m = hset->mtab[hashval]; + while (m != NULL && !(m->id == id && m->type == type)) { + m = m->next; + } + return m; } /* EXPORT->FindMacroStruct: return macro for given structure */ @@ -3438,7 +6253,7 @@ MLink FindMacroStruct(HMMSet *hset, char type, Ptr structure) { MLink m; int h,n; - unsigned int i; + unsigned long int i; PtrMap *p; @@ -3447,7 +6262,7 @@ MLink FindMacroStruct(HMMSet *hset, char type, Ptr structure) if (trace&T_PMP) printf("HModel: creating pointer map hash table\n"); for (n=0,h=0; hmtab[h]; m!=NULL; m=m->next){ - i = (unsigned int)m->structure % PTRHASHSIZE; + i = (unsigned long int)m->structure % PTRHASHSIZE; p = (PtrMap *)New(hset->hmem,sizeof(PtrMap)); p->ptr = m->structure; p->m = m; p->next = hset->pmap[i]; hset->pmap[i] = p; @@ -3455,7 +6270,7 @@ MLink FindMacroStruct(HMMSet *hset, char type, Ptr structure) } if (trace&T_PMP) printf("HModel: %d pointers hashed\n",n); } - i = (unsigned int)structure % PTRHASHSIZE; + i = (unsigned long int)structure % PTRHASHSIZE; for (p = hset->pmap[i]; p != NULL; p = p->next) { m = p->m; if (p->ptr == structure && m->type == type) @@ -3512,7 +6327,7 @@ void SetSemiTiedVFloor(HMMSet *hset) void SetVFloor(HMMSet *hset, Vector *vFloor, float minVar) { int j,s,S,size; - char mac[256], num[10]; + char mac[MAXSTRLEN], num[10]; LabId id; MLink m; SVector v; @@ -3710,6 +6525,18 @@ void PrintHSetProfile(FILE *f, HMMSet *hset) fprintf(f,"\n"); fprintf(f," Macros = %d; Logical HMMs = %d; Physical HMMs = %d\n", hset->numMacros,hset->numLogHMM,hset->numPhyHMM); + + /* cz277 - ANN */ + if (hset->annSet != NULL) { + if (hset->hsKind == HYBRIDHS) { + printf("Hybrid ANN set: "); + } + else { + printf("Tandem ANN set: "); + } + ShowANNSet(hset); + } + if (HasMacros(hset,buf)) fprintf(f," Macro types: %s\n",buf); S = hset->swidth[0]; @@ -3742,166 +6569,255 @@ void PrintHSetProfile(FILE *f, HMMSet *hset) /* LoadAllMacros: loads macros from MMF file fname */ static ReturnStatus LoadAllMacros(HMMSet *hset, char *fname, short fidx) { - Source src; - Token tok; - Ptr structure; - MLink m; - char type,buf[MAXSTRLEN]; - LabId id; - HLink dhmm; - HMMSet dset; - int nState=0; + Source src; + Token tok; + Ptr structure; + MLink m; + char type, buf[MAXSTRLEN]; + LabId id=NULL; + HLink dhmm; + HMMSet dset; + int nState = 0, maxCnt; + /* cz277 - ANN */ + AILink annInfo; + + if (trace & T_MAC) + printf("HModel: getting Macros from %s\n", fname); + if (InitScanner(fname, &src, &tok, HMMDefFilter) < SUCCESS) { /* cz277 - 64bit */ + HRError(7010,"LoadAllMacros: Can't open file"); + return (FAIL); + } - if (trace&T_MAC) - printf("HModel: getting Macros from %s\n",fname); - if(InitScanner(fname,&src,&tok,hset)name,fname); - return(FAIL); - } - dset=*hset; - dset.hmem=&gstack; - dhmm = (HLink) New(&gstack,sizeof(HMMDef)); - dhmm->owner=NULL; dhmm->numStates=0; dhmm->nUse=0; dhmm->hook=NULL; - if (trace&T_MAC) - printf("HModel: skipping HMM Def from macro %s\n",id->name); - if(GetToken(&src,&tok)id->name); - if (GetToken(&src,&tok)structure,nState)fidx = fidx; - } - } else { /* load a shared structure */ - /* input transforms are store prior to the options !! */ - if ((type != 'j') && (CheckOptions(hset)xformName = CopyString(hset->hmem,id->name); - break; - case 'r': - structure = GetRegTree(hset,&src,&tok);break; - case 'b': - structure = GetBaseClass(hset,&src,&tok); break; - case 'f': structure = GetLinXForm(hset,&src,&tok); break; - case 'g': structure = GetXFormSet(hset,&src,&tok); break; - case 'x': structure = GetTransform(hset,&src,&tok); break; - case 'y': structure = GetBias(hset,&src,&tok); break; - /* code for input transform support */ - case 'j': - structure = GetInputXForm(hset,&src,&tok); - ((InputXForm *)structure)->xformName = CopyString(hset->hmem,id->name); - break; - default : - TermScanner(&src); - HRError(7037,"LoadAllMacros: bad macro type in MMF %s",fname); - return(FAIL); - } - if(structure==NULL){ - TermScanner(&src); - HRError(7035,"LoadAllMacros: Get macro data failed in MMF %s",fname); - return(FAIL); + /* cz277 - xform */ + if (type != 'M' && type != 'V') + id = GetLabId(buf, TRUE); + if (type == 'h') { /* load a HMM definition */ + m = FindMacroName(hset, 'h', id); + if (m == NULL) { + if (!allowOthers) { + TermScanner(&src); + HRError(7030, "LoadAllMacros: phys HMM %s unexpected in %s", id->name, fname); + return(FAIL); + } + dset = *hset; + dset.hmem = &gstack; + dhmm = (HLink) New(&gstack, sizeof(HMMDef)); + dhmm->owner = NULL; + dhmm->numStates = 0; + dhmm->nUse = 0; + dhmm->hook = NULL; + if (trace & T_MAC) + printf("HModel: skipping HMM Def from macro %s\n", id->name); + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + Dispose(&gstack, dhmm); + HMError(&src,"LoadAllMacros: GetToken failed"); + return (FAIL); + } + if (GetHMMDef(&dset, &src, &tok, dhmm, nState) < SUCCESS) { + TermScanner(&src); + Dispose(&gstack, dhmm); + HMError(&src, "LoadAllMacros: GetHMMDef failed"); + return (FAIL); + } + Dispose(&gstack, dhmm); + } + else { + if (trace & T_MAC) + printf("HModel: getting HMM Def from macro %s\n", m->id->name); + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: GetToken failed"); + return (FAIL); + } + if (GetHMMDef(hset, &src, &tok, (HLink)m->structure, nState) < SUCCESS) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: GetHMMDef failed"); + return (FAIL); + } + m->fidx = fidx; + } + } /* if (type == 'h') */ + else { /* load a shared structure */ + /* input transforms are store prior to the options !! */ + if ((type != 'j') && (CheckOptions(hset) < SUCCESS)) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: CheckOptions failed"); + return (FAIL); + } + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + HMError(&src, "LoadAllMacros: GetToken failed"); + return (FAIL); + } + switch (type) { + case 's': structure = GetStateInfo(hset, &src, &tok); break; + case 'm': structure = GetMixPDF(hset, &src, &tok); break; + case 'u': structure = GetMean(hset, &src, &tok); break; + case 'v': structure = GetVariance(hset, &src, &tok); break; + case 'i': structure = GetCovar(hset, &src, &tok); break; + case 'c': structure = GetCovar(hset, &src, &tok); break; + case 'w': structure = GetSWeights(hset, &src, &tok); break; + case 't': structure = GetTransMat(hset, &src, &tok); break; + case 'd': structure = GetDuration(hset, &src, &tok); break; + /* code for transform support */ + case 'a': + structure = GetAdaptXForm(hset, &src, &tok); + ((AdaptXForm *)structure)->xformName = CopyString(hset->hmem, id->name); + break; + case 'r': structure = GetRegTree(hset, &src, &tok); break; + case 'b': structure = GetBaseClass(hset, &src, &tok); break; + case 'f': structure = GetLinXForm(hset, &src, &tok); break; + case 'g': structure = GetXFormSet(hset, &src, &tok); break; + case 'x': structure = GetTransform(hset, &src, &tok); break; + case 'y': structure = GetBias(hset, &src, &tok); break; + /* code for input transform support */ + case 'j': + structure = GetInputXForm(hset, &src, &tok); + ((InputXForm *)structure)->xformName = CopyString(hset->hmem, id->name); + break; + /* cz277 - ANN */ + case 'M': + structure = GetNMatBundle(hset, &src, &tok, buf); + id = ((NMatBundle *) structure)->id; + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->MTypeMacroNum) + hset->MTypeMacroNum = maxCnt; + break; + case 'V': + structure = GetNVecBundle(hset, &src, &tok, buf); + id = ((NVecBundle *) structure)->id; + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->VTypeMacroNum) + hset->VTypeMacroNum = maxCnt; + break; + case 'F': structure = GetFeaMix(hset, &src, &tok); + if(id==NULL){ + HMError(&src, "LoadAllMacros: label not initialised"); + return (FAIL); + } + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->FTypeMacroNum) + hset->FTypeMacroNum = maxCnt; + break; + case 'L': structure = GetLayerElem(hset, &src, &tok); + if(id==NULL){ + HMError(&src, "LoadAllMacros: label not initialised"); + return (FAIL); + } + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->LTypeMacroNum) + hset->LTypeMacroNum = maxCnt; + break; + case 'N': + /*if (hset->annSet == NULL) + InitANNSet(hset);*/ + structure = GetANNDef(hset, &src, &tok); + if(id==NULL){ + HMError(&src, "LoadAllMacros: label not initialised"); + return (FAIL); + } + if (GetThisMacroCount(id->name, type, &maxCnt) && maxCnt > hset->NTypeMacroNum) + hset->NTypeMacroNum = maxCnt; + /* insert it to the end of the bi-direct chain in ANNSet */ + annInfo = (AILink) New(hset->hmem, sizeof(ANNInfo)); + /* store current ANNDef */ + annInfo->annDef = (ADLink) structure; + annInfo->index = hset->annSet->annNum; + annInfo->fidx = fidx; + /* put it at the end of the chain */ + if (hset->annSet->defsHead == NULL) { /* empy chain */ + hset->annSet->defsHead = annInfo; + hset->annSet->defsTail = annInfo; + annInfo->next = NULL; + annInfo->prev = NULL; + } + else { /* otherwise */ + hset->annSet->defsTail->next = annInfo; + annInfo->next = NULL; + annInfo->prev = hset->annSet->defsTail; + hset->annSet->defsTail = annInfo; + } + /* increase ANNDef count */ + ++hset->annSet->annNum; + break; + default : + TermScanner(&src); + HRError(7037, "LoadAllMacros: bad macro type in MMF %s", fname); + return (FAIL); + } + if(structure == NULL) { + TermScanner(&src); + HRError(7035, "LoadAllMacros: Get macro data failed in MMF %s", fname); + return (FAIL); + } + NewMacro(hset, fidx, type, id, structure); + if (trace & T_MAC) + printf("HModel: storing macro ~%c %s -> %p\n", type, id->name, structure); } - NewMacro(hset,fidx,type,id,structure); - if (trace&T_MAC) - printf("HModel: storing macro ~%c %s -> %p\n",type,id->name,structure); - } - } - } - TermScanner(&src); - return(SUCCESS); + } + } + TermScanner(&src); + + return (SUCCESS); +} + +/* cz277 - 150824 */ +/* CheckANNMacros: check the ANN macros and removed the useless ones */ +static void FixANNMacros(HMMSet *hset) { + int h; + MLink m; + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'M' && ((NMatBundle *) m->structure)->variables == NULL) + DeleteMacro(hset, m); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'V' && ((NVecBundle *) m->structure)->variables == NULL) + DeleteMacro(hset, m); } /* LoadMacroFiles: scan file list of hset and load any macro files */ static ReturnStatus LoadMacroFiles(HMMSet *hset) { - MILink mmf; - int i=0; - ReturnStatus result=SUCCESS; + MILink mmf; + int i = 0; + ReturnStatus result = SUCCESS; - for (mmf=hset->mmfNames; mmf!=NULL; mmf=mmf->next) - if (!mmf->isLoaded){ - if(LoadAllMacros(hset,mmf->fName,++i)isLoaded = TRUE; - } - return result; + for (mmf = hset->mmfNames; mmf!=NULL; mmf = mmf->next) { + if (!mmf->isLoaded) { + if (LoadAllMacros(hset, mmf->fName, ++i) < SUCCESS) + result = FAIL; + mmf->isLoaded = TRUE; + } + } + /* cz277 - 150824 */ + FixANNMacros(hset); + + return result; } /* IsShared: decide if given HMM set is SHAREDHS. Note that shared means, @@ -3918,35 +6834,845 @@ static Boolean IsShared(HMMSet *hset) return FALSE; } -/* ConcatFN: make up file name */ -static char *ConcatFN(char *path, char *base, char *ext, char *fname) -{ - char *s; +/* ConcatFN: make up file name */ +static char *ConcatFN(char *path, char *base, char *ext, char *fname) +{ + char *s; + + fname[0] = '\0'; + if (path!=NULL && *path!='\0') { + if ((s=strrchr(path,PATHCHAR))!=NULL && *(s+1)=='\0') + strcat(fname,path); + else + sprintf(fname,"%s%c",path,PATHCHAR); + } + strcat(fname,base); + if (ext!=NULL && *ext!='\0') { + strcat(fname,"."); + strcat(fname,ext); + } + return fname; +} + +/* cz277 - semi */ +static void SetPostdefFeaSrc(HMMSet *hset, FELink feaElem) { + LabId id; + MLink m; + + /* safety check */ + if (!(feaElem->inputKind == ANNFEAIK && feaElem->feaSrc == NULL)) + HError(7093, "SetPostdefFeaSrc: Function is only applicable to post defined ANNFEAIK"); + /* look for the feature element source macro */ + id = GetLabId(feaElem->mName, FALSE); + if (id == NULL) + HError(7037, "SetPostdefFeaSrc: undef macro name %s, type %c", feaElem->mName, feaElem->mType); + m = FindMacroName(hset, feaElem->mType, id); + if (m == NULL) + HError(7037, "SetPostdefFeaSrc: no macro %s, type %c exists", feaElem->mName, feaElem->mType); + /* set the feature element source macro */ + if (feaElem->mType == 'L') + feaElem->feaSrc = (LELink) m->structure; + else + HError(7037, "SetPostdefFeaSrc: Unsupported feature element source macro type %c", feaElem->mType); + /* cz277 - split2 */ + feaElem->srcDim = feaElem->feaSrc->nodeNum; + if (!(feaElem->feaDim > 0 && feaElem->feaDim <= feaElem->srcDim)) + HError(7075, "SetPostdefFeaSrc: Illegal feature element dimensions"); + + /* set nDrv */ + /*++feaElem->feaSrc->nUse;*/ + /* cz277 - semi */ + if (feaElem->doBackProp == TRUE) + ++feaElem->feaSrc->nDrv; +} + +/* cz277 - semi */ +static void FindPostdefFeaSrc(HMMSet *hset) { + int i, j; + AILink curAI; + ADLink curAD; + FELink feaElem; + + /* check model set type */ + if (hset->annSet == NULL || (hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS)) + return; + /* search for post defined ANN feaMix sources and set them properly */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + if (curAD->layerList[i]->feaMix != NULL) { + for (j = 0; j < curAD->layerList[i]->feaMix->elemNum; ++j) { + feaElem = curAD->layerList[i]->feaMix->feaList[j]; + if (feaElem->inputKind == ANNFEAIK && feaElem->feaSrc == NULL) + SetPostdefFeaSrc(hset, feaElem); + } + } + } + curAI = curAI->next; + } + /* search for post defined feaMix sources in HMMFEATURESOURCE ~o macro */ + for (i = 1; i <= hset->swidth[0]; ++i) { + if (hset->feaMix[i] != NULL) { + for (j = 0; j < hset->feaMix[i]->elemNum; ++j) { + feaElem = hset->feaMix[i]->feaList[j]; + if (feaElem->inputKind == ANNFEAIK && feaElem->feaSrc == NULL) + SetPostdefFeaSrc(hset, feaElem); + } + } + } +} + + +/* cz277 - split2: TODO: to check srcDim, dimOff, feaDim */ +/* cz277 - ANN */ +/* check the dimensions and set the implicit feature source */ +void CheckANNConsistency(HMMSet *hset) { + int i, j; + AILink curAI; + ADLink curAD; + FeaMix *feaMix; + + /* check model set type */ + if (hset->annSet == NULL || (hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS)) { + return; + } + /* check the dimensions and set the feature source */ + curAI = hset->annSet->defsHead; + for (i = 0; i < hset->annSet->annNum; ++i) { + if (curAI == NULL || curAI->index != i) + HError(7095, "CheckANNConsistency: Missing ANNInfo"); + /* get current ANNDef */ + curAD = curAI->annDef; + /* check layer by layer */ + for (j = 0; j < curAD->layerNum; ++j) { + /*curAD->nUse += curAD->layerList[j]->nUse;*/ + if (curAD->layerList[j]->nUse > 0) + curAD->nUse |= 1; + /* cz277 - 1007 */ + /* set FeaMix if needed */ + if (curAD->layerList[j]->feaMix == NULL) { + HError(-7076, "CheckANNConsistency: Implicit feature mixture involed"); + if (j == 0) + feaMix = GetDefaultInpFeaMix(hset, 1); + else + feaMix = GetDefaultANNFeaMix(hset, curAD->layerList[j - 1]); + /* set owner */ + feaMix->ownerList[feaMix->ownerNum++] = curAD->layerList[j]; + curAD->layerList[j]->feaMix = feaMix; + ++curAD->layerList[j]->feaMix->nUse; + } + /* check FeaElem source */ + /*if (j > 0) { + for (k = 0; k < curAD->layerList[j]->feaMix->feaNum; ++k) { + if (curAD->layerList[j]->feaMix->feaList[k]->feaSrc == curAD->layerList[j - 1]) { + break; + } + } + if (k == curAD->layerList[j]->feaMix->feaNum) { + HError(9999, "CheckANNConsistency: At least one FeaElem should come from previous LayerElem"); + } + }*/ + /* cz277 - 1007 */ + /* TODO: need to detect cycles */ + /* check the dimensions */ + if (curAD->layerList[j]->feaMix->mixDim != curAD->layerList[j]->inputDim) { + HError(7072, "CheckANNConsistency: Input FeaMix dim %d does not match the input dim %d of the LayerElem", curAD->layerList[j]->feaMix->mixDim, curAD->layerList[j]->inputDim); + } + } + /* fetch the next ANNInfo */ + curAI = curAI->next; + } +} + +/* cz277 - many, need to use after SetDrvCtx */ +/* initialise the xFeaBat and yFeaBat in each LayerElem */ +void InitXYBatch(HMMSet *hset) { + int i, j, k, l, n; + AILink curAI; + ADLink curAD; + LELink layerElem, srcElem; + FELink feaElem; + + /* 1. the first pass, initialise yFeaMats */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + layerElem->yFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + layerElem->yFeaMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->nodeNum); + } + } + curAI = curAI->next; + } + /* 2. the second pass, initialise feaElem->feaMats & feaMix->mixMats */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + /* set ANNFEAIK feaMat (INPFEAIK has been set); yFeaMat for the previous layers have been set */ + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + if (feaElem->feaMats == NULL) { /* incase of shared feaElem (INP & AUG) */ + n = IntVecSize(feaElem->ctxPool); + if (feaElem->inputKind == ANNFEAIK) { + /*feaElem->feaMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + feaElem->feaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + srcElem = feaElem->feaSrc; + for (k = 1, l = 1; k <= n; ++k) { /* both sorted && ctxPool in drvCtx */ + while (feaElem->ctxPool[k] != srcElem->drvCtx[l]) + ++l; + feaElem->feaMats[k] = srcElem->yFeaMats[l]; + ++feaElem->feaMats[k]->nUse; + } + } + else if (feaElem->inputKind == INPFEAIK) { + /*feaElem->feaMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + feaElem->feaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (k = 1; k <= n; ++k) + feaElem->feaMats[k] = CreateNMatrix(hset->hmem, GetNBatchSamples(), feaElem->extDim); + } + else if (feaElem->inputKind == AUGFEAIK) { + /*feaElem->feaMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * 2);*/ + + feaElem->feaMats[1] = CreateNMatrix(hset->hmem, GetNBatchSamples(), feaElem->extDim); + } + } + } + /* init mixMats */ + if (layerElem->feaMix->mixMats == NULL) { /* incase of shared feaMix */ + n = IntVecSize(layerElem->feaMix->ctxPool); + if (layerElem->feaMix->elemNum == 1) { + feaElem = layerElem->feaMix->feaList[0]; + if (feaElem->inputKind == ANNFEAIK && IntVecSize(feaElem->ctxMap) == 1) { + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + /*for (j = 1, k = 1; j <= n; ++j) { + while (layerElem->feaMix->ctxPool[j] != (feaElem->ctxPool[k] - feaElem->ctxMap[1])) + ++k; + layerElem->feaMix->mixMats[j] = feaElem->feaMats[k]; + ++layerElem->feaMix->mixMats[j]->nUse; + }*/ + for (j = 1; j <= n; ++j) { + layerElem->feaMix->mixMats[j] = feaElem->feaMats[j]; + ++layerElem->feaMix->mixMats[j]->nUse; + } + } + else if (feaElem->inputKind == INPFEAIK) { + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1, k = 1; j <= n; ++j) { + while (layerElem->feaMix->ctxPool[j] != feaElem->ctxPool[k]) + ++k; + layerElem->feaMix->mixMats[j] = feaElem->feaMats[k]; + ++layerElem->feaMix->mixMats[j]->nUse; + } + } + else if (feaElem->inputKind == AUGFEAIK) { + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + layerElem->feaMix->mixMats[j] = feaElem->feaMats[1]; + ++layerElem->feaMix->mixMats[j]->nUse; + } + } + } + if (layerElem->feaMix->mixMats == NULL) { /* cannot shared, need to allocate new space */ + /*layerElem->feaMix->mixMats = (NMatrix **) New(&gcheap, sizeof(NMatrix *) * (n + 1));*/ + layerElem->feaMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) + layerElem->feaMix->mixMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->feaMix->mixDim); + } + } + } + curAI = curAI->next; + } + /* 3. the third pass, set xFeaMats */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + layerElem->xFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1, k = 1; j <= n; ++j) { + while (layerElem->drvCtx[j] != layerElem->feaMix->ctxPool[k]) + ++k; + layerElem->xFeaMats[j] = layerElem->feaMix->mixMats[k]; + ++layerElem->xFeaMats[j]->nUse; + } + } + curAI = curAI->next; + } +} + +/* cz277 - many */ +static int FindANNCycleDFS(LELink layerElem) { + int i, cycCnt = 0; + LELink srcElem; + FELink feaElem; + + if (layerElem->status == -1) { + HError(-1, "FindANNCycleDFS: Cycle found, need BPTT"); + return 1; + } + if (layerElem->status == 1) { + return 0; + } + layerElem->status = -1; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) { + feaElem = layerElem->feaMix->feaList[i]; + if (feaElem->inputKind == ANNFEAIK) { + srcElem = feaElem->feaSrc; + cycCnt += FindANNCycleDFS(srcElem); + } + } + layerElem->status = 1; + return cycCnt; +} + +/* cz277 - many */ +void FindANNCycles(HMMSet *hset) { + int i, cycCnt = 0; + AILink curAI; + ADLink curAD; + LELink layerElem=NULL; + + /* first, reset all status */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + layerElem->status = 0; + } + curAI = curAI->next; + } + /* DFS based cycle detection */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + cycCnt += FindANNCycleDFS(layerElem); + } + curAI = curAI->next; + } + /* post processing */ + if (cycCnt > 0) + HError(7001, "FindANNCycles: %d cycles were detected, function not supported by V3.5", cycCnt); + /* reset status */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + layerElem->status = 0; + } + curAI = curAI->next; + } +} + +/* cz277 - many */ +static IntVec MergeSortedContext(MemHeap *x, IntVec lhCtx, IntVec rhCtx) { + int n, lidx = 1, ridx = 1, llen = IntVecSize(lhCtx), rlen = IntVecSize(rhCtx); + IntVec resVec; + + /* get the merged length */ + n = 0; + while (lidx <= llen && ridx <= rlen) { + if (lhCtx[lidx] < rhCtx[ridx]) { + ++n; + ++lidx; + } + else if (lhCtx[lidx] > rhCtx[ridx]) { + ++n; + ++ridx; + } + else { + ++n; + ++lidx; + ++ridx; + } + } + if (lidx <= llen) + n += llen - lidx + 1; + else if (ridx <= rlen) + n += rlen - ridx + 1; + /* merge the vectors */ + /*resVec = CreateIntVec(&gcheap, n);*/ + resVec = CreateIntVec(x, n); + n = 1; + lidx = 1; + ridx = 1; + while (lidx <= llen && ridx <= rlen) { + if (lhCtx[lidx] < rhCtx[ridx]) + resVec[n++] = lhCtx[lidx++]; + else if (lhCtx[lidx] > rhCtx[ridx]) + resVec[n++] = rhCtx[ridx++]; + else { + resVec[n++] = lhCtx[lidx++]; + ++ridx; + } + } + while (lidx <= llen) + resVec[n++] = lhCtx[lidx++]; + while (ridx <= rlen) + resVec[n++] = rhCtx[ridx++]; + + return resVec; +} + +/* cz277 - many */ +static IntVec ShiftIntVec(IntVec orgVec, int shift) { + int i, n; + IntVec shiftVec; + + n = IntVecSize(orgVec); + shiftVec = CreateIntVec(&gcheap, n); + for (i = 1; i <= n; ++i) { + shiftVec[i] = orgVec[i] + shift; + } + return shiftVec; +} + +/* cz277 - many */ +void ResetDrvContext(HMMSet *hset) { + int i, j; + LELink layerElem; + AILink curAI; + ADLink curAD; + FELink feaElem; + + curAI = hset->annSet->defsTail; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = curAD->layerNum - 1; i >= 0; --i) { + layerElem = curAD->layerList[i]; + if (layerElem->drvCtx != NULL) { + Dispose(&gcheap, layerElem->drvCtx); + layerElem->drvCtx = NULL; + layerElem->feaMix->mixMats = NULL; + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + feaElem->feaMats = NULL; + } + } + } + curAI = curAI->prev; + } +} + +/* cz277 - many */ +/* should change to DFS? need to deal with the cycle properly */ +void SetDrvContext(HMMSet *hset) { + int i, j, k; + AILink curAI; + ADLink curAD; + LELink layerElem, srcElem; + IntVec resVec, shiftVec; + FELink feaElem; + + /* set drvCtx */ + curAI = hset->annSet->defsTail; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = curAD->layerNum - 1; i >= 0; --i) { + layerElem = curAD->layerList[i]; + if (layerElem->drvCtx == NULL) { + layerElem->drvCtx = CreateIntVec(&gcheap, 1); + layerElem->drvCtx[1] = 0; + } + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + for (k = 1; k <= IntVecSize(layerElem->drvCtx); ++k) { + shiftVec = ShiftIntVec(feaElem->ctxMap, layerElem->drvCtx[k]); + if (feaElem->inputKind == ANNFEAIK) { + srcElem = feaElem->feaSrc; + if (srcElem->drvCtx == NULL) { + /*srcElem->drvCtx = CreateIntVec(&gcheap, IntVecSize(shiftVec)); + CopyIntVec(shiftVec, srcElem->drvCtx);*/ + srcElem->drvCtx = shiftVec; + } + else { + resVec = MergeSortedContext(hset->hmem, srcElem->drvCtx, shiftVec); + /*Dispose(&gcheap, srcElem->drvCtx);*/ + srcElem->drvCtx = resVec; + } + } + } + } + } + curAI = curAI->prev; + } + /* set ctxPool (for feaMix & feaElem) */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + /* for feaMix */ + if (layerElem->feaMix->ctxPool == NULL) { + layerElem->feaMix->ctxPool = CreateIntVec(&gcheap, IntVecSize(layerElem->drvCtx)); + CopyIntVec(layerElem->drvCtx, layerElem->feaMix->ctxPool); + } + else { /* for feaMix shared by multiple layers */ + /*resVec = MergeSortedContext(layerElem->drvCtx, layerElem->feaMix->ctxPool);*/ + resVec = MergeSortedContext(hset->hmem, layerElem->drvCtx, layerElem->feaMix->ctxPool); + /*Dispose(&gcheap, layerElem->feaMix->ctxPool);*/ + layerElem->feaMix->ctxPool = resVec; + } + /* for feaElem */ + for (j = 0; j < layerElem->feaMix->elemNum; ++j) { + feaElem = layerElem->feaMix->feaList[j]; + if (feaElem->inputKind == INPFEAIK) { + if (feaElem->ctxPool == NULL) { + /*feaElem->ctxPool = CreateIntVec(&gcheap, IntVecSize(layerElem->drvCtx));*/ + feaElem->ctxPool = CreateIntVec(hset->hmem, IntVecSize(layerElem->drvCtx)); + CopyIntVec(layerElem->drvCtx, feaElem->ctxPool); + } + else { + /*resVec = MergeSortedContext(layerElem->drvCtx, feaElem->ctxPool);*/ + resVec = MergeSortedContext(hset->hmem, layerElem->drvCtx, feaElem->ctxPool); + /*Dispose(&gcheap, feaElem->ctxPool);*/ + feaElem->ctxPool = resVec; + } + } + else if (feaElem->inputKind == AUGFEAIK) { + if (feaElem->ctxPool == NULL) { + /*feaElem->ctxPool = CreateIntVec(&gcheap, 1);*/ + feaElem->ctxPool = CreateIntVec(hset->hmem, 1); + feaElem->ctxPool[1] = 0; + } + } + else if (feaElem->inputKind == ANNFEAIK) { + for (k = 1; k <= IntVecSize(layerElem->drvCtx); ++k) { + shiftVec = ShiftIntVec(feaElem->ctxMap, layerElem->drvCtx[k]); + if (feaElem->ctxPool == NULL) { + feaElem->ctxPool = shiftVec; + } + else { + /*resVec = MergeSortedContext(feaElem->ctxPool, shiftVec);*/ + resVec = MergeSortedContext(hset->hmem, feaElem->ctxPool, shiftVec); + /*Dispose(&gcheap, feaElem->ctxPool);*/ + feaElem->ctxPool = resVec; + } + } + } + } + } + curAI = curAI->next; + } +} + +/* cz277 - many */ +void ShowANNStructDetails(HMMSet *hset) { + int i, j, k; + AILink curAI; + ADLink curAD; + LELink layerElem; + FeaMix *feaMix, *errMix; + FELink errElem, feaElem; + + printf("FORWARD:\n"); + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + printf("Layer i = %d, layerElem = %p, inputDim = %d, nodeNum = %d\n", i, layerElem, layerElem->inputDim, layerElem->nodeNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, xFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->xFeaMats[j], layerElem->xFeaMats[j]->rowNum, layerElem->xFeaMats[j]->colNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, yFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->yFeaMats[j], layerElem->yFeaMats[j]->rowNum, layerElem->yFeaMats[j]->colNum); + feaMix = layerElem->feaMix; + printf("\tFeaMix = %p, elemNum = %d, mixDim = %d\n", feaMix, feaMix->elemNum, feaMix->mixDim); + for (j = 1; j <= IntVecSize(feaMix->ctxPool); ++j) { + printf("\tj = %d, feaMix->ctxPool[j] = %d, mixMat = %p, rowNum = %lu, colNum = %lu\n", j, feaMix->ctxPool[j], feaMix->mixMats[j], feaMix->mixMats[j]->rowNum, feaMix->mixMats[j]->colNum); + } + printf("\n"); + for (j = 0; j < feaMix->elemNum; ++j) { + feaElem = feaMix->feaList[j]; + printf("\t\tj = %d, inputKind = %d, INPFEAIK = %d, AUGFEAIK = %d, ANNFEAIK = %d\n", j, feaElem->inputKind, INPFEAIK, AUGFEAIK, ANNFEAIK); + printf("\t\tj = %d, srcDim = %d, dimOff = %d, feaDim = %d, extDim = %d\n", j, feaElem->srcDim, feaElem->dimOff, feaElem->feaDim, feaElem->extDim); + printf("\t\tCTXMAP:\n"); + printf("\t\t"); + for (k = 1; k <= IntVecSize(feaElem->ctxMap); ++k) + printf(" %d", feaElem->ctxMap[k]); + printf("\n"); + for (k = 1; k <= IntVecSize(feaElem->ctxPool); ++k) { + printf("\t\tk = %d, ctxPool[k] = %d, feaMats[k] = %p\n", k, feaElem->ctxPool[k], feaElem->feaMats[k]); + } + printf("\n"); + } + } + curAI = curAI->next; + } + printf("\n"); + + printf("BACKWARD:\n"); + curAI = hset->annSet->defsTail; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = curAD->layerNum - 1; i >= 0; --i) { + layerElem = curAD->layerList[i]; + printf("Layer i = %d, layerElem = %p, inputDim = %d, nodeNum = %d\n", i, layerElem, layerElem->inputDim, layerElem->nodeNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, dxFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->trainInfo->dxFeaMats[j], layerElem->xFeaMats[j]->rowNum, layerElem->xFeaMats[j]->colNum); + for (j = 1; j <= IntVecSize(layerElem->drvCtx); ++j) + printf("j = %d, drvCtx[j] = %d, dyFeaMat = %p, rowNum = %lu, colNum = %lu\n", j, layerElem->drvCtx[j], layerElem->trainInfo->dyFeaMats[j], layerElem->yFeaMats[j]->rowNum, layerElem->yFeaMats[j]->colNum); + errMix = layerElem->errMix; + if (errMix != NULL) { + printf("\tErrMix = %p, elemNum = %d, mixDim = %d\n", errMix, errMix->elemNum, errMix->mixDim); + for (j = 1; j <= IntVecSize(errMix->ctxPool); ++j) { + printf("\tj = %d, errMix->ctxPool[j] = %d, mixMat[j] = %p\n", j, errMix->ctxPool[j], errMix->mixMats[j]); + } + for (j = 0; j < errMix->elemNum; ++j) { + errElem = errMix->feaList[j]; + printf("\t\tj = %d, srcDim = %d, dimOff = %d, feaDim = %d, extDim = %d\n", j, errElem->srcDim, errElem->dimOff, errElem->feaDim, errElem->extDim); + printf("\t\tCTXMAP:\n"); + printf("\t\t"); + for (k = 1; k <= IntVecSize(errElem->ctxMap); ++k) + printf(" %d", errElem->ctxMap[k]); + printf("\n"); + for (k = 1; k <= IntVecSize(errElem->ctxPool); ++k) { + printf("\t\tk = %d, ctxPool[k] = %d, feaMats[j] = %p\n", k, errElem->ctxPool[k], errElem->feaMats[k]); + } + printf("\n"); + } + + } + else + printf("\n\n"); + + } + curAI = curAI->prev; + } - fname[0] = '\0'; - if (path!=NULL && *path!='\0') { - if ((s=strrchr(path,PATHCHAR))!=NULL && *(s+1)=='\0') - strcat(fname,path); - else - sprintf(fname,"%s%c",path,PATHCHAR); - } - strcat(fname,base); - if (ext!=NULL && *ext!='\0') { - strcat(fname,"."); - strcat(fname,ext); - } - return fname; } +/* cz277 - many */ +/* initialise errMix in each layer */ +void InitErrMix(HMMSet *hset) { + int c, i, j, k, l, n, m, p, offset; + AILink curAI; + ADLink curAD; + LELink layerElem, srcElem; + FELink errElem, feaElem; + + /* 0. */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + layerElem->trainInfo->dxFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + layerElem->trainInfo->dyFeaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + layerElem->trainInfo->dxFeaMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->inputDim); + layerElem->trainInfo->dyFeaMats[j] = NULL; + } + if (CacheActMatrixOrNot(layerElem->actfunKind) == TRUE) { + layerElem->trainInfo->cacheMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) + layerElem->trainInfo->cacheMats[j] = CreateNMatrix(hset->hmem, layerElem->nodeNum, GetNBatchSamples()); + } + } + curAI = curAI->next; + } + + /* 1. init errMix structures */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + if (layerElem->nDrv != 0) { + layerElem->errMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memset(layerElem->errMix, 0, sizeof(FeaMix)); + layerElem->errMix->elemNum = layerElem->nDrv; + layerElem->errMix->mixDim = layerElem->nodeNum; + layerElem->errMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * layerElem->nDrv); + n = IntVecSize(layerElem->drvCtx); + /*layerElem->errMix->ctxPool = CreateIntVec(&gcheap, n);*/ + layerElem->errMix->ctxPool = CreateIntVec(hset->hmem, n); + CopyIntVec(layerElem->drvCtx, layerElem->errMix->ctxPool); + /*errMix->mixMats = NULL; + //errMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + errMix->nUse = 0;*/ + for (j = 0; j < layerElem->errMix->elemNum; ++j) { + /*layerElem->errMix->feaList[j] = (FELink) New(hset->hmem, sizeof(FeaElem)); + errElem = layerElem->errMix->feaList[j]; + errElem->feaDim = -1; + //errElem->ctxMap = CreateIntVec(hset->hmem, 1); + //errElem->ctxMap[1] = 0; + errElem->ctxMap = NULL; + errElem->ctxPool = NULL; + errElem->inputKind = ERRFEAIK; + errElem->feaSrc = NULL; + errElem->feaMats = NULL; + errElem->dimOff = -1; + errElem->extDim = -1; + errElem->srcDim = -1; + errElem->augFeaIdx = 0; + errElem->nUse = 0;*/ + + errElem = CreateFeaElem(hset->hmem); + errElem->inputKind = ERRFEAIK; + layerElem->errMix->feaList[j] = errElem; + } + /* reset nDrv as index */ + layerElem->nDrv = 0; + } + } + curAI = curAI->next; + } + + /* 2. set errMix structures */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + for (j = 0, offset = 0; j < layerElem->feaMix->elemNum; ++j, offset += feaElem->extDim) { + feaElem = layerElem->feaMix->feaList[j]; + if (feaElem->inputKind == ANNFEAIK && feaElem->doBackProp == TRUE) { + srcElem = feaElem->feaSrc; + /* set feaSrc, feaMat, srcDim, and dimOff */ + errElem = srcElem->errMix->feaList[srcElem->nDrv]; + errElem->feaSrc = layerElem; + /*srcElem->errMix->feaList[srcElem->nDrv]->feaMat = layerElem->xFeaMat;*/ + /*errElem->feaMat = layerElem->trainInfo->dxFeaMat;*/ /* cz277 - many */ + m = IntVecSize(feaElem->ctxMap); + /*errElem->ctxMap = CreateIntVec(&gcheap, m);*/ + errElem->ctxMap = CreateIntVec(hset->hmem, m); + CopyIntVec(feaElem->ctxMap, errElem->ctxMap); + /*errElem->ctxPool = CreateIntVec(&gcheap, n);*/ + errElem->ctxPool = CreateIntVec(hset->hmem, n); + CopyIntVec(layerElem->drvCtx, errElem->ctxPool); + errElem->feaMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (k = 1; k <= n; ++k) { + errElem->feaMats[k] = layerElem->trainInfo->dxFeaMats[k]; + ++errElem->feaMats[k]->nUse; + } + errElem->dimOff = offset; + errElem->srcDim = layerElem->inputDim; + errElem->feaDim = feaElem->feaDim; /* cz277 - many: TODO problematic for ANN feature split */ + /*errElem->extDim = errElem->feaDim * errElem->ctxMap[0];*/ + errElem->extDim = feaElem->extDim; + /* cz277 - semi */ + errElem->doBackProp = feaElem->doBackProp; + /*errElem->hisLen = 0; + errElem->hisMat = NULL;*/ + /* update srcElem->nDrv */ + ++srcElem->nDrv; + } + } + } + curAI = curAI->next; + } + + /* 3. check nDrv , set errMix->mixMats, and set dyFeaMat */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + /* check nDrv */ + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + if (layerElem->errMix != NULL) { /* nDrv != 0 */ + if (layerElem->nDrv != layerElem->errMix->elemNum) + HError(7095, "InitErrMix: errMix set incorrectly"); + if (layerElem->errMix->elemNum == 1) { /* if it could be shared */ + errElem = layerElem->errMix->feaList[0]; + if (IntVecSize(errElem->ctxMap) == 1) { + if (errElem->feaDim == errElem->srcDim) { + layerElem->errMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) { + if (layerElem->errMix->ctxPool[j] != errElem->ctxPool[j]) + HError(7095, "InitErrMix: Unmatched context pool when sharing dyFeaMats"); + layerElem->errMix->mixMats[j] = errElem->feaMats[j]; + ++layerElem->errMix->mixMats[j]->nUse; + } + } + } + } + if (layerElem->errMix->mixMats == NULL) { /* if not shared */ + layerElem->errMix->mixMats = (NMatrix **) New(hset->hmem, sizeof(NMatrix *) * (n + 1)); + for (j = 1; j <= n; ++j) + layerElem->errMix->mixMats[j] = CreateNMatrix(hset->hmem, GetNBatchSamples(), layerElem->nodeNum); + } + /* train Info */ + for (j = 1; j <= n; ++j) { + layerElem->trainInfo->dyFeaMats[j] = layerElem->errMix->mixMats[j]; + ++layerElem->trainInfo->dyFeaMats[j]->nUse; + } + } + } + curAI = curAI->next; + } + + /* 4. setup drvCnt */ + curAI = hset->annSet->defsHead; + while (curAI != NULL) { + curAD = curAI->annDef; + for (i = 0; i < curAD->layerNum; ++i) { + layerElem = curAD->layerList[i]; + n = IntVecSize(layerElem->drvCtx); + /* initialise drvCnt */ + /*layerElem->trainInfo->drvCnt = CreateIntVec(&gcheap, n);*/ + layerElem->trainInfo->drvCnt = CreateIntVec(hset->hmem, n); + ZeroIntVec(layerElem->trainInfo->drvCnt); + /* set the drvCnts */ + if (layerElem->errMix != NULL) { + for (j = 0; j < layerElem->errMix->elemNum; ++j) { + errElem = layerElem->errMix->feaList[j]; + n = IntVecSize(errElem->ctxPool); + m = IntVecSize(errElem->ctxMap); + for (k = 1; k <= n; ++k) { + for (l = 1; l <= m; ++l) { + c = errElem->ctxPool[k] + errElem->ctxMap[l]; + p = 1; + while (layerElem->drvCtx[p] != c) + ++p; + ++layerElem->trainInfo->drvCnt[p]; + } + } + } + } + else { + layerElem->trainInfo->drvCnt[1] = 1; + layerElem->trainInfo->tDrvCnt = 0; + } + /* accumulate the counters */ + n = IntVecSize(layerElem->drvCtx); + for (j = 1; j <= n; ++j) + layerElem->trainInfo->tDrvCnt += layerElem->trainInfo->drvCnt[j]; + } + curAI = curAI->next; + } +} + void SetIndexes(HMMSet *hset) { HMMScanState hss; StateInfo *si; MixPDF *mp; MLink m; - int h,nm,nsm,ns,nss,nt; - + int h,nm,nsm,ns,nss; + unsigned long int nt; + + if (hset->hsKind == ANNHS) { /* cz277 - ANN */ + return; + } + /* Reset indexes */ indexSet = TRUE; nt=0; @@ -3960,14 +7686,13 @@ void SetIndexes(HMMSet *hset) hss.mp->mIdx=-1; EndHMMScan(&hss); } - NewHMMScan(hset,&hss); do { if (!IsSeenV(hss.hmm->transP)) { - SetHook(hss.hmm->transP,(Ptr)(++nt)); + SetHook(hss.hmm->transP,(Ptr)(++nt)); TouchV(hss.hmm->transP); } - hss.hmm->tIdx=(int)GetHook(hss.hmm->transP); + hss.hmm->tIdx=(int)(unsigned long int)GetHook(hss.hmm->transP); } while(GoNextHMM(&hss)); EndHMMScan(&hss); @@ -3978,7 +7703,6 @@ void SetIndexes(HMMSet *hset) } while(GoNextHMM(&hss)); EndHMMScan(&hss); - nsm=nss=0; for (h=0; hmtab[h]; m!=NULL; m=m->next) { @@ -4025,7 +7749,7 @@ void SetCovKindUsage (HMMSet *hset) for (ck = 0; ck < NUMCKIND; ck++) hset->ckUsage[ck] =0; - if (hset->hsKind == DISCRETEHS) return; + if (hset->hsKind == DISCRETEHS || hset->hsKind == HYBRIDHS || hset->hsKind == ANNHS) return; /* cz277 - ANN */ NewHMMScan(hset,&hss); while(GoNextMix(&hss,FALSE)) @@ -4062,124 +7786,203 @@ void ResetHMMSet(HMMSet *hset) hset->numMacros=0; hset->numFiles=0; hset->mmfNames=NULL; + + /* cz277 - ANN */ + if (hset->annSet != NULL) { + + FreeANNSet(hset); + + hset->annSet = NULL; + for (i = 0; i < SMAX; ++i) + hset->feaMix[i] = NULL; + } + Dispose(hset->hmem, hset->firstElem); + } /* EXPORT->LoadHMMSet: Load all definition files for given hset */ ReturnStatus LoadHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt) { - int h,nState=0; - MLink p; - char fname[MAXSTRLEN],buf[MAXSTRLEN]; - HLink hmm; - Source src; - Token tok; - - hset->hsKind = PLAINHS; /* default assumption */ - if(LoadMacroFiles(hset)mtab[h]; p!=NULL; p=p->next) - if (p->type == 'h'){ - hmm = (HLink)p->structure; - if (hmm->numStates == 0 ) { - ConcatFN(hmmDir,p->id->name,hmmExt,fname); - if(InitScanner(fname,&src,&tok,hset)hsKind = PLAINHS; /* default assumption */ + if (LoadMacroFiles(hset) < SUCCESS) { + HRError(7050, "LoadHMMSet: Macro name expected"); + ResetHMMSet(hset); + return (FAIL); + } + + /* cz277 - ANN */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (p = hset->mtab[h]; p != NULL; p = p->next) { + if (p->type == 'h') { + hmm = (HLink)p->structure; + if (hmm->numStates == 0) { + ConcatFN(hmmDir, p->id->name, hmmExt ,fname); + if (InitScanner(fname,&src,&tok, HMMDefFilter) < SUCCESS) { /* cz277 - 64bit */ + HRError(7010,"LoadHMMSet: Can't find file"); ResetHMMSet(hset); - HMError(&src,"LoadHMMSet: Macro name failed"); - return(FAIL); - } - if (GetLabId(buf,FALSE) != p->id){ + return (FAIL); + } + if (trace & T_MAC) + printf("HModel: getting HMM Def from %s\n",fname); + if (GetToken(&src, &tok) < SUCCESS) { TermScanner(&src); ResetHMMSet(hset); - HMError(&src,"LoadHMMSet: Inconsistent HMM macro name"); - return(FAIL); - } - if(GetToken(&src,&tok)id) { + TermScanner(&src); + ResetHMMSet(hset); + HMError(&src, "LoadHMMSet: Inconsistent HMM macro name"); + return (FAIL); + } + if (GetToken(&src, &tok) < SUCCESS) { + TermScanner(&src); + ResetHMMSet(hset); + HMError(&src, "LoadAllMacros: GetToken failed"); + return (FAIL); + } + break; + default: + TermScanner(&src); + ResetHMMSet(hset); + HMError(&src, "LoadHMMSet: Unexpected macro in HMM def file"); + return (FAIL); + break; + } /* switch (tok.macroType) */ + } /* while (tok.sym == MACRO) */ + if (GetHMMDef(hset, &src, &tok, hmm, nState) < SUCCESS) { TermScanner(&src); ResetHMMSet(hset); - HMError(&src,"LoadAllMacros: GetToken failed"); - return(FAIL); - } - break; - default: - TermScanner(&src); - ResetHMMSet(hset); - HMError(&src,"LoadHMMSet: Unexpected macro in HMM def file"); - return(FAIL); - break; - } - if(GetHMMDef(hset,&src,&tok,hmm,nState)numStates == 0) */ + } /* if (p->type == 'h') */ + } /* for (p = hset->mtab[h]; p != NULL; p = p->next) */ + } /* for (h = 0; h < MACHASHSIZE; ++h) */ + + /* cz277 - ANN */ + if (hset->annSet != NULL) { + if (hset->numPhyHMM == 0) { + hset->hsKind = ANNHS; + for (curAI = hset->annSet->defsHead, s = 1, h = 0; h < hset->annSet->annNum; curAI = curAI->next, ++h) { + annDef = curAI->annDef; + if (annDef->nUse == 0) + ++annDef->nUse; + layerElem = annDef->layerList[annDef->layerNum - 1]; + if (layerElem->nDrv == 0 && s <= hset->swidth[0]) { + hset->annSet->outLayers[s] = layerElem; + /*hset->swidth[s] = layerElem->nodeNum;*/ + layerElem->isFinalLayer = TRUE; + ++s; + } } - } - if (forceHSKind) { - if (hset->hsKind == DISCRETEHS && cfHSKind != DISCRETEHS){ - HRError(7032,"LoadHMMSet: cannot change DISCRETE HMM Kind"); - ResetHMMSet(hset); - return(FAIL); - } - if (hset->hsKind == TIEDHS && cfHSKind != TIEDHS){ - HRError(7032,"LoadHMMSet: cannot change TIED HMM Kind"); - ResetHMMSet(hset); - return(FAIL); - } - hset->hsKind = cfHSKind; - }else{ - if (hset->hsKind == PLAINHS && IsShared(hset)) - hset->hsKind = SHAREDHS; - } - if (checking) { - if (CheckHSet(hset)semiTiedMacro != NULL) { - hset->semiTied = LoadOneXForm(hset, hset->semiTiedMacro, NULL); - /* set the component variance floors */ - SetSemiTiedVFloor(hset); - } - return(SUCCESS); + /*hset->swidth[0] = s;*/ + } + /* cz277 - semi */ + FindPostdefFeaSrc(hset); + CheckANNConsistency(hset); + FindANNCycles(hset); /* cz277 - many */ + SetDrvContext(hset); /* cz277 - many */ + InitXYBatch(hset); + /* set the default feature mixtures to each stream */ + if (hset->hsKind != HYBRIDHS && hset->hsKind != ANNHS) /* need to set the HMM input source */ + for (h = 1; h <= hset->swidth[0]; ++h) + if (hset->feaMix[h] == NULL) + hset->feaMix[h] = GetDefaultInpFeaMix(hset, h); +#ifdef CUDA + for (s = 1; s <= hset->swidth[0]; ++s) + if (hset->annSet->penVec[s] != NULL) + SyncNVectorHost2Dev(hset->annSet->penVec[s]); +#endif + } + + /* cz277 - ANN */ + if (hset->annSet != NULL && hset->annSet->annNum == 0) { + HRError(7076, "LoadHMMSet: at least one ANN should be defined if ~L is used"); + return FALSE; + } + + if (forceHSKind) { + if (hset->hsKind == DISCRETEHS && cfHSKind != DISCRETEHS) { + HRError(7032, "LoadHMMSet: cannot change DISCRETE HMM Kind"); + ResetHMMSet(hset); + return (FAIL); + } + if (hset->hsKind == TIEDHS && cfHSKind != TIEDHS) { + HRError(7032, "LoadHMMSet: cannot change TIED HMM Kind"); + ResetHMMSet(hset); + return (FAIL); + } + hset->hsKind = cfHSKind; + } + else { + if (hset->hsKind == PLAINHS && IsShared(hset)) + hset->hsKind = SHAREDHS; + } + if (checking) { + if (CheckHSet(hset) < SUCCESS) { + ResetHMMSet(hset); + HRError(7031, "LoadHMMSet: Invalid HMM data"); + return (FAIL); + } + } + /* cz277 - from xl207, gaussianisation */ + /* New code to allow generalisation of HMMSet to include "isolated" macros (GMMs) */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (p = hset->mtab[h]; p != NULL; p = p->next) { + if (p->type == 'h') { + hmmMacro = TRUE; + break; + } + } + } + if (hmmMacro) { + SetIndexes(hset); + SetCovKindUsage(hset); + SetParmHMMSet(hset); + } + + /* HMMSet loading has been completed - now load the semi-tied transform */ + if (hset->semiTiedMacro != NULL) { + hset->semiTied = LoadOneXForm(hset, hset->semiTiedMacro, NULL); + /* set the component variance floors */ + SetSemiTiedVFloor(hset); + } + + return (SUCCESS); } /* ------------------------ HMM Set Creation ----------------------- */ @@ -4214,6 +8017,11 @@ void CreateHMMSet(HMMSet *hset, MemHeap *heap, Boolean allowTMods) hset->semiTiedMacro = NULL; hset->semiTied = NULL; hset->projSize = 0; + + /* cz277 - ANN */ + /*hset->annSet = NULL; + for (s = 1; s < SMAX; ++s) + hset->feaMix[s] = NULL;*/ } /* CreateHMM: create logical macro. If pId is unknown, create macro for @@ -4222,7 +8030,6 @@ static ReturnStatus CreateHMM(HMMSet *hset, LabId lId, LabId pId) { MLink m; HLink hmm; - Boolean newMacro=FALSE; /* for memory clear up*/ m = FindMacroName(hset,'l',lId); if (m != NULL){ @@ -4239,7 +8046,6 @@ static ReturnStatus CreateHMM(HMMSet *hset, LabId lId, LabId pId) HRError(7091,"CreateHMM: NewMacro (Physical) failed"); /*will never happen*/ return(FAIL); } - newMacro=TRUE; if (pId != lId) ++hmm->nUse; } else { @@ -4262,12 +8068,23 @@ static ReturnStatus CreateHMM(HMMSet *hset, LabId lId, LabId pId) If isSingle, then fname is the name of a single HMM */ static ReturnStatus InitHMMSet(HMMSet *hset, char *fname, Boolean isSingle) { + int i; Source src; char buf[MAXSTRLEN]; LabId lId, pId; - + /* sets first element on heap to allow disposing of memory */ hset->firstElem = (Boolean *) New(hset->hmem, sizeof(Boolean)); + + /* cz277 - ANN */ + hset->annSet = NULL; + for (i = 1; i < SMAX; ++i) + hset->feaMix[i] = NULL; + hset->FTypeMacroNum = 0; + hset->LTypeMacroNum = 0; + hset->NTypeMacroNum = 0; + hset->MTypeMacroNum = 0; + hset->VTypeMacroNum = 0; if (isSingle){ /* fname is a single HMM file to load as a singleton set */ @@ -4312,28 +8129,34 @@ static ReturnStatus InitHMMSet(HMMSet *hset, char *fname, Boolean isSingle) } CloseSource(&src); } + return(SUCCESS); } - /* EXPORT->MakeHMMSet: Make a HMM set by reading the HMM list in fname */ ReturnStatus MakeHMMSet(HMMSet *hset, char *fname) { - if(InitHMMSet(hset, fname, FALSE)annSet = (ANNSet *) New(hset->hmem, sizeof(ANNSet));*/ + + if (InitHMMSet(hset, fname, FALSE) < SUCCESS) { + ResetHMMSet(hset); + return (FAIL); + } + return (SUCCESS); } /* EXPORT->MakeOneHMM: Create a singleton for the HMM hname */ ReturnStatus MakeOneHMM(HMMSet *hset, char *hname) { - if(InitHMMSet(hset, hname, TRUE)annSet = (ANNSet *) New(hset->hmem, sizeof(ANNSet));*/ + + if(InitHMMSet(hset, hname, TRUE) < SUCCESS) { + ResetHMMSet(hset); + return (FAIL); + } + return (SUCCESS); } /* -------------------- HMM/Macro Save Routines -------------------- */ @@ -4356,7 +8179,7 @@ static void SaveMacros(FILE *f, HMMSet *hset, short fidx, Boolean binary) PutOptions(hset,f,binary); for (h=0; hmtab[h]; m!=NULL; m=m->next) - if (m->fidx == fidx) + if (m->fidx == fidx) switch(m->type){ /* atomic macros first */ case 'u': PutMean(hset,f,m,(SVector)m->structure,TRUE,binary); @@ -4387,6 +8210,32 @@ static void SaveMacros(FILE *f, HMMSet *hset, short fidx, Boolean binary) /* should these be associated with the models or not ??? */ default: break; } + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'V') + PutNVecBundle(hset, f, m, (NVecBundle *) m->structure, VECTOR, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'M') + PutNMatBundle(hset, f, m, (NMatBundle *) m->structure, MATRIX, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'F') + PutFeaMix(hset, f, m, (FeaMix *) m->structure, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'L') + PutLayerElem(hset, f, m, (LELink) m->structure, TRUE, binary); + + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->fidx == fidx && m->type == 'N') + PutANNDef(hset, f, m, (ADLink) m->structure, TRUE, binary); + for (h=0; hmtab[h]; m!=NULL; m=m->next) if (m->fidx == fidx && m->type == 'm') @@ -4418,6 +8267,7 @@ static void SaveMacros(FILE *f, HMMSet *hset, short fidx, Boolean binary) if (m->fidx == fidx && m->type == 'r') PutRegTree(hset,f,m,(RegTree *)m->structure,TRUE,binary); } + } static ReturnStatus GetXFormMacros(HMMSet *hset, Source *src, Token *tok, int fidx) @@ -4430,15 +8280,16 @@ static ReturnStatus GetXFormMacros(HMMSet *hset, Source *src, Token *tok, int fi type = tok->macroType; if (!ReadString(src,buf)){ TermScanner(src); - HRError(999,"GetXFormMacros: Macro name expected in macro file %s",src->name); + HRError(7073,"GetXFormMacros: Macro name expected in macro file %s",src->name); return(FAIL); } id = GetLabId(buf,TRUE); if(GetToken(src,tok)name); + HRError(7073,"GetXFormMacros: Macro name expected in macro file %s",src->name); return(FAIL); } + switch(type){ case 'a': structure = GetAdaptXForm(hset,src,tok); @@ -4502,14 +8353,14 @@ static char *InitXFormScanner(HMMSet *hset, char *macroname, char *fname, HError(7035,"Failed to find macroname %s",macroname); } else { /* Close file and initialise scanner */ FClose(f,isPipe); - InitScanner(buf,src,tok,hset); + InitScanner(buf,src,tok, HMMDefFilter); /* cz277 - 64bit */ } if (trace&T_TOP) printf("Loading macro file %s\n",buf); return buf; } else { FClose(f,isPipe); if (trace&T_TOP) printf("Loading macro file %s\n",fname); - InitScanner(fname,src,tok,hset); + InitScanner(fname,src,tok, HMMDefFilter); /* cz277 - 64bit */ return fname; } } @@ -4535,7 +8386,7 @@ BaseClass *LoadBaseClass(HMMSet *hset, char* macroname, char *fname) TermScanner(&src); } if (GetXFormMacros(hset,&src,&tok,fidx)kind != SDBK) + HError(7037, "LoadOneNMatRPL: Speaker dependent type expected for M type %s", buf); + if ((m = FindMacroName(hset, 'M', bundle->hook)) == NULL) + HError(7037, "LoadOneNMatRPL: Fail to load the target M type macro"); + MakeNameNMatRPL(buf, m->id->name, namebuf); + if (strcmp(namebuf, macroname) != 0) + HError(7037, "LoadOneNMatRPL: Macro name unmatched %s vs. %s", macroname, namebuf); + /*if (GetToken(&src, &tok) < SUCCESS) + HError(9999, "LoadOneNMatRPL: Fail to acquire the next term"); */ + id = GetLabId(macroname, TRUE); + NewMacro(hset, fidx, 'M', id, (Ptr) bundle); + } + else + HError(7050, "LoadOneNMatRPL: M type macro def expected"); + TermScanner(&src); + } + else + bundle = (NMatBundle *) m->structure; + + return bundle; +} + +/* cz277 - xform */ +NVecBundle *LoadOneNVecRPL(HMMSet *hset, char *path, char *fname, char *macroname) { + Source src; + Token tok; + LabId id; + MLink m; + char absfn[MAXSTRLEN], buf[MAXSTRLEN], namebuf[MAXSTRLEN]; + NVecBundle *bundle=NULL; + int fidx = LOADFIDX; + + /* First see whether the macro exists */ + id = GetLabId(macroname, FALSE); + if (id == NULL || (m = FindMacroName(hset, 'V', id)) == NULL) { + MakeFN(fname, path, NULL, absfn); + if (InitScanner(absfn, &src, &tok, HMMDefFilter) < SUCCESS) + HError(7013, "LoadOneNVecRPL: Fail to load %s", absfn); + if (GetToken(&src, &tok) < SUCCESS) + HError(7050, "LoadOneNVecRPL: Fail to acquire the next term"); + /* process the macro or defination */ + if (tok.sym == MACRO && tok.macroType == 'V') { + if (!ReadString(&src, buf)) + HError(7050, "LoadOneNVecRPL: Macro name expected"); + bundle = GetNVecBundle(hset, &src, &tok, buf); + if (bundle->kind != SDBK) + HError(7037, "LoadOneNVecRPL: Speaker dependent type expected for V type %s", buf); + if ((m = FindMacroName(hset, 'V', bundle->hook)) == NULL) + HError(7037, "LoadOneNVecRPL: Fail to load the target V type macro"); + MakeNameNVecRPL(buf, m->id->name, namebuf); + if (strcmp(namebuf, macroname) != 0) + HError(7037, "LoadOneNVecRPL: Macro name unmatched %s vs. %s", macroname, namebuf); + /*if (GetToken(&src, &tok) < SUCCESS) + HError(9999, "LoadOneNVecRPL: Fail to acquire the next term"); */ + id = GetLabId(macroname, TRUE); + NewMacro(hset, fidx, 'V', id, (Ptr) bundle); + } + else + HError(7050, "LoadOneNVecRPL: V type macro def expected"); + TermScanner(&src); + } + else + bundle = (NVecBundle *) m->structure; + + return bundle; +} + +/* cz277 - xforms */ +void SaveOneNMatRPL(HMMSet *hset, NMatBundle *bundle, char *fname, Boolean binary) { + FILE *f; + Boolean isPipe; + + if ((f = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) + HError(7011, "SaveOneNMatRPL: Cannot create output file %s", fname); + if (trace & T_MAC) + printf("HModel: Saving replaceable matrix to %s", fname); + PutNMatBundle(hset, f, NULL, bundle, MATRIX, TRUE, binary); +} + +/* cz277 - xforms */ +void SaveOneNVecRPL(HMMSet *hset, NVecBundle *bundle, char *fname, Boolean binary) { + FILE *f; + Boolean isPipe; + + if ((f = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) + HError(7011, "SaveOneNVecRPL: Cannot create output file %s", fname); + if (trace & T_MAC) + printf("HModel: Saving replaceable vector to %s", fname); + PutNVecBundle(hset, f, NULL, bundle, VECTOR, TRUE, binary); +} + + /* EXPORT->LoadOneXForm: loads, or returns, the specified transform */ AdaptXForm *LoadOneXForm(HMMSet *hset, char* macroname, char *fname) { @@ -4615,7 +8582,7 @@ AdaptXForm *LoadOneXForm(HMMSet *hset, char* macroname, char *fname) TermScanner(&src); } if (GetXFormMacros(hset,&src,&tok,fidx) CreateXFormMacro: creates a macro for the new transform. Assigns fidx=-1 to indicate that this @@ -4725,7 +8693,7 @@ void CreateXFormMacro(HMMSet *hset,AdaptXForm *xform, char* macroname) if (((id = GetLabId(macroname,FALSE)) != NULL) && ((m = FindMacroName(hset,'a', id)) != NULL)) { /* Need a new one */ - HRError(999,"CreateXFormMacro: macroname %s previously loaded from %s",macroname, + HRError(7073,"CreateXFormMacro: macroname %s previously loaded from %s",macroname, ((AdaptXForm *)m->structure)->fname); DeleteMacro(hset,m); } @@ -4809,7 +8777,7 @@ void SaveOneXForm(HMMSet *hset, AdaptXForm *xform, char *fname, Boolean binary) char buf1[MAXSTRLEN], buf2[MAXSTRLEN]; if (xform->nUse>0) - HError(999,"Shared AdaptXForm cannot store to a single file"); + HError(7073,"Shared AdaptXForm cannot store to a single file"); binary = binary||saveBinary; if (xform->swapXForm != NULL) { /* need to save the parent xform */ swapxform = xform->swapXForm; @@ -4975,21 +8943,113 @@ static void ReOrderComponents(HMMSet *hset) EndHMMScan(&hss); } + +ReturnStatus SaveANNUpdate(HMMSet *hset, char *fname, Boolean binary) { + FILE *fp; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) { + HRError(7011, "SaveANNUpdate: Cannot create update file %s", fname); + return FAIL; + } + if (trace & T_MAC) + printf("HModel: Saving ANN updates to %s\n", fname); + + PutANNTrainInfo(hset, fp, UPDATE, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + +ReturnStatus SaveANNNegLR(HMMSet *hset, char *fname, Boolean binary) { + FILE *fp; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) { + HRError(7011, "SaveANNNegLR: Cannot create negative learning rate file %s", fname); + return FAIL; + } + if (trace & T_MAC) + printf("HModel: Saving ANN negative learning rates to %s\n", fname); + + PutANNTrainInfo(hset, fp, NEGLEARNRATE, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + +ReturnStatus SaveANNStore(HMMSet *hset, char *fname, Boolean binary) { + FILE *fp; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) { + HRError(7011, "SaveANNStore: Cannot create file %s", fname); + return FAIL; + } + if (trace & T_MAC) + printf("HModel: Saving the sum of the sqaured gradients to %s\n", fname); + + PutANNTrainInfo(hset, fp, SUMSQUAREDGRAD, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + +/* */ +ReturnStatus SaveANNDefs(HMMSet *hset, char *fname, Boolean binary) { + MLink m; + FILE *fp; + int h; + Boolean isPipe; + + if ((fp = FOpen(fname, HMMDefOFilter, &isPipe)) == NULL) + HError(7011, "SaveANNDefs: Cannot create macro file %s for ANNDefs", fname); + + fprintf(fp, "~o\n"); + PutOptions(hset, fp, binary); + /* macros */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'V') + PutNVecBundle(hset, fp, NULL, (NVecBundle *) m->structure, VECTOR, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'M') + PutNMatBundle(hset, fp, NULL, (NMatBundle *) m->structure, MATRIX, TRUE, binary); + /* cz277 - semi */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'F') + PutFeaMix(hset, fp, m, (FeaMix *) m->structure, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'L') + PutLayerElem(hset, fp, m, (LELink) m->structure, TRUE, binary); + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'N') + PutANNDef(hset, fp, m, (ADLink) m->structure, TRUE, binary); + + FClose(fp, isPipe); + return SUCCESS; +} + /* EXPORT->SaveHMMSet: save the given HMM set */ ReturnStatus SaveHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt, char *macroExt, Boolean binary) { FILE *f; MILink p; - char fname[256]; + char fname[MAXSTRLEN]; int h,i; MLink m; Boolean isPipe; - + FixOrphanMacros(hset); /* Sort mixture components according to the gConst values */ if ((hset->hsKind == PLAINHS || hset->hsKind == SHAREDHS) && reorderComps) ReOrderComponents(hset); binary = binary || saveBinary; + /* First output to all named MMF files */ for (p=hset->mmfNames,i=1; p!=NULL; p=p->next,i++) if (p->isLoaded) { @@ -5022,6 +9082,7 @@ ReturnStatus SaveHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt, char *macroExt PutHMMDef(hset,f,m,TRUE,binary); FClose(f,isPipe); } + return(SUCCESS); } @@ -5498,7 +9559,7 @@ LogFloat MOutP(Vector x, MixPDF *mp) return px; } - +/* cz277 - ANN: TODO: GMMAK, ANNAK */ /* EXPORT-> SOutP: returns log prob of stream s of observation x */ LogFloat SOutP(HMMSet *hset, int s, Observation *x, StreamElem *se) { @@ -5791,4 +9852,798 @@ char *BaseClassKind2Str(BaseClassKind bkind, char *buf) return strcpy(buf,basemap[bkind]); } +char *ActFunKind2Str(ActFunKind afkind, char *buf) +{ + static char *actfunmap[] = {"AFFINE", "HERMITE", "LINEAR", "RELU", "LHUCRELU", "PRELU", "PARMRELU", "SIGMOID", "LHUCSIGMOID", "PSIGMOID", "PARMSIGMOID", "SOFTRELU", "LHUCSOFTRELU", "PSOFTRELU", "PARMSOFTRELU", "SOFTMAX", "TANH"}; + return strcpy(buf, actfunmap[afkind]); +} + +/* cz277 - 150811 */ +char *LayerKind2Str(LayerKind layerKind, char *buf) +{ + static char *layerkindmap[] = {"ACTIVATIONONLY", "CONVOLUTION", "PERCEPTRON", "SUBSAMPLING"}; + return strcpy(buf, layerkindmap[layerKind]); +} + +/* cz277 - ANN */ +/* */ +void SetupStateInfoList(HMMSet *hset) { + int h, i, s; + MLink m; + HLink hmm; + StateInfo *stateInfo; + + if (hset->hsKind != HYBRIDHS) + HError(7091, "SetupStreamElemList: Funtion only applicable to hybrid systems"); + + for (s = 1; s <= hset->swidth[0]; ++s) { + hset->stateInfoList[s] = (StateInfo **) New(hset->hmem, sizeof(StateInfo *) * (hset->numStates + 1)); + memset(hset->stateInfoList[s], 0, sizeof(StateInfo *) * hset->numStates + 1); /* numSharedStates????? */ + } + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = hset->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (i = 2; i < hmm->numStates; ++i) { + stateInfo = hmm->svec[i].info; + for (s = 1; s <= hset->swidth[0]; ++s) { + if (hset->stateInfoList[s][stateInfo->pdf[s].targetIdx] == NULL) + hset->stateInfoList[s][stateInfo->pdf[s].targetIdx] = stateInfo; + } + } + } + } + } + +} + +/* */ +static void SetupStateMap(StateInfo *si, TargetMap *map, int S) { + int s; + + if (si->stateMap == NULL) { + si->stateMap = map; + for (s = 1; s <= S; ++s) { + map->mappedTargetPen[s] = LAdd((-1.0) * si->pdf[s].targetPen, map->mappedTargetPen[s]); + /*map->mappedTargetPen[s] += exp((-1.0) * si->pdf[s].targetPen);*/ + } + } + else if (si->stateMap != map) { + HError(7091, "SetupStateMap: Multiple definitions for the mapping for a state"); + } +} + +/* */ +static void SetupHMMMap(HLink hmm, TargetMap *map, int S) { + int i; + + for (i = 2; i < hmm->numStates; ++i) { + SetupStateMap(hmm->svec[i].info, map, S); + } +} + +/* */ +ReturnStatus SetupTargetMapList(HMMSet *hset, char *mapFN, int mappedTargetNum) { + Source src; + char buf[MAXSTRLEN], hmmBuf[MAXSTRLEN], srcName[MAXSTRLEN], orgName[MAXSTRLEN]; + LabId srcId, mapId; + int sIdx, pos, s; + TargetMap *mapPtr; + MLink m; + HLink hmm; + + if (hset->hsKind != HYBRIDHS) + HError(7091, "SetupTargetMapList: Funtion only applicable to hybrid systems"); + + /* init mapStruct */ + hset->annSet->mapStruct = (TargetMapStruct *) New(hset->hmem, sizeof(TargetMapStruct)); + hset->annSet->mapStruct->mappedTargetNum = mappedTargetNum; + /* first pass, count for mapped targets */ + if (InitSource(mapFN, &src, HMMListFilter) < SUCCESS) + HError(7010, "SetupTargetMapList: Cannot open target mapping list file %s", mapFN); + SkipWhiteSpace(&src); + while (ReadString(&src, buf)) { + strcpy(srcName, buf); + SkipWhiteSpace(&src); + if (!src.wasNewline) { + if (!ReadString(&src, buf)) { + CloseSource(&src); + HMError(&src, "SetupTargetMapList: Expecting a mapped target name"); + return FAIL; + } + strcat(buf, MAPTARGETPREF); + mapId = GetLabId(buf, FALSE); + if (mapId == NULL) { + ++hset->annSet->mapStruct->mappedTargetNum; + GetLabId(buf, TRUE); + } + SkipWhiteSpace(&src); + } + else { + strcpy(buf, srcName); + strcat(buf, MAPTARGETPREF); + mapId = GetLabId(buf, FALSE); + if (mapId == NULL) { + ++hset->annSet->mapStruct->mappedTargetNum; + GetLabId(buf, TRUE); + } + } + if (!src.wasNewline) { + CloseSource(&src); + HMError(&src, "SetupTargetMapList: Expecting newline"); + return FAIL; + } + } + CloseSource(&src); + RegisterTmpNMat(1, hset->annSet->mapStruct->mappedTargetNum); + /* second pass, setup the target mappings */ + hset->annSet->mapStruct->targetMapList = (TargetMap *) New(hset->hmem, sizeof(TargetMap) * hset->annSet->mapStruct->mappedTargetNum); + pos = 0; + InitSource(mapFN, &src, HMMListFilter); + SkipWhiteSpace(&src); + while (ReadString(&src, buf)) { + /*srcId = GetLabId(buf, FALSE);*/ + strcpy(srcName, buf); + SkipWhiteSpace(&src); + if (!src.wasNewline) { + ReadString(&src, buf); + SkipWhiteSpace(&src); + } + strcpy(orgName, buf); + strcat(buf, MAPTARGETPREF); + mapId = GetLabId(buf, FALSE); + m = FindMacroName(hset, '=', mapId); + if (m == NULL) { /* find a new mapped target */ + NewMacro(hset, 0, '=', mapId, &hset->annSet->mapStruct->targetMapList[pos]); + /*hset->annSet->mapStruct->targetMapList[pos].name = NewString(hset->hmem, strlen(orgName)); + strcpy(hset->annSet->mapStruct->targetMapList[pos].name, orgName);*/ + hset->annSet->mapStruct->targetMapList[pos].name = CopyString(hset->hmem, orgName); + /*hset->annSet->mapStruct->targetMapList[pos].mappedName = NewString(hset->hmem, strlen(buf)); + strcpy(hset->annSet->mapStruct->targetMapList[pos].mappedName, buf);*/ + hset->annSet->mapStruct->targetMapList[pos].mappedName = CopyString(hset->hmem, buf); + hset->annSet->mapStruct->targetMapList[pos].index = pos; + hset->annSet->mapStruct->targetMapList[pos].maxResults = CreateIntVec(hset->hmem, hset->annSet->mapStruct->mappedTargetNum); + memset(&hset->annSet->mapStruct->targetMapList[pos].maxResults[1], 0, sizeof(int) * hset->annSet->mapStruct->mappedTargetNum); + hset->annSet->mapStruct->targetMapList[pos].sumResults = CreateIntVec(hset->hmem, hset->annSet->mapStruct->mappedTargetNum); + memset(&hset->annSet->mapStruct->targetMapList[pos].sumResults[1], 0, sizeof(int) * hset->annSet->mapStruct->mappedTargetNum); + hset->annSet->mapStruct->targetMapList[pos].sampNum = 0; + mapPtr = &hset->annSet->mapStruct->targetMapList[pos]; + /*hset->annSet->targetMapList[pos].mappedTargetPen = 0.0;*/ + for (s = 1; s <= hset->swidth[0]; ++s) { + hset->annSet->mapStruct->targetMapList[pos].mappedTargetPen[s] = LZERO; + } + ++pos; + } + else { + mapPtr = (TargetMap *) m->structure; + } + /* now parse the original target name */ + srcId = GetLabId(srcName, FALSE); + if (srcId != NULL) { /* either a physical state name or a hmm */ + if ((m = FindMacroName(hset, 's', srcId)) != NULL) + SetupStateMap((StateInfo *) m->structure, mapPtr, hset->swidth[0]); + else if ((m = FindMacroName(hset, 'l', srcId)) != NULL) + SetupHMMMap((HLink) m->structure, mapPtr, hset->swidth[0]); + else + HError(7001, "SetupTargetMapList: Unsupported source target"); + } + else { /* a logical HMM state name */ + ExtractState(srcName, hmmBuf, &sIdx); + srcId = GetLabId(hmmBuf, FALSE); + if ((m = FindMacroName(hset, 'l', srcId)) == NULL) + HError(7001, "SetupTargetMapList: Unsupported source target"); + hmm = (HLink) m->structure; + if (sIdx < 2 || sIdx >= hmm->numStates) + HError(7075, "SetupTargetMapList: Illegal state index for source target"); + SetupStateMap(hmm->svec[sIdx].info, mapPtr, hset->swidth[0]); + } + } + CloseSource(&src); + + return SUCCESS; +} + + +/* */ +void UpdateTargetMapStats(ANNSet *annSet, int refPos, int hypPosSum) { + + /*++annSet->mapStruct->targetMapList[refPos].maxResults[hypPosMax + 1];*/ + ++annSet->mapStruct->targetMapList[refPos].sumResults[hypPosSum + 1]; + ++annSet->mapStruct->targetMapList[refPos].sampNum; +} + +/* */ +void InitMapStruct(HMMSet *hset) { + int s, i; + + if (hset->hsKind != HYBRIDHS) + HError(7091, "InitMapVec: Function only valid for hybrid systems"); + + for (s = 1; s <= hset->swidth[0]; ++s) { + /* first, mapVectors */ + hset->annSet->mapStruct->mapVectors[s] = CreateIntVec(hset->hmem, hset->annSet->outLayers[s]->nodeNum); + for (i = 1; i <= hset->annSet->outLayers[s]->nodeNum; ++i) { + hset->annSet->mapStruct->mapVectors[s][i] = hset->stateInfoList[s][i]->stateMap->index; + } + /* second, maskMatMapSum */ + hset->annSet->mapStruct->maskMatMapSum[s] = GenMaskTrNMatrix(hset->hmem, hset->annSet->mapStruct->mappedTargetNum, hset->annSet->mapStruct->mapVectors[s]); + /* thrid, outMatMapSum */ + hset->annSet->mapStruct->outMatMapSum[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->mapStruct->mappedTargetNum); + /* fourth, labMatMapSum[s] */ + if (hset->annSet->outLayers[s]->trainInfo->labMat != NULL) { + hset->annSet->mapStruct->labMatMapSum[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->mapStruct->mappedTargetNum); + } + /* fifth, llhMatMapSum */ + hset->annSet->mapStruct->llhMatMapSum[s] = CreateNMatrix(hset->hmem, GetNBatchSamples(), hset->annSet->mapStruct->mappedTargetNum); + /* sixth, penVecMapSum */ + hset->annSet->mapStruct->penVecMapSum[s] = CreateNVector(hset->hmem, hset->annSet->mapStruct->mappedTargetNum); + /* set penVecMapSum */ + for (i = 0; i < hset->annSet->mapStruct->mappedTargetNum; ++i) { + hset->annSet->mapStruct->penVecMapSum[s]->vecElems[i] = (-1.0) * hset->annSet->mapStruct->targetMapList[i].mappedTargetPen[s]; + /*hset->annSet->penVecMapSum[s]->vecElems[i] = (-1.0) * log(hset->annSet->targetMapList[i].mappedTargetPen[s]);*/ + } +#ifdef CUDA + SyncNVectorHost2Dev(hset->annSet->mapStruct->penVecMapSum[s]); +#endif + } +} + +/* */ +IntVec GetMapVec(HMMSet *hset, int streamIdx) { + if (hset->hsKind != HYBRIDHS) + HError(7091, "GetMapVec: Function only valid for hybrid systems"); + + return hset->annSet->mapStruct->mapVectors[streamIdx]; +} + +/* */ +void ShowMapConfusionMatrices(ANNSet *annSet, float minConf) { + int i, j; + float num, den, conf; + + printf("Confusion matrices for mapped targets:\n"); + /* for sum */ + printf("\tby Sum:\n"); + for (i = 0; i < annSet->mapStruct->mappedTargetNum; ++i) { + printf("\t%s\t\t", annSet->mapStruct->targetMapList[i].name); + for (j = 0; j < annSet->mapStruct->mappedTargetNum; ++j) { + num = (float) annSet->mapStruct->targetMapList[i].sumResults[j + 1]; + den = (float) annSet->mapStruct->targetMapList[i].sampNum; + conf = num / den; + if (conf > minConf) + printf("%s,%.2f ", annSet->mapStruct->targetMapList[j].name, conf); + } + printf("\n"); + } +} + +/* */ +void ClearMappedTargetCounters(ANNSet *annSet) { + int i; + + for (i = 0; i < annSet->mapStruct->mappedTargetNum; ++i) { + memset(&annSet->mapStruct->targetMapList[i].maxResults[1], 0, sizeof(int) * annSet->mapStruct->mappedTargetNum); + memset(&annSet->mapStruct->targetMapList[i].sumResults[1], 0, sizeof(int) * annSet->mapStruct->mappedTargetNum); + annSet->mapStruct->targetMapList[i].sampNum = 0; + } +} + +/* cz277 - 150811 */ +/* */ +IntVec ParseMacroSettings(char *setting) { + char buf[MAXSTRLEN]; + char *segPtr = NULL, *chrPtr = NULL; + IntVec cntVec = NULL; + char **subStrs = NULL; + int i; + + /* 1. copy the string to do counting */ + strcpy(buf, setting); + /* counting ; */ + segPtr = strtok(buf, ";"); + i = 0; + while (segPtr != NULL) { + segPtr = strtok(NULL, ";"); + i += 1; + } + cntVec = CreateIntVec(&gstack, i); + ZeroIntVec(cntVec); + subStrs = (char **) New(&gstack, i * sizeof(char *)); + /* 2. copy each substring */ + strcpy(buf, setting); + segPtr = strtok(buf, ";"); + i = 0; + while (segPtr != NULL) { + subStrs[i] = CopyString(&gstack, segPtr); + segPtr = strtok(NULL, ";"); + ++i; + } + /* 3. do the substring :, counting */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + chrPtr = strchr(subStrs[i - 1], ':'); + segPtr = strtok(subStrs[i - 1], ":,"); + cntVec[i] = 0; + while (segPtr != NULL) { + segPtr = strtok(NULL, ":,"); + cntVec[i]++; + } + if (chrPtr == NULL) + cntVec[i] *= -1; + } + /* 4. release temp structure */ + Dispose(&gstack, cntVec); + + return cntVec; +} + +/* set the update flag for each ANN layer */ +/* 'w': weights, 'b': bias */ +/* 'i': input activation, 'o': output activation */ +/* '0': init */ +static void SetANNLayerUpdateField(LELink layerElem, char *updateStr) { + int i, j; + + if (strcmp(updateStr, "i") == 0) { + layerElem->trainInfo->initFlag = TRUE; + } + else { + if (layerElem->wghtMat != NULL) + layerElem->wghtMat->updateflag = FALSE; + if (layerElem->biasVec != NULL) + layerElem->biasVec->updateflag = FALSE; + if (layerElem->actfunVecs != NULL) + for (i = 1; i <= layerElem->actfunParmNum; ++i) + layerElem->actfunVecs[i]->updateflag = FALSE; + for (i = 0; i < strlen(updateStr); ++i) { + switch (updateStr[i]) { + case 'a': + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->updateflag = TRUE; + break; + case 'b': + if (layerElem->biasVec != NULL) + layerElem->biasVec->updateflag = TRUE; + break; + case 'n': + if (layerElem->wghtMat != NULL) + layerElem->wghtMat->updateflag = FALSE; + if (layerElem->biasVec != NULL) + layerElem->biasVec->updateflag = FALSE; + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + layerElem->actfunVecs[j]->updateflag = FALSE; + break; + case 'i': + HError(-1, "SetANNLayerUpdateField: 'i' ignored"); + break; + case 'w': + if (layerElem->wghtMat != NULL) + layerElem->wghtMat->updateflag = TRUE; + break; + default: + HError(7092, "SetANNLayerUpdateField: Unknown update flag %c", updateStr[i]); + } + } + } +} + +/* set the update flags of the ANN models */ +void SetANNUpdateFlag(HMMSet *hset) { + int i, j, cnt; + LabId id; + ADLink annDef; + LELink layerElem; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + ANNSet *annSet; + char *ANNUpdateFlagStr; + + annSet = hset->annSet; + ANNUpdateFlagStr = GetANNUpdateFlagStr(); + /* init flags of all layers */ + /*curAI = annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + layerElem->trainInfo->updateFlag = BIASUK | ACTFUNUK | WEIGHTUK; + layerElem->trainInfo->initFlag = FALSE; + } + curAI = curAI->next; + }*/ + /* process each referred ANN */ + if (strcmp(ANNUpdateFlagStr, "") == 0) + return; + + annDef = NULL; + cntVec = ParseMacroSettings(ANNUpdateFlagStr); + if (IntVecSize(cntVec) > 1) + for (i = 2; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] < 0) + HError(7077, "SetANNUpdateFlag: Only 1st ANN reference could be anonymous"); + strcpy(buf, ANNUpdateFlagStr); + bufPtr = strtok(buf, ";:,"); + for (i = 1; i <= IntVecSize(cntVec); ++i) { + cnt = abs(cntVec[i]); + if (cntVec[i] < 0) + annDef = annSet->defsHead->annDef; + else { + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'N', id)) != NULL) + annDef = (ADLink) m->structure; + else + HError(7077, "SetANNUpdateFlag: Missing ANN macro name %s", bufPtr); + bufPtr = strtok(NULL, ";:,"); + --cnt; + } + for (j = 0; j < cnt; ++j) { + if (j < annDef->layerNum) { + layerElem = annDef->layerList[j]; + SetANNLayerUpdateField(layerElem, bufPtr); + } + bufPtr = strtok(NULL, ";:,"); + } + } +} + +/* cz277 - 150820 */ +static Boolean ParseBooleanValue(char *strval) { + if (strcasecmp(strval, "TRUE") == 0 || strcasecmp(strval, "T") == 0) + return TRUE; + else if (strcasecmp(strval, "FALSE") == 0 || strcasecmp(strval, "F") == 0) + return FALSE; + else + HError(-7075, "ParseBooleanValue: Unknown Boolean flag %s, return TRUE as default", strval); + return FALSE; +} + +/* cz277 - 150820 */ +void SetNMatUpdateFlag(HMMSet *hset) { + int i; + LabId id; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *matrixUpdateFlagStr; + NMatBundle *bundle=NULL; + + matrixUpdateFlagStr = GetNMatUpdateFlagStr(); + if (strcmp(matrixUpdateFlagStr, "") == 0) + return; + + cntVec = ParseMacroSettings(matrixUpdateFlagStr); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetNMatUpdateFlag: No matrix macro can be anonymous"); + strcpy(buf, matrixUpdateFlagStr); + bufPtr = strtok(buf, ";:,"); + /* process each matrix */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + /* get the macro */ + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'M', id)) != NULL) + bundle = (NMatBundle *) m->structure; + else + HError(7077, "SetNMatUpdateFlag: Missing matrix macro %s", bufPtr); + /* set the update flag */ + bufPtr = strtok(NULL, ";:,"); + bundle->updateflag = ParseBooleanValue(bufPtr); + bufPtr = strtok(NULL, ";:,"); + } +} + +/* cz277 - 150820 */ +void SetNVecUpdateFlag(HMMSet *hset) { + int i; + LabId id; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *vectorUpdateFlagStr; + NVecBundle *bundle=NULL; + + vectorUpdateFlagStr = GetNVecUpdateFlagStr(); + if (strcmp(vectorUpdateFlagStr, "") == 0) + return; + + cntVec = ParseMacroSettings(vectorUpdateFlagStr); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetNVecUpdateFlag: No vector macro can be anonymous"); + strcpy(buf, vectorUpdateFlagStr); + bufPtr = strtok(buf, ";:,"); + /* process each vector */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + /* get the macro */ + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'V', id)) != NULL) + bundle = (NVecBundle *) m->structure; + else + HError(7077, "SetNVecUpdateFlag: Missing vector macro %s", bufPtr); + /* set the update flag */ + bufPtr = strtok(NULL, ";:,"); + bundle->updateflag = ParseBooleanValue(bufPtr); + bufPtr = strtok(NULL, ";:,"); + } +} + +/* cz277 - 150811 */ +void SetupNMatRPLInfo(HMMSet *hset) { + int i, n; + LabId id; + NMatBundle *bundle; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *maskStrNMatRPLInfo; + char *inDirStrNMatRPLInfo; + char *extStrNMatRPLInfo; + char *outDirStrNMatRPLInfo; + RILink curRPLInfo = NULL; + RILink headRPLInfo = NULL; + + curRPLInfo = GetHeadNMatRPLInfo(); + /* 1. check the masks */ + maskStrNMatRPLInfo = GetMaskStrNMatRPLInfo(); + if (strcmp(maskStrNMatRPLInfo, "") == 0) + return; + cntVec = ParseMacroSettings(maskStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, maskStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each NMatrix */ + for (i = 1, n = 0; i <= IntVecSize(cntVec); ++i) { + bundle = NULL; + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'M', id)) != NULL) { + bundle = (NMatBundle *) m->structure; + if (bundle->variables == NULL) + HError(7000, "SetupNMatRPLInfo: NMatrix not properly set"); + } + else + HError(-7035, "SetupNMatRPLInfo: Cannot find NMatrix macro %s, ignored", bufPtr); + bufPtr = strtok(NULL, ";:,"); + if (bundle != NULL) { + ++n; + /* allocate a node for RPLInfo */ + if (curRPLInfo == NULL) { + headRPLInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = headRPLInfo; + } + else { + curRPLInfo->nextInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = curRPLInfo->nextInfo; + } + memset(curRPLInfo, 0, sizeof(RPLInfo)); + /* set the macro name */ + curRPLInfo->inRPLMask = CopyString(&gcheap, bufPtr); + curRPLInfo->id = id; + curRPLInfo->curNMat = bundle; + SetNMatBundleByNMatBundle(curRPLInfo->curNMat, &curRPLInfo->savNMat); + /*curRPLInfo->curNMat = bundle->variables; + curRPLInfo->savNMat.rowNum = bundle->variables->rowNum; + curRPLInfo->savNMat.colNum = bundle->variables->colNum; + curRPLInfo->savNMat.matElems = bundle->variables->matElems;*/ + } + bufPtr = strtok(NULL, ";:,"); + } + /* 2. check the in dirs */ + inDirStrNMatRPLInfo = GetInDirStrNMatRPLInfo(); + if (strcmp(inDirStrNMatRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(inDirStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, inDirStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 3. check the exts */ + extStrNMatRPLInfo = GetExtStrNMatRPLInfo(); + if (strcmp(extStrNMatRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(extStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, extStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 4. check the out dirs */ + outDirStrNMatRPLInfo = GetOutDirStrNMatRPLInfo(); + if (strcmp(outDirStrNMatRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(outDirStrNMatRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNMatRPLInfo: No NMatrix macro can be anonymous"); + strcpy(buf, outDirStrNMatRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 5. set the link back */ + SetHeadNMatRPLInfo(headRPLInfo); + SetNumNMatRPLInfo(n); +} + +/* cz277 - 150811 */ +void SetupNVecRPLInfo(HMMSet *hset) { + int i, n; + LabId id; + NVecBundle *bundle; + IntVec cntVec; + char buf[MAXSTRLEN]; + char *bufPtr; + MLink m; + char *maskStrNVecRPLInfo; + char *inDirStrNVecRPLInfo; + char *extStrNVecRPLInfo; + char *outDirStrNVecRPLInfo; + RILink curRPLInfo = NULL; + RILink headRPLInfo = NULL; + + curRPLInfo = GetHeadNVecRPLInfo(); + /* 1. check the masks */ + maskStrNVecRPLInfo = GetMaskStrNVecRPLInfo(); + if (strcmp(maskStrNVecRPLInfo, "") == 0) + return; + cntVec = ParseMacroSettings(maskStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, maskStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each NVector */ + for (i = 1, n = 0; i <= IntVecSize(cntVec); ++i) { + bundle = NULL; + id = GetLabId(bufPtr, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'V', id)) != NULL) { + bundle = (NVecBundle *) m->structure; + if (bundle->variables == NULL) + HError(7000, "SetupNVecRPLInfo: NVector not properly set"); + } + else + HError(-7035, "SetupNVecRPLInfo: Cannot find NVector macro %s, ignored", bufPtr); + bufPtr = strtok(NULL, ";:,"); + if (bundle != NULL) { + ++n; + /* allocate a node for RPLInfo */ + if (curRPLInfo == NULL) { + headRPLInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = headRPLInfo; + } + else { + curRPLInfo->nextInfo = (RILink) New(&gcheap, sizeof(RPLInfo)); + curRPLInfo = curRPLInfo->nextInfo; + } + /* initialise the RPLInfo */ + memset(curRPLInfo, 0, sizeof(RPLInfo)); + curRPLInfo->inRPLMask = CopyString(&gcheap, bufPtr); + curRPLInfo->id = id; + curRPLInfo->curNVec = bundle; + + SetNVecBundleByNVecBundle(curRPLInfo->curNVec, &curRPLInfo->savNVec); + /*curRPLInfo->curNVec = bundle->variables; + curRPLInfo->savNVec.vecLen = bundle->variables->vecLen; + curRPLInfo->savNVec.vecElems = bundle->variables->vecElems;*/ + } + bufPtr = strtok(NULL, ";:,"); + } + /* 2. check the in dirs */ + inDirStrNVecRPLInfo = GetInDirStrNVecRPLInfo(); + if (strcmp(inDirStrNVecRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(inDirStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, inDirStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 3. check the exts */ + extStrNVecRPLInfo = GetExtStrNVecRPLInfo(); + if (strcmp(extStrNVecRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(extStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, extStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 4. check the out dirs */ + outDirStrNVecRPLInfo = GetOutDirStrNVecRPLInfo(); + if (strcmp(outDirStrNVecRPLInfo, "") != 0) { + cntVec = ParseMacroSettings(outDirStrNVecRPLInfo); + for (i = 1; i <= IntVecSize(cntVec); ++i) + if (cntVec[i] != 2) + HError(7077, "SetupNVecRPLInfo: No NVector macro can be anonymous"); + strcpy(buf, outDirStrNVecRPLInfo); + bufPtr = strtok(buf, ";:,"); + /* process each segment */ + for (i = 1; i <= IntVecSize(cntVec); ++i) { + curRPLInfo = headRPLInfo; + while (curRPLInfo != NULL) { + if (strcmp(bufPtr, curRPLInfo->id->name) == 0) + break; + curRPLInfo = curRPLInfo->nextInfo; + } + bufPtr = strtok(NULL, ";:,"); + if (curRPLInfo != NULL) + curRPLInfo->inRPLDir = CopyString(&gcheap, bufPtr); + bufPtr = strtok(NULL, ";:,"); + } + } + /* 5. set the link back */ + SetHeadNVecRPLInfo(headRPLInfo); + SetNumNVecRPLInfo(n); +} + /* ------------------------- End of HModel.c --------------------------- */ diff --git a/HTKLib/HModel.h b/HTKLib/HModel.h old mode 100644 new mode 100755 index edc6b14..862f4b2 --- a/HTKLib/HModel.h +++ b/HTKLib/HModel.h @@ -3,36 +3,36 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ -/* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HModel.h HMM Model Definition Data Type */ +/* File: HModel.h HMM model definition data type */ /* ----------------------------------------------------------- */ -/* !HVER!HModel: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HModel: 3.5.0 [CUED 12/10/15] */ #ifndef _HMODEL_H_ #define _HMODEL_H_ @@ -41,21 +41,29 @@ extern "C" { #endif +/*#include "HANNet.h"*/ /* cz277 - ANN: ANN defs and types */ +/*#include "HMath.h"*/ /* cz277 - ANN */ +/*#include "HLabel.h"*/ /* cz277 - ANN */ + /* The following types define the in-memory representation of a HMM. All HMM's belong to a HMMSet which includes a macro table for rapidly mapping macro/hmm names into structures. */ -#define MACHASHSIZE 250007 /* Size of each HMM Set macro hash table */ -#define PTRHASHSIZE 513 /* Size of each HMM Set ptr map hash table */ -#define MINMIX 1.0E-5 /* Min usable mixture weight */ +#define MACHASHSIZE 250007 /* Size of each HMM Set macro hash table */ +#define PTRHASHSIZE 513 /* Size of each HMM Set ptr map hash table */ +#define MINMIX 1.0E-5 /* Min usable mixture weight */ #define LMINMIX -11.5129254649702 /* log(MINMIX) */ +/* cz277 - ANN */ +#define MAXINPUSE 10 /* maximum times of the parmkind feature used */ -#define MINDLOGP 0.000001 /* prob = exp(shortform/DLOGSCALE) */ -#define DLOGSCALE -2371.8 /* = 32767/ln(MINDLOGP) */ +#define MINDLOGP 0.000001 /* prob = exp(shortform/DLOGSCALE) */ +#define DLOGSCALE -2371.8 /* = 32767/ln(MINDLOGP) */ #define DLOGZERO 32767 +#define MAXNTOKENARG 256 /* cz277 - ANN: max number of args could be appended to a token */ + #define MixFloor(hset) ( MINMIX ) #ifdef WIN32 @@ -79,9 +87,13 @@ typedef struct _MMFInfo{ enum _DurKind {NULLD, POISSOND, GAMMAD, RELD, GEND}; typedef enum _DurKind DurKind; -enum _HSetKind {PLAINHS, SHAREDHS, TIEDHS, DISCRETEHS}; +enum _HSetKind {PLAINHS, SHAREDHS, TIEDHS, DISCRETEHS, HYBRIDHS, ANNHS}; /* cz277 - ANN: TODO: MIXEDHS */ typedef enum _HSetKind HSetKind; +/* cz277 - ANN: identifier for the type of state density functions */ +enum _HSDensKind {GMMDK, ANNDK}; +typedef enum _HSDensKind HSDensKind; + typedef struct { SVector mean; /* mean vector */ CovKind ckind; /* kind of covariance */ @@ -121,9 +133,14 @@ typedef struct { /* A Tied Mixture "Codebook" */ } TMixRec; typedef struct { /* 1 of these per stream */ - int nMix; /* num mixtures in this stream */ - MixtureVector spdf; /* Mixture Vector */ - Ptr hook; /* general hook */ + HSDensKind densKind; /* cz277 - ANN: density kind */ + LELink targetSrc; /* cz277 - ANN: (ANNDK) the source of this state density */ + int targetIdx; /* cz277 - ANN: (ANNDK) the index of the target */ + float targetPen; /* cz277 - ANN: (ANNDK) the penalty to this state */ + double occAcc; /* cz277 - ANN: (ANNDK) the field used to accumulate the occupancies */ + int nMix; /* (GMMDK) num mixtures in this stream */ + MixtureVector spdf; /* (GMMDK) Mixture Vector */ + Ptr hook; /* (GMMDK) general hook */ }StreamElem; typedef struct { @@ -134,6 +151,7 @@ typedef struct { int nUse; /* usage counter */ Ptr hook; /* general hook */ int stateCounter; /* # of state occurrences */ + TargetMap *stateMap; /* cz277 - ANN the mapping of this state */ } StateInfo; typedef struct { /* 1 of these per state */ @@ -276,6 +294,12 @@ typedef struct { have 0 or more logHMM macros referencing it. */ +/* + cz277 - ANN + Extended Macro: + e feature k ANNlayer n ANNmodel +*/ + typedef struct _MacroDef *MLink; typedef struct _MacroDef{ @@ -337,6 +361,18 @@ typedef struct _HMMSet{ /* Added to support delayed loading of the semi-tied transform */ char *semiTiedMacro; /* macroname of semi-tied transform */ + /* cz277 - ANN */ + FeaMix *feaMix[SMAX]; /* the feature mixture to the GMM-HMMs, could be NULL */ + ANNSet *annSet; /* the pointer to ANNSet instance */ + int nInp[SMAX]; /* the usage count of the input feature (inpElem length) */ + FELink inpElem[SMAX][MAXINPUSE]; /* the FeaElem pointer list for the input features */ + int FTypeMacroNum; /* number of F type macro */ + int LTypeMacroNum; /* number of L type macro */ + int NTypeMacroNum; /* number of N type macro */ + int MTypeMacroNum; + int VTypeMacroNum; + + StateInfo **stateInfoList[SMAX]; /* used to convert target index to stream element for each stream */ } HMMSet; /* --------------------------- Initialisation ---------------------- */ @@ -457,6 +493,7 @@ ReturnStatus MakeOneHMM(HMMSet *hset, char *hname); to create a singleton HMM set */ +/*ReturnStatus LoadMacroFiles(HMMSet *hset);*/ ReturnStatus LoadHMMSet(HMMSet *hset, char *hmmDir, char *hmmExt); /* Load any preloaded MMF files. Scan the physical list of hset and @@ -664,6 +701,68 @@ XFormKind Str2XFormKind(char *str); /* EXPORT-> Str2AdaptKind: parse the string into the correct xform kind */ AdaptKind Str2AdaptKind(char *str); +/* cz277 - ANN */ +LabId GetNextANNMacroName(char *invoker, HMMSet *hset, char type); +Boolean CmpFeaElem(FELink lhFEL, FELink rhFEL); +LELink GenBlankLayer(MemHeap *heap); +LELink GenNewPerceptronLayer(HMMSet *hset, int nodeNum, int inputDim, char *wghtName, char *biasName); +void InitANNSet(HMMSet *hset); +void FreeANNSet(HMMSet *hset); +void ShowANNSet(HMMSet *hset); +/*ReturnStatus CheckTrainInfo(ANNSet *annSet);*/ +void InitTrainInfo(HMMSet *hset, Boolean initLabMats, Boolean initLRInfo, Boolean initAuxInfo, Boolean initStruct); +void InitErrMix(HMMSet *hset); +void CheckANNConsistency(HMMSet *hset); +void InitXYBatch(HMMSet *hset); +ReturnStatus SaveANNUpdate(HMMSet *hset, char *fname, Boolean binary); +ReturnStatus SaveANNNegLR(HMMSet *hset, char *fname, Boolean binary); +ReturnStatus SaveANNStore(HMMSet *hset, char *fname, Boolean binary); +ReturnStatus SaveANNDefs(HMMSet *hset, char *fname, Boolean binary); + +ActFunKind Str2ActFunKind(char *str); + +void SetupStateInfoList(HMMSet *hset); +ReturnStatus SetupTargetMapList(HMMSet *hset, char *mapFN, int mappedTargetNum); +void UpdateTargetMapStats(ANNSet *annSet, int refPos, int hypPosSum); +void InitMapVec(HMMSet *hset); +IntVec GetMapVec(HMMSet *het, int streamIdx); +void ClearMappedTargetCounters(ANNSet *annSet); +void ShowMapConfusionMatrices(ANNSet *annSet, float minConf); +/* cz277 - 1007 */ +FeaMix *GetDefaultANNFeaMix(HMMSet *hset, LELink srcLayer); +/* cz277 - xform */ +void SetNVecBundleByNVecBundle(NVecBundle *sbundle, NVecBundle *tbundle); +void SetNMatBundleByNMatBundle(NMatBundle *sbundle, NMatBundle *tbundle); +void AugHostNVecBundleByNVecBundle(MemHeap *x, NVecBundle *sbundle, NVecBundle *tbundle); +void AugHostNMatBundleByNMatBundle(MemHeap *x, NMatBundle *sbundle, NMatBundle *tbundle); +NMatBundle *FetchNMatBundle(HMMSet *hset, char *macroname); +NVecBundle *FetchNVecBundle(HMMSet *hset, char *macroname); +NVecBundle *LoadOneNVecRPL(HMMSet *hset, char *path, char *fname, char *macroname); +NMatBundle *LoadOneNMatRPL(HMMSet *hset, char *path, char *fname, char *macroname); +void SaveOneNMatRPL(HMMSet *hset, NMatBundle *bundle, char *fname, Boolean binary); +void SaveOneNVecRPL(HMMSet *hset, NVecBundle *bundle, char *fname, Boolean binary); + +/* cz277 - many */ +void ShowANNStructDetails(HMMSet *hset); +/* cz277 - many */ +void ResetDrvContext(HMMSet *hset); +void SetDrvContext(HMMSet *hset); +void FindANNCycles(HMMSet *hset); + +/* cz277 - 150811 */ +Boolean CheckActFunParameters(LELink layerElem); +IntVec ParseMacroSettings(char *setting); +void SetANNUpdateFlags(HMMSet *hset); +/*void SetLayerUpdateFlag(HMMSet *hset); +void SetActFunUpdateFlag(HMMSet *hset);*/ +void SetNMatUpdateFlag(HMMSet *hset); +void SetNVecUpdateFlag(HMMSet *hset); +void SetupNMatRPLInfo(HMMSet *hset); +void SetupNVecRPLInfo(HMMSet *hset); +LayerKind Str2LayerKind(char *str); +void InitMapStruct(HMMSet *hset); +void SetANNUpdateFlag(HMMSet *hset); + #ifdef __cplusplus } #endif diff --git a/HTKLib/HNCache.c b/HTKLib/HNCache.c new file mode 100755 index 0000000..68ae83a --- /dev/null +++ b/HTKLib/HNCache.c @@ -0,0 +1,2000 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNCache.c ANN model data cache */ +/* ----------------------------------------------------------- */ + +char *hncache_version = "!HVER!HNCache: 3.5.0 [CUED 12/10/15]"; +char *hncache_vc_id = "$Id: HNCache.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +#include +#include "config.h" +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HAudio.h" +#include "HParm.h" +#include "HLabel.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HUtil.h" +#include "HAdapt.h" +#include "HFB.h" +#include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" +#include "HLM.h" +#include "HLat.h" +#include "HNCache.h" +#include + +/* ------------------------------ Trace Flags ------------------------------ */ + +static int trace = 0; + +#define T_TOP 0001 +#define T_CCH 0002 +#define T_RPL 0004 +#define MAX(a,b) ((a)>(b) ? (a):(b)) + + +/* --------------------------- Memory Management --------------------------- */ + +static MemHeap pbufStack; +static MemHeap transStack; +/* static MemHeap latHeap; */ + +/* ----------------------------- Configuration ------------------------------*/ + + +static ConfParam *cParm[MAXGLOBS]; /* config parameters */ +static int nParm = 0; + +static size_t defaultCacheSamples = 100000; /* the number of samples in cached; 1 sample by defult */ +/*static size_t defaultCacheSize = 134217728;*/ /* the size of the total size of the cache data block, in bytes; */ +/*static size_t batchSamples = 1;*/ /* the number of samples in batch; 1 sample by default */ +static VisitKind defaultVisitKind = FRMVK; /* the indicator for visiting order; frame level randomization by default */ +static ShuffKind shuffKind = KNUTHRSK; /* the way of shuffle the train set cache */ +static unsigned int shuffSeed = 0; /* the seed for generating random integers for shuffling the list */ +/*static char *updtFlagStr = NULL;*/ /* the string pointer indicating the layers to update */ +static size_t allCacheSamp = 0; /* the size of all data caches */ +static Boolean need2Unload = TRUE; /* the flag for whether the memory can hold all samples */ + +static int epochIdx = 1; /* the epoch number used by QuickNetShuffle */ +static int QN_outsegno = 0; /* the output segment number used by QuickNetShuffle */ +static const size_t QN_XORTable[32] = {0x1, 0x1, 0x3, 0x6, 0xc, 0x14, 0x30, 0x60, 0xb8, 0x110, 0x240, 0x500, 0xca0, 0x1b00, 0x3500, 0x6000, 0xb400, 0x12000, 0x20400, 0x72000, 0x90000, 0x140000, 0x300000, 0x420000, 0xd80000, 0x1200000, 0x3880000, 0x7200000, 0x9000000, 0x14000000, 0x32800000, 0x48000000}; /* the XOR table acquired from QuickNet (in QN_seqgen.cc) */ + +/* cz277 - mtload */ +static Boolean extThreadLoad = FALSE; + +static void UnloadOneUtt(DataCache *cache, int dstPos); + + +/* get the batch size */ +/*int GetNBatchSamples(void) { + return batchSamples; +}*/ + +/* set the batch size */ +/*void SetNBatchSamples(int userBatchSamples) { + batchSamples = userBatchSamples; +}*/ + +/* get current cache size */ +size_t GetDefaultNCacheSamples(void) { + return defaultCacheSamples; +} + +/* get current cache visiting kind */ +VisitKind GetDefaultVisitKind(void) { + return defaultVisitKind; +} + +/* set epoch index as a random seed */ +void SetEpochIndex(int curEpochIdx) { + epochIdx = curEpochIdx; +} + + +/* accumulate total cache size */ +void AccAllCacheSamples(size_t curCacheSamp) { + allCacheSamp += curCacheSamp; +} + +/* set the need2unload flag */ +void SetNeed2UnloadFlag(void) { + if (allCacheSamp < defaultCacheSamples) + need2Unload = FALSE; +} + +/* do knuth shuffling */ +static inline void KnuthShuffle(void *list, size_t stPos, size_t edPos, int unitLen) { + size_t i, randPos, n, range; + void *srcAddr, *dstAddr; + char buf[MAXSTRLEN]; /* the temp structure */ + + /* stPos, stPos + 1, ..., edPos - 1*/ + n = edPos - stPos; + /* set the range of the random value */ + range = n; /* for default KNUTHFSK */ + for (i = n - 1; i > 0; --i) { + /* set the range of the random value */ + if (shuffKind == KNUTHRSK) { + range = i + 1; + } + /* get the random position to switch */ + randPos = rand() % range; + /* compute the address of the source and destinate items */ + srcAddr = list + (stPos + i) * unitLen; + dstAddr = list + (stPos + randPos) * unitLen; + /* swap the values */ + memcpy(buf, srcAddr, unitLen); + memcpy(srcAddr, dstAddr, unitLen); + memcpy(dstAddr, buf, unitLen); + } +} + +/* copied from QuickNet (in QN_seqgen.cc) */ +static inline unsigned int GetLog2Ceil(unsigned int val) { + unsigned int mask, clear; + int topbits, count, j; + + mask = 0xffff0000u; + topbits = 16; + count = 0; + val -= 1; + for (j = 0; j < 4; ++j) { + clear = val & mask; + if (!clear) { + count += topbits; + val <<= topbits; + } + topbits >>= 1; + mask <<= topbits; + } + clear = val & 0xc0000000; + if (((int) clear) >= 0) { + ++count; + } + if (clear == 0) { + ++count; + } + return 32 - count; +} + +/* do QuickNet shuffling, copied from QuickNet (in QN_seqgen.cc) */ +static inline void QuickNetShuffle(void *list, int stPos, int edPos, int unitLen) { + int i, n; + void *srcVals, *srcAddr, *dstAddr; + unsigned int maxVal, xorVal, nxtVal, curVal, newSeed; + + n = edPos - stPos; + maxVal = n; + xorVal = QN_XORTable[GetLog2Ceil(maxVal + 1)]; + if (maxVal < 1 && maxVal > 0x7fffffff) { + HError(8920, "QuickNetShuffle: maxVal out of range"); + } + newSeed = QN_outsegno + (12345 * epochIdx) + shuffSeed; + nxtVal = (unsigned int) (newSeed % maxVal) + 1; + srcVals = (void *) New(&gstack, unitLen * n); + memcpy(srcVals, list + stPos * unitLen, unitLen * n); + + for (i = 0; i < n; ++i) { + curVal = nxtVal; + do { + if (nxtVal & 1) { + nxtVal = (nxtVal >> 1) ^ xorVal; + } + else { + nxtVal = nxtVal >> 1; + } + } while (nxtVal > maxVal); + curVal -= 1; + /* rearrange the value */ + srcAddr = srcVals + ((int) curVal) * unitLen; + dstAddr = list + (stPos + i) * unitLen; + memcpy(dstAddr, srcAddr, unitLen); + } + + Dispose(&gstack, srcVals); +} + +/* shuffle a segment */ +static inline void ShuffleSegment(void *list, size_t stPos, size_t edPos, int unitLen) { + switch (shuffKind) { + case KNUTHFSK: + case KNUTHRSK: + KnuthShuffle(list, stPos, edPos, unitLen); + break; + case QUICKNETSK: + QuickNetShuffle(list, (int) stPos, (int) edPos, unitLen); + break; + default: + HError(8991, "ShuffleSegment: Unknown shuffle kind"); + } +} + +/* */ +void InitNCache(void) +{ + int intVal; + char buf[MAXSTRLEN]; + Boolean boolVal; + + Register(hncache_version, hncache_vc_id); + nParm = GetConfig("HNCACHE", TRUE, cParm, MAXGLOBS); + + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) { + trace = intVal; + } + if (GetConfInt(cParm, nParm, "DATACACHESIZE", &intVal)) { + defaultCacheSamples = intVal; + } + if (GetConfStr(cParm, nParm, "DATAACCESSKIND", buf)) { + if (strcmp(buf, "FRAMERAND") == 0) + defaultVisitKind = FRMVK; + else if (strcmp(buf, "UTTERANCERAND") == 0) + defaultVisitKind = UTTVK; + else if (strcmp(buf, "PARALLELSTREAMORIGIN") == 0) + defaultVisitKind = PLNONEVK; + else if (strcmp(buf, "PARALLELSTREAMRAND") == 0) + defaultVisitKind = PLUTTVK; + else if (strcmp(buf, "ORIGINAL") == 0) + defaultVisitKind = NONEVK; + else + HError(8921, "InitNCache: Unknown data access kind"); + /*if (strcmp(buf, "FRAMERAND") == 0) { + defaultVisitKind = FRMVK; + } + else if (strcmp(buf, "UTTRAND") == 0) { + defaultVisitKind = UTTVK; + } + else if (strcmp(buf, "HIERAND") == 0) { + defaultVisitKind = UTTFRMVK; + } + else if (strcmp(buf, "PIPLORIG") == 0) { + defaultVisitKind = PLNONEVK; + } + else if (strcmp(buf, "PIPLRAND") == 0) { + defaultVisitKind = PLUTTVK; + } + else if (strcmp(buf, "HIEPIPLRAND") == 0) { + defaultVisitKind = PLUTTFRMVK; + } + else if (strcmp(buf, "ORIGINAL") == 0) { + defaultVisitKind = NONEVK; + } + else { + HError(9999, "InitNCache: Unknown visit kind"); + }*/ + } + if (GetConfStr(cParm, nParm, "SHUFFLEKIND", buf)) { + if (strcmp(buf, "KNUTHFIXED") == 0) { + shuffKind = KNUTHFSK; + } + else if (strcmp(buf, "KNUTHRAND") == 0) { + shuffKind = KNUTHRSK; + } + else if (strcmp(buf, "QUICKNET") == 0) { + shuffKind = QUICKNETSK; + } + else { + HError(8921, "InitNCache: Unknown shuffle kind"); + } + } + if (GetConfStr(cParm, nParm, "RANDSEED", buf)) { + if (strcmp(buf, "CURRENTTIME") == 0) { + shuffSeed = time(NULL); + } + else { + shuffSeed = (unsigned int) atol(buf); + } + srand(shuffSeed); /* set the seed */ + } + /* cz277 - mtload */ + if (GetConfBool(cParm, nParm, "EXTRATHREADLOADING", &boolVal)) { + extThreadLoad = boolVal; + HError(-8921, "InitNCache: EXTRATHREADLOADING is disabled"); + } + } + + /* initialise the stacks */ + CreateHeap(&pbufStack, "pbufStore", MSTAK, 1, 0.5, 1000, 10000); + CreateHeap(&transStack, "labStore", MSTAK, 1, 0.5, 1000, 10000); + /*CreateHeap(&latHeap, "latStore", CHEAP, 1, 0, 1000000, 10000000);*/ + + if (TRUE) { + /* GPU/MKL/CPU */ /* discard: should be set when compiling */ + /* THREADS */ + /* SGD/HF */ + /* LEARNING RATE SCHEDULE */ + /* RELATED STUFFS */ + } +} + +/* use to create a cache */ +/* if labelInfo == NULL, then no label is available */ +DataCache *CreateCache(MemHeap *heap, FILE *scpFile, int scpCnt, HMMSet *hset, Observation *obs, int streamIdx, size_t cacheSamples, VisitKind visitKind, XFInfo *xfInfo, LabelInfo *labelInfo, Boolean saveUttName) { + int i; + DataCache *cache; + + /* check the data heap type */ + if (heap->type != CHEAP) { + HError(8992, "CreateCache: Only CHEAP is supported for cache"); + } + /* check the correctness of the cache */ + if (obs == NULL) { + HError(8900, "CreateCache: NULL observation pointer"); + } + if ((obs->pk & BASEMASK) == DISCRETE || (obs->pk & HASVQ)) { + HError(8901, "CreateCache: VQ feature is not supported"); + } + if (streamIdx <= 0 || streamIdx > obs->swidth[0]) { + HError(8990, "CreateCache: Illegal stream index"); + } + /* initiate the cache structure first */ + cache = (DataCache *) New(heap, sizeof(DataCache)); + /* 0. set cmem and revisit */ + cache->cmem = heap; + cache->revisit = FALSE; + /* 1. set frmDim */ + cache->frmDim = obs->swidth[streamIdx]; + /* 2. set cacheSamples */ + cache->cacheSamples = MAX(cacheSamples, defaultCacheSamples); + /* 3. set tUttNum */ + cache->tUttNum = scpCnt; + /* 4. set nxtUttPos */ + cache->nxtUttPos = 0; + /* 5. initialise uttElems */ + cache->uttElems = (UttElem *) New(cache->cmem, cache->tUttNum * sizeof(UttElem)); + memset(cache->uttElems, 0, cache->tUttNum * sizeof(UttElem)); + /* 6. set visitKind */ + cache->visitKind = visitKind; + /* 7. stUttPos == edUttPos means nothing loaded yet */ + cache->stUttPos = 0; + cache->edUttPos = 0; + /* 8. initialise uttOrder */ + cache->uttOrder = (int *) New(cache->cmem, cache->tUttNum * sizeof(int)); + /* 9. set frmNum and tFrmNum */ + cache->frmNum = 0; + cache->tFrmNum = 0; + /* 10. initialise frmOrder */ + cache->fvLen = 0; + cache->frmOrder = NULL; + /* 11. set order ptr */ + /*cache->orderPtr = -1;*/ + cache->orderPtr = 0; + /* 12. initialise the frmPtrs */ + cache->batchSamples = GetNBatchSamples(); + if (visitKind == FRMVK) { + cache->ptrNum = 0; + } + else if (visitKind == PLNONEVK || visitKind == PLUTTVK || visitKind == PLUTTFRMVK) { + /* TODO: add some safety check for batch and cache size */ + cache->ptrNum = cache->batchSamples; + } + else { + cache->ptrNum = 1; + } + cache->frmPtrs = (FrmIndex *) New(cache->cmem, cache->ptrNum * sizeof(FrmIndex)); + for (i = 0; i < cache->ptrNum; ++i) { + cache->frmPtrs[i].uttIdx = -1; + cache->frmPtrs[i].frmIdx = -1; + } + /* 13. basic label structure */ + /*cache->labelInfo = labelInfo;*/ + if (labelInfo != NULL) { + cache->labelInfo = (LabelInfo *) New(cache->cmem, sizeof(LabelInfo)); + memcpy(cache->labelInfo, labelInfo, sizeof(LabelInfo)); + } + else { + cache->labelInfo = NULL; + } + /* 14. initialise batLen and frmBatch */ + cache->batLen = 0; + cache->frmBatch = (FrmIndex *) New(cache->cmem, cache->batchSamples * sizeof(FrmIndex)); + /* cz277 - semi */ + /*if (visitKind == PLNONEVK || visitKind == PLUTTVK || visitKind == PLUTTFRMVK) { + cache->CMDVecPL = (int *) New(cache->cmem, cache->batchSamples * sizeof(int)); + } + else { + cache->CMDVecPL = NULL; + }*/ + if (visitKind == FRMVK) { + cache->CMDVecPL = NULL; + } + else { + cache->CMDVecPL = (int *) New(cache->cmem, cache->batchSamples * sizeof(int)); + } + + /* set the auxiliary structures */ + /* 1. set script file */ + cache->scpFile = scpFile; + /* 2. set the HMMSet pointer */ + cache->hmmSet = hset; + /* 3. initilise parmBuf */ + /*cache->parmBuf = NULL;*/ + /* 4. set obs */ + cache->obs = obs; + /* 5. set streamIdx */ + cache->streamIdx = streamIdx; + /* set outLayer and labMat */ + cache->outLayer = hset->annSet->outLayers[streamIdx]; + /*cache->labMatMapSum = NULL;*/ + if ((labelInfo != NULL) && (labelInfo->labelKind & FEALK) != 0) { + cache->labVec = NULL; + cache->labMat = cache->outLayer->trainInfo->labMat; + } + else if ((labelInfo != NULL) && (labelInfo->labelKind & LABLK) != 0) { + cache->labVec = CreateIntVec(&gcheap, cache->batchSamples); + cache->labMat = cache->outLayer->trainInfo->labMat; + } + else { + cache->labVec = NULL; + cache->labMat = NULL; + } + /* 6. set saveUttName */ + /*if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK && saveUttName) + HError(9999, "CreateCache: SaveUttName is only possible to be true for UTT series");*/ + cache->saveUttName = saveUttName; + /* 7. set xfInfo */ + cache->xfInfo = xfInfo; + + return cache; +} + +/* update the cache, when doing HMMSet reload */ +void ResetCacheHMMSetCfg(DataCache *cache, HMMSet *hset) { + if (cache->hmmSet != hset) + HError(8990, "ResetCacheConfig: New hset address does not equal to previous"); + /* reset hmmSet */ + /* cache->hmmSet = hset; */ + /* reset outLayer */ + cache->outLayer = hset->annSet->outLayers[cache->streamIdx]; + /* reset labMat */ + cache->labMat = cache->outLayer->trainInfo->labMat; +} + +/* A function to release all current loaded utterances */ +static void CleanCache(DataCache *cache) { + int i; + + for (i = cache->stUttPos; i < cache->edUttPos; ++i) + UnloadOneUtt(cache, i); +} + +/* reset to reuse the cache */ +void ResetCache(DataCache *cache) { + /* set revisit */ + cache->revisit = TRUE; + /* release the rest loaded utterances */ + if (need2Unload) { + CleanCache(cache); + } + /* reset frame items */ + if (cache->frmOrder != NULL) { + Dispose(cache->cmem, cache->frmOrder); + cache->frmOrder = NULL; + cache->fvLen = 0; + } + if (need2Unload) { + cache->frmNum = 0; + cache->tFrmNum = 0; + } + cache->batLen = 0; + /* reset utterance items */ + if (need2Unload) { + cache->nxtUttPos = 0; + } + /*memset(cache->uttElems, 0, cache->tUttNum * sizeof(UttElem));*/ + cache->stUttPos = 0; + cache->edUttPos = 0; + /* reset file handler */ + if (need2Unload) { + rewind(cache->scpFile); + } + /* initialise the cache */ + /*InitCache(cache);*/ +} + +/* A function to release the whole cache */ +void FreeCache(DataCache *cache) { + /* release the rest loaded utterances */ + CleanCache(cache); + /* release uttElems */ + Dispose(cache->cmem, cache->uttElems); + /* release uttOrder */ + Dispose(cache->cmem, cache->uttOrder); + /* release frmPtrs */ + Dispose(cache->cmem, cache->frmPtrs); + /* release frmBatch */ + Dispose(cache->cmem, cache->frmBatch); + /* cz277 - semi, release CMDVecPL */ + if (cache->CMDVecPL != NULL) { + Dispose(cache->cmem, cache->CMDVecPL); + } + /* release labelInfo */ + if (cache->labelInfo != NULL) { + Dispose(cache->cmem, cache->labelInfo); + } +} + +/* cz277 - 150811 */ +char *MakeNameNMatRPL(char *curSpkr, char *tgtMacro, char *RPLName) { + char buf[MAXSTRLEN]; + + strcpy(buf, tgtMacro); + strcat(buf, "+"); + strcat(buf, curSpkr); + strcpy(RPLName, buf); + + return RPLName; +} + +/* cz277 - 150811 */ +char *MakeNameNVecRPL(char *curSpkr, char *tgtMacro, char *RPLName) { + char buf[MAXSTRLEN]; + + strcpy(buf, tgtMacro); + strcat(buf, "+"); + strcat(buf, curSpkr); + strcpy(RPLName, buf); + + return RPLName; +} + +/* cz277 - xform */ +static void LoadOneUttNMatRPLs(HMMSet *hset, UttElem *uttElem) { + int i; + Boolean maskMatch; + char curSpkr[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NMatBundle *bundle; + + /* handle input replaceable parts */ + i = 0; + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + if (maskMatch == FALSE) + HError(8919, "LoadOneUttNMatRPLs: %s does not match %s", curRPLInfo->inRPLMask, uttElem->uttName); + MakeNameNMatRPL(curSpkr, curRPLInfo->id->name, curRPLInfo->cacheInSpkr); + MakeFN(curRPLInfo->cacheInSpkr, NULL, curRPLInfo->inRPLExt, curMacroName); + MakeFN(curSpkr, NULL, curRPLInfo->inRPLExt, curFN); + bundle = LoadOneNMatRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName); + if (bundle == NULL) + HError(8919, "LoadOneUttNMatRPLs: %s does not have replaceable matrix %s", uttElem->uttName, curMacroName); + AugHostNMatBundleByNMatBundle(hset->hmem, curRPLInfo->curNMat, bundle); + /*uttElem->curUttNMatRPLs[i] = LoadOneNMatRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName);*/ + uttElem->curUttNMatRPLs[i] = bundle; + if (uttElem->curUttNMatRPLs[i]->variables->rowNum != curRPLInfo->curNMat->variables->rowNum || + uttElem->curUttNMatRPLs[i]->variables->colNum != curRPLInfo->curNMat->variables->colNum) + HError(8922, "LoadOneUttNMatRPLs: %s matrix dim inconsistent %s", uttElem->uttName, curMacroName); + ++i; + curRPLInfo = curRPLInfo->nextInfo; + } +} + +static void LoadOneUttNVecRPLs(HMMSet *hset, UttElem *uttElem) { + int i; + Boolean maskMatch; + char curSpkr[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NVecBundle *bundle; + + /* handle input replaceable parts */ + i = 0; + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + if (maskMatch == FALSE) + HError(8919, "LoadOneUttNVecRPLs: %s does not match %s", curRPLInfo->inRPLMask, uttElem->uttName); + MakeNameNVecRPL(curSpkr, curRPLInfo->id->name, curRPLInfo->cacheInSpkr); + MakeFN(curRPLInfo->cacheInSpkr, NULL, curRPLInfo->inRPLExt, curMacroName); + MakeFN(curSpkr, NULL, curRPLInfo->inRPLExt, curFN); + bundle = LoadOneNVecRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName); + if (bundle == NULL) + HError(8919, "LoadOneUttNVecRPLs: %s does not have replaceable vector %s", uttElem->uttName, curMacroName); + AugHostNVecBundleByNVecBundle(hset->hmem, curRPLInfo->curNVec, bundle); + /*uttElem->curUttNVecRPLs[i] = LoadOneNVecRPL(hset, curRPLInfo->inRPLDir, curFN, curMacroName);*/ + uttElem->curUttNVecRPLs[i] = bundle; + if (uttElem->curUttNVecRPLs[i]->variables->vecLen != curRPLInfo->curNVec->variables->vecLen) + HError(8922, "LoadOneUttNVecRPLs: %s matrix dim inconsistent %s", uttElem->uttName, curMacroName); + ++i; + curRPLInfo = curRPLInfo->nextInfo; + } +} + + +/* cz277 - xform */ +void SaveAllNMatRPLs(HMMSet *hset, FILE *script) { + Boolean maskMatch; + char uttName[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NMatBundle *bundle; + + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + strcpy(curRPLInfo->cacheInSpkr, ""); + curRPLInfo = curRPLInfo->nextInfo; + } + /* for each word in the scp file, output when speaker change happens */ + rewind(script); + while (GetNextScpWord(script, uttName) != NULL) { + /* output the replaceable matrices */ + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curRPLInfo->curInSpkr, uttName); + if (maskMatch == FALSE) + HError(8919, "SaveAllNMatRPLs: Input mask %s does not match the name %s", curRPLInfo->inRPLMask, uttName); + if (strcmp(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr) == 0) { + MakeNameNMatRPL(curRPLInfo->curInSpkr, curRPLInfo->id->name, curMacroName); + bundle = LoadOneNMatRPL(hset, NULL, NULL, curMacroName); + MakeFN(curRPLInfo->curInSpkr, curRPLInfo->outRPLDir, curRPLInfo->outRPLExt, curFN); + SaveOneNMatRPL(hset, bundle, curFN, curRPLInfo->saveBinary); + strcpy(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr); + } + curRPLInfo = curRPLInfo->nextInfo; + } + } +} + +void SaveAllNVecRPLs(HMMSet *hset, FILE *script) { + Boolean maskMatch; + char uttName[MAXSTRLEN], curMacroName[MAXSTRLEN], curFN[MAXSTRLEN]; + RILink curRPLInfo; + NVecBundle *bundle; + + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + strcpy(curRPLInfo->cacheInSpkr, ""); + curRPLInfo = curRPLInfo->nextInfo; + } + /* for each word in the scp file, output when speaker change happens */ + rewind(script); + while (GetNextScpWord(script, uttName) != NULL) { + /* output the replaceable matrices */ + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + maskMatch = MaskMatch(curRPLInfo->inRPLMask, curRPLInfo->curInSpkr, uttName); + if (maskMatch == FALSE) + HError(8919, "SaveAllNVecRPLs: Input mask %s does not match the name %s", curRPLInfo->inRPLMask, uttName); + if (strcmp(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr) == 0) { + MakeNameNVecRPL(curRPLInfo->curInSpkr, curRPLInfo->id->name, curMacroName); + bundle = LoadOneNVecRPL(hset, NULL, NULL, curMacroName); + MakeFN(curRPLInfo->curInSpkr, curRPLInfo->outRPLDir, curRPLInfo->outRPLExt, curFN); + SaveOneNVecRPL(hset, bundle, curFN, curRPLInfo->saveBinary); + strcpy(curRPLInfo->cacheInSpkr, curRPLInfo->curInSpkr); + } + curRPLInfo = curRPLInfo->nextInfo; + } + } +} + +/* cz277 - xform */ +void InstallOneUttNMatRPLs(UttElem *uttElem) { + int i; + RPLInfo *curRPLInfo; + char curSpkr[MAXSTRLEN], curFN[MAXSTRLEN]; + + i = 0; + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + MakeFN(curSpkr, curRPLInfo->inRPLDir, curRPLInfo->inRPLExt, curFN); + if (trace & T_RPL) + printf("Using replaceable matrix for %s from %s\n", curRPLInfo->id->name, curFN); + SetNMatBundleByNMatBundle(uttElem->curUttNMatRPLs[i], curRPLInfo->curNMat); + curRPLInfo = curRPLInfo->nextInfo; + ++i; + } +} + +void InstallOneUttNVecRPLs(UttElem *uttElem) { + int i; + RPLInfo *curRPLInfo; + char curSpkr[MAXSTRLEN], curFN[MAXSTRLEN]; + + i = 0; + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + MaskMatch(curRPLInfo->inRPLMask, curSpkr, uttElem->uttName); + MakeFN(curSpkr, curRPLInfo->inRPLDir, curRPLInfo->inRPLExt, curFN); + if (trace & T_RPL) + printf("Using replaceable vector for %s from %s\n", curRPLInfo->id->name, curFN); + SetNVecBundleByNVecBundle(uttElem->curUttNVecRPLs[i], curRPLInfo->curNVec); + curRPLInfo = curRPLInfo->nextInfo; + ++i; + } +} + +void ResetNMatRPL() { + RILink curRPLInfo; + + curRPLInfo = GetHeadNMatRPLInfo(); + while (curRPLInfo != NULL) { + if (curRPLInfo->curNMat->variables->matElems != curRPLInfo->savNMat.variables->matElems) + SetNMatBundleByNMatBundle(&curRPLInfo->savNMat, curRPLInfo->curNMat); + curRPLInfo = curRPLInfo->nextInfo; + } +} + +void ResetNVecRPL() { + RILink curRPLInfo; + + curRPLInfo = GetHeadNVecRPLInfo(); + while (curRPLInfo != NULL) { + if (curRPLInfo->curNVec->variables->vecElems != curRPLInfo->savNVec.variables->vecElems) + SetNVecBundleByNVecBundle(&curRPLInfo->savNVec, curRPLInfo->curNVec); + curRPLInfo = curRPLInfo->nextInfo; + } +} + +/* load one utterance into cache, at dstPos (usually nxtUttPos) */ +static ReturnStatus LoadOneUtt(DataCache *cache, int dstPos) { + int i, j, len, dim, sIdx, lsIdx = 0, transcnt; /* cz277 - trans */ + long stIdx, edIdx, curIdx; + char feaBuf[MAXSTRLEN], spkBuf[MAXSTRLEN], labBuf[MAXSTRLEN], hmmBuf[MAXSTRLEN]; + char fnBuf[MAXSTRLEN], pathBuf[MAXSTRLEN], latBuf[MAXSTRLEN]; + FILE *filePtr; + Boolean isPipe, isPhoneLab; /* cz277 - trans */ + Observation *obs; + UttElem *uttElem; + float *dstPtr; + Vector x; + Transcription *trans; + LLink llink; + MLink macDef; + StreamElem *streamElem; + HLink hlink; + ParmBuf parmBuf; + BufferInfo pbInfo; + LabId hmmId = NULL, lhmmId; /* cz277 - trans */ + Vector tmpVec; + /* cz277 - trans */ + TrAcc *ta; + + /* check the destinate position */ + if (dstPos >= cache->tUttNum) + return FAIL; + /* if no word to read in the script */ + if (GetNextScpWord(cache->scpFile, feaBuf) == NULL) + HError(8913, "LoadOneUtt: Fail to read the next word in the script"); + /* monitor speaker change */ + if (cache->xfInfo != NULL) + UpdateSpkrStats(cache->hmmSet, cache->xfInfo, feaBuf); + /* reset the heap for the next utterance */ + ResetHeap(&pbufStack); + /* open the next utterance */ + parmBuf = OpenBuffer(&pbufStack, feaBuf, 0, UNDEFF, TRI_UNDEF, TRI_UNDEF); + if (!parmBuf) + HError(8910, "LoadOneUtt: Open input data failed"); + /* prepare to load the data */ + uttElem = &cache->uttElems[dstPos]; + if (cache->saveUttName) + uttElem->uttName = CopyString(cache->cmem, feaBuf); + uttElem->uttLen = ObsInBuffer(parmBuf); + uttElem->frmUsed = 0; /* the usage counter of the frames */ + /* load all frames into cache */ + len = uttElem->uttLen; + dim = cache->frmDim; + obs = cache->obs; + uttElem->frmMat = (float *) New(cache->cmem, len * dim * sizeof(float)); + dstPtr = uttElem->frmMat; + for (i = 0; i < len; ++i) { + ReadAsTable(parmBuf, i, obs); + x = obs->fv[cache->streamIdx]; + /* TODO: apply compFX form */ + /* ApplyCompXForm ??? */ + for (j = 1; j <= dim; ++j, ++dstPtr) { /* just copy the data */ + if (isnan(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has nan value", uttElem->uttName, i, j); + if (isinf(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has inf value", uttElem->uttName, i, j); + *dstPtr = x[j]; + } + } + /* cz277 - aug */ + /* load the augmented feature vectors */ + for (i = 1; i <= MAXAUGFEAS; ++i) { + uttElem->augFeaVec[i] = NULL; + if (cache->streamIdx == 1) { + tmpVec = GetAugFeaVector(parmBuf, i); + if (tmpVec != NULL) { + uttElem->augFeaVec[i] = CreateVector(cache->cmem, VectorSize(tmpVec)); + CopyVector(tmpVec, uttElem->augFeaVec[i]); + } + } + } + + /* close current buffer */ + CloseBuffer(parmBuf); + /* set frmOrder */ + if (cache->visitKind == PLUTTFRMVK || cache->visitKind == UTTFRMVK) { + /* initialise */ + uttElem->frmOrder = (int *) New(cache->cmem, len * sizeof(int)); + for (i = 0; i < len; ++i) + uttElem->frmOrder[i] = i; + /* shuffle the order array */ + ShuffleSegment(uttElem->frmOrder, 0, len, sizeof(int)); + } + else + uttElem->frmOrder = NULL; + /* update the frame count in cache */ + cache->frmNum += len; + cache->tFrmNum += len; + /* save the xforms */ + /*if (cache->xfInfo != NULL && cache->xfInfo->inXForm != NULL) { + uttElem->inXForm = (AdaptXForm *) New(cache->cmem, sizeof(AdaptXForm)); + memcpy(uttElem->inXForm, cache->xfInfo->inXForm, sizeof(AdaptXForm)); + } + else { + uttElem->inXForm = NULL; + } + if (cache->xfInfo != NULL && cache->xfInfo->paXForm != NULL) { + uttElem->paXForm = (AdaptXForm *) New(cache->cmem, sizeof(AdaptXForm)); + memcpy(uttElem->paXForm, cache->xfInfo->paXForm, sizeof(AdaptXForm)); + } + else { + uttElem->paXForm = NULL; + }*/ + /* cz277 - xform */ + uttElem->inXForm = cache->xfInfo->inXForm; + uttElem->paXForm = cache->xfInfo->paXForm; + /* cz277 - 150811 */ + uttElem->curUttNMatRPLs = NULL; + uttElem->curUttNVecRPLs = NULL; + i = GetNumNMatRPLInfo(); + j = GetNumNVecRPLInfo(); + if (i > 0) { + uttElem->curUttNMatRPLs = (NMatBundle **) New(cache->cmem, i * sizeof(NMatBundle *)); + memset(uttElem->curUttNMatRPLs, 0, i * sizeof(NMatBundle *)); + LoadOneUttNMatRPLs(cache->hmmSet, uttElem); + } + if (j > 0) { + uttElem->curUttNVecRPLs = (NVecBundle **) New(cache->cmem, j * sizeof(NVecBundle *)); + memset(uttElem->curUttNVecRPLs, 0, j * sizeof(NVecBundle *)); + LoadOneUttNVecRPLs(cache->hmmSet, uttElem); + } + + /* set the labels */ + if (cache->labelInfo != NULL) { + /* process feature files */ + uttElem->flabMat = NULL; + if ((cache->labelInfo->labelKind & FEALK) != 0) { /* load feature files */ + if (GetNextScpWord(cache->labelInfo->scpFLab, labBuf) == NULL) + HError(8913, "LoadOneUtt: Fail to acquire next feature type label path"); + parmBuf = OpenBuffer(&pbufStack, labBuf, 0, UNDEFF, TRI_UNDEF, TRI_UNDEF); + if (!parmBuf) + HError(8910, "LoadOneUtt: Open feature type label data failed"); + if (uttElem->uttLen != ObsInBuffer(parmBuf)) + HError(8924, "LoadOneUtt: Inconsistent utterance lengths %s vs %s", feaBuf, labBuf); + dim = cache->labelInfo->dimFLab; + uttElem->flabMat = (float *) New(cache->cmem, len * dim * sizeof(float)); + dstPtr = uttElem->flabMat; + obs = cache->labelInfo->obsFLab; + for (i = 0; i < len; ++i) { + ReadAsTable(parmBuf, i, obs); + x = obs->fv[cache->streamIdx]; + for (j = 1; j <= dim; ++j, ++dstPtr) { + if (isnan(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has nan value", labBuf, i, j); + if (isinf(x[j])) + HError(8923, "LoadOneUtt: %s, frame no. %d, dim %d has inf value", labBuf, i, j); + *dstPtr = x[j]; + } + } + CloseBuffer(parmBuf); + } + /* process lab files */ + uttElem->labIdxes = NULL; + if ((cache->labelInfo->labelKind & LABLK) != 0) { /* load lab files */ + if (cache->labelInfo->labFileMask != NULL) { + if (!MaskMatch(cache->labelInfo->labFileMask, spkBuf, feaBuf)) { + HError(8919, "LoadOneUtt: Mask %s has no match with segment %s", cache->labelInfo->labFileMask, feaBuf); + } + MakeFN(spkBuf, cache->labelInfo->labDir, cache->labelInfo->labExt, labBuf); + } + else { + MakeFN(feaBuf, cache->labelInfo->labDir, cache->labelInfo->labExt, labBuf); + } + ResetHeap(&transStack); + trans = LOpen(&transStack, labBuf, UNDEFF); + /* convert trans to labIdxes */ + uttElem->labIdxes = (int *) New(cache->cmem, len * sizeof(int)); + i = 0; + for (llink = trans->head->head->succ; llink->succ != NULL; llink = llink->succ) { + /* cz277 - trans */ + lhmmId = hmmId; + lsIdx = sIdx; + + ExtractState(llink->labid->name, hmmBuf, &sIdx); /* support hmm state by hacking labid */ + if (sIdx == 0) { + hmmId = llink->labid; + /* cz277 - trans */ + isPhoneLab = TRUE; + } + else { + hmmId = GetLabId(hmmBuf, FALSE); + /* cz277 - trans */ + isPhoneLab = FALSE; + } + if (hmmId == NULL) { + HError(8925, "LoadOneUtt: Failed to find model for label \"%s\" given in the input MLF file", hmmBuf); + } + if ((macDef = FindMacroName(cache->hmmSet, 'l', hmmId)) == NULL) { + HError(8925, "LoadOneUtt: Unknown label %s", hmmId->name); + } + hlink = (HLink) macDef->structure; + if (sIdx == 0) { /* if it is a phone label */ + /* check whether all states of that hmm share the same ANN target */ + for (j = 3; j < hlink->numStates; ++j) { + if ((hlink->svec[2].info->pdf[cache->streamIdx].targetSrc != hlink->svec[j].info->pdf[cache->streamIdx].targetSrc) || + (hlink->svec[2].info->pdf[cache->streamIdx].targetIdx != hlink->svec[j].info->pdf[cache->streamIdx].targetIdx)) { + HError(8925, "LoadOneUtt: Phone label in the label file does not match the state level definition"); + } + } + sIdx = 2; + } + else if (sIdx <= 1 || sIdx >= hlink->numStates) { + HError(8925, "LoadOneUtt: Illegal state index in the label file"); + } + /* get the stream element pointer */ + streamElem = &hlink->svec[sIdx].info->pdf[cache->streamIdx]; + /* check the output layer source */ + if (streamElem->targetSrc != cache->hmmSet->annSet->outLayers[cache->streamIdx]) { + HError(8926, "LoadOneUtt: Only one output layer is allowed in one stream"); + } + /* get the frame indexes */ + GetBufferInfo(parmBuf, &pbInfo); + stIdx = (long) (llink->start / pbInfo.tgtSampRate + 0.5); + edIdx = (long) (llink->end / pbInfo.tgtSampRate + 0.5); + if (stIdx > edIdx) { + HError(8927, "LoadOneUtt: Empty segment"); + } + /* cz277 - trans */ + if ((cache->labelInfo->uFlags & UPTRANS) != 0) { + ta = (TrAcc *) GetHook(hlink->transP); + if (isPhoneLab) { + transcnt = (int) ((edIdx - stIdx) / (hlink->numStates - 2.0) + 0.5); + transcnt -= 1; + lsIdx = 1; + for (j = 2; j <= hlink->numStates; ++j) { + ta->occ[lsIdx] += 1; + ta->tran[lsIdx][j] += 1; + if (transcnt > 0) { + ta->occ[j] += transcnt; + ta->tran[j][j] += transcnt; + } + lsIdx = j; + } + } + else { + if (lhmmId != hmmId) { + lsIdx = 1; + } + ta->occ[lsIdx] += 1; + ta->tran[lsIdx][sIdx] += 1; + transcnt = edIdx - stIdx - 1; + ta->occ[sIdx] += transcnt; + if (transcnt > 0) { + ta->tran[sIdx][sIdx] += transcnt; + } + } + } + + if ((cache->labelInfo->uFlags & UPTARGETPEN) != 0) { + streamElem->occAcc += edIdx - stIdx; + } + for (curIdx = stIdx; curIdx < edIdx; ++curIdx, ++i) { + if (curIdx != i) { + HError(8927, "LoadOneUtt: Discontinuous Utterance"); + } + uttElem->labIdxes[i] = streamElem->targetIdx - 1; /* targetIdx >= 1, labIdxes >= 0 */ + } + } + if (i != uttElem->uttLen) { + HError(8924, "LoadOneUtt: %s Feature and Utterance lengths (%i, %i) do not match", uttElem->uttName, i, uttElem->uttLen); + } + } + /* process lattice files */ + if (((cache->labelInfo->labelKind & LATLK) != 0) && (cache->streamIdx == 1)) { /* load lattice files */ + /*CreateHeap(&uttElem->latStack, "latStore", MSTAK, 1, 1.0, 5000, 500000);*/ + uttElem->numInDen = NULL; + for (i = 0; i < MAXLATSUTT; ++i) { + uttElem->denLats[i] = NULL; + uttElem->numLats[i] = NULL; + } + /* set basic lattice file mask */ + if (cache->labelInfo->latFileMask != NULL) { + if (!MaskMatch(cache->labelInfo->latFileMask, latBuf, feaBuf)) { + HError(8928, "LoadOneUtt: Mask %s has no match with segment %s", cache->labelInfo->latFileMask, feaBuf); + } + } + else { + strcpy(latBuf, feaBuf); + } + /* load denorminator lattices */ + if (cache->labelInfo->nDenLats > 0) { + for (i = 0; i < cache->labelInfo->nDenLats; ++i) { + if (cache->labelInfo->denLatSubDirPat[0]) { + if (!MaskMatch(cache->labelInfo->denLatSubDirPat, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has not match with segment %s", cache->labelInfo->denLatSubDirPat, latBuf); + } + MakeFN(spkBuf, cache->labelInfo->denLatDir[i], NULL, pathBuf); + } + else { + strcpy(pathBuf, cache->labelInfo->denLatDir[i]); + } + if (cache->labelInfo->latMaskDen != NULL) { + if (!MaskMatch(cache->labelInfo->latMaskDen, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has not match with segment %s", cache->labelInfo->latMaskDen, latBuf); + } + MakeFN(spkBuf, pathBuf, NULL, fnBuf); + strcpy(pathBuf, fnBuf); + } + if (cache->labelInfo->useLLF) { + uttElem->denLats[i] = GetLattice(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + /*GetLatticeNoRet(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE, &uttElem->denLats[i]);*/ + } + else { + MakeFN(latBuf, pathBuf, cache->labelInfo->latExt, fnBuf); + filePtr = FOpen(fnBuf, NetFilter, &isPipe); + if (!filePtr) { + HError(8910, "LoadOneUtt: Could not open file %s", fnBuf); + } + /* printf("Reading lattice from file: %s\n", fnBuf); fflush(stdout); */ + uttElem->denLats[i] = ReadLattice(filePtr, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + /*uttElem->denLats[i] = ReadLattice(filePtr, &uttElem->latStack, cache->labelInfo->vocab, FALSE, TRUE);*/ + FClose(filePtr, isPipe); + } + } + } + /* load numerator lattices */ + if (cache->labelInfo->nNumLats > 0) { + uttElem->numInDen = (Boolean *) New(cache->cmem, cache->labelInfo->nNumLats * sizeof(Boolean)); + /*uttElem->numInDen = (Boolean *) New(&uttElem->latStack, cache->labelInfo->nNumLats * sizeof(Boolean));*/ + /*memset(uttElem->numInDen, 1, cache->labelInfo->nNumLats * sizeof(Boolean));*/ + for (i = 0; i < cache->labelInfo->nNumLats; ++i) { + if (cache->labelInfo->numLatSubDirPat[0]) { + if (!MaskMatch(cache->labelInfo->numLatSubDirPat, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has no match with segment %s", cache->labelInfo->numLatSubDirPat, latBuf); + } + MakeFN(spkBuf, cache->labelInfo->numLatDir[i], NULL, pathBuf); + } + else { + strcpy(pathBuf, cache->labelInfo->numLatDir[i]); + } + if (cache->labelInfo->latMaskNum != NULL) { + if (!MaskMatch(cache->labelInfo->latMaskNum, spkBuf, latBuf)) { + HError(8928, "LoadOneUtt: Mask %s has not match with segment %s", cache->labelInfo->latMaskNum, latBuf); + } + MakeFN(spkBuf, pathBuf, NULL, fnBuf); + strcpy(pathBuf, fnBuf); + } + if (cache->labelInfo->useLLF) { + uttElem->numLats[i] = GetLattice(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + /*GetLatticeNoRet(latBuf, pathBuf, cache->labelInfo->latExt, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE, &uttElem->numLats[i]);*/ + } + else { + MakeFN(latBuf, pathBuf, cache->labelInfo->latExt, fnBuf); + filePtr = FOpen(fnBuf, NetFilter, &isPipe); + if (!filePtr) { + HError(8910, "LoadOneUtt: Could not open file %s", fnBuf); + } + uttElem->numLats[i] = ReadLattice(filePtr, cache->cmem, cache->labelInfo->vocab, FALSE, TRUE); + FClose(filePtr, isPipe); + } + /* to include this num lattice as a den lattice or not */ + uttElem->numInDen[i] = TRUE; + if (cache->labelInfo->incNumInDen == TRUE) { + for (j = 0; j < cache->labelInfo->nDenLats; ++j) { + if (LatInLat(uttElem->numLats[i], uttElem->denLats[j])) { + uttElem->numInDen[i] = FALSE; + break; + } + } + } + else { + uttElem->numInDen[i] = FALSE; + } + } + } + } + } + + return SUCCESS; +} + +/* cz277 - mtload */ +/* fill the entire cache in one go */ +static int FillCacheSGT(DataCache *cache) { + int newUttCnt = 0; + + if (cache->revisit == TRUE && need2Unload == FALSE) { + return newUttCnt; + } + + /* load utterance by utterance until the cache is full */ + while (cache->nxtUttPos < cache->tUttNum && cache->frmNum < cache->cacheSamples) { + /* load the next utterance */ + if (LoadOneUtt(cache, cache->nxtUttPos++) < SUCCESS) { + HError(8913, "FillCacheSGT: Load next utterance failed"); + } + else { + ++newUttCnt; + } + } + return newUttCnt; +} + +/* cz277 - mtload */ +/*static void *FillCacheEXT(void *arg) { + int newUttCnt = 0; + DataCache *cache; + + cache = (DataCache *) arg; + if (cache->revisit == TRUE && need2Unload == FALSE) + pthread_exit(NULL); + + while (cache->nxtUttPos < cache->tUttNum && cache->frmNum < cache->cacheSamples) { + if (LoadOneUtt(cache, cache->nxtUttPos++) < SUCCESS) { + HError(8913, "FillCacheEXT: Load next utterance failed"); + } + else { + ++newUttCnt; + } + } + pthread_exit(NULL); +}*/ + +/* cz277 - mtload */ +void LoadCacheData(DataCache *cache) { + /*int ret; + + if (extThreadLoad == TRUE) { + cache->firstLoad = TRUE; + ret = pthread_create(&cache->extThread, NULL, FillCacheEXT, (void *) cache); + if (ret != 0) { + HError(8929, "LoadCacheData: Fail to create the extra thread for cache loading"); + } + } + else { + ret = FillCacheSGT(cache); + }*/ + FillCacheSGT(cache); + +} + +/* need to make ensure that all frames have been used */ +static void UnloadOneUtt(DataCache *cache, int dstPos) { + UttElem *uttElem; + int i; + + uttElem = &cache->uttElems[dstPos]; + /* check if all frames have been used */ + if (uttElem->frmUsed != uttElem->uttLen) + HError(8993, "UnloadOneUtt: all frames should be used once before unload"); + /* if has been unloaded, it has no need to unload */ + if (uttElem->frmMat == NULL) + return; + /* update the total number of frame cached */ + cache->frmNum -= uttElem->uttLen; + /* release the space for frame matrix */ + Dispose(cache->cmem, uttElem->frmMat); + /*free(uttElem->frmMat);*/ + uttElem->frmMat = NULL; + /* cz277 - aug */ + /* release the space for augmented feature vectors */ + for (i = 1; i <= MAXAUGFEAS; ++i) + if (uttElem->augFeaVec[i] != NULL) + Dispose(cache->cmem, uttElem->augFeaVec[i]); + /* release the space for utterance name */ + if (uttElem->uttName != NULL) + Dispose(cache->cmem, uttElem->uttName); + /* release the space for frame order array */ + if (uttElem->frmOrder != NULL) { + Dispose(cache->cmem, uttElem->frmOrder); + uttElem->frmOrder = NULL; + } + /* cz277 - 150811 */ + if (uttElem->curUttNMatRPLs != NULL) + Dispose(cache->cmem, uttElem->curUttNMatRPLs); + if (uttElem->curUttNVecRPLs != NULL) + Dispose(cache->cmem, uttElem->curUttNVecRPLs); + /* unload the label */ + if (cache->labelInfo != NULL) { + if ((cache->labelInfo->labelKind & FEALK) != 0) + Dispose(cache->cmem, uttElem->flabMat); + if ((cache->labelInfo->labelKind & LABLK) != 0) + Dispose(cache->cmem, uttElem->labIdxes); + /* dispose the xforms */ + /*if (uttElem->inXForm != NULL) { + Dispose(cache->cmem, uttElem->inXForm); + } + if (uttElem->paXForm != NULL) { + Dispose(cache->cmem, uttElem->paXForm); + }*/ + if ((cache->labelInfo->labelKind & LATLK) != 0) { + /* dispose the lattices */ + for (i = 0; i < cache->labelInfo->nNumLats; ++i) + FreeLattice(uttElem->numLats[i]); + for (i = 0; i < cache->labelInfo->nDenLats; ++i) + FreeLattice(uttElem->denLats[i]); + if (uttElem->numInDen != NULL) + Dispose(cache->cmem, uttElem->numInDen); + } + } +} + +static ReturnStatus UpdateUttOrder(DataCache *cache) { + /* if no newly loaded utterances to be indexed */ + if (cache->edUttPos == cache->nxtUttPos) { /* nxtUttPos stops at tUttNum */ + return FAIL; + } + /* update cache->stUttPos */ + cache->stUttPos = cache->edUttPos; + /* update cache->edUttPos */ + cache->edUttPos = cache->nxtUttPos; + + /* shuffle the indexes if needed */ + if (cache->visitKind == UTTFRMVK || cache->visitKind == UTTVK || cache->visitKind == PLUTTVK || cache->visitKind == PLUTTFRMVK) { + ShuffleSegment(cache->uttOrder, cache->stUttPos, cache->edUttPos, sizeof(int)); + } + + return SUCCESS; +} + +/* useful for FRMVK only */ +/* when usinf this, the rest frames in previous cache are assumed to + have been loaded into the mini batch, so no need to take care of + previous frames +*/ +static ReturnStatus UpdateFrmOrder(DataCache *cache) { + size_t i, j, k; + + /* first, make sure frame visit index is needed */ + if (cache->visitKind != FRMVK) { + return FAIL; + } + /* second, get the frame visit length */ + cache->fvLen = 0; + for (i = cache->stUttPos; i < cache->edUttPos; ++i) { + cache->fvLen += cache->uttElems[i].uttLen; + } + /* third, malloc the data */ + if (cache->frmOrder != NULL) { + Dispose(cache->cmem, cache->frmOrder); + } + cache->frmOrder = (FrmIndex *) New(cache->cmem, cache->fvLen * sizeof(FrmIndex)); + /* fourth, initialise frmVisit */ + for (i = cache->stUttPos, k = 0; i < cache->edUttPos; ++i) { + for (j = 0; j < cache->uttElems[i].uttLen; ++j, ++k) { + cache->frmOrder[k].uttIdx = i; + cache->frmOrder[k].frmIdx = j; + } + } + /* shuffle the frames in the entire index */ + ShuffleSegment(cache->frmOrder, 0, cache->fvLen, sizeof(FrmIndex)); + /* reset orderPtr */ + cache->orderPtr = 0; + + return SUCCESS; +} + +/* initialise the cache, is used only once */ +void InitCache(DataCache *cache) { + int i; + + /* init cache order */ + for (i = 0; i < cache->tUttNum; ++i) { + cache->uttOrder[i] = i; + } + /* cz277 - mtload */ + /* fill the buffer first */ + FillCacheSGT(cache); + /* initialise the uttOrder */ + UpdateUttOrder(cache); + /* init orderPtr */ + cache->orderPtr = 0; + /* initialise frmOrder (optional) and the pointers */ + switch (cache->visitKind) { + case FRMVK: + UpdateFrmOrder(cache); + break; + case NONEVK: + case UTTFRMVK: + case UTTVK: + cache->frmPtrs[0].uttIdx = cache->uttOrder[cache->orderPtr++]; + cache->frmPtrs[0].frmIdx = 0; + break; + case PLNONEVK: + case PLUTTFRMVK: + case PLUTTVK: + for (i = 0; i < cache->ptrNum; ++i) { + /* in case there are not enough utterances in the cache */ + if (cache->orderPtr < cache->edUttPos) { + cache->frmPtrs[i].uttIdx = cache->uttOrder[cache->orderPtr++]; + cache->frmPtrs[i].frmIdx = 0; + } + else { + cache->frmPtrs[i].uttIdx = -1; + cache->frmPtrs[i].frmIdx = -1; + } + } + break; + default: + HError(8991, "InitCache: Unknown visiting order"); + break; + } + /* cz277 - mtload */ + /*if (extThreadLoad == TRUE) { + memset(&cache->extThread, 0, sizeof(pthread_t)); + cache->firstLoad = FALSE; + }*/ +} + +/* only useful for visitKinds other than FRMVK */ +/* frmIdx == cache->uttElems[uttIdx].uttLen will never happen */ +/* if fail to acquire the next utterance, uttIdx == -1 */ +static inline void UpdateFrmPtr(DataCache *cache, FrmIndex *frmPtr) { + int uttIdx; + + /* set each frmPtr */ + uttIdx = frmPtr->uttIdx; + if (uttIdx >= 0 && (frmPtr->frmIdx + 1 < cache->uttElems[uttIdx].uttLen)) { /* get the next frame from the same utterance */ + ++frmPtr->frmIdx; + } + else { /* uttIdx < 0 || frmPtr->frmIdx + 1 == cache->uttElems[uttIdx].uttLen, need to load a new utterance */ + if (cache->orderPtr == cache->tUttNum) { /* no available utterance */ + frmPtr->uttIdx = -1; + frmPtr->frmIdx = -1; + } + else { + if (cache->orderPtr == cache->edUttPos) { /* need to rebuild the order */ + UpdateUttOrder(cache); + } + if (cache->orderPtr < cache->edUttPos) { /* if UpdateUttOrder() succeeded */ + frmPtr->uttIdx = cache->uttOrder[cache->orderPtr++]; + frmPtr->frmIdx = 0; + } + else { /* if no new utt in the cache, disable this frmPtr */ + frmPtr->uttIdx = -1; + frmPtr->frmIdx = -1; + } + } + } +} + + +/* cz277 - split */ +/* copy a frame with its context expansion to form a extended frame */ +static inline void CopyExtFrame2Batch(UttElem *uttElem, int curIdx, FELink feaElem, NFloat *dstPtr) { + int i, srcIdx; + float *srcPtr; +#ifdef DOUBLEANN + int j; +#endif + + /* do context expansion */ + for (i = 1; i <= feaElem->ctxMap[0]; ++i) { + /* cz277 - xform */ + /* no frame could exceed the boundary */ + /*srcIdx = curIdx + feaElem->ctxMap[i]; + if (srcIdx < 0) { + srcIdx = 0; + } + else if (srcIdx >= uttElem->uttLen) { + srcIdx = uttElem->uttLen - 1; + }*/ + srcIdx = ClipInt(0, uttElem->uttLen - 1, curIdx + feaElem->ctxMap[i]); + + /* compute the source address */ + srcPtr = uttElem->frmMat + srcIdx * feaElem->srcDim + feaElem->dimOff; +#ifdef DOUBLEANN + /* copy the frame vector */ + for (j = 0; j < feaElem->feaDim; ++j, ++srcPtr, ++dstPtr) { + /*if (isnan(*srcPtr)) + HError(9999, "CopyExtFrame2Batch: %s, frame no. %d, dim %d has NaN value", uttElem->uttName, curIdx, j); + if (isinf(*srcPtr)) + HError(9999, "CopyExtFrame2Batch: %s, frame no. %d, dim %d has inf value", uttElem->uttName, curIdx, j);*/ + *dstPtr = *srcPtr; + /* TODO: GPU support */ + } +#else + memcpy(dstPtr, srcPtr, feaElem->feaDim * sizeof(float)); + dstPtr += feaElem->feaDim; +#endif + } +} + + +/* fill the batch in the FRM series way */ +static inline Boolean FillBatchFRM(DataCache *cache, int nSamples) { + int i; + Boolean finish = FALSE; + + for (i = 0; i < nSamples; ++i) { + if (cache->orderPtr == cache->fvLen) { /* if need to update frmOrder */ + if (cache->edUttPos == cache->tUttNum) { /* if no more utterance available */ + break; + } + else { /* load more utterance and build new frmOrder */ + if (UpdateUttOrder(cache) == SUCCESS) + UpdateFrmOrder(cache); + else + break; /* will return FALSE, but cache->batLen < batchSamples */ + } + } + /* copy the frame */ + memcpy(&cache->frmBatch[cache->batLen++], &cache->frmOrder[cache->orderPtr++], sizeof(FrmIndex)); + /* update the pointers */ + } + /* if all data are finished */ + if (cache->edUttPos == cache->tUttNum && cache->orderPtr == cache->fvLen) { + finish = TRUE; + } + + return finish; +} + +/* fill the batch in the UTT series way */ +/* load a maximum *uttCnt + 1 utterances into the batch */ +static inline Boolean FillBatchUTT(DataCache *cache, int nSamples, int *uttCnt) { + int i, uttIdx, frmIdx; + UttElem *uttElem; + Boolean finish = FALSE; + + for (i = 0; i < nSamples; ++i) { + /* get current uttIdx and frmIdx */ + uttIdx = cache->frmPtrs[0].uttIdx; + frmIdx = cache->frmPtrs[0].frmIdx; + uttElem = &cache->uttElems[uttIdx]; + /* if need to get the true frame index */ + if (uttElem->frmOrder != NULL) { + frmIdx = uttElem->frmOrder[frmIdx]; + } + /* cz277 - semi */ + if (cache->frmPtrs[0].frmIdx == 0) { + cache->CMDVecPL[i] = 0; + } + else { + cache->CMDVecPL[i] = -1; + } + /* copy the frame */ + memcpy(&cache->frmBatch[cache->batLen++], &cache->frmPtrs[0], sizeof(FrmIndex)); + /* get the FrmIndex for the next frame */ + UpdateFrmPtr(cache, &cache->frmPtrs[0]); + /* indicate fail to acquire the next utterance or the end of the file */ + if (cache->frmPtrs[0].uttIdx < 0) { + --(*uttCnt); + if (cache->orderPtr == cache->tUttNum && frmIdx == uttElem->uttLen - 1) { /* frmIdx before UpdateFrmPtr() */ + finish = TRUE; + break; + } + else { + HError(8913, "FillBatchUTT: Fail to acquire the next frame"); + } + } + else if (cache->frmPtrs[0].uttIdx != uttIdx) { /* switch to a new utterance */ + if (*uttCnt > 0) { + --(*uttCnt); + } + if (*uttCnt == 0) { /* if underfill is allowed and the specified number of utterances have been loaded */ + break; + } + } + } + + return finish; +} + +/* fill the batch in the PLUTT series way */ +static inline Boolean FillBatchPLUTT(DataCache *cache, int nSamples) { + int i, uttIdx, frmIdx, sampCnt, off; + UttElem *uttElem; + Boolean finish = TRUE; + + /* update the (-1, -1) pointers and generate CMDVecPL */ + for (i = cache->batLen, off = 0; i < cache->ptrNum; ++i) { + /* try to update frmPtr[i] */ + while ((i + off < cache->ptrNum) && (cache->frmPtrs[i + off].uttIdx < 0)) { + /* try to assign a new utterance to previous empty frmPtr */ + UpdateFrmPtr(cache, &cache->frmPtrs[i + off]); + if (cache->frmPtrs[i + off].uttIdx < 0) + ++off; + else + break; + } + /* if need to shift frmPtrs */ + if (off > 0) { + if (i + off < cache->ptrNum) { /* cache->frmPtrs[i + off].uttIdx >= 0 */ + cache->frmPtrs[i] = cache->frmPtrs[i + off]; + cache->CMDVecPL[i] = i + off; + } + else { /* if no rest pointer has uttIdx > 0 */ + for (; i < cache->ptrNum; ++i) { + cache->frmPtrs[i].uttIdx = -1; + cache->frmPtrs[i].frmIdx = -1; + cache->CMDVecPL[i] = -1; /* do nothing */ + } + break; + } + } + else { /* off == 0 */ + if (cache->frmPtrs[i].frmIdx == 0) + cache->CMDVecPL[i] = 0; /* clean the context */ + else + cache->CMDVecPL[i] = -1; /* do nothing */ + } + } + /* copy to the batch */ + for (i = cache->batLen, sampCnt = 0; (i < cache->ptrNum) && (cache->frmPtrs[i].uttIdx >= 0); ++i, ++sampCnt) { + /* get current uttIdx and frmIdx */ + uttIdx = cache->frmPtrs[i].uttIdx; + frmIdx = cache->frmPtrs[i].frmIdx; + /* if there's available frame by this frmPtr */ + uttElem = &cache->uttElems[uttIdx]; + /* get the true frame index */ + if (uttElem->frmOrder != NULL) { + frmIdx = uttElem->frmOrder[frmIdx]; + } + /* copy the frame */ + memcpy(&cache->frmBatch[cache->batLen++], &cache->frmPtrs[i], sizeof(FrmIndex)); + /* get the FrmIndex for the next frame */ + UpdateFrmPtr(cache, &cache->frmPtrs[i]); + /* check if there's more frame in the utterance when no more utterance is available */ + if (finish && cache->frmPtrs[i].uttIdx >= 0) /* means need one more batch (uttIdx updated in UpdateFrmPtr())*/ + finish = FALSE; + if (sampCnt == nSamples) + break; + } + if (finish) { + for (; i < cache->ptrNum; ++i) { + if (cache->frmPtrs[i].uttIdx >= 0) { + finish = FALSE; + break; + } + } + } + + return finish; +} + +/* cz277 - mtload */ +/* update the cache status, release useless utterances and fill the cache */ +int UnloadCacheData(DataCache *cache) { + int i, rmvUttCnt = 0; + FrmIndex *frmPtr; + UttElem *uttElem; + + /* update the cache content */ + if (cache->batLen > 0) { + frmPtr = &cache->frmBatch[0]; + for (i = 0; need2Unload && i < cache->batLen; ++i, ++frmPtr) { + /* get the right UttElem */ + uttElem = &cache->uttElems[frmPtr->uttIdx]; + /* update the reference */ + ++uttElem->frmUsed; + /* to check if the space could be released */ + if (uttElem->frmUsed == uttElem->uttLen) { + /* could unload current utterance */ + UnloadOneUtt(cache, frmPtr->uttIdx); + ++ rmvUttCnt; + } + } + /* reset the batch length */ + cache->batLen = 0; + } + + return rmvUttCnt; +} + + +/* cz277 - split */ +/* fill the feature batch according to specified context map and frmBatch */ +/* return the number of frame in the batch */ +/*static inline int GetDataFromCacheOLD(DataCache *cache, FELink feaElem, int offset) { + int i, uttIdx, frmIdx, extDim; + NFloat *feaPtr; + UttElem *uttElem; + + feaPtr = feaBat + offset; + extDim = feaElem->extDim; + for (i = offset; i < cache->batLen; ++i, feaPtr += extDim) { + uttIdx = cache->frmBatch[i].uttIdx; + frmIdx = cache->frmBatch[i].frmIdx; + uttElem = &cache->uttElems[uttIdx]; + CopyExtFrame2Batch(uttElem, frmIdx, feaElem, feaPtr); + } + + return cache->batLen; +}*/ + +/* cz277 - many */ +static inline int GetDataFromCache(DataCache *cache, FELink feaElem, int offset) { + int i, j, n, uttIdx, frmIdx, extDim; + NFloat *feaPtr; + UttElem *uttElem; + + n = IntVecSize(feaElem->ctxPool); + /* set the pointers */ + extDim = feaElem->extDim; + /* fetch each extended frame */ + for (i = 1; i <= n; ++i) { + feaPtr = feaElem->feaMats[i]->matElems + offset; + for (j = offset; j < cache->batLen; ++j, feaPtr += extDim) { + uttIdx = cache->frmBatch[j].uttIdx; + frmIdx = cache->frmBatch[j].frmIdx + feaElem->ctxPool[i]; /* cz277 - many */ + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + /* make and copy the extended frame */ + CopyExtFrame2Batch(uttElem, frmIdx, feaElem, feaPtr); + } + } + + return cache->batLen; +} + + +/* cz277 - aug */ +/* TODO:? copy feature elements to the batch?? */ +/* fill the feature batch according to frmBatch */ +/*static inline int GetAugFeaFromCacheOLD(DataCache *cache, FELink feaElem, NFloat *feaBat) { + int i, j, uttIdx; + NFloat *feaPtr; + UttElem *uttElem; + + feaPtr = feaBat; + for (i = 0; i < cache->batLen; ++i) { + uttIdx = cache->frmBatch[i].uttIdx; + uttElem = &cache->uttElems[uttIdx]; + if (VectorSize(uttElem->augFeaVec[feaElem->augFeaIdx]) != feaElem->feaDim) { + HError(9999, "GetAugFeaFromCache: Augmented feature %d dimension does not match the feature element dimension", feaElem->augFeaIdx); + } + for (j = 1; j < feaElem->ctxMap[0]; ++j, feaPtr += feaElem->feaDim) { + memcpy(feaPtr, &uttElem->augFeaVec[feaElem->augFeaIdx][1], feaElem->feaDim * sizeof(float)); + } + } + + return cache->batLen; +}*/ + +/* cz277 - aug */ +/* cz277 - many */ +/* fill the feature batch according to frmBatch */ +static inline int GetAugFeaFromCache(DataCache *cache, FELink feaElem, int offset) { + int i, j, uttIdx; + NFloat *feaPtr; + UttElem *uttElem; + + feaPtr = feaElem->feaMats[1]->matElems + offset; + for (i = 0; i < cache->batLen; ++i) { + uttIdx = cache->frmBatch[i].uttIdx; + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + if (VectorSize(uttElem->augFeaVec[feaElem->augFeaIdx]) != feaElem->feaDim) { + HError(8922, "GetAugFeaFromCache: Augmented feature %d dim does't match the feature element dim", feaElem->augFeaIdx); + } + for (j = 1; j <= feaElem->ctxMap[0]; ++j, feaPtr += feaElem->feaDim) { + memcpy(feaPtr, &uttElem->augFeaVec[feaElem->augFeaIdx][1], feaElem->feaDim * sizeof(float)); + } + } + + return cache->batLen; +} + +/* fill the label batch according to frmBatch and labelKind */ +static inline void GetHardLabelFromCache(DataCache *cache, int tgtDim, NFloat *labBat, int offset) { + int i, uttIdx, frmIdx, tgtIdx; + NFloat *labPtr; + UttElem *uttElem; + + if ((cache->labelInfo->labelKind & LABLK) == 0) { + HError(8901, "GetHardLabelFromCache: Function does not support current label kind"); + } + + labPtr = labBat + offset; + for (i = offset; i < cache->batLen; ++i, labPtr += tgtDim) { + uttIdx = cache->frmBatch[i].uttIdx; + frmIdx = cache->frmBatch[i].frmIdx; + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + tgtIdx = uttElem->labIdxes[frmIdx]; + cache->labVec[i + 1] = tgtIdx; /* fill labVec */ + if (tgtIdx < 0 || tgtIdx >= tgtDim) + HError(8993, "GetHardLabelFromCache: Label index out of range"); + memset(labPtr, 0.0, tgtDim * sizeof(NFloat)); + labPtr[tgtIdx] = 1.0; + } +} + +/* fill the label batch according to frmBatch and labelKind */ +/* return the number of frame in the batch */ +static inline int GetFeatureLabelFromCache(DataCache *cache, int tgtDim, NFloat *labBat, int offset) { + int i, uttIdx, frmIdx; + NFloat *labPtr; + UttElem *uttElem; + float *flabPtr; +#ifdef DOUBLEANN + int j; +#endif + + if ((cache->labelInfo->labelKind & FEALK) == 0) { + HError(8901, "GetFeatureLabelFromCache: Function does not support current label kind"); + return -1; + } + if (cache->labelInfo->dimFLab != tgtDim) { + HError(8930, "GetFeatureLabelFromCache: Inconsistent dimensions between feature type label and output layer"); + return -1; + } + + labPtr = labBat + offset; + for (i = offset; i < cache->batLen; ++i, labPtr += tgtDim) { + uttIdx = cache->frmBatch[i].uttIdx; + frmIdx = cache->frmBatch[i].frmIdx; + /* get the right UttElem */ + uttElem = &cache->uttElems[uttIdx]; + flabPtr = &uttElem->flabMat[frmIdx * tgtDim]; +#ifdef DOUBLEANN + for (j = 0; j < tgtDim; ++j) + labPtr[j] = flabPtr[j]; +#else + memcpy(labPtr, flabPtr, tgtDim * sizeof(float)); +#endif + } + + return cache->batLen; +} + + +/* return the name of the utterance that the frame in frmPtrs[0] is associated with */ +char *GetCurUttName(DataCache *cache) { + if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK) { + return NULL; + } + return cache->uttElems[cache->frmPtrs[0].uttIdx].uttName; +} + +/* return the length of the utterance that the frame in frmPtrs[0] is associated with */ +int GetCurUttLen(DataCache *cache) { + if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK) { + return -1; + } + return cache->uttElems[cache->frmPtrs[0].uttIdx].uttLen; +} + +UttElem *GetCurUttElem(DataCache *cache) { + if (cache->visitKind != NONEVK && cache->visitKind != UTTFRMVK && cache->visitKind != UTTVK) { + HError(8901, "GetCurUttElem: Function only support utterance based visiting"); + } + if (cache->streamIdx != 1) { + HError(8992, "GetCurUttElem: Lattices can only be visited through the cache of 1st stream"); + } + + return &cache->uttElems[cache->frmPtrs[0].uttIdx]; +} + +/* get the inXForm and paXForm associated with current utterance */ +FBLatInfo *LoadXFormsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo) { + + fbInfo->inXForm = uttElem->inXForm; + fbInfo->paXForm = uttElem->paXForm; + return fbInfo; +} + +/* get the numerator lattices associated with current utterance */ +FBLatInfo *LoadNumLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo) { + int i; + + for (i = 0; (i < MAXLATSUTT) && (uttElem->numLats[i] != NULL); ++i) { + FBLatAddLattice(fbInfo, uttElem->numLats[i]); + } + return fbInfo; +} + +/* get the denorminator lattices associated with current utterance */ +FBLatInfo *LoadDenLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo) { + int i; + + for (i = 0; (i < MAXLATSUTT) && (uttElem->denLats[i] != NULL); ++i) { + FBLatAddLattice(fbInfo, uttElem->denLats[i]); + } + for (i = 0; (i < MAXLATSUTT) && (uttElem->numLats[i] != NULL); ++i) { + if (uttElem->numInDen[i]) { + FBLatAddLattice(fbInfo, uttElem->numLats[i]); + } + } + return fbInfo; +} + +/* fill all cache related batches as well as the label batch (if needed) */ +/* underfill is only useful for UTT series and PLUTT series VisitKind */ +/* for UTT, unfilled batch happens at the end of a utterance */ +/* for PLUTT, unfilled batch happens at the end of all data (insufficient utts for the frmPtrs) */ +/* return TRUE if no more data available; nSamples returns the number of samples loaded */ +Boolean FillAllInpBatch(DataCache *cache, int *nSamples, int *uttCnt) { + int i, nInp, tgtDim; + Boolean finish = FALSE; + FELink *inpElem; + NFloat *batPtr; +#ifdef CUDA + int j,n; +#endif + + /* init nSamples */ + *nSamples = 0; + nInp = cache->hmmSet->nInp[cache->streamIdx]; + inpElem = cache->hmmSet->inpElem[cache->streamIdx]; + tgtDim = cache->outLayer->nodeNum; + + /* cz277 - mtload */ + /*if (extThreadLoad == TRUE && cache->firstLoad == TRUE) + if (pthread_join(cache->extThread, NULL) != 0) + HError(8929, "FillAllInpBatch: Error when joining the extra thread for loading cache");*/ + + /* check whether need to release the data and reload again */ + /* update the cache status if needed */ + if (cache->batLen > 0) { + /* cz277 - mtload */ + UnloadCacheData(cache); + FillCacheSGT(cache); + + UpdateUttOrder(cache); + if (cache->visitKind == FRMVK) + UpdateFrmOrder(cache); + } + /* fill the internal batch */ + switch (cache->visitKind) { + case FRMVK: + finish = FillBatchFRM(cache, cache->batchSamples - (*nSamples)); + break; + case NONEVK: + case UTTFRMVK: + case UTTVK: + finish = FillBatchUTT(cache, cache->batchSamples - (*nSamples), uttCnt); + break; + case PLNONEVK: + case PLUTTFRMVK: + case PLUTTVK: + finish = FillBatchPLUTT(cache, cache->batchSamples - (*nSamples)); + break; + default: + HError(8991, "FillAllInpBatch: Unknown visiting order"); + } + /* fill each input batches */ + for (i = 0; i < nInp; ++i) { + if (inpElem[i]->inputKind == INPFEAIK) + GetDataFromCache(cache, inpElem[i], (*nSamples) * inpElem[i]->extDim); + else if (inpElem[i]->inputKind == AUGFEAIK) /* cz277 - aug */ + GetAugFeaFromCache(cache, inpElem[i], (*nSamples) * inpElem[i]->extDim); + else + HError(8992, "FillAllInpBatch: Can only have INPFEAIK and AUGFEAIK from host memory"); +#ifdef CUDA + n = IntVecSize(inpElem[i]->ctxPool); + for (j = 1; j <= n; ++j) /* cz277 - many */ + SyncNMatrixHost2Dev(inpElem[i]->feaMats[j]); +#endif + } + /* fill the label batch if needed */ + if (cache->labMat != NULL) { + batPtr = cache->labMat->matElems + (*nSamples) * tgtDim; + if (cache->labelInfo->labelKind & FEALK) + GetFeatureLabelFromCache(cache, tgtDim, batPtr, 0); + else if (cache->labelInfo->labelKind & LABLK) + GetHardLabelFromCache(cache, tgtDim, batPtr, 0); + else + HError(8992, "FillAllInpBatch: Label kind does not support cache label matrix"); +#ifdef CUDA + SyncNMatrixHost2Dev(cache->labMat); +#endif + } + /* update nSamples */ + *nSamples += cache->batLen; + /* only applicable to UTT and PLUTT series */ + if (*uttCnt == 0) + *uttCnt = -1; + + return finish; +} + +/* update the log prior list */ +void UpdateTargetLogPrior(DataCache *cache, float offset) { + /*HMMSet *hset;*/ + MLink m, mret; + HLink hmm; + StreamElem *streamElem; + int h, s; + double tOcc = 0.0; + + /*if (!cache->labelInfo->countOcc) {*/ + if ((cache->labelInfo->uFlags & UPTARGETPEN) == 0) { + return; + } + + /*hset = (HMMSet *) cache->hmmSet;*/ + /* first, check each state */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = cache->hmmSet->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (s = 2; s < hmm->numStates; ++s) { + streamElem = &hmm->svec[s].info->pdf[cache->streamIdx]; + if (streamElem->occAcc <= 0.0) { + mret = FindMacroStruct(cache->hmmSet, 's', hmm->svec[s].info); + if (mret == NULL) + HError(-8931, "UpdateTargetPen: HMM State %s[%d] has no training samples", m->id->name, s); + else + HError(-8931, "UpdateTargetPen: HMM State %s has no training samples", mret->id->name); + } + } + } + } + } + /* then accumulate the total occupancies */ + tOcc = 0.0; + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = cache->hmmSet->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (s = 2; s < hmm->numStates; ++s) { + streamElem = &hmm->svec[s].info->pdf[cache->streamIdx]; + if (streamElem->occAcc > 0.0) { + tOcc += streamElem->occAcc; + streamElem->targetPen = streamElem->occAcc; + streamElem->occAcc = -1.0; + } + } + } + } + } + /* at last, compute log(P(s)) + offset and clear occAcc counters */ + for (h = 0; h < MACHASHSIZE; ++h) { + for (m = cache->hmmSet->mtab[h]; m != NULL; m = m->next) { + if (m->type == 'h') { + hmm = (HLink) m->structure; + for (s = 2; s < hmm->numStates; ++s) { + streamElem = &hmm->svec[s].info->pdf[cache->streamIdx]; + if (streamElem->occAcc < 0.0) { + streamElem->occAcc = streamElem->targetPen; + streamElem->targetPen = (float) ((-1.0) * log(streamElem->targetPen / tOcc) + offset); + } + } + } + } + } +} + + + diff --git a/HTKLib/HNCache.h b/HTKLib/HNCache.h new file mode 100755 index 0000000..50bcab3 --- /dev/null +++ b/HTKLib/HNCache.h @@ -0,0 +1,221 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNCache.h ANN model data cache */ +/* ----------------------------------------------------------- */ + +/* !HVER!HNCache: 3.5.0 [CUED 12/10/15] */ + +#ifndef _HNCACHE_H_ +#define _HNCACHE_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "HMem.h" +#include "HParm.h" +#include + +/* ------------------------- Trace Flags ------------------------- */ + +/* + The following types define the in-memory representation of a ANN +*/ + +/* ------------------------- Predefined Types ------------------------- */ + +#define MAXLATSUTT 1 +#define MAXAUGFEAS 5 + +/* ------------------------- ANN Definition ------------------------- */ + + +/* FRMVK (DataCache.frmOrder): DataCache.frmOrder != NULL, DataCache.frmPtr.frmOrderPtr, UttElem.frmOrder == NULL */ +/* NONEVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +/* PLNONEVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.ptrNum * DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +/* PLUTTVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.ptrNum * DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +/* PLUTTFRMVK (DataCache.uttOrder & UttElem.frmOrder): DataCache.frmOrder == NULL, DataCache.ptrNum * DataCache.uttOrderPtr, UttElem.frmOrder != NULL */ +/* UTTFRMVK (DataCache.uttOrder & UttElem.frmOrder): DataCache.frmOrder == NULL, DataCache.uttOrderPtr, UttElem.frmOrder != NULL */ +/* UTTVK (DataCache.uttOrder): DataCache.frmOrder == NULL, DataCache.uttOrderPtr, UttElem.frmOrder == NULL */ +enum _VisitKind {FRMVK, NONEVK, PLNONEVK, PLUTTVK, PLUTTFRMVK, UTTFRMVK, UTTVK}; +typedef enum _VisitKind VisitKind; + +enum _ShuffKind {KNUTHFSK, KNUTHRSK, QUICKNETSK}; +typedef enum _ShuffKind ShuffKind; + +enum _LabelKind {NULLLK = 0, FEALK = 1, LABLK = 2, LATLK = 4}; +typedef enum _LabelKind LabelKind; + +typedef struct _UttElem { + char *uttName; /* the name of the utterance, could be NULL (by saveUttName) */ + int uttLen; /* the length (frame number) of this utterance */ + int frmUsed; /* the number of frames processed */ + float *frmMat; /* the frame matrix; could be NULL if utterance not loaded */ + float *flabMat; /* cz277 - FEALAB */ + Vector augFeaVec[MAXAUGFEAS + 1]; /* specify the maximum number of augmented feature vectors */ + int *frmOrder; /* the frame visiting order within the utterance */ + int *labIdxes; /* the vector with the indexes for all frames, could be NULL */ + Lattice *denLats[MAXLATSUTT]; + Lattice *numLats[MAXLATSUTT]; + Boolean *numInDen; + AdaptXForm *inXForm; + AdaptXForm *paXForm; + /* cz277 - xform */ + NMatBundle **curUttNMatRPLs; + NVecBundle **curUttNVecRPLs; +} UttElem; + +typedef struct _FrmIndex { + int uttIdx; /* the index of the relevant utterance in the array */ + int frmIdx; /* the index of current frame vector in the relevant utterance */ +} FrmIndex; + +typedef struct _LabelInfo { + LabelKind labelKind; /* the kind of the label */ + char *labFileMask; /* mast for reading labels */ + char *labDir; /* label file directory */ + char *labExt; /* label file extension */ + /*Boolean countOcc;*/ /* whether count state occupancies or not */ + char *latFileMask; /* lattice file mask, could be NULL */ + char *latMaskNum; /* numerator lattice file mask, could be NULL */ + char **numLatDir; /* numerator lattice directories */ + int nNumLats; /* number of numerator lattice directories */ + char *numLatSubDirPat; /* sub directory for numerator lattices */ + char *latMaskDen; /* denominator lattice file mask, could be NULL */ + char **denLatDir; /* denorminatory lattice directories */ + int nDenLats; /* number of denominator lattice directories */ + char *denLatSubDirPat; /* sub directory for denominator lattices */ + char *latExt; /* lattice extension */ + FILE *scpFLab; + int dimFLab; /* cz277 - FEALAB */ + /*ParmBuf pbufFLab;*/ /* cz277 - FEALAB */ + Observation *obsFLab; /* cz277 - FEALAB */ + Boolean incNumInDen; + Boolean useLLF; /* whether use LLF or not */ + Vocab *vocab; /* word list or directory pointer (Vocab *) */ + UPDSet uFlags; +} LabelInfo; + +typedef struct _DataCache { + /* basic elements */ + MemHeap *cmem; /* the memory heap for this data cache */ + Boolean revisit; /* whether the cache has been revisit or not */ + size_t cacheSamples; /* the approx number of samples stored in this cache */ + int frmDim; /* the frame dimension */ + int tUttNum; /* the total number of utterances */ + /* storage structure */ + int nxtUttPos; /* the position of the next unloaded utterance */ + UttElem *uttElems; /* the utterance information list */ + /* visit order kind */ + VisitKind visitKind; /* the identifier for the random visiting method */ + /* utterance level visiting order */ + int stUttPos; /* the start position of the utterance visiting index */ + int edUttPos; /* the end position of the utterance visiting index */ + int *uttOrder; /* the indicator for the visiting order */ + /* frame level visiting order */ + size_t frmNum; /* the number of frames in cache */ + size_t tFrmNum; /* the total number of frames */ + size_t fvLen; /* the actual length of frmVisit */ + FrmIndex *frmOrder; /* the indicator for the frame visiting order for FRMVK only */ + /* visiting pointers */ + size_t orderPtr; /* could point to the next element in either uttOrder or frmOrder */ + int ptrNum; /* the number of pointers in cache.frmPtr */ + FrmIndex *frmPtrs; /* NULL if FRMVK */ + /* label structure */ + LabelInfo *labelInfo; /* the pointer to the label information, NULL if no label is available */ + /* structure for internal batch (without context expansion) */ + int batLen; /* the number of frames in the batch (frmBatch) */ + FrmIndex *frmBatch; /* the internal batch of frmIndex */ + int *CMDVecPL; /* the list for PL* visiting order, [..., -2]: do nothing; -1: clear; [0, batchSize): move to */ + /* auxiliary elements */ + FILE *scpFile; /* the handler of the associated file */ + HMMSet *hmmSet; /* the hmmset associated to this cache (HMMSet *) */ + /*ParmBuf parmBuf;*/ /* the parm buf */ + Observation *obs; /* the auxiliary structure for loading frame into cache */ + int streamIdx; /* the stream index of the input feature */ + LELink outLayer; /* the link to the out layer associated with this cache */ + NMatrix *labMat; /* the label matrix associated with this data cache */ + IntVec labVec; /* the vector contains the index of the reference targets */ + Boolean saveUttName; /* whether saves each utterance name or not */ + int batchSamples; /* the mini-batch size associated with this cache */ + XFInfo *xfInfo; + pthread_t extThread; /* cz277 - mtload */ + Boolean firstLoad; /* cz277 - mtload */ +} DataCache; + +/* ------------------------ Global Settings ------------------------- */ + +int GetNMKLThreads(void); +size_t GetDefaultNCacheSamples(void); +VisitKind GetDefaultVisitKind(void); +void SetEpochIndex(int curEpochIdx); +void AccAllCacheSamples(size_t curCacheSamp); +void SetNeed2UnloadFlag(void); + +void InitNCache(void); +DataCache *CreateCache(MemHeap *heap, FILE *scpFile, int scpCnt, HMMSet *hset, Observation *obs, int streamIdx, size_t cacheSamples, VisitKind visitKind, XFInfo *xfInfo, LabelInfo *labelInfo, Boolean saveUttName); +void InitCache(DataCache *cache); +Boolean FillAllInpBatch(DataCache *cache, int *nSamples, int *uttCnt); +/* cz277 - mtload */ +void UpdateCacheStatus(DataCache *cache); +void LoadCacheData(DataCache *cache); +int UnloadCacheData(DataCache *cache); + +char *GetCurUttName(DataCache *cache); +int GetCurUttLen(DataCache *cache); +UttElem *GetCurUttElem(DataCache *cache); +FBLatInfo *LoadXFormsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo); +FBLatInfo *LoadNumLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo); +FBLatInfo *LoadDenLatsFromUttElem(UttElem *uttElem, FBLatInfo *fbInfo); +void UpdateTargetLogPrior(DataCache *cache, float offset); + +void ResetCache(DataCache *cache); +void FreeCache(DataCache *cache); +void ResetCacheHMMSetCfg(DataCache *cache, HMMSet *hset); + +char *MakeNameNMatRPL(char *curSpkr, char *tgtMacro, char *RPLName); +char *MakeNameNVecRPL(char *curSpkr, char *tgtMacro, char *RPLName); +void SaveAllNMatRPLs(HMMSet *hset, FILE *script); +void SaveAllNVecRPLs(HMMSet *hset, FILE *script); +void InstallOneUttNMatRPLs(UttElem *uttElem); +void InstallOneUttNVecRPLs(UttElem *uttElem); +void ResetNMatRPL(void); +void ResetNVecRPL(void); + + +#ifdef __cplusplus +} +#endif + +#endif /* _HNCACHE_H_ */ + +/* ------------------------- End of HNCache.h ------------------------- */ diff --git a/HTKLib/HNet.c b/HTKLib/HNet.c old mode 100644 new mode 100755 index 04f344f..c8f5491 --- a/HTKLib/HNet.c +++ b/HTKLib/HNet.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HNet.c Network and Lattice Functions */ +/* File: HNet.c Network and lattice functions */ /* ----------------------------------------------------------- */ -char *hnet_version = "!HVER!HNet: 3.4.1 [CUED 12/03/09]"; -char *hnet_vc_id = "$Id: HNet.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hnet_version = "!HVER!HNet: 3.5.0 [CUED 12/10/15]"; +char *hnet_vc_id = "$Id: HNet.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -42,6 +45,7 @@ char *hnet_vc_id = "$Id: HNet.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -58,6 +62,9 @@ static int trace=0; static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; +/* cz277 - ANN */ +static MemHeap netstak; + /* --------------------------- Global Flags -------------------------- */ Boolean forceCxtExp=FALSE; @@ -108,6 +115,10 @@ char *subLatEnd="!)_SUBLAT",subLatEndBuf[MAXSTRLEN]; Set these strings as the start and end sublattice markers */ +/* sxz20: for logical label*/ +/* if TRUE, logical hmm name will be used in phone-marked lattices*/ +static Boolean markLogHmm = FALSE; + /* --------------------------- Initialisation ---------------------- */ /* EXPORT->InitNet: register module & set configuration parameters */ @@ -134,7 +145,12 @@ void InitNet(void) if (GetConfBool(cParm,nParm,"REMDUPPRON",&b)) remDupPron = b; if (GetConfBool(cParm,nParm,"MARKSUBLAT",&b)) sublatmarkers = b; if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; + + /* sxz20: config this in lib/settings/scoremark.cfg, HNET:MARKLOGHMM=T */ + if (GetConfBool(cParm,nParm,"MARKLOGHMM",&b)) markLogHmm = b; } + /* cz277 - ANN */ + CreateHeap(&netstak, "HNet Stack", MSTAK, 1, 0.0, 100000, ULONG_MAX); } /* ------------------------ Lattice Creation ------------------------- */ @@ -297,12 +313,63 @@ Lattice *NewILattice(MemHeap *heap,int nn,int na,Lattice *info) return(lat); } +/* cz277 - ANN */ /* EXPORT->FreeLattice: free memory used by a lattice structure */ -void FreeLattice(Lattice *lat) +/*void FreeLattice(Lattice *lat) { Dispose(lat->heap,lat); +}*/ +void FreeLattice(Lattice *lat) { + int i; + LArc *la; + LNode *ln; + + /* dispose the lattice arcs */ + for (i = 0, la = lat->larcs; i < lat->na; ++i, la = NextLArc(lat, la)) { + if (la->nAlign != 0) { + Dispose(lat->heap, la->lAlign); + } + } + Dispose(lat->heap, lat->larcs); + /* dispose the lattice nodes */ + for (i = 0, ln = lat->lnodes; i < lat->nn; ++i, ++ln) { + if (ln->tag != NULL) { + Dispose(lat->heap, ln->tag); + } + if (ln->sublat != NULL) { + FreeLattice(ln->sublat->lat); + /* TODO: to process sublat->chain ?? */ + /* TODO: to process sublat->next ?? */ + } + } + /* dispose subList & refList */ + if (lat->subList != NULL) { + /* TODO: to process lat->subList ?? */ + } + if (lat->refList != NULL) { + /* TODO: to process lat->refList ?? */ + } + + /* dispose the char *s */ + if (lat->net != NULL) + Dispose(lat->heap, lat->net); + if (lat->hmms != NULL) + Dispose(lat->heap, lat->hmms); + if (lat->vocab != NULL) + Dispose(lat->heap, lat->vocab); + if (lat->utterance != NULL) + Dispose(lat->heap, lat->utterance); + + /* TODO: to process lat->chain ?? */ + if (lat->chain != NULL) { + FreeLattice(lat->chain); + } + + /* dispose the lattice itself */ + Dispose(lat->heap, lat); } + /* ------------------------ Lattice Output ------------------------- */ #define SUBLATHASHSIZE 101 @@ -311,7 +378,7 @@ void FreeLattice(Lattice *lat) /* add (if not found) or check (if found) the new subLat definition. */ static Lattice *GetSubLat(LabId subLatId,Lattice *subLat) { - int h; + unsigned long int h; Lattice *cur,*nxt; static Lattice **subLatHashTab = NULL; @@ -330,7 +397,7 @@ static Lattice *GetSubLat(LabId subLatId,Lattice *subLat) subLatHashTab=NULL; return(NULL); } - h=(((unsigned) subLatId)%SUBLATHASHSIZE); + h=(((unsigned long int) subLatId)%SUBLATHASHSIZE); for (cur=subLatHashTab[h];cur!=NULL;cur=cur->chain) if (cur->subLatId==subLatId) break; if (subLat!=NULL) { @@ -475,8 +542,9 @@ static int QSCmpArcs(const void *v1,const void *v2) else return(j); } +/* cz277 - scale conf score */ /* OutputIntField: output integer as text or binary */ -static void OutputIntField(char field,int val,Boolean bin, + void OutputIntField(char field,int val,Boolean bin, char *form,FILE *file) { fprintf(file,"%c%c",field,bin?'~':'='); @@ -487,8 +555,9 @@ static void OutputIntField(char field,int val,Boolean bin, fprintf(file," "); } +/* cz277 - scale conf score */ /* OutputFloatField: output float as text or binary */ -static void OutputFloatField(char field,float val,Boolean bin, +void OutputFloatField(char field,float val,Boolean bin, char *form,FILE *file) { fprintf(file,"%c%c",field,bin?'~':'='); @@ -534,8 +603,8 @@ ReturnStatus WriteOneLattice(Lattice *lat,FILE *file,LatFormat format) LArc *la; /* Rather than return an error assume labels on nodes !! */ - order=(int *) New(&gstack, sizeof(int)*(lat->nnna ? lat->na+1 : lat->nn+1)); - rorder=(int *) New(&gstack, sizeof(int)*lat->nn); + order=(int *) New(&netstak, sizeof(int)*(lat->nnna ? lat->na+1 : lat->nn+1)); + rorder=(int *) New(&netstak, sizeof(int)*lat->nn); if (lat->subLatId) fprintf(file,"SUBLAT=%s\n",lat->subLatId->name); @@ -622,7 +691,7 @@ ReturnStatus WriteOneLattice(Lattice *lat,FILE *file,LatFormat format) if (lat->subLatId) fprintf(file,".\n\n"); - Dispose(&gstack,order); + Dispose(&netstak,order); slat=NULL; return(SUCCESS); } @@ -875,353 +944,357 @@ static int ReadAlign(Lattice *lat,LArc *la,char *buf) } /* ReadOneLattice: Read (one level) of lattice from file */ -Lattice *ReadOneLattice(Source *src, MemHeap *heap, Vocab *voc, - Boolean shortArc, Boolean add2Dict) -{ - int i,s,e,n,v=0,nn,na; - Lattice *lat; - LNode *ln; - LArc *la; - Word wordId; - double time,aclike,lmlike; - double prlike; - char nbuf[132],vbuf[132],*ptr,ntype,del; +Lattice *ReadOneLattice(Source *src, MemHeap *heap, Vocab *voc, Boolean shortArc, Boolean add2Dict) +{ + int i, s, e, n, v = 0, nn, na; + Lattice *lat; + LNode *ln; + LArc *la; + Word wordId; + double time, aclike, lmlike; + double prlike; + char nbuf[132], vbuf[132], *ptr, ntype, del; #define DBUFLEN 4096 - char dbuf[DBUFLEN]; - double lmscl=1.0, lmpen=0.0, acscl=1.0, prscl=1.0; - float logbase = 1.0, tscale = 1.0; - - char *uttstr,*lmnstr,*vocstr,*hmmstr,*sublatstr,*tag; - SubLatDef *subLatId = NULL; - - lat = (Lattice *) New(heap,sizeof(Lattice)); - lat->heap=heap; lat->subLatId=NULL; lat->chain=NULL; - lat->voc=voc; lat->refList=NULL; lat->subList=NULL; - - /* Initialise default header values */ - nn=0;na=0; uttstr=lmnstr=vocstr=hmmstr=sublatstr=NULL; - /* Process lattice header */ - while((ptr=GetNextFieldName(nbuf,&del,src))) { - if (nbuf[0]=='\n') { - if (na != 0 && nn != 0) break; - } - else if (strlen(ptr)==1) { - ntype=*ptr; - switch(ntype) { - case 'N': - nn=GetIntField('N',del,vbuf,src); - break; - case 'L': - na=GetIntField('L',del,vbuf,src); + char dbuf[DBUFLEN]; + double lmscl = 1.0, lmpen = 0.0, acscl = 1.0, prscl = 1.0; + float logbase = 1.0, tscale = 1.0; + + char *uttstr, *lmnstr, *vocstr, *hmmstr, *sublatstr, *tag; + SubLatDef *subLatId = NULL; + + lat = (Lattice *) New(heap,sizeof(Lattice)); + lat->heap = heap; lat->subLatId = NULL; lat->chain = NULL; + lat->voc = voc; lat->refList = NULL; lat->subList = NULL; + + /* Initialise default header values */ + nn = 0;na = 0; uttstr = lmnstr = vocstr = hmmstr = sublatstr = NULL; + /* Process lattice header */ + while ((ptr = GetNextFieldName(nbuf, &del, src))) { + if (nbuf[0] == '\n') { + if (na != 0 && nn != 0) + break; + } + else if (strlen(ptr) == 1) { + ntype = *ptr; + switch(ntype) { + case 'N': + nn = GetIntField('N', del, vbuf, src); + break; + case 'L': + na = GetIntField('L', del, vbuf, src); + break; + default: + GetFieldValue(0, src, 0); + break; + } + } + else { + if (!strcmp(ptr, "UTTERANCE")) + GetFieldValue(vbuf, src, 0), uttstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "SUBLAT")) + GetFieldValue(vbuf, src, 0), sublatstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "vocab")) + GetFieldValue(vbuf, src, 0), vocstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "hmms")) + GetFieldValue(vbuf, src, 0), hmmstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "lmname")) + GetFieldValue(vbuf, src, 0), lmnstr = CopyString(heap, vbuf); + else if (!strcmp(ptr, "wdpenalty")) + lmpen = GetFltField('p', del, vbuf, src); + else if (!strcmp(ptr, "lmscale")) + lmscl = GetFltField('s', del, vbuf, src); + else if (!strcmp(ptr, "prscale")) + prscl = GetFltField('s', del, vbuf, src); + else if (!strcmp(ptr, "acscale")) + acscl = GetFltField('a', del, vbuf, src); + else if (!strcmp(ptr, "base")) + logbase = GetFltField('b', del, vbuf, src); + else if (!strcmp(ptr, "tscale")) + tscale = GetFltField('t', del, vbuf, src); + else + GetFieldValue(NULL, src, 0); + } + } + + if (ptr == NULL) { + /* generic memory clearing routine */ + Dispose(heap, lat); + HRError(8250, "ReadLattice: Premature end of lattice file before header"); + return (NULL); + } + + /* Initialise lattice based on header information */ + lat->nn = nn; + lat->na = na; + lat->utterance = uttstr; lat->vocab = vocstr; lat->hmms = hmmstr; + lat->net = lmnstr; lat->lmscale = lmscl; lat->wdpenalty = lmpen; + lat->acscale = acscl; + lat->logbase = logbase; + lat->tscale = tscale; + lat->framedur = 0; + lat->prscale = prscl; + + if (logbase < 0.0) + HError (8251, "ReadLattice: Illegal log base in lattice"); + + /* Set format to indicate type and default word label position */ + lat->format = (shortArc ? HLAT_SHARC | HLAT_ALABS : HLAT_ALABS); + + /* Presence of SUBLAT=id string indicates more to come */ + lat->subList = NULL; lat->chain = NULL; + if (sublatstr != NULL) + lat->subLatId = GetLabId(sublatstr, TRUE); + else + lat->subLatId = NULL; + + /* Allocate and initiailise nodes/arcs */ + lat->lnodes = (LNode *) New(heap, sizeof(LNode) * nn); + if (shortArc) + lat->larcs = (LArc *) New(heap, sizeof(LArc_S) * na); + else + lat->larcs = (LArc *) New(heap, sizeof(LArc) * na); + + for (i = 0, ln = lat->lnodes; i < nn; i++, ln++) { + ln->hook = NULL; + ln->pred = NULL; + ln->foll = NULL; + ln->score = 0.0; + } + for (i = 0, la = lat->larcs; i < na; i++, la = NextLArc(lat,la)) { + la->lmlike = 0.0; + la->start = la->end = NNODE; + la->farc = la->parc = NARC; + } + if (!shortArc) { + for(i = 0, la = lat->larcs; i < na; i++, la = NextLArc(lat, la)) { + la->aclike = la->prlike = la->score = 0.0; + la->nAlign = 0; + la->lAlign = NULL; + } + } + + do { + if ((ptr = GetNextFieldName(nbuf, &del, src)) == NULL) break; - default: - GetFieldValue(0,src,0); + /* Recognised line types have only one character names */ + if (strlen(ptr) == 1) + ntype=*ptr; + else + ntype = 0; + if (ntype == '.') { + ptr = NULL; break; - } - } - else { - if (!strcmp(ptr,"UTTERANCE")) - GetFieldValue(vbuf,src,0),uttstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"SUBLAT")) - GetFieldValue(vbuf,src,0),sublatstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"vocab")) - GetFieldValue(vbuf,src,0),vocstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"hmms")) - GetFieldValue(vbuf,src,0),hmmstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"lmname")) - GetFieldValue(vbuf,src,0),lmnstr=CopyString(heap,vbuf); - else if (!strcmp(ptr,"wdpenalty")) - lmpen=GetFltField('p',del,vbuf,src); - else if (!strcmp(ptr,"lmscale")) - lmscl=GetFltField('s',del,vbuf,src); - else if (!strcmp(ptr,"prscale")) - prscl=GetFltField('s',del,vbuf,src); - else if (!strcmp(ptr,"acscale")) - acscl=GetFltField('a',del,vbuf,src); - else if (!strcmp(ptr,"base")) - logbase=GetFltField('b',del,vbuf,src); - else if (!strcmp(ptr,"tscale")) - tscale=GetFltField('t',del,vbuf,src); - else - GetFieldValue(NULL,src,0); - } - } - - if(ptr == NULL){ - /* generic memory clearing routine */ - Dispose(heap, lat); - HRError(8250,"ReadLattice: Premature end of lattice file before header"); - return(NULL); - } - - /* Initialise lattice based on header information */ - lat->nn=nn; - lat->na=na; - lat->utterance=uttstr;lat->vocab=vocstr;lat->hmms=hmmstr; - lat->net=lmnstr;lat->lmscale=lmscl;lat->wdpenalty=lmpen; - lat->acscale = acscl; - lat->logbase = logbase; - lat->tscale = tscale; - lat->framedur=0; - lat->prscale=prscl; - - if (logbase < 0.0) - HError (8251, "ReadLattice: Illegal log base in lattice"); - - /* Set format to indicate type and default word label position */ - lat->format=(shortArc?HLAT_SHARC|HLAT_ALABS:HLAT_ALABS); - - /* Presence of SUBLAT=id string indicates more to come */ - lat->subList=NULL; lat->chain=NULL; - if (sublatstr!=NULL) lat->subLatId = GetLabId(sublatstr,TRUE); - else lat->subLatId = NULL; - - /* Allocate and initiailise nodes/arcs */ - lat->lnodes=(LNode *) New(heap, sizeof(LNode)*nn); - if (shortArc) - lat->larcs=(LArc *) New(heap, sizeof(LArc_S)*na); - else - lat->larcs=(LArc *) New(heap, sizeof(LArc)*na); - - for(i=0, ln=lat->lnodes; ihook=NULL; - ln->pred=NULL; - ln->foll=NULL; - ln->score=0.0; - } - for(i=0, la=lat->larcs; ilmlike=0.0; - la->start=la->end=NNODE; - la->farc=la->parc=NARC; - } - if (!shortArc) - for(i=0, la=lat->larcs; iaclike=la->prlike=la->score=0.0; - la->nAlign=0; - la->lAlign=NULL; - } - - do { - if ((ptr=GetNextFieldName(nbuf,&del,src)) == NULL) - break; - /* Recognised line types have only one character names */ - if (strlen(ptr)==1) - ntype=*ptr; - else - ntype=0; - if (ntype == '.') { - ptr = NULL; - break; - } - switch(ntype) { - case '\n': break; - case 'I': - n=GetIntField('I',del,vbuf,src); - if (n < 0 || n >= lat->nn){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain node %d",n); - return(NULL); - } - ln=lat->lnodes+n; - if (ln->hook!=NULL){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Duplicate info info for node %d",n); - return(NULL); - } - time=0.0;wordId=voc->nullWord;tag=NULL;v=-1; - while((ptr=GetNextFieldName(nbuf,&del,src)) != NULL) { - if (nbuf[0]=='\n') break; - else { - if (strlen(ptr)>=1) - ntype=*ptr; - else - ntype=0; - switch(ntype) { - case 't': - time=GetFltField('t',del,vbuf,src); - time *= tscale; - lat->format |= HLAT_TIMES; - break; - case 'W': - GetFieldValue(vbuf,src,0); - wordId=GetWord(voc,GetLabId(vbuf,add2Dict),add2Dict); - if (wordId==NULL){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Word %s not in dict",vbuf); - return(NULL); - } - break; - case 's': - GetFieldValue(vbuf,src,0); - tag=CopyString(heap,vbuf); - lat->format |= HLAT_TAGS; - break; - case 'L': - GetFieldValue(vbuf,src,0); - wordId=voc->subLatWord; - if((subLatId=AdjSubList(lat,GetLabId(vbuf,TRUE),NULL,+1))==NULL) { - HRError(8251,"ReadLattice: AdjSubLat failed"); - return(NULL); - } - - break; - case 'v': - lat->format |= HLAT_PRON; - v=GetIntField('v',del,vbuf,src); - break; - default: - GetFieldValue(0,src,0); - break; - } + } + switch (ntype) { + case '\n': + break; + case 'I': + n = GetIntField('I', del, vbuf, src); + if (n < 0 || n >= lat->nn) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain node %d", n); + return (NULL); + } + ln = lat->lnodes + n; + if (ln->hook != NULL) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Duplicate info info for node %d", n); + return (NULL); + } + time = 0.0; wordId = voc->nullWord; tag = NULL; v = -1; + while ((ptr = GetNextFieldName(nbuf, &del, src)) != NULL) { + if (nbuf[0] == '\n') + break; + else { + if (strlen(ptr) >= 1) + ntype = *ptr; + else + ntype = 0; + switch (ntype) { + case 't': + time = GetFltField('t', del, vbuf, src); + time *= tscale; + lat->format |= HLAT_TIMES; + break; + case 'W': + GetFieldValue(vbuf, src, 0); + wordId = GetWord(voc, GetLabId(vbuf, add2Dict), add2Dict); + if (wordId == NULL) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Word %s not in dict", vbuf); + return (NULL); + } + break; + case 's': + GetFieldValue(vbuf, src, 0); + tag = CopyString(heap, vbuf); + lat->format |= HLAT_TAGS; + break; + case 'L': + GetFieldValue(vbuf, src, 0); + wordId = voc->subLatWord; + if ((subLatId = AdjSubList(lat, GetLabId(vbuf, TRUE), NULL, +1)) == NULL) { + HRError(8251, "ReadLattice: AdjSubLat failed"); + return (NULL); + } + break; + case 'v': + lat->format |= HLAT_PRON; + v = GetIntField('v', del, vbuf, src); + break; + default: + GetFieldValue(0, src, 0); + break; + } + } + } + if (wordId != voc->nullWord) + lat->format &= ~HLAT_ALABS; + ln->time = time; + ln->word = wordId; + ln->tag = tag; + ln->v = v; + if (wordId == voc->subLatWord) + ln->sublat = subLatId; + else + ln->sublat = NULL; + ln->hook = ln; + nn--; + break; + case 'J': + n = GetIntField('I', del, vbuf, src); + if (n < 0 || n >= lat->na) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain arc %d", n); + return (NULL); + } + la = NumbLArc(lat, n); + if (la->start != NULL) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Duplicate info for arc %d", n); + return (NULL); + } + s = e = v = -1; wordId = NULL; aclike = lmlike = 0.0; + prlike = 0.0; + while ((ptr = GetNextFieldName(nbuf, &del, src))) { + if (nbuf[0] == '\n') + break; + else { + if (strlen(ptr)>=1) + ntype = *ptr; + else + ntype = 0; + switch (ntype) + { + case 'S': + s = GetIntField('S', del, vbuf, src); + if (s < 0 || s >= lat->nn) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain start node %d", s); + return (NULL); + } + break; + case 'E': + e = GetIntField('E', del, vbuf, src); + if (e < 0 || e >= lat->nn) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice does not contain end node %d", e); + return (NULL); + } + break; + case 'W': + GetFieldValue(vbuf, src, 0); + wordId = GetWord(voc, GetLabId(vbuf, add2Dict), add2Dict); + if (wordId == NULL || wordId == voc->subLatWord) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Word %s not in dict", vbuf); + return (NULL); + } + break; + case 'v': + lat->format |= HLAT_PRON; + v = GetIntField('v', del, vbuf, src); + break; + case 'a': + lat->format |= HLAT_ACLIKE; + aclike = GetFltField('a', del, vbuf, src); + aclike = ConvLogLikeFromBase(logbase, aclike); + break; + case 'l': + lat->format |= HLAT_LMLIKE; + lmlike = GetFltField('l', del, vbuf, src); + lmlike = ConvLogLikeFromBase(logbase, lmlike); + break; + case 'r': + lat->format |= HLAT_PRLIKE; + prlike = GetFltField('r', del, vbuf, src); + prlike = ConvLogLikeFromBase(logbase, prlike); + break; + case 'd': + lat->format |= HLAT_ALIGN; + GetFieldValue(dbuf, src, DBUFLEN); + if (!shortArc) + la->nAlign = ReadAlign(lat, la, dbuf); + break; + default: + GetFieldValue(0, src, 0); + break; + } + } } - } - if (wordId != voc->nullWord) - lat->format &= ~HLAT_ALABS; - ln->time=time; - ln->word=wordId; - ln->tag=tag; - ln->v=v; - if (wordId == voc->subLatWord) - ln->sublat = subLatId; - else - ln->sublat = NULL; - ln->hook=ln; - nn--; - break; - case 'J': - n=GetIntField('I',del,vbuf,src); - if (n<0 || n>=lat->na){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain arc %d",n); - return(NULL); - } - la=NumbLArc(lat,n); - if (la->start!=NULL){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Duplicate info for arc %d",n); - return(NULL); - } - s=e=v=-1; wordId=NULL; aclike=lmlike=0.0; - prlike=0.0; - while ((ptr=GetNextFieldName(nbuf,&del,src))) { - if (nbuf[0]=='\n') break; - else { - if (strlen(ptr)>=1) ntype=*ptr; - else ntype=0; - switch(ntype) - { - case 'S': - s=GetIntField('S',del,vbuf,src); - if (s<0 || s>=lat->nn){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain start node %d",s); - return(NULL); - } - break; - case 'E': - e=GetIntField('E',del,vbuf,src); - if (e<0 || e>=lat->nn){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice does not contain end node %d",e); - return(NULL); - } - break; - case 'W': - GetFieldValue(vbuf,src,0); - wordId=GetWord(voc,GetLabId(vbuf,add2Dict),add2Dict); - if (wordId==NULL || wordId==voc->subLatWord){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Word %s not in dict", - vbuf); - return(NULL); - } - break; - case 'v': - lat->format |= HLAT_PRON; - v=GetIntField('v',del,vbuf,src); - break; - case 'a': - lat->format |= HLAT_ACLIKE; - aclike=GetFltField('a',del,vbuf,src); - aclike = ConvLogLikeFromBase(logbase, aclike); - break; - case 'l': - lat->format |= HLAT_LMLIKE; - lmlike=GetFltField('l',del,vbuf,src); - lmlike = ConvLogLikeFromBase(logbase, lmlike); - break; - case 'r': - lat->format |= HLAT_PRLIKE; - prlike=GetFltField('r',del,vbuf,src); - prlike = ConvLogLikeFromBase(logbase, prlike); - break; - case 'd': - lat->format |= HLAT_ALIGN; - GetFieldValue(dbuf,src,DBUFLEN); - if (!shortArc) - la->nAlign=ReadAlign(lat,la,dbuf); - break; - default: - GetFieldValue(0,src,0); - break; - } + if (s < 0 || e < 0 || (wordId == NULL && (lat->format & HLAT_ALABS))) { + Dispose(heap, lat); + HRError(8250, "ReadLattice: Need to know S,E [and W] for arc %d", n); + return (NULL); } - } - if (s<0 || e<0 ||(wordId==NULL && (lat->format&HLAT_ALABS))){ - Dispose(heap, lat); - HRError(8250,"ReadLattice: Need to know S,E [and W] for arc %d",n); - return(NULL); - } - la->start=lat->lnodes+s; - la->end=lat->lnodes+e; - la->lmlike=lmlike; + la->start = lat->lnodes + s; + la->end = lat->lnodes + e; + la->lmlike = lmlike; - if ((lat->format&HLAT_ALABS) && la->end->word == voc->nullWord){ - la->end->word=wordId; - la->end->v = v; - } - if (wordId != NULL && la->end->word != wordId){ - Dispose(heap, lat); - HRError(8251,"ReadLattice: Lattice arc (%d) W field (%s) different from node (%s)", n,wordId->wordName->name,la->end->word->wordName->name); - return(NULL); - } - - la->farc=la->start->foll; - la->parc=la->end->pred; - la->start->foll=la; - la->end->pred=la; - if (!shortArc) { - la->aclike=aclike; - la->prlike=prlike; - } - na--; - break; - default: - GetFieldValue(0,src,0); - while ((ptr=GetNextFieldName(nbuf,&del,src))) { - if (nbuf[0]=='\n') break; - else GetFieldValue(0,src,0); - } - break; - } - } - while(ptr != NULL); - if (na!=0 || (nn!=0 && nn!=lat->nn)){ - Dispose(heap, lat); - HRError(8250,"ReadLattice: %d Arcs unseen and %d Nodes unseen",na,nn); - return(NULL); - } - - if(CheckStEndNodes(lat)format & HLAT_ALABS) && la->end->word == voc->nullWord) { + la->end->word = wordId; + la->end->v = v; + } + if (wordId != NULL && la->end->word != wordId) { + Dispose(heap, lat); + HRError(8251, "ReadLattice: Lattice arc (%d) W field (%s) different from node (%s)", n,wordId->wordName->name, la->end->word->wordName->name); + return(NULL); + } - for(i=0,ln=lat->lnodes;inn;i++,ln++) - ln->hook=NULL; - if (shortArc) lat->format&=~(HLAT_ACLIKE|HLAT_PRLIKE|HLAT_ALIGN); - return(lat); + la->farc = la->start->foll; + la->parc = la->end->pred; + la->start->foll = la; + la->end->pred = la; + if (!shortArc) { + la->aclike = aclike; + la->prlike = prlike; + } + na--; + break; + default: + GetFieldValue(0,src,0); + while ((ptr=GetNextFieldName(nbuf,&del,src))) { + if (nbuf[0]=='\n') break; + else GetFieldValue(0,src,0); + } + break; + } + } while (ptr != NULL); + if (na != 0 || (nn != 0 && nn != lat->nn)) { + Dispose(heap, lat); + HRError(8250, "ReadLattice: %d Arcs unseen and %d Nodes unseen", na, nn); + return (NULL); + } + if (CheckStEndNodes(lat) < SUCCESS) { + Dispose(heap, lat); + HRError(8250, "ReadLattice: Start/End nodes incorrect", na, nn); + return (NULL); + } + for(i = 0, ln = lat->lnodes; i < lat->nn; i++, ln++) + ln->hook = NULL; + if (shortArc) + lat->format &= ~(HLAT_ACLIKE | HLAT_PRLIKE | HLAT_ALIGN); + return (lat); } @@ -1493,7 +1566,7 @@ Lattice *ExpandMultiLevelLattice(MemHeap *heap, Lattice *lat, Vocab *voc) nNodes = nArcs = 0; ExpandedLatticeSize(lat,&nNodes,&nArcs); - newlat = NewLattice(&gstack,nNodes,nArcs); + newlat = NewLattice(&netstak,nNodes,nArcs); newlat->voc = lat->voc; newArcs = newNodes = 0; CopyLattice(lat,newlat,&newNodes,&newArcs,FALSE); /* copy the top level */ @@ -1502,7 +1575,7 @@ Lattice *ExpandMultiLevelLattice(MemHeap *heap, Lattice *lat, Vocab *voc) final = NewILattice(heap,nNodes,nArcs,lat); newArcs = newNodes = 0; CopyLattice(newlat,final,&newNodes,&newArcs,TRUE); /* remove NULL id nodes */ - Dispose(&gstack,newlat); + Dispose(&netstak,newlat); final->subList=NULL; /* Actually unnecessary */ @@ -1613,7 +1686,7 @@ NodeId FindLatEnd(Lattice *lat) static void PrintNode(NetNode *node,HMMSet *hset) { - printf("Node[%05d] ",(((unsigned) node)/sizeof(NetNode))%100000); + printf("Node[%05lu] ",(((unsigned long int) node)/sizeof(NetNode))%100000); if (node->type & n_hmm) printf("{%s}\n",HMMPhysName(hset,node->info.hmm)); else if (node->type == n_word && node->info.pron==NULL) { @@ -1641,8 +1714,8 @@ static void PrintLinks(NetLink *links,int nlinks) int i; for (i=0; i [%05d] == %7.3f\n",i, - (((unsigned) links[i].node)/sizeof(NetNode)%100000), + printf(" %-2d: -> [%05lu] == %7.3f\n",i, + (((unsigned long int) links[i].node)/sizeof(NetNode)%100000), links[i].like); fflush(stdout); } @@ -1927,7 +2000,7 @@ static int DefineContexts(HMMSetCxtInfo *hci) hci->sRight=TRUE; } } - temp=(int *) New(&gstack,sizeof(int)*hci->nci);temp--; + temp=(int *) New(&netstak,sizeof(int)*hci->nci);temp--; for (c=1;c<=hci->nci;c++) temp[c]=0; /* Otherwise scan for all contexts that appear */ @@ -1945,7 +2018,7 @@ static int DefineContexts(HMMSetCxtInfo *hci) for (c=1;c<=hci->nci;c++) if (temp[c]!=0) hci->cis[c]=NULL; - Dispose(&gstack,temp+1); + Dispose(&netstak,temp+1); for (c=1,h=1;c<=hci->nci;c++,h++) { for (;h<=hci->nci;h++) if (hci->cis[h]!=NULL) break; @@ -1999,7 +2072,7 @@ static NetNode *FindWordNode(MemHeap *heap,Pron pron, NetNode *node; hash=0; - un.ptrs[0]=pron;un.ptrs[1]=pInst;un.ptrs[2]=(Ptr)type; + un.ptrs[0]=pron;un.ptrs[1]=pInst;un.ptrs[2]=(Ptr)(unsigned long int)type; for (i=0;i<12;i++) hash=((hash<<8)+un.chars[i])%WNHASHSIZE; @@ -2027,9 +2100,8 @@ static NetNode *FindWordNode(MemHeap *heap,Pron pron, } - /* Create NetNode (and optionally NetLinks as well) */ -static NetNode *NewNode(MemHeap *heap,HLink hmm,int nlinks) +static NetNode *NewNode(MemHeap *heap, HLink hmm, LabId lhmm, int nlinks) /* sxz20: added LabId lhmm */ { NetNode *node; @@ -2045,6 +2117,10 @@ static NetNode *NewNode(MemHeap *heap,HLink hmm,int nlinks) node->links=NULL; else node->links=(NetLink*) New(heap,sizeof(NetLink)*node->nlinks); + + /* sxz20 : attach the logical hmm name to the node */ + node->labid = lhmm; + return(node); } @@ -2097,6 +2173,58 @@ static HLink FindModel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) return((HLink) ml->structure); } +/* sxz20: find label matching context */ +static LabId FindLabel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) +{ + LabId labid; + MLink ml; + char buf[MAXSTRLEN]; + + /* Word internal hack */ + /* Cross word will need proper specification of context */ + /* as well as knowledge of which models are cd/ci. */ + + /* First try constructing the cd name */ + if (!allowCxtExp || (lc<=0 && rc<=0) || IsHCIContextInd(hci,name)) { + strcpy(buf,name->name); + labid=name; + } + else if ((lc==0 || forceRightBiphones || !hci->sLeft) && + rc>0 && !forceLeftBiphones) { + sprintf(buf,"%s+%s",name->name,ContextName(hci,rc)->name); + labid=GetLabId(buf,FALSE); + } + else if ((rc==0 || forceLeftBiphones || !hci->sRight) && + lc>0 && !forceRightBiphones) { + sprintf(buf,"%s-%s",ContextName(hci,lc)->name,name->name); + labid=GetLabId(buf,FALSE); + } + else if (!forceLeftBiphones && !forceRightBiphones) { + sprintf(buf,"%s-%s+%s",ContextName(hci,lc)->name, + name->name,ContextName(hci,rc)->name); + labid=GetLabId(buf,FALSE); + } + else{ + strcpy(buf, name->name); + labid=name; + } + ml=FindMacroName(hci->hset,'l',labid); + + if(ml!=NULL){ + return labid; /* sxz20 : return logical */ + } else if (ml==NULL && (((lc==0 && rc==0) || !forceCxtExp) || + (lc==0 || !forceLeftBiphones) || + (rc==0 || !forceRightBiphones))) { + ml=FindMacroName(hci->hset,'l',name); /* sxz20 : name may physical or CI */ + } + + if (ml==NULL) { + return(NULL); /*sxz20: error will be shown in GetHCILabel() */ + } else { + return name; /* sxz20: CI? how about physical model? */ + } +} + /* Determine if phone in position pos is independent of right context */ static Boolean IsRContextInd(HMMSetCxtInfo *hci,PronHolder *p,int pos,int xlc) { @@ -2176,6 +2304,19 @@ HLink GetHCIModel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) return(hmm); } +/* sxz20 : find label matching context */ +LabId GetHCILabel(HMMSetCxtInfo *hci,int lc,LabId name,int rc) +{ + LabId labid; + + labid=FindLabel(hci,lc,name,rc); + if (labid==NULL) + HError(8231,"GetHCILabel: Cannot find hmm [%s-]%s[+%s]", + (lc>0?ContextName(hci,lc)->name:"???"),name->name, + (rc>0?ContextName(hci,rc)->name:"???")); + return(labid); +} + /* AddInitialFinal: Add links to/from initial/final net nodes */ static void AddInitialFinal(Lattice *wnet, Network *net,int xc) { @@ -2362,7 +2503,7 @@ static int InitPronHolders(Network *net,Lattice *lat,HMMSetCxtInfo *hci, HError(8220,"InitPronHolders: Word %s not defined in dictionary", thisWord->wordName->name); - pii=(PInstInfo *) New(&gstack,(thisWord->nprons+1)*(nAdd+1)*sizeof(PInstInfo)); + pii=(PInstInfo *) New(&netstak,(thisWord->nprons+1)*(nAdd+1)*sizeof(PInstInfo)); pii--; /* Scan current pronunciations and make modified ones */ for (j=1,thisPron=thisWord->pron,npii=0; thisPron!=NULL; @@ -2449,7 +2590,7 @@ static int InitPronHolders(Network *net,Lattice *lat,HMMSetCxtInfo *hci, wordNode->nlinks = 0; } } - Dispose(&gstack,++pii); + Dispose(&netstak,++pii); } if (t!=0) HError(-8221,"InitPronHolders: Total of %d duplicate pronunciations removed",t); @@ -2688,15 +2829,26 @@ void CreateWIModels(PronHolder *pInst,int p,int q, NetNode *node; HLink hmm; int j; + /* sxz20 */ + LabId lhmm = NULL; for(j=q-1;j>p;j--) { hmm=GetHCIModel(hci,FindLContext(hci,pInst,j,0), pInst->phones[j], FindRContext(hci,pInst,j,0)); + + /* sxz20 : find logical HMM LabId*/ + if(markLogHmm) + lhmm = GetHCILabel(hci, FindLContext(hci,pInst,j,0), + pInst->phones[j], + FindRContext(hci,pInst,j,0)); + if (hmm->transP[1][hmm->numStates]tee=FALSE; nwi++; - node=NewNode(net->heap,hmm,(pInst->chain==NULL?0:1)); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, (pInst->chain == NULL? 0: 1)); + /*node=NewNode(net->heap,hmm,(pInst->chain==NULL?0:1));*/ if (pInst->chain!=NULL) { nil++; node->links[0].node=pInst->chain; @@ -2712,16 +2864,24 @@ void CreateIEModels(Word thisWord,PronHolder *pInst,int p,int q, { NetNode *node,*wordNode; HLink hmm; + /* sxz20 */ + LabId lhmm = NULL; if (q==p) { /* One phone word */ hmm=GetHCIModel(hci,0,pInst->phones[0],0); + + /* sxz20 */ + if(markLogHmm) lhmm=GetHCILabel(hci,0,pInst->phones[0],0); + if (hmm->transP[1][hmm->numStates]tee=FALSE; wordNode = FindWordNode(NULL,pInst->pron,pInst,n_word); nin++; nil++; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node=NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ node->links[0].node=wordNode; node->links[0].like=pInst->fct; @@ -2730,14 +2890,18 @@ void CreateIEModels(Word thisWord,PronHolder *pInst,int p,int q, } else { /* End */ - hmm=GetHCIModel(hci,FindLContext(hci,pInst,q,0), - pInst->phones[q],0); + hmm=GetHCIModel(hci,FindLContext(hci,pInst,q,0), pInst->phones[q],0); + /* sxz20 */ + if(markLogHmm) lhmm = GetHCILabel(hci, FindLContext(hci, pInst, q, 0), pInst->phones[q], 0); + if (hmm->transP[1][hmm->numStates]tee=FALSE; wordNode = FindWordNode(NULL,pInst->pron,pInst,n_word); nfi++; nil++; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ node->links[0].node=wordNode; node->links[0].like=pInst->fct; @@ -2745,12 +2909,16 @@ void CreateIEModels(Word thisWord,PronHolder *pInst,int p,int q, pInst->nend=1; /* Start */ - hmm=GetHCIModel(hci,0,pInst->phones[p], - FindRContext(hci,pInst,p,0)); + hmm=GetHCIModel(hci,0,pInst->phones[p], FindRContext(hci,pInst,p,0)); + /* sxz20 */ + if(markLogHmm) lhmm = GetHCILabel(hci, 0, pInst->phones[p], FindRContext(hci, pInst, p, 0)); + if (hmm->transP[1][hmm->numStates]tee=FALSE; nin++; nil++; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ node->links[0].node=(pInst->chain?pInst->chain:pInst->ends); node->links[0].like=pInst->fct; pInst->starts=node; @@ -2779,6 +2947,8 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, Ptr tptr; Boolean tee,initTee,anyTee; int j,k,n; + /* sxz20 */ + LabId lhmm = NULL; /* Single phone word means that we need to */ /* build a complete cross-bar of contexts */ @@ -2788,18 +2958,30 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* Special case because one phone words so expensive */ if (IsHCIContextInd(hci,pInst->phones[p])) { hmm=GetHCIModel(hci,0,pInst->phones[p],0); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, 0, pInst->phones[p], 0); + if (hmm->transP[1][hmm->numStates]tee=FALSE; nin++; nil++; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 0); + /*node=NewNode(net->heap,hmm,0);*/ pInst->starts=node; /* As well as copies of final context free ones */ for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[n], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; ncf++; - dest=NewNode(net->heap,hmm,0); + /* sxz20 */ + dest = NewNode(net->heap, hmm, lhmm, 0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=pInst->chain;pInst->chain=dest; nil++; @@ -2841,8 +3023,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, pInst->chain=dest; ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[n], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; - node=NewNode(net->heap,hmm,1); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 1); + /*node=NewNode(net->heap,hmm,1);*/ nil++; node->links[0].node=dest; node->links[0].like=pInst->fct; @@ -2876,8 +3064,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, else { ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[0],-1); + /* sxz20 */ + if(markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[0], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 0); + /*node=NewNode(net->heap,hmm,0);*/ /* Chain these after NULL node */ node->chain=pInst->starts; @@ -2888,8 +3082,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, for (n=1;nphones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm = GetHCILabel(hci, -1, pInst->phones[n], -1); + if (hmm->transP[1][hmm->numStates]tee=FALSE; - dest=NewNode(net->heap,hmm,0); + /* sxz20 */ + dest = NewNode(net->heap, hmm, lhmm, 0); + /*dest=NewNode(net->heap,hmm,0);*/ node->nlinks=1; nil++; node->links=(NetLink*) New(net->heap, @@ -2917,6 +3117,10 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, if (pInst->rc[k]==NULL) continue; hmm=GetHCIModel(hci,0,pInst->phones[q],k); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,0,pInst->phones[q],k); + for(node=pInst->ends;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; @@ -2925,7 +3129,9 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, else tee=TRUE; /* Still could be save by final CF models */ /* Create new model */ nin++; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, 0); + /*node=NewNode(net->heap,hmm,0);*/ node->chain=pInst->ends;pInst->ends=node; pInst->nend++; linkNode->nlinks++; @@ -2933,9 +3139,15 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* As well as copies of final context free ones */ for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest=NewNode(net->heap,hmm,lhmm,0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=pInst->chain;pInst->chain=dest; nil++; @@ -3023,7 +3235,11 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, else { ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[0],-1); - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[0],-1); + node=NewNode(net->heap,hmm,lhmm,0); + /*node=NewNode(net->heap,hmm,0);*/ pInst->lc[j]=node; /* Chain these after NULL node */ @@ -3035,8 +3251,14 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, for (n=1;nphones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest = NewNode(net->heap, hmm, lhmm, 0); + /*dest=NewNode(net->heap,hmm,0);*/ node->nlinks=1; nil++; node->links=(NetLink*) New(net->heap, @@ -3060,6 +3282,10 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, if (pInst->rc[k]==NULL) continue; hmm=GetHCIModel(hci,j,pInst->phones[q],k); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,j,pInst->phones[q],k); + for(node=pInst->ends;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; @@ -3069,7 +3295,9 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* Create new model */ nin++; - node=NewNode(net->heap,hmm,0); + /* sxz20 */ + node=NewNode(net->heap,hmm,lhmm,0); + /*node=NewNode(net->heap,hmm,0);*/ node->chain=pInst->ends;pInst->ends=node; pInst->nend++; linkNode->nlinks++; @@ -3077,9 +3305,15 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, /* As well as copies of final context free ones */ for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest=NewNode(net->heap,hmm,lhmm,0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=pInst->chain;pInst->chain=dest; nil++; @@ -3141,39 +3375,53 @@ static void CreateX1Model(PronHolder *pInst,int p, int q, static void CreateXEModels(PronHolder *pInst,int p, int q, Network *net,HMMSetCxtInfo *hci,MemHeap *heap) { - NetNode *node,*dest,*chainNode,*searchNode; + NetNode *node,*dest,*chainNode; NetLink *links; HLink hmm; Ptr tptr; Boolean tee,anyTee; int j,n; + /* sxz20 */ + LabId lhmm = NULL; /* Cross word context and more than one phone */ /* Last cd phone */ - chainNode=NULL;searchNode=NULL; + chainNode=NULL; tptr=New(heap,1); anyTee=FALSE; /* Haven't seen any final tee chains */ for(j=0;jxc;j++) { if (pInst->rc[j]==NULL) continue; hmm=GetHCIModel(hci,FindLContext(hci,pInst,q,-1), pInst->phones[q],j); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,FindLContext(hci,pInst,q,-1),pInst->phones[q],j); + for(node=pInst->ends;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; if (node==NULL) { if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + node=NewNode(net->heap,hmm,lhmm,0); + /*node=NewNode(net->heap,hmm,0);*/ node->chain=pInst->ends; pInst->ends=node; pInst->nend++; for (n=q+1;nnphones;n++) { hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,0); + /* sxz20 */ + dest=NewNode(net->heap,hmm,lhmm,0); + /*dest=NewNode(net->heap,hmm,0);*/ dest->chain=chainNode;chainNode=dest; nil++; @@ -3233,14 +3481,20 @@ static void CreateXEModels(PronHolder *pInst,int p, int q, if (pInst->lc[j]==NULL) continue; hmm=GetHCIModel(hci,j,pInst->phones[p], FindRContext(hci,pInst,p,-1)); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,j,pInst->phones[p],FindRContext(hci,pInst,p,-1)); + for(node=pInst->starts;node!=NULL;node=node->chain) if (node->info.hmm==hmm) break; if (node==NULL) { if (hmm->transP[1][hmm->numStates]heap,hmm, - (pInst->chain==NULL?pInst->nend:1)); + /* sxz20 */ + node = NewNode(net->heap, hmm, lhmm, (pInst->chain == NULL? pInst->nend: 1)); + /*node=NewNode(net->heap,hmm, + (pInst->chain==NULL?pInst->nend:1));*/ nil+=node->nlinks; node->chain=pInst->starts;pInst->starts=node; @@ -3263,8 +3517,14 @@ static void CreateXEModels(PronHolder *pInst,int p, int q, dest=node; ncf++; hmm=GetHCIModel(hci,-1,pInst->phones[n],-1); + /* sxz20 */ + if (markLogHmm) + lhmm=GetHCILabel(hci,-1,pInst->phones[n],-1); + if (hmm->transP[1][hmm->numStates]heap,hmm,1); + /* sxz20 */ + node=NewNode(net->heap,hmm,lhmm,1); + /*node=NewNode(net->heap,hmm,1);*/ if (n!=0) { node->chain=chainNode; chainNode=node; diff --git a/HTKLib/HNet.h b/HTKLib/HNet.h old mode 100644 new mode 100755 index a13b2ff..aaad870 --- a/HTKLib/HNet.h +++ b/HTKLib/HNet.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HNet.h Network and Lattice Functions */ +/* File: HNet.h Network and lattice functions */ /* ----------------------------------------------------------- */ -/* !HVER!HNET: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HNet: 3.5.0 [CUED 12/10/15] */ /* Nets come in two forms. @@ -55,6 +58,9 @@ extern "C" { #endif +/* cz277 - ANN */ +#include "HDict.h" + /* ------------------------ Initialisation --------------------------- */ void InitNet(void); @@ -170,6 +176,8 @@ typedef struct larc float score; /* Field used for pruning/sorting */ LogFloat prlike; /* Pronunciation likelihood of arc */ + /* cz277 - scale conf score */ + Ptr hook; } LArc; @@ -386,6 +394,8 @@ struct _NetNode { NetInst *inst; /* Model Instance (if one exists, else NULL) */ NetNode *chain; int aux; + + LabId labid; /* sxz20: Logical HMM name */ }; struct _NetLink{ @@ -526,8 +536,16 @@ int AddHCIContext(HMMSetCxtInfo *hci,LabId labid); Return its context (possibly newly added). */ +/* cz277 - scale conf score */ +void OutputIntField(char field, int val, Boolean bin, char *form, FILE *file); +void OutputFloatField(char field, float val, Boolean bin, char *form, FILE *file); + + #ifdef __cplusplus } #endif #endif /* _HNET_H_ */ + +/* ------------------------- End of HNet.h ------------------------- */ + diff --git a/HTKLib/HParm.c b/HTKLib/HParm.c old mode 100644 new mode 100755 index f417b95..f5bc912 --- a/HTKLib/HParm.c +++ b/HTKLib/HParm.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HParm.c: Speech Parameter File Input/Output */ +/* File: HParm.c Speech parameter file input/output */ /* ----------------------------------------------------------- */ -char *hparm_version = "!HVER!HParm: 3.4.1 [CUED 12/03/09]"; -char *hparm_vc_id = "$Id: HParm.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hparm_version = "!HVER!HParm: 3.5.0 [CUED 12/10/15]"; +char *hparm_vc_id = "$Id: HParm.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -44,7 +47,9 @@ char *hparm_vc_id = "$Id: HParm.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" +#include "HUtil.h" #include "esignal.h" #ifdef UNIX #include @@ -70,7 +75,7 @@ extern Boolean vaxOrder; /* true if byteswapping needed to /* varScale stuff: acts as a cache to stop the scaling file being re-read on each file opening */ -static float varScale[100]; +static float varScale[1000]; static int varScaleDim=0; static char varScaleFN[MAXFNAMELEN] = "\0"; @@ -80,6 +85,7 @@ static ParmKind ForcePKind = ANON; /* force to output a customized parm kind to happy for all the parm kind types supported here */ static HMMSet *hset = NULL; /* hmmset to be used for frontend */ +static MemHeap hstak; /* cz277 - xform hcopy */ /* ------------------------------------------------------------------- */ /* @@ -167,7 +173,36 @@ typedef struct { char* varScaleMask; /* variance estimate file selection mask */ char* varScalePathMask; /* variance estimate file path selection mask */ char* sideXFormMask; /* side XForm mask */ - char* sideXFormExt; /* side XForm mask */ + char* sideXFormExt; /* side XForm mask */ + char* sideXFormDir; /* dir to find side XForm */ + /* from xl207, cz277 - gau */ + char* sideGMMMask; /* side XForm mask */ + char* sideGMMExt; /* side XForm mask */ + char* sideGMMDir; /* side XForm mask */ + char* sideGMMList; + char* sideGMMMMF; /* All the GMMs are in a single MMF and appropriately named */ + + /* cz277 - aug: only 5 are supported, could be extended later */ + char* augFea1DN; /* dir to find the files for augmented feature 1 */ + char* augFea1Mask; /* augmented feature 1 selection mask */ + char* augFea1PathMask; /* augmented feature 1 path selection mask */ + char* augFea2DN; /* dir to find the files for augmented feature 2 */ + char* augFea2Mask; /* augmented feature 2 selection mask */ + char* augFea2PathMask; /* augmented feature 2 path selection mask */ + char* augFea3DN; /* dir to find the files for augmented feature 3 */ + char* augFea3Mask; /* augmented feature 3 selection mask */ + char* augFea3PathMask; /* augmented feature 3 path selection mask */ + char* augFea4DN; /* dir to find the files for augmented feature 4 */ + char* augFea4Mask; /* augmented feature 4 selection mask */ + char* augFea4PathMask; /* augmented feature 4 path selection mask */ + char* augFea5DN; /* dir to find the files for augmented feature 5 */ + char* augFea5Mask; /* augmented feature 5 selection mask */ + char* augFea5PathMask; /* augmented feature 5 path selection mask */ + + /* from mjfg, cz277 - 141022 */ + char* appendXFormMask; /* append XForm mask */ + char* appendXFormExt; /* append XForm ext */ + int appendXFormSize; /* number of parameters to append */ VQTable vqTab; /* VQ table */ Matrix MatTran; /* Stores transformation matrix */ @@ -215,12 +250,25 @@ typedef struct { Vector varScale; /* var scaling vector */ Vector cMeanVector; /* vector loaded from cmean dir */ Vector varScaleVector; /* vector loaded from varscale dir */ + /* cz277 - aug */ + Vector augFea1Vector; /* vector loaded from augmented feature 1 */ + Vector augFea2Vector; /* vector loaded from augmented feature 2 */ + Vector augFea3Vector; /* vector loaded from augmented feature 3 */ + Vector augFea4Vector; /* vector loaded from augmented feature 4 */ + Vector augFea5Vector; /* vector loaded from augmented feature 5 */ + ParmKind matPK; int preFrames; int postFrames; Boolean preQual; InputXForm *xform; AdaptXForm *sideXForm; + /* from xl207, cz277 - gau */ + HMMSet *sideGMM; + StateInfo *siGMM; /* for when a GMM MMF is used for storage */ + char *sideGMMFn; + /* mjfg, cz277 - 141022 */ + AdaptXForm *appendXForm; }IOConfigRec; typedef IOConfigRec *IOConfig; @@ -298,7 +346,35 @@ typedef enum { VARSCALEPATHMASK, /* label mask to idenitfy the path of the variance estimate files */ SIDEXFORMMASK,/* mask for use with side-based xforms */ SIDEXFORMEXT, /* extension for use with side-based xforms */ - + SIDEXFORMDIR, /* directory to find side xform */ + /* from xl207, cz277 - gau */ + SIDEGMMMASK, /* mask for use with side-based GMM normalisation */ + SIDEGMMEXT, /* mask for use with side-based GMM normalisation */ + SIDEGMMDIR, /* mask for use with side-based GMM normalisation */ + SIDEGMMLIST, /* name of side-based GMM normalsisation */ + SIDEGMMMMF, /* all side-based GMM normalisation is in a single MMF (names appropriate) */ + /* cz277 - aug */ + AUGFEA1DIR, /* dir to find the augmented feature 1 file */ + AUGFEA1MASK, /* label mask to identify the augmented feature 1 file */ + AUGFEA1PATHMASK, /* label mask to identify the path of the augmented feature 1 files */ + AUGFEA2DIR, /* dir to find the augmented feature 2 file */ + AUGFEA2MASK, /* label mask to identify the augmented feature 2 file */ + AUGFEA2PATHMASK, /* label mask to identify the path of the augmented feature 2 files */ + AUGFEA3DIR, /* dir to find the augmented feature 3 file */ + AUGFEA3MASK, /* label mask to identify the augmented feature 3 file */ + AUGFEA3PATHMASK, /* label mask to identify the path of the augmented feature 3 files */ + AUGFEA4DIR, /* dir to find the augmented feature 4 file */ + AUGFEA4MASK, /* label mask to identify the augmented feature 4 file */ + AUGFEA4PATHMASK, /* label mask to identify the path of the augmented feature 4 files */ + AUGFEA5DIR, /* dir to find the augmented feature 5 file */ + AUGFEA5MASK, /* label mask to identify the augmented feature 5 file */ + AUGFEA5PATHMASK, /* label mask to identify the path of the augmented feature 5 files */ + + /* from mjfg, cz277 - 141022 */ + APPENDXFORMMASK,/* mask for use with append xforms */ + APPENDXFORMEXT, /* extension for use with append xforms */ + APPENDXFORMSIZE, /* size of the append xforms */ + /* MatTran file */ MATTRANFN, /* File name for MatTran file */ MATTRAN, @@ -328,7 +404,16 @@ static char * ioConfName[CFGSIZE] = { "DOUBLEFFT", "VARSCALEFN", "CMEANDIR" , "CMEANMASK", "CMEANPATHMASK", - "VARSCALEDIR", "VARSCALEMASK" , "VARSCALEPATHMASK" , "SIDEXFORMMASK", "SIDEXFORMEXT", + "VARSCALEDIR", "VARSCALEMASK" , "VARSCALEPATHMASK" , "SIDEXFORMMASK", "SIDEXFORMEXT", "SIDEXFORMDIR", + /* from xl207, cz277 - gau */ + "SIDEGMMMASK", "SIDEGMMEXT", "SIDEGMMDIR", "SIDEGMMLIST", "SIDEGMMMMF", + /* cz277 - aug */ + "AUGFEA1DIR", "AUGFEA1MASK", "AUGFEA1PATHMASK", "AUGFEA2DIR", "AUGFEA2MASK", "AUGFEA2PATHMASK", + "AUGFEA3DIR", "AUGFEA3MASK", "AUGFEA3PATHMASK", "AUGFEA4DIR", "AUGFEA4MASK", "AUGFEA4PATHMASK", + "AUGFEA5DIR", "AUGFEA5MASK", "AUGFEA5PATHMASK", + /* from mjfg, cz277 - 141022 */ + "APPENDXFORMMASK", "APPENDXFORMEXT", "APPENDXFORMSIZE", + "MATTRANFN", "MATTRAN", "THIRDWINDOW", "FOURTHWINDOW" }; @@ -359,8 +444,19 @@ static const IOConfigRec defConf = { NULL, /* VARSCALEFN */ NULL,NULL,NULL, /* CMEANDIR CMEANMASK CMEANPATHMASK */ NULL,NULL,NULL, /* VARSCALEDIR VARSCALEMASK VARSCALEPATHMASK */ - - NULL,NULL, /* SIDEXFORMMASK SIDEXFORMEXT*/ + NULL,NULL,NULL, /* SIDEXFORMMASK SIDEXFORMEXT SIDEXFORMDIR*/ + /* from xl207, cz277 - gau */ + NULL,NULL,NULL,NULL, /* SIDEGMMMASK SIDEGMMEXT SIDEGMMDIR SIDEGMMLIST */ + NULL, /* SIDEGMMMMF */ + /* cz277 - aug */ + NULL, NULL, NULL, /* AUGFEA1DIR, AUGFEA1MASK, AUGFEA1PATHMASK */ + NULL, NULL, NULL, /* AUGFEA2DIR, AUGFEA2MASK, AUGFEA2PATHMASK */ + NULL, NULL, NULL, /* AUGFEA3DIR, AUGFEA3MASK, AUGFEA3PATHMASK */ + NULL, NULL, NULL, /* AUGFEA4DIR, AUGFEA4MASK, AUGFEA4PATHMASK */ + NULL, NULL, NULL, /* AUGFEA5DIR, AUGFEA5MASK, AUGFEA5PATHMASK */ + + /* from mjfg, cz277 - 141022 */ + NULL,NULL,0, /* APPENDXFORMMASK APPENDXFORMEXT APPENDXFORMSIZE */ NULL, /* vqTab */ NULL, NULL, 2, 2 /* MATTRANFN, MATTRAN THIRDWIN FOURTHWIN */ @@ -543,6 +639,8 @@ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; static MemHeap parmHeap; /* HParm no longer uses gstack */ +/* from xl207, cz277 - gau */ +static MemHeap gmmStack; /* for the side GMMs */ static Boolean hparmBin=TRUE; /* HTK format files are binary */ @@ -660,10 +758,10 @@ void SetParmHMMSet(Ptr aset) by ensuring that the transforms have the same macroname. */ if (strcmp(hmm_xf->xformName,cfg_xf->xformName)) - HError(6396,"Incompatible XForm macros in MMF and config file %s and %s", + HError(-1,"Incompatible XForm macros in MMF and config file %s and %s", hmm_xf->xformName,cfg_xf->xformName); else if (cfg_xf != hmm_xf) - HRError(6396,"Assumed compatible XForm macro %s in files %s and %s", + HRError(-1,"Assumed compatible XForm macro %s in files %s and %s", hmm_xf->xformName,hmm_xf->fname,cfg_xf->fname); } else { /* @@ -731,13 +829,24 @@ static AdaptXForm *LoadSideXForm(IOConfig cf, char *fname) AdaptXForm *xf; char macroname[MAXSTRLEN]; char side[MAXSTRLEN]; + char xfname[MAXSTRLEN]; Boolean maskMatch; + if (hset == NULL) { /* cz277 - xform hcopy */ + CreateHeap(&hstak,"temporary HMM stack", MSTAK, 1, 1.0, 5000000, 50000000); + hset = (HMMSet*) New(&gcheap, sizeof(HMMSet) ); + CreateHMMSet(hset, &hstak, TRUE); + hset->swidth[0] = 1; + hset->hsKind = PLAINHS; + } + maskMatch = MaskMatch(cf->sideXFormMask,side, fname); if ((!maskMatch) && (fname != NULL)) HError(999,"Side xform mask %s does not match filename %s",cf->sideXFormMask,fname); MakeFN(side,NULL,cf->sideXFormExt,macroname); - xf = LoadOneXForm(hset,macroname,NULL); + MakeFN(side, cf->sideXFormDir, cf->sideXFormExt, xfname); /* cz277 - xform hcopy */ + /*xf = LoadOneXForm(hset,macroname,NULL);*/ + xf = LoadOneXForm(hset, macroname, xfname); if (xf == NULL) HError(999,"Cannot correctly load side transform %s",macroname); @@ -749,6 +858,70 @@ static AdaptXForm *LoadSideXForm(IOConfig cf, char *fname) return xf; } +/* from xl207, cz277 - gau */ +static HMMSet *LoadSideGMM(IOConfig cf, char *fname) +{ + char macroname[MAXSTRLEN]; + char side[MAXSTRLEN]; + Boolean maskMatch; + LabId id; + MLink m; + + maskMatch = MaskMatch(cf->sideGMMMask,side, fname); + if ((!maskMatch) && (fname != NULL)) + HError(999,"Side GMM mask %s does not match filename %s",cf->sideGMMMask,fname); + MakeFN(side,cf->sideGMMDir,cf->sideGMMExt,macroname); + if (strcmp(macroname,cf->sideGMMFn) != 0) { + printf("Loaded new side GMM %s\n",macroname); + if (cf->sideGMMMMF == NULL) { + if (cf->sideGMM->vecSize != 0) + ResetHMMSet(cf->sideGMM); + AddMMF(cf->sideGMM,macroname); + if (cf->sideGMMList != NULL) + MakeHMMSet(cf->sideGMM,cf->sideGMMList); + else + HError(999,"Must specify the model list sideGMMList as well"); + LoadHMMSet(cf->sideGMM,NULL,NULL); + if (cf->sideGMM->numStates != 1) + HError(999,"Only a GMM may be used for side normalisation"); + } else { + /* Need to set the stateInfo from the GMM MMF */ + id = GetLabId(macroname,FALSE); + m = FindMacroName(cf->sideGMM,'s',id); + if (id == NULL || m == NULL) { + HError(999,"LoadSideGMM: no macro %s, type s exists in GMM MMF %s",macroname,cf->sideGMMMMF); + } + cf->siGMM = (StateInfo *)(m->structure); + } + /* I think this is a memory leak - has it been fixed? */ + cf->sideGMMFn = CopyString(&gmmStack,macroname); + } + return cf->sideGMM; +} + +/* from mjfg, cz277 - 141022 */ +static AdaptXForm *LoadAppendXForm(IOConfig cf, char *fname) +{ + AdaptXForm *xf; + char macroname[MAXSTRLEN]; + char side[MAXSTRLEN]; + Boolean maskMatch; + + maskMatch = MaskMatch(cf->appendXFormMask,side, fname); + if ((!maskMatch) && (fname != NULL)) + HError(999,"Side xform mask %s does not match filename %s",cf->appendXFormMask,fname); + MakeFN(side,NULL,cf->appendXFormExt,macroname); + xf = LoadOneXForm(hset,macroname,NULL); + if (xf == NULL) + HError(999,"Cannot correctly load append transform %s",macroname); + + /* Check that this is a valid side XForm */ + if (xf->bclass->numClasses != 1) HError(999,"Can only use global bseclasses for appendXforms"); + if (xf->parentXForm != NULL) HError(999,"Cannot have parent xforms with appendXforms"); + + return xf; +} + static void ApplyXForm2Vector(LinXForm *linXForm, Vector mean) { Vector vec, bias; @@ -866,6 +1039,33 @@ static IOConfig ReadIOConfig(IOConfig p) case CMEANPATHMASK: p->cMeanPathMask = CopyString(&gcheap,GS(s)); break; case SIDEXFORMMASK: p->sideXFormMask = CopyString(&gcheap,GS(s)); break; case SIDEXFORMEXT: p->sideXFormExt = CopyString(&gcheap,GS(s)); break; + case SIDEXFORMDIR: p->sideXFormDir = CopyString(&gcheap,GS(s)); break; + /* from xl207, cz277 - gau */ + case SIDEGMMMASK: p->sideGMMMask = CopyString(&gcheap,GS(s)); break; + case SIDEGMMEXT: p->sideGMMExt = CopyString(&gcheap,GS(s)); break; + case SIDEGMMDIR: p->sideGMMDir = CopyString(&gcheap,GS(s)); break; + case SIDEGMMLIST: p->sideGMMList = CopyString(&gcheap,GS(s)); break; + case SIDEGMMMMF: p->sideGMMMMF = CopyString(&gcheap,GS(s)); break; + /* cz277 - aug */ + case AUGFEA1DIR: p->augFea1DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA1MASK: p->augFea1Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA1PATHMASK: p->augFea1PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA2DIR: p->augFea2DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA2MASK: p->augFea2Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA2PATHMASK: p->augFea2PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA3DIR: p->augFea3DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA3MASK: p->augFea3Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA3PATHMASK: p->augFea3PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA4DIR: p->augFea4DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA4MASK: p->augFea4Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA4PATHMASK: p->augFea4PathMask = CopyString(&gcheap, GS(s)); break; + case AUGFEA5DIR: p->augFea5DN = CopyString(&gcheap, GS(s)); break; + case AUGFEA5MASK: p->augFea5Mask = CopyString(&gcheap, GS(s)); break; + case AUGFEA5PATHMASK: p->augFea5PathMask = CopyString(&gcheap, GS(s)); break; + /* from mjfg, cz277 - 141022 */ + case APPENDXFORMMASK: p->appendXFormMask = CopyString(&gcheap,GS(s)); break; + case APPENDXFORMEXT: p->appendXFormExt = CopyString(&gcheap,GS(s)); break; + case APPENDXFORMSIZE: p->appendXFormSize = GI(s); break; case MATTRANFN: p->MatTranFN= CopyString(&gcheap, GS(s)); break; case THIRDWINDOW: p->thirdWin = GI(s); break; @@ -876,6 +1076,18 @@ static IOConfig ReadIOConfig(IOConfig p) if (p->MatTranFN != NULL){ LoadMat (&gcheap,p); } + + /* from xl207, cz277 - from gau */ + if ((p->sideGMMList != NULL) || (p->sideGMMMMF != NULL)) { + p->sideGMMFn = NewString(&gmmStack,MAXFNAMELEN); + p->sideGMM = (HMMSet *)New(&gmmStack,sizeof(HMMSet)); + CreateHMMSet(p->sideGMM,&gmmStack,TRUE); + if (p->sideGMMMMF != NULL) { + printf("Using GAUSS GMMs from %s\n",p->sideGMMMMF); + AddMMF(p->sideGMM,p->sideGMMMMF); + LoadHMMSet(p->sideGMM,NULL,NULL); + } + } if (p->varScaleFN != NULL){ LoadVarScale(&gcheap,p); @@ -910,6 +1122,8 @@ ReturnStatus InitParm(void) char buf[MAXSTRLEN]; CreateHeap(&parmHeap, "HPARM C Heap", MSTAK, 1, 1.0, 20000, 80000 ); + /* from xl207, cz277 - gau */ + CreateHeap(&gmmStack,"GMMStore", MSTAK, 1, 1.0, 5000, 50000); Register(hparm_version,hparm_vc_id); nParm = GetConfig("HPARM", TRUE, cParm, MAXGLOBS); @@ -977,7 +1191,7 @@ ReturnStatus SetChannel(char *confName) if (((curChan->cf).MatTranFN == NULL) && ((curChan->cf).xform != NULL)) (curChan->cf).MatTranFN = (defChan->cf).MatTranFN; /* This should be after setting the model up. Set input xform if HPARM1 is being used */ - if ((hset->xf == NULL) && (strcmp("HPARM1",buf)==0)) { + if ((hset != NULL) && (hset->xf == NULL) && (strcmp("HPARM1",buf)==0)) { hset->xf = (curChan->cf).xform; } else { /* commented out so that stored in header, rather than separately */ @@ -1086,7 +1300,7 @@ static char *pmkmap[] = {"WAVEFORM", "LPC", "LPREFC", "LPCEPSTRA", "LPDELCEP", "IREFC", "MFCC", "FBANK", "MELSPEC", "USER", "DISCRETE", "PLP", - "ANON"}; + "ANON", "ANN"}; /* cz277 - ANN */ /* EXPORT-> ParmKind2Str: convert given parm kind to string */ char *ParmKind2Str(ParmKind kind, char *buf) @@ -1279,6 +1493,50 @@ static void ApplyStaticMat(IOConfig cf, float *data, Matrix trans, int vSize, in cf->nUsed = mrows; } +/* from xl207, cz277 - gau */ +/* Apply the global feature transform */ +static void ApplyGMMNorm(IOConfig cf, float *data, HMMSet *hset, int vSize, int n, int step, int offset) +{ + int d,i,j,k; + float cum, *fp; + StreamElem *se; + MixtureElem *me; + StateInfo *si=NULL; + HMMScanState hss; + + HError(999,"Gaussianisation is disabled"); + d = hset->vecSize; + if (d != hset->swidth[0]) + HError(999,"Only GMMs with streams equal to the dimensions can be used"); + step = cf->nCols; + + if (cf->sideGMMMMF == NULL) { + /* extract the state */ + NewHMMScan(hset,&hss); + do { + while (GoNextState(&hss,TRUE)) + si = hss.si; + } while (GoNextHMM(&hss)); + EndHMMScan(&hss); + } else { /* MMF used for storage and StateInfo already selected */ + si = cf->siGMM; + } + + se = si->pdf+1; + for (i=0; ispdf.cpdf+1; + for (k=1;k<=se->nMix;k++,me++) + cum += me->weight * CumGauss(*fp,me->mpdf->mean[1],me->mpdf->cov.var[1]); + *fp = GaussInv(cum); + fp += step; + } + } + +} + /* ---------------- Data Sizing and Memory allocation --------------- */ /* MakeIOConfig: Create an IOConfig object. Initial values are copied @@ -1386,20 +1644,21 @@ static void ValidCodeParms(IOConfig cf) /* EXPORT->ValidConversion: checks that src -> tgt conversion is possible */ Boolean ValidConversion (ParmKind src, ParmKind tgt) { - static short xmap[13][13] = { - { 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0}, /* src = WAVEFORM */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPC */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPREFC */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPCEPSTRA */ - { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = LPDELCEP */ - { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = IREFC */ - { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0}, /* src = MFCC */ - { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, /* src = FBANK */ - { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0}, /* src = MELSPEC */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0}, /* src = USER */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0}, /* src = DISCRETE */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0}, /* src = PLP */ - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* src = ANON */ + static short xmap[14][14] = { + { 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0}, /* src = WAVEFORM */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPC */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPREFC */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPCEPSTRA */ + { 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = LPDELCEP */ + { 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = IREFC */ + { 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1}, /* src = MFCC */ + { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1}, /* src = FBANK */ + { 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1}, /* src = MELSPEC */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1}, /* src = USER */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1}, /* src = DISCRETE */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1}, /* src = PLP */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* src = ANON */ + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* cz277 - ANN */ }; if (src == tgt) return TRUE; if (xmap[src&BASEMASK][tgt&BASEMASK] == 0 ) return FALSE; @@ -1630,7 +1889,11 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, HError (6371, "AddQualifiers: HIGHDIFF=T not supported with source features that contain derivatives already"); - if ((cf->curPK == cf->tgtPK) && (cf->MatTranFN == NULL)) return; +/* cz277 - cmvnbug */ + /*if ((cf->curPK == cf->tgtPK) && (cf->MatTranFN == NULL) && (cf->varScale == NULL) && (cf->varScaleVector == NULL) && (cf->cMeanVector == NULL)) + return; +*/ + if (trace&T_QUA) printf("HParm: adding Qualifiers to %s ...",ParmKind2Str(cf->curPK,buf)); if (cf->MatTranFN != NULL) { /* Do the generic checks that the matrix is appropriate */ @@ -1706,9 +1969,10 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } /* Zero Mean the static coefficients if required */ - if ((cf->tgtPK&HASZEROM) && !(cf->curPK&HASZEROM)) { + /*if ((cf->tgtPK&HASZEROM) && !(cf->curPK&HASZEROM)) {*/ /* cz277 - cmvnbug */ /* if a global mean vector is not available */ if (cf->cMeanVector == 0) { + if ((cf->tgtPK&HASZEROM) && !(cf->curPK&HASZEROM)) { /* cz277 - cmvnbug */ if (cf->MatTranFN == NULL || (!cf->preQual)) { d = span[1]-span[0]+1; if (cf->tgtPK&HASZEROC && !(cf->curPK&HASNULLE)) /* zero mean c0 too */ @@ -1723,6 +1987,7 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, FZeroMean(data,d,nRows,cf->nCols); cf->curPK |= HASZEROM; + } /* cmvnbug */ } /* if a global cepstral mean file is available */ else { @@ -1739,7 +2004,7 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } cf->curPK |= HASZEROM; } - } + /*}*/ /* cz277 - cmvnbug */ if (UseOldXFormCVN){ @@ -1755,9 +2020,10 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } /* Scale the variances */ if (cf->varScaleFN) { - if ((VectorSize (cf->varScale) != cf->tgtUsed) && (highDiff != TRUE)) + if ((VectorSize (cf->varScale) != cf->tgtUsed) && (highDiff != TRUE)) { HError(6376 ,"AddQualifiers: Mismatch beteen varScale (%d) and target size %d", VectorSize (cf->varScale), cf->tgtUsed); + } if (trace&T_QUA) printf("\nHParm: variance normalisation for %d cols from %d rows", cf->tgtUsed, nRows); @@ -1786,18 +2052,43 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } } } - } - - else { + /* from xl207, cz277 - gau */ + /* Do any GMM normalisation */ + if ((cf->sideGMMList != NULL) || (cf->sideGMMMMF != NULL)) { + ApplyGMMNorm(cf,data,cf->sideGMM,cf->nCols,nRows,0,0); + } + + /* Now apply any side specific xforms */ + if (cf->sideXForm != NULL) { + if (cf->sideXForm->xformSet->numXForms == 1) { + xf = cf->sideXForm->xformSet->xforms[1]; + /* if (cf->varScaleFN) { */ + /* if (xf->vecSize != d) */ + /* HError(999,"Incompatible sizes %d and %d",xf->vecSize,d); */ + /* } */ + d = xf->vecSize; + tmp = CreateVector(&gstack,d); + step = cf->nCols; fp = data; + for (j=0;jvarScaleFN) { if (cf->varScaleVector == 0) { HError (6376, "AddQualifiers: no variance scaling vector found"); } d = VectorSize(cf->varScaleVector); - if (VectorSize (cf->varScale) != d) + if (VectorSize (cf->varScale) != d) { HError(6376 ,"AddQualifiers: Mismatch beteen varScale (%d) and target size %d", VectorSize (cf->varScale), d); + } if (trace&T_QUA) printf("\nHParm: variance normalisation for %d cols from %d rows", cf->tgtUsed, nRows); @@ -1811,14 +2102,27 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } } } + + if ((cf->MatTranFN != NULL) && (!cf->preQual)) { + if (cf->matPK != cf->curPK) { + /* Need to check that the correct qualifiers are used */ + HError(999,"Incorrect qualifiers in parameter type (%s %s)", + ParmKind2Str(cf->curPK,buff1),ParmKind2Str(cf->matPK,buff2)); + } + ApplyStaticMat(cf,data,cf->MatTran,cf->nCols,nRows,0,0); + pbuf->main.nRows -= (cf->postFrames + cf->preFrames); + cf->nSamples = pbuf->main.nRows; + } + /* from xl207, cz277 - gau */ + /* Do any GMM normalisation */ + if ((cf->sideGMMList != NULL) || (cf->sideGMMMMF != NULL)) { + ApplyGMMNorm(cf,data,cf->sideGMM,cf->nCols,nRows,0,0); + } + /* cz277 - 141022 */ /* Now apply any side specific xforms */ - if (cf->sideXForm != NULL) { + if ((cf->sideXForm != NULL) && ( cf->sideXForm->xformSet->numXForms == 1)) { xf = cf->sideXForm->xformSet->xforms[1]; - if (cf->varScaleFN) { - if (xf->vecSize != d) - HError(999,"Incompatible sizes %d and %d",xf->vecSize,d); - } d = xf->vecSize; tmp = CreateVector(&gstack,d); step = cf->nCols; fp = data; @@ -1830,17 +2134,42 @@ static void AddQualifiers(ParmBuf pbuf,float *data, int nRows, IOConfig cf, } FreeVector(&gstack,tmp); } - - if ((cf->MatTranFN != NULL) && (!cf->preQual)) { - if (cf->matPK != cf->curPK) { - /* Need to check that the correct qualifiers are used */ - HError(999,"Incorrect qualifiers in parameter type (%s %s)", - ParmKind2Str(cf->curPK,buff1),ParmKind2Str(cf->matPK,buff2)); + /* cz277 - 141022 */ + /* Finally append the append XForm */ + if (cf->appendXForm != NULL) { + Vector appendVec, bias; + int b,j,cnti,bsize; + Matrix A; + + xf = cf->appendXForm->xformSet->xforms[1]; + /* convert parametes to a vector and check */ + appendVec = CreateVector(&gstack,cf->appendXFormSize); + d = xf->vecSize; + for (b=1,cnti=1;b<=IntVecSize(xf->blockSize);b++) { + bsize = xf->blockSize[b]; + A = xf->xform[b]; + for (i=1;i<=bsize;i++) { + for (j=1;j<=bsize;j++,cnti++) + appendVec[cnti] = A[i][j]; + } } - ApplyStaticMat(cf,data,cf->MatTran,cf->nCols,nRows,0,0); - pbuf->main.nRows -= (cf->postFrames + cf->preFrames); - cf->nSamples = pbuf->main.nRows; - } + /* Append bias if required */ + bias = xf->bias; + if (bias != NULL) { + for (i=1;i<=d;i++,cnti++) + appendVec[cnti] = bias[i]; + } + if (cnti != cf->appendXFormSize+1) { + HError(999,"Incompatible append XForm size (%d %d)",cnti-1,cf->appendXFormSize); + } + step = cf->nCols; fp = data + step-cf->appendXFormSize; + for (j=0;jappendXFormSize;i++) *(fp+i) = appendVec[i+1]; + fp += step; + } + FreeVector(&gstack,appendVec); + } + } if (trace&T_QUA) @@ -2204,6 +2533,13 @@ static void SetUpForCoding(MemHeap *x, IOConfig cf, int frSize) else cf->tgtUsed = NumRows(cf->MatTran); } + + /* from mjfg, cz277 - 141022 */ + /* expand the size of the cfg to support the append transform */ + if (cf->appendXFormMask != NULL) { + cf->tgtUsed += cf->appendXFormSize; + } + cf->nCols=TotalComps(NumStatic(cf->nUsed,cf->curPK),cf->tgtPK); cf->nCols = (cf->nCols>cf->tgtUsed)?cf->nCols:cf->tgtUsed; cf->nCvrt = cf->nUsed; @@ -2579,15 +2915,14 @@ static void SetAudioSpDetParms(ParmBuf pbuf, float dur, Boolean warn) static void SetWaveSpDetParms(ParmBuf pbuf) { IOConfig cf = pbuf->cf; - Vector v,eFr; + Vector eFr; float mlRes[ml_cnt],x,m,e,range,off; - int i,j,n,nFr,nBl,xMin=32767,xMax=-32768; + int i,j,n,nFr,xMin=32767,xMax=-32768; short *data; long nSamp; off = 0.0; n=cf->frSize; - v=CreateVector(&gstack,cf->frSize); data = GetWaveDirect(pbuf->in.w,&nSamp); nFr = (nSamp-cf->frSize)/cf->frRate + 1; @@ -2606,7 +2941,7 @@ static void SetWaveSpDetParms(ParmBuf pbuf) off += m; } - off=off/nFr; nBl=nFr/ML_PARTS; + off=off/nFr; range=(xMax-xMin)/65536.0; CalcSilDetParms(pbuf,mlRes,eFr,off,range); @@ -2825,7 +3160,7 @@ void RunSilDet(ParmBuf pbuf,Boolean cleared) /* EXPORT ReadESIGPHeader: get header from Esignal pamameter file; return FALSE in case of failure */ -Boolean ReadESIGPHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadESIGPHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, short *kind, Boolean *bSwap, Boolean isPipe) { long hdrS; @@ -3348,6 +3683,77 @@ static void LoadVarScaleVector(MemHeap* x, IOConfig cf, char *fname) CloseSource (&src); } +/* cz277 - aug */ +/* load appropriate vectors for augmented features */ +static void LoadAugFeaVector(MemHeap *x, IOConfig config, char *fileName, char *augFeaDN, char *augFeaMask, char *augFeaPathMask, Vector *augFeaVecPtr) { + static char augFeaNamePrev[MAXFNAMELEN] = ""; + static Vector augFeaVector = NULL; + char augFeaName[MAXFNAMELEN]; + char pathName[MAXFNAMELEN]; + char buf1[MAXFNAMELEN], buf2[MAXFNAMELEN]; + Source source; + int dim; + + /* make the file name and open it */ + if (augFeaDN == 0 || augFeaMask == 0) { + HError(9999, "LoadAugFeaVector: Mask or dir missing"); + } + if (!MaskMatch(augFeaMask, augFeaName, fileName)) { + HError(9999, "LoadAugFeaVector: Non-matching mask %s", augFeaMask); + } + if (augFeaPathMask != 0) { + if (!MaskMatch(augFeaPathMask, pathName, fileName)) { + HError(9999, "LoadAugFeaVector: Non-matching path mask %s", augFeaPathMask); + } + MakeFN(pathName, augFeaDN, 0, buf2); + MakeFN(augFeaName, buf2, 0, buf1); + } + else { + MakeFN(augFeaName, augFeaDN, 0, buf1); + } + /* caching of vector */ + if (strcmp(buf1, augFeaNamePrev) == 0) { /* names match, old vector must be the same */ + *augFeaVecPtr = CreateVector(x, VectorSize(augFeaVector)); + CopyVector(augFeaVector, *augFeaVecPtr); + return; + } + else { + strcpy(augFeaNamePrev, buf1); + } + + /* read file header and the augFea vector kind */ + if (InitSource(buf1, &source, NoFilter) < SUCCESS) { + HError(9999, "LoadAugFeaVector: Can't open augmented feature file %s", buf1); + } + SkipComment(&source); + ReadString(&source, buf2); + if (strcmp(buf2, "") != 0) { + HError(9999, "LoadAugFeaVector: is missing, read %s", buf2); + } + ReadString(&source, buf2); + /* load augFea vector */ + while ((strcmp(buf2, "") != 0) && (!feof(source.f))) { + ReadString(&source, buf2); + } + if (feof(source.f)) { + HError(9999, "LoadAugFeaVector: is missing, read %s", buf2); + } + ReadInt(&source, &dim, 1, FALSE); + + /* cachubg of vector */ + if (augFeaVector) { + Dispose(&gcheap, augFeaVector); + } + augFeaVector = CreateVector(&gcheap, dim); + if (!ReadVector(&source, augFeaVector, FALSE)) { + HError(9999, "LoadAugFeaVector: Couldn't read augmented feature vector from file"); + } + + *augFeaVecPtr = CreateVector(x, dim); + CopyVector(augFeaVector, *augFeaVecPtr); + CloseSource(&source); +} + /* ---------- Parameter File Channel Operations ----------- */ #define CRCC_NONE 65535 @@ -3474,8 +3880,12 @@ static int GetParm(ParmBuf pbuf,int nFrame,void *data) r=n=0; size=(cf->srcUsed>cf->tgtUsed)?cf->srcUsed:cf->tgtUsed; - v=CreateVector(&gstack,size); - s=CreateShortVec(&gstack,size); + /* cz277 - mtload */ + /*v=CreateVector(&gstack,size); + s=CreateShortVec(&gstack,size);*/ + v = CreateVector(&gcheap, size); + s = CreateShortVec(&gcheap, size); + while (rinRow+r>=pbuf->lastRow) pbuf->chClear=TRUE; } - FreeShortVec(&gstack,s); - FreeVector(&gstack,v); + /* cz277 - mtload */ + /*FreeShortVec(&gstack,s); + FreeVector(&gstack,v);*/ + FreeShortVec(&gcheap, s); + FreeVector(&gcheap, v); + return(r); } @@ -3566,7 +3980,9 @@ static ReturnStatus OpenParmChannel(ParmBuf pbuf,char *fname, int *ret_val) FILE *f; long nSamples,sampPeriod; int initRows,i, tmp; - short sampSize,kind; + /*short sampSize,kind;*/ + short kind; + unsigned short sampSize; /* cz277 - cbu */ char b1[50],b2[50]; Boolean isEXF; char actfname[MAXFNAMELEN]; @@ -3630,12 +4046,12 @@ static ReturnStatus OpenParmChannel(ParmBuf pbuf,char *fname, int *ret_val) if (enIndex < 0) enIndex = nSamples-1; if (nSamples < enIndex - stIndex + 1) { - HRError(6313,"OpenParmChannel: EXF segment bigger than file"); - return (FAIL); + HRError(-6313,"OpenParmChannel: EXF segment [%d,%d] bigger than file [%d,%d]",stIndex,enIndex,0,nSamples-1); + enIndex=nSamples-1; } if (nSamples < enIndex + 1) { - HRError(6313,"OpenParmChannel: EXF segment bigger than file"); - return (FAIL); + HRError(-6313,"OpenParmChannel: EXF segment [%d,%d] bigger than file [%d,%d]",stIndex,enIndex,0,nSamples-1); + enIndex=nSamples-1; } preskip = stIndex * sampSize; @@ -4148,7 +4564,7 @@ static ReturnStatus OpenAsChannel(ParmBuf pbuf, int maxObs, { ChannelType chType; BufferInfo info; - int initRows; + int initRows=-1; long dBytes; char b1[50]; IOConfig cf = pbuf->cf; @@ -4372,20 +4788,70 @@ ParmBuf OpenBuffer(MemHeap *x, char *fn, int maxObs, FileFormat ff, /* side based normalisation -- #### should maybe be in OpenAsChannel? */ /* Load mean vector into pbuf->cf */ - if (HasZerom (pbuf->cf->tgtPK) && !HasZerom (pbuf->cf->srcPK) && - (pbuf->cf->cMeanDN || pbuf->cf->cMeanMask)) + /*if (HasZerom (pbuf->cf->tgtPK) && !HasZerom (pbuf->cf->srcPK) && + (pbuf->cf->cMeanDN || pbuf->cf->cMeanMask))*/ + /* cz277 - cmvnbug */ + if (pbuf->cf->cMeanDN || pbuf->cf->cMeanMask) { LoadCMeanVector (pbuf->mem, pbuf->cf, fn); - + } + /* Load variance estimate into pbuf->cf */ if (pbuf->cf->varScaleDN || pbuf->cf->varScaleMask) { LoadVarScaleVector (pbuf->mem, pbuf->cf, fn); } + /* from xl207, cz277 - gau */ + /* Load xform associated with this side if necessary */ + if (curChan->cf.sideGMMMask != NULL) { + LoadSideGMM(&(curChan->cf),fn); + pbuf->cf->sideGMM = curChan->cf.sideGMM; + pbuf->cf->siGMM = curChan->cf.siGMM; + } + /*if (pbuf->cf->sideXFormMask != NULL) { + pbuf->cf->sideXForm = LoadSideXForm(pbuf->cf,fn); + }*/ /* Load xform associated with this side if necessary */ if (pbuf->cf->sideXFormMask != NULL) { pbuf->cf->sideXForm = LoadSideXForm(pbuf->cf,fn); } + /* from mjfg, cz277 - 141022 */ + /* Load append xform associated with this side if necessary */ + if (pbuf->cf->appendXFormMask != NULL) { + pbuf->cf->appendXForm = LoadAppendXForm(pbuf->cf,fn); + } + + /* cz277 - aug */ + if (pbuf->cf->augFea1DN || pbuf->cf->augFea1Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea1DN, pbuf->cf->augFea1Mask, pbuf->cf->augFea1PathMask, &pbuf->cf->augFea1Vector); + } + else { + pbuf->cf->augFea1Vector = NULL; + } + if (pbuf->cf->augFea2DN || pbuf->cf->augFea2Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea2DN, pbuf->cf->augFea2Mask, pbuf->cf->augFea2PathMask, &pbuf->cf->augFea2Vector); + } + else { + pbuf->cf->augFea2Vector = NULL; + } + if (pbuf->cf->augFea3DN || pbuf->cf->augFea3Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea3DN, pbuf->cf->augFea3Mask, pbuf->cf->augFea3PathMask, &pbuf->cf->augFea3Vector); + } + else { + pbuf->cf->augFea3Vector = NULL; + } + if (pbuf->cf->augFea4DN || pbuf->cf->augFea4Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea4DN, pbuf->cf->augFea4Mask, pbuf->cf->augFea4PathMask, &pbuf->cf->augFea4Vector); + } + else { + pbuf->cf->augFea4Vector = NULL; + } + if (pbuf->cf->augFea5DN || pbuf->cf->augFea5Mask) { + LoadAugFeaVector(pbuf->mem, pbuf->cf, fn, pbuf->cf->augFea5DN, pbuf->cf->augFea5Mask, pbuf->cf->augFea5PathMask, &pbuf->cf->augFea5Vector); + } + else { + pbuf->cf->augFea5Vector = NULL; + } if(OpenAsChannel(pbuf,maxObs,fn,ff,silMeasure)cf->augFea1Vector; + case 2: + return parmBuf->cf->augFea2Vector; + case 3: + return parmBuf->cf->augFea3Vector; + case 4: + return parmBuf->cf->augFea4Vector; + case 5: + return parmBuf->cf->augFea5Vector; + default: + HError(9999, "GetAugFeaVector: Unavailable index of the augmented feature vector"); + } + + return NULL; +} + + /* EXPORT->OpenExtBuffer: open and return an input buffer */ ParmBuf OpenExtBuffer(MemHeap *x, char *fn, int maxObs, FileFormat ff, HParmSrcDef ext, @@ -4747,6 +5235,13 @@ ParmBuf EmptyBuffer(MemHeap *x, int size, Observation o, BufferInfo info) return pbuf; } +/* cz277 - ANN */ +/* need to be extended later */ +/*void CopyParmBufInfo(ParmBuf srcPBuf, ParmBuf dstPBuf) { + dstPBuf->chType = srcPBuf->chType; + dstPBuf->crcc = CRCC_NONE; +}*/ + /* EXPORT->WriteESIGPHeader: Write header info to ESIG parameter file f */ void WriteESIGPHeader(FILE *f, IOConfig cf, HTime sampPeriod, short sampSize, short pKind) { @@ -4942,13 +5437,12 @@ static void CalcCompress(ParmBuf pbuf, PBlock *pbInit,int nCols, Boolean irefc) static void CompressPBlock(ParmBuf pbuf, PBlock *pb, short *sp, int nCols) { IOConfig cf = pbuf->cf; - int i,nx,ix,count; + int i,nx,ix; float *fp,x; if (trace&T_CPX) printf("HParm: Compressing pblock: nRows=%d, nCols=%d\n", pb->nRows,nCols); - count = pb->nRows * cf->nCols; /* Convert floats to shorts */ fp = (float *)pb->data; for (i=0;inRows;i++) @@ -4968,7 +5462,9 @@ ReturnStatus SaveBuffer(ParmBuf pbuf, char *fname, FileFormat ff) FILE *f; IOConfig cf = pbuf->cf; Boolean bSwap,isPipe; - short sampSize,kind,*sp; + /*short sampSize,kind,*sp;*/ + short kind, *sp; + unsigned short sampSize; /* cz277 - cbu */ long nSamples,sampPeriod; char buf[50]; @@ -5088,6 +5584,7 @@ ReturnStatus SaveBuffer(ParmBuf pbuf, char *fname, FileFormat ff) pbFin->next=NULL; pbuf->main.next=pbInit; } + return(SUCCESS); } diff --git a/HTKLib/HParm.h b/HTKLib/HParm.h old mode 100644 new mode 100755 index cf7cfae..d8046b3 --- a/HTKLib/HParm.h +++ b/HTKLib/HParm.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HParm.h: Speech Parameter Input/Output */ +/* File: HParm.h Speech Parameter Input/Output */ /* ----------------------------------------------------------- */ -/* !HVER!HParm: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HParm: 3.5.0 [CUED 12/10/15] */ #ifndef _HPARM_H_ #define _HPARM_H_ @@ -41,6 +44,9 @@ extern "C" { #endif +#include "HWave.h" /* cz277 - ANN */ +#include "HAudio.h" /* cz277 - ANN */ + enum _BaseParmKind{ WAVEFORM, /* Raw speech waveform (handled by HWave) */ LPC,LPREFC,LPCEPSTRA,LPDELCEP, /* LP-based Coefficients */ @@ -51,7 +57,8 @@ enum _BaseParmKind{ USER, /* Arbitrary user specified data */ DISCRETE, /* Discrete VQ symbols (shorts) */ PLP, /* Standard PLP coefficients */ - ANON}; + ANON, + ANN}; typedef short ParmKind; /* BaseParmKind + Qualifiers */ @@ -207,6 +214,9 @@ ParmBuf OpenBuffer(MemHeap *x, char *fn, int maxObs, FileFormat ff, will perform measurement if it is needed by config). */ +/* cz277 - aug */ +Vector GetAugFeaVector(ParmBuf parmBuf, int feaIdx); + PBStatus BufferStatus(ParmBuf pbuf); /* Return current status of buffer. @@ -314,6 +324,9 @@ ParmBuf EmptyBuffer(MemHeap *x, int size, Observation o, BufferInfo info); buffer created by an OpenBuffer call. */ +/* cz277 - ANN */ +/*void CopyParmBufInfo(ParmBuf srcPBuf, ParmBuf dstPBuf);*/ + ReturnStatus SaveBuffer(ParmBuf pbuf, char *fname, FileFormat ff); /* Write contents of given buffer to fname. If SAVEWITHCRC is set in diff --git a/HTKLib/HRec.c b/HTKLib/HRec.c old mode 100644 new mode 100755 index 8323130..6e3f72a --- a/HTKLib/HRec.c +++ b/HTKLib/HRec.c @@ -3,24 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HRec.c Viterbi Recognition Engine Library */ +/* File: HRec.c Viterbi recognition engine library */ /* ----------------------------------------------------------- */ -char *hrec_version = "!HVER!HRec: 3.4.1 [CUED 12/03/09]"; -char *hrec_vc_id = "$Id: HRec.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hrec_version = "!HVER!HRec: 3.5.0 [CUED 12/10/15]"; +char *hrec_vc_id = "$Id: HRec.c,v 1.2 2015/10/12 12:07:24 cx277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -29,6 +45,7 @@ char *hrec_vc_id = "$Id: HRec.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HDict.h" #include "HNet.h" @@ -446,7 +463,7 @@ static LogFloat cSOutP(HMMSet *hset, int s, Observation *x, StreamElem *se, TMixRec *tr; TMProb *tm; Vector v,tv; - + switch (hset->hsKind){ case PLAINHS: case SHAREDHS: @@ -502,6 +519,12 @@ static LogFloat cSOutP(HMMSet *hset, int s, Observation *x, StreamElem *se, for (m=1; m<=tr->topM; m++,tm++) sum += tm->prob * tv[tm->index]; return (sum>=MINLARG)?log(sum)+tr->maxP:LZERO; + /* cz277 - ANN */ + case HYBRIDHS: + v = x->fv[s]; + /*bx = v[se->targetIdx] + se->targetPen;*/ + bx = v[se->targetIdx]; + return bx; default: HError(7071,"SOutP: bad hsKind %d\n",hset->hsKind); } return LZERO; /* to keep compiler happy */ @@ -1517,7 +1540,7 @@ static void LatFromPaths(Path *path,int *ln,Lattice *lat) NxtPath tmp,*pth; Align *align,*al,*pr; MLink ml; - LabId labid,splabid,labpr = NULL; + LabId labid = NULL,splabid,labpr = NULL; char buf[80]; int i,frame; double prlk,dur,like,wp; @@ -1597,7 +1620,9 @@ static void LatFromPaths(Path *path,int *ln,Lattice *lat) if (al->state<0) { if (pr==NULL) { pr=al; - labpr=ml->id; + /* sxz20 */ + labpr = (al->node->labid == NULL)? ml->id: al->node->labid; + /*labpr=ml->id;*/ continue; } if (labpr==NULL) @@ -1606,13 +1631,16 @@ static void LatFromPaths(Path *path,int *ln,Lattice *lat) like=pr->like-al->like; pr=al; labid=labpr; - labpr=ml->id; + /* sxz20 */ + labpr = (al->node->labid == NULL)? ml->id: al->node->labid; + /*labpr=ml->id;*/ } else { if (pri->models) sprintf(buf,"s%d",al->state); else - sprintf(buf,"%s[%d]",ml->id->name,al->state); + sprintf(buf, "%s[%d]", (al->node->labid == NULL)? ml->id->name: al->node->labid->name, al->state); /* sxz20 */ + /*sprintf(buf,"%s[%d]",ml->id->name,al->state);*/ labid=GetLabId(buf,TRUE); dur=(frame-al->frame)*lat->framedur, like=like-al->like; diff --git a/HTKLib/HRec.h b/HTKLib/HRec.h old mode 100644 new mode 100755 index b78655a..e8ade9b --- a/HTKLib/HRec.h +++ b/HTKLib/HRec.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HRec.h Viterbi Recognition Engine Library */ +/* File: HRec.h Viterbi recognition engine library */ /* ----------------------------------------------------------- */ -/* !HVER!HREC: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HRec: 3.5.0 [CUED 12/10/15] */ #ifndef _HREC_H_ #define _HREC_H_ @@ -221,3 +237,6 @@ void TracePath(FILE *file,Path *path); #endif #endif /* _HREC_H_ */ + +/* ------------------------- End of HRec.h ------------------------- */ + diff --git a/HTKLib/HShell.c b/HTKLib/HShell.c old mode 100644 new mode 100755 index bd64861..11fd299 --- a/HTKLib/HShell.c +++ b/HTKLib/HShell.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HShell.c: Interface to the Shell */ +/* File: HShell.c Interface to the shell */ /* ----------------------------------------------------------- */ -char *hshell_version = "!HVER!HShell: 3.4.1 [CUED 12/03/09]"; -char *hshell_vc_id = "$Id: HShell.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; +char *hshell_version = "!HVER!HShell: 3.5.0 [CUED 12/10/15]"; +char *hshell_vc_id = "$Id: HShell.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" @@ -86,7 +89,7 @@ static int extFileUsed = 0; /* total ext files in buffer */ char * RegisterExtFileName(char *s) { char *eq,*rb,*lb,*co; - char buf[1024]; + char buf[MAXSTRLEN]; ExtFile *p; if (!extendedFileNames) @@ -308,7 +311,7 @@ static Boolean ReadConfName(Source *src, char *s) if (c == EOF) return FALSE; for (i=0; inext) { + if (strcmp(e->param.name,name)==0){ + s = e->param.user; + if (s==NULL?user==NULL:(user!=NULL && strcmp(s,user)==0) ) { + /* found the element to remove */ + /* check whether it is at the start of the list */ + if (pe == NULL) + confList=e->next; + else + pe->next=e->next; + } + } + pe=e; + } +} + /* FindConfEntry: return entry with given name and user */ static ConfigEntry *FindConfEntry(char *user, char *name) { @@ -332,16 +358,27 @@ static ConfigEntry *FindConfEntry(char *user, char *name) return NULL; } +/* cz277 - ANN */ /* NumHead: returns TRUE if the first two chars of a string are ('+'|'-') digit | digit */ static Boolean NumHead(char *s) { - if (*s!='\0') + /*if (*s!='\0') if (isdigit((int) *s)) return TRUE; if (((*s=='-') || (*s=='+')) && (isdigit((int) *(s+1)))) return TRUE; - return FALSE; + return FALSE;*/ + char *c; + + c = s; + while (*c != '\0') { + if (!(isdigit((int) *c) || *c == '-' || *c == '+' || *c == '.')) + return FALSE; + ++c; + } + + return TRUE; } /* ParseInclude: skip comments or return #include argument */ @@ -382,9 +419,12 @@ static ReturnStatus ReadConfigFile(char *fname) Source src; ConfigEntry *e; Boolean gotParam,hasUser; - char c,*s,buf[32],sbuf[MAXSTRLEN]; + char c,*s,buf[MAXSTRLEN],sbuf[MAXSTRLEN]; char user[MAXSTRLEN],name[MAXSTRLEN],value[MAXSTRLEN]; static int recurse = 0; + /* cz277 - 150811 */ + Boolean append = FALSE; + CPLink curParam; if (recurse++ > 15){ HRError(5050,"ReadConfigFile: max #include depth reached (%s)",fname); @@ -421,55 +461,80 @@ static ReturnStatus ReadConfigFile(char *fname) } while (isspace((int) (c=GetCh(&src)))); } - if (c != '='){ - HRError(5050,"ReadConfigFile: = expected %s", - SrcPosition(src,buf)); - recurse--; - return(FAIL); - } - if (!ReadString(&src,value)){ - HRError(5050,"ReadConfig: parameter value expected %s", - SrcPosition(src,buf)); - recurse--; - return(FAIL); - } - e = FindConfEntry(hasUser?user:NULL,name); - if (e==NULL){ /* new param */ - e = (ConfigEntry *) malloc(sizeof(ConfigEntry)); - e->next = confList; confList = e; - e->param.seen = FALSE; - ++numConfigParms; - } - if (hasUser){ - e->param.user = (char *) malloc(strlen(user)+1); - strcpy(e->param.user,user); - }else - e->param.user = NULL; - e->param.name = (char *) malloc(strlen(name)+1); - strcpy(e->param.name,name); - if (strcmp(value,"T")==0 || strcmp(value,"TRUE")==0) { - e->param.kind = BoolCKind; e->param.val.b = TRUE; - } else - if (strcmp(value,"F")==0 || strcmp(value,"FALSE")==0) { - e->param.kind = BoolCKind; e->param.val.b = FALSE; + + /* added option to remove config setting */ + if (c == '~') { + RemoveConfEntry(hasUser?user:NULL,name); + } else { + /* cz277 - 150811 */ + if (c == '+') { + append = TRUE; + while (isspace((int) (c=GetCh(&src)))); + } + + if (c != '='){ + HRError(5050,"ReadConfigFile: = expected %s", + SrcPosition(src,buf)); + recurse--; + return(FAIL); + } + if (!ReadString(&src,value)){ + HRError(5050,"ReadConfig: parameter value expected %s", + SrcPosition(src,buf)); + recurse--; + return(FAIL); + } + e = FindConfEntry(hasUser?user:NULL,name); + if (e==NULL){ /* new param */ + e = (ConfigEntry *) malloc(sizeof(ConfigEntry)); + e->next = confList; confList = e; + e->param.seen = FALSE; + ++numConfigParms; + /* cz277 - 150811 */ + e->param.append = NULL; + } + if (hasUser){ + e->param.user = (char *) malloc(strlen(user)+1); + strcpy(e->param.user,user); + }else + e->param.user = NULL; + /* cz277 - 150811 */ + curParam = &e->param; + if (append) { + while (curParam->append != NULL) + curParam = curParam->append; + /*curParam->append = (CPLink) New(&gcheap, sizeof(ConfParam));*/ + curParam->append = (CPLink) malloc(sizeof(ConfParam)); + curParam = curParam->append; + curParam->append = NULL; + } + + curParam->name = (char *) malloc(strlen(name)+1); + strcpy(curParam->name,name); + if (strcmp(value,"T")==0 || strcmp(value,"TRUE")==0) { + curParam->kind = BoolCKind; curParam->val.b = TRUE; } else - if (NumHead(value)){ - x = strtod(value,&s); - if (s==NULL || *s == '\0'){ - if (strchr(value,'.') == NULL){ - e->param.kind = IntCKind; - e->param.val.i = strtol(value,NULL,0); - }else{ - e->param.kind = FltCKind; - e->param.val.f = x; + if (strcmp(value,"F")==0 || strcmp(value,"FALSE")==0) { + curParam->kind = BoolCKind; curParam->val.b = FALSE; + } else + if (NumHead(value)){ + x = strtod(value,&s); + if (s==NULL || *s == '\0'){ + if (strchr(value,'.') == NULL){ + curParam->kind = IntCKind; + curParam->val.i = strtol(value,NULL,0); + }else{ + curParam->kind = FltCKind; + curParam->val.f = x; + } } + } else { + curParam->kind = StrCKind; + curParam->val.s = (char *) malloc(strlen(value)+1); + strcpy(curParam->val.s,value); } - } else { - e->param.kind = StrCKind; - e->param.val.s = (char *) malloc(strlen(value)+1); - strcpy(e->param.val.s,value); - } - /* skip comments and parse #include */ + /* skip comments and parse #include */ + } while (ParseComment(&src,name)!=NULL) { PathOf(name,sbuf); if (*sbuf=='\0') PathOf(fname,sbuf); @@ -481,7 +546,10 @@ static ReturnStatus ReadConfigFile(char *fname) } hasUser=FALSE; gotParam = ReadConfName(&src,name); + /* cz277 - 150811 */ + append = FALSE; } + recurse--; return(SUCCESS); } @@ -490,6 +558,8 @@ static ReturnStatus ReadConfigFile(char *fname) void PrintConfig(void) { ConfigEntry *e; + /* cz277 - 150811 */ + CPLink curParam; printf("\n"); if (numConfigParms==0) @@ -507,6 +577,19 @@ void PrintConfig(void) case FltCKind: printf("%16f",e->param.val.f); break; } printf("\n"); + /* cz277 - 150811 */ + curParam = e->param.append; + while (curParam != NULL) { + printf("%c %-14s +%-14s ", (curParam->seen? ' ': '#'), curParam->user==NULL? "" : curParam->user, curParam->name); + switch (curParam->kind) { + case StrCKind: printf("%16s", curParam->val.s); break; + case BoolCKind: printf("%16s", curParam->val.b? "TRUE": "FALSE"); break; + case IntCKind: printf("%16d", curParam->val.i); break; + case FltCKind: printf("%16f", curParam->val.f); break; + } + curParam = curParam->append; + printf("\n"); + } } } printf("\n"); @@ -550,18 +633,17 @@ int GetConfig(char *user, Boolean incGlob, ConfParam **list, int max) /* FindConfParm: return index of conf parameter with given name and kind*/ static int FindConfParm(ConfParam **list,int size,char *name,ConfKind kind) { - int i; + int i; - for (i=0; iname,name)==0){ - if (kind != AnyCKind && list[i]->kind != kind && - !(list[i]->kind==IntCKind && kind==FltCKind)) - HError(5072,"FindConfParm: %s is %s but should be type %s", - name,cfkmap[list[i]->kind],cfkmap[kind]); - list[i]->seen=TRUE; - return i; - } - return -1; + for (i = 0; i < size; i++) { + if (strcmp(list[i]->name, name) == 0) { + if (kind != AnyCKind && list[i]->kind != kind && !(list[i]->kind == IntCKind && kind == FltCKind)) + HError(5072,"FindConfParm: %s is %s but should be type %s", name, cfkmap[list[i]->kind], cfkmap[kind]); + list[i]->seen = TRUE; + return i; + } + } + return -1; } /* EXPORT->HasConfParm: true if parameter exists with given name */ @@ -582,6 +664,17 @@ Boolean GetConfStr(ConfParam **list,int size,char *name,char *str) return FALSE; } +/* cz277 - ANN */ +Boolean GetConfAny(ConfParam **list, int size, char *name, ConfParam **item) +{ + int i; + if ((i = FindConfParm(list, size, name, AnyCKind)) != -1) { + *item = list[i]; + return TRUE; + } + return FALSE; +} + /* EXPORT->GetConfBool: return Boolean parameter with given name */ Boolean GetConfBool(ConfParam **list,int size,char *name, Boolean *b) { @@ -618,6 +711,61 @@ Boolean GetConfFlt(ConfParam **list,int size,char *name, double *fval) return FALSE; } +/* cz277 - ANN */ +/*Boolean GetConfIntVecList(ConfParam **list, int size, char *name, IntVec *intVecList) { + ConfParam *cpVal; + + return TRUE; +}*/ + +/* cz277 - ANN */ +/*Boolean GetConfVectorList(ConfParam **list, int size, char *name, Vector *vectorList) { + ConfParam *cpVal; + int i, j, nVec = 1; + char buf[MAXSTRLEN], *charPtr, *commPtr; + + GetConfAny(list, size, name, &cpVal); + if (cpVal->kind == FltCKind) { + vectorList = New(&gcheap, sizeof(Vector) * (nVec + 1)); + vectorList[0] = CreateVector(&gcheap, 1); + vectorList[0][1] = nVec; + vectorList[1] = CreateVector(&gcheap, 1); + vectorList[1][1] = cpVal->val.f; + } + else if (cpVal->kind == StrCKind) { + strcpy(buf, cpVal->val.s); + charPtr = strtok(buf, ";"); + while (charPtr != NULL) { + ++nVec; + charPtr = strtok(NULL, ";"); + } + vectorList = New(&gcheap, sizeof(Vector) * (nVec + 1)); + vectorList[0] = CreateVector(&gcheap, 1); + charPtr = strtok(buf, ";"); + for (i = 1, j = 0; i <= nVec; ++i) { + *charPtr = '\0'; + commPtr = strtok(charPtr + 1, ","); + while (commPtr != NULL) { + ++j; + commPtr = strtok(NULL, ","); + } + vectorList[i] = CreateVector(&gcheap, j); + j = 1; + commPtr = strtok(charPtr + 1, ","); + while (commPtr != NULL) { + vectorList[i][j++] = (float) atof(commPtr); + commPtr = strtok(NULL, ","); + } + *charPtr = ';'; + charPtr = strtok(NULL, ";"); + } + } + else { + return FALSE; + } + return TRUE; +}*/ + /* ------------------ Argument Processing -------------------- */ @@ -651,11 +799,16 @@ static char *defargs[2]={ "", "" }; static char **arglist=defargs;/* actual arg list */ static FILE *script = NULL; /* script file if any */ static int scriptcount = 0; /* num words in script */ -static char scriptBuf[256]; /* buffer for current script arg */ +static char scriptBuf[MAXSTRLEN]; /* buffer for current script arg */ static Boolean scriptBufLoaded = FALSE; static Boolean wasQuoted; /* true if next arg was quoted */ static ConfParam *cParm[MAXGLOBS]; /* config parameters */ static int nParm = 0; +/* cz277 - ANN */ +static FILE *scriptTr = NULL; /* script file handler for train set cache */ +static int scriptTrCnt = 0; /* number of words in the train script */ +static FILE *scriptCV = NULL; /* script file handler for CV set cache */ +static int scriptCVCnt = 0; /* number of words in the CV script */ /* ScriptWord: return next word from script */ static char * ScriptWord(void) @@ -686,7 +839,54 @@ static char * ScriptWord(void) scriptBufLoaded = TRUE; return scriptBuf; } - + +/* cz277 - ANN */ +/* ScriptWord(void) for cache script */ +char *GetNextScpWord(FILE *script, char *scriptBuf) +{ + int ch, qch, i; + char *extBuf; + + i = 0; + ch = ' '; + while (isspace(ch)) { + ch = fgetc(script); + } + if (ch == EOF) { + return NULL; + } + if (ch == '\'' || ch == '"') { + qch = ch; + ch = fgetc(script); + while (ch != qch && ch != EOF) { + scriptBuf[i++] = ch; + ch = fgetc(script); + } + if (ch == EOF) { + HError(5051, "GetNextScpWord: Closing quote missing in script file"); + } + } + else { + do { + scriptBuf[i++] = ch; + ch = fgetc(script); + } while (!isspace(ch) && ch != EOF); + } + scriptBuf[i] = '\0'; + if (extendedFileNames) { + extBuf = RegisterExtFileName(scriptBuf); + strcpy(scriptBuf, extBuf); + } + return scriptBuf; +} + +/* cz277 - ANN */ +/* Get train set script file handler along with its length */ +FILE *GetTrainScript(int *scriptCnt) { + *scriptCnt = scriptTrCnt; + return scriptTr; +} + /* GetNextArg: from either command line or script file */ static char * GetNextArg(Boolean step) { @@ -862,15 +1062,36 @@ static char *CheckFn(char *fn); ReturnStatus SetScriptFile(char *fn) { - CheckFn(fn); - if ((script = fopen(fn,"r")) == NULL){ /* Don't care if text/binary */ - HRError(5010,"SetScriptFile: Cannot open script file %s",fn); - return(FAIL); - } - while (ScriptWord() != NULL) ++scriptcount; - rewind(script); - scriptBufLoaded = FALSE; - return(SUCCESS); + CheckFn(fn); + /* cz277 - ANN */ + if (((script = fopen(fn, "r")) == NULL) || ((scriptTr = fopen(fn, "r")) == NULL)) { /* Don't care if text/binary */ + HRError(5010, "SetScriptFile: Cannot open script file %s", fn); + return (FAIL); + } + while (ScriptWord() != NULL) + ++scriptcount; + /* cz277 - ANN */ + scriptTrCnt = scriptcount; + + rewind(script); + scriptBufLoaded = FALSE; + return (SUCCESS); +} + +/* cz277 - ANN */ +ReturnStatus SetScriptCVFile(char *fn) { + char buf[MAXSTRLEN]; + + CheckFn(fn); + if ((scriptCV = fopen(fn, "r")) == NULL) { + HRError(5010, "SetScriptCVFile: Cannot open script file %s for CV set", fn); + return FAIL; + } + while (GetNextScpWord(scriptCV, buf) != NULL) { + ++scriptCVCnt; + } + rewind(scriptCV); + return SUCCESS; } /* -------------------- Input Files/Pipes -------------------- */ @@ -905,7 +1126,7 @@ static Boolean FilterSet(IOFilter filter, char *s) void SubstFName(char *fname, char *s) { char *p; - char buf[1028]; + char buf[MAXSTRLEN]; while ((p=strchr(s,'$')) != NULL){ *p = '\0'; ++p; @@ -1486,8 +1707,11 @@ Boolean KeyPressed(int tWait) fflush(stdout); ioctl(0,FIONREAD,&numchars); if ( numchars > 0){ - read(0, c, 1); + if(read(0, c, 1)<0) { + HError(-5013,"Failed to read next character"); + }else{ rtn=TRUE; + } } } #endif @@ -1725,7 +1949,7 @@ char * PathOf(char *fn, char *s) /* EXPORT->ExtnOf: extension part of fn */ char * ExtnOf(char *fn, char *s) { - char *t,buf[100]; + char *t,buf[MAXSTRLEN]; NameOf(fn,buf); t = strrchr(buf,'.'); @@ -1900,87 +2124,108 @@ char *RetrieveCommandLine(void) copied after processing -A/-B/-C/-S/-V. */ ReturnStatus InitShell(int argc, char *argv[], char *ver, char *sccs) { - char *fn; - int i,j; - Boolean b; - - argcount = 1; arglist = (char **) malloc(argc*sizeof(char *)); - arglist[0] = argv[0]; - Register(ver,sccs); - Register(hshell_version,hshell_vc_id); - /* read default configuration parameter file, if any */ - if ((fn=getenv("HCONFIG")) != NULL){ - if(ReadConfigFile(fn)= argc){ - HRError(5020,"InitShell: Config file name expected"); - return(FAIL); + vaxOrder = IsVAXOrder(); + + /* copy arg list and process -C and/or -S options */ + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "-A") == 0) { + for (j = 0; j < argc; j++) { + printf("%s ", argv[j]); } - if(ReadConfigFile(argv[i])= argc) { + HRError(5020, "InitShell: Config file name expected"); + return (FAIL); } - } else - if (strcmp(argv[i],"-S") == 0){ - if (++i >= argc){ - HRError(5020,"InitShell: Script file name expected"); - return(FAIL); - } - if(SetScriptFile(argv[i])0) { - if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; - if (GetConfBool(cParm,nParm,"NONUMESCAPES",&b)) noNumEscapes = b; - if (GetConfBool(cParm,nParm,"ABORTONERR",&b)) abortOnError = b; - if (GetConfBool(cParm,nParm,"NATURALREADORDER",&b)) natReadOrder = b; - if (GetConfBool(cParm,nParm,"NATURALWRITEORDER",&b)) natWriteOrder = b; - if (GetConfBool(cParm,nParm,"EXTENDFILENAMES",&b)) extendedFileNames = b; - if (GetConfInt(cParm,nParm,"MAXTRYOPEN",&i)) { - maxTry = i; - if (maxTry<1 || maxTry>3){ - HRError(5073,"InitShell: MAXTRYOPEN out of range (%d)",maxTry); - maxTry=1; - } - } - } + if (ReadConfigFile(argv[i]) < SUCCESS) { + HRError(5020, "InitShell: ReadConfigFile failed on file %s", argv[i]); + return (FAIL); + } + } + else if (strcmp(argv[i], "-S") == 0) { + if (++i >= argc) { + HRError(5020, "InitShell: Script file name expected"); + return (FAIL); + } + if (SetScriptFile(argv[i]) < SUCCESS) { + HRError(5020,"InitShell: SetScriptFile failed on file %s", argv[i]); + return (FAIL); + } + } + /* cz277 - ANN */ + /*else if (strcmp(argv[i], "-SCV") == 0) { + if (++i >= argc) { + HRError(5020, "InitShell: Script file name for CV set expected"); + return FAIL; + }if (SetScriptCVFile(argv[i]) < SUCCESS) { + HRError(5020, "InitShell: SetScriptCVFile failed on file %s", argv[i]); + return FAIL; + } + }*/ + else if (strcmp(argv[i], "-V") == 0) { + printVersionInfo = TRUE; + infoPrinted = TRUE; + } + else if (strcmp(argv[i], "-D") == 0) { + showConfig = TRUE; + infoPrinted = TRUE; + } + else { + arglist[argcount++] = argv[i]; + } + } + if (showConfig) { + PrintConfig(); + } + /* process this module's config params */ + nParm = GetConfig("HSHELL", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &i)) + trace = i; + if (GetConfBool(cParm, nParm, "NONUMESCAPES", &b)) + noNumEscapes = b; + if (GetConfBool(cParm, nParm, "ABORTONERR", &b)) + abortOnError = b; + if (GetConfBool(cParm, nParm, "NATURALREADORDER", &b)) + natReadOrder = b; + if (GetConfBool(cParm, nParm, "NATURALWRITEORDER", &b)) + natWriteOrder = b; + if (GetConfBool(cParm, nParm, "EXTENDFILENAMES", &b)) + extendedFileNames = b; + if (GetConfInt(cParm, nParm, "MAXTRYOPEN", &i)) { + maxTry = i; + if (maxTry < 1 || maxTry > 3){ + HRError(5073, "InitShell: MAXTRYOPEN out of range (%d)", maxTry); + maxTry = 1; + } + } + } - return(SUCCESS); } @@ -2030,4 +2275,37 @@ void PrintStdOpts(char *opt) printf(" -X ext Set input label (or net) file ext lab\n"); } +/* cz277 - ANN */ +void SetupDir(char *targetDir) { + if (access(targetDir, 0)) { + #ifdef WIN32 + _mkdir(targetDir); + #else + mkdir(targetDir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH); + #endif + } +} + +char *CatDirs(char *baseDir, char *extDir, char *newDir) { + int len; + + if (baseDir != NULL) { + strcpy(newDir, baseDir); + len = strlen(newDir); + if (len > 0 && newDir[len - 1] != PATHCHAR) { + newDir[len] = PATHCHAR; + newDir[len + 1] = '\0'; + } + } + if (extDir != NULL) { + strcat(newDir, extDir); + len = strlen(newDir); + if (len > 0 && newDir[len - 1] != PATHCHAR) { + newDir[len] = PATHCHAR; + newDir[len + 1] = '\0'; + } + } + return newDir; +} + /* -------------------------- End of HShell.c ----------------------------- */ diff --git a/HTKLib/HShell.h b/HTKLib/HShell.h old mode 100644 new mode 100755 index 52f551e..d4efd38 --- a/HTKLib/HShell.h +++ b/HTKLib/HShell.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HShell.h: Interface to the Shell */ +/* File: HShell.h Interface to the Shell */ /* ----------------------------------------------------------- */ -/* !HVER!HShell: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HShell: 3.5.0 [CUED 12/10/15] */ #ifndef _HSHELL_H_ #define _HSHELL_H_ @@ -72,9 +75,9 @@ extern "C" { #endif -#define MAXSTRLEN 256 /* max length of a string */ +#define MAXSTRLEN 2048 /* max length of a string */ #define MAXFNAMELEN 1034 /* max length of a file name */ -#define SMAX 5 /* max num data streams + 1 */ +#define SMAX 128 /* max num data streams + 1 */ #define MAXGLOBS 256 /* max num global config parms */ #define SING_QUOTE '\'' /* character used as quote */ @@ -84,11 +87,20 @@ extern "C" { #ifdef UNIX #include #include +/* cz277 - ANN */ +#include #endif #undef FALSE #undef TRUE +/*#ifdef DOUBLEANN +typedef double NFloat; +#else +typedef float NFloat; +#endif +*/ + typedef int int32; typedef enum {FAIL=-1, SUCCESS=0} ReturnStatus; @@ -154,12 +166,15 @@ typedef union { /* union of possible config param kinds */ Boolean b; }ConfVal; -typedef struct { /* Configuration Parameter */ +/* cz277 - 150811 */ +typedef struct _ConfParam *CPLink; +typedef struct _ConfParam { /* Configuration Parameter */ char *user; /* name of module/tool to use this param */ char *name; /* name of param - upper case always */ ConfKind kind; /* kind of config param value */ ConfVal val; /* value */ Boolean seen; /* set true when read by any module */ + CPLink append; /* cz277 - 150811 */ } ConfParam; @@ -548,6 +563,16 @@ char *RetrieveCommandLine(void); actual command line used to run the program at hand. */ +/* cz277 - ANN */ +char *GetNextScpWord(FILE *script, char *scriptBuf); +FILE *GetTrainScript(int *scriptCnt); +Boolean GetConfAny(ConfParam **list, int size, char *name, ConfParam **item); +char *CatDirs(char *baseDir, char *extDir, char *newDir); +void SetupDir(char *targetDir); +/*Boolean GetConfVectorList(ConfParam **list, int size, char *name, Vector *vectorList) +Boolean GetConfIntVecList(ConfParam **list, int size, char *name, IntVec *intVecList);*/ + + #ifdef __cplusplus } #endif diff --git a/HTKLib/HSigP.c b/HTKLib/HSigP.c old mode 100644 new mode 100755 index 7fb2464..812a0e7 --- a/HTKLib/HSigP.c +++ b/HTKLib/HSigP.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSigP.c: Signal Processing Routines */ +/* File: HSigP.c Signal processing routines */ /* ----------------------------------------------------------- */ -char *hsigp_version = "!HVER!HSigP: 3.4.1 [CUED 12/03/09]"; +char *hsigp_version = "!HVER!HSigP: 3.5.0 [CUED 12/10/15]"; char *hsigp_vc_id = "$Id: HSigP.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HShell.h" /* HTK Libraries */ diff --git a/HTKLib/HSigP.h b/HTKLib/HSigP.h old mode 100644 new mode 100755 index 854785c..183050a --- a/HTKLib/HSigP.h +++ b/HTKLib/HSigP.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSigP.h: Signal Processing Routines */ +/* File: HSigP.h Signal processing routines */ /* ----------------------------------------------------------- */ -/* !HVER!HSigP: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HSigP: 3.5.0 [CUED 12/10/15] */ #ifndef _HSIGP_H_ #define _HSIGP_H_ diff --git a/HTKLib/HTrain.c b/HTKLib/HTrain.c old mode 100644 new mode 100755 index 84166ab..7d4719c --- a/HTKLib/HTrain.c +++ b/HTKLib/HTrain.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HTrain.c HMM Training Support Routines */ +/* File: HTrain.c HMM training support routines */ /* ----------------------------------------------------------- */ -char *htrain_version = "!HVER!HTrain: 3.4.1 [CUED 12/03/09]"; +char *htrain_version = "!HVER!HTrain: 3.5.0 [CUED 12/10/15]"; char *htrain_vc_id = "$Id: HTrain.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HShell.h" @@ -44,6 +47,7 @@ char *htrain_vc_id = "$Id: HTrain.c,v 1.1.1.1 2006/10/11 09:54:58 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HTrain.h" @@ -91,6 +95,11 @@ void InitTrain(void) } } +Boolean LoadDumpAccBinary() +{ + return ldBinary; +} + /* -------------------- Generic Sequence Type ------------------- */ /* @@ -714,7 +723,7 @@ static void InitClustering(MemHeap *x, Sequence vpool, int nc, { int i,numClust; Vector v; - Covariance cov; + Covariance cov={.var=NULL,.inv=NULL,.xform=NULL}; nItems = vpool->nItems; if (nItems < nc) @@ -1628,7 +1637,7 @@ Source LoadAccsParallel(HMMSet *hset, char *fname, UPDSet uFlags, int index) Source src; HLink hmm; HMMScanState hss; - int size,negs,m,s; + int size,m,s,negs; MixPDF* mp; if (trace & T_ALD) @@ -1641,7 +1650,7 @@ Source LoadAccsParallel(HMMSet *hset, char *fname, UPDSet uFlags, int index) hmm = hss.hmm; CheckPName(&src,hss.mac->id->name); ReadInt(&src,&negs,1,ldBinary); - negs += (int)hmm->hook; hmm->hook = (void *)negs; + negs += (int)(unsigned long int)hmm->hook; hmm->hook = (void *)(unsigned long int)negs; while (GoNextState(&hss,TRUE)) { while (GoNextStream(&hss,TRUE)) { if ((uFlags&UPSEMIT) && (strmProj)) size = hset->vecSize; @@ -1713,11 +1722,10 @@ void RestoreAccs(HMMSet *hset){ RestoreAccsParallel(hset,0); } void RestoreAccsParallel(HMMSet *hset, int index) { HMMScanState hss; - int s,m,size; + int s,m; if(hset->hsKind==TIEDHS){ for (s=1; s<=hset->swidth[0]; s++){ - size = hset->swidth[s]; for (m=1;m<=hset->tmRecs[s].nMix; m++) RestorePDF(hset->tmRecs[s].mixes[m], index); } diff --git a/HTKLib/HTrain.h b/HTKLib/HTrain.h old mode 100644 new mode 100755 index f9e6d35..a93c203 --- a/HTKLib/HTrain.h +++ b/HTKLib/HTrain.h @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2002-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HTrain.h HMM Training Support Routines */ +/* File: HTrain.h HMM training support routines */ /* ----------------------------------------------------------- */ -/* !HVER!HTrain: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HTrain: 3.5.0 [CUED 12/10/15] */ #ifndef _HTRAIN_H_ #define _HTRAIN_H_ @@ -41,7 +44,7 @@ extern "C" { #endif -enum _UPDSet{UPMEANS=1,UPVARS=2,UPTRANS=4,UPMIXES=8,UPXFORM=16,UPMAP=32,UPSEMIT=64}; +enum _UPDSet{UPMEANS=1,UPVARS=2,UPTRANS=4,UPMIXES=8,UPXFORM=16,UPMAP=32,UPSEMIT=64, UPTARGETPEN = 128, UPANNPARAM = 256}; /* cz277 - ANN */ typedef enum _UPDSet UPDSet; /* Win32 modification */ @@ -54,6 +57,11 @@ void InitTrain(void); Initialise the module */ +Boolean LoadDumpAccBinary(); +/* + Use binary/text accumulators +*/ + /* ------------------ Generic Sequence Type --------------- */ typedef struct _ItemBlock *IBLink; diff --git a/HTKLib/HUtil.c b/HTKLib/HUtil.c old mode 100644 new mode 100755 index 8383828..1518d21 --- a/HTKLib/HUtil.c +++ b/HTKLib/HUtil.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HUtil.c HMM utility routines */ +/* File: HUtil.c HMM utility routines */ /* ----------------------------------------------------------- */ -char *hutil_version = "!HVER!HUtil: 3.4.1 [CUED 12/03/09]"; -char *hutil_vc_id = "$Id: HUtil.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hutil_version = "!HVER!HUtil: 3.5.0 [CUED 12/10/15]"; +char *hutil_vc_id = "$Id: HUtil.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -44,6 +47,7 @@ char *hutil_vc_id = "$Id: HUtil.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" @@ -250,6 +254,7 @@ void NewHMMScan(HMMSet *hset, HMMScanState *hss) hss->isCont = (hset->hsKind == PLAINHS) || (hset->hsKind == SHAREDHS); hss->h = -1; hss->mac=NULL; + if (!GoNextHMM(hss)) HError(7220,"NewHMMScan: cannot find any physical HMMs to scan"); } @@ -416,7 +421,7 @@ void ConvDiagC(HMMSet *hset, Boolean convData) SVector v; int k; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->hsKind == HYBRIDHS) /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) { @@ -447,7 +452,7 @@ void ForceDiagC(HMMSet *hset) SVector v; int k; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS) /*|| hset->hsKind == HYBRIDHS)*/ /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) { @@ -475,7 +480,7 @@ void ConvLogWt(HMMSet *hset) { HMMScanState hss; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == TRUE) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == TRUE || hset->hsKind == HYBRIDHS) /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) @@ -489,7 +494,7 @@ void ConvExpWt(HMMSet *hset) { HMMScanState hss; - if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == FALSE) + if (hset->hsKind == DISCRETEHS || hset->hsKind == TIEDHS || hset->logWt == FALSE)/* || hset->hsKind == HYBRIDHS)*/ /* cz277 - ANN */ return; NewHMMScan(hset, &hss); while (GoNextMix(&hss,FALSE)) @@ -616,7 +621,7 @@ void SetSet(IntSet s) /* -------------------- Item List Parser -------------------- */ -#define PAT_LEN 1024 +#define PAT_LEN 8192 static Source *source; /* Current source for item list */ static int ch; /* Current character from source */ @@ -701,7 +706,7 @@ static char *GetAlpha(char *s) /* GetInt: read integer coerced given range */ static int GetInt(int lo, int hi) { - char buf[20]; + char buf[MAXSTRLEN]; int i = 0, num; SkipSpaces(); @@ -732,7 +737,7 @@ static char *keymap[] = { /* GetKey: get a keyword */ static Keyword GetKey(void) { - char buf[20]; + char buf[MAXSTRLEN]; int i = 0; Keyword k; @@ -1143,6 +1148,17 @@ Ptr GetMacroHook(MLink ml) Ptr hook; switch(ml->type) { + case 'F': + case 'L': + case 'N': + hook = NULL; + break; + case 'M': + hook = ((NMatBundle *)(ml->structure))->hook; + break; + case 'V': + hook = ((NVecBundle *)(ml->structure))->hook; + break; case 'l': /* HLink */ case 'h': /* HLink */ hook=((HLink)(ml->structure))->hook; break; @@ -1173,6 +1189,13 @@ Ptr GetMacroHook(MLink ml) void SetMacroHook(MLink ml,Ptr hook) { switch(ml->type) { + /* cap letters: ANN macro letters */ + case 'F': + case 'L': + case 'N': + break; + case 'M': ((NMatBundle *) ml->structure)->hook = hook; break; + case 'V': ((NVecBundle *) ml->structure)->hook = hook; break; case 'l': /* HLink */ case 'h': /* HLink */ ((HLink)(ml->structure))->hook=hook; break; @@ -1205,9 +1228,25 @@ void SetMacroHook(MLink ml,Ptr hook) /* EXPORT->GetMacroUse: Return value of use field for any macro */ int GetMacroUse(MLink ml) { - int use; + int use=-1; switch(ml->type) { + /* cap letters: ANN macro letters */ + case 'F': use = ((FeaMix *) (ml->structure))->nUse; break; + case 'L': use = ((LELink) (ml->structure))->nUse; break; + case 'N': use = ((ADLink) (ml->structure))->nUse; break; + case 'M': + if (((NMatBundle *) ml->structure)->kind == SIBK) + use = ((NMatBundle *) ml->structure)->nUse; + else + HError(9999, "GetMacroUse: Only valid for SI matrix bundle"); + break; + case 'V': + if (((NVecBundle *) ml->structure)->kind == SIBK) + use = ((NVecBundle *) ml->structure)->nUse; + else + HError(9999, "GetMacroUse: Only valid for SI vector bundle"); + break; case 'l': /* HLink */ case 'h': /* HLink */ use=((HLink)(ml->structure))->nUse; break; @@ -1235,6 +1274,7 @@ int GetMacroUse(MLink ml) use=-1; HError(7270,"GetMacroUse: Getting use of non-existant macro"); } + return(use); } @@ -1242,6 +1282,12 @@ int GetMacroUse(MLink ml) void SetMacroUse(MLink ml,int use) { switch(ml->type) { + /* cap letters: ANN macro letters */ + case 'F': ((FeaMix *) (ml->structure))->nUse = use; break; + case 'L': ((LELink) (ml->structure))->nUse = use; break; + case 'N': ((ADLink) (ml->structure))->nUse = use; break; + case 'M': ((NMatBundle *) ml->structure)->nUse = use; break; + case 'V': ((NVecBundle *) ml->structure)->nUse = use; break; case 'l': /* HLink */ case 'h': /* HLink */ ((HLink)(ml->structure))->nUse=use; break; diff --git a/HTKLib/HUtil.h b/HTKLib/HUtil.h old mode 100644 new mode 100755 index 8f03501..16a6756 --- a/HTKLib/HUtil.h +++ b/HTKLib/HUtil.h @@ -3,13 +3,29 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ @@ -19,7 +35,7 @@ /* File: HUtil.h HMM utility routines */ /* ----------------------------------------------------------- */ -/* !HVER!HUtil: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HUtil: 3.5.0 [CUED 12/10/15] */ #ifndef _HUTIL_H_ #define _HUTIL_H_ diff --git a/HTKLib/HVQ.c b/HTKLib/HVQ.c old mode 100644 new mode 100755 index ce37291..19122e7 --- a/HTKLib/HVQ.c +++ b/HTKLib/HVQ.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HVQ.c: Vector Quantisation */ +/* File: HVQ.c Vector quantisation */ /* ----------------------------------------------------------- */ -char *hvq_version = "!HVER!HVQ: 3.4.1 [CUED 12/03/09]"; +char *hvq_version = "!HVER!HVQ: 3.5.0 [CUED 12/10/15]"; char *hvq_vc_id = "$Id: HVQ.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HShell.h" @@ -166,7 +182,7 @@ static VQNode GetNode(Source *src, CovKind ck, short width) VQNode n; short vqidx,nid,lid,rid; Vector mean; - Covariance cov; + Covariance cov = {.var=NULL,.inv=NULL,.xform=NULL}; vqidx = GetVal(src,0,0,"VQ Index"); nid = GetVal(src,0,0,"Node Id"); diff --git a/HTKLib/HVQ.h b/HTKLib/HVQ.h old mode 100644 new mode 100755 index 504dc31..33f1431 --- a/HTKLib/HVQ.h +++ b/HTKLib/HVQ.h @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HVQ.h: Vector Quantisation */ +/* File: HVQ.h Vector quantisation */ /* ----------------------------------------------------------- */ -/* !HVER!HVQ: 3.4.1 [CUED 12/03/09] */ +/* !HVER!HVQ: 3.5.0 [CUED 12/10/15] */ /* This module provides a datatype VQTable which is used to represent diff --git a/HTKLib/HWave.c b/HTKLib/HWave.c old mode 100644 new mode 100755 index c628763..afa80d8 --- a/HTKLib/HWave.c +++ b/HTKLib/HWave.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HWave.c: Speech Wave File Input/Output */ +/* File: HWave.c Speech wave file input/output */ /* ----------------------------------------------------------- */ -char *hwave_version = "!HVER!HWave: 3.4.1 [CUED 12/03/09]"; -char *hwave_vc_id = "$Id: HWave.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hwave_version = "!HVER!HWave: 3.5.0 [CUED 12/10/15]"; +char *hwave_vc_id = "$Id: HWave.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -994,8 +997,8 @@ static long GetAIFFHeaderInfo(FILE *f, Wave w, InputAction *ia) int fn = sizeof fchunk; long sndStart = 0; /* start of sound chunk */ long fPtr; - CommonChunk1 ch1, commchunk1; - CommonChunk2 ch2, commchunk2; + CommonChunk1 ch1; + CommonChunk2 ch2, commchunk2 = {.nSamples=0,.sampSize=0}; int cn1 = 10; /* sizeof(long) + sizeof(long) + sizeof(short); */ int cn2 = 6; /* sizeof(long) + sizeof(short); */ Boolean hasCC=FALSE, hasSC=FALSE; @@ -1032,7 +1035,7 @@ static long GetAIFFHeaderInfo(FILE *f, Wave w, InputAction *ia) return -1; } if (ch1.id == ccid){ /* common chunk found */ - hasCC=TRUE; commchunk1=ch1;commchunk2=ch2; + hasCC=TRUE; commchunk2=ch2; } if (ch1.id == scid){ /* sound chunk found */ hasSC=TRUE; sndStart=fPtr; @@ -1059,14 +1062,23 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) if (MustSwap(VAXSO)) *ia = (InputAction) (*ia | DoBSWAP); - fread(magic, 4, 1, f); + if(fread(magic, 4, 1, f)!=1){ + HRError(6251,"Failed to read magic number"); + return -1; + } if (strncmp("RIFF", magic, 4)){ HRError(6251,"Input file is not in RIFF format"); return -1; } - fread(&lng, 4, 1, f); - fread(magic, 4, 1, f); + if(fread(&lng, 4, 1, f)!=1){ + HRError(6251,"Failed to read 1 object"); + return -1; + } + if(fread(magic, 4, 1, f)!=1){ + HRError(6251,"Failed to read magic number"); + return -1; + } if (strncmp("WAVE", magic, 4)){ HRError(6251,"Input file is not in WAVE format"); return -1; @@ -1078,13 +1090,22 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) HRError(6251,"No data portion in WAVE file"); return -1; } - fread(magic, 4, 1, f); - fread(&len, 4, 1, f); + if(fread(magic, 4, 1, f)!=1){ + HRError(6251,"Failed to read magic number"); + return -1; + } + if(fread(&len, 4, 1, f)!=1){ + HRError(6251,"Failed to read length"); + return -1; + } if (*ia & DoBSWAP) SwapInt32(&len); /* Check for data chunk */ if (strncmp("data", magic, 4)==0) break; if (strncmp("fmt ", magic, 4)==0) { - fread(&type, 2, 1, f); + if(fread(&type, 2, 1, f)!=1){ + HRError(6251,"Failed to read type"); + return -1; + } if (*ia & DoBSWAP) SwapShort(&type); if (type != WAVE_FORMAT_PCM && type!=WAVE_FORMAT_MULAW && type!=WAVE_FORMAT_ALAW){ HRError(6251,"Only standard PCM, mu-law & a-law supported"); @@ -1094,7 +1115,10 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) *ia = (InputAction) (*ia | (DoMULAW|DoCVT)); else if(type==WAVE_FORMAT_ALAW) *ia = (InputAction) (*ia | (DoALAW|DoCVT)); - fread(&chans, 2, 1, f); /* Number of Channels */ + if(fread(&chans, 2, 1, f)!=1){ /* Number of Channels */ + HRError(6251,"Failed to read num channels"); + return -1; + } if (*ia & DoBSWAP) SwapShort(&chans); if (chans!=1 && chans!=2){ HRError(6251,"Neither mono nor stereo!"); @@ -1102,12 +1126,24 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) } if(chans==2) *ia = (InputAction) (*ia | (DoSTEREO|DoCVT)); - fread(&lng, 4, 1, f); /* Sample Rate */ + if(fread(&lng, 4, 1, f)!=1){ /* Sample Rate */ + HRError(6251,"Failed to read sample rate"); + return -1; + } if (*ia & DoBSWAP) SwapInt32(&lng); w->sampPeriod = 1.0E7 / (float)lng; - fread(&lng, 4, 1, f); /* Average bytes/second */ - fread(&sht, 2, 1, f); /* Block align */ - fread(&sampSize, 2, 1, f); /* Data size */ + if(fread(&lng, 4, 1, f)!=1){ /* Average bytes/second */ + HRError(6251,"Failed to read avg bytes/sec"); + return -1; + } + if(fread(&sht, 2, 1, f)!=1){ /* Block align */ + HRError(6251,"Failed to read block align"); + return -1; + } + if(fread(&sampSize, 2, 1, f)!=1){ /* Data size */ + HRError(6251,"Failed to read data size"); + return -1; + } if (*ia & DoBSWAP) SwapShort(&sampSize); if (sampSize != 16 && sampSize!=8){ HRError(6251,"Only 8/16 bit audio supported"); @@ -1122,7 +1158,12 @@ static long GetWAVHeaderInfo(FILE *f, Wave w, InputAction *ia) len -= 16; } /* Skip chunk */ - for (; len>0; len--) fread(&c,1,1,f); + for (; len>0; len--) { + if(fread(&c,1,1,f)!=1){ + HRError(6251,"Failed to read skipped object"); + return -1; + } + } } numBytes=len; w->nSamples = numBytes / (sampSize/8); @@ -1206,7 +1247,7 @@ void RetrieveESIGFieldList(HFieldList *fList) /* EXPORT->ReadEsignalHeader: Get header from Esignal file; return FALSE in case of failure. */ -Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, short *kind, Boolean *bSwap, long *hdrS, Boolean isPipe) { @@ -1302,7 +1343,8 @@ static long GetESIGHeaderInfo(FILE *f, Wave w, InputAction *ia) { int nsamp; long nSamp, sampP; - short sampSize, kind; + unsigned short sampSize; + short kind; long hdrS; Boolean bSwap; @@ -1339,7 +1381,7 @@ static long GetESIGHeaderInfo(FILE *f, Wave w, InputAction *ia) void PutESIGHeaderInfo(FILE *f, Wave w) { FieldSpec *field, *field1; - FieldList inList, outList=NULL; + FieldList inList=NULL, outList=NULL; int len, i; /* Create header items first */ @@ -1400,16 +1442,18 @@ void PutESIGHeaderInfo(FILE *f, Wave w) typedef struct { /* HTK File Header */ int32 nSamples; int32 sampPeriod; - short sampSize; + /*short sampSize;*/ + unsigned short sampSize; /* cz277 - cbu */ short sampKind; } HTKhdr; /* EXPORT ReadHTKHeader: get header from HTK file, return false not HTK */ -Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, /* cz277 - cbu */ short *kind, Boolean *bSwap) { HTKhdr hdr; int n = sizeof hdr; + short s; if (fread(&hdr, 1, n, f) != n) return FALSE; @@ -1421,12 +1465,17 @@ Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, short *sampS, if (*bSwap){ SwapInt32(&hdr.nSamples); SwapInt32(&hdr.sampPeriod); - SwapShort(&hdr.sampSize); + s=hdr.sampSize; + SwapShort(&s); + hdr.sampSize=(unsigned short)s; SwapShort(&hdr.sampKind); } - if (hdr.sampSize <= 0 || hdr.sampSize > 5000 || hdr.nSamples <= 0 || - hdr.sampPeriod <= 0 || hdr.sampPeriod > 1000000) - return FALSE; + /*if (hdr.sampSize <= 0 || hdr.sampSize > 5000 || hdr.nSamples <= 0 || + hdr.sampPeriod <= 0 || hdr.sampPeriod > 1000000) {*/ + /* cz277 - cbu */ + if (hdr.sampSize == 0 || hdr.nSamples <= 0 || hdr.sampPeriod <= 0 || hdr.sampPeriod > 1000000) { + return FALSE; + } *nSamp = hdr.nSamples; *sampP = hdr.sampPeriod; *sampS = hdr.sampSize; *kind = hdr.sampKind; return TRUE; @@ -1436,7 +1485,10 @@ Boolean ReadHTKHeader(FILE *f, long *nSamp, long *sampP, short *sampS, static long GetHTKHeaderInfo(FILE *f, Wave w, InputAction *ia) { Boolean bSwap; - short kind,size; + /*short kind,size;*/ + short kind; + /* cz277 - cbu */ + unsigned short size; long sp; if (!ReadHTKHeader(f,&(w->nSamples),&sp, &size, &kind, &bSwap)){ @@ -1459,20 +1511,23 @@ static long GetHTKHeaderInfo(FILE *f, Wave w, InputAction *ia) } /* EXPORT->WriteHTKHeader: Write header info to HTK file f */ -void WriteHTKHeader(FILE *f, long nSamp, long sampP, short sampS, +void WriteHTKHeader(FILE *f, long nSamp, long sampP, unsigned short sampS, /* cz277 - cbu */ short kind, Boolean *bSwap) { HTKhdr hdr; int n = sizeof hdr; + short s; hdr.nSamples = nSamp; - hdr.sampSize = sampS; + hdr.sampSize = (unsigned short)sampS; hdr.sampKind = kind; hdr.sampPeriod = sampP; if (!natWriteOrder && vaxOrder){ SwapInt32(&hdr.nSamples); SwapInt32(&hdr.sampPeriod); - SwapShort(&hdr.sampSize); + s = (short)hdr.sampSize; + SwapShort(&s); + hdr.sampSize=s; SwapShort(&hdr.sampKind); if (bSwap!=NULL) *bSwap=TRUE; } diff --git a/HTKLib/HWave.h b/HTKLib/HWave.h old mode 100644 new mode 100755 index 96eade3..35d8730 --- a/HTKLib/HWave.h +++ b/HTKLib/HWave.h @@ -3,22 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HWave.h: Speech Waveform File Input */ +/* File: HWave.h Speech waveform file input */ /* ----------------------------------------------------------- */ -/* !HVER!HWave: 3.4.1 [CUED 12/03/09] */ + +/* !HVER!HWave: 3.5.0 [CUED 12/10/15] */ + /* Configuration Parameters: NSAMPLES - num samples in alien file input via a pipe @@ -147,7 +165,7 @@ FileFormat Str2Format(char *fmt); /* --------------------- HTK Header Routines --------------------- */ -Boolean ReadHTKHeader(FILE *f,long *nSamp,long *sampP,short *sampS, +Boolean ReadHTKHeader(FILE *f,long *nSamp,long *sampP,unsigned short *sampS, /* cz277 - cbu */ short *kind, Boolean *bSwap); /* Get header info from HTK file f, return false if apparently not @@ -156,7 +174,7 @@ Boolean ReadHTKHeader(FILE *f,long *nSamp,long *sampP,short *sampS, since it is not defined for HTK files) */ -void WriteHTKHeader(FILE *f, long nSamp, long sampP, short sampS, +void WriteHTKHeader(FILE *f, long nSamp, long sampP, unsigned short sampS, /* cz277 - cbu */ short kind, Boolean *bSwap); /* Write header info to HTK file f. @@ -172,7 +190,7 @@ void RetrieveESIGFieldList(HFieldList *fList); Retrieve the field list of an ESIG input file */ -Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, short *sampS, +Boolean ReadEsignalHeader(FILE *f, long *nSamp, long *sampP, unsigned short *sampS, short *kind, Boolean *bSwap, long *hdrS, Boolean isPipe); /* diff --git a/HTKLib/Makefile.in b/HTKLib/MakefileCPU old mode 100644 new mode 100755 similarity index 74% rename from HTKLib/Makefile.in rename to HTKLib/MakefileCPU index 0f8fa1c..08a322c --- a/HTKLib/Makefile.in +++ b/HTKLib/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,40 +17,42 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HTKLib/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include hlib = . HLIBS = ${exec_prefix}/lib/HTKLib.a -CC = @CC@ -CFLAGS := $(CFLAGS) @CFLAGS@ -I. -DPHNALG -RANLIB = @RANLIB@ -INSTALL= @INSTALL@ +CC = gcc +CFLAGS := $(CFLAGS) -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I. -DPHNALG +LDFLAGS = -lpthread -lm +RANLIB = ranlib +INSTALL= /usr/bin/install -c target = HTKLib.a -objects = @HGRAF@ esig_asc.o \ +objects = HGraf.o esig_asc.o \ esig_edr.o \ esignal.o \ esig_nat.o \ HAdapt.o \ + HANNet.o \ HArc.o \ HAudio.o \ HDict.o \ @@ -64,6 +66,7 @@ objects = @HGRAF@ esig_asc.o \ HMath.o \ HMem.o \ HModel.o \ + HNCache.o \ HNet.o \ HParm.o \ HRec.o \ @@ -72,14 +75,14 @@ objects = @HGRAF@ esig_asc.o \ HTrain.o \ HUtil.o \ HVQ.o \ - HWave.o \ - strarr.o + HWave.o -lvobjects = $(basename @HGRAF@).lv.o esig_asc.lv.o \ +lvobjects = $(basename HGraf.o).lv.o esig_asc.lv.o \ esig_edr.lv.o \ esignal.lv.o \ esig_nat.lv.o \ HAdapt.lv.o \ + HANNet.lv.o \ HArc.lv.o \ HAudio.lv.o \ HDict.lv.o \ @@ -93,6 +96,7 @@ lvobjects = $(basename @HGRAF@).lv.o esig_asc.lv.o \ HMath.lv.o \ HMem.lv.o \ HModel.lv.o \ + HNCache.lv.o \ HNet.lv.o \ HParm.lv.o \ HRec.lv.o \ @@ -101,8 +105,7 @@ lvobjects = $(basename @HGRAF@).lv.o esig_asc.lv.o \ HTrain.lv.o \ HUtil.lv.o \ HVQ.lv.o \ - HWave.lv.o \ - strarr.lv.o + HWave.lv.o all: HTKLib.a HTKLiblv.a diff --git a/HTKLib/MakefileMKL b/HTKLib/MakefileMKL new file mode 100755 index 0000000..866b37d --- /dev/null +++ b/HTKLib/MakefileMKL @@ -0,0 +1,145 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKLib/MakefileMKL +# ----------------------------------------------------------- +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +hlib = . +HLIBS = ${exec_prefix}/lib/HTKLib.a + +CC = icc +CFLAGS := $(CFLAGS) -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I. -DMKL -DPHNALG +LDFLAGS = -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.so /opt/intel/composerxe/lib/intel64/libiomp5.so -Wl,--end-group -lpthread -lm +RANLIB = ranlib +INSTALL= /usr/bin/install -c +target = HTKLib.a +objects = HGraf.o esig_asc.o \ + esig_edr.o \ + esignal.o \ + esig_nat.o \ + HAdapt.o \ + HANNet.o \ + HArc.o \ + HAudio.o \ + HDict.o \ + HExactMPE.o \ + HFB.o \ + HFBLat.o \ + HLabel.o \ + HLat.o \ + HLM.o \ + HMap.o \ + HMath.o \ + HMem.o \ + HModel.o \ + HNCache.o \ + HNet.o \ + HParm.o \ + HRec.o \ + HShell.o \ + HSigP.o \ + HTrain.o \ + HUtil.o \ + HVQ.o \ + HWave.o + +lvobjects = $(basename HGraf.o).lv.o esig_asc.lv.o \ + esig_edr.lv.o \ + esignal.lv.o \ + esig_nat.lv.o \ + HAdapt.lv.o \ + HANNet.lv.o \ + HArc.lv.o \ + HAudio.lv.o \ + HDict.lv.o \ + HExactMPE.lv.o \ + HFB.lv.o \ + HFBLat.lv.o \ + HLabel.lv.o \ + HLat.lv.o \ + HLM.lv.o \ + HMap.lv.o \ + HMath.lv.o \ + HMem.lv.o \ + HModel.lv.o \ + HNCache.lv.o \ + HNet.lv.o \ + HParm.lv.o \ + HRec.lv.o \ + HShell.lv.o \ + HSigP.lv.o \ + HTrain.lv.o \ + HUtil.lv.o \ + HVQ.lv.o \ + HWave.lv.o + +all: HTKLib.a HTKLiblv.a + +# This is the library used by HTKTools and HLMTools +HTKLib.a: $(objects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +# This version is used by HDecode (HTKLVRec) +HTKLiblv.a: $(lvobjects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +%.lv.o: %.c + $(CC) -DNO_LAT_LM $(CFLAGS) -c -o $@ $< + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(objects) $(lvobjects) HTKLib.a HTKLiblv.a + +cleanup: + -rm -f $(objects) $(lvobjects) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: HTKLib.a HTKLiblv.a mkinstalldir + $(INSTALL) -m 755 HTKLib.a HTKLiblv.a $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HTKLib/MakefileNVCC b/HTKLib/MakefileNVCC new file mode 100755 index 0000000..a988585 --- /dev/null +++ b/HTKLib/MakefileNVCC @@ -0,0 +1,153 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKLib/MakefileNVCC +# ----------------------------------------------------------- +SHELL = /bin/sh +srcdir = . +top_srcdir = .. + +prefix = . +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +hlib = . +HLIBS = ${exec_prefix}/lib/HTKLib.a + +CC = /usr/local/cuda/bin/nvcc +CFLAGS := -m64 -ccbin gcc -gencode arch=compute_30,code=sm_30 -D'ARCH="x86_64"' -DCUDA +LDFLAGS = -L/usr/local/cuda/lib -Wl,-rpath=/usr/local/cuda/lib -L/usr/local/cuda/lib64 -Wl,-rpath=/usr/local/cuda/lib64 -lcblas -lpthread +RANLIB = ranlib +INSTALL= /usr/bin/install -c +target = HTKLib.a +objects = HGraf.o esig_asc.o \ + esig_edr.o \ + esignal.o \ + esig_nat.o \ + HAdapt.o \ + HANNet.o \ + HArc.o \ + HAudio.o \ + HCUDA.o \ + HDict.o \ + HExactMPE.o \ + HFB.o \ + HFBLat.o \ + HLabel.o \ + HLat.o \ + HLM.o \ + HMap.o \ + HMath.o \ + HMem.o \ + HModel.o \ + HNCache.o \ + HNet.o \ + HParm.o \ + HRec.o \ + HShell.o \ + HSigP.o \ + HTrain.o \ + HUtil.o \ + HVQ.o \ + HWave.o + +lvobjects = $(basename HGraf.o).lv.o esig_asc.lv.o \ + esig_edr.lv.o \ + esignal.lv.o \ + esig_nat.lv.o \ + HAdapt.lv.o \ + HANNet.lv.o \ + HArc.lv.o \ + HAudio.lv.o \ + HCUDA.lv.o \ + HDict.lv.o \ + HExactMPE.lv.o \ + HFB.lv.o \ + HFBLat.lv.o \ + HLabel.lv.o \ + HLat.lv.o \ + HLM.lv.o \ + HMap.lv.o \ + HMath.lv.o \ + HMem.lv.o \ + HModel.lv.o \ + HNCache.lv.o \ + HNet.lv.o \ + HParm.lv.o \ + HRec.lv.o \ + HShell.lv.o \ + HSigP.lv.o \ + HTrain.lv.o \ + HUtil.lv.o \ + HVQ.lv.o \ + HWave.lv.o + +all: HTKLib.a HTKLiblv.a + +# This is the library used by HTKTools and HLMTools +HTKLib.a: $(objects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +HCUDA.o : HCUDA.h + $(CC) -o HCUDA.o $(CFLAGS) -c HCUDA.cu + +# This version is used by HDecode (HTKLVRec) +HTKLiblv.a: $(lvobjects) + if [ -f $@ ] ; then /bin/rm $@ ; fi + ar rv $@ $^ + $(RANLIB) $@ + +%.lv.o: %.c + $(CC) -DNO_LAT_LM $(CFLAGS) -c -o $@ $< + +HCUDA.lv.o : HCUDA.h + $(CC) -o HCUDA.lv.o $(CFLAGS) -c HCUDA.cu + +.PHONY: clean cleanup depend mkinstalldir install + +clean: + -rm -f $(objects) $(lvobjects) HTKLib.a HTKLiblv.a + +cleanup: + -rm -f $(objects) $(lvobjects) + +depend: + -makedepend -Y *.c + +distclean: clean + -rm -f Makefile + +install: HTKLib.a HTKLiblv.a mkinstalldir + $(INSTALL) -m 755 HTKLib.a HTKLiblv.a $(libdir) + +mkinstalldir: + -mkdir -p $(libdir) diff --git a/HTKLib/config.h b/HTKLib/config.h new file mode 100755 index 0000000..37f0e15 --- /dev/null +++ b/HTKLib/config.h @@ -0,0 +1,48 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: config.h Global configuration options */ +/* ----------------------------------------------------------- */ + +/* !HVER!config: 3.5.0 [CUED 12/10/15] */ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +#ifdef MKL +#include +#endif + +#ifdef CUDA +#undef MKL +#endif + + +#endif + +/* ------------------------ End of config.h ----------------------- */ + diff --git a/HTKLib/esig_asc.c b/HTKLib/esig_asc.c old mode 100644 new mode 100755 index b7eefd1..631edb3 --- a/HTKLib/esig_asc.c +++ b/HTKLib/esig_asc.c @@ -7,24 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esig_asc.c Esignal Ascii I/O */ +/* ----------------------------------------------------------- */ - -/* - * Example programs for Esignal public external file format. - * Ascii I/O. - * - * Author: Rod Johnson - */ - +/* !HVER!esig_asc: 3.5.0 [CUED 12/10/15] */ #include "esignal.h" #include @@ -2022,7 +2021,10 @@ ReadAsciiEscape(unsigned long *val, case '6': case '7': ungetc(ch, file); - fscanf(file, "%3lo", val); + if(fscanf(file, "%3lo", val)!=1){ + printf("Failed to read value from file"); + return FALSE; + } break; default: return FALSE; @@ -3196,3 +3198,6 @@ ApproxWidth(int type) } } } + +/* ------------------------- End of esig_asc.c --------------------------- */ + diff --git a/HTKLib/esig_edr.c b/HTKLib/esig_edr.c old mode 100644 new mode 100755 index 713f819..5b2c5d9 --- a/HTKLib/esig_edr.c +++ b/HTKLib/esig_edr.c @@ -7,23 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esig_edr.c ED1 and ED2 portable binary I/O */ +/* ----------------------------------------------------------- */ - -/* - * Example programs for Esignal public external file format. - * EDR1 and EDR2 portable binary I/O. - * - * Author: Rod Johnson - */ +/* !HVER!esig_edr: 3.5.0 [CUED 12/10/15] */ #include "esignal.h" @@ -306,7 +306,7 @@ ReadEdrRecord(FieldSpec **fields, { long i; long nopt; - Uchar flags; + Uchar flags=0; if (file == NULL || fields == NULL) { @@ -1189,7 +1189,7 @@ EdrReadLong(long *data, if ((hi & 0x80000000) == 0) /* non-negative */ { - if (hi > lmaxhi || hi == lmaxhi && lo > lmaxlo) + if (hi > lmaxhi || (hi == lmaxhi && lo > lmaxlo)) { data[n] = LONG_MAX; /* CLIPPING */ @@ -1201,7 +1201,7 @@ EdrReadLong(long *data, { hi |= sgnext; - if (hi < lminhi || hi == lminhi && lo < lminlo) + if (hi < lminhi || (hi == lminhi && lo < lminlo)) { data[n] = LONG_MIN; /* CLIPPING */ @@ -1338,7 +1338,7 @@ EdrReadUlong(Ulong *data, ulmaxhi = ULONG_MAX >> 32, ulmaxlo = ULONG_MAX & 0xffffffffUL; - if (hi > ulmaxhi || hi == ulmaxhi && lo > ulmaxlo) + if (hi > ulmaxhi || (hi == ulmaxhi && lo > ulmaxlo)) { data[n] = ULONG_MAX; /* CLIPPING */ @@ -2687,4 +2687,5 @@ EdrWriteWchar(Wchar *data, return n; } +/* ------------------------ End of esig_edr.c ------------------------- */ diff --git a/HTKLib/esig_nat.c b/HTKLib/esig_nat.c old mode 100644 new mode 100755 index ad79018..6dfcb02 --- a/HTKLib/esig_nat.c +++ b/HTKLib/esig_nat.c @@ -7,24 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esig_nat.c native binary I/O */ +/* ----------------------------------------------------------- */ - -/* - * Example programs for Esignal public external file format. - * native binary I/O. - * - * Author: Rod Johnson - */ - +/* !HVER!esig_nat: 3.5.0 [CUED 12/10/15] */ #include "esignal.h" @@ -961,3 +960,6 @@ WriteNativeString(char *string, return TRUE; } + +/* ------------------------ End of esig_nat.c ------------------------- */ + diff --git a/HTKLib/esignal.c b/HTKLib/esignal.c old mode 100644 new mode 100755 index 79be9b2..74eb10b --- a/HTKLib/esignal.c +++ b/HTKLib/esignal.c @@ -7,24 +7,21 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ - - -/* - * Example programs for Esignal public external file format. - * Utility; field specifications and lists; general I/O. - * - * Author: Rod Johnson - */ - +/* File: esignal.h Esignal include file */ +/* ----------------------------------------------------------- */ #include "esignal.h" @@ -1757,7 +1754,10 @@ GetLine(char *buf, { int i, j; - fgets(buf, len+1, file); + if(fgets(buf, len+1, file)==NULL){ + printf("Error reading from file\n"); + return FALSE; + } if (strlen(buf) != len || buf[len-1] != '\n') return FALSE; buf[len-1] = '\0'; @@ -1805,7 +1805,10 @@ GetLong(long *val, /* Read line; check length. */ - fgets(buf, len+1, file); + if(fgets(buf, len+1, file)==NULL){ + printf("Error reading from file\n"); + return FALSE; + } if (strlen(buf) != len || buf[len-1] != '\n') { @@ -1926,3 +1929,6 @@ LongVal(void *src, int type, long *dest) return TRUE; } + +/* ------------------------ End of esignal.c ------------------------- */ + diff --git a/HTKLib/esignal.h b/HTKLib/esignal.h old mode 100644 new mode 100755 index 40109c1..aa0ba99 --- a/HTKLib/esignal.h +++ b/HTKLib/esignal.h @@ -7,25 +7,23 @@ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* author: */ +/* Rod Johnson */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ +/* File: esignal.h Esignal include file */ +/* ----------------------------------------------------------- */ -/* !HVER!esignal: 3.4.1 [CUED 12/03/09] */ -/* - * - * Example programs for Esignal public external file format. - * Include file. - * - * Author: Rod Johnson - */ - +/* !HVER!esignal: 3.5.0 [CUED 12/10/15] */ #ifndef _ESIGNAL_H_ #define _ESIGNAL_H_ @@ -308,3 +306,6 @@ extern void (*DebugMsgFunc)(char *msg); #endif #endif /* _ESIGNAL_H */ + +/* ------------------------ End of esignal.h ----------------------- */ + diff --git a/HTKLib/htk_htklib_nt.mkf b/HTKLib/htk_htklib_nt.mkf deleted file mode 100644 index 986eb23..0000000 --- a/HTKLib/htk_htklib_nt.mkf +++ /dev/null @@ -1,83 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTKLib static library, MSVC -# - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< - -.c.olv: - $(CC) /nologo /c /Fo$@ /D "NO_LAT_LM" $(CFLAGS) $< - -CC=cl -CL=link -CPU=win32 - -# the MSDOS is needed to set _fmode to binary in HShell.c -HTKCF = /I "." /D "WIN32_AUDIO" /D ARCH=\"WIN32\" /D "PHNALG" - -# use the following for optimised compilation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for a debug compilation -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -CFLAGS = $(SYSCF) $(HTKCF) - -# the following is only needed when making a DLL -SYSLF = /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# the following is only needed when making a debug DLL -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:windows /dll /incremental:no /machine:I386 - -# flags used -# /MT multi-threaded executable -# /ML single-threaded executable -# /W1 warning level 1 -# /GX synchronous exception handling -# /O2 maximise speed -# /G5 P5 optimisation -# /G6 P6 optimisation -# /Ob2 allow inlining of functions not tagged with _inline - -libHTK = HTKLib.$(CPU) -libHTKlv = HTKLiblv.$(CPU) - -syslib = kernel32.lib user32.lib gdi32.lib winspool.lib \ - comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib \ - uuid.lib odbc32.lib odbccp32.lib winmm.lib - -libs = $(syslib) - -core = esig_asc.obj esig_edr.obj esignal.obj esig_nat.obj \ - HAdapt.obj HAudio.obj HDict.obj HFB.obj \ - HGraf.null.obj HLabel.obj HLat.obj \ - HLM.obj HMap.obj HMath.obj HMem.obj HModel.obj HNet.obj \ - HParm.obj HRec.obj HShell.obj HSigP.obj HTrain.obj \ - HUtil.obj HVQ.obj HWave.obj strarr.obj \ - HExactMPE.obj HFBLat.obj HArc.obj - -corelv = esig_asc.olv esig_edr.olv esignal.olv esig_nat.olv \ - HAdapt.olv HAudio.olv HDict.olv HFB.olv \ - HGraf.null.olv HLabel.olv HLat.olv \ - HLM.olv HMap.olv HMath.olv HMem.olv HModel.olv HNet.olv \ - HParm.olv HRec.olv HShell.olv HSigP.olv HTrain.olv \ - HUtil.olv HVQ.olv HWave.olv strarr.olv \ - HExactMPE.olv HFBLat.olv HArc.olv - -all: $(libHTK).lib $(libHTKlv).lib - -$(libHTK).lib: $(core) - lib /OUT:$(libHTK).lib $(core) - lib /list $(libHTK).lib - -$(libHTKlv).lib: $(corelv) - lib /OUT:$(libHTKlv).lib $(corelv) - lib /list $(libHTKlv).lib - -clean: - del *.obj *.olv $(libHTK).lib $(libHTKlv).lib - -cleanup: - del *.obj - diff --git a/HTKLib/i686.cpu b/HTKLib/i686.cpu deleted file mode 100644 index e69de29..0000000 diff --git a/HTKLib/strarr.c b/HTKLib/strarr.c deleted file mode 100644 index ea5a930..0000000 --- a/HTKLib/strarr.c +++ /dev/null @@ -1,145 +0,0 @@ -/* ----------------------------------------------------------- */ -/* */ -/* ___ */ -/* |_| | |_/ SPEECH */ -/* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ -/* */ -/* */ -/* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ -/* */ -/* Use of this software is governed by a License Agreement */ -/* ** See the file License for the Conditions of Use ** */ -/* ** This banner notice must not be removed ** */ -/* */ -/* ----------------------------------------------------------- */ - - -#include -#include "esignal.h" -#include "strarr.h" -/* - * "dim" should point to the dimensions of a char matrix. - * "data" should point to the matrix data, stored in row-major order. - * Each row is assumed to be terminated by one or more null characters. - * This function converts the matrix to a NULL-terminated array of - * strings---one per row of the matrix---and returns a pointer to the - * result. - */ - -char ** -StrArrFromRect(long *dim, void *data) -{ - char **strarr; - long len, wid, i; - char *row; - - len = dim[0]; - - strarr = (char **)malloc((len + 1) * sizeof(char *)); - - wid = dim[1]; - row = (char *) data; - for (i = 0; i < len; i++) - { - /* Assumption: each row has at least 1 terminating null */ - strarr[i] = StrDup(row); - row += wid; - } - - strarr[len] = NULL; - - return strarr; -} - - -/* - * "strarr" should point to the beginning of a NULL-terminated string array. - * "dimenp" and "datap" are output variables. If not NULL, they should - * be the addresses of variables to which results will be assigned. - * The function converts the data in the string array to a character matrix, - * stored in row-major order. Each row receives the contents of one string - * padded with null characters to bring them all up to a common length; - * every row gets at least one terminal null. A pointer to the dimensions - * is returned via "dimenp". A pointer to the matrix data is returned via - * "datap". - */ - -void -StrArrToRect(char **strarr, long **dimenp, void **datap) -{ - long len, wid, *dim, siz; - void *data; - long i, j; - char *str, *row; - - len = StrArrLen(strarr); - wid = StrArrMaxLen(strarr) + 1; - - dim = (long *) malloc(2 * sizeof(long)); - dim[0] = len; - dim[1] = wid; - - siz = len * wid; - data = malloc(siz * sizeof(char)); - row = (char *) data; - for (i = 0; i < len; i++) - { - str = strarr[i]; - for (j = 0; str[j] != '\0'; j++) - row[j] = str[j]; - for ( ; j < wid; j++) - row[j] = '\0'; - row += wid; - } - - if (dimenp) - *dimenp = dim; - if (datap) - *datap = data; -} - - -/* - * Number of strings in a NULL-terminated string array. - */ - -int -StrArrLen(char **str_arr) -{ - int i = 0; - - if ((str_arr == NULL) || (*str_arr == NULL)) - return 0; - - while (str_arr[i] != NULL) - i++; - - return(i); -} - - -/* - * Maximum strlen for the members of a NULL-terminated string array. - */ - -int -StrArrMaxLen(char **str_arr) -{ - int maxlen = 0; - int newmax; - - if (str_arr == NULL) - return(0); - - while (*str_arr != NULL) { - if ((newmax = strlen(*str_arr)) > maxlen) - maxlen = newmax; - str_arr++; - } - - return(maxlen); -} diff --git a/HTKLib/strarr.h b/HTKLib/strarr.h deleted file mode 100644 index cd2b68b..0000000 --- a/HTKLib/strarr.h +++ /dev/null @@ -1,36 +0,0 @@ -/* ----------------------------------------------------------- */ -/* */ -/* ___ */ -/* |_| | |_/ SPEECH */ -/* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ -/* */ -/* */ -/* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ -/* */ -/* Use of this software is governed by a License Agreement */ -/* ** See the file License for the Conditions of Use ** */ -/* ** This banner notice must not be removed ** */ -/* */ -/* ----------------------------------------------------------- */ - -#ifndef _STRARR_H_ -#define _STRARR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -char ** StrArrFromRect(long *dim, void *data); -void StrArrToRect(char **strarr, long **dimenp, void **datap); -int StrArrLen(char **str_arr); -int StrArrMaxLen(char **str_arr); - -#ifdef __cplusplus -} -#endif - -#endif /* _STRARR_H_ */ diff --git a/HTKTools/.directory b/HTKTools/.directory deleted file mode 100644 index 46e59d0..0000000 --- a/HTKTools/.directory +++ /dev/null @@ -1,3 +0,0 @@ -[Dolphin] -Timestamp=2009,3,11,9,47,33 -ViewMode=1 diff --git a/HTKTools/ChangeLog b/HTKTools/ChangeLog deleted file mode 100644 index fa19bef..0000000 --- a/HTKTools/ChangeLog +++ /dev/null @@ -1,516 +0,0 @@ -2006-05-03 Andrew Liu - - * Logic correction in HVite - -2005-08-11 Anna Langley - - * HCluster, Hdistance, HEAdapt, HEAdaptLat, HSprout added - -2005-08-09 Anna Langley - - * HMMIRest added - -2005-02-24 Anna Langley - - * Files for autoconf installs added - -2005-02-08 S.E. Tranter - - * HCluster.c: Added support for diagonal and block diagonal - covariance representation with BIC stopping criterion. - Block diagonal case is slightly different to previous local version - BIC scoring info now requires trace level 1 to be output. - -2004-08-04 Antti-Veikko Rosti - - * HERest.c: ConvLogWt() and ConvExpWt() added after ConvDiagC() - calls to convert the mixture weights into the log-scale prior to - forward-backward recursions. - - * HHEd.c: Function ReOrderFeaturesCommand() added to sort model - parameters according to a global feature element re-ordering with - RP command. - -2004-08-02 Gunnar Evermann - - * HVite.c (main): Check that number of tokens requested via -n - switch doesn't exceed maximum. - -2004-07-120 Khe Chai Sim - - * HHEd.c: Support for generic tree name mapping. Current mapping - makes use of the macRoot prefix specified with the TB command. - -2004-07-14 Gunnar Evermann - - * HMMIRest.c (main): Employ LLFs for faster loading of lattices. - (main): Add LATFILEMASK to be able to discard parts of the - segment name when loading the lattice file. - -2004-07-14 Antti-Veikko Rosti - - * HERest.c: New heap for accumulators called accStack created. This - is used in AttachAccs() instead of gstack. - - * HMMIRest.c: Removed unused variables and added T_TIM trace - flag. The heap globStack renamed to accStack. - -2004-07-08 Mark Gales - - * HHEd.c (RegClassesCommand): Correctly treat base classes stored - in directories specified via -M. - -2004-07-02 B. Jia - - * HMMIRest.c: Fix a bug of single pass retrain in discrimitive - trainng - -2004-06-25 Gunnar Evermann - - * *.c (traceHFB): Eliminate traceHFB variable and replace with - function call. - -2004-06-06 B. Jia - - * HMMIRest.c: New config variable UPDATEMODE to allow dumping summed - accumulates. - -2004-04-26 K. Yu - - * HMMIRest.c: Add support for MMI priors in MPE training (new - config variables MMIPRIOR and MMITAUI). - -2004-04-17 Gunnar Evermann - - * HERest.c (main): Fix for UPDATEMODE to make non-parallel mode - training work again. - -2004-04-16 Gunnar Evermann - - * HERest.c: New config variable UPDATEMODE to allow dumping summed - accumulates (subsumes functionality of HAccSum). - -2004-04-13 B. Jia - - * HMMIRest.c: New options '-rp' and '-qp' to support - subdirectories of denominator and numerator lattices respectively, - so that all side directories will not crowd under one directory. - -2004-04-02 Bin Jia - - * HCompV: New option '-p' to support storing CMN/CVN files in - subdirectories for use with CMEANPATHMASK and VARSCALEPATHMASK. - -2004-03-21 Mark Gales - - * *.c: Various fixed for use of new adaptation. - -2004-02-16 Bin Jia - - * HDMan.c: MAXDICTS increased from 20 to 100 - -2003-12-17 Gunnar Evermann - - * HVite.c (DoAlignment): Allow alignment of segments with empty - transcriptions if an utterance boundary word (option -b) was - specified. - - -2003-12-10 S.E. Tranter - - * HCluster.c: Added -y option to force splits to be binary - This changed the functions: - MakeInitialAssignment, MakeInitialModuloAssignment - - Added a -z option to allow a BIC-based stopping criterion. - This is currently only implemented for a 2-way split and - for a full covariance (or correlation) matrix representation - - i.e. it does not yet include block-diagonal or diagonal covariance - - Two implementations of the BIC-based criterion are implemented - - the choice of which is made on the sign of the -z parameter. - Negative means a "local" decision - in that the penalty factor - uses N_z, the number of frames in the cluster being split, - whereas positive means a "global" decision - i.e the penalty - factor uses the total number of frames input to the clusterer. - The absolute value of the z parameter indicates the value of alpha - in the penalty formula. - This uses the new functions: - BICScore, ConvertCorrelationToCovariance, CalcJointMean, - CalcJointCov - - Some maths functions from ~mjfg/cuhtk/HTKLib/HMath.c have also - been included. This is because the existing SVD implementation - sometimes goes into an infinite loop, so the alternative code - (which contains nr stuff so cant be released) has been included. - However, this is not yet called anywhere, since the icc version - (e.g. compiled on spot) doesn't seem to produced this problem. - This involves the functions: - PYTHAG, MAXX, SIGN, SVDCmp, InvSVD_cuhtk - -2003-10-14 Anna Langley - - * htk_htktools_nt.mkf: Use backslashes in pathnames. - -2003-10-14 Gunnar Evermann - - * HLEd.c: Rename DELETE as Visual C++ doen't seem to like it. - -2003-09-10 Gunnar Evermann - - * HHEd.c (ParseAlpha): Fix parsing of octal charcter codes. - From Tanel Alumäe - -2003-07-28 Anna Langley - * htk_htktools_nt.mkf: was not building HLRescore, applied changes - supplied by Arlindo Veiga which corrects this. - -2003-07-24 M. J. F. Gales - - * HERest.c: clarify the single pass retraining when - the TARGETKIND does not change. - -2003-07-08 Anna Langley - * HERest.c, HHEd.c, HVite.c, HMMIRest.c, HEAdaptLat.c: removed - unused variables from sources. - -2003-06-18 M. J. F. Gales - - * HERest.c (MLUpdateModels): maxM uninitialised. This means - that the weights are not always guaranteed to be updated - when there are multiple components. - -2003-04-05 S.E. Tranter - - * HCluster.c (main): - The Minimum number of frames required to attempt to do - full covariance matrix inversion is set to at least - the dimension of the feature vector + 1 - - New functions: - InvertTriMatSVD to invert a TriMat covariance - matrix using SVD decomposition (more stable than CovInvert) - IsCovInvertableSVD : checks if SVD inversion has been - relatively stable - StoreCovsSVD : reordering of StoreCovs and inversion of - matrix using InvertTriMatSVD, so the inversion is - now done before checking if the matrix is invertable - - Modified functions: - StoreCovsSVD now called instead of StoreCovs in main loop - MakeClusterStats now calls InvertTriMatSVD not CovInvert - -2003-03-30 Gunnar Evermann - - * HLRescore.c (ProcessLattice): Try to make lattice node order - deterministic by setting ln->score to node posterior before - saving (can be turned off by setting SORTLATTICE=F). - -2003-03-17 Sue Tranter - - * HCluster.c (SetConfParms): Bug fix to allow feature vectors - of other than 13 dimension. - - SetConfParams now adds the "base_dimen" if it sees _D and _A, - rather than adding 13. - Also, it checks that the minvar is not set to a different - value in the cfgfile and command line - ReportUsage changes to allow "-w" option to set base_dimen on - command line (_D and _A should be set in cfg file) - Main : moved SetConfParms and setting dimension to after dealing - with input args. (to allow -w) - -w option added to set base dimension on commandline - ShowParameters: ordering changed to be alphabetical - and -v and -w options added - - -2003-03-20 Dan Povey - - * HVite.c (ProcessFile): Output current beam if alignment failed - and is restartable. - -2003-03-12 Gunnar Evermann - - * HERest.c (main): Undo change to total logprob calculation. - -2003-03-12 Lan Wang - - * HMMIRest.c (SetConfParms): New config variables INXFORMMASK and - PAXFORMMASK. - -2003-03-10 Gunnar Evermann - - * HERest.c: Remove FIXUP again. - -2003-03-10 Dan Povey - - * HMMIRest.c: new config vars: VARFLOORPERCENTILE and VARSMOOTH - * HERest.c: new config vars: VARFLOORPERCENTILE and FIXUP - -2003-02-27 S.E. Tranter - - * Makefile: Added HCluster to makefile - - * HCluster.c (main): - printing of numargs removed - printing of dimension information needs T_TOP - CloseAndExit function added to enable program to exit safely at - different stages - Bugfix for the case where all the segs are too small for main - clustering decisions (assigns them all to 1 cluster) - Code which allowed an HPARM2 parameter (_Z) to be set has been - commented out, since it caused a seg fault and may have - been an interaction problem with a new HParm.c, since this - didn't happen previously. This option was not currently - being used in the config file anyway. - -2003-02-25 Mark Gales - - * HHEd.c: Bug fixes in regression tree clustering. - From José David Romeral - -2003-02-20 Lan Wang - - * HEAdaptLat.c: New tool. - -2003-02-07 Dan Povey - - * HHEd.c: New command PS for movemix models. - -2003-02-03 Mark Gales - - * *.[hc]: Use new XForm code. - -2002-12-19 Gunnar Evermann - - * *.[hc]: Bump version to 3.2. - -2002-12-18 Gunnar Evermann - - * HLRescore.c: Fix error codes. - -2002-12-16 Gunnar Evermann - - * HLRescore.c (ReportUsage): Correct option description. - -2002-12-16 Steve Young - - * HSGen.c (Select): Fix boundary case for random arc selection. - -2002-11-14 Gunnar Evermann - - * HHEd.c (MixDownCommand): remove unused variables. - - * HEAdapt.c (main): Init HModel before HParm. - (Initialise): Pass current HMMSet to HParm. - - * HERest.c (main): Init HModel before HParm. - (Initialise): Pass current HMMSet to HParm. - - * HHEd.c (Summary): - (DoEdit): - (InputXFormCommand): New command XF to set InputXForm in model set. - - * HList.c (main): Initialise modules HLabel and HModel for - InputXForm support. - - * HVite.c (Initialise): - * HRest.c (Initialise1): - * HInit.c (Initialise): - * HCompV.c (Initialise): Pass current HMMSet to HParm. - -2002-09-23 Gunnar Evermann - - * HHEd.c (Summary): Fix typo. - - * HERest.c (UpdateModels): Print Number of frames seen after - updating models. - -2002-09-12 Gunnar Evermann - - * HVite.c (ProcessFile): Output current beam if alignment failed - and is restartable. - -2002-09-11 Gunnar Evermann - - * HDMan.c (MAXPRONS): Increase from 20 to 100. - -2002-08-30 Gunnar Evermann - - * HEAdapt.c (DoForwardBackward): Fix for FBInfo structure modified - for 2-model re-estimation. - -2002-08-28 Gunnar Evermann - - * HERest.c (Initialise): Move printing of pruning settings to - HFB:InitialiseForBack(). - -2002-07-12 Thomas Hain - - * HERest.c: Added 2-model re-estimation - -2002-07-11 Thomas Hain - - * HHEd.c (SetConfParms): - (TieLeafNodes): Added functionality to compute means and var's of - leaf nodes using cluster stats. - (MixMergeCost): - (MergeMix): - (DownMix): - (MixDownCommand): Add MD command - (FloorAverageCommand): Add FA Command - (FloorVectorCommand): Add FV Command - -2002-06-30 Gunnar Evermann - - * HHEd.c (FullCovarCommand): Add FC command. - -2002-06-07 Gunnar Evermann - - * HLRescore.c (ReportUsage): Document '-c' option. - From: ZEN Heiga - -2002-06-05 Gunnar Evermann - - * HLRescore.c: New Tool. - -2002-06-05 Gunnar Evermann - - * *.[hc]: Bump version to 3.1.1. - -2002-02-23 Gunnar Evermann - - * HCompV.c: Fix initialisation of CMN/CVN related data structures. - -2002-01-16 Gunnar Evermann - - * *.[hc]: Bump version to 3.1. - -2001-12-11 Gareth Moore - - * *.c (ReportUsage): Tool usage report formatting tidied. - -2001-12-03 Gunnar Evermann - - * HDMan.c (WriteDictWord): - (WriteEntry): - (EditWordBuf): - (EditAndMerge): Do not update new phone list when outputting trace - info. - -2001-11-14 Xunying Liu - - * HCompV.c: Added support for cluster-based mean and variance - normalisation. - -2001-06-08 Gunnar Evermann - - * HHEd.c (SetStreamWidthCommand): Recalculate vecSize of HMMSet - From: Mark Gales - -2001-04-18 Gunnar Evermann - - * HList.c (IsWave): Take extended filenames into account. - -2001-04-17 Gunnar Evermann - - * HSGen.c: Assign new error code range 3400-3499 to HSGen. - - * HVite.c (Initialise): - * HEAdapt.c (Initialise): - * HERest.c (Initialise): Fix error codes. - - * HHEd.c (ChkTreeObject): Correct error message. - -2001-04-11 Gunnar Evermann - - * HVite.c (DoAlignment): - (ProcessFile): Support iterative increase of beam limit for alignment. - -2000-11-30 Gunnar Evermann - - * HVite.c: Add missing option -B and SAVEBINARY config variable. - -2000-10-27 Gunnar Evermann - - * HRest.c (LoadFile): Do not try to load zero frame segments even - if '-t' option is specified. - - * HVite.c (DoOnlineAdaptation): Return 0 if forward-backward - failed. - - * HEAdapt.c (DoForwardBackward): Only update total frame and - logprob counters if forward-backward succeeded. - -2000-10-26 Phil Woodland - - * HBuild.c (ProcessBoBiGram): Fix generation of bigram network for - zapUnknown==TRUE case. - -2000-10-26 Gunnar Evermann - - * HERest.c (DoForwardBackward): Only update total frame and - logprob counters if forward-backward succeeded. - From: Mark Gales - -2000-10-24 Gunnar Evermann - - * HSmooth.c: Rename MAXPHONES to MAXMONOPHONES. - - * HDMan.c: Consistently use MAXPHONES (defined in HDict.h). - From Gunnar Lehtinen - -2000-10-06 Gunnar Evermann - - * HHEd.c: Remove MPW segment pragmas. - -2000-09-25 Gunnar Evermann - - * Makefile: Copy compile settings from env files. - -2000-09-15 Gunnar Evermann - - * HDMan.c (ReadCmd): C++ fix for incrementing enums. - -2000-09-11 Gunnar Evermann - - * HVite.c (ProcessFile): Don't accumulate adaptation statistics if - no token survived and transcription was generated only due to - HREC:FORCEOUT=T. - (DoAlignment): Perform adaptation in alignment case as well (i.e. - lattice rescoring). - - * HParse.c: - (GetWdBeginNum): Eliminate unused for loop. - - * HSLab.c: - * HSGen.c: - * HLStats.c: - * HLEd.c: - * HVite.c: - * HSmooth.c: - * HResults.c: - * HRest.c: - * HQuant.c: - * HBuild.c: - * HInit.c: - * HHEd.c: - * HERest.c: Warning elimination. - -2000-09-08 Gunnar Evermann - - * HDMan.c: - * HCopy.c: - * HCompV.c: - * HList.c: - * HEAdapt.c: Warning elimination. - -2000-09-04 Gunnar Evermann - - * *.[hc]: Reindented. - - * *.[hc]: Cleaned up version headers and set version to 3.0. diff --git a/HTKTools/ChangeLog.CUHTK b/HTKTools/ChangeLog.CUHTK deleted file mode 100644 index d3fcc2d..0000000 --- a/HTKTools/ChangeLog.CUHTK +++ /dev/null @@ -1,42 +0,0 @@ -2003-02-25 Dan Povey - - * HMMIRest.c: Miscellaneous obscure bug fixes which shouldn't - affect normal operation, including a bug fix which affects - mean-only re-estimation. - - * HMMIRest.c: Fix previous fix. - -2003-02-07 Dan Povey - - * HMMIRest.c: Replace PRIORPROPORTION with PRIORK in MMI/MPE-MAP - -2003-02-06 Dan Povey - - * HMMIRest.c: Improved MMI/MPE-MAP - -2003-02-05 Lan Wang - - * HMMIRest.c: Support for new xform code. - -2002-12-13 Dan Povey - - * HMMIRest.c: SUpport for MMI-MAP and MPE-MAP. - -2002-12-10 Dan Povey - - * HMMIRest.c: Various fixes. - -2002-11-16 Dan Povey - - * HMMIRest.c: General clean-up of comments and indentation. - -2002-11-14 Gunnar Evermann - - * HMMIRest.c (Initialise): Pass current HMMSet to HParm for - InputXForm handling. - (main): Init HModel before HParm. - Call InitParm only once. - -2002-11-14 Dan Povey - - * HMMIRest.c : New tool. diff --git a/HTKTools/HBuild.c b/HTKTools/HBuild.c old mode 100644 new mode 100755 index 9a7165a..c0bad1a --- a/HTKTools/HBuild.c +++ b/HTKTools/HBuild.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HBuild.c: Word-Lattice Building */ +/* File: HBuild.c Word-lattice building */ /* ----------------------------------------------------------- */ -char *hbuild_version = "!HVER!HBuild: 3.4.1 [CUED 12/03/09]"; +char *hbuild_version = "!HVER!HBuild: 3.5.0 [CUED 12/10/15]"; char *hbuild_vc_id = "$Id: HBuild.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; /* The HBuild program takes input files in a number of different @@ -45,6 +61,7 @@ char *hbuild_vc_id = "$Id: HBuild.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -375,7 +392,8 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) LArc *la; lmId ndx[NSIZE+1]; - int i,j,k; + int i,k; + unsigned long int j; Lattice *lat; Boolean enterFound=FALSE; Boolean exitFound=FALSE; @@ -415,7 +433,7 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) nLM->wdlist[i]->name); ln = lat->lnodes+j; ln->word = wd; ln->n=0; ln->v=0; - wd->aux = (Ptr) j; + wd->aux = (Ptr)j; if (nLM->wdlist[i] != enterId) { la = lat->larcs+k; la->start = lat->lnodes; @@ -436,7 +454,7 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) ndx[0] = i; ne = GetNEntry(nLM,ndx,FALSE); fromWd = GetWord(voc,nLM->wdlist[i],FALSE); - fromNode = lat->lnodes+((int) fromWd->aux); + fromNode = lat->lnodes+((unsigned long int) fromWd->aux); la->start = fromNode; /* backoff weight */ la->end = lat->lnodes; if (ne==NULL) la->lmlike = 0.0; @@ -447,7 +465,7 @@ Lattice *ProcessBoBiGram(MemHeap *latHeap, Vocab *voc, NGramLM *nLM) if ((nLM->wdlist[se->word] == unknownId) && zapUnknown) continue; toWd = GetWord(voc,nLM->wdlist[se->word],FALSE); - toNode = lat->lnodes+((int) toWd->aux); + toNode = lat->lnodes+((unsigned long int) toWd->aux); if (nLM->wdlist[se->word] != enterId) { la->start = fromNode; la->end = toNode; @@ -466,7 +484,8 @@ Lattice *ProcessMatBiGram(MemHeap *latHeap, Vocab *voc, MatBiLM *bg) LNode *ln,*fromNode,*toNode; LArc *la; Word wd,fromWd,toWd; - int i,j; + int i; + unsigned long int j; int skipWord=0; Lattice *lat; Vector row; @@ -502,12 +521,12 @@ Lattice *ProcessMatBiGram(MemHeap *latHeap, Vocab *voc, MatBiLM *bg) for (i=1,j=0; i < bg->numWords; i++) { row = bg->bigMat[i]; fromWd = GetWord(voc,bg->wdlist[i],FALSE); - fromNode = lat->lnodes+((int) fromWd->aux); + fromNode = lat->lnodes+((unsigned long int) fromWd->aux); if (i == skipWord) continue; for (j=2; j <= (i==1?bg->numWords-1:bg->numWords); j++) { if (j == skipWord) continue; toWd = GetWord(voc,bg->wdlist[j],FALSE); - toNode = lat->lnodes+((int) toWd->aux); + toNode = lat->lnodes+((unsigned long int) toWd->aux); la->start = fromNode; la->end = toNode; la->lmlike = row[j]; @@ -750,5 +769,3 @@ Lattice *ProcessWordPair(MemHeap *latHeap, Vocab *voc, char *gramFn) /* ------------------- End of HBuild.c --------------------------------- */ - - diff --git a/HTKTools/HCompV.c b/HTKTools/HCompV.c old mode 100644 new mode 100755 index 2d6ba9e..2ba68cd --- a/HTKTools/HCompV.c +++ b/HTKTools/HCompV.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HCompV.c: HMM global mean/variance initialisation */ +/* File: HCompV.c HMM global mean/variance initialisation */ /* ----------------------------------------------------------- */ -char *hcompv_version = "!HVER!HCompV: 3.4.1 [CUED 12/03/09]"; -char *hcompv_vc_id = "$Id: HCompV.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hcompv_version = "!HVER!HCompV: 3.5.0 [CUED 12/10/15]"; +char *hcompv_vc_id = "$Id: HCompV.c,v 1.2 2012/10/12 12:07:24 cz277 Exp $"; /* @@ -59,6 +62,7 @@ char *hcompv_vc_id = "$Id: HCompV.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" @@ -133,7 +137,8 @@ static char oflags[MAXSTRLEN] = "m"; /* export flags for CMV */ static char cmDir[MAXSTRLEN]; /* directory to export CMV */ static char TargetPKStr[MAXSTRLEN]; /* target parm kind string */ static Boolean DoCMV = FALSE; /* switch from old HCompV to CMV */ - +/* cz277 - mkdir */ +static Boolean enableSetupDir = FALSE; /* ------------- Process Command Line and Check Data ------------ */ @@ -150,6 +155,8 @@ void SetConfParms(void) if (GetConfBool(cParm,nParm,"UPDATEMEANS",&b)) meanUpdate = b; if (GetConfBool(cParm,nParm,"SAVEBINARY",&c)) saveBinary = c; if (GetConfFlt(cParm,nParm,"MINVARFLOOR",&d)) minVar = d; + /* cz277 - mkdir */ + if (GetConfBool(cParm, nParm, "MAKEDIR", &c)) enableSetupDir = c; } } @@ -706,6 +713,11 @@ void ExportNMV(SpkrAccListItem *sal, char *OutDirName, char *tgtPKStr) else MakeFN(p->sa->SpkrName,OutDirName,NULL,oFileName); + /* cz277 - mkdir */ + if (enableSetupDir == TRUE) { + SetupDir(PathOf(oFileName, pathBuffer1)); + } + /* open and write */ oFile = FOpen(oFileName,NoOFilter,&isPipe); if (oFile == NULL){ diff --git a/HTKTools/HCopy.c b/HTKTools/HCopy.c old mode 100644 new mode 100755 index 2604167..4171dd1 --- a/HTKTools/HCopy.c +++ b/HTKTools/HCopy.c @@ -3,24 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HCopy.c: Copy one Speech File to another */ +/* File: HCopy.c Copy one speech file to another */ /* ----------------------------------------------------------- */ -char *hcopy_version = "!HVER!HCopy: 3.4.1 [CUED 12/03/09]"; -char *hcopy_vc_id = "$Id: HCopy.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; +char *hcopy_version = "!HVER!HCopy: 3.5.0 [CUED 12/10/15]"; +char *hcopy_vc_id = "$Id: HCopy.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -31,6 +47,7 @@ char *hcopy_vc_id = "$Id: HCopy.c,v 1.1.1.1 2006/10/11 09:54:59 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" /* -------------------------- Trace Flags & Vars ------------------------ */ @@ -256,6 +273,11 @@ int main(int argc, char *argv[]) HError(1019,"HCopy: MLF file name expected"); LoadMasterFile(GetStrArg()); labF = TRUE; break; + case 'J': + if (NextArg() != STRINGARG) + HError(1019, "HCopy: transform search directory expected"); + AddInXFormDir(NULL, GetStrArg()); + break; case 'L': if (NextArg()!=STRINGARG) HError(1019,"HCopy: Label file directory expected"); @@ -547,7 +569,9 @@ Boolean IsWave(char *srcFile) { FILE *f; long nSamp,sampP, hdrS; - short sampS,kind; + /*short sampS,kind;*/ + short kind; + unsigned short sampS; /* cz277 - cbu */ Boolean isPipe,bSwap,isWave; isWave = tgtPK == WAVEFORM; diff --git a/HTKTools/HDMan.c b/HTKTools/HDMan.c old mode 100644 new mode 100755 index c136e94..7f38351 --- a/HTKTools/HDMan.c +++ b/HTKTools/HDMan.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HDMan: pronunciation dictionary manager */ +/* File: HDMan pronunciation dictionary manager */ /* ----------------------------------------------------------- */ -char *hdman_version = "!HVER!HDMan: 3.4.1 [CUED 12/03/09]"; +char *hdman_version = "!HVER!HDMan: 3.5.0 [CUED 12/10/15]"; char *hdman_vc_id = "$Id: HDMan.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HShell.h" @@ -60,10 +63,10 @@ static int nParm = 0; /* total num params */ #define MAXARGS 100 /* max args in any command */ /* MAXPHONES (max phones in any pronunciation) is defined in HDict.h */ -#define MAXPRONS 400 /* max number of pronunciations per word */ +#define MAXPRONS 1000 /* max number of pronunciations per word */ #define MAXDICTS 100 /* max number of source dictionaries */ #define MAXCONS 20 /* max number of contexts per script */ -#define MAXPVOC 500 /* max num distinct phones */ +#define MAXPVOC 2000 /* max num distinct phones */ /* ---------------------- Global Data Structures ------------------------------ */ @@ -397,49 +400,50 @@ void LoadPhoneList(void) /* aux = -2, if undef and printed, aux = -3 if defd and printed */ void PutPhone(LabId id) { - char buf[80]; + char buf[MAXSTRLEN]; LabId baseId; - if (((int)id->aux == 0 || (int)id->aux == -1) && newPhones != NULL) { + if (((long int)id->aux == 0 || (long int)id->aux == -1) && newPhones != NULL) { fprintf(newPhones,"%s\n",ReWriteString(id->name,NULL,ESCAPE_CHAR)); /* avoid printing it again */ - id->aux = (Ptr)((int)id->aux - 2); + id->aux = (Ptr)((long int)id->aux - 2); } strcpy(buf,id->name); TriStrip(buf); baseId=GetLabId(buf,TRUE); - if ((int)baseId->aux <= 0 ) { /* not seen this label before */ - if ((int)baseId->aux == 0 || (int)baseId->aux == -2){ + if ((long int)baseId->aux <= 0 ) { /* not seen this label before */ + if ((long int)baseId->aux == 0 || (long int)baseId->aux == -2){ if (nNewPhones == MAXPVOC) HError(1430,"PutPhone: MAXPVOC exceeded"); newList[nNewPhones++] = baseId; } - baseId->aux = (Ptr)0; + baseId->aux = (Ptr)0; } - baseId->aux = (Ptr)((int)baseId->aux + 1); + baseId->aux = (Ptr)((long int)baseId->aux + 1); } /* ListNewPhones: list new phones to log file along with counts */ void ListNewPhones(void) { - int i,c; + int i; + long c; if (nDefPhones>0){ fprintf(logF,"Def Phone Usage Counts\n"); fprintf(logF,"---------------------\n"); for (i=0; iaux; + c = (long int)defList[i]->aux; if (c<0) c=0; - fprintf(logF," %2d. %-5s : %5d\n",i+1,defList[i]->name,c); + fprintf(logF," %2d. %-5s : %5ld\n",i+1,defList[i]->name,c); } } if (nNewPhones>0){ fprintf(logF,"New Phone Usage Counts\n"); fprintf(logF,"---------------------\n"); for (i=0; iaux; + c = (long int)newList[i]->aux; if (c<0) c=0; - fprintf(logF," %2d. %-5s : %5d\n",i+1, newList[i]->name,c); + fprintf(logF," %2d. %-5s : %5ld\n",i+1, newList[i]->name,c); } } } @@ -1003,7 +1007,7 @@ Boolean ReadDictProns(DBuffer *db) if (db->nextWord == NULL) return FALSE; if (db->wbuf.word != NULL && strcmp(db->wbuf.word->name,db->nextWord->name) > 0 ) - HError(1452,"ReadDictProns: word %s out of order in dict %s", + HError(-1,"ReadDictProns: word %s out of order in dict %s", db->nextWord->name,db->name); db->wbuf.word = thisWord = db->nextWord; db->wbuf.outsym = db->nextOutSym; @@ -1629,16 +1633,16 @@ void SetActiveCount(void) /* HighestInput: return alphabetically highest next word */ LabId HighestInput(void) { - int i, hi; + int i; LabId best,next; i = 0; while ((next=inbuf[i].nextWord) == NULL) i++; - hi = i++; best = next; + i++; best = next; while (iname,best->name) < 0){ - best = next; hi = i; + best = next; } i++; } diff --git a/HTKTools/HERest.c b/HTKTools/HERest.c old mode 100644 new mode 100755 index 5d7fd63..d9c9089 --- a/HTKTools/HERest.c +++ b/HTKTools/HERest.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HERest.c: Embedded B-W ReEstimation */ +/* File: HERest.c Embedded B-W re-estimation */ /* ----------------------------------------------------------- */ -char *herest_version = "!HVER!HERest: 3.4.1 [CUED 12/03/09]"; +char *herest_version = "!HVER!HERest: 3.5.0 [CUED 12/10/15]"; char *herest_vc_id = "$Id: HERest.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; /* @@ -64,6 +67,7 @@ char *herest_vc_id = "$Id: HERest.c,v 1.2 2006/12/07 11:09:08 mjfg Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -100,7 +104,6 @@ static Boolean stats = FALSE; /* enable statistics reports */ static char * mmfFn = NULL; /* output MMF file, if any */ static int trace = 0; /* Trace level */ static Boolean saveBinary = FALSE; /* save output in binary */ -static Boolean ldBinary = TRUE; /* load/dump in binary */ static FileFormat dff=UNDEFF; /* data file format */ static FileFormat lff=UNDEFF; /* label file format */ static int updateMode = UPMODE_UPDATE; /* dump summed accs, update models or do both? */ @@ -158,7 +161,6 @@ void SetConfParms(void) if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; if (GetConfFlt(cParm,nParm,"VARFLOORPERCENTILE",&f)) varFloorPercent = f; if (GetConfBool(cParm,nParm,"SAVEBINARY",&b)) saveBinary = b; - if (GetConfBool(cParm,nParm,"BINARYACCFORMAT",&b)) ldBinary = b; /* 2-model reestimation alignment model set */ if (GetConfStr(cParm,nParm,"ALIGNMODELMMF",buf)) { strcpy(al_hmmMMF,buf); al_hmmUsed = TRUE; @@ -179,6 +181,9 @@ void SetConfParms(void) if (GetConfStr(cParm,nParm,"ALIGNXFORMDIR",buf)) { xfInfo.alXFormDir = CopyString(&hmmStack,buf); } + if (GetConfStr(cParm,nParm,"OUTXFORMMASK",buf)) { + xfInfo.outSpkrPat = CopyString(&hmmStack,buf); + } if (GetConfStr(cParm,nParm,"INXFORMMASK",buf)) { xfInfo.inSpkrPat = CopyString(&hmmStack,buf); } @@ -297,7 +302,6 @@ int main(int argc, char *argv[]) char *datafn=NULL; char *datafn2=NULL; char *s; - char *scriptFile; char datafn1[MAXSTRLEN]; char newFn[MAXSTRLEN]; FILE *f; @@ -308,6 +312,7 @@ int main(int argc, char *argv[]) float tmpFlt; int tmpInt; int numUtt,spUtt=0; + Boolean ldBinary=TRUE; void Initialise(FBInfo *fbInfo, MemHeap *x, HMMSet *hset, char *hmmListFn); void DoForwardBackward(FBInfo *fbInfo, UttInfo *utt, char *datafn, char *datafn2); @@ -322,9 +327,14 @@ int main(int argc, char *argv[]) InitLabel(); InitModel(); if(InitParm()numPhyHMM; L = hset->numLogHMM; vSize = hset->vecSize; - S = hset->swidth[0]; maxM = MaxMixInSet(hset); hsKind = hset->hsKind; @@ -739,7 +750,7 @@ void StatReport(HMMSet *hset) px=1; do { hmm = hss.hmm; - PrintStats(hset,f,px,hmm,(int)hmm->hook); + PrintStats(hset,f,px,hmm,(int)(unsigned long int)hmm->hook); px++; } while (GoNextHMM(&hss)); EndHMMScan(&hss); @@ -764,6 +775,7 @@ void DoForwardBackward(FBInfo *fbInfo, UttInfo *utt, char * datafn, char * dataf } else strcpy (datafn_lab, datafn); + LoadLabs(utt, lff, datafn_lab, labDir, labExt); /* Load the data */ LoadData(fbInfo->al_hset, utt, dff, datafn, datafn2); @@ -1108,8 +1120,6 @@ void UpdateVars(HMMSet *hset, int px, HLink hmm) } } else{ - MixtureElem *me2; - me2 = ste->spdf.cpdf + 1; M = ste->nMix; HError(-2330,"UpdateVars: Model %d[%s]: no use of variance %d.%d.%d", px,HMMPhysName(hset,hmm),i,s,m); } @@ -1282,7 +1292,7 @@ void MLUpdateModels(HMMSet *hset, UPDSet uFlags) px=1; do { hmm = hss.hmm; - n = (int)hmm->hook; + n = (int)(unsigned long int)hmm->hook; if (n... - Set each value of the ANN matrix macro to the input ones\n"); printf("SS n - Split into n data Streams\n"); printf("ST filename - Save Questions and Trees to filename\n"); printf("SU n w1 .. wn - Split into user defined stream widths\n"); + printf("SV macro ... - Set each value of the ANN vector macro to the input ones\n"); printf("SW s n - Set width of stream s to n\n"); printf("TB f macro itemlist - Tree build using QS questions and likelihood\n"); printf(" based clustering criterion.\n"); @@ -218,6 +248,7 @@ void ReportUsage(void) printf("\nUSAGE: HHEd [options] editF hmmList\n\n"); printf(" Option Default\n\n"); printf(" -d s dir to find hmm definitions current\n"); + printf(" -n mmf Save all ANNs macro file mmf s as source\n"); printf(" -o s extension for new hmm files as source\n"); printf(" -w mmf Save all HMMs to macro file mmf s as source\n"); printf(" -x s extension for hmm files none\n"); @@ -259,6 +290,11 @@ int main(int argc, char *argv[]) if (NextArg()!=STRINGARG) HError(2619,"HHEd: Input HMM definition directory expected"); hmmDir = GetStrArg(); break; + case 'n': + if (NextArg() != STRINGARG) + HError(2619, "HHEd: Output ANN def file name expected"); + nmfFn = GetStrArg(); + break; case 'o': if (NextArg()!=STRINGARG) HError(2619,"HHEd: Output HMM file extension expected"); @@ -308,7 +344,7 @@ int main(int argc, char *argv[]) Initialise(GetStrArg()); - if (hset->logWt == TRUE) HError(999,"HHEd requires linear weights"); + if (hset->logWt == TRUE) HError(2690,"HHEd requires linear weights"); DoEdit(editFn); Exit(0); return (0); /* never reached -- make compiler happy */ @@ -473,7 +509,7 @@ typedef enum { baseNorm=0, baseLeft, baseRight, baseMono } baseType; baseMono (monophone); baseRight (right biphone); baseLeft (left biphone) */ HLink FindBaseModel(HMMSet *hset,LabId id,baseType type) { - char baseName[255],buf[255],*p; + char baseName[255],buf[255],*p,*p2; LabId baseId; MLink ml; @@ -490,8 +526,39 @@ HLink FindBaseModel(HMMSet *hset,LabId id,baseType type) strcpy(baseName,buf); } } - if ((baseId = GetLabId(baseName,FALSE))==NULL) - HError(2635,"FindBaseModel: No Base Model %s for %s",baseName,id->name); + if ((baseId = GetLabId(baseName,FALSE))==NULL) { + /* problem could be due to mappings ... try no context/no tone */ + strcpy(buf,baseName); + if ((p = strrchr(buf,'^')) != NULL) { + *p = '\0'; + baseId = GetLabId(buf,FALSE); + if (baseId == NULL) { + strcpy(buf,baseName); + if ((p2 = strrchr(buf,';')) != NULL) { + /* either tone by itself or position by itself */ + /* try position first */ + *p2 = '\0'; + baseId = GetLabId(buf,FALSE); + if (baseId== NULL) { + /* then try tone */ + strcpy(buf,baseName); + while (*p2 != '\0') { + *p = *p2; + p++; p2++; + } + *p = '\0'; + baseId = GetLabId(buf,FALSE); + } + } + } + } else if ((p = strrchr(buf,';')) != NULL) { + *p = '\0'; + baseId = GetLabId(buf,FALSE); + } + if (baseId == NULL) + HError(2635,"FindBaseModel: No Base Model %s for %s",baseName,id->name); + strcpy(baseName,buf); + } ml = FindMacroName(hset,'l',baseId); if (ml==NULL) HError(2635,"FindBaseModel: Cannot Find HMM %s in Current List",baseName); @@ -717,6 +784,7 @@ void PurgeMacros(HMMSet *hset) SetMacroUse(q,n); } } + /* Delete unused macros in next pass */ for (h=0; hmtab[h]; q!=NULL; q=q->next) { @@ -727,6 +795,7 @@ void PurgeMacros(HMMSet *hset) DeleteMacro(hset,q); } } + /* Finally unmark all macros */ for (h=0; hmtab[h]; q!=NULL; q=q->next) { @@ -737,6 +806,7 @@ void PurgeMacros(HMMSet *hset) SetMacroUse(q,n); } } + } /* -------------------- Vector/Matrix Resizing Operations -------------------- */ @@ -897,7 +967,7 @@ TriMat ChopTriMat(TriMat mat, int i, int j, int k) /* SplitStreams: split streams of given HMM as per swidth info */ void SplitStreams(HMMSet *hset,StateInfo *si,Boolean simple,Boolean first) { - int j,s,S,m,M,width,V,next; + int j,s,S,m,M,width,next; StreamElem *ste,*oldste; MixtureElem *me,*oldme; MixPDF *mp, *oldmp; @@ -905,7 +975,7 @@ void SplitStreams(HMMSet *hset,StateInfo *si,Boolean simple,Boolean first) int epos[4]; int eposIdx; - S = hset->swidth[0]; V = hset->vecSize; + S = hset->swidth[0]; hasN = HasNulle(hset->pkind); oldste = si->pdf+1; ste = (StreamElem *)New(hset->hmem,S*sizeof(StreamElem)); @@ -1322,11 +1392,11 @@ void SplitMix(MixtureElem *mi,MixtureElem *m01,MixtureElem *m02,int vSize) float x; TriMat mat=NULL; - splitcount = (int) mi->mpdf->hook + 1; + splitcount = (int) (long int)mi->mpdf->hook + 1; m01->mpdf = CloneMixPDF(hset,mi->mpdf,FALSE); m02->mpdf = CloneMixPDF(hset,mi->mpdf,FALSE); m01->weight = m02->weight = mi->weight/2.0; - m01->mpdf->hook = m02->mpdf->hook = (void *)splitcount; + m01->mpdf->hook = m02->mpdf->hook = (void *)(long int)splitcount; if (mi->mpdf->ckind==FULLC || mi->mpdf->ckind==LLTC) { mat = CreateTriMat(&tmpHeap,vSize); CovInvert(mi->mpdf->cov.inv,mat); @@ -1574,12 +1644,12 @@ void UntieMix(ILink ilist) ILink i; MixtureElem *me; MixPDF *mp; - int nu,vSize; + int nu; for (i=ilist; i!=NULL; i=i->next) { me = (MixtureElem *)i->item; if (me->weight > MINMIX) { - mp = me->mpdf; vSize = VectorSize(mp->mean); + mp = me->mpdf; nu = mp->nUse; mp->nUse = 0; if (nu==1) @@ -2013,7 +2083,7 @@ void Clustering(ILink ilist, int *numReq, float threshold, CLink p; ILink l; float ming,min; - int i,j,k,n,numItems; + int i,j,k,numItems; char buf[40]; if (badGC) { @@ -2039,7 +2109,6 @@ void Clustering(ILink ilist, int *numReq, float threshold, SetGDist(cvec,idist,gdist,numClust); /* recompute gdist */ ming = MinGDist(gdist,&i,&j,numClust); } - n = numClust; if (occStatsLoaded) { if (trace & T_IND) { printf(" Via %d items before removing outliers\n",numClust); @@ -2117,16 +2186,16 @@ int HeaviestMix(char *hname, MixtureElem *me, int M) gThresh = meanGC - 4.0*stdGC; maxm = 1; mp = me[1].mpdf; - max = me[1].weight - (int)mp->hook; - if ((int)mp->hook < 5000 && mp->gConst < gThresh) { + max = me[1].weight - (long int)mp->hook; + if ((long int)mp->hook < 5000 && mp->gConst < gThresh) { max -= 5000.0; mp->hook = (void *)5000; HError(-2637,"HeaviestMix: mix 1 in %s has v.small gConst [%f]", hname,mp->gConst); } for (m=2; m<=M; m++) { mp = me[m].mpdf; - w = me[m].weight - (int)mp->hook; - if ((int)mp->hook < 5000 && mp->gConst < gThresh) { + w = me[m].weight - (long int)mp->hook; + if ((long int)mp->hook < 5000 && mp->gConst < gThresh) { w -= 5000.0; mp->hook = (void *)5000; HError(-2637,"HeaviestMix: mix %d in %s has v.small gConst [%f]", m,hname,mp->gConst); @@ -2138,8 +2207,8 @@ int HeaviestMix(char *hname, MixtureElem *me, int M) if (me[maxm].weight<=MINMIX) HError(2697,"HeaviestMix: heaviest mix is defunct!"); if (trace & T_DET) { - printf(" : Split %d (weight=%.3f, count=%d, score=%.3f)\n", - maxm, me[maxm].weight, (int)me[maxm].mpdf->hook, max); + printf(" : Split %d (weight=%.3f, count=%ld, score=%.3f)\n", + maxm, me[maxm].weight, (long int)me[maxm].mpdf->hook, max); fflush(stdout); } return maxm; @@ -2464,12 +2533,12 @@ Tree *CreateTree(ILink ilist,LabId baseId,int state) hmm = ilist->owner; n=hmm->numStates; for (i=ilist; i!=NULL; i=i->next) { - hmm = i->owner; strcpy(buf,HMMPhysName(hset,hmm)); TriStrip(buf); + hmm = i->owner; strcpy(buf,HMMPhysName(hset,hmm)); FTriStrip(buf); MapTreeName(buf); id = GetLabId(buf,FALSE); if (tree->baseId != id) - HError(-2663,"CreateTree: different base phone %s in item list", - buf); + HError(-2663,"CreateTree: different base phone %s in item list for %s", + buf,tree->baseId->name); if (state>0) { if (hmm->svec+state != (StateElem *)i->item) HError(2663,"CreateTree: attempt to cluster different states"); @@ -2960,8 +3029,8 @@ void TieLeafNodes(Tree *tree, char *macRoot) macRoot is the root prefix of the name to use in the tie */ void BuildTree(ILink ilist,float threshold, char *macRoot) { - int i,j,l,N,snum,state,numItems; - char buf[256]; + int i,j,l,snum,state,numItems; + char buf[MAXSTRLEN]; HMMDef *hmm; CLink clHead,cl; ILink p; @@ -2980,14 +3049,13 @@ void BuildTree(ILink ilist,float threshold, char *macRoot) /* Check object consistency */ hmm = ilist->owner; /* any HMM will do */ - N = hmm->numStates; for(p=ilist;p!=NULL;p=p->next) ChkTreeObject(p); /* Create a new tree in tree list */ /* Find base name and state if any */ hmm = ilist->owner; - strcpy(buf,HMMPhysName(hset,hmm)); TriStrip(buf); + strcpy(buf,HMMPhysName(hset,hmm)); FTriStrip(buf); MapTreeName(buf); labid = GetLabId(buf,TRUE); @@ -3123,17 +3191,24 @@ Ptr AssignStructure(LabId id, int state) MLink m; /* First find Tree to use */ - strcpy(buf,id->name); TriStrip(buf); - MapTreeName(buf); + strcpy(buf,id->name); FTriStrip(buf); + MapTreeName(buf); tid = GetLabId(buf,FALSE); for (tree=treeList;tree!=NULL;tree=tree->next) { if (tree->baseId == tid && tree->state == state) break; } if (tree==NULL && state<0) return(NULL); - if (tree==NULL) - HError(2662,"AssignStructure: cannot find tree for %s state %d", - id->name,state); - + if (tree==NULL) { + if (useModelName) { + HError(2662,"AssignStructure: cannot find tree for %s state %d", + id->name,state); + } else { + /* not using model name - must be a global tree - match state */ + for (tree=treeList;tree!=NULL;tree=tree->next) { + if (tree->state == state) break; + } + } + } /* Then move down tree until state is found */ node = tree->root; if (trace & T_DET) { @@ -3164,15 +3239,25 @@ HLink FindProtoModel(LabId model) MLink q; strcpy(phone,model->name); - TriStrip(phone); + FTriStrip(phone); for (h=0; hmtab[h]; q!=NULL; q=q->next) if (q->type=='h') { strcpy(buf,q->id->name); - TriStrip(buf); + FTriStrip(buf); if (strcmp(phone,buf)==0) return ((HLink) q->structure); } - HError(2662,"FindProtoModel: no proto for %s in hSet",model->name); + if (useModelName) { + HError(2662,"FindProtoModel: no proto for %s in hSet",model->name); + } else { + for (h=0; hmtab[h]; q!=NULL; q=q->next) + if (q->type=='h') { + printf("%s\n",q->id->name); + fflush(stdout); + return ((HLink) q->structure); + } + } return NULL; } @@ -3433,7 +3518,7 @@ Tree *LoadTree(char *name,Source *src) void LoadTreesCommand(void) { Source src; - char qname[256],buf[1024],info[256]; + char qname[256],buf[4096],info[256]; char fn[256]; ChkedAlpha("LT trees files name",fn); /* get name of trees file */ @@ -3546,6 +3631,118 @@ void CloneCommand(void) SwapLists(hset,tmpSet); } +/* -------------------- CM - Concatenate Command ---------------------- */ + +/* ConcatenateCommand: Concatenate hmms to synthesize a new hmm */ +void ConcatenateCommand(void) +{ + int i = 0, j = 0, k = 0, n = 0, ns = 0, d = 0; + char buf[255], baset[255]; + char **buf2 = NULL; + LabId Id = NULL, tId = NULL; + StateElem *t = NULL; + MLink macroName = NULL; + HLink *src = NULL, tgt = NULL; + + ChkedAlpha("target HMM name", buf); + n = ChkedInt("number of HMMs to concantenate", 1, 16); + buf2 = (char **)New(&gstack, (n+1) * sizeof(char *)); + /* list of source HMMs */ + src = (HLink *)New(&gstack, (n+1) * sizeof(HLink)); + for (i=1; i<=n; i++) { + buf2[i] = (char *)New(&gstack, 256 * sizeof(char)); + ChkedAlpha("source HMM name", buf2[i]); + Id = GetLabId(buf2[i], FALSE); + macroName = FindMacroName(hset, 'l', Id); + if(macroName == NULL) { + HError(2674,"ConcatenateCommand: Unknown label %s", Id->name); + } + src[i] = (HLink) macroName->structure; + ns += src[i]->numStates; + } + /* total number states of new HMM */ + ns = ns - n*2 + 2; + + if (trace & T_BID) { + fprintf(stdout, "\nCM synthesizing %d state HMM %s using %d HMMs: ", ns, buf, n); + for (i=1; i<=n; i++) { + fprintf(stdout, "%s ", buf2[i]); + } + fprintf(stdout, "\n"); + fflush(stdout); + } + + Id = GetLabId(buf, TRUE); + strcpy(baset, Id->name); + TriStrip(baset); + strcat(baset, "_t"); + tgt = (HLink) New(hset->hmem, sizeof(HMMDef)); + tgt->owner = hset; + + tgt->numStates = ns; + tgt->dur = src[1]->dur; + t = (StateElem *)New(hset->hmem, (tgt->numStates - 2) * sizeof(StateElem)); + tgt->svec = t-2; + /* state vector of new HMM */ + for (i=1; i<=n; i++) { + for (j=2; jnumStates; j++) { + t->info = src[i]->svec[j].info; + t++; + } + } + + /* block diagnoanal structure transition matrix of new HMM */ + tId = GetLabId(baset, FALSE); + if (tId == NULL) { + tId = GetLabId(baset, TRUE); + } + macroName = FindMacroName(hset, 't', tId); + /* create new transition matrix if necessary */ + if (macroName == NULL) { + tgt->transP = CreateSMatrix(hset->hmem, ns, ns); + for (i=1; i<=ns; i++) { + for (j=1; j<=ns; j++) { + tgt->transP[i][j] = LZERO; + } + } + d = 0; + for (i=1; i<=n; i++) { + if (i == 1) { + for (j=1; j<=src[i]->numStates; j++) { + for (k=1; k<=src[i]->numStates; k++) { + tgt->transP[j][k] = src[i]->transP[j][k]; + } + } + d += (src[i]->numStates-1); + } + else { + for (j=2; j<=src[i]->numStates; j++) { + for (k=2; k<=src[i]->numStates; k++) { + tgt->transP[j-1+d][k-1+d] = src[i]->transP[j][k]; + } + } + d += (src[i]->numStates-2); + } + } + NewMacro(hset, fidx, 't', tId, tgt->transP); + } + /* use found ones */ + else { + tgt->transP = (SMatrix) macroName->structure; + } + IncUse(tgt->transP); + + tgt->hook = NULL; tgt->nUse = 1; + NewMacro(hset, fidx, 'h', Id, tgt); + + if (trace & T_BID) { + ShowMacros(tgt); + } + + Dispose(&gstack, buf2); +} + + /* -------------------- DP - Duplicate Command ---------------------- */ SVector DupSVector(SVector v) @@ -3597,7 +3794,6 @@ STriMat DupSTriMat(STriMat m) MixPDF *DupMixPDF(MixPDF *s, Boolean frc) { MixPDF *t; /* the target */ - int vSize; if (s->nUse>0 && !frc) { /* shared struct so just return ptr to it */ if ((t=(MixPDF *) s->hook)==NULL) @@ -3605,7 +3801,6 @@ MixPDF *DupMixPDF(MixPDF *s, Boolean frc) ++t->nUse; return t; } - vSize = VectorSize(s->mean); t = (MixPDF*) New(&hmmHeap,sizeof(MixPDF)); t->nUse = 0; t->hook = NULL; t->ckind=s->ckind; t->gConst = s->gConst; @@ -4391,16 +4586,16 @@ void CompactCommand(void) if (q->type=='l') { hmm=(HLink) q->structure; if (hmm->hook!=NULL && hmm->hook!=hmm) { - NewMacro(hset,fidx,'L',q->id,hmm->hook); + NewMacro(hset,fidx,'1',q->id,hmm->hook); /* cz277 - ANN */ DeleteMacro(hset,q); } } for (h=0; hmtab[h]; q!=NULL; q=q->next) - if (q->type=='L') { + if (q->type=='1') { /* cz277 - ANN */ hset->numLogHMM++;hset->numMacros--; - q->type='l'; + q->type='l'; /* cz277 - ANN */ } ResetHooks(hset,"h"); @@ -4592,44 +4787,48 @@ void SetStreamWidthCommand(void) fflush(stdout); } if (hset->swidth[s]==n) return; - NewHMMScan(hset,&hss); - if (!(hss.isCont || (hss.hset->hsKind == TIEDHS))) { - HError(2640,"SetStreamWidthCommand: Can only resize continuous and tied systems"); - } - while(GoNextMix(&hss,FALSE)) { - if (hss.s!=s) continue; - mp = hss.me->mpdf; - mp->mean=ResizeSVector(hset,mp->mean,n,'u',0.0); - switch(mp->ckind) { - case DIAGC: - mp->cov.var=ResizeSVector(hset,mp->cov.var,n,'v',1.0); - break; - case FULLC: - mp->cov.inv=ResizeSTriMat(hset,mp->cov.inv,n,'i',1.0); - break; - default: - HError(2640,"SetStreamWidthCommand: Can only resize DIAGC or FULLC"); - } - if (trace & (T_SIZ | T_DET)) { - if (nedit==0) printf(" For model.state["),hmm=NULL; - if (hmm!=hss.hmm) - printf("]\n %12s.state",hss.mac->id->name),c='[',hmm=hss.hmm; - printf("%c%d",c,hss.i);c=','; - fflush(stdout); - } - nedit++; - } - if (trace & (T_SIZ | T_DET)) - printf("]\n"),fflush(stdout); - EndHMMScan(&hss); - /* Now varFloor */ - SetVFloor(hset,vf,0.0); - if (FindMacroStruct(hset,'v',vf[s])!=NULL) { - if (trace & T_BID) - printf(" Resizing varFloor\n"); - ResizeSVector(hset,vf[s],n,'v',0.0); + + /* cz277 - ANN */ + if (hset->hsKind != HYBRIDHS) { + NewHMMScan(hset,&hss); + if (!(hss.isCont || (hss.hset->hsKind == TIEDHS))) { + HError(2640,"SetStreamWidthCommand: Can only resize continuous and tied systems"); + } + while(GoNextMix(&hss,FALSE)) { + if (hss.s!=s) continue; + mp = hss.me->mpdf; + mp->mean=ResizeSVector(hset,mp->mean,n,'u',0.0); + switch(mp->ckind) { + case DIAGC: + mp->cov.var=ResizeSVector(hset,mp->cov.var,n,'v',1.0); + break; + case FULLC: + mp->cov.inv=ResizeSTriMat(hset,mp->cov.inv,n,'i',1.0); + break; + default: + HError(2640,"SetStreamWidthCommand: Can only resize DIAGC or FULLC"); + } + if (trace & (T_SIZ | T_DET)) { + if (nedit==0) printf(" For model.state["),hmm=NULL; + if (hmm!=hss.hmm) + printf("]\n %12s.state",hss.mac->id->name),c='[',hmm=hss.hmm; + printf("%c%d",c,hss.i);c=','; + fflush(stdout); + } + nedit++; + } + if (trace & (T_SIZ | T_DET)) + printf("]\n"),fflush(stdout); + EndHMMScan(&hss); + /* Now varFloor */ + SetVFloor(hset,vf,0.0); + if (FindMacroStruct(hset,'v',vf[s])!=NULL) { + if (trace & T_BID) + printf(" Resizing varFloor\n"); + ResizeSVector(hset,vf[s],n,'v',0.0); + } + badGC = TRUE; } - badGC = TRUE; hset->swidth[s]=n; size=0; @@ -5266,7 +5465,7 @@ void FloorVectorCommand(void) buf[strlen(mac)]='\0'; if (strcmp(mac,buf)!=0) /* not a varFloor */ continue; - assert(SMAX<10); s=h-'0'; + /*assert(SMAX<10);*/ s=h-'0'; if(s<1||s>S) HError(2613,"FloorVectorCommand: undefined stream %d in HMM set",s); mac[strlen(buf)]=h; @@ -5551,19 +5750,1519 @@ void ProjectCommand(void) xform = hset->semiTied; if ((xform == NULL) || (hset->projSize == 0)) - HError(999,"Can not only project with semitied XForm and PROJSIZE>0"); + HError(2691,"Can not only project with semitied XForm and PROJSIZE>0"); /* check that this is a reasonable command to run */ if (xform->bclass->numClasses != 1) - HError(999,"Can only store as input XForm with global transform"); + HError(2691,"Can only store as input XForm with global transform"); if (hset->swidth[0] != 1) - HError(999,"Can only store as input XForm with single stream"); + HError(2691,"Can only store as input XForm with single stream"); if (hset->xf != NULL) - HError(999,"Can not store as input XForm if HMMSet already has an input XForm"); + HError(2691,"Can not store as input XForm if HMMSet already has an input XForm"); UpdateProjectModels(hset,newDir); } +/* ----------------------- IL/PL/EL - Add/Pop/Erase an ANN Layer --------------------- */ + + +static NVecBundle *AddOneNVecBundle(char *invoker, char *kwd, HMMSet *curset, Boolean existmacro) { + LabId id; + MLink m; + char buf[MAXSTRLEN]; + int intVal; + NVecBundle *bundle; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~V") == 0) { + ChkedAlpha("NVecBundle macro name expected", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'V', id)) != NULL) { + if (existmacro == TRUE) + return (NVecBundle *) m->structure; + else + HError(2676, "%s: Macro named ~V \"%s\" already exists", invoker, id->name); + } + if (id == NULL) + id = GetLabId(buf, TRUE); + ChkedAlpha(" key word", buf); + } + else { /* anonymous macro */ + id = GetNextANNMacroName(invoker, curset, 'V'); + if (trace & T_BAS) + HError(-2675, "%s: Anonymous NVecBundle macro created, auto-name %s assigned", invoker, id->name); + } + /* read the rest things as usual */ + if (strcmp("", buf) != 0) + HError(2650, "%s: keyword expected, but %s was read in", invoker, buf); + intVal = ChkedInt("Vector size expected", 1, INT_MAX); + bundle = FetchNVecBundle(curset, id->name); + bundle->kind = SIBK; + bundle->variables = CreateNVector(curset->hmem, intVal); + ClearNVector(bundle->variables); + /* register the new macro */ + NewMacro(curset, fidx, 'V', id, bundle); + /* saves the model */ + saveHMMSet = TRUE; + + return bundle; +} + +void SetOneNVecBundle(HMMSet *hset) { + NVecBundle *bundle; + int intVal, i, j; + float floatVal=FLOAT_MAX; + char buf[MAXSTRLEN]; + + bundle = AddOneNVecBundle("SetOneNVecBundle", NULL, hset, TRUE); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) { + intVal = ChkedInt("Number of values", 1, bundle->variables->vecLen); + for (i = 0, j = 0; i < bundle->variables->vecLen; ++i) { + if (j < intVal) + floatVal = ChkedFloat("initial value", -FLOAT_MAX, FLOAT_MAX); + bundle->variables->vecElems[i] = floatVal; +#ifdef CUDA + SyncNVectorHost2Dev(bundle->variables); +#endif + } + } + /* saves the model */ + saveHMMSet = TRUE; +} + +static void ChangeDimOneNVecBundle(char *invoker, NVecBundle *bundle, int nlen) { + NVector *vector; + + if (nlen != bundle->variables->vecLen) { + if (bundle->nUse > 1) + HError(2640, "%s: Changing dimension of shared NVecBundle is not allowed by v3.5"); + vector = bundle->variables; + bundle->variables = CreateNVector(hset->hmem, nlen); + ClearNVector(bundle->variables); + CopyPartialNVector2NVector(vector, bundle->variables); + /*if (trace & T_INT) + InformByNVecBundleTrace(invoker, hset, bundle);*/ + /* saves the model */ + saveHMMSet = TRUE; + } +} + +/*void ChangeDimOneMacroNVecBundle(HMMSet *hset) { + MLink m; + NVecBundle *bundle; + int nlen; + + nlen = ChkedInt("New vector length", 1, INT_MAX); + bundle = AddOneNVecBundle("ChangeDimOneNVecBundle", NULL, hset, TRUE); + ChangeDimOneNVecBundle("ChangeDimOneMacroNVecBundle", bundle, nlen); +}*/ + +/*static void InformByNMatBundleTrace(char *invoker, HMMSet *hset, NMatBundle *bundle) { + MLink m; + BTLink trace; + LELink layerElem; + + trace = (BTLink) bundle->hook; + while (trace != NULL) { + m = FindMacroStruct(hset, 'L', trace->layerElem); + if (m == NULL) + HError(9999, "%s: Fail to find the macro associated linked to the bundle"); + layerElem = (LELink) layerElem->structure; + if (layerElem->nodeNum != bundle->variables->rowNum || layerElem->inputDim != bundle->variables->colNum) + printf("%s: ~L \"%s\" probably need to be modified as well\n", m->id->name); + trace = trace->nextTrace; + } +}*/ + +static NMatBundle *AddOneNMatBundle(char *invoker, char *kwd, HMMSet *curset, Boolean existmacro) { + LabId id; + MLink m = NULL; + char buf[MAXSTRLEN]; + int intVal[2]; + NMatBundle *bundle; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~M") == 0) { + ChkedAlpha("NMatBundle macro name expected", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'M', id)) != NULL) { + if (existmacro == TRUE) + return (NMatBundle *) m->structure; + else + HError(2676, "%s: Macro named ~M \"%s\" already exists", invoker, id->name); + } + if (id == NULL) + id = GetLabId(buf, TRUE); + ChkedAlpha(" key word", buf); + } + else { /* anonymous macro */ + id = GetNextANNMacroName(invoker, curset, 'M'); + if (trace & T_BAS) + HError(-2675, "%s: Anonymous NMatBundle macro created, auto-name %s assigned", invoker, id->name); + } + /* read the rest things as usual */ + if (strcmp("", buf) != 0) + HError(2650, "%s: keyword expected, but %s was read in", invoker, buf); + intVal[0] = ChkedInt("Matrix row number expected", 1, INT_MAX); + intVal[1] = ChkedInt("Matrix column number expected", 1, INT_MAX); + bundle = FetchNMatBundle(curset, id->name); + bundle->kind = SIBK; + bundle->variables = CreateNMatrix(curset->hmem, intVal[0], intVal[1]); + ClearNMatrix(bundle->variables, intVal[0]); + /* register the new macro */ + NewMacro(curset, fidx, 'M', id, bundle); + /* saves the model */ + saveHMMSet = TRUE; + + return bundle; +} + +void SetOneNMatBundle(HMMSet *hset) { + NMatBundle *bundle; + int intVal, i, j, n; + float floatVal=FLOAT_MAX; + char buf[MAXSTRLEN]; + + bundle = AddOneNMatBundle("SetOneNMatBundle", NULL, hset, TRUE); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) { + n = bundle->variables->rowNum * bundle->variables->colNum; + intVal = ChkedInt("Number of values", 1, n); + for (i = 0, j = 0; i < n; ++i) { + if (j < intVal) + floatVal = ChkedFloat("initial value", -FLOAT_MAX, FLOAT_MAX); + bundle->variables->matElems[i] = floatVal; +#ifdef CUDA + SyncNMatrixHost2Dev(bundle->variables); +#endif + } + } + /* saves the model */ + saveHMMSet = TRUE; +} + +static void ChangeDimOneNMatBundle(char *invoker, NMatBundle *bundle, int nrows, int ncols) { + NMatrix *matrix; + + if (nrows != bundle->variables->rowNum || ncols != bundle->variables->colNum) { + if (bundle->nUse > 1) + HError(2640, "%s: Changing dimensions of shared NMatBundle is not allowed by v3.5", invoker); + matrix = bundle->variables; + bundle->variables = CreateNMatrix(hset->hmem, nrows, ncols); + ClearNMatrix(bundle->variables, nrows); + CopyPartialNMatrix2NMatrix(matrix, bundle->variables); + /*if (trace & T_INT) + InformByNMatBundleTrace(invoker, hset, bundle);*/ + /* saves the model */ + saveHMMSet = TRUE; + } +} + +/*void ChangeDimOneNMatBundle(HMMSet *hset) { + MLink m; + NMatBundle *bundle; + int nrows, ncols; + NMatrix matrix; + + nrows = ChkedInt("New matrix row number", 0, INT_MAX); + ncols = ChkedInt("New matrix column number", 0, INT_MAX); + bundle = AddOneNMatBundle("ChangeDimOneNMatBundle", NULL, hset, TRUE); + if (nrows == 0) + nrows = bundle->variables->rowNum; + if (ncols == 0) + ncols = bundle->variables->colNum; + ChangeDimOneNMatBundle("ChangeDimOneNMatBundle", bundle, nrows, ncols); +}*/ + + +/* cz277 - 1007 */ +static ADLink GetANNDefByMacName(char *invoker, char *kwd, HMMSet *curset) { + LabId id; + MLink m; + ADLink annDef=NULL; + char buf[MAXSTRLEN]; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~N") == 0) + ChkedAlpha("Target ANN macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'N', id)) != NULL) + annDef = (ADLink) m->structure; + else + HError(2635, "%s: Cannot find target ANN model", invoker); + + return annDef; +} + +/* owner and pos could be NULL */ +static LELink GetLayerElemByMacName(char *invoker, char *kwd, HMMSet *curset, ADLink *owner, int *pos) { + LELink layerElem=NULL; + int i=-1; + ADLink annDef=NULL; + LabId id; + MLink m; + char buf[MAXSTRLEN]; + + if (kwd == NULL) + ChkedAlpha("Target layer macro type", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~L") == 0) { + ChkedAlpha("ANN layer macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(curset, 'L', id)) != NULL) + layerElem = (LELink) m->structure; + else + HError(2635, "%s: Cannot find the target ANN layer", invoker); + annDef = layerElem->ownerHead->annDef; /* at the moment, not layer tying */ + for (i = 0; i < annDef->layerNum; ++i) + if (annDef->layerList[i] == layerElem) + break; + } + else + HError(2632, "%s: Unsupported target ANN layer macro type", invoker); + if (owner != NULL){ + if(annDef==NULL) HError(2632,"%s: ANN definition not set",invoker); + *owner = annDef; + } + if (pos != NULL){ + if(i<0) HError(2632,"%s: position not set",invoker); + *pos = i; + } + if(!layerElem) HError(2632,"%s: layer element not set",invoker); + + return layerElem; +} + +/* cz277 - 1007 */ +static FELink ParseNextFeaElem(char *invoker, char *kwd, int *feaIdx, int *feaDim) { + char buf[MAXSTRLEN]; + FELink feaElem; + int i, streamIdx=-1, intVal; + + /* */ + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "") != 0) + HError(2650, "%s: keyword expected", invoker); + feaElem = (FELink) New(hset->hmem, sizeof(FeaElem)); + feaElem->nUse = 0; + feaElem->dimOff = 0; + intVal = ChkedInt("Feature element index", -1, INT_MAX); + if (feaIdx != NULL) + *feaIdx = intVal; + feaElem->feaDim = ChkedInt("Feature element dimension", 1, INT_MAX); + if (feaDim != NULL) + *feaDim = feaElem->feaDim; + /* */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("Feature element source type", buf); + if (strcmp(buf, "") == 0) { + feaElem->inputKind = AUGFEAIK; + feaElem->feaSrc = NULL; + feaElem->augFeaIdx = ChkedInt("Augmented feature source index", 1, MAXAUGFEAS); + streamIdx = 1; + } + else if (strcmp(buf, "~L") == 0) { + feaElem->inputKind = ANNFEAIK; + feaElem->feaSrc = GetLayerElemByMacName(invoker, buf, hset, NULL, NULL); + ++feaElem->feaSrc->nDrv; + } + else if (strcmp(buf, "") == 0) { + feaElem->inputKind = INPFEAIK; + feaElem->feaSrc = NULL; + streamIdx = ChkedInt("Feature stream index", 1, hset->swidth[0]); + } + else { /* PARMKIND */ + if (hset->pkind != Str2ParmKind(buf)) + HError(2632, "%s: Input parmkind different from the input parmKind to the model", invoker); + feaElem->inputKind = INPFEAIK; + feaElem->feaSrc = NULL; + streamIdx = 1; + } + ChkedAlpha("Next keyword", buf); + } + else + HError(2650, "%s: keyword expected", invoker); + if (strcmp(buf, "") == 0) { + feaElem->dimOff = ChkedInt("Start dimension", 1, INT_MAX) - 1; + intVal = ChkedInt("End dimension", 2, INT_MAX); + if (feaElem->feaDim != intVal - feaElem->dimOff) + HError(2677, "%s: Inconsistent feature element dimension range", invoker); + ChkedAlpha("Next keyword", buf); + } + if (strcmp(buf, "") == 0) { + intVal = ChkedInt("Context feature expansion vector size", 1, INT_MAX); + feaElem->ctxMap = CreateIntVec(hset->hmem, intVal); + for (i = 1; i <= intVal; ++i) + feaElem->ctxMap[i] = ChkedInt("A context shift", -INT_MAX, INT_MAX); + } + else + HError(2650, "%s: keyword expected", invoker); + /* set extDim and srcDim fields*/ + feaElem->extDim = feaElem->feaDim * IntVecSize(feaElem->ctxMap); + if (feaElem->inputKind == ANNFEAIK) + feaElem->srcDim = feaElem->feaSrc->nodeNum; + else + feaElem->srcDim = feaElem->extDim; + /* add this feature element to hset->nInp, if needed */ + if (feaElem->inputKind == INPFEAIK || feaElem->inputKind == AUGFEAIK) { + if(streamIdx<0) HError(2678,"%s: stream index not set",invoker); + for (i = 0; i < hset->nInp[streamIdx]; ++i) + if (CmpFeaElem(hset->inpElem[streamIdx][i], feaElem)) + break; + if (i == hset->nInp[streamIdx]) { + if (i >= MAXINPUSE) + HError(2678, "%s: Maximum number of input feature usage reached, increase MAXINPUSE", invoker); + hset->inpElem[streamIdx][hset->nInp[streamIdx]++] = feaElem; + } + } + + return feaElem; +} + +/* cz277 - 1007 */ +FeaMix *AddOneFeaMix(char *invoker, char *kwd, Boolean existmacro) { + char buf[MAXSTRLEN]; + LabId id; + FeaMix *feaMix; + int i, feaIdx, feaDim; + MLink m = NULL; + + if (kwd == NULL) + ChkedAlpha("Next keyword", buf); + else + strcpy(buf, kwd); + if (strcmp(buf, "~F") == 0) { + ChkedAlpha("Macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'F', id)) != NULL) { + if (existmacro == TRUE) + return (FeaMix *) m->structure; + else + HError(2676, "%s: Feature mixture macro name %s occupied", invoker, id->name); + } + if (id == NULL) + id = GetLabId(buf, TRUE); + ChkedAlpha("Next keyword", buf); + } + else { + id = GetNextANNMacroName(invoker, hset, 'F'); + if (trace & T_BAS) + HError(-2675, "%s: Anonymous feature mixture macro created, auto-name %s assigned\n", invoker, id->name); + } + feaMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + if (strcmp(buf, "") == 0) { + feaMix->elemNum = ChkedInt("The elements in this feature mixture", 1, INT_MAX); + feaMix->mixDim = ChkedInt("The dimension of this feature mixture", 1, INT_MAX); + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + for (i = 0; i < feaMix->elemNum; ++i) + feaMix->feaList[i] = ParseNextFeaElem(invoker, NULL, &feaIdx, &feaDim); + } + else if (strcmp(buf, "") == 0) { + feaMix->elemNum = 1; + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * 1); + feaMix->feaList[0] = ParseNextFeaElem(invoker, buf, &feaIdx, &feaDim); + feaMix->mixDim = feaMix->feaList[0]->extDim; + } + else + HError(2650, "%s: Incorrect keyword for input feature", invoker); + /* reset owner num */ + feaMix->ownerNum = 0; + /* add a new macro */ + if (m == NULL) + NewMacro(hset, fidx, 'F', id, feaMix); + else + m->structure = (Ptr) feaMix; + /* saves the model */ + saveHMMSet = TRUE; + + return feaMix; +} + +/* cz277 - pact */ +static void InitActParmVecs(HMMSet *hset, LELink layerElem) { + int i, intVal; + NVecBundle *hyper = NULL; + char buf[MAXSTRLEN]; + + switch (layerElem->actfunKind) { + case AFFINEAF: + case HERMITEAF: + case LHUCRELUAF: + case PRELUAF: + case PARMRELUAF: + case LHUCSIGMOIDAF: + case PSIGMOIDAF: + case PARMSIGMOIDAF: + case LHUCSOFTRELUAF: + case PSOFTRELUAF: + case PARMSOFTRELUAF: + ChkedAlpha("Next keyword", buf); + break; + default: + return; + } + if (strcmp(buf, "") == 0) + hyper = AddOneNVecBundle("InitActParmVecs", NULL, hset, TRUE); + layerElem->actfunParmNum = 0; + if (strcmp(buf, "") == 0) { + layerElem->actfunParmNum = ChkedInt("Number of parameter vectors", 1, INT_MAX); + ChkedAlpha("Next keyword", buf); + } + else if (strcmp(buf, "") == 0) + layerElem->actfunParmNum = 1; + else + HError(2650, "InitActParmVecs: Unexpected keyword %s", buf); + layerElem->actfunVecs = (NVecBundle **) New(hset->hmem, (layerElem->actfunParmNum + 1) * sizeof(NVecBundle *)); + memset(layerElem->actfunVecs, 0, (layerElem->actfunParmNum + 1) * sizeof(NVecBundle *)); + layerElem->actfunVecs[0] = hyper; + for (i = 1; i <= layerElem->actfunParmNum; ++i) { + if (i != 1) { + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, " expected"); + } + intVal = ChkedInt("Parameter vector index", 1, layerElem->actfunParmNum + 1); + layerElem->actfunVecs[intVal] = AddOneNVecBundle("InitActParmVecs", NULL, hset, TRUE); + ++layerElem->actfunVecs[intVal]->nUse; + } + CheckActFunParameters(layerElem); + /* setup the tracing list */ + if (layerElem->actfunVecs != NULL) { + for (i = 0; i<= layerElem->actfunParmNum; ++i) { + layerElem->actfunVecs[i]->kind = SIBK; + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->actfunVecs[i]->hook); + } + } +} + +/* IL */ +void InsertOneANNLayer(void) { + int i, j, layerPos, layerNum; + ADLink annDef; + LELink layerElem; + LELink *layerList; + char buf[MAXSTRLEN]; + LabId id; + + /* get the target ANN model */ + ChkedAlpha("Target ANN macro type", buf); + if (strcmp(buf, "~N") != 0) + HError(2650, "InsertOneANNLayer: ~N macro type expected"); + ChkedAlpha("Target ANN macro name", buf); + annDef = GetANNDefByMacName("InsertOneANNLayer", buf, hset); + /* get target layer position */ + /* -1, add on the top */ + layerPos = ChkedInt("New layer insert position", -1 * annDef->layerNum, annDef->layerNum + 2); + if (layerPos >= 0 && layerPos < 2) + HError(2677, "InsertOneANNLayer: Illegal insert layer position"); + else if (layerPos >= 2) + layerPos -= 2; + else + layerPos = annDef->layerNum + 1 + layerPos; + /* get the layer element macro name */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "~L") == 0) { + ChkedAlpha("~L macro name", buf); + id = GetLabId(buf, FALSE); + /*if (id != NULL || (m = FindMacroName(hset, 'L', id)) != NULL)*/ + if (id != NULL) + HError(2676, "InsertOneANNLayer: Layer element macro name %s occupied", buf); + id = GetLabId(buf, TRUE); + /* get the layer kind */ + ChkedAlpha("next keyword", buf); + } + else { + id = GetNextANNMacroName("InsertOneANNLayer", hset, 'L'); + if (trace & T_BAS) + HError(-2675, "InsertOneANNLayer: Anonymous layer element macro created, auto-name %s assigned\n", id->name); + } + if (strcmp(buf, "") != 0) + HError(2650, "InsertOneANNLayer: expected"); + ChkedAlpha("next keyword", buf); + if (strcmp(buf, "") != 0) + HError(2650, "InsertOneANNLayer: expected"); + ChkedAlpha("layer kind string", buf); + layerElem = GenBlankLayer(hset->hmem); + layerElem->layerKind = Str2LayerKind(buf); + ChkedAlpha("Next key word", buf); + if (strcmp("", buf) != 0) + HError(2650, " expected"); + layerElem->feaMix = AddOneFeaMix("InsertOneANNLayer", NULL, TRUE); + layerElem->feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + ++layerElem->feaMix->nUse; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) { + ++layerElem->feaMix->feaList[i]->nUse; + if (layerElem->feaMix->feaList[i]->inputKind == ANNFEAIK) + ++layerElem->feaMix->feaList[i]->feaSrc->nDrv; + } + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(2640, "InsertOneANNLayer: Not implemented yet!"); break; + case CONVOLUTIONLAK: HError(2640, "InsertOneANNLayer: Not implemented yet!"); break; + case PERCEPTRONLAK: + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + layerElem->wghtMat = AddOneNMatBundle("InsertOneANNLayer", NULL, hset, TRUE); + ++layerElem->wghtMat->nUse; + layerElem->nodeNum = layerElem->wghtMat->variables->rowNum; + layerElem->inputDim = layerElem->wghtMat->variables->colNum; + if (layerElem->inputDim != layerElem->feaMix->mixDim) + HError(2677, "InsertOneANNLayer: Feature mixture and weight matrix dimension inconsistent"); + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + layerElem->biasVec = AddOneNVecBundle("InsertOneANNLayer", NULL, hset, TRUE); + ++layerElem->biasVec->nUse; + if (layerElem->nodeNum != layerElem->biasVec->variables->vecLen) + HError(2677, "InsertOneANNLayer: Weight matrix and bias vector dimension inconsistent"); + CreateBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + ChkedAlpha("Activation kind string", buf); + layerElem->actfunKind = Str2ActFunKind(buf); + InitActParmVecs(hset, layerElem); + break; + case SUBSAMPLINGLAK: HError(2640, "InsertOneANNLayer: Not implemented yet!"); break; + default: + HError(2691, "InsertOneANNLayer: Unknown layer kind"); + } + ++layerElem->nUse; + NewMacro(hset, fidx, 'L', id, layerElem); + layerElem->ownerHead = hset->annSet->defsHead; + layerElem->ownerTail = hset->annSet->defsHead; + ++layerElem->ownerCnt; + /* insert the new layer */ + layerNum = annDef->layerNum + 1; + layerList = (LELink *) New(hset->hmem, layerNum * sizeof(LELink)); + for (i = 0, j = 0; i < layerNum; ++i) { + if (i == layerPos) + layerList[i] = layerElem; + else + layerList[i] = annDef->layerList[j++]; + } + annDef->layerList = layerList; + annDef->layerNum = layerNum; + /* */ + ChkedAlpha("Next keyword", buf); + if (strcmp("", buf) != 0) + HError(2650, "InsertOneANNLayer: expected"); + /* saves the model */ + saveHMMSet = TRUE; +} + +/* cz277 - 1007 */ +/* seed uses to be the position of layerElem */ +static void ChangeOneLayerDims(char *invoker, LELink layerElem, int seed, int nodeNum, int inputDim) { + int i; + MLink m; + + if (inputDim != layerElem->feaMix->mixDim) { + m = FindMacroStruct(hset, 'F', layerElem->feaMix); + if (m == NULL) + HError(2675, "%s: Anonymous feature mixture not allowed", invoker); + if (trace & T_BAS) + printf("%s: ~F \"%s\" dimension for weights may need to change\n", invoker, m->id->name); + } + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(2640, "%s: Not implemented yet!", invoker); break; + case CONVOLUTIONLAK: HError(2640, "%s: Not implemented yet!", invoker); break; + case PERCEPTRONLAK: + ChangeDimOneNMatBundle(invoker, layerElem->wghtMat, nodeNum, inputDim); + ChangeDimOneNVecBundle(invoker, layerElem->biasVec, nodeNum); + switch (layerElem->actfunKind) { + case AFFINEAF: + case HERMITEAF: + case LHUCRELUAF: + case PRELUAF: + case PARMRELUAF: + case LHUCSIGMOIDAF: + case PSIGMOIDAF: + case PARMSIGMOIDAF: + case LHUCSOFTRELUAF: + case PSOFTRELUAF: + case PARMSOFTRELUAF: + for (i = 1; i <= layerElem->actfunParmNum; ++i) + ChangeDimOneNVecBundle(invoker, layerElem->actfunVecs[i], nodeNum); + default: + break; + } + break; + case SUBSAMPLINGLAK: HError(2640, "%s: Not implemented yet!", invoker); break; + default: + HError(2691, "%s: Unknown layer kind", invoker); break; + } + layerElem->nodeNum = nodeNum; + layerElem->inputDim = inputDim; +} + +/* cz277 - 1007 */ +/* CF */ +void ChangeOneANNLayerInput(void) { + char buf[MAXSTRLEN]; + FeaMix *feaMix; + LELink layerElem=NULL; + int i, j; + + /* original feature mixture */ + ChkedAlpha("Target layer macro type", buf); + if (strcmp(buf, "~L") == 0) + layerElem = GetLayerElemByMacName("ChangeOneANNLayerInput", buf, hset, NULL, NULL); + else + HError(2650, "ChangeOneANNLayerInput: Unsupported target ANN layer macro"); + /* deuse the old feature mixture */ + for (i = 0, j = 0; j < layerElem->feaMix->ownerNum; ++i, ++j) { + if (layerElem->feaMix->ownerList[i] == layerElem) + ++j; + if (i != j) + layerElem->feaMix->ownerList[i] = layerElem->feaMix->ownerList[j]; + } + --layerElem->feaMix->ownerNum; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) { + --layerElem->feaMix->feaList[i]->nUse; + if (layerElem->feaMix->feaList[i]->inputKind == ANNFEAIK) + --layerElem->feaMix->feaList[i]->feaSrc->nDrv; + } + --layerElem->feaMix->nUse; + /* new feature mixture */ + feaMix = AddOneFeaMix("ChangeOneANNLayerInput", NULL, TRUE); + for (i = 0; i < feaMix->elemNum; ++i) + if (feaMix->feaList[i]->inputKind == ANNFEAIK) + ++feaMix->feaList[i]->feaSrc->nDrv; + /*ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "~F") == 0) { + feaMix = AddOneFeaMix("ChangeOneANNLayerInput", buf, TRUE); + ChkedAlpha("Feature mixture macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'F', id)) != NULL) + feaMix = (FeaMix *) m->structure; + else + HError(9999, "ChangeOneANNLayerInput: Unexisted feature mixture macro"); + for (i = 0; i < feaMix->elemNum; ++i) + if (feaMix->feaList[i]->inputKind == ANNFEAIK) + ++feaMix->feaList[i]->feaSrc->nDrv;; + } + else + feaMix = AddOneFeaMix("ChangeOneANNLayerInput", buf, TRUE);*/ + /* use the new feature mixture */ + feaMix->ownerList[layerElem->feaMix->ownerNum++] = layerElem; + ++feaMix->nUse; + for (i = 0; i < feaMix->elemNum; ++i) + ++feaMix->feaList[i]->nUse; + /*if (feaMix->feaList[i]->inputKind == ANNFEAIK) + --feaMix->feaList[i]->feaSrc->nDrv;*/ + layerElem->feaMix = feaMix; +} + +/* CD */ +void ChangeOneANNLayerDims(void) { + int nodeNum, inputDim, layerPos; + LELink layerElem; + + layerElem = GetLayerElemByMacName("ChangeOneANNLayerDims", NULL, hset, NULL, &layerPos); + /* get the new nodeNum */ + nodeNum = ChkedInt("Node number of the new layer", 0, INT_MAX); + if (nodeNum == 0) + nodeNum = layerElem->nodeNum; + /* get the new inputDim */ + inputDim = ChkedInt("Input dimension of the new layer", 0, INT_MAX); + if (inputDim == 0) + inputDim = layerElem->inputDim; + /* change the dimensions */ + ChangeOneLayerDims("ChangeOneANNLayerDims", layerElem, layerPos, nodeNum, inputDim); +} + +/* EL */ +void EraseOneANNLayer(void) { + int layerPos; + LELink layerElem=NULL; + float randScale = 1.0; + char buf[MAXSTRLEN]; + + /* original feature mixture */ + ChkedAlpha("Target layer macro type", buf); + if (strcmp(buf, "~L") == 0) + layerElem = GetLayerElemByMacName("EraseOneANNLayer", buf, hset, NULL, &layerPos); + else + HError(2650, "EraseOneANNLayer: Unsupported target ANN layer macro"); + /* take action */ + /*actfunKind = layerElem->actfunKind;*/ + RandANNLayer(layerElem, layerPos, randScale); + /*layerElem->actfunKind = actfunKind;*/ + /* saves the model */ + saveHMMSet = TRUE; +} + +/* DL */ +/* The other feature mixtures referencing this layer are not removed */ +void DeleteOneANNLayer(void) { + LELink layerElem; + FeaMix *feaMix; + ADLink annDef; + int i, layerPos; + + layerElem = GetLayerElemByMacName("DeleteOneANNLayer", NULL, hset, &annDef, &layerPos); + /* remove feature mixture */ + if (layerElem->feaMix != NULL) { + feaMix = layerElem->feaMix; + /* decrease nUse */ + for (i = 0; i < feaMix->elemNum; ++i) + --feaMix->feaList[i]->nUse; + --feaMix->nUse; + /* decrease nDrv */ + for (i = 0; i < feaMix->elemNum; ++i) + if (feaMix->feaList[i]->inputKind == ANNFEAIK) + --feaMix->feaList[i]->feaSrc->nDrv; + /* remove this owner */ + --feaMix->ownerNum; + for (i = layerPos; i < feaMix->ownerNum; ++i) + feaMix->ownerList[i] = feaMix->ownerList[i + 1]; + } + /* remove the rest */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(2640, "DeleteOneANNLayer: Not implemented yet"); break; + case CONVOLUTIONLAK: HError(2640, "DeleteOneANNLayer: Not implemented yet"); break; + case PERCEPTRONLAK: + CancelBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->wghtMat->hook); + --layerElem->wghtMat->nUse; + CancelBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->biasVec->hook); + --layerElem->biasVec->nUse; + if (layerElem->actfunVecs != NULL) { + for (i = 0; i <= layerElem->actfunParmNum; ++i) { + if (layerElem->actfunVecs[i] != NULL) { + CancelBundleTrace(hset->hmem, layerElem, (BTLink *) &layerElem->actfunVecs[i]->hook); + --layerElem->actfunVecs[i]->nUse; + } + } + } + break; + case SUBSAMPLINGLAK: HError(2640, "DeleteOneANNLayer: Not implemented yet"); break; + default: + break; + } + /* remove the layer itself */ + layerElem->nUse = 0; + /* remove this layer */ + --annDef->layerNum; + for (i = layerPos; i < annDef->layerNum; ++i) + annDef->layerList[i] = annDef->layerList[i + 1]; + /* saves the model */ + saveHMMSet = TRUE; +} + +/* CA */ +void ChangeOneANNLayerActFun(void) { + LELink layerElem; + char buf[MAXSTRLEN]; + + layerElem = GetLayerElemByMacName("ChangeANNOneLayerActFun", NULL, hset, NULL, NULL); + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("New hidden activation function", buf); + layerElem->actfunKind = Str2ActFunKind(buf); + /* cz277 - pact */ + InitActParmVecs(hset, layerElem); + } + else + HError(2650, "ChangeOneANNLayerActFun: keyword expected"); + + /* saves the model */ + saveHMMSet = TRUE; +} + +static FeaMix *CloneOneFeaMix(FeaMix *srcMix) { + FeaMix *dstMix; + FELink srcElem, dstElem; + int i, j, n; + + dstMix = (FeaMix *) New(hset->hmem, sizeof(FeaMix)); + memcpy(dstMix, srcMix, sizeof(FeaMix)); + dstMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * srcMix->elemNum); + for (i = 0; i < srcMix->elemNum; ++i) { + dstMix->feaList[i] = (FELink) New(hset->hmem, sizeof(FeaElem)); + srcElem = srcMix->feaList[i]; + dstElem = dstMix->feaList[i]; + memcpy(dstElem, srcElem, sizeof(FeaElem)); + /* cz277 - many */ + n = IntVecSize(dstElem->ctxPool); + for (j = 1; j <= n; ++j) + dstElem->feaMats[j] = CreateNMatrix(hset->hmem, srcElem->feaMats[j]->rowNum, srcElem->feaMats[j]->colNum); + if (dstElem->hisMat != NULL) + dstElem->hisMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), dstElem->hisLen * dstElem->feaDim); + } + /* cz277 - many */ + /*dstMix->mixMat = CreateNMatrix(hset->hmem, GetNBatchSamples(), dstMix->mixDim);*/ + n = IntVecSize(dstMix->ctxPool); + for (i = 1; i <= n; ++i) + dstMix->mixMats[i] = CreateNMatrix(hset->hmem, GetNBatchSamples(), dstMix->mixDim); + + return dstMix; +} + +/* EF */ +void ExtendOneFeaMix(void) { + FeaMix *feaMix=NULL; + FELink incElem, *feaList; + LELink layerElem; + LabId id; + int i, j, incIdx, incDim, elemNum, layerPos = -1, seed; + char buf[MAXSTRLEN]; + MLink m; + + ChkedAlpha("Target macro type", buf); + if (strcmp(buf, "~L") == 0) { + layerElem = GetLayerElemByMacName("ExtendOneFeaMix", buf, hset, NULL, &layerPos); + /* if needed, clone layerElem->feaMix and update its owners and nUse */ + if (layerElem->feaMix->nUse > 1) { /* if shared */ + feaMix = CloneOneFeaMix(layerElem->feaMix); + --layerElem->feaMix->ownerNum; + for (i = 0, j = 0; i < layerElem->feaMix->ownerNum; ++i, ++j) { + if (layerElem->feaMix->ownerList[i] == layerElem) + ++j; + if (i != j) + layerElem->feaMix->ownerList[i] = layerElem->feaMix->ownerList[j]; + } + --layerElem->feaMix->nUse; + for (i = 0; i < layerElem->feaMix->elemNum; ++i) + --layerElem->feaMix->feaList[i]->nUse; + /* update feaMix's owners and nUse */ + feaMix->ownerNum = 1; + feaMix->ownerList[0] = layerElem; + feaMix->nUse = 1; + for (i = 0; i < feaMix->elemNum; ++i) + feaMix->feaList[i]->nUse = 1; + /* add it as a new macro */ + id = GetNextANNMacroName("ExtendOneFeaMix", hset, 'F'); + NewMacro(hset, fidx, 'F', id, feaMix); + layerElem->feaMix = feaMix; + } + else + feaMix = layerElem->feaMix; + } + else if (strcmp(buf, "~F") == 0) { + ChkedAlpha("Feature mixture macro name", buf); + id = GetLabId(buf, FALSE); + if (id != NULL && (m = FindMacroName(hset, 'F', id)) != NULL) + feaMix = (FeaMix *) m->structure; + else + HError(2679, "ExtendOneFeaMix: Unexisted feature mixture macro"); + } + else + HError(2650, "ExtendOneFeaMix: Unsupported target ANN layer macro"); + /* from now on, operate the feaMix pointer */ + incElem = ParseNextFeaElem("ExtendOneFeaMix", NULL, &incIdx, &incDim); + if (incIdx > 0 && incIdx <= feaMix->elemNum) + HError(2677, "ExtendOneFeaMix: Unacceptable new feature element index, please use -1 instead"); + /* append the new feature element */ + elemNum = feaMix->elemNum; + ++feaMix->elemNum; + feaList = feaMix->feaList; + feaMix->feaList = (FELink *) New(hset->hmem, sizeof(FELink) * feaMix->elemNum); + for (i = 0; i < elemNum; ++i) + feaMix->feaList[i] = feaList[i]; + feaMix->feaList[i] = incElem; + feaMix->mixDim += incElem->extDim; + /* modify the relevant layers */ + for (i = 0; i < feaMix->ownerNum; ++i) { + layerElem = feaMix->ownerList[i]; + /* the random seed (layerPos) is inconsistent, but this should not matter */ + if (layerPos < 0) + seed = i; + else + seed = layerPos; + ChangeOneLayerDims("ChangeOneANNLayerDims", layerElem, seed, layerElem->nodeNum, feaMix->mixDim); + } + /* saves the model */ + saveHMMSet = TRUE; +} + + + +/* CP */ +void CopyANNParameters(void) { + char mmfPath[MAXSTRLEN], lstPath[MAXSTRLEN], buf[MAXSTRLEN], xformPath[MAXSTRLEN], macroname[MAXSTRLEN]; + char srctype, dsttype; + int i, actfunParmNum; + InputXForm *auxinp = NULL; + MLink srcmacro, dstmacro; + LabId srclabid, dstlabid; + /*ANNUpdtKind updtFlag = WEIGHTUK | BIASUK | ACTFUNUK;*/ + int ACTFUNUK = 0x4, BIASUK = 0x2, WEIGHTUK = 0x1; + int updtFlag = ACTFUNUK | BIASUK | WEIGHTUK; + + ChkedAlpha("Next keyword", buf); + /* load the auxiliary model set */ + if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary MMF file path", mmfPath); + ChkedAlpha("Auxiliary HMM list file path", lstPath); + if (auxFn == NULL || strcmp(auxFn, mmfPath) != 0) { + if (auxFn != NULL) + ResetHMMSet(auxSet); + auxFn = CopyString(&gcheap, mmfPath); + auxSet = (HMMSet *) New(&hmmHeap, sizeof(HMMSet)); + CreateHMMSet(auxSet, &hmmHeap, TRUE); + AddMMF(auxSet, mmfPath); + if (MakeHMMSet(auxSet, lstPath) < SUCCESS) + HError(2600, "CopyANNParameters: MakeHMMSet failed"); + if (LoadHMMSet(auxSet, NULL, NULL) < SUCCESS) + HError(2600, "CopyANNParameters: LoadHMMSet failed"); + } + } + else if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary transform file path", xformPath); + auxinp = LoadInputXForm(NULL, NameOf(xformPath, macroname), xformPath); + if (auxinp == NULL) + HError(2600, "CopyANNParameters: Load auxiliary input xform failed"); + } + else + HError(2650, "CopyANNParameters: Unsupported keyword"); + /* get the update flag */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("Update flag", buf); + updtFlag = 0; + for (i = 0; i < strlen(buf); ++i) { + switch (buf[i]) { + case 'a': updtFlag |= ACTFUNUK; break; + case 'b': updtFlag |= BIASUK; break; + case 'w': updtFlag |= WEIGHTUK; break; + default: + HError(2650, "CopyANNParameters: Unsupported flag %c for copying", buf[i]); + } + } + ChkedAlpha("Next keyword", buf); + } + /* get the source macro entity */ + /*ChkedAlpha("Next keyword", buf);*/ + if (strcmp(buf, "") != 0) + HError(2650, "CopyANNParameters: expected"); + ChkedAlpha("Macro type", buf); + if (buf[0] != '~' || strlen(buf) != 2) + HError(2650, "CopyANNParameters: ~? macro type expected"); + srctype = buf[1]; + ChkedAlpha("Macro name", buf); + srclabid = GetLabId(buf, FALSE); + if (srclabid == NULL || (srcmacro = FindMacroName(auxSet, srctype, srclabid)) == NULL) + HError(2679, "CopyANNParameters: Cannot find the source macro ~%c \"%s\"", srctype, srclabid->name); + /* get the target macro entity */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") != 0) + HError(2650, "CopyANNParameters: expected"); + ChkedAlpha("Macro type", buf); + if (buf[0] != '~' || strlen(buf) != 2) + HError(2650, "CopyANNParameters: ~? macro type expected"); + dsttype = buf[1]; + ChkedAlpha("Macro name", buf); + dstlabid = GetLabId(buf, FALSE); + if (dstlabid == NULL || (dstmacro = FindMacroName(hset, dsttype, dstlabid)) == NULL) + HError(2679, "CopyANNParameters: Cannot find the source macro ~%c \"%s\"", dsttype, dstlabid->name); + /* safety check */ + switch (srctype) { + case 'V': + case 'M': + case 'L': + if (auxinp != NULL || auxSet == NULL) + HError(2615, "CopyANNParameters: Source macro ~%c needs source HMMSet", srctype); + break; + case 'j': + if (auxinp == NULL) + HError(2615, "CopyANNParameters: Source macro ~%c needs input xform", srctype); + break; + default: + HError(2691, "CopyANNParameters: Unsupported source macro type"); + } + /* do the copying */ + switch (dsttype) { + case 'V': + switch (srctype) { + case 'V': + if ((updtFlag & ACTFUNUK) || (updtFlag & BIASUK)) + CopyPartialNVector2NVector(((NVecBundle *) srcmacro->structure)->variables, ((NVecBundle *) dstmacro->structure)->variables); + break; + case 'j': + if (updtFlag & BIASUK) { + if (auxinp->xform->bias == NULL) + HError(2615, "CopyANNParameters: source ~j bias expected to copy to ~V"); + CopyVector2NVector(auxinp->xform->bias, ((NVecBundle *) dstmacro->structure)->variables); + } + break; + default: + HError(2680, "CopyANNParameters: Cannot copy ~%c macro to ~V", srctype); + } + break; + case 'M': + switch (srctype) { + case 'M': + if (updtFlag & WEIGHTUK) + CopyPartialNMatrix2NMatrix(((NMatBundle *) srcmacro->structure)->variables, ((NMatBundle *) dstmacro->structure)->variables); + break; + case 'j': + if (updtFlag & WEIGHTUK) + CopyMatrix2NMatrix(auxinp->xform->xform[1], ((NMatBundle *) dstmacro->structure)->variables); + break; + default: + HError(2680, "CopyANNParameters: Cannot copy ~%c macro to ~V", srctype); + } + break; + case 'L': + switch (srctype) { + case 'V': + if (updtFlag & BIASUK) + CopyPartialNVector2NVector(((NVecBundle *) srcmacro->structure)->variables, ((LELink) dstmacro->structure)->biasVec->variables); + break; + case 'M': + if (updtFlag & WEIGHTUK) + CopyPartialNMatrix2NMatrix(((NMatBundle *) srcmacro->structure)->variables, ((LELink) dstmacro->structure)->wghtMat->variables); + break; + case 'L': + if ((updtFlag & BIASUK) != 0 && ((LELink) srcmacro->structure)->biasVec != NULL && ((LELink) dstmacro->structure)->biasVec != NULL) + CopyPartialNVector2NVector(((LELink) srcmacro->structure)->biasVec->variables, ((LELink) dstmacro->structure)->biasVec->variables); + if ((updtFlag & WEIGHTUK) != 0 && ((LELink) srcmacro->structure)->wghtMat != NULL && ((LELink) dstmacro->structure)->wghtMat != NULL) + CopyPartialNMatrix2NMatrix(((LELink) srcmacro->structure)->wghtMat->variables, ((LELink) dstmacro->structure)->wghtMat->variables); + if ((updtFlag & ACTFUNUK) != 0 && ((LELink) srcmacro->structure)->actfunVecs != NULL && ((LELink) dstmacro->structure)->actfunVecs != NULL) { + actfunParmNum = ((LELink) dstmacro->structure)->actfunParmNum; + if (actfunParmNum < ((LELink) srcmacro->structure)->actfunParmNum) + actfunParmNum = ((LELink) srcmacro->structure)->actfunParmNum; + for (i = 0 ; i <= actfunParmNum; ++i) + if (((LELink) srcmacro->structure)->actfunVecs[i] != NULL && ((LELink) dstmacro->structure)->actfunVecs[i] != NULL) + CopyPartialNVector2NVector(((LELink) srcmacro->structure)->actfunVecs[i]->variables, ((LELink) dstmacro->structure)->actfunVecs[i]->variables); + } + break; + case 'j': + if (updtFlag & BIASUK) + CopyVector2NVector(auxinp->xform->bias, ((LELink) dstmacro->structure)->biasVec->variables); + if (updtFlag & WEIGHTUK) + CopyMatrix2NMatrix(auxinp->xform->xform[1], ((LELink) dstmacro->structure)->wghtMat->variables); + break; + default: + HError(2680, "CopyANNParameters: Cannot copy ~%c macro to ~V", srctype); + } + break; + default: + HError(2640, "CopyANNParameters: Unsupported target ANN parameters for copying"); + } + + /* saves the model */ + saveHMMSet = TRUE; +} + +/*void CopyANNLayerParms(void) { + char mmfPath[MAXSTRLEN], lstPath[MAXSTRLEN], buf[MAXSTRLEN], xformPath[MAXSTRLEN], macroname[MAXSTRLEN]; + LELink srcLayer, dstLayer; + int i, j, k, opCnt; + HMMSet *auxset = NULL; + InputXForm *auxinp = NULL; + + opCnt = ChkedInt("Operation count", 1, INT_MAX); + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary MMF file path", mmfPath); + ChkedAlpha("Auxiliary HMM list file path", lstPath); + auxset = (HMMSet *) New(&hmmHeap, sizeof(HMMSet)); + CreateHMMSet(auxset, &hmmHeap, TRUE); + AddMMF(auxset, mmfPath); + if (MakeHMMSet(auxset, lstPath) < SUCCESS) + HError(9999, "CopyANNLayerParms: MakeHMMSet failed"); + if (LoadHMMSet(auxset, NULL, NULL) < SUCCESS) + HError(9999, "CopyANNLayerParms: LoadHMMSet failed"); + ChkedAlpha("Next keyword", buf); + } + else if (strcmp(buf, "") == 0) { + ChkedAlpha("Auxiliary transform file path", xformPath); + auxinp = LoadInputXForm(NULL, NameOf(xformPath, macroname), xformPath); + if (auxinp == NULL) + HError(9999, "CopyANNLayerParms: Load auxiliary input xform failed"); + ChkedAlpha("Next keyword", buf); + } + else + auxset = hset; + for (i = 0; i < opCnt; ++i) { + if (i != 0) + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0 && auxset != NULL) { + srcLayer = GetLayerElemByMacName("CopyANNLayerParms", NULL, auxset, NULL, NULL); + dstLayer = GetLayerElemByMacName("CopyANNLayerParms", NULL, hset, NULL, NULL); + ChkedAlpha("Next keyword", buf); + if (srcLayer != dstLayer) { + for (j = 0; j < strlen(buf); ++j) { + switch (buf[j]) { + case 'a': + if (srcLayer->actfunVecs != NULL && dstLayer->actfunVecs != NULL) + if (srcLayer->actfunKind == dstLayer->actfunKind) + for (k = 0; k <= srcLayer->actfunParmNum; ++k) + CopyPartialNVector2NVector(srcLayer->actfunVecs[k]->variables, dstLayer->actfunVecs[k]->variables); + break; + case 'b': + if (srcLayer->inputDim != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal bias vector lenghts"); + CopyPartialNVector2NVector(srcLayer->biasVec->variables, dstLayer->biasVec->variables); + break; + case 'w': + if (srcLayer->nodeNum != dstLayer->nodeNum || srcLayer->inputDim != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal weight matrix dimensions"); + CopyPartialNMatrix2NMatrix(srcLayer->wghtMat->variables, dstLayer->wghtMat->variables); + break; + default: + HError(9999, "CopyANNLayerParms: Unknown update flag %c", buf[j]); + } + } + } + } + else if (strcmp(buf, "") == 0 && auxinp != NULL) { + ChkedAlpha("Input transform macro type", buf); + if (strcmp(buf, "~j") != 0) + HError(9999, "CopyANNLayerParms: The input transform macro ~j expected"); + ChkedAlpha("Input transform macro name", buf); + if (strcmp(buf, macroname) != 0) + HError(9999, "CopyANNLayerParms: The input transform macro name unmatched"); + dstLayer = GetLayerElemByMacName("CopyANNLayerParms", NULL, hset, NULL, NULL); + ChkedAlpha("Next keyword", buf); + for (j = 0; j < strlen(buf); ++j) { + switch (buf[j]) { + case 'b': + if (auxinp->xform->bias != NULL) { + if (VectorSize(auxinp->xform->bias) != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal bias vector lenghts"); + CopyVector2NVector(auxinp->xform->bias, dstLayer->biasVec->variables); + } + break; + case 'w': + if (NumRows(auxinp->xform->xform[1]) != dstLayer->nodeNum || NumCols(auxinp->xform->xform[1]) != dstLayer->inputDim) + HError(-1, "CopyANNLayerParms: Unequal weight matrix dimensions"); + CopyMatrix2NMatrix(auxinp->xform->xform[1], dstLayer->wghtMat->variables); + break; + default: + HError(9999, "CopyANNLayerParms: Unsupported update flag %c for input transform", buf[j]); + } + } + } + else + HError(9999, "CopyANNLayerParms: keyword expected"); + } + if (auxset != NULL && hset != auxset) + ResetHMMSet(auxset); + + saveHMMSet = TRUE; +}*/ + +/* cz277 - ANN */ +/* SL */ +void ShowANNLayerStats(void) { + int i, len, layerPos; + LELink layerElem=NULL; + char buf[MAXSTRLEN]; + double mean, stddev, absmax, l1norm, l2norm, absval; + + /* original feature mixture */ + ChkedAlpha("Target layer macro type", buf); + if (strcmp(buf, "~N") == 0 || strcmp(buf, "~L") == 0) { + layerElem = GetLayerElemByMacName("ShowANNLayerStats", buf, hset, NULL, &layerPos); + } + else { + HError(2650, "ShowANNLayerStats: Unsupported target ANN layer macro"); + } + /* compute for weights */ + len = layerElem->nodeNum * layerElem->inputDim; + absmax = 0.0; + mean = 0.0; + stddev = 0.0; + l1norm = 0.0; + l2norm = 0.0; + for (i = 0; i < len; ++i) { + absval = fabs(layerElem->wghtMat->variables->matElems[i]); + if (absval > absmax) + absmax = absval; + mean += layerElem->wghtMat->variables->matElems[i]; + l1norm += absval; + l2norm += pow(layerElem->wghtMat->variables->matElems[i], 2.0); + } + mean /= len; + l1norm /= layerElem->nodeNum; + l2norm /= layerElem->nodeNum; + for (i = 0; i < len; ++i) { + stddev += pow(layerElem->wghtMat->variables->matElems[i] - mean, 2.0); + } + stddev = sqrt(stddev / len); + /* output */ + printf("\tWeights:\n"); + printf("\t\tinput dim = %d, output dim = %d, param num = %d\n", layerElem->inputDim, layerElem->nodeNum, len); + printf("\t\tmean = %e, std dev = %e, max abs = %e\n", mean, stddev, absmax); + printf("\t\tl1 norm / output node = %e, l2 norm / output node = %e\n", l1norm, l2norm); + /*printf("\n");*/ + /* compute for biases */ + len = layerElem->nodeNum; + absmax = 0.0; + mean = 0.0; + stddev = 0.0; + l1norm = 0.0; + l2norm = 0.0; + for (i = 0; i < len; ++i) { + absval = fabs(layerElem->biasVec->variables->vecElems[i]); + if (absval > absmax) + absmax = absval; + mean += layerElem->biasVec->variables->vecElems[i]; + l1norm += absval; + l2norm += pow(layerElem->biasVec->variables->vecElems[i], 2.0); + } + mean /= len; + l1norm /= layerElem->nodeNum; + l2norm /= layerElem->nodeNum; + for (i = 0; i < len; ++i) { + stddev += pow(layerElem->biasVec->variables->vecElems[i] - mean, 2.0); + } + stddev = sqrt(stddev / len); + /* output */ + printf("\tbiases:\n"); + printf("\t\toutput dim = %d, param num = %d\n", layerElem->nodeNum, len); + printf("\t\tmean = %e, std dev = %e, max abs = %e\n", mean, stddev, absmax); + printf("\t\tl1 norm / output node = %e, l2 norm / output node = %e\n", l1norm, l2norm); + printf("\n"); + + /* saves the model */ + saveHMMSet = FALSE; +} + + +/* ----------------------- RS - Replace an HMM state --------------------- */ + +/*void ReplaceHMMState(void) { + char buf[MAXSTRLEN], hbuf[MAXSTRLEN]; + int tIdx, sIdx = -1, i, j; + LabId hmmId, stateId; + HMMScanState hss; + MLink macDef; + HLink hlink; + StateInfo *si; + StreamElem se; + LELink layerElem; + + if (hset->hsKind == ANNHS) + HError(2615, "ReplaceHMMState: No HMMs in the model file"); + // get target HMM structure + ChkedAlpha("Target HMM name", buf); + if (strcmp(buf, "~h") == 0) + ChkedAlpha("Target HMM name", buf); + hmmId = GetLabId(buf, FALSE); + if (hmmId == NULL) + HError(2635, "ReplaceHMMState: Failed to find model for label \"%s\"", buf); + if ((macDef = FindMacroName(hset, 'l', hmmId)) == NULL) + HError(2635, "ReplaceHMMState: Unknown HMM name %s", buf); + hlink = (HLink) macDef->structure; + tIdx = ChkedInt("Target state index", 2, hlink->numStates - 1); + // get source state structure + ChkedAlpha("Source state name", buf); + if (strcmp(buf, "~s") == 0) + ChkedAlpha("Source state name", buf); + stateId = GetLabId(buf, FALSE); + if (stateId == NULL) { + ExtractState(buf, hbuf, &sIdx); + stateId = GetLabId(hbuf, FALSE); + if ((macDef = FindMacroName(hset, 'l', stateId)) == NULL) + HError(2635, "ReplaceHMMState: Unknown HMM name %s", hbuf); + si = ((HLink) macDef->structure)->svec[sIdx].info; + } + else { + if ((macDef = FindMacroName(hset, 's', stateId)) == NULL) + HError(2635, "ReplaceHMMState: Unknown state name %s", buf); + si = (StateInfo *) macDef->structure; + } + // change the use count + --hlink->svec[tIdx].info->nUse; + if (hlink->svec[tIdx].info->nUse == 0) + DeleteMacroStruct(hset, 's', hlink->svec[tIdx].info); + ++si->nUse; + // replace target state + hlink->svec[tIdx].info = si; + // remove the redundant targets and reset the target indexes + if (hset->hsKind == HYBRIDHS) { + for (i = 1; i <= hset->swidth[0]; ++i) { + se = si->pdf[i]; + tIdx = se.targetIdx - 1; + layerElem = se.targetSrc; + if (tIdx < layerElem->nodeNum - 1) { + for (j = tIdx + 1; j < layerElem->nodeNum; ++j) { + CopyNSegment(layerElem->wghtMat->variables, j * layerElem->inputDim, layerElem->inputDim, layerElem->wghtMat->variables, (j - 1) * layerElem->inputDim); + CopyNVectorSegment(layerElem->biasVec->variables, j, 1, layerElem->biasVec->variables, j - 1); + } + --layerElem->nodeNum; + } + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) { + if (hss.si->pdf[i].targetIdx > tIdx + 1) { + --hss.si->pdf[i].targetIdx; + hss.si->pdf[i].targetIdx *= -1; + } + } + EndHMMScan(&hss); + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) + if (hss.si->pdf[i].targetIdx < 0) + hss.si->pdf[i].targetIdx *= -1; + } + } + + // saves the model + saveHMMSet = TRUE; +}*/ + +/* ----------------------- CH - Convert GMM-HMMs to an initial ANN-HMMs --------------------- */ + +static void BorrowOneANNMacro(char *invoker, char type, Ptr structure, HMMSet *srcset, HMMSet *dstset) { + MLink m; + LabId id; + + m = FindMacroStruct(dstset, type, structure); + if (m == NULL) { + m = FindMacroStruct(srcset, type, structure); + if (m != NULL) { + id = m->id; + if (FindMacroName(dstset, type, id) != NULL) + m = NULL; + } + if (m == NULL) + id = GetNextANNMacroName(invoker, dstset, type); + NewMacro(dstset, fidx, type, id, structure); + } +} + +void ConnectANNtoHMMs(void) { + char buf[MAXSTRLEN], mmfPath[MAXSTRLEN], lstPath[MAXSTRLEN]; + HMMScanState hss; + HMMSet *auxset; + LELink layerElem; + MLink m; + AILink annInfo, curInfo; + ADLink annDef; + int i, j, h, targetCnt, streamIdx = 1; + LabId id; + + if (hset->hsKind == ANNHS) + HError(2615, "ConnectANNtoHMMs: No HMMs found in the model set"); + + /* load the ANN model */ + ChkedAlpha("Auxiliary MMF file path", mmfPath); + ChkedAlpha("Auxiliary HMM list file path", lstPath); + auxset = (HMMSet *) New(&hmmHeap, sizeof(HMMSet)); + CreateHMMSet(auxset, &hmmHeap, TRUE); + AddMMF(auxset, mmfPath); + if (MakeHMMSet(auxset, lstPath) < SUCCESS) + HError(2600, "ConnectANNtoHMMs: MakeHMMSet failed"); + if (LoadHMMSet(auxset, NULL, NULL) < SUCCESS) + HError(2600, "ConnectANNtoHMMs: LoadHMMSet failed"); + /* fetch the ANN model */ + ChkedAlpha("ANN macro type", buf); + if (strcmp(buf, "~N") == 0) + ChkedAlpha("ANN macro name", buf); + annDef = GetANNDefByMacName("ConnectANNtoHMMs", buf, auxset); + /* import each of its component to hset */ + m = FindMacroStruct(hset, 'N', annDef); + if (m == NULL) { + m = FindMacroStruct(auxset, 'N', annDef); + if (m != NULL) { + id = m->id; + if (FindMacroName(hset, 'N', id) != NULL) + m = NULL; + } + if (m == NULL) + id = GetNextANNMacroName("ConnectANNtoHMMs", hset, 'N'); + NewMacro(hset, fidx, 'N', id, annDef); + } + /*annDef->nUse |= 1;*/ + if (hset->annSet == NULL) + InitANNSet(hset); + annInfo = (AILink) New(hset->hmem, sizeof(ANNInfo)); + annInfo->annDef = annDef; + annInfo->index = hset->annSet->annNum++; + annInfo->fidx = fidx; + curInfo = hset->annSet->defsTail; + if (curInfo == NULL) + hset->annSet->defsHead = annInfo; + else { + curInfo->next = annInfo; + annInfo->prev = curInfo; + } + annInfo->prev = curInfo; + annInfo->next = NULL; + hset->annSet->defsTail = annInfo; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + BorrowOneANNMacro("ConnectANNtoHMMs", 'L', layerElem, auxset, hset); + if (layerElem->feaMix != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'F', layerElem->feaMix, auxset, hset); + if (layerElem->wghtMat != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'M', layerElem->wghtMat, auxset, hset); + if (layerElem->biasVec != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'V', layerElem->biasVec, auxset, hset); + if (layerElem->actfunVecs != NULL) + for (j = 0; j <= layerElem->actfunParmNum; ++i) + if (layerElem->actfunVecs[j] != NULL) + BorrowOneANNMacro("ConnectANNtoHMMs", 'V', layerElem->actfunVecs[j], auxset, hset); + } + /* to do Tandem or Hybrid */ + ChkedAlpha("Next keyword", buf); + if (strcmp(buf, "") == 0) { + streamIdx = ChkedInt("Target stream index", 1, hset->swidth[0]); + ChkedAlpha("Next keyword", buf); + } + if (strcmp(buf, "") == 0) { + hset->hsKind = HYBRIDHS; + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) + if (hss.si->pdf[streamIdx].targetIdx >= 0) + hss.si->pdf[streamIdx].targetIdx = -1; + EndHMMScan(&hss); + targetCnt = 0; + layerElem = annDef->layerList[annDef->layerNum - 1]; + NewHMMScan(hset, &hss); + while(GoNextState(&hss, FALSE)) { + if (hss.si->pdf[streamIdx].targetIdx < 0) { + hss.si->pdf[streamIdx].densKind = ANNDK; + hss.si->pdf[streamIdx].targetSrc = layerElem; + hss.si->pdf[streamIdx].targetIdx = ++targetCnt; + hss.si->pdf[streamIdx].targetPen = 0.0; + ++hss.si->pdf[streamIdx].targetSrc->nUse; + hss.si->pdf[streamIdx].nMix = 1; + } + } + EndHMMScan(&hss); + if (targetCnt != layerElem->nodeNum) { + if (trace & T_BAS) + HError(-2681, "ConnectANNtoHMMs: Change target number to %d to match HMM state number", targetCnt); + ChangeOneLayerDims("ChangeOneANNLayerDims", layerElem, annDef->layerNum - 1, targetCnt, layerElem->inputDim); + } + /* remove redundant macros */ + for (h = 0; h < MACHASHSIZE; ++h) + for (m = hset->mtab[h]; m != NULL; m = m->next) + if (m->type == 'v') + DeleteMacro(hset, m); + } + else if (strcmp(buf, "") == 0) + HError(2640, "ConnectANNtoHMMs: Tandem system connection function not implemented yet"); + else + HError(2650, "ConnectANNtoHMMs: Unknown connection method, or expected"); + + /* note, should not reset the auxset here*/ + /* saves the model */ + saveHMMSet = TRUE; + +} + /* -----Regression Class Clustering Tree Building Routines -------------- */ /* linked list of components that are grouped into a cluster */ @@ -6340,7 +8039,6 @@ void Initialise(char *hmmListFn) CreateHeap(&questHeap,"Question Heap",MSTAK,1,1.0,8000,16000); CreateHeap(&tmpHeap,"Temporary Heap",MSTAK,1,1.0,40000,400000); - if(MakeHMMSet(&hSet,hmmListFn)annSet != NULL) { + CheckANNConsistency(hset); + FindANNCycles(hset); + ResetDrvContext(hset); + SetDrvContext(hset); + InitXYBatch(hset); + } FixAllGConsts(hset); /* in case any bad gConsts around */ badGC=FALSE; PurgeMacros(hset); if (mmfFn!=NULL) SaveInOneFile(hset,mmfFn); - if(SaveHMMSet(&hSet,newDir,newExt,NULL,inBinary)spdf.dpdf; ZeroShortVec(dw); for (i=1; i<=seq->nItems; i++){ - vqidx = (int)GetItem(seq,i); + vqidx = (long int)GetItem(seq,i); if (vqidx<1 || vqidx>M) - HError(2170,"UniformSegment: vqidx out of range[%d]",vqidx); + HError(2170,"UniformSegment: vqidx out of range[%ld]",vqidx); ++dw[vqidx]; ++count; } for (m=1; m<=M; m++){ @@ -1256,7 +1262,3 @@ void SaveModel(char *outfn) /* END: HInit.c */ /* ----------------------------------------------------------- */ - - - - diff --git a/HTKTools/HLConf.c b/HTKTools/HLConf.c new file mode 100755 index 0000000..720218d --- /dev/null +++ b/HTKTools/HLConf.c @@ -0,0 +1,1986 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Gunnar Evermann */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 1999-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HLConf.c Lattice confusion network */ +/* ----------------------------------------------------------- */ + +char *hlconf_version = "!HVER!HLConf: 3.5.0 [CUED 12/10/15]"; +char *hlconf_sccs_id = "$Id: HLConf.c,v 1.8 2015/10/12 12:07:24 cz277 Exp $"; + +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HWave.h" +#include "HLabel.h" +#include "HAudio.h" +#include "HParm.h" +#include "HANNet.h" +#include "HModel.h" +#include "HUtil.h" +#include "HDict.h" +#include "HLM.h" +#include "HNet.h" +#include "HRec.h" +#include "HLat.h" + +#include + +/* -------------------------- Trace Flags & Vars ------------------------ */ + +#define T_TOP 00001 /* Basic progress reporting */ +#define T_TRAN 00002 /* Output Transcriptions */ +#define T_CN 00010 /* Confusion network clustering */ +#define T_LAT 00020 /* Lattice operation */ +#define T_MEM 00040 /* Memory usage, start and finish */ + +static int trace = 0; + +/* ---------------- Configuration Parameters --------------------- */ + +static ConfParam *cParm[MAXGLOBS]; +static int nParm = 0; /* total num params */ + +/* -------------------------- Global Variables etc ---------------------- */ + + +typedef enum _ConfMethod { + CM_GEOMEAN, CM_MAX +} ConfMethod; + +static char *dictfn; /* dict filename from commandline */ +static char *latInDir = NULL; /* Lattice input dir, set by -L */ +static char *latInExt = "lat"; /* Lattice Extension, set by -X */ + +static FileFormat ifmt=UNDEFF; /* Label input file format */ +#if 0 +static char *labInDir = NULL; /* input label file directory */ +static char *labInExt = "rec"; /* input label file extension */ +#endif + +static FileFormat ofmt=UNDEFF; /* Label output file format */ +static char *labOutDir = NULL; /* output label file directory */ +static char *labOutExt = "rec"; /* output label file extension */ +static char *labOutForm = NULL; /* output label format */ + +static double lmScale = 1.0; /* LM scale factor */ +static double acScale = 1.0; /* acoustic scale factor */ +static LogDouble wordPen = 0.0; /* inter model log penalty */ +static double prScale = 1.0; /* pronunciation scale factor */ +static float confNetPrune = -5.0; /* second pass confusion network pruning */ +/* cz277 - scale conf score */ +static float latScoreScale = 1.0; + +static Vocab vocab; /* wordlist or dictionary */ + +static ConfMethod confMethod = CM_MAX; + +static Boolean confnet = FALSE; /* perform confnet clustering */ +static Boolean writeConfNet = FALSE; /* write scf files? */ + +/* weights for Levenshtein alignment */ +static int subPen = 4; /* NIST values */ +static int delPen = 3; +static int insPen = 3; + +static Boolean fixPronProb = FALSE; +static Boolean clampACLike = TRUE; +static Boolean addNullWord = TRUE; + +static char *labFileMask = NULL; +static char *labOFileMask = NULL; +static char *latFileMask = NULL; +static char *latOFileMask = NULL; + +/* -------------------------- Heaps ------------------------------------- */ + +static MemHeap latHeap; +static MemHeap cnHeap; +static MemHeap transHeap; + +/* -------------------------- Prototypes -------------------------------- */ +void SetConfParms(void); +void ReportUsage(void); +void CalcConfFile(char *latfn); +void ConfNetClusterFile (char *latfn_in, char *latfn_ou, char *labfn_ou); +void InitSimScore(void); + + +/* ---------------- Process Command Line ------------------------- */ + +/* SetConfParms: set conf parms relevant to this tool */ +void SetConfParms(void) +{ + int i; + Boolean b; + double f; + char buf[MAXSTRLEN]; + + nParm = GetConfig("HLCONF", TRUE, cParm, MAXGLOBS); + if (nParm>0){ + if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; + if (GetConfStr(cParm,nParm,"CONFMETHOD",buf)) { + if (strcmp (buf, "GEOMEAN") == 0) + confMethod = CM_GEOMEAN; + else if (strcmp (buf, "MAX") == 0) + confMethod = CM_MAX; + else + HError (4121, "HLConf: unknown CONFMETHOD"); + } + if (GetConfBool (cParm,nParm,"CLAMPACLIKE",&b)) clampACLike = b; + if (GetConfBool (cParm,nParm,"FIXPRONPROB",&b)) fixPronProb = b; + if (GetConfBool (cParm,nParm,"ADDNULLWORD",&b)) addNullWord = b; + if (GetConfFlt (cParm, nParm, "CONFNETPRUNE", &f))confNetPrune = f; + /* cz277 - scale conf score */ + if (GetConfFlt(cParm, nParm, "SCALELATSCORE", &f)) { + latScoreScale = f; + if (latScoreScale <= 0.0) + HError(4122, "HLConf: SCALELATSCORE must be positive"); + } + + if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { + labFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATFILEMASK",buf)) { + latFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATOFILEMASK",buf)) { + latOFileMask = CopyString (&gstack, buf); + } + } +} + +void ReportUsage(void) +{ + printf("\nUSAGE: HLConf [options] vocabFile Files...\n\n"); + printf(" Option Default\n\n"); + printf(" -i s Output transcriptions to MLF s off\n"); + printf(" -l s dir to store label files current\n"); + printf(" -o s output label formating NCSTWMX none\n"); + printf(" -p f inter model trans penalty (log) 0.0\n"); + printf(" -r f pronunciation scale factor 1.0\n"); + printf(" -s f grammar scale factor 1.0\n"); + printf(" -a f acoustic scale factor 1.0\n"); + printf(" -y s output label file extension rec\n"); + printf(" -z perform confusion net clustering off\n"); + printf(" -Z write confusion networks off\n"); + PrintStdOpts("ILSXTGP"); + printf("\n\n"); +} + +int main(int argc, char *argv[]) +{ + char *s, *latfn, latfn_in[MAXSTRLEN], latfn_ou[MAXSTRLEN], labfn_ou[MAXSTRLEN]; + + /*#### new error code range */ + if(InitShell (argc, argv, hlconf_version, hlconf_sccs_id) < SUCCESS) + HError (4100, "HLConf: InitShell failed"); + + InitMem(); + InitMath(); + InitWave(); + InitLabel(); + InitAudio(); + if (InitParm() 0) { + if (NextArg() != STRINGARG) + HError (4119, "HLConf: Transcription file name expected"); + latfn = GetStrArg(); + if (latFileMask) { + if (!MaskMatch (latFileMask, latfn_in, latfn)) + HError(4119,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latFileMask, latfn); + } + else + strcpy (latfn_in, latfn); + + if (latOFileMask) { + if (!MaskMatch (latOFileMask, latfn_ou, latfn)) + HError(4119,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latOFileMask, latfn); + } + else + strcpy (latfn_ou, latfn); + + if (labOFileMask) { + if (!MaskMatch (labOFileMask, labfn_ou, latfn)) + HError(4119,"HLRescore: LABOFILEMASK %s has no match with segemnt %s", labOFileMask, latfn); + } + else + strcpy (labfn_ou, latfn); + + if (trace & T_TOP) { + printf ("File: %s\n", latfn); fflush(stdout); + } + if (confnet) + ConfNetClusterFile (latfn_in, latfn_ou, labfn_ou); + else { + abort(); +#if 0 + CalcConfFile (latfn); +#endif + } + } + + if (trace & T_MEM) { + printf("Memory State on Completion\n"); + PrintAllHeapStats(); + } + + return(0); +} + +void ClampACLike (Lattice *lat) +{ + int i; + LArc *la; + + for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) { + if (la->aclike > 0) { + HError (-4122, "HLattice: aclike of arc is %f setting to 0.0\n", la->aclike); /*#### GE fix errorcode */ + la->aclike = 0.0; + } + } +} + + +/* calc (unnormalalised!) posterior of arc */ +#define LArcPosterior(lat, la) (LNodeFw((la)->start) + \ + LArcTotLike((lat),(la)) + \ + LNodeBw((la)->end)) + + +#if 0 /* time dep conf scores -- stuff for Luis */ + +/* the main confidence calculation function, + assumes that forward/backward scores are stored in lattice + + confidence scores are stored in the lab->score fields of the Transcription +*/ +void CalcConfScores(Lattice *lat, LogDouble pX, Transcription *trans) +{ + LabList *labList; + LLink lab; + Word word; + LArc *la; + int i, l, nlab; + HTime t, framedur = 1e7; /* 100 frames per second #### fix this! */ + LogDouble postLA, postCor, postAll; + LogDouble confCor, maxPostCor; + int lenCor; + + labList = GetLabelList (trans, 1); + nlab = CountLabs (labList); + + /* for each word: */ + for (l = 1; l <= nlab; ++l) { + confCor = 0; + lenCor = 0; + maxPostCor = LZERO; + + lab = GetLabN (labList, l); + word = GetWord (&vocab, lab->labid, FALSE); + if (!word) + HError (9999, "HLConf: word %s not in dict", lab->labid->name); + + if (trace & T_TOP) { + printf ("%8.0f%8.0f", lab->start, lab->end); + printf (" %8s %5f\n", lab->labid->name, lab->score); + } + + /* for each frame in word: */ + for (t = lab->start / framedur; t <= lab->end / framedur; t += 0.01) { /* #### fix frame<->t ! */ + postCor = LZERO; + postAll = LZERO; + for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) { /* check all arcs */ + if ((la->start->time <= t) && (la->end->time > t)) { /* arc intersects time t? */ + postLA = LArcPosterior(lat, la) - pX; /* normalised posterior */ + + if (la->end->word->wordName == lab->labid) { /* correct word? */ + postCor = LAdd (postCor, postLA); + } + /* for sanity check */ + postAll = LAdd (postAll, postLA); + } + } + if (postCor != LZERO) { /* ignore frames with zero prob */ + confCor += postCor; + ++lenCor; + } + if (postCor > maxPostCor) + maxPostCor = postCor; + + if (trace & T_TOP) + printf ("t %.2f postCor: log %f lin %f postAll: log %f\n", t, postCor, L2F (postCor), postAll); + } + /* normalise by length (geom. mean) */ + if (lenCor > 0) + confCor = confCor / lenCor; + else + confCor = LZERO; + + + switch (confMethod) { + case CM_GEOMEAN: + lab->score = L2F (confCor); + break; + case CM_MAX: + lab->score = L2F (maxPostCor); + break; + default: + abort (); + break; + } + + if (trace & T_TOP) + printf ("confCor %f %f\n", lab->score, L2F (lab->score)); + } /* for each label */ +} + + +/* CalcConfFile (char *latfn) + + called once for each Lattice File + performs calculation of confidence scores based on time dependent posteriors + cf. [Evermann & Woodland:ICASSP2000] + */ +void CalcConfFile(char *latfn) +{ + Lattice *lat; + char lfn[MAXSTRLEN]; + FILE *lf; + Boolean isPipe; + Transcription *trans; + LogDouble pX; /* prob of data; p(X) = alpha(final) = beta(root) */ + + MakeFN(latfn, latInDir, latInExt, lfn); + + if ((lf = FOpen(lfn,NetFilter,&isPipe)) == NULL) + HError(4010,"HLConf: Cannot open Lattice file %s", lfn); + + lat = ReadLattice (lf, &latHeap, &vocab, FALSE, FALSE); + FClose(lf, isPipe); + + /*#### GE: why doesn't HRec:Readlattice exit as it should? + probably more HAPI rubbish... */ + if (!lat) + HError (9999, "HLConf: can't read lattice"); + + lat->lmscale = lmScale; + lat->wdpenalty = wordPen; + lat->acscale = acScale; + /*### add prscale? */ + + pX = LatForwBackw (lat, &latHeap); + +#if 0 + /* print lattice arcs with posteriors */ + for (i = 0, la = lat->larcs; i < lat->na; ++i, ++la) { + printf ("S %d E %d W %s post %lf\n", + la->start->n, la->end->n, + la->end->word->wordName->name, + LArcPosterior (lat,la)); + } +#endif + + /* read transcription */ + MakeFN(latfn, labInDir, labInExt, lfn); + trans = LOpen(&transHeap, lfn, ifmt); + + + /* calc conf scores */ + CalcConfScores (lat, pX, trans); + + /* write transcription */ + PrintTranscription (trans, "Transcription with conf scores"); + if (labOutForm!=NULL) + FormatTranscription (trans, + 1e7, FALSE, FALSE, /* #### fix frame stuff */ + strchr(labOutForm,'X')!=NULL, + strchr(labOutForm,'N')!=NULL,strchr(labOutForm,'S')!=NULL, + strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, + strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); + + MakeFN (latfn, labOutDir, labOutExt, lfn); + if (LSave (lfn, trans, ofmt) < SUCCESS) + HError (3214, "CalcConfFile: Cannot save file %s", lfn); + + if (trace & T_MEM) { + printf("Memory State after processing lattice\n"); + PrintAllHeapStats(); + } + ResetHeap (&transHeap); + ResetHeap (&latHeap); +} +#endif + + +/* ---------------------------------------------------------------------- */ +/* confusion network clustering */ + +/*------------------------------ data structures -------------------------*/ + +typedef struct _ConfNet ConfNet; +typedef struct _SCluster SCluster; +typedef struct _SCWord SCWord; + +struct _SCWord { + Word word; + LogDouble post; + HTime startT; + HTime endT; + SCWord *next; +}; + +struct _SCluster { + int n; + + SCWord *arc; + int *predBV; /* precedence relation BitVector */ + + HTime startT; /* boundary time of the cluster */ + HTime endT; /* i.e. 'outer' limits of link times */ +#ifdef DEBUG_SANITY + int status; /* used only for debugging */ +#endif + SCluster *next; + SCluster *prev; +}; + + +struct _ConfNet { + MemHeap *heap; + int nClusters; + int bvsize; + SCluster *head; /* doubly linked list with sentinels */ + SCluster *tail; +}; + + + +/*GE + entry for a linked list holding a pair of links that are + candidates for clustering and their distance score + */ + +typedef struct _ClusterCand ClusterCand; + +struct _ClusterCand { + int l1; + int l2; + SCluster *sc1; + SCluster *sc2; + double score; + ClusterCand *next; +}; + + +/*------------------------------ prototypes ----------------------------*/ +double SimScore(ConfNet *cn, SCluster *sc1, SCluster *sc2); + + +/*--------------------------bit vector code ----------------------------*/ + + +/* ### these should really be defined as macros. + unless the automatic inlining of the compiler works + really well that would be much faster. +*/ + +/* allocBV + return pointer to new, EMPTY bitvector +*/ +int *allocBV(MemHeap *heap, int size) +{ + int *bv; + + bv = (int *) New (heap, size * sizeof(int)); + memset(bv, 0, size * sizeof(int)); + + return (bv); +} + +/* copyBV + */ +void copyBV(int *src, int*dest, int size) +{ + int i; + + assert(dest); + for(i=0; i= end1)) + return 0.0; + else { + norm=end1-start1+end2-start2; + /* 1 |---------| + 2 |-- */ + if (start2 < start1 ) { + /* 1 |---------| + 2 |------| */ + if (end2 < end1) + return ((end2 - start1)/norm); + /* 1 |---------| + 2 |-------------| */ + else + return ((end1 - start1)/norm); + } + /* 1 |---------| + 2 |--- */ + else { + /* 1 |---------| + 2 |----| */ + if (end2 < end1) + return ((end2 - start2)/norm); + /* 1 |---------| + 2 |-------| */ + else + return ((end1 - start2)/norm); + } + } +} + +/* + overlapSC +*/ +HTime overlapSC(SCluster *sc1, SCluster *sc2) +{ + return overlapT(sc1->startT, sc1->endT, + sc2->startT, sc2->endT); +} + + + + + +/*-------------------------Levenshtein distance ------------------------*/ + +/*GE cell in grid for Levenshtein DP alignment -- from OracleLM.c */ +typedef struct cell +{ + int score; /* weighted alignment score */ + int ins; /* Total number of insertions */ + int del; /* Total number of deletions */ + int sub; /* Total number of substitutions */ + int cor; /* Total number of matches */ +} Cell; + +/*GE + - cache entry for phonetic similarity values + - currently setup as a linked list. + + ### This should really be a hash table + */ +typedef struct simcache { + Word w1; + Word w2; + double dist; + struct simcache *next; +} SimCacheEntry; + +#define MAXNPHONES 100 +static Cell **SimGrid=NULL; +static SimCacheEntry *SimCache=NULL; + + +/*GE + InitSimScore() + - initialise grid for DP alignment and cache for similarity scores + +*/ +void InitSimScore(void) +{ + int i; + + if ((SimGrid = (Cell **)malloc((MAXNPHONES+1)*sizeof(Cell*))) == NULL) + HError(4123,"InitSimScore: Cannot create grid pointer array"); + for (i=0; i<=MAXNPHONES;i++) + if ((SimGrid[i] = (Cell*) calloc(MAXNPHONES+1,sizeof(Cell))) == NULL) + HError(4123,"InitSimScore: Cannot create grid column %d",i); + + /* setup error weights */ + subPen = 2; + delPen = 1; + insPen = 1; + + SimCache=NULL; +} + +/*GE + CalcWER() + + - perform Levenshtein DP alignment of hyp & ref + - code mostly nicked from OracleLM.c + - changed to use global grid memory, to avoid tons of + alloc/free for each alignment +*/ +Cell CalcWER(Cell **grid, int hypSize, LabId *hyp, int refSize, LabId *ref) +{ + Cell *gridi,*gridi1,ans; + int h,d,v,i,j; + +#if 0 + if ((grid = (Cell **)malloc((hypSize+1)*sizeof(Cell*))) == NULL) + HError(2,"CalcWER: Cannot create grid pointer array"); + for (i=0; i<=hypSize;i++) + if ((grid[i] = (Cell*) calloc(refSize+1,sizeof(Cell))) == NULL) + HError(2,"CalcWER: Cannot create grid column %d",i); +#endif + + grid[0][0].score = grid[0][0].cor = 0; + grid[0][0].ins = grid[0][0].del = grid[0][0].sub = 0; + + for (i=1;i<=hypSize;i++) { + grid[i][0] = grid[i-1][0]; + grid[i][0].score += insPen; + ++grid[i][0].ins; + } + for (i=1;i<=refSize;i++) { + grid[0][i] = grid[0][i-1]; + grid[0][i].score += delPen; + ++grid[0][i].del; + } + + for (i=1;i<=hypSize;i++){ + gridi = grid[i]; gridi1 = grid[i-1]; + for (j=1;j<=refSize;j++) { + h = gridi1[j].score +insPen; + d = gridi1[j-1].score; + if (ref[j-1] != hyp[i-1]) + d += subPen; + v = gridi[j-1].score + delPen; + if (v <= d && v <= h) { + gridi[j] = gridi[j-1]; + gridi[j].score = v; + ++gridi[j].del; + } + else if (d <= h) { + gridi[j] = gridi1[j-1]; + gridi[j].score = d; + if (ref[j-1] == hyp[i-1]) + ++gridi[j].cor; + else + ++gridi[j].sub; + } + else { + gridi[j] = gridi1[j]; + gridi[j].score = h; + ++ gridi[j].ins; + } + } + } + + ans=grid[hypSize][refSize]; + +#if 0 + for (i=0;i<=hypSize;i++) + free(grid[i]); + free(grid); +#endif + + return(ans); +} + + +/*GE + PronDist() + + - calculate phonetic distance between canonical pronunciations + of two words. + */ +double PronDist(Pron p1, Pron p2) +{ + LabId *phones1, *phones2; + int np1, np2; + Cell align; + double dist=0.0; + + assert(p1); + assert(p2); + + phones1 = p1->phones; + np1 = p1->nphones; + phones2 = p2->phones; + np2 = p2->nphones; + +#if 0 + if (np2 > np1) { + npt=np1; pt=p1; + np1=np2; p1=p2; + np2=npt; p2=pt; + } +#endif + + assert (SimGrid); + align = CalcWER (SimGrid, np1, phones1, np2, phones2); + dist = align.score / ((double) (np1+np2)); + + assert (dist <= 1.0); + return (1.0 - dist); +} + +/*GE + WordDist() +*/ +double WordDist(Word w1, Word w2) +{ + double dist=0.0; + SimCacheEntry *sce; + Pron p1, p2; + + if (w1 == w2) + return (1.0); + + if (w1 < w2) { + Word temp; + temp = w1; + w1 = w2; + w2 = temp; + } + + /* look in cache */ + /* ### optimise by using hash tables */ + for (sce = SimCache; sce; sce = sce->next) + if ((sce->w1 == w1) && (sce->w2 == w2)) + break; + + if (sce) { + return (sce->dist); + } + + p1 = w1->pron; + p2 = w2->pron; + + if (p1 && p2) { + dist = PronDist(p1, p2); + } + else { +#if 1 + printf("NO Pronunciation for %s %s\n", w1->wordName->name, w2->wordName->name); +#endif + dist=1.0; + } + assert (dist >= 0.0); + + /* enter w1/w2 dist into cache */ + sce = (SimCacheEntry *) New (&gcheap, sizeof(SimCacheEntry)); + + sce->w1 = w1; + sce->w2 = w2; + sce->dist = dist; + sce->next = SimCache; + SimCache = sce; + + return (dist); +} + +/*GE + SimScore() + + - calculate similarity of two SClusters, handle averaging and stuff + */ +double SimScore(ConfNet *cn, SCluster *sc1, SCluster *sc2) +{ + int nw1, nw2, n; + SCWord *scw1, *scw2; + double wd=0, dist=0.0; + + n=0; + for (nw1=0, scw1 = sc1->arc; scw1; ++nw1, scw1 = scw1->next) { + for (nw2=0, scw2 = sc2->arc; scw2; ++nw2, scw2 = scw2->next) { + ++n; + /* + printf("SimScore: %s (%ld) %s (%ld)\n", + scw1->sym->name, scw1->sym, + scw2->sym->name, scw2->sym); + */ + wd = WordDist(scw1->word, scw2->word); + + /* #### EXPT: GE 25.11.99 */ + /* disabled for now. This should become a command line option */ +#if 1 + dist += wd * L2F(scw1->post) * L2F(scw2->post); +#else + dist += wd; +#endif +#if 0 + printf("SImScore %-9s %-9s %.4f %e %f %f ", + scw1->sym->name, scw2->sym->name, + wd, dist, + scw1->posterior, scw2->posterior); + if (getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize)) + printf(">>>\n"); + else + printf("\n"); + +#endif + } + } + +#if 0 + printf(" %f\n", (dist/n)); +#endif + return (dist/n); +} + + +/*------------------------------ the code ------------------------------*/ + +SCWord *NewSCWord(MemHeap *heap) +{ + SCWord *scw; + + scw = (SCWord *) New (heap, sizeof (SCWord)); + + scw->word = NULL; + scw->post = 0.0; + scw->startT = scw->endT = 0.0; + scw->next = NULL; + + return scw; +} + +SCluster *NewSCluster(MemHeap *heap) +{ + SCluster *sc; + + sc = (SCluster *) New (heap, sizeof (SCluster)); + sc->n = -1; + sc->arc = NULL; + sc->predBV = NULL; + sc->startT = sc->endT = 0.0; + sc->prev = sc->next = NULL; + + return sc; +} + +/* insert b after a */ +void InsertSC (SCluster *a, SCluster *b) +{ + + b->next = a->next ; + b->prev = a; + a->next = b; + b->next->prev = b; +} + + +void CalcPosteriors (Lattice *lat) +{ + /* store arc posteriors in la->score */ + int i; + LArc *la; + LogDouble pX; /* prob of data; p(X) = alpha(final) = beta(root) */ + + LatAttachInfo (&latHeap, sizeof (FBinfo), lat); + + pX = LatForwBackw (lat, LATFB_SUM); + + for (i = 0; i < lat->na; ++i) { + la = &lat->larcs[i]; + la->score = LArcPosterior (lat, la) - pX; + } +} + +static int la_cmp(const void *v1,const void *v2) +{ + LArc *la1,*la2; + HTime t; + + la1 = *((LArc **) v1); + la2 = *((LArc **) v2); + + t = la1->start->time - la2->start->time; + if (t != 0) { + if (t > 0) + return 1; + else + return -1; + } + else { + t = la1->end->time - la2->end->time; + if (t != 0) { + if (t > 0) + return 1; + else + return -1; + } + else + return ((int) (la1->end->word - la2->end->word)); + } +} + +ConfNet *InitConfNet (MemHeap *heap, Lattice *lat) +{ + /* init clustering: combine arcs with same word× into clusters */ + int i; + ConfNet *cn; + SCluster *sc; + LArc *la, **orderLA; + + /* alloc & init ConfNet */ + cn = (ConfNet *) New (heap, sizeof (ConfNet)); + cn->nClusters = 0; + cn->heap = heap; + + /* alloc sentinels */ + cn->head = NewSCluster (heap); + cn->tail = NewSCluster (heap); + cn->head->next = cn->tail; + cn->tail->prev = cn->head; + + + /*# sort arcs based on start time, end time & word ==> orderLA */ + orderLA = (LArc **) New (&gstack, lat->na * sizeof(LArc *)); + for (i = 0; i < lat->na; ++i) + orderLA[i] = &lat->larcs[i]; + + qsort (orderLA, lat->na, sizeof (LArc *), la_cmp); + + sc = NULL; + for (i = 0; i < lat->na; ++i) { + la = orderLA[i]; + if (sc && sc->arc->startT == la->start->time && + sc->arc->endT == la->end->time && + sc->arc->word == la->end->word) { /* combine */ + + /* add arc la to cluster sc */ + sc->arc->post = LAdd (sc->arc->post, la->score); + + la->hook = (Ptr) sc; + } + else { + sc = NewSCluster (heap); + InsertSC (cn->tail->prev, sc); /* insert at end */ + cn->nClusters++; + sc->n = cn->nClusters; + + /* put arc la into cluster sc */ + sc->arc = NewSCWord (heap); + sc->arc->word = la->end->word; + sc->arc->post = la->score; + sc->startT = sc->arc->startT = la->start->time; + sc->endT = sc->arc->endT = la->end->time; + + la->hook = (Ptr) sc; + } + } + + Dispose (&gstack, orderLA); + orderLA = NULL; + + /* initialise precedence bit vectors */ + + cn->bvsize = ceil(cn->nClusters / (8.0 * sizeof (int))); + i = 0; + for (sc = cn->head->next; sc != cn->tail; sc = sc->next) { + sc->predBV = allocBV (heap, cn->bvsize); + ++i; + } + assert (i == cn->nClusters); + + return cn; +} + + +void CalcPrecedence (ConfNet *cn, Lattice *lat) +{ + /* calculate predecessor list for each SCluster */ + int i; + LArc *la, *follLA; + SCluster *sc, *follSC; + LNode *ln, **topOrder; + + topOrder = (LNode **) New (&gstack, lat->nn * sizeof(LNode *)); + LatTopSort (lat, topOrder); + + for (i = 0; i < lat->nn; ++i) { + ln = topOrder[i]; /* traverse in topological order */ + + for (la = ln->foll; la; la = la->farc) { + assert (la->hook); + + sc = (SCluster *) la->hook; + /* for all outgoing arcs */ + for (follLA = la->end->foll; follLA; follLA = follLA->farc) { + follSC = (SCluster *) follLA->hook; + assert (sc != follSC); + + /* add sc's predecessors to follSC */ + orBV (sc->predBV, follSC->predBV, cn->bvsize); + /* add sc itself */ + setBV (sc->n, follSC->predBV, cn->bvsize); + } + + la->hook = NULL; /* sanity check */ + } + } + Dispose (&gstack, topOrder); +} + + +void PrintConfNet (ConfNet *cn) +{ + int i; + SCluster *sc; + SCWord *scw; + + sc = cn->head; + for (i = 0; i < cn->nClusters; ++i) { + sc = sc->next; + printf ("SC %d %.2f -- %.2f\n", sc->n, sc->startT, sc->endT); + for (scw = sc->arc; scw; scw = scw->next) { + printf (" SCW %.2f -- %.2f %f %s\n", scw->startT, scw->endT, + scw->post, scw->word->wordName->name); + } + } + assert (sc->next == cn->tail); +} + +/*GE + InsertCC() + - insert new cluster candidate into sorted list +*/ +ClusterCand *InsertCC(ClusterCand *cc1, + ClusterCand *ccList) +{ + ClusterCand *cc2; + + /* cc1 will be first */ + if (!ccList || (cc1->score > ccList->score)) { + cc1->next = ccList; + ccList = cc1; + } + else { + /* find cc2 after which cc1 is to be inserted */ + for (cc2 = ccList; + cc2->next && (cc2->next->score > cc1->score); + cc2 = cc2->next) + ; + cc1->next = cc2->next; + cc2->next = cc1; + } + + return ccList; +} + + +/*GE + FindClusterCand() + - generate list of candidate pairs for clustering + + pass 2: only consider clusters with the same word + pass 3: cluster different words + +*/ +ClusterCand *FindClusterCand(ConfNet *cn, int pass) +{ + SCluster *sc1, *sc2; + ClusterCand *cc, *ccList; + int i, j, count=0; + HTime overlap; + + /* consider all pairs of clusters (i,j) with ihead->next; i <= cn->nClusters; ++i, sc1 = sc1->next) { + for (j = i+1, sc2 = sc1->next; j <= cn->nClusters; ++j, sc2 = sc2->next) { + +#if 0 + printf("i %d %.2f -> %.2f ", sc1->n, sc1->startT, sc1->endT); + printf("j %d %.2f -> %.2f\n", sc2->n, sc2->startT, sc2->endT); +#endif + /* for inter=0 the clusters are still sorted by end time + optimised by stopping at + sc2->end->time start->time */ + + if (pass == 2 && (sc2->startT >= sc1->endT)) + break; + + assert(sc1->startT <= sc1->arc->startT); + assert(sc1->endT >= sc1->arc->endT); + assert(sc2->startT <= sc2->arc->startT); + assert(sc2->endT >= sc2->arc->endT); + + if ((pass >= 3) || (sc1->arc->word == sc2->arc->word)) { + overlap = overlapSC (sc1, sc2); + assert(overlap >= 0.0); + + if ((overlap > 0.0 || pass == 4) + && (!getBV(sc1->n, sc2->predBV, cn->bvsize) + && !getBV(sc2->n, sc1->predBV, cn->bvsize))) { + ++count; + cc = (ClusterCand *) New (cn->heap, sizeof(ClusterCand)); + + cc->l1 = i; + cc->l2 = j; + cc->sc1 = sc1; + cc->sc2 = sc2; + + switch (pass) { + case 2: + cc->score = overlap; + break; + case 3: + case 4: + cc->score = SimScore (cn, sc1, sc2); + break; + default: + abort(); + break; + } + if (trace&T_CN) + printf ("cluster %d %d %f\n", cc->l1, cc->l2, cc->score); + + ccList = InsertCC (cc, ccList); + } + } + } /* for j */ + } /* for i */ + + if (trace & T_CN) { + printf("FindClusterCandidate: found %d candidate pairs\n", count); + } + +#ifdef DEBUG_SANITY + for (clust1=clustList; clust1; clust1=clust1->next) + --count; + assert(count==0); +#endif + + return ccList; +} + + +/*GE + MergeSClusters() + + - merge two SClusters if they are different and not + in relation + - update precedence relation on all SClusters affected + - do NOT update the foll/pred pointers -- it's a wste of time + we rely on the precednce bitvectors instead. +*/ +int MergeSClusters (ConfNet *cn, SCluster *sc1, SCluster *sc2, Boolean merge) +{ + int i; + SCluster *sca; + /* SCList *scl1, *scl2; */ + + /* clusters equal? */ + if (sc1 == sc2) { + printf("clusters are equal!\n"); + return 0; /* not merged */ + } + + /* does sc1 preceed sc2 or vice versa? */ + if ((getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize))) { + printf("clusters are in order!\n"); + return 0; /* not merged */ + } + + +#if 0 + printf ("MERGE %d %.2f -- %.2f %d %.2f -- %.2f %s\n", sc1->n, sc1->startT, sc1->endT, + sc2->n, sc2->startT, sc2->endT, sc1->arc->word->wordName->name); +#endif + + if (merge) { + /* merge word entries */ + assert(sc1->arc->word == sc2->arc->word); + sc1->arc->post = LAdd(sc1->arc->post, sc2->arc->post); + } + else { + /* chain sc2's arcs to the end of sc1's linked list */ + /* ### this should really combine entries for the same word + ### can that really still happen at this stage?? */ + SCWord *t; + for (t = sc1->arc; t->next; t = t->next) + ; + t->next = sc2->arc; + sc2->arc = NULL; + } + + /* combine BVs */ + orBV (sc2->predBV, sc1->predBV, cn->bvsize); + /* now sc1->predBV lists all predecessors of sc1 AND sc2 + we add these to all successors of the old sc1 and sc2 + */ + + /* propagate BV forward from sc1: + : we don't need to worry about calculating transitive + : closures or traversing the clusters in the right order + : as we just add the predBV of sc2 to sc1's successors + : and vice versa. */ + /* this loop is hopefully faster than a recursive traversal */ + for (i = 0, sca = cn->head->next; i < cn->nClusters; ++i, sca = sca->next) { + if (sca->n >= 0) { + if (getBV (sc1->n, sca->predBV, cn->bvsize)){ + /* sca succeeds sc1! */ + orBV (sc1->predBV, sca->predBV, cn->bvsize); + /* setBV(sc2->n, sca->predBV, cn->bvsize); */ + } + if (getBV (sc2->n, sca->predBV, cn->bvsize)){ + /* sca succeeds sc2! */ + orBV (sc1->predBV, sca->predBV, cn->bvsize); + setBV (sc1->n, sca->predBV, cn->bvsize); + } + } + } + + /* deactivate sc2 */ + sc2->n = -1; + + + + /* update times */ + if (sc2->startT < sc1->startT) + sc1->startT = sc2->startT; + if (sc2->endT > sc1->endT) + sc1->endT = sc2->endT; + + + sc2->prev->next = sc2->next; + sc2->next->prev = sc2->prev; + + --cn->nClusters; + /* #### delete sc2 */ + + return 1; +} + +/*GE + UpdateClusterCand() + - loop over list of clustering candidates + and update all entries which were affected by + last merger (sca/scb) +*/ +ClusterCand *UpdateClusterCand(ConfNet *cn, ClusterCand *cl, + SCluster *sca, SCluster *scb) +{ + ClusterCand *cc1, *cc2, *newcc=NULL; + SCluster *sc1, *sc2; + double dist; + int count=0; + int ncount=0; + int dcount=0; + + for (cc1=cl; cc1; cc1=cc1->next) { + /* sc1 and sc2 were cluster HEADS before combining sca and scb */ + + sc1=cc1->sc1; + sc2=cc1->sc2; + ++count; + + if ((sc1==sca) || (sc2==sca) + ||(sc1==scb) || (sc2==scb)){ + /* entry was affected by last clustering */ + + if (sc1 == scb) + sc1 = cc1->sc1 = sca; + if (sc2 == scb) + sc2 = cc1->sc2 = sca; + + + if ((sc1 == sc2) + || getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize)) { + /* clusters are equal or in precedence => delete entry */ + cc1->l1 = cc1->l2=-1; + cc1->sc1 = cc1->sc2 = NULL; + ++dcount; + /* #### delete entry! */ + } + else { + /* calc new score */ + dist = SimScore(cn, sc1, sc2); + + cc2 = (ClusterCand *) New (cn->heap, sizeof(ClusterCand)); + + cc2->next = newcc; + cc2->l1 = sc1->n; + cc2->l2 = sc2->n; + cc2->sc1 = sc1; + cc2->sc2 = sc2; + + cc2->score = dist; + newcc = cc2; + + cc1->l1 = cc1->l2 = -1; + cc1->sc1 = cc1->sc2 = NULL; + /* #### delete entry! */ + + ++ncount; + } + } + } /* for cc1 */ + + + if (trace&T_CN) + printf("UCC: %d entries and %d new entries %d entries deleted\n", + count, ncount, dcount); + + /* ## maybe delete deactivated entries here, instead of skipping + them in ProcessClusterCand? + */ + + /* insert newcc entries into list */ + for(cc1 = newcc; cc1; cc1 = cc2) { + cc2 = cc1->next; + cc1->next = NULL; + cl = InsertCC (cc1, cl); + } + + count = 0; + for (cc1 = cl; cc1; cc1 = cc2) { + cc2 = cc1->next; + while (cc2 && (!cc2->sc1 || !cc2->sc2 + || (cc2->sc1 == cc1->sc1 && cc2->sc2 == cc1->sc2))) { + cc2 = cc2->next; + ++count; + } + cc1->next = cc2; + } + if (trace&T_CN) + printf ("purged %d entries\n", count); + + + return cl; +} + + +/* + ProcessClusterCand + +*/ +int ProcessClusterCand (ConfNet *cn, ClusterCand *ccList, int pass) +{ + ClusterCand *cc1, *cc2; + SCluster *sc1, *sc2; + int count; + + count=0; + for (cc1 = ccList; cc1; cc1 = cc2) { + if ((cc1->l1 != -1) && (cc1->l2 != -1)) { + + /* combine the two CLUSTERS corresponding to this entry */ + sc1 = cc1->sc1; + sc2 = cc1->sc2; + + cc2 = cc1->next; + + if ((sc1 != sc2) + && !(getBV(sc1->n, sc2->predBV, cn->bvsize) + || getBV(sc2->n, sc1->predBV, cn->bvsize))) { +#if 0 + printf("merge %d/%d %s (%.2f -- %.2f)", + clust1->l1, sc1->n, sc1->word->sym->name, + sc1->tstart, sc1->tend); + printf(" %d/%d %s (%.2f -- %.2f)\n", + clust1->l2, sc2->n, sc2->word->sym->name, + sc2->tstart, sc2->tend); +#endif + count += MergeSClusters (cn, sc1, sc2, pass==2 ? TRUE : FALSE); + + if (pass >= 2) /* #### maybe (inter>=1) ? */ + cc2 = UpdateClusterCand (cn, cc2, sc1, sc2); + } + else{ +#if 0 + printf("skip %d/%d %s %.2f -- %.2f j %d/%d %s %.2f -- %.2f\n", + clust1->l1, sc1->n, sc1->word->sym->name, + sc1->word->start, sc1->word->end, + clust1->l2, sc2->n, sc2->word->sym->name, + sc2->word->start, sc2->word->end); +#endif + } + } + else /* deactivated entry */ + cc2 = cc1->next; + + } + + if (trace&T_CN) + printf("ProcessClusterCand: combined %d links\n", count); + + return count; +} + + +void PruneConfNet (ConfNet *cn, LogDouble thresh) +{ + int pCount = 0; + SCluster *sc; + + for (sc = cn->head->next; sc != cn->tail; sc = sc->next) { + if (sc->arc->post < thresh) { + ++pCount; + sc->prev->next = sc->next; + sc->next->prev = sc->prev; + } + } + if (trace & T_CN) + printf ("PruneConfNet: pruned %d entries\n", pCount); + + cn->nClusters -= pCount; +} + + +/* sc_cmp + + helper function for SortConfNet, called from qsort() +*/ +static int bvSize = 0; /* hack! */ +static int sc_cmp(const void *v1,const void *v2) +{ + SCluster *sc1, *sc2; + + sc1 = *((SCluster **) v1); + sc2 = *((SCluster **) v2); + + if (getBV (sc1->n, sc2->predBV, bvSize)) + return -1; + else + return 1; +} + +/* + SortConfNet + + sort the SCluster in ConfNet into precedence order. +*/ +void SortConfNet (ConfNet *cn) +{ + int i; + SCluster **scArray, *sc1; + + scArray = (SCluster **) New (cn->heap, cn->nClusters * sizeof (SCluster *)); + for (i = 0, sc1 = cn->head->next; sc1 != cn->tail; sc1 = sc1->next, ++i) { + scArray[i] = sc1; + } + assert (i == cn->nClusters); + + if (cn->nClusters == 1) + return; /* no need to sort */ + + bvSize = cn->bvsize; + qsort (scArray, cn->nClusters, sizeof (SCluster *), sc_cmp); + + assert (cn->nClusters >= 1); + + cn->head->next = scArray[0]; + scArray[0]->prev = cn->head; + scArray[0]->next = scArray[1]; + for (i = 1; i < cn->nClusters-1; ++i) { + sc1 = scArray[i]; + sc1->prev = scArray[i-1]; + sc1->next = scArray[i+1]; + } + + i = cn->nClusters-1; + cn->tail->prev = scArray[i]; + scArray[i]->prev = scArray[i-1]; + scArray[i]->next = cn->tail; + + Dispose (cn->heap, scArray); + +#if 1 /* sanity check */ + /* check whether SClusters are in correct order */ + for (sc1 = cn->head->next; sc1 != cn->tail; sc1 = sc1->next) { + if ((sc1->prev != cn->head) + && (!getBV(sc1->prev->n, sc1->predBV, cn->bvsize))) { + printf("##### ERRROR sc %d does not precede sc %d\n", + sc1->prev->n, sc1->n); + } + } +#endif +} + + +ConfNet *ClusterLat2ConfNet (MemHeap *heap, Lattice *lat) +{ + ConfNet *cn; + ClusterCand *ccList; + + CalcPosteriors (lat); + + /* init clustering: combine arcs with same word× into clusters */ + cn = InitConfNet (heap, lat); + + CalcPrecedence (cn, lat); + + PruneConfNet (cn, -10.0); + + /* pass 2 */ + if (trace&T_CN) { + printf ("pass 2..."); + fflush (stdout); + } + ccList = FindClusterCand (cn, 2); + ProcessClusterCand (cn, ccList, 2); + + /* PruneConfNet (cn, -5.0); */ + PruneConfNet (cn, confNetPrune); + if (trace & T_CN) + PrintConfNet (cn); + + /* pass 3 */ + if (trace&T_CN) { + printf ("pass 3..."); + fflush (stdout); + } + ccList = FindClusterCand (cn, 3); + ProcessClusterCand (cn, ccList, 3); + + + /* pass 4 -- why do I need this? */ + ccList = FindClusterCand (cn, 4); + if (ccList) { + if (trace&T_CN) { + printf ("pass 4..."); + fflush (stdout); + } + ProcessClusterCand (cn, ccList, 3); + } + + if (trace&T_CN) { + printf ("done\n"); + fflush (stdout); + } + + SortConfNet (cn); + + if (trace&T_CN) + PrintConfNet (cn); + + return cn; +} + + +Transcription *TranscriptionFromConfNet (ConfNet *cn) +{ + Transcription *trans; + LabList *lList; + LLink lab; + SCluster *sc; + SCWord *scw, *bestSCW; + LogDouble logsum, bestSCWlogpost; + double post; + int i; + + trans = CreateTranscription (&transHeap); + lList = CreateLabelList (&transHeap, 0); + + sc = cn->head; + for (i = 0; i < cn->nClusters; ++i) { + sc = sc->next; + + bestSCW = NULL; + bestSCWlogpost = LZERO; + logsum = LZERO; + + /* find best word and calculate sum of posteriors */ + for (scw = sc->arc; scw; scw = scw->next) { + logsum = LAdd (logsum, scw->post); + if (scw->post > bestSCWlogpost) { + bestSCWlogpost = scw->post; + bestSCW = scw; + } + } + + post = L2F (bestSCWlogpost); + /* word more likely than deleting this SC alltogether? */ + if (post > (1 - L2F(logsum))) { + /* #### take outSym from first pron? */ + if (bestSCW->word->pron && bestSCW->word->pron->outSym) { + + lab = CreateLabel (&transHeap, 0); + lab->labid = bestSCW->word->pron->outSym; + lab->score = post; + lab->start = sc->startT * 1.0e7; + lab->end = sc->endT * 1.0e7; + + /* insert at end of label list */ + lab->pred = lList->tail->pred; + lab->succ = lList->tail; + lab->succ->pred = lab->pred->succ = lab; + } + } + } + assert (sc->next == cn->tail); + + /* fix times in lList */ + { + HTime nextstart=0.0; + for (lab = lList->head; lab; lab = lab->succ) { + if (lab->labid) { /* ignore sentinels */ + lab->start = nextstart; + + if(lab->succ->labid) + nextstart = lab->succ->start; + else + nextstart = lab->end; + + /* average current end and next start */ + lab->end = (lab->end + nextstart) / 2.0; + if (lab->end < lab->start) + lab->end = lab->start+1; + + nextstart = lab->end; + } + } + } + + AddLabelList (lList, trans); + return trans; +} + +void WriteConfnet (ConfNet *cn, char *fn) +{ + FILE *SCF; + Boolean isPipe; + SCluster *sc1; + SCWord *scw; + LogDouble sum; + int k; + + SCF=FOpen (fn, NetOFilter, &isPipe); + if (!SCF) + HError (4110, "cannot open scf file '%s'", fn); + + /* store number of Sausages */ + OutputIntField('N', cn->nClusters, FALSE, "%d", SCF); + fprintf(SCF, "\n"); + + /* for historical reasons the SCFiles contain the SClusters + in reverse order! */ + for (sc1 = cn->tail->prev; sc1 != cn->head; sc1 = sc1->prev) { + + /* store number of words in Sausage */ + sum=LZERO; + for (k = 0, scw = sc1->arc; scw; scw = scw->next) { + ++k; + sum = LAdd (sum, scw->post); + } + if ((sum < 0.0) && (addNullWord)) + ++k; + + OutputIntField('k', k, FALSE, "%d", SCF); + fprintf(SCF, "\n"); + + for (scw = sc1->arc; scw; scw = scw->next) { + if (fprintf(SCF, "W=%-19s ", + ReWriteString (scw->word->wordName->name, + NULL, ESCAPE_CHAR)) < 0) + HError (4114, "WriteConfnet: write failed on scf file"); + OutputFloatField('s', scw->startT, FALSE, "%-7.2f", SCF); + OutputFloatField('e', scw->endT, FALSE, "%-7.2f", SCF); + OutputFloatField('p', scw->post, FALSE, "%-9.5f", SCF); + fprintf(SCF, "\n"); + } + + if ((sum < 0.0) && (addNullWord)) { + /* output !NULL link */ + if (fprintf(SCF, "W=%-19s ", + ReWriteString(vocab.nullWord->wordName->name, + NULL, ESCAPE_CHAR)) < 0) + HError (4114, "WriteConfnet: write failed on scf file"); + OutputFloatField('s', sc1->arc->startT, FALSE, "%-7.2f", SCF); + OutputFloatField('e', sc1->arc->endT, FALSE, "%-7.2f", SCF); + OutputFloatField('p', LSub(0.0, sum), FALSE, "%-9.5f", SCF); + fprintf(SCF, "\n"); + } + } + + FClose (SCF, isPipe); +} + +void ConfNetClusterFile (char *latfn_in, char *latfn_ou, char *labfn_ou) +{ + Lattice *lat; + char lfn[MAXSTRLEN]; + FILE *lf; + Boolean isPipe; + ConfNet *cn; + Transcription *trans; + + if (trace & T_MEM) { + printf("Memory State before processing confnet\n"); + PrintAllHeapStats(); + } + + + MakeFN(latfn_in, latInDir, latInExt, lfn); + + if ((lf = FOpen(lfn,NetFilter,&isPipe)) == NULL) + HError(4110,"HLConf: Cannot open Lattice file %s", lfn); + + lat = ReadLattice (lf, &latHeap, &vocab, FALSE, FALSE); + FClose(lf, isPipe); + if (!lat) + HError (4113, "HLConf: can't read lattice"); + + /* cz277 - scale conf score */ + /*lat->lmscale = lmScale; + lat->wdpenalty = wordPen; + lat->acscale = acScale; + lat->prscale = prScale;*/ + lat->lmscale = lmScale * latScoreScale; + lat->wdpenalty = wordPen * latScoreScale; + lat->acscale = acScale * latScoreScale; + lat->prscale = prScale * latScoreScale; + + if (fixPronProb) + FixPronProbs (lat, &vocab); + + if (clampACLike) + ClampACLike (lat); + + LatCheck (lat); + + cn = ClusterLat2ConfNet (&cnHeap, lat); + + trans = TranscriptionFromConfNet (cn); + + /* save 1-best transcription */ + /* the following is from HVite/HDecode */ + if (trans) { + char labOutfn[MAXSTRLEN]; + + if (labOutForm != NULL) + FormatTranscription (trans, 100, FALSE, FALSE, /* #### fix frameDur! */ + strchr(labOutForm,'X')!=NULL, + strchr(labOutForm,'N')!=NULL,strchr(labOutForm,'S')!=NULL, + strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, + strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); + + MakeFN (labfn_ou, labOutDir, labOutExt, labOutfn); + + if (LSave (labOutfn, trans, ofmt) < SUCCESS) + HError(4114, "ConfNetClusterFile: Cannot save file %s", labOutfn); + if (trace & T_TRAN) { + PrintTranscription (trans, "1-best hypothesis"); + printf ("\n"); + } + } + + if (writeConfNet) { + char scfFN[MAXSTRLEN]; + + MakeFN (latfn_ou, labOutDir, "scf", scfFN); + + WriteConfnet (cn, scfFN); + + } + + if (trace & T_MEM) { + printf("Memory State after processing confnet\n"); + PrintAllHeapStats(); + } + + ResetHeap (&latHeap); + ResetHeap (&cnHeap); + ResetHeap (&transHeap); +} + + +/* ------------------------- End of HLConf.c ------------------------- */ + diff --git a/HTKTools/HLEd.c b/HTKTools/HLEd.c old mode 100644 new mode 100755 index bba9da3..fb06b92 --- a/HTKTools/HLEd.c +++ b/HTKTools/HLEd.c @@ -3,24 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLEd.c: Edit label file(s) */ +/* File: HLEd.c Edit label file(s) */ /* ----------------------------------------------------------- */ -char *hled_version = "!HVER!HLEd: 3.4.1 [CUED 12/03/09]"; -char *hled_vc_id = "$Id: HLEd.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; +char *hled_version = "!HVER!HLEd: 3.5.0 [CUED 12/10/15]"; +char *hled_vc_id = "$Id: HLEd.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -111,6 +127,9 @@ static Vocab vocab; /* And the associated vocab */ static MemHeap tempHeap; /* Storage for current file */ static MemHeap permHeap; /* Permanent storage */ +static char * labFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * labOFileMask = NULL; /* mask for reading lablels (lattices) */ + /* ------------------ Process Command Line ------------------------- */ /* Summary: print a summary of all HLEd commands */ @@ -285,24 +304,31 @@ int main(int argc, char *argv[]) void SetConfParms(void) { int i; + char buf[MAXSTRLEN]; nParm = GetConfig("HLED", TRUE, cParm, MAXGLOBS); if (nParm>0) { if (GetConfInt(cParm,nParm,"TRACE",&i)) trace = i; } + if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { + labFileMask = CopyString(&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString(&gstack, buf); + } } /* Initialise: confparms, str->int map and memory */ void Initialise(void) { - int i; + long int i; char buf[MAXSTRLEN]; LabId labid; SetConfParms(); asterix = GetLabId("*",TRUE); for (i=1;i<=99;i++) { - sprintf(buf,"%d",i); + sprintf(buf,"%ld",i); labid=GetLabId(buf,TRUE); labid->aux=(void*) i; } @@ -553,11 +579,11 @@ void PrintScript(char *scriptFN) printf(" ]\n"); break; case SETLEV: - printf("Set Level to %d\n",(int)i->cmd.args[0]->aux); + printf("Set Level to %ld\n",(long int)i->cmd.args[0]->aux); break; case DELLEV: if (i->cmd.nArgs==1) - printf("Delete Level %d\n",(int)i->cmd.args[0]->aux); + printf("Delete Level %ld\n",(long int)i->cmd.args[0]->aux); else printf("Delete Current Level\n"); break; @@ -641,7 +667,8 @@ void ReadScript(char *scriptFn) ScriptItem *i, *tail=NULL; EdOp op; LabId id,args[MAXARGS]; - int n,nArgs; + int nArgs; + long int n; if(InitSource(scriptFn, &src, NoFilter)cmd.nArgs = ReadIdList(&src,i->cmd.args); if (i->cmd.nArgs!=1 || - (n=(int)i->cmd.args[0]->aux)<1 || n>99 ) + (n=(long int)i->cmd.args[0]->aux)<1 || n>99 ) HError(1230,"ReadScript: ML must have 1 arg between 1 and 99"); break; case DELLEV: @@ -737,7 +764,7 @@ void ReadScript(char *scriptFn) if (i->cmd.nArgs>1) HError(1230,"ReadScript: DL can have at most 1 arg"); if (i->cmd.nArgs==1 && - ((n=(int)i->cmd.args[0]->aux)<1 || n>99) ) + ((n=(long int)i->cmd.args[0]->aux)<1 || n>99) ) HError(1230,"ReadScript: DL arg must be between 1 and 99"); break; case SORT: @@ -1137,7 +1164,7 @@ LabId MakeTriId(LabId l, LabId c, LabId r) { char buf[MAXSTRLEN]; LabId item; - + if ( l!= NULL){ strcpy(buf,l->name); strcat(buf,"-"); strcat(buf,c->name); @@ -1373,7 +1400,9 @@ void EditFile(char *labfn) { ScriptItem *i; char outfn[255]; - int m,d,r,c,a,clev,nlev,list; + char lfn[MAXSTRLEN],buf[MAXSTRLEN],buf2[MAXSTRLEN],buf3[MAXSTRLEN]; + int m,d,r,c,a,nlev,list; + long int clev; Transcription *ct,*levs,*at; LabList *ll,*rl; LLink l; @@ -1381,7 +1410,14 @@ void EditFile(char *labfn) if (trace&T_TOP) { printf("Editing file: %s\n",labfn); fflush(stdout); } - ct = LOpen(&tempHeap,labfn,ifmt); + if (labFileMask != NULL ) { /* support for rescoring label masks */ + if (!MaskMatch(labFileMask,buf,labfn)) + HError(2319,"DoAlignment: mask %s has no match with segemnt %s",labFileMask,labfn); + MakeFN(buf,PathOf(labfn,buf2),ExtnOf(labfn,buf3),lfn); + } else { + strcpy (lfn, labfn); + } + ct = LOpen(&tempHeap,lfn,ifmt); at = CreateTranscription(&tempHeap); triStrip = FALSE; /* reset to default value */ @@ -1426,7 +1462,7 @@ void EditFile(char *labfn) d += DeleteOp(ll,i->cmd.args); break; case DELLEV: if (i->cmd.nArgs==1) - DeleteLevel(levs,(int)i->cmd.args[0]->aux); + DeleteLevel(levs,(long int)i->cmd.args[0]->aux); else DeleteLevel(levs,clev); break; @@ -1437,7 +1473,7 @@ void EditFile(char *labfn) case ISIL: a += ISilOp(ll,i->cmd.args); break; case SETLEV: - clev=(int)i->cmd.args[0]->aux; + clev=(long int)i->cmd.args[0]->aux; if (clev>nlev) { ll = NULL; HError(-1231,"EditLevel: Level %d does not exist",clev); @@ -1462,7 +1498,14 @@ void EditFile(char *labfn) AddLabelList(ll, at); } } - MakeFN(labfn,newDir,newExt,outfn); + if (labFileMask != NULL ) { /* support for rescoring label masks */ + char buf[MAXSTRLEN]; + if (!MaskMatch(labOFileMask,buf,labfn)) + HError(2319,"DoAlignment: mask %s has no match with segemnt %s",labOFileMask,labfn); + MakeFN(buf,newDir,newExt,outfn); + } else { + MakeFN(labfn,newDir,newExt,outfn); + } if (newLabs != NULL) for (clev=1;clev<=at->numLists;clev++) { ll=GetLabelList(at, clev); diff --git a/HTKTools/HLRescore.c b/HTKTools/HLRescore.c old mode 100644 new mode 100755 index e139c5c..bc8d582 --- a/HTKTools/HLRescore.c +++ b/HTKTools/HLRescore.c @@ -3,37 +3,41 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Gunnar Evermann */ /* */ -/* author: Gunnar Evermann */ /* ----------------------------------------------------------- */ -/* Copyright: */ -/* 2001-2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLRescore.c: Lattice rescoring/pruning */ +/* File: HLRescore.c Lattice rescoring/pruning */ /* ----------------------------------------------------------- */ -/*#### todo: +/* TODO: - implement lattice oracle WER calculation - allow batch processing? */ -char *hlrescore_version = "!HVER!HLRescore: 3.4.1 [CUED 12/03/09]"; +char *hlrescore_version = "!HVER!HLRescore: 3.5.0 [CUED 12/10/15]"; char *hlrescore_vc_id = "$Id: HLRescore.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -43,6 +47,7 @@ char *hlrescore_vc_id = "$Id: HLRescore.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Ex #include "HLabel.h" #include "HAudio.h" #include "HParm.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -93,9 +98,9 @@ static char *wpNetFile = NULL; /* word pair LM network filename */ static Lattice *wpNet; /* the word level recognition network */ static Vocab vocab; /* wordlist or dictionary */ -static char *startWord; /* word at start of Lattice (!SENT_START) */ +static char *startWord="!SENT_START"; /* word at start of Lattice (!SENT_START) */ static LabId startLab; /* corresponding LabId */ -static char *endWord; /* word at end of Lattice (!SENT_END) */ +static char *endWord="!SENT_END"; /* word at end of Lattice (!SENT_END) */ static LabId endLab; /* corresponding LabId */ static LabId nullLab; /* !NULL LabId */ static char *startLMWord; /* word at start in LM () */ @@ -110,6 +115,11 @@ static LogDouble pruneOutThresh = - LZERO; /* beam for pruning (-u) */ static LogDouble pruneInArcsPerSec = 0.0; /* arcs per second threshold (-t) */ static LogDouble pruneOutArcsPerSec = 0.0; /* arcs per second threshold (-u) */ +static char *labFileMask = NULL; +static char *labOFileMask = NULL; +static char *latFileMask = NULL; +static char *latOFileMask = NULL; + /* operations to perform: */ static Boolean pruneInLat = FALSE; /* -t */ static Boolean writeLat = FALSE; /* -w */ @@ -131,8 +141,8 @@ static MemHeap transHeap; void SetConfParms (void); void ReportUsage (void); -void ProcessLattice (char *latfn); -void ProcessLabels (char *labfn); +void ProcessLattice (char *latfn_in, char *latfn_ou); +void ProcessLabels (char *labfn_in, char *labfn_ou); /* ---------------- Process Command Line ------------------------- */ @@ -157,6 +167,18 @@ void SetConfParms(void) endLMWord = CopyString (&gstack, buf); if (GetConfBool (cParm, nParm, "FIXBADLATS", &b)) fixBadLats = b; if (GetConfBool (cParm, nParm, "SORTLATTICE", &b)) sortLattice = b; + if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { + labFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATFILEMASK",buf)) { + latFileMask = CopyString (&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATOFILEMASK",buf)) { + latOFileMask = CopyString (&gstack, buf); + } } } @@ -457,20 +479,52 @@ int main(int argc, char *argv[]) if (NextArg() != STRINGARG) HError (4019, "HLRescore: Transcription file name expected"); if (!lab2Lat) { - latfn = GetStrArg(); + char latfn_in[MAXFNAMELEN]; + char latfn_ou[MAXFNAMELEN]; - if (trace & T_TOP) - printf ("File: %s\n", latfn); fflush(stdout); + latfn = GetStrArg(); + if (latFileMask) { + if (!MaskMatch (latFileMask, latfn_in, latfn)) + HError(2319,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latFileMask, latfn); + } + else + strcpy (latfn_in, latfn); + + if (latOFileMask) { + if (!MaskMatch (latOFileMask, latfn_ou, latfn)) + HError(2319,"HLRescore: LABFILEMASK %s has no match with segemnt %s", latOFileMask, latfn); + } + else + strcpy (latfn_ou, latfn); + + if (trace & T_TOP) + printf ("File: %s\n", latfn); fflush(stdout); + + ProcessLattice (latfn_in, latfn_ou); + } else { + char labfn_in[MAXFNAMELEN]; + char labfn_ou[MAXFNAMELEN]; - ProcessLattice (latfn); - } - else { labfn = GetStrArg(); + if (labFileMask) { + if (!MaskMatch (labFileMask, labfn_in, labfn)) + HError(2319,"HLRescore: LABFILEMASK %s has no match with segemnt %s", labFileMask, labfn); + } + else + strcpy (labfn_in, labfn); + + if (labOFileMask) { + if (!MaskMatch (labOFileMask, labfn_ou, labfn)) + HError(2319,"HLRescore: LABOFILEMASK %s has no match with segemnt %s", labOFileMask, labfn); + } + else + strcpy (labfn_ou, labfn); if (trace & T_TOP) printf ("File: %s\n", labfn); fflush(stdout); - ProcessLabels (labfn); + /* obtain label using labfilename, but need to store lattice as original */ + ProcessLabels (labfn_in, labfn_ou); } } @@ -488,14 +542,14 @@ int main(int argc, char *argv[]) apply all the requested operations on lattice */ -void ProcessLattice (char *latfn) +void ProcessLattice (char *latfn_in, char *latfn_ou) { Lattice *lat; char lfn[MAXSTRLEN]; FILE *lf; Boolean isPipe; - MakeFN (latfn, latInDir, latInExt, lfn); + MakeFN (latfn_in, latInDir, latInExt, lfn); if ((lf = FOpen(lfn,NetFilter,&isPipe)) == NULL) HError(4010,"HLRescore: Cannot open Lattice file %s", lfn); @@ -559,7 +613,7 @@ void ProcessLattice (char *latfn) strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); - MakeFN (latfn, labOutDir, labOutExt, lfn); + MakeFN (latfn_ou, labOutDir, labOutExt, lfn); if (LSave (lfn, trans, ofmt) < SUCCESS) HError (4014, "ProcessLattice: Cannot save file %s", lfn); ResetHeap (&transHeap); @@ -587,7 +641,7 @@ void ProcessLattice (char *latfn) for(i=0, ln=lat->lnodes; inn; i++, ln++) ln->score=0.0; - MakeFN (latfn, labOutDir, latInExt, lfn); + MakeFN (latfn_ou, labOutDir, latInExt, lfn); lf = FOpen (lfn, NetOFilter, &isPipe); if (!lf) HError (4014, "ProcessLattice: Could not open file '%s' for lattice output", lfn); @@ -628,18 +682,17 @@ void ProcessLattice (char *latfn) apply all the requested operations on labels */ -void ProcessLabels (char *labfn) +void ProcessLabels (char *labfn_in, char *labfn_ou) { Lattice *lat; char lfn[MAXSTRLEN]; FILE *lf; Boolean isPipe; LabList *ll = NULL, *expll = NULL; - LLink l; Transcription *reftrans; int i, N; - MakeFN (labfn, labInDir, labInExt, lfn); + MakeFN (labfn_in, labInDir, labInExt, lfn); reftrans = LOpen(&labHeap, lfn, ifmt); if (reftrans->numLists >= 1) @@ -652,13 +705,13 @@ void ProcessLabels (char *labfn) /* add start and end word symbols if needed */ if (GetLabN(ll, 1)->labid != startLab) { - l = AddLabel(&labHeap, expll, startLab, 0.0, 0.0, 0.0); + AddLabel(&labHeap, expll, startLab, 0.0, 0.0, 0.0); } for (i=1; i<=N; i++) { - l = AddLabel(&labHeap, expll, GetLabN(ll, i)->labid, 0.0, 0.0, 0.0); + AddLabel(&labHeap, expll, GetLabN(ll, i)->labid, 0.0, 0.0, 0.0); } if (GetLabN(ll, 1)->labid != endLab) { - l = AddLabel(&labHeap, expll, endLab, 0.0, 0.0, 0.0); + AddLabel(&labHeap, expll, endLab, 0.0, 0.0, 0.0); } lat = LatticeFromLabels(expll, nullLab, &vocab, &labHeap); @@ -678,7 +731,7 @@ void ProcessLabels (char *labfn) if (trace & T_LAT) printf ("lattice size: %d nodes/ %d arcs\n", lat->nn, lat->na); - lat->utterance = labfn; + lat->utterance = labfn_ou; lat->vocab = dictfn; lat->voc = &vocab; lat->acscale = acScale; @@ -720,7 +773,7 @@ void ProcessLabels (char *labfn) strchr(labOutForm,'C')!=NULL,strchr(labOutForm,'T')!=NULL, strchr(labOutForm,'W')!=NULL,strchr(labOutForm,'M')!=NULL); - MakeFN (labfn, labOutDir, labOutExt, lfn); + MakeFN (labfn_ou, labOutDir, labOutExt, lfn); if (LSave (lfn, trans, ofmt) < SUCCESS) HError (4014, "ProcessLattice: Cannot save file %s", lfn); ResetHeap (&transHeap); @@ -748,7 +801,7 @@ void ProcessLabels (char *labfn) for(i=0, ln=lat->lnodes; inn; i++, ln++) ln->score=0.0; - MakeFN (labfn, labOutDir, latInExt, lfn); + MakeFN (labfn_ou, labOutDir, latInExt, lfn); lf = FOpen (lfn, NetOFilter, &isPipe); if (!lf) HError (4014, "ProcessLattice: Could not open file '%s' for lattice output", lfn); @@ -785,9 +838,5 @@ void ProcessLabels (char *labfn) ResetHeap (&labHeap); } - -/* CC-mode style info for emacs - Local Variables: - c-file-style: "htk" - End: -*/ +/* ------------------------- End of HLRescore.c ------------------------- */ + diff --git a/HTKTools/HLStats.c b/HTKTools/HLStats.c old mode 100644 new mode 100755 index 6a43312..20a8d54 --- a/HTKTools/HLStats.c +++ b/HTKTools/HLStats.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HLStats.c: gather statistics from transcriptions */ +/* File: HLStats.c Gather statistics from transcriptions */ /* ----------------------------------------------------------- */ -char *hlstats_version = "!HVER!HLStats: 3.4.1 [CUED 12/03/09]"; +char *hlstats_version = "!HVER!HLStats: 3.5.0 [CUED 12/10/15]"; char *hlstats_vc_id = "$Id: HLStats.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -31,6 +47,7 @@ char *hlstats_vc_id = "$Id: HLStats.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $" #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HDict.h" #include "HLM.h" @@ -366,7 +383,8 @@ void InitWordInfo(WordInfo *w, LabId id, Cntr *pCntr) /* InitStats: Create and init all necessary global accumulators */ void InitStats(char *listFn) { - int h,p,l; + int h; + long int l,p; MLink q,hm; HLink hmm; HMMSet *hset; @@ -420,7 +438,7 @@ void InitStats(char *listFn) if (hm==NULL || hmm->hook==0) HError(1390,"InitStats: No physical name found for %s", q->id->name); - InitWordInfo(lTab+l,q->id,pTab+(int)hmm->hook); + InitWordInfo(lTab+l,q->id,pTab+(long int)hmm->hook); l++; } qsort(lTab+1,lSize,sizeof(WordInfo),wd_cmp); @@ -489,13 +507,13 @@ void GatherStats(Transcription *t) if (l->labid==exitId) en--; /* Coerce previous labels to be enterId */ - for (i=0; iaux; - lt = lTab+(int)enterId->aux; ++lt->count; + for (i=0; iaux; + lt = lTab+(long int)enterId->aux; ++lt->count; /* Process actual labels in list */ for (i=st; i<=en; i++) { l = GetLabN(ll,i); - lab=(int)l->labid->aux; + lab=(int)(long int)l->labid->aux; dur = (float)(l->end - l->start)/10000.0; lt=lTab+lab; /* increment stats */ @@ -507,7 +525,7 @@ void GatherStats(Transcription *t) if (doBigram) { /* We ignore all transitions into enterId and exitId */ /* May wish to warn user about badly formed sentences */ - if (!(lab==(int)enterId->aux || (lab==(int)exitId->aux))) { + if (!(lab==(int)(long int)enterId->aux||(lab==(int)(long int)exitId->aux))){ for (j=ASIZE-1;j>0;j--) in[j]=in[j-1]; in[0]=lab; ae = GetAEntry(in,TRUE); @@ -518,11 +536,11 @@ void GatherStats(Transcription *t) /* Deal with transition into EXIT */ if (doBigram) { for (j=ASIZE-1;j>0;j--) in[j]=in[j-1]; - in[0]=(int)exitId->aux; + in[0]=(int)(long int)exitId->aux; ae = GetAEntry(in,TRUE); ae->count++; } - lt = lTab+(int)exitId->aux; ++lt->count; + lt = lTab+(long int)exitId->aux; ++lt->count; } /* ----------------------- Output Results -------------------- */ @@ -536,7 +554,7 @@ int CmpCntr(const void *p1, const void *p2) c1=(Cntr *)p1; c2=(Cntr *)p2; diff=c1->count-c2->count; - if (diff==0) return((int)c2->name->aux-(int)c1->name->aux); + if (diff==0) return((long int)c2->name->aux-(long int)c1->name->aux); else return(diff); } @@ -550,7 +568,7 @@ int CmpWordInfo(const void *p1, const void *p2) c1=(WordInfo *)p1; c2=(WordInfo *)p2; diff=c1->count-c2->count; - if (diff==0) return((int)c2->name->aux-(int)c1->name->aux); + if (diff==0) return((long int)c2->name->aux-(long int)c1->name->aux); else return(diff); } @@ -663,10 +681,10 @@ static float BuildNEntry(NEntry *ne,Vector boff,float bent) ne->nse=0; tot=cnt=0.0; bsum=1.0; - if (ne->word[0]!=(int)exitId->aux) + if (ne->word[0]!=(long int)exitId->aux) for (ae=(AEntry *) ne->user; ae!=NULL; ae=ae->link) { tot+=ae->count; - if (ae->word[0]!=0 && ae->word[0]!=(int)enterId->aux && + if (ae->word[0]!=0 && ae->word[0]!=(long int)enterId->aux && ae->count>bigThresh) cnt+=(ae->count-disCount),ne->nse++,bsum-=boff[ae->word[0]]; } @@ -680,7 +698,7 @@ static float BuildNEntry(NEntry *ne,Vector boff,float bent) bowt = (bsum>0.0) ? (1.0-cnt/tot)/bsum : 0.0; ent = (bowt>0.0) ? bowt*(bent-log2(bowt)) : 0.0; for (cse=ne->se,ae=(AEntry *) ne->user; ae!=NULL; ae=ae->link) - if (ae->word[0]!=0 && ae->word[0]!=(int)enterId->aux && + if (ae->word[0]!=0 && ae->word[0]!=(long int)enterId->aux && ae->count>bigThresh) { prob=((double)ae->count-disCount)/tot; cse->word=ae->word[0]; @@ -706,7 +724,8 @@ void OutputBoBigram(void) SEntry *se; AEntry **aelists; lmId ndx[NSIZE]; - int i,tot,counts[NSIZE+1]; + int tot,counts[NSIZE+1]; + long int i; double uent,ent,bent; lm.heap=&statHeap; @@ -723,7 +742,7 @@ void OutputBoBigram(void) RebuildAETab(aelists); /* Un-hash hashtable */ for (i=1,tot=0.0;i<=lSize;i++) { /* Calculate unigrams first */ - if (i==(int)enterId->aux) + if (i==(long int)enterId->aux) nglm->unigrams[i]=0.0; else if (lTab[i].countunigrams[i]=uniFloor; @@ -752,9 +771,9 @@ void OutputBoBigram(void) ent = BuildNEntry(ne,nglm->unigrams,uent); nglm->counts[2]+=ne->nse; if (trace&T_BIG) - if (i!=(int)exitId->aux){ - if (i==(int)enterId->aux) - bent+=nglm->unigrams[(int)exitId->aux]*ent; + if (i!=(long int)exitId->aux){ + if (i==(long int)enterId->aux) + bent+=nglm->unigrams[(long int)exitId->aux]*ent; else bent+=nglm->unigrams[i]*ent; printf(" %-20s - %4d foll, ent %6.3f [= %6.2f]\n", @@ -795,7 +814,8 @@ void OutputMatBigram(void) Vector vec; double vsum,fsum,tot,scale; double ent,bent,prob,fent; - int i,j,nf,tf=0,nu,tu=0,np,tp=0,tn=0; + int nf,tf=0,nu,tu=0,np,tp=0,tn=0; + long int i,j; lm.heap=&statHeap; lm.type=matBigram; @@ -826,7 +846,7 @@ void OutputMatBigram(void) ae->count=0; scale = (1.0 - fsum) / vsum; for (j=1;j<=lSize;j++) { - if (j==(int)enterId->aux) vec[j]=0.0; + if (j==(long int)enterId->aux) vec[j]=0.0; else if (tot==0.0) vec[j]=1.0/(lSize-1); else vec[j]=bigFloor; } @@ -848,7 +868,7 @@ void OutputMatBigram(void) ent += fent; nf--; np++; } - if (i!=(int)exitId->aux){ + if (i!=(long int)exitId->aux){ j=lTab[i].count; bent+=j*ent;tn+=j; if (tot==0.0) diff --git a/HTKTools/HList.c b/HTKTools/HList.c old mode 100644 new mode 100755 index 2d99f22..0ba3bfc --- a/HTKTools/HList.c +++ b/HTKTools/HList.c @@ -3,37 +3,40 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HList.c: List a Speech File or Audio Source */ +/* File: HList.c List a speech file or audio source */ /* ----------------------------------------------------------- */ -char *hlist_version = "!HVER!HList: 3.4.1 [CUED 12/03/09]"; -char *hlist_vc_id = "$Id: HList.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; +char *hlist_version = "!HVER!HList: 3.5.0 [CUED 12/10/15]"; +char *hlist_vc_id = "$Id: HList.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; #include "HShell.h" #include "HMem.h" @@ -44,6 +47,7 @@ char *hlist_vc_id = "$Id: HList.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" @@ -290,12 +294,13 @@ Boolean IsWave(char *srcFile) { FILE *f; long nSamp,sampP, hdrS; - short sampS,kind; + /*short sampS,kind;*/ + short kind; + unsigned short sampS; /* cz277 - cbu */ Boolean isPipe,bSwap,isWave; char buf[MAXSTRLEN]; ParmKind tgtPK=ANON; FileFormat srcFF=HTK; - Boolean isEXF; /* srcFile is extended file */ char actfname[MAXFNAMELEN]; /* actual filename */ long stIndex, enIndex; /* start and end indices */ @@ -307,7 +312,7 @@ Boolean IsWave(char *srcFile) if (tgtPK == ANON){ if ((srcFF == HTK || srcFF == ESIG) && srcFile != NULL){ strncpy (actfname, srcFile, MAXFNAMELEN); - isEXF = GetFileNameExt (srcFile, actfname, &stIndex, &enIndex); + GetFileNameExt (srcFile, actfname, &stIndex, &enIndex); if ((f = FOpen (actfname, WaveFilter, &isPipe)) == NULL) HError(1110,"IsWave: cannot open File %s",srcFile); diff --git a/HTKTools/HMMIRest.c b/HTKTools/HMMIRest.c old mode 100644 new mode 100755 index 0da6dfd..db90590 --- a/HTKTools/HMMIRest.c +++ b/HTKTools/HMMIRest.c @@ -32,7 +32,7 @@ char *hmmirest_version = "!HVER!HMMIRest: 3.4.1 [CUED 12/03/09]"; char *hmmirest_vc_id = "$Id: HMMIRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; - +char *toolname = "HMMIRest";/*ar527: for error reporting*/ #include "HShell.h" /* HMM ToolKit Modules */ #include "HMem.h" @@ -43,6 +43,7 @@ char *hmmirest_vc_id = "$Id: HMMIRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -307,14 +308,14 @@ void SetConfParms(void) if (!strcmp (buf, "DUMP")) updateMode = UPMODE_DUMP; else if (!strcmp (buf, "UPDATE")) updateMode = UPMODE_UPDATE; else if (!strcmp (buf, "BOTH")) updateMode = UPMODE_BOTH; - else HError(2319, "Unknown UPDATEMODE specified (must be DUMP, UPDATE or BOTH)"); + else HError(2719, "%s: Unknown UPDATEMODE specified (must be DUMP, UPDATE or BOTH)",toolname); } } - if (MPE && uFlagsMLE) HError(1, "Can't combine MPE with ML update of some parameters (code could be simply added)."); - if (MMIPrior && !THREEACCS) HError(999, "MMI Prior must be used in MPE update (THREEACCS)."); - if ((STATICPRIOR && PriorK==0.0) || (!STATICPRIOR && PriorK==1.0)) HError(999, "Specify either PRIORK or STATICPRIOR (PRIORK overwrites value given by STATICPRIOR)."); + if (MPE && uFlagsMLE) HError(2740, "%s: Can't combine MPE with ML update of some parameters (code could be simply added).",toolname); + if (MMIPrior && !THREEACCS) HError(2719, "%s: MMI Prior must be used in MPE update (THREEACCS).",toolname); + if ((STATICPRIOR && PriorK==0.0) || (!STATICPRIOR && PriorK==1.0)) HError(2719, "%s: Specify either PRIORK or STATICPRIOR (PRIORK overwrites value given by STATICPRIOR).",toolname); /* if(ISmoothTau && !ISmoothTauTransSet){ ISmoothTauTrans = 10; printf("Smoothing transitions with tau=%f since ISMOOTHTAUT not set\n",ISmoothTauTrans); } if(ISmoothTau && !ISmoothTauWeightsSet){ ISmoothTauTrans = 10; printf("Smoothing weights with tau=%f since ISMOOTHTAUW not set\n",ISmoothTauWeights); } */ } @@ -381,6 +382,9 @@ int main(int argc, char *argv[]) char datafn1[MAXSTRLEN], *datafn, *datafn2, *s, latfn[MAXSTRLEN], datafn_lat[MAXFNAMELEN]; Lattice *denLats[MAXLATS], *numLats[MAXLATS]; int latn; int maxSnt=0; + Boolean ldBinary=TRUE;/*replaces global in <= V3.4.1 HEREST variable; default value is the same as in HTRAIN*/ + /* from mjfg, cz277 - 141022 */ + Boolean sentFail=FALSE; void Initialise(char *hmmListFn); void UpdateModels(void); @@ -400,9 +404,9 @@ int main(int argc, char *argv[]) InitWave(); InitVQ(); InitModel(); - if(InitParm()avg correctness) */ - ReadInt(&src,&i,1,TRUE); /* i the number of timeperiods (MPE->num correct words).*/ + ReadFloat(&src,&x,1,ldBinary); /*x is the average log prob (MPE->avg correctness) */ + ReadInt(&src,&i,1,ldBinary); /* i the number of timeperiods (MPE->num correct words).*/ CloseSource( &src ); if(!MPE){ totalPr1 += x*i; totalT += i; } @@ -636,11 +642,11 @@ int main(int argc, char *argv[]) if(!ML_MODE){ /* ..Then load MMI acc. */ accfn = GetStrArg(); - if(!strstr(accfn,".acc.2")) HError(-1, "Expecting a *.acc.2 file, got %s", accfn); + if(!strstr(accfn,".acc.2")) HError(-2719, "%s: Expecting a *.acc.2 file, got %s", toolname, accfn); src=LoadAccsParallel(&hset, accfn, uFlagsAccs, 1); - ReadFloat(&src,&x,1,TRUE); /*!x must be the average log prob*/ - ReadInt(&src,&i,1,TRUE); /*!and i the number of timeperiods.*/ + ReadFloat(&src,&x,1,ldBinary); /*!x must be the average log prob*/ + ReadInt(&src,&i,1,ldBinary); /*!and i the number of timeperiods.*/ CloseSource( &src ); /*pr2 contains the MMI stats.*/ @@ -651,11 +657,11 @@ int main(int argc, char *argv[]) if(THREEACCS){ /* (MPE case). */ accfn = GetStrArg(); - if(!strstr(accfn, ".3")) HError(1, "Error, expecting a HDR?.acc.3 file, got %s", accfn); + if(!strstr(accfn, ".3")) HError(2719, "%s: Error, expecting a HDR?.acc.3 file, got %s", toolname,accfn); src=LoadAccsParallel(&hset, accfn, uFlagsAccs, 2/*third position(1st==0) of hset*/); /*src is the still-open file.*/ - ReadFloat(&src,&x,1,TRUE); /*!x must be the average log prob*/ - ReadInt(&src,&i,1,TRUE); /*!and i the number of timeperiods.*/ + ReadFloat(&src,&x,1,ldBinary); /*!x must be the average log prob*/ + ReadInt(&src,&i,1,ldBinary); /*!and i the number of timeperiods.*/ CloseSource( &src ); totalPr1 += x*i; totalT += i; @@ -665,11 +671,11 @@ int main(int argc, char *argv[]) if(MMIPrior){ /* (MPE case). */ accfn = GetStrArg(); - if(!strstr(accfn, ".4")) HError(1, "Error, expecting a HDR?.acc.4 file, got %s", accfn); + if(!strstr(accfn, ".4")) HError(2719, "%s: Error, expecting a HDR?.acc.4 file, got %s", toolname,accfn); src=LoadAccsParallel(&hset, accfn, uFlagsAccs, 3/*fourth position(1st==0) of hset*/); /*src is the still-open file.*/ - ReadFloat(&src,&x,1,TRUE); /*!x must be the average log prob*/ - ReadInt(&src,&i,1,TRUE); /*!and i the number of timeperiods.*/ + ReadFloat(&src,&x,1,ldBinary); /*!x must be the average log prob*/ + ReadInt(&src,&i,1,ldBinary); /*!and i the number of timeperiods.*/ CloseSource( &src ); /*pr3 contains the MMI stats.*/ @@ -680,14 +686,14 @@ int main(int argc, char *argv[]) Boolean isPipe; if(NextArg() != STRINGARG) - HError(2319,"HERest: data file name expected"); + HError(2719,"%s: data file name expected",toolname); if ( maxSnt != 0 && nSnt>maxSnt ) GetStrArg(); /*Pass over file. */ else { /* apply F-B. */ if (twoDataFiles){ if ((NumArgs() % 2) != 0) - HError(2319,"HERest: Odd num of training files for single pass training"); + HError(2719,"%s: Odd num of training files for single pass training",toolname); strcpy(datafn1,GetStrArg()); datafn = datafn1; datafn2 = GetStrArg(); } else { @@ -703,7 +709,7 @@ int main(int argc, char *argv[]) this can be used to discard extra info (various cluster IDs, etc) */ if (latFileMask) { if (!MaskMatch (latFileMask, datafn_lat, datafn)) - HError(2319,"HERest: LATFILEMASK %s has no match with segemnt %s", latFileMask, datafn); + HError(2719,"%s: LATFILEMASK %s has no match with segemnt %s", toolname, latFileMask, datafn); } else strcpy (datafn_lat, datafn); @@ -713,14 +719,14 @@ int main(int argc, char *argv[]) for(latn = 0; latn0); - if (parMode>0 || (parMode==0 && (updateMode&UPMODE_DUMP))){ MakeFN("HDR$.acc.1",newDir,NULL,newFn); f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs, 0); if(MPE){ /* .1 acc contains the MPE crit at the end. */ x = TotalCorr/TotalNWords; - WriteFloat(f, &x, 1, TRUE); - WriteInt(f, &TotalNWords, 1, TRUE); + WriteFloat(f, &x, 1, ldBinary); + WriteInt(f, &TotalNWords, 1, ldBinary); } else { x = totalPr1/totalT; - WriteFloat(f,&x,1,TRUE); - WriteInt(f,&totalT,1,TRUE); + WriteFloat(f,&x,1,ldBinary); + WriteInt(f,&totalT,1,ldBinary); } fclose( f ); @@ -845,8 +857,8 @@ int main(int argc, char *argv[]) MakeFN("HDR$.acc.2",newDir,NULL,newFn); f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs, 1); x = totalPr2/totalT; /*MMI den prob in either MMI or MPE case.*/ - WriteFloat(f,&x,1,TRUE); - WriteInt(f,&totalT,1,TRUE); + WriteFloat(f,&x,1,ldBinary); + WriteInt(f,&totalT,1,ldBinary); fclose( f ); } @@ -855,8 +867,8 @@ int main(int argc, char *argv[]) f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs,2/*3rd position (numbered 2) on hset1(during alignment);*/); x = totalPr1/totalT; /* This is where the MLE prob is stored. */ - WriteFloat(f, &x, 1, TRUE); - WriteInt(f, &totalT, 1, TRUE); + WriteFloat(f, &x, 1, ldBinary); + WriteInt(f, &totalT, 1, ldBinary); fclose( f ); } @@ -865,8 +877,8 @@ int main(int argc, char *argv[]) f=DumpAccsParallel(&hset,newFn,parMode, uFlagsAccs, 3/*4th position (numbered 3) on hset1(during alignment);*/); x = totalPr3/totalT; /* This is where the MMI den prob is stored. */ - WriteFloat(f, &x, 1, TRUE); - WriteInt(f, &totalT, 1, TRUE); + WriteFloat(f, &x, 1, ldBinary); + WriteInt(f, &totalT, 1, ldBinary); fclose( f ); } @@ -884,6 +896,7 @@ int main(int argc, char *argv[]) if (updateMode&UPMODE_UPDATE) UpdateModels(); } + Exit(EXITSTATUS); return (0); /* keep compiler happy */ } @@ -898,7 +911,6 @@ void Initialise(char *hmmListFn) CreateHeap(&accStack, "accStore", MSTAK, 1, 1.0, 50000, 500000); CreateHeap(&latStack,"latStore", MSTAK, 1, 1.0, 50000, 500000); - /* Load HMMs and init HMMSet related global variables */ MakeHMMSet( &hset, hmmListFn ); LoadHMMSet( &hset,hmmDir,hmmExt); @@ -920,7 +932,6 @@ void Initialise(char *hmmListFn) ZeroAccsParallel(&hset, uFlagsAccs, NumAccs); } - P = hset.numPhyHMM; L = hset.numLogHMM; vSize = hset.vecSize; @@ -929,12 +940,12 @@ void Initialise(char *hmmListFn) hsKind = hset.hsKind; if(S > 1) - HError(-1, "HMMIRest: Code is intended to support multiple streams but code has not been debugged. Be warned!"); + HError(-2740, "%s: Code is intended to support multiple streams but code has not been debugged. Be warned!",toolname); /*Check that hset is the right kind.*/ if(!(hsKind == PLAINHS || hsKind == SHAREDHS || hsKind == TIEDHS)) - HError(1, "HMMIRest: hset kind not PLAIN or SHARED or TIED."); + HError(2730, "%s: hset kind not PLAIN or SHARED or TIED.",toolname); if((!(hset.ckind == NULLC)) && (!(hset.ckind == DIAGC))) - HError(1, "HMMIRest: cov kind not DIAGC."); + HError(2724, "%s: cov kind not DIAGC.",toolname); /* Additional code for the adaptation updates */ /*!Deleted*/ @@ -943,7 +954,6 @@ void Initialise(char *hmmListFn) InitialiseFBInfo(&fbInfo, &hset, uFlags|(uFlags&UPMEANS||uFlags&UPVARS ? UPMEANS|UPVARS : 0), twoDataFiles); /*That modification to uFlags means: if either mean or var is updated, accumulate both.*/ - /* Set the variance floor */ SetVFloor( &hset, vFloor, minVar); /*This sets the array minVar up... but it only works if minimum variances have been set within the hmmset (e.g, @@ -959,7 +969,7 @@ void Initialise(char *hmmListFn) if (xfInfo.inSpkrPat == NULL) xfInfo.inSpkrPat = xfInfo.outSpkrPat; if (xfInfo.paSpkrPat == NULL) xfInfo.paSpkrPat = xfInfo.outSpkrPat; if (uFlags != UPXFORM) - HError(999,"Can only update linear transforms OR model parameters!"); + HError(2719,"%s: Can only update linear transforms OR model parameters!",toolname); xfInfo.useOutXForm = TRUE; /* This initialises things - temporary hack - THINK!! */ CreateAdaptXForm(&hset, "tmp"); @@ -1019,14 +1029,14 @@ void StatReport(void) /*This is used by other programs so I have had to change i int px; if ((f = fopen(statFN,"w")) == NULL){ - HError(2311,"StatReport: Unable to open stats file %s",statFN); + HError(2711,"%s:StatReport: Unable to open stats file %s",toolname,statFN); return; } NewHMMScan(&hset,&hss); px=1; do { hmm = hss.hmm; - PrintStats(f,px,hmm,(int)hmm->hook); + PrintStats(f,px,hmm,(int)(unsigned long int)hmm->hook); px++; } while (GoNextHMM(&hss)); EndHMMScan(&hss); @@ -1060,9 +1070,9 @@ void FloorMixes(MixtureElem *mixes, int M, float floor) } nWeight++; } - if (fsum>1.0) HError(2327,"FloorMixes: Floor sum too large"); + if (fsum>1.0) HError(2727,"%s:FloorMixes: Floor sum too large",toolname); if (fsum == 0.0) return; /*all >= floor*/ - if (sum == 0.0) HError(2328,"FloorMixes: No mixture weights above floor"); + if (sum == 0.0) HError(2728,"%s:FloorMixes: No mixture weights above floor", toolname); /*all <= floor*/ scale = (1.0-fsum)/sum; /*fsum is the sum of floor * (no of vals <= floor), sum is sum of >= floor.*/ @@ -1089,9 +1099,9 @@ void FloorTMMixes(Vector mixes, int M, float floor) } nWeight++; } - if (fsum>1.0) HError(2327,"FloorTMMixes: Floor sum too large"); + if (fsum>1.0) HError(2727,"%s:FloorTMMixes: Floor sum too large",toolname); if (fsum == 0.0) return; - if (sum == 0.0) HError(2328,"FloorTMMixes: No mixture weights above floor"); + if (sum == 0.0) HError(2728,"%s:FloorTMMixes: No mixture weights above floor",toolname); scale = (1.0-fsum)/sum; for (m=1; m<=M; m++){ @@ -1117,9 +1127,9 @@ void FloorDProbs(ShortVec mixes, int M, float floor) mixes[m] = DProb2Short(floor); } } - if (fsum>1.0) HError(2327,"FloorDProbs: Floor sum too large"); + if (fsum>1.0) HError(2727,"%s:FloorDProbs: Floor sum too large",toolname); if (fsum == 0.0) return; - if (sum == 0.0) HError(2328,"FloorDProbs: No probabilities above floor"); + if (sum == 0.0) HError(2728,"%s:FloorDProbs: No probabilities above floor",toolname); scale = (1.0-fsum)/sum; for (m=1; m<=M; m++){ fltWt = Short2DProb(mixes[m]); @@ -1167,7 +1177,6 @@ void UpdateTrans(int px, HLink hmm) Vector NewWghts = CreateVector(&gstack, N); Vector OldWghts = CreateVector(&gstack, N); - ta1 = GetHook(hmm->transP); ta2 = (ML_MODE?NULL:ta1+1); ta3 = (THREEACCS?ta1+2:NULL); /*non-NULL in MPE case, where it is the ML accs. */ @@ -1183,7 +1192,7 @@ void UpdateTrans(int px, HLink hmm) UpdateWeightsOrTrans(N, ta1->tran[i], ta2?ta2->tran[i]:NULL, NewWghts, OldWghts, CTrans); for(j=1;j<=N;j++) if(NewWghts[i] == 0 && OldWghts[i] != 0) - HError(-1, "Transitions going to zero: advise setting e.g. ISMOOTHTAUT = 10 "); + HError(-2790, "%s: Transitions going to zero: advise setting e.g. ISMOOTHTAUT = 10 ",toolname); for(j=1;j<=N;j++) hmm->transP[i][j]=(NewWghts[j]>0.0?log(NewWghts[j]):LZERO); } @@ -1217,7 +1226,7 @@ float GiveDimMixD(MixPDF *mp, int k, int priortype){ va1=GetHook(mp->cov.var); va2=va1+1; } else - HError(999,"GiveMixD: Wrong prior type!"); + HError(2719,"%s:GiveMixD: Wrong prior type!",toolname); occ1=ma1->occ; occ2=ma2->occ; if(occ2==0 || (uFlagsMLE&UPVARS)) return 0; @@ -1256,7 +1265,7 @@ float GiveDimMixD(MixPDF *mp, int k, int priortype){ D=MAX(D,occ2*E); if(! FINITE(D)) - HError(1, "NaN in GiveMixD"); + HError(2791, "%s: NaN in GiveMixD",toolname); return D; } @@ -1281,7 +1290,7 @@ Boolean UpdateGauss(int stream, MixPDF *mp){ float D; int k; /* 3rd set of occs only required in MPE case where ML update has been specified for certain parms.. */ - float occ1,occ2,occ3,sqAcc1,sqAcc2,sqAcc3,Acc1,Acc2,Acc3, oldVar,newVar,newMean; + float occ1,occ2,occ3,sqAcc1,sqAcc2,sqAcc3,Acc1,Acc2,Acc3,newVar,newMean; int vSize = hset.swidth[stream]; Vector mean; Covariance cov; @@ -1306,18 +1315,18 @@ Boolean UpdateGauss(int stream, MixPDF *mp){ /* already checked that there is enough occupancy. */ - if(fabs(va1->occ - ma1->occ) > 0.1) HError(1, "Mean and variance occupation counts differ. Means and variances must not be separately tied."); + if(fabs(va1->occ - ma1->occ) > 0.1) HError(2792, "%s: Mean and variance occupation counts differ. Means and variances must not be separately tied.",toolname); if((va3 ? va3->occ : va1->occ) < MinOcc) return FALSE; /* if ML occ < MinOcc dont update. */ if(mp->ckind != DIAGC) - HError(999,"UpdateGauss: unknown ckind %d",mp->ckind); + HError(2724,"%s:UpdateGauss: covariance kind is not DIAGC",toolname); D= GiveMixD(mp,stream,0); /*Use constants on a mix level.*/ for (k=1; k<=vSize-hset.projSize; k++){ /*For each vector component.*/ - sqAcc1 = va1->cov.var[k]; sqAcc2 = va2?va2->cov.var[k]:0.0; sqAcc3 = va3?va3->cov.var[k]:0.0; oldVar = cov.var[k]; + sqAcc1 = va1->cov.var[k]; sqAcc2 = va2?va2->cov.var[k]:0.0; sqAcc3 = va3?va3->cov.var[k]:0.0; Acc1 = ma1->mu[k], Acc2 = ma2?ma2->mu[k]:0.0; Acc3 = ma3 ? ma3->mu[k]:0.0; newMean = @@ -1351,7 +1360,7 @@ Boolean UpdateGauss(int stream, MixPDF *mp){ void UpdateWeightsAndTrans(void){ HMMScanState hss; HLink hmm; - int px,n; + int px; void UpdateWeight(int s, StreamElem *ste); NewHMMScan(&hset,&hss); @@ -1368,10 +1377,6 @@ void UpdateWeightsAndTrans(void){ do{ void UpdateTrans(int px, HLink hmm); hmm=hss.hmm; - n = (int)hmm->hook; /*The number of training egs seen*/ - - /* n is NO LONGER USED. */ - if (uFlags & UPTRANS) UpdateTrans(px,hmm); px++; @@ -1391,7 +1396,7 @@ static void FixWeightsForICrit(float Tau, Boolean THREEACCS){ M = hss.M; wa_dst = (WtAcc*)hss.ste->hook; wa_src = (THREEACCS ? wa_dst+2 : wa_dst); /* THREEACCS should be true for the forseeable use of this. */ for(m=1;m<=M;m++) wa_dst->c[m] += Tau * (wa_src->occ ? wa_src->c[m]/wa_src->occ : 1/M); - if(!wa_src->occ) HError(-1, "wa_src->occ zero, in FixWeightsForICrit."); + if(!wa_src->occ) HError(-2793, "%s: Source mixture component weight is zero, in FixWeightsForICrit.",toolname); wa_dst->occ += Tau; } EndHMMScan(&hss); @@ -1532,7 +1537,7 @@ void AddPriorsFromPriorHMM(int dst_index, float Tau, float K, Boolean IsMMI, flo va_dst = ((VaAcc*)GetHook(mp->cov.var)) + dst_index; { - if(hss_prior.mp->ckind!=DIAGC) HError(1, "Wrong ckind in prior HMMSet."); + if(hss_prior.mp->ckind!=DIAGC) HError(2724, "%s: Wrong ckind in prior HMMSet.",toolname); for(i=1;i<=VectorSize(mp->mean);i++){ float srcmu = hss_prior.mp->mean[i], srcvar = srcmu*srcmu + hss_prior.mp->cov.var[i]; @@ -1598,13 +1603,13 @@ static void FixHMMForICrit(){ Boolean ISmoothingDone=FALSE; if(PriorTau>0||PriorK>0||PriorK>0||PriorTauTrans>0) { - if(!hset_prior_initialised) HError(-1, "Config indicates that you intend to use a prior model (-Hprior), but none supplied."); + if(!hset_prior_initialised) HError(-2719, "%s: Config indicates that you intend to use a prior model (-Hprior), but none supplied.",toolname); } else { - if(hset_prior_initialised) HError(1, "Config indicates that you are not making use of the prior model (-Hprior), which has been supplied."); + if(hset_prior_initialised) HError(2719, "%s: Config indicates that you are not making use of the prior model (-Hprior), which has been supplied.",toolname); } if(hset_prior_initialised){ /* Using a prior HMM set */ - if(hset.ckind == FULLC) HError(1, "Prior HMM set not supported with FULLC."); + if(hset.ckind == FULLC) HError(2731, "%s: Prior HMM set not supported with FULLC.",toolname); if(PriorTauWeights) SmoothWeightsFromPriorHMM(THREEACCS ? 2 : 0, PriorTauWeights); if(PriorTauTrans) SmoothTransFromPriorHMM(THREEACCS ? 2 : 0, PriorTauTrans); if (THREEACCS){ /* if MPE... */ @@ -1656,7 +1661,7 @@ void UpdateWeightsOrTrans(int M, float *acc1, float *acc2, float *mixes, float * /*if(fabs(objective-last_objective) < 1.0e-8*(fabs(objective)+fabs(last_objective)) || iter > 100) break; */ if(objective < last_objective && objective < last_last_objective && !(last_last_objective==0) && fabs(objective-last_objective) > fabs(objective)*0.0001 ) - HError(-1, "Objective not increasing: %f<%f,<%f", objective, last_objective, last_last_objective); + HError(-2794, "%s: Objective not increasing: %f<%f,<%f", toolname, objective, last_objective, last_last_objective); if(iter>100) break; /*this seems to work fine.*/ /*find max f_m*/ @@ -1699,7 +1704,7 @@ void UpdateWeight(int s, StreamElem *ste){ break; case TIEDHS: M = hset.tmRecs[s].nMix; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } if( (wa3?wa3->occ:wa1->occ) > MinOccWeights ){ /* more than MinOccWeights ML stats */ @@ -1713,14 +1718,14 @@ void UpdateWeight(int s, StreamElem *ste){ case TIEDHS: for(n=1;n<=M;n++) NewWghts[n] = OldWghts[n] = ste->spdf.tpdf[n]; break; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } if(uFlagsMLE & UPMIXES && wa2) for(n=1;n<=M;n++) wa2->c[n] = 0.0; UpdateWeightsOrTrans(M, wa1->c, wa2?wa2->c:NULL, NewWghts, OldWghts, CWeights); for(i=1;i<=M;i++) if(NewWghts[i] == 0 && OldWghts[i] != 0) - HError(-1, "Weights going to zero: advise setting e.g. ISMOOTHTAUW = 10 "); + HError(-2795, "%s: Weights going to zero: advise setting e.g. ISMOOTHTAUW = 10 ",toolname); switch (hsKind){ case PLAINHS: @@ -1734,7 +1739,7 @@ void UpdateWeight(int s, StreamElem *ste){ ste->spdf.tpdf[n]=(NewWghts[n] > MINMIX ? NewWghts[n] : 0.0); } break; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } Dispose(&gstack, NewWghts); /*disposes of both.*/ @@ -1747,7 +1752,7 @@ void UpdateWeight(int s, StreamElem *ste){ case TIEDHS: FloorTMMixes(ste->spdf.tpdf,M,mixWeightFloor); break; - default: HError(1, "Unhandled hsKind."); + default: HError(2730, "%s: Unhandled hsKind.",toolname); } } } @@ -1773,7 +1778,7 @@ void FloorVars(HMMSet *hset1, int s){ int vsize; int i; if(!(hset1->hsKind==PLAINHS || hset1->hsKind==SHAREDHS)){ - HError(1, "Percentile var flooring not supported for this kind of hmm set. (e.g. tied.) should be easy."); + HError(2732, "%s: Percentile var flooring not supported for this kind of hmm set. (e.g. tied.) should be easy.",toolname); } else { float **varray; int M=0,m=0,floored=0,equal=0; @@ -1791,7 +1796,7 @@ void FloorVars(HMMSet *hset1, int s){ NewHMMScan(hset1,&hss1); while(GoNextMix(&hss1,FALSE)){ int k; - if(hss1.mp->ckind != DIAGC ) HError(1, "FloorVars expects DIAGC covariances. "); + if(hss1.mp->ckind != DIAGC ) HError(2733, "%s: FloorVars expects DIAGC covariances. ",toolname); for(k=1;k<=vsize;k++){ varray[k][m] = hss1.mp->cov.var[k]; @@ -1804,7 +1809,7 @@ void FloorVars(HMMSet *hset1, int s){ qsort((char *) varray[i], M, sizeof(float), fltcompare); } m=0; - if(varFloorPercent <=0 || varFloorPercent >= 100) HError(1, "varFloorPercent should be <100 and >0.."); + if(varFloorPercent <=0 || varFloorPercent >= 100) HError(2719, "%s: varFloorPercent should be <100 and >0..",toolname); NewHMMScan(hset1,&hss1); @@ -1854,8 +1859,7 @@ void UpdateModels(void) { /*Measure total occupancy and update Gaussians. */ double mlocc=0,numocc=0,denocc=0; int nMix=0,nLeft=0; - MuAcc *ma1,*ma2, *ma3; VaAcc *va1,*va2,*va3; - + MuAcc *ma1,*ma2, *ma3; if(hset.hsKind==PLAINHS || hset.hsKind==SHAREDHS){ NewHMMScan(&hset, &hss); @@ -1864,10 +1868,6 @@ void UpdateModels(void) ma2 = (ML_MODE?NULL:ma1+1); ma3 = (THREEACCS?ma1+2:NULL); - va1 = (VaAcc*)GetHook(hss.mp->cov.var); - va2 = (ML_MODE?NULL:va1+1); - va3 = (THREEACCS?va1+2:NULL); - numocc+=ma1->occ; if(ma2) denocc+=ma2->occ; if(ma3) mlocc+=ma3->occ; @@ -1884,10 +1884,6 @@ void UpdateModels(void) ma2 = (ML_MODE?NULL:ma1+1); ma3 = (THREEACCS?ma1+2:NULL); - va1 = (VaAcc*)GetHook(hss.mp->cov.var); - va2 = (ML_MODE?NULL:va1+1); - va3 = (THREEACCS?va1+2:NULL); - numocc+=ma1->occ; if(ma2) denocc+=ma2->occ; if(ma3) mlocc+=ma3->occ; @@ -1895,7 +1891,7 @@ void UpdateModels(void) if(UpdateGauss(s, hss.mp)) nMix++; else nLeft++; } } - } else HError(1, "Unknown hsetkind."); + } else HError(2730, "%s: Unknown hsetkind.",toolname); printf("Numocc=%f,Denocc=%f\n",numocc,denocc); } diff --git a/HTKTools/HNForward.c b/HTKTools/HNForward.c new file mode 100755 index 0000000..3a9691d --- /dev/null +++ b/HTKTools/HNForward.c @@ -0,0 +1,1123 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNForward.c ANN forwarding and evalutation program */ +/* ----------------------------------------------------------- */ + +char *hnforward_version = "!HVER!HNForward: 3.5.0 [cz277 12/10/15]"; +char *hnforward_vc_id = "$Id: HNForward.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +/* + This program is designed for evaluating or forwarding ANNs +*/ + +#include "config.h" +#ifdef IMKL +#include "mkl.h" +#endif +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HLabel.h" +#include "HAudio.h" +#include "HParm.h" +#include "HDict.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HUtil.h" +#include "HAdapt.h" +#include "HFB.h" +#include "HNet.h" /* for Lattice */ +#include "HLM.h" +#include "HLat.h" /* for Lattice */ +#include "HArc.h" +#include "HFBLat.h" +#include "HNCache.h" + +#include +#include +#include +/* -------------------------- Trace Flags & Vars ------------------------ */ + +/* Trace Flags */ +#define T_TOP 0001 /* Top level tracing */ +#define T_TIM 0002 /* Output timings */ +static int trace = 0; +#define EXIT_STATUS 0 /* Exit status */ + +/* -------------------------- Global Variables etc ---------------------- */ + +#define MAX(a, b) ((a)>(b)?(a):(b)) +#define MIN(a, b) ((a)<(b)?(a):(b)) +#define ABS(a) ((a)>0?(a):-(a)) +#define FINITE(x) (!isnan(x) && x<1.0e+30 && x>-1.0e+30) + +typedef struct _CriteriaInfo { + double cSampAcc; + double MMSEAcc; + double XENTAcc; + double MPEAcc; + double tUttAcc; + double tNWordAcc; + double tSampAcc; + double LLHAcc; + double LLHVal; + double NumLLHAcc; + double DenLLHAcc; + int MMIFRAcc; + double cSampAccMapMax; + double cSampAccMapSum; + double MMSEAccMapSum; + double XENTAccMapSum; + double LLHAccMapSum; + double LLHValMapSum; +} CriteriaInfo; + +typedef struct _SpeakerInfo{ /* list of spkr records */ + int uttCnt; /* utterance count associated with this speaker */ + CriteriaInfo criteria[SMAX]; /* criteriion values associated with this speaker */ + struct _SpeakerInfo *next; /* to the next speaker */ + char *name; /* current speaker name */ +} SpeakerInfo; + +static char *hmmListFn = NULL; /* model list filename (optional) */ +static char *hmmDir = NULL; /* directory to look for HMM def files */ +static char *hmmExt = NULL; /* HMM def file extension */ +static char *mappingFn = NULL; /* the name of target mapping file */ +static XFInfo xfInfo; /* transforms/adaptations */ +static HMMSet hset; /* the HMM set */ +static UPDSet uFlags = 0; /* */ + +static IntVec recVec = NULL; /* the vector contains hypothesis labels */ +static IntVec recVecLLH = NULL; +static IntVec recVecMapSum = NULL; /* the vector contains the mapped hypothesis labels */ +static IntVec recVecLLHMapSum = NULL; +static char *labDir = NULL; /* label (transcription) file directory */ +static char *labExt = "lab"; /* label file extension */ +static FileFormat dff = UNDEFF; /* data file format */ +static FileFormat lff = UNDEFF; /* label file format */ +static char *labFileMask = NULL; /* mask for reading labels */ +static Boolean useLLF = FALSE; /* use directory based LLF files instead of individual lattices */ + +static char *denLatDir[MAXLATS]; /* denominator lattices */ +static int nDenLats = 0; /* number of denominator lattices */ +static char *numLatDir[MAXLATS]; /* numerator-alignment lattices */ +static int nNumLats = 0; /* number of numerator lattices */ +static char *latExt = "lat"; /* lattice file extension */ +static char *latFileMask = NULL; /* mask for reading lattices */ +static char *latMask_Num = NULL; /* mask for reading numerator lattices */ +static char *latMask_Den = NULL; /* mask for reading denominator lattices */ +static char numLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for numerator lattices */ +static char denLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for denominator lattices */ +static Vocab vocab; /* fake vocabulary */ +static int corrIdx = 0; +static int recogIdx1 = 1; +static int recogIdx2 = 999; +static Boolean procNumLats; +static Boolean procDenLats; +static float probScale = 1.0; + +static ObjFunKind showObjFunKind = UNKOF; +static float minFrameConfMat = 0.0; +static FBLatInfo fbInfo; /* structure for forward-backward */ + +static CriteriaInfo criteriaAll[SMAX]; /* the value of the criteria functions for all data */ +static CriteriaInfo criteriaUtt[SMAX]; /* the value of the criteria functions for current utterance */ +static SpeakerInfo *speakerInfoHead = NULL; /* the header of the speaker info list */ +static int speakerCnt = 0; /* the total number of speakers */ +static int failedSpeakers = 0; /* num time speaker pattern failed to match */ + +static FILE *scriptIn = NULL; /* script file for input */ +static int scriptCntIn = 0; /* number of words in scriptIn */ +static FILE *scriptOut = NULL; /* script file for output */ +static int scriptCntOut = 0; /* number of words in scriptOut */ + +static LabelKind labelKind = NULLLK; /* the kind of the labels */ +static LabelInfo *labelInfo = NULL; /* the structure for the labels */ +static DataCache *cacheIn[SMAX]; /* the cache structures for the train set */ +static Observation obsIn; /* array of input observations */ +static Observation obsOut; /* array of output observation */ +static FileFormat tgtFF = HTK; /* the file format of the output data */ +static ParmKind tgtPK = USER; /*ANN;*/ /* ANN parmkind */ +/*static ParmBuf parmBuf;*/ /* parm buffer */ +static ParmBuf parmBuf; +/*static ParmBuf dstPBuf;*/ +static BufferInfo bufInfo; /* buffer info */ + +/* ------------------------- Global Options ----------------------------- */ + +static Boolean optHasLabMat = FALSE; /* whether do supervised learning or not (associated with NULLLK) */ +static Boolean optShowUttStats = FALSE; /* whether show criteria value for each utterance */ +static Boolean optGenANNFeas = FALSE; /* whether generate the ANN features or not */ +static Boolean optMapTarget = FALSE; /* do target mapping or not */ +static Boolean optIncNumInDen = TRUE; +static Boolean optShowSeqObjVal = FALSE; +static Boolean optShowFrameConfMat = FALSE; + +/* ------------------------------ Heaps --------------------------------- */ + +static MemHeap modelHeap; /* the memory heap for models */ +static MemHeap cacheHeap; /* the memory heap for data caches */ +static MemHeap transHeap; /* the memory heap for transcriptions */ +static MemHeap latHeap; /* the memory heap for lattices */ +static MemHeap feaHeap; + +/* -------------------- Configuration Parameters ------------------------ */ + +static ConfParam *cParm[MAXGLOBS]; /* configuration parameters */ +static int nParm = 0; /* total num params */ + +/* -------------------------- Prototypes -------------------------------- */ + + + +/* ----------------------- Process Command Line ------------------------- */ + +void SetConfParms(void) +{ + int intVal; + double doubleVal; + Boolean boolVal; + char buf[MAXSTRLEN], buf2[MAXSTRLEN]; + char *charPtr, *charPtr2; + + nParm = GetConfig("HNFORWARD", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) { + trace = intVal; + } + /* set evaluation criteria */ + if (GetConfStr(cParm, nParm, "EVALCRITERION", buf)) { + charPtr = buf; + while (charPtr != NULL) { + charPtr2 = strchr(charPtr, '|'); + if (charPtr2 != NULL) { + *charPtr2 = '\0'; + } + strcpy(buf2, charPtr); + if (charPtr2 != NULL) { + *charPtr2 = '|'; + ++charPtr2; + } + charPtr = charPtr2; + if (strcmp(buf2, "ML") == 0) { /* log-likelihood */ + showObjFunKind = showObjFunKind | MLOF; + } + else if ((strcmp(buf2, "MMI") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | MMIOF; + optShowSeqObjVal = TRUE; + } + else if (strcmp(buf2, "MMSE") == 0) { + showObjFunKind = showObjFunKind | MMSEOF; + } + else if ((strcmp(buf2, "MPE") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | MPEOF; + optShowSeqObjVal = TRUE; + } + /*else if ((strcmp(buf2, "MWE") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | MWEOF; + } + else if ((strcmp(buf2, "SMBR") == 0) && (labelKind == LABLK)) { + showObjFunKind = showObjFunKind | SMBROF; + }*/ + else if (strcmp(buf2, "XENT") == 0) { + showObjFunKind = showObjFunKind | XENTOF; + } + } + } + /* set target file format */ + if (GetConfStr(cParm, nParm, "TARGETFORMAT", buf)) { + tgtFF = Str2Format(buf); + } + /* */ + if (GetConfBool(cParm, nParm, "SHOWFRAMECM", &boolVal)) { + optShowFrameConfMat = TRUE; + } + /* */ + if (GetConfFlt(cParm, nParm, "FRAMECMTHRES", &doubleVal)) { + minFrameConfMat = (float) doubleVal; + } + /* label file mask */ + if (GetConfStr(cParm, nParm, "LABFILEMASK", buf)) { + labFileMask = (char *) malloc(strlen(buf) + 1); + strcpy(labFileMask, buf); + } + /* lattice file mask */ + if (GetConfStr(cParm, nParm, "LATFILEMASK", buf)) { + latFileMask = (char *) malloc(strlen(buf) + 1); + strcpy(latFileMask, buf); + } + if (GetConfStr(cParm, nParm, "LATMASKNUM", buf)) { + latMask_Num = (char *) malloc(strlen(buf) + 1); + strcpy(latMask_Num, buf); + } + if (GetConfStr(cParm, nParm, "LATMASKDEN", buf)) { + latMask_Den = (char *) malloc(strlen(buf) + 1); + strcpy(latMask_Den, buf); + } + /* speaker adaptation mask */ + if (GetConfStr(cParm, nParm, "INXFORMMASK", buf)) { + xfInfo.inSpkrPat = (char *) malloc(strlen(buf) + 1); + strcpy(xfInfo.inSpkrPat, buf); + } + /*if (GetConfStr(cParm, nParm, "PAXFORMMASK", buf)) { + xfInfo.paSpkrPat = (char *) malloc(strlen(buf) + 1); + strcpy(xfInfo.paSpkrPat, buf); + }*/ + if (GetConfBool(cParm, nParm, "USELLF", &boolVal)) { + useLLF = boolVal; + } + if (GetConfBool(cParm, nParm, "INCNUMLATINDENLAT", &boolVal)) { + optIncNumInDen = boolVal; + } + } + +} + +void ReportUsage (void) +{ + printf("\nUSAGE: HNForward [options] [HMMList]\n\n"); + printf(" Option Default\n\n"); + printf(" -a Use input transformation off\n"); + printf(" -d s Dir to find HMM definitions current\n"); + printf(" -f Show utterance statistics off\n"); + printf(" -h s Speaker name pattern none\n"); + printf(" -l s Label kind [fea, lab, lat, null] null\n"); + printf(" -m s Target mapping file s off\n"); + printf(" -o s Extensions for new HMM files as src\n"); + printf(" -q s Directory for numerator lats [needed. May use >1 -q option]\n"); + printf(" -qp s Subdir pattern for numerator lats none\n"); + printf(" -r s Directory for denominator lats [needed. May use >1 -r option]\n"); + printf(" -rp s Subdir pattern for denominator lats none\n"); + printf(" -x s Extension for HMM files none\n"); + printf(" -N s Script file for forwarded data none\n"); + PrintStdOpts("BFGHIJLMSTX"); /* E, K removed */ + printf("\n\n"); +} + +/* */ +SpeakerInfo *GetSpeakerInfo(char *uttFN) { + char name[MAXSTRLEN]; + LabId id; + SpeakerInfo *sPtr, *tPtr; + Boolean found; + + found = MaskMatch(xfInfo.inSpkrPat, name, uttFN); + if (!found) { + ++failedSpeakers; + return NULL; + } + id = GetLabId(name, TRUE); + if (id->aux == 0) { + sPtr = (SpeakerInfo *) New(&gcheap, sizeof(SpeakerInfo)); + memset(&sPtr->criteria, 0, sizeof(CriteriaInfo) * SMAX); + sPtr->name = id->name; + sPtr->next = NULL; + id->aux = (Ptr) sPtr; + ++speakerCnt; + if (speakerInfoHead == NULL || strcmp(sPtr->name, speakerInfoHead->name) < 0) { + sPtr->next = speakerInfoHead; + speakerInfoHead = sPtr; + } + else { + for (tPtr = speakerInfoHead; tPtr != NULL; tPtr = tPtr->next) { + if (tPtr->next == NULL || strcmp(sPtr->name, tPtr->next->name) < 0) { + sPtr->next = tPtr->next; + tPtr->next = sPtr; + break; + } + } + } + } + else + sPtr = (SpeakerInfo *) id->aux; + + return sPtr; +} + +float CalApproxAvgBatchLikelhood(DataCache *cache, int batLen) { + LELink layerElem; + ANNSet *annSet; + int i, labTgt; + float llh = 0.0; + + annSet = cache->hmmSet->annSet; + layerElem = annSet->outLayers[cache->streamIdx]; + for (i = 0; i < batLen; ++i) { + labTgt = cache->labVec[i]; + llh += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + labTgt]; + } + llh /= batLen; + + return llh; +} + +/* */ +void AccCriteria(DataCache *cache, int batLen, CriteriaInfo *criteria) { + LELink layerElem; + int i, labTgt, recTgt, recTgtMapSum, recLLHTgt, recTgtLLHMapSum; + IntVec mapVec; + ANNSet *annSet; + + annSet = ((HMMSet *) cache->hmmSet)->annSet; + /* do accumulateion */ + layerElem = annSet->outLayers[cache->streamIdx]; + /* for tSamp */ + criteria->tSampAcc += batLen; + /* for accuracy */ + for (i = 1; i <= batLen; ++i) { + labTgt = cache->labVec[i]; + recTgt = recVec[i]; + if (labTgt == recTgt) { + ++criteria->cSampAcc; + } + /* for LLH values */ + if (showObjFunKind & MLOF) { + recLLHTgt = recVecLLH[i]; + if (labTgt == recLLHTgt) { + criteria->LLHVal += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + recLLHTgt]; + } + } + } + /* for mapped accuracy by max and sum*/ + if (optMapTarget) { + mapVec = hset.annSet->mapStruct->mapVectors[cache->streamIdx]; + for (i = 1; i <= batLen; ++i) { + labTgt = mapVec[cache->labVec[i] + 1]; + recTgtMapSum = recVecMapSum[i]; + if (labTgt == recTgtMapSum) { + ++criteria->cSampAccMapSum; + } + UpdateTargetMapStats(hset.annSet, labTgt, recTgtMapSum); + /* for LLH values */ + if (showObjFunKind & MLOF) { + recTgtLLHMapSum = recVecLLHMapSum[i]; + if (labTgt == recTgtLLHMapSum) { + criteria->LLHValMapSum += cache->hmmSet->annSet->mapStruct->llhMatMapSum[cache->streamIdx]->matElems[(i - 1) * hset.annSet->mapStruct->mappedTargetNum + recTgtMapSum]; + } + } + } + } + /* for MMSE */ + if (showObjFunKind & MMSEOF) { + criteria->MMSEAcc += CalMMSECriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->MMSEAccMapSum += CalMMSECriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } + /* for XENT */ + if (showObjFunKind & XENTOF) { + criteria->XENTAcc += CalXENTCriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->XENTAccMapSum += CalXENTCriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } + /* for ML? */ + if (FALSE && (showObjFunKind & MLOF) && (cache->streamIdx == 1)) { + criteria->LLHVal += fbInfo.pr; + } + + /* for MPE */ + if ((showObjFunKind & MPEOF) && (cache->streamIdx == 1)) { + criteria->MPEAcc += fbInfo.AvgCorr; + criteria->tNWordAcc += fbInfo.MPEFileLength; + } + /* for MMI */ + if ((showObjFunKind & MMIOF) && (cache->streamIdx == 1)) { + criteria->NumLLHAcc += fbInfo.latPr[corrIdx]; + criteria->DenLLHAcc += fbInfo.latPr[recogIdx1]; + } +} + +void PrintCriteria(CriteriaInfo *criteria) { + float accVal; + int cSampInt, tSampInt; + + cSampInt = (int) criteria->cSampAcc; + tSampInt = (int) criteria->tSampAcc; + accVal = criteria->cSampAcc / criteria->tSampAcc; + printf("\t\tAccuracy = %.2f%% [%d right out of %d samples]\n", accVal * 100.0, cSampInt, tSampInt); + + if (showObjFunKind & XENTOF) { + printf("\t\tCross Entropy = %.2f\n", criteria->XENTAcc / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMean Square Error = %.2f\n", criteria->MMSEAcc / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/frame = %e\n", criteria->LLHVal / criteria->tSampAcc); + } + + if (optMapTarget) { + printf("\n"); + /* for sum */ + cSampInt = (int) criteria->cSampAccMapSum; + accVal = criteria->cSampAccMapSum / criteria->tSampAcc; + printf("\t\tMapped Accuracy by Sum = %.2f%% [%d right out of %d samples]\n", accVal * 100.0, cSampInt, tSampInt); + if (showObjFunKind & XENTOF) { + printf("\t\tMapped Cross Entropy by Sum = %.2f\n", criteria->XENTAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMapped Mean Square Error by Sum = %.2f\n", criteria->MMSEAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/frame by Sum = %e\n", criteria->LLHValMapSum / criteria->tSampAcc); + } + printf("\n"); + /* show confusion matrices */ + if (optShowFrameConfMat) { + ShowMapConfusionMatrices(hset.annSet, 0.0); + /* rest counters */ + ClearMappedTargetCounters(hset.annSet); + } + } + fflush(stdout); +} + +ReturnStatus InitScriptOutFile(char *fn) { + char buf[MAXSTRLEN]; + + /*CheckFn(fn);*/ + if (optGenANNFeas) + HError(4220, "InitScriptOutFile: Only one output script file is allowed"); + optGenANNFeas = TRUE; + if ((scriptOut = fopen(fn, "r")) == NULL) + HError(4210, "InitScriptOutFile: Cannot open output script file %s", fn); + while (GetNextScpWord(scriptOut, buf) != NULL) + ++scriptCntOut; + rewind(scriptOut); + return SUCCESS; +} + +void Initialise(void) { + Boolean eSep; + int s, tgtSize; + short tgtSwidth[SMAX]; + + /* initialise the memory heaps */ + CreateHeap(&cacheHeap, "cache heap", CHEAP, 1, 0, 100000000, ULONG_MAX); + CreateHeap(&transHeap, "transcription heap", MSTAK, 1, 0, 8000, 80000); + CreateHeap(&latHeap, "lattice heap", MSTAK, 1, 1.0, 50000, 500000); + CreateHeap(&feaHeap, "feature heap", MSTAK, 1, 0, 100000, ULONG_MAX); + + /* load HMMs and HMMSet related global variables */ + if (trace & T_TOP) { + printf("Reading ANN models...\n"); + fflush(stdout); + } + if (hmmListFn != NULL && MakeHMMSet(&hset, hmmListFn) < SUCCESS) + HError(4200, "Initialise: MakeHMMSet failed"); + if (LoadHMMSet(&hset, hmmDir, hmmExt) < SUCCESS) + HError(4200, "Initialise: LoadHMMSet failed"); + if (hset.annSet == NULL) + HError(4200, "Initialise: No ANN model available"); + /* init train struct */ + if (optHasLabMat) + InitTrainInfo(&hset, TRUE, FALSE, FALSE, TRUE); + /* setup the mappings */ + if (optMapTarget) { + SetupStateInfoList(&hset); + if (SetupTargetMapList(&hset, mappingFn, 0) < SUCCESS) + HError(4200, "Initialise: Failed to load the target mapping file"); + InitMapStruct(&hset); + recVecMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + recVecLLHMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + /*ClearMappedTargetCounters(hset.annSet);*/ + } + CreateTmpNMat(hset.hmem); + + SetStreamWidths(hset.pkind, hset.vecSize, hset.swidth, &eSep); + if (trace & T_TOP) { + printf("ANN model structure:\n"); + ShowANNSet(&hset); + fflush(stdout); + } + + /* initialise adaptation */ + if (xfInfo.inSpkrPat == NULL) + xfInfo.inSpkrPat = xfInfo.outSpkrPat; + if (xfInfo.paSpkrPat == NULL) + xfInfo.paSpkrPat = xfInfo.outSpkrPat; + + /* initialise labels */ + if (labelKind != NULLLK) { + labelInfo = (LabelInfo *) New(&gcheap, sizeof(LabelInfo)); + memset(labelInfo, 0, sizeof(LabelInfo)); + labelInfo->labelKind = labelKind; + if ((labelKind & FEALK) != 0) { + /* MakeObservation(&gcheap, ...); */ + } + if ((labelKind & LABLK) != 0) { + labelInfo->labFileMask = labFileMask; + labelInfo->labDir = labDir; + labelInfo->labExt = labExt; + } + if ((labelKind & LATLK) != 0) { + /* The actual dict is not needed, only the structure; this relates to HNet and reading lattices. */ + InitVocab(&vocab); + labelInfo->latFileMask = latFileMask; + labelInfo->latMaskNum = latMask_Num; + labelInfo->numLatDir = numLatDir; + labelInfo->nNumLats = nNumLats; + labelInfo->numLatSubDirPat = numLatSubDirPat; + labelInfo->latMaskDen = latMask_Den; + labelInfo->denLatDir = denLatDir; + labelInfo->nDenLats = nDenLats; + labelInfo->denLatSubDirPat = denLatSubDirPat; + labelInfo->latExt = latExt; + labelInfo->vocab = (Ptr) &vocab; + labelInfo->useLLF = useLLF; + probScale = GetProbScale(); + labelInfo->incNumInDen = optIncNumInDen; + } + labelInfo->uFlags = uFlags; + } + if (optHasLabMat) { + recVec = CreateIntVec(&gcheap, GetNBatchSamples()); + recVecLLH = CreateIntVec(&gcheap, GetNBatchSamples()); + /* initialise the criteria */ + memset(&criteriaAll, 0, sizeof(CriteriaInfo) * SMAX); + } + + /* initialise the cache structures */ + obsIn = MakeObservation(&gcheap, hset.swidth, hset.pkind, FALSE, eSep); + scriptIn = GetTrainScript(&scriptCntIn); + if (trace & T_TOP) { + printf("%d utterances to process\n", scriptCntIn); + } + for (s = 1; s <= hset.swidth[0]; ++s) { + cacheIn[s] = CreateCache(&cacheHeap, scriptIn, scriptCntIn, &hset, &obsIn, s, GetDefaultNCacheSamples(), NONEVK, &xfInfo, labelInfo, TRUE); + } + + if ((labelKind & LATLK) != 0) { + InitialiseFBInfo(&fbInfo, &hset, cacheIn[1]->labelInfo->uFlags, FALSE); + for (s = 1; s <= hset.swidth[0]; ++s) { + fbInfo.llhMat[s] = hset.annSet->llhMat[s]; + fbInfo.occMat[s] = hset.annSet->outLayers[s]->yFeaMats[1]; /* cz277 - many */ + } + } + + /* set the output observation */ + if (optGenANNFeas) { + tgtSize = 0; + ZeroStreamWidths(hset.swidth[0], tgtSwidth); + for (s = 1; s <= hset.swidth[0]; ++s) { + tgtSwidth[s] = hset.annSet->outLayers[s]->nodeNum; + tgtSize += tgtSwidth[s]; + } + SetStreamWidths(tgtPK, tgtSize, tgtSwidth, &eSep); + obsOut = MakeObservation(&gcheap, tgtSwidth, tgtPK, FALSE, eSep); + } + +} + +void ShowCriteriaInfo(CriteriaInfo *criteria) { + int i, S; + + S = hset.swidth[0]; + for (i = 1; i <= S; ++i) { + if (S > 1) { + printf("Stream %d: ", i); + } + PrintCriteria(&criteria[i]); + } +} + +void LoadFeaMatToParmBuf(int nFrame) { + int s, i; + LELink layerElem; + + for (s = 1; s <= hset.swidth[0]; ++s) { + layerElem = hset.annSet->outLayers[s]; + for (i = 0; i < nFrame; ++i) { + /*for (j = 0; j < layerElem->nodeNum; ++j) { + obsOut.fv[s][j + 1] = (float) layerElem->yFeaMat->matElems[i * layerElem->nodeNum + j]; + }*/ + CopyNFloatSeg2FloatSeg(&layerElem->yFeaMats[1]->matElems[i * layerElem->nodeNum], layerElem->nodeNum, &obsOut.fv[s][1]); /* cz277 - many */ + AddToBuffer(parmBuf, obsOut); + } + } +} + +int main(int argc, char *argv[]) { + char *str; + char buf[MAXSTRLEN], uttName[MAXSTRLEN], fnbuf[MAXSTRLEN]; + clock_t stClock, edClock; + int i, S, nLoaded, sampCnt, batchCnt, tSampCnt, tUttCnt, uttCnt, uttLen; + Boolean finish = FALSE, skipOneUtt=FALSE, sentFail; + LELink layerElem; + SpeakerInfo *speakerInfo=NULL; + UttElem *uttElem; + Lattice *MPECorrLat = NULL; + + if (InitShell(argc, argv, hnforward_version, hnforward_vc_id) < SUCCESS) + HError(4200, "HNForward: InitShell failed"); + InitMem(); + InitMath(); + InitSigP(); + InitWave(); + InitLabel(); + InitAudio(); +#ifdef CUDA + InitCUDA(); +#endif + InitANNet(); + InitModel(); + if (InitParm() < SUCCESS) + HError(4200, "HNForward: InitParm failed"); + InitUtil(); + /* cz277 - xform */ + /*InitAdapt(&xfInfo);*/ + InitAdapt(); + InitXFInfo(&xfInfo); + + InitLat(); + InitNCache(); + + if (!InfoPrinted() && NumArgs() == 0) { + ReportUsage(); + } + if (NumArgs() == 0) { + Exit(0); + } + + CreateHeap(&modelHeap, "model heap", MSTAK, 1, 0.0, 100000000, ULONG_MAX); + CreateHMMSet(&hset, &modelHeap, TRUE); + SetConfParms(); + + /* load each command */ + while (NextArg() == SWITCHARG) { + str = GetSwtArg(); + /* set each option */ + switch (str[0]) { + case 'a': + xfInfo.useInXForm = TRUE; + break; + case 'd': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: HMM definition directory expected"); + hmmDir = GetStrArg(); + break; + case 'f': + optShowUttStats = TRUE; + break; + case 'h': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Speaker name pattern expected"); + xfInfo.outSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) { + xfInfo.inSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) + xfInfo.paSpkrPat = GetStrArg(); + } + if (NextArg() != SWITCHARG) + HError(4219, "HNForward: Cannot have -h as the last option"); + break; + case 'l': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label kind expected"); + str = GetStrArg(); + if (strcasecmp(str, "LAB") == 0 || strcasecmp(str, "LABEL") == 0) { + labelKind = LABLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "LAT") == 0 || strcasecmp(str, "LATTICE") == 0) { + labelKind = LATLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "FEA") == 0 || strcasecmp(str, "FEATURE") == 0) { + labelKind = FEALK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "NULL") == 0) { + labelKind = NULLLK; + optHasLabMat = FALSE; + } + else { + HError(4219, "HNForward: Unknown label kind"); + } + break; + case 'm': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Target mapping file expected"); + optMapTarget = TRUE; + mappingFn = GetStrArg(); + break; + case 'q': + if (strcmp(str, "q") == 0) { + numLatDir[nNumLats++] = GetStrArg(); + } + else if (strcmp(str, "qp") == 0) { + strcpy(numLatSubDirPat, GetStrArg()); + if (strchr(numLatSubDirPat, '%') == NULL) + HError(4219, "HNForward: Numerator lattice path mask invalid"); + } + else { + HError(4219, "HNForward: Unknown option %s", str); + } + break; + case 'r': + if (strcmp(str, "r") == 0) { + denLatDir[nDenLats++] = GetStrArg(); + } + else if (strcmp(str, "rp") == 0) { + strcpy(denLatSubDirPat, GetStrArg()); + if (strchr(denLatSubDirPat, '%') == NULL) + HError(4219, "HNForward: Denominator lattice path mask invalid"); + } + else { + HError(4219, "HNForward: Unknown option %s", str); + } + break; + case 'x': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: HMM file extension expected"); + hmmExt = GetStrArg(); + break; + /*case 'E': + if (NextArg() != STRINGARG) { + HError(4219, "HNForward: Parent transform directory expected"); + } + xfInfo.usePaXForm = TRUE; + xfInfo.paXFormDir = GetSrArg(); + if (NextArg() != STRINGARG) { + xfInfo.paXFormExt = GetStrArg(); + } + if (NextArg() != SWITCHARG) { + HError(4219, "HNForward: Cannot have -E as the last option"); + } + break;*/ + case 'F': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Data file format expected"); + if ((dff = Str2Format(GetStrArg())) == ALIEN) + HError(4219, "HNForward: Warnings ALIEN data file format set"); + break; + case 'G': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label file format expected"); + if ((lff = Str2Format(GetStrArg())) == ALIEN) + HError(4219, "HNForward: Warnings ALIEN label file format set"); + break; + case 'H': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: HMM macro file name expected"); + AddMMF(&hset, GetStrArg()); + break; + case 'I': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: MLF file name expected"); + LoadMasterFile(GetStrArg()); + break; + case 'J': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Input transform directory expected"); + AddInXFormDir(&hset, GetStrArg()); + if (NextArg() != STRINGARG) { + if (xfInfo.inXFormExt == NULL) + xfInfo.inXFormExt = GetStrArg(); + else + HError(4219, "HNForward: Only one input transform extension may be specified"); + } + if (NextArg() != SWITCHARG) + HError(4219, "HNForward: Cannot have -J as the last option"); + break; + case 'L': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label file directory expected"); + labDir = GetStrArg(); + break; + case 'N': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Output script file name expected"); + InitScriptOutFile(GetStrArg()); + break; + case 'Q': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Lattice extension expected"); + latExt = GetStrArg(); + break; + case 'T': + trace = GetChkedInt(0, 0100000, str); + break; + case 'X': + if (NextArg() != STRINGARG) + HError(4219, "HNForward: Label file extension expected"); + labExt = GetStrArg(); + break; + default: + HError(4219, "HNForward: Unknown switch %s", str); + } + } + /* load hmmListFn (optional) */ + if (NextArg() == STRINGARG) + hmmListFn = GetStrArg(); + else if (NextArg() != NOARG) + HError(4219, "HNForward: Only an optional HMM list file is possible at the end of the command line"); + /* command check */ + if (NumArgs() == 0 || hset.numFiles == 0) + HError(4219, "HNForward: At least one input HMM file should be given"); + +#ifdef CUDA + StartCUDA(); +#endif + /* cz277 - 151020 */ +#ifdef MKL + StartMKL(); +#endif + /* initialise */ + Initialise(); +#ifdef CUDA + ShowGPUMemUsage(); +#endif + + stClock = 0; + edClock = 0; + stClock = clock(); + + /* forward each utterance */ + S = hset.swidth[0]; + batchCnt = 0; + tSampCnt = 0; + tUttCnt = 0; + /* init the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheIn[i]); + + /* process until all data are finished */ + printf("\n"); + printf("Evaluating ************************\n"); + printf("\tProcessing the evaluation set...\n"); + while (!finish) { + sampCnt = 0; + uttCnt = 1; + strcpy(uttName, GetCurUttName(cacheIn[1])); + uttLen = GetCurUttLen(cacheIn[1]); + uttElem = GetCurUttElem(cacheIn[1]); + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + if (optShowSeqObjVal) { + /*uttElem = GetCurUttElem(cacheIn[1]);*/ + if (uttElem->uttLen > GetNBatchSamples()) { + printf("HNForward: %d samples in utterance %s exceeds batch size %d\n", uttElem->uttLen, uttElem->uttName, GetNBatchSamples()); + skipOneUtt = TRUE; + } + else { + skipOneUtt = FALSE; + } + /* init fbInfo */ + fbInfo.T = uttElem->uttLen; + LoadXFormsFromUttElem(uttElem, &fbInfo); + fbInfo.uFlags = cacheIn[1]->labelInfo->uFlags; + } + if (optHasLabMat && optShowUttStats) + memset(&criteriaUtt, 0, sizeof(CriteriaInfo) * SMAX); + /* write the data, if needed */ + if (optGenANNFeas) { + str = GetStrArg(); + strcpy(fnbuf, str); + parmBuf = OpenBuffer(&feaHeap, fnbuf, 50, UNDEFF, TRI_UNDEF, TRI_UNDEF); + GetBufferInfo(parmBuf, &bufInfo); + bufInfo.tgtPK = tgtPK; + CloseBuffer(parmBuf); + parmBuf = EmptyBuffer(&feaHeap, uttLen, obsOut, bufInfo); + /*CopyParmBufInfo(srcPBuf, dstPBuf);*/ + } + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheIn[i], &nLoaded, &uttCnt); + /* cz277 - mtload */ + /*UpdateCacheStatus(cacheIn[i]);*/ + LoadCacheData(cacheIn[i]); + } + /* whether skip this utterance or not */ + if (optShowSeqObjVal && skipOneUtt) + continue; + /* forward propagation */ + ForwardProp(hset.annSet, nLoaded, cacheIn[1]->CMDVecPL); + sentFail = FALSE; + /* synchronise the data */ + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + /* convert posteriors to llh */ + if ((showObjFunKind & MLOF) || optShowSeqObjVal) { + ApplyLogTrans(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, hset.annSet->llhMat[i]); /* cz277 - many */ + AddNVectorTargetPen(hset.annSet->llhMat[i], hset.annSet->penVec[i], nLoaded, hset.annSet->llhMat[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->llhMat[i]); +#endif + } + /* for mapped targets */ + if (optMapTarget) { + UpdateOutMatMapSum(hset.annSet, nLoaded, i); + /* convert posteriors to llh */ + if (showObjFunKind & MLOF) { + ApplyLogTrans(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, hset.annSet->mapStruct->llhMatMapSum[i]); + AddNVectorTargetPen(hset.annSet->mapStruct->llhMatMapSum[i], hset.annSet->mapStruct->penVecMapSum[i], nLoaded, hset.annSet->mapStruct->llhMatMapSum[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->llhMatMapSum[i]); +#endif + } +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->outMatMapSum[i]); +#endif + } +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->yFeaMats[1]); /* cz277 - many */ +#endif + } + /* for sequence processing */ + if (optShowSeqObjVal) { + if (procNumLats) { + LoadNumLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, NULL)) { + FBLatSecondPass(&fbInfo, corrIdx, 999); + sentFail = FALSE; + } + else { + sentFail = TRUE; + } + } + if (procDenLats) { + if (showObjFunKind & MPEOF) { + /*MPECorrLat = fbInfo.aInfo->lat[0];*/ + MPECorrLat = uttElem->numLats[0]; + } + else { + MPECorrLat = NULL; + } + LoadDenLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, MPECorrLat)) { + FBLatSecondPass(&fbInfo, recogIdx1, recogIdx2); + sentFail = FALSE; + } + else { + sentFail = TRUE; + } + } + } + /* compute the criteria */ + if (optHasLabMat) { + if (xfInfo.inSpkrPat != NULL) { + speakerInfo = GetSpeakerInfo(uttName); + } + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + FindMaxElement(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, recVec); /* cz277 - many */ + if (showObjFunKind & MLOF) { + FindMaxElement(hset.annSet->llhMat[i], nLoaded, layerElem->nodeNum, recVecLLH); + } + if (optMapTarget) { + FindMaxElement(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecMapSum); + if (showObjFunKind & MLOF) { + FindMaxElement(hset.annSet->mapStruct->llhMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecLLHMapSum); + } + UpdateLabMatMapSum(hset.annSet, nLoaded, i); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->labMatMapSum[i]); +#endif + } + if (!sentFail) { + AccCriteria(cacheIn[i], nLoaded, &criteriaAll[i]); + if (optShowUttStats) { + AccCriteria(cacheIn[i], nLoaded, &criteriaUtt[i]); + } + if (xfInfo.inSpkrPat != NULL) { + if(speakerInfo==NULL) + HError(4214, "HNForward: Speaker info not set"); + AccCriteria(cacheIn[i], nLoaded, &speakerInfo->criteria[i]); + } + } + } + } + /* write the data, if needed */ + if (optGenANNFeas) + LoadFeaMatToParmBuf(nLoaded); + /* update the statistics */ + batchCnt += 1; + + sampCnt += nLoaded; + tSampCnt += nLoaded; + } + if (optHasLabMat && optShowUttStats) { + printf("\t\tShow criterion values for %s:\n", uttName); + ShowCriteriaInfo(criteriaUtt); + } + /* write the data, if needed */ + if (optGenANNFeas) { + GetNextScpWord(scriptOut, buf); + if (SaveBuffer(parmBuf, buf, tgtFF) < SUCCESS) + HError(4214, "HNForward: Could not save parm file %s", buf); + /*CloseBuffer(parmBuf);*/ + /*printf("%s --> %s\n", uttName, buf);*/ + ResetHeap(&feaHeap); + } + /* cz277 - mtload */ + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheIn[i]); + tUttCnt += 1; + } + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* show criteria */ + if (optHasLabMat) { + printf("\t\tShow criterion values for all data:\n"); + ShowCriteriaInfo(criteriaAll); + } + + /* forwarding finished */ + edClock = clock(); + if (trace & T_TIM) + printf("\t\tTime cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + + /* free ANNSet */ + FreeANNSet(&hset); + for (i = 1; i <= S; ++i) + FreeCache(cacheIn[i]); + +#ifdef CUDA + StopCUDA(); +#endif + + Exit(EXIT_STATUS); + return 0; +} + + +/* ----------------------------------------------------------- */ +/* END: HNForward.c */ +/* ----------------------------------------------------------- */ + diff --git a/HTKTools/HNTrainSGD.c b/HTKTools/HNTrainSGD.c new file mode 100755 index 0000000..e2711b3 --- /dev/null +++ b/HTKTools/HNTrainSGD.c @@ -0,0 +1,3347 @@ +/* ----------------------------------------------------------- */ +/* */ +/* ___ */ +/* |_| | |_/ SPEECH */ +/* | | | | \ RECOGNITION */ +/* ========= SOFTWARE */ +/* */ +/* */ +/* ----------------------------------------------------------- */ +/* developed at: */ +/* */ +/* Machine Intelligence Laboratory */ +/* Department of Engineering */ +/* University of Cambridge */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* author: */ +/* Chao Zhang */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2013-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ +/* */ +/* Use of this software is governed by a License Agreement */ +/* ** See the file License for the Conditions of Use ** */ +/* ** This banner notice must not be removed ** */ +/* */ +/* ----------------------------------------------------------- */ +/* File: HNTrainSGD.c SGD based ANN model training program */ +/* ----------------------------------------------------------- */ + +char *hntrainsgd_version = "!HVER!HNTrainSGD: 3.5.0 [CUED 12/10/15]"; +char *hntrainsgd_vc_id = "$Id: HNTrainSGD.c,v 1.0 2015/10/12 12:07:24 cz277 Exp $"; + +/* + This program is used to train various ANN models based on + SGD using a single machine. +*/ + +#include "config.h" +#ifdef IMKL +#include "mkl.h" +#endif +#include "HShell.h" +#include "HMem.h" +#include "HMath.h" +#include "HSigP.h" +#include "HWave.h" +#include "HLabel.h" +#include "HAudio.h" +#include "HParm.h" +#include "HDict.h" +#include "HANNet.h" +#include "HModel.h" +#include "HTrain.h" +#include "HUtil.h" +#include "HAdapt.h" +#include "HFB.h" +#include "HNet.h" /* for Lattice */ +#include "HLM.h" +#include "HLat.h" /* for Lattice */ +#include "HArc.h" +#include "HFBLat.h" +#include "HExactMPE.h" +#include "HNCache.h" + +#include +#include +#include +#include + +/* -------------------------- Trace Flags & Vars ------------------------ */ + +/* Trace Flags */ +#define T_TOP 0001 /* Top level tracing */ +#define T_TIM 0002 /* Output timings */ +#define T_SCH 0004 /* Scheduler behavior tracing */ +static int trace = 0; +#define EXIT_STATUS 0 /* Exit status */ + +/* -------------------------- Global Variables etc ---------------------- */ + +#define MAX(a, b) ((a)>(b)?(a):(b)) +#define MIN(a, b) ((a)<(b)?(a):(b)) +#define ABS(a) ((a)>0?(a):-(a)) +#define FINITE(x) (!isnan(x) && x<1.0e+30 && x>-1.0e+30) + +enum _TrainMode {FRAMETM, SEQTM}; +typedef enum _TrainMode TrainMode; + +enum _LRSchdKind {ADAGRADSK, EXPSK, LISTSK, NEWBOBSK}; +typedef enum _LRSchdKind LRSchdKind; + +enum _NewBobCrt {ACCNBC, MAPACCNBC, LLHVALNBC, MAPLLHVALNBC}; +typedef enum _NewBobCrt NewBobCrt; + +enum _BatchUpdateKind {BATLEVEL, UTTLEVEL}; +typedef enum _BatchUpdateKind BatchUpdateKind; + +typedef struct _CriteriaInfo { + double cSampAcc; + double MMSEAcc; + double XENTAcc; + double MPEAcc; + double tUttAcc; + double tNWordAcc; + double tSampAcc; + double LLHAcc; + double LLHVal; + double NumLLHAcc; + double DenLLHAcc; + int MMIFRAcc; + double cSampAccMapMax; + double cSampAccMapSum; + double MMSEAccMapSum; + double XENTAccMapSum; + double LLHAccMapSum; + double LLHValMapSum; +} CriteriaInfo; + +typedef struct _ModelSetInfo *MSILink; + +typedef struct _ModelSetInfo { + char *baseDir; + char *hmmExt; + char *macExt; + char **macFN; + int macCnt; + float crtVal; + MSILink next; + MSILink prev; + int epochIdx; + int updtIdx; +} ModelSetInfo; + +/* for AdaGrad */ +static int AdaGrad_K = 1; /* the K value for AdaGrad learning rate scheduler */ +/* for Exponential */ +static float Exp_Gamma = 0.0; /* the gamma parameter for Exponential learning rate scheduler */ +static float Exp_TrSampIdx = 0.0; /* the number of samples proceeded for Exponential learning rate scheduler */ +static float Exp_Base = 10.0; /* eta * Exp_Base^{-1.0 * Exp_TrSampIdx / Exp_Gamma}*/ +/* for List */ +static Vector List_LRs; /* the learning rate(s) */ +/* for NewBob */ +static float NewBob_RampStart = 0.005; /* the min_derror_ramp_start parameter for NewBob learning rate scheduler */ +static float NewBob_Stop = 0.005; /* the min_derror_stop parameter for NewBob learning rate scheduler */ +static int NewBob_Status = 0; /* the status of NewBob (0: initia, 1: ramping) */ +static float NewBob_DecayFactor = 0.5; +static NewBobCrt NewBob_Crt = ACCNBC; /* */ + +static LRSchdKind schdKind = NEWBOBSK; /* the kind of the learning rate scheduler */ +static float initLR = 0.01; /* the initial learning rates */ +static float curNegLR; +static float minLR = 0.0; /* the lower learning rate threshold */ +static int minEpochNum = -1; /* the minimum number of epoch to run */ +static int maxEpochNum = -1; /* the maximum number of epoch to run */ + +/*static float momentum = 0.0;*/ /* the factor for momentum */ +/* cz277 - mmt */ +static Vector List_MMTs = NULL; +static Vector List_WeightDecay = NULL; + +/*static float weightDecay = 0.0; */ /* the factor for weight decay */ +static int epochOff = 1; /* current epoch offset */ +static float logObsvPrior = 0.0; /* logP(O) */ + +static char *hmmListFn = NULL; /* model list filename (optional) */ +static char *hmmDir = NULL; /* directory to look for HMM def files */ +static char *hmmExt = NULL; /* HMM def file extension */ +static char *mappingFn = NULL; /* the name of target mapping file */ +static XFInfo xfInfo; /* transforms/adaptations */ +static char *newDir = NULL; /* directory to store new HMM def files */ +static char *newExt = NULL; /* extension of new retrained HMM files */ +static UPDSet uFlags = UPTARGETPEN | UPANNPARAM;/* update flags */ +static Boolean saveBinary = FALSE; /* save output in binary */ +static HMMSet hset; /* the HMM set */ +static char *epcBaseDir = NULL; /* the base directory for epoch models (default: newDir) */ +static char *epcDirPref = "epoch"; /* the prefix of the subdirectory to store the model per epoch */ +static char *fnUpdate = "UPDATE"; /* the file name for update files */ +static char *fncurNegLR = "NEGLEARNRATE"; /* the file name for negative learning rates */ +static char *fnSquareGrad = "SQUAREGRAD"; /* the file name for sum of squared gradients */ +static char *fnLRSchd = "SCHEDULER"; /* the file name for learning rate scheduler */ +static int updateIndex = 0; + +static IntVec recVec = NULL; /* the vector contains hypothesis labels */ +static IntVec recVecLLH = NULL; +static IntVec recVecMapSum = NULL; /* the vector contains the mapped hypothesis labels */ +static IntVec recVecLLHMapSum = NULL; +static char *labDir = NULL; /* label (transcription) file directory */ +static char *labExt = "lab"; /* label file extension */ +static FileFormat dff = UNDEFF; /* data file format */ +static FileFormat lff = UNDEFF; /* label file format */ +static char *labFileMask = NULL; /* mask for reading labels */ +static Boolean useLLF = FALSE; /* use directory based LLF files instead of individual lattices */ + +static char *denLatDir[MAXLATS]; /* denominator lattices */ +static int nDenLats = 0; /* number of denominator lattices */ +static char *numLatDir[MAXLATS]; /* numerator-alignment lattices */ +static int nNumLats = 0; /* number of numerator lattices */ +static char *latExt = "lat"; /* lattice file extension */ +static char *latFileMask = NULL; /* mask for reading lattices */ +static char *latMask_Num = NULL; /* mask for reading numerator lattices */ +static char *latMask_Den = NULL; /* mask for reading denominator lattices */ +static char numLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for numerator lattices */ +static char denLatSubDirPat[MAXSTRLEN] = "\0"; /* path mask for denominator lattices */ +static Vocab vocab; /* fake vocabulary */ +static int corrIdx = 0; +static int recogIdx1 = 1; +static int recogIdx2 = 999; +static Boolean procNumLats; +static Boolean procDenLats; +static float probScale = 1.0; + +static ObjFunKind objfunKind = XENTOF; /* the objective function for the ANN models */ +static ObjFunKind showObjFunKind = UNKOF; +static ObjFunKind objfunFSmooth = XENTOF; +static float FSmoothH = 1.0; /* F-smoothing is used when FSmoothH != 1.0 */ +static ObjFunKind objfunISmooth = MLOF; +static float ISmoothTau = 0; +static float minOccFrameReject = 0.0; + +static Boolean initialHV = FALSE; /* wheter to do the initial held-out validation */ +static FILE *scriptTr = NULL; /* script file for train set */ +static int scriptCntTr = 0; /* number of words in scriptTr */ +static int tSampCntTr = 0; /* number of samples in scriptTr */ +static FILE *scriptHV = NULL; /* script file for held-out validation set if any */ +static int scriptCntHV = 0; /* number of words in scriptHo */ +static int tSampCntHV = 0; /* number of samples in scriptHV number of samples in scriptHV */ + +static FILE *scriptFLabTr = NULL; +static int scriptCntFLabTr = 0; +static int tSampCntFLabTr = 0; +static FILE *scriptFLabHV = NULL; +static int scriptCntFLabHV = 0; +static int tSampCntFLabHV = 0; + +static LabelKind labelKind = NULLLK; /* the kind of the labels */ +static LabelInfo *labelInfo = NULL; /* the structure for the labels */ +static BatchUpdateKind updtKind = BATLEVEL; /* the update kind */ +static int numPerUpdt = 1; /* update the parameters once per updtUnitNum batches/utterances */ +static DataCache *cacheTr[SMAX]; /* the cache structures for the train set */ +static DataCache *cacheHV[SMAX]; /* the cache structures for the held-out validation set */ +static Observation obs; /* array of Observations */ + +static ModelSetInfo inputMSI; /* the MSI with the input model set */ +static MSILink headMSI; /* the head pointer for the MSI list */ +static MSILink tailMSI; /* the tail pointer for the MSI list */ +static float newMSI_CrtVal; /* the temporary global variable for ModelSetInfo.crtVal*/ + +static char **macroFN; /* the macro file name list */ +int macroCnt = 0; /* the macro number */ +static FBLatInfo fbInfo; +static int NumAccs; +static float MinOccTrans = 10.0; /* Minimum numerator (ML) occupancy for a transition row */ +static float CTrans = 1.0; + +/* cz277 - semi */ +static int bgWaitNBatchPL = 0; /* the number of batches be held */ +static int edAccBatchLenPL = 0; /* the length of batch start to be held */ +static VisitKind visitKindHV = NONEVK; /* default visit kind for held-out validation */ + +/* cz277 - gradlim */ +static float gradientClip = 0.0; /* 0.32 */ +static float updateClip = 0.0; /* 0.32 */ +static float gradientL2Scale = 0.0; +static float updateL2Scale = 0.0; +/*static float actfunUpdtPosClip = 0.32; +static float actfunUpdtNegClip = -0.32; +static float wghtUpdtPosClip = 0.32; // suggested values: 1.6, 0.08, 0.02, 0.002 -> 800, 40, 10, 1 +static float wghtUpdtNegClip = -0.32; +static float biasUpdtPosClip = 0.32; +static float biasUpdtNegClip = -0.32;*/ +/* cz277 - max norm */ +static float weightL2NormBound = 0.0; /* suggested value: 1.0, 0.8, 0.6... */ +/* cz277 - pact */ +static int staticUpdtCode = 0; +static float clipScaleFactor = 0.0; + +/* ------------------------- Global Options ----------------------------- */ + +static Boolean optHasSSG = FALSE; /* whether the trainInfo has SSG structure */ +static Boolean optHasNLR = FALSE; /* whether the trainInfo has NLR structure */ +static Boolean optHasMMT = FALSE; /* whether has momentum (should save the update file) */ +static Boolean optHasLabMat = FALSE; /* whether do supervised learning or not (associated with NULLLK) */ +/*static Boolean optSeqTrain = FALSE;*/ /* whether sequence training or not */ +static TrainMode optTrainMode = FRAMETM; /* frame level training, by default */ +static Boolean optSavEpcMod = FALSE; /* whether saves the HMM files for each epoch */ +static Boolean optSavSchd = FALSE; /* whether saves the learning rate scheduler */ +static Boolean optMapTarget = FALSE; /* do target mapping or not */ +static Boolean optHasFSmooth = FALSE; +static Boolean optHasISmooth = FALSE; +static Boolean optFrameReject = FALSE; +static Boolean optIncNumInDen = TRUE; +/*static Boolean optActfunUpdtClip = TRUE; +static Boolean optWghtUpdtClip = FALSE; +static Boolean optBiasUpdtClip = FALSE;*/ +/*static Boolean optScaleClipByDepth = FALSE;*/ +/* cz277 - max norm */ +static Boolean optWeightL2Norm = FALSE; +/* cz277 - pact */ +static Boolean optDoStaticUpdt = FALSE; +/* general parameters */ +static Boolean optNormLearnRate = FALSE; /* whether to normalise the learning rates according to the updated samples */ +static Boolean optNormWeightDecay = FALSE; +static Boolean optNormMomentum = FALSE; +static Boolean optNormGradientClip = FALSE; +static Boolean optNormUpdateClip = FALSE; +static Boolean optNormL2GradientScale = FALSE; +static Boolean optNormL2UpdateScale = FALSE; + +/* ------------------------------ Heaps --------------------------------- */ + +static MemHeap modelHeap; /* the memory heap for models */ +static MemHeap cacheHeap; /* the memory heap for data caches */ +static MemHeap transHeap; /* the memory heap for transcriptions */ +static MemHeap latHeap; /* the memory heap for lattices */ +static MemHeap accHeap; /* the accumulated memory heap */ + +/* -------------------- Configuration Parameters ------------------------ */ + +static ConfParam *cParm[MAXGLOBS]; /* configuration parameters */ +static int nParm = 0; /* total num params */ +static ParmKind flabPK; +static short vecSizeFLab = 0; +static Observation obsFLab; /* array of Observations */ + +/* -------------------------- Prototypes -------------------------------- */ + + +/* ----------------------- Process Command Line ------------------------- */ + +static int ParseFloatConfStr(char *parmName, ConfParam *cpVal, Vector *resVec, float minVal, float maxVal) { + Vector confVec=NULL; + int numParm=0, intVal; + char buf[MAXSTRLEN], *charPtr; + + if (cpVal->kind == FltCKind) { + confVec = CreateVector(&gcheap, 1); + confVec[1] = cpVal->val.f; + if (confVec[1] < minVal || confVec[1] >= maxVal) + HError(4321, "ParseFloatConfStr: float %e of %s out of range", confVec[1], parmName); + numParm = 1; + } + else if (cpVal->kind == IntCKind) { + confVec = CreateVector(&gcheap, 1); + confVec[1] = cpVal->val.i; + if (confVec[1] < minVal || confVec[1] >= maxVal) + HError(4321, "ParseFloatConfStr: float %e of %s out of range", confVec[1], parmName); + numParm = 1; + } + else if (cpVal->kind == StrCKind) { + /* count for the number of tokens */ + numParm = 0; + strcpy(buf, cpVal->val.s); + charPtr = strtok(buf, ","); + while (charPtr != NULL) { + ++numParm; + charPtr = strtok(NULL, ","); + } + if (numParm == 0) + HError(4320, "ParseFloatConfStr: No token available for %s", parmName); + /* malloc a new vector */ + confVec = CreateVector(&gcheap, numParm); + intVal = 1; + /* convert each token */ + strcpy(buf, cpVal->val.s); + charPtr = strtok(buf, ","); + while (charPtr != NULL) { + confVec[intVal] = (float) atof(charPtr); + if (confVec[intVal] < minVal || confVec[intVal] >= maxVal) + HError(4321, "ParseFloatConfStr: float %e of %s out of range", confVec[intVal], parmName); + ++intVal; + charPtr = strtok(NULL, ","); + } + } + else + HError(4322, "ParseFloatConfStr: Wrong parameter type for %s", parmName); + + *resVec = confVec; + return numParm; +} + +void SetConfParms(void) +{ + int intVal; + double doubleVal; + Boolean boolVal; + char buf[MAXSTRLEN], buf2[MAXSTRLEN]; + char *charPtr, *charPtr2; + ConfParam *cpVal; + + /* initialise HNTrainSGD parameters */ + nParm = GetConfig("HNTRAINSGD", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfInt(cParm, nParm, "TRACE", &intVal)) + trace = intVal; + if (GetConfBool(cParm, nParm, "EPOCHSAVE", &boolVal)) + optSavEpcMod = boolVal; + /* set learning rate scheduler kind */ + if (GetConfStr(cParm, nParm, "LRSCHEDULER", buf)) { + if (strcmp(buf, "ADAGRAD") == 0) { + schdKind = ADAGRADSK; + optHasSSG = TRUE; + optHasNLR = TRUE; + } + else if (strcmp(buf, "EXPONENTIAL") == 0) { + schdKind = EXPSK; + optHasSSG = FALSE; + optHasNLR = FALSE; + Exp_TrSampIdx = 0; + } + else if (strcmp(buf, "LIST") == 0) { + schdKind = LISTSK; + optHasSSG = FALSE; + optHasNLR = FALSE; + } + else if (strcmp(buf, "NEWBOB") == 0) { + schdKind = NEWBOBSK; + optHasSSG = FALSE; + optHasNLR = FALSE; + optSavEpcMod = TRUE; + optSavSchd = FALSE; + } + else + HError(4322, "SetConfParms: Unknown learning rate scheduler kind"); + } + /* set parameters associated with the learning rate scheduler */ + switch (schdKind) { + case ADAGRADSK: + if (GetConfInt(cParm, nParm, "K", &intVal)) { + if (intVal < 1) + HError(4321, "SetConfParms: K for AdaGrad scheduler out of range"); + AdaGrad_K = intVal; + } + if (GetConfFlt(cParm, nParm, "LEARNRATE", &doubleVal)) { + if (doubleVal < 0.0) + HError(4321, "SetConfParms: Initial learning rate for AdaGrad scheduler out of range"); + initLR = (float) doubleVal; + } + break; + case EXPSK: + if (GetConfFlt(cParm, nParm, "GAMMA", &doubleVal)) { + if (doubleVal <= 0.0) + HError(4321, "SetConfParms: Gamma for Exponential scheduler out of range"); + Exp_Gamma = (float) doubleVal; + } + if (GetConfFlt(cParm, nParm, "BASE", &doubleVal)) { + if (doubleVal <= 1.0) + HError(4321, "SetConfParms: Base for Exponential scheduler out of range"); + Exp_Base = (float) doubleVal; + } + if (GetConfFlt(cParm, nParm, "LEARNRATE", &doubleVal)) { + if (doubleVal < 0.0) + HError(4321, "SetConfParms: Initial learning rate for Exponential scheduler out of range"); + initLR = (float) doubleVal; + } + break; + case LISTSK: + if (GetConfAny(cParm, nParm, "LEARNRATE", &cpVal)) + maxEpochNum = ParseFloatConfStr("LEARNRATE", cpVal, &List_LRs, 0.0, FLT_MAX); + break; + case NEWBOBSK: + if (GetConfFlt(cParm, nParm, "LEARNRATE", &doubleVal)) { + if (doubleVal <= 0.0) + HError(4321, "SetConfParms: Initial learning rate for NewBob scheduler out of range"); + initLR = (float) doubleVal; + } + if (GetConfStr(cParm, nParm, "NEWBOBCRT", buf)) { + if (strcmp(buf, "ACC") == 0) + NewBob_Crt = ACCNBC; + else if (strcmp(buf, "MAPACC") == 0) + NewBob_Crt = MAPACCNBC; + else if (strcmp(buf, "LLHVAL") == 0) { + NewBob_Crt = LLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else if (strcmp(buf, "MAPLLHVAL") == 0) { + NewBob_Crt = MAPLLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else + HError(4322, "SetConfParms: Unknown criterion for NewBob"); + } + if (GetConfFlt(cParm, nParm, "DECAYFACTOR", &doubleVal)) + NewBob_DecayFactor = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "RAMPSTART", &doubleVal)) + NewBob_RampStart = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "STOPDIFF", &doubleVal)) + NewBob_Stop = (float) doubleVal; + break; + default: + break; + } + if (schdKind != LISTSK && GetConfInt(cParm, nParm, "MINEPOCHNUM", &intVal)) + minEpochNum = intVal; + if (schdKind != LISTSK && GetConfFlt(cParm, nParm, "MINLEARNRATE", &doubleVal)) + minLR = (float) doubleVal; + if (schdKind != LISTSK && GetConfInt(cParm, nParm, "MAXEPOCHNUM", &intVal)) { + if (intVal <= 0 || intVal < minEpochNum) + HError(4321, "SetConfParms: Maximum number of epoch out of range"); + maxEpochNum = intVal; + } + if (GetConfBool(cParm, nParm, "NORMLEARNRATE", &boolVal)) + optNormLearnRate = boolVal; + /* cz277 - varlen */ + if (GetConfBool(cParm, nParm, "NORMWEIGHTDECAY", &boolVal)) + optNormWeightDecay = boolVal; + if (GetConfBool(cParm, nParm, "NORMMOMENTUM", &boolVal)) + optNormMomentum = boolVal; + if (GetConfBool(cParm, nParm, "NORMGRADIENTCLIP", &boolVal)) + optNormGradientClip = boolVal; + if (GetConfBool(cParm, nParm, "NORMUPDATECLIP", &boolVal)) + optNormUpdateClip = boolVal; + if (GetConfBool(cParm, nParm, "NORML2GRADIENTSCALE", &boolVal)) + optNormL2GradientScale = boolVal; + if (GetConfBool(cParm, nParm, "NORML2UPDATESCALE", &boolVal)) + optNormL2UpdateScale = boolVal; + + if (GetConfInt(cParm, nParm, "EPOCHOFFSET", &intVal)) { + if (intVal <= 0) + HError(4321, "SetConfParms: The offset of epoch index out of range"); + epochOff = intVal; + } + /* cz277 - mmt */ + if (GetConfAny(cParm, nParm, "MOMENTUM", &cpVal)) { + ParseFloatConfStr("MOMENTUM", cpVal, &List_MMTs, 0.0, FLT_MAX); + optHasMMT = FALSE; + for (intVal = 1; intVal <= VectorSize(List_MMTs); ++intVal) + if (List_MMTs[intVal] != 0.0) + optHasMMT = TRUE; + } + if (GetConfAny(cParm, nParm, "WEIGHTDECAY", &cpVal)) + ParseFloatConfStr("WEIGHTDECAY", cpVal, &List_WeightDecay, 0.0, FLT_MAX); + if (GetConfStr(cParm, nParm, "UPDATEMODE", buf)) { + if (strcmp(buf, "BATCHLEVEL") == 0) + updtKind = BATLEVEL; + else if (strcmp(buf, "UTTERANCELEVEL") == 0) + updtKind = UTTLEVEL; + else + HError(4322, "SetConfParms: Unknown batch based parameter update mode"); + } + if (GetConfInt(cParm, nParm, "NUMPERUPDATE", &intVal)) { + if (intVal <= 0) + HError(4321, "SetConfParms: NUMPERUPDATE should be positive integer"); + numPerUpdt = intVal; + } + /* set training criterion */ + if (GetConfStr(cParm, nParm, "CRITERION", buf)) { + if (strcmp(buf, "ML") == 0) { + objfunKind = MLOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MLOF; + } + else if (strcmp(buf, "MMI") == 0) { + objfunKind = MMIOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MMIOF; + } + else if (strcmp(buf, "MMSE") == 0) { + objfunKind = MMSEOF; + optTrainMode = FRAMETM; + } + else if (strcmp(buf, "MPE") == 0) { + objfunKind = MPEOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MPEOF; + } + else if (strcmp(buf, "MWE") == 0) { + objfunKind = MWEOF; + optTrainMode = SEQTM; + showObjFunKind = showObjFunKind | MWEOF; + } + else if (strcmp(buf, "SMBR") == 0) { + objfunKind = SMBROF; + optTrainMode = SEQTM; + } + else if (strcmp(buf, "XENT") == 0) { + objfunKind = XENTOF; + optTrainMode = FRAMETM; + } + else + HError(4322, "SetConfParms: Unknown objective function kind"); + } + /* set evaluation criteria */ + if (GetConfStr(cParm, nParm, "EVALCRITERIA", buf)) { + charPtr = buf; + while (charPtr != NULL) { + charPtr2 = strchr(charPtr, '|'); + if (charPtr2 != NULL) { + *charPtr2 = '\0'; + } + strcpy(buf2, charPtr); + if (charPtr2 != NULL) { + *charPtr2 = '|'; + ++charPtr2; + } + charPtr = charPtr2; + if (strcmp(buf2, "ML") == 0) + showObjFunKind = showObjFunKind | MLOF; + else if ((strcmp(buf2, "MMI") == 0) && (optTrainMode == SEQTM)) + showObjFunKind = showObjFunKind | MMIOF; + else if (strcmp(buf2, "MMSE") == 0) + showObjFunKind = showObjFunKind | MMSEOF; + else if ((strcmp(buf2, "MPE") == 0) && (optTrainMode == SEQTM)) + showObjFunKind = showObjFunKind | MPEOF; + else if (strcmp(buf2, "XENT") == 0) + showObjFunKind = showObjFunKind | XENTOF; + } + } + /* set the updating flag for transitions */ + if (GetConfBool(cParm, nParm, "UPDATETRANS", &boolVal)) { + if (boolVal) + uFlags = uFlags | UPTRANS; + else + uFlags = uFlags & (~UPTRANS); + } + if ((uFlags & UPTRANS) != 0 && GetConfFlt(cParm, nParm, "CTRANS", &doubleVal)) + CTrans = (float) doubleVal; + if ((uFlags & UPTRANS) != 0 && GetConfFlt(cParm, nParm, "MINOCCTRANS", &doubleVal)) + MinOccTrans = (float) doubleVal; + /* set the frame criterion for F-smoothing */ + if (GetConfStr(cParm, nParm, "FSMOOTHCRITERION", buf)) { + if (strcmp(buf, "MMSE") == 0) + objfunFSmooth = MMSEOF; + else if (strcmp(buf, "XENT") == 0) + objfunFSmooth = XENTOF; + else + HError(4322, "SetConfParms: Unknown objective function kind for F-smoothing"); + } + /* set the H value for F-smoothing */ + if (GetConfFlt(cParm, nParm, "FSMOOTHHVALUE", &doubleVal)) { + FSmoothH = (float) doubleVal; + if (FSmoothH != 1.0) + optHasFSmooth = TRUE; + } + /* set the sequence criterion for I-smoothing */ + if (GetConfStr(cParm, nParm, "ISMOOTHCRITERION", buf)) { + if (strcmp(buf, "ML") == 0) { + if (!(objfunKind == MMIOF && objfunKind == MPEOF && objfunKind == MWEOF && objfunKind == SMBROF)) + HError(4322, "SetConfParms: ML prior is only valid for MMI and MBR training objective functions"); + objfunISmooth = MLOF; + } + else if (strcmp(buf, "MMI") == 0) { + if (!(objfunKind == MPEOF && objfunKind == MWEOF && objfunKind == SMBROF)) + HError(4322, "SetConfParms: ML prior is only valid for MBR training objective functions"); + objfunISmooth = MMIOF; + } + else + HError(4322, "SetConfParms: Unknown objective function kind for I-smoothing"); + } + /* set the tau for I-smoothing */ + if (GetConfFlt(cParm, nParm, "ISMOOTHTAU", &doubleVal)) { + ISmoothTau = (float) doubleVal; + if (ISmoothTau != 0) + optHasISmooth = TRUE; + } + /* set whether do frame rejection */ + if (GetConfFlt(cParm, nParm, "MMIFRMINOCC", &doubleVal)) { + if (doubleVal > 0.0 && objfunKind == MMIOF) { + minOccFrameReject = doubleVal; + optFrameReject = TRUE; + } + } + /* set the updating flag for target penalties */ + if (GetConfBool(cParm, nParm, "UPDATETARGETPEN", &boolVal)) { + if (boolVal) + uFlags = uFlags | UPTARGETPEN; + else + uFlags = uFlags & (~UPTARGETPEN); + } + /* update the log observation prior */ + if (GetConfFlt(cParm, nParm, "LOGPRIOROBSV", &doubleVal)) + logObsvPrior = (float) doubleVal; + /* cz277 - semi */ + if (GetConfInt(cParm, nParm, "BGNPLBATCHWAIT", &intVal)) { + if (intVal < 0) + HError(4321, "SetConfParms: BGNPLBATCHWAIT should be non-negative integer"); + bgWaitNBatchPL = intVal; + } + if (GetConfInt(cParm, nParm, "EDPLBATCHLENACC", &intVal)) { + if (intVal < 0) + HError(4321, "SetConfParms: EDPLBATCHLENACC should be non-negative integer"); + edAccBatchLenPL = intVal; + } + if (GetConfFlt(cParm, nParm, "L2GRADIENTSCALE", &doubleVal)) + gradientL2Scale = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "GRADIENTCLIP", &doubleVal)) + gradientClip = (float) fabs(doubleVal); + if (GetConfFlt(cParm, nParm, "L2UPDATESCALE", &doubleVal)) + updateL2Scale = (float) doubleVal; + if (GetConfFlt(cParm, nParm, "UPDATECLIP", &doubleVal)) + updateClip = (float) fabs(doubleVal); + if (GetConfFlt(cParm, nParm, "CLIPSCALEFACTOR", &doubleVal)) + clipScaleFactor = (float) doubleVal; + /*if (GetConfFlt(cParm, nParm, "ACTIVATIONUPDATECLIP", &doubleVal)) { + if (doubleVal <= 0.0) + optActfunUpdtClip = FALSE; + else { + optActfunUpdtClip = TRUE; + actfunUpdtPosClip = (float) doubleVal; + actfunUpdtNegClip = -1.0 * actfunUpdtPosClip; + } + } + if (GetConfFlt(cParm, nParm, "WEIGHTUPDATECLIP", &doubleVal)) { + if (doubleVal <= 0.0) + optWghtUpdtClip = FALSE; + else { + optWghtUpdtClip = TRUE; + wghtUpdtPosClip = (float) doubleVal; + wghtUpdtNegClip = -1.0 * wghtUpdtPosClip; + } + } + if (GetConfFlt(cParm, nParm, "BIASUPDATECLIP", &doubleVal)) { + if (doubleVal <= 0.0) + optBiasUpdtClip = FALSE; + else { + optBiasUpdtClip = TRUE; + biasUpdtPosClip = (float) doubleVal; + biasUpdtNegClip = -1.0 * biasUpdtPosClip; + } + }*/ + /* cz277 - max norm */ + if (GetConfFlt(cParm, nParm, "WEIGHTL2MAXNORMBOUND", &doubleVal)) { + if (doubleVal <= 0.0) + optWeightL2Norm = FALSE; + else { + optWeightL2Norm = TRUE; + weightL2NormBound = (float) doubleVal; + } + } + if (GetConfInt(cParm, nParm, "STATICUPDATECODE", &intVal)) + staticUpdtCode = intVal; + + /* label file mask */ + if (GetConfStr(cParm, nParm, "LABFILEMASK", buf)) + labFileMask = CopyString(&gcheap, buf); + /* lattice file mask */ + if (GetConfStr(cParm, nParm, "LATFILEMASK", buf)) + latFileMask = CopyString(&gcheap, buf); + if (GetConfStr(cParm, nParm, "LATMASKNUM", buf)) + latMask_Num = CopyString(&gcheap, buf); + if (GetConfStr(cParm, nParm, "LATMASKDEN", buf)) + latMask_Den = CopyString(&gcheap, buf); + /* speaker adaptation mask */ + if (GetConfStr(cParm, nParm, "INXFORMMASK", buf)) + xfInfo.inSpkrPat = CopyString(&gcheap, buf); + if (GetConfBool(cParm, nParm, "USELLF", &boolVal)) + useLLF = boolVal; + if (GetConfBool(cParm, nParm, "INCNUMLATINDENLAT", &boolVal)) + optIncNumInDen = boolVal; + } + /* HParm: HNTrainSGD */ + SetChannel("HPARMLABEL"); + nParm = GetConfig("HPARMLABEL", TRUE, cParm, MAXGLOBS); + if (nParm > 0) { + if (GetConfStr(cParm, nParm, "TARGETKIND", buf)) + flabPK = Str2ParmKind(buf); + if (GetConfInt(cParm, nParm, "VECSIZE", &intVal)) + vecSizeFLab = (short) intVal; + } + + /* fetch parameters associated with current training criterion */ + switch (objfunKind) { + case MMIOF: + procNumLats = TRUE; + procDenLats = TRUE; + recogIdx1 = 1; + recogIdx2 = 999; + corrIdx = 0; + break; + case MLOF: + procNumLats = TRUE; + procDenLats = FALSE; + recogIdx1 = 999; /* useless */ + recogIdx2 = 999; /* useless */ + corrIdx = 0; + break; + case MMSEOF: + break; + case MPEOF: + procNumLats = FALSE; + procDenLats = TRUE; + recogIdx1 = 0; + recogIdx2 = 1; + corrIdx = 2; + break; + case MWEOF: + HError(4301, "MWE not implemented yet"); + break; + case SMBROF: + HError(4301, "SMBR not implemented yet"); + break; + case XENTOF: + break; + default: + break; + } +} + +void ReportUsage (void) { + printf("\nUSAGE: HNTrainSGD [options] [HMMList]\n\n"); + printf(" Option Default\n\n"); + printf(" -a Use input transformation off\n"); + printf(" -c Do initial held-out validation off\n"); + printf(" -d s Dir to find HMM definitions current\n"); + printf(" -e s Subdir prefix for epoch models epoch\n"); + printf(" -eb s Base dir to save intermediate HMMs -d dir\n"); + printf(" -fl s Path of input learning rate file none\n"); + printf(" -h s Speaker name pattern none\n"); + printf(" -l s Label kind [fea, lab, lat, null] null\n"); + printf(" -m s Target mapping file s off\n"); + printf(" -nu s Name of the update file UPDATE\n"); + printf(" -nn s Name of the neg learning rate file curNegLR\n"); + printf(" -ng s Name of the sum of squared grad file SQUAREGRAD\n"); + printf(" -ns s Name of the scheduler file SCHEDULER\n"); + printf(" -o s Extensions for new HMM files as src\n"); + printf(" -q s Directory for numerator lats [needed. May use >1 -q option]\n"); + printf(" -qp s Subdir pattern for numerator lats none\n"); + printf(" -r s Directory for denominator lats [needed. May use >1 -r option]\n"); + printf(" -rp s Subdir pattern for denominator lats none\n"); + printf(" -u tbw Update t)rans b)ias w)eight for ANN tbw\n"); + printf(" -x s Extension for HMM files none\n"); + printf(" -N s Input script file for validation set none\n"); + PrintStdOpts("BFGHIJLMSTX"); /* E, K removed */ + printf("\n\n"); +} + + +float CalApproxAvgBatchLikelhood(DataCache *cache, int batLen) { + LELink layerElem; + ANNSet *annSet; + int i, labTgt; + float llh = 0.0; + + annSet = cache->hmmSet->annSet; + layerElem = annSet->outLayers[cache->streamIdx]; + for (i = 0; i < batLen; ++i) { + labTgt = cache->labVec[i]; + llh += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + labTgt]; + } + llh /= batLen; + + return llh; +} + +void AccCriteriaPerB(DataCache *cache, int batLen, CriteriaInfo *criteria) { + LELink layerElem; + int i, labTgt, recTgt, recTgtMapSum, recLLHTgt, recTgtLLHMapSum; + IntVec mapVec; + ANNSet *annSet; + + annSet = cache->hmmSet->annSet; + /* do accumulateion */ + layerElem = annSet->outLayers[cache->streamIdx]; + /* for tSamp */ + criteria->tSampAcc += batLen; + /* for accuracy */ + for (i = 1; i <= batLen; ++i) { + labTgt = cache->labVec[i]; + recTgt = recVec[i]; + if (labTgt == recTgt) { + ++criteria->cSampAcc; + } + /* for LLH values */ + if (showObjFunKind & MLOF) { + recLLHTgt = recVecLLH[i]; + if (labTgt == recLLHTgt) { + criteria->LLHVal += cache->hmmSet->annSet->llhMat[cache->streamIdx]->matElems[(i - 1) * layerElem->nodeNum + recLLHTgt]; + } + } + } + + /* for mapped accuracy by max and sum*/ + if (optMapTarget) { + mapVec = hset.annSet->mapStruct->mapVectors[cache->streamIdx]; + for (i = 1; i <= batLen; ++i) { + labTgt = mapVec[cache->labVec[i] + 1]; + recTgtMapSum = recVecMapSum[i]; + if (labTgt == recTgtMapSum) { + ++criteria->cSampAccMapSum; + } + UpdateTargetMapStats(hset.annSet, labTgt, recTgtMapSum); + /* for LLH values */ + if (showObjFunKind & MLOF) { + recTgtLLHMapSum = recVecLLHMapSum[i]; + if (labTgt == recTgtLLHMapSum) { + criteria->LLHValMapSum += cache->hmmSet->annSet->mapStruct->llhMatMapSum[cache->streamIdx]->matElems[(i - 1) * hset.annSet->mapStruct->mappedTargetNum + recTgtMapSum]; + } + } + } + } + + /* MMSE */ + if (showObjFunKind & MMSEOF) { + criteria->MMSEAcc += CalMMSECriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->MMSEAccMapSum += CalMMSECriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } + + /* XENT */ + if (showObjFunKind & XENTOF) { + criteria->XENTAcc += CalXENTCriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + if (optMapTarget) { + criteria->XENTAccMapSum += CalXENTCriterion(annSet->mapStruct->labMatMapSum[cache->streamIdx], annSet->mapStruct->outMatMapSum[cache->streamIdx], batLen); + } + } +} + +void AccCriteriaPerU(DataCache *cache, int batLen, CriteriaInfo *criteria) { + LELink layerElem; + ANNSet *annSet; + + annSet = cache->hmmSet->annSet; + /* do accumulateion */ + layerElem = annSet->outLayers[cache->streamIdx]; + /* for tSamp */ + criteria->tSampAcc += batLen; + /* for tUtt */ + ++criteria->tUttAcc; + + if ((showObjFunKind & MLOF) && (cache->streamIdx == 1)) { + criteria->LLHVal += fbInfo.pr; + } + if ((showObjFunKind & MPEOF) && (cache->streamIdx == 1)) { + criteria->MPEAcc += fbInfo.AvgCorr; + criteria->tNWordAcc += fbInfo.MPEFileLength; + } + if ((showObjFunKind & MMIOF) && (cache->streamIdx == 1)) { + criteria->NumLLHAcc += fbInfo.latPr[corrIdx]; + criteria->DenLLHAcc += fbInfo.latPr[recogIdx1]; + } + /* MMSE */ + if (showObjFunKind & MMSEOF) { + criteria->MMSEAcc += CalMMSECriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + } + /* XENT */ + if (showObjFunKind & XENTOF) { + criteria->XENTAcc += CalXENTCriterion(cache->labMat, layerElem->yFeaMats[1], batLen); /* cz277 - many */ + } +} + + + +void PrintCriteria(CriteriaInfo *criteria, char *setid) { + float accVal; + int cSampInt, tSampInt; + + if (optTrainMode == FRAMETM) { + cSampInt = (int) criteria->cSampAcc; + tSampInt = (int) criteria->tSampAcc; + accVal = criteria->cSampAcc / criteria->tSampAcc; + printf("\t\t%s Accuracy = %.2f%% [%d right out of %d samples]\n", setid, accVal * 100.0, cSampInt, tSampInt); + if (showObjFunKind & XENTOF) { + printf("\t\tCross Entropy/Frame = %.2f\n", criteria->XENTAcc / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMean Square Error/Frame = %.2f\n", criteria->MMSEAcc / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/Frame = %e\n", criteria->LLHVal / criteria->tSampAcc); + } + + if (optMapTarget) { + cSampInt = (int) criteria->cSampAccMapSum; + accVal = criteria->cSampAccMapSum / criteria->tSampAcc; + printf("\t\tMapped Accuracy/Frame by Sum = %.2f%% [%d right out of %d samples]\n", accVal * 100.0, cSampInt, tSampInt); + if (showObjFunKind & XENTOF) { + printf("\t\tMapped Cross Entropy/Frame by Sum = %.2f\n", criteria->XENTAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMapped Mean Square Error/Frame by Sum = %.2f\n", criteria->MMSEAccMapSum / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/Frame by Sum = %e\n", criteria->LLHValMapSum / criteria->tSampAcc); + } + } + } + + if (optTrainMode == SEQTM) { + if (showObjFunKind & MMIOF) { + if (optFrameReject == TRUE) { + printf("\t\t%d frames rejected in training\n", criteria->MMIFRAcc); + } + printf("\t\tMutual Information/Frame = %f [Num/Frame = %f, Den/Frame = %f]\n", (criteria->NumLLHAcc - criteria->DenLLHAcc) / criteria->tSampAcc, criteria->NumLLHAcc / criteria->tSampAcc, criteria->DenLLHAcc / criteria->tSampAcc); + } + if (showObjFunKind & MPEOF) { + printf("\t\tMPE/MWE criterion is: %f [%d words in total]\n", criteria->MPEAcc / criteria->tNWordAcc, (int) criteria->tNWordAcc); + } + if (showObjFunKind & MMSEOF) { + printf("\t\tMean Square Error/Frame = %.2f\n", criteria->MMSEAcc / criteria->tSampAcc); + } + if (showObjFunKind & MLOF) { + printf("\t\tLog-Likelihood/Frame = %e\n", criteria->LLHVal / criteria->tSampAcc); + } + } + + fflush(stdout); + + /* set performance criterion for NewBob */ + switch (NewBob_Crt) { + case ACCNBC: + newMSI_CrtVal = criteria->cSampAcc / criteria->tSampAcc; + break; + case MAPACCNBC: + newMSI_CrtVal = criteria->cSampAccMapSum / criteria->tSampAcc; + break; + case LLHVALNBC: + newMSI_CrtVal = criteria->LLHVal / criteria->tSampAcc; + break; + case MAPLLHVALNBC: + newMSI_CrtVal = criteria->LLHValMapSum / criteria->tSampAcc; + break; + } + +} + +ReturnStatus InitScriptFile(char *fn, FILE **script, int *scriptCnt) { + char buf[MAXSTRLEN]; + int cnt = 0; + + /*CheckFn(fn);*/ + if (*script != NULL) + HError(4300, "InitScriptFile: Script file has been initialised"); + if ((*script = fopen(fn, "r")) == NULL) + HError(4310, "InitScriptFile: Cannot open script file %s for validation set", fn); + while (GetNextScpWord(*script, buf) != NULL) + ++cnt; + rewind(*script); + *scriptCnt = cnt; + return SUCCESS; +} + +char *ScpWord(FILE *script, char *wordbuf) { + int ch, qch, i; + + i = 0; + ch = ' '; + while (isspace(ch)) + ch = fgetc(script); + if (ch == EOF) + return NULL; + if (ch == '\'' || ch == '"') { + qch = ch; + ch = fgetc(script); + while (ch != qch && ch != EOF) { + wordbuf[i ++] = ch; + ch = fgetc(script); + } + if (ch == EOF) + HError(4319, "Closing quote missing in the extended scp file"); + } + else { + do { + wordbuf[i ++] = ch; + ch = fgetc(script); + } while (!isspace(ch) && ch != EOF); + } + wordbuf[i] = '\0'; + + return wordbuf; +} + +int GetExtScpWordDur(char *str) { + char *lb, *rb, *co; + char buf[MAXSTRLEN]; + int stidx, edidx; + + strcpy(buf, str); + /*eq = strchr(buf, '=');*/ + lb = strchr(buf, '['); + if (lb == NULL) { + return -1; + } + if ((co = strchr(buf, ',')) == NULL) + HError(4319, "GetExtScpWordDur: , missing in index spec"); + if ((rb = strchr(buf, ']')) == NULL) + HError(4319, "GetExtScpWordDur: ] missing in index spec"); + *rb = '\0'; + edidx = atol(co + 1); + *co = '\0'; + stidx = atol(lb + 1); + if (stidx < 0 || edidx < 0 || edidx < stidx) + HError(4319, "GetExtScpWordDur: Illegal start or end index spec"); + return edidx - stidx + 1; +} + +/* Get the total sample count in the script file */ +int GetScpSampCnt(FILE *script) { + int sampCnt = 0, curDur; + char buf[MAXSTRLEN]; + ParmBuf parmBuf; + + if (script == NULL) + HError(4300, "GetScpSampCnt: Uninitialised input script file"); + /* get the first scp word to test */ + ScpWord(script, buf); + curDur = GetExtScpWordDur(buf); + if (curDur < 0) { + HError(-4323, "GetScpSampCnt: Using non-ext scp causes an extra pass of data loading"); + rewind(script); + while (GetNextScpWord(script, buf) != NULL) { + parmBuf = OpenBuffer(&gstack, buf, 0, UNDEFF, TRI_UNDEF, TRI_UNDEF); + if (!parmBuf) { + HError(4313, "GetScpSampCnt: Open input data failed"); + } + sampCnt += ObsInBuffer(parmBuf); + CloseBuffer(parmBuf); + } + } + else { + sampCnt += curDur; + while (ScpWord(script, buf) != NULL) { + curDur = GetExtScpWordDur(buf); + if (curDur < 0) + HError(4319, "GetScpSampCnt: Non-ext scp line in ext scp file"); + sampCnt += curDur; + } + } + rewind(script); + + return sampCnt; +} + +void SetModelSetInfo(char *baseDir, char *hmmExt, char *macExt, MSILink msi, int epochIdx) { + char buf[MAXSTRLEN]; + int i; + MILink mmf; + + /* baseDir */ + msi->baseDir = NULL; + if (baseDir != NULL) { + msi->baseDir = CopyString(&gcheap, baseDir); + } + /* hmmExt */ + msi->hmmExt = NULL; + if (hmmExt != NULL) { + msi->hmmExt = CopyString(&gcheap, hmmExt); + } + /* macExt */ + msi->macExt = NULL; + if (macExt != NULL) { + msi->macExt = CopyString(&gcheap, macExt); + } + /* set macro paths */ + msi->macFN = NULL; + if (epochIdx <= 0) { /* only in the first invoke */ + msi->macCnt = macroCnt; + if (msi->macCnt > 0) { + msi->macFN = (char **) New(&gcheap, sizeof(char *) * msi->macCnt); + macroFN = (char **) New(&gcheap, sizeof(char *) * macroCnt); + macroCnt = 0; + for (i = 0, mmf = hset.mmfNames; mmf != NULL; ++i, mmf = mmf->next) { + /* store initial macro names */ + msi->macFN[i] = CopyString(&gcheap, mmf->fName); + /* exclude UPDATE, LEARNRATE, and SQUAREGRAD */ + NameOf(mmf->fName, buf); + if (strcmp(buf, fnUpdate) != 0 && strcmp(buf, fncurNegLR) != 0 && strcmp(buf, fnSquareGrad) != 0) { + macroFN[macroCnt] = CopyString(&gcheap, buf); + ++macroCnt; + } + } + } + } + else { + msi->macCnt = macroCnt; + if (optHasSSG) + ++msi->macCnt; + if (optHasNLR) + ++msi->macCnt; + if (optHasMMT) + ++msi->macCnt; + if (msi->macCnt > 0) { + msi->macFN = (char **) New(&gcheap, sizeof(char *) * msi->macCnt); + for (i = 0; i < macroCnt; ++i) { + MakeFN(macroFN[i], baseDir, macExt, buf); + msi->macFN[i] = CopyString(&gcheap, buf); + } + if (optHasSSG) { + MakeFN(fnSquareGrad, baseDir, macExt, buf); + msi->macFN[i++] = CopyString(&gcheap, buf); + } + if (optHasNLR) { + MakeFN(fncurNegLR, baseDir, macExt, buf); + msi->macFN[i++] = CopyString(&gcheap, buf); + } + if (optHasMMT) { + MakeFN(fnUpdate, baseDir, macExt, buf); + msi->macFN[i++] = CopyString(&gcheap, buf); + } + } + } + msi->next = NULL; + msi->prev = NULL; + msi->epochIdx = epochIdx; + msi->updtIdx = updateIndex; +} + +void AppendModelSetInfo(MSILink newMSI) { + tailMSI->next = newMSI; + newMSI->prev = tailMSI; + tailMSI = tailMSI->next; +} + +void PopModelSetInfo() { + if (tailMSI->baseDir != NULL) { + Dispose(&gcheap, tailMSI->baseDir); + } + if (tailMSI->hmmExt != NULL) { + Dispose(&gcheap, tailMSI->hmmExt); + } + if (tailMSI->macExt != NULL) { + Dispose(&gcheap, tailMSI->macExt); + } + tailMSI = tailMSI->prev; + Dispose(&gcheap, tailMSI->next); +} + +void CheckFitMaxNorm(ANNSet *annSet) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + Boolean fitMaxNorm = TRUE; + + /* proceed each ANNDef */ + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 2; i >= 0; --i) { + layerElem = annDef->layerList[i]; + /* if no parameter to update in this layer */ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(4301, "CheckFitMaxNorm: Not Implemented yet"); break; + case CONVOLUTIONLAK: HError(4301, "CheckFitMaxNorm: Not Implemented yet"); break; + case PERCEPTRONLAK: fitMaxNorm &= IsLinearInvariant(layerElem->actfunKind); break; + case SUBSAMPLINGLAK: HError(4301, "CheckFitMaxNorm: Not Implemented yet"); break; + default: + HError(4399, "CheckFitMaxNorm: Unknown layer type"); + } + } + /* fetch next ANNDef */ + curAI = curAI->prev; + } + + if (optWeightL2Norm == TRUE && fitMaxNorm == FALSE) + HError(-4324, "CheckFitMaxNorm: Max norm does not fit this model, suggest to turn off"); +} + + +void Initialise(void) { + Boolean eSep; + /*int s, tSampCntTr, tSampCntHV;*/ + int s; + VisitKind visitKindTr=GetDefaultVisitKind(); + short swidth[SMAX]; + + /* initialise epcBaseDir */ + if (epcBaseDir == NULL) { + epcBaseDir = newDir; + } + /* initialise the MSI list */ + SetModelSetInfo(hmmDir, hmmExt, NULL, &inputMSI, 0); + headMSI = &inputMSI; + tailMSI = &inputMSI; + + /* initialise the memory heaps */ + CreateHeap(&cacheHeap, "cache heap", CHEAP, 1, 0, 100000000, ULONG_MAX); + CreateHeap(&transHeap, "transcription heap", MSTAK, 1, 0, 8000, 80000); + CreateHeap(&latHeap, "lattice heap", MSTAK, 1, 1.0, 50000, 500000); + CreateHeap(&accHeap, "acc heap", MSTAK, 1, 1.0, 50000, 500000); + + /* load HMMs and HMMSet related global variables */ + if (trace & T_TOP) { + printf("Reading ANN models...\n"); + fflush(stdout); + } + if (hmmListFn != NULL && MakeHMMSet(&hset, hmmListFn) < SUCCESS) + HError(4300, "Initialise: MakeHMMSet failed"); + if (LoadHMMSet(&hset, hmmDir, hmmExt) < SUCCESS) + HError(4300, "Initialise: LoadHMMSet failed"); + if (hset.annSet == NULL) + HError(4300, "Initialise: No ANN model available"); + /* init train struct */ + InitTrainInfo(&hset, optHasLabMat, optHasNLR, optHasSSG, TRUE); + InitErrMix(&hset); + /* setup the mappings */ + if (optMapTarget) { + SetupStateInfoList(&hset); + if (SetupTargetMapList(&hset, mappingFn, 0) < SUCCESS) + HError(4300, "Initialise: Failed to load the target mapping file"); + InitMapStruct(&hset); + recVecMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + /*ClearMappedTargetCounters(hset.annSet);*/ + } + CreateTmpNMat(hset.hmem); + + SetStreamWidths(hset.pkind, hset.vecSize, hset.swidth, &eSep); + SetANNUpdateFlag(&hset); + SetNMatUpdateFlag(&hset); + SetNVecUpdateFlag(&hset); + if (trace & T_TOP) { + printf("ANN model structure:\n"); + ShowANNSet(&hset); + fflush(stdout); + } + SetupNMatRPLInfo(&hset); + SetupNVecRPLInfo(&hset); + /* for training set */ + obs = MakeObservation(&gcheap, hset.swidth, hset.pkind, FALSE, eSep); + scriptTr = GetTrainScript(&scriptCntTr); + tSampCntTr = GetScpSampCnt(scriptTr); + AccAllCacheSamples(tSampCntTr); + if (trace & T_TOP) + printf("%d utterances (%d samples) in the training set\n", scriptCntTr, tSampCntTr); + if (scriptHV != NULL) { + tSampCntHV = GetScpSampCnt(scriptHV); + if (trace & T_TOP) + printf("%d utterances (%d samples) in the validation set\n", scriptCntHV, tSampCntHV); + AccAllCacheSamples(tSampCntHV); + } + + /* initialise adaptation */ + if (xfInfo.inSpkrPat == NULL) + xfInfo.inSpkrPat = xfInfo.outSpkrPat; + if (xfInfo.paSpkrPat == NULL) + xfInfo.paSpkrPat = xfInfo.outSpkrPat; + + /* initialise labels */ + if (labelKind != NULLLK) { + labelInfo = (LabelInfo *) New(&gcheap, sizeof(LabelInfo)); + memset(labelInfo, 0, sizeof(LabelInfo)); + labelInfo->labelKind = labelKind; + if ((labelKind & FEALK) != 0) { + SetStreamWidths(flabPK, vecSizeFLab, swidth, &eSep); + obsFLab = MakeObservation(&gcheap, swidth, flabPK, FALSE, eSep); + if (scriptTr != NULL) { + if (scriptFLabTr == NULL) + HError(4315, "HNTrainSGD: -s expected when -l = FEATURE"); + if (scriptCntTr != scriptCntFLabTr) + HError(4325, "HNTrainSGD: Inconsistent utterance number between -S and -s"); + tSampCntFLabTr = GetScpSampCnt(scriptFLabTr); + if (tSampCntTr != tSampCntFLabTr) + HError(4325, "HNTrainSGD: Inconsistent total sample number between -S and -s"); + } + if (scriptHV != NULL) { + if (scriptFLabHV == NULL) + HError(4315, "HNTrainSGD: -n expected when -l = FEATURE and -N given"); + if (scriptCntHV != scriptCntFLabHV) + HError(4325, "HNTrainSGD: Inconsistent utterance number between -N and -n"); + tSampCntFLabHV = GetScpSampCnt(scriptFLabHV); + if (tSampCntHV != tSampCntFLabHV) + HError(4325, "HNTrainSGD: Inconsistent total sample number between -N and -n"); + } + labelInfo->obsFLab = &obsFLab; + } + if ((labelKind & LABLK) != 0) { + labelInfo->labFileMask = labFileMask; + labelInfo->labDir = labDir; + labelInfo->labExt = labExt; + } + if ((labelKind & LATLK) != 0) { + /* The actual dict is not needed, only the structure; this relates to HNet and reading lattices. */ + InitVocab(&vocab); + labelInfo->latFileMask = latFileMask; + labelInfo->latMaskNum = latMask_Num; + labelInfo->numLatDir = numLatDir; + labelInfo->nNumLats = nNumLats; + labelInfo->numLatSubDirPat = numLatSubDirPat; + labelInfo->latMaskDen = latMask_Den; + labelInfo->denLatDir = denLatDir; + labelInfo->nDenLats = nDenLats; + labelInfo->denLatSubDirPat = denLatSubDirPat; + labelInfo->latExt = latExt; + labelInfo->vocab = (Ptr) &vocab; + labelInfo->useLLF = useLLF; + probScale = GetProbScale(); + labelInfo->incNumInDen = optIncNumInDen; + } + labelInfo->uFlags = uFlags; + } + recVec = CreateIntVec(&gcheap, GetNBatchSamples()); + recVecLLH = CreateIntVec(&gcheap, GetNBatchSamples()); + + /* initialise the cache structures */ + /*obs = MakeObservation(&gcheap, hset.swidth, hset.pkind, FALSE, eSep); + scriptTr = GetTrainScript(&scriptCntTr); + tSampCntTr = GetScpSampCnt(scriptTr); + if (trace & T_TOP) { + printf("%d utterances (%d samples) in the training set\n", scriptCntTr, tSampCntTr); + }*/ + labelInfo->scpFLab = scriptFLabTr; + for (s = 1; s <= hset.swidth[0]; ++s) { + /*AccAllCacheSamples(tSampCntTr);*/ + visitKindTr = GetDefaultVisitKind(); + labelInfo->dimFLab = swidth[s]; + cacheTr[s] = CreateCache(&cacheHeap, scriptTr, scriptCntTr, &hset, &obs, s, GetDefaultNCacheSamples(), visitKindTr, &xfInfo, labelInfo, TRUE); + } + if (scriptHV != NULL) { + /*tSampCntHV = GetScpSampCnt(scriptHV); + if (trace & T_TOP) { + printf("%d utterances (%d samples) in the validation set\n", scriptCntHV, tSampCntHV); + }*/ + labelInfo->uFlags = labelInfo->uFlags & (~UPTARGETPEN); + labelInfo->uFlags = labelInfo->uFlags & (~UPTRANS); /* cz277 - trans */ + labelInfo->scpFLab = scriptFLabHV; + for (s = 1; s <= hset.swidth[0]; ++s) { + /*AccAllCacheSamples(tSampCntHV);*/ + /* cz277 - semi */ + if (visitKindTr == PLUTTVK || visitKindTr == PLNONEVK || visitKindTr == PLUTTFRMVK) + visitKindHV = PLNONEVK; + labelInfo->dimFLab = swidth[s]; + cacheHV[s] = CreateCache(&cacheHeap, scriptHV, scriptCntHV, (Ptr) &hset, &obs, s, GetDefaultNCacheSamples(), visitKindHV, &xfInfo, labelInfo, TRUE); + } + } + /* set need2Unload flag */ + SetNeed2UnloadFlag(); + /* cz277 - trans */ + /* initialise Acc structures for TransP update */ + if ((uFlags & UPTRANS) != 0) { + switch (objfunKind) { + case XENTOF: + case MMSEOF: + case MLOF: + NumAccs = 1; + break; + case MMIOF: + NumAccs = 2; + break; + case SMBROF: + case MPEOF: + case MWEOF: + NumAccs = 3; + break; + default: + HError(4399, "Initialise: Unkown objective function for transition probability update"); + } + AttachAccsParallel(&hset, &accHeap, uFlags, NumAccs); + ZeroAccsParallel(&hset, uFlags, NumAccs); + } + + if ((labelKind & LATLK) != 0) { + InitialiseFBInfo(&fbInfo, &hset, cacheTr[1]->labelInfo->uFlags, FALSE); + for (s = 1; s <= hset.swidth[0]; ++s) { + fbInfo.llhMat[s] = hset.annSet->llhMat[s]; + fbInfo.occMat[s] = hset.annSet->outLayers[s]->yFeaMats[1]; /* cz277 - many */ + } + fbInfo.FSmoothH = FSmoothH; + /* cz277 - frame rejection */ + for (s = 1; s <= hset.swidth[0]; ++s) { + if ((labelKind & LABLK) == 0) { /* ref target comes from comparing the num occs */ + fbInfo.refVec[s] = CreateIntVec(&latHeap, GetNBatchSamples()); + fbInfo.findRef = TRUE; + } + else { /* ref target comes from hard labels */ + fbInfo.refVec[s] = cacheTr[s]->labVec; + fbInfo.findRef = FALSE; + } + fbInfo.occVec[s] = CreateDVector(&latHeap, GetNBatchSamples()); + } + } + /* set update flags */ + /*SetANNUpdateFlag(&hset); + SetNMatUpdateFlag(&hset); + SetNVecUpdateFlag(&hset);*/ + if (optWeightL2Norm == TRUE) + CheckFitMaxNorm(hset.annSet); +} + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void ClearGradProbe(ANNSet *annSet) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + memset(layerElem->wghtGradInfoVec + 1, 0, DVectorSize(layerElem->wghtGradInfoVec) * sizeof(double)); + memset(layerElem->biasGradInfoVec + 1, 0, DVectorSize(layerElem->biasGradInfoVec) * sizeof(double)); + layerElem->maxWghtGrad = -1.0E30; + layerElem->minWghtGrad = 1.0E30; + layerElem->meanWghtGrad = 0.0; + layerElem->maxBiasGrad = -1.0E30; + layerElem->minBiasGrad = 1.0E30; + layerElem->meanBiasGrad = 0.0; + } + curAI = curAI->prev; + } +} +#endif + +/* cz277 - gradprobe */ +#ifdef GRADPROBE +void ShowGradProbe(ANNSet *annSet, int batCnt) { + int i, j, k, size; + AILink curAI; + ADLink annDef; + LELink layerElem; + double totalWght, totalBias; + + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + totalWght = layerElem->nodeNum * layerElem->inputDim; + totalWght *= batCnt; + totalBias = layerElem->nodeNum; + totalBias *= batCnt; + printf("Gradients of Layer %d:\n", i + 1); + size = DVectorSize(layerElem->wghtGradInfoVec); + printf("\tWeights:\n"); + printf("\t\tmaxWghtGrad = %e\n", layerElem->maxWghtGrad); + printf("\t\tminWghtGrad = %e\n", layerElem->minWghtGrad); + printf("\t\tmeanWghtGrad = %e\n", layerElem->meanWghtGrad / totalWght); + printf("\t\tValue Buckets:\n"); + for (j = 1; j <= size; ++j) { + k = (j - 1 - size / 2) * PROBERESOLUTE; + if (layerElem->wghtGradInfoVec[j] != 0) + printf("\t\t\t%d ~ %d ==> %f%% [%e]\n", k, k + PROBERESOLUTE, 100.0 * layerElem->wghtGradInfoVec[j] / totalWght, layerElem->wghtGradInfoVec[j]); + } + size = DVectorSize(layerElem->biasGradInfoVec); + printf("\tBiases:\n"); + printf("\t\tmaxBiasGrad = %e\n", layerElem->maxBiasGrad); + printf("\t\tminBiasGrad = %e\n", layerElem->minBiasGrad); + printf("\t\tmeanBiasGrad = %e\n", layerElem->meanBiasGrad / totalWght); + printf("\t\tValue Buckets:\n"); + for (j = 1; j <= size; ++j) { + k = (j - 1 - size / 2) * PROBERESOLUTE; + if (layerElem->biasGradInfoVec[j] != 0) + printf("\t\t\t%d ~ %d ==> %f%% [%e]\n", k, k + PROBERESOLUTE, 100.0 * layerElem->biasGradInfoVec[j] / totalBias, layerElem->biasGradInfoVec[j]); + } + printf("\n\n"); + } + curAI = curAI->prev; + } +} +#endif + +/* cz277 - gradlim */ +float GetCurClipScalingFactor(int layerIdx, float scale) { + return (float) pow(2.0, scale * layerIdx); +} + + +void NMatBundleSGDUpdate(NMatBundle *bundle, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int nrows, ncols, batchIndex; + + if (bundle == NULL) + HError(4390, "NMatBundleSGDUpdate: NULL bundle is given"); + if (bundle->kind != SIBK) + HError(4391, "NMatBundleSGDUpdate: Only SI bundle kind is allowed"); + batchIndex = GetGlobalBatchIndex(); + if (bundle->batchIndex != batchIndex - 1 && bundle->batchIndex != batchIndex) + HError(4392, "NMatBundleSGDUpdate: Wrong bundle batch index"); + if (bundle->batchIndex == batchIndex) + return; + ++bundle->batchIndex; + + nrows = (int) bundle->variables->rowNum; + ncols = (int) bundle->variables->colNum; + /* gradient clipping */ + if (gradClip > 0.0) + ClipNMatrixVals(bundle->gradients, nrows, ncols, gradClip, (-1.0) * gradClip, bundle->gradients); + /* gradient l2 norm */ + if (gradL2Scale != 0.0) { + gradL2Scale *= ncols; + CalNMatrixL2NormByRow(bundle->gradients, GetTmpNVec()); + ScaleNVector(1.0 / fabs(gradL2Scale), bundle->gradients->rowNum, GetTmpNVec()); + if (gradL2Scale > 0.0) + ClipNVectorVals(GetTmpNVec(), bundle->gradients->rowNum, FLT_MAX, 1.0, GetTmpNVec()); + DivideNMatrixByRow(bundle->gradients, GetTmpNVec(), bundle->gradients); + } + /* weight decay */ + if (weightDecay != 0.0) + AddScaledNMatrix(bundle->variables, nrows, ncols, weightDecay, bundle->gradients); + /* learning rates */ + if (learnRate != 0.0) + ScaleNMatrix(learnRate, nrows, ncols, bundle->gradients); + else if (bundle->neglearnrates != NULL) + MulNMatrix(bundle->gradients, bundle->neglearnrates, nrows, ncols, bundle->gradients); + /* update clipping */ + if (updtClip > 0.0) + ClipNMatrixVals(bundle->gradients, nrows, ncols, updtClip, (-1.0) * updtClip, bundle->gradients); + /* update l2 norm */ + if (updtL2Scale != 0.0) { + updtL2Scale *= ncols; + CalNMatrixL2NormByRow(bundle->gradients, GetTmpNVec()); + ScaleNVector(1.0 / fabs(updtL2Scale), bundle->gradients->rowNum, GetTmpNVec()); + if (updtL2Scale > 0.0) + ClipNVectorVals(GetTmpNVec(), bundle->gradients->rowNum, FLT_MAX, 1.0, GetTmpNVec()); + DivideNMatrixByRow(bundle->gradients, GetTmpNVec(), bundle->gradients); + } + /* momentum */ + ScaledSelfAddNMatrix(bundle->gradients, nrows, ncols, momentum, bundle->updates); + /* update the parameters */ + AddNMatrix(bundle->updates, nrows, ncols, bundle->variables); + /* parameter max norm */ + if (optWeightL2Norm == TRUE) { + CalNMatrixL2NormByRow(bundle->variables, GetTmpNVec()); + ScaleNVector(1.0 / weightL2NormBound, bundle->variables->rowNum, GetTmpNVec()); + ClipNVectorVals(GetTmpNVec(), bundle->variables->rowNum, FLT_MAX, 1.0, GetTmpNVec()); + DivideNMatrixByRow(bundle->variables, GetTmpNVec(), bundle->variables); + } +} + +void NVecBundleSGDUpdate(NVecBundle *bundle, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int nlen; + int batchIndex; + float scale; + + if (bundle == NULL) + HError(4390, "NVecBundleSGDUpdate: NULL bundle is given"); + if (bundle->kind != SIBK) + HError(4391, "NVecBundleSGDUpdate: Only SI bundle kind is allowed"); + batchIndex = GetGlobalBatchIndex(); + if (bundle->batchIndex != batchIndex - 1 && bundle->batchIndex != batchIndex) + HError(4392, "NVecBundleSGDUpdate: Wrong bundle batch index"); + if (bundle->batchIndex == batchIndex) + return; + ++bundle->batchIndex; + + nlen = (int) bundle->variables->vecLen; + /* gradient clipping */ + if (gradClip > 0.0) + ClipNVectorVals(bundle->gradients, nlen, gradClip, (-1.0) * gradClip, bundle->gradients); + /* gradient l2 norm */ + if (gradL2Scale != 0.0) { + gradL2Scale *= nlen; + CalNVectorL2Norm(bundle->gradients, &scale); + scale = fabs(gradL2Scale) / scale; + if (gradL2Scale > 0.0 && scale > 1.0) + scale = 1.0; + ScaleNVector(scale, nlen, bundle->gradients); + } + /* weight decay */ + if (weightDecay != 0.0) + AddScaledNVector(bundle->variables, nlen, weightDecay, bundle->gradients); + /* learning rates */ + if (learnRate != 0.0) + ScaleNVector(learnRate, nlen, bundle->gradients); + else if (bundle->neglearnrates != NULL) + MulNVector(bundle->gradients, bundle->neglearnrates, nlen, bundle->gradients); + /* update clipping */ + if (updtClip > 0.0) + ClipNVectorVals(bundle->gradients, nlen, updtClip, (-1.0) * updtClip, bundle->gradients); + /* update l2 norm */ + if (updtL2Scale != 0.0) { + updtL2Scale *= nlen; + CalNVectorL2Norm(bundle->gradients, &scale); + scale = fabs(updtL2Scale) / scale; + if (updtL2Scale > 0.0 && scale > 1.0) + scale = 1.0; + ScaleNVector(scale, nlen, bundle->gradients); + } + /* momentum */ + ScaledSelfAddNVector(bundle->gradients, nlen, momentum, bundle->updates); + /* update the parameters */ + AddNVector(bundle->updates, nlen, bundle->variables); + +} + +void SGDUpdateActivationOnlyLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + HError(4301, " SGDUpdateActivationOnlyLayer: Function not implemented"); +} + +void SGDUpdateConvolutionLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + HError(4301, "SGDUpdateConvolutionLayer: Function not implemented"); +} + +void SGDUpdatePerceptronLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int i; + + if (layerElem->layerKind != PERCEPTRONLAK) + HError(4392, "SGDUpdatePerceptronLayer: Function only applicable to PERCEPTRON layer"); + + if (layerElem->wghtMat->updateflag == TRUE) + NMatBundleSGDUpdate(layerElem->wghtMat, learnRate, momentum, weightDecay, gradClip, updtClip, gradL2Scale, updtL2Scale); + /*NMatBundleSGDUpdate(layerElem->wghtMat, learnRate, momentum, weightDecay, optWghtUpdtClip, wghtUpdtPosClip / clipScale, wghtUpdtNegClip / clipScale);*/ + if (layerElem->biasVec->updateflag == TRUE) + NVecBundleSGDUpdate(layerElem->biasVec, learnRate, momentum, weightDecay, gradClip, updtClip, gradL2Scale, updtL2Scale); + /*NVecBundleSGDUpdate(layerElem->biasVec, learnRate, momentum, weightDecay, optBiasUpdtClip, biasUpdtPosClip / clipScale, biasUpdtNegClip / clipScale); */ + if (layerElem->actfunVecs != NULL) + for (i = 1; i <= layerElem->actfunParmNum; ++i) + if (layerElem->actfunVecs[i]->updateflag == TRUE) + NVecBundleSGDUpdate(layerElem->actfunVecs[i], learnRate, momentum, weightDecay, gradClip, updtClip, gradL2Scale, updtL2Scale); + /*NVecBundleSGDUpdate(layerElem->actfunVecs[i], learnRate, momentum, weightDecay, optActfunUpdtClip, actfunUpdtPosClip / clipScale, actfunUpdtNegClip / clipScale);*/ + +} + +void SGDUpdateSubsamplingLayer(LELink layerElem, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + HError(4301, "SGDUpdateSubsamplingLayer: Function not implemented"); +} + +void SGDUpdateANNSet(ANNSet *annSet, float scale, float learnRate, float momentum, float weightDecay, float gradClip, float updtClip, float gradL2Scale, float updtL2Scale) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + float curGradClip, curUpdtClip; + + /* do the sample number based normalisations */ + if (optNormWeightDecay == TRUE) + weightDecay *= scale; + if (optNormMomentum == TRUE) + momentum *= scale; + if (optNormGradientClip == TRUE) + gradClip *= scale; + if (optNormUpdateClip == TRUE) + updtClip *= scale; + if (optNormL2GradientScale == TRUE) + gradL2Scale *= scale; + if (optNormL2UpdateScale == TRUE) + updtL2Scale *= scale; + /* proceed each ANNDef */ + curAI = annSet->defsTail; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = annDef->layerNum - 1; i >= 0; --i) { + layerElem = annDef->layerList[i]; + curGradClip = gradClip; + curUpdtClip = updtClip; + if (clipScaleFactor != 0.0) { + curGradClip /= GetCurClipScalingFactor(i, clipScaleFactor); + curUpdtClip /= GetCurClipScalingFactor(i, clipScaleFactor); + } + /* if no parameter to update in this layer */ + /*if (layerElem->trainInfo->updateFlag == 0) + continue;*/ + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: + SGDUpdateActivationOnlyLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + case CONVOLUTIONLAK: + SGDUpdateConvolutionLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + case PERCEPTRONLAK: + SGDUpdatePerceptronLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + case SUBSAMPLINGLAK: + SGDUpdateSubsamplingLayer(layerElem, learnRate, momentum, weightDecay, curGradClip, curUpdtClip, gradL2Scale, updtL2Scale); + break; + default: + HError(4399, "SGDUpdateANNSet: Unknown layer type"); + } + } + /* fetch next ANNDef */ + curAI = curAI->prev; + } + + ++updateIndex; +} + +ReturnStatus ReloadHMMSet(MSILink MSIPtr) { + int i, mappedTargetNum=-1; + + if (trace & T_TOP) { + if (MSIPtr->epochIdx <= 0) + printf("\tReload initial HMMSet\n"); + else + printf("\tReload HMMSet generated by epoch %d\n", MSIPtr->epochIdx); + } + if (optMapTarget) + mappedTargetNum = hset.annSet->mapStruct->mappedTargetNum; + /* reset current hset */ + ResetHMMSet(&hset); + ResetHeap(&modelHeap); + /* reset update index*/ + updateIndex = MSIPtr->updtIdx; + /* reset batch size (actually to regist a tmpNMat for FindMaxElement) */ + SetNBatchSamples(GetNBatchSamples()); + /* create HMMSet */ + CreateHMMSet(&hset, &modelHeap, TRUE); + /* AddMMFs */ + for (i = 0; i < MSIPtr->macCnt; ++i) + AddMMF(&hset, MSIPtr->macFN[i]); + /* Load HMM list */ + if (hmmListFn != NULL && MakeHMMSet(&hset, hmmListFn) < SUCCESS) + HError(4300, "ReloadHMMSet: MakeHMMSet failed"); + if (LoadHMMSet(&hset, MSIPtr->baseDir, MSIPtr->hmmExt) < SUCCESS) + HError(4300, "ReloadHMMSet: LoadHMMSet failed"); + if (hset.annSet == NULL) + HError(4300, "ReloadHMMSet: No ANN model available"); + /* init train struct */ + InitTrainInfo(&hset, optHasLabMat, optHasNLR, optHasSSG, TRUE); + InitErrMix(&hset); + if (optMapTarget) { + SetupStateInfoList(&hset); + if (SetupTargetMapList(&hset, mappingFn, mappedTargetNum) < SUCCESS) + HError(4300, "Initialise: Failed to load the target mapping file"); + InitMapStruct(&hset); + recVecMapSum = CreateIntVec(&gcheap, GetNBatchSamples()); + } + CreateTmpNMat(hset.hmem); + SetANNUpdateFlag(&hset); /* cz277 - 150811 */ + /*SetLayerUpdateFlag(&hset);*/ /* cz277 - 150811 */ + /*SetActFunUpdateFlag(&hset);*/ /* cz277 - 150811 */ + SetNMatUpdateFlag(&hset); /* cz277 - 151020 */ + SetNVecUpdateFlag(&hset); /* cz277 - 151020 */ + /* cz277 - 1015 */ + CheckANNBatchIndex(hset.annSet, 0); + /* cz277 - batch sync */ + SetFeaMixBatchIndex(hset.annSet, GetGlobalBatchIndex()); + SetNBundleBatchIndex(hset.annSet, GetGlobalBatchIndex()); + + /* update cache associated configs */ + for (i = 1; i <= hset.swidth[0]; ++i) + ResetCacheHMMSetCfg(cacheTr[i], &hset); + if (scriptHV != NULL) + for (i = 1; i <= hset.swidth[0]; ++i) + ResetCacheHMMSetCfg(cacheHV[i], &hset); + + return SUCCESS; +} + +void UpdateTransValues(int stateNum, float *acc1, float *acc2, float *newWeights, float *oldWeights, float C) { + int i, iter; + float sum=0.0, objVal[3]={0.0,0.0,0.0}, accVal, maxF; + Vector fValues = CreateVector(&gstack, stateNum); + + if (C == 0) { + return; + } + for (i = 1; i <= stateNum; ++i) { + sum += acc1[i]; + } + if (sum < 1.0) { + return; + } + for (iter = 1; iter <= 100; ++iter) { /* 100 is copied from HMMIRest */ + /* calculate objective */ + objVal[2] = objVal[1]; + objVal[1] = objVal[0]; + objVal[0] = 0.0; + for (i = 1; i <= stateNum; ++i) { + if (newWeights[i] > 0.0) { + if (acc2 != NULL) + accVal = acc2[i]; + else + accVal = 0.0; + objVal[0] = acc1[i] * log(newWeights[i]) - accVal / C * exp(log(newWeights[i] / oldWeights[i]) * C) + objVal[0]; + } + } + if (objVal[0] < objVal[1] && objVal[0] < objVal[2] && objVal[2] != 0 && fabs(objVal[0] - objVal[1]) > fabs(objVal[0]) * 0.0001) + HError(-1, "UpdateTransValues: Objective not increasing, %e < %e < %e", objVal[0], objVal[1], objVal[2]); + /* find max f_m */ + maxF = 0.0; + for (i = 1; i <= stateNum; ++i) { + if (newWeights[i] > 0.0) { + if (acc2 != NULL) + accVal = acc2[i]; + else + accVal = 0.0; + fValues[i] = accVal / oldWeights[i] * exp(log(newWeights[i] / oldWeights[i]) * (C - 1)); + if (C > 1.0) + fValues[i] *= C; + maxF = MAX(maxF, fValues[i]); + /*if (fValues[i] > maxF) + maxF = fValues[i];*/ + } + } + sum = 0.0; + for (i = 1; i <= stateNum; ++i) { + if (newWeights[i] > 0.0) { + newWeights[i] = newWeights[i] * (maxF - fValues[i]) + acc1[i]; + sum += newWeights[i]; + } + } + for (i = 1; i <= stateNum; ++i) + newWeights[i] /= sum; + } + Dispose(&gstack, fValues); +} + +/* cz277 - trans */ +void UpdateHMMTransLab(int px, HLink hmm) { + int i, j, N; + float x, occi, sum; + TrAcc *ta; + + ta = (TrAcc *) GetHook(hmm->transP); + if (ta == NULL) + return; + N = hmm->numStates; + for (i = 1; i < N; ++i) { + occi = ta->occ[i]; + sum = 0.0; + if (occi > 0.0) { + for (j = 2; j <= N; ++j) { + x = ta->tran[i][j] / occi; + hmm->transP[i][j] = x; + sum += x; + } + } + else { + HError(-1, "UpdateHMMTransLab: Model %d[%s]: no transition out of state %d", px, HMMPhysName(&hset, hmm), i); + } + for (j = 2; j <= N; ++j) { + x = hmm->transP[i][j] / sum; + if (x < MINLARG) { + hmm->transP[i][j] = LZERO; + } + else { + hmm->transP[i][j] = log(x); + } + } + } + SetHook(hmm->transP, NULL); +} + +void UpdateHMMTransLat(int px, HLink hmm) { + int i, j, stateNum=hmm->numStates; + TrAcc *trAcc1, *trAcc2, *trAcc3; + Vector newWeights = CreateVector(&gstack, stateNum); + Vector oldWeights = CreateVector(&gstack, stateNum); + float transP, occ; + + trAcc1 = GetHook(hmm->transP); + trAcc2 = (NumAccs == 1? NULL: trAcc1 + 1); + trAcc3 = ((NumAccs == 3 && optHasISmooth)? trAcc1 + 2: NULL); + if (trAcc1 == NULL) { + return; + } + + for (i = 1; i < stateNum; ++i) { + if (trAcc3 != NULL) + occ = trAcc3->occ[i]; + else + occ = trAcc1->occ[i]; + if (occ > MinOccTrans) { + for (j = 1; j <= stateNum; ++j) { + if (hmm->transP[i][j] > MINEARG) + transP = exp(hmm->transP[i][j]); + else + transP = 0.0; + newWeights[j] = transP; + oldWeights[j] = transP; + } + if ((uFlags & UPTRANS) && (trAcc2 != NULL)) + for (j = 1; j < stateNum; ++j) + trAcc2->tran[i][j] = 0.0; + UpdateTransValues(stateNum, trAcc1->tran[i], trAcc2? trAcc2->tran[i]: NULL, newWeights, oldWeights, CTrans); + for (j = 1; j < stateNum; ++j) + if (newWeights[i] == 0 && oldWeights[i] != 0) + HError(-1, "UpdateTrans: Transitions going to zero: advise setting e.g. ISMOOTHTAUT = 10"); + for (j = 1; j <= stateNum; ++j) { + if (newWeights[j] > 0.0) + hmm->transP[i][j] = log(newWeights[j]); + else + hmm->transP[i][j] = LZERO; + } + } + } + SetHook(hmm->transP, NULL); + /*Dispose(&gstack, oldWeights);*/ + Dispose(&gstack, newWeights); +} + +/* cz277 - trans */ +void UpdateAllTrans(void) { + HMMScanState hss; + int px; + + px = 1; + NewHMMScan(&hset, &hss); + do { + switch (updtKind) { + case BATLEVEL: + UpdateHMMTransLab(px++, hss.hmm); + break; + case UTTLEVEL: + UpdateHMMTransLat(px++, hss.hmm); + break; + default: + HError(-1, "UpdateAllTrans: Unknown update mode for transitions"); + } + } while (GoNextHMM(&hss)); + EndHMMScan(&hss); + + /* reset the accs */ + ResetHeap(&accHeap); + AttachAccsParallel(&hset, &accHeap, uFlags, NumAccs); + ZeroAccsParallel(&hset, uFlags, NumAccs); +} + +Boolean TermLRSchdOrNot(int curEpochNum) { + float floatVal; + float curPosLR = (-1.0) * curNegLR; + + if (curEpochNum == 0) { + return TRUE; + } + if (minEpochNum > 0 && curEpochNum < minEpochNum) { + return TRUE; + } + switch (schdKind) { + case ADAGRADSK: + if (maxEpochNum > 0 && curEpochNum >= maxEpochNum) { + return FALSE; + } + break; + case EXPSK: + if ((maxEpochNum > 0 && curEpochNum >= maxEpochNum) || (curPosLR < minLR)) { + return FALSE; + } + break; + case LISTSK: + if (curEpochNum >= maxEpochNum) { + return FALSE; + } + break; + case NEWBOBSK: + if (maxEpochNum > 0 && curEpochNum >= maxEpochNum) { + if (trace & T_SCH) + printf("NewBob: Stop since the maximum allowed epoch number is reached\n"); + + return FALSE; + } + if (curPosLR < minLR) { + if (trace & T_SCH) + printf("NewBob: Stop since the criterion value change is smaller than the allowed minimum\n"); + + return FALSE; + } + floatVal = tailMSI->crtVal - tailMSI->prev->crtVal; + if (NewBob_Status == 1 && floatVal < NewBob_Stop) { + if (trace & T_SCH) + printf("NewBob: Stop since the criterion value change is smaller than the stopping threshold\n"); + + /* need to reload previous model */ + if (floatVal < 0.0) { + /* have model to detach */ + if (tailMSI != &inputMSI) { + PopModelSetInfo(); + } + ReloadHMMSet(tailMSI); + } + return FALSE; + } + break; + default: + HError(4399, "Unknown learning rate scheduler"); + } + + return TRUE; +} + +void SaveLRSchd(char *fname) { + FILE *fp; + + if ((fp = fopen(fname, "w")) == NULL) + HError(4311, "SaveLRSchd: Fail to save the auxiliary file"); + + switch(schdKind) { + case NEWBOBSK: + /* NEWBOB */ + fprintf(fp, " "); + fprintf(fp, "NEWBOB"); + fprintf(fp, "\n"); + /* ? */ + fprintf(fp, " "); + switch (NewBob_Crt) { + case ACCNBC: + fprintf(fp, "ACC"); + case MAPACCNBC: + fprintf(fp, "MAPACC"); + case LLHVALNBC: + fprintf(fp, "LLHVAL"); + case MAPLLHVALNBC: + fprintf(fp, "MAPLLHVAL"); + default: + HError(4399, "SaveLRSchd: Unsupported NewBob criterion"); + } + fprintf(fp, "\n"); + /* INITIAL or RAMPING */ + fprintf(fp, " "); + if (NewBob_Status == 0) + fprintf(fp, "INITIAL"); + else if (NewBob_Status == 1) + fprintf(fp, "RAMPING"); + else + fprintf(fp, "UNKNOWN"); + fprintf(fp, "\n"); + /* x.y */ + fprintf(fp, " "); + fprintf(fp, "%e", NewBob_RampStart); + fprintf(fp, "\n"); + /* x.y */ + fprintf(fp, " "); + fprintf(fp, "%e", NewBob_Stop); + fprintf(fp, "\n"); + default: + HError(4399, "SaveLRSchd: Unsupported learning rate scheduler for the auxiliary file"); + } + /* x.y */ + fprintf(fp, " "); + fprintf(fp, "%e", (-1.0) * curNegLR); + fprintf(fp, "\n"); + /* */ + fprintf(fp, " "); + fprintf(fp, "%d", epochOff); + fprintf(fp, "\n"); +} + +void LoadLRSchd(char *fname) { + Source auxSrc; + char buf[MAXSTRLEN]; + float floatVal; + + if (InitSource(fname, &auxSrc, NoFilter) < SUCCESS) + HError(4310, "LoadLRSchd: cannot open the auxiliary file"); + + SkipComment(&auxSrc); + /* ? */ + ReadString(&auxSrc, buf); + if (strcmp(buf, "") == 0) { + if (strcmp(buf, "NEWBOB") == 0) + schdKind = NEWBOBSK; + else + HError(4326, "LoadLRSchd: Unsupported learning rate kind"); + /* proceed each learning rate related options */ + while (ReadString(&auxSrc, buf)) { + /* ? */ + if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) { + ReadString(&auxSrc, buf); + if (strcmp(buf, "ACC") == 0) + NewBob_Crt = ACCNBC; + else if (strcmp(buf, "MAPACC") == 0) + NewBob_Crt = MAPACCNBC; + else if (strcmp(buf, "LLHVAL") == 0) { + NewBob_Crt = LLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else if (strcmp(buf, "MAPLLHVAL") == 0) { + NewBob_Crt = MAPLLHVALNBC; + showObjFunKind = showObjFunKind | MLOF; + } + else + HError(4326, "LoadLRSchd: Unknown criterion for NewBob"); + } + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) { /* ? */ + ReadString(&auxSrc, buf); + if (strcmp(buf, "INITIAL") == 0) + NewBob_Status = 0; + else if (strcmp(buf, "RAMPING") == 0) + NewBob_Status = 1; + else + HError(4326, "LoadLRSchd: Unknown NewBob scheduler status"); + } + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) /* x.y */ + ReadFloat(&auxSrc, &NewBob_DecayFactor, 1, FALSE); + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) /* x.y */ + ReadFloat(&auxSrc, &NewBob_RampStart, 1, FALSE); + else if (schdKind == NEWBOBSK && strcmp(buf, "") == 0) /* x.y */ + ReadFloat(&auxSrc, &NewBob_Stop, 1, FALSE); + else if (strcmp(buf, "") == 0) { /* x.y */ + ReadFloat(&auxSrc, &floatVal, 1, FALSE); + curNegLR = (-1.0) * floatVal; + } + else if (strcmp(buf, "") == 0) /* x */ + ReadInt(&auxSrc, &epochOff, 1, FALSE); + else + HError(4326, "LoadLRSchd: Unknown option in the auxiliary file"); + } + } + + CloseSource(&auxSrc); +} + +void UpdateLRSchdAdaGrad(ANNSet *annSet, float eta, int K) { + int i, j; + LELink layerElem; + AILink annInfo; + ADLink annDef; + + /* reset all processed fields */ + ResetAllBundleProcessedFields("UpdateLRSchdAdaGrad", annSet); + + /* initialise ANN info */ + annInfo = annSet->defsHead; + while (annInfo != NULL) { + /* get current ANN def */ + annDef = annInfo->annDef; + /* proceed each layer */ + for (i = 0; i < annDef->layerNum; ++i) { + /* get current layer */ + layerElem = annDef->layerList[i]; + switch (layerElem->layerKind) { + case ACTIVATIONONLYLAK: HError(4301, "UpdateLRSchdAdaGrad: Function not implemented"); break; + case CONVOLUTIONLAK: HError(4301, "UpdateLRSchdAdaGrad: Function not implemented"); break; + case PERCEPTRONLAK: + if (layerElem->wghtMat->processed == FALSE) { + CompAdaGradNMatrix(eta, K, layerElem->wghtMat->sumsquaredgrad, layerElem->wghtMat->neglearnrates); + layerElem->wghtMat->processed = TRUE; + } + if (layerElem->biasVec->processed == FALSE) { + CompAdaGradNVector(eta, K, layerElem->biasVec->sumsquaredgrad, layerElem->biasVec->neglearnrates); + layerElem->biasVec->processed = TRUE; + } + if (layerElem->actfunVecs != NULL) + for (j = 1; j <= layerElem->actfunParmNum; ++j) + if (layerElem->actfunVecs[j]->processed == FALSE) { + CompAdaGradNVector(eta, K, layerElem->actfunVecs[j]->sumsquaredgrad, layerElem->actfunVecs[j]->neglearnrates); + layerElem->actfunVecs[j]->processed = TRUE; + } + break; + case SUBSAMPLINGLAK: HError(4301, "UpdateLRSchdAdaGrad: Function not implemented"); break; + default: + HError(4399, "UpdateLRSchdAdaGrad: Unknown layer kind"); + } + } + /* fetch next ANN info */ + annInfo = annInfo->next; + } +} + +/* per update */ +float UpdateLRSchdPerU(int curEpochNum, int updtSamp) { + float retNegLR = 0.0; + + switch (schdKind) { + case ADAGRADSK: + retNegLR = (-1.0) * initLR; + if (optNormLearnRate) + retNegLR /= updtSamp; + UpdateLRSchdAdaGrad(hset.annSet, retNegLR, AdaGrad_K); + retNegLR = 0.0; + break; + case EXPSK: + if (Exp_Gamma <= 0.0) { + if (minEpochNum <= 0) + Exp_Gamma = 2.0 * minEpochNum * tSampCntTr; + else if (maxEpochNum <= 0) + Exp_Gamma = 2.0 * maxEpochNum * tSampCntTr; + else + Exp_Gamma = 2.0 * Exp_Base * tSampCntTr; + printf("UpdateLRSchdPerU: GAMMA for exponential learning rate scheduler not set, reset to %e\n", Exp_Gamma); + } + retNegLR = (-1.0) * Exp_TrSampIdx / Exp_Gamma; + curNegLR = (-1.0) * initLR * pow(Exp_Base, retNegLR); + retNegLR = curNegLR; + if (optNormLearnRate) + retNegLR /= updtSamp; + Exp_TrSampIdx += updtSamp; + break; + case LISTSK: + case NEWBOBSK: + retNegLR = curNegLR; + if (optNormLearnRate) + retNegLR /= updtSamp; + break; + default: + break; + } + return retNegLR; +} + +/* per epoch */ +void UpdateLRSchdPerE(int curEpochNum) { + float floatVal; + + switch (schdKind) { + case LISTSK: + curNegLR = (-1.0) * List_LRs[curEpochNum + 1]; + break; + case NEWBOBSK: + if (curEpochNum == 0) + curNegLR = (-1.0) * initLR; + else if (NewBob_Status == 0) { /* in initia status */ + if (tailMSI->prev != NULL) + floatVal = tailMSI->crtVal - tailMSI->prev->crtVal; + else + floatVal = 1.0; + if (floatVal < NewBob_RampStart) { + if (curEpochNum < minEpochNum) { /* to restore the model and reduce the learning rate by half */ + if (trace & T_SCH) + printf("NewBob: Val diff %e < RAMPSTART = %e, learning rate *= DECAYFACTOR = %e\n", floatVal, NewBob_RampStart, NewBob_DecayFactor); + curNegLR *= NewBob_DecayFactor; + } + else { /* go into the ramping status */ + if (trace & T_SCH) + printf("NewBob: Val diff %e < RAMPSTART = %e and cur epoch %d is > min %d, learning rate *= DECAYFACTOR = %e, start ramping\n", floatVal, NewBob_RampStart, curEpochNum, minEpochNum, NewBob_DecayFactor); + curNegLR *= NewBob_DecayFactor; + NewBob_Status = 1; + } + /* need to reload the model? */ + if (floatVal < 0.0) { + /* have model to detach */ + if (tailMSI != &inputMSI) + PopModelSetInfo(); + if (trace & T_SCH) + printf("NewBob: Value diff %e < 0, restore previous model set\n", floatVal); + ReloadHMMSet(tailMSI); + } + } + } + else if (NewBob_Status == 1) /* in ramping status */ + curNegLR *= NewBob_DecayFactor; + break; + default: + break; + } +} + +float GetConfParmPerEpoch(int curEpochNum, Vector confVec) { + float value = 0.0; + + if (confVec != NULL) { + if (curEpochNum > VectorSize(confVec) - 1) + value = confVec[VectorSize(confVec)]; + else + value = confVec[curEpochNum + 1]; + } + + return value; +} + +void ComputeLogLikelihoods(int nLoaded) { + int i, S; + LELink layerElem; + + S = hset.swidth[0]; + /* synchronise the data */ + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + /* download likelihoods */ + if ((optTrainMode == SEQTM) || (showObjFunKind & MLOF)) { + ApplyLogTrans(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, hset.annSet->llhMat[i]); + AddNVectorTargetPen(hset.annSet->llhMat[i], hset.annSet->penVec[i], nLoaded, hset.annSet->llhMat[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->llhMat[i]); +#endif + } + /* download likelihoods (for mapped targets) */ + if (optMapTarget) { + UpdateOutMatMapSum(hset.annSet, nLoaded, i); + /* convert posteriors to llr */ + if (showObjFunKind & MLOF) { + ApplyLogTrans(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, hset.annSet->mapStruct->llhMatMapSum[i]); + AddNVectorTargetPen(hset.annSet->mapStruct->llhMatMapSum[i], hset.annSet->mapStruct->penVecMapSum[i], nLoaded, hset.annSet->mapStruct->llhMatMapSum[i]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->llhMatMapSum[i]); +#endif + } +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->outMatMapSum[i]); +#endif + } + /* download posteriors */ +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->yFeaMats[1]); +#endif + } +} + +void AccCriteria(CriteriaInfo *criteria, DataCache **cache, int nLoaded, Boolean accBatch, Boolean accUtter) { + int i, S; + LELink layerElem; + + S = hset.swidth[0]; + /* accumulate for the criteria */ + if (accBatch == TRUE) { + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + FindMaxElement(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, recVec); + if (showObjFunKind & MLOF) + FindMaxElement(hset.annSet->llhMat[i], nLoaded, layerElem->nodeNum, recVecLLH); + if (optMapTarget) { + FindMaxElement(hset.annSet->mapStruct->outMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecMapSum); + if (showObjFunKind & MLOF) + FindMaxElement(hset.annSet->mapStruct->llhMatMapSum[i], nLoaded, hset.annSet->mapStruct->mappedTargetNum, recVecLLHMapSum); + UpdateLabMatMapSum(hset.annSet, nLoaded, i); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->mapStruct->labMatMapSum[i]); +#endif + } + AccCriteriaPerB(cache[i], nLoaded, &criteria[i]); + } + } + /* accumulate at utterance level */ + if (accUtter == TRUE) + for (i = 1; i <= S; ++i) + AccCriteriaPerU(cache[i], nLoaded, &criteria[i]); +} + +Boolean BatchLevelUpdateOrNot(VisitKind visitKind, Boolean finish, int batchCnt, int nLoaded) { + + if (finish == TRUE) + return TRUE; + + if (batchCnt % numPerUpdt == 0) { + switch (visitKind) { + case PLNONEVK: + case PLUTTVK: + case PLUTTFRMVK: + if (batchCnt >= bgWaitNBatchPL && nLoaded >= edAccBatchLenPL) + return TRUE; + return FALSE; + default: + break; + } + return TRUE; + } + return FALSE; +} + +void BatchLevelTrainProcess(int curEpochNum) { + int i, S, nLoaded; + int updtCnt, sampCnt, batchCnt, tSampCnt, uttCnt; + Boolean finish = FALSE; + Boolean accGrad; + CriteriaInfo criteria[SMAX]; + float retNegLR; + /* cz277 - mmt */ + float scale, momentum, weightDecay, posGradClip, negGradClip; + + S = hset.swidth[0]; + updtCnt = 0; + sampCnt = 0; + tSampCnt = 0; + /* process the first batch */ + batchCnt = 0; + uttCnt = -1; + + /* initialise the criteriaInfo */ + memset(&criteria, 0, sizeof(CriteriaInfo) * SMAX); + SetGlobalBatchIndex(0); + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, 0); + SetFeaMixBatchIndex(hset.annSet, 0); + /* initialise the cache until all data finished */ + for (i = 1; i <= S; ++i) + InitCache(cacheTr[i]); + + /* cz277 - gradprobe */ +#ifdef GRADPROBE + ClearGradProbe(hset.annSet); +#endif + weightDecay = GetConfParmPerEpoch(curEpochNum, List_WeightDecay); + momentum = GetConfParmPerEpoch(curEpochNum, List_MMTs); + accGrad = FALSE; + while (!finish) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheTr[i], &nLoaded, &uttCnt); + UnloadCacheData(cacheTr[i]); + LoadCacheData(cacheTr[i]); + } + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); /* do forwarding */ + ComputeLogLikelihoods(nLoaded); /* compute sequence level criteria */ + AccCriteria(criteria, cacheTr, nLoaded, TRUE, FALSE); /* accumulate classification criteria */ + BackwardProp(objfunKind, hset.annSet, nLoaded, accGrad); /* do back-propagation */ + accGrad = TRUE; + /* accumulate the statistics */ + batchCnt += 1; + sampCnt += nLoaded; + tSampCnt += nLoaded; + if (BatchLevelUpdateOrNot(cacheTr[1]->visitKind, finish, batchCnt, nLoaded)) { + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, GetGlobalBatchIndex() - 1); + retNegLR = UpdateLRSchdPerU(curEpochNum, sampCnt); + NormBackwardPropGradients(hset.annSet, 1.0); + scale = ((float) sampCnt) / (GetNBatchSamples() * numPerUpdt); + SGDUpdateANNSet(hset.annSet, scale, retNegLR, momentum, weightDecay, gradientClip, updateClip, gradientL2Scale, updateL2Scale); + accGrad = FALSE; + /* update updtCnt */ + ++updtCnt; + sampCnt = 0; + } + } + /* cz277 - trans */ + /* update the transition probabilities */ + if ((uFlags & UPTRANS) != 0) + UpdateAllTrans(); + + /* update the target penalties */ + if ((curEpochNum == 0) && ((uFlags & UPTARGETPEN) != 0) && (hset.hsKind == HYBRIDHS)) + for (i = 1; i <= S; ++i) + UpdateTargetLogPrior(cacheTr[i], logObsvPrior); + /* show criteria */ + for (i = 1; i <= S; ++i) { + if (S > 1) + printf("\t\tStream %d: ", i); + PrintCriteria(&criteria[i], "Train"); + } + /* cz277 - gradprobe */ +#ifdef GRADPROBE + ShowGradProbe(hset.annSet, batchCnt); +#endif + + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheTr[i]); + /* output the timming */ + printf("\t\tBatch count = %d, Update count = %d\n", batchCnt, updtCnt); +} + +void ForceNMatrixValueByRow(NMatrix *mat, int rowIdx, float val) { + int colNum = mat->colNum; + +#ifdef CUDA + SetNSegmentCUDA(val, &mat->devElems[rowIdx * colNum], colNum); +#else + SetNSegmentCPU(val, &mat->matElems[rowIdx * colNum], colNum); +#endif +} + +/* cz277 - frame rejection */ +void MMIFrameRejection(ANNSet *annSet, int batLen, FBLatInfo *fbInfoPtr, CriteriaInfo *crtList) { + double denOcc; + int i, s; + /*IntVec labVec;*/ + CriteriaInfo *criteria; + + if (optFrameReject == FALSE) { + return; + } + if (objfunKind != MMIOF) { + HError(-4324, "MMIFrameRejection: Frame rejection is only valid for MMI training"); + return; + } + /*if ((labelKind & LABLK) == 0) { + HError(9999, "MMIFrameRejection: Hard labels are needed for frame rejection"); + return; + }*/ + if (optHasFSmooth) { + HError(-4324, "MMIFrameRejection: Frame rejection conflicts with F-smoothing"); + return; + } + + for (s = 1; s <= fbInfoPtr->S; ++s) { + /*labVec = fbInfoPtr->refVec[s];*/ + criteria = &crtList[s]; + for (i = 0; i < batLen; ++i) { + denOcc = fbInfoPtr->occVec[s][i + 1]; + if (denOcc < minOccFrameReject) { + ForceNMatrixValueByRow(hset.annSet->outLayers[s]->yFeaMats[1], i, 0.0); /* cz277 - many */ + ++criteria->MMIFRAcc; + } + } + } +} + +Boolean LatticeBasedSequenceTraining(UttElem *uttElem, int nLoaded, Boolean hasFSmooth, Boolean hasFrameReject, CriteriaInfo *criteria) { + int i, S; + LELink layerElem; + Boolean sentFail = FALSE; + Lattice *MPECorrLat = NULL; + + S = hset.swidth[0]; + /* reset the occ matrices */ + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + if (hasFSmooth == TRUE) { + ComputeBackwardPropOutActivation(objfunFSmooth, nLoaded, layerElem, 1); + ScaleNMatrix(1.0 - FSmoothH, nLoaded, layerElem->nodeNum, layerElem->yFeaMats[1]); + } + else + SetNMatrix(0.0, layerElem->yFeaMats[1], nLoaded); +#ifdef CUDA + SyncNMatrixDev2Host(layerElem->yFeaMats[1]); +#endif + } + if (procNumLats) { + LoadNumLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, NULL)) + FBLatSecondPass(&fbInfo, corrIdx, 999); + else + sentFail = TRUE; + } + if (procDenLats && (!sentFail)) { + switch (objfunKind) { + case SMBROF: + case MPEOF: + case MWEOF: + MPECorrLat = uttElem->numLats[0]; + break; + default: + MPECorrLat = NULL; + } + LoadDenLatsFromUttElem(uttElem, &fbInfo); + if (FBLatFirstPass(&fbInfo, UNDEFF, uttElem->uttName, NULL, MPECorrLat)) + FBLatSecondPass(&fbInfo, recogIdx1, recogIdx2); + else + sentFail = TRUE; + } +#ifdef CUDA + for (i = 1; i <= S; ++i) { + layerElem = hset.annSet->outLayers[i]; + SyncNMatrixHost2Dev(layerElem->yFeaMats[1]); + } +#endif + if (hasFrameReject == TRUE) + MMIFrameRejection(hset.annSet, nLoaded, &fbInfo, criteria); + + return !sentFail; +} + +void UtterLevelTrainProcess(int curEpochNum) { + int i, S, nLoaded; + int updtCnt, sampCnt, batchCnt, tSampCnt, tUttCnt, uttCnt, updtUttCnt; + Boolean finish = FALSE; + Boolean accGrad, sentSuccess; + CriteriaInfo criteria[SMAX]; + float retNegLR; + Boolean skipOneUtt = FALSE; + UttElem *uttElem; + /* cz277 - mmt */ + float scale, momentum, weightDecay, posGradClip, negGradClip; + + S = hset.swidth[0]; + updtCnt = 0; + tSampCnt = 0; + /* process the first batch */ + batchCnt = 0; + tUttCnt = 0; + SetGlobalBatchIndex(0); + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, 0); + SetFeaMixBatchIndex(hset.annSet, 0); + /* initialise the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheTr[i]); + + /* initialise the criteriaInfo */ + memset(&criteria, 0, sizeof(CriteriaInfo) * SMAX); + weightDecay = GetConfParmPerEpoch(curEpochNum, List_WeightDecay); + momentum = GetConfParmPerEpoch(curEpochNum, List_MMTs); + /* process until all data are finished */ + while (!finish) { + /* set uttCnt */ + accGrad = FALSE; + sampCnt = 0; + updtUttCnt = 0; + while ((!finish) && (updtUttCnt < numPerUpdt)) { + uttCnt = 1; + uttElem = GetCurUttElem(cacheTr[1]); /* cz277 - xform */ + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* get current utterance info */ + if (optTrainMode == SEQTM) { + if (uttElem->uttLen > GetNBatchSamples()) { + HError(-4327, "UtterLevelTrainProcess: %s has %d samples > batch size %d", uttElem->uttName, uttElem->uttLen, GetNBatchSamples()); + skipOneUtt = TRUE; + } + else + skipOneUtt = FALSE; + /* init fbInfo */ + fbInfo.T = uttElem->uttLen; + fbInfo.uFlags = cacheTr[1]->labelInfo->uFlags; + if (optFrameReject) + fbInfo.rejFrame = optFrameReject; + LoadXFormsFromUttElem(uttElem, &fbInfo); + } + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheTr[i], &nLoaded, &uttCnt); + LoadCacheData(cacheTr[i]); + } + /* whether skip this utterance or not */ + if (skipOneUtt) + continue; + /* forward propagation */ + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); + sentSuccess = TRUE; + /* synchronise the data */ + ComputeLogLikelihoods(nLoaded); + /* for sequence training */ + if (optTrainMode == SEQTM) + sentSuccess = LatticeBasedSequenceTraining(uttElem, nLoaded, optHasFSmooth, optFrameReject, criteria); + /* accumulate for the criteria */ + AccCriteria(criteria, cacheTr, nLoaded, optTrainMode == FRAMETM, (optTrainMode == SEQTM) && sentSuccess); + /* backward propagation */ + if (sentSuccess) { + BackwardProp(objfunKind, hset.annSet, nLoaded, accGrad); + } else { + SetFeaMixBatchIndex(hset.annSet, GetGlobalBatchIndex());/*cz277-batch sync*/ + } + /* update statistics */ + accGrad = TRUE; + batchCnt += 1; + sampCnt += nLoaded; + } + ++updtUttCnt; + /* update cache status */ + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheTr[i]); + } + tUttCnt += updtUttCnt; + /* do the update */ + if (sampCnt != 0) { + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, GetGlobalBatchIndex() - 1); + /* update the learning rates*/ + retNegLR = UpdateLRSchdPerU(curEpochNum, sampCnt); + /* update the parameters */ + NormBackwardPropGradients(hset.annSet, 1.0); + scale = ((float) sampCnt) / (GetNBatchSamples() * numPerUpdt); + SGDUpdateANNSet(hset.annSet, scale, retNegLR, momentum, weightDecay, gradientClip, updateClip, gradientL2Scale, updateL2Scale); + /* update updtCnt */ + ++updtCnt; + } + /* update statistics */ + tSampCnt += sampCnt; + } + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* update the target penalties */ + if (((uFlags & UPTARGETPEN) != 0) && (hset.hsKind == HYBRIDHS)) + for (i = 1; i <= S; ++i) + UpdateTargetLogPrior(cacheTr[i], logObsvPrior); + /* update the transition probabilities */ + if ((uFlags & UPTRANS) != 0) + UpdateAllTrans(); + /* show criteria */ + for (i = 1; i <= S; ++i) { + if (S > 1) + printf("\t\tStream %d: ", i); + PrintCriteria(&criteria[i], "Train"); + } + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheTr[i]); + /* output the timming */ + printf("\t\tTotal batch count = %d, update count = %d\n", batchCnt, updtCnt); +} + +void UtterLevelHVProcess(void) { + int i, S, nLoaded; + int sampCnt, batchCnt, tSampCnt, tUttCnt, uttCnt; + Boolean finish = FALSE, sentSuccess; + CriteriaInfo criteria[SMAX]; + Boolean skipOneUtt = FALSE; + UttElem *uttElem; + + S = hset.swidth[0]; + batchCnt = 0; + tSampCnt = 0; + tUttCnt = 0; + SetGlobalBatchIndex(0); + /* cz277 - batch sync */ + SetNBundleBatchIndex(hset.annSet, 0); + SetFeaMixBatchIndex(hset.annSet, 0); + /* initialise the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheHV[i]); + + /* initialise the criteriaInfo */ + memset(&criteria, 0, sizeof(CriteriaInfo) * SMAX); + /* process until all data are finished */ + while (!finish) { + sampCnt = 0; + uttCnt = 1; + uttElem = GetCurUttElem(cacheHV[1]); + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* get current utterance info */ + if (optTrainMode == SEQTM) { + if (uttElem->uttLen > GetNBatchSamples()) { + HError(-4327, "UtterLevelHVProcess: %s has %d samples > batch size %d", uttElem->uttLen, uttElem->uttName, GetNBatchSamples()); + skipOneUtt = TRUE; + } + else + skipOneUtt = FALSE; + /* init fbInfo */ + fbInfo.T = uttElem->uttLen; + fbInfo.uFlags = cacheHV[1]->labelInfo->uFlags; + fbInfo.rejFrame = FALSE; + LoadXFormsFromUttElem(uttElem, &fbInfo); + } + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheHV[i], &nLoaded, &uttCnt); + LoadCacheData(cacheHV[i]); + } + /* whether skip this utterance or not */ + if (skipOneUtt) + continue; + ForwardProp(hset.annSet, nLoaded, cacheHV[1]->CMDVecPL); /* forward propagation */ + sentSuccess = TRUE; + ComputeLogLikelihoods(nLoaded); /* compute sequence level show criteria */ + /* for sequence training */ + if (optTrainMode == SEQTM) + sentSuccess = LatticeBasedSequenceTraining(uttElem, nLoaded, FALSE, FALSE, criteria); + /* accumulate the statistics for criteria */ + AccCriteria(criteria, cacheHV, nLoaded, optTrainMode == FRAMETM, (optTrainMode == SEQTM) && sentSuccess); + batchCnt += 1; + sampCnt += nLoaded; + } + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheHV[i]); + /* update the statistics */ + tUttCnt += 1; + tSampCnt += sampCnt; + } + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* show criteria */ + for (i = 1; i <= S; ++i) { + if (S > 1) + printf("\t\tStream %d: ", i); + PrintCriteria(&criteria[i], "Validation"); + } + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheHV[i]); + /* output statistics */ + printf("\t\tBatch count = %d\n", batchCnt); +} + +void SafetyCheck() { + if (optTrainMode == SEQTM) { + if (hset.hsKind != HYBRIDHS) + HError(4324, "SafetyCheck: Unsupported HMM set kind for sequence training"); + } else if (optTrainMode == FRAMETM) { + if (hset.hsKind != HYBRIDHS && hset.hsKind != ANNHS) + HError(4324, "SafetyCheck: Unsupported HMM set kind for frame level training"); + } +} + +/* cz277 - pact */ +void SetStaticUpdtCode(int statusCode) { + int i; + AILink curAI; + ADLink annDef; + LELink layerElem; + + printf("SetStaticUpdtCode: Executing oper code %d\n", statusCode); + curAI = hset.annSet->defsHead; + while (curAI != NULL) { + annDef = curAI->annDef; + for (i = 0; i < annDef->layerNum; ++i) { + layerElem = annDef->layerList[i]; + layerElem->status = statusCode; + } + curAI = curAI->next; + } +} + +/* cz277 - pact */ +void UtterLevelStaticUpdate(int curUpdtCode) { + int i, S, uttCnt, nLoaded; + Boolean finish = FALSE; + UttElem *uttElem; + + S = hset.swidth[0]; + /* initialise the cache */ + for (i = 1; i <= S; ++i) + InitCache(cacheTr[i]); + /* set status code */ + SetStaticUpdtCode(curUpdtCode); + /* process until all data are finished */ + while (!finish) { + uttCnt = 1; + uttElem = GetCurUttElem(cacheTr[1]); + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* process current utterance */ + while ((!finish) && uttCnt > 0) { + /* load data */ + for (i = 1; i <= S; ++i) { + finish |= FillAllInpBatch(cacheTr[i], &nLoaded, &uttCnt); + LoadCacheData(cacheTr[i]); + } + /* forward propagation */ + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); + /*switch (curUpdtCode) { + case 0: + case 3: + case 4: + ForwardPropBlank(hset.annSet, nLoaded); + break; + case 1: + case 2: + ForwardProp(hset.annSet, nLoaded, cacheTr[1]->CMDVecPL); + break; + default: + break; + }*/ + } + for (i = 1; i <= S; ++i) + UnloadCacheData(cacheTr[i]); + } + /* reset replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); + /* update the target penalties */ + if ((curUpdtCode == 0) && ((uFlags & UPTARGETPEN) != 0) && (hset.hsKind == HYBRIDHS)) + for (i = 1; i <= S; ++i) + UpdateTargetLogPrior(cacheTr[i], logObsvPrior); + /* reset all cache */ + for (i = 1; i <= S; ++i) + ResetCache(cacheTr[i]); +} + +void SaveModelSet(char *baseDir) { + char buf[MAXSTRLEN]; + + /* saves current model */ + SaveHMMSet(&hset, baseDir, newExt, NULL, saveBinary); + /* saves update */ + if (optHasMMT) { + MakeFN(fnUpdate, baseDir, NULL, buf); + SaveANNUpdate(&hset, buf, saveBinary); + } + /* saves nlr */ + if (optHasNLR) { + MakeFN(fncurNegLR, baseDir, NULL, buf); + SaveANNNegLR(&hset, buf, saveBinary); + } + /* saves ssg */ + if (optHasSSG) { + MakeFN(fnSquareGrad, baseDir, NULL, buf); + SaveANNStore(&hset, buf, saveBinary); + } + /* saves schd */ + if (optSavSchd) { + MakeFN(fnLRSchd, baseDir, NULL, buf); + SaveLRSchd(buf); + } +} + +int main(int argc, char *argv[]) { + int i, curEpochNum, curEpochIdx; + char *str; + char buf[MAXSTRLEN], curEpcDir[MAXSTRLEN], absEpcDir[MAXSTRLEN]; + clock_t stClock, edClock; + MSILink MSIPtr; + + if (InitShell(argc, argv, hntrainsgd_version, hntrainsgd_vc_id) < SUCCESS) + HError(4300, "HNTrainSGD: InitShell failed"); + InitMem(); + InitMath(); + InitSigP(); + InitWave(); + InitLabel(); + InitAudio(); +#ifdef CUDA + InitCUDA(); +#endif + InitANNet(); + InitModel(); + if (InitParm() < SUCCESS) + HError(4300, "HNTrainSGD: InitParm failed"); + InitUtil(); + InitFBLat(); + InitExactMPE(); + InitArc(); + InitDict(); + InitLat(); + InitNet(); + InitAdapt(); + InitXFInfo(&xfInfo); + InitNCache(); + if (!InfoPrinted() && NumArgs() == 0) + ReportUsage(); + if (NumArgs() == 0) + Exit(0); + + CreateHeap(&modelHeap, "model heap", MSTAK, 1, 0.0, 300000000, ULONG_MAX); + CreateHMMSet(&hset, &modelHeap, TRUE); + SetConfParms(); + /* load each command */ + while (NextArg() == SWITCHARG) { + str = GetSwtArg(); + /* set each option */ + switch (str[0]) { + case 'a': + xfInfo.useInXForm = TRUE; + break; + case 'c': + initialHV = TRUE; + break; + case 'd': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM definition directory expected"); + hmmDir = GetStrArg(); + break; + case 'e': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Directory to store temporary HMM definitions expected"); + if (strcmp(str, "e") == 0) + epcDirPref = GetStrArg(); + else if (strcmp(str, "eb") == 0) + epcBaseDir = GetStrArg(); + break; + /*case 'f': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Auxiliary file path expected"); + if (strcmp(str, "fl") == 0) + LoadLRSchd(GetStrArg()); + else + HError(4319, "HNTrainSGD: Unknown label kind"); + break;*/ + case 'h': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Speaker name pattern expected"); + xfInfo.outSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) { + xfInfo.inSpkrPat = GetStrArg(); + if (NextArg() == STRINGARG) + xfInfo.paSpkrPat = GetStrArg(); + } + if (NextArg() != SWITCHARG) + HError(4319, "HNTrainSGD: Cannot have -h as the last option"); + break; + case 'j': + if (strcmp(str, "ju") == 0) + fnUpdate = GetStrArg(); + else if (strcmp(str, "jl") == 0) + fncurNegLR = GetStrArg(); + else if (strcmp(str, "jg") == 0) + fnSquareGrad = GetStrArg(); + else if (strcmp(str, "js") == 0) + fnLRSchd = GetStrArg(); + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break; + case 'k': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Auxiliary file path expected"); + if (strcmp(str, "kl") == 0) + LoadLRSchd(GetStrArg()); + else + HError(4319, "HNTrainSGD: Unknown training status kind"); + break; + case 'l': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label kind expected"); + str = GetStrArg(); + if (strcasecmp(str, "LAB") == 0 || strcasecmp(str, "LABEL") == 0) { + labelKind = LABLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "LAT") == 0 || strcasecmp(str, "LATTICE") == 0) { + labelKind = LATLK; + optHasLabMat = FALSE; + } + else if (strcasecmp(str, "FEA") == 0 || strcasecmp(str, "FEATURE") == 0) { + labelKind = FEALK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "LABLAT") == 0 || strcasecmp(str, "LATLAB") == 0) { + labelKind = LABLK | LATLK; + optHasLabMat = TRUE; + } + else if (strcasecmp(str, "NULL") == 0) { + labelKind = NULLLK; + optHasLabMat = FALSE; + } + else + HError(4319, "HNTrainSGD: Unknown label kind"); + break; + case 'm': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Target mapping file path expected"); + optMapTarget = TRUE; + mappingFn = GetStrArg(); + break; + /*case 'n': + if (strcmp(str, "nu") == 0) + fnUpdate = GetStrArg(); + else if (strcmp(str, "nl") == 0) + fncurNegLR = GetStrArg(); + else if (strcmp(str, "ng") == 0) + fnSquareGrad = GetStrArg(); + else if (strcmp(str, "ns") == 0) + fnLRSchd = GetStrArg(); + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break;*/ + case 'n': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Feature type label for validation set file name expected"); + InitScriptFile(GetStrArg(), &scriptFLabHV, &scriptCntFLabHV); + break; + case 'o': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM file extension expected"); + newExt = GetStrArg(); + break; + case 'q': + if (strcmp(str, "q") == 0) + numLatDir[nNumLats++] = GetStrArg(); + else if (strcmp(str, "qp") == 0) { + strcpy(numLatSubDirPat, GetStrArg()); + if (strchr(numLatSubDirPat, '%') == NULL) + HError(4319, "HNTrainSGD: Numerator lattice path mask invalid"); + } + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break; + case 'r': + if (strcmp(str, "r") == 0) + denLatDir[nDenLats++] = GetStrArg(); + else if (strcmp(str, "rp") == 0) { + strcpy(denLatSubDirPat, GetStrArg()); + if (strchr(denLatSubDirPat, '%') == NULL) + HError(4319, "HNTrainSGD: Denominator lattice path mask invalid"); + } + else + HError(4319, "HNTrainSGD: Unknown option %s", str); + break; + case 's': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Feature type label for training set file name expected"); + InitScriptFile(GetStrArg(), &scriptFLabTr, &scriptCntFLabTr); + break; + case 'u': + optDoStaticUpdt = TRUE; + break; + case 'x': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM file extension expected"); + hmmExt = GetStrArg(); + break; + case 'B': + saveBinary = TRUE; + break; + case 'F': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Data file format expected"); + if ((dff = Str2Format(GetStrArg())) == ALIEN) + HError(4319, "HNTrainSGD: Warnings ALIEN data file format set"); + break; + case 'G': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label file format expected"); + if ((lff = Str2Format(GetStrArg())) == ALIEN) + HError(4319, "HNTrainSGD: Warnings ALIEN label file format set"); + break; + case 'H': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: HMM macro file name expected"); + ++macroCnt; + AddMMF(&hset, GetStrArg()); + break; + case 'I': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: MLF file name expected"); + LoadMasterFile(GetStrArg()); + break; + case 'J': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Input transform directory expected"); + AddInXFormDir(&hset, GetStrArg()); + if (NextArg() == STRINGARG) { + if (xfInfo.inXFormExt == NULL) + xfInfo.inXFormExt = GetStrArg(); + else + HError(4319, "HNTrainSGD: Only one input transform extension may be specified"); + } + if (NextArg() != SWITCHARG) + HError(4319, "HNTrainSGD: Cannot have -J as the last option"); + break; + case 'L': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label file directory expected"); + labDir = GetStrArg(); + break; + case 'M': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Output macro file directory expected"); + newDir = GetStrArg(); + break; + case 'N': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Validation set file name expected"); + InitScriptFile(GetStrArg(), &scriptHV, &scriptCntHV); + break; + case 'Q': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Lattice extension expected"); + latExt = GetStrArg(); + break; + case 'T': + trace = GetChkedInt(0, 0100000, str); + break; + case 'X': + if (NextArg() != STRINGARG) + HError(4319, "HNTrainSGD: Label file extension expected"); + labExt = GetStrArg(); + break; + default: + HError(4319, "HNTrainSGD: Unknown switch %s", str); + } + } + /* load hmmListFn (optional) */ + if (NextArg() == STRINGARG) + hmmListFn = GetStrArg(); + else if (NextArg() != NOARG) + HError(4319, "HNTrainSGD: Only an optional HMM list file is possible at the end of the command line"); + + /* command check */ + if (NumArgs() == 0 && hset.numFiles == 0) + HError(4319, "HNTrainSGD: At least one input should be given"); + +#ifdef CUDA + StartCUDA(); +#endif + /* cz277 - 151020 */ +#ifdef MKL + StartMKL(); +#endif + /* initialise */ + Initialise(); +#ifdef CUDA + ShowGPUMemUsage(); +#endif + /* do safety check */ + SafetyCheck(); + + stClock = 0; + edClock = 0; + curEpochNum = 0; + printf("\n"); + /* cz277 - pact */ + if (optDoStaticUpdt == FALSE) { + /* process the held-out validation set first */ + if (initialHV == TRUE && scriptHV != NULL) { + printf("Init Training ************************\n"); + printf("\tProcessing validation set...\n"); + stClock = clock(); + UtterLevelHVProcess(); + edClock = clock(); + if (trace & T_TIM) + printf("\t\tValidation time cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + tailMSI->crtVal = newMSI_CrtVal; + printf("\n\n"); + } + + /* process training */ + while (TermLRSchdOrNot(curEpochNum)) { + /* compute current epoch index */ + curEpochIdx = epochOff + curEpochNum; + SetEpochIndex(curEpochIdx); + printf("Epoch %d ******************************\n", curEpochIdx); + /* update the learning rate by epoch (4 list and newbob) */ + UpdateLRSchdPerE(curEpochNum); + /* process the train set */ + printf("\tProcessing training set...\n"); + stClock = clock(); + switch (updtKind) { + case BATLEVEL: BatchLevelTrainProcess(curEpochNum); break; + case UTTLEVEL: UtterLevelTrainProcess(curEpochNum); break; + default: + HError(4399, "Unknown update kind"); + } + /* show current learning rate */ + switch (schdKind) { + case LISTSK: + case NEWBOBSK: + if (trace & T_TOP) + printf("\t\tLearning rate = %e\n", (-1.0) * curNegLR); + break; + case ADAGRADSK: + case EXPSK: + break; + } + /* compute the time cost */ + edClock = clock(); + if (trace & T_TIM) + printf("\t\tTraining time cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + /* process held-out set */ + if (scriptHV != NULL) { + printf("\tProcessing validation set...\n"); + stClock = clock(); + UtterLevelHVProcess(); + edClock = clock(); + if (trace & T_TIM) + printf("\t\tValidation time cost = %.2fs\n", (edClock - stClock) / (double) CLOCKS_PER_SEC); + } + /* save the intermediate models */ + if (optSavEpcMod) { + /* generate current epoch directory first */ + sprintf(buf, "%d", curEpochIdx); + strcpy(curEpcDir, epcDirPref); + strcat(curEpcDir, buf); + /* setup the absolute epc directory */ + CatDirs(epcBaseDir, curEpcDir, absEpcDir); + SetupDir(absEpcDir); + /* saves current models */ + SaveModelSet(absEpcDir); + /* attach current MSI */ + MSIPtr = (MSILink) New(&gcheap, sizeof(ModelSetInfo)); + SetModelSetInfo(absEpcDir, hmmExt, NULL, MSIPtr, curEpochIdx); + AppendModelSetInfo(MSIPtr); + /* saves crtVal */ + tailMSI->crtVal = newMSI_CrtVal; + } + /* update curEpochNum */ + ++curEpochNum; + fflush (stdout); + printf("\n\n"); + } + printf("Finish Training ***********************\n"); + /* show statistics */ + if (trace & T_TOP) + printf("\t%d updates processed in total\n\n", updateIndex); + printf("\n\n"); + } + else { + /* cz277 - pact */ + if (scriptHV != NULL) + HError(-4324, "HNTrainSGD: Static update will not use the validation scp"); + if (!(GetDefaultVisitKind() == NONEVK || GetDefaultVisitKind() == UTTVK)) + HError(4324, "HNTrainSGD: Only utterance level cache visiting order is allowed for static update"); + while (curEpochNum <= staticUpdtCode) + UtterLevelStaticUpdate(curEpochNum++); + } + + /* write the output model */ + SaveModelSet(newDir); + /* free ANNSet */ + FreeANNSet(&hset); + for (i = 1; i <= hset.swidth[0]; ++i) + FreeCache(cacheTr[i]); + if (scriptHV != NULL) + for (i = 1; i <= hset.swidth[0]; ++i) + FreeCache(cacheHV[i]); + +#ifdef CUDA + StopCUDA(); +#endif + + Exit(EXIT_STATUS); + return 0; +} + +/* ----------------------------------------------------------- */ +/* END: HNTrainSGD.c */ +/* ----------------------------------------------------------- */ + diff --git a/HTKTools/HParse.c b/HTKTools/HParse.c old mode 100644 new mode 100755 index 1e39150..2f7db97 --- a/HTKTools/HParse.c +++ b/HTKTools/HParse.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HParse.c: HParse based word-network definition */ +/* File: HParse.c HParse based word-network definition */ /* ----------------------------------------------------------- */ -char *hparse_version = "!HVER!HParse: 3.4.1 [CUED 12/03/09]"; +char *hparse_version = "!HVER!HParse: 3.5.0 [CUED 12/10/15]"; char *hparse_vc_id = "$Id: HParse.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* The HParse program reads in a set of HTK HParse rewrite rules @@ -102,6 +118,7 @@ char *hparse_vc_id = "$Id: HParse.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HDict.h" @@ -114,8 +131,9 @@ typedef struct _Node *Link; typedef struct { int nUse; /* num sharing this LinkSet */ - short numLinks; /* number of links in set */ - short maxLinks; /* max number of links */ + /* swapped short to int */ + int numLinks; /* number of links in set */ + int maxLinks; /* max number of links */ Link *links; /* array[1..numLinks]of Link */ Ptr user; /* for attaching user defined data */ } LinkSet; @@ -379,7 +397,7 @@ static void PrModelName(Link p) strcpy(name,"????"); else strcpy(name,p->modelName->name); - printf("%s[%03d] ",name, ((int)p % 4000) / 4 ); + printf("%s[%03ld] ",name, ((long int)p % 4000) / 4 ); } /* PrintLinkSet: print first n slots of given LinkSet to stdout */ @@ -2000,7 +2018,7 @@ void LabelInternal(Link p) } } else if ((ni->nType != wdEnd) && (ni->nType != wdInternal)) - HError(3131,"LabelInternal: incorrect WD_BEGIN/WD_END node connection, node %d is %d",((int)p % 4000) / 4,ni->nType); + HError(3131,"LabelInternal: incorrect WD_BEGIN/WD_END node connection, node %d is %d",((long int)p % 4000) / 4,ni->nType); } /* FindNodeTypes: mark each node as wdInternal or wdExternal */ @@ -2326,4 +2344,4 @@ static void ConvertHParseNetwork(HPNetwork *theNet, char *latFn, char *dictFn) SaveLattice(lat,latFn,format); } -/* ------------------- End of HParse.c --------------------------------- */ +/* -------------------------- End of HParse.c --------------------------- */ diff --git a/HTKTools/HQuant.c b/HTKTools/HQuant.c old mode 100644 new mode 100755 index 5b0b38c..24e61f5 --- a/HTKTools/HQuant.c +++ b/HTKTools/HQuant.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HQuant.c: VQ table generation */ +/* File: HQuant.c VQ table generation */ /* ----------------------------------------------------------- */ -char *hquant_version = "!HVER!HQuant: 3.4.1 [CUED 12/03/09]"; +char *hquant_version = "!HVER!HQuant: 3.5.0 [CUED 12/10/15]"; char *hquant_vc_id = "$Id: HQuant.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* @@ -36,6 +52,7 @@ char *hquant_vc_id = "$Id: HQuant.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" diff --git a/HTKTools/HRest.c b/HTKTools/HRest.c old mode 100644 new mode 100755 index 43c83d3..b3a8e46 --- a/HTKTools/HRest.c +++ b/HTKTools/HRest.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2002 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HRest.c: HMM initialisation program */ +/* File: HRest.c HMM initialisation program */ /* ----------------------------------------------------------- */ -char *hrest_version = "!HVER!HRest: 3.4.1 [CUED 12/03/09]"; +char *hrest_version = "!HVER!HRest: 3.5.0 [CUED 12/10/15]"; char *hrest_vc_id = "$Id: HRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* @@ -71,6 +74,7 @@ char *hrest_vc_id = "$Id: HRest.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -756,13 +760,11 @@ void SetOccr(LogDouble pr, int seg) { int i,t; DVector alpha_i,beta_i; - Vector a_i; LogDouble x; occr[1] = 1.0; for (i=2;itransP[i]; x=LZERO ; for (t=1;t<=T;t++) x=LAdd(x,alpha_i[t]+beta_i[t]); diff --git a/HTKTools/HResults.c b/HTKTools/HResults.c old mode 100644 new mode 100755 index c48fd34..1c3ca2a --- a/HTKTools/HResults.c +++ b/HTKTools/HResults.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HResults.c: gather statistics on results */ +/* File: HResults.c gather statistics on results */ /* ----------------------------------------------------------- */ -char *hresults_version = "!HVER!HResults: 3.4.1 [CUED 12/03/09]"; +char *hresults_version = "!HVER!HResults: 3.5.0 [CUED 12/10/15]"; char *hresults_vc_id = "$Id: HResults.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -359,7 +375,7 @@ void NormaliseName(LabList *ll,int lev) LabId cl,eq,id; LLink l; Equiv *p; - int i,n,len; + int i,n; char buf[256],*ptr; n=CountAuxLabs(ll,lev); @@ -380,7 +396,6 @@ void NormaliseName(LabList *ll,int lev) l = GetAuxLabN(ll,i,lev); id = ((lev==0) ? l->labid : l->auxLab[lev]); strcpy(buf,id->name); - len = strlen(buf); for (ptr=buf;*ptr!=0;ptr++) if (islower((int) *ptr)) break; if (*ptr){ @@ -1143,7 +1158,7 @@ void ReadHMMList(char *fn) ReadWordFromLine(&source,buf); labid=GetLabId(buf,TRUE); names[i]=labid; - labid->aux = (Ptr)i; + labid->aux = (Ptr)(long int)i; } CloseSource(&source); } @@ -1152,7 +1167,7 @@ int Index(LabId labid) { int i; - i=(int)labid->aux; + i=(int)(long int)labid->aux; if (wSpot && i==0) return(0); if (i<1 || i>nLabs || names[i]!=labid) HError(3331,"Index: Label %s not in list[%d of %d]", diff --git a/HTKTools/HSGen.c b/HTKTools/HSGen.c old mode 100644 new mode 100755 index 9d7ed6c..a4384bc --- a/HTKTools/HSGen.c +++ b/HTKTools/HSGen.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSGen: Generate Sentences from a Lattice */ +/* File: HSGen Generate Sentences from a Lattice */ /* ----------------------------------------------------------- */ -char *hsgen_version = "!HVER!HSGen: 3.4.1 [CUED 12/03/09]"; +char *hsgen_version = "!HVER!HSGen: 3.5.0 [CUED 12/10/15]"; char *hsgen_vc_id = "$Id: HSGen.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HShell.h" @@ -31,6 +47,7 @@ char *hsgen_vc_id = "$Id: HSGen.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; #include "HAudio.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HDict.h" #include "HNet.h" diff --git a/HTKTools/HSLab.c b/HTKTools/HSLab.c old mode 100644 new mode 100755 index 3404160..3a72bde --- a/HTKTools/HSLab.c +++ b/HTKTools/HSLab.c @@ -3,36 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSLab.c: The Speech Label Editor */ +/* File: HSLab.c The speech label editor */ /* ----------------------------------------------------------- */ -char *hslab_version = "!HVER!HSLab: 3.4.1 [CUED 12/03/09]"; +char *hslab_version = "!HVER!HSLab: 3.5.0 [CUED 12/10/15]"; char *hslab_vc_id = "$Id: HSLab.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; /* diff --git a/HTKTools/HSmooth.c b/HTKTools/HSmooth.c old mode 100644 new mode 100755 index 1e747af..9d23445 --- a/HTKTools/HSmooth.c +++ b/HTKTools/HSmooth.c @@ -3,23 +3,39 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* developed at: */ +/* */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ +/* */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ +/* */ +/* ----------------------------------------------------------- */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ +/* */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HSmooth.c: Perform Parameter Smoothing on a HMM Set */ +/* File: HSmooth.c perform parameter smoothing on a HMM set */ /* ----------------------------------------------------------- */ -char *hsmooth_version = "!HVER!HSmooth: 3.4.1 [CUED 12/03/09]"; +char *hsmooth_version = "!HVER!HSmooth: 3.5.0 [CUED 12/10/15]"; char *hsmooth_vc_id = "$Id: HSmooth.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $"; @@ -32,6 +48,7 @@ char *hsmooth_vc_id = "$Id: HSmooth.c,v 1.1.1.1 2006/10/11 09:55:01 jal58 Exp $" #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HTrain.h" #include "HUtil.h" @@ -474,7 +491,7 @@ void StatReport(void) px=1; do { hmm = hss.hmm; - PrintStats(f,px,hmm,(int)hmm->hook); + PrintStats(f,px,hmm,(int)(unsigned long int)hmm->hook); px++; } while (GoNextHMM(&hss)); EndHMMScan(&hss); @@ -930,7 +947,7 @@ void UpdateTMVars(void) MixPDF *mpdf; Vector mean; Covariance cov; - Boolean mixFloored,shared; + Boolean shared; for (s=1;s<=nStreams;s++){ vSize = hset.swidth[s]; @@ -944,7 +961,6 @@ void UpdateTMVars(void) ma = (MuAcc *) GetHook(mean); if (va != NULL){ occim = va->occ; - mixFloored = FALSE; if (occim > 0.0){ shared=(GetUse(cov.var)>1 || ma==NULL || ma->occ<=0.0); if ((mpdf->ckind==DIAGC)||(mpdf->ckind==INVDIAGC)) @@ -953,7 +969,6 @@ void UpdateTMVars(void) x = va->cov.var[k]/occim - muDiffk*muDiffk; if (xcov.inv[k][l]/occim - muDiffk*muDiffl; if (k==l && xhook; + n = (int)(unsigned long int)hmm->hook; if (n=minEgs) { diff --git a/HTKTools/HVite.c b/HTKTools/HVite.c old mode 100644 new mode 100755 index 2250711..f917267 --- a/HTKTools/HVite.c +++ b/HTKTools/HVite.c @@ -3,38 +3,48 @@ /* ___ */ /* |_| | |_/ SPEECH */ /* | | | | \ RECOGNITION */ -/* ========= SOFTWARE */ +/* ========= SOFTWARE */ /* */ /* */ /* ----------------------------------------------------------- */ /* developed at: */ /* */ -/* Speech Vision and Robotics group */ -/* Cambridge University Engineering Department */ -/* http://svr-www.eng.cam.ac.uk/ */ +/* Speech Vision and Robotics group */ +/* (now Machine Intelligence Laboratory) */ +/* Cambridge University Engineering Department */ +/* http://mi.eng.cam.ac.uk/ */ /* */ -/* Entropic Cambridge Research Laboratory */ -/* (now part of Microsoft) */ +/* Entropic Cambridge Research Laboratory */ +/* (now part of Microsoft) */ /* */ /* ----------------------------------------------------------- */ -/* Copyright: Microsoft Corporation */ -/* 1995-2000 Redmond, Washington USA */ -/* http://www.microsoft.com */ +/* Copyright: Microsoft Corporation */ +/* 1995-2000 Redmond, Washington USA */ +/* http://www.microsoft.com */ /* */ -/* 2001-2004 Cambridge University */ -/* Engineering Department */ +/* Copyright: Cambridge University */ +/* Engineering Department */ +/* 2001-2015 Cambridge, Cambridgeshire UK */ +/* http://www.eng.cam.ac.uk */ /* */ /* Use of this software is governed by a License Agreement */ /* ** See the file License for the Conditions of Use ** */ /* ** This banner notice must not be removed ** */ /* */ /* ----------------------------------------------------------- */ -/* File: HVite.c: recognise or align file or audio */ +/* File: HVite.c recognise or align file or audio */ /* ----------------------------------------------------------- */ -char *hvite_version = "!HVER!HVite: 3.4.1 [CUED 12/03/09]"; -char *hvite_vc_id = "$Id: HVite.c,v 1.1.1.1 2006/10/11 09:55:02 jal58 Exp $"; +char *hvite_version = "!HVER!HVite: 3.5.0 [CUED 12/10/15]"; +char *hvite_vc_id = "$Id: HVite.c,v 1.2 2015/10/12 12:07:24 cz277 Exp $"; +#include "config.h" +#ifdef IMKL +#include "mkl.h" +#endif +#ifdef CUDA +#include "HCUDA.h" +#endif #include "HShell.h" #include "HMem.h" #include "HMath.h" @@ -44,6 +54,7 @@ char *hvite_vc_id = "$Id: HVite.c,v 1.1.1.1 2006/10/11 09:55:02 jal58 Exp $"; #include "HVQ.h" #include "HParm.h" #include "HLabel.h" +#include "HANNet.h" #include "HModel.h" #include "HUtil.h" #include "HTrain.h" @@ -52,7 +63,11 @@ char *hvite_vc_id = "$Id: HVite.c,v 1.1.1.1 2006/10/11 09:55:02 jal58 Exp $"; #include "HFB.h" #include "HDict.h" #include "HNet.h" +#include "HArc.h" +#include "HFBLat.h" #include "HRec.h" +#include "HNCache.h" + /* -------------------------- Trace Flags & Vars ------------------------ */ @@ -92,6 +107,9 @@ static char * labInDir = NULL; /* input network/label file directory */ static char * labInExt = "lab"; /* input network/label file extension */ static char * latExt = NULL; /* output lattice file extension */ static char * labFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * labOFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * latFileMask = NULL; /* mask for reading lablels (lattices) */ +static char * latOFileMask = NULL; /* mask for reading lablels (lattices) */ static FileFormat dfmt=UNDEFF; /* Data input file format */ static FileFormat ifmt=UNDEFF; /* Label input file format */ static FileFormat ofmt=UNDEFF; /* Label output file format */ @@ -133,6 +151,11 @@ static PSetInfo *alignpsi; /* Private data used by HRec */ static VRecInfo *alignvri; /* Visible HRec Info */ static Boolean saveBinary=FALSE; /* Save tmf in binary format */ +/* cz277 - ANN */ +/*static int batchSamples;*/ +static LabelInfo labelInfo; +static DataCache *cache[SMAX]; + /* Heaps */ static MemHeap ansHeap; static MemHeap modelHeap; @@ -140,6 +163,8 @@ static MemHeap netHeap; static MemHeap bufHeap; static MemHeap repHeap; static MemHeap regHeap; +/* cz277 - ANN */ +static MemHeap cacheHeap; /* information about transforms */ static XFInfo xfInfo; @@ -170,6 +195,15 @@ void SetConfParms(void) if (GetConfStr(cParm,nParm,"LABFILEMASK",buf)) { labFileMask = CopyString(&gstack, buf); } + if (GetConfStr(cParm,nParm,"LABOFILEMASK",buf)) { + labOFileMask = CopyString(&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATFILEMASK",buf)) { + latFileMask = CopyString(&gstack, buf); + } + if (GetConfStr(cParm,nParm,"LATOFILEMASK",buf)) { + latOFileMask = CopyString(&gstack, buf); + } } } @@ -215,6 +249,8 @@ int main(int argc, char *argv[]) void Initialise(void); void DoRecognition(void); void DoAlignment(void); + /* cz277 - ANN */ + int i; if(InitShell(argc,argv,hvite_version,hvite_vc_id)1) nBeam=genBeam; @@ -556,10 +649,74 @@ void Initialise(void) printf("Memory State After Initialisation\n"); PrintAllHeapStats(); } + + /* cz277 - ANN */ + /* ANN and data cache related code */ + /* set label info */ + if (hset.annSet != NULL) { + labelInfo.labelKind = LABLK; + labelInfo.labFileMask = NULL; + labelInfo.labDir = labDir; + labelInfo.labExt = labExt; + labelInfo.latFileMask = NULL; + labelInfo.latMaskNum = NULL; + labelInfo.numLatDir = NULL; + labelInfo.nNumLats = 0; + labelInfo.numLatSubDirPat = NULL; + labelInfo.latMaskDen = NULL; + labelInfo.denLatDir = NULL; + labelInfo.nDenLats = 0; + labelInfo.denLatSubDirPat = NULL; + labelInfo.latExt = NULL; + /* get script info */ + script = GetTrainScript(&scriptcount); + /* initialise the cache heap */ + CreateHeap(&cacheHeap, "cache heap", CHEAP, 1, 0, 100000000, ULONG_MAX); + /* initialise DataCache structure */ + for (s = 1; s <= hset.swidth[0]; ++s) { + /*cache[s] = CreateCache(&cacheHeap, script, scriptcount, (Ptr) &hset, &obs, 1, -1, NONEVK, &xfInfo, NULL, TRUE);*/ + cache[s] = CreateCache(&cacheHeap, script, scriptcount, (Ptr) &hset, &obs, 1, GetDefaultNCacheSamples(), NONEVK, &xfInfo, NULL, TRUE); + InitCache(cache[s]); + } + } + } /* ------------------ Utterance Level Recognition ----------------------- */ +/* */ +void LoadCacheVec(Observation *obs, int shift, HMMSet *hset) { + int s, S, i, offset; + NMatrix *srcMat; + FELink feaElem; + LELink layerElem; + + if (hset->annSet == NULL) + HError(3290, "LoadCacheVec: DataCache is only applicable for ANN related systems"); + + S = hset->swidth[0]; + for (s = 1; s <= S; ++s) { + if (hset->hsKind == HYBRIDHS) { /* hybrid models, cache the outputs */ + layerElem = hset->annSet->outLayers[s]; + srcMat = hset->annSet->llhMat[s]; + CopyNFloatSeg2FloatSeg(srcMat->matElems + shift * layerElem->nodeNum, layerElem->nodeNum, &obs->fv[s][1]); + } + else if (hset->feaMix[1] != NULL) { /* tandem models, cache the features */ + offset = 0; + for (i = 0; i < hset->feaMix[s]->elemNum; ++i) { + feaElem = hset->feaMix[s]->feaList[i]; + srcMat = feaElem->feaMats[1]; /* cz277 - many */ + CopyNFloatSeg2FloatSeg(srcMat->matElems + feaElem->dimOff + shift * feaElem->extDim, feaElem->extDim, &obs->fv[s][1] + offset); + offset += feaElem->extDim; + } + } + else { + HError(3290, "LoadCacheVec: DataCache is only applicable for hybrid and tandem systems"); + } + } + +} + /* ReplayAudio: replay the last audio input */ void ReplayAudio(BufferInfo info) { @@ -652,7 +809,16 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, int s,j,tact,nFrames; LatFormat form; char *p,lfn[255],buf1[80],buf2[80],thisFN[MAXSTRLEN]; + char labfn[MAXFNAMELEN]; Boolean enableOutput = TRUE, isPipe; + /* cz277 - ANN */ + int uttCnt, cUttLen, uttLen, nLoaded, i; + LELink layerElem; + /* cz277 - clock */ + clock_t fwdStClock, fwdClock = 0, decStClock, decClock = 0, loadStClock, loadClock = 0; + double fwdSec = 0.0, decSec = 0.0, loadSec = 0.0; + /* cz277 - xform */ + UttElem *uttElem; if (fn!=NULL) strcpy(thisFN,fn); @@ -676,37 +842,118 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, SetPruningLevels(vri,maxActive,currGenBeam,wordBeam,nBeam,tmBeam); tact=0;nFrames=0; - StartBuffer(pbuf); - while(BufferStatus(pbuf)!=PB_CLEARED) { - ReadAsBuffer(pbuf,&obs); - if (trace&T_OBS) PrintObservation(nFrames,&obs,13); - - if (hset.hsKind==DISCRETEHS){ - for (s=1; s<=hset.swidth[0]; s++){ - if( (obs.vq[s] < 1) || (obs.vq[s] > maxMixInS[s])) - HError(3250,"ProcessFile: Discrete data value [ %d ] out of range in stream [ %d ] in file %s",obs.vq[s],s,fn); + + /* cz277 - ANN */ + if (hset.annSet == NULL) { + StartBuffer(pbuf); + while(BufferStatus(pbuf)!=PB_CLEARED) { + ReadAsBuffer(pbuf,&obs); + if (trace&T_OBS) PrintObservation(nFrames,&obs,13); + + if (hset.hsKind==DISCRETEHS){ + for (s=1; s<=hset.swidth[0]; s++){ + if( (obs.vq[s] < 1) || (obs.vq[s] > maxMixInS[s])) + HError(3250,"ProcessFile: Discrete data value [ %d ] out of range in stream [ %d ] in file %s",obs.vq[s],s,fn); + } } - } - ProcessObservation(vri,&obs,-1,xfInfo.inXForm); + ProcessObservation(vri,&obs,-1,xfInfo.inXForm); - if (trace & T_FRS) { - for (d=vri->genMaxNode,j=0;j<30;d=d->links[0].node,j++) - if (d->type==n_word) break; - if (d->type==n_word){ - if (d->info.pron==NULL) p=":bound:"; - else p=d->info.pron->word->wordName->name; + if (trace & T_FRS) { + for (d=vri->genMaxNode,j=0;j<30;d=d->links[0].node,j++) + if (d->type==n_word) break; + if (d->type==n_word){ + if (d->info.pron==NULL) p=":bound:"; + else p=d->info.pron->word->wordName->name; + } + else p=":external:"; + m=FindMacroStruct(&hset,'h',vri->genMaxNode->info.hmm); + printf("Optimum @%-4d HMM: %s (%s) %d %5.3f\n", + vri->frame,m->id->name,p, + vri->nact,vri->genMaxTok.like/vri->frame); + fflush(stdout); } - else p=":external:"; - m=FindMacroStruct(&hset,'h',vri->genMaxNode->info.hmm); - printf("Optimum @%-4d HMM: %s (%s) %d %5.3f\n", - vri->frame,m->id->name,p, - vri->nact,vri->genMaxTok.like/vri->frame); - fflush(stdout); + nFrames++; + tact+=vri->nact; + } + } + else { + /* get utterance name in cache */ + if (strcmp(GetCurUttName(cache[1]), fn) != 0) + HError(3234, "Mismatched utterance in the cache and script file"); + uttElem = GetCurUttElem(cache[1]); /* cz277 - xform */ + /* install the current replaceable parts */ + InstallOneUttNMatRPLs(uttElem); + InstallOneUttNVecRPLs(uttElem); + /* check the observation vector number */ + uttCnt = 1; + uttLen = ObsInBuffer(pbuf); + cUttLen = GetCurUttLen(cache[1]); + if (cUttLen != uttLen) + HError(3292, "Unequal utterance length in the cache and the original feature file"); + while (nFrames < uttLen) { + /* load a data batch */ + loadStClock = clock(); /* cz277 - clock */ + for (s = 1; s <= hset.swidth[0]; ++s) { + FillAllInpBatch(cache[s], &nLoaded, &uttCnt); + /* cz277 - mtload */ + /*UpdateCacheStatus(cache[s]);*/ + LoadCacheData(cache[s]); + } + /*if (nLoaded != 1) + HError(9999, "HVite is only able to process frame by frame");*/ + loadClock += clock() - loadStClock; /* cz277 - clock */ + /* forward these frames */ + fwdStClock = clock(); /* cz277 - clock */ + ForwardProp(hset.annSet, nLoaded, cache[1]->CMDVecPL); + /*SetBatchIndex(GetBatchIndex() + 1);*/ + /* apply log transform */ + for (s = 1; s <= hset.swidth[0]; ++s) { + layerElem = hset.annSet->outLayers[s]; + ApplyLogTrans(layerElem->yFeaMats[1], nLoaded, layerElem->nodeNum, hset.annSet->llhMat[s]); /* cz277 - many */ + AddNVectorTargetPen(hset.annSet->llhMat[s], hset.annSet->penVec[s], nLoaded, hset.annSet->llhMat[s]); +#ifdef CUDA + SyncNMatrixDev2Host(hset.annSet->llhMat[s]); +#endif + } + fwdClock += clock() - fwdStClock; /* cz277 - clock */ + /* load the ANN outputs into dec->cacheVecs */ + decStClock = clock(); /* cz277 - clock */ + for (i = 0; i < nLoaded; ++i) { + LoadCacheVec(&obs, i, &hset); + /* decode current frame */ + ProcessObservation(vri, &obs, -1, xfInfo.inXForm); + if (trace & T_FRS) { + for (d = vri->genMaxNode, j = 0; j < 30; d = d->links[0].node, j++) + if (d->type == n_word) break; + if (d->type == n_word) { + if (d->info.pron == NULL) p = ":bound:"; + else p = d->info.pron->word->wordName->name; + } + else p = ":external:"; + m = FindMacroStruct(&hset, 'h', vri->genMaxNode->info.hmm); + printf("Optimum @%-4d HMM: %s (%s) %d %5.3f\n", + vri->frame, m->id->name, p, vri->nact, + vri->genMaxTok.like / vri->frame); + fflush(stdout); + } + tact += vri->nact; + /* increate nFrames */ + ++nFrames; + } + decClock += clock() - decStClock; /* cz277 - clock */ + /* cz277 - 1007 */ + /*SetBatchIndex(GetBatchIndex() + 1);*/ + } + /* cz277 - mtload */ + for (s = 1; s <= hset.swidth[0]; ++s) { + UnloadCacheData(cache[s]); } - nFrames++; - tact+=vri->nact; + /* reset the replaceable parts */ + ResetNMatRPL(); + ResetNVecRPL(); } + lat=CompleteRecognition(vri,pbinfo.tgtSampRate/10000000.0,&ansHeap); if (lat==NULL) { @@ -758,6 +1005,18 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, (aclk+lmlk)/nFrames, aclk,lmlk,(float)tact/nFrames); fflush(stdout); } + + /* cz277 - clock */ + if (hset.annSet != NULL) { + fwdSec = fwdClock / (double) CLOCKS_PER_SEC; + decSec = decClock / (double) CLOCKS_PER_SEC; + loadSec = loadClock / (double) CLOCKS_PER_SEC; + printf("\tForwarding time is %f\n", fwdSec); + printf("\tDecoding time is %f\n", decSec); + printf("\tCache loading time is %f\n", loadSec); + fflush(stdout); + } + if (pbinfo.a != NULL && replay) ReplayAudio(pbinfo); /* accumulate stats for online unsupervised adaptation @@ -767,7 +1026,12 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, if (enableOutput){ if (nToks>1 && latExt!=NULL) { - MakeFN(thisFN,labDir,latExt,lfn); + if (latOFileMask) { + if (!MaskMatch (latOFileMask, labfn, thisFN)) + HError(2319,"HLRescore: LATOFILEMASK %s has no match with segemnt %s", latOFileMask, thisFN); + } else + strcpy (labfn, thisFN); + MakeFN(labfn,labDir,latExt,lfn); if ((file=FOpen(lfn,NetOFilter,&isPipe))==NULL) HError(3211,"ProcessFile: Could not open file %s for lattice output",lfn); if (latForm==NULL) @@ -808,7 +1072,12 @@ Boolean ProcessFile(char *fn, Network *net, int utterNum, LogDouble currGenBeam, strchr(labForm,'C')!=NULL,strchr(labForm,'T')!=NULL, strchr(labForm,'W')!=NULL,strchr(labForm,'M')!=NULL); - MakeFN(thisFN,labDir,labExt,lfn); + if (labOFileMask) { + if (!MaskMatch (labOFileMask, labfn, thisFN)) + HError(2319,"HLRescore: LABOFILEMASK %s has no match with segemnt %s", labOFileMask, thisFN); + } else + strcpy (labfn, thisFN); + MakeFN(labfn,labDir,labExt,lfn); /* if(LSave(lfn,trans,ofmt) 0 && n%update == 0) { @@ -941,6 +1222,8 @@ void DoRecognition(void) Boolean isPipe; int n=0; AdaptXForm *incXForm; + /* cz277 - ANN */ + char fnbuf[1024]; if ( (nf = FOpen(wdNetFn,NetFilter,&isPipe)) == NULL) HError(3210,"DoRecognition: Cannot open Word Net file %s",wdNetFn); @@ -995,15 +1278,18 @@ void DoRecognition(void) if (NextArg()!=STRINGARG) HError(3219,"DoRecognition: Data file name expected"); datFN = GetStrArg(); + /* cz277 - ANN */ + strcpy(fnbuf, datFN); + if (trace&T_TOP) { - printf("File: %s\n",datFN); fflush(stdout); + printf("File: %s\n",fnbuf); fflush(stdout); } /* This handles the initial input transform, parent transform setting and output transform creation */ - if (UpdateSpkrStats(&hset, &xfInfo, datFN) && (!(xfInfo.useInXForm)) && (hset.semiTied == NULL)) { + if (UpdateSpkrStats(&hset, &xfInfo, fnbuf) && (!(xfInfo.useInXForm)) && (hset.semiTied == NULL)) { xfInfo.inXForm = NULL; } - ProcessFile(datFN,net,n++,genBeam,FALSE); + ProcessFile(fnbuf,net,n++,genBeam,FALSE); if (update > 0 && n%update == 0) { if (trace&T_TOP) { printf("Transforming model set\n"); diff --git a/HTKTools/Makefile.in b/HTKTools/MakefileCPU old mode 100644 new mode 100755 similarity index 65% rename from HTKTools/Makefile.in rename to HTKTools/MakefileCPU index af6a7c1..b3c0e89 --- a/HTKTools/Makefile.in +++ b/HTKTools/MakefileCPU @@ -8,7 +8,7 @@ # # ----------------------------------------------------------- # Copyright: Cambridge University -# 1995-2005 Engineering Department +# 1995-2015 Engineering Department # http://htk.eng.cam.ac.uk # http://mi.eng.cam.ac.uk # @@ -17,48 +17,48 @@ # ** This banner notice must not be removed ** # # ----------------------------------------------------------- -# File: @configure_input@ +# File: HTKTools/MakefileCPU # ----------------------------------------------------------- SHELL = /bin/sh inc = ../HTKLib HTKLIB = $(inc)/HTKLib.a -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.cpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include oldincludedir = /usr/include -CC = @CC@ -CFLAGS = @CFLAGS@ -I$(inc) -DPHNALG -LDFLAGS = @LDFLAGS@ -lm -INSTALL = @INSTALL@ -PROGS = @HSLAB@ HBuild HCompV HCopy HDMan \ +CC = gcc +CFLAGS = -m64 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(inc) -DPHNALG +LDFLAGS = -L/usr/X11R6/lib -lpthread -lm +INSTALL = /usr/bin/install -c +PROGS = HBuild HCompV HCopy HDMan \ HERest HHEd HInit HLEd HList \ - HLRescore HLStats HMMIRest HParse \ + HLConf HLRescore HLStats HMMIRest HNTrainSGD HNForward HParse \ HQuant HRest HResults HSGen HSmooth \ HVite all: $(PROGS) %: %.c $(HTKLIB) - if [ ! -d $(bindir) -a X_@TRADHTK@ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi if [ x$@ = xHSLab ] ; then \ $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -lX11 ; \ else \ $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) ; fi - if [ X_@TRADHTK@ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi strip: $(PROGS) -strip $(PROGS) @@ -76,7 +76,7 @@ install: mkinstalldir $(PROGS) for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done mkinstalldir: - if [ ! -d $(bindir) ] ; then mkdir $(bindir) ; fi + -mkdir -p $(bindir) .PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HTKTools/MakefileMKL b/HTKTools/MakefileMKL new file mode 100755 index 0000000..3c53bd7 --- /dev/null +++ b/HTKTools/MakefileMKL @@ -0,0 +1,82 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKTools/MakefileMKL +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +HTKLIB = $(inc)/HTKLib.a +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.mkl +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = icc +CFLAGS = -m64 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -O2 -I$(inc) -DMKL -DPHNALG +LDFLAGS = -L/usr/X11R6/lib -Wl,--start-group /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_lp64.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_intel_thread.so /opt/intel/composerxe/mkl/lib/intel64/libmkl_core.so /opt/intel/composerxe/lib/intel64/libiomp5.so -Wl,--end-group -lpthread -lm +INSTALL = /usr/bin/install -c +PROGS = HBuild HCompV HCopy HDMan \ + HERest HHEd HInit HLEd HList \ + HLConf HLRescore HLStats HMMIRest HNTrainSGD HNForward HParse \ + HQuant HRest HResults HSGen HSmooth \ + HVite +all: $(PROGS) + +%: %.c $(HTKLIB) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ x$@ = xHSLab ] ; then \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -lX11 ; \ + else \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) *.exe Makefile + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HTKTools/MakefileNVCC b/HTKTools/MakefileNVCC new file mode 100755 index 0000000..9ec897a --- /dev/null +++ b/HTKTools/MakefileNVCC @@ -0,0 +1,82 @@ +# ----------------------------------------------------------- +# +# ___ +# |_| | |_/ SPEECH +# | | | | \ RECOGNITION +# ========= SOFTWARE +# +# +# ----------------------------------------------------------- +# Copyright: Cambridge University +# 1995-2015 Engineering Department +# http://htk.eng.cam.ac.uk +# http://mi.eng.cam.ac.uk +# +# Use of this software is governed by a License Agreement +# ** See the file License for the Conditions of Use ** +# ** This banner notice must not be removed ** +# +# ----------------------------------------------------------- +# File: HTKTools/MakefileNVCC +# ----------------------------------------------------------- + +SHELL = /bin/sh +inc = ../HTKLib +HTKLIB = $(inc)/HTKLib.a +srcdir = . +top_srcdir = .. + +prefix = .. +exec_prefix = ${prefix} +bindir = ${exec_prefix}/bin.gpu +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/share/info +mandir = ${prefix}/share/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +CC = /usr/local/cuda/bin/nvcc +CFLAGS = -m64 -ccbin gcc -gencode arch=compute_35,code=sm_35 -D'ARCH="x86_64"' -DCUDA -I$(inc) +LDFLAGS = -L/usr/X11R6/lib -lcudart -lcublas -lpthread -lm +INSTALL = /usr/bin/install -c +PROGS = HBuild HCompV HCopy HDMan \ + HERest HHEd HInit HLEd HList \ + HLConf HLRescore HLStats HMMIRest HNTrainSGD HNForward HParse \ + HQuant HRest HResults HSGen HSmooth \ + HVite +all: $(PROGS) + +%: %.c $(HTKLIB) + if [ ! -d $(bindir) -a X_ = X_yes ] ; then mkdir -p $(bindir) ; fi + if [ x$@ = xHSLab ] ; then \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) -lX11 ; \ + else \ + $(CC) -o $@ $(CFLAGS) $^ $(LDFLAGS) ; fi + if [ X_ = X_yes ] ; then $(INSTALL) -m 755 $@ $(bindir) ; fi + +strip: $(PROGS) + -strip $(PROGS) + +clean: + -rm -f *.o + +cleanup: + -rm -f *.o $(PROGS) *.exe + +distclean: + -rm -f *.o $(PROGS) *.exe Makefile + +install: mkinstalldir $(PROGS) + for program in $(PROGS) ; do $(INSTALL) -m 755 $${program} $(bindir) ; done + +mkinstalldir: + -mkdir -p $(bindir) + + +.PHONY: all strip clean cleanup distclean install mkinstalldir diff --git a/HTKTools/htk_htktools_nt.mkf b/HTKTools/htk_htktools_nt.mkf deleted file mode 100644 index 0505c70..0000000 --- a/HTKTools/htk_htktools_nt.mkf +++ /dev/null @@ -1,96 +0,0 @@ -# -# remember to run VCVARS32.BAT -# makefile for single-threaded HTK tools, MSVC -# - -.SUFFIXES: .exe - -.c.obj: - $(CC) /nologo /c $(CFLAGS) $< - -.obj.exe: - $(CL) $(SYSLF) /OUT:$(HBIN)\$@ $< $(libs) - -CC=cl -CL=link -CPU=win32 - -HBIN = ..\bin.win32 - -# use the following for full optimisation -SYSCF = /ML /W0 /GX /O2 /G5 /Ob2 /D "NDEBUG" /D "WIN32" /D "_CONSOLE" - -# use the following for debugging -#SYSCF = /ML /W1 /Gm /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" - -# use the following for non-debug link -SYSLF = /nologo /subsystem:console /incremental:no - -# use the following for debug link -#SYSLF = /DEBUG /DEBUGTYPE:BOTH /nologo /subsystem:console /incremental:no - -# the following is for HTK tools linked with HTKLib -HTKCF = /I "..\HTKLib" /I "." /D "PHNALG" - -htklib = ..\HTKLib\HTKLib.$(CPU).lib - -CFLAGS = $(SYSCF) $(HTKCF) - -syslib = winmm.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib \ - advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib - -libs = $(syslib) $(htklib) - -tools = HMMIRest.exe HSLab.exe HInit.exe HRest.exe HERest.exe HVite.exe HResults.exe \ - HList.exe HCopy.exe HLEd.exe HDMan.exe HHEd.exe HParse.exe \ - HBuild.exe HSmooth.exe HCompV.exe HQuant.exe HSGen.exe HLStats.exe \ - HLRescore.exe - -HSLab.exe: HSLab.obj - -HInit.exe: HInit.obj - -HHEd.exe: HHEd.obj - -HLStats.exe: HLStats.obj - -HSGen.exe: HSGen.obj - -HQuant.exe: HQuant.obj - -HCompV.exe: HCompV.obj - -HSmooth.exe: HSmooth.obj - -HBuild.exe: HBuild.obj - -HParse.exe: HParse.obj - -HDMan.exe: HDMan.obj - -HLEd.exe: HLEd.obj - -HCopy.exe: HCopy.obj - -HList.exe: HList.obj - -HResults.exe: HResults.obj - -HVite.exe: HVite.obj - -HERest.exe: HERest.obj - -HRest.exe: HRest.obj - -HLRescore.exe: HLRescore.obj - -HMMIRest.exe: HMMIRest.obj - -all: $(tools) - echo done - -clean: - del *.obj *.exe - -cleanup: - del *.obj diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/Makefile.in b/Makefile.in deleted file mode 100644 index 17a3f54..0000000 --- a/Makefile.in +++ /dev/null @@ -1,153 +0,0 @@ -# ----------------------------------------------------------- -# -# ___ -# |_| | |_/ SPEECH -# | | | | \ RECOGNITION -# ========= SOFTWARE -# -# -# ----------------------------------------------------------- -# Copyright: Cambridge University -# 1995-2006 Engineering Department -# http://htk.eng.cam.ac.uk -# http://mi.eng.cam.ac.uk -# -# Use of this software is governed by a License Agreement -# ** See the file License for the Conditions of Use ** -# ** This banner notice must not be removed ** -# -# ----------------------------------------------------------- -# File: @configure_input@ -# ----------------------------------------------------------- - -SHELL = /bin/sh -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -CC = @CC@ -CPPFLAGS = @CPPFLAGS@ -CFLAGS = $(CPPFLAGS) @CFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -INSTALL = @INSTALL@ - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = . - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ -MAKEINFO = @MAKEINFO@ -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -HTKLIB = HTKLib -HLMLIB = HLMLib -HTKTOOLS = HTKTools -HLMTOOLS = HLMTools -LVREC = HTKLVRec -HTKBOOK = HTKBook -SUBDIRS = $(HTKLIB) $(HLMLIB) $(HTKTOOLS) $(HLMTOOLS) $(LVREC) $(BOOK) -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_CLEAN_FILES = -DIST_COMMON = README ChangeLog Makefile.am \ -Makefile.in aclocal.m4 configure configure.ac install-sh missing \ -mkinstalldirs - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = gtar -GZIP_ENV = --best - -.SUFFIXES: - -# build rules -all: @make_all@ -$(HTKLIB)/HTKLib.a: - (cd $(HTKLIB) && $(MAKE) HTKLib.a) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -htklib: $(HTKLIB)/HTKLib.a -$(HTKLIB)/HTKLiblv.a: - (cd $(HTKLIB) && $(MAKE) HTKLiblv.a) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -htkliblv: $(HTKLIB)/HTKLiblv.a -$(HLMLIB)/HLMLib.a: - (cd $(HLMLIB) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -hlmlib: $(HLMLIB)/HLMLib.a -htktools: $(HTKLIB)/HTKLib.a - (cd $(HTKTOOLS) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -hlmtools: $(HLMLIB)/HLMLib.a - (cd $(HLMTOOLS) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -hdecode: $(HTKLIB)/HTKLiblv.a - (cd $(LVREC) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -book: - (cd $(HTKBOOK) && $(MAKE) all) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; - -# installation -install-htktools: htktools - (cd $(HTKTOOLS) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -install-hlmtools: hlmtools - (cd $(HLMTOOLS) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -install-hdecode: - (cd $(LVREC) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; -install-book: book - (cd $(HTKBOOK) && $(MAKE) install) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; - -clean: - /bin/rm -f *~ - @for dir in $(SUBDIRS); do \ - (cd $$dir && $(MAKE) clean) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" -distclean: clean - /bin/rm -f Makefile config.h config.status config.cache config.log - @for dir in $(SUBDIRS); do \ - (cd $$dir && $(MAKE) distclean) \ - || case "$(MFLAGS)" in *k*) fail=yes;; *) exit 1;; esac; \ - done && test -z "$$fail" - -install: @make_install@ -docs: book - -.PHONY: all doc install clean distclean htklib-decode \ - htktools hlmtools hdecode docs book \ - install-htktools install-hlmtools install-hdecode install-book - diff --git a/README b/README index 9085ffe..70b410b 100644 --- a/README +++ b/README @@ -1,4 +1,5 @@ - Hidden Markov Toolkit (HTK) 3.4.1 +Hidden Markov Toolkit (HTK) 3.5 Beta + ==================================== Use of this software is governed by a license agreement, the terms and conditions of which are set forth in the file LICENSE in the @@ -6,17 +7,18 @@ top-level HTK installation directory. Please read this file carefully as use of this software implies acceptance of the conditions described therein. + Introduction ============ -HTK is a toolkit for use in research into automatic speech recognition -and has been developed by the Machine Intelligence Laboratory -(formerly know as the Speech Vision Robotics Group) at the -Cambridge University Engineering Department (http://mi.eng.cam.ac.uk) -and Entropic Ltd (http://www.entropic.com). +HTK is a toolkit that has been primarily for research use in automatic +speech recognition. Since 2000, HTK has been developed and distributed +by the Machine Intelligence Laboratory (formerly known as the Speech Vision +and Robotics Group) at Cambridge University Engineering Department +(http://mi.eng.cam.ac.uk). -Please visit the HTK homepage at the following address for more -information about HTK: +Please visit the HTK website at the following address for more +information about HTK and the history of its development: http://htk.eng.cam.ac.uk/ @@ -30,44 +32,58 @@ License ======= HTK is made available free of charge and can be downloaded from the -website mentioned above. However it may not be redistributed, -i.e. you must register at the website and download it from -there. Details about the terms under which HTK is made available can +HTK website. However it may not be redistributed, i.e. you must +register at the website and download it from there. + +Details about the terms under which HTK is made available can be found in the LICENSE file. +Note that the HDecode tool must be downloaded separately and +has a separate license agreement. + Compiling & Installing HTK under UNIX/Linux, OS X or Cygwin =========================================================== -After unpacking the sources, cd to the htk directory. +HTK 3.5 comes with three sets of Makefiles enabling compilation for: + +1. CPU (standard) +2. CPU using MKL (Intel Math Kernel library) +3. NVIDIA GPUs (Graphic Processing Unit) using the NVIDIA CUDA compiler NVCC + +These alternative Makefiles are located in each of the following directories: + +HTKLib, HLMLib, HTKTools, HLMTools -There are now two ways to install HTK, the "traditional" and the -"new". Up to now HTK has always installed its tools as they were -built, and installed them to a directory such as "bin.linux" so that -binaries for different architectures can be installed in a home -directory say. If you want to install in this way, please add the -option "--enable-trad-htk" when you run configure. +Examine the MakefileCPU, MakefileMKL and MakefileNVCC +files in each of these directories and change the default +locations of CPU/GPU compilers and libraries to match the +locations on the system for which HTK 3.5 is to be installed. -The "new" method installs by default into /usr/local/bin (equivalent -to a configure option of "--prefix=/usr/local"). +In order to compile either the standard CPU version, or +the CPU version with MKL support or GPU version execute one of the following -1. decide which of the above methods you wish to use -2. cd to htk, then run ./configure (with appropriate options, run - "./configure --help" if unsure). - If you don't want to build the programs in HLMTools add the - --disable-hlmtools option. -3. make all -4. make install +1. make -f MakefileCPU all +2. make -f MakefileMKL all +3. make -f MakefileNVCC all -Running "make install" will install them. This step may need to be -done as root, if you are not installing them in your home directory. +in turn in each of HTKLib, HLMLib, HTKTools and HLMTools. +Having compiled one of the branches (CPU/MKL/NVCC), the +relevant HTK tools can be installed executing one of the following -Notes for particular Unix variants: -Solaris: if "make" isn't installed you may need to add /opt/sfw/bin -and /usr/ccs/bin to your path and run "./configure MAKE=gmake" with -any other options you require. Then run "gmake" instead of "make", -alternatively you can create a symbolic link called "make" somewhere -it your path to /opt/sfw/bin/gmake +1. make -f MakefileCPU install +2. make -f MakefileMKL install +3. make -f MakefileNVCC install + +commands in both the HTKTools and HLMTools directories. By default HTK +tools will be installed in bin.cpu, bin.mkl or bin.gpu depending +on the branch. + +Prior to compiling a new branch it is important to clean the distribution + +1. make -f MakefileCPU clean +2. make -f MakefileMKL clean +3. make -f MakefileNVCC clean HDecode @@ -76,111 +92,44 @@ HDecode If you are also building HDecode (available from the HTK website, under a different licence from HTK), you will firstly need to unpack the HDecode source code (in the same directory in which you unpacked the HTK -sources). Follow the steps above for building HTK first, then add -these steps to the build process: +sources). Then follow the steps above for first building HTK, and then execute +the following command in HTKLVRec directory: + +1. make -f MakefileCPU all +2. make -f MakefileCPU install + +or + +1. make -f MakefileMKL all +2. make -f MakefileMKL install -5. make hdecode -6. make install-hdecode +or + +1. make -f MakefileNVCC all +2. make -f MakefileNVCC install + +depending on whether HTK is compiled for CPU, CPU with MKL support or GPU. Compiling & Installing HTK under Windows ======================================== -Prerequisites: - * HTK has been verified to compile using Microsoft Visual Studio. - * For testing, you will require a Perl interpreter such as - ActivePerl. - * You will need a tool such as 7-zip or winzip (commercial) for unpacking - the HTK source code archive. - * It is helpful if you have some familiarity with using the DOS - command line interface, as you will need to interact with it in - order to compile, install and run HTK. - * Ensure that your PATH contains - C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\bin - Or if you are using older versions: - C:\Program Files\Microsoft Visual Studio\VC98\bin - - -Compilation: - 1. Unpack the HTK sources using 7-zip. - 2. Open a DOS command window: Click Start, select Run type cmd at - the prompt and click OK. - 3. cd into the directory in which you unpacked the sources. - 4. cd into the htk directory. Type: - - cd htk - - 5. Create a directory for the library and tools. Type: - - mkdir bin.win32 - - 6. Run VCVARS32 (it should be in your path, see prerequisites above) - 7. Build the HTK Library, which provides the common functionality - used by the HTK Tools. Enter the following commands: - - cd HTKLib - nmake /f htk_htklib_nt.mkf all - cd .. - - 8. Build the HTK Tools - - cd HTKTools - nmake /f htk_htktools_nt.mkf all - cd .. - cd HLMLib - nmake /f htk_hlmlib_nt.mkf all - cd .. - cd HLMTools - nmake /f htk_hlmtools_nt.mkf all - cd .. - -Installation: -The HTK tools have now been built and are in the bin.win32 -directory. You should add this directory to your PATH, so that you can -run them easily from the command line in future. +HTK 3.5 has not yet been tested under Windows. Testing the Installation ======================== - -Among the samples on the HTK website you'll find the HTKDemo package -that can be used to test your installation. See -http://htk.eng.cam.ac.uk/download.shtml for download instructions. - -As an initial test of the installation please run the HTK -demonstration using the configuration file -HTKDemo/configs/monPlainM1S1.dcf. There is a README file in the -HTKDemo directory explaining the operation of the demonstration in -detail but, in short, you need to run the demonstration script passing -it the configuration file configs/monPlainM1S1.dcf as input. +As an initial test of the installation please run the HTK demonstration +using the configuration file samples/HTKDemo/configs/monPlainM1S1.dcf. +There is a README file in the samples/HTKDemo directory that explains +the operation of the demonstration in detail but, in short, you need +to run the demonstration script passing it the configuration file +samples/HTKDemo/configs/monPlainM1S1.dcf as input. To test the language modelling tools you should follow the tutorial in the HTK book, using the files in the LMTutorial/ directory. -Before running the demo make sure you have compiled all the HTK tools -and the executables are in your PATH, i.e. just typing 'HInit' at the -commandline prints a short usage summary. To run the demonstration -type: - -$ cd HTKDemo -$ ./runDemo configs/monPlainM1S1.dcf - -The recognition results obtained should match the following. - -On the training set: ------------------------- Overall Results -------------------------- -SENT: %Correct=0.00 [H=0, S=7, N=7] -WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] -=================================================================== - -On the test set: ------------------------- Overall Results -------------------------- -SENT: %Correct=0.00 [H=0, S=3, N=3] -WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] -=================================================================== - -NB to run this demo under Windows you must have perl installed and you -need to invoke perl explicitly. See http://www.perl.org/ to download -the perl distribution. The script runDemo.pl should be used in place -of runDemo i.e. to run the test above type - - > perl runDemo.pl configs\monPlainM1S1.dcf - +In addition to basic testing of the HTK installation, it is also possible +to build several HTK systems for the Resource Management (RM) task. +These systems range in complexity from simpler Gaussian mixture model +based HMMs to more complex artificial neural network based systems. +The RM recipe is located in samples/RMHTK directory and is documented +as a part of tutorial chapter in the HTK book. \ No newline at end of file diff --git a/config.guess b/config.guess deleted file mode 100644 index dff9e48..0000000 --- a/config.guess +++ /dev/null @@ -1,1317 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. - -timestamp='2001-09-04' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Written by Per Bothner . -# Please send patches to . -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - - -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy.rel $dummy; exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int dummy(){}" > $dummy.c ; - for c in cc gcc c89 ; do - ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ; - if test $? = 0 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - rm -f $dummy.c $dummy.o $dummy.rel ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # Netbsd (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # Determine the machine/vendor (is the vendor relevant). - case "${UNAME_MACHINE}" in - amiga) machine=m68k-unknown ;; - arm32) machine=arm-unknown ;; - atari*) machine=m68k-atari ;; - sun3*) machine=m68k-sun ;; - mac68k) machine=m68k-apple ;; - macppc) machine=powerpc-apple ;; - hp3[0-9][05]) machine=m68k-hp ;; - ibmrt|romp-ibm) machine=romp-ibm ;; - *) machine=${UNAME_MACHINE}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE}" in - i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit 0 ;; - alpha:OSF1:*:*) - if test $UNAME_RELEASE = "V4.0"; then - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - fi - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - cat <$dummy.s - .data -\$Lformat: - .byte 37,100,45,37,120,10,0 # "%d-%x\n" - - .text - .globl main - .align 4 - .ent main -main: - .frame \$30,16,\$26,0 - ldgp \$29,0(\$27) - .prologue 1 - .long 0x47e03d80 # implver \$0 - lda \$2,-1 - .long 0x47e20c21 # amask \$2,\$1 - lda \$16,\$Lformat - mov \$0,\$17 - not \$1,\$18 - jsr \$26,printf - ldgp \$29,0(\$26) - mov 0,\$16 - jsr \$26,exit - .end main -EOF - eval $set_cc_for_build - $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null - if test "$?" = 0 ; then - case `./$dummy` in - 0-0) - UNAME_MACHINE="alpha" - ;; - 1-0) - UNAME_MACHINE="alphaev5" - ;; - 1-1) - UNAME_MACHINE="alphaev56" - ;; - 1-101) - UNAME_MACHINE="alphapca56" - ;; - 2-303) - UNAME_MACHINE="alphaev6" - ;; - 2-307) - UNAME_MACHINE="alphaev67" - ;; - 2-1307) - UNAME_MACHINE="alphaev68" - ;; - esac - fi - rm -f $dummy.s $dummy - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit 0 ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit 0 ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit 0 ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit 0;; - amiga:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; - arc64:OpenBSD:*:*) - echo mips64el-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - arc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - hkmips:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - pmax:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - sgi:OpenBSD:*:*) - echo mips-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - wgrisc:OpenBSD:*:*) - echo mipsel-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit 0 ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit 0;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit 0;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit 0 ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit 0 ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit 0 ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit 0 ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit 0 ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit 0 ;; - sparc*:NetBSD:*) - echo `uname -p`-unknown-netbsd${UNAME_RELEASE} - exit 0 ;; - atari*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit 0 ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit 0 ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit 0 ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit 0 ;; - sun3*:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mac68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme68k:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - mvme88k:OpenBSD:*:*) - echo m88k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit 0 ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit 0 ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit 0 ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit 0 ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo mips-mips-riscos${UNAME_RELEASE} - exit 0 ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit 0 ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit 0 ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit 0 ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit 0 ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit 0 ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit 0 ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit 0 ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit 0 ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit 0 ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit 0 ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit 0 ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit 0 ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo rs6000-ibm-aix3.2.5 - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit 0 ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit 0 ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit 0 ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit 0 ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit 0 ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit 0 ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit 0 ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit 0 ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit 0 ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - case "${HPUX_REV}" in - 11.[0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - esac ;; - esac - fi ;; - esac - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi - rm -f $dummy.c $dummy - fi ;; - esac - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit 0 ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit 0 ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - echo unknown-hitachi-hiuxwe2 - exit 0 ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit 0 ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit 0 ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit 0 ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit 0 ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit 0 ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit 0 ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit 0 ;; - hppa*:OpenBSD:*:*) - echo hppa-unknown-openbsd - exit 0 ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit 0 ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit 0 ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit 0 ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit 0 ;; - CRAY*X-MP:*:*:*) - echo xmp-cray-unicos - exit 0 ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3D:*:*:*) - echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit 0 ;; - CRAY-2:*:*:*) - echo cray2-cray-unicos - exit 0 ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit 0 ;; - hp300:OpenBSD:*:*) - echo m68k-unknown-openbsd${UNAME_RELEASE} - exit 0 ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - *:FreeBSD:*:*) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit 0 ;; - *:OpenBSD:*:*) - echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - exit 0 ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit 0 ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit 0 ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit 0 ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i386-pc-interix - exit 0 ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit 0 ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit 0 ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; - *:GNU:*:*) - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit 0 ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit 0 ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux - exit 0 ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - mips:Linux:*:*) - case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in - big) echo mips-unknown-linux-gnu && exit 0 ;; - little) echo mipsel-unknown-linux-gnu && exit 0 ;; - esac - ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit 0 ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit 0 ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit 0 ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit 0 ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit 0 ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit 0 ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit 0 ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit 0 ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - ld_supported_targets=`cd /; ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit 0 ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit 0 ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit 0 ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - cat >$dummy.c < -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif -#ifdef __ELF__ -# ifdef __GLIBC__ -# if __GLIBC__ >= 2 - printf ("%s-pc-linux-gnu\n", argv[1]); -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -# else - printf ("%s-pc-linux-gnulibc1\n", argv[1]); -# endif -#else - printf ("%s-pc-linux-gnuaout\n", argv[1]); -#endif - return 0; -} -EOF - $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy - test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit 0 ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit 0 ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit 0 ;; - i*86:*:5:[78]*) - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit 0 ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` - (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit 0 ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit 0 ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit 0 ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit 0 ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit 0 ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit 0 ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit 0 ;; - M68*:*:R3V[567]*:*) - test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; - 3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4.3${OS_REL} && exit 0 - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && echo i486-ncr-sysv4 && exit 0 ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit 0 ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit 0 ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit 0 ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit 0 ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit 0 ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit 0 ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit 0 ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit 0 ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit 0 ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit 0 ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit 0 ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Darwin:*:*) - echo `uname -p`-apple-darwin${UNAME_RELEASE} - exit 0 ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - if test "${UNAME_MACHINE}" = "x86pc"; then - UNAME_MACHINE=pc - fi - echo `uname -p`-${UNAME_MACHINE}-nto-qnx - exit 0 ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit 0 ;; - NSR-[KW]:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit 0 ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit 0 ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit 0 ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit 0 ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit 0 ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit 0 ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit 0 ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit 0 ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit 0 ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit 0 ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit 0 ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit 0 ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit 0 ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit 0 ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit 0 ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit 0 ;; - c34*) - echo c34-convex-bsd - exit 0 ;; - c38*) - echo c38-convex-bsd - exit 0 ;; - c4*) - echo c4-convex-bsd - exit 0 ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/config.sub b/config.sub deleted file mode 100644 index 393f13d..0000000 --- a/config.sub +++ /dev/null @@ -1,1411 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. - -timestamp='2001-09-07' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to . -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | c4x | clipper \ - | d10v | d30v | dsp16xx \ - | fr30 \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | m32r | m68000 | m68k | m88k | mcore \ - | mips16 | mips64 | mips64el | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el | mips64vr4300 \ - | mips64vr4300el | mips64vr5000 | mips64vr5000el \ - | mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \ - | mipsisa32 \ - | mn10200 | mn10300 \ - | ns16k | ns32k \ - | openrisc \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | s390 | s390x \ - | sh | sh[34] | sh[34]eb | shbe | shle \ - | sparc | sparc64 | sparclet | sparclite | sparcv9 | sparcv9b \ - | stormy16 | strongarm \ - | tahoe | thumb | tic80 | tron \ - | v850 \ - | we32k \ - | x86 | xscale \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alphapca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armv*-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c54x-* \ - | clipper-* | cray2-* | cydra-* \ - | d10v-* | d30v-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | m32r-* \ - | m68000-* | m680[01234]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \ - | mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \ - | mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | s390-* | s390x-* \ - | sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclite-* \ - | sparcv9-* | sparcv9b-* | stormy16-* | strongarm-* | sv1-* \ - | t3e-* | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ - | v850-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xmp-* | xps100-* | xscale-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | ymp) - basic_machine=ymp-cray - os=-unicos - ;; - cray2) - basic_machine=cray2-cray - os=-unicos - ;; - [cjt]90) - basic_machine=${basic_machine}-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mipsel*-linux*) - basic_machine=mipsel-unknown - os=-linux-gnu - ;; - mips*-linux*) - basic_machine=mips-unknown - os=-linux-gnu - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon) - basic_machine=i686-pc - ;; - pentiumii | pentium2) - basic_machine=i686-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sparclite-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=t3e-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - windows32) - basic_machine=i386-pc - os=-windows32-msvcrt - ;; - xmp) - basic_machine=xmp-cray - os=-unicos - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - mips) - if [ x$os = x-linux-gnu ]; then - basic_machine=mips-unknown - else - basic_machine=mips-mips - fi - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh3eb | sh4eb) - basic_machine=sh-unknown - ;; - sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - c4x*) - basic_machine=c4x-none - os=-coff - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto*) - os=-nto-qnx - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -vxsim* | -vxworks*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/configure b/configure deleted file mode 100644 index e575128..0000000 --- a/configure +++ /dev/null @@ -1,6788 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for HTK 3.4.1. -# -# Report bugs to . -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -# -# Copyright 2003-2009 University of Cambridge -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - -if test "x$CONFIG_SHELL" = x; then - if (eval ":") 2>/dev/null; then - as_have_required=yes -else - as_have_required=no -fi - - if test $as_have_required = yes && (eval ": -(as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=\$LINENO - as_lineno_2=\$LINENO - test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && - test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } -") 2> /dev/null; then - : -else - as_candidate_shells= - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - case $as_dir in - /*) - for as_base in sh bash ksh sh5; do - as_candidate_shells="$as_candidate_shells $as_dir/$as_base" - done;; - esac -done -IFS=$as_save_IFS - - - for as_shell in $as_candidate_shells $SHELL; do - # Try only shells that exist, to save several forks. - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { ("$as_shell") 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -_ASEOF -}; then - CONFIG_SHELL=$as_shell - as_have_required=yes - if { "$as_shell" 2> /dev/null <<\_ASEOF -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - -: -(as_func_return () { - (exit $1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = "$1" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test $exitcode = 0) || { (exit 1); exit 1; } - -( - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } - -_ASEOF -}; then - break -fi - -fi - - done - - if test "x$CONFIG_SHELL" != x; then - for as_var in BASH_ENV ENV - do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - done - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} -fi - - - if test $as_have_required = no; then - echo This script requires a shell more modern than all the - echo shells that I found on your system. Please install a - echo modern shell, or manually run the script under such a - echo shell if you do have one. - { (exit 1); exit 1; } -fi - - -fi - -fi - - - -(eval "as_func_return () { - (exit \$1) -} -as_func_success () { - as_func_return 0 -} -as_func_failure () { - as_func_return 1 -} -as_func_ret_success () { - return 0 -} -as_func_ret_failure () { - return 1 -} - -exitcode=0 -if as_func_success; then - : -else - exitcode=1 - echo as_func_success failed. -fi - -if as_func_failure; then - exitcode=1 - echo as_func_failure succeeded. -fi - -if as_func_ret_success; then - : -else - exitcode=1 - echo as_func_ret_success failed. -fi - -if as_func_ret_failure; then - exitcode=1 - echo as_func_ret_failure succeeded. -fi - -if ( set x; as_func_ret_success y && test x = \"\$1\" ); then - : -else - exitcode=1 - echo positional parameters were not saved. -fi - -test \$exitcode = 0") || { - echo No shell found that supports shell functions. - echo Please tell autoconf@gnu.org about your system, - echo including any error possibly output before this - echo message -} - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - - -exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Identity of this package. -PACKAGE_NAME='HTK' -PACKAGE_TARNAME='htk' -PACKAGE_VERSION='3.4.1' -PACKAGE_STRING='HTK 3.4.1' -PACKAGE_BUGREPORT='htk-mgr@eng.cam.ac.uk' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='SHELL -PATH_SEPARATOR -PACKAGE_NAME -PACKAGE_TARNAME -PACKAGE_VERSION -PACKAGE_STRING -PACKAGE_BUGREPORT -exec_prefix -prefix -program_transform_name -bindir -sbindir -libexecdir -datarootdir -datadir -sysconfdir -sharedstatedir -localstatedir -includedir -oldincludedir -docdir -infodir -htmldir -dvidir -pdfdir -psdir -libdir -localedir -mandir -DEFS -ECHO_C -ECHO_N -ECHO_T -LIBS -build_alias -host_alias -target_alias -SET_MAKE -AWK -CC -CFLAGS -LDFLAGS -CPPFLAGS -ac_ct_CC -EXEEXT -OBJEXT -INSTALL_PROGRAM -INSTALL_SCRIPT -INSTALL_DATA -LN_S -RANLIB -XMKMF -CPP -GREP -EGREP -LIBOBJS -POW_LIB -build -build_cpu -build_vendor -build_os -host -host_cpu -host_vendor -host_os -TRADHTK -TRADHTKBIN -make_all -make_install -HSLAB -HGRAF -BINARY_EXTENSION -LTLIBOBJS' -ac_subst_files='' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -XMKMF -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` - eval enable_$ac_feature=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=\$ac_optarg ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/[-.]/_/g'` - eval with_$ac_package=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute directory names. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; } -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - { echo "$as_me: error: Working directory cannot be determined" >&2 - { (exit 1); exit 1; }; } -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - { echo "$as_me: error: pwd does not report name of working directory" >&2 - { (exit 1); exit 1; }; } - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$0" || -$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$0" : 'X\(//\)[^/]' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X"$0" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 - { (exit 1); exit 1; }; } -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 - { (exit 1); exit 1; }; } - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures HTK 3.4.1 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/htk] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -X features: - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of HTK 3.4.1:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-trad-htk HTK installed into $prefix/bin.$cpu and installed - when compiled - --enable-hdecode build large vocabulary recognition system (HDecode) - --disable-hlmtools don't build Language Modelling tools - --disable-hslab don't build HSLab - --enable-htkbook build HTK book - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-x use the X Window System - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - XMKMF Path to xmkmf, Makefile generator for X Window System - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -HTK configure 3.4.1 -generated by GNU Autoconf 2.61 - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. - -Copyright 2003-2009 University of Cambridge -_ACEOF - exit -fi -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by HTK $as_me 3.4.1, which was -generated by GNU Autoconf 2.61. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - echo "PATH: $as_dir" -done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; - 2) - ac_configure_args1="$ac_configure_args1 '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - esac - done -done -$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - cat <<\_ASBOX -## ---------------- ## -## Cache variables. ## -## ---------------- ## -_ASBOX - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - cat <<\_ASBOX -## ----------------- ## -## Output variables. ## -## ----------------- ## -_ASBOX - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - cat <<\_ASBOX -## ------------------- ## -## File substitutions. ## -## ------------------- ## -_ASBOX - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - cat <<\_ASBOX -## ----------- ## -## confdefs.h. ## -## ----------- ## -_ASBOX - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" - echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - set x "$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - set x "$prefix/share/config.site" "$prefix/etc/config.site" -else - set x "$ac_default_prefix/share/config.site" \ - "$ac_default_prefix/etc/config.site" -fi -shift -for ac_site_file -do - if test -r "$ac_site_file"; then - { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special - # files actually), so we avoid doing that. - if test -f "$cache_file"; then - { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -echo "$as_me: error: changes in the environment can compromise the build" >&2;} - { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} - { (exit 1); exit 1; }; } -fi - - - - - - - - - - - - - - - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - -{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; } -set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - SET_MAKE= -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_AWK+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { echo "$as_me:$LINENO: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$AWK" && break -done - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -echo "$as_me: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - -# Provide some information about the compiler. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -v >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (ac_try="$ac_compiler -V >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } -ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -# -# List of possible output files, starting from the most likely. -# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) -# only as a last resort. b.out is created by i960 compilers. -ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' -# -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { (ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi - -{ echo "$as_me:$LINENO: result: $ac_file" >&5 -echo "${ECHO_T}$ac_file" >&6; } -if test -z "$ac_file"; then - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -See \`config.log' for more details." >&5 -echo "$as_me: error: C compiler cannot create executables -See \`config.log' for more details." >&2;} - { (exit 77); exit 77; }; } -fi - -ac_exeext=$ac_cv_exeext - -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } -# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -# If not cross compiling, check that we can run a simple program. -if test "$cross_compiling" != yes; then - if { ac_try='./$ac_file' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } - fi - fi -fi -{ echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } - -rm -f a.out a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } -{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6; } - -{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 -echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest$ac_cv_exeext -{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -echo "${ECHO_T}$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 -echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } -if test "${ac_cv_objext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; then - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of object files: cannot compile -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_compiler_gnu=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - CFLAGS="" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_prog_cc_c89=$ac_arg -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - -fi - -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -esac - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 -echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} - { (exit 1); exit 1; }; } -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in - ./ | .// | /cC/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - done - done - ;; -esac -done -IFS=$as_save_IFS - - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ echo "$as_me:$LINENO: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6; } -else - { echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6; } -fi - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { echo "$as_me:$LINENO: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done -done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to autoconf@gnu.org." >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - - - - -{ echo "$as_me:$LINENO: checking for main in -lX11" >&5 -echo $ECHO_N "checking for main in -lX11... $ECHO_C" >&6; } -if test "${ac_cv_lib_X11_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lX11 $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_X11_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_X11_main=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_X11_main" >&5 -echo "${ECHO_T}$ac_cv_lib_X11_main" >&6; } -if test $ac_cv_lib_X11_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBX11 1 -_ACEOF - - LIBS="-lX11 $LIBS" - -fi - - -{ echo "$as_me:$LINENO: checking for main in -lm" >&5 -echo $ECHO_N "checking for main in -lm... $ECHO_C" >&6; } -if test "${ac_cv_lib_m_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - - -int -main () -{ -return main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_m_main=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_m_main=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_main" >&5 -echo "${ECHO_T}$ac_cv_lib_m_main" >&6; } -if test $ac_cv_lib_m_main = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" - -fi - - -ac_config_headers="$ac_config_headers " - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ echo "$as_me:$LINENO: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - : -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Broken: fails on valid input. -continue -fi - -rm -f conftest.err conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - # Passes both tests. -ac_preproc_ok=: -break -fi - -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ echo "$as_me:$LINENO: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6; } - - -# Check whether --with-x was given. -if test "${with_x+set}" = set; then - withval=$with_x; -fi - -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - case $x_includes,$x_libraries in #( - *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5 -echo "$as_me: error: Cannot use X directory names containing '" >&2;} - { (exit 1); exit 1; }; };; #( - *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -f -r conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - cat >Imakefile <<'_ACEOF' -incroot: - @echo incroot='${INCROOT}' -usrlibdir: - @echo usrlibdir='${USRLIBDIR}' -libdir: - @echo libdir='${LIBDIR}' -_ACEOF - if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - for ac_var in incroot usrlibdir libdir; do - eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" - done - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl; do - if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && - test -f "$ac_im_libdir/libX11.$ac_extension"; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ac_x_includes= ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -f -r conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Xlib.h. - # First, try using that file with no special directory specified. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Xlib.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi - -rm -f conftest.err conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lX11 $LIBS" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -int -main () -{ -XrmInitialize () - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl; do - if test -r "$ac_dir/libX11.$ac_extension"; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -case $ac_x_includes,$ac_x_libraries in #( - no,* | *,no | *\'*) - # Didn't find X, or a directory has "'" in its name. - ac_cv_have_x="have_x=no";; #( - *) - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$ac_x_includes'\ - ac_x_libraries='$ac_x_libraries'" -esac -fi -;; #( - *) have_x=yes;; - esac - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - { echo "$as_me:$LINENO: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6; } - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes\ - ac_x_includes='$x_includes'\ - ac_x_libraries='$x_libraries'" - { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; } -fi - -{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 -echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Extract the first word of "grep ggrep" to use in msg output -if test -z "$GREP"; then -set dummy grep ggrep; ac_prog_name=$2 -if test "${ac_cv_path_GREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_GREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue - # Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_GREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -GREP="$ac_cv_path_GREP" -if test -z "$GREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_GREP=$GREP -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 -echo "${ECHO_T}$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ echo "$as_me:$LINENO: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - # Extract the first word of "egrep" to use in msg output -if test -z "$EGREP"; then -set dummy egrep; ac_prog_name=$2 -if test "${ac_cv_path_EGREP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_path_EGREP_found=false -# Loop through the user's path and test for each of PROGNAME-LIST -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue - # Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - ac_count=`expr $ac_count + 1` - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - - $ac_path_EGREP_found && break 3 - done -done - -done -IFS=$as_save_IFS - - -fi - -EGREP="$ac_cv_path_EGREP" -if test -z "$EGREP"; then - { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 -echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} - { (exit 1); exit 1; }; } -fi - -else - ac_cv_path_EGREP=$EGREP -fi - - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 -echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } -if test "${ac_cv_header_stdc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_stdc=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\_ACEOF -#define STDC_HEADERS 1 -_ACEOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - - - - - - - - - -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default - -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_Header=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - - - - - - - - - - - - - -for ac_header in errno.h fcntl.h float.h limits.h malloc.h memory.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h unistd.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------------ ## -## Report this to htk-mgr@eng.cam.ac.uk ## -## ------------------------------------ ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; } -if test "${ac_cv_c_const+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_c_const=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\_ACEOF -#define const -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking for size_t" >&5 -echo $ECHO_N "checking for size_t... $ECHO_C" >&6; } -if test "${ac_cv_type_size_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -typedef size_t ac__type_new_; -int -main () -{ -if ((ac__type_new_ *) 0) - return 0; -if (sizeof (ac__type_new_)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_size_t=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_size_t=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -echo "${ECHO_T}$ac_cv_type_size_t" >&6; } -if test $ac_cv_type_size_t = yes; then - : -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking whether time.h and sys/time.h may both be included" >&5 -echo $ECHO_N "checking whether time.h and sys/time.h may both be included... $ECHO_C" >&6; } -if test "${ac_cv_header_time+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_header_time=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\_ACEOF -#define TIME_WITH_SYS_TIME 1 -_ACEOF - -fi - -{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5 -echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; } -if test "${ac_cv_struct_tm+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_struct_tm=time.h -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_struct_tm=sys/time.h -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5 -echo "${ECHO_T}$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -cat >>confdefs.h <<\_ACEOF -#define TM_IN_SYS_TIME 1 -_ACEOF - -fi - - -if test $ac_cv_c_compiler_gnu = yes; then - { echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6; } -if test "${ac_cv_prog_gcc_traditional+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_pattern="Autoconf.*'x'" - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -Autoconf TIOCGETP -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -Autoconf TCGETA -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi -{ echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6; } - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - -{ echo "$as_me:$LINENO: checking for working memcmp" >&5 -echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; } -if test "${ac_cv_func_memcmp_working+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_memcmp_working=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = '\100', c1 = '\200', c2 = '\201'; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - return 1; - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - return 1; - } - return 0; - } - - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_memcmp_working=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_memcmp_working=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 -echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; } -test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" - ;; -esac - - - -for ac_header in stdlib.h -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - { echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -else - # Is the header compilable? -{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 -echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_header_compiler=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_compiler=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -echo "${ECHO_T}$ac_header_compiler" >&6; } - -# Is the header present? -{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 -echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include <$ac_header> -_ACEOF -if { (ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then - ac_header_preproc=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_header_preproc=no -fi - -rm -f conftest.err conftest.$ac_ext -{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -echo "${ECHO_T}$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in - yes:no: ) - { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} - ac_header_preproc=yes - ;; - no:yes:* ) - { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} - ( cat <<\_ASBOX -## ------------------------------------ ## -## Report this to htk-mgr@eng.cam.ac.uk ## -## ------------------------------------ ## -_ASBOX - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac -{ echo "$as_me:$LINENO: checking for $ac_header" >&5 -echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } -if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - eval "$as_ac_Header=\$ac_header_preproc" -fi -ac_res=`eval echo '${'$as_ac_Header'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } - -fi -if test `eval echo '${'$as_ac_Header'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5 -echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; } -if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_malloc_0_nonnull=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#if defined STDC_HEADERS || defined HAVE_STDLIB_H -# include -#else -char *malloc (); -#endif - -int -main () -{ -return ! malloc (0); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_malloc_0_nonnull=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_malloc_0_nonnull=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5 -echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; } -if test $ac_cv_func_malloc_0_nonnull = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 1 -_ACEOF - -else - cat >>confdefs.h <<\_ACEOF -#define HAVE_MALLOC 0 -_ACEOF - - case " $LIBOBJS " in - *" malloc.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS malloc.$ac_objext" - ;; -esac - - -cat >>confdefs.h <<\_ACEOF -#define malloc rpl_malloc -_ACEOF - -fi - - - -{ echo "$as_me:$LINENO: checking for working strtod" >&5 -echo $ECHO_N "checking for working strtod... $ECHO_C" >&6; } -if test "${ac_cv_func_strtod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "$cross_compiling" = yes; then - ac_cv_func_strtod=no -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -$ac_includes_default -#ifndef strtod -double strtod (); -#endif -int -main() -{ - { - /* Some versions of Linux strtod mis-parse strings with leading '+'. */ - char *string = " +69"; - char *term; - double value; - value = strtod (string, &term); - if (value != 69 || term != (string + 4)) - return 1; - } - - { - /* Under Solaris 2.4, strtod returns the wrong value for the - terminating character under some conditions. */ - char *string = "NaN"; - char *term; - strtod (string, &term); - if (term != string && *(term - 1) == 0) - return 1; - } - return 0; -} - -_ACEOF -rm -f conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_strtod=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -( exit $ac_status ) -ac_cv_func_strtod=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5 -echo "${ECHO_T}$ac_cv_func_strtod" >&6; } -if test $ac_cv_func_strtod = no; then - case " $LIBOBJS " in - *" strtod.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS strtod.$ac_objext" - ;; -esac - -{ echo "$as_me:$LINENO: checking for pow" >&5 -echo $ECHO_N "checking for pow... $ECHO_C" >&6; } -if test "${ac_cv_func_pow+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define pow to an innocuous variant, in case declares pow. - For example, HP-UX 11i declares gettimeofday. */ -#define pow innocuous_pow - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pow (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef pow - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pow (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_pow || defined __stub___pow -choke me -#endif - -int -main () -{ -return pow (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func_pow=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func_pow=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func_pow" >&5 -echo "${ECHO_T}$ac_cv_func_pow" >&6; } - -if test $ac_cv_func_pow = no; then - { echo "$as_me:$LINENO: checking for pow in -lm" >&5 -echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6; } -if test "${ac_cv_lib_m_pow+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pow (); -int -main () -{ -return pow (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_lib_m_pow=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_lib_m_pow=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5 -echo "${ECHO_T}$ac_cv_lib_m_pow" >&6; } -if test $ac_cv_lib_m_pow = yes; then - POW_LIB=-lm -else - { echo "$as_me:$LINENO: WARNING: cannot find library containing definition of pow" >&5 -echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} -fi - -fi - -fi - -{ echo "$as_me:$LINENO: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6; } -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compile") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then - ac_cv_type_signal=int -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_type_signal=void -fi - -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - - -for ac_func in vprintf -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -{ echo "$as_me:$LINENO: checking for _doprnt" >&5 -echo $ECHO_N "checking for _doprnt... $ECHO_C" >&6; } -if test "${ac_cv_func__doprnt+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define _doprnt to an innocuous variant, in case declares _doprnt. - For example, HP-UX 11i declares gettimeofday. */ -#define _doprnt innocuous__doprnt - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _doprnt (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef _doprnt - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char _doprnt (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub__doprnt || defined __stub____doprnt -choke me -#endif - -int -main () -{ -return _doprnt (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - ac_cv_func__doprnt=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_cv_func__doprnt=no -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -{ echo "$as_me:$LINENO: result: $ac_cv_func__doprnt" >&5 -echo "${ECHO_T}$ac_cv_func__doprnt" >&6; } -if test $ac_cv_func__doprnt = yes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_DOPRNT 1 -_ACEOF - -fi - -fi -done - - - - - - - - - - - - - - - - -for ac_func in floor gettimeofday memmove memset modf pow socket sqrt strchr strcspn strrchr strspn strstr strtol -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -{ echo "$as_me:$LINENO: checking for $ac_func" >&5 -echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; } -if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ -/* Define $ac_func to an innocuous variant, in case declares $ac_func. - For example, HP-UX 11i declares gettimeofday. */ -#define $ac_func innocuous_$ac_func - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $ac_func - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $ac_func (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$ac_func || defined __stub___$ac_func -choke me -#endif - -int -main () -{ -return $ac_func (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_link") 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && - $as_test_x conftest$ac_exeext; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - eval "$as_ac_var=no" -fi - -rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ - conftest$ac_exeext conftest.$ac_ext -fi -ac_res=`eval echo '${'$as_ac_var'}'` - { echo "$as_me:$LINENO: result: $ac_res" >&5 -echo "${ECHO_T}$ac_res" >&6; } -if test `eval echo '${'$as_ac_var'}'` = yes; then - cat >>confdefs.h <<_ACEOF -#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 -echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} - { (exit 1); exit 1; }; } - -{ echo "$as_me:$LINENO: checking build system type" >&5 -echo $ECHO_N "checking build system type... $ECHO_C" >&6; } -if test "${ac_cv_build+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -echo "$as_me: error: cannot guess build type; you must specify one" >&2;} - { (exit 1); exit 1; }; } -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} - { (exit 1); exit 1; }; } - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -echo "${ECHO_T}$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 -echo "$as_me: error: invalid value of canonical build" >&2;} - { (exit 1); exit 1; }; };; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ echo "$as_me:$LINENO: checking host system type" >&5 -echo $ECHO_N "checking host system type... $ECHO_C" >&6; } -if test "${ac_cv_host+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 -echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} - { (exit 1); exit 1; }; } -fi - -fi -{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -echo "${ECHO_T}$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 -echo "$as_me: error: invalid value of canonical host" >&2;} - { (exit 1); exit 1; }; };; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -# Check whether --enable-trad-htk was given. -if test "${enable_trad_htk+set}" = set; then - enableval=$enable_trad_htk; -fi - - -# Check whether --enable-hdecode was given. -if test "${enable_hdecode+set}" = set; then - enableval=$enable_hdecode; -fi - - -# Check whether --enable-hlmtools was given. -if test "${enable_hlmtools+set}" = set; then - enableval=$enable_hlmtools; -fi - - -# Check whether --enable-hslab was given. -if test "${enable_hslab+set}" = set; then - enableval=$enable_hslab; -fi - - -# Check whether --enable-htkbook was given. -if test "${enable_htkbook+set}" = set; then - enableval=$enable_htkbook; -fi - - - -case "$CC" in - gcc*) - CFLAGS="-Wall -Wno-switch $CFLAGS" - ;; -esac - - -trad_bin_dir=$host -case "$host_cpu" in - powerpc) - host=darwin - trad_bin_dir=$host - ;; -esac - -case "$host" in - *x86_64*linux*) - CFLAGS="-m32 -ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=linux - trad_bin_dir=linux - ;; - *linux*) - CFLAGS="-ansi -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=linux - trad_bin_dir=linux - ;; - *pc-solaris*) - CFLAGS="-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/openwin/lib -ldl -lsocket -lnsl -lintl $LDFLAGS" - ;; - *sun*) - CFLAGS="-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/usr/openwin/lib -ldl -lsocket -lnsl -lintl $LDFLAGS" - ;; - *sgi*) - CFLAGS="-O -DSGI_AUDIO -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-laudio -lmalloc $LDFLAGS" - ;; - *hp*) - CFLAGS="+e -O -I/usr/include/X11R5 -I/usr/include/audio -I/opt/audio/include -D_HPUX_SOURCE -Aa -DHPUX_AUDIO -DUSE_TIMER -D'ARCH=\"$host_cpu\"' $CFLAGS" - LDFLAGS="-L/opt/audio/lib -lAlib $LDFLAGS" - ;; - *cygwin) - CFLAGS="-ansi -DCYGWIN -D'ARCH=\"ASCII\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=ASCII - CPU=darwin - BINARY_EXTENSION=.exe - ;; - i386*darwin*) - CFLAGS="-ansi -g -O2 -DNO_AUDIO -D'ARCH=\"darwin\"' -I/usr/include/malloc $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=darwin - Objcopy=echo - PRILF="-x" - CPU=darwin - SHRLF="-shared" - LIBEXT=dylib - ;; - darwin) - CFLAGS="-ansi -g -O2 -DNO_AUDIO -D'ARCH=\"darwin\"' $CFLAGS" - LDFLAGS="-L/usr/X11R6/lib $LDFLAGS" - ARCH=darwin - Objcopy=echo - PRILF="-x" - CPU=darwin - SHRLF="-shared" - LIBEXT=dylib - ;; -esac - -make_all=htktools -make_install=install-htktools -build_notes="Build notes: " -case "$enable_trad_htk" in - yes) - bindir=${bindir}.${trad_bin_dir} - libdir=${libdir}.${trad_bin_dir} - ;; -esac -case "$enable_hlmtools" in - no) - build_notes="$build_notes The Language Modelling tools will not be built. You can build them manually later by running 'make hlmtools install-hlmtools'" - ;; - *) - make_all="$make_all hlmtools" - make_install="$make_install install-hlmtools" - build_notes="$build_notes Language Modelling tools will be built." - ;; -esac -case "$enable_hdecode" in - yes) - make_all="$make_all hdecode" - make_install="$make_install install-hdecode" - build_notes="$build_notes Large Vocabulary recogniser HDecode will be built." - ;; - *) - build_notes="$build_notes HDecode will not be built. You can build it manually later by running 'make hdecode install-hdecode'" - ;; -esac -case "$enable_htkbook" in - yes) - make_all="$make_all book" - make_install="$make_install install-book" - build_notes="$build_notes The HTK Book will be built." - ;; -esac -case "$enable_hslab" in - no) - HSLAB= - HGRAF=HGraf.null.o - build_notes="$build_notes HSLab will not be built. If you want to change this then run 'configure' again with the '--enable-hslab' option." - ;; - *) - HSLAB=HSLab - HGRAF=HGraf.o - build_notest="$build_notes GUI tool HSLab will be built." - ;; -esac -TRADHTK=$enable_trad_htk - -TRADHTKBIN=$trad_bin_dir - -make_all=$make_all - -make_install=$make_install - -HSLAB=$HSLAB - -HGRAF=$HGRAF - -BINARY_EXTENSION=$BINARY_EXTENSION - - -ac_config_files="$ac_config_files HTKLib/Makefile HTKTools/Makefile HLMLib/Makefile HLMTools/Makefile HTKLVRec/Makefile Makefile" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 -echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - *) $as_unset $ac_var ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - test "x$cache_file" != "x/dev/null" && - { echo "$as_me:$LINENO: updating cache $cache_file" >&5 -echo "$as_me: updating cache $cache_file" >&6;} - cat confcache >$cache_file - else - { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 -echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" - ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: ${CONFIG_STATUS=./config.status} -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false -SHELL=\${CONFIG_SHELL-$SHELL} -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -## --------------------- ## -## M4sh Initialization. ## -## --------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in - *posix*) set -o posix ;; -esac - -fi - - - - -# PATH needs CR -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Support unset when possible. -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -as_nl=' -' -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -case $0 in - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - { (exit 1); exit 1; } -fi - -# Work around bugs in pre-3.0 UWIN ksh. -for as_var in ENV MAIL MAILPATH -do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -for as_var in \ - LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ - LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ - LC_TELEPHONE LC_TIME -do - if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then - eval $as_var=C; export $as_var - else - ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var - fi -done - -# Required to use basename. -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - - -# Name of the executable. -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# CDPATH. -$as_unset CDPATH - - - - as_lineno_1=$LINENO - as_lineno_2=$LINENO - test "x$as_lineno_1" != "x$as_lineno_2" && - test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { - - # Create $as_me.lineno as a copy of $as_myself, but with $LINENO - # uniformly replaced by the line number. The first 'sed' inserts a - # line-number line after each line using $LINENO; the second 'sed' - # does the real work. The second script uses 'N' to pair each - # line-number line with the line containing $LINENO, and appends - # trailing '-' during substitution so that $LINENO is not a special - # case at line end. - # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the - # scripts with optimization help from Paolo Bonzini. Blame Lee - # E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 - { (exit 1); exit 1; }; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in --n*) - case `echo 'x\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - *) ECHO_C='\c';; - esac;; -*) - ECHO_N='-n';; -esac - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir -fi -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p=: -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 - -# Save the log message, to keep $[0] and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by HTK $as_me 3.4.1, which was -generated by GNU Autoconf 2.61. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -cat >>$CONFIG_STATUS <<_ACEOF -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -ac_cs_version="\\ -HTK config.status 3.4.1 -configured by $0, generated by GNU Autoconf 2.61, - with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" - -Copyright (C) 2006 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - echo "$ac_cs_version"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - CONFIG_FILES="$CONFIG_FILES $ac_optarg" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - { echo "$as_me: error: ambiguous option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) { echo "$as_me: error: unrecognized option: $1 -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 - CONFIG_SHELL=$SHELL - export CONFIG_SHELL - exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "HTKLib/Makefile") CONFIG_FILES="$CONFIG_FILES HTKLib/Makefile" ;; - "HTKTools/Makefile") CONFIG_FILES="$CONFIG_FILES HTKTools/Makefile" ;; - "HLMLib/Makefile") CONFIG_FILES="$CONFIG_FILES HLMLib/Makefile" ;; - "HLMTools/Makefile") CONFIG_FILES="$CONFIG_FILES HLMTools/Makefile" ;; - "HTKLVRec/Makefile") CONFIG_FILES="$CONFIG_FILES HTKLVRec/Makefile" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - - *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= - trap 'exit_status=$? - { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status -' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || -{ - echo "$me: cannot create a temporary directory in ." >&2 - { (exit 1); exit 1; } -} - -# -# Set up the sed scripts for CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - -_ACEOF - - - -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - cat >conf$$subs.sed <<_ACEOF -SHELL!$SHELL$ac_delim -PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim -PACKAGE_NAME!$PACKAGE_NAME$ac_delim -PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim -PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim -PACKAGE_STRING!$PACKAGE_STRING$ac_delim -PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim -exec_prefix!$exec_prefix$ac_delim -prefix!$prefix$ac_delim -program_transform_name!$program_transform_name$ac_delim -bindir!$bindir$ac_delim -sbindir!$sbindir$ac_delim -libexecdir!$libexecdir$ac_delim -datarootdir!$datarootdir$ac_delim -datadir!$datadir$ac_delim -sysconfdir!$sysconfdir$ac_delim -sharedstatedir!$sharedstatedir$ac_delim -localstatedir!$localstatedir$ac_delim -includedir!$includedir$ac_delim -oldincludedir!$oldincludedir$ac_delim -docdir!$docdir$ac_delim -infodir!$infodir$ac_delim -htmldir!$htmldir$ac_delim -dvidir!$dvidir$ac_delim -pdfdir!$pdfdir$ac_delim -psdir!$psdir$ac_delim -libdir!$libdir$ac_delim -localedir!$localedir$ac_delim -mandir!$mandir$ac_delim -DEFS!$DEFS$ac_delim -ECHO_C!$ECHO_C$ac_delim -ECHO_N!$ECHO_N$ac_delim -ECHO_T!$ECHO_T$ac_delim -LIBS!$LIBS$ac_delim -build_alias!$build_alias$ac_delim -host_alias!$host_alias$ac_delim -target_alias!$target_alias$ac_delim -SET_MAKE!$SET_MAKE$ac_delim -AWK!$AWK$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -LDFLAGS!$LDFLAGS$ac_delim -CPPFLAGS!$CPPFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim -EXEEXT!$EXEEXT$ac_delim -OBJEXT!$OBJEXT$ac_delim -INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim -INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim -INSTALL_DATA!$INSTALL_DATA$ac_delim -LN_S!$LN_S$ac_delim -RANLIB!$RANLIB$ac_delim -XMKMF!$XMKMF$ac_delim -CPP!$CPP$ac_delim -GREP!$GREP$ac_delim -EGREP!$EGREP$ac_delim -LIBOBJS!$LIBOBJS$ac_delim -POW_LIB!$POW_LIB$ac_delim -build!$build$ac_delim -build_cpu!$build_cpu$ac_delim -build_vendor!$build_vendor$ac_delim -build_os!$build_os$ac_delim -host!$host$ac_delim -host_cpu!$host_cpu$ac_delim -host_vendor!$host_vendor$ac_delim -host_os!$host_os$ac_delim -TRADHTK!$TRADHTK$ac_delim -TRADHTKBIN!$TRADHTKBIN$ac_delim -make_all!$make_all$ac_delim -make_install!$make_install$ac_delim -HSLAB!$HSLAB$ac_delim -HGRAF!$HGRAF$ac_delim -BINARY_EXTENSION!$BINARY_EXTENSION$ac_delim -LTLIBOBJS!$LTLIBOBJS$ac_delim -_ACEOF - - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 73; then - break - elif $ac_last_try; then - { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 -echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} - { (exit 1); exit 1; }; } - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` -if test -n "$ac_eof"; then - ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` - ac_eof=`expr $ac_eof + 1` -fi - -cat >>$CONFIG_STATUS <<_ACEOF -cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end -_ACEOF -sed ' -s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g -s/^/s,@/; s/!/@,|#_!!_#|/ -:n -t n -s/'"$ac_delim"'$/,g/; t -s/$/\\/; p -N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n -' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF -:end -s/|#_!!_#|//g -CEOF$ac_eof -_ACEOF - - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/ -s/:*\${srcdir}:*/:/ -s/:*@srcdir@:*/:/ -s/^\([^=]*=[ ]*\):*/\1/ -s/:*$// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF -fi # test -n "$CONFIG_FILES" - - -for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 -echo "$as_me: error: Invalid tag $ac_tag." >&2;} - { (exit 1); exit 1; }; };; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 -echo "$as_me: error: cannot find input file: $ac_f" >&2;} - { (exit 1); exit 1; }; };; - esac - ac_file_inputs="$ac_file_inputs $ac_f" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input="Generated from "`IFS=: - echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { echo "$as_me:$LINENO: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - fi - - case $ac_tag in - *:-:* | *:-) cat >"$tmp/stdin";; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - { as_dir="$ac_dir" - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 -echo "$as_me: error: cannot create directory $as_dir" >&2;} - { (exit 1); exit 1; }; }; } - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= - -case `sed -n '/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p -' $ac_file_inputs` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF - sed "$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s&@configure_input@&$configure_input&;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && - { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&5 -echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined." >&2;} - - rm -f "$tmp/stdin" - case $ac_file in - -) cat "$tmp/out"; rm -f "$tmp/out";; - *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;; - esac - ;; - :H) - # - # CONFIG_HEADER - # -_ACEOF - -# Transform confdefs.h into a sed script `conftest.defines', that -# substitutes the proper values into config.h.in to produce config.h. -rm -f conftest.defines conftest.tail -# First, append a space to every undef/define line, to ease matching. -echo 's/$/ /' >conftest.defines -# Then, protect against being on the right side of a sed subst, or in -# an unquoted here document, in config.status. If some macros were -# called several times there might be several #defines for the same -# symbol, which is useless. But do not sort them, since the last -# AC_DEFINE must be honored. -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where -# NAME is the cpp macro being defined, VALUE is the value it is being given. -# PARAMS is the parameter list in the macro definition--in most cases, it's -# just an empty string. -ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' -ac_dB='\\)[ (].*,\\1define\\2' -ac_dC=' ' -ac_dD=' ,' - -uniq confdefs.h | - sed -n ' - t rset - :rset - s/^[ ]*#[ ]*define[ ][ ]*// - t ok - d - :ok - s/[\\&,]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p - ' >>conftest.defines - -# Remove the space that was appended to ease matching. -# Then replace #undef with comments. This is necessary, for -# example, in the case of _POSIX_SOURCE, which is predefined and required -# on some systems where configure will not decide to define it. -# (The regexp can be short, since the line contains either #define or #undef.) -echo 's/ $// -s,^[ #]*u.*,/* & */,' >>conftest.defines - -# Break up conftest.defines: -ac_max_sed_lines=50 - -# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" -# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" -# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1" -# et cetera. -ac_in='$ac_file_inputs' -ac_out='"$tmp/out1"' -ac_nxt='"$tmp/out2"' - -while : -do - # Write a here document: - cat >>$CONFIG_STATUS <<_ACEOF - # First, check the format of the line: - cat >"\$tmp/defines.sed" <<\\CEOF -/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def -/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def -b -:def -_ACEOF - sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS - echo 'CEOF - sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS - ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in - sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail - grep . conftest.tail >/dev/null || break - rm -f conftest.defines - mv conftest.tail conftest.defines -done -rm -f conftest.defines conftest.tail - -echo "ac_result=$ac_in" >>$CONFIG_STATUS -cat >>$CONFIG_STATUS <<\_ACEOF - if test x"$ac_file" != x-; then - echo "/* $configure_input */" >"$tmp/config.h" - cat "$ac_result" >>"$tmp/config.h" - if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then - { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f $ac_file - mv "$tmp/config.h" $ac_file - fi - else - echo "/* $configure_input */" - cat "$ac_result" - fi - rm -f "$tmp/out12" - ;; - - - esac - -done # for ac_tag - - -{ (exit 0); exit 0; } -_ACEOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - - -case "$enable_trad_htk" in - yes) -cat< - - * exp.linux_icc: Turn off static linking in icc. - -2002-08-13 Gunnar Evermann - - * exp.linux: - * env.linux: Turn on warnings in gcc. - -2002-01-16 Gunnar Evermann - - * exp.linux_icc: New file for Intel C++ Compiler. - -2002-01-10 Gunnar Evermann - - * exp.linux: - * env.linux: Add -g flag to HTKCF. - -2000-09-25 Gunnar Evermann - - * exp.linux: Change X dir to /usr/X11R6. - -2000-09-04 Gunnar Evermann - - * exp.*: Fix syntax. - diff --git a/env/env.decosf_alpha b/env/env.decosf_alpha deleted file mode 100644 index ec24660..0000000 --- a/env/env.decosf_alpha +++ /dev/null @@ -1,6 +0,0 @@ -setenv CPU decosf_alpha -setenv HTKCF '-O2 -DDEC_AUDIO' -setenv HTKCC 'cc' -setenv HTKLF '-lmme' -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.hp700 b/env/env.hp700 deleted file mode 100644 index fdad1cc..0000000 --- a/env/env.hp700 +++ /dev/null @@ -1,7 +0,0 @@ -setenv CPU hp700 -setenv HTKCF '+e -O -I/usr/include/X11R5 -I/usr/include/audio -I/opt/audio/include -D_HPUX_SOURCE -Aa -DHPUX_AUDIO -DUSE_TIMER' -setenv HTKLF '-L/opt/audio/lib -lAlib' -setenv HTKCC 'cc' -setenv LPATH /lib:/usr/lib:/usr/lib/X11R5 -setenv SHRLF '-b' -setenv LIBEXT 'sl' diff --git a/env/env.linux b/env/env.linux deleted file mode 100644 index 3ee97f8..0000000 --- a/env/env.linux +++ /dev/null @@ -1,9 +0,0 @@ -setenv HTKCF '-ansi -Wall -Wno-switch -g -O2 -DOSS_AUDIO' -setenv HTKLF '-L/usr/X11/lib' -setenv HTKCC 'gcc' -setenv Arch linux -setenv Objcopy "echo" -setenv PRILF '-x' -setenv CPU linux -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.linux-icc8-P4 b/env/env.linux-icc8-P4 deleted file mode 100644 index 0b5696e..0000000 --- a/env/env.linux-icc8-P4 +++ /dev/null @@ -1,10 +0,0 @@ -source /opt/intel_cc_80/bin/iccvars.sh -setenv HTKCF '-DNDEBUG -DOSS_AUDIO -fast -xN ' -setenv HTKLF '-fast -xN -L/usr/X11R6/lib' -setenv HTKCC 'icc' -setenv Arch LINUX -setenv Objcopy "echo" -setenv PRILF '-x' -setenv CPU linux -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.sgi b/env/env.sgi deleted file mode 100644 index 9515f12..0000000 --- a/env/env.sgi +++ /dev/null @@ -1,6 +0,0 @@ -setenv CPU sgi -setenv HTKCF '-O -DSGI_AUDIO' -setenv HTKLF '-laudio -lmalloc' -setenv HTKCC 'cc' -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.sun4_solaris b/env/env.sun4_solaris deleted file mode 100644 index a9f5a4b..0000000 --- a/env/env.sun4_solaris +++ /dev/null @@ -1,7 +0,0 @@ -setenv CPU sun4_solaris -setenv HTKCC 'cc' -setenv HTKCF '-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -setenv HTKLF '-ldl -lsocket -lnsl -lintl' -setenv LD_LIBRARY_PATH /usr/openwin/lib -setenv SHRLF '-shared' -setenv LIBEXT 'so' diff --git a/env/env.sun4_solaris_cc b/env/env.sun4_solaris_cc deleted file mode 100644 index 96b3df7..0000000 --- a/env/env.sun4_solaris_cc +++ /dev/null @@ -1,5 +0,0 @@ -setenv CPU sun4_solaris -setenv HTKCC 'cc' -setenv HTKCF '-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -setenv HTKLF '-ldl -lsocket -lnsl -lintl' -setenv LD_LIBRARY_PATH /usr/openwin/lib diff --git a/env/env.sun4_solaris_gcc b/env/env.sun4_solaris_gcc deleted file mode 100644 index c2ee50d..0000000 --- a/env/env.sun4_solaris_gcc +++ /dev/null @@ -1,5 +0,0 @@ -setenv CPU sun4_solaris -setenv HTKCF '-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP' -setenv HTKLF '-ldl -lsocket -lnsl -lintl' -setenv HTKCC 'gcc' -setenv LPATH /usr/openwin/lib diff --git a/env/exp.decosf_alpha b/env/exp.decosf_alpha deleted file mode 100644 index 74bf96a..0000000 --- a/env/exp.decosf_alpha +++ /dev/null @@ -1,6 +0,0 @@ -export CPU=decosf_alpha -export HTKCF='-O2 -DDEC_AUDIO' -export HTKCC='cc' -export HTKLF='-lmme' -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.hp700 b/env/exp.hp700 deleted file mode 100644 index ccfc138..0000000 --- a/env/exp.hp700 +++ /dev/null @@ -1,7 +0,0 @@ -export CPU=hp700 -export HTKCF='+e -O -I/usr/include/X11R5 -I/usr/include/audio -I/opt/audio/include -D_HPUX_SOURCE -Aa -DHPUX_AUDIO -DUSE_TIMER' -export HTKLF='-L/opt/audio/lib -lAlib' -export HTKCC='cc' -export LPATH=/lib:/usr/lib:/usr/lib/X11R5 -export SHRLF='-b' -export LIBEXT='sl' diff --git a/env/exp.linux b/env/exp.linux deleted file mode 100644 index c244509..0000000 --- a/env/exp.linux +++ /dev/null @@ -1,9 +0,0 @@ -export HTKCF='-ansi -Wall -Wno-uninitialized -Wno-switch -g -O3 -DOSS_AUDIO -DNDEBUG' -export HTKLF='-L/usr/X11R6/lib' -export HTKCC='/usr/local/gcc-3.1.1/bin/gcc' -export Arch=linux -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux-dec b/env/exp.linux-dec deleted file mode 100644 index d48f889..0000000 --- a/env/exp.linux-dec +++ /dev/null @@ -1,9 +0,0 @@ -export HTKCF='-ansi -Wall -Wno-switch -g -O3 -DOSS_AUDIO -DNDEBUG -DNO_LAT_LM' -export HTKLF='-L/usr/X11R6/lib' -export HTKCC='/usr/local/gcc-3.1.1/bin/gcc' -export Arch=linux -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux-icc7-P4 b/env/exp.linux-icc7-P4 deleted file mode 100644 index 8568141..0000000 --- a/env/exp.linux-icc7-P4 +++ /dev/null @@ -1,10 +0,0 @@ -. /opt/intel/compiler70/ia32/bin/iccvars.sh -export HTKCF='-DNDEBUG -DOSS_AUDIO -O3 -ip -xW -tpp7 ' -export HTKLF='-xW -L/usr/X11R6/lib' -export HTKCC='icc' -export Arch=LINUX -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux-icc8-P4 b/env/exp.linux-icc8-P4 deleted file mode 100644 index d54da25..0000000 --- a/env/exp.linux-icc8-P4 +++ /dev/null @@ -1,10 +0,0 @@ -. /opt/intel_cc_80/bin/iccvars.sh -export HTKCF='-DNDEBUG -DOSS_AUDIO -fast -xN ' -export HTKLF='-fast -xN -L/usr/X11R6/lib' -export HTKCC='icc' -export Arch=LINUX -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.linux_icc b/env/exp.linux_icc deleted file mode 100644 index 3d03e2c..0000000 --- a/env/exp.linux_icc +++ /dev/null @@ -1,9 +0,0 @@ -export HTKCF='-DNDEBUG -DOSS_AUDIO -O3 -ip -tpp6 ' -export HTKLF='-L/usr/X11R6/lib' -export HTKCC='icc' -export Arch=linux -export Objcopy="echo" -export PRILF='-x' -export CPU=linux -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.sgi b/env/exp.sgi deleted file mode 100644 index a21d84a..0000000 --- a/env/exp.sgi +++ /dev/null @@ -1,6 +0,0 @@ -export CPU=sgi -export HTKCF='-O -DSGI_AUDIO' -export HTKLF='-laudio -lmalloc' -export HTKCC='cc' -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.sun4_solaris b/env/exp.sun4_solaris deleted file mode 100644 index cd01f68..0000000 --- a/env/exp.sun4_solaris +++ /dev/null @@ -1,7 +0,0 @@ -export CPU=sun4_solaris -export HTKCC='cc' -export HTKCF='-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -export HTKLF='-ldl -lsocket -lnsl -lintl' -export LD_LIBRARY_PATH=/usr/openwin/lib -export SHRLF='-shared' -export LIBEXT='so' diff --git a/env/exp.sun4_solaris_cc b/env/exp.sun4_solaris_cc deleted file mode 100644 index d4b8c21..0000000 --- a/env/exp.sun4_solaris_cc +++ /dev/null @@ -1,5 +0,0 @@ -export CPU=sun4_solaris -export HTKCC='cc' -export HTKCF='-Xa -xO2 -I/usr/openwin/include -DSOLARIS16_AUDIO -DBSD_COMP' -export HTKLF='-ldl -lsocket -lnsl -lintl' -export LD_LIBRARY_PATH=/usr/openwin/lib diff --git a/env/exp.sun4_solaris_gcc b/env/exp.sun4_solaris_gcc deleted file mode 100644 index 45893d6..0000000 --- a/env/exp.sun4_solaris_gcc +++ /dev/null @@ -1,5 +0,0 @@ -export CPU=sun4_solaris -export HTKCF='-ansi -I/usr/openwin/include -O2 -DSOLARIS16_AUDIO -DBSD_COMP' -export HTKLF='-ldl -lsocket -lnsl -lintl' -export HTKCC='gcc' -export LPATH=/usr/openwin/lib diff --git a/install-sh b/install-sh deleted file mode 100644 index 11870f1..0000000 --- a/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - : -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=$mkdirprog - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f "$src" ] || [ -d "$src" ] - then - : - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - : - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - : - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' - ' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - : - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - : - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/samples/HTKDemo/ChangeLog b/samples/HTKDemo/ChangeLog new file mode 100755 index 0000000..7ff54bc --- /dev/null +++ b/samples/HTKDemo/ChangeLog @@ -0,0 +1,7 @@ +2000-10-13 Gunnar Evermann + + * toolconfs/*.conf: Remove BYTEORDER=NOVAX lines. + + * runDemo.pl: + * runDemo: Set $edFile=$monEdFile by default. + From "Aldebaro Klautau" diff --git a/samples/HTKDemo/MakeProtoHMMSet b/samples/HTKDemo/MakeProtoHMMSet new file mode 100755 index 0000000..9fdce9b --- /dev/null +++ b/samples/HTKDemo/MakeProtoHMMSet @@ -0,0 +1,339 @@ +#!/usr/bin/perl + +# +# This script can be used to produce prototype HMMSets for +# PLAINHS, TIEDHS and DISCRETEHS systems +# + +# Global Variables +$nStates=0; # Number of active HMM states +$nStreams=0; # Number of streams +$vecSize=0; # Size of feature vector +$pKind=""; # Parameter kind +$cKind=""; # Covariance kind +$hsKind=""; # System kind +$outDir=""; # Output HMMSet directory +$configParams; # Global store of config parameters + + +#***************************** START MAIN *********************************** +$|=1; #Force buffer flush on STDOUT + +if ($ARGV[0]){ + &ReadPCF(); + &SetVars(); + &TestDirEmpty(); + &WriteHSet(); +}else{ + print "USAGE: MakeProtoHMMSet ConfigFile\n"; +} + +#******************************* END MAIN ********************************* + +#************************ Util Functions ********************************** + +#------------------------------------- +# ReadPCF: Reads the Proto Config File +#------------------------------------- +sub ReadPCF { + +local($validData,$param,$val)=0; + +while(<>){ + if(/\/){ + $validData=0; + } + if($validData){ + ($param,$val)=split(/ *: */, $_); + if (($param =~ /hmmList/)||($param =~ /outDir/)||($param =~ /parmKind/)) { + }elsif ($param =~ /mixes/){ + @mixes=split(/ +/, $_); + }elsif ($param =~ /sWidths/){ + @sWidths=split(/ +/, $_); + }else{ + $val =~ tr/A-Z/a-z/; + } + chop($val); + $configParams{$param}=$val; + write; + } + if(/\/ || /\/){ + $validData=1; + } +} +format STDOUT_TOP = + Proto Config File Read + ====================== +Parameter Value +----------------------- +. +format STDOUT= +@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +$param,$val +. +} + +#----------------------------------------- +# SetVars: Set variable from config params +#----------------------------------------- +sub SetVars { + +$nStates = $configParams{"nStates"}; +($nStates >= 1) || die "nStates must be >= 1"; +$nStreams = $configParams{"nStreams"}; +($nStreams =~ /^[1234]/) || die "nStreams must be 1,2,3 or 4"; +$vecSize = $configParams{"vecSize"}; +($vecSize >= 1) || die "vecSize must be >= 1"; +$hsKind = $configParams{"hsKind"}; +($hsKind =~ /^[pPtTdD]/) || die "hsKind must be P, T or D"; +$cKind = $configParams{"covKind"}; +($cKind =~ /^[dDfF]/) || die "covKind must be F or D"; +$pKind = $configParams{"parmKind"}; +if ($hsKind=~/^[dD]/){ + ($pKind=~/[vV]$/) || die "If hsKind is D then parmKind must have _V appended"; +} +if ($hsKind=~/^[pPtT]/){ + if($pKind=~/[vV]$/){ + die "If hsKind is not D then parmKind must not have _V appended"; + } +} +$outDir = $configParams{"outDir"}; +opendir(OUTDIR,$outDir) || die "Can't open $outDir"; +$hmmList = $configParams{"hmmList"}; +(-f $hmmList) || die "Cannot find HMM list file $hmmList"; +} + +#----------------------------------------------------------------- +# TestDirEmpty: Test if outDir is empty and prompt for clearing it +#----------------------------------------------------------------- +sub TestDirEmpty { + @nFiles = grep(!/^\./, readdir(OUTDIR)); #Forget about . files + if($nFiles[0]){ + print "\n$outDir not empty clear it Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + print "\nRemoving files from $outDir\n"; + $nFiles[0] = unlink(<$outDir/*>); + print "Removed $nFiles[0] files\n"; + }else{ + print "\nDirectory $outDir unaltered\n"; + } + } +} + +#************************ HMM Functions ********************************** + +#------------------------------------ +# WriteGlobOpts: Write global options +#------------------------------------ +sub WriteGlobOpts { + local($fleHandle,$hmmName)=@_; + + printf($fleHandle " ~o %d <$pKind> %d ",$vecSize,$nStreams); + for ($i=1; $i<=$nStreams; $i++) { + printf($fleHandle "%d ",$sWidths[$i]); + } + printf($fleHandle "\n"); + (($hsKind=~/^[tT]/)&&($fleHandle=~/MACRO/)) || printf($fleHandle " ~h \"$hmmName\"\n"); +} + +#------------------------------------------------------- +# WriteDiagCMixtures: write a diagonal covariance mixture +#------------------------------------------------------- +sub WriteDiagCMixtures { + local($streamNum)=@_; + local($i,$j,$k,$mixWght)=0; + + $mixWght=1/$mixes[$streamNum]; + + for ($i=1; $i<=$mixes[$streamNum]; $i++){ + printf(PROTO " %d %1.4f\n",$i,$mixWght); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($j=1; $j<=$sWidths[$streamNum]; $j++){ + printf(PROTO "0.0 "); + } + printf(PROTO "\n"); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($k=1; $k<=$sWidths[$streamNum]; $k++){ + printf(PROTO "1.0 "); + } + printf(PROTO "\n"); + } +} + +#------------------------------------------------------- +# WriteFullCMixtures: write the full covariance mixtures +#------------------------------------------------------- +sub WriteFullCMixtures { + local($streamNum)=@_; + local($i,$j,$k,$mixWght,$tmpVecSize)=0; + + $mixWght=1/$mixes[$streamNum]; + $tmpVecSize=$sWidths[$streamNum]; + + for ($i=1; $i<=$mixes[$streamNum]; $i++){ + printf(PROTO " %d %1.4f\n",$i,$mixWght); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($j=1; $j<=$sWidths[$streamNum]; $j++){ + printf(PROTO "0.0 "); + } + printf(PROTO "\n"); + printf(PROTO " %d\n",$sWidths[$streamNum]); + while ($tmpVecSize>=1){ + for ($k=1; $k<=$tmpVecSize; $k++){ + if ($k==1){ + printf(PROTO "1.0 "); + }else{ + printf(PROTO "0.0 "); + } + } + printf(PROTO "\n"); + $tmpVecSize--; + } + $tmpVecSize=$sWidths[$streamNum]; + } +} + +#----------------------------------------------- +# WriteTiedMixes: Write tied mixes to macro file +#----------------------------------------------- +sub WriteTiedMixes { + local($i,$j,$k)=0; + + if (-r $outDir."/newMacros"){ + unlink(<$outDir/newMacros>); + } + open(MACRO, ">>$outDir/newMacros") || die "Cannot open $outDir/newMacros for writing"; + &WriteGlobOpts(MACRO); + for ($i=1; $i<=$nStreams; $i++){ + for ($j=1; $j<=$mixes[$i]; $j++){ + printf(MACRO "~m \"TM_${i}_${j}\"\n"); + printf(MACRO " %d\n",$sWidths[$i]); + for ($k=1; $k<=$sWidths[$i]; $k++){ + printf(MACRO "0.0 "); + } + printf(MACRO "\n"); + printf(MACRO " %d\n",$sWidths[$i]); + for ($k=1; $k<=$sWidths[$i]; $k++){ + printf(MACRO "1.0 "); + } + printf(MACRO "\n"); + } + } +} + +#---------------------------------------------- +# WriteDProbs: Write the discrete probabilities +#---------------------------------------------- +sub WriteDProbs { + local($s)=@_; + + printf(PROTO " %d*$mixes[$s]\n",-2371.8*log(1/$mixes[$s])); +} + +#----------------------------------------------- +# WriteTiedWghts: Write the tied mixture weights +#----------------------------------------------- +sub WriteTiedWghts { + local($streamNum)=@_; + + printf(PROTO " \"TM_${streamNum}_\"\n"); + printf(PROTO "%e*$mixes[$streamNum]\n",1/$mixes[$streamNum]); +} + +#---------------------------------------------- +# WriteStates: Write the contents of the states +#---------------------------------------------- +sub WriteStates { + local($i,$j)=0; + + for ($i=1; $i<=$nStates; $i++){ + printf(PROTO " %d ",$i+1); + for ($k=1; $k<=$nStreams; $k++){ + printf(PROTO "%d ",$mixes[$k]); + } + printf(PROTO "\n"); + for ($j=1; $j<=$nStreams; $j++){ + printf(PROTO " %d\n",$j); + if ($hsKind =~ /^[Dd]/){ + &WriteDProbs($j); + }elsif ($hsKind =~ /^[pP]/){ + if ($cKind =~ /^[dD]/){ + &WriteDiagCMixtures($j); + }else{ + &WriteFullCMixtures($j); + } + }elsif ($hsKind =~ /^[Tt]/){ + &WriteTiedWghts($j); + } + } + } +} + +#----------------------------------------------------------- +# WriteTransMat: Write the contents of the transition matrix +#----------------------------------------------------------- +sub WriteTransMat { + local($i,$j)=0; + + printf(PROTO " %d\n",$nStates+2); + for ($i=1; $i<=$nStates+2; $i++){ + for ($j=1; $j<=$nStates+2; $j++){ + if (($i==1)&&($j==2)){ + printf (PROTO " 1.000e+0"); + }elsif (($i==$j)&&($i!=1)&&($i!=$nStates+2)){ + printf (PROTO " 6.000e-1"); + }elsif ($i==($j-1)){ + printf (PROTO " 4.000e-1"); + }else{ + printf (PROTO " 0.000e+0"); + } + } + printf (PROTO "\n"); + } +} + +#---------------------------------------- +# WriteHMM: Write the contents of the HMM +#---------------------------------------- +sub WriteHMM { + local($hmmName)=@_; + local($i)=0; + + open(PROTO, ">$outDir/$hmmName") || die "Cannot open $outDir/$hmmName for writing"; + &WriteGlobOpts(PROTO,$hmmName); + printf(PROTO "\n"); + printf(PROTO " %d\n",$nStates+2); + &WriteStates(); + &WriteTransMat(); + printf(PROTO "\n"); + close(PROTO); +} + +#------------------------------------------ +# WriteHSet: Write the contents of the HSet +#------------------------------------------ +sub WriteHSet { + + open(HMMLIST, $hmmList) || die "Cannot open $hmmList for reading"; + + printf "\nWriting HMMSet\n\n"; + if ($hsKind =~ /^[tT]/){ + printf "Writing Tied Mixtures to $outDir/newMacros\n"; + &WriteTiedMixes(); + printf "\n"; + } + while () { + chop($_); + printf "Writing HMMDef to $outDir/$_\n"; + &WriteHMM($_); + } + close(HMMLIST); +} + + + + diff --git a/samples/HTKDemo/README b/samples/HTKDemo/README new file mode 100755 index 0000000..c7360fa --- /dev/null +++ b/samples/HTKDemo/README @@ -0,0 +1,171 @@ + HTK Demonstration + ================= + +This directory contains the data files, auxiliary files and perl +script for simple demonstrations of HTK These demonstrations should +also be used to test new installations of HTK. + +Directory Contents +------------------ + +This directory includes the following files and directories. . + + a) this README file and a version README.NT with instructions for + use wit Windows NT. + + b) a directory called 'tidata' which contains 7 training sentences + (tr*) and 3 test sentences (te*) all by the same speaker taken + from the TIMIT prototype database. For each sentence there is a + waveform file (.adc) and a transcription (.phn). + + c) a directory called 'edfiles' which contains... + + An HLEd edit script called 'edlabs.led' . This script converts + the TIMIT transcription files to broad class transcription files + in which just the following broad class phones are distinguished + + C - consonant, V - vowel, N - nasal, + L - liquid, S - silence + + Various HLEd edit scripts which can be used to convert the basic + broad class transcriptions to context-dependent versions of + those transcriptions. + + Various HHEd edit scripts used to produce different + configurations of shared parameter models and to convert + monophones to triphones. + + d) a directory called 'networks' which contains... + + A lattice definition file called 'monLattice' for testing broad + class HMMs. + + Three lattice definition files called 'lbiLattice','rbiLattice' + and 'triLattice' for testing broad class left biphones, right + biphones and triphones respectively. + + e) a directory called 'data' which contains sub-directories into + which parameterised versions of the TIMIT data will be placed. + + f) a directory called 'lists' which contains various files listing + models, vocabulary, training & test data etc. + + g) a directory called 'protoconfs' containing the configuration + files required by MakeProtoHMMSet. + + h) a directory called 'configs' which contains example demo + configuration files. + + i) a directory called 'results' which contains results files for + each of the demo configurations found in the 'configs' + directory. + + j) a directory called 'labels' which contains sub-directories into + which HTK format label files for both monophones and context + dependent phones are placed. + + k) a directory called 'toolconfs' which contains configuration + files for each HTK tool used in this demo. + + l) a file called 'outaudio' which contains the recognition output + generated by HVite running in direct audion mode. + + m) A perl script called 'runDemo', which is invoked to run this + demo. + + n) A perl script called 'runDemo.pl', for use on Windows NT + +This directory does not include the following empty directories +you MUST create to run HTK Demo. + + a) a directory called 'accs' which contains sub-directories into + which accumulator files produced by HERest running in parallel + mode will be dumped. + + b) a directory called 'hmms' which contains sub-directories, + 'hmm.0', 'hmm.1', 'hmm.2', 'hmm.3', 'tmp' into which hmms + at various stages of training will be placed. + + c) a directory called 'proto' into which the script MakeProtoHMMSet + puts the required prototype HMMSet. + + d) a directory called 'test' into which recognition files produced + by HVite are placed. + +Running The Demo +---------------- + +The operation of this demo is controlled by parameters set in a demo +configuration file (dcf). The format of this file is given in the file +'DcfFormat' contained in the 'configs' directory. It would be useful +to view that file whilst reading the rest of this README. + +The dcf is designed to be flexible and allow the user to train and +test a wide variety of HMM configurations. + +As mentioned in sections k and l above the directory 'configs' +contains a number of example dcfs which produce a variety of monophone +and triphone HMM systems. The directory 'results' contains the +recognition results obtained with each system. Each dcf has a comment +field in it describing the system which it produces. + +In all of the example scripts, tools to perform data preparation, +training and recognition are invoked. If the user is interested only +in the operation of one tool or a subset of tools then this can be +achieved by editing the dcf. + + +To run the demo invoke the script 'runDemo' contained in the 'HTKDemo' +directory supplying a demo configuration file as an argument. + +For example to produce a single mixture, three stream monophone system +type + + $ cd HTKDemo + $ ./runDemo configs/monPlainM1S3.dcf + +As the script runs the user will be prompted if the target directory +for any process is not empty e.g. + + labels/bcplabs/tri not empty, overwrite using HLEd Y/N?: + +This allows the user to skip over parts of the demo when performing +repeated runs. + + Points To Note + -------------- +1. Not all combinations of configuration parameters are allowed. For + example there is not enough training data to train either full + covariance or multiple mixture triphones. + +2. When generating a context dependent system (Context: T,L or R in + the dcf) the user will see the prompt. + + Has the appropriate monophone system been generated Y/N?: + + Only answer Y to this if the appropriate monophone system, for the + context dependent system requested, exists in all stages of + training. Answering N causes the correct monophone system to be + built. + +3. When generating a TIED or a SHARED context dependent system + (hsKind: T or S in the dcf) a PLAIN context dependent system will + be generated first. + +4. When re-estimating context dependent models you will see warnings + like. + + HERest: WARNING [-2331] + UpdateModels: V-V+C[24] copied: only 1 egs + + This simply means that the triphone V-V+C only occurred once in the + training data and hence HERest was unable to re-estimate the model + parameters. + +5. The coding of data is different for the cases of direct audio and + file based speech recognition. An easy mistake to make with this + demo is to run the direct audio demo and then forget to recode the + training data for subsequent runs of file based recognition. + +Dave Ollason +06/11/95 diff --git a/samples/HTKDemo/README.NT b/samples/HTKDemo/README.NT new file mode 100755 index 0000000..4473c62 --- /dev/null +++ b/samples/HTKDemo/README.NT @@ -0,0 +1,173 @@ + HTK Demonstration + ================= + +This directory contains the data files, auxiliary files and +perl script for simple demonstrations of HTK V2.2. These +demonstrations should also be used to test new installations +of HTK. + +Directory Contents +------------------ + +This directory includes the following files and directories. . + + a) this README file and a version README.NT with instructions for + use wit Windows NT. + + b) a directory called 'tidata' which contains 7 training sentences + (tr*) and 3 test sentences (te*) all by the same speaker taken + from the TIMIT prototype database. For each sentence there is a + waveform file (.adc) and a transcription (.phn). + + c) a directory called 'edfiles' which contains... + + An HLEd edit script called 'edlabs.led' . This script converts + the TIMIT transcription files to broad class transcription files + in which just the following broad class phones are distinguished + + C - consonant, V - vowel, N - nasal, + L - liquid, S - silence + + Various HLEd edit scripts which can be used to convert the basic + broad class transcriptions to context-dependent versions of + those transcriptions. + + Various HHEd edit scripts used to produce different + configurations of shared parameter models and to convert + monophones to triphones. + + d) a directory called 'networks' which contains... + + A lattice definition file called 'monLattice' for testing broad + class HMMs. + + Three lattice definition files called 'lbiLattice','rbiLattice' + and 'triLattice' for testing broad class left biphones, right + biphones and triphones respectively. + + e) a directory called 'data' which contains sub-directories into + which parameterised versions of the TIMIT data will be placed. + + f) a directory called 'lists' which contains various files listing + models, vocabulary, training & test data etc. + + g) a directory called 'protoconfs' containing the configuration + files required by MakeProtoHMMSet. + + h) a directory called 'configs' which contains example demo + configuration files. + + i) a directory called 'results' which contains results files for + each of the demo configurations found in the 'configs' + directory. + + j) a directory called 'labels' which contains sub-directories into + which HTK format label files for both monophones and context + dependent phones are placed. + + k) a directory called 'toolconfs' which contains configuration + files for each HTK tool used in this demo. + + l) a file called 'outaudio' which contains the recognition output + generated by HVite running in direct audion mode. + + m) A perl script called 'runDemo', for use on Linux, Unix and Mac OS X. + + n) A perl script called 'runDemo.pl', which is invoked to run this + demo. + +This directory does not include the following empty directories +you MUST create to run HTK Demo. + + a) a directory called 'accs' which contains sub-directories into + which accumulator files produced by HERest running in parallel + mode will be dumped. + + b) a directory called 'hmms' which contains sub-directories, + 'hmm.0', 'hmm.1', 'hmm.2', 'hmm.3', 'tmp' into which hmms + at various stages of training will be placed. + + c) a directory called 'proto' into which the script MakeProtoHMMSet + puts the required prototype HMMSet. + + d) a directory called 'test' into which recognition files produced + by HVite are placed. + + +Running The Demo +---------------- + +The operation of this demo is controlled by parameters set in a +demo configuration file (dcf). The format of this file is given +in the file 'DcfFormat' contained in the 'configs' directory. +It would be useful to view that file whilst reading the rest of +this README. +The dcf is designed to be flexible and allow the user to train and +test a wide variety of HMM configurations. +As mentioned in sections k and l above the directory 'configs' +contains a number of example dcfs which produce a variety of +monophone and triphone HMM systems. The directory 'results' +contains the recognition results obtained with each system. +Each dcf has a comment field in it describing the system which +it produces. +In all of the example scripts, tools to perform data preparation, +training and recognition are invoked. If the user is interested +only in the operation of one tool or a subset of tools then this +can be achieved by editing the dcf. + + +To run the demo invoke the script 'runDemo.pl' contained in the +'HTKDemo' directory supplying a demo configuration file as +an argument. This must be done from a command window. +For example to produce a single mixture, three stream monophone +system type + + C:\HTK_V2.2> cd HTKDemo + C:\HTK_V2.2\HTKDemo> perl runDemo.pl configs\monPlainM1S3.dcf + +As the script runs the user will be prompted if the target +directory for any process is not empty e.g. + + labels/bcplabs/tri not empty, overwrite using HLEd Y/N?: + +This allows the user to skip over parts of the demo when +performing repeated runs. + + Points To Note + -------------- +1. Not all combinations of configuration parameters are allowed. + For example there is not enough training data to train either + full covariance or multiple mixture triphones. + +2. When generating a context dependent system + (Context: T,L or R in the dcf) + the user will see the prompt. + + Has the appropriate monophone system been generated Y/N?: + + Only answer Y to this if the appropriate monophone system, + for the context dependent system requested, exists in all + stages of training. Answering N causes the correct monophone + system to be built. + +3. When generating a TIED or a SHARED context dependent system + (hsKind: T or S in the dcf) + a PLAIN context dependent system will be generated first. + +4. When re-estimating context dependent models you will see + warnings like. + + HERest: WARNING [-2331] + UpdateModels: V-V+C[24] copied: only 1 egs + + This simply means that the triphone V-V+C only occurred once in the + training data and hence HERest was unable to re-estimate the model + parameters. + +5. The coding of data is different for the cases of direct audio and + file based speech recognition. An easy mistake to make with this + demo is to run the direct audio demo and then forget to recode the + training data for subsequent runs of file based recognition. + +Dave Ollason +06/11/95 diff --git a/samples/HTKDemo/accs.scr b/samples/HTKDemo/accs.scr new file mode 100755 index 0000000..80e9364 --- /dev/null +++ b/samples/HTKDemo/accs.scr @@ -0,0 +1,3 @@ +accs\hmm.2\HER1.acc +accs\hmm.2\HER2.acc +accs\hmm.2\HER3.acc diff --git a/samples/HTKDemo/codebooks/currentCodebook b/samples/HTKDemo/codebooks/currentCodebook new file mode 100755 index 0000000..3a09b23 --- /dev/null +++ b/samples/HTKDemo/codebooks/currentCodebook @@ -0,0 +1,577 @@ +326 0 1 144 3 12 12 2 +1 64 1 0 2 + -1.332013e+01 -5.497896e+00 -8.013033e+00 -9.394035e+00 -6.769001e+00 -2.261324e+00 3.239621e+00 1.145928e+00 1.620998e+00 -3.671893e+00 -4.264359e+00 4.615291e+00 + 1.217671e-01 8.626956e-02 5.353330e-02 1.542888e-01 4.952346e-02 6.900606e-02 8.926173e-02 1.003941e-01 8.551548e-02 1.679274e-01 1.873958e-01 1.655395e-01 + +1 63 2 0 3 + -2.428141e+01 -1.819709e+00 -8.735883e+00 -7.627527e+00 -2.379104e+00 -1.089385e+01 8.726978e-01 -4.211535e+00 -3.899381e+00 -5.627714e+00 -5.976184e+00 -1.096653e+00 + 9.952860e-02 1.053073e-01 1.622664e-01 1.054903e-01 1.013970e-01 1.126389e-01 1.081419e-01 9.903266e-02 1.140494e-01 1.157117e-01 1.516838e-01 1.636851e-01 + +1 62 3 0 4 + -1.826700e+01 -1.378157e+01 -7.314359e-01 -1.172788e+01 -1.156585e+01 -8.315092e-01 -6.247992e+00 1.105790e+00 5.501982e+00 -5.801931e+00 -2.307704e+00 2.195702e+00 + 4.381322e-02 8.612945e-02 6.809495e-02 1.067473e-01 6.538997e-02 9.356708e-02 6.910421e-02 4.591672e-02 4.938687e-02 1.961543e-01 1.336395e-01 1.196039e-01 + +1 61 4 0 5 + -1.055865e+01 -4.808917e+00 3.242229e+00 -1.186531e+01 -1.054073e+01 -2.751729e+00 8.709542e-01 9.743311e+00 -8.253925e+00 -4.807452e+00 -3.829618e+00 -4.380916e+00 + 3.047539e-02 4.919133e-02 6.366605e-02 9.108287e-02 1.186463e-01 3.840207e-02 5.707936e-02 6.651951e-02 5.185885e-02 8.090446e-02 1.087733e-01 8.785125e-02 + +1 60 5 0 6 + -2.241200e+01 -1.111586e+01 3.017643e+00 -7.447241e+00 -1.400202e+01 -2.002436e+00 2.388169e+00 -3.607650e+00 1.794771e+00 -1.592976e+00 -5.197089e+00 -2.334691e+00 + 4.244157e-02 1.141623e-01 1.304487e-01 4.922326e-02 8.309680e-02 9.592162e-02 7.548101e-02 1.082081e-01 1.001062e-01 8.302026e-02 9.169825e-02 7.412540e-02 + +1 59 6 0 7 + 3.711898e+00 -9.315116e+00 -1.211166e+01 -2.094493e+01 -1.571491e+01 1.489386e+01 -9.860758e+00 -1.538536e+00 -4.652604e+00 4.098885e+00 2.261133e+00 -6.650379e+00 + 4.975039e-01 1.948880e-01 1.843022e-01 1.194584e-01 6.771430e-02 7.725070e-02 7.543814e-02 7.510831e-02 6.052018e-02 1.238519e-01 5.996810e-02 1.269223e-01 + +1 58 7 0 8 + -2.606512e+01 -3.312448e+00 -3.450781e+00 -1.900878e+01 5.191413e+00 -9.296146e+00 -2.242417e+00 2.509914e+00 1.168778e+00 1.058944e+00 -6.839632e-01 -4.887366e-01 + 1.550194e-01 2.363468e-01 1.484009e-01 1.163004e-01 6.004422e-02 8.466829e-02 8.647617e-02 1.097739e-01 1.369237e-01 1.184678e-01 1.603563e-01 1.277673e-01 + +1 57 8 0 9 + -1.535011e+00 -9.227636e+00 6.542010e-01 -6.159214e+00 -1.321899e+01 -3.471297e+00 -1.125224e+01 5.267863e+00 4.134365e+00 -7.104057e+00 -9.933346e+00 -3.724604e-01 + 1.568672e-01 5.939159e-02 7.334877e-02 6.418339e-02 3.447516e-02 7.720654e-02 5.421505e-02 5.929011e-02 6.155217e-02 1.715725e-01 9.662595e-02 1.012785e-01 + +1 56 9 0 10 + -1.634323e+01 -8.147833e-01 -6.308084e+00 -3.281217e+00 -5.497429e+00 -2.247097e+00 -1.263682e+00 4.237728e-01 -2.375553e+00 1.671677e+00 4.953179e-01 -6.430727e-01 + 4.214413e-02 1.746842e-01 1.222575e-01 1.429757e-01 1.185150e-01 1.203207e-01 1.563180e-01 1.443712e-01 1.803027e-01 2.196311e-01 2.539898e-01 2.377079e-01 + +1 55 10 0 11 + 3.109400e+00 -1.704451e+01 -1.080255e+01 -5.186090e+00 -1.697262e+01 -2.796563e-01 -8.980132e+00 1.210890e+01 -2.985568e-01 -3.369007e+00 -3.974430e+00 -7.292808e+00 + 2.679836e-01 1.572599e-01 5.947270e-02 4.126942e-02 5.656835e-02 8.545762e-02 1.118668e-01 2.359081e-01 2.726641e-01 1.924956e-01 7.886582e-02 2.259856e-01 + +1 54 11 0 12 + -1.774982e+01 -5.844189e+00 -1.029932e+01 -1.014318e+01 -5.446605e+00 -6.755869e+00 -2.203974e+00 -3.857147e+00 -8.593474e-01 -1.779503e-02 -8.024170e-01 -5.055053e-01 + 1.428390e-01 1.987560e-01 1.092013e-01 7.130928e-02 1.331697e-01 1.151094e-01 1.463324e-01 1.038209e-01 1.291920e-01 1.868816e-01 2.397525e-01 2.437077e-01 + +1 53 12 0 13 + 4.793801e+00 -1.254261e+01 -1.785809e+01 -1.096340e+01 -7.733580e+00 8.657900e+00 -4.192000e+00 -1.802553e+00 -3.172689e+00 1.728829e+00 -1.962886e+00 -1.346349e+01 + 7.180365e-01 7.190160e-02 2.818375e-01 8.404886e-02 1.235799e-01 4.478032e-02 1.436481e-01 7.375241e-02 1.435941e-01 3.109497e-01 8.104844e-02 2.455840e-01 + +1 52 13 0 14 + -5.237680e+00 5.612197e-01 4.829641e+00 -2.249370e+00 -1.325028e+01 2.337972e+00 -5.304106e+00 -1.198791e+01 -7.007637e+00 -1.889742e+00 -6.690704e+00 3.806662e+00 + 6.410392e-02 5.359034e-02 6.285839e-02 7.731693e-02 9.716476e-02 4.938322e-02 6.702111e-02 1.196748e-01 1.110148e-01 1.268676e-01 2.805608e-01 1.274003e-01 + +1 51 14 0 15 + -1.856696e+01 -2.133432e+00 -4.538329e+00 -5.506292e-01 -1.548250e+00 1.901205e-01 -1.050967e+00 -9.318296e-01 -1.321187e+00 -1.319495e+00 -1.114581e+00 3.030719e+00 + 5.373403e-01 2.473896e-01 1.517162e-01 3.504544e-01 1.416683e-01 7.972621e-02 1.406871e-01 2.912126e-01 1.304706e-01 1.969747e-01 1.122043e-01 2.356252e-01 + +1 50 15 0 16 + 1.914711e+00 -7.695125e+00 -1.695430e+00 -5.062555e+00 -1.144955e+01 -2.352089e+00 -2.216142e+01 -6.831588e+00 -3.003233e+00 4.650522e+00 1.434380e+00 -9.389259e+00 + 3.609552e-01 1.754766e-01 5.973740e-02 4.151619e-01 1.526681e-01 5.423872e-02 1.011549e-01 6.540707e-02 1.550334e-01 1.877555e-01 1.261019e-01 3.177017e-01 + +1 49 16 0 17 + -2.636208e+00 -7.989947e+00 8.359392e+00 -1.102613e+01 -2.225401e+01 -1.048136e+01 -3.131021e+00 2.891981e+00 -7.541160e+00 1.768587e+00 5.651835e-01 1.068600e+00 + 1.866826e-01 8.408885e-02 1.134747e-01 9.765190e-02 7.743375e-02 8.098803e-02 8.031316e-02 1.172786e-01 8.653868e-02 1.105015e-01 1.397142e-01 1.413720e-01 + +1 48 17 0 18 + -2.907243e+00 -1.456393e+01 -1.105532e+01 -1.382896e+01 -6.243049e+00 7.228702e+00 -1.284407e+01 1.604308e+00 6.458684e+00 1.738513e+00 -1.033012e+01 -1.204580e+01 + 2.314663e-02 4.151437e-02 6.915086e-02 7.261164e-02 3.711876e-02 4.363470e-02 4.195368e-02 6.146155e-02 1.156818e-01 7.329082e-02 6.195374e-02 4.079808e-02 + +1 47 18 0 19 + -1.811171e+01 -1.322957e+00 -5.961321e+00 -3.528637e+00 -9.324851e-01 1.361126e+00 -7.159860e-01 4.599372e-01 6.351893e-01 -2.353277e-02 -3.291569e+00 -3.644215e+00 + 9.683494e-02 1.469779e-01 1.496372e-01 1.902470e-01 6.483267e-02 9.834053e-02 8.155843e-02 1.130809e-01 1.068087e-01 1.044388e-01 1.698052e-01 3.552441e-01 + +1 46 19 0 20 + -4.054992e+00 -1.088032e+01 1.615099e+01 -9.080686e+00 -2.538641e+01 -4.275915e+00 -1.250289e+01 -6.970431e-01 -1.454034e+01 5.408891e-01 2.853124e+00 -2.189412e+00 + 6.326737e-01 1.606196e-01 1.452885e-01 1.976513e-01 8.077373e-02 5.415561e-02 1.778369e-01 6.696153e-02 1.512754e-01 8.406402e-02 7.088581e-02 1.091246e-01 + +1 45 20 0 21 + -2.574489e+01 -1.842576e+00 -9.600108e+00 -1.006056e+01 -1.538285e+00 -9.815883e+00 2.785522e+00 2.527717e-01 6.075495e-01 -5.749639e-01 -2.873355e+00 1.320665e-01 + 1.421066e-01 1.826280e-01 1.127884e-01 1.191106e-01 1.102493e-01 1.157236e-01 1.556162e-01 9.878033e-02 1.422366e-01 3.040562e-01 2.540444e-01 1.264096e-01 + +1 44 21 0 22 + -1.793601e+01 -2.150612e+00 -8.085810e+00 -6.693283e+00 -3.568616e+00 -8.923143e-01 -2.846190e+00 -3.481247e+00 -2.455625e+00 -1.337029e+00 2.639268e+00 4.039898e+00 + 4.473459e-02 1.221178e-01 6.895592e-02 1.062035e-01 7.772706e-02 9.151646e-02 9.473262e-02 9.840345e-02 1.404648e-01 1.131360e-01 1.266022e-01 1.636091e-01 + +1 43 22 0 23 + -1.767588e+01 -5.958422e+00 -5.726416e+00 -1.107222e+01 -5.500952e+00 -3.245204e+00 -4.887365e+00 -4.994296e+00 -6.451913e+00 -2.369813e+00 -5.265448e+00 2.002504e-01 + 6.943105e-02 6.817403e-02 1.052580e-01 4.578923e-02 3.398110e-02 7.320711e-02 5.735356e-02 6.740326e-02 8.016966e-02 1.168837e-01 1.019509e-01 1.363357e-01 + +1 42 23 0 24 + -3.014511e+00 -9.482493e+00 6.268650e-01 -8.288904e+00 -1.774214e+01 -1.127548e+01 -4.586415e+00 6.899190e+00 -2.003306e-02 8.369594e-01 -1.254761e+00 1.653810e+00 + 3.015736e-02 1.011162e-01 7.871783e-02 4.734789e-02 8.433185e-02 4.961246e-02 7.370424e-02 7.207382e-02 6.089687e-02 8.756793e-02 8.458555e-02 7.284760e-02 + +1 41 24 0 25 + 3.913739e+00 -2.352983e+00 -1.360529e+01 -2.062946e+01 -1.446979e+01 8.672603e+00 -3.600564e+00 -4.025300e+00 -4.318013e+00 7.362913e-01 -1.115354e-01 -2.258707e-01 + 3.043639e-01 8.496270e-02 1.248002e-01 5.948232e-02 4.595589e-02 8.478070e-02 1.152897e-01 1.554621e-01 1.255271e-01 8.464132e-02 8.577848e-02 1.244584e-01 + +1 40 25 0 26 + -2.670158e+00 -4.003757e+00 -1.316878e+00 2.591657e+00 -6.595364e+00 -3.027453e-01 -9.536717e+00 -1.200384e+01 -9.806856e+00 3.752582e+00 -1.757465e+00 -1.541982e+00 + 9.941597e-02 5.828007e-02 9.221766e-02 3.736644e-02 4.056380e-02 4.392307e-02 4.023477e-02 8.492400e-02 8.524006e-02 6.461597e-02 8.002757e-02 6.314782e-02 + +1 39 26 0 27 + -5.045514e-01 -1.977577e+01 7.144110e-01 -1.066998e+01 -2.154000e+01 -6.233492e-01 -4.109935e+00 9.977874e+00 -1.704490e+00 -3.853380e+00 -5.742704e+00 -3.930131e+00 + 1.048896e-01 1.510874e-01 7.155884e-02 1.163240e-01 8.189243e-02 7.783546e-02 1.087648e-01 1.713981e-01 1.615259e-01 1.027667e-01 1.042757e-01 1.524449e-01 + +1 38 27 0 28 + -1.458972e+01 -5.414742e+00 -9.764462e+00 -7.270879e+00 -4.308610e+00 -3.263673e+00 -1.250272e+00 1.355180e-03 -1.630004e+00 -2.661962e+00 -4.183151e+00 -1.583699e+00 + 8.032922e-02 1.303239e-01 1.027209e-01 1.452029e-01 9.379436e-02 1.507815e-01 1.338631e-01 1.184412e-01 9.961912e-02 1.370707e-01 2.020661e-01 3.656117e-01 + +1 37 28 0 29 + -1.408119e+00 -1.137466e+01 8.755013e+00 -7.806905e+00 -1.882760e+01 -8.618912e+00 -1.439860e+01 2.626227e+00 -4.644870e+00 -6.243305e+00 7.573631e-01 -3.023284e-01 + 2.309857e-01 4.668060e-02 7.257541e-02 7.663499e-02 7.499822e-02 5.083483e-02 5.148354e-02 8.724269e-02 7.046428e-02 1.200152e-01 1.006605e-01 1.241061e-01 + +1 36 29 0 30 + -1.324024e+01 -1.085211e+01 -1.499886e+01 -1.354722e+01 -1.748649e+00 -4.918872e+00 -8.066586e+00 -2.921089e+00 3.238327e+00 3.948157e+00 -9.276849e-01 -2.848954e+00 + 8.751559e-02 3.409286e-02 3.135621e-02 5.932385e-02 4.351559e-02 3.834673e-02 6.447515e-02 4.357257e-02 1.199935e-01 1.593850e-01 9.575951e-02 1.191487e-01 + +1 35 30 0 31 + -1.739144e+01 -8.289247e-01 -2.001340e+00 7.238333e-01 -4.780729e-01 -1.790215e-01 -1.115192e-01 4.467821e-01 3.523152e-01 2.891467e+00 1.509371e-01 -1.082368e-01 + 1.211778e-01 8.419068e-02 7.194475e-02 1.837780e-01 2.517996e-01 1.251291e-01 6.718983e-02 1.816768e-01 2.680156e-01 2.009613e-01 2.174958e-01 2.081930e-01 + +1 34 31 0 32 + -2.593464e+01 -4.979844e-01 -8.769297e+00 -9.612941e+00 -1.399776e+00 -3.552402e+00 3.094956e+00 -3.478829e+00 -4.843523e-01 -5.252411e+00 -3.209831e+00 -7.872864e-01 + 2.724819e-01 1.879167e-01 9.612350e-02 1.214854e-01 1.656777e-01 6.932724e-02 6.899537e-02 9.351564e-02 2.416060e-01 1.994889e-01 1.197852e-01 3.316144e-01 + +1 33 32 0 33 + -2.654351e+01 -7.512487e+00 5.029175e+00 -9.122487e+00 -6.852844e+00 4.449910e+00 -1.743005e+00 -1.019095e+00 1.749697e+00 -3.309452e+00 3.822576e-01 3.401484e+00 + 6.040471e-02 8.788830e-02 1.443232e-01 5.874354e-02 7.646149e-02 6.042678e-02 4.984292e-02 8.838129e-02 1.290971e-01 1.475538e-01 1.018530e-01 1.139980e-01 + +1 32 33 0 34 + 3.623573e+00 -5.325343e+00 -1.439130e+01 -1.654938e+01 -1.307722e+01 7.779762e+00 -8.022758e+00 -4.812335e+00 -5.477184e+00 8.262738e+00 6.321048e+00 -5.370396e+00 + 5.628095e-01 9.917589e-02 1.055274e-01 5.685585e-02 3.294687e-01 5.351909e-02 9.557182e-02 1.475508e-01 2.176096e-01 1.504420e-01 8.211774e-02 1.791653e-01 + +1 31 34 0 35 + -1.761174e+01 -5.889008e+00 -8.396654e+00 -1.221459e+01 3.030510e-01 3.774254e+00 -3.236177e+00 1.295920e+00 -5.049484e+00 -2.924970e+00 -9.230655e-02 -4.206842e+00 + 6.343126e-02 1.228993e-01 4.212888e-02 1.390936e-01 1.129054e-01 4.011036e-02 8.476348e-02 7.807294e-02 9.429442e-02 6.085316e-02 1.042179e-01 1.588169e-01 + +1 30 35 0 36 + 2.517366e+00 -1.847061e+01 -1.304540e+01 -9.238400e+00 -1.312309e+01 9.671052e+00 -9.137849e+00 5.328157e+00 -1.452353e+00 1.984032e+00 -1.300857e+01 -1.004091e+01 + 3.648104e-01 9.720728e-02 8.190598e-02 5.246062e-02 6.183705e-02 6.716280e-02 6.020917e-02 4.267995e-02 1.293665e-01 1.084401e-01 2.076881e-01 1.349272e-01 + +1 29 36 0 37 + 2.055991e+00 -2.036031e+01 -6.355100e+00 -6.923863e+00 -1.682312e+01 2.630782e+00 -7.803583e+00 5.364013e+00 7.101339e+00 -4.006003e+00 -1.098668e+01 -7.041184e+00 + 2.344538e-01 8.397505e-02 9.718642e-02 8.880592e-02 3.395448e-02 7.654264e-02 1.055148e-01 1.095146e-01 6.100928e-02 6.033070e-02 6.590851e-02 1.203080e-01 + +1 28 37 0 38 + -6.614104e+00 1.131340e-01 1.358559e+01 -1.120274e+01 -1.937146e+01 -5.782678e+00 -1.057416e+01 -3.153363e+00 -1.652348e+01 -3.133130e-02 -2.939906e+00 -7.333114e-01 + 1.585614e-01 4.580463e-02 1.322084e-01 6.255686e-02 6.501657e-02 3.628242e-02 5.880918e-02 5.903393e-02 6.581156e-02 1.014927e-01 1.043972e-01 9.596196e-02 + +1 27 38 0 39 + -1.393363e+01 -2.769344e+00 -5.044204e+00 -5.866661e+00 -4.573875e+00 -3.292658e-01 3.708481e+00 4.869174e+00 8.684950e-01 -2.383085e+00 -1.354100e+00 2.503109e+00 + 1.350514e-01 6.437008e-02 5.598773e-02 1.475507e-01 6.597260e-02 8.631408e-02 4.774682e-02 8.029673e-02 1.587076e-01 1.917693e-01 1.446787e-01 1.328982e-01 + +1 26 39 0 40 + -1.043117e+01 8.116734e-02 6.430064e-01 -7.617230e+00 -9.321026e+00 -8.705024e+00 -4.998833e+00 -3.351206e+00 8.909286e-01 -2.728344e+00 -3.779054e+00 1.634885e+00 + 5.131203e-02 8.513939e-02 5.167917e-02 5.351074e-02 4.768215e-02 3.211735e-02 5.757412e-02 5.344121e-02 8.217315e-02 6.961665e-02 9.572914e-02 1.060954e-01 + +1 25 40 0 41 + 2.862856e+00 -1.469643e+01 -1.461085e+01 -1.143456e+01 -7.318049e+00 1.366671e+01 -1.418257e+01 -3.368834e+00 7.507222e+00 -4.534141e+00 -6.580627e+00 -7.334440e+00 + 2.667730e-01 5.139257e-02 9.378049e-02 5.084570e-02 5.877424e-02 4.045227e-02 5.858893e-02 1.301303e-01 1.078574e-01 8.927982e-02 6.671546e-02 9.436400e-02 + +1 24 41 0 42 + -5.438241e+00 -4.393301e+00 -1.310216e+01 -7.143429e+00 -3.291476e+00 1.905148e+00 -5.055331e+00 -5.318088e+00 -2.293489e-01 1.559870e+00 -1.548920e+00 -3.584244e+00 + 3.121778e-02 5.889169e-02 8.688092e-02 1.253525e-01 4.841868e-02 3.788546e-02 4.832488e-02 1.220256e-01 6.787373e-02 6.444693e-02 8.870271e-02 1.062024e-01 + +1 23 42 0 43 + -1.215341e+01 -4.013685e+00 -7.988126e+00 -6.140858e+00 -3.268579e+00 -6.428712e-01 1.666969e+00 5.917117e+00 -7.114496e-01 -4.702291e+00 -1.109000e+01 -4.400174e-01 + 3.451363e-02 6.557661e-02 7.606933e-02 8.602567e-02 5.721416e-02 8.820309e-02 7.612397e-02 5.747213e-02 6.604962e-02 9.269512e-02 9.244113e-02 1.291610e-01 + +1 22 43 0 44 + -2.445007e+01 8.855879e-01 -5.626787e+00 -8.069640e+00 -7.764180e-01 -9.567269e+00 8.179946e-01 -3.132318e+00 5.485337e-01 2.066938e+00 6.445973e-01 1.847396e+00 + 4.051951e-02 9.872019e-02 7.199267e-02 1.234722e-01 1.760734e-01 1.018635e-01 1.072219e-01 1.151761e-01 8.829521e-02 1.212856e-01 1.290608e-01 1.415438e-01 + +1 21 44 0 45 + -1.661343e+01 -5.728043e+00 -7.405200e+00 -6.751770e+00 -1.506951e+00 2.657450e-01 -1.522791e+00 3.851528e+00 4.730307e+00 3.754400e+00 1.847668e+00 1.130611e+00 + 4.781036e-02 6.977192e-02 7.689106e-02 7.546767e-02 8.138079e-02 9.513598e-02 5.370919e-02 6.446397e-02 1.069128e-01 1.558862e-01 1.250210e-01 9.183710e-02 + +1 20 45 0 46 + -2.166568e+01 -4.920949e-01 -1.798849e+00 -1.428854e+01 3.980304e+00 -8.036595e+00 -2.059441e+00 1.512042e+00 -1.692702e+00 -1.686253e+00 -5.026236e+00 -3.000320e+00 + 5.353372e-02 4.931344e-02 8.110629e-02 9.924000e-02 7.198433e-02 6.074476e-02 4.525809e-02 7.246849e-02 1.365104e-01 9.882819e-02 1.287055e-01 1.266979e-01 + +1 19 46 0 47 + 4.716992e-01 -3.499050e+00 -4.267293e+00 -1.880241e+01 -7.344208e+00 3.358634e+00 -1.721614e+01 -7.044708e+00 -1.705162e+00 1.056369e+01 -6.039658e+00 -2.388448e+00 + 2.073875e-01 4.483207e-02 3.573282e-02 6.665680e-02 6.111114e-02 3.330171e-02 3.510365e-02 5.153824e-02 8.168927e-02 1.518083e-01 8.172484e-02 2.255643e-01 + +1 18 47 0 48 + -7.869503e+00 -8.706184e+00 -2.189962e+00 -2.371227e+00 -4.683255e+00 -1.685401e+01 -2.801776e+00 1.752159e+00 -5.504490e+00 3.418698e-01 -6.074438e+00 2.707736e+00 + 5.071527e-02 4.632011e-02 2.984372e-02 5.045270e-02 3.422774e-02 4.520607e-02 2.889330e-02 4.418414e-02 8.027971e-02 9.795438e-02 1.002833e-01 7.437372e-02 + +1 17 48 0 49 + -6.096178e-01 4.007353e+00 -6.392223e+00 -1.561285e+01 -7.824722e+00 7.253838e-01 -6.843918e+00 -7.440452e+00 -1.016505e+01 -1.570032e+00 1.545682e+00 -1.449768e+00 + 5.822451e-02 1.372192e-01 7.833628e-02 5.020739e-02 2.026538e-02 5.664078e-02 4.540614e-02 6.773614e-02 4.799643e-02 5.868751e-02 5.821497e-02 1.400152e-01 + +1 16 49 0 50 + -2.061730e+01 -2.019232e+01 -7.606407e+00 1.053446e+01 6.790562e+00 -1.640738e+01 1.414852e+01 -5.802838e+00 -6.944827e+00 2.368551e+00 -5.525244e+00 -3.012295e+00 + 8.417177e-02 4.158622e-02 3.144388e-02 2.586841e-02 5.927253e-01 2.737556e-01 1.658459e-02 5.626667e-02 5.921743e-02 1.902098e-02 3.152812e-02 3.457390e-01 + +1 15 50 0 51 + -1.086489e+01 -1.366385e+01 -3.367585e+00 -1.188268e+00 -5.824864e+00 -5.352239e+00 -1.546818e+00 7.928678e+00 -2.578804e-01 -8.901214e+00 -6.950557e+00 1.536574e+00 + 2.403525e-02 6.131044e-02 2.923306e-02 2.987773e-02 4.057033e-02 4.353508e-02 2.294445e-02 4.433620e-02 3.077988e-02 1.142472e-01 6.714227e-02 1.123645e-01 + +1 14 51 0 52 + -1.375381e+01 -4.247579e+00 5.411132e+00 -1.883978e+00 -1.057151e+01 -8.891398e+00 2.535141e+00 3.775047e+00 -9.008003e+00 -2.298805e+00 -9.860904e-01 -2.982622e-01 + 3.694792e-02 7.115746e-02 8.871039e-02 8.804981e-02 4.260172e-02 8.261127e-02 5.659322e-02 8.559977e-02 4.636036e-02 8.887039e-02 1.245847e-01 1.014026e-01 + +1 13 52 0 53 + 3.825997e+00 -1.019470e+01 -1.134197e+01 5.415588e-01 -1.040172e+01 -9.445205e+00 -1.174300e+01 9.451373e-01 5.065080e+00 -3.328840e+00 -2.795265e+00 3.120315e+00 + 6.129232e-02 5.891655e-02 1.372580e-02 9.107749e-02 4.491116e-02 7.337458e-02 4.964961e-02 1.119168e-01 1.096013e-01 5.603627e-02 7.489239e-02 9.161093e-02 + +1 12 53 0 54 + -1.961963e+00 -6.692809e+00 -2.001441e-01 -9.984117e+00 -8.312482e+00 -3.595846e+00 -1.438793e+01 4.355859e+00 5.986009e+00 -1.844834e+00 -7.649256e+00 -1.519692e+00 + 8.140323e-02 7.888691e-02 6.268590e-02 8.880951e-02 3.956280e-02 6.586578e-02 5.078926e-02 8.572715e-02 9.567046e-02 1.629157e-01 1.505033e-01 1.058246e-01 + +1 11 54 0 55 + -9.145902e+00 -1.413849e+01 -1.332261e+01 -6.520996e+00 4.557607e-01 3.301786e+00 -3.295171e-01 1.489300e+00 6.993420e+00 -6.090439e+00 -9.701844e+00 -1.251609e+00 + 5.794512e-02 1.113209e-01 7.957880e-02 3.648531e-02 4.874726e-02 1.246807e-01 3.654215e-02 3.149470e-02 6.781245e-02 7.735550e-02 5.826188e-02 2.264217e-01 + +1 10 55 0 56 + -1.180427e+01 3.647022e+00 1.390533e+00 2.376870e+00 -1.741644e+00 -3.196353e-01 -3.499880e+00 -5.768591e+00 -3.833388e+00 -2.604625e+00 -5.400262e+00 -2.439465e+00 + 6.577071e-02 1.090979e-01 9.106248e-02 7.021707e-02 6.811922e-02 1.084694e-01 1.163606e-01 6.550784e-02 9.385673e-02 1.439985e-01 5.966403e-02 7.586646e-02 + +1 9 56 0 57 + 1.874640e+00 -1.564147e+01 -2.441074e+00 -5.274889e+00 -1.814770e+01 -8.728581e+00 -1.625121e+01 9.578165e+00 -4.386004e-01 1.463885e+00 1.414976e-01 -3.557939e+00 + 3.324809e-01 1.112350e-01 5.622433e-02 1.010434e-01 4.602673e-02 4.240832e-02 6.518841e-02 5.009418e-02 6.370233e-02 1.080359e-01 1.392608e-01 1.150791e-01 + +1 8 57 0 58 + 1.906364e+00 -1.208773e+01 -8.479047e+00 -7.201521e+00 -1.179182e+01 -2.814371e+00 -4.643915e+00 9.131196e+00 1.179648e+00 -2.020033e+00 -8.596079e+00 -5.181626e+00 + 1.427533e-01 9.481174e-02 6.727666e-02 5.027536e-02 3.507490e-02 4.179317e-02 7.856696e-02 6.864919e-02 1.219834e-01 1.705362e-01 8.877958e-02 1.194361e-01 + +1 7 58 0 59 + 3.652524e+00 -1.041269e+01 -1.357236e+01 -8.199497e+00 -1.285233e+01 6.350680e-01 -8.574880e+00 -7.049842e-01 2.193355e+00 5.458235e+00 6.160259e-01 -1.279524e+01 + 1.948179e-01 5.715592e-02 1.356368e-01 1.308717e-01 4.173721e-02 6.586082e-02 3.272187e-02 1.382719e-01 5.689951e-02 1.174370e-01 9.115808e-02 1.742637e-01 + +1 6 59 0 60 + -1.092453e+00 -4.010186e+00 8.013568e-01 -5.578741e+00 -6.453000e+00 -9.156375e+00 -1.868353e+01 -2.469394e+00 -3.219586e+00 5.128490e+00 -6.541768e+00 -3.562579e+00 + 1.075714e-01 9.733285e-02 5.014110e-02 7.476151e-02 3.462020e-02 1.065877e-01 5.328970e-02 1.777928e-01 6.043151e-02 8.320764e-02 9.516662e-02 1.503447e-01 + +1 5 60 0 61 + -1.849297e+01 -8.419019e+00 2.702562e+00 -7.321314e+00 -1.212414e+01 -4.412412e+00 1.396458e+00 -1.122673e+00 -1.623893e+00 4.336560e+00 1.293061e+00 1.420948e-02 + 3.985888e-02 4.855706e-02 8.650924e-02 4.892322e-02 5.219935e-02 5.424026e-02 7.695455e-02 6.838416e-02 1.168950e-01 1.990329e-01 1.074646e-01 5.581134e-02 + +1 4 61 0 62 + -7.432835e+00 -2.715326e+00 6.246908e+00 -1.014251e+01 -1.792883e+01 -5.864928e-01 3.011470e-01 -2.363453e+00 -8.593863e+00 6.307993e+00 -3.611211e+00 -4.058719e+00 + 5.618339e-02 4.752572e-02 3.326947e-02 5.350554e-02 3.912940e-02 4.357948e-02 8.036594e-02 4.659944e-02 3.442528e-02 6.546895e-02 7.882839e-02 6.623589e-02 + +1 3 62 0 63 + 2.814005e+00 -5.666842e+00 -1.439637e+01 -2.057754e+01 -5.539705e+00 1.274092e+01 -1.319483e+01 3.856097e+00 -1.100915e+00 -7.399887e+00 -2.081363e+00 -7.507254e-01 + 3.881342e-01 8.576868e-02 7.525363e-02 6.484962e-02 5.564484e-02 5.038683e-02 3.450757e-02 5.026934e-02 7.347632e-02 7.903428e-02 7.167432e-02 1.083841e-01 + +1 2 63 0 64 + -4.517602e+00 -5.781976e+00 5.955352e+00 -2.714617e+00 -1.614077e+01 7.467462e-01 -9.244803e+00 -6.420669e+00 -1.412945e+00 -3.348486e+00 -6.592562e+00 3.480857e+00 + 1.519193e-01 5.289046e-02 1.255873e-01 7.065293e-02 6.563372e-02 4.624007e-02 8.061040e-02 7.433499e-02 9.502385e-02 1.071612e-01 8.484825e-02 1.553857e-01 + +1 1 64 0 0 + -2.264107e+01 -1.523140e+00 -7.516783e+00 -6.587609e+00 -1.114561e+00 -1.148188e+01 3.185408e-01 -8.546824e-01 1.274616e+00 -5.514516e+00 -1.630174e+00 4.680082e+00 + 4.684689e-02 1.986983e-01 8.834821e-02 8.667179e-02 6.685103e-02 7.648251e-02 1.348902e-01 9.287773e-02 1.023917e-01 3.307518e-01 1.446047e-01 2.034249e-01 + +2 64 1 0 2 + 1.592679e-01 1.751524e-02 -5.204811e-01 6.496283e-02 -4.453637e-01 1.872799e-01 5.757486e-01 1.447256e-01 -2.971075e-02 1.349106e-01 -9.858609e-01 -7.598775e-01 + 2.331785e+00 2.010971e+00 1.230235e+00 1.559694e+00 8.321404e-01 1.662359e+00 1.130510e+00 1.272597e+00 1.234952e+00 2.485908e+00 2.090720e+00 2.263607e+00 + +2 63 2 0 3 + -7.218269e-02 3.096991e-01 -1.623312e-01 4.828950e-01 -5.101626e-01 -3.456125e-01 2.294366e-01 -3.295460e-01 4.956204e-01 -1.509595e-01 -2.172252e-01 1.689969e-01 + 5.478593e+00 1.979213e+00 2.710881e+00 1.977894e+00 1.181861e+00 2.648278e+00 1.871669e+00 1.382561e+00 1.822568e+00 2.631069e+00 3.167003e+00 2.912619e+00 + +2 62 3 0 4 + -3.061711e-02 2.317765e-01 3.838606e-01 -7.260532e-01 -3.011525e-01 -2.782536e-01 7.527558e-01 4.413621e-01 2.332226e-01 -1.277675e+00 -1.333939e+00 2.993859e-01 + 8.057127e-01 1.217793e+00 9.774114e-01 1.215250e+00 7.471757e-01 1.058943e+00 8.846591e-01 1.040731e+00 8.598698e-01 1.882202e+00 1.598401e+00 1.418319e+00 + +2 61 4 0 5 + -1.116250e-01 1.378027e-01 2.590871e-01 2.486156e-02 5.176648e-01 6.439378e-01 -7.294136e-01 -1.688101e+00 -1.407938e+00 -1.220523e-01 -3.032211e-01 5.224196e-01 + 7.738732e-01 9.267293e-01 1.393713e+00 7.074801e-01 9.532691e-01 8.421594e-01 6.998528e-01 1.223767e+00 1.838183e+00 1.476675e+00 1.276600e+00 1.333035e+00 + +2 60 5 0 6 + -3.325815e-02 7.544470e-01 -6.178489e-01 6.654988e-02 8.752502e-01 -1.028247e+00 7.483838e-02 4.065224e-01 -5.782420e-01 8.699880e-02 8.281915e-01 -7.252637e-01 + 1.552001e+00 8.833923e-01 2.353498e+00 9.763896e-01 7.905391e-01 1.446722e+00 7.742090e-01 1.198159e+00 1.303066e+00 2.273243e+00 1.575219e+00 1.850375e+00 + +2 59 6 0 7 + 4.202768e-01 4.174584e-01 -2.998690e-01 9.978137e-01 5.594154e-01 1.617474e+00 1.387310e+00 -1.243016e-01 4.745637e-01 2.719404e-01 -2.100880e-01 -1.071257e-01 + 6.673205e-01 9.872208e-01 7.103623e-01 1.090747e+00 8.330209e-01 1.288480e+00 7.256910e-01 9.626373e-01 1.245799e+00 1.472330e+00 1.743744e+00 1.669165e+00 + +2 58 7 0 8 + 4.316391e-01 -8.175016e-01 2.815436e-01 4.615269e-03 -1.003032e+00 1.291276e-01 3.991618e-01 -2.393154e-01 8.160217e-01 1.194463e+00 -1.947869e+00 7.532089e-01 + 5.740062e-01 8.007320e-01 6.213140e-01 9.994907e-01 8.442605e-01 6.958723e-01 9.074088e-01 9.986748e-01 5.904934e-01 1.009632e+00 1.595807e+00 1.652544e+00 + +2 57 8 0 9 + 7.898207e-01 3.507820e+00 8.583558e-01 -5.520986e+00 -3.119268e+00 1.294687e+00 -3.497881e+00 1.446140e-02 6.129721e-01 -1.350501e+00 6.452867e-01 1.095474e+00 + 8.510995e-01 3.938929e-01 6.879410e-01 1.480007e+00 4.296292e-01 1.456392e-01 2.024556e-01 1.175755e+00 5.232829e-01 4.507936e-01 1.005164e+00 3.456748e+00 + +2 56 9 0 10 + -3.049662e+00 3.417838e+00 -6.127973e-01 1.787629e+00 4.539293e+00 1.905799e+00 1.481112e+00 -2.146651e+00 -1.065827e+00 4.428001e-03 -3.135311e-01 1.816219e-01 + 5.471782e-01 5.560257e-01 3.726058e-01 2.773083e-01 6.896515e-01 4.057382e-01 1.808065e+00 7.156343e-01 4.893266e-01 7.425653e-01 5.128097e-01 1.051338e+00 + +2 55 10 0 11 + 4.098393e+00 -1.087609e+00 -4.798546e-01 -1.332234e+00 -1.540113e+00 2.163300e+00 -2.771155e+00 8.937908e-01 -4.134599e-01 -1.827790e+00 -1.339958e+00 -5.597886e-01 + 4.307735e-01 6.964642e-01 5.635957e-01 4.655815e-01 4.475839e-01 3.875206e-01 3.001978e-01 1.059817e+00 6.302845e-01 8.961573e-01 1.494532e+00 2.488613e+00 + +2 54 11 0 12 + 8.914354e-02 1.787924e-01 9.326437e-01 5.969254e-02 -5.523135e-01 -8.357327e-01 -6.203122e-01 -6.571900e-01 -1.754373e-01 1.773233e+00 2.224848e-01 -3.658054e-01 + 1.173381e+00 1.208287e+00 9.454970e-01 1.107549e+00 8.293526e-01 1.219705e+00 9.847044e-01 7.513381e-01 1.563863e+00 1.474306e+00 1.284282e+00 1.796370e+00 + +2 53 12 0 13 + -3.658333e-01 3.241054e-01 2.296027e+00 -1.322498e+00 -1.341821e+00 1.423135e+00 8.369637e-01 -2.666384e-01 -3.200758e+00 1.912518e+00 8.716378e-01 -1.112202e+00 + 4.886478e-01 1.551225e+00 7.841284e-01 2.999021e-01 4.676578e-01 4.797086e-01 6.488427e-01 7.277516e-01 5.567616e-01 1.600646e+00 7.134665e-01 9.996368e-01 + +2 52 13 0 14 + -5.972205e+00 4.261991e-01 6.616288e-01 2.780399e+00 1.568888e+00 -9.476768e-01 4.498842e+00 1.080295e+00 7.609724e-01 -2.696002e+00 -2.555701e-01 6.187399e-01 + 1.134833e+00 4.868778e-01 3.516256e-01 9.026220e-01 2.351791e+00 2.683595e-01 4.468774e-01 6.752157e-01 1.461428e+00 7.652299e-01 2.371611e+00 1.821121e+00 + +2 51 14 0 15 + -1.970365e+00 -1.338587e+00 -1.601294e+00 2.804194e+00 2.382182e+00 -3.063678e-01 2.224809e+00 -5.854282e-01 2.202620e+00 -2.116734e+00 8.692635e-01 -3.439782e-01 + 6.467009e-01 5.696469e-01 3.202000e+00 4.831425e-01 7.952971e-01 1.077556e+00 2.230602e-01 4.646595e-01 1.066687e+00 1.765600e+00 5.403039e-01 1.791378e+00 + +2 50 15 0 16 + -3.663108e+00 1.090387e+00 4.450259e-01 1.115865e-01 1.992017e+00 2.095486e+00 -5.520394e-03 -4.050296e-01 1.585667e+00 1.238022e-01 2.286934e-01 6.959068e-01 + 4.782307e-01 5.975090e-01 4.808850e-01 4.394065e-01 4.000656e-01 6.436079e-01 5.121449e-01 7.033130e-01 7.047207e-01 1.046243e+00 7.282924e-01 9.780370e-01 + +2 49 16 0 17 + 2.311400e+00 -3.211455e+00 -1.707114e+00 -1.053110e+00 7.222041e-01 -5.798379e+00 -1.933608e+00 5.011425e-01 -5.103393e-02 3.985030e-01 -2.609015e+00 9.103919e-01 + 1.048422e+00 9.374598e-01 2.186315e+00 1.706733e+00 7.312832e-01 1.708927e-01 3.443454e-01 6.347139e-01 3.449495e-01 2.815356e+00 6.839233e-01 1.339094e+00 + +2 48 17 0 18 + 5.595758e+00 2.743129e-01 -1.997731e-01 2.288206e+00 1.944788e+00 -3.079249e+00 -3.178864e+00 1.546524e+00 1.991882e-01 -1.315771e+00 -7.152777e-01 -1.906133e-01 + 9.377715e-01 8.857656e-01 1.515386e+00 3.238380e-01 5.116784e-01 2.492148e-01 2.184798e-01 7.598928e-01 1.174986e+00 1.399482e+00 3.503482e+00 2.850950e+00 + +2 47 18 0 19 + -3.165448e+00 -1.559937e+00 -1.968587e+00 1.029872e-01 9.265042e-01 -5.245609e-01 2.484578e-01 -3.112467e-01 -9.754504e-02 2.505624e-01 -8.318084e-02 -1.337328e+00 + 6.698665e-01 8.321741e-01 7.241377e-01 4.883410e-01 4.026341e-01 1.026949e+00 1.142415e+00 6.057628e-01 7.316594e-01 6.943327e-01 1.781219e+00 1.411569e+00 + +2 46 19 0 20 + 9.959909e-01 4.711286e-01 2.163313e-01 -2.167081e+00 -1.711005e+00 1.606761e+00 -3.449461e-01 5.667789e-01 6.004969e-01 4.606263e-03 2.488658e-01 2.561589e-01 + 7.286274e-01 1.100390e+00 1.271599e+00 6.637071e-01 5.801037e-01 1.154893e+00 7.640232e-01 8.863854e-01 6.275379e-01 1.048937e+00 1.907130e+00 1.296937e+00 + +2 45 20 0 21 + 6.054624e+00 -2.999680e+00 -3.246290e-01 -3.651971e+00 -8.552556e-01 2.529490e+00 -5.023105e+00 -8.205818e-01 -7.082027e-01 3.062515e+00 1.666561e+00 -1.745854e+00 + 2.416729e-01 6.600428e-01 2.534198e-01 1.051139e+00 5.802251e+00 7.326562e-01 1.095707e+00 3.079885e+00 1.604264e+00 4.521693e-01 8.588934e-01 1.356006e+00 + +2 44 21 0 22 + 3.968261e+00 2.425584e-01 6.107919e-01 3.575417e-01 -1.614685e+00 6.109968e-01 -2.344962e+00 -5.271066e-01 -2.391746e+00 2.003036e+00 2.050094e+00 -1.255026e+00 + 7.391849e-01 6.694908e-01 2.737322e-01 2.776268e-01 6.810892e-01 5.093930e-01 4.931122e-01 1.151742e+00 9.563847e-01 1.768719e+00 7.576403e-01 8.929804e-01 + +2 43 22 0 23 + 5.545482e+00 -2.376280e+00 1.026063e-01 8.454853e-01 -2.827231e+00 3.431281e+00 -1.513549e+00 -1.550650e+00 2.164738e+00 -4.414127e-01 -1.314772e+00 -4.611958e-01 + 4.079880e-01 7.805492e-01 7.731296e-01 4.150065e-01 2.724868e-01 4.961850e-01 7.057356e-01 3.727259e-01 1.136772e+00 8.737456e-01 9.981188e-01 8.350958e-01 + +2 42 23 0 24 + 4.941626e+00 5.287888e-01 -1.635677e+00 5.576949e-01 -1.751133e-01 -1.273779e+00 -3.467055e+00 6.999628e-01 -1.314482e+00 1.441756e+00 2.050756e-01 -1.720767e+00 + 4.013998e-01 1.621921e+00 4.171504e-01 6.295918e-01 6.320205e-01 5.990473e-01 5.205678e-01 6.957662e-01 7.305001e-01 7.829653e-01 1.086044e+00 8.246800e-01 + +2 41 24 0 25 + 2.620152e+00 -4.951070e-01 7.468276e-01 -1.827912e-01 -1.440273e+00 -1.300035e+00 -2.887645e+00 -1.515881e+00 5.810916e-01 -1.071935e+00 8.740850e-03 1.184400e+00 + 3.545069e-01 9.597241e-01 5.094674e-01 1.572635e+00 7.636248e-01 3.735372e-01 4.403425e-01 6.259183e-01 9.890035e-01 1.408662e+00 6.394714e-01 1.349640e+00 + +2 40 25 0 26 + -1.511558e+00 -6.361307e+00 -2.521372e+00 -1.791267e+00 2.636600e+00 -2.636653e+00 -2.239861e+00 5.847236e+00 3.667013e-01 -1.673051e+00 8.037090e-01 -2.532952e-01 + 2.310094e+02 7.194489e-01 4.976661e-01 2.747509e-01 6.396602e-01 1.005281e+00 2.139404e-01 2.539698e-01 3.330299e-01 2.348380e+00 4.560898e+00 1.321257e+00 + +2 39 26 0 27 + -7.114100e-01 1.713527e+00 1.284006e+00 2.081769e+00 -2.874156e-02 1.472610e+00 4.738404e-01 -4.205202e+00 -3.172489e+00 1.133050e+00 1.583531e+00 1.394310e+00 + 1.467883e+00 1.141269e+00 5.752841e-01 7.955266e-01 3.065874e-01 5.562503e-01 2.717564e-01 7.162887e-01 4.326579e-01 6.439533e-01 4.318993e-01 6.016691e-01 + +2 38 27 0 28 + -2.910914e+00 4.658793e-01 -5.200609e+00 7.736053e-01 3.794414e+00 8.895522e-01 1.826632e+00 1.388926e+00 3.778507e+00 -4.139237e-01 -7.042134e-01 4.654790e-01 + 1.955871e-01 9.120003e-01 3.879962e-01 7.118742e-01 3.353691e-01 5.552431e-01 3.381250e-01 7.696947e-01 8.511509e-01 1.368155e+00 1.029578e+00 1.712070e+00 + +2 37 28 0 29 + -4.797482e+00 1.029667e+00 5.564016e-01 -7.298926e-01 1.236449e+00 -1.414555e+00 1.439998e-01 -2.344182e+00 -7.146920e-01 2.830298e-01 3.011223e+00 2.287484e-02 + 2.862152e-01 8.004763e-01 5.004634e-01 2.904258e-01 7.100189e-01 4.610703e-01 2.810658e-01 7.376608e-01 1.822927e+00 1.068306e+00 9.808506e-01 1.479948e+00 + +2 36 29 0 30 + -2.202790e+00 -3.761284e+00 -9.416203e-01 -3.956459e+00 -1.046281e+00 1.387834e-01 -8.462235e-01 9.452516e-01 3.183932e-02 -1.778219e-01 7.473063e-01 -3.658716e-01 + 6.043844e-01 6.814450e-01 4.821643e-01 4.295923e-01 7.560256e-01 4.947767e-01 1.549298e+00 5.221016e-01 1.161268e+00 1.007465e+00 1.213101e+00 1.091507e+00 + +2 35 30 0 31 + 1.071260e-01 -1.881360e+00 -3.809536e-01 -2.624454e+00 -2.553244e-01 -1.935998e+00 -1.078316e-01 3.989125e+00 1.497540e+00 -1.653875e+00 1.125984e+00 -5.993930e-01 + 1.265243e+00 1.464165e+00 8.928283e-01 1.476736e+00 2.639559e-01 1.983277e+00 5.332580e-01 9.671304e-01 1.174055e+00 1.136867e+00 5.524170e-01 2.995290e+00 + +2 34 31 0 32 + 2.714215e+00 -1.054907e+00 4.832784e+00 -1.148514e+00 -4.392982e+00 8.447283e-01 -3.079505e+00 -6.983904e-01 -2.614993e+00 8.671219e-01 1.342390e+00 -1.008347e+00 + 5.617045e-01 1.036219e+00 4.973421e-01 7.961002e-01 5.178062e-01 7.516218e-01 1.039191e+00 5.002329e-01 1.439236e+00 8.123024e-01 3.846723e-01 9.442524e-01 + +2 33 32 0 33 + -1.104755e+00 -2.556576e+00 -5.382201e+00 -1.018563e+00 4.024958e+00 1.519801e+00 -7.249631e-01 -2.080827e+00 1.230888e+00 7.658106e-02 9.976062e-01 -1.075882e+00 + 3.007960e-01 1.267368e+00 5.497867e-01 2.429210e-01 9.701456e-01 3.206241e-01 1.231625e+00 7.994837e-01 4.139843e-01 5.531237e-01 5.964184e-01 1.893830e+00 + +2 32 33 0 34 + 4.926332e+00 -8.817974e-01 -9.744924e-02 -1.675606e+00 -1.342720e+00 1.116348e+00 -6.025658e+00 1.150186e+00 1.091394e+00 -9.318765e-01 -3.063329e+00 -4.582664e+00 + 2.109756e+00 6.383232e-01 6.177292e-01 7.386145e+00 2.472780e+00 9.381113e-01 8.338365e-01 2.017746e+00 9.589745e-01 1.050256e+00 1.250072e+00 8.740263e-01 + +2 31 34 0 35 + 2.760874e+00 2.296757e+00 1.977730e+00 -1.119698e+00 -1.258348e-01 2.884445e-01 -3.203866e+00 -1.927794e+00 -2.972500e+00 -1.537992e-01 -1.119633e+00 -4.164985e-01 + 7.660881e-01 3.996423e-01 1.042801e+00 3.656255e-01 3.917874e-01 6.552585e-01 4.720010e-01 1.455618e+00 1.092701e+00 5.713511e-01 1.368065e+00 1.566480e+00 + +2 30 35 0 36 + 5.623660e+00 -1.782268e+00 2.300168e+00 1.145339e+00 -3.284661e+00 3.078701e-01 -3.429090e+00 1.024220e+00 -1.032321e+00 1.998087e-01 -4.762759e-01 -1.063193e+00 + 5.673394e-01 1.139129e+00 6.267598e-01 5.807446e-01 8.579546e-01 6.090982e-01 2.507121e-01 1.276063e+00 6.316343e-01 1.228877e+00 6.009543e-01 6.454827e-01 + +2 29 36 0 37 + 2.117406e-01 4.559525e-01 -1.232672e+00 -5.896030e-01 8.886851e-01 9.221404e-01 -2.717544e-02 -1.046926e+00 -4.604677e-01 1.719548e+00 9.403626e-01 -1.357800e+00 + 9.797907e-01 9.437076e-01 8.066455e-01 6.454636e-01 1.320032e+00 5.396848e-01 7.621163e-01 8.945265e-01 6.613000e-01 9.959558e-01 1.093621e+00 1.375044e+00 + +2 28 37 0 38 + -1.713474e+00 -1.165201e+00 -1.222964e+00 2.125844e-01 2.447097e+00 2.382360e+00 7.160560e-01 2.654014e+00 -1.858630e-01 5.274114e-01 1.367644e-01 -3.823188e-01 + 2.929259e-01 1.232535e+00 5.584323e-01 5.175838e-01 5.256600e-01 6.254241e-01 8.344801e-01 3.997540e-01 1.060732e+00 7.202009e-01 5.475936e-01 9.138815e-01 + +2 27 38 0 39 + -4.198767e+00 -2.985978e-01 -3.694191e+00 -1.486073e+00 2.007539e+00 -1.720841e+00 1.529708e+00 1.341362e+00 1.692442e+00 -2.639797e-01 1.707996e+00 -6.435198e-01 + 5.164784e-01 6.254220e-01 6.318365e-01 8.083967e-01 4.437190e-01 2.633326e-01 9.906508e-01 3.852963e-01 8.241581e-01 4.470945e-01 9.885157e-01 2.004652e+00 + +2 26 39 0 40 + 2.451113e+00 -1.982205e+00 5.882964e-01 -5.658292e-01 -2.509515e+00 9.340681e-02 -2.301907e+00 2.412368e+00 -1.049139e+00 6.158531e-01 7.110801e-01 -3.024929e-01 + 7.905170e-01 7.719515e-01 9.985119e-01 7.309980e-01 3.737345e-01 2.706907e-01 7.145396e-01 4.846944e-01 8.600365e-01 7.989807e-01 5.245360e-01 9.762577e-01 + +2 25 40 0 41 + -3.116027e-02 1.974450e+00 -1.788191e+00 2.962269e+00 2.407058e+00 9.988517e-01 -5.177339e-01 -2.775447e+00 -5.615433e-01 5.189442e-01 -7.078595e-01 -1.263639e+00 + 7.255053e-01 7.848380e-01 5.462061e-01 5.461212e-01 3.289167e-01 3.848993e-01 5.558874e-01 5.804422e-01 7.020482e-01 3.904525e-01 1.034132e+00 7.591885e-01 + +2 24 41 0 42 + -1.126741e-01 -2.671937e-01 4.236214e-01 -4.857712e-01 -5.630886e-01 5.557081e-01 -1.241238e-01 -7.481167e-01 -7.654891e-02 -2.382474e-01 1.049894e+00 -1.340367e-01 + 1.220080e+00 1.606642e+00 1.350881e+00 1.111506e+00 1.093282e+00 1.193899e+00 9.669504e-01 1.250526e+00 1.355454e+00 1.820956e+00 1.712919e+00 1.865257e+00 + +2 23 42 0 43 + 2.242179e-01 7.084381e-03 -1.366856e+00 4.681393e-01 3.357687e-01 8.340791e-01 -9.818965e-01 -2.373270e+00 2.789841e+00 -4.424202e-01 -1.133601e+00 7.725575e-01 + 6.982192e-01 1.169878e+00 4.143635e-01 2.985212e-01 4.366796e-01 4.595419e-01 5.070212e-01 1.413990e+00 6.446732e-01 4.644491e-01 1.616424e+00 6.558810e-01 + +2 22 43 0 44 + 4.940627e-01 -5.448068e-01 -4.431629e-01 2.501036e-01 5.477468e-01 -9.684297e-02 -7.873152e-01 1.685884e+00 1.075562e+00 -6.734295e-01 -6.749054e-01 6.342208e-01 + 9.309009e-01 1.676910e+00 5.524401e-01 8.796272e-01 6.986301e-01 6.727178e-01 8.679809e-01 1.851235e+00 9.026086e-01 1.405198e+00 1.309189e+00 1.158477e+00 + +2 21 44 0 45 + -2.158089e-01 -5.128366e-01 -1.344887e-01 -2.408520e-01 2.320380e-01 1.330096e+00 8.722557e-01 3.882444e-01 -8.431505e-01 -1.286548e+00 -2.205364e+00 -1.999927e+00 + 4.678987e-01 7.257089e-01 1.050524e+00 5.382416e-01 6.017480e-01 4.442900e-01 4.595635e-01 3.574895e-01 7.535651e-01 8.025757e-01 9.325758e-01 1.038985e+00 + +2 20 45 0 46 + -5.348597e+00 -5.896898e+00 9.374058e-01 2.072045e+00 9.315005e-01 -1.312391e+00 7.359609e+00 -1.583351e+00 -8.311985e-01 4.958978e-01 -2.104001e+00 1.679798e+00 + 2.135822e-01 4.339607e-01 1.480416e+01 3.602184e-01 5.365483e-01 1.147067e+00 1.612980e-01 2.560816e+01 1.566522e+00 3.429614e-01 5.294837e+00 1.652702e+01 + +2 19 46 0 47 + -4.009109e+00 -1.151848e+00 6.088026e-01 3.765806e+00 3.125770e+00 -2.508676e+00 5.003637e-01 -1.652095e+00 2.268752e-01 1.037845e+00 1.805590e+00 1.137749e+00 + 8.026648e-01 9.406562e-01 1.808662e+00 8.663248e-01 1.059410e+00 1.884223e+00 8.999690e-01 9.533204e-01 3.920495e+00 4.529761e-01 3.445503e+00 1.708921e+00 + +2 18 47 0 48 + -2.711761e+00 2.996446e+00 6.397483e-01 1.770225e+00 1.876278e+00 -3.510648e+00 2.409179e+00 -1.867446e+00 6.268109e-01 -1.185971e+00 1.399982e+00 5.064690e-01 + 2.895407e-01 6.419810e-01 8.102210e-01 1.055396e+00 7.324235e-01 5.782887e-01 4.362918e-01 4.924715e-01 6.097862e-01 4.347199e-01 8.449433e-01 4.277740e-01 + +2 17 48 0 49 + -2.640555e+00 2.645264e+00 -2.888592e+00 1.534798e+00 5.031013e+00 -2.692707e-01 2.827653e+00 -1.023561e+00 2.616606e+00 6.996846e-02 -9.539110e-01 6.544380e-01 + 5.175421e-01 4.351437e-01 1.206073e+00 3.477070e-01 8.097768e-01 4.127572e-01 2.190369e-01 9.672778e-01 4.559105e-01 7.555746e-01 1.212803e+00 1.028481e+00 + +2 16 49 0 50 + 8.266554e-01 2.727698e+00 -8.739505e-02 -2.843882e+00 -3.182528e-01 1.438639e+00 9.980311e-01 -1.050665e+00 -1.702596e+00 5.326843e-01 1.030467e-01 7.998413e-01 + 2.138841e-01 5.201623e-01 5.051455e-01 7.145739e-01 2.105454e-01 6.746136e-01 6.775598e-01 1.334971e+00 8.350053e-01 4.435215e-01 7.227225e-01 1.994557e+00 + +2 15 50 0 51 + -1.018512e+00 3.271258e+00 2.398392e+00 -1.650747e+00 -1.133487e+00 9.062806e-01 1.609110e+00 -1.530305e+00 -4.964082e+00 6.061135e+00 1.075039e+00 -8.338224e-01 + 1.127786e+00 1.907434e+00 2.840361e+00 9.995625e-01 6.336495e-01 8.655328e+00 4.957223e+00 4.129869e-01 6.735991e-01 1.865422e+00 2.053549e+00 3.968229e+00 + +2 14 51 0 52 + -5.635524e-01 -1.159950e+00 1.023257e+00 1.990795e+00 8.100599e-01 -1.738443e+00 -1.167379e+00 4.806568e-01 1.514075e+00 8.502059e-01 -1.746171e+00 -1.562036e+00 + 1.197047e+00 4.060856e-01 4.318552e-01 9.406669e-01 4.450416e-01 4.277972e-01 5.413619e-01 4.034785e-01 6.039010e-01 7.651874e-01 9.206461e-01 1.061272e+00 + +2 13 52 0 53 + -6.189589e-01 -6.655130e-01 -7.451721e-01 -6.547148e-01 -3.209094e-02 3.354331e-01 1.177650e-01 8.244051e-01 7.684688e-01 1.199194e+00 1.514584e+00 1.236964e+00 + 7.566011e-01 1.032053e+00 1.023751e+00 1.047641e+00 1.010332e+00 7.293303e-01 1.034600e+00 8.023248e-01 8.454913e-01 1.433453e+00 1.271488e+00 1.190839e+00 + +2 12 53 0 54 + 2.450447e+00 1.961131e+00 2.302712e+00 2.284388e+00 -2.913490e-02 3.375433e-01 2.001159e-01 2.011475e-01 -1.202946e+00 -5.290869e-01 -6.300772e-01 4.691432e-02 + 5.159505e-01 7.716939e-01 5.539781e-01 7.624694e-01 3.755132e-01 4.077059e-01 6.317548e-01 4.126800e-01 7.642235e-01 8.287871e-01 1.723450e+00 9.273145e-01 + +2 11 54 0 55 + -1.456634e+00 2.026675e+00 2.048836e-01 7.954431e-01 2.043145e+00 -1.839515e+00 3.024566e+00 7.491413e-01 -1.855963e-01 -8.084218e-01 -6.925675e-01 1.890604e+00 + 1.062858e+00 9.572447e-01 5.952327e-01 4.181930e-01 4.528579e-01 5.470400e-01 6.312065e-01 5.346373e-01 7.052215e-01 8.414761e-01 1.086952e+00 1.178996e+00 + +2 10 55 0 56 + 1.008185e+00 -1.169056e+00 -2.963475e+00 -2.628406e+00 4.717163e-02 1.391136e+00 -1.746031e-01 2.363714e+00 3.304569e+00 -1.202047e+00 -5.035025e-01 -1.638999e+00 + 3.665158e-01 9.790126e-01 6.370462e-01 4.259210e-01 5.748243e-01 3.787279e-01 3.110924e-01 5.916886e-01 4.757777e-01 9.053878e-01 9.322047e-01 7.758428e-01 + +2 9 56 0 57 + 1.522133e+00 -2.568086e+00 -5.125356e-01 -8.286945e-01 -2.048723e+00 1.880284e+00 -1.389916e+00 4.464641e-01 1.163531e+00 5.573038e-01 1.860334e-01 -1.424223e+00 + 7.105095e-01 6.457002e-01 7.179264e-01 8.469703e-01 4.480053e-01 6.457957e-01 5.303304e-01 7.194298e-01 7.982208e-01 7.413140e-01 6.374152e-01 1.260178e+00 + +2 8 57 0 58 + -4.138672e+00 1.239479e+00 -2.174722e+00 -4.165456e-01 3.509473e+00 1.684392e+00 3.071104e+00 -8.612624e-02 -3.326747e-01 -1.348300e-01 1.229495e+00 -4.427644e-01 + 3.837006e-01 5.495114e-01 5.989188e-01 6.128070e-01 3.641329e-01 4.948958e-01 3.506190e-01 7.814233e-01 5.794306e-01 3.792071e-01 1.444888e+00 1.291912e+00 + +2 7 58 0 59 + -4.726605e-02 4.723888e-01 -3.554634e-01 -6.020608e-02 7.616259e-01 2.029641e-01 -1.592858e-02 4.757981e-01 -7.546266e-01 -1.846306e+00 4.973642e-01 1.959337e-01 + 1.352209e+00 1.103895e+00 1.157766e+00 1.019489e+00 1.183549e+00 8.450982e-01 9.644922e-01 9.193971e-01 1.221118e+00 1.465459e+00 1.148218e+00 1.205367e+00 + +2 6 59 0 60 + -7.684998e-01 1.343366e+00 1.734024e+00 3.246112e-01 -9.492945e-01 -9.775254e-01 2.960407e-01 -1.759495e+00 -6.329297e-01 -1.143579e-01 7.037760e-01 1.904521e+00 + 1.459077e+00 1.346415e+00 7.393906e-01 7.788790e-01 8.405897e-01 9.321544e-01 5.312293e-01 5.399026e-01 6.850823e-01 7.505723e-01 9.884750e-01 1.442676e+00 + +2 5 60 0 61 + 7.742290e-01 -1.726041e+00 -5.670851e-01 -2.657383e+00 -2.584248e+00 -1.639933e+00 -4.378968e-01 2.765241e-01 2.128119e-01 7.835506e-02 2.914187e-01 4.393818e-01 + 6.229979e-01 8.772898e-01 5.250777e-01 6.043550e-01 4.747797e-01 5.940582e-01 4.273428e-01 5.825610e-01 5.832269e-01 6.738066e-01 8.856186e-01 7.917641e-01 + +2 4 61 0 62 + 2.576083e-01 3.967318e-01 3.489987e+00 -5.513327e-01 -2.067311e+00 -2.208361e+00 1.345059e+00 1.372015e+00 -2.585906e+00 -9.583213e-01 1.821889e+00 2.858469e-01 + 2.532473e-01 8.988501e-01 6.721758e-01 5.425718e-01 3.304340e-01 5.414463e-01 5.574862e-01 4.804387e-01 5.113164e-01 5.203803e-01 8.354421e-01 7.226393e-01 + +2 3 62 0 63 + 1.092670e+00 -9.335575e-01 -3.045391e-01 1.803763e+00 -1.193674e+00 -1.497446e+00 1.128515e+00 4.622301e-01 1.723244e-01 7.830569e-01 5.090817e-01 3.132562e-01 + 6.060336e-01 1.163134e+00 9.314243e-01 8.386579e-01 8.001204e-01 7.374429e-01 1.028560e+00 9.286921e-01 7.568448e-01 1.412421e+00 1.173434e+00 1.621832e+00 + +2 2 63 0 64 + -2.681595e-01 -4.767864e-01 2.565907e+00 1.358692e+00 -1.372210e+00 -2.361002e+00 1.449265e-01 2.336846e+00 -3.199383e-01 -8.880655e-01 -1.176252e+00 1.699274e+00 + 8.088538e-01 8.042482e-01 6.455451e-01 5.796708e-01 6.854202e-01 5.434235e-01 4.569917e-01 9.320150e-01 6.433842e-01 8.517499e-01 1.138524e+00 8.078069e-01 + +2 1 64 0 0 + -2.954541e+00 5.454993e+00 -1.746237e+00 3.693352e+00 6.151716e+00 3.065145e-01 2.147238e+00 -2.416527e+00 1.925878e-01 6.336776e-01 -6.144851e-01 -4.553340e-01 + 5.428212e-01 1.841368e+00 3.136473e+00 3.261371e+00 4.455662e-01 4.536057e-01 5.022572e-01 4.112536e-01 2.049174e+00 8.882120e-01 4.507640e-01 9.838136e-01 + +3 16 1 0 2 + 5.318182e-01 -2.517115e-01 + 1.065169e+02 1.488370e+03 + +3 15 2 0 3 + 9.335812e-02 -1.978281e-01 + 7.191808e+01 9.912267e+02 + +3 14 3 0 4 + 3.281980e-01 -1.132056e-01 + 1.071187e+02 1.655235e+03 + +3 13 4 0 5 + 6.274557e-01 -1.808081e-01 + 6.800059e+01 1.863386e+03 + +3 12 5 0 6 + 4.356802e-01 6.732223e-02 + 1.040095e+02 2.044918e+03 + +3 11 6 0 7 + 2.983615e-02 -6.646704e-02 + 8.422820e+01 1.268943e+03 + +3 10 7 0 8 + 6.927645e-01 -8.783068e-02 + 9.747758e+01 2.824437e+03 + +3 9 8 0 9 + -7.379353e-04 1.277579e-01 + 5.873563e+01 7.034089e+02 + +3 8 9 0 10 + 4.831084e-01 -5.139824e-02 + 1.345045e+02 3.655639e+03 + +3 7 10 0 11 + 7.679156e-01 -2.477712e-02 + 2.057741e+02 3.942066e+03 + +3 6 11 0 12 + 2.232401e-01 -7.077944e-03 + 1.112447e+02 2.343463e+03 + +3 5 12 0 13 + 5.365768e-01 1.608076e-01 + 5.119162e+01 1.016463e+03 + +3 4 13 0 14 + 5.770796e-01 8.598544e-03 + 1.633119e+02 3.941439e+03 + +3 3 14 0 15 + -1.228550e-01 1.214253e-03 + 4.259199e+02 2.123834e+03 + +3 2 15 0 16 + 7.608585e-01 7.333107e-02 + 1.286977e+02 1.577124e+03 + +3 1 16 0 0 + 8.819216e-01 4.540200e-03 + 1.810878e+02 3.987594e+03 + diff --git a/samples/HTKDemo/configs/DcfFormat b/samples/HTKDemo/configs/DcfFormat new file mode 100755 index 0000000..32c24f3 --- /dev/null +++ b/samples/HTKDemo/configs/DcfFormat @@ -0,0 +1,45 @@ +: + +: + This is an example showing the format of the DCF + +: + +hsKind: /* P)LAIN, T)IED, S)HARED */ +covKind: /* F)ULLC, D)IAGC */ +nStreams: /* 1), 3) */ +nMixes: /* for PLAINHS or SHAREDHS 1), 4), 1 1 1), 4 4 4) + for TIEDHS 12), 12 12 4) - monophone + 32), 32 32 4) - triphone or biphone + for DISCRETEHS 64), 64 64 16)*/ +Context: /* M)onophone, T)riphone, L)eft biphone, R)ight biphone */ +TiedState: /* y)es, n)o - if y a tied state system is produced*/ +VQ_clust: /* L)inear, T)ree clustering of codebook production */ +HERest Iter: /* 1), N) - number of iters of embedded training, + N has no upper limit*/ +HERest par mode: /* y)es, n)o - if y HERest is called in parallel mode*/ +Direct_audio: /* y)es, n)o - if y HVite is called in direct + audio mode and the user can view the output of + a simple live recogniser */ +Clean_up: /* y)es, n)o - if y directories containing hmms, + results files and accumulator files will be cleared*/ +Trace_tool_calls: /* y)es, n)o - if y then script will print out + actual call made to HTK tools*/ + +: + +: + +HCopy: /* y)es, n)o - Note that HERest & HSmooth +HList: are mutually exclusive */ +HQuant: +HLEd: +HInit: +HRest: +HERest: +HSmooth: +HVite: + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/directAudio.dcf b/samples/HTKDemo/configs/directAudio.dcf new file mode 100755 index 0000000..c75a502 --- /dev/null +++ b/samples/HTKDemo/configs/directAudio.dcf @@ -0,0 +1,40 @@ + + + + This DCF produces a plain, four mixture, single stream diagonal + covariance monophone system. HVite is then invoked in direct audio + mode to produce a simple demonstration of live recognition of broad + class phones. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 4 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +direct_audio: y +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: y +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + + + + \ No newline at end of file diff --git a/samples/HTKDemo/configs/lbiPlainS1.dcf b/samples/HTKDemo/configs/lbiPlainS1.dcf new file mode 100755 index 0000000..c41e770 --- /dev/null +++ b/samples/HTKDemo/configs/lbiPlainS1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance, left biphone system. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: L +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monDiscM64S1Lin.dcf b/samples/HTKDemo/configs/monDiscM64S1Lin.dcf new file mode 100755 index 0000000..20886e3 --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S1Lin.dcf @@ -0,0 +1,39 @@ + + + + This DCF produces a VQ HMM monophone system using a single stream + codebook of size 64. + + + +hsKind: D +covKind: D +nStreams: 1 +nMixes: 64 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + + diff --git a/samples/HTKDemo/configs/monDiscM64S1Tree.dcf b/samples/HTKDemo/configs/monDiscM64S1Tree.dcf new file mode 100755 index 0000000..4d71eb7 --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S1Tree.dcf @@ -0,0 +1,39 @@ + + + + This DCF produces a VQ HMM monophone system using a single stream + codebook of size 64. + + + +hsKind: D +covKind: D +nStreams: 1 +nMixes: 64 +Context: M +TiedState: n +VQ_clust: T +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + + diff --git a/samples/HTKDemo/configs/monDiscM64S3Lin.dcf b/samples/HTKDemo/configs/monDiscM64S3Lin.dcf new file mode 100755 index 0000000..1ea04ea --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S3Lin.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a 3 stream VQ HMM monophone system using a codebook of + sizes 64 64 16. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monDiscM64S3Tree.dcf b/samples/HTKDemo/configs/monDiscM64S3Tree.dcf new file mode 100755 index 0000000..4120404 --- /dev/null +++ b/samples/HTKDemo/configs/monDiscM64S3Tree.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a 3 stream VQ HMM monophone system using a codebook of + sizes 64 64 16. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: M +TiedState: n +VQ_clust: T +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S1.dcf b/samples/HTKDemo/configs/monPlainM1S1.dcf new file mode 100755 index 0000000..dd11445 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a plain single mixture, single stream diagonal + covariance monophone system + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S3.dcf b/samples/HTKDemo/configs/monPlainM1S3.dcf new file mode 100755 index 0000000..d1e51bf --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S3.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a plain single mixture, three stream diagonal + covariance monophone system + + + +hsKind: P +covKind: D +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S3FullCov.dcf b/samples/HTKDemo/configs/monPlainM1S3FullCov.dcf new file mode 100755 index 0000000..da83810 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S3FullCov.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a plain single mixture, three stream, full + covariance monophone system + + + +hsKind: P +covKind: F +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM1S3HERestPell.dcf b/samples/HTKDemo/configs/monPlainM1S3HERestPell.dcf new file mode 100755 index 0000000..107da08 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM1S3HERestPell.dcf @@ -0,0 +1,38 @@ + + + + This DCF produces a plain single mixture, three stream diagonal + covariance monophone system. The system is trained using HERest in + parallel mode. + + + +hsKind: P +covKind: D +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: y +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monPlainM4S1.dcf b/samples/HTKDemo/configs/monPlainM4S1.dcf new file mode 100755 index 0000000..48b7011 --- /dev/null +++ b/samples/HTKDemo/configs/monPlainM4S1.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a plain four mixture, single stream diagonal + covariance monophone system + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 4 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monSharedM1S3.dcf b/samples/HTKDemo/configs/monSharedM1S3.dcf new file mode 100755 index 0000000..b4ee31e --- /dev/null +++ b/samples/HTKDemo/configs/monSharedM1S3.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a single mixture, three stream monophone system + with shared covariance. + + + +hsKind: S +covKind: D +nStreams: 3 +nMixes: 1 1 1 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/monTiedMixS1.dcf b/samples/HTKDemo/configs/monTiedMixS1.dcf new file mode 100755 index 0000000..2ad5716 --- /dev/null +++ b/samples/HTKDemo/configs/monTiedMixS1.dcf @@ -0,0 +1,39 @@ + + + + This TCF produces a single stream tied mixture monophone system + with a tied mixture pool of size 12. + + + +hsKind: T +covKind: D +nStreams: 1 +nMixes: 12 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + + diff --git a/samples/HTKDemo/configs/monTiedMixS3.dcf b/samples/HTKDemo/configs/monTiedMixS3.dcf new file mode 100755 index 0000000..9507556 --- /dev/null +++ b/samples/HTKDemo/configs/monTiedMixS3.dcf @@ -0,0 +1,38 @@ + + + + This DCF produces a three stream tied mixture monophone system with + tied mixture pool sizes of 12 12 and 4 respectively. + + + +hsKind: T +covKind: D +nStreams: 3 +nMixes: 12 12 4 +Context: M +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: + diff --git a/samples/HTKDemo/configs/rbiPlainS1.dcf b/samples/HTKDemo/configs/rbiPlainS1.dcf new file mode 100755 index 0000000..d993eb5 --- /dev/null +++ b/samples/HTKDemo/configs/rbiPlainS1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance, right biphone system. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: R +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triDiscM64S3.dcf b/samples/HTKDemo/configs/triDiscM64S3.dcf new file mode 100755 index 0000000..d76113e --- /dev/null +++ b/samples/HTKDemo/configs/triDiscM64S3.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a 3 stream discrete triphone system with codebook + sizes 64 64 and 16. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triDiscM64S3HSmooth.dcf b/samples/HTKDemo/configs/triDiscM64S3HSmooth.dcf new file mode 100755 index 0000000..6b26bec --- /dev/null +++ b/samples/HTKDemo/configs/triDiscM64S3HSmooth.dcf @@ -0,0 +1,38 @@ + + + + This TCF produces a stream discrete triphone system with codebook + sizes 64 64 and 16. This system is then trained using HERest + followed by HSmooth which performs deleted interpolation. + + + +hsKind: D +covKind: D +nStreams: 3 +nMixes: 64 64 16 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: y +HLEd: n +HInit: y +HRest: y +HERest: n +HSmooth: y +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triPlainS1.dcf b/samples/HTKDemo/configs/triPlainS1.dcf new file mode 100755 index 0000000..88bd2e6 --- /dev/null +++ b/samples/HTKDemo/configs/triPlainS1.dcf @@ -0,0 +1,37 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance triphone system. + + + +hsKind: P +covKind: D +nStreams: 1 +nMixes: 1 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triSharedS1.dcf b/samples/HTKDemo/configs/triSharedS1.dcf new file mode 100755 index 0000000..bce6a91 --- /dev/null +++ b/samples/HTKDemo/configs/triSharedS1.dcf @@ -0,0 +1,38 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance triphone system with shared covariance and shared + transition matrices within allophone group. + + + +hsKind: S +covKind: D +nStreams: 1 +nMixes: 1 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triTiedMixS1.dcf b/samples/HTKDemo/configs/triTiedMixS1.dcf new file mode 100755 index 0000000..b840ef5 --- /dev/null +++ b/samples/HTKDemo/configs/triTiedMixS1.dcf @@ -0,0 +1,37 @@ + + + + This DCF produces a single single stream diagonal covariance + tied mixture triphone system with 32 Gaussians in the tied mixture pool. + + + +hsKind: T +covKind: D +nStreams: 1 +nMixes: 32 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triTiedMixS1HSmooth.dcf b/samples/HTKDemo/configs/triTiedMixS1HSmooth.dcf new file mode 100755 index 0000000..4aeec0c --- /dev/null +++ b/samples/HTKDemo/configs/triTiedMixS1HSmooth.dcf @@ -0,0 +1,39 @@ + + + + This TCF produces a single single stream diagonal covariance + tied mixture triphone system with 32 Gaussians in the tied mixture + pool. This system is then trained using HERest followed by HSmooth + which performs deleted interpolation. + + + +hsKind: T +covKind: D +nStreams: 1 +nMixes: 32 +Context: T +TiedState: n +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: n +HSmooth: y +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/configs/triTiedStateS1.dcf b/samples/HTKDemo/configs/triTiedStateS1.dcf new file mode 100755 index 0000000..b96e72e --- /dev/null +++ b/samples/HTKDemo/configs/triTiedStateS1.dcf @@ -0,0 +1,38 @@ + + + + This TCF produces a single mixture, single stream diagonal + covariance triphone system with state clustering within + allophone group. + + + +hsKind: S +covKind: D +nStreams: 1 +nMixes: 1 +Context: T +TiedState: y +VQ_clust: L +HERest_Iter: 3 +HERest_par_mode: n +Clean_up: y +Trace_tool_calls: y + +: + + + +HCopy: n +HList: n +HQuant: n +HLEd: n +HInit: y +HRest: y +HERest: y +HSmooth: n +HVite: y + +: + +: \ No newline at end of file diff --git a/samples/HTKDemo/data/store/te1.mfc b/samples/HTKDemo/data/store/te1.mfc new file mode 100755 index 0000000..9c1ea1f Binary files /dev/null and b/samples/HTKDemo/data/store/te1.mfc differ diff --git a/samples/HTKDemo/data/store/te2.mfc b/samples/HTKDemo/data/store/te2.mfc new file mode 100755 index 0000000..15f8d7a Binary files /dev/null and b/samples/HTKDemo/data/store/te2.mfc differ diff --git a/samples/HTKDemo/data/store/te3.mfc b/samples/HTKDemo/data/store/te3.mfc new file mode 100755 index 0000000..a7f9d68 Binary files /dev/null and b/samples/HTKDemo/data/store/te3.mfc differ diff --git a/samples/HTKDemo/data/store/tr1.mfc b/samples/HTKDemo/data/store/tr1.mfc new file mode 100755 index 0000000..a58edc7 Binary files /dev/null and b/samples/HTKDemo/data/store/tr1.mfc differ diff --git a/samples/HTKDemo/data/store/tr2.mfc b/samples/HTKDemo/data/store/tr2.mfc new file mode 100755 index 0000000..d4f820d Binary files /dev/null and b/samples/HTKDemo/data/store/tr2.mfc differ diff --git a/samples/HTKDemo/data/store/tr3.mfc b/samples/HTKDemo/data/store/tr3.mfc new file mode 100755 index 0000000..7e512b9 Binary files /dev/null and b/samples/HTKDemo/data/store/tr3.mfc differ diff --git a/samples/HTKDemo/data/store/tr4.mfc b/samples/HTKDemo/data/store/tr4.mfc new file mode 100755 index 0000000..23612f4 Binary files /dev/null and b/samples/HTKDemo/data/store/tr4.mfc differ diff --git a/samples/HTKDemo/data/store/tr5.mfc b/samples/HTKDemo/data/store/tr5.mfc new file mode 100755 index 0000000..5a90d0a Binary files /dev/null and b/samples/HTKDemo/data/store/tr5.mfc differ diff --git a/samples/HTKDemo/data/store/tr6.mfc b/samples/HTKDemo/data/store/tr6.mfc new file mode 100755 index 0000000..fe898ae Binary files /dev/null and b/samples/HTKDemo/data/store/tr6.mfc differ diff --git a/samples/HTKDemo/data/store/tr7.mfc b/samples/HTKDemo/data/store/tr7.mfc new file mode 100755 index 0000000..f14355a Binary files /dev/null and b/samples/HTKDemo/data/store/tr7.mfc differ diff --git a/samples/HTKDemo/data/test/te1.mfc b/samples/HTKDemo/data/test/te1.mfc new file mode 100755 index 0000000..64c8408 Binary files /dev/null and b/samples/HTKDemo/data/test/te1.mfc differ diff --git a/samples/HTKDemo/data/test/te2.mfc b/samples/HTKDemo/data/test/te2.mfc new file mode 100755 index 0000000..ca90891 Binary files /dev/null and b/samples/HTKDemo/data/test/te2.mfc differ diff --git a/samples/HTKDemo/data/test/te3.mfc b/samples/HTKDemo/data/test/te3.mfc new file mode 100755 index 0000000..7ddd745 Binary files /dev/null and b/samples/HTKDemo/data/test/te3.mfc differ diff --git a/samples/HTKDemo/data/train/tr1.mfc b/samples/HTKDemo/data/train/tr1.mfc new file mode 100755 index 0000000..ba17bc7 Binary files /dev/null and b/samples/HTKDemo/data/train/tr1.mfc differ diff --git a/samples/HTKDemo/data/train/tr2.mfc b/samples/HTKDemo/data/train/tr2.mfc new file mode 100755 index 0000000..3cbdd37 Binary files /dev/null and b/samples/HTKDemo/data/train/tr2.mfc differ diff --git a/samples/HTKDemo/data/train/tr3.mfc b/samples/HTKDemo/data/train/tr3.mfc new file mode 100755 index 0000000..29a2158 Binary files /dev/null and b/samples/HTKDemo/data/train/tr3.mfc differ diff --git a/samples/HTKDemo/data/train/tr4.mfc b/samples/HTKDemo/data/train/tr4.mfc new file mode 100755 index 0000000..eb50395 Binary files /dev/null and b/samples/HTKDemo/data/train/tr4.mfc differ diff --git a/samples/HTKDemo/data/train/tr5.mfc b/samples/HTKDemo/data/train/tr5.mfc new file mode 100755 index 0000000..cbe8e87 Binary files /dev/null and b/samples/HTKDemo/data/train/tr5.mfc differ diff --git a/samples/HTKDemo/data/train/tr6.mfc b/samples/HTKDemo/data/train/tr6.mfc new file mode 100755 index 0000000..99d5cd4 Binary files /dev/null and b/samples/HTKDemo/data/train/tr6.mfc differ diff --git a/samples/HTKDemo/data/train/tr7.mfc b/samples/HTKDemo/data/train/tr7.mfc new file mode 100755 index 0000000..c0c5f4c Binary files /dev/null and b/samples/HTKDemo/data/train/tr7.mfc differ diff --git a/samples/HTKDemo/edfiles/contDepPlainhs.hed b/samples/HTKDemo/edfiles/contDepPlainhs.hed new file mode 100755 index 0000000..6c42600 --- /dev/null +++ b/samples/HTKDemo/edfiles/contDepPlainhs.hed @@ -0,0 +1 @@ +CL lists/contDepList diff --git a/samples/HTKDemo/edfiles/contDepTiedhsS1.hed b/samples/HTKDemo/edfiles/contDepTiedhsS1.hed new file mode 100755 index 0000000..2dc9266 --- /dev/null +++ b/samples/HTKDemo/edfiles/contDepTiedhsS1.hed @@ -0,0 +1,3 @@ +JO 32 2.0 +TI SPDF {*.state[2-4].stream[1].mix} +HK TIEDHS \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/contDepTiedhsS3.hed b/samples/HTKDemo/edfiles/contDepTiedhsS3.hed new file mode 100755 index 0000000..fd362ba --- /dev/null +++ b/samples/HTKDemo/edfiles/contDepTiedhsS3.hed @@ -0,0 +1,6 @@ +JO 32 2.0 +TI SPDF_1_ {*.state[2-4].stream[1].mix} +TI SPDF_2_ {*.state[2-4].stream[2].mix} +JO 4 2.0 +TI SPDF_3_ {*.state[2-4].stream[3].mix} +HK TIEDHS \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/edlabs.led b/samples/HTKDemo/edfiles/edlabs.led new file mode 100755 index 0000000..2d334af --- /dev/null +++ b/samples/HTKDemo/edfiles/edlabs.led @@ -0,0 +1,7 @@ +S +D q +R V iy ih eh ae ix ax ah ax-h uw uh ao aa ey ay oy aw ow ux +R L l el r y w er axr +R N m n en ng em nx eng +R C ch j jh dh b d dx g p t k z zh v f th s sh hh hv pcl tcl kcl qcl bcl dcl gcl epi +R S sil h# #h pau diff --git a/samples/HTKDemo/edfiles/edllabs.led b/samples/HTKDemo/edfiles/edllabs.led new file mode 100755 index 0000000..b4de01d --- /dev/null +++ b/samples/HTKDemo/edfiles/edllabs.led @@ -0,0 +1 @@ +LC \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/edrlabs.led b/samples/HTKDemo/edfiles/edrlabs.led new file mode 100755 index 0000000..4c35976 --- /dev/null +++ b/samples/HTKDemo/edfiles/edrlabs.led @@ -0,0 +1 @@ +RC diff --git a/samples/HTKDemo/edfiles/edtlabs.led b/samples/HTKDemo/edfiles/edtlabs.led new file mode 100755 index 0000000..62a6e3c --- /dev/null +++ b/samples/HTKDemo/edfiles/edtlabs.led @@ -0,0 +1 @@ +T diff --git a/samples/HTKDemo/edfiles/lbiSharedhsM1.hed b/samples/HTKDemo/edfiles/lbiSharedhsM1.hed new file mode 100755 index 0000000..fa4a40e --- /dev/null +++ b/samples/HTKDemo/edfiles/lbiSharedhsM1.hed @@ -0,0 +1,20 @@ +TI CS2 {*-C.state[2].mix[1].cov} +TI CS3 {*-C.state[3].mix[1].cov} +TI CS4 {*-C.state[4].mix[1].cov} +TI VS2 {*-V.state[2].mix[1].cov} +TI VS3 {*-V.state[3].mix[1].cov} +TI VS4 {*-V.state[4].mix[1].cov} +TI LS2 {*-L.state[2].mix[1].cov} +TI LS3 {*-L.state[3].mix[1].cov} +TI LS4 {*-L.state[4].mix[1].cov} +TI NS2 {*-N.state[2].mix[1].cov} +TI NS3 {*-N.state[3].mix[1].cov} +TI NS4 {*-N.state[4].mix[1].cov} +TI SS2 {*-S.state[2].mix[1].cov} +TI SS3 {*-S.state[3].mix[1].cov} +TI SS4 {*-S.state[4].mix[1].cov} +TI Stran {*-S.transP} +TI Vtran {*-V.transP} +TI Ltran {*-L.transP} +TI Ntran {*-N.transP} +TI Ctran {*-C.transP} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/lbiTiedState.hed b/samples/HTKDemo/edfiles/lbiTiedState.hed new file mode 100755 index 0000000..c59a5b5 --- /dev/null +++ b/samples/HTKDemo/edfiles/lbiTiedState.hed @@ -0,0 +1,15 @@ +TC 0.2 Sste2 {*-S.state[2]} +TC 0.2 Vste2 {*-V.state[2]} +TC 0.2 Lste2 {*-L.state[2]} +TC 0.2 Nste2 {*-N.state[2]} +TC 0.5 Cste2 {*-C.state[2]} +TC 0.2 Sste3 {*-S.state[3]} +TC 0.2 Vste3 {*-V.state[3]} +TC 0.2 Lste3 {*-L.state[3]} +TC 0.2 Nste3 {*-N.state[3]} +TC 0.5 Cste3 {*-C.state[3]} +TC 0.2 Sste4 {*-S.state[4]} +TC 0.2 Vste4 {*-V.state[4]} +TC 0.2 Lste4 {*-L.state[4]} +TC 0.2 Nste4 {*-N.state[4]} +TC 0.5 Cste4 {*-C.state[4]} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/monInternalTie.hed b/samples/HTKDemo/edfiles/monInternalTie.hed new file mode 100755 index 0000000..0df8e5c --- /dev/null +++ b/samples/HTKDemo/edfiles/monInternalTie.hed @@ -0,0 +1,15 @@ +TI C1 {C.state[2-4].stream[1].mix[1].cov} +TI C2 {C.state[2-4].stream[2].mix[1].cov} +TI C3 {C.state[2-4].stream[3].mix[1].cov} +TI L1 {L.state[2-4].stream[1].mix[1].cov} +TI L2 {L.state[2-4].stream[2].mix[1].cov} +TI L3 {L.state[2-4].stream[3].mix[1].cov} +TI N1 {N.state[2-4].stream[1].mix[1].cov} +TI N2 {N.state[2-4].stream[2].mix[1].cov} +TI N3 {N.state[2-4].stream[3].mix[1].cov} +TI S1 {S.state[2-4].stream[1].mix[1].cov} +TI S2 {S.state[2-4].stream[2].mix[1].cov} +TI S3 {S.state[2-4].stream[3].mix[1].cov} +TI V1 {V.state[2-4].stream[1].mix[1].cov} +TI V2 {V.state[2-4].stream[2].mix[1].cov} +TI V3 {V.state[2-4].stream[3].mix[1].cov} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/monSharedhsM1.hed b/samples/HTKDemo/edfiles/monSharedhsM1.hed new file mode 100755 index 0000000..180c247 --- /dev/null +++ b/samples/HTKDemo/edfiles/monSharedhsM1.hed @@ -0,0 +1 @@ +TI M1 {*.state[3].mix[1]} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/monSharedhsM4.hed b/samples/HTKDemo/edfiles/monSharedhsM4.hed new file mode 100755 index 0000000..a5daed2 --- /dev/null +++ b/samples/HTKDemo/edfiles/monSharedhsM4.hed @@ -0,0 +1,2 @@ +TI M1 {*.state[3].mix[1-4]} +TI C1 {*.state[2].mix[1-4].cov} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/monTiedhsS1.hed b/samples/HTKDemo/edfiles/monTiedhsS1.hed new file mode 100755 index 0000000..ae12ad6 --- /dev/null +++ b/samples/HTKDemo/edfiles/monTiedhsS1.hed @@ -0,0 +1,3 @@ +JO 12 2.0 +TI S1PDF_1_ {*.state[2-4].stream[1].mix} +HK TIEDHS \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/monTiedhsS3.hed b/samples/HTKDemo/edfiles/monTiedhsS3.hed new file mode 100755 index 0000000..6b51146 --- /dev/null +++ b/samples/HTKDemo/edfiles/monTiedhsS3.hed @@ -0,0 +1,6 @@ +JO 12 2.0 +TI SPDF_1_ {*.state[2-4].stream[1].mix} +TI SPDF_2_ {*.state[2-4].stream[2].mix} +JO 4 2.0 +TI SPDF_3_ {*.state[2-4].stream[3].mix} +HK TIEDHS \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/rbiSharedhsM1.hed b/samples/HTKDemo/edfiles/rbiSharedhsM1.hed new file mode 100755 index 0000000..f35a470 --- /dev/null +++ b/samples/HTKDemo/edfiles/rbiSharedhsM1.hed @@ -0,0 +1,20 @@ +TI CS2 {C+*.state[2].mix[1].cov} +TI CS3 {C+*.state[3].mix[1].cov} +TI CS4 {C+*.state[4].mix[1].cov} +TI VS2 {V+*.state[2].mix[1].cov} +TI VS3 {V+*.state[3].mix[1].cov} +TI VS4 {V+*.state[4].mix[1].cov} +TI LS2 {L+*.state[2].mix[1].cov} +TI LS3 {L+*.state[3].mix[1].cov} +TI LS4 {L+*.state[4].mix[1].cov} +TI NS2 {N+*.state[2].mix[1].cov} +TI NS3 {N+*.state[3].mix[1].cov} +TI NS4 {N+*.state[4].mix[1].cov} +TI SS2 {S+*.state[2].mix[1].cov} +TI SS3 {S+*.state[3].mix[1].cov} +TI SS4 {S+*.state[4].mix[1].cov} +TI Stran {S+*.transP} +TI Vtran {V+*.transP} +TI Ltran {L+*.transP} +TI Ntran {N+*.transP} +TI Ctran {C+*.transP} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/rbiTiedState.hed b/samples/HTKDemo/edfiles/rbiTiedState.hed new file mode 100755 index 0000000..0b66e08 --- /dev/null +++ b/samples/HTKDemo/edfiles/rbiTiedState.hed @@ -0,0 +1,15 @@ +TC 0.2 Sste2 {S+*.state[2]} +TC 0.2 Vste2 {V+*.state[2]} +TC 0.2 Lste2 {L+*.state[2]} +TC 0.2 Nste2 {N+*.state[2]} +TC 0.5 Cste2 {C+*.state[2]} +TC 0.2 Sste3 {S+*.state[3]} +TC 0.2 Vste3 {V+*.state[3]} +TC 0.2 Lste3 {L+*.state[3]} +TC 0.2 Nste3 {N+*.state[3]} +TC 0.5 Cste3 {C+*.state[3]} +TC 0.2 Sste4 {S+*.state[4]} +TC 0.2 Vste4 {V+*.state[4]} +TC 0.2 Lste4 {L+*.state[4]} +TC 0.2 Nste4 {N+*.state[4]} +TC 0.5 Cste4 {C+*.state[4]} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/triSharedhsM1.hed b/samples/HTKDemo/edfiles/triSharedhsM1.hed new file mode 100755 index 0000000..6f03717 --- /dev/null +++ b/samples/HTKDemo/edfiles/triSharedhsM1.hed @@ -0,0 +1,20 @@ +TI CS2 {*-C+*.state[2].mix[1].cov} +TI CS3 {*-C+*.state[3].mix[1].cov} +TI CS4 {*-C+*.state[4].mix[1].cov} +TI VS2 {*-V+*.state[2].mix[1].cov} +TI VS3 {*-V+*.state[3].mix[1].cov} +TI VS4 {*-V+*.state[4].mix[1].cov} +TI LS2 {*-L+*.state[2].mix[1].cov} +TI LS3 {*-L+*.state[3].mix[1].cov} +TI LS4 {*-L+*.state[4].mix[1].cov} +TI NS2 {*-N+*.state[2].mix[1].cov} +TI NS3 {*-N+*.state[3].mix[1].cov} +TI NS4 {*-N+*.state[4].mix[1].cov} +TI SS2 {*-S+*.state[2].mix[1].cov} +TI SS3 {*-S+*.state[3].mix[1].cov} +TI SS4 {*-S+*.state[4].mix[1].cov} +TI Stran {*-S+*.transP} +TI Vtran {*-V+*.transP} +TI Ltran {*-L+*.transP} +TI Ntran {*-N+*.transP} +TI Ctran {*-C+*.transP} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/triSharedhsM4.hed b/samples/HTKDemo/edfiles/triSharedhsM4.hed new file mode 100755 index 0000000..5bc805b --- /dev/null +++ b/samples/HTKDemo/edfiles/triSharedhsM4.hed @@ -0,0 +1 @@ +MU 4 {*.state[2-4].mix} \ No newline at end of file diff --git a/samples/HTKDemo/edfiles/triTiedState.hed b/samples/HTKDemo/edfiles/triTiedState.hed new file mode 100755 index 0000000..c58ade0 --- /dev/null +++ b/samples/HTKDemo/edfiles/triTiedState.hed @@ -0,0 +1,15 @@ +TC 0.2 Sste2 {*-S+*.state[2]} +TC 0.2 Vste2 {*-V+*.state[2]} +TC 0.2 Lste2 {*-L+*.state[2]} +TC 0.2 Nste2 {*-N+*.state[2]} +TC 0.5 Cste2 {*-C+*.state[2]} +TC 0.2 Sste3 {*-S+*.state[3]} +TC 0.2 Vste3 {*-V+*.state[3]} +TC 0.2 Lste3 {*-L+*.state[3]} +TC 0.2 Nste3 {*-N+*.state[3]} +TC 0.5 Cste3 {*-C+*.state[3]} +TC 0.2 Sste4 {*-S+*.state[4]} +TC 0.2 Vste4 {*-V+*.state[4]} +TC 0.2 Lste4 {*-L+*.state[4]} +TC 0.2 Nste4 {*-N+*.state[4]} +TC 0.5 Cste4 {*-C+*.state[4]} \ No newline at end of file diff --git a/samples/HTKDemo/labels/bcplabs/lbi/te1.lab b/samples/HTKDemo/labels/bcplabs/lbi/te1.lab new file mode 100755 index 0000000..f2403dd --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/te1.lab @@ -0,0 +1,33 @@ +0 864843750 S +864843750 1078125000 S-C +1078125000 1614453125 C-V +1614453125 1878125000 V-N +2230468750 2839843750 N-V +2839843750 3231250000 V-C +3231250000 3522656250 C-C +3522656250 3614843750 C-N +3614843750 3949218750 N-V +3949218750 4043359375 V-C +4043359375 4171875000 C-C +4171875000 4351171875 C-V +4351171875 4683593750 V-C +4683593750 5171875000 C-C +5171875000 5711328125 C-V +5711328125 6105078125 V-L +6105078125 6315234375 L-V +6315234375 6494921875 V-V +6494921875 6681250000 V-N +7261718750 8140625000 N-V +8140625000 8359375000 V-L +8359375000 8875781250 L-V +8875781250 9399609375 V-L +9399609375 10443750000 L-V +10443750000 10705078125 V-C +10705078125 10949609375 C-C +10949609375 11308593750 C-L +11308593750 11796875000 L-V +11796875000 12140625000 V-C +12140625000 12421875000 C-C +12421875000 12859375000 C-C +12859375000 14015625000 C-V +14757812500 15500000000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/te2.lab b/samples/HTKDemo/labels/bcplabs/lbi/te2.lab new file mode 100755 index 0000000..d882e61 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/te2.lab @@ -0,0 +1,40 @@ +0 875390625 S +875390625 1060546875 S-L +1060546875 1703125000 L-V +1703125000 2139843750 V-C +2139843750 2204296875 C-C +2204296875 2484375000 C-V +2484375000 2839453125 V-C +2839453125 3247265625 C-C +3247265625 4453125000 C-V +4453125000 5058593750 V-C +5058593750 5609375000 C-C +5609375000 5789843750 C-V +5789843750 5972656250 V-V +5972656250 6103125000 V-N +6103125000 6261328125 N-C +6261328125 6434375000 C-C +6434375000 6560156250 C-V +6560156250 7229296875 V-C +7229296875 7490234375 C-L +7490234375 8306250000 L-V +8306250000 9390625000 V-V +9390625000 9955078125 V-S +9955078125 10333984375 S-C +10333984375 10616406250 C-V +10616406250 11201562500 V-C +11201562500 11423046875 C-C +11423046875 11945312500 C-V +11945312500 12630468750 V-V +12630468750 12875390625 V-N +12875390625 13362500000 N-C +13362500000 13596875000 C-V +13596875000 13761718750 V-C +13761718750 13915234375 C-C +13915234375 14262500000 C-C +14262500000 15109375000 C-V +15109375000 15378906250 V-C +15378906250 15733203125 C-C +15733203125 16008593750 C-L +16008593750 16597265625 L-V +16597265625 17468750000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/te3.lab b/samples/HTKDemo/labels/bcplabs/lbi/te3.lab new file mode 100755 index 0000000..97028f0 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/te3.lab @@ -0,0 +1,60 @@ +0 837109375 S +837109375 1140625000 S-C +1140625000 2007031250 C-V +2007031250 2295703125 V-C +2295703125 2496875000 C-C +2496875000 2888281250 C-V +2888281250 3453125000 V-C +3453125000 3609375000 C-L +3609375000 3921875000 L-V +3921875000 4421875000 V-C +4421875000 4716015625 C-V +4716015625 5238281250 V-L +5238281250 5499218750 L-C +5499218750 6380468750 C-C +6380468750 6598828125 C-C +6598828125 6772265625 C-C +6772265625 7421875000 C-V +7421875000 8028906250 V-L +8028906250 8583593750 L-C +8583593750 9089453125 C-S +9089453125 9219921875 S-L +9219921875 9415625000 L-V +9415625000 9546484375 V-N +9546484375 9766796875 N-V +9766796875 9897656250 V-C +9897656250 9954296875 C-C +9954296875 10331250000 C-C +10331250000 10558203125 C-C +10558203125 11234375000 C-V +11234375000 11632812500 V-C +11632812500 11912500000 C-C +11912500000 12390625000 C-C +12390625000 12826562500 C-V +12826562500 13217968750 V-L +13217968750 13320312500 L-C +13320312500 13843750000 C-C +13843750000 14078125000 C-C +14078125000 14296875000 C-V +14296875000 15015625000 V-C +15015625000 16253125000 C-V +16253125000 16806250000 V-N +16806250000 17089453125 N-C +17089453125 17491796875 C-V +17491796875 18176953125 V-L +18176953125 19046875000 L-V +19046875000 19546875000 V-C +19546875000 19703125000 C-C +19703125000 20076562500 C-C +20076562500 20203125000 C-V +20203125000 20662500000 V-N +20662500000 21156640625 N-V +21156640625 21281250000 V-C +21281250000 21890625000 C-C +21890625000 21984375000 C-L +21984375000 22171875000 L-L +22171875000 22805468750 L-N +22805468750 23859375000 N-V +23859375000 24703125000 V-C +24703125000 25078125000 C-C +25078125000 26218750000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/tr1.lab b/samples/HTKDemo/labels/bcplabs/lbi/tr1.lab new file mode 100755 index 0000000..7289e7d --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/tr1.lab @@ -0,0 +1,38 @@ +0 881250000 S +881250000 1619531250 S-C +1619531250 1876562500 C-V +1876562500 2268359375 V-C +2268359375 2834375000 C-V +2834375000 3116796875 V-C +3116796875 3394140625 C-C +3394140625 3609375000 C-V +3609375000 3867578125 V-C +3867578125 4078125000 C-C +4078125000 4797656250 C-V +4797656250 5051562500 V-L +5051562500 5303515625 L-C +5303515625 5531250000 C-C +5531250000 7015625000 C-C +7015625000 7947265625 C-V +7947265625 9015625000 V-C +9015625000 9285156250 C-V +9285156250 9481250000 V-N +9481250000 9823828125 N-C +9823828125 10292187500 C-C +10292187500 10508984375 C-L +10508984375 10877734375 L-V +10877734375 11439453125 V-C +11439453125 11667578125 C-V +11667578125 12467187500 V-L +12467187500 13201562500 L-V +13201562500 14001171875 V-C +14001171875 14311328125 C-L +14311328125 14821875000 L-V +14821875000 15012890625 V-C +15012890625 15633203125 C-L +15633203125 16139062500 L-V +16139062500 16563281250 V-L +16563281250 16987500000 L-L +16987500000 17432812500 L-V +17432812500 18184375000 V-L +18184375000 19031250000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/tr2.lab b/samples/HTKDemo/labels/bcplabs/lbi/tr2.lab new file mode 100755 index 0000000..70c1e5e --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/tr2.lab @@ -0,0 +1,45 @@ +0 890625000 S +890625000 1130078125 S-L +1130078125 1874609375 L-V +1874609375 2291015625 V-N +2291015625 2407812500 N-C +2407812500 2796875000 C-C +2796875000 2957031250 C-L +2957031250 3953125000 L-V +3953125000 4634375000 V-C +4634375000 4980859375 C-C +4980859375 5825781250 C-V +5825781250 6234375000 V-L +6234375000 6921875000 L-C +6921875000 7676171875 C-S +7676171875 8007812500 S-V +8007812500 8175781250 V-C +8175781250 8407421875 C-C +8407421875 8609375000 C-V +8609375000 8847656250 V-C +8847656250 8933984375 C-C +8933984375 9285156250 C-V +9285156250 10068359375 V-C +10068359375 11032812500 C-V +11032812500 11300781250 V-N +11300781250 11350390625 N-C +11350390625 11632812500 C-V +11632812500 12048828125 V-N +12048828125 12203125000 N-C +12203125000 12346093750 C-C +12346093750 13072265625 C-V +13072265625 13759765625 V-C +13759765625 14621484375 C-C +14621484375 16239062500 C-V +16239062500 17064453125 V-S +17064453125 17503906250 S-V +17503906250 17850390625 V-N +17850390625 18832421875 N-C +18832421875 19028515625 C-V +19028515625 19414062500 V-N +19414062500 20170703125 N-V +20170703125 20703125000 V-C +20703125000 21557421875 C-V +21557421875 22259375000 V-C +22259375000 23058984375 C-C +23058984375 23937500000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/tr3.lab b/samples/HTKDemo/labels/bcplabs/lbi/tr3.lab new file mode 100755 index 0000000..48f2d42 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/tr3.lab @@ -0,0 +1,37 @@ +0 900781250 S +900781250 1015625000 S-C +1015625000 1276171875 C-V +1276171875 1487109375 V-C +1487109375 2046875000 C-C +2046875000 2301171875 C-V +2301171875 2546875000 V-L +2546875000 2922656250 L-C +2922656250 3390625000 C-C +3390625000 3734375000 C-V +3734375000 3959375000 V-N +3959375000 4796875000 N-C +4796875000 5188671875 C-V +5188671875 5388281250 V-C +5388281250 5703125000 C-C +5703125000 6046875000 C-V +6046875000 6509375000 V-C +7003906250 7328125000 C-V +7328125000 7807031250 V-N +7807031250 8409375000 N-V +8409375000 8893359375 V-C +8893359375 9180468750 C-C +9180468750 9412890625 C-C +9412890625 9810546875 C-L +9810546875 10671484375 L-V +10671484375 11426953125 V-C +11426953125 11556640625 C-V +11556640625 11703515625 V-N +11703515625 12003906250 N-V +12003906250 12438281250 V-C +12438281250 12921875000 C-C +12921875000 13703125000 C-V +13703125000 14296875000 V-C +14296875000 14640625000 C-C +14640625000 15411328125 C-V +15411328125 15796875000 V-L +15796875000 16750000000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/tr4.lab b/samples/HTKDemo/labels/bcplabs/lbi/tr4.lab new file mode 100755 index 0000000..0b5e5eb --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/tr4.lab @@ -0,0 +1,30 @@ +0 819140625 S +819140625 1471875000 S-V +1471875000 1879687500 V-C +1879687500 2059765625 C-V +2059765625 2313281250 V-N +2627734375 3870703125 N-V +3870703125 4374609375 V-V +4374609375 4748828125 V-C +4748828125 5265625000 C-C +5265625000 5828125000 C-V +5828125000 6390625000 V-C +6390625000 6661328125 C-L +6661328125 6984375000 L-V +6984375000 7346484375 V-C +7346484375 7578125000 C-C +7578125000 7953125000 C-V +7953125000 8355078125 V-C +8355078125 8458593750 C-C +8458593750 8827734375 C-C +8827734375 9223046875 C-N +9223046875 9676953125 N-V +9676953125 10125000000 V-N +10125000000 10216406250 N-C +10216406250 10671484375 C-V +10671484375 11191015625 V-C +11191015625 11312890625 C-C +11312890625 11556640625 C-L +11556640625 12957031250 L-V +12957031250 13873828125 V-C +13873828125 15156250000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/tr5.lab b/samples/HTKDemo/labels/bcplabs/lbi/tr5.lab new file mode 100755 index 0000000..36bc33f --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/tr5.lab @@ -0,0 +1,22 @@ +0 884375000 S +884375000 1390234375 S-V +1390234375 1578125000 V-L +1578125000 1830859375 L-C +1830859375 2203515625 C-V +2812500000 3355468750 V-V +3355468750 3528515625 V-L +3528515625 3854296875 L-L +3854296875 4296875000 L-V +4296875000 4775000000 V-C +4775000000 5015625000 C-V +5015625000 5437109375 V-L +5437109375 6673437500 L-V +6673437500 7242578125 V-N +7242578125 7787109375 N-L +7787109375 8046875000 L-V +8046875000 8880468750 V-C +8880468750 9060156250 C-V +9060156250 9614843750 V-C +9614843750 11296875000 C-V +11296875000 12234375000 V-C +12234375000 13468750000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/tr6.lab b/samples/HTKDemo/labels/bcplabs/lbi/tr6.lab new file mode 100755 index 0000000..9474551 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/tr6.lab @@ -0,0 +1,26 @@ +0 828125000 S +828125000 1703125000 S-C +1703125000 1890625000 C-V +1890625000 2175390625 V-C +2175390625 2686718750 C-C +2686718750 2973046875 C-L +2973046875 4078125000 L-V +4078125000 4360156250 V-C +4360156250 4848046875 C-C +4848046875 4926953125 C-C +4926953125 5098437500 C-V +5098437500 5385156250 V-C +5385156250 5984375000 C-C +5984375000 6351171875 C-V +6351171875 6824218750 V-C +6824218750 7142578125 C-C +7142578125 7532421875 C-N +7532421875 8280468750 N-C +8280468750 8535156250 C-C +8535156250 8820703125 C-N +8820703125 9500781250 N-V +9500781250 9859375000 V-L +9859375000 10359375000 L-C +10359375000 11359375000 C-V +11359375000 12242187500 V-C +12242187500 13343750000 S diff --git a/samples/HTKDemo/labels/bcplabs/lbi/tr7.lab b/samples/HTKDemo/labels/bcplabs/lbi/tr7.lab new file mode 100755 index 0000000..da634e6 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/lbi/tr7.lab @@ -0,0 +1,21 @@ +0 867968750 S +867968750 1328125000 S-C +1328125000 1526171875 C-L +1526171875 1921875000 L-V +1921875000 2857421875 V-C +2857421875 3570312500 C-V +3837890625 4592968750 V-N +4592968750 4751953125 N-C +4751953125 4890625000 C-V +4890625000 5729687500 V-C +5729687500 6089843750 C-C +6089843750 6296875000 C-C +6296875000 7000781250 C-L +7000781250 7156250000 L-C +7156250000 8015625000 C-C +8015625000 8234375000 C-V +8234375000 8456250000 V-C +8456250000 8953125000 C-C +8953125000 10045703125 C-V +10045703125 11341406250 V-C +11341406250 12250000000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/te1.lab b/samples/HTKDemo/labels/bcplabs/mon/te1.lab new file mode 100755 index 0000000..e6de259 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/te1.lab @@ -0,0 +1,33 @@ +0 1383750 S +1383750 1725000 C +1725000 2583125 V +2583125 3005000 N +3568750 4543750 V +4543750 5170000 C +5170000 5636250 C +5636250 5783750 N +5783750 6318750 V +6318750 6469375 C +6469375 6675000 C +6675000 6961875 V +6961875 7493750 C +7493750 8275000 C +8275000 9138125 V +9138125 9768125 L +9768125 10104375 V +10104375 10391875 V +10391875 10690000 N +11618750 13025000 V +13025000 13375000 L +13375000 14201250 V +14201250 15039375 L +15039375 16710000 V +16710000 17128125 C +17128125 17519375 C +17519375 18093750 L +18093750 18875000 V +18875000 19425000 C +19425000 19875000 C +19875000 20575000 C +20575000 22425000 V +23612500 24800000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/te2.lab b/samples/HTKDemo/labels/bcplabs/mon/te2.lab new file mode 100755 index 0000000..e43e4d6 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/te2.lab @@ -0,0 +1,40 @@ +0 1400625 S +1400625 1696875 L +1696875 2725000 V +2725000 3423750 C +3423750 3526875 C +3526875 3975000 V +3975000 4543125 C +4543125 5195625 C +5195625 7125000 V +7125000 8093750 C +8093750 8975000 C +8975000 9263750 V +9263750 9556250 V +9556250 9765000 N +9765000 10018125 C +10018125 10295000 C +10295000 10496250 V +10496250 11566875 C +11566875 11984375 L +11984375 13290000 V +13290000 15025000 V +15025000 15928125 S +15928125 16534375 C +16534375 16986250 V +16986250 17922500 C +17922500 18276875 C +18276875 19112500 V +19112500 20208750 V +20208750 20600625 N +20600625 21380000 C +21380000 21755000 V +21755000 22018750 C +22018750 22264375 C +22264375 22820000 C +22820000 24175000 V +24175000 24606250 C +24606250 25173125 C +25173125 25613750 L +25613750 26555625 V +26555625 27950000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/te3.lab b/samples/HTKDemo/labels/bcplabs/mon/te3.lab new file mode 100755 index 0000000..0d845cb --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/te3.lab @@ -0,0 +1,60 @@ +0 1339375 S +1339375 1825000 C +1825000 3211250 V +3211250 3673125 C +3673125 3995000 C +3995000 4621250 V +4621250 5525000 C +5525000 5775000 L +5775000 6275000 V +6275000 7075000 C +7075000 7545625 V +7545625 8381250 L +8381250 8798750 C +8798750 10208750 C +10208750 10558125 C +10558125 10835625 C +10835625 11875000 V +11875000 12846250 L +12846250 13733750 C +13733750 14543125 S +14543125 14751875 L +14751875 15065000 V +15065000 15274375 N +15274375 15626875 V +15626875 15836250 C +15836250 15926875 C +15926875 16530000 C +16530000 16893125 C +16893125 17975000 V +17975000 18612500 C +18612500 19060000 C +19060000 19825000 C +19825000 20522500 V +20522500 21148750 L +21148750 21312500 C +21312500 22150000 C +22150000 22525000 C +22525000 22875000 V +22875000 24025000 C +24025000 26005000 V +26005000 26890000 N +26890000 27343125 C +27343125 27986875 V +27986875 29083125 L +29083125 30475000 V +30475000 31275000 C +31275000 31525000 C +31525000 32122500 C +32122500 32325000 V +32325000 33060000 N +33060000 33850625 V +33850625 34050000 C +34050000 35025000 C +35025000 35175000 L +35175000 35475000 L +35475000 36488750 N +36488750 38175000 V +38175000 39525000 C +39525000 40125000 C +40125000 41950000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/tr1.lab b/samples/HTKDemo/labels/bcplabs/mon/tr1.lab new file mode 100755 index 0000000..605eba4 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/tr1.lab @@ -0,0 +1,38 @@ +0 1410000 S +1410000 2591250 C +2591250 3002500 V +3002500 3629375 C +3629375 4535000 V +4535000 4986875 C +4986875 5430625 C +5430625 5775000 V +5775000 6188125 C +6188125 6525000 C +6525000 7676250 V +7676250 8082500 L +8082500 8485625 C +8485625 8850000 C +8850000 11225000 C +11225000 12715625 V +12715625 14425000 C +14425000 14856250 V +14856250 15170000 N +15170000 15718125 C +15718125 16467500 C +16467500 16814375 L +16814375 17404375 V +17404375 18303125 C +18303125 18668125 V +18668125 19947500 L +19947500 21122500 V +21122500 22401875 C +22401875 22898125 L +22898125 23715000 V +23715000 24020625 C +24020625 25013125 L +25013125 25822500 V +25822500 26501250 L +26501250 27180000 L +27180000 27892500 V +27892500 29095000 L +29095000 30450000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/tr2.lab b/samples/HTKDemo/labels/bcplabs/mon/tr2.lab new file mode 100755 index 0000000..99551d5 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/tr2.lab @@ -0,0 +1,45 @@ +0 1425000 S +1425000 1808125 L +1808125 2999375 V +2999375 3665625 N +3665625 3852500 C +3852500 4475000 C +4475000 4731250 L +4731250 6325000 V +6325000 7415000 C +7415000 7969375 C +7969375 9321250 V +9321250 9975000 L +9975000 11075000 C +11075000 12281875 S +12281875 12812500 V +12812500 13081250 C +13081250 13451875 C +13451875 13775000 V +13775000 14156250 C +14156250 14294375 C +14294375 14856250 V +14856250 16109375 C +16109375 17652500 V +17652500 18081250 N +18081250 18160625 C +18160625 18612500 V +18612500 19278125 N +19278125 19525000 C +19525000 19753750 C +19753750 20915625 V +20915625 22015625 C +22015625 23394375 C +23394375 25982500 V +25982500 27303125 S +27303125 28006250 V +28006250 28560625 N +28560625 30131875 C +30131875 30445625 V +30445625 31062500 N +31062500 32273125 V +32273125 33125000 C +33125000 34491875 V +34491875 35615000 C +35615000 36894375 C +36894375 38300000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/tr3.lab b/samples/HTKDemo/labels/bcplabs/mon/tr3.lab new file mode 100755 index 0000000..ed5c31c --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/tr3.lab @@ -0,0 +1,37 @@ +0 1441250 S +1441250 1625000 C +1625000 2041875 V +2041875 2379375 C +2379375 3275000 C +3275000 3681875 V +3681875 4075000 L +4075000 4676250 C +4676250 5425000 C +5425000 5975000 V +5975000 6335000 N +6335000 7675000 C +7675000 8301875 V +8301875 8621250 C +8621250 9125000 C +9125000 9675000 V +9675000 10415000 C +11206250 11725000 V +11725000 12491250 N +12491250 13455000 V +13455000 14229375 C +14229375 14688750 C +14688750 15060625 C +15060625 15696875 L +15696875 17074375 V +17074375 18283125 C +18283125 18490625 V +18490625 18725625 N +18725625 19206250 V +19206250 19901250 C +19901250 20675000 C +20675000 21925000 V +21925000 22875000 C +22875000 23425000 C +23425000 24658125 V +24658125 25275000 L +25275000 26800000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/tr4.lab b/samples/HTKDemo/labels/bcplabs/mon/tr4.lab new file mode 100755 index 0000000..1e35ddb --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/tr4.lab @@ -0,0 +1,30 @@ +0 1310625 S +1310625 2355000 V +2355000 3007500 C +3007500 3295625 V +3295625 3701250 N +4204375 6193125 V +6193125 6999375 V +6999375 7598125 C +7598125 8425000 C +8425000 9325000 V +9325000 10225000 C +10225000 10658125 L +10658125 11175000 V +11175000 11754375 C +11754375 12125000 C +12125000 12725000 V +12725000 13368125 C +13368125 13533750 C +13533750 14124375 C +14124375 14756875 N +14756875 15483125 V +15483125 16200000 N +16200000 16346250 C +16346250 17074375 V +17074375 17905625 C +17905625 18100625 C +18100625 18490625 L +18490625 20731250 V +20731250 22198125 C +22198125 24250000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/tr5.lab b/samples/HTKDemo/labels/bcplabs/mon/tr5.lab new file mode 100755 index 0000000..a801c0b --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/tr5.lab @@ -0,0 +1,22 @@ +0 1415000 S +1415000 2224375 V +2224375 2525000 L +2525000 2929375 C +2929375 3525625 V +4500000 5368750 V +5368750 5645625 L +5645625 6166875 L +6166875 6875000 V +6875000 7640000 C +7640000 8025000 V +8025000 8699375 L +8699375 10677500 V +10677500 11588125 N +11588125 12459375 L +12459375 12875000 V +12875000 14208750 C +14208750 14496250 V +14496250 15383750 C +15383750 18075000 V +18075000 19575000 C +19575000 21550000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/tr6.lab b/samples/HTKDemo/labels/bcplabs/mon/tr6.lab new file mode 100755 index 0000000..bf37abf --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/tr6.lab @@ -0,0 +1,26 @@ +0 1325000 S +1325000 2725000 C +2725000 3025000 V +3025000 3480625 C +3480625 4298750 C +4298750 4756875 L +4756875 6525000 V +6525000 6976250 C +6976250 7756875 C +7756875 7883125 C +7883125 8157500 V +8157500 8616250 C +8616250 9575000 C +9575000 10161875 V +10161875 10918750 C +10918750 11428125 C +11428125 12051875 N +12051875 13248750 C +13248750 13656250 C +13656250 14113125 N +14113125 15201250 V +15201250 15775000 L +15775000 16575000 C +16575000 18175000 V +18175000 19587500 C +19587500 21350000 S diff --git a/samples/HTKDemo/labels/bcplabs/mon/tr7.lab b/samples/HTKDemo/labels/bcplabs/mon/tr7.lab new file mode 100755 index 0000000..ed2a700 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/mon/tr7.lab @@ -0,0 +1,21 @@ +0 1388750 S +1388750 2125000 C +2125000 2441875 L +2441875 3075000 V +3075000 4571875 C +4571875 5712500 V +6140625 7348750 N +7348750 7603125 C +7603125 7825000 V +7825000 9167500 C +9167500 9743750 C +9743750 10075000 C +10075000 11201250 L +11201250 11450000 C +11450000 12825000 C +12825000 13175000 V +13175000 13530000 C +13530000 14325000 C +14325000 16073125 V +16073125 18146250 C +18146250 19600000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/te1.lab b/samples/HTKDemo/labels/bcplabs/rbi/te1.lab new file mode 100755 index 0000000..9636d07 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/te1.lab @@ -0,0 +1,33 @@ +0 864843750 S +864843750 1078125000 C+V +1078125000 1614453125 V+N +1614453125 1878125000 N+V +2230468750 2839843750 V+C +2839843750 3231250000 C+C +3231250000 3522656250 C+N +3522656250 3614843750 N+V +3614843750 3949218750 V+C +3949218750 4043359375 C+C +4043359375 4171875000 C+V +4171875000 4351171875 V+C +4351171875 4683593750 C+C +4683593750 5171875000 C+V +5171875000 5711328125 V+L +5711328125 6105078125 L+V +6105078125 6315234375 V+V +6315234375 6494921875 V+N +6494921875 6681250000 N+V +7261718750 8140625000 V+L +8140625000 8359375000 L+V +8359375000 8875781250 V+L +8875781250 9399609375 L+V +9399609375 10443750000 V+C +10443750000 10705078125 C+C +10705078125 10949609375 C+L +10949609375 11308593750 L+V +11308593750 11796875000 V+C +11796875000 12140625000 C+C +12140625000 12421875000 C+C +12421875000 12859375000 C+V +12859375000 14015625000 V+S +14757812500 15500000000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/te2.lab b/samples/HTKDemo/labels/bcplabs/rbi/te2.lab new file mode 100755 index 0000000..1fa3271 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/te2.lab @@ -0,0 +1,40 @@ +0 875390625 S +875390625 1060546875 L+V +1060546875 1703125000 V+C +1703125000 2139843750 C+C +2139843750 2204296875 C+V +2204296875 2484375000 V+C +2484375000 2839453125 C+C +2839453125 3247265625 C+V +3247265625 4453125000 V+C +4453125000 5058593750 C+C +5058593750 5609375000 C+V +5609375000 5789843750 V+V +5789843750 5972656250 V+N +5972656250 6103125000 N+C +6103125000 6261328125 C+C +6261328125 6434375000 C+V +6434375000 6560156250 V+C +6560156250 7229296875 C+L +7229296875 7490234375 L+V +7490234375 8306250000 V+V +8306250000 9390625000 V+S +9390625000 9955078125 S+C +9955078125 10333984375 C+V +10333984375 10616406250 V+C +10616406250 11201562500 C+C +11201562500 11423046875 C+V +11423046875 11945312500 V+V +11945312500 12630468750 V+N +12630468750 12875390625 N+C +12875390625 13362500000 C+V +13362500000 13596875000 V+C +13596875000 13761718750 C+C +13761718750 13915234375 C+C +13915234375 14262500000 C+V +14262500000 15109375000 V+C +15109375000 15378906250 C+C +15378906250 15733203125 C+L +15733203125 16008593750 L+V +16008593750 16597265625 V+S +16597265625 17468750000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/te3.lab b/samples/HTKDemo/labels/bcplabs/rbi/te3.lab new file mode 100755 index 0000000..7c92150 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/te3.lab @@ -0,0 +1,60 @@ +0 837109375 S +837109375 1140625000 C+V +1140625000 2007031250 V+C +2007031250 2295703125 C+C +2295703125 2496875000 C+V +2496875000 2888281250 V+C +2888281250 3453125000 C+L +3453125000 3609375000 L+V +3609375000 3921875000 V+C +3921875000 4421875000 C+V +4421875000 4716015625 V+L +4716015625 5238281250 L+C +5238281250 5499218750 C+C +5499218750 6380468750 C+C +6380468750 6598828125 C+C +6598828125 6772265625 C+V +6772265625 7421875000 V+L +7421875000 8028906250 L+C +8028906250 8583593750 C+S +8583593750 9089453125 S+L +9089453125 9219921875 L+V +9219921875 9415625000 V+N +9415625000 9546484375 N+V +9546484375 9766796875 V+C +9766796875 9897656250 C+C +9897656250 9954296875 C+C +9954296875 10331250000 C+C +10331250000 10558203125 C+V +10558203125 11234375000 V+C +11234375000 11632812500 C+C +11632812500 11912500000 C+C +11912500000 12390625000 C+V +12390625000 12826562500 V+L +12826562500 13217968750 L+C +13217968750 13320312500 C+C +13320312500 13843750000 C+C +13843750000 14078125000 C+V +14078125000 14296875000 V+C +14296875000 15015625000 C+V +15015625000 16253125000 V+N +16253125000 16806250000 N+C +16806250000 17089453125 C+V +17089453125 17491796875 V+L +17491796875 18176953125 L+V +18176953125 19046875000 V+C +19046875000 19546875000 C+C +19546875000 19703125000 C+C +19703125000 20076562500 C+V +20076562500 20203125000 V+N +20203125000 20662500000 N+V +20662500000 21156640625 V+C +21156640625 21281250000 C+C +21281250000 21890625000 C+L +21890625000 21984375000 L+L +21984375000 22171875000 L+N +22171875000 22805468750 N+V +22805468750 23859375000 V+C +23859375000 24703125000 C+C +24703125000 25078125000 C+S +25078125000 26218750000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/tr1.lab b/samples/HTKDemo/labels/bcplabs/rbi/tr1.lab new file mode 100755 index 0000000..8426a1c --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/tr1.lab @@ -0,0 +1,38 @@ +0 881250000 S +881250000 1619531250 C+V +1619531250 1876562500 V+C +1876562500 2268359375 C+V +2268359375 2834375000 V+C +2834375000 3116796875 C+C +3116796875 3394140625 C+V +3394140625 3609375000 V+C +3609375000 3867578125 C+C +3867578125 4078125000 C+V +4078125000 4797656250 V+L +4797656250 5051562500 L+C +5051562500 5303515625 C+C +5303515625 5531250000 C+C +5531250000 7015625000 C+V +7015625000 7947265625 V+C +7947265625 9015625000 C+V +9015625000 9285156250 V+N +9285156250 9481250000 N+C +9481250000 9823828125 C+C +9823828125 10292187500 C+L +10292187500 10508984375 L+V +10508984375 10877734375 V+C +10877734375 11439453125 C+V +11439453125 11667578125 V+L +11667578125 12467187500 L+V +12467187500 13201562500 V+C +13201562500 14001171875 C+L +14001171875 14311328125 L+V +14311328125 14821875000 V+C +14821875000 15012890625 C+L +15012890625 15633203125 L+V +15633203125 16139062500 V+L +16139062500 16563281250 L+L +16563281250 16987500000 L+V +16987500000 17432812500 V+L +17432812500 18184375000 L+S +18184375000 19031250000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/tr2.lab b/samples/HTKDemo/labels/bcplabs/rbi/tr2.lab new file mode 100755 index 0000000..09b25a4 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/tr2.lab @@ -0,0 +1,45 @@ +0 890625000 S +890625000 1130078125 L+V +1130078125 1874609375 V+N +1874609375 2291015625 N+C +2291015625 2407812500 C+C +2407812500 2796875000 C+L +2796875000 2957031250 L+V +2957031250 3953125000 V+C +3953125000 4634375000 C+C +4634375000 4980859375 C+V +4980859375 5825781250 V+L +5825781250 6234375000 L+C +6234375000 6921875000 C+S +6921875000 7676171875 S+V +7676171875 8007812500 V+C +8007812500 8175781250 C+C +8175781250 8407421875 C+V +8407421875 8609375000 V+C +8609375000 8847656250 C+C +8847656250 8933984375 C+V +8933984375 9285156250 V+C +9285156250 10068359375 C+V +10068359375 11032812500 V+N +11032812500 11300781250 N+C +11300781250 11350390625 C+V +11350390625 11632812500 V+N +11632812500 12048828125 N+C +12048828125 12203125000 C+C +12203125000 12346093750 C+V +12346093750 13072265625 V+C +13072265625 13759765625 C+C +13759765625 14621484375 C+V +14621484375 16239062500 V+S +16239062500 17064453125 S+V +17064453125 17503906250 V+N +17503906250 17850390625 N+C +17850390625 18832421875 C+V +18832421875 19028515625 V+N +19028515625 19414062500 N+V +19414062500 20170703125 V+C +20170703125 20703125000 C+V +20703125000 21557421875 V+C +21557421875 22259375000 C+C +22259375000 23058984375 C+S +23058984375 23937500000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/tr3.lab b/samples/HTKDemo/labels/bcplabs/rbi/tr3.lab new file mode 100755 index 0000000..a6c6a19 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/tr3.lab @@ -0,0 +1,37 @@ +0 900781250 S +900781250 1015625000 C+V +1015625000 1276171875 V+C +1276171875 1487109375 C+C +1487109375 2046875000 C+V +2046875000 2301171875 V+L +2301171875 2546875000 L+C +2546875000 2922656250 C+C +2922656250 3390625000 C+V +3390625000 3734375000 V+N +3734375000 3959375000 N+C +3959375000 4796875000 C+V +4796875000 5188671875 V+C +5188671875 5388281250 C+C +5388281250 5703125000 C+V +5703125000 6046875000 V+C +6046875000 6509375000 C+V +7003906250 7328125000 V+N +7328125000 7807031250 N+V +7807031250 8409375000 V+C +8409375000 8893359375 C+C +8893359375 9180468750 C+C +9180468750 9412890625 C+L +9412890625 9810546875 L+V +9810546875 10671484375 V+C +10671484375 11426953125 C+V +11426953125 11556640625 V+N +11556640625 11703515625 N+V +11703515625 12003906250 V+C +12003906250 12438281250 C+C +12438281250 12921875000 C+V +12921875000 13703125000 V+C +13703125000 14296875000 C+C +14296875000 14640625000 C+V +14640625000 15411328125 V+L +15411328125 15796875000 L+S +15796875000 16750000000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/tr4.lab b/samples/HTKDemo/labels/bcplabs/rbi/tr4.lab new file mode 100755 index 0000000..67b1631 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/tr4.lab @@ -0,0 +1,30 @@ +0 819140625 S +819140625 1471875000 V+C +1471875000 1879687500 C+V +1879687500 2059765625 V+N +2059765625 2313281250 N+V +2627734375 3870703125 V+V +3870703125 4374609375 V+C +4374609375 4748828125 C+C +4748828125 5265625000 C+V +5265625000 5828125000 V+C +5828125000 6390625000 C+L +6390625000 6661328125 L+V +6661328125 6984375000 V+C +6984375000 7346484375 C+C +7346484375 7578125000 C+V +7578125000 7953125000 V+C +7953125000 8355078125 C+C +8355078125 8458593750 C+C +8458593750 8827734375 C+N +8827734375 9223046875 N+V +9223046875 9676953125 V+N +9676953125 10125000000 N+C +10125000000 10216406250 C+V +10216406250 10671484375 V+C +10671484375 11191015625 C+C +11191015625 11312890625 C+L +11312890625 11556640625 L+V +11556640625 12957031250 V+C +12957031250 13873828125 C+S +13873828125 15156250000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/tr5.lab b/samples/HTKDemo/labels/bcplabs/rbi/tr5.lab new file mode 100755 index 0000000..e7b223d --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/tr5.lab @@ -0,0 +1,22 @@ +0 884375000 S +884375000 1390234375 V+L +1390234375 1578125000 L+C +1578125000 1830859375 C+V +1830859375 2203515625 V+V +2812500000 3355468750 V+L +3355468750 3528515625 L+L +3528515625 3854296875 L+V +3854296875 4296875000 V+C +4296875000 4775000000 C+V +4775000000 5015625000 V+L +5015625000 5437109375 L+V +5437109375 6673437500 V+N +6673437500 7242578125 N+L +7242578125 7787109375 L+V +7787109375 8046875000 V+C +8046875000 8880468750 C+V +8880468750 9060156250 V+C +9060156250 9614843750 C+V +9614843750 11296875000 V+C +11296875000 12234375000 C+S +12234375000 13468750000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/tr6.lab b/samples/HTKDemo/labels/bcplabs/rbi/tr6.lab new file mode 100755 index 0000000..c28651f --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/tr6.lab @@ -0,0 +1,26 @@ +0 828125000 S +828125000 1703125000 C+V +1703125000 1890625000 V+C +1890625000 2175390625 C+C +2175390625 2686718750 C+L +2686718750 2973046875 L+V +2973046875 4078125000 V+C +4078125000 4360156250 C+C +4360156250 4848046875 C+C +4848046875 4926953125 C+V +4926953125 5098437500 V+C +5098437500 5385156250 C+C +5385156250 5984375000 C+V +5984375000 6351171875 V+C +6351171875 6824218750 C+C +6824218750 7142578125 C+N +7142578125 7532421875 N+C +7532421875 8280468750 C+C +8280468750 8535156250 C+N +8535156250 8820703125 N+V +8820703125 9500781250 V+L +9500781250 9859375000 L+C +9859375000 10359375000 C+V +10359375000 11359375000 V+C +11359375000 12242187500 C+S +12242187500 13343750000 S diff --git a/samples/HTKDemo/labels/bcplabs/rbi/tr7.lab b/samples/HTKDemo/labels/bcplabs/rbi/tr7.lab new file mode 100755 index 0000000..c7c2bcc --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/rbi/tr7.lab @@ -0,0 +1,21 @@ +0 867968750 S +867968750 1328125000 C+L +1328125000 1526171875 L+V +1526171875 1921875000 V+C +1921875000 2857421875 C+V +2857421875 3570312500 V+N +3837890625 4592968750 N+C +4592968750 4751953125 C+V +4751953125 4890625000 V+C +4890625000 5729687500 C+C +5729687500 6089843750 C+C +6089843750 6296875000 C+L +6296875000 7000781250 L+C +7000781250 7156250000 C+C +7156250000 8015625000 C+V +8015625000 8234375000 V+C +8234375000 8456250000 C+C +8456250000 8953125000 C+V +8953125000 10045703125 V+C +10045703125 11341406250 C+S +11341406250 12250000000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/te1.lab b/samples/HTKDemo/labels/bcplabs/tri/te1.lab new file mode 100755 index 0000000..400e242 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/te1.lab @@ -0,0 +1,33 @@ +0 864843750 S +864843750 1078125000 S-C+V +1078125000 1614453125 C-V+N +1614453125 1878125000 V-N+V +2230468750 2839843750 N-V+C +2839843750 3231250000 V-C+C +3231250000 3522656250 C-C+N +3522656250 3614843750 C-N+V +3614843750 3949218750 N-V+C +3949218750 4043359375 V-C+C +4043359375 4171875000 C-C+V +4171875000 4351171875 C-V+C +4351171875 4683593750 V-C+C +4683593750 5171875000 C-C+V +5171875000 5711328125 C-V+L +5711328125 6105078125 V-L+V +6105078125 6315234375 L-V+V +6315234375 6494921875 V-V+N +6494921875 6681250000 V-N+V +7261718750 8140625000 N-V+L +8140625000 8359375000 V-L+V +8359375000 8875781250 L-V+L +8875781250 9399609375 V-L+V +9399609375 10443750000 L-V+C +10443750000 10705078125 V-C+C +10705078125 10949609375 C-C+L +10949609375 11308593750 C-L+V +11308593750 11796875000 L-V+C +11796875000 12140625000 V-C+C +12140625000 12421875000 C-C+C +12421875000 12859375000 C-C+V +12859375000 14015625000 C-V+S +14757812500 15500000000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/te2.lab b/samples/HTKDemo/labels/bcplabs/tri/te2.lab new file mode 100755 index 0000000..b1ee877 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/te2.lab @@ -0,0 +1,40 @@ +0 875390625 S +875390625 1060546875 S-L+V +1060546875 1703125000 L-V+C +1703125000 2139843750 V-C+C +2139843750 2204296875 C-C+V +2204296875 2484375000 C-V+C +2484375000 2839453125 V-C+C +2839453125 3247265625 C-C+V +3247265625 4453125000 C-V+C +4453125000 5058593750 V-C+C +5058593750 5609375000 C-C+V +5609375000 5789843750 C-V+V +5789843750 5972656250 V-V+N +5972656250 6103125000 V-N+C +6103125000 6261328125 N-C+C +6261328125 6434375000 C-C+V +6434375000 6560156250 C-V+C +6560156250 7229296875 V-C+L +7229296875 7490234375 C-L+V +7490234375 8306250000 L-V+V +8306250000 9390625000 V-V+S +9390625000 9955078125 V-S+C +9955078125 10333984375 S-C+V +10333984375 10616406250 C-V+C +10616406250 11201562500 V-C+C +11201562500 11423046875 C-C+V +11423046875 11945312500 C-V+V +11945312500 12630468750 V-V+N +12630468750 12875390625 V-N+C +12875390625 13362500000 N-C+V +13362500000 13596875000 C-V+C +13596875000 13761718750 V-C+C +13761718750 13915234375 C-C+C +13915234375 14262500000 C-C+V +14262500000 15109375000 C-V+C +15109375000 15378906250 V-C+C +15378906250 15733203125 C-C+L +15733203125 16008593750 C-L+V +16008593750 16597265625 L-V+S +16597265625 17468750000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/te3.lab b/samples/HTKDemo/labels/bcplabs/tri/te3.lab new file mode 100755 index 0000000..c618ac4 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/te3.lab @@ -0,0 +1,60 @@ +0 837109375 S +837109375 1140625000 S-C+V +1140625000 2007031250 C-V+C +2007031250 2295703125 V-C+C +2295703125 2496875000 C-C+V +2496875000 2888281250 C-V+C +2888281250 3453125000 V-C+L +3453125000 3609375000 C-L+V +3609375000 3921875000 L-V+C +3921875000 4421875000 V-C+V +4421875000 4716015625 C-V+L +4716015625 5238281250 V-L+C +5238281250 5499218750 L-C+C +5499218750 6380468750 C-C+C +6380468750 6598828125 C-C+C +6598828125 6772265625 C-C+V +6772265625 7421875000 C-V+L +7421875000 8028906250 V-L+C +8028906250 8583593750 L-C+S +8583593750 9089453125 C-S+L +9089453125 9219921875 S-L+V +9219921875 9415625000 L-V+N +9415625000 9546484375 V-N+V +9546484375 9766796875 N-V+C +9766796875 9897656250 V-C+C +9897656250 9954296875 C-C+C +9954296875 10331250000 C-C+C +10331250000 10558203125 C-C+V +10558203125 11234375000 C-V+C +11234375000 11632812500 V-C+C +11632812500 11912500000 C-C+C +11912500000 12390625000 C-C+V +12390625000 12826562500 C-V+L +12826562500 13217968750 V-L+C +13217968750 13320312500 L-C+C +13320312500 13843750000 C-C+C +13843750000 14078125000 C-C+V +14078125000 14296875000 C-V+C +14296875000 15015625000 V-C+V +15015625000 16253125000 C-V+N +16253125000 16806250000 V-N+C +16806250000 17089453125 N-C+V +17089453125 17491796875 C-V+L +17491796875 18176953125 V-L+V +18176953125 19046875000 L-V+C +19046875000 19546875000 V-C+C +19546875000 19703125000 C-C+C +19703125000 20076562500 C-C+V +20076562500 20203125000 C-V+N +20203125000 20662500000 V-N+V +20662500000 21156640625 N-V+C +21156640625 21281250000 V-C+C +21281250000 21890625000 C-C+L +21890625000 21984375000 C-L+L +21984375000 22171875000 L-L+N +22171875000 22805468750 L-N+V +22805468750 23859375000 N-V+C +23859375000 24703125000 V-C+C +24703125000 25078125000 C-C+S +25078125000 26218750000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/tr1.lab b/samples/HTKDemo/labels/bcplabs/tri/tr1.lab new file mode 100755 index 0000000..716b168 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/tr1.lab @@ -0,0 +1,38 @@ +0 881250000 S +881250000 1619531250 S-C+V +1619531250 1876562500 C-V+C +1876562500 2268359375 V-C+V +2268359375 2834375000 C-V+C +2834375000 3116796875 V-C+C +3116796875 3394140625 C-C+V +3394140625 3609375000 C-V+C +3609375000 3867578125 V-C+C +3867578125 4078125000 C-C+V +4078125000 4797656250 C-V+L +4797656250 5051562500 V-L+C +5051562500 5303515625 L-C+C +5303515625 5531250000 C-C+C +5531250000 7015625000 C-C+V +7015625000 7947265625 C-V+C +7947265625 9015625000 V-C+V +9015625000 9285156250 C-V+N +9285156250 9481250000 V-N+C +9481250000 9823828125 N-C+C +9823828125 10292187500 C-C+L +10292187500 10508984375 C-L+V +10508984375 10877734375 L-V+C +10877734375 11439453125 V-C+V +11439453125 11667578125 C-V+L +11667578125 12467187500 V-L+V +12467187500 13201562500 L-V+C +13201562500 14001171875 V-C+L +14001171875 14311328125 C-L+V +14311328125 14821875000 L-V+C +14821875000 15012890625 V-C+L +15012890625 15633203125 C-L+V +15633203125 16139062500 L-V+L +16139062500 16563281250 V-L+L +16563281250 16987500000 L-L+V +16987500000 17432812500 L-V+L +17432812500 18184375000 V-L+S +18184375000 19031250000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/tr2.lab b/samples/HTKDemo/labels/bcplabs/tri/tr2.lab new file mode 100755 index 0000000..b067f10 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/tr2.lab @@ -0,0 +1,45 @@ +0 890625000 S +890625000 1130078125 S-L+V +1130078125 1874609375 L-V+N +1874609375 2291015625 V-N+C +2291015625 2407812500 N-C+C +2407812500 2796875000 C-C+L +2796875000 2957031250 C-L+V +2957031250 3953125000 L-V+C +3953125000 4634375000 V-C+C +4634375000 4980859375 C-C+V +4980859375 5825781250 C-V+L +5825781250 6234375000 V-L+C +6234375000 6921875000 L-C+S +6921875000 7676171875 C-S+V +7676171875 8007812500 S-V+C +8007812500 8175781250 V-C+C +8175781250 8407421875 C-C+V +8407421875 8609375000 C-V+C +8609375000 8847656250 V-C+C +8847656250 8933984375 C-C+V +8933984375 9285156250 C-V+C +9285156250 10068359375 V-C+V +10068359375 11032812500 C-V+N +11032812500 11300781250 V-N+C +11300781250 11350390625 N-C+V +11350390625 11632812500 C-V+N +11632812500 12048828125 V-N+C +12048828125 12203125000 N-C+C +12203125000 12346093750 C-C+V +12346093750 13072265625 C-V+C +13072265625 13759765625 V-C+C +13759765625 14621484375 C-C+V +14621484375 16239062500 C-V+S +16239062500 17064453125 V-S+V +17064453125 17503906250 S-V+N +17503906250 17850390625 V-N+C +17850390625 18832421875 N-C+V +18832421875 19028515625 C-V+N +19028515625 19414062500 V-N+V +19414062500 20170703125 N-V+C +20170703125 20703125000 V-C+V +20703125000 21557421875 C-V+C +21557421875 22259375000 V-C+C +22259375000 23058984375 C-C+S +23058984375 23937500000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/tr3.lab b/samples/HTKDemo/labels/bcplabs/tri/tr3.lab new file mode 100755 index 0000000..36dae65 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/tr3.lab @@ -0,0 +1,37 @@ +0 900781250 S +900781250 1015625000 S-C+V +1015625000 1276171875 C-V+C +1276171875 1487109375 V-C+C +1487109375 2046875000 C-C+V +2046875000 2301171875 C-V+L +2301171875 2546875000 V-L+C +2546875000 2922656250 L-C+C +2922656250 3390625000 C-C+V +3390625000 3734375000 C-V+N +3734375000 3959375000 V-N+C +3959375000 4796875000 N-C+V +4796875000 5188671875 C-V+C +5188671875 5388281250 V-C+C +5388281250 5703125000 C-C+V +5703125000 6046875000 C-V+C +6046875000 6509375000 V-C+V +7003906250 7328125000 C-V+N +7328125000 7807031250 V-N+V +7807031250 8409375000 N-V+C +8409375000 8893359375 V-C+C +8893359375 9180468750 C-C+C +9180468750 9412890625 C-C+L +9412890625 9810546875 C-L+V +9810546875 10671484375 L-V+C +10671484375 11426953125 V-C+V +11426953125 11556640625 C-V+N +11556640625 11703515625 V-N+V +11703515625 12003906250 N-V+C +12003906250 12438281250 V-C+C +12438281250 12921875000 C-C+V +12921875000 13703125000 C-V+C +13703125000 14296875000 V-C+C +14296875000 14640625000 C-C+V +14640625000 15411328125 C-V+L +15411328125 15796875000 V-L+S +15796875000 16750000000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/tr4.lab b/samples/HTKDemo/labels/bcplabs/tri/tr4.lab new file mode 100755 index 0000000..4663d27 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/tr4.lab @@ -0,0 +1,30 @@ +0 819140625 S +819140625 1471875000 S-V+C +1471875000 1879687500 V-C+V +1879687500 2059765625 C-V+N +2059765625 2313281250 V-N+V +2627734375 3870703125 N-V+V +3870703125 4374609375 V-V+C +4374609375 4748828125 V-C+C +4748828125 5265625000 C-C+V +5265625000 5828125000 C-V+C +5828125000 6390625000 V-C+L +6390625000 6661328125 C-L+V +6661328125 6984375000 L-V+C +6984375000 7346484375 V-C+C +7346484375 7578125000 C-C+V +7578125000 7953125000 C-V+C +7953125000 8355078125 V-C+C +8355078125 8458593750 C-C+C +8458593750 8827734375 C-C+N +8827734375 9223046875 C-N+V +9223046875 9676953125 N-V+N +9676953125 10125000000 V-N+C +10125000000 10216406250 N-C+V +10216406250 10671484375 C-V+C +10671484375 11191015625 V-C+C +11191015625 11312890625 C-C+L +11312890625 11556640625 C-L+V +11556640625 12957031250 L-V+C +12957031250 13873828125 V-C+S +13873828125 15156250000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/tr5.lab b/samples/HTKDemo/labels/bcplabs/tri/tr5.lab new file mode 100755 index 0000000..d06d530 --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/tr5.lab @@ -0,0 +1,22 @@ +0 884375000 S +884375000 1390234375 S-V+L +1390234375 1578125000 V-L+C +1578125000 1830859375 L-C+V +1830859375 2203515625 C-V+V +2812500000 3355468750 V-V+L +3355468750 3528515625 V-L+L +3528515625 3854296875 L-L+V +3854296875 4296875000 L-V+C +4296875000 4775000000 V-C+V +4775000000 5015625000 C-V+L +5015625000 5437109375 V-L+V +5437109375 6673437500 L-V+N +6673437500 7242578125 V-N+L +7242578125 7787109375 N-L+V +7787109375 8046875000 L-V+C +8046875000 8880468750 V-C+V +8880468750 9060156250 C-V+C +9060156250 9614843750 V-C+V +9614843750 11296875000 C-V+C +11296875000 12234375000 V-C+S +12234375000 13468750000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/tr6.lab b/samples/HTKDemo/labels/bcplabs/tri/tr6.lab new file mode 100755 index 0000000..9378a2e --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/tr6.lab @@ -0,0 +1,26 @@ +0 828125000 S +828125000 1703125000 S-C+V +1703125000 1890625000 C-V+C +1890625000 2175390625 V-C+C +2175390625 2686718750 C-C+L +2686718750 2973046875 C-L+V +2973046875 4078125000 L-V+C +4078125000 4360156250 V-C+C +4360156250 4848046875 C-C+C +4848046875 4926953125 C-C+V +4926953125 5098437500 C-V+C +5098437500 5385156250 V-C+C +5385156250 5984375000 C-C+V +5984375000 6351171875 C-V+C +6351171875 6824218750 V-C+C +6824218750 7142578125 C-C+N +7142578125 7532421875 C-N+C +7532421875 8280468750 N-C+C +8280468750 8535156250 C-C+N +8535156250 8820703125 C-N+V +8820703125 9500781250 N-V+L +9500781250 9859375000 V-L+C +9859375000 10359375000 L-C+V +10359375000 11359375000 C-V+C +11359375000 12242187500 V-C+S +12242187500 13343750000 S diff --git a/samples/HTKDemo/labels/bcplabs/tri/tr7.lab b/samples/HTKDemo/labels/bcplabs/tri/tr7.lab new file mode 100755 index 0000000..d0f872c --- /dev/null +++ b/samples/HTKDemo/labels/bcplabs/tri/tr7.lab @@ -0,0 +1,21 @@ +0 867968750 S +867968750 1328125000 S-C+L +1328125000 1526171875 C-L+V +1526171875 1921875000 L-V+C +1921875000 2857421875 V-C+V +2857421875 3570312500 C-V+N +3837890625 4592968750 V-N+C +4592968750 4751953125 N-C+V +4751953125 4890625000 C-V+C +4890625000 5729687500 V-C+C +5729687500 6089843750 C-C+C +6089843750 6296875000 C-C+L +6296875000 7000781250 C-L+C +7000781250 7156250000 L-C+C +7156250000 8015625000 C-C+V +8015625000 8234375000 C-V+C +8234375000 8456250000 V-C+C +8456250000 8953125000 C-C+V +8953125000 10045703125 C-V+C +10045703125 11341406250 V-C+S +11341406250 12250000000 S diff --git a/samples/HTKDemo/lists/allPairedFiles b/samples/HTKDemo/lists/allPairedFiles new file mode 100755 index 0000000..7789f23 --- /dev/null +++ b/samples/HTKDemo/lists/allPairedFiles @@ -0,0 +1,14 @@ +data/train/tr1.mfc +data/train/tr1.mfc +data/train/tr2.mfc +data/train/tr2.mfc +data/train/tr3.mfc +data/train/tr3.mfc +data/train/tr4.mfc +data/train/tr4.mfc +data/train/tr5.mfc +data/train/tr5.mfc +data/train/tr6.mfc +data/train/tr6.mfc +data/train/tr7.mfc +data/train/tr7.mfc diff --git a/samples/HTKDemo/lists/allTrainFiles b/samples/HTKDemo/lists/allTrainFiles new file mode 100755 index 0000000..e3e797d --- /dev/null +++ b/samples/HTKDemo/lists/allTrainFiles @@ -0,0 +1,7 @@ +data/train/tr1.mfc +data/train/tr2.mfc +data/train/tr3.mfc +data/train/tr4.mfc +data/train/tr5.mfc +data/train/tr6.mfc +data/train/tr7.mfc diff --git a/samples/HTKDemo/lists/bcplist b/samples/HTKDemo/lists/bcplist new file mode 100755 index 0000000..742a8ca --- /dev/null +++ b/samples/HTKDemo/lists/bcplist @@ -0,0 +1,5 @@ +S +C +V +N +L diff --git a/samples/HTKDemo/lists/bcpvocab b/samples/HTKDemo/lists/bcpvocab new file mode 100755 index 0000000..ac314e0 --- /dev/null +++ b/samples/HTKDemo/lists/bcpvocab @@ -0,0 +1,5 @@ +S S +C C +V V +N N +L L diff --git a/samples/HTKDemo/lists/contDepList b/samples/HTKDemo/lists/contDepList new file mode 100755 index 0000000..3786d34 --- /dev/null +++ b/samples/HTKDemo/lists/contDepList @@ -0,0 +1,59 @@ +S +S-C+V +C-V+N +V-N+V +N-V+C +V-C+C +C-C+N +C-N+V +C-C+V +C-V+C +C-V+L +V-L+V +L-V+V +V-V+N +N-V+L +L-V+L +L-V+C +C-C+L +C-L+V +C-C+C +C-V+S +S-L+V +C-V+V +V-N+C +N-C+C +V-C+L +V-V+S +V-S+C +N-C+V +L-V+S +V-C+V +V-L+C +L-C+C +L-C+S +C-S+L +L-V+N +C-L+L +L-L+N +L-N+V +C-C+S +V-L+L +L-L+V +V-L+S +C-S+V +S-V+C +V-S+V +S-V+N +N-V+V +V-V+C +N-V+N +V-C+S +S-V+L +L-C+V +V-V+L +V-N+L +N-L+V +C-N+C +S-C+L +C-L+C diff --git a/samples/HTKDemo/lists/dataList1 b/samples/HTKDemo/lists/dataList1 new file mode 100755 index 0000000..3d2890b --- /dev/null +++ b/samples/HTKDemo/lists/dataList1 @@ -0,0 +1,2 @@ +data/train/tr1.mfc +data/train/tr2.mfc \ No newline at end of file diff --git a/samples/HTKDemo/lists/dataList2 b/samples/HTKDemo/lists/dataList2 new file mode 100755 index 0000000..b1ab62a --- /dev/null +++ b/samples/HTKDemo/lists/dataList2 @@ -0,0 +1,2 @@ +data/train/tr3.mfc +data/train/tr4.mfc \ No newline at end of file diff --git a/samples/HTKDemo/lists/dataList3 b/samples/HTKDemo/lists/dataList3 new file mode 100755 index 0000000..ab13db0 --- /dev/null +++ b/samples/HTKDemo/lists/dataList3 @@ -0,0 +1,3 @@ +data/train/tr5.mfc +data/train/tr6.mfc +data/train/tr7.mfc \ No newline at end of file diff --git a/samples/HTKDemo/lists/lbiVocab b/samples/HTKDemo/lists/lbiVocab new file mode 100755 index 0000000..fd8b0a4 --- /dev/null +++ b/samples/HTKDemo/lists/lbiVocab @@ -0,0 +1,21 @@ +S S +S-C S-C +C-V C-V +V-N V-N +N-V N-V +V-C V-C +C-C C-C +C-N C-N +V-L V-L +L-V L-V +V-V V-V +C-L C-L +S-L S-L +N-C N-C +V-S V-S +L-C L-C +C-S C-S +L-L L-L +L-N L-N +S-V S-V +N-L N-L diff --git a/samples/HTKDemo/lists/rbiVocab b/samples/HTKDemo/lists/rbiVocab new file mode 100755 index 0000000..6348c3f --- /dev/null +++ b/samples/HTKDemo/lists/rbiVocab @@ -0,0 +1,22 @@ +S S +C+V C+V +V+N V+N +N+V N+V +V+C V+C +C+C C+C +C+N C+N +V+L V+L +L+V L+V +V+V V+V +C+L C+L +V+S V+S +N+C N+C +S+C S+C +L+C L+C +C+S C+S +S+L S+L +L+L L+L +L+N L+N +L+S L+S +S+V S+V +N+L N+L diff --git a/samples/HTKDemo/lists/testFileStubs b/samples/HTKDemo/lists/testFileStubs new file mode 100755 index 0000000..4caa2c8 --- /dev/null +++ b/samples/HTKDemo/lists/testFileStubs @@ -0,0 +1,3 @@ +te1 +te2 +te3 diff --git a/samples/HTKDemo/lists/trainFileStubs b/samples/HTKDemo/lists/trainFileStubs new file mode 100755 index 0000000..b93ba69 --- /dev/null +++ b/samples/HTKDemo/lists/trainFileStubs @@ -0,0 +1,7 @@ +tr1 +tr2 +tr3 +tr4 +tr5 +tr6 +tr7 diff --git a/samples/HTKDemo/lists/triVocab b/samples/HTKDemo/lists/triVocab new file mode 100755 index 0000000..94ec3b7 --- /dev/null +++ b/samples/HTKDemo/lists/triVocab @@ -0,0 +1,59 @@ +S S +S-C+V S-C+V +C-V+N C-V+N +V-N+V V-N+V +N-V+C N-V+C +V-C+C V-C+C +C-C+N C-C+N +C-N+V C-N+V +C-C+V C-C+V +C-V+C C-V+C +C-V+L C-V+L +V-L+V V-L+V +L-V+V L-V+V +V-V+N V-V+N +N-V+L N-V+L +L-V+L L-V+L +L-V+C L-V+C +C-C+L C-C+L +C-L+V C-L+V +C-C+C C-C+C +C-V+S C-V+S +S-L+V S-L+V +C-V+V C-V+V +V-N+C V-N+C +N-C+C N-C+C +V-C+L V-C+L +V-V+S V-V+S +V-S+C V-S+C +N-C+V N-C+V +L-V+S L-V+S +V-C+V V-C+V +V-L+C V-L+C +L-C+C L-C+C +L-C+S L-C+S +C-S+L C-S+L +L-V+N L-V+N +C-L+L C-L+L +L-L+N L-L+N +L-N+V L-N+V +C-C+S C-C+S +V-L+L V-L+L +L-L+V L-L+V +V-L+S V-L+S +C-S+V C-S+V +S-V+C S-V+C +V-S+V V-S+V +S-V+N S-V+N +N-V+V N-V+V +V-V+C V-V+C +N-V+N N-V+N +V-C+S V-C+S +S-V+L S-V+L +L-C+V L-C+V +V-V+L V-V+L +V-N+L V-N+L +N-L+V N-L+V +C-N+C C-N+C +S-C+L S-C+L +C-L+C C-L+C diff --git a/samples/HTKDemo/monlabs.scr b/samples/HTKDemo/monlabs.scr new file mode 100755 index 0000000..19abfd1 --- /dev/null +++ b/samples/HTKDemo/monlabs.scr @@ -0,0 +1,10 @@ +labels\bcplabs\mon\te1.lab +labels\bcplabs\mon\te2.lab +labels\bcplabs\mon\te3.lab +labels\bcplabs\mon\tr1.lab +labels\bcplabs\mon\tr2.lab +labels\bcplabs\mon\tr3.lab +labels\bcplabs\mon\tr4.lab +labels\bcplabs\mon\tr5.lab +labels\bcplabs\mon\tr6.lab +labels\bcplabs\mon\tr7.lab diff --git a/samples/HTKDemo/networks/lbiLattice b/samples/HTKDemo/networks/lbiLattice new file mode 100755 index 0000000..d4fdce8 --- /dev/null +++ b/samples/HTKDemo/networks/lbiLattice @@ -0,0 +1,96 @@ +VERSION=1.0 +N=28 L=66 +I=0 W=S-C +I=1 W=!NULL +I=2 W=C-V +I=3 W=!NULL +I=4 W=V-N +I=5 W=!NULL +I=6 W=N-V +I=7 W=V-C +I=8 W=C-C +I=9 W=C-N +I=10 W=V-L +I=11 W=!NULL +I=12 W=L-V +I=13 W=V-V +I=14 W=C-L +I=15 W=S-L +I=16 W=N-C +I=17 W=V-S +I=18 W=!NULL +I=19 W=L-C +I=20 W=C-S +I=21 W=L-L +I=22 W=L-N +I=23 W=S-V +I=24 W=N-L +I=25 W=S +I=26 W=!NULL +I=27 W=!NULL +J=0 S=18 E=0 +J=1 S=25 E=0 +J=2 S=0 E=1 +J=3 S=7 E=1 +J=4 S=8 E=1 +J=5 S=16 E=1 +J=6 S=19 E=1 +J=7 S=1 E=2 +J=8 S=25 E=2 +J=9 S=2 E=3 +J=10 S=6 E=3 +J=11 S=12 E=3 +J=12 S=13 E=3 +J=13 S=23 E=3 +J=14 S=3 E=4 +J=15 S=25 E=4 +J=16 S=4 E=5 +J=17 S=9 E=5 +J=18 S=22 E=5 +J=19 S=5 E=6 +J=20 S=25 E=6 +J=21 S=3 E=7 +J=22 S=25 E=7 +J=23 S=1 E=8 +J=24 S=25 E=8 +J=25 S=1 E=9 +J=26 S=25 E=9 +J=27 S=3 E=10 +J=28 S=25 E=10 +J=29 S=10 E=11 +J=30 S=14 E=11 +J=31 S=15 E=11 +J=32 S=21 E=11 +J=33 S=24 E=11 +J=34 S=11 E=12 +J=35 S=25 E=12 +J=36 S=3 E=13 +J=37 S=25 E=13 +J=38 S=1 E=14 +J=39 S=25 E=14 +J=40 S=18 E=15 +J=41 S=25 E=15 +J=42 S=5 E=16 +J=43 S=25 E=16 +J=44 S=3 E=17 +J=45 S=25 E=17 +J=46 S=17 E=18 +J=47 S=20 E=18 +J=48 S=11 E=19 +J=49 S=25 E=19 +J=50 S=1 E=20 +J=51 S=25 E=20 +J=52 S=11 E=21 +J=53 S=25 E=21 +J=54 S=11 E=22 +J=55 S=25 E=22 +J=56 S=18 E=23 +J=57 S=25 E=23 +J=58 S=5 E=24 +J=59 S=25 E=24 +J=60 S=27 E=25 +J=61 S=1 E=26 +J=62 S=3 E=26 +J=63 S=5 E=26 +J=64 S=11 E=26 +J=65 S=18 E=26 diff --git a/samples/HTKDemo/networks/lbiNetwork b/samples/HTKDemo/networks/lbiNetwork new file mode 100755 index 0000000..7ee4c85 --- /dev/null +++ b/samples/HTKDemo/networks/lbiNetwork @@ -0,0 +1,23 @@ +(S +<< +S-C| +C-V| +V-N| +N-V| +V-C| +C-C| +C-N| +V-L| +L-V| +V-V| +C-L| +S-L| +N-C| +V-S| +L-C| +C-S| +L-L| +L-N| +S-V| +N-L >> +) diff --git a/samples/HTKDemo/networks/monLattice b/samples/HTKDemo/networks/monLattice new file mode 100755 index 0000000..33bcca8 --- /dev/null +++ b/samples/HTKDemo/networks/monLattice @@ -0,0 +1,26 @@ +VERSION=1.0 +N=8 L=16 +I=0 W=S +I=1 W=!NULL +I=2 W=N +I=3 W=L +I=4 W=C +I=5 W=V +I=6 W=!NULL +I=7 W=!NULL +J=0 S=1 E=0 +J=1 S=7 E=0 +J=2 S=0 E=1 +J=3 S=2 E=1 +J=4 S=3 E=1 +J=5 S=4 E=1 +J=6 S=5 E=1 +J=7 S=1 E=2 +J=8 S=7 E=2 +J=9 S=1 E=3 +J=10 S=7 E=3 +J=11 S=1 E=4 +J=12 S=7 E=4 +J=13 S=1 E=5 +J=14 S=7 E=5 +J=15 S=1 E=6 diff --git a/samples/HTKDemo/networks/monNetwork b/samples/HTKDemo/networks/monNetwork new file mode 100755 index 0000000..8528e79 --- /dev/null +++ b/samples/HTKDemo/networks/monNetwork @@ -0,0 +1,2 @@ +$phn = V | C | L | N | S; +(<$phn>) diff --git a/samples/HTKDemo/networks/rbiLattice b/samples/HTKDemo/networks/rbiLattice new file mode 100755 index 0000000..458c02f --- /dev/null +++ b/samples/HTKDemo/networks/rbiLattice @@ -0,0 +1,100 @@ +VERSION=1.0 +N=29 L=69 +I=0 W=C+V +I=1 W=!NULL +I=2 W=V+N +I=3 W=!NULL +I=4 W=N+V +I=5 W=V+C +I=6 W=!NULL +I=7 W=C+C +I=8 W=C+N +I=9 W=V+L +I=10 W=!NULL +I=11 W=L+V +I=12 W=V+V +I=13 W=C+L +I=14 W=V+S +I=15 W=!NULL +I=16 W=N+C +I=17 W=S+C +I=18 W=L+C +I=19 W=C+S +I=20 W=S+L +I=21 W=L+L +I=22 W=L+N +I=23 W=L+S +I=24 W=S+V +I=25 W=N+L +I=26 W=S +I=27 W=!NULL +I=28 W=!NULL +J=0 S=6 E=0 +J=1 S=26 E=0 +J=2 S=0 E=1 +J=3 S=4 E=1 +J=4 S=11 E=1 +J=5 S=12 E=1 +J=6 S=24 E=1 +J=7 S=1 E=2 +J=8 S=26 E=2 +J=9 S=2 E=3 +J=10 S=8 E=3 +J=11 S=22 E=3 +J=12 S=3 E=4 +J=13 S=26 E=4 +J=14 S=1 E=5 +J=15 S=26 E=5 +J=16 S=5 E=6 +J=17 S=7 E=6 +J=18 S=16 E=6 +J=19 S=17 E=6 +J=20 S=18 E=6 +J=21 S=6 E=7 +J=22 S=26 E=7 +J=23 S=6 E=8 +J=24 S=26 E=8 +J=25 S=1 E=9 +J=26 S=26 E=9 +J=27 S=9 E=10 +J=28 S=13 E=10 +J=29 S=20 E=10 +J=30 S=21 E=10 +J=31 S=25 E=10 +J=32 S=10 E=11 +J=33 S=26 E=11 +J=34 S=1 E=12 +J=35 S=26 E=12 +J=36 S=6 E=13 +J=37 S=26 E=13 +J=38 S=1 E=14 +J=39 S=26 E=14 +J=40 S=14 E=15 +J=41 S=19 E=15 +J=42 S=23 E=15 +J=43 S=3 E=16 +J=44 S=26 E=16 +J=45 S=15 E=17 +J=46 S=26 E=17 +J=47 S=10 E=18 +J=48 S=26 E=18 +J=49 S=6 E=19 +J=50 S=26 E=19 +J=51 S=15 E=20 +J=52 S=26 E=20 +J=53 S=10 E=21 +J=54 S=26 E=21 +J=55 S=10 E=22 +J=56 S=26 E=22 +J=57 S=10 E=23 +J=58 S=26 E=23 +J=59 S=15 E=24 +J=60 S=26 E=24 +J=61 S=3 E=25 +J=62 S=26 E=25 +J=63 S=28 E=26 +J=64 S=1 E=27 +J=65 S=3 E=27 +J=66 S=6 E=27 +J=67 S=10 E=27 +J=68 S=15 E=27 diff --git a/samples/HTKDemo/networks/rbiNetwork b/samples/HTKDemo/networks/rbiNetwork new file mode 100755 index 0000000..53152b6 --- /dev/null +++ b/samples/HTKDemo/networks/rbiNetwork @@ -0,0 +1,24 @@ +(S +<< +C+V| +V+N| +N+V| +V+C| +C+C| +C+N| +V+L| +L+V| +V+V| +C+L| +V+S| +N+C| +S+C| +L+C| +C+S| +S+L| +L+L| +L+N| +L+S| +S+V| +N+L >> +) diff --git a/samples/HTKDemo/networks/triLattice b/samples/HTKDemo/networks/triLattice new file mode 100755 index 0000000..d9bd6f8 --- /dev/null +++ b/samples/HTKDemo/networks/triLattice @@ -0,0 +1,268 @@ +VERSION=1.0 +N=76 L=190 +I=0 W=S-C+V +I=1 W=!NULL +I=2 W=C-V+N +I=3 W=!NULL +I=4 W=V-N+V +I=5 W=!NULL +I=6 W=N-V+C +I=7 W=!NULL +I=8 W=V-C+C +I=9 W=!NULL +I=10 W=C-C+N +I=11 W=C-N+V +I=12 W=C-C+V +I=13 W=C-V+C +I=14 W=C-V+L +I=15 W=!NULL +I=16 W=V-L+V +I=17 W=!NULL +I=18 W=L-V+V +I=19 W=!NULL +I=20 W=V-V+N +I=21 W=N-V+L +I=22 W=L-V+L +I=23 W=L-V+C +I=24 W=C-C+L +I=25 W=!NULL +I=26 W=C-L+V +I=27 W=C-C+C +I=28 W=C-V+S +I=29 W=!NULL +I=30 W=S-L+V +I=31 W=C-V+V +I=32 W=V-N+C +I=33 W=!NULL +I=34 W=N-C+C +I=35 W=V-C+L +I=36 W=V-V+S +I=37 W=V-S+C +I=38 W=N-C+V +I=39 W=L-V+S +I=40 W=V-C+V +I=41 W=V-L+C +I=42 W=!NULL +I=43 W=L-C+C +I=44 W=L-C+S +I=45 W=!NULL +I=46 W=C-S+L +I=47 W=L-V+N +I=48 W=C-L+L +I=49 W=!NULL +I=50 W=L-L+N +I=51 W=L-N+V +I=52 W=C-C+S +I=53 W=V-L+L +I=54 W=L-L+V +I=55 W=V-L+S +I=56 W=C-S+V +I=57 W=!NULL +I=58 W=S-V+C +I=59 W=V-S+V +I=60 W=S-V+N +I=61 W=N-V+V +I=62 W=V-V+C +I=63 W=N-V+N +I=64 W=V-C+S +I=65 W=S-V+L +I=66 W=L-C+V +I=67 W=V-V+L +I=68 W=V-N+L +I=69 W=N-L+V +I=70 W=C-N+C +I=71 W=S-C+L +I=72 W=C-L+C +I=73 W=S +I=74 W=!NULL +I=75 W=!NULL +J=0 S=37 E=0 +J=1 S=73 E=0 +J=2 S=0 E=1 +J=3 S=12 E=1 +J=4 S=38 E=1 +J=5 S=40 E=1 +J=6 S=66 E=1 +J=7 S=1 E=2 +J=8 S=73 E=2 +J=9 S=2 E=3 +J=10 S=20 E=3 +J=11 S=47 E=3 +J=12 S=60 E=3 +J=13 S=63 E=3 +J=14 S=3 E=4 +J=15 S=73 E=4 +J=16 S=4 E=5 +J=17 S=11 E=5 +J=18 S=51 E=5 +J=19 S=5 E=6 +J=20 S=73 E=6 +J=21 S=6 E=7 +J=22 S=13 E=7 +J=23 S=23 E=7 +J=24 S=58 E=7 +J=25 S=62 E=7 +J=26 S=7 E=8 +J=27 S=73 E=8 +J=28 S=8 E=9 +J=29 S=27 E=9 +J=30 S=34 E=9 +J=31 S=43 E=9 +J=32 S=9 E=10 +J=33 S=73 E=10 +J=34 S=10 E=11 +J=35 S=73 E=11 +J=36 S=9 E=12 +J=37 S=73 E=12 +J=38 S=1 E=13 +J=39 S=73 E=13 +J=40 S=1 E=14 +J=41 S=73 E=14 +J=42 S=14 E=15 +J=43 S=21 E=15 +J=44 S=22 E=15 +J=45 S=65 E=15 +J=46 S=67 E=15 +J=47 S=15 E=16 +J=48 S=73 E=16 +J=49 S=16 E=17 +J=50 S=26 E=17 +J=51 S=30 E=17 +J=52 S=54 E=17 +J=53 S=69 E=17 +J=54 S=17 E=18 +J=55 S=73 E=18 +J=56 S=18 E=19 +J=57 S=31 E=19 +J=58 S=61 E=19 +J=59 S=19 E=20 +J=60 S=73 E=20 +J=61 S=5 E=21 +J=62 S=73 E=21 +J=63 S=17 E=22 +J=64 S=73 E=22 +J=65 S=17 E=23 +J=66 S=73 E=23 +J=67 S=9 E=24 +J=68 S=73 E=24 +J=69 S=24 E=25 +J=70 S=35 E=25 +J=71 S=71 E=25 +J=72 S=25 E=26 +J=73 S=73 E=26 +J=74 S=9 E=27 +J=75 S=73 E=27 +J=76 S=1 E=28 +J=77 S=73 E=28 +J=78 S=28 E=29 +J=79 S=36 E=29 +J=80 S=39 E=29 +J=81 S=46 E=30 +J=82 S=73 E=30 +J=83 S=1 E=31 +J=84 S=73 E=31 +J=85 S=3 E=32 +J=86 S=73 E=32 +J=87 S=32 E=33 +J=88 S=70 E=33 +J=89 S=33 E=34 +J=90 S=73 E=34 +J=91 S=7 E=35 +J=92 S=73 E=35 +J=93 S=19 E=36 +J=94 S=73 E=36 +J=95 S=29 E=37 +J=96 S=73 E=37 +J=97 S=33 E=38 +J=98 S=73 E=38 +J=99 S=17 E=39 +J=100 S=73 E=39 +J=101 S=7 E=40 +J=102 S=73 E=40 +J=103 S=15 E=41 +J=104 S=73 E=41 +J=105 S=41 E=42 +J=106 S=72 E=42 +J=107 S=42 E=43 +J=108 S=73 E=43 +J=109 S=42 E=44 +J=110 S=73 E=44 +J=111 S=44 E=45 +J=112 S=52 E=45 +J=113 S=64 E=45 +J=114 S=45 E=46 +J=115 S=73 E=46 +J=116 S=17 E=47 +J=117 S=73 E=47 +J=118 S=25 E=48 +J=119 S=73 E=48 +J=120 S=48 E=49 +J=121 S=53 E=49 +J=122 S=49 E=50 +J=123 S=73 E=50 +J=124 S=50 E=51 +J=125 S=73 E=51 +J=126 S=9 E=52 +J=127 S=73 E=52 +J=128 S=15 E=53 +J=129 S=73 E=53 +J=130 S=49 E=54 +J=131 S=73 E=54 +J=132 S=15 E=55 +J=133 S=73 E=55 +J=134 S=45 E=56 +J=135 S=73 E=56 +J=136 S=56 E=57 +J=137 S=59 E=57 +J=138 S=57 E=58 +J=139 S=73 E=58 +J=140 S=29 E=59 +J=141 S=73 E=59 +J=142 S=57 E=60 +J=143 S=73 E=60 +J=144 S=5 E=61 +J=145 S=73 E=61 +J=146 S=19 E=62 +J=147 S=73 E=62 +J=148 S=5 E=63 +J=149 S=73 E=63 +J=150 S=7 E=64 +J=151 S=73 E=64 +J=152 S=57 E=65 +J=153 S=73 E=65 +J=154 S=42 E=66 +J=155 S=73 E=66 +J=156 S=19 E=67 +J=157 S=73 E=67 +J=158 S=3 E=68 +J=159 S=73 E=68 +J=160 S=68 E=69 +J=161 S=73 E=69 +J=162 S=10 E=70 +J=163 S=73 E=70 +J=164 S=37 E=71 +J=165 S=73 E=71 +J=166 S=25 E=72 +J=167 S=73 E=72 +J=168 S=75 E=73 +J=169 S=1 E=74 +J=170 S=3 E=74 +J=171 S=5 E=74 +J=172 S=7 E=74 +J=173 S=9 E=74 +J=174 S=10 E=74 +J=175 S=15 E=74 +J=176 S=17 E=74 +J=177 S=19 E=74 +J=178 S=25 E=74 +J=179 S=29 E=74 +J=180 S=33 E=74 +J=181 S=37 E=74 +J=182 S=42 E=74 +J=183 S=45 E=74 +J=184 S=46 E=74 +J=185 S=49 E=74 +J=186 S=50 E=74 +J=187 S=55 E=74 +J=188 S=57 E=74 +J=189 S=68 E=74 diff --git a/samples/HTKDemo/networks/triNetwork b/samples/HTKDemo/networks/triNetwork new file mode 100755 index 0000000..cdf14cc --- /dev/null +++ b/samples/HTKDemo/networks/triNetwork @@ -0,0 +1,61 @@ +(S +<< +S-C+V| +C-V+N| +V-N+V| +N-V+C| +V-C+C| +C-C+N| +C-N+V| +C-C+V| +C-V+C| +C-V+L| +V-L+V| +L-V+V| +V-V+N| +N-V+L| +L-V+L| +L-V+C| +C-C+L| +C-L+V| +C-C+C| +C-V+S| +S-L+V| +C-V+V| +V-N+C| +N-C+C| +V-C+L| +V-V+S| +V-S+C| +N-C+V| +L-V+S| +V-C+V| +V-L+C| +L-C+C| +L-C+S| +C-S+L| +L-V+N| +C-L+L| +L-L+N| +L-N+V| +C-C+S| +V-L+L| +L-L+V| +V-L+S| +C-S+V| +S-V+C| +V-S+V| +S-V+N| +N-V+V| +V-V+C| +N-V+N| +V-C+S| +S-V+L| +L-C+V| +V-V+L| +V-N+L| +N-L+V| +C-N+C| +S-C+L| +C-L+C >> +) diff --git a/samples/HTKDemo/outaudio b/samples/HTKDemo/outaudio new file mode 100755 index 0000000..dc4b6cb --- /dev/null +++ b/samples/HTKDemo/outaudio @@ -0,0 +1,72 @@ +#!MLF!# +"0001.rec" +0 10100000 C -7627.560059 +/// +0 5300000 C -3905.354980 +5300000 6600000 V -1062.496460 +6600000 10100000 C -2664.974854 +/// +0 8900000 C -6719.755371 +8900000 10100000 V -917.452148 +/// +0 5300000 C -3905.354980 +5300000 5800000 V -435.424530 +5800000 6600000 V -631.898193 +6600000 10100000 C -2664.974854 +/// +0 2900000 C -2020.528931 +2900000 10100000 C -5618.454590 +. +"0002.rec" +0 3200000 C -2068.348877 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 13300000 V -987.693176 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 1000000 C -627.234375 +1000000 1300000 V -233.054031 +1300000 3200000 C -1208.342407 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 13300000 V -987.693176 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 1400000 C -928.577454 +1400000 3200000 C -1144.373779 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 13300000 V -987.693176 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 3200000 C -2068.348877 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 12400000 C -311.542572 +12400000 13300000 V -686.131775 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +/// +0 1000000 C -627.234375 +1000000 1300000 V -233.054031 +1300000 3200000 C -1208.342407 +3200000 10900000 C -4924.490723 +10900000 12000000 V -856.677307 +12000000 12400000 C -311.542572 +12400000 13300000 V -686.131775 +13300000 14400000 C -826.712830 +14400000 15700000 V -1033.562378 +15700000 18400000 C -1957.687500 +18400000 22900000 C -2563.804443 +. diff --git a/samples/HTKDemo/protoconfs/example.pcf b/samples/HTKDemo/protoconfs/example.pcf new file mode 100755 index 0000000..a8797ef --- /dev/null +++ b/samples/HTKDemo/protoconfs/example.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream DISCRETE system + + + +hsKind: T +covKind: D +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 8 8 4 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m12_dc_tied.pcf b/samples/HTKDemo/protoconfs/proto_s1_m12_dc_tied.pcf new file mode 100755 index 0000000..3c801ff --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m12_dc_tied.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single stream TIEDHS prototype system + + + +hsKind: T +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 12 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf new file mode 100755 index 0000000..c6de3cd --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m1_dc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single mixture, single stream prototype system + + + +hsKind: P +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf new file mode 100755 index 0000000..948f49b --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m1_fc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single mixture, single stream FULLC prototype system + + + +hsKind: P +covKind: F +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf new file mode 100755 index 0000000..ae1cacd --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m4_dc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single stream, 4 mixture prototype system + + + +hsKind: P +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 4 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf b/samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf new file mode 100755 index 0000000..fecb51c --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m4_fc.pcf @@ -0,0 +1,22 @@ + + + + This PCF produces a single stream, 4 mixture, full covariance + prototype system. + + + +hsKind: P +covKind: F +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 4 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s1_m64_vq.pcf b/samples/HTKDemo/protoconfs/proto_s1_m64_vq.pcf new file mode 100755 index 0000000..1a01129 --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s1_m64_vq.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a single stream DISCRETE prototype system + + + +hsKind: D +covKind: D +nStates: 3 +nStreams: 1 +sWidths: 26 +mixes: 64 +parmKind: MFCC_E_D_V +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf new file mode 100755 index 0000000..838dd7f --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_dc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream, single mixture prototype system. + + + +hsKind: P +covKind: D +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 1 1 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf new file mode 100755 index 0000000..f03cac5 --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s3_m1_1_1_fc.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream, single mixture, FULLC prototype system. + + + +hsKind: P +covKind: F +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 1 1 1 +parmKind: MFCC_E_D +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/protoconfs/proto_s3_m64_64_16_vq.pcf b/samples/HTKDemo/protoconfs/proto_s3_m64_64_16_vq.pcf new file mode 100755 index 0000000..bbc8f2a --- /dev/null +++ b/samples/HTKDemo/protoconfs/proto_s3_m64_64_16_vq.pcf @@ -0,0 +1,21 @@ + + + + This PCF produces a 3 stream DISCRETE prototype system. + + + +hsKind: D +covKind: D +nStates: 3 +nStreams: 3 +sWidths: 12 12 2 +mixes: 64 64 16 +parmKind: MFCC_E_D_V +vecSize: 26 +outDir: proto +hmmList: lists/bcplist + + + + \ No newline at end of file diff --git a/samples/HTKDemo/results/lbiPlainS1.res b/samples/HTKDemo/results/lbiPlainS1.res new file mode 100755 index 0000000..68b30d2 --- /dev/null +++ b/samples/HTKDemo/results/lbiPlainS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=14.29 [H=1, S=6, N=7] +WORD: %Corr=90.41, Acc=85.39 [H=198, D=15, S=6, I=11, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=76.69, Acc=69.92 [H=102, D=20, S=11, I=9, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S1Lin.res b/samples/HTKDemo/results/monDiscM64S1Lin.res new file mode 100755 index 0000000..7110e48 --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S1Lin.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=72.15, Acc=70.32 [H=158, D=48, S=13, I=4, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.17, Acc=61.65 [H=88, D=35, S=10, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S1Tree.res b/samples/HTKDemo/results/monDiscM64S1Tree.res new file mode 100755 index 0000000..d7ebc2a --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S1Tree.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=76.26, Acc=74.43 [H=167, D=40, S=12, I=4, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=58.65, Acc=54.89 [H=78, D=40, S=15, I=5, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S3Lin.res b/samples/HTKDemo/results/monDiscM64S3Lin.res new file mode 100755 index 0000000..9337e36 --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S3Lin.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=84.93, Acc=84.47 [H=186, D=32, S=1, I=1, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=62.41 [H=89, D=36, S=8, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monDiscM64S3Tree.res b/samples/HTKDemo/results/monDiscM64S3Tree.res new file mode 100755 index 0000000..1f3524e --- /dev/null +++ b/samples/HTKDemo/results/monDiscM64S3Tree.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=82.19, Acc=81.74 [H=180, D=34, S=5, I=1, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=60.90 [H=89, D=35, S=9, I=8, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM1S1.res b/samples/HTKDemo/results/monPlainM1S1.res new file mode 100755 index 0000000..28518d0 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM1S3.res b/samples/HTKDemo/results/monPlainM1S3.res new file mode 100755 index 0000000..f7edde8 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] +=================================================================== diff --git a/samples/HTKDemo/results/monPlainM1S3FullCov.res b/samples/HTKDemo/results/monPlainM1S3FullCov.res new file mode 100755 index 0000000..e95e339 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S3FullCov.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=86.30, Acc=85.39 [H=189, D=28, S=2, I=2, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=60.15 [H=89, D=32, S=12, I=9, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM1S3HERestPell.res b/samples/HTKDemo/results/monPlainM1S3HERestPell.res new file mode 100755 index 0000000..28518d0 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM1S3HERestPell.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=77.63, Acc=74.89 [H=170, D=37, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.91, Acc=59.40 [H=85, D=35, S=13, I=6, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monPlainM4S1.res b/samples/HTKDemo/results/monPlainM4S1.res new file mode 100755 index 0000000..c393160 --- /dev/null +++ b/samples/HTKDemo/results/monPlainM4S1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=90.41, Acc=85.84 [H=198, D=16, S=5, I=10, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=77.44, Acc=65.41 [H=103, D=15, S=15, I=16, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monSharedM1S3.res b/samples/HTKDemo/results/monSharedM1S3.res new file mode 100755 index 0000000..8a83af9 --- /dev/null +++ b/samples/HTKDemo/results/monSharedM1S3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=79.91, Acc=72.60 [H=175, D=26, S=18, I=16, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=69.92, Acc=57.89 [H=93, D=26, S=14, I=16, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monTiedMixS1.res b/samples/HTKDemo/results/monTiedMixS1.res new file mode 100755 index 0000000..e2c19b5 --- /dev/null +++ b/samples/HTKDemo/results/monTiedMixS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=67.58, Acc=65.75 [H=148, D=62, S=9, I=4, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=55.64, Acc=55.64 [H=74, D=48, S=11, I=0, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/monTiedMixS3.res b/samples/HTKDemo/results/monTiedMixS3.res new file mode 100755 index 0000000..070aeba --- /dev/null +++ b/samples/HTKDemo/results/monTiedMixS3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=67.12, Acc=66.21 [H=147, D=60, S=12, I=2, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=56.39, Acc=54.89 [H=75, D=47, S=11, I=2, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/rbiPlainS1.res b/samples/HTKDemo/results/rbiPlainS1.res new file mode 100755 index 0000000..2b75dc9 --- /dev/null +++ b/samples/HTKDemo/results/rbiPlainS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=89.95, Acc=87.21 [H=197, D=15, S=7, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=75.19, Acc=67.67 [H=100, D=20, S=13, I=10, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triDiscM64S3.res b/samples/HTKDemo/results/triDiscM64S3.res new file mode 100755 index 0000000..15e22a8 --- /dev/null +++ b/samples/HTKDemo/results/triDiscM64S3.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=57.14 [H=4, S=3, N=7] +WORD: %Corr=99.09, Acc=98.63 [H=217, D=2, S=0, I=1, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=64.66, Acc=57.89 [H=86, D=34, S=13, I=9, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triDiscM64S3HSmooth.res b/samples/HTKDemo/results/triDiscM64S3HSmooth.res new file mode 100755 index 0000000..61f4e8b --- /dev/null +++ b/samples/HTKDemo/results/triDiscM64S3HSmooth.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=42.86 [H=3, S=4, N=7] +WORD: %Corr=97.26, Acc=97.26 [H=213, D=6, S=0, I=0, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=66.92, Acc=61.65 [H=89, D=33, S=11, I=7, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triPlainS1.res b/samples/HTKDemo/results/triPlainS1.res new file mode 100755 index 0000000..09d0b5f --- /dev/null +++ b/samples/HTKDemo/results/triPlainS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=28.57 [H=2, S=5, N=7] +WORD: %Corr=93.61, Acc=91.32 [H=205, D=13, S=1, I=5, N=219] +=================================================================== + +TestSet + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=72.93, Acc=63.16 [H=97, D=24, S=12, I=13, N=133] +=================================================================== diff --git a/samples/HTKDemo/results/triSharedS1.res b/samples/HTKDemo/results/triSharedS1.res new file mode 100755 index 0000000..13d9c22 --- /dev/null +++ b/samples/HTKDemo/results/triSharedS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=90.41, Acc=84.93 [H=198, D=16, S=5, I=12, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=76.69, Acc=67.67 [H=102, D=20, S=11, I=12, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triTiedMixS1.res b/samples/HTKDemo/results/triTiedMixS1.res new file mode 100755 index 0000000..be22bea --- /dev/null +++ b/samples/HTKDemo/results/triTiedMixS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=14.29 [H=1, S=6, N=7] +WORD: %Corr=84.02, Acc=81.74 [H=184, D=24, S=11, I=5, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=63.16, Acc=60.15 [H=84, D=31, S=18, I=4, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triTiedMixS1HSmooth.res b/samples/HTKDemo/results/triTiedMixS1HSmooth.res new file mode 100755 index 0000000..f6426cc --- /dev/null +++ b/samples/HTKDemo/results/triTiedMixS1HSmooth.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=7, N=7] +WORD: %Corr=81.74, Acc=79.00 [H=179, D=28, S=12, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=65.41, Acc=57.89 [H=87, D=30, S=16, I=10, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/results/triTiedStateS1.res b/samples/HTKDemo/results/triTiedStateS1.res new file mode 100755 index 0000000..b49598c --- /dev/null +++ b/samples/HTKDemo/results/triTiedStateS1.res @@ -0,0 +1,13 @@ +Training Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=14.29 [H=1, S=6, N=7] +WORD: %Corr=91.32, Acc=88.58 [H=200, D=18, S=1, I=6, N=219] +=================================================================== + +Test Set + +------------------------ Overall Results -------------------------- +SENT: %Correct=0.00 [H=0, S=3, N=3] +WORD: %Corr=75.94, Acc=62.41 [H=101, D=27, S=5, I=18, N=133] +=================================================================== \ No newline at end of file diff --git a/samples/HTKDemo/runDemo b/samples/HTKDemo/runDemo new file mode 100755 index 0000000..bb20c68 --- /dev/null +++ b/samples/HTKDemo/runDemo @@ -0,0 +1,815 @@ +#!/usr/bin/perl + +# Global Variables +$trDataFiles="data/train/tr*.mfc"; # Parameterised training data files +$teDataFiles="data/test/te*.mfc"; # Parameterised test data files +$dataFiles=$trDataFiles; # Pointer to parameterised data files + +$HHED="HHEd"; +$HLED="HLEd"; +$HCOPY="HCopy"; +$HLIST="HList"; +$HINIT="HInit"; +$HREST="HRest"; +$HEREST="HERest"; +$HQUANT="HQuant"; +$HSMOOTH="HSmooth"; +$HRESULTS="HResults"; +$HVITE="HVite"; +$MAKEPROTO="./MakeProtoHMMSet"; + +$numIters=1; # Number of training iterations +$traceTools=0; # Display tool call tracing +$monLabDir="labels/bcplabs/mon"; # Dir for monophone label files +$triLabDir="labels/bcplabs/tri"; # Dir for triphone labels +$lbiLabDir="labels/bcplabs/lbi"; # Dir for left biphone labels +$rbiLabDir="labels/bcplabs/rbi"; # Dir for right biphone labels +$labDir=$monLabDir; # Pointer to relevant labels dir +$monEdFile="edfiles/edlabs.led"; # HLEd ed file to produce labels +$triEdFile="edfiles/edtlabs.led"; # HLED ed file for tri labels +$lbiEdFile="edfiles/edllabs.led"; # HLED ed file for lbi labels +$rbiEdFile="edfiles/edrlabs.led"; # HLED ed file for rbi labels +$edFile=$monEdFile; # Pointer to relevant ed file +$contDepPlainhs="edfiles/contDepPlainhs.hed"; # HHEd ed file for PLAINHS tris +$triSharedhsM1="edfiles/triSharedhsM1.hed"; # HHEd ed file for SHAREDHS tris +$lbiSharedhsM1="edfiles/lbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS lbis +$rbiSharedhsM1="edfiles/rbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS rbis +$triTiedState="edfiles/triTiedState.hed"; # HHEd ed file for tied state tris +$lbiTiedState="edfiles/lbiTiedState.hed"; # HHEd ed file for tied state lbis +$rbiTiedState="edfiles/rbiTiedState.hed"; # HHEd ed file for tied state rbis +$contDepTiedhsS1="edfiles/contDepTiedhsS1.hed"; # HHEd ed file for TIEDHS S1 +$contDepTiedhsS3="edfiles/contDepTiedhsS3.hed"; # HHEd ed file for TIEDHS S3 +$contDepTiedhs=""; # Pointer to HHEd ed file for TIEDHS +$hhedscript=""; # Pointer to HHEd ed file for TIEDHS tris +$monTiedhsS1="edfiles/monTiedhsS1.hed"; # HHEd ed file for TIEDHS mons S1 +$monTiedhsS3="edfiles/monTiedhsS3.hed"; # HHEd ed file for TIEDHS mons S3 +$monTiedhs=""; # Pointer to HHEd ed file for TIEDHS mons +$monSharedhsM1="edfiles/monSharedhsM1.hed";# HHEd ed file for SHAREDHS mons M1 +$monSharedhsM2="edfiles/monSharedhsM2.hed";# HHEd ed file for SHAREDHS mons M2 +$monHmmList="lists/bcplist"; # List of monophones +$contDepHmmList="lists/contDepList"; # List of +$hmmList=$monHmmList; # Pointer to relevant HMM list +$monHmmVocab="lists/bcpvocab"; # Vocab file for monophones +$triHmmVocab="lists/triVocab"; # Vocab file for triphones +$lbiHmmVocab="lists/lbiVocab"; # Vocab file for left biphones +$rbiHmmVocab="lists/rbiVocab"; # Vocab file for right biphones +$hmmVocab=$monHmmVocab; # Pointer to relevant HMM vocab +$srcFmt=""; # Source file format +$triConv=0; # Convert to triphones? +$configParams; # Global store of config parameters +$hrestConf="toolconfs/hrest.conf"; # HRest conf file +$hinitConf="toolconfs/hinit.conf"; # HInit conf file +$hcopyConf="toolconfs/hcopy.conf"; # HCopy conf file +$hhedConf="toolconfs/hhed.conf"; # HHEd conf file +$herestConf="toolconfs/herest.conf"; # HERest conf file +$hsmoothConf="toolconfs/hsmooth.conf"; # HSmooth conf file +$hviteConf="toolconfs/hvite.conf"; # HVite conf file +$hquantConf="toolconfs/hquant.conf"; # HQuant conf file +$macroStr=""; # String for tool -H option, either "-H file" or "" +$monNetwork="networks/monLattice"; # Monophone network +$triNetwork="networks/triLattice"; # Triphone network +$lbiNetwork="networks/lbiLattice"; # Left biphone network +$rbiNetwork="networks/rbiLattice"; # Right biphone network +$network=$monNetwork; # Pointer to recognition network +$cOptStr=""; +$pOptStr=""; +$aOptStr=""; +$contDep=""; + +#***************************** START MAIN *********************************** +$|=1; #Force buffer flush on STDOUT + +($ENV{PWD} =~ /HTKDemo$/) || die "Must be in directory HTKDemo to run this script\n"; +($#ARGV == 0) || die "USAGE: runDemo DemoConfigFile\n"; + +&ReadTCF(); + +$nS=$configParams{"nStreams"}; +$cK=$configParams{"covKind"}; + +&SetToolConfs(); + +$numIters=$configParams{"HERest_Iter"}; + +if($configParams{"Clean_up"} =~ /^[yY]/){ + &CleanUp(); +} +if($configParams{"Trace_tool_calls"} =~ /^[yY]/){ + $aOptStr="-A"; +} + +#*********************** PRE TRAINING ************************ + +if($configParams{"HCopy"} =~ /^[yY]/){ + &HCopy("data/train", "lists/trainFileStubs"); + &HCopy("data/test", "lists/testFileStubs"); +} +if($configParams{"HList"} =~ /^[yY]/){ + &HList(); +} +if($configParams{"HQuant"} =~ /^[yY]/){ + &HQuant(); +} +if($nS==1){ + $contDepTiedhs = $contDepTiedhsS1; + $monTiedhs = $monTiedhsS1; +}else{ + $contDepTiedhs = $contDepTiedhsS3; + $monTiedhs = $monTiedhsS3; +} + +#*************************** TRAINING ************************ +if($configParams{"Context"} =~ /^[tTlLrR]/){ + print "Has the appropriate monophone system been generated Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + }else{ + $hmmList=$monHmmList; + &MkStdMonSys(); + } + if($configParams{"Context"} =~ /^[tT]/){ + $contDep="tri"; + $network=$triNetwork; + $hmmVocab=$triHmmVocab; + $labDir=$triLabDir; + $edFile=$triEdFile; + }elsif($configParams{"Context"} =~ /^[lL]/){ + $contDep="lbi"; + $network=$lbiNetwork; + $hmmVocab=$lbiHmmVocab; + $labDir=$lbiLabDir; + $edFile=$lbiEdFile; + }elsif($configParams{"Context"} =~ /^[rR]/){ + $contDep="rbi"; + $network=$rbiNetwork; + $hmmVocab=$rbiHmmVocab; + $labDir=$rbiLabDir; + $edFile=$rbiEdFile; + } + $hmmList=$contDepHmmList; + &MkContDepSys(); +}else{ + $network=$monNetwork; + $hmmList=$monHmmList; + $hmmVocab=$monHmmVocab; + &MkMonSys(); +} + +#*************************** TESTING ************************ +if($configParams{"hsKind"} =~ /^[pPsS]/){ + $pOptStr="-p 5.0"; +}else{ + $pOptStr="-p -1.0"; +} +if($configParams{"direct_audio"} =~ /^[yY]/){ + &HViteAudio($hmmVocab,$hmmList,$network); +}elsif($configParams{"HVite"} =~ /^[yY]/){ + print "\nTesting on the training set\n"; + $dataFiles=$trDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); + unlink(); + print "\nTesting on the test set\n"; + $dataFiles=$teDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); +} + +#******************************* END MAIN ********************************* + +#************************ Util Functions ********************************** + +#---------------------------------------------- +# MkContDepSys: make a context dependent system +#---------------------------------------------- +sub MkContDepSys { + local($i,$mmix)=0; + + unless($configParams{"covKind"} =~ /^[dD]/){ + die "Can't make context dependent from full covariance monophones\n"; + } + if ($configParams{"hsKind"} =~ /^[pPsS]/){ + for ($i=1; $i<=$nS; $i++){ + if ($mixes[$i] > 1){ + $mmix=1; + } + } + } + unless($mmix == 0){ + die "Can't make context dependent from multiple mixture monophones\n"; + } + print ("WARNING: Monophones should have no parameter sharing\n"); + $srcDir="hmms/hmm.2"; + $tgtDir="hmms/hmm.1"; + $labFiles="$monLabDir\/*"; + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + unlink(); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + if($configParams{"TiedState"} =~ /^[yY]/){ + $hhedscript="edfiles/".$contDep."TiedState.hed"; + &HHEd($srcDir,$tgtDir,$hmmList,$hhedscript); + }else{ + $hhedscript="edfiles/".$contDep."SharedhsM1.hed"; + &HHEd($srcDir,$tgtDir,$hmmList,$hhedscript); + } + }elsif($configParams{"hsKind"} =~ /^[pPdD]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + unlink(); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + &HHEd($srcDir,$tgtDir,$hmmList,$contDepTiedhs); + $cOptStr="-c 50.0"; + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + }elsif($configParams{"HSmooth"} =~ /^[yY]/){ + &HSmooth($numIters,$labDir,$hmmList); + } +} +sub AddMixNums { + local($i); + + for ($i=1; $i<=$nS; $i++){ + if($configParams{"hsKind"} =~ /^[tT]/){ + $protoName=$protoName."1"; + if( $i != $nS ){ + $protoName=$protoName."_"; + } + }else{ + $protoName=$protoName.$mixes[$i]; + if( $i == $nS ){ + chop( $protoName ); + }else{ + $protoName=$protoName."_"; + } + } + } +} + +#---------------------------------- +# MkMonSys: make a monophone system +#---------------------------------- +sub MkMonSys { + local($fromProto)=0; + + $protoName="proto_s${nS}_m"; + &AddMixNums(); + if($configParams{"hsKind"} =~ /^[dD]/){ + $protoName=$protoName."_vq.pcf"; + }else{ + $protoName=$protoName."_${cK}c.pcf"; + } +(-f "protoconfs/$protoName")||die "Cannot find proto config file /$protoName\n"; + + $labFiles="tidata/*.phn"; + $srcFmt="-G TIMIT"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + if($configParams{"HInit"} =~ /^[yY]/){ + &HInit($labDir,$protoName,$hmmList); + } + if($configParams{"HRest"} =~ /^[yY]/){ + &HRest($labDir,$hmmList); + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + } + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.0"; + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monSharedhsM1); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monTiedhs); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + } +} + +#---------------------------------------------- +# MkStdMonSys: make a standard monophone system +#---------------------------------------------- +sub MkStdMonSys { + $labFiles="tidata/*.phn"; + $srcFmt="-G TIMIT"; + + $protoName="proto_s${nS}_m"; + if($configParams{"hsKind"} =~ /^[dD]/){ + &AddMixNums(); + $tmp=$protoName."_vq.pcf"; + $protoName = $tmp; + }else{ + $protoName="proto_s${nS}_m1_dc.pcf"; + } +(-f "protoconfs/$protoName")||die "Cannot find proto config file /$protoName\n"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + + &CleanUp(); + + &HInit($monLabDir,$protoName,$hmmList); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); +} + +#------------------------------------------ +# CleanUp: Clear model and file directories +#------------------------------------------ +sub CleanUp { + print "Cleaning up directories\n"; + unlink(); + unlink(); + unlink(); + unlink(); + unlink(); + unlink(); + unlink(); + print "Done cleaning\n"; +} + +#----------------------------------------------------------- +# SetToolConfs: Set tool configuration files for discrete or +# continuous density HMMs +#----------------------------------------------------------- +sub SetToolConfs { + local($sysId); + + if($configParams{"hsKind"} =~ /^[dD]/){ + $sysId=VQ; + }else{ + $sysId=CD; + } + system("cp toolconfs/hinit${sysId}.conf toolconfs/hinit.conf"); + system("cp toolconfs/hrest${sysId}.conf toolconfs/hrest.conf"); + system("cp toolconfs/herest${sysId}.conf toolconfs/herest.conf"); + system("cp toolconfs/hsmooth${sysId}.conf toolconfs/hsmooth.conf"); + system("cp toolconfs/hvite${sysId}.conf toolconfs/hvite.conf"); + if($configParams{"direct_audio"} =~ /^[yY]/){ + system("cp toolconfs/hcopyDA.conf toolconfs/hcopy.conf"); + system("cp toolconfs/hviteDA.conf toolconfs/hvite.conf"); + }else{ + system("cp toolconfs/hcopyFB.conf toolconfs/hcopy.conf"); + } +} + + +#-------------------------------------------------------------------- +# ReadTCF: Reads the Test Config File and sets parameters accordingly +#-------------------------------------------------------------------- +sub ReadTCF { + +local($validData,$param,$val)=0; + +#open(CONFIG, "configs/$a"); #read tcf from STDIN +while(<>){ + if(/\/ || /\/){ + $validData=0; + } + if($validData){ + ($param,$val)=split(/ *: */, $_); + if ($param =~ /nMixes/){ + @mixes=split(/ +/, $_); + } + $val =~ tr/A-Z/a-z/; + chop($val); + $configParams{$param}=$val; + write; + } + if(/\/ || /\/){ + $validData=1; + } +} +format STDOUT_TOP = + Test Config File Read + ===================== +Parameter Value +----------------------- +. +format STDOUT= +@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<< +$param,$val +. +} +#------------------------------------------------------------------- +# TestDirEmpty: Tests if directory is empty and prompts user for the +# deletion of any files found +#------------------------------------------------------------------- +sub TestDirEmpty { + # Get arguments + local($dirName, $srcOrTgt, $tool) = @_; + local(@nFiles,$rtnVal); + + $rtnVal=1; + + opendir(DIR,$dirName) || die "Can't open $dirName\n"; + @nFiles = grep(!/^\./, readdir(DIR)); #Forget about . files + if($nFiles[0]){ + if($srcOrTgt eq "tgt"){ + print "\n$dirName not empty, overwrite using $tool Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + print "\nRemoving files from $dirName\n"; + $nFiles[0] = unlink(<$dirName/*>); + print "Removed $nFiles[0] files\n"; + $rtnVal=1; + }else{ + print "\nDirectory $dirName unaltered, skipping to next test\n"; + $rtnVal=0; + } + } + }else{ + if($srcOrTgt eq "src"){ + die "Source Directory Empty $dirName\n"; + } + } + $rtnVal; +} + +#------------------------------------------------------------------- +# SetMacroStr: Generate -H option string dependent on whether source +# directory contains a macro file +#------------------------------------------------------------------- +sub SetMacroStr { + # Get arguments + local($srcDir) = @_; + + if (-r $srcDir."/newMacros"){ + $macroStr = "-H ".$srcDir."/newMacros"; + }else{ + $macroStr = ""; + } +} + +#************************** HTK Tool Functions ******************************** + +#-------------------------------------------------- +# HHEd: Calls HHEd to perform editing on the HMMSet +#-------------------------------------------------- +sub HHEd { + # Get arguments + local($srcDir,$tgtDir,$hmmList,$hedFile) = @_; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HHEd - $hedFile"); + if (&TestDirEmpty($tgtDir,"tgt","HHEd - $hedFile")){ + system("$HHED $aOptStr -C $hhedConf -D -d $srcDir $macroStr -M $tgtDir $hedFile $hmmList"); + } +} + +#------------------------------------------------------------------------- +# HCopy: Calls HCopy to convert TIMIT data files to HTK parameterised ones +#------------------------------------------------------------------------- +sub HCopy { + local($tgtDir,$fileStubList)=@_; + + local($srcDir)="tidata"; + + &TestDirEmpty($srcDir,"src","HCopy"); + if (&TestDirEmpty($tgtDir,"tgt","HCopy")){ + open(FILESTUBLIST, $fileStubList); + while() { # read HMM name into $_ + chop($_); + system("$HCOPY $aOptStr -C $hcopyConf -D $srcDir/$_.adc $tgtDir/$_.mfc"); + } + } +} + +#------------------------------------------------------ +# HQuant: Calls HQuant to produce a 64 code VQ codebook +#------------------------------------------------------ +sub HQuant { + local($srcDir)="data/train"; + local($tgtDir)="codebooks"; + local($nOptStr,$tOptStr,$codebook,$lin); + + &TestDirEmpty($srcDir,"src","HQuant"); + if ($nS==1){ + $nOptStr="-s 1 -n 1 $mixes[1]"; + $codebook=$tgtDir."/C${mixes[1]}"; + }else{ + $nOptStr="-s 3 -n 1 $mixes[1] -n 2 $mixes[2] -n 3 $mixes[3]"; + $codebook=$tgtDir."/C${mixes[1]}_${mixes[2]}_${mixes[3]}"; + } + if($configParams{"VQ_clust"} =~ /^[tT]/){ + $tOptStr="-t"; $lin=0; + }else{ + $tOptStr=""; $lin=1; + } + chop($nOptStr); + chop($codebook); + $codebook=$codebook."cb"; + if (-f $codebook){ + print "$codebook already exists, overwrite using HQuant (Y/N)?:"; + chop($ans = ); + }else{ + $ans=Y; + } + if ($ans =~ /^[yY]/){ + print "\nConstructing a VQ codebook\n"; + if( $lin ){ + print "WARNING - Go and get a coffee, this will take some time\n"; + } + system("$HQUANT -d $aOptStr -C $hquantConf -D $nOptStr $tOptStr -T 1 $codebook $srcDir/tr*.mfc"); + } + system("echo copying $codebook codebooks/currentCodebook"); + system("cp $codebook codebooks/currentCodebook"); +} + +#--------------------------------------------------------------- +# HInit: Calls initialisation tool HInit for each HMM in hmmList +#--------------------------------------------------------------- +sub HInit { + # Get arguments + local($labDir,$protoName,$hmmList) = @_; + local($tgtDir)="hmms/hmm.0"; + local($srcDir)="proto"; + + system("echo \"\n\n$MAKEPROTO protoconfs/$protoName\""); + system("$MAKEPROTO protoconfs/$protoName"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HInit")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HInit for HMM ",$_,"\n"); + system("($HINIT $aOptStr -i 10 -L $labDir -l $_ -o $_ $macroStr -C $hinitConf -D -M $tgtDir -T 1 $srcDir/$_ $dataFiles)"); + } + close(HMMLIST); + } +} + +#----------------------------------------------------------------------- +# HRest: Calls isolated re-estimation tool HRest for each HMM in hmmList +#----------------------------------------------------------------------- +sub HRest { + # Get arguments + local($labDir,$hmmList) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms/hmm.0"; + $tgtDir="hmms/hmm.1"; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HRest"); + + if (&TestDirEmpty($tgtDir,"tgt","HRest")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HRest for HMM ",$_,"\n"); + system("($HREST $aOptStr -u tmvw -w 3 -v 0.05 -i 10 -L $labDir -l $_ -C $hrestConf $macroStr -D -M $tgtDir -T 1 $srcDir/$_ $dataFiles)"); + } + close(HMMLIST); + } +} + +#------------------------------------------------------------------------- +# HERest: Calls embedded re-estimation tool HERest on all HMMs in hmmList +# for the required number of iterations +#------------------------------------------------------------------------- +sub HERest { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i); + + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.2"; + $tmpDir="hmms/tmp"; + + &TestDirEmpty($srcDir,"src","HERest"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HERest")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("($HEREST $aOptStr -w 3 -v 0.05 -C $herestConf -u tmvw $cOptStr -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 $hmmList $dataFiles)"); + if ($numIters > 1){ + system("cp $tgtDir/* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + } + $i = unlink(<$tmpDir/*>); + print "Removed $i files from $tmpDir\n"; + } +} + + +#------------------------------------------------------------------ +# HVite: Calls Viterbi recognition tool HVite using HMMs in hmmList +# and test files in testSet and network +#------------------------------------------------------------------ +sub HVite { + # Get arguments + local($net,$labDir,$hmmVocab,$hmmList,$testSet) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms/hmm.2"; + $tgtDir="test"; + + &TestDirEmpty($srcDir,"src","HVite"); + + $dataFiles=$testSet; + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HVite")){ + system("($HVITE $aOptStr -C $hviteConf -d $srcDir -l test -w $net $macroStr -D -L $tgtDir -t 300.0 -T 1 $pOptStr -s 0.0 $hmmVocab $hmmList $dataFiles)"); + } + system("$HRESULTS $aOptStr -s -L $labDir $hmmList test/*.rec"); +} + +#-------------------------------------------------------------- +# HViteAudio: Calls Viterbi recognition tool HVite taking input +# directly from the machine audio +#-------------------------------------------------------------- +sub HViteAudio { + # Get arguments + local($hmmVocab,$hmmList,$net) = @_; + local($srcDir,$tgtDir,$conf,$carryOn); + + $srcDir="hmms/hmm.2"; + $tgtDir="test"; + $conf="toolconfs/hvite.conf"; + $carryOn=1; + + &TestDirEmpty($srcDir,"src","HVite"); + + $proc=`ps`; + if( $proc =~ /.*HVite.*/ ){ + die "ERROR: There is an HVite process running already\n"; + }else{ + print "*****************************************\n"; + print "* At the READY[x]> prompt *\n"; + print "* Press rtn to start/stop speaking *\n"; + print "* Press any key followed by rtn to exit *\n"; + print "*****************************************\n\n"; + system("($HVITE -A -T 1 -t 150.0 -g -n 3 5 -e -i outaudio -C $conf -d $srcDir -w $net -p -10.0 -s 5.0 $hmmVocab $hmmList)&"); + @ps=split(/HVite/, `ps`); + @pid=split(/ +/, $ps[0]); + + while ($carryOn) { + $ans = ; + if ($ans =~ /^\n/){ + kill 16, $pid[$#pid - 2]; + }else{ + kill 9, $pid[$#pid - 2]; + $carryOn=0; + } + } + } +} + + +#------------------------------------------------------------------------- +# HERestPar: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList hmmList for the required number of +# iterations +#------------------------------------------------------------------------- +sub HERestPar { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$accOrDataFiles,$parNum); + + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.2"; + $accDir="accs/hmm.2"; + $tmpDir="hmms/tmp"; + $parNum=1; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HERest - parallel"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HERest - parallel")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("($HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 $hmmList $accOrDataFiles)"); + $parNum=0; + $accOrDataFiles=$accDir."/HER1.acc"; + system("($HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 $hmmList $accOrDataFiles)"); + if ($numIters > 1){ + print "\n\n"; + system("echo \"cp $tgtDir/* $tmpDir\""); + system("cp $tgtDir/* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + $i = unlink(<$tmpDir/*>); + print "Removed $i files from $tmpDir\n"; + } +} + + + +#------------------------------------------------------------------------- +# HSmooth: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList followed by the deleted interpolation +# tool HSmooth +#------------------------------------------------------------------------- +sub HSmooth { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$j,$dataList,$dataListStub); + + $srcDir="hmms/hmm.1"; + $tgtDir="hmms/hmm.2"; + $accDir="accs/hmm.2"; + $tmpDir="hmms/tmp"; + $dataListStub="lists/dataList"; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HSmooth"); + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HSmooth")){ + $i=1; + while($i<=$numIters){ + $j=1; + while($j<=3){ + $dataList=$dataListStub.$j; + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("($HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $j -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 -S $dataList $hmmList)"); + $j++; + } + $parNum=0; + $accOrDataFiles=$accDir."/HER*.acc"; + system("($HSMOOTH $aOptStr -C $hsmoothConf -d $srcDir $macroStr -D -M $tgtDir -T 1 $hmmList $accOrDataFiles)"); + if ($numIters > 1){ + print "\n\n"; + system("echo \"cp $tgtDir/* $tmpDir\""); + system("cp $tgtDir/* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + $i = unlink(<$tmpDir/*>); + print "Removed $i files from $tmpDir\n"; + } +} + +#------------------------------------ +# HLEd: Invokes the label editor HLEd +#------------------------------------ +sub HLEd { + # Get arguments + local($srcFmt,$labDir,$hmmList,$ledFile,$labFiles) = @_; + + if (&TestDirEmpty($labDir,"tgt","HLEd")){ + system("$HLED $aOptStr $srcFmt -l $labDir -n $hmmList -D -T 1 $ledFile $labFiles"); + } +} + +#---------------------------------------------------------------------------- +# HList: Invokes HList to display the headers of all parameterised data files +# created for training together with the 1st 10 lines of the 1st file. +#---------------------------------------------------------------------------- +sub HList { + local($tr1fname)="data/train/tr1.mfc"; + + print (STDOUT "Display some of the data files\n"); + print (STDOUT "This demonstrates the use of HList\n"); + + unless(-r $tr1fname){ + die "Cannot read file $tr1fname\n"; + } + print (STDOUT"\n\nTraining data file headers\n"); + system("$HLIST $aOptStr -D -h -z data/train/tr*.mfc"); + print (STDOUT "\n\nFirst 10 frames of tr1.mfc (with deltas appended)\n"); + system("$HLIST -aOptStr -e 10 $tr1fname"); +} diff --git a/samples/HTKDemo/runDemo.pl b/samples/HTKDemo/runDemo.pl new file mode 100755 index 0000000..651643f --- /dev/null +++ b/samples/HTKDemo/runDemo.pl @@ -0,0 +1,829 @@ +#!/usr/local/bin/perl + +# Global Variables +$trDataFiles="train.scr"; # Parameterised training data files +$teDataFiles="test.scr"; # Parameterised test data files +$dataFiles=$trDataFiles; # Pointer to parameterised data files + +$HHED="HHEd"; +$HLED="HLEd"; +$HCOPY="HCopy"; +$HLIST="HList"; +$HINIT="HInit"; +$HREST="HRest"; +$HEREST="HERest"; +$HQUANT="HQuant"; +$HSMOOTH="HSmooth"; +$HRESULTS="HResults"; +$HVITE="HVite"; +$MAKEPROTO=".\\MakeProtoHMMSet"; + +$numIters=1; # Number of training iterations +$traceTools=0; # Display tool call tracing +$monLabDir="labels\\bcplabs\\mon"; # Dir for monophone label files +$triLabDir="labels\\bcplabs\\tri"; # Dir for triphone labels +$lbiLabDir="labels\\bcplabs\\lbi"; # Dir for left biphone labels +$rbiLabDir="labels\\bcplabs\\rbi"; # Dir for right biphone labels +$labDir=$monLabDir; # Pointer to relevant labels dir +$monEdFile="edfiles\\edlabs.led"; # HLEd ed file to produce labels +$triEdFile="edfiles\\edtlabs.led"; # HLED ed file for tri labels +$lbiEdFile="edfiles\\edllabs.led"; # HLED ed file for lbi labels +$rbiEdFile="edfiles\\edrlabs.led"; # HLED ed file for rbi labels +$edFile=$monEdFile; # Pointer to relevant ed file +$contDepPlainhs="edfiles\\contDepPlainhs.hed"; # HHEd ed file for PLAINHS tris +$triSharedhsM1="edfiles\\triSharedhsM1.hed"; # HHEd ed file for SHAREDHS tris +$lbiSharedhsM1="edfiles\\lbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS lbis +$rbiSharedhsM1="edfiles\\rbiSharedhsM1.hed"; # HHEd ed file for SHAREDHS rbis +$triTiedState="edfiles\\triTiedState.hed"; # HHEd ed file for tied state tris +$lbiTiedState="edfiles\\lbiTiedState.hed"; # HHEd ed file for tied state lbis +$rbiTiedState="edfiles\\rbiTiedState.hed"; # HHEd ed file for tied state rbis +$contDepTiedhsS1="edfiles\\contDepTiedhsS1.hed"; # HHEd ed file for TIEDHS S1 +$contDepTiedhsS3="edfiles\\contDepTiedhsS3.hed"; # HHEd ed file for TIEDHS S3 +$contDepTiedhs=""; # Pointer to HHEd ed file for TIEDHS +$hhedscript=""; # Pointer to HHEd ed file for TIEDHS tris +$monTiedhsS1="edfiles\\monTiedhsS1.hed"; # HHEd ed file for TIEDHS mons S1 +$monTiedhsS3="edfiles\\monTiedhsS3.hed"; # HHEd ed file for TIEDHS mons S3 +$monTiedhs=""; # Pointer to HHEd ed file for TIEDHS mons +$monSharedhsM1="edfiles\\monSharedhsM1.hed";# HHEd ed file for SHAREDHS mons M1 +$monSharedhsM2="edfiles\\monSharedhsM2.hed";# HHEd ed file for SHAREDHS mons M2 +$monHmmList="lists\\bcplist"; # List of monophones +$contDepHmmList="lists\\contDepList"; # List of +$hmmList=$monHmmList; # Pointer to relevant HMM list +$monHmmVocab="lists\\bcpvocab"; # Vocab file for monophones +$triHmmVocab="lists\\triVocab"; # Vocab file for triphones +$lbiHmmVocab="lists\\lbiVocab"; # Vocab file for left biphones +$rbiHmmVocab="lists\\rbiVocab"; # Vocab file for right biphones +$hmmVocab=$monHmmVocab; # Pointer to relevant HMM vocab +$srcFmt=""; # Source file format +$triConv=0; # Convert to triphones? +$configParams; # Global store of config parameters +$hrestConf="toolconfs\\hrest.conf"; # HRest conf file +$hinitConf="toolconfs\\hinit.conf"; # HInit conf file +$hcopyConf="toolconfs\\hcopy.conf"; # HCopy conf file +$hhedConf="toolconfs\\hhed.conf"; # HHEd conf file +$herestConf="toolconfs\\herest.conf"; # HERest conf file +$hsmoothConf="toolconfs\\hsmooth.conf"; # HSmooth conf file +$hviteConf="toolconfs\\hvite.conf"; # HVite conf file +$hquantConf="toolconfs\\hquant.conf"; # HQuant conf file +$macroStr=""; # String for tool -H option, either "-H file" or "" +$monNetwork="networks\\monLattice"; # Monophone network +$triNetwork="networks\\triLattice"; # Triphone network +$lbiNetwork="networks\\lbiLattice"; # Left biphone network +$rbiNetwork="networks\\rbiLattice"; # Right biphone network +$network=$monNetwork; # Pointer to recognition network +$cOptStr=""; +$pOptStr=""; +$aOptStr=""; +$contDep=""; + +#***************************** START MAIN *********************************** +$|=1; #Force buffer flush on STDOUT + +$NT_dir = `cd`; +$NT_dir =~ tr/a-z/A-Z/; +chomp($NT_dir); + +$dir_pos = index($NT_dir, "HTKDEMO"); +$get_dir = substr($NT_dir, $dir_pos, 7); + + +($get_dir =~ "HTKDEMO") || die "Must be in directory HTKDemo to run this script\n"; +($#ARGV == 0) || die "USAGE: runDemo DemoConfigFile\n"; + +&ReadTCF(); +$nS=$configParams{"nStreams"}; +$cK=$configParams{"covKind"}; + +&SetToolConfs(); + +$numIters=$configParams{"HERest_Iter"}; + +if($configParams{"Clean_up"} =~ /^[yY]/){ + &CleanUp(); +} + +if($configParams{"Trace_tool_calls"} =~ /^[yY]/){ + $aOptStr="-A"; +} + +#*********************** PRE TRAINING ************************ + +if($configParams{"HCopy"} =~ /^[yY]/){ + &HCopy("data\\train", "lists\\trainFileStubs"); + &HCopy("data\\test", "lists\\testFileStubs"); +} +if($configParams{"HList"} =~ /^[yY]/){ + &HList(); +} +if($configParams{"HQuant"} =~ /^[yY]/){ + &HQuant(); +} +if($nS==1){ + $contDepTiedhs = $contDepTiedhsS1; + $monTiedhs = $monTiedhsS1; +}else{ + $contDepTiedhs = $contDepTiedhsS3; + $monTiedhs = $monTiedhsS3; +} + +#*************************** TRAINING ************************ +if($configParams{"Context"} =~ /^[tTlLrR]/){ + print "Has the appropriate monophone system been generated Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + }else{ + $hmmList=$monHmmList; + &MkStdMonSys(); + } + if($configParams{"Context"} =~ /^[tT]/){ + $contDep="tri"; + $network=$triNetwork; + $hmmVocab=$triHmmVocab; + $labDir=$triLabDir; + $edFile=$triEdFile; + }elsif($configParams{"Context"} =~ /^[lL]/){ + $contDep="lbi"; + $network=$lbiNetwork; + $hmmVocab=$lbiHmmVocab; + $labDir=$lbiLabDir; + $edFile=$lbiEdFile; + }elsif($configParams{"Context"} =~ /^[rR]/){ + $contDep="rbi"; + $network=$rbiNetwork; + $hmmVocab=$rbiHmmVocab; + $labDir=$rbiLabDir; + $edFile=$rbiEdFile; + } + $hmmList=$contDepHmmList; + &MkContDepSys(); +}else{ + $network=$monNetwork; + $hmmList=$monHmmList; + $hmmVocab=$monHmmVocab; + &MkMonSys(); +} + +#*************************** TESTING ************************ +if($configParams{"hsKind"} =~ /^[pPsS]/){ + $pOptStr="-p 5.0"; +}else{ + $pOptStr="-p -1.0"; +} +if($configParams{"direct_audio"} =~ /^[yY]/){ + &HViteAudio($hmmVocab,$hmmList,$network); +}elsif($configParams{"HVite"} =~ /^[yY]/){ + print "\nTesting on the training set\n"; + $dataFiles=$trDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); + system("del /Q test\\*"); + print "\nTesting on the test set\n"; + $dataFiles=$teDataFiles; + &HVite($network,$labDir,$hmmVocab,$hmmList,$dataFiles); +} + +#******************************* END MAIN ********************************* + +#************************ Util Functions ********************************** + +#---------------------------------------------- +# MkContDepSys: make a context dependent system +#---------------------------------------------- +sub MkContDepSys { + local($i,$mmix)=0; + + unless($configParams{"covKind"} =~ /^[dD]/){ + die "Can't make context dependent from full covariance monophones\n"; + } + if ($configParams{"hsKind"} =~ /^[pPsS]/){ + for ($i=1; $i<=$nS; $i++){ + if ($mixes[$i] > 1){ + $mmix=1; + } + } + } + unless($mmix == 0){ + die "Can't make context dependent from multiple mixture monophones\n"; + } + print ("WARNING: Monophones should have no parameter sharing\n"); + $srcDir="hmms\\hmm.2"; + $tgtDir="hmms\\hmm.1"; + #$labFiles="$monLabDir\\*"; + $labFiles="monlabs.scr"; + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + system("del /Q hmms\\hmm.2\\*"); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + if($configParams{"TiedState"} =~ /^[yY]/){ + $hhedscript="${contDep}TiedState"; + &HHEd($srcDir,$tgtDir,$hmmList,$$hhedscript); + }else{ + $hhedscript="${contDep}SharedhsM1"; + &HHEd($srcDir,$tgtDir,$hmmList,$$hhedscript); + } + }elsif($configParams{"hsKind"} =~ /^[pPdD]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$monHmmList,$contDepPlainhs); + system("del /Q hmms\\hmm.2\\*"); + print "\nTraining the plain triphone system created\n"; + &HERest($numIters,$labDir,$hmmList); + &HHEd($srcDir,$tgtDir,$hmmList,$contDepTiedhs); + $cOptStr="-c 50.0"; + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + }elsif($configParams{"HSmooth"} =~ /^[yY]/){ + &HSmooth($numIters,$labDir,$hmmList); + } +} +sub AddMixNums { + local($i); + + for ($i=1; $i<=$nS; $i++){ + if($configParams{"hsKind"} =~ /^[tT]/){ + $protoName=$protoName."1"; + if( $i != $nS ){ + $protoName=$protoName."_"; + } + }else{ + $protoName=$protoName.$mixes[$i]; + if( $i == $nS ){ + chop( $protoName ); + }else{ + $protoName=$protoName."_"; + } + } + } +} + +#---------------------------------- +# MkMonSys: make a monophone system +#---------------------------------- +sub MkMonSys { + local($fromProto)=0; + + $protoName="proto_s${nS}_m"; + &AddMixNums(); + if($configParams{"hsKind"} =~ /^[dD]/){ + $protoName=$protoName."_vq.pcf"; + }else{ + $protoName=$protoName."_${cK}c.pcf"; + } +(-f "protoconfs\\$protoName")||die "Cannot find proto config file protoconfs\\$protoName\n"; + + #$labFiles="tidata\\*.phn"; + $labFiles="tidata.scr"; + $srcFmt="-G TIMIT"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + if($configParams{"HInit"} =~ /^[yY]/){ + &HInit($labDir,$protoName,$hmmList); + } + if($configParams{"HRest"} =~ /^[yY]/){ + &HRest($labDir,$hmmList); + } + if($configParams{"HERest"} =~ /^[yY]/){ + if($configParams{"HERest_par_mode"} =~ /^[yY]/){ + &HERestPar($numIters,$labDir,$hmmList); + }else{ + &HERest($numIters,$labDir,$hmmList); + } + } + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.0"; + if($configParams{"hsKind"} =~ /^[sS]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monSharedhsM1); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + }elsif($configParams{"hsKind"} =~ /^[tT]/){ + &HHEd($srcDir,$tgtDir,$hmmList,$monTiedhs); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); + } +} + +#---------------------------------------------- +# MkStdMonSys: make a standard monophone system +#---------------------------------------------- +sub MkStdMonSys { + #$labFiles="tidata\\*.phn"; + $labFiles="tidata.scr"; + $srcFmt="-G TIMIT"; + + $protoName="proto_s${nS}_m"; + if($configParams{"hsKind"} =~ /^[dD]/){ + &AddMixNums(); + $tmp=$protoName."_vq.pcf"; + $protoName = $tmp; + }else{ + $protoName="proto_s${nS}_m1_dc.pcf"; + } +(-f "protoconfs\\$protoName")||die "Cannot find proto config file protoconfs\\$protoName\n"; + + if($configParams{"HLEd"} =~ /^[yY]/){ + &HLEd($srcFmt,$labDir,$hmmList,$edFile,$labFiles); + } + + &CleanUp(); + + &HInit($monLabDir,$protoName,$hmmList); + &HRest($monLabDir,$hmmList); + &HERest($numIters,$labDir,$hmmList); +} + +#------------------------------------------ +# CleanUp: Clear model and file directories +#------------------------------------------ +sub CleanUp { + print "Cleaning up directories\n"; + system("del /Q hmms\\hmm.0\\*"); + system("del /Q hmms\\hmm.1\\*"); + system("del /Q hmms\\hmm.2\\*"); + system("del /Q hmms\\tmp\\*"); + system("del /Q test\\*"); + system("del /Q accs\\hmm.2\\*"); + system("del /Q proto\\*"); + print "Done cleaning\n"; +} + +#----------------------------------------------------------- +# SetToolConfs: Set tool configuration files for discrete or +# continuous density HMMs +#----------------------------------------------------------- +sub SetToolConfs { + local($sysId); + + if($configParams{"hsKind"} =~ /^[dD]/){ + $sysId=VQ; + }else{ + $sysId=CD; + } + system("copy toolconfs\\hinit${sysId}.conf toolconfs\\hinit.conf"); + system("copy toolconfs\\hrest${sysId}.conf toolconfs\\hrest.conf"); + system("copy toolconfs\\herest${sysId}.conf toolconfs\\herest.conf"); + system("copy toolconfs\\hsmooth${sysId}.conf toolconfs\\hsmooth.conf"); + system("copy toolconfs\\hvite${sysId}.conf toolconfs\\hvite.conf"); + if($configParams{"direct_audio"} =~ /^[yY]/){ + system("copy toolconfs\\hcopyDA.conf toolconfs\\hcopy.conf"); + system("copy toolconfs\\hviteDA.conf toolconfs\\hvite.conf"); + }else{ + system("copy toolconfs\\hcopyFB.conf toolconfs\\hcopy.conf"); + } +} + + +#-------------------------------------------------------------------- +# ReadTCF: Reads the Test Config File and sets parameters accordingly +#-------------------------------------------------------------------- +sub ReadTCF { + +local($validData,$param,$val)=0; + +open(CONFIG, "configs/$a"); #read tcf from STDIN + +while(<>){ + if(/\/ || /\/){ + $validData=0; + } + if($validData){ + ($param,$val)=split(/ *: */, $_); + if ($param =~ /nMixes/){ + @mixes=split(/ +/, $_); + } + $val =~ tr\A-Z\a-z\; + chop($val); + $configParams{$param}=$val; + write; + } + if(/\/ || /\/){ + $validData=1; + } +} +format STDOUT_TOP = + Test Config File Read + ===================== +Parameter Value +----------------------- +. +format STDOUT= +@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<< +$param,$val +. + +} +#------------------------------------------------------------------- +# TestDirEmpty: Tests if directory is empty and prompts user for the +# deletion of any files found +#------------------------------------------------------------------- +sub TestDirEmpty { + # Get arguments + local($dirName, $srcOrTgt, $tool) = @_; + local(@nFiles,$rtnVal); + + $rtnVal=1; + opendir(DIR,$dirName) || die "Can't open $dirName\n"; + @nFiles = grep(!/^\./, readdir(DIR)); #Forget about . files + if($nFiles[0]){ + if($srcOrTgt eq "tgt"){ + print "\n$dirName not empty, overwrite using $tool Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + print "\nRemoving files from $dirName\n"; + system("del /Q $dirName\\*"); + $rtnVal=1; + }else{ + print "\nDirectory $dirName unaltered, skipping to next test\n"; + $rtnVal=0; + } + } + }else{ + if($srcOrTgt eq "src"){ + die "Source Directory Empty $dirName\n"; + } + } + $rtnVal; +} + +#------------------------------------------------------------------- +# SetMacroStr: Generate -H option string dependent on whether source +# directory contains a macro file +#------------------------------------------------------------------- +sub SetMacroStr { + # Get arguments + local($srcDir) = @_; + + if (-r $srcDir."\\newMacros"){ + $macroStr = "-H ".$srcDir."\\newMacros"; + }else{ + $macroStr = ""; + } +} + +#************************** HTK Tool Functions ******************************** + +#-------------------------------------------------- +# HHEd: Calls HHEd to perform editing on the HMMSet +#-------------------------------------------------- +sub HHEd { + # Get arguments + local($srcDir,$tgtDir,$hmmList,$hedFile) = @_; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HHEd - $hedFile"); + if (&TestDirEmpty($tgtDir,"tgt","HHEd - $hedFile")){ + system("$HHED $aOptStr -C $hhedConf -D -d $srcDir $macroStr -M $tgtDir $hedFile $hmmList"); + } +} + +#------------------------------------------------------------------------- +# HCopy: Calls HCopy to convert TIMIT data files to HTK parameterised ones +#------------------------------------------------------------------------- +sub HCopy { + local($tgtDir,$fileStubList)=@_; + + local($srcDir)="tidata"; + + &TestDirEmpty($srcDir,"src","HCopy"); + if (&TestDirEmpty($tgtDir,"tgt","HCopy")){ + open(FILESTUBLIST, $fileStubList); + while() { # read HMM name into $_ + chop($_); + system("$HCOPY $aOptStr -C $hcopyConf -D $srcDir\\$_.adc $tgtDir\\$_.mfc"); + } + } +} + +#------------------------------------------------------ +# HQuant: Calls HQuant to produce a 64 code VQ codebook +#------------------------------------------------------ +sub HQuant { + local($srcDir)="data\\train"; + local($tgtDir)="codebooks"; + local($nOptStr,$tOptStr,$codebook,$lin); + + &TestDirEmpty($srcDir,"src","HQuant"); + if ($nS==1){ + $nOptStr="-s 1 -n 1 $mixes[1]"; + $codebook=$tgtDir."\\C${mixes[1]}"; + }else{ + $nOptStr="-s 3 -n 1 $mixes[1] -n 2 $mixes[2] -n 3 $mixes[3]"; + $codebook=$tgtDir."\\C${mixes[1]}_${mixes[2]}_${mixes[3]}"; + } + if($configParams{"VQ_clust"} =~ /^[tT]/){ + $tOptStr="-t"; $lin=0; + }else{ + $tOptStr=""; $lin=1; + } + chop($nOptStr); + chop($codebook); + $codebook=$codebook."cb"; + if (-f $codebook){ + print "$codebook already exists, overwrite using HQuant (Y/N)?:"; + chop($ans = ); + }else{ + $ans=Y; + } + if ($ans =~ /^[yY]/){ + print "\nConstructing a VQ codebook\n"; + if( $lin ){ + print "WARNING - Go and get a coffee, this will take some time\n"; + } + #system("$HQUANT -d $aOptStr -C $hquantConf -D $nOptStr $tOptStr -T 1 -S $codebook $srcDir\\tr*.mfc"); + system("$HQUANT -d $aOptStr -C $hquantConf -D $nOptStr $tOptStr -T 1 -S $trDataFiles $codebook"); + } + system("echo copying $codebook codebooks\\currentCodebook"); + system("copy $codebook codebooks\\currentCodebook"); +} + +#--------------------------------------------------------------- +# HInit: Calls initialisation tool HInit for each HMM in hmmList +#--------------------------------------------------------------- +sub HInit { + # Get arguments + local($labDir,$protoName,$hmmList) = @_; + local($tgtDir)="hmms\\hmm.0"; + local($srcDir)="proto"; + + system("echo \"\n\nperl $MAKEPROTO protoconfs\\$protoName\""); + system("perl $MAKEPROTO protoconfs\\$protoName"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HInit")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HInit for HMM ",$_,"\n"); + #system("($HINIT $aOptStr -i 10 -L $labDir -l $_ -o $_ $macroStr -C $hinitConf -D -M $tgtDir -T 1 -S $dataFiles $srcDir\$_)"); + system("$HINIT $aOptStr -i 10 -L $labDir -l $_ -o $_ $macroStr -C $hinitConf -D -M $tgtDir -T 1 -S $dataFiles $srcDir/$_"); + } + close(HMMLIST); + } +} + +#----------------------------------------------------------------------- +# HRest: Calls isolated re-estimation tool HRest for each HMM in hmmList +#----------------------------------------------------------------------- +sub HRest { + # Get arguments + local($labDir,$hmmList) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms\\hmm.0"; + $tgtDir="hmms\\hmm.1"; + + &SetMacroStr($srcDir); + + &TestDirEmpty($srcDir,"src","HRest"); + + if (&TestDirEmpty($tgtDir,"tgt","HRest")){ + open(HMMLIST, $hmmList); + while() { # read HMM name into $_ + chop($_); + print(STDOUT "\n\nCalling HRest for HMM ",$_,"\n"); + system("($HREST $aOptStr -u tmvw -w 3 -v 0.05 -i 10 -L $labDir -l $_ -C $hrestConf $macroStr -D -M $tgtDir -T 1 -S $dataFiles $srcDir\\$_)"); + } + close(HMMLIST); + } +} + +#------------------------------------------------------------------------- +# HERest: Calls embedded re-estimation tool HERest on all HMMs in hmmList +# for the required number of iterations +#------------------------------------------------------------------------- +sub HERest { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i); + + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.2"; + $tmpDir="hmms\\tmp"; + + &TestDirEmpty($srcDir,"src","HERest"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($tgtDir,"tgt","HERest")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("$HEREST $aOptStr -w 3 -v 0.05 -C $herestConf -u tmvw $cOptStr -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 -S $dataFiles $hmmList"); + if ($numIters > 1){ + system("copy $tgtDir\\* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + } + system("del /Q $tmpDir\\*"); + } +} + + +#------------------------------------------------------------------ +# HVite: Calls Viterbi recognition tool HVite using HMMs in hmmList +# and test files in testSet and network +#------------------------------------------------------------------ +sub HVite { + # Get arguments + local($net,$labDir,$hmmVocab,$hmmList,$testSet) = @_; + local($srcDir,$tgtDir); + + $srcDir="hmms\\hmm.2"; + $tgtDir="test"; + + &TestDirEmpty($srcDir,"src","HVite"); + + $dataFiles=$testSet; + + &SetMacroStr($srcDir); + + if (-e "recout.mlf"){ + system("del /Q recout.mlf"); + } + + + if (&TestDirEmpty($tgtDir,"tgt","HVite")){ + system("$HVITE $aOptStr -C $hviteConf -d $srcDir -l test -i recout.mlf -w $net $macroStr -D -L $tgtDir -t 300.0 -T 1 $pOptStr -s 0.0 -S $dataFiles $hmmVocab $hmmList"); + } + #system("$HRESULTS $aOptStr -s -L $labDir $hmmList test\\*.rec"); + system("$HRESULTS $aOptStr -s -L $labDir $hmmList recout.mlf"); +} + +#-------------------------------------------------------------- +# HViteAudio: Calls Viterbi recognition tool HVite taking input +# directly from the machine audio +#-------------------------------------------------------------- +sub HViteAudio { + # Get arguments + local($hmmVocab,$hmmList,$net) = @_; + local($srcDir,$tgtDir,$conf,$carryOn); + + $srcDir="hmms\\hmm.2"; + $tgtDir="test"; + $conf="toolconfs\\hvite.conf"; + $carryOn=1; + + &TestDirEmpty($srcDir,"src","HVite"); + + if( `ps | grep HVite` ){ + die "ERROR: There is an HVite process running already\n"; + }else{ + print "*****************************************\n"; + print "* At the READY[x]> prompt *\n"; + print "* Press rtn to start\stop speaking *\n"; + print "* Press any key followed by rtn to exit *\n"; + print "*****************************************\n\n"; + system("($HVITE -A -T 1 -t 150.0 -g -n 3 5 -e -i outaudio -C $conf -d $srcDir -w $net -p -10.0 -s 5.0 $hmmVocab $hmmList)&"); + @pid=split(/ +/, `ps | grep HVite`); + + while ($carryOn) { + $ans = ; + if ($ans =~ /^\n/){ + kill 16, $pid[1]; + }else{ + kill 9, $pid[1]; + $carryOn=0; + } + } + } +} + + +#------------------------------------------------------------------------- +# HERestPar: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList hmmList for the required number of +# iterations +#------------------------------------------------------------------------- +sub HERestPar { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$accOrDataFiles,$parNum); + + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.2"; + $accDir="accs\\hmm.2"; + $tmpDir="hmms\\tmp"; + $parNum=1; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HERest - parallel"); + + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HERest - parallel")){ + $i=1; + while($i<=$numIters){ + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("$HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 -S $accOrDataFiles $hmmList"); + $parNum=0; + $accOrDataFiles=$accDir."\\HER1.acc"; + system("$HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $parNum -d $srcDir $macroStr -D -M $tgtDir -L $labDir -t 2000.0 -T 1 $hmmList $accOrDataFiles "); + if ($numIters > 1){ + print "\n\n"; + system("echo \"copy $tgtDir\\* $tmpDir\""); + system("copy $tgtDir\\* $tmpDir\\"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + system("del /Q $tmpDir\\*"); + } +} + + + +#------------------------------------------------------------------------- +# HSmooth: Calls embedded re-estimation tool HERest in parallel mode on +# all HMMs in hmmList followed by the deleted interpolation +# tool HSmooth +#------------------------------------------------------------------------- +sub HSmooth { + # Get arguments + local($numIters,$labDir,$hmmList) = @_; + local($srcDir,$tgtDir,$tmpDir,$i,$j,$dataList,$dataListStub); + + $srcDir="hmms\\hmm.1"; + $tgtDir="hmms\\hmm.2"; + $accDir="accs\\hmm.2"; + $tmpDir="hmms\\tmp"; + $dataListStub="lists\\dataList"; + + $accOrDataFiles=$dataFiles; + + &TestDirEmpty($srcDir,"src","HSmooth"); + &SetMacroStr($srcDir); + + if (&TestDirEmpty($accDir,"tgt","HSmooth")){ + $i=1; + while($i<=$numIters){ + $j=1; + while($j<=3){ + $dataList=$dataListStub.$j; + print (STDOUT "\n\nIteration ",$i," of Embedded Re-estimation\n"); + system("$HEREST $aOptStr -C $herestConf -w 3 -v 0.05 -p $j -d $srcDir $macroStr -D -M $accDir -L $labDir -t 2000.0 -T 1 -S $dataList $hmmList"); + $j++; + } + $parNum=0; + $accOrDataFiles="accs.scr"; + system("$HSMOOTH $aOptStr -C $hsmoothConf -d $srcDir $macroStr -D -M $tgtDir -T 1 -S accs.scr $hmmList"); + if ($numIters > 1){ + print "\n\n"; + system("echo \"copy $tgtDir\\* $tmpDir\""); + system("copy $tgtDir\\* $tmpDir"); + $srcDir=$tmpDir; + &SetMacroStr($srcDir); + } + $i++; + $parNum=1; + $accOrDataFiles=$dataFiles; + } + system("del /Q $tmpDir\\*"); + } +} + +#------------------------------------ +# HLEd: Invokes the label editor HLEd +#------------------------------------ +sub HLEd { + # Get arguments + local($srcFmt,$labDir,$hmmList,$ledFile,$labFiles) = @_; + + if (&TestDirEmpty($labDir,"tgt","HLEd")){ + system("$HLED $aOptStr $srcFmt -l $labDir -n $hmmList -D -T 1 -S $labFiles $ledFile"); + } +} + +#---------------------------------------------------------------------------- +# HList: Invokes HList to display the headers of all parameterised data files +# created for training together with the 1st 10 lines of the 1st file. +#---------------------------------------------------------------------------- +sub HList { + local($tr1fname)="data\\train\\tr1.mfc"; + + print (STDOUT "Display some of the data files\n"); + print (STDOUT "This demonstrates the use of HList\n"); + + unless(-r $tr1fname){ + die "Cannot read file $tr1fname\n"; + } + print (STDOUT"\n\nTraining data file headers\n"); + system("$HLIST $aOptStr -D -h -z -S $trDataFiles"); + print (STDOUT "\n\nFirst 10 frames of tr1.mfc (with deltas appended)\n"); + system("$HLIST -aOptStr -e 10 $tr1fname"); +} diff --git a/samples/HTKDemo/test.scr b/samples/HTKDemo/test.scr new file mode 100755 index 0000000..7d160b8 --- /dev/null +++ b/samples/HTKDemo/test.scr @@ -0,0 +1,3 @@ +data\test\te1.mfc +data\test\te2.mfc +data\test\te3.mfc diff --git a/samples/HTKDemo/tidata.scr b/samples/HTKDemo/tidata.scr new file mode 100755 index 0000000..4ff728b --- /dev/null +++ b/samples/HTKDemo/tidata.scr @@ -0,0 +1,10 @@ +tidata\te1.phn +tidata\te2.phn +tidata\te3.phn +tidata\tr1.phn +tidata\tr2.phn +tidata\tr3.phn +tidata\tr4.phn +tidata\tr5.phn +tidata\tr6.phn +tidata\tr7.phn diff --git a/samples/HTKDemo/tidata/te1.adc b/samples/HTKDemo/tidata/te1.adc new file mode 100755 index 0000000..cfddb77 Binary files /dev/null and b/samples/HTKDemo/tidata/te1.adc differ diff --git a/samples/HTKDemo/tidata/te1.phn b/samples/HTKDemo/tidata/te1.phn new file mode 100755 index 0000000..1c93c41 --- /dev/null +++ b/samples/HTKDemo/tidata/te1.phn @@ -0,0 +1,36 @@ +0 2214 h# +2214 2760 d +2760 4133 ow +4133 4808 n +4808 5710 q +5710 7270 ae +7270 8272 s +8272 9018 epi +9018 9254 m +9254 10110 iy +10110 10351 tcl +10351 10680 t +10680 11139 ix +11139 11990 kcl +11990 13240 k +13240 14621 eh +14621 15629 r +15629 16167 iy +16167 16627 ix +16627 17104 n +17104 18590 q +18590 20840 oy +20840 21400 l +21400 22722 iy +22722 24063 r +24063 26736 ae +26736 27405 gcl +27405 28031 g +28031 28950 l +28950 30200 ay +30200 31080 kcl +31080 31800 k +31800 32920 dh +32920 35880 ae +35880 37780 q +37780 39680 h# diff --git a/samples/HTKDemo/tidata/te2.adc b/samples/HTKDemo/tidata/te2.adc new file mode 100755 index 0000000..dc9e0f6 Binary files /dev/null and b/samples/HTKDemo/tidata/te2.adc differ diff --git a/samples/HTKDemo/tidata/te2.phn b/samples/HTKDemo/tidata/te2.phn new file mode 100755 index 0000000..81ff55b --- /dev/null +++ b/samples/HTKDemo/tidata/te2.phn @@ -0,0 +1,40 @@ +0 2241 h# +2241 2715 w +2715 4360 ow +4360 5478 bcl +5478 5643 b +5643 6360 iy +6360 7269 tcl +7269 8313 t +8313 11400 ay +11400 12950 dcl +12950 14360 dh +14360 14822 iy +14822 15290 ix +15290 15624 n +15624 16029 tcl +16029 16472 t +16472 16794 ix +16794 18507 v +18507 19175 y +19175 21264 uw +21264 24040 iy +24040 25485 pau +25485 26455 hh +26455 27178 ix +27178 28676 f +28676 29243 hh +29243 30580 iy +30580 32334 ae +32334 32961 n +32961 34208 s +34208 34808 ix +34808 35230 dcl +35230 35623 d +35623 36512 v +36512 38680 ey +38680 39370 gcl +39370 40277 g +40277 40982 l +40982 42489 iy +42489 44720 h# diff --git a/samples/HTKDemo/tidata/te3.adc b/samples/HTKDemo/tidata/te3.adc new file mode 100755 index 0000000..5a47472 Binary files /dev/null and b/samples/HTKDemo/tidata/te3.adc differ diff --git a/samples/HTKDemo/tidata/te3.phn b/samples/HTKDemo/tidata/te3.phn new file mode 100755 index 0000000..833f0d1 --- /dev/null +++ b/samples/HTKDemo/tidata/te3.phn @@ -0,0 +1,60 @@ +0 2143 h# +2143 2920 p +2920 5138 aa +5138 5877 z +5877 6392 t +6392 7394 ax-h +7394 8840 v +8840 9240 r +9240 10040 iy +10040 11320 z +11320 12073 ah +12073 13410 l +13410 14078 tcl +14078 16334 s +16334 16893 tcl +16893 17337 t +17337 19000 aa +19000 20554 r +20554 21974 tcl +21974 23269 pau +23269 23603 w +23603 24104 ax +24104 24439 nx +24439 25003 ix +25003 25338 tcl +25338 25483 t +25483 26448 gcl +26448 27029 g +27029 28760 ow +28760 29780 z +29780 30496 tcl +30496 31720 t +31720 32836 ao +32836 33838 axr +33838 34100 dcl +34100 35440 z +35440 36040 dh +36040 36600 ix +36600 38440 hh +38440 41608 ae +41608 43024 n +43024 43749 jh +43749 44779 ih +44779 46533 y +46533 48760 ux +48760 50040 z +50040 50440 tcl +50440 51396 t +51396 51720 ix +51720 52896 m +52896 54161 ey +54161 54480 kcl +54480 56040 k +56040 56280 y +56280 56760 er +56760 58382 m +58382 61080 aa +61080 63240 kcl +63240 64200 k +64200 67120 h# diff --git a/samples/HTKDemo/tidata/tr1.adc b/samples/HTKDemo/tidata/tr1.adc new file mode 100755 index 0000000..4f7e045 Binary files /dev/null and b/samples/HTKDemo/tidata/tr1.adc differ diff --git a/samples/HTKDemo/tidata/tr1.phn b/samples/HTKDemo/tidata/tr1.phn new file mode 100755 index 0000000..3522c06 --- /dev/null +++ b/samples/HTKDemo/tidata/tr1.phn @@ -0,0 +1,38 @@ +0 2256 h# +2256 4146 sh +4146 4804 iy +4804 5807 hv +5807 7256 ae +7256 7979 dcl +7979 8689 jh +8689 9240 ax-h +9240 9901 dcl +9901 10440 d +10440 12282 aa +12282 12932 r +12932 13577 kcl +13577 14160 k +14160 17960 s +17960 20345 uw +20345 23080 tcl +23080 23770 ax-h +23770 24272 n +24272 25149 gcl +25149 26348 g +26348 26903 r +26903 27847 iy +27847 29285 s +29285 29869 ix +29869 31916 w +31916 33796 aa +33796 35843 sh +35843 36637 w +36637 37944 ao +37944 38433 dx +38433 40021 axr +40021 41316 ao +41316 42402 l +42402 43488 y +43488 44628 ih +44628 46552 axr +46552 48720 h# diff --git a/samples/HTKDemo/tidata/tr2.adc b/samples/HTKDemo/tidata/tr2.adc new file mode 100755 index 0000000..1cbb8d5 Binary files /dev/null and b/samples/HTKDemo/tidata/tr2.adc differ diff --git a/samples/HTKDemo/tidata/tr2.phn b/samples/HTKDemo/tidata/tr2.phn new file mode 100755 index 0000000..902e831 --- /dev/null +++ b/samples/HTKDemo/tidata/tr2.phn @@ -0,0 +1,45 @@ +0 2280 h# +2280 2893 w +2893 4799 ay +4799 5865 ng +5865 6164 gcl +6164 7160 g +7160 7570 l +7570 10120 ae +10120 11864 s +11864 12751 hh +12751 14914 iy +14914 15960 l +15960 17720 z +17720 19651 pau +19651 20500 ah +20500 20930 tcl +20930 21523 t +21523 22040 ax-h +22040 22650 bcl +22650 22871 b +22871 23770 iy +23770 25775 f +25775 28244 aw +28244 28930 n +28930 29057 d +29057 29780 ih +29780 30845 n +30845 31240 bcl +31240 31606 b +31606 33465 ow +33465 35225 th +35225 37431 hh +37431 41572 ay +41572 43685 pau +43685 44810 ix +44810 45697 n +45697 48211 s +48211 48713 eh +48713 49700 m +49700 51637 ay +51637 53000 hh +53000 55187 ay +55187 56984 tcl +56984 59031 s +59031 61280 h# diff --git a/samples/HTKDemo/tidata/tr3.adc b/samples/HTKDemo/tidata/tr3.adc new file mode 100755 index 0000000..afe46fa Binary files /dev/null and b/samples/HTKDemo/tidata/tr3.adc differ diff --git a/samples/HTKDemo/tidata/tr3.phn b/samples/HTKDemo/tidata/tr3.phn new file mode 100755 index 0000000..6256aa7 --- /dev/null +++ b/samples/HTKDemo/tidata/tr3.phn @@ -0,0 +1,38 @@ +0 2306 h# +2306 2600 dh +2600 3267 ax-h +3267 3807 kcl +3807 5240 k +5240 5891 aa +5891 6520 r +6520 7482 tcl +7482 8680 t +8680 9560 uw +9560 10136 n +10136 12280 f +12280 13283 iy +13283 13794 tcl +13794 14600 ch +14600 15480 ix +15480 16664 z +16664 17930 q +17930 18760 ih +18760 19986 m +19986 21528 ah +21528 22767 s +22767 23502 kcl +23502 24097 k +24097 25115 r +25115 27319 ae +27319 29253 tcl +29253 29585 ax +29585 29961 nx +29961 30730 ax +30730 31842 tcl +31842 33080 t +33080 35080 ae +35080 36600 dcl +36600 37480 p +37480 39453 ow +39453 40440 l +40440 42880 h# diff --git a/samples/HTKDemo/tidata/tr4.adc b/samples/HTKDemo/tidata/tr4.adc new file mode 100755 index 0000000..04f7a8c Binary files /dev/null and b/samples/HTKDemo/tidata/tr4.adc differ diff --git a/samples/HTKDemo/tidata/tr4.phn b/samples/HTKDemo/tidata/tr4.phn new file mode 100755 index 0000000..b7503ad --- /dev/null +++ b/samples/HTKDemo/tidata/tr4.phn @@ -0,0 +1,31 @@ +0 2097 h# +2097 3768 iy +3768 4812 v +4812 5273 ih +5273 5922 n +5922 6727 q +6727 9909 ay +9909 11199 ow +11199 12157 kcl +12157 13480 k +13480 14920 ey +14920 16360 zh +16360 17053 l +17053 17880 ix +17880 18807 gcl +18807 19400 g +19400 20360 eh +20360 21389 tcl +21389 21654 t +21654 22599 dh +22599 23611 em +23611 24773 ah +24773 25920 n +25920 26154 d +26154 27319 ey +27319 28649 bcl +28649 28961 b +28961 29585 l +29585 33170 uw +33170 35517 z +35517 38800 h# diff --git a/samples/HTKDemo/tidata/tr5.adc b/samples/HTKDemo/tidata/tr5.adc new file mode 100755 index 0000000..2187b47 Binary files /dev/null and b/samples/HTKDemo/tidata/tr5.adc differ diff --git a/samples/HTKDemo/tidata/tr5.phn b/samples/HTKDemo/tidata/tr5.phn new file mode 100755 index 0000000..00142c4 --- /dev/null +++ b/samples/HTKDemo/tidata/tr5.phn @@ -0,0 +1,23 @@ +0 2264 h# +2264 3559 ao +3559 4040 l +4040 4687 dh +4687 5641 ow +5641 7200 q +7200 8590 ao +8590 9033 l +9033 9867 w +9867 11000 ey +11000 12224 z +12224 12840 ax +12840 13919 l +13919 17084 ow +17084 18541 n +18541 19935 w +19935 20600 iy +20600 22734 s +22734 23194 ax +23194 24614 v +24614 28920 ay +28920 31320 v +31320 34480 h# diff --git a/samples/HTKDemo/tidata/tr6.adc b/samples/HTKDemo/tidata/tr6.adc new file mode 100755 index 0000000..92aa136 Binary files /dev/null and b/samples/HTKDemo/tidata/tr6.adc differ diff --git a/samples/HTKDemo/tidata/tr6.phn b/samples/HTKDemo/tidata/tr6.phn new file mode 100755 index 0000000..8ce2684 --- /dev/null +++ b/samples/HTKDemo/tidata/tr6.phn @@ -0,0 +1,26 @@ +0 2120 h# +2120 4360 sh +4360 4840 ix +4840 5569 dcl +5569 6878 jh +6878 7611 axr +7611 10440 ae +10440 11162 s +11162 12411 bcl +12411 12613 b +12613 13052 ix +13052 13786 kcl +13786 15320 k +15320 16259 eh +16259 17470 pcl +17470 18285 t +18285 19283 en +19283 21198 s +21198 21850 epi +21850 22581 m +22581 24322 ao +24322 25240 l +25240 26520 z +26520 29080 uw +29080 31340 z +31340 34160 h# diff --git a/samples/HTKDemo/tidata/tr7.adc b/samples/HTKDemo/tidata/tr7.adc new file mode 100755 index 0000000..9eb6c26 Binary files /dev/null and b/samples/HTKDemo/tidata/tr7.adc differ diff --git a/samples/HTKDemo/tidata/tr7.phn b/samples/HTKDemo/tidata/tr7.phn new file mode 100755 index 0000000..3d69e9d --- /dev/null +++ b/samples/HTKDemo/tidata/tr7.phn @@ -0,0 +1,22 @@ +0 2222 h# +2222 3400 p +3400 3907 l +3907 4920 iy +4920 7315 sh +7315 9140 ao +9140 9825 q +9825 11758 en +11758 12165 dh +12165 12520 ix +12520 14668 s +14668 15590 kcl +15590 16120 k +16120 17922 er +17922 18320 tcl +18320 20520 f +20520 21080 ix +21080 21648 dcl +21648 22920 jh +22920 25717 oy +25717 29034 s +29034 31360 h# diff --git a/samples/HTKDemo/toolconfs/config.audio b/samples/HTKDemo/toolconfs/config.audio new file mode 100755 index 0000000..a933f98 --- /dev/null +++ b/samples/HTKDemo/toolconfs/config.audio @@ -0,0 +1,47 @@ + SOURCEKIND = HAUDIO + SOURCEFORMAT = HTK + SOURCERATE = 625 + + TARGETKIND = MFCC_E_D + TARGETFORMAT = HTK + TARGETRATE = 100000 + + SAVECOMPRESSED = TRUE + SAVEWITHCRC = TRUE + + ZMEANSOURCE = TRUE + WINDOWSIZE = 250000.0 + USEHAMMING = TRUE + PREEMCOEF = 0.97 + +#USEPOWER = FALSE + NUMCHANS = 24 +#LOFREQ = -1.0 +#HIFREQ = -1.0 + +#LPCORDER = 12 + +#CEPLIFTER = 22 + NUMCEPS = 12 + + RAWENERGY = TRUE + ENORMALISE = FALSE +#ESCALE = 1.0 +#SILFLOOR = 50.0 + +#DELTAWINDOW = 2 +#ACCWINDOW = 2 + + USESILDET = FALSE +#SPEECHTHRESH = 0.0 +#SILTHRESH = 0.0 + MEASURESIL = FALSE + +#OUTSILWARN = TRUE +#SILMEAN = 0.0 +#SILSTD = 0.0 + AUDIOSIG = 16 +#VQTABLE = "" + + ALLOWCXTEXP = FALSE + ALLOWXWRDEXP = FALSE \ No newline at end of file diff --git a/samples/HTKDemo/toolconfs/hcopy.conf b/samples/HTKDemo/toolconfs/hcopy.conf new file mode 100755 index 0000000..c690934 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hcopy.conf @@ -0,0 +1,45 @@ + SOURCEKIND = WAVEFORM + SOURCEFORMAT = TIMIT + SOURCERATE = 625 + ZMEANSOURCE = FALSE + + TARGETKIND = MFCC_E +#TARGETFORMAT = HTK + TARGETRATE = 100000 + +#SAVECOMPRESSED = TRUE + SAVEWITHCRC = FALSE + + WINDOWSIZE = 250000.0 +#USEHAMMING = TRUE +#PREEMCOEF = 0.97 + +#USEPOWER = FALSE + NUMCHANS = 24 +#LOFREQ = -1.0 +#HIFREQ = -1.0 + +#LPCORDER = 12 + +#CEPLIFTER = 22 +#NUMCEPS = 12 + +#RAWENERGY = TRUE + ENORMALISE = TRUE +#ESCALE = 1.0 +#SILFLOOR = 50.0 + +#DELTAWINDOW = 2 +#ACCWINDOW = 2 + +#USESILDET = TRUE +#SPEECHTHRESH = 0.0 +#SILTHRESH = 0.0 +#MEASURESIL = TRUE + +#OUTSILWARN = TRUE +#SILMEAN = 0.0 +#SILSTD = 0.0 +#AUDIOSIG = 0 +#VQTABLE = "" + diff --git a/samples/HTKDemo/toolconfs/hcopyDA.conf b/samples/HTKDemo/toolconfs/hcopyDA.conf new file mode 100755 index 0000000..2eac1e6 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hcopyDA.conf @@ -0,0 +1,44 @@ + SOURCEKIND = WAVEFORM + SOURCEFORMAT = TIMIT + SOURCERATE = 625 + + TARGETKIND = MFCC_E + TARGETFORMAT = HTK + TARGETRATE = 100000 + +#SAVECOMPRESSED = TRUE + SAVEWITHCRC = TRUE + + ZMEANSOURCE = TRUE + WINDOWSIZE = 250000.0 + USEHAMMING = TRUE + PREEMCOEF = 0.97 + +#USEPOWER = FALSE + NUMCHANS = 24 +#LOFREQ = -1.0 +#HIFREQ = -1.0 + +#LPCORDER = 12 + +#CEPLIFTER = 22 + NUMCEPS = 12 + + RAWENERGY = TRUE + ENORMALISE = FALSE +#ESCALE = 1.0 +#SILFLOOR = 50.0 + +#DELTAWINDOW = 2 +#ACCWINDOW = 2 + + USESILDET = FALSE +#SPEECHTHRESH = 0.0 +#SILTHRESH = 0.0 + MEASURESIL = FALSE + +#OUTSILWARN = TRUE +#SILMEAN = 0.0 +#SILSTD = 0.0 +#AUDIOSIG = 16 +#VQTABLE = "" diff --git a/samples/HTKDemo/toolconfs/hcopyFB.conf b/samples/HTKDemo/toolconfs/hcopyFB.conf new file mode 100755 index 0000000..c690934 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hcopyFB.conf @@ -0,0 +1,45 @@ + SOURCEKIND = WAVEFORM + SOURCEFORMAT = TIMIT + SOURCERATE = 625 + ZMEANSOURCE = FALSE + + TARGETKIND = MFCC_E +#TARGETFORMAT = HTK + TARGETRATE = 100000 + +#SAVECOMPRESSED = TRUE + SAVEWITHCRC = FALSE + + WINDOWSIZE = 250000.0 +#USEHAMMING = TRUE +#PREEMCOEF = 0.97 + +#USEPOWER = FALSE + NUMCHANS = 24 +#LOFREQ = -1.0 +#HIFREQ = -1.0 + +#LPCORDER = 12 + +#CEPLIFTER = 22 +#NUMCEPS = 12 + +#RAWENERGY = TRUE + ENORMALISE = TRUE +#ESCALE = 1.0 +#SILFLOOR = 50.0 + +#DELTAWINDOW = 2 +#ACCWINDOW = 2 + +#USESILDET = TRUE +#SPEECHTHRESH = 0.0 +#SILTHRESH = 0.0 +#MEASURESIL = TRUE + +#OUTSILWARN = TRUE +#SILMEAN = 0.0 +#SILSTD = 0.0 +#AUDIOSIG = 0 +#VQTABLE = "" + diff --git a/samples/HTKDemo/toolconfs/herest.conf b/samples/HTKDemo/toolconfs/herest.conf new file mode 100755 index 0000000..69b6906 --- /dev/null +++ b/samples/HTKDemo/toolconfs/herest.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T diff --git a/samples/HTKDemo/toolconfs/herestCD.conf b/samples/HTKDemo/toolconfs/herestCD.conf new file mode 100755 index 0000000..69b6906 --- /dev/null +++ b/samples/HTKDemo/toolconfs/herestCD.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T diff --git a/samples/HTKDemo/toolconfs/herestVQ.conf b/samples/HTKDemo/toolconfs/herestVQ.conf new file mode 100755 index 0000000..5acef89 --- /dev/null +++ b/samples/HTKDemo/toolconfs/herestVQ.conf @@ -0,0 +1,5 @@ +TARGETKIND = MFCC_E_D_V +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T +VQTABLE=codebooks/currentCodebook diff --git a/samples/HTKDemo/toolconfs/herest_cmn.conf b/samples/HTKDemo/toolconfs/herest_cmn.conf new file mode 100755 index 0000000..b45f541 --- /dev/null +++ b/samples/HTKDemo/toolconfs/herest_cmn.conf @@ -0,0 +1,5 @@ +HPARM1: TARGETKIND = MFCC_E_D +HPARM2: TARGETKIND = MFCC_E_D_Z +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T diff --git a/samples/HTKDemo/toolconfs/hhed.conf b/samples/HTKDemo/toolconfs/hhed.conf new file mode 100755 index 0000000..fed2240 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hhed.conf @@ -0,0 +1,3 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T diff --git a/samples/HTKDemo/toolconfs/hinit.conf b/samples/HTKDemo/toolconfs/hinit.conf new file mode 100755 index 0000000..3b8ff4b --- /dev/null +++ b/samples/HTKDemo/toolconfs/hinit.conf @@ -0,0 +1,3 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F diff --git a/samples/HTKDemo/toolconfs/hinitCD.conf b/samples/HTKDemo/toolconfs/hinitCD.conf new file mode 100755 index 0000000..3b8ff4b --- /dev/null +++ b/samples/HTKDemo/toolconfs/hinitCD.conf @@ -0,0 +1,3 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F diff --git a/samples/HTKDemo/toolconfs/hinitVQ.conf b/samples/HTKDemo/toolconfs/hinitVQ.conf new file mode 100755 index 0000000..8f66dda --- /dev/null +++ b/samples/HTKDemo/toolconfs/hinitVQ.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D_V +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F +VQTABLE=codebooks/currentCodebook diff --git a/samples/HTKDemo/toolconfs/hquant.conf b/samples/HTKDemo/toolconfs/hquant.conf new file mode 100755 index 0000000..3b8ff4b --- /dev/null +++ b/samples/HTKDemo/toolconfs/hquant.conf @@ -0,0 +1,3 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F diff --git a/samples/HTKDemo/toolconfs/hrest.conf b/samples/HTKDemo/toolconfs/hrest.conf new file mode 100755 index 0000000..3b8ff4b --- /dev/null +++ b/samples/HTKDemo/toolconfs/hrest.conf @@ -0,0 +1,3 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F diff --git a/samples/HTKDemo/toolconfs/hrestCD.conf b/samples/HTKDemo/toolconfs/hrestCD.conf new file mode 100755 index 0000000..3b8ff4b --- /dev/null +++ b/samples/HTKDemo/toolconfs/hrestCD.conf @@ -0,0 +1,3 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F diff --git a/samples/HTKDemo/toolconfs/hrestVQ.conf b/samples/HTKDemo/toolconfs/hrestVQ.conf new file mode 100755 index 0000000..5acef89 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hrestVQ.conf @@ -0,0 +1,5 @@ +TARGETKIND = MFCC_E_D_V +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T +VQTABLE=codebooks/currentCodebook diff --git a/samples/HTKDemo/toolconfs/hsmooth.conf b/samples/HTKDemo/toolconfs/hsmooth.conf new file mode 100755 index 0000000..69b6906 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hsmooth.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T diff --git a/samples/HTKDemo/toolconfs/hsmoothCD.conf b/samples/HTKDemo/toolconfs/hsmoothCD.conf new file mode 100755 index 0000000..69b6906 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hsmoothCD.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T diff --git a/samples/HTKDemo/toolconfs/hsmoothVQ.conf b/samples/HTKDemo/toolconfs/hsmoothVQ.conf new file mode 100755 index 0000000..5acef89 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hsmoothVQ.conf @@ -0,0 +1,5 @@ +TARGETKIND = MFCC_E_D_V +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=T +BINARYACCFORMAT=T +VQTABLE=codebooks/currentCodebook diff --git a/samples/HTKDemo/toolconfs/hvite.conf b/samples/HTKDemo/toolconfs/hvite.conf new file mode 100755 index 0000000..1e8c249 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hvite.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F +BINARYACCFORMAT=F diff --git a/samples/HTKDemo/toolconfs/hviteCD.conf b/samples/HTKDemo/toolconfs/hviteCD.conf new file mode 100755 index 0000000..1e8c249 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hviteCD.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F +BINARYACCFORMAT=F diff --git a/samples/HTKDemo/toolconfs/hviteDA.conf b/samples/HTKDemo/toolconfs/hviteDA.conf new file mode 100755 index 0000000..2733051 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hviteDA.conf @@ -0,0 +1,50 @@ + SOURCEKIND = HAUDIO + SOURCEFORMAT = HTK + SOURCERATE = 625 + + TARGETKIND = MFCC_E_D + TARGETFORMAT = HTK + TARGETRATE = 100000 + + SPEAKEROUT = FALSE + PHONESOUT = TRUE + LINEOUT = FALSE + MICIN = FALSE + LINEIN = TRUE + + SAVECOMPRESSED = TRUE + SAVEWITHCRC = TRUE + + ZMEANSOURCE = TRUE + WINDOWSIZE = 250000.0 + USEHAMMING = TRUE + PREEMCOEF = 0.97 + +#USEPOWER = FALSE + NUMCHANS = 24 +#LOFREQ = -1.0 +#HIFREQ = -1.0 + +#LPCORDER = 12 + +#CEPLIFTER = 22 + NUMCEPS = 12 + + RAWENERGY = TRUE + ENORMALISE = FALSE +#ESCALE = 1.0 +#SILFLOOR = 50.0 + +#DELTAWINDOW = 2 +#ACCWINDOW = 2 + + USESILDET = FALSE +#SPEECHTHRESH = 0.0 +#SILTHRESH = 0.0 + MEASURESIL = FALSE + +#OUTSILWARN = TRUE +#SILMEAN = 0.0 +#SILSTD = 0.0 + AUDIOSIG = 16 +#VQTABLE = "" \ No newline at end of file diff --git a/samples/HTKDemo/toolconfs/hviteVQ.conf b/samples/HTKDemo/toolconfs/hviteVQ.conf new file mode 100755 index 0000000..63d86bc --- /dev/null +++ b/samples/HTKDemo/toolconfs/hviteVQ.conf @@ -0,0 +1,5 @@ +TARGETKIND = MFCC_E_D_V +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F +BINARYACCFORMAT=F +VQTABLE=codebooks/currentCodebook diff --git a/samples/HTKDemo/toolconfs/hvite_cmn.conf b/samples/HTKDemo/toolconfs/hvite_cmn.conf new file mode 100755 index 0000000..1c08d20 --- /dev/null +++ b/samples/HTKDemo/toolconfs/hvite_cmn.conf @@ -0,0 +1,4 @@ +TARGETKIND = MFCC_E_D_Z +SAVEGLOBOPTS = TRUE +KEEPDISTINCT=F +BINARYACCFORMAT=F diff --git a/samples/HTKDemo/train.scr b/samples/HTKDemo/train.scr new file mode 100755 index 0000000..5541855 --- /dev/null +++ b/samples/HTKDemo/train.scr @@ -0,0 +1,7 @@ +data\train\tr1.mfc +data\train\tr2.mfc +data\train\tr3.mfc +data\train\tr4.mfc +data\train\tr5.mfc +data\train\tr6.mfc +data\train\tr7.mfc diff --git a/samples/HTKTutorial/ChangeLog b/samples/HTKTutorial/ChangeLog new file mode 100755 index 0000000..f73045f --- /dev/null +++ b/samples/HTKTutorial/ChangeLog @@ -0,0 +1,4 @@ +2000-11-12 Gunnar Evermann + + * prompts2mlf: + * prompts2wlist: Cleanup perl code. diff --git a/samples/HTKTutorial/makesp b/samples/HTKTutorial/makesp new file mode 100755 index 0000000..07d5416 --- /dev/null +++ b/samples/HTKTutorial/makesp @@ -0,0 +1,64 @@ +#!/usr/bin/perl + + if (@ARGV[0] eq "") { + print "usage: makesp MMF\n"; + exit(0); + } + + $okprint = "FALSE"; + $silprint = "FALSE"; + + unless (open(FILE, "@ARGV[0]")) { + die ("can't open @ARGV[0]"); + } + + while ($line = ) { + chop ($line); + + + if ($line =~ /STREAMINFO/) { + $streaminfo = $line; + } + + if ($line =~ /VECSIZE/) { + $vecsize = $line; + } + + if ($line =~ /"sil"/) { + $okprint = "TRUE"; + print "~h \"sp\"\n"; + print "\n"; + print " 3\n"; + print " 2\n"; + } + + if ($okprint eq "TRUE" && ($line =~ / 3/)) { + $silprint = "TRUE"; + $line = ; + chop ($line); + } + + if ($okprint eq "TRUE" && ($line =~ / 4/)) { + $silprint = "FALSE"; + } + + if ($okprint eq "TRUE" && ($line =~ /TRANSP/)) { + $silprint = "FALSE"; + print " 3\n"; + print " 0.000000e+00 5.000000e-01 5.000000e-01\n"; + print " 0.000000e+00 5.000000e-01 5.000000e-01\n"; + print " 0.000000e+00 0.000000e+00 0.000000e+00\n"; + } + + if ($okprint eq "TRUE" && ($line =~ /ENDHMM/)) { + print "$line\n"; + $silprint = "FALSE"; + $okprint = "FALSE"; + } + + + if ($silprint eq "TRUE") { + print "$line\n"; + } + +} diff --git a/samples/HTKTutorial/maketrihed b/samples/HTKTutorial/maketrihed new file mode 100755 index 0000000..2f7472c --- /dev/null +++ b/samples/HTKTutorial/maketrihed @@ -0,0 +1,30 @@ +#!/usr/bin/perl +# +# make a .hed script to clone monophones in a phone list +# +# rachel morton 6.12.96 + + +if (@ARGV != 2) { + print "usage: makehed monolist trilist\n\n"; + exit (0); +} + +($monolist, $trilist) = @ARGV; + +# open .hed script +open(MONO, "@ARGV[0]"); + + +# open .hed script +open(HED, ">mktri.hed"); + +print HED "CL $trilist\n"; + +# +while ($phone = ) { + chop($phone); + if ($phone ne "") { + print HED "TI T_$phone {(*-$phone+*,$phone+*,*-$phone).transP}\n"; + } + } diff --git a/samples/HTKTutorial/prompts2mlf b/samples/HTKTutorial/prompts2mlf new file mode 100755 index 0000000..196f46a --- /dev/null +++ b/samples/HTKTutorial/prompts2mlf @@ -0,0 +1,46 @@ +#!/usr/local/bin/perl -w +use strict; + +my ($mlf, $prompt, $line, $fname, @labs, $w); + +# this script makes an mlf out of a list of file names and +# corresponding prompts - ie in the format +# fileid prompt +# fileid prompt +# " " +# The prompts are automatically converted to upper case. + + +if (@ARGV != 2) { + print "usage: $0 mlf promptlist\n\n"; + exit (0); +} + +# read in command line arguments +($mlf, $prompt) = @ARGV; + + +# open MLF file +open (MLF,">$mlf") || die ("Unable to open mlf $mlf file for writing"); + +print "writing to mlf file $mlf\n"; + +print MLF ("\#\!MLF\!\#\n"); +# open prompt file +open (LAB, "$prompt") || die ("Unable to open prompt file $prompt"); +while ($line = ) { + chomp ($line); + ($fname,@labs) = split(/\s+/,$line); + $fname =~ s/\.mfc//g; + $fname =~ s/\.lab//g; + print MLF ("\"$fname.lab\"\n"); + + foreach $w (@labs) { + printf(MLF "%s\n", $w); + } + print MLF (".\n"); +} + +close (LAB); +close(MLF); +print "writing to $mlf file done\n"; diff --git a/samples/HTKTutorial/prompts2wlist b/samples/HTKTutorial/prompts2wlist new file mode 100755 index 0000000..0e12ed9 --- /dev/null +++ b/samples/HTKTutorial/prompts2wlist @@ -0,0 +1,39 @@ +#!/usr/local/bin/perl -w +use strict; + +my ($prompts, $wlist, $line, @line_array, $w, %words, @word_list); + +# check usage +if (@ARGV != 2) { + print "usage: $0 prompts wordlist\n\n"; + exit (0); +} + +# read in command line arguments +($prompts, $wlist) = @ARGV; + +# open files +open (PROMPTS,"$prompts") || die ("Unable to open prompts $prompts file for reading"); +open (WLIST,">$wlist") || die ("Unable to open word list $wlist file for writing"); + +# process each prompt one at a time +while ($line = ) { + chomp ($line); + @line_array=split(/\s+/, $line); + shift (@line_array); # discard fileID + + foreach $w (@line_array) { + $words{$w} = 1; + } +} + +# put the words in order +@word_list = sort (keys (%words)); + +#and finally write out to word list file +foreach $w (@word_list) { + printf(WLIST "%s\n", $w); +} + +close(WLIST); +close(PROMPTS); diff --git a/samples/LICENSE b/samples/LICENSE new file mode 100755 index 0000000..099eab3 --- /dev/null +++ b/samples/LICENSE @@ -0,0 +1,77 @@ + HTK END USER LICENSE AGREEMENT + +1. Definitions + + Licensed Software: All source code, object or executable code, + associated technical documentation and any + data files in this HTK distribution. + + Licensor : University of Cambridge + + Licensee : The person/organisation who downloads the HTK + distribution or any part of it. + + +2. License Rights and Obligations + + 2.1 The Licensor hereby grants the Licensee a non-exclusive license to a) make + copies of the Licensed Software in source and object code form for use + within the Licensee's organisation; b) modify copies of the Licensed Software + to create derivative works thereof for use within the Licensee's organisation. + + 2.2 The Licensed Software either in whole or in part can not be distributed + or sub-licensed to any third party in any form. + + 2.3 The Licensee agrees not to remove any copyright, trademark or patent notices + that appear in the Licensed Software. + + 2.4 THE LICENSED SOFTWARE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY OF ANY KIND. + TO THE MAXIMUM EXTENT PERMITTED BY LAW, ANY AND ALL EXPRESS AND IMPLIED + WARRANTIES OF ANY KIND WHATSOEVER, INCLUDING BUT NOT LIMITED TO THOSE OF + MERCHANTABILITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY OR COMPLETENESS + OF RESPONSES, OF RESULTS, OF REASONABLE CARE OR WORKMANLIKE EFFORT, OF LACK OF + NEGLIGENCE, AND/OR OF A LACK OF VIRUSES, ALL WITH REGARD TO THE LICENSED SOFTWARE, + ARE EXPRESSLY EXCLUDED. NEITHER LICENSOR, ENTROPIC OR MICROSOFT MAKE ANY WARRANTY + THAT THE LICENSED SOFTWARE WILL OPERATE PROPERLY AS INTEGRATED IN YOUR PRODUCT(S) + OR ON ANY CUSTOMER SYSTEM(S). + + 2.5 THE LICENSEE AGREES THAT NEITHER LICENSOR, ENTROPIC OR MICROSOFT SHALL BE + LIABLE FOR ANY CONSEQUENTIAL, INCIDENTAL, INDIRECT, ECONOMIC OR PUNITIVE DAMAGES + WHATSOEVER (INCLUDING BUT NOT LIMITED TO DAMAGES FOR LOSS OF BUSINESS OR PERSONAL + PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS OR PERSONAL OR CONFIDENTIAL + INFORMATION, OR ANY OTHER PECUNIARY LOSS, DAMAGES FOR LOSS OF PRIVACY, OR FOR FAILURE + TO MEET ANY DUTY, INCLUDING ANY DUTY OF GOOD FAITH, OR TO EXERCISE COMMERCIALLY + REASONABLE CARE OR FOR NEGLIGENCE) ARISING OUT OF OR IN ANY WAY RELATED TO THE + USE OF OR INABILITY TO USE THE LICENSED SOFTWARE, EVEN IF ENTROPIC HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + +3. Term of Agreement + + This agreement is effective upon the download of the Licensed Software and + shall remain in effect until terminated. Termination by the Licensee should be + accompanied by the complete destruction of the Licensed Software and any complete + or partial copies thereof. The Licensor may only terminate this agreement if + the Licensee has failed to abide by the terms of this agreement in which case + termination may be without notice. All provisions of this agreement relating + to disclaimers of warranties, limitation of liability, remedies or damage + and the Licensor's proprietary rights shall survive termination. + + +4. Governing Law + + This agreement shall be construed and interpreted in accordance with the laws + of England. + + +5. Though not a license condition, Licensees are strongly encouraged to + a) report all bugs, where possible with bug fixes, that are found. + b) reference the use of HTK in any publications that use the Licensed Software. + + +6. Contributions to HTK + + We strongly encourage contributions to the HTK source code base. These will + in general be additional tools or library modules which will not fall under this + HTK License Agreement. + diff --git a/samples/LMTutorial/5k.wlist b/samples/LMTutorial/5k.wlist new file mode 100755 index 0000000..307a10a --- /dev/null +++ b/samples/LMTutorial/5k.wlist @@ -0,0 +1,5000 @@ + + +A +A. +ABANDON +ABANDONED +ABBEY +ABDULLAH +ABE +ABILITY +ABLE +ABOARD +ABOUT +ABOVE +ABROAD +ABRUPT +ABRUPTLY +ABSENCE +ABSENT +ABSOLUTE +ABSOLUTELY +ABSORBED +ABSTRACTED +ABSURD +ABSURDLY +ACCENT +ACCEPT +ACCEPTED +ACCIDENT +ACCOMPANIED +ACCOMPLICE +ACCORDING +ACCOUNT +ACCOUNTS +ACCURATE +ACCUSED +ACCUSTOMED +ACHMET +ACKNOWLEDGE +ACQUAINTANCE +ACQUIRED +ACROSS +ACT +ACTED +ACTING +ACTION +ACTIONS +ACTIVE +ACTON +ACTUAL +ACTUALLY +ACUTE +ADAIR +ADD +ADDED +ADDITION +ADDRESS +ADDRESSED +ADDRESSING +ADLER +ADMIRABLE +ADMIRABLY +ADMIRATION +ADMIT +ADMITTED +ADOPTED +ADVANCE +ADVANCED +ADVANTAGE +ADVANTAGES +ADVENTURE +ADVENTURES +ADVERTISEMENT +ADVERTISEMENTS +ADVICE +ADVISE +ADVISED +AFFAIR +AFFAIRS +AFFECT +AFFECTED +AFFECTION +AFFORD +AFGHANISTAN +AFOOT +AFRAID +AFRICA +AFRICAN +AFTER +AFTERNOON +AFTERWARDS +AGAIN +AGAINST +AGE +AGED +AGENCY +AGENT +AGENTS +AGITATED +AGITATION +AGO +AGONY +AGRA +AGREE +AGREED +AGREEMENT +AH +AHEAD +AID +AIDED +AIN'T +AIR +AKBAR +ALARM +ALARMED +ALAS +ALDERSHOT +ALEC +ALERT +ALIBI +ALICE +ALIVE +ALL +ALLEN +ALLOW +ALLOWANCE +ALLOWED +ALLOWING +ALLUDED +ALLUSION +ALLY +ALMOST +ALONE +ALONG +ALOUD +ALPHA +ALREADY +ALSO +ALTAMONT +ALTAR +ALTERNATIVE +ALTHOUGH +ALTOGETHER +ALWAYS +AM +AMATEUR +AMAZED +AMAZEMENT +AMAZING +AMERICA +AMERICAN +AMES +AMIABLE +AMID +AMISS +AMONG +AMOUNT +AMPLE +AMUSED +AMUSEMENT +AN +ANALYSIS +ANALYTICAL +ANCIENT +AND +ANDAMAN +ANGEL +ANGER +ANGLE +ANGRY +ANIMAL +ANNALS +ANNOUNCED +ANNOYANCE +ANNOYED +ANOTHER +ANSWER +ANSWERED +ANSWERING +ANSWERS +ANXIETY +ANXIOUS +ANXIOUSLY +ANY +ANYHOW +ANYONE +ANYTHING +ANYWHERE +APART +APARTMENT +APIECE +APOLOGIZE +APOLOGY +APPARENTLY +APPEAL +APPEAR +APPEARANCE +APPEARED +APPEARS +APPLAUSE +APPLIED +APPLY +APPOINTMENT +APPRECIATE +APPREHENSION +APPROACH +APPROACHED +APPROACHING +APRIL +AQUILINE +ARE +ARGUE +ARGUED +ARGUMENT +ARISTOCRATIC +ARM +ARMCHAIR +ARMED +ARMS +ARMSTRONG +ARMY +AROSE +AROUND +AROUSED +ARRANGE +ARRANGED +ARRANGEMENTS +ARREST +ARRESTED +ARRESTING +ARRIVAL +ARRIVE +ARRIVED +ART +ARTHUR +ARTICLE +ARTICLES +ARTIST +AS +ASCENDED +ASCERTAIN +ASCERTAINED +ASH +ASHAMED +ASHES +ASIDE +ASK +ASKED +ASKING +ASLEEP +ASPECT +ASSASSIN +ASSAULT +ASSIST +ASSISTANCE +ASSIZES +ASSOCIATE +ASSOCIATED +ASSOCIATES +ASSUMED +ASSURANCE +ASSURE +ASSURED +ASTONISHED +ASTONISHMENT +AT +ATHELNEY +ATMOSPHERE +ATTACHED +ATTACK +ATTACKED +ATTACKS +ATTAIN +ATTEMPT +ATTEMPTED +ATTEMPTS +ATTEND +ATTENDANT +ATTENTION +ATTIC +ATTITUDE +ATTRACTED +AUGUST +AURORA +AUSTERE +AUSTRALIA +AUTHOR +AUTHORITIES +AUTHORITY +AVAIL +AVENUE +AVERSE +AVOID +AWAIT +AWAITED +AWAITING +AWAITS +AWAKE +AWAKENED +AWARE +AWAY +AWFUL +AWKWARD +AY +B. +BACHELOR +BACK +BACKED +BACKWARD +BAD +BADEN +BADLY +BAFFLED +BAG +BAGGAGE +BAKER +BALANCE +BALD +BALDWIN +BALL +BALLARAT +BAND +BANK +BANKER +BANKS +BANNISTER +BAR +BARCLAY +BARE +BARGAIN +BARK +BARKER +BARON +BARRED +BARREL +BARRELS +BARREN +BARS +BARTHOLOMEW +BASE +BASIS +BASKET +BATH +BATTLE +BAY +BAYNES +BE +BEAR +BEARD +BEARDED +BEARING +BEARS +BEAST +BEAT +BEATEN +BEATING +BEAUTIFUL +BEAUTY +BECAME +BECAUSE +BECOME +BECOMES +BECOMING +BED +BEDDOES +BEDROOM +BEDROOMS +BEECHES +BEEN +BEFALL +BEFORE +BEG +BEGAN +BEGGAR +BEGGED +BEGIN +BEGINNING +BEGINS +BEGUN +BEHIND +BEING +BELIEF +BELIEVE +BELIEVED +BELL +BELONGED +BELONGS +BELOW +BENDING +BENEATH +BENEFIT +BENT +BEPPO +BESIDE +BESIDES +BEST +BET +BETRAYED +BETTER +BETTING +BETWEEN +BEYOND +BICYCLE +BIG +BILL +BIRD +BIRDS +BIRDY +BIRLSTONE +BIRMINGHAM +BIT +BITTEN +BITTER +BITTERLY +BITTERNESS +BIZARRE +BLACK +BLACKHEATH +BLADE +BLAME +BLANK +BLAZE +BLAZING +BLEEDING +BLESS +BLESSINGTON +BLEW +BLIND +BLINDS +BLINKING +BLOCK +BLOOD +BLOODED +BLOW +BLOWING +BLOWN +BLOWS +BLUE +BLUFF +BLUNDER +BLUNT +BLURRED +BOARD +BOARDING +BOARDS +BOAT +BOATS +BODIES +BODY +BODYMASTER +BOHEMIA +BOLD +BOLT +BOLTED +BONE +BONES +BONNET +BOOK +BOOKS +BOONE +BOOT +BOOTS +BORDER +BORE +BORK +BORN +BORNE +BOSCOMBE +BOSOM +BOSS +BOTH +BOTTLE +BOTTLES +BOTTOM +BOUGHT +BOUND +BOUNDED +BOW +BOWED +BOX +BOXES +BOY +BOYS +BRACKENSTALL +BRADSTREET +BRAIN +BRAINS +BRANCH +BRANCHES +BRANDED +BRANDY +BRASS +BRAVE +BREADTH +BREAK +BREAKFAST +BREAKING +BREAST +BREATH +BREATHING +BRECKINRIDGE +BRENDA +BRETHREN +BRIARBRAE +BRICK +BRICKS +BRIDE +BRIDEGROOM +BRIDGE +BRIEF +BRIGHT +BRIGHTER +BRIGHTLY +BRILLIANT +BRING +BRINGING +BRINGS +BRIONY +BRISK +BRISTLING +BRITISH +BRIXTON +BROAD +BROADENED +BROKE +BROKEN +BROODING +BROOK +BROTHER +BROTHERS +BROUGHAM +BROUGHT +BROW +BROWN +BROWNER +BROWS +BRUCE +BRUNTON +BRUSHED +BRUTAL +BRUTE +BUILDER +BUILDING +BUILT +BULKY +BULL +BULLET +BUNDLE +BUREAU +BURGLAR +BURGLARS +BURGLARY +BURIED +BURNED +BURNET +BURNING +BURST +BUSH +BUSHES +BUSINESS +BUST +BUSTLING +BUSTS +BUSY +BUT +BUTLER +BUTT +BUTTONED +BUY +BY +BYE +C. +CAB +CABBY +CABIN +CABINET +CABLE +CABMAN +CADOGAN +CALIFORNIA +CALL +CALLED +CALLING +CALLS +CALM +CALMLY +CAMBERWELL +CAMBRIDGE +CAME +CAMP +CAMPAIGN +CAN +CAN'T +CANDLE +CANDLES +CANE +CANNOT +CAP +CAPABLE +CAPACITY +CAPITAL +CAPTAIN +CAPTURE +CAR +CARD +CARDS +CARE +CARED +CAREER +CAREFUL +CAREFULLY +CARELESS +CARELESSLY +CAREY +CARFAX +CARPET +CARRIAGE +CARRIAGES +CARRIED +CARRUTHERS +CARRY +CARRYING +CART +CASE +CASES +CAST +CAT +CATASTROPHE +CATCH +CATCHING +CAUGHT +CAUSE +CAUSED +CAUSES +CAUTION +CEASED +CECIL +CEILING +CELL +CELLAR +CENTRAL +CENTRE +CENTURIES +CENTURY +CEREMONY +CERTAIN +CERTAINLY +CERTAINTY +CERTIFICATE +CHAIN +CHAIR +CHAIRMAN +CHAIRS +CHALK +CHAMBER +CHAMBERS +CHANCE +CHANCED +CHANCES +CHANGE +CHANGED +CHAP +CHAPTER +CHARACTER +CHARACTERISTIC +CHARACTERISTICS +CHARACTERS +CHARGE +CHARING +CHARLES +CHARLINGTON +CHARMING +CHARPENTIER +CHARRED +CHART +CHECK +CHEEK +CHEEKS +CHEERFUL +CHEERFULLY +CHEERY +CHEMICAL +CHEST +CHICAGO +CHIEF +CHILD +CHILDISH +CHILDREN +CHILL +CHIMNEY +CHIN +CHOICE +CHOOSE +CHOOSING +CHOSE +CHOSEN +CHRISTMAS +CHRONICLE +CHUCKLED +CHURCH +CIGAR +CIGARETTE +CIGARETTES +CIGARS +CIPHER +CIRCLE +CIRCLES +CIRCUMSTANCES +CITIZEN +CITIZENS +CITY +CIVIL +CLAD +CLAIM +CLAIR +CLANG +CLAPPED +CLASPED +CLASS +CLASSES +CLATTER +CLAY +CLEAN +CLEANED +CLEAR +CLEARED +CLEARER +CLEARING +CLEARLY +CLENCHED +CLERGYMAN +CLERK +CLERKS +CLEVELAND +CLEVER +CLICK +CLIENT +CLIMB +CLIMBED +CLOAK +CLOCK +CLOSE +CLOSED +CLOSELY +CLOSER +CLOSING +CLOTH +CLOTHES +CLOUD +CLOUDS +CLUB +CLUE +CLUES +CLUMP +CLUMSY +CLUTCHED +COACHMAN +COAL +COARSE +COAST +COAT +COATS +COCAINE +COCK +COCKED +CODE +COFFEE +COFFIN +COINCIDENCE +COLD +COLDLY +COLLAPSED +COLLAR +COLLEAGUE +COLLECTION +COLLEGE +COLONEL +COLONEL'S +COLOUR +COLOURED +COLUMN +COLUMNS +COMBINATION +COMBINED +COME +COMES +COMFORT +COMFORTABLE +COMING +COMMAND +COMMANDED +COMMISSION +COMMISSIONAIRE +COMMITTED +COMMON +COMMONPLACE +COMMUNICATE +COMMUNICATED +COMMUNICATION +COMMUNITY +COMPANIES +COMPANION +COMPANION'S +COMPANIONS +COMPANY +COMPARE +COMPARED +COMPELLED +COMPLAINT +COMPLETE +COMPLETED +COMPLETELY +COMPLEX +COMPLEXION +COMPLICATED +COMPLIMENT +COMPOSED +COMPOSURE +COMPRESSED +COMRADE +COMRADES +CONCEAL +CONCEALED +CONCEALMENT +CONCEIVABLE +CONCEIVE +CONCENTRATED +CONCENTRATION +CONCERN +CONCERNED +CONCLUDED +CONCLUSION +CONCLUSIONS +CONCLUSIVE +CONDEMNED +CONDITION +CONDITIONS +CONDUCT +CONFEDERATE +CONFESS +CONFESSED +CONFESSION +CONFIDENCE +CONFIDENT +CONFIDENTIAL +CONFIRM +CONFIRMED +CONFRONTED +CONFUSED +CONFUSION +CONGENIAL +CONGRATULATE +CONJECTURE +CONJECTURED +CONNECT +CONNECTED +CONNECTION +CONSCIENCE +CONSCIOUS +CONSCIOUSNESS +CONSENT +CONSEQUENCE +CONSEQUENCES +CONSIDER +CONSIDERABLE +CONSIDERABLY +CONSIDERATION +CONSIDERED +CONSIDERING +CONSISTED +CONSPIRACY +CONSTABLE +CONSTABLES +CONSTABULARY +CONSTITUTION +CONSULT +CONSULTATION +CONSULTED +CONSULTING +CONSUMED +CONTACT +CONTAINED +CONTAINING +CONTENT +CONTENTS +CONTINENT +CONTINUALLY +CONTINUE +CONTINUED +CONTRACTED +CONTRACTION +CONTRARY +CONTRAST +CONTROL +CONVENIENT +CONVENTIONAL +CONVERSATION +CONVEY +CONVEYED +CONVICT +CONVICTION +CONVICTS +CONVINCED +CONVULSED +CONVULSIVE +COOEE +COOK +COOL +COOLLY +COOPERATION +COPPER +COPY +CORAM +CORD +CORK +CORMAC +CORNER +CORNERS +CORNISH +CORONER +CORONET +CORRECT +CORRESPOND +CORRESPONDENCE +CORRESPONDENT +CORRESPONDING +CORRIDOR +CORRIDORS +COST +COTTAGE +COUCH +COULD +COULDN'T +COUNCIL +COUNCILLOR +COUNSEL +COUNT +COUNTENANCE +COUNTER +COUNTESS +COUNTRIES +COUNTRY +COUNTRYSIDE +COUNTY +COUPLE +COURAGE +COURSE +COURT +COURTESY +COUSIN +COVER +COVERED +COVERING +COWARD +COWS +CRACK +CRACKED +CRAFT +CRASH +CRAVAT +CRAWLED +CREAKING +CREATURE +CREATURES +CREDIT +CREOSOTE +CREPT +CREW +CRIED +CRIES +CRIME +CRIMES +CRIMINAL +CRIMINALS +CRIMSON +CRIPPLE +CRISIS +CRISP +CROOK +CROP +CROSS +CROSSED +CROSSING +CROUCHED +CROUCHING +CROWD +CROWDED +CROWN +CROYDON +CRUEL +CRUELTY +CRUMPLED +CRUSHED +CRY +CUBITT +CULPRIT +CULVERTON +CUNNING +CUNNINGHAM +CUP +CUPBOARD +CURIOSITY +CURIOUS +CURIOUSLY +CURLED +CURLING +CURSE +CURSED +CURTAIN +CURTAINS +CURVE +CURVED +CURVING +CUSHING +CUSTOM +CUT +CUTTING +CYCLE +CYCLIST +CYRIL +D'YOU +D. +DAD +DAILY +DAINTY +DAMP +DANCING +DANGER +DANGEROUS +DANGERS +DARE +DARED +DARESAY +DARK +DARKENED +DARKER +DARKNESS +DARLING +DARTED +DARTING +DARTMOOR +DARTS +DASH +DASHED +DASHING +DATA +DATE +DATED +DATES +DAUGHTER +DAWN +DAY +DAY'S +DAYLIGHT +DAYS +DAZED +DE +DEAD +DEADLY +DEAL +DEALING +DEAR +DEATH +DEBT +DECEASED +DECEIVE +DECENT +DECIDE +DECIDED +DECISION +DECK +DECLARED +DECLARES +DEDUCE +DEDUCED +DEDUCTION +DEDUCTIONS +DEED +DEEDS +DEEP +DEEPER +DEEPEST +DEEPLY +DEFENCE +DEFINITE +DEFINITELY +DEGREE +DEGREES +DELAY +DELIBERATE +DELIBERATELY +DELICACY +DELICATE +DELIGHT +DELIGHTED +DELIRIOUS +DELIVERED +DEMAND +DEN +DENSE +DENY +DEPARTED +DEPARTURE +DEPEND +DEPENDS +DEPRESSED +DEPRESSION +DEPTHS +DESCENDED +DESCRIBE +DESCRIBED +DESCRIPTION +DESERT +DESERTED +DESERTS +DESIGN +DESIRE +DESIRED +DESIRES +DESK +DESOLATE +DESPAIR +DESPATCH +DESPERATE +DESTINED +DESTROY +DESTROYED +DESTRUCTION +DETAIL +DETAILS +DETECTED +DETECTION +DETECTIVE +DETECTIVES +DETERMINATION +DETERMINE +DETERMINED +DEVELOPED +DEVELOPMENT +DEVELOPMENTS +DEVICE +DEVIL +DEVIL'S +DEVISED +DEVOTE +DEVOTED +DIAMOND +DID +DIDN'T +DIE +DIED +DIFFERENCE +DIFFERENT +DIFFICULT +DIFFICULTIES +DIFFICULTY +DIGNITY +DIM +DIMLY +DINING +DINNER +DIPPED +DIRECT +DIRECTED +DIRECTION +DIRECTIONS +DIRTY +DISAPPEARANCE +DISAPPEARED +DISAPPOINTED +DISAPPOINTMENT +DISCLOSED +DISCOLOURED +DISCOVER +DISCOVERED +DISCOVERING +DISCOVERY +DISCREET +DISCRETION +DISCUSS +DISCUSSION +DISEASE +DISGRACE +DISGUISE +DISGUST +DISH +DISLIKE +DISMAY +DISMISS +DISPATCHED +DISPOSAL +DISPOSITION +DISSATISFIED +DISTANCE +DISTANT +DISTINCT +DISTINCTIVE +DISTINCTLY +DISTINGUISH +DISTINGUISHED +DISTORTED +DISTRICT +DISTURB +DISTURBED +DIVIDED +DIVISION +DO +DOCK +DOCTOR +DOCTOR'S +DOCUMENT +DOCUMENTS +DOES +DOG +DOGS +DOING +DOINGS +DOLLAR +DOLLARS +DON'T +DONE +DOOR +DOORS +DOORWAY +DORAN +DOUBLE +DOUBT +DOUBTED +DOUBTLESS +DOUBTS +DOUGLAS +DOWN +DOWNS +DOWNSTAIRS +DOZEN +DRAGGED +DRAMA +DRAMATIC +DRANK +DRAUGHT +DRAW +DRAWBRIDGE +DRAWER +DRAWERS +DRAWING +DRAWN +DREAD +DREADFUL +DREAM +DREAMED +DREAMS +DREARY +DREBBER +DREBBER'S +DRESS +DRESSED +DRESSING +DREW +DRIED +DRIFTED +DRIFTING +DRINK +DRINKING +DRIVE +DRIVEN +DRIVER +DRIVING +DROOPING +DROP +DROPPED +DROPPING +DROPS +DROVE +DRUG +DRUNK +DRUNKEN +DRY +DUE +DUKE +DUKE'S +DULL +DUMB +DUNDEE +DUPLICATE +DURING +DUSK +DUST +DUSTY +DUTIES +DUTY +DWELLING +DYING +E. +EACH +EAGER +EAGERLY +EAGERNESS +EAGLE +EAR +EARL +EARLIER +EARLY +EARN +EARNED +EARNEST +EARNESTLY +EARNESTNESS +EARS +EARTH +EASE +EASIER +EASILY +EAST +EASTERN +EASY +EAT +EATEN +ECCENTRIC +ECCLES +EDGE +EDUARDO +EDUCATION +EDWARDS +EFFECT +EFFECTIVE +EFFECTS +EFFORT +EFFORTS +EH +EIGHT +EIGHTEEN +EIGHTHS +EIGHTY +EITHER +EJACULATED +EJACULATION +ELABORATE +ELAPSED +ELASTIC +ELBOW +ELDER +ELDERLY +ELDERS +ELECTRIC +ELEVEN +ELM +ELSE +ELSEWHERE +ELSIE +EMBASSY +EMERGED +EMINENT +EMOTION +EMOTIONS +EMPLOY +EMPLOYED +EMPLOYER +EMPLOYMENT +EMPTY +ENABLE +ENABLED +ENCLOSURE +END +ENDEAVOURED +ENDEAVOURING +ENDED +ENDING +ENDS +ENDURE +ENEMIES +ENEMY +ENERGETIC +ENERGY +ENGAGE +ENGAGED +ENGAGEMENT +ENGINE +ENGINEER +ENGINES +ENGLAND +ENGLISH +ENGLISHMAN +ENJOY +ENOCH +ENORMOUS +ENOUGH +ENTER +ENTERED +ENTERING +ENTERPRISE +ENTIRELY +ENTRANCE +ENVELOPE +EPISODE +EQUAL +EQUALLY +ERRAND +ERROR +ESCAPE +ESCAPED +ESCORT +ESHER +ESPECIALLY +ESSENTIAL +ESSENTIALS +ESTABLISHED +ESTABLISHMENT +ESTATE +ETTIE +EUROPE +EUROPEAN +EUSTACE +EVEN +EVENING +EVENINGS +EVENT +EVENTS +EVENTUALLY +EVER +EVERY +EVERYONE +EVERYTHING +EVERYWHERE +EVIDENCE +EVIDENT +EVIDENTLY +EVIL +EX +EXACT +EXACTLY +EXAGGERATED +EXAMINATION +EXAMINE +EXAMINED +EXAMINING +EXAMPLE +EXCEEDINGLY +EXCELLENT +EXCEPT +EXCEPTION +EXCEPTIONAL +EXCHANGE +EXCHANGED +EXCITED +EXCITEMENT +EXCLAIMED +EXCLAMATION +EXCUSE +EXERCISE +EXERTIONS +EXHAUSTED +EXISTENCE +EXIT +EXPECT +EXPECTED +EXPECTING +EXPEDITION +EXPENSE +EXPENSIVE +EXPERIENCE +EXPERIENCED +EXPERIENCES +EXPERIMENT +EXPERT +EXPLAIN +EXPLAINED +EXPLANATION +EXPLANATIONS +EXPOSE +EXPOSED +EXPOSURE +EXPRESS +EXPRESSED +EXPRESSION +EXPRESSIVE +EXTENDED +EXTENT +EXTRAORDINARY +EXTREME +EXTREMELY +EXULTATION +EYE +EYEBROWS +EYED +EYELIDS +EYES +EYFORD +FACE +FACED +FACES +FACING +FACT +FACTOR +FACTS +FACULTIES +FADED +FAIL +FAILED +FAILURE +FAINT +FAINTED +FAIR +FAIRBAIRN +FAIRLY +FAITH +FAITHFUL +FAITHFULLY +FALL +FALLEN +FALLING +FALSE +FAMILIAR +FAMILIES +FAMILY +FAMOUS +FANCIES +FANCY +FANTASTIC +FAR +FARM +FARMER +FARNHAM +FARTHER +FASHION +FASHIONED +FAST +FASTENED +FAT +FATAL +FATE +FATHER +FATHER'S +FAULT +FAVOUR +FAVOURITE +FEAR +FEARED +FEARS +FEATHER +FEATURE +FEATURES +FEE +FEEBLE +FEEL +FEELING +FEELINGS +FEET +FELL +FELLOW +FELLOW'S +FELLOWS +FELT +FEMALE +FENCE +FEROCITY +FERRIER +FETCH +FEVER +FEW +FIELD +FIELDS +FIEND +FIERCE +FIFTEEN +FIFTH +FIFTY +FIGHT +FIGHTING +FIGURE +FIGURES +FILL +FILLED +FINAL +FINALLY +FIND +FINDING +FINDS +FINE +FINEST +FINGER +FINGERS +FINISH +FINISHED +FIRE +FIRED +FIREPLACE +FIRM +FIRMLY +FIRST +FISH +FISTS +FIT +FITS +FITTED +FITTING +FITZROY +FIVE +FIX +FIXED +FLAME +FLASH +FLASHED +FLASHING +FLAT +FLATTENED +FLAW +FLED +FLESH +FLEW +FLIGHT +FLOOR +FLORA +FLOWERS +FLUFFY +FLUNG +FLUSH +FLUSHED +FLY +FLYING +FOG +FOLDED +FOLK +FOLLOW +FOLLOWED +FOLLOWING +FOLLOWS +FOND +FOOD +FOOL +FOOLISH +FOOT +FOOTMARKS +FOOTSTEPS +FOR +FORBES +FORCE +FORCED +FORCES +FOREARM +FOREFINGER +FOREHEAD +FOREIGN +FORESEE +FORESIGHT +FOREST +FOREVER +FORGERY +FORGET +FORGIVE +FORGOT +FORGOTTEN +FORM +FORMED +FORMER +FORMERLY +FORMIDABLE +FORMING +FORMS +FORRESTER +FORT +FORTH +FORTNIGHT +FORTUNATE +FORTUNATELY +FORTUNE +FORTUNES +FORTY +FORWARD +FOUL +FOUND +FOUR +FOURTEEN +FOURTH +FRAGMENTS +FRAME +FRAMED +FRANCE +FRANCES +FRANK +FRANKLY +FRANKNESS +FRANTICALLY +FRAYED +FREE +FREEDOM +FREELY +FREEMEN +FRENCH +FRENZY +FREQUENT +FREQUENTLY +FRESH +FRIEND +FRIEND'S +FRIENDLY +FRIENDS +FRIENDSHIP +FRIGHT +FRIGHTEN +FRIGHTENED +FRINGE +FRO +FROCK +FROM +FRONT +FRUIT +FUGITIVES +FULFILLED +FULL +FULLER'S +FULLY +FUNNY +FURIOUS +FURIOUSLY +FURNISHED +FURNITURE +FURTHER +FURTIVE +FURY +FUTURE +G. +GABLE +GAIN +GAINED +GAITERS +GALE +GALLOWS +GAME +GANG +GAP +GAR +GARCIA +GARDEN +GARDENER +GARDENS +GARMENTS +GARRET +GAS +GASP +GASPED +GATE +GATES +GATEWAY +GATHER +GATHERED +GATHERING +GAUNT +GAVE +GAZE +GAZED +GAZING +GEESE +GELDER +GEMS +GENERAL +GENERALLY +GENIAL +GENIUS +GENNARO +GENTLE +GENTLEMAN +GENTLEMAN'S +GENTLEMEN +GENTLY +GEORGE +GERMAN +GESTURE +GET +GETS +GETTING +GHASTLY +GIANT +GIFTS +GIGANTIC +GILCHRIST +GIRL +GIRL'S +GIVE +GIVEN +GIVES +GIVING +GLAD +GLANCE +GLANCED +GLANCES +GLANCING +GLARE +GLARED +GLARING +GLASS +GLASSES +GLEAM +GLEAMED +GLEAMING +GLIMMER +GLIMMERED +GLIMPSE +GLINT +GLOOM +GLOOMY +GLORIA +GLOVE +GLOVES +GLOWING +GO +GOD +GOD'S +GODFREY +GODOLPHIN +GOES +GOING +GOLD +GOLDEN +GONE +GOOD +GOODNESS +GOODS +GOOSE +GORGIANO +GOSSIP +GOT +GOVERNESS +GOVERNMENT +GOVERNOR +GOWN +GRACE +GRACEFUL +GRACIOUS +GRADUALLY +GRAND +GRANGE +GRANT +GRANTED +GRASP +GRASPED +GRASS +GRATE +GRAVE +GRAVEL +GRAVELY +GRAVESEND +GRAVITY +GRAY +GREAT +GREATER +GREATEST +GREEK +GREEN +GREETED +GREGORY +GREGSON +GREW +GRIEF +GRIM +GRIMESBY +GRINNING +GRIP +GRIZZLED +GROAN +GROANED +GROOM +GROTESQUE +GROUND +GROUNDS +GROUP +GROVE +GROW +GROWING +GROWN +GROWS +GRUDGE +GUARD +GUARDED +GUESS +GUESSED +GUIDE +GUILT +GUILTY +GUINEA +GUN +GUNS +GYPSIES +H. +HA +HABIT +HABITS +HAD +HADN'T +HAGGARD +HAILED +HAIR +HAIRED +HALF +HALFWAY +HALL +HALLOA +HALT +HALTED +HAM +HAMMER +HAMPSHIRE +HAMPSTEAD +HAND +HANDCUFFS +HANDED +HANDING +HANDKERCHIEF +HANDLE +HANDLED +HANDLING +HANDS +HANDSOME +HANDWRITING +HANG +HANGED +HANGING +HANGS +HANSOM +HAPPEN +HAPPENED +HAPPENS +HAPPINESS +HAPPY +HARD +HARDENED +HARDING +HARDLY +HARDWARE +HARKER +HARM +HARMLESS +HAROLD +HARPOON +HARRISON +HAS +HASTENED +HAT +HATE +HATED +HATHERLEY +HATRED +HAVE +HAVEN'T +HAVING +HAYES +HAZE +HE +HE'D +HE'LL +HE'S +HE. +HEAD +HEADED +HEADING +HEADQUARTERS +HEADS +HEALTH +HEAP +HEAR +HEARD +HEARING +HEART +HEARTED +HEARTILY +HEARTS +HEARTY +HEAT +HEATH +HEAVEN +HEAVEN'S +HEAVENS +HEAVILY +HEAVY +HEDGE +HEEL +HEELS +HEIGHT +HEIR +HELD +HELL +HELP +HELPED +HELPING +HELPLESS +HENCE +HENDERSON +HENRY +HER +HERALD +HERE +HERE'S +HEREDITARY +HERS +HERSELF +HESITATED +HESITATION +HID +HIDDEN +HIDE +HIDEOUS +HIDING +HIGH +HIGHER +HIGHEST +HIGHLY +HIGHROAD +HILDA +HILL +HILLS +HILTON +HIM +HIMSELF +HINGES +HINT +HIRED +HIS +HISTORY +HIT +HLS +HOARSE +HOBBY +HOBSON'S +HOLD +HOLDER +HOLDERNESSE +HOLDHURST +HOLDING +HOLDS +HOLE +HOLLOW +HOLMES +HOLMES'S +HOLY +HOME +HONEST +HONOUR +HONOURABLE +HONOURED +HOOFS +HOOK +HOPE +HOPED +HOPELESS +HOPES +HOPKINS +HORACE +HORIZON +HORNER +HORRIBLE +HORRIBLY +HORRIFIED +HORROR +HORSE +HORSE'S +HORSES +HORSHAM +HOSMER +HOSPITAL +HOST +HOT +HOTEL +HOTELS +HOUND +HOUR +HOUR'S +HOURS +HOURS' +HOUSE +HOUSEHOLD +HOUSEKEEPER +HOUSES +HOW +HOW'S +HOWEVER +HUDDLED +HUDSON +HUGE +HULLO +HUM +HUMAN +HUMBLE +HUMOUR +HUNDRED +HUNDREDS +HUNG +HUNGRY +HUNT +HUNTED +HUNTER +HUNTING +HURLED +HURLSTONE +HURRIED +HURRIEDLY +HURRY +HURRYING +HURT +HUSBAND +HUSBAND'S +HUSH +HUT +HUXTABLE +HYDRAULIC +HYPOTHESIS +I +I'D +I'LL +I'M +I'VE +I. +ICE +IDEA +IDEAS +IDENTIFIED +IDENTITY +IF +IGNORANCE +IGNORANT +ILL +ILLNESS +ILLUSTRIOUS +IMAGINATION +IMAGINE +IMAGINED +IMMEDIATE +IMMEDIATELY +IMMENSE +IMMENSELY +IMPATIENCE +IMPATIENT +IMPATIENTLY +IMPLORE +IMPLORED +IMPLORING +IMPORTANCE +IMPORTANT +IMPOSSIBLE +IMPRESS +IMPRESSED +IMPRESSION +IMPRESSIONS +IMPRISONMENT +IMPROBABLE +IMPROVED +IMPULSE +IN +INCH +INCHES +INCIDENT +INCIDENTS +INCLINED +INCOHERENT +INCOME +INCONCEIVABLE +INCREASED +INCREDIBLE +INCREDULITY +INDEED +INDEPENDENT +INDIA +INDIAN +INDIANS +INDICATE +INDICATED +INDICATION +INDICATIONS +INDIGNATION +INDIVIDUAL +INDIVIDUALS +INDOORS +INDUCE +INEVITABLE +INEXORABLE +INEXPLICABLE +INFERENCE +INFERENCES +INFERNAL +INFINITELY +INFLICTED +INFLUENCE +INFORM +INFORMATION +INFORMED +INGENIOUS +INHABITANTS +INHABITED +INITIALS +INJURED +INJURIES +INJURY +INJUSTICE +INK +INN +INNER +INNOCENCE +INNOCENT +INQUEST +INQUIRE +INQUIRED +INQUIRIES +INQUIRING +INQUIRY +INSCRIPTION +INSIDE +INSIST +INSPECTION +INSPECTOR +INSTANCE +INSTANT +INSTANTLY +INSTEAD +INSTINCT +INSTINCTS +INSTRUCTIONS +INSTRUCTIVE +INSTRUMENT +INSTRUMENTS +INTELLECTUAL +INTELLIGENCE +INTELLIGENT +INTEND +INTENDED +INTENSE +INTENTION +INTENTLY +INTEREST +INTERESTED +INTERESTING +INTERESTS +INTERFERE +INTERNATIONAL +INTERPRETER +INTERRUPTED +INTERRUPTION +INTERVAL +INTERVALS +INTERVIEW +INTIMATE +INTO +INTRODUCE +INTRODUCED +INTRUDER +INTRUSION +INVALID +INVALUABLE +INVARIABLY +INVENT +INVESTIGATING +INVESTIGATION +INVESTIGATIONS +INVISIBLE +INVITATION +INVOLVED +IRENE +IRISH +IRON +IRREGULAR +IRRELEVANT +IS +ISLAND +ISN'T +ISSUE +IT +IT'S +ITALIAN +ITS +ITSELF +IVORY +IVY +J. +JACK +JACKET +JAGGED +JAIL +JAMES +JANUARY +JAW +JEALOUSY +JEFFERSON +JEWEL +JEWELLERY +JEWELS +JIM +JOB +JOHN +JOIN +JOINED +JOINING +JOKE +JOKING +JONAS +JONATHAN +JONES +JOSEPH +JOURNAL +JOURNEY +JOVE +JOVIAL +JOY +JUDGE +JUDGMENT +JUMP +JUMPED +JUNE +JURY +JUST +JUSTICE +JUSTIFIED +JUSTIFY +K. +KEEN +KEENLY +KEEP +KEEPER +KEEPING +KEEPS +KENNINGTON +KENSINGTON +KENT +KEPT +KEY +KEYS +KILL +KILLED +KILLING +KIND +KINDLY +KINDNESS +KING +KING'S +KISSED +KITCHEN +KNEE +KNEELING +KNEES +KNEW +KNIFE +KNOCK +KNOCKED +KNOCKING +KNOT +KNOW +KNOWING +KNOWLEDGE +KNOWN +KNOWS +L. +LABORATORY +LABYRINTH +LACK +LAD +LADDER +LADIES +LADS +LADY +LADY'S +LAID +LAIN +LAKE +LAL +LAMP +LAMPS +LAND +LANDED +LANDING +LANDLADY +LANDLORD +LANDSCAPE +LANE +LANGUAGE +LANTERN +LAP +LARGE +LARGER +LARGEST +LASCAR +LASHED +LAST +LATE +LATELY +LATER +LATEST +LATIMER +LATTER +LAUGH +LAUGHED +LAUGHING +LAUGHTER +LAUNCH +LAUSANNE +LAW +LAWN +LAWS +LAWYER +LAY +LAYING +LEAD +LEADER +LEADING +LEADS +LEAF +LEAN +LEANED +LEANING +LEARN +LEARNED +LEARNING +LEAST +LEATHER +LEAVE +LEAVES +LEAVING +LED +LEDGE +LEE +LEFT +LEG +LEGAL +LEGGED +LEGS +LEISURE +LEND +LENGTH +LENS +LESLIE +LESS +LESSON +LEST +LESTRADE +LESTRADE'S +LET +LETTER +LETTERS +LETTING +LEVEL +LIBERTY +LIBRARY +LID +LIDS +LIE +LIES +LIEUTENANT +LIFE +LIFTED +LIGHT +LIGHTED +LIGHTING +LIGHTLY +LIGHTS +LIKE +LIKED +LIKELY +LIKES +LIMB +LIMBS +LIMIT +LIMITED +LIMITS +LIMP +LINE +LINED +LINEN +LINES +LINING +LINK +LINKS +LION +LIP +LIPS +LIST +LISTEN +LISTENED +LISTENING +LISTLESS +LIT +LITHE +LITTER +LITTERED +LITTLE +LIVE +LIVED +LIVERPOOL +LIVES +LIVID +LIVING +LOADED +LOCAL +LOCK +LOCKED +LODGE +LODGER +LODGINGS +LOFTY +LOGICAL +LONDON +LONE +LONELY +LONG +LONGER +LOOK +LOOKED +LOOKING +LOOKS +LOOSE +LOOSENED +LOOT +LORD +LOSE +LOSING +LOSS +LOST +LOT +LOUD +LOUDER +LOUDLY +LOUNGING +LOVE +LOVED +LOVELY +LOVER +LOVES +LOVING +LOW +LOWER +LOWERED +LOYAL +LUCAS +LUCK +LUCKY +LUCY +LUGGAGE +LUMBER +LUNCH +LURKING +LUXURIOUS +LYING +LYSANDER +M. +MAC +MACDONALD +MACHINE +MACHINERY +MAD +MADAM +MADAME +MADDENING +MADE +MADMAN +MADNESS +MAGISTRATE +MAGNIFICENT +MAGNIFYING +MAHOMET +MAID +MAIDEN +MAIDS +MAIN +MAJESTY +MAJOR +MAKE +MAKES +MAKING +MALE +MALIGNANT +MALL +MAN +MAN'S +MANAGE +MANAGED +MANAGER +MANAGING +MANNER +MANNERS +MANOR +MANTELPIECE +MANTLE +MANUSCRIPT +MANY +MAP +MAPLETON +MARBLE +MARCH +MARIE +MARK +MARKED +MARKER +MARKET +MARKS +MARRIAGE +MARRIED +MARRY +MARTHA +MARTIN +MARVIN +MARY +MASK +MASON +MASS +MASSIVE +MASTER +MASTER'S +MASTERED +MASTERFUL +MATCH +MATCHES +MATE +MATERIAL +MATHEMATICAL +MATTER +MATTERS +MATTING +MAWSON'S +MAY +MAYBE +MCCARTHY +MCFARLANE +MCGINTY +MCMURDO +MCMURDO'S +ME +MEAL +MEALS +MEAN +MEANING +MEANS +MEANT +MEANTIME +MEANWHILE +MEASURE +MEASURED +MEASUREMENTS +MEDICAL +MEDICINE +MEET +MEETING +MEETS +MELANCHOLY +MELAS +MEMBER +MEMBERS +MEMORY +MEN +MENACING +MENTAL +MENTION +MENTIONED +MERCHANT +MERCY +MERE +MERELY +MEREST +MERRY +MESS +MESSAGE +MESSAGES +MESSENGER +MET +METAL +METALLIC +METHOD +METHODICAL +METHODS +METROPOLIS +METROPOLITAN +MIDDAY +MIDDLE +MIDLAND +MIDNIGHT +MIDST +MIGHT +MIGHTY +MILE +MILES +MILITARY +MILK +MILLION +MILLIONS +MILVERTON +MILVERTON'S +MIND +MINDS +MINE +MINERS +MINES +MINISTER +MINOR +MINUTE +MINUTELY +MINUTES +MIRROR +MISCHIEF +MISCHIEVOUS +MISERABLE +MISERY +MISFORTUNE +MISS +MISSED +MISSING +MISSION +MISTAKE +MISTAKEN +MISTER +MISTRESS +MITTON +MIXED +MIXTURE +MOAT +MODERN +MODEST +MOMENT +MOMENTS +MONDAY +MONEY +MONOGRAPH +MONSTER +MONSTROUS +MONTH +MONTHS +MONTPELLIER +MOOD +MOON +MOONLIGHT +MOOR +MOORS +MORAN +MORASS +MORDECAI +MORE +MORIARTY +MORMON +MORMONS +MORNING +MOROSE +MORRIS +MORRISON +MORROW +MORSE +MORSTAN +MORSTAN'S +MORTAL +MORTIMER +MORTON +MOSS +MOST +MOTHER +MOTHER'S +MOTION +MOTIONLESS +MOTIVE +MOTIVES +MOTTLED +MOUNT +MOUNTAIN +MOUNTAINS +MOUNTED +MOUSTACHE +MOUTH +MOVE +MOVED +MOVEMENT +MOVEMENTS +MOVING +MR. +MRS. +MUCH +MUD +MUDDY +MUFFLED +MUNRO +MURDER +MURDERED +MURDERER +MURDERERS +MURDERING +MURDEROUS +MURDERS +MURILLO +MURMUR +MURMURED +MUSCLES +MUSEUM +MUSGRAVE +MUSIC +MUST +MUTTERED +MUTTERING +MUZZLE +MY +MYCROFT +MYSELF +MYSTERIES +MYSTERIOUS +MYSTERY +N. +NAILS +NAKED +NAME +NAMED +NAMES +NANCY +NAPOLEON +NARRATIVE +NARRATIVES +NARROW +NARROWLY +NATIONAL +NATIVE +NATURAL +NATURALLY +NATURE +NAVAL +NEAR +NEARER +NEAREST +NEARLY +NEAT +NEATLY +NECESSARY +NECESSITY +NECK +NEED +NEEDED +NEEDS +NEGLECTED +NEIGHBOUR +NEIGHBOURHOOD +NEIGHBOURING +NEIGHBOURS +NEITHER +NELIGAN +NERVE +NERVES +NERVOUS +NERVOUSLY +NEST +NET +NEVADA +NEVER +NEVILLE +NEW +NEWCOMER +NEWLY +NEWS +NEWSPAPER +NEWSPAPERS +NEXT +NICE +NICELY +NIECE +NIGHT +NIGHT'S +NIGHTFALL +NIGHTS +NINE +NINETY +NO +NOBLE +NOBLEMAN +NOBODY +NOCTURNAL +NODDED +NOISE +NOISELESSLY +NONE +NOR +NORBURY +NORFOLK +NORMAL +NORTH +NORTHERN +NORTON +NORWOOD +NOSE +NOT +NOTE +NOTEBOOK +NOTED +NOTES +NOTHING +NOTICE +NOTICED +NOTION +NOVEL +NOW +NOWHERE +NUMBER +NUMBERS +NUMEROUS +NURSE +O' +O'CLOCK +OAK +OAKEN +OAKSHOTT +OATH +OATHS +OBERSTEIN +OBEYED +OBJECT +OBJECTION +OBJECTIONS +OBJECTS +OBLIGED +OBSCURE +OBSERVANT +OBSERVATION +OBSERVATIONS +OBSERVE +OBSERVED +OBSERVER +OBSERVING +OBSTACLE +OBSTINATE +OBTAIN +OBTAINED +OBVIOUS +OBVIOUSLY +OCCASION +OCCASIONAL +OCCASIONALLY +OCCASIONS +OCCUPANTS +OCCUPATION +OCCUPIED +OCCUR +OCCURRED +OCCURRENCE +ODD +ODDS +ODIOUS +ODOUR +OF +OFF +OFFENDED +OFFENSIVE +OFFER +OFFERED +OFFHAND +OFFICE +OFFICER +OFFICERS +OFFICES +OFFICIAL +OFFICIALS +OFTEN +OH +OIL +OLD +OLDACRE +OLDER +OLDEST +OMENED +ON +ONCE +ONE +ONE'S +ONES +ONLY +ONTO +ONWARD +OPEN +OPENED +OPENING +OPENS +OPENSHAW +OPERATIONS +OPINION +OPIUM +OPPONENT +OPPORTUNITY +OPPOSITE +OR +ORANGE +ORDER +ORDERED +ORDERS +ORDINARY +ORGANIZATION +ORIGIN +ORIGINAL +ORIGINALLY +OTHER +OTHER'S +OTHERS +OTHERWISE +OUGHT +OUNCE +OUR +OURS +OURSELVES +OUT +OUTER +OUTHOUSE +OUTLINE +OUTLINED +OUTRAGE +OUTSIDE +OUTSKIRTS +OUTSTRETCHED +OVER +OVERCOAT +OVERHUNG +OVERLOOKED +OVERPOWERING +OVERTAKE +OVERTAKEN +OVERTON +OWE +OWN +OWNER +OXFORD +OXSHOTT +P. +PA +PACE +PACED +PACES +PACING +PACK +PACKED +PACKET +PADDINGTON +PAGE +PAGES +PAID +PAIN +PAINFUL +PAINS +PAIR +PALACE +PALE +PALL +PALLOR +PALM +PANTING +PANTRY +PAPER +PAPERS +PARAGRAPH +PARALLEL +PARCEL +PARDON +PARENTS +PARIS +PARISH +PARK +PARLOUR +PAROXYSM +PART +PARTED +PARTICULAR +PARTICULARLY +PARTICULARS +PARTIES +PARTLY +PARTNER +PARTS +PARTY +PASS +PASSAGE +PASSAGES +PASSED +PASSENGER +PASSES +PASSING +PASSION +PASSIONATE +PAST +PATCH +PATENT +PATH +PATHS +PATHWAY +PATIENCE +PATIENT +PATRICK +PAUSE +PAUSED +PAVEMENT +PAY +PAYING +PAYS +PEACE +PEACEFUL +PEARL +PEARLS +PECULIAR +PECULIARLY +PEDRO +PEEP +PEEPED +PEEPING +PEERED +PEERING +PEG +PEN +PENCIL +PENETRATING +PENNIES +PEOPLE +PERCEIVE +PERCEIVED +PERCY +PERFECT +PERFECTLY +PERFORMANCE +PERHAPS +PERIOD +PERMANENT +PERMISSION +PERMIT +PERMITTED +PERPETUAL +PERPLEXITY +PERSON +PERSONAL +PERSONALITY +PERSONALLY +PERSONS +PERSUADE +PERSUADED +PETER +PETERS +PETERSON +PETTY +PEW +PHELPS +PHILADELPHIA +PHOTOGRAPH +PHYSICAL +PICK +PICKED +PICKING +PICTURE +PICTURES +PIECE +PIECES +PIERCED +PILE +PILED +PILLS +PIN +PINK +PINKERTON +PINNED +PINNER +PIPE +PIPES +PIPS +PISTOL +PISTOLS +PIT +PITCH +PITIABLE +PITY +PLACE +PLACED +PLACES +PLACID +PLAIN +PLAINLY +PLAN +PLANNED +PLANS +PLANT +PLANTATION +PLASTER +PLATE +PLATFORM +PLAUSIBLE +PLAY +PLAYED +PLAYING +PLAYS +PLEASANT +PLEASE +PLEASED +PLEASING +PLEASURE +PLEDGE +PLENTY +PLOT +PLUCKED +PLUMP +PLUNGED +PLYMOUTH +POCKET +POCKETBOOK +POCKETS +POINT +POINTED +POINTING +POINTS +POISON +POISONED +POISONOUS +POKER +POLICE +POLICEMAN +POLICEMEN +POLICY +POLISHED +POLITICAL +POLITICS +POMPEY +POND +PONDICHERRY +POOL +POOR +POORER +POPULAR +PORLOCK +PORT +PORTER +PORTION +PORTRAIT +POSITION +POSITIVE +POSSESS +POSSESSED +POSSESSION +POSSESSIONS +POSSIBILITIES +POSSIBILITY +POSSIBLE +POSSIBLY +POST +POSTED +POSTMARK +POUCH +POUND +POUNDS +POURED +POURING +POWDER +POWER +POWERFUL +POWERS +PRACTICAL +PRACTICALLY +PRACTICE +PRACTISE +PRACTITIONER +PRAY +PREARRANGED +PRECAUTION +PRECAUTIONS +PRECIOUS +PRECISE +PRECISELY +PREFER +PREMATURE +PREMIER +PREMISES +PRENDERGAST +PREPARE +PREPARED +PREPARING +PREPOSTEROUS +PRESENCE +PRESENT +PRESENTATION +PRESENTED +PRESENTLY +PRESENTS +PRESERVE +PRESERVED +PRESERVER +PRESS +PRESSED +PRESSING +PRESSURE +PRESUMABLY +PRESUME +PRESUMING +PRETEND +PRETTY +PREVENT +PREVENTED +PREVENTING +PREVIOUS +PREY +PRICE +PRIDE +PRIME +PRINCIPAL +PRINT +PRINTED +PRINTS +PRISON +PRISONER +PRISONERS +PRIVATE +PRIVILEGE +PRIZE +PROBABILITY +PROBABLE +PROBABLY +PROBLEM +PROBLEMS +PROCEED +PROCEEDED +PROCEEDING +PROCEEDINGS +PROCESS +PROCLAIMED +PRODUCE +PRODUCED +PRODUCING +PROFESSION +PROFESSIONAL +PROFESSOR +PROFESSOR'S +PROFIT +PROFOUND +PROGRESS +PROJECTING +PROMISE +PROMISED +PROMISES +PROMISING +PROMPT +PRONOUNCED +PROOF +PROOFS +PROPER +PROPERTY +PROPHET +PROPOSE +PROPOSED +PROPOSITION +PROSAIC +PROSPECT +PROSPERED +PROTECTION +PROTRUDED +PROTRUDING +PROUD +PROVE +PROVED +PROVES +PROVIDED +PUBLIC +PUBLICATION +PUBLICITY +PUCKERED +PUFFED +PUFFING +PULL +PULLED +PULLING +PUNISHED +PUNISHMENT +PURCHASED +PURE +PURELY +PURPLE +PURPOSE +PURPOSES +PURSE +PURSUED +PURSUER +PURSUERS +PURSUING +PURSUIT +PUSH +PUSHED +PUSHING +PUT +PUTS +PUTTING +PUZZLE +PUZZLED +PYCROFT +PYLAND +QUALITIES +QUALITY +QUARREL +QUARTER +QUARTERS +QUEER +QUEST +QUESTION +QUESTIONED +QUESTIONING +QUESTIONS +QUICK +QUICKLY +QUIET +QUIETLY +QUITE +QUIVER +QUIVERED +QUIVERING +QUOTE +R. +RABBIT +RACE +RACHEL +RACK +RAGE +RAGGED +RAIL +RAILINGS +RAILROAD +RAILWAY +RAIN +RAISE +RAISED +RAISING +RALPH +RAN +RANCE +RANG +RANGE +RAPID +RAPIDLY +RARE +RASCAL +RAT +RATE +RATHER +RATTLE +RATTLED +RATTLING +RAVINE +RAVING +RE +REACH +REACHED +REACHES +REACHING +REACTION +READ +READER +READERS +READILY +READING +READY +REAL +REALIZE +REALIZED +REALLY +REAPPEARED +REASON +REASONABLE +REASONER +REASONING +REASONS +REBELS +RECALL +RECALLED +RECEIVE +RECEIVED +RECEIVES +RECEIVING +RECENT +RECENTLY +RECKLESS +RECKON +RECOGNIZE +RECOGNIZED +RECOGNIZING +RECOLLECT +RECOLLECTION +RECOMMEND +RECOMMENDED +RECONSTRUCT +RECORD +RECORDED +RECORDS +RECOVER +RECOVERED +RECOVERING +RED +REDDISH +REFER +REFERENCE +REFERRED +REFLECTED +REFLECTION +REFUGE +REFUSAL +REFUSE +REFUSED +REGARD +REGIMENT +REGRET +REGULAR +REICHENBACH +RELATION +RELATIONS +RELATIVE +RELATIVES +RELAXED +RELEASE +RELEASED +RELICS +RELIEF +RELIEVED +RELIGION +RELY +REMAIN +REMAINDER +REMAINED +REMAINING +REMAINS +REMARK +REMARKABLE +REMARKABLY +REMARKED +REMARKS +REMEMBER +REMEMBERED +REMIND +REMONSTRANCE +REMOVE +REMOVED +RENEWED +RENT +REPARATION +REPEAT +REPEATED +REPLACE +REPLACED +REPLIED +REPLY +REPORT +REPORTED +REPORTS +REPRESENT +REPRESENTED +REPROACH +REPUTATION +REQUEST +RESEARCH +RESEARCHES +RESEMBLANCE +RESERVE +RESERVED +RESIDENCE +RESIDENT +RESIDING +RESISTANCE +RESOLUTE +RESOLUTION +RESOLVED +RESOURCES +RESPECT +RESPECTABLE +RESPECTS +RESPONSIBILITY +RESPONSIBLE +REST +RESTED +RESTING +RESTLESS +RESULT +RESULTS +RESUME +RESUMED +RETAIN +RETAINED +RETICENCE +RETIRED +RETIRING +RETREAT +RETURN +RETURNED +RETURNING +RETURNS +REUBEN +REVEALED +REVENGE +REVOLVER +REWARD +RICH +RICHER +RICHEST +RID +RIDER +RIDING +RIFLE +RIFLED +RIGHT +RIGHTS +RIGID +RING +RINGING +RINGS +RISE +RISEN +RISING +RISK +RITUAL +RIVAL +RIVER +RIVETED +ROAD +ROADS +ROADWAY +ROAR +ROARED +ROBBED +ROBBERY +ROBERT +ROCK +ROCKS +RODE +ROLLED +ROLLING +ROMANCE +RONALD +ROOF +ROOFS +ROOM +ROOMS +ROOT +ROOTS +ROPE +ROSE +ROSS +ROUGH +ROUGHLY +ROUND +ROUNDED +ROUSE +ROUSED +ROUTE +ROUTINE +ROW +ROWS +ROYAL +ROYLOTT +ROYLOTT'S +RUBBED +RUBBING +RUCASTLE +RUDDY +RUDE +RUEFULLY +RUFFIAN +RUFFIANS +RUG +RUGGED +RUIN +RUINED +RULE +RULES +RUM +RUMOURS +RUN +RUNNING +RUNS +RUSH +RUSHED +RUSHING +RUSSIAN +RUSTIC +RUSTY +RYDER +S. +SACRED +SAD +SADLY +SAFE +SAFELY +SAFER +SAFETY +SAHIB +SAID +SAILING +SAILOR +SAILORS +SAINT +SAINTS +SAKE +SALARY +SALESMAN +SALLOW +SALOON +SALT +SALTIRE +SAME +SAMPLE +SAN +SANDY +SANK +SARAH +SAT +SATISFACTION +SATISFACTORY +SATISFIED +SATISFY +SATURDAY +SAVAGE +SAVE +SAVED +SAVING +SAW +SAWED +SAY +SAYING +SAYS +SCALE +SCANDAL +SCANLAN +SCARED +SCARLET +SCATTERED +SCENE +SCENT +SCHEME +SCHOOL +SCIENCE +SCIENTIFIC +SCISSORS +SCORE +SCORED +SCOTCH +SCOTLAND +SCOTT +SCOUNDREL +SCOWRERS +SCRAMBLED +SCRAP +SCRATCH +SCRAWLED +SCREAM +SCREAMED +SCREAMING +SCREAMS +SCREEN +SCREW +SCRIBBLED +SCUFFLE +SEA +SEAL +SEALED +SEAMAN +SEARCH +SEARCHED +SEARCHING +SEASON +SEAT +SEATED +SECOND +SECONDS +SECRECY +SECRET +SECRETARY +SECRETS +SECURE +SECURED +SECURITIES +SECURITY +SEE +SEEING +SEEK +SEEKING +SEEM +SEEMED +SEEMS +SEEN +SEES +SEIZE +SEIZED +SELDOM +SELECT +SELF +SELFISH +SELL +SEND +SENDER +SENDING +SENIOR +SENSATION +SENSATIONAL +SENSE +SENSELESS +SENSES +SENSITIVE +SENT +SENTENCE +SENTENCES +SEPARATE +SEPARATED +SEQUEL +SEQUENCE +SERGEANT +SERIES +SERIOUS +SERIOUSLY +SERPENTINE +SERVANT +SERVANTS +SERVE +SERVED +SERVICE +SERVICES +SET +SETTEE +SETTING +SETTLE +SETTLED +SETTLING +SEVEN +SEVENTEEN +SEVENTH +SEVENTY +SEVERAL +SEVERE +SEVERELY +SHADE +SHADOW +SHADOWED +SHADOWS +SHAFTER +SHAFTER'S +SHAKE +SHAKEN +SHAKING +SHALL +SHAME +SHAPE +SHAPED +SHARE +SHARED +SHARING +SHARP +SHARPLY +SHATTERED +SHAVED +SHAVEN +SHAWL +SHE +SHE'S +SHED +SHEEP +SHEER +SHEET +SHEETS +SHELF +SHELTER +SHERLOCK +SHIELD +SHILLING +SHILLINGS +SHINING +SHIP +SHIPPING +SHIRT +SHIVERING +SHLESSINGER +SHOCK +SHOCKED +SHOCKING +SHOE +SHOES +SHOLTO +SHOLTO'S +SHONE +SHOOK +SHOOT +SHOOTING +SHOP +SHORT +SHORTER +SHORTLY +SHOT +SHOTGUN +SHOTS +SHOULD +SHOULDER +SHOULDERS +SHOULDN'T +SHOUT +SHOUTED +SHOUTING +SHOW +SHOWED +SHOWING +SHOWN +SHOWS +SHREWD +SHRIEK +SHRIEKED +SHRILL +SHRINKING +SHRUBBERY +SHRUGGED +SHRUGGING +SHUT +SHUTTERS +SICK +SIDE +SIDEBOARD +SIDES +SIDEWAYS +SIERRA +SIGH +SIGHT +SIGN +SIGNAL +SIGNALS +SIGNATURE +SIGNED +SIGNIFICANCE +SIGNS +SIKH +SIKHS +SILAS +SILENCE +SILENT +SILK +SILL +SILVER +SIMILAR +SIMON +SIMPLE +SIMPLER +SIMPLICITY +SIMPLY +SIMPSON +SIN +SINCE +SINGH +SINGLE +SINGULAR +SINGULARLY +SINISTER +SINK +SINKING +SIR +SISTER +SISTER'S +SIT +SITTING +SITUATED +SITUATION +SIX +SIXTEEN +SIXTH +SIXTY +SIZE +SIZED +SKETCH +SKETCHES +SKILFUL +SKILL +SKIN +SKULL +SKY +SLAMMED +SLANEY +SLAPPED +SLATE +SLEEP +SLEEPER +SLEEPING +SLEEPLESS +SLEEPS +SLEEPY +SLEEVE +SLEEVES +SLEPT +SLIGHT +SLIGHTEST +SLIGHTLY +SLIP +SLIPPED +SLIPPER +SLIPPERS +SLIPS +SLIT +SLOPE +SLOPING +SLOW +SLOWED +SLOWLY +SLY +SMALL +SMALLER +SMALLEST +SMART +SMASHED +SMELL +SMILE +SMILED +SMILING +SMITH +SMITH'S +SMOKE +SMOKED +SMOKING +SMOOTH +SMOOTHED +SMOULDERING +SNAKE +SNAP +SNAPPED +SNARL +SNATCHED +SNEER +SNIFFED +SNOW +SO +SOAMES +SOB +SOBBING +SOBER +SOCIAL +SOCIETY +SOCKS +SODDEN +SOFA +SOFT +SOFTLY +SOIL +SOLD +SOLDIER +SOLDIERS +SOLE +SOLEMN +SOLEMNLY +SOLID +SOLITARY +SOLUTION +SOLVE +SOLVED +SOLVING +SOMBRE +SOME +SOMEBODY +SOMEHOW +SOMEONE +SOMETHING +SOMETIMES +SOMEWHAT +SOMEWHERE +SON +SON'S +SONS +SOON +SOONER +SOOTHING +SORELY +SORROW +SORRY +SORT +SOUGHT +SOUL +SOULS +SOUND +SOUNDED +SOUNDS +SOURCE +SOUTH +SOUTHAMPTON +SOVEREIGN +SPACE +SPANISH +SPARE +SPARKLED +SPEAK +SPEAKING +SPEAKS +SPECIAL +SPECIALIST +SPECIALLY +SPECIMEN +SPECTACLES +SPECULATION +SPEECH +SPEED +SPEEDILY +SPEND +SPENT +SPIRIT +SPIRITED +SPIRITS +SPITE +SPLENDID +SPOKE +SPOKEN +SPONGE +SPORT +SPORTING +SPORTSMAN +SPOT +SPOTTED +SPRANG +SPRAY +SPREAD +SPRING +SPRINGING +SPRUNG +SQUARE +SQUEEZE +SQUIRE +STABBED +STABLE +STABLES +STAFF +STAGE +STAGGERED +STAIN +STAINED +STAINS +STAIR +STAIRCASE +STAIRS +STAKE +STAMFORD +STAMMERED +STAMPED +STAND +STANDARD +STANDING +STANDS +STANGERSON +STANLEY +STAR +STARE +STARED +STARING +STARK +STARS +START +STARTED +STARTING +STARTLED +STARTLING +STATE +STATED +STATELY +STATEMENT +STATES +STATESMAN +STATION +STATUES +STAUNTON +STAY +STAYED +STAYING +STEADILY +STEADY +STEAL +STEAM +STEEL +STEEP +STEP +STEPFATHER +STEPPED +STEPPING +STEPS +STERN +STERNDALE +STERNLY +STEWARD +STICK +STICKING +STILL +STIRRED +STIRRING +STOCK +STOKE +STOLE +STOLEN +STONE +STONER +STONES +STOOD +STOOL +STOOPED +STOOPING +STOP +STOPER +STOPPED +STOPPING +STORE +STORIES +STORM +STORY +STOUT +STOVE +STRAGGLING +STRAIGHT +STRAIN +STRAINED +STRAKER +STRAND +STRANGE +STRANGER +STRANGERS +STRANGEST +STRAW +STREAM +STREAMING +STREET +STREETS +STRENGTH +STRETCH +STRETCHED +STRETCHING +STRICKEN +STRICT +STRIDE +STRIKE +STRIKES +STRIKING +STRING +STRODE +STROKE +STROLL +STROLLED +STRONG +STRONGER +STRONGEST +STRONGLY +STRUCK +STRUGGLE +STRUGGLED +STRUGGLING +STUCK +STUDENT +STUDENTS +STUDIES +STUDY +STUDYING +STUFF +STUFFED +STUMBLED +STUMP +STYLE +SUBDUED +SUBJECT +SUBJECTS +SUBMARINE +SUBMIT +SUBMITTED +SUBSTANCE +SUBTLE +SUBURBAN +SUCCEED +SUCCEEDED +SUCCESS +SUCCESSES +SUCCESSFUL +SUCCESSION +SUCH +SUDDEN +SUDDENLY +SUFFER +SUFFERED +SUFFERING +SUFFICIENT +SUFFICIENTLY +SUGGEST +SUGGESTED +SUGGESTION +SUGGESTIVE +SUGGESTS +SUICIDE +SUIT +SUITE +SUITED +SULLEN +SUM +SUMMER +SUMMONED +SUMMONS +SUMS +SUN +SUNBURNED +SUNDIAL +SUNK +SUNLIGHT +SUNSHINE +SUPERFICIAL +SUPERIOR +SUPPER +SUPPLY +SUPPORT +SUPPOSE +SUPPOSED +SUPPOSING +SUPPOSITION +SUPPRESSED +SURE +SURELY +SURFACE +SURGEON +SURGERY +SURMISE +SURPRISE +SURPRISED +SURPRISING +SURREY +SURROUNDED +SURROUNDINGS +SUSAN +SUSPECT +SUSPECTED +SUSPENSE +SUSPICION +SUSPICIONS +SUSPICIOUS +SUSSEX +SUTHERLAND +SWANDAM +SWARTHY +SWEAR +SWEEP +SWEET +SWEETHEART +SWEPT +SWIFT +SWIFTLY +SWING +SWINGING +SWOLLEN +SWORE +SWORN +SWUNG +SYDENHAM +SYMPATHIES +SYMPATHY +SYMPTOMS +SYSTEM +SYSTEMATIC +T. +TABLE +TAIL +TAKE +TAKEN +TAKES +TAKING +TALE +TALENT +TALENTS +TALK +TALKED +TALKING +TALKS +TALL +TALLER +TANGLE +TANGLED +TAP +TAPE +TAPPED +TAPPING +TASK +TASTE +TASTES +TAVISTOCK +TAX +TEA +TEACH +TEAM +TEAR +TEARS +TECHNICAL +TED +TEDDY +TEETH +TELEGRAM +TELEGRAMS +TELEGRAPH +TELEGRAPHED +TELL +TELLING +TELLS +TEMPER +TEMPLE +TEMPLES +TEMPORARY +TEN +TENANT +TERM +TERMS +TERRACE +TERRIBLE +TERRIBLY +TERRIER +TERRIFIED +TERROR +TEST +TESTED +THADDEUS +THAMES +THAN +THANK +THANKS +THAT +THAT'S +THC +THE +THEATRE +THEIR +THEIRS +THEM +THEMSELVES +THEN +THEORIES +THEORY +THERE +THERE'S +THEREFORE +THERESA +THESE +THEY +THEY'VE +THICK +THICKLY +THIEF +THIEVES +THIGH +THIN +THING +THINGS +THINK +THINKING +THINKS +THIRD +THIRTEEN +THIRTY +THIS +THORN +THOROUGHFARE +THOROUGHLY +THOSE +THOUGH +THOUGHT +THOUGHTFUL +THOUGHTFULLY +THOUGHTS +THOUSAND +THREAD +THREADS +THREAT +THREATENED +THREATENING +THREATS +THREE +THRESHOLD +THREW +THRILL +THROAT +THROUGH +THROUGHOUT +THROW +THROWING +THROWN +THROWS +THRUST +THUD +THUMB +THURSDAY +THUS +TICKET +TICKETS +TIDE +TIE +TIED +TIGER +TIGHTLY +TILL +TIMBER +TIME +TIMES +TIN +TINGE +TINGED +TINT +TINTED +TINY +TIPS +TIRED +TITLE +TO +TOBACCO +TOBY +TOE +TOES +TOGETHER +TOLD +TOLLER +TOMORROW +TONE +TONES +TONGA +TONGUE +TOO +TOOK +TOOL +TOOTH +TOP +TORE +TORN +TOSSED +TOSSING +TOTTENHAM +TOUCH +TOUCHED +TOUCHING +TOWARDS +TOWERS +TOWN +TOWNSHIP +TRACE +TRACED +TRACES +TRACING +TRACK +TRACKED +TRACKS +TRADE +TRAGEDY +TRAGIC +TRAIL +TRAIN +TRAINED +TRAINER +TRAINER'S +TRAINING +TRAINS +TRAITOR +TRAMP +TRAMPLED +TRAP +TRAPDOOR +TRAVEL +TRAVELLED +TRAVELLER +TRAVELLERS +TRAVELLING +TRAVERSED +TRAY +TREAD +TREASURE +TREASURER +TREAT +TREATED +TREATMENT +TREATY +TREE +TREES +TREGENNIS +TRELAWNEY +TREMBLING +TREMENDOUS +TREVELYAN +TREVOR +TRIAL +TRICK +TRICKS +TRIED +TRIES +TRIFLE +TRIFLING +TRIM +TRIP +TRIUMPH +TRIUMPHANT +TRIVIAL +TROOPS +TROUBLE +TROUBLED +TROUBLES +TROUSERS +TRUE +TRULY +TRUNK +TRUST +TRUSTED +TRUSTY +TRUTH +TRY +TRYING +TUBE +TUESDAY +TUFTED +TUNBRIDGE +TURF +TURKISH +TURN +TURNED +TURNER +TURNING +TURNS +TUT +TUTOR +TWEED +TWELVE +TWENTY +TWICE +TWILIGHT +TWINKLE +TWINKLED +TWINKLING +TWISTED +TWISTING +TWITCHING +TWO +TYPE +TYPEWRITING +TYPEWRITTEN +TYRES +UGLY +ULSTER +UMBRELLA +UN +UNABLE +UNCERTAIN +UNCLE +UNCLE'S +UNCONSCIOUS +UNCONTROLLABLE +UNDER +UNDERGROUND +UNDERNEATH +UNDERSTAND +UNDERSTANDING +UNDERSTOOD +UNDID +UNDOUBTEDLY +UNEASINESS +UNEASY +UNEXPECTED +UNFOLDED +UNFORTUNATE +UNFORTUNATELY +UNHAPPY +UNICORN +UNIFORM +UNION +UNIQUE +UNITED +UNIVERSITY +UNKEMPT +UNKNOWN +UNLESS +UNLIKE +UNLIKELY +UNLOCKED +UNMARRIED +UNNATURAL +UNNECESSARY +UNOFFICIAL +UNPLEASANT +UNRAVEL +UNSEEN +UNTIL +UNUSUAL +UP +UPON +UPPER +UPSET +UPSTAIRS +UPWARD +URGENT +US +USE +USED +USEFUL +USELESS +USES +USHERED +USING +USUAL +USUALLY +UTAH +UTMOST +UTTER +UTTERED +UTTERLY +V. +VACANT +VAGUE +VAGUELY +VAIN +VALET +VALISE +VALLEY +VALUABLE +VALUE +VAN +VANISH +VANISHED +VARIOUS +VEIL +VELVET +VENERABLE +VENGEANCE +VENOMOUS +VENTILATOR +VENTURE +VENTURED +VERANDA +VERGE +VERIFY +VERMISSA +VERY +VESSEL +VICAR +VICARAGE +VICTIM +VICTIMS +VICTOR +VICTORIA +VICTORY +VIEW +VIEWS +VIGIL +VIGOROUS +VILE +VILLA +VILLAGE +VILLAGES +VILLAIN +VILLAINY +VILLAS +VINDICTIVE +VIOLENCE +VIOLENT +VIOLENTLY +VIOLET +VIOLIN +VISIBLE +VISION +VISIT +VISITED +VISITING +VISITOR +VISITORS +VISITS +VITAL +VOICE +VOICES +VOLUME +VOLUMES +VOLUNTEERED +VON +VOYAGE +WAGER +WAGONS +WAIST +WAISTCOAT +WAIT +WAITED +WAITING +WAITS +WAKE +WALK +WALKED +WALKING +WALKS +WALL +WALLS +WALTER +WALTERS +WANDER +WANDERED +WANDERING +WANT +WANTED +WANTING +WANTS +WAR +WARDERS +WARM +WARMLY +WARN +WARNED +WARNING +WARRANT +WARREN +WARREN'S +WAS +WASH +WASN'T +WASTE +WASTED +WATCH +WATCHED +WATCHING +WATER +WATERLOO +WATSON +WAVE +WAVED +WAX +WAY +WAYS +WE +WE'D +WE'LL +WE'RE +WE'VE +WEAK +WEAKER +WEAKNESS +WEALTH +WEALTHY +WEAPON +WEAPONS +WEAR +WEARING +WEARY +WEATHER +WEB +WEDDING +WEDNESDAY +WEEK +WEEKS +WEIGHT +WEIRD +WELCOME +WELL +WELLS +WENT +WERE +WEST +WESTBURY +WESTMINSTER +WET +WHARF +WHAT +WHAT'S +WHATEVER +WHEEL +WHEELED +WHEELER +WHEELS +WHEN +WHENCE +WHENEVER +WHERE +WHERE'S +WHEREABOUTS +WHEREAS +WHEREVER +WHETHER +WHICH +WHILE +WHIP +WHIPPED +WHIRL +WHISKERS +WHISKY +WHISPER +WHISPERED +WHISTLE +WHISTLED +WHITE +WHITEHALL +WHITEWASHED +WHITNEY +WHO +WHO'S +WHOEVER +WHOLE +WHOM +WHOSE +WHY +WICKED +WIDE +WIDESPREAD +WIDOW +WIDOWER +WIFE +WIFE'S +WIGGINS +WILCOX +WILD +WILDER +WILDERNESS +WILDLY +WILL +WILLIAM +WILLIAMS +WILLIAMSON +WILLING +WILLOUGHBY +WILSON +WIN +WINCHESTER +WIND +WINDIBANK +WINDING +WINDOW +WINDOWS +WINDS +WINE +WING +WINNING +WINTER +WIRE +WIRED +WISE +WISER +WISH +WISHED +WISHES +WISTERIA +WIT'S +WITH +WITHDRAW +WITHDREW +WITHIN +WITHOUT +WITNESS +WITNESSES +WITS +WIVES +WOKE +WOKING +WOMAN +WOMAN'S +WOMEN +WON +WON'T +WONDER +WONDERED +WONDERFUL +WONDERFULLY +WONDERING +WOOD +WOODEN +WOODLEY +WOODS +WOODWORK +WOOLWICH +WORD +WORDS +WORE +WORK +WORKED +WORKING +WORKMAN +WORKS +WORLD +WORN +WORSE +WORST +WORTH +WORTHY +WOULD +WOULDN'T +WOUND +WOUNDED +WOVEN +WRAPPED +WRECK +WRETCHED +WRIST +WRISTS +WRITE +WRITER +WRITHED +WRITHING +WRITING +WRITTEN +WRONG +WRONGED +WROTE +WROUGHT +WRUNG +YARD +YARDS +YE +YEAR +YEAR'S +YEARS +YELL +YELLED +YELLOW +YES +YESTERDAY +YET +YIELDED +YONDER +YORK +YOU +YOU'D +YOU'LL +YOU'RE +YOU'VE +YOUNG +YOUNGER +YOUNGSTER +YOUR +YOURS +YOURSELF +YOURSELVES +YOUTH +YOXLEY +ZERO diff --git a/samples/LMTutorial/config b/samples/LMTutorial/config new file mode 100755 index 0000000..2d8b89d --- /dev/null +++ b/samples/LMTutorial/config @@ -0,0 +1,3 @@ +LPCALC: TRACE = 3 +LMODEL: TRACE = 3 + diff --git a/samples/LMTutorial/extras/60k.wlist b/samples/LMTutorial/extras/60k.wlist new file mode 100755 index 0000000..f13ee3c --- /dev/null +++ b/samples/LMTutorial/extras/60k.wlist @@ -0,0 +1,60047 @@ +!!UNK +!COLON +!COMMA +!DASH +!DOUBLE-QUOTE +!ELLIPSIS +!EXCLAMATION-POINT +!HYPHEN +!LEFT-BRACE +!LEFT-PAREN +!PERIOD +!QUESTION-MARK +!RIGHT-BRACE +!RIGHT-PAREN +!SEMI-COLON +!SHARP-SIGN +!SINGLE-QUOTE +'CAUSE +'EM +'N +'TIL + + +A +A. +A.'S +A.S +AADVANTAGE +AARON +AARON'S +AARONSON +AB +ABABA +ABACHA +ABACHA'S +ABACK +ABACUS +ABAD +ABALKIN +ABALONE +ABANDON +ABANDONED +ABANDONING +ABANDONMENT +ABANDONS +ABATE +ABATED +ABATEMENT +ABATEMENTS +ABATING +ABBA +ABBAS +ABBE +ABBENHAUS +ABBETT +ABBEVILLE +ABBEY +ABBEY'S +ABBIE +ABBOT +ABBOTT +ABBOTT'S +ABBOUD +ABBOUD'S +ABBREVIATED +ABBREVIATION +ABBY +ABD +ABDALLAH +ABDEL +ABDIC +ABDICATE +ABDICATED +ABDICATING +ABDICATION +ABDO +ABDOMEN +ABDOMINAL +ABDUCT +ABDUCTED +ABDUCTING +ABDUCTION +ABDUCTIONS +ABDUCTOR +ABDUCTORS +ABDUL +ABDULLA +ABDULLAH +ABE +ABED +ABEDI +ABEL +ABELL +ABELLO +ABEQUA +ABER +ABERCROMBIE +ABERDEEN +ABERNATHY +ABERNATHY'S +ABERRANT +ABERRATION +ABERRATIONS +ABETTED +ABETTING +ABEX +ABEYANCE +ABHOR +ABHORRED +ABHORRENCE +ABHORRENT +ABHORS +ABIDE +ABIDED +ABIDES +ABIDING +ABIDJAN +ABIGAIL +ABILENE +ABILITIES +ABILITY +ABINGTON +ABIOLA +ABIOLA'S +ABITIBI +ABJECT +ABKHAZIA +ABKHAZIAN +ABKHAZIANS +ABLAZE +ABLE +ABLY +ABNER +ABNORMAL +ABNORMALITIES +ABNORMALITY +ABNORMALLY +ABO +ABOARD +ABODE +ABOLISH +ABOLISHED +ABOLISHES +ABOLISHING +ABOLISHMENT +ABOLITION +ABOLITIONIST +ABOMINABLE +ABOMINATION +ABOODI +ABORIGINAL +ABORIGINES +ABORT +ABORTED +ABORTING +ABORTION +ABORTIONIST +ABORTIONISTS +ABORTIONS +ABORTIVE +ABOUHALIMA +ABOUND +ABOUNDED +ABOUNDS +ABOUT +ABOVE +ABRAHAM +ABRAHAM'S +ABRAHAMS +ABRAHAMSON +ABRAM +ABRAMOWITZ +ABRAMS +ABRAMS' +ABRAMSON +ABRASION +ABRASIONS +ABRASIVE +ABRASIVES +ABREAST +ABREGO +ABREU +ABRIDGED +ABROAD +ABROGATE +ABROGATED +ABROGATION +ABRUPT +ABRUPTLY +ABSCAM +ABSCONDED +ABSENCE +ABSENCES +ABSENT +ABSENTEE +ABSENTEEISM +ABSENTIA +ABSOLUT +ABSOLUTE +ABSOLUTELY +ABSOLUTES +ABSOLUTION +ABSOLUTIST +ABSOLVE +ABSOLVED +ABSORB +ABSORBED +ABSORBENCY +ABSORBENT +ABSORBERS +ABSORBING +ABSORBS +ABSORPTION +ABSTAIN +ABSTAINED +ABSTAINING +ABSTENTION +ABSTENTIONS +ABSTINENCE +ABSTRACT +ABSTRACTION +ABSTRACTIONS +ABSTRACTS +ABSURD +ABSURDIST +ABSURDITIES +ABSURDITY +ABSURDLY +ABU +ABUJA +ABUL +ABUNDANCE +ABUNDANT +ABUNDANTLY +ABURTO +ABUSE +ABUSED +ABUSER +ABUSERS +ABUSES +ABUSING +ABUSIVE +ABUT +ABUTS +ABUTTING +ABUZZ +ABYSMAL +ABYSS +ABZUG +ACACIA +ACADEME +ACADEMIA +ACADEMIC +ACADEMICALLY +ACADEMICIAN +ACADEMICIANS +ACADEMICS +ACADEMIES +ACADEMY +ACADEMY'S +ACADIA +ACAMPORA +ACAPULCO +ACCEDE +ACCEDED +ACCEDING +ACCELERANT +ACCELERATE +ACCELERATED +ACCELERATES +ACCELERATING +ACCELERATION +ACCELERATOR +ACCELERATORS +ACCENT +ACCENTED +ACCENTS +ACCENTUATE +ACCENTUATED +ACCEPT +ACCEPTABILITY +ACCEPTABLE +ACCEPTANCE +ACCEPTANCES +ACCEPTED +ACCEPTING +ACCEPTS +ACCESS +ACCESSED +ACCESSIBILITY +ACCESSIBLE +ACCESSING +ACCESSION +ACCESSORIES +ACCESSORY +ACCIDENT +ACCIDENTAL +ACCIDENTALLY +ACCIDENTLY +ACCIDENTS +ACCIVAL +ACCLAIM +ACCLAIMED +ACCLAMATION +ACCLIMATED +ACCOLADE +ACCOLADES +ACCOMMODATE +ACCOMMODATED +ACCOMMODATES +ACCOMMODATING +ACCOMMODATION +ACCOMMODATIONS +ACCOMMODATIVE +ACCOMODATE +ACCOMPANIED +ACCOMPANIES +ACCOMPANIMENT +ACCOMPANIST +ACCOMPANY +ACCOMPANYING +ACCOMPLI +ACCOMPLICE +ACCOMPLICES +ACCOMPLISH +ACCOMPLISHED +ACCOMPLISHES +ACCOMPLISHING +ACCOMPLISHMENT +ACCOMPLISHMENTS +ACCOR +ACCORD +ACCORD'S +ACCORDANCE +ACCORDED +ACCORDING +ACCORDINGLY +ACCORDION +ACCORDIONS +ACCORDS +ACCOSTED +ACCOUNT +ACCOUNTABILITY +ACCOUNTABLE +ACCOUNTANCY +ACCOUNTANT +ACCOUNTANT'S +ACCOUNTANTS +ACCOUNTANTS' +ACCOUNTED +ACCOUNTING +ACCOUNTS +ACCRA +ACCREDITATION +ACCREDITED +ACCREDITING +ACCRUAL +ACCRUE +ACCRUED +ACCRUING +ACCUMULATE +ACCUMULATED +ACCUMULATES +ACCUMULATING +ACCUMULATION +ACCUMULATIONS +ACCURACY +ACCURATE +ACCURATELY +ACCUSATION +ACCUSATIONS +ACCUSATORY +ACCUSE +ACCUSED +ACCUSER +ACCUSERS +ACCUSES +ACCUSING +ACCUSTOMED +ACCUTANE +ACE +ACER +ACERBIC +ACES +ACETAMINOPHEN +ACETATE +ACETONE +ACETYLCHOLINE +ACEVEDO +ACHE +ACHES +ACHESON +ACHIEVABLE +ACHIEVE +ACHIEVED +ACHIEVEMENT +ACHIEVEMENTS +ACHIEVER +ACHIEVERS +ACHIEVES +ACHIEVING +ACHILLE +ACHILLES +ACHILLES' +ACHING +ACHINGLY +ACHTENBERG +ACHY +ACID +ACIDIC +ACIDITY +ACIDS +ACKER +ACKERMAN +ACKNOWLEDGE +ACKNOWLEDGED +ACKNOWLEDGEMENT +ACKNOWLEDGES +ACKNOWLEDGING +ACKNOWLEDGMENT +ACKNOWLEGED +ACME +ACNE +ACOLYTES +ACORN +ACORNS +ACOSTA +ACOUSTIC +ACOUSTICAL +ACOUSTICS +ACQUAINT +ACQUAINTANCE +ACQUAINTANCES +ACQUAINTED +ACQUIESCE +ACQUIESCED +ACQUIESCENCE +ACQUIESCING +ACQUIRE +ACQUIRED +ACQUIRER +ACQUIRERS +ACQUIRES +ACQUIRING +ACQUISITION +ACQUISITION'S +ACQUISITIONS +ACQUISITIVE +ACQUISTION +ACQUIT +ACQUITTAL +ACQUITTALS +ACQUITTED +ACQUITTING +ACRE +ACREAGE +ACRES +ACRID +ACRIMONIOUS +ACRIMONY +ACROBAT +ACROBATIC +ACROBATICS +ACROBATS +ACRONYM +ACRONYMS +ACROPOLIS +ACROSS +ACRYLIC +ACRYLICS +ACT +ACT'S +ACTAVA +ACTED +ACTING +ACTION +ACTION'S +ACTIONABLE +ACTIONS +ACTIVASE +ACTIVATE +ACTIVATED +ACTIVATES +ACTIVATING +ACTIVATION +ACTIVATOR +ACTIVE +ACTIVELY +ACTIVES +ACTIVISION +ACTIVISM +ACTIVIST +ACTIVISTS +ACTIVISTS' +ACTIVITES +ACTIVITIES +ACTIVITY +ACTMEDIA +ACTON +ACTOR +ACTOR'S +ACTORS +ACTORS' +ACTRESS +ACTRESS' +ACTRESSES +ACTS +ACTUAL +ACTUALITY +ACTUALLY +ACTUARIAL +ACTUARIES +ACTUARY +ACTUATORS +ACUFF +ACUITY +ACUMEN +ACUNA +ACUPUNCTURE +ACURA +ACUSON +ACUSTAR +ACUTE +ACUTELY +ACYCLOVIR +AD +AD'S +ADA +ADAGE +ADAIR +ADAM +ADAM'S +ADAMANT +ADAMANTLY +ADAMEC +ADAMS +ADAMS' +ADAMS'S +ADAMSON +ADAMSON'S +ADAN +ADAPT +ADAPTABILITY +ADAPTABLE +ADAPTATION +ADAPTATIONS +ADAPTEC +ADAPTED +ADAPTER +ADAPTERS +ADAPTING +ADAPTIVE +ADAPTS +ADARAND +ADD +ADDAM +ADDAMS +ADDED +ADDENDUM +ADDICT +ADDICTED +ADDICTING +ADDICTION +ADDICTIONS +ADDICTIVE +ADDICTS +ADDING +ADDINGTON +ADDIS +ADDISON +ADDITION +ADDITIONAL +ADDITIONALLY +ADDITIONS +ADDITIVE +ADDITIVES +ADDLED +ADDRESS +ADDRESSED +ADDRESSES +ADDRESSING +ADDS +ADEL +ADELAIDE +ADELE +ADELMAN +ADELPHIA +ADELSON +ADEN +ADENAUER +ADEPT +ADEQUACY +ADEQUATE +ADEQUATELY +ADHA +ADHAM +ADHERE +ADHERED +ADHERENCE +ADHERENTS +ADHERES +ADHERING +ADHESIVE +ADHESIVES +ADIA +ADIDAS +ADIRONDACK +ADIRONDACKS +ADJACENT +ADJECTIVE +ADJECTIVES +ADJOINING +ADJOINS +ADJOURN +ADJOURNED +ADJOURNING +ADJOURNMENT +ADJOURNS +ADJUDICATE +ADJUDICATED +ADJUDICATION +ADJUNCT +ADJUST +ADJUSTABLE +ADJUSTABLES +ADJUSTED +ADJUSTER +ADJUSTERS +ADJUSTING +ADJUSTMENT +ADJUSTMENTS +ADJUSTS +ADJUTANT +ADKINS +ADLAI +ADLER +ADMAN +ADMINISTER +ADMINISTERED +ADMINISTERING +ADMINISTERS +ADMINISTRATION +ADMINISTRATION'S +ADMINISTRATIONS +ADMINISTRATIVE +ADMINISTRATIVELY +ADMINISTRATOR +ADMINISTRATOR'S +ADMINISTRATORS +ADMINSTRATION +ADMIRABLE +ADMIRABLY +ADMIRAL +ADMIRAL'S +ADMIRALS +ADMIRALTY +ADMIRATION +ADMIRE +ADMIRED +ADMIRER +ADMIRERS +ADMIRES +ADMIRING +ADMIRINGLY +ADMISSIBILITY +ADMISSIBLE +ADMISSION +ADMISSIONS +ADMIT +ADMITS +ADMITTANCE +ADMITTED +ADMITTEDLY +ADMITTING +ADMONISH +ADMONISHED +ADMONISHES +ADMONISHING +ADMONITION +ADMONITIONS +ADNAN +ADO +ADOBE +ADOBE'S +ADOLESCENCE +ADOLESCENT +ADOLESCENTS +ADOLF +ADOLFO +ADOLPH +ADOPT +ADOPTED +ADOPTEES +ADOPTING +ADOPTION +ADOPTIONS +ADOPTIVE +ADOPTS +ADORABLE +ADORATION +ADORE +ADORED +ADORES +ADORING +ADORN +ADORNED +ADORNING +ADORNS +ADRENAL +ADRENALIN +ADRENALINE +ADRIAAN +ADRIAN +ADRIANA +ADRIATIC +ADRIENNE +ADRIFT +ADROIT +ADROITLY +ADS +ADULATION +ADULT +ADULT'S +ADULTERATED +ADULTEROUS +ADULTERY +ADULTHOOD +ADULTS +ADVANCE +ADVANCED +ADVANCEMENT +ADVANCEMENTS +ADVANCERS +ADVANCES +ADVANCING +ADVANI +ADVANTA +ADVANTAGE +ADVANTAGED +ADVANTAGEOUS +ADVANTAGES +ADVENT +ADVENTIST +ADVENTISTS +ADVENTURE +ADVENTURER +ADVENTURERS +ADVENTURES +ADVENTURESOME +ADVENTURISM +ADVENTUROUS +ADVERSARIAL +ADVERSARIES +ADVERSARY +ADVERSE +ADVERSELY +ADVERSITY +ADVERTISE +ADVERTISED +ADVERTISEMENT +ADVERTISEMENTS +ADVERTISER +ADVERTISERS +ADVERTISERS' +ADVERTISES +ADVERTISING +ADVERTISING'S +ADVEST +ADVICE +ADVIL +ADVISABLE +ADVISE +ADVISED +ADVISEMENT +ADVISER +ADVISER'S +ADVISERS +ADVISERS' +ADVISES +ADVISING +ADVISOR +ADVISORIES +ADVISORS +ADVISORY +ADVOCACY +ADVOCATE +ADVOCATED +ADVOCATES +ADVOCATING +ADWEEK +AE +AEGEAN +AEGIS +AEGON +AENEAS +AER +AERIAL +AERITALIA +AERO +AEROBATIC +AEROBIC +AEROBICS +AERODYNAMIC +AERODYNAMICS +AEROFLOT +AEROJET +AEROLINEAS +AEROMEXICO +AERONAUTICAL +AERONAUTICAS +AERONAUTICS +AEROSMITH +AEROSOL +AEROSOLS +AEROSPACE +AEROSPACE'S +AEROSPATIALE +AEROSTAR +AESTHETIC +AESTHETICALLY +AESTHETICS +AETNA +AETNA'S +AF +AFANASYEV +AFAR +AFFABLE +AFFAIR +AFFAIRS +AFFECT +AFFECTED +AFFECTING +AFFECTION +AFFECTIONATE +AFFECTIONATELY +AFFECTIONS +AFFECTIVE +AFFECTS +AFFIDAVIT +AFFIDAVITS +AFFILIATE +AFFILIATED +AFFILIATES +AFFILIATES' +AFFILIATION +AFFILIATIONS +AFFINITY +AFFIRM +AFFIRMATION +AFFIRMATIVE +AFFIRMATIVELY +AFFIRMED +AFFIRMING +AFFIRMS +AFFIX +AFFIXED +AFFLICT +AFFLICTED +AFFLICTING +AFFLICTION +AFFLICTIONS +AFFLICTS +AFFLUENCE +AFFLUENT +AFFORD +AFFORDABILITY +AFFORDABLE +AFFORDED +AFFORDING +AFFORDS +AFFRONT +AFFYMAX +AFGHAN +AFGHANISTAN +AFGHANISTAN'S +AFGHANS +AFICIONADO +AFICIONADOS +AFIELD +AFIRE +AFLAME +AFLATOXIN +AFLOAT +AFOOT +AFOREMENTIONED +AFOUL +AFRAID +AFRESH +AFRICA +AFRICA'S +AFRICAN +AFRICANIST +AFRICANIZED +AFRICANS +AFRIKAANS +AFRIKANER +AFRIKANERS +AFRO +AFROCENTRIC +AFSANE +AFT +AFTER +AFTEREFFECTS +AFTERGLOW +AFTERLIFE +AFTERMARKET +AFTERMATH +AFTERNOON +AFTERNOON'S +AFTERNOONS +AFTERSHOCK +AFTERSHOCKS +AFTERTASTE +AFTERTAX +AFTERTHOUGHT +AFTERWARD +AFTERWARDS +AG +AGA +AGAIN +AGAIN' +AGAINST +AGANBEGYAN +AGASSI +AGASSI'S +AGATE +AGATHA +AGAWAM +AGCA +AGE +AGED +AGEE +AGEE'S +AGELESS +AGENCE +AGENCIES +AGENCIES' +AGENCY +AGENCY'S +AGENDA +AGENDAS +AGENT +AGENT'S +AGENTS +AGENTS' +AGER +AGER'S +AGERPRES +AGERS +AGERS' +AGES +AGFA +AGGIES +AGGRANDIZEMENT +AGGRAVATE +AGGRAVATED +AGGRAVATES +AGGRAVATING +AGGRAVATION +AGGREGATE +AGGREGATES +AGGRESSION +AGGRESSIONS +AGGRESSIVE +AGGRESSIVELY +AGGRESSIVENESS +AGGRESSOR +AGGRESSORS +AGGRIEVED +AGHA +AGHAST +AGHAZADEH +AGILE +AGILITY +AGING +AGIP +AGITATE +AGITATED +AGITATING +AGITATION +AGITATORS +AGNELLI +AGNELLIS +AGNES +AGNEW +AGNEWS +AGNICO +AGNOS +AGNOSTIC +AGO +AGONIES +AGONIZE +AGONIZED +AGONIZING +AGONIZINGLY +AGONY +AGOSTINO +AGOURA +AGOURON +AGRA +AGRARIAN +AGREE +AGREEABLE +AGREED +AGREEING +AGREEMENT +AGREEMENT'S +AGREEMENTS +AGREES +AGRESOURCE +AGRESSIVE +AGRI +AGRIBUSINESS +AGRICOLE +AGRICULTURAL +AGRICULTURE +AGRICULTURE'S +AGRO +AGRONOMIST +AGROUND +AGUA +AGUAYO +AGUDAT +AGUILAR +AGUILAR'S +AGUILERA +AGUINALDO +AGUIRRE +AGUSTA +AGUSTIN +AH +AHA +AHARON +AHEAD +AHEARN +AHEARNE +AHERN +AHH +AHIMEIR +AHLI +AHMAD +AHMADI +AHMANSON +AHMANSON'S +AHMED +AHMET +AHN +AHO +AHOLD +AHRAM +AHRENS +AHRONOT +AHTISAARI +AICHI +AID +AID'S +AIDA +AIDAN +AIDE +AIDE'S +AIDED +AIDEED +AIDEED'S +AIDES +AIDID +AIDID'S +AIDING +AIDS +AIELLO +AIKEN +AIKMAN +AIKMAN'S +AILEEN +AILES +AILEY +AILING +AILMENT +AILMENTS +AILS +AIM +AIMED +AIMEE +AIMING +AIMLESS +AIMLESSLY +AIMS +AIN +AIN'T +AINGE +AINLEY +AINSLIE +AIPAC +AIR +AIR'S +AIRBAG +AIRBAGS +AIRBASE +AIRBORNE +AIRBUS +AIRBUS'S +AIRCRAFT +AIRCRAFT'S +AIRDROP +AIRDROPS +AIRED +AIRES +AIRFARE +AIRFARES +AIRFIELD +AIRFIELDS +AIRFONE +AIRFRAME +AIRGAS +AIRING +AIRLIE +AIRLIFT +AIRLIFTED +AIRLIFTING +AIRLIFTS +AIRLINE +AIRLINE'S +AIRLINER +AIRLINER'S +AIRLINERS +AIRLINES +AIRLINES' +AIRLOCK +AIRMAN +AIRMEN +AIRPLANE +AIRPLANE'S +AIRPLANES +AIRPLAY +AIRPORT +AIRPORT'S +AIRPORTS +AIRPOWER +AIRS +AIRSHIP +AIRSPACE +AIRSTRIKES +AIRSTRIP +AIRSTRIPS +AIRTIGHT +AIRTIME +AIRTOUCH +AIRWAVES +AIRWAY +AIRWAYS +AIRWAYS' +AIRWORTHINESS +AIRY +AISLE +AISLES +AITKEN +AIWA +AJAJ +AJAR +AJAX +AJINOMOTO +AKA +AKAKA +AKASHI +AKBAR +AKERS +AKERS'S +AKERSON +AKHBAR +AKHROMEYEV +AKIBA +AKIHITO +AKIHITO'S +AKIN +AKINS +AKIO +AKIRA +AKITA +AKIYAMA +AKRAM +AKRON +AKZO +AKZO'S +AL +AL'S +ALA +ALABAMA +ALABAMA'S +ALABASTER +ALACHUA +ALACRITY +ALADDIN +ALAGOAS +ALAI +ALAIN +ALAM +ALAMEDA +ALAMITOS +ALAMO +ALAMODOME +ALAMOS +ALAMOSA +ALAN +ALANE +ALANN +ALAR +ALARCON +ALARM +ALARMED +ALARMING +ALARMINGLY +ALARMIST +ALARMS +ALAS +ALASKA +ALASKA'S +ALASKAN +ALASKANS +ALASTAIR +ALATAS +ALBA +ALBAN +ALBANESE +ALBANIA +ALBANIA'S +ALBANIAN +ALBANIANS +ALBANS +ALBANY +ALBANY'S +ALBATROSS +ALBEE +ALBEIT +ALBERS +ALBERT +ALBERTA +ALBERTA'S +ALBERTHAL +ALBERTO +ALBERTS +ALBERTSON +ALBERTSON'S +ALBERTVILLE +ALBINO +ALBION +ALBRECHT +ALBRIGHT +ALBUM +ALBUM'S +ALBUMS +ALBUQUERQUE +ALBUTEROL +ALCAN +ALCAN'S +ALCATEL +ALCATEL'S +ALCATRAZ +ALCEE +ALCHEMY +ALCO +ALCOA +ALCOA'S +ALCOHOL +ALCOHOLIC +ALCOHOLICS +ALCOHOLISM +ALCORN +ALCOTT +ALCOVE +ALDA +ALDANA +ALDEN +ALDER +ALDERMAN +ALDERMEN +ALDERSON +ALDICARB +ALDO +ALDRETE +ALDRICH +ALDRIDGE +ALDRIN +ALDUS +ALE +ALEC +ALECK +ALEGRIA +ALEJANDRO +ALEKSANDER +ALEKSANDR +ALEKSEI +ALEMAN +ALENIA +ALERT +ALERTED +ALERTING +ALERTNESS +ALERTS +ALES +ALESSANDRO +ALEUTIAN +ALEX +ALEX'S +ALEXANDER +ALEXANDER'S +ALEXANDERS +ALEXANDRA +ALEXANDRE +ALEXANDRIA +ALEXEI +ALEXI +ALEXIA +ALEXIS +ALEXY +ALF +ALFA +ALFALFA +ALFARO +ALFIE +ALFONSE +ALFONSIN +ALFONSIN'S +ALFONSO +ALFORD +ALFRED +ALFREDO +ALGAE +ALGEBRA +ALGEMENE +ALGER +ALGERIA +ALGERIA'S +ALGERIAN +ALGERIANS +ALGIERS +ALGIRDAS +ALGOM +ALGOMA +ALGONQUIN +ALGORITHM +ALGORITHMS +ALHAMBRA +ALI +ALI'S +ALIA +ALIAS +ALIASES +ALIBI +ALIBIS +ALICE +ALICE'S +ALICEA +ALICIA +ALIEN +ALIENATE +ALIENATED +ALIENATING +ALIENATION +ALIENS +ALIGHT +ALIGN +ALIGNED +ALIGNING +ALIGNMENT +ALIGNMENTS +ALIJA +ALIKE +ALIKES +ALIMONY +ALIOTO +ALISA +ALISON +ALISTAIR +ALITALIA +ALITO +ALIVE +ALIX +ALIXE +ALIYEV +ALKA +ALKALINE +ALKSNIS +ALL +ALL'S +ALLA +ALLAH +ALLAHABAD +ALLAHU +ALLAIRE +ALLAIS +ALLAN +ALLANTE +ALLARD +ALLAY +ALLAYED +ALLAYING +ALLECO +ALLEGATION +ALLEGATIONS +ALLEGE +ALLEGED +ALLEGEDLY +ALLEGES +ALLEGHANY +ALLEGHENY +ALLEGHENY'S +ALLEGIANCE +ALLEGIANCES +ALLEGING +ALLEGIS +ALLEGIS'S +ALLEGORICAL +ALLEGORY +ALLEGRO +ALLELE +ALLELES +ALLEN +ALLEN'S +ALLENBY +ALLENDALE +ALLENDE +ALLENDE'S +ALLENTOWN +ALLERGAN +ALLERGIC +ALLERGIES +ALLERGY +ALLEVIATE +ALLEVIATED +ALLEVIATING +ALLEY +ALLEYS +ALLEYWAY +ALLEYWAYS +ALLGEMEINE +ALLIANCE +ALLIANCE'S +ALLIANCES +ALLIANT +ALLIANZ +ALLIE +ALLIED +ALLIED'S +ALLIEDSIGNAL +ALLIES +ALLIES' +ALLIGATOR +ALLIGATORS +ALLIS +ALLISON +ALLISON'S +ALLMAN +ALLMON +ALLOCATE +ALLOCATED +ALLOCATES +ALLOCATING +ALLOCATION +ALLOCATIONS +ALLOT +ALLOTED +ALLOTMENT +ALLOTMENTS +ALLOTTED +ALLOW +ALLOWABLE +ALLOWANCE +ALLOWANCES +ALLOWED +ALLOWING +ALLOWS +ALLOY +ALLOYS +ALLRED +ALLSTATE +ALLSTATE'S +ALLTEL +ALLUDE +ALLUDED +ALLUDES +ALLUDING +ALLURE +ALLURING +ALLUSION +ALLUSIONS +ALLY +ALLYING +ALLYN +ALLYSON +ALMA +ALMADEN +ALMANAC +ALMEIDA +ALMIGHTY +ALMODOVAR +ALMOND +ALMONDS +ALMOST +ALOFT +ALOHA +ALOIS +ALOMAR +ALON +ALONE +ALONG +ALONGSIDE +ALONSO +ALONZO +ALOOF +ALOU +ALOUD +ALPENA +ALPERT +ALPHA +ALPHABET +ALPHABETICAL +ALPHABETICALLY +ALPHANDERY +ALPHARETTA +ALPHONSE +ALPINE +ALPIREZ +ALPO +ALPS +ALQUIST +ALREADY +ALRIGHT +ALS +ALSACE +ALSO +ALSOP +ALSTHOM +ALSTON +ALT +ALTA +ALTADENA +ALTAMONT +ALTAR +ALTARS +ALTER +ALTERA +ALTERATION +ALTERATIONS +ALTERCATION +ALTERED +ALTERING +ALTERNATE +ALTERNATED +ALTERNATELY +ALTERNATES +ALTERNATING +ALTERNATIVE +ALTERNATIVELY +ALTERNATIVES +ALTERS +ALTFEST +ALTHOUGH +ALTIMA +ALTITUDE +ALTITUDES +ALTMAN +ALTMAN'S +ALTO +ALTO'S +ALTOGETHER +ALTON +ALTOONA +ALTOS +ALTRUISM +ALTRUISTIC +ALTUS +ALUM +ALUMAX +ALUMINA +ALUMINIUM +ALUMINUM +ALUMNAE +ALUMNI +ALUMNUS +ALUMS +ALVA +ALVARADO +ALVAREZ +ALVARO +ALVES +ALVIN +ALVISO +ALVORD +ALWAYS +ALYESKA +ALYESKA'S +ALYSSA +ALZA +ALZADO +ALZHEIMER'S +AM +AM'S +AMADEUS +AMADO +AMADOR +AMAL +AMAL'S +AMALGAM +AMALGAMATED +AMALGAMATION +AMANA +AMANDA +AMANI +AMANPOUR +AMARAL +AMARILLO +AMARU +AMASS +AMASSED +AMASSING +AMATEUR +AMATEURISH +AMATEURS +AMATIL +AMATO +AMAX +AMAX'S +AMAYA +AMAZE +AMAZED +AMAZEMENT +AMAZES +AMAZING +AMAZINGLY +AMAZON +AMAZONIAN +AMB +AMBAC +AMBASE +AMBASSADOR +AMBASSADOR'S +AMBASSADORIAL +AMBASSADORS +AMBASSADORSHIP +AMBER +AMBER'S +AMBIANCE +AMBIENCE +AMBIENT +AMBIGUITIES +AMBIGUITY +AMBIGUOUS +AMBITION +AMBITIONS +AMBITIOUS +AMBIVALENCE +AMBIVALENT +AMBLED +AMBLER +AMBLIN +AMBOY +AMBROSE +AMBROSIANO +AMBULANCE +AMBULANCES +AMBULATORY +AMBUSH +AMBUSHED +AMBUSHES +AMBUSHING +AMCAST +AMCOR +AMDAHL +AMDAHL'S +AMDEC +AMDURA +AMECHE +AMELIA +AMELIO +AMELIORATE +AMEN +AMENABLE +AMEND +AMENDED +AMENDING +AMENDMENT +AMENDMENT'S +AMENDMENTS +AMENDOLA +AMENDS +AMENITIES +AMENITY +AMER +AMERADA +AMERASIAN +AMERASIANS +AMERICA +AMERICA'S +AMERICAN +AMERICAN'S +AMERICANA +AMERICANISM +AMERICANIZATION +AMERICANIZED +AMERICANO +AMERICANS +AMERICANS' +AMERICARES +AMERICAS +AMERICO +AMERICORPS +AMERICUS +AMERIFIRST +AMERIGAS +AMERITECH +AMERITECH'S +AMERITRUST +AMERMAN +AMERON +AMERONGEN +AMES +AMES' +AMES'S +AMETEK +AMEV +AMEX +AMEX'S +AMFAC +AMGEN +AMGEN'S +AMHERST +AMI +AMIABLE +AMIABLY +AMICABLE +AMICABLY +AMICUS +AMID +AMIDST +AMIGA +AMIGO +AMIGOS +AMIN +AMINO +AMIR +AMIRAM +AMIS +AMISH +AMISS +AMITY +AMMAN +AMMAN'S +AMMERMAN +AMMIRATI +AMMO +AMMONIA +AMMONIUM +AMMUNITION +AMMUNITIONS +AMNESIA +AMNESTIES +AMNESTY +AMNIOCENTESIS +AMNON +AMOCO +AMOCO'S +AMOK +AMON +AMONG +AMONGST +AMOR +AMORAL +AMOROUS +AMORPHOUS +AMORTIZATION +AMORTIZE +AMORTIZED +AMORTIZING +AMORY +AMOS +AMOSKEAG +AMOUNT +AMOUNTED +AMOUNTING +AMOUNTS +AMP +AMPARA +AMPCO +AMPEX +AMPHENOL +AMPHETAMINE +AMPHETAMINES +AMPHIBIAN +AMPHIBIANS +AMPHIBIOUS +AMPHITHEATER +AMPHITHEATRE +AMPLE +AMPLIFICATION +AMPLIFICATIONS +AMPLIFIED +AMPLIFIER +AMPLIFIERS +AMPLIFIES +AMPLIFY +AMPLIFYING +AMPLIGEN +AMPLY +AMPUTATE +AMPUTATED +AMPUTATION +AMPUTATIONS +AMPUTEE +AMPUTEES +AMR +AMRAM +AMRE +AMREP +AMRITSAR +AMRO +AMS +AMSCO +AMSOUTH +AMSTAR +AMSTERDAM +AMSTERDAM'S +AMSTRAD +AMTECH +AMTRAK +AMTRAK'S +AMUSE +AMUSED +AMUSEMENT +AMUSEMENTS +AMUSING +AMUSINGLY +AMWAY +AMWAY'S +AMY +AMY'S +AMYLIN +AMYLOID +AN +ANA +ANABOLIC +ANACHRONISM +ANACHRONISTIC +ANACIN +ANACOMP +ANACOSTIA +ANADARKO +ANAHEIM +ANAL +ANALGESIC +ANALGESICS +ANALOG +ANALOGIES +ANALOGOUS +ANALOGY +ANALYSES +ANALYSIS +ANALYST +ANALYST'S +ANALYSTS +ANALYSTS' +ANALYTIC +ANALYTICAL +ANALYTICS +ANALYZE +ANALYZED +ANALYZER +ANALYZES +ANALYZING +ANAND +ANARCHIC +ANARCHIST +ANARCHISTS +ANARCHY +ANASAZI +ANASTASIA +ANASTASIO +ANATHEMA +ANATOLI +ANATOLIA +ANATOLIAN +ANATOLY +ANATOMICAL +ANATOMICALLY +ANATOMY +ANAYA +ANBARI +ANCESTOR +ANCESTORS +ANCESTRAL +ANCESTRY +ANCHOR +ANCHOR'S +ANCHORAGE +ANCHORED +ANCHORING +ANCHORMAN +ANCHORS +ANCHORWOMAN +ANCHOVIES +ANCHOVY +ANCIENT +ANCIENTS +ANCILLARY +AND +ANDALUSIA +ANDEAN +ANDERMAN +ANDERS +ANDERSEN +ANDERSEN'S +ANDERSON +ANDERSON'S +ANDERSSON +ANDES +ANDHRA +ANDIE +ANDO +ANDOVER +ANDRADE +ANDRAS +ANDRE +ANDREA +ANDREAS +ANDREI +ANDREOTTI +ANDREOTTI'S +ANDRES +ANDRESS +ANDRETTI +ANDREW +ANDREW'S +ANDREWS +ANDREWS' +ANDRIES +ANDRIESSEN +ANDROGYNOUS +ANDROPOV +ANDRUS +ANDRZEJ +ANDS +ANDY +ANDY'S +ANECDOTAL +ANECDOTE +ANECDOTES +ANEMIA +ANEMIC +ANENCEPHALIC +ANENCEPHALY +ANESTHESIA +ANESTHESIOLOGIST +ANESTHESIOLOGISTS +ANESTHESIOLOGY +ANESTHETIC +ANESTHETICS +ANESTHETIZED +ANEURYSM +ANEURYSMS +ANEW +ANFERNEE +ANFIA +ANG +ANGEL +ANGEL'S +ANGELA +ANGELA'S +ANGELENOS +ANGELES +ANGELES' +ANGELES'S +ANGELIC +ANGELICA +ANGELINA +ANGELL +ANGELO +ANGELOS +ANGELOU +ANGELOZ +ANGELS +ANGELS' +ANGER +ANGERED +ANGERING +ANGERS +ANGIE +ANGINA +ANGIOGRAPHY +ANGIOPLASTY +ANGKOR +ANGLE +ANGLED +ANGLER +ANGLERS +ANGLES +ANGLETON +ANGLIA +ANGLICAN +ANGLICANS +ANGLING +ANGLO +ANGLOS +ANGOLA +ANGOLA'S +ANGOLAN +ANGOLANS +ANGORA +ANGOTTI +ANGRIER +ANGRIEST +ANGRILY +ANGRY +ANGST +ANGUILLA +ANGUISH +ANGUISHED +ANGULAR +ANGUS +ANHALT +ANHEUSER +ANHEUSER'S +ANHUI +ANIBAL +ANIMAL +ANIMAL'S +ANIMALS +ANIMALS' +ANIMATE +ANIMATED +ANIMATION +ANIMATIONS +ANIMATOR +ANIMATORS +ANIMIST +ANIMISTS +ANIMOSITIES +ANIMOSITY +ANIMUS +ANISE +ANITA +ANJELICA +ANKARA +ANKARA'S +ANKER +ANKLE +ANKLES +ANN +ANN'S +ANNA +ANNA'S +ANNABLE +ANNALS +ANNAN +ANNANDALE +ANNAPOLIS +ANNE +ANNE'S +ANNENBERG +ANNETTE +ANNEX +ANNEXATION +ANNEXED +ANNEXING +ANNIE +ANNIHILATE +ANNIHILATED +ANNIHILATION +ANNISTON +ANNIVERSARIES +ANNIVERSARY +ANNOTATED +ANNOUNCE +ANNOUNCED +ANNOUNCEMENT +ANNOUNCEMENTS +ANNOUNCER +ANNOUNCERS +ANNOUNCES +ANNOUNCING +ANNOUNCMENT +ANNOY +ANNOYANCE +ANNOYANCES +ANNOYED +ANNOYING +ANNOYS +ANNTAYLOR +ANNUAL +ANNUALIZED +ANNUALLY +ANNUALS +ANNUITIES +ANNUITY +ANNUL +ANNULLED +ANNULMENT +ANNUM +ANNUNZIO +ANOINT +ANOINTED +ANOMALIES +ANOMALOUS +ANOMALY +ANONYMITY +ANONYMOUS +ANONYMOUSLY +ANOREXIA +ANOREXIC +ANOTHER +ANOTHER'S +ANREDER +ANSA +ANSBACHER +ANSCHUTZ +ANSEL +ANSELMO +ANSETT +ANSON +ANSWER +ANSWER'S +ANSWERABLE +ANSWERED +ANSWERING +ANSWERS +ANT +ANTACID +ANTACIDS +ANTAGONISM +ANTAGONISMS +ANTAGONIST +ANTAGONISTIC +ANTAGONISTS +ANTAGONIZE +ANTAGONIZED +ANTAGONIZING +ANTALL +ANTAR +ANTAR'S +ANTARA +ANTARCTIC +ANTARCTICA +ANTE +ANTEBELLUM +ANTELOPE +ANTENNA +ANTENNAE +ANTENNAS +ANTERIOR +ANTHEM +ANTHEMS +ANTHOLOGIES +ANTHOLOGY +ANTHONY +ANTHONY'S +ANTHRAX +ANTHROPOLOGICAL +ANTHROPOLOGIST +ANTHROPOLOGISTS +ANTHROPOLOGY +ANTI +ANTIABORTION +ANTIAIRCRAFT +ANTIBIOTIC +ANTIBIOTICS +ANTIBODIES +ANTIBODY +ANTIC +ANTICANCER +ANTICIPATE +ANTICIPATED +ANTICIPATES +ANTICIPATING +ANTICIPATION +ANTICIPATORY +ANTICLIMACTIC +ANTICOMPETITIVE +ANTICRIME +ANTICS +ANTIDEPRESSANT +ANTIDEPRESSANTS +ANTIDISCRIMINATION +ANTIDOTE +ANTIDOTES +ANTIDRUG +ANTIDUMPING +ANTIETAM +ANTIFRAUD +ANTIFREEZE +ANTIFUNGAL +ANTIGEN +ANTIGENS +ANTIGOVERNMENT +ANTIGUA +ANTIHISTAMINE +ANTIHISTAMINES +ANTILLES +ANTILOCK +ANTIMISSILE +ANTIOCH +ANTIOQUIA +ANTIOXIDANTS +ANTIPATHY +ANTIQUATED +ANTIQUE +ANTIQUES +ANTIQUITIES +ANTIQUITY +ANTISENSE +ANTISEPTIC +ANTISMOKING +ANTISOCIAL +ANTITAKEOVER +ANTITANK +ANTITHESIS +ANTITHETICAL +ANTITRUST +ANTIVIRAL +ANTIWAR +ANTLERS +ANTOINE +ANTOINETTE +ANTOLINI +ANTON +ANTONIA +ANTONIN +ANTONINI +ANTONIO +ANTONIO'S +ANTONOV +ANTONOVICH +ANTONY +ANTRIL +ANTS +ANTSY +ANTWERP +ANVIL +ANWAR +ANXIETIES +ANXIETY +ANXIOUS +ANXIOUSLY +ANY +ANYBODY +ANYBODY'S +ANYHOW +ANYMORE +ANYONE +ANYONE'S +ANYPLACE +ANYTHING +ANYTHING'S +ANYTIME +ANYWAY +ANYWHERE +ANZA +ANZELMO +AOKI +AON +AORTA +AORTIC +AOSHIMA +AOUN +AOUN'S +AOYAMA +APACE +APACHE +APACHES +APALACHICOLA +APART +APARTHEID +APARTHEID'S +APARTMENT +APARTMENTS +APATHETIC +APATHY +APE +APERTURE +APES +APEX +APHIDS +APHORISM +APHORISMS +APHRODISIAC +APIECE +APLENTY +APLOMB +APNEA +APO +APOCALYPSE +APOCALYPTIC +APOCRYPHAL +APOGEE +APOLITICAL +APOLLO +APOLLO'S +APOLOGETIC +APOLOGETICALLY +APOLOGIES +APOLOGIST +APOLOGISTS +APOLOGIZE +APOLOGIZED +APOLOGIZES +APOLOGIZING +APOLOGY +APONTE +APOPLECTIC +APOSTLE +APOSTLES +APOSTOLIC +APOTHEOSIS +APP +APPALACHIA +APPALACHIAN +APPALACHIANS +APPALLED +APPALLING +APPALLINGLY +APPARATCHIKS +APPARATUS +APPAREL +APPARENT +APPARENTLY +APPARITION +APPARITIONS +APPEAL +APPEALED +APPEALING +APPEALS +APPEAR +APPEARANCE +APPEARANCES +APPEARED +APPEARING +APPEARS +APPEASE +APPEASED +APPEASEMENT +APPEASING +APPEL +APPELLATE +APPELLATION +APPENDAGE +APPENDECTOMY +APPENDED +APPENDICITIS +APPENDIX +APPERT +APPETIT +APPETITE +APPETITES +APPETIZER +APPETIZERS +APPETIZING +APPLAUD +APPLAUDED +APPLAUDING +APPLAUDS +APPLAUSE +APPLE +APPLE'S +APPLEBAUM +APPLEBEE'S +APPLEBY +APPLEGATE +APPLES +APPLESAUCE +APPLETON +APPLIANCE +APPLIANCES +APPLICABILITY +APPLICABLE +APPLICANT +APPLICANT'S +APPLICANTS +APPLICANTS' +APPLICATION +APPLICATIONS +APPLIED +APPLIES +APPLY +APPLYING +APPOINT +APPOINTED +APPOINTEE +APPOINTEES +APPOINTING +APPOINTIVE +APPOINTMENT +APPOINTMENTS +APPOINTS +APPORTION +APPORTIONED +APPORTIONING +APPORTIONMENT +APPRAISAL +APPRAISALS +APPRAISE +APPRAISED +APPRAISER +APPRAISERS +APPRAISING +APPRECIABLE +APPRECIABLY +APPRECIATE +APPRECIATED +APPRECIATES +APPRECIATING +APPRECIATION +APPRECIATIVE +APPREHEND +APPREHENDED +APPREHENDING +APPREHENSION +APPREHENSIONS +APPREHENSIVE +APPRENTICE +APPRENTICES +APPRENTICESHIP +APPRENTICESHIPS +APPRISED +APPROACH +APPROACHABLE +APPROACHED +APPROACHES +APPROACHING +APPROPRIATE +APPROPRIATED +APPROPRIATELY +APPROPRIATENESS +APPROPRIATES +APPROPRIATING +APPROPRIATION +APPROPRIATIONS +APPROPRIATORS +APPROVAL +APPROVALS +APPROVE +APPROVED +APPROVES +APPROVING +APPROVINGLY +APPROXIMATE +APPROXIMATED +APPROXIMATELY +APPROXIMATES +APPROXIMATING +APPROXIMATION +APRICOT +APRICOTS +APRIL +APRIL'S +APRISTA +APRON +APRONS +APROPOS +APSTAR +APT +APTITUDE +APTLY +APTOS +AQABA +AQAZADEH +AQSA +AQUA +AQUACULTURE +AQUARIUM +AQUARIUMS +AQUARIUS +AQUATIC +AQUEDUCT +AQUIFER +AQUIFERS +AQUINAS +AQUINO +AQUINO'S +AQUITAINE +AR +ARAB +ARABIA +ARABIA'S +ARABIAN +ARABIANS +ARABIC +ARABICA +ARABLE +ARABS +ARABS' +ARAD +ARAFAT +ARAFAT'S +ARAGON +ARAL +ARAMCO +ARAMONY +ARAMONY'S +ARANGO +ARANTXA +ARAP +ARAPAHOE +ARASKOG +ARAUJO +ARBA +ARBAT +ARBATOV +ARBED +ARBITER +ARBITERS +ARBITRAGE +ARBITRAGER +ARBITRAGERS +ARBITRAGEURS +ARBITRAGING +ARBITRARILY +ARBITRARINESS +ARBITRARY +ARBITRATE +ARBITRATED +ARBITRATION +ARBITRATIONS +ARBITRATOR +ARBITRATOR'S +ARBITRATORS +ARBITRON +ARBOR +ARBORETUM +ARBS +ARBUCKLE +ARBY'S +ARC +ARCADE +ARCADES +ARCADIA +ARCANE +ARCATA +ARCE +ARCH +ARCHAEOLOGICAL +ARCHAEOLOGIST +ARCHAEOLOGISTS +ARCHAEOLOGY +ARCHAIC +ARCHANGEL +ARCHBISHOP +ARCHBISHOP'S +ARCHBISHOPS +ARCHDIOCESAN +ARCHDIOCESE +ARCHED +ARCHENEMY +ARCHEOLOGICAL +ARCHEOLOGIST +ARCHEOLOGISTS +ARCHEOLOGY +ARCHER +ARCHER'S +ARCHERD +ARCHERY +ARCHES +ARCHETYPAL +ARCHIBALD +ARCHIE +ARCHING +ARCHIPELAGO +ARCHITECT +ARCHITECT'S +ARCHITECTS +ARCHITECTURAL +ARCHITECTURALLY +ARCHITECTURE +ARCHIVAL +ARCHIVE +ARCHIVES +ARCHIVIST +ARCHIVISTS +ARCHRIVAL +ARCHRIVALS +ARCHWAY +ARCO +ARCO'S +ARCOS +ARCS +ARCTIC +ARDEBILI +ARDEN +ARDENT +ARDENTLY +ARDENWOOD +ARDIS +ARDMORE +ARDOR +ARDUOUS +ARE +AREA +AREA'S +AREAS +AREIAS +ARELLANO +AREN'T +ARENA +ARENA'S +ARENAS +ARENELLA +ARENS +ARES +ARETHA +ARGENTARIA +ARGENTINA +ARGENTINA'S +ARGENTINAS +ARGENTINE +ARGENTINES +ARGENTINIAN +ARGO +ARGON +ARGONAUT +ARGONAUTS +ARGONNE +ARGOSY +ARGUABLE +ARGUABLY +ARGUE +ARGUED +ARGUELLO +ARGUES +ARGUING +ARGUMENT +ARGUMENTATIVE +ARGUMENTS +ARGUN +ARGUS +ARGYLE +ARGYLL +ARI +ARIA +ARIADNE +ARIANE +ARIANESPACE +ARIANNA +ARIAS +ARIAS' +ARID +ARIE +ARIEL +ARIES +ARIS +ARISE +ARISEN +ARISES +ARISING +ARISON +ARISTA +ARISTECH +ARISTIDE +ARISTIDE'S +ARISTIDES +ARISTOCRACY +ARISTOCRAT +ARISTOCRATIC +ARISTOCRATS +ARISTOTLE +ARITHMETIC +ARIZONA +ARIZONA'S +ARIZONANS +ARJO +ARK +ARKADY +ARKANSAN +ARKANSANS +ARKANSAS +ARKANSAS' +ARKANSAS'S +ARKIN +ARKLA +ARLEDGE +ARLEN +ARLENA +ARLENE +ARLIN +ARLINGTON +ARLO +ARM +ARM'S +ARMACOST +ARMADA +ARMADILLO +ARMAGEDDON +ARMAGH +ARMAMENT +ARMAMENTS +ARMAND +ARMANDO +ARMANI +ARMAS +ARMBANDS +ARMCHAIR +ARMCHAIRS +ARMCO +ARMCO'S +ARMED +ARMEN +ARMENIA +ARMENIA'S +ARMENIAN +ARMENIANS +ARMENPRESS +ARMEY +ARMEY'S +ARMIES +ARMIN +ARMING +ARMISTICE +ARMITAGE +ARMON +ARMONK +ARMOR +ARMORED +ARMORIES +ARMORY +ARMOUR +ARMOURED +ARMPIT +ARMPITS +ARMREST +ARMS +ARMSCOR +ARMSTRONG +ARMSTRONG'S +ARMTEK +ARMY +ARMY'S +ARNALDO +ARNAUD +ARNAULT +ARNAZ +ARNDT +ARNE +ARNELL +ARNELLE +ARNETT +ARNHEM +ARNIE +ARNO +ARNOLD +ARNOLD'S +ARNOLDO +ARNOTT +ARNOTTS +ARNULFO +AROMA +AROMAS +AROMATIC +AROMATICS +ARON +ARONICA +ARONSON +AROSE +AROUND +AROUSAL +AROUSE +AROUSED +AROUSES +AROUSING +ARP +ARPINO +ARPS +ARQUETTE +ARRAIGNED +ARRAIGNMENT +ARRAIGNMENTS +ARRANGE +ARRANGED +ARRANGEMENT +ARRANGEMENTS +ARRANGER +ARRANGES +ARRANGING +ARRAY +ARRAYED +ARRAYS +ARREARS +ARREST +ARRESTED +ARRESTING +ARRESTS +ARRHYTHMIA +ARRHYTHMIAS +ARRINGTON +ARRIORTUA +ARRIVAL +ARRIVALS +ARRIVE +ARRIVED +ARRIVES +ARRIVING +ARROGANCE +ARROGANT +ARROGANTLY +ARROW +ARROW'S +ARROWHEAD +ARROWS +ARROYO +ARSENAL +ARSENALS +ARSENIC +ARSENIDE +ARSENIO +ARSON +ARSONIST +ARSONISTS +ARSONS +ART +ART'S +ARTERIAL +ARTERIES +ARTERY +ARTFUL +ARTFULLY +ARTHRITIC +ARTHRITIS +ARTHROSCOPIC +ARTHUR +ARTHUR'S +ARTICHOKE +ARTICHOKES +ARTICLE +ARTICLE'S +ARTICLES +ARTICULATE +ARTICULATED +ARTICULATES +ARTICULATING +ARTICULATION +ARTIE +ARTIFACT +ARTIFACTS +ARTIFICE +ARTIFICIAL +ARTIFICIALLY +ARTILLERY +ARTIS +ARTISAN +ARTISANS +ARTIST +ARTIST'S +ARTISTIC +ARTISTICALLY +ARTISTRY +ARTISTS +ARTISTS' +ARTRA +ARTS +ARTSY +ARTUKOVIC +ARTUR +ARTURO +ARTWORK +ARTWORKS +ARTY +ARTZT +ARUBA +ARUM +ARUN +ARUNDEL +ARVIDA +ARVIN +ARYAN +ARYEH +AS +ASA +ASAHARA +ASAHARA'S +ASAHI +ASAMERA +ASARCO +ASARCO'S +ASBELL +ASBESTOS +ASBESTOSIS +ASBURY +ASCAP +ASCEND +ASCENDANCY +ASCENDANT +ASCENDED +ASCENDING +ASCENSION +ASCENT +ASCERTAIN +ASCERTAINED +ASCETIC +ASCH +ASCII +ASCOT +ASCRIBE +ASCRIBED +ASDA +ASEA +ASEAN +ASERITIS +ASH +ASHAMED +ASHBURY +ASHBY +ASHCROFT +ASHDOD +ASHDOWN +ASHE +ASHE'S +ASHEN +ASHER +ASHES +ASHEVILLE +ASHFORD +ASHIS +ASHKELON +ASHLAND +ASHLAND'S +ASHLEY +ASHLEY'S +ASHLOCK +ASHMAN +ASHOK +ASHORE +ASHRAF +ASHRAFIYEH +ASHRAWI +ASHTON +ASHTRAY +ASHTRAYS +ASHWORTH +ASIA +ASIA'S +ASIAN +ASIANA +ASIANS +ASIASAT +ASIATIC +ASIDE +ASIDES +ASIF +ASIMOV +ASK +ASKANCE +ASKED +ASKEW +ASKIN +ASKING +ASKO +ASKS +ASLAM +ASLEEP +ASMAN +ASMARA +ASNER +ASPARAGUS +ASPARTAME +ASPE +ASPECT +ASPECTS +ASPEN +ASPERSIONS +ASPHALT +ASPHYXIATED +ASPHYXIATION +ASPIN +ASPIN'S +ASPIRANT +ASPIRANTS +ASPIRATION +ASPIRATIONS +ASPIRE +ASPIRED +ASPIRES +ASPIRIN +ASPIRING +ASS +ASSAD +ASSAD'S +ASSAIL +ASSAILANT +ASSAILANTS +ASSAILED +ASSAILING +ASSAM +ASSASSIN +ASSASSIN'S +ASSASSINATE +ASSASSINATED +ASSASSINATING +ASSASSINATION +ASSASSINATIONS +ASSASSINS +ASSAULT +ASSAULTED +ASSAULTING +ASSAULTS +ASSAY +ASSEMBLAGE +ASSEMBLE +ASSEMBLED +ASSEMBLER +ASSEMBLERS +ASSEMBLES +ASSEMBLIES +ASSEMBLING +ASSEMBLY +ASSEMBLY'S +ASSEMBLYMAN +ASSEMBLYMEN +ASSEMBLYWOMAN +ASSENT +ASSERT +ASSERTED +ASSERTING +ASSERTION +ASSERTIONS +ASSERTIVE +ASSERTIVENESS +ASSERTS +ASSESS +ASSESSED +ASSESSES +ASSESSING +ASSESSMENT +ASSESSMENTS +ASSESSOR +ASSESSORS +ASSET +ASSETS +ASSICURAZIONI +ASSIDUOUSLY +ASSIGN +ASSIGNED +ASSIGNING +ASSIGNMENT +ASSIGNMENTS +ASSIGNS +ASSIMILATE +ASSIMILATED +ASSIMILATION +ASSISI +ASSIST +ASSISTANCE +ASSISTANT +ASSISTANTS +ASSISTED +ASSISTING +ASSISTS +ASSIUT +ASSOCATION +ASSOCIATE +ASSOCIATED +ASSOCIATES +ASSOCIATES' +ASSOCIATING +ASSOCIATION +ASSOCIATION'S +ASSOCIATIONS +ASSORTED +ASSORTMENT +ASSUAGE +ASSUME +ASSUMED +ASSUMES +ASSUMING +ASSUMPTION +ASSUMPTIONS +ASSURANCE +ASSURANCES +ASSURE +ASSURED +ASSUREDLY +ASSURES +ASSURING +ASSYRIAN +ASTA +ASTAIRE +ASTERISK +ASTEROID +ASTEROIDS +ASTHMA +ASTHMATIC +ASTHMATICS +ASTLEY +ASTON +ASTONISHED +ASTONISHING +ASTONISHINGLY +ASTONISHMENT +ASTOR +ASTORIA +ASTOUNDED +ASTOUNDING +ASTOUNDINGLY +ASTRA +ASTRA'S +ASTRAY +ASTRID +ASTRIDE +ASTRO +ASTRO'S +ASTRODOME +ASTROLOGER +ASTROLOGERS +ASTROLOGICAL +ASTROLOGY +ASTRONAUT +ASTRONAUTICS +ASTRONAUTS +ASTRONAUTS' +ASTRONOMER +ASTRONOMERS +ASTRONOMICAL +ASTRONOMY +ASTROPHYSICIST +ASTROPHYSICS +ASTROS +ASTROTECH +ASTROTURF +ASTUTE +ASUNCION +ASUNDER +ASWAN +ASYLUM +ASYMMETRICAL +ASYMMETRY +ASYMPTOMATIC +AT +ATA +ATARI +ATARI'S +ATATURK +ATCHISON +ATCO +ATE +ATHEISM +ATHEIST +ATHEISTIC +ATHEISTS +ATHENA +ATHENS +ATHEROSCLEROSIS +ATHERTON +ATHEY +ATHLETE +ATHLETE'S +ATHLETES +ATHLETES' +ATHLETIC +ATHLETICALLY +ATHLETICISM +ATHLETICS +ATHLONE +ATHOL +ATKINS +ATKINSON +ATLANTA +ATLANTA'S +ATLANTANS +ATLANTIC +ATLANTIC'S +ATLANTIS +ATLANTIS' +ATLAS +ATMEL +ATMOSPHERE +ATMOSPHERES +ATMOSPHERIC +ATMOSPHERICS +ATOLL +ATOM +ATOMIC +ATOMICS +ATOMS +ATONE +ATONEMENT +ATOP +ATORINO +ATRIAL +ATRIUM +ATROCIOUS +ATROCITIES +ATROCITY +ATROPHY +ATSUSHI +ATT +ATTA +ATTACH +ATTACHE +ATTACHED +ATTACHES +ATTACHING +ATTACHMENT +ATTACHMENTS +ATTACK +ATTACKED +ATTACKER +ATTACKERS +ATTACKING +ATTACKS +ATTAIN +ATTAINABLE +ATTAINED +ATTAINING +ATTAINMENT +ATTALI +ATTANASIO +ATTEMPT +ATTEMPTED +ATTEMPTING +ATTEMPTS +ATTENBOROUGH +ATTEND +ATTENDANCE +ATTENDANT +ATTENDANTS +ATTENDANTS' +ATTENDED +ATTENDEES +ATTENDING +ATTENDS +ATTENTION +ATTENTIONS +ATTENTIVE +ATTENTIVELY +ATTENTIVENESS +ATTENUATED +ATTEST +ATTESTED +ATTESTING +ATTESTS +ATTIC +ATTICA +ATTICS +ATTILA +ATTIRE +ATTIRED +ATTITUDE +ATTITUDES +ATTITUDINAL +ATTKISSON +ATTORNEY +ATTORNEY'S +ATTORNEYS +ATTORNEYS' +ATTRACT +ATTRACTED +ATTRACTING +ATTRACTION +ATTRACTIONS +ATTRACTIVE +ATTRACTIVELY +ATTRACTIVENESS +ATTRACTS +ATTRIBUTABLE +ATTRIBUTE +ATTRIBUTED +ATTRIBUTES +ATTRIBUTING +ATTRIBUTION +ATTRITION +ATTUNED +ATTWOODS +ATWATER +ATWATER'S +ATWELL +ATWOOD +ATYPICAL +AU +AUBREY +AUBURN +AUCKLAND +AUCOIN +AUCTION +AUCTIONED +AUCTIONEER +AUCTIONEERS +AUCTIONING +AUCTIONS +AUDACIOUS +AUDACITY +AUDEN +AUDI +AUDI'S +AUDIBLE +AUDIENCE +AUDIENCE'S +AUDIENCES +AUDIO +AUDIOTAPE +AUDIOTAPES +AUDIOVISUAL +AUDIT +AUDITED +AUDITING +AUDITION +AUDITIONED +AUDITIONING +AUDITIONS +AUDITOR +AUDITOR'S +AUDITORIUM +AUDITORIUMS +AUDITORS +AUDITORS' +AUDITORY +AUDITS +AUDREY +AUDUBON +AUERBACH +AUG +AUGER +AUGMENT +AUGMENTATION +AUGMENTED +AUGMENTING +AUGUR +AUGURS +AUGUST +AUGUST'S +AUGUSTA +AUGUSTE +AUGUSTIN +AUGUSTINE +AUGUSTO +AUGUSTUS +AULD +AULETTA +AULT +AUM'S +AUNG +AUNT +AUNT'S +AUNTIE +AUNTS +AURA +AURAL +AURELIO +AURIEMMA +AURORA +AUSCHWITZ +AUSIMONT +AUSMAN +AUSPICES +AUSPICIOUS +AUSSIE +AUSTEN +AUSTER +AUSTERE +AUSTERITY +AUSTIN +AUSTIN'S +AUSTRAL +AUSTRALIA +AUSTRALIA'S +AUSTRALIAN +AUSTRALIANS +AUSTRALS +AUSTRIA +AUSTRIA'S +AUSTRIAN +AUSTRIANS +AUSTRO +AUTHENTIC +AUTHENTICALLY +AUTHENTICATE +AUTHENTICATED +AUTHENTICATION +AUTHENTICITY +AUTHER +AUTHOR +AUTHOR'S +AUTHORED +AUTHORITARIAN +AUTHORITARIANISM +AUTHORITATIVE +AUTHORITES +AUTHORITIES +AUTHORITIES' +AUTHORITY +AUTHORITY'S +AUTHORIZATION +AUTHORIZATIONS +AUTHORIZE +AUTHORIZED +AUTHORIZES +AUTHORIZING +AUTHORS +AUTHORS' +AUTHORSHIP +AUTISM +AUTISSIER +AUTISTIC +AUTO +AUTOBAHN +AUTOBIOGRAPHICAL +AUTOBIOGRAPHIES +AUTOBIOGRAPHY +AUTOCRACY +AUTOCRAT +AUTOCRATIC +AUTODESK +AUTOGRAPH +AUTOGRAPHED +AUTOGRAPHS +AUTOIMMUNE +AUTOLATINA +AUTOMAKER +AUTOMAKER'S +AUTOMAKERS +AUTOMAKERS' +AUTOMAKING +AUTOMATE +AUTOMATED +AUTOMATIC +AUTOMATICALLY +AUTOMATICS +AUTOMATING +AUTOMATION +AUTOMOBILE +AUTOMOBILES +AUTOMOTIVE +AUTONOMOUS +AUTONOMOUSLY +AUTONOMY +AUTOPACIFIC +AUTOPILOT +AUTOPSIES +AUTOPSY +AUTORAD +AUTORADS +AUTOS +AUTOTOTE +AUTOWORKER +AUTOWORKERS +AUTOZONE +AUTRY +AUTUMN +AUTUMNAL +AUX +AUXILIARY +AVA +AVAIL +AVAILABILITY +AVAILABLE +AVALANCHE +AVALANCHES +AVALON +AVANT +AVARICE +AVCO +AVE +AVEDON +AVELAR +AVENDANO +AVENGE +AVENGED +AVENGER +AVENGERS +AVENGING +AVENSON +AVENUE +AVENUE'S +AVENUES +AVERAGE +AVERAGE'S +AVERAGED +AVERAGES +AVERAGING +AVERELL +AVERS +AVERSE +AVERSION +AVERT +AVERTED +AVERTING +AVERTS +AVERY +AVERYS +AVG +AVI +AVIA +AVIAN +AVIANCA +AVIANO +AVIATION +AVIATOR +AVIATORS +AVID +AVIDLY +AVIION +AVILA +AVILES +AVIONICS +AVIRGAN +AVIS +AVITAL +AVIV +AVIV'S +AVMARK +AVNET +AVOCADO +AVOCADOS +AVOCATION +AVOID +AVOIDABLE +AVOIDANCE +AVOIDED +AVOIDING +AVOIDS +AVON +AVON'S +AVONDALE +AVOWED +AVOWEDLY +AVRAHAM +AVRETT +AVRIL +AVRIL'S +AVTEX +AVTOVAZ +AVUNCULAR +AW +AWACS +AWAD +AWAIT +AWAITED +AWAITING +AWAITS +AWAKE +AWAKEN +AWAKENED +AWAKENING +AWAKENINGS +AWAKENS +AWAMI +AWAN +AWARD +AWARDED +AWARDING +AWARDS +AWARE +AWARENESS +AWASH +AWAY +AWE +AWED +AWEIL +AWESOME +AWESTRUCK +AWFUL +AWFULLY +AWHILE +AWKWARD +AWKWARDLY +AWKWARDNESS +AWNING +AWNINGS +AWOKE +AWRY +AX +AXA +AXE +AXED +AXEL +AXELROD +AXES +AXING +AXIOM +AXIS +AXL +AXLE +AXLES +AY +AYA +AYACUCHO +AYAKO +AYALA +AYATOLLAH +AYATOLLAH'S +AYCOCK +AYDIN +AYE +AYER +AYER'S +AYERS +AYERST +AYKROYD +AYLWIN +AYLWIN'S +AYODHYA +AYRES +AYRIKYAN +AYYAD +AYYASH +AZABU +AZALEA +AZALEAS +AZAR +AZCARRAGA +AZCONA +AZEM +AZERBAIDZHAN +AZERBAIJAN +AZERBAIJAN'S +AZERBAIJANI +AZERBAIJANIS +AZERI +AZERIS +AZHAR +AZINGER +AZIZ +AZOFF +AZORES +AZTAR +AZTEC +AZTECA +AZTECS +AZURE +B'NAI +B'RITH +B. +B.'S +B.S +BAABDA +BAALBEK +BAATH +BABA +BABANGIDA +BABAR +BABBAGE'S +BABBITT +BABBITT'S +BABBLE +BABBLING +BABCOCK +BABE +BABEL +BABES +BABI +BABIES +BABIES' +BABOON +BABOONS +BABSON +BABY +BABY'S +BABYLON +BABYSITTER +BABYSITTERS +BABYSITTING +BACA +BACALL +BACARDI +BACCALAUREATE +BACCARAT +BACCHUS +BACH +BACH'S +BACHARACH +BACHE +BACHE'S +BACHELOR +BACHELOR'S +BACHELORS +BACHMAN +BACHMANN +BACILLUS +BACK +BACKBITING +BACKBOARD +BACKBONE +BACKCOUNTRY +BACKCOURT +BACKDATED +BACKDOOR +BACKDRAFT +BACKDROP +BACKDROPS +BACKED +BACKER +BACKER'S +BACKERS +BACKFIELD +BACKFIRE +BACKFIRED +BACKFIRES +BACKFIRING +BACKGROUND +BACKGROUNDS +BACKHAND +BACKHANDED +BACKHOE +BACKING +BACKLASH +BACKLOG +BACKLOGGED +BACKLOGS +BACKLOTS +BACKPACK +BACKPACKERS +BACKPACKING +BACKPACKS +BACKPEDALING +BACKROOM +BACKS +BACKSEAT +BACKSIDE +BACKSLIDING +BACKSTAGE +BACKSTOP +BACKSTRETCH +BACKSTROKE +BACKTRACK +BACKTRACKED +BACKTRACKING +BACKUP +BACKUPS +BACKUS +BACKWARD +BACKWARDNESS +BACKWARDS +BACKWATER +BACKWATERS +BACKWOODS +BACKYARD +BACKYARDS +BACON +BACOT +BACTERIA +BACTERIAL +BACTERIUM +BAD +BADE +BADEN +BADER +BADGE +BADGER +BADGERED +BADGERING +BADGERS +BADGES +BADLANDS +BADLY +BADMINTON +BADR +BADRAN +BAE +BAENA +BAER +BAERGA +BAEZ +BAEZA +BAFFLE +BAFFLED +BAFFLES +BAFFLING +BAG +BAGDAD +BAGEL +BAGELS +BAGERT +BAGGAGE +BAGGED +BAGGETT +BAGGING +BAGGIO +BAGGY +BAGHDAD +BAGHDAD'S +BAGIAN +BAGLEY +BAGPIPES +BAGS +BAGUIO +BAGWELL +BAH +BAHAMAS +BAHAMIAN +BAHIA +BAHR +BAHRAIN +BAHRAIN'S +BAHRAINI +BAHRENBURG +BAHT +BAI +BAIDOA +BAIKAL +BAIKONUR +BAIL +BAILARD +BAILED +BAILEY +BAILEY'S +BAILIFF +BAILIFFS +BAILING +BAILLIE +BAILOUT +BAILOUTS +BAILY +BAIN +BAINBRIDGE +BAINES +BAIR +BAIRD +BAIRD'S +BAIT +BAITED +BAITING +BAITS +BAJA +BAJARIN +BAKA +BAKATIN +BAKE +BAKED +BAKER +BAKER'S +BAKERIES +BAKERS +BAKERSFIELD +BAKERY +BAKES +BAKEWELL +BAKHTIAR +BAKING +BAKKE +BAKKER +BAKKER'S +BAKKERS +BAKKERS' +BAKR +BAKU +BAKULA +BAL +BALA +BALAGUER +BALAGUER'S +BALANCE +BALANCED +BALANCES +BALANCHINE +BALANCHINE'S +BALANCING +BALART +BALBOA +BALCEROWICZ +BALCH +BALCONIES +BALCONY +BALCOR +BALD +BALDING +BALDNESS +BALDRIGE +BALDWIN +BALDWIN'S +BALE +BALES +BALESTRA +BALFOUR +BALI +BALIAN +BALILES +BALK +BALKAN +BALKANIZATION +BALKANS +BALKED +BALKING +BALKS +BALKY +BALL +BALL'S +BALLAD +BALLADARES +BALLADS +BALLADUR +BALLADUR'S +BALLANTINE +BALLARD +BALLARD'S +BALLAST +BALLCLUB +BALLEN +BALLENGER +BALLERINA +BALLERINAS +BALLESTEROS +BALLET +BALLET'S +BALLETS +BALLGAME +BALLGAMES +BALLINGER +BALLISTIC +BALLISTICS +BALLMER +BALLOON +BALLOONED +BALLOONING +BALLOONS +BALLOT +BALLOTING +BALLOTS +BALLOU +BALLPARK +BALLPARKS +BALLPLAYER +BALLPLAYERS +BALLPOINT +BALLROOM +BALLROOMS +BALLS +BALLY +BALLY'S +BALLYHOO +BALLYHOOED +BALM +BALMY +BALONEY +BALSAM +BALSAMIC +BALTER +BALTIC +BALTICS +BALTIMORE +BALTIMORE'S +BALUCHISTAN +BALZER +BAM +BAMACA +BAMBA +BAMBERGER +BAMBI +BAMBOO +BAN +BANACCI +BANAL +BANALITY +BANAMEX +BANANA +BANANAS +BANC +BANCA +BANCAIRE +BANCARIO +BANCO +BANCOMER +BANCORP +BANCORP'S +BANCORPORATION +BANCROFT +BANCSHARES +BANCTEXAS +BAND +BAND'S +BANDA +BANDAGE +BANDAGED +BANDAGES +BANDAI +BANDANA +BANDANNA +BANDAR +BANDARANAIKE +BANDED +BANDERAS +BANDIED +BANDING +BANDIT +BANDITRY +BANDITS +BANDLEADER +BANDOW +BANDS +BANDSTAND +BANDWAGON +BANDWIDTH +BANE +BANERJEE +BANESTO +BANESTO'S +BANG +BANGALORE +BANGED +BANGEMANN +BANGERS +BANGERTER +BANGING +BANGKOK +BANGKOK'S +BANGLADESH +BANGLADESH'S +BANGLADESHI +BANGLADESHIS +BANGLES +BANGOR +BANGS +BANHARN +BANI +BANISH +BANISHED +BANISHING +BANISHMENT +BANISTER +BANJA +BANJO +BANK +BANK'S +BANKABLE +BANKAMERICA +BANKAMERICA'S +BANKCARD +BANKED +BANKEN +BANKER +BANKER'S +BANKERS +BANKERS' +BANKHEAD +BANKING +BANKING'S +BANKNOTE +BANKNOTES +BANKROLL +BANKROLLED +BANKROLLING +BANKRUPCTY +BANKRUPT +BANKRUPTCIES +BANKRUPTCY +BANKRUPTED +BANKRUPTING +BANKS +BANKS' +BANKSHARES +BANKVEREIN +BANNA +BANNED +BANNER +BANNERS +BANNING +BANNISTER +BANNON +BANOFF +BANOS +BANQUE +BANQUET +BANQUETS +BANS +BANTAM +BANTER +BANXQUOTE +BANYAN +BANZER +BANZHAF +BAO +BAPTISM +BAPTIST +BAPTISTE +BAPTISTS +BAPTIZED +BAR +BAR'S +BARACH +BARAJNEH +BARAK +BARAKA +BARAKAT +BARAM +BARAN +BARB +BARBADOS +BARBAKOW +BARBANEL +BARBARA +BARBARA'S +BARBARIAN +BARBARIANS +BARBARIC +BARBARISM +BARBARITY +BARBAROUS +BARBASH +BARBECUE +BARBECUED +BARBECUES +BARBED +BARBEE +BARBEQUE +BARBER +BARBER'S +BARBERA +BARBERS +BARBERSHOP +BARBIE +BARBIE'S +BARBIERI +BARBIES +BARBITURATES +BARBOSA +BARBOUR +BARBRA +BARBS +BARBUDA +BARCELLA +BARCELONA +BARCELONA'S +BARCLAY +BARCLAYS +BARCLAYS' +BARCLAYS'S +BARCO +BARCO'S +BARD +BARD'S +BARDERA +BARDO +BARDOT +BARE +BARED +BAREFOOT +BARELY +BARENBOIM +BARENTS +BARES +BAREST +BARFIELD +BARGAIN +BARGAINED +BARGAINER +BARGAINERS +BARGAINING +BARGAINS +BARGE +BARGED +BARGER +BARGES +BARI +BARING +BARING'S +BARINGS +BARINGS' +BARITONE +BARIUM +BARK +BARKED +BARKER +BARKIN +BARKING +BARKLEY +BARKLEY'S +BARKS +BARKSDALE +BARLETTA +BARLEY +BARLOON +BARLOW +BARN +BARNACLES +BARNARD +BARNARD'S +BARNES +BARNES' +BARNET +BARNETT +BARNETT'S +BARNETTE +BARNEY +BARNEY'S +BARNEYS +BARNS +BARNSTABLE +BARNSTORMING +BARNUM +BARNWELL +BARNYARD +BAROID +BAROMETER +BAROMETERS +BAROMETRIC +BARON +BARON'S +BARONE +BARONESS +BARONS +BAROQUE +BARR +BARR'S +BARRACK +BARRACKS +BARRACUDA +BARRAGAN +BARRAGE +BARRAGED +BARRAGES +BARRANQUILLA +BARRE +BARRE'S +BARRED +BARREL +BARRELED +BARRELING +BARRELS +BARREN +BARRERA +BARRETT +BARRETT'S +BARRICADA +BARRICADE +BARRICADED +BARRICADES +BARRICK +BARRICK'S +BARRIE +BARRIER +BARRIERS +BARRING +BARRINGTON +BARRIO +BARRIOS +BARRIS +BARRISTER +BARRISTERS +BARRO +BARRON +BARRON'S +BARROOM +BARROS +BARROW +BARROWS +BARRY +BARRY'S +BARRYMORE +BARS +BARSHEFSKY +BARSHOP +BARSTOW +BART +BART'S +BARTELS +BARTENDER +BARTENDERS +BARTER +BARTERED +BARTERING +BARTH +BARTHEL +BARTHELEMY +BARTHOLOMEW +BARTKO +BARTLESVILLE +BARTLETT +BARTLETT'S +BARTLEY +BARTOK +BARTON +BARTON'S +BARTOW +BARTY +BARUCH +BARYSHNIKOV +BARZANI +BAS +BASAL +BASAYEV +BASCOM +BASE +BASE'S +BASEBALL +BASEBALL'S +BASEBALLS +BASED +BASEL +BASELESS +BASELINE +BASEMAN +BASEMENT +BASEMENTS +BASES +BASH +BASHAM +BASHED +BASHER +BASHERS +BASHES +BASHFUL +BASHING +BASHIR +BASIC +BASICALLY +BASICS +BASIE +BASIL +BASILE +BASILICA +BASIN +BASING +BASINGER +BASINS +BASIS +BASK +BASKED +BASKET +BASKETBALL +BASKETBALL'S +BASKETBALLS +BASKETS +BASKIN +BASKING +BASQUE +BASQUES +BASRA +BASS +BASS'S +BASSAM +BASSE +BASSES +BASSET +BASSETT +BASSIST +BASSO +BASTARD +BASTARDS +BASTIAN +BASTILLE +BASTION +BASTIONS +BAT +BAT'S +BATAAN +BATALLION +BATAVIA +BATCH +BATCHELDER +BATCHES +BATEMAN +BATES +BATESVILLE +BATH +BATHE +BATHED +BATHERS +BATHGATE +BATHHOUSE +BATHING +BATHROBE +BATHROOM +BATHROOMS +BATHS +BATHTUB +BATHTUBS +BATHURST +BATISTA +BATMAN +BATMAN'S +BATMOBILE +BATON +BATONS +BATOR +BATS +BATSON +BATTAGLIA +BATTALION +BATTALIONS +BATTAMBANG +BATTED +BATTELLE +BATTEN +BATTENBERG +BATTER +BATTER'S +BATTERED +BATTERER +BATTERERS +BATTERIES +BATTERING +BATTERS +BATTERY +BATTERYMARCH +BATTICALOA +BATTING +BATTIPAGLIA +BATTISTA +BATTLE +BATTLED +BATTLEFIELD +BATTLEFIELDS +BATTLEFRONT +BATTLEGROUND +BATTLEGROUNDS +BATTLES +BATTLESHIP +BATTLESHIPS +BATTLING +BATTY +BATUS +BAUBLES +BAUCUS +BAUD +BAUDOUIN +BAUER +BAUGH +BAUGHMAN +BAUM +BAUMAN +BAUMANN +BAUMGARTNER +BAUSCH +BAUTISTA +BAUXITE +BAVARIA +BAVARIAN +BAVIS +BAWDY +BAXTER +BAXTER'S +BAY +BAY'S +BAYBANKS +BAYER +BAYER'S +BAYERISCHE +BAYH +BAYLES +BAYLESS +BAYLOR +BAYLOR'S +BAYLY +BAYONET +BAYONETS +BAYONNE +BAYOU +BAYOUS +BAYREUTH +BAYS +BAYSHORE +BAYSIDE +BAYTOWN +BAYVIEW +BAYWATCH +BAZ +BAZAAR +BAZAARS +BAZARGAN +BAZIN +BAZOFT +BAZOOKA +BE +BEA +BEACH +BEACH'S +BEACHED +BEACHES +BEACHFRONT +BEACHGOERS +BEACHHEAD +BEACHSIDE +BEACON +BEACONS +BEAD +BEADED +BEADLE +BEADS +BEAGLE +BEAK +BEAL +BEALE +BEALL +BEALS +BEAM +BEAMED +BEAMING +BEAMS +BEAN +BEAN'S +BEANS +BEAR +BEAR'S +BEARABLE +BEARD +BEARD'S +BEARDED +BEARDEN +BEARDS +BEARDSLEY +BEARER +BEARERS +BEARING +BEARINGS +BEARISH +BEARISHNESS +BEARS +BEARS' +BEASLEY +BEAST +BEASTIE +BEASTS +BEAT +BEATEN +BEATER +BEATERS +BEATHARD +BEATIFICATION +BEATIFIED +BEATING +BEATINGS +BEATLE +BEATLES +BEATLES' +BEATRICE +BEATRICE'S +BEATRIX +BEATS +BEATTIE +BEATTY +BEATTY'S +BEATY +BEAU +BEAUBIEN +BEAUBRUN +BEAUCHAMP +BEAUDOIN +BEAUFORT +BEAUJOLAIS +BEAULIEU +BEAUMONT +BEAUREGARD +BEAUTICIAN +BEAUTIES +BEAUTIFICATION +BEAUTIFUL +BEAUTIFULLY +BEAUTY +BEAUVAIS +BEAUX +BEAVER +BEAVERS +BEAVERTON +BEAVIS +BEAZER +BEAZER'S +BEAZLEY +BEBE +BEBEAR +BEBETO +BEBOP +BECAME +BECAUSE +BECERRA +BECHTEL +BECHTLE +BECK +BECK'S +BECKEL +BECKER +BECKER'S +BECKETT +BECKETT'S +BECKHAM +BECKLER +BECKLEY +BECKMAN +BECKON +BECKONED +BECKONING +BECKONS +BECKWITH +BECKWITH'S +BECKWITT +BECKY +BECOME +BECOMES +BECOMING +BECOR +BECTON +BED +BEDARD +BEDDED +BEDDING +BEDECKED +BEDELL +BEDEVIL +BEDEVILED +BEDFELLOWS +BEDFORD +BEDLAM +BEDOUIN +BEDOUINS +BEDRAGGLED +BEDRIDDEN +BEDROCK +BEDROOM +BEDROOMS +BEDROSIAN +BEDS +BEDSIDE +BEDTIME +BEE +BEEBE +BEECH +BEECHAM +BEECHAM'S +BEECHCRAFT +BEECHER +BEEF +BEEFED +BEEFING +BEEFY +BEEHIVE +BEEKEEPERS +BEEKMAN +BEEN +BEENE +BEENS +BEEP +BEEPER +BEEPERS +BEEPING +BEEPS +BEER +BEER'S +BEERS +BEERS'S +BEERSHEBA +BEES +BEESE +BEET +BEETHOVEN +BEETHOVEN'S +BEETLE +BEETLEJUICE +BEETLES +BEETS +BEEVILLE +BEFALL +BEFALLEN +BEFELL +BEFITS +BEFITTING +BEFORE +BEFOREHAND +BEFRIEND +BEFRIENDED +BEFRIENDS +BEFUDDLED +BEG +BEGALA +BEGAN +BEGAT +BEGAY +BEGETS +BEGGAR +BEGGARS +BEGGED +BEGGING +BEGGS +BEGHIN +BEGIN +BEGINNER +BEGINNERS +BEGINNING +BEGINNINGS +BEGINS +BEGLEITER +BEGLEY +BEGRUDGE +BEGS +BEGUILING +BEGUM +BEGUN +BEHALF +BEHAR +BEHAVE +BEHAVED +BEHAVES +BEHAVING +BEHAVIOR +BEHAVIORAL +BEHAVIORS +BEHEADED +BEHEADING +BEHEMOTH +BEHEMOTHS +BEHEST +BEHIND +BEHOF +BEHOLD +BEHOLDEN +BEHOLDER +BEHOOVES +BEHR +BEHRENS +BEHRING +BEIGE +BEIJING +BEIJING'S +BEILENSON +BEILIN +BEIN +BEING +BEINGS +BEIRA +BEIRUT +BEIRUT'S +BEIT +BEITA +BEKAA +BEL +BELA +BELAFONTE +BELARUS +BELATED +BELATEDLY +BELCH +BELCHER +BELCHING +BELDEN +BELDING +BELEAGUERED +BELFAST +BELFAST'S +BELFI +BELGE +BELGIAN +BELGIANS +BELGIQUE +BELGIQUE'S +BELGIUM +BELGIUM'S +BELGRADE +BELGRADE'S +BELIE +BELIED +BELIEF +BELIEFS +BELIES +BELIEVABILITY +BELIEVABLE +BELIEVE +BELIEVED +BELIEVER +BELIEVERS +BELIEVES +BELIEVING +BELINDA +BELITTLE +BELITTLED +BELITTLING +BELIZE +BELKNAP +BELL +BELL'S +BELLA +BELLAMY +BELLARMINE +BELLAS +BELLCORE +BELLE +BELLEVILLE +BELLEVUE +BELLI +BELLICOSE +BELLIED +BELLIES +BELLIGERENCE +BELLIGERENCY +BELLIGERENT +BELLIGERENTS +BELLINGHAM +BELLINI +BELLMON +BELLO +BELLOTTI +BELLOW +BELLOWED +BELLOWING +BELLOWS +BELLS +BELLS' +BELLSOUTH +BELLSOUTH'S +BELLWETHER +BELLY +BELMONT +BELO +BELOIT +BELONG +BELONGED +BELONGING +BELONGINGS +BELONGS +BELONOGOV +BELOUS +BELOVED +BELOW +BELSEN +BELSKY +BELT +BELTED +BELTH +BELTING +BELTON +BELTRAN +BELTS +BELTSVILLE +BELTWAY +BELUGA +BELUSHI +BELVEDERE +BELVIDERE +BELZBERG +BELZBERGS +BELZER +BEMBENEK +BEMOAN +BEMOANED +BEMOANING +BEMOANS +BEMUSED +BEN +BEN'S +BENAVIDES +BENAZIR +BENCH +BENCHED +BENCHES +BENCHLEY +BENCHMARK +BENCHMARKS +BEND +BENDECTIN +BENDEL +BENDER +BENDERS +BENDING +BENDIX +BENDJEDID +BENDS +BENEATH +BENECH +BENEDETTI +BENEDETTI'S +BENEDETTO +BENEDICT +BENEDICTINE +BENEDICTION +BENEFACTOR +BENEFACTORS +BENEFICIAL +BENEFICIALLY +BENEFICIARIES +BENEFICIARY +BENEFIT +BENEFIT'S +BENEFITED +BENEFITING +BENEFITS +BENEFITTED +BENEFITTING +BENELUX +BENES +BENETTON +BENETTON'S +BENEVOLENCE +BENEVOLENT +BENFER +BENGAL +BENGALI +BENGALS +BENGHAZI +BENHAM +BENHAMOU +BENI +BENICIA +BENIGHTED +BENIGN +BENIGNO +BENIN +BENING +BENITEZ +BENITO +BENJAMIN +BENJAMIN'S +BENJI +BENLATE +BENN +BENNET +BENNETT +BENNETT'S +BENNIE +BENNIGAN'S +BENNING +BENNINGTON +BENNIS +BENNO +BENNY +BENNY'S +BENOIT +BENSON +BENSON'S +BENSONHURST +BENT +BENTLEY +BENTON +BENTON'S +BENTONVILLE +BENTSEN +BENTSEN'S +BENTZ +BENZ +BENZ'S +BENZENE +BENZES +BEQUEATH +BEQUEATHED +BEQUEST +BEQUESTS +BERANEK +BERARD +BERATE +BERATED +BERATING +BERBER +BEREA +BEREAVED +BEREAVEMENT +BERECZ +BEREFT +BEREGOVOY +BERENDZEN +BERENGER +BERENSON +BERESFORD +BERET +BERETS +BERETTA +BEREUTER +BERG +BERG'S +BERGALIS +BERGDORF +BERGE +BERGEN +BERGER +BERGER'S +BERGERAC +BERGERON +BERGESON +BERGIN +BERGLAND +BERGMAN +BERGMAN'S +BERGMANN +BERGNER +BERGSTEN +BERGSTROM +BERIA +BERING +BERISFORD +BERJAYA +BERKE +BERKELEY +BERKELEY'S +BERKES +BERKEY +BERKLEY +BERKMAN +BERKOWITZ +BERKSHIRE +BERKSHIRE'S +BERKSHIRES +BERLE +BERLIN +BERLIN'S +BERLINER +BERLINERS +BERLIOZ +BERLITZ +BERLUSCONI +BERLUSCONI'S +BERMAN +BERMUDA +BERMUDEZ +BERN +BERNABE +BERNADETTE +BERNADINE +BERNAL +BERNAMA +BERNARD +BERNARDIN +BERNARDINO +BERNARDO +BERND +BERNDT +BERNE +BERNER +BERNHARD +BERNHARDT +BERNHEIM +BERNICE +BERNIE +BERNIE'S +BERNIER +BERNSEN +BERNSTEIN +BERNSTEIN'S +BERON +BERRA +BERRI +BERRIE +BERRIES +BERRIGAN +BERRINGER +BERRY +BERRY'S +BERRYESSA +BERRYHILL +BERSERK +BERSHAD +BERSON +BERT +BERTELSMANN +BERTH +BERTHA +BERTHELOT +BERTHS +BERTIE +BERTIN +BERTOLT +BERTOLUCCI +BERTRAM +BERTRAND +BERUBE +BERWICK +BERWYN +BERYL +BERYLLIUM +BESCHLOSS +BESET +BESETTING +BESHARATI +BESIDE +BESIDES +BESIEGED +BESIEGING +BESOTTED +BESPEAKS +BESPECTACLED +BESS +BESSEMER +BESSIE +BESSMERTNYKH +BEST +BEST'S +BESTED +BESTIALITY +BESTING +BESTOW +BESTOWED +BESTOWING +BESTOWS +BESTSELLER +BESTSELLERS +BESTSELLING +BET +BETA +BETANCOURT +BETASERON +BETH +BETHANY +BETHEL +BETHESDA +BETHLEHEM +BETHLEHEM'S +BETHPAGE +BETHUNE +BETRAY +BETRAYAL +BETRAYED +BETRAYING +BETRAYS +BETS +BETSEY +BETSY +BETTE +BETTENCOURT +BETTER +BETTERED +BETTERING +BETTERMENT +BETTERS +BETTI +BETTINA +BETTING +BETTINO +BETTIS +BETTMAN +BETTORS +BETTS +BETTY +BETWEEN +BETZ +BEUERLEIN +BEULAH +BEUTEL +BEV +BEVERAGE +BEVERAGES +BEVERLEY +BEVERLY +BEVERLY'S +BEVILACQUA +BEVILL +BEVMARK +BEVY +BEWARE +BEWILDERED +BEWILDERING +BEWILDERMENT +BEWITCHED +BEXAR +BEYER +BEYERS +BEYOND +BHAGWAN +BHARATIYA +BHATTARAI +BHIRUD +BHOPAL +BHUMIBOL +BHUTAN +BHUTTO +BHUTTO'S +BI +BIAGGI +BIAGGI'S +BIAMBY +BIANCA +BIANCHI +BIANCO +BIANNUAL +BIAS +BIASED +BIASES +BIB +BIBB +BIBI +BIBLE +BIBLES +BIBLICAL +BIC +BICAMERAL +BICENTENNIAL +BICEPS +BICHETTE +BICKER +BICKERED +BICKERING +BICKFORD +BICOASTAL +BICYCLE +BICYCLES +BICYCLING +BICYCLIST +BICYCLISTS +BID +BID'S +BIDDER +BIDDERS +BIDDING +BIDDLE +BIDE +BIDEN +BIDEN'S +BIDERMAN +BIDERMANN +BIDING +BIDS +BIDWELL +BIDWILL +BIEBER +BIEDERMANN +BIEHL +BIELECKI +BIEN +BIENNALE +BIENNIAL +BIERBAUER +BIFIDA +BIG +BIGELOW +BIGFOOT +BIGGAR +BIGGER +BIGGEST +BIGGIE +BIGGIO +BIGGS +BIGHORN +BIGNESS +BIGOT +BIGOTED +BIGOTRY +BIGOTS +BIGWIGS +BIHAC +BIHAR +BIJELJINA +BIKE +BIKER +BIKERS +BIKES +BIKING +BIKINI +BIKINIS +BIKO +BIL +BILAK +BILATERAL +BILATERALLY +BILBAO +BILBEISI +BILBRAY +BILD +BILDT +BILE +BILINGUAL +BILIRAKIS +BILK +BILKED +BILKING +BILL +BILL'S +BILLABLE +BILLBOARD +BILLBOARD'S +BILLBOARDS +BILLED +BILLER +BILLERICA +BILLIARD +BILLIARDS +BILLIE +BILLIG +BILLING +BILLINGS +BILLINGTON +BILLION +BILLIONAIRE +BILLIONAIRE'S +BILLIONAIRES +BILLIONS +BILLIONTH +BILLMYER +BILLOWED +BILLOWING +BILLS +BILLS' +BILLY +BILLY'S +BILOXI +BILTMORE +BILZERIAN +BILZERIAN'S +BIMBO +BIMBOS +BIMONTHLY +BIN +BINARY +BINATIONAL +BIND +BINDER +BINDERS +BINDING +BINDINGS +BINDLE +BINDLES +BINDS +BING +BINGAMAN +BINGE +BINGES +BINGHAM +BINGHAMTON +BINGO +BINH +BINKLEY +BINNEY +BINOCULARS +BINS +BINYAMIN +BIO +BIOCHEM +BIOCHEMICAL +BIOCHEMIST +BIOCHEMISTRY +BIOCONTROL +BIOCRAFT +BIODEGRADABLE +BIODIVERSITY +BIOENGINEERED +BIOETHICS +BIOFEEDBACK +BIOGEN +BIOGEN'S +BIOGRAPHER +BIOGRAPHERS +BIOGRAPHICAL +BIOGRAPHIES +BIOGRAPHY +BIOLOGICAL +BIOLOGICALLY +BIOLOGICS +BIOLOGIST +BIOLOGISTS +BIOLOGY +BIOMASS +BIOMEDICAL +BIOMEDICALS +BIOMET +BIONDI +BIONIC +BIOPHARMACEUTICAL +BIOPLASTY +BIOPSIES +BIOPSY +BIOREMEDIATION +BIOSCIENCE +BIOSCIENCES +BIOSPHERE +BIOSYSTEMS +BIOTECH +BIOTECHNOLOGY +BIPARTISAN +BIPARTISANSHIP +BIPHENYLS +BIPLANE +BIPOLAR +BIR +BIRACIAL +BIRCH +BIRD +BIRD'S +BIRDERS +BIRDIE +BIRDIED +BIRDIES +BIRDING +BIRDS +BIRDS' +BIRDSHOT +BIREH +BIRENDRA +BIRGIT +BIRINYI +BIRKENAU +BIRMINGHAM +BIRMINGHAM'S +BIRNBAUM +BIRNEY +BIRTH +BIRTHDATE +BIRTHDAY +BIRTHDAYS +BIRTHING +BIRTHPLACE +BIRTHRATE +BIRTHRIGHT +BIRTHS +BIRTHWEIGHT +BIRTLEY +BISCAYNE +BISCHOFF +BISCUIT +BISCUITS +BISEXUAL +BISEXUALITY +BISEXUALS +BISHARA +BISHOP +BISHOP'S +BISHOPS +BISHOPS' +BISHOPSGATE +BISMARCK +BISMOL +BISMUTH +BISON +BISSAU +BISSELL +BISTRO +BIT +BITBURG +BITCH +BITCHES +BITE +BITER +BITES +BITING +BITS +BITTEN +BITTER +BITTEREST +BITTERLY +BITTERMANN +BITTERNESS +BITTERSWEET +BITTY +BITUMINOUS +BIVENS +BIWEEKLY +BIXBY +BIZ +BIZARRE +BIZARRELY +BIZIMUNGU +BIZMART +BJOERN +BJORK +BJORN +BLACK +BLACK'S +BLACKBERRY +BLACKBIRD +BLACKBIRDS +BLACKBOARD +BLACKBURN +BLACKED +BLACKENED +BLACKENING +BLACKER +BLACKFOOT +BLACKFORD +BLACKHAWK +BLACKHAWKS +BLACKING +BLACKJACK +BLACKLEY +BLACKLIST +BLACKLISTED +BLACKLISTING +BLACKMAIL +BLACKMAILED +BLACKMAILING +BLACKMAN +BLACKMON +BLACKMUN +BLACKMUN'S +BLACKNESS +BLACKOUT +BLACKOUTS +BLACKPOOL +BLACKROCK +BLACKS +BLACKS' +BLACKSBURG +BLACKSHEAR +BLACKSMITH +BLACKSTOCK +BLACKSTONE +BLACKSTONE'S +BLACKTOP +BLACKWELL +BLACKWOOD +BLADDER +BLADDERS +BLADE +BLADES +BLAH +BLAHA +BLAINE +BLAIR +BLAIR'S +BLAKE +BLAKE'S +BLAKELY +BLAKEMORE +BLAKENEY +BLAKESLEE +BLAKEY +BLAME +BLAMED +BLAMELESS +BLAMES +BLAMING +BLANC +BLANCA +BLANCH +BLANCHARD +BLANCHARD'S +BLANCHE +BLANCO +BLAND +BLANDLY +BLANDON +BLANK +BLANKED +BLANKENHORN +BLANKENSHIP +BLANKET +BLANKETED +BLANKETING +BLANKETS +BLANKLEY +BLANKLY +BLANKS +BLANTON +BLARE +BLARED +BLARES +BLARING +BLAS +BLASE +BLASIER +BLASPHEMES +BLASPHEMING +BLASPHEMOUS +BLASPHEMY +BLASS +BLAST +BLASTED +BLASTER +BLASTING +BLASTOFF +BLASTS +BLATANT +BLATANTLY +BLATHER +BLATT +BLAUSER +BLAYLOCK +BLAZE +BLAZED +BLAZER +BLAZERS +BLAZES +BLAZING +BLEACH +BLEACHED +BLEACHER +BLEACHERS +BLEACHING +BLEAK +BLEAKER +BLEAKEST +BLEARY +BLECH +BLED +BLEDSOE +BLEED +BLEEDING +BLEEDS +BLEEP +BLEMISH +BLEMISHES +BLEND +BLENDED +BLENDER +BLENDING +BLENDON +BLENDS +BLESS +BLESSED +BLESSING +BLESSINGS +BLEU +BLEVINS +BLEW +BLIGH +BLIGHT +BLIGHTED +BLILEY +BLIMP +BLIMPS +BLIND +BLINDED +BLINDER +BLINDER'S +BLINDERS +BLINDFOLD +BLINDFOLDED +BLINDING +BLINDLY +BLINDNESS +BLINDS +BLINDSIDED +BLINK +BLINKED +BLINKING +BLINKS +BLIP +BLIPS +BLISS +BLISSFUL +BLISSFULLY +BLISTER +BLISTERED +BLISTERING +BLISTERS +BLITHE +BLITHELY +BLITZ +BLITZED +BLITZER +BLITZES +BLITZING +BLITZKRIEG +BLIX +BLIZZARD +BLIZZARDS +BLOAT +BLOATED +BLOB +BLOBBY +BLOBS +BLOC +BLOC'S +BLOCH +BLOCH'S +BLOCK +BLOCK'S +BLOCKADE +BLOCKADED +BLOCKADES +BLOCKADING +BLOCKAGE +BLOCKAGES +BLOCKBUSTER +BLOCKBUSTER'S +BLOCKBUSTERS +BLOCKED +BLOCKER +BLOCKERS +BLOCKING +BLOCKS +BLOCS +BLODGETT +BLOEDEL +BLOEMFONTEIN +BLOHM +BLOND +BLONDE +BLONDES +BLONDIE +BLOOD +BLOODBATH +BLOODED +BLOODHOUNDS +BLOODIED +BLOODIER +BLOODIEST +BLOODLESS +BLOODLETTING +BLOODS +BLOODSHED +BLOODSTAIN +BLOODSTAINED +BLOODSTAINS +BLOODSTREAM +BLOODTHIRSTY +BLOODWORTH +BLOODY +BLOOM +BLOOM'S +BLOOMBERG +BLOOMED +BLOOMER +BLOOMFIELD +BLOOMING +BLOOMINGDALE'S +BLOOMINGTON +BLOOMS +BLOOMSBURY +BLOOPER +BLOOPERS +BLOSSOM +BLOSSOMED +BLOSSOMING +BLOSSOMS +BLOT +BLOTTED +BLOTTER +BLOUNT +BLOUSE +BLOUSES +BLOW +BLOWER +BLOWERS +BLOWFISH +BLOWING +BLOWN +BLOWOUT +BLOWOUTS +BLOWS +BLOWTORCH +BLOWUP +BLUDGEON +BLUDGEONED +BLUDGEONING +BLUE +BLUE'S +BLUEBERRIES +BLUEBERRY +BLUEBIRD +BLUEBONNET +BLUEFIELD +BLUEFIELDS +BLUEFISH +BLUEGRASS +BLUEPRINT +BLUEPRINTS +BLUES +BLUES' +BLUESTONE +BLUESY +BLUFF +BLUFFING +BLUFFS +BLUISH +BLUM +BLUMBERG +BLUME +BLUMENFELD +BLUMENTHAL +BLUMSTEIN +BLUNDER +BLUNDERED +BLUNDERING +BLUNDERS +BLUNT +BLUNTED +BLUNTER +BLUNTING +BLUNTLY +BLUNTNESS +BLUR +BLURB +BLURBS +BLURRED +BLURRING +BLURRY +BLURS +BLURTED +BLUSH +BLUSHING +BLUSTER +BLUSTERY +BLUTE +BLY +BLYSTONE +BLYTH +BLYTHE +BO +BOA +BOAR +BOARD +BOARD'S +BOARDED +BOARDER +BOARDERS +BOARDING +BOARDINGHOUSE +BOARDINGS +BOARDMAN +BOARDROOM +BOARDROOMS +BOARDS +BOARDWALK +BOAS +BOAST +BOASTED +BOASTFUL +BOASTING +BOASTS +BOAT +BOAT'S +BOATER +BOATERS +BOATHOUSE +BOATING +BOATLIFT +BOATLOAD +BOATLOADS +BOATMAN +BOATMEN'S +BOATS +BOATWRIGHT +BOAZ +BOB +BOB'S +BOBBED +BOBBI +BOBBIE +BOBBING +BOBBITT +BOBBITT'S +BOBBY +BOBBY'S +BOBCAT +BOBER +BOBO +BOBS +BOBSLED +BOCA +BOCAY +BOCCARDI +BOCHCO +BOCK +BOCKIUS +BODE +BODEGA +BODES +BODICE +BODIED +BODIES +BODILY +BODIN +BODINE +BODMAN +BODO +BODY +BODY'S +BODYGUARD +BODYGUARDS +BODZIAK +BOE +BOEHLERT +BOEHM +BOEHME +BOEHNER +BOEHRINGER +BOEING +BOEING'S +BOELKOW +BOER +BOESAK +BOESKY +BOESKY'S +BOETTCHER +BOEYNANTS +BOFA +BOFORS +BOG +BOGART +BOGDAN +BOGDANOVICH +BOGEY +BOGEYED +BOGEYMAN +BOGEYS +BOGGED +BOGGING +BOGGLES +BOGGLING +BOGGS +BOGLE +BOGNER +BOGOR +BOGOSIAN +BOGOTA +BOGOTA'S +BOGS +BOGUS +BOHEME +BOHEMIA +BOHEMIAN +BOHEMIANS +BOHN +BOIES +BOIGNY +BOIL +BOILED +BOILER +BOILERPLATE +BOILERS +BOILING +BOILS +BOIS +BOISE +BOISJOLY +BOISTEROUS +BOITANO +BOK +BOKSBURG +BOKSEN +BOL +BOLAN +BOLAND +BOLANOS +BOLAR +BOLAR'S +BOLD +BOLDEN +BOLDER +BOLDEST +BOLDLY +BOLDNESS +BOLDUC +BOLEN +BOLERO +BOLGER +BOLICK +BOLIN +BOLIVAR +BOLIVIA +BOLIVIA'S +BOLIVIAN +BOLIVIANS +BOLL +BOLLENBACH +BOLLES +BOLLING +BOLLINGER +BOLO +BOLOGNA +BOLSA +BOLSA'S +BOLSHEVIK +BOLSHEVIKS +BOLSHOI +BOLSTER +BOLSTERED +BOLSTERING +BOLSTERS +BOLT +BOLTED +BOLTING +BOLTON +BOLTS +BOLTZ +BOM +BOMB +BOMB'S +BOMBARD +BOMBARDED +BOMBARDIER +BOMBARDIER'S +BOMBARDING +BOMBARDMENT +BOMBARDMENTS +BOMBAST +BOMBASTIC +BOMBAY +BOMBAY'S +BOMBED +BOMBER +BOMBER'S +BOMBERS +BOMBING +BOMBINGS +BOMBS +BOMBSHELL +BOMBSHELLS +BON +BONA +BONADUCE +BONANNO +BONANZA +BONAPARTE +BOND +BOND'S +BONDAGE +BONDED +BONDERMAN +BONDHOLDER +BONDHOLDERS +BONDHOLDERS' +BONDING +BONDS +BONDS' +BONE +BONED +BONEFISH +BONELESS +BONER +BONES +BONFIRE +BONFIRES +BONG +BONGO +BONHAM +BONI +BONIFACIO +BONILLA +BONINO +BONIOR +BONITA +BONKER +BONKERS +BONN +BONN'S +BONNER +BONNET +BONNEVILLE +BONNEY +BONNIE +BONNY +BONO +BONO'S +BONSAI +BONUS +BONUSES +BONWIT +BONY +BOO +BOOBY +BOOED +BOOGIE +BOOING +BOOK +BOOK'S +BOOKCASE +BOOKCASES +BOOKED +BOOKER +BOOKIE +BOOKIES +BOOKING +BOOKINGS +BOOKISH +BOOKKEEPER +BOOKKEEPING +BOOKLET +BOOKLETS +BOOKMAKER +BOOKMAKERS +BOOKMAKING +BOOKS +BOOKS' +BOOKSELLER +BOOKSELLERS +BOOKSHELF +BOOKSHELVES +BOOKSHOP +BOOKSTORE +BOOKSTORES +BOOM +BOOMED +BOOMER +BOOMERANG +BOOMERS +BOOMERS' +BOOMING +BOOMLET +BOOMS +BOOMTOWN +BOON +BOONDOGGLE +BOONE +BOONVILLE +BOORDA +BOORISH +BOORSTIN +BOOS +BOOST +BOOSTED +BOOSTER +BOOSTERISM +BOOSTERS +BOOSTING +BOOSTS +BOOT +BOOTED +BOOTH +BOOTH'S +BOOTHE +BOOTHS +BOOTIES +BOOTLEG +BOOTLEGGERS +BOOTLEGGING +BOOTS +BOOTSTRAPS +BOOTY +BOOZ +BOOZE +BOOZING +BOP +BOPHUTHATSWANA +BOPP +BOPPER +BORA +BORBA +BORDALLO +BORDEAUX +BORDELLO +BORDEN +BORDEN'S +BORDER +BORDERED +BORDERING +BORDERLESS +BORDERLINE +BORDERS +BORDON +BORE +BORED +BOREDOM +BOREN +BOREN'S +BORER +BORES +BORG +BORG'S +BORGE +BORGER +BORGES +BORING +BORIS +BORJA +BORK +BORK'S +BORLAND +BORLAND'S +BORMAN +BORMAN'S +BORN +BORNE +BORNEO +BORON +BOROUGH +BOROUGH'S +BOROUGHS +BORREGO +BORRELLI +BORROW +BORROWED +BORROWER +BORROWER'S +BORROWERS +BORROWERS' +BORROWING +BORROWINGS +BORROWS +BORSCHT +BORSKI +BOS +BOSAK +BOSCH +BOSCH'S +BOSCHWITZ +BOSCO +BOSE +BOSKET +BOSKIN +BOSKO +BOSLEGO +BOSLEY +BOSNIA +BOSNIA'S +BOSNIAN +BOSNIANS +BOSOM +BOSPORUS +BOSS +BOSS' +BOSS'S +BOSSES +BOSSI +BOSSIDY +BOSSY +BOSTIAN +BOSTON +BOSTON'S +BOSTONIANS +BOSTWICK +BOSWELL +BOSWORTH +BOTANIC +BOTANICAL +BOTANIST +BOTANISTS +BOTANY +BOTCH +BOTCHED +BOTERO +BOTH +BOTHA +BOTHA'S +BOTHELL +BOTHER +BOTHERED +BOTHERING +BOTHERS +BOTHERSOME +BOTSWANA +BOTTLE +BOTTLED +BOTTLENECK +BOTTLENECKS +BOTTLENOSE +BOTTLER +BOTTLERS +BOTTLES +BOTTLING +BOTTOM +BOTTOMED +BOTTOMING +BOTTOMLESS +BOTTOMS +BOTTS +BOTULISM +BOUCHARD +BOUCHER +BOUDIN +BOUGAINVILLE +BOUGHT +BOUKNIGHT +BOULANGER +BOULDER +BOULDERS +BOULEVARD +BOULEVARDS +BOULEZ +BOULTER +BOUNCE +BOUNCED +BOUNCER +BOUNCERS +BOUNCES +BOUNCING +BOUNCY +BOUND +BOUNDARIES +BOUNDARY +BOUNDED +BOUNDING +BOUNDLESS +BOUNDS +BOUNTIES +BOUNTIFUL +BOUNTY +BOUQUET +BOUQUETS +BOURASSA +BOURBON +BOURGEOIS +BOURGEOISIE +BOURGET +BOURGUIBA +BOURJ +BOURKE +BOURNE +BOURQUE +BOURSE +BOURSE'S +BOURSES +BOUSQUET +BOUSSENA +BOUT +BOUTERSE +BOUTIQUE +BOUTIQUES +BOUTROS +BOUTS +BOUVIER +BOUYGUES +BOVARD +BOVE +BOVERI +BOVINE +BOW +BOWATER +BOWDEN +BOWDOIN +BOWE +BOWE'S +BOWED +BOWEL +BOWELS +BOWEN +BOWEN'S +BOWER +BOWERS +BOWERY +BOWES +BOWIE +BOWING +BOWKER +BOWL +BOWL'S +BOWLED +BOWLER +BOWLERS +BOWLES +BOWLIN +BOWLING +BOWLS +BOWMAN +BOWMAN'S +BOWNE +BOWS +BOWSHER +BOX +BOXCAR +BOXCARS +BOXED +BOXER +BOXER'S +BOXERS +BOXES +BOXING +BOXING'S +BOXY +BOY +BOY'S +BOYCE +BOYCOTT +BOYCOTTED +BOYCOTTING +BOYCOTTS +BOYD +BOYDEN +BOYER +BOYFRIEND +BOYFRIEND'S +BOYFRIENDS +BOYHOOD +BOYISH +BOYKIN +BOYLAN +BOYLE +BOYLE'S +BOYNTON +BOYS +BOYS' +BOYZ +BOZELL +BOZELL'S +BOZEMAN +BOZIC +BOZO +BOZOS +BOZTEPE +BRA +BRAC +BRACE +BRACED +BRACELET +BRACELETS +BRACES +BRACEY +BRACH +BRACHER +BRACHFELD +BRACING +BRACK +BRACKEN +BRACKET +BRACKETS +BRACKETT +BRAD +BRADBURY +BRADDOCK +BRADEN +BRADENTON +BRADFORD +BRADLEE +BRADLEES +BRADLEY +BRADLEY'S +BRADLEYS +BRADSHAW +BRADSTREET +BRADSTREET'S +BRADT +BRADY +BRADY'S +BRADYS +BRAE +BRAER +BRAG +BRAGA +BRAGG +BRAGGED +BRAGGING +BRAGS +BRAHMS +BRAID +BRAIDED +BRAIDS +BRAIDWOOD +BRAILLE +BRAIN +BRAIN'S +BRAINCHILD +BRAINER +BRAINERD +BRAINPOWER +BRAINS +BRAINSTORM +BRAINSTORMING +BRAINTREE +BRAINWASHED +BRAINWASHING +BRAINY +BRAISED +BRAKE +BRAKED +BRAKEMAN +BRAKEMEN +BRAKES +BRAKING +BRAM +BRAMALEA +BRAMAN +BRAMBLES +BRAMWELL +BRAN +BRANAGH +BRANCA +BRANCH +BRANCH'S +BRANCHED +BRANCHES +BRANCHING +BRANCO +BRAND +BRAND'S +BRANDED +BRANDEIS +BRANDENBURG +BRANDENSTEIN +BRANDES +BRANDING +BRANDISH +BRANDISHED +BRANDISHING +BRANDLEY +BRANDO +BRANDO'S +BRANDON +BRANDS +BRANDS' +BRANDT +BRANDY +BRANDYWINE +BRANFORD +BRANHAM +BRANIFF +BRANIFF'S +BRANKO +BRANNON +BRANSON +BRANSON'S +BRANSTAD +BRANT +BRANTLEY +BRAQUE +BRAS +BRASCAN +BRASELTON +BRASH +BRASIL +BRASILIA +BRASOV +BRASS +BRASSY +BRAT +BRATISLAVA +BRATS +BRATTON +BRAUDE +BRAUER +BRAUN +BRAUN'S +BRAVADO +BRAVE +BRAVED +BRAVEHEART +BRAVELY +BRAVER +BRAVERMAN +BRAVERY +BRAVES +BRAVES' +BRAVEST +BRAVING +BRAVO +BRAVURA +BRAWL +BRAWLEY +BRAWLEY'S +BRAWLING +BRAWLS +BRAWN +BRAWNY +BRAXTON +BRAY +BRAZAUSKAS +BRAZELTON +BRAZEN +BRAZENLY +BRAZIL +BRAZIL'S +BRAZILIAN +BRAZILIANS +BRAZOS +BRAZZAVILLE +BRCKO +BREA +BREACH +BREACHED +BREACHES +BREACHING +BREAD +BREADBASKET +BREADED +BREADS +BREADTH +BREADWINNER +BREAK +BREAKAGE +BREAKAWAY +BREAKDOWN +BREAKDOWNS +BREAKER +BREAKERS +BREAKEVEN +BREAKFAST +BREAKFASTS +BREAKING +BREAKNECK +BREAKOUT +BREAKS +BREAKTHROUGH +BREAKTHROUGHS +BREAKUP +BREAKUPS +BREAKWATER +BREAM +BREAST +BREASTED +BREASTFEEDING +BREASTS +BREATH +BREATHE +BREATHED +BREATHER +BREATHES +BREATHING +BREATHLESS +BREATHLESSLY +BREATHS +BREATHTAKING +BREATHTAKINGLY +BREAUX +BRECHT +BRECK +BRECKENRIDGE +BRED +BREECH +BREED +BREEDEN +BREEDEN'S +BREEDER +BREEDERS +BREEDERS' +BREEDING +BREEDS +BREEN +BREEZE +BREEZED +BREEZES +BREEZY +BREGLIO +BREGMAN +BREMEN +BREMER +BREMERTON +BRENDA +BRENDAN +BRENDSEL +BRENNAN +BRENNAN'S +BRENNEKE +BRENNER +BRENT +BRENTON +BRENTWOOD +BRESLER +BRESLIN +BRESSER +BRESSLER +BREST +BRET +BRETHREN +BRETON +BRETT +BRETTON +BRETZ +BREUEL +BREUER +BREVARD +BREVITY +BREW +BREWED +BREWER +BREWER'S +BREWERIES +BREWERS +BREWERS' +BREWERY +BREWERY'S +BREWING +BREWS +BREWSTER +BREYER +BREYER'S +BREZHNEV +BREZHNEV'S +BRIAN +BRIAN'S +BRIAR +BRIBE +BRIBED +BRIBERY +BRIBES +BRIBING +BRICE +BRICK +BRICKELL +BRICKER +BRICKLAYER +BRICKLIN +BRICKMAN +BRICKS +BRIDAL +BRIDE +BRIDE'S +BRIDEGROOM +BRIDES +BRIDESMAIDS +BRIDGE +BRIDGE'S +BRIDGED +BRIDGEPORT +BRIDGEPORT'S +BRIDGER +BRIDGES +BRIDGESTONE +BRIDGESTONE'S +BRIDGET +BRIDGETON +BRIDGEWATER +BRIDGING +BRIDLE +BRIE +BRIEF +BRIEFCASE +BRIEFCASES +BRIEFED +BRIEFER +BRIEFERS +BRIEFING +BRIEFINGS +BRIEFLY +BRIEFS +BRIEN +BRIERLEY +BRIG +BRIGADE +BRIGADEER +BRIGADES +BRIGADIER +BRIGGS +BRIGHAM +BRIGHT +BRIGHTEN +BRIGHTENED +BRIGHTENING +BRIGHTENS +BRIGHTER +BRIGHTEST +BRIGHTLY +BRIGHTMAN +BRIGHTNESS +BRIGHTON +BRIGITTE +BRILL +BRILLIANCE +BRILLIANT +BRILLIANTLY +BRIM +BRIMELOW +BRIMMED +BRIMMER +BRIMMING +BRIMSTONE +BRINDISI +BRINE +BRING +BRINGING +BRINGS +BRINK +BRINK'S +BRINKER +BRINKERHOFF +BRINKLEY +BRINKMAN +BRINKMANSHIP +BRINKSMANSHIP +BRINNER +BRINSON +BRIO +BRIONES +BRISBANE +BRISCOE +BRISENO +BRISK +BRISKER +BRISKET +BRISKLY +BRISTLE +BRISTLED +BRISTLES +BRISTLING +BRISTOL +BRISTOW +BRIT +BRITAIN +BRITAIN'S +BRITANNIA +BRITANNICA +BRITCHES +BRITE +BRITISH +BRITO +BRITOIL +BRITON +BRITONS +BRITS +BRITT +BRITTAIN +BRITTAN +BRITTANY +BRITTEN +BRITTEN'S +BRITTLE +BRITTON +BRIZOLA +BRNO +BROACH +BROACHED +BROAD +BROADBAND +BROADBASED +BROADBENT +BROADCAST +BROADCASTER +BROADCASTER'S +BROADCASTERS +BROADCASTERS' +BROADCASTING +BROADCASTING'S +BROADCASTS +BROADEN +BROADENED +BROADENING +BROADENS +BROADER +BROADEST +BROADHURST +BROADLY +BROADMAN +BROADSIDE +BROADSIDES +BROADVIEW +BROADWAY +BROADWAY'S +BROBECK +BROCADE +BROCCOLI +BROCHU +BROCHURE +BROCHURES +BROCK +BROCK'S +BROCKBANK +BROCKTON +BROCKWAY +BRODER +BRODERBUND +BRODERICK +BRODEUR +BRODIE +BRODSKY +BRODY +BROEK +BROGAN +BROIL +BROILED +BROILER +BROILERS +BROILING +BROKAW +BROKE +BROKEN +BROKER +BROKER'S +BROKERAGE +BROKERAGE'S +BROKERAGES +BROKERED +BROKERING +BROKERS +BROKERS' +BROKING +BROLIN +BROM +BROMBERG +BROMIDE +BROMINE +BROMLEY +BROMWICH +BRONCHIAL +BRONCHITIS +BRONCO +BRONCOS +BRONCOS' +BRONFMAN +BRONFMAN'S +BRONFMANS +BRONISLAW +BRONNER +BRONSON +BRONSTEIN +BRONSTON +BRONTE +BRONX +BRONXVILLE +BRONZE +BRONZED +BRONZES +BROOCH +BROOD +BROODING +BROOK +BROOKE +BROOKE'S +BROOKES +BROOKFIELD +BROOKHAVEN +BROOKHURST +BROOKINGS +BROOKINS +BROOKLIER +BROOKLINE +BROOKLYN +BROOKLYN'S +BROOKNER +BROOKS +BROOKS' +BROOKS'S +BROOKSIDE +BROOKSTONE +BROOKSVILLE +BROOM +BROOME +BROOMFIELD +BROOMS +BROOMSTICK +BROPHY +BROSNAHAN +BROSNAN +BROTH +BROTHEL +BROTHELS +BROTHER +BROTHER'S +BROTHERHOOD +BROTHERLY +BROTHERS +BROTHERS' +BROUGHT +BROUGHTON +BROUHAHA +BROUNTAS +BROUSSARD +BROUWER +BROW +BROWARD +BROWDER +BROWER +BROWN +BROWN'S +BROWNBACK +BROWNE +BROWNED +BROWNELL +BROWNER +BROWNIE +BROWNIES +BROWNING +BROWNING'S +BROWNISH +BROWNOUTS +BROWNS +BROWNS' +BROWNSTEIN +BROWNSTONE +BROWNSVILLE +BROWS +BROWSE +BROWSED +BROWSER +BROWSERS +BROWSING +BROYLES +BROZ +BROZMAN +BRUBAKER +BRUBECK +BRUCAN +BRUCE +BRUCE'S +BRUCELLOSIS +BRUCK +BRUCKHEIMER +BRUCKNER +BRUECHER +BRUGUERA +BRUIN +BRUINS +BRUINS' +BRUISE +BRUISED +BRUISES +BRUISING +BRULTE +BRUMBAUGH +BRUMFIELD +BRUMLEY +BRUNCH +BRUNDTLAND +BRUNEI +BRUNER +BRUNETTE +BRUNNER +BRUNO +BRUNO'S +BRUNSON +BRUNSWICK +BRUNSWICK'S +BRUNSWIG +BRUNSWIJK +BRUNT +BRUSCA +BRUSETT +BRUSH +BRUSHED +BRUSHES +BRUSHING +BRUSHY +BRUSQUE +BRUSSELS +BRUT +BRUTAL +BRUTALITY +BRUTALIZED +BRUTALIZING +BRUTALLY +BRUTE +BRUTISH +BRUTON +BRUTUS +BRUXELLES +BRUYETTE +BRYAN +BRYAN'S +BRYANT +BRYANT'S +BRYCE +BRYGIDA'S +BRYN +BRYSON +BRZEZINSKI +BSKYB +BTU +BU +BUBBA +BUBBLE +BUBBLED +BUBBLES +BUBBLING +BUBBLY +BUBKA +BUBONIC +BUCARAM +BUCCANEERS +BUCHANAN +BUCHANAN'S +BUCHAREST +BUCHAREST'S +BUCHENWALD +BUCHER +BUCHI +BUCHMAN +BUCHSBAUM +BUCHWALD +BUCHWALD'S +BUCK +BUCKED +BUCKET +BUCKETS +BUCKEY +BUCKEY'S +BUCKEYE +BUCKHEAD +BUCKHORN +BUCKING +BUCKINGHAM +BUCKLAND +BUCKLE +BUCKLED +BUCKLES +BUCKLEY +BUCKLEY'S +BUCKLING +BUCKNER +BUCKS +BUCKSHOT +BUCKSKIN +BUCKSTEIN +BUCKWHEAT +BUCKY +BUCOLIC +BUCS +BUD +BUD'S +BUDAPEST +BUDAPEST'S +BUDD +BUDDHA +BUDDHISM +BUDDHIST +BUDDHISTS +BUDDIES +BUDDING +BUDDY +BUDDY'S +BUDENNOVSK +BUDGE +BUDGED +BUDGET +BUDGET'S +BUDGETARY +BUDGETED +BUDGETING +BUDGETS +BUDGING +BUDIG +BUDS +BUDVAR +BUDWEISER +BUDYONNOVSK +BUECHNER +BUELL +BUENA +BUENDIA +BUENO +BUENOS +BUFF +BUFFALO +BUFFALO'S +BUFFALOES +BUFFER +BUFFET +BUFFETED +BUFFETING +BUFFETS +BUFFETT +BUFFETT'S +BUFFOON +BUFFS +BUFFY +BUFORD +BUG +BUGABOO +BUGGED +BUGGIES +BUGGING +BUGGY +BUGLE +BUGLIOSI +BUGS +BUGSY +BUHLER +BUI +BUICK +BUICK'S +BUICKS +BUILD +BUILDER +BUILDER'S +BUILDERS +BUILDERS' +BUILDING +BUILDING'S +BUILDINGS +BUILDS +BUILDUP +BUILDUPS +BUILT +BUITONI +BUJAK +BUJUMBURA +BUKAVU +BUKHARIN +BULB +BULBOUS +BULBS +BULGARIA +BULGARIA'S +BULGARIAN +BULGARIANS +BULGE +BULGED +BULGER +BULGES +BULGING +BULIMIA +BULK +BULKHEAD +BULKY +BULL +BULL'S +BULLARD +BULLDOG +BULLDOGS +BULLDOZE +BULLDOZED +BULLDOZER +BULLDOZERS +BULLDOZING +BULLET +BULLETIN +BULLETINS +BULLETPROOF +BULLETS +BULLFIGHTING +BULLHEAD +BULLHORN +BULLHORNS +BULLIED +BULLIES +BULLION +BULLISH +BULLISHNESS +BULLITT +BULLOCK +BULLOCK'S +BULLPEN +BULLS +BULLS' +BULLWINKLE +BULLY +BULLYING +BULOW +BULWARK +BUM +BUMBLE +BUMBLING +BUMIPUTRA +BUMMED +BUMMER +BUMP +BUMPED +BUMPER +BUMPERS +BUMPING +BUMPS +BUMPY +BUMS +BUN +BUNCH +BUNCHED +BUNCHES +BUNCHING +BUND +BUNDESBANK +BUNDESBANK'S +BUNDESPOST +BUNDESRAT +BUNDESTAG +BUNDLE +BUNDLED +BUNDLES +BUNDLING +BUNDS +BUNDY +BUNDY'S +BUNGALOW +BUNGALOWS +BUNGEE +BUNGLED +BUNGLING +BUNK +BUNKER +BUNKERS +BUNKS +BUNN +BUNNELL +BUNNIES +BUNNING +BUNNY +BUNS +BUNT +BUNTEN +BUNTING +BUNTON +BUNTROCK +BUNYAN +BUOY +BUOYANCY +BUOYANT +BUOYED +BUOYING +BUOYS +BURAN +BURBANK +BURCH +BURDA +BURDEN +BURDENED +BURDENING +BURDENS +BURDENSOME +BURDICK +BURDINE'S +BURDINES +BURDITT +BUREAU +BUREAU'S +BUREAUCRACIES +BUREAUCRACY +BUREAUCRAT +BUREAUCRATIC +BUREAUCRATS +BUREAUS +BUREIJ +BUREN +BURFORD +BURG +BURGE +BURGEE +BURGEONING +BURGER +BURGER'S +BURGERS +BURGESS +BURGLAR +BURGLARIES +BURGLARIZED +BURGLARIZING +BURGLARS +BURGLARY +BURGUNDY +BURHANUDDIN +BURIAL +BURIALS +BURIED +BURIES +BURK +BURKE +BURKE'S +BURKETT +BURKHARDT +BURKHART +BURKINA +BURKS +BURL +BURLAP +BURLATSKY +BURLEIGH +BURLESON +BURLESQUE +BURLEY +BURLING +BURLINGAME +BURLINGTON +BURLINGTON'S +BURLY +BURMA +BURMA'S +BURMAH +BURMAN +BURMESE +BURN +BURNED +BURNER +BURNERS +BURNES +BURNETT +BURNETT'S +BURNETTE +BURNEY +BURNHAM +BURNHAM'S +BURNING +BURNINGS +BURNISH +BURNISHED +BURNLEY +BURNOUT +BURNS +BURNS' +BURNS'S +BURNSIDE +BURNT +BURP +BURPEE +BURR +BURRELL +BURRIS +BURRITO +BURRITOS +BURRO +BURROS +BURROUGH +BURROUGHS +BURROW +BURROWING +BURROWS +BURRUS +BURRY +BURSON +BURST +BURSTEIN +BURSTING +BURSTS +BURSTYN +BURT +BURTON +BURTON'S +BURUNDI +BURUNDI'S +BURY +BURYING +BUS +BUS' +BUSBOY +BUSBY +BUSCH +BUSCH'S +BUSCHMAN +BUSED +BUSER +BUSES +BUSEY +BUSFIELD +BUSH +BUSH'S +BUSHEHR +BUSHEL +BUSHELS +BUSHES +BUSHKIN +BUSHMEN +BUSHNELL +BUSHY +BUSIER +BUSIEST +BUSILY +BUSINESS +BUSINESS' +BUSINESS'S +BUSINESSES +BUSINESSES' +BUSINESSLAND +BUSINESSLAND'S +BUSINESSLIKE +BUSINESSMAN +BUSINESSMAN'S +BUSINESSMEN +BUSINESSPEOPLE +BUSINESSPERSON +BUSINESSWOMAN +BUSINESSWOMEN +BUSING +BUSLOAD +BUSLOADS +BUSS +BUST +BUSTAMANTE +BUSTED +BUSTER +BUSTERS +BUSTIER +BUSTIERS +BUSTING +BUSTLE +BUSTLES +BUSTLING +BUSTS +BUSY +BUT +BUTANE +BUTARE +BUTCH +BUTCHER +BUTCHER'S +BUTCHERED +BUTCHERING +BUTCHERS +BUTCHERY +BUTHELEZI +BUTHELEZI'S +BUTLER +BUTLER'S +BUTLERS +BUTNER +BUTROS +BUTS +BUTT +BUTTAFUOCO +BUTTE +BUTTED +BUTTER +BUTTERED +BUTTERFIELD +BUTTERFLIES +BUTTERFLY +BUTTERMILK +BUTTERWORTH +BUTTERY +BUTTING +BUTTOCKS +BUTTON +BUTTONED +BUTTONS +BUTTRESS +BUTTRESSED +BUTTRICK +BUTTS +BUTYL +BUTZ +BUXTON +BUY +BUYBACK +BUYBACKS +BUYER +BUYER'S +BUYERS +BUYERS' +BUYING +BUYOUT +BUYOUTS +BUYS +BUZZ +BUZZARDS +BUZZED +BUZZER +BUZZING +BUZZWORD +BUZZWORDS +BY +BYBLOS +BYE +BYELORUSSIA +BYELORUSSIAN +BYERS +BYGONE +BYGONES +BYLAW +BYLAWS +BYLINE +BYLINES +BYNUM +BYPASS +BYPASSED +BYPASSES +BYPASSING +BYPRODUCT +BYPRODUCTS +BYRD +BYRD'S +BYRDS +BYRNE +BYRNE'S +BYRNES +BYRON +BYSTANDER +BYSTANDERS +BYTE +BYTES +BYWATER +BYWAYS +BYWORD +BYZANTINE +C'EST +C'MON +C. +C.'S +C.S +CA +CAAN +CAB +CABAL +CABALLERO +CABANA +CABARET +CABBAGE +CABBAGES +CABBIE +CABBIES +CABELL +CABERNET +CABERNETS +CABEY +CABIN +CABINET +CABINET'S +CABINETS +CABINS +CABLE +CABLE'S +CABLED +CABLES +CABLETRON +CABLEVISION +CABLEVISION'S +CABO +CABOOSE +CABOT +CABRAL +CABRANES +CABRERA +CABRILLO +CABRINI +CABS +CACERES +CACHE +CACHERIS +CACHES +CACHET +CACOPHONY +CACTUS +CACTUSES +CADAVER +CADAVERS +CADBURY +CADBURY'S +CADDELL +CADDIE +CADDIES +CADDY +CADE +CADENCE +CADET +CADETS +CADILLAC +CADILLAC'S +CADILLACS +CADIZ +CADMIUM +CADNETIX +CADRE +CADRES +CADWALADER +CADY +CAEN +CAESAR +CAESAR'S +CAESAREAN +CAESARS +CAESARS' +CAFE +CAFES +CAFETERIA +CAFETERIAS +CAFFEINE +CAFFREY +CAFIERO +CAGAYAN +CAGE +CAGE'S +CAGED +CAGES +CAGEY +CAGLIARI +CAGNEY +CAHILL +CAHN +CAHNERS +CAHOOTS +CAHOUET +CAI +CAICOS +CAIN +CAINE +CAIRNS +CAIRO +CAIRO'S +CAISSE +CAITLIN +CAJOLE +CAJOLED +CAJOLING +CAJON +CAJUN +CAJUNS +CAKE +CAKED +CAKES +CAL +CAL'S +CALABASAS +CALABRIA +CALAIS +CALAMARI +CALAMITIES +CALAMITOUS +CALAMITY +CALAVERAS +CALCAVECCHIA +CALCIUM +CALCULATE +CALCULATED +CALCULATES +CALCULATING +CALCULATION +CALCULATIONS +CALCULATOR +CALCULATORS +CALCULUS +CALCUTTA +CALDECOTT +CALDER +CALDERA +CALDERON +CALDOR +CALDWELL +CALE +CALEB +CALEDONIA +CALEDONIAN +CALENDAR +CALENDARS +CALENDER +CALERO +CALF +CALFA +CALFED +CALFED'S +CALGARY +CALGENE +CALGENE'S +CALGON +CALHOUN +CALI +CALIBER +CALIBRATE +CALIBRATED +CALICO +CALIF +CALIFANO +CALIFORNIA +CALIFORNIA'S +CALIFORNIAN +CALIFORNIANS +CALIGUIRI +CALIPARI +CALISTHENICS +CALISTOGA +CALKINS +CALL +CALL'S +CALLABLE +CALLAGHAN +CALLAHAN +CALLAN +CALLAS +CALLAWAY +CALLE +CALLEBS +CALLED +CALLEJAS +CALLENDER +CALLER +CALLER'S +CALLERS +CALLEY +CALLIES +CALLIGRAPHY +CALLING +CALLOUS +CALLOUSNESS +CALLOW +CALLOWAY +CALLS +CALM +CALMAT +CALMED +CALMER +CALMING +CALMLY +CALMS +CALNEV +CALNY +CALORIC +CALORIE +CALORIES +CALPERS +CALPERS'S +CALTECH +CALTEX +CALTRAIN +CALTRANS +CALUMET +CALVARY +CALVERT +CALVES +CALVET +CALVI +CALVIN +CALVO +CALYPSO +CAM +CAMACHO +CAMARADERIE +CAMARENA +CAMARENA'S +CAMARILLO +CAMARO +CAMAROS +CAMBIOR +CAMBODIA +CAMBODIA'S +CAMBODIAN +CAMBODIANS +CAMBRIA +CAMBRIAN +CAMBRIDGE +CAMCO +CAMCORDER +CAMCORDERS +CAMDEN +CAMDESSUS +CAME +CAMEL +CAMEL'S +CAMELOT +CAMELS +CAMEO +CAMEOS +CAMERA +CAMERA'S +CAMERAMAN +CAMERAMEN +CAMERAS +CAMERON +CAMERON'S +CAMEROON +CAMILLA +CAMILLE +CAMILLETTI +CAMILLI +CAMILO +CAMINITI +CAMINO +CAMMERMEYER +CAMORRA +CAMOUFLAGE +CAMOUFLAGED +CAMP +CAMP'S +CAMPAIGN +CAMPAIGN'S +CAMPAIGNED +CAMPAIGNER +CAMPAIGNERS +CAMPAIGNING +CAMPAIGNS +CAMPANELLA +CAMPANELLI +CAMPBELL +CAMPBELL'S +CAMPEANU +CAMPEAU +CAMPEAU'S +CAMPECHE +CAMPED +CAMPER +CAMPERS +CAMPESINO +CAMPESINOS +CAMPFIRE +CAMPFIRES +CAMPGROUND +CAMPGROUNDS +CAMPING +CAMPION +CAMPISI +CAMPO +CAMPOS +CAMPS +CAMPSITE +CAMPSITES +CAMPUS +CAMPUSES +CAMPY +CAMRY +CAMRYS +CAMUS +CAN +CAN'T +CANAAN +CANADA +CANADA'S +CANADAIR +CANADIAN +CANADIAN'S +CANADIANS +CANADIENS +CANADY +CANAL +CANALES +CANALS +CANAM +CANANDAIGUA +CANANEA +CANARD +CANARIES +CANARY +CANAVERAL +CANBERRA +CANBY +CANCEL +CANCELED +CANCELING +CANCELLATION +CANCELLATIONS +CANCELLED +CANCELLING +CANCELS +CANCER +CANCEROUS +CANCERS +CANCUN +CANDACE +CANDELA +CANDELABRA +CANDELARIA +CANDICE +CANDID +CANDIDACIES +CANDIDACY +CANDIDATE +CANDIDATE'S +CANDIDATES +CANDIDATES' +CANDIDE +CANDIDLY +CANDIED +CANDIES +CANDIOTTI +CANDLE +CANDLELIGHT +CANDLES +CANDLESTICK +CANDOR +CANDY +CANE +CANED +CANELO +CANES +CANFIELD +CANFOR +CANIN +CANINE +CANINES +CANING +CANION +CANISTER +CANISTERS +CANKER +CANNABIS +CANNAVINO +CANNED +CANNELL +CANNERIES +CANNERY +CANNES +CANNIBAL +CANNIBALISM +CANNIBALIZE +CANNIBALIZED +CANNIBALIZING +CANNIBALS +CANNING +CANNISTRARO +CANNON +CANNON'S +CANNONBALL +CANNONS +CANNOT +CANNY +CANO +CANOE +CANOEING +CANOES +CANOGA +CANOLA +CANON +CANON'S +CANONICAL +CANONIZATION +CANONIZED +CANONS +CANOPY +CANOSA +CANS +CANSECO +CANSECO'S +CANT +CANTAFIO +CANTALOUPE +CANTANKEROUS +CANTATA +CANTEEN +CANTEENS +CANTEL +CANTER +CANTERBURY +CANTO +CANTON +CANTONESE +CANTONS +CANTOR +CANTOR'S +CANTRELL +CANTU +CANTWELL +CANTY +CANUCKS +CANVAS +CANVASES +CANVASS +CANVASSED +CANVASSING +CANYON +CANYON'S +CANYONS +CAO +CAP +CAPA +CAPABILITIES +CAPABILITY +CAPABLE +CAPACITIES +CAPACITORS +CAPACITY +CAPADES +CAPASSO +CAPASSO'S +CAPCOM +CAPE +CAPED +CAPEL +CAPER +CAPERS +CAPERTON +CAPES +CAPETOWN +CAPISTRANO +CAPITA +CAPITAL +CAPITAL'S +CAPITALISM +CAPITALIST +CAPITALISTIC +CAPITALISTS +CAPITALIZATION +CAPITALIZE +CAPITALIZED +CAPITALIZING +CAPITALS +CAPITAN +CAPITOL +CAPITOL'S +CAPITOLA +CAPITOLS +CAPITULATE +CAPITULATED +CAPITULATING +CAPITULATION +CAPLAN +CAPO +CAPONE +CAPORALI +CAPOTE +CAPOTEN +CAPPED +CAPPELLA +CAPPING +CAPPS +CAPPUCCINO +CAPPY +CAPRA +CAPRI +CAPRIATI +CAPRICE +CAPRICIOUS +CAPS +CAPSIZE +CAPSIZED +CAPSIZING +CAPSTONE +CAPSULE +CAPSULES +CAPTAIN +CAPTAIN'S +CAPTAINS +CAPTION +CAPTIONED +CAPTIONING +CAPTIONS +CAPTIVATED +CAPTIVATING +CAPTIVE +CAPTIVES +CAPTIVITY +CAPTORS +CAPTURE +CAPTURED +CAPTURES +CAPTURING +CAPUTO +CAR +CAR'S +CARA +CARACAS +CARACOL +CARAMEL +CARAT +CARATS +CARAVAN +CARAVANS +CARBERRY +CARBIDE +CARBIDE'S +CARBINE +CARBOHYDRATE +CARBOHYDRATES +CARBON +CARBONATE +CARBONATED +CARBONDALE +CARBONE +CARBURETOR +CARCASS +CARCASSES +CARCINOGEN +CARCINOGENIC +CARCINOGENS +CARCINOMA +CARD +CARD'S +CARDBOARD +CARDEN +CARDENAS +CARDHOLDER +CARDHOLDERS +CARDIAC +CARDIFF +CARDIGAN +CARDILLO +CARDIN +CARDINAL +CARDINAL'S +CARDINALS +CARDINALS' +CARDIO +CARDIOLOGIST +CARDIOLOGISTS +CARDIOLOGY +CARDIOMYOPATHY +CARDIOPULMONARY +CARDIOVASCULAR +CARDIS +CARDISS +CARDIZEM +CARDOEN +CARDOSO +CARDOSO'S +CARDOZO +CARDS +CARE +CARE'S +CARED +CAREEN +CAREENED +CAREENING +CAREER +CAREERS +CAREFREE +CAREFUL +CAREFULLY +CAREGIVER +CAREGIVERS +CARELESS +CARELESSLY +CARELESSNESS +CAREMARK +CARES +CARESS +CARETAKER +CARETAKERS +CAREW +CAREY +CAREY'S +CARGILL +CARGILL'S +CARGO +CARGOES +CARIBBEAN +CARIBOU +CARICATURE +CARICATURED +CARICATURES +CARICOM +CARILLON +CARING +CARINII +CARITAS +CARJACKER +CARJACKING +CARJACKINGS +CARL +CARL'S +CARLA +CARLE +CARLENE +CARLESIMO +CARLETON +CARLI +CARLIN +CARLING +CARLISLE +CARLO +CARLOAD +CARLOADINGS +CARLOADS +CARLOS +CARLOTTO +CARLSBAD +CARLSBERG +CARLSON +CARLSON'S +CARLSSON +CARLTON +CARLTON'S +CARLUCCI +CARLUCCI'S +CARLY +CARLYLE +CARLZON +CARMAKER +CARMAKERS +CARMAN +CARMEL +CARMELITE +CARMELO +CARMEN +CARMICHAEL +CARMIKE +CARMINA +CARMINE +CARNAGE +CARNAHAN +CARNAL +CARNATION +CARNATIONS +CARNEGIE +CARNES +CARNEVALE +CARNEY +CARNIVAL +CARNIVAL'S +CARNIVALS +CARNIVORES +CARNIVOROUS +CARNOGURSKY +CARNS +CARO +CAROL +CAROL'S +CAROLCO +CAROLCO'S +CAROLE +CAROLINA +CAROLINA'S +CAROLINAS +CAROLINE +CAROLINIAN +CAROLINIANS +CAROLS +CAROLYN +CARON +CAROTENE +CAROTID +CAROUSEL +CAROUSING +CARP +CARPAL +CARPENTER +CARPENTER'S +CARPENTERS +CARPENTRAS +CARPENTRY +CARPER +CARPET +CARPETED +CARPETING +CARPETS +CARPING +CARPIO +CARPOOL +CARPORT +CARR +CARR'S +CARRADINE +CARRASCO +CARRE +CARREFOUR +CARRERA +CARRERAS +CARREY +CARREY'S +CARRIAGE +CARRIAGES +CARRIAN +CARRICK +CARRIE +CARRIED +CARRIER +CARRIER'S +CARRIERS +CARRIERS' +CARRIES +CARRILLO +CARRINGTON +CARRION +CARROLL +CARROLL'S +CARROLLTON +CARROT +CARROTS +CARRUTHERS +CARRY +CARRYING +CARRYOVER +CARS +CARS' +CARSEY +CARSON +CARSON'S +CARSWELL +CART +CARTA +CARTAGENA +CARTE +CARTED +CARTEL +CARTEL'S +CARTELS +CARTER +CARTER'S +CARTERET +CARTERS +CARTHAGE +CARTIER +CARTILAGE +CARTING +CARTON +CARTONS +CARTOON +CARTOONING +CARTOONISH +CARTOONIST +CARTOONISTS +CARTOONS +CARTRIDGE +CARTRIDGES +CARTS +CARTWHEELED +CARTWRIGHT +CARTY +CARUSO +CARVALHO +CARVE +CARVED +CARVEL +CARVER +CARVER'S +CARVERS +CARVES +CARVEY +CARVILLE +CARVING +CARVINGS +CARY +CARYL +CASA +CASABLANCA +CASANOVA +CASAROLI +CASAS +CASBAH +CASCADE +CASCADE'S +CASCADES +CASCADING +CASDIN +CASE +CASE'S +CASELLA +CASELOAD +CASELOADS +CASERTA +CASES +CASESA +CASEWORK +CASEWORKER +CASEWORKERS +CASEY +CASEY'S +CASH +CASHED +CASHIER +CASHIER'S +CASHIERED +CASHIERS +CASHING +CASHLESS +CASHMAN +CASHMERE +CASHWAYS +CASILLAS +CASING +CASINGS +CASINO +CASINO'S +CASINOS +CASIO +CASIRAGHI +CASK +CASKET +CASKETS +CASKS +CASOLARO +CASOLO +CASON +CASPAR +CASPER +CASPIAN +CASS +CASSANDRA +CASSEL +CASSELL +CASSEROLE +CASSETTE +CASSETTES +CASSIDY +CASSIE +CASSINI +CASSONI +CASSTEVENS +CAST +CASTANEDA +CASTANO +CASTE +CASTELLANO +CASTELLANOS +CASTER +CASTES +CASTIGATED +CASTIGATING +CASTILLE +CASTILLO +CASTING +CASTINGS +CASTLE +CASTLE'S +CASTLES +CASTOR +CASTRATED +CASTRATION +CASTRO +CASTRO'S +CASTROL +CASTROVILLE +CASTS +CASUAL +CASUALLY +CASUALTIES +CASUALTY +CASWELL +CAT +CAT'S +CATACLYSM +CATACLYSMIC +CATACOMBS +CATACOSINOS +CATALAN +CATALINA +CATALOG +CATALOGED +CATALOGING +CATALOGS +CATALOGUE +CATALOGUED +CATALOGUES +CATALONIA +CATALYST +CATALYSTS +CATALYTIC +CATAMARAN +CATANIA +CATAPULT +CATAPULTED +CATARACT +CATARACTS +CATASTROPHE +CATASTROPHES +CATASTROPHIC +CATCALLS +CATCH +CATCHALL +CATCHER +CATCHERS +CATCHES +CATCHING +CATCHY +CATE +CATECHISM +CATEGORICAL +CATEGORICALLY +CATEGORIES +CATEGORIZE +CATEGORIZED +CATEGORY +CATELLI +CATELLUS +CATER +CATERED +CATERER +CATERERS +CATERING +CATERPILLAR +CATERPILLAR'S +CATERPILLARS +CATERS +CATES +CATFISH +CATHARINE +CATHARSIS +CATHARTIC +CATHAY +CATHCART +CATHEDRAL +CATHEDRAL'S +CATHEDRALS +CATHER +CATHERINE +CATHERINE'S +CATHETER +CATHETERS +CATHLEEN +CATHODE +CATHOLIC +CATHOLICISM +CATHOLICS +CATHY +CATO +CATOCTIN +CATON +CATS +CATSKILL +CATSKILLS +CATTLE +CATTLEMEN +CATTLEMEN'S +CATTO +CATWALK +CATWOMAN +CAUCASIAN +CAUCASIANS +CAUCASUS +CAUCUS +CAUCUSES +CAUFIELD +CAUGHT +CAULDRON +CAULFIELD +CAULIFLOWER +CAULK +CAULKING +CAUSAL +CAUSATION +CAUSE +CAUSED +CAUSES +CAUSEWAY +CAUSEY +CAUSING +CAUSTIC +CAUTION +CAUTIONARY +CAUTIONED +CAUTIONING +CAUTIONS +CAUTIOUS +CAUTIOUSLY +CAUTIOUSNESS +CAVACO +CAVALCADE +CAVALIER +CAVALIERS +CAVALLO +CAVALRY +CAVANAGH +CAVANAUGH +CAVAZOS +CAVE +CAVEAT +CAVEATS +CAVED +CAVEMAN +CAVENDISH +CAVERN +CAVERNOUS +CAVERNS +CAVES +CAVETT +CAVIAR +CAVING +CAVITIES +CAVITY +CAVORT +CAVORTING +CAWTHORN +CAXTON +CAY +CAYENNE +CAYMAN +CAYNE +CAYTON +CAZENOVE +CEASE +CEASED +CEASEFIRE +CEASELESS +CEASES +CEASING +CEAUSESCU +CEAUSESCU'S +CEAUSESCUS +CEBALLOS +CEBU +CECE +CECELIA +CECIL +CECILE +CECILIA +CEDAR +CEDARBAUM +CEDARS +CEDE +CEDED +CEDENO +CEDERGREN +CEDING +CEDRAS +CEDRAS' +CEDRAS'S +CEDRIC +CEILING +CEILINGED +CEILINGS +CELA +CELANESE +CELEBRANTS +CELEBRATE +CELEBRATED +CELEBRATES +CELEBRATING +CELEBRATION +CELEBRATIONS +CELEBRATORY +CELEBRE +CELEBREZZE +CELEBRITIES +CELEBRITY +CELERY +CELESTE +CELESTIAL +CELESTINE +CELIA +CELIBACY +CELIBATE +CELICA +CELINDA +CELINE +CELL +CELL'S +CELLAR +CELLARS +CELLBLOCK +CELLIST +CELLMARK +CELLMARK'S +CELLMATE +CELLO +CELLOPHANE +CELLS +CELLULAR +CELLULITE +CELLULOID +CELLULOSE +CELS +CELSIUS +CELTIC +CELTICS +CELTICS' +CELTRIX +CEMENT +CEMENTED +CEMENTING +CEMENTOS +CEMENTS +CEMETERIES +CEMETERY +CEMEX +CENCALL +CENERGY +CENSOR +CENSORED +CENSORING +CENSORS +CENSORSHIP +CENSURE +CENSURED +CENSUS +CENT +CENTAUR +CENTAVOS +CENTEL +CENTEL'S +CENTENARIANS +CENTENARY +CENTENNIAL +CENTER +CENTER'S +CENTERED +CENTERFOLD +CENTERING +CENTERIOR +CENTERPIECE +CENTERPIECES +CENTERRE +CENTERS +CENTERS' +CENTERVILLE +CENTEX +CENTIGRADE +CENTIMETER +CENTIMETERS +CENTOCOR +CENTOCOR'S +CENTOXIN +CENTRAL +CENTRAL'S +CENTRALE +CENTRALIA +CENTRALIZATION +CENTRALIZE +CENTRALIZED +CENTRALIZING +CENTRALLY +CENTRE +CENTRES +CENTRIC +CENTRIFUGAL +CENTRIFUGE +CENTRIFUGES +CENTRIST +CENTRISTS +CENTRO +CENTRUST +CENTRUST'S +CENTS +CENTURIES +CENTURION +CENTURY +CENTURY'S +CEPHALON +CERAMIC +CERAMICS +CEREAL +CEREALS +CEREBRAL +CEREMONIAL +CEREMONIES +CEREMONY +CEREMSAK +CERES +CEREZO +CERF +CERIDIAN +CERN +CERRITO +CERRITOS +CERRO +CERTAIN +CERTAINLY +CERTAINTEED +CERTAINTIES +CERTAINTY +CERTIFICATE +CERTIFICATES +CERTIFICATION +CERTIFICATIONS +CERTIFIED +CERTIFIES +CERTIFY +CERTIFYING +CERULLO +CERUS +CERVANTES +CERVICAL +CERVIX +CESAR +CESARE +CESIUM +CESSATION +CESSNA +CESSPOOL +CETERA +CETES +CETUS +CEVALLOS +CEZANNE +CHA +CHABLIS +CHABOT +CHACON +CHAD +CHAD'S +CHADBOURNE +CHADIAN +CHADLI +CHADWICK +CHAFE +CHAFED +CHAFEE +CHAFEE'S +CHAFF +CHAFFEE +CHAFING +CHAGALL +CHAGRIN +CHAGRINED +CHAI +CHAIM +CHAIN +CHAIN'S +CHAINED +CHAINING +CHAINS +CHAINS' +CHAINSAW +CHAINSAWS +CHAIR +CHAIRED +CHAIRING +CHAIRMAN +CHAIRMAN'S +CHAIRMANSHIP +CHAIRMANSHIPS +CHAIRMEN +CHAIRPERSON +CHAIRS +CHAIRWOMAN +CHALABI +CHALASANI +CHALATENANGO +CHALEFF +CHALET +CHALETS +CHALK +CHALKBOARD +CHALKED +CHALKING +CHALLENGE +CHALLENGED +CHALLENGER +CHALLENGER'S +CHALLENGERS +CHALLENGES +CHALLENGING +CHALMERS +CHALOS +CHAMBER +CHAMBER'S +CHAMBERLAIN +CHAMBERLAIN'S +CHAMBERLIN +CHAMBERS +CHAMBERS' +CHAMBERS'S +CHAMBLISS +CHAMELEON +CHAMORRO +CHAMORRO'S +CHAMOUN +CHAMP +CHAMPAGNE +CHAMPAIGN +CHAMPION +CHAMPION'S +CHAMPIONED +CHAMPIONING +CHAMPIONS +CHAMPIONSHIP +CHAMPIONSHIPS +CHAMPLAIN +CHAMPLIN +CHAMPS +CHAMPUS +CHAN +CHANCE +CHANCELLERY +CHANCELLOR +CHANCELLOR'S +CHANCELLORS +CHANCERY +CHANCES +CHANCY +CHANDELIER +CHANDELIERS +CHANDIGARH +CHANDLER +CHANDLER'S +CHANDRA +CHANDRIKA +CHANDROSS +CHANEL +CHANEY +CHANG +CHANG'S +CHANGCHUN +CHANGE +CHANGEABLE +CHANGED +CHANGEOVER +CHANGEOVERS +CHANGER +CHANGERS +CHANGES +CHANGING +CHANNEL +CHANNEL'S +CHANNELED +CHANNELING +CHANNELL +CHANNELS +CHANNING +CHANNON +CHANOS +CHANT +CHANTAL +CHANTED +CHANTILLY +CHANTING +CHANTS +CHANUTE +CHAO +CHAOS +CHAOTIC +CHAP +CHAPA +CHAPARE +CHAPARRAL +CHAPEL +CHAPELS +CHAPIN +CHAPLAIN +CHAPLAINS +CHAPLIN +CHAPLIN'S +CHAPMAN +CHAPMAN'S +CHAPPAQUA +CHAPPAQUIDDICK +CHAPPELL +CHAPS +CHAPTER +CHAPTER'S +CHAPTERS +CHAR +CHARACTER +CHARACTER'S +CHARACTERISTIC +CHARACTERISTICALLY +CHARACTERISTICS +CHARACTERIZATION +CHARACTERIZATIONS +CHARACTERIZE +CHARACTERIZED +CHARACTERIZES +CHARACTERIZING +CHARACTERS +CHARACTERS' +CHARADE +CHARCOAL +CHARDONNAY +CHARDONNAYS +CHAREN +CHARGE +CHARGED +CHARGER +CHARGERS +CHARGES +CHARGEURS +CHARGING +CHARING +CHARIOT +CHARIOTS +CHARISMA +CHARISMATIC +CHARITABLE +CHARITABLY +CHARITIES +CHARITY +CHARITY'S +CHARLATAN +CHARLATANS +CHARLENE +CHARLES +CHARLES' +CHARLES'S +CHARLESTON +CHARLESTOWN +CHARLEY +CHARLIE +CHARLIE'S +CHARLOTTE +CHARLOTTE'S +CHARLOTTESVILLE +CHARLTON +CHARM +CHARMAINE +CHARMED +CHARMER +CHARMING +CHARMINGLY +CHARMS +CHARNEY +CHARRED +CHARREN +CHART +CHARTED +CHARTER +CHARTER'S +CHARTERED +CHARTERED'S +CHARTERHOUSE +CHARTERING +CHARTERS +CHARTING +CHARTREUSE +CHARTS +CHARTWELL +CHASE +CHASE'S +CHASED +CHASER +CHASERS +CHASES +CHASING +CHASM +CHASSIS +CHASTAIN +CHASTE +CHASTENED +CHASTISE +CHASTISED +CHASTISING +CHASTITY +CHAT +CHATEAU +CHATHAM +CHATICHAI +CHATILLA +CHATS +CHATSWORTH +CHATTAHOOCHEE +CHATTANOOGA +CHATTED +CHATTER +CHATTERING +CHATTING +CHATTY +CHAU +CHAUFFEUR +CHAUFFEURED +CHAUFFEURS +CHAUS +CHAUVINISM +CHAUVINIST +CHAUVINISTIC +CHAVARRIA +CHAVEZ +CHAVEZ'S +CHAVIS +CHAVIS' +CHAZZ +CHE +CHEAP +CHEAPEN +CHEAPER +CHEAPEST +CHEAPLY +CHEAT +CHEATED +CHEATERS +CHEATHAM +CHEATING +CHEATS +CHEBRIKOV +CHECCHI +CHECCHI'S +CHECHEN +CHECHENS +CHECHNYA +CHECHNYA'S +CHECK +CHECKBOOK +CHECKBOOKS +CHECKED +CHECKER +CHECKERBOARD +CHECKERED +CHECKERS +CHECKETTS +CHECKING +CHECKLIST +CHECKLISTS +CHECKOFF +CHECKOUT +CHECKPOINT +CHECKPOINTS +CHECKS +CHECKUP +CHECKUPS +CHEDDAR +CHEE +CHEECH +CHEEK +CHEEKBONES +CHEEKED +CHEEKS +CHEEKY +CHEER +CHEERED +CHEERFUL +CHEERFULLY +CHEERILY +CHEERING +CHEERIOS +CHEERLEADER +CHEERLEADERS +CHEERLEADING +CHEERS +CHEERY +CHEESE +CHEESEBURGER +CHEESEBURGERS +CHEESECAKE +CHEESES +CHEESY +CHEETAH +CHEEVER +CHEF +CHEF'S +CHEFS +CHEJU +CHEK +CHEKHOV +CHEKHOV'S +CHELAN +CHELMSFORD +CHELSEA +CHELSEA'S +CHELTENHAM +CHELYABINSK +CHEM +CHEMA +CHEMED +CHEMERINSKY +CHEMICAL +CHEMICAL'S +CHEMICALLY +CHEMICALS +CHEMIE +CHEMIST +CHEMISTRY +CHEMISTS +CHEMLAWN +CHEMOTHERAPY +CHEN +CHEN'S +CHENAULT +CHENEY +CHENEY'S +CHENG +CHENGDU +CHENOWETH +CHER +CHER'S +CHERBOURG +CHERI +CHERIF +CHERISH +CHERISHED +CHERISHES +CHERNENKO +CHERNEY +CHERNIN +CHERNOBYL +CHERNOBYL'S +CHERNOMYRDIN +CHERNOMYRDIN'S +CHERNOW +CHEROKEE +CHEROKEES +CHERRIES +CHERRY +CHERTOFF +CHERUBIC +CHERYL +CHESAPEAKE +CHESEBROUGH +CHESHIRE +CHESLEY +CHESS +CHEST +CHESTED +CHESTER +CHESTERFIELD +CHESTMAN +CHESTNUT +CHESTNUTS +CHESTS +CHET +CHEUNG +CHEUSE +CHEVALIER +CHEVENEMENT +CHEVROLET +CHEVROLET'S +CHEVROLETS +CHEVRON +CHEVRON'S +CHEVY +CHEVY'S +CHEW +CHEWED +CHEWING +CHEWS +CHEWY +CHEYENNE +CHEZ +CHI +CHI'S +CHIA +CHIANG +CHIANG'S +CHIANTI +CHIAPAS +CHIAT +CHIBA +CHIC +CHICA +CHICAGO +CHICAGO'S +CHICAGOAN +CHICAGOANS +CHICANERY +CHICANO +CHICANOS +CHICK +CHICKEN +CHICKEN'S +CHICKENPOX +CHICKENS +CHICKS +CHICO +CHICOPEE +CHIDED +CHIDES +CHIDING +CHIEF +CHIEF'S +CHIEFLY +CHIEFS +CHIEFS' +CHIEFTAIN +CHIEFTAINS +CHIEN +CHIFFON +CHIHUAHUA +CHIKANE +CHILD +CHILD'S +CHILDBEARING +CHILDBIRTH +CHILDCARE +CHILDERS +CHILDHOOD +CHILDHOODS +CHILDISH +CHILDLESS +CHILDLIKE +CHILDREN +CHILDREN'S +CHILDRENS +CHILDRENS' +CHILDRESS +CHILDS +CHILE +CHILE'S +CHILEAN +CHILEANS +CHILES +CHILES' +CHILI +CHILI'S +CHILIES +CHILL +CHILLED +CHILLICOTHE +CHILLING +CHILLINGLY +CHILLS +CHILLY +CHILMARK +CHILTON +CHILUBA +CHIME +CHIMED +CHIMERINE +CHIMES +CHIMICLES +CHIMNEY +CHIMNEYS +CHIMP +CHIMPANZEE +CHIMPANZEES +CHIMPS +CHIN +CHINA +CHINA'S +CHINATOWN +CHINESE +CHING +CHINK +CHINN +CHINO +CHINOOK +CHINOY +CHINS +CHIP +CHIP'S +CHIPCOM +CHIPMAKER +CHIPMAKERS +CHIPPED +CHIPPER +CHIPPEWA +CHIPPING +CHIPS +CHIPSOFT +CHIQUITA +CHIQUITA'S +CHIRAC +CHIRAC'S +CHIRON +CHIRON'S +CHIROPRACTIC +CHIROPRACTOR +CHIROPRACTORS +CHIRPING +CHISEL +CHISELED +CHISHOLM +CHISSANO +CHIT +CHITA +CHITCHAT +CHITRA +CHITS +CHITTAGONG +CHIU +CHIVALRY +CHIVAS +CHIVES +CHIYODA +CHLAMYDIA +CHLOE +CHLORDANE +CHLORIDE +CHLORINATED +CHLORINE +CHLOROFLUOROCARBON +CHLOROFLUOROCARBONS +CHLOROFORM +CHO +CHOATE +CHOCK +CHOCOLATE +CHOCOLATES +CHOCTAW +CHOE +CHOI +CHOICE +CHOICES +CHOICEST +CHOIR +CHOIRS +CHOK +CHOKE +CHOKED +CHOKES +CHOKING +CHOL +CHOLERA +CHOLESTEROL +CHOLLA +CHOMPING +CHON +CHONG +CHONGQING +CHONTALES +CHOO +CHOONHAVAN +CHOOSE +CHOOSES +CHOOSING +CHOOSY +CHOP +CHOPIN +CHOPPED +CHOPPER +CHOPPERS +CHOPPING +CHOPPY +CHOPS +CHOPSTICKS +CHORAL +CHORALE +CHORD +CHORDS +CHORE +CHOREOGRAPH +CHOREOGRAPHED +CHOREOGRAPHER +CHOREOGRAPHERS +CHOREOGRAPHIC +CHOREOGRAPHY +CHORES +CHORRILLO +CHORUS +CHORUSES +CHOSE +CHOSEN +CHOSUN +CHOU +CHOW +CHOWDER +CHOY +CHRETIEN +CHRETIEN'S +CHRIS +CHRIS' +CHRISSIE +CHRIST +CHRIST'S +CHRISTA +CHRISTCHURCH +CHRISTEN +CHRISTENED +CHRISTENING +CHRISTENSEN +CHRISTENSON +CHRISTER +CHRISTI +CHRISTIAN +CHRISTIAN'S +CHRISTIANA +CHRISTIANE +CHRISTIANIA +CHRISTIANITY +CHRISTIANS +CHRISTIANS' +CHRISTIANSEN +CHRISTIANSON +CHRISTIC +CHRISTIE +CHRISTIE'S +CHRISTIES +CHRISTINA +CHRISTINE +CHRISTMAN +CHRISTMAS +CHRISTMASES +CHRISTMASTIME +CHRISTO +CHRISTOPH +CHRISTOPHE +CHRISTOPHER +CHRISTOPHER'S +CHRISTOPHERSEN +CHRISTOS +CHRISTY +CHROMALLOY +CHROMATOGRAPHY +CHROME +CHROMIUM +CHROMOSOME +CHROMOSOMES +CHRONIC +CHRONICALLY +CHRONICLE +CHRONICLE'S +CHRONICLED +CHRONICLER +CHRONICLES +CHRONICLING +CHRONOLOGICAL +CHRONOLOGICALLY +CHRONOLOGY +CHRYSALIS +CHRYSANTHEMUM +CHRYSANTHEMUMS +CHRYSLER +CHRYSLER'S +CHRYSTAL +CHU +CHUAN +CHUBAIS +CHUBB +CHUBBY +CHUCK +CHUCKED +CHUCKLE +CHUCKLED +CHUCKLES +CHUCKLING +CHUDLER +CHUG +CHUGAI +CHUGGED +CHUGGING +CHUL +CHULA +CHUM +CHUMMY +CHUMP +CHUMS +CHUN +CHUN'S +CHUNG +CHUNG'S +CHUNK +CHUNKS +CHUNKY +CHUNNEL +CHURBANOV +CHURCH +CHURCH'S +CHURCHES +CHURCHGOERS +CHURCHGOING +CHURCHILL +CHURCHILL'S +CHURCHMEN +CHURKIN +CHURN +CHURNED +CHURNING +CHURNS +CHUTE +CHUTES +CHUTNEY +CHUTZPAH +CHYNOWETH +CHYRON +CIA +CIAMPI +CIANCI +CIBA +CICCARELLI +CICCONE +CICELY +CICERO +CICIPPIO +CICIPPIO'S +CID +CIDER +CIE +CIERA +CIFRA +CIGA +CIGAR +CIGARETTE +CIGARETTES +CIGARS +CIGNA +CIGNA'S +CIHAK +CILANTRO +CILLER +CIMARRON +CIMENTS +CIMINERO +CINCH +CINCHED +CINCINNATI +CINCINNATI'S +CINCO +CINDER +CINDERBLOCK +CINDERELLA +CINDY +CINEMA +CINEMA'S +CINEMAS +CINEMATIC +CINEMATOGRAPHER +CINEMATOGRAPHY +CINEMAX +CINEPLEX +CINEPLEX'S +CINNAMON +CINQ +CIPHER +CIPOLLONE +CIPOLLONE'S +CIRCA +CIRCADIAN +CIRCLE +CIRCLED +CIRCLES +CIRCLING +CIRCUIT +CIRCUIT'S +CIRCUITED +CIRCUITOUS +CIRCUITRY +CIRCUITS +CIRCULAR +CIRCULARS +CIRCULATE +CIRCULATED +CIRCULATES +CIRCULATING +CIRCULATION +CIRCULATIONS +CIRCULATORY +CIRCUMCISED +CIRCUMCISION +CIRCUMFERENCE +CIRCUMSCRIBED +CIRCUMSPECT +CIRCUMSTANCE +CIRCUMSTANCES +CIRCUMSTANTIAL +CIRCUMVENT +CIRCUMVENTED +CIRCUMVENTING +CIRCUS +CIRCUS'S +CIRCUSES +CIRESI +CIRIACO +CIRQUE +CIRRHOSIS +CIRRUS +CISCO +CISKEI +CISNEROS +CISNEROS' +CITADEL +CITADEL'S +CITATION +CITATIONS +CITE +CITED +CITES +CITGO +CITIBANK +CITIBANK'S +CITIC +CITICORP +CITICORP'S +CITIES +CITIES' +CITING +CITIZEN +CITIZEN'S +CITIZENRY +CITIZENS +CITIZENS' +CITIZENSHIP +CITROEN +CITRON +CITRON'S +CITRUS +CITY +CITY'S +CITYTRUST +CITYWALK +CITYWIDE +CIUDAD +CIVIC +CIVICS +CIVIL +CIVILIAN +CIVILIANS +CIVILITY +CIVILIZATION +CIVILIZATIONS +CIVILIZED +CIVILLY +CLABIR +CLACK +CLACKAMAS +CLAD +CLAES +CLAIBORNE +CLAIBORNE'S +CLAIM +CLAIMANT +CLAIMANTS +CLAIMANTS' +CLAIMED +CLAIMING +CLAIMS +CLAIR +CLAIRE +CLAIRE'S +CLAIROL +CLAM +CLAMBERED +CLAMOR +CLAMORED +CLAMORING +CLAMP +CLAMPDOWN +CLAMPED +CLAMPING +CLAMPS +CLAMS +CLAMSHELL +CLAN +CLAN'S +CLANCY +CLANCY'S +CLANDESTINE +CLANDESTINELY +CLANGING +CLANS +CLANTON +CLAP +CLAPBOARD +CLAPHAM +CLAPP +CLAPPED +CLAPPER +CLAPPING +CLAPTON +CLAPTON'S +CLARA +CLARA'S +CLARE +CLAREMONT +CLARENCE +CLARENDON +CLARIDGE +CLARIFICATION +CLARIFICATIONS +CLARIFIED +CLARIFIES +CLARIFY +CLARIFYING +CLARINET +CLARINETIST +CLARION +CLARIS +CLARITA +CLARITY +CLARK +CLARK'S +CLARKE +CLARKE'S +CLARKS +CLARKSBURG +CLARKSON +CLARKSVILLE +CLARRIDGE +CLASH +CLASHED +CLASHES +CLASHING +CLASP +CLASPED +CLASS +CLASSED +CLASSES +CLASSIC +CLASSICAL +CLASSICALLY +CLASSICISM +CLASSICS +CLASSIFICATION +CLASSIFICATIONS +CLASSIFIED +CLASSIFIEDS +CLASSIFIES +CLASSIFY +CLASSIFYING +CLASSLESS +CLASSMATE +CLASSMATES +CLASSROOM +CLASSROOMS +CLASSY +CLATTER +CLAUDE +CLAUDETTE +CLAUDIA +CLAUDINE +CLAUDIO +CLAUDIUS +CLAUS +CLAUSE +CLAUSEN +CLAUSES +CLAUSTROPHOBIC +CLAW +CLAWED +CLAWING +CLAWS +CLAXTON +CLAY +CLAY'S +CLAYBROOK +CLAYMATION +CLAYS +CLAYTON +CLAYTOR +CLEAN +CLEANED +CLEANER +CLEANERS +CLEANEST +CLEANING +CLEANLINESS +CLEANLY +CLEANS +CLEANSE +CLEANSED +CLEANSER +CLEANSERS +CLEANSING +CLEANUP +CLEANUPS +CLEAR +CLEARANCE +CLEARANCES +CLEARCUT +CLEARED +CLEARER +CLEAREST +CLEARING +CLEARINGHOUSE +CLEARLY +CLEARS +CLEARWATER +CLEARY +CLEATS +CLEAVAGE +CLEAVE +CLEAVER +CLEESE +CLEFT +CLEGG +CLELAND +CLEM +CLEMATIS +CLEMENCY +CLEMENS +CLEMENT +CLEMENTE +CLEMENTINE +CLEMENTS +CLEMONS +CLEMSON +CLENCHED +CLEO +CLEOPATRA +CLERCQ +CLERGY +CLERGYMAN +CLERGYMEN +CLERIC +CLERICAL +CLERICS +CLERIDES +CLERK +CLERK'S +CLERKS +CLERMONT +CLEVE +CLEVELAND +CLEVELAND'S +CLEVENGER +CLEVER +CLEVERLY +CLEVERNESS +CLIBURN +CLICHE +CLICHED +CLICHES +CLICK +CLICKED +CLICKER +CLICKING +CLICKS +CLIENT +CLIENT'S +CLIENTELE +CLIENTS +CLIENTS' +CLIFF +CLIFF'S +CLIFFHANGER +CLIFFORD +CLIFFORD'S +CLIFFS +CLIFT +CLIFTON +CLIMACO +CLIMACTIC +CLIMATE +CLIMATES +CLIMATIC +CLIMATOLOGIST +CLIMAX +CLIMAXED +CLIMAXES +CLIMB +CLIMBED +CLIMBER +CLIMBERS +CLIMBING +CLIMBS +CLIMES +CLINCH +CLINCHED +CLINCHER +CLINCHING +CLINE +CLINES +CLING +CLINGER +CLINGING +CLINGS +CLINIC +CLINIC'S +CLINICAL +CLINICALLY +CLINICIANS +CLINICS +CLINT +CLINTON +CLINTON'S +CLINTONITES +CLINTONOMICS +CLINTONS +CLINTONS' +CLIO +CLIOS +CLIP +CLIPBOARD +CLIPPED +CLIPPER +CLIPPERS +CLIPPERS' +CLIPPING +CLIPPINGS +CLIPS +CLIQUE +CLIQUES +CLIVE +CLOAK +CLOAKED +CLOAKROOM +CLOBBER +CLOBBERED +CLOCK +CLOCKED +CLOCKING +CLOCKS +CLOCKWISE +CLOCKWORK +CLOG +CLOGGED +CLOGGING +CLOGS +CLOISTERED +CLONE +CLONED +CLONES +CLONING +CLOONEY +CLORE +CLOROX +CLOS +CLOSE +CLOSED +CLOSELY +CLOSENESS +CLOSER +CLOSES +CLOSEST +CLOSET +CLOSETED +CLOSETS +CLOSEUP +CLOSING +CLOSINGS +CLOSURE +CLOSURES +CLOT +CLOTH +CLOTHE +CLOTHED +CLOTHES +CLOTHESTIME +CLOTHIER +CLOTHING +CLOTHS +CLOTS +CLOTTING +CLOTURE +CLOUD +CLOUDED +CLOUDING +CLOUDLESS +CLOUDS +CLOUDY +CLOUGH +CLOUT +CLOUTHIER +CLOVE +CLOVER +CLOVES +CLOVIS +CLOWN +CLOWNING +CLOWNS +CLOYING +CLOZAPINE +CLOZARIL +CLUB +CLUB'S +CLUBBED +CLUBBING +CLUBBY +CLUBHOUSE +CLUBS +CLUBS' +CLUE +CLUELESS +CLUES +CLUETT +CLUJ +CLUMP +CLUMPS +CLUMSILY +CLUMSY +CLUNG +CLUNKER +CLUNKERS +CLUNKY +CLUSTER +CLUSTERED +CLUSTERING +CLUSTERS +CLUTCH +CLUTCHED +CLUTCHES +CLUTCHING +CLUTTER +CLUTTERED +CLYDE +CLYMER +CMOS +CO +COACH +COACH'S +COACHED +COACHES +COACHES' +COACHING +COAL +COALE +COALESCE +COALESCED +COALESCING +COALITION +COALITION'S +COALITIONS +COALS +COARSE +COAST +COAST'S +COASTAL +COASTAL'S +COASTED +COASTER +COASTERS +COASTING +COASTLINE +COASTLINES +COASTS +COAT +COATED +COATES +COATING +COATINGS +COATS +COATTAILS +COAUTHOR +COAX +COAXED +COAXIAL +COAXING +COB +COBAIN +COBAIN'S +COBALT +COBARRUVIAZ +COBB +COBB'S +COBBLE +COBBLED +COBBLER +COBBLESTONE +COBBLESTONES +COBLE +COBRA +COBRAS +COBURN +COBWEBS +COCA +COCAINE +COCHRAN +COCHRAN'S +COCHRANE +COCK +COCKBURN +COCKED +COCKER +COCKEYED +COCKFIGHTING +COCKNEY +COCKPIT +COCKPITS +COCKRELL +COCKROACH +COCKROACHES +COCKS +COCKTAIL +COCKTAILS +COCKY +COCO +COCOA +COCOM +COCONUT +COCONUTS +COCOON +COD +CODA +CODDLE +CODDLED +CODDLING +CODE +CODED +CODEINE +CODELCO +CODENAMED +CODES +CODEX +CODIFIED +CODIFY +CODING +CODRESCU +CODY +CODY'S +COE +COED +COEDUCATIONAL +COELHO +COELHO'S +COELLO +COEN +COERCE +COERCED +COERCING +COERCION +COERCIVE +COETSEE +COETZEE +COEUR +COEXIST +COEXISTENCE +COFER +COFFEE +COFFEEHOUSE +COFFEEHOUSES +COFFEES +COFFERS +COFFEY +COFFIN +COFFINS +COFFMAN +COFOUNDER +COG +COGAN +COGENERATION +COGENT +COGNAC +COGNEX +COGNITIVE +COGNIZANT +COGNOSCENTI +COHABITATION +COHAN +COHEN +COHEN'S +COHENS +COHERENCE +COHERENT +COHESION +COHESIVE +COHESIVENESS +COHN +COHO +COHORT +COHORTS +COIFFED +COIL +COILED +COILS +COIN +COINAGE +COINCIDE +COINCIDED +COINCIDENCE +COINCIDENCES +COINCIDENT +COINCIDENTAL +COINCIDENTALLY +COINCIDES +COINCIDING +COINED +COINING +COINS +COINTREAU +COJIMAR +COJUANGCO +COKE +COKE'S +COKER +COKES +COKIE +COL +COLA +COLA'S +COLANGELO +COLAS +COLBERN +COLBERT +COLBURN +COLBY +COLD +COLDER +COLDEST +COLDLY +COLDS +COLDWELL +COLE +COLE'S +COLECO +COLECO'S +COLEMAN +COLEMAN'S +COLERIDGE +COLES +COLETTE +COLGATE +COLGATE'S +COLI +COLIN +COLINAS +COLISEUM +COLL +COLLABORATE +COLLABORATED +COLLABORATING +COLLABORATION +COLLABORATIONS +COLLABORATIVE +COLLABORATOR +COLLABORATORS +COLLAGE +COLLAGEN +COLLAGES +COLLAPSE +COLLAPSED +COLLAPSES +COLLAPSIBLE +COLLAPSING +COLLAR +COLLARBONE +COLLARD +COLLARED +COLLARS +COLLATERAL +COLLATERALIZED +COLLEAGUE +COLLEAGUE'S +COLLEAGUES +COLLEAGUES' +COLLECT +COLLECTED +COLLECTIBLE +COLLECTIBLES +COLLECTING +COLLECTION +COLLECTIONS +COLLECTIVE +COLLECTIVELY +COLLECTIVES +COLLECTIVISM +COLLECTIVIZATION +COLLECTOR +COLLECTOR'S +COLLECTORS +COLLECTORS' +COLLECTS +COLLEEN +COLLEGE +COLLEGE'S +COLLEGES +COLLEGIAL +COLLEGIALITY +COLLEGIATE +COLLENDER +COLLETT +COLLETTE +COLLEY +COLLIDE +COLLIDED +COLLIDER +COLLIDES +COLLIDING +COLLIE +COLLIER +COLLIN +COLLINGS +COLLINS +COLLINS' +COLLINS'S +COLLISION +COLLISIONS +COLLOQUIAL +COLLOR +COLLOR'S +COLLUDE +COLLUDED +COLLUDING +COLLUSION +COLLUSIVE +COLMAN +COLODNY +COLOGNE +COLOMBIA +COLOMBIA'S +COLOMBIAN +COLOMBIANS +COLOMBO +COLON +COLONEL +COLONEL'S +COLONELS +COLONIA +COLONIAL +COLONIAL'S +COLONIALISM +COLONIALIST +COLONIALISTS +COLONIALS +COLONIAS +COLONIES +COLONISTS +COLONIZATION +COLONIZE +COLONIZED +COLONIZERS +COLONY +COLONY'S +COLOR +COLORADANS +COLORADO +COLORADO'S +COLORATION +COLORATURA +COLORBLIND +COLORECTAL +COLORED +COLOREDS +COLORFUL +COLORFULLY +COLORING +COLORIZATION +COLORIZED +COLORLESS +COLORS +COLOSIO +COLOSIO'S +COLOSSAL +COLOSSUS +COLOUR +COLSON +COLT +COLT'S +COLTEC +COLTER +COLTON +COLTRANE +COLTS +COLTS' +COLUMBIA +COLUMBIA'S +COLUMBIAN +COLUMBO +COLUMBUS +COLUMBUS' +COLUMBUS'S +COLUMN +COLUMN'S +COLUMNED +COLUMNIST +COLUMNISTS +COLUMNS +COLVILLE +COLVIN +COLWELL +COM +COM'S +COMA +COMAIR +COMANCHE +COMANDANTE +COMANECI +COMARCO +COMAS +COMATOSE +COMB +COMBAT +COMBATANT +COMBATANTS +COMBATING +COMBATIVE +COMBATTING +COMBE +COMBED +COMBEST +COMBINATION +COMBINATIONS +COMBINE +COMBINED +COMBINES +COMBING +COMBINING +COMBO +COMBS +COMBUSTIBLE +COMBUSTION +COMCAST +COMCAST'S +COMDATA +COMDEX +COMDISCO +COME +COMEAU +COMEBACK +COMEBACKS +COMECON +COMEDIAN +COMEDIAN'S +COMEDIANS +COMEDIC +COMEDIENNE +COMEDIES +COMEDOWN +COMEDY +COMER +COMERCIAL +COMERCIO +COMERICA +COMERS +COMES +COMET +COMETS +COMEUPPANCE +COMEX +COMEX'S +COMFED +COMFORT +COMFORTABLE +COMFORTABLY +COMFORTED +COMFORTING +COMFORTS +COMFY +COMIC +COMICAL +COMICALLY +COMICS +COMIN' +COMINCO +COMING +COMINGS +COMISKEY +COMITATUS +COMITY +COMM +COMMA +COMMAND +COMMAND'S +COMMANDANT +COMMANDED +COMMANDEER +COMMANDEERED +COMMANDEERING +COMMANDER +COMMANDER'S +COMMANDERS +COMMANDING +COMMANDMENT +COMMANDMENTS +COMMANDO +COMMANDOS +COMMANDS +COMMEMORATE +COMMEMORATED +COMMEMORATES +COMMEMORATING +COMMEMORATION +COMMEMORATIONS +COMMEMORATIVE +COMMENCE +COMMENCED +COMMENCEMENT +COMMENCING +COMMEND +COMMENDABLE +COMMENDATION +COMMENDED +COMMENDING +COMMENSURATE +COMMENT +COMMENTARIES +COMMENTARY +COMMENTATOR +COMMENTATORS +COMMENTED +COMMENTING +COMMENTS +COMMERCE +COMMERCE'S +COMMERCIAL +COMMERCIAL'S +COMMERCIALE +COMMERCIALE'S +COMMERCIALISM +COMMERCIALIZATION +COMMERCIALIZE +COMMERCIALIZED +COMMERCIALIZING +COMMERCIALLY +COMMERCIALS +COMMERICAL +COMMERZBANK +COMMINGLED +COMMISSAR +COMMISSARIES +COMMISSARY +COMMISSION +COMMISSION'S +COMMISSIONED +COMMISSIONER +COMMISSIONER'S +COMMISSIONERS +COMMISSIONERS' +COMMISSIONING +COMMISSIONS +COMMIT +COMMITED +COMMITEE +COMMITMENT +COMMITMENTS +COMMITS +COMMITTAL +COMMITTE +COMMITTED +COMMITTEE +COMMITTEE'S +COMMITTEEMAN +COMMITTEES +COMMITTEES' +COMMITTING +COMMITTMENT +COMMODE +COMMODITIES +COMMODITY +COMMODORE +COMMODORE'S +COMMON +COMMONALITY +COMMONER +COMMONERS +COMMONLY +COMMONPLACE +COMMONS +COMMONWEALTH +COMMONWEALTH'S +COMMOTION +COMMUNAL +COMMUNE +COMMUNES +COMMUNICABLE +COMMUNICATE +COMMUNICATED +COMMUNICATES +COMMUNICATING +COMMUNICATION +COMMUNICATION'S +COMMUNICATIONS +COMMUNICATIONS' +COMMUNICATIVE +COMMUNICATOR +COMMUNICATORS +COMMUNION +COMMUNIQUE +COMMUNIQUES +COMMUNISM +COMMUNISM'S +COMMUNIST +COMMUNISTS +COMMUNISTS' +COMMUNITIES +COMMUNITY +COMMUNITY'S +COMMUTATION +COMMUTE +COMMUTED +COMMUTER +COMMUTERS +COMMUTES +COMMUTING +COMO +COMOROS +COMP +COMPACT +COMPACTED +COMPACTOR +COMPACTS +COMPAGNIE +COMPANIA +COMPANIES +COMPANIES' +COMPANION +COMPANIONS +COMPANIONSHIP +COMPANY +COMPANY'S +COMPANYWIDE +COMPAQ +COMPAQ'S +COMPARABILITY +COMPARABLE +COMPARABLY +COMPARATIVE +COMPARATIVELY +COMPARE +COMPARED +COMPARES +COMPARING +COMPARISON +COMPARISONS +COMPARTMENT +COMPARTMENTS +COMPASS +COMPASSION +COMPASSIONATE +COMPATIBILITY +COMPATIBLE +COMPATIBLES +COMPATRIOT +COMPATRIOTS +COMPEL +COMPELLED +COMPELLING +COMPELS +COMPENDIUM +COMPENSATE +COMPENSATED +COMPENSATES +COMPENSATING +COMPENSATION +COMPENSATORY +COMPETE +COMPETED +COMPETENCE +COMPETENCY +COMPETENT +COMPETENTLY +COMPETES +COMPETING +COMPETITION +COMPETITION'S +COMPETITIONS +COMPETITIVE +COMPETITIVELY +COMPETITIVENESS +COMPETITOR +COMPETITOR'S +COMPETITORS +COMPETITORS' +COMPILATION +COMPILATIONS +COMPILE +COMPILED +COMPILES +COMPILING +COMPLACENCY +COMPLACENT +COMPLAIN +COMPLAINANT +COMPLAINANTS +COMPLAINED +COMPLAINERS +COMPLAINING +COMPLAINS +COMPLAINT +COMPLAINTS +COMPLEMENT +COMPLEMENTARY +COMPLEMENTED +COMPLEMENTING +COMPLEMENTS +COMPLETE +COMPLETED +COMPLETELY +COMPLETENESS +COMPLETES +COMPLETING +COMPLETION +COMPLETIONS +COMPLEX +COMPLEX'S +COMPLEXES +COMPLEXION +COMPLEXITIES +COMPLEXITY +COMPLIANCE +COMPLIANT +COMPLICATE +COMPLICATED +COMPLICATES +COMPLICATING +COMPLICATION +COMPLICATIONS +COMPLICITY +COMPLIED +COMPLIES +COMPLIMENT +COMPLIMENTARY +COMPLIMENTED +COMPLIMENTING +COMPLIMENTS +COMPLY +COMPLYING +COMPONENT +COMPONENTS +COMPORT +COMPOSE +COMPOSED +COMPOSER +COMPOSER'S +COMPOSERS +COMPOSES +COMPOSING +COMPOSITE +COMPOSITES +COMPOSITION +COMPOSITIONAL +COMPOSITIONS +COMPOST +COMPOSTING +COMPOSURE +COMPOUND +COMPOUNDED +COMPOUNDING +COMPOUNDS +COMPREHEND +COMPREHENSIBLE +COMPREHENSION +COMPREHENSIVE +COMPREHENSIVELY +COMPRESS +COMPRESSED +COMPRESSES +COMPRESSING +COMPRESSION +COMPRESSOR +COMPRESSORS +COMPRISE +COMPRISED +COMPRISES +COMPRISING +COMPROMISE +COMPROMISED +COMPROMISER +COMPROMISES +COMPROMISING +COMPTEK +COMPTON +COMPTON'S +COMPTROLLER +COMPTROLLER'S +COMPTRONIX +COMPUADD +COMPUCOM +COMPULSION +COMPULSIVE +COMPULSIVELY +COMPULSORY +COMPUSA +COMPUSERVE +COMPUSERVE'S +COMPUTATION +COMPUTATIONAL +COMPUTATIONS +COMPUTE +COMPUTED +COMPUTER +COMPUTER'S +COMPUTERIZATION +COMPUTERIZE +COMPUTERIZED +COMPUTERIZING +COMPUTERLAND +COMPUTERLAND'S +COMPUTERS +COMPUTERS' +COMPUTERVISION +COMPUTING +COMPUWARE +COMRADE +COMRADES +COMSAT +COMSAT'S +COMSTOCK +CON +CONABLE +CONAGRA +CONAGRA'S +CONAN +CONANT +CONCAVE +CONCEAL +CONCEALED +CONCEALING +CONCEALMENT +CONCEALS +CONCEDE +CONCEDED +CONCEDES +CONCEDING +CONCEIT +CONCEIVABLE +CONCEIVABLY +CONCEIVE +CONCEIVED +CONCEIVING +CONCENTRATE +CONCENTRATED +CONCENTRATES +CONCENTRATING +CONCENTRATION +CONCENTRATIONS +CONCENTRIC +CONCEPCION +CONCEPT +CONCEPTION +CONCEPTIONS +CONCEPTS +CONCEPTUAL +CONCEPTUALLY +CONCERN +CONCERN'S +CONCERNED +CONCERNING +CONCERNS +CONCERNS' +CONCERT +CONCERTED +CONCERTGOERS +CONCERTINA +CONCERTO +CONCERTOS +CONCERTS +CONCESSION +CONCESSIONAIRE +CONCESSIONAIRES +CONCESSIONAL +CONCESSIONARY +CONCESSIONS +CONCH +CONCHITA +CONCIERGE +CONCILIATION +CONCILIATOR +CONCILIATORY +CONCISE +CONCLAVE +CONCLUDE +CONCLUDED +CONCLUDES +CONCLUDING +CONCLUSION +CONCLUSIONS +CONCLUSIVE +CONCLUSIVELY +CONCOCT +CONCOCTED +CONCOCTING +CONCOCTION +CONCOCTIONS +CONCOMITANT +CONCORD +CONCORDE +CONCORDIA +CONCOURSE +CONCRETE +CONCRETELY +CONCUR +CONCURRED +CONCURRENCE +CONCURRENT +CONCURRENTLY +CONCURRING +CONCURS +CONCUSSION +CONCUSSIONS +CONDE +CONDEMN +CONDEMNATION +CONDEMNATIONS +CONDEMNED +CONDEMNING +CONDEMNS +CONDENSATE +CONDENSATION +CONDENSE +CONDENSED +CONDESCENDING +CONDESCENSION +CONDIMENTS +CONDIT +CONDITION +CONDITIONAL +CONDITIONALLY +CONDITIONED +CONDITIONER +CONDITIONERS +CONDITIONING +CONDITIONS +CONDO +CONDOLENCE +CONDOLENCES +CONDOM +CONDOMINIUM +CONDOMINIUMS +CONDOMS +CONDON +CONDONE +CONDONED +CONDONES +CONDONING +CONDOR +CONDORS +CONDOS +CONDUCIVE +CONDUCT +CONDUCTED +CONDUCTING +CONDUCTOR +CONDUCTOR'S +CONDUCTORS +CONDUCTS +CONDUIT +CONDUITS +CONE +CONE'S +CONES +CONEY +CONFECTION +CONFECTIONARY +CONFECTIONER +CONFECTIONERY +CONFECTIONS +CONFEDERACY +CONFEDERATE +CONFEDERATES +CONFEDERATION +CONFER +CONFEREES +CONFERENCE +CONFERENCE'S +CONFERENCES +CONFERENCING +CONFERRED +CONFERRING +CONFERS +CONFESS +CONFESSED +CONFESSES +CONFESSING +CONFESSION +CONFESSIONAL +CONFESSIONS +CONFETTI +CONFIDANT +CONFIDANTE +CONFIDANTS +CONFIDE +CONFIDED +CONFIDENCE +CONFIDENCES +CONFIDENT +CONFIDENTIAL +CONFIDENTIALITY +CONFIDENTIALLY +CONFIDENTLY +CONFIDES +CONFIGURATION +CONFIGURATIONS +CONFIGURE +CONFIGURED +CONFINE +CONFINED +CONFINEMENT +CONFINES +CONFINING +CONFIRM +CONFIRMATION +CONFIRMATIONS +CONFIRMED +CONFIRMING +CONFIRMS +CONFISCATE +CONFISCATED +CONFISCATING +CONFISCATION +CONFISCATIONS +CONFISCATORY +CONFLAGRATION +CONFLICT +CONFLICTED +CONFLICTING +CONFLICTS +CONFLUENCE +CONFORM +CONFORMED +CONFORMING +CONFORMIST +CONFORMITY +CONFORMS +CONFORTE +CONFOUND +CONFOUNDED +CONFOUNDING +CONFOUNDS +CONFRONT +CONFRONTATION +CONFRONTATIONAL +CONFRONTATIONS +CONFRONTED +CONFRONTING +CONFRONTS +CONFUCIAN +CONFUCIUS +CONFUSE +CONFUSED +CONFUSES +CONFUSING +CONFUSION +CONG +CONGA +CONGENIAL +CONGENITAL +CONGER +CONGESTED +CONGESTION +CONGESTIVE +CONGLOMERATE +CONGLOMERATE'S +CONGLOMERATES +CONGLOMERATION +CONGO +CONGOLESE +CONGRATULATE +CONGRATULATED +CONGRATULATING +CONGRATULATION +CONGRATULATIONS +CONGRATULATORY +CONGREGANTS +CONGREGATE +CONGREGATED +CONGREGATING +CONGREGATION +CONGREGATIONAL +CONGREGATIONS +CONGRESS +CONGRESS' +CONGRESS'S +CONGRESSES +CONGRESSIONAL +CONGRESSIONALLY +CONGRESSMAN +CONGRESSMAN'S +CONGRESSMEN +CONGRESSWOMAN +CONGRESSWOMEN +CONINE +CONISTON +CONISTON'S +CONJECTURE +CONJUGAL +CONJUNCTION +CONJURE +CONJURED +CONJURES +CONJURING +CONKLIN +CONLAN +CONLEY +CONLIN +CONLON +CONN +CONNAGHAN +CONNALLY +CONNAUGHT +CONNECT +CONNECTED +CONNECTICUT +CONNECTICUT'S +CONNECTING +CONNECTION +CONNECTIONS +CONNECTIVE +CONNECTIVITY +CONNECTOR +CONNECTORS +CONNECTS +CONNED +CONNELL +CONNELLY +CONNER +CONNER'S +CONNERLY +CONNERY +CONNICK +CONNIE +CONNING +CONNIVANCE +CONNIVING +CONNOISSEUR +CONNOISSEURS +CONNOLLY +CONNOR +CONNORS +CONNOTATION +CONNOTATIONS +CONNOTES +CONOCO +CONOCO'S +CONOR +CONOVER +CONQUER +CONQUERED +CONQUERING +CONQUEROR +CONQUERORS +CONQUEST +CONQUESTS +CONQUISTADORS +CONRAD +CONRAD'S +CONRADES +CONRAIL +CONRAIL'S +CONRAN +CONROE +CONROY +CONS +CONSARC +CONSCIENCE +CONSCIENCES +CONSCIENTIOUS +CONSCIENTIOUSLY +CONSCIOUS +CONSCIOUSLY +CONSCIOUSNESS +CONSCRIPT +CONSCRIPTED +CONSCRIPTION +CONSCRIPTS +CONSECO +CONSECO'S +CONSECRATE +CONSECRATED +CONSECRATION +CONSECUTIVE +CONSECUTIVELY +CONSENSUAL +CONSENSUS +CONSENT +CONSENTED +CONSENTING +CONSENTS +CONSEQUENCE +CONSEQUENCES +CONSEQUENT +CONSEQUENTIAL +CONSEQUENTLY +CONSERVANCY +CONSERVATION +CONSERVATIONIST +CONSERVATIONISTS +CONSERVATISM +CONSERVATIVE +CONSERVATIVELY +CONSERVATIVES +CONSERVATIVES' +CONSERVATOR +CONSERVATORS +CONSERVATORSHIP +CONSERVATORY +CONSERVE +CONSERVED +CONSERVING +CONSHOHOCKEN +CONSIDER +CONSIDERABLE +CONSIDERABLY +CONSIDERATE +CONSIDERATION +CONSIDERATIONS +CONSIDERED +CONSIDERING +CONSIDERS +CONSIDINE +CONSIGN +CONSIGNED +CONSIGNMENT +CONSIST +CONSISTED +CONSISTENCY +CONSISTENT +CONSISTENTLY +CONSISTING +CONSISTS +CONSOB +CONSOL +CONSOLATION +CONSOLE +CONSOLED +CONSOLES +CONSOLIDATE +CONSOLIDATED +CONSOLIDATED'S +CONSOLIDATES +CONSOLIDATING +CONSOLIDATION +CONSOLIDATIONS +CONSOLIDATORS +CONSOLING +CONSONANT +CONSORT +CONSORTIA +CONSORTIUM +CONSORTIUM'S +CONSORTIUMS +CONSPICUOUS +CONSPICUOUSLY +CONSPIRACIES +CONSPIRACY +CONSPIRATOR +CONSPIRATORIAL +CONSPIRATORS +CONSPIRE +CONSPIRED +CONSPIRING +CONSTABLE +CONSTABLES +CONSTABULARY +CONSTANCE +CONSTANCY +CONSTANT +CONSTANTIN +CONSTANTINE +CONSTANTINIDES +CONSTANTINOPLE +CONSTANTLY +CONSTANZO +CONSTELLATION +CONSTERNATION +CONSTIPATION +CONSTITUENCIES +CONSTITUENCY +CONSTITUENT +CONSTITUENTS +CONSTITUENTS' +CONSTITUTE +CONSTITUTED +CONSTITUTES +CONSTITUTING +CONSTITUTION +CONSTITUTION'S +CONSTITUTIONAL +CONSTITUTIONALITY +CONSTITUTIONALLY +CONSTITUTIONS +CONSTRAIN +CONSTRAINED +CONSTRAINING +CONSTRAINT +CONSTRAINTS +CONSTRICT +CONSTRICTED +CONSTRICTOR +CONSTRUCCIONES +CONSTRUCT +CONSTRUCTED +CONSTRUCTING +CONSTRUCTION +CONSTRUCTIONS +CONSTRUCTIVE +CONSTRUCTIVELY +CONSTRUCTORS +CONSTRUCTS +CONSTRUE +CONSTRUED +CONSUELO +CONSUL +CONSULAR +CONSULATE +CONSULATES +CONSULT +CONSULTANCY +CONSULTANT +CONSULTANT'S +CONSULTANTS +CONSULTANTS' +CONSULTATION +CONSULTATIONS +CONSULTATIVE +CONSULTED +CONSULTING +CONSULTS +CONSUME +CONSUMED +CONSUMER +CONSUMER'S +CONSUMERISM +CONSUMERS +CONSUMERS' +CONSUMES +CONSUMING +CONSUMMATE +CONSUMMATED +CONSUMMATION +CONSUMPTION +CONTACT +CONTACTED +CONTACTING +CONTACTS +CONTADORA +CONTAGION +CONTAGIOUS +CONTAIN +CONTAINED +CONTAINER +CONTAINERBOARD +CONTAINERS +CONTAINING +CONTAINMENT +CONTAINS +CONTAMINANT +CONTAMINANTS +CONTAMINATE +CONTAMINATED +CONTAMINATING +CONTAMINATION +CONTE +CONTEL +CONTEMPLACION +CONTEMPLATE +CONTEMPLATED +CONTEMPLATES +CONTEMPLATING +CONTEMPLATION +CONTEMPLATIVE +CONTEMPORANEOUS +CONTEMPORARIES +CONTEMPORARY +CONTEMPT +CONTEMPTIBLE +CONTEMPTUOUS +CONTEMPTUOUSLY +CONTEND +CONTENDED +CONTENDER +CONTENDERS +CONTENDING +CONTENDS +CONTENT +CONTENTED +CONTENTION +CONTENTIONS +CONTENTIOUS +CONTENTMENT +CONTENTS +CONTEST +CONTEST'S +CONTESTANT +CONTESTANTS +CONTESTED +CONTESTING +CONTESTS +CONTEXT +CONTEXTS +CONTI +CONTIGUOUS +CONTINENT +CONTINENT'S +CONTINENTAL +CONTINENTAL'S +CONTINENTALS +CONTINENTS +CONTINGENCIES +CONTINGENCY +CONTINGENT +CONTINGENTS +CONTINUAL +CONTINUALLY +CONTINUANCE +CONTINUATION +CONTINUE +CONTINUED +CONTINUES +CONTINUING +CONTINUITY +CONTINUOUS +CONTINUOUSLY +CONTINUUM +CONTORTED +CONTORTIONS +CONTOUR +CONTOURS +CONTRA +CONTRABAND +CONTRACEPTION +CONTRACEPTIVE +CONTRACEPTIVES +CONTRACT +CONTRACT'S +CONTRACTED +CONTRACTING +CONTRACTION +CONTRACTIONARY +CONTRACTIONS +CONTRACTOR +CONTRACTOR'S +CONTRACTORS +CONTRACTORS' +CONTRACTS +CONTRACTUAL +CONTRACTUALLY +CONTRADICT +CONTRADICTED +CONTRADICTING +CONTRADICTION +CONTRADICTIONS +CONTRADICTORY +CONTRADICTS +CONTRAPTION +CONTRAPTIONS +CONTRARIAN +CONTRARIANS +CONTRARY +CONTRAS +CONTRAS' +CONTRAST +CONTRASTED +CONTRASTING +CONTRASTS +CONTRAVENTION +CONTRERAS +CONTRIBUTE +CONTRIBUTED +CONTRIBUTES +CONTRIBUTING +CONTRIBUTION +CONTRIBUTIONS +CONTRIBUTOR +CONTRIBUTORS +CONTRITE +CONTRITION +CONTRIVED +CONTROL +CONTROL'S +CONTROLLABLE +CONTROLLED +CONTROLLER +CONTROLLER'S +CONTROLLERS +CONTROLLERS' +CONTROLLING +CONTROLS +CONTROVERSIAL +CONTROVERSIES +CONTROVERSY +CONTRUCTION +CONTUSION +CONTUSIONS +CONUNDRUM +CONVAIR +CONVALESCENCE +CONVALESCENT +CONVENE +CONVENED +CONVENES +CONVENIENCE +CONVENIENCES +CONVENIENT +CONVENIENTLY +CONVENING +CONVENT +CONVENTION +CONVENTION'S +CONVENTIONAL +CONVENTIONALLY +CONVENTIONEERS +CONVENTIONS +CONVERGE +CONVERGED +CONVERGENCE +CONVERGENT +CONVERGING +CONVERSANT +CONVERSATION +CONVERSATIONAL +CONVERSATIONS +CONVERSE +CONVERSELY +CONVERSING +CONVERSION +CONVERSIONS +CONVERT +CONVERTED +CONVERTER +CONVERTERS +CONVERTIBILITY +CONVERTIBLE +CONVERTIBLES +CONVERTING +CONVERTS +CONVEX +CONVEY +CONVEYANCE +CONVEYED +CONVEYING +CONVEYOR +CONVEYS +CONVICT +CONVICTED +CONVICTING +CONVICTION +CONVICTIONS +CONVICTS +CONVINCE +CONVINCED +CONVINCES +CONVINCING +CONVINCINGLY +CONVOCATION +CONVOLUTED +CONVOY +CONVOYS +CONVULSED +CONVULSIONS +CONWAY +CONYERS +COO +COOGAN +COOK +COOK'S +COOKBOOK +COOKBOOKS +COOKE +COOKE'S +COOKED +COOKER +COOKERS +COOKIE +COOKIES +COOKING +COOKS +COOKSON +COOKWARE +COOL +COOLANT +COOLANTS +COOLED +COOLER +COOLERS +COOLEST +COOLEY +COOLIDGE +COOLING +COOLLY +COOLNESS +COOLS +COOMBS +COON +COONEY +COOP +COOPED +COOPER +COOPER'S +COOPERATE +COOPERATED +COOPERATES +COOPERATING +COOPERATION +COOPERATIVE +COOPERATIVE'S +COOPERATIVELY +COOPERATIVES +COOPERMAN +COOPERS +COOPERSTOWN +COOPERVISION +COORDINATE +COORDINATED +COORDINATES +COORDINATING +COORDINATION +COORDINATOR +COORDINATORS +COORS +COORS'S +COOS +COP +COP'S +COPA +COPACABANA +COPAYMENTS +COPE +COPED +COPELAND +COPELAND'S +COPENHAGEN +COPES +COPIAGUE +COPIED +COPIER +COPIERS +COPIES +COPILOT +COPING +COPIOUS +COPLAND +COPLAND'S +COPLEY +COPLEY'S +COPP +COPPED +COPPEE +COPPER +COPPER'S +COPPERFIELD +COPPOLA +COPPOLA'S +COPS +COPTER +COPTIC +COPULATION +COPY +COPYCAT +COPYCATS +COPYING +COPYRIGHT +COPYRIGHTED +COPYRIGHTS +COPYWRITER +COR +CORA +CORAL +CORALS +CORAM +CORAZON +CORBETT +CORBIN +CORCORAN +CORD +CORDELL +CORDER +CORDERO +CORDES +CORDIAL +CORDIALITY +CORDIS +CORDLESS +CORDOBA +CORDOBAS +CORDON +CORDONED +CORDOVA +CORDOVEZ +CORDS +CORDUROY +CORE +COREA +CORES +CORESTATES +CORETTA +COREY +CORFU +CORIANDER +CORINNE +CORINTH +CORK +CORKS +CORKSCREW +CORKY +CORLEONE +CORLEY +CORLISS +CORMAN +CORMIER +CORN +CORNBREAD +CORNEA +CORNEAS +CORNED +CORNEL +CORNELIA +CORNELIUS +CORNELIUSON +CORNELL +CORNELL'S +CORNER +CORNERBACK +CORNERBACKS +CORNERED +CORNERING +CORNERS +CORNERSTONE +CORNERSTONES +CORNETT +CORNFIELD +CORNFIELDS +CORNHUSKERS +CORNIEL +CORNING +CORNING'S +CORNISH +CORNMEAL +CORNSTARCH +CORNUCOPIA +CORNWALL +CORNWELL +CORNY +COROLLA +COROLLARY +CORONA +CORONA'S +CORONADO +CORONARY +CORONATION +CORONER +CORONER'S +CORONERS +CORPORACION +CORPORAL +CORPORATE +CORPORATES +CORPORATEWATCH +CORPORATION +CORPORATION'S +CORPORATIONS +CORPORATIONS' +CORPS +CORPS' +CORPSE +CORPSES +CORPUS +CORR +CORRADO +CORRAL +CORRALLED +CORREA +CORRECT +CORRECTED +CORRECTING +CORRECTION +CORRECTIONAL +CORRECTIONS +CORRECTIVE +CORRECTLY +CORRECTNESS +CORRECTS +CORRELATE +CORRELATED +CORRELATES +CORRELATION +CORRELATIONS +CORRELL +CORRESPOND +CORRESPONDED +CORRESPONDENCE +CORRESPONDENT +CORRESPONDENTS +CORRESPONDENTS' +CORRESPONDING +CORRESPONDINGLY +CORRESPONDS +CORRIDOR +CORRIDORS +CORRIERE +CORRIGAN +CORRINA +CORROBORATE +CORROBORATED +CORROBORATING +CORROBORATION +CORRODE +CORRODED +CORRODING +CORROON +CORROSION +CORROSIVE +CORRUGATED +CORRUPT +CORRUPTED +CORRUPTING +CORRUPTION +CORRUPTS +CORRY +CORSA +CORSAIR +CORSET +CORSICA +CORSICAN +CORT +CORTE +CORTEGE +CORTES +CORTESE +CORTEX +CORTEZ +CORTINES +CORTISONE +CORTLAND +CORVALLIS +CORVETTE +CORVETTES +CORWIN +CORY +CORZINE +COS +COSA +COSBY +COSBY'S +COSE +COSELL +COSENTINO +COSENTINO'S +COSGROVE +COSI +COSMETIC +COSMETICS +COSMETOLOGY +COSMIC +COSMO +COSMO'S +COSMODROME +COSMOLOGY +COSMONAUT +COSMONAUTS +COSMOPOLITAN +COSMOPULOS +COSMOS +COSPONSORED +COSPONSORS +COSSACK +COSSACKS +COSSIGA +COSSIN +COST +COSTA +COSTAIN +COSTANZA +COSTAR +COSTAS +COSTCO +COSTCUTTING +COSTELLO +COSTELLO'S +COSTING +COSTLIER +COSTLIEST +COSTLY +COSTNER +COSTNER'S +COSTS +COSTUME +COSTUMED +COSTUMES +COT +COTE +COTERIE +COTO +COTS +COTT +COTTA +COTTAGE +COTTAGES +COTTAM +COTTEN +COTTER +COTTLE +COTTON +COTTON'S +COTTONWOOD +COTTRELL +COUCH +COUCHED +COUCHES +COUDERT +COUGAR +COUGARS +COUGH +COUGHED +COUGHING +COUGHLIN +COUGHS +COULD +COULD'VE +COULDN'T +COULSON +COULTER +COUNCIL +COUNCIL'S +COUNCILLOR +COUNCILLORS +COUNCILMAN +COUNCILMEN +COUNCILOR +COUNCILORS +COUNCILS +COUNCILWOMAN +COUNSEL +COUNSEL'S +COUNSELED +COUNSELING +COUNSELLING +COUNSELOR +COUNSELORS +COUNSELS +COUNT +COUNTDOWN +COUNTED +COUNTENANCE +COUNTER +COUNTERACT +COUNTERATTACK +COUNTERATTACKED +COUNTERATTACKS +COUNTERBALANCE +COUNTERBID +COUNTERCHARGES +COUNTERCLAIM +COUNTERCLAIMS +COUNTERCULTURE +COUNTERDEMONSTRATORS +COUNTERED +COUNTERESPIONAGE +COUNTERFEIT +COUNTERFEITERS +COUNTERFEITING +COUNTERFEITS +COUNTERING +COUNTERINSURGENCY +COUNTERINTELLIGENCE +COUNTERMEASURES +COUNTEROFFENSIVE +COUNTEROFFER +COUNTERPART +COUNTERPARTS +COUNTERPOINT +COUNTERPRODUCTIVE +COUNTERPROPOSAL +COUNTERREVOLUTION +COUNTERREVOLUTIONARIES +COUNTERREVOLUTIONARY +COUNTERS +COUNTERSUED +COUNTERSUIT +COUNTERSUITS +COUNTERTERRORISM +COUNTERVAILING +COUNTERWEIGHT +COUNTESS +COUNTIES +COUNTING +COUNTLESS +COUNTRIES +COUNTRIES' +COUNTRY +COUNTRY'S +COUNTRYMAN +COUNTRYMEN +COUNTRYSIDE +COUNTRYWIDE +COUNTS +COUNTY +COUNTY'S +COUNTYWIDE +COUP +COUP'S +COUPE +COUPES +COUPLE +COUPLE'S +COUPLED +COUPLES +COUPLING +COUPON +COUPONING +COUPONS +COUPS +COURAGE +COURAGEOUS +COURAGEOUSLY +COURANT +COURIC +COURIER +COURIERS +COURSE +COURSE'S +COURSES +COURSING +COURSON +COURT +COURT'S +COURTAULDS +COURTED +COURTEOUS +COURTER +COURTER'S +COURTESY +COURTHOUSE +COURTHOUSES +COURTING +COURTIS +COURTLY +COURTNEY +COURTROOM +COURTROOMS +COURTS +COURTS' +COURTSHIP +COURTSIDE +COURTYARD +COURTYARDS +COUSCOUS +COUSIN +COUSIN'S +COUSINS +COUSTEAU +COUSY +COUTTS +COUTURE +COUTURIER +COVE +COVEN +COVENANT +COVENANTS +COVENT +COVENTRY +COVER +COVERAGE +COVERAGES +COVERALLS +COVERDELL +COVERED +COVERING +COVERINGS +COVERS +COVERT +COVERTLY +COVERUP +COVES +COVET +COVETED +COVETS +COVEY +COVIA +COVINA +COVINGTON +COW +COW'S +COWAN +COWARD +COWARDICE +COWARDLY +COWARDS +COWART +COWBOY +COWBOYS +COWBOYS' +COWED +COWELL +COWEN +COWER +COWERING +COWGIRL +COWLES +COWLINGS +COWLINGS' +COWORKERS +COWPER +COWS +COX +COX'S +COXE +COY +COYLE +COYLY +COYNE +COYOTE +COYOTES +COZINESS +COZUMEL +COZY +COZYING +CRAB +CRABB +CRABBE +CRABS +CRABTREE +CRACK +CRACKDOWN +CRACKDOWNS +CRACKED +CRACKER +CRACKERS +CRACKING +CRACKLE +CRACKLED +CRACKLES +CRACKLING +CRACKPOT +CRACKS +CRADDOCK +CRADLE +CRADLED +CRADLES +CRADLING +CRAFT +CRAFT'S +CRAFTED +CRAFTING +CRAFTS +CRAFTSMAN +CRAFTSMANSHIP +CRAFTSMEN +CRAFTY +CRAGGY +CRAIG +CRAIG'S +CRAIN +CRAIN'S +CRAM +CRAMER +CRAMMED +CRAMMING +CRAMP +CRAMPED +CRAMPING +CRAMPS +CRAMPTON +CRANBERRIES +CRANBERRY +CRANDALL +CRANDALL'S +CRANE +CRANE'S +CRANES +CRANFORD +CRANK +CRANKED +CRANKING +CRANKS +CRANKY +CRANNIES +CRANNY +CRANSTON +CRANSTON'S +CRAP +CRAPS +CRAPSHOOT +CRASH +CRASHED +CRASHES +CRASHING +CRASS +CRATE +CRATER +CRATERS +CRATES +CRAVATH +CRAVE +CRAVED +CRAVEN +CRAVES +CRAVIN +CRAVING +CRAVINGS +CRAWFISH +CRAWFORD +CRAWFORD'S +CRAWL +CRAWLED +CRAWLEY +CRAWLING +CRAWLS +CRAXI +CRAY +CRAY'S +CRAYFISH +CRAYOLA +CRAYON +CRAYONS +CRAZE +CRAZED +CRAZIER +CRAZIES +CRAZINESS +CRAZY +CREAKING +CREAKY +CREAM +CREAMED +CREAMER +CREAMS +CREAMY +CREASE +CREASES +CREATE +CREATED +CREATES +CREATING +CREATION +CREATIONISM +CREATIONS +CREATIVE +CREATIVELY +CREATIVITY +CREATOR +CREATORS +CREATURE +CREATURES +CRECHE +CREDENCE +CREDENTIAL +CREDENTIALED +CREDENTIALS +CREDIBILITY +CREDIBLE +CREDIBLY +CREDIT +CREDIT'S +CREDITABLE +CREDITANSTALT +CREDITED +CREDITING +CREDITO +CREDITOR +CREDITORS +CREDITORS' +CREDITS +CREDITWATCH +CREDITWORTHINESS +CREDITWORTHY +CREDO +CREDULITY +CREE +CREED +CREEDON +CREEDS +CREEK +CREEK'S +CREEKS +CREEP +CREEPING +CREEPS +CREEPY +CREIGHTON +CREMATED +CREMATION +CREMATORIUM +CREME +CRENSHAW +CREOLE +CREPE +CREPES +CREPT +CRESCENDO +CRESCENT +CRESPO +CRESSON +CREST +CRESTAR +CRESTED +CRESTING +CRESTS +CRETE +CREVICES +CREW +CREW'S +CREWMAN +CREWMATES +CREWMEMBERS +CREWMEN +CREWS +CRIB +CRIBS +CRICHTON +CRICHTON'S +CRICK +CRICKET +CRICKETS +CRIED +CRIER +CRIES +CRIME +CRIME'S +CRIMEA +CRIMEA'S +CRIMEAN +CRIMES +CRIMINAL +CRIMINALIST +CRIMINALISTICS +CRIMINALISTS +CRIMINALITY +CRIMINALIZE +CRIMINALIZING +CRIMINALLY +CRIMINALS +CRIMINOLOGIST +CRIMINOLOGISTS +CRIMINOLOGY +CRIMP +CRIMPED +CRIMPING +CRIMSON +CRINGE +CRINGED +CRINGING +CRIPPEN +CRIPPLE +CRIPPLED +CRIPPLES +CRIPPLING +CRIPS +CRIS +CRISANTI +CRISCO +CRISES +CRISIS +CRISP +CRISPEN +CRISPER +CRISPIN +CRISPLY +CRISPY +CRISS +CRISSCROSS +CRISSCROSSED +CRISSCROSSING +CRIST +CRISTIANI +CRISTIANI'S +CRISTINA +CRISTO +CRISTOBAL +CRISWELL +CRITERIA +CRITERION +CRITIC +CRITIC'S +CRITICAL +CRITICALLY +CRITICISED +CRITICISM +CRITICISMS +CRITICIZE +CRITICIZED +CRITICIZES +CRITICIZING +CRITICS +CRITICS' +CRITIQUE +CRITIQUES +CRITIQUING +CRITTENDEN +CRITTER +CRITTERS +CROAT +CROATIA +CROATIA'S +CROATIAN +CROATIANS +CROATS +CROCE +CROCK +CROCKER +CROCKETT +CROCODILE +CROCODILES +CROFT +CROISSANT +CROISSANTS +CROIX +CROLL +CROMWELL +CRONIES +CRONIN +CRONKITE +CRONY +CRONYISM +CRONYN +CROOK +CROOKED +CROOKS +CROONER +CROONING +CROP +CROP'S +CROPLAND +CROPPED +CROPPER +CROPPING +CROPS +CROQUET +CROSBIE +CROSBY +CROSBY'S +CROSS +CROSS' +CROSS'S +CROSSBONES +CROSSCURRENTS +CROSSE +CROSSED +CROSSES +CROSSFIRE +CROSSING +CROSSINGS +CROSSLAND +CROSSOVER +CROSSROAD +CROSSROADS +CROSSTOWN +CROSSWORD +CROTCH +CROTTY +CROUCH +CROUCHED +CROUCHING +CROUSE +CROVITZ +CROW +CROW'S +CROWBAR +CROWD +CROWD'S +CROWDED +CROWDER +CROWDING +CROWDS +CROWE +CROWED +CROWELL +CROWING +CROWLEY +CROWN +CROWN'S +CROWNED +CROWNING +CROWNS +CROWNX +CROWS +CROWTHER +CRU +CRUCES +CRUCIAL +CRUCIALLY +CRUCIATE +CRUCIBLE +CRUCIFIED +CRUCIFIX +CRUCIFIXION +CRUDE +CRUDELY +CRUDES +CRUE +CRUEL +CRUELEST +CRUELLY +CRUELTIES +CRUELTY +CRUICKSHANK +CRUISE +CRUISE'S +CRUISED +CRUISER +CRUISERS +CRUISES +CRUISING +CRUM +CRUMB +CRUMBLE +CRUMBLED +CRUMBLES +CRUMBLING +CRUMBS +CRUMITIE +CRUMMY +CRUMP +CRUMPLED +CRUNCH +CRUNCHED +CRUNCHERS +CRUNCHES +CRUNCHING +CRUNCHY +CRUSADE +CRUSADED +CRUSADER +CRUSADERS +CRUSADES +CRUSADING +CRUSE +CRUSH +CRUSHED +CRUSHES +CRUSHING +CRUST +CRUSTACEANS +CRUSTED +CRUSTS +CRUSTY +CRUTCH +CRUTCHER +CRUTCHES +CRUTCHFIELD +CRUX +CRUZ +CRUZ'S +CRUZADO +CRUZAN +CRUZAN'S +CRUZANS +CRY +CRYER +CRYING +CRYPT +CRYPTIC +CRYPTO +CRYPTOGRAPHY +CRYPTOSPORIDIUM +CRYSTAL +CRYSTAL'S +CRYSTALLINE +CRYSTALLIZE +CRYSTALLIZED +CRYSTALS +CUADRA +CUAUHTEMOC +CUB +CUBA +CUBA'S +CUBAN +CUBANS +CUBE +CUBED +CUBES +CUBIC +CUBICLE +CUBICLES +CUBISM +CUBIST +CUBS +CUBS' +CUCAMONGA +CUCKOO +CUCKOO'S +CUCUMBER +CUCUMBERS +CUDAHY +CUDDLE +CUDDLING +CUDDLY +CUE +CUELLAR +CUELLAR'S +CUES +CUEVAS +CUFF +CUFFED +CUFFS +CUHNEY +CUISINE +CUISINES +CUITO +CUL +CULBERTSON +CULBRO +CULINARY +CULKIN +CULL +CULLED +CULLEN +CULLIGAN +CULLINET +CULLING +CULLUM +CULMINATE +CULMINATED +CULMINATES +CULMINATING +CULMINATION +CULP +CULPA +CULPABILITY +CULPABLE +CULPEPPER +CULPRIT +CULPRITS +CULT +CULT'S +CULTISTS +CULTIVATE +CULTIVATED +CULTIVATES +CULTIVATING +CULTIVATION +CULTS +CULTURAL +CULTURALLY +CULTURE +CULTURE'S +CULTURED +CULTURES +CULVAHOUSE +CULVER +CULVERHOUSE +CULVERT +CUM +CUMBERLAND +CUMBERSOME +CUMIN +CUMMING +CUMMINGS +CUMMINS +CUMULATIVE +CUMULATIVELY +CUNARD +CUNHA +CUNNING +CUNNINGHAM +CUNNINGHAM'S +CUNY +CUOMO +CUOMO'S +CUP +CUPBOARD +CUPBOARDS +CUPERTINO +CUPERTINO'S +CUPID +CUPPED +CUPS +CURABLE +CURACAO +CURATIVE +CURATOR +CURATORIAL +CURATORS +CURB +CURBED +CURBING +CURBS +CURBSIDE +CURD +CURE +CURED +CURES +CURFEW +CURFEWS +CURIA +CURIE +CURIES +CURING +CURIOSITIES +CURIOSITY +CURIOUS +CURIOUSLY +CURL +CURLED +CURLEY +CURLING +CURLS +CURLY +CURMUDGEON +CURRAGH +CURRAN +CURRAN'S +CURRENCIES +CURRENCY +CURRENCY'S +CURRENT +CURRENTLY +CURRENTS +CURREY +CURRICULA +CURRICULAR +CURRICULUM +CURRICULUMS +CURRIE +CURRIED +CURRIER +CURRY +CURSE +CURSED +CURSES +CURSING +CURSOR +CURSORY +CURT +CURTAIL +CURTAILED +CURTAILING +CURTAILMENT +CURTAIN +CURTAINS +CURTICE +CURTIN +CURTIS +CURTIS' +CURTISS +CURTLY +CURVATURE +CURVE +CURVEBALL +CURVED +CURVES +CURVING +CURVY +CUSACK +CUSHING +CUSHION +CUSHIONED +CUSHIONING +CUSHIONS +CUSHMAN +CUSHY +CUSIP +CUSP +CUSS +CUSTARD +CUSTER +CUSTER'S +CUSTODIAL +CUSTODIAN +CUSTODIANS +CUSTODY +CUSTOM +CUSTOMARILY +CUSTOMARY +CUSTOMER +CUSTOMER'S +CUSTOMERS +CUSTOMERS' +CUSTOMIZE +CUSTOMIZED +CUSTOMIZING +CUSTOMS +CUT +CUTBACK +CUTBACKS +CUTE +CUTENESS +CUTESY +CUTLASS +CUTLER +CUTLER'S +CUTLERY +CUTOFF +CUTOFFS +CUTOUT +CUTOUTS +CUTS +CUTTER +CUTTERS +CUTTHROAT +CUTTING +CUTTINGS +CUYAHOGA +CUZCO +CY +CYANAMID +CYANAMID'S +CYANIDE +CYBER +CYBERSPACE +CYBILL +CYCLE +CYCLES +CYCLICAL +CYCLICALS +CYCLING +CYCLIST +CYCLISTS +CYCLONE +CYCLONES +CYCLOPS +CYCLOSPORINE +CYGNUS +CYLINDER +CYLINDERS +CYLINDRICAL +CYMBALS +CYNDI +CYNIC +CYNICAL +CYNICALLY +CYNICISM +CYNICS +CYNTHIA +CYNWYD +CYPRESS +CYPRIOT +CYPRIOTS +CYPRUS +CYR +CYRANO +CYRIL +CYRILLIC +CYRIX +CYRIX'S +CYRUS +CYST +CYSTIC +CYSTS +CYTOGEN +CYTOMEGALOVIRUS +CZAR +CZAR'S +CZARIST +CZARNECKI +CZARS +CZECH +CZECHOSLOVAK +CZECHOSLOVAKIA +CZECHOSLOVAKIA'S +CZECHOSLOVAKIAN +CZECHOSLOVAKS +CZECHS +CZEPIEL +CZESLAW +D'AFFAIRES +D'AGOSTINO +D'ALENE +D'ALESSANDRO +D'AMATO +D'AMATO'S +D'AMICO +D'ANDREA +D'ANGELO +D'ARBY +D'ARCY +D'AUBUISSON +D'ELECTRICITE +D'ESCOTO +D'ESTAING +D'ETAT +D'ETRE +D'OEUVRES +D'OR +D'ORSAY +D'S +D'SOUZA +D. +D.'S +D.S +DA +DAB +DABAH +DABBED +DABBLE +DABBLED +DABBLING +DABNEY +DACH +DACHA +DACHAU +DACHSHUND +DAD +DAD'S +DADA +DADDY +DADDY'S +DADE +DADS +DAE +DAEDALUS +DAEWOO +DAFFODILS +DAFFY +DAFOE +DAG +DAGBLADET +DAGESTAN +DAGGER +DAGGERS +DAGGETT +DAH +DAHER +DAHL +DAHL'S +DAHLBERG +DAHLIA +DAHLIN +DAHMER +DAHMER'S +DAI +DAIEI +DAIGLE +DAIHATSU +DAIICHI +DAIL +DAILEY +DAILIES +DAILY +DAIMLER +DAIMLER'S +DAIN +DAINIPPON +DAINTY +DAIRIES +DAIRY +DAIRYMEN +DAIS +DAISHOWA +DAISIES +DAISY +DAIWA +DAIWA'S +DAKAR +DAKIN +DAKOTA +DAKOTA'S +DAKOTANS +DAKOTAS +DAL +DALAI +DALE +DALE'S +DALEY +DALEY'S +DALI +DALI'S +DALIAN +DALIBERTI +DALKON +DALLARA +DALLAS +DALLAS' +DALLAS'S +DALMATIAN +DALMATIANS +DALTON +DALTON'S +DALY +DALY'S +DAM +DAM'S +DAMAGE +DAMAGED +DAMAGES +DAMAGING +DAMAS +DAMASCUS +DAME +DAME'S +DAMES +DAMGARD +DAMIAN +DAMIEN +DAMINOZIDE +DAMME +DAMN +DAMNATION +DAMNED +DAMNING +DAMON +DAMON'S +DAMP +DAMPED +DAMPEN +DAMPENED +DAMPENING +DAMPER +DAMPING +DAMS +DAN +DAN'S +DANA +DANA'S +DANAHER +DANANG +DANBURY +DANCE +DANCED +DANCER +DANCER'S +DANCERS +DANCERS' +DANCES +DANCING +DANDELION +DANDELIONS +DANDRUFF +DANDY +DANE +DANES +DANFORTH +DANFORTH'S +DANG +DANGER +DANGERFIELD +DANGEROUS +DANGEROUSLY +DANGERS +DANGLE +DANGLED +DANGLES +DANGLING +DANI +DANIEL +DANIEL'S +DANIELE +DANIELL +DANIELLE +DANIELS +DANIELS' +DANIELSON +DANILO +DANISH +DANK +DANN +DANNEMEYER +DANNER +DANNY +DANNY'S +DANOFF +DANSON +DANTE +DANTE'S +DANUBE +DANVERS +DANVILLE +DANZA +DANZIG +DAO +DAOUD +DAPHNE +DAPKUS +DAPPER +DAPPLED +DAPUZZO +DAR +DARBY +DARCY +DARDEN +DARDEN'S +DARE +DARED +DAREDEVIL +DARES +DARIEN +DARIN +DARING +DARIO +DARIUS +DARK +DARKEN +DARKENED +DARKENING +DARKER +DARKEST +DARKLY +DARKNESS +DARKROOM +DARLA +DARLENE +DARLING +DARLINGS +DARLINGTON +DARMAN +DARMAN'S +DARMSTADT +DARN +DARNED +DARNELL +DARPA +DARR +DARREL +DARRELL +DARREN +DARRIN +DARROW +DARRYL +DART +DART'S +DARTBOARD +DARTED +DARTH +DARTING +DARTMOUTH +DARTMOUTH'S +DARTS +DARWIN +DARWIN'S +DARWINIAN +DARYL +DAS +DASA +DASBURG +DASCHLE +DASH +DASHBOARD +DASHED +DASHES +DASHIELL +DASHING +DASHTI +DASSAULT +DASTARDLY +DAT +DATA +DATA'S +DATABANK +DATABASE +DATABASES +DATACOMM +DATAPOINT +DATAPRODUCTS +DATAQUEST +DATAQUEST'S +DATE +DATED +DATELINE +DATES +DATING +DATSUN +DATUK +DAUB +DAUGHERTY +DAUGHTER +DAUGHTER'S +DAUGHTERS +DAUGHTERS' +DAUNTED +DAUNTING +DAUPHIN +DAVAO +DAVE +DAVE'S +DAVENPORT +DAVEY +DAVID +DAVID'S +DAVIDIAN +DAVIDIANS +DAVIDOFF +DAVIDOW +DAVIDS +DAVIDSON +DAVIDSON'S +DAVIE +DAVIES +DAVIES' +DAVILA +DAVIS +DAVIS' +DAVIS'S +DAVISON +DAVOS +DAVY +DAVYDOV +DAW +DAWES +DAWKINS +DAWN +DAWNED +DAWNING +DAWNS +DAWSON +DAY +DAY'S +DAYAL +DAYAN +DAYBREAK +DAYCARE +DAYDREAM +DAYDREAMING +DAYLIGHT +DAYLIGHTS +DAYLONG +DAYNA +DAYNARD +DAYNE +DAYS +DAYS' +DAYTIME +DAYTON +DAYTON'S +DAYTONA +DAZE +DAZED +DAZS +DAZZLE +DAZZLED +DAZZLING +DBASE +DE +DEACON +DEACONESS +DEACONS +DEACTIVATE +DEACTIVATED +DEAD +DEADBEAT +DEADBEATS +DEADENING +DEADHEADS +DEADLIER +DEADLIEST +DEADLINE +DEADLINES +DEADLOCK +DEADLOCKED +DEADLY +DEADPAN +DEADPANNED +DEADWOOD +DEAF +DEAFENING +DEAFNESS +DEAK +DEAL +DEAL'S +DEALER +DEALER'S +DEALERS +DEALERS' +DEALERSHIP +DEALERSHIP'S +DEALERSHIPS +DEALEY +DEALING +DEALINGS +DEALMAKER +DEALMAKERS +DEALMAKING +DEALS +DEALT +DEAN +DEAN'S +DEANE +DEANGELIS +DEANNA +DEANS +DEAR +DEARBORN +DEAREST +DEARLY +DEARTH +DEATH +DEATH'S +DEATHBED +DEATHLY +DEATHS +DEATON +DEAVER +DEAVER'S +DEB +DEBACLE +DEBACLES +DEBARGE +DEBARMENT +DEBARTOLO +DEBARTOLO'S +DEBASED +DEBATABLE +DEBATE +DEBATE'S +DEBATED +DEBATER +DEBATERS +DEBATES +DEBATING +DEBAUCHERY +DEBBIE +DEBBIO +DEBBY +DEBEERS +DEBENTURE +DEBENTURES +DEBEVOISE +DEBI +DEBILITATED +DEBILITATING +DEBIT +DEBOER +DEBOERS +DEBONAIR +DEBORAH +DEBRA +DEBRIEFED +DEBRIEFING +DEBRIS +DEBT +DEBTHOLDERS +DEBTOR +DEBTOR'S +DEBTORS +DEBTORS' +DEBTS +DEBUNK +DEBUNKED +DEBUNKING +DEBUSSY +DEBUT +DEBUTANTE +DEBUTED +DEBUTING +DEBUTS +DEBY +DEC +DECADE +DECADE'S +DECADENCE +DECADENT +DECADES +DECAF +DECAFFEINATED +DECAL +DECALS +DECAPITATED +DECAPITATION +DECATHLON +DECATUR +DECAY +DECAYED +DECAYING +DECAYS +DECCA +DECEASED +DECEDENT +DECEIT +DECEITFUL +DECEIVE +DECEIVED +DECEIVING +DECELERATING +DECELERATION +DECEMBER +DECEMBER'S +DECENCY +DECENT +DECENTLY +DECENTRALIZATION +DECENTRALIZE +DECENTRALIZED +DECENTRALIZING +DECEPTION +DECEPTIONS +DECEPTIVE +DECEPTIVELY +DECERTIFICATION +DECERTIFY +DECIBEL +DECIBELS +DECIDE +DECIDED +DECIDEDLY +DECIDES +DECIDING +DECILITER +DECIMAL +DECIMATE +DECIMATED +DECIMATION +DECIPHER +DECIPHERED +DECIPHERING +DECISION +DECISION'S +DECISIONMAKING +DECISIONS +DECISIVE +DECISIVELY +DECISIVENESS +DECISON +DECK +DECKED +DECKER +DECKER'S +DECKERS +DECKS +DECLARATION +DECLARATIONS +DECLARATORY +DECLARE +DECLARED +DECLARES +DECLARING +DECLASSIFIED +DECLASSIFY +DECLINE +DECLINED +DECLINERS +DECLINES +DECLINING +DECO +DECODE +DECODED +DECODER +DECODERS +DECODING +DECOMMISSION +DECOMMISSIONED +DECOMMISSIONING +DECOMPOSE +DECOMPOSED +DECOMPOSING +DECOMPOSITION +DECOMPRESSION +DECONCINI +DECONCINI'S +DECONSTRUCTION +DECONTAMINATION +DECONTROL +DECOR +DECORATE +DECORATED +DECORATES +DECORATING +DECORATION +DECORATIONS +DECORATIVE +DECORATOR +DECORATORS +DECORUM +DECOUPLING +DECOY +DECOYS +DECRANE +DECREASE +DECREASED +DECREASES +DECREASING +DECREE +DECREED +DECREES +DECREPIT +DECRIED +DECRIES +DECRIMINALIZATION +DECRY +DECRYING +DEDE +DEDERICK +DEDHAM +DEDICATE +DEDICATED +DEDICATING +DEDICATION +DEDUCE +DEDUCED +DEDUCT +DEDUCTED +DEDUCTIBILITY +DEDUCTIBLE +DEDUCTIBLES +DEDUCTING +DEDUCTION +DEDUCTIONS +DEE +DEED +DEEDED +DEEDEE +DEEDRICK +DEEDS +DEEGAN +DEEJAY +DEELITES +DEEM +DEEMED +DEEMS +DEEN +DEEP +DEEPAK +DEEPEN +DEEPENED +DEEPENING +DEEPENS +DEEPER +DEEPEST +DEEPLY +DEEPWATER +DEER +DEERE +DEERE'S +DEERFIELD +DEERING +DEES +DEET +DEETS +DEF +DEFACED +DEFACING +DEFAMATION +DEFAMATORY +DEFAME +DEFAMED +DEFAMING +DEFAULT +DEFAULTED +DEFAULTING +DEFAULTS +DEFAZIO +DEFEASANCE +DEFEAT +DEFEATED +DEFEATING +DEFEATIST +DEFEATS +DEFECT +DEFECTED +DEFECTING +DEFECTION +DEFECTIONS +DEFECTIVE +DEFECTOR +DEFECTORS +DEFECTS +DEFENCE +DEFEND +DEFENDANT +DEFENDANT'S +DEFENDANTS +DEFENDANTS' +DEFENDED +DEFENDENTS +DEFENDER +DEFENDER'S +DEFENDERS +DEFENDING +DEFENDS +DEFENSE +DEFENSE'S +DEFENSELESS +DEFENSEMAN +DEFENSEMEN +DEFENSES +DEFENSIBLE +DEFENSIVE +DEFENSIVELY +DEFENSIVENESS +DEFER +DEFERENCE +DEFERENTIAL +DEFERMENT +DEFERMENTS +DEFERRAL +DEFERRALS +DEFERRED +DEFERRING +DEFERS +DEFIANCE +DEFIANT +DEFIANTLY +DEFIBRILLATOR +DEFIBRILLATORS +DEFICIENCIES +DEFICIENCY +DEFICIENT +DEFICIT +DEFICIT'S +DEFICITS +DEFIED +DEFIES +DEFINABLE +DEFINE +DEFINED +DEFINES +DEFINING +DEFINITE +DEFINITELY +DEFINITION +DEFINITIONS +DEFINITIVE +DEFINITIVELY +DEFLATE +DEFLATED +DEFLATING +DEFLATION +DEFLATIONARY +DEFLATOR +DEFLECT +DEFLECTED +DEFLECTING +DEFOLIANT +DEFORD +DEFOREST +DEFORESTATION +DEFORMED +DEFORMITIES +DEFORMITY +DEFRAUD +DEFRAUDED +DEFRAUDING +DEFRAY +DEFROCKED +DEFT +DEFTERIOS +DEFTLY +DEFUNCT +DEFUSE +DEFUSED +DEFUSING +DEFY +DEFYING +DEGAS +DEGENERATE +DEGENERATED +DEGENERATION +DEGENERATIVE +DEGENERES +DEGRADABLE +DEGRADATION +DEGRADE +DEGRADED +DEGRADES +DEGRADING +DEGREE +DEGREES +DEGROOTE +DEGUERIN +DEGUSSA +DEHAENE +DEHERE +DEHUMANIZING +DEHYDRATED +DEHYDRATION +DEI +DEIDRE +DEION +DEIR +DEIRDRE +DEITIES +DEITY +DEJA +DEJECTED +DEJOIE +DEKALB +DEKLERK +DEL +DELACORTE +DELAHOUSSAYE +DELAINE +DELAND +DELANEY +DELANO +DELANY +DELAWARE +DELAWARE'S +DELAY +DELAYED +DELAYING +DELAYS +DELBERT +DELCHAMPS +DELCO +DELECTABLE +DELEGATE +DELEGATED +DELEGATES +DELEGATES' +DELEGATING +DELEGATION +DELEGATION'S +DELEGATIONS +DELEON +DELETE +DELETED +DELETERIOUS +DELETING +DELETION +DELETIONS +DELFT +DELGADO +DELHAIZE +DELHI +DELHI'S +DELI +DELIA +DELIBERATE +DELIBERATED +DELIBERATELY +DELIBERATING +DELIBERATION +DELIBERATIONS +DELIBERATIVE +DELICACIES +DELICACY +DELICATE +DELICATELY +DELICATESSEN +DELICATESSENS +DELICIOUS +DELICIOUSLY +DELIGHT +DELIGHTED +DELIGHTFUL +DELIGHTFULLY +DELIGHTING +DELIGHTS +DELINEATE +DELINEATED +DELINEATION +DELINQUENCIES +DELINQUENCY +DELINQUENT +DELINQUENTS +DELIRIOUS +DELIRIUM +DELISLE +DELIST +DELISTED +DELISTING +DELIVER +DELIVERABLE +DELIVERANCE +DELIVERED +DELIVERIES +DELIVERING +DELIVERS +DELIVERY +DELIVERYMAN +DELL +DELL'S +DELLA +DELLE +DELLIBOVI +DELLINGER +DELLUMS +DELMARVA +DELMAS +DELOACH +DELOITTE +DELONG +DELOREAN +DELORES +DELORS +DELPHI +DELRAY +DELRINA +DELTA +DELTA'S +DELTONA +DELUCA +DELUDE +DELUDED +DELUDING +DELUGE +DELUGED +DELUISE +DELUSION +DELUSIONAL +DELUSIONS +DELUXE +DELVALLE +DELVALLE'S +DELVE +DELVED +DELVES +DELVING +DEM +DEMAGOGIC +DEMAGOGUE +DEMAGOGUERY +DEMAGOGUES +DEMAND +DEMANDED +DEMANDING +DEMANDS +DEMARCATED +DEMARCATION +DEMARCO +DEMAREST +DEMEAN +DEMEANED +DEMEANING +DEMEANOR +DEMEANS +DEMENTED +DEMENTIA +DEMERY +DEMI +DEMILITARIZATION +DEMILITARIZE +DEMILITARIZED +DEMILLE +DEMING +DEMIREL +DEMISCH +DEMISE +DEMJANJUK +DEMJANJUK'S +DEMLER +DEMME +DEMO +DEMOBILIZATION +DEMOBILIZE +DEMOBILIZED +DEMOBILIZING +DEMOCRACIES +DEMOCRACY +DEMOCRACY'S +DEMOCRAT +DEMOCRAT'S +DEMOCRATIC +DEMOCRATICALLY +DEMOCRATIZATION +DEMOCRATIZE +DEMOCRATIZING +DEMOCRATS +DEMOCRATS' +DEMOGRAPHER +DEMOGRAPHERS +DEMOGRAPHIC +DEMOGRAPHICALLY +DEMOGRAPHICS +DEMOGRAPHY +DEMOLISH +DEMOLISHED +DEMOLISHING +DEMOLITION +DEMOLITIONS +DEMON +DEMONIC +DEMONIZATION +DEMONIZE +DEMONIZED +DEMONIZING +DEMONS +DEMONSTRABLE +DEMONSTRABLY +DEMONSTRATE +DEMONSTRATED +DEMONSTRATES +DEMONSTRATING +DEMONSTRATION +DEMONSTRATIONS +DEMONSTRATIVE +DEMONSTRATOR +DEMONSTRATORS +DEMONSTRATORS' +DEMORALIZATION +DEMORALIZE +DEMORALIZED +DEMORALIZING +DEMOS +DEMOSS +DEMOTED +DEMOTION +DEMOTIONS +DEMPSEY +DEMURE +DEMURRED +DEMYSTIFY +DEN +DENA +DENALI +DENARD +DENATIONALIZATION +DENATIONALIZED +DENEUVE +DENG +DENG'S +DENGUE +DENHAM +DENIAL +DENIALS +DENIED +DENIES +DENIGRATE +DENIGRATED +DENIGRATES +DENIGRATING +DENIGRATION +DENIM +DENIRO +DENIS +DENISE +DENISON +DENIZENS +DENKO +DENKTASH +DENLEA +DENMAN +DENMARK +DENMARK'S +DENNEHY +DENNING +DENNIS +DENNISON +DENNY +DENNY'S +DENOBLE +DENOMINATED +DENOMINATION +DENOMINATION'S +DENOMINATIONAL +DENOMINATIONS +DENOMINATOR +DENOTE +DENOTES +DENOUEMENT +DENOUNCE +DENOUNCED +DENOUNCES +DENOUNCING +DENS +DENSE +DENSELY +DENSER +DENSITIES +DENSITY +DENSON +DENT +DENTAL +DENTED +DENTIST +DENTIST'S +DENTISTRY +DENTISTS +DENTON +DENTS +DENTSU +DENTURES +DENUCLEARIZATION +DENUDED +DENUNCIATION +DENUNCIATIONS +DENUNZIO +DENVER +DENVER'S +DENY +DENYING +DENYS +DENZEL +DEO +DEODORANT +DEODORANTS +DEON +DEOXYRIBONUCLEIC +DEP +DEPALMA +DEPARDIEU +DEPARMENT +DEPART +DEPARTED +DEPARTING +DEPARTMENT +DEPARTMENT'S +DEPARTMENTAL +DEPARTMENTS +DEPARTS +DEPARTURE +DEPARTURES +DEPAUL +DEPAUW +DEPEND +DEPENDABILITY +DEPENDABLE +DEPENDED +DEPENDENCE +DEPENDENCY +DEPENDENT +DEPENDENTS +DEPENDING +DEPENDS +DEPICT +DEPICTED +DEPICTING +DEPICTION +DEPICTIONS +DEPICTS +DEPLETE +DEPLETED +DEPLETING +DEPLETION +DEPLORABLE +DEPLORE +DEPLORED +DEPLORES +DEPLORING +DEPLOY +DEPLOYED +DEPLOYING +DEPLOYMENT +DEPLOYMENTS +DEPLOYS +DEPO +DEPORT +DEPORTATION +DEPORTATIONS +DEPORTED +DEPORTEES +DEPORTING +DEPOSE +DEPOSED +DEPOSING +DEPOSIT +DEPOSITARY +DEPOSITED +DEPOSITING +DEPOSITION +DEPOSITIONS +DEPOSITOR +DEPOSITORS +DEPOSITORS' +DEPOSITORY +DEPOSITS +DEPOT +DEPOT'S +DEPOTS +DEPP +DEPRAVED +DEPRAVITY +DEPRECATING +DEPRECIATE +DEPRECIATED +DEPRECIATING +DEPRECIATION +DEPRENYL +DEPRESS +DEPRESSANT +DEPRESSANTS +DEPRESSED +DEPRESSES +DEPRESSING +DEPRESSINGLY +DEPRESSION +DEPRESSIONS +DEPRESSIVE +DEPRIVATION +DEPRIVE +DEPRIVED +DEPRIVES +DEPRIVING +DEPTH +DEPTHS +DEPUTIES +DEPUTIES' +DEPUTY +DEPUTY'S +DER +DERAIL +DERAILED +DERAILING +DERAILMENT +DERAILMENTS +DERANGED +DERBY +DEREGULATE +DEREGULATED +DEREGULATING +DEREGULATION +DEREGULATORY +DEREK +DERELICT +DERELICTION +DERI +DERICKSON +DERIDE +DERIDED +DERIDES +DERIDING +DERISION +DERISIVE +DERISIVELY +DERIVATIVE +DERIVATIVES +DERIVE +DERIVED +DERIVES +DERIVING +DERMATOLOGIST +DERMATOLOGISTS +DERMATOLOGY +DERN +DEROGATORY +DEROSA +DERR +DERRICK +DERRING +DERRY +DERSHOWITZ +DERWINSKI +DERYCK +DES +DESAI +DESALINATION +DESANTIS +DESCEND +DESCENDANT +DESCENDANTS +DESCENDED +DESCENDENT +DESCENDENTS +DESCENDING +DESCENDS +DESCENT +DESCRIBE +DESCRIBED +DESCRIBES +DESCRIBING +DESCRIPTION +DESCRIPTIONS +DESCRIPTIVE +DESECRATE +DESECRATED +DESECRATING +DESECRATION +DESEGREGATE +DESEGREGATED +DESEGREGATION +DESENSITIZED +DESERT +DESERTED +DESERTER +DESERTERS +DESERTING +DESERTION +DESERTIONS +DESERTS +DESERVE +DESERVED +DESERVEDLY +DESERVES +DESERVING +DESHIELDS +DESI +DESIGN +DESIGNATE +DESIGNATED +DESIGNATES +DESIGNATING +DESIGNATION +DESIGNATIONS +DESIGNED +DESIGNER +DESIGNER'S +DESIGNERS +DESIGNERS' +DESIGNING +DESIGNS +DESILLERS +DESIRABILITY +DESIRABLE +DESIRE +DESIRED +DESIREE +DESIRES +DESIRING +DESIROUS +DESIST +DESK +DESKPRO +DESKS +DESKTOP +DESKTOPS +DESMARAIS +DESMOND +DESOLATE +DESOLATION +DESORMEAUX +DESOTO +DESPAIR +DESPAIRED +DESPAIRING +DESPERATE +DESPERATELY +DESPERATION +DESPICABLE +DESPISE +DESPISED +DESPISES +DESPITE +DESPONDENT +DESPOT +DESPOTIC +DESPOTISM +DESPOTS +DESSALINES +DESSERT +DESSERTS +DESTABILIZATION +DESTABILIZE +DESTABILIZED +DESTABILIZING +DESTEC +DESTEFANO +DESTIN +DESTINATION +DESTINATIONS +DESTINED +DESTINIES +DESTINY +DESTITUTE +DESTROY +DESTROYED +DESTROYER +DESTROYERS +DESTROYING +DESTROYS +DESTRUCT +DESTRUCTION +DESTRUCTIVE +DESTRUCTIVENESS +DESULTORY +DET +DETACH +DETACHABLE +DETACHED +DETACHMENT +DETACHMENTS +DETAIL +DETAILED +DETAILING +DETAILS +DETAIN +DETAINED +DETAINEE +DETAINEES +DETAINING +DETECT +DETECTABLE +DETECTED +DETECTING +DETECTION +DETECTIVE +DETECTIVE'S +DETECTIVES +DETECTOR +DETECTORS +DETECTS +DETENTE +DETENTION +DETENTIONS +DETER +DETERGENT +DETERGENTS +DETERIORATE +DETERIORATED +DETERIORATES +DETERIORATING +DETERIORATION +DETERMINANT +DETERMINANTS +DETERMINATION +DETERMINATIONS +DETERMINE +DETERMINED +DETERMINEDLY +DETERMINES +DETERMINING +DETERRED +DETERRENCE +DETERRENT +DETERRENTS +DETERRING +DETERS +DETEST +DETESTED +DETHRONED +DETLEF +DETMER +DETONATE +DETONATED +DETONATING +DETONATION +DETONATIONS +DETONATOR +DETONATORS +DETOUR +DETOURED +DETOURS +DETOX +DETOXIFICATION +DETRACT +DETRACTED +DETRACTORS +DETRACTS +DETRICK +DETRIMENT +DETRIMENTAL +DETRITUS +DETROIT +DETROIT'S +DEUCE +DEUKMEJIAN +DEUKMEJIAN'S +DEUTCH +DEUTCH'S +DEUTERIUM +DEUTSCH +DEUTSCHE +DEUTSCHEMARK +DEUTSCHLAND +DEUTZ +DEUX +DEV +DEVAL +DEVALL +DEVALUATION +DEVALUATIONS +DEVALUE +DEVALUED +DEVALUING +DEVANEY +DEVASTATE +DEVASTATED +DEVASTATING +DEVASTATINGLY +DEVASTATION +DEVELOP +DEVELOPED +DEVELOPER +DEVELOPER'S +DEVELOPERS +DEVELOPERS' +DEVELOPING +DEVELOPMENT +DEVELOPMENT'S +DEVELOPMENTAL +DEVELOPMENTALLY +DEVELOPMENTS +DEVELOPS +DEVENS +DEVEREAUX +DEVI +DEVIANT +DEVIATE +DEVIATED +DEVIATING +DEVIATION +DEVIATIONS +DEVICE +DEVICE'S +DEVICES +DEVIL +DEVIL'S +DEVILISH +DEVILLE +DEVILS +DEVILS' +DEVIN +DEVINE +DEVIOUS +DEVISE +DEVISED +DEVISES +DEVISING +DEVITA +DEVITO +DEVLIN +DEVOE +DEVOID +DEVOLUTION +DEVOLVE +DEVON +DEVORE +DEVOTE +DEVOTED +DEVOTEE +DEVOTEES +DEVOTES +DEVOTING +DEVOTION +DEVOTIONAL +DEVOUR +DEVOURED +DEVOURING +DEVOUT +DEVOUTLY +DEVRIES +DEW +DEWAR'S +DEWAYNE +DEWEY +DEWHURST +DEWINE +DEWITT +DEXTER +DEXTERITY +DEY +DEZHUROV +DHABI +DHAHRAN +DHAKA +DHLAKAMA +DI +DIA +DIABETES +DIABETIC +DIABETICS +DIABLO +DIABOLICAL +DIAGNOSE +DIAGNOSED +DIAGNOSES +DIAGNOSING +DIAGNOSIS +DIAGNOSTEK +DIAGNOSTIC +DIAGNOSTICS +DIAGONAL +DIAGONALLY +DIAGRAM +DIAGRAMMED +DIAGRAMS +DIAL +DIALECT +DIALECTS +DIALED +DIALING +DIALOG +DIALOGUE +DIALOGUES +DIALS +DIALYSIS +DIAMANDIS +DIAMANTE +DIAMETER +DIAMETRICALLY +DIAMOND +DIAMOND'S +DIAMONDBACKS +DIAMONDS +DIAN +DIANA +DIANA'S +DIANE +DIANNA +DIANNE +DIAPER +DIAPERS +DIAPHRAGM +DIARIES +DIARIO +DIARRHEA +DIARRHEAL +DIARY +DIAS +DIASONICS +DIASPORA +DIATRIBE +DIATRIBES +DIAZ +DIBBLE +DIBONA +DIBRELL +DICAMILLO +DICE +DICED +DICEON +DICEY +DICHOTOMY +DICK +DICK'S +DICKENS +DICKENS' +DICKENSIAN +DICKENSON +DICKER +DICKERING +DICKERSON +DICKEY +DICKIE +DICKINSON +DICKS +DICKSON +DICKSTEIN +DICTATE +DICTATED +DICTATES +DICTATING +DICTATION +DICTATOR +DICTATOR'S +DICTATORIAL +DICTATORS +DICTATORSHIP +DICTATORSHIPS +DICTION +DICTIONARIES +DICTIONARY +DICTUM +DID +DIDACTIC +DIDDLEY +DIDIER +DIDN'T +DIE +DIEBOLD +DIED +DIEGO +DIEGO'S +DIEHARD +DIEHL +DIEM +DIEN +DIENER +DIENSTBIER +DIERDORF +DIERY +DIES +DIESEL +DIESTEL +DIET +DIETARY +DIETER +DIETERS +DIETETIC +DIETING +DIETITIAN +DIETITIANS +DIETRICH +DIETS +DIETZ +DIFF'RENT +DIFFER +DIFFERED +DIFFERENCE +DIFFERENCES +DIFFERENT +DIFFERENTIAL +DIFFERENTIALS +DIFFERENTIATE +DIFFERENTIATED +DIFFERENTIATES +DIFFERENTIATING +DIFFERENTIATION +DIFFERENTLY +DIFFERING +DIFFERS +DIFFICULT +DIFFICULTIES +DIFFICULTY +DIFFUSE +DIFFUSED +DIFFUSION +DIG +DIGENNARO +DIGENOVA +DIGEST +DIGESTED +DIGESTING +DIGESTION +DIGESTIVE +DIGGER +DIGGERS +DIGGING +DIGGS +DIGIT +DIGITAL +DIGITAL'S +DIGITALLY +DIGITIZED +DIGITS +DIGNIFIED +DIGNIFY +DIGNITARIES +DIGNITARY +DIGNITY +DIGS +DIJON +DIKE +DIKEMBE +DIKES +DILAPIDATED +DILEMMA +DILEMMAS +DILENSCHNEIDER +DILI +DILIGENCE +DILIGENT +DILIGENTLY +DILL +DILLARD +DILLARD'S +DILLEN +DILLER +DILLER'S +DILLINGER +DILLINGHAM +DILLON +DILLON'S +DILORENZO +DILSON +DILUTE +DILUTED +DILUTES +DILUTING +DILUTION +DILUTIVE +DIM +DIMAGGIO +DIMAITI +DIMANCHE +DIMAS +DIMBLEBY +DIME +DIME'S +DIMENSION +DIMENSIONAL +DIMENSIONS +DIMES +DIMINISH +DIMINISHED +DIMINISHES +DIMINISHING +DIMINUTION +DIMINUTIVE +DIMITRI +DIMITRIOS +DIMITRIUS +DIMLY +DIMMED +DIMMER +DIMMING +DIMONA +DIMOND +DIMPLES +DIN +DINA +DINAH +DINAR +DINARS +DINE +DINED +DINEEN +DINER +DINERS +DINES +DINESH +DING +DINGELL +DINGELL'S +DINGHIES +DINGHY +DINGMAN +DINGY +DINH +DINI +DINING +DINKINS +DINKINS' +DINNER +DINNERS +DINNERWARE +DINO +DINOSAUR +DINOSAURS +DINSA +DINT +DIOCESAN +DIOCESE +DIOCESES +DIOGUARDI +DION +DIONNE +DIOR +DIOS +DIOUF +DIOXIDE +DIOXIN +DIOXINS +DIP +DIPHTHERIA +DIPLOMA +DIPLOMACY +DIPLOMAS +DIPLOMAT +DIPLOMAT'S +DIPLOMATIC +DIPLOMATICALLY +DIPLOMATS +DIPPED +DIPPER +DIPPING +DIPRETE +DIPS +DIRE +DIRECT +DIRECTED +DIRECTING +DIRECTION +DIRECTIONAL +DIRECTIONLESS +DIRECTIONS +DIRECTIVE +DIRECTIVES +DIRECTLY +DIRECTNESS +DIRECTOR +DIRECTOR'S +DIRECTORATE +DIRECTORIAL +DIRECTORIES +DIRECTORS +DIRECTORS' +DIRECTORSHIP +DIRECTORSHIPS +DIRECTORY +DIRECTS +DIRECTV +DIRIDON +DIRK +DIRKS +DIRKSEN +DIRT +DIRTIER +DIRTIEST +DIRTY +DIS +DISABILITIES +DISABILITY +DISABLE +DISABLED +DISABLING +DISADVANTAGE +DISADVANTAGED +DISADVANTAGEOUS +DISADVANTAGES +DISAFFECTED +DISAFFECTION +DISAGREE +DISAGREEABLE +DISAGREED +DISAGREEING +DISAGREEMENT +DISAGREEMENTS +DISAGREES +DISALLOW +DISALLOWANCE +DISALLOWED +DISALLOWING +DISAPPEAR +DISAPPEARANCE +DISAPPEARANCES +DISAPPEARED +DISAPPEARING +DISAPPEARS +DISAPPOINT +DISAPPOINTED +DISAPPOINTING +DISAPPOINTINGLY +DISAPPOINTMENT +DISAPPOINTMENTS +DISAPPOINTS +DISAPPROVAL +DISAPPROVE +DISAPPROVED +DISAPPROVES +DISAPPROVING +DISARM +DISARMAMENT +DISARMED +DISARMING +DISARMINGLY +DISARRAY +DISASSEMBLED +DISASSOCIATE +DISASSOCIATED +DISASTER +DISASTERS +DISASTROUS +DISASTROUSLY +DISAVOW +DISAVOWED +DISAVOWING +DISBAND +DISBANDED +DISBANDING +DISBARMENT +DISBARRED +DISBELIEF +DISBELIEVE +DISBELIEVING +DISBURSE +DISBURSED +DISBURSEMENT +DISBURSEMENTS +DISBURSING +DISC +DISCARD +DISCARDED +DISCARDING +DISCARDS +DISCERN +DISCERNED +DISCERNIBLE +DISCERNING +DISCHARGE +DISCHARGED +DISCHARGES +DISCHARGING +DISCIPLE +DISCIPLES +DISCIPLINARIAN +DISCIPLINARY +DISCIPLINE +DISCIPLINED +DISCIPLINES +DISCIPLINING +DISCLAIMED +DISCLAIMER +DISCLAIMERS +DISCLOSE +DISCLOSED +DISCLOSES +DISCLOSING +DISCLOSURE +DISCLOSURES +DISCMAN +DISCO +DISCOLORATION +DISCOLORED +DISCOMFORT +DISCONCERTING +DISCONNECT +DISCONNECTED +DISCONNECTING +DISCONTENT +DISCONTENTED +DISCONTINUATION +DISCONTINUE +DISCONTINUED +DISCONTINUING +DISCORD +DISCORDANT +DISCOS +DISCOTHEQUE +DISCOUNT +DISCOUNTED +DISCOUNTER +DISCOUNTERS +DISCOUNTING +DISCOUNTS +DISCOURAGE +DISCOURAGED +DISCOURAGEMENT +DISCOURAGES +DISCOURAGING +DISCOURSE +DISCOVER +DISCOVERABLE +DISCOVERED +DISCOVERER +DISCOVERERS +DISCOVERIES +DISCOVERING +DISCOVERS +DISCOVERY +DISCOVERY'S +DISCREDIT +DISCREDITED +DISCREDITING +DISCREET +DISCREETLY +DISCREPANCIES +DISCREPANCY +DISCRETE +DISCRETION +DISCRETIONARY +DISCRIMINATE +DISCRIMINATED +DISCRIMINATES +DISCRIMINATING +DISCRIMINATION +DISCRIMINATORY +DISCS +DISCUS +DISCUSS +DISCUSSED +DISCUSSES +DISCUSSING +DISCUSSION +DISCUSSIONS +DISDAIN +DISDAINED +DISDAINFUL +DISDAINS +DISEASE +DISEASE'S +DISEASED +DISEASES +DISEMBARK +DISEMBARKED +DISEMBODIED +DISENCHANTED +DISENCHANTMENT +DISENFRANCHISED +DISENGAGE +DISENGAGED +DISENGAGEMENT +DISFAVOR +DISFIGURED +DISFIGUREMENT +DISFIGURING +DISGORGE +DISGORGED +DISGORGEMENT +DISGRACE +DISGRACED +DISGRACEFUL +DISGRUNTLED +DISGUISE +DISGUISED +DISGUISES +DISGUISING +DISGUST +DISGUSTED +DISGUSTING +DISH +DISHARMONY +DISHEARTENED +DISHEARTENING +DISHED +DISHES +DISHEVELED +DISHING +DISHONEST +DISHONESTY +DISHONOR +DISHONORABLE +DISHONORABLY +DISHWASHER +DISHWASHERS +DISHWASHING +DISILLUSION +DISILLUSIONED +DISILLUSIONMENT +DISINCENTIVE +DISINCENTIVES +DISINCLINED +DISINFECTANT +DISINFLATION +DISINFORMATION +DISINGENUOUS +DISINTEGRATE +DISINTEGRATED +DISINTEGRATES +DISINTEGRATING +DISINTEGRATION +DISINTEREST +DISINTERESTED +DISINVESTMENT +DISJOINTED +DISK +DISKETTE +DISKETTES +DISKS +DISLIKE +DISLIKED +DISLIKES +DISLOCATED +DISLOCATION +DISLOCATIONS +DISLODGE +DISLODGED +DISLODGING +DISLOYAL +DISLOYALTY +DISMAL +DISMALLY +DISMANTLE +DISMANTLED +DISMANTLEMENT +DISMANTLES +DISMANTLING +DISMAY +DISMAYED +DISMAYING +DISMEMBER +DISMEMBERED +DISMEMBERING +DISMEMBERMENT +DISMISS +DISMISSAL +DISMISSALS +DISMISSED +DISMISSES +DISMISSING +DISMISSIVE +DISNEY +DISNEY'S +DISNEYLAND +DISOBEDIENCE +DISOBEY +DISOBEYED +DISOBEYING +DISORDER +DISORDERED +DISORDERLY +DISORDERS +DISORGANIZATION +DISORGANIZED +DISORIENTATION +DISORIENTED +DISORIENTING +DISOWNED +DISPARAGE +DISPARAGED +DISPARAGING +DISPARATE +DISPARITIES +DISPARITY +DISPASSIONATE +DISPASSIONATELY +DISPATCH +DISPATCHED +DISPATCHER +DISPATCHERS +DISPATCHES +DISPATCHING +DISPEL +DISPELLED +DISPELLING +DISPENSATION +DISPENSE +DISPENSED +DISPENSER +DISPENSERS +DISPENSES +DISPENSING +DISPERSAL +DISPERSANTS +DISPERSE +DISPERSED +DISPERSING +DISPIRITED +DISPIRITING +DISPLACE +DISPLACED +DISPLACEMENT +DISPLACING +DISPLAY +DISPLAYED +DISPLAYING +DISPLAYS +DISPLEASED +DISPLEASURE +DISPOSABLE +DISPOSABLES +DISPOSAL +DISPOSALS +DISPOSE +DISPOSED +DISPOSES +DISPOSING +DISPOSITION +DISPOSITIONS +DISPOSSESSED +DISPROPORTIONATE +DISPROPORTIONATELY +DISPROVE +DISPROVED +DISPUTE +DISPUTED +DISPUTES +DISPUTING +DISQUALIFICATION +DISQUALIFIED +DISQUALIFIES +DISQUALIFY +DISQUALIFYING +DISQUIET +DISQUIETING +DISREGARD +DISREGARDED +DISREGARDING +DISREGARDS +DISREPAIR +DISREPUTABLE +DISREPUTE +DISRESPECT +DISRESPECTFUL +DISRUPT +DISRUPTED +DISRUPTING +DISRUPTION +DISRUPTIONS +DISRUPTIVE +DISRUPTS +DISSANAYAKE +DISSATISFACTION +DISSATISFIED +DISSECT +DISSECTED +DISSECTING +DISSECTION +DISSEMINATE +DISSEMINATED +DISSEMINATING +DISSEMINATION +DISSENSION +DISSENT +DISSENTED +DISSENTER +DISSENTERS +DISSENTING +DISSENTS +DISSERTATION +DISSERVICE +DISSIDENT +DISSIDENTS +DISSIDENTS' +DISSIMILAR +DISSIPATE +DISSIPATED +DISSIPATES +DISSIPATING +DISSOCIATE +DISSOLUTION +DISSOLVE +DISSOLVED +DISSOLVES +DISSOLVING +DISSONANCE +DISSONANT +DISSUADE +DISSUADED +DISTAFF +DISTANCE +DISTANCED +DISTANCES +DISTANCING +DISTANT +DISTASTE +DISTASTEFUL +DISTILL +DISTILLATE +DISTILLATES +DISTILLATION +DISTILLED +DISTILLER +DISTILLERIES +DISTILLERS +DISTILLERY +DISTILLING +DISTINCT +DISTINCTION +DISTINCTIONS +DISTINCTIVE +DISTINCTIVELY +DISTINCTLY +DISTINGUISH +DISTINGUISHABLE +DISTINGUISHED +DISTINGUISHES +DISTINGUISHING +DISTORT +DISTORTED +DISTORTING +DISTORTION +DISTORTIONS +DISTORTS +DISTRACT +DISTRACTED +DISTRACTING +DISTRACTION +DISTRACTIONS +DISTRACTS +DISTRAUGHT +DISTRESS +DISTRESSED +DISTRESSING +DISTRIBUTE +DISTRIBUTED +DISTRIBUTES +DISTRIBUTING +DISTRIBUTION +DISTRIBUTIONS +DISTRIBUTOR +DISTRIBUTOR'S +DISTRIBUTORS +DISTRIBUTORS' +DISTRIBUTORSHIP +DISTRICT +DISTRICT'S +DISTRICTING +DISTRICTS +DISTRUST +DISTRUSTED +DISTRUSTFUL +DISTURB +DISTURBANCE +DISTURBANCES +DISTURBED +DISTURBING +DISTURBINGLY +DISTURBS +DISUNITY +DISUSED +DITCH +DITCHED +DITCHES +DITCHING +DITHERING +DITKA +DITLOW +DITTO +DITTY +DIURETIC +DIURETICS +DIVA +DIVAC +DIVALL +DIVE +DIVED +DIVER +DIVERGE +DIVERGED +DIVERGENCE +DIVERGENT +DIVERGING +DIVERS +DIVERSE +DIVERSIFICATION +DIVERSIFIED +DIVERSIFY +DIVERSIFYING +DIVERSION +DIVERSIONARY +DIVERSIONS +DIVERSITY +DIVERT +DIVERTED +DIVERTING +DIVERTS +DIVES +DIVEST +DIVESTED +DIVESTING +DIVESTITURE +DIVESTITURES +DIVESTMENT +DIVESTMENTS +DIVIDE +DIVIDED +DIVIDEND +DIVIDENDS +DIVIDER +DIVIDES +DIVIDING +DIVINE +DIVINELY +DIVING +DIVINITY +DIVISION +DIVISION'S +DIVISIONAL +DIVISIONS +DIVISIVE +DIVISIVENESS +DIVISON +DIVORCE +DIVORCED +DIVORCEE +DIVORCES +DIVORCING +DIVULGE +DIVULGED +DIVULGING +DIVVIED +DIVVY +DIX +DIXIE +DIXIELAND +DIXON +DIXON'S +DIXONS +DIXVILLE +DIYAR +DIYARBAKIR +DIZENGOFF +DIZZINESS +DIZZY +DIZZYING +DJIBOUTI +DJILAS +DJURDJEVIC +DMITRI +DMITRY +DNASE +DNIESTER +DO +DO'S +DOABLE +DOAK +DOBBINS +DOBBS +DOBERMAN +DOBIE +DOBRINJA +DOBRYNIN +DOBSON +DOC +DOCILE +DOCK +DOCKED +DOCKERS +DOCKERY +DOCKET +DOCKETS +DOCKING +DOCKLANDS +DOCKS +DOCKSIDE +DOCKWORKERS +DOCS +DOCTOR +DOCTOR'S +DOCTORAL +DOCTORATE +DOCTORATES +DOCTORED +DOCTORING +DOCTOROW +DOCTORS +DOCTORS' +DOCTRINAIRE +DOCTRINAL +DOCTRINE +DOCTRINES +DOCUDRAMA +DOCUMENT +DOCUMENT'S +DOCUMENTARIES +DOCUMENTARY +DOCUMENTATION +DOCUMENTED +DOCUMENTING +DOCUMENTS +DODD +DODD'S +DODDS +DODGE +DODGE'S +DODGED +DODGER +DODGERS +DODGERS' +DODGES +DODGING +DODSON +DOE +DOE'S +DOER +DOERR +DOERS +DOES +DOESN'T +DOFASCO +DOG +DOG'S +DOGFIGHT +DOGFIGHTS +DOGG +DOGGED +DOGGEDLY +DOGGETT +DOGGIE +DOGGING +DOGGONE +DOGGY +DOGHOUSE +DOGMA +DOGMATIC +DOGS +DOGS' +DOGWOOD +DOHERTY +DOHERTY'S +DOHUK +DOI +DOIN' +DOING +DOINGS +DOLAN +DOLBY +DOLCE +DOLDRUMS +DOLE +DOLE'S +DOLED +DOLES +DOLGEN +DOLING +DOLL +DOLL'S +DOLLAR +DOLLAR'S +DOLLARS +DOLLARS' +DOLLOP +DOLLS +DOLLY +DOLORES +DOLPHIN +DOLPHINS +DOLPHINS' +DOM +DOMAIN +DOMAINE +DOMAINS +DOME +DOME'S +DOMED +DOMENICI +DOMENICI'S +DOMENICO +DOMES +DOMESTIC +DOMESTICALLY +DOMESTICATED +DOMESTICS +DOMICILE +DOMINANCE +DOMINANT +DOMINATE +DOMINATED +DOMINATES +DOMINATING +DOMINATION +DOMINEERING +DOMINGO +DOMINGUEZ +DOMINIC +DOMINICA +DOMINICAN +DOMINICANS +DOMINICK +DOMINION +DOMINION'S +DOMINIQUE +DOMINO +DOMINO'S +DOMINOES +DOMINUS +DOMTAR +DON +DON'S +DON'T +DON'TS +DONA +DONAHUE +DONAHUE'S +DONALD +DONALD'S +DONALDO +DONALDSON +DONALDSON'S +DONATE +DONATED +DONATES +DONATING +DONATION +DONATIONS +DONATO +DONE +DONER +DONETSK +DONG +DONIGER +DONKEY +DONKEYS +DONLEY +DONN +DONNA +DONNAS +DONNED +DONNELL +DONNELLEY +DONNELLY +DONNER +DONNIE +DONNING +DONNY +DONNYBROOK +DONOFRIO +DONOGHUE +DONOGHUE'S +DONOHOE +DONOHUE +DONOR +DONOR'S +DONORS +DONORS' +DONOVAN +DONS +DONUT +DONUTS +DONVAN +DOO +DOOBIE +DOODLE +DOODLES +DOODY +DOOGIE +DOOLEY +DOOLITTLE +DOOM +DOOMED +DOOMING +DOOMS +DOOMSAYERS +DOOMSDAY +DOON +DOONESBURY +DOOR +DOOR'S +DOORBELL +DOORDARSHAN +DOORKNOB +DOORMAN +DOORMEN +DOORS +DOORSTEP +DOORSTEPS +DOORWAY +DOORWAYS +DOPAMINE +DOPE +DOPEY +DOPING +DOPPLER +DORA +DORADO +DORAL +DORAN +DORAVILLE +DORCAS +DORCHESTER +DORE +DOREEN +DOREN +DORFMAN +DORGAN +DORIA +DORIAN +DORIS +DORITOS +DORM +DORMAN +DORMANCY +DORMANT +DORMITORIES +DORMITORY +DORMS +DORN +DORNACKER +DORNAN +DORNAN'S +DORNBUSCH +DORNIER +DORNIN +DORON +DOROTHEA +DOROTHY +DORR +DORRANCE +DORSET +DORSETT +DORSEY +DORTCH +DORTMUND +DORY +DOS +DOSAGE +DOSAGES +DOSE +DOSES +DOSKOCIL +DOSSIER +DOSSIERS +DOT +DOTAN +DOTHAN +DOTING +DOTS +DOTSON +DOTTED +DOTTIE +DOTTING +DOTY +DOUBLE +DOUBLED +DOUBLEDAY +DOUBLEHEADER +DOUBLES +DOUBLESPEAK +DOUBLETREE +DOUBLING +DOUBLY +DOUBT +DOUBTED +DOUBTERS +DOUBTFIRE +DOUBTFUL +DOUBTING +DOUBTLESS +DOUBTS +DOUG +DOUGH +DOUGHERTY +DOUGHNUT +DOUGHNUTS +DOUGHTY +DOUGLAS +DOUGLAS' +DOUGLAS'S +DOUGLASS +DOUR +DOUSE +DOUSED +DOUSING +DOV +DOVE +DOVER +DOVES +DOVETAIL +DOVETAILS +DOVISH +DOW +DOW'S +DOWAGER +DOWD +DOWDY +DOWELL +DOWLING +DOWN +DOWN'S +DOWNBEAT +DOWNCAST +DOWNDRAFT +DOWNE +DOWNED +DOWNER +DOWNERS +DOWNEY +DOWNEY'S +DOWNFALL +DOWNFIELD +DOWNGRADE +DOWNGRADED +DOWNGRADES +DOWNGRADING +DOWNGRADINGS +DOWNHILL +DOWNING +DOWNLOAD +DOWNLOADED +DOWNLOADING +DOWNPAYMENT +DOWNPLAY +DOWNPLAYED +DOWNPLAYING +DOWNPLAYS +DOWNPOUR +DOWNPOURS +DOWNRIGHT +DOWNRIVER +DOWNS +DOWNSCALE +DOWNSIDE +DOWNSIZE +DOWNSIZED +DOWNSIZING +DOWNSTAIRS +DOWNSTATE +DOWNSTREAM +DOWNSWING +DOWNTIME +DOWNTOWN +DOWNTOWN'S +DOWNTOWNS +DOWNTREND +DOWNTRODDEN +DOWNTURN +DOWNTURNS +DOWNWARD +DOWNWARDS +DOWNWIND +DOWRY +DOYLE +DOYLE'S +DOZE +DOZED +DOZEN +DOZENS +DOZIER +DOZING +DRAB +DRABEK +DRABINSKY +DRACHMAS +DRACONIAN +DRACULA +DRAEGER'S +DRAFT +DRAFTED +DRAFTEES +DRAFTERS +DRAFTING +DRAFTS +DRAFTSMAN +DRAFTY +DRAG +DRAGGED +DRAGGING +DRAGNET +DRAGO +DRAGON +DRAGONAIR +DRAGONS +DRAGS +DRAHUSCHAK +DRAIN +DRAINAGE +DRAINED +DRAINING +DRAINS +DRAISE +DRAKE +DRAKE'S +DRAM +DRAMA +DRAMAS +DRAMATIC +DRAMATICALLY +DRAMATIST +DRAMATIZATION +DRAMATIZE +DRAMATIZED +DRAMATIZES +DRAMATIZING +DRAMS +DRANK +DRAPE +DRAPED +DRAPER +DRAPERIES +DRAPERY +DRAPES +DRAPING +DRASKOVIC +DRASTIC +DRASTICALLY +DRAVECKY +DRAVO +DRAW +DRAWBACK +DRAWBACKS +DRAWBRIDGE +DRAWDOWN +DRAWDOWNS +DRAWER +DRAWERS +DRAWING +DRAWINGS +DRAWL +DRAWN +DRAWS +DRAYTON +DREAD +DREADED +DREADFUL +DREADFULLY +DREADING +DREADLOCKS +DREADS +DREAM +DREAMED +DREAMER +DREAMERS +DREAMING +DREAMLAND +DREAMLIKE +DREAMS +DREAMT +DREAMWORKS +DREAMY +DREARY +DREDD +DREDGE +DREDGED +DREDGING +DREGS +DREIER +DREMAN +DRENCHED +DRENCHING +DRESCHER +DRESDEN +DRESDNER +DRESS +DRESSED +DRESSER +DRESSERS +DRESSES +DRESSING +DRESSINGS +DRESSY +DREW +DREW'S +DREXEL +DREXEL'S +DREXLER +DREYER +DREYER'S +DREYFUS +DREYFUS'S +DREYFUSS +DRIBBLE +DRIBBLED +DRIBBLING +DRIED +DRIER +DRIES +DRIEST +DRIFT +DRIFTED +DRIFTER +DRIFTERS +DRIFTING +DRIFTNET +DRIFTNETS +DRIFTS +DRIFTWOOD +DRIGGS +DRILL +DRILLED +DRILLER +DRILLERS +DRILLING +DRILLS +DRINA +DRINAN +DRINK +DRINKABLE +DRINKER +DRINKERS +DRINKING +DRINKS +DRIP +DRIPPED +DRIPPING +DRIPS +DRISCOLL +DRIVE +DRIVEL +DRIVEN +DRIVER +DRIVER'S +DRIVERS +DRIVERS' +DRIVES +DRIVEWAY +DRIVEWAYS +DRIVING +DRIZZLE +DRIZZLY +DRNOVSEK +DROGOUL +DROLL +DROLLET +DROMI +DRONE +DRONED +DRONES +DRONING +DROOL +DROOLING +DROOPING +DROOPY +DROP +DROPLETS +DROPOFF +DROPOUT +DROPOUTS +DROPPED +DROPPING +DROPPINGS +DROPS +DROUGHT +DROUGHT'S +DROUGHTS +DROVE +DROVES +DROWN +DROWNED +DROWNING +DROWNINGS +DROWNS +DROWSINESS +DROWSY +DRUBBING +DRUCKER +DRUDGERY +DRUG +DRUG'S +DRUGGED +DRUGGING +DRUGMAKER +DRUGS +DRUGS' +DRUGSTORE +DRUGSTORES +DRUM +DRUMBEAT +DRUMMED +DRUMMER +DRUMMERS +DRUMMING +DRUMMOND +DRUMS +DRUNK +DRUNKEN +DRUNKENNESS +DRUNKS +DRURY +DRUSE +DRUTHERS +DRY +DRYDEN +DRYDOCK +DRYER +DRYERS +DRYING +DRYLY +DRYNESS +DRYPERS +DRYSDALE +DRYWALL +DU +DUAL +DUALITY +DUAN +DUANE +DUARTE +DUARTE'S +DUB +DUBAI +DUBBED +DUBBING +DUBCEK +DUBCEK'S +DUBE +DUBERSTEIN +DUBILIER +DUBIN +DUBININ +DUBINSKY +DUBIOUS +DUBLIN +DUBLIN'S +DUBOIS +DUBROVNIK +DUBS +DUBUQUE +DUC +DUCEY +DUCHAMP +DUCHESS +DUCHY +DUCK +DUCKED +DUCKING +DUCKLING +DUCKLINGS +DUCKS +DUCKWORTH +DUCOMMUN +DUCT +DUCTS +DUD +DUDACK +DUDAYEV +DUDAYEV'S +DUDE +DUDES +DUDLEY +DUDS +DUE +DUEL +DUELED +DUELING +DUELS +DUES +DUESSELDORF +DUET +DUETS +DUFF +DUFFEL +DUFFEY +DUFFY +DUG +DUGAN +DUGGAN +DUGGER +DUGOUT +DUGWAY +DUISBURG +DUKAKIS +DUKAKIS' +DUKAKIS'S +DUKE +DUKE'S +DUKES +DULL +DULLED +DULLER +DULLES +DULLNESS +DULMAGE +DULUTH +DULY +DUM +DUMA +DUMARS +DUMAS +DUMB +DUMBARTON +DUMBER +DUMBEST +DUMBFOUNDED +DUMBING +DUMBO +DUMENIL +DUMEZ +DUMITRU +DUMMIES +DUMMY +DUMONT +DUMP +DUMPED +DUMPERS +DUMPING +DUMPLINGS +DUMPS +DUMPSTER +DUMPSTERS +DUMPTY +DUN +DUNAWAY +DUNBAR +DUNBLANE +DUNCAN +DUNCAN'S +DUNCE +DUNDEE +DUNE +DUNEDIN +DUNEM +DUNES +DUNG +DUNGEON +DUNGEONS +DUNHAM +DUNHILL +DUNK +DUNKED +DUNKEL +DUNKELBERG +DUNKIN +DUNKIN' +DUNKING +DUNKIRK +DUNKLE +DUNKS +DUNLAP +DUNLEAVY +DUNLOP +DUNN +DUNN'S +DUNNE +DUNNE'S +DUNNING +DUNPHY +DUNSMORE +DUNSMUIR +DUNTON +DUO +DUO'S +DUOPOLY +DUPAGE +DUPE +DUPED +DUPERVAL +DUPLEX +DUPLICATE +DUPLICATED +DUPLICATES +DUPLICATING +DUPLICATION +DUPLICATIVE +DUPLICITOUS +DUPLICITY +DUPONT +DUPONT'S +DUPREE +DUPUY +DUQUE +DUQUESNE +DUQUETTE +DURABILITY +DURABLE +DURABLES +DURACELL +DURACELL'S +DURAKON +DURAMED +DURAN +DURAN'S +DURAND +DURANGO +DURANT +DURANTE +DURATION +DURBAN +DURBIN +DURENBERGER +DURENBERGER'S +DURESS +DURHAM +DURING +DURIRON +DURKIN +DURNING +DURO +DUROCHER +DURR +DURRANCE +DURRES +DURST +DURUM +DUSAN +DUSHANBE +DUSK +DUSKY +DUSSELDORF +DUST +DUSTBIN +DUSTED +DUSTER +DUSTIN +DUSTING +DUSTY +DUTCH +DUTCHESS +DUTCHMAN +DUTIES +DUTIFUL +DUTIFULLY +DUTRA +DUTTON +DUTY +DUVA +DUVAL +DUVALIER +DUVALIER'S +DUVALIERS +DUVALL +DVORAK +DWARF +DWARFED +DWARFING +DWARFISM +DWARFS +DWAYNE +DWELL +DWELLED +DWELLER +DWELLERS +DWELLING +DWELLINGS +DWELLS +DWELT +DWIGHT +DWINDLE +DWINDLED +DWINDLES +DWINDLING +DWORIN +DWORKIN +DWYER +DYAZIDE +DYE +DYED +DYER +DYES +DYESS +DYING +DYK +DYKE +DYKES +DYKSTRA +DYLAN +DYLAN'S +DYLEX +DYMALLY +DYNAMIC +DYNAMICS +DYNAMICS' +DYNAMICS'S +DYNAMISM +DYNAMITE +DYNAMITED +DYNAMO +DYNASTIC +DYNASTIES +DYNASTY +DYNCORP +DYSENTERY +DYSFUNCTION +DYSFUNCTIONAL +DYSLEXIA +DYSLEXIC +DYSON +DYSTROPHIN +DYSTROPHY +DZERZHINSKY +DZHOKHAR +E. +E.'S +E.S +EACH +EADS +EAGAN +EAGER +EAGERLY +EAGERNESS +EAGLE +EAGLE'S +EAGLEBURGER +EAGLES +EAGLES' +EAGLETON +EAKINS +EAKLE +EAMER +EAMES +EAR +EARED +EARFUL +EARHART +EARL +EARLE +EARLEY +EARLIER +EARLIER'S +EARLIEST +EARLY +EARMARK +EARMARKED +EARMARKING +EARMARKS +EARN +EARNED +EARNER +EARNERS +EARNEST +EARNESTLY +EARNESTNESS +EARNHARDT +EARNING +EARNINGS +EARNS +EARP +EARPHONES +EARPLUGS +EARRING +EARRINGS +EARS +EARSHOT +EARTH +EARTH'S +EARTHBOUND +EARTHEN +EARTHLINGS +EARTHLY +EARTHQUAKE +EARTHQUAKE'S +EARTHQUAKES +EARTHY +EARVIN +EASE +EASED +EASEL +EASEMENT +EASEMENTS +EASES +EASIER +EASIEST +EASILY +EASING +EASLEY +EASON +EAST +EAST'S +EASTBOUND +EASTER +EASTERBROOK +EASTERLY +EASTERN +EASTERN'S +EASTERNERS +EASTERNMOST +EASTIN +EASTLAND +EASTMAN +EASTON +EASTRIDGE +EASTSIDE +EASTWARD +EASTWICK +EASTWOOD +EASTWOOD'S +EASY +EASYGOING +EAT +EATEN +EATER +EATERIES +EATERS +EATERY +EATING +EATON +EATON'S +EATS +EAU +EAUX +EAVES +EAVESDROP +EAVESDROPPING +EAZY +EBAN +EBB +EBBED +EBBING +EBBS +EBENEZER +EBERHARD +EBERLING +EBERSOL +EBERSTADT +EBERT +EBOLA +EBONY +EBULLIENT +ECCENTRIC +ECCENTRICITIES +ECCENTRICITY +ECCENTRICS +ECCLESIA +ECCLESIASTICAL +ECHELON +ECHELONS +ECHEVERRIA +ECHO +ECHOED +ECHOES +ECHOING +ECHOS +ECK +ECKARDT +ECKART +ECKENFELDER +ECKERD +ECKERSLEY +ECKERT +ECKHARD +ECKHARDT +ECKSTEIN +ECLECTIC +ECLIPSE +ECLIPSED +ECLIPSES +ECLIPSING +ECO +ECOGEN +ECOLAB +ECOLE +ECOLOGICAL +ECOLOGICALLY +ECOLOGIST +ECOLOGISTS +ECOLOGY +ECONOLINE +ECONOMETRIC +ECONOMETRICS +ECONOMIC +ECONOMICAL +ECONOMICALLY +ECONOMICS +ECONOMIES +ECONOMIST +ECONOMIST'S +ECONOMISTS +ECONOMISTS' +ECONOMIZE +ECONOMY +ECONOMY'S +ECOPETROL +ECOSYSTEM +ECOSYSTEMS +ECSTASY +ECSTATIC +ECTOPIC +ECUADOR +ECUADOR'S +ECUADORAN +ECUADOREAN +ECUMENICAL +ED +ED'S +EDBERG +EDD +EDDIE +EDDIE'S +EDDY +EDELL +EDELMAN +EDELMAN'S +EDELSTEIN +EDEMA +EDEN +EDENVALE +EDER +EDGAR +EDGARDO +EDGE +EDGED +EDGERTON +EDGES +EDGEWATER +EDGEWOOD +EDGINESS +EDGING +EDGY +EDI +EDIBLE +EDICT +EDICTS +EDIE +EDIFICE +EDINA +EDINBURGH +EDISON +EDISON'S +EDISTO +EDIT +EDITED +EDITH +EDITING +EDITION +EDITION'S +EDITIONS +EDITOR +EDITOR'S +EDITORIAL +EDITORIALISTS +EDITORIALIZED +EDITORIALIZING +EDITORIALLY +EDITORIALS +EDITORS +EDITORS' +EDITS +EDLEY +EDMOND +EDMONDS +EDMONDSON +EDMONTON +EDMUND +EDMUNDS +EDNA +EDNEY +EDO +EDOUARD +EDPER +EDRALIN +EDS +EDSEL +EDSON +EDTA +EDUARD +EDUARDO +EDUCATE +EDUCATED +EDUCATES +EDUCATING +EDUCATION +EDUCATION'S +EDUCATIONAL +EDUCATIONALLY +EDUCATIONS +EDUCATOR +EDUCATORS +EDWARD +EDWARD'S +EDWARDIAN +EDWARDS +EDWARDS' +EDWARDS'S +EDWIN +EDZARD +EE +EEL +EELAM +EELS +EERIE +EERILY +EFFACING +EFFECT +EFFECTED +EFFECTING +EFFECTIVE +EFFECTIVELY +EFFECTIVENESS +EFFECTS +EFFERVESCENT +EFFICACY +EFFICIENCIES +EFFICIENCY +EFFICIENT +EFFICIENTLY +EFFIGIES +EFFIGY +EFFLUENT +EFFORT +EFFORTLESS +EFFORTLESSLY +EFFORTS +EFFUSIVE +EFRAIN +EFRAT +EGALITARIAN +EGALITARIANISM +EGAN +EGG +EGGED +EGGERS +EGGERT +EGGHEAD +EGGLESTON +EGGPLANT +EGGPLANTS +EGGS +EGLIN +EGO +EGOCENTRIC +EGON +EGOS +EGOTISTICAL +EGREGIOUS +EGREGIOUSLY +EGRETS +EGYPT +EGYPT'S +EGYPTIAN +EGYPTIANS +EH +EHRENHALT +EHRENKRANTZ +EHRLICH +EHRLICHMAN +EHUD +EICHLER +EICHMANN +EICHNER +EID +EIFFEL +EIGHT +EIGHT'S +EIGHTEEN +EIGHTEENS +EIGHTEENTH +EIGHTFOLD +EIGHTH +EIGHTHS +EIGHTIES +EIGHTIETH +EIGHTS +EIGHTY +EIGHTY'S +EIKENBERRY +EILAT +EILEEN +EILERS +EIN +EINDHOVEN +EINHORN +EINSTEIN +EINSTEIN'S +EISELE +EISEN +EISENACH +EISENBERG +EISENHOWER +EISENHOWER'S +EISENSTEIN +EISNER +EISNER'S +EITAN +EITHER +EIZENSTAT +EJECT +EJECTED +EJECTING +EJECTION +EJUP +EK +EKE +EKED +EKEUS +EKING +EL +ELABORATE +ELABORATED +ELABORATELY +ELABORATING +ELABORATION +ELAINE +ELAM +ELAN +ELAPSED +ELASTIC +ELASTICITY +ELATED +ELATION +ELBA +ELBE +ELBERT +ELBOW +ELBOWED +ELBOWING +ELBOWS +ELCOR +ELDEN +ELDER +ELDERLY +ELDERS +ELDERS' +ELDERS'S +ELDEST +ELDON +ELDORADO +ELDREDGE +ELDRIDGE +ELEANOR +ELECT +ELECT'S +ELECTABILITY +ELECTABLE +ELECTED +ELECTING +ELECTION +ELECTION'S +ELECTIONEERING +ELECTIONS +ELECTIVE +ELECTIVES +ELECTORAL +ELECTORATE +ELECTORATE'S +ELECTORATES +ELECTORS +ELECTRA +ELECTRIC +ELECTRIC'S +ELECTRICAL +ELECTRICALLY +ELECTRICALS +ELECTRICIAN +ELECTRICIANS +ELECTRICITE +ELECTRICITY +ELECTRIFICATION +ELECTRIFIED +ELECTRIFYING +ELECTRO +ELECTROCARDIOGRAM +ELECTROCOM +ELECTROCUTED +ELECTROCUTION +ELECTRODE +ELECTRODES +ELECTROLUX +ELECTROMAGNETIC +ELECTROMECHANICAL +ELECTRON +ELECTRONIC +ELECTRONICALLY +ELECTRONICS +ELECTRONICS' +ELECTRONS +ELECTROPHORESIS +ELECTROSOURCE +ELECTS +ELEGANCE +ELEGANT +ELEGANTLY +ELEGY +ELEKTRA +ELEMENT +ELEMENTAL +ELEMENTARY +ELEMENTS +ELENA +ELEPHANT +ELEPHANT'S +ELEPHANTS +ELEVATE +ELEVATED +ELEVATES +ELEVATING +ELEVATION +ELEVATIONS +ELEVATOR +ELEVATORS +ELEVEN +ELEVEN'S +ELEVENS +ELEVENTH +ELF +ELF'S +ELFIN +ELGABROWNY +ELGIN +ELI +ELIA +ELIANA +ELIAS +ELIASSON +ELICIT +ELICITED +ELICITING +ELICITS +ELIE +ELIEZER +ELIGIBILITY +ELIGIBLE +ELIHU +ELIJAH +ELIMINATE +ELIMINATED +ELIMINATES +ELIMINATING +ELIMINATION +ELIMINATIONS +ELIO +ELIOT +ELIOT'S +ELISA +ELISABETH +ELISE +ELISSA +ELITE +ELITES +ELITISM +ELITIST +ELITISTS +ELIXIR +ELIZA +ELIZABETH +ELIZABETH'S +ELIZABETHAN +ELJER +ELK +ELKHART +ELKHORN +ELKIN +ELKINGTON +ELKINS +ELKO +ELKS +ELLA +ELLAN +ELLE +ELLEMANN +ELLEN +ELLEN'S +ELLER +ELLERBEE +ELLIE +ELLIN +ELLINGTON +ELLINGTON'S +ELLIOT +ELLIOTT +ELLIOTT'S +ELLIPSE +ELLIPTICAL +ELLIS +ELLIS' +ELLISON +ELLMANN +ELLSBERG +ELLSWORTH +ELLWOOD +ELLYN +ELM +ELMER +ELMER'S +ELMHURST +ELMIRA +ELMO +ELMORE +ELMS +ELMWOOD +ELOISE +ELON +ELONGATED +ELOQUENCE +ELOQUENT +ELOQUENTLY +ELOY +ELS +ELSA +ELSE +ELSE'S +ELSEVIER +ELSEVIER'S +ELSEWHERE +ELSIE +ELSINORE +ELTON +ELUDE +ELUDED +ELUDES +ELUDING +ELUSIVE +ELVES +ELVIN +ELVIRA +ELVIS +ELVIS' +ELWAY +ELWOOD +ELY +ELYRIA +ELYSEE +ELYSEES +EM +EMACIATED +EMAD +EMANATE +EMANATED +EMANATES +EMANATING +EMANCIPATION +EMANUEL +EMBALMED +EMBALMING +EMBANKMENT +EMBARCADERO +EMBARGO +EMBARGOED +EMBARGOES +EMBARK +EMBARKED +EMBARKING +EMBARKS +EMBARRASS +EMBARRASSED +EMBARRASSING +EMBARRASSINGLY +EMBARRASSMENT +EMBARRASSMENTS +EMBASSIES +EMBASSY +EMBASSY'S +EMBATTLED +EMBEDDED +EMBELLISH +EMBELLISHED +EMBERS +EMBEZZLE +EMBEZZLED +EMBEZZLEMENT +EMBEZZLING +EMBITTERED +EMBLAZONED +EMBLEM +EMBLEMATIC +EMBLEMS +EMBODIED +EMBODIES +EMBODIMENT +EMBODY +EMBODYING +EMBOLDEN +EMBOLDENED +EMBOSSED +EMBRACE +EMBRACED +EMBRACES +EMBRACING +EMBROIDERED +EMBROIDERY +EMBROILED +EMBRY +EMBRYO +EMBRYONIC +EMBRYOS +EMCEE +EMERALD +EMERALDS +EMERGE +EMERGED +EMERGENCE +EMERGENCIES +EMERGENCY +EMERGENT +EMERGES +EMERGING +EMERITUS +EMERSON +EMERSON'S +EMERY +EMERY'S +EMERYVILLE +EMHART +EMHART'S +EMIGRANT +EMIGRANTS +EMIGRATE +EMIGRATED +EMIGRATING +EMIGRATION +EMIGRE +EMIGRES +EMIL +EMILE +EMILIA +EMILIANO +EMILIO +EMILY +EMILY'S +EMINASE +EMINENCE +EMINENT +EMINENTLY +EMIR +EMIR'S +EMIRATE +EMIRATE'S +EMIRATES +EMISSARIES +EMISSARY +EMISSION +EMISSIONS +EMIT +EMITS +EMITTED +EMITTING +EMMA +EMMANUEL +EMMAUS +EMMERICH +EMMET +EMMETT +EMMITT +EMMONS +EMMY +EMMYLOU +EMMYS +EMORY +EMOTION +EMOTIONAL +EMOTIONALISM +EMOTIONALLY +EMOTIONS +EMOTIVE +EMPANELED +EMPATHETIC +EMPATHIZE +EMPATHY +EMPEROR +EMPEROR'S +EMPERORS +EMPHASIS +EMPHASIZE +EMPHASIZED +EMPHASIZES +EMPHASIZING +EMPHATIC +EMPHATICALLY +EMPHYSEMA +EMPIRE +EMPIRE'S +EMPIRES +EMPIRICAL +EMPLACEMENTS +EMPLOY +EMPLOYABLE +EMPLOYED +EMPLOYEE +EMPLOYEE'S +EMPLOYEES +EMPLOYEES' +EMPLOYER +EMPLOYER'S +EMPLOYERS +EMPLOYERS' +EMPLOYES +EMPLOYING +EMPLOYMENT +EMPLOYS +EMPORIA +EMPORIUM +EMPOWER +EMPOWERED +EMPOWERING +EMPOWERMENT +EMPOWERS +EMPRESA +EMPRESAS +EMPRESS +EMPT +EMPTED +EMPTIED +EMPTIES +EMPTINESS +EMPTING +EMPTION +EMPTIVE +EMPTOR +EMPTS +EMPTY +EMPTYING +EMU +EMULATE +EMULATED +EMULATING +EMULEX +EN +ENABLE +ENABLED +ENABLES +ENABLING +ENACT +ENACTED +ENACTING +ENACTMENT +ENACTMENTS +ENACTS +ENAMEL +ENAMORED +ENCAMPED +ENCAMPMENT +ENCAMPMENTS +ENCAPSULATED +ENCARTA +ENCASED +ENCEPHALITIS +ENCHANTED +ENCHANTING +ENCHANTMENT +ENCHILADA +ENCHILADAS +ENCINO +ENCIRCLE +ENCIRCLED +ENCIRCLING +ENCLAVE +ENCLAVE'S +ENCLAVES +ENCLOSE +ENCLOSED +ENCLOSING +ENCLOSURE +ENCLOSURES +ENCODED +ENCODING +ENCOMPASS +ENCOMPASSED +ENCOMPASSES +ENCOMPASSING +ENCOR +ENCORE +ENCORES +ENCOUNTER +ENCOUNTERED +ENCOUNTERING +ENCOUNTERS +ENCOURAGE +ENCOURAGED +ENCOURAGEMENT +ENCOURAGES +ENCOURAGING +ENCROACH +ENCROACHED +ENCROACHING +ENCROACHMENT +ENCROACHMENTS +ENCRUSTED +ENCRYPTED +ENCRYPTION +ENCUMBERED +ENCYCLICAL +ENCYCLOPAEDIA +ENCYCLOPEDIA +ENCYCLOPEDIAS +ENCYCLOPEDIC +END +ENDANGER +ENDANGERED +ENDANGERING +ENDANGERMENT +ENDANGERS +ENDARA +ENDARA'S +ENDEAR +ENDEARED +ENDEARING +ENDEARMENT +ENDEAVOR +ENDEAVORS +ENDEAVOUR +ENDEAVOUR'S +ENDED +ENDEMIC +ENDERLE +ENDERLIN +ENDERS +ENDGAME +ENDICOTT +ENDING +ENDINGS +ENDIVE +ENDLESS +ENDLESSLY +ENDO +ENDOCRINE +ENDOCRINOLOGIST +ENDOMETRIOSIS +ENDORPHINS +ENDORSE +ENDORSED +ENDORSEMENT +ENDORSEMENTS +ENDORSER +ENDORSERS +ENDORSES +ENDORSING +ENDOSCOPIC +ENDOTRONICS +ENDOW +ENDOWED +ENDOWMENT +ENDOWMENT'S +ENDOWMENTS +ENDS +ENDURANCE +ENDURE +ENDURED +ENDURES +ENDURING +ENEMIES +ENEMY +ENEMY'S +ENERGETIC +ENERGETICALLY +ENERGIA +ENERGIES +ENERGIZE +ENERGIZED +ENERGIZER +ENERGIZING +ENERGY +ENERGY'S +ENFIELD +ENFORCE +ENFORCEABLE +ENFORCED +ENFORCEMENT +ENFORCER +ENFORCERS +ENFORCES +ENFORCING +ENG +ENGAGE +ENGAGED +ENGAGEMENT +ENGAGEMENTS +ENGAGES +ENGAGING +ENGEL +ENGELEITER +ENGELHARD +ENGELS +ENGEN +ENGENDER +ENGENDERED +ENGENDERS +ENGINE +ENGINE'S +ENGINED +ENGINEER +ENGINEER'S +ENGINEERED +ENGINEERING +ENGINEERS +ENGINEERS' +ENGINES +ENGLAND +ENGLAND'S +ENGLANDER +ENGLANDERS +ENGLE +ENGLER +ENGLEWOOD +ENGLISH +ENGLISHMAN +ENGLISHMEN +ENGLUND +ENGRAVED +ENGRAVING +ENGRAVINGS +ENGROSSED +ENGROSSING +ENGULF +ENGULFED +ENGULFING +ENHANCE +ENHANCED +ENHANCEMENT +ENHANCEMENTS +ENHANCER +ENHANCES +ENHANCING +ENICHEM +ENID +ENIGMA +ENIGMATIC +ENIMONT +ENJOIN +ENJOINED +ENJOINING +ENJOY +ENJOYABLE +ENJOYED +ENJOYING +ENJOYMENT +ENJOYS +ENLARGE +ENLARGED +ENLARGEMENT +ENLARGING +ENLIGHTEN +ENLIGHTENED +ENLIGHTENING +ENLIGHTENMENT +ENLIST +ENLISTED +ENLISTING +ENLISTMENT +ENLISTS +ENLIVEN +ENLIVENED +ENMESHED +ENMITY +ENNIS +ENNISKILLEN +ENNUI +ENO +ENOLA +ENORMITY +ENORMOUS +ENORMOUSLY +ENOS +ENOUGH +ENQUIRER +ENRAGE +ENRAGED +ENRICH +ENRICHED +ENRICHES +ENRICHING +ENRICHMENT +ENRICO +ENRIGHT +ENRILE +ENRIQUE +ENRIQUEZ +ENROLL +ENROLLED +ENROLLEES +ENROLLING +ENROLLMENT +ENROLLMENTS +ENROLLS +ENRON +ENRON'S +ENROUTE +ENSCO +ENSCONCED +ENSEMBLE +ENSEMBLES +ENSENADA +ENSERCH +ENSHRINE +ENSHRINED +ENSIGN +ENSKILDA +ENSLAVED +ENSLAVEMENT +ENSNARED +ENSOR +ENSTAR +ENSUE +ENSUED +ENSUES +ENSUING +ENSURE +ENSURED +ENSURES +ENSURING +ENTAIL +ENTAILED +ENTAILS +ENTANGLED +ENTANGLEMENT +ENTANGLEMENTS +ENTE +ENTEBBE +ENTEL +ENTER +ENTERED +ENTERGY +ENTERING +ENTERPRISE +ENTERPRISE'S +ENTERPRISES +ENTERPRISES' +ENTERPRISING +ENTERRA +ENTERS +ENTERTAIN +ENTERTAINED +ENTERTAINER +ENTERTAINER'S +ENTERTAINERS +ENTERTAINING +ENTERTAINMENT +ENTERTAINMENT'S +ENTERTAINMENTS +ENTERTAINS +ENTEX +ENTHRALLED +ENTHRONEMENT +ENTHUSED +ENTHUSIASM +ENTHUSIAST +ENTHUSIASTIC +ENTHUSIASTICALLY +ENTHUSIASTS +ENTICE +ENTICED +ENTICEMENT +ENTICEMENTS +ENTICING +ENTIRE +ENTIRELY +ENTIRETY +ENTITIES +ENTITLE +ENTITLED +ENTITLEMENT +ENTITLEMENTS +ENTITLES +ENTITLING +ENTITY +ENTOMBED +ENTOMOLOGIST +ENTOMOLOGISTS +ENTOMOLOGY +ENTOURAGE +ENTRAILS +ENTRANCE +ENTRANCED +ENTRANCES +ENTRANT +ENTRANTS +ENTRAP +ENTRAPMENT +ENTRAPPED +ENTRE +ENTREATIES +ENTREE +ENTREES +ENTRENCH +ENTRENCHED +ENTRENCHING +ENTRENCHMENT +ENTREPRENEUR +ENTREPRENEUR'S +ENTREPRENEURIAL +ENTREPRENEURS +ENTREPRENEURSHIP +ENTRIES +ENTRUST +ENTRUSTED +ENTRY +ENTRYWAY +ENTWINED +ENTWISTLE +ENUMERATED +ENUMERATORS +ENUNCIATE +ENUNCIATED +ENVELOP +ENVELOPE +ENVELOPED +ENVELOPES +ENVELOPING +ENVER +ENVIABLE +ENVIED +ENVIOUS +ENVIRODYNE +ENVIROMENTAL +ENVIRONMENT +ENVIRONMENTAL +ENVIRONMENTALISM +ENVIRONMENTALIST +ENVIRONMENTALISTS +ENVIRONMENTALISTS' +ENVIRONMENTALLY +ENVIRONMENTS +ENVIRONS +ENVISAGE +ENVISAGED +ENVISAGES +ENVISION +ENVISIONED +ENVISIONING +ENVISIONS +ENVOY +ENVOYS +ENVY +ENZO +ENZYME +ENZYMES +EO +EONS +EOSINOPHILIA +EPCOT +EPHEDRINE +EPHEMERAL +EPHLIN +EPHRAIM +EPHRON +EPIC +EPICENTER +EPICS +EPIDEMIC +EPIDEMICS +EPIDEMIOLOGICAL +EPIDEMIOLOGIST +EPIDEMIOLOGISTS +EPIDEMIOLOGY +EPILEPSY +EPILEPTIC +EPILOGUE +EPIPHANY +EPISCOPAL +EPISCOPALIAN +EPISCOPALIANS +EPISODE +EPISODES +EPISODIC +EPITAPH +EPITHET +EPITHETS +EPITOME +EPITOMIZE +EPITOMIZED +EPITOMIZES +EPITOPE +EPOCH +EPOCHAL +EPOGEN +EPONYMOUS +EPOXY +EPPEL +EPPELMANN +EPPERSON +EPPLER +EPPS +EPSILON +EPSON +EPSTEIN +EQUAL +EQUALED +EQUALING +EQUALITY +EQUALIZATION +EQUALIZE +EQUALIZER +EQUALIZING +EQUALLED +EQUALLY +EQUALS +EQUANIMITY +EQUATE +EQUATED +EQUATES +EQUATING +EQUATION +EQUATIONS +EQUATOR +EQUATORIAL +EQUESTRIAN +EQUIFAX +EQUILIBRIUM +EQUIMARK +EQUIMARK'S +EQUINE +EQUINOX +EQUIP +EQUIPMENT +EQUIPMENT'S +EQUIPPED +EQUIPPING +EQUITABLE +EQUITABLE'S +EQUITABLY +EQUITEC +EQUITICORP +EQUITIES +EQUITIES' +EQUITY +EQUIVALENCE +EQUIVALENCY +EQUIVALENT +EQUIVALENTS +EQUIVOCAL +EQUIVOCATION +ER +ERA +ERA'S +ERADICATE +ERADICATED +ERADICATING +ERADICATION +ERAKAT +ERAMIAN +ERAS +ERASABLE +ERASE +ERASED +ERASER +ERASES +ERASING +ERASMUS +ERB +ERBAMONT +ERBURU +ERCROS +ERDMAN +ERDREICH +ERECT +ERECTED +ERECTING +ERECTION +ERECTOR +EREKAT +EREZ +ERFURT +ERGO +ERGONOMIC +ERGONOMICS +ERHARD +ERIC +ERIC'S +ERICA +ERICH +ERICK +ERICKSON +ERICKSON'S +ERICSON +ERICSSON +ERICSSON'S +ERIDANIA +ERIE +ERIK +ERIKA +ERIKSON +ERIKSSON +ERIN +ERISA +ERITREA +ERITREAN +ERITREANS +ERLANGER +ERLICH +ERMA +ERNEST +ERNESTINE +ERNESTO +ERNIE +ERNST +ERODE +ERODED +ERODES +ERODIBLE +ERODING +EROS +EROSION +EROTIC +EROTICA +EROTICISM +ERR +ERRAND +ERRANDS +ERRANT +ERRATIC +ERRATICALLY +ERRED +ERRIQUEZ +ERROL +ERRONEOUS +ERRONEOUSLY +ERROR +ERRORS +ERS +ERSATZ +ERSHAD +ERSHAD'S +ERSKINE +ERSTWHILE +ERTHA +ERUDITE +ERUDITION +ERUPT +ERUPTED +ERUPTING +ERUPTION +ERUPTIONS +ERUPTS +ERVIN +ERVING +ERWIN +ERYTHROPOIETIN +ES +ESA +ESBER +ESCADA +ESCALANTE +ESCALATE +ESCALATED +ESCALATES +ESCALATING +ESCALATION +ESCALATOR +ESCALATORS +ESCALON +ESCAMBIA +ESCAPADE +ESCAPADES +ESCAPE +ESCAPED +ESCAPEE +ESCAPEES +ESCAPES +ESCAPING +ESCAPISM +ESCAPIST +ESCHEW +ESCHEWED +ESCHEWING +ESCHEWS +ESCOBAR +ESCOBAR'S +ESCOBEDO +ESCONDIDO +ESCORT +ESCORTED +ESCORTING +ESCORTS +ESCROW +ESCUDO +ESCUDOS +ESHELMAN +ESIASON +ESKAY +ESKENAZI +ESKER +ESKIMO +ESKIMOS +ESMARK +ESMAT +ESMOR +ESOPHAGUS +ESOTERIC +ESPANA +ESPANOL +ESPANOLA +ESPECIALLY +ESPECTADOR +ESPERANTO +ESPERANZA +ESPINOSA +ESPINOZA +ESPIONAGE +ESPIRITO +ESPLANADE +ESPOSITO +ESPOUSE +ESPOUSED +ESPOUSES +ESPOUSING +ESPRESSO +ESPRIT +ESPY +ESPY'S +ESQUE +ESQUIPULAS +ESQUIRE +ESQUIVEL +ESREY +ESSAY +ESSAYIST +ESSAYS +ESSELTE +ESSEN +ESSENCE +ESSENTIAL +ESSENTIALLY +ESSENTIALS +ESSEX +ESSO +EST +ESTABLISH +ESTABLISHED +ESTABLISHES +ESTABLISHING +ESTABLISHMENT +ESTABLISHMENT'S +ESTABLISHMENTS +ESTADO +ESTATE +ESTATE'S +ESTATES +ESTE +ESTEBAN +ESTEE +ESTEEM +ESTEEMED +ESTEFAN +ESTELLE +ESTENSSORO +ESTES +ESTEVEZ +ESTHER +ESTHETIC +ESTIMABLE +ESTIMATE +ESTIMATED +ESTIMATES +ESTIMATING +ESTIMATION +ESTONIA +ESTONIA'S +ESTONIAN +ESTONIANS +ESTRADA +ESTRANGED +ESTRANGEMENT +ESTRELLA +ESTRICH +ESTRIN +ESTROGEN +ESTROGENS +ESTUARIES +ESTUARY +ESTY +ESZTERHAS +ET +ETCETERA +ETCH +ETCHED +ETCHING +ETCHINGS +ETERNAL +ETERNALLY +ETERNITY +ETHAN +ETHANOL +ETHEL +ETHER +ETHEREAL +ETHERIDGE +ETHERNET +ETHIC +ETHICAL +ETHICALLY +ETHICIST +ETHICISTS +ETHICON +ETHICS +ETHIOPIA +ETHIOPIA'S +ETHIOPIAN +ETHIOPIANS +ETHNIC +ETHNICALLY +ETHNICITY +ETHNICS +ETHOS +ETHRIDGE +ETHYL +ETHYLENE +ETHYOL +ETIENNE +ETIQUETTE +ETON +ETTA +ETTEN +ETTINGER +ETTORE +ETZIONI +EU +EUBANKS +EUCALYPTUS +EUCHARIST +EUCLID +EUDORA +EUGENE +EUGENIA +EUGENICS +EUGENIO +EULOGIES +EULOGIZED +EULOGY +EUNICE +EUPHEMISM +EUPHEMISMS +EUPHEMISTICALLY +EUPHORIA +EUPHORIC +EUPHRATES +EURASIAN +EUREKA +EURO +EUROBOND +EUROBONDS +EUROCOM +EURODOLLAR +EURODOLLARS +EUROFIMA +EUROMARK +EUROMARKET +EUROMARKETS +EURONOTES +EUROPA +EUROPE +EUROPE'S +EUROPEAN +EUROPEANS +EUROPEANS' +EUROSTAR +EUROSTAT +EUROSTERLING +EUROTUNNEL +EUROTUNNEL'S +EUROYEN +EUTHANASIA +EV +EVA +EVACUATE +EVACUATED +EVACUATING +EVACUATION +EVACUATIONS +EVACUEES +EVADE +EVADED +EVADERS +EVADING +EVALUATE +EVALUATED +EVALUATES +EVALUATING +EVALUATION +EVALUATIONS +EVAN +EVANDER +EVANGELICAL +EVANGELICALS +EVANGELISM +EVANGELIST +EVANGELIST'S +EVANGELISTA +EVANGELISTIC +EVANGELISTS +EVANGELIZATION +EVANS +EVANS' +EVANS'S +EVANSTON +EVANSVILLE +EVAPORATE +EVAPORATED +EVAPORATES +EVAPORATING +EVAPORATION +EVASION +EVASIVE +EVE +EVELYN +EVEN +EVENED +EVENHANDED +EVENING +EVENING'S +EVENINGS +EVENLY +EVENT +EVENT'S +EVENTFUL +EVENTS +EVENTUAL +EVENTUALITY +EVENTUALLY +EVER +EVEREADY +EVEREST +EVERETT +EVERETTE +EVEREX +EVERGLADES +EVERGREEN +EVERGREENS +EVERINGHAM +EVERLASTING +EVERLY +EVERS +EVERSON +EVERT +EVERY +EVERYBODY +EVERYBODY'S +EVERYDAY +EVERYMAN +EVERYONE +EVERYONE'S +EVERYTHING +EVERYTHING'S +EVERYTIME +EVERYWHERE +EVIAN +EVICT +EVICTED +EVICTING +EVICTION +EVICTIONS +EVIDENCE +EVIDENCED +EVIDENCES +EVIDENT +EVIDENTIARY +EVIDENTLY +EVIL +EVILS +EVIN +EVISCERATED +EVITA +EVOCATION +EVOCATIVE +EVOKE +EVOKED +EVOKES +EVOKING +EVOLUTION +EVOLUTIONARY +EVOLVE +EVOLVED +EVOLVES +EVOLVING +EWALD +EWELL +EWEN +EWING +EWING'S +EWORLD +EX +EXABYTE +EXACERBATE +EXACERBATED +EXACERBATES +EXACERBATING +EXACT +EXACTED +EXACTING +EXACTLY +EXAGGERATE +EXAGGERATED +EXAGGERATES +EXAGGERATING +EXAGGERATION +EXAGGERATIONS +EXALTED +EXAM +EXAMINATION +EXAMINATIONS +EXAMINE +EXAMINED +EXAMINER +EXAMINER'S +EXAMINERS +EXAMINES +EXAMINING +EXAMPLE +EXAMPLES +EXAMS +EXASPERATED +EXASPERATING +EXASPERATION +EXCALIBUR +EXCAVATE +EXCAVATED +EXCAVATING +EXCAVATION +EXCAVATIONS +EXCAVATORS +EXCEDRIN +EXCEED +EXCEEDED +EXCEEDING +EXCEEDINGLY +EXCEEDS +EXCEL +EXCELLED +EXCELLENCE +EXCELLENCY +EXCELLENT +EXCELS +EXCELSIOR +EXCEPT +EXCEPTED +EXCEPTING +EXCEPTION +EXCEPTIONAL +EXCEPTIONALLY +EXCEPTIONS +EXCERPT +EXCERPTED +EXCERPTS +EXCESS +EXCESSES +EXCESSIVE +EXCESSIVELY +EXCHANGE +EXCHANGE'S +EXCHANGEABLE +EXCHANGED +EXCHANGES +EXCHANGES' +EXCHANGING +EXCHEQUER +EXCIMER +EXCISE +EXCISED +EXCITABLE +EXCITE +EXCITED +EXCITEDLY +EXCITEMENT +EXCITES +EXCITING +EXCLAIMED +EXCLAIMS +EXCLAMATION +EXCLUDE +EXCLUDED +EXCLUDER +EXCLUDES +EXCLUDING +EXCLUSION +EXCLUSIONARY +EXCLUSIONS +EXCLUSIVE +EXCLUSIVELY +EXCLUSIVITY +EXCOMMUNICATED +EXCOMMUNICATION +EXCORIATED +EXCREMENT +EXCRUCIATING +EXCRUCIATINGLY +EXCULPATORY +EXCURSION +EXCURSIONS +EXCUSE +EXCUSED +EXCUSES +EXCUSING +EXEC +EXECS +EXECUTE +EXECUTED +EXECUTES +EXECUTING +EXECUTION +EXECUTIONER +EXECUTIONERS +EXECUTIONS +EXECUTIVE +EXECUTIVE'S +EXECUTIVES +EXECUTIVES' +EXECUTOR +EXECUTORS +EXEL +EXEMPLAR +EXEMPLARS +EXEMPLARY +EXEMPLIFIED +EXEMPLIFIES +EXEMPLIFY +EXEMPT +EXEMPTED +EXEMPTING +EXEMPTION +EXEMPTIONS +EXEMPTS +EXERCISABLE +EXERCISE +EXERCISED +EXERCISERS +EXERCISES +EXERCISING +EXERT +EXERTED +EXERTING +EXERTION +EXERTS +EXETER +EXHALE +EXHAUST +EXHAUSTED +EXHAUSTING +EXHAUSTION +EXHAUSTIVE +EXHAUSTIVELY +EXHAUSTS +EXHIBIT +EXHIBIT'S +EXHIBITED +EXHIBITING +EXHIBITION +EXHIBITIONS +EXHIBITOR +EXHIBITORS +EXHIBITS +EXHILARATED +EXHILARATING +EXHILARATION +EXHORT +EXHORTATION +EXHORTATIONS +EXHORTED +EXHORTING +EXHORTS +EXHUMATION +EXHUME +EXHUMED +EXIDE +EXILE +EXILED +EXILES +EXIST +EXISTED +EXISTENCE +EXISTENT +EXISTENTIAL +EXISTING +EXISTS +EXIT +EXITED +EXITING +EXITS +EXLEY +EXOCET +EXODUS +EXON +EXONERATE +EXONERATED +EXONERATING +EXONERATION +EXOR +EXORBITANT +EXORCISE +EXORCISM +EXORCIST +EXOTIC +EXOTICA +EXPAND +EXPANDED +EXPANDING +EXPANDS +EXPANSE +EXPANSES +EXPANSION +EXPANSIONARY +EXPANSIONISM +EXPANSIONIST +EXPANSIONS +EXPANSIVE +EXPATRIATE +EXPATRIATES +EXPECT +EXPECTANCY +EXPECTANT +EXPECTATION +EXPECTATIONS +EXPECTED +EXPECTING +EXPECTS +EXPEDIENCY +EXPEDIENT +EXPEDITE +EXPEDITED +EXPEDITING +EXPEDITION +EXPEDITIONARY +EXPEDITIONS +EXPEDITIOUS +EXPEDITIOUSLY +EXPEL +EXPELLED +EXPELLING +EXPEND +EXPENDABLE +EXPENDED +EXPENDING +EXPENDITURE +EXPENDITURES +EXPENSE +EXPENSES +EXPENSIVE +EXPENSIVELY +EXPERIENCE +EXPERIENCED +EXPERIENCES +EXPERIENCING +EXPERIMENT +EXPERIMENTAL +EXPERIMENTALLY +EXPERIMENTATION +EXPERIMENTED +EXPERIMENTERS +EXPERIMENTING +EXPERIMENTS +EXPERT +EXPERT'S +EXPERTISE +EXPERTLY +EXPERTS +EXPERTS' +EXPIRATION +EXPIRATIONS +EXPIRE +EXPIRED +EXPIRES +EXPIRING +EXPIRY +EXPLAIN +EXPLAINABLE +EXPLAINED +EXPLAINING +EXPLAINS +EXPLANATION +EXPLANATIONS +EXPLANATORY +EXPLETIVE +EXPLETIVES +EXPLICIT +EXPLICITLY +EXPLODE +EXPLODED +EXPLODES +EXPLODING +EXPLOIT +EXPLOITATION +EXPLOITATIVE +EXPLOITED +EXPLOITING +EXPLOITIVE +EXPLOITS +EXPLORATION +EXPLORATIONS +EXPLORATORY +EXPLORE +EXPLORED +EXPLORER +EXPLORERS +EXPLORES +EXPLORING +EXPLOSION +EXPLOSIONS +EXPLOSIVE +EXPLOSIVELY +EXPLOSIVES +EXPO +EXPONENT +EXPONENTIAL +EXPONENTIALLY +EXPORT +EXPORTABLE +EXPORTED +EXPORTER +EXPORTERS +EXPORTERS' +EXPORTING +EXPORTS +EXPOS +EXPOSE +EXPOSED +EXPOSES +EXPOSING +EXPOSITION +EXPOSITIONS +EXPOSURE +EXPOSURES +EXPOUND +EXPOUNDED +EXPOUNDING +EXPRESS +EXPRESS' +EXPRESS'S +EXPRESSED +EXPRESSES +EXPRESSING +EXPRESSION +EXPRESSIONISM +EXPRESSIONIST +EXPRESSIONLESS +EXPRESSIONS +EXPRESSIVE +EXPRESSLY +EXPRESSWAY +EXPRESSWAYS +EXPROPRIATE +EXPROPRIATED +EXPROPRIATION +EXPULSION +EXPULSIONS +EXPUNGED +EXQUISITE +EXQUISITELY +EXTANT +EXTEND +EXTENDED +EXTENDIBLE +EXTENDING +EXTENDS +EXTENSION +EXTENSIONS +EXTENSIVE +EXTENSIVELY +EXTENT +EXTENUATING +EXTERIOR +EXTERIORS +EXTERMINATE +EXTERMINATED +EXTERMINATING +EXTERMINATION +EXTERMINATOR +EXTERNAL +EXTERNALLY +EXTINCT +EXTINCTION +EXTINCTIONS +EXTINGUISH +EXTINGUISHED +EXTINGUISHER +EXTINGUISHERS +EXTINGUISHING +EXTINGUISHMENT +EXTOL +EXTOLLED +EXTOLLING +EXTOLS +EXTON +EXTORT +EXTORTED +EXTORTING +EXTORTION +EXTORTIONISTS +EXTRA +EXTRACT +EXTRACTED +EXTRACTING +EXTRACTION +EXTRACTIONS +EXTRACTS +EXTRACURRICULAR +EXTRADITABLES +EXTRADITE +EXTRADITED +EXTRADITING +EXTRADITION +EXTRADITIONS +EXTRAJUDICIAL +EXTRAMARITAL +EXTRANEOUS +EXTRAORDINAIRE +EXTRAORDINARILY +EXTRAORDINARY +EXTRAPOLATE +EXTRAPOLATED +EXTRAPOLATING +EXTRAPOLATION +EXTRAS +EXTRATERRESTRIAL +EXTRATERRESTRIALS +EXTRAVAGANCE +EXTRAVAGANT +EXTRAVAGANTLY +EXTRAVAGANZA +EXTRAVAGANZAS +EXTREME +EXTREMELY +EXTREMES +EXTREMISM +EXTREMIST +EXTREMISTS +EXTREMITIES +EXTRICATE +EXTRICATED +EXTRUDED +EXTRUSION +EXUBERANCE +EXUBERANT +EXUDE +EXUDED +EXUDES +EXULTANT +EXULTED +EXULTS +EXXON +EXXON'S +EYE +EYEBALL +EYEBALLS +EYEBROW +EYEBROWS +EYED +EYEGLASS +EYEGLASSES +EYEING +EYELASHES +EYELID +EYELIDS +EYES +EYESIGHT +EYESORE +EYEWEAR +EYEWITNESS +EYEWITNESSES +EYING +EYRE +EYSKENS +EZELL +EZER +EZOE +EZOLA +EZRA +F. +F.'S +FA +FAAL +FAB +FABBRI +FABER +FABERGE +FABIAN +FABIANI +FABIO +FABIUS +FABLE +FABLED +FABLES +FABRI +FABRIC +FABRICATE +FABRICATED +FABRICATING +FABRICATION +FABRICATIONS +FABRICATOR +FABRICATORS +FABRICLAND +FABRICS +FABULOUS +FABULOUSLY +FACADE +FACADES +FACE +FACED +FACELESS +FACELIFT +FACEOFF +FACES +FACET +FACETED +FACETIOUS +FACETIOUSLY +FACETS +FACIAL +FACIE +FACILE +FACILITATE +FACILITATED +FACILITATES +FACILITATING +FACILITATION +FACILITATOR +FACILITATORS +FACILITIES +FACILITY +FACILITY'S +FACING +FACSIMILE +FACSIMILES +FACT +FACTION +FACTIONAL +FACTIONALISM +FACTIONS +FACTLY +FACTO +FACTOR +FACTORED +FACTORIES +FACTORING +FACTORS +FACTORY +FACTORY'S +FACTS +FACTUAL +FACTUALLY +FACULTIES +FACULTY +FAD +FADDISH +FADE +FADED +FADES +FADING +FADLALLAH +FADS +FAG +FAGAN +FAGEN +FAGGOT +FAHD +FAHD'S +FAHEY +FAHNESTOCK +FAHRENHEIT +FAHRENKOPF +FAHRINGER +FAIL +FAILED +FAILING +FAILINGS +FAILS +FAILURE +FAILURES +FAIN +FAINT +FAINTED +FAINTER +FAINTEST +FAINTING +FAINTLY +FAIR +FAIR'S +FAIRBANKS +FAIRCHILD +FAIRCHILD'S +FAIRCLOTH +FAIRE +FAIRER +FAIREST +FAIRFAX +FAIRFIELD +FAIRGROUNDS +FAIRIES +FAIRLESS +FAIRLY +FAIRMONT +FAIRNESS +FAIRS +FAIRVIEW +FAIRWAY +FAIRWAYS +FAIRWEATHER +FAIRY +FAISAL +FAISON +FAIT +FAITH +FAITH'S +FAITHFUL +FAITHFULL +FAITHFULLY +FAITHS +FAJARDO +FAJITAS +FAJR +FAKE +FAKED +FAKES +FAKING +FALCO +FALCON +FALCONBRIDGE +FALCONE +FALCONER +FALCONS +FALCONS' +FALDO +FALIN +FALK +FALKLAND +FALKLANDS +FALL +FALL'S +FALLACIOUS +FALLACY +FALLBACK +FALLBROOK +FALLEN +FALLIBLE +FALLING +FALLOFF +FALLON +FALLOPIAN +FALLOUT +FALLOW +FALLOWS +FALLS +FALMOUTH +FALSE +FALSEHOOD +FALSEHOODS +FALSELY +FALSETTO +FALSIFICATION +FALSIFIED +FALSIFY +FALSIFYING +FALSITY +FALSTAFF +FALTER +FALTERED +FALTERING +FALTERS +FALUDI +FALWELL +FALWELL'S +FAMA +FAME +FAMED +FAMER +FAMERS +FAMILIA +FAMILIAL +FAMILIAR +FAMILIARITY +FAMILIARIZE +FAMILIES +FAMILIES' +FAMILY +FAMILY'S +FAMINE +FAMINES +FAMOUS +FAMOUSLY +FAN +FAN'S +FANATIC +FANATICAL +FANATICISM +FANATICS +FANCIED +FANCIER +FANCIERS +FANCIES +FANCIEST +FANCIFUL +FANCY +FANEUIL +FANFARE +FANG +FANG'S +FANGLED +FANGS +FANNED +FANNIE +FANNING +FANNY +FANS +FANS' +FANTASIA +FANTASIES +FANTASIZE +FANTASIZED +FANTASIZING +FANTASTIC +FANTASTICALLY +FANTASY +FANUC +FAR +FARABUNDO +FARAH +FARAI +FARAWAY +FARBER +FARCE +FARCICAL +FARE +FARED +FARES +FAREWELL +FAREWELLS +FARFETCHED +FARGO +FARGO'S +FARIAS +FARID +FARINA +FARING +FARIS +FARISH +FARKAS +FARLEY +FARLEY'S +FARM +FARM'S +FARMED +FARMER +FARMER'S +FARMERS +FARMERS' +FARMHOUSE +FARMHOUSES +FARMING +FARMINGDALE +FARMINGTON +FARMLAND +FARMLANDS +FARMS +FARMS' +FARMWORKER +FARMWORKERS +FARNBOROUGH +FARNHAM +FARNSWORTH +FAROOQ +FAROUK +FARR +FARRAGUT +FARRAH +FARRAKHAN +FARRAKHAN'S +FARRAR +FARRELL +FARREN +FARRIS +FARROW +FARROW'S +FARSI +FARSIGHTED +FARTHER +FARTHEST +FARWELL +FASCELL +FASCINATE +FASCINATED +FASCINATES +FASCINATING +FASCINATION +FASCISM +FASCIST +FASCISTS +FASHION +FASHION'S +FASHIONABLE +FASHIONABLY +FASHIONED +FASHIONING +FASHIONS +FASI +FASO +FAST +FASTBALL +FASTBALLS +FASTED +FASTEN +FASTENED +FASTENER +FASTENERS +FASTENING +FASTER +FASTEST +FASTIDIOUS +FASTING +FAT +FATAH +FATAL +FATALE +FATALISM +FATALISTIC +FATALITIES +FATALITY +FATALLY +FATE +FATED +FATEFUL +FATES +FATHER +FATHER'S +FATHERED +FATHERHOOD +FATHERING +FATHERLAND +FATHERLESS +FATHERLY +FATHERS +FATHERS' +FATHI +FATHOM +FATIGUE +FATIGUED +FATIGUES +FATIMA +FATMAN +FATS +FATTEN +FATTENED +FATTENING +FATTER +FATTEST +FATTY +FATUOUS +FATWA +FAUBUS +FAUCET +FAUCETS +FAUCI +FAULK +FAULKNER +FAULKNER'S +FAULT +FAULTED +FAULTING +FAULTS +FAULTY +FAUNA +FAUNTROY +FAUNTROY'S +FAURE +FAUST +FAUSTO +FAUX +FAVOR +FAVORABILITY +FAVORABLE +FAVORABLY +FAVORED +FAVORING +FAVORITE +FAVORITES +FAVORITISM +FAVORS +FAVOUR +FAVRE +FAW +FAWAZ +FAWCETT +FAWELL +FAWN +FAWNING +FAWZI +FAX +FAXED +FAXES +FAXING +FAXON +FAY +FAY'S +FAYE +FAYED +FAYETTE +FAYETTEVILLE +FAYEZ +FAZE +FAZED +FAZIO +FE +FE'S +FEAR +FEARED +FEARFUL +FEARING +FEARLESS +FEARS +FEARSOME +FEASIBILITY +FEASIBLE +FEAST +FEASTED +FEASTING +FEASTS +FEAT +FEATHER +FEATHERED +FEATHERS +FEATHERSTONE +FEATHERWEIGHT +FEATHERY +FEATS +FEATURE +FEATURED +FEATURELESS +FEATURES +FEATURING +FEB +FEBRES +FEBRUARY +FEBRUARY'S +FEBURARY +FECAL +FECES +FECKLESS +FED +FED'S +FEDDERS +FEDER +FEDERAL +FEDERAL'S +FEDERALISM +FEDERALIST +FEDERALISTS +FEDERALLY +FEDERATED +FEDERATED'S +FEDERATION +FEDERATION'S +FEDERATIONS +FEDERICO +FEDEX +FEDORA +FEDOROV +FEDS +FEE +FEEBLE +FEED +FEEDBACK +FEEDER +FEEDERS +FEEDING +FEEDINGS +FEEDLOT +FEEDLOTS +FEEDS +FEEDSTOCK +FEEL +FEELERS +FEELING +FEELINGS +FEELS +FEELY +FEENEY +FEES +FEET +FEFFER +FEHR +FEI +FEIGHAN +FEIGN +FEIGNED +FEIGNING +FEIN +FEIN'S +FEINBERG +FEINER +FEINGOLD +FEINSTEIN +FEINSTEIN'S +FEISTY +FEITH +FELD +FELDE +FELDER +FELDMAN +FELDMUEHLE +FELDSTEIN +FELDT +FELICE +FELICIA +FELICIANO +FELICITY +FELINE +FELINES +FELIPE +FELIX +FELKER +FELL +FELLA +FELLAS +FELLED +FELLER +FELLHEIMER +FELLING +FELLINI +FELLOW +FELLOWS +FELLOWSHIP +FELLOWSHIPS +FELLS +FELON +FELONIES +FELONIOUS +FELONS +FELONY +FELSENTHAL +FELT +FELTES +FELTON +FELTSMAN +FEMALE +FEMALES +FEMINA +FEMININE +FEMININITY +FEMINISM +FEMINIST +FEMINISTS +FEMME +FEMSA +FEMUR +FEN +FENCE +FENCED +FENCES +FENCING +FEND +FENDED +FENDER +FENDERS +FENDI +FENDING +FENECH +FENG +FENN +FENNEL +FENNELL +FENNELLY +FENNER +FENTON +FENWAY +FENWICK +FER +FERAL +FERBER +FERDINAND +FERENC +FERGANA +FERGIE +FERGUS +FERGUSON +FERGUSON'S +FERMENT +FERMENTA +FERMENTA'S +FERMENTATION +FERMENTED +FERMENTING +FERMI +FERMIN +FERN +FERNALD +FERNAND +FERNANDES +FERNANDEZ +FERNANDEZ'S +FERNANDO +FERNDALE +FERNS +FEROCIOUS +FEROCIOUSLY +FEROCITY +FERRANTI +FERRARA +FERRARI +FERRARIS +FERRARO +FERRARO'S +FERRE +FERREIRA +FERRELL +FERRER +FERRERO +FERRET +FERRETING +FERRETS +FERREY +FERRI +FERRIED +FERRIES +FERRIS +FERRIS'S +FERRO +FERROUS +FERRUZZI +FERRUZZI'S +FERRY +FERRY'S +FERRYING +FERTILE +FERTILITY +FERTILIZATION +FERTILIZE +FERTILIZED +FERTILIZER +FERTILIZERS +FERTILIZING +FERTITTA +FERVENT +FERVENTLY +FERVOR +FESHBACH +FESHBACHS +FESS +FEST +FESTER +FESTERING +FESTIVA +FESTIVAL +FESTIVAL'S +FESTIVALS +FESTIVE +FESTIVITIES +FESTOONED +FETAL +FETCH +FETCHED +FETCHES +FETCHING +FETE +FETED +FETID +FETISH +FETISOV +FETTUCCINE +FETUS +FETUSES +FETZER +FEUD +FEUDAL +FEUDED +FEUDING +FEUDS +FEUER +FEUERMAN +FEUERSTEIN +FEVER +FEVERED +FEVERISH +FEVERISHLY +FEVERS +FEW +FEWER +FEWEST +FEY +FEYNMAN +FEZ +FI +FIANCE +FIANCEE +FIANNA +FIASCO +FIAT +FIAT'S +FIATO +FIBER +FIBERGLAS +FIBERGLASS +FIBEROPTIC +FIBERS +FIBRE +FIBREBOARD +FIBRILLATION +FIBROSIS +FIBROUS +FICKLE +FICTION +FICTIONAL +FICTIONALIZED +FICTIONS +FICTITIOUS +FIDDLE +FIDDLED +FIDDLER +FIDDLES +FIDDLING +FIDE +FIDEL +FIDELCOR +FIDELITY +FIDELITY'S +FIDENAS +FIDES +FIDESZ +FIDGETED +FIDGETING +FIDGETY +FIDLER +FIDO +FIDUCIARY +FIECHTER +FIEDLER +FIEFDOM +FIEFDOMS +FIEGER +FIELD +FIELD'S +FIELDCREST +FIELDED +FIELDER +FIELDER'S +FIELDING +FIELDS +FIELDS' +FIENNES +FIERCE +FIERCELY +FIERCER +FIERCEST +FIERMAN +FIERO +FIERS +FIERSTEIN +FIERY +FIESTA +FIFE +FIFTEEN +FIFTEENS +FIFTEENTH +FIFTH +FIFTHS +FIFTIES +FIFTIETH +FIFTY +FIFTY'S +FIG +FIGARO +FIGGIE +FIGHT +FIGHTER +FIGHTER'S +FIGHTERS +FIGHTING +FIGHTS +FIGMENT +FIGS +FIGUERAS +FIGUEROA +FIGURATIVE +FIGURATIVELY +FIGURE +FIGURED +FIGUREHEAD +FIGURES +FIGURINE +FIGURINES +FIGURING +FIJI +FIJI'S +FIJIAN +FIJIANS +FIKRET +FIL +FILA +FILAMENT +FILATOV +FILE +FILED +FILENE'S +FILENET +FILER +FILERS +FILES +FILET +FILIBUSTER +FILIBUSTERED +FILIBUSTERING +FILIBUSTERS +FILING +FILINGS +FILIP +FILIPINA +FILIPINO +FILIPINOS +FILL +FILLAUER +FILLED +FILLER +FILLERS +FILLET +FILLETS +FILLIES +FILLING +FILLINGS +FILLMORE +FILLS +FILLY +FILM +FILM'S +FILMED +FILMGOERS +FILMING +FILMMAKER +FILMMAKERS +FILMMAKING +FILMS +FILTER +FILTERED +FILTERING +FILTERS +FILTH +FILTHY +FILTRATION +FIN +FINA +FINAL +FINALE +FINALIST +FINALISTS +FINALITY +FINALIZE +FINALIZED +FINALIZING +FINALLY +FINALS +FINANCE +FINANCE'S +FINANCED +FINANCES +FINANCIAL +FINANCIAL'S +FINANCIALLY +FINANCIALS +FINANCIER +FINANCIER'S +FINANCIERA +FINANCIERE +FINANCIERO +FINANCIERS +FINANCING +FINANCINGS +FINANZIARIA +FINCH +FIND +FINDER +FINDER'S +FINDERS +FINDING +FINDINGS +FINDLAY +FINDLEY +FINDS +FINE +FINED +FINELY +FINEMAN +FINER +FINERY +FINES +FINESSE +FINESSED +FINEST +FINEX +FINGER +FINGERED +FINGERHUT +FINGERING +FINGERNAIL +FINGERNAILS +FINGERPRINT +FINGERPRINTED +FINGERPRINTING +FINGERPRINTS +FINGERS +FINGERTIPS +FINI +FINICKY +FINING +FININVEST +FINISH +FINISHED +FINISHER +FINISHERS +FINISHES +FINISHING +FINITE +FINK +FINK'S +FINKEL +FINKELSTEIN +FINLAND +FINLAND'S +FINLAY +FINLEY +FINMECCANICA +FINN +FINNAIR +FINNEGAN +FINNEY +FINNISH +FINNS +FINO +FINS +FINSTROM +FINUCANE +FIONA +FIORE +FIORELLO +FIORENTINO +FIORINI +FIR +FIRE +FIRE'S +FIREARM +FIREARMS +FIREBALL +FIREBALLS +FIREBIRD +FIREBIRDS +FIREBOMB +FIREBOMBED +FIREBOMBING +FIREBOMBINGS +FIREBOMBS +FIREBRAND +FIRECRACKER +FIRECRACKERS +FIRED +FIREFIGHT +FIREFIGHTER +FIREFIGHTERS +FIREFIGHTERS' +FIREFIGHTING +FIREFIGHTS +FIREFLIES +FIREFLY +FIREHOUSE +FIREMAN +FIREMAN'S +FIREMEN +FIREPLACE +FIREPLACES +FIREPOWER +FIREPROOF +FIRES +FIRESIDE +FIRESTONE +FIRESTONE'S +FIRESTORM +FIREWOOD +FIREWORKS +FIRING +FIRINGS +FIRM +FIRM'S +FIRMAMENT +FIRMED +FIRMER +FIRMING +FIRMLY +FIRMNESS +FIRMS +FIRMS' +FIRS +FIRST +FIRSTBORN +FIRSTFED +FIRSTHAND +FIRSTLY +FIRSTQUARTER +FIRSTS +FIRTH +FISCAL +FISCALINI +FISCALLY +FISCHBACH +FISCHER +FISCHER'S +FISH +FISH'S +FISHBEIN +FISHBOWL +FISHBURNE +FISHED +FISHER +FISHER'S +FISHERIES +FISHERMAN +FISHERMAN'S +FISHERMEN +FISHERMEN'S +FISHERS +FISHERY +FISHES +FISHING +FISHKILL +FISHMAN +FISHY +FISK +FISKE +FISKE'S +FISONS +FISSILE +FISSION +FISSIONABLE +FISSURE +FISSURES +FIST +FISTED +FISTFIGHT +FISTFIGHTS +FISTFUL +FISTICUFFS +FISTS +FIT +FITCH +FITCH'S +FITCHBURG +FITES +FITFUL +FITFULLY +FITNESS +FITS +FITTED +FITTER +FITTEST +FITTING +FITTINGLY +FITTINGS +FITTIPALDI +FITTS +FITZ +FITZGERALD +FITZGERALD'S +FITZPATRICK +FITZSIMMONS +FITZWATER +FITZWATER'S +FIVE +FIVE'S +FIVEFOLD +FIVES +FIX +FIXATED +FIXATION +FIXED +FIXER +FIXES +FIXING +FIXTURE +FIXTURES +FIZZ +FIZZLE +FIZZLED +FJORDS +FLA +FLABBERGASTED +FLABBY +FLACK +FLAG +FLAGGED +FLAGGING +FLAGLER +FLAGPOLE +FLAGRANT +FLAGRANTLY +FLAGS +FLAGSHIP +FLAGSTAFF +FLAGSTAR +FLAHERTY +FLAILING +FLAIR +FLAK +FLAKE +FLAKES +FLAKING +FLAKY +FLAMBOYANCE +FLAMBOYANT +FLAME +FLAMED +FLAMENCO +FLAMES +FLAMING +FLAMINGO +FLAMINGOS +FLAMMABILITY +FLAMMABLE +FLANAGAN +FLANDERS +FLANIGAN +FLANK +FLANKED +FLANKING +FLANKS +FLANNEL +FLANNERY +FLANNIGAN +FLAP +FLAPPING +FLAPS +FLARE +FLARED +FLARES +FLAREUP +FLARING +FLASH +FLASHBACK +FLASHBACKS +FLASHDANCE +FLASHED +FLASHES +FLASHIER +FLASHING +FLASHLIGHT +FLASHLIGHTS +FLASHPOINT +FLASHPOINTS +FLASHY +FLASK +FLAT +FLATBED +FLATBUSH +FLATEAU +FLATHEAD +FLATLANDS +FLATLEY +FLATLY +FLATS +FLATTEN +FLATTENED +FLATTENING +FLATTER +FLATTERED +FLATTERING +FLATTERY +FLATWARE +FLAUNT +FLAUNTED +FLAUNTING +FLAVIN +FLAVOR +FLAVORED +FLAVORFUL +FLAVORING +FLAVORINGS +FLAVORS +FLAVR +FLAW +FLAWED +FLAWLESS +FLAWLESSLY +FLAWS +FLAX +FLEA +FLEAS +FLECK +FLECKED +FLED +FLEDGED +FLEDGING +FLEDGLING +FLEE +FLEECE +FLEECED +FLEEING +FLEER +FLEES +FLEET +FLEET'S +FLEETING +FLEETS +FLEETWOOD +FLEISCHER +FLEISCHMAN +FLEISCHMANN +FLEISHER +FLEISHMAN +FLEISS +FLEISS' +FLEMING +FLEMING'S +FLEMISH +FLEMMING +FLESH +FLESHED +FLESHY +FLETCHER +FLETCHER'S +FLEUR +FLEURY +FLEW +FLEX +FLEXED +FLEXI +FLEXIBILITY +FLEXIBLE +FLEXIBLY +FLEXING +FLICK +FLICKED +FLICKER +FLICKERED +FLICKERING +FLICKERS +FLICKING +FLICKS +FLIER +FLIERS +FLIES +FLIGHT +FLIGHT'S +FLIGHTS +FLIMSY +FLINCH +FLINCHED +FLING +FLINGING +FLINGS +FLINT +FLINTSTONE +FLINTSTONES +FLIP +FLIPPANT +FLIPPED +FLIPPER +FLIPPERS +FLIPPING +FLIPPO +FLIPS +FLIRT +FLIRTATION +FLIRTATIOUS +FLIRTED +FLIRTING +FLIRTS +FLO +FLOAT +FLOATED +FLOATER +FLOATERS +FLOATING +FLOATS +FLOCK +FLOCKED +FLOCKING +FLOCKS +FLOGGED +FLOGGING +FLOM +FLOOD +FLOODED +FLOODGATES +FLOODING +FLOODLIGHTS +FLOODS +FLOODWATERS +FLOOR +FLOORBOARDS +FLOORED +FLOORING +FLOORS +FLOP +FLOPPED +FLOPPING +FLOPPY +FLOPS +FLOR +FLORA +FLORAKIS +FLORAL +FLORENCE +FLORENDO +FLORENTINE +FLORES +FLORID +FLORIDA +FLORIDA'S +FLORIDIAN +FLORIDIANS +FLORIO +FLORIO'S +FLORIST +FLORISTS +FLORSHEIM +FLOSS +FLOTATION +FLOTILLA +FLOTSAM +FLOUNDER +FLOUNDERED +FLOUNDERING +FLOUR +FLOURED +FLOURISH +FLOURISHED +FLOURISHES +FLOURISHING +FLOUT +FLOUTED +FLOUTING +FLOW +FLOWED +FLOWER +FLOWERED +FLOWERING +FLOWERS +FLOWERY +FLOWING +FLOWN +FLOWS +FLOYD +FLOYD'S +FLU +FLUCTUATE +FLUCTUATED +FLUCTUATES +FLUCTUATING +FLUCTUATION +FLUCTUATIONS +FLUE +FLUENCY +FLUENT +FLUENTLY +FLUFF +FLUFFY +FLUID +FLUIDITY +FLUIDS +FLUKE +FLUNG +FLUNK +FLUNKED +FLUNKING +FLUOR +FLUOR'S +FLUORESCENT +FLUORIDE +FLURRIES +FLURRY +FLUSH +FLUSHED +FLUSHES +FLUSHING +FLUSTERED +FLUTE +FLUTES +FLUTIST +FLUTTER +FLUTTERED +FLUTTERING +FLUTTERS +FLUX +FLY +FLYER +FLYERS +FLYING +FLYNN +FLYNN'S +FLYNT +FLYOVER +FO +FOAM +FOAMING +FOB +FOCAL +FOCUS +FOCUSED +FOCUSES +FOCUSING +FOCUSSED +FODDER +FODOR +FOE +FOERSTER +FOES +FOG +FOGARTY +FOGEL +FOGELMAN +FOGERTY +FOGG +FOGGIEST +FOGGY +FOGLIETTA +FOIBLES +FOIE +FOIL +FOILED +FOILING +FOILS +FOIST +FOISTED +FOKKER +FOKKER'S +FOLD +FOLDED +FOLDER +FOLDERS +FOLDING +FOLDS +FOLEY +FOLEY'S +FOLGER +FOLGERS +FOLHA +FOLIAGE +FOLIC +FOLIO +FOLK +FOLKLORE +FOLKS +FOLKS' +FOLKSY +FOLLICLES +FOLLIES +FOLLINI +FOLLOW +FOLLOWED +FOLLOWER +FOLLOWERS +FOLLOWING +FOLLOWINGS +FOLLOWS +FOLLOWUP +FOLLY +FOLSOM +FOMENT +FOMENTED +FOMENTING +FOMON +FOND +FONDA +FONDA'S +FONDEST +FONDLED +FONDLING +FONDLY +FONDNESS +FONER +FONG +FONSECA +FONT +FONTAINE +FONTANA +FONTES +FONTS +FOO +FOOD +FOOD'S +FOODMAKER +FOODS +FOODS' +FOODSERVICE +FOODSTUFFS +FOOL +FOOL'S +FOOLED +FOOLHARDY +FOOLING +FOOLISH +FOOLISHLY +FOOLISHNESS +FOOLPROOF +FOOLS +FOOT +FOOTAGE +FOOTBALL +FOOTBALL'S +FOOTBALLS +FOOTE +FOOTED +FOOTER +FOOTERS +FOOTHILL +FOOTHILLS +FOOTHOLD +FOOTHOLDS +FOOTING +FOOTLOOSE +FOOTNOTE +FOOTNOTES +FOOTPRINT +FOOTPRINTS +FOOTSTEPS +FOOTWEAR +FOOTWORK +FOR +FORAGE +FORAGING +FORAY +FORAYS +FORBADE +FORBEARANCE +FORBES +FORBES' +FORBES'S +FORBID +FORBIDDEN +FORBIDDING +FORBIDS +FORCE +FORCE'S +FORCED +FORCEFUL +FORCEFULLY +FORCEPS +FORCES +FORCES' +FORCIBLE +FORCIBLY +FORCING +FORD +FORD'S +FORDHAM +FORDICE +FORDS +FORE +FOREARM +FOREARMS +FOREBEARS +FOREBODING +FORECAST +FORECASTED +FORECASTER +FORECASTERS +FORECASTING +FORECASTS +FORECLOSE +FORECLOSED +FORECLOSING +FORECLOSURE +FORECLOSURES +FOREFATHERS +FOREFINGER +FOREFRONT +FOREGO +FOREGOING +FOREGONE +FOREGROUND +FOREHAND +FOREHEAD +FOREHEADS +FOREIGN +FOREIGNER +FOREIGNERS +FOREIGNERS' +FOREMAN +FOREMAN'S +FOREMEN +FOREMOST +FORENSIC +FORENSICS +FOREPERSON +FOREPLAY +FORERUNNER +FORERUNNERS +FORESAW +FORESEE +FORESEEABLE +FORESEEN +FORESEES +FORESHADOW +FORESHADOWED +FORESHADOWING +FORESHADOWS +FORESIGHT +FORESMAN +FOREST +FOREST'S +FORESTALL +FORESTALLED +FORESTED +FORESTER +FORESTERS +FORESTRY +FORESTS +FORETELL +FORETICH +FORETOLD +FOREVER +FOREWARNED +FOREWOMAN +FOREWORD +FORFEIT +FORFEITED +FORFEITING +FORFEITURE +FORFEITURES +FORGAVE +FORGE +FORGED +FORGER +FORGERIES +FORGERY +FORGES +FORGET +FORGETFUL +FORGETFULNESS +FORGETS +FORGETTABLE +FORGETTING +FORGING +FORGIVE +FORGIVEN +FORGIVENESS +FORGIVES +FORGIVING +FORGO +FORGOING +FORGONE +FORGOT +FORGOTTEN +FORINT +FORINTS +FORK +FORKED +FORKING +FORKLIFT +FORKLIFTS +FORKS +FORLORN +FORM +FORMA +FORMAL +FORMALDEHYDE +FORMALITIES +FORMALITY +FORMALIZE +FORMALIZED +FORMALIZING +FORMALLY +FORMAN +FORMAT +FORMATION +FORMATIONS +FORMATIVE +FORMATS +FORMED +FORMER +FORMERLY +FORMICA +FORMIDABLE +FORMING +FORMOSA +FORMS +FORMULA +FORMULAIC +FORMULARY +FORMULAS +FORMULATE +FORMULATED +FORMULATING +FORMULATION +FORMULATIONS +FORNEY +FORREST +FORRESTAL +FORRESTER +FORSAKE +FORSAKEN +FORSAKING +FORSBERG +FORSCHNER +FORSEEABLE +FORST +FORSTER +FORSTER'S +FORSTMANN +FORSTMANN'S +FORSWEAR +FORSYTH +FORSYTHE +FORT +FORTAS +FORTE +FORTH +FORTHCOMING +FORTHRIGHT +FORTHRIGHTLY +FORTHWITH +FORTIER +FORTIER'S +FORTIES +FORTIETH +FORTIFICATIONS +FORTIFIED +FORTIFY +FORTIFYING +FORTIN +FORTIS +FORTITUDE +FORTNEY +FORTNIGHT +FORTRESS +FORTRESSES +FORTS +FORTUITOUS +FORTUNA +FORTUNATE +FORTUNATELY +FORTUNATO +FORTUNE +FORTUNE'S +FORTUNES +FORTY +FORTY'S +FORUM +FORUM'S +FORUMS +FORWARD +FORWARDED +FORWARDING +FORWARDS +FORZA +FOSBACK +FOSLER +FOSS +FOSSE +FOSSEL +FOSSEY +FOSSIL +FOSSILIZED +FOSSILS +FOSTER +FOSTER'S +FOSTERED +FOSTERING +FOSTERS +FOTOPOULOS +FOUAD +FOUGHT +FOUL +FOULED +FOULING +FOULS +FOUND +FOUNDATION +FOUNDATION'S +FOUNDATIONAL +FOUNDATIONS +FOUNDED +FOUNDER +FOUNDER'S +FOUNDERED +FOUNDERING +FOUNDERS +FOUNDERS' +FOUNDING +FOUNDRIES +FOUNDRY +FOUNTAIN +FOUNTAINS +FOUR +FOUR'S +FOURFOLD +FOURNIER +FOURS +FOURSOME +FOURTEEN +FOURTEENS +FOURTEENTH +FOURTH +FOURTHQUARTER +FOURTHS +FOWL +FOWLER +FOWLER'S +FOX +FOX'S +FOXBORO +FOXES +FOXHOLE +FOXHOLES +FOXMAN +FOXMEYER +FOXWOODS +FOXX +FOY +FOYER +FOYT +FRACAS +FRACTION +FRACTIONAL +FRACTIONALLY +FRACTIONS +FRACTIOUS +FRACTURE +FRACTURED +FRACTURES +FRACTURING +FRAGA +FRAGILE +FRAGILITY +FRAGMENT +FRAGMENTARY +FRAGMENTATION +FRAGMENTED +FRAGMENTING +FRAGMENTS +FRAGRANCE +FRAGRANCES +FRAGRANT +FRAIL +FRAILTIES +FRAILTY +FRAMATOME +FRAME +FRAMED +FRAMERS +FRAMES +FRAMEWORK +FRAMING +FRAMINGHAM +FRAMPTON +FRAN +FRANC +FRANC'S +FRANCA +FRANCAIS +FRANCAISE +FRANCE +FRANCE'S +FRANCES +FRANCESCA +FRANCESCO +FRANCHISE +FRANCHISE'S +FRANCHISED +FRANCHISEE +FRANCHISEES +FRANCHISEES' +FRANCHISER +FRANCHISERS +FRANCHISES +FRANCHISING +FRANCINE +FRANCIS +FRANCISCAN +FRANCISCANS +FRANCISCO +FRANCISCO'S +FRANCISO +FRANCK +FRANCKE +FRANCO +FRANCO'S +FRANCOIS +FRANCOISE +FRANCOPHONE +FRANCS +FRANJIEH +FRANJO +FRANK +FRANK'S +FRANKE +FRANKEL +FRANKEN +FRANKENBERG +FRANKENHEIMER +FRANKENSTEIN +FRANKENSTEIN'S +FRANKFORT +FRANKFURT +FRANKFURT'S +FRANKFURTER +FRANKIE +FRANKING +FRANKLIN +FRANKLIN'S +FRANKLY +FRANKLYN +FRANKNESS +FRANKS +FRANS +FRANTIC +FRANTICALLY +FRANTISEK +FRANTZ +FRANZ +FRAPH +FRASER +FRASIER +FRASURE +FRAT +FRATERNAL +FRATERNITIES +FRATERNITY +FRATERNIZATION +FRATRICIDAL +FRAUD +FRAUDS +FRAUDULENT +FRAUDULENTLY +FRAUGHT +FRAWLEY +FRAY +FRAYED +FRAYING +FRAZEE +FRAZER +FRAZIER +FRAZIER'S +FRAZZLED +FREAK +FREAKED +FREAKING +FREAKISH +FREAKS +FREAKY +FREARS +FRECKLES +FRED +FRED'S +FREDA +FREDDIE +FREDDY +FREDDY'S +FREDERIC +FREDERICA +FREDERICK +FREDERICK'S +FREDERICKS +FREDERICKSBURG +FREDRIC +FREDRICK +FREE +FREEBIE +FREEBIES +FREED +FREEDENBERG +FREEDMAN +FREEDOM +FREEDOM'S +FREEDOMS +FREEFALL +FREEH +FREEH'S +FREEHOLD +FREEING +FREELANCE +FREELY +FREEMAN +FREEMAN'S +FREEMEN +FREEPORT +FREER +FREES +FREESE +FREEST +FREESTANDING +FREESTYLE +FREETOWN +FREEWAY +FREEWAYS +FREEWHEELING +FREEZE +FREEZER +FREEZERS +FREEZES +FREEZING +FREI +FREIA +FREIGHT +FREIGHTER +FREIGHTERS +FREIGHTWAYS +FREIJ +FREIND +FREITAS +FRELIMO +FREMD +FREMONT +FREMONT'S +FRENCH +FRENCH'S +FRENCHMAN +FRENCHMEN +FRENETIC +FRENKEL +FRENZ +FRENZEL +FRENZIED +FRENZY +FREON +FREQUENCIES +FREQUENCY +FREQUENT +FREQUENTED +FREQUENTLY +FREQUENTS +FRERE +FRERES +FRESCO +FRESCOES +FRESH +FRESHEN +FRESHER +FRESHEST +FRESHLY +FRESHMAN +FRESHMEN +FRESHNESS +FRESHWATER +FRESNO +FRET +FRETS +FRETTED +FRETTING +FREUD +FREUD'S +FREUDIAN +FREUND +FREY +FRIAR +FRIARS +FRICK +FRICKE +FRICKER +FRICTION +FRICTIONS +FRIDA +FRIDAY +FRIDAY'S +FRIDAYS +FRIDGE +FRIED +FRIEDA +FRIEDAN +FRIEDBERG +FRIEDER +FRIEDHELM +FRIEDLAND +FRIEDLANDER +FRIEDMAN +FRIEDMAN'S +FRIEDMANN +FRIEDRICH +FRIEDRICHS +FRIEND +FRIEND'S +FRIENDLIER +FRIENDLINESS +FRIENDLY +FRIENDS +FRIENDS' +FRIENDSHIP +FRIENDSHIPS +FRIER +FRIES +FRIESEN +FRIESZ +FRIEZE +FRIGATE +FRIGATES +FRIGHT +FRIGHTEN +FRIGHTENED +FRIGHTENING +FRIGHTENINGLY +FRIGHTENS +FRIGHTFUL +FRIGID +FRILLS +FRILLY +FRINGE +FRINGED +FRINGES +FRISBEE +FRISCH +FRISCO +FRISKED +FRISKY +FRIST +FRITO +FRITTERED +FRITTS +FRITZ +FRIVOLITY +FRIVOLOUS +FRO +FROCK +FROG +FROGMAN +FROGMEN +FROGS +FROHNMAYER +FROLIC +FROLICKING +FROLOV +FROM +FROMME +FROMSTEIN +FRONDS +FRONT +FRONT'S +FRONTAL +FRONTED +FRONTERHOUSE +FRONTIER +FRONTIERE +FRONTIERES +FRONTIERS +FRONTING +FRONTLINE +FRONTRUNNER +FRONTRUNNERS +FRONTS +FROST +FROST'S +FROSTBITE +FROSTED +FROSTING +FROSTS +FROSTY +FROTH +FROTHY +FROWN +FROWNED +FROWNING +FROWNS +FROZE +FROZEN +FRUCTOSE +FRUEHAUF +FRUGAL +FRUGALITY +FRUIT +FRUITCAKE +FRUITFUL +FRUITION +FRUITLESS +FRUITLESSLY +FRUITOPIA +FRUITS +FRUITY +FRUM +FRUMPY +FRUNZE +FRUSTRATE +FRUSTRATED +FRUSTRATES +FRUSTRATING +FRUSTRATION +FRUSTRATIONS +FRY +FRY'S +FRYE +FRYER +FRYING +FU +FUAD +FUCHS +FUCHSIA +FUDGE +FUDGED +FUDGING +FUEGO +FUEHRER +FUEL +FUELED +FUELING +FUELLED +FUELS +FUENTES +FUER +FUGITIVE +FUGITIVES +FUGUE +FUHR +FUHRER +FUHRMAN +FUHRMAN'S +FUJI +FUJI'S +FUJIAN +FUJII +FUJIMORI +FUJIMORI'S +FUJINAMI +FUJISANKEI +FUJISAWA +FUJITA +FUJITSU +FUJITSU'S +FUJIWARA +FUKUDA +FUKUOKA +FUKUSHIMA +FULANI +FULBRIGHT +FULCRUM +FULD +FULDA +FULFIL +FULFILL +FULFILLED +FULFILLING +FULFILLMENT +FULFILLS +FULGENCIO +FULGHUM +FULL +FULLBACK +FULLER +FULLER'S +FULLERTON +FULLEST +FULLNESS +FULLTIME +FULLY +FULTON +FULTZ +FULWOOD +FUMBLE +FUMBLED +FUMBLES +FUMBLING +FUME +FUMED +FUMES +FUMING +FUMIO +FUN +FUNARO +FUNCTION +FUNCTIONAL +FUNCTIONALITY +FUNCTIONALLY +FUNCTIONARIES +FUNCTIONARY +FUNCTIONED +FUNCTIONING +FUNCTIONS +FUND +FUND'S +FUNDAMENTAL +FUNDAMENTALISM +FUNDAMENTALIST +FUNDAMENTALISTS +FUNDAMENTALLY +FUNDAMENTALS +FUNDED +FUNDING +FUNDRAISER +FUNDRAISERS +FUNDRAISING +FUNDS +FUNDS' +FUNERAL +FUNERALS +FUNG +FUNG'S +FUNGAL +FUNGI +FUNGIBLE +FUNGICIDE +FUNGICIDES +FUNGUS +FUNK +FUNKY +FUNNEL +FUNNELED +FUNNELING +FUNNELS +FUNNIER +FUNNIEST +FUNNY +FUQUA +FUR +FURASH +FURIOUS +FURIOUSLY +FURLAUD +FURLONG +FURLONGS +FURLOUGH +FURLOUGHED +FURLOUGHS +FURMAN +FURNACE +FURNACES +FURNISH +FURNISHED +FURNISHING +FURNISHINGS +FURNITURE +FUROR +FURR'S +FURRIERS +FURROWED +FURRY +FURS +FURST +FURSTENBERG +FURTHER +FURTHERANCE +FURTHERED +FURTHERING +FURTHERMORE +FURTHERS +FURTHEST +FURTIVE +FURTIVELY +FURY +FUSCO +FUSE +FUSED +FUSELAGE +FUSES +FUSILLADE +FUSING +FUSION +FUSS +FUSSING +FUSSY +FUTCH +FUTILE +FUTILELY +FUTILITY +FUTRELL +FUTURE +FUTURE'S +FUTURES +FUTURIST +FUTURISTIC +FUTURISTS +FUZZ +FUZZY +FYFFES +FYODOR +FYODOROV +G. +G.'S +G.S +GA +GAB +GABBARD +GABBERT +GABE +GABEL +GABELE +GABELLI +GABLE +GABLER +GABLES +GABON +GABOR +GABOR'S +GABRIEL +GABRIEL'S +GABRIELA +GABRIELE +GABRIELLE +GABY +GACHA +GACHET +GACY +GAD +GADD +GADDIS +GADFLY +GADGET +GADGETRY +GADGETS +GADHAFI +GADHAFI'S +GADSDEN +GAEL +GAELIC +GAETANO +GAETTI +GAFFE +GAFFES +GAFFNEY +GAG +GAGARIN +GAGAUZ +GAGE +GAGGED +GAGGING +GAGGLE +GAGNE +GAGNON +GAGS +GAIDAR +GAIDAR'S +GAIL +GAILY +GAIN +GAINED +GAINER +GAINERS +GAINES +GAINESVILLE +GAINEY +GAINING +GAINS +GAIT +GAITHER +GAITHERSBURG +GAL +GALA +GALACTIC +GALAN +GALAN'S +GALANIS +GALANT +GALANTE +GALANTER +GALAPAGOS +GALAS +GALATI +GALAXIES +GALAXY +GALBRAITH +GALBREATH +GALE +GALEANO +GALEN +GALENA +GALERIES +GALES +GALESBURG +GALICIA +GALIL +GALILEE +GALILEO +GALILEO'S +GALINA +GALINDO +GALINSKI +GALL +GALLAGHER +GALLANT +GALLARDO +GALLATIN +GALLAUDET +GALLBLADDER +GALLE +GALLEGLY +GALLEGO +GALLEGOS +GALLEON +GALLERIA +GALLERIES +GALLERY +GALLERY'S +GALLES +GALLEY +GALLEYS +GALLIC +GALLIGAN +GALLING +GALLIUM +GALLO +GALLO'S +GALLON +GALLONS +GALLOP +GALLOPED +GALLOPING +GALLOWAY +GALLOWS +GALLSTONES +GALLUCCI +GALLUP +GALOOB +GALORE +GALS +GALSTON +GALVAN +GALVANIZE +GALVANIZED +GALVANIZING +GALVESTON +GALVIN +GALWAY +GAMAL +GAMBIA +GAMBINO +GAMBIT +GAMBLE +GAMBLE'S +GAMBLED +GAMBLER +GAMBLERS +GAMBLES +GAMBLING +GAMBOA +GAME +GAME'S +GAMELY +GAMES +GAMES' +GAMESMANSHIP +GAMEZ +GAMING +GAMMA +GAMMON +GAMPEL +GAMSAKHURDIA +GAMUT +GAN +GANDALF +GANDER +GANDHI +GANDHI'S +GANDY +GANES +GANG +GANG'S +GANGBUSTERS +GANGES +GANGING +GANGLAND +GANGLY +GANGRENE +GANGS +GANGSTA +GANGSTER +GANGSTERS +GANIC +GANIS +GANN +GANNETT +GANNETT'S +GANNON +GANS +GANSU +GANT +GANTLET +GANTOS +GANTRY +GANTT +GANZ +GAO +GAP +GAP'S +GAPING +GAPS +GAR +GARAGE +GARAGES +GARAGIOLA +GARAMENDI +GARAMENDI'S +GARANG +GARAY +GARB +GARBAGE +GARBED +GARBER +GARBLED +GARBO +GARBO'S +GARCETTI +GARCETTI'S +GARCIA +GARCIA'S +GARDE +GARDEN +GARDEN'S +GARDENA +GARDENER +GARDENER'S +GARDENERS +GARDENIA +GARDENING +GARDENS +GARDINER +GARDINI +GARDNER +GARDNER'S +GARETH +GARFIELD +GARFINKEL +GARFINKLE +GARFUNKEL +GARGAN +GARGANO +GARGANTUAN +GARGOYLES +GARIBALDI +GARIN +GARISH +GARLAND +GARLANDS +GARLIC +GARMENT +GARMENTS +GARN +GARNER +GARNER'S +GARNERED +GARNERING +GARNET +GARNETT +GARNISH +GARNISHED +GARR +GARRELS +GARRET +GARRETT +GARRETT'S +GARREY +GARRI +GARRICK +GARRISON +GARRISONS +GARRITY +GARRULOUS +GARRY +GARSON +GARSTEN +GARTEN +GARTER +GARTH +GARTNER +GARUDA +GARVEY +GARVIN +GARWOOD +GARY +GARY'S +GARZA +GARZARELLI +GAS +GAS'S +GASCH +GASEOUS +GASES +GASH +GASHES +GASKET +GASKETS +GASKIN +GASKINS +GASOHOL +GASOLINE +GASOLINES +GASP +GASPAR +GASPED +GASPING +GASPS +GASSED +GASSEE +GASSES +GASSING +GASTINEAU +GASTON +GASTRIC +GASTROINTESTINAL +GASTRONOMIC +GATE +GATED +GATEKEEPER +GATEKEEPERS +GATES +GATES' +GATES'S +GATEWAY +GATEWAY'S +GATEWAYS +GATHER +GATHERED +GATHERERS +GATHERING +GATHERINGS +GATHERS +GATLIN +GATLING +GATOR +GATORADE +GATORS +GATOS +GATOS' +GATSBY +GATWICK +GAUBERT +GAUDY +GAUGE +GAUGED +GAUGES +GAUGING +GAUGUIN +GAULLE +GAULLE'S +GAULLIST +GAULT +GAULTIER +GAUNT +GAUNTLET +GAUTHIER +GAUZE +GAVE +GAVEL +GAVILAN +GAVIN +GAVIRIA +GAVIRIA'S +GAVRIIL +GAWK +GAWKERS +GAWKING +GAY +GAYDOS +GAYE +GAYLE +GAYLORD +GAYNOR +GAYOOM +GAYS +GAZ +GAZA +GAZA'S +GAZANS +GAZE +GAZEBO +GAZED +GAZELLE +GAZES +GAZETA +GAZETTE +GAZING +GAZPROM +GBADOLITE +GDANSK +GDLYAN +GEAGEA +GEAGEA'S +GEAR +GEAR'S +GEARAN +GEARBOX +GEARED +GEARHART +GEARING +GEARS +GEARY +GEBBIE +GEDDA +GEDDES +GEDULD +GEE +GEEK +GEEKS +GEENA +GEER +GEES +GEESE +GEEZ +GEFFEN +GEHRIG +GEHRIG'S +GEHRY +GEICO +GEIER +GEIGER +GEIGY +GEIGY'S +GEISEL +GEISHA +GEIST +GEJDENSON +GEKAS +GEL +GELATIN +GELB +GELBARD +GELBART +GELCO +GELDERMANN +GELDING +GELDOF +GELLER +GELLER'S +GELLI +GELMAN +GELS +GEM +GEMAYEL +GEMAYEL'S +GEMCRAFT +GEMINI +GEMMA +GEMS +GEMSTONES +GEN +GENA +GENCOR +GENCORP +GENCORP'S +GENDARMES +GENDER +GENDERS +GENE +GENE'S +GENEALOGICAL +GENEALOGY +GENELABS +GENENTECH +GENENTECH'S +GENERAL +GENERAL'S +GENERALE +GENERALE'S +GENERALES +GENERALI +GENERALISSIMO +GENERALISTS +GENERALITIES +GENERALIZATION +GENERALIZATIONS +GENERALIZE +GENERALIZED +GENERALLY +GENERALS +GENERATE +GENERATED +GENERATES +GENERATING +GENERATION +GENERATION'S +GENERATIONAL +GENERATIONS +GENERATOR +GENERATORS +GENERIC +GENERICALLY +GENERICS +GENEROSITY +GENEROUS +GENEROUSLY +GENES +GENESCO +GENESEE +GENESIS +GENETIC +GENETICALLY +GENETICIST +GENETICISTS +GENETICS +GENEVA +GENEVA'S +GENEVIEVE +GENEX +GENGHIS +GENIAL +GENIE +GENISCO +GENITAL +GENITALIA +GENITALS +GENIUS +GENIUSES +GENMAR +GENNADI +GENNADY +GENNIFER +GENOA +GENOCIDAL +GENOCIDE +GENOESE +GENOME +GENOTYPE +GENOTYPES +GENOVESE +GENRAD +GENRE +GENRES +GENS +GENSCHER +GENSCHER'S +GENSIA +GENSTAR +GENT +GENTEEL +GENTEX +GENTILE +GENTILES +GENTILITY +GENTLE +GENTLEMAN +GENTLEMAN'S +GENTLEMANLY +GENTLEMEN +GENTLEMEN'S +GENTLENESS +GENTLER +GENTLY +GENTRIFICATION +GENTRY +GENUINE +GENUINELY +GENUS +GENZYME +GEO +GEODESIC +GEOFF +GEOFFREY +GEOFFRION +GEOGRAPHIC +GEOGRAPHICAL +GEOGRAPHICALLY +GEOGRAPHY +GEOLOGIC +GEOLOGICAL +GEOLOGICALLY +GEOLOGIST +GEOLOGISTS +GEOLOGY +GEOMETRIC +GEOMETRY +GEOPHYSICAL +GEOPHYSICIST +GEOPHYSICS +GEOPOLITICAL +GEOPOLITICS +GEORG +GEORGAKIS +GEORGE +GEORGE'S +GEORGES +GEORGESON +GEORGETOWN +GEORGETOWN'S +GEORGETTE +GEORGI +GEORGIA +GEORGIA'S +GEORGIAN +GEORGIANS +GEORGIE +GEORGUDIS +GEORGY +GEOSTATIONARY +GEOTEK +GEOTHERMAL +GEPHARDT +GEPHARDT'S +GERAGHTY +GERAIS +GERALD +GERALDINE +GERALDO +GERANIUMS +GERARD +GERARDO +GERASHCHENKO +GERASIMOV +GERBER +GERBER'S +GERBRANDT +GERCHAS +GERD +GERDES +GERE +GEREMEK +GEREN +GERGEN +GERHARD +GERHARDT +GERI +GERIATRIC +GERIATRICS +GERLACH +GERM +GERMAIN +GERMAINE +GERMAN +GERMAN'S +GERMANE +GERMANIC +GERMANS +GERMANS' +GERMANTOWN +GERMANY +GERMANY'S +GERMANYS +GERMINATE +GERMOND +GERMPLASM +GERMS +GERONIMO +GERONTOLOGY +GERRI +GERRIT +GERRITY +GERRY +GERRYMANDER +GERRYMANDERED +GERRYMANDERING +GERSHMAN +GERSHON +GERSHWIN +GERSHWIN'S +GERSON +GERSTEIN +GERSTNER +GERSTNER'S +GERT +GERTRUDE +GERTZ +GERULAITIS +GESCHKE +GESELL +GESELL'S +GESTAPO +GESTATION +GESTETNER +GESTURE +GESTURED +GESTURES +GESTURING +GET +GETAWAY +GETAWAYS +GETMAN +GETS +GETTER +GETTERS +GETTIN' +GETTING +GETTY +GETTY'S +GETTYSBURG +GETZ +GEVAERT +GEYER +GEYSER +GEYSERS +GHAITH +GHALI +GHALI'S +GHANA +GHANA'S +GHANAIAN +GHANAIANS +GHARB +GHASTLY +GHAZI +GHEORGHE +GHERMAN +GHETTO +GHETTOS +GHEZ +GHOLAMREZA +GHORBANIFAR +GHOST +GHOSTBUSTERS +GHOSTLY +GHOSTS +GHOSTWRITER +GHOULISH +GHULAM +GIACOMO +GIAMATTI +GIAN +GIANCANA +GIANCARLO +GIANFRANCO +GIANNI +GIANNINI +GIANT +GIANT'S +GIANTS +GIANTS' +GIB +GIBB +GIBBERISH +GIBBON +GIBBONS +GIBBS +GIBRALTAR +GIBRALTAR'S +GIBSON +GIBSON'S +GIDDINGS +GIDDY +GIDEL +GIDEON +GIELGUD +GIFFORD +GIFT +GIFTED +GIFTS +GIG +GIGABYTES +GIGANTE +GIGANTIC +GIGGLE +GIGGLED +GIGGLES +GIGGLING +GIGI +GIGNOUX +GIGOLO +GIGOT +GIGS +GIL +GILA +GILBERT +GILBERT'S +GILBERTO +GILBERTSON +GILCHREST +GILCHRIST +GILDA +GILDED +GILDER +GILEAD +GILES +GILFORD +GILL +GILLEN +GILLERS +GILLES +GILLESPIE +GILLESPIE'S +GILLETT +GILLETTE +GILLETTE'S +GILLEY +GILLIAM +GILLIAM'S +GILLIAN +GILLIGAN +GILLIGAN'S +GILLIS +GILLMAN +GILLMOR +GILLOOLY +GILLS +GILMAN +GILMARTIN +GILMER +GILMORE +GILMOUR +GILROY +GILROY'S +GILT +GILTS +GIMME +GIMMICK +GIMMICKRY +GIMMICKS +GIMMICKY +GIN +GINA +GINANDJAR +GINGER +GINGERBREAD +GINGERLY +GINGRICH +GINGRICH'S +GINN +GINNIE +GINNY +GINO +GINSBERG +GINSBURG +GINSBURG'S +GINSENG +GINZA +GIO +GIORDANO +GIORGIO +GIOVANNI +GIPPER +GIPSON +GIRAFFE +GIRAFFES +GIRARD +GIRARDEAU +GIRD +GIRDERS +GIRDING +GIRDLE +GIRDLES +GIRL +GIRL'S +GIRLFRIEND +GIRLFRIEND'S +GIRLFRIENDS +GIRLISH +GIRLS +GIRLS' +GIROLDI +GIROUX +GIROZENTRALE +GIRSKY +GIRTH +GISCARD +GISELLE +GISENYI +GISH +GISSIN +GIST +GITANO +GITANO'S +GITLIN +GIUGNI +GIULIANI +GIULIANI'S +GIULIANO +GIULIO +GIUSEPPE +GIVE +GIVEAWAY +GIVEAWAYS +GIVEBACKS +GIVEN +GIVENCHY +GIVENS +GIVER +GIVERS +GIVES +GIVING +GIZA +GIZBERT +GIZMO +GIZMOS +GJELTEN +GLACIAL +GLACIER +GLACIERS +GLAD +GLADDEN +GLADE +GLADES +GLADIATOR +GLADIATORS +GLADLY +GLADSTONE +GLADYS +GLAMOR +GLAMORIZE +GLAMORIZED +GLAMOROUS +GLAMOUR +GLANCE +GLANCED +GLANCES +GLANCING +GLAND +GLANDS +GLANTZ +GLANVILLE +GLARE +GLARED +GLARING +GLASER +GLASGOW +GLASNOST +GLASPIE +GLASS +GLASS'S +GLASSED +GLASSER +GLASSES +GLASSMAN +GLASSWARE +GLASSY +GLAUBER +GLAUCOMA +GLAVINE +GLAVKOSMOS +GLAXO +GLAXO'S +GLAZE +GLAZED +GLAZER +GLAZIER +GLAZING +GLEACHER +GLEAM +GLEAMING +GLEAN +GLEANED +GLEASON +GLEE +GLEEFUL +GLEEFULLY +GLEMP +GLEN +GLENDA +GLENDALE +GLENDENING +GLENFED +GLENN +GLENN'S +GLENNON +GLENS +GLENVIEW +GLENWOOD +GLESS +GLIB +GLICK +GLICKENHAUS +GLICKMAN +GLIDE +GLIDED +GLIDER +GLIDERS +GLIDES +GLIDING +GLIMMER +GLIMMERS +GLIMPSE +GLIMPSED +GLIMPSES +GLINT +GLISTENING +GLITCH +GLITCHES +GLITTER +GLITTERING +GLITTERY +GLITZ +GLITZY +GLO +GLOAT +GLOATING +GLOBAL +GLOBAL'S +GLOBALIZATION +GLOBALIZED +GLOBALLY +GLOBE +GLOBE'S +GLOBES +GLOBETROTTERS +GLOBEX +GLOBO +GLOBS +GLOBULIN +GLOBUS +GLOCK +GLOOM +GLOOMIER +GLOOMILY +GLOOMY +GLORIA +GLORIES +GLORIFICATION +GLORIFIED +GLORIFIES +GLORIFY +GLORIFYING +GLORIOUS +GLORIOUSLY +GLORY +GLOSS +GLOSSARY +GLOSSED +GLOSSER +GLOSSY +GLOUCESTER +GLOVE +GLOVED +GLOVER +GLOVES +GLOW +GLOWACKI +GLOWED +GLOWING +GLOWINGLY +GLOWS +GLUCK +GLUCOSE +GLUE +GLUED +GLUM +GLUMLY +GLUT +GLUTAMATE +GLUTEN +GLUTTED +GLUTTONY +GLYCOL +GLYN +GLYNN +GMBH +GNARLED +GNASHING +GNATCATCHER +GNAU +GNAWING +GNEHM +GNOMES +GO +GO'S +GOAD +GOADED +GOAL +GOALIE +GOALIES +GOALKEEPER +GOALS +GOALTENDER +GOALTENDING +GOAT +GOATEE +GOATS +GOBAIN +GOBBLE +GOBBLED +GOBBLEDYGOOK +GOBBLING +GOBI +GOBIE +GOBLE +GOBLINS +GOBS +GOD +GOD'S +GODARD +GODDAMN +GODDARD +GODDESS +GODDESSES +GODFATHER +GODFATHER'S +GODFREY +GODFROID +GODIVA +GODLESS +GODMOTHER +GODOT +GODOY +GODS +GODSEND +GODUNOV +GODWIN +GODZILLA +GOEBBELS +GOEKEN +GOER +GOERING +GOERS +GOES +GOETHE +GOETSCH +GOETTEL +GOETZ +GOETZ'S +GOFF +GOGGLES +GOGH +GOGH'S +GOH +GOIN' +GOING +GOINGS +GOINS +GOIZUETA +GOKSEL +GOLAN +GOLD +GOLD'S +GOLDA +GOLDBERG +GOLDBERG'S +GOLDBERGER +GOLDBLUM +GOLDEN +GOLDEN'S +GOLDENBERG +GOLDFARB +GOLDFEDER +GOLDFIELDS +GOLDFISH +GOLDIE +GOLDILOCKS +GOLDIN +GOLDING +GOLDINGER +GOLDMAN +GOLDMAN'S +GOLDMANS +GOLDMARK +GOLDOME +GOLDS +GOLDSCHMIDT +GOLDSMITH +GOLDSMITH'S +GOLDSTAR +GOLDSTEIN +GOLDSTEIN'S +GOLDSTON +GOLDSTONE +GOLDWATER +GOLDWATER'S +GOLDWYN +GOLF +GOLF'S +GOLFER +GOLFERS +GOLFING +GOLIATH +GOLISANO +GOLLUST +GOLLY +GOLOB +GOLUB +GOMA +GOMES +GOMEZ +GOMEZ'S +GONAIVES +GONDOLA +GONDOLAS +GONE +GONER +GONG +GONNA +GONORRHEA +GONYEA +GONZAGA +GONZALES +GONZALEZ +GONZALEZ'S +GONZALO +GONZO +GOO +GOOD +GOODALL +GOODBY +GOODBYE +GOODBYES +GOODE +GOODEN +GOODENOW +GOODER +GOODFELLAS +GOODFRIEND +GOODIES +GOODIN +GOODING +GOODLAND +GOODLING +GOODLY +GOODMAN +GOODMAN'S +GOODNESS +GOODNIGHT +GOODRICH +GOODRICH'S +GOODS +GOODSON +GOODSTEIN +GOODWILL +GOODWIN +GOODWIN'S +GOODWYN +GOODY +GOODY'S +GOODYEAR +GOODYEAR'S +GOOEY +GOOF +GOOFED +GOOFING +GOOFY +GOOKIN +GOON +GOONS +GOOP +GOOSE +GOPAC +GOPHER +GOPHERS +GORADZE +GORAN +GORAZDE +GORBACHEV +GORBACHEV'S +GORBACHEVS +GORBUNOV +GORBY +GORDA +GORDIEVSKY +GORDIMER +GORDON +GORDON'S +GORDY +GORE +GORE'S +GORED +GORELICK +GOREN +GORES +GORGE +GORGEOUS +GORGES +GORHAM +GORIA +GORILLA +GORILLAS +GORKY +GORMAN +GORMLEY +GORTARI +GORTARI'S +GORTON +GORTON'S +GORY +GOS +GOSH +GOSHEN +GOSPEL +GOSPELS +GOSS +GOSSAGE +GOSSAMER +GOSSETT +GOSSIP +GOSSIPY +GOSTELRADIO +GOT +GOTA +GOTCHA +GOTEBORG +GOTHAM +GOTHENBURG +GOTHIC +GOTO +GOTSHAL +GOTT +GOTTA +GOTTEN +GOTTESMAN +GOTTFRIED +GOTTHELF +GOTTI +GOTTI'S +GOTTLIEB +GOTTSCHALK +GOTTSCHALKS +GOUGE +GOUGED +GOUGH +GOUGING +GOULD +GOULD'S +GOULDING +GOULET +GOURD +GOURMET +GOURMETS +GOVAN +GOVERMENT +GOVERN +GOVERNANCE +GOVERNED +GOVERNESS +GOVERNING +GOVERNMENT +GOVERNMENT'S +GOVERNMENTAL +GOVERNMENTS +GOVERNMENTS' +GOVERNOR +GOVERNOR'S +GOVERNORS +GOVERNORS' +GOVERNORSHIP +GOVERNORSHIPS +GOVERNS +GOVETT +GOVPX +GOVS +GOW +GOWER +GOWN +GOWNS +GOYA +GRAB +GRABBED +GRABBER +GRABBING +GRABER +GRABS +GRACE +GRACE'S +GRACED +GRACEFUL +GRACEFULLY +GRACELAND +GRACES +GRACHEV +GRACIE +GRACIOUS +GRACIOUSLY +GRACIOUSNESS +GRAD +GRADE +GRADED +GRADER +GRADERS +GRADES +GRADING +GRADISON +GRADS +GRADSTEIN +GRADUAL +GRADUALLY +GRADUATE +GRADUATED +GRADUATES +GRADUATING +GRADUATION +GRADUATIONS +GRADY +GRAEME +GRAETZ +GRAF +GRAF'S +GRAFF +GRAFFITI +GRAFT +GRAFTED +GRAFTING +GRAFTON +GRAFTS +GRAHAM +GRAHAM'S +GRAIL +GRAIN +GRAINGER +GRAINS +GRAINY +GRAM +GRAMAJO +GRAMBLING +GRAMERCY +GRAMLEY +GRAMM +GRAMM'S +GRAMMAR +GRAMMATICAL +GRAMMER +GRAMMOPHON +GRAMMY +GRAMMYS +GRAMS +GRAN +GRANADA +GRAND +GRANDCHILD +GRANDCHILDREN +GRANDDADDY +GRANDDAUGHTER +GRANDDAUGHTERS +GRANDE +GRANDER +GRANDEST +GRANDEUR +GRANDFATHER +GRANDFATHER'S +GRANDFATHERED +GRANDFATHERLY +GRANDFATHERS +GRANDIOSE +GRANDKIDS +GRANDLY +GRANDMA +GRANDMA'S +GRANDMAISON +GRANDMASTER +GRANDMASTERS +GRANDMOTHER +GRANDMOTHER'S +GRANDMOTHERS +GRANDPA +GRANDPARENT +GRANDPARENTS +GRANDPARENTS' +GRANDSON +GRANDSONS +GRANDSTAND +GRANDSTANDING +GRANDSTANDS +GRANDVIEW +GRANDY +GRANGE +GRANGER +GRANGES +GRANITE +GRANMA +GRANNY +GRANO +GRANOLA +GRANT +GRANT'S +GRANTED +GRANTHAM +GRANTING +GRANTOR +GRANTS +GRANVILLE +GRAPE +GRAPEFRUIT +GRAPES +GRAPEVINE +GRAPH +GRAPHIC +GRAPHICAL +GRAPHICALLY +GRAPHICS +GRAPHICS' +GRAPHITE +GRAPHS +GRAPPLE +GRAPPLED +GRAPPLES +GRAPPLING +GRAS +GRASP +GRASPED +GRASPING +GRASS +GRASSES +GRASSGREEN +GRASSHOPPER +GRASSHOPPERS +GRASSI +GRASSLAND +GRASSLANDS +GRASSLEY +GRASSO +GRASSROOTS +GRASSY +GRATA +GRATE +GRATED +GRATEFUL +GRATEFULLY +GRATES +GRATIFICATION +GRATIFIED +GRATIFYING +GRATING +GRATIS +GRATITUDE +GRATUITIES +GRATUITOUS +GRATUITOUSLY +GRATUITY +GRAVANO +GRAVE +GRAVEL +GRAVELLY +GRAVELY +GRAVER +GRAVES +GRAVES' +GRAVESIDE +GRAVESITE +GRAVEST +GRAVESTONE +GRAVESTONES +GRAVEYARD +GRAVEYARDS +GRAVITATE +GRAVITATED +GRAVITATIONAL +GRAVITY +GRAVLEY +GRAVURE +GRAVY +GRAY +GRAY'S +GRAYER +GRAYING +GRAYISH +GRAYS +GRAYSON +GRAZE +GRAZED +GRAZER +GRAZIANO +GRAZING +GRBAVICA +GREASE +GREASED +GREASY +GREAT +GREATER +GREATEST +GREATLY +GREATNESS +GREATS +GREAVES +GRECO +GREECE +GREECE'S +GREED +GREEDY +GREEK +GREEKS +GREELEY +GREEN +GREEN'S +GREENBACK +GREENBACKS +GREENBAUM +GREENBELT +GREENBERG +GREENBERG'S +GREENBERGER +GREENBLATT +GREENBRIER +GREENBURG +GREENE +GREENE'S +GREENER +GREENERY +GREENFIELD +GREENHAM +GREENHILL +GREENHOUSE +GREENHOUSES +GREENIAUS +GREENING +GREENISH +GREENLAND +GREENLAW +GREENLEE +GREENMAIL +GREENMAN +GREENPEACE +GREENPEACE'S +GREENS +GREENSBORO +GREENSBURG +GREENSHIELDS +GREENSPAN +GREENSPAN'S +GREENSTEIN +GREENVILLE +GREENWALD +GREENWALD'S +GREENWAY +GREENWELL +GREENWICH +GREENWOOD +GREER +GREET +GREETED +GREETING +GREETINGS +GREETS +GREG +GREGARIOUS +GREGG +GREGG'S +GREGOR +GREGORIAN +GREGORIE +GREGORIO +GREGORY +GREGORY'S +GREIDER +GREIFF +GREINER +GREMITSKIKH +GREMLINS +GRENADA +GRENADE +GRENADES +GRENFELL +GRENOBLE +GRESHAM +GRESSER +GRETA +GRETCHEN +GRETEL +GRETNA +GRETZKY +GRETZKY'S +GREVE +GREW +GREY +GREY'S +GREYHOUND +GREYHOUND'S +GREYHOUNDS +GRIBETZ +GRID +GRIDDLE +GRIDIRON +GRIDLOCK +GRIDLOCKED +GRIDS +GRIEF +GRIER +GRIESE +GRIEVANCE +GRIEVANCES +GRIEVE +GRIEVED +GRIEVES +GRIEVESON +GRIEVING +GRIEVOUS +GRIEVOUSLY +GRIFFEY +GRIFFIN +GRIFFIN'S +GRIFFITH +GRIFFITH'S +GRIFFITHS +GRIFTERS +GRIGG +GRIGGS +GRIGOLI +GRIGOROVICH +GRIGORY +GRIGORYANTS +GRIGSBY +GRIJALVA +GRILL +GRILLE +GRILLED +GRILLING +GRILLO +GRILLS +GRIM +GRIMACE +GRIMACED +GRIMACES +GRIMACING +GRIME +GRIMES +GRIMLY +GRIMM +GRIMMER +GRIMY +GRIN +GRINCH +GRIND +GRINDER +GRINDERS +GRINDING +GRINDS +GRINGO +GRINGOS +GRINNED +GRINNELL +GRINNING +GRINS +GRINSTEIN +GRIP +GRIPE +GRIPED +GRIPES +GRIPING +GRIPPED +GRIPPING +GRIPS +GRISANTI +GRISCOM +GRISHAM +GRISHAM'S +GRISLY +GRISMAN +GRISSOM +GRIST +GRISWOLD +GRIT +GRITS +GRITTY +GRITZ +GRIZZLED +GRIZZLIES +GRIZZLY +GRO +GROAN +GROANED +GROANING +GROANS +GROCER +GROCERIES +GROCERS +GROCERY +GRODIN +GROENING +GROEP +GROER +GROFF +GROGAN +GROGGY +GROIN +GROLIER +GROLIER'S +GROMOV +GROMYKO +GROOM +GROOM'S +GROOMED +GROOMING +GROOMS +GROOTE +GROOVE +GROOVES +GROOVY +GROPE +GROPED +GROPING +GROS +GROSE +GROSS +GROSSE +GROSSED +GROSSES +GROSSING +GROSSLY +GROSSMAN +GROSSMAN'S +GROSSO +GROSVENOR +GROSZ +GROTESQUE +GROTESQUELY +GROTON +GROTTO +GROUCHO +GROUND +GROUNDBREAKING +GROUNDED +GROUNDER +GROUNDFISH +GROUNDHOG +GROUNDING +GROUNDINGS +GROUNDLESS +GROUNDS +GROUNDSWELL +GROUNDWATER +GROUNDWORK +GROUP +GROUP'S +GROUPE +GROUPED +GROUPIE +GROUPIES +GROUPING +GROUPINGS +GROUPS +GROUPS' +GROUPWARE +GROUSE +GROUSED +GROUSES +GROUSING +GROVE +GROVE'S +GROVEMAN +GROVER +GROVES +GROW +GROWER +GROWERS +GROWERS' +GROWING +GROWL +GROWLED +GROWLING +GROWLS +GROWN +GROWNUP +GROWNUPS +GROWS +GROWTH +GROWTHS +GROZNY +GROZNY'S +GRUB +GRUBB +GRUBBING +GRUBBS +GRUBBY +GRUBER +GRUBMAN +GRUDGE +GRUDGES +GRUDGING +GRUDGINGLY +GRUEL +GRUELING +GRUENBERG +GRUESOME +GRUFF +GRUMBLE +GRUMBLED +GRUMBLES +GRUMBLING +GRUMMAN +GRUMMAN'S +GRUMPY +GRUNDFEST +GRUNDHOFER +GRUNDY +GRUNER +GRUNFELD +GRUNGE +GRUNGY +GRUNSETH +GRUNT +GRUNTAL +GRUNTING +GRUNTS +GRUNWALD +GRUPO +GRUPPO +GRUTMAN +GTECH +GU +GUACAMOLE +GUADALAJARA +GUADALCANAL +GUADALUPE +GUADELOUPE +GUAM +GUANAJUATO +GUANGDONG +GUANGMING +GUANGXI +GUANGZHOU +GUANTANAMO +GUARANTEE +GUARANTEED +GUARANTEEING +GUARANTEES +GUARANTOR +GUARANTORS +GUARANTY +GUARD +GUARD'S +GUARDED +GUARDEDLY +GUARDIA +GUARDIAN +GUARDIANS +GUARDIANSHIP +GUARDING +GUARDRAIL +GUARDS +GUARDS' +GUARDSMAN +GUARDSMEN +GUARIGLIA +GUARINI +GUARINO +GUATEMALA +GUATEMALA'S +GUATEMALAN +GUATEMALANS +GUAYAQUIL +GUBER +GUBERNATORIAL +GUCCI +GUCCIONE +GUENTER +GUENTHER +GUERILLA +GUERILLAS +GUERIN +GUERNEVILLE +GUERNSEY +GUERRA +GUERRE +GUERRERO +GUERRIERI +GUERRILLA +GUERRILLAS +GUERRILLAS' +GUESS +GUESSED +GUESSES +GUESSING +GUESSWORK +GUEST +GUEST'S +GUESTHOUSE +GUESTS +GUESTS' +GUEVARA +GUEZ +GUGGENHEIM +GUIANA +GUIDANCE +GUIDE +GUIDE'S +GUIDEBOOK +GUIDEBOOKS +GUIDED +GUIDELINE +GUIDELINES +GUIDEPOSTS +GUIDES +GUIDING +GUIDO +GUIDOBONI +GUIDRY +GUILD +GUILD'S +GUILDER +GUILDERS +GUILDFORD +GUILDHALL +GUILDS +GUILE +GUILFORD +GUILIANI +GUILLAUME +GUILLEN +GUILLERMO +GUILLOTINE +GUILT +GUILTY +GUIMARAES +GUINEA +GUINEAN +GUINESS +GUINEVERE +GUINIER +GUINIER'S +GUINN +GUINNESS +GUINNESS'S +GUISE +GUISES +GUITAR +GUITARIST +GUITARISTS +GUITARS +GUIZHOU +GUJARAT +GUL +GULAG +GULBADDIN +GULBUDDIN +GULCH +GULF +GULF'S +GULFPORT +GULFSTREAM +GULL +GULLIBLE +GULLS +GULLY +GULP +GULPING +GUM +GUMBEL +GUMBO +GUMI +GUMP +GUMP'S +GUMPTION +GUMS +GUMSHOE +GUMUCIO +GUN +GUN'S +GUNBATTLE +GUNBOAT +GUNBOATS +GUND +GUNDERSON +GUNDY +GUNFIGHT +GUNFIGHTS +GUNFIRE +GUNG +GUNMAN +GUNMAN'S +GUNMEN +GUNN +GUNN'S +GUNNAR +GUNNED +GUNNER +GUNNER'S +GUNNERS +GUNNERY +GUNNING +GUNNISON +GUNPLAY +GUNPOINT +GUNPOWDER +GUNS +GUNSHIP +GUNSHIPS +GUNSHOT +GUNSHOTS +GUNSLINGER +GUNSLINGERS +GUNSMOKE +GUNTER +GUNTHER +GUO +GUPTA +GUR +GURGLING +GURION +GURIT +GURLEY +GURNEY +GURRIA +GURU +GURUS +GUS +GUSH +GUSHED +GUSHER +GUSHES +GUSHING +GUSINSKY +GUST +GUSTAF +GUSTAFSON +GUSTAV +GUSTAVE +GUSTAVO +GUSTE +GUSTED +GUSTING +GUSTO +GUSTS +GUSTY +GUT +GUTENBERG +GUTFREUND +GUTHRIE +GUTIERREZ +GUTKOWSKI +GUTLESS +GUTMAN +GUTS +GUTSY +GUTTED +GUTTER +GUTTERS +GUTTING +GUTTMACHER +GUTTMAN +GUY +GUY'S +GUYANA +GUYS +GUYS' +GUYTON +GUZMAN +GUZZLER +GUZZLERS +GUZZLING +GWEN +GWENDOLYN +GWINNETT +GWYN +GWYNN +GYI +GYLLENHAMMAR +GYM +GYMNASIUM +GYMNASIUMS +GYMNAST +GYMNASTICS +GYMNASTS +GYMS +GYN +GYNECOLOGICAL +GYNECOLOGIST +GYNECOLOGISTS +GYNECOLOGY +GYPSIES +GYPSUM +GYPSUM'S +GYPSY +GYRATE +GYRATED +GYRATING +GYRATIONS +GYROSCOPE +GYROSCOPES +GYSI +GYULA +H. +H.'S +HA +HAAG +HAAGEN +HAAN +HAARETZ +HAAS +HAASE +HAASS +HABASH +HABEAS +HABER +HABERER +HABIB +HABIBIE +HABICHT +HABIT +HABITABLE +HABITAT +HABITATION +HABITATS +HABITS +HABITUAL +HABITUALLY +HABRE +HABSBURG +HABYARIMANA +HACHETTE +HACHETTE'S +HACIENDA +HACK +HACKED +HACKENSACK +HACKER +HACKERS +HACKETT +HACKING +HACKLES +HACKMAN +HACKNEY +HACKNEYED +HACKS +HACKSAW +HACKWORTH +HAD +HADASHOT +HADASSAH +HADDAD +HADDAM +HADDEN +HADDOCK +HADEN +HADI +HADITHI +HADLEY +HADN'T +HADSON +HAFER +HAFEZ +HAFIF +HAFNIA +HAFT +HAFT'S +HAFTS +HAGA +HAGAN +HAGAR +HAGE +HAGEN +HAGENS +HAGER +HAGERSTOWN +HAGERTY +HAGGADAH +HAGGAR +HAGGARD +HAGGERTY +HAGGLE +HAGGLED +HAGGLING +HAGINS +HAGLER +HAGMAN +HAGUE +HAH +HAHN +HAHN'S +HAI +HAIDER +HAIFA +HAIG +HAIG'S +HAIGHT +HAIKU +HAIL +HAILE +HAILED +HAILEY +HAILING +HAILS +HAILSTORM +HAIM +HAINAN +HAINES +HAIR +HAIRCUT +HAIRCUTS +HAIRDO +HAIRDOS +HAIRDRESSER +HAIRDRESSERS +HAIRED +HAIRLINE +HAIRS +HAIRSPRAY +HAIRSTON +HAIRSTYLE +HAIRSTYLES +HAIRY +HAITI +HAITI'S +HAITIAN +HAITIANS +HAITIEN +HAJ +HAJEK +HAJIME +HAJJ +HAKEEM +HAKIM +HAKIM'S +HAL +HALABJA +HALBERSTAM +HALCION +HALCYON +HALDEMAN +HALE +HALE'S +HALEN +HALES +HALEY +HALEY'S +HALF +HALF'S +HALFBACK +HALFORD +HALFTIME +HALFWAY +HALIBUT +HALIFAX +HALIM +HALL +HALL'S +HALLE +HALLELUJAH +HALLER +HALLETT +HALLEY'S +HALLIBURTON +HALLINAN +HALLMAN +HALLMARK +HALLMARK'S +HALLMARKS +HALLORAN +HALLOWED +HALLOWEEN +HALLS +HALLUCINATING +HALLUCINATIONS +HALLUCINOGENIC +HALLWAY +HALLWAYS +HALLWOOD +HALMI +HALMOS +HALO +HALOGEN +HALON +HALONS +HALPERIN +HALPERN +HALPIN +HALSEY +HALSTEAD +HALSTON +HALT +HALTED +HALTER +HALTING +HALTINGLY +HALTS +HALVE +HALVED +HALVERSON +HALVES +HALVING +HALVORSON +HAM +HAMAD +HAMADA +HAMADI +HAMADI'S +HAMAS +HAMAS' +HAMBRECHT +HAMBROS +HAMBURG +HAMBURGER +HAMBURGERS +HAMDAN +HAMDEN +HAMDOON +HAMEL +HAMELIN +HAMER +HAMID +HAMILL +HAMILTON +HAMILTON'S +HAMISH +HAMLET +HAMLET'S +HAMLETS +HAMLIN +HAMLISCH +HAMM +HAMMACHER +HAMMADI +HAMMER +HAMMER'S +HAMMERED +HAMMERING +HAMMERMILL +HAMMERS +HAMMERSCHMIDT +HAMMERSMITH +HAMMERSTEIN +HAMMETT +HAMMOCK +HAMMOND +HAMMONDS +HAMMOUD +HAMPDEN +HAMPER +HAMPERED +HAMPERING +HAMPERS +HAMPSHIRE +HAMPSHIRE'S +HAMPSON +HAMPSTEAD +HAMPTON +HAMPTON'S +HAMPTONS +HAMRICK +HAMS +HAMSTER +HAMSTERS +HAMSTRING +HAMSTRUNG +HAMTRAMCK +HAN +HANA +HANAN +HANBURY +HANCE +HANCOCK +HANCOCK'S +HAND +HANDAL +HANDBAG +HANDBAGS +HANDBALL +HANDBILLS +HANDBOOK +HANDBOOKS +HANDCRAFTED +HANDCUFF +HANDCUFFED +HANDCUFFING +HANDCUFFS +HANDED +HANDEDLY +HANDEDNESS +HANDEL +HANDEL'S +HANDELSBANKEN +HANDER +HANDERS +HANDFUL +HANDFULS +HANDGUN +HANDGUNS +HANDHELD +HANDICAP +HANDICAPPED +HANDICAPPERS +HANDICAPPING +HANDICAPS +HANDICRAFTS +HANDILY +HANDING +HANDIWORK +HANDKERCHIEF +HANDKERCHIEFS +HANDLE +HANDLEBARS +HANDLED +HANDLEMAN +HANDLER +HANDLERS +HANDLES +HANDLEY +HANDLING +HANDMADE +HANDOFF +HANDOUT +HANDOUTS +HANDOVER +HANDPICKED +HANDS +HANDSET +HANDSETS +HANDSHAKE +HANDSHAKES +HANDSOME +HANDSOMELY +HANDWRITING +HANDWRITTEN +HANDY +HANDYMAN +HANES +HANEY +HANFORD +HANG +HANGAR +HANGARS +HANGED +HANGER +HANGERS +HANGIN' +HANGING +HANGINGS +HANGOUT +HANGOUTS +HANGOVER +HANGS +HANGZHOU +HANI +HANK +HANKERING +HANKINS +HANKS +HANKS' +HANKY +HANLEY +HANLON +HANNA +HANNAFORD +HANNAH +HANNAN +HANNAY +HANNIBAL +HANNIFIN +HANNIGAN +HANNON +HANOI +HANOI'S +HANOVER +HANOVER'S +HANS +HANSA +HANSCOM +HANSEL +HANSEN +HANSEN'S +HANSON +HANSON'S +HANUKKAH +HAO +HAP +HAPHAZARD +HAPHAZARDLY +HAPLESS +HAPPEN +HAPPENED +HAPPENING +HAPPENINGS +HAPPENS +HAPPENSTANCE +HAPPIER +HAPPIEST +HAPPILY +HAPPINESS +HAPPY +HAPSBURG +HAQ +HARA +HARADA +HARALD +HARAM +HARANGUE +HARANGUING +HARARE +HARARI +HARASS +HARASSED +HARASSER +HARASSING +HARASSMENT +HARBAUGH +HARBERT +HARBIN +HARBINGER +HARBINGERS +HARBISON +HARBOR +HARBORED +HARBORING +HARBORS +HARBOUR +HARBURY +HARCOURT +HARCOURT'S +HARD +HARDART +HARDAWAY +HARDBACK +HARDBALL +HARDCORE +HARDCOVER +HARDEE +HARDEE'S +HARDEN +HARDENED +HARDENING +HARDER +HARDEST +HARDESTY +HARDHEADED +HARDIMAN +HARDIN +HARDING +HARDING'S +HARDLINE +HARDLINER +HARDLINERS +HARDLY +HARDNESS +HARDS +HARDSCRABBLE +HARDSHIP +HARDSHIPS +HARDWARE +HARDWICK +HARDWOOD +HARDWOODS +HARDWORKING +HARDY +HARDY'S +HARDYMON +HARE +HAREL +HAREM +HARFORD +HARGROVE +HARI +HARIMA +HARING +HARIRI +HARIS +HARISH +HARK +HARKEN +HARKER +HARKIN +HARKIN'S +HARKING +HARKINS +HARKNESS +HARKS +HARLAN +HARLAND +HARLEM +HARLEM'S +HARLEQUIN +HARLEY +HARLEY'S +HARLEYSVILLE +HARLIN +HARLINGEN +HARLOW +HARM +HARM'S +HARMAN +HARMED +HARMETZ +HARMFUL +HARMING +HARMLESS +HARMLESSLY +HARMON +HARMON'S +HARMONIC +HARMONICA +HARMONIES +HARMONIOUS +HARMONIZATION +HARMONIZE +HARMONIZED +HARMONIZING +HARMONY +HARMS +HARNESS +HARNESSED +HARNESSES +HARNESSING +HARNETT +HARNISCH +HARNISCHFEGER +HARO +HAROLD +HAROLD'S +HARP +HARPER +HARPER'S +HARPERCOLLINS +HARPERS +HARPING +HARPO +HARPOON +HARPSICHORD +HARRAH'S +HARRASSMENT +HARRELL +HARRELSON +HARRI +HARRICK +HARRIED +HARRIER +HARRIET +HARRIETT +HARRIGAN +HARRIMAN +HARRIMAN'S +HARRINGTON +HARRIS +HARRIS' +HARRIS'S +HARRISBURG +HARRISON +HARRISON'S +HARRODS +HARROWING +HARRY +HARRY'S +HARSCO +HARSH +HARSHBARGER +HARSHER +HARSHEST +HARSHFIELD +HARSHLY +HARSHNESS +HART +HART'S +HARTE +HARTER +HARTFORD +HARTFORD'S +HARTIGAN +HARTLEY +HARTLEY'S +HARTMAN +HARTMANN +HARTMARX +HARTNETT +HARTSFIELD +HARTSON +HARTWELL +HARTWIG +HARTWIG'S +HARTY +HARTZ +HARUO +HARVARD +HARVARD'S +HARVEST +HARVESTED +HARVESTER +HARVESTERS +HARVESTING +HARVESTS +HARVEY +HARVEY'S +HARWELL +HARWOOD +HARYANA +HAS +HASAN +HASBRO +HASBRO'S +HASEGAWA +HASELTINE +HASENFUS +HASH +HASHANA +HASHED +HASHEMI +HASHEMITE +HASHI +HASHIMOTO +HASHIMOTO'S +HASHISH +HASIDIC +HASINA +HASKELL +HASKINS +HASLIP +HASN'T +HASS +HASSAN +HASSENFELD +HASSLE +HASSLED +HASSLES +HASTE +HASTEN +HASTENED +HASTENING +HASTENS +HASTERT +HASTILY +HASTINGS +HASTINGS' +HASTY +HAT +HATA +HATCH +HATCH'S +HATCHBACK +HATCHED +HATCHER +HATCHER'S +HATCHERIES +HATCHERY +HATCHES +HATCHET +HATCHING +HATE +HATED +HATEFUL +HATER +HATERS +HATES +HATFIELD +HATFIELD'S +HATH +HATHAWAY +HATING +HATO +HATRED +HATREDS +HATS +HATTED +HATTER +HATTERAS +HATTIE +HATTIESBURG +HATTORI +HAU +HAUCK +HAUER +HAUGHEY +HAUGHEY'S +HAUGHTY +HAUL +HAULED +HAULER +HAULERS +HAULING +HAULS +HAUNT +HAUNTED +HAUNTING +HAUNTINGLY +HAUNTS +HAUPPAUGE +HAUPT +HAUPTMAN +HAUPTMANN +HAUSER +HAUSSMANN +HAUTE +HAVANA +HAVANA'S +HAVAS +HAVE +HAVEL +HAVEL'S +HAVEMANN +HAVEN +HAVEN'T +HAVENS +HAVERFORD +HAVERTY +HAVES +HAVILLAND +HAVING +HAVOC +HAVRE +HAW +HAWAII +HAWAII'S +HAWAIIAN +HAWAIIANS +HAWASS +HAWATMEH +HAWES +HAWK +HAWKE +HAWKED +HAWKER +HAWKERS +HAWKES +HAWKEYE +HAWKING +HAWKINS +HAWKINS' +HAWKISH +HAWKS +HAWKS' +HAWLEY +HAWLEY'S +HAWN +HAWORTH +HAWTHORNE +HAY +HAYAKAWA +HAYASHI +HAYAT +HAYDEN +HAYDEN'S +HAYDN +HAYEK +HAYES +HAYES' +HAYING +HAYLES +HAYLEY +HAYMAN +HAYMARKET +HAYNES +HAYS +HAYSTACK +HAYTAIAN +HAYWARD +HAYWIRE +HAYWOOD +HAYWORTH +HAZARD +HAZARDOUS +HAZARDS +HAZE +HAZEL +HAZELNUT +HAZELTINE +HAZELWOOD +HAZELWOOD'S +HAZEN +HAZING +HAZLETON +HAZLETT +HAZY +HAZZARD +HE +HE'D +HE'LL +HE'S +HEAD +HEAD'S +HEADACHE +HEADACHES +HEADBAND +HEADBANDS +HEADCOUNT +HEADDRESS +HEADDRESSES +HEADED +HEADER +HEADFIRST +HEADGEAR +HEADHUNTER +HEADHUNTERS +HEADING +HEADINGS +HEADLESS +HEADLEY +HEADLIGHT +HEADLIGHTS +HEADLINE +HEADLINED +HEADLINER +HEADLINERS +HEADLINES +HEADLINING +HEADLONG +HEADMASTER +HEADPHONES +HEADQUARTERED +HEADQUARTERS +HEADROOM +HEADS +HEADSET +HEADSETS +HEADSTART +HEADSTONE +HEADSTONES +HEADSTRONG +HEADWATERS +HEADWAY +HEADY +HEAL +HEALD +HEALED +HEALER +HEALERS +HEALEY +HEALING +HEALS +HEALTH +HEALTH'S +HEALTHCARE +HEALTHCARE'S +HEALTHCO +HEALTHDYNE +HEALTHFUL +HEALTHIER +HEALTHIEST +HEALTHSOURCE +HEALTHSOUTH +HEALTHTRUST +HEALTHVEST +HEALTHY +HEALY +HEANEY +HEAP +HEAPED +HEAPING +HEAPS +HEAR +HEARD +HEARIN +HEARING +HEARINGS +HEARN +HEARNS +HEARS +HEARSAY +HEARSE +HEARSES +HEARST +HEARST'S +HEART +HEART'S +HEARTACHE +HEARTBEAT +HEARTBEATS +HEARTBREAK +HEARTBREAKING +HEARTBROKEN +HEARTBURN +HEARTED +HEARTEDLY +HEARTENED +HEARTENING +HEARTFELT +HEARTH +HEARTILY +HEARTLAND +HEARTLESS +HEARTS +HEARTSTRINGS +HEARTTHROB +HEARTWARMING +HEARTY +HEAT +HEATED +HEATEDLY +HEATER +HEATERS +HEATH +HEATHER +HEATHER'S +HEATHROW +HEATING +HEATON +HEATS +HEAVE +HEAVED +HEAVEN +HEAVEN'S +HEAVENLY +HEAVENS +HEAVIER +HEAVIES +HEAVIEST +HEAVILY +HEAVING +HEAVY +HEAVYWEIGHT +HEAVYWEIGHTS +HEBEI +HEBER +HEBERT +HEBREW +HEBRON +HECHINGER +HECHT +HECHT'S +HECK +HECK'S +HECKER +HECKLED +HECKLER +HECKLERS +HECKLING +HECKMAN +HECLA +HECTARE +HECTARES +HECTIC +HECTOR +HEDDA +HEDDING +HEDGE +HEDGED +HEDGEHOG +HEDGEHOGS +HEDGERS +HEDGES +HEDGING +HEDI +HEDONISM +HEDONISTIC +HEDRICK +HEE +HEEBNER +HEED +HEEDED +HEEDING +HEEKIN +HEEL +HEELED +HEELS +HEER +HEES +HEFFERNAN +HEFLEY +HEFLIN +HEFNER +HEFNER'S +HEFT +HEFTER +HEFTIER +HEFTY +HEGARTY +HEGEMONY +HEH +HEICO +HEIDELBERG +HEIDI +HEIDNIK +HEIDRICK +HEIDSTRA +HEIER +HEIFER +HEIFERS +HEIGHT +HEIGHTEN +HEIGHTENED +HEIGHTENING +HEIGHTENS +HEIGHTS +HEIL +HEILEMAN +HEILEMAN'S +HEILIG +HEILMAN +HEIM +HEIMANN +HEIMDAL +HEIMLICH +HEIN +HEINE +HEINEKEN +HEINEKEN'S +HEINEMAN +HEINEMANN +HEINER +HEINLEIN +HEINOUS +HEINRICH +HEINZ +HEINZ'S +HEIR +HEIRESS +HEIRLOOM +HEIRLOOMS +HEIRS +HEISMAN +HEIST +HEISTS +HEKMATYAR +HEKMATYAR'S +HELD +HELDS +HELEN +HELEN'S +HELENA +HELENE +HELENS +HELGA +HELICOPTER +HELICOPTER'S +HELICOPTERS +HELIN +HELIOS +HELIUM +HELIX +HELL +HELL'S +HELLBENT +HELLENIC +HELLENIKON +HELLER +HELLER'S +HELLFIRE +HELLINGER +HELLISH +HELLMAN +HELLO +HELLS +HELLUVA +HELM +HELM'S +HELMER +HELMET +HELMETED +HELMETS +HELMICK +HELMS +HELMS' +HELMS'S +HELMSLEY +HELMSLEY'S +HELMSLEYS +HELMSMAN +HELMUT +HELP +HELPED +HELPER +HELPERS +HELPFUL +HELPFULLY +HELPING +HELPINGS +HELPLESS +HELPLESSLY +HELPLESSNESS +HELPRIN +HELPS +HELSINKI +HELTER +HELTON +HEM +HEMANT +HEMDALE +HEMET +HEMINGWAY +HEMINGWAY'S +HEMISPHERE +HEMISPHERE'S +HEMISPHERIC +HEMLINE +HEMLINES +HEMLO +HEMLOCK +HEMMED +HEMMETER +HEMMING +HEMOGLOBIN +HEMOPHILIA +HEMOPHILIAC +HEMOPHILIACS +HEMORRHAGE +HEMORRHAGIC +HEMORRHAGING +HEMP +HEMPHILL +HEMPSTEAD +HEMS +HEN +HENAN +HENCE +HENCEFORTH +HENCHMAN +HENCHMEN +HENDERSON +HENDERSON'S +HENDERSONVILLE +HENDON +HENDRICK +HENDRICKS +HENDRICKSON +HENDRIK +HENDRIX +HENDRIX'S +HENDRY +HENG +HENKE +HENKEL +HENLEY +HENLEY'S +HENNARD +HENNEPIN +HENNESSEY +HENNESSY +HENNING +HENRI +HENRIETTA +HENRIK +HENRIQUE +HENRY +HENRY'S +HENRYK +HENS +HENSEL +HENSHAW +HENSLEY +HENSON +HENSON'S +HENTOFF +HENWOOD +HEPARIN +HEPATITIS +HEPBURN +HEPBURN'S +HEPTACHLOR +HER +HERALD +HERALD'S +HERALDED +HERALDING +HERALDS +HERAT +HERB +HERBAL +HERBALIFE +HERBERT +HERBERT'S +HERBICIDE +HERBICIDES +HERBIE +HERBS +HERBST +HERCEGOVINA +HERCULEAN +HERCULES +HERD +HERDED +HERDERS +HERDING +HERDS +HERDSMEN +HERE +HERE'S +HEREABOUTS +HEREAFTER +HEREBY +HEREDITARY +HEREDITY +HEREFORD +HEREIN +HERESY +HERETIC +HERETICAL +HERETOFORE +HEREWITH +HERGER +HERINGTON +HERITAGE +HERITAGE'S +HERLIHY +HERMAN +HERMAN'S +HERMANN +HERMES +HERMETICALLY +HERMIT +HERMITAGE +HERMON +HERMOSA +HERMOSILLO +HERNAN +HERNANDEZ +HERNANDEZ'S +HERNANDO +HERNDON +HERNIA +HERNIATED +HERO +HERO'S +HEROD +HEROES +HEROIC +HEROICALLY +HEROICS +HEROIN +HEROINE +HEROINES +HEROISM +HEROLD +HERON +HERONS +HEROS +HERPES +HERR +HERRERA +HERRERA'S +HERRHAUSEN +HERRICK +HERRIN +HERRING +HERRINGS +HERRINGTON +HERRMANN +HERRNSTEIN +HERRON +HERS +HERSCH +HERSCHEL +HERSCHENSOHN +HERSCU +HERSELF +HERSEY +HERSH +HERSHEY +HERSHEY'S +HERSHISER +HERSKOVITZ +HERTEL +HERTZ +HERTZ'S +HERTZBERG +HERVE +HERWICK +HERZ +HERZEGOVINA +HERZFELD +HERZOG +HESELTINE +HESITANCY +HESITANT +HESITANTLY +HESITATE +HESITATED +HESITATES +HESITATING +HESITATION +HESS +HESS'S +HESSE +HESSLER +HESSTON +HESTER +HESTON +HETCH +HETCHY +HETEROGENEOUS +HETEROSEXUAL +HETEROSEXUALITY +HETEROSEXUALS +HEUBLEIN +HEUER +HEUNIS +HEUSEN +HEVESI +HEW +HEWETT +HEWITT +HEWLETT +HEWLETT'S +HEWN +HEX +HEXCEL +HEY +HEYDAY +HEYDEN +HEYMAN +HEYMANN +HEYWARD +HEZB +HEZBOLLAH +HEZBOLLAH'S +HI +HIALEAH +HIATT +HIATUS +HIBBARD +HIBBING +HIBERNATION +HIBERNIA +HIBERNIA'S +HIBEY +HICCUP +HICCUPS +HICK +HICKAM +HICKEL +HICKEY +HICKLING +HICKMAN +HICKOK +HICKORY +HICKS +HICKSVILLE +HID +HIDALGO +HIDDEN +HIDE +HIDEAWAY +HIDEBOUND +HIDEO +HIDEOUS +HIDEOUT +HIDEOUTS +HIDES +HIDING +HIER +HIERARCHICAL +HIERARCHIES +HIERARCHY +HIEROGLYPHICS +HIGGINBOTHAM +HIGGINS +HIGGINS' +HIGGS +HIGH +HIGH'S +HIGHBROW +HIGHER +HIGHEST +HIGHFLIER +HIGHFLIERS +HIGHFLYING +HIGHLAND +HIGHLANDER +HIGHLANDS +HIGHLIGHT +HIGHLIGHTED +HIGHLIGHTING +HIGHLIGHTS +HIGHLY +HIGHNESS +HIGHS +HIGHTOWER +HIGHWAY +HIGHWAYS +HIGUCHI +HIJACK +HIJACKED +HIJACKER +HIJACKERS +HIJACKERS' +HIJACKING +HIJACKINGS +HIKE +HIKED +HIKER +HIKERS +HIKES +HIKING +HILARIOUS +HILARIOUSLY +HILARITY +HILARY +HILBERT +HILDA +HILDEBRANDT +HILDEGARD +HILDEGARDE +HILDRETH +HILEMON +HILER +HILFIGER +HILL +HILL'S +HILLARD +HILLARY +HILLARY'S +HILLBILLIES +HILLBILLY +HILLCREST +HILLEL +HILLENBRAND +HILLER +HILLERMAN +HILLHAVEN +HILLIARD +HILLIER +HILLIS +HILLMAN +HILLS +HILLS' +HILLSBORO +HILLSBOROUGH +HILLSDALE +HILLSDOWN +HILLSIDE +HILLSIDES +HILLTOP +HILLVIEW +HILLY +HILMERS +HILO +HILT +HILTON +HILTON'S +HILWEH +HIM +HIMALAYAN +HIMALAYAS +HIMES +HIMMLER +HIMONT +HIMSELF +HINCKLEY +HINCKLEY'S +HIND +HINDELONG +HINDER +HINDERED +HINDERING +HINDERLITER +HINDERS +HINDI +HINDMAN +HINDRANCE +HINDS +HINDSIGHT +HINDU +HINDUISM +HINDUS +HINDUSTAN +HINE +HINER +HINES +HINGE +HINGED +HINGES +HINGHAM +HINKLE +HINMAN +HINOJOSA +HINSDALE +HINSHAW +HINSON +HINT +HINTED +HINTERLAND +HINTERLANDS +HINTING +HINTON +HINTS +HINTZ +HIP +HIPPENSTIEL +HIPPER +HIPPEST +HIPPIE +HIPPIES +HIPPO +HIPPOCRATES +HIPPOCRATIC +HIPPOPOTAMUS +HIPPOS +HIPS +HIRAM +HIRE +HIRED +HIRES +HIRING +HIRINGS +HIRLAP +HIRO +HIROHITO +HIROHITO'S +HIROSHI +HIROSHIMA +HIROYUKI +HIRSCH +HIRSCHFELD +HIRSCHHORN +HIRSH +HIRST +HIRT +HIS +HISASHI +HISHAM +HISPANIC +HISPANICS +HISPANIOLA +HISPANO +HISS +HISSED +HISSENE +HISSES +HISSING +HISTADRUT +HISTORIAN +HISTORIANS +HISTORIC +HISTORICAL +HISTORICALLY +HISTORIES +HISTORY +HISTORY'S +HISTRIONICS +HIT +HITACHI +HITACHI'S +HITCH +HITCHCOCK +HITCHCOCK'S +HITCHED +HITCHENS +HITCHES +HITCHHIKED +HITCHHIKER +HITCHHIKING +HITCHING +HITCHINGS +HITE +HITHER +HITHERTO +HITLER +HITLER'S +HITLESS +HITMAN +HITOSHI +HITS +HITT +HITTER +HITTERS +HITTING +HITTLE +HITZ +HIVE +HIVES +HIXSON +HIZBOLLAH +HLA +HMONG +HO +HO'S +HOA +HOAG +HOAGLAND +HOANG +HOAR +HOARD +HOARDED +HOARDING +HOARDS +HOARE +HOARSE +HOARY +HOAX +HOAXES +HOBART +HOBBES +HOBBIES +HOBBLE +HOBBLED +HOBBLING +HOBBS +HOBBY +HOBBYISTS +HOBERMAN +HOBO +HOBOKEN +HOBSON +HOC +HOCH +HOCHBERG +HOCHBRUECKNER +HOCHMAN +HOCHMUTH +HOCK +HOCKE +HOCKENBERRY +HOCKEY +HOCKEY'S +HOCKING +HOCKNEY +HOCUS +HODDING +HODEL +HODEL'S +HODGE +HODGEPODGE +HODGES +HODGKIN'S +HODGKINS +HODGMAN +HODGSON +HODSON +HOE +HOECHST +HOECHST'S +HOES +HOESCH +HOEVELER +HOEY +HOFF +HOFFA +HOFFENBERG +HOFFER +HOFFMAN +HOFFMAN'S +HOFFMANN +HOFMANN +HOFSTRA +HOG +HOGAN +HOGAN'S +HOGE +HOGG +HOGGING +HOGLUND +HOGS +HOGUE +HOGWASH +HOIST +HOISTED +HOISTING +HOKE +HOKEY +HOKKAIDO +HOKUM +HOLBROOK +HOLBROOKE +HOLCOMB +HOLD +HOLDEN +HOLDER +HOLDER'S +HOLDERMAN +HOLDERS +HOLDERS' +HOLDING +HOLDING'S +HOLDINGS +HOLDINGS' +HOLDOUT +HOLDOUTS +HOLDOVER +HOLDOVERS +HOLDS +HOLDUP +HOLDUPS +HOLE +HOLED +HOLES +HOLIDAY +HOLIDAY'S +HOLIDAYS +HOLIER +HOLIEST +HOLINESS +HOLISTIC +HOLLADAY +HOLLAND +HOLLAND'S +HOLLANDER +HOLLENBECK +HOLLER +HOLLERED +HOLLERING +HOLLEY +HOLLIDAY +HOLLIMAN +HOLLINGER +HOLLINGS +HOLLINGSWORTH +HOLLINS +HOLLIS +HOLLISTER +HOLLISTON +HOLLOW +HOLLOWAY +HOLLOWED +HOLLOWELL +HOLLOWS +HOLLY +HOLLY'S +HOLLYWOOD +HOLLYWOOD'S +HOLM +HOLMAN +HOLMBERG +HOLMER +HOLMES +HOLMES' +HOLMES'S +HOLMGREN +HOLOCAUST +HOLOGRAM +HOLOGRAMS +HOLOGRAPHIC +HOLST +HOLSTEIN +HOLSTER +HOLT +HOLTON +HOLTZ +HOLTZMAN +HOLY +HOLYFIELD +HOLYFIELD'S +HOLYOKE +HOLZER +HOLZMAN +HOMAGE +HOMAN +HOME +HOME'S +HOMEBOUND +HOMEBUILDER +HOMEBUILDERS +HOMEBUILDING +HOMEBUYERS +HOMECARE +HOMECOMING +HOMEFED +HOMEFED'S +HOMEFRONT +HOMEGROWN +HOMELAND +HOMELAND'S +HOMELANDS +HOMELESS +HOMELESSNESS +HOMELY +HOMEMADE +HOMEMAKER +HOMEMAKERS +HOMEOPATHIC +HOMEOWNER +HOMEOWNER'S +HOMEOWNERS +HOMEOWNERS' +HOMEOWNERSHIP +HOMER +HOMER'S +HOMERED +HOMEROOM +HOMERS +HOMES +HOMESICK +HOMESPUN +HOMESTAKE +HOMESTEAD +HOMESTEADERS +HOMESTEADING +HOMESTRETCH +HOMETOWN +HOMETOWNS +HOMEWARD +HOMEWOOD +HOMEWORK +HOMEY +HOMICIDAL +HOMICIDE +HOMICIDES +HOMILIES +HOMILY +HOMING +HOMO +HOMOEROTIC +HOMOGENEITY +HOMOGENEOUS +HOMOGENIZED +HOMOGENOUS +HOMOPHOBIA +HOMOPHOBIC +HOMOSEXUAL +HOMOSEXUALITY +HOMOSEXUALS +HON +HONASAN +HONCHO +HONCHOS +HONDA +HONDA'S +HONDAS +HONDO +HONDURAN +HONDURANS +HONDURAS +HONDURAS' +HONE +HONECKER +HONECKER'S +HONED +HONEST +HONESTLY +HONESTY +HONEY +HONEYBEE +HONEYBEES +HONEYCOMB +HONEYCUTT +HONEYMOON +HONEYMOONERS +HONEYSUCKLE +HONEYWELL +HONEYWELL'S +HONG +HONGKONG +HONIG +HONING +HONK +HONKED +HONKING +HONKY +HONOLULU +HONOLULU'S +HONOR +HONOR'S +HONORABLE +HONORABLY +HONORARIA +HONORARIUM +HONORARIUMS +HONORARY +HONORED +HONOREES +HONORING +HONORS +HONSHU +HONUS +HOO +HOOCH +HOOD +HOOD'S +HOODED +HOODLUM +HOODLUMS +HOODS +HOODWINKED +HOOF +HOOGOVENS +HOOK +HOOKED +HOOKER +HOOKER'S +HOOKERS +HOOKING +HOOKS +HOOKUP +HOOKUPS +HOOKY +HOOLIGANISM +HOOLIGANS +HOON +HOOP +HOOPER +HOOPERMAN +HOOPLA +HOOPS +HOORAY +HOOSIER +HOOSIERS +HOOT +HOOTED +HOOTERS +HOOTIE +HOOTS +HOOVER +HOOVER'S +HOOVES +HOP +HOPE +HOPE'S +HOPED +HOPEFUL +HOPEFULLY +HOPEFULS +HOPELESS +HOPELESSLY +HOPELESSNESS +HOPES +HOPEWELL +HOPI +HOPING +HOPKINS +HOPKINS' +HOPKINTON +HOPPE +HOPPED +HOPPER +HOPPER'S +HOPPERS +HOPPING +HOPS +HOPWOOD +HORACE +HORACIO +HORAN +HORATIO +HORCHER +HORDE +HORDES +HORGAN +HORIUCHI +HORIZON +HORIZON'S +HORIZONS +HORIZONTAL +HORIZONTALLY +HORMATS +HORMEL +HORMONAL +HORMONE +HORMONES +HORMUZ +HORN +HORN'S +HORNBECK +HORNE +HORNED +HORNER +HORNET +HORNET'S +HORNETS +HORNS +HORNSBY +HORNY +HOROSCOPE +HOROSCOPES +HOROWITZ +HORRENDOUS +HORRIBLE +HORRIBLY +HORRID +HORRIFIC +HORRIFIED +HORRIFYING +HORRIGAN +HORROR +HORRORS +HORRY +HORS +HORSE +HORSE'S +HORSEBACK +HORSEMAN +HORSEMEN +HORSEPOWER +HORSERADISH +HORSES +HORSES' +HORSESHOE +HORSESHOES +HORSHAM +HORST +HORTENSE +HORTICULTURAL +HORTICULTURE +HORTICULTURIST +HORTON +HORTON'S +HORVATH +HORWATH +HORWITZ +HOSE +HOSEA +HOSED +HOSES +HOSIERY +HOSING +HOSKINS +HOSNI +HOSOKAWA +HOSOKAWA'S +HOSPICE +HOSPICES +HOSPITABLE +HOSPITAL +HOSPITAL'S +HOSPITALITY +HOSPITALIZATION +HOSPITALIZATIONS +HOSPITALIZED +HOSPITALS +HOSPITALS' +HOSS +HOSSEIN +HOST +HOST'S +HOSTAGE +HOSTAGES +HOSTAGES' +HOSTED +HOSTEL +HOSTELS +HOSTESS +HOSTESSES +HOSTETLER +HOSTILE +HOSTILITIES +HOSTILITY +HOSTING +HOSTS +HOT +HOTARD +HOTBED +HOTBEDS +HOTCHKISS +HOTCHNER +HOTEL +HOTEL'S +HOTELIER +HOTELIERS +HOTELS +HOTHOUSE +HOTLINE +HOTLINES +HOTLY +HOTSHOT +HOTTELET +HOTTER +HOTTEST +HOU +HOUCK +HOUDINI +HOUGH +HOUGHTON +HOUK +HOULIHAN +HOULTON +HOUMA +HOUND +HOUNDED +HOUNDING +HOUNDS +HOUPHOUET +HOUR +HOUR'S +HOURGLASS +HOURLONG +HOURLY +HOURS +HOURS' +HOUSE +HOUSE'S +HOUSEBOAT +HOUSECLEANING +HOUSED +HOUSEGUEST +HOUSEHOLD +HOUSEHOLD'S +HOUSEHOLDERS +HOUSEHOLDS +HOUSEKEEPER +HOUSEKEEPERS +HOUSEKEEPING +HOUSEMAN +HOUSER +HOUSES +HOUSES' +HOUSEWARE +HOUSEWARES +HOUSEWIFE +HOUSEWIVES +HOUSEWORK +HOUSING +HOUSINGS +HOUSTON +HOUSTON'S +HOUSTONIAN +HOUTEN +HOVE +HOVELS +HOVER +HOVERCRAFT +HOVERED +HOVERING +HOVERS +HOVING +HOVIS +HOVNANIAN +HOW +HOW'D +HOW'RE +HOW'S +HOWARD +HOWARD'S +HOWARDS +HOWDY +HOWE +HOWE'S +HOWELL +HOWELL'S +HOWES +HOWEVER +HOWIE +HOWITZER +HOWITZERS +HOWL +HOWLAND +HOWLED +HOWLEY +HOWLING +HOWLS +HOWSER +HOXHA +HOY +HOYA +HOYAS +HOYER +HOYLAKE +HOYLAKE'S +HOYLE +HOYO +HOYT +HOYTE +HRAWI +HRAWI'S +HRBEK +HSIAO +HSIEH +HSIEN +HSING +HSIUNG +HSU +HU +HU'S +HUA +HUACHUCA +HUAIROU +HUALLAGA +HUAMBO +HUAN +HUANCAYO +HUANG +HUB +HUBBARD +HUBBARD'S +HUBBELL +HUBBELL'S +HUBBERT +HUBBLE +HUBBLE'S +HUBBUB +HUBBY +HUBCAPS +HUBEI +HUBER +HUBERT +HUBRIS +HUBS +HUCK +HUCKABY +HUCKLEBERRY +HUCKSTERS +HUD +HUDDLE +HUDDLED +HUDDLES +HUDDLESTON +HUDDLING +HUDGINS +HUDLER +HUDNUT +HUDSON +HUDSON'S +HUE +HUED +HUERTA +HUES +HUEY +HUFBAUER +HUFF +HUFFED +HUFFING +HUFFINGTON +HUFFINGTON'S +HUFFMAN +HUFFY +HUG +HUGE +HUGEL +HUGELY +HUGGED +HUGGIES +HUGGING +HUGGINS +HUGH +HUGHES +HUGHES' +HUGHES'S +HUGHEY +HUGO +HUGO'S +HUGOTON +HUGS +HUH +HUI +HUIZENGA +HUIZENGA'S +HULA +HULBERT +HULCE +HULK +HULKING +HULKS +HULL +HULL'S +HULLABALOO +HULLED +HULLS +HULTGREEN +HUM +HUMAN +HUMANA +HUMANA'S +HUMANE +HUMANELY +HUMANISM +HUMANIST +HUMANISTIC +HUMANITARIAN +HUMANITARIANISM +HUMANITIES +HUMANITY +HUMANITY'S +HUMANIZE +HUMANKIND +HUMANLY +HUMANS +HUMBERTO +HUMBLE +HUMBLED +HUMBLING +HUMBLY +HUMBOLDT +HUMBUG +HUMDRUM +HUME +HUMI +HUMID +HUMIDITY +HUMILIATE +HUMILIATED +HUMILIATING +HUMILIATION +HUMILIATIONS +HUMILITY +HUMMED +HUMMEL +HUMMER +HUMMING +HUMMINGBIRD +HUMMINGBIRDS +HUMONGOUS +HUMOR +HUMORED +HUMORIST +HUMORLESS +HUMOROUS +HUMP +HUMPBACK +HUMPHREY +HUMPHREY'S +HUMPHREYS +HUMPHRIES +HUMPHRY +HUMPTY +HUMS +HUMVEE +HUMVEES +HUN +HUNAN +HUNCH +HUNCHBACK +HUNCHED +HUNCHES +HUNDLEY +HUNDRED +HUNDRED'S +HUNDREDS +HUNDREDTH +HUNDREDTHS +HUNDREDWEIGHT +HUNDT +HUNG +HUNGARIAN +HUNGARIANS +HUNGARY +HUNGARY'S +HUNGER +HUNGRIER +HUNGRY +HUNK +HUNKER +HUNKERED +HUNKERING +HUNKS +HUNKY +HUNT +HUNT'S +HUNTED +HUNTER +HUNTER'S +HUNTERS +HUNTHAUSEN +HUNTING +HUNTINGDON +HUNTINGTON +HUNTINGTON'S +HUNTLEY +HUNTS +HUNTS' +HUNTSMAN +HUNTSVILLE +HUNTWAY +HUR +HURAL +HURCO +HURD +HURDLE +HURDLES +HURL +HURLED +HURLEY +HURLING +HURLS +HURON +HURRAH +HURRICANE +HURRICANE'S +HURRICANES +HURRIED +HURRIEDLY +HURRY +HURRYING +HURST +HURT +HURT'S +HURTADO +HURTFUL +HURTING +HURTLED +HURTLING +HURTS +HURWITZ +HUSAK +HUSBAND +HUSBAND'S +HUSBANDRY +HUSBANDS +HUSBANDS' +HUSH +HUSHED +HUSK +HUSKIES +HUSKS +HUSKY +HUSSAIN +HUSSEIN +HUSSEIN'S +HUSSEINI +HUSSEY +HUSTED +HUSTINGS +HUSTLE +HUSTLED +HUSTLER +HUSTLERS +HUSTLING +HUSTON +HUT +HUT'S +HUTA +HUTCH +HUTCHESON +HUTCHINS +HUTCHINSON +HUTCHISON +HUTCHISON'S +HUTS +HUTSON +HUTTO +HUTTON +HUTTON'S +HUTU +HUTUS +HWA +HWAN +HWANG +HY +HYANNIS +HYATT +HYATT'S +HYATTSVILLE +HYBRID +HYBRIDIZATION +HYBRIDS +HYBRITECH +HYDE +HYDE'S +HYDERABAD +HYDRA +HYDRANT +HYDRANTS +HYDRAULIC +HYDRAULICS +HYDRIDE +HYDRO +HYDRO'S +HYDROCARBON +HYDROCARBONS +HYDROCHLORIC +HYDROCHLORIDE +HYDROELECTRIC +HYDROGEN +HYDROLOGIST +HYDROPOWER +HYDROXIDE +HYENA +HYENAS +HYGIENE +HYGIENIST +HYGIENISTS +HYLAND +HYMAN +HYMIETOWN +HYMN +HYMNAL +HYMNS +HYNES +HYOGO +HYON +HYPE +HYPED +HYPER +HYPERACTIVE +HYPERACTIVITY +HYPERBARIC +HYPERBOLE +HYPERBOLIC +HYPERCARD +HYPERINFLATION +HYPERION +HYPERSENSITIVE +HYPERTENSION +HYPERTENSIVE +HYPERTEXT +HYPHEN +HYPING +HYPNOSIS +HYPNOTIC +HYPNOTIZED +HYPO +HYPOCRISY +HYPOCRITE +HYPOCRITES +HYPOCRITICAL +HYPODERMIC +HYPOTHEKEN +HYPOTHERMIA +HYPOTHESES +HYPOTHESIS +HYPOTHETICAL +HYPOTHETICALLY +HYPOTHETICALS +HYSTERECTOMIES +HYSTERECTOMY +HYSTERIA +HYSTERICAL +HYSTERICALLY +HYSTERICS +HYUN +HYUNDAI +HYUNDAI'S +I +I'D +I'LL +I'M +I'S +I'VE +I. +I.'S +I.S +IACOCCA +IACOCCA'S +IAGO +IAIN +IAKOVOS +IAN +IAROSSI +IBANEZ +IBARRA +IBBOTSON +IBERIA +IBERIAN +IBIS +IBMERS +IBN +IBRAHIM +IBRAHIMI +IBSEN +IBUPROFEN +ICAHN +ICAHN'S +ICE +ICEBERG +ICEBERGS +ICEBREAKER +ICEBREAKERS +ICED +ICELAND +ICELAND'S +ICELANDERS +ICELANDIC +ICEMAN +ICH +ICHI +ICHIRO +ICING +ICKES +ICON +ICONOCLAST +ICONOCLASTIC +ICONS +ICOS +ICY +ID +IDA +IDAHO +IDAHO'S +IDEA +IDEAL +IDEALISM +IDEALIST +IDEALISTIC +IDEALISTS +IDEALIZED +IDEALLY +IDEALS +IDEAS +IDENTICAL +IDENTICALLY +IDENTIFIABLE +IDENTIFICATION +IDENTIFICATIONS +IDENTIFIED +IDENTIFIES +IDENTIFY +IDENTIFYING +IDENTITIES +IDENTITY +IDEOLOGICAL +IDEOLOGICALLY +IDEOLOGIES +IDEOLOGIST +IDEOLOGUE +IDEOLOGUES +IDEOLOGY +IDES +IDI +IDIOCY +IDIOM +IDIOSYNCRASIES +IDIOSYNCRATIC +IDIOT +IDIOTIC +IDIOTS +IDITAROD +IDLE +IDLED +IDLENESS +IDLING +IDLY +IDOL +IDOLIZE +IDOLIZED +IDOLS +IDRIS +IDROCARBURI +IDYLLIC +IF +IFFY +IFOR +IFS +IGARASHI +IGER +IGLESIAS +IGLOO +IGMAN +IGNACIO +IGNATENKO +IGNATIUS +IGNITE +IGNITED +IGNITES +IGNITING +IGNITION +IGNOMINIOUS +IGNORANCE +IGNORANT +IGNORE +IGNORED +IGNORES +IGNORING +IGOR +IGUANA +IGUANAS +IK +IKE +IKEA +IKEDA +IL +ILAN +ILBO +ILEANA +ILENE +ILIDZA +ILIESCU +ILIESCU'S +ILK +ILL +ILLEGAL +ILLEGALITIES +ILLEGALITY +ILLEGALLY +ILLEGALS +ILLEGIBLE +ILLEGITIMACY +ILLEGITIMATE +ILLICIT +ILLICITLY +ILLINOIS +ILLINOIS' +ILLINOIS'S +ILLIQUID +ILLIQUIDITY +ILLITERACY +ILLITERATE +ILLITERATES +ILLNESS +ILLNESSES +ILLOGICAL +ILLS +ILLUMINATE +ILLUMINATED +ILLUMINATES +ILLUMINATING +ILLUMINATION +ILLUSION +ILLUSIONS +ILLUSORY +ILLUSTRATE +ILLUSTRATED +ILLUSTRATES +ILLUSTRATING +ILLUSTRATION +ILLUSTRATIONS +ILLUSTRATIVE +ILLUSTRATOR +ILLUSTRATORS +ILLUSTRIOUS +ILOCOS +ILVA +ILYA +ILYUSHIN +IM +IMAD +IMAGE +IMAGERY +IMAGES +IMAGINABLE +IMAGINARY +IMAGINATION +IMAGINATIONS +IMAGINATIVE +IMAGINATIVELY +IMAGINE +IMAGINED +IMAGINES +IMAGING +IMAGINING +IMAM +IMAN +IMANI +IMANISHI +IMASCO +IMAX +IMBALANCE +IMBALANCES +IMBEDDED +IMBROGLIO +IMBUED +IMCERA +IMELDA +IMHAUSEN +IMHOFF +IMITATE +IMITATED +IMITATES +IMITATING +IMITATION +IMITATIONS +IMITATORS +IMMACULATE +IMMACULATELY +IMMATERIAL +IMMATURE +IMMATURITY +IMMEASURABLE +IMMEASURABLY +IMMEDIACY +IMMEDIATE +IMMEDIATELY +IMMENSE +IMMENSELY +IMMERSE +IMMERSED +IMMERSING +IMMERSION +IMMIGRANT +IMMIGRANTS +IMMIGRANTS' +IMMIGRATE +IMMIGRATED +IMMIGRATING +IMMIGRATION +IMMINENT +IMMINENTLY +IMMOBILE +IMMOBILIZE +IMMOBILIZED +IMMOLATION +IMMORAL +IMMORALITY +IMMORTAL +IMMORTALITY +IMMORTALIZED +IMMOVABLE +IMMUNE +IMMUNEX +IMMUNITIES +IMMUNITY +IMMUNIZATION +IMMUNIZATIONS +IMMUNIZE +IMMUNIZED +IMMUNIZING +IMMUNO +IMMUNODEFICIENCY +IMMUNOLOGICAL +IMMUNOLOGIST +IMMUNOLOGY +IMMUNOMEDICS +IMMUNOTHERAPY +IMMUTABLE +IMO +IMPACT +IMPACTED +IMPACTING +IMPACTS +IMPAIR +IMPAIRED +IMPAIRING +IMPAIRMENT +IMPAIRMENTS +IMPAIRS +IMPALA +IMPALED +IMPANELED +IMPART +IMPARTED +IMPARTIAL +IMPARTIALITY +IMPARTIALLY +IMPARTING +IMPARTS +IMPASSABLE +IMPASSE +IMPASSIONED +IMPASSIVE +IMPASSIVELY +IMPATIENCE +IMPATIENT +IMPATIENTLY +IMPEACH +IMPEACHED +IMPEACHING +IMPEACHMENT +IMPECCABLE +IMPECCABLY +IMPEDE +IMPEDED +IMPEDES +IMPEDIMENT +IMPEDIMENTS +IMPEDING +IMPELLED +IMPENDING +IMPENETRABLE +IMPERATIVE +IMPERATIVES +IMPERCEPTIBLE +IMPERFECT +IMPERFECTIONS +IMPERIAL +IMPERIAL'S +IMPERIALISM +IMPERIALIST +IMPERIALISTIC +IMPERIALISTS +IMPERIL +IMPERILED +IMPERILING +IMPERIOUS +IMPERMISSIBLE +IMPERMISSIBLY +IMPERSONAL +IMPERSONATE +IMPERSONATING +IMPERSONATION +IMPERSONATOR +IMPERSONATORS +IMPERVIOUS +IMPETUOUS +IMPETUS +IMPINGE +IMPISH +IMPLACABLE +IMPLANT +IMPLANTABLE +IMPLANTATION +IMPLANTED +IMPLANTING +IMPLANTS +IMPLAUSIBLE +IMPLEMENT +IMPLEMENTATION +IMPLEMENTED +IMPLEMENTING +IMPLEMENTS +IMPLICATE +IMPLICATED +IMPLICATES +IMPLICATING +IMPLICATION +IMPLICATIONS +IMPLICIT +IMPLICITLY +IMPLIED +IMPLIES +IMPLODE +IMPLODED +IMPLODING +IMPLORE +IMPLORED +IMPLORING +IMPLOSION +IMPLY +IMPLYING +IMPOLITE +IMPORT +IMPORTANCE +IMPORTANT +IMPORTANTLY +IMPORTATION +IMPORTED +IMPORTER +IMPORTERS +IMPORTERS' +IMPORTING +IMPORTS +IMPOSE +IMPOSED +IMPOSES +IMPOSING +IMPOSITION +IMPOSSIBILITY +IMPOSSIBLE +IMPOSSIBLY +IMPOSTOR +IMPOSTORS +IMPOTENCE +IMPOTENT +IMPOUND +IMPOUNDED +IMPOUNDMENT +IMPOVERISH +IMPOVERISHED +IMPOVERISHMENT +IMPRACTICAL +IMPRECISE +IMPREGNABLE +IMPREGNATED +IMPRESARIO +IMPRESS +IMPRESSED +IMPRESSES +IMPRESSING +IMPRESSION +IMPRESSIONABLE +IMPRESSIONISM +IMPRESSIONIST +IMPRESSIONISTIC +IMPRESSIONISTS +IMPRESSIONS +IMPRESSIVE +IMPRESSIVELY +IMPRIMATUR +IMPRINT +IMPRINTED +IMPRINTS +IMPRISON +IMPRISONED +IMPRISONING +IMPRISONMENT +IMPROBABLE +IMPROBABLY +IMPROMPTU +IMPROPER +IMPROPERLY +IMPROPRIETIES +IMPROPRIETY +IMPROV +IMPROVE +IMPROVED +IMPROVEMENT +IMPROVEMENTS +IMPROVES +IMPROVING +IMPROVISATION +IMPROVISATIONAL +IMPROVISATIONS +IMPROVISE +IMPROVISED +IMPROVISING +IMPRUDENT +IMPUGN +IMPUGNED +IMPULSE +IMPULSES +IMPULSIVE +IMPULSIVELY +IMPUNITY +IMPURE +IMPURITIES +IMPUTED +IMRE +IMREG +IMUS +IN +INA +INABILITY +INACCESSIBLE +INACCURACIES +INACCURACY +INACCURATE +INACCURATELY +INACIO +INACTION +INACTIVE +INACTIVITY +INADEQUACIES +INADEQUACY +INADEQUATE +INADEQUATELY +INADMISSIBLE +INADVERTENT +INADVERTENTLY +INALIENABLE +INANE +INANIMATE +INAPPROPRIATE +INAPPROPRIATELY +INARTICULATE +INASMUCH +INATTENTION +INATTENTIVE +INAUDIBLE +INAUGURAL +INAUGURATE +INAUGURATED +INAUGURATING +INAUGURATION +INAUGURATIONS +INAUSPICIOUS +INBORN +INBOUND +INBRED +INCA +INCALCULABLE +INCANDESCENT +INCAPABLE +INCAPACITATED +INCAPACITY +INCARCERATE +INCARCERATED +INCARCERATION +INCARNATE +INCARNATION +INCARNATIONS +INCAS +INCENDIARY +INCENDY +INCENSE +INCENSED +INCENTIVE +INCENTIVES +INCEPTION +INCESSANT +INCESSANTLY +INCEST +INCESTUOUS +INCH +INCHCAPE +INCHED +INCHES +INCHING +INCHON +INCIDENCE +INCIDENCES +INCIDENT +INCIDENTAL +INCIDENTALLY +INCIDENTS +INCINERATE +INCINERATED +INCINERATION +INCINERATOR +INCINERATORS +INCIPIENT +INCIRLIK +INCISE +INCISED +INCISION +INCISIONS +INCISIVE +INCITE +INCITED +INCITEMENT +INCITES +INCITING +INCLEMENT +INCLINATION +INCLINATIONS +INCLINE +INCLINED +INCLUDE +INCLUDED +INCLUDES +INCLUDING +INCLUSION +INCLUSIVE +INCLUSIVENESS +INCO +INCO'S +INCOGNITO +INCOHERENCE +INCOHERENT +INCOME +INCOMES +INCOMING +INCOMMUNICADO +INCOMPARABLE +INCOMPATIBILITY +INCOMPATIBLE +INCOMPETENCE +INCOMPETENT +INCOMPLETE +INCOMPREHENSIBLE +INCONCEIVABLE +INCONCLUSIVE +INCONCLUSIVELY +INCONGRUOUS +INCONSEQUENTIAL +INCONSISTENCIES +INCONSISTENCY +INCONSISTENT +INCONSPICUOUS +INCONTINENCE +INCONTINENT +INCONTROVERTIBLE +INCONVENIENCE +INCONVENIENCED +INCONVENIENCES +INCONVENIENT +INCORPORATE +INCORPORATED +INCORPORATED'S +INCORPORATES +INCORPORATING +INCORPORATION +INCORRECT +INCORRECTLY +INCORRIGIBLE +INCREASE +INCREASED +INCREASES +INCREASING +INCREASINGLY +INCREDIBLE +INCREDIBLY +INCREDULITY +INCREDULOUS +INCREDULOUSLY +INCREMENT +INCREMENTAL +INCREMENTALLY +INCREMENTS +INCRIMINATE +INCRIMINATING +INCRIMINATION +INCUBATION +INCUBATOR +INCUBATORS +INCUMBENCY +INCUMBENT +INCUMBENT'S +INCUMBENTS +INCUR +INCURABLE +INCURRED +INCURRING +INCURS +INCURSION +INCURSIONS +INDEBTED +INDEBTEDNESS +INDECENCY +INDECENT +INDECISION +INDECISIVE +INDECISIVENESS +INDEED +INDEFATIGABLE +INDEFENSIBLE +INDEFINITE +INDEFINITELY +INDELIBLE +INDELIBLY +INDELICATO +INDEMNIFICATION +INDEMNIFY +INDEMNITIES +INDEMNITY +INDENTURE +INDENTURED +INDEPENDENCE +INDEPENDENT +INDEPENDENTLY +INDEPENDENTS +INDESCRIBABLE +INDESTRUCTIBLE +INDETERMINATE +INDEX +INDEX'S +INDEXATION +INDEXED +INDEXES +INDEXING +INDIA +INDIA'S +INDIAN +INDIANA +INDIANA'S +INDIANAPOLIS +INDIANS +INDIANS' +INDICATE +INDICATED +INDICATES +INDICATING +INDICATION +INDICATIONS +INDICATIVE +INDICATOR +INDICATORS +INDICES +INDICT +INDICTED +INDICTING +INDICTMENT +INDICTMENTS +INDICTS +INDIES +INDIFFERENCE +INDIFFERENT +INDIGENOUS +INDIGENT +INDIGENTS +INDIGESTION +INDIGNANT +INDIGNANTLY +INDIGNATION +INDIGNITIES +INDIGNITY +INDIGO +INDIRA +INDIRECT +INDIRECTLY +INDISCRETION +INDISCRETIONS +INDISCRIMINATE +INDISCRIMINATELY +INDISPENSABLE +INDISPENSIBLE +INDISPUTABLE +INDISPUTABLY +INDISTINGUISHABLE +INDIUM +INDIVIDUAL +INDIVIDUAL'S +INDIVIDUALISM +INDIVIDUALISTIC +INDIVIDUALISTS +INDIVIDUALITY +INDIVIDUALIZED +INDIVIDUALLY +INDIVIDUALS +INDIVIDUALS' +INDIVISIBLE +INDO +INDOCHINA +INDOCHINESE +INDOCTRINATED +INDOCTRINATION +INDOMITABLE +INDONESIA +INDONESIA'S +INDONESIAN +INDONESIANS +INDOOR +INDOORS +INDOSUEZ +INDUCE +INDUCED +INDUCEMENT +INDUCEMENTS +INDUCES +INDUCING +INDUCTED +INDUCTEES +INDUCTION +INDULGE +INDULGED +INDULGENCE +INDULGENCES +INDULGENT +INDULGES +INDULGING +INDURAIN +INDUSTRIA +INDUSTRIAL +INDUSTRIALE +INDUSTRIALIST +INDUSTRIALISTS +INDUSTRIALIZATION +INDUSTRIALIZED +INDUSTRIALIZING +INDUSTRIALLY +INDUSTRIALS +INDUSTRIALS' +INDUSTRIE +INDUSTRIELLE +INDUSTRIES +INDUSTRIES' +INDUSTRIOUS +INDUSTRY +INDUSTRY'S +INDUSTRYWIDE +INDY +INDYCAR +INDYK +INEBRIATED +INEFFECTIVE +INEFFECTIVENESS +INEFFECTUAL +INEFFICIENCIES +INEFFICIENCY +INEFFICIENT +INEFFICIENTLY +INELIGIBLE +INEPT +INEPTITUDE +INEPTNESS +INEQUALITIES +INEQUALITY +INEQUITABLE +INEQUITIES +INEQUITY +INERT +INERTIA +INERTIAL +INESCAPABLE +INEVITABILITY +INEVITABLE +INEVITABLY +INEXACT +INEXCUSABLE +INEXHAUSTIBLE +INEXORABLE +INEXORABLY +INEXPENSIVE +INEXPENSIVELY +INEXPERIENCE +INEXPERIENCED +INEXPLICABLE +INEXPLICABLY +INEXTRICABLY +INEZ +INFALLIBILITY +INFALLIBLE +INFAMOUS +INFAMY +INFANCY +INFANT +INFANT'S +INFANTE +INFANTICIDE +INFANTILE +INFANTRY +INFANTRYMAN +INFANTRYMEN +INFANTS +INFANTS' +INFATUATED +INFATUATION +INFECT +INFECTED +INFECTING +INFECTION +INFECTIONS +INFECTIOUS +INFECTS +INFER +INFERENCE +INFERENCES +INFERIOR +INFERIORITY +INFERNAL +INFERNO +INFERRED +INFERTILE +INFERTILITY +INFESTATION +INFESTATIONS +INFESTED +INFIDEL +INFIDELITIES +INFIDELITY +INFIDELS +INFIELD +INFIELDER +INFIELDERS +INFIGHTING +INFILTRATE +INFILTRATED +INFILTRATING +INFILTRATION +INFILTRATIONS +INFILTRATORS +INFINITE +INFINITELY +INFINITESIMAL +INFINITI +INFINITY +INFIRM +INFIRMARY +INFLAME +INFLAMED +INFLAMING +INFLAMMATION +INFLAMMATORY +INFLATABLE +INFLATE +INFLATED +INFLATES +INFLATING +INFLATION +INFLATION'S +INFLATIONARY +INFLECTION +INFLEXIBILITY +INFLEXIBLE +INFLICT +INFLICTED +INFLICTING +INFLICTION +INFLICTS +INFLOW +INFLOWS +INFLUENCE +INFLUENCED +INFLUENCES +INFLUENCING +INFLUENTIAL +INFLUENZA +INFLUX +INFO +INFOCORP +INFOMERCIAL +INFOMERCIALS +INFORM +INFORMAL +INFORMALITY +INFORMALLY +INFORMANT +INFORMANTS +INFORMATION +INFORMATIONAL +INFORMATIVE +INFORMED +INFORMER +INFORMERS +INFORMING +INFORMIX +INFORMS +INFOSCAN +INFOTECHNOLOGY +INFOWORLD +INFRACTION +INFRACTIONS +INFRARED +INFRASTRUCTURE +INFRASTRUCTURES +INFREQUENT +INFREQUENTLY +INFRINGE +INFRINGED +INFRINGEMENT +INFRINGEMENTS +INFRINGES +INFRINGING +INFURIATE +INFURIATED +INFURIATES +INFURIATING +INFUSE +INFUSED +INFUSING +INFUSION +INFUSIONS +ING +INGALLS +INGE +INGELHEIM +INGENIOUS +INGENUE +INGENUITY +INGERSOLL +INGERSOLL'S +INGEST +INGESTED +INGESTING +INGESTION +INGHAM +INGLE +INGLES +INGLEWOOD +INGLIS +INGMAR +INGOT +INGOTS +INGRAINED +INGRAM +INGRAM'S +INGRATIATE +INGRATIATING +INGREDIENT +INGREDIENTS +INGRID +INGUSH +INGUSHETIA +INGVAR +INHABIT +INHABITANTS +INHABITED +INHABITING +INHABITS +INHALATION +INHALE +INHALED +INHALING +INHERENT +INHERENTLY +INHERIT +INHERITANCE +INHERITED +INHERITING +INHERITS +INHIBIT +INHIBITED +INHIBITING +INHIBITION +INHIBITIONS +INHIBITOR +INHIBITORS +INHIBITS +INHOFE +INHOSPITABLE +INHOUSE +INHUMAN +INHUMANE +INHUMANITY +INIKI +INIMICAL +INIMITABLE +INITIAL +INITIALED +INITIALING +INITIALLY +INITIALS +INITIATE +INITIATED +INITIATES +INITIATING +INITIATION +INITIATIVE +INITIATIVE'S +INITIATIVES +INJECT +INJECTABLE +INJECTED +INJECTING +INJECTION +INJECTIONS +INJECTOR +INJECTS +INJUNCTION +INJUNCTIONS +INJUNCTIVE +INJURE +INJURED +INJURES +INJURIES +INJURING +INJURIOUS +INJURY +INJUSTICE +INJUSTICES +INK +INKATHA +INKATHA'S +INKED +INKJET +INKLING +INKS +INLAID +INLAND +INLAND'S +INLET +INLETS +INMAN +INMAN'S +INMARSAT +INMATE +INMATE'S +INMATES +INMATES' +INN +INN'S +INNARDS +INNATE +INNER +INNERMOST +INNES +INNING +INNINGS +INNIS +INNKEEPER +INNOCENCE +INNOCENT +INNOCENTLY +INNOCENTS +INNOCUOUS +INNOVATE +INNOVATION +INNOVATIONS +INNOVATIVE +INNOVATOR +INNOVATORS +INNS +INNSBRUCK +INNUENDO +INNUENDOES +INNUMERABLE +INOCULATE +INOCULATED +INOCULATION +INOCULATIONS +INONU +INOPERABLE +INOPERATIVE +INOPPORTUNE +INORDINATE +INORDINATELY +INOUE +INOUYE +INPATIENT +INPUT +INPUTS +INQUEST +INQUIRE +INQUIRED +INQUIRER +INQUIRES +INQUIRIES +INQUIRING +INQUIRY +INQUISITION +INQUISITIVE +INROADS +INS +INSANE +INSANELY +INSANITY +INSATIABLE +INSCRIBED +INSCRIPTION +INSCRIPTIONS +INSCRUTABLE +INSECT +INSECTICIDE +INSECTICIDES +INSECTS +INSECURE +INSECURITIES +INSECURITY +INSEMINATED +INSEMINATION +INSENSITIVE +INSENSITIVITY +INSEPARABLE +INSERT +INSERTED +INSERTING +INSERTION +INSERTS +INSIDE +INSIDER +INSIDER'S +INSIDERS +INSIDERS' +INSIDES +INSIDIOUS +INSIGHT +INSIGHTFUL +INSIGHTS +INSIGNIA +INSIGNIFICANCE +INSIGNIFICANT +INSILCO +INSINCERE +INSINUATE +INSINUATED +INSINUATING +INSINUATION +INSINUATIONS +INSIPID +INSIST +INSISTED +INSISTENCE +INSISTENT +INSISTENTLY +INSISTING +INSISTS +INSKEEP +INSLAW +INSOFAR +INSOLUBLE +INSOLVENCIES +INSOLVENCY +INSOLVENT +INSOMNIA +INSPECT +INSPECTED +INSPECTING +INSPECTION +INSPECTIONS +INSPECTOR +INSPECTORS +INSPECTORS' +INSPECTS +INSPIRATION +INSPIRATIONAL +INSPIRATIONS +INSPIRE +INSPIRED +INSPIRES +INSPIRING +INSTABILITY +INSTALL +INSTALLATION +INSTALLATIONS +INSTALLED +INSTALLER +INSTALLERS +INSTALLING +INSTALLMENT +INSTALLMENTS +INSTALLS +INSTANCE +INSTANCES +INSTANT +INSTANTANEOUS +INSTANTANEOUSLY +INSTANTLY +INSTEAD +INSTIGATE +INSTIGATED +INSTIGATING +INSTIGATION +INSTIGATOR +INSTIGATORS +INSTILL +INSTILLED +INSTILLING +INSTINCT +INSTINCTIVE +INSTINCTIVELY +INSTINCTS +INSTINET +INSTITUT +INSTITUTE +INSTITUTE'S +INSTITUTED +INSTITUTES +INSTITUTING +INSTITUTION +INSTITUTION'S +INSTITUTIONAL +INSTITUTIONALIZATION +INSTITUTIONALIZE +INSTITUTIONALIZED +INSTITUTIONALLY +INSTITUTIONS +INSTITUTIONS' +INSTITUTO +INSTRUCT +INSTRUCTED +INSTRUCTING +INSTRUCTION +INSTRUCTIONAL +INSTRUCTIONS +INSTRUCTIVE +INSTRUCTOR +INSTRUCTORS +INSTRUCTS +INSTRUMENT +INSTRUMENT'S +INSTRUMENTAL +INSTRUMENTALISTS +INSTRUMENTATION +INSTRUMENTS +INSTRUMENTS' +INSUBORDINATION +INSUBSTANTIAL +INSUFFERABLE +INSUFFICIENT +INSUFFICIENTLY +INSULAR +INSULARITY +INSULATE +INSULATED +INSULATES +INSULATING +INSULATION +INSULIN +INSULT +INSULTED +INSULTING +INSULTS +INSURANCE +INSURANCE'S +INSURE +INSURED +INSURER +INSURER'S +INSURERS +INSURERS' +INSURES +INSURGENCIES +INSURGENCY +INSURGENT +INSURGENTS +INSURING +INSURMOUNTABLE +INSURRECTION +INSURRECTIONS +INT +INTACT +INTAKE +INTAKES +INTANGIBLE +INTANGIBLES +INTEFADEH +INTEGRA +INTEGRAL +INTEGRATE +INTEGRATED +INTEGRATED'S +INTEGRATES +INTEGRATING +INTEGRATION +INTEGRATOR +INTEGRITY +INTEL +INTEL'S +INTELLECT +INTELLECTUAL +INTELLECTUALLY +INTELLECTUALS +INTELLICALL +INTELLIGENCE +INTELLIGENCER +INTELLIGENT +INTELLIGENTLY +INTELLIGENTSIA +INTELLIGIBLE +INTELSAT +INTEMPERATE +INTEND +INTENDED +INTENDING +INTENDS +INTENSE +INTENSELY +INTENSIFICATION +INTENSIFIED +INTENSIFIES +INTENSIFY +INTENSIFYING +INTENSITIES +INTENSITY +INTENSIVE +INTENSIVELY +INTENT +INTENTION +INTENTIONAL +INTENTIONALLY +INTENTIONED +INTENTIONS +INTENTLY +INTENTS +INTER +INTERACT +INTERACTED +INTERACTING +INTERACTION +INTERACTIONS +INTERACTIVE +INTERACTIVITY +INTERACTS +INTERAGENCY +INTERAMERICAN +INTERBANK +INTERBREW +INTERCABLE +INTERCEDE +INTERCEDED +INTERCEPT +INTERCEPTED +INTERCEPTING +INTERCEPTION +INTERCEPTIONS +INTERCEPTOR +INTERCEPTORS +INTERCEPTS +INTERCESSION +INTERCHANGE +INTERCHANGEABLE +INTERCHANGEABLY +INTERCHANGES +INTERCITY +INTERCO +INTERCO'S +INTERCOLLEGIATE +INTERCOM +INTERCOMPANY +INTERCONNECT +INTERCONNECTED +INTERCONNECTION +INTERCONTINENTAL +INTERCOURSE +INTERDEALER +INTERDENOMINATIONAL +INTERDEPENDENCE +INTERDEPENDENT +INTERDICT +INTERDICTION +INTERDIGITAL +INTERDISCIPLINARY +INTEREST +INTERESTED +INTERESTING +INTERESTINGLY +INTERESTRATE +INTERESTS +INTERFACE +INTERFACES +INTERFAITH +INTERFAX +INTERFERE +INTERFERED +INTERFERENCE +INTERFERES +INTERFERING +INTERFERON +INTERFIRST +INTERFLUG +INTERGALACTIC +INTERGENERATIONAL +INTERGOVERNMENTAL +INTERGRAPH +INTERGROUP +INTERGROUP'S +INTERIM +INTERIOR +INTERIORS +INTERJECT +INTERJECTED +INTERLAKE +INTERLEAF +INTERLEUKIN +INTERLINK +INTERLINKED +INTERLOCKING +INTERLOPER +INTERLOPERS +INTERLUDE +INTERLUDES +INTERMARK +INTERMARKET +INTERMARRIAGE +INTERMEDIA +INTERMEDIARIES +INTERMEDIARY +INTERMEDIATE +INTERMEDIATES +INTERMEDICS +INTERMINABLE +INTERMISSION +INTERMITTENT +INTERMITTENTLY +INTERMODAL +INTERMOUNTAIN +INTERN +INTERNACIONAL +INTERNAL +INTERNALIZED +INTERNALLY +INTERNATIONAL +INTERNATIONAL'S +INTERNATIONALE +INTERNATIONALISM +INTERNATIONALIST +INTERNATIONALISTS +INTERNATIONALIZATION +INTERNATIONALIZE +INTERNATIONALLY +INTERNECINE +INTERNED +INTERNEES +INTERNET +INTERNET'S +INTERNIST +INTERNISTS +INTERNMENT +INTERNS +INTERNSHIP +INTERNSHIPS +INTERPERSONAL +INTERPLANETARY +INTERPLAY +INTERPOL +INTERPOLATED +INTERPRET +INTERPRETATION +INTERPRETATIONS +INTERPRETED +INTERPRETER +INTERPRETERS +INTERPRETING +INTERPRETIVE +INTERPRETS +INTERPROVINCIAL +INTERPUBLIC +INTERPUBLIC'S +INTERRACIAL +INTERRED +INTERRELATED +INTERRELIGIOUS +INTERROGATE +INTERROGATED +INTERROGATING +INTERROGATION +INTERROGATIONS +INTERROGATOR +INTERROGATORS +INTERRUPT +INTERRUPTED +INTERRUPTING +INTERRUPTION +INTERRUPTIONS +INTERRUPTS +INTERSCOPE +INTERSECT +INTERSECTION +INTERSECTIONS +INTERSPERSED +INTERSTATE +INTERSTATE'S +INTERSTATES +INTERSTELLAR +INTERTAN +INTERTECH +INTERTWINED +INTERVAL +INTERVALS +INTERVENE +INTERVENED +INTERVENES +INTERVENING +INTERVENTION +INTERVENTIONAL +INTERVENTIONISM +INTERVENTIONIST +INTERVENTIONS +INTERVIEW +INTERVIEWED +INTERVIEWER +INTERVIEWERS +INTERVIEWING +INTERVIEWS +INTERWOVEN +INTESTINAL +INTESTINE +INTESTINES +INTI +INTIFADA +INTIMACY +INTIMATE +INTIMATED +INTIMATELY +INTIMATES +INTIMIDATE +INTIMIDATED +INTIMIDATING +INTIMIDATION +INTIS +INTO +INTOLERABLE +INTOLERANCE +INTOLERANT +INTONATION +INTONED +INTONES +INTOURIST +INTOXICATED +INTOXICATING +INTOXICATION +INTRA +INTRACOASTAL +INTRACTABLE +INTRADAY +INTRAMURAL +INTRANSIGENCE +INTRANSIGENT +INTRAPARTY +INTRASTATE +INTRAUTERINE +INTRAVENOUS +INTRAVENOUSLY +INTREPID +INTRICACIES +INTRICATE +INTRICATELY +INTRIGUE +INTRIGUED +INTRIGUES +INTRIGUING +INTRINSIC +INTRINSICALLY +INTRO +INTRODUCE +INTRODUCED +INTRODUCES +INTRODUCING +INTRODUCTION +INTRODUCTIONS +INTRODUCTORY +INTROSPECTION +INTROSPECTIVE +INTROVERTED +INTRUDE +INTRUDED +INTRUDER +INTRUDERS +INTRUDES +INTRUDING +INTRUSION +INTRUSIONS +INTRUSIVE +INTUIT +INTUIT'S +INTUITION +INTUITIVE +INTUITIVELY +INUIT +INUNDATE +INUNDATED +INUNDATING +INURED +INVACARE +INVADE +INVADED +INVADER +INVADERS +INVADES +INVADING +INVALID +INVALIDATE +INVALIDATED +INVALIDATING +INVALIDS +INVALUABLE +INVARIABLY +INVASION +INVASIONS +INVASIVE +INVECTIVE +INVENT +INVENTED +INVENTING +INVENTION +INVENTIONS +INVENTIVE +INVENTIVENESS +INVENTOR +INVENTORIES +INVENTORS +INVENTORY +INVENTS +INVERNESS +INVERSE +INVERSELY +INVERSION +INVERTED +INVESCO +INVEST +INVESTCORP +INVESTED +INVESTIGATE +INVESTIGATED +INVESTIGATES +INVESTIGATING +INVESTIGATION +INVESTIGATION'S +INVESTIGATIONAL +INVESTIGATIONS +INVESTIGATIVE +INVESTIGATOR +INVESTIGATOR'S +INVESTIGATORS +INVESTIGATORS' +INVESTIGATORY +INVESTING +INVESTMENT +INVESTMENT'S +INVESTMENTS +INVESTMENTS' +INVESTNET +INVESTOR +INVESTOR'S +INVESTORS +INVESTORS' +INVESTS +INVETERATE +INVIDIOUS +INVIGORATE +INVIGORATED +INVIGORATING +INVINCIBILITY +INVINCIBLE +INVIOLABILITY +INVIOLABLE +INVISIBILITY +INVISIBLE +INVITATION +INVITATIONAL +INVITATIONS +INVITE +INVITED +INVITES +INVITING +INVOCATION +INVOICE +INVOICES +INVOKE +INVOKED +INVOKES +INVOKING +INVOLUNTARILY +INVOLUNTARY +INVOLVE +INVOLVED +INVOLVEMENT +INVOLVES +INVOLVING +INVULNERABLE +INWARD +INXS +IO +IODINE +IOMEGA +ION +IONA +IONICS +IONS +IOTA +IOWA +IOWA'S +IOWANS +IPALCO +IPANEMA +IPSCO +IQBAL +IQLIM +IRA +IRAN +IRAN'S +IRANI +IRANIAN +IRANIANS +IRAQ +IRAQ'S +IRAQGATE +IRAQI +IRAQIS +IRAQIS' +IRASCIBLE +IRATE +IRBY +IRE +IRELAND +IRELAND'S +IRENE +IRIAN +IRIDESCENT +IRIDIUM +IRINA +IRIS +IRISES +IRISH +IRISHMAN +IRISHMEN +IRKED +IRKS +IRKSOME +IRKUTSK +IRMA +IRON +IRONCLAD +IRONED +IRONIC +IRONICALLY +IRONIES +IRONING +IRONS +IRONWEED +IRONY +IROQUOIS +IRRADIATED +IRRADIATION +IRRATIONAL +IRRATIONALITY +IRRATIONALLY +IRRECONCILABLE +IRREFUTABLE +IRREGULAR +IRREGULARITIES +IRREGULARITY +IRREGULARLY +IRREGULARS +IRRELEVANCE +IRRELEVANT +IRREPARABLE +IRREPARABLY +IRREPLACEABLE +IRREPRESSIBLE +IRRESISTIBLE +IRRESISTIBLY +IRRESPECTIVE +IRRESPONSIBILITY +IRRESPONSIBLE +IRRESPONSIBLY +IRRETRIEVABLY +IRREVERENCE +IRREVERENT +IRREVERSIBLE +IRREVERSIBLY +IRREVOCABLE +IRREVOCABLY +IRRIGATE +IRRIGATED +IRRIGATION +IRRITABILITY +IRRITABLE +IRRITANT +IRRITANTS +IRRITATE +IRRITATED +IRRITATES +IRRITATING +IRRITATION +IRRITATIONS +IRV +IRVIN +IRVINE +IRVING +IRVING'S +IRVINGTON +IRWIN +IRWINDALE +IS +ISA +ISAAC +ISAACS +ISAACSON +ISAAK +ISABEL +ISABELLA +ISABELLE +ISAIAH +ISALY +ISAO +ISCHEMIA +ISELIN +ISENBERG +ISETAN +ISFAHAN +ISGUR +ISH +ISHAM +ISHAQ +ISHIHARA +ISHII +ISHIKAWA +ISHIKAWAJIMA +ISHMAEL +ISHTAR +ISIAH +ISIDORE +ISIS +ISLA +ISLAM +ISLAM'S +ISLAMABAD +ISLAMI +ISLAMIC +ISLAMIST +ISLAMISTS +ISLAMIYA +ISLAND +ISLAND'S +ISLANDER +ISLANDERS +ISLANDERS' +ISLANDS +ISLANDS' +ISLE +ISLES +ISLIP +ISM +ISMAEL +ISMAIL +ISN'T +ISOCYANATE +ISOLATE +ISOLATED +ISOLATES +ISOLATING +ISOLATION +ISOLATIONISM +ISOLATIONIST +ISOLATIONISTS +ISOLDE +ISOMEDIX +ISOSCELES +ISOTONER +ISOTOPE +ISOTOPES +ISRAEL +ISRAEL'S +ISRAELI +ISRAELI'S +ISRAELIS +ISRAELIS' +ISRAELITES +ISSA +ISSAM +ISSING +ISSUANCE +ISSUE +ISSUE'S +ISSUED +ISSUER +ISSUER'S +ISSUERS +ISSUES +ISSUING +IST +ISTANBUL +ISTAT +ISTEL +ISTHMUS +ISTITUTO +ISTOOK +ISTVAN +ISUTANI +ISUZU +ISUZU'S +IT +IT'D +IT'LL +IT'S +ITAL +ITALIA +ITALIAN +ITALIANA +ITALIANO +ITALIANS +ITALICS +ITALTEL +ITALY +ITALY'S +ITAMAR +ITAR +ITCH +ITCHING +ITCHY +ITEL +ITEL'S +ITEM +ITEMIZE +ITEMIZED +ITEMS +ITHACA +ITIM +ITINERANT +ITINERARIES +ITINERARY +ITO +ITO'S +ITOCHU +ITOH +ITOMAN +ITS +ITSELF +ITTIHAD +ITZHAK +IUSACELL +IVAN +IVANA +IVANHOE +IVANISEVIC +IVANKO +IVANOV +IVASHKO +IVAX +IVERSEN +IVERSON +IVES +IVESTER +IVEY +IVINS +IVORIAN +IVORY +IVY +IWAI +IWASAKI +IWERKS +IWO +IZETBEGOVIC +IZOD +IZUMI +IZVESTIA +IZZY +J. +J.'S +J.S +JA +JA'AFAR +JAAFAR +JAB +JABALIYA +JABBAR +JABBED +JABBING +JABER +JABLONSKI +JABS +JACEK +JACINTO +JACK +JACK'S +JACKAL +JACKED +JACKET +JACKETED +JACKETS +JACKHAMMERS +JACKI +JACKIE +JACKIE'S +JACKING +JACKMAN +JACKPOT +JACKPOTS +JACKS +JACKSON +JACKSON'S +JACKSONS +JACKSONVILLE +JACLYN +JACO +JACOB +JACOB'S +JACOBI +JACOBO +JACOBOSKI +JACOBS +JACOBS' +JACOBS'S +JACOBSEN +JACOBSON +JACOBSON'S +JACOBY +JACOR +JACQUE +JACQUELINE +JACQUELYN +JACQUES +JACUZZI +JADE +JADED +JAE +JAEGER +JAFAR +JAFFA +JAFFE +JAFFEE +JAFFNA +JAFFRAY +JAG +JAGER +JAGGED +JAGGER +JAGGER'S +JAGMOHAN +JAGT +JAGUAR +JAGUAR'S +JAGUARS +JAHN +JAHR +JAI +JAIL +JAIL'S +JAILED +JAILER +JAILERS +JAILHOUSE +JAILING +JAILS +JAIME +JAIN +JAKARTA +JAKARTA'S +JAKE +JAKE'S +JAKES +JAKOB +JALAL +JALALABAD +JALAPENO +JALISCO +JAM +JAM'S +JAMAAT +JAMAICA +JAMAICA'S +JAMAICAN +JAMAICANS +JAMAIL +JAMAL +JAMAL'S +JAMAR +JAMBA +JAMBALAYA +JAMBOREE +JAMES +JAMES' +JAMES'S +JAMESON +JAMESTOWN +JAMESWAY +JAMIAT +JAMIE +JAMIE'S +JAMIESON +JAMIL +JAMISON +JAMMED +JAMMERS +JAMMING +JAMMU +JAMS +JAN +JANA +JANACHOWSKI +JANATA +JANE +JANE'S +JANEIRO +JANES +JANESVILLE +JANET +JANEZ +JANG +JANICE +JANIE +JANINE +JANIS +JANITOR +JANITORIAL +JANITORS +JANKLOW +JANKOWSKI +JANN +JANNEY +JANNOCK +JANOS +JANOWSKI +JANSEN +JANSSEN +JANUARY +JANUARY'S +JANUS +JANUSZ +JANVIER +JANZEN +JAPAN +JAPAN'S +JAPANESE +JAPANTOWN +JAPONICA +JAR +JARAMILLO +JARDINE +JARDINE'S +JARED +JARGON +JARJOU +JAROMIR +JARRED +JARRELL +JARRETT +JARRIEL +JARRING +JARS +JARUZELSKI +JARUZELSKI'S +JARVIK +JARVIS +JASINOWSKI +JASMINE +JASON +JASON'S +JASPER +JASSIM +JASTRZEBIE +JATIYA +JAUNDICE +JAUNDICED +JAUNT +JAUNTS +JAUNTY +JAVA +JAVAD +JAVELIN +JAVIER +JAVITS +JAW +JAWAD +JAWAHARLAL +JAWARA +JAWBONE +JAWBONING +JAWED +JAWORSKI +JAWS +JAY +JAY'S +JAYA +JAYCEES +JAYEWARDENE +JAYHAWKS +JAYNE +JAYS +JAYS' +JAYSON +JAYWALKING +JAZZ +JAZZY +JEALOUS +JEALOUSLY +JEALOUSY +JEAN +JEAN'S +JEANE +JEANETTE +JEANINE +JEANNE +JEANNETTE +JEANNIE +JEANS +JEB +JED +JEDDAH +JEEP +JEEPS +JEERED +JEERING +JEERS +JEEZ +JEFF +JEFF'S +JEFFE +JEFFERIES +JEFFERS +JEFFERSON +JEFFERSON'S +JEFFERSONIAN +JEFFERY +JEFFORDS +JEFFREY +JEFFREY'S +JEFFRIES +JEFFRY +JEHOVAH'S +JEKYLL +JELL +JELLIES +JELLO +JELLY +JELLYFISH +JEMIMA +JEMISON +JEN +JENCO +JENIFER +JENIN +JENKINS +JENKINS' +JENKS +JENN +JENNA +JENNER +JENNIE +JENNIFER +JENNIFER'S +JENNINGER +JENNINGS +JENNINGS' +JENNISON +JENNY +JENRETTE +JENS +JENSEN +JENSEN'S +JEOPARDIZE +JEOPARDIZED +JEOPARDIZES +JEOPARDIZING +JEOPARDY +JEPSON +JERALD +JERE +JEREMIAH +JEREMY +JERI +JERICHO +JERK +JERKED +JERKING +JERKS +JERKY +JERMAINE +JERNIGAN +JEROME +JERRI +JERRICO +JERROLD +JERRY +JERRY'S +JERSEY +JERSEY'S +JERSEYS +JERUSALEM +JERUSALEM'S +JERVIS +JERZY +JESPER +JESS +JESSE +JESSE'S +JESSI +JESSICA +JESSICA'S +JESSIE +JESSUP +JESSY +JESSYE +JEST +JESTER +JESUIT +JESUITS +JESUP +JESUS +JESUS' +JET +JET'S +JETER +JETLINER +JETLINERS +JETS +JETS' +JETSONS +JETSTREAM +JETT +JETT'S +JETTA +JETTED +JETTING +JETTISON +JETTISONED +JETTISONING +JETTY +JEW +JEWEL +JEWELED +JEWELER +JEWELERS +JEWELL +JEWELRY +JEWELS +JEWETT +JEWISH +JEWISON +JEWRY +JEWS +JEWS' +JI +JIAN +JIANG +JIANG'S +JIANGSU +JIANGXI +JIBE +JIBES +JIBRIL +JIBRIL'S +JIDDAH +JIE +JIFFY +JIG +JIGSAW +JIHAD +JILIN +JILL +JILLIAN +JILTED +JIM +JIM'S +JIMA +JIMENEZ +JIMI +JIMMIE +JIMMY +JIMMY'S +JIN +JING +JINGLE +JINGLES +JINGSHENG +JINKS +JINOTEGA +JINX +JIRI +JITTERS +JITTERY +JIVE +JO +JOACHIM +JOAN +JOANN +JOANNA +JOANNE +JOAO +JOAQUIM +JOAQUIN +JOB +JOB'S +JOBE +JOBLESS +JOBLESSNESS +JOBS +JOBS' +JOCELYN +JOCHEN +JOCK +JOCKEY +JOCKEYED +JOCKEYING +JOCKEYS +JOCKEYS' +JOCKS +JOCULAR +JODI +JODIE +JODY +JOE +JOE'S +JOEDICKE +JOEL +JOEL'S +JOERG +JOES +JOEY +JOFFE +JOFFREY +JOG +JOGGED +JOGGER +JOGGERS +JOGGING +JOGS +JOHAN +JOHANN +JOHANNA +JOHANNES +JOHANNESBURG +JOHANNESBURG'S +JOHANSEN +JOHANSON +JOHANSSON +JOHN +JOHN'S +JOHNIE +JOHNNIE +JOHNNY +JOHNNY'S +JOHNS +JOHNSEN +JOHNSON +JOHNSON'S +JOHNSONS +JOHNSTON +JOHNSTON'S +JOHNSTONE +JOHNSTOWN +JOIE +JOIN +JOINED +JOINER +JOINING +JOINS +JOINT +JOINTLY +JOINTS +JOISTS +JOKE +JOKED +JOKER +JOKES +JOKHANG +JOKING +JOKINGLY +JOLENE +JOLIET +JOLLA +JOLLY +JOLSON +JOLT +JOLTED +JOLTING +JOLTS +JOMHURI +JON +JONAH +JONAS +JONASSAINT +JONATHAN +JONATHON +JONES +JONES' +JONES'S +JONESBORO +JONESES +JONESTOWN +JONG +JONI +JONTZ +JOO +JOON +JOONG +JOPLIN +JORDACHE +JORDAN +JORDAN'S +JORDANIAN +JORDANIANS +JORDANS +JORGE +JORGENSEN +JORGENSON +JORNADA +JORNAL +JOS +JOSE +JOSE'S +JOSEF +JOSEFA +JOSEPH +JOSEPH'S +JOSEPHINE +JOSEPHSON +JOSEPHTHAL +JOSETTE +JOSH +JOSHUA +JOSHUA'S +JOSIAH +JOSIE +JOSIP +JOSLYN +JOSPIN +JOSS +JOSTENS +JOSTLE +JOSTLED +JOSTLING +JOT +JOTTED +JOUBERT +JOULWAN +JOUNIEH +JOUR +JOURET +JOURNAL +JOURNAL'S +JOURNALISM +JOURNALIST +JOURNALIST'S +JOURNALISTIC +JOURNALISTS +JOURNALISTS' +JOURNALS +JOURNEY +JOURNEYED +JOURNEYMAN +JOURNEYS +JOUSTING +JOVAN +JOVANOVICH +JOVI +JOVIAL +JOVIAN +JOVIC +JOWL +JOXE +JOY +JOYA +JOYCE +JOYCE'S +JOYCELYN +JOYFUL +JOYFULLY +JOYNER +JOYOUS +JOYOUSLY +JOYS +JOYSTICK +JOZEF +JOZSEF +JU +JUAN +JUAN'S +JUANA +JUANITA +JUAREZ +JUBA +JUBAIL +JUBILANT +JUBILATION +JUBILEE +JUDAH +JUDAISM +JUDAISM'S +JUDAS +JUDD +JUDDS +JUDE +JUDEA +JUDEO +JUDGE +JUDGE'S +JUDGED +JUDGEMENT +JUDGES +JUDGES' +JUDGESHIP +JUDGESHIPS +JUDGING +JUDGMENT +JUDGMENTAL +JUDGMENTS +JUDI +JUDICIAL +JUDICIARY +JUDICIOUS +JUDICIOUSLY +JUDITH +JUDITHA +JUDO +JUDSON +JUDY +JUERGEN +JUG +JUGGERNAUT +JUGGLE +JUGGLED +JUGGLER +JUGGLERS +JUGGLES +JUGGLING +JUGS +JUGULAR +JUICE +JUICES +JUICY +JUILLIARD +JUKE +JUKEBOX +JUKEBOXES +JUL +JULE +JULES +JULIA +JULIAN +JULIANA +JULIANNE +JULIE +JULIE'S +JULIEN +JULIET +JULIETTE +JULIO +JULIUS +JULY +JULY'S +JUMBLATT +JUMBLATT'S +JUMBLE +JUMBLED +JUMBO +JUMBOS +JUMP +JUMPED +JUMPER +JUMPERS +JUMPING +JUMPS +JUMPSTART +JUMPSUIT +JUMPSUITS +JUMPY +JUN +JUNCTION +JUNCTURE +JUNDA +JUNE +JUNE'S +JUNEAU +JUNEJO +JUNG +JUNG'S +JUNGLE +JUNGLES +JUNIOR +JUNIOR'S +JUNIORS +JUNIPER +JUNIUS +JUNK +JUNKED +JUNKET +JUNKETS +JUNKIE +JUNKIES +JUNKING +JUNKINS +JUNKY +JUNKYARD +JUNO +JUNTA +JUNTA'S +JUPITER +JUPITER'S +JUPPE +JURADO +JURASSIC +JURGEN +JURIES +JURISDICTION +JURISDICTIONAL +JURISDICTIONS +JURISPRUDENCE +JURIST +JURISTS +JUROR +JUROR'S +JURORS +JURORS' +JURY +JURY'S +JUSCO +JUST +JUSTE +JUSTICE +JUSTICE'S +JUSTICES +JUSTICES' +JUSTIFIABLE +JUSTIFIABLY +JUSTIFICATION +JUSTIFICATIONS +JUSTIFIED +JUSTIFIES +JUSTIFY +JUSTIFYING +JUSTIN +JUSTIN'S +JUSTINE +JUSTLY +JUSTUS +JUT +JUTS +JUTTING +JUVENAL +JUVENILE +JUVENILES +JUXTAPOSED +JUXTAPOSITION +K. +K.'S +K.S +KA +KABI +KABUKI +KABUL +KABUL'S +KACH +KACZYNSKI +KACZYNSKI'S +KADAR +KADAR'S +KADDOUMI +KADER +KAELIN +KAELIN'S +KAFELNIKOV +KAFKA +KAFKA'S +KAFKAESQUE +KAGAME +KAGAN +KAHAN +KAHANE +KAHANE'S +KAHL +KAHLER +KAHLO +KAHN +KAHN'S +KAHNAWAKE +KAHNG +KAI +KAIFU +KAIFU'S +KAISER +KAISER'S +KAISERTECH +KAIXI +KAJIMA +KAJIYAMA +KALAMAZOO +KALAPANA +KALASHNIKOV +KALB +KALE +KALEIDA +KALEIDOSCOPE +KALIKOW +KALININ +KALININGRAD +KALINSKE +KALISH +KALMAN +KALUGIN +KAM +KAMAL +KAMAN +KAMCHATKA +KAMEI +KAMEL +KAMEN +KAMIKAZE +KAMIN +KAMINSKI +KAMINSKY +KAMM +KAMP +KAMP'S +KAMPALA +KAMPELMAN +KAMPEN +KAMPF +KAMPUCHEA +KAMSKY +KAN +KANAI +KANAWHA +KANDAHAR +KANDEL +KANDINSKY +KANDY +KANE +KANE'S +KANEB +KANEMARU +KANEMARU'S +KANG +KANGAROO +KANGAROOS +KANGYO +KANJORSKI +KANKAKEE +KANN +KANNER +KANO +KANSAI +KANSALLIS +KANSAN +KANSAS +KANSAS' +KANT +KANTER +KANTOR +KANTOR'S +KAO +KAOHSIUNG +KAPLAN +KAPLAN'S +KAPOOR +KAPOR +KAPOSI'S +KAPP +KAPPA +KAPTUR +KARA +KARABAKH +KARABAKH'S +KARACHI +KARACHI'S +KARADZIC +KARADZIC'S +KARAJAN +KARAMI +KARAN +KARAN'S +KARAOKE +KARAS +KARAT +KARATE +KARATZ +KARBALA +KARCHER +KARDASHIAN +KARDASHIAN'S +KAREEM +KAREL +KAREM +KAREN +KAREN'S +KARENS +KARI +KARIM +KARIMOV +KARIN +KARL +KARLA +KARLIN +KARLOFF +KARLSRUHE +KARMA +KARNATAKA +KARNES +KAROL +KAROLINSKA +KAROLY +KAROLYI +KARONIS +KAROS +KARP +KARPOV +KARR +KARRUBI +KARSTADT +KARSTEN +KARTASASMITA +KARY +KARYDAKIS +KARYN +KASDAN +KASELL +KASEM +KASHIWAHARA +KASHMIR +KASHMIR'S +KASHMIRI +KASHMIRIS +KASICH +KASICH'S +KASKEL +KASLER +KASPAR +KASPAROV +KASPAROV'S +KASPER +KASS +KASSAN +KASSAR +KASSEBAUM +KASSEL +KASSEM +KAST +KASTEN +KASTENMEIER +KAT +KATARINA +KATE +KATE'S +KATES +KATHARINA +KATHARINE +KATHERINE +KATHIE +KATHLEEN +KATHRYN +KATHY +KATIE +KATLEHONG +KATMANDU +KATO +KATO'S +KATOWICE +KATRINA +KATSANOS +KATT +KATY +KATYA +KATYN +KATYUSHA +KATYUSHAS +KATZ +KATZ'S +KATZENBACH +KATZENBERG +KATZENBERG'S +KATZMAN +KAUAI +KAUB +KAUFFMAN +KAUFFMANN +KAUFHOF +KAUFMAN +KAUFMAN'S +KAUFMANN +KAUL +KAUNAS +KAUNDA +KAVANAGH +KAVNER +KAWAI +KAWAMOTO +KAWAMURA +KAWASAKI +KAWASHIMA +KAWCZYNSKI +KAWESKE +KAY +KAY'S +KAYAK +KAYAKING +KAYAKS +KAYE +KAYHAN +KAYLA +KAYSER +KAZAKH +KAZAKHS +KAZAKHSTAN +KAZAKHSTAN'S +KAZAN +KAZARIAN +KAZARIAN'S +KAZIMIERA +KAZUHIRO +KAZUO +KE +KEA +KEACH +KEAN +KEANE +KEANU +KEARNEY +KEARNS +KEARNY +KEARSARGE +KEARSE +KEATING +KEATING'S +KEATON +KEATON'S +KEATS +KECK +KEDS +KEE +KEEBLER +KEEFE +KEEGAN +KEEL +KEELER +KEELEY +KEELING +KEEN +KEENAN +KEENAN'S +KEENE +KEENELAND +KEENER +KEENEY +KEENLY +KEEP +KEEPER +KEEPERS +KEEPING +KEEPS +KEETON +KEFAUVER +KEG +KEGS +KEHAR +KEHOE +KEIDANREN +KEIKO +KEILLOR +KEILLOR'S +KEIRETSU +KEITEL +KEITH +KEITH'S +KEIZAI +KEIZO +KEKER +KELBERG +KELLAN +KELLEHER +KELLER +KELLERMAN +KELLEY +KELLEY'S +KELLI +KELLNER +KELLOGG +KELLOGG'S +KELLY +KELLY'S +KELLYANNE +KELMAN +KELP +KELSEY +KELSO +KELTON +KELVIN +KEMAL +KEMP +KEMP'S +KEMPER +KEMPER'S +KEMPF +KEMPTHORNE +KEMPTON +KEN +KENAAN +KENAF +KENAI +KENAN +KENDALL +KENDALL'S +KENDRICK +KENICHI +KENILWORTH +KENJI +KENMORE +KENNAMETAL +KENNAN +KENNARD +KENNEBUNK +KENNEBUNKPORT +KENNECOTT +KENNEDY +KENNEDY'S +KENNEDYS +KENNEL +KENNELLY +KENNELS +KENNER +KENNESAW +KENNETH +KENNETT +KENNEY +KENNY +KENO +KENOSHA +KENSINGTON +KENT +KENT'S +KENTON +KENTUCKY +KENTUCKY'S +KENWORTHY +KENYA +KENYA'S +KENYAN +KENYANS +KENYATTA +KENYON +KEOGH +KEOUGH +KEPHART +KEPPEL +KEPT +KERA +KERALA +KERKORIAN +KERKORIAN'S +KERMIT +KERN +KERNEL +KERNELS +KERNER +KERNS +KEROSENE +KEROUAC +KERR +KERR'S +KERREY +KERREY'S +KERRIDGE +KERRIGAN +KERRIGAN'S +KERRVILLE +KERRY +KERRY'S +KERSCHNER +KERSEE +KERSEY +KERSHAW +KESEY +KESROUAN +KESSEL +KESSLER +KESSLER'S +KESTLER +KETCHIKAN +KETCHUM +KETCHUP +KETELSEN +KETEYIAN +KETTERING +KETTLE +KETTLES +KETZIOT +KEVIN +KEVIN'S +KEVLAR +KEVORKIAN +KEVORKIAN'S +KEY +KEYBOARD +KEYBOARDIST +KEYBOARDS +KEYCORP +KEYCORP'S +KEYED +KEYES +KEYING +KEYNES +KEYNESIAN +KEYNOTE +KEYPAD +KEYS +KEYSER +KEYSTONE +KEYSTROKES +KEYWORD +KFAR +KHABAROVSK +KHADER +KHAFJI +KHAKI +KHAKIS +KHALAF +KHALED +KHALEDA +KHALID +KHALIFA +KHALIL +KHALILI +KHALISTAN +KHALQ +KHAMENEI +KHAN +KHAN'S +KHARG +KHARTOUM +KHASBULATOV +KHASHOGGI +KHASHOGGI'S +KHATIB +KHE +KHEEL +KHIAM +KHIEU +KHIN +KHMER +KHOMEINI +KHOMEINI'S +KHOO +KHOST +KHOURY +KHRUSHCHEV +KHRUSHCHEV'S +KHUMALO +KHUN +KI +KIA +KIAM +KIBBUTZ +KIBBUTZIM +KIBEHO +KICK +KICKBACK +KICKBACKS +KICKED +KICKER +KICKERS +KICKING +KICKOFF +KICKOFFS +KICKS +KID +KID'S +KIDD +KIDDE +KIDDED +KIDDER +KIDDER'S +KIDDIE +KIDDIES +KIDDING +KIDMAN +KIDNAP +KIDNAPING +KIDNAPPED +KIDNAPPER +KIDNAPPERS +KIDNAPPERS' +KIDNAPPING +KIDNAPPINGS +KIDNEY +KIDNEYS +KIDS +KIDS' +KIDWA +KIEFER +KIEL +KIELY +KIERNAN +KIET +KIEV +KIEV'S +KIEWIT +KIGALI +KIICHI +KIKA +KIKI +KIKO +KIKUMURA +KIKWIT +KILAUEA +KILBY +KILDEE +KILDUFF +KILEY +KILGORE +KILIMANJARO +KILL +KILLEA +KILLED +KILLEEN +KILLEN +KILLER +KILLER'S +KILLERS +KILLIAN +KILLING +KILLINGS +KILLINGTON +KILLORIN +KILLS +KILMER +KILN +KILNS +KILO +KILOBYTES +KILOGRAM +KILOGRAMS +KILOMETER +KILOMETERS +KILOS +KILOTON +KILOTONS +KILOWATT +KILOWATTS +KILPATRICK +KILROY +KILT +KILTER +KILTS +KIM +KIM'S +KIMBA +KIMBALL +KIMBALL'S +KIMBELL +KIMBERLEY +KIMBERLIN +KIMBERLY +KIMBERLY'S +KIMBLE +KIMBROUGH +KIMMEL +KIMMELMAN +KIMMITT +KIMONO +KIMS +KIMURA +KIN +KINARD +KINARK +KINCAID +KIND +KINDA +KINDER +KINDERGARTEN +KINDERGARTENS +KINDERGARTNERS +KINDEST +KINDLE +KINDLED +KINDLER +KINDLING +KINDLY +KINDNESS +KINDRED +KINDS +KINETIC +KING +KING'S +KINGDOM +KINGDOM'S +KINGDOME +KINGDOMS +KINGFISHER +KINGMAKER +KINGMAN +KINGPIN +KINGPINS +KINGS +KINGS' +KINGSBRIDGE +KINGSBURY +KINGSLEY +KINGSPORT +KINGSTON +KINGSVILLE +KINISON +KINKEL +KINKO'S +KINKS +KINKY +KINNEAR +KINNEY +KINNOCK +KINSELLA +KINSEY +KINSHASA +KINSHIP +KINSLEY +KINTANAR +KINZER +KIOSK +KIOSKS +KIOWA +KIP +KIPLING +KIPPUR +KIRALY +KIRBY +KIRCH +KIRCHNER +KIRGHIZ +KIRGHIZIA +KIRI +KIRIN +KIRK +KIRK'S +KIRKLAND +KIRKLAND'S +KIRKPATRICK +KIRKUK +KIRKWOOD +KIRNAN +KIRO +KIROV +KIRSCH +KIRSCHNER +KIRSHENBAUM +KIRSTEN +KIRSTIE +KIRTLAND +KIRTLEY +KIRYAT +KISCO +KISER +KISHINEV +KISMAYU +KISS +KISSED +KISSEL +KISSES +KISSIMMEE +KISSING +KISSINGER +KISSINGER'S +KISSLING +KISSNER +KIST +KISZCZAK +KIT +KITAYAMA +KITCHEN +KITCHENS +KITCHENWARE +KITE +KITES +KITING +KITS +KITSCH +KITSCHY +KITT +KITTANI +KITTEN +KITTENS +KITTS +KITTY +KIVU +KIWANIS +KIWI +KIWIS +KIYOSHI +KIZER +KJELL +KLAAS +KLADSTRUP +KLADUSA +KLAMATH +KLAN +KLAN'S +KLANSMAN +KLANSMEN +KLARSFELD +KLASS +KLAUER +KLAUS +KLAUSNER +KLEBER +KLECKNER +KLECZKA +KLEE +KLEEN +KLEENEX +KLEIMAN +KLEIN +KLEIN'S +KLEINBERG +KLEINE +KLEINER +KLEINMAN +KLEINWORT +KLEJNA +KLENSCH +KLERK +KLERK'S +KLIBI +KLIEMAN +KLIMA +KLINE +KLING +KLINGER +KLINGHOFFER +KLINGLER +KLINGON +KLINK +KLOECKNER +KLONDIKE +KLOSTER +KLOTZ +KLUG +KLUGE +KLUGMAN +KLUWER +KLUX +KMART +KMART'S +KNACK +KNAPP +KNAPSACK +KNAUSS +KNEE +KNEEBONE +KNEECAP +KNEED +KNEEL +KNEELING +KNEES +KNELL +KNELT +KNESSET +KNEW +KNICK +KNICKERBOCKER +KNICKERS +KNICKKNACKS +KNICKS +KNICKS' +KNIEVEL +KNIFE +KNIFED +KNIFEPOINT +KNIFING +KNIGHT +KNIGHT'S +KNIGHTED +KNIGHTHOOD +KNIGHTS +KNIN +KNIT +KNITS +KNITTED +KNITTING +KNITWEAR +KNIVES +KNOB +KNOBLAUCH +KNOBS +KNOCK +KNOCKDOWN +KNOCKED +KNOCKING +KNOCKOFF +KNOCKOFFS +KNOCKOUT +KNOCKOUTS +KNOCKS +KNOLL +KNOPF +KNORR +KNOT +KNOTS +KNOTT +KNOTT'S +KNOTTED +KNOTTY +KNOW +KNOWING +KNOWINGLY +KNOWLEDGE +KNOWLEDGEABLE +KNOWLEDGEWARE +KNOWLES +KNOWLTON +KNOWN +KNOWS +KNOX +KNOXVILLE +KNOY +KNUCKLE +KNUCKLED +KNUCKLES +KNUDSEN +KNUDSEN'S +KNUDSON +KNUTE +KNUTSON +KO +KOALA +KOALAS +KOBAYASHI +KOBE +KOBE'S +KOBIE +KOBREN +KOCH +KOCH'S +KOCHAN +KOCHER +KOCHIS +KOCIEMBA +KOCK +KODAK +KODAK'S +KODIAK +KOEHLER +KOENIG +KOERNKE +KOEVOET +KOFI +KOGAN +KOGER +KOGYO +KOH +KOHL +KOHL'S +KOHLBERG +KOHLBERG'S +KOHLER +KOHN +KOHUT +KOICHI +KOITO +KOITO'S +KOIVISTO +KOJAK +KOJI +KOJIMA +KOK +KOKAN +KOKO +KOKOMO +KOKUSAI +KOLA +KOLB +KOLBE +KOLL +KOLLEK +KOLLER +KOLLIN +KOLLMORGEN +KOLSTAD +KOLTER +KOMAG +KOMANSKY +KOMATSU +KOMBAT +KOMEITO +KOMI +KOMPONG +KOMSOMOL +KOMSOMOLETS +KOMSOMOLSKAYA +KON +KONA +KONDO +KONG +KONG'S +KONGSBERG +KONICA +KONINKLIJKE +KONO +KONRAD +KONSTANTIN +KOO +KOOK +KOOKS +KOOKY +KOOL +KOON +KOONING +KOONTZ +KOOP +KOOP'S +KOOPS +KOOR +KOPECHNE +KOPETSKI +KOPP +KOPPEL +KOPPEL'S +KOPPELL +KOPPER +KOPPERS +KOPPERS' +KOPPES +KOPS +KORAN +KORANIC +KORB +KORDA +KOREA +KOREA'S +KOREAN +KOREANS +KOREAS +KOREATOWN +KORESH +KORESH'S +KORMAN +KORN +KOROLOGOS +KOROTICH +KORRY +KORTEN +KORUNA +KORUS +KORZHAKOV +KOS +KOSAR +KOSHER +KOSKOTAS +KOSOVO +KOSOVO'S +KOSS +KOSTER +KOSTIKOV +KOSTMAYER +KOSTOPOULOS +KOTA +KOTITE +KOTKIN +KOTLER +KOTSONIS +KOUCHNER +KOUFAX +KOVACH +KOVACS +KOVALEV +KOVALYOV +KOVIC +KOVNER +KOWALSKI +KOWLOON +KOWTOWING +KOYAMA +KOZAK +KOZINSKI +KOZLOV +KOZLOWSKI +KOZO +KOZOL +KOZYREV +KOZYREV'S +KRAEMER +KRAFT +KRAFT'S +KRAHN +KRAJICEK +KRAJINA +KRAKOW +KRAKOWSKI +KRAM +KRAMER +KRAMER'S +KRANE +KRANTZ +KRANZ +KRASNODAR +KRASNOYARSK +KRAUS +KRAUSE +KRAUSHAAR +KRAUSS +KRAVCHUK +KRAVIS +KRAVIS'S +KRAVITZ +KREBS +KREDIETBANK +KREINDLER +KREMER +KREMLIN +KREMLIN'S +KRENZ +KRENZ'S +KRESA +KRESGE +KRESS +KRICKSTEIN +KRIEG +KRIEGEL +KRIEGER +KRIENDLER +KRIER +KRIKALEV +KRILL +KRIM +KRIS +KRISHNA +KRISHNAS +KRISPIES +KRISTALLNACHT +KRISTEN +KRISTI +KRISTIANSEN +KRISTIN +KRISTINA +KRISTINE +KRISTOFFERSON +KRISTOL +KRISTOL'S +KRISTY +KRITZIK +KRIZIA +KROC +KROGER +KROGER'S +KROH +KROL +KROLL +KROME +KRON +KRONA +KRONE +KRONER +KRONOR +KRONOS +KROPP +KRUEGER +KRUEGER'S +KRUG +KRUGER +KRUGMAN +KRUK +KRUPA +KRUPP +KRUSE +KRUTICK +KRYUCHKOV +KRZYSZTOF +KRZYZEWSKI +KU +KUALA +KUAN +KUBOTA +KUBRICK +KUBY +KUCAN +KUCHMA +KUCHMA'S +KUDLOW +KUDOS +KUDZU +KUEHLER +KUEHN +KUENHEIM +KUHLMAN +KUHN +KUHNS +KUIPER +KUKOC +KULIKOV +KULKA +KULL +KUMAGAI +KUMAR +KUMARATUNGA +KUMBLE +KUME +KUN +KUNA +KUNDUZ +KUNG +KUNIN +KUNKEL +KUNKLE +KUNSTLER +KUNTZ +KUNZ +KUO +KUOK +KUOMINTANG +KUPFER +KUPRES +KURALT +KURD +KURDISH +KURDISTAN +KURDS +KURIL +KURILE +KURINSKY +KURLAK +KURLAND +KURNIT +KURODA +KURON +KUROSAWA +KURT +KURTH +KURTZ +KURTZMAN +KURZ +KURZBAN +KURZWEIL +KUSH +KUSHNER +KUSSEROW +KUTTAB +KUWAIT +KUWAIT'S +KUWAITI +KUWAITIS +KUYKENDALL +KUZBASS +KUZNETSK +KUZNETSOV +KWAI +KWAN +KWANG +KWANGJU +KWANZAA +KWASNIEWSKI +KWAZULU +KWEISI +KWON +KWONG +KY +KYAW +KYD +KYI +KYI'S +KYL +KYLE +KYOCERA +KYODO +KYONG +KYOTO +KYOWA +KYRGYZSTAN +KYSER +KYU +KYUNG +KYUSHU +L'AMOUR +L'EGGS +L'EXPRESS +L'OREAL +L. +L.'S +L.S +LA +LAB +LAB'S +LABANT +LABATT +LABATT'S +LABEL +LABEL'S +LABELED +LABELING +LABELLA +LABELLE +LABELLED +LABELLING +LABELS +LABIANCA +LABOA +LABONTE +LABOR +LABOR'S +LABORATORIES +LABORATORY +LABORATORY'S +LABORED +LABORER +LABORERS +LABORING +LABORIOUS +LABORIOUSLY +LABORS +LABOUISSE +LABOUR +LABRADOR +LABRECQUE +LABS +LABS' +LABYRINTH +LABYRINTHINE +LAC +LAC'S +LACALLE +LACAYO +LACE +LACED +LACERATION +LACERATIONS +LACES +LACEY +LACHANCE +LACHER +LACK +LACKADAISICAL +LACKED +LACKEY +LACKEYS +LACKING +LACKLUSTER +LACKNER +LACKS +LACONIC +LACOSTE +LACQUER +LACQUERED +LACROIX +LACROSSE +LACTATION +LACTOSE +LACY +LAD +LADA +LADBROKE +LADD +LADDER +LADDERS +LADEN +LADENBURG +LADER +LADIES +LADIES' +LADISLAV +LADLE +LADNER +LADS +LADY +LADY'S +LADYSMITH +LAETTNER +LAFALCE +LAFARGE +LAFAYETTE +LAFEYETTE +LAFFER +LAFFERTY +LAFITE +LAFLEUR +LAFONTAINE +LAFONTANT +LAG +LAGARDERE +LAGE +LAGER +LAGERFELD +LAGGARD +LAGGARDS +LAGGED +LAGGING +LAGNADO +LAGO +LAGOMARSINO +LAGOON +LAGOONS +LAGOS +LAGRANGE +LAGS +LAGUARDIA +LAGUNA +LAHD +LAHORE +LAHOUD +LAHR +LAHTI +LAI +LAID +LAIDIG +LAIDLAW +LAIDLAW'S +LAIN +LAINE +LAING +LAINO +LAIR +LAIRD +LAISSEZ +LAITY +LAJOIE +LAKAS +LAKE +LAKE'S +LAKEFRONT +LAKELAND +LAKER +LAKERS +LAKERS' +LAKES +LAKESHORE +LAKESIDE +LAKEVIEW +LAKEWOOD +LAKHDAR +LAKOTA +LAKSHAMANAN +LAKSHMANAN +LAL +LALAS +LALLY +LALONDE +LALUMIERE +LAM +LAMA +LAMA'S +LAMAR +LAMAS +LAMAUR +LAMB +LAMB'S +LAMBADA +LAMBASTED +LAMBASTING +LAMBDA +LAMBERT +LAMBERT'S +LAMBERTH +LAMBERTO +LAMBERTSON +LAMBETH +LAMBORGHINI +LAMBROS +LAMBS +LAMBSDORFF +LAME +LAMENT +LAMENTABLE +LAMENTED +LAMENTING +LAMENTS +LAMINATED +LAMINATES +LAMLE +LAMM +LAMOND +LAMONT +LAMORIELLO +LAMOS +LAMOTHE +LAMOTTE +LAMOUR +LAMP +LAMPERT +LAMPOON +LAMPOON'S +LAMPOONED +LAMPPOSTS +LAMPS +LAMSON +LAMY +LAN +LANA +LANAI +LANCASTER +LANCASTER'S +LANCE +LANCELOT +LANCER +LANCERS +LANCES +LANCET +LANCING +LANCOME +LAND +LAND'S +LANDAU +LANDED +LANDER +LANDERS +LANDES +LANDESBANK +LANDFALL +LANDFILL +LANDFILLS +LANDING +LANDINGS +LANDIS +LANDLADY +LANDLESS +LANDLOCKED +LANDLORD +LANDLORD'S +LANDLORDS +LANDMARK +LANDMARK'S +LANDMARKS +LANDMINE +LANDMINES +LANDO +LANDON +LANDOR +LANDOVER +LANDOWNER +LANDOWNERS +LANDRY +LANDRY'S +LANDS +LANDS' +LANDSAT +LANDSBERGIS +LANDSCAPE +LANDSCAPED +LANDSCAPER +LANDSCAPERS +LANDSCAPES +LANDSCAPING +LANDSLIDE +LANDSLIDES +LANDY +LANE +LANE'S +LANES +LANESE +LANEY +LANG +LANG'S +LANGAN +LANGBO +LANGDON +LANGE +LANGE'S +LANGER +LANGFORD +LANGHAM +LANGHORNE +LANGLEY +LANGSTON +LANGTON +LANGUAGE +LANGUAGES +LANGUID +LANGUISH +LANGUISHED +LANGUISHES +LANGUISHING +LANHAM +LANI +LANIER +LANKA +LANKA'S +LANKAN +LANKANS +LANKFORD +LANKTREE +LANKY +LANNIE +LANNY +LANSBURY +LANSFORD +LANSING +LANSKY +LANSTON +LANTANA +LANTERN +LANTERNS +LANTOS +LANTZ +LANVIN +LANZA +LAO +LAOS +LAOTIAN +LAOTIANS +LAP +LAPAROSCOPIC +LAPEL +LAPELS +LAPIDES +LAPIERRE +LAPIN +LAPINE +LAPOINTE +LAPORTE +LAPPED +LAPPING +LAPS +LAPSE +LAPSED +LAPSES +LAPSING +LAPTOP +LAPTOPS +LARA +LARAK +LARAMIE +LARCENY +LARCHMONT +LARD +LARDNER +LAREDO +LARGE +LARGELY +LARGENT +LARGER +LARGESS +LARGESSE +LARGEST +LARGO +LARIJANI +LARIOS +LARK +LARKIN +LARKSPUR +LARNACA +LAROCHE +LAROSA +LAROSIERE +LAROUCHE +LAROUCHE'S +LARROQUETTE +LARRY +LARRY'S +LARS +LARSEN +LARSEN'S +LARSON +LARSON'S +LARSSON +LARUE +LARVAE +LARYNGITIS +LARYNX +LAS +LASAGNA +LASALLE +LASATER +LASCH +LASCIVIOUS +LASER +LASERPHOTO +LASERS +LASH +LASHED +LASHES +LASHING +LASKER +LASKO +LASKY +LASMO +LASORDA +LASSEN +LASSIE +LASSITER +LASSO +LAST +LASTED +LASTEST +LASTING +LASTLY +LASTS +LASZLO +LATCH +LATCHED +LATCHES +LATCHING +LATCHKEY +LATE +LATECOMERS +LATELY +LATENESS +LATENT +LATER +LATERAL +LATEST +LATEX +LATHAM +LATHE +LATHER +LATHES +LATHROP +LATIF +LATIMER +LATIN +LATINA +LATINO +LATINOS +LATINS +LATITUDE +LATITUDES +LATOUR +LATOYA +LATRINES +LATROBE +LATTA +LATTE +LATTER +LATTER'S +LATTICE +LATTIMORE +LATVIA +LATVIA'S +LATVIAN +LATVIANS +LAU +LAUBER +LAUCH +LAUCK +LAUD +LAUDA +LAUDABLE +LAUDATORY +LAUDE +LAUDED +LAUDER +LAUDER'S +LAUDERDALE +LAUDING +LAUER +LAUGH +LAUGHABLE +LAUGHED +LAUGHING +LAUGHINGLY +LAUGHINGSTOCK +LAUGHLIN +LAUGHS +LAUGHTER +LAUMANN +LAUNCH +LAUNCHED +LAUNCHER +LAUNCHERS +LAUNCHES +LAUNCHING +LAUNCHINGS +LAUNDER +LAUNDERED +LAUNDERER +LAUNDERERS +LAUNDERING +LAUNDRIES +LAUNDROMAT +LAUNDRY +LAUPER +LAURA +LAURA'S +LAURANCE +LAUREATE +LAUREATES +LAUREL +LAUREL'S +LAURELS +LAUREN +LAUREN'S +LAURENCE +LAURENT +LAURENT'S +LAURENTIAN +LAURENTIIS +LAURIA +LAURIE +LAURIN +LAURO +LAUSANNE +LAUTENBACH +LAUTENBERG +LAUTREC +LAUX +LAVA +LAVAL +LAVALAS +LAVAN +LAVATORY +LAVELLE +LAVENDER +LAVENTHOL +LAVER +LAVERNE +LAVERY +LAVI +LAVIN +LAVISH +LAVISHED +LAVISHING +LAVISHLY +LAVORO +LAW +LAW'S +LAWARE +LAWBREAKERS +LAWBREAKING +LAWFORD +LAWFUL +LAWFULLY +LAWLER +LAWLESS +LAWLESSNESS +LAWLOR +LAWMAKER +LAWMAKER'S +LAWMAKERS +LAWMAKERS' +LAWMAKING +LAWMAN +LAWMEN +LAWN +LAWNMOWER +LAWNMOWERS +LAWNS +LAWRENCE +LAWRENCE'S +LAWRENCEVILLE +LAWRIE +LAWS +LAWSON +LAWSON'S +LAWSUIT +LAWSUITS +LAWTON +LAWYER +LAWYER'S +LAWYERING +LAWYERLY +LAWYERS +LAWYERS' +LAX +LAXALT +LAXATIVE +LAXATIVES +LAXITY +LAY +LAY'S +LAYER +LAYERED +LAYERING +LAYERS +LAYING +LAYMAN +LAYMAN'S +LAYMEN +LAYNE +LAYOFF +LAYOFFS +LAYOUT +LAYOUTS +LAYOVER +LAYS +LAYTON +LAYUP +LAYUPS +LAZAR +LAZARD +LAZARO +LAZARUS +LAZER +LAZILY +LAZINESS +LAZIO +LAZY +LE +LEA +LEACH +LEACH'S +LEACHING +LEAD +LEADED +LEADEN +LEADER +LEADER'S +LEADERLESS +LEADERS +LEADERS' +LEADERSHIP +LEADERSHIP'S +LEADERSHIPS +LEADING +LEADOFF +LEADS +LEAF +LEAFING +LEAFLET +LEAFLETS +LEAFS +LEAFY +LEAGUE +LEAGUE'S +LEAGUER +LEAGUERS +LEAGUES +LEAH +LEAHEY +LEAHY +LEAHY'S +LEAK +LEAKAGE +LEAKED +LEAKERS +LEAKEY +LEAKING +LEAKS +LEAKY +LEAL +LEAN +LEANDRO +LEANED +LEANER +LEANEST +LEANING +LEANINGS +LEANNE +LEANS +LEAP +LEAPED +LEAPFROG +LEAPFROGGED +LEAPING +LEAPS +LEAPT +LEAR +LEAR'S +LEARJET +LEARN +LEARNED +LEARNER +LEARNERS +LEARNFARE +LEARNING +LEARNS +LEARY +LEARY'S +LEASE +LEASEBACK +LEASED +LEASEHOLD +LEASES +LEASEWAY +LEASH +LEASING +LEAST +LEATH +LEATHER +LEATHERY +LEAVE +LEAVENED +LEAVENWORTH +LEAVES +LEAVING +LEAVITT +LEBANESE +LEBANON +LEBANON'S +LEBARON +LEBED +LEBENTHAL +LEBER +LEBLANC +LEBLOND +LEBOEUF +LEBOW +LEBOW'S +LECH +LECHASNEY +LECKIE +LECLAIR +LECLERC +LECTER +LECTERN +LECTURE +LECTURED +LECTURER +LECTURERS +LECTURES +LECTURING +LED +LEDBETTER +LEDEEN +LEDERER +LEDERLE +LEDERMAN +LEDESMA +LEDGE +LEDGER +LEDGERS +LEDGES +LEDYARD +LEE +LEE'S +LEEB +LEECH +LEECHES +LEEDS +LEEK +LEEKS +LEEPER +LEERING +LEERY +LEES +LEESBURG +LEESON +LEESON'S +LEETCH +LEEUWEN +LEEWARD +LEEWAY +LEFCOURT +LEFEBVRE +LEFEBVRE'S +LEFEVRE +LEFF +LEFKOWITZ +LEFRAK +LEFT +LEFT'S +LEFTIES +LEFTIST +LEFTISTS +LEFTOVER +LEFTOVERS +LEFTWARD +LEFTY +LEG +LEGACIES +LEGACY +LEGAL +LEGALESE +LEGALISTIC +LEGALITIES +LEGALITY +LEGALIZATION +LEGALIZE +LEGALIZED +LEGALIZING +LEGALLY +LEGEND +LEGEND'S +LEGENDARY +LEGENDS +LEGENT +LEGER +LEGG +LEGGE +LEGGED +LEGGETT +LEGGINGS +LEGGY +LEGIBLE +LEGION +LEGIONNAIRES +LEGIONNAIRES' +LEGIONS +LEGISLATE +LEGISLATED +LEGISLATING +LEGISLATION +LEGISLATION'S +LEGISLATIVE +LEGISLATIVELY +LEGISLATOR +LEGISLATOR'S +LEGISLATORS +LEGISLATORS' +LEGISLATURE +LEGISLATURE'S +LEGISLATURES +LEGIT +LEGITIMACY +LEGITIMATE +LEGITIMATELY +LEGITIMIZE +LEGITIMIZED +LEGITIMIZING +LEGO +LEGRAND +LEGROOM +LEGS +LEGUMES +LEGWORK +LEHDER +LEHDER'S +LEHIGH +LEHMAN +LEHMAN'S +LEHMANN +LEHNER +LEHRER +LEHRMAN +LEHTINEN +LEI +LEIBER +LEIBLER +LEIBOVITZ +LEIBOWITZ +LEICESTER +LEIDEN +LEIF +LEIGH +LEIGH'S +LEIGHTON +LEILA +LEINER +LEIPZIG +LEIS +LEISURE +LEISURELY +LEITER +LEJEUNE +LEKHANYA +LELAND +LELAND'S +LEMAIRE +LEMANS +LEMASTERS +LEMAY +LEMIEUX +LEMING +LEMKE +LEMMINGS +LEMMON +LEMON +LEMONADE +LEMOND +LEMONS +LEMOS +LEMPERT +LEN +LENA +LEND +LENDER +LENDER'S +LENDERS +LENDERS' +LENDING +LENDL +LENDS +LENEXA +LENGTH +LENGTHEN +LENGTHENED +LENGTHENING +LENGTHS +LENGTHWISE +LENGTHY +LENIENCY +LENIENT +LENIENTLY +LENIHAN +LENIN +LENIN'S +LENINAKAN +LENINGRAD +LENINGRAD'S +LENINISM +LENINIST +LENNAR +LENNARD +LENNART +LENNON +LENNON'S +LENNOX +LENNY +LENO +LENO'S +LENOIR +LENORA +LENORE +LENOX +LENS +LENSCRAFTERS +LENSES +LENT +LENTEN +LENTILS +LENTZ +LENZ +LEO +LEO'S +LEON +LEON'S +LEONA +LEONARD +LEONARD'S +LEONARDO +LEONE +LEONE'S +LEONEL +LEONG +LEONID +LEONOV +LEOPARD +LEOPARDS +LEOPOLD +LEOPOLDO +LEOTARD +LEOTARDS +LEOW +LEPER +LEPERS +LEPINE +LEPORE +LEPPARD +LEPROSY +LEPTIN +LERACH +LEREAH +LERMAN +LERNER +LERNER'S +LEROY +LES +LESABRE +LESBIAN +LESBIANISM +LESBIANS +LESCHLY +LESHER +LESION +LESIONS +LESLEY +LESLIE +LESLIE'S +LESOTHO +LESPINASSE +LESS +LESSEN +LESSENED +LESSENING +LESSENS +LESSER +LESSON +LESSONS +LESSOR +LESSORS +LEST +LESTAT +LESTER +LESZEK +LET +LET'S +LETDOWN +LETELIER +LETHAL +LETHARGIC +LETHARGY +LETICIA +LETS +LETT +LETTER +LETTER'S +LETTERED +LETTERHEAD +LETTERING +LETTERMAN +LETTERMAN'S +LETTERS +LETTICE +LETTING +LETTUCE +LETUP +LEU +LEUCADIA +LEUCHTER +LEUFFER +LEUKEMIA +LEUMI +LEUNG +LEUTHOLD +LEUZZI +LEV +LEVAL +LEVAN +LEVASSEUR +LEVEE +LEVEES +LEVEL +LEVELED +LEVELING +LEVELLED +LEVELS +LEVEN +LEVENSON +LEVENTHAL +LEVER +LEVERAGE +LEVERAGED +LEVERAGING +LEVERS +LEVESQUE +LEVEY +LEVI +LEVI'S +LEVIATHAN +LEVIED +LEVIES +LEVIN +LEVIN'S +LEVINE +LEVINE'S +LEVINGER +LEVINSON +LEVINSON'S +LEVIS +LEVITATED +LEVITATION +LEVITT +LEVITT'S +LEVITTOWN +LEVITY +LEVITZ +LEVON +LEVY +LEVY'S +LEVYING +LEW +LEWD +LEWIN +LEWIS +LEWIS' +LEWIS'S +LEWISBURG +LEWISTON +LEWISVILLE +LEX +LEXICON +LEXINGTON +LEXIS +LEXMARK +LEXUS +LEY +LEYDEN +LEYLAND +LEYRITZ +LEYSEN +LEYTE +LEYVA +LHASA +LI +LI'S +LIA +LIABILITIES +LIABILITY +LIABLE +LIAISON +LIAISONS +LIAM +LIANE +LIANG +LIANI +LIAONING +LIAR +LIARS +LIASSON +LIB +LIBBEY +LIBBY +LIBEL +LIBELED +LIBELOUS +LIBERA +LIBERACE +LIBERACE'S +LIBERAL +LIBERALISM +LIBERALIZATION +LIBERALIZATIONS +LIBERALIZE +LIBERALIZED +LIBERALIZING +LIBERALLY +LIBERALS +LIBERALS' +LIBERATE +LIBERATED +LIBERATING +LIBERATION +LIBERATOR +LIBERATORS +LIBERIA +LIBERIA'S +LIBERIAN +LIBERIANS +LIBERMAN +LIBERTARIAN +LIBERTARIANS +LIBERTE +LIBERTIES +LIBERTY +LIBERTY'S +LIBIDO +LIBOR +LIBRA +LIBRARIAN +LIBRARIANS +LIBRARIES +LIBRARY +LIBRARY'S +LIBRE +LIBRETTIST +LIBRETTO +LIBREVILLE +LIBYA +LIBYA'S +LIBYAN +LIBYANS +LICARI +LICE +LICENCE +LICENCES +LICENSE +LICENSED +LICENSEE +LICENSEES +LICENSES +LICENSING +LICHT +LICHTBLAU +LICHTENSTEIN +LICHTER +LICHTMAN +LICK +LICKED +LICKING +LICKS +LICORICE +LID +LIDDLE +LIDDY +LIDO +LIDS +LIE +LIEBER +LIEBERMAN +LIEBERTHAL +LIEBMAN +LIEBOWITZ +LIECHTENSTEIN +LIED +LIEDERMAN +LIEDTKE +LIEL +LIEM +LIEN +LIENS +LIES +LIEU +LIEUTENANT +LIEUTENANTS +LIFE +LIFE'S +LIFEBLOOD +LIFEBOAT +LIFEBOATS +LIFEGUARD +LIFEGUARDS +LIFELESS +LIFELIKE +LIFELINE +LIFELINES +LIFELONG +LIFER +LIFERS +LIFES +LIFESAVER +LIFESAVERS +LIFESAVING +LIFESPAN +LIFESTYLE +LIFESTYLES +LIFETIME +LIFETIME'S +LIFETIMES +LIFFE +LIFLAND +LIFSON +LIFT +LIFTED +LIFTER +LIFTING +LIFTOFF +LIFTON +LIFTS +LIGACHEV +LIGAMENT +LIGAMENTS +LIGGETT +LIGGETT'S +LIGHT +LIGHT'S +LIGHTED +LIGHTEN +LIGHTENED +LIGHTENING +LIGHTER +LIGHTERS +LIGHTEST +LIGHTFOOT +LIGHTHEARTED +LIGHTHOUSE +LIGHTING +LIGHTLY +LIGHTNER +LIGHTNESS +LIGHTNING +LIGHTS +LIGHTWEIGHT +LIGNITE +LIKABLE +LIKE +LIKEABLE +LIKED +LIKELIER +LIKELIEST +LIKELIHOOD +LIKELY +LIKEN +LIKENED +LIKENESS +LIKENESSES +LIKENING +LIKENS +LIKES +LIKEWISE +LIKING +LIKUD +LIKUD'S +LIL +LILA +LILAC +LILCO +LILCO'S +LILI +LILIES +LILLE +LILLEHAMMER +LILLEY +LILLIAN +LILLIE +LILLY +LILLY'S +LILOV +LILT +LILTING +LILY +LIM +LIMA +LIMA'S +LIMAN +LIMB +LIMBAUGH +LIMBAUGH'S +LIMBO +LIMBS +LIME +LIMELIGHT +LIMERICK +LIMESTONE +LIMIT +LIMITATION +LIMITATIONS +LIMITED +LIMITED'S +LIMITING +LIMITLESS +LIMITS +LIMO +LIMON +LIMOS +LIMOUSINE +LIMOUSINES +LIMP +LIMPED +LIMPET +LIMPING +LIN +LINA +LINAGE +LINARES +LINCHPIN +LINCOLN +LINCOLN'S +LINCOLNS +LINCOLNSHIRE +LIND +LINDA +LINDA'S +LINDBERG +LINDBERGH +LINDE +LINDEMANN +LINDEN +LINDER +LINDGREN +LINDH +LINDLEY +LINDNER +LINDNER'S +LINDQUIST +LINDROS +LINDSAY +LINDSEY +LINDSEY'S +LINDSTROM +LINDY +LINE +LINE'S +LINEAGE +LINEAR +LINEBACKER +LINEBACKERS +LINED +LINEMAN +LINEMEN +LINEN +LINENS +LINER +LINERBOARD +LINERS +LINES +LINES' +LINEUP +LINEUPS +LING +LINGER +LINGERED +LINGERIE +LINGERING +LINGERS +LINGLE +LINGO +LINGUA +LINGUINE +LINGUIST +LINGUISTIC +LINGUISTICS +LINGUISTS +LINGUS +LINH +LINI +LINING +LININGS +LINK +LINKAGE +LINKAGES +LINKED +LINKING +LINKLATER +LINKS +LINKUP +LINKUPS +LINN +LINNEN +LINO +LINOLEUM +LINT +LINTAS +LINTON +LINUS +LION +LION'S +LIONEL +LIONIZED +LIONS +LIONS' +LIOTTA +LIP +LIPINSKI +LIPMAN +LIPOPROTEIN +LIPOSOME +LIPOSOMES +LIPOSUCTION +LIPPED +LIPPER +LIPPER'S +LIPPINCOTT +LIPPMAN +LIPPO +LIPS +LIPSCOMB +LIPSKY +LIPSON +LIPSTICK +LIPTON +LIQUEFIED +LIQUEUR +LIQUID +LIQUIDATE +LIQUIDATED +LIQUIDATING +LIQUIDATION +LIQUIDATIONS +LIQUIDATOR +LIQUIDATORS +LIQUIDITY +LIQUIDS +LIQUOR +LIQUORS +LIRA +LIRE +LIRO +LIROFF +LIS +LISA +LISA'S +LISBETH +LISBON +LISE +LISLE +LISS +LIST +LIST'S +LISTED +LISTEN +LISTENED +LISTENER +LISTENERS +LISTENING +LISTENS +LISTER +LISTERINE +LISTING +LISTINGS +LISTLESS +LISTS +LISTYEV +LISZT +LIT +LITAN +LITANY +LITCHFIELD +LITE +LITER +LITERACY +LITERAL +LITERALLY +LITERARY +LITERATE +LITERATURE +LITERATURNAYA +LITERS +LITHE +LITHGOW +LITHIUM +LITHOGRAPH +LITHOGRAPHS +LITHOGRAPHY +LITHUANIA +LITHUANIA'S +LITHUANIAN +LITHUANIANS +LITIGANT +LITIGANTS +LITIGATE +LITIGATED +LITIGATING +LITIGATION +LITIGATOR +LITIGATORS +LITIGIOUS +LITKE +LITMAN +LITMUS +LITS +LITTER +LITTERED +LITTERING +LITTERS +LITTLE +LITTLE'S +LITTLEFIELD +LITTLEJOHN +LITTLEST +LITTLETON +LITTMANN +LITTON +LITTON'S +LITURGICAL +LITURGY +LITVACK +LIU +LIV +LIVABLE +LIVE +LIVE'S +LIVED +LIVELIER +LIVELIEST +LIVELIHOOD +LIVELIHOODS +LIVELY +LIVEN +LIVENGOOD +LIVER +LIVERMORE +LIVERPOOL +LIVERS +LIVERY +LIVES +LIVESTOCK +LIVID +LIVIN' +LIVING +LIVINGS +LIVINGSTON +LIVINGSTONE +LIVONIA +LIZ +LIZA +LIZARD +LIZARDS +LIZHI +LIZZIE +LJUBLJANA +LLAMA +LLAMAS +LLEWELLYN +LLOSA +LLOSA'S +LLOYD +LLOYD'S +LLOYDS +LO +LOAD +LOADED +LOADER +LOADERS +LOADING +LOADS +LOAF +LOAFERS +LOAN +LOAN'S +LOANED +LOANING +LOANS +LOATH +LOATHE +LOATHED +LOATHING +LOATHSOME +LOAVES +LOB +LOBBED +LOBBIED +LOBBIES +LOBBING +LOBBY +LOBBY'S +LOBBYING +LOBBYIST +LOBBYISTS +LOBBYISTS' +LOBE +LOBEL +LOBES +LOBLAW +LOBO +LOBOS +LOBOTOMY +LOBOV +LOBSTER +LOBSTERMEN +LOBSTERS +LOC +LOCAL +LOCAL'S +LOCALE +LOCALES +LOCALITIES +LOCALITY +LOCALIZED +LOCALLY +LOCALS +LOCASTO +LOCATE +LOCATED +LOCATES +LOCATING +LOCATION +LOCATIONS +LOCATOR +LOCH +LOCHNER +LOCK +LOCKDOWN +LOCKE +LOCKED +LOCKER +LOCKERBIE +LOCKERS +LOCKETT +LOCKHART +LOCKHEED +LOCKHEED'S +LOCKING +LOCKLEAR +LOCKOUT +LOCKOUTS +LOCKPORT +LOCKS +LOCKSTEP +LOCKUP +LOCKWOOD +LOCKYER +LOCO +LOCOMOTIVE +LOCOMOTIVES +LOCUS +LOCUST +LOCUSTS +LODE +LODESTAR +LODGE +LODGED +LODGEPOLE +LODGES +LODGING +LODGINGS +LODI +LODWRICK +LODZ +LOEB +LOEFFLER +LOESCHER +LOESSER +LOEWE +LOEWEN +LOEWS +LOEWY +LOFGREN +LOFT +LOFTED +LOFTIER +LOFTON +LOFTS +LOFTUS +LOFTY +LOG +LOGAN +LOGAN'S +LOGGED +LOGGER +LOGGERHEADS +LOGGERS +LOGGIA +LOGGING +LOGIC +LOGICAL +LOGICALLY +LOGISTIC +LOGISTICAL +LOGISTICALLY +LOGISTICS +LOGJAM +LOGO +LOGOS +LOGS +LOGSDON +LOGUE +LOH +LOHR +LOIN +LOIRE +LOIS +LOISEL +LOITERING +LOK +LOLA +LOLITA +LOLLAPALOOZA +LOLLIPOP +LOLLIPOPS +LOMA +LOMAS +LOMAX +LOMB +LOMBARD +LOMBARDI +LOMBARDO +LOMOND +LOMPOC +LON +LONDON +LONDON'S +LONDONDERRY +LONDONER +LONDONERS +LONDONO +LONE +LONELINESS +LONELY +LONER +LONERS +LONESOME +LONETREE +LONG +LONG'S +LONGED +LONGER +LONGEST +LONGEVITY +LONGHAND +LONGHORN +LONGHORNS +LONGING +LONGINGLY +LONGINGS +LONGITUDE +LONGITUDINAL +LONGLEY +LONGMAN +LONGMONT +LONGO +LONGS +LONGSHOREMAN +LONGSHOREMEN +LONGSHOREMEN'S +LONGSHOT +LONGSTANDING +LONGTERM +LONGTIME +LONGUET +LONGVIEW +LONGWOOD +LONGWORTH +LONI +LONNIE +LONRHO +LONRHO'S +LONSDALE +LONSKI +LOO +LOOK +LOOKALIKE +LOOKED +LOOKIN' +LOOKING +LOOKOUT +LOOKOUTS +LOOKS +LOOM +LOOMED +LOOMING +LOOMIS +LOOMS +LOON +LOONEY +LOONS +LOONY +LOOP +LOOPED +LOOPHOLE +LOOPHOLES +LOOPING +LOOPS +LOOPY +LOOSE +LOOSED +LOOSELY +LOOSEN +LOOSENED +LOOSENING +LOOSENS +LOOSER +LOOT +LOOTED +LOOTERS +LOOTING +LOP +LOPATKIEWICZ +LOPES +LOPEZ +LOPEZ'S +LOPID +LOPPED +LOPPING +LOPSIDED +LOQUACIOUS +LORA +LORAIN +LORAL +LORAL'S +LORALEI +LORD +LORD'S +LORDS +LORDSTOWN +LORE +LOREAN +LOREN +LORENA +LORENZ +LORENZO +LORENZO'S +LORETTA +LORI +LORIE +LORILLARD +LORIMAR +LORIMAR'S +LORIN +LORING +LORNA +LORNE +LORRAINE +LORRIE +LORTON +LOS +LOSE +LOSEC +LOSER +LOSERS +LOSES +LOSH +LOSING +LOSS +LOSSES +LOST +LOT +LOT'S +LOTHAR +LOTHROP +LOTION +LOTIONS +LOTS +LOTT +LOTT'S +LOTTA +LOTTE +LOTTERIES +LOTTERY +LOTTERY'S +LOTTO +LOTUS +LOTUS' +LOTUS'S +LOU +LOU'S +LOUCKS +LOUD +LOUDER +LOUDEST +LOUDLY +LOUDON +LOUDSPEAKER +LOUDSPEAKERS +LOUGANIS +LOUGHLIN +LOUIE +LOUIS +LOUIS' +LOUISA +LOUISE +LOUISIANA +LOUISIANA'S +LOUISVILLE +LOUNGE +LOUNGES +LOUNGING +LOURDES +LOURY +LOUSY +LOUVRE +LOVABLE +LOVATO +LOVE +LOVE'S +LOVED +LOVEJOY +LOVELACE +LOVELAND +LOVELESS +LOVELL +LOVELORN +LOVELY +LOVEMAKING +LOVER +LOVER'S +LOVERS +LOVERS' +LOVES +LOVETT +LOVIN' +LOVING +LOVINGLY +LOVITZ +LOVLER +LOW +LOWDOWN +LOWE +LOWE'S +LOWELL +LOWENSTEIN +LOWENTHAL +LOWER +LOWERED +LOWERING +LOWERS +LOWERY +LOWEST +LOWEY +LOWLAND +LOWLANDS +LOWLY +LOWNDES +LOWNEY +LOWREY +LOWRIE +LOWRY +LOWS +LOY +LOYAL +LOYALIST +LOYALISTS +LOYALLY +LOYALTIES +LOYALTY +LOYOLA +LOZADA +LOZANO +LOZANO'S +LS +LTD +LU +LUAN +LUANDA +LUBAVITCHER +LUBBERS +LUBBOCK +LUBE +LUBIN +LUBLIN +LUBOWSKI +LUBRANI +LUBRICANT +LUBRICANTS +LUBRICATING +LUBRICATION +LUBRIZOL +LUBY'S +LUC +LUCA +LUCAS +LUCAS' +LUCAS'S +LUCASFILM +LUCCHESE +LUCCI +LUCE +LUCENTE +LUCERO +LUCIA +LUCIANO +LUCID +LUCIE +LUCIEN +LUCILE +LUCILLE +LUCINDA +LUCIO +LUCIUS +LUCK +LUCKED +LUCKEY +LUCKIER +LUCKIEST +LUCKILY +LUCKLESS +LUCKY +LUCKY'S +LUCRATIVE +LUCY +LUCY'S +LUDCKE +LUDDEN +LUDICROUS +LUDLOW +LUDLUM +LUDU +LUDWIG +LUDWIGSHAFEN +LUFKIN +LUFT +LUFTHANSA +LUFTHANSA'S +LUFTWAFFE +LUG +LUGAR +LUGAR'S +LUGE +LUGER +LUGGAGE +LUGGED +LUGGING +LUGO +LUGOSI +LUIGI +LUIS +LUISA +LUIZ +LUJAN +LUJAN'S +LUKA +LUKANOV +LUKAS +LUKASHENKO +LUKE +LUKE'S +LUKEN +LUKENS +LUKENS' +LUKEWARM +LUKMAN +LUKOIL +LUKYANOV +LULA +LULL +LULLABY +LULLED +LULLS +LULU +LUMBAR +LUMBER +LUMBERED +LUMBERING +LUMBERJACK +LUMBERTON +LUMET +LUMIERE +LUMINA +LUMINARIES +LUMINOUS +LUMP +LUMPECTOMY +LUMPED +LUMPING +LUMPS +LUMPUR +LUMPY +LUNA +LUNACY +LUNAR +LUNATIC +LUNATICS +LUNCH +LUNCHED +LUNCHEON +LUNCHEONS +LUNCHES +LUNCHING +LUNCHROOM +LUNCHTIME +LUND +LUNDBERG +LUNDEN +LUNDGREN +LUNDQUIST +LUNDY +LUNG +LUNGE +LUNGED +LUNGING +LUNGREN +LUNGS +LUNT +LUNTZ +LUO +LUPATKIN +LUPE +LUPER +LUPO +LUPONE +LUPUS +LURCH +LURCHED +LURCHES +LURCHING +LURE +LURED +LURES +LURID +LURIE +LURING +LURK +LURKED +LURKING +LURKS +LUSA +LUSAKA +LUSCIOUS +LUSH +LUSHLY +LUSINCHI +LUSK +LUST +LUSTER +LUSTGARTEN +LUSTIG +LUSTROUS +LUSTY +LUTE +LUTECE +LUTH +LUTHER +LUTHERAN +LUTHERANS +LUTZ +LUV +LUVS +LUX +LUXEMBOURG +LUXEMBOURG'S +LUXOR +LUXURIES +LUXURIOUS +LUXURY +LUYENDYK +LUZ +LUZHKOV +LUZON +LVOV +LWIN +LY +LYBRAND +LYBRAND'S +LYCOMING +LYCRA +LYDEN +LYDIA +LYDON +LYE +LYING +LYLE +LYLE'S +LYLES +LYMAN +LYME +LYMPH +LYMPHOCYTES +LYMPHOMA +LYN +LYNAM +LYNBROOK +LYNCH +LYNCH'S +LYNCHBURG +LYNCHED +LYNCHING +LYNCHINGS +LYNDA +LYNDEN +LYNDON +LYNE +LYNETTE +LYNG +LYNN +LYNN'S +LYNNE +LYNX +LYON +LYONDELL +LYONNAIS +LYONNAIS'S +LYONNAISE +LYONS +LYPHOMED +LYPHOMED'S +LYRIC +LYRICAL +LYRICALLY +LYRICISM +LYRICIST +LYRICISTS +LYRICS +LYSENKO +LYTLE +LYTTON +LYUBIMOV +M. +M.'S +M.S +MA +MA'AM +MAALOX +MAARIV +MAAS +MAASTRICHT +MABEL +MABON +MABRY +MABUS +MAC +MAC'S +MACABRE +MACADAMIA +MACALLISTER +MACANDREWS +MACAO +MACARONI +MACARTHUR +MACARTHUR'S +MACAU +MACAULAY +MACAULEY +MACBETH +MACBRIDE +MACDILL +MACDONALD +MACDONALD'S +MACDONELL +MACDONNELL +MACDOWELL +MACE +MACEDONIA +MACEDONIA'S +MACEDONIAN +MACEDONIANS +MACFADDEN +MACFARLANE +MACGREGOR +MACGYVER +MACH +MACHADO +MACHAIN +MACHARSKI +MACHE +MACHETE +MACHETEROS +MACHETES +MACHIAVELLI +MACHIAVELLIAN +MACHINATIONS +MACHINE +MACHINE'S +MACHINEGUN +MACHINEGUNS +MACHINERY +MACHINES +MACHINES' +MACHINING +MACHINIST +MACHINISTS +MACHINISTS' +MACHISMO +MACHO +MACHTLEY +MACHU +MACIAS +MACINTAX +MACINTOSH +MACINTOSHES +MACK +MACK'S +MACKAY +MACKE +MACKENZIE +MACKEREL +MACKEY +MACKIE +MACKINAC +MACKINNON +MACKINTOSH +MACKLIN +MACLACHLAN +MACLAINE +MACLAREN +MACLEAN +MACLEAN'S +MACLEOD +MACMILLAN +MACMILLAN'S +MACNEIL +MACOMB +MACOMBER +MACON +MACOUTE +MACOUTES +MACPHAIL +MACPHERSON +MACRAE +MACRO +MACROECONOMIC +MACROECONOMICS +MACROPHAGES +MACS +MACSHARRY +MACVICAR +MACWORLD +MACY +MACY'S +MAD +MADAGASCAR +MADAM +MADAMA +MADAME +MADANI +MADCAP +MADDEN +MADDENING +MADDENINGLY +MADDER +MADDOX +MADDUX +MADDY +MADE +MADEIRA +MADELEINE +MADELINE +MADEMOISELLE +MADERA +MADGE +MADHOUSE +MADHYA +MADIGAN +MADISON +MADISON'S +MADISONVILLE +MADLY +MADMAN +MADMEN +MADNESS +MADOFF +MADONNA +MADONNA'S +MADRAS +MADRE +MADRID +MADRID'S +MADRIGAL +MADSEN +MADSON +MAE +MAE'S +MAEDA +MAELSTROM +MAERSK +MAES +MAESTRO +MAFFEI +MAFIA +MAFIA'S +MAFIOSI +MAFIOSO +MAG +MAGA +MAGADAN +MAGAW +MAGAZINE +MAGAZINE'S +MAGAZINER +MAGAZINES +MAGAZINES' +MAGDA +MAGDALENA +MAGDALENE +MAGDEBURG +MAGEE +MAGELLAN +MAGELLAN'S +MAGENTA +MAGER +MAGGIE +MAGGIO +MAGGOTS +MAGHREB +MAGIC +MAGIC'S +MAGICAL +MAGICALLY +MAGICIAN +MAGICIANS +MAGID +MAGILL +MAGINNIS +MAGISTAD +MAGISTRATE +MAGISTRATE'S +MAGISTRATES +MAGLAJ +MAGLEV +MAGLI +MAGMA +MAGMA'S +MAGNA +MAGNANIMOUS +MAGNATE +MAGNATES +MAGNAVOX +MAGNESIUM +MAGNESS +MAGNET +MAGNETEK +MAGNETIC +MAGNETICALLY +MAGNETICS +MAGNETISM +MAGNETOMETERS +MAGNETS +MAGNIFICATION +MAGNIFICENT +MAGNIFICENTLY +MAGNIFIED +MAGNIFIES +MAGNIFY +MAGNIFYING +MAGNIN +MAGNITUDE +MAGNOLIA +MAGNOLIAS +MAGNUM +MAGNUS +MAGNUSON +MAGOWAN +MAGRITTE +MAGRUDER +MAGUIRE +MAGYAR +MAH +MAHAL +MAHALLATI +MAHANEY +MAHARASHTRA +MAHARISHI +MAHATHIR +MAHATHIR'S +MAHATMA +MAHDI +MAHDI'S +MAHE +MAHER +MAHFOUZ +MAHLER +MAHLER'S +MAHLMANN +MAHMOOD +MAHMOUD +MAHMUD +MAHOGANY +MAHON +MAHONEY +MAHONEY'S +MAHONY +MAHWAH +MAI +MAID +MAID'S +MAIDA +MAIDEN +MAIDENFORM +MAIDENS +MAIDS +MAIER +MAIKOVSKIS +MAIL +MAILBOX +MAILBOXES +MAILED +MAILER +MAILER'S +MAILERS +MAILING +MAILINGS +MAILMAN +MAILROOM +MAILS +MAILSON +MAIM +MAIMED +MAIMING +MAIN +MAINE +MAINE'S +MAINFRAME +MAINFRAMES +MAINICHI +MAINLAND +MAINLINE +MAINLY +MAINS +MAINSTAY +MAINSTAYS +MAINSTREAM +MAINSTREAMING +MAINTAIN +MAINTAINED +MAINTAINING +MAINTAINS +MAINTENANCE +MAINZ +MAIR +MAISON +MAITLAND +MAITRE +MAIZE +MAIZIERE +MAIZIERE'S +MAJERLE +MAJESTIC +MAJESTY +MAJESTY'S +MAJEURE +MAJID +MAJLIS +MAJOR +MAJOR'S +MAJORCA +MAJORED +MAJORING +MAJORITIES +MAJORITY +MAJORITY'S +MAJORS +MAKAROV +MAKAROVA +MAKATI +MAKE +MAKEOVER +MAKER +MAKER'S +MAKERS +MAKERS' +MAKES +MAKESHIFT +MAKEUP +MAKI +MAKING +MAKINGS +MAKOTO +MAKSOUD +MAL +MALACCA +MALADIES +MALADY +MALAISE +MALAKHOV +MALAN +MALARIA +MALATHION +MALAWI +MALAY +MALAYA +MALAYS +MALAYSIA +MALAYSIA'S +MALAYSIAN +MALAYSIANS +MALCOLM +MALCOLM'S +MALCOM +MALCONTENTS +MALDEN +MALDIVES +MALDIVIAN +MALDONADO +MALDUTIS +MALE +MALEEVA +MALEK +MALES +MALEV +MALEVOLENT +MALFEASANCE +MALFUNCTION +MALFUNCTIONED +MALFUNCTIONING +MALFUNCTIONS +MALI +MALIBU +MALICE +MALICIOUS +MALICIOUSLY +MALIGN +MALIGNANCIES +MALIGNANCY +MALIGNANT +MALIGNED +MALIK +MALIN +MALINOWSKI +MALKIN +MALKOVICH +MALL +MALL'S +MALLARD +MALLARDS +MALLE +MALLEABLE +MALLET +MALLETT +MALLEY +MALLICK +MALLIGHTCO +MALLINCKRODT +MALLON +MALLORY +MALLOY +MALLS +MALNOURISHED +MALNUTRITION +MALONE +MALONE'S +MALONEY +MALOTT +MALPRACTICE +MALT +MALTA +MALTBY +MALTESE +MALTREATMENT +MALTZ +MALVAL +MALVERN +MALVINAS +MALY +MAMA +MAMA'S +MAMAS +MAMBO +MAMBRO +MAME +MAMEDOV +MAMET +MAMET'S +MAMIE +MAMMA +MAMMAL +MAMMALS +MAMMOGRAM +MAMMOGRAMS +MAMMOGRAPHY +MAMMOTH +MAMMOTHS +MAMULA +MAN +MAN'S +MANA +MANAC +MANAFORT +MANAGE +MANAGEABLE +MANAGED +MANAGEMENT +MANAGEMENT'S +MANAGEMENTS +MANAGER +MANAGER'S +MANAGERIAL +MANAGERS +MANAGERS' +MANAGES +MANAGING +MANAGMENT +MANAGUA +MANAGUA'S +MANAMA +MANAROV +MANASSAS +MANATEE +MANATEES +MANATT +MANAUS +MANCERA +MANCHA +MANCHESTER +MANCHIN +MANCHU +MANCHURIA +MANCHURIAN +MANCINI +MANCUSO +MANDALA +MANDALAY +MANDARIN +MANDARINS +MANDATE +MANDATED +MANDATES +MANDATING +MANDATORY +MANDEL +MANDELA +MANDELA'S +MANDELBAUM +MANDELL +MANDELLA +MANDL +MANDOLIN +MANDRELL +MANDRESH +MANDY +MANE +MANELLA +MANET +MANEUVER +MANEUVERABILITY +MANEUVERABLE +MANEUVERED +MANEUVERING +MANEUVERINGS +MANEUVERS +MANFRED +MANGAN +MANGANESE +MANGANO +MANGER +MANGES +MANGLAPUS +MANGLED +MANGO +MANGOES +MANGOPE +MANGOSUTHU +MANGROVE +MANHANDLED +MANHASSET +MANHATTAN +MANHATTAN'S +MANHEIM +MANHOLE +MANHOOD +MANHUNT +MANIA +MANIAC +MANIACAL +MANIACS +MANIC +MANICURE +MANICURED +MANIFEST +MANIFESTATION +MANIFESTATIONS +MANIFESTED +MANIFESTING +MANIFESTLY +MANIFESTO +MANIFESTS +MANIFOLD +MANIGAT +MANIGAT'S +MANILA +MANILA'S +MANILOW +MANION +MANIPULATE +MANIPULATED +MANIPULATES +MANIPULATING +MANIPULATION +MANIPULATIONS +MANIPULATIVE +MANIPULATOR +MANIPULATORS +MANISCHEWITZ +MANITOBA +MANKATO +MANKIEWICZ +MANKIND +MANKIND'S +MANLEY +MANLEY'S +MANLY +MANMADE +MANN +MANN'S +MANNA +MANNED +MANNEQUIN +MANNEQUINS +MANNER +MANNERED +MANNERISMS +MANNERS +MANNESMANN +MANNHEIM +MANNING +MANNING'S +MANNY +MANO +MANON +MANOOGIAN +MANOR +MANOS +MANPOWER +MANPOWER'S +MANS +MANSELL +MANSFIELD +MANSION +MANSIONS +MANSLAUGHTER +MANSON +MANSON'S +MANSOUR +MANTECA +MANTEGNA +MANTEL +MANTLE +MANTLE'S +MANTON +MANTRA +MANUAL +MANUALLY +MANUALS +MANUEL +MANUELA +MANUFACTURE +MANUFACTURED +MANUFACTURER +MANUFACTURER'S +MANUFACTURERS +MANUFACTURERS' +MANUFACTURES +MANUFACTURING +MANURE +MANUSCRIPT +MANUSCRIPTS +MANVILLE +MANVILLE'S +MANWARING +MANY +MANZANILLO +MANZI +MAO +MAO'S +MAOIST +MAORI +MAP +MAPCO +MAPES +MAPLE +MAPLES +MAPLEWOOD +MAPPED +MAPPING +MAPPLETHORPE +MAPPLETHORPE'S +MAPS +MAPUTO +MAQUILADORA +MAQUILADORAS +MAR +MARA +MARABOU +MARADONA +MARAIS +MARANISS +MARASH +MARATHON +MARATHON'S +MARATHONS +MARAUDERS +MARAUDING +MARBLE +MARBLED +MARBLES +MARBURY +MARC +MARCEL +MARCELINO +MARCELLA +MARCELLO +MARCELO +MARCH +MARCH'S +MARCHAND +MARCHE +MARCHED +MARCHER +MARCHERS +MARCHES +MARCHESE +MARCHING +MARCHINI +MARCIA +MARCIANO +MARCIE +MARCINKUS +MARCIULIONIS +MARCKESANO +MARCO +MARCONI +MARCOS +MARCOS' +MARCOS'S +MARCOSES +MARCOSES' +MARCUS +MARCY +MARDEN +MARDI +MARDON +MARE +MAREK +MARES +MARESCA +MARGARET +MARGARET'S +MARGARETTEN +MARGARINE +MARGARITA +MARGARITAS +MARGAUX +MARGE +MARGEOTES +MARGIE +MARGIN +MARGINAL +MARGINALIZE +MARGINALIZED +MARGINALLY +MARGINS +MARGO +MARGOLIES +MARGOLIN +MARGOLIS +MARGOT +MARGRET +MARGUERITE +MARGULIES +MARI +MARIA +MARIA'S +MARIACHI +MARIAH +MARIAM +MARIAN +MARIANA +MARIANAS +MARIANI +MARIANNA +MARIANNE +MARIANO +MARICOPA +MARIE +MARIE'S +MARIEL +MARIETTA +MARIETTA'S +MARIGOLDS +MARIJUANA +MARILYN +MARIMBA +MARIN +MARINA +MARINADE +MARINAS +MARINATE +MARINATED +MARINE +MARINE'S +MARINER +MARINERS +MARINERS' +MARINES +MARINES' +MARINO +MARINO'S +MARINOVICH +MARINVEST +MARIO +MARIO'S +MARION +MARION'S +MARIOTTA +MARIPOSA +MARIS +MARISA +MARISSA +MARIST +MARITAL +MARITIME +MARIUS +MARJORIE +MARK +MARK'S +MARKAIR +MARKDOWN +MARKDOWNS +MARKED +MARKEDLY +MARKER +MARKERS +MARKESE +MARKET +MARKET'S +MARKETABILITY +MARKETABLE +MARKETED +MARKETEER +MARKETEERING +MARKETEERS +MARKETER +MARKETER'S +MARKETERS +MARKETERS' +MARKETING +MARKETINGS +MARKETPLACE +MARKETPLACES +MARKETS +MARKETS' +MARKEY +MARKEY'S +MARKHAM +MARKING +MARKINGS +MARKKA +MARKKAA +MARKLE +MARKMAN +MARKOV +MARKOVIC +MARKOVIC'S +MARKOWITZ +MARKS +MARKSMAN +MARKSMANSHIP +MARKUP +MARKUPS +MARKUS +MARKY +MARLA +MARLBORO +MARLBORO'S +MARLBOROS +MARLBOROUGH +MARLEE +MARLENE +MARLENEE +MARLEY +MARLEY'S +MARLIN +MARLINS +MARLO +MARLON +MARLOW +MARLOWE +MARLYS +MARNE +MARONITE +MARONITES +MAROON +MAROONED +MAROUS +MARQUARDT +MARQUEE +MARQUES +MARQUESS +MARQUEST +MARQUETTE +MARQUEZ +MARQUIS +MARR +MARRACK +MARRED +MARRERO +MARRIAGE +MARRIAGES +MARRIED +MARRIES +MARRIOTT +MARRIOTT'S +MARRON +MARROW +MARRS +MARRY +MARRYING +MARS +MARSALIS +MARSDEN +MARSEILLE +MARSEILLES +MARSH +MARSHA +MARSHAL +MARSHAL'S +MARSHALED +MARSHALING +MARSHALL +MARSHALL'S +MARSHALLS +MARSHALS +MARSHES +MARSHLAND +MARSHLANDS +MARSHMALLOW +MARSHMALLOWS +MARSHY +MARSTELLER +MARSTON +MART +MART'S +MARTA +MARTECH +MARTEL +MARTELL +MARTENS +MARTHA +MARTHA'S +MARTI +MARTIAL +MARTIALED +MARTIAN +MARTIANS +MARTIC +MARTIN +MARTIN'S +MARTINA +MARTINDALE +MARTINE +MARTINEZ +MARTINEZ'S +MARTINI +MARTINIQUE +MARTINIS +MARTINO +MARTINS +MARTINSBURG +MARTINSVILLE +MARTON +MARTS +MARTTI +MARTY +MARTYR +MARTYRDOM +MARTYRED +MARTYRS +MARTZ +MARU +MARUBENI +MARUYAMA +MARV +MARVEL +MARVEL'S +MARVELED +MARVELING +MARVELOUS +MARVELOUSLY +MARVELS +MARVIN +MARVIN'S +MARWAN +MARWICK +MARWICK'S +MARX +MARX'S +MARXISM +MARXIST +MARXISTS +MARY +MARY'S +MARYANN +MARYANNE +MARYLAND +MARYLAND'S +MARYMOUNT +MARYS +MARYSVILLE +MARYVILLE +MARZOTTO +MARZUK +MAS +MASA +MASAHIKO +MASAHIRO +MASAI +MASAKO +MASAMI +MASAO +MASARU +MASARYK +MASAYA +MASAYOSHI +MASCARA +MASCO +MASCOT +MASCOTS +MASCULINE +MASCULINITY +MASERATI +MASH +MASHAT +MASHBURN +MASHED +MASHHAD +MASIUS +MASK +MASKED +MASKING +MASKS +MASLENNIKOV +MASLIN +MASLOFF +MASLYUKOV +MASOCHISTIC +MASON +MASON'S +MASONIC +MASONRY +MASONS +MASOOD +MASOUD +MASQUERADE +MASQUERADING +MASRI +MASS +MASSA +MASSACHUSETTS +MASSACHUSETTS' +MASSACHUSETTS'S +MASSACHUSSETTS +MASSACRE +MASSACRED +MASSACRES +MASSACRING +MASSAGE +MASSAGED +MASSAGES +MASSAGING +MASSARO +MASSAWA +MASSE +MASSED +MASSENA +MASSES +MASSEY +MASSIE +MASSIEU +MASSIEU'S +MASSIMO +MASSING +MASSIVE +MASSIVELY +MASSON +MASSOUD +MAST +MASTECTOMIES +MASTECTOMY +MASTER +MASTER'S +MASTERCARD +MASTERCARD'S +MASTERCARDS +MASTERED +MASTERFUL +MASTERFULLY +MASTERING +MASTERLY +MASTERMIND +MASTERMINDED +MASTERMINDING +MASTERMINDS +MASTERPIECE +MASTERPIECES +MASTERS +MASTERS' +MASTERSON +MASTERWORKS +MASTERY +MASTHEAD +MASTRO +MASTROIANNI +MASTS +MASTURBATION +MASUR +MAT +MATA +MATADOR +MATADORS +MATAGALPA +MATAGORDA +MATALIN +MATAMOROS +MATCH +MATCHBOX +MATCHED +MATCHES +MATCHING +MATCHMAKER +MATCHMAKING +MATCHUP +MATCHUPS +MATE +MATED +MATELL +MATEO +MATER +MATERIAL +MATERIALISM +MATERIALISTIC +MATERIALITY +MATERIALIZE +MATERIALIZED +MATERIALIZES +MATERIALLY +MATERIALS +MATERIEL +MATERNAL +MATERNITY +MATES +MATEWAN +MATH +MATHEMATICAL +MATHEMATICALLY +MATHEMATICIAN +MATHEMATICIANS +MATHEMATICS +MATHENEY +MATHER +MATHESON +MATHESON'S +MATHEW +MATHEWS +MATHEWSON +MATHIAS +MATHIEU +MATHILDA +MATHIS +MATIC +MATIF +MATILDA +MATIN +MATINEE +MATINEES +MATING +MATISSE +MATISSE'S +MATLIN +MATLOCK +MATOS +MATRA +MATRIARCH +MATRIMONIAL +MATRIMONY +MATRIX +MATRON +MATS +MATSON +MATSUDA +MATSUI +MATSUMOTO +MATSUNAGA +MATSUSHITA +MATSUSHITA'S +MATSUURA +MATT +MATT'S +MATTA +MATTE +MATTEA +MATTED +MATTEL +MATTEL'S +MATTER +MATTERED +MATTERS +MATTES +MATTESON +MATTHAU +MATTHEW +MATTHEW'S +MATTHEWS +MATTHEY +MATTHIAS +MATTIE +MATTINGLY +MATTISON +MATTOS +MATTOX +MATTRESS +MATTRESSES +MATTSON +MATTY +MATURATION +MATURE +MATURED +MATURES +MATURING +MATURITIES +MATURITY +MATYAS +MATZO +MAUDE +MAUDLIN +MAUER +MAUGHAN +MAUI +MAULDIN +MAULED +MAULTASCH +MAUNA +MAUNG +MAUNG'S +MAUNO +MAURA +MAUREEN +MAURER +MAURICE +MAURICE'S +MAURICIO +MAURITANIA +MAURITANIAN +MAURITANIANS +MAURITIUS +MAURIZIO +MAURO +MAURY +MAUS +MAUSOLEUM +MAUTHAUSEN +MAUVE +MAVEN +MAVENS +MAVERICK +MAVERICKS +MAVERICKS' +MAVINGA +MAVIS +MAVRODI +MAVROULES +MAW +MAWHINNEY +MAWR +MAX +MAX'S +MAXED +MAXEY +MAXFIELD +MAXI +MAXICARE +MAXICARE'S +MAXIM +MAXIMA +MAXIMIZE +MAXIMIZED +MAXIMIZES +MAXIMIZING +MAXIMUM +MAXINE +MAXIS +MAXSAVER +MAXSAVERS +MAXTOR +MAXUS +MAXWELL +MAXWELL'S +MAXXAM +MAXXAM'S +MAY +MAY'S +MAYA +MAYAN +MAYANS +MAYBE +MAYBELLINE +MAYBERRY +MAYDAY +MAYER +MAYER'S +MAYES +MAYFAIR +MAYFIELD +MAYFLOWER +MAYHEM +MAYHEW +MAYNARD +MAYNE +MAYNES +MAYO +MAYONNAISE +MAYOR +MAYOR'S +MAYORAL +MAYORALTY +MAYORS +MAYORS' +MAYPORT +MAYS +MAYTAG +MAYTAG'S +MAZA +MAZANKOWSKI +MAZAR +MAZATLAN +MAZDA +MAZDA'S +MAZE +MAZES +MAZILU +MAZOLA +MAZOR +MAZOWIECKI +MAZOWIECKI'S +MAZUR +MAZURSKY +MAZZA +MAZZELLA +MAZZOLA +MAZZOLA'S +MAZZOLI +MAZZONE +MBANK +MBEKI +MCADAMS +MCAFEE +MCALINDEN +MCALISTER +MCALLEN +MCALLISTER +MCALPINE +MCANALLY +MCARTHUR +MCARTOR +MCAULEY +MCAULIFFE +MCBIRNEY +MCBRIDE +MCCABE +MCCAFFREY +MCCAIN +MCCAIN'S +MCCALL +MCCALL'S +MCCALLISTER +MCCALLUM +MCCAMANT +MCCAMMON +MCCANDLESS +MCCANN +MCCANN'S +MCCARRAN +MCCARRON +MCCARTHY +MCCARTHY'S +MCCARTHYISM +MCCARTNEY +MCCARTNEY'S +MCCARTY +MCCAUGHEY +MCCAULEY +MCCAUSLAND +MCCAW +MCCAW'S +MCCHESNEY +MCCLAIN +MCCLAIN'S +MCCLANAHAN +MCCLANE +MCCLATCHY +MCCLEAN +MCCLEASE +MCCLELLAN +MCCLELLAND +MCCLENDON +MCCLINTOCK +MCCLOSKEY +MCCLOUD +MCCLOY +MCCLURE +MCCOLL +MCCOLLUM +MCCOLM +MCCOMB +MCCONNELL +MCCONNELL'S +MCCONVILLE +MCCORD +MCCORMACK +MCCORMICK +MCCORMICK'S +MCCORQUODALE +MCCORVEY +MCCOVEY +MCCOWN +MCCOY +MCCRACKEN +MCCRARY +MCCRAW +MCCRAY +MCCREA +MCCREADY +MCCREARY +MCCRERY +MCCRORY +MCCUE +MCCULLEY +MCCULLOCH +MCCULLOUGH +MCCUMBER +MCCUNE +MCCURDY +MCCURRY +MCCUTCHEON +MCDADE +MCDANIEL +MCDERMOTT +MCDEVITT +MCDONALD +MCDONALD'S +MCDONALDS +MCDONNELL +MCDONNELL'S +MCDONOUGH +MCDOUGAL +MCDOUGAL'S +MCDOUGALL +MCDOUGALS +MCDOWELL +MCDOWELL'S +MCDUFF +MCEACHERN +MCELLIGOTT +MCELROY +MCENERY +MCENROE +MCENTEE +MCENTIRE +MCEVOY +MCEWAN +MCEWEN +MCFADDEN +MCFARLAND +MCFARLANE +MCFARLANE'S +MCFERRIN +MCGANN +MCGARRY +MCGAW +MCGEE +MCGEE'S +MCGEHEE +MCGEORGE +MCGHAN +MCGHEE +MCGILL +MCGILLICUDDY +MCGILLIS +MCGINLEY +MCGINN +MCGINNIS +MCGINNISS +MCGINTY +MCGIVERN +MCGLADE +MCGLOTHLIN +MCGOVERN +MCGOVERN'S +MCGOWAN +MCGRATH +MCGRAW +MCGREGOR +MCGRIFF +MCGROARTY +MCGUIGAN +MCGUINNESS +MCGUIRE +MCGUIRK +MCGWIRE +MCHALE +MCHENRY +MCHUGH +MCILHENNY +MCILVAINE +MCINERNEY +MCINNIS +MCINTOSH +MCINTURFF +MCINTYRE +MCKAY +MCKAY'S +MCKEAN +MCKEE +MCKEESPORT +MCKEEVER +MCKELVEY +MCKENNA +MCKENNON +MCKENZIE +MCKEON +MCKEOWN +MCKERNAN +MCKESSON +MCKESSON'S +MCKIM +MCKINLEY +MCKINNEY +MCKINNON +MCKINNY +MCKINSEY +MCKITTRICK +MCKNIGHT +MCKYER +MCLAIN +MCLANE +MCLAREN +MCLARTY +MCLAUGHLIN +MCLAUGHLIN'S +MCLEAN +MCLELLAN +MCLEMORE +MCLENNAN +MCLEOD +MCLOUGHLIN +MCLUCAS +MCMAHON +MCMANUS +MCMARTIN +MCMASTER +MCMICHAEL +MCMILLAN +MCMILLEN +MCMILLIN +MCMONAGLE +MCMORAN +MCMORRIS +MCMULLEN +MCMURRAY +MCMURTRY +MCNAIR +MCNALL +MCNALLY +MCNALLY'S +MCNAMARA +MCNAMARA'S +MCNAMEE +MCNARY +MCNEAL +MCNEALY +MCNEELEY +MCNEIL +MCNEILL +MCNULTY +MCORP +MCORP'S +MCPEAK +MCPHEE +MCPHERSON +MCQUAY +MCQUEEN +MCRAE +MCRANEY +MCREYNOLDS +MCSORLEY +MCVAY +MCVEIGH +MCVEIGH'S +MCVEY +MCVIE +MCWETHY +MCWHERTER +MCWHORTER +MCWILLIAMS +ME +MEA +MEAD +MEAD'S +MEADE +MEADOR +MEADOW +MEADOWLANDS +MEADOWS +MEAGER +MEAGHER +MEAL +MEALS +MEALY +MEAN +MEANDER +MEANDERED +MEANDERING +MEANDERS +MEANER +MEANEST +MEANING +MEANINGFUL +MEANINGFULLY +MEANINGLESS +MEANINGS +MEANNESS +MEANS +MEANT +MEANTIME +MEANWHILE +MEANY +MEARS +MEASLES +MEASLY +MEASURABLE +MEASURABLY +MEASURE +MEASURE'S +MEASURED +MEASUREMENT +MEASUREMENTS +MEASURES +MEASUREX +MEASURING +MEAT +MEATBALLS +MEATLESS +MEATLOAF +MEATPACKER +MEATPACKERS +MEATPACKING +MEATS +MEATY +MECA +MECCA +MECHAM +MECHAM'S +MECHANIC +MECHANICAL +MECHANICALLY +MECHANICS +MECHANICSBURG +MECHANISM +MECHANISMS +MECHANIZATION +MECHANIZED +MECHEM +MECIAR +MECKEL +MECKLENBURG +MED +MEDAL +MEDALIST +MEDALISTS +MEDALLION +MEDALLIONS +MEDALS +MEDAPHIS +MEDAVOY +MEDCHEM +MEDCO +MEDCO'S +MEDDLE +MEDDLESOME +MEDDLING +MEDEA +MEDECINS +MEDEIROS +MEDELLIN +MEDEVA +MEDFLIES +MEDFLY +MEDFORD +MEDGAR +MEDI +MEDIA +MEDIA'S +MEDIAL +MEDIAN +MEDIANEWS +MEDIATE +MEDIATED +MEDIATING +MEDIATION +MEDIATOR +MEDIATORS +MEDIC +MEDICAID +MEDICAL +MEDICAL'S +MEDICALLY +MEDICARE +MEDICARE'S +MEDICATED +MEDICATION +MEDICATIONS +MEDICINAL +MEDICINE +MEDICINE'S +MEDICINES +MEDICO +MEDICS +MEDIEVAL +MEDIGAP +MEDIMMUNE +MEDINA +MEDIOBANCA +MEDIOCRE +MEDIOCRITY +MEDIPLEX +MEDIQ +MEDITATE +MEDITATING +MEDITATION +MEDITATIONS +MEDITATIVE +MEDITERRANEAN +MEDIUM +MEDIUMS +MEDLAR +MEDLEY +MEDLIN +MEDTRONIC +MEDTRONIC'S +MEDUSA +MEDVED +MEDVEDEV +MEE +MEECH +MEEHAN +MEEK +MEEKER +MEEKLY +MEEKS +MEER +MEES +MEESE +MEESE'S +MEET +MEETING +MEETING'S +MEETINGS +MEETS +MEG +MEGA +MEGABIT +MEGABUCKS +MEGABYTE +MEGABYTES +MEGADEALS +MEGAHERTZ +MEGAN +MEGAN'S +MEGAPHONE +MEGASTORES +MEGAWATT +MEGAWATTS +MEGGETT +MEGUID +MEHARRY +MEHDI +MEHL +MEHMET +MEHRAN +MEHTA +MEI +MEIER +MEIJI +MEIN +MEINHOLD +MEIR +MEISNER +MEISSNER +MEISTER +MEJIA +MEKONG +MEL +MELAMED +MELANCHOLY +MELANESIAN +MELANESIANS +MELANGE +MELANIE +MELANIN +MELANOMA +MELATONIN +MELBA +MELBOURNE +MELCHER +MELCHIOR +MELD +MELDED +MELDING +MELEE +MELENDEZ +MELIA +MELINDA +MELING +MELISSA +MELISSA'S +MELL +MELLENCAMP +MELLMAN +MELLO +MELLO'S +MELLOAN +MELLON +MELLON'S +MELLOR +MELLOW +MELLOWED +MELMAN +MELNICK +MELO +MELODIC +MELODIES +MELODRAMA +MELODRAMATIC +MELODY +MELON +MELONS +MELROSE +MELT +MELTDOWN +MELTED +MELTING +MELTON +MELTS +MELTZER +MELVILLE +MELVILLE'S +MELVIN +MELVYN +MEMBER +MEMBER'S +MEMBERS +MEMBERS' +MEMBERSHIP +MEMBERSHIPS +MEMBRANE +MEMBRANES +MEMENTO +MEMENTOS +MEMO +MEMOIR +MEMOIRS +MEMORABILIA +MEMORABLE +MEMORABLY +MEMORANDA +MEMORANDUM +MEMORANDUMS +MEMOREX +MEMORIAL +MEMORIAL'S +MEMORIALIZE +MEMORIALIZED +MEMORIALIZING +MEMORIALS +MEMORIES +MEMORIZE +MEMORIZED +MEMORIZING +MEMORY +MEMOS +MEMOTEC +MEMPHIS +MEN +MEN'S +MENA +MENACE +MENACED +MENACHEM +MENACING +MENACINGLY +MENAGERIE +MENARD +MENASHE +MENCKEN +MEND +MENDED +MENDEL +MENDELSOHN +MENDELSON +MENDELSSOHN +MENDENHALL +MENDES +MENDEZ +MENDING +MENDOCINO +MENDOZA +MENEM +MENEM'S +MENENDEZ +MENGELE +MENGISTU +MENGISTU'S +MENIAL +MENIL +MENINGITIS +MENINO +MENLO +MENNEN +MENNINGER +MENNONITE +MENNONITES +MENOPAUSAL +MENOPAUSE +MENORAH +MENOTTI +MENSA +MENSTRUAL +MENSTRUATION +MENSWEAR +MENTAL +MENTALITY +MENTALLY +MENTHOL +MENTION +MENTIONED +MENTIONING +MENTIONS +MENTOR +MENTOR'S +MENTORING +MENTORS +MENTZ +MENTZER +MENU +MENUHIN +MENUS +MEOLA +MEOW +MER +MERABANK +MERAZ +MERC +MERC'S +MERCADO +MERCANTILE +MERCANTILIST +MERCED +MERCEDES +MERCENARIES +MERCENARY +MERCER +MERCER'S +MERCHANDISE +MERCHANDISER +MERCHANDISERS +MERCHANDISING +MERCHANT +MERCHANT'S +MERCHANTS +MERCHANTS' +MERCIER +MERCIES +MERCIFUL +MERCIFULLY +MERCILESS +MERCILESSLY +MERCK +MERCK'S +MERCOSUR +MERCURIAL +MERCURIO +MERCURY +MERCURY'S +MERCY +MERE +MEREDITH +MEREDITH'S +MERELY +MERETZ +MERGE +MERGED +MERGER +MERGER'S +MERGERS +MERGES +MERGING +MERHIGE +MERI +MERIDA +MERIDEN +MERIDIAN +MERIDIEN +MERIDOR +MERIEUX +MERIMEE +MERINGUE +MERINO +MERIS +MERISEL +MERIT +MERITED +MERITLESS +MERITOCRACY +MERITOR +MERITORIOUS +MERITS +MERIWETHER +MERKLE +MERKLEY +MERKSAMER +MERKUR +MERLE +MERLIN +MERLIS +MERLO +MERLOT +MERMAID +MERMAIDS +MERMAN +MERNICK +MERRELL +MERRETT +MERRIAM +MERRICK +MERRIER +MERRILL +MERRILL'S +MERRILY +MERRIMACK +MERRIMAN +MERRIMENT +MERRIN +MERRITT +MERRY +MERRYMAN +MERSON +MERTON +MERTZ +MERV +MERVIN +MERVYN +MERVYN'S +MERWE +MERYL +MESA +MESA'S +MESABA +MESERVE +MESH +MESHED +MESHES +MESHING +MESHKOV +MESHULAM +MESIC +MESKHI +MESMERIZED +MESMERIZING +MESQUITE +MESS +MESSAGE +MESSAGEPAD +MESSAGES +MESSAGING +MESSED +MESSENGER +MESSENGERS +MESSER +MESSERSCHMITT +MESSES +MESSIAH +MESSIANIC +MESSIER +MESSINA +MESSING +MESSINGER +MESSNER +MESSRS +MESSY +MET +MET'S +META +METABOLIC +METABOLISM +METAIRIE +METAKSA +METAL +METAL'S +METALL +METALLGESELLSCHAFT +METALLGESELLSCHAFT'S +METALLIC +METALLICA +METALLURGICAL +METALLURGY +METALS +METALWORKERS +METALWORKING +METAMORPHOSIS +METAPHOR +METAPHORICAL +METAPHORICALLY +METAPHORS +METAPHYSICAL +METAXAS +METCALF +METCALFE +METE +METED +METEOR +METEORIC +METEORITE +METEORITES +METEOROLOGICAL +METEOROLOGIST +METEOROLOGISTS +METEOROLOGY +METER +METERS +METEX +METH +METHADONE +METHAMPHETAMINE +METHANE +METHANEX +METHANOL +METHOD +METHODICAL +METHODICALLY +METHODIST +METHODISTS +METHODOLOGY +METHODS +METHOTREXATE +METHYL +METHYLENE +METICULOUS +METICULOUSLY +METLIFE +METPATH +METRE +METRIC +METRO +METRO'S +METRODOME +METROLINER +METROMEDIA +METROMEDIA'S +METROPLEX +METROPOLE +METROPOLIS +METROPOLITAN +METROPOLITAN'S +METS +METS' +METTLE +METTLER +METZ +METZENBAUM +METZENBAUM'S +METZGER +MEVACOR +MEX +MEXICALI +MEXICAN +MEXICANA +MEXICANO +MEXICANOS +MEXICANS +MEXICO +MEXICO'S +MEYER +MEYER'S +MEYERS +MEYERSON +MEZA +MEZVINSKY +MEZZALUNA +MEZZANINE +MEZZO +MFUME +MI +MIA +MIAMI +MIAMI'S +MIATA +MIC +MICA +MICE +MICELI +MICH +MICHAEL +MICHAEL'S +MICHAELA +MICHAELIS +MICHAELS +MICHAELSON +MICHAL +MICHAUD +MICHEAL +MICHEL +MICHEL'S +MICHELANGELO +MICHELANGELO'S +MICHELE +MICHELETTI +MICHELIN +MICHELIN'S +MICHELIS +MICHELLE +MICHELMAN +MICHELOB +MICHELS +MICHENER +MICHIGAN +MICHIGAN'S +MICHIKO +MICHIO +MICHNIK +MICHOACAN +MICK +MICKELSON +MICKEY +MICKEY'S +MICKY +MICOM +MICRO +MICRO'S +MICROAGE +MICROBE +MICROBES +MICROBIAL +MICROBIOLOGIST +MICROBIOLOGY +MICROBREWERIES +MICROBURST +MICROCHIP +MICROCHIPS +MICROCODE +MICROCOM +MICROCOMPUTER +MICROCOMPUTERS +MICROCOSM +MICROELECTRONIC +MICROELECTRONICS +MICROFILM +MICROGENESYS +MICROGRAFX +MICROGRAMS +MICROGRAVITY +MICROMANAGE +MICROMANAGEMENT +MICROMANAGING +MICRON +MICRON'S +MICRONESIA +MICRONS +MICROORGANISMS +MICROPHONE +MICROPHONES +MICROPOLIS +MICROPROCESSOR +MICROPROCESSORS +MICROPROSE +MICROSCOPE +MICROSCOPES +MICROSCOPIC +MICROSCOPICALLY +MICROSOFT +MICROSOFT'S +MICROSYSTEMS +MICROWAVE +MICROWAVES +MID +MIDAFTERNOON +MIDAIR +MIDAS +MIDCAP +MIDCON +MIDDAY +MIDDLE +MIDDLEBROOK +MIDDLEBURG +MIDDLEBURY +MIDDLEFIELD +MIDDLEMAN +MIDDLEMEN +MIDDLESEX +MIDDLETON +MIDDLETOWN +MIDDLEWEIGHT +MIDDLING +MIDEAST +MIDFIELD +MIDFIELDER +MIDGET +MIDGETMAN +MIDGETS +MIDI +MIDLAND +MIDLAND'S +MIDLANDS +MIDLANTIC +MIDLER +MIDLER'S +MIDLEVEL +MIDLIFE +MIDMORNING +MIDNIGHT +MIDORI +MIDPOINT +MIDPRICED +MIDRANGE +MIDRIFF +MIDSEASON +MIDSECTION +MIDSESSION +MIDSHIPMAN +MIDSHIPMEN +MIDSIZE +MIDSIZED +MIDST +MIDSTREAM +MIDSUMMER +MIDTERM +MIDTOWN +MIDWAY +MIDWAY'S +MIDWEEK +MIDWEST +MIDWEST'S +MIDWESTERN +MIDWESTERNER +MIDWESTERNERS +MIDWIFE +MIDWINTER +MIDWIVES +MIDYEAR +MIECZYSLAW +MIEH +MIELKE +MIEN +MIENO +MIERT +MIESKE +MIFFED +MIFFLIN +MIG +MIGHT +MIGHTIER +MIGHTIEST +MIGHTILY +MIGHTN'T +MIGHTY +MIGNON +MIGRAINE +MIGRAINES +MIGRANT +MIGRANTS +MIGRATE +MIGRATED +MIGRATING +MIGRATION +MIGRATIONS +MIGRATORY +MIGS +MIGUEL +MIHAI +MIKA +MIKAEL +MIKE +MIKE'S +MIKES +MIKEY +MIKHAIL +MIKHAILOV +MIKI +MIKLOS +MIKULIC +MIKULSKI +MIKUS +MIKVA +MIL +MILACRON +MILACRON'S +MILAGRO +MILAN +MILAN'S +MILANESE +MILANO +MILBANK +MILBERG +MILBURN +MILBURY +MILD +MILDER +MILDEST +MILDEW +MILDLY +MILDRED +MILE +MILEAGE +MILES +MILESTONE +MILESTONES +MILFORD +MILHOLLIN +MILIEU +MILITANCY +MILITANT +MILITANTLY +MILITANTS +MILITANTS' +MILITARIES +MILITARILY +MILITARISM +MILITARISTIC +MILITARISTS +MILITARIZATION +MILITARIZED +MILITARY +MILITARY'S +MILITIA +MILITIA'S +MILITIAMAN +MILITIAMEN +MILITIAS +MILK +MILKED +MILKEN +MILKEN'S +MILKENS +MILKING +MILKMAN +MILKSHAKE +MILKY +MILL +MILL'S +MILLAR +MILLARD +MILLE +MILLED +MILLEN +MILLENIA +MILLENIUM +MILLENNIA +MILLENNIUM +MILLER +MILLER'S +MILLERS +MILLET +MILLI +MILLICENT +MILLICOM +MILLIE +MILLIGAN +MILLIGRAM +MILLIGRAMS +MILLIKEN +MILLILITER +MILLILITERS +MILLIMAN +MILLIMETER +MILLIMETERS +MILLING +MILLION +MILLIONAIRE +MILLIONAIRE'S +MILLIONAIRES +MILLIONS +MILLIONTH +MILLIPORE +MILLIREMS +MILLIS +MILLISECONDS +MILLMAN +MILLON +MILLS +MILLS' +MILLSTEIN +MILLSTONE +MILLTOWN +MILNE +MILNER +MILO +MILOS +MILOSEVIC +MILOSEVIC'S +MILPITAS +MILSTAR +MILSTEAD +MILSTEIN +MILT +MILTON +MILUNOVICH +MILUTINOVIC +MILWAUKEE +MILWAUKEE'S +MIME +MIMI +MIMIC +MIMICKED +MIMICKING +MIMICS +MIMS +MIN +MINA +MINAS +MINCE +MINCED +MIND +MIND'S +MINDANAO +MINDED +MINDEDLY +MINDEDNESS +MINDFUL +MINDING +MINDLESS +MINDLESSLY +MINDS +MINDSET +MINDSZENTY +MINDY +MINE +MINE'S +MINEBEA +MINED +MINEFIELD +MINEFIELDS +MINELLA +MINEOLA +MINER +MINER'S +MINERAL +MINERALS +MINERS +MINERS' +MINES +MINESWEEPERS +MINETA +MINEWORKERS +MING +MINGLE +MINGLED +MINGLING +MINGO +MINGUS +MINH +MINI +MINIATURE +MINIATURES +MINIATURIZATION +MINIATURIZED +MINIBUS +MINICAR +MINICARS +MINICOMPUTER +MINICOMPUTERS +MINIDISC +MINIMAL +MINIMALISM +MINIMALIST +MINIMALLY +MINIMILL +MINIMILLS +MINIMIZE +MINIMIZED +MINIMIZES +MINIMIZING +MINIMUM +MINIMUMS +MINING +MINING'S +MINIONS +MINIS +MINISCRIBE +MINISCRIBE'S +MINISCULE +MINISERIES +MINISKIRT +MINISKIRTS +MINISTER +MINISTER'S +MINISTERIAL +MINISTERING +MINISTERS +MINISTERS' +MINISTRIES +MINISTRY +MINISTRY'S +MINITEL +MINIVAN +MINIVANS +MINK +MINKE +MINKOW +MINKOW'S +MINNEAPOLIS +MINNELLI +MINNESOTA +MINNESOTA'S +MINNESOTANS +MINNETONKA +MINNICK +MINNIE +MINNOW +MINNOWS +MINOLTA +MINOR +MINORCO +MINORCO'S +MINORI +MINORITIES +MINORITY +MINORS +MINORU +MINOT +MINOW +MINOXIDIL +MINPECO +MINSK +MINSKOFF +MINSTAR +MINSTER +MINSTREL +MINT +MINTED +MINTER +MINTIER +MINTON +MINTS +MINTZ +MINUS +MINUSCULE +MINUSES +MINUTE +MINUTEMAN +MINUTEMEN +MINUTES +MINUTES' +MINUTIAE +MINYA +MIO +MIODOWICZ +MIPS +MIR +MIRA +MIRABELLA +MIRACLE +MIRACLES +MIRACULOUS +MIRACULOUSLY +MIRAFLORES +MIRAGE +MIRAMAR +MIRAMAX +MIRANDA +MIRE +MIRECKI +MIRECKI'S +MIRED +MIREILLE +MIRER +MIRIAM +MIRINGOFF +MIRO +MIRON +MIROSLAV +MIRREN +MIRROR +MIRROR'S +MIRRORED +MIRRORING +MIRRORS +MIRTH +MIRZA +MIS +MISADVENTURES +MISAPPLICATION +MISAPPLIED +MISAPPLYING +MISAPPROPRIATED +MISAPPROPRIATING +MISAPPROPRIATION +MISBEGOTTEN +MISBEHAVE +MISBEHAVIOR +MISCALCULATED +MISCALCULATION +MISCALCULATIONS +MISCARRIAGE +MISCARRIAGES +MISCAST +MISCELLANEOUS +MISCELLANY +MISCHARACTERIZED +MISCHIEF +MISCHIEVOUS +MISCOMMUNICATION +MISCONCEPTION +MISCONCEPTIONS +MISCONDUCT +MISCONSTRUED +MISCREANTS +MISCUES +MISDEEDS +MISDEMEANOR +MISDEMEANORS +MISDIAGNOSED +MISDIRECTED +MISERABLE +MISERABLES +MISERABLY +MISERIES +MISERLY +MISERY +MISFIRE +MISFIRED +MISFIT +MISFITS +MISFORTUNE +MISFORTUNES +MISGIVINGS +MISGUIDED +MISHA +MISHANDLED +MISHANDLING +MISHAP +MISHAPS +MISHAWAKA +MISHIMA +MISHMASH +MISIDENTIFIED +MISINFORMATION +MISINFORMED +MISINTERPRET +MISINTERPRETATION +MISINTERPRETED +MISINTERPRETING +MISJUDGED +MISJUDGMENT +MISJUDGMENTS +MISKITO +MISLABELED +MISLABELING +MISLEAD +MISLEADING +MISLEADINGLY +MISLED +MISMANAGED +MISMANAGEMENT +MISMANAGING +MISMATCH +MISMATCHED +MISNOMER +MISOGYNY +MISPERCEPTION +MISPERCEPTIONS +MISPLACED +MISQUOTED +MISREAD +MISREADING +MISREPRESENT +MISREPRESENTATION +MISREPRESENTATIONS +MISREPRESENTED +MISREPRESENTING +MISREPRESENTS +MISS +MISSED +MISSES +MISSHAPEN +MISSILE +MISSILE'S +MISSILES +MISSING +MISSION +MISSION'S +MISSIONARIES +MISSIONARY +MISSIONS +MISSISSAUGA +MISSISSIPPI +MISSISSIPPI'S +MISSISSIPPIANS +MISSIVE +MISSIVES +MISSOULA +MISSOURI +MISSOURI'S +MISSPELLED +MISSPENT +MISSPOKE +MISSTATED +MISSTATEMENT +MISSTATEMENTS +MISSTATES +MISSTATING +MISSTEP +MISSTEPS +MISSY +MIST +MISTAKE +MISTAKEN +MISTAKENLY +MISTAKES +MISTAKING +MISTER +MISTLETOE +MISTOOK +MISTREAT +MISTREATED +MISTREATING +MISTREATMENT +MISTRESS +MISTRESSES +MISTRIAL +MISTRIALS +MISTRUST +MISTRUSTED +MISTS +MISTY +MISUNDERSTAND +MISUNDERSTANDING +MISUNDERSTANDINGS +MISUNDERSTOOD +MISUSE +MISUSED +MISUSING +MITA +MITCH +MITCHEL +MITCHELL +MITCHELL'S +MITCHELSON +MITCHUM +MITE +MITEL +MITES +MITGANG +MITHILESHWAR +MITHUN +MITIGATE +MITIGATED +MITIGATING +MITIGATION +MITNICK +MITNICK'S +MITOFSKY +MITRA +MITSOTAKIS +MITSUBISHI +MITSUBISHI'S +MITSUI +MITSUKOSHI +MITSUZUKA +MITT +MITTAG +MITTENS +MITTERAND +MITTERRAND +MITTERRAND'S +MITTS +MITTY +MITYUNOV +MITZI +MITZNA +MITZVAH +MIX +MIXED +MIXER +MIXERS +MIXES +MIXING +MIXON +MIXTE +MIXTURE +MIXTURES +MIXUP +MIYAKE +MIYAZAKI +MIYAZAWA +MIYAZAWA'S +MIZE +MIZRAHI +MIZUNO +MLADENOV +MLADIC +MLOTOK +MNEMONIC +MO +MOAKLEY +MOAMMAR +MOAN +MOANED +MOANING +MOANS +MOAT +MOATS +MOB +MOBBED +MOBIL +MOBIL'S +MOBILE +MOBILE'S +MOBILITY +MOBILIZATION +MOBILIZE +MOBILIZED +MOBILIZING +MOBIUS +MOBLEY +MOBS +MOBSTER +MOBSTERS +MOBUTU +MOBUTU'S +MOBY +MOCHA +MOCHE +MOCK +MOCKED +MOCKERY +MOCKING +MOCKINGBIRD +MOCKINGLY +MOCKLER +MOCKS +MOD +MODAI +MODALITIES +MODE +MODEL +MODEL'S +MODELED +MODELING +MODELL +MODELO +MODELS +MODEM +MODEMS +MODERATE +MODERATED +MODERATELY +MODERATES +MODERATING +MODERATION +MODERATOR +MODERN +MODERNISM +MODERNIST +MODERNITY +MODERNIZATION +MODERNIZE +MODERNIZED +MODERNIZING +MODES +MODEST +MODESTLY +MODESTO +MODESTY +MODICUM +MODIFICATION +MODIFICATIONS +MODIFIED +MODIFIES +MODIFY +MODIFYING +MODIGLIANI +MODINE +MODJESKI +MODROW +MODROW'S +MODULAR +MODULE +MODULES +MODUS +MODZELEWSKI +MOE +MOELLEMANN +MOELLER +MOET +MOF +MOFFAT +MOFFETT +MOFFETT'S +MOFFITT +MOFFORD +MOFFORD'S +MOGADISHU +MOGADISHU'S +MOGILNY +MOGUL +MOGULS +MOHAIR +MOHAJIR +MOHAJIRS +MOHAMAD +MOHAMED +MOHAMMAD +MOHAMMADI +MOHAMMED +MOHAMMED'S +MOHAN +MOHANDAS +MOHAWK +MOHAWKS +MOHICANS +MOHORITA +MOHR +MOHSEN +MOHTASHEMI +MOI +MOI'S +MOINES +MOIRA +MOISE +MOISES +MOISEYEV +MOIST +MOISTENED +MOISTURE +MOJADDIDI +MOJAVE +MOJO +MOLASSES +MOLD +MOLDAVIA +MOLDAVIA'S +MOLDAVIAN +MOLDAVIANS +MOLDED +MOLDING +MOLDINGS +MOLDOVA +MOLDOVAN +MOLDS +MOLDY +MOLE +MOLECULAR +MOLECULE +MOLECULES +MOLES +MOLEST +MOLESTATION +MOLESTED +MOLESTER +MOLESTERS +MOLESTING +MOLIERE +MOLINA +MOLINARI +MOLINE +MOLITOR +MOLL +MOLLEN +MOLLER +MOLLIFIED +MOLLIFY +MOLLOHAN +MOLLOY +MOLLUSK +MOLLUSKS +MOLLY +MOLNAR +MOLOKAI +MOLONEY +MOLOTOV +MOLPUS +MOLSON +MOLTEN +MOLYBDENUM +MOLYNEAUX +MOM +MOM'S +MOMA +MOMAN +MOMBASA +MOMENT +MOMENT'S +MOMENTARILY +MOMENTARY +MOMENTOUS +MOMENTS +MOMENTUM +MOMMA +MOMMIES +MOMMY +MOMMY'S +MOMPER +MOMS +MON +MONA +MONACO +MONAGHAN +MONAHAN +MONARCH +MONARCH'S +MONARCHIES +MONARCHIST +MONARCHISTS +MONARCHS +MONARCHY +MONASTERIES +MONASTERY +MONASTIC +MONCRIEF +MONDADORI +MONDALE +MONDALE'S +MONDAVI +MONDAY +MONDAY'S +MONDAYS +MONDE +MONDELLO +MONDEO +MONDO +MONDRIAN +MONET +MONET'S +MONETARIST +MONETARY +MONEY +MONEY'S +MONEYED +MONEYLINE +MONEYMAKER +MONEYMAKERS +MONEYMAKING +MONEYWEEK +MONFORT +MONG +MONGER +MONGERING +MONGERS +MONGOL +MONGOLIA +MONGOLIA'S +MONGOLIAN +MONGOLIANS +MONGOLS +MONICA +MONICA'S +MONIED +MONIES +MONIESON +MONIKER +MONIQUE +MONITOR +MONITORED +MONITORING +MONITORS +MONK +MONK'S +MONKEES +MONKEY +MONKEYS +MONKS +MONMOUTH +MONO +MONOCHROMATIC +MONOCHROME +MONOCLONAL +MONOGAMOUS +MONOGAMY +MONOGRAM +MONOLITH +MONOLITHIC +MONOLOGUE +MONOLOGUES +MONONGAHELA +MONOPOLIES +MONOPOLISTIC +MONOPOLIZE +MONOPOLIZED +MONOPOLIZING +MONOPOLY +MONORAIL +MONOTONE +MONOTONOUS +MONOTONY +MONOUNSATURATED +MONOXIDE +MONRO +MONROE +MONROE'S +MONROEVILLE +MONROVIA +MONROVIA'S +MONSANTO +MONSANTO'S +MONSIEUR +MONSIGNOR +MONSOON +MONSTER +MONSTERS +MONSTROSITY +MONSTROUS +MONT +MONTA +MONTAGE +MONTAGNE +MONTAGNIER +MONTAGU +MONTAGUE +MONTALVO +MONTANA +MONTANA'S +MONTAND +MONTANO +MONTAUK +MONTAZERI +MONTCLAIR +MONTE +MONTEBELLO +MONTEDISON +MONTEDISON'S +MONTEFIORE +MONTEGO +MONTEIRO +MONTEL +MONTENEGRINS +MONTENEGRO +MONTEREY +MONTERO +MONTERREY +MONTES +MONTEVIDEO +MONTEZ +MONTEZUMA +MONTGOMERIE +MONTGOMERY +MONTGOMERY'S +MONTH +MONTH'S +MONTHAN +MONTHLONG +MONTHLY +MONTHS +MONTHS' +MONTICELLO +MONTOYA +MONTPELIER +MONTREAL +MONTREAL'S +MONTROSE +MONTROSS +MONTSERRAT +MONTT +MONTVALE +MONTY +MONUMENT +MONUMENTAL +MONUMENTS +MONUS +MONY +MOO +MOOD +MOODS +MOODY +MOODY'S +MOOG +MOON +MOON'S +MOONEY +MOONLIGHT +MOONLIGHTING +MOONLIT +MOONS +MOONSHINE +MOONSTRUCK +MOONVES +MOOR +MOORCO +MOORE +MOORE'S +MOORED +MOORER +MOORES +MOORESTOWN +MOORHEAD +MOORING +MOORINGS +MOORISH +MOORPARK +MOORS +MOOS +MOOSA +MOOSALLY +MOOSE +MOOT +MOP +MOPPED +MOPPING +MOPS +MOR +MOR'S +MORA +MORAGA +MORAINE +MORAL +MORALE +MORALES +MORALIST +MORALISTIC +MORALISTS +MORALITY +MORALIZING +MORALLY +MORALS +MORAN +MORAN'S +MORANIS +MORASS +MORATORIUM +MORATORIUMS +MORAVIA +MORAZAN +MORBID +MORBIDITY +MORDECHAI +MORE +MOREAU +MOREHEAD +MOREHOUSE +MOREIRA +MOREL +MORELAND +MORELLA +MORENO +MOREOVER +MORES +MORET +MOREY +MORGADO +MORGAN +MORGAN'S +MORGANTOWN +MORGENSTERN +MORGENTHAU +MORGENTHAU'S +MORGUE +MORGUES +MORI +MORIAL +MORIARTY +MORIBUND +MORIHIRO +MORILLON +MORIMOTO +MORIN +MORISHITA +MORISON +MORITA +MORITZ +MORIYAMA +MORLEY +MORMON +MORMONS +MORNING +MORNING'S +MORNINGS +MORNINGSTAR +MORNINGSTAR'S +MORO +MOROBE +MOROCCAN +MOROCCANS +MOROCCO +MOROCCO'S +MORON +MORONIC +MORONS +MOROSE +MOROSKY +MOROZOV +MORPHIN +MORPHINE +MORPHING +MORRELL +MORRIE +MORRILL +MORRIS +MORRIS' +MORRIS'S +MORRISON +MORRISON'S +MORRISSEY +MORRISTOWN +MORRO +MORROW +MORRY +MORSE +MORSEL +MORSELS +MORT +MORTAGE +MORTAL +MORTALITY +MORTALLY +MORTALS +MORTAR +MORTARS +MORTEM +MORTENSEN +MORTGAGE +MORTGAGED +MORTGAGES +MORTGAGING +MORTICIAN +MORTIFIED +MORTIMER +MORTIS +MORTON +MORTON'S +MORTUARY +MORVILLO +MOS +MOSAIC +MOSAICS +MOSBACHER +MOSBACHER'S +MOSCONE +MOSCOW +MOSCOW'S +MOSELEY +MOSER +MOSES +MOSHE +MOSHER +MOSHOOD +MOSK +MOSKOS +MOSKOVSKY +MOSKOWITZ +MOSKY +MOSLEM +MOSLEMS +MOSLEY +MOSQUE +MOSQUES +MOSQUITO +MOSQUITOES +MOSS +MOSSAD +MOSSBERG +MOSSER +MOST +MOSTAR +MOSTLY +MOSUL +MOSZKOWSKI +MOTEL +MOTELS +MOTH +MOTHBALL +MOTHBALLED +MOTHBALLING +MOTHBALLS +MOTHER +MOTHER'S +MOTHERHOOD +MOTHERING +MOTHERLAND +MOTHERLESS +MOTHERLY +MOTHERS +MOTHERS' +MOTHS +MOTIF +MOTIFS +MOTION +MOTIONED +MOTIONING +MOTIONLESS +MOTIONS +MOTIVATE +MOTIVATED +MOTIVATES +MOTIVATING +MOTIVATION +MOTIVATIONAL +MOTIVATIONS +MOTIVATOR +MOTIVE +MOTIVES +MOTLEY +MOTO +MOTOR +MOTOR'S +MOTORBIKE +MOTORBIKES +MOTORBOAT +MOTORCADE +MOTORCADES +MOTORCYCLE +MOTORCYCLES +MOTORCYCLIST +MOTORCYCLISTS +MOTOREN +MOTORING +MOTORIST +MOTORISTS +MOTORIZED +MOTORMAN +MOTOROLA +MOTOROLA'S +MOTORS +MOTORS' +MOTORWAY +MOTOSHIMA +MOTOWN +MOTOWN'S +MOTRIN +MOTT +MOTTA +MOTTLED +MOTTO +MOTTOLA +MOTTUS +MOUAWAD +MOULIN +MOULTON +MOULTRIE +MOUND +MOUNDS +MOUNT +MOUNTAIN +MOUNTAIN'S +MOUNTAINEER +MOUNTAINEERING +MOUNTAINEERS +MOUNTAINOUS +MOUNTAINS +MOUNTAINSIDE +MOUNTAINSIDES +MOUNTAINTOP +MOUNTED +MOUNTIE +MOUNTIES +MOUNTING +MOUNTJOY +MOUNTLEIGH +MOUNTS +MOURN +MOURNED +MOURNERS +MOURNFUL +MOURNING +MOURNS +MOUSA +MOUSA'S +MOUSE +MOUSETRAP +MOUSSA +MOUSSE +MOUSTACHE +MOUTH +MOUTHED +MOUTHFUL +MOUTHING +MOUTHPIECE +MOUTHS +MOUTHWASH +MOUTON +MOVABLE +MOVE +MOVEABLE +MOVED +MOVEMENT +MOVEMENT'S +MOVEMENTS +MOVER +MOVERS +MOVES +MOVIE +MOVIE'S +MOVIEGOER +MOVIEGOERS +MOVIEGOING +MOVIEMAKERS +MOVIEMAKING +MOVIES +MOVING +MOVINGLY +MOW +MOWED +MOWER +MOWERS +MOWING +MOWRY +MOXIE +MOYE +MOYER +MOYERS +MOYNIHAN +MOYNIHAN'S +MOZAMBICAN +MOZAMBICANS +MOZAMBIQUE +MOZAMBIQUE'S +MOZART +MOZART'S +MOZDOK +MOZER +MOZER'S +MOZZARELLA +MPG +MPH +MR +MR. +MRAZEK +MRS. +MS. +MSTISLAV +MTEL +MU +MUAMMAR +MUBARAK +MUBARAK'S +MUCH +MUCHA +MUCK +MUCOUS +MUCUS +MUD +MUDD +MUDDIED +MUDDLE +MUDDLED +MUDDLING +MUDDY +MUDGE +MUDSLIDE +MUDSLIDES +MUDSLINGING +MUECKENBERGER +MUELLER +MUENSTER +MUFFIN +MUFFINS +MUFFLE +MUFFLED +MUFFLER +MUFFLERS +MUFTI +MUG +MUGABE +MUGABE'S +MUGGED +MUGGER +MUGGERS +MUGGING +MUGGINGS +MUGGY +MUGS +MUHAMED +MUHAMMAD +MUHAMMAD'S +MUHAMMED +MUIR +MUIRHEAD +MUJAHADEEN +MUJAHEDDIN +MUJAHEDEEN +MUJAHIDEEN +MUKASEY +MUKASSED +MULBERRY +MULCAHY +MULCH +MULDER +MULDOON +MULE +MULES +MULFORD +MULHEREN +MULHEREN'S +MULHOLLAND +MULL +MULLAH +MULLAHS +MULLAN +MULLANE +MULLANEY +MULLED +MULLEN +MULLER +MULLER'S +MULLIGAN +MULLIN +MULLING +MULLINS +MULLIS +MULLS +MULRONEY +MULRONEY'S +MULTI +MULTIBANK +MULTIBILLION +MULTICANDIDATE +MULTICOLORED +MULTICULTURAL +MULTICULTURALISM +MULTIETHNIC +MULTIFACETED +MULTIFAMILY +MULTIFOODS +MULTILATERAL +MULTILATERALISM +MULTILEVEL +MULTILINGUAL +MULTIMEDIA +MULTIMEDIA'S +MULTIMILLION +MULTIMILLIONAIRE +MULTIMILLIONAIRES +MULTINATIONAL +MULTINATIONALS +MULTIPARTY +MULTIPLAYER +MULTIPLE +MULTIPLES +MULTIPLEX +MULTIPLICATION +MULTIPLICITY +MULTIPLIED +MULTIPLIER +MULTIPLIES +MULTIPLY +MULTIPLYING +MULTIPURPOSE +MULTIRACIAL +MULTISTATE +MULTITUDE +MULTITUDES +MULTIYEAR +MULTNOMAH +MUM +MUMBLE +MUMBLED +MUMBLES +MUMBLING +MUMBO +MUMFORD +MUMMIES +MUMMIFIED +MUMMY +MUMPS +MUNCH +MUNCHAUSEN +MUNCHED +MUNCHING +MUNCHKIN +MUNCHKINS +MUNCIE +MUNDANE +MUNDAY +MUNDI +MUNDO +MUNDY +MUNFORD +MUNGER +MUNI +MUNICH +MUNICIPAL +MUNICIPALITIES +MUNICIPALITY +MUNICIPALS +MUNIS +MUNITIONS +MUNIZ +MUNK +MUNNELL +MUNOZ +MUNRO +MUNSON +MUNSTER +MUNTEANU +MUOI +MUPPET +MUPPETS +MURABITO +MURAD +MURAI +MURAKAMI +MURAL +MURALS +MURATA +MURAYAMA +MURAYAMA'S +MURDER +MURDERED +MURDERER +MURDERER'S +MURDERERS +MURDERING +MURDEROUS +MURDERS +MURDOCH +MURDOCH'S +MURDOCK +MURFREESBORO +MURIEL +MURILLO +MURKIER +MURKOWSKI +MURKY +MURMANSK +MURMUR +MURMURED +MURMURS +MURPHREE +MURPHY +MURPHY'S +MURRAH +MURRAY +MURRAY'S +MURRELET +MURRELL +MURROW +MURTHA +MURUROA +MUSA +MUSAVI +MUSAWI +MUSBURGER +MUSCAT +MUSCLE +MUSCLED +MUSCLES +MUSCLING +MUSCOVITE +MUSCOVITES +MUSCULAR +MUSE +MUSED +MUSEE +MUSES +MUSEUM +MUSEUM'S +MUSEUMS +MUSEVENI +MUSGRAVE +MUSH +MUSHER +MUSHERS +MUSHROOM +MUSHROOMED +MUSHROOMING +MUSHROOMS +MUSHY +MUSIAL +MUSIC +MUSIC'S +MUSICAL +MUSICAL'S +MUSICALLY +MUSICALS +MUSICIAN +MUSICIAN'S +MUSICIANS +MUSICIANS' +MUSICIANSHIP +MUSICLAND +MUSICOLOGIST +MUSING +MUSINGS +MUSK +MUSKEGON +MUSKETEERS +MUSKIE +MUSKOGEE +MUSLIM +MUSLIMS +MUSSEL +MUSSELMAN +MUSSELS +MUSSOLINI +MUSSOLINI'S +MUST +MUSTACHE +MUSTACHES +MUSTACHIOED +MUSTAFA +MUSTANG +MUSTANGS +MUSTAPHA +MUSTARD +MUSTER +MUSTERED +MUSTERING +MUSTN'T +MUSTO +MUSTY +MUTANT +MUTANTS +MUTATE +MUTATED +MUTATION +MUTATIONS +MUTE +MUTED +MUTI +MUTILATE +MUTILATED +MUTILATING +MUTILATION +MUTILATIONS +MUTINEERS +MUTINIED +MUTINOUS +MUTINY +MUTO +MUTOMBO +MUTT +MUTTER +MUTTERED +MUTTERING +MUTTERS +MUTTON +MUTUAL +MUTUAL'S +MUTUALLY +MUTUEL +MUTZ +MUZAK +MUZZLE +MUZZLED +MY +MYANMAR +MYCOGEN +MYER +MYERS +MYERS' +MYERS'S +MYERSON +MYERSON'S +MYLAN +MYLAR +MYLES +MYOPIA +MYOPIC +MYOTROPHIN +MYRA +MYRIAD +MYRICK +MYRLIE +MYRNA +MYRON +MYRTLE +MYSELF +MYST +MYSTERIES +MYSTERIOUS +MYSTERIOUSLY +MYSTERY +MYSTIC +MYSTICAL +MYSTICISM +MYSTIFIED +MYSTIFYING +MYSTIQUE +MYTH +MYTHIC +MYTHICAL +MYTHOLOGICAL +MYTHOLOGY +MYTHS +MYUNG +N'DJAMENA +N. +N.'S +N.S +NA +NAB +NABATIYEH +NABBED +NABI +NABIH +NABIL +NABISCO +NABISCO'S +NABLUS +NABOKOV +NABORS +NACCACHE +NACCHIO +NACCO +NACHMAN +NACHOS +NACION +NACIONAL +NACO +NACOGDOCHES +NADA +NADEAU +NADEL +NADER +NADER'S +NADIA +NADINE +NADIR +NADLER +NADU +NAEHRING +NAFTA +NAFTA'S +NAG +NAGANO +NAGASAKI +NAGEL +NAGGED +NAGGING +NAGLE +NAGORNO +NAGOYA +NAGS +NAGUIB +NAGY +NAGY'S +NAH +NAHAR +NAHAS +NAHYAN +NAIDOO +NAIL +NAILED +NAILING +NAILS +NAIM +NAIR +NAIROBI +NAITO +NAIVE +NAIVELY +NAIVETE +NAJAF +NAJI +NAJIB +NAJIB'S +NAJIBULLAH +NAKAGAWA +NAKAJIMA +NAKAMURA +NAKANO +NAKAO +NAKASONE +NAKASONE'S +NAKATANI +NAKAYAMA +NAKED +NAKHICHEVAN +NALCAP +NALCO +NALL +NALTREXONE +NAM +NAMATH +NAME +NAME'S +NAMED +NAMELESS +NAMELY +NAMEPLATE +NAMEPLATES +NAMES +NAMESAKE +NAMIBIA +NAMIBIA'S +NAMIBIAN +NAMIBIANS +NAMING +NAMPHY +NAMPHY'S +NAN +NANA +NANCE +NANCY +NANCY'S +NANG +NANJING +NANKING +NANNIES +NANNY +NANOGRAMS +NANTUCKET +NAOMI +NAP +NAPA +NAPALM +NAPERVILLE +NAPHTHA +NAPIER +NAPKIN +NAPKINS +NAPLES +NAPOLEON +NAPOLEON'S +NAPOLEONIC +NAPOLI +NAPOLITANO +NAPPING +NAPROSYN +NAPS +NAQVI +NARASIMHA +NARCISSISM +NARCISSISTIC +NARCO +NARCONON +NARCOTIC +NARCOTICS +NARITA +NARRAGANSETT +NARRATE +NARRATED +NARRATES +NARRATING +NARRATION +NARRATIVE +NARRATIVES +NARRATOR +NARRATOR'S +NARROW +NARROWED +NARROWER +NARROWEST +NARROWING +NARROWLY +NARROWS +NARUHITO +NARY +NASA +NASA'S +NASAL +NASCAR +NASCENT +NASDAQ +NASDAQ'S +NASH +NASHUA +NASHVILLE +NASHVILLE'S +NASIR +NASLUND +NASON +NASR +NASRALLAH +NASRIN +NASSAR +NASSAU +NASSER +NASSER'S +NASSERITE +NAST +NAST'S +NASTIER +NASTIEST +NASTINESS +NASTY +NAT +NATAL +NATALE +NATALIA +NATALIE +NATALYA +NATAN +NATASHA +NATCHER +NATCHEZ +NATE +NATH +NATHALIE +NATHAN +NATHAN'S +NATHANIEL +NATHANSON +NATICK +NATION +NATION'S +NATIONAL +NATIONAL'S +NATIONALE +NATIONALISM +NATIONALIST +NATIONALISTIC +NATIONALISTS +NATIONALITIES +NATIONALITY +NATIONALIZATION +NATIONALIZE +NATIONALIZED +NATIONALIZING +NATIONALLY +NATIONALS +NATIONHOOD +NATIONS +NATIONS' +NATIONSBANC +NATIONSBANK +NATIONSBANK'S +NATIONWIDE +NATIONWIDE'S +NATIVE +NATIVES +NATIVIDAD +NATIVIST +NATIVITY +NATO +NATO'S +NATRONE +NATSIOS +NATTY +NATURAL +NATURALIST +NATURALISTIC +NATURALISTS +NATURALIZATION +NATURALIZED +NATURALLY +NATURE +NATURE'S +NATURED +NATUREDLY +NATWEST +NATWEST'S +NAUGHT +NAUGHTON +NAUGHTY +NAUMAN +NAUSEA +NAUSEAM +NAUSEATED +NAUSEATING +NAUSEOUS +NAUTICAL +NAUTILUS +NAVA +NAVAJO +NAVAJOS +NAVAL +NAVARRE +NAVARRO +NAVE +NAVEL +NAVELLIER +NAVIES +NAVIGABLE +NAVIGATE +NAVIGATED +NAVIGATING +NAVIGATION +NAVIGATIONAL +NAVIGATOR +NAVIGATORS +NAVISTAR +NAVISTAR'S +NAVRATILOVA +NAVRATILOVA'S +NAVSTAR +NAVY +NAVY'S +NAWAZ +NAY +NAYEF +NAYLOR +NAYS +NAYSAYERS +NAZARBAYEV +NAZARETH +NAZER +NAZI +NAZIONALE +NAZIS +NAZIS' +NAZISM +NCUBE +NE +NE'ER +NEAL +NEALE +NEANDERTHAL +NEAPOLITAN +NEAR +NEARBY +NEARED +NEARER +NEAREST +NEARING +NEARLY +NEARS +NEARSIGHTED +NEARSIGHTEDNESS +NEARY +NEAS +NEAT +NEATLY +NEATNESS +NEBRASKA +NEBRASKA'S +NEBRASKANS +NEBULOUS +NECESSARILY +NECESSARY +NECESSITATE +NECESSITATED +NECESSITATING +NECESSITIES +NECESSITY +NECK +NECKED +NECKLACE +NECKLACES +NECKLACING +NECKLINE +NECKS +NECKTIE +NECKTIES +NECO +NECROSIS +NECTAR +NECTARINES +NED +NEDERLAND +NEDERLANDEN +NEDERLANDER +NEDERLANDSE +NEDLLOYD +NEDVED +NEE +NEED +NEEDED +NEEDHAM +NEEDHAM'S +NEEDIEST +NEEDING +NEEDLE +NEEDLED +NEEDLEMAN +NEEDLEPOINT +NEEDLES +NEEDLESS +NEEDLESSLY +NEEDLING +NEEDN'T +NEEDS +NEEDY +NEEL +NEELY +NEEMAN +NEESON +NEFARIOUS +NEFF +NEFTEGORSK +NEGARA +NEGATE +NEGATED +NEGATES +NEGATING +NEGATIVE +NEGATIVELY +NEGATIVES +NEGATIVISM +NEGATIVITY +NEGEV +NEGLECT +NEGLECTED +NEGLECTING +NEGLECTS +NEGLIGENCE +NEGLIGENT +NEGLIGENTLY +NEGLIGIBLE +NEGOTATIONS +NEGOTIABLE +NEGOTIATE +NEGOTIATED +NEGOTIATES +NEGOTIATING +NEGOTIATION +NEGOTIATIONS +NEGOTIATOR +NEGOTIATORS +NEGOTIATORS' +NEGRO +NEGROES +NEGRONI +NEGROPONTE +NEGROS +NEHRU +NEIDL +NEIGHBOR +NEIGHBOR'S +NEIGHBORHOOD +NEIGHBORHOOD'S +NEIGHBORHOODS +NEIGHBORING +NEIGHBORLINESS +NEIGHBORLY +NEIGHBORS +NEIGHBORS' +NEIGHBOURING +NEIGHBOURS +NEIGHMOND +NEIL +NEILL +NEILSON +NEIMAN +NEISSE +NEITHER +NEKOOSA +NELL +NELLCOR +NELLIE +NELLIGAN +NELLIS +NELSON +NELSON'S +NEMATODES +NEMESIS +NEMETH +NEMOURS +NEO +NEOAX +NEOCLASSICAL +NEON +NEONATAL +NEOPHYTE +NEOPHYTES +NEORX +NEPAL +NEPAL'S +NEPALESE +NEPALI +NEPHEW +NEPHEWS +NEPOTISM +NEPSZABADSAG +NEPTUNE +NEPTUNE'S +NERCO +NERD +NERDS +NERDY +NERO +NERUDA +NERVE +NERVES +NERVOUS +NERVOUSLY +NERVOUSNESS +NES +NESBIT +NESBITT +NESHOBA +NESMITH +NESS +NEST +NESTEA +NESTING +NESTLE +NESTLE'S +NESTLED +NESTOR +NESTS +NET +NET'S +NETANYAHU +NETANYAHU'S +NETCOM +NETHER +NETHERCUTT +NETHERLANDS +NETHERLANDS' +NETHERWORLD +NETS +NETS' +NETSCAPE +NETSCAPE'S +NETTED +NETTING +NETTLES +NETTLESOME +NETTLETON +NETWARE +NETWORK +NETWORK'S +NETWORKED +NETWORKING +NETWORKS +NETWORKS' +NETZARIM +NEUBERGER +NEUE +NEUES +NEUFELD +NEUFELD'S +NEUHARTH +NEUHAUS +NEUKIRCHEN +NEUKOM +NEUMAN +NEUMANN +NEUPOGEN +NEURAL +NEURO +NEUROFIBROMATOSIS +NEUROLOGICAL +NEUROLOGIST +NEUROLOGISTS +NEUROLOGY +NEURON +NEURONS +NEUROSCIENCE +NEUROSCIENTIST +NEUROSES +NEUROSIS +NEUROSURGEON +NEUROSURGEONS +NEUROSURGERY +NEUROTIC +NEUSTADT +NEUTERED +NEUTRAL +NEUTRALITY +NEUTRALIZE +NEUTRALIZED +NEUTRALIZING +NEUTRINOS +NEUTROGENA +NEUTRON +NEUTRONS +NEUWIRTH +NEVADA +NEVADA'S +NEVER +NEVERLAND +NEVERS +NEVERTHELESS +NEVES +NEVILLE +NEVIN +NEVINS +NEVIS +NEW +NEWALL +NEWARK +NEWARK'S +NEWBERG +NEWBERRY +NEWBORN +NEWBORNS +NEWBRIDGE +NEWBURGH +NEWBURY +NEWBY +NEWCASTLE +NEWCOMB +NEWCOMER +NEWCOMERS +NEWELL +NEWELL'S +NEWER +NEWEST +NEWFANGLED +NEWFIELD +NEWFOUND +NEWFOUNDLAND +NEWHALL +NEWHART +NEWHOUSE +NEWINGTON +NEWKIRK +NEWLY +NEWLYWED +NEWLYWEDS +NEWMAN +NEWMAN'S +NEWMARK +NEWMONT +NEWMONT'S +NEWNESS +NEWPARK +NEWPORT +NEWPORT'S +NEWRY +NEWS +NEWS' +NEWS'S +NEWSCAST +NEWSCASTER +NEWSCASTERS +NEWSCASTS +NEWSDAY +NEWSDAY'S +NEWSGROUPS +NEWSHOUR +NEWSLETTER +NEWSLETTER'S +NEWSLETTERS +NEWSMAGAZINE +NEWSMAGAZINES +NEWSMAKER +NEWSMAN +NEWSMEN +NEWSOM +NEWSOME +NEWSPAPER +NEWSPAPER'S +NEWSPAPERMAN +NEWSPAPERS +NEWSPAPERS' +NEWSPRINT +NEWSREEL +NEWSREELS +NEWSROOM +NEWSROOM'S +NEWSROOMS +NEWSSTAND +NEWSSTANDS +NEWSWEEK +NEWSWEEK'S +NEWSWEEKLY +NEWSWIRE +NEWSWIRES +NEWSWOMAN +NEWSWORTHY +NEWT +NEWT'S +NEWTON +NEWTON'S +NEWTOWN +NEWTS +NEXGEN +NEXIS +NEXT +NEXT'S +NEXTEL +NEXTEL'S +NEXTSTEP +NEXUS +NEY +NEZ +NG +NGA +NGO +NGOC +NGUYEN +NHAN +NI +NIACIN +NIAGARA +NIBBLE +NIBBLED +NIBBLES +NIBBLING +NICARAGUA +NICARAGUA'S +NICARAGUAN +NICARAGUANS +NICE +NICELY +NICER +NICEST +NICETIES +NICHE +NICHES +NICHOL +NICHOLAS +NICHOLAS'S +NICHOLLS +NICHOLS +NICHOLS' +NICHOLS'S +NICHOLSON +NICHOLSON'S +NICK +NICK'S +NICKED +NICKEL +NICKELL +NICKELL'S +NICKELODEON +NICKELS +NICKERSON +NICKLAUS +NICKLES +NICKNAME +NICKNAMED +NICKNAMES +NICKS +NICKY +NICO +NICODEMO +NICODERM +NICOL +NICOLA +NICOLAE +NICOLAI +NICOLAS +NICOLAUS +NICOLE +NICOLE'S +NICOLL +NICOSIA +NICOSKI +NICOTINE +NICU +NIDAL +NIDAL'S +NIE +NIECE +NIECES +NIEKRO +NIELS +NIELSEN +NIELSEN'S +NIELSENS +NIELSON +NIEMAN +NIEMIRA +NIETO +NIETZSCHE +NIEVES +NIFTY +NIGEL +NIGER +NIGERIA +NIGERIA'S +NIGERIAN +NIGERIANS +NIGGER +NIGGERS +NIGH +NIGHT +NIGHT'S +NIGHTCLUB +NIGHTCLUBS +NIGHTERS +NIGHTFALL +NIGHTGOWN +NIGHTHORSE +NIGHTINGALE +NIGHTINGALES +NIGHTLIFE +NIGHTLINE +NIGHTLINE'S +NIGHTLY +NIGHTMARE +NIGHTMARES +NIGHTMARISH +NIGHTS +NIGHTSPOT +NIGHTSTICK +NIGHTSTICKS +NIGHTTIME +NIGUEL +NIHILISM +NIHON +NIIGATA +NIKE +NIKE'S +NIKES +NIKI +NIKITA +NIKKEI +NIKKEI'S +NIKKI +NIKKO +NIKKO'S +NIKOLA +NIKOLAI +NIKON +NIKOS +NIL +NILE +NILES +NILLY +NILS +NILSON +NILSSON +NIMBA +NIMBLE +NIMBLY +NIMEIRI +NIMITZ +NIMOY +NIMROD +NIMRODI +NINA +NINE +NINE'S +NINERS +NINERS' +NINES +NINETEEN +NINETEENTH +NINETIES +NINETIETH +NINETY +NINETY'S +NING +NINH +NINJA +NINO +NINTENDO +NINTENDO'S +NINTH +NIP +NIPPED +NIPPER +NIPPING +NIPPLE +NIPPLES +NIPPON +NIPPONDENSO +NIR +NIRO +NIRVANA +NISBET +NISHI +NISHIMURA +NISKANEN +NISSAN +NISSAN'S +NISSEN +NISSHIN +NISSHO +NISSIM +NIT +NITA +NITE +NITPICKING +NITRATE +NITRATES +NITRIC +NITRO +NITROGEN +NITROUS +NITTANY +NITTY +NITZE +NIVEN +NIWA +NIX +NIXDORF +NIXED +NIXON +NIXON'S +NIZAR +NIZHNY +NKOMO +NO +NOAH +NOAH'S +NOAM +NOB +NOBEL +NOBEL'S +NOBILITY +NOBLE +NOBLE'S +NOBLEMAN +NOBLES +NOBLY +NOBODY +NOBODY'S +NOBORU +NOBREGA +NOBUO +NOCERA +NOCTURNAL +NOD +NODDED +NODDING +NODE +NODES +NODS +NOE +NOEL +NOELLE +NOFZIGER +NOFZIGER'S +NOGALES +NOGUCHI +NOIR +NOISE +NOISES +NOISIER +NOISILY +NOISY +NOKIA +NOLAN +NOLAND +NOLL +NOLTE +NOM +NOMAD +NOMADIC +NOMADS +NOME +NOMENCLATURE +NOMENKLATURA +NOMI +NOMINAL +NOMINALLY +NOMINATE +NOMINATED +NOMINATES +NOMINATING +NOMINATION +NOMINATIONS +NOMINEE +NOMINEE'S +NOMINEES +NOMO +NOMO'S +NOMURA +NOMURA'S +NON +NONACCRUAL +NONALCOHOLIC +NONALIGNED +NONBANK +NONBINDING +NONBUILDING +NONCALLABLE +NONCASH +NONCHALANCE +NONCHALANT +NONCHALANTLY +NONCOMMERCIAL +NONCOMMITTAL +NONCOMMUNIST +NONCOMPETE +NONCOMPETITIVE +NONCOMPLIANCE +NONCONTRACT +NONCONTROVERSIAL +NONCORE +NONCUMULATIVE +NONDEDUCTIBLE +NONDEFENSE +NONDESCRIPT +NONDISCRIMINATION +NONDISCRIMINATORY +NONDURABLE +NONDURABLES +NONE +NONECONOMIC +NONESSENTIAL +NONETHELESS +NONEXCLUSIVE +NONEXECUTIVE +NONEXISTENT +NONFARM +NONFAT +NONFERROUS +NONFICTION +NONFINANCIAL +NONGOVERNMENT +NONGOVERNMENTAL +NONINFLATIONARY +NONINTEREST +NONLETHAL +NONMEMBERS +NONMILITARY +NONNUCLEAR +NONOPERATING +NONPARTISAN +NONPAYMENT +NONPERFORMING +NONPOLITICAL +NONPRESCRIPTION +NONPROFIT +NONPROFITS +NONPROLIFERATION +NONPUBLIC +NONQUALIFIED +NONRECURRING +NONREFUNDABLE +NONREGULATED +NONRESIDENT +NONRESIDENTIAL +NONSECTARIAN +NONSENSE +NONSENSICAL +NONSMOKER +NONSMOKERS +NONSMOKING +NONSTOP +NONSTRATEGIC +NONTOXIC +NONTRADITIONAL +NONUNION +NONUTILITY +NONVIOLENCE +NONVIOLENT +NONVOTING +NONWHITE +NOODLE +NOODLES +NOOK +NOOKS +NOON +NOONAN +NOONE +NOONTIME +NOOR +NOORANI +NOORDA +NOOSE +NOPE +NOR +NORA +NORAD +NORANDA +NORANDA'S +NORBERT +NORBERTO +NORCAL +NORCEN +NORCO +NORCROSS +NORD +NORDBANKEN +NORDBERG +NORDEN +NORDIC +NORDICTRACK +NORDIQUES +NORDMANN +NORDSTROM +NORDSTROM'S +NOREEN +NOREIGA +NORFOLK +NORIEGA +NORIEGA'S +NORILSK +NORIO +NORM +NORMA +NORMAL +NORMALCY +NORMALITY +NORMALIZATION +NORMALIZE +NORMALIZED +NORMALIZING +NORMALLY +NORMAN +NORMAN'S +NORMANDIE +NORMANDY +NORMING +NORMS +NORODOM +NORPLANT +NORQUIST +NORRIS +NORRISTOWN +NORSE +NORSK +NORSKE +NORSTAR +NORTE +NORTEK +NORTH +NORTH'S +NORTHAMPTON +NORTHBOUND +NORTHBROOK +NORTHEAST +NORTHEAST'S +NORTHEASTERN +NORTHERLY +NORTHERN +NORTHERN'S +NORTHERNERS +NORTHERNMOST +NORTHFIELD +NORTHGATE +NORTHINGTON +NORTHRIDGE +NORTHROP +NORTHROP'S +NORTHRUP +NORTHSIDE +NORTHSTAR +NORTHWARD +NORTHWEST +NORTHWEST'S +NORTHWESTERLY +NORTHWESTERN +NORTHWESTERN'S +NORTON +NORTON'S +NORVILLE +NORWALK +NORWAY +NORWAY'S +NORWEGIAN +NORWEGIANS +NORWELL +NORWEST +NORWEST'S +NORWICH +NORWITZ +NORWOOD +NOSAIR +NOSAIR'S +NOSE +NOSED +NOSEDIVE +NOSEDIVED +NOSES +NOSTALGIA +NOSTALGIC +NOSTRA +NOSTRADAMUS +NOSTRIL +NOSTRILS +NOSY +NOT +NOTABLE +NOTABLES +NOTABLY +NOTARIES +NOTARIZED +NOTARY +NOTATION +NOTATIONS +NOTCH +NOTCHED +NOTCHES +NOTE +NOTE'S +NOTEBOOK +NOTEBOOKS +NOTED +NOTEHOLDERS +NOTEPAD +NOTES +NOTEWORTHY +NOTHIN' +NOTHING +NOTHING'S +NOTHINGS +NOTICE +NOTICEABLE +NOTICEABLY +NOTICED +NOTICES +NOTICIAS +NOTICING +NOTIFICATION +NOTIFICATIONS +NOTIFIED +NOTIFIES +NOTIFY +NOTIFYING +NOTIMEX +NOTING +NOTION +NOTIONS +NOTIS +NOTO +NOTORIETY +NOTORIOUS +NOTORIOUSLY +NOTRE +NOTS +NOTTINGHAM +NOTWITHSTANDING +NOUN +NOURI +NOURISH +NOURISHED +NOURISHING +NOURISHMENT +NOUVEAU +NOUVELLE +NOV +NOVA +NOVA'S +NOVACARE +NOVACEK +NOVAK +NOVAK'S +NOVATO +NOVEL +NOVEL'S +NOVELIST +NOVELISTS +NOVELL +NOVELL'S +NOVELLA +NOVELLO +NOVELLUS +NOVELS +NOVELTIES +NOVELTY +NOVEMBER +NOVEMBER'S +NOVERCO +NOVGOROD +NOVI +NOVICE +NOVICES +NOVICK +NOVIKOV +NOVO +NOVOPHARM +NOVOSIBIRSK +NOVOSTI +NOVOTNA +NOVY +NOW +NOW'S +NOWA +NOWADAYS +NOWAK +NOWHERE +NOXELL +NOXIOUS +NOYCE +NOYES +NOZZLE +NOZZLES +NU +NUANCE +NUANCED +NUANCES +NUB +NUCLEAR +NUCLEI +NUCLEUS +NUCOR +NUCOR'S +NUDE +NUDELMAN +NUDES +NUDGE +NUDGED +NUDGING +NUDIE +NUDIST +NUDISTS +NUDITY +NUEVA +NUEVO +NUGENT +NUGGET +NUGGETS +NUISANCE +NUISANCES +NUJOMA +NUKE +NUKES +NULL +NULLIFICATION +NULLIFIED +NULLIFY +NULLIFYING +NUMAC +NUMB +NUMBED +NUMBER +NUMBERED +NUMBERING +NUMBERS +NUMBING +NUMBNESS +NUMERAL +NUMERALS +NUMERIC +NUMERICAL +NUMERICALLY +NUMEROUS +NUMISMATIC +NUMMI +NUN +NUNCIO +NUNEZ +NUNN +NUNN'S +NUNS +NUPRIN +NUPTIAL +NUPTIALS +NUR +NUREMBERG +NUREMBURG +NUREYEV +NURSE +NURSE'S +NURSED +NURSERIES +NURSERY +NURSES +NURSES' +NURSING +NURSULTAN +NURTURE +NURTURED +NURTURES +NURTURING +NUSBAUM +NUSSBAUM +NUSSBAUM'S +NUSSEIBEH +NUSSLE +NUT +NUTCRACKER +NUTLEY +NUTMEG +NUTRASWEET +NUTRASWEET'S +NUTRI +NUTRIA +NUTRIENT +NUTRIENTS +NUTRITION +NUTRITIONAL +NUTRITIONALLY +NUTRITIONIST +NUTRITIONISTS +NUTRITIOUS +NUTS +NUTSHELL +NUTT +NUTTER +NUTTY +NUVEEN +NUYS +NYACK +NYCOR +NYE +NYERERE +NYERS +NYET +NYLON +NYMEX +NYNEX +NYNEX'S +NYUNT +NZO +O' +O'BANNON +O'BARRY +O'BEIRNE +O'BRIAN +O'BRIEN +O'BRIEN'S +O'CLOCK +O'CONNELL +O'CONNOR +O'CONNOR'S +O'DEA +O'DELL +O'DONNELL +O'DOWD +O'DWYER +O'FARRELL +O'FERRELL +O'GRADY +O'GRADY'S +O'HAIR +O'HANLON +O'HARA +O'HARE +O'KANE +O'KEEFE +O'KEEFFE +O'KICKI +O'LAUGHLIN +O'LEARY +O'LEARY'S +O'MALLEY +O'MEARA +O'MELVENY +O'NEAL +O'NEAL'S +O'NEIL +O'NEILL +O'NEILL'S +O'REILLY +O'ROURKE +O'SHEA +O'SULLIVAN +O'TOOLE +O. +O.'S +O.S +OAHU +OAK +OAK'S +OAKAR +OAKBROOK +OAKDALE +OAKES +OAKLAND +OAKLAND'S +OAKLEY +OAKLEY'S +OAKMONT +OAKRIDGE +OAKS +OAKVILLE +OAKWOOD +OAR +OARS +OASIS +OAT +OATES +OATH +OATHS +OATMEAL +OATS +OAXACA +OB +OBANDO +OBASANJO +OBEDIENCE +OBEDIENT +OBEID +OBEID'S +OBELISK +OBER +OBERG +OBERLIN +OBERLY +OBERMAIER +OBERSTAR +OBERWEIS +OBESE +OBESITY +OBEY +OBEYED +OBEYING +OBEYS +OBFUSCATION +OBIE +OBISPO +OBITUARIES +OBITUARY +OBJECT +OBJECTED +OBJECTING +OBJECTION +OBJECTIONABLE +OBJECTIONS +OBJECTIVE +OBJECTIVELY +OBJECTIVES +OBJECTIVITY +OBJECTOR +OBJECTORS +OBJECTS +OBLIGATE +OBLIGATED +OBLIGATES +OBLIGATION +OBLIGATIONS +OBLIGATORY +OBLIGE +OBLIGED +OBLIGES +OBLIGING +OBLIGINGLY +OBLIQUE +OBLIQUELY +OBLITERATE +OBLITERATED +OBLITERATING +OBLIVION +OBLIVIOUS +OBLONG +OBNOXIOUS +OBOE +OBOTE +OBRINSKY +OBSCENE +OBSCENITIES +OBSCENITY +OBSCURE +OBSCURED +OBSCURES +OBSCURING +OBSCURITY +OBSERVABLE +OBSERVANCE +OBSERVANCES +OBSERVANT +OBSERVATION +OBSERVATIONS +OBSERVATORIES +OBSERVATORY +OBSERVATORY'S +OBSERVE +OBSERVED +OBSERVER +OBSERVERS +OBSERVES +OBSERVING +OBSESSED +OBSESSION +OBSESSIONS +OBSESSIVE +OBSESSIVELY +OBSOLESCENCE +OBSOLETE +OBSTACLE +OBSTACLES +OBSTETRICAL +OBSTETRICIAN +OBSTETRICIANS +OBSTETRICS +OBSTINATE +OBSTRUCT +OBSTRUCTED +OBSTRUCTING +OBSTRUCTION +OBSTRUCTIONISM +OBSTRUCTIONIST +OBSTRUCTIONISTS +OBSTRUCTIONS +OBSTRUCTIVE +OBTAIN +OBTAINABLE +OBTAINED +OBTAINING +OBTAINS +OBTUSE +OBUCHI +OBVIATE +OBVIOUS +OBVIOUSLY +OCA +OCALA +OCAMPO +OCCASION +OCCASIONAL +OCCASIONALLY +OCCASIONED +OCCASIONS +OCCHETTO +OCCIDENTAL +OCCIDENTAL'S +OCCULT +OCCUPANCY +OCCUPANT +OCCUPANTS +OCCUPATION +OCCUPATIONAL +OCCUPATIONS +OCCUPIED +OCCUPIERS +OCCUPIES +OCCUPY +OCCUPYING +OCCUR +OCCURED +OCCURING +OCCURRED +OCCURRENCE +OCCURRENCES +OCCURRING +OCCURS +OCEAN +OCEAN'S +OCEANFRONT +OCEANIA +OCEANIC +OCEANOGRAPHER +OCEANOGRAPHIC +OCEANOGRAPHY +OCEANS +OCEANSIDE +OCELOT +OCHIRBAT +OCHOA +OCHS +OCHSENSCHLAGER +OCT +OCTAGON +OCTAGONAL +OCTANE +OCTAVE +OCTAVIO +OCTEL +OCTOBER +OCTOBER'S +OCTOGENARIAN +OCTOPUS +ODA +ODD +ODDBALL +ODDEST +ODDITIES +ODDITY +ODDLY +ODDS +ODDSMAKERS +ODE +ODED +ODELL +ODEN +ODEON +ODER +ODESSA +ODIER +ODIOUS +ODOM +ODOMETER +ODOMETERS +ODOR +ODORLESS +ODORS +ODYSSEY +ODYSSEY'S +OEDIPUS +OEUVRE +OF +OFF +OFFBEAT +OFFENCES +OFFEND +OFFENDED +OFFENDER +OFFENDERS +OFFENDING +OFFENDS +OFFENSE +OFFENSES +OFFENSIVE +OFFENSIVELY +OFFENSIVES +OFFER +OFFER'S +OFFERED +OFFERING +OFFERING'S +OFFERINGS +OFFERMAN +OFFERS +OFFHAND +OFFICAL +OFFICALS +OFFICE +OFFICE'S +OFFICEHOLDER +OFFICEHOLDERS +OFFICEMAX +OFFICER +OFFICER'S +OFFICERS +OFFICERS' +OFFICES +OFFICIAL +OFFICIAL'S +OFFICIALDOM +OFFICIALLY +OFFICIALS +OFFICIALS' +OFFICIATE +OFFICIATED +OFFICIATING +OFFING +OFFS +OFFSEASON +OFFSET +OFFSETS +OFFSETTING +OFFSHOOT +OFFSHOOTS +OFFSHORE +OFFSPRING +OFFSTAGE +OFFUTT +OFT +OFTEN +OFTENTIMES +OGATA +OGAWA +OGDEN +OGILVIE +OGILVY +OGILVY'S +OGLE +OGLETHORPE +OGLETREE +OGONI +OGONYOK +OGORODNIKOV +OGRE +OH +OHGA +OHIO +OHIO'S +OHLMEYER +OHLONE +OHM +OHS +OIL +OIL'S +OILED +OILER +OILERS +OILERS' +OILFIELD +OILFIELDS +OILMAN +OILMEN +OILS +OILSEED +OILSEEDS +OILY +OINTMENT +OJAI +OJEDA +OK +OKA +OKADA +OKAMOTO +OKAY +OKEECHOBEE +OKI +OKINAWA +OKINAWAN +OKINAWANS +OKLAHOMA +OKLAHOMA'S +OKLAHOMAN +OKLAHOMANS +OKRA +OKSANA +OKUDA +OKUN +OKUNO +OKURA +OKWU +OL +OL' +OLAF +OLAJUWON +OLATHE +OLAV +OLAZABAL +OLD +OLD'S +OLDAKER +OLDE +OLDEN +OLDENBURG +OLDER +OLDEST +OLDHAM +OLDIES +OLDMAN +OLDS +OLDSMOBILE +OLDSMOBILE'S +OLDSMOBILES +OLE +OLECHOWSKI +OLEG +OLESTRA +OLFACTORY +OLGA +OLICK +OLIGARCHY +OLIGOPOLY +OLIN +OLIPHANT +OLIVA +OLIVARES +OLIVE +OLIVEIRA +OLIVER +OLIVER'S +OLIVERA +OLIVES +OLIVETTI +OLIVETTI'S +OLIVIA +OLIVIER +OLIVIER'S +OLLER +OLLIE +OLMERT +OLMOS +OLMSTEAD +OLMSTED +OLNEY +OLOF +OLONGAPO +OLSEN +OLSEN'S +OLSHAN +OLSHER +OLSON +OLSON'S +OLSTEN +OLSZEWSKI +OLYMPIA +OLYMPIAD +OLYMPIAN +OLYMPIANS +OLYMPIC +OLYMPICS +OLYMPUS +OM +OMAHA +OMAHA'S +OMAN +OMAN'S +OMANI +OMAR +OMARSKA +OMBUDSMAN +OMEGA +OMELET +OMEN +OMENS +OMER +OMINOUS +OMINOUSLY +OMISSION +OMISSIONS +OMIT +OMITS +OMITTED +OMITTING +OMNI +OMNIBUS +OMNICARE +OMNICOM +OMNICOM'S +OMNIPOTENT +OMNIPRESENT +OMNISCIENT +ON +ONASSIS +ONASSIS' +ONBOARD +ONCE +ONCOGENE +ONCOLOGIST +ONCOLOGY +ONCOMING +ONCOR +ONE +ONE'S +ONECOMM +ONEIDA +ONEOK +ONEROUS +ONES +ONESELF +ONETIME +ONEX +ONG +ONGOING +ONGPIN +ONION +ONIONS +ONIZUKA +ONLINE +ONLINE'S +ONLOOKER +ONLOOKERS +ONLY +ONO +ONODA +ONOFRE +ONONDAGA +ONOUE +ONS +ONSCREEN +ONSET +ONSHORE +ONSLAUGHT +ONSTAGE +ONTARIO +ONTARIO'S +ONTIVEROS +ONTO +ONUS +ONWARD +ONYSZKIEWICZ +ONYX +OO +OOH +OOMPH +OOPS +OOZE +OOZED +OOZES +OOZING +OP +OP'S +OPA +OPAL +OPAQUE +OPEC +OPEC'S +OPEL +OPEL'S +OPEN +OPENED +OPENER +OPENERS +OPENING +OPENINGS +OPENLY +OPENNESS +OPENS +OPERA +OPERA'S +OPERABLE +OPERANDI +OPERAS +OPERATE +OPERATED +OPERATES +OPERATIC +OPERATING +OPERATION +OPERATION'S +OPERATIONAL +OPERATIONALLY +OPERATIONS +OPERATIVE +OPERATIVES +OPERATOR +OPERATOR'S +OPERATORS +OPERATORS' +OPERETTA +OPHELIA +OPHTHALMIC +OPHTHALMOLOGIST +OPHTHALMOLOGISTS +OPHTHALMOLOGY +OPIATE +OPIATES +OPINED +OPINES +OPINION +OPINIONATED +OPINIONS +OPIUM +OPPENHEIM +OPPENHEIMER +OPPENHEIMER'S +OPPONENT +OPPONENT'S +OPPONENTS +OPPONENTS' +OPPORTUNE +OPPORTUNISM +OPPORTUNIST +OPPORTUNISTIC +OPPORTUNISTS +OPPORTUNITIES +OPPORTUNITY +OPPOSE +OPPOSED +OPPOSES +OPPOSING +OPPOSITE +OPPOSITES +OPPOSITION +OPPOSITION'S +OPPRESS +OPPRESSED +OPPRESSING +OPPRESSION +OPPRESSIVE +OPPRESSOR +OPPRESSORS +OPRAH +OPRY +OPRYLAND +OPS +OPT +OPTED +OPTIC +OPTICAL +OPTICS +OPTIMA +OPTIMAL +OPTIMISM +OPTIMIST +OPTIMISTIC +OPTIMISTICALLY +OPTIMISTS +OPTIMIZE +OPTIMUM +OPTING +OPTION +OPTIONAL +OPTIONED +OPTIONS +OPTOMETRIST +OPTOMETRISTS +OPTS +OPULENCE +OPULENT +OPUS +OR +ORACLE +ORACLE'S +ORAL +ORALLY +ORAN +ORANGE +ORANGEBURG +ORANGEMEN +ORANGES +ORANGUTAN +ORANGUTANS +ORATION +ORATOR +ORATORICAL +ORATORIO +ORATORY +ORBEN +ORBISON +ORBIT +ORBITAL +ORBITED +ORBITER +ORBITING +ORBITS +ORCA +ORCHARD +ORCHARDS +ORCHESTRA +ORCHESTRA'S +ORCHESTRAL +ORCHESTRAS +ORCHESTRATE +ORCHESTRATED +ORCHESTRATING +ORCHESTRATION +ORCHID +ORCHIDS +ORD +ORDAIN +ORDAINED +ORDAINING +ORDEAL +ORDEALS +ORDER +ORDER'S +ORDERED +ORDERING +ORDERLY +ORDERS +ORDINANCE +ORDINANCES +ORDINARIES +ORDINARILY +ORDINARY +ORDINATION +ORDNANCE +ORDONEZ +ORE +OREGANO +OREGON +OREGON'S +OREGONIAN +OREGONIANS +OREJUELA +OREL +OREM +OREN +ORENTHAL +OREO +OREOS +ORES +ORGAN +ORGANIC +ORGANICALLY +ORGANISATION +ORGANISM +ORGANISMS +ORGANIST +ORGANIZATION +ORGANIZATION'S +ORGANIZATIONAL +ORGANIZATIONS +ORGANIZATIONS' +ORGANIZE +ORGANIZED +ORGANIZER +ORGANIZERS +ORGANIZES +ORGANIZING +ORGANS +ORGANZA +ORGASM +ORGINALLY +ORGY +ORIENT +ORIENTAL +ORIENTATION +ORIENTATIONS +ORIENTED +ORIGIN +ORIGINAL +ORIGINALITY +ORIGINALLY +ORIGINALS +ORIGINATE +ORIGINATED +ORIGINATES +ORIGINATING +ORIGINATION +ORIGINATIONS +ORIGINATOR +ORIGINATORS +ORIGINS +ORIN +ORINDA +ORIOLE +ORIOLES +ORIOLES' +ORION +ORION'S +ORISSA +ORKIN +ORLANDO +ORLANDO'S +ORLEANS +ORLEANS' +ORLOFF +ORLOV +ORLY +ORMOND +ORNAMENT +ORNAMENTAL +ORNAMENTATION +ORNAMENTS +ORNATE +ORNERY +ORNISH +ORNSTEIN +ORO +OROVILLE +OROZCO +ORPHAN +ORPHANAGE +ORPHANAGES +ORPHANED +ORPHANS +ORPHEUM +ORPHEUS +ORR +ORR'S +ORRICK +ORRIN +ORSON +ORTEGA +ORTEGA'S +ORTHO +ORTHODOX +ORTHODOXY +ORTHOPEDIC +ORTHOPEDIST +ORTIZ +ORTNER +ORTON +ORVILLE +ORVIS +ORWELL +ORWELL'S +ORWELLIAN +ORYX +ORZA +OSAGE +OSAKA +OSAKE +OSAMA +OSAMU +OSBORN +OSBORNE +OSBORNE'S +OSBOURNE +OSCAR +OSCAR'S +OSCARS +OSCEOLA +OSGOOD +OSH +OSHA +OSHA'S +OSHAWA +OSHKOSH +OSIJEK +OSKAR +OSLIN +OSLO +OSMAN +OSMOND +OSMOSIS +OSORIO +OSPREY +OSSETIA +OSSIFIED +OST +OSTANKINO +OSTENSIBLE +OSTENSIBLY +OSTENTATIOUS +OSTEOARTHRITIS +OSTEOPOROSIS +OSTER +OSTERHOLM +OSTERTAG +OSTIN +OSTRACISM +OSTRACIZED +OSTRANDER +OSTRICH +OSTRICHES +OSTROW +OSUNA +OSVALDO +OSWALD +OSWALD'S +OSWEGO +OT +OTA +OTAIBA +OTELLO +OTERO +OTH +OTHELLO +OTHER +OTHER'S +OTHERS +OTHERS' +OTHERWISE +OTHERWORLDLY +OTIS +OTSEGO +OTT +OTTAWA +OTTAWA'S +OTTAWAY +OTTER +OTTERS +OTTO +OTTOMAN +OTTUMWA +OU +OUCH +OUELLET +OUGHT +OUI +OUNCE +OUNCES +OUR +OURS +OURSELF +OURSELVES +OUST +OUSTANDING +OUSTED +OUSTER +OUSTING +OUT +OUTAGE +OUTAGES +OUTBACK +OUTBID +OUTBIDDING +OUTBOARD +OUTBOUND +OUTBREAK +OUTBREAKS +OUTBUILDINGS +OUTBURST +OUTBURSTS +OUTCAST +OUTCASTS +OUTCOME +OUTCOMES +OUTCRIES +OUTCRY +OUTDATED +OUTDID +OUTDISTANCED +OUTDO +OUTDONE +OUTDOOR +OUTDOORS +OUTDOORSMAN +OUTER +OUTERWEAR +OUTFIELD +OUTFIELDER +OUTFIELDERS +OUTFIT +OUTFITS +OUTFITTED +OUTFITTERS +OUTFITTING +OUTFLANK +OUTFLANKED +OUTFLOW +OUTFLOWS +OUTGOING +OUTGREW +OUTGROW +OUTGROWN +OUTGROWTH +OUTGUNNED +OUTHOUSE +OUTHOUSES +OUTING +OUTINGS +OUTLANDISH +OUTLAST +OUTLASTED +OUTLAW +OUTLAWED +OUTLAWING +OUTLAWS +OUTLAY +OUTLAYS +OUTLET +OUTLETS +OUTLINE +OUTLINED +OUTLINES +OUTLINING +OUTLIVE +OUTLIVED +OUTLOOK +OUTLOOKS +OUTLYING +OUTMANEUVER +OUTMANEUVERED +OUTMANNED +OUTMODED +OUTNUMBER +OUTNUMBERED +OUTNUMBERING +OUTPACE +OUTPACED +OUTPACES +OUTPACING +OUTPATIENT +OUTPATIENTS +OUTPERFORM +OUTPERFORMED +OUTPERFORMING +OUTPLACEMENT +OUTPLAYED +OUTPOLLED +OUTPOST +OUTPOSTS +OUTPOURING +OUTPUT +OUTRAGE +OUTRAGED +OUTRAGEOUS +OUTRAGEOUSLY +OUTRAGES +OUTRAN +OUTREACH +OUTRIGHT +OUTRUN +OUTS +OUTSCORED +OUTSELL +OUTSELLING +OUTSELLS +OUTSET +OUTSHINE +OUTSHOT +OUTSIDE +OUTSIDER +OUTSIDERS +OUTSIZED +OUTSKIRTS +OUTSMART +OUTSOLD +OUTSOURCING +OUTSPEND +OUTSPENT +OUTSPOKEN +OUTSPOKENNESS +OUTSTANDING +OUTSTRETCHED +OUTSTRIP +OUTSTRIPPED +OUTSTRIPPING +OUTSTRIPS +OUTTA +OUTTAKES +OUTVOTED +OUTWARD +OUTWARDLY +OUTWEIGH +OUTWEIGHED +OUTWEIGHS +OUTWIT +OUVEA +OVAL +OVARIAN +OVARIES +OVARY +OVATION +OVATIONS +OVEN +OVENS +OVER +OVERABUNDANCE +OVERACTIVE +OVERALL +OVERALLOTMENT +OVERALLOTMENTS +OVERALLS +OVERARCHING +OVERBEARING +OVERBILLED +OVERBILLING +OVERBLOWN +OVERBOARD +OVERBOOKED +OVERBOUGHT +OVERBROAD +OVERBUILDING +OVERBUILT +OVERBURDENED +OVERBY +OVERCAME +OVERCAPACITY +OVERCAST +OVERCHARGE +OVERCHARGED +OVERCHARGES +OVERCHARGING +OVERCOAT +OVERCOATS +OVERCOME +OVERCOMES +OVERCOMING +OVERCONFIDENCE +OVERCONFIDENT +OVERCOOKED +OVERCROWDED +OVERCROWDING +OVERDO +OVERDOING +OVERDONE +OVERDOSE +OVERDOSED +OVERDOSES +OVERDRAFT +OVERDRAFTS +OVERDRAWN +OVERDRIVE +OVERDUE +OVEREATING +OVERESTIMATE +OVERESTIMATED +OVERESTIMATING +OVEREXPOSED +OVEREXPOSURE +OVEREXTENDED +OVERFELT +OVERFISHING +OVERFLIGHTS +OVERFLOW +OVERFLOWED +OVERFLOWING +OVERFLOWS +OVERFUNDED +OVERGROWN +OVERHANG +OVERHANGING +OVERHAUL +OVERHAULED +OVERHAULING +OVERHAULS +OVERHEAD +OVERHEAR +OVERHEARD +OVERHEARING +OVERHEAT +OVERHEATED +OVERHEATING +OVERJOYED +OVERKILL +OVERLAND +OVERLAP +OVERLAPPED +OVERLAPPING +OVERLAPS +OVERLAY +OVERLOAD +OVERLOADED +OVERLOADING +OVERLOOK +OVERLOOKED +OVERLOOKING +OVERLOOKS +OVERLORDS +OVERLY +OVERMATCHED +OVERNIGHT +OVERPAID +OVERPASS +OVERPASSES +OVERPAY +OVERPAYING +OVERPAYMENT +OVERPAYMENTS +OVERPLAYED +OVERPOPULATED +OVERPOPULATION +OVERPOWER +OVERPOWERED +OVERPOWERING +OVERPRICED +OVERPRODUCING +OVERPRODUCTION +OVERQUALIFIED +OVERRAN +OVERRATED +OVERREACHED +OVERREACHING +OVERREACT +OVERREACTED +OVERREACTING +OVERREACTION +OVERREGULATION +OVERRIDDEN +OVERRIDE +OVERRIDES +OVERRIDING +OVERRIPE +OVERRODE +OVERRULE +OVERRULED +OVERRULING +OVERRUN +OVERRUNNING +OVERRUNS +OVERS +OVERSAW +OVERSEAS +OVERSEE +OVERSEEING +OVERSEEN +OVERSEER +OVERSEERS +OVERSEES +OVERSELLING +OVERSHADOW +OVERSHADOWED +OVERSHADOWING +OVERSHADOWS +OVERSHOOT +OVERSHOT +OVERSIGHT +OVERSIMPLIFICATION +OVERSIMPLIFIED +OVERSIZE +OVERSIZED +OVERSLEPT +OVERSOLD +OVERSPENDING +OVERSTAFFED +OVERSTATE +OVERSTATED +OVERSTATEMENT +OVERSTATES +OVERSTATING +OVERSTEPPED +OVERSTEPPING +OVERSTREET +OVERSTUFFED +OVERSUBSCRIBED +OVERSUPPLY +OVERT +OVERTAKE +OVERTAKEN +OVERTAKING +OVERTAXED +OVERTHREW +OVERTHROW +OVERTHROWING +OVERTHROWN +OVERTIME +OVERTLY +OVERTON +OVERTONES +OVERTOOK +OVERTOWN +OVERTURE +OVERTURES +OVERTURN +OVERTURNED +OVERTURNING +OVERTURNS +OVERUSE +OVERUSED +OVERVALUATION +OVERVALUED +OVERVIEW +OVERWEIGHT +OVERWHELM +OVERWHELMED +OVERWHELMING +OVERWHELMINGLY +OVERWHELMS +OVERWORK +OVERWORKED +OVERWROUGHT +OVERZEALOUS +OVITZ +OVITZ'S +OVULATION +OW +OWADA +OWE +OWED +OWEN +OWEN'S +OWENS +OWENS' +OWENSBORO +OWES +OWING +OWINGS +OWL +OWL'S +OWLS +OWN +OWNED +OWNER +OWNER'S +OWNERS +OWNERS' +OWNERSHIP +OWNING +OWNS +OX +OXDON +OXEN +OXFAM +OXFORD +OXFORD'S +OXIDATION +OXIDE +OXIDES +OXIDIZER +OXLEY +OXNARD +OXY +OXYGEN +OXYGENATED +OXYMORON +OY +OYSTER +OYSTERS +OZ +OZAL +OZAL'S +OZARK +OZARKS +OZAWA +OZONE +OZZIE +P. +P.'S +P.S +PA +PAAR +PABLO +PABST +PAC +PAC'S +PACCAR +PACE +PACED +PACEMAKER +PACEMAKERS +PACER +PACERS +PACES +PACESETTER +PACHECO +PACHINKO +PACIFIC +PACIFIC'S +PACIFICA +PACIFICARE +PACIFICATION +PACIFICORP +PACIFICORP'S +PACIFIER +PACIFISM +PACIFIST +PACIFISTS +PACIFY +PACING +PACINO +PACK +PACKAGE +PACKAGE'S +PACKAGED +PACKAGER +PACKAGERS +PACKAGES +PACKAGING +PACKARD +PACKARD'S +PACKED +PACKER +PACKER'S +PACKERS +PACKERS' +PACKET +PACKETS +PACKING +PACKS +PACKWOOD +PACKWOOD'S +PACO +PACOIMA +PACS +PACT +PACT'S +PACTEL +PACTEL'S +PACTS +PAD +PADDED +PADDEN +PADDIES +PADDING +PADDINGTON +PADDLE +PADDLED +PADDLES +PADDLING +PADDOCK +PADDY +PADGETT +PADILLA +PADLOCK +PADLOCKED +PADRE +PADRES +PADRES' +PADS +PADUA +PADUCAH +PAEAN +PAEZ +PAFF +PAGAN +PAGANO +PAGANS +PAGE +PAGE'S +PAGEANT +PAGEANT'S +PAGEANTRY +PAGEANTS +PAGED +PAGEMAKER +PAGER +PAGERS +PAGES +PAGING +PAGLIA +PAGODA +PAGONIS +PAHLAVI +PAID +PAIGE +PAIL +PAILIN +PAILS +PAIN +PAINE +PAINED +PAINEWEBBER +PAINEWEBBER'S +PAINFUL +PAINFULLY +PAINKILLER +PAINKILLERS +PAINLESS +PAINLESSLY +PAINS +PAINSTAKING +PAINSTAKINGLY +PAINT +PAINTBRUSH +PAINTED +PAINTER +PAINTER'S +PAINTERLY +PAINTERS +PAINTING +PAINTINGS +PAINTS +PAIR +PAIR'S +PAIRED +PAIRING +PAIRINGS +PAIRS +PAIS +PAISLEY +PAISLEY'S +PAJAMA +PAJAMAS +PAJARO +PAK +PAKISTAN +PAKISTAN'S +PAKISTANI +PAKISTANIS +PAKRAC +PAL +PALACE +PALACE'S +PALACES +PALACH +PALACIO +PALACIOS +PALAIS +PALANCE +PALAPA +PALASH +PALATABLE +PALATE +PALATES +PALATIAL +PALATINATE +PALATINE +PALATKA +PALAU +PALAWAN +PALAZZO +PALCA +PALE +PALED +PALEONTOLOGIST +PALEONTOLOGISTS +PALEONTOLOGY +PALERMO +PALES +PALESTINE +PALESTINIAN +PALESTINIANS +PALESTINIANS' +PALETTE +PALEY +PALIMONY +PALISADES +PALL +PALLADIUM +PALLBEARERS +PALLET +PALLETS +PALLID +PALLONE +PALM +PALMA +PALMDALE +PALME +PALME'S +PALMER +PALMER'S +PALMEROLA +PALMETTO +PALMIERI +PALMINTERI +PALMOLIVE +PALMS +PALO +PALOMA +PALOMAR +PALOMINO +PALOS +PALPABLE +PALS +PALSY +PALTROW +PALTRY +PALUMBIS +PALUMBO +PAM +PAMELA +PAMPA +PAMPER +PAMPERED +PAMPERING +PAMPERS +PAMPHLET +PAMPHLETS +PAMPLONA +PAMYAT +PAN +PAN'S +PANACEA +PANACHE +PANAMA +PANAMA'S +PANAMANIAN +PANAMANIANS +PANAMSAT +PANASONIC +PANCAKE +PANCAKES +PANCHEN +PANCHO +PANCREAS +PANCREATIC +PANDA +PANDAS +PANDEMIC +PANDEMONIUM +PANDER +PANDERING +PANDICK +PANDORA'S +PANDORI +PANE +PANEL +PANEL'S +PANELED +PANELING +PANELIST +PANELISTS +PANELS +PANES +PANETTA +PANETTA'S +PANG +PANGS +PANHANDLE +PANHANDLE'S +PANHANDLER +PANHANDLERS +PANHANDLING +PANHELLENIC +PANIC +PANICKED +PANICKING +PANICKY +PANICS +PANISSE +PANKAU +PANKIN +PANKKI +PANKY +PANMUNJOM +PANNED +PANNELL +PANNING +PANOPLY +PANORAMA +PANORAMIC +PANOS +PANS +PANSOPHIC +PANT +PANTERA'S +PANTEX +PANTHEON +PANTHER +PANTHERS +PANTIES +PANTING +PANTOMIME +PANTRIES +PANTRY +PANTS +PANTY +PANTYHOSE +PANZA +PANZER +PAO +PAOLI +PAOLO +PAP +PAPA +PAPACY +PAPAL +PAPANDREOU +PAPANDREOU'S +PAPARAZZI +PAPAYA +PAPE +PAPER +PAPER'S +PAPERBACK +PAPERBACKS +PAPERBOARD +PAPERED +PAPERLESS +PAPERS +PAPERS' +PAPERWORK +PAPERWORKERS +PAPIER +PAPILLON +PAPP +PAPPAS +PAPRIKA +PAPUA +PAPYRUS +PAQUETTE +PAR +PARA +PARABLE +PARACHUTE +PARACHUTED +PARACHUTES +PARACHUTING +PARACHUTISTS +PARADE +PARADED +PARADES +PARADIGM +PARADING +PARADISE +PARADISO +PARADOX +PARADOXES +PARADOXICAL +PARADOXICALLY +PARADYNE +PARAGON +PARAGRAPH +PARAGRAPHS +PARAGUAY +PARAGUAY'S +PARAGUAYAN +PARAGUAYANS +PARAISO +PARALEGAL +PARALEGALS +PARALLEL +PARALLELED +PARALLELING +PARALLELS +PARALYMPIC +PARALYSIS +PARALYZE +PARALYZED +PARALYZING +PARAMAX +PARAMEDIC +PARAMEDICS +PARAMETER +PARAMETERS +PARAMETRIC +PARAMILITARIES +PARAMILITARY +PARAMOUNT +PARAMOUNT'S +PARAMUS +PARANA +PARANOIA +PARANOID +PARANORMAL +PARAPHERNALIA +PARAPHRASE +PARAPHRASED +PARAPHRASING +PARAPLEGIC +PARASITE +PARASITES +PARASITIC +PARATHION +PARATROOP +PARATROOPER +PARATROOPERS +PARATROOPS +PARC +PARCEL +PARCELED +PARCELING +PARCELLS +PARCELS +PARCHED +PARCHMENT +PARDEE +PARDO +PARDON +PARDONED +PARDONING +PARDONS +PARE +PARED +PAREDES +PAREN +PARENT +PARENT'S +PARENTAGE +PARENTAL +PARENTHESES +PARENTHOOD +PARENTING +PARENTS +PARENTS' +PARFUMS +PARGESA +PARI +PARIAH +PARIAHS +PARIBAS +PARIMUTUEL +PARING +PARIS +PARIS' +PARIS'S +PARISH +PARISHES +PARISHIONER +PARISHIONERS +PARISI +PARISIAN +PARISIANS +PARITIES +PARITY +PARIZEAU +PARK +PARK'S +PARKA +PARKAS +PARKE +PARKED +PARKER +PARKER'S +PARKERSBURG +PARKFIELD +PARKIN +PARKING +PARKINSON +PARKINSON'S +PARKLAND +PARKMAN +PARKS +PARKS' +PARKSIDE +PARKWAY +PARLANCE +PARLAY +PARLAYED +PARLETT +PARLEY +PARLIAMENT +PARLIAMENT'S +PARLIAMENTARIAN +PARLIAMENTARIANS +PARLIAMENTARY +PARLIAMENTS +PARLOR +PARLORS +PARMA +PARMESAN +PARNELL +PARNES +PAROCHIAL +PARODIED +PARODIES +PARODY +PAROLE +PAROLED +PAROLEE +PAROLEES +PAROLES +PARQUET +PARR +PARRA +PARRETTI +PARRETTI'S +PARRILLO +PARRIS +PARRISH +PARROT +PARROTS +PARROTT +PARRY +PARS +PARSIPPANY +PARSKY +PARSLEY +PARSON +PARSONAGE +PARSONS +PART +PARTAKE +PARTED +PARTHENON +PARTI +PARTIAL +PARTIALLY +PARTICIPANT +PARTICIPANTS +PARTICIPANTS' +PARTICIPATE +PARTICIPATED +PARTICIPATES +PARTICIPATING +PARTICIPATION +PARTICIPATIONS +PARTICIPATORY +PARTICLE +PARTICLES +PARTICULAR +PARTICULARLY +PARTICULARS +PARTICULARY +PARTICULATE +PARTICULATES +PARTIED +PARTIES +PARTIES' +PARTING +PARTISAN +PARTISANS +PARTISANSHIP +PARTITION +PARTITIONED +PARTITIONING +PARTITIONS +PARTLY +PARTNER +PARTNER'S +PARTNERED +PARTNERING +PARTNERS +PARTNERS' +PARTNERSHIP +PARTNERSHIP'S +PARTNERSHIPS +PARTNERSHIPS' +PARTON +PARTRIDGE +PARTS +PARTY +PARTY'S +PARTYGOERS +PARTYING +PAS +PASADENA +PASCAGOULA +PASCAL +PASCO +PASCOE +PASCUAL +PASEO +PASHA +PASHAYAN +PASO +PASO'S +PASOK +PASQUA +PASQUALE +PASS +PASSABLE +PASSAGE +PASSAGES +PASSAGEWAY +PASSAGEWAYS +PASSAIC +PASSAT +PASSBOOK +PASSE +PASSED +PASSEL +PASSENGER +PASSENGER'S +PASSENGERS +PASSENGERS' +PASSER +PASSERBY +PASSERS +PASSERSBY +PASSES +PASSING +PASSION +PASSIONATE +PASSIONATELY +PASSIONS +PASSIVE +PASSIVELY +PASSIVITY +PASSOVER +PASSPORT +PASSPORTS +PASSWORD +PASSWORDS +PAST +PASTA +PASTAS +PASTE +PASTED +PASTEL +PASTELS +PASTER +PASTERNAK +PASTEUR +PASTEURIZED +PASTICHE +PASTIME +PASTIMES +PASTING +PASTOR +PASTOR'S +PASTORA +PASTORAL +PASTORE +PASTORS +PASTRAMI +PASTRANA +PASTRIES +PASTRY +PASTS +PASTURE +PASTURES +PAT +PAT'S +PATAGONIA +PATAKI +PATAKI'S +PATCH +PATCHED +PATCHES +PATCHING +PATCHWORK +PATCHY +PATCO +PATE +PATEL +PATENT +PATENTED +PATENTING +PATENTLY +PATENTS +PATERNAL +PATERNALISM +PATERNALISTIC +PATERNITY +PATERNO +PATERSON +PATH +PATHANS +PATHE +PATHE'S +PATHETIC +PATHETICALLY +PATHFINDER +PATHMARK +PATHOGENS +PATHOLOGICAL +PATHOLOGIES +PATHOLOGIST +PATHOLOGISTS +PATHOLOGY +PATHOS +PATHS +PATHWAY +PATHWAYS +PATIENCE +PATIENT +PATIENT'S +PATIENTLY +PATIENTS +PATIENTS' +PATINA +PATINKIN +PATINO +PATIO +PATIOS +PATLEX +PATON +PATRIARCA +PATRIARCH +PATRIARCHAL +PATRIARCHS +PATRICE +PATRICIA +PATRICIAN +PATRICIO +PATRICK +PATRICK'S +PATRICOF +PATRIMONY +PATRIOT +PATRIOT'S +PATRIOTIC +PATRIOTISM +PATRIOTS +PATRIOTS' +PATROL +PATROL'S +PATROLLED +PATROLLING +PATROLMAN +PATROLMEN +PATROLMEN'S +PATROLS +PATRON +PATRONAGE +PATRONIZE +PATRONIZED +PATRONIZING +PATRONS +PATS +PATSY +PATT +PATTAYA +PATTED +PATTEN +PATTEN'S +PATTER +PATTERN +PATTERNED +PATTERNS +PATTERSON +PATTERSON'S +PATTI +PATTIES +PATTILLO +PATTING +PATTISON +PATTON +PATTON'S +PATTY +PATUXENT +PAUCITY +PAUL +PAUL'S +PAULA +PAULETTE +PAULEY +PAULI +PAULINA +PAULINE +PAULING +PAULO +PAULSEN +PAULSON +PAULUS +PAULY +PAUPER +PAUPERS +PAUSE +PAUSED +PAUSES +PAUSING +PAVAROTTI +PAVE +PAVED +PAVEL +PAVELIC +PAVEMENT +PAVES +PAVILION +PAVILIONS +PAVIN +PAVING +PAVLOV +PAW +PAWLAK +PAWLAWSKI +PAWN +PAWNS +PAWNSHOP +PAWNSHOPS +PAWS +PAWTUCKET +PAX +PAXON +PAXSON +PAXTON +PAY +PAYABLE +PAYBACK +PAYCHECK +PAYCHECKS +PAYCHEX +PAYDAY +PAYE +PAYER +PAYERS +PAYETTE +PAYING +PAYLESS +PAYLOAD +PAYLOADS +PAYMASTER +PAYMENT +PAYMENTS +PAYNE +PAYOFF +PAYOFFS +PAYOLA +PAYOUT +PAYOUTS +PAYROLL +PAYROLLS +PAYS +PAYSON +PAYTON +PAZ +PAZIENZA +PAZNER +PDVSA +PE +PEA +PEABODY +PEABODY'S +PEACE +PEACEABLE +PEACEABLY +PEACEFUL +PEACEFULLY +PEACEKEEPER +PEACEKEEPERS +PEACEKEEPING +PEACEMAKER +PEACEMAKERS +PEACEMAKING +PEACETIME +PEACH +PEACHES +PEACHTREE +PEACOCK +PEACOCKS +PEAIRS +PEAK +PEAKED +PEAKING +PEAKS +PEALE +PEANUT +PEANUTS +PEAR +PEARCE +PEARL +PEARLE +PEARLMAN +PEARLS +PEARLSTEIN +PEARLSTINE +PEARLY +PEARMAN +PEARS +PEARSON +PEARSON'S +PEARY +PEARY'S +PEAS +PEASANT +PEASANTRY +PEASANTS +PEASANTS' +PEASE +PEAT +PEAT'S +PEBBLE +PEBBLES +PECAN +PECANS +PECHINEY +PECHORA +PECK +PECK'S +PECKHAM +PECKING +PECOS +PECULIAR +PECULIARITIES +PECULIARLY +PEDAL +PEDALED +PEDALING +PEDALS +PEDDLE +PEDDLED +PEDDLER +PEDDLERS +PEDDLES +PEDDLING +PEDERSEN +PEDERSON +PEDESTAL +PEDESTALS +PEDESTRIAN +PEDESTRIANS +PEDIATRIC +PEDIATRICIAN +PEDIATRICIANS +PEDIATRICS +PEDIGREE +PEDOPHILE +PEDOPHILES +PEDOPHILIA +PEDRO +PEE +PEEBLES +PEEK +PEEKED +PEEKING +PEEKS +PEEKSKILL +PEEL +PEELED +PEELER +PEELING +PEELS +PEEP +PEEPING +PEER +PEERAGE +PEERED +PEERING +PEERLESS +PEERS +PEETE +PEEVE +PEEVED +PEG +PEGASUS +PEGGED +PEGGING +PEGGY +PEGS +PEI +PEJORATIVE +PEKIN +PEKING +PELAEZ +PELE +PELED +PELHAM +PELICAN +PELICANS +PELL +PELLE +PELLEGRINI +PELLEGRINO +PELLET +PELLETIER +PELLETREAU +PELLETS +PELLICANO +PELOSI +PELT +PELTED +PELTIER +PELTING +PELTON +PELTS +PELTZ +PELVIC +PELVIS +PEMBERTON +PEMBROKE +PEMEX +PEMEX'S +PEN +PEN'S +PENA +PENA'S +PENAL +PENALIZE +PENALIZED +PENALIZES +PENALIZING +PENALTIES +PENALTY +PENANCE +PENANG +PENCE +PENCHANT +PENCIL +PENCILED +PENCILS +PENDANT +PENDERGRASS +PENDING +PENDLETON +PENDLEY +PENDULUM +PENELOPE +PENETRATE +PENETRATED +PENETRATES +PENETRATING +PENETRATION +PENFIELD +PENG +PENGUIN +PENGUINS +PENH +PENH'S +PENICILLIN +PENICK +PENILE +PENINSULA +PENINSULA'S +PENINSULAR +PENIS +PENISES +PENITENT +PENITENTIARIES +PENITENTIARY +PENMAN +PENN +PENN'S +PENNANT +PENNANTS +PENNED +PENNER +PENNEY +PENNEY'S +PENNIES +PENNILESS +PENNIMAN +PENNING +PENNINGTON +PENNSAUKEN +PENNSYLVANIA +PENNSYLVANIA'S +PENNSYLVANIANS +PENNWALT +PENNWALT'S +PENNY +PENNZOIL +PENNZOIL'S +PENOBSCOT +PENROD +PENRY +PENS +PENSACOLA +PENSION +PENSIONER +PENSIONERS +PENSIONS +PENSIVE +PENSKE +PENT +PENTA +PENTAGON +PENTAGON'S +PENTAMIDINE +PENTECOSTAL +PENTECOSTALS +PENTHOUSE +PENTIUM +PENTIUMS +PENTLAND +PENULTIMATE +PEONIES +PEOPLE +PEOPLE'S +PEOPLED +PEOPLES +PEOPLES' +PEORIA +PEP +PEPCID +PEPE +PEPIN +PEPPER +PEPPER'S +PEPPERDINE +PEPPERED +PEPPERELL +PEPPERELL'S +PEPPERIDGE +PEPPERING +PEPPERMINT +PEPPERONI +PEPPERS +PEPPERY +PEPPY +PEPSI +PEPSI'S +PEPSICO +PEPSICO'S +PEPTIC +PEPTIDE +PEPTO +PEQUOT +PEQUOTS +PER +PERA +PERALTA +PERATA +PERATIS +PERCE +PERCEIVE +PERCEIVED +PERCEIVES +PERCEIVING +PERCENT +PERCENTAGE +PERCENTAGES +PERCENTILE +PERCEPTIBLE +PERCEPTION +PERCEPTIONS +PERCEPTIVE +PERCH +PERCHED +PERCHES +PERCHLORATE +PERCIVAL +PERCOLATE +PERCOLATING +PERCS +PERCUSSION +PERCUSSIONIST +PERCY +PERDUE +PERE +PEREGRINE +PEREIRA +PERELLA +PERELMAN +PERELMAN'S +PEREMPTORY +PERENNIAL +PERENNIALLY +PERENNIALS +PERES +PERES' +PERES'S +PERESTROIKA +PERETZ +PEREZ +PEREZ'S +PERFECT +PERFECTED +PERFECTING +PERFECTION +PERFECTIONIST +PERFECTLY +PERFILIEV +PERFORATED +PERFORM +PERFORMA +PERFORMANCE +PERFORMANCES +PERFORMED +PERFORMER +PERFORMER'S +PERFORMERS +PERFORMING +PERFORMS +PERFUME +PERFUMED +PERFUMES +PERFUNCTORY +PERGAMON +PERHAPS +PERI +PERIGNON +PERIL +PERILOUS +PERILOUSLY +PERILS +PERIMETER +PERIMETERS +PERINI +PERIOD +PERIOD'S +PERIODIC +PERIODICAL +PERIODICALLY +PERIODICALS +PERIODS +PERIPATETIC +PERIPHERAL +PERIPHERALLY +PERIPHERALS +PERIPHERY +PERISCOPE +PERISH +PERISHABLE +PERISHED +PERITO +PERJURED +PERJURY +PERK +PERKED +PERKIN +PERKING +PERKINS +PERKS +PERKY +PERLE +PERLIS +PERLMAN +PERLMUTTER +PERM +PERMAFROST +PERMANENCE +PERMANENT +PERMANENTE +PERMANENTLY +PERMEATE +PERMEATED +PERMEATES +PERMIAN +PERMISSIBLE +PERMISSION +PERMISSIVE +PERMISSIVENESS +PERMIT +PERMITS +PERMITTED +PERMITTING +PERMUTATIONS +PERNELL +PERNICIOUS +PERNOD +PERO +PERON +PERONI +PERONIST +PERONISTS +PEROT +PEROT'S +PEROXIDE +PERPENDICULAR +PERPETRATE +PERPETRATED +PERPETRATING +PERPETRATOR +PERPETRATORS +PERPETUAL +PERPETUALLY +PERPETUATE +PERPETUATED +PERPETUATES +PERPETUATING +PERPETUATION +PERPETUITY +PERPICH +PERPLEXED +PERPLEXING +PERQUISITES +PERRIER +PERRIER'S +PERRIGO +PERRIN +PERRITT +PERRY +PERRY'S +PERRYMAN +PERSECUTE +PERSECUTED +PERSECUTING +PERSECUTION +PERSECUTIONS +PERSEPTIVE +PERSEVERANCE +PERSEVERE +PERSEVERED +PERSHARE +PERSHING +PERSIA +PERSIAN +PERSIANS +PERSIST +PERSISTED +PERSISTENCE +PERSISTENT +PERSISTENTLY +PERSISTING +PERSISTS +PERSON +PERSON'S +PERSONA +PERSONABLE +PERSONAE +PERSONAL +PERSONALITIES +PERSONALITY +PERSONALIZE +PERSONALIZED +PERSONALLY +PERSONALS +PERSONAS +PERSONIFICATION +PERSONIFIED +PERSONIFIES +PERSONIFY +PERSONNEL +PERSONS +PERSPECTIVE +PERSPECTIVES +PERSPIRATION +PERSSON +PERSUADE +PERSUADED +PERSUADES +PERSUADING +PERSUASION +PERSUASIONS +PERSUASIVE +PERSUASIVELY +PERT +PERTAIN +PERTAINED +PERTAINING +PERTAINS +PERTAMINA +PERTH +PERTINENT +PERTURBED +PERTUSSIS +PERU +PERU'S +PERUSE +PERUSING +PERUVIAN +PERUVIANS +PERVADE +PERVADED +PERVADES +PERVADING +PERVASIVE +PERVASIVENESS +PERVERSE +PERVERSELY +PERVERSION +PERVERT +PERVERTED +PESCH +PESCI +PESETA +PESETAS +PESHAWAR +PESKY +PESO +PESO'S +PESOS +PESSIMISM +PESSIMIST +PESSIMISTIC +PESSIMISTS +PEST +PESTERED +PESTERING +PESTICIDE +PESTICIDES +PESTO +PESTS +PET +PET'S +PETAL +PETALS +PETALUMA +PETAR +PETE +PETE'S +PETER +PETER'S +PETERBOROUGH +PETERED +PETERPAUL +PETERS +PETERSBURG +PETERSEN +PETERSON +PETERSON'S +PETIONVILLE +PETIT +PETITE +PETITION +PETITIONED +PETITIONER +PETITIONERS +PETITIONING +PETITIONS +PETR +PETRA +PETRAKOV +PETRE +PETRI +PETRIE +PETRIFIED +PETRINI'S +PETRO +PETROBRAS +PETROCELLI +PETROCHEMICAL +PETROCHEMICALS +PETROFINA +PETROL +PETROLANE +PETROLEOS +PETROLES +PETROLEUM +PETROLEUM'S +PETRONAS +PETROSYAN +PETROV +PETROVIC +PETROVSKY +PETRUS +PETRY +PETS +PETSMART +PETTEE +PETTERSSON +PETTINESS +PETTING +PETTIS +PETTIT +PETTY +PETTY'S +PETULANT +PETZING +PEUGEOT +PEUGEOT'S +PEW +PEWS +PEWTER +PEYOTE +PEYRELEVADE +PEYTON +PEZ +PEZIM +PFAELZER +PFAFF +PFEIFER +PFEIFFER +PFENNIG +PFENNIGS +PFISTER +PFIZER +PFIZER'S +PH +PHALANGE +PHALANX +PHALLIC +PHAM +PHAN +PHANTOM +PHANTOMS +PHAR +PHARAOH +PHARAOHS +PHARAON +PHARMA +PHARMACEUTICAL +PHARMACEUTICALS +PHARMACIA +PHARMACIES +PHARMACIST +PHARMACISTS +PHARMACOLOGIST +PHARMACOLOGY +PHARMACY +PHASE +PHASED +PHASEOUT +PHASES +PHASING +PHEASANT +PHEASANTS +PHELAN +PHELAN'S +PHELPS +PHENIX +PHENOL +PHENOLPHTHALEIN +PHENOM +PHENOMENA +PHENOMENAL +PHENOMENALLY +PHENOMENON +PHENYLTHALINE +PHEROMONE +PHEROMONES +PHI +PHIBRO +PHIBRO'S +PHIL +PHIL'S +PHILADELPHIA +PHILADELPHIA'S +PHILADELPHIANS +PHILANDERING +PHILANTHROPIC +PHILANTHROPIES +PHILANTHROPIST +PHILANTHROPISTS +PHILANTHROPY +PHILBIN +PHILBY +PHILHARMONIC +PHILHARMONIC'S +PHILIBOSIAN +PHILIP +PHILIP'S +PHILIPP +PHILIPPE +PHILIPPINE +PHILIPPINES +PHILIPPINES' +PHILIPS +PHILIPS' +PHILIPS'S +PHILLIES +PHILLIP +PHILLIPE +PHILLIPINES +PHILLIPPI +PHILLIPS +PHILLIPS' +PHILLIPS'S +PHILLY +PHILOSOPHER +PHILOSOPHERS +PHILOSOPHIC +PHILOSOPHICAL +PHILOSOPHICALLY +PHILOSOPHIES +PHILOSOPHY +PHIPPS +PHNOM +PHO +PHOBIA +PHOBIAS +PHOBIC +PHOBOS +PHOEBE +PHOENICIAN +PHOENIX +PHOENIX'S +PHONE +PHONE'S +PHONED +PHONES +PHONG +PHONICS +PHONING +PHONOGRAPH +PHONY +PHOSPHATE +PHOSPHATES +PHOSPHOROUS +PHOSPHORUS +PHOTO +PHOTOCOPIED +PHOTOCOPIER +PHOTOCOPIERS +PHOTOCOPIES +PHOTOCOPY +PHOTOCOPYING +PHOTOFINISHERS +PHOTOFINISHING +PHOTOGENIC +PHOTOGRAPH +PHOTOGRAPHED +PHOTOGRAPHER +PHOTOGRAPHER'S +PHOTOGRAPHERS +PHOTOGRAPHIC +PHOTOGRAPHING +PHOTOGRAPHS +PHOTOGRAPHY +PHOTOJOURNALISM +PHOTOJOURNALIST +PHOTOS +PHOTOSYNTHESIS +PHOTOVOLTAIC +PHRASE +PHRASED +PHRASES +PHRASING +PHU +PHYLLIS +PHYSICAL +PHYSICALLY +PHYSICALS +PHYSICIAN +PHYSICIAN'S +PHYSICIANS +PHYSICIANS' +PHYSICIST +PHYSICISTS +PHYSICS +PHYSIOLOGICAL +PHYSIOLOGIST +PHYSIOLOGY +PHYSIQUE +PI +PIA +PIANIST +PIANISTS +PIANO +PIANOS +PIAZZA +PIC +PICARD +PICASSO +PICASSO'S +PICASSOS +PICAYUNE +PICCADILLY +PICCHI +PICCHU +PICCOLO +PICHARDO +PICHER +PICK +PICKARD +PICKED +PICKENS +PICKENS' +PICKENS'S +PICKER +PICKERING +PICKERS +PICKET +PICKETED +PICKETERS +PICKETING +PICKETS +PICKETT +PICKFORD +PICKING +PICKINGS +PICKLE +PICKLED +PICKLES +PICKPOCKETS +PICKS +PICKUP +PICKUPS +PICKY +PICNIC +PICNICS +PICO +PICOCURIES +PICTORIAL +PICTURE +PICTURE'S +PICTURED +PICTURES +PICTURES' +PICTURESQUE +PICTURETEL +PICTURING +PIDDLING +PIE +PIECE +PIECED +PIECEMEAL +PIECES +PIECH +PIECING +PIED +PIEDMONT +PIEDMONT'S +PIEDRA +PIENAAR +PIEPER +PIER +PIERCE +PIERCE'S +PIERCED +PIERCING +PIERO +PIERPONT +PIERRE +PIERS +PIERSON +PIES +PIET +PIETER +PIETERMARITZBURG +PIETRO +PIETY +PIG +PIG'S +PIGEON +PIGEONHOLE +PIGEONS +PIGGY +PIGGYBACK +PIGLETS +PIGMENT +PIGMENTS +PIGS +PIGSKIN +PIK +PIKE +PIKEVILLE +PIL +PILAR +PILARCZYK +PILATUS +PILE +PILED +PILES +PILEUP +PILFERED +PILFERING +PILGRIM +PILGRIM'S +PILGRIMAGE +PILGRIMAGES +PILGRIMS +PILING +PILINGS +PILKINGTON +PILL +PILLAGE +PILLAGED +PILLAGING +PILLAR +PILLARS +PILLORIED +PILLOW +PILLOWS +PILLS +PILLSBURY +PILLSBURY'S +PILON +PILOT +PILOT'S +PILOTED +PILOTING +PILOTS +PILOTS' +PILSON +PIMA +PIMEN +PIMENTEL +PIMP +PIMPING +PIMPS +PIN +PINA +PINATUBO +PINAULT +PINBALL +PINCH +PINCHED +PINCHING +PINCKNEY +PINCUS +PINDLING +PINE +PINEAPPLE +PINEAPPLES +PINEAU +PINEDA +PINELANDS +PINELLAS +PINES +PINEY +PING +PINGPONG +PINIELLA +PINING +PINK +PINKERTON +PINKERTON'S +PINKIE +PINKNEY +PINKS +PINKWATER +PINKY +PINNACLE +PINNED +PINNING +PINO +PINOCCHIO +PINOCHET +PINOCHET'S +PINOLA +PINOT +PINPOINT +PINPOINTED +PINPOINTING +PINS +PINSKY +PINSTRIPE +PINSTRIPED +PINSTRIPES +PINT +PINTER +PINTO +PINTS +PINUP +PIONEER +PIONEER'S +PIONEERED +PIONEERING +PIONEERS +PIOTR +PIOUS +PIPE +PIPED +PIPELINE +PIPELINE'S +PIPELINES +PIPER +PIPES +PIPETTE +PIPING +PIPPEN +PIPPIN +PIQUE +PIQUED +PIRACY +PIRAEUS +PIRANHA +PIRATE +PIRATED +PIRATES +PIRATES' +PIRATING +PIRELLI +PIRELLI'S +PIRIE +PIRKO +PIRRO +PIRUL +PISA +PISCATAWAY +PISCOPO +PISSARRO +PISSED +PISTACHIO +PISTNER +PISTOL +PISTOLS +PISTON +PISTONS +PIT +PITA +PITCH +PITCHED +PITCHER +PITCHER'S +PITCHERS +PITCHES +PITCHFORK +PITCHFORKS +PITCHING +PITCHMAN +PITCHMEN +PITFALL +PITFALLS +PITHY +PITIFUL +PITIFULLY +PITILESS +PITINO +PITKIN +PITMAN +PITNEY +PITOFSKY +PITS +PITT +PITTANCE +PITTED +PITTING +PITTMAN +PITTS +PITTSBURG +PITTSBURGH +PITTSBURGH'S +PITTSFIELD +PITTSTON +PITTSTON'S +PITUITARY +PITY +PITYING +PIUS +PIVOT +PIVOTAL +PIXELS +PIXLEY +PIZARRO +PIZAZZ +PIZZA +PIZZAS +PIZZAZZ +PIZZERIA +PIZZO +PLA +PLACARD +PLACARDS +PLACATE +PLACATING +PLACE +PLACEBO +PLACEBOS +PLACED +PLACEMENT +PLACEMENTS +PLACENTA +PLACER +PLACES +PLACID +PLACID'S +PLACIDO +PLACING +PLAGIARISM +PLAGIARIZED +PLAGUE +PLAGUED +PLAGUES +PLAGUING +PLAID +PLAIDS +PLAIN +PLAINCLOTHES +PLAINES +PLAINFIELD +PLAINLY +PLAINS +PLAINTIFF +PLAINTIFF'S +PLAINTIFFS +PLAINTIFFS' +PLAINTIVE +PLAINTIVELY +PLAINVIEW +PLAN +PLAN'S +PLANCK +PLANE +PLANE'S +PLANELOAD +PLANELOADS +PLANES +PLANES' +PLANET +PLANET'S +PLANETARIUM +PLANETARY +PLANETS +PLANK +PLANKS +PLANKTON +PLANNED +PLANNER +PLANNERS +PLANNING +PLANO +PLANS +PLANT +PLANT'S +PLANTATION +PLANTATIONS +PLANTE +PLANTED +PLANTER +PLANTERS +PLANTING +PLANTINGS +PLANTS +PLANTS' +PLAQUE +PLAQUES +PLASKETT +PLASMA +PLASMINOGEN +PLASTER +PLASTERED +PLASTERING +PLASTIC +PLASTICS +PLATA +PLATE +PLATEAU +PLATEAUED +PLATED +PLATELETS +PLATES +PLATFORM +PLATFORM'S +PLATFORMS +PLATH +PLATING +PLATINUM +PLATINUM'S +PLATITUDES +PLATO +PLATONIC +PLATOON +PLATOONS +PLATT +PLATTE +PLATTER +PLATTERS +PLATTSBURGH +PLATZ +PLAUDITS +PLAUSIBILITY +PLAUSIBLE +PLAUSIBLY +PLAY +PLAY'S +PLAYA +PLAYBACK +PLAYBOOK +PLAYBOY +PLAYBOY'S +PLAYBOYS +PLAYED +PLAYER +PLAYER'S +PLAYERS +PLAYERS' +PLAYFUL +PLAYFULLY +PLAYFULNESS +PLAYGROUND +PLAYGROUNDS +PLAYHOUSE +PLAYING +PLAYMATE +PLAYMATES +PLAYOFF +PLAYOFFS +PLAYPEN +PLAYROOM +PLAYS +PLAYSKOOL +PLAYSTATION +PLAYTEX +PLAYTHINGS +PLAYWRIGHT +PLAYWRIGHT'S +PLAYWRIGHTS +PLAZA +PLAZAS +PLEA +PLEAD +PLEADED +PLEADING +PLEADINGS +PLEADS +PLEAS +PLEASANT +PLEASANTLY +PLEASANTON +PLEASANTRIES +PLEASANTVILLE +PLEASE +PLEASED +PLEASER +PLEASES +PLEASING +PLEASURABLE +PLEASURAMA +PLEASURE +PLEASURES +PLEATED +PLEATS +PLEBISCITE +PLED +PLEDGE +PLEDGED +PLEDGES +PLEDGING +PLENARY +PLENTIFUL +PLENTY +PLENUM +PLESSEY +PLESSEY'S +PLESSIS +PLETHORA +PLEXIGLAS +PLEXIGLASS +PLIABLE +PLIED +PLIERS +PLIGHT +PLIMPTON +PLODDING +PLOP +PLOPPED +PLOT +PLOTKIN +PLOTS +PLOTT +PLOTTED +PLOTTERS +PLOTTING +PLOUGH +PLOUGH'S +PLOW +PLOWED +PLOWING +PLOWRIGHT +PLOWS +PLOWSHARES +PLOY +PLOYS +PLUCK +PLUCKED +PLUCKING +PLUCKY +PLUG +PLUGGED +PLUGGING +PLUGS +PLUM +PLUMB +PLUMBER +PLUMBERS +PLUMBING +PLUME +PLUMERI +PLUMES +PLUMMER +PLUMMET +PLUMMETED +PLUMMETING +PLUMMETS +PLUMP +PLUMS +PLUNDER +PLUNDERED +PLUNDERING +PLUNGE +PLUNGED +PLUNGER +PLUNGES +PLUNGING +PLUNK +PLUNKED +PLUNKETT +PLUNKING +PLURAL +PLURALISM +PLURALIST +PLURALISTIC +PLURALITY +PLUS +PLUSES +PLUSH +PLUTO +PLUTONIUM +PLY +PLYING +PLYMOUTH +PLYWOOD +PNEUMATIC +PNEUMO +PNEUMOCYSTIS +PNEUMONIA +PNEUMONIC +PO +POACH +POACHED +POACHER +POACHERS +POACHING +POCAHONTAS +POCATELLO +POCKED +POCKET +POCKETBOOK +POCKETBOOKS +POCKETED +POCKETING +POCKETS +POCKMARKED +POCO +POCONO +POCUS +POD +PODESTA +PODHORETZ +PODIUM +PODS +POE +POE'S +POEHL +POEHL'S +POEM +POEMS +POET +POET'S +POETIC +POETRY +POETS +POGGIOLI +POGO +POGROM +POGROMS +POGS +POGUE +POHANG +POHL +POHLAD +POIGNANCY +POIGNANT +POIGNANTLY +POINDEXTER +POINDEXTER'S +POINSETTIA +POINT +POINT'S +POINTE +POINTED +POINTEDLY +POINTER +POINTER'S +POINTERS +POINTING +POINTLESS +POINTS +POINTY +POIRIER +POISE +POISED +POISON +POISONED +POISONING +POISONINGS +POISONOUS +POISONS +POITIER +POKE +POKED +POKER +POKES +POKEY +POKING +POL +POLAND +POLAND'S +POLANSKI +POLAR +POLARIS +POLARIZATION +POLARIZE +POLARIZED +POLARIZING +POLAROID +POLAROID'S +POLE +POLEMIC +POLEMICAL +POLEMICS +POLENTA +POLES +POLHILL +POLHILL'S +POLICE +POLICE'S +POLICED +POLICEMAN +POLICEMAN'S +POLICEMEN +POLICES +POLICEWOMAN +POLICIES +POLICING +POLICY +POLICY'S +POLICYHOLDER +POLICYHOLDERS +POLICYHOLDERS' +POLICYMAKER +POLICYMAKERS +POLICYMAKING +POLING +POLIO +POLISARIO +POLISH +POLISHED +POLISHING +POLITAN +POLITBURO +POLITE +POLITELY +POLITENESS +POLITIC +POLITICAL +POLITICALLY +POLITICANS +POLITICIAN +POLITICIAN'S +POLITICIANS +POLITICIANS' +POLITICIZATION +POLITICIZE +POLITICIZED +POLITICIZING +POLITICKING +POLITICO +POLITICOS +POLITICS +POLITIKA +POLITY +POLK +POLKA +POLL +POLL'S +POLLACK +POLLACK'S +POLLAK +POLLAN +POLLARD +POLLARD'S +POLLED +POLLEN +POLLINATE +POLLINATION +POLLING +POLLO +POLLOCK +POLLS +POLLSMOOR +POLLSTER +POLLSTERS +POLLUTANT +POLLUTANTS +POLLUTE +POLLUTED +POLLUTER +POLLUTERS +POLLUTING +POLLUTION +POLLY +POLLY'S +POLLYANNA +POLO +POLONIA +POLOZKOV +POLS +POLTERGEIST +POLTRACK +POLY +POLYAKOV +POLYCHLORINATED +POLYESTER +POLYETHYLENE +POLYGAMIST +POLYGAMY +POLYGLOT +POLYGRAM +POLYGRAM'S +POLYGRAPH +POLYGRAPHS +POLYMARKER +POLYMER +POLYMERASE +POLYMERS +POLYNESIA +POLYNESIAN +POLYP +POLYPROPYLENE +POLYPS +POLYSAR +POLYSAR'S +POLYSTYRENE +POLYTECHNIC +POLYUNSATURATED +POLYURETHANE +POLYVINYL +POM +POMERANTZ +POMEROY +POMFRET +POMONA +POMP +POMPADOUR +POMPANO +POMPEII +POMPIDOU +POMPOSITY +POMPOUS +PONCE +PONCHO +POND +POND'S +PONDER +PONDERED +PONDERING +PONDEROSA +PONDEROUS +PONDERS +PONDS +PONG +PONIES +PONS +PONT +PONT'S +PONTE +PONTIAC +PONTIFF +PONTIFF'S +PONTIFICAL +PONTIFICATE +PONTOON +PONTOONS +PONY +PONYTAIL +PONZI +POO +POOCH +POODLE +POODLES +POOF +POOH +POOHED +POOL +POOL'S +POOLE +POOLED +POOLING +POOLS +POOLSIDE +POOP +POOR +POOR'S +POORE +POORER +POOREST +POORLY +POORS +POOS +POP +POP'S +POPADIUK +POPCORN +POPE +POPE'S +POPEJOY +POPES +POPEYE +POPEYES +POPIELUSZKO +POPKIN +POPLAR +POPOFF +POPOV +POPOVICH +POPOYAN +POPPA +POPPED +POPPEL +POPPER +POPPIES +POPPING +POPPINS +POPPY +POPPYCOCK +POPS +POPSICLE +POPULACE +POPULAR +POPULARITY +POPULARIZE +POPULARIZED +POPULARIZING +POPULARLY +POPULATE +POPULATED +POPULATION +POPULATION'S +POPULATIONS +POPULISM +POPULIST +POPULISTS +POPULOUS +POR +PORAT +PORCELAIN +PORCH +PORCHES +PORCUPINE +PORE +PORED +PORES +PORFIRIO +PORGY +PORING +PORK +PORKY +PORN +PORNO +PORNOGRAPHERS +PORNOGRAPHIC +PORNOGRAPHY +POROS +POROUS +PORPOISES +PORRIDGE +PORSCHE +PORSCHE'S +PORSCHES +PORT +PORT'S +PORTA +PORTABILITY +PORTABLE +PORTABLES +PORTAGE +PORTAL +PORTALS +PORTE +PORTEND +PORTENDS +PORTENT +PORTENTOUS +PORTENTS +PORTER +PORTER'S +PORTERS +PORTFOLIO +PORTFOLIO'S +PORTFOLIOS +PORTIA +PORTICO +PORTILLO +PORTION +PORTIONS +PORTLAND +PORTLAND'S +PORTLY +PORTMAN +PORTO +PORTOLA +PORTRAIT +PORTRAITS +PORTRAITURE +PORTRAY +PORTRAYAL +PORTRAYALS +PORTRAYED +PORTRAYING +PORTRAYS +PORTS +PORTSMOUTH +PORTUGAL +PORTUGAL'S +PORTUGESE +PORTUGUESE +POS +POSADAS +POSCO +POSE +POSED +POSEIDON +POSES +POSEY +POSH +POSHARD +POSING +POSITION +POSITIONED +POSITIONING +POSITIONS +POSITIVE +POSITIVELY +POSITIVES +POSNER +POSNER'S +POSSE +POSSESS +POSSESSED +POSSESSES +POSSESSING +POSSESSION +POSSESSIONS +POSSESSIVE +POSSIBILITIES +POSSIBILITY +POSSIBLE +POSSIBLITY +POSSIBLY +POSSUM +POST +POST'S +POSTAGE +POSTAL +POSTBANK +POSTCARD +POSTCARDS +POSTED +POSTER +POSTERIOR +POSTERITY +POSTERS +POSTGAME +POSTGRADUATE +POSTHUMOUS +POSTHUMOUSLY +POSTING +POSTINGS +POSTMAN +POSTMARK +POSTMARKED +POSTMASTER +POSTMENOPAUSAL +POSTMODERN +POSTPARTUM +POSTPONE +POSTPONED +POSTPONEMENT +POSTPONEMENTS +POSTPONES +POSTPONING +POSTS +POSTSCRIPT +POSTSEASON +POSTSECONDARY +POSTURE +POSTURES +POSTURING +POSTWAR +POT +POT'S +POTABLE +POTASH +POTASSIUM +POTATO +POTATOES +POTBELLIED +POTEMKIN +POTENCY +POTENT +POTENTIAL +POTENTIALLY +POTENTIALS +POTHOLE +POTHOLES +POTION +POTIONS +POTLATCH +POTLUCK +POTOCARI +POTOMAC +POTOSI +POTPOURRI +POTS +POTSDAM +POTSDAMER +POTSHOTS +POTTED +POTTER +POTTER'S +POTTERY +POTTING +POTTS +POTTY +POUCH +POUCHES +POUGH +POUGHKEEPSIE +POUL +POULENC +POULENC'S +POULSEN +POULTRY +POUNCE +POUNCED +POUND +POUND'S +POUNDED +POUNDER +POUNDERS +POUNDING +POUNDS +POUR +POURED +POURING +POURS +POUSSAINT +POUTING +POVERTY +POVICH +POW +POWDER +POWDERED +POWDERS +POWDERY +POWELL +POWELL'S +POWER +POWER'S +POWERBOAT +POWERBOOK +POWERED +POWERFUL +POWERFULLY +POWERGEN +POWERHOUSE +POWERHOUSES +POWERING +POWERLESS +POWERLESSNESS +POWERPC +POWERS +POWERS' +POWERSOFT +POWERTRAIN +POWHATAN +POWIS +POWWOW +POX +POYNER +POYNTER +POZNAN +POZSGAY +PRABHAKARAN +PRACTICABLE +PRACTICAL +PRACTICALITY +PRACTICALLY +PRACTICE +PRACTICED +PRACTICES +PRACTICING +PRACTITIONER +PRACTITIONERS +PRADA +PRADESH +PRADO +PRAGER +PRAGMATIC +PRAGMATISM +PRAGMATIST +PRAGMATISTS +PRAGUE +PRAGUE'S +PRAIRIE +PRAIRIES +PRAISE +PRAISED +PRAISES +PRAISING +PRANCING +PRANK +PRANKS +PRANKSTER +PRANKSTERS +PRASAD +PRATAP +PRATER +PRATHER +PRATT +PRATT'S +PRATTE +PRAVDA +PRAVDA'S +PRAVO +PRAWNS +PRAXAIR +PRAXIS +PRAY +PRAYED +PRAYER +PRAYERS +PRAYING +PRAYS +PRE +PREACH +PREACHED +PREACHER +PREACHERS +PREACHES +PREACHING +PREACHY +PREAKNESS +PREAMBLE +PREARRANGED +PREATE +PREBON +PRECARIOUS +PRECARIOUSLY +PRECAUTION +PRECAUTIONARY +PRECAUTIONS +PRECEDE +PRECEDED +PRECEDENCE +PRECEDENT +PRECEDENTS +PRECEDES +PRECEDING +PRECEEDING +PRECEPT +PRECEPTS +PRECHTEL +PRECHTER +PRECINCT +PRECINCTS +PRECIOUS +PRECIPICE +PRECIPITATE +PRECIPITATED +PRECIPITATING +PRECIPITATION +PRECIPITOUS +PRECIPITOUSLY +PRECISE +PRECISELY +PRECISION +PRECLUDE +PRECLUDED +PRECLUDES +PRECLUDING +PRECLUSION +PRECOCIOUS +PRECONCEIVED +PRECONCEPTIONS +PRECONDITION +PRECONDITIONS +PRECURSOR +PRECURSORS +PREDATE +PREDATED +PREDATES +PREDATOR +PREDATORS +PREDATORY +PREDAWN +PREDECESSOR +PREDECESSOR'S +PREDECESSORS +PREDETERMINED +PREDICAMENT +PREDICATE +PREDICATED +PREDICT +PREDICTABILITY +PREDICTABLE +PREDICTABLY +PREDICTED +PREDICTING +PREDICTION +PREDICTIONS +PREDICTIVE +PREDICTOR +PREDICTS +PREDILECTION +PREDISPOSED +PREDISPOSITION +PREDOMINANCE +PREDOMINANT +PREDOMINANTLY +PREDOMINATE +PREDOMINATED +PREDOMINATELY +PREDOMINATES +PREEMINENT +PREEMPT +PREEMPTED +PREEMPTIVE +PREENING +PREEXISTING +PREFABRICATED +PREFACE +PREFACED +PREFECT +PREFECTURAL +PREFECTURE +PREFER +PREFERABLE +PREFERABLY +PREFERENCE +PREFERENCES +PREFERENTIAL +PREFERRED +PREFERRING +PREFERS +PREFIX +PREGAME +PREGNANCIES +PREGNANCY +PREGNANT +PREGO +PREHEAT +PREHEATED +PREHISTORIC +PREJEAN +PREJUDGE +PREJUDGED +PREJUDICE +PREJUDICED +PREJUDICES +PREJUDICIAL +PREJUDICING +PRELATE +PRELATES +PRELIMINARIES +PRELIMINARILY +PRELIMINARY +PRELUDE +PREM +PREMADASA +PREMADASA'S +PREMARIN +PREMARITAL +PREMARK +PREMATURE +PREMATURELY +PREMEDITATED +PREMEDITATION +PREMENSTRUAL +PREMIER +PREMIER'S +PREMIERE +PREMIERED +PREMIERES +PREMIERING +PREMIERS +PREMIERSHIP +PREMINGER +PREMISE +PREMISED +PREMISES +PREMIUM +PREMIUMS +PREMONITION +PRENATAL +PRENDERGAST +PRENSA +PRENTICE +PRENTISS +PRENUPTIAL +PREOCCUPATION +PREOCCUPATIONS +PREOCCUPIED +PREOCCUPY +PREORDAINED +PREP +PREPACKAGED +PREPAID +PREPARATION +PREPARATIONS +PREPARATORY +PREPARE +PREPARED +PREPAREDNESS +PREPARER +PREPARERS +PREPARES +PREPARING +PREPAY +PREPAYMENT +PREPAYMENTS +PREPONDERANCE +PREPOSTEROUS +PREPPIE +PREPPY +PRERECORDED +PREREQUISITE +PREREQUISITES +PREROGATIVE +PREROGATIVES +PRES +PRESAGE +PRESAGED +PRESAGES +PRESALE +PRESARIO +PRESBYTERIAN +PRESBYTERIANS +PRESBYTERY +PRESCHOOL +PRESCHOOLERS +PRESCIENT +PRESCOTT +PRESCRIBE +PRESCRIBED +PRESCRIBES +PRESCRIBING +PRESCRIPTION +PRESCRIPTIONS +PRESEASON +PRESENCE +PRESENT +PRESENTABLE +PRESENTATION +PRESENTATIONS +PRESENTED +PRESENTER +PRESENTERS +PRESENTING +PRESENTLY +PRESENTS +PRESERVATION +PRESERVATIONIST +PRESERVATIONISTS +PRESERVATIVE +PRESERVATIVES +PRESERVE +PRESERVED +PRESERVER +PRESERVERS +PRESERVES +PRESERVING +PRESET +PRESIDE +PRESIDED +PRESIDENCIES +PRESIDENCY +PRESIDENT +PRESIDENT'S +PRESIDENTE +PRESIDENTIAL +PRESIDENTIALLY +PRESIDENTS +PRESIDENTS' +PRESIDES +PRESIDING +PRESIDIO +PRESIDIUM +PRESLEY +PRESLEY'S +PRESS +PRESS' +PRESS'S +PRESSE +PRESSED +PRESSER +PRESSER'S +PRESSES +PRESSING +PRESSLER +PRESSMAN +PRESSURE +PRESSURED +PRESSURES +PRESSURING +PRESSURIZED +PRESTIGE +PRESTIGIOUS +PRESTO +PRESTON +PRESTON'S +PRESTOWITZ +PRESUMABLY +PRESUME +PRESUMED +PRESUMES +PRESUMING +PRESUMPTION +PRESUMPTIVE +PRESUMPTUOUS +PRETAX +PRETEEN +PRETEND +PRETENDED +PRETENDER +PRETENDERS +PRETENDING +PRETENDS +PRETENSE +PRETENSES +PRETENSION +PRETENSIONS +PRETENTIOUS +PRETERM +PRETEXT +PRETORIA +PRETORIA'S +PRETRIAL +PRETTIER +PRETTIEST +PRETTY +PRETZEL +PRETZELS +PREUSSAG +PREVAIL +PREVAILED +PREVAILING +PREVAILS +PREVAL +PREVALENCE +PREVALENT +PREVENT +PREVENTABLE +PREVENTATIVE +PREVENTED +PREVENTING +PREVENTION +PREVENTIVE +PREVENTS +PREVIA +PREVIEW +PREVIEWED +PREVIEWING +PREVIEWS +PREVIN +PREVIOUS +PREVIOUSLY +PREWAR +PREY +PREYED +PREYING +PRICE +PRICE'S +PRICED +PRICELESS +PRICES +PRICETAG +PRICEY +PRICHARD +PRICIER +PRICIEST +PRICING +PRICINGS +PRICK +PRICKED +PRICKLY +PRIDE +PRIDED +PRIDES +PRIED +PRIEST +PRIEST'S +PRIESTESS +PRIESTHOOD +PRIESTLY +PRIESTS +PRIESTS' +PRIETA +PRIETO +PRIM +PRIMA +PRIMACY +PRIMAKOV +PRIMAL +PRIMARIES +PRIMARILY +PRIMARK +PRIMARY +PRIMATE +PRIMATES +PRIME +PRIME'S +PRIMED +PRIMENEWS +PRIMER +PRIMERICA +PRIMERICA'S +PRIMES +PRIMESTAR +PRIMETIME +PRIMEVAL +PRIMING +PRIMITIVE +PRIMO +PRIMORDIAL +PRIMROSE +PRIMUS +PRINCE +PRINCE'S +PRINCELY +PRINCES +PRINCESS +PRINCESSES +PRINCETON +PRINCETON'S +PRINCEVILLE +PRINCIPAL +PRINCIPAL'S +PRINCIPALITY +PRINCIPALLY +PRINCIPALS +PRINCIPE +PRINCIPLE +PRINCIPLED +PRINCIPLES +PRINE +PRINGLE +PRINT +PRINTED +PRINTEMPS +PRINTER +PRINTERS +PRINTING +PRINTINGS +PRINTOUT +PRINTOUTS +PRINTS +PRIOR +PRIORITIES +PRIORITIZE +PRIORITY +PRISCILLA +PRISM +PRISON +PRISON'S +PRISONER +PRISONER'S +PRISONERS +PRISONERS' +PRISONS +PRISTINA +PRISTINE +PRITCHARD +PRITCHETT +PRITZKER +PRITZKERS +PRIVACY +PRIVATE +PRIVATELY +PRIVATES +PRIVATION +PRIVATISATION +PRIVATIZATION +PRIVATIZATIONS +PRIVATIZE +PRIVATIZED +PRIVATIZING +PRIVILEGE +PRIVILEGED +PRIVILEGES +PRIVY +PRIX +PRIZE +PRIZED +PRIZES +PRIZM +PRO +PROACTIVE +PROBABILITIES +PROBABILITY +PROBABLE +PROBABLY +PROBATE +PROBATION +PROBATIONARY +PROBATIVE +PROBE +PROBE'S +PROBED +PROBES +PROBING +PROBITY +PROBLEM +PROBLEMATIC +PROBLEMATICAL +PROBLEMS +PROBST +PROCARDIA +PROCEDURAL +PROCEDURALLY +PROCEDURE +PROCEDURES +PROCEED +PROCEEDED +PROCEEDING +PROCEEDINGS +PROCEEDS +PROCESO +PROCESS +PROCESSED +PROCESSES +PROCESSING +PROCESSION +PROCESSIONS +PROCESSOR +PROCESSORS +PROCLAIM +PROCLAIMED +PROCLAIMING +PROCLAIMS +PROCLAMATION +PROCLAMATIONS +PROCLIVITY +PROCORDIA +PROCRASTINATE +PROCRASTINATION +PROCRASTINATORS +PROCREATION +PROCTER +PROCTOR +PROCURE +PROCURED +PROCUREMENT +PROCUREMENTS +PROCURING +PROCYTE +PROD +PRODDED +PRODDING +PRODI +PRODIGAL +PRODIGIES +PRODIGIOUS +PRODIGY +PRODIGY'S +PRODS +PRODUCE +PRODUCED +PRODUCER +PRODUCER'S +PRODUCERS +PRODUCERS' +PRODUCES +PRODUCING +PRODUCT +PRODUCT'S +PRODUCTION +PRODUCTION'S +PRODUCTIONS +PRODUCTIVE +PRODUCTIVELY +PRODUCTIVITY +PRODUCTS +PRODUCTS' +PROFANE +PROFANITY +PROFESS +PROFESSED +PROFESSES +PROFESSING +PROFESSION +PROFESSION'S +PROFESSIONAL +PROFESSIONALISM +PROFESSIONALLY +PROFESSIONALS +PROFESSIONS +PROFESSOR +PROFESSOR'S +PROFESSORIAL +PROFESSORS +PROFESSORSHIP +PROFETA +PROFFER +PROFFERED +PROFICIENCY +PROFICIENT +PROFILE +PROFILED +PROFILES +PROFILING +PROFIT +PROFITABILITY +PROFITABLE +PROFITABLY +PROFITED +PROFITEERING +PROFITEERS +PROFITING +PROFITS +PROFITTAKING +PROFLIGACY +PROFLIGATE +PROFOUND +PROFOUNDLY +PROFS +PROFUSELY +PROFUSION +PROGENY +PROGESTERONE +PROGESTIN +PROGNOSIS +PROGNOSTICATORS +PROGRAM +PROGRAM'S +PROGRAMING +PROGRAMMABLE +PROGRAMMATIC +PROGRAMME +PROGRAMMED +PROGRAMMER +PROGRAMMERS +PROGRAMMES +PROGRAMMING +PROGRAMS +PROGRAMS' +PROGRESS +PROGRESSED +PROGRESSES +PROGRESSING +PROGRESSION +PROGRESSIVE +PROGRESSIVELY +PROGRESSIVES +PROGRESSIVITY +PROHIBIT +PROHIBITED +PROHIBITING +PROHIBITION +PROHIBITIONS +PROHIBITIVE +PROHIBITIVELY +PROHIBITS +PROJECT +PROJECT'S +PROJECTED +PROJECTILE +PROJECTILES +PROJECTING +PROJECTION +PROJECTIONS +PROJECTOR +PROJECTORS +PROJECTS +PROKOFIEV +PROKOFIEV'S +PROLETARIAN +PROLETARIAT +PROLIFERATE +PROLIFERATED +PROLIFERATING +PROLIFERATION +PROLIFIC +PROLINEA +PROLOGUE +PROLONG +PROLONGED +PROLONGING +PROLONGS +PROM +PROMENADE +PROMETHEUS +PROMINENCE +PROMINENT +PROMINENTLY +PROMISCUITY +PROMISCUOUS +PROMISE +PROMISED +PROMISES +PROMISING +PROMISSORY +PROMO +PROMOS +PROMOTE +PROMOTED +PROMOTER +PROMOTERS +PROMOTES +PROMOTING +PROMOTION +PROMOTIONAL +PROMOTIONS +PROMPT +PROMPTED +PROMPTING +PROMPTLY +PROMPTS +PROMULGATE +PROMULGATED +PROMUS +PRONE +PRONG +PRONGED +PRONOUNCE +PRONOUNCED +PRONOUNCEMENT +PRONOUNCEMENTS +PRONOUNCES +PRONOUNCING +PRONUNCIATION +PROOF +PROOFING +PROOFS +PROP +PROPAGANDA +PROPAGANDIST +PROPAGANDISTS +PROPAGATE +PROPAGATED +PROPAGATING +PROPAGATION +PROPANE +PROPEL +PROPELLANT +PROPELLANTS +PROPELLED +PROPELLER +PROPELLERS +PROPELLING +PROPELS +PROPENSITY +PROPER +PROPERLY +PROPERTIES +PROPERTIES' +PROPERTY +PROPERTY'S +PROPFAN +PROPHECIES +PROPHECY +PROPHESY +PROPHET +PROPHETIC +PROPHETS +PROPHYLACTIC +PROPITIOUS +PROPONENT +PROPONENTS +PROPORTION +PROPORTIONAL +PROPORTIONALITY +PROPORTIONALLY +PROPORTIONATE +PROPORTIONATELY +PROPORTIONED +PROPORTIONS +PROPOSAL +PROPOSAL'S +PROPOSALS +PROPOSE +PROPOSED +PROPOSES +PROPOSING +PROPOSITION +PROPOSITIONED +PROPOSITIONS +PROPPED +PROPPING +PROPRIETARY +PROPRIETOR +PROPRIETORS +PROPRIETY +PROPS +PROPULSION +PROPYLENE +PRORATED +PROS +PROS' +PROSAIC +PROSCAR +PROSCRIBED +PROSE +PROSECUTE +PROSECUTED +PROSECUTES +PROSECUTING +PROSECUTION +PROSECUTION'S +PROSECUTIONS +PROSECUTOR +PROSECUTOR'S +PROSECUTORIAL +PROSECUTORS +PROSECUTORS' +PROSELYTIZING +PROSKAUER +PROSPECT +PROSPECTING +PROSPECTIVE +PROSPECTIVELY +PROSPECTOR +PROSPECTORS +PROSPECTS +PROSPECTUS +PROSPECTUSES +PROSPEKT +PROSPER +PROSPERED +PROSPERI +PROSPERING +PROSPERITY +PROSPERO +PROSPEROUS +PROSPERS +PROSSER +PROSTAGLANDIN +PROSTATE +PROSTHESES +PROSTHESIS +PROSTHETIC +PROSTITUTE +PROSTITUTES +PROSTITUTION +PROSTRATE +PROTAGONIST +PROTAGONISTS +PROTEASE +PROTECT +PROTECTED +PROTECTING +PROTECTION +PROTECTIONISM +PROTECTIONIST +PROTECTIONISTS +PROTECTIONS +PROTECTIVE +PROTECTOR +PROTECTORATE +PROTECTORS +PROTECTS +PROTEGE +PROTEGES +PROTEIN +PROTEINS +PROTEST +PROTESTANT +PROTESTANTISM +PROTESTANTS +PROTESTATIONS +PROTESTED +PROTESTER +PROTESTERS +PROTESTERS' +PROTESTING +PROTESTORS +PROTESTS +PROTO +PROTOCOL +PROTOCOLS +PROTON +PROTONS +PROTOTYPE +PROTOTYPES +PROTOTYPICAL +PROTRACTED +PROTROPIN +PROTRUDING +PROUD +PROUDER +PROUDEST +PROUDFOOT +PROUDLY +PROUSE +PROUST +PROUTY +PROVABLE +PROVE +PROVED +PROVEN +PROVENANCE +PROVENCE +PROVENZANO +PROVERA +PROVERB +PROVERBIAL +PROVERBS +PROVES +PROVIDE +PROVIDED +PROVIDENCE +PROVIDENT +PROVIDENTIAL +PROVIDER +PROVIDERS +PROVIDES +PROVIDING +PROVIGO +PROVINCE +PROVINCE'S +PROVINCES +PROVINCETOWN +PROVINCIAL +PROVING +PROVISION +PROVISIONAL +PROVISIONALLY +PROVISIONING +PROVISIONS +PROVISO +PROVO +PROVOCATEUR +PROVOCATEURS +PROVOCATION +PROVOCATIONS +PROVOCATIVE +PROVOCATIVELY +PROVOKE +PROVOKED +PROVOKES +PROVOKING +PROVOST +PROWESS +PROWL +PROWLED +PROWLER +PROWLING +PROXIES +PROXIMATE +PROXIMITY +PROXMIRE +PROXMIRE'S +PROXY +PROZAC +PRU +PRUDENCE +PRUDENT +PRUDENTIAL +PRUDENTIAL'S +PRUDENTLY +PRUDHOE +PRUDHOMME +PRUDISH +PRUETT +PRUITT +PRUNE +PRUNED +PRUNES +PRUNING +PRUNSKIENE +PRURIENT +PRUSSIA +PRUSSIAN +PRY +PRYCE +PRYING +PRYOR +PRYOR'S +PSALM +PSALMS +PSEUDO +PSEUDONYM +PSEUDONYMS +PSORIASIS +PSYCH +PSYCHE +PSYCHED +PSYCHEDELIC +PSYCHES +PSYCHIATRIC +PSYCHIATRIST +PSYCHIATRIST'S +PSYCHIATRISTS +PSYCHIATRY +PSYCHIC +PSYCHICS +PSYCHO +PSYCHOANALYSIS +PSYCHOANALYST +PSYCHOANALYTIC +PSYCHOBABBLE +PSYCHOLOGICAL +PSYCHOLOGICALLY +PSYCHOLOGIST +PSYCHOLOGISTS +PSYCHOLOGY +PSYCHOPATH +PSYCHOPATHIC +PSYCHOPATHS +PSYCHOSIS +PSYCHOTHERAPIST +PSYCHOTHERAPISTS +PSYCHOTHERAPY +PSYCHOTIC +PSYLLIUM +PUB +PUBERTY +PUBIC +PUBLIC +PUBLIC'S +PUBLICATION +PUBLICATION'S +PUBLICATIONS +PUBLICIS +PUBLICIST +PUBLICISTS +PUBLICITY +PUBLICIZE +PUBLICIZED +PUBLICIZING +PUBLICLY +PUBLICS +PUBLISH +PUBLISHED +PUBLISHER +PUBLISHER'S +PUBLISHERS +PUBLISHERS' +PUBLISHES +PUBLISHING +PUBLISHING'S +PUBLIX +PUBS +PUCCI +PUCCINI +PUCCINI'S +PUCCIO +PUCHE +PUCK +PUCKETT +PUCKISH +PUDDING +PUDDINGS +PUDDLE +PUDDLES +PUDGY +PUDONG +PUEBLA +PUEBLO +PUEDE +PUENTE +PUERTO +PUFF +PUFFED +PUFFING +PUFFS +PUFFY +PUGET +PUGH +PUGNACIOUS +PUGO +PUGSLEY +PUK +PULASKI +PULITZER +PULITZERS +PULL +PULLBACK +PULLED +PULLEN +PULLER +PULLEY +PULLEYS +PULLIAM +PULLIN +PULLING +PULLMAN +PULLOUT +PULLOUTS +PULLOVER +PULLS +PULMONARY +PULP +PULPIT +PULPITS +PULSAR +PULSATING +PULSE +PULSES +PULSING +PULTE +PULVERIZED +PUMA +PUMICE +PUMMEL +PUMMELED +PUMMELING +PUMP +PUMPED +PUMPING +PUMPKIN +PUMPKINS +PUMPS +PUN +PUNCH +PUNCHED +PUNCHES +PUNCHING +PUNCHLINE +PUNCHY +PUNCTUAL +PUNCTUATE +PUNCTUATED +PUNCTUATION +PUNCTURE +PUNCTURED +PUNCTURES +PUNCTURING +PUNDIT +PUNDITRY +PUNDITS +PUNGENT +PUNISH +PUNISHABLE +PUNISHED +PUNISHES +PUNISHING +PUNISHMENT +PUNISHMENTS +PUNITIVE +PUNJAB +PUNJABI +PUNK +PUNKS +PUNS +PUNT +PUNTA +PUNTED +PUNTER +PUNTING +PUNTS +PUNY +PUP +PUPIL +PUPILS +PUPPET +PUPPETEER +PUPPETRY +PUPPETS +PUPPIES +PUPPY +PUPS +PURCELL +PURCHASE +PURCHASED +PURCHASER +PURCHASERS +PURCHASES +PURCHASING +PURDUE +PURDY +PURE +PUREE +PUREED +PURELY +PURER +PUREST +PUREX +PURGATORY +PURGE +PURGED +PURGES +PURGING +PURIFICATION +PURIFIED +PURIFY +PURIFYING +PURINA +PURIS +PURIST +PURISTS +PURITAN +PURITANICAL +PURITANS +PURITY +PURLOINED +PUROLATOR +PUROLATOR'S +PURPLE +PURPLISH +PURPORT +PURPORTED +PURPORTEDLY +PURPORTING +PURPORTS +PURPOSE +PURPOSEFUL +PURPOSEFULLY +PURPOSELY +PURPOSES +PURSE +PURSELL +PURSES +PURSUANT +PURSUE +PURSUED +PURSUERS +PURSUES +PURSUING +PURSUIT +PURSUITS +PURVES +PURVEYOR +PURVEYORS +PURVIEW +PURVIS +PUSAN +PUSH +PUSHED +PUSHER +PUSHERS +PUSHES +PUSHING +PUSHKIN +PUSHOVER +PUSHUPS +PUSHY +PUSSYCAT +PUT +PUTATIVE +PUTNAM +PUTNAM'S +PUTNEY +PUTS +PUTSCH +PUTT +PUTTED +PUTTER +PUTTERS +PUTTING +PUTTNAM +PUTTS +PUTTY +PUYALLUP +PUZZLE +PUZZLED +PUZZLEMENT +PUZZLES +PUZZLING +PUZZO +PYE +PYGMIES +PYGMY +PYLE +PYLON +PYLONS +PYLORI +PYNE +PYONGYANG +PYONGYANG'S +PYOTR +PYRAMID +PYRAMIDS +PYRENEES +PYRO +PYROTECHNICS +PYRRHIC +PYTHON +Q. +Q.S +QABAS +QADDAFI +QALQILYA +QANTAS +QASR +QASSAM +QATAR +QI +QIAN +QIAO +QICHEN +QIN +QING +QINGDAO +QINTEX +QIRYAT +QOM +QSOUND +QUA +QUACK +QUACKENBUSH +QUACKS +QUAD +QUADRA +QUADRANT +QUADRENNIAL +QUADREX +QUADRIPLEGIC +QUADRUPLE +QUADRUPLED +QUADRUPLING +QUAGMIRE +QUAID +QUAIL +QUAINT +QUAKE +QUAKE'S +QUAKER +QUAKER'S +QUAKERS +QUAKES +QUAKING +QUAL +QUALCOMM +QUALIFICATION +QUALIFICATIONS +QUALIFIED +QUALIFIER +QUALIFIERS +QUALIFIES +QUALIFY +QUALIFYING +QUALITATIVE +QUALITATIVELY +QUALITIES +QUALITY +QUALLS +QUALMS +QUAN +QUANDARY +QUANDT +QUANEX +QUANG +QUANTICO +QUANTIFIABLE +QUANTIFIED +QUANTIFY +QUANTITATIVE +QUANTITIES +QUANTITY +QUANTUM +QUANTUM'S +QUARANTINE +QUARANTINED +QUARK +QUARKS +QUARLES +QUARREL +QUARRELED +QUARRELING +QUARRELS +QUARRELSOME +QUARRIES +QUARRY +QUART +QUARTER +QUARTER'S +QUARTERBACK +QUARTERBACKING +QUARTERBACKS +QUARTERDECK +QUARTERED +QUARTERFINAL +QUARTERFINALS +QUARTERLY +QUARTERMASTER +QUARTERS +QUARTERS' +QUARTET +QUARTETS +QUARTS +QUARTZ +QUASAR +QUASARS +QUASH +QUASHED +QUASHING +QUASI +QUATTRO +QUAYLE +QUAYLE'S +QUAYLES +QUBILAH +QUE +QUEASY +QUEBEC +QUEBEC'S +QUEBECERS +QUEBECKERS +QUEBECOIS +QUEBECOR +QUEDLINBURG +QUEEN +QUEEN'S +QUEENAN +QUEENS +QUEENSLAND +QUEER +QUEERS +QUELL +QUELLED +QUELLING +QUELLO +QUENCH +QUENTIN +QUERIED +QUERIES +QUERY +QUESADA +QUEST +QUESTAR +QUESTION +QUESTION'S +QUESTIONABLE +QUESTIONED +QUESTIONER +QUESTIONERS +QUESTIONING +QUESTIONNAIRE +QUESTIONNAIRES +QUESTIONS +QUESTROM +QUESTS +QUEUE +QUEUED +QUEUES +QUEUING +QUEZADA +QUEZON +QUI +QUIBBLE +QUIBBLES +QUIBBLING +QUICHE +QUICK +QUICKEN +QUICKENED +QUICKENING +QUICKER +QUICKEST +QUICKIE +QUICKLY +QUICKNESS +QUICKSAND +QUICKSILVER +QUICKTIME +QUID +QUIET +QUIETED +QUIETER +QUIETEST +QUIETING +QUIETLY +QUIGLEY +QUILL +QUILLEN +QUILT +QUILTED +QUILTING +QUILTS +QUIMBY +QUINA +QUINCY +QUINDLEN +QUINLAN +QUINLEY +QUINN +QUINN'S +QUINONES +QUINT +QUINTA +QUINTANA +QUINTANILLA +QUINTERO +QUINTESSENTIAL +QUINTESSENTIALLY +QUINTET +QUINTILE +QUINTIN +QUINTON +QUINTUPLE +QUINTUPLED +QUINTUPLETS +QUIP +QUIPPED +QUIPS +QUIRK +QUIRKS +QUIRKY +QUIST +QUIT +QUITE +QUITO +QUITS +QUITTER +QUITTING +QUIVER +QUIVERING +QUIVERS +QUIXOTE +QUIXOTIC +QUIZ +QUIZZED +QUIZZES +QUO +QUORUM +QUOTA +QUOTABLE +QUOTAS +QUOTATION +QUOTATIONS +QUOTE +QUOTED +QUOTES +QUOTIENT +QUOTING +QUOTRON +QURESHEY +QUYEN +R. +R.'S +R.S +RA +RAAB +RAABE +RABAT +RABB +RABBANI +RABBI +RABBI'S +RABBINICAL +RABBIS +RABBIT +RABBITS +RABBLE +RABBO +RABID +RABIES +RABIN +RABIN'S +RABINOVICH +RABINOWITZ +RABOBANK +RABTA +RABUKA +RACAL +RACCOON +RACCOONS +RACE +RACE'S +RACED +RACEHORSE +RACEHORSES +RACER +RACERS +RACES +RACETRACK +RACETRACKS +RACEWAY +RACHAEL +RACHEL +RACHEL'S +RACHELLE +RACHMANINOFF +RACIAL +RACIALLY +RACINE +RACING +RACING'S +RACISM +RACIST +RACISTS +RACK +RACKED +RACKET +RACKETEER +RACKETEERING +RACKETEERS +RACKETS +RACKING +RACKLEY +RACKS +RACONTEUR +RACQUET +RACQUETBALL +RACQUETS +RACY +RAD +RADAR +RADARS +RADCLIFF +RADCLIFFE +RADDATZ +RADER +RADFORD +RADIAL +RADIANT +RADIATE +RADIATED +RADIATES +RADIATING +RADIATION +RADIATOR +RADIATORS +RADICAL +RADICALISM +RADICALIZED +RADICALLY +RADICALS +RADICALS' +RADICE +RADIN +RADIO +RADIO'S +RADIOACTIVE +RADIOACTIVITY +RADIOED +RADIOLOGICAL +RADIOLOGIST +RADIOLOGISTS +RADIOLOGY +RADIOS +RADISH +RADISHES +RADISSON +RADIUM +RADIUS +RADLO +RADNER +RADNOR +RADON +RADOVAN +RADU +RADWAN +RAE +RAEDER +RAFAEL +RAFAH +RAFEEDIE +RAFFERTY +RAFFLE +RAFFLES +RAFI +RAFIK +RAFSANJANI +RAFSANJANI'S +RAFT +RAFTER +RAFTERS +RAFTERY +RAFTING +RAFTS +RAG +RAGAVAN +RAGE +RAGED +RAGEN +RAGES +RAGGED +RAGGEDY +RAGING +RAGLE +RAGS +RAGSDALE +RAGTAG +RAGTIME +RAGU +RAH +RAHAL +RAHALL +RAHIM +RAHMAN +RAHMAN'S +RAHN +RAHWAY +RAI +RAID +RAIDED +RAIDER +RAIDERS +RAIDERS' +RAIDING +RAIDS +RAIFF +RAIL +RAIL'S +RAILCAR +RAILCARS +RAILED +RAILEY +RAILEY'S +RAILING +RAILINGS +RAILROAD +RAILROAD'S +RAILROADED +RAILROADING +RAILROADS +RAILS +RAILWAY +RAILWAYS +RAIMUNDO +RAIN +RAINBOW +RAINBOWS +RAINCOAT +RAINCOATS +RAINDROPS +RAINED +RAINER +RAINES +RAINEY +RAINFALL +RAINFOREST +RAINFORESTS +RAINIER +RAINING +RAINMAKER +RAINS +RAINSHOWERS +RAINSTORM +RAINSTORMS +RAINWATER +RAINY +RAISA +RAISE +RAISED +RAISER +RAISERS +RAISES +RAISIN +RAISING +RAISINS +RAISON +RAITT +RAJ +RAJA +RAJASTHAN +RAJAVI +RAJIV +RAJNEESH +RAKE +RAKED +RAKES +RAKING +RAKOLTA +RAKOWSKI +RALEIGH +RALES +RALF +RALLIED +RALLIES +RALLY +RALLY'S +RALLYING +RALPH +RALPH'S +RALPHS +RALSTON +RALSTON'S +RAM +RAMA +RAMADA +RAMADA'S +RAMADAN +RAMALLAH +RAMAN +RAMAPHOSA +RAMASWAMY +RAMAT +RAMBLE +RAMBLER +RAMBLING +RAMBO +RAMBUNCTIOUS +RAMEY +RAMI +RAMIFICATIONS +RAMIREZ +RAMIREZ'S +RAMIRO +RAMIZ +RAMMED +RAMMING +RAMON +RAMONA +RAMONE +RAMOS +RAMP +RAMPAGE +RAMPAGED +RAMPAGES +RAMPAGING +RAMPANT +RAMPARTS +RAMPS +RAMQVIST +RAMROD +RAMS +RAMS' +RAMSAY +RAMSES +RAMSEY +RAMSHACKLE +RAMSTEIN +RAMTHA +RAMZI +RAN +RANA +RANARIDDH +RANASINGHE +RANCH +RANCHER +RANCHERS +RANCHES +RANCHING +RANCHO +RANCID +RANCOR +RANCOROUS +RAND +RAND'S +RANDA +RANDAL +RANDALL +RANDALL'S +RANDI +RANDLE +RANDOL +RANDOLPH +RANDOM +RANDOMLY +RANDOMNESS +RANDY +RANG +RANGE +RANGED +RANGEL +RANGELAND +RANGER +RANGERS +RANGERS' +RANGES +RANGING +RANGOON +RANGOON'S +RANH +RANIERI +RANJAN +RANK +RANKED +RANKIN +RANKING +RANKINGS +RANKLE +RANKLED +RANKLES +RANKS +RANS +RANSACKED +RANSACKING +RANSOM +RANT +RANTING +RAO +RAO'S +RAOUL +RAP +RAPACIOUS +RAPE +RAPED +RAPES +RAPESEED +RAPHAEL +RAPHEL +RAPID +RAPIDITY +RAPIDLY +RAPIDS +RAPING +RAPIST +RAPISTS +RAPOPORT +RAPP +RAPPAPORT +RAPPED +RAPPER +RAPPERS +RAPPING +RAPPORT +RAPPROCHEMENT +RAPS +RAPT +RAPTOPOULOS +RAPTORS +RAPTURE +RAPTUROUS +RAQUEL +RARE +RAREFIED +RARELY +RARER +RAREST +RARITAN +RARITIES +RARITY +RAS +RASCAL +RASCALS +RASH +RASHAD +RASHEED +RASHEEDA +RASHES +RASHID +RASKIN +RASMUSSEN +RASPBERRIES +RASPBERRY +RASPUTIN +RASPY +RASTEROPS +RAT +RATA +RATAJCZAK +RATCHET +RATCHETED +RATCHETING +RATE +RATED +RATEPAYERS +RATES +RATH +RATHBUN +RATHER +RATHER'S +RATHMAN +RATIFICATION +RATIFIED +RATIFIES +RATIFY +RATIFYING +RATING +RATINGS +RATIO +RATION +RATIONAL +RATIONALE +RATIONALES +RATIONALITY +RATIONALIZATION +RATIONALIZATIONS +RATIONALIZE +RATIONALIZED +RATIONALIZING +RATIONALLY +RATIONED +RATIONING +RATIONS +RATIOS +RATIU +RATKO +RATLIFF +RATNER +RATNERS +RATON +RATS +RATSIRAKA +RATTAN +RATTIGAN +RATTLE +RATTLED +RATTLES +RATTLESNAKE +RATTLESNAKES +RATTLING +RATTNER +RATZINGER +RAU +RAUCH +RAUCOUS +RAUF +RAUL +RAUM +RAUNCHY +RAUSCHENBERG +RAUSCHER +RAVAGE +RAVAGED +RAVAGES +RAVAGING +RAVE +RAVED +RAVEL +RAVELING +RAVELLI +RAVEN +RAVENEL +RAVENNA +RAVENOUS +RAVENS +RAVENSWOOD +RAVES +RAVI +RAVINE +RAVINES +RAVING +RAVIOLI +RAVISHING +RAVITCH +RAVITZ +RAW +RAWALPINDI +RAWHIDE +RAWL +RAWLINGS +RAWLINS +RAWLS +RAWSON +RAX +RAY +RAY'S +RAYBURN +RAYCHEM +RAYE +RAYED +RAYMARK +RAYMOND +RAYMOND'S +RAYMUNDO +RAYNET +RAYNOR +RAYON +RAYONIER +RAYS +RAYTHEON +RAYTHEON'S +RAZA +RAZE +RAZED +RAZING +RAZOR +RAZORBACK +RAZORBACKS +RAZORS +RAZZLE +RE +RE'S +REA +REACH +REACHABLE +REACHED +REACHES +REACHING +REACQUIRE +REACT +REACTED +REACTING +REACTION +REACTIONARIES +REACTIONARY +REACTIONS +REACTIVATE +REACTIVATED +REACTIVE +REACTOR +REACTOR'S +REACTORS +REACTS +READ +READ'S +READABLE +READE +READER +READER'S +READERMAN +READERS +READERS' +READERSHIP +READIED +READIES +READILY +READINESS +READING +READINGS +READJUST +READJUSTMENT +READMISSION +READMITTED +READOUT +READS +READY +READYING +REAFFIRM +REAFFIRMATION +REAFFIRMED +REAFFIRMING +REAFFIRMS +REAGAN +REAGAN'S +REAGANISM +REAGANITE +REAGANITES +REAGANOMICS +REAGANS +REAGANS' +REAGENT +REAGENTS +REAL +REALESTATE +REALIGN +REALIGNED +REALIGNING +REALIGNMENT +REALIGNMENTS +REALISM +REALIST +REALISTIC +REALISTICALLY +REALISTS +REALITIES +REALITY +REALIZATION +REALIZE +REALIZED +REALIZES +REALIZING +REALLOCATE +REALLOCATED +REALLOCATION +REALLOWANCE +REALLY +REALM +REALMS +REALPOLITIK +REALTOR +REALTORS +REALTORS' +REALTY +REALTY'S +REAMS +REAP +REAPED +REAPER +REAPING +REAPPEAR +REAPPEARANCE +REAPPEARED +REAPPEARING +REAPPEARS +REAPPLY +REAPPOINT +REAPPOINTED +REAPPOINTMENT +REAPPORTIONMENT +REAPPRAISAL +REAPS +REAR +REARDON +REARED +REARING +REARM +REARMING +REARRANGE +REARRANGED +REARRANGING +REARRESTED +REARS +REARVIEW +REASER +REASON +REASONABLE +REASONABLENESS +REASONABLY +REASONED +REASONER +REASONING +REASONS +REASSEMBLE +REASSEMBLED +REASSERT +REASSERTED +REASSERTING +REASSESS +REASSESSED +REASSESSING +REASSESSMENT +REASSIGN +REASSIGNED +REASSIGNING +REASSIGNMENT +REASSUME +REASSURANCE +REASSURANCES +REASSURE +REASSURED +REASSURES +REASSURING +REATTA +REATTACHED +REAUTHORIZATION +REAUTHORIZE +REAUTHORIZED +REAVIS +REAWAKENED +REAWAKENING +REBA +REBACK +REBATE +REBATES +REBBE +REBECCA +REBEL +REBELLED +REBELLING +REBELLION +REBELLIONS +REBELLIOUS +REBELS +REBELS' +REBIRTH +REBMANN +REBORN +REBOUND +REBOUNDED +REBOUNDER +REBOUNDING +REBOUNDS +REBROADCAST +REBUFF +REBUFFED +REBUFFING +REBUILD +REBUILDING +REBUILT +REBUKE +REBUKED +REBUKES +REBURIAL +REBURIED +REBUT +REBUTTAL +REBUTTALS +REBUTTED +REBUTTING +REC +RECALCITRANT +RECALCULATE +RECALCULATED +RECALCULATION +RECALL +RECALLED +RECALLING +RECALLS +RECANT +RECANTED +RECAP +RECAPITALIZATION +RECAPITALIZATIONS +RECAPITALIZE +RECAPITALIZED +RECAPITALIZING +RECAPPING +RECAPTURE +RECAPTURED +RECAPTURING +RECAREY +RECAST +RECASTING +RECEDE +RECEDED +RECEDES +RECEDING +RECEIPT +RECEIPTS +RECEIVABLE +RECEIVABLES +RECEIVE +RECEIVED +RECEIVER +RECEIVERS +RECEIVERSHIP +RECEIVES +RECEIVING +RECENT +RECENTLY +RECEPTACLE +RECEPTION +RECEPTIONIST +RECEPTIONISTS +RECEPTIONS +RECEPTIVE +RECEPTIVITY +RECEPTOR +RECEPTORS +RECESS +RECESSED +RECESSES +RECESSION +RECESSION'S +RECESSIONARY +RECESSIONS +RECHARGE +RECHARGEABLE +RECHARGED +RECHARGING +RECIDIVISM +RECIPE +RECIPES +RECIPIENT +RECIPIENT'S +RECIPIENTS +RECIPROCAL +RECIPROCATE +RECIPROCATED +RECIPROCITY +RECISION +RECITAL +RECITALS +RECITATION +RECITE +RECITED +RECITES +RECITING +RECKITT +RECKLESS +RECKLESSLY +RECKLESSNESS +RECKON +RECKONED +RECKONING +RECKONS +RECLAIM +RECLAIMED +RECLAIMING +RECLAMATION +RECLASSIFICATION +RECLASSIFIED +RECLASSIFY +RECLINER +RECLINING +RECLUSE +RECLUSIVE +RECOGNITION +RECOGNIZABLE +RECOGNIZANCE +RECOGNIZE +RECOGNIZED +RECOGNIZES +RECOGNIZING +RECOIL +RECOILED +RECOILLESS +RECOLLECT +RECOLLECTION +RECOLLECTIONS +RECOMBINANT +RECOMMEND +RECOMMENDATION +RECOMMENDATIONS +RECOMMENDED +RECOMMENDING +RECOMMENDS +RECOMMIT +RECONCILE +RECONCILED +RECONCILIATION +RECONCILING +RECONFIGURATION +RECONFIGURE +RECONFIGURED +RECONFIRMED +RECONNAISANCE +RECONNAISSANCE +RECONNECT +RECONSIDER +RECONSIDERATION +RECONSIDERED +RECONSIDERING +RECONSTITUTE +RECONSTITUTED +RECONSTRUCT +RECONSTRUCTED +RECONSTRUCTING +RECONSTRUCTION +RECONSTRUCTIVE +RECONVENE +RECONVENED +RECONVENES +RECORD +RECORD'S +RECORDABLE +RECORDED +RECORDER +RECORDERS +RECORDING +RECORDINGS +RECORDKEEPING +RECORDS +RECORDS' +RECOUNT +RECOUNTED +RECOUNTING +RECOUNTS +RECOUP +RECOUPED +RECOUPING +RECOURSE +RECOVER +RECOVERABLE +RECOVERED +RECOVERIES +RECOVERING +RECOVERS +RECOVERY +RECREATE +RECREATED +RECREATES +RECREATING +RECREATION +RECREATIONAL +RECREATIONS +RECRIMINATION +RECRIMINATIONS +RECROSS +RECRUIT +RECRUIT'S +RECRUITED +RECRUITER +RECRUITERS +RECRUITING +RECRUITMENT +RECRUITS +RECTAL +RECTANGLE +RECTANGLES +RECTANGULAR +RECTIFIED +RECTIFIER +RECTIFY +RECTITUDE +RECTOR +RECTORY +RECTUM +RECUPERATE +RECUPERATING +RECUPERATION +RECUR +RECURRED +RECURRENCE +RECURRENT +RECURRING +RECUSAL +RECUSE +RECUSED +RECUSING +RECYCLABLE +RECYCLABLES +RECYCLE +RECYCLED +RECYCLER +RECYCLERS +RECYCLES +RECYCLING +RED +REDACTED +REDBOOK +REDD +REDDAWAY +REDDEN +REDDING +REDDISH +REDDY +REDECORATING +REDEDICATE +REDEEM +REDEEMABLE +REDEEMED +REDEEMER +REDEEMING +REDEEMS +REDEFINE +REDEFINED +REDEFINING +REDEFINITION +REDEKER +REDEL +REDEMPTION +REDEMPTIONS +REDEMPTIVE +REDEPLOY +REDEPLOYED +REDEPLOYING +REDEPLOYMENT +REDESIGN +REDESIGNED +REDESIGNING +REDEVELOP +REDEVELOPMENT +REDFERN +REDFIELD +REDFISH +REDFORD +REDFORD'S +REDGRAVE +REDHEAD +REDINGTON +REDIRECT +REDIRECTED +REDIRECTING +REDIRECTION +REDISCOVER +REDISCOVERED +REDISCOVERING +REDISCOVERY +REDISTRIBUTE +REDISTRIBUTED +REDISTRIBUTING +REDISTRIBUTION +REDISTRICTING +REDLAND +REDLANDS +REDLINING +REDMAN +REDMOND +REDNECK +REDNECKS +REDO +REDOING +REDOLENT +REDONDO +REDONE +REDOUBLE +REDOUBLED +REDOUBLING +REDOUBT +REDRAW +REDRAWING +REDRAWN +REDRESS +REDS +REDS' +REDSHIRT +REDSKINS +REDSKINS' +REDSTONE +REDSTONE'S +REDUCE +REDUCED +REDUCES +REDUCING +REDUCTION +REDUCTIONS +REDUNDANCIES +REDUNDANCY +REDUNDANT +REDUX +REDWOOD +REDWOODS +REEBOK +REEBOK'S +REEBOKS +REECE +REED +REED'S +REEDER +REEDS +REEDY +REEF +REEFS +REEK +REEKING +REEKS +REEL +REELECT +REELECTED +REELECTION +REELED +REELING +REELS +REENACTMENT +REENTER +REENTRY +REES +REESE +REESE'S +REESTABLISH +REESTABLISHED +REEVALUATE +REEVE +REEVE'S +REEVES +REEVES' +REEXAMINE +REF +REFCO +REFCORP +REFER +REFEREE +REFEREES +REFERENCE +REFERENCED +REFERENCES +REFERENDA +REFERENDUM +REFERENDUMS +REFERRAL +REFERRALS +REFERRED +REFERRING +REFERS +REFILE +REFILED +REFILL +REFILLED +REFILLING +REFILLS +REFINANCE +REFINANCED +REFINANCING +REFINANCINGS +REFINE +REFINED +REFINEMENT +REFINEMENTS +REFINER +REFINERIES +REFINERS +REFINERY +REFINERY'S +REFINES +REFINING +REFINISHING +REFIT +REFITTED +REFLAGGED +REFLAGGING +REFLECT +REFLECTED +REFLECTING +REFLECTION +REFLECTIONS +REFLECTIVE +REFLECTOR +REFLECTORS +REFLECTS +REFLEX +REFLEXES +REFLEXIVE +REFLEXIVELY +REFLOATED +REFOCUS +REFOCUSED +REFOCUSING +REFORESTATION +REFORM +REFORMA +REFORMATION +REFORMATORY +REFORMED +REFORMER +REFORMERS +REFORMERS' +REFORMING +REFORMIST +REFORMISTS +REFORMS +REFORMULATE +REFORMULATED +REFRACTORIES +REFRACTORY +REFRAIN +REFRAINED +REFRAINING +REFRAINS +REFRESH +REFRESHED +REFRESHER +REFRESHES +REFRESHING +REFRESHINGLY +REFRESHMENT +REFRESHMENTS +REFRIGERANT +REFRIGERANTS +REFRIGERATE +REFRIGERATED +REFRIGERATION +REFRIGERATOR +REFRIGERATORS +REFS +REFSNES +REFUEL +REFUELED +REFUELING +REFUGE +REFUGEE +REFUGEES +REFUGEES' +REFUGES +REFUND +REFUNDABLE +REFUNDED +REFUNDING +REFUNDINGS +REFUNDS +REFURBISH +REFURBISHED +REFURBISHING +REFURBISHMENT +REFUSAL +REFUSALS +REFUSE +REFUSED +REFUSENIK +REFUSENIKS +REFUSES +REFUSING +REFUTE +REFUTED +REFUTES +REFUTING +REG +REGAIN +REGAINED +REGAINING +REGAINS +REGAL +REGALADO +REGALED +REGALIA +REGAN +REGAN'S +REGARD +REGARDED +REGARDING +REGARDLESS +REGARDS +REGATTA +REGENCY +REGENERATE +REGENERATION +REGENERON +REGENT +REGENTS +REGENTS' +REGGAE +REGGIE +REGIE +REGIME +REGIME'S +REGIMEN +REGIMENS +REGIMENT +REGIMENTAL +REGIMENTED +REGIMENTS +REGIMES +REGINA +REGINA'S +REGINALD +REGION +REGION'S +REGIONAL +REGIONALISM +REGIONALLY +REGIONALS +REGIONS +REGIS +REGISTER +REGISTERED +REGISTERING +REGISTERS +REGISTRAR +REGISTRATION +REGISTRATIONS +REGISTRIES +REGISTRY +REGO +REGRESSION +REGRESSIVE +REGRET +REGRETFUL +REGRETFULLY +REGRETS +REGRETTABLE +REGRETTABLY +REGRETTED +REGRETTING +REGROUP +REGROUPED +REGROUPING +REGULA +REGULAR +REGULARITY +REGULARLY +REGULARS +REGULATE +REGULATED +REGULATES +REGULATING +REGULATION +REGULATIONS +REGULATOR +REGULATOR'S +REGULATORS +REGULATORS' +REGULATORY +REHAB +REHABILITATE +REHABILITATED +REHABILITATING +REHABILITATION +REHABILITATIVE +REHASH +REHASHING +REHEAR +REHEARING +REHEARSAL +REHEARSALS +REHEARSE +REHEARSED +REHEARSING +REHIRE +REHIRED +REHIRING +REHNQUIST +REHNQUIST'S +REHYDRATION +REI +REICH +REICH'S +REICHARDT +REICHERT +REICHHOLD +REICHLER +REICHLEY +REICHMAN +REICHMANN +REICHMANNS +REICHSTAG +REID +REID'S +REIDY +REIF +REIGN +REIGNED +REIGNING +REIGNITE +REIGNITED +REIGNITING +REIGNS +REILLY +REILLY'S +REIMBURSE +REIMBURSED +REIMBURSEMENT +REIMBURSEMENTS +REIMBURSES +REIMBURSING +REIMPOSE +REIMPOSED +REIN +REINA +REINCARNATED +REINCARNATION +REINDEER +REINED +REINER +REINER'S +REINFORCE +REINFORCED +REINFORCEMENT +REINFORCEMENTS +REINFORCES +REINFORCING +REINGOLD +REINHARD +REINHARDT +REINHART +REINHOLD +REINING +REINS +REINSDORF +REINSTATE +REINSTATED +REINSTATEMENT +REINSTATING +REINSTITUTE +REINSTITUTED +REINSURANCE +REINSURER +REINSURERS +REINTEGRATION +REINTERPRETATION +REINTRODUCE +REINTRODUCED +REINTRODUCING +REINTRODUCTION +REINVENT +REINVENTED +REINVENTING +REINVENTION +REINVEST +REINVESTED +REINVESTING +REINVESTMENT +REINVIGORATE +REINVIGORATED +REINVIGORATING +REIS +REISCHAUER +REISER +REISMAN +REISS +REISSUE +REISSUED +REISSUES +REIT +REITER +REITERATE +REITERATED +REITERATES +REITERATING +REITERATION +REITMAN +REITS +REITZ +REJECT +REJECTED +REJECTING +REJECTION +REJECTIONS +REJECTS +REJOICE +REJOICED +REJOICING +REJOIN +REJOINDER +REJOINED +REJOINING +REJOINS +REJUVENATE +REJUVENATED +REJUVENATING +REJUVENATION +REKENTHALER +REKINDLE +REKINDLED +REKINDLING +RELAPSE +RELATE +RELATED +RELATES +RELATING +RELATION +RELATIONAL +RELATIONS +RELATIONSHIP +RELATIONSHIPS +RELATIVE +RELATIVE'S +RELATIVELY +RELATIVES +RELATIVES' +RELATIVISM +RELATIVITY +RELAUNCH +RELAUNCHED +RELAX +RELAXATION +RELAXED +RELAXES +RELAXING +RELAY +RELAYED +RELAYING +RELAYS +RELEARN +RELEASE +RELEASED +RELEASES +RELEASING +RELEGATE +RELEGATED +RELEGATING +RELENT +RELENTED +RELENTLESS +RELENTLESSLY +RELEVANCE +RELEVANCY +RELEVANT +RELIABILITY +RELIABLE +RELIABLY +RELIANCE +RELIANCE'S +RELIANT +RELIC +RELICS +RELIED +RELIEF +RELIEFS +RELIES +RELIEVE +RELIEVED +RELIEVER +RELIEVERS +RELIEVES +RELIEVING +RELIGION +RELIGION'S +RELIGIONS +RELIGIOUS +RELIGIOUSLY +RELINQUISH +RELINQUISHED +RELINQUISHES +RELINQUISHING +RELISH +RELISHED +RELISHES +RELISHING +RELIVE +RELIVED +RELIVING +RELMAN +RELOAD +RELOADED +RELOADING +RELOCATE +RELOCATED +RELOCATING +RELOCATION +RELOCATIONS +RELUCTANCE +RELUCTANT +RELUCTANTLY +RELY +RELYING +REM +REMADE +REMAIN +REMAINDER +REMAINED +REMAINING +REMAINS +REMAKE +REMAKES +REMAKING +REMAND +REMANDED +REMARK +REMARKABLE +REMARKABLY +REMARKED +REMARKING +REMARKS +REMARRIAGE +REMARRIED +REMARRY +REMATCH +REMBRANDT +REMEDIAL +REMEDIATION +REMEDIED +REMEDIES +REMEDY +REMEDYING +REMEMBER +REMEMBERED +REMEMBERING +REMEMBERS +REMEMBRANCE +REMEMBRANCES +REMER +REMIC +REMICK +REMICS +REMIND +REMINDED +REMINDER +REMINDERS +REMINDING +REMINDS +REMINGTON +REMINISCE +REMINISCED +REMINISCENCE +REMINISCENCES +REMINISCENT +REMINISCING +REMISS +REMISSION +REMIT +REMITTANCES +REMLINGER +REMNANT +REMNANTS +REMODEL +REMODELED +REMODELING +REMORSE +REMORSEFUL +REMOTE +REMOTELY +REMOTENESS +REMOTEST +REMOVABLE +REMOVAL +REMOVALS +REMOVE +REMOVED +REMOVER +REMOVES +REMOVING +REMUNERATION +REMY +REN +RENA +RENAISSANCE +RENAL +RENAME +RENAMED +RENAMING +RENAMO +RENATA +RENATO +RENAUD +RENAULT +RENAULT'S +RENDELL +RENDER +RENDERED +RENDERING +RENDERINGS +RENDERS +RENDEZVOUS +RENDING +RENDITION +RENDITIONS +RENE +RENEE +RENEGADE +RENEGADES +RENEGE +RENEGED +RENEGING +RENEGOTIATE +RENEGOTIATED +RENEGOTIATING +RENEGOTIATION +RENEW +RENEWABLE +RENEWAL +RENEWALS +RENEWED +RENEWING +RENEWS +RENFREW +RENFRO +RENIER +RENIN +RENMINBI +RENNER +RENNIE +RENNY +RENO +RENO'S +RENOIR +RENOIR'S +RENOMINATED +RENOMINATION +RENOUNCE +RENOUNCED +RENOUNCES +RENOUNCING +RENOVATE +RENOVATED +RENOVATING +RENOVATION +RENOVATIONS +RENOWN +RENOWNED +RENSHAW +RENSSELAER +RENT +RENTA +RENTAL +RENTALS +RENTED +RENTER +RENTERS +RENTING +RENTON +RENTS +RENUNCIATION +RENWICK +REOFFER +REOFFERED +REOFFERING +REOPEN +REOPENED +REOPENING +REOPENS +REORDER +REORDERING +REORGANIZATION +REORGANIZATIONS +REORGANIZE +REORGANIZED +REORGANIZES +REORGANIZING +REORIENT +REP +REPACKAGE +REPACKAGED +REPACKAGING +REPAID +REPAINT +REPAINTED +REPAINTING +REPAIR +REPAIRED +REPAIRING +REPAIRMAN +REPAIRMEN +REPAIRS +REPAP +REPARATION +REPARATIONS +REPARTEE +REPATRIATE +REPATRIATED +REPATRIATING +REPATRIATION +REPATRIATIONS +REPAVING +REPAY +REPAYABLE +REPAYING +REPAYMENT +REPAYMENTS +REPEAL +REPEALED +REPEALING +REPEALS +REPEAT +REPEATED +REPEATEDLY +REPEATING +REPEATS +REPEL +REPELLED +REPELLENT +REPELLENTS +REPELLING +REPENT +REPENTANCE +REPENTANT +REPENTED +REPERCUSSIONS +REPERTOIRE +REPERTORY +REPETITION +REPETITIONS +REPETITIOUS +REPETITIVE +REPHRASE +REPLACE +REPLACEABLE +REPLACED +REPLACEMENT +REPLACEMENTS +REPLACES +REPLACING +REPLANT +REPLANTED +REPLANTING +REPLAY +REPLAYED +REPLAYING +REPLAYS +REPLENISH +REPLENISHED +REPLENISHING +REPLENISHMENT +REPLETE +REPLICA +REPLICAS +REPLICATE +REPLICATED +REPLICATES +REPLICATING +REPLICATION +REPLIED +REPLIES +REPLIGEN +REPLY +REPLYING +REPO +REPONSE +REPONSIBILITY +REPORT +REPORT'S +REPORTABLE +REPORTAGE +REPORTED +REPORTEDLY +REPORTER +REPORTER'S +REPORTERS +REPORTERS' +REPORTING +REPORTS +REPOS +REPOSE +REPOSITION +REPOSITIONED +REPOSITIONING +REPOSITORIES +REPOSITORY +REPOSSESS +REPOSSESSED +REPOSSESSION +REPREHENSIBLE +REPRESENT +REPRESENTATION +REPRESENTATIONAL +REPRESENTATIONS +REPRESENTATIVE +REPRESENTATIVE'S +REPRESENTATIVES +REPRESENTATIVES' +REPRESENTED +REPRESENTING +REPRESENTS +REPRESS +REPRESSED +REPRESSING +REPRESSION +REPRESSIONS +REPRESSIVE +REPRICE +REPRICED +REPRICING +REPRIEVE +REPRIMAND +REPRIMANDED +REPRIMANDS +REPRINT +REPRINTED +REPRINTING +REPRINTS +REPRISAL +REPRISALS +REPRISE +REPRISING +REPROACH +REPROCESS +REPROCESSED +REPROCESSING +REPRODUCE +REPRODUCED +REPRODUCES +REPRODUCING +REPRODUCTION +REPRODUCTIONS +REPRODUCTIVE +REPROGRAM +REPROGRAMMED +REPROGRAMMING +REPS +REPSOL +REPTILE +REPTILES +REPUBBLICA +REPUBLIC +REPUBLIC'S +REPUBLICA +REPUBLICAN +REPUBLICAN'S +REPUBLICANISM +REPUBLICANS +REPUBLICANS' +REPUBLICBANK +REPUBLICBANK'S +REPUBLICS +REPUBLICS' +REPUDIATE +REPUDIATED +REPUDIATING +REPUDIATION +REPUGNANT +REPULSE +REPULSED +REPULSIVE +REPURCHASE +REPURCHASED +REPURCHASES +REPURCHASING +REPUTABLE +REPUTATION +REPUTATIONS +REPUTE +REPUTED +REPUTEDLY +REQUALIFY +REQUEST +REQUESTED +REQUESTING +REQUESTS +REQUIEM +REQUIRE +REQUIRED +REQUIREMENT +REQUIREMENTS +REQUIRES +REQUIRING +REQUISITE +REREAD +REREGULATION +REROUTE +REROUTED +REROUTING +RERUN +RERUNS +RES +RESALE +RESALES +RESCHEDULE +RESCHEDULED +RESCHEDULING +RESCIND +RESCINDED +RESCINDING +RESCISSION +RESCISSIONS +RESCUE +RESCUE'S +RESCUED +RESCUER +RESCUERS +RESCUES +RESCUING +RESEARCH +RESEARCH'S +RESEARCHED +RESEARCHER +RESEARCHERS +RESEARCHERS' +RESEARCHES +RESEARCHING +RESEDA +RESELL +RESELLER +RESELLERS +RESELLING +RESELLS +RESEMBLANCE +RESEMBLE +RESEMBLED +RESEMBLES +RESEMBLING +RESENT +RESENTED +RESENTENCED +RESENTENCING +RESENTFUL +RESENTMENT +RESENTMENTS +RESENTS +RESERVATION +RESERVATION'S +RESERVATIONS +RESERVE +RESERVE'S +RESERVED +RESERVES +RESERVING +RESERVIST +RESERVISTS +RESERVOIR +RESERVOIRS +RESET +RESETTLE +RESETTLED +RESETTLEMENT +RESETTLING +RESHAPE +RESHAPED +RESHAPING +RESHUFFLE +RESHUFFLED +RESHUFFLING +RESIDE +RESIDED +RESIDENCE +RESIDENCES +RESIDENCY +RESIDENT +RESIDENT'S +RESIDENTIAL +RESIDENTS +RESIDENTS' +RESIDES +RESIDING +RESIDUAL +RESIDUALS +RESIDUE +RESIDUES +RESIGN +RESIGNATION +RESIGNATIONS +RESIGNED +RESIGNING +RESIGNS +RESILIENCE +RESILIENCY +RESILIENT +RESIN +RESINS +RESIST +RESISTANCE +RESISTANT +RESISTED +RESISTENCE +RESISTERS +RESISTING +RESISTS +RESLER +RESNICK +RESNICK'S +RESNIK +RESO +RESOLD +RESOLUTE +RESOLUTELY +RESOLUTION +RESOLUTION'S +RESOLUTIONS +RESOLVE +RESOLVED +RESOLVES +RESOLVING +RESONANCE +RESONANT +RESONATE +RESONATED +RESONATES +RESONATING +RESORT +RESORT'S +RESORTED +RESORTING +RESORTS +RESORTS' +RESOUND +RESOUNDED +RESOUNDING +RESOUNDINGLY +RESOURCE +RESOURCEFUL +RESOURCEFULNESS +RESOURCES +RESOURCES' +RESPECT +RESPECTABILITY +RESPECTABLE +RESPECTED +RESPECTFUL +RESPECTFULLY +RESPECTING +RESPECTIVE +RESPECTIVELY +RESPECTS +RESPIRATION +RESPIRATOR +RESPIRATORS +RESPIRATORY +RESPITE +RESPLENDENT +RESPOND +RESPONDED +RESPONDENT +RESPONDENTS +RESPONDING +RESPONDS +RESPONSE +RESPONSES +RESPONSIBILITIES +RESPONSIBILITY +RESPONSIBLE +RESPONSIBLITY +RESPONSIBLY +RESPONSIVE +RESPONSIVENESS +RESSA +RESSLER +REST +RESTART +RESTARTED +RESTARTING +RESTATE +RESTATED +RESTATEMENT +RESTATING +RESTAURANT +RESTAURANT'S +RESTAURANTS +RESTAURATEUR +RESTAURATEURS +RESTED +RESTFUL +RESTING +RESTITUTION +RESTIVE +RESTLESS +RESTLESSNESS +RESTOCK +RESTOCKING +RESTON +RESTORATION +RESTORATIONS +RESTORATIVE +RESTORE +RESTORED +RESTORER +RESTORERS +RESTORES +RESTORING +RESTRAIN +RESTRAINED +RESTRAINING +RESTRAINS +RESTRAINT +RESTRAINTS +RESTRICT +RESTRICTED +RESTRICTING +RESTRICTION +RESTRICTIONS +RESTRICTIVE +RESTRICTS +RESTROOM +RESTROOMS +RESTRUCTURE +RESTRUCTURED +RESTRUCTURES +RESTRUCTURING +RESTRUCTURINGS +RESTS +RESTUDY +RESTYLED +RESUBMIT +RESUBMITTED +RESULT +RESULTANT +RESULTED +RESULTING +RESULTS +RESUME +RESUMED +RESUMES +RESUMING +RESUMPTION +RESUPPLY +RESURFACE +RESURFACED +RESURFACING +RESURGENCE +RESURGENT +RESURRECT +RESURRECTED +RESURRECTING +RESURRECTION +RESUSCITATE +RESUSCITATED +RESUSCITATION +RETAIL +RETAILER +RETAILER'S +RETAILERS +RETAILERS' +RETAILING +RETAILS +RETAIN +RETAINED +RETAINER +RETAINERS +RETAINING +RETAINS +RETAKE +RETAKEN +RETAKING +RETALIATE +RETALIATED +RETALIATING +RETALIATION +RETALIATORY +RETARD +RETARDANT +RETARDATION +RETARDED +RETARDING +RETCHIN +RETELLING +RETENTION +RETEST +RETESTED +RETHINK +RETHINKING +RETHOUGHT +RETICENCE +RETICENT +RETIN +RETINA +RETINITIS +RETINUE +RETIRE +RETIRED +RETIREE +RETIREE'S +RETIREES +RETIREES' +RETIREMENT +RETIREMENTS +RETIRES +RETIRING +RETOLD +RETOOK +RETOOL +RETOOLED +RETOOLING +RETORT +RETORTED +RETORTS +RETRACE +RETRACED +RETRACING +RETRACT +RETRACTABLE +RETRACTED +RETRACTION +RETRAIN +RETRAINED +RETRAINING +RETRANSMISSION +RETREAT +RETREATED +RETREATING +RETREATS +RETRENCH +RETRENCHING +RETRENCHMENT +RETRIAL +RETRIBUTION +RETRIED +RETRIEVAL +RETRIEVE +RETRIEVED +RETRIEVER +RETRIEVES +RETRIEVING +RETRO +RETROACTIVE +RETROACTIVELY +RETROACTIVITY +RETROFIT +RETROFITTED +RETROFITTING +RETROSPECT +RETROSPECTIVE +RETROVIR +RETRY +RETTON +RETURN +RETURNABLE +RETURNED +RETURNEES +RETURNER +RETURNING +RETURNS +REUBEN +REUBENS +REUNIFICATION +REUNIFIED +REUNIFY +REUNIFYING +REUNION +REUNIONS +REUNITE +REUNITED +REUNITING +REUSABLE +REUSCHEL +REUSE +REUSED +REUSING +REUSS +REUTER +REUTERS +REUTHER +REUVEN +REV +REVALUATION +REVAMP +REVAMPED +REVAMPING +REVCO +REVCO'S +REVEAL +REVEALED +REVEALING +REVEALS +REVEL +REVELATION +REVELATIONS +REVELED +REVELERS +REVELING +REVELL +REVELRY +REVELS +REVENGE +REVENUE +REVENUES +REVERBERATE +REVERBERATED +REVERBERATES +REVERBERATING +REVERBERATIONS +REVERCOMB +REVERE +REVERED +REVERENCE +REVEREND +REVERENT +REVERENTIAL +REVERENTLY +REVERIE +REVERON +REVERSAL +REVERSALS +REVERSE +REVERSED +REVERSER +REVERSERS +REVERSES +REVERSIBLE +REVERSING +REVERSION +REVERT +REVERTED +REVERTING +REVERTS +REVIEW +REVIEW'S +REVIEWED +REVIEWER +REVIEWERS +REVIEWING +REVIEWS +REVILED +REVISE +REVISED +REVISES +REVISING +REVISION +REVISIONISM +REVISIONIST +REVISIONISTS +REVISIONS +REVISIT +REVISITED +REVISITING +REVITALIZATION +REVITALIZE +REVITALIZED +REVITALIZING +REVIVAL +REVIVALS +REVIVE +REVIVED +REVIVES +REVIVING +REVLON +REVLON'S +REVOCATION +REVOKE +REVOKED +REVOKING +REVOLT +REVOLTED +REVOLTING +REVOLTS +REVOLUTION +REVOLUTION'S +REVOLUTIONARIES +REVOLUTIONARY +REVOLUTIONIZE +REVOLUTIONIZED +REVOLUTIONIZING +REVOLUTIONS +REVOLVE +REVOLVED +REVOLVER +REVOLVERS +REVOLVES +REVOLVING +REVS +REVSON +REVUE +REVUES +REVULSION +REVVED +REVVING +REWARD +REWARDED +REWARDING +REWARDS +REWEY +REWIND +REWORK +REWORKED +REWORKING +REWRITE +REWRITES +REWRITING +REWRITTEN +REWROTE +REX +REXENE +REXHAM +REXNORD +REXRODT +REY +REYES +REYKJAVIK +REYNA +REYNALDO +REYNARD +REYNOLDS +REYNOLDS' +REYNOLDS'S +REYNOSA +REZA +REZONING +RHAPSODY +RHEA +RHEE +RHEIN +RHEINGOLD +RHESUS +RHETORIC +RHETORICAL +RHETORICALLY +RHETT +RHEUMATIC +RHEUMATOID +RHINE +RHINELAND +RHINESTONE +RHINESTONES +RHINO +RHINOCEROS +RHINOS +RHOADES +RHOADS +RHODA +RHODE +RHODEN +RHODES +RHODESIA +RHODESIAN +RHODIUM +RHONDA +RHONE +RHUBARB +RHYME +RHYMES +RHYMING +RHYS +RHYTHM +RHYTHMIC +RHYTHMICALLY +RHYTHMS +RIA +RIAL +RIALS +RIB +RIBAS +RIBAVIRIN +RIBBED +RIBBENTROP +RIBBING +RIBBON +RIBBONS +RIBBS +RIBEIRO +RIBERA +RIBICOFF +RIBS +RIC +RICA +RICA'S +RICAN +RICANS +RICARD +RICARDO +RICCARDO +RICCI +RICCIARDI +RICCIO +RICE +RICE'S +RICH +RICH'S +RICHARD +RICHARD'S +RICHARDS +RICHARDS' +RICHARDSON +RICHARDSON'S +RICHCO +RICHE +RICHEMONT +RICHER +RICHES +RICHEST +RICHEY +RICHFIELD +RICHIE +RICHLAND +RICHLY +RICHMAN +RICHMOND +RICHMOND'S +RICHNESS +RICHTER +RICK +RICK'S +RICKARD +RICKETTS +RICKETY +RICKEY +RICKI +RICKIE +RICKLES +RICKMAN +RICKS +RICKY +RICO +RICO'S +RICOCHET +RICOCHETED +RICOH +RICOSTRUZIONE +RICOTTA +RICUPERO +RID +RIDDANCE +RIDDELL +RIDDEN +RIDDER +RIDDER'S +RIDDICK +RIDDING +RIDDLE +RIDDLED +RIDDLER +RIDDLES +RIDE +RIDEAU +RIDENOUR +RIDER +RIDERS +RIDERSHIP +RIDES +RIDGE +RIDGEFIELD +RIDGES +RIDGEWAY +RIDGEWOOD +RIDGWAY +RIDICULE +RIDICULED +RIDICULES +RIDICULING +RIDICULOUS +RIDICULOUSLY +RIDING +RIDLEY +RIEDEL +RIEDERS +RIEFENSTAHL +RIEGLE +RIEGLE'S +RIES +RIESLING +RIFAI +RIFE +RIFF +RIFFS +RIFKIN +RIFKIN'S +RIFKIND +RIFLE +RIFLED +RIFLEMAN +RIFLES +RIFT +RIFTS +RIG +RIGA +RIGBY +RIGG +RIGGED +RIGGING +RIGGIO +RIGGS +RIGHETTI +RIGHT +RIGHT'S +RIGHTED +RIGHTEOUS +RIGHTEOUSNESS +RIGHTER +RIGHTFUL +RIGHTFULLY +RIGHTING +RIGHTIST +RIGHTISTS +RIGHTLY +RIGHTNESS +RIGHTS +RIGHTS' +RIGHTWARD +RIGHTWING +RIGID +RIGIDITIES +RIGIDITY +RIGIDLY +RIGOBERTO +RIGOLETTO +RIGOR +RIGOROUS +RIGOROUSLY +RIGORS +RIGS +RIGUEUR +RIINA +RIJO +RIK +RIKER +RIKERS +RIKKI +RIKLIS +RIKSBANK +RILE +RILED +RILES +RILEY +RILEY'S +RILL +RILWANU +RIM +RIMMED +RIMS +RIMSKY +RINALDO +RINCON +RIND +RINDS +RINEHART +RINEY +RINFRET +RING +RING'S +RINGED +RINGEL +RINGER +RINGERS +RINGGIT +RINGING +RINGLEADER +RINGLEADERS +RINGLING +RINGMASTER +RINGO +RINGS +RINGSIDE +RINK +RINKS +RINSE +RINSED +RIO +RIO'S +RIOJA +RIORDAN +RIORDAN'S +RIOS +RIOT +RIOTED +RIOTERS +RIOTING +RIOTOUS +RIOTS +RIP +RIPE +RIPEN +RIPENED +RIPENING +RIPKEN +RIPLEY +RIPLEY'S +RIPOFF +RIPPE +RIPPED +RIPPER +RIPPING +RIPPLE +RIPPLED +RIPPLES +RIPPLING +RIPS +RISC +RISE +RISEN +RISER +RISERS +RISES +RISING +RISK +RISKE +RISKED +RISKIER +RISKIEST +RISKINESS +RISKING +RISKS +RISKY +RISLEY +RISON +RISOTTO +RISQUE +RITA +RITALIN +RITCHIE +RITE +RITE'S +RITES +RITTENBERG +RITTENHOUSE +RITTER +RITTERBUSCH +RITTEREISER +RITUAL +RITUALISTIC +RITUALS +RITZ +RITZY +RIUNITE +RIVA +RIVAL +RIVAL'S +RIVALED +RIVALING +RIVALRIES +RIVALRY +RIVALS +RIVALS' +RIVARD +RIVAS +RIVEN +RIVER +RIVER'S +RIVERA +RIVERA'S +RIVERBANK +RIVERBED +RIVERBOAT +RIVERBOATS +RIVERDALE +RIVERFRONT +RIVERHEAD +RIVERO +RIVERS +RIVERS' +RIVERSIDE +RIVERWOOD +RIVET +RIVETED +RIVETING +RIVETS +RIVIERA +RIVKIN +RIVKIND +RIVLIN +RIYADH +RIYALS +RIZZO +RIZZOLI +RIZZUTO +RO +ROA +ROACH +ROACHE +ROACHES +ROAD +ROADBLOCK +ROADBLOCKS +ROADHOUSE +ROADMAP +ROADMASTER +ROADS +ROADSHOW +ROADSIDE +ROADSIDES +ROADSTER +ROADWAY +ROADWAYS +ROALD +ROAM +ROAMED +ROAMING +ROAMS +ROAN +ROANOKE +ROAR +ROARED +ROARING +ROARK +ROARS +ROAST +ROASTED +ROASTER +ROASTERS +ROASTING +ROASTS +ROB +ROBAINA +ROBARDS +ROBB +ROBB'S +ROBBED +ROBBEN +ROBBER +ROBBERIES +ROBBERS +ROBBERY +ROBBIE +ROBBING +ROBBINS +ROBBINS' +ROBBY +ROBE +ROBED +ROBERSON +ROBERT +ROBERT'S +ROBERTA +ROBERTI +ROBERTO +ROBERTS +ROBERTS' +ROBERTS'S +ROBERTSON +ROBERTSON'S +ROBES +ROBESON +ROBESONIAN +ROBIN +ROBIN'S +ROBINETTE +ROBINS +ROBINS' +ROBINS'S +ROBINSON +ROBINSON'S +ROBISON +ROBITAILLE +ROBLEDO +ROBLES +ROBOCOP +ROBOT +ROBOTIC +ROBOTICS +ROBOTS +ROBS +ROBSON +ROBUST +ROBUSTLY +ROBYN +ROC +ROCA +ROCAP +ROCARD +ROCCA +ROCCO +ROCHA +ROCHE +ROCHE'S +ROCHELLE +ROCHESTER +ROCHESTER'S +ROCHON +ROCHON'S +ROCK +ROCK'S +ROCKABILLY +ROCKAWAY +ROCKED +ROCKEFELLER +ROCKEFELLER'S +ROCKEFELLERS +ROCKER +ROCKERS +ROCKET +ROCKET'S +ROCKETDYNE +ROCKETED +ROCKETING +ROCKETS +ROCKETS' +ROCKETTES +ROCKFORD +ROCKIES +ROCKIN' +ROCKING +ROCKINGHAM +ROCKLAND +ROCKMAN +ROCKNE +ROCKPORT +ROCKS +ROCKVILLE +ROCKWELL +ROCKWELL'S +ROCKWOOD +ROCKY +ROCOCO +ROD +RODALE +RODDENBERRY +RODDICK +RODDY +RODE +RODEN +RODENT +RODENTS +RODEO +RODEOS +RODERICK +RODGER +RODGERS +RODHAM +RODIN +RODINO +RODMAN +RODMAN'S +RODNEY +RODOLFO +RODRIGO +RODRIGUES +RODRIGUEZ +RODRIGUEZ'S +RODRIQUEZ +RODS +ROE +ROEBUCK +ROEDER +ROELLE +ROEMER +ROEMER'S +ROESSLER +ROFFMAN +ROGACHEV +ROGAINE +ROGELIO +ROGER +ROGER'S +ROGERS +ROGERS' +ROGERS'S +ROGERSON +ROGOW +ROGUE +ROGUES +ROH +ROH'S +ROHATYN +ROHDE +ROHM +ROHR +ROHRABACHER +ROHRER +ROHS +ROHWEDDER +ROIL +ROILED +ROILING +ROJAS +ROLAND +ROLANDO +ROLDAN +ROLE +ROLES +ROLEX +ROLF +ROLFE +ROLL +ROLL'S +ROLLA +ROLLAND +ROLLBACK +ROLLBACKS +ROLLED +ROLLER +ROLLERBLADE +ROLLERCOASTER +ROLLERS +ROLLICKING +ROLLIE +ROLLIN +ROLLING +ROLLINS +ROLLINS' +ROLLOUT +ROLLOVER +ROLLOVERS +ROLLS +ROLLWAGEN +ROLM +ROLODEX +ROM +ROM'S +ROMA +ROMAIN +ROMAINE +ROMAN +ROMANCE +ROMANCES +ROMANCING +ROMANIA +ROMANIA'S +ROMANIAN +ROMANIANS +ROMANO +ROMANOV +ROMANS +ROMANTIC +ROMANTICALLY +ROMANTICISM +ROMANTICIZE +ROMANTICIZED +ROMANTICS +ROMARIO +ROMBERG +ROME +ROME'S +ROMEO +ROMER +ROMERO +ROMINGER +ROMM +ROMMEL +ROMNEY +ROMNEY'S +ROMP +ROMPED +ROMPING +ROMPRES +ROMS +ROMULO +ROMULUS +RON +RON'S +RONA +RONALD +RONAN +RONEY +RONG +RONGJI +RONI +RONIN +RONNA +RONNIE +RONNIE'S +RONNING +RONNY +RONSON +RONSTADT +ROO +ROOF +ROOFED +ROOFER +ROOFING +ROOFS +ROOFTOP +ROOFTOPS +ROOK +ROOKER +ROOKIE +ROOKIES +ROOKS +ROOM +ROOM'S +ROOMFUL +ROOMIER +ROOMING +ROOMMATE +ROOMMATES +ROOMS +ROOMY +ROONE +ROONEY +ROONEY'S +ROOS +ROOSEVELT +ROOSEVELT'S +ROOST +ROOSTER +ROOSTERS +ROOT +ROOT'S +ROOTED +ROOTER +ROOTING +ROOTLESS +ROOTS +ROPAK +ROPE +ROPED +ROPER +ROPER'S +ROPES +ROPING +ROQUE +RORER +RORER'S +RORSCHACH +RORY +ROS +ROSA +ROSALES +ROSALIE +ROSALIND +ROSALYN +ROSALYNN +ROSANNA +ROSANNE +ROSARIO +ROSARY +ROSAS +ROSCOE +ROSE +ROSE'S +ROSEANNE +ROSEANNE'S +ROSEBUD +ROSELAND +ROSELAWN +ROSEMARIE +ROSEMARY +ROSEMEAD +ROSEMONT +ROSEN +ROSEN'S +ROSENBAUM +ROSENBERG +ROSENBERG'S +ROSENBERGS +ROSENBLATT +ROSENBLOOM +ROSENBLUM +ROSENBLUTH +ROSENCRANS +ROSENFELD +ROSENFIELD +ROSENMAN +ROSENSTEIN +ROSENTHAL +ROSENTHAL'S +ROSENZWEIG +ROSES +ROSETT +ROSETTA +ROSEVILLE +ROSEWOOD +ROSEY +ROSH +ROSIE +ROSIER +ROSLYN +ROSNER +ROSPATCH +ROSS +ROSS' +ROSS'S +ROSSELLINI +ROSSER +ROSSET +ROSSETTI +ROSSI +ROSSIGNOL +ROSSINI +ROSSINI'S +ROSSIYA +ROSTENKOWSKI +ROSTENKOWSKI'S +ROSTER +ROSTERS +ROSTOCK +ROSTOV +ROSTROPOVICH +ROSTRUM +ROSTY +ROSWELL +ROSY +ROT +ROTA +ROTARY +ROTATE +ROTATED +ROTATES +ROTATING +ROTATION +ROTATIONS +ROTATOR +ROTE +ROTENBERG +ROTH +ROTH'S +ROTHBERG +ROTHE +ROTHENBERG +ROTHER +ROTHMAN +ROTHMANS +ROTHMEIER +ROTHSCHILD +ROTHSCHILD'S +ROTHSCHILDS +ROTHSTEIN +ROTHWAX +ROTISSERIE +ROTO +ROTOR +ROTORS +ROTS +ROTTED +ROTTEN +ROTTERDAM +ROTTING +ROTTWEILER +ROTUND +ROTUNDA +ROUGE +ROUGE'S +ROUGH +ROUGHED +ROUGHER +ROUGHEST +ROUGHING +ROUGHLY +ROUGHNESS +ROUGHSHOD +ROUKEMA +ROULETTE +ROUND +ROUNDABOUT +ROUNDED +ROUNDER +ROUNDING +ROUNDLY +ROUNDS +ROUNDTABLE +ROUNDTRIP +ROUNDUP +ROUNDUPS +ROURKE +ROUSE +ROUSED +ROUSH +ROUSING +ROUSSEAU +ROUSSEL +ROUSSELL +ROUSSO +ROUSTED +ROUT +ROUTE +ROUTED +ROUTERS +ROUTES +ROUTINE +ROUTINELY +ROUTINES +ROUTING +ROUX +ROVE +ROVER +ROVER'S +ROVERS +ROVING +ROW +ROWAN +ROWAN'S +ROWBOAT +ROWDIES +ROWDY +ROWE +ROWE'S +ROWED +ROWELL +ROWEN +ROWING +ROWLAND +ROWLAND'S +ROWLEY +ROWLIE +ROWLY +ROWNTREE +ROWNY +ROWS +ROXANI +ROXANNE +ROXBURY +ROXY +ROY +ROY'S +ROYAL +ROYAL'S +ROYALE +ROYALIST +ROYALLY +ROYALS +ROYALS' +ROYALTIES +ROYALTY +ROYBAL +ROYCE +ROYCE'S +ROYCES +ROYER +ROYEX +ROYKO +ROYSTER +ROZ +ROZANNE +ROZELLE +ROZET +RUB +RUBBED +RUBBER +RUBBERIZED +RUBBERMAID +RUBBERY +RUBBING +RUBBISH +RUBBLE +RUBE +RUBEL +RUBELLA +RUBEN +RUBENS +RUBENSTEIN +RUBICAM +RUBICAM'S +RUBICON +RUBIES +RUBIN +RUBIN'S +RUBINO +RUBINSTEIN +RUBIO +RUBLE +RUBLE'S +RUBLES +RUBRIC +RUBS +RUBY +RUBY'S +RUCKELSHAUS +RUCKER +RUCKUS +RUDD +RUDDER +RUDDERLESS +RUDDOCK +RUDDY +RUDE +RUDELY +RUDENESS +RUDENSTINE +RUDER +RUDER'S +RUDI +RUDIMENTARY +RUDIN +RUDING +RUDMAN +RUDMAN'S +RUDNER +RUDNICK +RUDOLF +RUDOLPH +RUDOLPH'S +RUDY +RUDYARD +RUE +RUEFUL +RUEFULLY +RUEHE +RUELAS +RUFF +RUFFIN +RUFFLE +RUFFLED +RUFFLES +RUFFO +RUFUS +RUG +RUGBY +RUGER +RUGGED +RUGGIERO +RUGS +RUHOLLAH +RUHR +RUIN +RUINED +RUINING +RUINOUS +RUINS +RUIZ +RUKEYSER +RUKH +RUKN +RULE +RULE'S +RULED +RULEMAKING +RULER +RULERS +RULES +RULING +RULING'S +RULINGS +RUM +RUMANIA +RUMBLE +RUMBLED +RUMBLES +RUMBLING +RUMBLINGS +RUMINATIONS +RUMMAGE +RUMMAGED +RUMMAGING +RUMOR +RUMORED +RUMORS +RUMOURS +RUMP +RUMPLED +RUMPOLE +RUMSFELD +RUMSON +RUN +RUNAROUND +RUNAWAY +RUNAWAYS +RUNCIE +RUNDOWN +RUNG +RUNGS +RUNKEL +RUNNER +RUNNER'S +RUNNERS +RUNNIN' +RUNNING +RUNNY +RUNOFF +RUNOFFS +RUNS +RUNUP +RUNWAY +RUNWAYS +RUNYAN +RUNYON +RUNYON'S +RUNZHEIMER +RUPEE +RUPEES +RUPERT +RUPIAH +RUPP +RUPTURE +RUPTURED +RUPTURES +RUPTURING +RURAL +RUSE +RUSH +RUSHDIE +RUSHDIE'S +RUSHED +RUSHER +RUSHERS +RUSHES +RUSHING +RUSHMORE +RUSK +RUSKIN +RUSLAN +RUSS +RUSSA +RUSSEL +RUSSELL +RUSSELL'S +RUSSELLVILLE +RUSSERT +RUSSIA +RUSSIA'S +RUSSIAN +RUSSIANS +RUSSIANS' +RUSSO +RUST +RUSTED +RUSTIC +RUSTING +RUSTLE +RUSTLERS +RUSTLING +RUSTON +RUSTY +RUT +RUTAN +RUTGERS +RUTH +RUTH'S +RUTHERFORD +RUTHIE +RUTHLESS +RUTHLESSLY +RUTHLESSNESS +RUTLAND +RUTLEDGE +RUTS +RUTSKOI +RUTTED +RUTZ +RUUD +RUUTEL +RUVOLO +RUWEISHID +RWANDA +RWANDA'S +RWANDAN +RWANDANS +RY +RYAN +RYAN'S +RYBKIN +RYDELL +RYDER +RYDER'S +RYE +RYKA +RYKOFF +RYLAND +RYMER +RYPIEN +RYSKAMP +RYSZARD +RYUTARO +RYZHKOV +RYZHKOV'S +S. +S.'S +SA +SAAB +SAAB'S +SAAD +SAARLAND +SAATCHI +SAATCHI'S +SABA +SABAH +SABAN +SABATINI +SABATO +SABBAH +SABBATH +SABBATICAL +SABENA +SABER +SABERHAGEN +SABERS +SABHA +SABIN +SABINA +SABINE +SABLE +SABO +SABOL +SABOTAGE +SABOTAGED +SABOTAGING +SABOTEURS +SABRA +SABRE +SABRES +SABRI +SABRINA +SAC +SACCHARINE +SACCHI +SACCO +SACHER +SACHS +SACHS'S +SACILOR +SACIRBEY +SACK +SACKED +SACKING +SACKLER +SACKS +SACRAMENT +SACRAMENTO +SACRAMENTO'S +SACRAMENTS +SACRED +SACRIFICE +SACRIFICED +SACRIFICES +SACRIFICIAL +SACRIFICING +SACRILEGE +SACRILEGIOUS +SACROSANCT +SACS +SAD +SADA +SADAKO +SADAT +SADAT'S +SADDAM +SADDAM'S +SADDENED +SADDENS +SADDER +SADDEST +SADDLE +SADDLED +SADDLES +SADDLING +SADE +SADEK +SADIE +SADIK +SADIQ +SADISTIC +SADLER +SADLER'S +SADLY +SADNESS +SADOMASOCHISM +SADOMASOCHISTIC +SADR +SADRUDDIN +SAEB +SAEED +SAEMAUL +SAENZ +SAFARI +SAFARIS +SAFE +SAFECARD +SAFECO +SAFEGUARD +SAFEGUARDED +SAFEGUARDING +SAFEGUARDS +SAFEKEEPING +SAFELY +SAFER +SAFES +SAFEST +SAFETIES +SAFETY +SAFEWAY +SAFEWAY'S +SAFFRON +SAFI +SAFIR +SAFIRE +SAFRA +SAFRA'S +SAG +SAGA +SAGAN +SAGANSKY +SAGAS +SAGAWA +SAGDEEV +SAGE +SAGEBRUSH +SAGER +SAGES +SAGGED +SAGGING +SAGINAW +SAGS +SAGUARO +SAHARA +SAHARAN +SAHEL +SAHOUR +SAI +SAID +SAIF +SAIGON +SAIKI +SAIL +SAILBOAT +SAILBOATS +SAILED +SAILING +SAILINGS +SAILOR +SAILOR'S +SAILORS +SAILORS' +SAILS +SAINSBURY +SAINT +SAINTE +SAINTHOOD +SAINTLY +SAINTS +SAINTS' +SAIPAN +SAISON +SAITAMA +SAITO +SAJAK +SAJUDIS +SAKAI +SAKAMOTO +SAKE +SAKES +SAKHALIN +SAKHAROV +SAKHAROV'S +SAKIGAKE +SAKOWITZ +SAKS +SAKURA +SAL +SALA +SALAAM +SALABLE +SALACIOUS +SALAD +SALADS +SALAH +SALAM +SALAMANDER +SALAMANDERS +SALAMEH +SALAMI +SALAMON +SALANG +SALANT +SALARIED +SALARIES +SALARY +SALAS +SALAZAR +SALCIDO +SALCIDO'S +SALDANA +SALDIVAR +SALE +SALE'S +SALEABLE +SALEH +SALEM +SALEM'S +SALERNO +SALES +SALESIAN +SALESMAN +SALESMAN'S +SALESMANSHIP +SALESMEN +SALESPEOPLE +SALESPERSON +SALESWOMAN +SALGADO +SALHANY +SALIENT +SALIM +SALINA +SALINAS +SALINAS' +SALINAS'S +SALINE +SALINGER +SALISBURY +SALIVA +SALIVATING +SALK +SALLE +SALLEY +SALLIE +SALLINGER +SALLY +SALMAN +SALMON +SALMONELLA +SALO +SALOME +SALOMON +SALOMON'S +SALON +SALONEN +SALONGA +SALONS +SALOON +SALOONS +SALSA +SALSAS +SALT +SALTED +SALTER +SALTING +SALTS +SALTWATER +SALTY +SALTZMAN +SALUTARY +SALUTE +SALUTED +SALUTES +SALUTING +SALVADOR +SALVADOR'S +SALVADORAN +SALVADORANS +SALVAGE +SALVAGEABLE +SALVAGED +SALVAGING +SALVATION +SALVATORE +SALVE +SALVI +SALVI'S +SALVO +SALVOS +SALWEN +SALZBURG +SALZMAN +SAM +SAM'S +SAMANTHA +SAMAR +SAMARANCH +SAMARIA +SAMARITAN +SAMARITANS +SAMARKAND +SAMASHKI +SAMAYOA +SAMBA +SAME +SAMENESS +SAMESTORE +SAMI +SAMIR +SAMMONS +SAMMY +SAMOA +SAMOAN +SAMPER +SAMPER'S +SAMPHAN +SAMPLE +SAMPLED +SAMPLER +SAMPLES +SAMPLING +SAMPLINGS +SAMPRAS +SAMPSON +SAMRIN +SAMS +SAMSON +SAMSONITE +SAMSUNG +SAMSUNG'S +SAMUEL +SAMUEL'S +SAMUELS +SAMUELSON +SAMURAI +SAN +SANAA +SANBORN +SANCHEZ +SANCHEZ'S +SANCTIMONIOUS +SANCTION +SANCTIONED +SANCTIONING +SANCTIONS +SANCTITY +SANCTUARIES +SANCTUARY +SANCTUM +SAND +SAND'S +SANDA +SANDALS +SANDBAG +SANDBAGGED +SANDBAGGING +SANDBAGS +SANDBAR +SANDBERG +SANDBOX +SANDBURG +SANDER +SANDERS +SANDERS' +SANDERSON +SANDI +SANDIA +SANDIEGO +SANDING +SANDINISTA +SANDINISTAS +SANDINISTAS' +SANDINO +SANDLER +SANDNER +SANDOR +SANDORI +SANDOVAL +SANDOZ +SANDOZ'S +SANDPAPER +SANDRA +SANDS +SANDSTONE +SANDSTORM +SANDUSKY +SANDWICH +SANDWICHED +SANDWICHES +SANDY +SANDY'S +SANE +SANER +SANFORD +SANG +SANGER +SANGMEISTER +SANGRE +SANGUINE +SANGUINETTI +SANI +SANITARIUM +SANITARY +SANITATION +SANITIZED +SANITY +SANJAY +SANK +SANKEI +SANKEY +SANKYO +SANN +SANOFI +SANS +SANSKRIT +SANSUI +SANT +SANTA +SANTA'S +SANTACRUZ +SANTAMARIA +SANTANA +SANTANA'S +SANTANDER +SANTANGELO +SANTAS +SANTE +SANTEE +SANTER +SANTERIA +SANTIAGO +SANTIAGO'S +SANTO +SANTORO +SANTORUM +SANTOS +SANTOS' +SANTOW +SANWA +SANYO +SAO +SAP +SAPERSTEIN +SAPIENS +SAPLINGS +SAPOA +SAPOLU +SAPP +SAPPED +SAPPHIRE +SAPPING +SAPPORO +SAPPY +SAPS +SAR +SARA +SARABYN +SARAFINA +SARAH +SARAH'S +SARAJEVANS +SARAJEVO +SARAJEVO'S +SARANDON +SARASOTA +SARATOGA +SARATOGA'S +SARAWAK +SARBANES +SARCASM +SARCASTIC +SARCASTICALLY +SARCOMA +SARCOPHAGUS +SARDINE +SARDINES +SARDINIA +SARDONIC +SARGEN +SARGENT +SARI +SARID +SARIN +SARKIS +SARMIENTO +SARNEY +SARNEY'S +SARNI +SARNOFF +SARO +SAROKIN +SARPALIUS +SARTORIAL +SARTRE +SARTZETAKIS +SASAKI +SASH +SASHA +SASKATCHEWAN +SASS +SASSA +SASSER +SASSER'S +SASSO +SASSON +SASSOON +SASSY +SAT +SATAN +SATAN'S +SATANIC +SATANISM +SATARIANO +SATCHEL +SATED +SATELLITE +SATELLITE'S +SATELLITES +SATHYAVAGISWARAN +SATIN +SATIRE +SATIRIC +SATIRICAL +SATIRIST +SATISFACTION +SATISFACTORILY +SATISFACTORY +SATISFIED +SATISFIES +SATISFY +SATISFYING +SATO +SATOSHI +SATURATE +SATURATED +SATURATING +SATURATION +SATURDAY +SATURDAY'S +SATURDAYS +SATURN +SATURN'S +SATWANT +SAUCE +SAUCEPAN +SAUCER +SAUCERS +SAUCES +SAUCY +SAUD +SAUDI +SAUDIA +SAUDIS +SAUDIS' +SAUER +SAUERBREY +SAUERKRAUT +SAUGERTIES +SAUGUS +SAUL +SAULT +SAUNA +SAUNAS +SAUNDERS +SAUSAGE +SAUSAGES +SAUSALITO +SAUSEDO +SAUTE +SAUTEED +SAUTER +SAUVIGNON +SAVA +SAVAGE +SAVAGE'S +SAVAGED +SAVAGELY +SAVAGERY +SAVAGES +SAVAIKO +SAVANNAH +SAVANT +SAVE +SAVED +SAVER +SAVERS +SAVES +SAVIMBI +SAVIMBI'S +SAVIN +SAVING +SAVINGS +SAVINGS' +SAVIOR +SAVIORS +SAVITZ +SAVOR +SAVORED +SAVORING +SAVORS +SAVORY +SAVOY +SAVR +SAVVIEST +SAVVY +SAW +SAWDUST +SAWED +SAWHILL +SAWING +SAWMILL +SAWMILLS +SAWS +SAWYER +SAWYER'S +SAX +SAXE +SAXENA +SAXON +SAXONY +SAXOPHONE +SAXOPHONIST +SAXTON +SAY +SAYBROOK +SAYED +SAYEED +SAYERS +SAYIN' +SAYING +SAYINGS +SAYLES +SAYRE +SAYS +SAYYAF +SAYYID +SCAB +SCABS +SCAFFOLD +SCAFFOLDING +SCALA +SCALDED +SCALDING +SCALE +SCALED +SCALES +SCALFARO +SCALI +SCALIA +SCALIA'S +SCALING +SCALISE +SCALLIONS +SCALLOP +SCALLOPS +SCALP +SCALPEL +SCALPERS +SCALPING +SCAM +SCAMPER +SCAMPERED +SCAMPERING +SCAMS +SCAN +SCANDAL +SCANDALIZED +SCANDALOUS +SCANDALS +SCANDINAVIA +SCANDINAVIAN +SCANDINAVIANS +SCANIA +SCANLON +SCANNED +SCANNELL +SCANNER +SCANNERS +SCANNING +SCANS +SCANT +SCANTILY +SCANTY +SCAPEGOAT +SCAPEGOATING +SCAPEGOATS +SCAR +SCARBOROUGH +SCARCE +SCARCELY +SCARCER +SCARCITY +SCARDINO +SCARE +SCARECROW +SCARED +SCARES +SCARF +SCARFACE +SCARFO +SCARIER +SCARIEST +SCARING +SCARLET +SCARLETT +SCARPA +SCARRED +SCARRING +SCARS +SCARSDALE +SCARVES +SCARY +SCAT +SCATHING +SCATTER +SCATTERED +SCATTERING +SCATTERSHOT +SCAVENGER +SCAVENGERS +SCAVENGING +SCENARIO +SCENARIOS +SCENE +SCENERY +SCENES +SCENIC +SCENT +SCENTED +SCENTS +SCEPTRE +SCHAAP +SCHABOWSKI +SCHACHT +SCHACHTER +SCHAEFER +SCHAEFFER +SCHAEUBLE +SCHAFER +SCHAFFER +SCHAJA +SCHALCK +SCHALLER +SCHAPIRO +SCHARPING +SCHATZ +SCHAUB +SCHAUMBURG +SCHECHTER +SCHECK +SCHECK'S +SCHECTER +SCHEDULE +SCHEDULED +SCHEDULES +SCHEDULING +SCHEER +SCHEERER +SCHEIN +SCHELL +SCHEMATIC +SCHEME +SCHEMED +SCHEMES +SCHEMING +SCHENECTADY +SCHENK +SCHENLEY +SCHER +SCHERER +SCHERER'S +SCHERING +SCHERING'S +SCHERZER +SCHEUER +SCHIAVONE +SCHICK +SCHIEFFELIN +SCHIEFFER +SCHIFF +SCHIFFER +SCHIFTER +SCHILLER +SCHILLING +SCHILLINGS +SCHIMMELBUSCH +SCHINDLER +SCHINDLER'S +SCHISM +SCHIZOPHRENIA +SCHIZOPHRENIC +SCHIZOPHRENICS +SCHLAFLY +SCHLEMMER +SCHLESINGER +SCHLESINGER'S +SCHLESWIG +SCHLIEMANN +SCHLITZ +SCHLOCK +SCHLOSS +SCHLOSSBERG +SCHLUETER +SCHLUMBERGER +SCHMALTZ +SCHMETTERER +SCHMID +SCHMIDT +SCHMIDT'S +SCHMIEDER +SCHMITT +SCHMITZ +SCHMOKE +SCHMOOZE +SCHMOOZING +SCHNABEL +SCHNAPP +SCHNEERSON +SCHNEIDER +SCHNEIDER'S +SCHNEIDERS +SCHNEIDMAN +SCHNEIER +SCHNITZLER +SCHNUR +SCHOEN +SCHOENBERG +SCHOENFELD +SCHOENHOLTZ +SCHOENHUBER +SCHOFIELD +SCHOLAR +SCHOLARLY +SCHOLARS +SCHOLARSHIP +SCHOLARSHIPS +SCHOLASTIC +SCHOLER +SCHOLL +SCHOLZ +SCHONBERG +SCHOOL +SCHOOL'S +SCHOOLBOY +SCHOOLBOYS +SCHOOLCHILDREN +SCHOOLED +SCHOOLER +SCHOOLERS +SCHOOLGIRL +SCHOOLGIRLS +SCHOOLHOUSE +SCHOOLING +SCHOOLMATE +SCHOOLMATES +SCHOOLS +SCHOOLS' +SCHOOLTEACHER +SCHOOLTEACHERS +SCHOOLWORK +SCHOOLYARD +SCHOONER +SCHORR +SCHOTT +SCHOTTENHEIMER +SCHRADER +SCHRAGER +SCHRAM +SCHRAMM +SCHREIBER +SCHREMPF +SCHREMPP +SCHREYER +SCHRODER +SCHRODERS +SCHROEDER +SCHROEDER'S +SCHTICK +SCHUBERT +SCHUBERT'S +SCHUCH +SCHUERHOLZ +SCHUETTE +SCHULER +SCHULHOF +SCHULLER +SCHULMAN +SCHULTE +SCHULTZ +SCHULTZE +SCHULZ +SCHULZE +SCHUMACHER +SCHUMAN +SCHUMANN +SCHUMANN'S +SCHUMER +SCHUNDLER +SCHUSTER +SCHUSTER'S +SCHUTZ +SCHUYLER +SCHWAB +SCHWAB'S +SCHWAMMBERGER +SCHWARTZ +SCHWARTZ'S +SCHWARTZBERG +SCHWARTZMAN +SCHWARZ +SCHWARZENEGGER +SCHWARZENEGGER'S +SCHWARZER +SCHWARZKOPF +SCHWARZKOPF'S +SCHWEID +SCHWEITZER +SCHWEPPES +SCHWERNER +SCHWIMMER +SCHWINDEN +SCHWINN +SCI +SCIENCE +SCIENCE'S +SCIENCES +SCIENCES' +SCIENTIFIC +SCIENTIFICALLY +SCIENTIST +SCIENTIST'S +SCIENTISTS +SCIENTISTS' +SCIENTOLOGISTS +SCIENTOLOGY +SCIMED +SCINTILLA +SCINTILLATING +SCION +SCIOS +SCISSORHANDS +SCISSORS +SCITEX +SCLERODERMA +SCLEROSIS +SCOBEE +SCOFF +SCOFFED +SCOFFLAWS +SCOFFS +SCOFIELD +SCOLD +SCOLDED +SCOLDING +SCOLDS +SCONES +SCONYERS +SCOOP +SCOOPED +SCOOPING +SCOOPS +SCOOT +SCOOTER +SCOOTERS +SCOPE +SCOPES +SCOR +SCORCH +SCORCHED +SCORCHING +SCORE +SCOREBOARD +SCORECARD +SCORECARDS +SCORED +SCORELESS +SCORER +SCORERS +SCORES +SCORING +SCORN +SCORNED +SCORNFUL +SCORNFULLY +SCORPIO +SCORPION +SCORPIONS +SCORSESE +SCORSESE'S +SCOT +SCOTCH +SCOTCHED +SCOTIA +SCOTIAMCLEOD +SCOTLAND +SCOTLAND'S +SCOTS +SCOTSMAN +SCOTT +SCOTT'S +SCOTTI +SCOTTIE +SCOTTISH +SCOTTO +SCOTTS +SCOTTSBLUFF +SCOTTSDALE +SCOTTY +SCOUNDREL +SCOUNDRELS +SCOUR +SCOURED +SCOURGE +SCOURGES +SCOURING +SCOUT +SCOUTED +SCOUTING +SCOUTS +SCOUTS' +SCOWCROFT +SCOWCROFT'S +SCOWL +SCOWLING +SCRABBLE +SCRAGGLY +SCRAMBLE +SCRAMBLED +SCRAMBLES +SCRAMBLING +SCRANTON +SCRAP +SCRAPBOOK +SCRAPBOOKS +SCRAPE +SCRAPED +SCRAPES +SCRAPING +SCRAPINGS +SCRAPPED +SCRAPPING +SCRAPPY +SCRAPS +SCRATCH +SCRATCHED +SCRATCHES +SCRATCHING +SCRATCHY +SCRAWL +SCRAWLED +SCRAWNY +SCREAM +SCREAMED +SCREAMING +SCREAMS +SCREECH +SCREECHED +SCREECHING +SCREEN +SCREENED +SCREENING +SCREENINGS +SCREENPLAY +SCREENPLAYS +SCREENS +SCREENWRITER +SCREENWRITERS +SCREENWRITING +SCREW +SCREWBALL +SCREWDRIVER +SCREWDRIVERS +SCREWED +SCREWING +SCREWS +SCRIBBLE +SCRIBBLED +SCRIBBLERS +SCRIBBLING +SCRIBE +SCRIBES +SCRIBNER +SCRIMGEOUR +SCRIMMAGE +SCRIP +SCRIPPS +SCRIPT +SCRIPTED +SCRIPTS +SCRIPTURE +SCRIPTURES +SCRIPTWRITER +SCRIPTWRITERS +SCROLL +SCROLLS +SCROOGE +SCROUNGE +SCROUNGING +SCRUB +SCRUBBED +SCRUBBERS +SCRUBBING +SCRUBS +SCRUFFY +SCRUGGS +SCRUPLES +SCRUPULOUS +SCRUPULOUSLY +SCRUTINIZE +SCRUTINIZED +SCRUTINIZES +SCRUTINIZING +SCRUTINY +SCUBA +SCUD +SCUDDER +SCUDS +SCUFFLE +SCUFFLED +SCUFFLES +SCUFFLING +SCULLEY +SCULLEY'S +SCULLY +SCULPT +SCULPTED +SCULPTING +SCULPTOR +SCULPTORS +SCULPTURAL +SCULPTURE +SCULPTURED +SCULPTURES +SCUM +SCURRIED +SCURRILOUS +SCURRY +SCURRYING +SCUTTLE +SCUTTLEBUTT +SCUTTLED +SCUTTLING +SE +SEA +SEA'S +SEABED +SEABIRDS +SEABOARD +SEABORNE +SEABROOK +SEABROOK'S +SEACOAST +SEACREST +SEAFARERS +SEAFARING +SEAFIRST +SEAFOOD +SEAFOODS +SEAFRONT +SEAGA +SEAGAL +SEAGATE +SEAGATE'S +SEAGLE +SEAGOING +SEAGRAM +SEAGRAM'S +SEAGULL +SEAGULLS +SEAHAWK +SEAHAWKS +SEAL +SEALANT +SEALANTS +SEALE +SEALED +SEALER +SEALEY +SEALIFT +SEALING +SEALS +SEALY +SEAM +SEAMAN +SEAMAN'S +SEAMEN +SEAMEN'S +SEAMLESS +SEAMLESSLY +SEAMS +SEAMSTRESS +SEAMSTRESSES +SEAMUS +SEAMY +SEAN +SEAPORT +SEAPORTS +SEAPOWER +SEAQ +SEAQUEST +SEAR +SEARCH +SEARCHED +SEARCHERS +SEARCHES +SEARCHING +SEARCHLIGHTS +SEARED +SEARING +SEARLE +SEARLE'S +SEARS +SEARS' +SEARS'S +SEAS +SEASHORE +SEASICK +SEASIDE +SEASON +SEASON'S +SEASONAL +SEASONALITY +SEASONALLY +SEASONED +SEASONING +SEASONINGS +SEASONS +SEAT +SEATBELT +SEATBELTS +SEATED +SEATER +SEATING +SEATON +SEATS +SEATTLE +SEATTLE'S +SEAU +SEAVER +SEAWALL +SEAWATER +SEAWAY +SEAWEED +SEAWOLF +SEAWORTHY +SEAY +SEBASTIAN +SEBASTOPOL +SEBOKENG +SEBRING +SEC +SECAUCUS +SECCHIA +SECEDE +SECEDED +SECEDING +SECESSION +SECESSIONIST +SECESSIONISTS +SECLUDED +SECLUSION +SECO +SECOND +SECOND'S +SECONDARILY +SECONDARY +SECONDED +SECONDHAND +SECONDLY +SECONDQUARTER +SECONDS +SECOR +SECORD +SECORD'S +SECRECY +SECRET +SECRETARIAL +SECRETARIAT +SECRETARIES +SECRETARY +SECRETARY'S +SECRETE +SECRETED +SECRETIONS +SECRETIVE +SECRETLY +SECRETS +SECT +SECT'S +SECTARIAN +SECTION +SECTION'S +SECTIONAL +SECTIONS +SECTOR +SECTOR'S +SECTORAL +SECTORS +SECTS +SECULAR +SECULARISM +SECURE +SECURED +SECURELY +SECURES +SECURING +SECURITATE +SECURITES +SECURITIES +SECURITIES' +SECURITIZATION +SECURITIZED +SECURITY +SECURITY'S +SEDAN +SEDANS +SEDATE +SEDATED +SEDATION +SEDATIVE +SEDATIVES +SEDENTARY +SEDER +SEDGWICK +SEDIMENT +SEDIMENTS +SEDITION +SEDITIOUS +SEDONA +SEDUCE +SEDUCED +SEDUCES +SEDUCING +SEDUCTION +SEDUCTIVE +SEDUCTIVELY +SEE +SEE'S +SEED +SEEDED +SEEDING +SEEDLESS +SEEDLING +SEEDLINGS +SEEDS +SEEDY +SEEGER +SEEING +SEEK +SEEKER +SEEKERS +SEEKING +SEEKS +SEELIG +SEEM +SEEMALA +SEEMED +SEEMING +SEEMINGLY +SEEMS +SEEN +SEEP +SEEPAGE +SEEPED +SEEPING +SEEPS +SEER +SEERS +SEES +SEESAW +SEESAWED +SEESAWING +SEETHING +SEFF +SEGA +SEGA'S +SEGAL +SEGARRA +SEGER +SEGMENT +SEGMENT'S +SEGMENTATION +SEGMENTED +SEGMENTS +SEGOVIA +SEGREGATE +SEGREGATED +SEGREGATING +SEGREGATION +SEGREGATIONIST +SEGUE +SEGUIN +SEGUNDO +SEGURA +SEIB +SEIBERT +SEIBU +SEIDEL +SEIDEN +SEIDENBERG +SEIDERS +SEIDLER +SEIDMAN +SEIDMAN'S +SEIFE +SEIFERT +SEIGE +SEIGEL +SEIJI +SEIKI +SEIKO +SEIN +SEINE +SEINELDIN +SEINFELD +SEIPEI +SEISMIC +SEISMICALLY +SEISMOGRAPH +SEISMOGRAPHS +SEISMOLOGICAL +SEISMOLOGIST +SEISMOLOGISTS +SEISMOLOGY +SEITEL +SEITERS +SEITZ +SEIZE +SEIZED +SEIZES +SEIZING +SEIZURE +SEIZURES +SEJM +SEKO +SEKULOW +SELASSIE +SELBY +SELDANE +SELDOM +SELDON +SELE +SELECT +SELECTED +SELECTING +SELECTION +SELECTIONS +SELECTIVE +SELECTIVELY +SELECTIVITY +SELECTMAN +SELECTMEN +SELECTS +SELENA +SELENA'S +SELENIUM +SELES +SELF +SELFISH +SELFISHNESS +SELFLESS +SELFLESSNESS +SELIG +SELIGMAN +SELKIRK +SELL +SELLARS +SELLECK +SELLER +SELLER'S +SELLERS +SELLERS' +SELLING +SELLOFF +SELLOFFS +SELLOUT +SELLOUTS +SELLS +SELMA +SELTZER +SELVES +SELWYN +SELZ +SELZER +SELZNICK +SEMANTIC +SEMANTICS +SEMATECH +SEMATECH'S +SEMBLANCE +SEMEL +SEMEN +SEMESTER +SEMESTERS +SEMI +SEMIANNUAL +SEMIANNUALLY +SEMIAUTOMATIC +SEMIAUTOMATICS +SEMICONDUCTOR +SEMICONDUCTORS +SEMIFINAL +SEMIFINALIST +SEMIFINALISTS +SEMIFINALS +SEMIFINISHED +SEMINAL +SEMINAR +SEMINARIANS +SEMINARIES +SEMINARS +SEMINARY +SEMINOLE +SEMINOLES +SEMIPALATINSK +SEMIS +SEMITE +SEMITES +SEMITIC +SEMITISM +SEMTEX +SEMYONOV +SEN +SEN'S +SENA +SENATE +SENATE'S +SENATOR +SENATOR'S +SENATORIAL +SENATORS +SENATORS' +SEND +SENDAK +SENDER +SENDERO +SENDERS +SENDING +SENDOFF +SENDS +SENECA +SENEGAL +SENEGALESE +SENG +SENILE +SENILITY +SENIOR +SENIORITY +SENIORS +SENNA +SENOR +SENSATION +SENSATIONAL +SENSATIONALISM +SENSATIONALIST +SENSATIONALIZED +SENSATIONS +SENSE +SENSED +SENSELESS +SENSENBRENNER +SENSES +SENSIBILITIES +SENSIBILITY +SENSIBLE +SENSIBLY +SENSING +SENSITIVE +SENSITIVELY +SENSITIVITIES +SENSITIVITY +SENSITIZE +SENSITIZED +SENSOR +SENSORMATIC +SENSORS +SENSORY +SENSUAL +SENSUALITY +SENSUOUS +SENT +SENTELLE +SENTENCE +SENTENCED +SENTENCES +SENTENCING +SENTER +SENTIMENT +SENTIMENTAL +SENTIMENTALITY +SENTIMENTS +SENTINEL +SENTRA +SENTRIES +SENTRY +SEOUL +SEOUL'S +SEOW +SEP +SEPARATE +SEPARATED +SEPARATELY +SEPARATES +SEPARATING +SEPARATION +SEPARATIONS +SEPARATISM +SEPARATIST +SEPARATISTS +SEPHARDIC +SEPIA +SEPSIS +SEPT +SEPTEMBER +SEPTEMBER'S +SEPTIC +SEPULCHER +SEPULVEDA +SEQUA +SEQUEL +SEQUELS +SEQUENCE +SEQUENCES +SEQUENCING +SEQUENT +SEQUENTIAL +SEQUENTIALLY +SEQUESTER +SEQUESTERED +SEQUESTERING +SEQUESTRATION +SEQUIN +SEQUINED +SEQUINS +SEQUOIA +SEQUOYAH +SERA +SERAFIN +SERAW +SERB +SERBIA +SERBIA'S +SERBIAN +SERBIANS +SERBO +SERBS +SERBS' +SEREBROV +SERENA +SERENA'S +SERENADE +SERENADED +SERENDIPITOUS +SERENDIPITY +SERENE +SERENELY +SERENGETI +SERENITY +SERENO +SERFIN +SERGE +SERGEANT +SERGEANTS +SERGEI +SERGEYEVICH +SERGIO +SERIAL +SERIALIZED +SERIALS +SERIES +SERIES' +SERIOUS +SERIOUSLY +SERIOUSNESS +SERMON +SERMONS +SEROLOGICAL +SEROLOGY +SERONO +SEROTONIN +SERPENT +SERPENTINE +SERPICO +SERRA +SERRANO +SERRANO'S +SERRATED +SERUM +SERVANT +SERVANTS +SERVE +SERVED +SERVER +SERVERS +SERVES +SERVICE +SERVICE'S +SERVICEABLE +SERVICED +SERVICEMAN +SERVICEMASTER +SERVICEMEN +SERVICER +SERVICES +SERVICES' +SERVICING +SERVING +SERVINGS +SERVITUDE +SESAME +SESE +SESELJ +SESNO +SESSION +SESSION'S +SESSIONS +SET +SETBACK +SETBACKS +SETH +SETO +SETON +SETS +SETTER +SETTERS +SETTING +SETTINGS +SETTLE +SETTLED +SETTLEMENT +SETTLEMENT'S +SETTLEMENTS +SETTLER +SETTLERS +SETTLERS' +SETTLES +SETTLING +SETUP +SETUPS +SEUNG +SEURAT +SEUSS +SEVAREID +SEVASTOPOL +SEVE +SEVEN +SEVEN'S +SEVENFOLD +SEVENS +SEVENTEEN +SEVENTEENS +SEVENTEENTH +SEVENTH +SEVENTHS +SEVENTIES +SEVENTIETH +SEVENTY +SEVENTY'S +SEVER +SEVERAL +SEVERALLY +SEVERANCE +SEVERE +SEVERED +SEVERELY +SEVEREST +SEVERIN +SEVERING +SEVERITY +SEVERN +SEVILLE +SEW +SEWAGE +SEWARD +SEWED +SEWELL +SEWER +SEWERAGE +SEWERS +SEWING +SEWN +SEX +SEXES +SEXIER +SEXIEST +SEXISM +SEXIST +SEXTET +SEXTON +SEXUAL +SEXUALITY +SEXUALLY +SEXY +SEYBOLD +SEYCHELLES +SEYMOUR +SEYMOUR'S +SFEIR +SH +SHA +SHAANXI +SHAATH +SHABAZZ +SHABBILY +SHABBY +SHABER +SHACK +SHACKELFORD +SHACKLED +SHACKLES +SHACKS +SHAD +SHADE +SHADED +SHADEGG +SHADES +SHADING +SHADOW +SHADOWED +SHADOWING +SHADOWLANDS +SHADOWS +SHADOWY +SHADY +SHADYSIDE +SHAFER +SHAFFER +SHAFI +SHAFT +SHAFTS +SHAG +SHAGGY +SHAH +SHAH'S +SHAHAK +SHAHAL +SHAHEEN +SHAI +SHAIKEN +SHAKE +SHAKEDOWN +SHAKEN +SHAKEOUT +SHAKER +SHAKERS +SHAKES +SHAKESPEARE +SHAKESPEARE'S +SHAKESPEAREAN +SHAKESPEARIAN +SHAKEUP +SHAKEUPS +SHAKIER +SHAKING +SHAKLEE +SHAKUR +SHAKUR'S +SHAKY +SHALALA +SHALE +SHALES +SHALI +SHALIKASHVILI +SHALL +SHALLOTS +SHALLOW +SHALLOWER +SHALLOWS +SHALOM +SHALT +SHAM +SHAMAN +SHAMBLES +SHAME +SHAMED +SHAMEFUL +SHAMEFULLY +SHAMELESS +SHAMELESSLY +SHAMES +SHAMIL +SHAMIR +SHAMIR'S +SHAMPOO +SHAMPOOS +SHAMROCK +SHAMROCK'S +SHAMS +SHAMU +SHAN +SHANA +SHANAHAN +SHAND +SHANDLING +SHANDLING'S +SHANDONG +SHANE +SHANGHAI +SHANGHAI'S +SHANGKUN +SHANGRI +SHANK +SHANKAR +SHANKEN +SHANKER +SHANKS +SHANLEY +SHANNON +SHANNON'S +SHANTI +SHANTIES +SHANTY +SHANTYTOWN +SHANTYTOWNS +SHANXI +SHAPE +SHAPED +SHAPELY +SHAPES +SHAPING +SHAPIRA +SHAPIRO +SHAPIRO'S +SHAPOSHNIKOV +SHAQ +SHAQUILLE +SHARA +SHARAA +SHARANSKY +SHARDS +SHARE +SHARECROPPER +SHARECROPPERS +SHARED +SHAREHOLDER +SHAREHOLDER'S +SHAREHOLDERS +SHAREHOLDERS' +SHAREHOLDING +SHAREHOLDINGS +SHARELL +SHARES +SHARES' +SHAREWARE +SHARI +SHARIA +SHARIF +SHARIF'S +SHARING +SHARJAH +SHARK +SHARK'S +SHARKEY +SHARKING +SHARKS +SHARKS' +SHARM +SHARMA +SHARON +SHARON'S +SHARP +SHARP'S +SHARPE +SHARPEN +SHARPENED +SHARPENING +SHARPER +SHARPEST +SHARPEVILLE +SHARPLY +SHARPNESS +SHARPS +SHARPSHOOTER +SHARPSHOOTERS +SHARPTON +SHARQ +SHARYL +SHAS +SHASTA +SHATALIN +SHATI +SHATNER +SHATT +SHATTER +SHATTERED +SHATTERING +SHATTERS +SHATTUCK +SHAUGHNESSY +SHAUN +SHAVE +SHAVED +SHAVEN +SHAVER +SHAVERS +SHAVES +SHAVING +SHAVINGS +SHAW +SHAW'S +SHAWCROSS +SHAWL +SHAWLS +SHAWMUT +SHAWMUT'S +SHAWN +SHAWNEE +SHAWSHANK +SHAY +SHAYKIN +SHAYNE +SHAYS +SHCHERBITSKY +SHE +SHE'D +SHE'LL +SHE'S +SHEA +SHEAF +SHEAR +SHEARED +SHEARER +SHEARING +SHEARMAN +SHEARS +SHEARSON +SHEARSON'S +SHEATH +SHEATHS +SHEBA +SHED +SHEDD +SHEDDING +SHEDS +SHEEDY +SHEEHAN +SHEEHY +SHEELA +SHEEN +SHEENA +SHEEP +SHEEP'S +SHEEPISH +SHEEPISHLY +SHEER +SHEET +SHEETING +SHEETS +SHEFFER +SHEFFIELD +SHEFTEL +SHEIK +SHEIK'S +SHEIKDOM +SHEIKH +SHEIKS +SHEILA +SHEILAH +SHEINBERG +SHEINKMAN +SHEK +SHEKELS +SHEKHAR +SHELBY +SHELDON +SHELF +SHELL +SHELL'S +SHELLED +SHELLER +SHELLEY +SHELLEY'S +SHELLFIRE +SHELLFISH +SHELLING +SHELLS +SHELLSHOCKED +SHELLY +SHELTER +SHELTER'S +SHELTERED +SHELTERING +SHELTERS +SHELTON +SHELTON'S +SHELVE +SHELVED +SHELVES +SHELVING +SHEN +SHENANDOAH +SHENANIGANS +SHENG +SHENKMAN +SHENYANG +SHENZHEN +SHEPARD +SHEPARD'S +SHEPHERD +SHEPHERD'S +SHEPHERDED +SHEPHERDING +SHEPHERDS +SHEPPARD +SHER +SHERATON +SHERBURNE +SHERI +SHERIDAN +SHERIF +SHERIFF +SHERIFF'S +SHERIFFS +SHERLOCK +SHERLUND +SHERMAN +SHERMAN'S +SHERPA +SHERR +SHERRARD +SHERRI +SHERRIE +SHERRILL +SHERRITT +SHERRY +SHERWIN +SHERWOOD +SHERYL +SHESHUNOFF +SHETLAND +SHEVARDNADZE +SHEVARDNADZE'S +SHI +SHI'ITE +SHIBATA +SHIED +SHIELD +SHIELDED +SHIELDING +SHIELDS +SHIES +SHIFA +SHIFT +SHIFTED +SHIFTER +SHIFTING +SHIFTS +SHIFTY +SHIGERU +SHIH +SHIITE +SHIITES +SHILEY +SHILLING +SHILOH +SHIMA +SHIMBUN +SHIMIZU +SHIMMERING +SHIMOMURA +SHIMON +SHIMOYAMA +SHIN +SHINE +SHINED +SHINER +SHINES +SHING +SHINGLE +SHINGLES +SHINHOSTER +SHINING +SHINJUKU +SHINKIN +SHINN +SHINNECOCK +SHINRI +SHINRIKYO +SHINTARO +SHINTO +SHINY +SHIP +SHIP'S +SHIPBOARD +SHIPBUILDER +SHIPBUILDERS +SHIPBUILDING +SHIPLEY +SHIPMAN +SHIPMATES +SHIPMENT +SHIPMENTS +SHIPOWNERS +SHIPP +SHIPP'S +SHIPPED +SHIPPER +SHIPPERS +SHIPPING +SHIPS +SHIPS' +SHIPWRECK +SHIPWRECKED +SHIPWRECKS +SHIPYARD +SHIPYARD'S +SHIPYARDS +SHIRAA +SHIRAKAWA +SHIRAZ +SHIRE +SHIRK +SHIRKING +SHIRLEY +SHIRT +SHIRTLESS +SHIRTS +SHIRTSLEEVES +SHISEIDO +SHIT +SHIV +SHIVA +SHIVELY +SHIVER +SHIVERED +SHIVERING +SHIVERS +SHLAES +SHLOMO +SHMUEL +SHO +SHOAL +SHOALS +SHOCK +SHOCKED +SHOCKER +SHOCKING +SHOCKINGLY +SHOCKLEY +SHOCKS +SHOCKWAVES +SHOD +SHODDY +SHOE +SHOE'S +SHOEBOX +SHOELACES +SHOELESS +SHOEMAKER +SHOEN +SHOEPRINTS +SHOES +SHOESHINE +SHOESTRING +SHOGUN +SHOHAT +SHOICHIRO +SHOJI +SHOKHIN +SHOKO +SHOMRON +SHONE +SHONEY'S +SHOO +SHOOB +SHOOED +SHOOK +SHOOT +SHOOTDOWN +SHOOTER +SHOOTERS +SHOOTING +SHOOTINGS +SHOOTOUT +SHOOTOUTS +SHOOTS +SHOP +SHOP'S +SHOPKEEPER +SHOPKEEPERS +SHOPKORN +SHOPLIFTERS +SHOPLIFTING +SHOPPED +SHOPPER +SHOPPER'S +SHOPPERS +SHOPPERS' +SHOPPES +SHOPPING +SHOPPING'S +SHOPS +SHORE +SHORED +SHOREHAM +SHORELINE +SHORELINES +SHORENSTEIN +SHORES +SHORING +SHORN +SHORT +SHORTAGE +SHORTAGES +SHORTCHANGE +SHORTCHANGED +SHORTCHANGING +SHORTCOMING +SHORTCOMINGS +SHORTCUT +SHORTCUTS +SHORTED +SHORTEN +SHORTENED +SHORTENING +SHORTENS +SHORTER +SHORTEST +SHORTFALL +SHORTFALLS +SHORTHAND +SHORTHANDED +SHORTING +SHORTLIVED +SHORTLY +SHORTNESS +SHORTS +SHORTSIGHTED +SHORTSTOP +SHORTTERM +SHORTWAVE +SHORTY +SHORTZ +SHOSHONE +SHOSTAKOVICH +SHOT +SHOTGUN +SHOTGUNS +SHOTS +SHOULD +SHOULD'VE +SHOULDER +SHOULDERED +SHOULDERING +SHOULDERS +SHOULDN'T +SHOUT +SHOUTED +SHOUTING +SHOUTS +SHOVAL +SHOVE +SHOVED +SHOVEL +SHOVELED +SHOVELING +SHOVELS +SHOVES +SHOVING +SHOW +SHOW'S +SHOWA +SHOWALTER +SHOWBIZ +SHOWBOAT +SHOWCASE +SHOWCASED +SHOWCASES +SHOWCASING +SHOWDOWN +SHOWDOWNS +SHOWED +SHOWER +SHOWERED +SHOWERING +SHOWERS +SHOWERY +SHOWGIRL +SHOWGIRLS +SHOWING +SHOWINGS +SHOWMAN +SHOWMANSHIP +SHOWN +SHOWPIECE +SHOWPLACE +SHOWROOM +SHOWROOMS +SHOWS +SHOWSCAN +SHOWTIME +SHOWTIME'S +SHOWY +SHRANK +SHRAPNEL +SHRED +SHREDDED +SHREDDER +SHREDDING +SHREDS +SHREVEPORT +SHREW +SHREWD +SHREWDLY +SHREWSBURY +SHRIBMAN +SHRIEK +SHRIEKED +SHRIEKING +SHRIEKS +SHRIFT +SHRILL +SHRIMP +SHRIMPERS +SHRIMPING +SHRINE +SHRINER +SHRINERS +SHRINES +SHRINK +SHRINKAGE +SHRINKING +SHRINKS +SHRIVEL +SHRIVELED +SHRIVER +SHRONTZ +SHROUD +SHROUDED +SHROUDS +SHRUB +SHRUBBERY +SHRUBS +SHRUG +SHRUGGED +SHRUGGING +SHRUGS +SHRUM +SHRUNK +SHRUNKEN +SHTICK +SHU +SHUBERT +SHUCK +SHUCKS +SHUDDER +SHUDDERED +SHUDDERS +SHUE +SHUFFLE +SHUFFLED +SHUFFLES +SHUFFLING +SHUGART +SHUGRUE +SHUI +SHULA +SHULER +SHULMAN +SHULTS +SHULTZ +SHULTZ'S +SHUMAN +SHUMWAY +SHUN +SHUNNED +SHUNNING +SHUNS +SHUNTED +SHURA +SHURE +SHUSTER +SHUT +SHUTDOWN +SHUTDOWNS +SHUTOUT +SHUTOUTS +SHUTS +SHUTTER +SHUTTERED +SHUTTERS +SHUTTING +SHUTTLE +SHUTTLE'S +SHUTTLED +SHUTTLES +SHUTTLING +SHUWA +SHUXIAN +SHWE +SHY +SHYING +SHYLOCK +SHYLY +SHYMANSKI +SHYNESS +SI +SIAD +SIAM +SIAMESE +SIBERIA +SIBERIAN +SIBIU +SIBLEY +SIBLING +SIBLINGS +SIBSON +SIC +SICA +SICHUAN +SICILIAN +SICILY +SICK +SICKENED +SICKENING +SICKER +SICKEST +SICKLE +SICKLY +SICKNESS +SICKOUT +SID +SIDDELEY +SIDDHI +SIDDIG +SIDE +SIDE'S +SIDEARMS +SIDEBAR +SIDEBARS +SIDEBURNS +SIDED +SIDEK +SIDEKICK +SIDEKICKS +SIDELINE +SIDELINED +SIDELINES +SIDER +SIDERS +SIDES +SIDES' +SIDESHOW +SIDESHOWS +SIDESTEP +SIDESTEPPED +SIDESTEPPING +SIDESTEPS +SIDESWIPED +SIDETRACK +SIDETRACKED +SIDEWALK +SIDEWALKS +SIDEWAYS +SIDEWINDER +SIDING +SIDLEY +SIDNEY +SIDON +SIEBE +SIEBERT +SIECK +SIEGAL +SIEGAN +SIEGE +SIEGEL +SIEGEL'S +SIEGELMAN +SIEGFRIED +SIEGLER +SIEGMAN +SIEM +SIEMENS +SIEMENS'S +SIENA +SIERRA +SIERRA'S +SIERRACIN +SIERRAS +SIESTA +SIEVE +SIFT +SIFTED +SIFTING +SIG +SIGH +SIGHED +SIGHING +SIGHS +SIGHT +SIGHTED +SIGHTING +SIGHTINGS +SIGHTS +SIGHTSEEING +SIGHTSEERS +SIGLER +SIGMA +SIGMUND +SIGN +SIGNAGE +SIGNAL +SIGNAL'S +SIGNALED +SIGNALING +SIGNALLED +SIGNALLING +SIGNALS +SIGNATORIES +SIGNATORY +SIGNATURE +SIGNATURES +SIGNED +SIGNER +SIGNERS +SIGNET +SIGNFICANT +SIGNIFICANCE +SIGNIFICANT +SIGNIFICANTLY +SIGNIFIED +SIGNIFIES +SIGNIFY +SIGNIFYING +SIGNING +SIGNINGS +SIGNPOSTS +SIGNS +SIGOLOFF +SIGOURNEY +SIGUR +SIHANOUK +SIHANOUK'S +SIKES +SIKH +SIKHS +SIKORSKI +SIKORSKY +SILAJDZIC +SILAS +SILAYEV +SILBER +SILBER'S +SILBERMAN +SILBERNER +SILBERT +SILENCE +SILENCED +SILENCER +SILENCERS +SILENCES +SILENCING +SILENT +SILENTLY +SILESIA +SILHOUETTE +SILHOUETTED +SILHOUETTES +SILICA +SILICON +SILICONE +SILK +SILKEN +SILKS +SILKWORM +SILKWORMS +SILKY +SILL +SILLERMAN +SILLIEST +SILLINESS +SILLS +SILLY +SILO +SILOS +SILT +SILVA +SILVA'S +SILVER +SILVER'S +SILVERADO +SILVERADO'S +SILVERBERG +SILVERGLADE +SILVERMAN +SILVERS +SILVERSTEIN +SILVERSTONE +SILVERWARE +SILVERY +SILVESTRI +SILVIA +SILVIO +SIM +SIMBA +SIMEON +SIMES +SIMEX +SIMI +SIMIAN +SIMILAR +SIMILARITIES +SIMILARITY +SIMILARLY +SIMILIAR +SIMMER +SIMMERED +SIMMERING +SIMMERS +SIMMONDS +SIMMONS +SIMMONS' +SIMMONS'S +SIMMS +SIMON +SIMON'S +SIMONDS +SIMONE +SIMONS +SIMONSON +SIMPKINS +SIMPLE +SIMPLER +SIMPLESSE +SIMPLEST +SIMPLICITY +SIMPLIFICATION +SIMPLIFIED +SIMPLIFIES +SIMPLIFY +SIMPLIFYING +SIMPLISTIC +SIMPLOT +SIMPLY +SIMPSON +SIMPSON'S +SIMPSONS +SIMPSONS' +SIMS +SIMS' +SIMULATE +SIMULATED +SIMULATES +SIMULATING +SIMULATION +SIMULATIONS +SIMULATOR +SIMULATORS +SIMULCAST +SIMULTANEOUS +SIMULTANEOUSLY +SIN +SINAI +SINALOA +SINATRA +SINATRA'S +SINBAD +SINCE +SINCERE +SINCERELY +SINCEREST +SINCERITY +SINCLAIR +SIND +SINDEN +SINDH +SINDLINGER +SINE +SINEAD +SINFUL +SING +SINGAPORE +SINGAPORE'S +SINGAPOREAN +SINGAPOREANS +SINGED +SINGEL +SINGER +SINGER'S +SINGERS +SINGH +SINGH'S +SINGIN' +SINGING +SINGLAUB +SINGLE +SINGLED +SINGLEHANDEDLY +SINGLES +SINGLETARY +SINGLETON +SINGLETON'S +SINGLING +SINGLY +SINGS +SINGULAR +SINGULARLY +SINHALESE +SINIORA +SINISE +SINISTER +SINK +SINKER +SINKHOLE +SINKING +SINKS +SINN +SINNED +SINNER +SINNERS +SINO +SINS +SINUOUS +SINUS +SIOBHAN +SIOUX +SIP +SIPHON +SIPHONED +SIPHONING +SIPPED +SIPPING +SIPS +SIR +SIRE +SIREN +SIRENS +SIRHAN +SIRKIN +SIRLOIN +SIRRI +SIS +SISISKY +SISK +SISKEL +SISKIYOU +SISSY +SISTER +SISTER'S +SISTERHOOD +SISTERS +SISTERS' +SISTINE +SISULU +SIT +SITCOM +SITCOMS +SITE +SITE'S +SITES +SITHE +SITING +SITKA +SITS +SITTER +SITTERS +SITTIN' +SITTING +SITUATED +SITUATION +SITUATIONS +SIX +SIX'S +SIXES +SIXFOLD +SIXTEEN +SIXTEENS +SIXTEENTH +SIXTEENTHS +SIXTH +SIXTHS +SIXTIES +SIXTIETH +SIXTY +SIXTY'S +SIZABLE +SIZE +SIZEABLE +SIZED +SIZEMORE +SIZES +SIZING +SIZZLE +SIZZLED +SIZZLER +SIZZLING +SJONBORG +SKADDEN +SKAGGS +SKAGIT +SKAGWAY +SKANDIA +SKANDINAVISKA +SKANSKA +SKASE +SKATE +SKATEBOARD +SKATEBOARDERS +SKATEBOARDING +SKATEBOARDS +SKATED +SKATER +SKATERS +SKATES +SKATING +SKEEN +SKEET +SKELETAL +SKELETON +SKELETONS +SKELLY +SKELTER +SKELTON +SKEPTIC +SKEPTICAL +SKEPTICALLY +SKEPTICISM +SKEPTICS +SKETCH +SKETCHED +SKETCHES +SKETCHING +SKETCHY +SKEW +SKEWED +SKEWER +SKEWERED +SKEWERING +SKEWERS +SKEWING +SKI +SKID +SKIDDED +SKIDDING +SKIDMORE +SKIDS +SKIED +SKIER +SKIERS +SKIES +SKIFF +SKIING +SKILES +SKILL +SKILLED +SKILLET +SKILLFUL +SKILLFULLY +SKILLS +SKIM +SKIMMED +SKIMMER +SKIMMERS +SKIMMING +SKIMP +SKIMPY +SKIN +SKINHEAD +SKINHEADS +SKINLESS +SKINNED +SKINNER +SKINNER'S +SKINNY +SKINS +SKIP +SKIPPED +SKIPPER +SKIPPER'S +SKIPPERS +SKIPPING +SKIPPY +SKIPS +SKIRMISH +SKIRMISHED +SKIRMISHES +SKIRMISHING +SKIRT +SKIRTED +SKIRTING +SKIRTS +SKIS +SKIT +SKITS +SKITTISH +SKITTISHNESS +SKLAR +SKOAL +SKODA +SKOKIE +SKOL +SKOLER +SKOLNICK +SKOPJE +SKUBISZEWSKI +SKULL +SKULLS +SKUNK +SKUNKS +SKY +SKY'S +SKYBOX +SKYCAP +SKYDOME +SKYHAWK +SKYLAB +SKYLARK +SKYLIGHT +SKYLIGHTS +SKYLINE +SKYROCKET +SKYROCKETED +SKYROCKETING +SKYSCRAPER +SKYSCRAPERS +SKYTEL +SKYWARD +SKYWEST +SLAB +SLABS +SLACK +SLACKEN +SLACKENED +SLACKENING +SLACKER +SLACKERS +SLACKS +SLADE +SLAG +SLAGLE +SLAIN +SLALOM +SLAM +SLAMMED +SLAMMER +SLAMMING +SLAMS +SLANDER +SLANDERED +SLANDERING +SLANDEROUS +SLANDERS +SLANG +SLANT +SLANTED +SLANTING +SLAP +SLAPPED +SLAPPING +SLAPS +SLAPSTICK +SLASH +SLASHED +SLASHER +SLASHES +SLASHING +SLATE +SLATED +SLATER +SLATES +SLATHERED +SLATKIN +SLATS +SLATTERY +SLAUGHTER +SLAUGHTERED +SLAUGHTERHOUSE +SLAUGHTERHOUSES +SLAUGHTERING +SLAUGHTERS +SLAV +SLAVA +SLAVE +SLAVERY +SLAVES +SLAVIC +SLAVIN +SLAVISH +SLAVISHLY +SLAVKIN +SLAVONIA +SLAVS +SLAW +SLAY +SLAYER +SLAYING +SLAYINGS +SLAYTON +SLEAZE +SLEAZY +SLED +SLEDDING +SLEDGE +SLEDGEHAMMER +SLEDS +SLEEK +SLEEKER +SLEEP +SLEEPER +SLEEPERS +SLEEPING +SLEEPLESS +SLEEPLESSNESS +SLEEPS +SLEEPY +SLEET +SLEEVE +SLEEVED +SLEEVELESS +SLEEVES +SLEIGH +SLEIGHT +SLENDER +SLEPT +SLEUTH +SLEUTHING +SLEUTHS +SLEW +SLICE +SLICED +SLICES +SLICING +SLICK +SLICKED +SLICKER +SLICKERS +SLICKLY +SLICKS +SLID +SLIDE +SLIDER +SLIDES +SLIDING +SLIFER +SLIGHT +SLIGHTED +SLIGHTEST +SLIGHTLY +SLIGHTS +SLIM +SLIM'S +SLIME +SLIMMED +SLIMMER +SLIMMEST +SLIMMING +SLIMS +SLIMY +SLING +SLINGING +SLINGS +SLINGSHOT +SLINKY +SLIP +SLIPPAGE +SLIPPED +SLIPPER +SLIPPERS +SLIPPERY +SLIPPING +SLIPS +SLIPSHOD +SLIT +SLITHERED +SLITHERING +SLITS +SLITTING +SLIVER +SLIVERS +SLIWA +SLOAN +SLOAN'S +SLOANE +SLOATE +SLOB +SLOBODAN +SLOCAN +SLOCUM +SLOG +SLOGAN +SLOGANEERING +SLOGANS +SLOGGED +SLOGGING +SLOOP +SLOP +SLOPE +SLOPES +SLOPING +SLOPPILY +SLOPPINESS +SLOPPY +SLORC +SLOSHING +SLOT +SLOTH +SLOTNICK +SLOTS +SLOTTED +SLOTTING +SLOUCH +SLOUGH +SLOVAK +SLOVAKIA +SLOVAKIA'S +SLOVAKS +SLOVENE +SLOVENES +SLOVENIA +SLOVENIA'S +SLOVENIAN +SLOVES +SLOVO +SLOW +SLOWDOWN +SLOWDOWNS +SLOWED +SLOWER +SLOWEST +SLOWING +SLOWLY +SLOWNESS +SLOWS +SLUDGE +SLUG +SLUGFEST +SLUGGED +SLUGGER +SLUGGING +SLUGGISH +SLUGGISHLY +SLUGGISHNESS +SLUGS +SLUM +SLUMBER +SLUMBERING +SLUMP +SLUMPED +SLUMPING +SLUMPS +SLUMS +SLUNG +SLUR +SLURRED +SLURRY +SLURS +SLUSH +SLUT +SLY +SLYKE +SLYLY +SMABY +SMACK +SMACKED +SMACKING +SMACKS +SMALE +SMALL +SMALLCAP +SMALLER +SMALLEST +SMALLEY +SMALLISH +SMALLPOX +SMALTZ +SMARMY +SMART +SMARTER +SMARTEST +SMARTING +SMARTLY +SMARTS +SMASH +SMASHED +SMASHER +SMASHES +SMASHING +SMATTERING +SMEAL +SMEAR +SMEARED +SMEARING +SMEARS +SMELL +SMELLED +SMELLING +SMELLS +SMELLY +SMELT +SMELTER +SMELTERS +SMELTING +SMICK +SMIDGEN +SMILE +SMILED +SMILES +SMILEY +SMILING +SMILOW +SMIRK +SMIRKING +SMIRNOFF +SMIRNOV +SMIT +SMITH +SMITH'S +SMITHBURG +SMITHEREENS +SMITHERMAN +SMITHFIELD +SMITHKLINE +SMITHKLINE'S +SMITHS +SMITHSON +SMITHSONIAN +SMITHSONIAN'S +SMITS +SMITTEN +SMOCK +SMOG +SMOGGIEST +SMOGGY +SMOKE +SMOKED +SMOKELESS +SMOKER +SMOKER'S +SMOKERS +SMOKERS' +SMOKES +SMOKESCREEN +SMOKESTACK +SMOKESTACKS +SMOKEY +SMOKING +SMOKY +SMOLDER +SMOLDERED +SMOLDERING +SMOLENSK +SMOLINSKI +SMOLTZ +SMOOT +SMOOTH +SMOOTHED +SMOOTHER +SMOOTHEST +SMOOTHING +SMOOTHLY +SMOOTHNESS +SMORGASBORD +SMOTHER +SMOTHERED +SMOTHERING +SMOTHERS +SMUDGE +SMUDGED +SMUG +SMUGGLE +SMUGGLED +SMUGGLER +SMUGGLERS +SMUGGLING +SMUGLY +SMUGNESS +SMURFIT +SMUT +SMYRNA +SMYTH +SMYTHE +SNACK +SNACKING +SNACKS +SNAFU +SNAFUS +SNAG +SNAGGED +SNAGGING +SNAGS +SNAIL +SNAIL'S +SNAILS +SNAKE +SNAKED +SNAKES +SNAKING +SNAP +SNAPPED +SNAPPER +SNAPPING +SNAPPLE +SNAPPLE'S +SNAPPY +SNAPS +SNAPSHOT +SNAPSHOTS +SNARE +SNARED +SNARES +SNARING +SNARL +SNARLED +SNARLING +SNARLS +SNATCH +SNATCHED +SNATCHERS +SNATCHES +SNATCHING +SNAZZY +SNEAD +SNEAK +SNEAKED +SNEAKER +SNEAKERS +SNEAKING +SNEAKS +SNEAKY +SNECMA +SNEED +SNEER +SNEERED +SNEERING +SNEERS +SNEEZE +SNEEZES +SNEEZING +SNELL +SNELLING +SNICKER +SNICKERING +SNICKERS +SNIDE +SNIDER +SNIFF +SNIFFED +SNIFFER +SNIFFING +SNIFFS +SNIP +SNIPE +SNIPER +SNIPER'S +SNIPERS +SNIPES +SNIPING +SNIPPED +SNIPPET +SNIPPETS +SNITCH +SNOB +SNOBBERY +SNOBBISH +SNOBS +SNODGRASS +SNOHOMISH +SNOOP +SNOOPING +SNOOPS +SNOOPY +SNOOTY +SNOOZE +SNOOZING +SNORE +SNORING +SNORKELING +SNORT +SNORTED +SNORTING +SNORTS +SNOUT +SNOW +SNOW'S +SNOWBALL +SNOWBALLED +SNOWBALLING +SNOWBALLS +SNOWBOARD +SNOWBOARDERS +SNOWBOARDING +SNOWBOUND +SNOWDEN +SNOWE +SNOWED +SNOWFALL +SNOWFALLS +SNOWFLAKES +SNOWING +SNOWMAN +SNOWMOBILE +SNOWMOBILES +SNOWPACK +SNOWS +SNOWSHOE +SNOWSTORM +SNOWSTORMS +SNOWY +SNUB +SNUBBED +SNUBBING +SNUCK +SNUFF +SNUFFED +SNUG +SNUGGLE +SNUGLY +SNYDER +SNYDER'S +SO +SO'S +SOAK +SOAKED +SOAKING +SOAKS +SOAP +SOAPBOX +SOAPS +SOAPY +SOAR +SOARED +SOARES +SOARING +SOARS +SOB +SOBBED +SOBBING +SOBCHAK +SOBEL +SOBER +SOBERED +SOBERING +SOBERLY +SOBOL +SOBRIETY +SOBS +SOCALLED +SOCANAV +SOCCER +SOCCER'S +SOCHI +SOCIABLE +SOCIAL +SOCIALISM +SOCIALIST +SOCIALISTIC +SOCIALISTS +SOCIALISTS' +SOCIALITE +SOCIALITES +SOCIALIZATION +SOCIALIZE +SOCIALIZED +SOCIALIZING +SOCIALLY +SOCIEDAD +SOCIETA +SOCIETAL +SOCIETE +SOCIETIES +SOCIETY +SOCIETY'S +SOCIO +SOCIOECONOMIC +SOCIOLOGICAL +SOCIOLOGIST +SOCIOLOGISTS +SOCIOLOGY +SOCIOPATH +SOCK +SOCKED +SOCKET +SOCKETS +SOCKEYE +SOCKS +SOCRATES +SOD +SODA +SODAS +SODDEN +SODERBERGH +SODERSTROM +SODIUM +SODOM +SODOMIZED +SODOMY +SOERING +SOFA +SOFAER +SOFAS +SOFER +SOFIA +SOFT +SOFTBALL +SOFTBANK +SOFTEN +SOFTENED +SOFTENER +SOFTENING +SOFTENS +SOFTER +SOFTEST +SOFTKEY +SOFTLY +SOFTNESS +SOFTWARE +SOFTWARE'S +SOFTWOOD +SOGETI +SOGGY +SOGO +SOHN +SOHO +SOIFER +SOIL +SOILED +SOILING +SOILS +SOIR +SOJOURN +SOK +SOKAIYA +SOKOL +SOKOLOF +SOKOLOV +SOL +SOLA +SOLACE +SOLANA +SOLANO +SOLAR +SOLARIS +SOLARZ +SOLBERG +SOLD +SOLDER +SOLDERING +SOLDIER +SOLDIER'S +SOLDIERS +SOLDIERS' +SOLE +SOLECTRON +SOLEDAD +SOLEIL +SOLELY +SOLEMN +SOLEMNITY +SOLEMNLY +SOLES +SOLHEIM +SOLICIT +SOLICITATION +SOLICITATIONS +SOLICITED +SOLICITING +SOLICITOR +SOLICITORS +SOLICITOUS +SOLICITS +SOLID +SOLIDARITY +SOLIDARITY'S +SOLIDERS +SOLIDIFIED +SOLIDIFIES +SOLIDIFY +SOLIDIFYING +SOLIDITY +SOLIDLY +SOLIDS +SOLILOQUY +SOLINGEN +SOLIS +SOLITAIRE +SOLITARY +SOLITUDE +SOLLOWAY +SOLO +SOLOIST +SOLOISTS +SOLOMENTSEV +SOLOMON +SOLOMON'S +SOLON +SOLOS +SOLOVYEV +SOLOVYOV +SOLOW +SOLSTICE +SOLTERS +SOLTI +SOLUBLE +SOLUTION +SOLUTIONS +SOLVAY +SOLVE +SOLVED +SOLVENCY +SOLVENT +SOLVENTS +SOLVER +SOLVERS +SOLVES +SOLVING +SOLZHENITSYN +SOLZHENITSYN'S +SOM +SOMALI +SOMALIA +SOMALIA'S +SOMALIAN +SOMALIS +SOMATOGEN +SOMBER +SOMBERLY +SOME +SOMEBODY +SOMEBODY'S +SOMEDAY +SOMEHOW +SOMEONE +SOMEONE'S +SOMEPLACE +SOMERS +SOMERSAULTS +SOMERSET +SOMERVILLE +SOMETHIN' +SOMETHING +SOMETHING'S +SOMETHINGS +SOMETIME +SOMETIMES +SOMEWHAT +SOMEWHERE +SOMMER +SOMMERS +SOMOZA +SOMOZA'S +SON +SON'S +SONAR +SONAT +SONATA +SONATAS +SONATRACH +SONDHEIM +SONDHEIM'S +SONDRA +SONG +SONG'S +SONGBIRDS +SONGS +SONGWRITER +SONGWRITERS +SONGWRITING +SONI +SONIA +SONIC +SONICS +SONJA +SONNENFELD +SONNETT +SONNTAG +SONNY +SONOMA +SONORA +SONRISE +SONS +SONS' +SONTAG +SONY +SONY'S +SONYA +SOO +SOON +SOONER +SOONERS +SOONEST +SOOT +SOOTHE +SOOTHED +SOOTHING +SOOTY +SOP +SOPH +SOPHIA +SOPHIE +SOPHIE'S +SOPHISTICATED +SOPHISTICATES +SOPHISTICATION +SOPHOMORE +SOPHOMORES +SOPHOMORIC +SOPRANO +SOPRANOS +SOQUEL +SORBET +SORBONNE +SORDID +SORE +SORELY +SORENESS +SORENSEN +SORENSON +SORES +SORG +SORGHUM +SORIA +SORIANO +SORKIN +SORORITIES +SORORITY +SOROS +SOROS'S +SORRELL +SORROW +SORROWFUL +SORROWS +SORRY +SORT +SORTED +SORTERS +SORTIES +SORTING +SORTS +SORVINO +SOSA +SOSIN +SOSKOVETS +SOSNOFF +SOSNOFF'S +SOSS +SOSUKE +SOTHEBY'S +SOTO +SOTOMAYOR +SOUFFLE +SOUGHT +SOUK +SOUL +SOULE +SOULFUL +SOULJAH +SOULS +SOUND +SOUND'S +SOUNDED +SOUNDER +SOUNDING +SOUNDINGS +SOUNDLY +SOUNDNESS +SOUNDS +SOUNDSCAN +SOUNDTRACK +SOUNDTRACKS +SOUNDVIEW +SOUP +SOUPED +SOUPS +SOUPY +SOUR +SOURCE +SOURCES +SOURCING +SOURDOUGH +SOURED +SOURING +SOURROUILLE +SOURS +SOUSA +SOUSUKE +SOUTER +SOUTER'S +SOUTH +SOUTH'S +SOUTHAM +SOUTHAMPTON +SOUTHBOUND +SOUTHDOWN +SOUTHEAST +SOUTHEAST'S +SOUTHEASTERN +SOUTHER +SOUTHERLY +SOUTHERN +SOUTHERN'S +SOUTHERNER +SOUTHERNERS +SOUTHERNMOST +SOUTHFIELD +SOUTHGATE +SOUTHLAND +SOUTHLAND'S +SOUTHMARK +SOUTHMARK'S +SOUTHPORT +SOUTHSIDE +SOUTHWARD +SOUTHWEST +SOUTHWEST'S +SOUTHWESTERN +SOUVENIR +SOUVENIRS +SOUZA +SOVALBARRO +SOVEREIGN +SOVEREIGNTY +SOVIET +SOVIET'S +SOVIETS +SOVIETS' +SOVIETSKAYA +SOVRAN +SOVRAN'S +SOW +SOWED +SOWELL +SOWETAN +SOWETO +SOWING +SOWN +SOWS +SOX +SOX'S +SOY +SOYA +SOYBEAN +SOYBEANS +SOYINKA +SOYUZ +SPA +SPACE +SPACECRAFT +SPACECRAFT'S +SPACED +SPACEFLIGHT +SPACEK +SPACELAB +SPACENET +SPACEPORT +SPACES +SPACESHIP +SPACESHIPS +SPACESUITS +SPACEWALK +SPACEY +SPACING +SPACIOUS +SPADE +SPADER +SPADES +SPAETH +SPAGHETTI +SPAGO +SPAIN +SPAIN'S +SPALDING +SPAM +SPAN +SPANDEX +SPANGLED +SPANGLER +SPANIARD +SPANIARDS +SPANIEL +SPANISH +SPANK +SPANKED +SPANKING +SPANKY +SPANN +SPANNED +SPANNING +SPANO +SPANOS +SPANS +SPAR +SPARC +SPARCSTATION +SPARE +SPARED +SPARES +SPARING +SPARINGLY +SPARK +SPARKED +SPARKING +SPARKLE +SPARKLED +SPARKLERS +SPARKLES +SPARKLING +SPARKS +SPARKY +SPARRED +SPARRING +SPARROW +SPARROWS +SPARSE +SPARSELY +SPARTA +SPARTACUS +SPARTAN +SPARTANBURG +SPARTANS +SPARTANS' +SPAS +SPASM +SPASMS +SPASO +SPAT +SPATE +SPATH +SPATIAL +SPATS +SPATTER +SPATTERED +SPATULA +SPAULDING +SPAWN +SPAWNED +SPAWNING +SPAWNS +SPEAK +SPEAKER +SPEAKER'S +SPEAKERS +SPEAKERS' +SPEAKERSHIP +SPEAKES +SPEAKING +SPEAKS +SPEAR +SPEARFISHING +SPEARHEAD +SPEARHEADED +SPEARHEADING +SPEARING +SPEARMAN +SPEARS +SPEC +SPECIAL +SPECIALIST +SPECIALISTS +SPECIALISTS' +SPECIALITIES +SPECIALITY +SPECIALIZATION +SPECIALIZE +SPECIALIZED +SPECIALIZES +SPECIALIZING +SPECIALLY +SPECIALS +SPECIALTIES +SPECIALTY +SPECIES +SPECIES' +SPECIFIC +SPECIFICALLY +SPECIFICATION +SPECIFICATIONS +SPECIFICITY +SPECIFICS +SPECIFIED +SPECIFIES +SPECIFY +SPECIFYING +SPECIMEN +SPECIMENS +SPECIOUS +SPECK +SPECKLED +SPECKS +SPECS +SPECTACLE +SPECTACLES +SPECTACULAR +SPECTACULARLY +SPECTATOR +SPECTATORS +SPECTER +SPECTER'S +SPECTOR +SPECTRA +SPECTRADYNE +SPECTRAL +SPECTRE +SPECTROMETER +SPECTRUM +SPECTRUM'S +SPECULATE +SPECULATED +SPECULATES +SPECULATING +SPECULATION +SPECULATIONS +SPECULATIVE +SPECULATOR +SPECULATORS +SPED +SPEECH +SPEECHES +SPEECHLESS +SPEECHMAKING +SPEECHWRITER +SPEECHWRITERS +SPEED +SPEEDBOAT +SPEEDBOATS +SPEEDED +SPEEDERS +SPEEDIER +SPEEDILY +SPEEDING +SPEEDOMETER +SPEEDS +SPEEDUP +SPEEDWAY +SPEEDY +SPEELMAN +SPEER +SPELL +SPELLBINDING +SPELLBOUND +SPELLED +SPELLING +SPELLING'S +SPELLINGS +SPELLMAN +SPELLS +SPELMAN +SPENCE +SPENCE'S +SPENCER +SPENCER'S +SPEND +SPENDER +SPENDERS +SPENDING +SPENDS +SPENDTHRIFT +SPENSER +SPENT +SPERLING +SPERM +SPERO +SPERRY +SPEW +SPEWED +SPEWING +SPEWS +SPEYER +SPHERE +SPHERES +SPHERICAL +SPHINX +SPICE +SPICED +SPICER +SPICES +SPICY +SPIDER +SPIDERMAN +SPIDERS +SPIED +SPIEGEL +SPIEGEL'S +SPIEGELMAN +SPIEL +SPIELBERG +SPIELBERG'S +SPIELVOGEL +SPIERS +SPIES +SPIFFY +SPIGOT +SPIGOTS +SPIKE +SPIKED +SPIKES +SPIKING +SPIKY +SPILKA +SPILL +SPILL'S +SPILLANE +SPILLED +SPILLING +SPILLOVER +SPILLS +SPILMAN +SPIN +SPINA +SPINACH +SPINAL +SPINDLE +SPINDLER +SPINDLY +SPINE +SPINELESS +SPINES +SPINKS +SPINNAKER +SPINNER +SPINNERS +SPINNING +SPINOFF +SPINOFFS +SPINS +SPINSTER +SPIRA +SPIRAL +SPIRALED +SPIRALING +SPIRALLING +SPIRALS +SPIRE +SPIRES +SPIRIT +SPIRITED +SPIRITEDNESS +SPIRITS +SPIRITUAL +SPIRITUALISM +SPIRITUALITY +SPIRITUALLY +SPIRITUALS +SPIRO +SPIT +SPITAK +SPITE +SPITEFUL +SPITS +SPITTING +SPITZ +SPITZER +SPIVACK +SPIVAK +SPIVEY +SPLASH +SPLASHED +SPLASHES +SPLASHING +SPLASHY +SPLATTER +SPLATTERED +SPLEEN +SPLENDID +SPLENDIDLY +SPLENDOR +SPLICE +SPLICED +SPLICING +SPLINT +SPLINTER +SPLINTERED +SPLINTERING +SPLINTERS +SPLIT +SPLITS +SPLITTING +SPLOTCHES +SPLURGE +SPOCK +SPOGLI +SPOIL +SPOILAGE +SPOILED +SPOILER +SPOILERS +SPOILING +SPOILS +SPOKANE +SPOKE +SPOKEMAN +SPOKEN +SPOKES +SPOKESMAN +SPOKESMAN'S +SPOKESMEN +SPOKESPEOPLE +SPOKESPERSON +SPOKESPERSONS +SPOKESWOMAN +SPOKESWOMEN +SPOKEWOMAN +SPOLETO +SPONG +SPONGE +SPONGES +SPONGY +SPONSOR +SPONSORED +SPONSORING +SPONSORS +SPONSORSHIP +SPONSORSHIPS +SPONTANEITY +SPONTANEOUS +SPONTANEOUSLY +SPOOF +SPOOFING +SPOOFS +SPOOK +SPOOKED +SPOOKS +SPOOKY +SPOOL +SPOON +SPOONFUL +SPOONS +SPOOR +SPORADIC +SPORADICALLY +SPORCK +SPORES +SPORKIN +SPORKIN'S +SPORT +SPORT'S +SPORTED +SPORTING +SPORTS +SPORTS' +SPORTSCASTER +SPORTSCASTERS +SPORTSCHANNEL +SPORTSMAN +SPORTSMANSHIP +SPORTSMEN +SPORTSWEAR +SPORTSWRITER +SPORTSWRITERS +SPORTY +SPOT +SPOTLESS +SPOTLIGHT +SPOTLIGHTED +SPOTLIGHTING +SPOTLIGHTS +SPOTS +SPOTTED +SPOTTER +SPOTTERS +SPOTTING +SPOTTY +SPOUSAL +SPOUSE +SPOUSE'S +SPOUSES +SPOUT +SPOUTING +SPOUTS +SPRAGUE +SPRAIN +SPRAINED +SPRAINS +SPRANG +SPRATLY +SPRATLYS +SPRATT +SPRAWL +SPRAWLED +SPRAWLING +SPRAWLS +SPRAY +SPRAYED +SPRAYING +SPRAYS +SPREAD +SPREADING +SPREADS +SPREADSHEET +SPREADSHEETS +SPREE +SPREES +SPRIGGS +SPRIGHTLY +SPRING +SPRING'S +SPRINGBOARD +SPRINGDALE +SPRINGER +SPRINGFIELD +SPRINGING +SPRINGS +SPRINGSTEEN +SPRINGSTEEN'S +SPRINGTIME +SPRINKEL +SPRINKLE +SPRINKLED +SPRINKLER +SPRINKLERS +SPRINKLES +SPRINKLING +SPRINT +SPRINT'S +SPRINTED +SPRINTER +SPRINTERS +SPRINTING +SPRINTS +SPRITE +SPROUSE +SPROUT +SPROUTED +SPROUTING +SPROUTS +SPRUCE +SPRUCED +SPRUCING +SPRUNG +SPRY +SPUD +SPUDS +SPUN +SPUNK +SPUNKY +SPUR +SPURIOUS +SPURN +SPURNED +SPURNING +SPURRED +SPURRIER +SPURRING +SPURS +SPURT +SPURTED +SPURTING +SPURTS +SPUTNIK +SPUTTER +SPUTTERED +SPUTTERING +SPY +SPYCATCHER +SPYGLASS +SPYING +SPYMASTER +SQUABBLE +SQUABBLED +SQUABBLES +SQUABBLING +SQUAD +SQUADRON +SQUADRONS +SQUADS +SQUALID +SQUALL +SQUALLS +SQUALOR +SQUANDER +SQUANDERED +SQUANDERING +SQUARE +SQUARE'S +SQUARED +SQUARELY +SQUARES +SQUARING +SQUASH +SQUASHED +SQUAT +SQUATTED +SQUATTER +SQUATTERS +SQUATTING +SQUAW +SQUAWK +SQUAWKING +SQUEAK +SQUEAKED +SQUEAKER +SQUEAKING +SQUEAKS +SQUEAKY +SQUEAL +SQUEALING +SQUEALS +SQUEAMISH +SQUEEZE +SQUEEZED +SQUEEZES +SQUEEZING +SQUELCH +SQUELCHED +SQUELCHING +SQUIBB +SQUIBB'S +SQUID +SQUIER +SQUINT +SQUINTING +SQUIRE +SQUIRES +SQUIRM +SQUIRMING +SQUIRREL +SQUIRRELED +SQUIRRELS +SQUIRT +SQUIRTED +SQUISHY +SREBRENICA +SRI +SRINAGAR +SSANGYONG +ST +STAAR +STAB +STABBED +STABBING +STABBINGS +STABILE +STABILITY +STABILIZATION +STABILIZE +STABILIZED +STABILIZER +STABILIZERS +STABILIZES +STABILIZING +STABLE +STABLER +STABLES +STABS +STAC +STACCATO +STACEY +STACK +STACKED +STACKHOUSE +STACKING +STACKS +STACY +STADE +STADIUM +STADIUM'S +STADIUMS +STADLER +STADT +STAFF +STAFF'S +STAFFED +STAFFER +STAFFERS +STAFFING +STAFFORD +STAFFS +STAG +STAGE +STAGECOACH +STAGED +STAGEHANDS +STAGES +STAGFLATION +STAGGER +STAGGERED +STAGGERING +STAGGERS +STAGGS +STAGING +STAGNANT +STAGNATE +STAGNATED +STAGNATING +STAGNATION +STAHL +STAID +STAIN +STAINED +STAINING +STAINLESS +STAINS +STAIR +STAIRCASE +STAIRCASES +STAIRS +STAIRWAY +STAIRWAYS +STAIRWELL +STAIRWELLS +STAKE +STAKED +STAKEHOLDERS +STAKEOUT +STAKES +STAKING +STALE +STALEMATE +STALEMATED +STALEY +STALEY'S +STALIN +STALIN'S +STALINGRAD +STALINISM +STALINIST +STALINISTS +STALK +STALKED +STALKER +STALKERS +STALKING +STALKS +STALL +STALLED +STALLER +STALLING +STALLINGS +STALLION +STALLIONS +STALLMAN +STALLONE +STALLONE'S +STALLS +STALOFF +STALOWA +STALWART +STALWARTS +STAMBERG +STAMENSON +STAMFORD +STAMINA +STAMP +STAMPA +STAMPED +STAMPEDE +STAMPEDED +STAMPEDING +STAMPING +STAMPS +STAN +STANADYNE +STANCE +STANCES +STANCH +STAND +STANDARD +STANDARD'S +STANDARDIZATION +STANDARDIZE +STANDARDIZED +STANDARDIZING +STANDARDS +STANDBY +STANDBYS +STANDING +STANDINGS +STANDOFF +STANDOUT +STANDOUTS +STANDPOINT +STANDS +STANDSTILL +STANDUP +STANEK +STANFORD +STANFORD'S +STANGELAND +STANGER +STANISLAUS +STANISLAV +STANISLAW +STANKEVICH +STANLEY +STANLEY'S +STANSEL +STANSFIELD +STANT +STANTON +STANWYCK +STANZA +STAPLE +STAPLED +STAPLES +STAPLETON +STAR +STAR'S +STARBOARD +STARBUCKS +STARCH +STARCHED +STARCHES +STARCHY +STARDENT +STARDOM +STARDUST +STARE +STARED +STARES +STARFISH +STARGATE +STARING +STARK +STARK'S +STARKE +STARKEY +STARKIST +STARKLY +STARKMAN +STARKS +STARLET +STARLIGHT +STARLING +STAROSTECKI +STARR +STARR'S +STARRED +STARRETT +STARRING +STARRS +STARRY +STARS +STARS' +STARSHIP +STARSIGHT +START +STARTED +STARTER +STARTERS +STARTING +STARTLE +STARTLED +STARTLING +STARTLINGLY +STARTS +STARTUP +STARTUPS +STARVATION +STARVE +STARVED +STARVING +STARWAVE +STARZL +STASH +STASHED +STASHING +STASI +STAT +STATE +STATE'S +STATED +STATEHOOD +STATEHOUSE +STATEHOUSES +STATELESS +STATELY +STATEMENT +STATEMENTS +STATEN +STATERS +STATES +STATES' +STATESIDE +STATESMAN +STATESMANLIKE +STATESMANSHIP +STATESMEN +STATESWEST +STATEWIDE +STATIC +STATING +STATION +STATION'S +STATIONARY +STATIONED +STATIONERY +STATIONING +STATIONS +STATIONS' +STATISM +STATIST +STATISTIC +STATISTICAL +STATISTICALLY +STATISTICIAN +STATISTICIANS +STATISTICS +STATLER +STATMENT +STATOIL +STATS +STATUARY +STATUE +STATUE'S +STATUES +STATUETTE +STATUETTES +STATURE +STATUS +STATUTE +STATUTES +STATUTORY +STAUBACH +STAUFFER +STAUNCH +STAUNCHEST +STAUNCHLY +STAUNTON +STAVE +STAVED +STAVING +STAVROPOL +STAY +STAYED +STAYING +STAYNER +STAYS +STEAD +STEADFAST +STEADFASTLY +STEADFASTNESS +STEADIED +STEADIER +STEADILY +STEADINESS +STEADMAN +STEADY +STEADYING +STEAGALL +STEAK +STEAKHOUSE +STEAKS +STEAL +STEALING +STEALS +STEALTH +STEALTHY +STEAM +STEAMBOAT +STEAMED +STEAMER +STEAMING +STEAMROLLER +STEAMSHIP +STEAMY +STEARNS +STEARNS'S +STECK +STEDMAN +STEED +STEEL +STEEL'S +STEELCASE +STEELE +STEELERS +STEELERS' +STEELHEAD +STEELMAKER +STEELMAKER'S +STEELMAKERS +STEELMAKING +STEELMAN +STEELS +STEELWORKER +STEELWORKERS +STEELWORKS +STEELY +STEEN +STEEN'S +STEENBURGEN +STEEP +STEEPED +STEEPER +STEEPEST +STEEPLE +STEEPLECHASE +STEEPLY +STEER +STEERE +STEERED +STEERING +STEERS +STEFAN +STEFANO +STEFFAN +STEFFANCI +STEFFEN +STEFFENS +STEFFES +STEFFI +STEGEMEIER +STEGER +STEICHEN +STEIDTMANN +STEIGER +STEIN +STEIN'S +STEINBACH +STEINBECK +STEINBECK'S +STEINBERG +STEINBERG'S +STEINBRENNER +STEINBRENNER'S +STEINEM +STEINER +STEINER'S +STEINFELD +STEINHARDT +STEINHARDT'S +STEINLE +STEINMAN +STEINMETZ +STEINWAY +STELCO +STELLA +STELLAR +STELLO +STELLO'S +STEM +STEMMED +STEMMING +STEMPEL +STEMPEL'S +STEMS +STEN +STENA +STENCH +STENCILED +STENGEL +STENHOLM +STENNIS +STENOGRAPHER +STENSTROM +STENT +STENY +STEP +STEPAN +STEPANAKERT +STEPANIAN +STEPASHIN +STEPCHILD +STEPCHILDREN +STEPDAUGHTER +STEPFATHER +STEPHAN +STEPHANE +STEPHANIE +STEPHANOPOULOS +STEPHEN +STEPHEN'S +STEPHENS +STEPHENSON +STEPMOTHER +STEPP +STEPPE +STEPPED +STEPPENWOLF +STEPPES +STEPPING +STEPS +STEPSON +STEPTOE +STERBA +STEREO +STEREOS +STEREOTYPE +STEREOTYPED +STEREOTYPES +STEREOTYPICAL +STEREOTYPING +STERILE +STERILITY +STERILIZATION +STERILIZATIONS +STERILIZE +STERILIZED +STERILIZING +STERLING +STERLING'S +STERN +STERN'S +STERNBERG +STERNER +STERNLY +STERNS +STEROID +STEROIDS +STET +STETHEM +STETHOSCOPE +STETSON +STEUBEN +STEVE +STEVE'S +STEVEN +STEVENS +STEVENS' +STEVENS'S +STEVENSON +STEVENSON'S +STEVIE +STEW +STEWARD +STEWARDESS +STEWARDESSES +STEWARDS +STEWARDSHIP +STEWART +STEWART'S +STEWED +STEWS +STEYR +STICH +STICK +STICKER +STICKERS +STICKING +STICKLER +STICKNEY +STICKS +STICKY +STIEGLITZ +STIFEL +STIFF +STIFFED +STIFFEN +STIFFENED +STIFFENING +STIFFER +STIFFEST +STIFFLY +STIFFNESS +STIFFS +STIFLE +STIFLED +STIFLES +STIFLING +STIGLITZ +STIGMA +STIGMATIZE +STIGMATIZED +STIKINE +STILES +STILETTO +STILL +STILLBORN +STILLED +STILLER +STILLMAN +STILLNESS +STILLS +STILLWATER +STILLWELL +STILTED +STILTS +STILWELL +STIMPY +STIMSON +STIMULANT +STIMULANTS +STIMULATE +STIMULATED +STIMULATES +STIMULATING +STIMULATION +STIMULATIVE +STIMULI +STIMULUS +STINE +STING +STINGER +STINGERS +STINGING +STINGS +STINGY +STINK +STINKING +STINKS +STINKY +STINSON +STINT +STINTS +STIPE +STIPEND +STIPENDS +STIPULATE +STIPULATED +STIPULATES +STIPULATING +STIPULATION +STIPULATIONS +STIR +STIRLING +STIRRED +STIRRING +STIRRINGS +STIRS +STITCH +STITCHED +STITCHES +STITCHING +STITH +STOCK +STOCK'S +STOCKADE +STOCKARD +STOCKBRIDGE +STOCKBROKER +STOCKBROKERAGE +STOCKBROKERS +STOCKBROKING +STOCKDALE +STOCKED +STOCKER +STOCKHOLDER +STOCKHOLDERS +STOCKHOLDERS' +STOCKHOLDINGS +STOCKHOLM +STOCKHOLM'S +STOCKING +STOCKINGS +STOCKMAN +STOCKMAN'S +STOCKMARKET +STOCKPILE +STOCKPILED +STOCKPILES +STOCKPILING +STOCKS +STOCKS' +STOCKTON +STOCKWELL +STOCKY +STOCKYARDS +STODDARD +STODGY +STOFFEL +STOIC +STOICALLY +STOICISM +STOKE +STOKED +STOKELY +STOKER +STOKER'S +STOKES +STOKING +STOLAR +STOLE +STOLEN +STOLICHNAYA +STOLID +STOLL +STOLLER +STOLPER +STOLTENBERG +STOLTZ +STOMACH +STOMACHS +STOMP +STOMPED +STOMPIE +STOMPING +STONE +STONE'S +STONECIPHER +STONED +STONEHENGE +STONER +STONERIDGE +STONES +STONES' +STONEWALL +STONEWALLED +STONEWALLING +STONEY +STONING +STONY +STOOD +STOOGE +STOOGES +STOOL +STOOLS +STOOP +STOOPED +STOOPS +STOP +STOPGAP +STOPLIGHT +STOPOVER +STOPOVERS +STOPPAGE +STOPPAGES +STOPPARD +STOPPED +STOPPER +STOPPERS +STOPPING +STOPS +STOPWATCH +STORA +STORAGE +STORCH +STORE +STORE'S +STORED +STOREFRONT +STOREFRONTS +STOREHOUSE +STORER +STOREROOM +STORES +STORES' +STOREY +STORIED +STORIES +STORING +STORK +STORM +STORM'S +STORMED +STORMIE +STORMIE'S +STORMING +STORMS +STORMY +STORR +STORRS +STORY +STORY'S +STORYBOARD +STORYBOOK +STORYLINE +STORYTELLER +STORYTELLERS +STORYTELLING +STOSSEL +STOTLER +STOTT +STOUFFER +STOUGHTON +STOUT +STOUTLY +STOVALL +STOVE +STOVER +STOVES +STOW +STOWAWAYS +STOWE +STOWED +STOWERS +STRACHAN +STRADDLE +STRADDLED +STRADDLES +STRADDLING +STRADIVARIUS +STRAFED +STRAFING +STRAIGHT +STRAIGHTAWAY +STRAIGHTEN +STRAIGHTENED +STRAIGHTENING +STRAIGHTER +STRAIGHTFORWARD +STRAIGHTS +STRAIN +STRAINED +STRAINING +STRAINS +STRAIT +STRAITJACKET +STRAITS +STRAND +STRANDED +STRANDING +STRANDS +STRANG +STRANGE +STRANGELOVE +STRANGELY +STRANGENESS +STRANGER +STRANGERS +STRANGEST +STRANGEWAYS +STRANGLE +STRANGLED +STRANGLEHOLD +STRANGLER +STRANGLING +STRANGULATION +STRAP +STRAPLESS +STRAPPED +STRAPPING +STRAPS +STRASBERG +STRASBOURG +STRASSER +STRASZHEIM +STRATA +STRATEGIC +STRATEGICALLY +STRATEGIES +STRATEGIST +STRATEGISTS +STRATEGY +STRATFORD +STRATOSPHERE +STRATOSPHERIC +STRATTON +STRATUS +STRAUS +STRAUSS +STRAUSS' +STRAUSS'S +STRAVINSKY +STRAVINSKY'S +STRAW +STRAWBERRIES +STRAWBERRY +STRAWBERRY'S +STRAWBRIDGE +STRAWN +STRAWS +STRAY +STRAYED +STRAYING +STRAYS +STREAK +STREAKED +STREAKING +STREAKS +STREAM +STREAMED +STREAMERS +STREAMING +STREAMLINE +STREAMLINED +STREAMLINING +STREAMS +STREEP +STREEP'S +STREET +STREET'S +STREETCAR +STREETCARS +STREETER +STREETERS +STREETS +STREETWISE +STREISAND +STREISAND'S +STREKALOV +STRENGTH +STRENGTHEN +STRENGTHENED +STRENGTHENING +STRENGTHENS +STRENGTHS +STRENUOUS +STRENUOUSLY +STREP +STREPTOKINASE +STRESS +STRESSED +STRESSES +STRESSFUL +STRESSING +STRETCH +STRETCHED +STRETCHER +STRETCHERS +STRETCHES +STRETCHING +STREWN +STRICKEN +STRICKLAND +STRICT +STRICTER +STRICTEST +STRICTLY +STRICTURES +STRIDE +STRIDENT +STRIDENTLY +STRIDES +STRIDING +STRIEKER +STRIFE +STRIKE +STRIKE'S +STRIKEBOUND +STRIKEBREAKERS +STRIKEOUT +STRIKEOUTS +STRIKER +STRIKERS +STRIKERS' +STRIKES +STRIKING +STRIKINGLY +STRING +STRINGED +STRINGENT +STRINGENTLY +STRINGER +STRINGERS +STRINGFELLOW +STRINGING +STRINGS +STRINGY +STRIP +STRIP'S +STRIPE +STRIPED +STRIPES +STRIPPED +STRIPPER +STRIPPERS +STRIPPING +STRIPS +STRIPTEASE +STRIVE +STRIVED +STRIVES +STRIVING +STROBE +STROBEL +STRODE +STROESSNER +STROESSNER'S +STROH +STROH'S +STROKE +STROKED +STROKES +STROKING +STROLL +STROLLED +STROLLER +STROLLERS +STROLLING +STROLLS +STROM +STROMMEN +STRONG +STRONGER +STRONGEST +STRONGHOLD +STRONGHOLDS +STRONGLY +STRONGMAN +STRONGMEN +STRONTIUM +STROOCK +STROTE +STROUD +STROVE +STRUB +STRUCK +STRUCTURAL +STRUCTURALLY +STRUCTURE +STRUCTURED +STRUCTURES +STRUCTURING +STRUEBIG +STRUGGLE +STRUGGLED +STRUGGLES +STRUGGLING +STRUM +STRUMMING +STRUNG +STRUNK +STRUT +STRUTHERS +STRUTS +STRUTTED +STRUTTING +STRYDOM +STRYKER +STU +STUART +STUART'S +STUARTS +STUB +STUBBLE +STUBBORN +STUBBORNLY +STUBBORNNESS +STUBBS +STUBBY +STUBS +STUCCO +STUCK +STUCKEY +STUD +STUDDED +STUDDS +STUDEBAKER +STUDEMAN +STUDENT +STUDENT'S +STUDENTS +STUDENTS' +STUDER +STUDIED +STUDIES +STUDIO +STUDIO'S +STUDIOS +STUDIOS' +STUDIOUS +STUDIOUSLY +STUDS +STUDY +STUDY'S +STUDYING +STUFF +STUFFED +STUFFING +STUFFS +STUFFY +STULTIFYING +STUMBLE +STUMBLED +STUMBLES +STUMBLING +STUMP +STUMPED +STUMPING +STUMPS +STUN +STUNG +STUNK +STUNNED +STUNNING +STUNNINGLY +STUNT +STUNTED +STUNTMAN +STUNTS +STUPENDOUS +STUPID +STUPIDEST +STUPIDITY +STUPIDLY +STUPOR +STURDIER +STURDIVANT +STURDY +STURGEON +STURGES +STURGIS +STURM +STUTMAN +STUTTER +STUTTERING +STUTTGART +STUYVESANT +STYLE +STYLED +STYLES +STYLING +STYLISH +STYLISHLY +STYLIST +STYLISTIC +STYLISTICALLY +STYLISTS +STYLIZED +STYLUS +STYMIE +STYMIED +STYNE +STYRENE +STYROFOAM +STYRON +SU +SUARD +SUAREZ +SUASION +SUAVE +SUAZO +SUB +SUB'S +SUBACUTE +SUBARU +SUBARU'S +SUBATOMIC +SUBCHAPTER +SUBCOMMANDER +SUBCOMMITTEE +SUBCOMMITTEE'S +SUBCOMMITTEES +SUBCOMPACT +SUBCOMPACTS +SUBCONSCIOUS +SUBCONSCIOUSLY +SUBCONTINENT +SUBCONTRACT +SUBCONTRACTED +SUBCONTRACTING +SUBCONTRACTOR +SUBCONTRACTORS +SUBCONTRACTS +SUBCULTURE +SUBDIVIDED +SUBDIVISION +SUBDIVISIONS +SUBDUE +SUBDUED +SUBDUING +SUBGROUP +SUBGROUPS +SUBIC +SUBJECT +SUBJECT'S +SUBJECTED +SUBJECTING +SUBJECTIVE +SUBJECTS +SUBJUGATION +SUBLEASE +SUBLET +SUBLIME +SUBLIMINAL +SUBMACHINE +SUBMARINE +SUBMARINES +SUBMERGE +SUBMERGED +SUBMERSIBLE +SUBMINIMUM +SUBMISSION +SUBMISSIONS +SUBMISSIVE +SUBMIT +SUBMITS +SUBMITTED +SUBMITTING +SUBORDINATE +SUBORDINATED +SUBORDINATES +SUBORDINATION +SUBOTNICK +SUBPAR +SUBPLOT +SUBPLOTS +SUBPOENA +SUBPOENAED +SUBPOENAING +SUBPOENAS +SUBROTO +SUBS +SUBSCRIBE +SUBSCRIBED +SUBSCRIBER +SUBSCRIBERS +SUBSCRIBERS' +SUBSCRIBES +SUBSCRIBING +SUBSCRIPTION +SUBSCRIPTIONS +SUBSEQUENT +SUBSEQUENTLY +SUBSERVIENCE +SUBSERVIENT +SUBSET +SUBSIDE +SUBSIDED +SUBSIDENCE +SUBSIDES +SUBSIDIARIES +SUBSIDIARIES' +SUBSIDIARY +SUBSIDIARY'S +SUBSIDIES +SUBSIDING +SUBSIDIZATION +SUBSIDIZE +SUBSIDIZED +SUBSIDIZES +SUBSIDIZING +SUBSIDY +SUBSIST +SUBSISTENCE +SUBSOIL +SUBSPECIES +SUBSTANCE +SUBSTANCES +SUBSTANDARD +SUBSTANTIAL +SUBSTANTIALLY +SUBSTANTIATE +SUBSTANTIATED +SUBSTANTIATION +SUBSTANTIVE +SUBSTANTIVELY +SUBSTATION +SUBSTATIONS +SUBSTITUTE +SUBSTITUTED +SUBSTITUTES +SUBSTITUTING +SUBSTITUTION +SUBSTITUTIONS +SUBSTRATE +SUBSURFACE +SUBSYSTEMS +SUBTERFUGE +SUBTERRANEAN +SUBTEXT +SUBTITLE +SUBTITLED +SUBTITLES +SUBTLE +SUBTLER +SUBTLETIES +SUBTLETY +SUBTLY +SUBTRACT +SUBTRACTED +SUBTRACTING +SUBTRACTION +SUBTROPICAL +SUBTYPE +SUBURB +SUBURBAN +SUBURBANITES +SUBURBIA +SUBURBS +SUBVERSION +SUBVERSIVE +SUBVERSIVES +SUBVERT +SUBVERTED +SUBVERTING +SUBWAY +SUBWAYS +SUBZERO +SUCCEED +SUCCEEDED +SUCCEEDING +SUCCEEDS +SUCCESS +SUCCESSES +SUCCESSFUL +SUCCESSFULLY +SUCCESSION +SUCCESSIVE +SUCCESSIVELY +SUCCESSOR +SUCCESSORS +SUCCINCT +SUCCINCTLY +SUCCOR +SUCCULENT +SUCCUMB +SUCCUMBED +SUCCUMBING +SUCCUMBS +SUCH +SUCHARD +SUCHINDA +SUCK +SUCKED +SUCKER +SUCKERED +SUCKERS +SUCKING +SUCKS +SUCTION +SUDAFED +SUDAN +SUDAN'S +SUDANESE +SUDBURY +SUDDEN +SUDDENLY +SUDDENNESS +SUDS +SUE +SUED +SUEDE +SUES +SUEZ +SUEZ'S +SUFFER +SUFFERED +SUFFERER +SUFFERERS +SUFFERING +SUFFERINGS +SUFFERS +SUFFICE +SUFFICIENCY +SUFFICIENT +SUFFICIENTLY +SUFFIELD +SUFFOCATE +SUFFOCATED +SUFFOCATING +SUFFOCATION +SUFFOLK +SUFFRAGE +SUFFUSED +SUGAR +SUGARMAN +SUGARMAN'S +SUGARS +SUGARY +SUGGEST +SUGGESTED +SUGGESTING +SUGGESTION +SUGGESTIONS +SUGGESTIVE +SUGGESTS +SUGGS +SUGIHARA +SUH +SUHARTO +SUHARTO'S +SUHLER +SUI +SUICIDAL +SUICIDE +SUICIDES +SUING +SUISSE +SUIT +SUIT'S +SUITABILITY +SUITABLE +SUITABLY +SUITCASE +SUITCASES +SUITE +SUITED +SUITES +SUITOR +SUITORS +SUITS +SUK +SUKARNO +SUKHOI +SUKHREET +SUKHUMI +SUL +SULA +SULEIMAN +SULEYMAN +SULFA +SULFATE +SULFIDE +SULFITES +SULFUR +SULFURIC +SULLEN +SULLIED +SULLIVAN +SULLIVAN'S +SULLY +SULOME +SULPHUR +SULTAN +SULTANATE +SULTANS +SULTRY +SULYA +SULZBERGER +SULZER +SUM +SUMATRA +SUMGAIT +SUMITA +SUMITOMO +SUMITOMO'S +SUMMA +SUMMARIES +SUMMARILY +SUMMARIZE +SUMMARIZED +SUMMARIZES +SUMMARIZING +SUMMARY +SUMMATION +SUMMATIONS +SUMMED +SUMMER +SUMMER'S +SUMMERS +SUMMERTIME +SUMMERVILLE +SUMMING +SUMMIT +SUMMIT'S +SUMMITEERS +SUMMITRY +SUMMITS +SUMMON +SUMMONED +SUMMONING +SUMMONS +SUMMONSES +SUMNER +SUMO +SUMPTUOUS +SUMS +SUMTER +SUN +SUN'S +SUNAMERICA +SUNBATHERS +SUNBATHING +SUNBEAM +SUNBEAM'S +SUNBELT +SUNBIRD +SUNBURN +SUNBURNED +SUNBURST +SUNCOR +SUNDAE +SUNDANCE +SUNDAY +SUNDAY'S +SUNDAYS +SUNDERLAND +SUNDLUN +SUNDOWN +SUNDQUIST +SUNDRY +SUNDSTRAND +SUNFIRE +SUNFLOWER +SUNFLOWERS +SUNG +SUNG'S +SUNGLASS +SUNGLASSES +SUNK +SUNKEN +SUNKIST +SUNLAND +SUNLIGHT +SUNLIT +SUNNI +SUNNIS +SUNNY +SUNNYVALE +SUNNYVALE'S +SUNOL +SUNRISE +SUNROOF +SUNS +SUNS' +SUNSCREEN +SUNSCREENS +SUNSET +SUNSETS +SUNSHINE +SUNSPOTS +SUNTAN +SUNTORY +SUNTRUST +SUNUNU +SUNUNU'S +SUPER +SUPERB +SUPERBLY +SUPERBOWL +SUPERCENTERS +SUPERCHARGED +SUPERCOLLIDER +SUPERCOMPUTER +SUPERCOMPUTERS +SUPERCOMPUTING +SUPERCONDUCTING +SUPERCONDUCTIVITY +SUPERCONDUCTOR +SUPERCONDUCTORS +SUPERDOME +SUPERFICIAL +SUPERFICIALLY +SUPERFLUOUS +SUPERFUND +SUPERHEATED +SUPERHERO +SUPERHEROES +SUPERHIGHWAY +SUPERHIGHWAYS +SUPERHUMAN +SUPERIMPOSED +SUPERINTENDENT +SUPERINTENDENT'S +SUPERINTENDENTS +SUPERIOR +SUPERIORITY +SUPERIORS +SUPERLATIVE +SUPERLATIVES +SUPERMAC +SUPERMAJORITY +SUPERMAN +SUPERMARKET +SUPERMARKETS +SUPERMODEL +SUPERMODELS +SUPERNATURAL +SUPERNOVA +SUPERPOWER +SUPERPOWERS +SUPERPOWERS' +SUPERSEDE +SUPERSEDED +SUPERSEDES +SUPERSEDING +SUPERSONIC +SUPERSONICS +SUPERSTAR +SUPERSTARS +SUPERSTATION +SUPERSTITION +SUPERSTITIONS +SUPERSTITIOUS +SUPERSTORE +SUPERSTORES +SUPERSTRUCTURE +SUPERTANKER +SUPERTANKERS +SUPERVISE +SUPERVISED +SUPERVISES +SUPERVISING +SUPERVISION +SUPERVISOR +SUPERVISOR'S +SUPERVISORIAL +SUPERVISORS +SUPERVISORS' +SUPERVISORY +SUPERX +SUPPER +SUPPLANT +SUPPLANTED +SUPPLANTING +SUPPLE +SUPPLEMENT +SUPPLEMENTAL +SUPPLEMENTARY +SUPPLEMENTED +SUPPLEMENTING +SUPPLEMENTS +SUPPLIED +SUPPLIER +SUPPLIERS +SUPPLIERS' +SUPPLIES +SUPPLY +SUPPLYING +SUPPORT +SUPPORTED +SUPPORTER +SUPPORTERS +SUPPORTING +SUPPORTIVE +SUPPORTS +SUPPOSE +SUPPOSED +SUPPOSEDLY +SUPPOSING +SUPPOSITION +SUPPRESS +SUPPRESSED +SUPPRESSES +SUPPRESSING +SUPPRESSION +SUPPRESSOR +SUPRA +SUPRANATIONAL +SUPREMACIST +SUPREMACISTS +SUPREMACY +SUPREME +SUPREMELY +SUPREMES +SUPRISED +SUR +SURAT +SURCHARGE +SURCHARGES +SURE +SURELY +SURER +SURESH +SUREST +SURETY +SURF +SURFACE +SURFACED +SURFACES +SURFACING +SURFACTANT +SURFBOARD +SURFEIT +SURFER +SURFERS +SURFING +SURGE +SURGED +SURGEON +SURGEON'S +SURGEONS +SURGERIES +SURGERY +SURGES +SURGICAL +SURGICAL'S +SURGICALLY +SURGING +SURINAME +SURINAMESE +SURLY +SURMISE +SURMISED +SURMOUNT +SURMOUNTED +SURNAME +SURNAMES +SURPASS +SURPASSED +SURPASSES +SURPASSING +SURPLUS +SURPLUSES +SURPRISE +SURPRISED +SURPRISES +SURPRISING +SURPRISINGLY +SURREAL +SURREALISM +SURREALIST +SURREALISTIC +SURRENDER +SURRENDERED +SURRENDERING +SURRENDERS +SURREPTITIOUS +SURREPTITIOUSLY +SURREY +SURROGACY +SURROGATE +SURROGATES +SURROUND +SURROUNDED +SURROUNDING +SURROUNDINGS +SURROUNDS +SURTAX +SURVEILLANCE +SURVEY +SURVEY'S +SURVEYED +SURVEYING +SURVEYOR +SURVEYORS +SURVEYS +SURVIVABILITY +SURVIVABLE +SURVIVAL +SURVIVALIST +SURVIVE +SURVIVED +SURVIVES +SURVIVING +SURVIVOR +SURVIVOR'S +SURVIVORS +SURVIVORS' +SUS +SUSAN +SUSAN'S +SUSANA +SUSANNA +SUSANNAH +SUSANNE +SUSCEPTIBILITY +SUSCEPTIBLE +SUSHI +SUSIE +SUSMAN +SUSPECT +SUSPECT'S +SUSPECTED +SUSPECTING +SUSPECTS +SUSPECTS' +SUSPEND +SUSPENDED +SUSPENDERS +SUSPENDING +SUSPENDS +SUSPENSE +SUSPENSEFUL +SUSPENSION +SUSPENSIONS +SUSPICION +SUSPICIONS +SUSPICIOUS +SUSPICIOUSLY +SUSQUEHANNA +SUSSEX +SUSSMAN +SUSTAIN +SUSTAINABILITY +SUSTAINABLE +SUSTAINED +SUSTAINING +SUSTAINS +SUSTENANCE +SUSTEREN +SUSUMU +SUTCLIFFE +SUTER +SUTHERLAND +SUTHERLAND'S +SUTRO +SUTTER +SUTTON +SUTTON'S +SUTURE +SUTURES +SUU +SUVAR +SUZANNE +SUZHOU +SUZIE +SUZMAN +SUZUKI +SUZUKI'S +SUZY +SVAY +SVELTE +SVEN +SVENSKA +SVERDLOVSK +SVETLANA +SWAB +SWABS +SWAGGART +SWAGGART'S +SWAGGER +SWAGGERING +SWAHILI +SWAIN +SWAINE +SWALEH +SWALLOW +SWALLOWED +SWALLOWING +SWALLOWS +SWAM +SWAMI +SWAMP +SWAMPED +SWAMPING +SWAMPS +SWAMPY +SWAN +SWANK +SWANKY +SWANN +SWANS +SWANSON +SWANSON'S +SWAP +SWAPO +SWAPO'S +SWAPP +SWAPPED +SWAPPING +SWAPS +SWARM +SWARMED +SWARMING +SWARMS +SWAROVSKI +SWARTHMORE +SWARTZ +SWASHBUCKLING +SWASTIKA +SWASTIKAS +SWAT +SWATCH +SWATCHES +SWATH +SWATHE +SWATHED +SWATHS +SWATTED +SWAVELY +SWAY +SWAYED +SWAYING +SWAYZE +SWAZILAND +SWEAR +SWEARING +SWEARINGEN +SWEARS +SWEAT +SWEATED +SWEATER +SWEATERS +SWEATING +SWEATS +SWEATSHIRT +SWEATSHIRTS +SWEATSHOP +SWEATSHOPS +SWEATY +SWEDE +SWEDEN +SWEDEN'S +SWEDES +SWEDISH +SWEENEY +SWEENEY'S +SWEEP +SWEEPER +SWEEPERS +SWEEPING +SWEEPS +SWEEPSTAKES +SWEET +SWEETEN +SWEETENED +SWEETENER +SWEETENERS +SWEETENING +SWEETER +SWEETEST +SWEETHEART +SWEETHEARTS +SWEETIE +SWEETLY +SWEETNESS +SWEETS +SWEETWATER +SWELL +SWELLED +SWELLING +SWELLS +SWELTERING +SWENSON +SWEPT +SWERVE +SWERVED +SWERVING +SWIFT +SWIFTER +SWIFTLY +SWIFTNESS +SWIG +SWILLING +SWIM +SWIMMER +SWIMMERS +SWIMMING +SWIMS +SWIMSUIT +SWIMSUITS +SWIMWEAR +SWINDALL +SWINDALL'S +SWINDELL +SWINDLE +SWINDLED +SWINDLER +SWINDLERS +SWINDLES +SWINDLING +SWINE +SWING +SWINGING +SWINGS +SWIPE +SWIPED +SWIPES +SWIPING +SWIRE +SWIRL +SWIRLED +SWIRLING +SWIRLS +SWISH +SWISS +SWISSAIR +SWITCH +SWITCHBOARD +SWITCHBOARDS +SWITCHED +SWITCHERS +SWITCHES +SWITCHING +SWITZER +SWITZER'S +SWITZERLAND +SWITZERLAND'S +SWIVEL +SWOLLEN +SWOON +SWOONED +SWOONING +SWOOP +SWOOPED +SWOOPING +SWOOPS +SWORD +SWORDFISH +SWORDS +SWORE +SWORN +SWUNG +SY +SYBASE +SYBIL +SYCAMORE +SYD +SYDNEY +SYDNEY'S +SYDOW +SYED +SYKES +SYLLABLE +SYLLABLES +SYLMAR +SYLVAN +SYLVANIA +SYLVESTER +SYLVIA +SYLVIE +SYM +SYMANTEC +SYMBION +SYMBIOSIS +SYMBIOTIC +SYMBOL +SYMBOLIC +SYMBOLICALLY +SYMBOLICS +SYMBOLISM +SYMBOLIZE +SYMBOLIZED +SYMBOLIZES +SYMBOLIZING +SYMBOLS +SYMINGTON +SYMMETRICAL +SYMMETRY +SYMMS +SYMPATHETIC +SYMPATHETICALLY +SYMPATHIES +SYMPATHIZE +SYMPATHIZED +SYMPATHIZER +SYMPATHIZERS +SYMPATHIZES +SYMPATHIZING +SYMPATHY +SYMPHONIC +SYMPHONIES +SYMPHONY +SYMPHONY'S +SYMPOSIUM +SYMPOSIUMS +SYMPTOM +SYMPTOMATIC +SYMPTOMS +SYN +SYNAGOGUE +SYNAGOGUES +SYNAR +SYNC +SYNCH +SYNCHRONIZED +SYNCOR +SYNDICATE +SYNDICATED +SYNDICATES +SYNDICATING +SYNDICATION +SYNDICATIONS +SYNDICATOR +SYNDICATORS +SYNDROME +SYNERGEN +SYNERGIES +SYNERGISTIC +SYNERGY +SYNOD +SYNONYM +SYNONYMOUS +SYNOPSIS +SYNOPTICS +SYNTAX +SYNTEX +SYNTEX'S +SYNTHESIS +SYNTHESIZE +SYNTHESIZED +SYNTHESIZER +SYNTHESIZERS +SYNTHETIC +SYNTHETICS +SYOSSET +SYPHILIS +SYRACUSE +SYRIA +SYRIA'S +SYRIAN +SYRIANS +SYRINGE +SYRINGES +SYRON +SYRUP +SYRUPY +SYSCO +SYSE +SYSTEM +SYSTEM'S +SYSTEMATIC +SYSTEMATICALLY +SYSTEMHOUSE +SYSTEMIC +SYSTEMIX +SYSTEMS +SYSTEMS' +SYSTEMWIDE +SZABO +SZCZECIN +SZILARD +SZOKA +T'S +T'SOUVAS +T. +T.'S +T.S +TA +TAB +TABA +TABACALERA +TABAK +TABASCO +TABATHA +TABBED +TABBY +TABER +TABERNACLE +TABITHA +TABLE +TABLEAU +TABLEAUX +TABLECLOTH +TABLECLOTHS +TABLED +TABLES +TABLESPOON +TABLESPOONS +TABLET +TABLETOP +TABLETS +TABLEWARE +TABLOID +TABLOID'S +TABLOIDS +TABOO +TABOOS +TABOR +TABS +TABUCHI +TABULATED +TABULATING +TABULATION +TABULATIONS +TAC +TACIT +TACITLY +TACITURN +TACK +TACKED +TACKING +TACKLE +TACKLED +TACKLES +TACKLING +TACKS +TACKY +TACO +TACOMA +TACOS +TACRINE +TACT +TACTIC +TACTICAL +TACTICALLY +TACTICIAN +TACTICS +TACTILE +TAD +TADASHI +TADESSE +TADEUSZ +TADIC +TADZHIKISTAN +TAE +TAEGU +TAEJON +TAFERO +TAFFETA +TAFFY +TAFT +TAFT'S +TAG +TAGALOG +TAGAMET +TAGGANTS +TAGGART +TAGGARTS +TAGGED +TAGGING +TAGLIABUE +TAGLINE +TAGS +TAHA +TAHER +TAHITI +TAHITIAN +TAHOE +TAI +TAIF +TAIKO +TAIL +TAILBACK +TAILED +TAILGATE +TAILHOOK +TAILING +TAILINGS +TAILOR +TAILORED +TAILORING +TAILORS +TAILPIPE +TAILS +TAILSPIN +TAINT +TAINTED +TAINTING +TAINTS +TAIPEI +TAIPEI'S +TAISEI +TAIT +TAIWAN +TAIWAN'S +TAIWANESE +TAIYO +TAIZO +TAJ +TAJIK +TAJIKISTAN +TAK +TAKAGI +TAKAHASHI +TAKAKO +TAKAO +TAKASHI +TAKATA +TAKE +TAKECARE +TAKEDA +TAKEI +TAKEMURA +TAKEN +TAKENAKA +TAKEO +TAKEOFF +TAKEOFFS +TAKEOUT +TAKEOVER +TAKEOVERS +TAKER +TAKERS +TAKES +TAKESHI +TAKESHITA +TAKESHITA'S +TAKEUCHI +TAKI +TAKING +TAKINGS +TAL +TALABANI +TALAL +TALB +TALBOT +TALBOTS +TALBOTT +TALCOTT +TALE +TALENT +TALENTED +TALENTS +TALES +TALESE +TALIBAN +TALIGENT +TALISMAN +TALK +TALKATIVE +TALKBACK +TALKED +TALKER +TALKERS +TALKIE +TALKIES +TALKIN +TALKIN' +TALKING +TALKS +TALL +TALLADEGA +TALLAHASSEE +TALLER +TALLEST +TALLEY +TALLIED +TALLIES +TALLINN +TALLON +TALLOW +TALLY +TALLYING +TALMADGE +TALMAN +TALMUD +TALON +TAM +TAMALE +TAMALES +TAMAR +TAMARA +TAMAS +TAMAULIPAS +TAMAYO +TAMBO +TAMBOURINE +TAMBRANDS +TAME +TAMED +TAMER +TAMI +TAMIL +TAMILS +TAMING +TAMMANY +TAMMY +TAMOXIFEN +TAMPA +TAMPAX +TAMPER +TAMPERED +TAMPERING +TAMPICO +TAMPON +TAMPONS +TAMPOSI +TAMURA +TAN +TANABE +TANAI +TANAKA +TANDEM +TANDEM'S +TANDON +TANDY +TANDY'S +TANENBAUM +TANG +TANGENT +TANGENTIAL +TANGERINE +TANGIBLE +TANGLE +TANGLED +TANGLES +TANGLEWOOD +TANGO +TANGY +TANJUG +TANK +TANK'S +TANKAN +TANKED +TANKER +TANKER'S +TANKERS +TANKING +TANKS +TANNED +TANNEN +TANNENBAUM +TANNER +TANNERY +TANNING +TANQUERAY +TANS +TANSU +TANTALIZING +TANTALIZINGLY +TANTAMOUNT +TANTRUM +TANTRUMS +TANYA +TANZANIA +TANZANIAN +TAO +TAOS +TAP +TAPE +TAPED +TAPER +TAPERED +TAPERING +TAPERS +TAPES +TAPESTRIES +TAPESTRY +TAPIA +TAPIE +TAPING +TAPPAN +TAPPED +TAPPERS +TAPPING +TAPS +TAR +TARA +TARAHUMARA +TARANGO +TARANTINO +TARANTINO'S +TARANTULA +TARASOV +TARDINESS +TARDY +TAREK +TAREQ +TARGET +TARGET'S +TARGETED +TARGETING +TARGETS +TARIFF +TARIFFS +TARIQ +TARKANIAN +TARLOW +TARMAC +TARNISH +TARNISHED +TARNISHING +TARNOFF +TARO +TAROM +TAROT +TARP +TARPLEY +TARPON +TARR +TARRAGON +TARRANCE +TARRANT +TARRED +TARRYTOWN +TART +TARTABULL +TARTAN +TARTAR +TARTIKOFF +TARTS +TARZAN +TARZANA +TASADAY +TASHJIAN +TASHKENT +TASK +TASKED +TASKER +TASKMASTER +TASKS +TASLIMA +TASMAN +TASMANIA +TASMANIAN +TASS +TASSEL +TASSELS +TASTE +TASTED +TASTEFUL +TASTEFULLY +TASTELESS +TASTERS +TASTES +TASTIER +TASTING +TASTINGS +TASTY +TAT +TATA +TATAR +TATARS +TATARSTAN +TATE +TATE'S +TATEHO +TATHAM +TATIANA +TATRA +TATSUO +TATTERED +TATTERS +TATTOO +TATTOOED +TATTOOS +TATUM +TATYANA +TAU +TAUB +TAUBMAN +TAUGHT +TAUKE +TAUNT +TAUNTED +TAUNTING +TAUNTON +TAUNTS +TAURUS +TAUT +TAUZIN +TAVERN +TAVERNS +TAWANA +TAWDRY +TAWIL +TAWNY +TAX +TAXABLE +TAXATION +TAXCUT +TAXED +TAXES +TAXES' +TAXI +TAXICAB +TAXICABS +TAXIED +TAXIING +TAXING +TAXIS +TAXIWAY +TAXMAN +TAXOL +TAXPAYER +TAXPAYER'S +TAXPAYERS +TAXPAYERS' +TAXPAYING +TAY +TAYLOR +TAYLOR'S +TBILISI +TCHAIKOVSKY +TCHAIKOVSKY'S +TCHURUK +TE +TEA +TEACH +TEACHER +TEACHER'S +TEACHERS +TEACHERS' +TEACHES +TEACHING +TEACHINGS +TEAGUE +TEAK +TEAL +TEAM +TEAM'S +TEAMED +TEAMING +TEAMMATE +TEAMMATES +TEAMS +TEAMS' +TEAMSTER +TEAMSTERS +TEAMSTERS' +TEAMWORK +TEANECK +TEAPOT +TEAR +TEARFUL +TEARFULLY +TEARING +TEARS +TEARY +TEAS +TEASE +TEASED +TEASER +TEASING +TEASPOON +TEASPOONS +TEATRO +TEC +TECH +TECH'S +TECHIES +TECHNICAL +TECHNICALITIES +TECHNICALITY +TECHNICALLY +TECHNICALS +TECHNICIAN +TECHNICIANS +TECHNICOLOR +TECHNICS +TECHNIQUE +TECHNIQUES +TECHNO +TECHNOCRAT +TECHNOCRATIC +TECHNOCRATS +TECHNOLOGIC +TECHNOLOGICAL +TECHNOLOGICALLY +TECHNOLOGIES +TECHNOLOGIES' +TECHNOLOGIST +TECHNOLOGISTS +TECHNOLOGY +TECHNOLOGY'S +TECHNOMIC +TECHS +TECHSYSTEMS +TECK +TECO +TECTONIC +TECUMSEH +TED +TED'S +TEDDY +TEDIOUS +TEDIUM +TEE +TEED +TEEING +TEEL +TEELEY +TEEMING +TEEMS +TEEN +TEENAGE +TEENAGED +TEENAGER +TEENAGERS +TEENS +TEENY +TEES +TEETER +TEETERED +TEETERING +TEETERS +TEETH +TEETS +TEFLON +TEGUCIGALPA +TEH +TEHERAN +TEHIYA +TEHRAN +TEHRAN'S +TEICHER +TEIKOKU +TEITELBAUM +TEJANO +TEJAS +TEJON +TEK +TEKERE +TEKTRONIX +TEL +TELA +TELAM +TELCO +TELE +TELECAST +TELECASTS +TELECHARGE +TELECHARGE'S +TELECOM +TELECOM'S +TELECOMMUNICATION +TELECOMMUNICATIONS +TELECOMMUTERS +TELECOMMUTING +TELECOMS +TELECONFERENCE +TELECONFERENCING +TELECREDIT +TELEDYNE +TELEDYNE'S +TELEFON +TELEFONICA +TELEFONOS +TELEGENIC +TELEGLOBE +TELEGRAM +TELEGRAMS +TELEGRAPH +TELEGRAPH'S +TELEGRAPHED +TELEKOM +TELEMARKETER +TELEMARKETERS +TELEMARKETING +TELEMECANIQUE +TELEMEDIA +TELEMETRY +TELEMUNDO +TELEPHONE +TELEPHONE'S +TELEPHONED +TELEPHONES +TELEPHONING +TELEPHONY +TELEPICTURES +TELEPORT +TELEPROMPTER +TELERATE +TELERATE'S +TELESAT +TELESCOPE +TELESCOPE'S +TELESCOPES +TELESCOPIC +TELESCRIPT +TELESIS +TELESPHERE +TELETHON +TELETRON +TELETYPE +TELEVANGELIST +TELEVISA +TELEVISA'S +TELEVISE +TELEVISED +TELEVISING +TELEVISION +TELEVISION'S +TELEVISIONS +TELEVISON +TELEWEST +TELEX +TELEXED +TELEXES +TELL +TELLA +TELLABS +TELLEP +TELLER +TELLERS +TELLING +TELLINGLY +TELLS +TELLTALE +TELLURIDE +TELLY +TELMEX +TELMEX'S +TELXON +TELZROW +TEM +TEMBLOR +TEMBLORS +TEMERITY +TEMP +TEMPE +TEMPER +TEMPERAMENT +TEMPERAMENTAL +TEMPERANCE +TEMPERATE +TEMPERATURE +TEMPERATURES +TEMPERED +TEMPERING +TEMPERS +TEMPEST +TEMPESTUOUS +TEMPLATE +TEMPLE +TEMPLE'S +TEMPLES +TEMPLETON +TEMPO +TEMPORAL +TEMPORARIES +TEMPORARILY +TEMPORARY +TEMPORE +TEMPOS +TEMPS +TEMPT +TEMPTATION +TEMPTATIONS +TEMPTED +TEMPTING +TEMPURA +TEN +TEN'S +TENACIOUS +TENACIOUSLY +TENACITY +TENANCY +TENANT +TENANTS +TENANTS' +TEND +TENDED +TENDENCIES +TENDENCY +TENDENTIOUS +TENDER +TENDERED +TENDERING +TENDERLOIN +TENDERLY +TENDERNESS +TENDERS +TENDING +TENDINITIS +TENDON +TENDONS +TENDS +TENEMENT +TENEMENTS +TENET +TENETS +TENFOLD +TENG +TENGIZ +TENN +TENNANT +TENNCARE +TENNECO +TENNECO'S +TENNER +TENNESSEAN +TENNESSEE +TENNESSEE'S +TENNEY +TENNIS +TENNISON +TENNYSON +TENOR +TENORS +TENS +TENSE +TENSION +TENSIONS +TENT +TENTACLES +TENTATIVE +TENTATIVELY +TENTH +TENTHS +TENTS +TENUOUS +TENURE +TENURED +TEODORO +TEPID +TEPPER +TEQUILA +TER +TERADATA +TERADYNE +TERCEL +TERENCE +TERESA +TERESA'S +TEREX +TERI +TERIYAKI +TERKEL +TERM +TERMED +TERMINAL +TERMINALLY +TERMINALS +TERMINATE +TERMINATED +TERMINATES +TERMINATING +TERMINATION +TERMINATIONS +TERMINATOR +TERMING +TERMINOLOGY +TERMINUS +TERMITE +TERMITES +TERMS +TERRA +TERRACCIANO +TERRACE +TERRACED +TERRACES +TERRAIN +TERRANCE +TERRE +TERREBLANCHE +TERRELL +TERRENCE +TERRESTRIAL +TERRI +TERRIBLE +TERRIBLY +TERRIER +TERRIERS +TERRIFIC +TERRIFICALLY +TERRIFIED +TERRIFY +TERRIFYING +TERRILL +TERRITORIAL +TERRITORIES +TERRITORY +TERRITORY'S +TERROR +TERRORISM +TERRORIST +TERRORISTIC +TERRORISTS +TERRORISTS' +TERRORIZE +TERRORIZED +TERRORIZING +TERRORS +TERRY +TERRY'S +TERSE +TERSELY +TERTIARY +TERWILLIGER +TERZANO +TESCO +TESH +TESOBONOS +TESORO +TESORO'S +TESS +TESSA +TEST +TEST'S +TESTA +TESTAMENT +TESTAVERDE +TESTED +TESTER +TESTERS +TESTICLES +TESTICULAR +TESTIFIED +TESTIFIES +TESTIFY +TESTIFYING +TESTILY +TESTIMONIAL +TESTIMONIALS +TESTIMONIES +TESTIMONY +TESTING +TESTOSTERONE +TESTRAKE +TESTS +TESTY +TET +TETANUS +TETE +TETHER +TETHERED +TETLEY +TETON +TETONS +TETRA +TETRACYCLINE +TETRIS +TETTLETON +TEVA +TEW +TEWKSBURY +TEX +TEXACO +TEXACO'S +TEXAN +TEXAN'S +TEXANS +TEXARKANA +TEXAS +TEXAS' +TEXAS'S +TEXT +TEXTBOOK +TEXTBOOKS +TEXTILE +TEXTILES +TEXTRON +TEXTRON'S +TEXTS +TEXTUAL +TEXTURE +TEXTURED +TEXTURES +THA +THABO +THACH +THACHER +THACKER +THAD +THADDEUS +THAGARD +THAI +THAILAND +THAILAND'S +THAIS +THAKKAR +THALBERG +THALIDOMIDE +THALLIUM +THALMANN +THAMES +THAN +THANH +THANI +THANK +THANKED +THANKFUL +THANKFULLY +THANKING +THANKLESS +THANKS +THANKSGIVING +THANO +THARP +THAT +THAT'D +THAT'LL +THAT'S +THATCH +THATCHED +THATCHER +THATCHER'S +THATCHERISM +THATCHERITE +THAW +THAWED +THAWING +THAWRA +THAYER +THE +THEA +THEATER +THEATER'S +THEATERGOERS +THEATERS +THEATRE +THEATRES +THEATREWORKS +THEATRICAL +THEATRICALITY +THEATRICALLY +THEATRICS +THEE +THEFT +THEFTS +THEIR +THEIRS +THELMA +THELONIOUS +THEM +THEMATIC +THEME +THEMED +THEMES +THEMSELF +THEMSELVES +THEN +THEO +THEOBALD +THEOCRACY +THEODOR +THEODORE +THEOLOGIAN +THEOLOGIANS +THEOLOGICAL +THEOLOGY +THEOREM +THEORETICAL +THEORETICALLY +THEORETICIAN +THEORIES +THEORIST +THEORISTS +THEORIZE +THEORIZED +THEORIZES +THEORIZING +THEORY +THER +THERAPEUTIC +THERAPEUTICS +THERAPIES +THERAPIST +THERAPISTS +THERAPY +THERE +THERE'D +THERE'LL +THERE'RE +THERE'S +THERE'VE +THEREABOUTS +THEREAFTER +THEREBY +THEREFORE +THEREIN +THEREOF +THERESA +THERESE +THERMAL +THERMEDICS +THERMO +THERMOMETER +THERMOMETERS +THERMONUCLEAR +THERMOPLASTIC +THERMOS +THERMOSTAT +THERMOSTATS +THEROUX +THESAURUS +THESE +THESES +THESIS +THETA +THEY +THEY'D +THEY'LL +THEY'RE +THEY'VE +THI +THIBAULT +THICK +THICKE +THICKEN +THICKENED +THICKENING +THICKENS +THICKER +THICKEST +THICKET +THICKETS +THICKLY +THICKNESS +THIEF +THIEME +THIERRY +THIEVERY +THIEVES +THIGH +THIGHS +THIGPEN +THIMBLE +THIN +THING +THING'S +THINGS +THINK +THINK'S +THINKER +THINKERS +THINKING +THINKPAD +THINKS +THINLY +THINNED +THINNER +THINNESS +THINNEST +THINNING +THINS +THIOKOL +THIOKOL'S +THIRD +THIRD'S +THIRDLY +THIRDS +THIRST +THIRSTY +THIRTEEN +THIRTEENTH +THIRTIES +THIRTIETH +THIRTY +THIRTY'S +THIRTYSOMETHING +THIS +THIS' +THIS'LL +THISTLE +THO +THOM +THOMA +THOMAN +THOMAS +THOMAS' +THOMAS'S +THOMASES +THOMASON +THOMASSON +THOMASTON +THOMASVILLE +THOMPSON +THOMPSON'S +THOMPSONS +THOMSON +THOMSON'S +THON +THONG +THOR +THOREAU +THORN +THORN'S +THORNBURG +THORNBURGH +THORNBURGH'S +THORNE +THORNHILL +THORNIEST +THORNS +THORNTON +THORNTON'S +THORNY +THOROUGH +THOROUGHBRED +THOROUGHBREDS +THOROUGHFARE +THOROUGHFARES +THOROUGHLY +THOROUGHNESS +THORP +THORPE +THORSON +THORVALD +THOSE +THOU +THOUGH +THOUGHT +THOUGHTFUL +THOUGHTFULLY +THOUGHTLESS +THOUGHTS +THOUSAND +THOUSANDS +THOUSANDTH +THOUSANDTHS +THRALL +THRASH +THRASHED +THRASHER +THRASHING +THREAD +THREADBARE +THREADED +THREADING +THREADS +THREAT +THREATEN +THREATENED +THREATENING +THREATENS +THREATS +THREATT +THREE +THREE'S +THREEFOLD +THREES +THREESOME +THRESHHOLD +THRESHOLD +THRESHOLDS +THREW +THRICE +THRIFT +THRIFT'S +THRIFTS +THRIFTS' +THRIFTY +THRILL +THRILLED +THRILLER +THRILLERS +THRILLING +THRILLS +THRIVE +THRIVED +THRIVES +THRIVING +THROAT +THROATED +THROATS +THROATY +THROB +THROBBING +THROES +THRONE +THRONG +THRONGED +THRONGS +THROTTLE +THROTTLED +THROTTLES +THROTTLING +THROUGH +THROUGHOUT +THROUGHS +THROW +THROWAWAY +THROWBACK +THROWER +THROWERS +THROWING +THROWN +THROWS +THRU +THRUST +THRUSTER +THRUSTERS +THRUSTING +THRUSTS +THRUWAY +THS +THUD +THUDS +THUG +THUGGERY +THUGS +THUMB +THUMBED +THUMBING +THUMBNAIL +THUMBS +THUMP +THUMPING +THUMPS +THUNDER +THUNDERBIRD +THUNDERBIRDS +THUNDERBOLT +THUNDERED +THUNDERING +THUNDEROUS +THUNDERS +THUNDERSHOWERS +THUNDERSTORM +THUNDERSTORMS +THUOT +THURBER +THURGOOD +THURMAN +THURMOND +THUROW +THURS +THURSDAY +THURSDAY'S +THURSDAYS +THURSTON +THUS +THUY +THWART +THWARTED +THWARTING +THWARTS +THY +THYME +THYROID +THYSSEN +TI +TIA +TIAN +TIANANMEN +TIANJIN +TIARA +TIBBETS +TIBET +TIBET'S +TIBETAN +TIBETANS +TIC +TICE +TICK +TICKED +TICKER +TICKET +TICKET'S +TICKETED +TICKETHOLDERS +TICKETING +TICKETLESS +TICKETMASTER +TICKETMASTER'S +TICKETRON +TICKETS +TICKING +TICKLE +TICKLED +TICKLISH +TICKS +TICONDEROGA +TICOR +TICS +TIDAL +TIDBIT +TIDBITS +TIDE +TIDES +TIDEWATER +TIDINGS +TIDWELL +TIDY +TIE +TIEBREAKER +TIED +TIEMPO +TIEN +TIER +TIERED +TIERNEY +TIERRA +TIERS +TIES +TIETMEYER +TIFF +TIFFANY +TIFFANY'S +TIGAR +TIGER +TIGER'S +TIGERS +TIGERS' +TIGERT +TIGHT +TIGHTEN +TIGHTENED +TIGHTENING +TIGHTENS +TIGHTER +TIGHTEST +TIGHTFISTED +TIGHTLY +TIGHTNESS +TIGHTROPE +TIGHTS +TIGRAY +TIGRE +TIGREAN +TIGRIS +TIJUANA +TIL +TILDEN +TILE +TILED +TILES +TILL +TILLAGE +TILLER +TILLEY +TILLING +TILLINGHAST +TILLIS +TILLMAN +TILLOTSON +TILLY +TILSON +TILT +TILTED +TILTING +TILTON +TILTS +TIM +TIM'S +TIMBER +TIMBERLAND +TIMBERLANDS +TIMBERS +TIMBERWOLVES +TIMBUKTU +TIME +TIME'S +TIMED +TIMEFRAME +TIMELESS +TIMELINE +TIMELINESS +TIMELY +TIMEOUT +TIMEOUTS +TIMEPIECE +TIMEPLEX +TIMER +TIMERS +TIMES +TIMES' +TIMES'S +TIMESHARE +TIMETABLE +TIMETABLES +TIMEX +TIMID +TIMIDITY +TIMIDLY +TIMING +TIMISOARA +TIMKEN +TIMM +TIMMAN +TIMMER +TIMMERMAN +TIMMONS +TIMMY +TIMOR +TIMORESE +TIMOTHY +TIN +TINA +TINDER +TINDERBOX +TING +TINGE +TINGED +TINGLE +TINGLING +TINIAN +TINIEST +TINKER +TINKERED +TINKERING +TINNY +TINO +TINOCO +TINS +TINSEL +TINSELTOWN +TINSLEY +TINT +TINTED +TINTO +TINY +TIP +TIPHOOK +TIPOFF +TIPPED +TIPPER +TIPPING +TIPS +TIPSTER +TIPSTERS +TIPSY +TIPTOE +TIPTOEING +TIPTON +TIRADE +TIRADES +TIRANA +TIRE +TIRE'S +TIRED +TIREDNESS +TIRELESS +TIRELESSLY +TIRELLO +TIRES +TIRESOME +TIRING +TIRZA +TIS +TISCH +TISCH'S +TISDALE +TISHMAN +TISSUE +TISSUES +TIT +TITAN +TITANIC +TITANIUM +TITANS +TITIAN +TITILLATING +TITILLATION +TITLE +TITLED +TITLES +TITO +TITO'S +TITOV +TITULAR +TITUS +TITUSVILLE +TIVOLI +TIZZY +TO +TOAD +TOADS +TOAST +TOASTED +TOASTER +TOASTERS +TOASTING +TOASTS +TOBACCO +TOBACCO'S +TOBAGO +TOBIAS +TOBIN +TOBY +TOCQUEVILLE +TOD +TODAY +TODAY'S +TODD +TODD'S +TODDLER +TODDLERS +TODOR +TOE +TOED +TOEHOLD +TOEKES +TOENAILS +TOENSING +TOES +TOFFLER +TOFU +TOGA +TOGETHER +TOGETHERNESS +TOGETHERS +TOGO +TOGS +TOIL +TOILED +TOILET +TOILETRIES +TOILETRY +TOILETS +TOILING +TOK +TOKAI +TOKEN +TOKENISM +TOKENS +TOKIO +TOKOS +TOKOZA +TOKYO +TOKYO'S +TOKYU +TOLBERT +TOLD +TOLEDO +TOLER +TOLERABLE +TOLERANCE +TOLERANCES +TOLERANT +TOLERATE +TOLERATED +TOLERATES +TOLERATING +TOLERATION +TOLL +TOLLED +TOLLING +TOLLIVER +TOLLS +TOLSTOY +TOLUCA +TOLUENE +TOM +TOM'S +TOMAHAWK +TOMAHAWKS +TOMAS +TOMASEK +TOMASO +TOMASSON +TOMATO +TOMATOES +TOMB +TOMBA +TOMBOY +TOMBS +TOMBSTONE +TOMBSTONES +TOMCAT +TOME +TOMEI +TOMES +TOMIICHI +TOMJANOVICH +TOMKINS +TOMLIN +TOMLINSON +TOMMIE +TOMMY +TOMMY'S +TOMOGRAPHY +TOMORROW +TOMORROW'S +TOMPKINS +TOMS +TOMSK +TON +TONAL +TONAWANDA +TONE +TONED +TONER +TONES +TONEY +TONG +TONGA +TONGASS +TONGS +TONGUE +TONGUED +TONGUES +TONI +TONIC +TONIGHT +TONIGHT'S +TONING +TONK +TONKA +TONKA'S +TONKIN +TONNAGE +TONS +TONTO +TONTON +TONY +TONY'S +TONYA +TONYA'S +TONYS +TOO +TOOBIN +TOOELE +TOOK +TOOL +TOOLE +TOOLED +TOOLING +TOOLMAKER +TOOLS +TOOLWORKS +TOOMEY +TOON +TOOT +TOOTH +TOOTHBRUSH +TOOTHBRUSHES +TOOTHED +TOOTHLESS +TOOTHPASTE +TOOTHPASTES +TOOTHPICK +TOOTHPICKS +TOOTHY +TOOTSIE +TOP +TOPANGA +TOPAZ +TOPEKA +TOPIARY +TOPIC +TOPICAL +TOPICS +TOPIX +TOPLESS +TOPOGRAPHY +TOPOL +TOPPED +TOPPER +TOPPERS +TOPPING +TOPPINGS +TOPPLE +TOPPLED +TOPPLING +TOPPS +TOPS +TOPSOIL +TOPSY +TOR +TORAH +TORCH +TORCHED +TORCHES +TORCHIA +TORCHING +TORCHMARK +TORCHMARK'S +TORE +TORI +TORIE +TORIES +TORIES' +TORINO +TORME +TORMENT +TORMENTED +TORMENTING +TORMENTORS +TORN +TORNADO +TORNADOES +TORNADOS +TORNQUIST +TORO +TORONTO +TORONTO'S +TORPEDO +TORPEDOED +TORPEDOES +TORPOR +TORQUE +TORRANCE +TORRAS +TORRE +TORREJON +TORRENCE +TORRENT +TORRENTIAL +TORRENTS +TORRENZANO +TORRES +TORREY +TORRICELLI +TORRID +TORRIJOS +TORRINGTON +TORSO +TORSOS +TORSTAR +TORT +TORTILLA +TORTILLAS +TORTOISE +TORTOISES +TORTORICI +TORTS +TORTUOUS +TORTURE +TORTURED +TORTURERS +TORTURES +TORTURING +TORTUROUS +TORU +TORY +TOSCA +TOSCANINI +TOSCO +TOSHIBA +TOSHIBA'S +TOSHIKI +TOSHIO +TOSS +TOSSED +TOSSES +TOSSING +TOSSUP +TOT +TOTAL +TOTALED +TOTALING +TOTALITARIAN +TOTALITARIANISM +TOTALITY +TOTALLED +TOTALLING +TOTALLY +TOTALS +TOTE +TOTED +TOTEM +TOTENBERG +TOTH +TOTING +TOTO +TOTS +TOTTERING +TOUBON +TOUCH +TOUCHDOWN +TOUCHDOWNS +TOUCHE +TOUCHED +TOUCHES +TOUCHING +TOUCHSTONE +TOUCHY +TOUGH +TOUGHEN +TOUGHENED +TOUGHENING +TOUGHER +TOUGHEST +TOUGHLY +TOUGHNESS +TOUGHS +TOULON +TOULOUSE +TOUPEE +TOUR +TOUR'S +TOURED +TOURING +TOURISM +TOURIST +TOURISTS +TOURISTS' +TOURNAMENT +TOURNAMENT'S +TOURNAMENTS +TOURNEY +TOURNQUIST +TOURS +TOURTELOT +TOUSSAINT +TOUT +TOUTED +TOUTING +TOUTS +TOUVIER +TOW +TOWARD +TOWARDS +TOWBIN +TOWBOAT +TOWBOATS +TOWED +TOWEL +TOWELS +TOWER +TOWER'S +TOWERED +TOWERING +TOWERS +TOWERY +TOWING +TOWLE +TOWN +TOWN'S +TOWNE +TOWNERS +TOWNHOMES +TOWNHOUSE +TOWNHOUSES +TOWNLEY +TOWNS +TOWNSEND +TOWNSFOLK +TOWNSHEND +TOWNSHIP +TOWNSHIPS +TOWNSPEOPLE +TOWS +TOWSON +TOXIC +TOXICITY +TOXICOLOGICAL +TOXICOLOGIST +TOXICOLOGY +TOXICS +TOXIN +TOXINS +TOY +TOYA +TOYED +TOYING +TOYMAKER +TOYO +TOYODA +TOYOTA +TOYOTA'S +TOYOTAS +TOYS +TRABANT +TRAC +TRACE +TRACEABLE +TRACED +TRACER +TRACERS +TRACES +TRACEY +TRACHTENBERG +TRACI +TRACIE +TRACINDA +TRACING +TRACK +TRACK'S +TRACKAGE +TRACKED +TRACKER +TRACKERS +TRACKING +TRACKS +TRACOR +TRACT +TRACTEBEL +TRACTION +TRACTOR +TRACTORS +TRACTS +TRACY +TRACY'S +TRADABLE +TRADE +TRADE'S +TRADED +TRADEMARK +TRADEMARKED +TRADEMARKS +TRADEOFF +TRADEOFFS +TRADER +TRADER'S +TRADERS +TRADERS' +TRADES +TRADESMEN +TRADING +TRADITION +TRADITIONAL +TRADITIONALIST +TRADITIONALISTS +TRADITIONALLY +TRADITIONS +TRAFALGAR +TRAFFIC +TRAFFICKED +TRAFFICKER +TRAFFICKERS +TRAFFICKERS' +TRAFFICKING +TRAFICANT +TRAGEDIES +TRAGEDY +TRAGIC +TRAGICALLY +TRAGOS +TRAIL +TRAILBLAZER +TRAILED +TRAILER +TRAILERS +TRAILING +TRAILS +TRAILWAYS +TRAIN +TRAIN'S +TRAINED +TRAINEE +TRAINEES +TRAINER +TRAINER'S +TRAINERS +TRAINING +TRAINOR +TRAINS +TRAIT +TRAITOR +TRAITORS +TRAITS +TRAJECTORY +TRAK +TRAM +TRAMMELL +TRAMP +TRAMPLE +TRAMPLED +TRAMPLES +TRAMPLING +TRAMPOLINE +TRAMPS +TRAMS +TRAN +TRANCE +TRANCHE +TRANCHES +TRANG +TRANQUIL +TRANQUILITY +TRANQUILIZER +TRANQUILIZERS +TRANQUILLITY +TRANS +TRANSACT +TRANSACTED +TRANSACTION +TRANSACTION'S +TRANSACTIONS +TRANSAFRICA +TRANSALTA +TRANSAMERICA +TRANSAMERICA'S +TRANSAMERICAN +TRANSATLANTIC +TRANSCANADA +TRANSCANADA'S +TRANSCEND +TRANSCENDED +TRANSCENDENT +TRANSCENDENTAL +TRANSCENDING +TRANSCENDS +TRANSCO +TRANSCO'S +TRANSCON +TRANSCONTINENTAL +TRANSCRIBE +TRANSCRIBED +TRANSCRIPT +TRANSCRIPTION +TRANSCRIPTIONS +TRANSCRIPTS +TRANSFER +TRANSFERABLE +TRANSFERED +TRANSFERRED +TRANSFERRING +TRANSFERS +TRANSFIXED +TRANSFORM +TRANSFORMATION +TRANSFORMATIONS +TRANSFORMED +TRANSFORMER +TRANSFORMERS +TRANSFORMING +TRANSFORMS +TRANSFUSION +TRANSFUSIONS +TRANSGENIC +TRANSGRESSION +TRANSGRESSIONS +TRANSIENT +TRANSIENTS +TRANSISTOR +TRANSISTORS +TRANSIT +TRANSITION +TRANSITIONAL +TRANSITIONS +TRANSITORY +TRANSKEI +TRANSLATE +TRANSLATED +TRANSLATES +TRANSLATING +TRANSLATION +TRANSLATIONS +TRANSLATOR +TRANSLATORS +TRANSLUCENT +TRANSMEDIA +TRANSMISSION +TRANSMISSIONS +TRANSMIT +TRANSMITS +TRANSMITTED +TRANSMITTER +TRANSMITTERS +TRANSMITTING +TRANSNATIONAL +TRANSPARENCIES +TRANSPARENCY +TRANSPARENT +TRANSPIRED +TRANSPLANT +TRANSPLANTATION +TRANSPLANTED +TRANSPLANTING +TRANSPLANTS +TRANSPONDER +TRANSPONDERS +TRANSPORATION +TRANSPORT +TRANSPORTABLE +TRANSPORTATION +TRANSPORTATION'S +TRANSPORTED +TRANSPORTER +TRANSPORTERS +TRANSPORTING +TRANSPORTS +TRANSRACIAL +TRANSSEXUAL +TRANSSHIPMENT +TRANSTAR +TRANSTECHNOLOGY +TRANSVAAL +TRANSVESTITE +TRANSVESTITES +TRANSWORLD +TRANSYLVANIA +TRANSYLVANIAN +TRAP +TRAPEZE +TRAPP +TRAPPED +TRAPPER +TRAPPERS +TRAPPING +TRAPPINGS +TRAPS +TRASH +TRASHED +TRASHING +TRASHY +TRAUB +TRAUMA +TRAUMAS +TRAUMATIC +TRAUMATIZED +TRAVAIL +TRAVAILS +TRAVEL +TRAVELED +TRAVELER +TRAVELER'S +TRAVELERS +TRAVELERS' +TRAVELGATE +TRAVELING +TRAVELLED +TRAVELLERS +TRAVELLING +TRAVELOGUE +TRAVELS +TRAVENOL +TRAVERS +TRAVERSE +TRAVERSED +TRAVERSING +TRAVESTY +TRAVIATA +TRAVIS +TRAVNIK +TRAVOLTA +TRAWLER +TRAWLERS +TRAWLING +TRAXLER +TRAY +TRAYLOR +TRAYS +TREACHEROUS +TREACHERY +TREAD +TREADING +TREADMILL +TREADS +TREADWAY +TREADWELL +TREASON +TREASURE +TREASURED +TREASURER +TREASURER'S +TREASURERS +TREASURES +TREASURIES +TREASURY +TREASURY'S +TREASURYS +TREAT +TREATABLE +TREATED +TREATIES +TREATING +TREATISE +TREATMENT +TREATMENTS +TREATS +TREATY +TREATY'S +TREBLE +TREBLED +TREBLINKA +TRECKER +TREE +TREE'S +TREELESS +TREEN +TREES +TREETOPS +TREFOIL +TREJO +TREK +TREKKED +TREKKING +TREKS +TRELLEBORG +TREMBLE +TREMBLED +TREMBLING +TREMENDOUS +TREMENDOUSLY +TREMONT +TREMOR +TREMORS +TRENCH +TRENCHANT +TRENCHES +TREND +TRENDING +TRENDLESS +TRENDS +TRENDY +TRENT +TRENTON +TREPIDATION +TRES +TRESPASS +TRESPASSERS +TRESPASSING +TRESTLE +TREUHAND +TREUHANDANSTALT +TREURNICHT +TREVINO +TREVOR +TREY +TREYBIG +TRI +TRIAD +TRIAGE +TRIAL +TRIAL'S +TRIALS +TRIANGLE +TRIANGLE'S +TRIANGLES +TRIANGULAR +TRIARC +TRIATHLON +TRIBAL +TRIBALISM +TRIBASA +TRIBBLE +TRIBE +TRIBE'S +TRIBECA +TRIBES +TRIBESMEN +TRIBLE +TRIBOROUGH +TRIBULATIONS +TRIBUNAL +TRIBUNAL'S +TRIBUNALS +TRIBUNE +TRIBUNE'S +TRIBUTARIES +TRIBUTARY +TRIBUTE +TRIBUTES +TRICENTROL +TRICIA +TRICK +TRICKED +TRICKERY +TRICKIER +TRICKIEST +TRICKING +TRICKLE +TRICKLED +TRICKLES +TRICKLING +TRICKS +TRICKY +TRICOLOR +TRICYCLE +TRIDENT +TRIED +TRIER +TRIES +TRIESTE +TRIFLE +TRIFLING +TRIGGER +TRIGGERED +TRIGGERING +TRIGGERMAN +TRIGGERS +TRILATERAL +TRILBY +TRILLIN +TRILLING +TRILLION +TRILLIONS +TRILOGY +TRILON +TRIM +TRIMBLE +TRIMEDYNE +TRIMESTER +TRIMMED +TRIMMER +TRIMMERS +TRIMMING +TRIMMINGS +TRIMS +TRINA +TRINCOMALEE +TRINIDAD +TRINITY +TRINKAUS +TRINKETS +TRINOVA +TRIO +TRIO'S +TRIOMPHE +TRIP +TRIPARTITE +TRIPE +TRIPLE +TRIPLECAST +TRIPLED +TRIPLES +TRIPLETS +TRIPLING +TRIPOD +TRIPOLI +TRIPP +TRIPPED +TRIPPING +TRIPS +TRISH +TRISHA +TRISTAN +TRISTAR +TRITE +TRITIUM +TRITON +TRITON'S +TRITT +TRIUMPH +TRIUMPHAL +TRIUMPHANT +TRIUMPHANTLY +TRIUMPHED +TRIUMPHS +TRIUMVIRATE +TRIVIA +TRIVIAL +TRIVIALIZE +TRIVIALIZED +TRIVIALIZES +TRIVIALIZING +TRIZEC +TROD +TROIKA +TROIS +TROJAN +TROJANS +TROLL +TROLLEY +TROLLEYS +TROLLING +TROLLOPE +TROLLS +TROMBONE +TROMBONIST +TRON +TROOP +TROOPED +TROOPER +TROOPERS +TROOPS +TROOPS' +TROPHIES +TROPHY +TROPIC +TROPICAL +TROPICANA +TROPICANA'S +TROPICS +TROST +TROT +TROTMAN +TROTS +TROTSKY +TROTT +TROTTED +TROTTER +TROTTING +TROUBLE +TROUBLED +TROUBLEMAKER +TROUBLEMAKERS +TROUBLES +TROUBLESHOOTER +TROUBLESOME +TROUBLING +TROUGH +TROUGHS +TROUILLOT +TROUNCED +TROUNCING +TROUPE +TROUPE'S +TROUPES +TROUSER +TROUSERS +TROUT +TROVE +TROWBRIDGE +TROWEL +TROY +TRU +TRUANCY +TRUANT +TRUCE +TRUCES +TRUCK +TRUCK'S +TRUCKED +TRUCKEE +TRUCKER +TRUCKERS +TRUCKING +TRUCKLOAD +TRUCKLOADS +TRUCKS +TRUCKS' +TRUD +TRUDEAU +TRUDEAU'S +TRUDGE +TRUDGED +TRUDGING +TRUDY +TRUE +TRUER +TRUESDALE +TRUEST +TRUFFLE +TRUFFLES +TRUISM +TRUITT +TRUJILLO +TRULY +TRUMAN +TRUMAN'S +TRUMBULL +TRUMKA +TRUMP +TRUMP'S +TRUMPED +TRUMPET +TRUMPETED +TRUMPETER +TRUMPETING +TRUMPETS +TRUMPS +TRUNCATED +TRUNCHEONS +TRUNK +TRUNKS +TRUONG +TRUPIN +TRUPP +TRUST +TRUST'S +TRUSTCO +TRUSTCO'S +TRUSTCORP +TRUSTED +TRUSTEE +TRUSTEE'S +TRUSTEES +TRUSTEES' +TRUSTEESHIP +TRUSTING +TRUSTS +TRUSTWORTHINESS +TRUSTWORTHY +TRUSTY +TRUTH +TRUTHFUL +TRUTHFULLY +TRUTHFULNESS +TRUTHS +TRUTT +TRY +TRYBUNA +TRYGG +TRYIN' +TRYING +TRYOUT +TRYOUTS +TRYPTOPHAN +TRYST +TSAI +TSANG +TSE +TSENG +TSHISEKEDI +TSONGAS +TSONGAS'S +TSUI +TSUJI +TSUNAMI +TSUTOMU +TSUTSUMI +TU +TUB +TUBA +TUBAL +TUBBS +TUBBY +TUBE +TUBERCULOSIS +TUBERS +TUBES +TUBING +TUBS +TUBULAR +TUCCI +TUCCILLO +TUCHMAN +TUCK +TUCKED +TUCKER +TUCKER'S +TUCKING +TUCKS +TUCSON +TUDJMAN +TUDJMAN'S +TUDOR +TUESDAY +TUESDAY'S +TUESDAYS +TUFO +TUFTS +TUG +TUGBOAT +TUGBOATS +TUGGED +TUGGING +TUGS +TUITION +TUITIONS +TULA +TULANE +TULARE +TULIP +TULIPS +TULKAREM +TULL +TULLE +TULLY +TULSA +TUMAZOS +TUMBLE +TUMBLED +TUMBLES +TUMBLEWEED +TUMBLING +TUMMY +TUMOR +TUMORS +TUMULT +TUMULTUOUS +TUN +TUNA +TUNDRA +TUNE +TUNED +TUNEFUL +TUNER +TUNES +TUNEUP +TUNG +TUNG'S +TUNGSRAM +TUNGSTEN +TUNIC +TUNICA +TUNICS +TUNING +TUNIS +TUNISIA +TUNISIAN +TUNNEL +TUNNELING +TUNNELS +TUNNERMANN +TUNNEY +TUOLUMNE +TUPAC +TUPELO +TUPOLEV +TUPPER +TUPPERWARE +TURABI +TURANDOT +TURBAN +TURBANS +TURBEN +TURBINE +TURBINES +TURBO +TURBOCHARGED +TURBOPROP +TURBOPROPS +TURBOT +TURBOTAX +TURBULENCE +TURBULENT +TURCO +TURF +TURGEON +TURGID +TURGUT +TURIN +TURK +TURKEY +TURKEY'S +TURKEYS +TURKIC +TURKISH +TURKMENIA +TURKMENISTAN +TURKS +TURLEY +TURMAN +TURMOIL +TURN +TURNABOUT +TURNAGE +TURNAROUND +TURNAROUNDS +TURNBERRY +TURNBULL +TURNCOAT +TURNCOATS +TURNED +TURNER +TURNER'S +TURNING +TURNIP +TURNIPS +TURNKEY +TURNOFF +TURNOUT +TURNOUTS +TURNOVER +TURNOVERS +TURNPIKE +TURNS +TURNSTILE +TURNSTILES +TURNTABLE +TUROW +TURQUOISE +TURRET +TURRETS +TURTLE +TURTLENECK +TURTLES +TURTURRO +TURVY +TUSCALOOSA +TUSCAN +TUSCANY +TUSCARORA +TUSCON +TUSH +TUSK +TUSKEGEE +TUSKS +TUSSAUD'S +TUSSLE +TUSTIN +TUT +TUTELAGE +TUTOR +TUTORED +TUTORIAL +TUTORING +TUTORS +TUTSI +TUTSIS +TUTTI +TUTTLE +TUTU +TUTU'S +TUTWILER +TUX +TUXEDO +TUXEDOS +TUZLA +TV +TWAIN +TWAIN'S +TWANG +TWARDY +TWARDZIK +TWAY +TWEAK +TWEAKED +TWEAKING +TWEED +TWEEDS +TWEEDY +TWEEZERS +TWELFTH +TWELVE +TWELVES +TWENTIES +TWENTIETH +TWENTY +TWENTY'S +TWENTYNINE +TWENTYSOMETHING +TWENTYSOMETHINGS +TWICE +TWIG +TWIGG +TWIGGS +TWIGGY +TWIGS +TWILIGHT +TWIN +TWINE +TWINGE +TWINING +TWINKIES +TWINKLE +TWINKLING +TWINS +TWINS' +TWINSBURG +TWIRL +TWIRLED +TWIRLING +TWIST +TWISTED +TWISTER +TWISTERS +TWISTING +TWISTS +TWITCH +TWITCHELL +TWITCHING +TWITTY +TWO +TWO'S +TWOFOLD +TWOMBLY +TWOMEY +TWOS +TWOSOME +TWYLA +TY +TYCO +TYCO'S +TYCOON +TYCOONS +TYING +TYLENOL +TYLER +TYLER'S +TYMINSKI +TYNAN +TYNDALL +TYNE +TYPE +TYPECAST +TYPED +TYPEFACE +TYPEFACES +TYPES +TYPEWRITER +TYPEWRITERS +TYPEWRITTEN +TYPHOID +TYPHOON +TYPHOONS +TYPICAL +TYPICALLY +TYPIFIED +TYPIFIES +TYPIFY +TYPING +TYPIST +TYPISTS +TYPOGRAPHICAL +TYRANNICAL +TYRANNOSAURUS +TYRANNY +TYRANT +TYRANTS +TYRE +TYRONE +TYRRELL +TYSON +TYSON'S +TYSONS +TYUMEN +TYUS +TZU +U. +U.'S +U.S +UBIQUITOUS +UCLAF +UCONN +UDALL +UDAY +UDBINA +UEBERROTH +UEBERROTH'S +UEDA +UELMAN +UELMEN +UGANDA +UGANDA'S +UGANDAN +UGH +UGLIER +UGLIEST +UGLINESS +UGLY +UH +UHL +UHM +UKIAH +UKRAINE +UKRAINE'S +UKRAINIAN +UKRAINIANS +UKRANIAN +UL +ULAN +ULCER +ULCERS +ULF +ULLMAN +ULLMANN +ULMER +ULRICH +ULSAN +ULSTER +ULTERIOR +ULTIMATE +ULTIMATELY +ULTIMATUM +ULTIMATUMS +ULTRA +ULTRACONSERVATIVE +ULTRALIGHT +ULTRAMAR +ULTRANATIONALIST +ULTRASONIC +ULTRASOUND +ULTRAVIOLET +ULU +ULYSSES +UM +UMA +UMASS +UMBERTO +UMBILICAL +UMBRAGE +UMBRELLA +UMBRELLAS +UMEMORI +UMM +UMPIRE +UMPIRES +UMPTEENTH +UN +UNA +UNABASHED +UNABASHEDLY +UNABATED +UNABLE +UNABOM +UNABOMBER +UNABOMBER'S +UNACCEPTABLE +UNACCEPTABLY +UNACCOMPANIED +UNACCOUNTABLE +UNACCOUNTED +UNACCUSTOMED +UNADDRESSED +UNADJUSTED +UNADORNED +UNADULTERATED +UNAFFECTED +UNAFFILIATED +UNAFFORDABLE +UNAFRAID +UNAIDED +UNALTERABLY +UNALTERED +UNAMBIGUOUS +UNAMBIGUOUSLY +UNANIMITY +UNANIMOUS +UNANIMOUSLY +UNANNOUNCED +UNANSWERABLE +UNANSWERED +UNANTICIPATED +UNAPOLOGETIC +UNAPPEALING +UNAPPETIZING +UNAPPRECIATED +UNAPPROVED +UNARMED +UNASSAILABLE +UNASSISTED +UNASSUMING +UNATTACHED +UNATTAINABLE +UNATTENDED +UNATTRACTIVE +UNATTRIBUTED +UNAUDITED +UNAUTHORIZED +UNAVAILABILITY +UNAVAILABLE +UNAVOIDABLE +UNAVOIDABLY +UNAWARE +UNBALANCED +UNBEARABLE +UNBEARABLY +UNBEATABLE +UNBEATEN +UNBECOMING +UNBEKNOWNST +UNBELIEVABLE +UNBELIEVABLY +UNBENDING +UNBIASED +UNBLEMISHED +UNBLINKING +UNBLOCK +UNBORN +UNBOWED +UNBREAKABLE +UNBRIDLED +UNBROKEN +UNBUNDLING +UNBURNED +UNCALLED +UNCANNILY +UNCANNY +UNCARING +UNCEASING +UNCENSORED +UNCEREMONIOUSLY +UNCERTAIN +UNCERTAINLY +UNCERTAINTIES +UNCERTAINTY +UNCHALLENGED +UNCHANGED +UNCHANGING +UNCHARACTERISTIC +UNCHARACTERISTICALLY +UNCHARTED +UNCHECKED +UNCIVIL +UNCIVILIZED +UNCLAIMED +UNCLASSIFIED +UNCLE +UNCLE'S +UNCLEAN +UNCLEAR +UNCLES +UNCLUTTERED +UNCOATED +UNCOLLECTABLE +UNCOLLECTED +UNCOLLECTIBLE +UNCOMFORTABLE +UNCOMFORTABLY +UNCOMMITTED +UNCOMMON +UNCOMMONLY +UNCOMPENSATED +UNCOMPETITIVE +UNCOMPLETED +UNCOMPLICATED +UNCOMPROMISING +UNCONCERNED +UNCONDITIONAL +UNCONDITIONALLY +UNCONFIRMED +UNCONNECTED +UNCONSCIONABLE +UNCONSCIOUS +UNCONSCIOUSLY +UNCONSCIOUSNESS +UNCONSOLIDATED +UNCONSTITUTIONAL +UNCONSTITUTIONALLY +UNCONTAMINATED +UNCONTESTED +UNCONTROLLABLE +UNCONTROLLABLY +UNCONTROLLED +UNCONVENTIONAL +UNCONVINCED +UNCONVINCING +UNCOOKED +UNCOOPERATIVE +UNCOORDINATED +UNCORKED +UNCORRECTED +UNCOUNTED +UNCOVER +UNCOVERED +UNCOVERING +UNCOVERS +UNCRITICAL +UNCURED +UNCUT +UND +UNDAMAGED +UNDATED +UNDAUNTED +UNDECIDED +UNDECIDEDS +UNDECLARED +UNDEFEATED +UNDEFINED +UNDELIVERED +UNDEMOCRATIC +UNDENIABLE +UNDENIABLY +UNDER +UNDERAGE +UNDERAPPRECIATED +UNDERBELLY +UNDERBID +UNDERBRUSH +UNDERCAPITALIZED +UNDERCLASS +UNDERCOOKED +UNDERCOUNT +UNDERCOUNTED +UNDERCOVER +UNDERCURRENT +UNDERCURRENTS +UNDERCUT +UNDERCUTS +UNDERCUTTING +UNDERDEVELOPED +UNDERDEVELOPMENT +UNDERDOG +UNDERDOGS +UNDEREMPLOYED +UNDEREMPLOYMENT +UNDERESTIMATE +UNDERESTIMATED +UNDERESTIMATES +UNDERESTIMATING +UNDERFINANCED +UNDERFOOT +UNDERFUNDED +UNDERFUNDING +UNDERGARMENTS +UNDERGO +UNDERGOES +UNDERGOING +UNDERGONE +UNDERGRADUATE +UNDERGRADUATES +UNDERGROUND +UNDERGROWTH +UNDERHANDED +UNDERHILL +UNDERINSURED +UNDERLIE +UNDERLIES +UNDERLINE +UNDERLINED +UNDERLINES +UNDERLINGS +UNDERLINING +UNDERLYING +UNDERMANNED +UNDERMINE +UNDERMINED +UNDERMINES +UNDERMINING +UNDERNEATH +UNDERNOURISHED +UNDERPAID +UNDERPANTS +UNDERPAYMENT +UNDERPERFORM +UNDERPERFORMANCE +UNDERPERFORMED +UNDERPERFORMING +UNDERPIN +UNDERPINNED +UNDERPINNING +UNDERPINNINGS +UNDERPOWERED +UNDERPRICED +UNDERPRIVILEGED +UNDERRATED +UNDERREPORTED +UNDERREPORTING +UNDERREPRESENTED +UNDERSCORE +UNDERSCORED +UNDERSCORES +UNDERSCORING +UNDERSEA +UNDERSECRETARY +UNDERSERVED +UNDERSHERIFF +UNDERSIDE +UNDERSIZED +UNDERSTAFFED +UNDERSTAND +UNDERSTANDABLE +UNDERSTANDABLY +UNDERSTANDING +UNDERSTANDINGS +UNDERSTANDS +UNDERSTATE +UNDERSTATED +UNDERSTATEMENT +UNDERSTATES +UNDERSTATING +UNDERSTOOD +UNDERSTUDY +UNDERTAKE +UNDERTAKEN +UNDERTAKER +UNDERTAKES +UNDERTAKING +UNDERTAKINGS +UNDERTONE +UNDERTONES +UNDERTOOK +UNDERTOW +UNDERUSED +UNDERUTILIZED +UNDERVALUED +UNDERWATER +UNDERWAY +UNDERWEAR +UNDERWEIGHT +UNDERWEIGHTED +UNDERWENT +UNDERWOOD +UNDERWORLD +UNDERWRITE +UNDERWRITER +UNDERWRITERS +UNDERWRITERS' +UNDERWRITES +UNDERWRITING +UNDERWRITINGS +UNDERWRITTEN +UNDERWROTE +UNDESERVED +UNDESERVING +UNDESIRABLE +UNDESIRABLES +UNDETECTABLE +UNDETECTED +UNDETERMINED +UNDETERRED +UNDEVELOPED +UNDIAGNOSED +UNDID +UNDIGNIFIED +UNDILUTED +UNDIMINISHED +UNDISCIPLINED +UNDISCLOSED +UNDISCOVERED +UNDISGUISED +UNDISPUTED +UNDISTINGUISHED +UNDISTURBED +UNDIVIDED +UNDO +UNDOCUMENTED +UNDOING +UNDONE +UNDOUBTEDLY +UNDRESS +UNDRESSED +UNDUE +UNDULATING +UNDULY +UNDYING +UNEARNED +UNEARTH +UNEARTHED +UNEARTHING +UNEASE +UNEASILY +UNEASINESS +UNEASY +UNECONOMIC +UNECONOMICAL +UNEDITED +UNEDUCATED +UNELECTED +UNEMOTIONAL +UNEMPLOYABLE +UNEMPLOYED +UNEMPLOYMENT +UNENCUMBERED +UNENDING +UNENFORCEABLE +UNENTHUSIASTIC +UNENVIABLE +UNEQUAL +UNEQUALED +UNEQUIVOCAL +UNEQUIVOCALLY +UNERRING +UNESCO +UNESCORTED +UNETHICAL +UNEVEN +UNEVENLY +UNEVENTFUL +UNEXCITING +UNEXPECTED +UNEXPECTEDLY +UNEXPIRED +UNEXPLAINABLE +UNEXPLAINED +UNEXPLODED +UNEXPLORED +UNFAILING +UNFAILINGLY +UNFAIR +UNFAIRLY +UNFAIRNESS +UNFAITHFUL +UNFAMILIAR +UNFAMILIARITY +UNFASHIONABLE +UNFATHOMABLE +UNFAVORABLE +UNFAVORABLY +UNFAZED +UNFEASIBLE +UNFETTERED +UNFILLED +UNFILTERED +UNFINISHED +UNFIT +UNFLAGGING +UNFLAPPABLE +UNFLATTERING +UNFLINCHING +UNFOCUSED +UNFOLD +UNFOLDED +UNFOLDING +UNFOLDS +UNFORCED +UNFORESEEN +UNFORGETTABLE +UNFORGIVABLE +UNFORGIVEN +UNFORGIVING +UNFORTUNATE +UNFORTUNATELY +UNFOUNDED +UNFREEZE +UNFRIENDLY +UNFULFILLED +UNFUNDED +UNFUNNY +UNFURL +UNFURLED +UNFURLING +UNG +UNGAINLY +UNGARO +UNGER +UNGERMANN +UNGLAMOROUS +UNGLUED +UNGO +UNGODLY +UNGOVERNABLE +UNGRATEFUL +UNGUARDED +UNH +UNHAPPILY +UNHAPPINESS +UNHAPPY +UNHARMED +UNHEALTHFUL +UNHEALTHY +UNHEARD +UNHEATED +UNHEEDED +UNHELPFUL +UNHERALDED +UNHINDERED +UNHINGED +UNHOLY +UNHURT +UNI +UNICAMERAL +UNICEF +UNICEF'S +UNICORN +UNICORP +UNIDENTIFIED +UNIFICATION +UNIFIED +UNIFORM +UNIFORMED +UNIFORMITY +UNIFORMLY +UNIFORMS +UNIFY +UNIFYING +UNIGESCO +UNIKOM +UNILAB +UNILATERAL +UNILATERALISM +UNILATERALLY +UNILEVER +UNILEVER'S +UNIMAGINABLE +UNIMAGINATIVE +UNIMPEDED +UNIMPORTANT +UNIMPRESSED +UNIMPRESSIVE +UNINCORPORATED +UNINDICTED +UNINFECTED +UNINFORMED +UNINHABITABLE +UNINHABITED +UNINHIBITED +UNINITIATED +UNINJURED +UNINSPIRED +UNINSPIRING +UNINSURED +UNINTELLIGIBLE +UNINTENDED +UNINTENTIONAL +UNINTENTIONALLY +UNINTERESTED +UNINTERESTING +UNINTERRUPTED +UNINVITED +UNINVOLVED +UNION +UNION'S +UNIONDALE +UNIONISM +UNIONIST +UNIONISTS +UNIONIZATION +UNIONIZE +UNIONIZED +UNIONS +UNIONS' +UNIQUE +UNIQUELY +UNIQUENESS +UNIROYAL +UNISEX +UNISON +UNISOURCE +UNISSUED +UNISYS +UNISYS' +UNISYS'S +UNIT +UNIT'S +UNITA +UNITA'S +UNITARIAN +UNITARY +UNITAS +UNITE +UNITED +UNITED'S +UNITEL +UNITES +UNITHOLDERS +UNITING +UNITRIN +UNITS +UNITS' +UNITY +UNIVA +UNIVERSAL +UNIVERSAL'S +UNIVERSALIST +UNIVERSALITY +UNIVERSALLY +UNIVERSE +UNIVERSITIES +UNIVERSITY +UNIVERSITY'S +UNIVISION +UNIX +UNJUST +UNJUSTIFIABLE +UNJUSTIFIABLY +UNJUSTIFIED +UNJUSTLY +UNKEMPT +UNKIND +UNKNOWABLE +UNKNOWING +UNKNOWINGLY +UNKNOWN +UNKNOWNS +UNLAWFUL +UNLAWFULLY +UNLEADED +UNLEASH +UNLEASHED +UNLEASHES +UNLEASHING +UNLESS +UNLICENSED +UNLIKE +UNLIKELY +UNLIMITED +UNLISTED +UNLOAD +UNLOADED +UNLOADING +UNLOCK +UNLOCKED +UNLOCKING +UNLOVED +UNLUCKY +UNMANAGEABLE +UNMANNED +UNMARKED +UNMARRIED +UNMASK +UNMASKED +UNMATCHED +UNMET +UNMISTAKABLE +UNMISTAKABLY +UNMITIGATED +UNMOVED +UNNAMED +UNNATURAL +UNNECESSARILY +UNNECESSARY +UNNEEDED +UNNERVE +UNNERVED +UNNERVING +UNNOTICED +UNO +UNO'S +UNOBSTRUCTED +UNOBTRUSIVE +UNOCAL +UNOCAL'S +UNOCCUPIED +UNOFFICIAL +UNOFFICIALLY +UNOPENED +UNOPPOSED +UNORGANIZED +UNORTHODOX +UNOSOM +UNPACKED +UNPAID +UNPALATABLE +UNPARALLELED +UNPATRIOTIC +UNPAVED +UNPERTURBED +UNPLANNED +UNPLEASANT +UNPLEASANTNESS +UNPLUG +UNPLUGGED +UNPOPULAR +UNPOPULARITY +UNPOPULATED +UNPRECEDENTED +UNPREDICTABILITY +UNPREDICTABLE +UNPREDICTABLY +UNPREPARED +UNPRETENTIOUS +UNPRINCIPLED +UNPRINTABLE +UNPROCESSED +UNPRODUCTIVE +UNPROFESSIONAL +UNPROFITABLE +UNPROFOR +UNPROMISING +UNPROTECTED +UNPROVED +UNPROVEN +UNPROVOKED +UNPUBLICIZED +UNPUBLISHED +UNPUNISHED +UNQUALIFIED +UNQUESTIONABLE +UNQUESTIONABLY +UNQUESTIONED +UNQUESTIONING +UNQUOTE +UNRATED +UNRATIFIED +UNRAVEL +UNRAVELED +UNRAVELING +UNRAVELS +UNREACHABLE +UNREADABLE +UNREAL +UNREALISTIC +UNREALISTICALLY +UNREALITY +UNREALIZED +UNREASONABLE +UNREASONABLY +UNRECOGNIZABLE +UNRECOGNIZED +UNRECONSTRUCTED +UNRECORDED +UNREGISTERED +UNREGULATED +UNREIMBURSED +UNREINFORCED +UNRELATED +UNRELEASED +UNRELENTING +UNRELIABILITY +UNRELIABLE +UNREMARKABLE +UNREMITTING +UNREPENTANT +UNREPORTED +UNREPRESENTATIVE +UNREQUITED +UNRESOLVED +UNRESPONSIVE +UNREST +UNRESTRAINED +UNRESTRICTED +UNRIVALED +UNRUFFLED +UNRUH +UNRULINESS +UNRULY +UNSAFE +UNSAID +UNSANCTIONED +UNSANITARY +UNSATISFACTORY +UNSATISFIED +UNSATISFYING +UNSATURATED +UNSAVORY +UNSCATHED +UNSCHEDULED +UNSCIENTIFIC +UNSCRAMBLE +UNSCRUPULOUS +UNSEAL +UNSEALED +UNSEASONABLE +UNSEASONABLY +UNSEAT +UNSEATED +UNSEATING +UNSECURED +UNSEEDED +UNSEEMLY +UNSEEN +UNSELFISH +UNSENTIMENTAL +UNSER +UNSETTLE +UNSETTLED +UNSETTLING +UNSHAKABLE +UNSHAKEABLE +UNSHAVEN +UNSIGHTLY +UNSIGNED +UNSKILLED +UNSMILING +UNSOELD +UNSOLD +UNSOLICITED +UNSOLVED +UNSOPHISTICATED +UNSOUND +UNSPEAKABLE +UNSPECIFIED +UNSPECTACULAR +UNSPENT +UNSPOILED +UNSPOKEN +UNSPORTSMANLIKE +UNSTABLE +UNSTATED +UNSTEADY +UNSTOPPABLE +UNSTRUCTURED +UNSUBSIDIZED +UNSUBSTANTIATED +UNSUCCESSFUL +UNSUCCESSFULLY +UNSUITABLE +UNSUITED +UNSUNG +UNSUPERVISED +UNSUPPORTED +UNSURE +UNSURPASSED +UNSURPRISING +UNSURPRISINGLY +UNSUSPECTING +UNSUSTAINABLE +UNSWERVING +UNSYMPATHETIC +UNTAC +UNTAINTED +UNTAMED +UNTANGLE +UNTAPPED +UNTAXED +UNTENABLE +UNTENDED +UNTERBERG +UNTERMEYER +UNTESTED +UNTHINKABLE +UNTIDY +UNTIE +UNTIED +UNTIL +UNTIMELY +UNTITLED +UNTO +UNTOLD +UNTOUCHABLE +UNTOUCHABLES +UNTOUCHED +UNTOWARD +UNTRAINED +UNTREATABLE +UNTREATED +UNTRIED +UNTROUBLED +UNTRUE +UNTRUSTWORTHY +UNTRUTHFUL +UNTRUTHS +UNTURNED +UNUM +UNUSABLE +UNUSED +UNUSUAL +UNUSUALLY +UNVARNISHED +UNVEIL +UNVEILED +UNVEILING +UNVEILS +UNWANTED +UNWARRANTED +UNWARY +UNWASHED +UNWAVERING +UNWED +UNWELCOME +UNWIELDY +UNWILLING +UNWILLINGLY +UNWILLINGNESS +UNWIND +UNWINDING +UNWINNABLE +UNWISE +UNWISELY +UNWITTING +UNWITTINGLY +UNWORKABLE +UNWORTHY +UNWOUND +UNWRAPPED +UNWRITTEN +UNYIELDING +UP +UP'S +UPBEAT +UPBRINGING +UPCOMING +UPDATE +UPDATED +UPDATES +UPDATING +UPDIKE +UPDIKE'S +UPENDED +UPFRONT +UPGRADE +UPGRADED +UPGRADES +UPGRADING +UPHAM +UPHEAVAL +UPHEAVALS +UPHELD +UPHILL +UPHOLD +UPHOLDING +UPHOLDS +UPHOLSTERED +UPHOLSTERY +UPJOHN +UPJOHN'S +UPKEEP +UPLAND +UPLIFT +UPLIFTED +UPLIFTING +UPMANSHIP +UPMARKET +UPON +UPPED +UPPER +UPPERMOST +UPPERS +UPPING +UPPITY +UPRIGHT +UPRISING +UPRISINGS +UPRIVER +UPROAR +UPROOT +UPROOTED +UPROOTING +UPS +UPSCALE +UPSET +UPSETS +UPSETTING +UPSHAW +UPSHOT +UPSIDE +UPSTAGE +UPSTAGED +UPSTAIRS +UPSTANDING +UPSTART +UPSTARTS +UPSTATE +UPSTREAM +UPSURGE +UPSWING +UPTAKE +UPTICK +UPTIGHT +UPTON +UPTOWN +UPTREND +UPTURN +UPTURNS +UPWARD +UPWARDLY +UPWARDS +URAL +URALS +URANIUM +URANUS +URBAN +URBANA +URBANE +URBANEK +URBANITES +URBANIZATION +URBANIZED +URBANSKI +URCHIN +URCHINS +URDU +UREA +URGE +URGED +URGENCY +URGENT +URGENTLY +URGES +URGING +URGINGS +URI +URIBE +URICH +URINAL +URINALYSIS +URINARY +URINATE +URINATING +URINATION +URINE +URN +URNS +UROLOGIST +UROLOGISTS +UROLOGY +URQUHART +URSULA +URSUS +URUGUAY +URUGUAY'S +URUGUAYAN +US +US' +USABLE +USAGE +USE +USED +USEFUL +USEFULLY +USEFULNESS +USELESS +USENET +USER +USER'S +USERS +USERS' +USERY +USES +USHER +USHERED +USHERING +USHERS +USINES +USING +USINOR +USRY +USSERY +USTED +USTINOV +USUAL +USUALLY +USULUTAN +USURP +USURPED +USURPING +USURY +UTA +UTAH +UTAH'S +UTE +UTENSILS +UTERINE +UTERUS +UTICA +UTILICORP +UTILITARIAN +UTILITIES +UTILITIES' +UTILITY +UTILITY'S +UTILIZATION +UTILIZE +UTILIZED +UTILIZES +UTILIZING +UTLEY +UTMOST +UTOPIA +UTOPIAN +UTRECHT +UTSUMI +UTTAR +UTTER +UTTERANCE +UTTERANCES +UTTERED +UTTERING +UTTERLY +UTTERS +UVA +UWE +UZBEK +UZBEKISTAN +UZBEKS +UZI +UZIS +V. +V.'S +V.S +VA +VAAL +VACANCIES +VACANCY +VACANT +VACATE +VACATED +VACATING +VACATION +VACATIONED +VACATIONERS +VACATIONING +VACATIONS +VACAVILLE +VACCINATE +VACCINATED +VACCINATION +VACCINATIONS +VACCINE +VACCINES +VACCO +VACILLATED +VACILLATING +VACILLATION +VACLAV +VACUOUS +VACUUM +VACUUMING +VACUUMS +VADEHRA +VADER +VADIM +VAGABOND +VAGARIES +VAGELOS +VAGINA +VAGINAL +VAGRANT +VAGRANTS +VAGUE +VAGUELY +VAGUENESS +VAGUEST +VAIL +VAIN +VAINLY +VAL +VALDES +VALDEZ +VALDIVIESO +VALDOSTA +VALE +VALEDICTORIAN +VALEDICTORY +VALENCE +VALENCIA +VALENCIENNE +VALENS +VALENTE +VALENTI +VALENTIN +VALENTINA +VALENTINE +VALENTINE'S +VALENTINES +VALENTINO +VALENZUELA +VALEO +VALERI +VALERIE +VALERO +VALERY +VALET +VALHALLA +VALHI +VALIANT +VALIANTLY +VALID +VALIDATE +VALIDATED +VALIDATES +VALIDATING +VALIDATION +VALIDITY +VALIDLY +VALIUM +VALLADARES +VALLARTA +VALLCO +VALLE +VALLEJO +VALLEY +VALLEY'S +VALLEYS +VALLI +VALLONE +VALMEYER +VALMONT +VALOR +VALORES +VALPARAISO +VALU +VALUABLE +VALUABLES +VALUATION +VALUATIONS +VALUE +VALUED +VALUEPOINT +VALUES +VALUEVISION +VALUING +VALUJET +VALUJET'S +VALUKAS +VALVE +VALVES +VALVOLINE +VAMP +VAMPIRE +VAMPIRES +VAN +VAN'S +VANATTER +VANCE +VANCE'S +VANCOUVER +VANCOUVER'S +VANDAL +VANDALISM +VANDALIZED +VANDALIZING +VANDALS +VANDEN +VANDENBERG +VANDER +VANDERBILT +VANDERVEER +VANDROSS +VANE +VANESSA +VANGUARD +VANGUARD'S +VANIK +VANILLA +VANILLI +VANISH +VANISHED +VANISHES +VANISHING +VANITIES +VANITY +VANN +VANNA +VANNATTER +VANNATTER'S +VANOUS +VANQUISH +VANQUISHED +VANS +VANTAGE +VANUATU +VANUNU +VANYA +VAPID +VAPOR +VAPORIZE +VAPORIZED +VAPORS +VAPORWARE +VARDELL +VARENNIKOV +VARGAS +VARIABILITY +VARIABLE +VARIABLES +VARIAN +VARIANCE +VARIANCES +VARIANT +VARIANTS +VARIATION +VARIATIONS +VARIED +VARIES +VARIETAL +VARIETIES +VARIETY +VARIG +VARIOUS +VARIOUSLY +VARITY +VARMUS +VARNER +VARNEY +VARNISH +VARO +VARSITY +VARY +VARYING +VASCO +VASCONCELLOS +VASCULAR +VASE +VASECTOMIES +VASECTOMY +VASELINE +VASES +VASHEM +VASIL +VASILIEV +VASILY +VASKEVITCH +VASONA +VASOTEC +VASQUEZ +VASSAR +VASSILIOU +VAST +VASTLY +VASTNESS +VAT +VATICAN +VATICAN'S +VATS +VAUDEVILLE +VAUGHAN +VAUGHAN'S +VAUGHN +VAUGHN'S +VAUGHT +VAULT +VAULTED +VAULTING +VAULTS +VAUNTED +VAVUNIYA +VAX +VAZ +VAZQUEZ +VEAL +VEATCH +VEBA +VECCHIO +VECTOR +VECTRA +VEDDER +VEDRINE +VEE +VEEP +VEER +VEERED +VEERING +VEERS +VEGA +VEGAS +VEGETABLE +VEGETABLES +VEGETARIAN +VEGETARIANS +VEGETATION +VEGETATIVE +VEGGIE +VEGGIES +VEHEMENCE +VEHEMENT +VEHEMENTLY +VEHICLE +VEHICLE'S +VEHICLES +VEHICLES' +VEHICULAR +VEIL +VEILED +VEILS +VEIN +VEINS +VEIT +VELA +VELARDE +VELASCO +VELASQUEZ +VELAYATI +VELAZQUEZ +VELCRO +VELEZ +VELIKA +VELMA +VELOCITY +VELVEETA +VELVET +VELVETY +VENABLE +VENAL +VENCEREMOS +VENCOR +VENDA +VENDETTA +VENDING +VENDOME +VENDOR +VENDORS +VENDORS' +VENEER +VENERABLE +VENERATED +VENERATION +VENEREAL +VENETIAN +VENETIANS +VENEZIA +VENEZUELA +VENEZUELA'S +VENEZUELAN +VENEZUELANS +VENGEANCE +VENGEFUL +VENICE +VENICE'S +VENISON +VENISTE +VENKATARAMAN +VENOM +VENOMOUS +VENT +VENTED +VENTER +VENTILATED +VENTILATION +VENTILATOR +VENTING +VENTO +VENTRES +VENTRICLE +VENTRICULAR +VENTRILOQUIST +VENTRITEX +VENTS +VENTURA +VENTURE +VENTURE'S +VENTURED +VENTURES +VENTURI +VENTURING +VENUE +VENUES +VENUS +VENUS' +VER +VERA +VERACITY +VERACRUZ +VERANDA +VERB +VERBAL +VERBALLY +VERBATIM +VERBIAGE +VERBS +VERCAMMEN +VERDANT +VERDE +VERDES +VERDI +VERDI'S +VERDICT +VERDICTS +VERDUGO +VERE +VEREEN +VEREINSBANK +VEREX +VERGARA +VERGE +VERGES +VERGING +VERHOEVEN +VERIFIABLE +VERIFICATION +VERIFIED +VERIFIES +VERIFY +VERIFYING +VERIT +VERITABLE +VERITIES +VERITY +VERMEER +VERMILION +VERMIN +VERMONT +VERMONT'S +VERMONTERS +VERN +VERNA +VERNACULAR +VERNAL +VERNE +VERNER +VERNES +VERNITRON +VERNON +VERNON'S +VERO +VERONA +VERONICA +VERONIS +VERSA +VERSACE +VERSAILLES +VERSATILE +VERSATILITY +VERSE +VERSED +VERSES +VERSION +VERSIONS +VERSTER +VERSUS +VERTEBRA +VERTEBRAE +VERTEX +VERTICAL +VERTICALLY +VERTIGO +VERVE +VERY +VESCO +VESSEL +VESSEL'S +VESSELS +VESSEY +VEST +VESTAL +VESTAR +VESTED +VESTIGE +VESTIGES +VESTING +VESTRON +VESTS +VET +VETERAN +VETERAN'S +VETERANS +VETERANS' +VETERE +VETERINARIAN +VETERINARIANS +VETERINARY +VETO +VETOED +VETOES +VETOING +VETS +VETTED +VETTER +VETTING +VEVEY +VEXED +VEXING +VIA +VIABILITY +VIABLE +VIACOM +VIACOM'S +VIADUCT +VIAG +VIAGENE +VIAL +VIALS +VIANSON +VIATICAL +VIBE +VIBES +VIBRANCY +VIBRANT +VIBRATE +VIBRATING +VIBRATION +VIBRATIONS +VIBRATO +VIC +VICAR +VICARIO +VICARIOUS +VICARIOUSLY +VICE +VICENTE +VICEROY +VICES +VICHY +VICINITY +VICIOUS +VICIOUSLY +VICIOUSNESS +VICISSITUDES +VICK +VICKERS +VICKI +VICKIE +VICKS +VICKSBURG +VICKY +VICORP +VICTIM +VICTIM'S +VICTIMIZATION +VICTIMIZE +VICTIMIZED +VICTIMLESS +VICTIMS +VICTIMS' +VICTOIRE +VICTOR +VICTOR'S +VICTORIA +VICTORIA'S +VICTORIAN +VICTORIANS +VICTORIES +VICTORIOUS +VICTORS +VICTORY +VIDA +VIDAL +VIDALIA +VIDEO +VIDEO'S +VIDEOCASSETTE +VIDEOCASSETTES +VIDEOCONFERENCING +VIDEOPHONE +VIDEOS +VIDEOTAPE +VIDEOTAPED +VIDEOTAPES +VIDEOTAPING +VIDEOTEX +VIDEOTRON +VIDOR +VIDOVICH +VIE +VIED +VIEIRA +VIEJO +VIENNA +VIENNA'S +VIENNESE +VIENOT +VIENTIANE +VIERA +VIERTEL'S +VIET +VIETNAM +VIETNAM'S +VIETNAMESE +VIEW +VIEW'S +VIEWED +VIEWER +VIEWER'S +VIEWERS +VIEWERS' +VIEWERSHIP +VIEWING +VIEWPOINT +VIEWPOINTS +VIEWS +VIGIL +VIGILANCE +VIGILANT +VIGILANTE +VIGILANTES +VIGILANTISM +VIGILS +VIGNETTE +VIGNETTES +VIGNOLA +VIGOR +VIGOROUS +VIGOROUSLY +VIGUERIE +VIK +VIKING +VIKINGS +VIKINGS' +VIKTOR +VILA +VILE +VILIFICATION +VILIFIED +VILIFY +VILJOEN +VILLA +VILLA'S +VILLAGE +VILLAGE'S +VILLAGER +VILLAGERS +VILLAGES +VILLAIN +VILLAINOUS +VILLAINS +VILLALOBOS +VILLANOVA +VILLANUEVA +VILLAR +VILLARD +VILLARREAL +VILLAS +VILLE +VILLEGAS +VILLENEUVE +VILLIERS +VILNIUS +VIN +VINA +VINAIGRETTE +VINCE +VINCENNES +VINCENNES' +VINCENT +VINCENT'S +VINCENTE +VINCENZO +VINCI +VINCI'S +VINDICATE +VINDICATED +VINDICATES +VINDICATION +VINDICTIVE +VINDICTIVENESS +VINE +VINEGAR +VINEGARS +VINER +VINES +VINEYARD +VINEYARDS +VINICH +VINICIO +VINIK +VINING +VINNIE +VINNY +VINSON +VINTAGE +VINTAGES +VINTNERS +VINTON +VINYL +VIOLA +VIOLATE +VIOLATED +VIOLATES +VIOLATING +VIOLATION +VIOLATIONS +VIOLATOR +VIOLATORS +VIOLENCE +VIOLENT +VIOLENTLY +VIOLET +VIOLETA +VIOLETS +VIOLETTA +VIOLIN +VIOLINIST +VIOLINISTS +VIOLINS +VIOLIST +VIPER +VIPERS +VIRAL +VIRATEK +VIRAZOLE +VIRGIL +VIRGILIO +VIRGIN +VIRGIN'S +VIRGINA +VIRGINIA +VIRGINIA'S +VIRGINIAN +VIRGINIANS +VIRGINITY +VIRGINS +VIRILE +VIRILITY +VIROLOGIST +VIROLOGY +VIRTUAL +VIRTUALLY +VIRTUE +VIRTUES +VIRTUOSIC +VIRTUOSITY +VIRTUOSO +VIRTUOUS +VIRULENT +VIRUS +VIRUS'S +VIRUSES +VIS +VISA +VISA'S +VISAGE +VISALIA +VISAS +VISCERAL +VISCLOSKY +VISCOUNT +VISE +VISHAY +VISIBILITY +VISIBLE +VISIBLY +VISION +VISIONARIES +VISIONARY +VISIONS +VISIT +VISITATION +VISITED +VISITING +VISITOR +VISITOR'S +VISITORS +VISITORS' +VISITS +VISOKO +VISOR +VISORS +VISTA +VISTA'S +VISTAS +VISUAL +VISUALIZATION +VISUALIZE +VISUALIZING +VISUALLY +VISUALS +VITA +VITAE +VITAL +VITALE +VITALINK +VITALITY +VITALLY +VITALY +VITAMIN +VITAMINS +VITARINE +VITEK +VITEZ +VITO +VITRIOL +VITRIOLIC +VITRO +VITTORIO +VIV +VIVA +VIVACIOUS +VIVALDI +VIVAS +VIVIAN +VIVID +VIVIDLY +VIVIEN +VIXEN +VIYELLA +VIZCAYA +VLAD +VLADECK +VLADIMIR +VLADISLAV +VLADIVOSTOK +VLASI +VLASIC +VLASOV +VLOK +VO +VOCABULARY +VOCAL +VOCALIST +VOCALISTS +VOCALLY +VOCALS +VOCATION +VOCATIONAL +VOCIFEROUS +VOCIFEROUSLY +VODAFONE +VODKA +VOGEL +VOGELSTEIN +VOGT +VOGTLE +VOGUE +VOI +VOICE +VOICED +VOICEOVER +VOICES +VOICING +VOID +VOIDED +VOIDING +VOIDS +VOIGHT +VOIGT +VOILA +VOINOVICH +VOIR +VOJVODINA +VOLATILE +VOLATILITY +VOLBERDING +VOLCANIC +VOLCANO +VOLCANO'S +VOLCANOES +VOLCKER +VOLCKER'S +VOLGA +VOLGOGRAD +VOLITION +VOLK +VOLKER +VOLKMER +VOLKOGONOV +VOLKOV +VOLKSBANK +VOLKSWAGEN +VOLKSWAGEN'S +VOLLEY +VOLLEYBALL +VOLLEYS +VOLPE +VOLSKY +VOLT +VOLTAGE +VOLTAIRE +VOLTS +VOLUBLE +VOLUME +VOLUMES +VOLUMINOUS +VOLUNTARILY +VOLUNTARY +VOLUNTEER +VOLUNTEERED +VOLUNTEERING +VOLUNTEERISM +VOLUNTEERS +VOLUPTUOUS +VOLUSIA +VOLVO +VOLVO'S +VOLVOS +VOLZ +VOMIT +VOMITED +VOMITING +VON +VONNEGUT +VONS +VONTOBEL +VOODOO +VOORHEES +VORACIOUS +VORKUTA +VORONEZH +VORONTSOV +VOROTNIKOV +VORTEC +VORTEX +VOS +VOSS +VOTE +VOTED +VOTER +VOTER'S +VOTERS +VOTERS' +VOTES +VOTING +VOUCH +VOUCHED +VOUCHER +VOUCHERS +VOUGHT +VOW +VOWED +VOWEL +VOWELS +VOWING +VOWS +VOX +VOYAGE +VOYAGER +VOYAGER'S +VOYAGERS +VOYAGES +VOYEURISM +VOYEURISTIC +VRANITZKY +VRDOLYAK +VREELAND +VREMYA +VRIES +VROOM +VU +VUCANOVICH +VUITTON +VUKOVAR +VULCAN +VULGAR +VULGARITY +VULNERABILITIES +VULNERABILITY +VULNERABLE +VULTURE +VULTURES +VUONO +VYACHESLAV +VYING +VYTAUTAS +W. +W.'S +W.S +WA +WAAL +WABAN +WABASH +WACHNER +WACHOVIA +WACHS +WACHTEL +WACHTELL +WACHTLER +WACKENHUT +WACKER +WACKO +WACKY +WACO +WAD +WADA +WADDELL +WADDINGTON +WADE +WADE'S +WADED +WADI +WADING +WADKINS +WADS +WADSWORTH +WAFER +WAFERS +WAFFENSCHMIDT +WAFFLE +WAFFLED +WAFFLES +WAFFLING +WAFTED +WAFTING +WAFTS +WAG +WAGE +WAGED +WAGER +WAGERED +WAGERING +WAGERS +WAGES +WAGGING +WAGGONER +WAGING +WAGNER +WAGNER'S +WAGNERIAN +WAGON +WAGONEER +WAGONER +WAGONS +WAGS +WAH +WAHL +WAHLBERG +WAI +WAIF +WAIGEL +WAIHEE +WAIKIKI +WAIL +WAILED +WAILING +WAILS +WAINOCO +WAINWRIGHT +WAIST +WAISTBAND +WAISTED +WAISTLINE +WAISTS +WAIT +WAITE +WAITE'S +WAITED +WAITER +WAITERS +WAITING +WAITRESS +WAITRESSES +WAITS +WAIVE +WAIVED +WAIVER +WAIVERS +WAIVES +WAIVING +WAJDA +WAKE +WAKEFIELD +WAKES +WAKEUP +WAKIL +WAKING +WAKO +WAL +WALBRO +WALCOTT +WALD +WALDBAUM +WALDBAUM'S +WALDEGRAVE +WALDEMAR +WALDEN +WALDENBOOKS +WALDHEIM +WALDHEIM'S +WALDHOLTZ +WALDMAN +WALDO +WALDORF +WALDRON +WALDROP +WALEED +WALES +WALESA +WALESA'S +WALGREEN +WALGREN +WALI +WALID +WALK +WALKED +WALKEN +WALKER +WALKER'S +WALKERS +WALKIE +WALKIN' +WALKING +WALKMAN +WALKOUT +WALKOUTS +WALKS +WALKWAY +WALKWAYS +WALL +WALL'S +WALLA +WALLACE +WALLACE'S +WALLACH +WALLACH'S +WALLBOARD +WALLED +WALLENBERG +WALLER +WALLER'S +WALLERSTEIN +WALLET +WALLETS +WALLEYE +WALLINGFORD +WALLIS +WALLMAN +WALLOP +WALLOPED +WALLOW +WALLOWING +WALLPAPER +WALLS +WALLY +WALMART +WALNUT +WALNUTS +WALPOLE +WALRUS +WALSH +WALSH'S +WALT +WALTER +WALTER'S +WALTERS +WALTERS' +WALTHAM +WALTHER +WALTON +WALTON'S +WALTONS +WALTZ +WALTZES +WALTZING +WALWYN +WAN +WANAMAKER +WAND +WANDA +WANDER +WANDERED +WANDERER +WANDERING +WANDERINGS +WANDERS +WANE +WANED +WANES +WANG +WANG'S +WANGER +WANING +WANNA +WANNABE +WANNABES +WANNISKI +WANT +WANTED +WANTING +WANTON +WANTONLY +WANTS +WAPNER +WAPPINGERS +WAR +WAR'S +WARBLER +WARBURG +WARBURG'S +WARD +WARD'S +WARDELL +WARDEN +WARDENS +WARDING +WARDLEY +WARDROBE +WARDROBES +WARDS +WARDWELL +WARE +WAREHOUSE +WAREHOUSED +WAREHOUSES +WAREHOUSING +WARES +WARFARE +WARFIELD +WARHEAD +WARHEADS +WARHOL +WARHOL'S +WARILY +WARINESS +WARING +WARLIKE +WARLORD +WARLORDS +WARM +WARMED +WARMER +WARMEST +WARMING +WARMLY +WARMS +WARMTH +WARMUP +WARMUS +WARN +WARNACO +WARNED +WARNER +WARNER'S +WARNERS +WARNING +WARNINGS +WARNKE +WARNOCK +WARNS +WARP +WARPED +WARPLANE +WARPLANES +WARRANT +WARRANTED +WARRANTIES +WARRANTLESS +WARRANTS +WARRANTY +WARREN +WARREN'S +WARRICK +WARRING +WARRINGTON +WARRIOR +WARRIORS +WARRIORS' +WARROAD +WARS +WARS' +WARSAW +WARSAW'S +WARSHIP +WARSHIPS +WART +WARTHOG +WARTIME +WARTS +WARWICK +WARY +WAS +WASATCH +WASH +WASHBURN +WASHED +WASHER +WASHERS +WASHES +WASHING +WASHINGTON +WASHINGTON'S +WASHINGTONIAN +WASHINGTONIANS +WASHOE +WASHOUT +WASHROOM +WASHY +WASN'T +WASP +WASPS +WASSERMAN +WASSERSTEIN +WASSERSTEIN'S +WASTE +WASTE'S +WASTEBASKET +WASTED +WASTEFUL +WASTELAND +WASTES +WASTEWATER +WASTING +WAT +WATAN +WATANABE +WATCH +WATCHABLE +WATCHDOG +WATCHDOGS +WATCHED +WATCHER +WATCHERS +WATCHES +WATCHFUL +WATCHING +WATCHMAN +WATCHWORD +WATER +WATER'S +WATERBED +WATERBURY +WATERCOLOR +WATERCOLORS +WATERED +WATERFALL +WATERFALLS +WATERFORD +WATERFOWL +WATERFRONT +WATERGATE +WATERHOUSE +WATERHOUSE'S +WATERING +WATERLINE +WATERLOGGED +WATERLOO +WATERMAN +WATERMARK +WATERMELON +WATERMELONS +WATERPROOF +WATERS +WATERS' +WATERSHED +WATERSHEDS +WATERSTON +WATERTIGHT +WATERTOWN +WATERVILLE +WATERWAY +WATERWAYS +WATERWORKS +WATERWORLD +WATERY +WATKINS +WATKINS' +WATLEY +WATSON +WATSON'S +WATSONVILLE +WATT +WATTAGE +WATTENBERG +WATTERS +WATTLETON +WATTS +WAUGH +WAUKEGAN +WAUKESHA +WAUSAU +WAVE +WAVED +WAVELENGTH +WAVELENGTHS +WAVER +WAVERED +WAVERING +WAVERLY +WAVERS +WAVES +WAVING +WAVY +WAX +WAXAHACHIE +WAXED +WAXES +WAXING +WAXMAN +WAXMAN'S +WAXY +WAY +WAY'S +WAYANS +WAYLAND +WAYLON +WAYMAN +WAYNE +WAYNE'S +WAYS +WAYSIDE +WAYWARD +WAZIR +WAZIR'S +WE +WE'D +WE'LL +WE'RE +WE'VE +WEA +WEAK +WEAKEN +WEAKENED +WEAKENING +WEAKENS +WEAKER +WEAKEST +WEAKLAND +WEAKLING +WEAKLY +WEAKNESS +WEAKNESSES +WEALTH +WEALTHIER +WEALTHIEST +WEALTHY +WEAN +WEANED +WEANING +WEAPON +WEAPONRY +WEAPONS +WEAR +WEARABLE +WEARER +WEARERS +WEARILY +WEARINESS +WEARING +WEARS +WEARY +WEASEL +WEATHER +WEATHER'S +WEATHERED +WEATHERFORD +WEATHERING +WEATHERLY +WEATHERMAN +WEATHERMEN +WEATHERS +WEATHERSPOON +WEATHERSTONE +WEAVE +WEAVED +WEAVER +WEAVER'S +WEAVERS +WEAVES +WEAVING +WEB +WEBB +WEBB'S +WEBBER +WEBBER'S +WEBER +WEBER'S +WEBS +WEBSTER +WEBSTER'S +WECHSEL +WECHSLER +WECHT +WED +WEDBUSH +WEDD +WEDDED +WEDDING +WEDDINGS +WEDEL +WEDGE +WEDGED +WEDGES +WEDGWOOD +WEDLOCK +WEDNESDAY +WEDNESDAY'S +WEDNESDAYS +WEDOWEE +WEDTECH +WEDTECH'S +WEE +WEE'S +WEED +WEEDED +WEEDEN +WEEDING +WEEDON +WEEDS +WEEK +WEEK'S +WEEKDAY +WEEKDAYS +WEEKEND +WEEKEND'S +WEEKENDS +WEEKES +WEEKLIES +WEEKLONG +WEEKLY +WEEKLY'S +WEEKNIGHT +WEEKNIGHTS +WEEKS +WEEKS' +WEEP +WEEPING +WEEVIL +WEEVILS +WEFA +WEI +WEICKER +WEICKER'S +WEIDENBAUM +WEIDENFELD +WEIDMAN +WEIGEL +WEIGH +WEIGHED +WEIGHING +WEIGHS +WEIGHT +WEIGHTED +WEIGHTING +WEIGHTLESS +WEIGHTLESSNESS +WEIGHTLIFTING +WEIGHTS +WEIGHTY +WEIL +WEILER +WEILL +WEILL'S +WEIMAR +WEIN +WEINBACH +WEINBERG +WEINBERGER +WEINBERGER'S +WEINER +WEINER'S +WEINGARTEN +WEINGER +WEINGLASS +WEINROTH +WEINSTEIN +WEINSTEIN'S +WEINSTOCK +WEINTRAUB +WEIR +WEIR'S +WEIRD +WEIRDER +WEIRDEST +WEIRDLY +WEIRDNESS +WEIRTON +WEIS +WEISBERG +WEISBROD +WEISE +WEISER +WEISMAN +WEISS +WEISS'S +WEISSMAN +WEITZ +WEITZMAN +WEIZMAN +WEIZSAECKER +WELBILT +WELCH +WELCH'S +WELCOME +WELCOMED +WELCOMES +WELCOMING +WELD +WELD'S +WELDED +WELDER +WELDERS +WELDING +WELDON +WELDS +WELFARE +WELK +WELL +WELLBEING +WELLCOME +WELLCOME'S +WELLER +WELLES +WELLES' +WELLESLEY +WELLFLEET +WELLHEAD +WELLING +WELLINGTON +WELLINGTON'S +WELLMAN +WELLNESS +WELLPOINT +WELLS +WELLS' +WELLSPRING +WELLSTONE +WELNA +WELSH +WELT +WELTER +WELTERWEIGHT +WELTY +WEMBLEY +WEN +WENATCHEE +WENCESLAS +WENDEL +WENDELL +WENDT +WENDY +WENDY'S +WENGE +WENGER +WENNER +WENT +WENTE +WENTWORTH +WENTZVILLE +WENZEL +WEPT +WERE +WEREN'T +WEREWOLF +WERKE +WERKEMA +WERNER +WERTHEIM +WERTHEIMER +WERTZ +WES +WESBECKER +WESCOTT +WESLEY +WESLEYAN +WESRAY +WESSEL +WESSELS +WESSON +WEST +WEST'S +WESTAIR +WESTAMERICA +WESTAR +WESTBORO +WESTBOROUGH +WESTBOUND +WESTBROOK +WESTBURY +WESTCHESTER +WESTCOAST +WESTCOTT +WESTDEUTSCHE +WESTERBERG +WESTERLY +WESTERMAN +WESTERN +WESTERN'S +WESTERNER +WESTERNERS +WESTERNIZED +WESTERNMOST +WESTERNS +WESTFIELD +WESTGATE +WESTHEIMER +WESTIES +WESTIN +WESTINGHOUSE +WESTINGHOUSE'S +WESTLAKE +WESTLAND +WESTMARK +WESTMINSTER +WESTMONT +WESTMORELAND +WESTON +WESTOVER +WESTPAC +WESTPAC'S +WESTPHAL +WESTPHALIA +WESTPORT +WESTSIDE +WESTVACO +WESTWARD +WESTWOOD +WESUN +WET +WETHERBEE +WETLAND +WETLANDS +WETTER +WETTERAU +WETTERLING +WETTEST +WETTING +WETZEL +WETZLER +WEXLER +WEXNER +WEYERHAEUSER +WEYERHAEUSER'S +WEYMOUTH +WEYRICH +WHA +WHACK +WHACKED +WHACKING +WHACKS +WHALE +WHALE'S +WHALEN +WHALER +WHALERS +WHALES +WHALES' +WHALEY +WHALING +WHALLEY +WHAM +WHAMMY +WHAMPOA +WHARF +WHARF'S +WHARTON +WHARTON'S +WHAT +WHAT'D +WHAT'LL +WHAT'S +WHATEVER +WHATEVER'S +WHATLEY +WHATNOT +WHATSOEVER +WHEAT +WHEAT'S +WHEATIES +WHEATLEY +WHEATON +WHEEL +WHEELABRATOR +WHEELBARROW +WHEELBASE +WHEELCHAIR +WHEELCHAIRS +WHEELED +WHEELER +WHEELERS +WHEELING +WHEELOCK +WHEELS +WHEEZING +WHELAN +WHEN +WHEN'S +WHENCE +WHENEVER +WHERE +WHERE'D +WHERE'S +WHEREABOUTS +WHEREAS +WHEREBY +WHEREHOUSE +WHEREIN +WHEREUPON +WHEREVER +WHEREWITHAL +WHET +WHETHER +WHETTED +WHEW +WHEY +WHICH +WHICHEVER +WHIDBEY +WHIFF +WHILE +WHILST +WHIM +WHIMPER +WHIMPERING +WHIMS +WHIMSICAL +WHIMSY +WHINE +WHINERS +WHINES +WHINING +WHINNEY +WHINY +WHIP +WHIPLASH +WHIPPED +WHIPPING +WHIPPLE +WHIPS +WHIPSAWED +WHIRL +WHIRLED +WHIRLING +WHIRLPOOL +WHIRLPOOL'S +WHIRLWIND +WHIRRING +WHISK +WHISKED +WHISKER +WHISKERS +WHISKEY +WHISKING +WHISKY +WHISMAN +WHISPER +WHISPERED +WHISPERING +WHISPERS +WHISTLE +WHISTLEBLOWER +WHISTLEBLOWERS +WHISTLED +WHISTLER +WHISTLES +WHISTLING +WHIT +WHITACRE +WHITAKER +WHITBREAD +WHITCOMB +WHITE +WHITE'S +WHITEFISH +WHITEFLIES +WHITEFLY +WHITEHALL +WHITEHEAD +WHITEHOUSE +WHITEHURST +WHITEMAN +WHITEN +WHITENESS +WHITER +WHITES +WHITESIDE +WHITESTONE +WHITEWASH +WHITEWASHED +WHITEWATER +WHITEWATER'S +WHITEY +WHITFIELD +WHITING +WHITLEY +WHITLOCK +WHITLOW +WHITMAN +WHITMAN'S +WHITMIRE +WHITMORE +WHITNEY +WHITNEY'S +WHITTAKER +WHITTEMORE +WHITTEN +WHITTIER +WHITTINGTON +WHITTLE +WHITTLE'S +WHITTLED +WHITTLESEY +WHITTLING +WHITWAM +WHITWORTH +WHIZ +WHIZZED +WHIZZES +WHIZZING +WHO +WHO'D +WHO'LL +WHO'S +WHO'VE +WHOA +WHODUNIT +WHOEVER +WHOEVER'S +WHOLE +WHOLEHEARTED +WHOLEHEARTEDLY +WHOLESALE +WHOLESALER +WHOLESALERS +WHOLESALERS' +WHOLESALING +WHOLESOME +WHOLLY +WHOM +WHOMEVER +WHOOP +WHOOPED +WHOOPEE +WHOOPI +WHOOPING +WHOOPS +WHOOSH +WHOPPER +WHOPPING +WHORE +WHORES +WHOSE +WHY +WHY'D +WHYTE +WIAN +WICHITA +WICK +WICKED +WICKEDLY +WICKER +WICKERSHAM +WICKES +WICKES'S +WICKHAM +WICKMAN +WICKS +WIDE +WIDEBODY +WIDELY +WIDEN +WIDENED +WIDENER +WIDENING +WIDENS +WIDER +WIDESPREAD +WIDEST +WIDGET +WIDGETS +WIDOW +WIDOW'S +WIDOWED +WIDOWER +WIDOWS +WIDTH +WIEDEN +WIELAND +WIELD +WIELDED +WIELDING +WIELDS +WIEN +WIENER +WIESBADEN +WIESE +WIESEL +WIESENTHAL +WIESNER +WIEST +WIFE +WIFE'S +WIG +WIGAND +WIGGINS +WIGGLE +WIGGLING +WIGHT +WIGS +WIGTON +WIJERATNE +WIL +WILANDER +WILBER +WILBERT +WILBUR +WILBURN +WILBURYS +WILCOX +WILCZYNSKI +WILD +WILDCAT +WILDCATS +WILDE +WILDE'S +WILDER +WILDER'S +WILDERNESS +WILDEST +WILDFIRE +WILDFIRES +WILDFLOWER +WILDFLOWERS +WILDING +WILDLIFE +WILDLY +WILDMAN +WILDMON +WILDNESS +WILDS +WILDWOOD +WILE +WILENSKY +WILENTZ +WILES +WILEY +WILFORD +WILFRED +WILFREDO +WILFRIED +WILHELM +WILK +WILKE +WILKENS +WILKERSON +WILKES +WILKEY +WILKIE +WILKINS +WILKINSON +WILKINSON'S +WILKIS +WILKS +WILL +WILL'S +WILLA +WILLAMETTE +WILLARD +WILLCOX +WILLED +WILLEM +WILLENS +WILLES +WILLETT +WILLEY +WILLFUL +WILLFULLY +WILLI +WILLIAM +WILLIAM'S +WILLIAMS +WILLIAMS' +WILLIAMS'S +WILLIAMSBURG +WILLIAMSES +WILLIAMSON +WILLIAMSON'S +WILLIAMSPORT +WILLIAMSTOWN +WILLIE +WILLIE'S +WILLING +WILLINGHAM +WILLINGLY +WILLINGNESS +WILLIS +WILLIS' +WILLISTON +WILLKE +WILLKIE +WILLMAN +WILLMOTT +WILLNER +WILLOUGHBY +WILLOW +WILLOWBROOK +WILLOWS +WILLPOWER +WILLS +WILLSON +WILLY +WILMA +WILMER +WILMETTE +WILMINGTON +WILMOT +WILNER +WILSHIRE +WILSON +WILSON'S +WILT +WILTED +WILTEL +WILTING +WILTON +WILTSHIRE +WILY +WIM +WIMBLEDON +WIMP +WIMPS +WIMPY +WIN +WIN'S +WINANS +WINCE +WINCED +WINCH +WINCHELL +WINCHELL'S +WINCHESTER +WIND +WINDBREAKER +WINDED +WINDER +WINDFALL +WINDFALLS +WINDHAM +WINDHOEK +WINDING +WINDMERE +WINDMILL +WINDMILLS +WINDOM +WINDOW +WINDOWLESS +WINDOWS +WINDOWSILL +WINDS +WINDSHIELD +WINDSHIELDS +WINDSOR +WINDSTAR +WINDSURFING +WINDSWEPT +WINDUP +WINDWARD +WINDY +WINE +WINED +WINEMAKER +WINEMAKERS +WINEMAKING +WINER +WINERIES +WINERY +WINERY'S +WINES +WINFIELD +WINFREY +WINFREY'S +WING +WING'S +WINGATE +WINGED +WINGER +WINGERS +WINGFIELD +WINGING +WINGS +WINGSPAN +WINING +WINK +WINKED +WINKING +WINKLE +WINKLER +WINKS +WINLESS +WINN +WINNABLE +WINNEBAGO +WINNER +WINNER'S +WINNERS +WINNERS' +WINNETKA +WINNIE +WINNING +WINNINGEST +WINNINGS +WINNIPEG +WINNOWING +WINONA +WINS +WINSLOW +WINSOME +WINSTON +WINSTON'S +WINTER +WINTER'S +WINTERING +WINTERS +WINTERTHUR +WINTERTIME +WINTHROP +WINTON +WINTRY +WINWOOD +WIPE +WIPED +WIPER +WIPERS +WIPES +WIPING +WIRE +WIRED +WIRELESS +WIRES +WIRETAP +WIRETAPPED +WIRETAPPING +WIRETAPS +WIRING +WIRTH +WIRTHLIN +WIRY +WIS +WISCHER +WISCONSIN +WISCONSIN'S +WISDOM +WISE +WISE'S +WISECRACKING +WISECRACKS +WISEGUY +WISELY +WISEMAN +WISER +WISEST +WISH +WISHBONE +WISHED +WISHERS +WISHES +WISHFUL +WISHING +WISHY +WISNER +WISNIEWSKI +WISP +WISPY +WISTFUL +WISTFULLY +WIT +WITCH +WITCH'S +WITCHCRAFT +WITCHES +WITCHING +WITCO +WITH +WITHDRAW +WITHDRAWAL +WITHDRAWALS +WITHDRAWING +WITHDRAWN +WITHDRAWS +WITHDREW +WITHER +WITHERED +WITHERING +WITHERS +WITHERSPOON +WITHHELD +WITHHOLD +WITHHOLDING +WITHHOLDS +WITHIN +WITHOUT +WITHSTAND +WITHSTANDING +WITHSTOOD +WITKIN +WITLESS +WITNESS +WITNESS' +WITNESS'S +WITNESSED +WITNESSES +WITNESSES' +WITNESSING +WITS +WITT +WITTBRODT +WITTE +WITTED +WITTEN +WITTER +WITTER'S +WITTY +WITWATERSRAND +WIVES +WIVES' +WIWA +WIXOM +WIZARD +WIZARDRY +WIZARDS +WLADYSLAW +WOBBLE +WOBBLING +WOBBLY +WOBEGON +WOBURN +WOE +WOEFUL +WOEFULLY +WOERNER +WOES +WOEWIYU +WOFFORD +WOFFORD'S +WOHL +WOHLSTETTER +WOJCIECH +WOK +WOKE +WOKEN +WOLA +WOLCOTT +WOLD +WOLF +WOLF'S +WOLFE +WOLFE'S +WOLFENSOHN +WOLFF +WOLFGANG +WOLFMAN +WOLFOWITZ +WOLFSBURG +WOLFSON +WOLLO +WOLOHAN +WOLPE +WOLPER +WOLTERS +WOLVERINE +WOLVERINES +WOLVES +WOMACK +WOMAN +WOMAN'S +WOMANHOOD +WOMANIZER +WOMANIZING +WOMB +WOMEN +WOMEN'S +WOMENS +WOMENS' +WOMETCO +WON +WON'T +WONDER +WONDER'S +WONDERBRA +WONDERED +WONDERFUL +WONDERFULLY +WONDERING +WONDERLAND +WONDERMENT +WONDERS +WONDROUS +WONG +WONK +WONKS +WONT +WOO +WOO'S +WOOD +WOOD'S +WOODALL +WOODARD +WOODBRIDGE +WOODBURY +WOODCLIFF +WOODCOCK +WOODED +WOODEN +WOODHOUSE +WOODHULL +WOODLAND +WOODLANDS +WOODPECKER +WOODPECKERS +WOODROW +WOODRUFF +WOODS +WOODS' +WOODSHED +WOODSIDE +WOODSON +WOODSTOCK +WOODSY +WOODWARD +WOODWARD'S +WOODWORK +WOODWORKERS +WOODWORKING +WOODWORTH +WOODY +WOOED +WOOF +WOOING +WOOL +WOOLARD +WOOLEN +WOOLF +WOOLLEY +WOOLLY +WOOLSEY +WOOLSEY'S +WOOLWORTH +WOOLWORTH'S +WOOSNAM +WOOSTER +WOOTEN +WOOTTON +WOP +WORCESTER +WORD +WORDED +WORDEN +WORDING +WORDPERFECT +WORDPLAY +WORDS +WORDSTAR +WORDSWORTH +WORE +WORK +WORK'S +WORKABLE +WORKADAY +WORKAHOLIC +WORKBENCH +WORKDAY +WORKDAYS +WORKED +WORKER +WORKER'S +WORKERS +WORKERS' +WORKFARE +WORKFORCE +WORKFORCES +WORKGROUP +WORKHORSE +WORKIN' +WORKING +WORKINGS +WORKLOAD +WORKLOADS +WORKMAN +WORKMAN'S +WORKMANLIKE +WORKMANSHIP +WORKMEN +WORKMEN'S +WORKOUT +WORKOUTS +WORKPLACE +WORKPLACES +WORKS +WORKSHEET +WORKSHEETS +WORKSHOP +WORKSHOPS +WORKSTATION +WORKSTATIONS +WORKWEEK +WORKWEEKS +WORLD +WORLD'S +WORLDLY +WORLDNEWS +WORLDS +WORLDWATCH +WORLDWIDE +WORLEY +WORM +WORMS +WORN +WORRELL +WORRIED +WORRIES +WORRISOME +WORRY +WORRYING +WORSE +WORSECK +WORSEN +WORSENED +WORSENING +WORSENS +WORSHIP +WORSHIPED +WORSHIPERS +WORSHIPING +WORSHIPPED +WORSHIPPERS +WORSHIPPING +WORSHIPS +WORST +WORTH +WORTH'S +WORTHAM +WORTHEN +WORTHEN'S +WORTHINESS +WORTHINGTON +WORTHLESS +WORTHWHILE +WORTHY +WOULD +WOULD'VE +WOULDN'T +WOUND +WOUNDED +WOUNDING +WOUNDS +WOVE +WOVEN +WOW +WOWED +WOZNIAK +WRACKED +WRACKING +WRANGELL +WRANGLE +WRANGLED +WRANGLER +WRANGLERS +WRANGLING +WRAP +WRAPAROUND +WRAPPED +WRAPPER +WRAPPERS +WRAPPING +WRAPPINGS +WRAPS +WRATH +WRATHER +WRAY +WREAK +WREAKED +WREAKING +WREATH +WREATHS +WRECK +WRECKAGE +WRECKED +WRECKING +WRECKS +WREN +WRENCH +WRENCHED +WRENCHES +WRENCHING +WRENN +WREST +WRESTED +WRESTING +WRESTLE +WRESTLED +WRESTLER +WRESTLERS +WRESTLES +WRESTLING +WRETCHED +WRIGGLE +WRIGHT +WRIGHT'S +WRIGHTS +WRIGHTSON +WRIGLEY +WRING +WRINGER +WRINGING +WRINKLE +WRINKLED +WRINKLES +WRINKLING +WRIST +WRISTON +WRISTS +WRISTWATCH +WRISTWATCHES +WRIT +WRITE +WRITEDOWN +WRITEDOWNS +WRITEOFF +WRITEOFFS +WRITER +WRITER'S +WRITERS +WRITERS' +WRITES +WRITHING +WRITING +WRITINGS +WRITS +WRITTEN +WROCLAW +WRONG +WRONGDOERS +WRONGDOING +WRONGDOINGS +WRONGED +WRONGFUL +WRONGFULLY +WRONGHEADED +WRONGLY +WRONGS +WROTE +WROUGHT +WRUNG +WRY +WRYLY +WU +WU'ER +WU'S +WUERTTEMBERG +WUHAN +WULFF +WUNDERKIND +WUNDERMAN +WUNSCH +WURTZEL +WUSSLER +WUTHERING +WYATT +WYBORCZA +WYCHE +WYCKOFF +WYDEN +WYETH +WYGOD +WYLE +WYLER +WYLIE +WYMAN +WYMER +WYNDHAM +WYNETTE +WYNGAARDEN +WYNIA +WYNN +WYNN'S +WYNNE +WYNONNA +WYNTON +WYOMING +WYOMING'S +WYSE +WYSER +WYSS +X. +X.'S +X.S +XANAX +XAVIER +XENON +XENOPHOBIA +XENOPHOBIC +XEROX +XEROX'S +XHOSA +XHOSAS +XIAMEN +XIAN +XIAO +XIAOPING +XIAOPING'S +XIDEX +XILINX +XIN +XINHUA +XINJIANG +XIONG +XOMA +XOMA'S +XTRA +XU +XUAN +Y'ALL +Y. +YA +YAACOV +YACHT +YACHTING +YACHTS +YACHTSMAN +YACKTMAN +YACOS +YACOUB +YAD +YAGER +YAHOO +YAHWEH +YAHYA +YAIR +YAK +YAKIMA +YAKOV +YAKOVLEV +YAKUNIN +YAKUTIA +YAKUZA +YALE +YALE'S +YALTA +YAM +YAMADA +YAMAGUCHI +YAMAHA +YAMAICHI +YAMAMOTO +YAMANE +YAMANI +YAMANOUCHI +YAMASHITA +YAMATO +YAMAUCHI +YAMAUCHI'S +YAMAZAKI +YAMS +YAN +YANAYEV +YANCEY +YANG +YANG'S +YANGTZE +YANK +YANKED +YANKEE +YANKEES +YANKEES' +YANKELOVICH +YANKING +YANKOVIC +YANKS +YANO +YANOMAMI +YAO +YAOBANG +YAOHAN +YAP +YAQUB +YAR +YARBOROUGH +YARBROUGH +YARD +YARD'S +YARDAGE +YARDENI +YARDER +YARDLEY +YARDS +YARDSTICK +YARDSTICKS +YARMOUTH +YARN +YARNS +YARON +YAROSLAVSKY +YASIN +YASIR +YASSER +YASSIN +YASSIR +YASUDA +YASUHIRO +YASUO +YASUSHI +YAT +YATAMA +YATES +YATRON +YAVLINSKY +YAWN +YAWNED +YAWNING +YAWNS +YAZOV +YDSTIE +YE +YEA +YEAGER +YEAH +YEAKEL +YEAR +YEAR'S +YEARAGO +YEARBOOK +YEARBOOKS +YEAREARLIER +YEAREND +YEARLING +YEARLONG +YEARLY +YEARN +YEARNED +YEARNING +YEARNINGS +YEARNS +YEARS +YEARS' +YEARWOOD +YEAS +YEAST +YEATS +YEDIOT +YEDIOTH +YEE +YEGOR +YEGOROV +YEH +YEHUDA +YELENA +YELL +YELLED +YELLEN +YELLING +YELLOW +YELLOWED +YELLOWING +YELLOWISH +YELLOWKNIFE +YELLOWS +YELLOWSTONE +YELLOWSTONE'S +YELLS +YELTSIN +YELTSIN'S +YEMEN +YEMEN'S +YEMENI +YEMENIDJIAN +YEMENIS +YEMMA +YEN +YEN'S +YEO +YEOMAN +YEP +YERBA +YEREVAN +YERGIN +YERIN +YERKES +YERXA +YES +YESHIVA +YESTERDAY +YESTERDAY'S +YESTERYEAR +YET +YETNIKOFF +YEUNG +YEUTTER +YEUTTER'S +YEVGENY +YEVTUSHENKO +YEW +YI +YIDDISH +YIELD +YIELDED +YIELDING +YIELDS +YIGAL +YILDIRIM +YILMAZ +YIN +YING +YINGLING +YIP +YIPPIE +YISRAEL +YITZHAK +YNEZ +YO +YOAKAM +YOCAM +YODER +YOGA +YOGI +YOGURT +YOHEI +YOKADO +YOKE +YOKICH +YOKO +YOKOHAMA +YOKOSUKA +YOKOYAMA +YOLANDA +YOLK +YOLKS +YOM +YOMIURI +YON +YONDER +YONG +YONGBYON +YONHAP +YONKERS +YONSEI +YOO +YOON +YORAM +YORBA +YORE +YORK +YORK'S +YORKER +YORKER'S +YORKERS +YORKSHIRE +YORKTOWN +YORUBA +YOSEF +YOSEMITE +YOSEMITE'S +YOSHI +YOSHIAKI +YOSHIDA +YOSHIHIRO +YOSHIHISA +YOSHINO +YOSHIO +YOSHIRO +YOSSI +YOST +YOU +YOU'D +YOU'LL +YOU'RE +YOU'VE +YOUNES +YOUNG +YOUNG'S +YOUNGBLOOD +YOUNGER +YOUNGEST +YOUNGMAN +YOUNGSTER +YOUNGSTER'S +YOUNGSTERS +YOUNGSTERS' +YOUNGSTOWN +YOUNIS +YOUNKERS +YOUNT +YOUR +YOURS +YOURSELF +YOURSELFERS +YOURSELVES +YOUSEF +YOUSEF'S +YOUSSEF +YOUTH +YOUTH'S +YOUTHFUL +YOUTHS +YOUTHS' +YOWERI +YPSILANTI +YSIDRO +YU +YUAN +YUBA +YUCATAN +YUCCA +YUCK +YUEN +YUGO +YUGOSLAV +YUGOSLAVIA +YUGOSLAVIA'S +YUGOSLAVIAN +YUGOSLAVS +YUK +YUKIO +YUKON +YUL +YULE +YULETIDE +YULI +YUM +YUMA +YUMMY +YUN +YUNG +YUNIS +YUNNAN +YUP +YUPPIE +YUPPIES +YURI +YURT +YUSEF +YUSUF +YUSUPOV +YUTAKA +YUVAL +YVES +YVETTE +YVONNE +YZAGA +YZAGUIRRE +Z. +ZACCARO +ZACH +ZACHARY +ZACK +ZACKS +ZADORA +ZAG +ZAGAT +ZAGORSKI +ZAGREB +ZAHIR +ZAHN +ZAID +ZAIKOV +ZAIN +ZAIRE +ZAIRE'S +ZAIREAN +ZAIREANS +ZAIRIAN +ZAK +ZAKHO +ZAKI +ZALE +ZALE'S +ZALESKI +ZALMAN +ZAMBIA +ZAMBIA'S +ZAMBIAN +ZAMBOANGA +ZAMORA +ZANDER +ZANDI +ZANE +ZANER +ZANGER +ZANKER +ZANTAC +ZANUCK +ZANY +ZANZIBAR +ZAP +ZAPATA +ZAPATA'S +ZAPATISTA +ZAPATISTAS +ZAPPA +ZAPPED +ZAPPING +ZARAGOZA +ZARB +ZARDARI +ZARETT +ZARRELLA +ZARROLI +ZASLAVSKAYA +ZATZ +ZAVALA +ZAYED +ZAYRE +ZAYRE'S +ZBIGNIEW +ZEAL +ZEALAND +ZEALAND'S +ZEALANDER +ZEALANDERS +ZEALOT +ZEALOTRY +ZEALOTS +ZEALOUS +ZEALOUSLY +ZEBRA +ZEBRAS +ZECH +ZECKENDORF +ZEDER +ZEDILLO +ZEDILLO'S +ZEDONG +ZEE +ZEEBRUGGE +ZEELAND +ZEEV +ZEFFIRELLI +ZEHNDER +ZEID +ZEIEN +ZEIGER +ZEISS +ZEIT +ZEITGEIST +ZEITUNG +ZEKE +ZELDA +ZELIFF +ZELL +ZELLER +ZELLERBACH +ZELNICK +ZEMECKIS +ZEMIN +ZEN +ZENECA +ZENICA +ZENITH +ZENITH'S +ZEOS +ZEPA +ZEPHYR +ZEPPELIN +ZERO +ZEROED +ZEROES +ZEROING +ZEROS +ZEROUAL +ZEST +ZETA +ZEUS +ZEV +ZHANG +ZHAO +ZHAO'S +ZHEJIANG +ZHELEV +ZHELYU +ZHENG +ZHIRINOVSKY +ZHIRINOVSKY'S +ZHIVAGO +ZHIVKOV +ZHIVKOV'S +ZHOU +ZHU +ZHUHAI +ZIA +ZIA'S +ZIAD +ZIDEK +ZIEGFELD +ZIEGLER +ZIELINSKI +ZIEMAN +ZIFF +ZIG +ZIGGY +ZIGZAG +ZIGZAGGED +ZIGZAGGING +ZIGZAGS +ZIL +ZILCH +ZILE +ZILLION +ZILLIONS +ZILOG +ZIMA +ZIMBABWE +ZIMBABWE'S +ZIMBABWEAN +ZIMBABWEANS +ZIMBALIST +ZIMMER +ZIMMERMAN +ZIMMERMANN +ZINA +ZINC +ZINDER +ZINE +ZINFANDEL +ZING +ZINGER +ZINN +ZINSER +ZION +ZIONISM +ZIONIST +ZIONISTS +ZIP +ZIPPED +ZIPPER +ZIPPERS +ZIPPING +ZIPPY +ZIPS +ZIRCONIUM +ZITA +ZITO +ZIYANG +ZLOMSOWITCH +ZLOTY +ZLOTYS +ZOBEL +ZOCALO +ZOCOR +ZODIAC +ZOE +ZOELLER +ZOELLICK +ZOETE +ZOFRAN +ZOGBY +ZOHAR +ZOLA +ZOLL +ZOLOFT +ZOLTAN +ZOMBIE +ZOMBIES +ZONA +ZONDERVAN +ZONE +ZONE'S +ZONED +ZONES +ZONING +ZOO +ZOO'S +ZOOLOGICAL +ZOOLOGIST +ZOOLOGY +ZOOM +ZOOMED +ZOOMING +ZOOMS +ZOOS +ZORA +ZORAN +ZORKIN +ZORN +ZORRILLA +ZORRO +ZOVIRAX +ZSA +ZSCHAU +ZUBIN +ZUCCHINI +ZUCKER +ZUCKERMAN +ZULFIKAR +ZULU +ZULUS +ZUMWALT +ZUNI +ZUNIGA +ZUNO +ZURICH +ZURICH'S +ZURN +ZUSEL +ZVEREVA +ZVEZDA +ZVI +ZVIAD +ZVORNIK +ZWEIBEL +ZWEIG +ZWERDLING +ZWETCHKENBAUM +ZWICK +ZYDECO +ZYMAN +ZYUGANOV +ZZZZ diff --git a/samples/LMTutorial/extras/LCond.pl b/samples/LMTutorial/extras/LCond.pl new file mode 100755 index 0000000..6f315ed --- /dev/null +++ b/samples/LMTutorial/extras/LCond.pl @@ -0,0 +1,76 @@ +#!/usr/bin/perl -w +# You may need to change the path on the above line + +# Under Windows run it like this: +# perl LCond.pl in_file > out_file +# (you will need to have installed a Perl interpreter, such as the +# one you can freely download from http://www.activestate.com/) + +# Simple text conditioning script +# DO NOT USE THIS SCRIPT IN AN EVALUATION SYSTEM! +# It makes lots of obvious mistakes and is included for +# example purposes only. It doesn't know that $12 should +# be written as 12 DOLLARS or TWELVE DOLLARS, not just 12, +# or that "Dr. Paul" is not " DR PAUL " + +# What it DOES do is convert lowercase to uppercase and surround +# sentences with and start/end tags. It tries to be +# vaguely intelligent with puncuation, so "This is 'okay,' I test-case our's!" +# becomes " THIS IS OKAY I TEST-CASE OUR'S " + +# Copyright (c) Gareth Moore 2002 + +use strict; + +my($line)=""; # current input line +my($cond)=""; # conditioned line +my($punc)=1; # punctuation found? +my($inc)=0; # blank line count + +while (<>) +{ + tr/a-z/A-Z/; # Convert to uppercase + s/%%NS%%//; # Make sure no tag strings present + + s/--/ -- /g; ## This line is to improve the tutorial example (Tom Brown's Schooldays) + + $line = $_; + + + ## Remove this next bit to not count multiple blank lines as sentence end + if (!($line =~ /[\d\w]/)) { + $inc++; # Count blank lines + if (($inc>1) && ($cond ne "")) + { + print "$cond \n"; + $cond = ""; + $inc = 0; + } + } + ## Remove up to here + + # Loop whilst we still have alphanumeric characters left on line + while ($line =~ /[\d\w]/) { + + $line =~ s/^[\s-]+//; # Strip leading whitespace + + # Whilst there are any alphanumeric characters left + # and whilst the string doesn't start with terminating punctation + while (!($line =~ s/(^[^\d\w,"'<>\[\]\(\)\+\*\-]+)/%%NS%%/) && $line =~ /[\d\w]/) { + $line =~ s/^[,"'<>\[\]\(\)\+\*\-]+//; + $line =~ s/([\d\w'][\d\w'-]*)//; # Find next alphanumeric string + $cond = "$cond $1"; + $line =~ s/^[\s-]+//; + } + + if ($line =~ s/^%%NS%%// && $cond ne "") { + print "$cond \n"; # Write out sentence + $cond = ""; + } + } +} +if ($cond ne "") { + print "$cond \n"; +} + +# Done diff --git a/samples/LMTutorial/extras/TagTextWithClassMap.pl b/samples/LMTutorial/extras/TagTextWithClassMap.pl new file mode 100755 index 0000000..04649c6 --- /dev/null +++ b/samples/LMTutorial/extras/TagTextWithClassMap.pl @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w + +# This script takes two parameters - a class map and a text file. +# It then applies the class map to the given text and sends the +# result to standard output. It expects an unknown word token of +# !!UNK in the class map but you could trivially modify this script +# to remove this requirement or to change the string used for this +# token. + +# Copyright (c) Gareth Moore 2002 + +use strict; +my ($curr_class); # current class +my (%class); # word -> class map +my ($space); # used to not put extra space on end of line +my ($word); # current word + +if ($#ARGV < 1) { + print "Require two parameters - class map and text file\n"; + die "Output is sent to standard out\n"; +} + +# Read class map +open(CMAP, $ARGV[0]); +$curr_class = 0; +while () { + if (/^(CLASS\d+)\s/) { + $curr_class = $1; + } + elsif (/\s(\S+)/) { + $class{$1} = $curr_class; + } +} +close(CMAP); + +if (!(defined($class{"!!UNK"}))) { + die "No unknown word token found in class map\n"; +} + +# Map text +open(TEXT, $ARGV[1]); +while () { + $space = ""; + while (s/(\S+)//) { + if (!(defined($class{$1}))) { + $word = "!!UNK"; + } + else { + $word = $1; + } + if ($space) { + print " ".$class{$word}; + } + else { + print $class{$word}; + $space = " "; + } + } + print "\n"; +} +close(TEXT); + +# Done + diff --git a/samples/LMTutorial/extras/getwordlist.pl b/samples/LMTutorial/extras/getwordlist.pl new file mode 100755 index 0000000..bcd2418 --- /dev/null +++ b/samples/LMTutorial/extras/getwordlist.pl @@ -0,0 +1,13 @@ +#!/usr/bin/perl + +# This little script will extract the full word list from any ARPA type language model + +# Pass language model as a parameter or on standard in; results are written to standard output + +# (c) Gareth Moore 2002 + +while (<>) +{ + if (/\\2-grams/) {exit;} + if (/^\-*\d+\.\d+\s+(\S+)\s/) {print $1."\n"}; +} diff --git a/samples/LMTutorial/extras/intersection.pl b/samples/LMTutorial/extras/intersection.pl new file mode 100755 index 0000000..e3821a2 --- /dev/null +++ b/samples/LMTutorial/extras/intersection.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl + +# Bonus script to print the intersection of two word lists to standard output + +# (c) Gareth Moore 2002 + +open(IN, "60k_wlist"); +while () +{ + $list{$_} = "1"; +} +close(IN); + +open(IN, "5k_unk.wlist"); +while () +{ + if ($list{$_} eq "1") {print;} +} +close(IN); diff --git a/samples/LMTutorial/test/red-headed_league.txt b/samples/LMTutorial/test/red-headed_league.txt new file mode 100755 index 0000000..369419b --- /dev/null +++ b/samples/LMTutorial/test/red-headed_league.txt @@ -0,0 +1,556 @@ + I HAD CALLED UPON MY FRIEND MR. SHERLOCK HOLMES ONE DAY IN THE AUTUMN OF LAST YEAR AND FOUND HIM IN DEEP CONVERSATION WITH A VERY STOUT FLORID FACED ELDERLY GENTLEMAN WITH FIERY RED HAIR + WITH AN APOLOGY FOR MY INTRUSION I WAS ABOUT TO WITHDRAW WHEN HOLMES PULLED ME ABRUPTLY INTO THE ROOM AND CLOSED THE DOOR BEHIND ME + QUOTE YOU COULD NOT POSSIBLY HAVE COME AT A BETTER TIME MY DEAR WATSON QUOTE HE SAID CORDIALLY + I WAS AFRAID THAT YOU WERE ENGAGED + SO I AM + VERY MUCH SO + THEN I CAN WAIT IN THE NEXT ROOM + NOT AT ALL + THIS GENTLEMAN MR. WILSON HAS BEEN MY PARTNER AND HELPER IN MANY OF MY MOST SUCCESSFUL CASES AND I HAVE NO DOUBT THAT HE WILL BE OF THE UTMOST USE TO ME IN YOURS ALSO QUOTE + THE STOUT GENTLEMAN HALF ROSE FROM HIS CHAIR AND GAVE A BOB OF GREETING WITH A QUICK LITTLE QUESTIONING GLANCE FROM HIS SMALL FAT ENCIRCLED EYES + TRY THE SETTEE SAID HOLMES RELAPSING INTO HIS ARMCHAIR AND PUTTING HIS FINGERTIPS TOGETHER AS WAS HIS CUSTOM WHEN IN JUDICIAL MOODS + I KNOW MY DEAR WATSON THAT YOU SHARE MY LOVE OF ALL THAT IS BIZARRE AND OUTSIDE THE CONVENTIONS AND HUMDRUM ROUTINE OF EVERYDAY LIFE + YOU HAVE SHOWN YOUR RELISH FOR IT BY THE ENTHUSIASM WHICH HAS PROMPTED YOU TO CHRONICLE AND IF YOU WILL EXCUSE MY SAYING SO SOMEWHAT TO EMBELLISH SO MANY OF MY OWN LITTLE ADVENTURES + YOUR CASES HAVE INDEED BEEN OF THE GREATEST INTEREST TO ME I OBSERVED + YOU WILL REMEMBER THAT I REMARKED THE OTHER DAY JUST BEFORE WE WENT INTO THE VERY SIMPLE PROBLEM PRESENTED BY MISS MARY SUTHERLAND THAT FOR STRANGE EFFECTS AND EXTRAORDINARY COMBINATIONS WE MUST GO TO LIFE ITSELF WHICH IS ALWAYS FAR MORE DARING THAN ANY EFFORT OF THE IMAGINATION + QUOTE A PROPOSITION WHICH I TOOK THE LIBERTY OF DOUBTING QUOTE + YOU DID DOCTOR BUT NONE THE LESS YOU MUST COME ROUND TO MY VIEW FOR OTHERWISE I SHALL KEEP ON PILING FACT UPON FACT ON YOU UNTIL YOUR REASON BREAKS DOWN UNDER THEM AND ACKNOWLEDGES ME TO BE RIGHT + NOW MR. JABEZ WILSON HERE HAS BEEN GOOD ENOUGH TO CALL UPON ME THIS MORNING AND TO BEGIN A NARRATIVE WHICH PROMISES TO BE ONE OF THE MOST SINGULAR WHICH I HAVE LISTENED TO FOR SOME TIME + YOU HAVE HEARD ME REMARK THAT THE STRANGEST AND MOST UNIQUE THINGS ARE VERY OFTEN CONNECTED NOT WITH THE LARGER BUT WITH THE SMALLER CRIMES AND OCCASIONALLY INDEED WHERE THERE IS ROOM FOR DOUBT WHETHER ANY POSITIVE CRIME HAS BEEN COMMITTED + AS FAR AS I HAVE HEARD IT IS IMPOSSIBLE FOR ME TO SAY WHETHER THE PRESENT CASE IS AN INSTANCE OF CRIME OR NOT BUT THE COURSE OF EVENTS IS CERTAINLY AMONG THE MOST SINGULAR THAT I HAVE EVER LISTENED TO + PERHAPS MR. WILSON YOU WOULD HAVE THE GREAT KINDNESS TO RECOMMENCE YOUR NARRATIVE + I ASK YOU NOT MERELY BECAUSE MY FRIEND DOCTOR WATSON HAS NOT HEARD THE OPENING PART BUT ALSO BECAUSE THE PECULIAR NATURE OF THE STORY MAKES ME ANXIOUS TO HAVE EVERY POSSIBLE DETAIL FROM YOUR LIPS + AS A RULE WHEN I HAVE HEARD SOME SLIGHT INDICATION OF THE COURSE OF EVENTS I AM ABLE TO GUIDE MYSELF BY THE THOUSANDS OF OTHER SIMILAR CASES WHICH OCCUR TO MY MEMORY + IN THE PRESENT INSTANCE I AM FORCED TO ADMIT THAT THE FACTS ARE TO THE BEST OF MY BELIEF UNIQUE + THE PORTLY CLIENT PUFFED OUT HIS CHEST WITH AN APPEARANCE OF SOME LITTLE PRIDE AND PULLED A DIRTY AND WRINKLED NEWSPAPER FROM THE INSIDE POCKET OF HIS GREATCOAT + AS HE GLANCED DOWN THE ADVERTISEMENT COLUMN WITH HIS HEAD THRUST FORWARD AND THE PAPER FLATTENED OUT UPON HIS KNEE I TOOK A GOOD LOOK AT THE MAN AND ENDEAVOURED AFTER THE FASHION OF MY COMPANION TO READ THE INDICATIONS WHICH MIGHT BE PRESENTED BY HIS DRESS OR APPEARANCE + I DID NOT GAIN VERY MUCH HOWEVER BY MY INSPECTION + OUR VISITOR BORE EVERY MARK OF BEING AN AVERAGE COMMONPLACE BRITISH TRADESMAN OBESE POMPOUS AND SLOW + HE WORE RATHER BAGGY GRAY SHEPHERD'S CHECK TROUSERS A NOT OVER CLEAN BLACK FROCKCOAT UNBUTTONED IN THE FRONT AND A DRAB WAISTCOAT WITH A HEAVY BRASSY ALBERT CHAIN AND A SQUARE PIERCED BIT OF METAL DANGLING DOWN AS AN ORNAMENT + A FRAYED TOP HAT AND A FADED BROWN OVERCOAT WITH A WRINKLED VELVET COLLAR LAY UPON A CHAIR BESIDE HIM + ALTOGETHER LOOK AS I WOULD THERE WAS NOTHING REMARKABLE ABOUT THE MAN SAVE HIS BLAZING RED HEAD AND THE EXPRESSION OF EXTREME CHAGRIN AND DISCONTENT UPON HIS FEATURES + SHERLOCK HOLMES'S QUICK EYE TOOK IN MY OCCUPATION AND HE SHOOK HIS HEAD WITH A SMILE AS HE NOTICED MY QUESTIONING GLANCES + BEYOND THE OBVIOUS FACTS THAT HE HAS AT SOME TIME DONE MANUAL LABOUR THAT HE TAKES SNUFF THAT HE IS A FREEMASON THAT HE HAS BEEN IN CHINA AND THAT HE HAS DONE A CONSIDERABLE AMOUNT OF WRITING LATELY I CAN DEDUCE NOTHING ELSE + MR. JABEZ WILSON STARTED UP IN HIS CHAIR WITH HIS FOREFINGER UPON THE PAPER BUT HIS EYES UPON MY COMPANION + HOW IN THE NAME OF GOOD FORTUNE DID YOU KNOW ALL THAT MR. HOLMES HE ASKED + HOW DID YOU KNOW FOR EXAMPLE THAT I DID MANUAL LABOUR + IT'S AS TRUE AS GOSPEL FOR I BEGAN AS A SHIP'S CARPENTER QUOTE + YOUR HANDS MY DEAR SIR + YOUR RIGHT HAND IS QUITE A SIZE LARGER THAN YOUR LEFT + YOU HAVE WORKED WITH IT AND THE MUSCLES ARE MORE DEVELOPED + WELL THE SNUFF THEN AND THE FREEMASONRY + I WON'T INSULT YOUR INTELLIGENCE BY TELLING YOU HOW I READ THAT ESPECIALLY AS RATHER AGAINST THE STRICT RULES OF YOUR ORDER YOU USE AN ARC AND COMPASS BREASTPIN + AH OF COURSE I FORGOT THAT + BUT THE WRITING QUOTE + WHAT ELSE CAN BE INDICATED BY THAT RIGHT CUFF SO VERY SHINY FOR FIVE INCHES AND THE LEFT ONE WITH THE SMOOTH PATCH NEAR THE ELBOW WHERE YOU REST IT UPON THE DESK + WELL BUT CHINA + THE FISH THAT YOU HAVE TATTOOED IMMEDIATELY ABOVE YOUR RIGHT WRIST COULD ONLY HAVE BEEN DONE IN CHINA + I HAVE MADE A SMALL STUDY OF TATTOO MARKS AND HAVE EVEN CONTRIBUTED TO THE LITERATURE OF THE SUBJECT + THAT TRICK OF STAINING THE FISHES' SCALES OF A DELICATE PINK IS QUITE PECULIAR TO CHINA + WHEN IN ADDITION I SEE A CHINESE COIN HANGING FROM YOUR WATCH CHAIN THE MATTER BECOMES EVEN MORE SIMPLE + MR. JABEZ WILSON LAUGHED HEAVILY + WELL I NEVER SAID HE + QUOTE I THOUGHT AT FIRST THAT YOU HAD DONE SOMETHING CLEVER BUT I SEE THAT THERE WAS NOTHING IN IT AFTER ALL QUOTE + I BEGIN TO THINK WATSON SAID HOLMES THAT I MAKE A MISTAKE IN EXPLAINING + OMNE IGNOTUM PRO MAGNIFICO YOU KNOW AND MY POOR LITTLE REPUTATION SUCH AS IT IS WILL SUFFER SHIPWRECK IF I AM SO CANDID + CAN YOU NOT FIND THE ADVERTISEMENT MR. WILSON + YES I HAVE GOT IT NOW HE ANSWERED WITH HIS THICK RED FINGER PLANTED HALFWAY DOWN THE COLUMN + HERE IT IS + THIS IS WHAT BEGAN IT ALL + YOU JUST READ IT FOR YOURSELF SIR + I TOOK THE PAPER FROM HIM AND READ AS FOLLOWS + TO THE RED HEADED LEAGUE ON ACCOUNT OF THE BEQUEST OF THE LATE EZEKIAH HOPKINS OF LEBANON PENNSYLVANIA U. S. A. THERE IS NOW ANOTHER VACANCY OPEN WHICH ENTITLES A MEMBER OF THE LEAGUE TO A SALARY OF FOUR POUNDS A WEEK FOR PURELY NOMINAL SERVICES + ALL RED HEADED MEN WHO ARE SOUND IN BODY AND MIND AND ABOVE THE AGE OF TWENTY ONE YEARS ARE ELIGIBLE + APPIY IN PERSON ON MONDAY AT ELEVEN O'CLOCK TO DUNCAN ROSS AT THE OFFICES OF THE LEAGUE SEVEN POPE'S COUN FLEET STREET + QUOTE WHAT ON EARTH DOES THIS MEAN QUOTE + I EJACULATED AFTER I HAD TWICE READ OVER THE EXTRAORDINARY ANNOUNCEMENT + HOLMES CHUCKLED AND WRIGGLED IN HIS CHAIR AS WAS HIS HABIT WHEN IN HIGH SPIRITS + IT IS A LITTLE OFF THE BEATEN TRACK ISN'T IT SAID HE + AND NOW MR. WILSON OFF YOU GO AT SCRATCH AND TELL US ALL ABOUT YOURSELF YOUR HOUSEHOLD AND THE EFFECT WHICH THIS ADVERTISEMENT HAD UPON YOUR FORTUNES + YOU WILL FIRST MAKE A NOTE DOCTOR OF THE PAPER AND THE DATE + IT IS THE MORNING CHRONICLE OF APRIL TWENTY SEVENTH ONE THOUSAND EIGHT HUNDRED NINETY + JUST TWO MONTHS AGO + QUOTE VERY GOOD + NOW MR. WILSON + WELL IT IS JUST AS I HAVE BEEN TELLING YOU MR. SHERLOCK HOLMES SAID JABEZ WILSON MOPPING HIS FOREHEAD I HAVE A SMALL PAWNBROKER'S BUSINESS AT COBURG SQUARE NEAR THE CITY + IT'S NOT A VERY LARGE AFFAIR AND OF LATE YEARS IT HAS NOT DONE MORE THAN JUST GIVE ME A LIVING + I USED TO BE ABLE TO KEEP TWO ASSISTANTS BUT NOW I ONLY KEEP ONE AND I WOULD HAVE A JOB TO PAY HIM BUT THAT HE IS WILLING TO COME FOR HALF WAGES SO AS TO LEARN THE BUSINESS + WHAT IS THE NAME OF THIS OBLIGING YOUTH ASKED SHERLOCK HOLMES + HIS NAME IS VINCENT SPAULDING AND HE'S NOT SUCH A YOUTH EITHER + IT'S HARD TO SAY HIS AGE + I SHOULD NOT WISH A SMARTER ASSISTANT MR. HOLMES AND I KNOW VERY WELL THAT HE COULD BETTER HIMSELF AND EARN TWICE WHAT I AM ABLE TO GIVE HIM + BUT AFTER ALL IF HE IS SATISFIED WHY SHOULD I PUT IDEAS IN HIS HEAD QUOTE + WHY INDEED + YOU SEEM MOST FORTUNATE IN HAVING AN EMPLOYEE WHO COMES UNDER THE FULL MARKET PRICE + IT IS NOT A COMMON EXPERIENCE AMONG EMPLOYERS IN THIS AGE + I DON'T KNOW THAT YOUR ASSISTANT IS NOT AS REMARKABLE AS YOUR ADVERTISEMENT + OH HE HAS HIS FAULTS TOO SAID MR. WILSON + NEVER WAS SUCH A FELLOW FOR PHOTOGRAPHY + SNAPPING AWAY WITH A CAMERA WHEN HE OUGHT TO BE IMPROVING HIS MIND AND THEN DIVING DOWN INTO THE CELLAR LIKE A RABBIT INTO ITS HOLE TO DEVELOP HIS PICTURES + THAT IS HIS MAIN FAULT BUT ON THE WHOLE HE'S A GOOD WORKER + THERE'S NO VICE IN HIM + QUOTE HE IS STILL WITH YOU I PRESUME QUOTE + YES SIR + HE AND A GIRL OF FOURTEEN WHO DOES A BIT OF SIMPLE COOKING AND KEEPS THE PLACE CLEAN THAT'S ALL I HAVE IN THE HOUSE FOR I AM A WIDOWER AND NEVER HAD ANY FAMILY + WE LIVE VERY QUIETLY SIR THE THREE OF US AND WE KEEP A ROOF OVER OUR HEADS AND PAY OUR DEBTS IF WE DO NOTHING MORE + THE FIRST THING THAT PUT US OUT WAS THAT ADVERTISEMENT + SPAULDING HE CAME DOWN INTO THE OFFICE JUST THIS DAY EIGHT WEEKS WITH THIS VERY PAPER IN HIS HAND AND HE SAYS + I WISH TO THE LORD MR. WILSON THAT I WAS A RED HEADED MAN + WHY THAT + I ASKS + WHY SAYS HE HERE'S ANOTHER VACANCY ON THE LEAGUE OF THE RED HEADED MEN + IT'S WORTH QUITE A LITTLE FORTUNE TO ANY MAN WHO GETS IT AND I UNDERSTAND THAT THERE ARE MORE VACANCIES THAN THERE ARE MEN SO THAT THE TRUSTEES ARE AT THEIR WITS' END WHAT TO DO WITH THE MONEY + IF MY HAIR WOULD ONLY CHANGE COLOUR HERE'S A NICE LITTLE CRIB ALL READY FOR ME TO STEP INTO + QUOTE WHY WHAT IS IT THEN + I ASKED + YOU SEE + MR. HOLMES I AM A VERY STAY AT HOME MAN AND AS MY BUSINESS CAME TO ME INSTEAD OF MY HAVING TO GO TO IT I WAS OFTEN WEEKS ON END WITHOUT PUTTING MY FOOT OVER THE DOOR MAT + IN THAT WAY I DIDN'T KNOW MUCH OF WHAT WAS GOING ON OUTSIDE AND I WAS ALWAYS GLAD OF A BIT OF NEWS + HAVE YOU NEVER HEARD OF THE LEAGUE OF THE RED HEADED MEN HE ASKED WITH HIS EYES OPEN + NEVER + WHY WONDER AT THAT FOR YOU ARE ELIGIBILE YOURSELF FOR ONE OF THE VACANCIES + AND WHAT ARE THEY WORTH + I ASKED + OH MERELY A COUPLE OF HUNDRED A YEAR BUT THE WORK IS SLIGHT AND IT NEED NOT INTERFERE VERY MUCH WITH ONE'S OTHER OCCUPATIONS + QUOTE WELL YOU CAN EASILY THINK THAT THAT MADE ME PRICK UP MY EARS FOR THE BUSINESS HAS NOT BEEN OVER GOOD FOR SOME YEARS AND AN EXTRA COUPLE OF HUNDRED WOULD HAVE BEEN VERY HANDY + TELL ME ALL ABOUT IT SAID I + WELL SAID HE. SHOWING ME THE ADVERTISEMENT YOU CAN SEE FOR YOURSELF THAT THE LEAGUE HAS A VACANCY AND THERE IS THE ADDRESS WHERE YOU SHOULD APPLY FOR PARTICULARS + AS FAR AS I CAN MAKE OUT THE LEAGUE WAS FOUNDED BY AN AMERICAN MILLIONAIRE + EZEKIAH HOPKINS WHO WAS VERY PECULIAR IN HIS WAYS + HE WAS HIMSELF RED HEADED AND HE HAD A GREAT SYMPATHY FOR ALL REDHEADED MEN SO WHEN HE DIED IT WAS FOUND THAT HE HAD LEFT HIS ENORMOUS FORTUNE IN THE HANDS OF TRUSTEES WITH INSTRUCTIONS TO APPLY THE INTEREST TO THE PROVIDING OF EASY BERTHS TO MEN WHOSE HAIR IS OF THAT COLOUR + FROM ALL I HEAR IT IS SPLENDID PAY AND VERY LITTLE TO DO + BUT SAID I THERE WOULD BE MILLIONS OF RED HEADED MEN WHO WOULD APPLY + NOT SO MANY AS YOU MIGHT THINK HE ANSWERED + YOU SEE IT IS REALLY CONFINED TO LONDONERS AND TO GROWN MEN + THIS AMERICAN HAD STARTED FROM LONDON WHEN HE WAS YOUNG AND HE WANTED TO DO THE OLD TOWN A GOOD TURN + THEN AGAIN I HAVE HEARD IT IS NO USE YOUR APPLYING IF YOUR HAIR IS LIGHT RED OR DARK RED OR ANYTHING BUT REAL BRIGHT BLAZING FIERY RED + NOW IF YOU CARED TO APPLY MR. WILSON YOU WOULD JUST WALK IN BUT PERHAPS IT WOULD HARDLY BE WORTH YOUR WHILE TO PUT YOURSELF OUT OF THE WAY FOR THE SAKE OF A FEW HUNDRED POUNDS + NOW IT IS A FACT GENTLEMEN AS YOU MAY SEE FOR YOURSELVES THAT MY HAIR IS OF A VERY FULL AND RICH TINT SO THAT IT SEEMED TO ME THAT IF THERE WAS TO BE ANY COMPETITION IN THE MATTER I STOOD AS GOOD A CHANCE AS ANY MAN THAT I HAD EVER MET + VINCENT SPAULDING SEEMED TO KNOW SO MUCH ABOUT IT THAT I THOUGHT HE MIGHT PROVE USEFUL SO I JUST ORDERED HIM TO PUT UP THE SHUTTERS FOR THE DAY AND TO COME RIGHT AWAY WITH ME + HE WAS VERY WILLING TO HAVE A HOLIDAY SO WE SHUT THE BUSINESS UP AND STARTED OFF FOR THE ADDRESS THAT WAS GIVEN US IN THE ADVERTISEMENT + QUOTE I NEVER HOPE TO SEE SUCH A SIGHT AS THAT AGAIN MR. HOLMES + FROM NORTH SOUTH EAST AND WEST EVERY MAN WHO HAD A SHADE OF RED IN HIS HAIR HAD TRAMPED INTO THE CITY TO ANSWER THE ADVERTISEMENT + FLEET STREET WAS CHOKED WITH RED HEADED FOLK AND POPE'S COURT LOOKED LIKE A COSTER'S ORANGE BARROW + I SHOULD NOT HAVE THOUGHT THERE WERE SO MANY IN THE WHOLE COUNTRY AS WERE BROUGHT TOGETHER BY THAT SINGLE ADVERTISEMENT + EVERY SHADE OF COLOUR THEY WERE STRAW LEMON ORANGE BRICK IRISH SETTER LIVER CLAY BUT AS SPAULDING SAID THERE WERE NOT MANY WHO HAD THE REAL VIVID FLAME COLOURED TINT + WHEN I SAW HOW MANY WERE WAITING I WOULD HAVE GIVEN IT UP IN DESPAIR BUT SPAULDING WOULD NOT HEAR OF IT + HOW HE DID IT I COULD NOT IMAGINE BUT HE PUSHED AND PULLED AND BUTTED UNTIL HE GOT ME THROUGH THE CROWD AND RIGHT UP TO THE STEPS WHICH LED TO THE OFFICE + THERE WAS A DOUBLE STREAM UPON THE STAIR SOME GOING UP IN HOPE AND SOME COMING BACK DEJECTED BUT WE WEDGED IN AS WELL AS WE COULD AND SOON FOUND OURSELVES IN THE OFFICE + YOUR EXPERIENCE HAS BEEN A MOST ENTERTAINING ONE REMARKED HOLMES AS HIS CLIENT PAUSED AND REFRESHED HIS MEMORY WITH A HUGE PINCH OF SNUFF + PRAY CONTINUE YOUR VERY INTERESTING STATEMENT + THERE WAS NOTHING IN THE OFFICE BUT A COUPLE OF WOODEN CHAIRS AND A DEAL TABLE BEHIND WHICH SAT A SMALL MAN WITH A HEAD THAT WAS EVEN REDDER THAN MINE + HE SAID A FEW WORDS TO EACH CANDIDATE AS HE CAME UP AND THEN HE ALWAYS MANAGED TO FIND SOME FAULT IN THEM WHICH WOULD DISQUALIFY THEM + GETTING A VACANCY DID NOT SEEM TO BE SUCH A VERY EASY MATTER AFTER ALL + HOWEVER WHEN OUR TURN CAME THE LITTLE MAN WAS MUCH MORE FAVOURABLE TO ME THAN TO ANY OF THE OTHERS AND HE CLOSED THE DOOR AS WE ENTERED SO THAT HE MIGHT HAVE A PRIVATE WORD WITH US + THIS IS MR. JABEZ WILSON SAID MY ASSISTANT AND HE IS WILLING TO FILL A VACANCY IN THE LEAGUE + QUOTE AND HE IS ADMIRABLY SUITED FOR IT THE OTHER ANSWERED + HE HAS EVERY REQUIREMENT + I CANNOT RECALL WHEN I HAVE SEEN ANYTHING SO FINE + HE TOOK A STEP BACKWARD COCKED HIS HEAD ON ONE SIDE AND GAZED AT MY HAIR UNTIL I FELT QUITE BASHFUL + THEN SUDDENLY HE PLUNGED FORWARD WRUNG MY HAND AND CONGRATULATED ME WARMLY ON MY SUCCESS + IT WOULD BE INJUSTICE TO HESITATE SAID HE + YOU WILL HOWEVER I AM SURE EXCUSE ME FOR TAKING AN OBVIOUS PRECAUTION + WITH THAT HE SEIZED MY HAIR IN BOTH HIS HANDS AND TUGGED UNTIL I YELLED WITH THE PAIN + THERE IS WATER IN YOUR EYES SAID HE AS HE RELEASED ME + I PERCEIVE THAT ALL IS AS IT SHOULD BE + BUT WE HAVE TO BE CAREFUL FOR WE HAVE TWICE BEEN DECEIVED BY WIGS AND ONCE BY PAINT + I COULD TELL YOU TALES OF COBBLER'S WAX WHICH WOULD DISGUST YOU WITH HUMAN NATURE + HE STEPPED OVER TO THE WINDOW AND SHOUTED THROUGH IT AT THE TOP OF HIS VOICE THAT THE VACANCY WAS FILLED + A GROAN OF DISAPPOINTMENT CAME UP FROM BELOW AND THE FOLK ALL TROOPED AWAY IN DIFFERENT DIRECTIONS UNTIL THERE WAS NOT A RED HEAD TO BE SEEN EXCEPT MY OWN AND THAT OF THE MANAGER + MY NAME SAID HE IS MR. DUNCAN ROSS AND I AM MYSELF ONE OF THE PENSIONERS UPON THE FUND LEFT BY OUR NOBLE BENEFACTOR + ARE YOU A MARRIED MAN MR. WILSON + HAVE YOU A FAMILY + I ANSWERED THAT I HAD NOT + HIS FACE FELL IMMEDIATELY + DEAR ME HE SAID GRAVELY THAT IS VERY SERIOUS INDEED + I AM SORRY TO HEAR YOU SAY THAT + THE FUND WAS OF COURSE FOR THE PROPAGATION AND SPREAD OF THE RED HEADS AS WELL AS FOR THEIR MAINTENANCE + IT IS EXCEEDINGLY UNFORTUNATE THAT YOU SHOULD BE A BACHELOR + QUOTE MY FACE LENGTHENED AT THIS MR. HOLMES FOR I THOUGHT THAT I WAS NOT TO HAVE THE VACANCY AFTER ALL BUT AFTER THINKING IT OVER FOR A FEW MINUTES HE SAID THAT IT WOULD BE ALL RIGHT + IN THE CASE OF ANOTHER SAID HE THE OBJECTION MIGHT BE FATAL BUT WE MUST STRETCH A POINT IN FAVOUR OF A MAN WITH SUCH A HEAD OF HAIR AS YOURS + WHEN SHALL YOU BE ABLE TO ENTER UPON YOUR NEW DUTIES + WELL IT IS A LITTLE AWKWARD FOR I HAVE A BUSINESS ALREADY SAID I + OH NEVER MIND ABOUT THAT MR. WILSON SAID VINCENT SPAULDING + I SHOULD BE ABLE TO LOOK AFTER THAT FOR YOU + WHAT WOULD BE THE HOURS + I ASKED + TEN TO TWO + QUOTE NOW A PAWNBROKER'S BUSINESS IS MOSTLY DONE OF AN EVENING MR. HOLMES ESPECIALLY THURSDAY AND FRIDAY EVENING WHICH IS JUST BEFORE PAY DAY SO IT WOULD SUIT ME VERY WELL TO EARN A LITTLE IN THE MORNINGS + BESIDES I KNEW THAT MY ASSISTANT WAS A GOOD MAN AND THAT HE WOULD SEE TO ANYTHING THAT TURNED UP + THAT WOULD SUIT ME VERY WELL SAID I. AND THE PAY + IS FOUR POUNDS A WEEK + AND THE WORK + IS PURELY NOMINAL + WHAT DO YOU CALL PURELY NOMINAL + QUOTE WELL YOU HAVE TO BE IN THE OFFICE OR AT LEAST IN THE BUILDING THE WHOLE TIME + IF YOU LEAVE YOU FORFEIT YOUR WHOLE POSITION FOREVER + THE WILL IS VERY CLEAR UPON THAT POINT + YOU DON'T COMPLY WITH THE CONDITIONS IF YOU BUDGE FROM THE OFFICE DURING THAT TIME + IT'S ONLY FOUR HOURS A DAY AND I SHOULD NOT THINK OF LEAVING SAID I + NO EXCUSE WILL AVAIL SAID MR. DUNCAN ROSS NEITHER SICKNESS NOR BUSINESS NOR ANYTHING ELSE + THERE YOU MUST STAY OR YOU LOSE YOUR BILLET + AND THE WORK + IS TO COPY OUT THE ENCYCLOPEDIA BRITANNICA + THERE IS THE FIRST VOLUME OF IT IN THAT PRESS + YOU MUST FIND YOUR OWN INK. PENS AND BLOTTING PAPER BUT WE PROVIDE THIS TABLE AND CHAIR + WILL YOU BE READY TO MORROW + CERTAINLY I ANSWERED + QUOTE THEN GOOD BYE MR. JABEZ WILSON AND LET ME CONGRATULATE YOU ONCE MORE ON THE IMPORTANT POSITION WHICH YOU HAVE BEEN FORTUNATE ENOUGH TO GAIN + HE BOWED ME OUT OF THE ROOM AND I WENT HOME WITH MY ASSISTANT HARDLY KNOWING WHAT TO SAY OR DO I WAS SO PLEASED AT MY OWN GOOD FORTUNE + WELL I THOUGHT OVER THE MATTER ALL DAY AND BY EVENING I WAS IN LOW SPIRITS AGAIN FOR I HAD QUITE PERSUADED MYSELF THAT THE WHOLE AFFAIR MUST BE SOME GREAT HOAX OR FRAUD THOUGH WHAT ITS OBJECT MIGHT BE I COULD NOT IMAGINE + IT SEEMED ALTOGETHER PAST BELIEF THAT ANYONE COULD MAKE SUCH A WILL OR THAT THEY WOULD PAY SUCH A SUM FOR DOING ANYTHING SO SIMPLE AS COPYING OUT THE ENCYCLOPEDIA BRITANNICA + VINCENT SPAULDING DID WHAT HE COULD TO CHEER ME UP BUT BY BEDTIME I HAD REASONED MYSELF OUT OF THE WHOLE THING + HOWEVER IN THE MORNING I DETERMINED TO HAVE A LOOK AT IT ANYHOW SO I BOUGHT A PENNY BOTTLE OF INK AND WITH A QUILL PEN AND SEVEN SHEETS OF FOOLSCAP PAPER I STARTED OFF FOR POPE'S COURT + WELL TO MY SURPRISE AND DELIGHT EVERYTHING WAS AS RIGHT AS POSSIBLE + THE TABLE WAS SET OUT READY FOR ME AND MR. DUNCAN ROSS WAS THERE TO SEE THAT I GOT FAIRLY TO WORK + HE STARTED ME OFF UPON THE LETTER A AND THEN HE LEFT ME BUT HE WOULD DROP IN FROM TIME TO TIME TO SEE THAT ALL WAS RIGHT WITH ME + AT TWO O'CLOCK HE BADE ME GOOD DAY COMPLIMENTED ME UPON THE AMOUNT THAT I HAD WRITTEN AND LOCKED THE DOOR OF THE OFFICE AFTER ME + THIS WENT ON DAY AFTER DAY MR. HOLMES AND ON SATURDAY THE MANAGER CAME IN AND PLANKED DOWN FOUR GOLDEN SOVEREIGNS FOR MY WEEK'S WORK + IT WAS THE SAME NEXT WEEK AND THE SAME THE WEEK AFTER + EVERY MORNING I WAS THERE AT TEN AND EVERY AFTERNOON I LEFT AT TWO + BY DEGREES MR. DUNCAN ROSS TOOK TO COMING IN ONLY ONCE OF A MORNING AND THEN AFTER A TIME HE DID NOT COME IN AT ALL + STILL OF COURSE I NEVER DARED TO LEAVE THE ROOM FOR AN INSTANT FOR I WAS NOT SURE WHEN HE MIGHT COME AND THE BILLET WAS SUCH A GOOD ONE AND SUITED ME SO WELL THAT I WOULD NOT RISK THE LOSS OF IT + EIGHT WEEKS PASSED AWAY LIKE THIS AND I HAD WRITTEN ABOUT ABBOTS AND ARCHERY AND ARMOUR AND ARCHITECTURE AND ATTICA AND HOPED WITH DILIGENCE THAT I MIGHT GET ON TO THE B'S BEFORE VERY LONG + IT COST ME SOMETHING IN FOOLSCAP AND I HAD PRETTY NEARLY FILLED A SHELF WITH MY WRITINGS + AND THEN SUDDENLY THE WHOLE BUSINESS CAME TO AN END + QUOTE TO AN END QUOTE + YES SIR + AND NO LATER THAN THIS MORNING + I WENT TO MY WORK AS USUAL AT TEN O'CLOCK BUT THE DOOR WAS SHUT AND LOCKED WITH A LITTLE SQUARE OF CARD BOARD HAMMERED ON TO THE MIDDLE OF THE PANEL WITH A TACK + HERE IT IS AND YOU CAN READ FOR YOURSELF + HE HELD UP A PIECE OF WHITE CARD BOARD ABOUT THE SIZE OF A SHEET OF NOTE PAPER + IT READ IN THIS FASHION THE RED HEADED LEAGUE IS DISSOLVED + OCTOBER NINTH ONE THOUSAND EIGHT HUNDRED NINETY + SHERLOCK HOLMES AND I SURVEYED THIS CURT ANNOUNCEMENT AND THE RUEFUL FACE BEHIND IT UNTIL THE COMICAL SIDE OF THE AFFAIR SO COMPLETELY OVERTOPPED EVERY OTHER CONSIDERATION THAT WE BOTH BURST OUT INTO A ROAR OF LAUGHTER + I CANNOT SEE THAT THERE IS ANYTHING VERY FUNNY CRIED OUR CLIENT FLUSHING UP TO THE ROOTS OF HIS FLAMING HEAD + IF YOU CAN DO NOTHING BETTER THAN LAUGH AT ME I CAN GO ELSEWHERE + NO NO CRIED HOLMES SHOVING HIM BACK INTO THE CHAIR FROM WHICH HE HAD HALF RISEN + QUOTE I REALLY WOULDN'T MISS YOUR CASE FOR THE WORLD + IT IS MOST REFRESHINGLY UNUSUAL + BUT THERE IS IF YOU WILL EXCUSE MY SAYING SO SOMETHING JUST A LITTLE FUNNY ABOUT IT + PRAY WHAT STEPS DID YOU TAKE WHEN YOU FOUND THE CARD UPON THE DOOR + I WAS STAGGERED SIR + I DID NOT KNOW WHAT TO DO + THEN I CALLED AT THE OFFICES ROUND BUT NONE OF THEM SEEMED TO KNOW ANYTHING ABOUT IT + FINALLY I WENT TO THE LANDLORD WHO IS AN ACCOUNTANT LIVING ON THE GROUND FLOOR AND I ASKED HIM IF HE COULD TELL ME WHAT HAD BECOME OF THE RED HEADED LEAGUE + HE SAID THAT HE HAD NEVER HEARD OF ANY SUCH BODY + THEN I ASKED HIM WHO MR. DUNCAN ROSS WAS + HE ANSWERED THAT THE NAME WAS NEW TO HIM + WELL SAID I THE GENTLEMAN AT NUMBER FOUR + WHAT THE RED HEADED MAN + YES + QUOTE OH SAID HE HIS NAME WAS WILLIAM MORRIS + HE WAS A SOLICITOR AND WAS USING MY ROOM AS A TEMPORARY CONVENIENCE UNTIL HIS NEW PREMISES WERE READY + HE MOVED OUT YESTERDAY + WHERE COULD I FIND HIM + OH AT HIS NEW OFFICES + HE DID TELL ME THE ADDRESS + YES SEVENTEEN KING EDWARD STREET NEAR SAINT PAUL'S + I STARTED OFF MR. HOLMES BUT WHEN I GOT TO THAT ADDRESS IT WAS A MANUFACTORY OF ARTIFICIAL KNEE CAPS AND NO ONE IN IT HAD EVER HEARD OF EITHER MR. WILLIAM MORRIS OR MR. DUNCAN ROSS + AND WHAT DID YOU DO THEN ASKED HOLMES + I WENT HOME TO SAXE COBURG SQUARE AND I TOOK THE ADVICE OF MY ASSISTANT + BUT HE COULD NOT HELP ME IN ANY WAY + HE COULD ONLY SAY THAT IF I WAITED I SHOULD HEAR BY POST + BUT THAT WAS NOT QUITE GOOD ENOUGH MR. HOLMES + I DID NOT WISH TO LOSE SUCH A PLACE WITHOUT A STRUGGLE SO AS I HAD HEARD THAT YOU WERE GOOD ENOUGH TO GIVE ADVICE TO POOR FOLK WHO WERE IN NEED OF IT I CAME RIGHT AWAY TO YOU QUOTE + AND YOU DID VERY WISELY SAID HOLMES + YOUR CASE IS AN EXCEEDINGLY REMARKABLE ONE AND I SHALL BE HAPPY TO LOOK INTO IT + FROM WHAT YOU HAVE TOLD ME I THINK THAT IT IS POSSIBLE THAT GRAVER ISSUES HANG FROM IT THAN MIGHT AT FIRST SIGHT APPEAR + GRAVE ENOUGH SAID MR. JABEZ WILSON + WHY I HAVE LOST FOUR POUND A WEEK + QUOTE AS FAR AS YOU ARE PERSONALLY CONCERNED QUOTE REMARKED HOLMES QUOTE I DO NOT SEE THAT YOU HAVE ANY GRIEVANCE AGAINST THIS EXTRAORDINARY LEAGUE + ON THE CONTRARY YOU ARE AS I UNDERSTAND RICHER BY SOME THIRTY POUNDS TO SAY NOTHING OF THE MINUTE KNOWLEDGE WHICH YOU HAVE GAINED ON EVERY SUBJECT WHICH COMES UNDER THE LETTER A. YOU HAVE LOST NOTHING BY THEM + NO SIR + BUT I WANT TO FIND OUT ABOUT THEM AND WHO THEY ARE AND WHAT THEIR OBJECT WAS IN PLAYING THIS PRANK IF IT WAS A PRANK UPON ME + IT WAS A PRETTY EXPENSIVE JOKE FOR THEM FOR IT COST THEM TWO AND THIRTY POUNDS + WE SHALL ENDEAVOUR TO CLEAR UP THESE POINTS FOR YOU + AND FIRST ONE OR TWO QUESTIONS MR. WILSON + THIS ASSISTANT OF YOURS WHO FIRST CALLED YOUR ATTENTION TO THE ADVERTISEMENT HOW LONG HAD HE BEEN WITH YOU + QUOTE ABOUT A MONTH THEN QUOTE + HOW DID HE COME + IN ANSWER TO AN ADVERTISEMENT + WAS HE THE ONLY APPLICANT + NO I HAD A DOZEN + WHY DID YOU PICK HIM + QUOTE BECAUSE HE WAS HANDY AND WOULD COME CHEAP QUOTE + AT HALF WAGES IN FACT + YES + WHAT IS HE LIKE THIS VINCENT SPAULDING + SMALL STOUT BUILT VERY QUICK IN HIS WAYS NO HAIR ON HIS FACE THOUGH HE'S NOT SHORT OF THIRTY + HAS A WHITE SPLASH OF ACID UPON HIS FOREHEAD + HOLMES SAT UP IN HIS CHAIR IN CONSIDERABLE EXCITEMENT + QUOTE I THOUGHT AS MUCH QUOTE SAID HE + HAVE YOU EVER OBSERVED THAT HIS EARS ARE PIERCED FOR EARRINGS + YES SIR + HE TOLD ME THAT A GYPSY HAD DONE IT FOR HIM WHEN HE WAS A LAD + HUM SAID HOLMES SINKING BACK IN DEEP THOUGHT + HE IS STILL WITH YOU + QUOTE OH YES SIR I HAVE ONLY JUST LEFT HIM QUOTE + AND HAS YOUR BUSINESS BEEN ATTENDED TO IN YOUR ABSENCE + NOTHING TO COMPLAIN OF SIR + THERE'S NEVER VERY MUCH TO DO OF A MORNING + THAT WILL DO MR. WILSON + I SHALL BE HAPPY TO GIVE YOU AN OPINION UPON THE SUBJECT IN THE COURSE OF A DAY OR TWO + TO DAY IS SATURDAY AND I HOPE THAT BY MONDAY WE MAY COME TO A CONCLUSION + QUOTE WELL WATSON QUOTE SAID HOLMES WHEN OUR VISITOR HAD LEFT US QUOTE WHAT DO YOU MAKE OF IT ALL QUOTE + I MAKE NOTHING OF IT I ANSWERED FRANKLY + IT IS A MOST MYSTERIOUS BUSINESS + AS A RULE SAID HOLMES THE MORE BIZARRE A THING IS THE LESS MYSTERIOUS IT PROVES TO BE + IT IS YOUR COMMONPLACE FEATURELESS CRIMES WHICH ARE REALLY PUZZLING JUST AS A COMMONPLACE FACE IS THE MOST DIFFICULT TO IDENTIFY + BUT I MUST BE PROMPT OVER THIS MATTER + WHAT ARE YOU GOING TO DO THEN + I ASKED + QUOTE TO SMOKE QUOTE HE ANSWERED + IT IS QUITE A THREE PIPE PROBLEM AND I BEG THAT YOU WON'T SPEAK TO ME FOR FIFTY MINUTES + HE CURLED HIMSELF UP IN HIS CHAIR WITH HIS THIN KNEES DRAWN UP TO HIS HAWK LIKE NOSE AND THERE HE SAT WITH HIS EYES CLOSED AND HIS BLACK CLAY PIPE THRUSTING OUT LIKE THE BILL OF SOME STRANGE BIRD + I HAD COME TO THE CONCLUSION THAT HE HAD DROPPED ASLEEP AND INDEED WAS NODDING MYSELF WHEN HE SUDDENLY SPRANG OUT OF HIS CHAIR WITH THE GESTURE OF A MAN WHO HAS MADE UP HIS MIND AND PUT HIS PIPE DOWN UPON THE MANTELPIECE + SARASATE PLAYS AT THE SAINT JAMES'S HALL THIS AFTERNOON HE REMARKED + WHAT DO YOU THINK WATSON + COULD YOUR PATIENTS SPARE YOU FOR A FEW HOURS + I HAVE NOTHING TO DO TO DAY + MY PRACTICE IS NEVER VERY ABSORBING QUOTE + THEN PUT ON YOUR HAT AND COME + I AM GOING THROUGH THE CITY FIRST AND WE CAN HAVE SOME LUNCH ON THE WAY + I OBSERVE THAT THERE IS A GOOD DEAL OF GERMAN MUSIC ON THE PROGRAMME WHICH IS RATHER MORE TO MY TASTE THAN ITALIAN OR FRENCH + IT IS INTROSPECTIVE AND I WANT TO INTROSPECT + COME ALONG + WE TRAVELLED BY THE UNDERGROUND AS FAR AS ALDERSGATE AND A SHORT WALK TOOK US TO SAXE COBURG SQUARE THE SCENE OF THE SINGULAR STORY WHICH WE HAD LISTENED TO IN THE MORNING + IT WAS A POKY LITTLE SHABBY GENTEEL PLACE WHERE FOUR LINES OF DINGY TWO STORIED BRICK HOUSES LOOKED OUT INTO A SMALL RAILED IN ENCLOSURE WHERE A LAWN OF WEEDY GRASS AND A FEW CLUMPS OF FADED LAUREL BUSHES MADE A HARD FIGHT AGAINST A SMOKE LADEN AND UNCONGENIAL ATMOSPHERE + THREE GILT BALLS AND A BROWN BOARD WITH JABEZ WILSON IN WHITE LETTERS UPON A CORNER HOUSE ANNOUNCED THE PLACE WHERE OUR RED HEADED CLIENT CARRIED ON HIS BUSINESS + SHERLOCK HOLMES STOPPED IN FRONT OF IT WITH HIS HEAD ON ONE SIDE AND LOOKED IT ALL OVER WITH HIS EYES SHINING BRIGHTLY BETWEEN PUCKERED LIDS + THEN HE WALKED SLOWLY UP THE STREET AND THEN DOWN AGAIN TO THE CORNER STILL LOOKING KEENLY AT THE HOUSES + FINALLY HE RETURNED TO THE PAWNBROKER'S AND HAVING THUMPED VIGOROUSLY UPON THE PAVEMENT WITH HIS STICK TWO OR THREE TIMES HE WENT UP TO THE DOOR AND KNOCKED + IT WAS INSTANTLY OPENED BY A BRIGHT LOOKING CLEAN SHAVEN YOUNG FELLOW WHO ASKED HIM TO STEP IN + THANK YOU SAID HOLMES I ONLY WISHED TO ASK YOU HOW YOU WOULD GO FROM HERE TO THE STRAND + THIRD RIGHT FOURTH LEFT ANSWERED THE ASSISTANT PROMPTLY CLOSING THE DOOR + QUOTE SMART FELLOW THAT QUOTE OBSERVED HOLMES AS WE WALKED AWAY + HE IS IN MY JUDGMENT THE FOURTH SMARTEST MAN IN LONDON AND FOR DARING I AM NOT SURE THAT HE HAS NOT A CLAIM TO BE THIRD + I HAVE KNOWN SOMETHING OF HIM BEFORE + EVIDENTLY SAID I MR. WILSON'S ASSISTANT COUNTS FOR A GOOD DEAL IN THIS MYSTERY OF THE RED HEADED LEAGUE + I AM SURE THAT YOU INQUIRED YOUR WAY MERELY IN ORDER THAT YOU MIGHT SEE HIM + NOT HIM + QUOTE WHAT THEN QUOTE + THE KNEES OF HIS TROUSERS + AND WHAT DID YOU SEE + WHAT I EXPECTED TO SEE + WHY DID YOU BEAT THE PAVEMENT + MY DEAR DOCTOR THIS IS A TIME FOR OBSERVATION NOT FOR TALK + WE ARE SPIES IN AN ENEMY'S COUNTRY + WE KNOW SOMETHING OF SAXE COBURG SQUARE + LET US NOW EXPLORE THE PARTS WHICH LIE BEHIND IT QUOTE + THE ROAD IN WHICH WE FOUND OURSELVES AS WE TURNED ROUND THE CORNER FROM THE RETIRED SAXE COBURG SQUARE PRESENTED AS GREAT A CONTRAST TO IT AS THE FRONT OF A PICTURE DOES TO THE BACK + IT WAS ONE OF THE MAIN ARTERIES WHICH CONVEYED THE TRAFFIC OF THE CITY TO THE NORTH AND WEST + THE ROADWAY WAS BLOCKED WITH THE IMMENSE STREAM OF COMMERCE FLOWING IN A DOUBLE TIDE INWARD AND OUTWARD WHILE THE FOOTPATHS WERE BLACK WITH THE HURRYING SWARM OF PEDESTRIANS + IT WAS DIFFICULT TO REALIZE AS WE LOOKED AT THE LINE OF FINE SHOPS AND STATELY BUSINESS PREMISES THAT THEY REALLY ABUTTED ON THE OTHER SIDE UPON THE FADED AND STAGNANT SQUARE WHICH WE HAD JUST QUITTED + LET ME SEE SAID HOLMES STANDING AT THE CORNER AND GLANCING ALONG THE LINE I SHOULD LIKE JUST TO REMEMBER THE ORDER OF THE HOUSES HERE + IT IS A HOBBY OF MINE TO HAVE AN EXACT KNOWLEDGE OF LONDON + THERE IS MORTIMER'S THE TOBACCONIST THE LITTLE NEWSPAPER SHOP THE COBURG BRANCH OF THE CITY AND SUBURBAN BANK THE VEGETARIAN RESTAURANT AND MCFARLANE'S CARRIAGE BUILDING DEPOT + THAT CARRIES US RIGHT ON TO THE OTHER BLOCK + AND NOW DOCTOR WE'VE DONE OUR WORK SO IT'S TIME WE HAD SOME PLAY + A SANDWICH AND A CUP OF COFFEE AND THEN OFF TO VIOLIN LAND WHERE ALL IS SWEETNESS AND DELICACY AND HARMONY AND THERE ARE NO RED HEADED CLIENTS TO VEX US WITH THEIR CONUNDRUMS + MY FRIEND WAS AN ENTHUSIASTIC MUSICIAN BEING HIMSELF NOT ONLY A VERY CAPABLE PERFOMER BUT A COMPOSER OF NO ORDINARY MERIT + ALL THE AFTERNOON HE SAT IN THE STALLS WRAPPED IN THE MOST PERFECT HAPPINESS GENTLY WAVING HIS LONG THIN FINGERS IN TIME TO THE MUSIC WHILE HIS GENTLY SMILING FACE AND HIS LANGUID DREAMY EYES WERE AS UNLIKE THOSE OF HOLMES THE SLEUTH HOUND HOLMES THE RELENTLESS KEEN WITTED READY HANDED CRIMINAL AGENT AS IT WAS POSSIBLE TO CONCEIVE + IN HIS SINGULAR CHARACTER THE DUAL NATURE ALTERNATELY ASSERTED ITSELF AND HIS EXTREME EXACTNESS AND ASTUTENESS REPRESENTED AS I HAVE OFTEN THOUGHT THE REACTION AGAINST THE POETIC AND CONTEMPLATIVE MOOD WHICH OCCASIONALLY PREDOMINATED IN HIM + THE SWING OF HIS NATURE TOOK HIM FROM EXTREME LANGUOR TO DEVOURING ENERGY AND AS I KNEW WELL HE WAS NEVER SO TRULY FORMIDABLE AS WHEN FOR DAYS ON END HE HAD BEEN LOUNGING IN HIS ARMCHAIR AMID HIS IMPROVISATIONS AND HIS BLACK LETTER EDITIONS + THEN IT WAS THAT THE LUST OF THE CHASE WOULD SUDDENLY COME UPON HIM AND THAT HIS BRILLIANT REASONING POWER WOULD RISE TO THE LEVEL OF INTUITION UNTIL THOSE WHO WERE UNACQUAINTED WITH HIS METHODS WOULD LOOK ASKANCE AT HIM AS ON A MAN WHOSE KNOWLEDGE WAS NOT THAT OF OTHER MORTALS + WHEN I SAW HIM THAT AFTERNOON SO ENWRAPPED IN THE MUSIC AT SAINT JAMES'S HALL I FELT THAT AN EVIL TIME MIGHT BE COMING UPON THOSE WHOM HE HAD SET HIMSELF TO HUNT DOWN + YOU WANT TO GO HOME NO DOUBT DOCTOR HE REMARKED AS WE EMERGED + YES IT WOULD BE AS WELL + AND I HAVE SOME BUSINESS TO DO WHICH WILL TAKE SOME HOURS + THIS BUSINESS AT COBURG SQUARE IS SERIOUS QUOTE + WHY SERIOUS + A CONSIDERABLE CRIME IS IN CONTEMPLATION + I HAVE EVERY REASON TO BELIEVE THAT WE SHALL BE IN TIME TO STOP IT + BUT TO DAY BEING SATURDAY RATHER COMPLICATES MATTERS + I SHALL WANT YOUR HELP TO NIGHT + AT WHAT TIME + TEN WILL BE EARLY ENOUGH + QUOTE I SHALL BE AT BAKER STREET AT TEN QUOTE + VERY WELL + AND I SAY DOCTOR THERE MAY BE SOME LITTLE DANGER SO KINDLY PUT YOUR ARMY REVOLVER IN YOUR POCKET + HE WAVED HIS HAND TURNED ON HIS HEEL AND DISAPPEARED IN AN INSTANT AMONG THE CROWD + I TRUST THAT I AM NOT MORE DENSE THAN MY NEIGHBOURS BUT I WAS ALWAYS OPPRESSED WITH A SENSE OF MY OWN STUPIDITY IN MY DEALINGS WITH SHERLOCK HOLMES + HERE I HAD HEARD WHAT HE HAD HEARD I HAD SEEN WHAT HE HAD SEEN AND YET FROM HIS WORDS IT WAS EVIDENT THAT HE SAW CLEARLY NOT ONLY WHAT HAD HAPPENED BUT WHAT WAS ABOUT TO HAPPEN WHILE TO ME THE WHOLE BUSINESS WAS STILL CONFUSED AND GROTESQUE + AS I DROVE HOME TO MY HOUSE IN KENSINGTON I THOUGHT OVER IT ALL FROM THE EXTRAORDINARY STORY OF THE RED HEADED COPIER OF THE ENCYCLOPEDIA DOWN TO THE VISIT TO SAXE COBURG SQUARE AND THE OMINOUS WORDS WITH WHICH HE HAD PARTED FROM ME + WHAT WAS THIS NOCTURNAL EXPEDITION AND WHY SHOULD I GO ARMED + WHERE WERE WE GOING AND WHAT WERE WE TO DO + I HAD THE HINT FROM HOLMES THAT THIS SMOOTH FACED PAWNBROKER'S ASSISTANT WAS A FORMIDABLE MAN A MAN WHO MIGHT PLAY A DEEP GAME + I TRIED TO PUZZLE IT OUT BUT GAVE IT UP IN DESPAIR AND SET THE MATTER ASIDE UNTIL NIGHT SHOULD BRING AN EXPLANATION + IT WAS A QUARTER PAST NINE WHEN I STARTED FROM HOME AND MADE MY WAY ACROSS THE PARK AND SO THROUGH OXFORD STREET TO BAKER STREET + TWO HANSOMS WERE STANDING AT THE DOOR AND AS I ENTERED THE PASSAGE I HEARD THE SOUND OF VOICES FROM ABOVE + ON ENTERING HIS ROOM I FOUND HOLMES IN ANIMATED CONVERSATION WITH TWO MEN ONE OF WHOM I RECOGNIZED AS PETER JONES THE OFFICIAL POLICE AGENT WHILE THE OTHER WAS A LONG THIN SAD FACED MAN WITH A VERY SHINY HAT AND OPPRESSIVELY RESPECTABLE FROCK COAT + HA + OUR PARTY IS COMPLETE SAID HOLMES BUTTONING UP HIS PEAJACKET AND TAKING HIS HEAVY HUNTING CROP FROM THE RACK + WATSON I THINK YOU KNOW MR. JONES OF SCOTLAND YARD + LET ME INTRODUCE YOU TO MR. MERRYWEATHER WHO IS TO BE OUR COMPANION IN TO NIGHT'S ADVENTURE QUOTE + WE'RE HUNTING IN COUPLES AGAIN DOCTOR YOU SEE SAID JONES IN HIS CONSEQUENTIAL WAY + OUR FRIEND HERE IS A WONDERFUL MAN FOR STARTING A CHASE + ALL HE WANTS IS AN OLD DOG TO HELP HIM TO DO THE RUNNING DOWN + I HOPE A WILD GOOSE MAY NOT PROVE TO BE THE END OF OUR CHASE OBSERVED MR. MERRYWEATHER GLOOMILY + YOU MAY PLACE CONSIDERABLE CONFIDENCE IN MR. HOLMES SIR SAID THE POLICE AGENT LOFTILY + QUOTE HE HAS HIS OWN LITTLE METHODS WHICH ARE IF HE WON'T MIND MY SAYING SO JUST A LITTLE TOO THEORETICAL AND FANTASTIC BUT HE HAS THE MAKINGS OF A DETECTIVE IN HIM + IT IS NOT TOO MUCH TO SAY THAT ONCE OR TWICE AS IN THAT BUSINESS OF THE SHOLTO MURDER AND THE AGRA TREASURE HE HAS BEEN MORE NEARLY CORRECT THAN THE OFFICIAL FORCE + OH IF YOU SAY SO MR. JONES IT IS ALL RIGHT SAID THE STRANGER WITH DEFERENCE + STILL I CONFESS THAT I MISS MY RUBBER + IT IS THE FIRST SATURDAY NIGHT FOR SEVEN AND TWENTY YEARS THAT I HAVE NOT HAD MY RUBBER + I THINK YOU WILL FIND SAID SHERLOCK HOLMES THAT YOU WILL PLAY FOR A HIGHER STAKE TO NIGHT THAN YOU HAVE EVER DONE YET AND THAT THE PLAY WILL BE MORE EXCITING + FOR YOU MR. MERRYWEATHER THE STAKE WILL BE SOME THIRTY THOUSAND POUNDS AND FOR YOU JONES IT WILL BE THE MAN UPON WHOM YOU WISH TO LAY YOUR HANDS QUOTE + JOHN CLAY THE MURDERER THIEF SMASHER AND FORGER + HE'S A YOUNG MAN MR. MERRYWEATHER BUT HE IS AT THE HEAD OF HIS PROFESSION AND I WOULD RATHER HAVE MY BRACELETS ON HIM THAN ON ANY CRIMINAL IN LONDON + HE'S A REMARKABLE MAN IS YOUNG JOHN CLAY + HIS GRANDFATHER WAS A ROYAL DUKE AND HE HIMSELF HAS BEEN TO ETON AND OXFORD + HIS BRAIN IS AS CUNNING.AS HIS FINGERS AND THOUGH WE MEET SIGNS OF HIM AT EVERY TURN WE NEVER KNOW WHERE TO FIND THE MAN HIMSELF + HE'LL CRACK A CRIB IN SCOTLAND ONE WEEK AND BE RAISING MONEY TO BUILD AN ORPHANAGE IN CORNWALL THE NEXT + I'VE BEEN ON HIS TRACK FOR YEARS AND HAVE NEVER SET EYES ON HIM YET + I HOPE THAT I MAY HAVE THE PLEASURE OF INTRODUCING YOU TO NIGHT + I'VE HAD ONE OR TWO LITTLE TURNS ALSO WITH MR. JOHN CLAY AND I AGREE WITH YOU THAT HE IS AT THE HEAD OF HIS PROFESSION + IT IS PAST TEN HOWEVER AND QUITE TIME THAT WE STARTED + IF YOU TWO WILL TAKE THE FIRST HANSOM WATSON AND I WILL FOLLOW IN THE SECOND + SHERLOCK HOLMES WAS NOT VERY COMMUNICATIVE DURING THE LONG DRIVE AND LAY BACK IN THE CAB HUMMING THE TUNES WHICH HE HAD HEARD IN THE AFTERNOON + WE RATTLED THROUGH AN ENDLESS LABYRINTH OF GAS LIT STREETS UNTIL WE EMERGED INTO FARRINGTON STREET + WE ARE CLOSE THERE NOW MY FRIEND REMARKED + QUOTE THIS FELLOW MERRYWEATHER IS A BANK DIRECTOR AND PERSONALLY INTERESTED IN THE MATTER + I THOUGHT IT AS WELL TO HAVE JONES WITH US ALSO + HE IS NOT A BAD FELLOW THOUGH AN ABSOLUTE IMBECILE IN HIS PROFESSION + HE HAS ONE POSITIVE VIRTUE + HE IS AS BRAVE AS A BULLDOG AND AS TENACIOUS AS A LOBSTER IF HE GETS HIS CLAWS UPON ANYONE + HERE WE ARE AND THEY ARE WAITING FOR US + WE HAD REACHED THE SAME CROWDED THOROUGHFARE IN WHICH WE HAD FOUND OURSELVES IN THE MORNING + OUR CABS WERE DISMISSED AND FOLLOWING THE GUIDANCE OF MR. MERRYWEATHER WE PASSED DOWN A NARROW PASSAGE AND THROUGH A SIDE DOOR WHICH HE OPENED FOR US + WITHIN THERE WAS A SMALL CORRIDOR WHICH ENDED IN A VERY MASSIVE IRON GATE + THIS ALSO WAS OPENED AND LED DOWN A FLIGHT OF WINDING STONE STEPS WHICH TERMINATED AT ANOTHER FORMIDABLE GATE + MR. MERRYWEATHER STOPPED TO LIGHT A LANTERN AND THEN CONDUCTED US DOWN A DARK EARTH SMELLING PASSAGE AND SO AFTER OPENING A THIRD DOOR INTO A HUGE VAULT OR CELLAR WHICH WAS PILED ALL ROUND WITH CRATES AND MASSIVE BOXES + YOU ARE NOT VERY VULNERABLE FROM ABOVE HOLMES REMARKED AS HE HELD UP THE LANTERN AND GAZED ABOUT HIM + NOR FROM BELOW SAID MR. MERRYWEATHER STRIKING HIS STICK UPON THE FLAGS WHICH LINED THE FLOOR + WHY DEAR ME IT SOUNDS QUITE HOLLOW HE REMARKED LOOKING UP IN SURPRISE + I MUST REALLY ASK YOU TO BE A LITTLE MORE QUIET SAID HOLMES SEVERELY + QUOTE YOU HAVE ALREADY IMPERILLED THE WHOLE SUCCESS OF OUR EXPEDITION + MIGHT I BEG THAT YOU WOULD HAVE THE GOODNESS TO SIT DOWN UPON ONE OF THOSE BOXES AND NOT TO INTERFERE + THE SOLEMN MR. MERRYWEATHER PERCHED HIMSELF UPON A CRATE WITH A VERY INJURED EXPRESSION UPON HIS FACE WHILE HOLMES FELL UPON HIS KNEES UPON THE FLOOR AND WITH THE LANTERN AND A MAGNIFYING LENS BEGAN TO EXARNINE MINUTELY THE CRACKS BETWEEN THE STONES + A FEW SECONDS SUFFICED TO SATISFY HIM FOR HE SPRANG TO HIS FEET AGAIN AND PUT HIS GLASS IN HIS POCKET + WE HAVE AT LEAST AN HOUR BEFORE US HE REMARKED FOR THEY CAN HARDLY TAKE ANY STEPS UNTIL THE GOOD PAWNBROKER IS SAFELY IN BED + THEN THEY WILL NOT LOSE A MINUTE FOR THE SOONER THEY DO THEIR WORK THE LONGER TIME THEY WILL HAVE FOR THEIR ESCAPE + WE ARE AT PRESENT DOCTOR AS NO DOUBT YOU HAVE DIVINED IN THE CELLAR OF THE CITY BRANCH OF ONE OF THE PRINCIPAL LONDON BANKS + MR. MERRYWEATHER IS THE CHAIRMAN OF DIRECTORS AND HE WILL EXPLAIN TO YOU THAT THERE ARE REASONS WHY THE MORE DARING CRIMINALS OF LONDON SHOULD TAKE A CONSIDERABLE INTEREST IN THIS CELLAR AT PRESENT + IT IS OUR FRENCH GOLD WHISPERED THE DIRECTOR + WE HAVE HAD SEVERAL WARNINGS THAT AN ATTEMPT MIGHT BE MADE UPON IT + QUOTE YOUR FRENCH GOLD QUOTE + YES + WE HAD OCCASION SOME MONTHS AGO TO STRENGTHEN OUR RESOURCES AND BORROWED FOR THAT PURPOSE THIRTY THOUSAND NAPOLEONS FROM THE BANK OF FRANCE + IT HAS BECOME KNOWN THAT WE HAVE NEVER HAD OCCASION TO UNPACK THE MONEY AND THAT IT IS STILL LYING IN OUR CELLAR + THE CRATE UPON WHICH I SIT CONTAINS TWO THOUSAND NAPOLEONS PACKED BETWEEN LAYERS OF LEAD FOIL + OUR RESERVE OF BULLION IS MUCH LARGER AT PRESENT THAN IS USUALLY KEPT IN A SINGLE BRANCH OFFICE AND THE DIRECTORS HAVE HAD MISGIVINGS UPON THE SUBJECT + WHICH WERE VERY WELL JUSTIFIED OBSERVED HOLMES + AND NOW IT IS TIME THAT WE ARRANGED OUR LITTLE PLANS + I EXPECT THAT WITHIN AN HOUR MATTERS WILL COME TO A HEAD + IN THE MEANTIME MR. MERRYWEATHER WE MUST PUT THE SCREEN OVER THAT DARK LANTERN + QUOTE AND SIT IN THE DARK QUOTE + I AM AFRAID SO + I HAD BROUGHT A PACK OF CARDS IN MY POCKET AND I THOUGHT THAT AS WE WERE A PARTIE CARREE YOU MIGHT HAVE YOUR RUBBER AFTER ALL + BUT I SEE THAT THE ENEMY'S PREPARATIONS HAVE GONE SO FAR THAT WE CANNOT RISK THE PRESENCE OF A LIGHT + AND FIRST OF ALL WE MUST CHOOSE OUR POSITIONS + THESE ARE DARING MEN AND THOUGH WE SHALL TAKE THEM AT A DISADVANTAGE THEY MAY DO US SOME HARM UNLESS WE ARE CAREFUL + I SHALL STAND BEHIND THIS CRATE AND DO YOU CONCEAL YOURSELVES BEHIND THOSE + THEN WHEN I FLASH A LIGHT UPON THEM CLOSE IN SWIFTLY + IF THEY FIRE WATSON HAVE NO COMPUNCTION ABOUT SHOOTING THEM DOWN + I PLACED MY REVOLVER COCKED UPON THE TOP OF THE WOODEN CASE BEHIND WHICH I CROUCHED + HOLMES SHOT THE SLIDE ACROSS THE FRONT OF HIS LANTERN AND LEFT US IN PITCH DARKNESS SUCH AN ABSOLUTE DARKNESS AS I HAVE NEVER BEFORE EXPERIENCED + THE SMELL OF HOT METAL REMAINED TO ASSURE US THAT THE LIGHT WAS STILL THERE READY TO FLASH OUT AT A MOMENT'S NOTICE + TO ME WITH MY NERVES WORKED UP TO A PITCH OF EXPECTANCY THERE WAS SOMETHING DEPRESSING AND SUBDUING IN THE SUDDEN GLOOM AND IN THE COLD DANK AIR OF THE VAULT + THEY HAVE BUT ONE RETREAT WHISPERED HOLMES + THAT IS BACK THROUGH THE HOUSE INTO SAXE COBURG SQUARE + I HOPE THAT YOU HAVE DONE WHAT I ASKED YOU JONES + QUOTE L. HAVE AN INSPECTOR AND TWO OFFICERS WAITING AT THE FRONT DOOR QUOTE + THEN WE HAVE STOPPED ALL THE HOLES + AND NOW WE MUST BE SILENT AND WAIT + WHAT A TIME IT SEEMED + FROM COMPARING NOTES AFTERWARDS IT WAS BUT AN HOUR AND A QUARTER YET IT APPEARED TO ME THAT THE NIGHT MUST HAVE ALMOST GONE. AND THE DAWN BE BREAKING ABOVE US + MY LIMBS WERE WEARY AND STIFF FOR I FEARED TO CHANGE MY POSITION YET MY NERVES WERE WORKED UP TO THE HIGHEST PITCH OF TENSION AND MY HEARING WAS SO ACUTE THAT I COULD NOT ONLY HEAR THE GENTLE BREATHING OF MY COMPANIONS BUT I COULD DISTINGUISH THE DEEPER HEAVIER IN BREATH OF THE BULKY JONES FROM THE THIN SIGHING NOTE OF THE BANK DIRECTOR + FROM MY POSITION I COULD LOOK OVER THE CASE IN THE DIRECTION OF THE FLOOR + SUDDENLY MY EYES CAUGHT THE GLINT OF A LIGHT + AT FIRST IT WAS BUT A LURID SPARK UPON THE STONE PAVEMENT + THEN IT LENGTHENED OUT UNTIL IT BECAME A YELLOW LINE AND THEN WITHOUT ANY WARNING OR SOUND A GASH SEEMED TO OPEN AND A HAND APPEARED A WHITE ALMOST WOMANLY HAND WHICH FELT ABOUT IN THE CENTRE OF THE LITTLE AREA OF LIGHT + FOR A MINUTE OR MORE THE HAND WITH ITS WRITHING FINGERS PROTRUDED OUT OF THE FLOOR + THEN IT WAS WITHDRAWN AS SUDDENLY AS IT APPEARED AND ALL WAS DARK AGAIN SAVE THE SINGLE LURID SPARK WHICH MARKED A CHINK BETWEEN THE STONES + ITS DISAPPEARANCE HOWEVER WAS BUT MOMENTARY + WITH A RENDING TEARING SOUND ONE OF THE BROAD WHITE STONES TURNED OVER UPON ITS SIDE AND LEFT A SQUARE GAPING HOLE THROUGH WHICH STREAMED THE LIGHT OF A LANTERN + OVER THE EDGE THERE PEEPED A CLEAN CUT BOYISH FACE WHICH LOOKED KEENLY ABOUT IT AND THEN. WITH A HAND ON EITHER SIDE OF THE APERTURE DREW ITSELF SHOULDERHIGH AND WAIST HIGH UNTIL ONE KNEE RESTED UPON THE EDGE + IN ANOTHER INSTANT HE STOOD AT THE SIDE OF THE HOLE AND WAS HAULING AFTER HIM A COMPANION LITHE AND SMALL LIKE HIMSELF WITH A PALE FACE AND A SHOCK OF VERY RED HAIR + IT'S ALL CLEAR HE WHISPERED + HAVE YOU THE CHISEL AND THE BAGS + GREAT SCOTT + JUMP ARCHIE JUMP AND I'LL SWING FOR IT + SHERLOCK HOLMES HAD SPRUNG OUT AND SEIZED THE INTRUDER BY THE COLLAR + THE OTHER DIVED DOWN THE HOLE AND I HEARD THE SOUND OF RENDING CLOTH AS JONES CLUTCHED AT HIS SKIRTS + THE LIGHT FLASHED UPON THE BARREL OF A REVOLVER BUT HOLMES'S HUNTING CROP CAME DOWN ON THE MAN'S WRIST AND THE PISTOL CLINKED UPON THE STONE FLOOR + QUOTE IT'S NO USE JOHN CLAY QUOTE SAID HOLMES BLANDLY + YOU HAVE NO CHANCE AT ALL + SO I SEE THE OTHER ANSWERED WITH THE UTMOST COOLNESS + I FANCY THAT MY PAL IS ALL RIGHT THOUGH I SEE YOU HAVE GOT HIS COAT TAILS + THERE ARE THREE MEN WAITING FOR HIM AT THE DOOR SAID HOLMES + OH INDEED + YOU SEEM TO HAVE DONE THE THING VERY COMPLETELY + I MUST COMPLIMENT YOU QUOTE + AND I YOU HOLMES ANSWERED + YOUR RED HEADED IDEA WAS VERY NEW AND EFFECTIVE + YOU'LL SEE YOUR PAL AGAIN PRESENTLY SAID JONES + HE'S QUICKER AT CLIMBING DOWN HOLES THAN I AM + JUST HOLD OUT WHILE I FIX THE DERBIES + QUOTE I BEG THAT YOU WILL NOT TOUCH ME WITH YOUR FILTHY HANDS QUOTE REMARKED OUR PRISONER AS THE HANDCUFFS CLATTERED UPON HIS WRISTS + YOU MAY NOT BE AWARE THAT I HAVE ROYAL BLOOD IN MY VEINS + HAVE THE GOODNESS ALSO WHEN YOU ADDRESS ME ALWAYS TO SAY SIR AND PLEASE + ALL RIGHT SAID JONES WITH A STARE AND A SNIGGER + WELL WOULD YOU PLEASE SIR MARCH UPSTAIRS WHERE WE CAN GET A CAB TO CARRY YOUR HIGHNESS TO THE POLICE STATION + THAT IS BETTER SAID JOHN CLAY SERENELY + HE MADE A SWEEPING BOW TO THE THREE OF US AND WALKED QUIETLY OFF IN THE CUSTODY OF THE DETECTIVE + QUOTE REALLY MR. HOLMES QUOTE SAID MR. MERRYWEATHER AS WE FOLLOWED THEM FROM THE CELLAR QUOTE I DO NOT KNOW HOW THE BANK CAN THANK YOU OR REPAY YOU + THERE IS NO DOUBT THAT YOU HAVE DETECTED AND DEFEATED IN THE MOST COMPLETE MANNER ONE OF THE MOST DETERMINED ATTEMPTS AT BANK ROBBERY THAT HAVE EVER COME WITHIN MY EXPERIENCE + I HAVE HAD ONE OR TWO LITTLE SCORES OF MY OWN TO SETTLE WITH MR. JOHN CLAY SAID HOLMES + I HAVE BEEN AT SOME SMALL EXPENSE OVER THIS MATTER WHICH I SHALL EXPECT THE BANK TO REFUND BUT BEYOND THAT I AM AMPLY REPAID BY HAVING HAD AN EXPERIENCE WHICH IS IN MANY WAYS UNIQUE AND BY HEARING THE VERY REMARKABLE NARRATIVE OF THE RED HEADED LEAGUE + YOU SEE WATSON HE EXPLAINED IN THE EARLY HOURS OF THE MORNING AS WE SAT OVER A GLASS OF WHISKY AND SODA IN BAKER STREET IT WAS PERFECTLY OBVIOUS FROM THE FIRST THAT THE ONLY POSSIBLE OBJECT OF THIS RATHER FANTASTIC BUSINESS OF THE ADVERTISEMENT OF THE LEAGUE AND THE COPYING OF THE ENCYCLOPEDIA MUST BE TO GET THIS NOT OVER BRIGHT PAWNBROKER OUT OF THE WAY FOR A NUMBER OF HOURS EVERY DAY + IT WAS A CURIOUS WAY OF MANAGING IT BUT REALLY IT WOULD BE DIFFICULT TO SUGGEST A BETTER + THE METHOD WAS NO DOUBT SUGGESTED TO CLAY'S INGENIOUS MIND BY THE COLOUR OF HIS ACCOMPLICE'S HAIR + THE FOUR POUNDS A WEEK WAS A LURE WHICH MUST DRAW HIM AND WHAT WAS IT TO THEM WHO WERE PLAYING FOR THOUSANDS + THEY PUT IN THE ADVERTISEMENT ONE ROGUE HAS THE TEMPORARY OFFICE THE OTHER ROGUE INCITES THE MAN TO APPLY FOR IT. AND TOGETHER THEY MANAGE TO SECURE HIS ABSENCE EVERY MORNING IN THE WEEK + FROM THE TIME THAT I HEARD OF THE ASSISTANT HAVING COME FOR HALF WAGES IT WAS OBVIOUS TO ME THAT HE HAD SOME STRONG MOTIVE FOR SECURING THE SITUATION + QUOTE BUT HOW COULD YOU GUESS WHAT THE MOTIVE WAS QUOTE + HAD THERE BEEN WOMEN IN THE HOUSE I SHOULD HAVE SUSPECTED A MERE VULGAR INTRIGUE + THAT HOWEVER WAS OUT OF THE QUESTION + THE MAN'S BUSINESS WAS A SMALL ONE AND THERE WAS NOTHING IN HIS HOUSE WHICH COULD ACCOUNT FOR SUCH ELABORATE PREPARATIONS AND SUCH AN EXPENDITURE AS THEY WERE AT + IT MUST THEN BE SOMETHING OUT OF THE HOUSE + WHAT COULD IT BE + I THOUGHT OF THE ASSISTANT'S FONDNESS FOR PHOTOGRAPHY AND HIS TRICK OF VANISHING INTO THE CELLAR + THE CELLAR + THERE WAS THE END OF THIS TANGLED CLUE + THEN I MADE INQUIRIES AS TO THIS MYSTERIOUS ASSISTANT AND FOUND THAT I HAD TO DEAL WITH ONE OF THE COOLEST AND MOST DARING CRIMINALS IN LONDON + HE WAS DOING SOMETHING IN THE CELLAR SOMETHING WHICH TOOK MANY HOURS A DAY FOR MONTHS ON END + WHAT COULD IT BE ONCE MORE + I COULD THINK OF NOTHING SAVE THAT HE WAS RUNNING A TUNNEL TO SOME OTHER BUILDING + SO FAR I HAD GOT WHEN WE WENT TO VISIT THE SCENE OF ACTION + I SURPRISED YOU BY BEATING UPON THE PAVEMENT WITH MY STICK + I WAS ASCERTAINING WHETHER THE CELLAR STRETCHED OUT IN FRONT OR BEHIND + IT WAS NOT IN FRONT + THEN I RANG THE BELL AND AS I HOPED THE ASSISTANT ANSWERED IT + WE HAVE HAD SOME SKIRMISHES BUT WE HAD NEVER SET EYES UPON EACH OTHER BEFORE + I HARDLY LOOKED AT HIS FACE + HIS KNEES WERE WHAT I WISHED TO SEE + YOU MUST YOURSELF HAVE REMARKED HOW WORN WRINKLED AND STAINED THEY WERE + THEY SPOKE OF THOSE HOURS OF BURROWING + THE ONLY REMAINING POINT WAS WHAT THEY WERE BURROWING FOR + I WALKED ROUND THE CORNER SAW THE CITY AND SUBURBAN BANK ABUTTED ON OUR FRIEND'S PREMISES AND FELT THAT I HAD SOLVED MY PROBLEM + WHEN YOU DROVE HOME AFTER THE CONCERT I CALLED UPON SCOTLAND YARD AND UPON THE CHAIRMAN OF THE BANK DIRECTORS WITH THE RESULT THAT YOU HAVE SEEN + AND HOW COULD YOU TELL THAT THEY WOULD MAKE THEIR ATTEMPT TO NIGHT + I ASKED + WELL WHEN THEY CLOSED THEIR LEAGUE OFFICES THAT WAS A SIGN THAT THEY CARED NO LONGER ABOUT MR. JABEZ WILSON'S PRESENCE IN OTHER WORDS THAT THEY HAD COMPLETED THEIR TUNNEL + BUT IT WAS ESSENTIAL THAT THEY SHOULD USE IT SOON AS IT MIGHT BE DISCOVERED OR THE BULLION MIGHT BE REMOVED + SATURDAY WOULD SUIT THEM BETTER THAN ANY OTHER DAY AS IT WOULD GIVE THEM TWO DAYS FOR THEIR ESCAPE + FOR ALL THESE REASONS I EXPECTED THEM TO COME TO NIGHT QUOTE + YOU REASONED IT OUT BEAUTIFULLY I EXCLAIMED IN UNFEIGNED ADMIRATION IT IS SO LONG A CHAIN AND YET EVERY LINK RINGS TRUE + IT SAVED ME FROM ENNUI HE ANSWERED YAWNING + ALAS + I ALREADY FEEL IT CLOSING IN UPON ME + MY LIFE IS SPENT IN ONE LONG EFFORT TO ESCAPE FROM THE COMMONPLACES OF EXISTENCE + THESE LITTLE PROBLEMS HELP ME TO DO SO + AND YOU ARE A BENEFACTOR OF THE RACE SAID I + HE SHRUGGED HIS SHOULDERS + QUOTE WELL PERHAPS AFTER ALL IT IS OF SOME LITTLE USE QUOTE HE REMARKED QUOTE L'HOMME C'EST RIEN L. OEUVRE C'EST TOUT AS GUSTAVE FLAUBERT WROTE TO GEORGE SAND QUOTE diff --git a/samples/LMTutorial/train/abbey_grange.txt b/samples/LMTutorial/train/abbey_grange.txt new file mode 100755 index 0000000..a17d42d --- /dev/null +++ b/samples/LMTutorial/train/abbey_grange.txt @@ -0,0 +1,612 @@ + IT WAS ON A BITTERLY COLD NIGHT AND FROSTY MORNING TOWARDS THE END OF THE WINTER OF NINETY SEVEN THAT I WAS AWAKENED BY A TUGGING AT MY SHOULDER + IT WAS HOLMES + THE CANDLE IN HIS HAND SHONE UPON HIS EAGER STOOPING FACE AND TOLD ME AT A GLANCE THAT SOMETHING WAS AMISS + QUOTE COME WATSON COME QUOTE HE CRIED + THE GAME IS AFOOT + NOT A WORD + INTO YOUR CLOTHES AND COME + TEN MINUTES LATER WE WERE BOTH IN A CAB AND RATTLING THROUGH THE SILENT STREETS ON OUR WAY TO CHARING CROSS STATION + THE FIRST FAINT WINTER'S DAWN WAS BEGINNING TO APPEAR AND WE COULD DIMLY SEE THE OCCASIONAL FIGURE OF AN EARLY WORKMAN AS HE PASSED US BLURRED AND INDISTINCT IN THE OPALESCENT LONDON REEK + HOLMES NESTLED IN SILENCE INTO HIS HEAVY COAT AND I WAS GLAD TO DO THE SAME FOR THE AIR WAS MOST BITTER AND NEITHER OF US HAD BROKEN OUR FAST + IT WAS NOT UNTIL WE HAD CONSUMED SOME HOT TEA AT THE STATION AND TAKEN OUR PLACES IN THE KENTISH TRAIN THAT WE WERE SUFFICIENTLY THAWED HE TO SPEAK AND I TO LISTEN + HOLMES DREW A NOTE FROM HIS POCKET AND READ ALOUD ABBEY GRANGE MARSHAM KENT THREE THIRTY A. M. + MY DEAR MR. HOLMES I SHOULD BE VERY GLAD OF YOUR IMMEDIATE ASSISTANCE IN WHAT PROMISES TO BE A MOST REMARKABLE CASE + IT IS SOMETHING QUITE IN YOUR LINE + EXCEPT FOR RELEASING THE LADY I WILL SEE THAT EVERYTHING IS KEPT EXACTLY AS I HAVE FOUND IT BUT I BEG YOU NOT TO LOSE AN INSTANT AS IT IS DIFFICULT TO LEAVE SIR EUSTACE THERE + YOURS FAITHFULLY STANLEY HOPKINS + QUOTE HOPKINS HAS CALLED ME IN SEVEN TIMES AND ON EACH OCCASION HIS SUMMONS HAS BEEN ENTIRELY JUSTIFIED QUOTE SAID HOLMES + ' I FANCY THAT EVERY ONE OF HIS CASES HAS FOUND ITS WAY INTO YOUR COLLECTION AND I MUST ADMIT WATSON THAT YOU HAVE SOME POWER OF SELECTION WHICH ATONES FOR MUCH WHICH I DEPLORE IN YOUR NARRATIVES + YOUR FATAL HABIT OF LOOKING AT EVERYTHING FROM THE POINT OF VIEW OF A STORY INSTEAD OF AS A SCIENTIFIC EXERCISE HAS RUINED WHAT MIGHT HAVE BEEN AN INSTRUCTIVE AND EVEN CLASSICAL SERIES OF DEMONSTRATIONS + YOU SLUR OVER WORK OF THE UTMOST FINESSE AND DELICACY IN ORDER TO DWELL UPON SENSATIONAL DETAILS WHICH MAY EXCITE BUT CANNOT POSSIBLY INSTRUCT THE READER + WHY DO YOU NOT WRITE THEM YOURSELF + I SAID WITH SOME BITTERNESS + I WILL MY DEAR WATSON I WILL + AT PRESENT I AM AS YOU KNOW FAIRLY BUSY BUT I PROPOSE TO DEVOTE MY DECLINING YEARS TO THE COMPOSITION OF A TEXTBOOK WHICH SHALL FOCUS THE WHOLE ART OF DETECTION INTO ONE VOLUME + OUR PRESENT RESEARCH APPEARS TO BE A CASE OF MURDER + YOU THINK THIS SIR EUSTACE IS DEAD THEN + QUOTE I SHOULD SAY SO + HOPKINS'S WRITING SHOWS CONSIDERABLE AGITATION AND HE IS NOT AN EMOTIONAL MAN + YES I GATHER THERE HAS BEEN VIOLENCE AND THAT THE BODY IS LEFT FOR OUR INSPECTION + A MERE SUICIDE WOULD NOT HAVE CAUSED HIM TO SEND FOR ME + AS TO THE RELEASE OF THE LADY IT WOULD APPEAR THAT SHE HAS BEEN LOCKED IN HER ROOM DURING THE TRAGEDY + WE ARE MOVING IN HIGH LIFE WATSON CRACKLING PAPER E. B. MONOGRAM COAT OF ARMS PICTURESQUE ADDRESS + I THINK THAT FRIEND HOPKINS WILL LIVE UP TO HIS REPUTATION AND THAT WE SHALL HAVE AN INTERESTING MORNING + THE CRIME WAS COMMITTED BEFORE TWELVE LAST NIGHT + HOW CAN YOU POSSIBLY TELL + BY AN INSPECTION OF THE TRAINS AND BY RECKONING THE TIME + THE LOCAL POLICE HAD TO BE CALLED IN THEY HAD TO COMMUNICATE WITH SCOTLAND YARD HOPKINS HAD TO GO OUT AND HE IN TURN HAD TO SEND FOR ME + ALL THAT MAKES A FAIR NIGHT'S WORK + WELL HERE WE ARE AT CHISELHURST STATION AND WE SHALL SOON SET OUR DOUBTS AT REST + A DRIVE OF A COUPLE OF MILES THROUGH NARROW COUNTRY LANES BROUGHT US TO A PARK GATE WHICH WAS OPENED FOR US BY AN OLD LODGE KEEPER WHOSE HAGGARD FACE BORE THE REFLECTION OF SOME GREAT DISASTER + THE AVENUE RAN THROUGH A NOBLE PARK BETWEEN LINES OF ANCIENT ELMS AND ENDED IN A LOW WIDESPREAD HOUSE PILLARED IN FRONT AFTER THE FASHION OF PALLADIO + THE CENTRAL PART WAS EVIDENTLY OF A GREAT AGE AND SHROUDED IN IVY BUT THE LARGE WINDOWS SHOWED THAT MODERN CHANGES HAD BEEN CARRIED OUT AND ONE WING OF THE HOUSE APPEARED TO BE ENTIRELY NEW + THE YOUTHFUL FIGURE AND ALERT EAGER FACE OF INSPECTOR STANLEY HOPKINS CONFRONTED US IN THE OPEN DOORWAY + I'M VERY GLAD YOU HAVE COME MR. HOLMES + AND YOU TOO DOCTOR WATSON + BUT INDEED IF I HAD MY TIME OVER AGAIN I SHOULD NOT HAVE TROUBLED YOU FOR SINCE THE LADY HAS COME TO HERSELF SHE HAS GIVEN SO CLEAR AN ACCOUNT OF THE AFFAIR THAT THERE IS NOT MUCH LEFT FOR US TO DO + YOU REMEMBER THAT LEWISHAM GANG OF BURGLARS QUOTE + WHAT THE THREE RANDALLS + EXACTLY THE FATHER AND TWO SONS + IT'S THEIR WORK + I HAVE NOT A DOUBT OF IT + THEY DID A JOB AT SYDENHAM A FORTNIGHT AGO AND WERE SEEN AND DESCRIBED + RATHER COOL TO DO ANOTHER SO SOON AND SO NEAR BUT IT IS THEY BEYOND ALL DOUBT + IT'S A HANGING MATTER THIS TIME + SIR EUSTACE IS DEAD THEN + YES HIS HEAD WAS KNOCKED IN WITH HIS OWN POKER + QUOTE SIR EUSTACE BRACKENSTALL THE DRIVER TELLS ME QUOTE + EXACTLY ONE OF THE RICHEST MEN IN KENT LADY BRACKENSTALL IS IN THE MORNING ROOM + POOR LADY SHE HAS HAD A MOST DREADFUL EXPERIENCE + SHE SEEMED HALF DEAD WHEN I SAW HER FIRST + I THINK YOU HAD BEST SEE HER AND HEAR HER ACCOUNT OF THE FACTS + THEN WE WILL EXAMINE THE DINING ROOM TOGETHER + LADY BRACKENSTALL WAS NO ORDINARY PERSON + SELDOM HAVE I SEEN SO GRACEFUL A FIGURE SO WOMANLY A PRESENCE AND SO BEAUTIFUL A FACE + SHE WAS A BLONDE GOLDEN HAIRED BLUE EYED AND WOULD NO DOUBT HAVE HAD THE PERFECT COMPLEXION WHICH GOES WITH SUCH COLOURING HAD NOT HER RECENT EXPERIENCE LEFT HER DRAWN AND HAGGARD + HER SUFFERINGS WERE PHYSICAL AS WELL AS MENTAL FOR OVER ONE EYE ROSE A HIDEOUS PLUM COLOURED SWELLING WHICH HER MAID A TALL AUSTERE WOMAN WAS BATHING ASSIDUOUSLY WITH VINEGAR AND WATER + THE LADY LAY BACK EXHAUSTED UPON A COUCH BUT HER QUICK OBSERVANT GAZE AS WE ENTERED THE ROOM AND THE ALERT EXPRESSION OF HER BEAUTIFUL FEATURES SHOWED THAT NEITHER HER WITS NOR HER COURAGE HAD BEEN SHAKEN BY HER TERRIBLE EXPERIENCE + SHE WAS ENVELOPED IN A LOOSE DRESSING GOWN OF BLUE AND SILVER BUT A BLACK SEQUIN COVERED DINNER DRESS LAY UPON THE COUCH BESIDE HER + I HAVE TOLD YOU ALL THAT HAPPENED MR. HOPKINS SHE SAID WEARILY + COULD YOU NOT REPEAT IT FOR ME + WELL IF YOU THINK IT NECESSARY I WILL TELL THESE GENTLEMEN WHAT OCCURTED + HAVE THEY BEEN IN THE DINING ROOM YET + QUOTE I THOUGHT THEY HAD BETTER HEAR YOUR LADYSHIP'S STORY FIRST QUOTE + I SHALL BE GLAD WHEN YOU CAN ARRANGE MATTERS + IT IS HORRIBLE TO ME TO THINK OF HIM STILL LYING THERE + SHE SHUDDERED AND BURIED HER FACE IN HER HANDS + AS SHE DID SO THE LOOSE GOWN FELL BACK FROM HER FOREARMS + HOLMES UTTERED AN EXCLAMATION + YOU HAVE OTHER INJURIES MADAM + WHAT IS THIS + TWO VIVID RED SPOTS STOOD OUT ON ONE OF THE WHITE ROUND LIMBS + SHE HASTILY COVERED IT + IT IS NOTHING + IT HAS NO CONNECTION WITH THIS HIDEOUS BUSINESS TO NIGHT + IF YOU AND YOUR FRIEND WILL SIT DOWN I WILL TELL YOU ALL I CAN + QUOTE I AM THE WIFE OF SIR EUSTACE BRACKENSTALL + I HAVE BEEN MARRIED ABOUT A YEAR + I SUPPOSE THAT IT IS NO USE MY ATTEMPTING TO CONCEAL THAT OUR MARRIAGE HAS NOT BEEN A HAPPY ONE + I FEAR THAT ALL OUR NEIGHBOURS WOULD TELL YOU THAT EVEN IF I WERE TO ATTEMPT TO DENY IT + PERHAPS THE FAULT MAY BE PARTLY MINE + I WAS BROUGHT UP IN THE FREER LESS CONVENTIONAL ATMOSPHERE OF SOUTH AUSTRALIA AND THIS ENGLISH LIFE WITH ITS PROPRIETIES AND ITS PRIMNESS IS NOT CONGENIAL TO ME + BUT THE MAIN REASON LIES IN THE ONE FACT WHICH IS NOTORIOUS TO EVERYONE AND THAT IS THAT SIR EUSTACE WAS A CONFIRMED DRUNKARD + TO BE WITH SUCH A MAN FOR AN HOUR IS UNPLEASANT + CAN YOU IMAGINE WHAT IT MEANS FOR A SENSITIVE AND HIGH SPIRITED WOMAN TO BE TIED TO HIM FOR DAY AND NIGHT + IT IS A SACRILEGE A CRIME A VILLAINY TO HOLD THAT SUCH A MARRIAGE IS BINDING + I SAY THAT THESE MONSTROUS LAWS OF YOURS WILL BRING A CURSE UPON THE LAND GOD WILL NOT LET SUCH WICKEDNESS ENDURE + FOR AN INSTANT SHE SAT UP HER CHEEKS FLUSHED AND HER EYES BLAZING FROM UNDER THE TERRIBLE MARK UPON HER BROW + THEN THE STRONG SOOTHING HAND OF THE AUSTERE MAID DREW HER HEAD DOWN ON TO THE CUSHION AND THE WILD ANGER DIED AWAY INTO PASSIONATE SOBBING + AT LAST SHE CONTINUED + I WILL TELL YOU ABOUT LAST NIGHT + YOU ARE AWARE PERHAPS THAT IN THIS HOUSE ALL THE SERVANTS SLEEP IN THE MODERN WING + THIS CENTRAL BLOCK IS MADE UP OF THE DWELLING ROOMS WITH THE KITCHEN BEHIND AND OUR BEDROOM ABOVE + MY MAID THERESA SLEEPS ABOVE MY ROOM + THERE IS NO ONE ELSE AND NO SOUND COULD ALARM THOSE WHO ARE IN THE FARTHER WING + THIS MUST HAVE BEEN WELL KNOWN TO THE ROBBERS OR THEY WOULD NOT HAVE ACTED AS THEY DID + SIR EUSTACE RETIRED ABOUT HALF PAST TEN + THE SERVANTS HAD ALREADY GONE TO THEIR QUARTERS + ONLY MY MAID WAS UP AND SHE HAD REMAINED IN HER ROOM AT THE TOP OF THE HOUSE UNTIL I NEEDED HER SERVICES + I SAT UNTIL AFTER ELEVEN IN THIS ROOM ABSORBED IN A BOOK + THEN I WALKED ROUND TO SEE THAT ALL WAS RIGHT BEFORE I WENT UPSTAIRS + IT WAS MY CUSTOM TO DO THIS MYSELF FOR AS I HAVE EXPLAINED SIR EUSTACE WAS NOT ALWAYS TO BE TRUSTED + I WENT INTO THE KITCHEN THE BUTLER'S PANTRY THE GUN ROOM THE BILLIARD ROOM THE DRAWING ROOM AND FINALLY THE DINING ROOM + AS I APPROACHED THE WINDOW WHICH IS COVERED WITH THICK CURTAINS I SUDDENLY FELT THE WIND BLOW UPON MY FACE AND REALIZED THAT IT WAS OPEN + I FLUNG THE CURTAIN ASIDE AND FOUND MYSELF FACE TO FACE WITH A BROAD SHOULDERED ELDERLY MAN WHO HAD JUST STEPPED INTO THE ROOM + THE WINDOW IS A LONG FRENCH ONE WHICH REALLY FORMS A DOOR LEADING TO THE LAWN + I HELD MY BEDROOM CANDLE LIT IN MY HAND AND BY ITS LIGHT BEHIND THE FIRST MAN I SAW TWO OTHERS WHO WERE IN THE ACT OF ENTERING + I STEPPED BACK BUT THE FELLOW WAS ON ME IN AN INSTANT + HE CAUGHT ME FIRST BY THE WRIST AND THEN BY THE THROAT + I OPENED MY MOUTH TO SCREAM BUT HE STRUCK ME A SAVAGE BLOW WITH HIS FIST OVER THE EYE AND FELLED ME TO THE GROUND + I MUST HAVE BEEN UNCONSCIOUS FOR A FEW MINUTES FOR WHEN I CAME TO MYSELF I FOUND THAT THEY HAD TORN DOWN THE BELL ROPE AND HAD SECURED ME TIGHTLY TO THE OAKEN CHAIR WHICH STANDS AT THE HEAD OF THE DINING TABLE + I WAS SO FIRMLY BOUND THAT I COULD NOT MOVE AND A HANDKERCHIEF ROUND MY MOUTH PREVENTED ME FROM UTTERING A SOUND + IT WAS AT THIS INSTANT THAT MY UNFORTUNATE HUSBAND ENTERED THE ROOM + HE HAD EVIDENTLY HEARD SOME SUSPICIOUS SOUNDS AND HE CAME PREPARED FOR SUCH A SCENE AS HE FOUND + HE WAS DRESSED IN NIGHTSHIRT AND TROUSERS WITH HIS FAVOURITE BLACKTHORN CUDGEL IN HIS HAND + HE RUSHED AT THE BURGLARS BUT ANOTHER IT WAS AN ELDERLY MAN STOOPED PICKED THE POKER OUT OF THE GRATE AND STRUCK HIM A HORRIBLE BLOW AS HE PASSED + HE FELL WITH A GROAN AND NEVER MOVED AGAIN + I FAINTED ONCE MORE BUT AGAIN IT COULD ONLY HAVE BEEN FOR A VERY FEW MINUTES DURING WHICH I WAS INSENSIBLE + WHEN I OPENED MY EYES ONE FOUND THAT THEY HAD COLLECTED THE SILVER FROM THE SIDEBOARD AND THEY HAD DRAWN A BOTTLE OF WINE WHICH STOOD THERE + EACH OF THEM HAD A GLASS IN HIS HAND + I HAVE ALREADY TOLD YOU HAVE I NOT THAT ONE WAS ELDERLY WITH A BEARD AND THE OTHERS YOUNG HAIRLESS LADS + THEY MIGHT HAVE BEEN A FATHER WITH HIS TWO SONS + THEY TALKED TOGETHER IN WHISPERS + THEN THEY CAME OVER AND MADE SURE THAT I WAS SECURELY BOUND + FINALLY THEY WITHDREW CLOSING THE WINDOW AFTER THEM + IT WAS QUITE A QUARTER OF AN HOUR BEFORE I GOT MY MOUTH FREE + WHEN I DID SO MY SCEAMS BROUGHT THE MAID TO MY ASSISTANCE + THE OTHER SERVANTS WERE SOON ALARMED AND WE SENT FOR THE LOCAL POLICE WHO INSTANTLY COMMUNICATED WITH LONDON + THAT IS REALLY ALL THAT I CAN TELL YOU GENTLEMEN AND I TRUST THAT IT WILL NOT BE NECESSARY FOR ME TO GO OVER SO PAINFUL A STORY AGAIN + ANY QUESTIONS MR. HOLMES ASKED HOPKINS + QUOTE I WILL NOT IMPOSE ANY FURTHER TAX UPON LADY BRACKENSTALL'S PATIENCE AND TIME QUOTE SAID HOLMES + BEFORE I GO INTO THE DININGROOM I SHOULD LIKE TO HEAR YOUR EXPERIENCE + HE LOOKED AT THE MAID + I SAW THE MEN BEFORE EVER THEY CAME INTO THE HOUSE SAID SHE + AS I SAT BY MY BEDROOM WINDOW I SAW THREE MEN IN THE MOONLIGHT DOWN BY THE LODGE GATE YONDER BUT I THOUGHT NOTHING OF IT AT THE TIME + IT WAS MORE THAN AN HOUR AFTER THAT I HEARD MY MISTRESS SCREAM AND DOWN I RAN TO FIND HER POOR LAMB JUST AS SHE SAYS AND HIM ON THE FLOOR WITH HIS BLOOD AND BRAINS OVER THE ROOM + IT WAS ENOUGH TO DRIVE A WOMAN OUT OF HER WITS TIED THERE AND HER VERY DRESS SPOTTED WITH HIM BUT SHE NEVER WANTED COURAGE DID MISS MARY FRASER OF ADELAIDE AND LADY BRACKENSTALL OF ABBEY GRANGE HASN'T LEARNED NEW WAYS + YOU'VE QUESTIONED HER LONG ENOUGH YOU GENTLEMEN AND NOW SHE IS COMING TO HER OWN ROOM JUST WITH HER OLD THERESA TO GET THE REST THAT SHE BADLY NEEDS + WITH A MOTHERLY TENDERNESS THE GAUNT WOMAN PUT HER ARM ROUND HER MISTRESS AND LED HER FROM THE ROOM + SHE HAS BEEN WITH HER ALL HER LIFE SAID HOPKINS + QUOTE NURSED HER AS A BABY AND CAME WITH HER TO ENGLAND WHEN THEY FIRST LEFT AUSTRALIA EIGHTEEN MONTHS AGO + THERESA WRIGHT IS HER NAME AND THE KIND OF MAID YOU DON'T PICK UP NOWADAYS + THIS WAY MR. HOLMES IF YOU PLEASE + THE KEEN INTEREST HAD PASSED OUT OF HOLMES'S EXPRESSIVE FACE AND I KNEW THAT WITH THE MYSTERY ALL THE CHARM OF THE CASE HAD DEPARTED + THERE STILL REMAINED AN ARREST TO BE EFFECTED BUT WHAT WERE THESE COMMONPLACE ROGUES THAT HE SHOULD SOIL HIS HANDS WITH THEM + AN ABSTRUSE AND LEARNED SPECIALIST WHO FINDS THAT HE HAS BEEN CALLED IN FOR A CASE OF MEASLES WOULD EXPERIENCE SOMETHING OF THE ANNOYANCE WHICH I READ IN MY FRIEND'S EYES + YET THE SCENE IN THE DINING ROOM OF THE ABBEY GRANGE WAS SUFFICIENTLY STRANGE TO ARREST HIS ATTENTION AND TO RECALL HIS WANING INTEREST + IT WAS A VERY LARGE AND HIGH CHAMBER WITH CARVED OAK CEILING OAKEN PANELLING AND A FINE ARRAY OF DEER'S HEADS AND ANCIENT WEAPONS AROUND THE WALLS + AT THE FURTHER END FROM THE DOOR WAS THE HIGH FRENCH WINDOW OF WHICH WE HAD HEARD + THREE SMALLER WINDOWS ON THE RIGHT HAND SIDE FILLED THE APARTMENT WITH COLD WINTER SUNSHINE + ON THE LEFT WAS A LARGE DEEP FIREPLACE WITH A MASSIVE OVERHANGING OAK MANTELPIECE + BESIDE THE FIREPLACE WAS A HEAVY OAKEN CHAIR WITH ARMS AND CROSSBARS AT THE BOTTOM + IN AND OUT THROUGH THE OPEN WOODWORK WAS WOVEN A CRIMSON CORD WHICH WAS SECURED AT EACH SIDE TO THE CROSSPIECE BELOW + IN RELEASING THE LADY THE CORD HAD BEEN SLIPPED OFF HER BUT THE KNOTS WITH WHICH IT HAD BEEN SECURED STILL REMAINED + THESE DETAILS ONLY STRUCK OUR ATTENTION AFTERWARDS FOR OUR THOUGHTS WERE ENTIRELY ABSORBED BY THE TERRIBLE OBJECT WHICH LAY UPON THE TIGERSKIN HEARTHRUG IN FRONT OF THE FIRE + IT WAS THE BODY OF A TALL WELL MADE MAN ABOUT FORTY YEARS OF AGE + HE LAY UPON HIS BACK HIS FACE UPTURNED WITH HIS WHITE TEETH GRINNING THROUGH HIS SHORT BLACK BEARD + HIS TWO CLENCHED HANDS WERE RAISED ABOVE HIS HEAD AND A HEAVY BLACKTHORN STICK LAY ACROSS THEM + HIS DARK HANDSOME AQUILINE FEATURES WERE CONVULSED INTO A SPASM OF VINDICTIVE HATRED WHICH HAD SET HIS DEAD FACE IN A TERRIBLY FIENDISH EXPRESSION + HE HAD EVIDENTLY BEEN IN HIS BED WHEN THE ALARM HAD BROKEN OUT FOR HE WORE A FOPPISH EMBROIDERED NIGHTSHIRT AND HIS BARE FEET PROJECTED FROM HIS TROUSERS + HIS HEAD WAS HORRIBLY INJURED AND THE WHOLE ROOM BORE WITNESS TO THE SAVAGE FEROCITY OF THE BLOW WHICH HAD STRUCK HIM DOWN + BESIDE HIM LAY THE HEAVY POKER BENT INTO A CURVE BY THE CONCUSSION + HOLMES EXAMINED BOTH IT AND THE INDESCRIBABLE WRECK WHICH IT HAD WROUGHT + HE MUST BE A POWERFUL MAN THIS ELDER RANDALL HE REMARKED + YES SAID HOPKINS + I HAVE SOME RECORD OF THE FELLOW AND HE IS A ROUGH CUSTOMER + YOU SHOULD HAVE NO DIFFICULTY IN GETTING HIM + QUOTE NOT THE SLIGHTEST + WE HAVE BEEN ON THE LOOK OUT FOR HIM AND THERE WAS SOME IDEA THAT HE HAD GOT AWAY TO AMERICA + NOW THAT WE KNOW THAT THE GANG ARE HERE I DON'T SEE HOW THEY CAN ESCAPE + WE HAVE THE NEWS AT EVERY SEAPORT ALREADY AND A REWARD WILL BE OFFERED BEFORE EVENING + WHAT BEATS ME IS HOW THEY COULD HAVE DONE SO MAD A THING KNOWING THAT THE LADY COULD DESCRIBE THEM AND THAT WE COULD NOT FAIL TO RECOGNIZE THE DESCRIPTION + EXACTLY + ONE WOULD HAVE EXPECTED THAT THEY WOULD SILENCE LADY BRACKENSTALL AS WELL + THEY MAY NOT HAVE REALIZED I SUGGESTED THAT SHE HAD RECOVERED FROM HER FAINT + THAT IS LIKELY ENOUGH + IF SHE SEEMED TO BE SENSELESS THEY WOULD NOT TAKE HER LIFE + WHAT ABOUT THIS POOR FELLOW HOPKINS + I SEEM TO HAVE HEARD SOME QUEER STORIES ABOUT HIM QUOTE + HE WAS A GOOD HEARTED MAN WHEN HE WAS SOBER BUT A PERFECT FIEND WHEN HE WAS DRUNK OR RATHER WHEN HE WAS HALF DRUNK FOR HE SELDOM REALLY WENT THE WHOLE WAY + THE DEVIL SEEMED TO BE IN HIM AT SUCH TIMES AND HE WAS CAPABLE OF ANYTHING + FROM WHAT I HEAR IN SPITE OF ALL HIS WEALTH AND HIS TITLE HE VERY NEARLY CAME OUR WAY ONCE OR TWICE + THERE WAS A SCANDAL ABOUT HIS DRENCHING A DOG WITH PETROLEUM AND SETTING IT ON FIRE HER LADYSHIP'S DOG TO MAKE THE MATTER WORSE AND THAT WAS ONLY HUSHED UP WITH DIFFICULTY + THEN HE THREW A DECANTER AT THAT MAID THERESA WRIGHT THERE WAS TROUBLE ABOUT THAT + ON THE WHOLE AND BETWEEN OURSELVES IT WILL BE A BRIGHTER HOUSE WITHOUT HIM + WHAT ARE YOU LOOKING AT NOW + HOLMES WAS DOWN ON HIS KNEES EXAMINING WITH GREAT ATTENTION THE KNOTS UPON THE RED CORD WITH WHICH THE LADY HAD BEEN SECURED + THEN HE CAREFULLY SCRUTINIZED THE BROKEN AND FRAYED END WHERE IT HAD SNAPPED OFF WHEN THE BURGLAR HAD DRAGGED IT DOWN + WHEN THIS WAS PULLED DOWN THE BELL IN THE KITCHEN MUST HAVE RUNG LOUDLY HE REMARKED + NO ONE COULD HEAR IT + THE KITCHEN STANDS RIGHT AT THE BACK OF THE HOUSE + QUOTE HOW DID THE BURGLAR KNOW NO ONE WOULD HEAR IT + HOW DARED HE PULL AT A BELLROPE IN THAT RECKLESS FASHION + EXACTLY MR. HOLMES EXACTLY + YOU PUT THE VERY QUESTION WHICH I HAVE ASKED MYSELF AGAIN AND AGAIN + THERE CAN BE NO DOUBT THAT THIS FELLOW MUST HAVE KNOWN THE HOUSE AND ITS HABITS + HE MUST HAVE PERFECTLY UNDERSTOOD THAT THE SERVANTS WOULD ALL BE IN BED AT THAT COMPARATIVELY EARLY HOUR AND THAT NO ONE COULD POSSIBLY HEAR A BELL RING IN THE KITCHEN + THEREFORE HE MUST HAVE BEEN IN CLOSE LEAGUE WITH ONE OF THE SERVANTS + SURELY THAT IS EVIDENT + BUT THERE ARE EIGHT SERVANTS AND ALL OF GOOD CHARACTER + OTHER THINGS BEING EQUAL SAID HOLMES ONE WOULD SUSPECT THE ONE AT WHOSE HEAD THE MASTER THREW A DECANTER + AND YET THAT WOULD INVOLVE TREACHERY TOWARDS THE MISTRESS TO WHOM THIS WOMAN SEEMS DEVOTED + WELL WELL THE POINT IS A MINOR ONE AND WHEN YOU HAVE RANDALL YOU WILL PROBABLY FIND NO DIFFICULTY IN SECURING HIS ACCOMPLICE + THE LADY'S STORY CERTAINLY SEEMS TO BE CORROBORATED IF IT NEEDED CORROBORATION BY EVERY DETAIL WHICH WE SEE BEFORE US + HE WALKED TO THE FRENCH WINDOW AND THREW IT OPEN + QUOTE THERE ARE NO SIGNS HERE BUT THE GROUND IS IRON HARD AND ONE WOULD NOT EXPECT THEM + I SEE THAT THESE CANDLES IN THE MANTELPIECE HAVE BEEN LIGHTED + YES IT WAS BY THEIR LIGHT AND THAT OF THE LADY'S BEDROOM CANDLE THAT THE BURGLARS SAW THEIR WAY ABOUT + AND WHAT DID THEY TAKE + WELL THEY DID NOT TAKE MUCH ONLY HALF A DOZEN ARTICLES OF PLATE OFF THE SIDEBOARD + LADY BRACKENSTALL THINKS THAT THEY WERE THEMSELVES SO DISTURBED BY THE DEATH OF SIR EUSTACE THAT THEY DID NOT RANSACK THE HOUSE AS THEY WOULD OTHERWISE HAVE DONE + QUOTE NO DOUBT THAT IS TRUE AND YET THEY DRANK SOME WINE I UNDERSTAND QUOTE + TO STEADY THEIR NERVES + EXACTLY + THESE THREE GLASSES UPON THE SIDEBOARD HAVE BEEN UNTOUCHED I SUPPOSE + YES AND THE BOTTLE STANDS AS THEY LEFT IT + LET US LOOK AT IT + HALLOA HALLOA + WHAT IS THIS QUOTE + THE THREE GLASSES WERE GROUPED TOGETHER ALL OF THEM TINGED WITH WINE AND ONE OF THEM CONTAINING SOME DREGS OF BEESWING + THE BOTTLE STOOD NEAR THEM TWO THIRDS FULL AND BESIDE IT LAY A LONG DEEPLY STAINED CORK + ITS APPEARANCE AND THE DUST UPON THE BOTTLE SHOWED THAT IT WAS NO COMMON VINTAGE WHICH THE MURDERERS HAD ENJOYED + A CHANGE HAD COME OVER HOLMES'S MANNER + HE HAD LOST HIS LISTLESS EXPRESSION AND AGAIN I SAW AN ALERT LIGHT OF INTEREST IN HIS KEEN DEEP SET EYES + HE RAISED THE CORK AND EXAMINED IT MINUTELY + HOW DID THEY DRAW IT HE ASKED + HOPKINS POINTED TO A HALF OPENED DRAWER + IN IT LAY SOME TABLE LINEN AND A LARGE CORKSCREW + DID LADY BRACKENSTALL SAY THAT SCREW WAS USED + NO YOU REMEMBER THAT SHE WAS SENSELESS AT THE MOMENT WHEN THE BOTTLE WAS OPENED + QUITE SO + AS A MATTER OF FACT THAT SCREW WAS NOT USED + THIS BOTTLE WAS OPENED BY A POCKET SCREW PROBABLY CONTAINED IN A KNIFE AND NOT MORE THAN AN INCH AND A HALF LONG + IF YOU WILL EXAMINE THE TOP OF THE CORK YOU WILL OBSERVE THAT THE SCREW WAS DRIVEN IN THREE TIMES BEFORE THE CORK WAS EXTRACTED + IT HAS NEVER BEEN TRANSFIXED + THIS LONG SCREW WOULD HAVE TRANSFIXED IT AND DRAWN IT UP WITH A SINGLE PULL + WHEN YOU CATCH THIS FELLOW YOU WILL FIND THAT HE HAS ONE OF THESE MULTIPLEX KNIVES IN HIS POSSESSION + QUOTE EXCELLENT QUOTE SAID HOPKINS + BUT THESE GLASSES DO PUZZLE ME I CONFESS + LADY BRACKENSTALL ACTUALLY SAW THE THREE MEN DRINKING DID SHE NOT + YES SHE WAS CLEAR ABOUT THAT + THEN THERE IS AN END OF IT + WHAT MORE IS TO BE SAID + AND YET YOU MUST ADMLT THAT THE THREE GLASSES ARE VERY REMARKABLE HOPKINS + WHAT + YOU SEE NOTHING REMARKABLE + WELL WELL LET IT PASS + PERHAPS WHEN A MAN HAS SPECIAL KNOWLEDGE AND SPECIAL POWERS LIKE MY OWN IT RATHER ENCOURAGES HIM TO SEEK A COMPLEX EXPLANATION WHEN A SIMPLER ONE IS AT HAND + OF COURSE IT MUST BE A MERE CHANCE ABOUT THE GLASSES + WELL GOOD MORNING HOPKINS + I DON'T SEE THAT I CAN BE OF ANY USE TO YOU AND YOU APPEAR TO HAVE YOUR CASE VERY CLEAR + YOU WILL LET ME KNOW WHEN RANDALL IS ARRESTED AND ANY FURTHER DEVELOPMENTS WHICH MAY OCCUR + I TRUST THAT I SHALL SOON HAVE TO CONGRATULATE YOU UPON A SUCCESSFUL CONCLUSION + COME WATSON I FANCY THAT WE MAY EMPLOY OURSELVES MORE PROFITABLY AT HOME + DURING OUR RETURN JOURNEY I COULD SEE BY HOLMES'S FACE THAT HE WAS MUCH PUZZLED BY SOMETHING WHICH HE HAD OBSERVED + EVERY NOW AND THEN BY AN EFFORT HE WOULD THROW OFF THE IMPRESSION AND TALK AS IF THE MATTER WERE CLEAR BUT THEN HIS DOUBTS WOULD SETTLE DOWN UPON HIM AGAIN AND HIS KNITTED BROWS AND ABSTRACTED EYES WOULD SHOW THAT HIS THOUGHTS HAD GONE BACK ONCE MORE TO THE GREAT DINING ROOM OF THE ABBEY GRANGE IN WHICH THIS MIDNIGHT TRAGEDY HAD BEEN ENACTED + AT LAST BY A SUDDEN IMPULSE JUST AS OUR TRAIN WAS CRAWLING OUT OF A SUBURBAN STATION HE SPRANG ON TO THE PLATFORM AND PULLED ME OUT AFTER HIM + QUOTE EXCUSE ME MY DEAR FELLOW QUOTE SAID HE AS WE WATCHED THE REAR CARRIAGES OF OUR TRAIN DISAPPEARING ROUND A CURVE QUOTE I AM SORRY TO MAKE YOU THE VICTIM OF WHAT MAY SEEM A MERE WHIM BUT ON MY LIFE WATSON I SIMPLY CAN'T LEAVE THAT CASE IN THIS CONDITION + EVERY INSTINCT THAT I POSSESS CRIES OUT AGAINST IT + IT'S WRONG IT'S ALL WRONG I'LL SWEAR THAT IT'S WRONG + AND YET THE LADY'S STORY WAS COMPLETE THE MAID'S CORROBORATION WAS SUFFICIENT THE DETAIL WAS FAIRLY EXACT + WHAT HAVE I TO PUT UP AGAINST THAT + THREE WINE GLASSES THAT IS ALL + BUT IF I HAD NOT TAKEN THINGS FOR GRANTED IF I HAD EXAMINED EVERYTHING WITH CARE WHICH I SHOULD HAVE SHOWN HAD WE APPROACHED THE CASE DE NOVO AND HAD NO CUT AND DRIED STORY TO WARP MY MIND SHOULD I NOT THEN HAVE FOUND SOMETHING MORE DEFINITE TO GO UPON + OF COURSE I SHOULD + SIT DOWN ON THIS BENCH WATSON UNTIL A TRAIN FOR CHISELHURST ARRIVES AND ALLOW ME TO LAY THE EVIDENCE BEFORE YOU IMPLORING YOU IN THE FIRST INSTANCE TO DISMISS FROM YOUR MIND THE IDEA THAT ANYTHING WHICH THE MAID OR HER MISTRESS MAY HAVE SAID MUST NECESSARILY BE TRUE + THE LADY'S CHARMING PERSONALITY MUST NOT BE PERMITTED TO WARP OUR JUDGMENT + SURELY THERE ARE DETAILS IN HER STORY WHICH IF WE LOOKED AT IN COLD BLOOD WOULD EXCITE OUR SUSPICION + THESE BURGLARS MADE A CONSIDERABLE HAUL AT SYDENHAM A FORTNIGHT AGO + SOME ACCOUNT OF THEM AND OF THEIR APPEARANCE WAS IN THE PAPERS AND WOULD NATURALLY OCCUR TO ANYONE WHO WISHED TO INVENT A STORY IN WHICH IMAGINARY ROBBERS SHOULD PLAY A PART + AS A MATTER OF FACT BURGLARS WHO HAVE DONE A GOOD STROKE OF BUSINESS ARE AS A RULE ONLY TOO GLAD TO ENJOY THE PROCEEDS IN PEACE AND QUIET WITHOUT EMBARKING ON ANOTHER PERILOUS UNDERTAKING + AGAIN IT IS UNUSUAL FOR BURGLARS TO OPERATE AT SO EARLY AN HOUR IT IS UNUSUAL FOR BURGLARS TO STRIKE A LADY TO PREVENT HER SCREAMING SINCE ONE WOULD IMAGINE THAT WAS THE SURE WAY TO MAKE HER SCREAM IT IS UNUSUAL FOR THEM TO COMMIT MURDER WHEN THEIR NUMBERS ARE SUFFICIENT TO OVERPOWER ONE MAN IT IS UNUSUAL FOR THEM TO BE CONTENT WITH A LIMITED PLUNDER WHEN THERE WAS MUCH MORE WITHIN THEIR REACH AND FINALLY I SHOULD SAY THAT IT WAS VERY UNUSUAL FOR SUCH MEN TO LEAVE A BOTTLE HALF EMPTY + HOW DO ALL THESE UNUSUALS STRIKE YOU WATSON + THEIR CUMULATIVE EFFECT IS CERTAINLY CONSIDERABLE AND YET EACH OF THEM IS QUITE POSSIBLE IN ITSELF + THE MOST UNUSUAL THING OF ALL AS IT SEEMS TO ME IS THAT THE LADY SHOULD BE TIED TO THE CHAIR + WELL I AM NOT SO CLEAR ABOUT THAT WATSON FOR IT IS EVIDENT THAT THEY MUST EITHER KILL HER OR ELSE SECURE HER IN SUCH A WAY THAT SHE COULD NOT GIVE IMMEDIATE NOTICE OF THEIR ESCAPE + BUT AT ANY RATE I HAVE SHOWN HAVE I NOT THAT THERE IS A CERTAIN ELEMENT OF IMPROBABILITY ABOUT THE LADY'S STORY + AND NOW ON THE TOP OF THIS COMES THE INCIDENT OF THE WINEGLASSES QUOTE + WHAT ABOUT THE WINEGLASSES + CAN YOU SEE THEM IN YOUR MIND'S EYE + I SEE THEM CLEARLY + WE ARE TOLD THAT THREE MEN DRANK FROM THEM + DOES THAT STRIKE YOU AS LIKELY + QUOTE WHY NOT + THERE WAS WINE IN EACH GLASS + EXACTLY BUT THERE WAS BEESWING ONLY IN ONE GLASS + YOU MUST HAVE NOTICED THAT FACT + WHAT DOES THAT SUGGEST TO YOUR MIND + THE LAST GLASS FILLED WOULD BE MOST LIKELY TO CONTAIN BEESWING + NOT AT ALL + THE BOTTLE WAS FULL OF IT AND IT IS INCONCEIVABLE THAT THE FIRST TWO GLASSES WERE CLEAR AND THE THIRD HEAVILY CHARGED WITH IT + THERE ARE TWO POSSIBLE EXPLANATIONS AND ONLY TWO + ONE IS THAT AFTER THE SECOND GLASS WAS FILLED THE BOTTLE WAS VIOLENTLY AGITATED AND SO THE THIRD GLASS RECEIVED THE BEESWING + THAT DOES NOT APPEAR PROBABLE + NO NO I AM SURE THAT I AM RIGHT QUOTE + WHAT THEN DO YOU SUPPOSE + THAT ONLY TWO GLASSES WERE USED AND THAT THE DREGS OF BOTH WERE POURED INTO A THIRD GLASS SO AS TO GIVE THE FALSE IMPRESSION THAT THREE PEOPLE HAD BEEN HERE + IN THAT WAY ALL THE BEESWING WOULD BE IN THE LAST GLASS WOULD IT NOT + YES I AM CONVINCED THAT THIS IS SO + BUT IF I HAVE HIT UPON THE TRUE EXPLANATION OF THIS ONE SMALL PHENOMENON THEN IN AN INSTANT THE CASE RISES FROM THE COMMONPLACE TO THE EXCEEDINGLY REMARKABLE FOR IT CAN ONLY MEAN THAT LADY BRACKENSTALL AND HER MAID HAVE DELIBERATELY LIED TO US THAT NOT ONE WORD OF THEIR STORY IS TO BE BELIEVED THAT THEY HAVE SOME VERY STRONG REASON FOR COVERING THE REAL CRIMINAL AND THAT WE MUST CONSTRUCT OUR CASE FOR OURSELVES WITHOUT ANY HELP FROM THEM + THAT IS THE MISSION WHICH NOW LIES BEFORE US AND HERE WATSON IS THE SYDENHAM TRAIN + THE HOUSEHOLD AT THE ABBEY GRANGE WERE MUCH SURPRISED AT OUR RETURN BUT SHERLOCK HOLMES FINDING THAT STANLEY HOPKINS HAD GONE OFF TO REPORT TO HEADQUARTERS TOOK POSSESSION OF THE DINING ROOM LOCKED THE DOOR UPON THE INSIDE AND DEVOTED HIMSELF FOR TWO HOURS TO ONE OF THOSE MINUTE AND LABORIOUS INVESTIGATIONS WHICH FORM THE SOLID BASIS ON WHICH HIS BRILLIANT EDIFICES OF DEDUCTION WERE REARED + SEATED IN A CORNER LIKE AN INTERESTED STUDENT WHO OBSERVES THE DEMONSTRATION OF HIS PROFESSOR I FOLLOWED EVERY STEP OF THAT REMARKABLE RESEARCH + THE WINDOW THE CURTAINS THE CARPET THE CHAIR THE ROPE EACH IN TURN WAS MINUTELY EXAMINED AND DULY PONDERED + THE BODY OF THE UNFORTUNATE BARONET HAD BEEN REMOVED AND ALL ELSE REMAINED AS WE HAD SEEN IT IN THE MORNING + FINALLY TO MY ASTONISHMENT HOLMES CLIMBED UP ON TO THE MASSIVE MANTELPIECE + FAR ABOVE HIS HEAD HUNG THE FEW INCHES OF RED CORD WHICH WERE STILL ATTACHED TO THE WIRE + FOR A LONG TIME HE GAZED UPWARD AT IT AND THEN IN AN ATTEMPT TO GET NEARER TO IT HE RESTED HIS KNEE UPON A WOODEN BRACKET ON THE WALL + THIS BROUGHT HIS HAND WITHIN A FEW INCHES OF THE BROKEN END OF THE ROPE BUT IT WAS NOT THIS SO MUCH AS THE BRACKET ITSELF WHICH SEEMED TO ENGAGE HIS ATTENTION + FINALLY HE SPRANG DOWN WITH AN EJACULATION OF SATISFACTION + IT'S ALL RIGHT WATSON SAID HE + WE HAVE GOT OUR CASE ONE OF THE MOST REMARKABLE IN OUR COLLECTION + BUT DEAR ME HOW SLOW WITTED I HAVE BEEN AND HOW NEARLY I HAVE COMMITTED THE BLUNDER OF MY LIFETIME + NOW I THINK THAT WITH A FEW MISSING LINKS MY CHAIN IS ALMOST COMPLETE QUOTE + YOU HAVE GOT YOUR MEN + MAN WATSON MAN + ONLY ONE BUT A VERY FORMIDABLE PERSON + STRONG AS A LION WITNESS THE BLOW THAT BENT THAT POKER + SIX FOOT THREE IN HEIGHT ACTIVE AS A SQUIRREL DEXTEROUS WITH HIS FINGERS FINALLY REMARKABLY QUICK WITTED FOR THIS WHOLE INGENIOUS STORY IS OF HIS CONCOCTION + YES WATSON WE HAVE COME UPON THE HANDIWORK OF A VERY REMARKABLE INDIVIDUAL + AND YET IN THAT BELL ROPE HE HAS GIVEN US A CLUE WHICH SHOULD NOT HAVE LEFT US A DOUBT + WHERE WAS THE CLUE + WELL IF YOU WERE TO PULL DOWN A BELL ROPE WATSON WHERE WOULD YOU EXPECT IT TO BREAK + SURELY AT THE SPOT WHERE IT IS ATTACHED TO THE WIRE + WHY SHOULD IT BREAK THREE INCHES FROM THE TOP AS THIS ONE HAS DONE QUOTE + BECAUSE IT IS FRAYED THERE + EXACTLY + THIS END WHICH WE CAN EXAMINE IS FRAYED + HE WAS CUNNING ENOUGH TO DO THAT WITH HIS KNIFE + BUT THE OTHER END IS NOT FRAYED + YOU COULD NOT OBSERVE THAT FROM HERE BUT IF YOU WERE ON THE MANTELPIECE YOU WOULD SEE THAT IT IS CUT CLEAN OFF WITHOUT ANY MARK OF FRAYING WHATEVER + YOU CAN RECONSTRUCT WHAT OCCURRED + THE MAN NEEDED THE ROPE + HE WOULD NOT TEAR IT DOWN FOR FEAR OF GIVING THE ALARM BY RINGING THE BELL + WHAT DID HE DO + HE SPRANG UP ON THE MANTELPIECE COULD NOT QUITE REACH IT PUT HIS KNEE ON THE BRACKET YOU WILL SEE THE IMPRESSION IN THE DUST AND SO GOT HIS KNIFE TO BEAR UPON THE CORD + I COULD NOT REACH THE PLACE BY AT LEAST THREE INCHES FROM WHICH I INFER THAT HE IS AT LEAST THREE INCHES A BIGGER MAN THAN I. LOOK AT THAT MARK UPON THE SEAT OF THE OAKEN CHAIR + WHAT IS IT + BLOOD + UNDOUBTEDLY IT IS BLOOD + THIS ALONE PUTS THE LADY'S STORY OUT OF COURT + IF SHE WERE SEATED ON THE CHAIR WHEN THE CRIME WAS DONE HOW COMES THAT MARK + NO NO SHE WAS PLACED IN THE CHAIR AFTER THE DEATH OF HER HUSBAND + I'LL WAGER THAT THE BLACK DRESS SHOWS A CORRESPONDING MARK TO THIS + WE HAVE NOT YET MET OUR WATERLOO WATSON BUT THIS IS OUR MARENGO FOR IT BEGINS IN DEFEAT AND ENDS IN VICTORY + I SHOULD LIKE NOW TO HAVE A FEW WORDS WITH THE NURSE THERESA + WE MUST BE WARY FOR A WHILE IF WE ARE TO GET THE INFORMATION WHICH WE WANT QUOTE + SHE WAS AN INTERESTING PERSON THIS STERN AUSTRALIAN NURSE TACITURN SUSPICIOUS UNGRACIOUS IT TOOK SOME TIME BEFORE HOLMES'S PLEASANT MANNER AND FRANK ACCEPTANCE OF ALL THAT SHE SAID THAWED HER INTO A CORRESPONDING AMIABILITY + SHE DID NOT ATTEMPT TO CONCEAL HER HATRED FOR HER LATE EMPLOYER + YES SIR IT IS TRUE THAT HE THREW THE DECANTER AT ME + I HEARD HIM CALL MY MISTRESS A NAME AND I TOLD HIM THAT HE WOULD NOT DARE TO SPEAK SO IF HER BROTHER HAD BEEN THERE + THEN IT WAS THAT HE THREW IT AT ME + HE MIGHT HAVE THROWN A DOZEN IF HE HAD BUT LEFT MY BONNY BIRD ALONE + HE WAS FOREVER ILL TREATING HER AND SHE TOO PROUD TO COMPLAIN + SHE WILL NOT EVEN TELL ME ALL THAT HE HAS DONE TO HER + SHE NEVER TOLD ME OF THOSE MARKS ON HER ARM THAT YOU SAW THIS MORNING BUT I KNOW VERY WELL THAT THEY COME FROM A STAB WITH A HATPIN + THE SLY DEVIL GOD FORGIVE ME THAT I SHOULD SPEAK OF HIM SO NOW THAT HE IS DEAD + BUT A DEVIL HE WAS IF EVER ONE WALKED THE EARTH + HE WAS ALL HONEY WHEN FIRST WE MET HIM ONLY EIGHTEEN MONTHS AGO AND WE BOTH FEEL AS IF IT WERE EIGHTEEN YEARS + SHE HAD ONLY JUST ARRIVED IN LONDON + YES IT WAS HER FIRST VOYAGE SHE HAD NEVER BEEN FROM HOME BEFORE + HE WON HER WITH HIS TITLE AND HIS MONEY AND HIS FALSE LONDON WAYS + IF SHE MADE A MISTAKE SHE HAS PAID FOR IT IF EVER A WOMAN DID + WHAT MONTH DID WE MEET HIM + WELL I TELL YOU IT WAS JUST AFTER WE ARRIVED + WE ARRIVED IN JUNE AND IT WAS JULY + THEY WERE MARRIED IN JANUARY OF LAST YEAR + YES SHE IS DOWN IN THE MORNINGROOM AGAIN AND I HAVE NO DOUBT SHE WILL SEE YOU BUT YOU MUST NOT ASK TOO MUCH OF HER FOR SHE HAS GONE THROUGH ALL THAT FLESH AND BLOOD WILL STAND + LADY BRACKENSTALL WAS RECLINING ON THE SAME COUCH BUT LOOKED BRIGHTER THAN BEFORE + THE MAID HAD ENTERED WITH US AND BEGAN ONCE MORE TO FOMENT THE BRUISE UPON HER MISTRESS'S BROW + I HOPE SAID THE LADY THAT YOU HAVE NOT COME TO CROSSEXAMINE ME AGAIN + NO HOLMES ANSWERED IN HIS GENTLEST VOICE I WILL NOT CAUSE YOU ANY UNNECESSARY TROUBLE LADY BRACKENSTALL AND MY WHOLE DESIRE IS TO MAKE THINGS EASY FOR YOU FOR I AM CONVINCED THAT YOU ARE A MUCH TRIED WOMAN + IF YOU WILL TREAT ME AS A FRIEND AND TRUST ME YOU MAY FIND THAT I WILL JUSTIFY YOUR TRUST + QUOTE WHAT DO YOU WANT ME TO DO QUOTE + TO TELL ME THE TRUTH + MR. HOLMES + NO NO LADY BRACKENSTALL IT IS NO USE + YOU MAY HAVE HEARD OF ANY LITTLE REPUTATION WHICH I POSSESS + I WILL STAKE IT ALL ON THE FACT THAT YOUR STORY IS AN ABSOLUTE FABRICATION + MISTRESS AND MAID WERE BOTH STARING AT HOLMES WITH PALE FACES AND FRIGHTENED EYES + YOU ARE AN IMPUDENT FELLOW CRIED THERESA + QUOTE DO YOU MEAN TO SAY THAT MY MISTRESS HAS TOLD A LIE QUOTE + HOLMES ROSE FROM HIS CHAIR + HAVE YOU NOTHING TO TELL ME + I HAVE TOLD YOU EVERYTHING + THINK ONCE MORE LADY BRACKENSTALL + WOULD IT NOT BE BETTER TO BE FRANK + FOR AN INSTANT THERE WAS HESITATION IN HER BEAUTIFUL FACE + THEN SOME NEW STRONG THOUGHT CAUSED IT TO SET LIKE A MASK + I HAVE TOLD YOU ALL I KNOW + HOLMES TOOK HIS HAT AND SHRUGGED HIS SHOULDERS + QUOTE I AM SORRY QUOTE HE SAID AND WITHOUT ANOTHER WORD WE LEFT THE ROOM AND THE HOUSE + THERE WAS A POND IN THE PARK AND TO THIS MY FRIEND LED THE WAY + IT WAS FROZEN OVER BUT A SINGLE HOLE WAS LEFT FOR THE CONVENIENCE OF A SOLITARY SWAN + HOLMES GAZED AT IT AND THEN PASSED ON TO THE LODGE GATE + THERE HE SCRIBBLED A SHORT NOTE FOR STANLEY HOPKINS AND LEFT IT WITH THE LODGE KEEPER + IT MAY BE A HIT OR IT MAY BE A MISS BUT WE ARE BOUND TO DO SOMETHING FOR FRIEND HOPKINS JUST TO JUSTIFY THIS SECOND VISIT SAID HE + I WILL NOT QUITE TAKE HIM INTO MY CONFIDENCE YET + I THINK OUR NEXT SCENE OF OPERATIONS MUST BE THE SHIPPING OFFICE OF THE ADELAIDE SOUTHAMPTON LINE WHICH STANDS AT THE END OF PALL MALL IF I REMEMBER RIGHT + THERE IS A SECOND LINE OF STEAMERS WHICH CONNECT SOUTH AUSTRALIA WITH ENGLAND BUT WE WILL DRAW THE LARGER COVER FIRST + HOLMES'S CARD SENT IN TO THE MANAGER ENSURED INSTANT ATTENTION AND HE WAS NOT LONG IN ACQUIRING ALL THE INFORMATION HE NEEDED + IN JUNE OF NINETY FIVE ONLY ONE OF THEIR LINE HAD REACHED A HOME PORT + IT WAS THE ROCK OF GIBRALTAR THEIR LARGEST AND BEST BOAT + A REFERENCE TO THE PASSENGER LIST SHOWED THAT MISS FRASER OF ADELAIDE WITH HER MAID HAD MADE THE VOYAGE IN HER + THE BOAT WAS NOW SOMEWHERE SOUTH OF THE SUEZ CANAL ON HER WAY TO AUSTRALIA + HER OFFICERS WERE THE SAME AS IN NINETY FIVE WITH ONE EXCEPTION + THE FIRST OFFICER MR. JACK CROCKER HAD BEEN MADE A CAPTAIN AND WAS TO TAKE CHARGE OF THEIR NEW SHIP THE BASS ROCK SAILING IN TWO DAYS' TIME FROM SOUTHAMPTON + HE LIVED AT SYDENHAM BUT HE WAS LIKELY TO BE IN THAT MORNING FOR INSTRUCTIONS IF WE CARED TO WAIT FOR HIM + NO MR. HOLMES HAD NO DESIRE TO SEE HIM BUT WOULD BE GLAD TO KNOW MORE ABOUT HIS RECORD AND CHARACTER + HIS RECORD WAS MAGNIFICENT + THERE WAS NOT AN OFFICER IN THE FLEET TO TOUCH HIM + AS TO HIS CHARACTER HE WAS RELIABLE ON DUTY BUT A WILD DESPERATE FELLOW OFF THE DECK OF HIS SHIP HOTHEADED EXCITABLE BUT LOYAL HONEST AND KIND HEARTED + THAT WAS THE PITH OF THE INFORMATION WITH WHICH HOLMES LEFT THE OFFICE OF THE ADELAIDE SOUTHAMPTON COMPANY + THENCE HE DROVE TO SCOTLAND YARD BUT INSTEAD OF ENTERING HE SAT IN HIS CAB WITH HIS BROWS DRAWN DOWN LOST IN PROFOUND THOUGHT + FINALLY HE DROVE ROUND TO THE CHARING CROSS TELEGRAPH OFFICE SENT OFF A MESSAGE AND THEN AT LAST WE MADE FOR BAKER STREET ONCE MORE + NO I COULDN'T DO IT WATSON SAID HE AS WE REENTERED OUR ROOM + ONCE THAT WARRANT WAS MADE OUT NOTHING ON EARTH WOULD SAVE HIM + ONCE OR TWICE IN MY CAREER I FEEL THAT I HAVE DONE MORE REAL HARM BY MY DISCOVERY OF THE CRIMINAL THAN EVER HE HAD DONE BY HIS CRIME + I HAVE LEARNED CAUTION NOW AND I HAD RATHER PLAY TRICKS WITH THE LAW OF ENGLAND THAN WITH MY OWN CONSCIENCE + LET US KNOW A LITTLE MORE BEFORE WE ACT QUOTE + BEFORE EVENING WE HAD A VISIT FROM INSPECTOR STANLEY HOPKINS + THINGS WERE NOT GOING VERY WELL WITH HIM + I BELIEVE THAT YOU ARE A WIZARD MR. HOLMES + I REALLY DO SOMETIMES THINK THAT YOU HAVE POWERS THAT ARE NOT HUMAN + NOW HOW ON EARTH COULD YOU KNOW THAT THE STOLEN SILVER WAS AT THE BOTTOM OF THAT POND + I DIDN'T KNOW IT + BUT YOU TOLD ME TO EXAMINE IT + YOU GOT IT THEN + QUOTE YES I GOT IT QUOTE + I AM VERY GLAD IF I HAVE HELPED YOU + BUT YOU HAVEN'T HELPED ME + YOU HAVE MADE THE AFFAIR FAR MORE DIFFICULT + WHAT SORT OF BURGLARS ARE THEY WHO STEAL SILVER AND THEN THROW IT INTO THE NEAREST POND + IT WAS CERTAINLY RATHER ECCENTRIC BEHAVIOUR + I WAS MERELY GOING ON THE IDEA THAT IF THE SILVER HAD BEEN TAKEN BY PERSONS WHO DID NOT WANT IT WHO MERELY TOOK IT FOR A BLIND AS IT WERE THEN THEY WOULD NATURALLY BE ANXIOUS TO GET RID OF IT + QUOTE BUT WHY SHOULD SUCH AN IDEA CROSS YOUR MIND QUOTE + WELL I THOUGHT IT WAS POSSIBLE + WHEN THEY CAME OUT THROUGH THE FRENCH WINDOW THERE WAS THE POND WITH ONE TEMPTING LITTLE HOLE IN THE ICE RIGHT IN FRONT OF THEIR NOSES + COULD THERE BE A BETTER HIDING PLACE + AH A HIDING PLACE THAT IS BETTER CRIED STANLEY HOPKINS + YES YES I SEE IT ALL NOW + IT WAS EARLY THERE WERE FOLK UPON THE ROADS THEY WERE AFRAID OF BEING SEEN WITH THE SILVER SO THEY SANK IT IN THE POND INTENDING TO RETURN FOR IT WHEN THE COAST WAS CLEAR + EXCELLENT MR. HOLMES THAT IS BETTER THAN YOUR IDEA OF A BLIND + QUOTE QUITE SO YOU HAVE GOT AN ADMIRABLE THEORY + I HAVE NO DOUBT THAT MY OWN IDEAS WERE QUITE WILD BUT YOU MUST ADMIT THAT THEY HAVE ENDED IN DISCOVERING THE SILVER + ' YES SIR YES + IT WAS ALL YOUR DOING + BUT I HAVE HAD A BAD SETBACK + A SETBACK + YES MR. HOLMES + THE RANDALL GANG WERE ARRESTED IN NEW YORK THIS MORNING + QUOTE DEAR ME HOPKINS + THAT IS CERTAINLY RATHER AGAINST YOUR THEORY THAT THEY COMMITTED A MURDER IN KENT LAST NIGHT + IT IS FATAL MR. HOLMES ABSOLUTELY FATAL + STILL THERE ARE OTHER GANGS OF THREE BESIDES THE RANDALLS OR IT MAY BE SOME NEW GANG OF WHICH THE POLICE HAVE NEVER HEARD + QUITE SO IT IS PERFECTLY POSSIBLE + WHAT ARE YOU OFF + QUOTE YES MR. HOLMES THERE IS NO REST FOR ME UNTIL I HAVE GOT TO THE BOTTOM OF THE BUSINESS + I SUPPOSE YOU HAVE NO HINT TO GIVE ME + I HAVE GIVEN YOU ONE + WHICH + WELL I SUGGESTED A BLIND + BUT WHY MR. HOLMES WHY + QUOTE AH THAT'S THE QUESTION OF COURSE + BUT I COMMEND THE IDEA TO YOUR MIND + YOU MIGHT POSSIBLY FIND THAT THERE WAS SOMETHING IN IT + YOU WON'T STOP FOR DINNER + WELL GOOD BYE AND LET US KNOW HOW YOU GET ON + DINNER WAS OVER AND THE TABLE CLEARED BEFORE HOLMES ALLUDED TO THE MATTER AGAIN + HE HAD LIT HIS PIPE AND HELD HIS SLIPPERED FEET TO THE CHEERFUL BLAZE OF THE FIRE + SUDDENLY HE LOOKED AT HIS WATCH + I EXPECT DEVELOPMENTS WATSON + WHEN ' + NOW WITHIN A FEW MINUTES + I DARE SAY YOU THOUGHT I ACTED RATHER BADLY TO STANLEY HOPKINS JUST NOW + QUOTE I TRUST YOUR JUDGMENT QUOTE + A VERY SENSIBLE REPLY WATSON + YOU MUST LOOK AT IT THIS WAY WHAT I KNOW IS UNOFFICIAL WHAT HE KNOWS IS OFFICIAL + I HAVE THE RIGHT TO PRIVATE JUDGMENT BUT HE HAS NONE + HE MUST DISCLOSE ALL OR HE IS A TRAITOR TO HIS SERVICE + IN A DOUBTFUL CASE I WOULD NOT PUT HIM IN SO PAINFUL A POSITION AND SO I RESERVE MY INFORMATION UNTIL MY OWN MIND IS CLEAR UPON THE MATTER + BUT WHEN WILL THAT BE + THE TIME HAS COME + YOU WILL NOW BE PRESENT AT THE LAST SCENE OF A REMARKABLE LITTLE DRAMA + THERE WAS A SOUND UPON THE STAIRS AND OUR DOOR WAS OPENED TO ADMIT AS FINE A SPECIMEN OF MANHOOD AS EVER PASSED THROUGH IT + HE WAS A VERY TALL YOUNG MAN GOLDEN MOUSTACHED BLUEEYED WITH A SKIN WHICH HAD BEEN BURNED BY TROPICAL SUNS AND A SPRINGY STEP WHICH SHOWED THAT THE HUGE FRAME WAS AS ACTIVE AS IT WAS STRONG + HE CLOSED THE DOOR BEHIND HIM AND THEN HE STOOD WITH CLENCHED HANDS AND HEAVING BREAST CHOKING DOWN SOME OVERMASTERING EMOTION + QUOTE SIT DOWN CAPTAIN CROCKER + YOU GOT MY TELEGRAM + OUR VISITOR SANK INTO AN ARMCHAIR AND LOOKED FROM ONE TO THE OTHER OF US WITH QUESTIONING EYES + I GOT YOW TELEGRAM AND I CAME AT THE HOUR YOU SAID + I HEARD THAT YOU HAD BEEN DOWN TO THE OFFICE + THERE WAS NO GETTING AWAY FROM YOU + LET'S HEAR THE WORST + WHAT ARE YOU GOING TO DO WITH ME + ARREST ME + SPEAK OUT MAN + YOU CAN'T SIT THERE AND PLAY WITH ME LIKE A CAT WITH A MOUSE + GIVE HIM A CIGAR SAID HOLMES + BITE ON THAT CAPTAIN CROCKER AND DON'T LET YOUR NERVES RUN AWAY WITH YOU + I SHOULD NOT SIT HERE SMOKING WITH YOU IF I THOUGHT THAT YOU WERE A COMMON CRIMINAL YOU MAY BE SURE OF THAT + BE FRANK WITH ME AND WE MAY DO SOME GOOD + PLAY TRICKS WITH ME AND I'LL CRUSH YOU QUOTE + WHAT DO YOU WISH ME TO DO + TO GIVE ME A TRUE ACCOUNT OF ALL THAT HAPPENED AT THE ABBEY GRANGE LAST NIGHT A TRUE ACCOUNT MIND YOU WITH NOTHING ADDED AND NOTHING TAKEN OFF + I KNOW SO MUCH ALREADY THAT IF YOU GO ONE INCH OFF THE STRAIGHT I'LL BLOW THIS POLICE WHISTLE FROM MY WINDOW AND THE AFFAIR GOES OUT OF MY HANDS FOREVER + THE SAILOR THOUGHT FOR A LITTLE + THEN HE STRUCK HIS LEG WITH HIS GREAT SUNBURNED HAND + I'LL CHANCE IT HE CRIED + I BELIEVE YOU ARE A MAN OF YOUR WORD AND A WHITE MAN AND I'LL TELL YOU THE WHOLE STORY + BUT ONE THING I WILL SAY FIRST + SO FAR AS I AM CONCERNED I REGRET NOTHING AND I FEAR NOTHING AND I WOULD DO IT ALL AGAIN AND BE PROUD OF THE JOB + DAMN THE BEAST IF HE HAD AS MANY LIVES AS A CAT HE WOULD OWE THEM ALL TO ME + BUT IT'S THE LADY MARY MARY FRASER FOR NEVER WILL I CALL HER BY THAT ACCURSED NAME + WHEN I THINK OF GETTING HER INTO TROUBLE I WHO WOULD GIVE MY LIFE JUST TO BRING ONE SMILE TO HER DEAR FACE IT'S THAT THAT TURNS MY SOUL INTO WATER + AND YET AND YET WHAT LESS COULD I DO + I'LL TELL YOU MY STORY GENTLEMEN AND THEN I'LL ASK YOU AS MAN TO MAN WHAT LESS COULD I DO + QUOTE I MUST GO BACK A BIT + YOU SEEM TO KNOW EVERYTHING SO I EXPECT THAT YOU KNOW THAT I MET HER WHEN SHE WAS A PASSENGER AND I WAS FIRST OFFICER OF THE ROCK OF GIBRALTAR + FROM THE FIRST DAY I MET HER SHE WAS THE ONLY WOMAN TO ME + EVERY DAY OF THAT VOYAGE I LOVED HER MORE AND MANY A TIME SINCE HAVE I KNEELED DOWN IN THE DARKNESS OF THE NIGHT WATCH AND KISSED THE DECK OF THAT SHIP BECAUSE I KNEW HER DEAR FEET HAD TROD IT + SHE WAS NEVER ENGAGED TO ME + SHE TREATED ME AS FAIRLY AS EVER A WOMAN TREATED A MAN + I HAVE NO COMPLAINT TO MAKE + IT WAS ALL LOVE ON MY SIDE AND ALL GOOD COMRADESHIP AND FRIENDSHIP ON HERS + WHEN WE PARTED SHE WAS A FREE WOMAN BUT I COULD NEVER AGAIN BE A FREE MAN + NEXT TIME I CAME BACK FROM SEA I HEARD OF HER MARRIAGE + WELL WHY SHOULDN'T SHE MARRY WHOM SHE LIKED + TITLE AND MONEY WHO COULD CARRY THEM BETTER THAN SHE + SHE WAS BORN FOR ALL THAT IS BEAUTIFUL AND DAINTY + I DIDN'T GRIEVE OVER HER MARRIAGE + I WAS NOT SUCH A SELFISH HOUND AS THAT + I JUST REJOICED THAT GOOD LUCK HAD COME HER WAY AND THAT SHE HAD NOT THROWN HERSELF AWAY ON A PENNILESS SAILOR + THAT'S HOW I LOVED MARY FRASER + WELL I NEVER THOUGHT TO SEE HER AGAIN BUT LAST VOYAGE I WAS PROMOTED AND THE NEW BOAT WAS NOT YET LAUNCHED SO I HAD TO WAIT FOR A COUPLE OF MONTHS WITH MY PEOPLE AT SYDENHAM + ONE DAY OUT IN A COUNTRY LANE I MET THERESA WRIGHT HER OLD MAID + SHE TOLD ME ALL ABOUT HER ABOUT HIM ABOUT EVERYTHING + I TELL YOU GENTLEMEN IT NEARLY DROVE ME MAD + THIS DRUNKEN HOUND THAT HE SHOULD DARE TO RAISE HIS HAND TO HER WHOSE BOOTS HE WAS NOT WORTHY TO LICK + I MET THERESA AGAIN + THEN I MET MARY HERSELF AND MET HER AGAIN + THEN SHE WOULD MEET ME NO MORE + BUT THE OTHER DAY I HAD A NOTICE THAT I WAS TO START ON MY VOYAGE WITHIN A WEEK AND I DETERMINED THAT I WOULD SEE HER ONCE BEFORE I LEFT + THERESA WAS ALWAYS MY FRIEND FOR SHE LOVED MARY AND HATED THIS VILLAIN ALMOST AS MUCH AS I DID + FROM HER I LEARNED THE WAYS OF THE HOUSE + MARY USED TO SIT UP READING IN HER OWN LITTLE ROOM DOWNSTAIRS + I CREPT ROUND THERE LAST NIGHT AND SCRATCHED AT THE WINDOW + AT FIRST SHE WOULD NOT OPEN TO ME BUT IN HER HEART I KNOW THAT NOW SHE LOVES ME AND SHE COULD NOT LEAVE ME IN THE FROSTY NIGHT + SHE WHISPERED TO ME TO COME ROUND TO THE BIG FRONT WINDOW AND I FOUND IT OPEN BEFORE ME SO AS TO LET ME INTO THE DINING ROOM + AGAIN I HEARD FROM HER OWN LIPS THINGS THAT MADE MY BLOOD BOIL AND AGAIN I CURSED THIS BRUTE WHO MISHANDLED THE WOMAN I LOVED + WELL GENTLEMEN I WAS STANDING WITH HER JUST INSIDE THE WINDOW IN ALL INNOCENCE AS GOD IS MY JUDGE WHEN HE RUSHED LIKE A MADMAN INTO THE ROOM CALLED HER THE VILEST NAME THAT A MAN COULD USE TO A WOMAN AND WELTED HER ACROSS THE FACE WITH THE STICK HE HAD IN HIS HAND + I HAD SPRUNG FOR THE POKER AND IT WAS A FAIR FIGHT BETWEEN US + SEE HERE ON MY ARM WHERE HIS FIRST BLOW FELL + THEN IT WAS MY TURN AND I WENT THROUGH HIM AS IF HE HAD BEEN A ROTTEN PUMPKIN + DO YOU THINK I WAS SORRY + NOT I IT WAS HIS LIFE OR MINE BUT FAR MORE THAN THAT IT WAS HIS LIFE OR HERS FOR HOW COULD I LEAVE HER IN THE POWER OF THIS MADMAN + THAT WAS HOW I KILLED HIM + WAS I WRONG + WELL THEN WHAT WOULD EITHER OF YOU GENTLEMEN HAVE DONE IF YOU HAD BEEN IN MY POSITION + SHE HAD SCREAMED WHEN HE STRUCK HER AND THAT BROUGHT OLD THERESA DOWN FROM THE ROOM ABOVE + THERE WAS A BOTTLE OF WINE ON THE SIDEBOARD AND I OPENED IT AND POURED A LITTLE BETWEEN MARY'S LIPS FOR SHE WAS HALF DEAD WITH SHOCK + THEN I TOOK A DROP MYSELF + THERESA WAS AS COOL AS ICE AND IT WAS HER PLOT AS MUCH AS MINE + WE MUST MAKE IT APPEAR THAT BURGLARS HAD DONE THE THING + THERESA KEPT ON REPEATING OUR STORY TO HER MISTRESS WHILE I SWARMED UP AND CUT THE ROPE OF THE BELL + THEN I LASHED HER IN HER CHAIR AND FRAYED OUT THE END OF THE ROPE TO MAKE IT LOOK NATURAL ELSE THEY WOULD WONDER HOW IN THE WORLD A BURGLAR COULD HAVE GOT UP THERE TO CUT IT + THEN I GATHERED UP A FEW PLATES AND POTS OF SILVER TO CARRY OUT THE IDEA OF THE ROBBERY AND THERE I LEFT THEM WITH ORDERS TO GIVE THE ALARM WHEN I HAD A QUARTER OF AN HOUR'S START + I DROPPED THE SILVER INTO THE POND AND MADE OFF FOR SYDENHAM FEELING THAT FOR ONCE IN MY LIFE I HAD DONE A REAL GOOD NIGHT'S WORK + AND THAT'S THE TRUTH AND THE WHOLE TRUTH MR. HOLMES IF IT COSTS ME MY NECK + HOLMES SMOKED FOR SOME TIME IN SILENCE + THEN HE CROSSED THE ROOM AND SHOOK OUR VISITOR BY THE HAND + QUOTE THAT'S WHAT I THINK QUOTE SAID HE + I KNOW THAT EVERY WORD IS TRUE FOR YOU HAVE HARDLY SAID A WORD WHICH I DID NOT KNOW + NO ONE BUT AN ACROBAT OR A SAILOR COULD HAVE GOT UP TO THAT BELL ROPE FROM THE BRACKET AND NO ONE BUT A SAILOR COULD HAVE MADE THE KNOTS WITH WHICH THE CORD WAS FASTENED TO THE CHAIR + ONLY ONCE HAD THIS LADY BEEN BROUGHT INTO CONTACT WITH SAILORS AND THAT WAS ON HER VOYAGE AND IT WAS SOMEONE OF HER OWN CLASS OF LIFE SINCE SHE WAS TRYING HARD TO SHIELD HIM AND SO SHOWING THAT SHE LOVED HIM + YOU SEE HOW EASY IT WAS FOR ME TO LAY MY HANDS UPON YOU WHEN ONCE I HAD STARTED UPON THE RIGHT TRAIL + I THOUGHT THE POLICE NEVER COULD HAVE SEEN THROUGH OUR DODGE + AND THE POLICE HAVEN'T NOR WILL THEY TO THE BEST OF MY BELIEF + NOW LOOK HERE CAPTAIN CROCKER THIS IS A VERY SERIOUS MATTER THOUGH I AM WILLING TO ADMIT THAT YOU ACTED UNDER THE MOST EXTREME PROVOCATION TO WHICH ANY MAN COULD BE SUBJECTED + I AM NOT SURE THAT IN DEFENCE OF YOUR OWN LIFE YOUR ACTION WILL NOT BE PRONOUNCED LEGITIMATE + HOWEVER THAT IS FOR A BRITISH JURY TO DECIDE + MEANWHILE I HAVE SO MUCH SYMPATHY FOR YOU THAT IF YOU CHOOSE TO DISAPPEAR IN THE NEXT TWENTY FOUR HOURS I WILL PROMISE YOU THAT NO ONE WILL HINDER YOU + QUOTE AND THEN IT WILL ALL COME OUT QUOTE + CERTAINLY IT WILL COME OUT + THE SAILOR FLUSHED WITH ANGER + WHAT SORT OF PROPOSAL IS THAT TO MAKE A MAN + I KNOW ENOUGH OF LAW TO UNDERSTAND THAT MARY WOULD BE HELD AS ACCOMPLICE + DO YOU THINK I WOULD LEAVE HER ALONE TO FACE THE MUSIC WHILE I SLUNK AWAY + NO SIR LET THEM DO THEIR WORST UPON ME BUT FOR HEAVEN'S SAKE MR. HOLMES FIND SOME WAY OF KEEPING MY POOR MARY OUT OF THE COURTS + HOLMES FOR A SECOND TIME HELD OUT HIS HAND TO THE SAILOR + I WAS ONLY TESTING YOU AND YOU RING TRUE EVERY TIME + WELL IT IS A GREAT RESPONSIBILITY THAT I TAKE UPON MYSELF BUT I HAVE GIVEN HOPKINS AN EXCELLENT HINT AND IF HE CAN'T AVAIL HIMSELF OF IT I CAN DO NO MORE + SEE HERE CAPTAIN CROCKER WE'LL DO THIS IN DUE FORM OF LAW + YOU ARE THE PRISONER + WATSON YOU ARE A BRITISH JURY AND I NEVER MET A MAN WHO WAS MORE EMINENTLY FITTED TO REPRESENT ONE + I AM THE JUDGE + NOW GENTLEMAN OF THE JURY YOU HAVE HEARD THE EVIDENCE + DO YOU FIND THE PRISONER GUILTY OR NOT GUILTY + QUOTE NOT GUILTY MY LORD QUOTE SAID I + VOX POPULI VOX DEI + YOU ARE ACQUITTED CAPTAIN CROCKER + SO LONG AS THE LAW DOES NOT FIND SOME OTHER VICTIM YOU ARE SAFE FROM ME + COME BACK TO THIS LADY IN A YEAR AND MAY HER FUTURE AND YOURS JUSTIFY US IN THE JUDGMENT WHICH WE HAVE PRONOUNCED THIS NIGHT diff --git a/samples/LMTutorial/train/beryl_coronet.txt b/samples/LMTutorial/train/beryl_coronet.txt new file mode 100755 index 0000000..8c2cccb --- /dev/null +++ b/samples/LMTutorial/train/beryl_coronet.txt @@ -0,0 +1,604 @@ + QUOTE HOLMES QUOTE SAID I AS I STOOD ONE MORNING IN OUR BOW WINDOW LOOKING DOWN THE STREET QUOTE HERE IS A MADMAN COMING ALONG + IT SEEMS RATHER SAD THAT HIS RELATIVES SHOULD ALLOW HIM TO COME OUT ALONE + MY FRIEND ROSE LAZILY FROM HIS ARMCHAIR AND STOOD WITH HIS HANDS IN THE POCKETS OF HIS DRESSING GOWN LOOKING OVER MY SHOULDER + IT WAS A BRIGHT CRISP FEBRUARY MORNING AND THE SNOW OF THE DAY BEFORE STILL LAY DEEP UPON THE GROUND SHIMMERING BRIGHTLY IN THE WINTRY SUN + DOWN THE CENTRE OF BAKER STREET IT HAD BEEN PLOUGHED INTO A BROWN CRUMBLY BAND BY THE TRAFFIC BUT AT EITHER SIDE AND ON THE HEAPED UP EDGES OF THE FOOT PATHS IT STILL LAY AS WHITE AS WHEN IT FELL + THE GRAY PAVEMENT HAD BEEN CLEANED AND SCRAPED BUT WAS STILL DANGEROUSLY SLIPPERY SO THAT THERE WERE FEWER PASSENGERS THAN USUAL + INDEED FROM THE DIRECTION OF THE METROPOLITAN STATION NO ONE WAS COMING SAVE THE SINGLE GENTLEMAN WHOSE ECCENTRIC CONDUCT HAD DRAWN MY ATTENTION + HE WAS A MAN OF ABOUT FIFTY TALL PORTLY AND IMPOSING WITH A MASSIVE STRONGLY MARKED FACE AND A COMMANDING FIGURE + HE WAS DRESSED IN A SOMBRE YET RICH STYLE IN BLACK FROCK COAT SHINING HAT NEAT BROWN GAITERS AND WELL CUT PEARL GRAY TROUSERS + YET HIS ACTIONS WERE IN ABSURD CONTRAST TO THE DIGNITY OF HIS DRESS AND FEATURES FOR HE WAS RUNNING HARD WITH OCCASIONAL LITTLE SPRINGS SUCH AS A WEARY MAN GIVES WHO IS LITTLE ACCUSTOMED TO SET ANY TAX UPON HIS LEGS + AS HE RAN HE JERKED HIS HANDS UP AND DOWN WAGGLED HIS HEAD AND WRITHED HIS FACE INTO THE MOST EXTRAORDINARY CONTORTIONS + WHAT ON EARTH CAN BE THE MATTER WITH HIM + I ASKED + HE IS LOOKING UP AT THE NUMBERS OF THE HOUSES + I BELIEVE THAT HE IS COMING HERE SAID HOLMES RUBBING HIS HANDS + HERE + QUOTE YES I RATHER THINK HE IS COMING TO CONSULT ME PROFESSIONALLY + I THINK THAT I RECOGNIZE THE SYMPTOMS + HA DID I NOT TELL YOU + AS HE SPOKE THE MAN PUFFING AND BLOWING RUSHED AT OUR DOOR AND PULLED AT OUR BELL UNTIL THE WHOLE HOUSE RESOUNDED WITH THE CLANGING + A FEW MOMENTS LATER HE WAS IN OUR ROOM STILL PUFFING STILL GESTICULATING BUT WITH SO FIXED A LOOK OF GRIEF AND DESPAIR IN HIS EYES THAT OUR SMILES WERE TURNED IN AN INSTANT TO HORROR AND PITY + FOR A WHILE HE COULD NOT GET HIS WORDS OUT BUT SWAYED HIS BODY AND PLUCKED AT HIS HAIR LIKE ONE WHO HAS BEEN DRIVEN TO THE EXTREME LIMITS OF HIS REASON + THEN SUDDENLY SPRINGING TO HIS FEET HE BEAT HIS HEAD AGAINST THE WALL WITH SUCH FORCE THAT WE BOTH RUSHED UPON HIM AND TORE HIM AWAY TO THE CENTRE OF THE ROOM + SHERLOCK HOLMES PUSHED HIM DOWN INTO THE EASY CHAIR AND SITTING BESIDE HIM PATTED HIS HAND AND CHATTED WITH HIM IN THE EASY SOOTHING TONES WHICH HE KNEW SO WELL HOW TO EMPLOY + YOU HAVE COME TO ME TO TELL YOUR STORY HAVE YOU NOT SAID HE + YOU ARE FATIGUED WITH YOUR HASTE + PRAY WAIT UNTIL YOU HAVE RECOVERED YOURSELF AND THEN I SHALL BE MOST HAPPY TO LOOK INTO ANY LITTLE PROBLEM WHICH YOU MAY SUBMIT TO ME + THE MAN SAT FOR A MINUTE OR MORE WITH A HEAVING CHEST FIGHTING AGAINST HIS EMOTION + THEN HE PASSED HIS HANDKERCHIEF OVER HIS BROW SET HIS LIPS TIGHT AND TURNED HIS FACE TOWARDS US + NO DOUBT YOU THINK ME MAD SAID HE + QUOTE I SEE THAT YOU HAVE HAD SOME GREAT TROUBLE QUOTE RESPONDED HOLMES + COD KNOWS I HAVE A TROUBLE WHICH IS ENOUGH TO UNSEAT MY REASON SO SUDDEN AND SO TERRIBLE IS IT + PUBLIC DISGRACE I MIGHT HAVE FACED ALTHOUGH I AM A MAN WHOSE CHARACTER HAS NEVER YET BORNE A STAIN + PRIVATE AFFLICTION ALSO IS THE LOT OF EVERY MAN BUT THE TWO COMING TOGETHER AND IN SO FRIGHTFUL A FORM HAVE BEEN ENOUGH TO SHAKE MY VERY SOUL + BESIDES IT IS NOT I ALONE + THE VERY NOBLEST IN THE LAND MAY SUFFER UNLESS SOME WAY BE FOUND OUT OF THIS HORRIBLE AFFAIR + PRAY COMPOSE YOURSELF SIR SAID HOLMES AND LET ME HAVE A CLEAR ACCOUNT OF WHO YOU ARE AND WHAT IT IS THAT HAS BEFALLEN YOU + MY NAME ANSWERED OUR VISITOR IS PROBABLY FAMILIAR TO YOUR EARS + I AM ALEXANDER HOLDER OF THE BANKING FIRM OF HOLDER AND STEVENSON OF THREADNEEDLE STREET + THE NAME WAS INDEED WELL KNOWN TO US AS BELONGING TO THE SENIOR PARTNER IN THE SECOND LARGEST PRIVATE BANKING CONCERN IN THE CITY OF LONDON + WHAT COULD HAVE HAPPENED THEN TO BRING ONE OF THE FOREMOST CITIZENS OF LONDON TO THIS MOST PITIABLE PASS + WE WAITED ALL CURIOSITY UNTIL WITH ANOTHER EFFORT HE BRACED HIMSELF TO TELL HIS STORY + QUOTE I FEEL THAT TIME IS OF VALUE QUOTE SAID HE QUOTE THAT IS WHY I HASTENED HERE WHEN THE POLICE INSPECTOR SUGGESTED THAT I SHOULD SECURE YOUR COOPERATION + I CAME TO BAKER STREET BY THE UNDERGROUND AND HURRIED FROM THERE ON FOOT FOR THE CABS GO SLOWLY THROUGH THIS SNOW + THAT IS WHY I WAS SO OUT OF BREATH FOR I AM A MAN WHO TAKES VERY LITTLE EXERCISE + I FEEL BETTER NOW AND I WILL PUT THE FACTS BEFORE YOU AS SHORTLY AND YET AS CLEARLY AS I CAN + IT IS OF COURSE WELL KNOWN TO YOU THAT IN A SUCCESSFUL BANKING BUSINESS AS MUCH DEPENDS UPON OUR BEING ABLE TO FIND REMUNERATIVE INVESTMENTS FOR OUR FUNDS AS UPON OUR INCREASING OUR CONNECTION AND THE NUMBER OF OUR DEPOSITORS + ONE OF OUR MOST LUCRATIVE MEANS OF LAYING OUT MONEY IS IN THE SHAPE OF LOANS WHERE THE SECURITY IS UNIMPEACHABLE + WE HAVE DONE A GOOD DEAL IN THIS DIRECTION DURING THE LAST FEW YEARS AND THERE ARE MANY NOBLE FAMILIES TO WHOM WE HAVE ADVANCED LARGE SUMS UPON THE SECURITY OF THEIR PICTURES LIBRARIES OR PLATE + YESTERDAY MORNING I WAS SEATED IN MY OFFICE AT THE BANK WHEN A CARD WAS BROUGHT IN TO ME BY ONE OF THE CLERKS + I STARTED WHEN I SAW THE NAME FOR IT WAS THAT OF NONE OTHER THAN WELL PERHAPS EVEN TO YOU I HAD BETTER SAY NO MORE THAN THAT IT WAS A NAME WHICH IS A HOUSEHOLD WORD ALL OVER THE EARTH ONE OF THE HIGHEST NOBLEST MOST EXALTED NAMES IN ENGLAND + I WAS OVERWHELMED BY THE HONOUR AND ATTEMPTED WHEN HE ENTERED TO SAY SO BUT HE PLUNGED AT ONCE INTO BUSINESS WITH THE AIR OF A MAN WHO WISHES TO HURRY QUICKLY THROUGH A DISAGREEABLE TASK + MR. HOLDER SAID HE I HAVE BEEN INFORMED THAT YOU ARE IN THE HABIT OF ADVANCING MONEY + THE FIRM DOES SO WHEN THE SECURITY IS GOOD + I ANSWERED + IT IS ABSOLUTELY ESSENTIAL TO ME SAID HE THAT I SHOULD HAVE FIFTY THOUSAND POUNDS AT ONCE + I COULD OF COURSE BORROW SO TRIFLING A SUM TEN TIMES OVER FROM MY FRIENDS BUT I MUCH PREFER TO MAKE IT A MATTER OF BUSINESS AND TO CARRY OUT THAT BUSINESS MYSELF + IN MY POSITION YOU CAN READILY UNDERSTAND THAT IT IS UNWISE TO PLACE ONE'S SELF UNDER OBLIGATIONS + FOR HOW LONG MAY I ASK DO YOU WANT THIS SUM + I ASKED + QUOTE NEXT MONDAY I HAVE A LARGE SUM DUE TO ME AND I SHALL THEN MOST CERTAINLY REPAY WHAT YOU ADVANCE WITH WHATEVER INTEREST YOU THINK IT RIGHT TO CHARGE + BUT IT IS VERY ESSENTIAL TO ME THAT THE MONEY SHOULD BE PAID AT ONCE + I SHOULD BE HAPPY TO ADVANCE IT WITHOUT FURTHER PARLEY FROM MY OWN PRIVATE PURSE SAID I WERE IT NOT THAT THE STRAIN WOULD BE RATHER MORE THAN IT COULD BEAR + IF ON THE OTHER HAND I AM TO DO IT IN THE NAME OF THE FIRM THEN IN JUSTICE TO MY PARTNER I MUST INSIST THAT EVEN IN YOUR CASE EVERY BUSINESSLIKE PRECAUTION SHOULD BE TAKEN + I SHOULD MUCH PREFER TO HAVE IT SO SAID HE RAISING UP A SQUARE BLACK MOROCCO CASE WHICH HE HAD LAID BESIDE HIS CHAIR + YOU HAVE DOUBTLESS HEARD OF THE BERYL CORONET + ONE OF THE MOST PRECIOUS PUBLIC POSSESSIONS OF THE EMPIRE SAID I + PRECISELY + HE OPENED THE CASE AND THERE IMBEDDED IN SOFT FLESH COLOURED VELVET LAY THE MAGNIFICENT PIECE OF JEWELLERY WHICH HE HAD NAMED + THERE ARE THIRTY NINE ENORMOUS BERYLS SAID HE AND THE PRICE OF THE GOLD CHASING IS INCALCULABLE + THE LOWEST ESTIMATE WOULD PUT THE WORTH OF THE CORONET AT DOUBLE THE SUM WHICH I HAVE ASKED + I AM PREPARED TO LEAVE IT WITH YOU AS MY SECURITY + I TOOK THE PRECIOUS CASE INTO MY HANDS AND LOOKED IN SOME PERPLEXITY FROM IT TO MY ILLUSTRIOUS CLIENT + QUOTE YOU DOUBT ITS VALUE HE ASKED + NOT AT ALL + I ONLY DOUBT + THE PROPRIETY OF MY LEAVING IT + YOU MAY SET YOUR MIND AT REST ABOUT THAT + I SHOULD NOT DREAM OF DOING SO WERE IT NOT ABSOLUTELY CERTAIN THAT I SHOULD BE ABLE IN FOUR DAYS TO RECLAIM IT + IT IS A PURE MATTER OF FORM + IS THE SECURITY SUFFICIENT + AMPLE + YOU UNDERSTAND MR. HOLDER THAT I AM GIVING YOU A STRONG PROOF OF THE CONFIDENCE WHICH I HAVE IN YOU FOUNDED UPON ALL THAT I HAVE HEARD OF YOU + I RELY UPON YOU NOT ONLY TO BE DISCREET AND TO REFRAIN FROM ALL GOSSIP UPON THE MATTER BUT ABOVE ALL TO PRESERVE THIS CORONET WITH EVERY POSSIBLE PRECAUTION BECAUSE I NEED NOT SAY THAT A GREAT PUBLIC SCANDAL WOULD BE CAUSED IF ANY HARM WERE TO BEFALL IT + ANY INJURY TO IT WOULD BE ALMOST AS SERIOUS AS ITS COMPLETE LOSS FOR THERE ARE NO BERYLS IN THE WORLD TO MATCH THESE AND IT WOULD BE IMPOSSIBLE TO REPLACE THEM + I LEAVE IT WITH YOU HOWEVER WITH EVERY CONFIDENCE AND I SHALL CALL FOR IT IN PERSON ON MONDAY MORNING + SEEING THAT MY CLIENT WAS ANXIOUS TO LEAVE I SAID NO MORE BUT CALLING FOR MY CASHIER I ORDERED HIM TO PAY OVER FIFTY ONE THOUSAND POUND NOTES + WHEN I WAS ALONE ONCE MORE HOWEVER WITH THE PRECIOUS CASE LYING UPON THE TABLE IN FRONT OF ME I COULD NOT BUT THINK WITH SOME MISGIVINGS OF THE IMMENSE RESPONSIBILITY WHICH IT ENTAILED UPON ME + THERE COULD BE NO DOUBT THAT AS IT WAS A NATIONAL POSSESSION A HORRIBLE SCANDAL WOULD ENSUE IF ANY MISFORTUNE SHOULD OCCUR TO IT + I ALREADY REGRETTED HAVING EVER CONSENTED TO TAKE CHARGE OF IT + HOWEVER IT WAS TOO LATE TO ALTER THE MATTER NOW SO I LOCKED IT UP IN MY PRIVATE SAFE AND TURNED ONCE MORE TO MY WORK + QUOTE WHEN EVENING CAME I FELT THAT IT WOULD BE AN IMPRUDENCE TO LEAVE SO PRECIOUS A THING IN THE OFFICE BEHIND ME + BANKERS' SAFES HAD BEEN FORCED BEFORE NOW AND WHY SHOULD NOT MINE BE + IF SO HOW TERRIBLE WOULD BE THE POSITION IN WHICH I SHOULD FIND MYSELF + I DETERMINED THEREFORE THAT FOR THE NEXT FEW DAYS I WOULD ALWAYS CARRY THE CASE BACKWARD AND FORWARD WITH ME SO THAT IT MIGHT NEVER BE REALLY OUT OF MY REACH + WITH THIS INTENTION I CALLED A CAB AND DROVE OUT TO MY HOUSE AT STREATHAM CARRYING THE JEWEL WITH ME + I DID NOT BREATHE FREELY UNTIL I HAD TAKEN IT UPSTAIRS AND LOCKED IT IN THE BUREAU OF MY DRESSING ROOM + AND NOW A WORD AS TO MY HOUSEHOLD MR. HOLMES FOR I WISH YOU TO THOROUGHLY UNDERSTAND THE SITUATION + MY GROOM AND MY PAGE SLEEP OUT OF THE HOUSE AND MAY BE SET ASIDE ALTOGETHER + I HAVE THREE MAID SERVANTS WHO HAVE BEEN WITH ME A NUMBER OF YEARS AND WHOSE ABSOLUTE RELIABILITY IS QUITE ABOVE SUSPICION + ANOTHER LUCY PARR THE SECOND WAITING MAID HAS ONLY BEEN IN MY SERVICE A FEW MONTHS + SHE CAME WITH AN EXCELLENT CHARACTER HOWEVER AND HAS ALWAYS GIVEN ME SATISFACTION + SHE IS A VERY PRETTY GIRL AND HAS ATTRACTED ADMIRERS WHO HAVE OCCASIONALLY HUNG ABOUT THE PLACE + THAT IS THE ONLY DRAWBACK WHICH WE HAVE FOUND TO HER BUT WE BELIEVE HER TO BE A THOROUGHLY GOOD GIRL IN EVERY WAY + SO MUCH FOR THE SERVANTS + MY FAMILY ITSELF IS SO SMALL THAT IT WILL NOT TAKE ME LONG TO DESCRIBE IT + I AM A WIDOWER AND HAVE AN ONLY SON ARTHUR + HE HAS BEEN A DISAPPOINTMENT TO ME MR. HOLMES A GRIEVOUS DISAPPOINTMENT + I HAVE NO DOUBT THAT I AM MYSELF TO BLAME + PEOPLE TELL ME THAT I HAVE SPOILED HIM + VERY LIKELY I HAVE + WHEN MY DEAR WIFE DIED I FELT THAT HE WAS ALL I HAD TO LOVE + I COULD NOT BEAR TO SEE THE SMILE FADE EVEN FOR A MOMENT FROM HIS FACE + I HAVE NEVER DENIED HIM A WISH + PERHAPS IT WOULD HAVE BEEN BETTER FOR BOTH OF US HAD I BEEN STERNER BUT I MEANT IT FOR THE BEST + IT WAS NATURALLY MY INTENTION THAT HE SHOULD SUCCEED ME IN MY BUSINESS BUT HE WAS NOT OF A BUSINESS TURN + HE WAS WILD WAYWARD AND TO SPEAK THE TRUTH I COULD NOT TRUST HIM IN THE HANDLING OF LARGE SUMS OF MONEY + WHEN HE WAS YOUNG HE BECAME A MEMBER OF AN ARISTOCRATIC CLUB AND THERE HAVING CHARMING MANNERS HE WAS SOON THE INTIMATE OF A NUMBER OF MEN WITH LONG PURSES AND EXPENSIVE HABITS + HE LEARNED TO PLAY HEAVILY AT CARDS AND TO SQUANDER MONEY ON THE TURF UNTIL HE HAD AGAIN AND AGAIN TO COME TO ME AND IMPLORE ME TO GIVE HIM AN ADVANCE UPON HIS ALLOWANCE THAT HE MIGHT SETTLE HIS DEBTS OF HONOUR + HE TRIED MORE THAN ONCE TO BREAK AWAY FROM THE DANGEROUS COMPANY WHICH HE WAS KEEPING BUT EACH TIME THE INFLUENCE OF HIS FRIEND SIR GEORGE BURNWELL WAS ENOUGH TO DRAW HIM BACK AGAIN + AND. INDEED I COULD NOT WONDER THAT SUCH A MAN AS SIR GEORGE BUMWELL SHOULD GAIN AN INFLUENCE OVER HIM FOR HE HAS FREQUENTLY BROUGHT HIM TO MY HOUSE AND I HAVE FOUND MYSELF THAT I COULD HARDLY RESIST THE FASCINATION OF HIS MANNER + HE IS OLDER THAN ARTHUR A MAN OF THE WORLD TO HIS FINGER TIPS ONE WHO HAD BEEN EVERYWHERE SEEN EVERYTHING A BRILLIANT TALKER AND A MAN OF GREAT PERSONAL BEAUTY + YET WHEN I THINK OF HIM IN COLD BLOOD FAR AWAY FROM THE GLAMOUR OF HIS PRESENCE I AM CONVINCED FROM HIS CYNICAL SPEECH AND THE LOOK WHICH I HAVE CAUGHT IN HIS EYES THAT HE IS ONE WHO SHOULD BE DEEPLY DISTRUSTED + SO I THINK AND SO TOO THINKS MY LITTLE MARY WHO HAS A WOMAN'S QUICK INSIGHT INTO CHARACTER + AND NOW THERE IS ONLY SHE TO BE DESCRIBED + SHE IS MY NIECE BUT WHEN MY BROTHER DIED FIVE YEARS AGO AND LEFT HER ALONE IN THE WORLD I ADOPTED HER AND HAVE LOOKED UPON HER EVER SINCE AS MY DAUGHTER + SHE IS A SUNBEAM IN MY HOUSE SWEET LOVING BEAUTIFUL A WONDERFUL MANAGER AND HOUSEKEEPER YET AS TENDER AND QUIET AND GENTLE AS A WOMAN COULD BE + SHE IS MY RIGHT HAND + I DO NOT KNOW WHAT I COULD DO WITHOUT HER + IN ONLY ONE MATTER HAS SHE EVER GONE AGAINST MY WISHES + TWICE MY BOY HAS ASKED HER TO MARRY HIM FOR HE LOVES HER DEVOTEDLY BUT EACH TIME SHE HAS REFUSED HIM + I THINK THAT IF ANYONE COULD HAVE DRAWN HIM INTO THE RIGHT PATH IT WOULD HAVE BEEN SHE AND THAT HIS MARRIAGE MIGHT HAVE CHANGED HIS WHOLE LIFE BUT NOW ALAS IT IS TOO LATE FOREVER TOO LATE + QUOTE NOW MR. HOLMES YOU KNOW THE PEOPLE WHO LIVE UNDER MY ROOF AND I SHALL CONTINUE WITH MY MISERABLE STORY + WHEN WE WERE TAKING COFFEE IN THE DRAWING ROOM THAT NIGHT AFTER DINNER I TOLD ARTHUR AND MARY MY EXPERIENCE AND OF THE PRECIOUS TREASURE WHICH WE HAD UNDER OUR ROOF SUPPRESSING ONLY THE NAME OF MY CLIENT + LUCY PARR WHO HAD BROUGHT IN THE COFFEE HAD I AM SURE LEFT THE ROOM BUT I CANNOT SWEAR THAT THE DOOR WAS CLOSED + MARY AND ARTHUR WERE MUCH INTERESTED AND WISHED TO SEE THE FAMOUS CORONET BUT I THOUGHT IT BETTER NOT TO DISTURB IT + WHERE HAVE YOU PUT IT ASKED ARTHUR + IN MY OWN BUREAU + WELL I HOPE TO GOODNESS THE HOUSE WON'T BE BURGLED DURING THE NIGHT SAID HE + IT IS LOCKED UP I ANSWERED + QUOTE OH ANY OLD KEY WILL FIT THAT BUREAU + WHEN I WAS A YOUNGSTER I HAVE OPENED IT MYSELF WITH THE KEY OF THE BOX ROOM CUPBOARD + HE OFTEN HAD A WILD WAY OF TALKING SO THAT I THOUGHT LITTLE OF WHAT HE SAID + HE FOLLOWED ME TO MY ROOM HOWEVER THAT NIGHT WITH A VERY GRAVE FACE + LOOK HERE DAD SAID HE WITH HIS EYES CAST DOWN CAN YOU LET ME HAVE TWO HUNDRED POUNDS + NO I CANNOT + I ANSWERED SHARPLY + I HAVE BEEN FAR TOO GENEROUS WITH YOU IN MONEY MATTERS + YOU HAVE BEEN VERY KIND SAID HE BUT I MUST HAVE THIS MONEY OR ELSE I CAN NEVER SHOW MY FACE INSIDE THE CLUB AGAIN + AND A VERY GOOD THING TOO + I CRIED + QUOTE YES BUT YOU WOULD NOT HAVE ME LEAVE IT A DISHONOURED MAN SAID HE + I COULD NOT BEAR THE DISGRACE + I MUST RAISE THE MONEY IN SOME WAY AND IF YOU WILL NOT LET ME HAVE IT THEN I MUST TRY OTHER MEANS + I WAS VERY ANGRY FOR THIS WAS THE THIRD DEMAND DURING THE MONTH + YOU SHALL NOT HAVE A FARTHING FROM ME I CRIED ON WHICH HE BOWED AND LEFT THE ROOM WITHOUT ANOTHER WORD + WHEN HE WAS GONE I UNLOCKED MY BUREAU MADE SURE THAT MY TREASURE WAS SAFE AND LOCKED IT AGAIN + THEN I STARTED TO GO ROUND THE HOUSE TO SEE THAT ALL WAS SECURE A DUTY WHICH I USUALLY LEAVE TO MARY BUT WHICH I THOUGHT IT WELL TO PERFORM MYSELF THAT NIGHT + AS I CAME DOWN THE STAIRS I SAW MARY HERSELF AT THE SIDE WINDOW OF THE HALL WHICH SHE CLOSED AND FASTENED AS I APPROACHED + TELL ME DAD SAID SHE LOOKING I THOUGHT A LITTLE DISTURBED DID YOU GIVE LUCY THE MAID LEAVE TO GO OUT TO NIGHT + CERTAINLY NOT + SHE CAME IN JUST NOW BY THE BACK DOOR + I HAVE NO DOUBT THAT SHE HAS ONLY BEEN TO THE SIDE GATE TO SEE SOMEONE BUT I THINK THAT IT IS HARDLY SAFE AND SHOULD BE STOPPED + QUOTE YOU MUST SPEAK TO HER IN THE MORNING OR I WILL IF YOU PREFER IT + ARE YOU SURE THAT EVERYTHING IS FASTENED + QUITE SURE. DAD + THEN. GOOD NIGHT + I KISSED HER AND WENT UP TO MY BEDROOM AGAIN WHERE I WAS SOON ASLEEP + I AM ENDEAVOURING TO TELL YOU EVERYTHING MR. HOLMES WHICH MAY HAVE ANY BEARING UPON THE CASE BUT I BEG THAT YOU WILL QUESTION ME UPON ANY POINT WHICH I DO NOT MAKE CLEAR + ON THE CONTRARY YOUR STATEMENT IS SINGULARLY LUCID + I COME TO A PART OF MY STORY NOW IN WHICH I SHOULD WISH TO BE PARTICULARLY SO + I AM NOT A VERY HEAVY SLEEPER AND THE ANXIETY IN MY MIND TENDED NO DOUBT TO MAKE ME EVEN LESS SO THAN USUAL + ABOUT TWO IN THE MORNING THEN I WAS AWAKENED BY SOME SOUND IN THE HOUSE + IT HAD CEASED ERE I WAS WIDE AWAKE BUT IT HAD LEFT AN IMPRESSION BEHIND IT AS THOUGH A WINDOW HAD GENTLY CLOSED SOMEWHERE + I LAY LISTENING WITH ALL MY EARS + SUDDENLY TO MY HORROR THERE WAS A DISTINCT SOUND OF FOOTSTEPS MOVING SOFTLY IN THE NEXT ROOM + I SLIPPED OUT OF BED ALL PALPITATING WITH FEAR AND PEEPED ROUND THE COMER OF MY DRESSING ROOM DOOR + QUOTE ARTHUR + I SCREAMED YOU VILLAIN YOU THIEF + HOW DARE YOU TOUCH THAT CORONET + THE GAS WAS HALF UP AS I HAD LEFT IT AND MY UNHAPPY BOY DRESSED ONLY IN HIS SHIRT AND TROUSERS WAS STANDING BESIDE THE LIGHT HOLDING THE CORONET IN HIS HANDS + HE APPEARED TO BE WRENCHING AT IT OR BENDING IT WITH ALL HIS STRENGTH + AT MY CRY HE DROPPED IT FROM HIS GRASP AND TURNED AS PALE AS DEATH + I SNATCHED IT UP AND EXAMINED IT + ONE OF THE GOLD CORNERS WITH THREE OF THE BERYLS IN IT WAS MISSING + YOU BLACKGUARD + I SHOUTED BESIDE MYSELF WITH RAGE + YOU HAVE DESTROYED IT + YOU HAVE DISHONOURED ME FOREVER + WHERE ARE THE JEWELS WHICH YOU HAVE STOLEN + STOLEN HE CRIED + YES THIEF + I ROARED SHAKING HIM BY THE SHOULDER + THERE ARE NONE MISSING + THERE CANNOT BE ANY MISSING SAID HE + QUOTE THERE ARE THREE MISSING + AND YOU KNOW WHERE THEY ARE + MUST I CALL YOU A LIAR AS WELL AS A THIEF + DID I NOT SEE YOU TRYING TO TEAR OFF ANOTHER PIECE + YOU HAVE CALLED ME NAMES ENOUGH SAID HE I WILL NOT STAND IT ANY LONGER + I SHALL NOT SAY ANOTHER WORD ABOUT THIS BUSINESS SINCE YOU HAVE CHOSEN TO INSULT ME + I WILL LEAVE YOUR HOUSE IN THE MOMING AND MAKE MY OWN WAY IN THE WORLD + YOU SHALL LEAVE IT IN THE HANDS OF THE POLICE + I CRIED HALF MAD WITH GRIEF AND RAGE + I SHALL HAVE THIS MATTER PROBED TO THE BOTTOM + YOU SHALL LEARN NOTHING FROM ME SAID HE WITH A PASSION SUCH AS I SHOULD NOT HAVE THOUGHT WAS IN HIS NATURE + IF YOU CHOOSE TO CALL THE POLICE LET THE POLICE FIND WHAT THEY CAN + BY THIS TIME THE WHOLE HOUSE WAS ASTIR FOR I HAD RAISED MY VOICE IN MY ANGER + MARY WAS THE FIRST TO RUSH INTO MY ROOM AND AT THE SIGHT OF THE CORONET AND OF ARTHUR'S FACE SHE READ THE WHOLE STORY AND WITH A SCREAM FELL DOWN SENSCLESS ON THE GROUND + I SENT THE HOUSE MAID FOR THE POLICE AND PUT THE INVESTIGATION INTO THEIR HANDS AT ONCE + WHEN THE INSPECTOR AND A CONSTABLE ENTERED THE HOUSE ARTHUR WHO HAD STOOD SULLENLY WITH HIS ARMS FOLDED ASKED ME WHETHER IT WAS MY INTENTION TO CHARGE HIM WITH THEFT + I ANSWERED THAT IT HAD CEASED TO BE A PRIVATE MATTER BUT HAD BECOME A PUBLIC ONE SINCE THE RUINED CORONET WAS NATIONAL PROPERTY + I WAS DETERMINED THAT THE LAW SHOULD HAVE ITS WAY IN EVERYTHING + AT LEAST SAID HE YOU WILL NOT HAVE ME ARRESTED AT ONCE + IT WOULD BE TO YOUR ADVANTAGE AS WELL AS MINE IF I MIGHT LEAVE THE HOUSE FOR FIVE MINUTES + QUOTE THAT YOU MAY GET AWAY OR PERHAPS THAT YOU MAY CONCEAL WHAT YOU HAVE STOLEN SAID I. AND THEN REALIZING THE DREADFUL POSITION IN WHICH I WAS PLACED I IMPLORED HIM TO REMEMBER THAT NOT ONLY MY HONOUR BUT THAT OF ONE WHO WAS FAR GREATER THAN I WAS AT STAKE AND THAT HE THREATENED TO RAISE A SCANDAL WHICH WOULD CONVULSE THE NATION + HE MIGHT AVERT IT ALL IF HE WOULD BUT TELL ME WHAT HE HAD DONE WITH THE THREE MISSING STONES + YOU MAY AS WELL FACE THE MATTER SAID I YOU HAVE BEEN CAUGHT IN THE ACT AND NO CONFESSION COULD MAKE YOUR GUILT MORE HEINOUS + IF YOU BUT MAKE SUCH REPARATION AS IS IN YOUR POWER BY TELLING US WHERE THE BERYLS ARE ALL SHALL BE FORGIVEN AND FORGOTTEN + KEEP YOUR FORGIVENESS FOR THOSE WHO ASK FOR IT HE ANSWERED TURNING AWAY FROM ME WITH A SNEER + I SAW THAT HE WAS TOO HARDENED FOR ANY WORDS OF MINE TO INFLUENCE HIM + THERE WAS BUT ONE WAY FOR IT + I CALLED IN THE INSPECTOR AND GAVE HIM INTO CUSTODY + A SEARCH WAS MADE AT ONCE NOT ONLY OF HIS PERSON BUT OF HIS ROOM AND OF EVERY PORTION OF THE HOUSE WHERE HE COULD POSSIBLY HAVE CONCEALED THE GEMS BUT NO TRACE OF THEM COULD BE FOUND NOR WOULD THE WRETCHED BOY OPEN HIS MOUTH FOR ALL OUR PERSUASIONS AND OUR THREATS + THIS MORNING HE WAS REMOVED TO A CELL AND I AFTER GOING THROUGH ALL THE POLICE FORMALITIES HAVE HURRIED ROUND TO YOU TO IMPLORE YOU TO USE YOUR SKILL IN UNRAVELLING THE MATTER + THE POLICE HAVE OPENLY CONFESSED THAT THEY CAN AT PRESENT MAKE NOTHING OF IT + YOU MAY GO TO ANY EXPENSE WHICH YOU THINK NECESSARY + I HAVE ALREADY OFFERED A REWARD OF LOOO POUNDS + MY GOD WHAT SHALL I DO + I HAVE LOST MY HONOUR MY GEMS AND MY SON IN ONE NIGHT + OH WHAT SHALL I DO + HE PUT A HAND ON EITHER SIDE OF HIS HEAD AND ROCKED HIMSELF TO AND FRO DRONING TO HIMSELF LIKE A CHILD WHOSE GRIEF HAS GOT BEYOND WORDS + SHERLOCK HOLMES SAT SILENT FOR SOME FEW MINUTES WITH HIS BROWS KNITTED AND HIS EYES FIXED UPON THE FIRE + DO YOU RECEIVE MUCH COMPANY HE ASKED + NONE SAVE MY PARTNER WITH HIS FAMILY AND AN OCCASIONAL FRIEND OF ARTHUR'S + SIR GEORGE BURNWELL HAS BEEN SEVERAL TIMES LATELY + NO ONE ELSE I THINK QUOTE + DO YOU GO OUT MUCH IN SOCIETY + ARTHUR DOES + MARY AND I STAY AT HOME + WE NEITHER OF US CARE FOR IT + THAT IS UNUSUAL IN A YOUNG GIRL + SHE IS OF A QUIET NATURE + BESIDES SHE IS NOT SO VERY YOUNG + SHE IS FOUR AND TWENTY QUOTE + THIS MATTER FROM WHAT YOU SAY SEEMS TO HAVE BEEN A SHOCK TO HER ALSO + TERRIBLE + SHE IS EVEN MORE AFFECTED THAN I + YOU HAVE NEITHER OF YOU ANY DOUBT AS TO YOUR SON'S GUILT + HOW CAN WE HAVE WHEN I SAW HIM WITH MY OWN EYES WITH THE CORONET IN HIS HANDS + QUOTE I HARDLY CONSIDER THAT A CONCLUSIVE PROOF + WAS THE REMAINDER OF THE CORONET AT ALL INJURED + YES IT WAS TWISTED + DO YOU NOT THINK THEN THAT HE MIGHT HAVE BEEN TRYING TO STRAIGHTEN IT + GOD BLESS YOU + YOU ARE DOING WHAT YOU CAN FOR HIM AND FOR ME + BUT IT IS TOO HEAVY A TASK + WHAT WAS HE DOING THERE AT ALL + IF HIS PURPOSE WERE INNOCENT WHY DID HE NOT SAY SO + QUOTE PRECISELY + AND IF IT WERE GUILTY WHY DID HE NOT INVENT A LIE + HIS SILENCE APPEARS TO ME TO CUT BOTH WAYS + THERE ARE SEVERAL SINGULAR POINTS ABOUT THE CASE + WHAT DID THE POLICE THINK OF THE NOISE WHICH AWOKE YOU FROM YOUR SLEEP + THEY CONSIDERED THAT IT MIGHT BE CAUSED BY ARTHUR'S CLOSING HIS BEDROOM DOOR + A LIKELY STORY + AS IF A MAN BENT ON FELONY WOULD SLAM HIS DOOR SO AS TO WAKE A HOUSEHOLD + WHAT DID THEY SAY THEN OF THE DISAPPEARANCE OF THESE GEMS + THEY ARE STILL SOUNDING THE PLANKING AND PROBING THE FURNITURE IN THE HOPE OF FINDING THEM + QUOTE HAVE THEY THOUGHT OF LOOKING OUTSIDE THE HOUSE QUOTE + YES THEY HAVE SHOWN EXTRAORDINARY ENERGY + THE WHOLE GARDEN HAS ALREADY BEEN MINUTELY EXAMINED + NOW MY DEAR SIR SAID HOLMES IS IT NOT OBVIOUS TO YOU NOW THAT THIS MATTER REALLY STRIKES VERY MUCH DEEPER THAN EITHER YOU OR THE POLICE WERE AT FIRST INCLINED TO THINK + IT APPEARED TO YOU TO BE A SIMPLE CASE TO ME IT SEEMS EXCEEDINGLY COMPLEX + CONSIDER WHAT IS INVOLVED BY YOUR THEORY + YOU SUPPOSE THAT YOUR SON CAME DOWN FROM HIS BED WENT. AT GREAT RISK TO YOUR DRESSING ROOM OPENED YOUR BUREAU TOOK OUT YOUR CORONET BROKE OTF BY MAIN FORCE A SMALL PORTION OF IT WENT OFF TO SOME OTHER PLACE CONCEALED THREE GEMS OUT OF THE THIRTY NINE WITH SUCH SKILL THAT NOBODY CAN FIND THEM AND THEN RETURNED WITH THE OTHER THIRTY SIX INTO THE ROOM IN WHICH HE EXPOSED HIMSELF TO THE GREATEST DANGER OF BEING DISCOVERED + I ASK YOU NOW IS SUCH A THEORY TENABLE + BUT WHAT OTHER IS THERE CRIED THE BANKER WITH A GESTURE OF DESPAIR + QUOTE IF HIS MOTIVES WERE INNOCENT WHY DOES HE NOT EXPLAIN THEM QUOTE + IT IS OUR TASK TO FIND THAT OUT REPLIED HOLMES SO NOW IF YOU PLEASE MR. HOLDER WE WILL SET OFF FOR STREATHAM TOGETHER AND DEVOTE AN HOUR TO GLANCING A LITTLE MORE CLOSELY INTO DETAILS + MY FRIEND INSISTED UPON MY ACCOMPANYING THEM IN THEIR EXPEDITION WHICH I WAS EAGER ENOUGH TO DO FOR MY CURIOSITY AND SYMPATHY WERE DEEPLY STIRRED BY THE STORY TO WHICH WE HAD LISTENED + I CONFESS THAT THE GUILT OF THE BANKER'S SON APPEARED TO ME TO BE AS OBVIOUS AS IT DID TO HIS UNHAPPY FATHER BUT STILL I HAD SUCH FAITH IN HOLMES'S JUDGMENT THAT I FELT THAT THERE MUST BE SOME GROUNDS FOR HOPE AS LONG AS HE WAS DISSATISFIED WITH THE ACCEPTED EXPLANATION + HE HARDLY SPOKE A WORD THE WHOLE WAY OUT TO THE SOUTHERN SUBURB BUT SAT WITH HIS CHIN UPON HIS BREAST AND HIS HAT DRAWN OVER HIS EYES SUNK IN THE DEEPEST THOUGHT + OUR CLIENT APPEARED TO HAVE TAKEN FRESH HEART AT THE LITTLE GLIMPSE OF HOPE WHICH HAD BEEN PRESENTED TO HIM AND HE EVEN BROKE INTO A DESULTORY CHAT WITH ME OVER HIS BUSINESS AFFAIRS + A SHORT RAILWAY JOURNEY AND A SHORTER WALK BROUGHT US TO FAIRBANK THE MODEST RESIDENCE OF THE GREAT FINANCIER + FAIRBANK WAS A GOOD SIZED SQUARE HOUSE OF WHITE STONE STANDING BACK A LITTLE FROM THE ROAD + A DOUBLE CARRIAGE SWEEP WITH A SNOW CLAD LAWN STRETCHED DOWN IN FRONT TO TWO LARGE IRON GATES WHICH CLOSED THE ENTRANCE + ON THE RIGHT SIDE WAS A SMALL WOODEN THICKET WHICH LED INTO A NARROW PATH BETWEEN TWO NEAT HEDGES STRETCHING FROM THE ROAD TO THE KITCHEN DOOR AND FORMING THE TRADESMEN'S ENTRANCE + ON THE LEFT RAN A LANE WHICH LED TO THE STABLES AND WAS NOT ITSELF WITHIN THE GROUNDS AT ALL BEING A PUBLIC THOUGH LITTLE USED THOROUGHFARE + HOLMES LEFT US STANDING AT THE DOOR AND WALKED SLOWLY ALL ROUND THE HOUSE ACROSS THE FRONT DOWN THE TRADESMEN'S PATH AND SO ROUND BY THE GARDEN BEHIND INTO THE STABLE LANE + SO LONG WAS HE THAT MR. HOLDER AND I WENT INTO THE DINING ROOM AND WAITED BY THE FIRE UNTIL HE SHOULD RETURN + WE WERE SITTING THERE IN SILENCE WHEN THE DOOR OPENED AND A YOUNG LADY CAME IN + SHE WAS RATHER ABOVE THE MIDDLE HEIGHT SLIM WITH DARK HAIR AND EYES WHICH SEEMED THE DARKER AGAINST THE ABSOLUTE PALLOR OF HER SKIN + I DO NOT THINK THAT I HAVE EVER SEEN SUCH DEADLY PALENESS IN A WOMAN'S FACE + HER LIPS TOO WERE BLOODLESS BUT HER EYES WERE FLUSHED WITH CRYING + AS SHE SWEPT SILENTLY INTO THE ROOM SHE IMPRESSED ME WITH A GREATER SENSE OF GRIEF THAN THE BANKER HAD DONE IN THE MORNING AND IT WAS THE MORE STRIKING IN HER AS SHE WAS EVIDENTLY A WOMAN OF STRONG CHARACTER WITH IMMENSE CAPACITY FOR SELF RESTRAINT + DISREGARDING MY PRESENCE SHE WENT STRAIGHT TO HER UNCLE AND PASSED HER HAND OVER HIS HEAD WITH A SWEET WOMANLY CARESS + YOU HAVE GIVEN ORDERS THAT ARTHUR SHOULD BE LIBERATED HAVE YOU NOT DAD SHE ASKED + NO NO MY GIRL THE MATTER MUST BE PROBED TO THE BOTTOM + BUT I AM SO SURE THAT HE IS INNOCENT + YOU KNOW WHAT WOMAN'S INSTINCTS ARE + I KNOW THAT HE HAS DONE NO HARM AND THAT YOU WILL BE SORRY FOR HAVING ACTED SO HARSHLY + QUOTE WHY IS HE SILENT THEN IF HE IS INNOCENT QUOTE + WHO KNOWS + PERHAPS BECAUSE HE WAS SO ANGRY THAT YOU SHOULD SUSPECT HIM + HOW COULD I HELP SUSPECTING HIM WHEN I ACTUALLY SAW HIM WITH THE CORONET IN HIS HAND + OH BUT HE HAD ONLY PICKED IT UP TO LOOK AT IT + OH DO DO TAKE MY WORD FOR IT THAT HE IS INNOCENT + LET THE MATTER DROP AND SAY NO MORE + IT IS SO DREADFUL TO THINK OF OUR DEAR ARTHUR IN PRISON + QUOTE I SHALL NEVER LET IT DROP UNTIL THE GEMS ARE FOUND NEVER MARY + YOUR AFFECTION FOR ARTHUR BLINDS YOU AS TO THE AWFUL CONSEQUENCES TO ME + FAR FROM HUSHING THE THING UP I HAVE BROUGHT A GENTLEMAN DOWN FROM LONDON TO INQUIRE MORE DEEPLY INTO IT + THIS GENTLEMAN SHE ASKED FACING ROUND TO ME + NO HIS FRIEND + HE WISHED US TO LEAVE HIM ALONE + HE IS ROUND IN THE STABLE LANE NOW + THE STABLE LANE + SHE RAISED HER DARK EYEBROWS + QUOTE WHAT CAN HE HOPE TO FIND THERE + AH THIS I SUPPOSE IS HE + I TRUST SIR THAT YOU WILL SUCCEED IN PROVING WHAT I FEEL SURE IS THE TRUTH THAT MY COUSIN ARTHUR IS INNOCENT OF THIS CRIME + I FULLY SHARE YOUR OPINION AND I TRUST WITH YOU THAT WE MAY PROVE IT RETURNED HOLMES GOING BACK TO THE MAT TO KNOCK THE SNOW FROM HIS SHOES + I BELIEVE I HAVE THE HONOUR OF ADDRESSING MISS MARY HOLDER + MIGHT I ASK YOU A QUESTION OR TWO + PRAY DO SIR IF IT MAY HELP TO CLEAR THIS HORRIBLE AFFAIR UP + QUOTE YOU HEARD NOTHING YOURSELF LAST NIGHT QUOTE + NOTHING UNTIL MY UNCLE HERE BEGAN TO SPEAK LOUDLY + I HEARD THAT AND I CAME DOWN + YOU SHUT UP THE WINDOWS AND DOORS THE NIGHT BEFORE + DID YOU FASTEN ALL THE WINDOWS + YES + QUOTE WERE THEY ALL FASTENED THIS MORNING QUOTE + YES + YOU HAVE A MAID WHO HAS A SWEETHEART + I THINK THAT YOU REMARKED TO YOUR UNCLE LAST NIGHT THAT SHE HAD BEEN OUT TO SEE HIM + YES AND SHE WAS THE GIRL WHO WAITED IN THE DRAWING ROOM. AND WHO MAY HAVE HEARD UNCLE'S REMARKS ABOUT THE CORONET + I SEE + YOU INFER THAT SHE MAY HAVE GONE OUT TO TELL HER SWEETHEART AND THAT THE TWO MAY HAVE PLANNED THE ROBBERY QUOTE + BUT WHAT IS THE GOOD OF ALL THESE VAGUE THEORIES CRIED THE BANKER IMPATIENTLY WHEN I HAVE TOLD YOU THAT I SAW ARTHUR WITH THE CORONET IN HIS HANDS + WAIT A LITTLE MR. HOLDER + WE MUST COME BACK TO THAT + ABOUT THIS GIRL MISS HOLDER + YOU SAW HER RETURN BY THE KITCHEN DOOR I PRESUME + YES WHEN I WENT TO SEE IF THE DOOR WAS FASTENED FOR THE NIGHT I MET HER SLIPPING IN + I SAW THE MAN TOO IN THE GLOOM + QUOTE DO YOU KNOW HIM + OH YES HE IS THE GREEN GROCER WHO BRINGS OUR VEGETABLES ROUND + HIS NAME IS FRANCIS PROSPER + HE STOOD SAID HOLMES TO THE LEFT OF THE DOOR THAT IS TO SAY FARTHER UP THE PATH THAN IS NECESSARY TO REACH THE DOOR + YES HE DID + AND HE IS A MAN WITH A WOODEN LEG + SOMETHING LIKE FEAR SPRANG UP IN THE YOUNG LADY'S EXPRESSIVE BLACK EYES + QUOTE WHY YOU ARE LIKE A MAGICIAN QUOTE SAID SHE + HOW DO YOU KNOW THAT + SHE SMILED BUT THERE WAS NO ANSWERING SMILE IN HOLMES'S THIN EAGER FACE + I SHOULD BE VERY GLAD NOW TO GO UPSTAIRS SAID HE + I SHALL PROBABLY WISH TO GO OVER THE OUTSIDE OF THE HOUSE AGAIN + PERHAPS I HAD BETTER TAKE A LOOK AT THE LOWER WINDOWS BEFORE I GO UP + HE WALKED SWIFTLY ROUND FROM ONE TO THE OTHER PAUSING ONLY AT THE LARGE ONE WHICH LOOKED FROM THE HALL ONTO THE STABLE LANE + THIS HE OPENED AND MADE A VERY CAREFUL EXAMINATION OF THE SILL WITH HIS POWERFUL MAGNIFYING LENS + NOW WE SHALL GO UPSTAIRS SAID HE AT LAST + THE BANKER'S DRESSING ROOM WAS A PLAINLY FURNISHED LITTLE CHAMBER WITH A GRAY CARPET A LARGE BUREAU AND A LONG MIRROR + HOLMES WENT TO THE BUREAU FIRST AND LOOKED HARD AT THE LOCK + QUOTE WHICH KEY WAS USED TO OPEN IT QUOTE HE ASKED + THAT WHICH MY SON HIMSELF INDICATED THAT OF THE CUPBOARD OF THE LUMBER ROOM + HAVE YOU IT HERE + THAT IS IT ON THE DRESSING TABLE + SHERLOCK HOLMES TOOK IT UP AND OPENED THE BUREAU + IT IS A NOISELESS LOCK SAID HE + IT IS NO WONDER THAT IT DID NOT WAKE YOU + THIS CASE I PRESUME CONTAINS THE CORONET + WE MUST HAVE A LOOK AT IT QUOTE + HE OPENED THE CASE AND TAKING OUT THE DIADEM HE LAID IT UPON THE TABLE + IT WAS A MAGNIFICENT SPECIMEN OF THE JEWELLER'S ART AND THE THINY SIX STONES WERE THE FINEST THAT I HAVE EVER SEEN + AT ONE SIDE OF THE CORONET WAS A CRACKED EDGE WHERE A CORNER HOLDING THREE GEMS HAD BEEN TORN AWAY + NOW MR. HOLDER SAID HOLMES HERE IS THE CORNER WHICH CORRESPONDS TO THAT WHICH HAS BEEN SO UNFORTUNATELY LOST + MIGHT I BEG THAT YOU WILL BREAK IT OFF + THE BANKER RECOILED IN HORROR + I SHOULD NOT DREAM OF TRYING SAID HE + THEN I WILL + HOLMES SUDDENLY BENT HIS STRENGTH UPON IT BUT WITHOUT RESULT + I FEEL IT GIVE A LITTLE SAID HE BUT THOUGH I AM EXCEPTIONALLY STRONG IN THE FINGERS IT WOULD TAKE ME ALL MY TIME TO BREAK IT + AN ORDINARY MAN COULD NOT DO IT + NOW WHAT DO YOU THINK WOULD HAPPEN IF I DID BREAK IT MR. HOLDER + THERE WOULD BE A NOISE LIKE A PISTOL SHOT + DO YOU TELL ME THAT ALL THIS HAPPENED WITHIN A FEW YARDS OF YOUR BED AND THAT YOU HEARD NOTHING OF IT QUOTE + I DO NOT KNOW WHAT TO THINK + IT IS ALL DARK TO ME + BUT PERHAPS IT MAY GROW LIGHTER AS WE GO + WHAT DO YOU THINK MISS HOLDER + I CONFESS THAT I STILL SHARE MY UNCLE'S PERPLEXITY + QUOTE YOUR SON HAD NO SHOES OR SLIPPERS ON WHEN YOU SAW HIM QUOTE + HE HAD NOTHING ON SAVE ONLY HIS TROUSERS AND SHIRT + THANK YOU + WE HAVE CERTAINLY BEEN FAVOURED WITH EXTRAORDINARY LUCK DURING THIS INQUIRY AND IT WILL BE ENTIRELY OUR OWN FAULT IF WE DO NOT SUCCEED IN CLEARING THE MATTER UP + WITH YOUR PEMMISSION MR. HOLDER I SHALL NOW CONTINUE MY INVESTIGATIONS OUTSIDE + HE WENT ALONE AT HIS OWN REQUEST FOR HE EXPLAINED THAT ANY UNNECESSARY FOOTMARKS MIGHT MAKE HIS TASK MORE DIFFICULT + FOR AN HOUR OR MORE HE WAS AT WORK RETURNING AT LAST WITH HIS FEET HEAVY WITH SNOW AND HIS FEATURES AS INSCRUTABLE AS EVER + I THINK THAT I HAVE SEEN NOW ALL THAT THERE IS TO SEE MR. HOLDER SAID HE I CAN SERVE YOU BEST BY RETURNING TO MY ROOMS + BUT THE GEMS MR. HOLMES + WHERE ARE THEY QUOTE + I CANNOT TELL + THE BANKER WRUNG HIS HANDS + I SHALL NEVER SEE THEM AGAIN HE CRIED + AND MY SON + YOU GIVE ME HOPES + MY OPINION IS IN NO WAY ALTERED + QUOTE THEN FOR GOD'S SAKE WHAT WAS THIS DARK BUSINESS WHICH WAS ACTED IN MY HOUSE LAST NIGHT QUOTE + IF YOU CAN CALL UPON ME AT MY BAKER STREET ROOMS TO MORROW MORNING BETWEEN NINE AND TEN I SHALL BE HAPPY TO DO WHAT I CAN TO MAKE IT CLEARER + I UNDERSTAND THAT YOU GIVE ME CARTE BLANCHE TO ACT FOR YOU PROVIDED ONLY THAT I GET BACK THE GEMS AND THAT YOU PLACE NO LIMIT ON THE SUM I MAY DRAW + I WOULD GIVE MY FORTUNE TO HAVE THEM BACK + VERY GOOD + I SHALL LOOK INTO THE MATTER BETWEEN THIS AND THEN + GOOD BYE IT IS JUST POSSIBLE THAT I MAY HAVE TO COME OVER HERE AGAIN BEFORE EVENING + IT WAS OBVIOUS TO ME THAT MY COMPANION'S MIND WAS NOW MADE UP ABOUT THE CASE ALTHOUGH WHAT HIS CONCLUSIONS WERE WAS MORE THAN I COULD EVEN DIMLY IMAGINE + SEVERAL TIMES DURING OUR HOMEWARD JOURNEY I ENDEAVOURED TO SOUND HIM UPON THE POINT BUT HE ALWAYS GLIDED AWAY TO SOME OTHER TOPIC UNTIL AT LAST I GAVE IT OVER IN DESPAIR + IT WAS NOT YET THREE WHEN WE FOUND OURSELVES IN OUR ROOMS ONCE MORE + HE HURRIED TO HIS CHAMBER AND WAS DOWN AGAIN IN A FEW MINUTES DRESSED AS A COMMON LOAFER + WITH HIS COLLAR TURNED UP HIS SHINY SEEDY COAT HIS RED CRAVAT AND HIS WORN BOOTS HE WAS A PERFECT SAMPLE OF THE CLASS + QUOTE I THINK THAT THIS SHOULD DO QUOTE SAID HE GLANCING INTO THE GLASS ABOVE THE FIREPLACE QUOTE L. ONLY WISH THAT YOU COULD COME WITH ME WATSON BUT I FEAR THAT IT WON'T DO + I MAY BE ON THE TRAIL IN THIS MATTER OR I MAY BE FOLLOWING A WILL O' THE WISP BUT I SHALL SOON KNOW WHICH IT IS + I HOPE THAT I MAY BE BACK IN A FEW HOURS + HE CUT A SLICE OF BEEF FROM THE JOINT UPON THE SIDEBOARD SANDWICHED IT BETWEEN TWO ROUNDS OF BREAD AND THRUSTING THIS RUDE MEAL INTO HIS POCKET HE STARTED OFF UPON HIS EXPEDITION + I HAD JUST FINISHED MY TEA WHEN HE RETURNED EVIDENTLY IN EXCELLENT SPIRITS SWINGING AN OLD ELASTIC SIDED BOOT IN HIS HAND + HE CHUCKED IT DOWN INTO A CORNER AND HELPED HIMSELF TO A CUP OF TEA + I ONLY LOOKED IN AS I PASSED SAID HE + I AM GOING RIGHT ON + WHERE TO + OH TO THE OTHER SIDE OF THE WEST END + IT MAY BE SOME TIME BEFORE I GET BACK + DON'T WAIT UP FOR ME IN CASE I SHOULD BE LATE QUOTE + HOW ARE YOU GETTING ON + OH SO SO + NOTHING TO COMPLAIN OF + I HAVE BEEN OUT TO STREATHAM SINCE I SAW YOU LAST BUT I DID NOT CALL AT THE HOUSE + IT IS A VERY SWEET LITTLE PROBLEM AND I WOULD NOT HAVE MISSED IT FOR A GOOD DEAL + HOWEVER I MUST NOT SIT GOSSIPING HERE BUT MUST GET THESE DISREPUTABLE CLOTHES OFF AND RETURN TO MY HIGHLY RESPECTABLE SELF + I COULD SEE BY HIS MANNER THAT HE HAD STRONGER REASONS FOR SATISFACTION THAN HIS WORDS ALONE WOULD IMPLY + HIS EYES TWINKLED AND THERE WAS EVEN A TOUCH OF COLOUR UPON HIS SALLOW CHEEKS + HE HASTENED UPSTAIRS AND A FEW MINUTES LATER I HEARD THE SLAM OF THE HALL DOOR WHICH TOLD ME THAT HE WAS OFF ONCE MORE UPON HIS CONGENIAL HUNT + I WAITED UNTIL MIDNIGHT BUT THERE WAS NO SIGN OF HIS RETURN SO I RETIRED TO MY ROOM + IT WAS NO UNCOMMON THING FOR HIM TO BE AWAY FOR DAYS AND NIGHTS ON END WHEN HE WAS HOT UPON A SCENT SO THAT HIS LATENESS CAUSED ME NO SURPRISE + I DO NOT KNOW AT WHAT HOUR HE CAME IN BUT WHEN I CAME DOWN TO BREAKFAST IN THE MORNING THERE HE WAS WITH A CUP OF COFFEE IN ONE HAND AND THE PAPER IN THE OTHER AS FRESH AND TRIM AS POSSIBLE + YOU WILL EXCUSE MY BEGINNING WITHOUT YOU WATSON SAID HE BUT YOU REMEMBER THAT OUR CLIENT HAS RATHER AN EARLY APPOINTMENT THIS MORNING + WHY IT IS AFTER NINE NOW I ANSWERED + QUOTE I SHOULD NOT BE SURPRISED IF THAT WERE HE + I THOUGHT I HEARD A RING + IT WAS INDEED OUR FRIEND THE FINANCIER + I WAS SHOCKED BY THE CHANGE WHICH HAD COME OVER HIM FOR HIS FACE WHICH WAS NATURALLY OF A BROAD AND MASSIVE MOULD WAS NOW PINCHED AND FALLEN IN WHILE HIS HAIR SEEMED TO ME AT LEAST A SHADE WHITER + HE ENTERED WITH A WEARINESS AND LETHARGY WHICH WAS EVEN MORE PAINFUL THAN HIS VIOLENCE OF THE MORNING BEFORE AND HE DROPPED HEAVILY INTO THE ARMCHAIR WHICH I PUSHED FORWARD FOR HIM + I DO NOT KNOW WHAT I HAVE DONE TO BE SO SEVERELY TRIED SAID HE + ONLY TWO DAYS AGO I WAS A HAPPY AND PROSPEROUS MAN WITHOUT A CARE IN THE WORLD + NOW I AM LEFT TO A LONELY AND DISHONOURED AGE + ONE SORROW COMES CLOSE UPON THE HEELS OF ANOTHER + MY NIECE MARY HAS DESERTED ME + DESERTED YOU + QUOTE YES + HER BED THIS MORNING HAD NOT BEEN SLEPT IN HER ROOM WAS EMPTY AND A NOTE FOR ME LAY UPON THE HALL TABLE + I HAD SAID TO HER LAST NIGHT IN SORROW AND NOT IN ANGER THAT IF SHE HAD MARRIED MY BOY ALL MIGHT HAVE BEEN WELL WITH HIM + PERHAPS IT WAS THOUGHTLESS OF ME TO SAY SO + IT IS TO THAT REMARK THAT SHE REFERS IN THIS NOTE MY DEAREST UNCLE I FEEL THAT I HAVE BROUGHT TROUBLE UPON YOU AND THAT IF I HAD ACTED DIFFERENTLY THIS TERRIBLE MISFORTUNE MIGHT NEVER HAVE OCCURRED + I CANNOT WITH THIS THOUGHT IN MY MIND EVER AGAIN BE HAPPY UNDER YOUR ROOF AND I FEEL THAT I MUST LEAVE YOU FOREVER + DO NOT WORRY ABOUT MY FUTURE FOR THAT IS PROVIDED FOR AND ABOVE ALL DO NOT SEARCH FOR ME FOR IT WILL BE FRUITLESS LABOUR AND AN ILL SERVICE TO ME + IN LIFE OR IN DEATH I AM EVER YOUR LOVING MARY + WHAT COULD SHE MEAN BY THAT NOTE MR. HOLMES + DO YOU THINK IT POINTS TO SUICIDE + NO NO NOTHING OF THE KIND + IT IS PERHAPS THE BEST POSSIBLE SOLUTION + I TRUST MR. HOLDER THAT YOU ARE NEARING THE END OF YOUR TROUBLES QUOTE + HA + YOU SAY SO + YOU HAVE HEARD SOMETHING MR. HOLMES YOU HAVE LEARNED SOMETHING + WHERE ARE THE GEMS + YOU WOULD NOT THINK ONE THOUSAND POUNDS APIECE AN EXCESSIVE SUM FOR THEM + I WOULD PAY TEN + THAT WOULD BE UNNECESSARY + THREE THOUSAND WILL COVER THE MATTER + AND THERE IS A LITTLE REWARD I FANCY + HAVE YOU YOUR CHECK BOOK + HERE IS A PEN + BETTER MAKE IT OUT FOR FOUR THOUSAND POUNDS QUOTE + WITH A DAZED FACE THE BANKER MADE OUT THE REQUIRED CHECK + HOLMES WALKED OVER TO HIS DESK TOOK OUT A LITTLE TRIANGULAR PIECE OF GOLD WITH THREE GEMS IN IT AND THREW IT DOWN UPON THE TABLE + WITH A SHRIEK OF JOY OUR CLIENT CLUTCHED IT UP + YOU HAVE IT HE GASPED + I AM SAVED + I AM SAVED + THE REACTION OF JOY WAS AS PASSIONATE AS HIS GRIEF HAD BEEN AND HE HUGGED HIS RECOVERED GEMS TO HIS BOSOM + THERE IS ONE OTHER THING YOU OWE MR. HOLDER SAID SHERLOCK HOLMES RATHER STERNLY + OWE + HE CAUGHT UP A PEN + QUOTE NAME THE SUM AND I WILL PAY IT QUOTE + NO THE DEBT IS NOT TO ME + YOU OWE A VERY HUMBLE APOLOGY TO THAT NOBLE LAD YOUR SON WHO HAS CARRIED HIMSELF IN THIS MATTER AS I SHOULD BE PROUD TO SEE MY OWN SON DO SHOULD I EVER CHANCE TO HAVE ONE + THEN IT WAS NOT ARTHUR WHO TOOK THEM + I TOLD YOU YESTERDAY AND I REPEAT TO DAY THAT IT WAS NOT + YOU ARE SURE OF IT + THEN LET US HURRY TO HIM AT ONCE TO LET HIM KNOW THAT THE TRUTH IS KNOWN QUOTE + HE KNOWS IT ALREADY + WHEN I HAD CLEARED IT ALL UP I HAD AN INTERVIEW WITH HIM. AND FINDING THAT HE WOULD NOT TELL ME THE STORY I TOLD IT TO HIM ON WHICH HE HAD TO CONFESS THAT I WAS RIGHT AND TO ADD THE VERY FEW DETAILS WHICH WERE NOT YET QUITE CLEAR TO ME + YOUR NEWS OF THIS MORNING HOWEVER MAY OPEN HIS LIPS + FOR HEAVEN'S SAKE TELL ME THEN WHAT IS THIS EXTRAORDINARY MYSTERY + I WILL DO SO AND I WILL SHOW YOU THE STEPS BY WHICH I REACHED IT + AND LET ME SAY TO YOU FIRST THAT WHICH IT IS HARDEST FOR ME TO SAY AND FOR YOU TO HEAR THERE HAS BEEN AN UNDERSTANDING BETWEEN SIR GEORGE BURNWELL AND YOUR NIECE MARY + THEY HAVE NOW FLED TOGETHER + QUOTE MY MARY + IMPOSSIBLE + IT IS UNFORTUNATELY MORE THAN POSSIBLE IT IS CERTAIN + NEITHER YOU NOR YOUR SON KNEW THE TRUE CHARACTER OF THIS MAN WHEN YOU ADMITTED HIM INTO YOUR FAMILY CIRCLE + HE IS ONE OF THE MOST DANGEROUS MEN IN ENGLAND A RUINED GAMBLER AN ABSOLUTELY DESPERATE VILLAIN A MAN WITHOUT HEART OR CONSCIENCE + YOUR NIECE KNEW NOTHING OF SUCH MEN + WHEN HE BREATHED HIS VOWS TO HER AS HE HAD DONE TO A HUNDRED BEFORE HER SHE FLATTERED HERSELF THAT SHE ALONE HAD TOUCHED HIS HEART + THE DEVIL KNOWS BEST WHAT HE SAID BUT AT LEAST SHE BECAME HIS TOOL AND WAS IN THE HABIT OF SEEING HIM NEARLY EVERY EVENING + I CANNOT AND I WILL NOT BELIEVE IT CRIED THE BANKER WITH AN ASHEN FACE + I WILL TELL YOU THEN WHAT OCCURRED IN YOUR HOUSE LAST NIGHT + YOUR NIECE WHEN YOU HAD AS SHE THOUGHT GONE TO YOUR ROOM. SLIPPED DOWN AND TALKED TO HER LOVER THROUGH THE WINDOW WHICH LEADS INTO THE STABLE LANE + HIS FOOTMARKS HAD PRESSED RIGHT THROUGH THE SNOW SO LONG HAD HE STOOD THERE + SHE TOLD HIM OF THE CORONET + HIS WICKED LUST FOR GOLD KINDLED AT THE NEWS AND HE BENT HER TO HIS WILL + I HAVE NO DOUBT THAT SHE LOVED YOU BUT THERE ARE WOMEN IN WHOM THE LOVE OF A LOVER EXTINGUISHES ALL OTHER LOVES AND I THINK THAT SHE MUST HAVE BEEN ONE + SHE HAD HARDLY LISTENED TO HIS INSTRUCTIONS WHEN SHE SAW YOU COMING DOWNSTAIRS ON WHICH SHE CLOSED THE WINDOW RAPIDLY AND TOLD YOU ABOUT ONE OF THE SERVANTS' ESCAPADE WITH HER WOODEN LEGGED LOVER WHICH WAS ALL PERFECTLY TRUE + QUOTE YOUR BOY ARTHUR WENT TO BED AFTER HIS INTERVIEW WITH YOU BUT HE SLEPT BADLY ON ACCOUNT OF HIS UNEASINESS ABOUT HIS CLUB DEBTS + IN THE MIDDLE OF THE NIGHT HE HEARD A SOFT TREAD PASS HIS DOOR SO HE ROSE AND LOOKING OUT WAS SURPRISED TO SEE HIS COUSIN WALKING VERY STEALTHILY ALONG THE PASSAGE UNTIL SHE DISAPPEARED INTO YOUR DRESSING ROOM + PETRIFIED WITH ASTONISHMENT THE LAD SLIPPED ON SOME CLOTHES AND WAITED THERE IN THE DARK TO SEE WHAT WOULD COME OF THIS STRANGE AFFAIR + PRESENTLY SHE EMERGED FROM THE ROOM AGAIN AND IN THE LIGHT OF THE PASSAGE LAMP YOUR SON SAW THAT SHE CARRIED THE PRECIOUS CORONET IN HER HANDS + SHE PASSED DOWN THE STAIRS AND HE THRILLING WITH HORROR RAN ALONG AND SLIPPED BEHIND THE CURTAIN NEAR YOUR DOOR WHENCE HE COULD SEE WHAT PASSED IN THE HALL BENEATH + HE SAW HER STEALTHILY OPEN THE WINDOW HAND OUT THE CORONET TO SOMEONE IN THE GLOOM AND THEN CLOSING IT ONCE MORE HURRY BACK TO HER ROOM PASSING QUITE CLOSE TO WHERE HE STOOD HID BEHIND THE CURTAIN + AS LONG AS SHE WAS ON THE SCENE HE COULD NOT TAKE ANY ACTION WITHOUT A HORRIBLE EXPOSURE OF THE WOMAN WHOM HE LOVED + BUT THE INSTANT THAT SHE WAS GONE HE REALIZED HOW CRUSHING A MISFORTUNE THIS WOULD BE FOR YOU AND HOW ALL IMPORTANT IT WAS TO SET IT RIGHT + HE RUSHED DOWN JUST AS HE WAS IN HIS BARE FEET OPENED THE WINDOW SPRANG OUT INTO THE SNOW AND RAN DOWN THE LANE WHERE HE COULD SEE A DARK FIGURE IN THE MOONLIGHT + SIR GEORGE BURNWELL TRIED TO GET AWAY BUT ARTHUR CAUGHT HIM AND THERE WAS A STRUGGLE BETWEEN THEM YOUR LAD TUGGING AT ONE SIDE OF THE CORONET AND HIS OPPONENT AT THE OTHER + IN THE SCUFFLE YOUR SON STRUCK SIR GEORGE AND CUT HIM OVER THE EYE + THEN SOMETHING SUDDENLY SNAPPED AND YOUR SON FINDING THAT HE HAD THE CORONET IN HIS HANDS RUSHED BACK CLOSED THE WINDOW ASCENDED TO YOUR ROOM AND HAD JUST OBSERVED THAT THE CORONET HAD BEEN TWISTED IN THE STRUGGLE AND WAS ENDEAVOURING TO STRAIGHTEN IT WHEN YOU APPEARED UPON THE SCENE + IS IT POSSIBLE GASPED THE BANKER + YOU THEN ROUSED HIS ANGER BY CALLING HIM NAMES AT A MOMENT WHEN HE FELT THAT HE HAD DESERVED YOUR WARMEST THANKS + HE COULD NOT EXPLAIN THE TRUE STATE OF AFFAIRS WITHOUT BETRAYING ONE WHO CERTAINLY DESERVED LITTLE ENOUGH CONSIDERATION AT HIS HANDS + HE TOOK THE MORE CHIVALROUS VIEW HOWEVER AND PRESERVED HER SECRET + QUOTE AND THAT WAS WHY SHE SHRIEKED AND FAINTED WHEN SHE SAW THE CORONET QUOTE CRIED MR. HOLDER + OH MY GOD WHAT A BLIND FOOL I HAVE BEEN + AND HIS ASKING TO BE ALLOWED TO GO OUT FOR FIVE MINUTES + THE DEAR FELLOW WANTED TO SEE IF THE MISSING PIECE WERE AT THE SCENE OF THE STRUGGLE + HOW CRUELLY I HAVE MISJUDGED HIM + WHEN I ARRIVED AT THE HOUSE CONTINUED HOLMES I AT ONCE WENT VERY CAREFULLY ROUND IT TO OBSERVE IF THERE WERE ANY TRACES IN THE SNOW WHICH MIGHT HELP ME + I KNEW THAT NONE HAD FALLEN SINCE THE EVENING BEFORE AND ALSO THAT THERE HAD BEEN A STRONG FROST TO PRESERVE IMPRESSIONS + I PASSED ALONG THE TRADESMEN'S PATH BUT FOUND IT ALL TRAMPLED DOWN AND INDISTINGUISHABLE + JUST BEYOND IT HOWEVER AT THE FAR SIDE OF THE KITCHEN DOOR A WOMAN HAD STOOD AND TALKED WITH A MAN WHOSE ROUND IMPRESSIONS ON ONE SIDE SHOWED THAT HE HAD A WOODEN LEG + I COULD EVEN TELL THAT THEY HAD BEEN DISTURBED FOR THE WOMAN HAD RUN BACK SWIFTLY TO THE DOOR AS WAS SHOWN BY THE DEEP TOE AND LIGHT HEEL MARKS WHILE WOODEN LEG HAD WAITED A LITTLE AND THEN HAD GONE AWAY + I THOUGHT AT THE TIME THAT THIS MIGHT BE THE MAID AND HER SWEETHEART OF WHOM YOU HAD ALREADY SPOKEN TO ME AND INQUIRY SHOWED IT WAS SO + I PASSED ROUND THE GARDEN WITHOUT SEEING ANYTHING MORE THAN RANDOM TRACKS WHICH I TOOK TO BE THE POLICE BUT WHEN I GOT INTO THE STABLE LANE A VERY LONG AND COMPLEX STORY WAS WRITTEN IN THE SNOW IN FRONT OF ME + THERE WAS A DOUBLE LINE OF TRACKS OF A BOOTED MAN AND A SECOND DOUBLE LINE WHICH I SAW WITH DELIGHT BELONGED TO A MAN WITH NAKED FEET + I WAS AT ONCE CONVINCED FROM WHAT YOU HAD TOLD ME THAT THE LATTER WAS YOUR SON + THE FIRST HAD WALKED BOTH WAYS BUT THE OTHER HAD RUN SWIFTLY AND AS HIS TREAD WAS MARKED IN PLACES OVER THE DEPRESSION OF THE BOOT IT WAS OBVIOUS THAT HE HAD PASSED AFTER THE OTHER + I FOLLOWED THEM UP AND FOUND THEY LED TO THE HALL WINDOW WHERE BOOTS HAD WORN ALL THE SNOW AWAY WHILE WAITING + THEN I WALKED TO THE OTHER END WHICH WAS A HUNDRED YARDS OR MORE DOWN THE LANE + I SAW WHERE BOOTS HAD FACED ROUND WHERE THE SNOW WAS CUT UP AS THOUGH THERE HAD BEEN A STRUGGLE AND FINALLY WHERE A FEW DROPS OF BLOOD HAD FALLEN TO SHOW ME THAT I WAS NOT MISTAKEN + BOOTS HAD THEN RUN DOWN THE LANE AND ANOTHER LITTLE SMUDGE OF BLOOD SHOWED THAT IT WAS HE WHO HAD BEEN HURT + WHEN HE CAME TO THE HIGHROAD AT THE OTHER END I FOUND THAT THE PAVEMENT HAD BEEN CLEARED SO THERE WAS AN END TO THAT CLUE + ON ENTERING THE HOUSE HOWEVER I EXAMINED AS YOU REMEMBER THE SILL AND FRAMEWORK OF THE HALL WINDOW WITH MY LENS AND I COULD AT ONCE SEE THAT SOMEONE HAD PASSED OUT + I COULD DISTINGUISH THE OUTLINE OF AN INSTEP WHERE THE WET FOOT HAD BEEN PLACED IN COMING IN + I WAS THEN BEGINNING TO BE ABLE TO FORM AN OPINION AS TO WHAT HAD OCCURRED + A MAN HAD WAITED OUTSIDE THE WINDOW SOMEONE HAD BROUGHT THE GEMS THE DEED HAD BEEN OVERSEEN BY YOUR SON HE HAD PURSUED THE THIEF HAD STRUGGLED WITH HIM THEY HAD EACH TUGGED AT THE CORONET THEIR UNITED STRENGTH CAUSING INJURIES WHICH NEITHER ALONE COULD HAVE EFFECTED + HE HAD RETURNED WITH THE PRIZE BUT HAD LEFT A FRAGMENT IN THE GRASP OF HIS OPPONENT + SO FAR I WAS CLEAR + THE QUESTION NOW WAS WHO WAS THE MAN AND WHO WAS IT BROUGHT HIM THE CORONET + IT IS AN OLD MAXIM OF MINE THAT WHEN YOU HAVE EXCLUDED THE IMPOSSIBLE WHATEVER REMAINS HOWEVER IMPROBABLE MUST BE THE TRUTH + NOW I KNEW THAT IT WAS NOT YOU WHO HAD BROUGHT IT DOWN SO THERE ONLY REMAINED YOUR NIECE AND THE MAIDS + BUT IF IT WERE THE MAIDS WHY SHOULD YOUR SON ALLOW HIMSELF TO BE ACCUSED IN THEIR PLACE + THERE COULD BE NO POSSIBLE REASON + AS HE LOVED HIS COUSIN HOWEVER THERE WAS AN EXCELLENT EXPLANATION WHY HE SHOULD RETAIN HER SECRET THE MORE SO AS THE SECRET WAS A DISGRACEFUL ONE + WHEN I REMEMBERED THAT YOU HAD SEEN HER AT THAT WINDOW AND HOW SHE HAD FAINTED ON SEEING THE CORONET AGAIN MY CONJECTURE BECAME A CERTAINTY + QUOTE AND WHO COULD IT BE WHO WAS HER CONFEDERATE + A LOVER EVIDENTLY FOR WHO ELSE COULD OUTWEIGH THE LOVE AND GRATITUDE WHICH SHE MUST FEEL TO YOU + I KNEW THAT YOU WENT OUT LITTLE AND THAT YOUR CIRCLE OF FRIENDS WAS A VERY LIMITED ONE + BUT AMONG THEM WAS SIR GEORGE BURNWELL + I HAD HEARD OF HIM BEFORE AS BEING A MAN OF EVIL REPUTATION AMONG WOMEN + IT MUST HAVE BEEN HE WHO WORE THOSE BOOTS AND RETAINED THE MISSING GEMS + EVEN THOUGH HE KNEW THAT ARTHUR HAD DISCOVERED HIM HE MIGHT STILL FLATTER HIMSELF THAT HE WAS SAFE FOR THE LAD COULD NOT SAY A WORD WITHOUT COMPROMISING HIS OWN FAMILY + WELL YOUR OWN GOOD SENSE WILL SUGGEST WHAT MEASURES I TOOK NEXT + I WENT IN THE SHAPE OF A LOAFER TO SIR GEORGE'S HOUSE MANAGED TO PICK UP AN ACQUAINTANCE WITH HIS VALET LEARNED THAT HIS MASTER HAD CUT HIS HEAD THE NIGHT BEFORE AND FINALLY AT THE EXPENSE OF SIX SHILLINGS MADE ALL SURE BY BUYING A PAIR OF HIS CAST OFF SHOES + WITH THESE I JOURNEYED DOWN TO STREATHAM AND SAW THAT THEY EXACTLY FITTED THE TRACKS + I SAW AN ILL DRESSED VAGABOND IN THE LANE YESTERDAY EVENING SAID MR. HOLDER + PRECISELY + IT WAS I. I FOUND THAT I HAD MY MAN SO I CAME HOME AND CHANGED MY CLOTHES + IT WAS A DELICATE PART WHICH I HAD TO PLAY THEN FOR I SAW THAT A PROSECUTION MUST BE AVOIDED TO AVERT SCANDAL AND I KNEW THAT SO ASTUTE A VILLAIN WOULD SEE THAT OUR HANDS WERE TIED IN THE MATTER + I WENT AND SAW HIM + AT FIRST OF COURSE HE DENIED EVERYTHING + BUT WHEN I GAVE HIM EVERY PARTICULAR THAT HAD OCCURRED HE TRIED TO BLUSTER AND TOOK DOWN A LIFE PRESERVER FROM THE WALL + I KNEW MY MAN HOWEVER AND I CLAPPED A PISTOL TO HIS HEAD BEFORE HE COULD STRIKE + THEN HE BECAME A LITTLE MORE REASONABLE + I TOLD HIM THAT WE WOULD GIVE HIM A PRICE FOR THE STONES HE HELD LOOO POUNDS APIECE + THAT BROUGHT OUT THE FIRST SIGNS OF GRIEF THAT HE HAD SHOWN + WHY DASH IT ALL SAID HE I'VE LET THEM GO AT SIX HUNDRED FOR THE THREE + I SOON MANAGED TO GET THE ADDRESS OF THE RECEIVER WHO HAD THEM ON PROMISING HIM THAT THERE WOULD BE NO PROSECUTION + OFF I SET TO HIM AND AFTER MUCH CHAFFERING I GOT OUR STONES AT ONE THOUSAND POUNDS APIECE + THEN I LOOKED IN UPON YOUR SON TOLD HIM THAT ALL WAS RIGHT AND EVENTUALLY GOT TO MY BED ABOUT TWO O'CLOCK AFTER WHAT I MAY CALL A REALLY HARD DAY'S WORK + QUOTE A DAY WHICH HAS SAVED ENGLAND FROM A GREAT PUBLIC SCANDAL QUOTE SAID THE BANKER RISING + SIR I CANNOT FIND WORDS TO THANK YOU BUT YOU SHALL NOT FIND ME UNGRATEFUL FOR WHAT YOU HAVE DONE + YOUR SKILL HAS INDEED EXCEEDED ALL THAT I HAVE HEARD OF IT + AND NOW I MUST FLY TO MY DEAR BOY TO APOLOGIZE TO HIM FOR THE WRONG WHICH I HAVE DONE HIM + AS TO WHAT YOU TELL ME OF POOR MARY IT GOES TO MY VERY HEART + NOT EVEN YOUR SKILL CAN INFORM ME WHERE SHE IS NOW + I THINK THAT WE MAY SAFELY SAY RETURNED HOLMES THAT SHE IS WHEREVER SIR GEORGE BURNWELL IS + IT IS EQUALLY CERTAIN TOO THAT WHATEVER HER SINS ARE THEY WILL SOON RECEIVE A MORE THAN SUFFICIENT PUNISHMENT diff --git a/samples/LMTutorial/train/black_peter.txt b/samples/LMTutorial/train/black_peter.txt new file mode 100755 index 0000000..a4e16f5 --- /dev/null +++ b/samples/LMTutorial/train/black_peter.txt @@ -0,0 +1,549 @@ + I HAVE NEVER KNOWN MY FRIEND TO BE IN BETTER FORM BOTH MENTAL AND PHYSICAL THAN IN THE YEAR NINETY FIVE + HIS INCREASING FAME HAD BROUGHT WITH IT AN IMMENSE PRACTICE AND I SHOULD BE GUILTY OF AN INDISCRETION IF I WERE EVEN TO HINT AT THE IDENTITY OF SOME OF THE ILLUSTRIOUS CLIENTS WHO CROSSED OUR HUMBLE THRESHOLD IN BAKER STREET + HOLMES HOWEVER LIKE ALL GREAT ARTISTS LIVED FOR HIS ART'S SAKE AND SAVE IN THE CASE OF THE DUKE OF HOLDERNESSE I HAVE SELDOM KNOWN HIM CLAIM ANY LARGE REWARD FOR HIS INESTIMABLE SERVICES + SO UNWORLDLY WAS HE OR SO CAPRICIOUS THAT HE FREQUENTLY REFUSED HIS HELP TO THE POWERFUL AND WEALTHY WHERE THE PROBLEM MADE NO APPEAL TO HIS SYMPATHIES WHILE HE WOULD DEVOTE WEEKS OF MOST INTENSE APPLICATION TO THE AFFAIRS OF SOME HUMBLE CLIENT WHOSE CASE PRESENTED THOSE STRANGE AND DRAMATIC QUALITIES WHICH APPEALED TO HIS IMAGINATION AND CHALLENGED HIS INGENUITY + IN THIS MEMORABLE YEAR NINETY FIVE A CURIOUS AND INCONGRUOUS SUCCESSION OF CASES HAD ENGAGED HIS ATTENTION RANGING FROM HIS FAMOUS INVESTIGATION OF THE SUDDEN DEATH OF CARDINAL TOSCA AN INQUIRY WHICH WAS CARRIED OUT BY HIM AT THE EXPRESS DESIRE OF HIS HOLINESS THE POPE DOWN TO HIS ARREST OF WILSON THE NOTORIOUS CANARY TRAINER WHICH REMOVED A PLAGUE SPOT FROM THE EAST END OF LONDON + CLOSE ON THE HEELS OF THESE TWO FAMOUS CASES CAME THE TRAGEDY OF WOODMAN'S LEE AND THE VERY OBSCURE CIRCUMSTANCES WHICH SURROUNDED THE DEATH OF CAPTAIN PETER CAREY + NO RECORD OF THE DOINGS OF MR. SHERLOCK HOLMES WOULD BE COMPLETE WHICH DID NOT INCLUDE SOME ACCOUNT OF THIS VERY UNUSUAL AFFAIR + DURING THE FIRST WEEK OF JULY MY FRIEND HAD BEEN ABSENT SO OFTEN AND SO LONG FROM OUR LODGINGS THAT I KNEW HE HAD SOMETHING ON HAND + THE FACT THAT SEVERAL ROUGH LOOKING MEN CALLED DURING THAT TIME AND INQUIRED FOR CAPTAIN BASIL MADE ME UNDERSTAND THAT HOLMES WAS WORKING SOMEWHERE UNDER ONE OF THE NUMEROUS DISGUISES AND NAMES WITH WHICH HE CONCEALED HIS OWN FORMIDABLE IDENTITY + HE HAD AT LEAST FIVE SMALL REFUGES IN DIFFERENT PARTS OF LONDON IN WHICH HE WAS ABLE TO CHANGE HIS PERSONALITY + HE SAID NOTHING OF HIS BUSINESS TO ME AND IT WAS NOT MY HABIT TO FORCE A CONFIDENCE + THE FIRST POSITIVE SIGN WHICH HE GAVE ME OF THE DIRECTION WHICH HIS INVESTIGATION WAS TAKING WAS AN EXTRAORDINARY ONE + HE HAD GONE OUT BEFORE BREAKFAST AND I HAD SAT DOWN TO MINE WHEN HE STRODE INTO THE ROOM HIS HAT UPON HIS HEAD AND A HUGE BARBED HEADED SPEAR TUCKED LIKE AN UMBRELLA UNDER HIS ARM + QUOTE GOOD GRACIOUS HOLMES QUOTE + I CRIED + YOU DON'T MEAN TO SAY THAT YOU HAVE BEEN WALKING ABOUT LONDON WITH THAT THING + I DROVE TO THE BUTCHER'S AND BACK + THE BUTCHER'S + AND I RETURN WITH AN EXCELLENT APPETITE + THERE CAN BE NO QUESTION MY DEAR WATSON OF THE VALUE OF EXERCISE BEFORE BREAKFAST + BUT I AM PREPARED TO BET THAT YOU WILL NOT GUESS THE FORM THAT MY EXERCISE HAS TAKEN + QUOTE I WILL NOT ATTEMPT IT QUOTE + HE CHUCKLED AS HE POURED OUT THE COFFEE + IF YOU COULD HAVE LOOKED INTO ALLARDYCE'S BACK SHOP YOU WOULD HAVE SEEN A DEAD PIG SWUNG FROM A HOOK IN THE CEILING AND A GENTLEMAN IN HIS SHIRT SLEEVES FURIOUSLY STABBING AT IT WITH THIS WEAPON + I WAS THAT ENERGETIC PERSON AND I HAVE SATISFIED MYSELF THAT BY NO EXERTION OF MY STRENGTH CAN I TRANSFIX THE PIG WITH A SINGLE BLOW + PERHAPS YOU WOULD CARE TO TRY + NOT FOR WORLDS + BUT WHY WERE YOU DOING THIS + BECAUSE IT SEEMED TO ME TO HAVE AN INDIRECT BEARING UPON THE MYSTERY OF WOODMAN'S LEE + AH HOPKINS I GOT YOUR WIRE LAST NIGHT AND I HAVE BEEN EXPECTING YOU + COME AND JOIN US QUOTE + OUR VISITOR WAS AN EXCEEDINGLY ALERT MAN THIRTY YEARS OF AGE DRESSED IN A QUIET TWEED SUIT BUT RETAINING THE ERECT BEARING OF ONE WHO WAS ACCUSTOMED TO OFFICIAL UNIFORM + I RECOGNIZED HIM AT ONCE AS STANLEY HOPKINS A YOUNG POLICE INSPECTOR FOR WHOSE FUTURE HOLMES HAD HIGH HOPES WHILE HE IN TURN PROFESSED THE ADMIRATION AND RESPECT OF A PUPIL FOR THE SCIENTIFIC METHODS OF THE FAMOUS AMATEUR + HOPKINS'S BROW WAS CLOUDED AND HE SAT DOWN WITH AN AIR OF DEEP DEJECTION + NO THANK YOU SIR + I BREAKFASTED BEFORE I CAME ROUND + I SPENT THE NIGHT IN TOWN FOR I CAME UP YESTERDAY TO REPORT + AND WHAT HAD YOU TO REPORT + FAILURE SIR ABSOLUTE FAILURE + YOU HAVE MADE NO PROGRESS + QUOTE NONE QUOTE + DEAR ME + I MUST HAVE A LOOK AT THE MATTER + I WISH TO HEAVENS THAT YOU WOULD MR. HOLMES + IT'S MY FIRST BIG CHANCE AND I AM AT MY WIT'S END + FOR GOODNESS' SAKE COME DOWN AND LEND ME A HAND + WELL WELL IT JUST HAPPENS THAT I HAVE ALREADY READ ALL THE AVAILABLE EVIDENCE INCLUDING THE REPORT OF THE INQUEST WITH SOME CARE + BY THE WAY WHAT DO YOU MAKE OF THAT TOBACCO POUCH FOUND ON THE SCENE OF THE CRIME + IS THERE NO CLUE THERE QUOTE + HOPKINS LOOKED SURPRISED + IT WAS THE MAN'S OWN POUCH SIR + HIS INITIALS WERE INSIDE IT + AND IT WAS OF SEALSKIN AND HE WAS AN OLD SEALER + BUT HE HAD NO PIPE + NO SIR WE COULD FIND NO PIPE + INDEED HE SMOKED VERY LITTLE AND YET HE MIGHT HAVE KEPT SOME TOBACCO FOR HIS FRIENDS + QUOTE NO DOUBT + I ONLY MENTION IT BECAUSE IF I HAD BEEN HANDLING THE CASE I SHOULD HAVE BEEN INCLINED TO MAKE THAT THE STARTINGPOINT OF MY INVESTIGATION + HOWEVER MY FRIEND DOCTOR WATSON KNOWS NOTHING OF THIS MATTER AND I SHOULD BE NONE THE WORSE FOR HEARING THE SEQUENCE OF EVENTS ONCE MORE + JUST GIVE US SOME SHORT SKETCHES OF THE ESSENTIALS + STANLEY HOPKINS DREW A SLIP OF PAPER FROM HIS POCKET + I HAVE A FEW DATES HERE WHICH WILL GIVE YOU THE CAREER OF THE DEAD MAN CAPTAIN PETER CAREY + HE WAS BOM IN FORTY FIVE FIFTY YEARS OF AGE + HE WAS A MOST DARING AND SUCCESSFUL SEAL AND WHALE FISHER + IN ONE THOUSAND EIGHT HUNDRED EIGHTY THREE HE COMMANDED THE STEAM SEALER SEA UNICORN OF DUNDEE + HE HAD THEN HAD SEVERAL SUCCESSFUL VOYAGES IN SUCCESSION AND IN THE FOLLOWING YEAR ONE THOUSAND EIGHT HUNDRED EIGHTY FOUR HE RETIRED + AFTER THAT HE TRAVELLED FOR SOME YEARS AND FINALLY HE BOUGHT A SMALL PLACE CALLED WOODMAN'S LEE NEAR FOREST ROW IN SUSSEX + THERE HE HAS LIVED FOR SIX YEARS AND THERE HE DIED JUST A WEEK AGO TO DAY + THERE WERE SOME MOST SINGULAR POINTS ABOUT THE MAN + IN ORDINARY LIFE HE WAS A STRICT PURITAN A SILENT GLOOMY FELLOW + HIS HOUSEHOLD CONSISTED OF HIS WIFE HIS DAUGHTER AGED TWENTY AND TWO FEMALE SERVANTS + THESE LAST WERE CONTINUALLY CHANGING FOR IT WAS NEVER A VERY CHEERY SITUATION AND SOMETIMES IT BECAME PAST ALL BEARING + THE MAN WAS AN INTERMITTENT DRUNKARD AND WHEN HE HAD THE FIT ON HIM HE WAS A PERFECT FIEND + HE HAS BEEN KNOWN TO DRIVE HIS WIFE AND DAUGHTER OUT OF DOORS IN THE MIDDLE OF THE NIGHT AND FLOG THEM THROUGH THE PARK UNTIL THE WHOLE VILLAGE OUTSIDE THE GATES WAS AROUSED BY THEIR SCREAMS + HE WAS SUMMONED ONCE FOR A SAVAGE ASSAULT UPON THE OLD VICAR WHO HAD CALLED UPON HIM TO REMONSTRATE WITH HIM UPON HIS CONDUCT + IN SHORT MR. HOLMES YOU WOULD GO FAR BEFORE YOU FOUND A MORE DANGEROUS MAN THAN PETER CAREY AND I HAVE HEARD THAT HE BORE THE SAME CHARACTER WHEN HE COMMANDED HIS SHIP + HE WAS KNOWN IN THE TRADE AS BLACK PETER AND THE NAME WAS GIVEN HIM NOT ONLY ON ACCOUNT OF HIS SWARTHY FEATURES AND THE COLOUR OF HIS HUGE BEARD BUT FOR THE HUMOURS WHICH WERE THE TERROR OF ALL AROUND HIM + I NEED NOT SAY THAT HE WAS LOATHED AND AVOIDED BY EVERY ONE OF HIS NEIGHBOURS AND THAT I HAVE NOT HEARD ONE SINGLE WORD OF SORROW ABOUT HIS TERRIBLE END + YOU MUST HAVE READ IN THE ACCOUNT OF THE INQUEST ABOUT THE MAN'S CABIN MR. HOLMES BUT PERHAPS YOUR FRIEND HERE HAS NOT HEARD OF IT + HE HAD BUILT HIMSELF A WOODEN OUTHOUSE HE ALWAYS CALLED IT THE CABIN' A FEW HUNDRED YARDS FROM HIS HOUSE AND IT WAS HERE THAT HE SLEPT EVERY NIGHT + IT WAS A LITTLE SINGLE ROOMED HUT SIXTEEN FEET BY TEN + HE KEPT THE KEY IN HIS POCKET MADE HIS OWN BED CLEANED IT HIMSELF AND ALLOWED NO OTHER FOOT TO CROSS THE THRESHOLD + THERE ARE SMALL WINDOWS ON EACH SIDE WHICH WERE COVERED BY CURTAINS AND NEVER OPENED + ONE OF THESE WINDOWS WAS TURNED TOWARDS THE HIGH ROAD AND WHEN THE LIGHT BURNED IN IT AT NIGHT THE FOLK USED TO POINT IT OUT TO EACH OTHER AND WONDER WHAT BLACK PETER WAS DOING IN THERE + THAT'S THE WINDOW MR. HOLMES WHICH GAVE US ONE OF THE FEW BITS OF POSITIVE EVIDENCE THAT CAME OUT AT THE INQUEST + QUOTE YOU REMEMBER THAT A STONEMASON NAMED SLATER WALKING FROM FOREST ROW ABOUT ONE O'CLOCK IN THE MORNING TWO DAYS BEFORE THE MURDER STOPPED AS HE PASSED THE GROUNDS AND LOOKED AT THE SQUARE OF LIGHT STILL SHINING AMONG THE TREES + HE SWEARS THAT THE SHADOW OF A MAN'S HEAD TURNED SIDEWAYS WAS CLEARLY VISIBLE ON THE BLIND AND THAT THIS SHADOW WALS CERTAINLY NOT THAT OF PETER CAREY WHOM HE KNEW WELL + IT WAS THAT OF A BEARDED MAN BUT THE BEARD WAS SHORT AND BRISTLED FORWARD IN A WAY VERY DIFFERRNT FROM THAT OF THE CAPTAIN + SO HE SAYS BUT HE HAD BEEN TWO HOURS IN THE PUBLIC HOUSE AND IT IS SOME DISTANCE FROM THE ROAD TO THE WINDOW + BESIDES THIS REFERS TO THE MONDAY AND THE CRIME WAS DONE UPON THE WEDNESDAY + ON THE TUESDAY PETER CAREY WAS IN ONE OF HIS BLACKEST MOODS FLUSHED WITH DRINK AND AS SAVAGE AS A DANGEROUS WILD BEAST + HE ROAMED ABOUT THE HOUSE AND THE WOMEN RAN FOR IT WHEN THEY HEARD HIM COMING + LATE IN THE EVENING HE WENT DOWN TO HIS OWN HUT + ABOUT TWO O'CLOCK THE FOLLOWING MORNING HIS DAUGHTER WHO SLEPT WITH HER WINDOW OPEN HEARD A MOST FEARFUL YELL FROM THAT DIRECTION BUT IT WAS NO UNUSUAL THING FOR HIM TO BAWL AND SHOUT WHEN HE WAS IN DRINK SO NO NOTICE WAS TAKEN + ON RISING ST SEVEN ONE OF THE MAIDS NOTICED THAT THE DOOR OF THE HUT WAS OPEN BUT SO GREAT WAS THE TERROR WHICH THE MAN CAUSED THAT IT WAS MIDDAY BEFORE ANYONE WOULD VENTURE DOWN TO SEE WHAT BAD BECOME OF HIM + PEEPING INTO THE OPEN DOOR THEY SAW A SIGHT WHICH SENT THEM FLYING WITH WHITE FACES INTO THE VILLAGE + WITHIN AN HOUR I WAS ON THE SPOT AND HAD TAKEN OVER THE CASE + WELL I HAVE FAIRLY STEADY NERVES AS YOU KNOW MR. HOLMES BUT I GIVE YOU MY WORD THAT I GOT A SHAKE WHEN I PUT MY HEAD INTO THAT LITTLE HOUSE + IT WAS DRONING LIKE A HARMONIUM WITH THE FLIES AND BLUEBOTTLES AND THE FLOOR AND WALLS WERE LIKE A SLAUGHTER HOUSE + HE HAD CALLED IT A CABIN AND A CABIN IT WAS SURE ENOUGH FOR YOU WOULD HAVE THOUGHT THAT YOU WERE IN A SHIP + THERE WAS A BUNK AT ONE END A SEA CHEST MAPS AND CHARTS A PICTURE OF THE SEA UNICORIN A LINE OF LOGBOOKS ON A SHELF ALL EXACTLY AS ONE WOULD EXPECT TO FIND IT IN A CAPTAIN'S ROOM + AND THERE IN THE MIDDLE OF IT WAS THE MAN HIMSELF HIS FACE TWISTED LIKE A LOST SOUL IN TORNMENT AND HIS GREAT BRINDLED BEARD STUCK UPWARD IN HIS AGONY + RIGHT THROUGH HIS BROAD BREAST A STEEL TARPOON HAD BEEN DRIVEN AND IT HAD SUNK DEEP INTO THE WOOD OF THE WALL BEHIND HIM + HE WAS PINNED LIKE A BEETLE ON A CARD + OF COURSE HE WAS QUITE DEAD AND HAD BEEN SO FROM THE INSTANT THAT HE HAD UTTERED THAT LAST YELL OF AGONY + I KNOW YOUR METHODS SIR AND I APPLIED THEM + BEFORE I PERMITTED ANYTHING TO BE MOVED I EXAMINED MOST CAREFULLY THE GROUND OUTSIDE AND ALSO THE FLOOR OF THE ROOM + THERE WERE NO FOOTMARKS + MEANING THAT YOU SAW NONE + QUOTE I ASSURE YOU SIR THAT THERE WERE NONE QUOTE + MY GOOD HOPKINS I HAVE INVESTIGATED MANY CRIMES BUT I HAVE NEVER YET SEEN ONE WHICH WAS COMMITED BY A FLYING CREATURE + AS LONG AS THE CRIMINAL REMAINS UPON TWO LEGS SO LONG MUST THERE BE SOME INDENTATION SOME ABRASION SOME TRIFLING DISPLACEMENT WHICH CAN BE DETECTED BY THE SCIENTIFIC SEARCHER + IT IS INCREDIBLE THAT THIS BLOOD BESPATTERED ROOM CONTAINED NO TRACE WHICH COULD HAVE AIDED US + I UNDERSTAND HOWEVER FROM THE INQUEST THAT THERE WERE SOME OBJECTS WHICH YOU FAILED TO OVERLOOK + THE YOUNG INSPECTOR WINCED AT MY COMPANION'S IRONICAL COMMENTS + I WAS A FOOL NOT TO CALL YOU IN AT THE TIME MR. HOLMES + HOWEVER THAT'S PAST PRAYING FOR NOW + YES THERE WERE SEVERAL OBJECTS IN THE ROOM WHICH CALLED FOR SPECIAL ATTENTION + ONE WAS THE HARPOON WITH WHICH THE DEED WAS COMMITTED + IT HAD BEEN SNATCHED DOWN FROM A RACK ON THE WALL + TWO OTHERS REMAINED THERE AND THERE WAS A VACANT PLACE FOR THE THIRD + ON THE STOCK WAS ENGRAVED S. S. + SEA UNICORN DUNDEE + THIS SEEMED TO ESTABLISH THAT THE CRIME HAD BEEN DONE IN A MOMENT OF FURY AND THAT THE MURDERER HAD SEIZED THE FIRST WEAPON WHICH CAME IN HIS WAY + THE FACT THAT THE CRIME WAS COMMITTED AT TWO IN THE MORNING AND YET PETER CAREY WAS FULLY DRESSED SUGGESTED THAT HE HAD AN APPOINTMENT WITH THE MURDERER WHICH IS BORNE OUT BY THE FACT THAT A BOTTLE OF RUM AND TWO DIRTY GLASSES STOOD UPON THE TABLE + YES SAID HOLMES I THINK THAT BOTH INFERENCES ARE PERMISSABLE + WAS THERE ANY OTHER SPIRIT BUT RUM IN THE ROOM QUOTE + YES THERE WAS A TANTALUS CONTAINING BRANDY AND WHISKY ON THE SEA CHEST + IT IS OF NO IMPORTANCE TO US HOWEVER SINCE THE DECANTERS WERE FULL AND IT HAD THEREFORE NOT BEEN USED + FOR ALL THAT ITS PRESENCE HAD SOME SIGNIFICANCE SAID HOLMES + HOWEVER LET US HEAR SOME MORE ABOUT THE OBJECTS WHICH DO SEEM TO YOU TO BEAR UPON THE CASE + THERE WAS THE TOBACCO POUCH UPON THE TABLE + QUOTE WHAT PART OF THE TABLE QUOTE + IT LAY IN THE MIDDLE + IT WAS OF COARSE SEALSKIN THE STRAIGHTHAIRED SKIN WITH A LEATHER THONG TO BIND IT + INSIDE WAS P. C. ON THE FLAP + THERE WAS HALF AN OUNCE OF STRONG SHIP'S TOBACCO IN IT + EXCELLENT + WHAT MORE + STANLEY HOPKINS DREW FROM HIS POCKET A DRAB COVERED NOTEBOOK + THE OUTSIDE WAS ROUGH AND WORN THE LEAVES DISCOLOURED + ON THE FIRST PAGE WERE WRITTEN THE INITIALS J. H. N. AND THE DATE ONE THOUSAND EIGHT HUNDRED EIGHTY THREE + HOLMES LAID IT ON THE TABLE AND EXAMINED IT IN HIS MINUTE WAY WHILE HOPKINS AND I GAZED OVER EACH SHOULDER + ON THE SECOND PAGE WERE THE PRINTED LETTERS QUOTE C. P. R. QUOTE AND THEN CAME SEVERAL SHEETS OF NUMBERS + ANOTHER HEADING WAS ARGENTINE ANOTHER COSTA RICA AND ANOTHER SAN PAULO EACH WITH PAGES OF SIGNS AND FIGURES AFTER IT + WHAT DO YOU MAKE OF THESE ASKED HOLMES + THEY APPEAR TO BE LISTS OF STOCK EXCHANGE SECURITIES + I THOUGHT THAT J. H. N. WERE THE INITIALS OF A BROKER AND THAT C. P. R. MAY HAVE BEEN HIS CLIENT + TRY CANADIAN PACIFIC RAILWAY SAID HOLMES + STANLEY HOPKINS SWORE BETWEEN HIS TEETH AND STRUCK HIS THIGH WITH HIS CLENCHED HAND + QUOTE WHAT A FOOL I HAVE BEEN QUOTE HE CRIED + OF COURSE IT IS AS YOU SAY + THEN J. H. N. ARE THE ONLY INITIALS WE HAVE TO SOLVE + I HAVE ALREADY EXAMINED THE OLD STOCK EXCHANGE LISTS AND I CAN FIND NO ONE IN ONE THOUSAND EIGHT HUNDRED EIGHTY THREE EITHER IN THE HOUSE OR AMONG THE OUTSIDE BROKERS WHOSE INITIALS CORRESPOND WITH THESE + YET I FEEL THAT THE CLUE IS THE MOST IMPORTANT ONE THAT I HOLD + YOU WILL ADMIT MR. HOLMES THAT THERE IS A POSSIBILITY THAT THESE INITIALS ARE THOSE OF THE SECOND PERSON WHO WAS PRESENT IN OTHER WORDS OF THE MURDERER + I WOULD ALSO URGE THAT THE INTRODUCTION INTO THE CASE OF A DOCUMENT RELATING TO LARGE MASSES OF VALUABLE SECURITIES GIVES US FOR THE FIRST TIME SOME INDICATION OF A MOTIVE FOR THE CRIME + SHERLOCK HOLMES'S FACE SHOWED THAT HE WAS THOROUGHLY TAKEN ABACK BY THIS NEW DEVELOPMENT + I MUST ADMIT BOTH YOUR POINTS SAID HE + I CONFESS THAT THIS NOTEBOOK WHICH DID NOT APPEAR AT THE INQUEST MODIFIES ANY VIEWS WHICH I MAY HAVE FORMED + I HAD COME TO A THEORY OF THE CRIME IN WHICH I CAN FIND NO PLACE FOR THIS + HAVE YOU ENDEAVOURED TO TRACE ANY OF THE SECURITIES HERE MENTIONED + INQUIRIES ARE NOW BEING MADE AT THE OFFICES BUT I FEAR THAT THE COMPLETE REGISTER OF THE STOCKHOLDERS OF THESE SOUTH AMERICAN CONCERNS IS IN SOUTH AMERICA AND THAT SOME WEEKS MUST ELAPSE BEFORE WE CAN TRACE THE SHARES + HOLMES HAD BEEN EXAMINING THE COVER OF THE NOTEBOOK WITH HIS MAGNIFYING LENS + QUOTE SURELY THERE IS SOME DISCOLOURATION HERE QUOTE SAID HE + YES SIR IT IS A BLOOD STAIN + I TOLD YOU THAT I PICKED THE BOOK OFF THE FLOOR + WAS THE BLOOD STAIN ABOVE OR BELOW + ON THE SIDE NEXT THE BOARDS + WHICH PROVES OF COURSE THAT THE BOOK WAS DROPPED AFTER THE CRIME WAS COMMITTED + QUOTE EXACTLY MR. HOLMES + I APPRECIATED THAT POINT AND I CONJECTURED THAT IT WAS DROPPED BY THE MURDERER IN HIS HURRIED FLIGHT + IT LAY NEAR THE DOOR + I SUPPOSE THAT NONE OF THESE SECURITIES HAVE BEEN FOUND AMONG THE PROPERTY OF THE DEAD MAN + NO SIR + HAVE YOU ANY REASON TO SUSPECT ROBBERY + NO SIR + NOTHING SEEMED TO HAVE BEEN TOUCHED QUOTE + DEAR ME IT IS CERTAINLY A VERY INTERESTING CASE + THEN THERE WAS A KNIFE WAS THERE NOT + A SHEATH KNIFE STILL IN ITS SHEATH + IT LAY AT THE FEET OF THE DEAD MAN + MRS. CAREY HAS IDENTIFIED IT AS BEING HER HUSBAND'S PROPERTY + HOLMES WAS LOST IN THOUGHT FOR SOME TIME + WELL SAID HE AT LAST I SUPPOSE I SHALL HAVE TO COME OUT AND HAVE A LOOK AT IT + STANLEY HOPKINS GAVE A CRY OF JOY + QUOTE THANK YOU SIR + THAT WILL INDEED BE A WEIGHT OFF MY MIND + HOLMES SHOOK HIS FINGER AT THE INSPECTOR + IT WOULD HAVE BEEN AN EASIER TASK A WEEK AGO SAID HE + BUT EVEN NOW MY VISIT MAY NOT BE ENTIRELY FRUITLESS + WATSON IF YOU CAN SPARE THE TIME I SHOULD BE VERY GLAD OF YOUR COMPANY + IF YOU WILL CALL A FOUR WHEELER HOPKINS WE SHALL BE READY TO START FOR FOREST ROW IN A QUARTER OF AN HOUR + ALIGHTING AT THE SMALL WAYSIDE STATION WE DROVE FOR SOME MILES THROUGH THE REMAINS OF WIDESPREAD WOODS WHICH WERE ONCE PART OF THAT GREAT FOREST WHICH FOR SO LONG HELD THE SAXON INVADERS AT BAY THE IMPENETRABLE WEALD FOR SIXTY YEARS THE BULWARK OF BRITAIN + VAST SECTIONS OF IT HAVE BEEN CLEARED FOR THIS IS THE SEAT OF THE FIRST IRON WORKS OF THE COUNTRY AND THE TREES HAVE BEEN FELLED TO SMELT THE ORE + NOW THE RICHER FIELDS OF THE NORTH HAVE ABSORBED THE TRADE AND NOTHING SAVE THESE RAVAGED GROVES AND GREAT SCARS IN THE EARTH SHOW THE WORK OF THE PAST + HERE IN A CLEARING UPON THE GREEN SLOPE OF A HILL STOOD A LONG LOW STONE HOUSE APPROACHED BY A CURVING DRIVE RUNNING THROUGH THE FIELDS + NEARER THE ROAD AND SURROUNDED ON THREE SIDES BY BUSHES WAS A SMALL OUTHOUSE ONE WINDOW AND THE DOOR FACING IN OUR DIRECTION + IT WAS THE SCENE OF THE MURDER + STANLEY HOPKINS LED US FIRST TO THE HOUSE WHERE HE INTRODUCED US TO A HAGGARD GRAY HAIRED WOMAN THE WIDOW OF THE MURDERED MAN WHOSE GAUNT AND DEEP LINED FACE WITH THE FURTIVE LOOK OF TERROR IN THE DEPTHS OF HER RED RIMMED EYES. TOLD OF THE YEARS OF HARDSHIP AND ILL USAGE WHICH SHE HAD ENDURED + WITH HER WAS HER DAUGHTER A PALE FAIR HAIRED GIRL WHOSE EYES BLAZED DEFIANTLY AT US AS SHE TOLD US THAT SHE WAS GLAD THAT HER FATHER WAS DEAD AND THAT SHE BLESSED THE HAND WHICH HAD STRUCK HIM DOWN + IT WAS A TERRIBLE HOUSEHOLD THAT BLACK PETER CAREY HAD MADE FOR HIMSELF AND IT WAS WITH A SENSE OF RELIEF THAT WE FOUND OURSELVES IN THE SUNLIGHT AGAIN AND MAKING OUR WAY ALONG A PATH WHICH HAD BEEN WORN ACROSS THE FIELDS BY THE FEET OF THE DEAD MAN + THE OUTHOUSE WAS THE SIMPLEST OF DWELLINGS WOODEN WALLED SHINGLE ROOFED ONE WINDOW BESIDE THE DOOR AND ONE ON THE FARTHER SIDE + STANLEY HOPKINS DREW THE KEY FROM HIS POCKET AND HAD STOOPED TO THE LOCK WHEN HE PAUSED WITH A LOOK OF ATTENTION AND SURPRISE UPON HIS FACE + QUOTE SOMEONE HAS BEEN TAMPERING WITH IT QUOTE HE SAID + THERE COULD BE NO DOUBT OF THE FACT + THE WOODWORK WAS CUT AND THE SCRATCHES SHOWED WHITE THROUGH THE PAINT AS IF THEY HAD BEEN THAT INSTANT DONE + HOLMES HAD BEEN EXAMINING THE WINDOW + SOMEONE HAS TRIED TO FORCE THIS ALSO + WHOEVER IT WAS HAS FAILED TO MAKE HIS WAY IN + HE MUST HAVE BEEN A VERY POOR BURGLAR + THIS IS A MOST EXTRAORDINARY THING SAID THE INSPECTOR I COULD SWEAR THAT THESE MARKS WERE NOT HERE YESTERDAY EVENING + SOME CURIOUS PERSON FROM THE VILLAGE PERHAPS I SUGGESTED + VERY UNLIKELY + FEW OF THEM WOULD DARE TO SET FOOT IN THE GROUNDS FAR LESS TRY TO FORCE THEIR WAY INTO THE CABIN + WHAT DO YOU THINK OF IT MR. HOLMES QUOTE + I THINK THAT FORTUNE IS VERY KIND TO US + YOU MEAN THAT THE PERSON WILL COME AGAIN + IT IS VERY PROBABLE + HE CAME EXPECTING TO FIND THE DOOR OPEN + HE TRIED TO GET IN WITH THE BLADE OF A VERY SMALL PENKNIFE + HE COULD NOT MANAGE IT + WHAT WOULD HE DO + COME AGAIN NEXT NIGHT WITH A MORE USEFUL TOOL + QUOTE SO I SHOULD SAY + IT WILL BE OUR FAULT IF WE ARE NOT THERE TO RECEIVE HIM + MEANWHILE LET ME SEE THE INSIDE OF THE CABIN + THE TRACES OF THE TRAGEDY HAD BEEN REMOVED BUT THE FURNITURE WITHIN THE LITTLE ROOM STILL STOOD AS IT HAD BEEN ON THE NIGHT OF THE CRIME + FOR TWO HOURS WITH MOST INTENSE CONCENTRATION HOLMES EXAMINED EVERY OBJECT IN TURN BUT HIS FACE SHOWED THAT HIS QUEST WAS NOT A SUCCESSFUL ONE + ONCE ONLY HE PAUSED IN HIS PATIENT INVESTIGATION + HAVE YOU TAKEN ANYTHING OFF THIS SHELF HOPKINS + NO I HAVE MOVED NOTHING + SOMETHING HAS BEEN TAKEN + THERE IS LESS DUST IN THIS CORNER OF THE SHELF THAN ELSEWHERE + IT MAY HAVE BEEN A BOOK LYING ON ITS SIDE + IT MAY HAVE BEEN A BOX + WELL WELL I CAN DO NOTHING MORE + LET US WALK IN THESE BEAUTIFUL WOODS WATSON AND GIVE A FEW HOURS TO THE BIRDS AND THE FLOWERS + WE SHALL MEET YOU HERE LATER HOPKINS AND SEE IF WE CAN COME TO CLOSER QUARTERS WITH THE GENTLEMAN WHO HAS PAID THIS VISIT IN THE NIGHT + IT.WAS PAST ELEVEN O'CLOCK WHEN WE FORMED OUR LITTLE AMBUSCADE + HOPKINS WAS FOR LEAVING THE DOOR OF THE HUT OPEN BUT HOLMES WAS OF THE OPINION THAT THIS WOULD ROUSE THE SUSPICIONS OF THE STRANGER + THE LOCK WAS A PERFECTLY SIMPLE ONE AND ONLY A STRONG BLADE WAS NEEDED TO PUSH IT BACK + HOLMES ALSO SUGGESTED THAT WE SHOULD WAIT NOT INSIDE THE HUT BUT OUTSIDE IT AMONG THE BUSHES WHICH GREW ROUND THE FARTHER WINDOW + IN THIS WAY WE SHOULD BE ABLE TO WATCH OUR MAN IF HE STRUCK A LIGHT AND SEE WHAT HIS OBJECT WAS IN THIS STEALTHY NOCTURNAL VISIT + IT WAS A LONG AND MELANCHOLY VIGIL AND YET BROUGHT WITH IT SOMETHING OF THE THRILL WHICH THE HUNTER FEELS WHEN HE LIES BESIDE THE WATER POOL AND WAITS FOR THE COMING OF THE THIRSTY BEAST OF PREY + WHAT SAVAGE CREATURE WAS IT WHICH MIGHT STEAL UPON US OUT OF THE DARKNESS + WAS IT A FIERCE TIGER OF CRIME WHICH COULD ONLY BE TAKEN FIGHTING HARD WITH FLASHING FANG AND CLAW OR WOULD IT PROVE TO BE SOME SKULKING JACKAL DANGEROUS ONLY TO THE WEAK AND UNGUARDED + IN ABSOLUTE SILENCE WE CROUCHED AMONGST THE BUSHES WAITING FOR WHATEVER MIGHT COME + AT FIRST THE STEPS OF A FEW BELATED VILLAGERS OR THE SOUND OF VOICES FROM THE VILLAGE LIGHTENED OUR VIGIL BUT ONE BY ONE THESE INTERRUPTIONS DIED AWAY AND AN ABSOLUTE STILLNESS FELL UPON US SAVE FOR THE CHIMES OF THE DISTANT CHURCH WHICH TOLD US OF THE PROGRESS OF THE NIGHT AND FOR THE RUSTLE AND WHISPER OF A FINE RAIN FALLING AMID THE FOLIAGE WHICH ROOFED US IN + HALF PAST TWO HAD CHIMED AND IT WAS THE DARKEST HOUR WHICH PRECEDES THE DAWN WHEN WE ALL STARTED AS A LOW BUT SHARP CLICK CAME FROM THE DIRECTION OF THE GATE + SOMEONE HAD ENTERED THE DRIVE + AGAIN THERE WAS A LONG SILENCE AND I HAD BEGUN TO FEAR THAT IT WAS A FALSE ALARM WHEN A STEALTHY STEP WAS HEARD UPON THE OTHER SIDE OF THE HUT AND A MOMENT LATER A METALLIC SCRAPING AND CLINKING + THE MAN WAS TRYING TO FORCE THE LOCK + THIS TIME HIS SKILL WAS GREATER OR HIS TOOL WAS BETTER FOR THERE WAS A SUDDEN SNAP AND THE CREAK OF THE HINGES + THEN A MATCH WAS STRUCK AND NEXT INSTANT THE STEADY LIGHT FROM A CANDLE FILLED THE INTERIOR OF THE HUT + THROUGH THE GAUZE CURTAIN OUR EYES WERE ALL RIVETED UPON THE SCENE WITHIN + THE NOCTURNAL VISITOR WAS A YOUNG MAN FRAIL AND THIN WITH A BLACK MOUSTACHE WHICH INTENSIFIED THE DEADLY PALLOR OF HIS FACE + HE COULD NOT HAVE BEEN MUCH ABOVE TWENTY YEARS OF AGE + I HAVE NEVER SEEN ANY HUMAN BEING WHO APPEARED TO BE IN SUCH A PITIABLE FRIGHT FOR HIS TEETH WERE VISIBLY CHATTERING AND HE WAS SHAKING IN EVERY LIMB + HE WAS DRESSED LIKE A GENTLEMAN IN NORFOLK JACKET AND KNICKERBOCKERS WITH A CLOTH CAP UPON HIS HEAD + WE WATCHED HIM STARING ROUND WITH FRIGHTENED EYES + THEN HE LAID THE CANDLE END UPON THE TABLE AND DISAPPEARED FROM OUR VIEW INTO ONE OF THE CORNERS + HE RETURNED WITH A LARGE BOOK ONE OF THE LOGBOOKS WHICH FORMED A LINE UPON THE SHELVES + LEANING ON THE TABLE HE RAPIDLY TURNED OVER THE LEAVES OF THIS VOLUME UNTIL HE CAME TO THE ENTRY WHICH HE SOUGHT + THEN WITH AN ANGRY GESTURE OF HIS CLENCHED HAND HE CLOSED THE BOOK REPLACED IT IN THE CORNER AND PUT OUT THE LIGHT + HE HAD HARDLY TURNED TO LEAVE THE HUT WHEN HOPKINS'S HAND WAS ON THE FELLOW'S COLLAR AND I HEARD HIS LOUD GASP OF TERROR AS HE UNDERSTOOD THAT HE WAS TAKEN + THE CANDLE WAS RELIT AND THERE WAS OUR WRETCHED CAPTIVE SHIVERING AND COWERING IN THE GRASP OF THE DETECTIVE + HE SANK DOWN UPON THE SEA CHEST AND LOOKED HELPLESSLY FROM ONE OF US TO THE OTHER + QUOTE NOW MY FINE FELLOW QUOTE SAID STANLEY HOPKINS QUOTE WHO ARE YOU AND WHAT DO YOU WANT HERE QUOTE + THE MAN PULLED HIMSELF TOGETHER AND FACED US WITH AN EFFORT AT SELF COMPOSURE + YOU ARE DETECTIVES I SUPPOSE SAID HE + YOU IMAGINE I AM CONNECTED WITH THE DEATH OF CAPTAIN PETER CAREY + I ASSURE YOU THAT I AM INNOCENT + WE'LL SEE ABOUT THAT SAID HOPKINS + FIRST OF ALL WHAT IS YOUR NAME + QUOTE IT IS JOHN HOPLEY NELIGAN QUOTE + I SAW HOLMES AND HOPKINS EXCHANGE A QUICK GLANCE + WHAT ARE YOU DOING HERE + CAN I SPEAK CONFIDENTIALLY + NO CERTAINLY NOT + WHY SHOULD I TELL YOU + IF YOU HAVE NO ANSWER IT MAY GO BADLY WITH YOU AT THE TRIAL + THE YOUNG MAN WINCED + QUOTE WELL I WILL TELL YOU QUOTE HE SAID + WHY SHOULD I NOT + AND YET I HATE TO THINK OF THIS OLD SCANDAL GAINING A NEW LEASE OF LIFE + DID YOU EVER HEAR OF DAWSON AND NELIGAN + I COULD SEE FROM HOPKINS'S FACE THAT HE NEVER HAD BUT HOLMES WAS KEENLY INTERESTED + YOU MEAN THE WEST COUNTRY BANKERS SAID HE + THEY FAILED FOR A MILLION RUINED HALF THE COUNTY FAMILIES OF CORNWALL AND NELIGAN DISAPPEARED + EXACTLY + NELIGAN WAS MY FATHER QUOTE + AT LAST WE WERE GETTING SOMETHING POSITIVE AND YET IT SEEMED A LONG GAP BETWEEN AN ABSCONDING BANKER AND CAPTAIN PETER CAREY PINNED AGAINST THE WALL WITH ONE OF HIS OWN HARPOONS + WE ALL LISTENED INTENTLY TO THE YOUNG MAN'S WORDS + IT WAS MY FATHER WHO WAS REALLY CONCERNED + DAWSON HAD RETIRED + I WAS ONLY TEN YEARS OF AGE AT THE TIME BUT I WAS OLD ENOUGH TO FEEL THE SHAME AND HORROR OF IT ALL + IT HAS ALWAYS BEEN SAID THAT MY FATHER STOLE ALL THE SECURITIES AND FLED + IT IS NOT TRUE + IT WAS HIS BELIEF THAT IF HE WERE GIVEN TIME IN WHICH TO REALIZE THEM ALL WOULD BE WELL AND EVERY CREDITOR PAID IN FULL + HE STARTED IN HIS LITTLE YACHT FOR NORWAY JUST BEFORE THE WARRANT WAS ISSUED FOR HIS ARREST + I CAN REMEMBER THAT LAST NIGHT WHEN HE BADE FAREWELL TO MY MOTHER + HE LEFT US A LIST OF THE SECURITIES HE WAS TAKING AND HE SWORE THAT HE WOULD COME BACK WITH HIS HONOUR CLEARED AND THAT NONE WHO HAD TRUSTED HIM WOULD SUFFER + WELL NO WORD WAS EVER HEARD FROM HIM AGAIN + BOTH THE YACHT AND HE VANISHED UTTERLY + WE BELIEVED MY MOTHER AND I THAT HE AND IT WITH THE SECURITIES THAT HE HAD TAKEN WITH HIM WERE AT THE BOTTOM OF THE SEA + WE HAD A FAITHFUL FRIEND HOWEVER WHO IS A BUSINESS MAN AND IT WAS HE WHO DISCOVERED SOME TIME AGO THAT SOME OF THE SECURITIES WHICH MY FATHER HAD WITH HIM HAD REAPPEARED ON THE LONDON MARKET + YOU CAN IMAGINE OUR AMAZEMENT + I SPENT MONTHS IN TRYING TO TRACE THEM AND AT LAST AFTER MANY DOUBTINGS AND DIFFICULTIES I DISCOVERED THAT THE ORIGINAL SELLER HAD BEEN CAPTAIN PETER CAREY THE OWNER OF THIS HUT + NATURALLY I MADE SOME INQUIRIES ABOUT THE MAN + I FOUND THAT HE HAD BEEN IN COMMAND OF A WHALER WHICH WAS DUE TO RETURN FROM THE ARCTIC SEAS AT THE VERY TIME WHEN MY FATHER WAS CROSSING TO NORWAY + THE AUTUMN OF THAT YEAR WAS A STORMY ONE AND THERE WAS A LONG SUCCESSION OF SOUTHERLY GALES + MY FATHER'S YACHT MAY WELL HAVE BEEN BLOWN TO THE NORTH AND THERE MET BY CAPTAIN PETER CAREY'S SHIP + IF THAT WERE SO WHAT HAD BECOME OF MY FATHER + IN ANY CASE IF I COULD PROVE FROM PETER CAREY'S EVIDENCE HOW THESE SECURITIES CAME ON THE MARKET IT WOULD BE A PROOF THAT MY FATHER HAD NOT SOLD THEM AND THAT HE HAD NO VIEW TO PERSONAL PROFIT WHEN HE TOOK THEM + I CAME DOWN TO SUSSEX WITH THE INTENTION OF SEEING THE CAPTAIN BUT IT WAS AT THIS MOMENT THAT HIS TERRIBLE DEATH OCCURRED + I READ AT THE INQUEST A DESCRIPTION OF HIS CABIN IN WHICH IT STATED THAT THE OLD LOGBOOKS OF HIS VESSEL WERE PRESERVED IN IT + IT STRUCK ME THAT IF I COULD SEE WHAT OCCURRED IN THE MONTH OF AUGUST ONE THOUSAND EIGHT HUNDRED EIGHTY THREE ON BOARD THE SEA UNICORN I MIGHT SETTLE THE MYSTERY OF MY FATHER'S FATE + I TRIED LAST NIGHT TO GET AT THESE LOGBOOKS BUT WAS UNABLE TO OPEN THE DOOR + TO NIGHT I TRIED AGAIN AND SUCCEEDED BUT I FIND THAT THE PAGES WHICH DEAL WITH THAT MONTH HAVE BEEN TORN FROM THE BOOK. LT WAS AT THAT MOMENT I FOUND MYSELF A PRISONER IN YOUR HANDS + IS THAT ALL ASKED HOPKINS + QUOTE YES THAT IS ALL QUOTE + HIS EYES SHIFTED AS HE SAID IT + YOU HAVE NOTHING ELSE TO TELL US + HE HESITATED + NO THERE IS NOTHING + YOU HAVE NOT BEEN HERE BEFORE LAST NIGHT + NUMBER + D. + QUOTE THEN HOW DO YOU ACCOUNT FOR THAT QUOTE CRIED HOPKINS AS HE HELD UP THE DAMNING NOTEBOOK WITH THE INITIALS OF OUR PRISONER ON THE FIRST LEAF AND THE BLOOD STAIN ON THE COVER + THE WRETCHED MAN COLLAPSED + HE SANK HIS FACE IN HIS HANDS AND TREMBLED ALL OVER + WHERE DID YOU GET IT HE GROANED + I DID NOT KNOW + I THOUGHT I HAD LOST IT AT THE HOTEL + THAT IS ENOUGH SAID HOPKINS STERNLY + WHATEVER ELSE YOU HAVE TO SAY YOU MUST SAY IN COURT + YOU WILL WALK DOWN WITH ME NOW TO THE POLICE STATION + WELL MR. HOLMES I AM VERY MUCH OBLIGED TO YOU AND TO YOUR FRIEND FOR COMING DOWN TO HELP ME + AS IT TURNS OUT YOUR PRESENCE WAS UNNECESSARY AND I WOULD HAVE BROUGHT THE CASE TO THIS SUCCESSFUL ISSUE WITHOUT YOU BUT NONE THE LESS I AM GRATEFUL + ROOMS HAVE BEEN RESERVED FOR YOU AT THE BRAMBLETYE HOTEL SO WE CAN A L. WALK DOWN TO THE VILLAGE TOGETHER QUOTE + WELL WATSON WHAT DO YOU THINK OF IT ASKED HOLMES AS WE TRAVELLED BACK NEXT MORNING + I CAN SEE THAT YOU ARE NOT SATISFIED + OH YES MY DEAR WATSON I AM PERFECTLY SATISFIED + AT THE SAME TIME STANLEY HOPKINS'S METHODS DO NOT COMMEND THEMSELVES TO ME + I AM DISAPPOINTED IN STANLEY HOPKINS + I HAD HOPED FOR BETTER THINGS FROM HIM + ONE SHOULD ALWAYS LOOK FOR A POSSIBLE ALTERNATIVE AND PROVIDE AGAINST IT + IT IS THE FIRST RULE OF CRIMINAL INVESTIGATION + WHAT THEN IS THE ALTERNATIVE + QUOTE THE LINE OF INVESTIGATION WHICH I HAVE MYSELF BEEN PURSUING + IT MAY GIVE US NOTHING + I CANNOT TELL + BUT AT LEAST I SHALL FOLLOW IT TO THE END + SEVERAL LETTERS WERE WAITING FOR HOLMES AT BAKER STREET + HE SNATCHED ONE OF THEM UP OPENED IT AND BURST OUT INTO A TRIUMPHANT CHUCKLE OF LAUGHTER + EXCELLENT WATSON + THE ALTERNATIVE DEVELOPS + HAVE YOU TELEGRAPH FORMS + JUST WRITE A COUPLE OF MESSAGES FOR ME SUMNER SHIPPING AGENT RATCLIFF HIGHWAY + SEND THREE MEN ON TO ARRIVE TEN TO MORROW MORNING BASIL + THAT'S MY NAME IN THOSE PARTS + THE OTHER IS INSPECTOR STANLEY HOPKINS FORTY SIX LORD STREET BRIXTON + COME BREAKFAST TO MORROW AT NINE THIRTY + IMPORTANT + WIRE IF UNABLE TO COME. SHERLOCK HOLMES + THERE WATSON THIS INFERNAL CASE HAS HAUNTED ME FOR TEN DAYS + I HEREBY BANISH IT COMPLETELY FROM MY PRESENCE + TO MORROW I TRUST THAT WE SHALL HEAR THE LAST OF IT FOREVER + SHARP AT THE HOUR NAMED INSPECTOR STANLEY HOPKINS APPEARED AND WE SAT DOWN TOGETHER TO THE EXCELLENT BREAKFAST WHICH MRS. HUDSON HAD PREPARED + THE YOUNG DETECTIVE WAS IN HIGH SPIRITS AT HIS SUCCESS + YOU REALLY THINK THAT YOUR SOLUTION MUST BE CORRECT ASKED HOLMES + I COULD NOT IMAGINE A MORE COMPLETE CASE + QUOTE IT DID NOT SEEM TO ME CONCLUSIVE QUOTE + YOU ASTONISH ME MR. HOLMES + WHAT MORE COULD ONE ASK FOR + DOES YOUR EXPLANATION COVER EVERY POINT + UNDOUBTEDLY + I FIND THAT YOUNG NELIGAN ARRIVED AT THE BRAMBLETYE HOTEL ON THE VERY DAY OF THE CRIME + HE CAME ON THE PRETENCE OF PLAYING GOLF + HIS ROOM WAS ON THE GROUND FLOOR AND HE COULD GET OUT WHEN HE LIKED + THAT VERY NIGHT HE WENT DOWN TO WOODMAN'S LEE SAW PETER CAREY AT THE HUT QUARRELLED WITH HIM AND KILLED HIM WITH THE HARPOON + THEN HORRIFIED BY WHAT HE HAD DONE HE FLED OUT OF THE HUT DROPPING THE NOTEBOOK WHICH HE HAD BROUGHT WITH HIM IN ORDER TO QUESTION PETER CAREY ABOUT THESE DIFFERENT SECURITIES + YOU MAY HAVE OBSERVED THAT SOME OF THEM WERE MARKED WITH TICKS AND THE OTHERS THE GREAT MAJORITY WERE NOT + THOSE WHICH ARE TICKED HAVE BEEN TRACED ON THE LONDON MARKET BUT THE OTHERS PRESUMABLY WERE STILL IN THE POSSESSION OF CAREY AND YOUNG NELIGAN ACCORDING TO HIS OWN ACCOUNT WAS ANXIOUS TO RECOVER THEM IN ORDER TO DO THE RIGHT THING BY HIS FATHER'S CREDITORS + AFTER HIS FLIGHT HE DID NOT DARE TO APPROACH THE HUT AGAIN FOR SOME TIME BUT AT LAST HE FORCED HIMSELF TO DO SO IN ORDER TO OBTAIN THE INFORMATION WHICH HE NEEDED + SURELY THAT IS ALL SIMPLE AND OBVIOUS + HOLMES SMILED AND SHOOK HIS HEAD + QUOTE IT SEEMS TO ME TO HAVE ONLY ONE DRAWBACK HOPKINS AND THAT IS THAT IT IS INTRINSICALLY IMPOSSIBLE + HAVE YOU TRIED TO DRIVE A HARPOON THROUGH A BODY + NO + TUT TUT MY DEAR SIR YOU MUST REALLY PAY ATTENTION TO THESE DETAILS + MY FRIEND WATSON COULD TELL YOU THAT I SPENT A WHOLE MORNING IN THAT EXERCISE + IT IS NO EASY MATTER AND REQUIRES A STRONG AND PRACTISED ARM + BUT THIS BLOW WAS DELIVERED WITH SUCH VIOLENCE THAT THE HEAD OF THE WEAPON SANK DEEP INTO THE WALL + DO YOU IMAGINE THAT THIS ANAEMIC YOUTH WAS CAPABLE OF SO FRIGHTFUL AN ASSAULT + IS HE THE MAN WHO HOBNOBBED IN RUM AND WATER WITH BLACK PETER IN THE DEAD OF THE NIGHT + WAS IT HIS PROFILE THAT WAS SEEN ON THE BLIND TWO NIGHTS BEFORE + NO NO HOPKINS IT IS ANOTHER AND MORE FORMIDABLE PERSON FOR WHOM WE MUST SEEK + THE DETECTIVE'S FACE HAD GROWN LONGER AND LONGER DURING HOLMES'S SPEECH + HIS HOPES AND HIS AMBITIONS WERE ALL CRUMBLING ABOUT HIM + BUT HE WOULD NOT ABANDON HIS POSITION WITHOUT A STRUGGLE + YOU CAN'T DENY THAT NELIGAN WAS PRESENT THAT NIGHT MR. HOLMES + THE BOOK WILL PROVE THAT + I FANCY THAT I HAVE EVIDENCE ENOUGH TO SATISFY A JURY EVEN IF YOU ARE ABLE TO PICK A HOLE IN IT + BESIDES MR. HOLMES I HAVE LAID MY HAND UPON MY MAN + AS TO THIS TERRIBLE PERSON OF YOURS WHERE IS HE + I RATHER FANCY THAT HE IS ON THE STAIR SAID HOLMES SERENELY + I THINK WATSON THAT YOU WOULD DO WELL TO PUT THAT REVOLVER WHERE YOU CAN REACH IT + HE ROSE AND LAID A WRITTEN PAPER UPON A SIDE TABLE + QUOTE NOW WE ARE READY QUOTE SAID HE + THERE HAD BEEN SOME TALKING IN GRUFF VOICES OUTSIDE AND NOW MRS. HUDSON OPENED THE DOOR TO SAY THAT THERE WERE THREE MEN INQUIRING FOR CAPTAIN BASIL + SHOW THEM IN ONE BY ONE SAID HOLMES + THE FIRST WHO ENTERED WAS A LITTLE RIBSTON PIPPIN OF A MAN WITH RUDDY CHEEKS AND FLUFFY WHITE SIDE WHISKERS + HOLMES HAD DRAWN A LETTER FROM HIS POCKET + WHAT NAME HE ASKED + JAMES LANCASTER + I AM SORRY LANCASTER BUT THE BERTH IS FULL + HERE IS HALF A SOVEREIGN FOR YOUR TROUBLE + JUST STEP INTO THIS ROOM AND WAIT THERE FOR A FEW MINUTES + THE SECOND MAN WAS A LONG DRIED UP CREATURE WITH LANK HAIR AND SALLOW CHEEKS + HIS NAME WAS HUGH PATTINS + HE ALSO RECEIVED HIS DISMISSAL HIS HALF SOVEREIGN AND THE ORDER TO WAIT + THE THIRD APPLICANT WAS A MAN OF REMARKABLE APPEARANCE + A FIERCE BULL DOG FACE WAS FRAMED IN A TANGLE OF HAIR AND BEARD AND TWO BOLD DARK EYES GLEAMED BEHIND THE COVER OF THICK TUFTED OVERHUNG EYEBROWS + HE SALUTED AND STOOD SAILOR FASHION TURNING HIS CAP ROUND IN HIS HANDS + QUOTE YOUR NAME QUOTE ASKED HOLMES + PATRICK CAIRNS + HARPOONER + YES SIR + TWENTY SIX VOYAGES + DUNDEE I SUPPOSE + QUOTE YES SIR QUOTE + AND READY TO START WITH AN EXPLORING SHIP + YES SIR + WHAT WAGES + EIGHT POUNDS A MONTH + COULD YOU START AT ONCE + QUOTE AS SOON AS I GET MY KIT QUOTE + HAVE YOU YOUR PAPERS + YES SIR + HE TOOK A SHEAF OF WORN AND GREASY FORMS FROM HIS POCKET + HOLMES GLANCED OVER THEM AND RETURNED THEM + YOU ARE JUST THE MAN I WANT SAID HE + HERE'S THE AGREEMENT ON THE SIDE TABLE + IF YOU SIGN IT THE WHOLE MATTER WILL BE SETTLED + THE SEAMAN LURCHED ACROSS THE ROOM AND TOOK UP THE PEN + QUOTE SHALL I SIGN HERE HE ASKED STOOPING OVER THE TABLE + HOLMES LEANED OVER HIS SHOULDER AND PASSED BOTH HANDS OVER HIS NECK + THIS WILL DO SAID HE + I HEARD A CLICK OF STEEL AND A BELLOW LIKE AN ENRAGED BULL + THE NEXT INSTANT HOLMES AND THE SEAMAN WERE ROLLING ON THE GROUND TOGETHER + HE WAS A MAN OF SUCH GIGANTIC STRENGTH THAT EVEN WITH THE HANDCUFFS WHICH HOLMES HAD SO DEFTLY FASTENED UPON HIS WRISTS HE WOULD HAVE VERY QUICKLY OVERPOWERED MY FRIEND HAD HOPKINS AND I NOT RUSHED TO HIS RESCUE + ONLY WHEN I PRESSED THE COLD MUZZLE OF THE REVOLVER TO HIS TEMPLE DID HE AT LAST UNDERSTAND THAT RESISTANCE WAS VAIN + WE LASHED HIS ANKLES WITH CORD AND ROSE BREATHLESS FROM THE STRUGGLE + I MUST REALLY APOLOGIZE HOPKINS SAID SHERLOCK HOLMES + I FEAR THAT THE SCRAMBLED EGGS ARE COLD + HOWEVER YOU WILL ENJOY THE REST OF YOUR BREAKFAST ALL THE BETTER WILL YOU NOT FOR THE THOUGHT THAT YOU HAVE BROUGHT YOUR CASE TO A TRIUMPHANT CONCLUSION + STANLEY HOPKINS WAS SPEECHLESS WITH AMAZEMENT + I DON'T KNOW WHAT TO SAY MR. HOLMES HE BLURTED OUT AT LAST WITH A VERY RED FACE + QUOTE IT SEEMS TO ME THAT I HAVE BEEN MAKING A FOOL OF MYSELF FROM THE BEGINNING + I UNDERSTAND NOW WHAT I SHOULD NEVER HAVE FORGOTTEN THAT I AM THE PUPIL AND YOU ARE THE MASTER + EVEN NOW I SEE WHAT YOU HAVE DONE BUT I DON'T KNOW HOW YOU DID IT OR WHAT IT SIGNIFIES + WELL WELL SAID HOLMES GOOD HUMOUREDLY + WE ALL LEARN BY EXPERIENCE AND YOUR LESSON THIS TIME IS THAT YOU SHOULD NEVER LOSE SIGHT OF THE ALTERNATIVE + YOU WERE SO ABSORBED IN YOUNG NELIGAN THAT YOU COULD NOT SPARE A THOUGHT TO PATRICK CAIRNS THE TRUE MURDERER OF PETER CAREY + THE HOARSE VOICE OF THE SEAMAN BROKE IN ON OUR CONVERSATION + SEE HERE MISTER SAID HE I MAKE NO COMPLAINT OF BEING MAN HANDLED IN THIS FASHION BUT I WOULD HAVE YOU CALL THINGS BY THEIR RIGHT NAMES + YOU SAY I MURDERED PETER CAREY I SAY I KILLED PETER CAREY AND THERE'S ALL THE DIFFERENCE + MAYBE YOU DON'T BELIEVE WHAT I SAY + MAYBE YOU THINK I AM JUST SLINGING YOU A YARN QUOTE + NOT AT ALL SAID HOLMES + LET US HEAR WHAT YOU HAVE TO SAY + IT'S SOON TOLD AND BY THE LORD EVERY WORD OF IT IS TRUTH + I KNEW BLACK PETER AND WHEN HE PULLED OUT HIS KNIFE I WHIPPED A HARPOON THROUGH HIM SHARP FOR I KNEW THAT IT WAS HIM OR ME + THAT'S HOW HE DIED + YOU CAN CALL IT MURDER + ANYHOW I'D AS SOON DIE WITH A ROPE ROUND MY NECK AS WITH BLACK PETER'S KNIFE IN MY HEART + HOW CAME YOU THERE ASKED HOLMES + QUOTE I'LL TELL IT YOU FROM THE BEGINNING + JUST SIT ME UP A LITTLE SO AS I CAN SPEAK EASY + IT WAS IN EIGHTY THREE THAT IT HAPPENED AUGUST OF THAT YEAR + PETER CAREY WAS MASTER OF THE SEA UNICORN AND I WAS SPARE HARPOONER + WE WERE COMING OUT OF THE ICE PACK ON OUR WAY HOME WITH HEAD WINDS AND A WEEK'S SOUTHERLY GALE WHEN WE PICKED UP A LITTLE CRAFT THAT HAD BEEN BLOWN NORTH + THERE WAS ONE MAN ON HER A LANDSMAN + THE CREW HAD THOUGHT SHE WOULD FOUNDER AND HAD MADE FOR THE NORWEGIAN COAST IN THE DINGHY + I GUESS THEY WERE ALL DROWNED + WELL WE TOOK HIM ON BOARD THIS MAN AND HE AND THE SKIPPER HAD SOME LONG TALKS IN THE CABIN + ALL THE BAGGAGE WE TOOK OFF WITH HIM WAS ONE TIN BOX + SO FAR AS I KNOW THE MAN'S NAME WAS NEVER MENTIONED AND ON THE SECOND NIGHT HE DISAPPEARED AS IF HE HAD NEVER BEEN + IT WAS GIVEN OUT THAT HE HAD EITHER THROWN HIMSELF OVERBOARD OR FALLEN OVERBOARD IN THE HEAVY WEATHER THAT WE WERE HAVING + ONLY ONE MAN KNEW WHAT HAD HAPPENED TO HIM AND THAT WAS ME FOR WITH MY OWN EYES I SAW THE SKIPPER TIP UP HIS HEELS AND PUT HIM OVER THE RAIL IN THE MIDDLE WATCH OF A DARK NIGHT TWO DAYS BEFORE WE SIGHTED THE SHETLAND LIGHTS + WELL I KEPT MY KNOWLEDGE TO MYSELF AND WAITED TO SEE WHAT WOULD COME OF IT + WHEN WE GOT BACK TO SCOTLAND IT WAS EASILY HUSHED UP AND NOBODY ASKED ANY QUESTIONS + A STRANGER DIED BY ACCIDENT AND IT WAS NOBODY'S BUSINESS TO INQUIRE + SHORTLY AFTER PETER CAREY GAVE UP THE SEA AND IT WAS LONG YEARS BEFORE I COULD FIND WHERE HE WAS + I GUESSED THAT HE HAD DONE THE DEED FOR THE SAKE OF WHAT WAS IN THAT TIN BOX AND THAT HE COULD AFFORD NOW TO PAY ME WELL FOR KEEPING MY MOUTH SHUT + I FOUND OUT WHERE HE WAS THROUGH A SAILOR MAN THAT HAD MET HIM IN LONDON AND DOWN I WENT TO SQUEEZE HIM + THE FIRST NIGHT HE WAS REASONABLE ENOUGH AND WAS READY TO GIVE ME WHAT WOULD MAKE ME FREE OF THE SEA FOR LIFE + WE WERE TO FIX IT ALL TWO NIGHTS LATER + WHEN I CAME I FOUND HIM THREE PARTS DRUNK AND IN A VILE TEMPER + WE SAT DOWN AND WE DRANK AND WE YARNED ABOUT OLD TIMES BUT THE MORE HE DRANK THE LESS I LIKED THE LOOK ON HIS FACE + I SPOTTED THAT HARPOON UPON THE WALL AND I THOUGHT I MIGHT NEED IT BEFORE I WAS THROUGH + THEN AT LAST HE BROKE OUT AT ME SPITTING AND CURSING WITH MURDER IN HIS EYES AND A GREAT CLASP KNIFE IN HIS HAND + HE HAD NOT TIME TO GET IT FROM THE SHEATH BEFORE I HAD THE HARPOON THROUGH HIM + HEAVENS WHAT A YELL HE GAVE AND HIS FACE GETS BETWEEN ME AND MY SLEEP + I STOOD THERE WITH HIS BLOOD SPLASHING ROUND ME AND I WAITED FOR A BIT BUT ALL WAS QUIET SO L. TOOK HEART ONCE MORE + I LOOKED ROUND AND THERE WAS THE TIN BOX ON THE SHELF + I HAD AS MUCH RIGHT TO IT AS PETER CAREY ANYHOW SO I TOOK IT WITH ME AND LEFT THE HUT + LIKE A FOOL I LEFT MY BACCY POUCH UPON THE TABLE + NOW I'LL TELL YOU THE QUEEREST PART OF THE WHOLE STORY + I HAD HARDLY GOT OUTSIDE THE HUT WHEN I HEARD SOMEONE COMING AND I HID AMONG THE BUSHES + A MAN CAME SLINKING ALONG WENT INTO THE HUT GAVE A CRY AS IF HE HAD SEEN A GHOST AND LEGGED IT AS HARD AS HE COULD RUN UNTIL HE WAS OUT OF SIGHT + WHO HE WAS OR WHAT HE WANTED IS MORE THAN I CAN TELL + FOR MY PART ONE WALKED TEN MILES GOT A TRAIN AT TUNBRIDGE WELLS AND SO REACHED LONDON AND NO ONE THE WISER + WELL WHEN I CAME TO EXAMINE THE BOX I FOUND THERE WAS NO MONEY IN IT AND NOTHING BUT PAPERS THAT I WOULD NOT DARE TO SELL + I HAD LOST MY HOLD ON BLACK PETER AND WAS STRANDED IN LONDON WITHOUT A SHILLING + THERE WAS ONLY MY TRADE LEFT + I SAW THESE ADVERTISEMENTS ABOUT HARPOONERS AND HIGH WAGES SO I WENT TO THE SHIPPING AGENTS AND THEY SENT ME HERE + THAT'S ALL I KNOW AND I SAY AGAIN THAT IF I KILLED BLLCK PETER THE LAW SHOULD GIVE ME THANKS FOR I SAVED THEM THE PRICE OF A HEMPEN ROPE + QUOTE A VERY CLEAR STATEMENT QUOTE SAID HOLMES RISING AND LIGHTING HIS PIPE + I THINK HOPKINS THAT YOU SHOULD LOSE NO TIME IN CONVEYING YOUR PRISONER TO A PLACE OF SAFETY + THIS ROOM IS NOT WELL ADAPTED FOR A CELL AND MR. PATRICK CAIRNS OCCUPIES TOO LARGE A PROPORTION OF OUR CARPET + MR. HOLMES SAID HOPKINS I DO NOT KNOW HOW TO EXPRESS MY GRATITUDE + EVEN NOW I DO NOT UNDERSTAND HOW YOU ATTAINED THIS RESULT + SIMPLY BY HAVING THE GOOD FORTUNE TO GET THE RIGHT CLUE FROM THE BEGINNING + IT IS VERY POSSIBLE IF I HAD KNOWN ABOUT THIS NOTEBOOK IT MIGHT HAVE LED AWAY MY THOUGHTS AS IT DID YOURS + BUT ALL I HEARD POINTED IN THE ONE DIRECTION + THE AMAZING STRENGTH THE SKILL IN THE USE OF THE HARPOON THE RUM AND WATER THE SEALSKIN TOBACCO POUCH WITH THE COARSE TOBACCO ALL THESE POINTED TO A SEAMAN AND ONE WHO HAD BEEN A WHALER + I WAS CONVINCED THAT THE INITIALS P. C. UPON THE POUCH WERE A COINCIDENCE AND NOT THOSE OF PETER CAREY SINCE HE SELDOM SMOKED AND NO PIPE WAS FOUND IN HIS CABIN + YOU REMEMBER THAT I ASKED WHETHER WHISKY AND BRANDY WERE IN THE CABIN + YOU SAID THEY WERE + HOW MANY LANDSMEN ARE THERE WHO WOULD DRINK RUM WHEN THEY COULD GET THESE OTHER SPIRITS + YES I WAS CCRTAIN IT WAS A SEAMAN QUOTE + AND HOW DID YOU FIND HIM + MY DEAR SIR THE PROBLEM HAD BECOME A VERY SIMPLE ONE + IF IT WERE A SEAMAN IT COULD ONLY BE A SEAMAN WHO HAD BEEN WITH HIM ON THE SEA UNICORN + SO FAR AS I COULD LEARN HE HAD SAILED IN NO OTHER SHIP + I SPENT THREE DAYS IN WIRING TO DUNDEE AND AT THE END OF THAT TIME I HAD ASCERTAINED THE NAMES OF THE CREW OF THE SEA UNICORN IN ONE THOUSAND EIGHT HUNDRED EIGHTY THREE + WHEN I FOUND PATRICK CAIRNS AMONG THE HARPOONERS MY RESEARCH WAS NEARING ITS END + I ARGUED THAT THE MAN WAS PROBABLY IN LONDON AND THAT HE WOULD DESIRE TO LEAVE THE COUNTRY FOR A TIME + I THEREFORE SPENT SOME DAYS IN THE EAST END DEVISED AN ARCTIC EXPEDITION PUT FORTH TEMPTING TERMS FOR HARPOONERS WHO WOULD SERVE UNDER CAPTAIN BASIL AND BEHOLD THE RESULT + WONDERFUL CRIED HOPKINS + WONDERFUL + QUOTE YOU MUST OBTAIN THE RELEASE OF YOUNG NELIGAN AS SOON AS POSSIBLE QUOTE SAID HOLMES + I CONFESS THAT I THINK YOU OWE HIM SOME APOLOGY + THE TIN BOX MUST BE RETURNED TO HIM BUT OF COURSE THE SECURITIES WHICH PETER CAREY HAS SOLD ARE LOST FOREVER + THERE'S THE CAB HOPKINS AND YOU CAN REMOVE YOUR MAN + IF YOU WANT ME FOR THE TRIAL MY ADDRESS AND THAT OF WATSON WILL BE SOMEWHERE IN NORWAY I'LL SEND PARTICULARS LATER diff --git a/samples/LMTutorial/train/blue_carbuncle.txt b/samples/LMTutorial/train/blue_carbuncle.txt new file mode 100755 index 0000000..99781cd --- /dev/null +++ b/samples/LMTutorial/train/blue_carbuncle.txt @@ -0,0 +1,539 @@ + I HAD CALLED UPON MY FRIEND SHERLOCK HOLRNES UPON THE SECOND MORNING AFTER CHRISTMAS WITH THE INTENTION OF WISHING HIM THE COMPLIMENTS OF THE SEASON + HE WAS LOUNGING UPON THE SOFA IN A PURPLE DRESSING GOWN A PIPE RACK WITHIN HIS REACH UPON THE RIGHT AND A PILE OF CRUMPLED MORNING PAPERS EVIDENTLY NEWLY STUDIED NEAR AT HAND + BESIDE THE COUCH WAS A WOODEN CHAIR AND ON THE ANGLE OF THE BACK HUNG A VERY SEEDY AND DISREPUTABLE HARD FELT HAT MUCH THE WORSE FOR WEAR AND CRACKED IN SEVERAL PLACES + A LENS AND A FORCEPS LYING UPON THE SEAT OF THE CHAIR SUGGESTED THAT THE HAT HAD BEEN SUSPENDED IN THIS MANNER FOR THE PURPOSE OF EXAMINATION + QUOTE YOU ARE ENGAGED QUOTE SAID L. QUOTE PERHAPS I INTERRUPT YOU QUOTE + NOT AT ALL + I AM GLAD TO HAVE A FRIEND WITH WHOM I CAN DISCUSS MY RESULTS + THE MATTER IS A PERFECTLY TRIVIAL ONE HE JERKED HIS THUMB IN THE DIRECTION OF THE OLD HAT BUT THERE ARE POINTS IN CONNECTION WITH IT WHICH ARE NOT ENTIRELY DEVOID OF INTEREST AND EVEN OF INSTRUCTION + I SEATED MYSELF IN HIS ARMCHAIR AND WARMED MY HANDS BEFORE HIS CRACKLING FIRE FOR A SHARP FROST HAD SET IN AND THE WINDOWS WERE THICK WITH THE ICE CRYSTALS + I SUPPOSE I REMARKED THAT HOMELY AS IT LOOKS THIS THING HAS SOME DEADLY STORY LINKED ON TO IT THAT IT IS THE CLUE WHICH WILL GUIDE YOU IN THE SOLUTION OF SOME MYSTERY AND THE PUNISHMENT OF SOME CRIME + NO NO + NO CRIME SAID SHERLOCK HOLMES LAUGHING + QUOTE ONLY ONE OF THOSE WHIMSICAL LITTLE INCIDENTS WHICH WILL HAPPEN WHEN YOU HAVE FOUR MILLION HUMAN BEINGS ALL JOSTLING EACH OTHER WITHIN THE SPACE OF A FEW SQUARE MILES + AMID THE ACTION AND REACTION OF SO DENSE A SWARM OF HUMANITY EVERY POSSIBLE COMBINATION OF EVENTS MAY BE EXPECTED TO TAKE PLACE AND MANY A LITTLE PROBLEM WILL BE PRESENTED WHICH MAY BE STRIKING AND BIZARRE WITHOUT BEING CRIMINAL + WE HAVE ALREADY HAD EXPERIENCE OF SUCH + SO MUCH SO L. REMARKED THAT OF THE LAST SIX CASES WHICH I HAVE ADDED TO MY NOTES THREE HAVE BEEN ENTIRELY FREE OF ANY LEGAL CRIME + PRECISELY + YOU ALLUDE TO MY ATTEMPT TO RECOVER THE IRENE ADLER PAPERS TO THE SINGULAR CASE OF MISS MARY SUTHERLAND AND TO THE ADVENTURE OF THE MAN WITH THE TWISTED LIP + WELL I HAVE NO DOUBT THAT THIS SMALL MATTER WILL FALL INTO THE SAME INNOCENT CATEGORY + YOU KNOW PETERSON THE COMMISSIONAIRE + YES + QUOTE IT IS TO HIM THAT THIS TROPHY BELONGS QUOTE + IT IS HIS HAT + NO NO HE FOUND IT + ITS OWNER IS UNKNOWN + I BEG THAT YOU WILL LOOK UPON IT NOT AS A BATTERED BILLYCOCK BUT AS AN INTELLECTUAL PROBLEM + AND FIRST AS TO HOW IT CAME HERE + IT ARRIVED UPON CHRISTMAS MORNING IN COMPANY WITH A GOOD FAT GOOSE WHICH IS I HAVE NO DOUBT ROASTING AT THIS MOMENT IN FRONT OF PETERSON'S FIRE + THE FACTS ARE THESE ABOUT FOUR O'CLOCK ON CHRISTMAS MORNING PETERSON WHO AS YOU KNOW IS A VERY HONEST FELLOW WAS RETURNING FROM SOME SMALL JOLLIFICATION AND WAS MAKING HIS WAY HOMEWARD DOWN TOTTENHAM COURT ROAD + IN FRONT OF HIM HE SAW IN THE GASLIGHT A TALLISH MAN WALKING WITH A SLIGHT STAGGER AND CARRYING A WHITE GOOSE SLUNG OVER HIS SHOULDER + AS HE REACHED THE CORNER OF GOODGE STREET A ROW BROKE OUT BETWEEN THIS STRANGER AND A LITTLE KNOT OF ROUGHS + ONE OF THE LATTER KNOCKED OFF THE MAN'S HAT ON WHICH HE RAISED HIS STICK TO DEFEND HIMSELF AND SWINGING IT OVER HIS HEAD SMASHED THE SHOP WINDOW BEHIND HIM + PETERSON HAD RUSHED FORWARD TO PROTECT THE STRANGER FROM HIS ASSAILANTS BUT THE MAN SHOCKED AT HAVING BROKEN THE WINDOW AND SEEING AN OFFICIAL LOOKING PERSON IN UNIFORM RUSHING TOWARDS HIM DROPPED HIS GOOSE TOOK TO HIS HEELS AND VANISHED AMID THE LABYRINTH OF SMALL STREETS WHICH LIE AT THE BACK OF TOTTENHAM COURT ROAD + THE ROUGHS HAD ALSO FLED AT THE APPEARANCE OF PETERSON SO THAT HE WAS LEFT IN POSSESSION OF THE FIELD OF BATTLE AND ALSO OF THE SPOILS OF VICTORY IN THE SHAPE OF THIS BATTERED HAT AND A MOST UNIMPEACHABLE CHRISTMAS GOOSE + WHICH SURELY HE RESTORED TO THEIR OWNER + MY DEAR FELLOW THERE LIES THE PROBLEM + IT IS TRUE THAT FOR MRS. HENRY BAKER WAS PRINTED UPON A SMALL CARD WHICH WAS TIED TO THE BIRD'S LEFT LEG AND IT IS ALSO TRUE THAT THE INITIALS H. B. ARE LEGIBLE UPON THE LINING OF THIS HAT BUT AS THERE ARE SOME THOUSANDS OF BAKERS AND SOME HUNDREDS OF HENRY BAKERS IN THIS CITY OF OURS IT IS NOT EASY TO RESTORE LOST PROPERTY TO ANY ONE OF THEM QUOTE + WHAT THEN DID PETERSON DO + HE BROUGHT ROUND BOTH HAT AND GOOSE TO ME ON CHRISTMAS MORNING KNOWING THAT EVEN THE SMALLEST PROBLEMS ARE OF INTEREST TO ME + THE GOOSE WE RETAINED UNTIL THIS MORNING WHEN THERE WERE SIGNS THAT IN SPITE OF THE SLIGHT FROST IT WOULD BE WELL THAT IT SHOULD BE EATEN WITHOUT UNNECESSARY DELAY + ITS FINDER HAS CARRIED IT OFF THEREFORE TO FULFIL THE ULTIMATE DESTINY OF A GOOSE WHILE I CONTINUE TO RETAIN THE HAT OF THE UNKNOWN GENTLEMAN WHO LOST HIS CHRISTMAS DINNER + DID HE NOT ADVERTISE + NUMBER + QUOTE THEN WHAT CLUE COULD YOU HAVE AS TO HIS IDENTITY QUOTE + ONLY AS MUCH AS WE CAN DEDUCE + FROM HIS HAT + PRECISELY + BUT YOU ARE JOKING + WHAT CAN YOU GATHER FROM THIS OLD BATTERED FELT + QUOTE HERE IS MY LENS + YOU KNOW MY METHODS + WHAT CAN YOU GATHER YOURSELF AS TO THE INDIVIDUALITY OF THE MAN WHO HAS WORN THIS ARTICLE + I TOOK THE TATTERED OBJECT IN MY HANDS AND TURNED IT OVER RATHER RUEFULLY + IT WAS A VERY ORDINARY BLACK HAT OF THE USUAL ROUND SHAPE HARD AND MUCH THE WORSE FOR WEAR + THE LINING HAD BEEN OF RED SILK BUT WAS A GOOD DEAL DISCOLOURED + THERE WAS NO MAKER'S NAME BUT AS HOLMES HAD REMARKED THE INITIALS H. B. WERE SCRAWLED UPON ONE SIDE + IT WAS PIERCED IN THE BRIM FOR A HATSECURER BUT THE ELASTIC WAS MISSING + FOR THE REST IT WAS CRACKED EXCEEDINGLY DUSTY AND SPOTTED IN SEVERAL PLACES ALTHOUGH THERE SEEMED TO HAVE BEEN SOME ATTEMPT TO HIDE THE DISCOLOURED PATCHES BY SMEARING THEM WITH INK + I CAN SEE NOTHING SAID I HANDING IT BACK TO MY FRIEND + ON THE CONTRARY WATSON YOU CAN SEE EVERYTHING + YOU FAIL HOWEVER TO REASON FROM WHAT YOU SEE + YOU ARE TOO TIMID IN DRAWING YOUR INFERENCES + QUOTE THEN PRAY TELL ME WHAT IT IS THAT YOU CAN INFER FROM THIS HAT QUOTE + HE PICKED IT UP AND GAZED AT IT IN THE PECULIAR INTROSPECTIVE FASHION WHICH WAS CHARACTERISTIC OF HIM + IT IS PERHAPS LESS SUGGESTIVE THAN IT MIGHT HAVE BEEN HE REMARKED AND YET THERE ARE A FEW INFERENCES WHICH ARE VERY DISTINCT AND A FEW OTHERS WHICH REPRESENT AT LEAST A STRONG BALANCE OF PROBABILITY + THAT THE MAN WAS HIGHLY INTELLECTUAL IS OF COURSE OBVIOUS UPON THE FACE OF IT AND ALSO THAT HE WAS FAIRLY WELL TO DO WITHIN THE LAST THREE YEARS ALTHOUGH HE HAS NOW FALLEN UPON EVIL DAYS + HE HAD FORESIGHT BUT HAS LESS NOW THAN FORMERLY POINTING TO A MORAL RETROGRESSION WHICH WHEN TAKEN WITH THE DECLINE OF HIS FORTUNES SEEMS TO INDICATE SOME EVIL INFLUENCE PROBABLY DRINK AT WORK UPON HIM + THIS MAY ACCOUNT ALSO FOR THE OBVIOUS FACT THAT HIS WIFE HAS CEASED TO LOVE HIM + MY DEAR HOLMES + HE HAS HOWEVER RETAINED SOME DEGREE OF SELF RESPECT HE CONTINUED DISREGARDING MY REMONSTRANCE + HE IS A MAN WHO LEADS A SEDENTARY LIFE GOES OUT LITTLE IS OUT OF TRAINING ENTIRELY IS MIDDLE AGED HAS GRIZZLED HAIR WHICH HE HAS HAD CUT WITHIN THE LAST FEW DAYS AND WHICH HE ANOINTS WITH LIME CREAM + THESE ARE THE MORE PATENT FACTS WHICH ARE TO BE DEDUCED FROM HIS HAT + ALSO BY THE WAY THAT IT IS EXTREMELY IMPROBABLE THAT HE HAS GAS LAID ON IN HIS HOUSE QUOTE + YOU ARE CERTAINLY JOKING HOLMES + NOT IN THE LEAST + IS IT POSSIBLE THAT EVEN NOW WHEN I GIVE YOU THESE RESULTS YOU ARE UNABLE TO SEE HOW THEY ARE ATTAINED + I HAVE NO DOUBT THAT I AM VERY STUPID BUT I MUST CONFESS THAT I AM UNABLE TO FOLLOW YOU + FOR EXAMPLE HOW DID YOU DEDUCE THAT THIS MAN WAS INTELLECTUAL + FOR ANSWER HOLMES CLAPPED THE HAT UPON HIS HEAD + IT CAME RIGHT OVER THE FOREHEAD AND SETTLED UPON THE BRIDGE OF HIS NOSE + QUOTE IT IS A QUESTION OF CUBIC CAPACITY QUOTE SAID HE QUOTE A MAN WITH SO LARGE A BRAIN MUST HAVE SOMETHING IN IT QUOTE + THE DECLINE OF HIS FORTUNES THEN + THIS HAT IS THREE YEARS OLD + THESE FLAT BRIMS CURLED AT THE EDGE CAME IN THEN + IT IS A HAT OF THE VERY BEST QUALITY + LOOK AT THE BAND OF RIBBED SILK AND THE EXCELLENT LINING + IF THIS MAN COULD AFFORD TO BUY SO EXPENSIVE A HAT THREE YEARS AGO AND HAS HAD NO HAT SINCE THEN HE HAS ASSUREDLY GONE DOWN IN THE WORLD + WELL THAT IS CLEAR ENOUGH CERTAINLY + BUT HOW ABOUT THE FORESIGHT AND THE MORAL RETROGRESSION + SHERLOCK HOLMES LAUGHED + QUOTE HERE IS THE FORESIGHT QUOTE SAID HE PUTTING HIS FINGER UPON THE LITTLE DISC AND LOOP OF THE HAT SECURER + THEY ARE NEVER SOLD UPON HATS + IF THIS MAN ORDERED ONE IT IS A SIGN OF A CERTAIN AMOUNT OF FORESIGHT SINCE HE WENT OUT OF HIS WAY TO TAKE THIS PRECAUTION AGAINST THE WIND + BUT SINCE WE SEE THAT HE HAS BROKEN THE ELASTIC AND HAS NOT TROUBLED TO REPLACE IT IT IS OBVIOUS THAT HE HAS LESS FORESIGHT NOW THAN FORMERLY WHICH IS A DISTINCT PROOF OF A WEAKENING NATURE + ON THE OTHER HAND HE HAS ENDEAVOURED TO CONCEAL SOME OF THESE STAINS UPON THE FELT BY DAUBING THEM WITH INK WHICH IS A SIGN THAT HE HAS NOT ENTIRELY LOST HIS SELF RESPECT + YOUR REASONING IS CERTAINLY PLAUSIBLE + THE FURTHER POINTS THAT HE IS MIDDLE AGED THAT HIS HAIR IS GRIZZLED THAT IT HAS BEEN RECENTLY CUT AND THAT HE USES LIMECREAM ARE ALL TO BE GATHERED FROM A CLOSE EXAMINATION OF THE LOWER PART OF THE LINING + THE LENS DISCLOSES A LARGE NUMBER OF HAIR ENDS CLEAN CUT BY THE SCISSORS OF THE BARBER + THEY ALL APPEAR TO BE ADHESIVE AND THERE IS A DISTINCT ODOUR OF LIME CREAM + THIS DUST YOU WILL OBSERVE IS NOT THE GRITTY GRAY DUST OF THE STREET BUT THE FLUFFY BROWN DUST OF THE HOUSE SHOWING THAT IT HAS BEEN HUNG UP INDOORS MOST OF THE TIME WHILE THE MARKS OF MOISTURE UPON THE INSIDE ARE PROOF POSITIVE THAT THE WEARER PERSPIRED VERY FREELY AND COULD THEREFORE HARDLY BE IN THE BEST OF TRAINING + QUOTE BUT HIS WIFE YOU SAID THAT SHE HAD CEASED TO LOVE HIM QUOTE + THIS HAT HAS NOT BEEN BRUSHED FOR WEEKS + WHEN I SEE YOU MY DEAR WATSON WITH A WEEK'S ACCUMULATION OF DUST UPON YOUR HAT AND WHEN YOUR WIFE ALLOWS YOU TO GO OUT IN SUCH A STATE I SHALL FEAR THAT YOU ALSO HAVE BEEN UNFORTUNATE ENOUGH TO LOSE YOUR WIFE'S AFFECTION + BUT HE MIGHT BE A BACHELOR + NAY HE WAS BRINGING HOME THE GOOSE AS A PEACE OFFERING TO HIS WIFE + REMEMBER THE CARD UPON THE BIRD'S LEG + QUOTE YOU HAVE AN ANSWER TO EVERYTHING + BUT HOW ON EARTH DO YOU DEDUCE THAT THE GAS IS NOT LAID ON IN HIS HOUSE + ONE TALLOW STAIN OR EVEN TWO MIGHT COME BY CHANCE BUT WHEN I SEE NO LESS THAN FIVE I THINK THAT THERE CAN BE LITTLE DOUBT THAT THE INDIVIDUAL MUST BE BROUGHT INTO FREQUENT CONTACT WITH BURNING TALLOW WALKS UPSTAIRS AT NIGHT PROBABLY WITH HIS HAT IN ONE HAND AND A GUTTERING CANDLE IN THE OTHER + ANYHOW HE NEVER GOT TALLOW STAINS FROM A GASJET + ARE YOU SATISFIED + WELL IT IS VERY INGENIOUS SAID I LAUGHING BUT SINCE AS YOU SAID JUST NOW THERE HAS BEEN NO CRIME COMMITTED AND NO HARM DONE SAVE THE LOSS OF A GOOSE ALL THIS SEEMS TO BE RATHER A WASTE OF ENERGY + SHERLOCK HOLMES HAD OPENED HIS MOUTH TO REPLY WHEN THE DOOR FLEW OPEN AND PETERSON THE COMMISSIONAIRE RUSHED INTO THE APARTMENT WITH FLUSHED CHEEKS AND THE FACE OF A MAN WHO IS DAZED WITH ASTONISHMENT + THE GOOSE MR. HOLMES + THE GOOSE SIR QUOTE HE GASPED + EH + WHAT OF IT THEN + HAS IT RETURNED TO LIFE AND FLAPPED OFF THROUGH THE KITCHEN WINDOW + HOLMES TWISTED HIMSELF ROUND UPON THE SOFA TO GET A FAIRER VIEW OF THE MAN'S EXCITED FACE + SEE HERE SIR + SEE WHAT MY WIFE FOUND IN ITS CROP + HE HELD OUT HIS HAND AND DISPLAYED UPON THE CENTRE OF THE PALM A BRILLIANTLY SCINTILLATING BLUE STONE RATHER SMALLER THAN A BEAN IN SIZE BUT OF SUCH PURITY AND RADIANCE THAT IT TWINKLED LIKE AN ELECTRIC POINT IN THE DARK HOLLOW OF HIS HAND + SHERLOCK HOLMES SAT UP WITH A WHISTLE + BY JOVE PETERSON SAID HE THIS IS TREASURE TROVE INDEED + I SUPPOSE YOU KNOW WHAT YOU HAVE GOT QUOTE + A DIAMOND SIR + A PRECIOUS STONE + IT CUTS INTO GLASS AS THOUGH IT WERE PUTTY + IT'S. MORE THAN A PRECIOUS STONE + IT IS THE PRECIOUS STONE + NOT THE COUNTESS OF MORCAR'S BLUE CARBUNCLE + I EJACULATED + QUOTE PRECISELY SO. L. OUGHT TO KNOW ITS SIZE AND SHAPE SEEING THAT I HAVE READ THE ADVERTISEMENT ABOUT IT IN THE TIMES EVERY DAY LATELY + IT IS ABSOLUTELY UNIQUE AND ITS VALUE CAN ONLY BE CONJECTURED BUT THE REWARD OFFERED OF ONE THOUSAND POUNDS IS CERTAINLY NOT WITHIN A TWENTIETH PART OF THE MARKET PRICE + A THOUSAND POUNDS + GREAT LORD OF MERCY + THE COMMISSIONAIRE PLUMPED DOWN INTO A CHAIR AND STARED FROM ONE TO THE OTHER OF US + THAT IS THE REWARD AND I HAVE REASON TO KNOW THAT THERE ARE SENTIMENTAL CONSIDERATIONS IN THE BACKGROUND WHICH WOULD INDUCE THE COUNTESS TO PART WITH HALF HER FORTUNE IF SHE COULD BUT RECOVER THE GEM + IT WAS LOST IF I REMEMBER ARIGHT AT THE HOTEL COSMOPOLITAN I REMARKED + QUOTE PRECISELY SO ON DECEMBER TWENTY TWO D. JUST FIVE DAYS AGO + JOHN HORNER A PLUMBER WAS ACCUSED OF HAVING ABSTRACTED IT FROM THE LADY'S JEWEL CASE + THE EVIDENCE AGAINST HIM WAS SO STRONG THAT THE CASE HAS BEEN REFERRED TO THE ASSIZES + I HAVE SOME ACCOUNT OF THE MATTER HERE I BELIEVE + HE RUMMAGED AMID HIS NEWSPAPERS GLANCING OVER THE DATES UNTIL AT LAST HE SMOOTHED ONE OUT DOUBLED IT OVER AND READ THE FOLLOWING PARAGRAPH HOTEL COSMOPOLITAN JEWEL ROBBERY + JOHN HORNER TWENTY SIX PLUMBER WAS BROUGHT UP UPON THE CHARGE OF HAVING UPON THE TWENTY TWO D. INST. ABSTRACTED FROM THE JEWEL CASE OF THE COUNTESS OF MORCAR THE VALUABLE GEM KNOWN AS THE BLUE CARBUNCLE + JAMES RYDER UPPER ATTENDANT AT THE HOTEL GAVE HIS EVI DENCE TO THE EFFECT THAT HE HAD SHOWN HORNER UP TO THE DRESSING ROOM OF THE COUNTESS OF MORCAR UPON THE DAY OF THE ROBBERY IN ORDER THAT HE MIGHT SOLDER THE SECOND BAR OF THE GRATE WHICH WAS LOOSE + HE HAD REMAINED WITH HORNER SOME LITTLE TIME BUT HAD FINALLY BEEN CALLED AWAY + ON RETURNING HE FOUND THAT HORNER HAD DISAPPEARED THAT THE BUREAU HAD BEEN FORCED OPEN AND THAT THE SMALL MOROCCO CASKET IN WHICH AS IT AFTERWARDS TRANSPIRED THE COUNTESS WAS ACCUSTOMED TO KEEP HER JEWEL WAS LYING EMPTY UPON THE DRESSING TABLE + RYDER INSTANTLY GAVE THE ALARM AND HORNER WAS ARRESTED THE SAME EVENING BUT THE STONE COULD NOT BE FOUND EITHER UPON HIS PERSON OR IN HIS ROOMS + CATHERINE CUSACK MAID TO THE COUNTESS DEPOSED TO HAVING HEARD RYDER'S CRY OF DISMAY ON DISCOVERING THE ROBBERY AND TO HAVING RUSHED INTO THE ROOM WHERE SHE FOUND MATTERS AS DESCRIBED BY THE LAST WITNESS + INSPECTOR BRADSTREET B. DIVI SION GAVE EVIDENCE AS TO THE ARREST OF HORNER WHO STRUG GLED FRANTICALLY AND PROTESTED HIS INNOCENCE IN THE STRONGEST TERMS + EVIDENCE OF A PREVIOUS CONVICTION FOR ROBBERY HAVING BEEN GIVEN AGAINST THE PRISONER THE MAGISTRATE REFUSED TO DEAL SUMMARILY WITH THE OFFENCE BUT REFERRED IT TO THE ASSIZES + HORNER WHO HAD SHOWN SIGNS OF INTENSE EMOTION DURING THE PROCEEDINGS FAINTED AWAY AT THE CONCLUSION AND WAS CARRIED OUT OF COURT + HUM + SO MUCH FOR THE POLICE COURT SAID HOLMES THOUGHTFULLY TOSSING ASIDE THE PAPER + THE QUESTION FOR US NOW TO SOLVE IS THE SEQUENCE OF EVENTS LEADING FROM A RIFLED JEWEL CASE AT ONE END TO THE CROP OF A GOOSE IN TOTTENHAM COURT ROAD AT THE OTHER + YOU SEE WATSON OUR LITTLE DEDUCTIONS HAVE SUDDENLY ASSUMED A MUCH MORE IMPORTANT AND LESS INNOCENT ASPECT + HERE IS THE STONE THE STONE CAME FROM THE GOOSE AND THE GOOSE CAME FROM MR. HENRY BAKER THE GENTLEMAN WITH THE BAD HAT AND ALL THE OTHER CHARACTERISTICS WITH WHICH I HAVE BORED YOU + SO NOW WE MUST SET OURSELVES VERY SERIOUSLY TO FINDING THIS GENTLEMAN AND ASCERTAINING WHAT PART HE HAS PLAYED IN THIS LITTLE MYSTERY + TO DO THIS WE MUST TRY THE SIMPLEST MEANS FIRST AND THESE LIE UNDOUBTEDLY IN AN ADVERTISEMENT IN ALL THE EVENING PAPERS + IF THIS FAIL I SHALL HAVE RECOURSE TO OTHER METHODS QUOTE + WHAT WILL YOU SAY + GIVE ME A PENCIL AND THAT SLIP OF PAPER + NOW THEN FOUND AT THE CORNER OF GOODGE STREET A GOOSE AND A BLACK FELT HAT + MR. HENRY BAKER CAN HAVE THE SAME BY APPLYING AT SIX THIRTY THIS EVENING AT TWO TWENTY ONE B. BAKER STREET + THAT IS CLEAR AND CONCISE + VERY + BUT WILL HE SEE IT QUOTE + WELL HE IS SURE TO KEEP AN EYE ON THE PAPERS SINCE TO A POOR MAN THE LOSS WAS A HEAVY ONE + HE WAS CLEARLY SO SCARED BY HIS MISCHANCE IN BREAKING THE WINDOW AND BY THE APPROACH OF PETERSON THAT HE THOUGHT OF NOTHING BUT FLIGHT BUT SINCE THEN HE MUST HAVE BITTERLY REGRETTED THE IMPULSE WHICH CAUSED HIM TO DROP HIS BIRD + THEN AGAIN THE INTRODUCTION OF HIS NAME WILL CAUSE HIM TO SEE IT FOR EVERYONE WHO KNOWS HIM WILL DIRECT HIS ATTENTION TO IT + HERE YOU ARE PETERSON RUN DOWN TO THE ADVERTISING AGENCY AND HAVE THIS PUT IN THE EVENING PAPERS + IN WHICH SIR + OH IN THE CLOBE STAR PALL MALL SAINT JAMES'S EVENING NEWS STANDARD ECHO AND ANY OTHERS THAT OCCUR TO YOU + VERY WELL SIR + AND THIS STONE QUOTE + AH YES I SHALL KEEP THE STONE + THANK YOU + AND I SAY PETERSON JUST BUY A GOOSE ON YOUR WAY BACK AND LEAVE IT HERE WITH ME FOR WE MUST HAVE ONE TO GIVE TO THIS GENTLEMAN IN PLACE OF THE ONE WHICH YOUR FAMILY IS NOW DEVOURING + WHEN THE COMMISSIONAIRE HAD GONE HOLMES TOOK UP THE STONE AND HELD IT AGAINST THE LIGHT + IT'S A BONNY THING SAID HE + JUST SEE HOW IT GLINTS AND SPARKLES + OF COURSE IT IS A NUCLEUS AND FOCUS OF CRIME + EVERY GOOD STONE IS + THEY ARE THE DEVIL'S PET BAITS + IN THE LARGER AND OLDER JEWELS EVERY FACET MAY STAND FOR A BLOODY DEED + THIS STONE IS NOT YET TWENTY YEARS OLD + IT WAS FOUND IN THE BANKS OF THE AMOY RIVER IN SOUTHEM CHINA AND IS REMARKABLE IN HAVING EVERY CHARACTERISTIC OF THE CARBUNCLE SAVE THAT IT IS BLUE IN SHADE INSTEAD OF RUBY RED + IN SPITE OF ITS YOUTH IT HAS ALREADY A SINISTER HISTORY + THERE HAVE BEEN TWO MURDERS A VITRIOL THROWING A SUICIDE AND SEVERAL ROBBERIES BROUGHT ABOUT FOR THE SAKE OF THIS FORTY GRAIN WEIGHT OF CRYSTALLIZED CHARCOAL + WHO WOULD THINK THAT SO PRETTY A TOY WOULD BE A PURVEYOR TO THE GALLOWS AND THE PRISON + I'LL LOCK IT UP IN MY STRONG BOX NOW AND DROP A LINE TO THE COUNTESS TO SAY THAT WE HAVE IT + QUOTE DO YOU THINK THAT THIS MAN HORNER IS INNOCENT QUOTE + I CANNOT TELL + WELL THEN DO YOU IMAGINE THAT THIS OTHER ONE HENRY BAKER HAD ANYTHING TO DO WITH THE MATTER + IT IS I THINK MUCH MORE LIKELY THAT HENRY BAKER IS AN ABSOLUTELY INNOCENT MAN WHO HAD NO IDEA THAT THE BIRD WHICH HE WAS CARRYING WAS OF CONSIDERABLY MORE VALUE THAN IF IT WERE MADE OF SOLID GOLD + THAT HOWEVER I SHALL DETERMINE BY A VERY SIMPLE TEST IF WE HAVE AN ANSWER TO OUR ADVERTISEMENT + AND YOU CAN DO NOTHING UNTIL THEN + QUOTE NOTHING QUOTE + IN THAT CASE I SHALL CONTINUE MY PROFESSIONAL ROUND + BUT I SHALL COME BACK IN THE EVENING AT THE HOUR YOU HAVE MENTIONED FOR I SHOULD LIKE TO SEE THE SOLUTION OF SO TANGLED A BUSINESS + VERY GLAD TO SEE YOU + I DINE AT SEVEN + THERE IS A WOODCOCK I BELIEVE + BY THE WAY IN VIEW OF RECENT OCCURRENCES PERHAPS I OUGHT TO ASK MRS. HUDSON TO EXAMINE ITS CROP + I HAD BEEN DELAYED AT A CASE AND IT WAS A LITTLE AFTER HALF PAST SIX WHEN I FOUND MYSELF IN BAKER STREET ONCE MORE + AS I APPROACHED THE HOUSE I SAW A TALL MAN IN A SCOTCH BONNET WITH A COAT WHICH WAS BUTTONED UP TO HIS CHIN WAITING OUTSIDE IN THE BRIGHT SEMICIRCLE WHICH WAS THROWN FROM THE FANLIGHT + JUST AS L. ARRIVED THE DOOR WAS OPENED AND WE WERE SHOWN UP TOGETHER TO HOLMES'S ROOM + MR. HENRY BAKER I BELIEVE SAID HE RISING FROM HIS ARMCHAIR AND GREETING HIS VISITOR WITH THE EASY AIR OF GENIALITY WHICH HE COULD SO READILY ASSUME + QUOTE PRAY TAKE THIS CHAIR BY THE FIRE MR. BAKER + IT IS A COLD NIGHT AND I OBSERVE THAT YOUR CIRCULATION IS MORE ADAPTED FOR SUMMER THAN FOR WINTER + AH WATSON YOU HAVE JUST COME AT THE RIGHT TIME + IS THAT YOUR HAT MR. BAKER + YES SIR THAT IS UNDOUBTEDLY MY HAT + HE WAS A LARGE MAN WITH ROUNDED SHOULDERS A MASSIVE HEAD AND A BROAD INTELLIGENT FACE SLOPING DOWN TO A POINTED BEARD OF GRIZZLED BROWN + A TOUCH OF RED IN NOSE AND CHEEKS WITH A SLIGHT TREMOR OF HIS EXTENDED HAND RECALLED HOLMES'S SURMISE AS TO HIS HABITS + HIS RUSTY BLACK FROCK COAT WAS BUTTONED RIGHT UP IN FRONT WITH THE COLLAR TURNED UP AND HIS LANK WRISTS PROTRUDED FROM HIS SLEEVES WITHOUT A SIGN OF CUFF OR SHIRT + HE SPOKE IN A SLOW STACCATO FASHION CHOOSING HIS WORDS WITH CARE AND GAVE THE IMPRESSION GENERALLY OF A MAN OF LEARNING AND LETTERS WHO HAD HAD ILL USAGE AT THE HANDS OF FORTUNE + WE HAVE RETAINED THESE THINGS FOR SOME DAYS SAID HOLMES BECAUSE WE EXPECTED TO SEE AN ADVERTISEMENT FROM YOU GIVING YOUR ADDRESS + I AM AT A LOSS TO KNOW NOW WHY YOU DID NOT ADVERTISE + OUR VISITOR GAVE A RATHER SHAMEFACED LAUGH + SHILLINGS HAVE NOT BEEN SO PLENTIFUL WITH ME AS THEY ONCE WERE HE REMARKED + QUOTE I HAD NO DOUBT THAT THE GANG OF ROUGHS WHO ASSAULTED ME HAD CARRIED OFF BOTH MY HAT AND THE BIRD + I DID NOT CARE TO SPEND MORE MONEY IN A HOPELESS ATTEMPT AT RECOVERING THEM + VERY NATURALLY + BY THE WAY ABOUT THE BIRD WE WERE COMPELLED TO EAT IT + TO EAT IT + OUR VISITOR HALF ROSE FROM HIS CHAIR IN HIS EXCITEMENT + YES IT WOULD HAVE BEEN OF NO USE TO ANYONE HAD WE NOT DONE SO + BUT I PRESUME THAT THIS OTHER GOOSE UPON THE SIDEBOARD WHICH IS ABOUT THE SAME WEIGHT AND PERFECTLY FRESH WILL ANSWER YOUR PURPOSE EQUALLY WELL QUOTE + OH CERTAINLY CERTAINLY ANSWERED MR. BAKER WITH A SIGH OF RELIEF + THE MAN BURST INTO A HEARTY LAUGH + THEY MIGHT BE USEFUL TO ME AS RELICS OF MY ADVENTURE SAID HE BUT BEYOND THAT I CAN HARDLY SEE WHAT USE THE DISJECTA MEMBRA OF MY LATE ACQUAINTANCE ARE GOING TO BE TO ME + NO SIR I THINK THAT WITH YOUR PERMISSION I WILL CONFINE MY ATTENTIONS TO THE EXCELLENT BIRD WHICH I PERCEIVE UPON THE SIDEBOARD + SHERLOCK HOLMES GLANCED SHARPLY ACROSS AT ME WITH A SLIGHT SHRUG OF HIS SHOULDERS + THERE IS YOUR HAT THEN AND THERE YOUR BIRD SAID HE + BY THE WAY WOULD IT BORE YOU TO TELL ME WHERE YOU GOT THE OTHER ONE FROM + I AM SOMEWHAT OF A FOWL FANCIER AND I HAVE SELDOM SEEN A BETTER GROWN GOOSE QUOTE + CERTAINLY SIR SAID BAKER WHO HAD RISEN AND TUCKED HIS NEWLY GAINED PROPERTY UNDER HIS ARM + THERE ARE A FEW OF US WHO FREQUENT THE ALPHA INN NEAR THE MUSEUM WE ARE TO BE FOUND IN THE MUSEUM ITSELF DURING THE DAY YOU UNDERSTAND + THIS YEAR OUR GOOD HOST WINDIGATE BY NAME INSTITUTED A GOOSE CLUB BY WHICH ON CONSIDERATION OF SOME FEW PENCE EVERY WEEK WE WERE EACH TO RECEIVE A BIRD AT CHRISTMAS + MY PENCE WERE DULY PAID AND THE REST IS FAMILIAR TO YOU + I AM MUCH INDEBTED TO YOU SIR FOR A SCOTCH BONNET IS FITTED NEITHER TO MY YEARS NOR MY GRAVITY + WITH A COMICAL POMPOSITY OF MANNER HE BOWED SOLEMNLY TO BOTH OF US AND STRODE OFF UPON HIS WAY + SO MUCH FOR MR. HENRY BAKER SAID HOLMES WHEN HE HAD CLOSED THE DOOR BEHIND HIM + IT IS QUITE CERTAIN THAT HE KNOWS NOTHING WHATEVER ABOUT THE MATTER + ARE YOU HUNGRY WATSON QUOTE + NOT PARTICULARLY + THEN I SUGGEST THAT WE TURN OUR DINNER INTO A SUPPER AND FOLLOW UP THIS CLUE WHILE IT IS STILL HOT + BY ALL MEANS + IT WAS A BITTER NIGHT SO WE DREW ON OUR ULSTERS AND WRAPPED CRAVATS ABOUT OUR THROATS + OUTSIDE THE STARS WERE SHINING COLDLY IN A CLOUDLESS SKY AND THE BREATH OF THE PASSERS BY BLEW OUT INTO SMOKE LIKE SO MANY PISTOL SHOTS + OUR FOOTFALLS RANG OUT CRISPLY AND LOUDLY AS WE SWUNG THROUGH THE DOCTORS' QUARTER WIMPOLE STREET HARLEY STREET AND SO THROUGH WIGMORE STREET INTO OXFORD STREET + IN A QUARTER OF AN HOUR WE WERE IN BLOOMSBURY AT THE ALPHA INN WHICH IS A SMALL PUBLIC HOUSE AT THE CORNER OF ONE OF THE STREETS WHICH RUNS DOWN INTO HOLBORN + HOLMES PUSHED OPEN THE DOOR OF THE PRIVATE BAR AND ORDERED TWO GLASSES OF BEER FROM THE RUDDY FACED WHITE APRONED LANDLORD + YOUR BEER SHOULD BE EXCELLENT IF IT IS AS GOOD AS YOUR GEESE SAID HE + MY GEESE + THE MAN SEEMED SURPRISED + QUOTE YES + I WAS SPEAKING ONLY HALF AN HOUR AGO TO MR. HENRY BAKER WHO WAS A MEMBER OF YOUR GOOSE CLUB + AH YES I SEE + BUT YOU SEE SIR THEM'S NOT OUR GEESE + INDEED + WHOSE THEN + QUOTE WELL I GOT THE TWO DOZEN FROM A SALESMAN IN COVENT GARDEN QUOTE + INDEED + I KNOW SOME OF THEM + WHICH WAS IT + BRECKINRIDGE IS HIS NAME + AH + I DON'T KNOW HIM + WELL HERE'S YOUR GOOD HEALTH LANDLORD AND PROSPERITY TO YOUR HOUSE + GOOD NIGHT + NOW FOR MR. BRECKINRIDGE HE CONTINUED BUTTONING UP HIS COAT AS WE CAME OUT INTO THE FROSTY AIR + QUOTE REMEMBER WATSON THAT THOUGH WE HAVE SO HOMELY A THING AS A GOOSE AT ONE END OF THIS CHAIN WE HAVE AT THE OTHER A MAN WHO WILL CERTAINLY GET SEVEN YEARS' PENAL SERVITUDE UNLESS WE CAN ESTABLISH HIS INNOCENCE + IT IS POSSIBLE THAT OUR INQUIRY MAY BUT CONFIRM HIS GUILT BUT IN ANY CASE WE HAVE A LINE OF INVESTIGATION WHICH HAS BEEN MISSED BY THE POLICE AND WHICH A SINGULAR CHANCE HAS PLACED IN OUR HANDS + LET US FOLLOW IT OUT TO THE BITTER END + FACES TO THE SOUTH THEN AND QUICK MARCH + WE PASSED ACROSS HOLBORN DOWN ENDELL STREET AND SO THROUGH A ZIGZAG OF SLUMS TO COVENT GARDEN MARKET + ONE OF THE LARGEST STALLS BORE THE NAME OF BRECKINRIDGE UPON IT AND THE PROPRIETOR A HORSY LOOKING MAN WITH A SHARP FACE AND TRIM SIDE WHISKERS WAS HELPING A BOY TO PUT UP THE SHUTTERS + GOOD EVENING + IT'S A COLD NIGHT SAID HOLMES + THE SALESMAN NODDED AND SHOT A QUESTIONING GLANCE AT MY COMPANION + SOLD OUT OF GEESE I SEE CONTINUED HOLMES POINTING AT THE BARE SLABS OF MARBLE + LET YOU HAVE FIVE HUNDRED TO MORROW MORNING + QUOTE THAT'S NO GOOD QUOTE + WELL THERE ARE SOME ON THE STALL WITH THE GAS FLARE + AH BUT I WAS RECOMMENDED TO YOU + WHO BY + THE LANDLORD OF THE ALPHA + OH YES I SENT HIM A COUPLE OF DOZEN + QUOTE FINE BIRDS THEY WERE TOO + NOW WHERE DID YOU GET THEM FROM + TO MY SURPRISE THE QUESTION PROVOKED A BURST OF ANGER FROM THE SALESMAN + NOW THEN MISTER SAID HE WITH HIS HEAD COCKED AND HIS ARMS AKIMBO WHAT ARE YOU DRIVING AT + LET'S HAVE IT STRAIGHT NOW + IT IS STRAIGHT ENOUGH + I SHOULD LIKE TO KNOW WHO SOLD YOU THE GEESE WHICH YOU SUPPLIED TO THE ALPHA + QUOTE WELL THEN I SHAN'T TELL YOU + SO NOW + OH IT IS A MATTER OF NO IMPORTANCE BUT I DON'T KNOW WHY YOU SHOULD BE SO WARM OVER SUCH A TRIFLE + WARM + YOU'D BE AS WARM MAYBE IF YOU WERE AS PESTERED AS I AM + WHEN I PAY GOOD MONEY FOR A GOOD ARTICLE THERE SHOULD BE AN END OF THE BUSINESS BUT IT'S WHERE ARE THE GEESE AND WHO DID YOU SELL THE GEESE TO AND WHAT WILL YOU TAKE FOR THE GEESE + ONE WOULD THINK THEY WERE THE ONLY GEESE IN THE WORLD TO HEAR THE FUSS THAT IS MADE OVER THEM + WELL I HAVE NO CONNECTION WITH ANY OTHER PEOPLE WHO HAVE BEEN MAKING INQUIRIES SAID HOLMES CARELESSLY + QUOTE IF YOU WON'T TELL US THE BET IS OFF THAT IS ALL + BUT I'M ALWAYS READY TO BACK MY OPINION ON A MATTER OF FOWLS AND I HAVE A FIVER ON IT THAT THE BIRD I ATE IS COUNTRY BRED + WELL THEN YOU'VE LOST YOUR FIVER FOR IT'S TOWN BRED SNAPPED THE SALESMAN + IT'S NOTHING OF THE KIND + I SAY IT IS + I DON'T BELIEVE IT + QUOTE D'YOU THINK YOU KNOW MORE ABOUT FOWLS THAN I WHO HAVE HANDLED THEM EVER SINCE I WAS A NIPPER + I TELL YOU ALL THOSE BIRDS THAT WENT TO THE ALPHA WERE TOWN BRED + YOU'LL NEVER PERSUADE ME TO BELIEVE THAT + WILL YOU BET THEN + IT'S MERELY TAKING YOUR MONEY FOR I KNOW THAT I AM RIGHT + BUT I'LL HAVE A SOVEREIGN ON WITH YOU JUST TO TEACH YOU NOT TO BE OBSTINATE + THE SALESMAN CHUCKLED GRIMLY + QUOTE BRING ME THE BOOKS BILL QUOTE SAID HE + THE SMALL BOY BROUGHT ROUND A SMALL THIN VOLUME AND A GREAT GREASY BACKED ONE LAYING THEM OUT TOGETHER BENEATH THE HANGING LAMP + NOW THEN MR. COCKSURE SAID THE SALESMAN I THOUGHT THAT I WAS OUT OF GEESE BUT BEFORE I FINISH YOU'LL FIND THAT THERE IS STILL ONE LEFT IN MY SHOP + YOU SEE THIS LITTLE BOOK + WELL + THAT'S THE LIST OF THE FOLK FROM WHOM I BUY + D'YOU SEE + WELL THEN HERE ON THIS PAGE ARE THE COUNTRY FOLK AND THE NUMBERS AFTER THEIR NAMES ARE WHERE THEIR ACCOUNTS ARE IN THE BIG LEDGER + NOW THEN + YOU SEE THIS OTHER PAGE IN RED INK + WELL THAT IS A LIST OF MY TOWN SUPPLIERS + NOW LOOK AT THAT THIRD NAME + JUST READ IT OUT TO ME + QUOTE MRS. OAKSHOTT ONE HUNDRED SEVENTEEN BRIXTON ROAD TWO HUNDRED FORTY NINE QUOTE READ HOLMES + QUITE SO + NOW TURN THAT UP IN THE LEDGER + HOLMES TURNED TO THE PAGE INDICATED + HERE YOU ARE MRS. OAKSHOTT ONE HUNDRED SEVENTEEN BRIXTON ROAD EGG AND POULTRY SUPPLIER + NOW THEN WHAT'S THE LAST ENTRY + DECEMBER TWENTY TWO D. + TWENTY FOUR GEESE AT SEVENS SIX D. QUOTE + QUITE SO + THERE YOU ARE + AND UNDERNEATH + SOLD TO MR. WINDIGATE OF THE ALPHA AT TWELVES + WHAT HAVE YOU TO SAY NOW + SHERLOCK HOLMES LOOKED DEEPLY CHAGRINED + HE DREW A SOVEREIGN FROM HIS POCKET AND THREW IT DOWN UPON THE SLAB TURNING AWAY WITH THE AIR OF A MAN WHOSE DISGUST IS TOO DEEP FOR WORDS + A FEW YARDS OFF HE STOPPED UNDER A LAMP POST AND LAUGHED IN THE HEARTY NOISELESS FASHION WHICH WAS PECULIAR TO HIM + WHEN YOU SEE A MAN WITH WHISKERS OF THAT CUT AND THE PINK UN PROTRUDING OUT OF HIS POCKET YOU CAN ALWAYS DRAW HIM BY A BET SAID HE + QUOTE I DARESAY THAT IF I HAD PUT LOO POUNDS DOWN IN FRONT OF HIM THAT MAN WOULD NOT HAVE GIVEN ME SUCH COMPLETE INFORMATION AS WAS DRAWN FROM HIM BY THE IDEA THAT HE WAS DOING ME ON A WAGER + WELL WATSON WE ARE I FANCY NEARING THE END OF OUR QUEST AND THE ONLY POINT WHICH REMAINS TO BE DETERMINED IS WHETHER WE SHOULD GO ON TO THIS MRS. OAKSHOTT TO NIGHT OR WHETHER WE SHOULD RESERVE IT FOR TO MORROW + IT IS CLEAR FROM WHAT THAT SURLY FELLOW SAID THAT THERE ARE OTHERS BESIDES OURSELVES WHO ARE ANXIOUS ABOUT THE MATTER AND I SHOULD + HIS REMARKS WERE SUDDENLY CUT SHORT BY A LOUD HUBBUB WHICH BROKE OUT FROM THE STALL WHICH WE HAD JUST LEFT + TURNING ROUND WE SAW A LITTLE RAT FACED FELLOW STANDING IN THE CENTRE OF THE CIRCLE OF YELLOW LIGHT WHICH WAS THROWN BY THE SWINGING LAMP WHILE BRECKINRIDGE THE SALESMAN FRAMED IN THE DOOR OF HIS STALL WAS SHAKING HIS FISTS FIERCELY AT THE CRINGING FIGURE + I'VE HAD ENOUGH OF YOU AND YOUR GEESE HE SHOUTED + I WISH YOU WERE ALL AT THE DEVIL TOGETHER + IF YOU COME PESTERING ME ANY MORE WITH YOUR SILLY TALK I'LL SET THE DOG AT YOU + YOU BRING MRS. OAKSHOTT HERE AND I'LL ANSWER HER BUT WHAT HAVE YOU TO DO WITH IT + DID I BUY THE GEESE OFF YOU + NO BUT ONE OF THEM WAS MINE ALL THE SAME WHINED THE LITTLE MAN + QUOTE WELL THEN ASK MRS. OAKSHOTT FOR IT QUOTE + SHE TOLD ME TO ASK YOU + WELL YOU CAN ASK THE KING OF PROOSIA FOR ALL I CARE + I'VE HAD ENOUGH OF IT + GET OUT OF THIS + HE RUSHED FIERCELY FORWARD AND THE INQUIRER FLITTED AWAY INTO THE DARKNESS + HA THIS MAY SAVE US A VISIT TO BRIXTON ROAD WHISPERED HOLMES + COME WITH ME AND WE WILL SEE WHAT IS TO BE MADE OF THIS FELLOW + STRIDING THROUGH THE SCATTERED KNOTS OF PEOPLE WHO LOUNGED ROUND THE FLARING STALLS MY COMPANION SPEEDILY OVERTOOK THE LITTLE MAN AND TOUCHED HIM UPON THE SHOULDER + HE SPRANG ROUND AND I COULD SEE IN THE GAS LIGHT THAT EVERY VESTIGE OF COLOUR HAD BEEN DRIVEN FROM HIS FACE + QUOTE WHO ARE YOU THEN + WHAT DO YOU WANT HE ASKED IN A QUAVERING VOICE + YOU WILL EXCUSE ME SAID HOLMES BLANDLY BUT I COULD NOT HELP OVERHEARING THE QUESTIONS WHICH YOU PUT TO THE SALESMAN JUST NOW + I THINK THAT I COULD BE OF ASSISTANCE TO YOU + YOU + WHO ARE YOU + HOW COULD YOU KNOW ANYTHING OF THE MATTER + QUOTE MY NAME IS SHERLOCK HOLMES + IT IS MY BUSINESS TO KNOW WHAT OTHER PEOPLE DON'T KNOW + BUT YOU CAN KNOW NOTHING OF THIS + EXCUSE ME I KNOW EVERYTHING OF IT + YOU ARE ENDEAVOURING TO TRACE SOME GEESE WHICH WERE SOLD BY MRS. OAKSHOTT OF BRIXTON ROAD TO A SALESMAN NAMED BRECKINRIDGE BY HIM IN TURN TO MR. WINDIGATE OF THE ALPHA AND BY HIM TO HIS CLUB OF WHICH MR. HENRY BAKER IS A MEMBER + OH SIR YOU ARE THE VERY MAN WHOM I HAVE LONGED TO MEET CRIED THE LITTLE FELLOW WITH OUTSTRETCHED HANDS AND QUIVERING FINGERS + QUOTE I CAN HARDLY EXPLAIN TO YOU HOW INTERESTED I AM IN THIS MATTER QUOTE + SHERLOCK HOLMES HAILED A FOUR WHEELER WHICH WAS PASSING + IN THAT CASE WE HAD BETTER DISCUSS IT IN A COSY ROOM RATHER THAN IN THIS WIND SWEPT MARKET PLACE SAID HE + BUT PRAY TELL ME BEFORE WE GO FARTHER WHO IT IS THAT I HAVE THE PLEASURE OF ASSISTING + THE MAN HESITATED FOR AN INSTANT + MY NAME IS JOHN ROBINSON HE ANSWERED WITH A SIDELONG GLANCE + NO NO THE REAL NAME SAID HOLMES SWEETLY + IT IS ALWAYS AWKWARD DOING BUSINESS WITH AN ALIAS + A FLUSH SPRANG TO THE WHITE CHEEKS OF THE STRANGER + QUOTE WELL THEN QUOTE SAID HE QUOTE MY REAL NAME IS JAMES RYDER QUOTE + PRECISELY SO + HEAD ATTENDANT AT THE HOTEL COSMOPOLITAN + PRAY STEP INTO THE CAB AND I SHALL SOON BE ABLE TO TELL YOU EVERYTHING WHICH YOU WOULD WISH TO KNOW + THE LITTLE MAN STOOD GLANCING FROM ONE TO THE OTHER OF US WITH HALF FRIGHTENED HALF HOPEFUL EYES AS ONE WHO IS NOT SURE WHETHER HE IS ON THE VERGE OF A WINDFALL OR OF A CATASTROPHE + THEN HE STEPPED INTO THE CAB AND IN HALF AN HOUR WE WERE BACK IN THE SITTING ROOM AT BAKER STREET + NOTHING HAD BEEN SAID DURING OUR DRIVE BUT THE HIGH THIN BREATHING OF OUR NEW COMPANION AND THE CLASPINGS AND UNCLASPINGS OF HIS HANDS SPOKE OF THE NERVOUS TENSION WITHIN HIM + HERE WE ARE SAID HOLMES CHEERILY AS WE FILED INTO THE ROOM + THE FIRE LOOKS VERY SEASONABE IN THIS WEATHER + YOU LOOK COLD MR. RYDER + PRAY TAKE THE BASKET CHAIR + I WILL JUST PUT ON MY SLIPPERS BEFORE WE SETTLE THIS LITTLE MATTER OF YOURS + NOW THEN + YOU WANT TO KNOW WHAT BECAME OF THOSE GEESE + QUOTE YES SIR QUOTE + OR RATHER I FANCY OF THAT GOOSE + IT WAS ONE BIRD I IMAGINE IN WHICH YOU WERE INTERESTED WHITE WITH A BLACK BAR ACROSS THE TAIL + RYDER QUIVERED WITH EMOTION + OH SIR HE CRIED CAN YOU TELL ME WHERE IT WENT TO + IT CAME HERE + HERE + QUOTE YES AND A MOST REMARKABLE BIRD IT PROVED + I DON'T WONDER THAT YOU SHOULD TAKE AN INTEREST IN IT + IT LAID AN EGG AFTER IT WAS DEAD THE BONNIEST BRIGHTEST LITTLE BLUE EGG THAT EVER WAS SEEN + I HAVE IT HERE IN MY MUSEUM + OUR VISITOR STAGGERED TO HIS FEET AND CLUTCHED THE MANTELPIECE WITH HIS RIGHT HAND + HOLMES UNLOCKED HIS STRONG BOX AND HELD UP THE BLUE CARBUNCLE WHICH SHONE OUT LIKE A STAR WITH A COLD BRILLIANT MANY POINTED RADIANCE + RYDER STOOD GLARING WITH A DRAWN FACE UNCERTAIN WHETHER TO CLAIM OR TO DISOWN IT + THE GAME'S UP RYDER SAID HOLMES QUIETLY + HOLD UP MAN OR YOU'LL BE INTO THE FIRE + GIVE HIM AN ARM BACK INTO HIS CHAIR WATSON + HE'S NOT GOT BLOOD ENOUGH TO GO IN FOR FELONY WITH IMPUNITY + GIVE HIM A DASH OF BRANDY + SO + NOW HE LOOKS A LITTLE MORE HUMAN + WHAT A SHRIMP IT IS TO BE SURE + FOR A MOMENT HE HAD STAGGERED AND NEARLY FALLEN BUT THE BRANDY BROUGHT A TINGE OF COLOUR INTO HIS CHEEKS AND HE SAT STARING WITH FRIGHTENED EYES AT HIS ACCUSER + I HAVE ALMOST EVERY LINK IN MY HANDS AND ALL THE PROOFS WHICH I COULD POSSIBLY NEED SO THERE IS LITTLE WHICH YOU NEED TELL ME + STILL THAT LITTLE MAY AS WELL BE CLEARED UP TO MAKE THE CASE COMPLETE + YOU HAD HEARD RYDER OF THIS BLUE STONE OF THE COUNTESS OF MORCAR'S QUOTE + IT WAS CATHERINE CUSACK WHO TOLD ME OF IT SAID HE IN A CRACKLING VOICE + I SEE HER LADYSHIP'S WAITING MAID + WELL THE TEMPTATION OF SUDDEN WEALTH SO EASILY ACQUIRED WAS TOO MUCH FOR YOU AS IT HAS BEEN FOR BETTER MEN BEFORE YOU BUT YOU WERE NOT VERY SCRUPULOUS IN THE MEANS YOU USED + IT SEEMS TO ME RYDER THAT THERE IS THE MAKING OF A VERY PRETTY VILLAIN IN YOU + YOU KNEW THAT THIS MAN HORNER THE PLUMBER HAD BEEN CONCERNED IN SOME SUCH MATTER BEFORE AND THAT SUSPICION WOULD REST THE MORE READILY UPON HIM + WHAT DID YOU DO THEN + YOU MADE SOME SMALL JOB IN MY LADY'S ROOM YOU AND YOUR CONFEDERATE CUSACK AND YOU MANAGED THAT HE SHOULD BE THE MAN SENT FOR + THEN WHEN HE HAD LEFT YOU RIFLED THE JEWEL CASE RAISED THE ALARM AND HAD THIS UNFORTUNATE MAN ARRESTED + YOU THEN + RYDER THREW HIMSELF DOWN SUDDENLY UPON THE RUG AND CLUTCHED AT MY COMPANION'S KNEES + FOR GOD'S SAKE HAVE MERCY HE SHRIEKED + THINK OF MY FATHER OF MY MOTHER + IT WOULD BREAK THEIR HEARTS + I NEVER WENT WRONG BEFORE + I NEVER WILL AGAIN + I SWEAR IT + I'LL SWEAR IT ON A BIBLE + OH DON'T BRING IT INTO COURT + FOR CHRIST'S SAKE DON'T QUOTE + GET BACK INTO YOUR CHAIR SAID HOLMES STERNLY + IT IS VERY WELL TO CRINGE AND CRAWL NOW BUT YOU THOUGHT LITTLE ENOUGH OF THIS POOR HORNER IN THE DOCK FOR A CRIME OF WHICH HE KNEW NOTHING + I WILL FLY MR. HOLMES + I WILL LEAVE THE COUNTRY SIR + THEN THE CHARGE AGAINST HIM WILL BREAK DOWN + HUM + WE WILL TALK ABOUT THAT + AND NOW LET US HEAR A TRUE ACCOUNT OF THE NEXT ACT + HOW CAME THE STONE INTO THE GOOSE AND HOW CAME THE GOOSE INTO THE OPEN MARKET + TELL US THE TRUTH FOR THERE LIES YOUR ONLY HOPE OF SAFETY QUOTE + RYDER PASSED HIS TONGUE OVER HIS PARCHED LIPS + I WILL TELL YOU IT JUST AS IT HAPPENED SIR SAID HE + WHEN HORNER HAD BEEN ARRESTED IT SEEMED TO ME THAT IT WOULD BE BEST FOR ME TO GET AWAY WITH THE STONE AT ONCE FOR I DID NOT KNOW AT WHAT MOMENT THE POLICE MIGHT NOT TAKE IT INTO THEIR HEADS TO SEARCH ME AND MY ROOM + THERE WAS NO PLACE ABOUT THE HOTEL WHERE IT WOULD BE SAFE + I WENT OUT AS IF ON SOME COMMISSION AND I MADE FOR MY SISTER'S HOUSE + SHE HAD MARRIED A MAN NAMED OAKSHOTT AND LIVED IN BRIXTON ROAD WHERE SHE FATTENED FOWLS FOR THE MARKET + ALL THE WAY THERE EVERY MAN I MET SEEMED TO ME TO BE A POLICEMAN OR A DETECTIVE AND FOR ALL THAT IT WAS A COLD NIGHT THE SWEAT WAS POURING DOWN MY FACE BEFORE I CAME TO THE BRIXTON ROAD + MY SISTER ASKED ME WHAT WAS THE MATTER AND WHY I WAS SO PALE BUT I TOLD HER THAT I HAD BEEN UPSET BY THE JEWEL ROBBERY AT THE HOTEL + THEN I WENT INTO THE BACK YARD AND SMOKED A PIPE AND WONDERED WHAT IT WOULD BE BEST TO DO + I HAD A FRIEND ONCE CALLED MAUDSLEY WHO WENT TO THE BAD AND HAS JUST BEEN SERVING HIS TIME IN PENTONVILLE + ONE DAY HE HAD MET ME AND FELL INTO TALK ABOUT THE WAYS OF THIEVES AND HOW THEY COULD GET RID OF WHAT THEY STOLE + I KNEW THAT HE WOULD BE TRUE TO ME FOR I KNEW ONE OR TWO THINGS ABOUT HIM SO I MADE UP MY MIND TO GO RIGHT ON TO KILBURN WHERE HE LIVED AND TAKE HIM INTO MY CONFIDENCE + HE WOULD SHOW ME HOW TO TURN THE STONE INTO MONEY + BUT HOW TO GET TO HIM IN SAFETY + I THOUGHT OF THE AGONIES I HAD GONE THROUGH IN COMING FROM THE HOTEL + I MIGHT AT ANY MOMENT BE SEIZED AND SEARCHED AND THERE WOULD BE THE STONE IN MY WAISTCOAT POCKET + I WAS LEANING AGAINST THE WALL AT THE TIME AND LOOKING AT THE GEESE WHICH WERE WADDLING ABOUT ROUND MY FEET AND SUDDENLY AN IDEA CAME INTO MY HEAD WHICH SHOWED ME HOW I COULD BEAT THE BEST DETECTIVE THAT EVER LIVED + MY SISTER HAD TOLD ME SOME WEEKS BEFORE THAT I MIGHT HAVE THE PICK OF HER GEESE FOR A CHRISTMAS PRESENT AND I KNEW THAT SHE WAS ALWAYS AS GOOD AS HER WORD + I WOULD TAKE MY GOOSE NOW AND IN IT I WOULD CARRY MY STONE TO KILBURN + THERE WAS A LITTLE SHED IN THE YARD AND BEHIND THIS I DROVE ONE OF THE BIRDS A FINE BIG ONE WHITE WITH A BARRED TAIL + I CAUGHT IT AND PRYING ITS BILL OPEN I THRUST THE STONE DOWN ITS THROAT AS FAR AS MY FINGER COULD REACH + THE BIRD GAVE A GULP AND I FELT THE STONE PASS ALONG ITS GULLET AND DOWN INTO ITS CROP + BUT THE CREATURE FLAPPED AND STRUGGLED AND OUT CAME MY SISTER TO KNOW WHAT WAS THE MATTER + AS I TURNED TO SPEAK TO HER THE BRUTE BROKE LOOSE AND FLUTTERED OFF AMONG THE OTHERS + WHATEVER WERE YOU DOING WITH THAT BIRD JEM SAYS SHE + QUOTE WELL SAID I YOU SAID YOU'D GIVE ME ONE FOR CHRISTMAS AND I WAS FEELING WHICH WAS THE FATTEST + OH SAYS SHE WE'VE SET YOURS ASIDE FOR YOU JEM'S BIRD WE CALL IT + IT'S THE BIG WHITE ONE OVER YONDER + THERE'S TWENTY SIX OF THEM WHICH MAKES ONE FOR YOU AND ONE FOR US AND TWO DOZEN FOR THE MARKET + THANK YOU MAGGIE SAYS L. BUT IF IT IS ALL THE SAME TO YOU I'D RATHER HAVE THAT ONE I WAS HANDLING JUST NOW + THE OTHER IS A GOOD THREE POUND HEAVIER SAID SHE AND WE FATTENED IT EXPRESSLY FOR YOU + NEVER MIND + I'LL HAVE THE OTHER AND I'LL TAKE IT NOW SAID I + OH JUST AS YOU LIKE SAID SHE A LITTLE HUFFED + WHICH IS IT YOU WANT THEN + QUOTE THAT WHITE ONE WITH THE BARRED TAIL RIGHT IN THE MIDDLE OF THE FLOCK + OH VERY WELL + KILL IT AND TAKE IT WITH YOU + WELL I DID WHAT SHE SAID MR. HOLMES AND I CARRIED THE BIRD ALL THE WAY TO KILBURN + I TOLD MY PAL WHAT I HAD DONE FOR HE WAS A MAN THAT IT WAS EASY TO TELL A THING LIKE THAT TO + HE LAUGHED UNTIL HE CHOKED AND WE GOT A KNIFE AND OPENED THE GOOSE + MY HEART TURNED TO WATER FOR THERE WAS NO SIGN OF THE STONE AND I KNEW THAT SOME TERRIBLE MISTAKE HAD OCCURRED + I LEFT THE BIRD RUSHED BACK TO MY SISTER'S AND HURRIED INTO THE BACK YARD + THERE WAS NOT A BIRD TO BE SEEN THERE + WHERE ARE THEY ALL MAGGIE + I CRIED + GONE TO THE DEALER'S JEM + WHICH DEALER'S + QUOTE BRECKINRIDGE OF COVENT GARDEN + BUT WAS THERE ANOTHER WITH A BARRED TAIL + I ASKED THE SAME AS THE ONE I CHOSE + YES JEM THERE WERE TWO BARRED TAILED ONES AND I COULD NEVER TELL THEM APART + WELL THEN OF COURSE I SAW IT ALL AND I RAN OFF AS HARD AS MY FEET WOULD CARRY ME TO THIS MAN BRECKINRIDGE BUT HE HAD SOLD THE LOT AT ONCE AND NOT ONE WORD WOULD HE TELL ME AS TO WHERE THEY HAD GONE + YOU HEARD HIM YOURSELVES TO NIGHT + WELL HE HAS ALWAYS ANSWERED ME LIKE THAT + MY SISTER THINKS THAT I AM GOING MAD + SOMETIMES I THINK THAT I AM MYSELF + AND NOW AND NOW I AM MYSELF A BRANDED THIEF WITHOUT EVER HAVING TOUCHED THE WEALTH FOR WHICH I SOLD MY CHARACTER + GOD HELP ME + GOD HELP ME + HE BURST INTO CONVULSIVE SOBBING WITH HIS FACE BURIED IN HIS HANDS + THERE WAS A LONG SILENCE BROKEN ONLY BY HIS HEAVY BREATHING AND BY THE MEASURED TAPPING OF SHERLOCK HOLMES'S FINGER TIPS UPON THE EDGE OF THE TABLE + THEN MY FRIEND ROSE AND THREW OPEN THE DOOR + GET OUT SAID HE + QUOTE WHAT SIR + OH HEAVEN BLESS YOU + NO MORE WORDS + GET OUT + AND NO MORE WORDS WERE NEEDED + THERE WAS A RUSH A CLATTER UPON THE STAIRS THE BANG OF A DOOR AND THE CRISP RATTLE OF RUNNING FOOTFALLS FROM THE STREET + AFTER ALL WATSON SAID HOLMES REACHING UP HIS HAND FOR HIS CLAY PIPE I AM NOT RETAINED BY THE POLICE TO SUPPLY THEIR DEFICIENCIES + IF HORNER WERE IN DANGER IT WOULD BE ANOTHER THING BUT THIS FELLOW WILL NOT APPEAR AGAINST HIM AND THE CASE MUST COLLAPSE + I SUPPOSE THAT I AM COMMUTING A FELONY BUT IT IS JUST POSSIBLE THAT I AM SAVING A SOUL + THIS FELLOW WILL NOT GO WRONG AGAIN HE IS TOO TERRIBLY FRIGHTENED + SEND HIM TO JAIL NOW AND YOU MAKE HIM A JAIL BIRD FOR LIFE + BESIDES IT IS THE SEASON OF FORGIVENESS + CHANCE HAS PUT IN OUR WAY A MOST SINGULAR AND WHIMSICAL PROBLEM AND ITS SOLUTION IS ITS OWN REWARD + IF YOU WILL HAVE THE GOODNESS TO TOUCH THE BELL DOCTOR WE WILL BEGIN ANOTHER INVESTIGATION IN WHICH ALSO A BIRD WILL BE THE CHIEF FEATURE diff --git a/samples/LMTutorial/train/boscombe_valley.txt b/samples/LMTutorial/train/boscombe_valley.txt new file mode 100755 index 0000000..cc795f3 --- /dev/null +++ b/samples/LMTutorial/train/boscombe_valley.txt @@ -0,0 +1,619 @@ + WE WERE SEATED AT BREAKFAST ONE MORNING MY WIFE AND I WHEN THE MAID BROUGHT IN A TELEGRAM + IT WAS FROM SHERLOCK HOLMES AND RAN IN THIS WAY HAVE YOU A COUPLE OF DAYS TO SPARE + HAVE JUST BEEN WIRED FOR FROM THE WEST OF ENGLAND IN CONNECTION WITH BOSCOMBE VALLEY TRAGEDY + SHALL BE GLAD IF YOU WILL COME WITH ME + AIR AND SCENERY PERFECT + LEAVE PADDINGTON BY THE ELEVEN FIFTEEN + QUOTE WHAT DO YOU SAY DEAR QUOTE SAID MY WIFE LOOKING ACROSS AT ME + WILL YOU GO + I REALLY DON'T KNOW WHAT TO SAY + I HAVE A FAIRLY LONG LIST AT PRESENT + OH ANSTRUTHER WOULD DO YOUR WORK FOR YOU + YOU HAVE BEEN LOOKING A LITTLE PALE LATELY + I THINK THAT THE CHANGE WOULD DO YOU GOOD AND YOU ARE ALWAYS SO INTERESTED IN MR. SHERLOCK HOLMES'S CASES + QUOTE I SHOULD BE UNGRATEFUL IF I WERE NOT SEEING WHAT I GAINED THROUGH ONE OF THEM QUOTE I ANSWERED + BUT IF I AM TO GO I MUST PACK AT ONCE FOR I HAVE ONLY HALF AN HOUR + MY EXPERIENCE OF CAMP LIFE IN AFGHANISTAN HAD AT LEAST HAD THE EFFECT OF MAKING ME A PROMPT AND READY TRAVELLER + MY WANTS WERE FEW AND SIMPLE SO THAT IN LESS THAN THE TIME STATED I WAS IN A CAB WITH MY VALISE RATTLING AWAY TO PADDINGTON STATION + SHERLOCK HOLMES WAS PACING UP AND DOWN THE PLATFORM HIS TALL GAUNT FIGURE MADE EVEN GAUNTER AND TALLER BY HIS LONG GRAY TRAVELLING CLOAK AND CLOSE FITTING CLOTH CAP + IT IS REAILY VERY GOOD OF YOU TO COME WATSON SAID HE + IT MAKES A CONSIDERABLE DIFFERENCE TO ME HAVING SOMEONE WITH ME ON WHOM I CAN THOROUGHLY RELY + LOCAL AID IS ALWAYS EITHER WORTHLESS OR ELSE BIASSED + IF YOU WILL KEEP THE TWO CORNER SEATS I SHALL GET THE TICKETS + WE HAD THE CARRIAGE TO OURSELVES SAVE FOR AN IMMENSE LITTER OF PAPERS WHICH HOLMES HAD BROUGHT WITH HIM + AMONG THESE HE RUMMAGED AND READ WITH INTERVALS OF NOTE TAKING AND OF MEDITATION UNTIL WE WERE PAST READING + THEN HE SUDDENLY ROLLED THEM ALL INTO A GIGANTIC BALL AND TOSSED THEM UP ONTO THE RACK + HAVE YOU HEARD ANYTHING OF THE CASE HE ASKED + QUOTE NOT A WORD + I HAVE NOT SEEN A PAPER FOR SOME DAYS + THE LONDON PRESS HAS NOT HAD VERY FULL ACCOUNTS + I HAVE JUST BEEN LOOKING THROUGH ALL THE RECENT PAPERS IN ORDER TO MASTER THE PARTICULARS + IT SEEMS FROM WHAT I GATHER TO BE ONE OF THOSE SIMPLE CASES WHICH ARE SO EXTREMELY DIFFICULT + THAT SOUNDS A LITTLE PARADOXICAL + BUT IT IS PROFOUNDLY TRUE + SINGULARITY IS ALMOST INVARIABLY A CLUE + THE MORE FEATURELESS AND COMMONPLACE A CRIME IS THE MORE DIFFICULT IT IS TO BRING IT HOME + IN THIS CASE HOWEVER THEY HAVE ESTABLISHED A VERY SERIOUS CASE AGAINST THE SON OF THE MURDERED MAN QUOTE + IT IS A MURDER THEN + WELL IT IS CONJECTURED TO BE SO + I SHALL TAKE NOTHING FOR GRANTED UNTIL I HAVE THE OPPORTUNITY OF LOOKING PERSONALLY INTO IT + I WILL EXPLAIN THE STATE OF THINGS TO YOU AS FAR AS I HAVE BEEN ABLE TO UNDERSTAND IT IN A VERY FEW WORDS + BOSCOMBE VALLEY IS A COUNTRY DISTRICT NOT VERY FAR FROM ROSS IN HEREFORDSHIRE + THE LARGEST LANDED PROPRIETOR IN THAT PART IS A MR. JOHN TURNER WHO MADE HIS MONEY IN AUSTRALIA AND RETURNED SOME YEARS AGO TO THE OLD COUNTRY + ONE OF THE FARMS WHICH HE HELD THAT OF HATHERLEY WAS LET TO MR. CHARLES MCCARTHY WHO WAS ALSO AN EX AUSTRALIAN + THE MEN HAD KNOWN EACH OTHER IN THE COLONIES SO THAT IT WAS NOT UNNATURAL THAT WHEN THEY CAME TO SETTLE DOWN THEY SHOULD DO SO AS NEAR EACH OTHER AS POSSIBLE + TURNER WAS APPARENTLY THE RICHER MAN SO MCCARTHY BECAME HIS TENANT BUT STILL REMAINED IT SEEMS UPON TERMS OF PERFECT EQUALITY AS THEY WERE FREQUENTLY TOGETHER + MCCARTHY HAD ONE SON A LAD OF EIGHTEEN AND TURNER HAD AN ONLY DAUGHTER OF THE SAME AGE BUT NEITHER OF THEM HAD WIVES LIVING + THEY APPEAR TO HAVE AVOIDED THE SOCIETY OF THE NEIGHBOURING ENGLISH FAMILIES AND TO HAVE LED RETIRED LIVES THOUGH BOTH THE MCCARTHYS WERE FOND OF SPORT AND WERE FREQUENTLY SEEN AT THE RACE MEETINGS OF THE NEIGHBOURHOOD + MCCARTHY KEPT TWO SERVANTS A MAN AND A GIRL + TURNER HAD A CONSIDERABLE HOUSEHOLD SOME HALF DOZEN AT THE LEAST + THAT IS AS MUCH AS I HAVE BEEN ABLE TO GATHER ABOUT THE FAMILIES + NOW FOR THE FACTS + ON JUNE THIRD THAT IS ON MONDAY LAST MCCARTHY LEFT HIS HOUSE AT HATHERLEY ABOUT THREE IN THE AFTERNOON AND WALKED DOWN TO THE BOSCOMBE POOL WHICH IS A SMALL LAKE FORMED BY THE SPREADING OUT OF THE STREAM WHICH RUNS DOWN THE BOSCOMBE VALLEY + HE HAD BEEN OUT WITH HIS SERVING MAN IN THE MORNING AT ROSS AND HE HAD TOLD THE MAN THAT HE MUST HURRY AS HE HAD AN APPOINTMENT OF IMPORTANCE TO KEEP AT THREE + FROM THAT APPOINTMENT HE NEVER CAME BACK ALIVE + FROM HATHERLEY FARMHOUSE TO THE BOSCOMBE POOL IS A QUARTER OF A MILE AND TWO PEOPLE SAW HIM AS HE PASSED OVER THIS GROUND + ONE WAS AN OLD WOMAN WHOSE NAME IS NOT MENTIONED AND THE OTHER WAS WILLIAM CROWDER A GAME KEEPER IN THE EMPLOY OF MR. TURNER + BOTH THESE WITNESSES DEPOSE THAT MR. MCCARTHY WAS WALKING ALONE + THE GAME KEEPER ADDS THAT WITHIN A FEW MINUTES OF HIS SEEING MR. MCCARTHY PASS HE HAD SEEN HIS SON MR. JAMES MCCARTHY GOING THE SAME WAY WITH A GUN UNDER HIS ARM + TO THE BEST OF HIS BELIEF THE FATHER WAS ACTUALLY IN SIGHT AT THE TIME AND THE SON WAS FOLLOWING HIM + HE THOUGHT NO MORE OF THE MATTER UNTIL HE HEARD IN THE EVENING OF THE TRAGEDY THAT HAD OCCURRED + QUOTE THE TWO MCCARTHYS WERE SEEN AFTER THE TIME WHEN WILLIAM CROWDER THE GAME KEEPER LOST SIGHT OF THEM + THE BOSCOMBE POOL IS THICKLY WOODED ROUND WITH JUST A FRINGE OF GRASS AND OF REEDS ROUND THE EDGE + A GIRL OF FOURTEEN PATIENCE MORAN WHO IS THE DAUGHTER OF THE LODGE KEEPER OF THE BOSCOMBE VALLEY ESTATE WAS IN ONE OF THE WOODS PICKING FLOWERS + SHE STATES THAT WHILE SHE WAS THERE SHE SAW AT THE BORDER OF THE WOOD AND CLOSE BY THE LAKE MR. MCCARTHY AND HIS SON AND THAT THEY APPEARED TO BE HAVING A VIOLENT QUARREL + SHE HEARD MR. MCCARTHY THE ELDER USING VERY STRONG LANGUAGE TO HIS SON AND SHE SAW THE LATTER RAISE UP HIS HAND AS IF TO STRIKE HIS FATHER + SHE WAS SO FRIGHTENED BY THEIR VIOLENCE THAT SHE RAN AWAY AND TOLD HER MOTHER WHEN SHE REACHED HOME THAT SHE HAD LEFT THE TWO MCCARTHYS QUARRELLING NEAR BOSCOMBE POOL AND THAT SHE WAS AFRAID THAT THEY WERE GOING TO FIGHT + SHE HAD HARDLY SAID THE WORDS WHEN YOUNG MR. MCCARTHY CAME RUNNING UP TO THE LODGE TO SAY THAT HE HAD FOUND HIS FATHER DEAD IN THE WOOD AND TO ASK FOR THE HELP OF THE LODGE KEEPER + HE WAS MUCH EXCITED WITHOUT EITHER HIS GUN OR HIS HAT AND HIS RIGHT HAND AND SLEEVE WERE OBSERVED TO BE STAINED WITH FRESH BLOOD + ON FOLLOWING HIM THEY FOUND THE DEAD BODY STRETCHED OUT UPON THE GRASS BESIDE THE POOL + THE HEAD HAD BEEN BEATEN IN BY REPEATED BLOWS OF SOME HEAVY AND BLUNT WEAPON + THE INJURIES WERE SUCH AS MIGHT VERY WELL HAVE BEEN INFLICTED BY THE BUTT END OF HIS SON'S GUN WHICH WAS FOUND LYING ON THE GRASS WITHIN A FEW PACES OF THE BODY + UNDER THESE CIRCUMSTANCES THE YOUNG MAN WAS INSTANTLY ARRESTED AND A VERDICT OF WILFUL MURDER HAVING BEEN RETURNED AT THE INQUEST ON TUESDAY HE WAS ON WEDNESDAY BROUGHT BEFORE THE MAGISTRATES AT ROSS WHO HAVE REFERRED THE CASE TO THE NEXT ASSIZES + THOSE ARE THE MAIN FACTS OF THE CASE AS THEY CAME OUT BEFORE THE CORONER AND THE POLICE COURT + I COULD HARDLY IMAGINE A MORE DAMNING CASE I REMARKED + IF EVER CIRCUMSTANTIAL EVIDENCE POINTED TO A CRIMINAL IT DOES SO HERE + CIRCUMSTANTIAL EVIDENCE IS A VERY TRICKY THING ANSWERED HOLMES THOUGHTFULLY + IT MAY SEEM TO POINT VERY STRAIGHT TO ONE THING BUT IF YOU SHIFT YOUR OWN POINT OF VIEW A LITTLE YOU MAY FIND IT POINTING IN AN EQUALLY UNCOMPROMISING MANNER TO SOMETHING ENTIRELY DIFFERENT + IT MUST BE CONFESSED HOWEVER THAT THE CASE LOOKS EXCEEDINGLY GRAVE AGAINST THE YOUNG MAN AND IT IS VERY POSSIBLE THAT HE IS INDEED THE CULPRIT + THERE ARE SEVERAL PEOPLE IN THE NEIGHBOURHOOD HOWEVER AND AMONG THEM MISS TURNER THE DAUGHTER OF THE NEIGHBOURING LANDOWNER WHO BELIEVE IN HIS INNOCENCE AND WHO HAVE RETAINED LESTRADE WHOM YOU MAY RECOLLECT IN CONNECTION WITH A STUDY IN SCARLET TO WORK OUT THE CASE IN HIS INTEREST + LESTRADE BEING RATHER PUZZLED HAS REFERRED THE CASE TO ME AND HENCE IT IS THAT TWO MIDDLE AGED GENTLEMEN ARE FLYING WESTWARD AT FIFTY MILES AN HOUR INSTEAD OF QUIETLY DIGESTING THEIR BREAKFASTS AT HOME QUOTE + I AM AFRAID SAID I THAT THE FACTS ARE SO OBVIOUS THAT YOU WILL FIND LITTLE CREDIT TO BE GAINED OUT OF THIS CASE + THERE IS NOTHING MORE DECEPTIVE THAN AN OBVIOUS FACT HE ANSWERED LAUGHING + BESIDES WE MAY CHANCE TO HIT UPON SOME OTHER OBVIOUS FACTS WHICH MAY HAVE BEEN BY NO MEANS OBVIOUS TO MR. LESTRADE + YOU KNOW ME TOO WELL TO THINK THAT I AM BOASTING WHEN I SAY THAT I SHALL EITHER CONFIRM OR DESTROY HIS THEORY BY MEANS WHICH HE IS QUITE INCAPABLE OF EMPLOYING OR EVEN OF UNDERSTANDING + TO TAKE THE FIRST EXAMPLE TO HAND I VERY CLEARLY PERCEIVE THAT IN YOUR BEDROOM THE WINDOW IS UPON THE RIGHT HAND SIDE AND YET I QUESTION WHETHER MR. LESTRADE WOULD HAVE NOTED EVEN SO SELF EVIDENT A THING AS THAT + MY DEAR FELLOW I KNOW YOU WELL + I KNOW THE MILITARY NEATNESS WHICH CHARACTERIZES YOU + YOU SHAVE EVERY MORNING AND IN THIS SEASON YOU SHAVE BY THE SUNLIGHT BUT SINCE YOUR SHAVING IS LESS AND LESS COMPLETE AS WE GET FARTHER BACK ON THE LEFT SIDE UNTIL IT BECOMES POSITIVELY SLOVENLY AS WE GET ROUND THE ANGLE OF THE JAW IT IS SURELY VERY CLEAR THAT THAT SIDE IS LESS ILLUMINATED THAN THE OTHER + I COULD NOT IMAGINE A MAN OF YOUR HABITS LOOKING AT HIMSELF IN AN EQUAL LIGHT AND BEING SATISFIED WITH SUCH A RESULT + I ONLY QUOTE THIS AS A TRIVIAL EXAMPLE OF OBSERVATION AND INFERENCE + THEREIN LIES MY METIER AND IT IS JUST POSSIBLE THAT IT MAY BE OF SOME SERVICE IN THE INVESTIGATION WHICH LIES BEFORE US + THERE ARE ONE OR TWO MINOR POINTS WHICH WERE BROUGHT OUT IN THE INQUEST AND WHICH ARE WORTH CONSIDERING QUOTE + WHAT ARE THEY + IT APPEARS THAT HIS ARREST DID NOT TAKE PLACE AT ONCE BUT AFTER THE RETURN TO HATHERLEY FARM + ON THE INSPECTOR OF CONSTABULARY INFORMING HIM THAT HE WAS A PRISONER HE REMARKED THAT HE WAS NOT SURPRISED TO HEAR IT AND THAT IT WAS NO MORE THAN HIS DESERTS + THIS OBSERVATION OF HIS HAD THE NATURAL EFFECT OF REMOVING ANY TRACES OF DOUBT WHICH MIGHT HAVE REMAINED IN THE MINDS OF THE CORONER'S JURY + IT WAS A CONFESSION I EJACULATED + NO FOR IT WAS FOLLOWED BY A PROTESTATION OF INNOCENCE + QUOTE COMING ON THE TOP OF SUCH A DAMNING SERIES OF EVENTS IT WAS AT LEAST A MOST SUSPICIOUS REMARK QUOTE + ON THE CONTRARY SAID HOLMES IT IS THE BRIGHTEST RIFT WHICH I CAN AT PRESENT SEE IN THE CLOUDS + HOWEVER INNOCENT HE MIGHT BE HE COULD NOT BE SUCH AN ABSOLUTE IMBECILE AS NOT TO SEE THAT THE CIRCUMSTANCES WERE VERY BLACK AGAINST HIM + HAD HE APPEARED SURPRISED AT HIS OWN ARREST OR FEIGNED INDIGNATION AT IT I SHOULD HAVE LOOKED UPON IT AS HIGHLY SUSPICIOUS BECAUSE SUCH SURPRISE OR ANGER WOULD NOT BE NATURAL UNDER THE CIRCUMSTANCES AND YET MIGHT APPEAR TO BE THE BEST POLICY TO A SCHEMING MAN + HIS FRANK ACCEPTANCE OF THE SITUATION MARKS HIM AS EITHER AN INNOCENT MAN OR ELSE AS A MAN OF CONSIDERABLE SELF RESTRAINT AND FIRMNESS + AS TO HIS REMARK ABOUT HIS DESERTS IT WAS ALSO NOT UNNATURAL IF YOU CONSIDER THAT HE STOOD BESIDE THE DEAD BODY OF HIS FATHER AND THAT THERE IS NO DOUBT THAT HE HAD THAT VERY DAY SO FAR FORGOTTEN HIS FILIAL DUTY AS TO BANDY WORDS WITH HIM AND EVEN ACCORDING TO THE LITTLE GIRL WHOSE EVIDENCE IS SO IMPORTANT TO RAISE HIS HAND AS IF TO STRIKE HIM + THE SELF REPROACH AND CONTRITION WHICH ARE DISPLAYED IN HIS REMARK APPEAR TO ME TO BE THE SIGNS OF A HEALTHY MIND RATHER THAN OF A GUILTY ON + I SHOOK MY HEAD + MANY MEN HAVE BEEN HANGED ON FAR SLIGHTER EVIDENCE I REMARKED + SO THEY HAVE + AND MANY MEN HAVE BEEN WRONGFULLY HANGED + QUOTE WHAT IS THE YOUNG MAN'S OWN ACCOUNT OF THE MATTER QUOTE + IT IS I AM AFRAID NOT VERY ENCOURAGING TO HIS SUPPORTERS THOUGH THERE ARE ONE OR TWO POINTS IN IT WHICH ARE SUGGESTIVE + YOU WILL FIND IT HERE AND MAY READ IT FOR YOURSELF + HE PICKED OUT FROM HIS BUNDLE A COPY OF THE LOCAL HEREFORDSHIRE PAPER AND HAVING TURNED DOWN THE SHEET HE POINTED OUT THE PARAGRAPH IN WHICH THE UNFORTUNATE YOUNG MAN HAD GIVEN HIS OWN STATEMENT OF WHAT HAD OCCURRED + I SETTLED MYSELF DOWN IN THE CORNER OF THE CARRIAGE AND READ IT VERY CAREFULLY + IT RAN IN THIS WAY MR. JAMES MCCARTHY THE ONLY SON OF THE DECEASED WAS THEN CALLED AND GAVE EVIDENCE AS FOLLOWS I HAD BEEN AWAY FROM HOME FOR THREE DAYS AT BRISTOL AND HAD ONLY JUST RETURNED UPON THE MORNING OF LAST MONDAY THE THREE D. + MY FATHER WAS ABSENT FROM HOME AT THE TIME OF MY ARRIVAL AND I WAS INFORMED BY THE MAID THAT HE HAD DRIVEN OVER TO ROSS WITH JOHN COBB THE GROOM + SHORTLY AFTER MY RETURN I HEARD THE WHEELS OF HIS TRAP IN THE YARD AND LOOKING OUT OF MY WINDOW I SAW HIM GET OUT AND WALK RAPIDLY OUT OF THE YARD THOUGH I WAS NOT AWARE IN WHICH DIRECTION HE WAS GOING + I THEN TOOK MY GUN AND STROLLED OUT IN THE DIRECTION OF THE BOSCOMBE POOL WITH THE INTENTION OF VISITING THE RABBIT WARREN WHICH IS UPON THE OTHER SIDE + ON MY WAY I SAW WILLIAM CROWDER THE GAME KEEPER AS HE HAD STATED IN HIS EVIDENCE BUT HE IS MISTAKEN IN THINKING THAT I WAS FOLLOWING MY FATHER + I HAD NO IDEA THAT HE WAS IN FRONT OF ME + WHEN ABOUT A HUNDRED YARDS FROM THE POOL I HEARD A CRY OF COOEE WHICH WAS A USUAL SIGNAL BETWEEN MY FATHER AND MYSELF + I THEN HURRIED FORWARD AND FOUND HIM STANDING BY THE POOL + HE APPEARED TO BE MUCH SURPRISED AT SEEING ME AND ASKED ME RATHER ROUGHLY WHAT I WAS DOING THERE + A CONVERSATION ENSUED WHICH LED TO HIGH WORDS AND ALMOST TO BLOWS FOR MY FATHER WAS A MAN OF A VERY VIOLENT TEMPER + SEEING THAT HIS PASSION WAS BECOMING UNGOVERNABLE I LEFT HIM AND RETURNED TOWARDS HATHERLEY FARM + I HAD NOT GONE MORE THAN ONE HUNDRED FIFTY YARDS HOWEVER WHEN I HEARD A HIDEOUS OUTCRY BEHIND ME WHICH CAUSED ME TO RUN BACK AGAIN + I FOUND MY FATHER EXPIRING UPON THE GROUND WITH HIS HEAD TERRIBLY INJURED + I DROPPED MY GUN AND HELD HIM IN MY ARMS BUT HE ALMOST INSTANTLY EXPIRED + I KNELT BESIDE HIM FOR SOME MINUTES AND THEN MADE MY WAY TO MR. TURNER'S LODGE KEEPER HIS HOUSE BEING THE NEAREST TO ASK FOR ASSIS TANCE + I SAW NO ONE NEAR MY FATHER WHEN I RETURNED AND I HAVE NO IDEA HOW HE CAME BY HIS INJURIES + HE WAS NOT A POPULAR MAN BEING SOMEWHAT COLD AND FORBIDDING IN HIS MANNERS BUT HE HAD AS FAR AS I KNOW NO ACTIVE ENEMIES + I KNOW NOTHING FURTHER OF THE MATTER + THE CORONER DID YOUR FATHER MAKE ANY STATEMENT TO YOU BEFORE HE DIED + WITNESS HE MUMBLED A FEW WORDS BUT I COULD ONLY CATCH SOME ALLUSION TO A RAT + THE CORONER WHAT DID YOU UNDERSTAND BY THAT + WITNESS IT CONVEYED NO MEANING TO ME + I THOUGHT THAT HE WAS DELIRIOUS + THE CORONER WHAT WAS THE POINT UPON WHICH YOU AND YOUR FATHER HAD THIS FINAL QUARREL + WITNESS I SHOULD PREFER NOT TO ANSWER + THE CORONER I AM AFRAID THAT I MUST PRESS IT + WITNESS IT IS REALLY IMPOSSIBLE FOR ME TO TELL YOU + I CAN ASSURE YOU THAT IT HAS NOTHING TO DO WITH THE SAD TRAGEDY WHICH FOLLOWED + THE CORONER THAT IS FOR THE COURT TO DECIDE + I NEED NOT POINT OUT TO YOU THAT YOUR REFUSAL TO ANSWER WILL PREJUDICE YOUR CASE CONSIDERABLY IN ANY FUTURE PROCEEDINGS WHICH MAY ARISE + WITNESS I MUST STILL REFUSE + THE CORONER I UNDERSTAND THAT THE CRY OF COOEE WAS A COMMON SIGNAL BETWEEN YOU AND YOUR FATHER + WITNESLS IT WAS + THE CORONER HOW WAS IT THEN THAT HE UTTERED IT BEFORE HE SAW YOU AND BEFORE HE EVEN KNEW THAT YOU HAD RETURNED FROM BRISTOL + WITNESS WITH CONSIDERABLE CONFUSION I DO NOT KNOW + A JURYMAN DID YOU SEE NOTHING WHICH AROUSED YOUR SUSPICLONS WHEN YOU RETURNED ON HEARING THE CRY AND FOUND YOUR FATHER FATALLY INJURED + WITNESS NOTHING DEFINITE + THE CORONER WHAT DO YOU MEAN + WITNESS I WAS SO DISTURBED AND EXCITED AS I RUSHED OUT INTO THE OPEN THAT I COULD THINK OF NOTHING EXCEPT OF MY FATHER + YET I HAVE A VAGUE IMPRESSION THAT AS I RAN FORWARD SOMETHING LAY UPON THE GROUND TO THE LEFT OF ME + IT SEEMED TO ME TO BE SOMETHING GRAY IN COLOUR A COAT OF SOME SORT OR A PLAID PERHAPS + WHEN I ROSE FROM MY FATHER I LOOKED ROUND FOR IT BUT IT WAS GONE + QUOTE DO YOU MEAN THAT IT DISAPPEARED BEFORE YOU WENT FOR HELP QUOTE + YES IT WAS GONE + YOU CANNOT SAY WHAT IT WAS + NO I HAD A FEELING SOMETHING WAS THERE + HOW FAR FROM THE BODY + A DOZEN YARDS OR SO + QUOTE AND HOW FAR FROM THE EDGE OF THE WOOD QUOTE + ABOUT THE SAME + THEN IF IT WAS REMOVED IT WAS WHILE YOU WERE WITHIN A DOZEN YARDS OF IT + YES BUT WITH MY BACK TOWARDS IT + THIS CONCLUDED THE EXAMINATION OF THE WITNESS + I SEE SAID I AS I GLANCED DOWN THE COLUMN THAT THE CORONER IN HIS CONCLUDING REMARKS WAS RATHER SEVERE UPON YOUNG MCCARTHY + HE CALLS ATTENTION AND WITH REASON TO THE DISCREPANCY ABOUT HIS FATHER HAVING SIGNALLED TO HIM BEFORE SEEING HIM ALSO TO HIS REFUSAL TO GIVE DETAILS OF HIS CONVERSATION WITH HIS FATHER AND HIS SINGULAR ACCOUNT OF HIS FATHER'S DYING WORDS + THEY ARE ALL AS HE REMARKS VERY MUCH AGAINST THE SON + HOLMES LAUGHED SOFTLY TO HIMSELF AND STRETCHED HIMSELF OUT UPON THE CUSHIONED SEAT + QUOTE BOTH YOU AND THE CORONER HAVE BEEN AT SOME PAINS QUOTE SAID HE QUOTE TO SINGLE OUT THE VERY STRONGEST POINTS IN THE YOUNG MAN'S FAVOUR + DON'T YOU SEE THAT YOU ALTERNATELY GIVE HIM CREDIT FOR HAVING TOO MUCH IMAGINITION AND TOO LITTLE + TOO LITTLE IF HE COULD NOT INVENT A CAUSE OF QUARREL WHICH WOULD GIVE HIM THE SYMPATHY OF THE JURY TOO MUCH IF HE EVOLVED FROM HIS OWN INNER CONSCIOUSNESS ANYTHING SO OUTRE AS A DYING REFERENCE TO A RAT AND THE INCIDENT OF THE VANISHING CLOTH + NO SIR I SHALL APPROACH THIS CASE FROM THE POINT OF VIEW THAT WHAT THIS YOUNG MAN SAYS IS TRUE AND WE SHALL SEE WHITHER THAT HYPOTHESIS WILL LEAD US + AND NOW HERE IS MY POCKET PETRARCH AND NOT ANOTHER WORD SHALL I SAY OF THIS CASE UNTIL WE ARE ON THE SCENE OF ACTION + WE LUNCH AT SWINDON AND I SEE THAT WE SHALL BE THERE IN TWENTY MINUTES + IT WAS NEARLY FOUR O'CLOCK WHEN WE AT LAST AFTER PASSING THROUGH THE BEAUTIFUL STROUD VALLEY AND OVER THE BROAD GLEAMING SEVERN FOUND OURSELVES AT THE PRETTY LITTLE COUNTRY TOWN OF ROSS + A LEAN FERRET LIKE MAN FURTIVE AND SLY LOOKING WAS WAITING FOR US UPON THE PLATFORM + IN SPITE OF THE LIGHT BROWN DUSTCOAT AND LEATHER LEGGINGS WHICH HE WORE IN DEFERENCE TO HIS RUSTIC SURROUNDINGS I HAD NO DIFFICULTY IN RECOGNIZING LESTRADE OF SCOTLAND YARD + WITH HIM WE DROVE TO THE HEREFORD ARMS WHERE A ROOM HAD ALREADY BEEN ENGAGED FOR US + I HAVE ORDERED A CARRIAGE SAID LESTRADE AS WE SAT OVER A CUP OF TEA + I KNEW YOUR ENERGETIC NATURE AND THAT YOU WOULD NOT BE HAPPY UNTIL YOU HAD BEEN ON THE SCENE OF THE CRIME + IT WAS VERY NICE AND COMPLIMENTARY OF YOU HOLMES ANSWERED + IT IS ENTIRELY A QUESTION OF BAROMETRIC PRESSURE + LESTRADE LOOKED STARTLED + QUOTE I DO NOT QUITE FOLLOW QUOTE HE SAID + HOW IS THE GLASS + TWENTY NINE I SEE + NO WIND AND NOT A CLOUD IN THE SKY + I HAVE A CASEFUL OF CIGARETTES HERE WHICH NEED SMOKING AND THE SOFA IS VERY MUCH SUPERIOR TO THE USUAL COUNTRY HOTEL ABOMINATION + I DO NOT THINK THAT IT IS PROBABLE THAT I SHALL USE THE CARRIAGE TO NIGHT + LESTRADE LAUGHED INDULGENTLY + YAU HAVE NO DOUBT ALREADY FORMED YOUR CONCLUSIONS FROM THE NEWSPAPERS HE SAID + THE CASE IS AS PLAIN AS A PIKESTAFF AND THE MORE ONE GOES INTO IT THE PLAINER IT BECOMES + STILL OF COURSE ONE CAN'T REFUSE A LADY AND SUCH A VERY POSITIVE ONE TOO + SHE HAI HEARD OF YOU AND WOULD HAVE YOUR OPINION THOUGH I REPEATEDLY TOLD HER THAT THERE WAS NOTHING WHICH YOU COULD DO WHICH I HAD NOT ALREADY DONE + WHY BLESS MY SOUL HERE IS HER CARRIAGE AT THE DOOR + HE HAD HARDLY SPOKEN BEFORE THERE RUSHED INTO THE ROOM ONE OF THE MOST LOVELY YOUNG WOMEN THAT I HAVE EVER SEEN IN MY LIFE + HER VIOLET EYES SHINING HER LIPS PARTED A PINK FLUSH UPON HER CHEEKS ALL THOUGHT OF HER NATURAL RESERVE LOST IN HER OVERPOWERING EXCITEMENT AND CONCERN + QUOTE OH MR. SHERLOCK HOLMES QUOTE SHE CRIED GLANCING FROM ONE TO THE OTHER OF US AND FINALLY WITH A WOMAN'S QUICK INTUITION FASTENING UPON MY COMPANION QUOTE I AM SO GLAD THAT YOU HAVE COME + I HAVE DRIVEN DOWN TO TELL YOU SO + I KNOW THAT JAMES DIDN'T DO IT + I KNOW IT AND I WANT YOU TO START UPON YOUR WORK KNOWING IT TOO + NEVER LET YOURSELF DOUBT UPON THAT POINT + WE HAVE KNOWN EACH OTHER SINCE WE WERE LITTLE CHILDREN AND I KNOW HIS FAULTS AS NO ONE ELSE DOES BUT HE IS TOO TENDERHEARTED TO HURT A FLY + SUCH A CHARGE IS ABSURD TO ANYONE WHO REALLY KNOWS HIM + I HOPE WE MAY CLEAR HIM MISS TURNER SAID SHERLOCK HOLMES + YOU MAY RELY UPON MY DOING ALL THAT I CAN + BUT YOU HAVE READ THE EVIDENCE + YOU HAVE FORMED SOME CONCLUSION + DO YOU NOT SEE SOME LOOPHOLE SOME FLAW + DO YOU NOT YOURSELF THINK THAT HE IS INNOCENT + QUOTE I THINK THAT IT IS VERY PROBABLE QUOTE + THERE NOW SHE CRIED THROWING BACK HER HEAD AND LOOKING DEFIANTLY AT LESTRADE + YOU HEAR + HE GIVES ME HOPES + LESTRADE SHRUGGED HIS SHOULDERS + I AM AFRAID THAT MY COLLEAGUE HAS BEEN A LITTLE QUICK IN FORMING HIS CONCLUSIONS HE SAID + BUT HE IS RIGHT + OH + I KNOW THAT HE IS RIGHT + JAMES NEVER DID IT + AND ABOUT HIS QUARREL WITH HIS FATHER I AM SURE THAT THE REASON WHY HE WOULD NOT SPEAK ABOUT IT TO THE CORONER WAS BECAUSE I WAS CONCERNED IN IT QUOTE + IN WHAT WAY ASKED HOLMES + IT IS NO TIME FOR ME TO HIDE ANYTHING + JAMES AND HIS FATHER HAD MANY DISAGREEMENTS ABOUT ME + MR. MCCARTHY WAS VERY ANXIOUS THAT THERE SHOULD BE A MARRIAGE BETWEEN US + JAMES AND I HAVE ALWAYS LOVED EACH OTHER AS BROTHER AND SISTER BUT OF COURSE HE IS YOUNG AND HAS SEEN VERY LITTLE OF LIFE YET AND AND WELL HE NATURALLY DID NOT WISH TO DO ANYTHING LIKE THAT YET + SO THERE WERE QUARRELS AND THIS I AM SURE WAS ONE OF THEM + AND YOUR FATHER ASKED HOLMES + WAS HE IN FAVOUR OF SUCH A UNION + QUOTE NO HE WAS AVERSE TO IT ALSO + NO ONE BUT MR. MCCARTHY WAS IN FAVOUR OF IT + A QUICK BLUSH PASSED OVER HER FRESH YOUNG FACE AS HOLMES SHOT ONE OF HIS KEEN QUESTIONING GLANCES AT HER + THANK YOU FOR THIS INFORMATION SAID HE + MAY I SEE YOUR FATHER IF I CALL TO MORROW + I AM AFRAID THE DOCTOR WON'T ALLOW IT + THE DOCTOR + QUOTE YES HAVE YOU NOT HEARD + POOR FATHER HAS NEVER BEEN STRONG FOR YEARS BACK BUT THIS HAS BROKEN HIM DOWN COMPLETELY + HE HAS TAKEN TO HIS BED AND DOCTOR WILLOWS SAYS THAT HE IS A WRECK AND THAT HIS NLERVOUS SYSTEM IS SHATTERED + MR. MCCARTHY WAS THE ONLY MAN ALIVE WHO HAD KNOWN DAD IN THE OLD DAYS IN VICTORIA + HA LN VICTORIA + THAT IS IMPORTANT + YES AT THE MINES + QUITE SO AT THE GOLD MINES WHERE AS I UNDERSTAND MR. TURNER MADE HIS MONEY + QUOTE YES CERTAINLY QUOTE + THANK YOU MISS TURNER + YOU HAVE BEEN OF MATERIAL ASSISTANCE TO ME + YOU WILL TELL ME IF YOU HAVE ANY NEWS TO MORROW + NO DOUBT YOU WILL GO TO THE PRISON TO SEE JAMES + OH IF YOU DO MR. HOLMES DO TELL HIM THAT I KNOW HIM TO BE INNOCENT + I WILL MISS TURNER + QUOTE I MUST GO HOME NOW FOR DAD IS VERY ILL AND HE MISSES ME SO IF I LEAVE HIM + GOOD BYE AND GOD HELP YOU IN YOUR UNDERTAKING + SHE HURRIED FROM THE ROOM AS IMPULSIVELY AS SHE HAD ENTERED AND WE HEARD THE WHEELS OF HER CARRIAGE RATTLE OFF DOWN THE STREET + I AM ASHAMED OF YOU HOLMES SAID LESTRADE WITH DIGNITY AFTER A FEW MINUTES' SILENCE + WHY SHOULD YOU RAISE UP HOPES WHICH YOU ARE BOUND TO DISAPPOINT + I AM NOT OVER TENDER OF HEART BUT I CALL IT CRUEL + I THINK THAT I SEE MY WAY TO CLEARING JAMES MCCARTHY SAID HOLMES + QUOTE HAVE YOU AN ORDER TO SEE HIM IN PRISON QUOTE + YES BUT ONLY FOR YOU AND ME + THEN I SHALL RECONSIDER MY RESOLUTION ABOUT GOING OUT + WE HAVE STILL TIME TO TAKE A TRAIN TO HEREFORD AND SEE HIM TO NIGHT + AMPLE + THEN LET US DO SO + WATSON I FEAR THAT YOU WILL FIND IT VERY SLOW BUT I SHALL ONLY BE AWAY A COUPLE OF HOURS QUOTE + I WALKED DOWN TO THE STATION WITH THEM AND THEN WANDERED THROUGH THE STREETS OF THE LITTLE TOWN FINALLY RETURNING TO THE HOTEL WHERE I LAY UPON THE SOFA AND TRIED TO INTEREST MYSELF IN A YELLOW BACKED NOVEL + THE PUNY PLOT OF THE STORY WAS SO THIN HOWEVER WHEN COMPARED TO THE DEEP MYSTERY THROUGH WHICH WE WERE GROPING AND I FOUND MY ATTENTION WANDER SO CONTINUALLY FROM THE ACTION TO THE FACT THAT I AT LAST FLUNG IT ACROSS THE ROOM AND GAVE MYSELF UP ENTIRELY TO A CONSIDERATION OF THE EVENTS OF THE DAY + SUPPOSING THAT THIS UNHAPPY YOUNG MAN'S STORY WERE ABSOLUTELY TRUE THEN WHAT HELLISH THING WHAT ABSOLUTELY UNFORESEEN AND EXTRAORDINARY CALAMITY COULD HAVE OCCURRED BETWEEN THE TIME WHEN HE PARTED FROM HIS FATHER AND THE MOMENT WHEN DRAWN BACK BY HIS SCREAMS HE RUSHED INTO THE GLADE + IT WAS SOMETHING TERRIBLE AND DEADLY + WHAT COULD IT BE + MIGHT NOT THE NATURE OF THE INJURIES REVEAL SOMETHING TO MY MEDICAL INSTINCTS + I RANG THE BELL AND CALLED FOR THE WEEKLY COUNTY PAPER WHICH CONTAINED A VERBATIM ACCOUNT OF THE INQUEST + IN THE SURGEON'S DEPOSITION IT WAS STATED THAT THE POSTERIOR THIRD OF THE LEFT PARIETAL BONE AND THE LEFT HALF OF THE OCCIPITAL BONE HAIL BEEN SHATTERED BY A HEAVY BLOW FROM A BLUNT WEAPON + I MARKED THE SPOT UPON MY OWN HEAD + CLEARLY SUCH A BLOW MUST HAVE BEEN STRUCK FROM BEHIND + THAT WAS TO SOME EXTENT IN FAVOUR OF THE ACCUSED AS WHEN SEEN QUARRELLING HE WAS FACE TO FACE WITH HIS FATHER + STILL IT DID NOT GO FOR VERY MUCH FOR THE OLDER MAN MIGHT HAVE TURNED HIS BACK BEFORE THE BLOW FELL + STILL IT MIGHT BE WORTH WHILE TO CALL HOLMES'S ATTENTION TO IT + THEN THERE WAS THE PECULIAR DYING REFERENCE TO A RAT + WHAT COULD THAT MEAN + IT COULD NOT BE DELIRIUM + A MAN DYING FROM A SUDDEN BLOW DOES NOT COMMONLY BECOME DELIRIOUS + NO IT WAS MORE LIKELY TO BE AN ATTEMPT TO EXPLAIN HOW HE MET HIS FATE + BUT WHAT COULD IT INDICATE + I CUDGELLED MY BRAINS TO FIND SOME POSSIBLE EXPLANATION + AND THEN THE INCIDENT OF THE GRAY CLOTH SEEN BY YOUNG MCCARTHY + IF THAT WERE TRUE THE MURDERER MUST HAVE DROPPED SOME PART OF HIS DRESS PRESUMABLY HIS OVERCOAT IN HIS FLIGHT AND MUST HAVE HAD THE HARDIHOOD TO RETURN AND TO CARRY IT AWAY AT THE INSTANT WHEN THE SON WAS KNEELING WITH HIS BACK TURNED NOT A DOZEN PACES OFF + WHAT A TISSUE OF MYSTERIES AND IMPROBABILITIES THE WHOLE THING WAS + I DID NOT WONDER AT LESTRADE'S OPINION AND YET I HAD SO MUCH FAITH IN SHERLOCK HOLMES'S INSIGHT THAT I COULD NOT LOSE HOPE AS LONG AS EVERY FRESH FACT SEEMED TO STRENGTHEN HIS CONVICTION OF YOUNG MCCARTHY'S INNOCENCE + IT WAS LATE BEFORE SHERLOCK HOLMES RETURNED + HE CAME BACK ALONE FOR LESTRADE WAS STAYING IN LODGINGS IN THE TOWN + THE GLASS STILL KEEPS VERY HIGH HE REMARKED AS HE SAT DOWN + IT IS OF IMPORTANCE THAT IT SHOULD NOT RAIN BEFORE WE ARE ABLE TO GO OVER THE GROUND + ON THE OTHER HAND A MAN SHOULD BE AT HIS VERY BEST AND KEENEST FOR SUCH NICE WORK AS THAT AND I DID NOT WISH TO DO IT WHEN FAGGED BY A LONG JOURNEY + I HAVE SEEN YOUNG MCCARTHY + AND WHAT DID YOU LEARN FROM HIM + NOTHING + QUOTE COULD HE THROW NO LIGHT QUOTE + NONE AT ALL + I WAS INCLINED TO THINK AT ONE TIME THAT HE KNEW WHO HAD DONE IT AND WAS SCREENING HIM OR HER BUT I AM CONVINCED NOW THAT HE IS AS PUZZLED AS EVERYONE ELSE + HE IS NOT A VERY QUICK WITTED YOUTH THOUGH COMELY TO LOOK AT AND I SHOULD THINK SOUND AT HEART + I CANNOT ADMIRE HIS TASTE I REMARKED IF IT IS INDEED A FACT THAT HE WAS AVERSE TO A MARRIAGE WITH SO CHARMING A YOUNG LADY AS THIS MISS TURNER + AH THEREBY HANGS A RATHER PAINFUL TALE + THIS FELLOW IS MADLY INSANELY IN LOVE WITH HER BUT SOME TWO YEARS AGO WHEN HE WAS ONLY A LAD AND BEFORE HE REALLY KNEW HER FOR SHE HAD BEEN AWAY FIVE YEARS AT A BOARDING SCHOOL WHAT DOES THE IDIOT DO BUT GET INTO THE CLUTCHES OF A BARMAID IN BRISTOL AND MARRY HER AT A REGISTRY OFFICE + NO ONE KNOWS A WORD OF THE MATTER BUT YOU CAN IMAGINE HOW MADDENING IT MUST BE TO HIM TO BE UPBRAIDED FOR NOT DOING WHAT HE WOULD GIVE HIS VERY EYES TO DO BUT WHAT HE KNOWS TO BE ABSOLUTELY IMPOSSIBLE + IT WAS SHEER FRENZY OF THIS SORT WHICH MADE HIM THROW HIS HANDS UP INTO THE AIR WHEN HIS FATHER AT THEIR LAST INTERVIEW WAS GOADING HIM ON TO PROPOSE TO MISS TURNER + ON THE OTHER HAND HE HAD NO MEANS OF SUPPORTING HIMSELF AND HIS FATHER WHO WAS BY ALL ACCOUNTS A VERY HARD MAN WOULD HAVE THROWN HIM OVER UTTERLY HAD HE KNOWN THE TRUTH + IT WAS WITH HIS BARMAID WIFE THAT HE HAD SPENT THE LAST THREE DAYS IN BRISTOL AND HIS FATHER DID NOT KNOW WHERE HE WAS + MARK THAT POINT + IT IS OF IMPORTANCE + GOOD HAS COME OUT OF EVIL HOWEVER FOR THE BARMAID FINDING FROM THE PAPERS THAT HE IS IN SERIOUS TROUBLE AND LIKELY TO BE HANGED HAS THROWN HIM OVER UTTERLY AND HAS WRITTEN TO HIM TO SAY THAT SHE HAS A HUSBAND ALREADY IN THE BERMUDA DOCKYARD SO THAT THERE IS REALLY NO TIE BETWEEN THEM + I THINK THAT THAT BIT OF NEWS HAS CONSOLED YOUNG MCCARTHY FOR ALL THAT HE HAS SUFFERED + QUOTE BUT IF HE IS INNOCENT WHO HAS DONE IT QUOTE + AH WHO + I WOULD CALL YOUR ATTENTION VERY PARTICULARLY TO TWO POINTS + ONE IS THAT THE MURDERED MAN HAD AN APPOINTMENT WITH SOMEONE AT THE POOL AND THAT THE SOMEONE COULD NOT HAVE BEEN HIS SON FOR HIS SON WAS AWAY AND HE DID NOT KNOW WHEN HE WOULD RETURN + THE SECOND IS THAT THE MURDERED MAN WAS HEARD TO CRY COOEE BEFORE HE KNEW THAT HIS SON HAD RETURNED + THOSE ARE THE CRUCIAL POINTS UPON WHICH THE CASE DEPENDS + AND NOW LET US TALK ABOUT GEORGE MEREDITH IF YOU PLEASE AND WE SHALL LEAVE ALL MINOR MATTERS UNTIL TO MORROW + THERE WAS NO RAIN AS HOLMES HAD FORETOLD AND THE MORNING BROKE BRIGHT AND CLOUDLESS + AT NINE O'CLOCK LESTRADE CALLED FOR US WITH THE CARRIAGE AND WE SET OFF FOR HATHERLEY FARM AND THE BOSCOMBE POOL + THERE IS SERIOUS NEWS THIS MORNING LESTRADE OBSERVED + IT IS SAID THAT MR. TURNER OF THE HALL IS SO ILL THAT HIS LIFE IS DESPAIRED OF + AN ELDERLY MAN I PRESUME SAILD HOLMES + QUOTE ABOUT SIXTY BUT HIS CONSTITUTION HAS BEEN SHATTERED BY HIS LIFE ABROAD AND HE HAS BEEN IN FAILING HEALTH FOR SOME TIME + THIS BUSINESS HAS HAD A VERY BAD EFFECT UPON HIM + HE WAS AN OLD FRIEND OF MCCARTHY'S AND I MAY ADD A GREAT BENEFACTOR TO HIM FOR I HAVE LEARNED THAT HE GAVE HIM HATHERLEY FARM RENT FREE + INDEED + THAT IS INTERESTING SAID HOLMES + OH YES + IN A HUNDRED OTHER WAYS HE HAS HELPED HIM + EVERYBODY ABOUT HERE SPEAKS OF HIS KINDNESS TO HIM + QUOTE REALLY + DOES IT NOT STRIKE YOU AS A LITTLE SINGULAR THAT THIS MCCARTHY WHO APPEARS TO HAVE HAD LITTLE OF HIS OWN AND TO HAVE BEEN UNDER SUCH OBLIGATIONS TO TURNER SHOULD STILL TALK OF MARRYING HIS SON TO TURNER'S DAUGHTER WHO IS PRESUMABLY HEIRESS TO THE ESTATE AND THAT IN SUCH A VERY COCKSURE MANNER AS IF IT WERE MERELY A CASE OF A PROPOSAL AND ALL ELSE WOULD FOLLOW + IT IS THE MORE STRANGE SINCE WE KNOW THAT TURNER HIMSELF WAS AVERSE TO THE IDEA + THE DAUGHTER TOLD US AS MUCH + DO YOU NOT DEDUCE SOMETHING FROM THAT + WE HAVE GOT TO THE DEDUCTIONS AND THE INFERENCES SAID LESTRADE WINKING AT ME + I FIND IT HARD ENOUGH TO TACKLE FACTS HOLMES WITHOUT FLYING AWAY AFTER THEORIES AND FANCIES + YOU ARE RIGHT SAID HOLMES DEMURELY YOU DO FIND IT VERY HARD TO TACKLE THE FACTS + ANYHOW I HAVE GRASPED ONE FACT WHICH YOU SEEM TO FIND IT DIFFICULT TO GET HOLD OF REPLIED LESBIADE WITH SOME WARMTH + QUOTE THAT MCCARTHY SENIOR MET HIS DEATH FROM MCCARTHY JUNIOR AND THAT ALL THEORIES TO THE CONTRARY ARE THE MEREST MOONSHINE QUOTE + WELL MOONSHINE IS A BRIGHTER THING THAN FOG SAID HOLMES LAUGHING + BUT I AM VERY MUCH MISTAKEN IF THIS IS NOT HATHERLEY FARM UPON THE LEFT + YES THAT IS IT + IT WAS A WIDESPREAD COMFORTABLE LOOKING BUILDING TWO STORIED SLATE ROOFED WITH GREAT YELLOW BLOTCHES OF LICHEN UPON THE GRAY WALLS + THE DRAWN BLINDS AND THE SMOKELESS CHIMNEYS HOWEVER GAVE IT A STRICKEN LOOK AS THOUGH THE WEIGHT OF THIS HORROR STILL LAY HEAVY UPON IT + WE CALLED AT THE DOOR WHEN THE MAID AT HOLMES'S REQUEST SHOWED US THE BOOTS WHICH HER MASTER WORE AT THE TIME OF HIS DEATH AND ALSO A PAIR OF THE SON'S THOUGH NOT THE PAIR WHICH HE HAD THEN HAD + HAVING MEASURED THESE VERY CAREFULLY FROM SEVEN OR EIGHT DIFFERENT POINTS HOLMES DESIRED TO BE LED TO THE COURT YARD FROM WHICH WE ALL FOLLOWED THE WINDING TRACK WHICH LED TO BOSCOMBE POOL + SHERLOCK HOLMES WAS TRANSFORMED WHEN HE WAS HOT UPON SUCH A SCENT AS THIS + MEN WHO HAD ONLY KNOWN THE QUIET THINKER AND LOGICIAN OF BAKER STREET WOULD HAVE FAILED TO RECOGNIZE HIM + HIS FACE FLUSHED AND DARKENED + HIS BROWS WERE DRAWN INTO TWO HARD BLACK LINES WHILE HIS EYES SHONE OUT FROM BENEATH THEM WITH A STEELY GLITTER + HIS FACE WAS BENT DOWNWARD HIS SHOULDERS BOWED HIS LIPS COMPRESSED AND THE VEINS STOOD OUT LIKE WHIPCORD IN HIS LONG SINEWY NECK + HIS NOSTRILS SEEMED TO DILATE WITH A PURELY ANIMAL LUST FOR THE CHASE AND HIS MIND WAS SO ABSOLUTELY CONCENTRATED UPON THE MATTER BEFORE HIM THAT A QUESTION OR REMARK FELL UNHEEDED UPON HIS EARS OR AT THE MOST ONLY PROVOKED A QUICK IMPATIENT SNARL IN REPLY + SWIFTLY AND SILENTLY HE MADE HIS WAY ALONG THE TRACK WHICH RAN THROUGH THE MEADOWS AND SO BY WAY OF THE WOODS TO THE BOSCOMBE POOL + IT WAS DAMP MARSHY GROUND AS IS ALL THAT DISTRICT AND THERE WERE MARKS OF MANY FEET BOTH UPON THE PATH AND AMID THE SHORT GRASS WHICH BOUNDED IT ON EITHER SIDE + SOMETIMES HOLMES WOULD HURRY ON SOMETIMES STOP DEAD AND ONCE HE MADE QUITE A LITTLE DETOUR INTO THE MEADOW + LESTRADE AND I WALKED BEHIND HIM THE DETECTIVE INDIFFERENT AND CONTEMPTUOUS WHILE I WATCHED MY FRIEND WITH THE INTEREST WHICH SPRANG FROM THE CONVICTION THAT EVERY ONE OF HIS ACTIONS WAS DIRECTED TOWARDS A DEFINITE END + THE BOSCOMBE POOL WHICH IS A LITTLE REED GIRT SHEET OF WATER SOME FIFTY YARDS ACROSS IS SITUATED AT THE BOUNDARY BETWEEN THE HATHERLEY FARM AND THE PRIVATE PARK OF THE WEALTHY MR. TURNER + ABOVE THE WOODS WHICH LINED IT UPON THE FARTHER SIDE WE COULD SEE THE RED JUTTING PINNACLES WHICH MARKED THE SITE OF THE RICH LANDOWNER'S DWELLING + ON THE HATHERLEY SIDE OF THE POOL THE WOODS GREW VERY THICK AND THERE WAS A NARROW BELT OF SODDEN GRASS TWENTY PACES ACROSS BETWEEN THE EDGE OF THE TREES LAND THE REEDS WHICH LINED THE LAKE + LESTRADE SHOWED US THE EXACT SPOT AT WHICH THE BODY HAD BEEN FOUND AND INDEED SO MOIST WAS THE GROUND THAT I COULD PLAINLY SEE THE TRACES WHICH HAD BEEN LEFT BY THE FALL OF THE STRICKEN MAN + TO HOLMES AS I COULD SEE BY HIS EAGER FACE AND PEERING EYES VERY MANY OTHER THINGS WERE TO BE READ UPON THE TRAMPLED GRASS + HE RAN ROUND LIKE A DOG WHO IS PICKING UP A SCENT AND THEN TURNED UPON MY COMPANION + WHAT DID YOU GO INTO THE POOL FOR HE ASKED + I FISHED ABOUT WITH A RAKE + I THOUGHT THERE MIGHT BE SOME WEAPON OR OTHER TRACE + BUT HOW ON EARTH QUOTE + OH TUT TUT + I HAVE NO TIME + THAT LEFT FOOT OF YOURS WITH ITS INWARD TWIST IS ALL OVER THE PLACE + A MOLE COULD TRACE IT AND THERE IT VANISHES AMONG THE REEDS + OH HOW SIMPLE IT WOULD ALL HAVE BEEN HAD I BEEN HERE BEFORE THEY CAME LIKE A HERD OF BUFFALO AND WALLOWED ALL OVER IT + HERE IS WHERE THE PARTY WITH THE LODGE KEEPER CAME AND THEY HAVE COVERED ALL TRACKS FOR SIX OR EIGHT FEET ROUND THE BODY + BUT HERE ARE THREE SEPARATE TRACKS OF THE SAME FEET + HE DREW OUT A LENS AND LAY DOWN UPON HIS WATERPROOF TO HAVE A BETTER VIEW TALKING ALL THE TIME RATHER TO HIMSELF THAN TO US + THESE ARE YOUNG MCCARTHY'S FEET + TWICE HE WAS WALKING AND ONCE HE RAN SWIFTLY SO THAT THE SOLES ARE DEEPLY MARKED AND THE HEELS HARDLY VISIBLE + THAT BEARS OUT HIS STORY + HE RAN WHEN HE SAW HIS FATHER ON THE GROUND + THEN HERE ARE THE FATHER'S FEET AS HE PACED UP AND DOWN + WHAT IS THIS THEN + IT IS THE BUTT END OF THE GUN AS THE SON STOOD LISTENING + AND THIS + HA HA + WHAT HAVE WE HERE + TIPTOES TIPTOES + SQUARE TOO QUITE UNUSUAL BOOTS + THEY COME THEY GO THEY COME AGAIN OF COURSE THAT WAS FOR THE CLOAK + NOW WHERE DID THEY COME FROM + HE RAN UP AND DOWN SOMETIMES LOSING SOMETIMES FINDING THE TRACK UNTIL WE WERE WELL WITHIN THE EDGE OF THE WOOD AND UNDER THE SHADOW OF A GREAT BEECH THE LARGEST TREE IN THE NEIGHBOURHOOD + HOLMES TRACED HIS WAY TO THE FARTHER SIDE OF THIS AND LAY DOWN ONCE MORE UPON HIS FACE WITH A LITTLE CRY OF SATISFACTION + FOR A LONG TIME HE REMAINED THERE TURNING OVER THE LEAVES AND DRIED STICKS GATHERING UP WHAT SEEMED TO ME TO BE DUST INTO AN ENVELOPE AND EXAMINING WITH HIS LENS NOT ONLY THE GROUND BUT EVEN THE BARK OF THE TREE AS FAR AS HE COULD REACH + A JAGGED STONE WAS LYING AMONG THE MOSS AND THIS ALSO HE CAREFULLY EXAMINED AND RETAINED + THEN HE FOLLOWED A PATHWAY THROUGH THE WOOD UNTIL HE CAME TO THE HIGHROAD WHERE ALL TRACES WERE LOST + IT HAS BEEN A CASE OF CONSIDERABLE INTEREST HE REMARKED RETURNING TO HIS NATURAL MANNER + QUOTE I FANCY THAT THIS GRAY HOUSE ON THE RIGHT MUST BE THE LODGE + I THINK THAT I WILL GO IN AND HAVE A WORD WITH MORAN AND PERHAPS WRITE A LITTLE NOTE + HAVING DONE THAT WE MAY DRIVE BACK TO OUR LUNCHEBN + YOU MAY WALK TO THE CAB AND I SHALL BE WITH YOU PRESENTLY + IT WAS ABOUT TEN MINUTES BEFORE WE REGAINED OUR CAB AND DROVE BACK INTO ROSS HOLMES STILL CARRYING WITH HIM THE STONE WHICH HE HAD PICKED UP IN THE WOOD + THIS MAY INTEREST YOU LESTRADE HE REMARKED HOLDING IT OUT + THE MURDER WAS DONE WITH IT + I SEE NO MARKS + THERE ARE NONE + QUOTE HOW DO YOU KNOW THEN QUOTE + THE GRASS WAS GROWING UNDER IT + IT HAD ONLY LAIN THERE A FEW DAYS + THERE WAS NO SIGN OF A PLACE WHENCE IT HAD BEEN TAKEN + IT CORRESPONDS WITH THE INJURIES + THERE IS NO SIGN OF ANY OTHER WEAPON + AND THE MURDERER + IS A TALL MAN LEFT HANDED LIMPS WITH THE RIGHT LEG WEARS THICK SOLED SHOOTING BOOTS AND A GRAY CLOAK SMOKES INDIAN CIGARS USES A CIGAR HOLDER AND CARRIES A BLUNT PEN KNIFE IN HIS POCKET + THERE ARE SEVERAL OTHER INDICATIONS BUT THESE MAY BE ENOUGH TO AID US IN OUR SEARCH + LESTRADE LAUGHED + QUOTE I AM AFRAID THAT I AM STILL A SCEPTIC QUOTE HE SAID + THEORIES ARE ALL VERY WELL BUT WE HAVE TO DEAL WITH A HARD HEADED BRITISH JURY + NOUS VERRONS ANSWERED HOLMES CALMLY + YOU WORK YOUR OWN METHOD AND I SHALL WORK MINE + I SHALL BE BUSY THIS AFTERNOON AND SHALL PROBABLY RETURN TO LONDON BY THE EVENING TRAIN + AND LEAVE YOUR CASE UNFINISHED + QUOTE NO FINISHED QUOTE + BUT THE MYSTERY + IT IS SOLVED + WHO WAS THE CRIMINAL THEN + THE GENTLEMAN I DESCRIBE + BUT WHO IS HE + QUOTE SURELY IT WOULD NOT BE DIFFICULT TO FIND OUT + THIS IS NOT SUCH A POPULOUS NEIGHBOURHOOD + LESTRADE SHRUGGED HIS SHOULDERS + I AM A PRACTICAL MAN HE SAID AND I REALLY CANNOT UNDERTAKE TO GO ABOUT THE COUNTRY LOOKING FOR A LEFT HANDED GENTLEMAN WITH A GAME LEG + I SHOULD BECOME THE LAUGHING STOCK OF SCOTLAND YARD + ALL RIGHT SAID HOLMES QUIETLY + I HAVE GIVEN YOU THE CHANCE + HERE ARE YOUR LODGINGS + GOOD BYE + I SHALL DROP YOU A LINE BEFORE I LEAVE QUOTE + HAVING LEFT LESTRADE AT HIS ROOMS WE DROVE TO OUR HOTEL WHERE WE FOUND LUNCH UPON THE TABLE + HOLMES WAS SILENT AND BURIED IN THOUGHT WITH A PAINED EXPRESSION UPON HIS FACE AS ONE WHO FINDS HIMSELF IN A PERPLEXING POSITION + LOOK HERE WATSON HE SAID WHEN THE CLOTH WAS CLEARED JUST SIT DOWN IN THIS CHAIR AND LET ME PREACH TO YOU FOR A LITTLE DON'T KNOW QUITE WHAT TO DO AND I SHOULD VALUE YOUR ADVICE + LIGHT A CIGAR AND LET ME EXPOUND + PRAY DO SO + WELL NOW IN CONSIDERING THIS CASE THERE ARE TWO POINTS ABOUT YOUNG MCCARTHY'S NARRATIVE WHICH STRUCK US BOTH INSTANTLY ALTHOUGH THEY IMPRESSED ME IN HIS FAVOUR AND YOU AGAINST HIM + ONE WAS THE FACT THAT HIS FATHER SHOULD ACCORDING TO HIS ACCOUNT CRY COOEE BEFORE SEEING HIM + THE OTHER WAS HIS SINGULAR DYING REFERENCE TO A RAT + HE MUMBLED SEVERAL WORDS YOU UNDERSTAND BUT THAT WAS ALL THAT CAUGHT THE SON'S EAR + NOW FROM THIS DOUBLE POINT OUR RESEARCH MUST COMMENCE AND WE WILL BEGIN IT BY PRESUMING THAT WHAT THE LAD SAYS IS ABSOLUTELY TRUE + QUOTE WHAT OF THIS COOEE THEN QUOTE + WELL OBVIOUSLY IT COULD NOT HAVE BEEN MEANT FOR THE SON + THE SON AS FAR AS HE KNEW WAS IN BRISTOL + IT WAS MERE CHANCE THAT HE WAS WITHIN EARSHOT + THE COOEE WAS MEANT TO ATTRACT THE ATTENTION OF WHOEVER IT WAS THAT HE HAD THE APPOINTMENT WITH + BUT COOEE IS A DISTINCTLY AUSTRALIAN CRY AND ONE WHICH IS USED BETWEEN AUSTRALIANS + THERE IS A STRONG PRESUMPTION THAT THE PERSON WHOM MCCARTHY EXPECTED TO MEET HIM AT BOSCOMBE POOL WAS SOMEONE WHO HAD BEEN IN AUSTRALIA + WHAT OF THE RAT THEN + SHERLOCK HOLMES TOOK A FOLDED PAPER FROM HIS POCKET AND FLATTENED IT OUT ON THE TABLE + THIS IS A MAP OF THE COLONY OF VICTORIA HE SAID + I WIRED TO BRISTOL FOR IT LAST NIGHT + HE PUT HIS HAND OVER PART OF THE MAP + QUOTE WHAT DO YOU READ QUOTE + ARAT I READ + AND NOW + HE RAISED HIS HAND + BALLARAT + QUITE SO + THAT WAS THE WORD THE MAN UTTERED AND OF WHICH HIS SON ONLY CAUGHT THE LAST TWO SYLLABLES + HE WAS TRYING TO UTTER THE NAME OF HIS MURDERER + SO AND SO OF BALLARAT + QUOTE IT IS WONDERFUL QUOTE + I EXCLAIMED + IT IS OBVIOUS + AND NOW YOU SEE I HAD NARROWED THE FIELD DOWN CONSIDERABLY + THE POSSESSION OF A GRAY GARMENT WAS A THIRD POINT WHICH GRANTING THE SON'S STATEMENT TO BE CORRECT WAS A CERTAINTY + WE HAVE COME NOW OUT OF MERE VAGUENESS TO THE DEFINITE CONCEPTION OF AN AUSTRALIAN FROM BALLARAT WITH A GRAY CLOAK + CERTAINLY + AND ONE WHO WAS AT HOME IN THE DISTRICT FOR THE POOL CAN ONLY BE APPROACHED BY THE FARM OR BY THE ESTATE WHERE STRANGERS COULD HARDLY WANDER + QUITE SO + QUOTE THEN COMES OUR EXPEDITION OF TO DAY + BY AN EXAMINATION OF THE GROUND I GAINED THE TRIFLING DETAILS WHICH I GAVE TO THAT IMBECILE LESTRADE AS TO THE PERSONALITY OF THE CRIMINAL + BUT HOW DID YOU GAIN THEM + YOU KNOW MY METHOD + IT IS FOUNDED UPON THE OBSERVATION OF TRIFLES + HIS HEIGHT I KNOW THAT YOU MIGHT ROUGHLY JUDGE FROM THE LENGTH OF HIS STRIDE + HIS BOOTS TOO MIGHT BE TOLD FROM THEIR TRACES QUOTE + YES THEY WERE PECULIAR BOOTS + BUT HIS LAMENESS + THE IMPRESSION OF HIS RIGHT FOOT WAS ALWAYS LESS DISTINCT THAN HIS LEFT + HE PUT LESS WEIGHT UPON IT + WHY + BECAUSE HE LIMPED HE WAS LAME + BUT HIS LEFT HANDEDNESS + QUOTE YOU WERE YOURSELF STRUCK BY THE NATURE OF THE INJURY AS RECORDED BY THE SURGEON AT THE INQUEST + THE BLOW WAS STRUCK FROM IMMEDIATELY BEHIND AND YET WAS UPON THE LEFT SIDE + NOW HOW CAN THAT BE UNLESS IT WERE BY A LEFT HANDED MAN + HE HAD STOOD BEHIND THAT TREE DURING THE INTERVIEW BETWEEN THE FATHER AND SON + HE HAD EVEN SMOKED THERE + I FOUND THE ASH OF A CIGAR WHICH MY SPECIAL KNOWLEDGE OF TOBACCO ASHES ENABLES ME TO PRONOUNCE AS AN INDIAN CIGAR + I HAVE AS YOU KNOW DEVOTED SOME ATTENTION TO THIS AND WRITTEN A LITTLE MONOGRAPH ON THE ASHES OF ONE HUNDRED FORTY DIFFERENT VARIETIES OF PIPE CIGAR AND CIGARETTE TOBACCO + HAVING FOUND THE ASH I THEN LOOKED ROUND AND DISCOVERED THE STUMP AMONG THE MOSS WHERE HE HAD TOSSED IT + IT WAS AN INDIAN CIGAR OF THE VARIETY WHICH ARE ROLLED IN ROTTERDAM + AND THE CIGAR HOLDER + I COULD SEE THAT THE END HAD NOT BEEN IN HIS MOUTH + THEREFORE HE USED A HOLDER + THE TIP HAD BEEN CUT OFF NOT BITTEN OFF BUT THE CUT WAS NOT A CLEAN ONE SO I DEDUCED A BLUNT PEN KNIFE + HOLMES I SAID YOU HAVE DRAWN A NET ROUND THIS MAN FROM WHICH HE CANNOT ESCAPE AND YOU HAVE SAVED AN INNOCENT HUMAN LIFE AS TRULY AS IF YOU HAD CUT THE CORD WHICH WAS HANGING HIM + I SEE THE DIRECTION IN WHICH ALL THIS POINTS + THE CULPRIT IS QUOTE + MR. JOHN TURNER CRIED THE HOTEL WAITER OPENING THE DOOR OF OUR SITTING ROOM AND USHERING IN A VISITOR + THE MAN WHO ENTERED WAS A STRANGE AND IMPRESSIVE FIGURE + HIS SLOW LIMPING STEP AND BOWED SHOULDERS GAVE THE APPEARANCE OF DECREPITUDE AND YET HIS HARD DEEP LINED CRAGGY FEATURES AND HIS ENORMOUS LIMBS SHOWED THAT HE WAS POSSESSED OF UNUSUAL STRENGTH OF BODY AND OF CHARACTER + HIS TANGLED BEARD GRIZZLED HAIR AND OUTSTANDING DROOPING EYEBROWS COMBINED TO GIVE AN AIR OF DIGNITY AND POWER TO HIS APPEARANCE BUT HIS FACE WAS OF AN ASHEN WHITE WHILE HIS LIPS AND THE CORNERS OF HIS NOSTRILS WERE TINGED WITH A SHADE OF BLUE + IT WAS CLEAR TO ME AT A GLANCE THAT HE WAS IN THE GRIP OF SOME DEADLY AND CHRONIC DISEASE + PRAY SIT DOWN ON THE SOFA SAID HOLMES GENTLY + YOU HAD MY NOTE + YES THE LODGE KEEPER BROUGHT IT UP + YOU SAID THAT YOU WISHED TO SEE ME HERE TO AVOID SCANDAL + QUOTE I THOUGHT PEOPLE WOULD TALK IF I WENT TO THE HALL QUOTE + AND WHY DID YOU WISH TO SEE ME + HE LOOKED ACROSS AT MY COMPANION WITH DESPAIR IN HIS WEARY EYES AS THOUGH HIS QUESTION WAS ALREADY ANSWERED + YES SAID HOLMES ANSWERING THE LOOK RATHER THAN THE WORDS + IT IS SO + I KNOW ALL ABOUT MCCARTHY + THE OLD MAN SANK HIS FACE IN HIS HANDS + GOD HELP ME HE CRIED + QUOTE BUT I WOULD NOT HAVE LET THE YOUNG MAN COME TO HARM + I GIVE YOU MY WORD THAT I WOULD HAVE SPOKEN OUT IF IT WENT AGAINST HIM AT THE ASSIZES + I AM GLAD TO HEAR YOU SAY SO SAID HOLMES GRAVELY + I WOULD HAVE SPOKEN NOW HAD IT NOT BEEN FOR MY DEAR GIRL + IT WOULD BREAK HER HEART IT WILL BREAK HER HEART WHEN SHE HEARS THAT I AM ARRESTED + IT MAY NOT COME TO THAT SAID HOLMES + QUOTE WHAT QUOTE + I AM NO OFFICIAL AGENT + I UNDERSTAND THAT IT WAS YOUR DAUGHTER WHO REQUIRED MY PRESENCE HERE AND I AM ACTING IN HER INTERESTS + YOUNG MCCARTHY MUST BE GOT OFF HOWEVER + I AM A DYING MAN SAID OLD TURNER + I HAVE HAD DIABETES FOR YEARS + MY DOCTOR SAYS IT IS A QUESTION WHETHER I SHALL LIVE A MONTH + YET I WOULD RATHER DIE UNDER MY OWN ROOF THAN IN A JAIL + HOLMES ROSE AND SAT DOWN AT THE TABLE WITH HIS PEN IN HIS HAND AND A BUNDLE OF PAPER BEFORE HIM. QUOTE LUST TELL US THE TRUTH QUOTE HE SAID + I SHALL JOT DOWN THE FACTS + YOU WILL SIGN IT AND WATSON HERE CAN WITNESS IT + THEN I COULD PRODUCE YOUR CONFESSION AT THE LAST EXTREMITY TO SAVE YOUNG MCCARTHY + I PROMISE YOU THAT I SHALL NOT USE IT UNLESS IT IS ABSOLUTELY NEEDED + IT'S AS WELL SAID THE OLD MAN IT'S A QUESTION WHETHER I SHALL LIVE TO THE ASSIZES SO IT MATTERS LITTLE TO ME BUT I SHOULD WISH TO SPARE ALICE THE SHOCK + AND NOW I WILL MAKE THE THING CLEAR TO YOU IT HAS BEEN A LONG TIME IN THE ACTING BUT WILL NOT TAKE ME LONG TO TELL + YOU DIDN'T KNOW THIS DEAD MAN MCCARTHY + HE WAS A DEVIL INCARNATE + I TELL YOU THAT + GOD KEEP YOU OUT OF THE CLUTCHES OF SUCH A MAN AS HE + HIS GRIP HAS BEEN UPON ME THESE TWENTY YEARS AND HE HAS BLASTED MY LIFE + I'LL TELL YOU FIRST HOW I CAME TO BE IN HIS POWER + IT WAS IN THE EARLY SIXTY'S AT THE DIGGINGS + I WAS A YOUNG CHAP THEN HOT BLOODED AND RECKLESS READY TO TURN MY HAND AT ANYTHING I GOT AMONG BAD COMPANIONS TOOK TO DRINK HAD NO LUCK WITH MY CLAIM TOOK TO THE BUSH AND IN A WORD BECAME WHAT YOU WOULD CALL OVER HERE A HIGHWAY ROBBER + THERE WERE SIX OF US AND WE HAD A WILD FREE LIFE OF IT STICKING UP A STATION FROM TIME TO TIME OR STOPPING THE WAGONS ON THE ROAD TO THE DIGGINGS + BLACK JACK OF BALLARAT WAS THE NAME I WENT UNDER AND OUR PARTY IS STILL REMEMBERED IN THE COLONY AS THE BALLARAT GANG + QUOTE ONE DAY A GOLD CONVOY CAME DOWN FROM BALLARAT TO MELBOURNE AND WE LAY IN WAIT FOR IT AND ATTACKED IT + THERE WERE SIX TROOPERS AND SIX OF US SO IT WAS A CLOSE THING BUT WE EMPTIED FOUR OF THEIR SADDLES AT THE FIRST VOLLEY + THREE OF OUR BOYS WERE KILLED HOWEVER BEFORE WE GOT THE SWAG + I PUT MY PISTOL TO THE HEAD OF THE WAGON DRIVER WHO WAS THIS VERY MAN MCCARTHY + I WISH TO THE LORD THAT I HAD SHOT HIM THEN BUT I SPARED HIM THOUGH I SAW HIS WICKED LITTLE EYES FIXED ON MY FACE AS THOUGH TO REMEMBER EVERY FEATURE + WE GOT AWAY WITH THE GOLD BECAME WEALTHY MEN AND MADE OUR WAY OVER TO ENGLAND WITHOUT BEING SUSPECTED + THERE I PARTED FROM MY OLD PALS AND DETERMINED TO SETTLE DOWN TO A QUIET AND RESPECTABLE LIFE + I BOUGHT THIS ESTATE WHICH CHANCED TO BE IN THE MARKET AND I SET MYSELF TO DO A LITTLE GOOD WITH MY MONEY TO MAKE UP FOR THE WAY IN WHICH I HAD EARNED IT + I MARRIED TOO AND THOUGH MY WIFE DIED YOUNG SHE LEFT ME MY DEAR LITTLE ALICE + EVEN WHEN SHE WAS JUST A BABY HER WEE HAND SEEMED TO LEAD ME DOWN THE RIGHT PATH AS NOTHING ELSE HAD EVER DONE + IN A WORD I TURNED OVER A NEW LEAF AND DID MY BEST TO MAKE UP FOR THE PAST + ALL WAS GOING WELL WHEN MCCARTHY LAID HLS GRIP UPON ME + I HAD GONE UP TO TOWN ABOUT AN INVESTMENT AND I MET HIM IN REGENT STREET WITH HARDLY A COAT TO HIS BACK OR A BOOT TO HIS FOOT + HERE WE ARE JACK SAYS HE TOUCHING ME ON THE ARM WE'LL BE AS GOOD AS A FAMILY TO YOU + THERE'S TWO OF US ME AND MY SON AND YOU CAN HAVE THE KEEPING OF US + IF YOU DON'T IT'S A FINE LAW ABIDING COUNTRY IS ENGLAND AND THERE'S ALWAYS A POLICEMAN WITHIN HAIL + WELL DOWN THEY CAME TO THE WEST COUNTRY THERE WAS NO SHAKING THEM OFF AND THERE THEY HAVE LIVED RENT FREE ON MY BEST LAND EVER SINCE + THERE WAS NO REST FOR ME NO PEACE NO FORGETFULNESS TURN WHERE I WOULD THERE WAS HIS CUNNING GRINNING FACE AT MY ELBOW + IT GREW WORSE AS ALICE GREW UP FOR HE SOON SAW I WAS MORE AFRAID OF HER KNOWING MY PAST THAN OF THE POLICE + WHATEVER HE WANTED HE MUST HAVE AND WHATEVER IT WAS I GAVE HIM WITHOUT QUESTION LAND MONEY HOUSES UNTIL AT LAST HE ASKED A THING WHICH I COULD NOT GIVE + HE ASKED FOR ALICE + HIS SON YOU SEE HAD GROWN UP AND SO HAD MY GIRL AND AS I WAS KNOWN TO BE IN WEAK HEALTH IT SEEMED A FINE STROKE TO HIM THAT HIS LAD SHOULD STEP INTO THE WHOLE PROPERTY + BUT THERE I WAS FIRM + I WOULD NOT HAVE HIS CURSED STOCK MIXED WITH MINE NOT THAT I HAD ANY DISLIKE TO THE LAD BUT HIS BLOOD WAS IN HIM AND THAT WAS ENOUGH + I STOOD FIRM + MCCARTHY THREATENED + I BRAVED HIM TO DO HIS WORST + WE WERE TO MEET AT THE POOL MIDWAY BETWEEN OUR HOUSES TO TALK IT OVER + WHEN WE WENT DOWN THERE I FOUND HIM TALKING WITH HIS SON SO SMOKED A CIGAR AND WAITED BEHIND A TREE UNTIL HE SHOULD BE ALONE + BUT AS I LISTENED TO HIS TALK ALL THAT WAS BLACK AND BITTER IN ME SEEMED TO COME UPPERMOST + HE WAS URGING HIS SON TO MARRY MY DAUGHTER WITH AS LITTLE REGARD FOR WHAT SHE MIGHT THINK AS IF SHE WERE A SLUT FROM OFF THE STREETS + IT DROVE ME MAD TO THINK THAT I AND ALL THAT I HELD MOST DEAR SHOULD BE IN THE POWER OF SUCH A MAN AS THIS + COULD I NOT SNAP THE BOND + I WAS ALREADY A DYING AND A DESPERATE MAN + THOUGH CLEAR OF MIND AND FAIRLY STRONG OF LIMB I KNEW THAT MY OWN FATE WAS SEALED + BUT MY MEMORY AND MY GIRL + BOTH COULD BE SAVED IF I COULD BUT SILENCE THAT FOUL TONGUE + I DID IT MR. HOLMES + I WOULD DO IT AGAIN + DEEPLY AS I HAVE SINNED I HAVE LED A LIFE OF MARTYRDOM TO ATONE FOR IT + BUT THAT MY GIRL SHOULD BE ENTANGLED IN THE SAME MESHES WHICH HELD ME WAS MORE THAN I COULD SUFFER + I STRUCK HIM DOWN WITH NO MORE COMPUNCTION THAN IF HE HAD BEEN SOME FOUL AND VENOMOUS BEAST + HIS CRY BROUGHT BACK HIS SON BUT I HAD GAINED THE COVER OF THE WOOD THOUGH I WAS FORCED TO GO BACK TO FETCH THE CLOAK WHICH I HAD DROPPED IN MY FLIGHT + THAT IS THE TRUE STORY GENTLEMEN OF ALL THAT OCCURRED QUOTE + WELL IT IS NOT FOR ME TO JUDGE YOU SAID HOLMES AS THE OLD MAN SIGNED THE STATEMENT WHICH HAD BEEN DRAWN OUT + I PRAY THAT WE MAY NEVER BE EXPOSED TO SUCH A TEMPTATION + I PRAY NOT SIR + AND WHAT DO YOU INTEND TO DO + IN VIEW OF YOUR HEALTH NOTHING + YOU ARE YOURSELF AWARE THAT YOU WILL SOON HAVE TO ANSWER FOR YOUR DEED AT A HIGHER COURT THAN THE ASSIZES + I WILL KEEP YOUR CONFESSION AND IF MCCARTHY IS CONDEMNED I SHALL BE FORCED TO USE IT + IF NOT IT SHALL NEVER BE SEEN BY MORTAL EYE AND YOUR SECRET WHETHER YOU BE ALIVE OR DEAD SHALL BE SAFE WITH US QUOTE + FAREWELL THEN SAID THE OLD MAN SOLEMNLY + YOUR OWN DEATHBEDS WHEN THEY COME WILL BE THE EASIER FOR THE THOUGHT OF THE PEACE WHICH YOU HAVE GIVEN TO MINE + TOTTERING AND SHAKING IN ALL HIS GIANT FRAME HE STUMBLED SLOWLY FROM THE ROOM + GOD HELP US SAID HOLMES AFTER A LONG SILENCE + WHY DOES FATE PLAY SUCH TRICKS WITH POOR HELPLESS WORMS + I NEVER HEAR OF SUCH A CASE AS THIS THAT I DO NOT THINK OF BAXTER'S WORDS AND SAY THERE BUT FOR THE GRACE OF GOD GOES SHERLOCK HOLMES + JAMES MCCARTHY WAS ACQUITTED AT THE ASSIZES ON THE STRENGTH OF A NUMBER OF OBJECTIONS WHICH HAD BEEN DRAWN OUT BY HOLMES AND SUBMITTED TO THE DEFENDING COUNSEL + OLD TURNER LIVED FOR SEVEN MONTHS AFTER OUR INTERVIEW BUT HE IS NOW DEAD AND THERE IS EVERY PROSPECT THAT THE SON AND DAUGHTER MAY COME TO LIVE HAPPILY TOGETHER IN IGNORANCE OF THE BLACK CLOUD WHICH RESTS UPON THEIR PAST diff --git a/samples/LMTutorial/train/bruce-partington_plans.txt b/samples/LMTutorial/train/bruce-partington_plans.txt new file mode 100755 index 0000000..942fb5f --- /dev/null +++ b/samples/LMTutorial/train/bruce-partington_plans.txt @@ -0,0 +1,900 @@ + IN THE THIRD WEEK OF NOVEMBER IN THE YEAR ONE THOUSAND EIGHT HUNDRED NINETY FIVE A DENSE YELLOW FOG SETTLED DOWN UPON LONDON + FROM THE MONDAY TO THE THURSDAY I DOUBT WHETHER IT WAS EVER POSSIBLE FROM OUR WINDOWS IN BAKER STREET TO SEE THE LOOM OF THE OPPOSITE HOUSES + THE FIRST DAY HOLMES HAD SPENT IN CROSS INDEXING HIS HUGE BOOK OF REFERENCES + THE SECOND AND THIRD HAD BEEN PATIENTLY OCCUPIED UPON A SUBJECT WHICH HE HAD RECENTLY MADE HIS HOBBY THE MUSIC OF THE MIDDLE AGES + BUT WHEN FOR THE FOURTH TIME AFTER PUSHING BACK OUR CHAIRS FROM BREAKFAST WE SAW THE GREASY HEAVY BROWN SWIRL STILL DRIFTING PAST US AND CONDENSING IN OILY DROPS UPON THE WINDOWPANES MY COMRADE'S IMPATIENT AND ACTIVE NATURE COULD ENDURE THIS DRAB EXISTENCE NO LONGER + HE PACED RESTLESSLY ABOUT OUR SITTING ROOM IN A FEVER OF SUPPRESSED ENERGY BITING HIS NAILS TAPPING THE FURNITURE AND CHAFING AGAINST INACTION + QUOTE NOTHING OF INTEREST IN THE PAPER WATSON QUOTE HE SAID + I WAS AWARE THAT BY ANYTHING OF INTEREST HOLMES MEANT ANYTHING OF CRIMINAL INTEREST + THERE WAS THE NEWS OF A REVOLUTION OF A POSSIBLE WAR AND OF AN IMPENDING CHANGE OF GOVERNMENT BUT THESE DID NOT COME WITHIN THE HORIZON OF MY COMPANION + I COULD SEE NOTHING RECORDED IN THE SHAPE OF CRIME WHICH WAS NOT COMMONPLACE AND FUTILE + HOLMES GROANED AND RESUMED HIS RESTLESS MEANDERINGS + THE LONDON CRIMINAL IS CERTAINLY A DULL FELLOW SAID HE IN THE QUERULOUS VOICE OF THE SPORTSMAN WHOSE GAME HAS FAILED HIM + LOOK OUT OF THIS WINDOW WATSON + SEE HOW THE FIGURES LOOM UP ARE DIMLY SEEN AND THEN BLEND ONCE MORE INTO THE CLOUDBANK + THE THIEF OR THE MURDERER COULD ROAM LONDON ON SUCH A DAY AS THE TIGER DOES THE JUNGLE UNSEEN UNTIL HE POUNCES AND THEN EVIDENT ONLY TO HIS VICTIM + THERE HAVE SAID I BEEN NUMEROUS PETTY THEFTS + HOLMES SNORTED HIS CONTEMPT + THIS GREAT AND SOMBRE STAGE IS SET FOR SOMETHING MORE WORTHY THAN THAT SAID HE + QUOTE IT IS FORTUNATE FOR THIS COMMUNITY THAT I AM NOT A CRIMINAL QUOTE + IT IS INDEED SAID I HEARTILY + SUPPOSE THAT I WERE BROOKS OR WOODHOUSE OR ANY OF THE FIFTY MEN WHO HAVE GOOD REASON FOR TAKING MY LIFE HOW LONG COULD I SURVIVE AGAINST MY OWN PURSUIT + A SUMMONS A BOGUS APPOINTMENT AND ALL WOULD BE OVER + IT IS WELL THEY DON'T HAVE DAYS OF FOG IN THE LATIN COUNTRIES THE COUNTRIES OF ASSASSINATION + BY JOVE HERE COMES SOMETHING AT LAST TO BREAK OUR DEAD MONOTONY + IT WAS THE MAID WITH A TELEGRAM + HOLMES TORE IT OPEN AND BURST OUT LAUGHING + WELL WELL + WHAT NEXT SAID HE + QUOTE BROTHER MYCROFT IS COMING ROUND QUOTE + WHY NOT + I ASKED + WHY NOT + IT IS AS IF YOU MET A TRAM CAR COMING DOWN A COUNTRY LANE + MYCROFT HAS HIS RAILS AND HE RUNS ON THEM + HIS PALL MALL LODGINGS THE DIOGENES CLUB WHITEHALL THAT IS HIS CYCLE + ONCE AND ONLY ONCE HE HAS BEEN HERE + WHAT UPHEAVAL CAN POSSIBLY HAVE DERAILED HIM + DOES HE NOT EXPLAIN + HOLMES HANDED ME HIS BROTHER'S TELEGRAM + MUST SEE YOU OVER CADOGAN WEST + COMING AT ONCE + MYCROFT + CADOGAN WEST + I HAVE HEARD THE NAME QUOTE + IT RECALLS NOTHING TO MY MIND + BUT THAT MYCROFT SHOULD BREAK OUT IN THIS ERRATIC FASHION + A PLANET MIGHT AS WELL LEAVE ITS ORBIT + BY THE WAY DO YOU KNOW WHAT MYCROFT IS + I HAD SOME VAGUE RECOLLECTION OF AN EXPLANATION AT THE TIME OF THE ADVENTURE OF THE GREEK INTERPRETER + YOU TOLD ME THAT HE HAD SOME SMALL OFFICE UNDER THE BRITISH GOVERNMENT + HOLMES CHUCKLED + I DID NOT KNOW YOU QUITE SO WELL IN THOSE DAYS + ONE HAS TO BE DISCREET WHEN ONE TALKS OF HIGH MATTERS OF STATE + YOU ARE RIGHT IN THINKING THAT HE IS UNDER THE BRITISH GOVERNMENT + YOU WOULD ALSO BE RIGHT IN A SENSE IF YOU SAID THAT OCCASIONALLY HE IS THE BRITISH GOVERNMENT + QUOTE MY DEAR HOLMES QUOTE + I THOUGHT I MIGHT SURPRISE YOU + MYCROFT DRAWS FOUR HUNDRED AND FIFTY POUNDS A YEAR REMAINS A SUBORDINATE HAS NO AMBITIONS OF ANY KIND WILL RECEIVE NEITHER HONOUR NOR TITLE BUT REMAINS THE MOST INDISPENSABLE MAN IN THE COUNTRY + BUT HOW + WELL HIS POSITION IS UNIQUE + HE HAS MADE IT FOR HIMSELF + THERE HAS NEVER BEEN ANYTHING LIKE IT BEFORE NOR WILL BE AGAIN + HE HAS THE TIDIEST AND MOST ORDERLY BRAIN WITH THE GREATEST CAPACITY FOR STORING FACTS OF ANY MAN LIVING + THE SAME GREAT POWERS WHICH I HAVE TURNED TO THE DETECTION OF CRIME HE HAS USED FOR THIS PARTICULAR BUSINESS + THE CONCLUSIONS OF EVERY DEPARTMENT ARE PASSED TO HIM AND HE IS THE CENTRAL EXCHANGE THE CLEARINGHOUSE WHICH MAKES OUT THE BALANCE + ALL OTHER MEN ARE SPECIALISTS BUT HIS SPECIALISM IS OMNISCIENCE + WE WILL SUPPOSE THAT A MINISTER NEEDS INFORMATION AS TO A POINT WHICH INVOLVES THE NAVY INDIA CANADA AND THE BIMETALLIC QUESTION HE COULD GET HIS SEPARATE ADVICES FROM VARIOUS DEPARTMENTS UPON EACH BUT ONLY MYCROFT CAN FOCUS THEM ALL AND SAY OFFHAND HOW EACH FACTOR WOULD AFFECT THE OTHER + THEY BEGAN BY USING HIM AS A SHORT CUT A CONVENIENCE NOW HE HAS MADE HIMSELF AN ESSENTIAL + IN THAT GREAT BRAIN OF HIS EVERYTHING IS PIGEON HOLED AND CAN BE HANDED OUT IN AN INSTANT + AGAIN AND AGAIN HIS WORD HAS DECIDED THE NATIONAL POLICY + HE LIVES IN IT + HE THINKS OF NOTHING ELSE SAVE WHEN AS AN INTELLECTUAL EXERCISE HE UNBENDS IF I CALL UPON HIM AND ASK HIM TO ADVISE ME ON ONE OF MY LITTLE PROBLEMS + BUT JUPITER IS DESCENDING TO DAY + WHAT ON EARTH CAN IT MEAN + WHO IS CADOGAN WEST AND WHAT IS HE TO MYCROFT + QUOTE I HAVE IT QUOTE I CRIED AND PLUNGED AMONG THE LITTER OF PAPERS UPON THE SOFA + YES YES HERE HE IS SURE ENOUGH + CADOGAN WEST WAS THE YOUNG MAN WHO WAS FOUND DEAD ON THE UNDERGROUND ON TUESDAY MORNING + HOLMES SAT UP AT ATTENTION HIS PIPE HALFWAY TO HIS LIPS + THIS MUST BE SERIOUS WATSON + A DEATH WHICH HAS CAUSED MY BROTHER TO ALTER HIS HABITS CAN BE NO ORDINARY ONE + WHAT IN THE WORLD CAN HE HAVE TO DO WITH IT + THE CASE WAS FEATURELESS AS I REMEMBER IT + THE YOUNG MAN HAD APPARENTLY FALLEN OUT OF THE TRAIN AND KILLED HIMSELF + HE HAD NOT BEEN ROBBED AND THERE WAS NO PARTICULAR REASON TO SUSPECT VIOLENCE + IS THAT NOT SO + THERE HAS BEEN AN INQUEST SAID I AND A GOOD MANY FRESH FACTS HAVE COME OUT + LOOKED AT MORE CLOSELY I SHOULD CERTAINLY SAY THAT IT WAS A CURIOUS CASE QUOTE + JUDGING BY ITS EFFECT UPON MY BROTHER I SHOULD THINK IT MUST BE A MOST EXTRAORDINARY ONE + HE SNUGGLED DOWN IN HIS ARMCHAIR + NOW WATSON LET US HAVE THE FACTS + THE MAN'S NAME WAS ARTHUR CADOGAN WEST + HE WAS TWENTYSEVEN YEARS OF AGE UNMARRIED AND A CLERK AT WOOLWICH ARSENAL + GOVERNMENT EMPLOY + BEHOLD THE LINK WITH BROTHER MYCROFT QUOTE + HE LEFT WOOLWICH SUDDENLY ON MONDAY NIGHT + WAS LAST SEEN BY HIS FIANCEE MISS VIOLET WESTBURY WHOM HE LEFT ABRUPTLY IN THE FOG ABOUT SEVEN THIRTY THAT EVENING + THERE WAS NO QUARREL BETWEEN THEM AND SHE CAN GIVE NO MOTIVE FOR HIS ACTION + THE NEXT THING HEARD OF HIM WAS WHEN HIS DEAD BODY WAS DISCOVERED BY A PLATE LAYER NAMED MASON JUST OUTSIDE ALDGATE STATION ON THE UNDERGROUND SYSTEM IN LONDON + WHEN + THE BODY WAS FOUND AT SIX ON THE TUESDAY MORNING + IT WAS LYING WIDE OF THE METALS UPON THE LEFT HAND OF THE TRACK AS ONE GOES EASTWARD AT A POINT CLOSE TO THE STATION WHERE THE LINE EMERGES FROM THE TUNNEL IN WHICH IT RUNS + THE HEAD WAS BADLY CRUSHED AN INJURY WHICH MIGHT WELL HAVE BEEN CAUSED BY A FALL FROM THE TRAIN + THE BODY COULD ONLY HAVE COME ON THE LINE IN THAT WAY + HAD IT BEEN CARRIED DOWN FROM ANY NEIGHBOURING STREET IT MUST HAVE PASSED THE STATION BARRIERS WHERE A COLLECTOR IS ALWAYS STANDING + THIS POINT SEEMS ABSOLUTELY CERTAIN + QUOTE VERY GOOD + THE CASE IS DEFINITE ENOUGH + THE MAN DEAD OR ALIVE EITHER FELL OR WAS PRECIPITATED FROM A TRAIN + SO MUCH IS CLEAR TO ME + CONTINUE + THE TRAINS WHICH TRAVERSE THE LINES OF RAIL BESIDE WHICH THE BODY WAS FOUND ARE THOSE WHICH RUN FROM WEST TO EAST SOME BEING PURELY METROPOLITAN AND SOME FROM WILLESDEN AND OUTLYING JUNCTIONS + IT CAN BE STATED FOR CERTAIN THAT THIS YOUNG MAN WHEN HE MET HIS DEATH WAS TRAVELLING IN THIS DIRECTION AT SOME LATE HOUR OF THE NIGHT BUT AT WHAT POINT HE ENTERED THE TRAIN IT IS IMPOSSIBLE TO STATE + HIS TICKET OF COURSE WOULD SHOW THAT + THERE WAS NO TICKET IN HIS POCKETS + QUOTE NO TICKET + DEAR ME WATSON THIS IS REALLY VERY SINGULAR + ACCORDING TO MY EXPERIENCE IT IS NOT POSSIBLE TO REACH THE PLATFORM OF A METROPOLITAN TRAIN WITHOUT EXHIBITING ONE'S TICKET + PRESUMABLY THEN THE YOUNG MAN HAD ONE + WAS IT TAKEN FROM HIM IN ORDER TO CONCEAL THE STATION FROM WHICH HE CAME + IT IS POSSIBLE + OR DID HE DROP IT IN THE CARRIAGE + THAT ALSO IS POSSIBLE + BUT THE POINT IS OF CURIOUS INTEREST + I UNDERSTAND THAT THERE WAS NO SIGN OF ROBBERY + APPARENTLY NOT + THERE IS A LIST HERE OF HIS POSSESSIONS + HIS PURSE CONTAINED TWO POUNDS FIFTEEN + HE HAD ALSO A CHECK BOOK ON THE WOOLWICH BRANCH OF THE CAPITAL AND COUNTIES BANK + THROUGH THIS HIS IDENTITY WAS ESTABLISHED + THERE WERE ALSO TWO DRESS CIRCLE TICKETS FOR THE WOOLWICH THEATRE DATED FOR THAT VERY EVENING + ALSO A SMALL PACKET OF TECHNICAL PAPERS + HOLMES GAVE AN EXCLAMATION OF SATISFACTION + THERE WE HAVE IT AT LAST WATSON + BRITISH GOVERNMENT WOOLWICH + ARSENAL TECHNICAL PAPERS BROTHER MYCROFT THE CHAIN IS COMPLETE + BUT HERE HE COMES IF I AM NOT MISTAKEN TO SPEAK FOR HIMSELF + A MOMENT LATER THE TALL AND PORTLY FORM OF MYCROFT HOLMES WAS USHERED INTO THE ROOM + HEAVILY BUILT AND MASSIVE THERE WAS A SUGGESTION OF UNCOUTH PHYSICAL INERTIA IN THE FIGURE BUT ABOVE THIS UNWIELDY FRAME THERE WAS PERCHED A HEAD SO MASTERFUL IN ITS BROW SO ALERT IN ITS STEEL GRAY DEEP SET EYES SO FIRM IN ITS LIPS AND SO SUBTLE IN ITS PLAY OF EXPRESSION THAT AFTER THE FIRST GLANCE ONE FORGOT THE GROSS BODY AND REMEMBERED ONLY THE DOMINANT MIND + AT HIS HEELS CAME OUR OLD FRIEND LESTRADE OF SCOTLAND YARD THIN AND AUSTERE + THE GRAVITY OF BOTH THEIR FACES FORETOLD SOME WEIGHTY QUEST + THE DETECTIVE SHOOK HANDS WITHOUT A WORD + MYCROFT HOLMES STRUGGLED OUT OF HIS OVERCOAT AND SUBSIDED INTO AN ARMCHAIR + QUOTE A MOST ANNOYING BUSINESS SHERLOCK QUOTE SAID HE + I EXTREMELY DISLIKE ALTERING MY HABITS BUT THE POWERS THAT BE WOULD TAKE NO DENIAL + IN THE PRESENT STATE OF SIAM IT IS MOST AWKWARD THAT I SHOULD BE AWAY FROM THE OFFICE + BUT IT IS A REAL CRISIS + I HAVE NEVER SEEN THE PRIME MINISTER SO UPSET + AS TO THE ADMIRALTY IT IS BUZZING LIKE AN OVERTURNED BEE HIVE + HAVE YOU READ UP THE CASE + WE HAVE JUST DONE SO + WHAT WERE THE TECHNICAL PAPERS + AH THERE'S THE POINT + FORTUNATELY IT HAS NOT COME OUT + THE PRESS WOULD BE FURIOUS IF IT DID + THE PAPERS WHICH THIS WRETCHED YOUTH HAD IN HIS POCKET WERE THE PLANS OF THE BRUCE PARTINGTON SUBMARINE QUOTE + MYCROFT HOLMES SPOKE WITH A SOLEMNITY WHICH SHOWED HIS SENSE OF THE IMPORTANCE OF THE SUBJECT + HIS BROTHER AND I SAT EXPECTANT + SURELY YOU HAVE HEARD OF IT + I THOUGHT EVERYONE HAD HEARD OF IT + ONLY AS A NAME + ITS IMPORTANCE CAN HARDLY BE EXAGGERATED + IT HAS BEEN THE MOST JEALOUSLY GUARDED OF ALL GOVERNMENT SECRETS + YOU MAY TAKE IT FROM ME THAT NAVAL WARFARE BECOMES IMPOSSIBLE WITHIN THE RADIUS OF A BRUCE PARTINGTON'S OPERATION + TWO YEARS AGO A VERY LARGE SUM WAS SMUGGLED THROUGH THE ESTIMATES AND WAS EXPENDED IN ACQUIRING A MONOPOLY OF THE INVENTION + EVERY EFFORT HAS BEEN MADE TO KEEP THE SECRET + THE PLANS WHICH ARE EXCEEDINGLY INTRICATE COMPRISING SOME THIRTY SEPARATE PATENTS EACH ESSENTIAL TO THE WORKING OF THE WHOLE ARE KEPT IN AN ELABORATE SAFE IN A CONFIDENTIAL OFFICE ADJOINING THE ARSENAL WITH BURGLARPROOF DOORS AND WINDOWS + UNDER NO CONCEIVABLE CIRCUMSTANCES WERE THE PLANS TO BE TAKEN FROM THE OFFICE + IF THE CHIEF CONSTRUCTOR OF THE NAVY DESIRED TO CONSULT THEM EVEN HE WAS FORCED TO GO TO THE WOOLWICH OFFICE FOR THE PURPOSE + AND YET HERE WE FIND THEM IN THE POCKET OF A DEAD JUNIOR CLERK IN THE HEART OF LONDON + FROM AN OFFICIAL POINT OF VIEW IT'S SIMPLY AWFUL + QUOTE BUT YOU HAVE RECOVERED THEM QUOTE + NO SHERLOCK NO + THAT'S THE PINCH + WE HAVE NOT + TEN PAPERS WERE TAKEN FROM WOOLWICH + THERE WERE SEVEN IN THE POCKET OF CADOGAN WEST + THE THREE MOST ESSENTIAL ARE GONE STOLEN VANISHED + YOU MUST DROP EVERYTHING SHERLOCK + NEVER MIND YOUR USUAL PETTY PUZZLES OF THE POLICE COURT + IT'S A VITAL INTERNATIONAL PROBLEM THAT YOU HAVE TO SOLVE + WHY DID CADOGAN WEST TAKE THE PAPERS WHERE ARE THE MISSING ONES HOW DID HE DIE HOW CAME HIS BODY WHERE IT WAS FOUND HOW CAN THE EVIL BE SET RIGHT + FIND AN ANSWER TO ALL THESE QUESTIONS AND YOU WILL HAVE DONE GOOD SERVICE FOR YOUR COUNTRY + WHY DO YOU NOT SOLVE IT YOURSELF MYCROFT + YOU CAN SEE AS FAR AS I + POSSIBLY SHERLOCK + BUT IT IS A QUESTION OF GETTING DETAILS + GIVE ME YOUR DETAILS AND FROM AN ARMCHAIR I WILL RETURN YOU AN EXCELLENT EXPERT OPINION + BUT TO RUN HERE AND RUN THERE TO CROSS QUESTION RAILWAY GUARDS AND LIE ON MY FACE WITH A LENS TO MY EYE IT IS NOT MY METIER + NO YOU ARE THE ONE MAN WHO CAN CLEAR THE MATTER UP + IF YOU HAVE A FANCY TO SEE YOUR NAME IN THE NEXT HONOURS LIST QUOTE + MY FRIEND SMILED AND SHOOK HIS HEAD + I PLAY THE GAME FOR THE GAME'S OWN SAKE SAID HE + BUT THE PROBLEM CERTAINLY PRESENTS SOME POINTS OF INTEREST AND I SHALL BE VERY PLEASED TO LOOK INTO IT + SOME MORE FACTS PLEASE + I HAVE JOTTED DOWN THE MORE ESSENTIAL ONES UPON THIS SHEET OF PAPER TOGETHER WITH A FEW ADDRESSES WHICH YOU WILL FIND OF SERVICE + THE ACTUAL OFFICIAL GUARDIAN OF THE PAPERS IS THE FAMOUS GOVERNMENT EXPERT SIR JAMES WALTER WHOSE DECORATIONS AND SUB TITLES FILL TWO LINES OF A BOOK OF REFERENCE + HE HAS GROWN GRAY IN THE SERVICE IS A GENTLEMAN A FAVOURED GUEST IN THE MOST EXALTED HOUSES AND ABOVE ALL A MAN WHOSE PATRIOTISM IS BEYOND SUSPICION + HE IS ONE OF TWO WHO HAVE A KEY OF THE SAFE + I MAY ADD THAT THE PAPERS WERE UNDOUBTEDLY IN THE OFFICE DURING WORKING HOURS ON MONDAY AND THAT SIR JAMES LEFT FOR LONDON ABOUT THREE O'CLOCK TAKING HIS KEY WITH HIM + HE WAS AT THE HOUSE OF ADMIRAL SINCLAIR AT BARCLAY SQUARE DURING THE WHOLE OF THE EVENING WHEN THIS INCIDENT OCCURRED + QUOTE HAS THE FACT BEEN VERIFIED QUOTE + YES HIS BROTHER COLONEL VALENTINE WALTER HAS TESTIFIED TO HIS DEPARTURE FROM WOOLWICH AND ADMIRAL SINCLAIR TO HIS ARRIVAL IN LONDON SO SIR JAMES IS NO LONGER A DIRECT FACTOR IN THE PROBLEM + WHO WAS THE OTHER MAN WITH A KEY + THE SENIOR CLERK AND DRAUGHTSMAN MR. SIDNEY JOHNSON + HE IS A MAN OF FORTY MARRIED WITH FIVE CHILDREN + HE IS A SILENT MOROSE MAN BUT HE HAS ON THE WHOLE AN EXCELLENT RECORD IN THE PUBLIC SERVICE + HE IS UNPOPULAR WITH HIS COLLEAGUES BUT A HARD WORKER + ACCORDING TO HIS OWN ACCOUNT CORROBORATED ONLY BY THE WORD OF HIS WIFE HE WAS AT HOME THE WHOLE OF MONDAY EVENING AFTER OFFICE HOURS AND HIS KEY HAS NEVER LEFT THE WATCH CHAIN UPON WHICH IT HANGS + TELL US ABOUT CADOGAN WEST + QUOTE HE HAS BEEN TEN YEARS IN THE SERVICE AND HAS DONE GOOD WORK + HE HAS THE REPUTATION OF BEING HOT HEADED AND IMPETUOUS BUT A STRAIGHT HONEST MAN + WE HAVE NOTHING AGAINST HIM + HE WAS NEXT TO SIDNEY JOHNSON IN THE OFFICE + HIS DUTIES BROUGHT HIM INTO DAILY PERSONAL CONTACT WITH THE PLANS + NO ONE ELSE HAD THE HANDLING OF THEM + WHO LOCKED THE PLANS UP THAT NIGHT + MR. SIDNEY JOHNSON THE SENIOR CLERK + WELL IT IS SURELY PERFECTLY CLEAR WHO TOOK THEM AWAY + THEY ARE ACTUALLY FOUND UPON THE PERSON OF THIS JUNIOR CLERK CADOGAN WEST + THAT SEEMS FINAL DOES IT NOT + QUOTE IT DOES SHERLOCK AND YET IT LEAVES SO MUCH UNEXPLAINED + IN THE FIRST PLACE WHY DID HE TAKE THEM + I PRESUME THEY WERE OF VALUE + HE COULD HAVE GOT SEVERAL THOUSANDS FOR THEM VERY EASILY + CAN YOU SUGGEST ANY POSSIBLE MOTIVE FOR TAKING THE PAPERS TO LONDON EXCEPT TO SELL THEM + NO I CANNOT + QUOTE THEN WE MUST TAKE THAT AS OUR WORKING HYPOTHESIS + YOUNG WEST TOOK THE PAPERS + NOW THIS COULD ONLY BE DONE BY HAVING A FALSE KEY + SEVERAL FALSE KEYS + HE HAD TO OPEN THE BUILDING AND THE ROOM + HE HAD THEN SEVERAL FALSE KEYS + HE TOOK THE PAPERS TO LONDON TO SELL THE SECRET INTENDING NO DOUBT TO HAVE THE PLANS THEMSELVES BACK IN THE SAFE NEXT MORNING BEFORE THEY WERE MISSED + WHILE IN LONDON ON THIS TREASONABLE MISSION HE MET HIS END + QUOTE HOW QUOTE + WE WILL SUPPOSE THAT HE WAS TRAVELLING BACK TO WOOLWICH WHEN HE WAS KILLED AND THROWN OUT OF THE COMPARTMENT + ALDGATE WHERE THE BODY WAS FOUND IS CONSIDERABLY PAST THE STATION FOR LONDON BRIDGE WHICH WOULD BE HIS ROUTE TO WOOLWICH + MANY CIRCUMSTANCES COULD BE IMAGINED UNDER WHICH HE WOULD PASS LONDON BRIDGE + THERE WAS SOMEONE IN THE CARRIAGE FOR EXAMPLE WITH WHOM HE WAS HAVITLG AN ABSORBING INTERVIEW + THIS INTERVIEW LED TO A VIOLENT SCENE IN WHICH HE LOST HIS LIFE + POSSIBLY HE TRIED TO LEAVE THE CARRIAGE FELL OUT ON THE LINE AND SO MET HIS END + THE OTHER CLOSED THE DOOR + THERE WAS A THICK FOG AND NOTHING COULD BE SEEN + NO BETTER EXPLANATION CAN BE GIVEN WITH OUR PRESENT KNOWLEDGE AND YET CONSIDER SHERLOCK HOW MUCH YOU LEAVE UNTOUCHED + WE WILL SUPPOSE FOR ARGUMENT'S SAKE THAT YOUNG CADOGAN WEST HAD DETERMINED TO CONVEY THESE PAPERS TO LONDON + HE WOULD NATURALLY HAVE MADE AN APPOINTMENT WITH THE FOREIGN AGENT AND KEPT HIS EVENING CLEAR + INSTEAD OF THAT HE TOOK TWO TICKETS FOR THE THEATRE ESCORTED HIS FIANCEE HALFWAY THERE AND THEN SUDDENLY DISAPPEARED QUOTE + A BLIND SAID LESTRADE WHO HAD SAT LISTENING WITH SOME IMPATIENCE TO THE CONVERSATION + A VERY SINGULAR ONE + THAT IS OBJECTION NUMBER ONE + OBJECTION NUMBER TWO WE WILL SUPPOSE THAT HE REACHES LONDON AND SEES THE FOREIGN AGENT + HE MUST BRING BACK THE PAPERS BEFORE MORNING OR THE LOSS WILL BE DISCOVERED + HE TOOK AWAY TEN + ONLY SEVEN WERE IN HIS POCKET + WHAT HAD BECOME OF THE OTHER THREE + HE CERTAINLY WOULD NOT LEAVE THEM OF HIS OWN FREE WILL + THEN AGAIN WHERE IS THE PRICE OF HIS TREASON + ONE WOULD HAVE EXPECTED TO FIND A LARGE SUM OF MONEY IN HIS POCKET + IT SEEMS TO ME PERFECTLY CLEAR SAID LESTRADE + I HAVE NO DOUBT AT ALL AS TO WHAT OCCURRED + HE TOOK THE PAPERS TO SELL THEM + HE SAW THE AGENT + THEY COULD NOT AGREE AS TO PRICE + HE STARTED HOME AGAIN BUT THE AGENT WENT WITH HIM + IN THE TRAIN THE AGENT MURDERED HIM TOOK THE MORE ESSENTIAL PAPERS AND THREW HIS BODY FROM THE CARRIAGE + THAT WOULD ACCOUNT FOR EVERYTHING WOULD IT NOT QUOTE + WHY HAD HE NO TICKET + THE TICKET WOULD HAVE SHOWN WHICH STATION WAS NEAREST THE AGENT'S HOUSE + THEREFORE HE TOOK IT FROM THE MURDERED MAN'S POCKET + GOOD LESTRADE VERY GOOD SAID HOLMES + YOUR THEORY HOLDS TOGETHER + BUT IF THIS IS TRUE THEN THE CASE IS AT AN END + ON THE ONE HAND THE TRAITOR IS DEAD + ON THE OTHER THE PLANS OF THE BRUCE PARTINGTON SUBMARINE ARE PRESUMABLY ALREADY ON THE CONTINENT + WHAT IS THERE FOR US TO DO QUOTE + TO ACT SHERLOCK TO ACT CRIED MYCROFT SPRINGING TO HIS FEET + ALL MY INSTINCTS ARE AGAINST THIS EXPLANATION + USE YOUR POWERS + GO TO THE SCENE OF THE CRIME + SEE THE PEOPLE CONCERNED + LEAVE NO STONE UNTURNED + IN ALL YOUR CAREER YOU HAVE NEVER HAD SO GREAT A CHANCE OF SERVING YOUR COUNTRY + WELL WELL SAID HOLMES SHRUGGING HIS SHOULDERS + COME WATSON + AND YOU LESTRADE COULD YOU FAVOUR US WITH YOUR COMPANY FOR AN HOUR OR TWO + WE WILL BEGIN OUR INVESTIGATION BY A VISIT TO ALDGATE STATION + GOOD BYE MYCROFT + I SHALL LET YOU HAVE A REPORT BEFORE EVENING BUT I WARN YOU IN ADVANCE THAT YOU HAVE LITTLE TO EXPECT QUOTE + AN HOUR LATER HOLMES LESTRADE AND I STOOD UPON THE UNDERGROUND RAILROAD AT THE POINT WHERE IT EMERGES FROM THE TUNNEL IMMEDIATELY BEFORE ALDGATE STATION + A COURTEOUS RED FACED OLD GENTLEMAN REPRESENTED THE RAILWAY COMPANY + THIS IS WHERE THE YOUNG MAN'S BODY LAY SAID HE INDICATING A SPOT ABOUT THREE FEET FROM THE METALS + IT COULD NOT HAVE FALLEN FROM ABOVE FOR THESE AS YOU SEE ARE ALL BLANK WALLS + THEREFORE IT COULD ONLY HAVE COME FROM A TRAIN AND THAT TRAIN SO FAR AS WE CAN TRACE IT MUST HAVE PASSED ABOUT MIDNIGHT ON MONDAY + HAVE THE CARRIAGES BEEN EXAMINED FOR ANY SIGN OF VIOLENCE + THERE ARE NO SUCH SIGNS AND NO TICKET HAS BEEN FOUND + QUOTE NO RECORD OF A DOOR BEING FOUND OPEN QUOTE + NONE + WE HAVE HAD SOME FRESH EVIDENCE THIS MORNING SAID LESTRADE + A PASSENGER WHO PASSED ALDGATE IN AN ORDINARY METROPOLITAN TRAIN ABOUT ELEVEN FORTY ON MONDAY NIGHT DECLARES THAT HE HEARD A HEAVY THUD AS OF A BODY STRIKING THE LINE JUST BEFORE THE TRAIN REACHED THE STATION + THERE WAS DENSE FOG HOWEVER AND NOTHING COULD BE SEEN + HE MADE NO REPORT OF IT AT THE TIME + WHY WHATEVER IS THE MATTER WITH MR. HOLMES + MY FRIEND WAS STANDING WITH AN EXPRESSION OF STRAINED INTENSITY UPON HIS FACE STARING AT THE RAILWAY METALS WHERE THEY CURVED OUT OF THE TUNNEL + ALDGATE IS A JUNCTION AND THERE WAS A NETWORK OF POINTS + ON THESE HIS EAGER QUESTIONING EYES WERE FIXED AND I SAW ON HIS KEEN ALERT FACE THAT TIGHTENING OF THE LIPS THAT QUIVER OF THE NOSTRILS AND CONCENTRATION OF THE HEAVY TUFTED BROWS WHICH I KNEW SO WELL + POINTS HE MUTTERED THE POINTS + QUOTE WHAT OF IT + WHAT DO YOU MEAN + I SUPPOSE THERE ARE NO GREAT NUMBER OF POINTS ON A SYSTEM SUCH AS THIS + NO THERE ARE VERY FEW + AND A CURVE TOO + POINTS AND A CURVE + BY JOVE IF IT WERE ONLY SO + QUOTE WHAT IS IT MR. HOLMES + HAVE YOU A CLUE + AN IDEA AN INDICATION NO MORE + BUT THE CASE CERTAINLY GROWS IN INTEREST + UNIQUE PERFECTLY UNIQUE AND YET WHY NOT + I DO NOT SEE ANY INDICATIONS OF BLEEDING ON THE LINE + THERE WERE HARDLY ANY + BUT I UNDERSTAND THAT THERE WAS A CONSIDERABLE WOUND + QUOTE THE BONE WAS CRUSHED BUT THERE WAS NO GREAT EXTERNAL INJURY QUOTE + AND YET ONE WOULD HAVE EXPECTED SOME BLEEDING + WOULD IT BE POSSIBLE FOR ME TO INSPECT THE TRAIN WHICH CONTAINED THE PASSENGER WHO HEARD THE THUD OF A FALL IN THE FOG + I FEAR NOT MR. HOLMES + THE TRAIN HAS BEEN BROKEN UP BEFORE NOW AND THE CARRIAGES REDISTRIBUTED + I CAN ASSURE YOU MR. HOLMES SAID LESTRADE THAT EVERY CARRIAGE HAS BEEN CAREFULLY EXAMINED + I SAW TO IT MYSELF QUOTE + IT WAS ONE OF MY FRIEND'S MOST OBVIOUS WEAKNESSES THAT HE WAS IMPATIENT WITH LESS ALERT INTELLIGENCES THAN HIS OWN + VERY LIKELY SAID HE TURNING AWAY + AS IT HAPPENS IT WAS NOT THE CARRIAGES WHICH I DESIRED TO EXAMINE + WATSON WE HAVE DONE ALL WE CAN HERE + WE NEED NOT TROUBLE YOU ANY FURTHER MR. LESTRADE + I THINK OUR INVESTIGATIONS MUST NOW CARRY US TO WOOLWICH + AT LONDON BRIDGE HOLMES WROTE A TELEGRAM TO HIS BROTHER WHICH HE HANDED TO ME BEFORE DISPATCHING IT + IT RAN THUS SEE SOME LIGHT IN THE DARKNESS BUT IT MAY POSSIBLY FLICKER OUT + MEANWHILE PLEASE SEND BY MESSENGER TO AWAIT RETURN AT BAKER STREET A COMPLETE LIST OF ALL FOREIGN SPIES OR INTERNATIONAL AGENTS KNOWN TO BE IN ENGLAND WITH FULL ADDRESS + SHERLOCK + THAT SHOULD BE HELPFUL WATSON HE REMARKED AS WE TOOK OUR SEATS IN THE WOOLWICH TRAIN + WE CERTAINLY OWE BROTHER MYCROFT A DEBT FOR HAVING INTRODUCED US TO WHAT PROMISES TO BE A REALLY VERY REMARKABLE CASE + HIS EAGER FACE STILL WORE THAT EXPRESSION OF INTENSE AND HIGHSTRUNG ENERGY WHICH SHOWED ME THAT SOME NOVEL AND SUGGESTIVE CIRCUMSTANCE HAD OPENED UP A STIMULATING LINE OF THOUGHT + SEE THE FOXHOUND WITH HANGING EARS AND DROOPING TAIL AS IT LOLLS ABOUT THE KENNELS AND COMPARE IT WITH THE SAME HOUND AS WITH GLEAMING EYES AND STRAINING MUSCLES IT RUNS UPON A BREAST HIGH SCENT SUCH WAS THE CHANGE IN HOLMES SINCE THE MORNING + HE WAS A DIFFERENT MAN FROM THE LIMP AND LOUNGING FIGURE IN THE MOUSE COLOURED DRESSING GOWN WHO HAD PROWLED SO RESTLESSLY ONLY A FEW HOURS BEFORE ROUND THE FOG GIRT ROOM + QUOTE THERE IS MATERIAL HERE + THERE IS SCOPE SAID HE + I AM DULL INDEED NOT TO HAVE UNDERSTOOD ITS POSSIBILITIES + EVEN NOW THEY ARE DARK TO ME + THE END IS DARK TO ME ALSO BUT I HAVE HOLD OF ONE IDEA WHICH MAY LEAD US FAR + THE MAN MET HIS DEATH ELSEWHERE AND HIS BODY WAS ON THE ROOF OF A CARRIAGE + QUOTE ON THE ROOF QUOTE + REMARKABLE IS IT NOT + BUT CONSIDER THE FACTS + IS IT A COINCIDENCE THAT IT IS FOUND AT THE VERY POINT WHERE THE TRAIN PITCHES AND SWAYS AS IT COMES ROUND ON THE POINTS + IS NOT THAT THE PLACE WHERE AN OBJECT UPON THE ROOF MIGHT BE EXPECTED TO FALL OFF + THE POINTS WOULD AFFECT NO OBJECT INSIDE THE TRAIN + EITHER THE BODY FELL FROM THE ROOF OR A VERY CURIOUS COINCIDENCE HAS OCCURRED + BUT NOW CONSIDER THE QUESTION OF THE BLOOD + OF COURSE THERE WAS NO BLEEDING ON THE LINE IF THE BODY HAD BLED ELSEWHERE + EACH FACT IS SUGGESTIVE IN ITSELF + TOGETHER THEY HAVE A CUMULATIVE FORCE + AND THE TICKET TOO + I CRIED + EXACTLY + WE COULD NOT EXPLAIN THE ABSENCE OF A TICKET + THIS WOULD EXPLAIN IT + EVERYTHING FITS TOGETHER + QUOTE BUT SUPPOSE IT WERE SO WE ARE STILL AS FAR AS EVER FROM UNRAVELLING THE MYSTERY OF HIS DEATH + INDEED IT BECOMES NOT SIMPLER BUT STRANGER + PERHAPS SAID HOLMES THOUGHTFULLY PERHAPS + HE RELAPSED INTO A SILENT REVERIE WHICH LASTED UNTIL THE SLOW TRAIN DREW UP AT LAST IN WOOLWICH STATION + THERE HE CALLED A CAB AND DREW MYCROFT'S PAPER FROM HIS POCKET + WE HAVE QUITE A LITTLE ROUND OF AFTERNOON CALLS TO MAKE SAID HE + I THINK THAT SIR JAMES WALTER CLAIMS OUR FIRST ATTENTION + THE HOUSE OF THE FAMOUS OFFICIAL WAS A FINE VILLA WITH GREEN LAWNS STRETCHING DOWN TO THE THAMES + AS WE REACHED IT THE FOG WAS LIFTING AND A THIN WATERY SUNSHINE WAS BREAKING THROUGH + A BUTLER ANSWERED OUR RING + SIR JAMES SIR SAID HE WITH SOLEMN FACE + QUOTE SIR JAMES DIED THIS MORNING QUOTE + GOOD HEAVENS CRIED HOLMES IN AMAZEMENT + HOW DID HE DIE + PERHAPS YOU WOULD CARE TO STEP IN SIR AND SEE HIS BROTHER COLONEL VALENTINE + YES WE HAD BEST DO SO + WE WERE USHERED INTO A DIM LIT DRAWING ROOM WHERE AN INSTANT LATER WE WERE JOINED BY A VERY TALL HANDSOME LIGHTBEARDED MAN OF FIFTY THE YOUNGER BROTHER OF THE DEAD SCIENTIST + HIS WILD EYES STAINED CHEEKS AND UNKEMPT HAIR ALL SPOKE OF THE SUDDEN BLOW WHICH HAD FALLEN UPON THE HOUSEHOLD + HE WAS HARDLY ARTICULATE AS HE SPOKE OF IT + IT WAS THIS HORRIBLE SCANDAL SAID HE + QUOTE MY BROTHER SIR JAMES WAS A MAN OF VERY SENSITIVE HONOUR AND HE COULD NOT SURVIVE SUCH AN AFFAIR + IT BROKE HIS HEART + HE WAS ALWAYS SO PROUD OF THE EFFICIENCY OF HIS DEPARTMENT AND THIS WAS A CRUSHING BLOW + WE HAD HOPED THAT HE MIGHT HAVE GIVEN US SOME INDICATIONS WHICH WOULD HAVE HELPED US TO CLEAR THE MATTER UP + I ASSURE YOU THAT IT WAS ALL A MYSTERY TO HIM AS IT IS TO YOU AND TO ALL OF US + HE HAD ALREADY PUT ALL HIS KNOWLEDGE AT THE DISPOSAL OF THE POLICE + NATURALLY HE HAD NO DOUBT THAT CADOGAN WEST WAS GUILTY + BUT ALL THE REST WAS INCONCEIVABLE + YOU CANNOT THROW ANY NEW LIGHT UPON THE AFFAIR + QUOTE I KNOW NOTHING MYSELF SAVE WHAT I HAVE READ OR HEARD + I HAVE NO DESIRE TO BE DISCOURTEOUS BUT YOU CAN UNDERSTAND MR. HOLMES THAT WE ARE MUCH DISTURBED AT PRESENT AND I MUST ASK YOU TO HASTEN THIS INTERVIEW TO AN END + THIS IS INDEED AN UNEXPECTED DEVELOPMENT SAID MY FRIEND WHEN WE HAD REGAINED THE CAB + I WONDER IF THE DEATH WAS NATURAL OR WHETHER THE POOR OLD FELLOW KILLED HIMSELF + IF THE LATTER MAY IT BE TAKEN AS SOME SIGN OF SELF REPROACH FOR DUTY NEGLECTED + WE MUST LEAVE THAT QUESTION TO THE FUTURE + NOW WE SHALL TURN TO THE CADOGAN WESTS + A SMALL BUT WELL KEPT HOUSE IN THE OUTSKIRTS OF THE TOWN SHELTERED THE BEREAVED MOTHER + THE OLD LADY WAS TOO DAZED WITH GRIEF TO BE OF ANY USE TO US BUT AT HER SIDE WAS A WHITE FACED YOUNG LADY WHO INTRODUCED HERSELF AS MISS VIOLET WESTBURY THE FIANCEE OF THE DEAD MAN AND THE LAST TO SEE HIM UPON THAT FATAL NIGHT + I CANNOT EXPLAIN IT MR. HOLMES SHE SAID + QUOTE I HAVE NOT SHUT AN EYE SINCE THE TRAGEDY THINKING THINKING THINKING NIGHT AND DAY WHAT THE TRUE MEANING OF IT CAN BE + ARTHUR WAS THE MOST SINGLE MINDED CHIVALROUS PATRIOTIC MAN UPON EARTH + HE WOULD HAVE CUT HIS RIGHT HAND OFF BEFORE HE WOULD SELL A STATE SECRET CONFIDED TO HIS KEEPING + IT IS ABSURD IMPOSSIBLE PREPOSTEROUS TO ANYONE WHO KNEW HIM + BUT THE FACTS MISS WESTBURY + YES YES I ADMIT I CANNOT EXPLAIN THEM + WAS HE IN ANY WANT OF MONEY + NO HIS NEEDS WERE VERY SIMPLE AND HIS SALARY AMPLE + HE HAD SAVED A FEW HUNDREDS AND WE WERE TO MARRY AT THE NEW YEAR QUOTE + NO SIGNS OF ANY MENTAL EXCITEMENT + COME MISS WESTBURY BE ABSOLUTELY FRANK WITH US + THE QUICK EYE OF MY COMPANION HAD NOTED SOME CHANGE IN HER MANNER + SHE COLOURED AND HESITATED + YES SHE SAID AT LAST I HAD A FEELING THAT THERE WAS SOMETHING ON HIS MIND + FOR LONG + ONLY FOR THE LAST WEEK OR SO + HE WAS THOUGHTFUL AND WORRIED + ONCE I PRESSED HIM ABOUT IT + HE ADMITTED THAT THERE WAS SOMETHING AND THAT IT WAS CONCERNED WITH HIS OFFICIAL LIFE + IT IS TOO SERIOUS FOR ME TO SPEAK ABOUT EVEN TO YOU SAID HE + I COULD GET NOTHING MORE QUOTE + HOLMES LOOKED GRAVE + GO ON MISS WESTBURY + EVEN IF IT SEEMS TO TELL AGAINST HIM GO ON + WE CANNOT SAY WHAT IT MAY LEAD TO + INDEED I HAVE NOTHING MORE TO TELL + ONCE OR TWICE IT SEEMED TO ME THAT HE WAS ON THE POINT OF TELLING ME SOMETHING + HE SPOKE ONE EVENING OF THE IMPORTANCE OF THE SECRET AND I HAVE SOME RECOLLECTION THAT HE SAID THAT NO DOUBT FOREIGN SPIES WOULD PAY A GREAT DEAL TO HAVE IT + MY FRIEND'S FACE GREW GRAVER STILL + ANYTHING ELSE + QUOTE HE SAID THAT WE WERE SLACK ABOUT SUCH MATTERS THAT IT WOULD BE EASY FOR A TRAITOR TO GET THE PLANS QUOTE + WAS IT ONLY RECENTLY THAT HE MADE SUCH REMARKS + YES QUITE RECENTLY + NOW TELL US OF THAT LAST EVENING + WE WERE TO GO TO THE THEATRE + THE FOG WAS SO THICK THAT A CAB WAS USELESS + WE WALKED AND OUR WAY TOOK US CLOSE TO THE OFFICE + SUDDENLY HE DARTED AWAY INTO THE FOG + QUOTE WITHOUT A WORD QUOTE + HE GAVE AN EXCLAMATION THAT WAS ALL + I WAITED BUT HE NEVER RETURNED + THEN I WALKED HOME + NEXT MORNING AFTER THE OFFICE OPENED THEY CAME TO INQUIRE + ABOUT TWELVE O'CLOCK WE HEARD THE TERRIBLE NEWS + OH MR. HOLMES IF YOU COULD ONLY ONLY SAVE HIS HONOUR + IT WAS SO MUCH TO HIM + HOLMES SHOOK HIS HEAD SADLY + COME WATSON SAID HE OUR WAYS LIE ELSEWHERE + OUR NEXT STATION MUST BE THE OFFICE FROM WHICH THE PAPERS WERE TAKEN + IT WAS BLACK ENOUGH BEFORE AGAINST THIS YOUNG MAN BUT OUR INQUIRIES MAKE IT BLACKER HE REMARKED AS THE CAB LUMBERED OFF + HIS COMING MARRIAGE GIVES A MOTIVE FOR THE CRIME + HE NATURALLY WANTED MONEY + THE IDEA WAS IN HIS HEAD SINCE HE SPOKE ABOUT IT + HE NEARLY MADE THE GIRL AN ACCOMPLICE IN THE TREASON BY TELLING HER HIS PLANS + IT IS ALL VERY BAD QUOTE + BUT SURELY HOLMES CHARACTER GOES FOR SOMETHING + THEN AGAIN WHY SHOULD HE LEAVE THE GIRL IN THE STREET AND DART AWAY TO COMMIT A FELONY + EXACTLY + THERE ARE CERTAINLY OBJECTIONS + BUT IT IS A FORMIDABLE CASE WHICH THEY HAVE TO MEET + MR. SIDNEY JOHNSON THE SENIOR CLERK MET US AT THE OFFICE AND RECELVED US WITH THAT RESPECT WHICH MY COMPANION'S CARD ALWAYS COMMANDED + HE WAS A THIN GRUFF BESPECTACLED MAN OF MIDDLE AGE HIS CHEEKS HAGGARD AND HIS HANDS TWITCHING FROM THE NERVOUS STRAIN TO WHICH HE HAD BEEN SUBJECTED + IT IS BAD MR. HOLMES VERY BAD + HAVE YOU HEARD OF THE DEATH OF THE CHIEF QUOTE + WE HAVE JUST COME FROM HIS HOUSE + THE PLACE IS DISORGANIZED + THE CHIEF DEAD CADOGAN WEST DEAD OUR PAPERS STOLEN + AND YET WHEN WE CLOSED OUR DOOR ON MONDAY EVENING WE WERE AS EFFICIENT AN OFFICE AS ANY IN THE GOVERNMENT SERVICE + GOOD GOD IT'S DREADFUL TO THINK OF + THAT WEST OF ALL MEN SHOULD HAVE DONE SUCH A THING + YOU ARE SURE OF HIS GUILT THEN + I CAN SEE NO OTHER WAY OUT OF IT + AND YET I WOULD HAVE TRUSTED HIM AS I TRUST MYSELF QUOTE + AT WHAT HOUR WAS THE OFFICE CLOSED ON MONDAY + AT FIVE + DID YOU CLOSE IT + I AM ALWAYS THE LAST MAN OUT + WHERE WERE THE PLANS + QUOTE IN THAT SAFE + I PUT THEM THERE MYSELF + IS THERE NO WATCHMAN TO THE BUILDING + THERE IS BUT HE HAS OTHER DEPARTMENTS TO LOOK AFTER AS WELL + HE IS AN OLD SOLDIER AND A MOST TRUSTWORTHY MAN + HE SAW NOTHING THAT EVENING + OF COURSE THE FOG WAS VERY THICK + SUPPOSE THAT CADOGAN WEST WISHED TO MAKE HIS WAY INTO THE BUILDING AFTER HOURS HE WOULD NEED THREE KEYS WOULD HE NOT BEFORE HE COULD REACH THE PAPERS + QUOTE YES HE WOULD + THE KEY OF THE OUTER DOOR THE KEY OF THE OFFICE AND THE KEY OF THE SAFE + ONLY SIR JAMES WALTER AND YOU HAD THOSE KEYS + I HAD NO KEYS OF THE DOORS ONLY OF THE SAFE + WAS SIR JAMES A MAN WHO WAS ORDERLY IN HIS HABITS + YES I THINK HE WAS + I KNOW THAT SO FAR AS THOSE THREE KEYS ARE CONCERNED HE KEPT THEM ON THE SAME RING + I HAVE OFTEN SEEN THEM THERE QUOTE + AND THAT RING WENT WITH HIM TO LONDON + HE SAID SO + AND YOUR KEY NEVER LEFT YOUR POSSESSION + NEVER + THEN WEST IF HE IS THE CULPRIT MUST HAVE HAD A DUPLICATE + AND YET NONE WAS FOUND UPON HIS BODY + ONE OTHER POINT IF A CLERK IN THIS OFFICE DESIRED TO SELL THE PLANS WOULD IT NOT BE SIMPLER TO COPY THE PLANS FOR HIMSELF THAN TO TAKE THE ORIGINALS AS WAS ACTUALLY DONE QUOTE + IT WOULD TAKE CONSIDERABLE TECHNICAL KNOWLEDGE TO COPY THE PLANS IN AN EFFECTIVE WAY + BUT I SUPPOSE EITHER SIR JAMES OR YOU OR WEST HAD THAT TECHNICAL KNOWLEDGE + NO DOUBT WE HAD BUT I BEG YOU WON'T TRY TO DRAG ME INTO THE MATTER MR. HOLMES + WHAT IS THE USE OF OUR SPECULATING IN THIS WAY WHEN THE ORIGINAL PLANS WERE ACTUALLY FOUND ON WEST + WELL IT IS CERTAINLY SINGULAR THAT HE SHOULD RUN THE RISK OF TAKING ORIGINALS IF HE COULD SAFELY HAVE TAKEN COPIES WHICH WOULD HAVE EQUALLY SERVED HIS TURN + QUOTE SINGULAR NO DOUBT AND YET HE DID SO QUOTE + EVERY INQUIRY IN THIS CASE REVEALS SOMETHING INEXPLICABLE + NOW THERE ARE THREE PAPERS STILL MISSING + THEY ARE AS I UNDERSTAND THE VITAL ONES + YES THAT IS SO + DO YOU MEAN TO SAY THAT ANYONE HOLDING THESE THREE PAPERS AND WITHOUT THE SEVEN OTHERS COULD CONSTRUCT A BRUCE PARTINGTON SUBMARINE + I REPORTED TO THAT EFFECT TO THE ADMIRALTY + BUT TO DAY I HAVE BEEN OVER THE DRAWINGS AGAIN AND I AM NOT SO SURE OF IT + THE DOUBLE VALVES WITH THE AUTOMATIC SELF ADJUSTING SLOTS ARE DRAWN IN ONE OF THE PAPERS WHICH HAVE BEEN RETURNED + UNTIL THE FOREIGNERS HAD INVENTED THAT FOR THEMSELVES THEY COULD NOT MAKE THE BOAT + OF COURSE THEY MIGHT SOON GET OVER THE DIFFICULTY QUOTE + BUT THE THREE MISSING DRAWINGS ARE THE MOST IMPORTANT + UNDOUBTEDLY + I THINK WITH YOUR PERMISSION I WILL NOW TAKE A STROLL ROUND ME PREMISES + I DO NOT RECALL ANY OTHER QUESTION WHICH I DESIRED TO ASK + HE EXAMINED THE LOCK OF THE SAFE THE DOOR OF THE ROOM AND FINALLY THE IRON SHUTTERS OF THE WINDOW + IT WAS ONLY WHEN WE WERE ON THE LAWN OUTSIDE THAT HIS INTEREST WAS STRONGLY EXCITED + THERE WAS A LAUREL BUSH OUTSIDE THE WINDOW AND SEVERAL OF THE BRANCHES BORE SIGNS OF HAVING BEEN TWISTED OR SNAPPED + HE EXAMINED THEM CAREFULLY WITH HIS LENS AND THEN SOME DIM AND VAGUE MARKS UPON THE EARTH BENEATH + FINALLY HE ASKED THE CHIEF CLERK TO CLOSE THE IRON SHUTTERS AND HE POINTED OUT TO ME THAT THEY HARDLY MET IN THE CENTRE AND THAT IT WOULD BE POSSIBLE FOR ANYONE OUTSIDE TO SEE WHAT WAS GOING ON WITHIN THE ROOM + THE INDICATIONS ARE RUINED BY THE THREE DAYS' DELAY + THEY MAY MEAN SOMETHING OR NOTHING + WELL WATSON I DO NOT THINK THAT WOOLWICH CAN HELP US FURTHER + IT IS A SMALL CROP WHICH WE HAVE GATHERED + LET US SEE IF WE CAN DO BETTER IN LONDON QUOTE + YET WE ADDED ONE MORE SHEAF TO OUR HARVEST BEFORE WE LEFT WOOLWICH STATION + THE CLERK IN THE TICKET OFFICE WAS ABLE TO SAY WITH CONFIDENCE THAT HE SAW CADOGAN WEST WHOM HE KNEW WELL BY SIGHT UPON THE MONDAY NIGHT AND THAT HE WENT TO LONDON BY THE EIGHT FIFTEEN TO LONDON BRIDGE + HE WAS ALONE AND TOOK A SINGLE THIRD CLASS TICKET + THE CLERK WAS STRUCK AT THE TIME BY HIS EXCITED AND NERVOUS MANNER + SO SHAKY WAS HE THAT HE COULD HARDLY PICK UP HIS CHANGE AND THE CLERK HAD HELPED HIM WITH IT + A REFERENCE TO THE TIMETABLE SHOWED THAT THE EIGHT FIFTEEN WAS THE FIRST TRAIN WHICH IT WAS POSSIBLE FOR WEST TO TAKE AFTER HE HAD LEFT THE LADY ABOUT SEVEN THIRTY + LET US RECONSTRUCT WATSON SAID HOLMES AFTER HALF AN HOUR OF SILENCE + I AM NOT AWARE THAT IN ALL OUR JOINT RESEARCHES WE HAVE EVER HAD A CASE WHICH WAS MORE DIFFICULT TO GET AT + EVERY FRESH ADVANCE WHICH WE MAKE ONLY REVEALS A FRESH RIDGE BEYOND + AND YET WE HAVE SURELY MADE SOME APPRECIABLE PROGRESS + THE EFFECT OF OUR INQUIRIES AT WOOLWICH HAS IN THE MAIN BEEN AGAINST YOUNG CADOGAN WEST BUT THE INDICATIONS AT THE WINDOW WOULD LEND THEMSELVES TO A MORE FAVOURABLE HYPOTHESIS + LET US SUPPOSE FOR EXAMPLE THAT HE HAD BEEN APPROACHED BY SOME FOREIGN AGENT + IT MIGHT HAVE BEEN DONE UNDER SUCH PLEDGES AS WOULD HAVE PREVENTED HIM FROM SPEAKING OF IT AND YET WOULD HAVE AFFECTED HIS THOUGHTS IN THE DIRECTION INDICATED BY HIS REMARKS TO HIS FIANCEE + VERY GOOD + WE WILL NOW SUPPOSE THAT AS HE WENT TO THE THEATRE WITH THE YOUNG LADY HE SUDDENLY IN THE FOG CAUGHT A GLIMPSE OF THIS SAME AGENT GOING IN THE DIRECTION OF THE OFFICE + HE WAS AN IMPETUOUS MAN QUICK IN HIS DECISIONS + EVERYTHING GAVE WAY TO HIS DUTY + HE FOLLOWED THE MAN REACHED THE WINDOW SAW THE ABSTRACTION OF THE DOCUMENTS AND PURSUED THE THIEF + IN THIS WAY WE GET OVER THE OBJECTION THAT NO ONE WOULD TAKE ORIGINALS WHEN HE COULD MAKE COPIES + THIS OUTSIDER HAD TO TAKE ORIGINALS + SO FAR IT HOLDS TOGETHER + WHAT IS THE NEXT STEP + QUOTE THEN WE COME INTO DIFFICULTIES + ONE WOULD IMAGINE THAT UNDER SUCH CIRCUMSTANCES THE FIRST ACT OF YOUNG CADOGAN WEST WOULD BE TO SEIZE THE VILLAIN AND RAISE THE ALARM + WHY DID HE NOT DO SO + COULD IT HAVE BEEN AN OFFICIAL SUPERIOR WHO TOOK THE PAPERS + THAT WOULD EXPLAIN WEST'S CONDUCT + OR COULD THE CHIEF HAVE GIVEN WEST THE SLIP IN THE FOG AND WEST STARTED AT ONCE TO LONDON TO HEAD HIM OFF FROM HIS OWN ROOMS PRESUMING THAT HE KNEW WHERE THE ROOMS WERE + THE CALL MUST HAVE BEEN VERY PRESSING SINCE HE LEFT HIS GIRL STANDING IN THE FOG AND MADE NO EFFORT TO COMMUNICATE WITH HER + OUR SCENT RUNS COLD HERE AND THERE IS A VAST GAP BETWEEN EITHER HYPOTHESIS AND THE LAYING OF WEST'S BODY WITH SEVEN PAPERS IN HIS POCKET ON THE ROOF OF A METROPOLITAN TRAIN + MY INSTINCT NOW IS TO WORK FROM THE OTHER END + IF MYCROFT HAS GIVEN US THE LIST OF ADDRESSES WE MAY BE ABLE TO PICK OUR MAN AND FOLLOW TWO TRACKS INSTEAD OF ONE + SURELY ENOUGH A NOTE AWAITED US AT BAKER STREET + A GOVERNMENT MESSENGER HAD BROUGHT IT POST HASTE + HOLMES GLANCED AT IT AND THREW IT OVER TO ME + THERE ARE NUMEROUS SMALL FRY BUT FEW WHO WOULD HANDLE SO BIG AN AFFAIR + THE ONLY MEN WORTH CONSIDERING ARE ADOLPH MEYER OF THIRTEEN GREAT GEORGE STREET WESTMINSTER LOUIS LA ROTHIERE OF CAMPDEN MANSIONS NOTTING HILL AND HUGO OBERSTEIN THIRTEEN CAULFIELD GARDENS KENSINGTON + THE LATTER WAS KNOWN TO BE IN TOWN ON MONDAY AND IS NOW REPORTED AS HAVING LEFT + GLAD TO HEAR YOU HAVE SEEN SOME LIGHT + THE CABINET AWAITS YOUR FINAL REPORT WITH THE UTMOST ANXIETY + URGENT REPRESENTATIONS HAVE ARRIVED FROM THE VERY HIGHEST QUARTER + THE WHOLE FORCE OF THE STATE IS AT YOUR BACK IF YOU SHOULD NEED IT + MYCROFT + I'M AFRAID SAID HOLMES SMILING THAT ALL THE QUEEN'S HORSES AND ALL THE QUEEN'S MEN CANNOT AVAIL IN THIS MATTER + HE HAD SPREAD OUT HIS BIG MAP OF LONDON AND LEANED EAGERLY OVER IT + WELL WELL SAID HE PRESENTLY WITH AN EXCLAMATION OF SATISFACTION THINGS ARE TURNING A LITTLE IN OUR DIRECTION AT LAST + WHY WATSON I DO HONESTLY BELIEVE THAT WE ARE GOING TO PULL IT OFF AFTER ALL + HE SLAPPED ME ON THE SHOULDER WITH A SUDDEN BURST OF HILARITY + I AM GOING OUT NOW + IT IS ONLY A RECONNAISSANCE + I WILL DO NOTHING SERIOUS WITHOUT MY TRUSTED COMRADE AND BIOGRAPHER AT MY ELBOW + DO YOU STAY HERE AND THE ODDS ARE THAT YOU WILL SEE ME AGAIN IN AN HOUR OR TWO + IF TIME HANGS HEAVY GET FOOLSCAP AND A PEN ABD BEGIN YOUR NARRATIVE OF HOW WE SAVED THE STATE QUOTE + I FELT SOME REFLECTION OF HIS ELATION IN MY OWN MIND FOR I KNEW WELL THAT HE WOULD NOT DEPART SO FAR FROM HIS USUAL AUSTERITY OF DEMEANOUR UNLESS THERE WAS GOOD CAUSE FOR EXULTATION + ALL THE LONG NOVEMBER EVENING I WAITED FILLED WITH IMPATIENCE FOR HIS RETURN + AT LAST SHORTLY AFTER NINE O'CLOCK THERE ARRIVED A MESSENGER WITH A NOTE AM DINING AT GOLDINI'S RESTAURANT GLOUCESTER ROAD KENSINGTON + PLEASE COME AT ONCE AND JOIN ME THERE + BRING WITH YOU A JEMMY A DARK LANTERN A CHISEL AND A REVOLVER + S. H. + IT WAS A NICE EQUIPMENT FOR A RESPECTABLE CITIZEN TO CARRY THROUGH THE DIM FOG DRAPED STREETS + I STOWED THEM ALL DISCREETLY AWAY IN MY OVERCOAT AND DROVE STRAIGHT TO THE ADDRESS GIVEN + THERE SAT MY FRIEND AT A LITTLE ROUND TABLE NEAR THE DOOR OF THE GARISH ITALIAN RESTAURANT + HAVE YOU HAD SOMETHING TO EAT + THEN JOIN ME IN A COFFEE AND CURACAO + TRY ONE OF THE PROPRIETOR'S CIGARS + THEY ARE LESS POISONOUS THAN ONE WOULD EXPECT + HAVE YOU THE TOOLS + THEY ARE HERE IN MY OVERCOAT + EXCELLENT + LET ME GIVE YOU A SHORT SKETCH OF WHAT I HAVE DONE WITH SOME INDICATION OF WHAT WE ARE ABOUT TO DO + NOW IT MUST BE EVIDENT TO YOU WATSON THAT THIS YOUNG MAN'S BODY WAS PLACED ON THE ROOF OF THE TRAIN + THAT WAS CLEAR FROM THE INSTANT THAT I DETERMINED THE FACT THAT IT WAS FROM THE ROOF AND NOT FROM A CARRIAGE THAT HE HAD FALLEN + QUOTE COULD IT NOT HAVE BEEN DROPPED FROM A BRIDGE QUOTE + I SHOULD SAY IT WAS IMPOSSIBLE + IF YOU EXAMINE THE ROOFS YOU WILL FIND THAT THEY ARE SLIGHTLY ROUNDED AND THERE IS NO RAILING ROUND THEM + THEREFORE WE CAN SAY FOR CERTAIN THAT YOUNG CADOGAN WEST WAS PLACED ON IT + HOW COULD HE BE PLACED THERE + THAT WAS THE QUESTION WHICH WE HAD TO ANSWER + THERE IS ONLY ONE POSSIBLE WAY + YOU ARE AWARE THAT THE UNDERGROUND RUNS CLEAR OF TUNNELS AT SOME POINTS IN THE WEST END + I HAD A VAGUE MEMORY THAT AS I HAVE TRAVELLED BY IT I HAVE OCCASIONALLY SEEN WINDOWS JUST ABOVE MY HEAD + NOW SUPPOSE THAT A TRAIN HALTED UNDER SUCH A WINDOW WOULD THERE BE ANY DIFFICULTY IN LAYING A BODY UPON THE ROOF + QUOTE IT SEEMS MOST IMPROBABLE QUOTE + WE MUST FALL BACK UPON THE OLD AXIOM THAT WHEN ALL OTHER CONTINGENCIES FAIL WHATEVER REMAINS HOWEVER IMPROBABLE MUST BE THE TRUTH + HERE ALL OTHER CONTINGENCIES HAVE FAILED + WHEN I FOUND THAT THE LEADING INTERNATIONAL AGENT WHO HAD JUST LEFT LONDON LIVED IN A ROW OF HOUSES WHICH ABUTTED UPON THE UNDERGROUND I WAS SO PLEASED THAT YOU WERE A LITTLE ASTONISHED AT MY SUDDEN FRIVOLITY + OH THAT WAS IT WAS IT + YES THAT WAS IT + MR. HUGO OBERSTEIN OF THIRTEEN CAULFIELD GARDENS HAD BECOME MY OBJECTIVE + I BEGAN MY OPERATIONS AT GLOUCESTER ROAD STATION WHERE A VERY HELPFUL OFFICIAL WALKED WITH ME ALONG THE TRACK AND ALLOWED ME TO SATISFY MYSELF NOT ONLY THAT THE BACK STAIR WINDOWS OF CAULFIELD GARDENS OPEN ON THE LINE BUT THE EVEN MORE ESSENTIAL FACT THAT OWING TO THE INTERSECTION OF ONE OF THE LARGER RAILWAYS THE UNDERGROUND TRAINS ARE FREQUENTLY HELD MOTIONLESS FOR SOME MINUTES AT THAT VERY SPOT + QUOTE SPLENDID HOLMES + YOU HAVE GOT IT + SO FAR SO FAR WATSON + WE ADVANCE BUT THE GOAL IS AFAR + WELL HAVING SEEN THE BACK OF CAULFIELD GARDENS I VISITED THE FRONT AND SATISFIED MYSELF THAT THE BIRD WAS INDEED FLOWN + IT IS A CONSIDERABLE HOUSE UNFURNISHED SO FAR AS I COULD JUDGE IN THE UPPER ROOMS + OBERSTEIN LIVED THERE WITH A SINGLE VALET WHO WAS PROBABLY A CONFEDERATE ENTIRELY IN HIS CONFIDENCE + WE MUST BEAR IN MIND THAT OBERSTEIN HAS GONE TO THE CONTINENT TO DISPOSE OF HIS BOOTY BUT NOT WITH ANY IDEA OF FLIGHT FOR HE HAD NO REASON TO FEAR A WARRANT AND THE IDEA OF AN AMATEUR DOMICILIARY VISIT WOULD CERTAINLY NEVER OCCUR TO HIM + YET THAT IS PRECISELY WHAT WE ARE ABOUT TO MAKE + COULD WE NOT GET A WARRANT AND LEGALIZE IT + HARDLY ON THE EVIDENCE + QUOTE WHAT CAN WE HOPE TO DO QUOTE + WE CANNOT TELL WHAT CORRESPONDENCE MAY BE THERE + I DON'T LIKE IT HOLMES + MY DEAR FELLOW YOU SHALL KEEP WATCH IN THE STREET + I'LL DO THE CRIMINAL PART + IT'S NOT A TIME TO STICK AT TRIFLES + THINK OF MYCROFT'S NOTE OF THE ADMIRALTY THE CABINET THE EXALTED PERSON WHO WAITS FOR NEWS + WE ARE BOUND TO GO + MY ANSWER WAS TO RISE FROM THE TABLE + YOU ARE RIGHT HOLMES + WE ARE BOUND TO GO QUOTE + HE SPRANG UP AND SHOOK ME BY THE HAND + I KNEW YOU WOULD NOT SHRINK AT THE LAST SAID HE AND FOR A MOMENT I SAW SOMETHING IN HIS EYES WHICH WAS NEARER TO TENDERNESS THAN I HAD EVER SEEN + THE NEXT INSTANT HE WAS HIS MASTERFUL PRACTICAL SELF ONCE MORE + IT IS NEARLY HALF A MILE BUT THERE IS NO HURRY + LET US WALK SAID HE + DON'T DROP THE INSTRUMENTS I BEG + YOUR ARREST AS A SUSPICIOUS CHARACTER WOULD BE A MOST UNFORTUNATE COMPLICATION + CAULFIELD GARDENS WAS ONE OF THOSE LINES OF FLAT FACED PILLARED AND PORTICOED HOUSES WHICH ARE SO PROMINENT A PRODUCT OF THE MIDDLE VICTORIAN EPOCH IN THE WEST END OF LONDON + NEXT DOOR THERE APPEARED TO BE A CHILDREN'S PARTY FOR THE MERRY BUZZ OF YOUNG VOICES AND THE CLATTER OF A PIANO RESOUNDED THROUGH THE NIGHT + THE FOG STILL HUNG ABOUT AND SCREENED US WITH ITS FRIENDLY SHADE + HOLMES HAD LIT HIS LANTERN AND FLASHED IT UPON THE MASSIVE DOOR + QUOTE THIS IS A SERIOUS PROPOSITION QUOTE SAID HE + IT IS CERTAINLY BOLTED AS WELL AS LOCKED + WE WOULD DO BETTER IN THE AREA + THERE IS AN EXCELLENT ARCHWAY DOWN YONDER IN CASE A TOO ZEALOUS POLICEMAN SHOULD INTRUDE + GIVE ME A HAND WATSON AND I'LL DO THE SAME FOR YOU + A MINUTE LATER WE WERE BOTH IN THE AREA + HARDLY HAD WE REACHED THE DARK SHADOWS BEFORE THE STEP OF THE POLICEMAN WAS HEARD IN THE FOG ABOVE + AS ITS SOFT RHYTHM DIED AWAY HOLMES SET TO WORK UPON THE LOWER DOOR + I SAW HIM STOOP AND STRAIN UNTIL WITH A SHARP CRASH IT FLEW OPEN + WE SPRANG THROUGH INTO THE DARK PASSAGE CLOSING THE AREA DOOR BEHIND US + HOLMES LED THE WAY UP THE CURVING UNCARPETED STAIR + HIS LITTLE FAN OF YELLOW LIGHT SHONE UPON A LOW WINDOW + HERE WE ARE WATSON THIS MUST BE THE ONE + HE THREW IT OPEN AND AS HE DID SO THERE WAS A LOW HARSH MURMUR GROWING STEADILY INTO A LOUD ROAR AS A TRAIN DASHED PAST US IN THE DARKNESS + HOLMES SWEPT HIS LIGHT ALONG THE WINDOW SILL + IT WAS THICKLY COATED WITH SOOT FROM THE PASSING ENGINES BUT THE BLACK SURFACE WAS BLURRED AND RUBBED IN PLACES + YOU CAN SEE WHERE THEY RESTED THE BODY + HALLOA WATSON WHAT IS THIS + THERE CAN BE NO DOUBT THAT IT IS A BLOOD MARK + HE WAS POINTING TO FAINT DISCOLOURATIONS ALONG THE WOODWORK OF THE WINDOW + QUOTE HERE IT IS ON THE STONE OF THE STAIR ALSO + THE DEMONSTRATION IS COMPLETE + LET US STAY HERE UNTIL A TRAIN STOPS + WE HAD NOT LONG TO WAIT + THE VERY NEXT TRAIN ROARED FROM THE TUNNEL AS BEFORE BUT SLOWED IN THE OPEN AND THEN WITH A CREAKING OF BRAKES PULLED UP IMMEDIATELY BENEATH US + IT WAS NOT FOUR FEET FROM THE WINDOW LEDGE TO THE ROOF OF THE CARRIAGES + HOLMES SOFTLY CLOSED THE WINDOW + SO FAR WE ARE JUSTIFIED SAID HE + WHAT DO YOU THINK OF IT WATSON + A MASTERPIECE + YOU HAVE NEVER RISEN TO A GREATER HEIGHT + QUOTE I CANNOT AGREE WITH YOU THERE + FROM THE MOMENT THAT I CONCEIVED THE IDEA OF THE BODY BEING UPON THE ROOF WHICH SURELY WAS NOT A VERY ABSTRUSE ONE ALL THE REST WAS INEVITABLE + IF IT WERE NOT FOR THE GRAVE INTERESTS INVOLVED THE AFFAIR UP TO THIS POINT WOULD BE INSIGNIFICANT + OUR DIFFICULTIES ARE STILL BEFORE US + BUT PERHAPS WE MAY FIND SOMETHING HERE WHICH MAY HELP US + WE HAD ASCENDED THE KITCHEN STAIR AND ENTERED THE SUITE OF ROOMS UPON THE FIRST FLOOR + ONE WAS A DINING ROOM SEVERELY FURNISHED AND CONTAINING NOTHING OF INTEREST + A SECOND WAS A BEDROOM WHICH ALSO DREW BLANK + THE REMAINING ROOM APPEARED MORE PROMISING AND MY COMPANION SETTLED DOWN TO A SYSTEMATIC EXAMINATION + IT WAS LITTERED WITH BOOKS AND PAPERS AND WAS EVIDENTLY USED AS A STUDY + SWIFTLY AND METHODICALLY HOLMES TURNED OVER THE CONTENTS OF DRAWER AFTER DRAWER AND CUPBOARD AFTER CUPBOARD BUT NO GLEAM OF SUCCESS CAME TO BRIGHTEN HIS AUSTERE FACE + AT THE END OF AN HOUR HE WAS NO FURTHER THAN WHEN HE STARTED + THE CUNNING DOG HAS COVERED HIS TRACKS SAID HE + HE HAS LEFT NOTHING TO INCRIMINATE HIM + HIS DANGEROUS CORRESPONDENCE HAS BEEN DESTROYED OR REMOVED + THIS IS OUR LAST CHANCE + IT WAS A SMALL TIN CASH BOX WHICH STOOD UPON THE WRITINGDESK + HOLMES PRIED IT OPEN WITH HIS CHISEL + SEVERAL ROLLS OF PAPER WERE WITHIN COVERED WITH FIGURES AND CALCULATIONS WITHOUT ANY NOTE TO SHOW TO WHAT THEY REFERRED + THE RECURRING WORDS WATER PRESSURE AND PRESSURE TO THE SQUARE INCH SUGGESTED SOME POSSIBLE RELATION TO A SUBMARINE + HOLMES TOSSED THEM ALL IMPATIENTLY ASIDE + THERE ONLY REMAINED AN ENVELOPE WITH SOME SMALL NEWSPAPER SLIPS INSIDE IT + HE SHOOK THEM OUT ON THE TABLE AND AT ONCE I SAW BY HIS EAGER FACE THAT HIS HOPES HAD BEEN RAISED + QUOTE WHAT'S THIS WATSON + EH + WHAT'S THIS + RECORD OF A SERIES OF MESSAGES IN THE ADVERTISEMENTS OF A PAPER + DAILY TELEGRAPH AGONY COLUMN BY THE PRINT AND PAPER + RIGHT HAND TOP CORNER OF A PAGE + NO DATES BUT MESSAGES ARRANGE THEMSELVES + THIS MUST BE THE FIRST HOPED TO HEAR SOONER + TERMS AGREED TO + WRITE FULLY TO ADDRESS GIVEN ON CARD + PIERROT + NEXT COMES TOO COMPLEX FOR DESCRIPTION + MUST HAVE FULL REPORT + STUFF AWAITS YOU WHEN GOODS DELIVERED + PIERROT + THEN COMES MATTER PRESSES + MUST WITHDRAW OFFER UNLESS CONTRACT COMPLETED + MAKE APPOINTMENT BY LETTER + WILL CONFIRM BY ADVERTISEMENT + PIERROT + FINALLY MONDAY NIGHT AFTER NINE + TWO TAPS + ONLY OURSELVES + DO NOT BE SO SUSPICIOUS + PAYMENT IN HARD CASH WHEN GOODS DELIVERED + PIERROT + A FAIRLY COMPLETE RECORD WATSON + IF WE COULD ONLY GET AT THE MAN AT THE OTHER END QUOTE + HE SAT LOST IN THOUGHT TAPPING HIS FINGERS ON THE TABLE + FINALLY HE SPRANG TO HIS FEET + WELL PERHAPS IT WON'T BE SO DIFFICULT AFTER ALL + THERE IS NOTHING MORE TO BE DONE HERE WATSON + I THINK WE MIGHT DRIVE ROUND TO THE OFFICES OF THE DAILY TELEGRAPH AND SO BRING A GOOD DAY'S WORK TO A CONCLUSION + MYCROFT HOLMES AND LESTRADE HAD COME ROUND BY APPOINTMENT AFTER BREAKFAST NEXT DAY AND SHERLOCK HOLMES HAD RECOUNTED TO THEM OUR PROCEEDINGS OF THE DAY BEFORE + THE PROFESSIONAL SHOOK HIS HEAD OVER OUR CONFESSED BURGLARY + WE CAN'T DO THESE THINGS IN THE FORCE MR. HOLMES SAID HE + NO WONDER YOU GET RESULTS THAT ARE BEYOND US + BUT SOME OF THESE DAYS YOU'LL GO TOO FAR AND YOU'LL FIND YOURSELF AND YOUR FRIEND IN TROUBLE + QUOTE FOR ENGLAND HOME AND BEAUTY EH WATSON + MARTYRS ON THE ALTAR OF OUR COUNTRY + BUT WHAT DO YOU THINK OF IT MYCROFT + EXCELLENT SHERLOCK + ADMIRABLE + BUT WHAT USE WILL YOU MAKE OF IT + HOLMES PICKED UP THE DAILY TELEGROPH WHICH LAY UPON THE TABLE + HAVE YOU SEEN PIERROT'S ADVERTISEMENT TO DAY + WHAT + ANOTHER ONE QUOTE + YES HERE IT IS TO NIGHT + SAME HOUR + SAME PLACE + TWO TAPS + MOST VITALLY IMPORTANT + YOUR OWN SAFETY AT STAKE + PIERROT + BY GEORGE CRIED LESTRADE + IF HE ANSWERS THAT WE'VE GOT HIM + THAT WAS MY IDEA WHEN I PUT IT IN + I THINK IF YOU COULD BOTH MAKE IT CONVENIENT TO COME WITH US ABOUT EIGHT O'CLOCK TO CAULFIELD GARDENS WE MIGHT POSSIBLY GET A LITTLE NEARER TO A SOLUTION + ONE OF THE MOST REMARKABLE CHARACTERISTICS OF SHERLOCK HOLMES WAS HIS POWER OF THROWING HIS BRAIN OUT OF ACTION AND SWITCHING ALL HIS THOUGHTS ON TO LIGHTER THINGS WHENEVER HE HAD CONVINCED HIMSELF THAT HE COULD NO LONGER WORK TO ADVANTAGE + I REMEMBER THAT DURING THE WHOLE OF THAT MEMORABLE DAY HE LOST HIMSELF IN A MONOGRAPH WHICH HE HAD UNDERTAKEN UPON THE POLYPHONIC MOTETS OF LASSUS + FOR MY OWN PART ONE HAD NONE OF THIS POWER OF DETACHMENT AND THE DAY IN CONSEQUENCE APPEARED TO BE INTERMINABLE + THE GREAT NATIONAL IMPORTANCE OF THE ISSUE THE SUSPENSE IN HIGH QUARTERS THE DIRECT NATURE OF THE EXPERIMENT WHICH WE WERE TRYING ALL COMBINED TO WORK UPON MY NERVE + IT WAS A RELIEF TO ME WHEN AT LAST AFTER A LIGHT DINNER WE SET OUT UPON OUR EXPEDITION + LESTRADE AND MYCROFT MET US BY APPOINTMENT AT THE OUTSIDE OF GLOUCESTER ROAD STATION + THE AREA DOOR OF OBERSTEIN'S HOUSE HAD BEEN LEFT OPEN THE NIGHT BEFORE AND IT WAS NECESSARY FOR ME AS MYCROFT HOLMES ABSOLUTELY AND INDIGNANTLY DECLINED TO CLIMB THE RAILINGS TO PASS IN AND OPEN THE HALL DOOR + BY NINE O'CLOCK WE WERE ALL SEATED IN THE STUDY WAITING PATIENTLY FOR OUR MAN + AN HOUR PASSED AND YET ANOTHER + WHEN ELEVEN STRUCK THE MEASURED BEAT OF THE GREAT CHURCH CLOCK SEEMED TO SOUND THE DIRGE OF OUR HOPES + LESTRADE AND MYCROFT WERE FIDGETING IN THEIR SEATS AND LOOKING TWICE A MINUTE AT THEIR WATCHES + HOLMES SAT SILENT AND COMPOSED HIS EYELIDS HALF SHUT BUT EVERY SENSE ON THE ALERT + HE RAISED HIS HEAD WITH A SUDDEN JERK + QUOTE HE IS COMING QUOTE SAID HE + THERE HAD BEEN A FURTIVE STEP PAST THE DOOR + NOW IT RETURNED + WE HEARD A SHUFFLING SOUND OUTSIDE AND THEN TWO SHARP TAPS WITH THE KNOCKER + HOLMES ROSE MOTIONING TO US TO REMAIN SEATED + THE GAS IN THE HALL WAS A MERE POINT OF LIGHT + HE OPENED THE OUTER DOOR AND THEN AS A DARK FIGURE SLIPPED PAST HIM HE CLOSED AND FASTENED IT + THIS WAY WE HEARD HIM SAY AND A MOMENT LATER OUR MAN STOOD BEFORE US + HOLMES HAD FOLLOWED HIM CLOSELY AND AS THE MAN TURNED WITH A CRY OF SURPRISE AND ALARM HE CAUGHT HIM BY THE COLLAR AND THREW HIM BACK INTO THE ROOM + BEFORE OUR PRISONER HAD RECOVERED HIS BALANCE THE DOOR WAS SHUT AND HOLMES STANDING WITH HIS BACK AGAINST IT + THE MAN GLARED ROUND HIM STAGGERED AND FELL SENSELESS UPON THE FLOOR + WITH THE SHOCK HIS BROAD BRIMMED HAT FLEW FROM HIS HEAD HIS CRAVAT SLIPPED DOWN FROM HIS LIPS AND THERE WERE THE LONG LIGHT BEARD AND THE SOFT HANDSOME DELICATE FEATURES OF COLONEL VALENTINE WALTER + HOLMES GAVE A WHISTLE OF SURPRISE + YOU CAN WRITE ME DOWN AN ASS THIS TIME WATSON SAID HE + THIS WAS NOT THE BIRD THAT I WAS LOOKING FOR + WHO IS HE ASKED MYCROFT EAGERLY + THE YOUNGER BROTHER OF THE LATE SIR JAMES WALTER THE HEAD OF THE SUBMARINE DEPARTMENT + YES YES I SEE THE FALL OF THE CARDS + HE IS COMING TO + I THINK THAT YOU HAD BEST LEAVE HIS EXAMINATION TO ME QUOTE + WE HAD CARRIED THE PROSTRATE BODY TO THE SOFA + NOW OUR PRISONER SAT UP LOOKED ROUND HIM WITH A HORROR STRICKEN FACE AND PASSED HIS HAND OVER HIS FOREHEAD LIKE ONE WHO CANNOT BELIEVE HIS OWN SENSES + WHAT IS THIS HE ASKED + I CAME HERE TO VISIT MR. OBERSTEIN + EVERYTHING IS KNOWN COLONEL WALTER SAID HOLMES + HOW AN ENGLISH GENTLEMAN COULD BEHAVE IN SUCH A MANNER IS BEYOND MY COMPREHENSION + BUT YOUR WHOLE CORRESPONDENCE AND RELATIONS WITH OBERSTEIN ARE WITHIN OUR KNOWLEDGE + SO ALSO ARE THE CIRCUMSTANCES CONNECTED WITH THE DEATH OF YOUNG CADOGAN WEST + LET ME ADVISE YOU TO GAIN AT LEAST THE SMALL CREDIT FOR REPENTANCE AND CONFESSION SINCE THERE ARE STILL SOME DETAILS WHICH WE CAN ONLY LEARN FROM YOUR LIPS + THE MAN GROANED AND SANK HIS FACE IN HIS HANDS + WE WAITED BUT HE WAS SILENT + QUOTE I CAN ASSURE YOU QUOTE SAID HOLMES QUOTE THAT EVERY ESSENTIAL IS ALREADY KNOWN + WE KNOW THAT YOU WERE PRESSED FOR MONEY THAT YOU TOOK AN IMPRESS OF THE KEYS WHICH YOUR BROTHER HELD AND THAT YOU ENTERED INTO A CORRESPONDENCE WITH OBERSTEIN WHO ANSWERED YOUR LETTERS THROUGH THE ADVERTISEMENT COLUMNS OF THE DAILY TELEGRAPH + WE ARE AWARE THAT YOU WENT DOWN TO THE OFFICE IN THE FOG ON MONDAY NIGHT BUT THAT YOU WERE SEEN AND FOLLOWED BY YOUNG CADOGAN WEST WHO HAD PROBABLY SOME PREVIOUS REASON TO SUSPECT YOU + HE SAW YOUR THEFT BUT COULD NOT GIVE THE ALARM AS IT WAS JUST POSSIBLE THAT YOU WERE TAKING THE PAPERS TO YOUR BROTHER IN LONDON + LEAVING ALL HIS PRIVATE CONCERNS LIKE THE GOOD CITIZEN THAT HE WAS HE FOLLOWED YOU CLOSELY IN THE FOG AND KEPT AT YOUR HEELS UNTIL YOU REACHED THIS VERY HOUSE + THERE HE INTERVENED AND THEN IT WAS COLONEL WALTER THAT TO TREASON YOU ADDED THE MORE TERRIBLE CRIME OF MURDER + I DID NOT + I DID NOT + BEFORE GOD ONE SWEAR THAT I DID NOT CRIED OUR WRETCHED PRISONER + TELL US THEN HOW CADOGAN WEST MET HIS END BEFORE YOU LAID HIM UPON THE ROOF OF A RAILWAY CARRIAGE + I WILL + I SWEAR TO YOU THAT I WILL + I DID THE REST + I CONFESS IT + IT WAS JUST AS YOU SAY + A STOCK EXCHANGE DEBT HAD TO BE PAID + I NEEDED THE MONEY BADLY + OBERSTEIN OFFERED ME FIVE THOUSAND + IT WAS TO SAVE MYSELF FROM RUIN + BUT AS TO MURDER I AM AS INNOCENT AS YOU QUOTE + WHAT HAPPENED THEN + HE HAD HIS SUSPICIONS BEFORE AND HE FOLLOWED ME AS YOU DESCRIBE + I NEVER KNEW IT UNTIL I WAS AT THE VERY DOOR + IT WAS THICK FOG AND ONE COULD NOT SEE THREE YARDS + I HAD GIVEN TWO TAPS AND OBERSTEIN HAD COME TO THE DOOR + THE YOUNG MAN RUSHED UP AND DEMANDED TO KNOW WHAT WE WERE ABOUT TO DO WITH THE PAPERS + OBERSTEIN HAD A SHORT LIFE PRESERVER + HE ALWAYS CARRIED IT WITH HIM + AS WEST FORCED HIS WAY AFTER US INTO THE HOUSE OBERSTEIN STRUCK HIM ON THE HEAD + THE BLOW WAS A FATAL ONE + HE WAS DEAD WITHIN FIVE MINUTES + THERE HE LAY IN THE HALL AND WE WERE AT OUR WIT'S END WHAT TO DO + THEN OBERSTEIN HAD THIS IDEA ABOUT THE TRAINS WHICH HALTED UNDER HIS BACK WINDOW + BUT FIRST HE EXAMINED THE PAPERS WHICH I HAD BROUGHT + HE SAID THAT THREE OF THEM WERE ESSENTIAL AND THAT HE MUST KEEP THEM + YOU CANNOT KEEP THEM SAID I. THERE WILL BE A DREADFUL ROW AT WOOLWICH IF THEY ARE NOT RETURNED + I MUST KEEP THEM SAID HE FOR THEY ARE SO TECHNICAL THAT IT IS IMPOSSIBLE IN THE TIME TO MAKE COPIES + THEN THEY MUST ALL GO BACK TOGETHER TONIGHT SAID I. HE THOUGHT FOR A LITTLE AND THEN HE CRIED OUT THAT HE HAD IT + THREE I WILL KEEP SAID HE + THE OTHERS WE WILL STUFF INTO THE POCKET OF THIS YOUNG MAN + WHEN HE IS FOUND THE WHOLE BUSINESS WILL ASSUREDLY BE PUT TO HIS ACCOUNT + I COULD SEE NO OTHER WAY OUT OF IT SO WE DID AS HE SUGGESTED + WE WAITED HALF AN HOUR AT THE WINDOW BEFORE A TRAIN STOPPED + IT WAS SO THICK THAT NOTHING COULD BE SEEN AND WE HAD NO DIFFICULTY IN LOWERING WEST'S BODY ON TO THE TRAIN + THAT WAS THE END OF THE MATTER SO FAR AS I WAS CONCERNED + AND YOUR BROTHER + HE SAID NOTHING BUT HE HAD CAUGHT ME ONCE WITH HIS KEYS AND I THINK THAT HE SUSPECTED + I READ IN HIS EYES THAT HE SUSPECTED + AS YOU KNOW HE NEVER HELD UP HIS HEAD AGAIN QUOTE + THERE WAS SILENCE IN THE ROOM + IT WAS BROKEN BY MYCROFT HOLMES + CAN YOU NOT MAKE REPARATION + IT WOULD EASE YOUR CONSCIENCE AND POSSIBLY YOUR PUNISHMENT + WHAT REPARATION CAN I MAKE + WHERE IS OBERSTEIN WITH THE PAPERS + I DO NOT KNOW + QUOTE DID HE GIVE YOU NO ADDRESS QUOTE + HE SAID THAT LETTERS TO THE HOTEL DU LOUVRE PARIS WOULD EVENTUALLY REACH HIM + THEN REPARATION IS STILL WITHIN YOUR POWER SAID SHERLOCK HOLMES + I WILL DO ANYTHING I CAN + I OWE THIS FELLOW NO PARTICULAR GOOD WILL + HE HAS BEEN MY RUIN AND MY DOWNFALL + HERE ARE PAPER AND PEN + SIT AT THIS DESK AND WRITE TO MY DICTATION + DIRECT THE ENVELOPE TO THE ADDRESS GIVEN + THAT IS RIGHT + NOW THE LETTER QUOTE DEAR SIR QUOTE WITH REGARD TO OUR TRANSACTION YOU WILL NO DOUBT HAVE OBSERVED BY NOW THAT ONE ESSENTIAL DETAIL IS MISSING + I HAVE A TRACING WHICH WILL MAKE IT COMPLETE + THIS HAS INVOLVED ME IN EXTRA TROUBLE HOWEVER AND I MUST ASK YOU FOR A FURTHER ADVANCE OF FIVE HUNDRED POUNDS + I WILL NOT TRUST IT TO THE POST NOR WILL I TAKE ANYTHING BUT GOLD OR NOTES + I WOULD COME TO YOU ABROAD BUT IT WOULD EXCITE REMARK IF I LEFT THE COUNTRY AT PRESENT + THEREFORE I SHALL EXPECT TO MEET YOU IN THE SMOKING ROOM OF THE CHARING CROSS HOTEL AT NOON ON SATURDAY + REMEMBER THAT ONLY ENGLISH NOTES OR GOLD WILL BE TAKEN + THAT WILL DO VERY WELL + I SHALL BE VERY MUCH SURPRISED IF IT DOES NOT FETCH OUR MAN + AND IT DID + IT IS A MATTER OF HISTORY THAT SECRET HISTORY OF A NATION WHICH IS OFTEN SO MUCH MORE INTIMATE AND INTERESTING THAN ITS PUBLIC CHRONICLES THAT OBERSTEIN EAGER TO COMPLETE THE COUP OF HIS LIFETIME CAME TO THE LURE AND WAS SAFELY ENGULFED FOR FIFTEEN YEARS IN A BRITISH PRISON + IN HIS TRUNK WERE FOUND THE INVALUABLE BRUCE PARTINGTON PLANS WHICH HE HAD PUT UP FOR AUCTION IN ALL THE NAVAL CENTRES OF EUROPE + COLONEL WALTER DIED IN PRISON TOWARDS THE END OF THE SECOND YEAR OF HIS SENTENCE + AS TO HOLMES HE RETURNED REFRESHED TO HIS MONOGRAPH UPON THE POLYPHONIC MOTETS OF LASSUS WHICH HAS SINCE BEEN PRINTED FOR PRIVATE CIRCULATION AND IS SAID BY EXPERTS TO BE THE LAST WORD UPON THE SUBJECT + SOME WEEKS AFTERWARDS I LEARNED INCIDENTALLY THAT MY FRIEND SPENT A DAY AT WINDSOR WHENCE HE RETURNED WITH A REMARKABLY FINE EMERALD TIE PIN + WHEN I ASKED HIM IF HE HAD BOUGHT IT HE ANSWERED THAT IT WAS A PRESENT FROM A CERTAIN GRACIOUS LADY IN WHOSE INTERESTS HE HAD ONCE BEEN FORTUNATE ENOUGH TO CARRY OUT A SMALL COMMISSION + HE SAID NO MORE BUT I FANCY THAT I COULD GUESS AT THAT LADY'S AUGUST NAME AND I HAVE LITTLE DOUBT THAT THE EMERALD PIN WILL FOREVER RECALL TO MY FRIEND'S MEMORY THE ADVENTURE OF THE BRUCE PARTINGTON PLANS diff --git a/samples/LMTutorial/train/cardboard_box.txt b/samples/LMTutorial/train/cardboard_box.txt new file mode 100755 index 0000000..0a136f7 --- /dev/null +++ b/samples/LMTutorial/train/cardboard_box.txt @@ -0,0 +1,499 @@ + IN CHOOSING A FEW TYPICAL CASES WHICH ILLUSTRATE THE REMARKABLE MENTAL QUALITIES OF MY FRIEND SHERLOCK HOLMES I HAVE ENDEAVOURED AS FAR AS POSSIBLE TO SELECT THOSE WHICH PRESENTED THE MINIMUM OF SENSATIONALISM WHILE OFFERING A FAIR FIELD FOR HIS TALENTS + IT IS HOWEVER UNFORTUNATELY IMPOSSIBLE ENTIRELY TO SEPARATE THE SENSATIONAL FROM THE CRIMINAL AND A CHRONICLER IS LEFT IN THE DILEMMA THAT HE MUST EITHER SACRIFICE DETAILS WHICH ARE ESSENTIAL TO HIS STATEMENT AND SO GIVE A FALSE IMPRESSION OF THE PROBLEM OR HE MUST USE MATTER WHICH CHANCE AND NOT CHOICE HAS PROVIDED HIM WITH + WITH THIS SHORT PREFACE I SHALL TURN TO MY NOTES OF WHAT PROVED TO BE A STRANGE THOUGH A PECULIARLY TERRIBLE CHAIN OF EVENTS + IT WAS A BLAZING HOT DAY IN AUGUST + BAKER STREET WAS LIKE AN OVEN AND THE GLARE OF THE SUNLIGHT UPON THE YELLOW BRICKWORK OF THE HOUSE ACROSS THE ROAD WAS PAINFUL TO THE EYE + IT WAS HARD TO BELIEVE THAT THESE WERE THE SAME WALLS WHICH LOOMED SO GLOOMILY THROUGH THE FOGS OF WINTER + OUR BLINDS WERE HALF DRAWN AND HOLMES LAY CURLED UPON THE SOFA READING AND RE READING A LETTER WHICH HE HAD RECEIVED BY THE MORNING POST + FOR MYSELF MY TERM OF SERVICE IN INDIA HAD TRAINED ME TO STAND HEAT BETTER THAN COLD AND A THERMOMETER AT NINETY WAS NO HARDSHIP + BUT THE MORNING PAPER WAS UNINTERESTING + PARLIAMENT HAD RISEN + EVERYBODY WAS OUT OF TOWN AND I YEARNED FOR THE GLADES OF THE NEW FOREST OR THE SHINGLE OF SOUTHSEA + A DEPLETED BANK ACCOUNT HAD CAUSED ME TO POSTPONE MY HOLIDAY AND AS TO MY COMPANION NEITHER THE COUNTRY NOR THE SEA PRESENTED THE SLIGHTEST ATTRACTION TO HIM + HE LOVED TO LIE IN THE VERY CENTRE OF FIVE MILLIONS OF PEOPLE WITH HIS FILAMENTS STRETCHING OUT AND RUNNING THROUGH THEM RESPONSIVE TO EVERY LITTLE RUMOUR OR SUSPICION OF UNSOLVED CRIME + APPRECIATION OF NATURE FOUND NO PLACE AMONG HIS MANY GIFTS AND HIS ONLY CHANGE WAS WHEN HE TURNED HIS MIND FROM THE EVIL DOER OF THE TOWN TO TRACK DOWN HIS BROTHER OF THE COUNTRY + FINDING THAT HOLMES WAS TOO ABSORBED FOR CONVERSATION I HAD TOSSED ASIDE THE BARREN PAPER AND LEANING BACK IN MY CHAIR I FELL INTO A BROWN STUDY + SUDDENLY MY COMPANION'S VOICE BROKE IN UPON MY THOUGHTS + QUOTE YOU ARE RIGHT WATSON QUOTE SAID HE + IT DOES SEEM A MOST PREPOSTEROUS WAY OF SETTLING A DISPUTE + MOST PREPOSTEROUS + I EXCLAIMED AND THEN SUDDENLY REALIZING HOW HE HAD ECHOED THE INMOST THOUGHT OF MY SOUL I SAT UP IN MY CHAIR AND STARED AT HIM IN BLANK AMAZEMENT + WHAT IS THIS HOLMES + I CRIED + THIS IS BEYOND ANYTHING WHICH I COULD HAVE IMAGINED + HE LAUGHED HEARTILY AT MY PERPLEXITY + YOU REMEMBER SAID HE THAT SOME LITTLE TIME AGO WHEN I READ YOU THE PASSAGE IN ONE OF POE'S SKETCHES IN WHICH A CLOSE REASONER FOLLOWS THE UNSPOKEN THOUGHTS OF HIS COMPANION YOU WERE INCLINED TO TREAT THE MATTER AS A MERE TOUR DE FORCE OF THE AUTHOR + ON MY REMARKING THAT I WAS CONSTANTLY IN THE HABIT OF DOING THE SAME THING YOU EXPRESSED INCREDULITY QUOTE + OH NO + PERHAPS NOT WITH YOUR TONGUE MY DEAR WATSON BUT CERTAINLY WITH YOUR EYEBROWS + SO WHEN I SAW YOU THROW DOWN YOUR PAPER AND ENTER UPON A TRAIN OF THOUGHT I WAS VERY HAPPY TO HAVE THE OPORTUNITY OF READING IT OFF AND EVENTUALLY OF BREAKING INTO IT AS A PROOF THAT I HAD BEEN IN RAPPORT WITH YOU + BUT I WAS STILL FAR FROM SATISFIED + IN THE EXAMPLE WHICH YOU READ TO ME SAID I THE REASONER DREW HIS CONCLUSIONS FROM THE ACTIONS OF THE MAN WHOM HE OBSERVED + IF I REMEMBER RIGHT HE STUMBLED OVER A HEAP OF STONES LOOKED UP AT THE STARS AND SO ON + BUT I HAVE BEEN SEATED QUIETLY IN MY CHAIR AND WHAT CLUES CAN I HAVE GIVEN YOU + QUOTE YOU DO YOURSELF AN INJUSTICE + THE FEATURES ARE GIVEN TO MAN AS THE MEANS BY WHICH HE SHALL EXPRESS HIS EMOTIONS AND YOURS ARE FAITHFUL SERVANTS + DO YOU MEAN TO SAY THAT YOU READ MY TRAIN OF THOUGHTS FROM MY FEATURES + YOUR FEATURES AND ESPECIALLY YOUR EYES + PERHAPS YOU CANNOT YOURSELF RECALL HOW YOUR REVERIE COMMENCED + NO I CANNOT + QUOTE THEN I WILL TELL YOU + AFTER THROWING DOWN YOUR PAPER WHICH WAS THE ACTION WHICH DREW MY ATTENTION TO YOU YOU SAT FOR HALF A MINUTE WITH A VACANT EXPRESSION + THEN YOUR EYES FIXED THEMSELVES UPON YOUR NEWLY FRAMED PICTURE OF GENERAL GORDON AND I SAW BY THE ALTERATION IN YOUR FACE THAT A TRAIN OF THOUGHT HAD BEEN STARTED + BUT IT DID NOT LEAD VERY FAR + YOUR EYES FLASHED ACROSS TO THE UNFRAMED PORTRAIT OF HENRY WARD BEECHER WHICH STANDS UPON THE TOP OF YOUR BOOKS + THEN YOU GLANCED UP AT THE WALL AND OF COURSE YOUR MEANING WAS OBVIOUS + YOU WERE THINKING THAT IF THE PORTRAIT WERE FRAMED IT WOULD JUST COVER THAT BARE SPACE AND CORRESPOND WITH GORDON'S PICTURE OVER THERE + YOU HAVE FOLLOWED ME WONDERFULLY + I EXCLAIMED + SO FAR I COULD HARDLY HAVE GONE ASTRAY + BUT NOW YOUR THOUGHTS WENT BACK TO BEECHER AND YOU LOOKED HARD ACROSS AS IF YOU WERE STUDYING THE CHARACTER IN HIS FEATURES + THEN YOUR EYES CEASED TO PUCKER BUT YOU CONTINUED TO LOOK ACROSS AND YOUR FACE WAS THOUGHTFUL + YOU WERE RECALLING THE INCIDENTS OF BEECHER'S CAREER + I WAS WELL AWARE THAT YOU COULD NOT DO THIS WITHOUT THINKING OF THE MISSION WHICH HE UNDERTOOK ON BEHALF OF THE NORTH AT THE TIME OF THE CIVIL WAR FOR I REMEMBER YOUR EXPRESSING YOUR PASSIONATE INDIGNATION AT THE WAY IN WHICH HE WAS RECEIVED BY THE MORE TURBULENT OF OUR PEOPLE + YOU FELT SO STRONGLY ABOUT IT THAT I KNEW YOU COULD NOT THINK OF BEECHER WITHOUT THINKING OF THAT ALSO + WHEN A MOMENT LATER I SAW YOUR EYES WANDER AWAY FROM THE PICTURE I SUSPECTED THAT YOUR MIND HAD NOW TURNED TO THE CIVIL WAR AND WHEN I OBSERVED THAT YOUR LIPS SET YOUR EYES SPARKLED AND YOUR HANDS CLENCHED I WAS POSITIVE THAT YOU WERE INDEED THINKING OF THE GALLANTRY WHICH WAS SHOWN BY BOTH SIDES IN THAT DESPERATE STRUGGLE + BUT THEN AGAIN YOUR FACE GREW SADDER YOU SHOOK YOUR HEAD + YOU WERE DWELLING UPON THE SADNESS AND HORROR AND USELESS WASTE OF LIFE + YOUR HAND STOLE TOWARDS YOUR OWN OLD WOUND AND A SMILE QUIVERED ON YOUR LIPS WHICH SHOWED ME THAT THE RIDICULOUS SIDE OF THIS METHOD OF SETTLING INTERNATIONAL QUESTIONS HAD FORCED ITSELF UPON YOUR MIND + AT THIS POINT ONE AGREED WITH YOU THAT IT WAS PREPOSTEROUS AND WAS GLAD TO FIND THAT ALL MY DEDUCTIONS HAD BEEN CORRECT + ABSOLUTELY SAID I. AND NOW THAT YOU HAVE EXPLAINED IT I CONFESS THAT I AM AS AMAZED AS BEFORE + QUOTE IT WAS VERY SUPERFICIAL MY DEAR WATSON I ASSURE YOU + I SHOULD NOT HAVE INTRUDED IT UPON YOUR ATTENTION HAD YOU NOT SHOWN SOME INCREDULITY THE OTHER DAY + BUT I HAVE IN MY HANDS HERE A LITTLE PROBLEM WHICH MAY PROVE TO BE MORE DIFFICULT OF SOLUTION THAN MY SMALL ESSAY IN THOUGHT READING + HAVE YOU OBSERVED IN THE PAPER A SHORT PARAGRAPH REFERRING TO THE REMARKABLE CONTENTS OF A PACKET SENT THROUGH THE POST TO MISS CUSHING OF CROSS STREET CROYDON + NO I SAW NOTHING + AH THEN YOU MUST HAVE OVERLOOKED IT + JUST TOSS IT OVER TO ME + HERE IT IS UNDER THE FINANCIAL COLUMN + PERHAPS YOU WOULD BE GOOD ENOUGH TO READ IT ALOUD + I PICKED UP THE PAPER WHICH HE HAD THROWN BACK TO ME AND READ THE PARAGRAPH INDICATED + IT WAS HEADED A GRUESOME PACKET + QUOTE MISS SUSAN CUSHING LIVING AT CROSS STREET CROYDON HAS BEEN MADE THE VICTIM OF WHAT MUST BE REGARDED AS A PECULIARLY REVOLTING PRACTICAL JOKE UNLESS SOME MORE SINISTER MEANING SHOULD PROVE TO BE ATTACHED TO THE INCIDENT + AT TWO O'CLOCK YESTERDAY AFTERNOON A SMALL PACKET WRAPPED IN BROWN PAPER WAS HANDED IN BY THE POSTMAN + A CARDBOARD BOX WAS INSIDE WHICH WAS FILLED WITH COARSE SALT + ON EMPTYING THIS MISS CUSHING WAS HORRIFIED TO FIND TWO HUMAN EARS APPARENTLY QUITE FRESHLY SEVERED + THE BOX HAD BEEN SENT BY PARCEL POST FROM BELFAST UPON THE MORNING BEFORE + THERE IS NO INDICATION AS TO THE SENDER AND THE MATTER IS THE MORE MYSTERIOUS AS MISS CUSHING WHO IS A MAIDEN LADY OF FIFTY HAS LED A MOST RETIRED LIFE AND HAS SO FEW ACQUAINTANCES OR CORRESPONDENTS THAT IT IS A RARE EVENT FOR HER TO RECEIVE ANYTHING THROUGH THE POST + SOME YEARS AGO HOWEVER WHEN SHE RESIDED AT PENGE SHE LET APART MENTS IN HER HOUSE TO THREE YOUNG MEDICAL STUDENTS WHOM SHE WAS OBLIGED TO GET RID OF ON ACCOUNT OF THEIR NOISY AND IRREGULAR HABITS + THE POLICE ARE OF OPINION THAT THIS OUTRAGE MAY HAVE BEEN PERPETRATED UPON MISS CUSH ING BY THESE YOUTHS WHO OWED HER A GRUDGE AND WHO HOPED TO FRIGHTEN HER BY SENDING HER THESE RELICS OF THE DISSECTING ROOMS + SOME PROBABILITY IS LENT TO THE THEORY BY THE FACT THAT ONE OF THESE STUDENTS CAME FROM THE NORTH OF IRELAND AND TO THE BEST OF MISS CUSHING'S BELIEF FROM BELFAST + IN THE MEANTIME THE MATTER IS BEING ACTIVELY INVESTIGATED MR. LESTRADE ONE OF THE VERY SMART EST OF OUR DETECTIVE OFFICERS BEING IN CHARGE OF THE CASE + SO MUCH FOR THE DAILY CHRONICLE SAID HOLMES AS I FINISHED READING + NOW FOR OUR FRIEND LESTRADE + I HAD A NOTE FROM HIM THIS MORNING IN WHICH HE SAYS I THINK THAT THIS CASE IS VERY MUCH IN YOUR LINE + WE HAVE EVERY HOPE OF CLEARING THE MATTER UP BUT WE FIND A LITTLE DIFFICULTY IN GETTING ANYTHING TO WORK UPON + WE HAVE OF COURSE WIRED TO THE BELFAST POST OFFICE BUT A LARGE NUMBER OF PARCELS WERE HANDED IN UPON THAT DAY AND THEY HAVE NO MEANS OF IDENTIFYING THIS PARTICULAR ONE OR OF REMEMBERING THE SENDER + THE BOX IS A HALF POUND BOX OF HONEYDEW TOBACCO AND DOES NOT HELP US IN ANY WAY + THE MEDICAL STUDENT THEORY STILL APPEARS TO ME TO BE THE MOST FEASIBLE BUT IF YOU SHOULD HAVE A FEW HOURS TO SPARE I SHOULD BE VERY HAPPY TO SEE YOU OUT HERE + I SHALL BE EITHER AT THE HOUSE OR IN THE POLICE STATION ALL DAY + WHAT SAY YOU WATSON + CAN YOU RISE SUPERIOR TO THE HEAT AND RUN DOWN TO CROYDON WITH ME ON THE OFF CHANCE OF A CASE FOR YOUR ANNALS + QUOTE I WAS LONGING FOR SOMETHING TO DO QUOTE + YOU SHALL HAVE IT THEN + RING FOR OUR BOOTS AND TELL THEM TO ORDER A CAB + I'LL BE BACK IN A MOMENT WHEN I HAVE CHANGED MY DRESSING GOWN AND FILLED MY CIGAR CASE + A SHOWER OF RAIN FELL WHILE WE WERE IN THE TRAIN AND THE HEAT WAS FAR LESS OPPRESSIVE IN CROYDON THAN IN TOWN + HOLMES HAD SENT ON A WIRE SO THAT LESTRADE AS WIRY AS DAPPER AND AS FERRET LIKE AS EVER WAS WAITING FOR US AT THE STATION + A WALK OF FIVE MINUTES TOOK US TO CROSS STREET WHERE MISS CUSHING RESIDED + IT WAS A VERY LONG STREET OF TWO STORY BRICK HOUSES NEAT AND PRIM WITH WHITENED STONE STEPS AND LITTLE GROUPS OF APRONED WOMEN GOSSIPING AT THE DOORS + HALFWAY DOWN LESTRADE STOPPED AND TAPPED AT A DOOR WHICH WAS OPENED BY A SMALL SERVANT GIRL + MISS CUSHING WAS SITTING IN THE FRONT ROOM INTO WHICH WE WERE USHERED + SHE WAS A PLACID FACED WOMAN WITH LARGE GENTLE EYES AND GRIZZLED HAIR CURVING DOWN OVER HER TEMPLES ON EACH SIDE + A WORKED ANTIMACASSAR LAY UPON HER LAP AND A BASKET OF COLOURED SILKS STOOD UPON A STOOL BESIDE HER + THEY ARE IN THE OUTHOUSE THOSE DREADFUL THINGS SAID SHE AS LESTRADE ENTERED + I WISH THAT YOU WOULD TAKE THEM AWAY ALTOGETHER + SO I SHALL MISS CUSHING + I ONLY KEPT THEM HERE UNTIL MY FRIEND MR. HOLMES SHOULD HAVE SEEN THEM IN YOUR PRESENCE QUOTE + WHY IN MY PRESENCE SIR + IN CASE HE WISHED TO ASK ANY QUESTIONS + WHAT IS THE USE OF ASKING ME QUESTIONS WHEN I TELL YOU I KNOW NOTHING WHATEVER ABOUT IT + QUITE SO MADAM SAID HOLMES IN HIS SOOTHING WAY + I HAVE NO DOUBT THAT YOU HAVE BEEN ANNOYED MORE THAN ENOUGH ALREADY OVER THIS BUSINESS + QUOTE INDEED I HAVE SIR + I AM A QUIET WOMAN AND LIVE A RETIRED LIFE + IT IS SOMETHING NEW FOR ME TO SEE MY NAME IN THE PAPERS AND TO FIND THE POLICE IN MY HOUSE + I WON'T HAVE THOSE THINGS IN HERE MR. LESTRADE + IF YOU WISH TO SEE THEM YOU MUST GO TO THE OUTHOUSE + IT WAS A SMALL SHED IN THE NARROW GARDEN WHICH RAN BEHIND THE HOUSE + LESTRADE WENT IN AND BROUGHT OUT A YELLOW CARDBOARD BOX WITH A PIECE OF BROWN PAPER AND SOME STRING + THERE WAS A BENCH AT THE END OF THE PATH AND WE ALL SAT DOWN WHILE HOLMES EXAMINED ONE BY ONE THE ARTICLES WHICH LESTRADE HAD HANDED TO HIM + THE STRING IS EXCEEDINGLY INTERESTING HE REMARKED HOLDING IT UP TO THE LIGHT AND SNIFFING AT IT + WHAT DO YOU MAKE OF THIS STRING LESTRADE + IT HAS BEEN TARRED + PRECISELY + IT IS A PIECE OF TARRED TWINE + YOU HAVE ALSO NO DOUBT REMARKED THAT MISS CUSHING HAS CUT THE CORD WITH A SCISSORS AS CAN BE SEEN BY THE DOUBLE FRAY ON EACH SIDE + THIS IS OF IMPORTANCE QUOTE + I CANNOT SEE THE IMPORTANCE SAID LESTRADE + THE IMPORTANCE LIES IN THE FACT THAT THE KNOT IS LEFT INTACT AND THAT THIS KNOT IS OF A PECULIAR CHARACTER + IT IS VERY NEATLY TIED + I HAD ALREADY MADE A NOTE TO THAT EFFECT SAID LESTRADE COMPLACENTLY + SO MUCH FOR THE STRING THEN SAID HOLMES SMILING NOW FOR THE BOX WRAPPER + BROWN PAPER WITH A DISTINCT SMELL OF COFFEE + WHAT DID YOU NOT OBSERVE IT + I THINK THERE CAN BE NO DOUBT OF IT + ADDRESS PRINTED IN RATHER STRAGGLING CHARACTERS MISS S. CUSHING CROSS STREET CROYDON + DONE WITH A BROAD POINTED PEN PROBABLY A J. AND WITH VERY INFERIOR INK + THE WORD CROYDON HAS BEEN ORIGINALLY SPELLED WITH AN I. WHICH HAS BEEN CHANGED TO Y. + THE PARCEL WAS DIRECTED THEN BY A MAN THE PRINTING IS DISTINCTLY MASCULINE OF LIMITED EDUCATION AND UNACQUAINTED WITH THE TOWN OF CROYDON + SO FAR SO GOOD + THE BOX IS A YELLOW HALF POUND HONEYDEW BOX WITH NOTHING DISTINCTIVE SAVE TWO THUMB MARKS AT THE LEFT BOTTOM CORNER + IT IS FILLED WITH ROUGH SALT OF THE QUALITY USED FOR PRESERVING HIDES AND OTHER OF THE COARSER COMMERCIAL PURPOSES + AND EMBEDDED IN IT ARE THESE VERY SINGULAR ENCLOSURES QUOTE + HE TOOK OUT THE TWO EARS AS HE SPOKE AND LAYING A BOARD ACROSS HIS KNEE HE EXAMINED THEM MINUTELY WHILE LESTRADE AND I BENDING FORWARD ON EACH SIDE OF HIM GLANCED ALTERNATELY AT THESE DREADFUL RELICS AND AT THE THOUGHTFUL EAGER FACE OF OUR COMPANION + FINALLY HE RETURNED THEM TO THE BOX ONCE MORE AND SAT FOR A WHILE IN DEEP MEDITATION + YOU HAVE OBSERVED OF COURSE SAID HE AT LAST THAT THE EARS ARE NOT A PAIR + YES I HAVE NOTICED THAT + BUT IF THIS WERE THE PRACTICAL JOKE OF SOME STUDENTS FROM THE DISSECTING ROOMS IT WOULD BE AS EASY FOR THEM TO SEND TWO ODD EARS AS A PAIR + PRECISELY + BUT THIS IS NOT A PRACTICAL JOKE + QUOTE YOU ARE SURE OF IT QUOTE + THE PRESUMPTION IS STRONGLY AGAINST IT + BODIES IN THE DISSECTINGROOMS ARE INJECTED WITH PRESERVATIVE FLUID + THESE EARS BEAR NO SIGNS OF THIS + THEY ARE FRESH TOO + THEY HAVE BEEN CUT OFF WITH A BLUNT IHSTRUMENT WHICH WOULD HARDLY HAPPEN IF A STUDENT HAD DONE IT + AGAIN CARBOLIC OR RECTIFIED SPIRITS WOULD BE THE PRESERVATIVES IVHICH WOULD SUGGEST THEMSELVES TO THE MEDICAL MIND CERTAINLY NOT ROUGH SALT + I REPEAT THAT THERE IS NO PRACTICAL JOKE HERE BUT THAT WE ARE INVESTIGATING A SERIOUS CRIME + A VAGUE THRILL RAN THROUGH ME AS I LISTENED TO MY COMPANION'S WORDS AND SAW THE STERN GRAVITY WHICH HAD HARDENED HIS FEATURES + THIS BRUTAL PRELIMINARY SEEMED TO SHADOW FORTH SOME STRANGE AND INEXPLICABLE HORROR IN THE BACKGROUND + LESTRADE HOWEVER SHOOK HIS HEAD LIKE A MAN WHO IS ONLY HALF CONVINCED + THERE ARE OBJECTIONS TO THE JOKE THEORY NO DOUBT SAID HE BUT THERE ARE MUCH STRONGER REASONS AGAINST THE OTHER + WE KNOW THAT THIS WOMAN HAS LED A MOST QUIET AND RESPECTABLE LIFE AT PENGE AND HERE FOR THE LAST TWENTY YEARS + SHE HAS HARDLY BEEN AWAY FROM HER HOME FOR A DAY DURING THAT TIME + WHY ON EARTH THEN SHOULD ANY CRIMINAL SEND HER THE PROOFS OF HIS GUILT ESPECIALLY AS UNLESS SHE IS A MOST CONSUMMATE ACTRESS SHE UNDERSTANDS QUITE AS LITTLE OF THE MATTER AS WE DO + THAT IS THE PROBLEM WHICH WE HAVE TO SOLVE HOLMES ANSWERED AND FOR MY PART ONE SHALL SET ABOUT IT BY PRESUMING THAT MY REASONING IS CORRECT AND THAT A DOUBLE MURDER HAS BEEN COMMITTED + ONE OF THESE EARS IS A WOMAN'S SMALL FINELY FORMED AND PIERCED FOR AN EARRING + THE OTHER IS A MAN'S SUN BURNED DISCOLOURED AND ALSO PIERCED FOR AN EARRING + THESE TWO PEOPLE ARE PRESUMABLY DEAD OR WE SHOULD HAVE HEARD THEIR STORY BEFORE NOW + TO DAY IS FRIDAY + THE PACKET WAS POSTED ON THURSDAY MORNING + THE TRAGEDY THEN OCCURRED ON WEDNESDAY OR TUESDAY OR EARLIER + IF THE TWO PEOPLE WERE MURDERED WHO BUT THEIR MURDERER WOULD HAVE SENT THIS SIGN OF HIS WORK TO MISS CUSHING + WE MAY TAKE IT THAT THE SENDER OF THE PACKET IS THE MAN WHOM WE WANT + BUT HE MUST HAVE SOME STRONG REASON FOR SENDING MISS CUSHING THIS PACKET + WHAT REASON THEN + IT MUST HAVE BEEN TO TELL HER THAT THE DEED WAS DONE OR TO PAIN HER PERHAPS + BUT IN THAT CASE SHE KNOWS WHO IT IS + DOES SHE KNOW + I DOUBT IT + IF SHE KNEW WHY SHOULD SHE CALL THE POLICE IN + SHE MIGHT HAVE BURIED THE EARS AND NO ONE WOULD HAVE BEEN THE WISER + THAT IS WHAT SHE WOULD HAVE DONE IF SHE HAD WISHED TO SHIELD THE CRIMINAL + BUT IF SHE DOES NOT WISH TO SHIELD HIM SHE WOULD GIVE HIS NAME + THERE IS A TANGLE HERE WHICH NEEDS STRAIGHTENING OUT QUOTE + HE HAD BEEN TALKING IN A HIGH QUICK VOICE STARING BLANKLY UP OVER THE GARDEN FENCE BUT NOW HE SPRANG BRISKLY TO HIS FEET AND WALKED TOWARDS THE HOUSE + I HAVE A FEW QUESTIONS TO ASK MISS CUSHING SAID HE + IN THAT CASE I MAY LEAVE YOU HERE SAID LESTRADE FOR I HAVE ANOTHER SMALL BUSINESS ON HAND + I THINK THAT I HAVE NOTHING FURTHER TO LEARN FROM MISS CUSHING + YOU WILL FIND ME AT THE POLICE STATION + WE SHALL LOOK IN ON OUR WAY TO THE TRAIN ANSWERED HOLMES + A MOMENT LATER HE AND I WERE BACK IN THE FRONT ROOM WHERE THE IMPASSIVE LADY WAS STILL QUIETLY WORKING AWAY AT HER ANTIMACASSAR + SHE PUT IT DOWN ON HER LAP AS WE ENTERED AND LOOKED AT US WITH HER FRANK SEARCHING BLUE EYES + I AM CONVINCED SIR SHE SAID THAT THIS MATTER IS A MISTAKE AND THAT THE PARCEL WAS NEVER MEANT FOR ME AT ALL + I HAVE SAID THIS SEVERAL TIMES TO THE GENTLEMAN FROM SCOTLAND YARD BUT HE SIMPLY LAUGHS AT ME + I HAVE NOT AN ENEMY IN THE WORLD AS FAR AS I KNOW SO WHY SHOULD ANYONE PLAY ME SUCH A TRICK QUOTE + I AM COMING TO BE OF THE SAME OPINION MISS CUSHING SAID HOLMES TAKING A SEAT BESIDE HER + I THINK THAT IT IS MORE THAN PROBABLE HE PAUSED AND I WAS SURPRISED ON GLANCING ROUND TO SEE THAT HE WAS STARING WITH SINGULAR INTENTNESS AT THE LADY'S PROFILE + SURPRISE AND SATISFACTION WERE BOTH FOR AN INSTANT TO BE READ UPON HIS EAGER FACE THOUGH WHEN SHE GLANCED ROUND TO FIND OUT THE CAUSE OF HIS SILENCE HE HAD BECOME AS DEMURE AS EVER + I STARED HARD MYSELF AT HER FLAT GRIZZLED HAIR HER TRIM CAP HER LITTLE GILT EARRINGS HER PLACID FEATURES BUT I COULD SEE NOTHING WHICH COULD ACCOUNT FOR MY COMPANION'S EVIDENT EXCITEMENT + OH I AM WEARY OF QUESTIONS CRIED MISS CUSHING IMPATIENTLY + YOU HAVE TWO SISTERS I BELIEVE + HOW COULD YOU KNOW THAT + QUOTE I OBSERVED THE VERY INSTANT THAT I ENTERED THE ROOM THAT YOU HAVE A PORTRAIT GROUP OF THREE LADIES UPON THE MANTELPIECE ONE OF WHOM IS UNDOUBTEDLY YOURSELF WHILE THE OTHERS ARE SO EXCEEDINGLY LIKE YOU THAT THERE COULD BE NO DOUBT OF THE RELATIONSHIP QUOTE + YES YOU ARE QUITE RIGHT + THOSE ARE MY SISTERS SARAH AND MARY + AND HERE AT MY ELBOW IS ANOTHER PORTRAIT TAKEN AT LIVERPOOL OF YOUR YOUNGER SISTER IN THE COMPANY OF A MAN WHO APPEARS TO BE A STEWARD BY HIS UNIFORM + I OBSERVE THAT SHE WAS UNMARRIED AT THE TIME + YOU ARE VERY QUICK AT OBSERVING + QUOTE THAT IS MY TRADE QUOTE + WELL YOU ARE QUITE RIGHT + BUT SHE WAS MARRIED TO MR. BROWNER A FEW DAYS AFTERWARDS + HE WAS ON THE SOUTH AMERICAN LINE WHEN THAT WAS TAKEN BUT HE WAS SO FOND OF HER THAT HE COULDN'T ABIDE TO LEAVE HER FOR SO LONG AND HE GOT INTO THE LIVERPOOL AND LONDON BOATS + AH THE CONQUEROR PERHAPS + NO THE MAY DAY WHEN LAST I HEARD + JIM CAME DOWN HERE TO SEE ME ONCE + THAT WAS BEFORE HE BROKE THE PLEDGE BUT AFTERWARDS HE WOULD ALWAYS TAKE DRINK WHEN HE WAS ASHORE AND A LITTLE DRINK WOULD SEND HIM STARK STARING MAD + AH IT WAS A BAD DAY THAT EVER HE TOOK A GLASS IN HIS HAND AGAIN + FIRST HE DROPPED ME THEN HE QUARRELLED WITH SARAH AND NOW THAT MARY HAS STOPPED WRITING WE DON'T KNOW HOW THINGS ARE GOING WITH THEM + IT WAS EVIDENT THAT MISS CUSHING HAD COME UPON A SUBJECT ON WHICH SHE FELT VERY DEEPLY + LIKE MOST PEOPLE WHO LEAD A LONELY LIFE SHE WAS SHY AT FIRST BUT ENDED BY BECOMING EXTREMELY COMMUNICATIVE + SHE TOLD US MANY DETAILS ABOUT HER BROTHER IN LAW THE STEWARD AND THEN WANDERING OFF ON THE SUBJECT OF HER FORMER LODGERS THE MEDICAL STUDENTS SHE GAVE US A LONG ACCOUNT OF THEIR DELINQUENCIES WITH THEIR NAMES AND THOSE OF THEIR HOSPITALS + HOLMES LISTENED ATTENTIVELY TO EVERYTHING THROWING IN A QUESTION FROM TIME TO TIME + QUOTE ABOUT YOUR SECOND SISTER SARAH QUOTE SAID HE + I WONDER SINCE YOU ARE BOTH MAIDEN LADIES THAT YOU DO NOT KEEP HOUSE TOGETHER + AH YOU DON'T KNOW SARAH'S TEMPER OR YOU WOULD WONDER NO MORE + I TRIED IT WHEN I CAME TO CROYDON AND WE KEPT ON UNTIL ABOUT TWO MONTHS AGO WHEN WE HAD TO PART + I DON'T WANT TO SAY A WORD AGAINST MY OWN SISTER BUT SHE WAS ALWAYS MEDDLESOME AND HARD TO PLEASE WAS SARAH + YOU SAY THAT SHE QUARRELLED WITH YOUR LIVERPOOL RELATIONS + YES AND THEY WERE THE BEST OF FRIENDS AT ONE TIME + WHY SHE WENT UP THERE TO LIVE IN ORDER TO BE NEAR THEM + AND NOW SHE HAS NO WORD HARD ENOUGH FOR JIM BROWNER + THE LAST SIX MONTHS THAT SHE WAS HERE SHE WOULD SPEAK OF NOTHING BUT HIS DRINKING AND HIS WAYS + HE HAD CAUGHT HER MEDDLING I SUSPECT AND GIVEN HER A BIT OF HIS MIND AND THAT WAS THE START OF IT QUOTE + THANK YOU MISS CUSHING SAID HOLMES RISING AND BOWING + YOUR SISTER SARAH LIVES I THINK YOU SAID AT NEW STREET WALLINGTON + GOOD BYE AND I AM VERY SORRY THAT YOU SHOULD HAVE BEEN TROUBLED OVER A CASE WITH WHICH AS YOU SAY YOU HAVE NOTHING WHATEVER TO DO + THERE WAS A CAB PASSING AS WE CAME OUT AND HOLMES HAILED IT + HOW FAR TO WALLINGTON HE ASKED + ONLY ABOUT A MILE SIR + QUOTE VERY GOOD + JUMP IN WATSON + WE MUST STRIKE WHILE THE IRON IS HOT + SIMPLE AS THE CASE IS THERE HAVE BEEN ONE OR TWO VERY INSTRUCTIVE DETAILS IN CONNECTION WITH IT + JUST PULL UP AT A TELEGRAPH OFFICE AS YOU PASS CABBY + HOLMES SENT OFF A SHORT WIRE AND FOR THE REST OF THE DRIVE LAY BACK IN THE CAB WITH HIS HAT TILTED OVER HIS NOSE TO KEEP THE SUN FROM HIS FACE + OUR DRIVER PULLED UP AT A HOUSE WHICH WAS NOT UNLIKE THE ONE WHICH WE HAD JUST QUITTED + MY COMPANION ORDERED HIM TO WAIT AND HAD HIS HAND UPON THE KNOCKER WHEN THE DOOR OPENED AND A GRAVE YOUNG GENTLEMAN IN BLACK WITH A VERY SHINY HAT APPEARED ON THE STEP + IS MISS CUSHING AT HOME ASKED HOLMES + MISS SARAH CUSHING IS EXTREMELY ILL SAID HE + SHE HAS BEEN SUFFERING SINCE YESTERDAY FROM BRAIN SYMPTOMS OF GREAT SEVERITY + AS HER MEDICAL ADVISER I CANNOT POSSIBLY TAKE THE RESPONSIBILITY OF ALLOWING ANYONE TO SEE HER + I SHOULD RECOMMEND YOU TO CALL AGAIN IN TEN DAYS + HE DREW ON HIS GLOVES CLOSED THE DOOR AND MARCHED OFF DOWN THE STREET + QUOTE WELL IF WE CAN'T WE CAN'T QUOTE SAID HOLMES CHEERFULLY + PERHAPS SHE COULD NOT OR WOULD NOT HAVE TOLD YOU MUCH + I DID NOT WISH HER TO TELL ME ANYTHING + I ONLY WANTED TO LOOK AT HER + HOWEVER I THINK THAT I HAVE GOT ALL THAT I WANT + DRIVE US TO SOME DECENT HOTEL CABBY WHERE WE MAY HAVE SOME LUNCH AND AFTERWARDS WE SHALL DROP DOWN UPON FRIEND LESTRADE AT THE POLICE STATION + WE HAD A PLEASANT LITTLE MEAL TOGETHER DURING WHICH HOLMES WOULD TALK ABOUT NOTHING BUT VIOLINS NARRATING WITH GREAT EXULTATION HOW HE HAD PURCHASED HIS OWN STRADIVARIUS WHICH WAS WORTH AT LEAST FIVE HUNDRED GUINEAS AT A JEW BROKER'S IN TOTTENHAM COURT ROAD FOR FIFTY FIVE SHILLINGS + THIS LED HIM TO PAGANINI AND WE SAT FOR AN HOUR OVER A BOTTLE OF CLARET WHILE HE TOLD ME ANECDOTE AFTER ANECDOTE OF THAT EXTRAORDINARY MAN + THE AFTERNOON WAS FAR ADVANCED AND THE HOT GLARE HAD SOFTENED INTO A MELLOW GLOW BEFORE WE FOUND OURSELVES AT THE POLICE STATION + LESTRADE WAS WAITING FOR US AT THE DOOR + A TELEGRAM FOR YOU MR. HOLMES SAID HE + HA + IT IS THE ANSWER QUOTE + HE TORE IT OPEN GLANCED HIS EYES OVER IT AND CRUMPLED IT INTO HIS POCKET + THAT'S ALL RIGHT SAID HE + HAVE YOU FOUND OUT ANYTHING + I HAVE FOUND OUT EVERYTHING + WHAT + LESTRADE STARED AT HIM IN AMAZEMENT + YOU ARE JOKING + QUOTE I WAS NEVER MORE SERIOUS IN MY LIFE + A SHOCKING CRIME HAS BEEN COMMITTED AND I THINK I HAVE NOW LAID BARE EVERY DETAIL OF IT + AND THE CRIMINAL + HOLMES SCRIBBLED A FEW WORDS UPON THE BACK OF ONE OF HIS VISITING CARDS AND THREW IT OVER TO LESTRADE + THAT IS THE NAME HE SAID + YOU CANNOT EFFECT AN ARREST UNTIL TO MORROW NIGHT AT THE EARLIEST + I SHOULD PREFER THAT YOU DO NOT MENTION MY NAME AT ALL IN CONNECTION WITH THE CASE AS I CHOOSE TO BE ONLY ASSOCIATED WITH THOSE CRIMES WHICH PRESENT SOME DIFFICULTY IN THEIR SOLUTION + COME ON WATSON + WE STRODE OFF TOGETHER TO THE STATION LEAVING LESTRADE STILL STARING WITH A DELIGHTED FACE AT THE CARD WHICH HOLMES HAD THROWN HIM + QUOTE THE CASE QUOTE SAID SHERLOCK HOLMES AS WE CHATTED OVER OUR CIGARS THAT NIGHT IN OUR ROOMS AT BAKER STREET QUOTE IS ONE WHERE AS IN THE INVESTIGATIONS WHICH YOU HAVE CHRONICLED UNDER THE NAMES OF A STUDY IN SCARLET AND OF THE SIGN OF FOUR WE HAVE BEEN COMPELLED TO REASON BACKWARD FROM EFFECTS TO CAUSES + I HAVE WRITTEN TO LESTRADE ASKING HIM TO SUPPLY US WITH THE DETAILS WHICH ARE NOW WANTING AND WHICH HE WILL ONLY GET AFTER HE HAS SECURED HIS MAN + THAT HE MAY BE SAFELY TRUSTED TO DO FOR ALTHOUGH HE IS ABSOLUTELY DEVOID OF REASON HE IS AS TENACIOUS AS A BULLDOG WHEN HE ONCE UNDERSTANDS WHAT HE HAS TO DO AND INDEED IT IS JUST THIS TENACITY WHICH HAS BROUGHT HIM TO THE TOP AT SCOTLAND YARD + YOUR CASE IS NOT COMPLETE THEN + I ASKED + IT IS FAIRLY COMPLETE IN ESSENTIALS + WE KNOW WHO THE AUTHOR OF THE REVOLTING BUSINESS IS ALTHOUGH ONE OF THE VICTIMS STILL ESCAPES US + OF COURSE YOU HAVE FORMED YOUR OWN CONCLUSIONS + I PRESUME THAT THIS JIM BROWNER THE STEWARD OF A LIVERPOOL BOAT IS THE MAN WHOM YOU SUSPECT + QUOTE OH IT IS MORE THAN A SUSPICION QUOTE + AND YET I CANNOT SEE ANYTHING SAVE VERY VAGUE INDICATIONS + ON THE CONTRARY TO MY MIND NOTHING COULD BE MORE CLEAR + LET ME RUN OVER THE PRINCIPAL STEPS + WE APPROACHED THE CASE YOU REMEMBER WITH AN ABSOLUTELY BLANK MIND WHICH IS ALWAYS AN ADVANTAGE + WE HAD FORMED NO THEORIES + WE WERE SIMPLY THERE TO OBSERVE AND TO DRAW INFERENCES FROM OUR OBSERVATIONS + WHAT DID WE SEE FIRST + A VERY PLACID AND RESPECTABLE LADY WHO SEEMED QUITE INNOCENT OF ANY SECRET AND A PORTRAIT WHICH SHOWED ME THAT SHE HAD TWO YOUNGER SISTERS + IT INSTANTLY FLASHED ACROSS MY MIND THAT THE BOX MIGHT HAVE BEEN MEANT FOR ONE OF THESE + I SET THE IDEA ASIDE AS ONE WHICH COULD BE DISPROVED OR CONFIRMED AT OUR LEISURE + THEN WE WENT TO THE GARDEN AS YOU REMEMBER AND WE SAW THE VERY SINGULAR CONTENTS OF THE LITTLE YELLOW BOX + THE STRING WAS OF THE QUALITY WHICH IS USED BY SAILMAKERS ABOARD SHIP AND AT ONCE A WHIFF OF THE SEA WAS PERCEPTIBLE IN OUR INVESTIGATION + WHEN I OBSERVED THAT THE KNOT WAS ONE WHICH IS POPULAR WITH SAILORS THAT THE PARCEL HAD BEEN POSTED AT A PORT AND THAT THE MALE EAR WAS PIERCED FOR AN EARRING WHICH IS SO MUCH MORE COMMON AMONG SAILORS THAN LANDSMEN I WAS QUITE CERTAIN THAT ALL THE ACTORS IN THE TRAGEDY WERE TO BE FOUND AMONG OUR SEAFARING CLASSES + WHEN I CAME TO EXAMINE THE ADDRESS OF THE PACKET I OBSERVED THAT IT WAS TO MISS S. CUSHING + NOW THE OLDEST SISTER WOULD OF COURSE BE MISS CUSHING AND ALTHOUGH HER INITIAL WAS S. IT MIGHT BELONG TO ONE OF THE OTHERS AS WELL + IN THAT CASE WE SHOULD HAVE TO COMMENCE OUR INVESTIGATION FROM A FRESH BASIS ALTOGETHER + I THEREFORE WENT INTO THE HOUSE WITH THE INTENTION OF CLEARING UP THIS POINT + I WAS ABOUT TO ASSURE MISS CUSHING THAT I WAS CONVINCED THAT A MISTAKE HAD BEEN MADE WHEN YOU MAY REMEMBER THAT I CAME SUDDENLY TO A STOP + THE FACT WAS THAT I HAD JUST SEEN SOMETHING WHICH FILLED ME WITH SURPRISE AND AT THE SAME TIME NARROWED THE FIELD OF OUR INQUIRY IMMENSELY + AS A MEDICAL MAN YOU ARE AWARE WATSON THAT THERE IS NO PART OF THE BODY WHICH VARIES SO MUCH AS THE HUMAN EAR + EACH EAR IS AS A RULE QUITE DISTINCTIVE AND DIFFERS FROM ALL OTHER ONES + IN LAST YEAR'S ANTHROPOLOGICAL JOURNAL YOU WILL FIND TWO SHORT MONOGRAPHS FROM MY PEN UPON THE SUBJECT + I HAD THEREFORE EXAMINED THE EARS IN THE BOX WITH THE EYES OF AN EXPERT AND HAD CAREFULLY NOTED THEIR ANATOMICAL PECULIARITIES + IMAGINE MY SURPRISE THEN WHEN ON LOOKING AT MISS CUSHING I PERCEIVED THAT HER EAR CORRESPONDED EXACTLY WITH THE FEMALE EAR WHICH I HAD JUST INSPECTED + THE MATTER WAS ENTIRELY BEYOND COINCIDENCE + THERE WAS THE SAME SHORTENING OF THE PINNA THE SAME BROAD CURVE OF THE UPPER LOBE THE SAME CONVOLUTION OF THE INNER CARTILAGE + IN ALL ESSENTIALS IT WAS THE SAME EAR + QUOTE OF COURSE I AT ONCE SAW THE ENORMOUS IMPORTANCE OF THE OBSERVATION + IT WAS EVIDENT THAT THE VICTIM WAS A BLOOD RELATION AND PROBABLY A VERY CLOSE ONE + I BEGAN TO TALK TO HER ABOUT HER FAMILY AND YOU REMEMBER THAT SHE AT ONCE GAVE US SOME EXCEEDINGLY VALUABLE DETAILS + IN THE FIRST PLACE HER SISTER'S NAME WAS SARAH AND HER ADDRESS HAD UNTIL RECENTLY BEEN THE SAME SO THAT IT WAS QUITE OBVIOUS HOW THE MISTAKE HAD OCCURRED AND FOR WHOM THE PACKET WAS MEANT + THEN WE HEARD OF THIS STEWARD MARRIED TO THE THIRD SISTER AND LEARNED THAT HE HAD AT ONE TIME BEEN SO INTIMATE WITH MISS SARAH THAT SHE HAD ACTUALLY GONE UP TO LIVERPOOL TO BE NEAR THE BROWNERS BUT A QUARREL HAD AFTERWARDS DIVIDED THEM + THIS QUARREL HAD PUT A STOP TO ALL COMMUNICATIONS FOR SOME MONTHS SO THAT IF BROWNER HAD OCCASION TO ADDRESS A PACKET TO MISS SARAH HE WOULD UNDOUBTEDLY HAVE DONE SO TO HER OLD ADDRESS + AND NOW THE MATTER HAD BEGUN TO STRAIGHTEN ITSELF OUT WONDERFULLY + WE HAD LEARNED OF THE EXISTENCE OF THIS STEWARD AN IMPULSIVE MAN OF STRONG PASSIONS YOU REMEMBER THAT HE THREW UP WHAT MUST HAVE BEEN A VERY SUPERIOR BERTH IN ORDER TO BE NEARER TO HIS WIFE SUBJECT TOO TO OCCASIONAL FITS OF HARD DRINKING + WE HAD REASON TO BELIEVE THAT HIS WIFE HAD BEEN MURDERED AND THAT A MAN PRESUMABLY A SEAFARING MAN HAD BEEN MURDERED AT THE SAME TIME + JEALOUSY OF COURSE AT ONCE SUGGESTS ITSELF AS THE MOTIVE FOR THE CRIME + AND WHY SHOULD THESE PROOFS OF THE DEED BE SENT TO MISS SARAH CUSHING + PROBABLY BECAUSE DURING HER RESIDENCE IN LIVERPOOL SHE HAD SOME HAND IN BRINGING ABOUT THE EVENTS WHICH LED TO THE TRAGEDY + YOU WILL OBSERVE THAT THIS LINE OF BOATS CALLS AT BELFAST DUBLIN AND WATERFORD SO THAT PRESUMING THAT BROWNER HAD COMMITTED THE DEED AND HAD EMBARKED AT ONCE UPON HIS STEAMER THE MAY DAY BELFAST WOULD BE THE FIRST PLACE AT WHICH HE COULD POST HIS TERRIBLE PACKET + A SECOND SOLUTION WAS AT THIS STAGE OBVIOUSLY POSSIBLE AND ALTHOUGH I THOUGHT IT EXCEEDINGLY UNLIKELY I WAS DETERMINED TO ELUCIDATE IT BEFORE GOING FURTHER + AN UNSUCCESSFUL LOVER MIGHT HAVE KILLED MR. AND MRS. BROWNER AND THE MALE EAR MIGHT HAVE BELONGED TO THE HUSBAND + THERE WERE MANY GRAVE OBJECTIONS TO THIS THEORY BUT IT WAS CONCEIVABLE + I THEREFORE SENT OFF A TELEGRAM TO MY FRIEND ALGAR OF THE LIVERPOOL FORCE AND ASKED HIM TO FIND OUT IF MRS. BROWNER WERE AT HOME AND IF BROWNER HAD DEPARTED IN THE MAY DAY + THEN WE WENT ON TO WALLINGTON TO VISIT MISS SARAH + I WAS CURIOUS IN THE FIRST PLACE TO SEE HOW FAR THE FAMILY EAR HAD BEEN REPRODUCED IN HER + THEN OF COURSE SHE MIGHT GIVE US VERY IMPORTANT INFORMATION BUT I WAS NOT SANGUINE THAT SHE WOULD + SHE MUST HAVE HEARD OF THE BUSINESS THE DAY BEFORE SINCE ALL CROYDON WAS RINGING WITH IT AND SHE ALONE COULD HAVE UNDERSTOOD FOR WHOM THE PACKET WAS MEANT + IF SHE HAD BEEN WILLING TO HELP JUSTICE SHE WOULD PROBABLY HAVE COMMUNICATED WITH THE POLICE ALREADY + HOWEVER IT WAS CLEARLY OUR DUTY TO SEE HER SO WE WENT + WE FOUND THAT THE NEWS OF THE ARRIVAL OF THE PACKET FOR HER ILLNESS DATED FROM THAT TIME HAD SUCH AN EFFECT UPON HER AS TO BRING ON BRAIN FEVER + IT WAS CLEARER THAN EVER THAT SHE UNDERSTOOD ITS FULL SIGNIFICANCE BUT EQUALLY CLEAR THAT WE SHOULD HAVE TO WAIT SOME TIME FOR ANY ASSISTANCE FROM HER + HOWEVER WE WERE REALLY INDEPENDENT OF HER HELP + OUR ANSWERS WERE WAITING FOR US AT THE POLICE STATION WHERE I HAD DIRECTED ALGAR TO SEND THEM + NOTHING COULD BE MORE CONCLUSIVE + MRS. BROWNER'S HOUSE HAD BEEN CLOSED FOR MORE THAN THREE DAYS AND THE NEIGHBOURS WERE OF OPINION THAT SHE HAD GONE SOUTH TO SEE HER RELATIVES + IT HAD BEEN ASCERTAINED AT THE SHIPPING OFFICES THAT BROWNER HAD LEFT ABOARD OF THE MAY DAY AND I CALCULATE THAT SHE IS DUE IN THE THAMES TO MORROW NIGHT + WHEN HE ARRIVES HE WILL BE MET BY THE OBTUSE BUT RESOLUTE LESTRADE AND I HAVE NO DOUBT THAT WE SHALL HAVE ALL OUR DETAILS FILLED IN QUOTE + SHERLOCK HOLMES WAS NOT DISAPPOINTED IN HIS EXPECTATIONS + TWO DAYS LATER HE RECEIVED A BULKY ENVELOPE WHICH CONTAINED A SHORT NOTE FROM THE DETECTIVE AND A TYPEWRITTEN DOCUMENT WHICH COVERED SEVERAL PAGES OF FOOLSCAP + LESTRADE HAS GOT HIM ALL RIGHT SAID HOLMES GLANCING UP AT ME + PERHAPS IT WOULD INTEREST YOU TO HEAR WHAT HE SAYS + MY DEAR MR. HOLMES IN ACCORDANCE WITH THE SCHEME WHICH WE HAD FORMED IN ORDER TO TEST OUR THEORIES THE WE IS RATHER FINE WAT SON IS IT NOT + I WENT DOWN TO THE ALBERT DOCK YESTERDAY AT SIX P. M. AND BOARDED THE S. S. MAY DAY BELONGING TO THE LIVERPOOL DUBLIN AND LONDON STEAM PACKET COMPANY + ON INQUIRY I FOUND THAT THERE WAS A STEWARD ON BOARD OF THE NAME OF JAMES BROWNER AND THAT HE HAD ACTED DURING THE VOYAGE IN SUCH AN EXTRAORDINARY MANNER THAT THE CAPTAIN HAD BEEN COMPELLED TO RELIEVE HIM OF HIS DUTIES + ON DE SCENDING TO HIS BERTH I FOUND HIM SEATED UPON A CHEST WITH HIS HEAD SUNK UPON HIS HANDS ROCKING HIMSELF TO AND FRO + HE IS A BIG POWERFUL CHAP CLEAN SHAVEN AND VERY SWARTHY SOMETHING LIKE ALDRIDGE WHO HELPED US IN THE BOGUS LAUN DRY AFFAIR + HE JUMPED UP WHEN HE HEARD MY BUSINESS AND I HAD MY WHISTLE TO MY LIPS TO CALL A COUPLE OF RIVER POLICE WHO WERE ROUND THE CORNER BUT HE SEEMED TO HAVE NO HEART IN HIM AND HE HELD OUT HIS HANDS QUIETLY ENOUGH FOR THE DARBIES + WE BROUGHT HIM ALONG TO THE CELLS AND HIS BOX AS WELL FOR WE THOUGHT THERE MIGHT BE SOMETHING INCRIMINAT ING BUT BAR A BIG SHARP KNIFE SUCH AS MOST SAILORS HAVE WE GOT NOTHING FOR OUR TROUBLE + HOWEVER WE FIND THAT WE SHALL WANT NO MORE EVIDENCE FOR ON BEING BROUGHT BEFORE THE INSPECTOR AT THE STATION HE ASKED LEAVE TO MAKE A STATEMENT WHICH WAS OF COURSE TAKEN DOWN JUST AS HE MADE IT BY OUR SHORTHAND MAN + WE HAD THREE COPIES TYPEWRITTEN ONE OF WHICH I ENCLOSE + THE AFFAIR PROVES AS I ALWAYS THOUGHT IT WOULD TO BE AN EXTREMELY SIMPLE ONE BUT I AM OBLIGED TO YOU FOR ASSISTING ME IN MY INVESTIGATION + WITH KIND REGARDS YOURS VERY TRULY G. LESTRADE + QUOTE HUM + THE INVESTIGATION REALLY WAS A VERY SIMPLE ONE REMARKED HOLMES BUT I DON'T THINK IT STRUCK HIM IN THAT LIGHT WHEN HE FIRST CALLED US IN + HOWEVER LET US SEE WHAT JIM BROWNER HAS TO SAY FOR HIMSELF + THIS IS HIS STATEMENT AS MADE BEFORE INSPECTOR MONTGOMERY AT THE SHADWELL POLICE STATION AND IT HAS THE ADVANTAGE OF BEING VERBATIM + HAVE I ANYTHING TO SAY + YES I HAVE A DEAL TO SAY + I HAVE TO MAKE A CLEAN BREAST OF IT ALL + YOU CAN HANG ME OR YOU CAN LEAVE ME ALONE + I DON'T CARE A PLUG WHICH YOU DO + I TELL YOU I'VE NOT SHUT AN EYE IN SLEEP SINCE I DID IT AND I DON'T BELIEVE I EVER WILL AGAIN UNTIL I GET PAST ALL WAKING + SOMETIMES IT'S HIS FACE BUT MOST GENERALLY IT'S HERS + I'M NEVER WITHOUT ONE OR THE OTHER BEFORE ME + HE LOOKS FROWNING AND BLACK LIKE BUT SHE HAS A KIND O' SURPRISE UPON HER FACE + AY THE WHITE LAMB SHE MIGHT WELL BE SURPRISED WHEN SHE READ DEATH ON A FACE THAT HAD SELDOM LOOKED ANYTHING BUT LOVE UPON HER BEFORE + BUT IT WAS SARAH'S FAULT AND MAY THE CURSE OF A BROKEN MAN PUT A BLIGHT ON HER AND SET THE BLOOD ROTTING IN HER VEINS + IT'S NOT THAT I WANT TO CLEAR MYSELF + I KNOW THAT I WENT BACK TO DRINK LIKE THE BEAST THAT I WAS + BUT SHE WOULD HAVE FORGIVEN ME SHE WOULD HAVE STUCK AS CLOSE TO ME AS A ROPE TO A BLOCK IF THAT WOMAN HAD NEVER DARKENED OUR DOOR + FOR SARAH CUSHING LOVED ME THAT'S THE ROOT OF THE BUSINESS SHE LOVED ME UNTIL ALL HER LOVE TURNED TO POISONOUS HATE WHEN SHE KNEW THAT I THOUGHT MORE OF MY WIFE'S FOOTMARK IN THE MUD THAN I DID OF HER WHOLE BODY AND SOUL + THERE WERE THREE SISTERS ALTOGETHER + THE OLD ONE WAS JUST A GOOD WOMAN THE SECOND WAS A DEVIL AND THE THIRD WAS AN ANGEL + SARAH WAS THIRTY THREE AND MARY WAS TWENTY NINE WHEN I MARRIED + WE WERE JUST AS HAPPY AS THE DAY WAS LONG WHEN WE SET UP HOUSE TOGETHER AND IN ALL LIVERPOOL THERE WAS NO BETTER WOMAN THAN MY MARY + AND THEN WE ASKED SARAH UP FOR A WEEK AND THE WEEK GREW INTO A MONTH AND ONE THING LED TO ANOTHER UNTIL SHE WAS JUST ONE OF OURSELVES + QUOTE I WAS BLUE RIBBON AT THAT TIME AND WE WERE PUTTING A LITTLE MONEY BY AND ALL WAS AS BRIGHT AS A NEW DOLLAR + MY GOD WHOEVER WOULD HAVE THOUGHT THAT IT COULD HAVE COME TO THIS + WHOEVER WOULD HAVE DREAMED IT + I USED TO BE HOME FOR THE WEEK ENDS VERY OFTEN AND SOMETIMES IF THE SHIP WERE HELD BACK FOR CARGO I WOULD HAVE A WHOLE WEEK AT A TIME AND IN THIS WAY I SAW A DEAL OF MY SISTER IN LAW SARAH + SHE WAS A FINE TALL WOMAN BLACK AND QUICK AND FIERCE WITH A PROUD WAY OF CARRYING HER HEAD AND A GLINT FROM HER EYE LIKE A SPARK FROM A FLINT + BUT WHEN LITTLE MARY WAS THERE I HAD NEVER A THOUGHT OF HER AND THAT I SWEAR AS I HOPE FOR GOD'S MERCY + IT HAD SEEMED TO ME SOMETIMES THAT SHE LIKED TO BE ALONE WITH ME OR TO COAX ME OUT FOR A WALK WITH HER BUT I HAD NEVER THOUGHT ANYTHING OF THAT + BUT ONE EVENING MY EYES WERE OPENED + I HAD COME UP FROM THE SHIP AND FOUND MY WIFE OUT BUT SARAH AT HOME + WHERE'S MARY + I ASKED + OH SHE HAS GONE TO PAY SOME ACCOUNTS + I WAS IMPATIENT AND PACED UP AND DOWN THE ROOM + CAN'T YOU BE HAPPY FOR FIVE MINUTES WITHOUT MARY JIM SAYS SHE + QUOTE IT'S A BAD COMPLIMENT TO ME THAT YOU CAN'T BE CONTENTED WITH MY SOCIETY FOR SO SHORT A TIME QUOTE + THAT'S ALL RIGHT MY LASS SAID I PUTTING OUT MY HAND TOWARDS HER IN A KINDLY WAY BUT SHE HAD IT IN BOTH HERS IN AN INSTANT AND THEY BURNED AS IF THEY WERE IN A FEVER + I LOOKED INTO HER EYES AND I READ IT ALL THERE + THERE WAS NO NEED FOR HER TO SPEAK NOR FOR ME EITHER + I FROWNED AND DREW MY HAND AWAY + THEN SHE STOOD BY MY SIDE IN SILENCE FOR A BIT AND THEN PUT UP HER HAND AND PATTED ME ON THE SHOULDER + STEADY OLD JIM SAID SHE AND WITH A KIND O' MOCKING LAUGH SHE RAN OUT OF THE ROOM + WELL FROM THAT TIME SARAH HATED ME WITH HER WHOLE HEART AND SOUL AND SHE IS A WOMAN WHO CAN HATE TOO + I WAS A FOOL TO LET HER GO ON BIDING WITH US A BESOTTED FOOL BUT I NEVER SAID A WORD TO MARY FOR I KNEW IT WOULD GRIEVE HER + THINGS WENT ON MUCH AS BEFORE BUT AFTER A TIME I BEGAN TO FIND THAT THERE WAS A BIT OF A CHANGE IN MARY HERSELF + SHE HAD ALWAYS BEEN SO TRUSTING AND SO INNOCENT BUT NOW SHE BECAME QUEER AND SUSPICIOUS WANTING TO KNOW WHERE I HAD BEEN AND WHAT I HAD BEEN DOING AND WHOM MY LETTERS WERE FROM AND WHAT I HAD IN MY POCKETS AND A THOUSAND SUCH FOLLIES + DAY BY DAY SHE GREW QUEERER AND MORE IRRITABLE AND WE HAD CEASELESS ROWS ABOUT NOTHING + I WAS FAIRLY PUZZLED BY IT ALL + SARAH AVOIDED ME NOW BUT SHE AND MARY WERE JUST INSEPARABLE + I CAN SEE NOW HOW SHE WAS PLOTTING AND SCHEMING AND POISONING MY WIFE'S MIND AGAINST ME BUT I WAS SUCH A BLIND BEETLE THAT I COULD NOT UNDERSTAND IT AT THE TIME + THEN I BROKE MY BLUE RIBBON AND BEGAN TO DRINK AGAIN BUT I THINK I SHOULD NOT HAVE DONE IT IF MARY HAD BEEN THE SAME AS EVER + SHE HAD SOME REASON TO BE DISGUSTED WITH ME NOW AND THE GAP BETWEEN US BEGAN TO BE WIDER AND WIDER + AND THEN THIS ALEC FAIRBAIRN CHIPPED IN AND THINGS BECAME A THOUSAND TIMES BLACKER + IT WAS TO SEE SARAH THAT HE CAME TO MY HOUSE FIRST BUT SOON IT WAS TO SEE US FOR HE WAS A MAN WITH WINNING WAYS AND HE MADE FRIENDS WHEREVER HE WENT + HE WAS A DASHING SWAGGERING CHAP SMART AND CURLED WHO HAD SEEN HALF THE WORLD AND COULD TALK OF WHAT HE HAD SEEN + HE WAS GOOD COMPANY I WON'T DENY IT AND HE HAD WONDERFUL POLITE WAYS WITH HIM FOR A SAILOR MAN SO THAT I THINK THERE MUST HAVE BEEN A TIME WHEN HE KNEW MORE OF THE POOP THAN THE FORECASTLE + FOR A MONTH HE WAS IN AND OUT OF MY HOUSE AND NEVER ONCE DID IT CROSS MY MIND THAT HARM MIGHT COME OF HIS SOFT TRICKY WAYS + AND THEN AT LAST SOMETHING MADE ME SUSPECT AND FROM THAT DAY MY PEACE WAS GONE FOREVER + IT WAS ONLY A LITTLE THING TOO + I HAD COME INTO THE PARLOUR UNEXPECTED AND AS I WALKED IN AT THE DOOR I SAW A LIGHT OF WELCOME ON MY WIFE'S FACE + BUT AS SHE SAW WHO IT WAS IT FADED AGAIN AND SHE TURNED AWAY WITH A LOOK OF DISAPPOINTMENT + THAT WAS ENOUGH FOR ME + THERE WAS NO ONE BUT ALEC FAIRBAIRN WHOSE STEP SHE COULD HAVE MISTAKEN FOR MINE + IF I COULD HAVE SEEN HIM THEN I SHOULD HAVE KILLED HIM FOR I HAVE ALWAYS BEEN LIKE A MADMAN WHEN MY TEMPER GETS LOOSE + MARY SAW THE DEVIL'S LIGHT IN MY EYES AND SHE RAN FORWARD WITH HER HANDS ON MY SLEEVE + QUOTE DON'T JIM DON'T QUOTE SAYS SHE + WHERE'S SARAH + I ASKED + IN THE KITCHEN SAYS SHE + SARAH SAYS I AS I WENT IN THIS MAN FAIRBAIRN IS NEVER TO DARKEN MY DOOR AGAIN + WHY NOT SAYS SHE + BECAUSE I ORDER IT + QUOTE OH QUOTE SAYS SHE QUOTE IF MY FRIENDS ARE NOT GOOD ENOUGH FOR THIS HOUSE THEN I AM NOT GOOD ENOUGH FOR IT EITHER QUOTE + YOU CAN DO WHAT YOU LIKE SAYS I BUT IF FAIRBAIRN SHOWS HIS FACE HERE AGAIN I'LL SEND YOU ONE OF HIS EARS FOR A KEEPSAKE + SHE WAS FRIGHTENED BY MY FACE I THINK FOR SHE NEVER ANSWERED A WORD AND THE SAME EVENING SHE LEFT MY HOUSE + WELL I DON'T KNOW NOW WHETHER IT WAS PURE DEVILRY ON THE PART OF THIS WOMAN OR WHETHER SHE THOUGHT THAT SHE COULD TURN ME AGAINST MY WIFE BY ENCOURAGING HER TO MISBEHAVE + ANYWAY SHE TOOK A HOUSE JUST TWO STREETS OFF AND LET LODGINGS TO SAILORS + FAIRBAIRN USED TO STAY THERE AND MARY WOULD GO ROUND TO HAVE TEA WITH HER SISTER AND HIM + HOW OFTEN SHE WENT I DON'T KNOW BUT I FOLLOWED HER ONE DAY AND AS I BROKE IN AT THE DOOR FAIRBAIRN GOT AWAY OVER THE BACK GARDEN WALL LIKE THE COWARDLY SKUNK THAT HE WAS + I SWORE TO MY WIFE THAT I WOULD KILL HER IF I FOUND HER IN HIS COMPANY AGAIN AND I LED HER BACK WITH ME SOBBING AND TREMBLING AND AS WHITE AS A PIECE OF PAPER + THERE WAS NO TRACE OF LOVE BETWEEN US ANY LONGER + I COULD SEE THAT SHE HATED ME AND FEARED ME AND WHEN THE THOUGHT OF IT DROVE ME TO DRINK THEN SHE DESPISED ME AS WELL + WELL SARAH FOUND THAT SHE COULD NOT MAKE A LIVING IN LIVERPOOL SO SHE WENT BACK AS I UNDERSTAND TO LIVE WITH HER SISTER IN CROYDON AND THINGS JOGGED ON MUCH THE SAME AS EVER AT HOME + AND THEN CAME THIS LAST WEEK AND ALL THE MISERY AND RUIN + IT WAS IN THIS WAY + WE HAD GONE ON THE MAY DAY FOR A ROUND VOYAGE OF SEVEN DAYS BUT A HOGSHEAD GOT LOOSE AND STARTED ONE OF OUR PLATES SO THAT WE HAD TO PUT BACK INTO PORT FOR TWELVE HOURS + I LEFT THE SHIP AND CAME HOME THINKING WHAT A SURPRISE IT WOULD BE FOR MY WIFE AND HOPING THAT MAYBE SHE WOULD BE GLAD TO SEE ME SO SOON + THE THOUGHT WAS IN MY HEAD AS I TURNED INTO MY OWN STREET AND AT THAT MOMENT A CAB PASSED ME AND THERE SHE WAS SITTING BY THE SIDE OF FAIRBAIRN THE TWO CHATTING AND LAUGHING WITH NEVER A THOUGHT FOR ME AS I STOOD WATCHING THEM FROM THE FOOTPATH + I TELL YOU AND I GIVE YOU MY WORD FOR IT THAT FROM THAT MOMENT I WAS NOT MY OWN MASTER AND IT IS ALL LIKE A DIM DREAM WHEN I LOOK BACK ON IT + I HAD BEEN DRINKING HARD OF LATE AND THE TWO THINGS TOGETHER FAIRLY TURNED MY BRAIN + THERE'S SOMETHING THROBBING IN MY HEAD NOW LIKE A DOCKER'S HAMMER BUT THAT MORNING I SEEMED TO HAVE ALL NIAGARA WHIZZING AND BUZZING IN MY EARS + QUOTE WELL I TOOK TO MY HEELS AND L. RAN AFTER THE CAB + I HAD A HEAVY OAK STICK IN MY HAND AND I TELL YOU I SAW RED FROM THE FIRST BUT AS I RAN I GOT CUNNING TOO AND HUNG BACK A LITTLE TO SEE THEM WITHOUT BEING SEEN + THEY PULLED UP SOON AT THE RAILWAY STATION + THERE WAS A GOOD CROWD ROUND THE BOOKING OFFICE SO I GOT QUITE CLOSE TO THEM WITHOUT BEING SEEN + THEY TOOK TICKETS FOR NEW BRIGHTON + SO DID I BUT I GOT IN THREE CARRIAGES BEHIND THEM + WHEN WE REACHED IT THEY WALKED ALONG THE PARADE AND I WAS NEVER MORE THAN A HUNDRED YARDS FROM THEM + AT LAST I SAW THEM HIRE A BOAT AND START FOR A ROW FOR IT WAS A VERY HOT DAY AND THEY THOUGHT NO DOUBT THAT IT WOULD BE COOLER ON THE WATER + IT WAS JUST AS IF THEY HAD BEEN GIVEN INTO MY HANDS + THERE WAS A BIT OF A HAZE AND YOU COULD NOT SEE MORE THAN A FEW HUNDRED YARDS + I HIRED A BOAT FOR MYSELF AND I PULLED AFTER THEM + I COULD SEE THE BLUR OF THEIR CRAFT BUT THEY WERE GOING NEARLY AS FAST AS I AND THEY MUST HAVE BEEN A LONG MILE FROM THE SHORE BEFORE I CAUGHT THEM UP + THE HAZE WAS LIKE A CURTAIN ALL ROUND US AND THERE WERE WE THREE IN THE MIDDLE OF IT + MY GOD SHALL I EVER FORGET THEIR FACES WHEN THEY SAW WHO WAS IN THE BOAT THAT WAS CLOSING IN UPON THEM + SHE SCREAMED OUT + HE SWORE LIKE A MADMAN AND JABBED AT ME WITH AN OAR FOR HE MUST HAVE SEEN DEATH IN MY EYES + I GOT PAST IT AND GOT ONE IN WITH MY STICK THAT CRUSHED HIS HEAD LIKE AN EGG + I WOULD HAVE SPARED HER PERHAPS FOR ALL MY MADNESS BUT SHE THREW HER ARMS ROUND HIM CRYING OUT TO HIM AND CALLING HIM ALEC + I STRUCK AGAIN AND SHE LAY STRETCHED BESIDE HIM + I WAS LIKE A WILD BEAST THEN THAT HAD TASTED BLOOD + IF SARAH HAD BEEN THERE BY THE LORD SHE SHOULD HAVE JOINED THEM + I PULLED OUT MY KNIFE AND WELL THERE + I'VE SAID ENOUGH + IT GAVE ME A KIND OF SAVAGE JOY WHEN I THOUGHT HOW SARAH WOULD FEEL WHEN SHE HAD SUCH SIGNS AS THESE OF WHAT HER MEDDLING HAD BROUGHT ABOUT + THEN I TIED THE BODIES INTO THE BOAT STOVE A PLANK AND STOOD BY UNTIL THEY HAD SUNK + I KNEW VERY WELL THAT THE OWNER WOULD THINK THAT THEY HAD LOST THEIR BEARINGS IN THE HAZE AND HAD DRIFTED OFF OUT TO SEA + I CLEANED MYSELF UP GOT BACK TO LAND AND JOINED MY SHIP WITHOUT A SOUL HAVING A SUSPICION OF WHAT HAD PASSED + THAT NIGHT I MADE UP THE PACKET FOR SARAH CUSHING AND NEXT DAY I SENT IT FROM BELFAST + THERE YOU HAVE THE WHOLE TRUTH OF IT + YOU CAN HANG ME OR DO WHAT YOU LIKE WITH ME BUT YOU CANNOT PUNISH ME AS I HAVE BEEN PUNISHED ALREADY + I CANNOT SHUT MY EYES BUT I SEE THOSE TWO FACES STARING AT ME STARING AT ME AS THEY STARED WHEN MY BOAT BROKE THROUGH THE HAZE + I KILLED THEM QUICK BUT THEY ARE KILLING ME SLOW AND IF I HAVE ANOTHER NIGHT OF IT I SHALL BE EITHER MAD OR DEAD BEFORE MORNING + YOU WON'T PUT ME ALONE INTO A CELL SIR + POR PITY'S SAKE DON'T AND MAY YOU BE TREATED IN YOUR DAY OF AGONY AS YOU TREAT ME NOW + WHAT IS THE MEANING OF IT WATSON SAID HOLMES SOLEMNLY ALS HE LAID DOWN THE PAPER + WHAT OBJECT IS SERVED BY THIS CIRCLE OF MISERY AND VIOLENCE AND FEAR + IT MUST TEND TO SOME END OR ELSE OUR UNIVERSE IS RULED BY CHANCE WHICH IS UNTHINKABLE + BUT WHAT END + THERE IS THE GREAT STANDING PERENNIAL PROBLEM TO WHICH HUMAN REASON IS AS FAR FROM AN ANSWER AS EVER QUOTE diff --git a/samples/LMTutorial/train/case_of_identity.txt b/samples/LMTutorial/train/case_of_identity.txt new file mode 100755 index 0000000..8f2d5f7 --- /dev/null +++ b/samples/LMTutorial/train/case_of_identity.txt @@ -0,0 +1,391 @@ + QUOTE MY DEAR FELLOW QUOTE SAID SHERLOCK HOLMES AS WE SAT ON EITHER SIDE OF THE FIRE IN HIS LODGINGS AT BAKER STREET QUOTE LIFE IS INFINITELY STRANGER THAN ANYTHING WHICH THE MIND OF MAN COULD INVENT + WE WOULD NOT DARE TO CONCEIVE THE THINGS WHICH ARE REALLY MERE COMMONPLACES OF EXISTENCE + IF WE COULD FLY OUT OF THAT WINDOW HAND IN HAND HOVER OVER THIS GREAT CITY GENTLY REMOVE THE ROOFS AND PEEP IN AT THE QUEER THINGS WHICH ARE GOING ON THE STRANGE COINCIDENCES THE PLANNINGS THE CROSS PURPOSES THE WONDERFUL CHAINS OF EVENTS WORKING THROUGH GENERATION AND LEADING TO THE MOST OUTRE RESULTS IT WOULD MAKE ALL FICTION WITH ITS CONVENTIONALITIES AND FORESEEN CONCLUSIONS MOST STALE AND UNPROFITABLE + AND YET I AM NOT CONVINCED OF IT I ANSWERED + THE CASES WHICH COME TO LIGHT IN THE PAPERS ARE AS A RULE BALD ENOUGH AND VULGAR ENOUGH + WE HAVE IN OUR POLICE REPORTS REALISM PUSHED TO ITS EXTREME LIMITS AND YET THE RESULT IS IT MUST BE CONFESSED NEITHER FASCINATING NOR ARTISTIC + A CERTAIN SELECTION AND DISCRETION MUST BE USED IN PRODUCING A REALISTIC EFFECT REMARKED HOLMES + QUOTE THIS IS WANTING IN THE POLICE REPORT WHERE MORE STRESS IS LAID PERHAPS UPON THE PLATITUDES OF THE MAGISTRATE THAN UPON THE DETAILS WHICH TO AN OBSERVER CONTAIN THE VITAL ESSENCE OF THE WHOLE MATTER + DEPEND UPON IT THERE IS NOTHING SO UNNATURAL AS THE COMMONPLACE + I SMILED AND SHOOK MY HEAD + I CAN QUITE UNDERSTAND YOUR THINKING SO + I SAID + OF COURSE IN YOUR POSITION OF UNOFFICIAL ADVISER AND HELPER TO EVERYBODY WHO IS ABSOLUTELY PUZZLED THROUGHOUT THREE CONTINENTS YOU ARE BROUGHT IN CONTACT WITH ALL THAT IS STRANGE AND BIZARRE + BUT HERE I PICKED UP THE MORNING PAPER FROM THE GROUND LET US PUT IT TO A PRACTICAL TEST + HERE IS THE FIRST HEADING UPON WHICH I COME + A HUSBAND'S CRUELTY TO HIS WIFE + THERE IS HALF A COLUMN OF PRINT BUT I KNOW WITHOUT READING IT THAT IT IS ALL PERFECTLY FAMILIAR TO ME + THERE IS. OF COURSE THE OTHER WOMAN THE DRINK THE PUSH THE BLOW THE BRUISE THE SYMPATHETIC SISTER OR LANDLADY + THE CRUDEST OF WRITERS COULD INVENT NOTHING MORE CRUDE + QUOTE INDEED YOUR EXAMPLE IS AN UNFORTUNATE ONE FOR YOUR ARGUMENT QUOTE SAID HOLMES TAKING THE PAPER AND GLANCING HIS EYE DOWN IT + THIS IS THE DUNDAS SEPARATION CASE AND AS IT HAPPENS I WAS ENGAGED IN CLEARING UP SOME SMALL POINTS IN CONNECTION WITH IT + THE HUSBAND WAS A TEETOTALER THERE WAS NO OTHER WOMAN AND THE CONDUCT COMPLAINED OF WAS THAT HE HAD DRIFTED INTO THE HABIT OF WINDING UP EVERY MEAL BY TAKING OUT HIS FALSE TEETH AND HURLING THEM AT HIS WIFE WHICH YOU WILL ALLOW IS NOT AN ACTION LIKELY TO OCCUR TO THE IMAGINATION OF THE AVERAGE STORY TELLER + TAKE A PINCH OF SNUFF DOCTOR AND ACKNOWLEDGE THAT I HAVE SCORED OVER YOU IN YOUR EXAMPLE + HE HELD OUT HIS SNUFFBOX OF OLD GOLD WITH A GREAT AMETHYST IN THE CENTRE OF THE LID + ITS SPLENDOUR WAS IN SUCH CONTRAST TO HIS HOMELY WAYS AND SIMPLE LIFE THAT I COULD NOT HELP COMMENTING UPON IT + AH SAID HE I FORGOT THAT I HAD NOT SEEN YOU FOR SOME WEEKS + IT IS A LITTLE SOUVENIR FROM THE KING OF BOHEMIA IN RETURN FOR MY ASSISTANCE IN THE CASE OF THE IRENE ADLER PAPERS + AND THE RING + I ASKED GLANCING AT A REMARKABLE BRILLIANT WHICH SPARKLED UPON HIS FINGER + QUOTE IT WAS FROM THE REIGNING FAMILY OF HOLLAND THOUGH THE MATTER IN WHICH I SERVED THEM WAS OF SUCH DELICACY THAT I CANNOT CONFIDE IT EVEN TO YOU WHO HAVE BEEN GOOD ENOUGH TO CHRONICLE ONE OR TWO OF MY LITTLE PROBLEMS QUOTE + AND HAVE YOU ANY ON HAND JUST NOW + I ASKED WITH INTEREST + SOME TEN OR TWELVE BUT NONE WHICH PRESENT ANY FEATURE OF INTEREST + THEY ARE IMPORTANT YOU UNDERSTAND WITHOUT BEING INTERESTING + INDEED I HAVE FOUND THAT IT IS USUALLY IN UNIMPORTANT MATTERS THAT THERE IS A FIELD FOR THE OBSERVATION AND FOR THE QUICK ANALYSIS OF CAUSE AND EFFECT WHICH GIVES THE CHARM TO AN INVESTIGATION + THE LARGER CRIMES ARE APT TO BE THE SIMPLER FOR THE BIGGER THE CRIME THC MORE OBVIOUS AS A RULE IS THE MOTIVE + IN THESE CASES SAVE FOR ONE RATHER INTRICATE MATTER WHICH HAS BEEN REFERRED TO ME FROM MARSEILLES THERE IS NOTHING WHICH PRESENTS ANY FEATURES OF INTEREST + IT IS POSSIBLE HOWEVER THAT I MAY HAVE SOMETHING BETTER BEFORE VERY MANY MINUTES ARE OVER FOR THIS IS ONE OF MY CLIENTS OR I AM MUCH MISTAKEN + HE HAD RISEN FROM HIS CHAIR AND WAS STANDING BETWEEN THE PARTED BLINDS GAZING DOWN INTO THE DULL NEUTRAL TINTED LONDON STREET + LOOKING OVER HIS SHOULDER I SAW THAT ON THE PAVEMENT OPPOSITE THERE STOOD A LARGE WOMAN WITH A HEAVY FUR BOA ROUND HER NECK AND A LARGE CURLING RED FEATHER IN A BROAD BRIMMED HAT WHICH WAS TILTED IN A COQUETTISH DUCHESS OF DEVONSHIRE FASHION OVER HER EAR + FROM UNDER THIS GREAT PANOPLY SHE PEEPED UP IN A NERVOUS HESITATING FASHION AT OUR WINDOWS WHILE HER BODY OSCILLATED BACKWARD AND FORWARD AND HER FINGERS FIDGETED WITH HER GLOVE BUTTONS + SUDDENLY WITH A PLUNGE AS OF THE SWIMMER WHO LEAVES THE BANK SHE HURRIED ACROSS THE ROAD AND WE HEARD THE SHARP CLANG OF THE BELL + I HAVE SEEN THOSE SYMPTOMS BEFORE SAID HOLMES THROWING HIS CIGARETTE INTO THE FIRE + OSCILLATION UPON THE PAVEMENT ALWAYS MEANS AN AFFAIRE DE COEUR + SHE WOULD LIKE ADVICE BUT IS NOT SURE THAT THE MATTER IS NOT TOO DELICATE FOR COMMUNICATION + AND YET EVEN HERE WE MAY DISCRIMINATE + WHEN A WOMAN HAS BEEN SERIOUSLY WRONGED BY A MAN SHE NO LONGER OSCILLATES AND THE USUAL SYMPTOM IS A BROKEN BELL WIRE + HERE WE MAY TAKE IT THAT THERE IS A LOVE MATTER BUT THAT THE MAIDEN IS NOT SO MUCH ANGRY AS PERPLEXED OR GRIEVED + BUT HERE SHE COMES IN PERSON TO RESOLVE OUR DOUBTS QUOTE + AS HE SPOKE THERE WAS A TAP AT THE DOOR AND THE BOY IN BUTTONS ENTERED TO ANNOUNCE MISS MARY SUTHERLAND WHILE THE LADY HERSELF LOOMED BEHIND HIS SMALL BLACK FIGURE LIKE A FULL SAILED MERCHANT MAN BEHIND A TINY PILOT BOAT + SHERLOCK HOLMES WELCOMED HER WITH THE EASY COURTESY FOR WHICH HE WAS REMARKABLE AND HAVING CLOSED THE DOOR AND BOWED HER INTO AN ARMCHAIR HE LOOKED HER OVER IN THE MINUTE AND YET ABSTRACTED FASHION WHICH WAS PECULIAR TO HIM + DO YOU NOT FIND HE SAID THAT WITH YOUR SHORT SIGHT IT IS A LITTLE TRYING TO DO SO MUCH TYPEWRITING + I DID AT FIRST SHE ANSWERED BUT NOW I KNOW WHERE THE LETTERS ARE WITHOUT LOOKING + THEN SUDDENLY REALIZING THE FULL PURPORT OF HIS WORDS SHE GAVE A VIOLENT START AND LOOKED UP WITH FEAR AND ASTONISHMENT UPON HER BROAD GOOD HUMOURED FACE + YOU'VE HEARD ABOUT ME MR. HOLMES SHE CRIED ELSE HOW COULD YOU KNOW ALL THAT + NEVER MIND SAID HOLMES LAUGHING IT IS MY BUSINESS TO KNOW THINGS + PERHAPS I HAVE TRAINED MYSELF TO SEE WHAT OTHERS OVERLOOK + IF NOT WHY SHOULD YOU COME TO CONSULT ME + QUOTE I CAME TO YOU SIR BECAUSE I HEARD OF YOU FROM MRS. ETHEREGE WHOSE HUSBAND YOU FOUND SO EASY WHEN THE POLICE AND EVERYONE HAD GIVEN HIM UP FOR DEAD + OH MR. HOLMES I WISH YOU WOULD DO AS MUCH FOR ME + I'M NOT RICH BUT STILL I HAVE A HUNDRED A YEAR IN MY OWN RIGHT BESIDES THE LITTLE THAT I MAKE BY THE MACHINE AND I WOULD GIVE IT ALL TO KNOW WHAT HAS BECOME OF MR. HOSMER ANGEL + WHY DID YOU COME AWAY TO CONSULT ME IN SUCH A HURRY ASKED SHERLOCK HOLMES WITH HIS FINGER TIPS TOGETHER AND HIS EYES TO THE CEILING + AGAIN A STARTLED LOOK CAME OVER THE SOMEWHAT VACUOUS FACE OF MISS MARY SUTHERLAND + YES I DID BANG OUT OF THE HOUSE SHE SAID FOR IT MADE ME ANGRY TO SEE THE EASY WAY IN WHICH MR. WINDIBANK THAT IS MY FATHER TOOK IT ALL + HE WOULD NOT GO TO THE POLICE AND HE WOULD NOT GO TO YOU AND SO AT LAST AS HE WOULD DO NOTHING AND KEPT ON SAYING THAT THERE WAS NO HARM DONE IT MADE ME MAD AND I JUST ON WITH MY THINGS AND CAME RIGHT AWAY TO YOU + YOUR FATHER SAID HOLMES YOUR STEPFATHER SURELY SINCE THE NAME IS DIFFERENT + QUOTE YES MY STEPFATHER + I CALL HIM FATHER THOUGH IT SOUNDS FUNNY TOO FOR HE IS ONLY FIVE YEARS AND TWO MONTHS OLDER THAN MYSELF + AND YOUR MOTHER IS ALIVE + OH YES MOTHER IS ALIVE AND WELL + I WASN'T BEST PLEASED MR. HOLMES WHEN SHE MARRIED AGAIN SO SOON AFTER FATHER'S DEATH AND A MAN WHO WAS NEARLY FIFTEEN YEARS YOUNGER THAN HERSELF + FATHER WAS A PLUMBER IN THE TOTTENHAM COURT ROAD AND HE LEFT A TIDY BUSINESS BEHIND HIM WHICH MOTHER CARRIED ON WITH MR. HARDY THE FOREMAN BUT WHEN MR. WINDIBANK CAME HE MADE HER SELL THE BUSINESS FOR HE WAS VERY SUPERIOR BEING A TRAVELLER IN WINES + THEY GOT FOUR THOUSAND SEVEN HUNDRED POUNDS FOR THE GOODWILL AND INTEREST WHICH WASN'T NEAR AS MUCH AS FATHER COULD HAVE GOT IF HE HAD BEEN ALIVE + I HAD EXPECTED TO SEE SHERLOCK HOLMES IMPATIENT UNDER THIS RAMBLING AND INCONSEQUENTIAL NARRATIVE BUT ON THE CONTRARY HE HAD LISTENED WITH THE GREATEST CONCENTRATION OF ATTENTION + YOUR OWN LITTLE INCOME HE ASKED DOES IT COME OUT OF THE BUSINESS + QUOTE OH NO SIR + IT IS QUITE SEPARATE AND WAS LEFT ME BY MY UNCLE NED IN AUCKLAND + IT IS IN NEW ZEALAND STOCK PAYING FOUR AND ONE HALF PER CENT + TWO THOUSAND FIVE HUNDRED POUNDS WAS THE AMOUNT BUT I CAN ONLY TOUCH THE INTEREST + YOU INTEREST ME EXTREMELY SAID HOLMES + AND SINCE YOU DRAW SO LARGE A SUM AS A HUNDRED A YEAR WITH WHAT YOU EARN INTO THE BARGAIN YOU NO DOUBT TRAVEL A LITTLE AND INDULGE YOURSELF IN EVERY WAY + I BELIEVE THAT A SINGLE LADY CAN GET ON VERY NICELY UPON AN INCOME OF ABOUT SIXTY POUNDS + I COULD DO WITH MUCH LESS THAN THAT MR. HOLMES BUT YOU UNDERSTAND THAT AS LONG AS I LIVE AT HOME I DON'T WISH TO BE A BURDEN TO THEM AND SO THEY HAVE THE USE OF THE MONEY JUST WHILE I AM STAYING WITH THEM + OF COURSE THAT IS ONLY JUST FOR THE TIME + MR. WINDIBANK DRAWS MY INTEREST EVERY QUARTER AND PAYS IT OVER TO MOTHER AND I FIND THAT I CAN DO PRETTY WELL WITH WHAT I EARN AT TYPEWRITING + IT BRINGS ME TWOPENCE A SHEET AND I CAN OFTEN DO FROM FIFTEEN TO TWENTY SHEETS IN A DAY QUOTE + YOU HAVE MADE YOUR POSITION VERY CLEAR TO ME SAID HOLMES + THIS IS MY FRIEND DOCTOR WATSON BEFORE WHOM YOU CAN SPEAK AS FREELY AS BEFORE MYSELF + KINDLY TELL US NOW ALL ABOUT YOUR CONNECTION WITH MR. HOSMER ANGEL + A FLUSH STOLE OVER MISS SUTHERLAND'S FACE AND SHE PICKED NERVOUSLY AT THE FRINGE OF HER JACKET + I MET HIM FIRST AT THE GASFITTERS' BALL SHE SAID + THEY USED TO SEND FATHER TICKETS WHEN HE WAS ALIVE AND THEN AFTERWARDS THEY REMEMBERED US AND SENT THEM TO MOTHER + MR. WINDIBANK DID NOT WISH US TO GO + HE NEVER DID WISH US TO GO ANYWHERE + HE WOULD GET QUITE MAD IF I WANTED SO MUCH AS TO JOIN A SUNDAY SCHOOL TREAT + BUT THIS TIME I WAS SET ON GOING AND I WOULD GO FOR WHAT RIGHT HAD HE TO PREVENT + HE SAID THE FOLK WERE NOT FIT FOR US TO KNOW WHEN ALL FATHER'S FRIENDS WERE TO BE THERE + AND HE SAID THAT I HAD NOTHING FIT TO WEAR WHEN I HAD MY PURPLE PLUSH THAT I HAD NEVER SO MUCH AS TAKEN OUT OF THE DRAWER + AT LAST WHEN NOTHING ELSE WOULD DO HE WENT OFF TO FRANCE UPON THE BUSINESS OF THE FIRM BUT WE WENT MOTHER AND I WITH MR. HARDY WHO USED TO BE OUR FOREMAN AND IT WAS THERE I MET MR. HOSMER ANGEL QUOTE + I SUPPOSE SAID HOLMES THAT WHEN MR. WINDIBANK CAME BACK FROM FRANCE HE WAS VERY ANNOYED AT YOUR HAVING GONE TO THE BALL + OH WELL HE WAS VERY GOOD ABOUT IT + HE LAUGHED I REMEMBER AND SHRUGGED HIS SHOULDERS AND SAID THERE WAS NO USE DENYING ANYTHING TO A WOMAN FOR SHE WOULD HAVE HER WAY + I SEE + THEN AT THE GASFITTERS' BALL YOU MET AS I UNDERSTAND A GENTLEMAN CALLED MR. HOSMER ANGEL + QUOTE YES SIR + I MET HIM THAT NIGHT AND HE CALLED NEXT DAY TO ASK IF WE HAD GOT HOME ALL SAFE AND AFTER THAT WE MET HIM THAT IS TO SAY MR. HOLMES I MET HIM TWICE FOR WALKS BUT AFTER THAT FATHER CAME BACK AGAIN AND MR. HOSMER ANGEL COULD NOT COME TO THE HOUSE ANY MORE + NO + WELL YOU KNOW FATHER DIDN'T LIKE ANYTHING OF THE SORT + HE WOULDN'T HAVE ANY VISITORS IF HE COULD HELP IT AND HE USED TO SAY THAT A WOMAN SHOULD BE HAPPY IN HER OWN FAMILY CIRCLE + BUT THEN AS I USED TO SAY TO MOTHER A WOMAN WANTS HER OWN CIRCLE TO BEGIN WITH AND I HAD NOT GOT MINE YET + BUT HOW ABOUT MR. HOSMER ANGEL + DID HE MAKE NO ATTEMPT TO SEE YOU QUOTE + WELL FATHER WAS GOING OFF TO FRANCE AGAIN IN A WEEK AND HOSMER WROTE AND SAID THAT IT WOULD BE SAFER AND BETTER NOT TO SEE EACH OTHER UNTIL HE HAD GONE + WE COULD WRITE IN THE MEANTIME AND HE USED TO WRITE EVERY DAY + I TOOK THE LETTERS IN IN THE MORNING SO THERE WAS NO NEED FOR FATHER TO KNOW + WERE YOU ENGAGED TO THE GENTLEMAN AT THIS TIME + OH YES MR. HOLMES + WE WERE ENGAGED AFTER THE FIRST WALK THAT WE TOOK + HOSMER MR. ANGEL WAS A CASHIER IN AN OFFICE IN LEADENHALL STREET AND + QUOTE WHAT OFFICE QUOTE + THAT'S THE WORST OF IT MR. HOLMES I DON'T KNOW + WHERE DID HE LIVE THEN + HE SLEPT ON THE PREMISES + AND YOU DON'T KNOW HIS ADDRESS + NO EXCEPT THAT IT WAS LEADENHALL STREET + QUOTE WHERE DID YOU ADDRESS YOUR LETTERS THEN QUOTE + TO THE LEADENHALL STREET POST OFFICE TO BE LEFT TILL CALLED FOR + HE SAID THAT IF THEY WERE SENT TO THE OFFICE HE WOULD BE CHAFFED BY ALL THE OTHER CLERKS ABOUT HAVING LETTERS FROM A LADY SO I OFFERED TO TYPEWRITE THEM LIKE HE DID HIS BUT HE WOULDN'T HAVE THAT FOR HE SAID THAT WHEN I WROTE THEM THEY SEEMED TO COME FROM ME BUT WHEN THEY WERE TYPEWRITTEN HE ALWAYS FELT THAT THE MACHINE HAD COME BETWEEN US + THAT WILL JUST SHOW YOU HOW FOND HE WAS OF ME MR. HOLMES AND THE LITTLE THINGS THAT HE WOULD THINK OF + IT WAS MOST SUGGESTIVE SAID HOLMES + IT HAS LONG BEEN AN AXIOM OF MINE THAT THE LITTLE THINGS ARE INFINITELY THE MOST IMPORTANT + CAN YOU REMEMBER ANY OTHER LITTLE THINGS ABOUT MR. HOSMER ANGEL + QUOTE HE WAS A VERY SHY MAN MR. HOLMES + HE WOULD RATHER WALK WITH ME IN THE EVENING THAN IN THE DAYLIGHT FOR HE SAID THAT HE HATED TO BE CONSPICUOUS + VERY RETIRING AND GENTLEMANLY HE WAS + EVEN HIS VOICE WAS GENTLE + HE'D HAD THE QUINSY AND SWOLLEN GLANDS WHEN HE WAS YOUNG HE TOLD ME AND IT HAD LEFT HIM WITH A WEAK THROAT AND A HESITATING WHISPERING FASHION OF SPEECH + HE WAS ALWAYS WELL DRESSED VERY NEAT AND PLAIN BUT HIS EYES WERE WEAK JUST AS MINE ARE AND HE WORE TINTED GLASSES AGAINST THE GLARE + WELL AND WHAT HAPPENED WHEN MR. WINDIBANK YOUR STEPFATHER RETURNED TO FRANCE + MR. HOSMER ANGEL CAME TO THE HOUSE AGAIN AND PROPOSED THAT WE SHOULD MARRY BEFORE FATHER CAME BACK + HE WAS IN DREADFUL EARNEST AND MADE ME SWEAR WITH MY HANDS ON THE TESTAMENT THAT WHATEVER HAPPENED I WOULD ALWAYS BE TRUE TO HIM + MOTHER SAID HE WAS QUITE RIGHT TO MAKE ME SWEAR AND THAT IT WAS A SIGN OF HIS PASSION + MOTHER WAS ALL IN HIS FAVOUR FROM THE FIRST AND WAS EVEN FONDER OF HIM THAN I WAS + THEN WHEN THEY TALKED OF MARRYING WITHIN THE WEEK I BEGAN TO ASK ABOUT FATHER BUT THEY BOTH SAID NEVER TO MIND ABOUT FATHER BUT JUST TO TELL HIM AFTERWARDS AND MOTHER SAID SHE WOULD MAKE IT ALL RIGHT WITH HIM + I DIDN'T QUITE LIKE THAT MR. HOLMES + IT SEEMED FUNNY THAT I SHOULD ASK HIS LEAVE AS HE WAS ONLY A FEW YEARS OLDER THAN ME BUT I DIDN'T WANT TO DO ANYTHING ON THE SLY SO L. WROTE TO FATHER AT BORDEAUX WHERE THE COMPANY HAS ITS FRENCH OFFICES BUT THE LETTER CAME BACK TO ME ON THE VERY MORNING OF THE WEDDING + IT MISSED HIM THEN + QUOTE YES SIR FOR HE HAD STARTED TO ENGLAND JUST BEFORE IT ARRIVED QUOTE + HA THAT WAS UNFORTUNATE + YOUR WEDDING WAS ARRANGED THEN FOR THE FRIDAY + WAS IT TO BE IN CHURCH + YES SIR BUT VERY QUIETLY + IT WAS TO BE AT SAINT SAVIOUR'S NEAR KING'S CROSS AND WE WERE TO HAVE BREAKFAST AFTERWARDS AT THE SAINT PANCRAS HOTEL + HOSMER CAME FOR US IN A HANSOM BUT AS THERE WERE TWO OF US HE PUT US BOTH INTO IT AND STEPPED HIMSELF INTO A FOUR WHEELER WHICH HAPPENED TO BE THE ONLY OTHER CAB IN THE STREET + WE GOT TO THE CHURCH FIRST AND WHEN THE FOUR WHEELER DROVE UP WE WAITED FOR HIM TO STEP OUT BUT HE NEVER DID AND WHEN THE CABMAN GOT DOWN FROM THE BOX AND LOOKED THERE WAS NO ONE THERE + THE CABMAN SAID THAT HE COUID NOT IMAGINE WHAT HAD BECOME OF HIM FOR HE HAD SEEN HIM GET IN WITH HIS OWN EYES + THAT WAS LAST FRIDAY MR. HOLMES AND I HAVE NEVER SEEN OR HEARD ANYTHING SINCE THEN TO THROW ANY LIGHT UPON WHAT BECAME OF HIM + IT SEEMS TO ME THAT YOU HAVE BEEN VERY SHAMEFULLY TREATED SAID HOLMES + QUOTE OH NO SIR + HE WAS TOO GOOD AND KIND TO LEAVE ME SO + WHY ALL THE MORNING HE WAS SAYING TO ME THAT WHATEVER HAPPENED I WAS TO BE TRUE AND THAT EVEN IF SOMETHING QUITE UNFORESEEN OCCURRED TO SEPARATE US I WAS ALWAYS TO REMEMBER THAT I WAS PLEDGED TO HIM AND THAT HE WOULD CLAIM HIS PLEDGE SOONER OR LATER + IT SEEMED STRANGE TALK FOR A WEDDING MORNING BUT WHAT HAS HAPPENED SINCE GIVES A MEANING TO IT + MOST CERTAINLY IT DOES + YOUR OWN OPINION IS THEN THAT SOME UNFORESEEN CATASTROPHE HAS OCCURRED TO HIM + YES SIR + I BELIEVE THAT HE FORESAW SOME DANGER OR ELSE HE WOULD NOT HAVE TALKED SO + AND THEN I THINK THAT WHAT HE FORESAW HAPPENED + QUOTE BUT YOU HAVE NO NOTION AS TO WHAT IT COULD HAVE BEEN QUOTE + NONE + ONE MORE QUESTION + HOW DID YOUR MOTHER TAKE THE MATTER + SHE WAS ANGRY AND SAID THAT I WAS NEVER TO SPEAK OF THE MATTER AGAIN + AND YOUR FATHER + DID YOU TELL HIM QUOTE + YES AND HE SEEMED TO THINK WITH ME THAT SOMETHING HAD HAPPENED AND THAT I SHOULD HEAR OF HOSMER AGAIN + AS HE SAID WHAT INTEREST COULD ANYONE HAVE IN BRINGING ME TO THE DOORS OF THE CHURCH AND THEN LEAVING ME + NOW IF HE HAD BORROWED MY MONEY OR IF HE HAD MARRIED ME AND GOT MY MONEY SETTLED ON HIM THERE MIGHT BE SOME REASON BUT HOSMER WAS VERY INDEPENDENT ABOUT MONEY AND NEVER WOULD LOOK AT A SHILLING OF MINE + AND YET WHAT COULD HAVE HAPPENED + AND WHY COULD HE NOT WRITE + OH IT DRIVES ME HALF MAD TO THINK OF IT AND I CAN'T SLEEP A WINK AT NIGHT + SHE PULLED A LITTLE HANDKERCHIEF OUT OF HER MUFF AND BEGAN TO SOB HEAVILY INTO IT + I SHALL GLANCE INTO THE CASE FOR YOU SAID HOLMES RISING AND I HAVE NO DOUBT THAT WE SHALL REACH SOME DEFINITE RESULT + LET THE WEIGHT OF THE MATTER REST UPON ME NOW AND DO NOT LET YOUR MIND DWELL UPON IT FURTHER + ABOVE ALL TRY TO LET MR. HOSMER ANGEL VANISH FROM YOUR MEMORY AS HE HAS DONE FROM YOUR LIFE + THEN YOU DON'T THINK I'LL SEE HIM AGAIN + QUOTE L. FEAR NOT QUOTE + THEN WHAT HAS HAPPENED TO HIM + YOU WILL LEAVE THAT QUESTION IN MY HANDS + I SHOULD LIKE AN ACCURATE DESCRIPTION OF HIM AND ANY LETTERS OF HIS WHICH YOU CAN SPARE + I ADVERTISED FOR HIM IN LAST SATURDAY'S CHRONICLE SAID SHE + HERE IS THE SLIP AND HERE ARE FOUR LETTERS FROM HIM + QUOTE THANK YOU + AND YOUR ADDRESS + NUMBER THIRTY ONE LYON PLACE CAMBERWELL + MR. ANGEL'S ADDRESS YOU NEVER HAD I UNDERSTAND + WHERE IS YOUR FATHER'S PLACE OF BUSINESS + HE TRAVELS FOR WESTHOUSE AND MARBANK THE GREAT CLARET IMPORTERS OF FENCHURCH STREET + QUOTE THANK YOU + YOU HAVE MADE YOUR STATEMENT VERY CLEARLY + YOU WILL LEAVE THE PAPERS HERE AND REMEMBER THE ADVICE WHICH I HAVE GIVEN YOU + LET THE WHOLE INCIDENT BE A SEALED BOOK AND DO NOT ALLOW IT TO AFFECT YOUR LIFE + YOU ARE VERY KIND MR. HOLMES BUT I CANNOT DO THAT + I SHALL BE TRUE TO HOSMER + HE SHALL FIND ME READY WHEN HE COMES BACK + FOR ALL THE PREPOSTEROUS HAT AND THE VACUOUS FACE THERE WAS SOMETHING NOBLE IN THE SIMPLE FAITH OF OUR VISITOR WHICH COMPELLED OUR RESPECT + SHE LAID HER LITTLE BUNDLE OF PAPERS UPON THE TABLE AND WENT HER WAY WITH A PROMISE TO COME AGAIN WHENEVER SHE MIGHT BE SUMMONED + SHERLOCK HOLMES SAT SILENT FOR A FEW MINUTES WITH HIS FINGERTIPS STILL PRESSED TOGETHER HIS LEGS STRETCHED OUT IN FRONT OF HIM AND HIS GAZE DIRECTED UPWARD TO THE CEILING + THEN HE TOOK DOWN FROM THE RACK THE OLD AND OILY CLAY PIPE WHICH WAS TO HIM AS A COUNSELLOR AND HAVING LIT IT HE LEANED BACK IN HIS CHAIR WITH THE THICK BLUE CLOUD WREATHS SPINNING UP FROM HIM AND A LOOK OF INFINITE LANGUOR IN HIS FACE + QUITE AN INTERESTING STUDY THAT MAIDEN HE OBSERVED + I FOUND HER MORE INTERESTING THAN HER LITTLE PROBLEM WHICH BY THE WAY IS RATHER A TRITE ONE + YOU WILL FIND PARALLEL CASES IF YOU CONSULT MY INDEX IN ANDOVER IN SEVENTY SEVEN AND THERE WAS SOMETHING OF THE SORT AT THE HAGUE LAST YEAR + OLD AS IS THE IDEA HOWEVER THERE WERE ONE OR TWO DETAILS WHICH WERE NEW TO ME + BUT THE MAIDEN HERSELF WAS MOST INSTRUCTIVE QUOTE + YOU APPEARED TO READ A GOOD DEAL UPON HER WHICH WAS QUITE INVISIBLE TO ME I REMARKED + NOT INVISIBLE BUT UNNOTICED WATSON + YOU DID NOT KNOW WHERE TO LOOK AND SO YOU MISSED ALL THAT WAS IMPORTANT + I CAN NEVER BRING YOU TO REALIZE THE IMPORTANCE OF SLEEVES THE SUGGESTIVENESS OF THUMB NAILS OR THE GREAT ISSUES THAT MAY HANG FROM A BOOT LACE + NOW WHAT DID YOU GATHER FROM THAT WOMAN'S APPEARANCE + DESCRIBE IT + WELL SHE HAD A SLATE COLOURED BROAD BRIMMED STRAW HAT WITH A FEATHER OF A BRICKISH RED + HER JACKET WAS BLACK WITH BLACK BEADS SEWN UPON IT AND A FRINGE OF LITTLE BLACK JET ORNAMENTS + HER DRESS WAS BROWN RATHER DARKER THAN COFFEE COLOUR WITH A LITTLE PURPLE PLUSH AT THE NECK AND SLEEVES + HER GLOVES WERE GRAYISH AND WERE WORN THROUGH AT THE RIGHT FOREFINGER + HER BOOTS I DIDN'T OBSERVE + SHE HAD SMALL ROUND HANGING GOLD EARRINGS AND A GENERAL AIR OF BEING FAIRLY WELL TO DO IN A VULGAR COMFORTABLE EASY GOING WAY + SHERLOCK HOLMES CLAPPED HIS HANDS SOFTLY TOGETHER AND CHUCKLED + QUOTE PON MY WORD WATSON YOU ARE COMING ALONG WONDERFULLY + YOU HAVE REALLY DONE VERY WELL INDEED + IT IS TRUE THAT YOU HAVE MISSED EVERYTHING OF IMPORTANCE BUT YOU HAVE HIT UPON THE METHOD AND YOU HAVE A QUICK EYE FOR COLOUR + NEVER TRUST TO GENERAL IMPRESSIONS MY BOY BUT CONCENTRATE YOURSELF UPON DETAILS + MY FIRST GLANCE IS ALWAYS AT A WOMAN'S SLEEVE + IN A MAN IT IS PERHAPS BETTER FIRST TO TAKE THE KNEE OF THE TROUSER + AS YOU OBSERVE THIS WOMAN HAD PLUSH UPON HER SLEEVES WHICH IS A MOST USEFUL MATERIAL FOR SHOWING TRACES + THE DOUBLE LINE A LITTLE ABOVE THE WRIST WHERE THE TYPEWRITIST PRESSES AGAINST THE TABLE WAS BEAUTIFULLY DEFINED + THE SEWING MACHINE OF THE HAND TYPE LEAVES A SIMILAR MARK BUT ONLY ON THE LEFT ARM AND ON THE SIDE OF IT FARTHEST FROM THE THUMB INSTEAD OF BEING RIGHT ACROSS THE BROADEST PART AS THIS WAS + I THEN GLANCED AT HER FACE AND OBSERVING THE DINT OF A PINCE NEZ AT EITHER SIDE OF HER NOSE I VENTURED A REMARK UPON SHORT SIGHT AND TYPEWRITING WHICH SEEMED TO SURPRISE HER + IT SURPRISED ME + BUT SURELY IT WAS OBVIOUS + I WAS THEN MUCH SURPRISED AND INTERESTED ON GLANCING DOWN TO OBSERVE THAT THOUGH THE BOOTS WHICH SHE WAS WEARING WERE NOT UNLIKE EACH OTHER THEY WERE REALLY ODD ONES THE ONE HAVING A SLIGHTLY DECORATED TOE CAP AND THE OTHER A PLAIN ONE + ONE WAS BUTTONED ONLY IN THE TWO LOWER BUTTONS OUT OF FIVE AND THE OTHER AT THE FIRST THIRD AND FIFTH + NOW WHEN YOU SEE THAT A YOUNG LADY OTHERWISE NEATLY DRESSED HAS COME AWAY FROM HOME WITH ODD BOOTS HALF BUTTONED IT IS NO GREAT DEDUCTION TO SAY THAT SHE CAME AWAY IN A HURRY + AND WHAT ELSE + I ASKED KEENLY INTERESTED AS I ALWAYS WAS BY MY FRIEND'S INCISIVE REASONING + QUOTE I NOTED IN PASSING THAT SHE HAD WRITTEN A NOTE BEFORE LEAVING HOME BUT AFTER BEING FULLY DRESSED + YOU OBSERVED THAT HER RIGHT GLOVE WAS TORN AT THE FOREFINGER BUT YOU DID NOT APPARENTLY SEE THAT BOTH GLOVE AND FINGER WERE STAINED WITH VIOLET INK + SHE HAD WRITTEN IN A HURRY AND DIPPED HER PEN TOO DEEP + IT MUST HAVE BEEN THIS MORNING OR THE MARK WOULD NOT REMAIN CLEAR UPON THE FINGER + ALL THIS IS AMUSING THOUGH RATHER ELEMENTARY BUT I MUST GO BACK TO BUSINESS WATSON + WOULD YOU MIND READING ME THE ADVERTISED DESCRIPTION OF MR. HOSMER ANGEL + I HELD THE LITTLE PRINTED SLIP TO THE LIGHT + MISSING IT SAID ON THE MORNING OF THE FOURTEENTH A GENTLEMAN NAMED HOSMER ANGEL + ABOUT FIVE FEET SEVEN INCHES IN HEIGHT STRONGLY BUILT SALLOW COMPLEXION BLACK HAIR A LITTLE BALD IN THE CENTRE BUSHY BLACK SIDE WHISKERS AND MOUSTACHE TINTED GLASSES SLIGHT INFIRMITY OF SPEECH + WAS DRESSED WHEN LAST SEEN IN BLACK FROCK COAT FACED WITH SILK BLACK WAISTCOAT GOLD ALBERT CHAIN AND GRAY HARRIS TWEED TROUSERS WITH BROWN GAITERS OVER ELASTIC SIDED BOOTS + KNOWN TO HAVE BEEN EMPLOYED IN AN OFFICE IN LEADENHALL STREET + ANYBODY BRINGING + THAT WILL DO SAID HOLMES + AS TO THE LETTERS HE CONTINUED GLANCING OVER THEM THEY ARE VERY COMMONPLACE + ABSOLUTELY NO CLUE IN THEM TO MR. ANGEL SAVE THAT HE QUOTES BALZAC ONCE + THERE IS ONE REMARKABLE POINT HOWEVER WHICH WILL NO DOUBT STRIKE YOU QUOTE + THEY ARE TYPEWRITTEN I REMARKED + NOT ONLY THAT BUT THE SIGNATURE IS TYPEWRITTEN + LOOK AT THE NEAT LITTLE HOSMER ANGEL AT THE BOTTOM + THERE IS A DATE YOU SEE BUT NO SUPERSCRIPTION EXCEPT LEADENHALL STREET WHICH IS RATHER VAGUE + THE POINT ABOUT THE SIGNATURE IS VERY SUGGESTIVE IN FACT WE MAY CALL IT CONCLUSIVE + OF WHAT + MY DEAR FELLOW IS IT POSSIBLE YOU DO NOT SEE HOW STRONGLY IT BEARS UPON THE CASE + QUOTE I CANNOT SAY THAT I DO UNLESS IT WERE THAT HE WISHED TO BE ABLE TO DENY HIS SIGNATURE IF AN ACTION FOR BREACH OF PROMISE WERE INSTITUTED QUOTE + NO THAT WAS NOT THE POINT + HOWEVER I SHALL WRITE TWO LETTERS WHICH SHOULD SETTLE THE MATTER + ONE IS TO A FIRM IN THE CITY THE OTHER IS TO THE YOUNG LADY'S STEPFATHER MR. WINDIBANK ASKING HIM WHETHER HE COULD MEET US HERE AT SIX O'CLOCK TOMORROW EVENING + IT IS JUST AS WELL THAT WE SHOULD DO BUSINESS WITH THE MALE RELATIVES + AND NOW DOCTOR WE CAN DO NOTHING UNTIL THE ANSWERS TO THOSE LETTERS COME SO WE MAY PUT OUR LITTLE PROBLEM UPON THE SHELF FOR THE INTERIM + I HAD HAD SO MANY REASONS TO BELIEVE IN MY FRIEND'S SUBTLE POWERS OF REASONING AND EXTRAORDINARY ENERGY IN ACTION THAT I FELT THAT HE MUST HAVE SOME SOLID GROUNDS FOR THE ASSURED AND EASY DEMEANOUR WITH WHICH HE TREATED THE SINGULAR MYSTERY WHICH HE HAD BEEN CALLED UPON TO FATHOM + ONCE ONLY HAD I KNOWN HIM TO FAIL IN THE CASE OF THE KING OF BOHEMIA AND OF THE IRENE ADLER PHOTOGRAPH BUT WHEN I LOOKED BACK TO THE WEIRD BUSINESS OF THE SIGN OF FOUR AND THE EXTRAORDINARY CIRCUMSTANCES CONNECTED WITH A STUDY IN SCARLET I FELT THAT IT WOULD BE A STRANGE TANGLE INDEED WHICH HE COULD NOT UNRAVEL + I LEFT HIM THEN STILL PUFFING AT HIS BLACK CLAY PIPE WITH THE CONVICTION THAT WHEN I CAME AGAIN ON THE NEXT EVENING I WOULD FIND THAT HE HELD IN HIS HANDS ALL THE CLUES WHICH WOULD LEAD UP TO THE IDENTITY OF THE DISAPPEARING BRIDEGROOM OF MISS MARY SUTHERLAND + A PROFESSIONAL CASE OF GREAT GRAVITY WAS ENGAGING MY OWN ATTENTION AT THE TIME AND THE WHOLE OF NEXT DAY I WAS BUSY AT THE BEDSIDE OF THE SUFFERER + IT WAS NOT UNTIL CLOSE UPON SIX O'CLOCK THAT I FOUND MYSELF FREE AND WAS ABLE TO SPRING INTO A HANSOM AND DRIVE TO BAKER STREET HALF AFRAID THAT I MIGHT BE TOO LATE TO ASSIST AT THE DENOUEMENT OF THE LITTLE MYSTERY + I FOUND SHERLOCK HOLMES ALONE HOWEVER HALF ASLEEP WITH HIS LONG THIN FORM CURLED UP IN THE RECESSES OF HIS ARMCHAIR + A FORMIDABLE ARRAY OF BOTTLES AND TEST TUBES WITH THE PUNGENT CLEANLY SMELL OF HYDROCHLORIC ACID TOLD ME THAT HE HAD SPENT HIS DAY IN THE CHEMICAL WORK WHICH WAS SO DEAR TO HIM + WELL HAVE YOU SOLVED IT + I ASKED AS I ENTERED + YES + IT WAS THE BISULPHATE OF BARYTA + QUOTE NO NO THE MYSTERY QUOTE + I CRIED + OH THAT + I THOUGHT OF THE SALT THAT I HAVE BEEN WORKING UPON + THERE WAS NEVER ANY MYSTERY IN THE MATTER THOUGH AS I SAID YESTERDAY SOME OF THE DETAILS ARE OF INTEREST + THE ONLY DRAWBACK IS THAT THERE IS NO LAW I FEAR THAT CAN TOUCH THE SCOUNDREL + WHO WAS HE THEN AND WHAT WAS HIS OBJECT IN DESERTING MISS SUTHERLAND + THE QUESTION WAS HARDLY OUT OF MY MOUTH AND HOLMES HAD NOT YET OPENED HIS LIPS TO REPLY WHEN WE HEARD A HEAVY FOOTFALL IN THE PASSAGE AND A TAP AT THE DOOR + THIS IS THE GIRL'S STEPFATHER MR. JAMES WINDIBANK SAID HOLMES + HE HAS WRITTEN TO ME TO SAY THAT HE WOULD BE HERE AT SIX + COME IN QUOTE + THE MAN WHO ENTERED WAS A STURDY MIDDLE SIZED FELLOW SOME THIRTY YEARS OF AGE CLEAN SHAVEN AND SALLOW SKINNED WITH A BLAND INSINUATING MANNER AND A PAIR OF WONDERFULLY SHARP AND PENETRATING GRAY EYES + HE SHOT A QUESTIONING GLANCE AT EACH OF US PLACED HIS SHINY TOP HAT UPON THE SIDEBOARD AND WITH A SLIGHT BOW SIDLED DOWN INTO THE NEAREST CHAIR + GOOD EVENING MR. JAMES WINDIBANK SAID HOLMES + I THINK THAT THIS TYPEWRITTEN LETTER IS FROM YOU IN WHICH YOU MADE AN APPOINTMENT WITH ME FOR SIX O'CLOCK + YES SIR + I AM AFRAID THAT I AM A LITTLE LATE BUT I AM NOT QUITE MY OWN MASTER YOU KNOW + I AM SORRY THAT MISS SUTHERLAND HAS TROUBLED YOU ABOUT THIS LITTLE MATTER FOR I THINK IT IS FAR BETTER NOT TO WASH LINEN OF THE SORT IN PUBLIC + IT WAS QUITE AGAINST MY WISHES THAT SHE CAME BUT SHE IS A VERY EXCITABLE IMPULSIVE GIRL AS YOU MAY HAVE NOTICED AND SHE IS NOT EASILY CONTROLLED WHEN SHE HAS MADE UP HER MIND ON A POINT + OF COURSE I DID NOT MIND YOU SO MUCH AS YOU ARE NOT CONNECTED WITH THE OFFICIAL POLICE BUT IT IS NOT PLEASANT TO HAVE A FAMILY MISFORTUNE LIKE THIS NOISED ABROAD + BESIDES IT IS A USELESS EXPENSE FOR HOW COULD YOU POSSIBLY FIND THIS HOSMER ANGEL + ON THE CONTRARY SAID HOLMES QUIETLY I HAVE EVERY REASON TO BELIEVE THAT I WILL SUCCEED IN DISCOVERING MR. HOSMER ANGEL + MR. WINDIBANK GAVE A VIOLENT START AND DROPPED HIS GLOVES + QUOTE I AM DELIGHTED TO HEAR IT QUOTE HE SAID + IT IS A CURIOUS THING REMARKED HOLMES THAT A TYPEWRITER HAS REALLY QUITE AS MUCH INDIVIDUALITY AS A MAN'S HANDWRITING + UNLESS THEY ARE QUITE NEW NO TWO OF THEM WRITE EXACTLY ALIKE + SOME LETTERS GET MORE WORN THAN OTHERS AND SOME WEAR ONLY ON ONE SIDE + NOW YOU REMARK IN THIS NOTE OF YOURS MR. WINDIBANK THAT IN EVERY CASE THERE IS SOME LITTLE SLURRING OVER OF THE E. AND A SLIGHT DEFECT IN THE TAIL OF THE R. + THERE ARE FOURTEEN OTHER CHARACTERISTICS BUT THOSE ARE THE MORE OBVIOUS + WE DO ALL OUR CORRESPONDENCE WITH THIS MACHINE AT THE OFFICE AND NO DOUBT IT IS A LITTLE WORN OUR VISITOR ANSWERED GLANCING KEENLY AT HOLMES WITH HIS BRIGHT LITTLE EYES + AND NOW I WILL SHOW YOU WHAT IS REALLY A VERY INTERESTING STUDY MR. WINDIBANK HOLMES CONTINUED + I THINK OF WRITING ANOTHER LITTLE MONOGRAPH SOME OF THESE DAYS ON THE TYPEWRITER AND ITS RELATION TO CRIME + IT IS A SUBJECT TO WHICH I HAVE DEVOTED SOME LITTLE ATTENTION + I HAVE HERE FOUR LETTERS WHICH PURPORT TO COME FROM THE MISSING MAN + THEY ARE ALL TYPEWRITTEN + IN EACH CASE NOT ONLY ARE THE E'S' SLURRED AND THE R'S' TAILLESS BUT YOU WILL OBSERVE IF YOU CARE TO USE MY MAGNIFYING LENS THAT THE FOURTEEN OTHER CHARACTERISTICS TO WHICH I HAVE ALLUDED ARE THERE AS WELL QUOTE + MR. WINDIBANK SPRANG OUT OF HIS CHAIR AND PICKED UP HIS HAT + I CANNOT WASTE TIME OVER THIS SORT OF FANTASTIC TALK MR. HOLMES HE SAID + IF YOU CAN CATCH THE MAN CATCH HIM AND LET ME KNOW WHEN YOU HAVE DONE IT + CERTAINLY SAID HOLMES STEPPING OVER AND TURNING THE KEY IN THE DOOR + I LET YOU KNOW THEN THAT I HAVE CAUGHT HIM + WHAT WHERE SHOUTED MR. WINDIBANK TURNING WHITE TO HIS LIPS AND GLANCING ABOUT HIM LIKE A RAT IN A TRAP + QUOTE OH IT WON'T DO REALLY IT WON'T QUOTE SAID HOLMES SUAVELY + THERE IS NO POSSIBLE GETTING OUT OF IT MR. WINDIBANK + IT IS QUITE TOO TRANSPARENT AND IT WAS A VERY BAD COMPLIMENT WHEN YOU SAID THAT IT WAS IMPOSSIBLE FOR ME TO SOLVE SO SIMPLE A QUESTION + THAT'S RIGHT + SIT DOWN AND LET US TALK IT OVER + OUR VISITOR COLLAPSED INTO A CHAIR WITH A GHASTLY FACE AND A GLITTER OF MOISTURE ON HIS BROW + IT IT'S NOT ACTIONABLE HE STAMMERED + I AM VERY MUCH AFRAID THAT IT IS NOT + BUT BETWEEN OURSELVES WINDIBANK IT WAS AS CRUEL AND SELFISH AND HEARTLESS A TRICK IN A PETTY WAY AS EVER CAME BEFORE ME + NOW LET ME JUST RUN OVER THE COURSE OF EVENTS AND YOU WILL CONTRADICT ME IF I GO WRONG + THE MAN SAT HUDDLED UP IN HIS CHAIR WITH HIS HEAD SUNK UPON HIS BREAST LIKE ONE WHO IS UTTERLY CRUSHED + HOLMES STUCK HIS FEET UP ON THE CORNER OF THE MANTELPIECE AND LEANING BACK WITH HIS HANDS IN HIS POCKETS BEGAN TALKING RATHER TO HIMSELF AS IT SEEMED THAN TO US + QUOTE THE MAN MARRIED A WOMAN VERY MUCH OLDER THAN HIMSELF FOR HER MONEY QUOTE SAID HE QUOTE AND HE ENJOYED THE USE OF THE MONEY OF THE DAUGHTER AS LONG AS SHE LIVED WITH THEM + IT WAS A CONSIDERABLE SUM FOR PEOPLE IN THEIR POSITION AND THE LOSS OF IT WOULD HAVE MADE A SERIOUS DIFFERENCE + IT WAS WORTH AN EFFORT TO PRESERVE IT + THE DAUGHTER WAS OF A GOOD AMIABLE DISPOSITION BUT ALFECTIONATE AND WARM HEARTED IN HER WAYS. SO THAT IT WAS EVIDENT THAT WITH HER FAIR PERSONAL ADVANTAGES AND HER LITTLE INCOME SHE WOULD NOT BE ALLOWED TO REMAIN SINGLE LONG + NOW HER MARRIAGE WOULD MEAN OF COURSE THE LOSS OF A HUNDRED A YEAR SO WHAT DOES HER STEPFATHER DO TO PREVENT IT + HE TAKES THE OBVIOUS COURSE OF KEEPING HER AT HOME AND FORBIDDING HER TO SEEK THE COMPANY OF PEOPLE OF HER OWN AGE + BUT SOON HE FOUND THAT THAT WOULD NOT ANSWER FOREVER + SHE BECAME RESTIVE INSISTED UPON HER RIGHTS AND FINALLY ANNOUNCED HER POSITIVE INTENTION OF GOING TO A CERTAIN BALL + WHAT DOES HER CLEVER STEPFATHER DO THEN + HE CONCEIVES AN IDEA MORE CREDITABLE TO HIS HEAD THAN TO HIS HEART + WITH THE CONNIVANCE AND ASSISTANCE OF HIS WIFE HE DISGUISED HIMSELF COVERED THOSE KEEN EYES WITH TINTED GLASSES MASKED THE FACE WITH A MOUSTACHE AND A PAIR OF BUSHY WHISKERS SUNK THAT CLEAR VOICE INTO AN INSINUATING WHISPER AND DOUBLY SECURE ON ACCOUNT OF THE GIRL'S SHORT SIGHT HE APPEARS AS MR. HOSMER ANGEL AND KEEPS OFF OTHER LOVERS BY MAKING LOVE HIMSELF + IT WAS ONLY A JOKE AT FIRST GROANED OUR VISITOR + WE NEVER THOUGHT THAT SHE WOULD HAVE BEEN SO CARRIED AWAY + VERY LIKELY NOT + HOWEVER THAT MAY BE THE YOUNG LADY WAS VERY DECIDEDLY CARRIED AWAY AND HAVING QUITE MADE UP HER MIND THAT HER STEPFATHER WAS IN FRANCE THE SUSPICION OF TREACHERY NEVER FOR AN INSTANT ENTERED HER MIND + SHE WAS FLATTERED BY THE GENTLEMAN'S ATTENTIONS AND THE EFFECT WAS INCREASED BY THE LOUDLY EXPRESSED ADMIRATION OF HER MOTHER + THEN MR. ANGEL BEGAN TO CALL FOR IT WAS OBVIOUS THAT THE MATTER SHOULD BE PUSHED AS FAR AS IT WOULD GO IF A REAL EFFECT WERE TO BE PRODUCED + THERE WERE MEETINGS AND AN ENGAGEMENT WHICH WOULD FINALLY SECURE THE GIRL'S AFFECTIONS FROM TURNING TOWARDS ANYONE ELSE + BUT THE DECEPTION COULD NOT BE KEPT UP FOREVER + THESE PRETENDED JOURNEYS TO FRANCE WERE RATHER CUMBROUS + THE THING TO DO WAS CLEARLY TO BRING THE BUSINESS TO AN END IN SUCH A DRAMATIC MANNER THAT IT WOULD LEAVE A PERMANENT IMPRESSION UPON THE YOUNG LADY'S MIND AND PREVENT HER FROM LOOKING UPON ANY OTHER SUITOR FOR SOME TIME TO COME + HENCE THOSE VOWS OF FIDELITY EXACTED UPON A TESTAMENT AND HENCE ALSO THE ALLUSIONS TO A POSSIBILITY OF SOMETHING HAPPENING ON THE VERY MORNING OF THE WEDDING + JAMES WINDIBANK WISHED MISS SUTHERLAND TO BE SO BOUND TO HOSMER ANGEL AND SO UNCERTAIN AS TO HIS FATE THAT FOR TEN YEARS TO COME AT ANY RATE SHE WOULD NOT LISTEN TO ANOTHER MAN + AS FAR AS THE CHURCH DOOR HE BROUGHT HER AND THEN AS HE COULD GO NO FARTHER HE CONVENIENTLY VANISHED AWAY BY THE OLD TRICK OF STEPPING IN AT ONE DOOR OF A FOUR WHEELER AND OUT AT THE OTHER + I THINK THAT WAS THE CHAIN OF EVENTS MR. WINDIBANK + OUR VISITOR HAD RECOVERED SOMETHING OF HIS ASSURANCE WHILE HOLMES HAD BEEN TALKING AND HE ROSE FROM HIS CHAIR NOW WITH A COLD SNEER UPON HIS PALE FACE + QUOTE IT MAY BE SO OR IT MAY NOT + MR. HOLMES SAID HE. BUT IF YOU ARE SO VERY SHARP YOU OUGHT TO BE SHARP ENOUGH TO KNOW THAT IT IS YOU WHO ARE BREAKING THE LAW NOW AND NOT ME + I HAVE DONE NOTHING ACTIONABLE FROM THE FIRST BUT AS LONG AS YOU KEEP THAT DOOR LOCKED YOU LAY YOURSELF OPEN TO AN ACTION FOR ASSAULT AND ILLEGAL CONSTRAINT + THE LAW CANNOT AS YOU SAY TOUCH YOU SAID HOLMES UNLOCKING AND THROWING OPEN THE DOOR YET THERE NEVER WAS A MAN WHO DESERVED PUNISHMENT MORE + IF THE YOUNG LADY HAS A BROTHER OR A FRIEND HE OUGHT TO LAY A WHIP ACROSS YOUR SHOULDERS + BY JOVE HE CONTINUED FLUSHING UP AT THE SIGHT OF THE BITTER SNEER UPON THE MAN'S FACE IT IS NOT PART OF MY DUTIES TO MY CLIENT BUT HERE'S A HUNTING CROP HANDY AND I THINK I SHALL JUST TREAT MYSELF TO HE TOOK TWO SWIFT STEPS TO THE WHIP BUT BEFORE HE COULD GRASP IT THERE WAS A WILD CLATTER OF STEPS UPON THE STAIRS THE HEAVY HALL DOOR BANGED AND FROM THE WINDOW WE COULD SEE MR. JAMES WINDIBANK RUNNING AT THE TOP OF HIS SPEED DOWN THE ROAD + THERE'S A COLD BLOODED SCOUNDREL SAID HOLMES LAUGHING AS HE THREW HIMSELF DOWN INTO HIS CHAIR ONCE MORE + QUOTE THAT FELLOW WILL RISE FROM CRIME TO CRIME UNTIL HE DOES SOMETHING VERY BAD AND ENDS ON A GALLOWS + THE CASE HAS IN SOME RESPECTS BEEN NOT ENTIRELY DEVOID OF INTEREST + I CANNOT NOW ENTIRELY SEE ALL THE STEPS OF YOUR REASONING I REMARKED + WELL OF COURSE IT WAS OBVIOUS FROM THE FIRST THAT THIS MR. HOSMER ANGEL MUST HAVE SOME STRONG OBJECT FOR HIS CURIOUS CONDUCT AND IT WAS EQUALLY CLEAR THAT THE ONLY MAN WHO REALLY PROFITED BY THE INCIDENT AS FAR AS WE COULD SEE WAS THE STEPFATHER + THEN THE FACT THAT THE TWO MEN WERE NEVER TOGETHER BUT THAT THE ONE ALWAYS APPEARED WHEN THE OTHER WAS AWAY WAS SUGGESTIVE + SO WERE THE TINTED SPECTACLES AND THE CURIOUS VOICE WHICH BOTH HINTED AT A DISGUISE AS DID THE BUSHY WHISKERS + MY SUSPICIONS WERE ALL CONFIRMED BY HIS PECULIAR ACTION IN TYPEWRITING HIS SIGNATURE WHICH OF COURSE INFERRED THAT HIS HANDWRITING WAS SO FAMILIAR TO HER THAT SHE WOULD RECOGNIZE EVEN THE SMALLEST SAMPLE OF IT + YOU SEE ALL THESE ISOLATED FACTS TOGETHER WITH MANY MINOR ONES ALL POINTED IN THE SAME DIRECTION + AND HOW DID YOU VERIFY THEM + QUOTE HAVING ONCE SPOTTED MY MAN IT WAS EASY TO GET CORROBORATION + I KNEW THE FIRM FOR WHICH THIS MAN WORKED + HAVING TAKEN THE PRINTED DESCRIPTION + I ELIMINATED EVERYTHING FROM IT WHICH COULD BE THE RESULT OF A DISGUISE THE WHISKERS THE GLASSES THE VOICE AND I SENT IT TO THE FIRM WITH A REQUEST THAT THEY WOULD INFORM ME WHETHER IT ANSWERED TO THE DESCRIPTION OF ANY OF THEIR TRAVELLERS + I HAD ALREADY NOTICED THE PECULIARITIES OF THE TYPEWRITER AND I WROTE TO THE MAN HIMSELF AT HIS BUSINESS ADDRESS ASKING HIM IF HE WOULD COME HERE + AS I EXPECTED HIS REPLY WAS TYPEWRITTEN AND REVEALED THE SAME TRIVIAL BUT CHARACTERISTIC DEFECTS + THE SAME POST BROUGHT ME A LETTER FROM WESTHOUSE AND MARBANK OF FENCHURCH STREET TO SAY THAT THE DESCRIPTION TALLIED IN EVERY RESPECT WITH THAT OF THEIR EMPLOYEE JAMES WINDIBANK + VOILA TOUT + AND MISS SUTHERLAND + IF I TELL HER SHE WILL NOT BELIEVE ME + YOU MAY REMEMBER THE OLD PERSIAN SAYING THERE IS DANGER FOR HIM WHO TAKETH THE TIGER CUB AND DANGER ALSO FOR WHOSO SNATCHES A DELUSION FROM A WOMAN + THERE IS AS MUCH SENSE IN HAFIZ AS IN HORACE AND AS MUCH KNOWLEDGE OF THE WORLD diff --git a/samples/LMTutorial/train/charles_agustus_milverton.txt b/samples/LMTutorial/train/charles_agustus_milverton.txt new file mode 100755 index 0000000..0717190 --- /dev/null +++ b/samples/LMTutorial/train/charles_agustus_milverton.txt @@ -0,0 +1,452 @@ + IT IS YEARS SINCE THE INCIDENTS OF WHICH I SPEAK TOOK PLACE AND YET IT IS WITH DIFFIDENCE THAT I ALLUDE TO THEM + FOR A LONG TIME EVEN WITH THE UTMOST DISCRETION AND RETICENCE IT WOULD HAVE BEEN IMPOSSIBLE TO MAKE THE FACTS PUBLIC BUT NOW THE PRINCIPAL PERSON CONCERNED IS BEYOND THE REACH OF HUMAN LAW AND WITH DUE SUPPRESSION THE STORY MAY BE TOLD IN SUCH FASHION AS TO INJURE NO ONE + IT RECORDS AN ABSOLUTELY UNIQUE EXPERIENCE IN THE CAREER BOTH OF MR. SHERLOCK HOLMES AND OF MYSELF + THE READER WILL EXCUSE ME IF I CONCEAL THE DATE OR ANY OTHER FACT BY WHICH HE MIGHT TRACE THE ACTUAL OCCURRENCE + WE HAD BEEN OUT FOR ONE OF OUR EVENING RAMBLES HOLMES AND I AND HAD RETURNED ABOUT SIX O'CLOCK ON A COLD FROSTY WINTER'S EVENING + AS HOLMES TURNED UP THE LAMP THE LIGHT FELL UPON A CARD ON THE TABLE + HE GLANCED AT IT AND THEN WITH AN EJACULATION OF DISGUST THREW IT ON THE FLOOR + I PICKED IT UP AND READ CHARLES AUGUSTUS MILVERTON APPLEDORE TOWERS HAMPSTEAD + AGENT + QUOTE WHO IS HE QUOTE + I ASKED + THE WORST MAN IN LONDON HOLMES ANSWERED AS HE SAT DOWN AND STRETCHED HIS LEGS BEFORE THE FIRE + IS ANYTHING ON THE BACK OF THE CARD + I TURNED IT OVER + WILL CALL AT SIX THIRTY C. A. M. I READ + HUM + HE'S ABOUT DUE + DO YOU FEEL A CREEPING SHRINKING SENSATION WATSON WHEN YOU STAND BEFORE THE SERPENTS IN THE ZOO AND SEE THE SLITHERY GLIDING VENOMOUS CREATURES WITH THEIR DEADLY EYES AND WICKED FLATTENED FACES + WELL THAT'S HOW MILVERTON IMPRESSES ME + I'VE HAD TO DO WITH FIFTY MURDERERS IN MY CAREER BUT THE WORST OF THEM NEVER GAVE ME THE REPULSION WHICH I HAVE FOR THIS FELLOW + AND YET I CAN'T GET OUT OF DOING BUSINESS WITH HIM INDEED HE IS HERE AT MY INVITATION + QUOTE BUT WHO IS HE QUOTE + I'LL TELL YOU WATSON + HE IS THE KING OF ALL THE BLACKMAILERS + HEAVEN HELP THE MAN AND STILL MORE THE WOMAN WHOSE SECRET AND REPUTATION COME INTO THE POWER OF MILVERTON + WITH A SMILING FACE AND A HEART OF MARBLE HE WILL SQUEEZE AND SQUEEZE UNTIL HE HAS DRAINED THEM DRY + THE FELLOW IS A GENIUS IN HIS WAY AND WOULD HAVE MADE HIS MARK IN SOME MORE SAVOURY TRADE + HIS METHOD IS AS FOLLOWS HE ALLOWS IT TO BE KNOWN THAT HE IS PREPARED TO PAY VERY HIGH SUMS FOR LETTERS WHICH COMPROMISE PEOPLE OF WEALTH AND POSITION + HE RECEIVES THESE WARES NOT ONLY FROM TREACHEROUS VALETS OR MAIDS BUT FREQUENTLY FROM GENTEEL RUFFIANS WHO HAVE GAINED THE CONFIDENCE AND AFFECTION OF TRUSTING WOMEN + HE DEALS WITH NO NIGGARD HAND + I HAPPEN TO KNOW THAT HE PAID SEVEN HUNDRED POUNDS TO A FOOTMAN FOR A NOTE TWO LINES IN LENGTH AND THAT THE RUIN OF A NOBLE FAMILY WAS THE RESULT + EVERYTHING WHICH IS IN THE MARKET GOES TO MILVERTON AND THERE ARE HUNDREDS IN THIS GREAT CITY WHO TURN WHITE AT HIS NAME + NO ONE KNOWS WHERE HIS GRIP MAY FALL FOR HE IS FAR TOO RICH AND FAR TOO CUNNING TO WORK FROM HAND TO MOUTH + HE WILL HOLD A CARD BACK FOR YEARS IN ORDER TO PLAY IT AT THE MOMENT WHEN THE STAKE IS BEST WORTH WINNING + I HAVE SAID THAT HE IS THE WORST MAN IN LONDON AND I WOULD ASK YOU HOW COULD ONE COMPARE THE RUFFIAN WHO IN HOT BLOOD BLUDGEONS HIS MATE WITH THIS MAN WHO METHODICALLY AND AT HIS LEISURE TORTURES THE SOUL AND WRINGS THE NERVES IN ORDER TO ADD TO HIS ALREADY SWOLLEN MONEY BAGS + I HAD SELDOM HEARD MY FRIEND SPEAK WITH SUCH INTENSITY OF FEELING + BUT SURELY SAID I THE FELLOW MUST BE WITHIN THE GRASP OF THE LAW + TECHNICALLY NO DOUBT BUT PRACTICALLY NOT + WHAT WOULD IT PROFIT A WOMAN FOR EXAMPLE TO GET HIM A FEW MONTHS' IMPRISONMENT IF HER OWN RUIN MUST IMMEDIATELY FOLLOW + HIS VICTIMS DARE NOT HIT BACK + IF EVER HE BLACKMAILED AN INNOCENT PERSON THEN INDEED WE SHOULD HAVE HIM BUT HE IS AS CUNNING AS THE EVIL ONE + NO NO WE MUST FIND OTHER WAYS TO FIGHT HIM + QUOTE AND WHY IS HE HERE QUOTE + BECAUSE AN ILLUSTRIOUS CLIENT HAS PLACED HER PITEOUS CASE IN MY HANDS + IT IS THE LADY EVA BLACKWELL THE MOST BEAUTIFUL DEBUTANTE OF LAST SEASON + SHE IS TO BE MARRIED IN A FORTNIGHT TO THE EARL OF DOVERCOURT + THIS FIEND HAS SEVERAL IMPRUDENT LETTERS IMPRUDENT WATSON NOTHING WORSE WHICH WERE WRITTEN TO AN IMPECUNIOUS YOUNG SQUIRE IN THE COUNTRY + THEY WOULD SUFFICE TO BREAK OFF THE MATCH + MILVERTON WILL SEND THE LETTERS TO THE EARL UNLESS A LARGE SUM OF MONEY IS PAID HIM + I HAVE BEEN COMMISSIONED TO MEET HIM AND TO MAKE THE BEST TERMS I CAN + AT THAT INSTANT THERE WAS A CLATTER AND A RATTLE IN THE STREET BELOW + LOOKING DOWN I SAW A STATELY CARRIAGE AND PAIR THE BRILLIANT LAMPS GLEAMING ON THE GLOSSY HAUNCHES OF THE NOBLE CHESTNUTS + A FOOTMAN OPENED THE DOOR AND A SMALL STOUT MAN IN A SHAGGY ASTRAKHAN OVERCOAT DESCENDED + A MINUTE LATER HE WAS IN THE ROOM + CHARLES AUGUSTUS MILVERTON WAS A MAN OF FIFTY WITH A LARGE INTELLECTUAL HEAD A ROUND PLUMP HAIRLESS FACE A PERPETUAL FROZEN SMILE AND TWO KEEN GRAY EYES WHICH GLEAMED BRIGHTLY FROM BEHIND BROAD GOLD RIMMED GLASSES + THERE WAS SOMETHING OF MR. PICKWICK'S BENEVOLENCE IN HIS APPEARANCE MARRED ONLY BY THE INSINCERITY OF THE FIXED SMILE AND BY THE HARD GLITTER OF THOSE RESTLESS AND PENETRATING EYES + HIS VOICE WAS AS SMOOTH AND SUAVE AS HIS COUNTENANCE AS HE ADVANCED WITH A PLUMP LITTLE HAND EXTENDED MURMURING HIS REGRET FOR HAVING MISSED US AT HIS FIRST VISIT + HOLMES DISREGARDED THE OUTSTRETCHED HAND AND LOOKED AT HIM WITH A FACE OF GRANITE + MILVERTON'S SMILE BROADENED HE SHRUGGED HIS SHOULDERS REMOVED HIS OVERCOAT FOLDED IT WITH GREAT DELIBERATION OVER THE BACK OF A CHAIR AND THEN TOOK A SEAT + THIS GENTLEMAN SAID HE WITH A WAVE IN MY DIRECTION + IS IT DISCREET + IS IT RIGHT + QUOTE DOCTOR WATSON IS MY FRIEND AND PARTNER QUOTE + VERY GOOD MR. HOLMES + IT IS ONLY IN YOUR CLIENT'S INTERESTS THAT I PROTESTED + THE MATTER IS SO VERY DELICATE + DOCTOR WATSON HAS ALREADY HEARD OF IT + THEN WE CAN PROCEED TO BUSINESS + YOU SAY THAT YOU ARE ACTING FOR LADY EVA + HAS SHE EMPOWERED YOU TO ACCEPT MY TERMS + QUOTE WHAT ARE YOUR TERMS QUOTE + SEVEN THOUSAND POUNDS + AND THE ALTERNATIVE + MY DEAR SIR IT IS PAINFUL FOR ME TO DISCUSS IT BUT IF THE MONEY IS NOT PAID ON THE FOURTEENTH THERE CERTAINLY WILL BE NO MARRIAGE ON THE EIGHTEENTH + HIS INSUFFERABLE SMILE WAS MORE COMPLACENT THAN EVER + HOLMES THOUGHT FOR A LITTLE + YOU APPEAR TO ME HE SAID AT LAST TO BE TAKING MATTERS TOO MUCH FOR GRANTED + I AM OF COURSE FAMILIAR WITH THE CONTENTS OF THESE LETTERS + MY CLIENT WILL CERTAINLY DO WHAT I MAY ADVISE + I SHALL COUNSEL HER TO TELL HER FUTURE HUSBAND THE WHOLE STORY AND TO TRUST TO HIS GENEROSITY + MILVERTON CHUCKLED + QUOTE YOU EVIDENTLY DO NOT KNOW THE EARL QUOTE SAID HE + FROM THE BAFFLED LOOK UPON HOLMES'S FACE I COULD SEE CLEARLY THAT HE DID + WHAT HARM IS THERE IN THE LETTERS HE ASKED + THEY ARE SPRIGHTLY VERY SPRIGHTLY MILVERTON ANSWERED + THE LADY WAS A CHARMING CORRESPONDENT + BUT I CAN ASSURE YOU THAT THE EARL OF DOVERCOURT WOULD FAIL TO APPRECIATE THEM + HOWEVER SINCE YOU THINK OTHERWISE WE WILL LET IT REST AT THAT + IT IS PURELY A MATTER OF BUSINESS + IF YOU THINK THAT IT IS IN THE BEST INTERESTS OF YOUR CLIENT THAT THESE LETTERS SHOULD BE PLACED IN THE HANDS OF THE EARL THEN YOU WOULD INDEED BE FOOLISH TO PAY SO LARGE A SUM OF MONEY TO REGAIN THEM + HE ROSE AND SEIZED HIS ASTRAKHAN COAT + HOLMES WAS GRAY WITH ANGER AND MORTIFICATION + WAIT A LITTLE HE SAID + QUOTE YOU GO TOO FAST + WE SHOULD CERTAINLY MAKE EVERY EFFORT TO AVOID SCANDAL IN SO DELICATE A MATTER + MILVERTON RELAPSED INTO HIS CHAIR + I WAS SURE THAT YOU WOULD SEE IT IN THAT LIGHT HE PURRED + AT THE SAME TIME HOLMES CONTINUED LADY EVA IS NOT A WEALTHY WOMAN + I ASSURE YOU THAT TWO THOUSAND POUNDS WOULD BE A DRAIN UPON HER RESOURCES AND THAT THE SUM YOU NAME IS UTTERLY BEYOND HER POWER + I BEG THEREFORE THAT YOU WILL MODERATE YOUR DEMANDS AND THAT YOU WILL RETURN THE LETTERS AT THE PRICE I INDICATE WHICH IS I ASSURE YOU THE HIGHEST THAT YOU CAN GET + MILVERTON'S SMILE BROADENED AND HIS EYES TWINKLED HUMOROUSLY + I AM AWARE THAT WHAT YOU SAY IS TRUE ABOUT THE LADY'S RESOURCES SAID HE + QUOTE AT THE SAME TIME YOU MUST ADMIT THAT THE OCCASION OF A LADY'S MARRIAGE IS A VERY SUITABLE TIME FOR HER FRIENDS AND RELATIVES TO MAKE SOME LITTLE EFFORT UPON HER BEHALF + THEY MAY HESITATE AS TO AN ACCEPTABLE WEDDING PRESENT + LET ME ASSURE THEM THAT THIS LITTLE BUNDLE OF LETTERS WOULD GIVE MORE JOY THAN ALL THE CANDELABRA AND BUTTER DISHES IN LONDON + IT IS IMPOSSIBLE SAID HOLMES + DEAR ME DEAR ME HOW UNFORTUNATE CRIED MILVERTON TAKING OUT A BULKY POCKETBOOK + I CANNOT HELP THINKING THAT LADIES ARE ILL ADVISED IN NOT MAKING AN EFFORT + LOOK AT THIS + HE HELD UP A LITTLE NOTE WITH A COAT OF ARMS UPON THE ENVELOPE + QUOTE THAT BELONGS TO WELL PERHAPS IT IS HARDLY FAIR TO TELL THE NAME UNTIL TO MORROW MORNING + BUT AT THAT TIME IT WILL BE IN THE HANDS OF THE LADY'S HUSBAND + AND ALL BECAUSE SHE WILL NOT FIND A BEGGARLY SUM WHICH SHE COULD GET BY TURNING HER DIAMONDS INTO PASTE + IT IS SUCH A PITY + NOW YOU REMEMBER THE SUDDEN END OF THE ENGAGEMENT BETWEEN THE HONOURABLE MISS MILES AND COLONEL DORKING + ONLY TWO DAYS BEFORE THE WEDDING THERE WAS A PARAGRAPH IN THE MORNING POST TO SAY THAT IT WAS ALL OFF + AND WHY + IT IS ALMOST INCREDIBLE BUT THE ABSURD SUM OF TWELVE HUNDRED POUNDS WOULD HAVE SETTLED THE WHOLE QUESTION + IS IT NOT PITIFUL + AND HERE I FIND YOU A MAN OF SENSE BOGGLING ABOUT TERMS WHEN YOUR CLIENT'S FUTURE AND HONOUR ARE AT STAKE + YOU SURPRISE ME MR. HOLMES + WHAT I SAY IS TRUE HOLMES ANSWERED + THE MONEY CANNOT BE FOUND + SURELY IT IS BETTER FOR YOU TO TAKE THE SUBSTANTIAL SUM WHICH I OFFER THAN TO RUIN THIS WOMAN'S CAREER WHICH CAN PROFIT YOU IN NO WAY + THERE YOU MAKE A MISTAKE MR. HOLMES + AN EXPOSURE WOULD PROFIT ME INDIRECTLY TO A CONSIDERABLE EXTENT + I HAVE EIGHT OR TEN SIMILAR CASES MATURING + IF IT WAS CIRCULATED AMONG THEM THAT I HAD MADE A SEVERE EXAMPLE OF THE LADY EVA I SHOULD FIND ALL OF THEM MUCH MORE OPEN TO REASON + YOU SEE MY POINT QUOTE + HOLMES SPRANG FROM HIS CHAIR + GET BEHIND HIM WATSON + DON'T LET HIM OUT + NOW SIR LET US SEE THE CONTENTS OF THAT NOTEBOOK + MILVERTON HAD GLIDED AS QUICK AS A RAT TO THE SIDE OF THE ROOM AND STOOD WITH HIS BACK AGAINST THE WALL + MR. HOLMES MR. HOLMES HE SAID TURNING THE FRONT OF HIS COAT AND EXHIBITING THE BUTT OF A LARGE REVOLVER WHICH PROJECTED FROM THE INSIDE POCKET + I HAVE BEEN EXPECTING YOU TO DO SOMETHING ORIGINAL + THIS HAS BEEN DONE SO OFTEN AND WHAT GOOD HAS EVER COME FROM IT + I ASSURE YOU THAT I AM ARMED TO THE TEETH AND I AM PERFECTLY PREPARED TO USE MY WEAPONS KNOWING THAT THE LAW WILL SUPPORT ME + BESIDES YOUR SUPPOSITION THAT I WOULD BRING THE LETTERS HERE IN A NOTEBOOK IS ENTIRELY MISTAKEN + I WOULD DO NOTHING SO FOOLISH + AND NOW GENTLEMEN I HAVE ONE OR TWO LITTLE INTERVIEWS THIS EVENING AND IT IS A LONG DRIVE TO HAMPSTEAD + HE STEPPED FORWARD TOOK UP HIS COAT LAID HIS HAND ON HIS REVOLVER AND TURNED TO THE DOOR + I PICKED UP A CHAIR BUT HOLMES SHOOK HIS HEAD AND I LAID IT DOWN AGAIN + WITH A BOW A SMILE AND A TWINKLE MILVERTON WAS OUT OF THE ROOM AND A FEW MOMENTS AFTER WE HEARD THE SLAM OF THE CARRIAGE DOOR AND THE RATTLE OF THE WHEELS AS HE DROVE AWAY + HOLMES SAT MOTIONLESS BY THE FIRE HIS HANDS BURIED DEEP IN HIS TROUSER POCKETS HIS CHIN SUNK UPON HIS BREAST HIS EYES FIXED UPON THE GLOWING EMBERS + FOR HALF AN HOUR HE WAS SILENT AND STILL + THEN WITH THE GESTURE OF A MAN WHO HAS TAKEN HIS DECISION HE SPRANG TO HIS FEET AND PASSED INTO HIS BEDROOM + A LITTLE LATER A RAKISH YOUNG WORKMAN WITH A GOATEE BEARD AND A SWAGGER LIT HIS CLAY PIPE AT THE LAMP BEFORE DESCENDING INTO THE STREET + QUOTE I'LL BE BACK SOME TIME WATSON QUOTE SAID HE AND VANISHED INTO THE NIGHT + I UNDERSTOOD THAT HE HAD OPENED HIS CAMPAIGN AGAINST CHARLES AUGUSTUS MILVERTON BUT I LITTLE DREAMED THE STRANGE SHAPE WHICH THAT CAMPAIGN WAS DESTINED TO TAKE + FOR SOME DAYS HOLMES CAME AND WENT AT ALL HOURS IN THIS ATTIRE BUT BEYOND A REMARK THAT HIS TIME WAS SPENT AT HAMPSTEAD AND THAT IT WAS NOT WASTED I KNEW NOTHING OF WHAT HE WAS DOING + AT LAST HOWEVER ON A WILD TEMPESTUOUS EVENING WHEN THE WIND SCREAMED AND RATTLED AGAINST THE WINDOWS HE RETURNED FROM HIS LAST EXPEDITION AND HAVING REMOVED HIS DISGUISE HE SAT BEFORE THE FIRE AND LAUGHED HEARTILY IN HIS SILENT INWARD FASHION + YOU WOULD NOT CALL ME A MARRYING MAN WATSON + NO INDEED + YOU'LL BE INTERESTED TO HEAR THAT I'M ENGAGED + MY DEAR FELLOW + I CONGRAT + QUOTE TO MILVERTON'S HOUSEMAID QUOTE + GOOD HEAVENS HOLMES + I WANTED INFORMATION WATSON + SURELY YOU HAVE GONE TOO FAR + IT WAS A MOST NECESSARY STEP + I AM A PLUMBER WITH A RISING BUSINESS ESCOTT BY NAME + I HAVE WALKED OUT WITH HER EACH EVENING AND I HAVE TALKED WITH HER + GOOD HEAVENS THOSE TALKS + HOWEVER I HAVE GOT ALL I WANTED + I KNOW MILVERTON'S HOUSE AS I KNOW THE PALM OF MY HAND + QUOTE BUT THE GIRL HOLMES QUOTE + HE SHRUGGED HIS SHOULDERS + YOU CAN'T HELP IT MY DEAR WATSON + YOU MUST PLAY YOUR CARDS AS BEST YOU CAN WHEN SUCH A STAKE IS ON THE TABLE + HOWEVER + I REJOICE TO SAY THAT I HAVE A HATED RIVAL WHO WILL CERTAINLY CUT ME OUT THE INSTANT THAT MY BACK IS TURNED + WHAT A SPLENDID NIGHT IT IS + YOU LIKE THIS WEATHER + IT SUITS MY PURPOSE + WATSON I MEAN TO BURGLE MILVERTON'S HOUSE TO NIGHT + I HAD A CATCHING OF THE BREATH AND MY SKIN WENT COLD AT THE WORDS WHICH WERE SLOWLY UTTERED IN A TONE OF CONCENTRATED RESOLUTION + AS A FLASH OF LIGHTNING IN THE NIGHT SHOWS UP IN AN INSTANT EVERY DETAIL OF A WILD LANDSCAPE SO AT ONE GLANCE I SEEMED TO SEE EVERY POSSIBLE RESULT OF SUCH AN ACTION THE DETECTION THE CAPTURE THE HONOURED CAREER ENDING IN IRREPARABLE FAILURE AND DISGRACE MY FRIEND HIMSELF LYING AT THE MERCY OF THE ODIOUS MILVERTON + QUOTE FOR HEAVEN'S SAKE HOLMES THINK WHAT YOU ARE DOING QUOTE I CRIED + MY DEAR FELLOW I HAVE GIVEN IT EVERY CONSIDERATION + I AM NEVER PRECIPITATE IN MY ACTIONS NOR WOULD I ADOPT SO ENERGETIC AND INDEED SO DANGEROUS A COURSE IF ANY OTHER WERE POSSIBLE + LET US LOOK AT THE MATTER CLEARLY AND FAIRLY + I SUPPOSE THAT YOU WILL ADMIT THAT THE ACTION IS MORALLY JUSTIFIABLE THOUGH TECHNICALLY CRIMINAL + TO BURGLE HIS HOUSE IS NO MORE THAN TO FORCIBLY TAKE HIS POCKETBOOK AN ACTION IN WHICH YOU WERE PREPARED TO AID ME + I TURNED IT OVER IN MY MIND + YES I SAID IT IS MORALLY JUSTIFIABLE SO LONG AS OUR OBJECT IS TO TAKE NO ARTICLES SAVE THOSE WHICH ARE USED FOR AN ILLEGAL PURPOSE + EXACTLY + SINCE IT IS MORALLY JUSTIFIABLE I HAVE ONLY TO CONSIDER THE QUESTION OF PERSONAL RISK + SURELY A GENTLEMAN SHOULD NOT LAY MUCH STRESS UPON THIS WHEN A LADY IS IN MOST DESPERATE NEED OF HIS HELP + QUOTE YOU WILL BE IN SUCH A FALSE POSITION QUOTE + WELL THAT IS PART OF THE RISK + THERE IS NO OTHER POSSIBLE WAY OF REGAINING THESE LETTERS + THE UNFORTUNATE LADY HAS NOT THE MONEY AND THERE ARE NONE OF HER PEOPLE IN WHOM SHE COULD CONFIDE + TO MORROW IS THE LAST DAY OF GRACE AND UNLESS WE CAN GET THE LETTERS TO NIGHT THIS VILLAIN WILL BE AS GOOD AS HIS WORD AND WILL BRING ABOUT HER RUIN + I MUST THEREFORE ABANDON MY CLIENT TO HER FATE OR I MUST PLAY THIS LAST CARD + BETWEEN OURSELVES WATSON IT'S A SPORTING DUEL BETWEEN THIS FELLOW MILVERTON AND ME + HE HAD AS YOU SAW THE BEST OF THE FIRST EXCHANGES BUT MY SELF RESPECT AND MY REPUTATION ARE CONCERNED TO FIGHT IT TO A FINISH + WELL I DON'T LIKE IT BUT I SUPPOSE IT MUST BE SAID I + WHEN DO WE START + YOU ARE NOT COMING + QUOTE THEN YOU ARE NOT GOING QUOTE SAID I. QUOTE I GIVE YOU MY WORD OF HONOUR AND I NEVER BROKE'IT IN MY LIFE THAT I WILL TAKE A CAB STRAIGHT TO THE POLICE STATION AND GIVE YOU AWAY UNLESS YOU LET ME SHARE THIS ADVENTURE WITH YOU QUOTE + YOU CAN'T HELP ME + HOW DO YOU KNOW THAT + YOU CAN'T TELL WHAT MAY HAPPEN + ANYWAY MY RESOLUTION IS TAKEN + OTHER PEOPLE BESIDES YOU HAVE SELF RESPECT AND EVEN REPUTATIONS + HOLMES HAD LOOKED ANNOYED BUT HIS BROW CLEARED AND HE CLAPPED ME ON THE SHOULDER + WELL WELL MY DEAR FELLOW BE IT SO + WE HAVE SHARED THIS SAME ROOM FOR SOME YEARS AND IT WOULD BE AMUSING IF WE ENDED BY SHARING THE SAME CELL + YOU KNOW WATSON I DON'T MIND CONFESSING TO YOU THAT I HAVE ALWAYS HAD AN IDEA THAT I WOULD HAVE MADE A HIGHLY EFFICIENT CRIMINAL + THIS IS THE CHANCE OF MY LIFETIME IN THAT DIRECTION + SEE HERE + HE TOOK A NEAT LITTLE LEATHER CASE OUT OF A DRAWER AND OPENING IT HE EXHIBITED A NUMBER OF SHINING INSTRUMENTS + QUOTE THIS IS A FIRST CLASS UP TO DATE BURGLING KIT WITH NICKEL PLATED JEMMY DIAMOND TIPPED GLASS CUTTER ADAPTABLE KEYS AND EVERY MODERN IMPROVEMENT WHICH THE MARCH OF CIVILIZATION DEMANDS + HERE TOO IS MY DARK LANTERN + EVERYTHING IS IN ORDER + HAVE YOU A PAIR OF SILENT SHOES + I HAVE RUBBER SOLED TENNIS SHOES + EXCELLENT + AND A MASK + I CAN MAKE A COUPLE OUT OF BLACK SILK + QUOTE I CAN SEE THAT YOU HAVE A STRONG NATURAL TURN FOR THIS SORT OF THING + VERY GOOD DO YOU MAKE THE MASKS + WE SHALL HAVE SOME COLD SUPPER BEFORE WE START + IT IS NOW NINE THIRTY + AT ELEVEN WE SHALL DRIVE AS FAR AS CHURCH ROW + IT IS A QUARTER OF AN HOUR'S WALK FROM THERE TO APPLEDORE TOWERS + WE SHALL BE AT WORK BEFORE MIDNIGHT + MILVERTON IS A HEAVY SLEEPER AND RETIRES PUNCTUALLY AT TEN THIRTY + WITH ANY LUCK WE SHOULD BE BACK HERE BY TWO WITH THE LADY EVA'S LETTERS IN MY POCKET + HOLMES AND I PUT ON OUR DRESS CLOTHES SO THAT WE MIGHT APPEAR TO BE TWO THEATRE GOERS HOMEWARD BOUND + IN OXFORD STREET WE PICKED UP A HANSOM AND DROVE TO AN ADDRESS IN HAMPSTEAD + HERE WE PAID OFF OUR CAB AND WITH OUR GREAT COATS BUTTONED UP FOR IT WAS BITTERLY COLD AND THE WIND SEEMED TO BLOW THROUGH US WE WALKED ALONG THE EDGE OF THE HEATH + IT'S A BUSINESS THAT NEEDS DELICATE TREATMENT SAID HOLMES + THESE DOCUMENTS ARE CONTAINED IN A SAFE IN THE FELLOW'S STUDY AND THE STUDY IS THE ANTE ROOM OF HIS BED CHAMBER + ON THE OTHER HAND LIKE ALL THESE STOUT LITTLE MEN WHO DO THEMSELVES WELL HE IS A PLETHORIC SLEEPER + AGATHA THAT'S MY FIANCEE SAYS IT IS A JOKE IN THE SERVANTS' HALL THAT IT'S IMPOSSIBLE TO WAKE THE MASTER + HE HAS A SECRETARY WHO IS DEVOTED TO HIS INTERESTS AND NEVER BUDGES FROM THE STUDY ALL DAY + THAT'S WHY WE ARE GOING AT NIGHT + THEN HE HAS A BEAST OF A DOG WHICH ROAMS THE GARDEN + I MET AGATHA LATE THE LAST TWO EVENINGS AND SHE LOCKS THE BRUTE UP SO AS TO GIVE ME A CLEAR RUN + THIS IS THE HOUSE THIS BIG ONE IN ITS OWN GROUNDS + THROUGH THE GATE NOW TO THE RIGHT AMONG THE LAURELS + WE MIGHT PUT ON OUR MASKS HERE I THINK + YOU SEE THERE IS NOT A GLIMMER OF LIGHT IN ANY OF THE WINDOWS AND EVERYTHING IS WORKING SPLENDLDLY + WITH OUR BLACK SILK FACE COVERINGS WHICH TURNED US INTO TWO OF THE MOST TRUCULENT FIGURES IN LONDON WE STOLE UP TO THE SILENT GLOOMY HOUSE + A SORT OF TILED VERANDA EXTENDED ALONG ONE SIDE OF IT LINED BY SEVERAL WINDOWS AND TWO DOORS + THAT'S HIS BEDROOM HOLMES WHISPERED + QUOTE THIS DOOR OPENS STRAIGHT INTO THE STUDY + IT WOULD SUIT US BEST BUT IT IS BOLTED AS WELL AS LOCKED AND WE SHOULD MAKE TOO MUCH NOISE GETTING IN + COME ROUND HERE + THERE'S A GREENHOUSE WHICH OPENS INTO THE DRAWING ROOM + THE PLACE WAS LOCKED BUT HOLMES REMOVED A CIRCLE OF GLASS AND TURNED THE KEY FROM THE INSIDE + AN INSTANT AFTERWARDS HE HAD CLOSED THE DOOR BEHIND US AND WE HAD BECOME FELONS IN THE EYES OF THE LAW + THE THICK WARM AIR OF THE CONSERVATORY AND THE RICH CHOKING FRAGRANCE OF EXOTIC PLANTS TOOK US BY THE THROAT + HE SEIZED MY HAND IN THE DARKNESS AND LED ME SWIFTLY PAST BANKS OF SHRUBS WHICH BRUSHED AGAINST OUR FACES + HOLMES HAD REMARKABLE POWERS CAREFULLY CULTIVATED OF SEEING IN THE DARK + STILL HOLDING MY HAND IN ONE OF HIS HE OPENED A DOOR AND I WAS VAGUELY CONSCIOUS THAT WE HAD ENTERED A LARGE ROOM IN WHICH A CIGAR HAD BEEN SMOKED NOT LONG BEFORE + HE FELT HIS WAY AMONG THE FURNITURE OPENED ANOTHER DOOR AND CLOSED IT BEHIND US + PUTTING OUT MY HAND I FELT SEVERAL COATS HANGING FROM THE WALL AND I UNDERSTOOD THAT I WAS IN A PASSAGE + WE PASSED ALONG IT AND HOLMES VERY GENTLY OPENED A DOOR UPON THE RIGHT HAND SIDE + SOMETHING RUSHED OUT AT US AND MY HEART SPRANG INTO MY MOUTH BUT I COULD HAVE LAUGHED WHEN I REALIZED THAT IT WAS THE CAT + A FIRE WAS BURNING IN THIS NEW ROOM AND AGAIN THE AIR WAS HEAVY WITH TOBACCO SMOKE + HOLMES ENTERED ON TIPTOE WAITED FOR ME TO FOLLOW AND THEN VERY GENTLY CLOSED THE DOOR + WE WERE IN MILVERTON'S STUDY AND A PORTIERE AT THE FARTHER SIDE SHOWED THE ENTRANCE TO HIS BEDROOM + IT WAS A GOOD FIRE AND THE ROOM WAS ILLUMINATED BY IT + NEAR THE DOOR I SAW THE GLEAM OF AN ELECTRIC SWITCH BUT IT WAS UNNECESSARY EVEN IF IT HAD BEEN SAFE TO TURN IT ON + AT ONE SIDE OF THE FIREPLACE WAS A HEAVY CURTAIN WHICH COVERED THE BAY WINDOW WE HAD SEEN FROM OUTSIDE + ON THE OTHER SIDE WAS THE DOOR WHICH COMMUNICATED WITH THE VERANDA + A DESK STOOD IN THE CENTRE WITH A TURNING CHAIR OF SHINING RED LEATHER + OPPOSITE WAS A LARGE BOOKCASE WITH A MARBLE BUST OF ATHENE ON THE TOP + IN THE CORNER BETWEEN THE BOOKCASE AND THE WALL THERE STOOD A TALL GREEN SAFE THE FIRELIGHT FLASHING BACK FROM THE POLISHED BRASS KNOBS UPON ITS FACE + HOLMES STOLE ACROSS AND LOOKED AT IT + THEN HE CREPT TO THE DOOR OF THE BEDROOM AND STOOD WITH SLANTING HEAD LISTENING INTENTLY + NO SOUND CAME FROM WITHIN + MEANWHILE IT HAD STRUCK ME THAT IT WOULD BE WISE TO SECURE OUR RETREAT THROUGH THE OUTER DOOR SO I EXAMINED IT + TO MY AMAZEMENT IT WAS NEITHER LOCKED NOR BOLTED + I TOUCHED HOLMES ON THE ARM AND HE TURNED HIS MASKED FACE IN THAT DIRECTION + I SAW HIM START AND HE WAS EVIDENTLY AS SURPRISED AS I + I DON'T LIKE IT HE WHISPERED PUTTING HIS LIPS TO MY VERY EAR + I CAN'T QUITE MAKE IT OUT + ANYHOW WE HAVE NO TIME TO LOSE + CAN I DO ANYTHING + QUOTE YES STAND BY THE DOOR + IF YOU HEAR ANYONE COME BOLT IT ON THE INSIDE AND WE CAN GET AWAY AS WE CAME + IF THEY COME THE OTHER WAY WE CAN GET THROUGH THE DOOR IF OUR JOB IS DONE OR HIDE BEHIND THESE WINDOW CURTAINS IF IT IS NOT + DO YOU UNDERSTAND + I NODDED AND STOOD BY THE DOOR + MY FIRST FEELING OF FEAR HAD PASSED AWAY AND I THRILLED NOW WITH A KEENER ZEST THAN I HAD EVER ENJOYED WHEN WE WERE THE DEFENDERS OF THE LAW INSTEAD OF ITS DEFIERS + THE HIGH OBJECT OF OUR MISSION THE CONSCIOUSNESS THAT IT WAS UNSELFISH AND CHIVALROUS THE VILLAINOUS CHARACTER OF OUR OPPONENT ALL ADDED TO THE SPORTING INTEREST OF THE ADVENTURE + FAR FROM FEELING GUILTY I REJOICED AND EXULTED IN OUR DANGERS + WITH A GLOW OF ADMIRATION I WATCHED HOLMES UNROLLING HIS CASE OF INSTRUMENTS AND CHOOSING HIS TOOL WITH THE CALM SCIENTIFIC ACCURACY OF A SURGEON WHO PERFORMS A DELICATE OPERATION + I KNEW THAT THE OPENING OF SAFES WAS A PARTICULAR HOBBY WITH HIM AND I UNDERSTOOD THE JOY WHICH IT GAVE HIM TO BE CONFRONTED WITH THIS GREEN AND GOLD MONSTER THE DRAGON WHICH HELD IN ITS MAW THE REPUTATIONS OF MANY FAIR LADIES + TURNING UP THE CUFFS OF HIS DRESS COAT HE HAD PLACED HIS OVERCOAT ON A CHAIR HOLMES LAID OUT TWO DRILLS A JEMMY AND SEVERAL SKELETON KEYS + I STOOD AT THE CENTRE DOOR WITH MY EYES GLANCING AT EACH OF THE OTHERS READY FOR ANY EMERGENCY THOUGH INDEED MY PLANS WERE SOMEWHAT VAGUE AS TO WHAT I SHOULD DO IF WE WERE INTERRUPTED + FOR HALF AN HOUR HOLMES WORKED WITH CONCENTRATED ENERGY LAYING DOWN ONE TOOL PICKING UP ANOTHER HANDLING EACH WITH THE STRENGTH AND DELICACY OF THE TRAINED MECHANIC + FINALLY I HEARD A CLICK THE BROAD GREEN DOOR SWUNG OPEN AND INSIDE I HAD A GLIMPSE OF A NUMBER OF PAPER PACKETS EACH TIED SEALED AND INSCRIBED + HOLMES PICKED ONE OUT BUT IT WAS HARD TO READ BY THE FLICKERING FIRE AND HE DREW OUT HIS LITTLE DARK LANTERN FOR IT WAS TOO DANGEROUS WITH MILVERTON IN THE NEXT ROOM TO SWITCH ON THE ELECTRIC LIGHT + SUDDENLY I SAW HIM HALT LISTEN INTENTLY AND THEN IN AN INSTANT HE HAD SWUNG THE DOOR OF THE SAFE TO PICKED UP HIS COAT STUFFED HIS TOOLS INTO THE POCKETS AND DARTED BEHIND THE WINDOW CURTAIN MOTIONING ME TO DO THE SAME + IT WAS ONLY WHEN I HAD JOINED HIM THERE THAT I HEARD WHAT HAD ALARMED HIS QUICKER SENSES + THERE WAS A NOISE SOMEWHERE WITHIN THE HOUSE + A DOOR SLAMMED IN THE DISTANCE + THEN A CONFUSED DULL MURMUR BROKE ITSELF INTO THE MEASURED THUD OF HEAVY FOOTSTEPS RAPIDLY APPROACHING + THEY WERE IN THE PASSAGE OUTSIDE THE ROOM + THEY PAUSED AT THE DOOR + THE DOOR OPENED + THERE WAS A SHARP SNICK AS THE ELECTRIC LIGHT WAS TURNED ON + THE DOOR CLOSED ONCE MORE AND THE PUNGENT REEK OF A STRONG CIGAR WAS BORNE TO OUR NOSTRILS + THEN THE FOOTSTEPS CONTINUED BACKWARD AND FORWARD BACKWARD AND FORWARD WITHIN A FEW YARDS OF US + FINALLY THERE WAS A CREAK FROM A CHAIR AND THE FOOTSTEPS CEASED + THEN A KEY CLICKED IN A LOCK AND I HEARD THE RUSTLE OF PAPERS + SO FAR I HAD NOT DARED TO LOOK OUT BUT NOW I GENTLY PARTED THE DIVISION OF THE CURTAINS IN FRONT OF ME AND PEEPED THROUGH + FROM THE PRESSURE OF HOLMES'S SHOULDER AGAINST MINE I KNEW THAT HE WAS SHARING MY OBSERVATIONS + RIGHT IN FRONT OF US AND ALMOST WITHIN OUR REACH WAS THE BROAD ROUNDED BACK OF MILVERTON + IT WAS EVIDENT THAT WE HAD ENTIRELY MISCALCULATED HIS MOVEMENTS THAT HE HAD NEVER BEEN TO HIS BEDROOM BUT THAT HE HAD BEEN SITTING UP IN SOME SMOKING OR BILLIARD ROOM IN THE FARTHER WING OF THE HOUSE THE WINDOWS OF WHICH WE HAD NOT SEEN + HIS BROAD GRIZZLED HEAD WITH ITS SHINING PATCH OF BALDNESS WAS IN THE IMMEDIATE FOREGROUND OF OUR VISION + HE WAS LEANING FAR BACK IN THE RED LEATHER CHAIR HIS LEGS OUTSTRETCHED A LONG BLACK CIGAR PROJECTING AT AN ANGLE FROM HIS MOUTH + HE WORE A SEMI MILITARY SMOKING JACKET CLARET COLOURED WITH A BLACK VELVET COLLAR + IN HIS HAND HE HELD A LONG LEGAL DOCUMENT WHICH HE WAS READING IN AN INDOLENT FASHION BLOWING RINGS OF TOBACCO SMOKE FROM HIS LIPS AS HE DID SO + THERE WAS NO PROMISE OF A SPEEDY DEPARTURE IN HIS COMPOSED BEARING AND HIS COMFORTABLE ATTITUDE + I FELT HOLMES'S HAND STEAL INTO MINE AND GIVE ME A REASSURING SHAKE AS IF TO SAY THAT THE SITUATION WAS WITHIN HIS POWERS AND THAT HE WAS EASY IN HIS MIND + I WAS NOT SURE WHETHER HE HAD SEEN WHAT WAS ONLY TOO OBVIOUS FROM MY POSITION THAT THE DOOR OF THE SAFE WAS IMPERFECTLY CLOSED AND THAT MILVERTON MIGHT AT ANY MOMENT OBSERVE IT + IN MY OWN MIND I HAD DETERMINED THAT IF I WERE SURE FROM THE RIGIDITY OF HIS GAZE THAT IT HAD CAUGHT HIS EYE I WOULD AT ONCE SPRING OUT THROW MY GREAT COAT OVER HIS HEAD PINION HIM AND LEAVE THE REST TO HOLMES + BUT MILVERTON NEVER LOOKED UP + HE WAS LANGUIDLY INTERESTED BY THE PAPERS IN HIS HAND AND PAGE AFTER PAGE WAS TURNED AS HE FOLLOWED THE ARGUMENT OF THE LAWYER + AT LEAST I THOUGHT WHEN HE HAS FINISHED THE DOCUMENT AND THE CIGAR HE WILL GO TO HIS ROOM BUT BEFORE HE HAD REACHED THE END OF EITHER THERE CAME A REMARKABLE DEVELOPMENT WHICH TURNED OUR THOUGHTS INTO QUITE ANOTHER CHANNEL + SEVERAL TIMES I HAD OBSERVED THAT MILVERTON LOOKED AT HIS WATCH AND ONCE HE HAD RISEN AND SAT DOWN AGAIN WITH A GESTURE OF IMPATIENCE + THE IDEA HOWEVER THAT HE MIGHT HAVE AN APPOINTMENT AT SO STRANGE AN HOUR NEVER OCCURRED TO ME UNTIL A FAINT SOUND REACHED MY EARS FROM THE VERANDA OUTSIDE + MILVERTON DROPPED HIS PAPERS AND SAT RIGID IN HIS CHAIR + THE SOUND WAS REPEATED AND THEN THERE CAME A GENTLE TAP AT THE DOOR + MILVERTON ROSE AND OPENED IT + WELL SAID HE CURTLY YOU ARE NEARLY HALF AN HOUR LATE + SO THIS WAS THE EXPLANATION OF THE UNLOCKED DOOR AND OF THE NOCTURNAL VIGIL OF MILVERTON + THERE WAS THE GENTLE RUSTLE OF A WOMAN'S DRESS + I HAD CLOSED THE SLIT BETWEEN THE CURTAINS AS MILVERTON'S FACE HAD TURNED IN OUR DIRECTION BUT NOW I VENTURED VERY CAREFULLY TO OPEN IT ONCE MORE + HE HAD RESUMED HIS SEAT THE CIGAR STILL PROJECTING AT AN INSOLENT ANGLE FROM THE CORNER OF HIS MOUTH + IN FRONT OF HIM IN THE FULL GLARE OF THE ELECTRIC LIGHT THERE STOOD A TALL SLIM DARK WOMAN A VEIL OVER HER FACE A MANTLE DRAWN ROUND HER CHIN + HER BREATH CAME QUICK AND FAST AND EVERY INCH OF THE LITHE FIGURE WAS QUIVERING WITH STRONG EMOTION + WELL SAID MILVERTON YOU MADE ME LOSE A GOOD NIGHT'S REST MY DEAR + I HOPE YOU'LL PROVE WORTH IT + YOU COULDN'T COME ANY OTHER TIME EH + THE WOMAN SHOOK HER HEAD + WELL IF YOU COULDN'T YOU COULDN'T + IF THE COUNTESS IS A HARD MISTRESS YOU HAVE YOUR CHANCE TO GET LEVEL WITH HER NOW + BLESS THE GIRL WHAT ARE YOU SHIVERING ABOUT + THAT'S RIGHT + PULL YOURSELF TOGETHER + NOW LET US GET DOWN TO BUSINESS QUOTE + HE TOOK A NOTEBOOK FROM THE DRAWER OF HIS DESK + YOU SAY THAT YOU HAVE FIVE LETTERS WHICH COMPROMISE THE COUNTESS D'ALBERT + YOU WANT TO SELL THEM + I WANT TO BUY THEM + SO FAR SO GOOD + IT ONLY REMAINS TO FIX A PRICE + I SHOULD WANT TO INSPECT THE LETTERS OF COURSE + IF THEY ARE REALLY GOOD SPECIMENS GREAT HEAVENS IS IT YOU + THE WOMAN WITHOUT A WORD HAD RAISED HER VEIL AND DROPPED THE MANTLE FROM HER CHIN + IT WAS A DARK HANDSOME CLEAR CUT FACE WHICH CONFRONTED MILVERTON A FACE WITH A CURVED NOSE STRONG DARK EYEBROWS SHADING HARD GLITTERING EYES AND A STRAIGHT THIN LIPPED MOUTH SET IN A DANGEROUS SMILE + IT IS I SHE SAID THE WOMAN WHOSE LIFE YOU HAVE RUINED + MILVERTON LAUGHED BUT FEAR VIBRATED IN HIS VOICE + YOU WERE SO VERY OBSTINATE SAID HE + WHY DID YOU DRIVE ME TO SUCH EXTREMITIES + I ASSURE YOU I WOULDN'T HURT A FLY OF MY OWN ACCORD BUT EVERY MAN HAS HIS BUSINESS AND WHAT WAS I TO DO + I PUT THE PRICE WELL WITHIN YOUR MEANS + YOU WOULD NOT PAY QUOTE + SO YOU SENT THE LETTERS TO MY HUSBAND AND HE THE NOBLEST GENTLEMAN THAT EVER LIVED A MAN WHOSE BOOTS I WAS NEVER WORTHY TO LACE HE BROKE HIS GALLANT HEART AND DIED + YOU REMEMBER THAT LAST NIGHT WHEN I CAME THROUGH THAT DOOR I BEGGED AND PRAYED YOU FOR MERCY AND YOU LAUGHED IN MY FACE AS YOU ARE TRYING TO LAUGH NOW ONLY YOUR COWARD HEART CANNOT KEEP YOUR LIPS FROM TWITCHING + YES YOU NEVER THOUGHT TO SEE ME HERE AGAIN BUT IT WAS THAT NIGHT WHICH TAUGHT ME HOW I COULD MEET YOU FACE TO FACE AND ALONE + WELL CHARLES MILVERTON WHAT HAVE YOU TO SAY + DON'T IMAGINE THAT YOU CAN BULLY ME SAID HE RISING TO HIS FEET + I HAVE ONLY TO RAISE MY VOICE AND I COULD CALL MY SERVANTS AND HAVE YOU ARRESTED + BUT I WILL MAKE ALLOWANCE FOR YOUR NATURAL ANGER + LEAVE THE ROOM AT ONCE AS YOU CAME AND I WILL SAY NO MORE + THE WOMAN STOOD WITH HER HAND BURIED IN HER BOSOM AND THE SAME DEADLY SMILE ON HER THIN LIPS + QUOTE YOU WILL RUIN NO MORE LIVES AS YOU HAVE RUINED MINE + YOU WILL WRING NO MORE HEARTS AS YOU WRUNG MINE + I WILL FREE THE WORLD OF A POISONOUS THING + TAKE THAT YOU HOUND AND THAT AND THAT AND THAT AND THAT + SHE HAD DRAWN A LITTLE GLEAMING REVOLVER AND EMPTIED BARREL AFTER BARREL INTO MILVERTON'S BODY THE MUZZLE WITHIN TWO FEET OF HIS SHIRT FRONT + HE SHRANK AWAY AND THEN FELL FORWARD UPON THE TABLE COUGHING FURIOUSLY AND CLAWING AMONG THE PAPERS + THEN HE STAGGERED TO HIS FEET RECEIVED ANOTHER SHOT AND ROLLED UPON THE FLOOR + YOU'VE DONE ME HE CRIED AND LAY STILL + THE WOMAN LOOKED AT HIM INTENTLY AND GROUND HER HEEL INTO HIS UPTURNED FACE + SHE LOOKED AGAIN BUT THERE WAS NO SOUND OR MOVEMENT + I HEARD A SHARP RUSTLE THE NIGHT AIR BLEW INTO THE HEATED ROOM AND THE AVENGER WAS GONE + NO INTERFERENCE UPON OUR PART COULD HAVE SAVED THE MAN FROM HIS FATE BUT AS THE WOMAN POURED BULLET AFTER BULLET INTO MILVERTON'S SHRINKING BODY I WAS ABOUT TO SPRING OUT WHEN I FELT HOLMES'S COLD STRONG GRASP UPON MY WRIST + I UNDERSTOOD THE WHOLE ARGUMENT OF THAT FIRM RESTRAINING GRIP THAT IT WAS NO AFFAIR OF OURS THAT JUSTICE HAD OVERTAKEN A VILLAIN THAT WE HAD OUR OWN DUTIES AND OUR OWN OBJECTS WHICH WERE NOT TO BE LOST SIGHT OF + BUT HARDLY HAD THE WOMAN RUSHED FROM THE ROOM WHEN HOLMES WITH SWIFT SILENT STEPS WAS OVER AT THE OTHER DOOR + HE TURNED THE KEY IN THE LOCK + AT THE SAME INSTANT WE HEARD VOICES IN THE HOUSE AND THE SOUND OF HURRYING FEET + THE REVOLVER SHOTS HAD ROUSED THE HOUSEHOLD + WITH PERFECT COOLNESS HOLMES SLIPPED ACROSS TO THE SAFE FILLED HIS TWO ARMS WITH BUNDLES OF LETTERS AND POURED THEM ALL INTO THE FIRE + AGAIN AND AGAIN HE DID IT UNTIL THE SAFE WAS EMPTY + SOMEONE TURNED THE HANDLE AND BEAT UPON THE OUTSIDE OF THE DOOR + HOLMES LOOKED SWIFTLY ROUND + THE LETTER WHICH HAD BEEN THE MESSENGER OF DEATH FOR MILVERTON LAY ALL MOTTLED WITH HIS BLOOD UPON THE TABLE + HOLMES TOSSED IT IN AMONG THE BLAZING PAPERS + THEN HE DREW THE KEY FROM THE OUTER DOOR PASSED THROUGH AFTER ME AND LOCKED IT ON THE OUTSIDE + THIS WAY WATSON SAID HE WE CAN SCALE THE GARDEN WALL IN THIS DIRECTION + I COULD NOT HAVE BELIEVED THAT AN ALARM COULD HAVE SPREAD SO SWIFTLY + LOOKING BACK THE HUGE HOUSE WAS ONE BLAZE OF LIGHT + THE FRONT DOOR WAS OPEN AND FIGURES WERE RUSHING DOWN THE DRIVE + THE WHOLE GARDEN WAS ALIVE WITH PEOPLE AND ONE FELLOW RAISED A VIEW HALLOA AS WE EMERGED FROM THE VERANDA AND FOLLOWED HARD AT OUR HEELS + HOLMES SEEMED TO KNOW THE GROUNDS PERFECTLY AND HE THREADED HIS WAY SWIFTLY AMONG A PLANTATION OF SMALL TREES I CLOSE AT HIS HEELS AND OUR FOREMOST PURSUER PANTING BEHIND US + IT WAS A SIX FOOT WALL WHICH BARRED OUR PATH BUT HE SPRANG TO THE TOP AND OVER + AS I DID THE SAME I FELT THE HAND OF THE MAN BEHIND ME GRAB AT MY ANKLE BUT I KICKED MYSELF FREE AND SCRAMBLED OVER A GRASS STREWN COPING + I FELL UPON MY FACE AMONG SOME BUSHES BUT HOLMES HAD ME ON MY FEET IN AN INSTANT AND TOGETHER WE DASHED AWAY ACROSS THE HUGE EXPANSE OF HAMPSTEAD HEATH + WE HAD RUN TWO MILES I SUPPOSE BEFORE HOLMES AT LAST HALTED AND LISTENED INTENTLY + ALL WAS ABSOLUTE SILENCE BEHIND US + WE HAD SHAKEN OFF OUR PURSUERS AND WERE SAFE + WE HAD BREAKFASTED AND WERE SMOKING OUR MORNING PIPE ON THE DAY AFTER THE REMARKABLE EXPERIENCE WHICH I HAVE RECORDED WHEN MR. LESTRADE OF SCOTLAND YARD VERY SOLEMN AND IMPRESSIVE WAS USHERED INTO OUR MODEST SITTING ROOM + GOOD MORNING MR. HOLMES SAID HE GOOD MORNING + MAY I ASK IF YOU ARE VERY BUSY JUST NOW + QUOTE NOT TOO BUSY TO LISTEN TO YOU QUOTE + I THOUGHT THAT PERHAPS IF YOU HAD NOTHING PARTICULAR ON HAND YOU MIGHT CARE TO ASSIST US IN A MOST REMARKABLE CASE WHICH OCCURRED ONLY LAST NIGHT AT HAMPSTEAD + DEAR ME SAID HOLMES + WHAT WAS THAT + A MURDER A MOST DRAMATIC AND REMARKABLE MURDER + I KNOW HOW KEEN YOU ARE UPON THESE THINGS AND I WOULD TAKE IT AS A GREAT FAVOUR IF YOU WOULD STEP DOWN TO APPLEDORE TOWERS AND GIVE US THE BENEFIT OF YOUR ADVICE + IT IS NO ORDINARY CRIME + WE HAVE HAD OUR EYES UPON THIS MR. MILVERTON FOR SOME TIME AND BETWEEN OURSELVES HE WAS A BIT OF A VILLAIN + HE IS KNOWN TO HAVE HELD PAPERS WHICH HE USED FOR BLACKMAILING PURPOSES + THESE PAPERS HAVE ALL BEEN BURNED BY THE MURDERERS + NO ARTICLE OF VALUE WAS TAKEN AS IT IS PROBABLE THAT THE CRIMINALS WERE MEN OF GOOD POSITION WHOSE SOLE OBJECT WAS TO PREVENT SOCIAL EXPOSURE + QUOTE CRIMINALS QUOTE SAID HOLMES + PLURAL + YES THERE WERE TWO OF THEM + THEY WERE AS NEARLY AS POSSIBLE CAPTURED RED HANDED + WE HAVE THEIR FOOTMARKS WE HAVE THEIR DESCRIPTION IT'S TEN TO ONE THAT WE TRACE THEM + THE FIRST FELLOW WAS A BIT TOO ACTIVE BUT THE SECOND WAS CAUGHT BY THE UNDERGARDENER AND ONLY GOT AWAY AFTER A STRUGGLE + HE WAS A MIDDLESIZED STRONGLY BUILT MAN SQUARE JAW THICK NECK MOUSTACHE A MASK OVER HIS EYES + THAT'S RATHER VAGUE SAID SHERLOCK HOLMES + WHY IT MIGHT BE A DESCRIPTION OF WATSON + QUOTE IT'S TRUE QUOTE SAID THE INSPECTOR WITH AMUSEMENT + IT MIGHT BE A DESCRIPTION OF WATSON + WELL I'M AFRAID I CAN'T HELP YOU LESTRADE SAID HOLMES + THE FACT IS THAT I KNEW THIS FELLOW MILVERTON THAT I CONSIDERED HIM ONE OF THE MOST DANGEROUS MEN IN LONDON AND THAT I THINK THERE ARE CERTAIN CRIMES WHICH THE LAW CANNOT TOUCH AND WHICH THEREFORE TO SOME EXTENT JUSTIFY PRIVATE REVENGE + NO IT'S NO USE ARGUING + I HAVE MADE UP MY MIND + MY SYMPATHIES ARE WITH THE CRIMINALS RATHER THAN WITH THE VICTIM AND I WILL NOT HANDLE THIS CASE + HOLMES HAD NOT SAID ONE WORD TO ME ABOUT THE TRAGEDY WHICH WE HAD WITNESSED BUT I OBSERVED ALL THE MORNING THAT HE WAS IN HIS MOST THOUGHTFUL MOOD AND HE GAVE ME THE IMPRESSION FROM HIS VACANT EYES AND HIS ABSTRACTED MANNER OF A MAN WHO IS STRIVING TO RECALL SOMETHING TO HIS MEMORY + WE WERE IN THE MIDDLE OF OUR LUNCH WHEN HE SUDDENLY SPRANG TO HIS FEET + BY JOVE WATSON I'VE GOT IT HE CRIED + QUOTE TAKE YOUR HAT + COME WITH ME + HE HURRIED AT HIS TOP SPEED DOWN BAKER STREET AND ALONG OXFORD STREET UNTIL WE HAD ALMOST REACHED REGENT CIRCUS + HERE ON THE LEFT HAND THERE STANDS A SHOP WINDOW FILLED WITH PHOTOGRAPHS OF THE CELEBRITIES AND BEAUTIES OF THE DAY + HOLMES'S EYES FIXED THEMSELVES UPON ONE OF THEM AND FOLLOWING HIS GAZE I SAW THE PICTURE OF A REGAL AND STATELY LADY IN COURT DRESS WITH A HIGH DIAMOND TIARA UPON HER NOBLE HEAD + I LOOKED AT THAT DELICATELY CURVED NOSE AT THE MARKED EYEBROWS AT THE STRAIGHT MOUTH AND THE STRONG LITTLE CHIN BENEATH IT + THEN I CAUGHT MY BREATH AS I READ THE TIME HONOURED TITLE OF THE GREAT NOBLEMAN AND STATESMAN WHOSE WIFE SHE HAD BEEN + MY EYES MET THOSE OF HOLMES AND HE PUT HIS FINGER TO HIS LIPS AS WE TURNED AWAY FROM THE WINDOW diff --git a/samples/LMTutorial/train/copper_beeches.txt b/samples/LMTutorial/train/copper_beeches.txt new file mode 100755 index 0000000..1e679bf --- /dev/null +++ b/samples/LMTutorial/train/copper_beeches.txt @@ -0,0 +1,593 @@ + QUOTE TO THE MAN WHO LOVES ART FOR ITS OWN SAKE QUOTE REMARKED SHERLOCK HOLMES TOSSING ASIDE THE ADVERTISEMENT SHEET OF THE DAILY TELEGRAPH QUOTE IT IS FREQUENTLY IN ITS LEAST IMPORTANT AND LOWLIEST MANIFESTATIONS THAT THE KEENEST PLEASURE IS TO BE DERIVED + IT IS PLEASANT TO ME TO OBSERVE WATSON THAT YOU HAVE SO FAR GRASPED THIS TRUTH THAT IN THESE LITTLE RECORDS OF OUR CASES WHICH YOU HAVE BEEN GOOD ENOUGH TO DRAW UP AND I AM BOUND TO SAY OCCASIONALLY TO EMBELLISH YOU HAVE GIVEN PROMINENCE NOT SO MUCH TO THE MANY CAUSES CELEBRES AND SENSATIONAL TRIALS IN WHICH I HAVE FIGURED BUT RATHER TO THOSE INCIDENTS WHICH MAY HAVE BEEN TRIVIAL IN THEMSELVES BUT WHICH HAVE GIVEN ROOM FOR THOSE FACULTIES OF DEDUCTION AND OF LOGICAL SYNTHESIS WHICH I HAVE MADE MY SPECIAL PROVINCE + AND YET SAID I SMILING I CANNOT QUITE HOLD MYSELF ABSOLVED FROM THE CHARGE OF SENSATIONALISM WHICH HAS BEEN URGED AGAINST MY RECORDS + YOU HAVE ERRED PERHAPS HE OBSERVED TAKING UP A GLOWING CINDER WITH THE TONGS AND LIGHTING WITH IT THE LONG CHERRY WOOD PIPE WHICH WAS WONT TO REPLACE HIS CLAY WHEN HE WAS IN A DISPUTATIOUS RATHER THAN A MEDITATIVE MOOD YOU HAVE ERRED PERHAPS IN ATTEMPTING TO PUT COLOUR AND LIFE INTO EACH OF YOUR STATEMENTS INSTEAD OF CONFINING YOURSELF TO THE TASK OF PLACING UPON RECORD THAT SEVERE REASONING FROM CAUSE TO EFFECT WHICH IS REALLY THE ONLY NOTABLE FEATURE ABOUT THE THING + IT SEEMS TO ME THAT I HAVE DONE YOU FULL JUSTICE IN THE MATTER I REMARKED WITH SOME COLDNESS FOR I WAS REPELLED BY THE EGOTISM WHICH I HAD MORE THAN ONCE OBSERVED TO BE A STRONG FACTOR IN MY FRIEND'S SINGULAR CHARACTER + NO IT IS NOT SELFISHNESS OR CONCEIT SAID HE ANSWERING AS WAS HIS WONT MY THOUGHTS RATHER THAN MY WORDS + QUOTE IF I CLAIM FULL JUSTICE FOR MY ART IT IS BECAUSE IT IS AN IMPERSONAL THING A THING BEYOND MYSELF + CRIME IS COMMON + LOGIC IS RARE + THEREFORE IT IS UPON THE LOGIC RATHER THAN UPON THE CRIME THAT YOU SHOULD DWELL + YOU HAVE DEGRADED WHAT SHOULD HAVE BEEN A COURSE OF LECTURES INTO A SERIES OF TALES + IT WAS A COLD MORNING OF THE EARLY SPRING AND WE SAT AFTER BREAKFAST ON EITHER SIDE OF A CHEERY FIRE IN THE OLD ROOM AT BAKER STREET + A THICK FOG ROLLED DOWN BETWEEN THE LINES OF DUN COLOURED HOUSES AND THE OPPOSING WINDOWS LOOMED LIKE DARK SHAPELESS BLURS THROUGH THE HEAVY YELLOW WREATHS + OUR GAS WAS LIT AND SHONE ON THE WHITE CLOTH AND GLIMMER OF CHINA AND METAL FOR THE TABLE HAD NOT BEEN CLEARED YET + SHERLOCK HOLMES HAD BEEN SILENT ALL THE MORNING DIPPING CONTINUOUSLY INTO THE ADVERTISEMENT COLUMNS OF A SUCCESSION OF PAPERS UNTIL AT LAST HAVING APPARENTLY GIVEN UP HIS SEARCH HE HAD EMERGED IN NO VERY SWEET TEMPER TO LECTURE ME UPON MY LITERARY SHORTCOMINGS + AT THE SAME TIME HE REMARKED AFTER A PAUSE DURING WHICH HE HAD SAT PUFFING AT HIS LONG PIPE AND GAZING DOWN INTO THE FIRE YOU CAN HARDLY BE OPEN TO A CHARGE OF SENSATIONALISM FOR OUT OF THESE CASES WHICH YOU HAVE BEEN SO KIND AS TO INTEREST YOURSELF IN A FAIR PROPORTION DO NOT TREAT OF CRIME IN ITS LEGAL SENSE AT ALL + THE SMALL MATTER IN WHICH I ENDEAVOURED TO HELP THE KING OF BOHEMIA THE SINGULAR EXPERIENCE OF MISS MARY SUTHERLAND THE PROBLEM CONNECTED WITH THE MAN WITH THE TWISTED LIP AND THE INCIDENT OF THE NOBLE BACHELOR WERE ALL MATTERS WHICH ARE OUTSIDE THE PALE OF THE LAW + BUT IN AVOIDING THE SENSATIONAL I FEAR THAT YOU MAY HAVE BORDERED ON THE TRIVIAL + THE END MAY HAVE BEEN SO I ANSWERED BUT THE METHODS I HOLD TO HAVE BEEN NOVEL AND OF INTEREST + PSHAW MY DEAR FELLOW WHAT DO THE PUBLIC THE GREAT UNOBSERVANT PUBLIC WHO COULD HARDLY TELL A WEAVER BY HIS TOOTH OR A COMPOSITOR BY HIS LEFT THUMB CARE ABOUT THE FINER SHADES OF ANALYSIS AND DEDUCTION + BUT INDEED IF YOU ARE TRIVIAL + I CANNOT BLAME YOU FOR THE DAYS OF THE GREAT CASES ARE PAST + MAN OR AT LEAST CRIMINAL MAN HAS LOST ALL ENTERPRISE AND ORIGINALITY + AS TO MY OWN LITTLE PRACTICE IT SEEMS TO BE DEGENERATING INTO AN AGENCY FOR RECOVERING LOST LEAD PENCILS AND GIVING ADVICE TO YOUNG LADIES FROM BOARDING SCHOOLS + I THINK THAT I HAVE TOUCHED BOTTOM AT LAST HOWEVER + THIS NOTE I HAD THIS MORNING MARKS MY ZERO POINT I FANCY + READ IT QUOTE + HE TOSSED A CRUMPLED LETTER ACROSS TO ME + IT WAS DATED FROM MONTAGUE PLACE UPON THE PRECEDING EVENING AND RAN THUS DEAR MR. HOLMES I AM VERY ANXIOUS TO CONSULT YOU AS TO WHETHER I SHOULD OR SHOULD NOT ACCEPT A SITUATION WHICH HAS BEEN OFFERED TO ME AS GOVERNESS + I SHALL CALL AT HALF PAST TEN TO MORROW IF I DO NOT INCONVENIENCE YOU + YOURS FAITHFULLY VIOLET HUNTER + DO YOU KNOW THE YOUNG LADY + I ASKED + NOT I + IT IS HALF PAST TEN NOW + YES AND I HAVE NO DOUBT THAT IS HER RING + IT MAY TURN OUT TO BE OF MORE INTEREST THAN YOU THINK + YOU REMEMBER THAT THE AFFAIR OF THE BLUE CARBUNCLE WHICH APPEARED TO BE A MERE WHIM AT FIRST DEVELOPED INTO A SERIOUS INVESTIGATION + IT MAY BE SO IN THIS CASE ALSO QUOTE + WELL LET US HOPE SO + BUT OUR DOUBTS WILL VERY SOON BE SOLVED FOR HERE UNLESS I AM MUCH MISTAKEN IS THE PERSON IN QUESTION + AS HE SPOKE THE DOOR OPENED AND A YOUNG LADY ENTERED THE ROOM + SHE WAS PLAINLY BUT NEATLY DRESSED WITH A BRIGHT QUICK FACE FRECKLED LIKE A PLOVER'S EGG AND WITH THE BRISK MANNER OF A WOMAN WHO HAS HAD HER OWN WAY TO MAKE IN THE WORLD + YOU WILL EXCUSE MY TROUBLING YOU I AM SURE SAID SHE AS MY COMPANION ROSE TO GREET HER BUT I HAVE HAD A VERY STRANGE EXPERIENCE AND AS I HAVE NO PARENTS OR RELATIONS OF ANY SORT FROM WHOM I COULD ASK ADVICE I THOUGHT THAT PERHAPS YOU WOULD BE KIND ENOUGH TO TELL ME WHAT I SHOULD DO + PRAY TAKE A SEAT MISS HUNTER + I SHALL BE HAPPY TO DO ANYTHING THAT I CAN TO SERVE YOU + I COULD SEE THAT HOLMES WAS FAVOURABLY IMPRESSED BY THE MANNER AND SPEECH OF HIS NEW CLIENT + HE LOOKED HER OVER IN HIS SEARCHING FASHION AND THEN COMPOSED HIMSELF WITH HIS LIDS DROOPING AND HIS FINGER TIPS TOGETHER TO LISTEN TO HER STORY + QUOTE I HAVE BEEN A GOVERNESS FOR FIVE YEARS QUOTE SAID SHE QUOTE IN THE FAMILY OF COLONEL SPENCE MUNRO BUT TWO MONTHS AGO THE COLONEL RECEIVED AN APPOINTMENT AT HALIFAX IN NOVA SCOTIA AND TOOK HIS CHILDREN OVER TO AMERICA WITH HIM SO THAT I FOUND MYSELF WITHOUT A SITUATION + I ADVERTISED AND I ANSWERED ADVERTISEMENTS BUT WITHOUT SUCCESS + AT LAST THE LITTLE MONEY WHICH I HAD SAVED BEGAN TO RUN SHORT AND I WAS AT MY WIT'S END AS TO WHAT I SHOULD DO + THERE IS A WELL KNOWN AGENCY FOR GOVERNESSES IN THE WEST END CALLED WESTAWAY'S AND THERE I USED TO CALL ABOUT ONCE A WEEK IN ORDER TO SEE WHETHER ANYTHING HAD TURNED UP WHICH MIGHT SUIT ME + WESTAWAY WAS THE NAME OF THE FOUNDER OF THE BUSINESS BUT IT IS REALLY MANAGED BY MISS STOPER + SHE SITS IN HER OWN LITTLE OFFICE AND THE LADIES WHO ARE SEEKING EMPLOYMENT WAIT IN AN ANTEROOM AND ARE THEN SHOWN IN ONE BY ONE WHEN SHE CONSULTS HER LEDGERS AND SEES WHETHER SHE HAS ANYTHING WHICH WOULD SUIT THEM + WELL WHEN I CALLED LAST WEEK I WAS SHOWN INTO THE LITTLE OFFICE AS USUAL BUT I FOUND THAT MISS STOPER WAS NOT ALONE + A PRODIGIOUSLY STOUT MAN WITH A VERY SMILING FACE AND A GREAT HEAVY CHIN WHICH ROLLED DOWN IN FOLD UPON FOLD OVER HIS THROAT SAT AT HER ELBOW WITH A PAIR OF GLASSES ON HIS NOSE LOOKING VERY EARNESTLY AT THE LADIES WHO ENTERED + AS I CAME IN HE GAVE QUITE A JUMP IN HIS CHAIR AND TURNED QUICKLY TO MISS STOPER + THAT WILL DO SAID HE I COULD NOT ASK FOR ANYTHING BETTER + CAPITAL CAPITAL + HE SEEMED QUITE ENTHUSIASTIC AND RUBBED HIS HANDS TOGETHER IN THE MOST GENIAL FASHION + HE WAS SUCH A COMFORTABLE LOOKING MAN THAT IT WAS QUITE A PLEASURE TO LOOK AT HIM + YOU ARE LOOKING FOR A SITUATION MISS HE ASKED + YES SIR + QUOTE AS GOVERNESS + YES SIR + AND WHAT SALARY DO YOU ASK + I HAD FOUR POUNDS A MONTH IN MY LAST PLACE WITH COLONEL SPENCE MUNRO + OH TUT TUT SWEATING RANK SWEATING HE CRIED THROWING HIS FAT HANDS OUT INTO THE AIR LIKE A MAN WHO IS IN A BOILING PASSION + HOW COULD ANYONE OFFER SO PITIFUL A SUM TO A LADY WITH SUCH ATTRACTIONS AND ACCOMPLISHMENTS + MY ACCOMPLISHMENTS SIR MAY BE LESS THAN YOU IMAGINE SAID I. A LITTLE FRENCH A LITTLE GERMAN MUSIC AND DRAWING + QUOTE TUT TUT HE CRIED + THIS IS ALL QUITE BESIDE THE QUESTION + THE POINT IS HAVE YOU OR HAVE YOU NOT THE BEARING AND DEPORTMENT OF A LADY + THERE IT IS IN A NUTSHELL + IF YOU HAVE NOT YOU ARE NOT FINED FOR THE REARING OF A CHILD WHO MAY SOME DAY PLAY A CONSIDERABLE PART IN THE HISTORY OF THE COUNTRY + BUT IF YOU HAVE WHY THEN HOW COULD ANY GENTLEMAN ASK YOU TO CONDESCEND TO ACCEPT ANYTHING UNDER THE THREE FIGURES + YOUR SALARY WITH ME MADAM WOULD COMMENCE AT ONE HUNDRED POUNDS A YEAR + YOU MAY IMAGINE MR. HOLMES THAT TO ME DESTITUTE AS I WAS SUCH AN OFFER SEEMED ALMOST TOO GOOD TO BE TRUE + THE GENTLEMAN HOWEVER SEEING PERHAPS THE LOOK OF INCREDULITY UPON MY FACE OPENED A POCKET BOOK AND TOOK OUT A NOTE + IT IS ALSO MY CUSTOM SAID HE SMILING IN THE MOST PLEASANT FASHION UNTIL HIS EYES WERE JUST TWO LITTLE SHINING SLITS AMID THE WHITE CREASES OF HIS FACE TO ADVANCE TO MY YOUNG LADIES HALF THEIR SALARY BEFOREHAND SO THAT THEY MAY MEET ANY LITTLE EXPENSES OF THEIR JOURNEY AND THEIR WARDROBE + IT SEEMED TO ME THAT I HAD NEVER MET SO FASCINATING AND SO THOUGHTFUL A MAN + AS I WAS ALREADY IN DEBT TO MY TRADESMEN THE ADVANCE WAS A GREAT CONVENIENCE AND YET THERE WAS SOMETHING UNNATURAL ABOUT THE WHOLE TRANSACTION WHICH MADE ME WISH TO KNOW A LITTLE MORE BEFORE I QUITE COMMITTED MYSELF + MAY I ASK WHERE YOU LIVE SIR SAID I + HAMPSHIRE + CHARMING RURAL PLACE + THE COPPER BEECHES FIVE MILES ON THE FAR SIDE OF WINCHESTER + IT IS THE MOST LOVELY COUNTRY MY DEAR YOUNG LADY AND THE DEAREST OLD COUNTRY HOUSE + QUOTE AND MY DUTIES SIR + I SHOULD BE GLAD TO KNOW WHAT THEY WOULD BE + ONE CHILD ONE DEAR LITTLE ROMPER JUST SIX YEARS OLD + OH IF YOU COULD SEE HIM KILLING COCKROACHES WITH A SLIPPER + SMACK SMACK SMACK + THREE GONE BEFORE YOU COULD WINK + HE LEANED BACK IN HIS CHAIR AND LAUGHED HIS EYES INTO HIS HEAD AGAIN + I WAS A LITTLE STARTLED AT THE NATURE OF THE CHILD'S AMUSEMENT BUT THE FATHER'S LAUGHTER MADE ME THINK THAT PERHAPS HE WAS JOKING + MY SOLE DUTIES THEN I ASKED ARE TO TAKE CHARGE OF A SINGLE CHILD + NO NO NOT THE SOLE NOT THE SOLE MY DEAR YOUNG LADY HE CRIED + YOUR DUTY WOULD BE AS I AM SURE YOUR GOOD SENSE WOULD SUGGEST TO OBEY ANY LITTLE COMMANDS MY WIFE MIGHT GIVE PROVIDED ALWAYS THAT THEY WERE SUCH COMMANDS AS A LADY MIGHT WITH PROPRIETY OBEY + YOU SEE NO DIFFICULTY HEH + I SHOULD BE HAPPY TO MAKE MYSELF USEFUL + QUOTE QUITE SO + IN DRESS NOW FOR EXAMPLE + WE ARE FADDY PEOPLE YOU KNOW FADDY BUT KIND HEARTED + IF YOU WERE ASKED TO WEAR ANY DRESS WHICH WE MIGHT GIVE YOU YOU WOULD NOT OBJECT TO OUR LITTLE WHIM + HEH + NO SAID I CONSIDERABLY ASTONISHED AT HIS WORDS + OR TO SIT HERE OR SIT THERE THAT WOULD NOT BE OFFENSIVE TO YOU + OH NO + OR TO CUT YOUR HAIR QUITE SHORT BEFORE YOU COME TO US + I COULD HARDLY BELIEVE MY EARS + AS YOU MAY OBSERVE MR. HOLMES MY HAIR IS SOMEWHAT LUXURIANT AND OF A RATHER PECULIAR TINT OF CHESTNUT + IT HAS BEEN CONSIDERED ARTISTIC + I COULD NOT DREAM OF SACRIFICING IT IN THIS OFFHAND FASHION + QUOTE I AM AFRAID THAT THAT IS QUITE IMPOSSIBLE SAID I. HE HAD BEEN WATCHING ME EAGERLY OUT OF HIS SMALL EYES AND I COULD SEE A SHADOW PASS OVER HIS FACE AS I SPOKE + I AM AFRAID THAT IT IS QUITE ESSENTIAL SAID HE + IT IS A LITTLE FANCY OF MY WIFE'S AND LADIES' FANCIES YOU KNOW MADAM LADIES' FANCIES MUST BE CONSULTED + AND SO YOU WONN'T CUT YOUR HAIR + NO SIR I REALLY COULD NOT I ANSWERED FIRMLY + AH VERY WELL THEN THAT QUITE SETTLES THE MATTER + IT IS A PITY BECAUSE IN OTHER RESPECTS YOU WOULD REALLY HAVE DONE VERY NICELY + IN THAT CASE MISS STOPER I HAD BEST INSPECT A FEW MORE OF YOUR YOUNG LADIES + THE MANAGERESS HAD SAT ALL THIS WHILE BUSY WITH HER PAPERS WITHOUT A WORD TO EITHER OF US BUT SHE GLANCED AT ME NOW WITH SO MUCH ANNOYANCE UPON HER FACE THAT I COULD NOT HELP SUSPECTING THAT SHE HAD LOST A HANDSOME COMMISSION THROUGH MY REFUSAL + DO YOU DESIRE YOUR NAME TO BE KEPT UPON THE BOOKS SHE ASKED + QUOTE IF YOU PLEASE MISS STOPER + WELL REALLY IT SEEMS RATHER USELESS SINCE YOU REFUSE THE MOST EXCELLENT OFFERS IN THIS FASHION SAID SHE SHARPLY + YOU CAN HARDLY EXPECT US TO EXERT OURSELVES TO FIND ANOTHER SUCH OPENING FOR YOU + GOOD DAY TO YOU MISS HUNTER + SHE STRUCK A GONG UPON THE TABLE AND I WAS SHOWN OUT BY THE PAGE + WELL MR. HOLMES WHEN I GOT BACK TO MY LODGINGS AND FOUND LITTLE ENOUGH IN THE CUPBOARD AND TWO OR THREE BILLS UPON THE TABLE + I BEGAN TO ASK MYSELF WHETHER I HAD NOT DONE A VERY FOOLISH THING + AFTER ALL IF THESE PEOPLE HAD STRANGE FADS AND EXPECTED OBEDIENCE ON THE MOST EXTRAORDINARY MATTERS THEY WERE AT LEAST READY TO PAY FOR THEIR ECCENTRICITY + VERY FEW GOVERNESSES IN ENGLAND ARE GETTING ONE HUNDRED POUNDS A YEAR + BESIDES WHAT USE WAS MY HAIR TO ME + MANY PEOPLE ARE IMPROVED BY WEARING IT SHORT AND PERHAPS I SHOULD BE AMONG THE NUMBER + NEXT DAY I WAS INCIINED TO THINK THAT I HAD MADE A MISTAKE AND BY THE DAY AFTER I WAS SURE OF IT + I HAD ALMOST OVERCOME MY PRIDE SO FAR AS TO GO BACK TO THE AGENCY AND INQUIRE WHETHER THE PLACE WAS STILL OPEN WHEN I RECEIVED THIS LETTER FROM THE GENTLEMAN HIMSELF + I HAVE IT HERE AND I WILL READ IT TO YOU THE COPPER BEECHES NEAR WINCHESTER + DEAR MLSS HUNTER MISS STOPER HAS VERY KINDLY GIVEN ME YOUR ADDRESS AND I WRITE FROM HERE TO ASK YOU WHETHER YOU HAVE RECONSIDERED YOUR DECISION + MY WIFE IS VERY ANXIOUS THAT YOU SHOULD COME FOR SHE HAS BEEN MUCH ATTRACTED BY MY DESCRIPTION OF YOU + WE ARE WILLING TO GIVE THIRTY POUNDS A QUARTER OR ONE HUNDRED TWENTY POUNDS A YEAR SO AS TO RECOMPENSE YOU FOR ANY LITTLE INCONVENIENCE WHICH OUR FADS MAY CAUSE YOU + THEY ARE NOT VERY EXACTING AFTER ALL + MY WIFE IS FOND OF A PARTICULAR SHADE OF ELECTRIC BLUE AND WOULD LIKE YOU TO WEAR SUCH A DRESS INDOORS IN THE MORNING + YOU NEED NOT HOWEVER GO TO THE EXPENSE OF PURCHASING ONE AS WE HAVE ONE BELONGING TO MY DEAR DAUGHTER ALICE NOW IN PHILADELPHIA WHICH WOULD I SHOULD THINK FIT YOU VERY WELL + THEN AS TO SITTING HERE OR THERE OR AMUSING YOURSELF IN ANY MANNER INDICATED THAT NEED CAUSE YOU NO INCONVENIENCE + AS REGARDS YOUR HAIR IT IS NO DOUBT A PITY ESPECIALLY AS I COULD NOT HELP REMARKING ITS BEAUTY DURING OUR SHORT INTERVIEW BUT I AM AFRAID THAT I MUST REMAIN FIRM UPON THIS POINT AND L. ONLY HOPE THAT THE INCREASED SALARY MAY RECOMPENSE YOU FOR THE LOSS + YOUR DUTIES AS FAR AS THE CHILD IS CONCERNED ARE VERY LIGHT + NOW DO TRY TO COME AND I SHALL MEET YOU WITH THE DOG CART AT WINCHESTER + LET ME KNOW YOUR TRAIN + YOURS FAITHFULLY JEPHRO RUCASTLE + QUOTE THAT IS THE LETTER WHICH I HAVE JUST RECEIVED MR. HOLMES AND MY MIND IS MADE UP THAT I WILL ACCEPT IT + I THOUGHT HOWEVER THAT BEFORE TAKING THE FINAL STEP I SHOULD LIKE TO SUBMIT THE WHOLE MATTER TO YOUR CONSIDERATION + WELL MISS HUNTER IF YOUR MIND IS MADE UP THAT SETTLES THE QUESTION SAID HOLMES SMILING + BUT YOU WOULD NOT ADVISE ME TO REFUSE + I CONFESS THAT IT IS NOT THE SITUATION WHICH I SHOULD LIKE TO SEE A SISTER OF MINE APPLY FOR + WHAT IS THE MEANING OF IT ALL MR. HOLMES + QUOTE AH I HAVE NO DATA + I CANNOT TELL + PERHAPS YOU HAVE YOURSELF FORMED SOME OPINION + WELL THERE SEEMS TO ME TO BE ONLY ONE POSSIBLE SOLUTION + MR. RUCASTLE SEEMED TO BE A VERY KIND GOOD NATURED MAN + IS IT NOT POSSIBLE THAT HIS WIFE IS A LUNATIC THAT HE DESIRES TO KEEP THE MATTER QUIET FOR FEAR SHE SHOULD BE TAKEN TO AN ASYLUM AND THAT HE HUMOURS HER FANCIES IN EVERY WAY IN ORDER TO PREVENT AN OUTBREAK + THAT IS A POSSIBLE SOLUTION IN FACT AS MATTERS STAND IT IS THE MOST PROBABLE ONE + BUT IN ANY CASE IT DOES NOT SEEM TO BE A NICE HOUSEHOLD FOR A YOUNG LADY + QUOTE BUT THE MONEY MR. HOLMES THE MONEY QUOTE + WELL YES OF COURSE THE PAY IS GOOD TOO GOOD + THAT IS WHAT MAKES ME UNEASY + WHY SHOULD THEY GIVE YOU ONE HUNDRED TWENTY POUNDS A YEAR WHEN THEY COULD HAVE THEIR PICK FOR FORTY POUNDS + THERE MUST BE SOME STRONG REASON BEHIND + I THOUGHT THAT IF I TOLD YOU THE CIRCUMSTANCES YOU WOULD UNDERSTAND AFTERWARDS IF I WANTED YOUR HELP + I SHOULD FEEL SO MUCH STRONGER IF I FELT THAT YOU WERE AT THE BACK OF ME + OH YOU MAY CARRY THAT FEELING AWAY WITH YOU + I ASSURE YOU THAT YOUR LITTLE PROBLEM PROMISES TO BE THE MOST INTERESTING WHICH HAS COME MY WAY FOR SOME MONTHS + THERE IS SOMETHING DISTINCTLY NOVEL ABOUT SOME OF THE FEATURES + IF YOU SHOULD FIND YOURSELF IN DOUBT OR IN DANGER QUOTE + DANGER + WHAT DANGER DO YOU FORESEE + HOLMES SHOOK HIS HEAD GRAVELY + IT WOULD CEASE TO BE A DANGER IF WE COULD DEFINE IT SAID HE + BUT AT ANY TIME DAY OR NIGHT A TELEGRAM WOULD BRING ME DOWN TO YOUR HELP + THAT IS ENOUGH + SHE ROSE BRISKLY FROM HER CHAIR WITH THE ANXIETY ALL SWEPT FROM HER FACE + QUOTE I SHALL GO DOWN TO HAMPSHIRE QUITE EASY IN MY MIND NOW + I SHALL WRITE TO MR. RUCASTLE AT ONCE SACRIFICE MY POOR HAIR TO NIGHT AND START FOR WINCHESTER TO MORROW + WITH A FEW GRATEFUL WORDS TO HOLMES SHE BADE US BOTH GOOD NIGHT AND BUSTLED OFF UPON HER WAY + AT LEAST SAID I AS WE HEARD HER QUICK FIRM STEPS DESCENDING THE STAIRS SHE SEEMS TO BE A YOUNG LADY WHO IS VERY WELL ABLE TO TAKE CARE OF HERSELF + AND SHE WOULD NEED TO BE SAID HOLMES GRAVELY + I AM MUCH MISTAKEN IF WE DO NOT HEAR FROM HER BEFORE MANY DAYS ARE PAST + IT WAS NOT VERY LONG BEFORE MY FRIEND'S PREDICTION WAS FULFILLED + A FORTNIGHT WENT BY DURING WHICH I FREQUENTLY FOUND MY THOUGHTS TURNING IN HER DIRECTION AND WONDERING WHAT STRANGE SIDE ALLEY OF HUMAN EXPERIENCE THIS LONELY WOMAN HAD STRAYED INTO + THE UNUSUAL SALARY THE CURIOUS CONDITIONS THE LIGHT DUTIES ALL POINTED TO SOMETHING ABNORMAL THOUGH WHETHER A FAD OR A PLOT OR WHETHER THE MAN WERE A PHILANTHROPIST OR A VILLAIN IT WAS QUITE BEYOND MY POWERS TO DETERMINE + AS TO HOLMES I OBSERVED THAT HE SAT FREQUENTLY FOR HALF AN HOUR ON END WITH KNITTED BROWS AND AN ABSTRACTED AIR BUT HE SWEPT THE MATTER AWAY WITH A WAVE OF HIS HAND WHEN I MENTIONED IT + DATA DATA DATA HE CRIED IMPATIENTLY + QUOTE I CAN'T MAKE BRICKS WITHOUT CLAY QUOTE + AND YET HE WOULD ALWAYS WIND UP BY MUTTERING THAT NO SISTER OF HIS SHOULD EVER HAVE ACCEPTED SUCH A SITUATION + THE TELEGRAM WHICH WE EVENTUALLY RECEIVED CAME LATE ONE NIGHT JUST AS I WAS THINKING OF TURNING IN AND HOLMES WAS SETTLING DOWN TO ONE OF THOSE ALL NIGHT CHEMICAL RESEARCHES WHICH HE FREQUENTLY INDULGED IN WHEN I WOULD LEAVE HIM STOOPING OVER A RETORT AND A TEST TUBE AT NIGHT AND FIND HIM IN THE SAME POSITION WHEN I CAME DOWN TO BREAKFAST IN THE MORNING + HE OPENED THE YELLOW ENVELOPE AND THEN GLANCING AT THE MESSAGE THREW IT ACROSS TO ME + JUST LOOK UP THE TRAINS IN BRADSHAW SAID HE AND TURNED BACK TO HIS CHEMICAL STUDIES + THE SUMMONS WAS A BRIEF AND URGENT ONE + PLEASE BE AT THE BLACK SWAN HOTEL AT WINCHESTER AT MIDDAY TO MORROW IT SAID + DO COME + I AM AT MY WIT'S END + HUNTER + WILL YOU COME WITH ME ASKED HOLMES GLANCING UP + I SHOULD WISH TO + JUST LOOK IT UP THEN + THERE IS A TRAIN AT HALF PAST NINE SAID I GLANCING OVER MY BRADSHAW + QUOTE IT IS DUE AT WINCHESTER AT ELEVEN THIRTY QUOTE + THAT WILL DO VERY NICELY + THEN PERHAPS I HAD BETTER POSTPONE MY ANALYSIS OF THE ACETONES AS WE MAY NEED TO BE AT OUR BEST IN THE MORNING + BY ELEVEN O'CLOCK THE NEXT DAY WE WERE WELL UPON OUR WAY TO THE OLD ENGLISH CAPITAL + HOLMES HAD BEEN BURIED IN THE MORNING PAPERS ALL THE WAY DOWN BUT AFTER WE HAD PASSED THE HAMPSHIRE BORDER HE THREW THEM DOWN AND BEGAN TO ADMIRE THE SCENERY + IT WAS AN IDEAL SPRING DAY A LIGHT BLUE SKY FLECKED WITH LITTLE FLEECY WHITE CLOUDS DRIFTING ACROSS FROM WEST TO EAST + THE SUN WAS SHINING VERY BRIGHTLY AND YET THERE WAS AN EXHILARATING NIP IN THE AIR WHICH SET AN EDGE TO A MAN'S ENERGY + ALL OVER THE COUNTRYSIDE AWAY TO THE ROLLING HILLS AROUND ALDERSHOT THE LITTLE RED AND GRAY ROOFS OF THE FARM STEADINGS PEEPED OUT FROM AMID THE LIGHT GREEN OF THE NEW FOLIAGE + ARE THEY NOT FRESH AND BEAUTIFUL + I CRIED WITH ALL THE ENTHUSIASM OF A MAN FRESH FROM THE FOGS OF BAKER STREET + BUT HOLMES SHOOK HIS HEAD GRAVELY + DO YOU KNOW WATSON SAID HE THAT IT IS ONE OF THE CURSES OF A MIND WITH A TURN LIKE MINE THAT I MUST LOOK AT EVERYTHING WITH REFERENCE TO MY OWN SPECIAL SUBJECT + YOU LOOK AT THESE SCATTERED HOUSES AND YOU ARE IMPRESSED BY THEIR BEAUTY + I LOOK AT THEM AND THE ONLY THOUGHT WHICH COMES TO ME IS A FEELING OF THEIR ISOLATION AND OF THE IMPUNITY WITH WHICH CRIME MAY BE COMMITTED THERE + QUOTE GOOD HEAVENS QUOTE + I CRIED + WHO WOULD ASSOCIATE CRIME WITH THESE DEAR OLD HOMESTEADS + THEY ALWAYS FILL ME WITH A CERTAIN HORROR + IT IS MY BELIEF WATSON FOUNDED UPON MY EXPERIENCE THAT THE LOWEST AND VILEST ALLEYS IN LONDON DO NOT PRESENT A MORE DREADFUL RECORD OF SIN THAN DOES THE SMILING AND BEAUTIFUL COUNTRYSIDE + YOU HORRIFY ME + BUT THE REASON IS VERY OBVIOUS + THE PRESSURE OF PUBLIC OPINION CAN DO IN THE TOWN WHAT THE LAW CANNOT ACCOMPLISH + THERE IS NO LANE SO VILE THAT THE SCREAM OF A TORTURED CHILD OR THE THUD OF A DRUNKARD'S BLOW DOES NOT BEGET SYMPATHY AND INDIGNATION AMONG THE NEIGHBOURS AND THEN THE WHOLE MACHINERY OF JUSTICE IS EVER SO CLOSE THAT A WORD OF COMPLAINT CAN SET IT GOING AND THERE IS BUT A STEP BETWEEN THE CRIME AND THE DOCK + BUT LOOK AT THESE LONELY HOUSES EACH IN ITS OWN FIELDS FILLED FOR THE MOST PART WITH POOR IGNORANT FOLK WHO KNOW LITTLE OF THE LAW + THINK OF THE DEEDS OF HELLISH CRUELTY THE HIDDEN WICKEDNESS WHICH MAY GO ON YEAR IN YEAR OUT IN SUCH PLACES AND NONE THE WISER + HAD THIS LADY WHO APPEALS TO US FOR HELP GONE TO LIVE IN WINCHESTER I SHOULD NEVER HAVE HAD A FEAR FOR HER + IT IS THE FIVE MILES OF COUNTRY WHICH MAKES THE DANGER + STILL IT IS CLEAR THAT SHE IS NOT PERSONALLY THREATENED QUOTE + NUMBER + IF SHE CAN COME TO WINCHESTER TO MEET US SHE CAN GET AWAY + QUITE SO + SHE HAS HER FREEDOM + WHAT CAN BE THE MATTER THEN + CAN YOU SUGGEST NO EXPLANATION QUOTE + I HAVE DEVISED SEVEN SEPARATE EXPLANATIONS EACH OF WHICH WOULD COVER THE FACTS AS FAR AS WE KNOW THEM + BUT WHICH OF THESE IS CORRECT CAN ONLY BE DETERMINED BY THE FRESH INFORMATION WHICH WE SHALL NO DOUBT FIND WAITING FOR US + WELL THERE IS THE TOWER OF THE CATHEDRAL AND WE SHALL SOON LEARN ALL THAT MISS HUNTER HAS TO TELL + THE BLACK SWAN IS AN INN OF REPUTE IN THE HIGH STREET AT NO DISTANCE FROM THE STATION AND THERE WE FOUND THE YOUNG LADY WAITING FOR US + SHE HAD ENGAGED A SITTING ROOM AND OUR LUNCH AWAITED US UPON THE TABLE + I AM SO DELIGHTED THAT YOU HAVE COME SHE SAID EARNESTLY + IT IS SO VERY KIND OF YOU BOTH BUT INDEED I DO NOT KNOW WHAT I SHOULD DO + YOUR ADVICE WILL BE ALTOGETHER INVALUABLE TO ME + QUOTE PRAY TELL US WHAT HAS HAPPENED TO YOU QUOTE + I WILL DO SO AND I MUST BE QUICK FOR I HAVE PROMISED MR. RUCASTLE TO BE BACK BEFORE THREE + I GOT HIS LEAVE TO COME INTO TOWN THIS MORNING THOUGH HE LITTLE KNEW FOR WHAT PURPOSE + LET US HAVE EVERYTHING IN ITS DUE ORDER + HOLMES THRUST HIS LONG THIN LEGS OUT TOWARDS THE FIRE AND COMPOSED HIMSELF TO LISTEN + IN THE FIRST PLACE I MAY SAY THAT I HAVE MET ON THE WHOLE WITH NO ACTUAL ILL TREATMENT FROM MR. AND MRS. RUCASTLE + IT IS ONLY FAIR TO THEM TO SAY THAT + BUT I CANNOT UNDERSTAND THEM AND I AM NOT EASY IN MY MIND ABOUT THEM + QUOTE WHAT CAN YOU NOT UNDERSTAND QUOTE + THEIR REASONS FOR THEIR CONDUCT + BUT YOU SHALL HAVE IT ALL JUST AS IT OCCURRED + WHEN I CAME DOWN MR. RUCASTLE MET ME HERE AND DROVE ME IN HIS DOG CART TO THE COPPER BEECHES + IT IS AS HE SAID BEAUTIFULLY SITUATED BUT IT IS NOT BEAUTIFUL IN ITSELF FOR IT IS A LARGE SQUARE BLOCK OF A HOUSE WHITEWASHED BUT ALL STAINED AND STREAKED WITH DAMP AND BAD WEATHER + THERE ARE GROUNDS ROUND IT WOODS ON THREE SIDES AND ON THE FOURTH A FIELD WHICH SLOPES DOWN TO THE SOUTHAMPTON HIGHROAD WHICH CURVES PAST ABOUT A HUNDRED YARDS FROM THE FRONT DOOR + THIS GROUND IN FRONT BELONGS TO THE HOUSE BUT THE WOODS ALL ROUND ARE PART OF LORD SOUTHERTON'S PRESERVES + A CLUMP OF COPPER BEECHES IMMEDIATELY IN FRONT OF THE HALL DOOR HAS GIVEN ITS NAME TO THE PLACE + I WAS DRIVEN OVER BY MY EMPLOYER WHO WAS AS AMIABLE AS EVER AND WAS INTRODUCED BY HIM THAT EVENING TO HIS WIFE AND THE CHILD + THERE WAS NO TRUTH MR. HOLMES IN THE CONJECTURE WHICH SEEMED TO US TO BE PROBABLE IN YOUR ROOMS AT BAKER STREET + MRS. RUCASTLE IS NOT MAD + I FOUND HER TO BE A SILENT PALE FACED WOMAN MUCH YOUNGER THAN HER HUSBAND NOT MORE THAN THIRTY I SHOULD THINK WHILE HE CAN HARDLY BE LESS THAN FORTY FIVE + FROM THEIR CONVERSATION I HAVE GATHERED THAT THEY HAVE BEEN MARRIED ABOUT SEVEN YEARS THAT HE WAS A WIDOWER AND THAT HIS ONLY CHILD BY THE FIRST WIFE WAS THE DAUGHTER WHO HAS GONE TO PHILADELPHIA + MR. RUCASTLE TOLD ME IN PRIVATE THAT THE REASON WHY SHE HAD LEFT THEM WAS THAT SHE HAD AN UNREASONING AVERSION TO HER STEPMOTHER + AS THE DAUGHTER COULD NOT HAVE BEEN LESS THAN TWENTY I CAN QUITE IMAGINE THAT HER POSITION MUST HAVE BEEN UNCOMFORTABLE WITH HER FATHER'S YOUNG WIFE + MRS. RUCASTLE SEEMED TO ME TO BE COLOURLESS IN MIND AS WELL AS IN FEATURE + SHE IMPRESSED ME NEITHER FAVOURABLY NOR THE REVERSE + SHE WAS A NONENTITY + IT WAS EASY TO SEE THAT SHE WAS PASSIONATELY DEVOTED BOTH TO HER HUSBAND AND TO HER LITTLE SON + HER LIGHT GRAY EYES WANDERED CONTINUALLY FROM ONE TO THE OTHER NOTING EVERY LITTLE WANT AND FORESTALLING IT IF POSSIBLE + HE WAS KIND TO HER ALSO IN HIS BLUFF BOISTEROUS FASHION AND ON THE WHOLE THEY SEEMED TO BE A HAPPY COUPLE + AND YET SHE HAD SOME SECRET SORROW THIS WOMAN + SHE WOULD OFTEN BE LOST IN DEEP THOUGHT WITH THE SADDEST LOOK UPON HER FACE + MORE THAN ONCE I HAVE SURPRISED HER IN TEARS + I HAVE THOUGHT SOMETIMES THAT IT WAS THE DISPOSITION OF HER CHILD WHICH WEIGHED UPON HER MIND FOR I HAVE NEVER MET SO UTTERLY SPOILED AND SO ILL NATURED A LITTLE CREATURE + HE IS SMALL FOR HIS AGE WITH A HEAD WHICH IS QUITE DISPROPORTIONATELY LARGE + HIS WHOLE LIFE APPEARS TO BE SPENT IN AN ALTERNATION BETWEEN SAVAGE FITS OF PASSION AND GLOOMY INTERVALS OF SULKING + GIVING PAIN TO ANY CREATURE WEAKER THAN HIMSELF SEEMS TO BE HIS ONE IDEA OF AMUSEMENT AND HE SHOWS QUITE REMARKABLE TALENT IN PLANNING THE CAPTURE OF MICE LITTLE BIRDS AND INSECTS + BUT I WOULD RATHER NOT TALK ABOUT THE CREATURE MR. HOLMES AND INDEED HE HAS LITTLE TO DO WITH MY STORY + I AM GLAD OF ALL DETAILS REMARKED MY FRIEND WHETHER THEY SEEM TO YOU TO BE RELEVANT OR NOT + QUOTE I SHALL TRY NOT TO MISS ANYTHING OF IMPORTANCE + THE ONE UNPLEASANT THING ABOUT THE HOUSE WHICH STRUCK ME AT ONCE WAS THE APPEARANCE AND CONDUCT OF THE SERVANTS + THERE ARE ONLY TWO A MAN AND HIS WIFE + TOLLER FOR THAT IS HIS NAME IS A ROUGH UNCOUTH MAN WITH GRIZZLED HAIR AND WHISKERS AND A PERPETUAL SMELL OF DRINK + TWICE SINCE I HAVE BEEN WITH THEM HE HAS BEEN QUITE DRUNK AND YET MR. RUCASTLE SEEMED TO TAKE NO NOTICE OF IT + HIS WIFE IS A VERY TALL AND STRONG WOMAN WITH A SOUR FACE AS SILENT AS MRS. RUCASTLE AND MUCH LESS AMIABLE + THEY ARE A MOST UNPLEASANT COUPLE BUT FORTUNATELY I SPEND MOST OF MY TIME IN THE NURSERY AND MY OWN ROOM WHICH ARE NEXT TO EACH OTHER IN ONE CORNER OF THE BUILDING + FOR TWO DAYS AFTER MY ARRIVAL AT THE COPPER BEECHES MY LIFE WAS VERY QUIET ON THE THIRD MRS. RUCASTLE CAME DOWN JUST AFTER BREAKFAST AND WHISPERED SOMETHING TO HER HUSBAND + OH YES SAID HE TURNING TO ME WE ARE VERY MUCH OBLIGED TO YOU MISS HUNTER FOR FALLING IN WITH OUR WHIMS SO FAR AS TO CUT YOUR HAIR + I ASSURE YOU THAT IT HAS NOT DETRACTED IN THE TINIEST IOTA FROM YOUR APPEARANCE + WE SHALL NOW SEE HOW THE ELECTRIC BLUE DRESS WILL BECOME YOU + YOU WILL FIND IT LAID OUT UPON THE BED IN YOUR ROOM AND IF YOU WOULD BE SO GOOD AS TO PUT IT ON WE SHOULD BOTH BE EXTREMELY OBLIGED + THE DRESS WHICH I FOUND WAITING FOR ME WAS OF A PECULIAR SHADE OF BLUE + IT WAS OF EXCELLENT MATERIAL A SORT OF BEIGE BUT IT BORE UNMISTAKABLE SIGNS OF HAVING BEEN WORN BEFORE + IT COULD NOT HAVE BEEN A BETTER FIT IF I HAD BEEN MEASURED FOR IT + BOTH MR. AND MRS. RUCASTLE EXPRESSED A DELIGHT AT THE LOOK OF IT WHICH SEEMED QUITE EXAGGERATED IN ITS VEHEMENCE + THEY WERE WAITING FOR ME IN THE DRAWING ROOM WHICH IS A VERY LARGE ROOM STRETCHING ALONG THE ENTIRE FRONT OF THE HOUSE WITH THREE LONG WINDOWS REACHING DOWN TO THE FLOOR + A CHAIR HAD BEEN PLACED CLOSE TO THE CENTRAL WINDOW WITH ITS BACK TURNED TOWARDS IT + IN THIS I WAS ASKED TO SIT AND THEN MR. RUCASTLE WALKING UP AND DOWN ON THE OTHER SIDE OF THE ROOM BEGAN TO TELL ME A SERIES OF THE FUNNIEST STORIES THAT I HAVE EVER LISTENED TO + YOU CANNOT IMAGINE HOW COMICAL HE WAS AND I LAUGHED UNTIL I WAS QUITE WEARY + MRS. RUCASTLE HOWEVER WHO HAS EVIDENTLY NO SENSE OF HUMOUR NEVER SO MUCH AS SMILED BUT SAT WITH HER HANDS IN HER LAP AND A SAD ANXIOUS LOOK UPON HER FACE + AFTER AN HOUR OR SO MR. RUCASTLE SUDDENLY REMARKED THAT IT WAS TIME TO COMMENCE THE DUTIES OF THE DAY AND THAT I MIGHT CHANGE MY DRESS AND GO TO LITTLE EDWARD IN THE NURSERY + TWO DAYS LATER THIS SAME PERFORMANCE WAS GONE THROUGH UNDER EXACTLY SIMILAR CIRCUMSTANCES + AGAIN I CHANGED MY DRESS AGAIN I SAT IN THE WINDOW AND AGAIN I LAUGHED VERY HEARTILY AT THE FUNNY STORIES OF WHICH MY EMPLOYER HAD AN IMMENSE REPERTOIRE AND WHICH HE TOLD INIMITABLY + THEN HE HANDED ME A YELLOWBACKED NOVEL AND MOVING MY CHAIR A LITTLE SIDEWAYS THAT MY OWN SHADOW MIGHT NOT FALL UPON THE PAGE. HE BEGGED ME TO READ ALOUD TO HIM + I READ FOR ABOUT TEN MINUTES BEGINNING IN THE HEART OF A CHAPTER AND THEN SUDDENLY IN THE MIDDLE OF A SENTENCE HE ORDERED ME TO CEASE AND TO CHANGE MY DRESS + YOU CAN EASILY IMAGINE MR. HOLMES HOW CURIOUS I BECAME AS TO WHAT THE MEANING OF THIS EXTRAORDINARY PERFORMANCE COULD POSSIBLY BE + THEY WERE ALWAYS VERY CAREFUL I OBSERVED TO TURN MY FACE AWAY FROM THE WINDOW SO THAT I BECAME CONSUMED WITH THE DESIRE TO SEE WHAT WAS GOING ON BEHIND MY BACK + AT FIRST IT SEEMED TO BE IMPOSSIBLE BUT I SOON DEVISED A MEANS + MY HAND MIRROR HAD BEEN BROKEN SO A HAPPY THOUGHT SEIZED ME AND I CONCEALED A PIECE OF THE GLASS IN MY HANDKERCHIEF + ON THE NEXT OCCASION IN THE MIDST OF MY LAUGHTER I PUT MY HANDKERCHIEF UP TO MY EYES AND WAS ABLE WITH A LITTLE MANAGEMENT TO SEE ALL THAT THERE WAS BEHIND ME + I CONFESS THAT I WAS DISAPPOINTED + THERE WAS NOTHING + AT LEAST THAT WAS MY FIRST IMPRESSION + AT THE SECOND GLANCE HOWEVER I PERCEIVED THAT THERE WAS A MAN STANDING IN THE SOUTHAMPTON ROAD A SMALL BEARDED MAN IN A GRAY SUIT WHO SEEMED TO BE LOOKING IN MY DIRECTION + THE ROAD IS AN IMPORTANT HIGHWAY AND THERE ARE USUALLY PEOPLE THERE + THIS MAN HOWEVER WAS LEANING AGAINST THE RAILINGS WHICH BORDERED OUR FIELD AND WAS LOOKING EARNESTLY UP + I LOWERED MY HANDKERCHIEF AND GLANCED AT MRS. RUCASTLE TO FIND HER EYES FIXED UPON ME WITH A MOST SEARCHING GAZE + SHE SAID NOTHING BUT I AM CONVINCED THAT SHE HAD DIVINED THAT I HAD A MIRROR IN MY HAND AND HAD SEEN WHAT WAS BEHIND ME + SHE ROSE AT ONCE + QUOTE JEPHRO SAID SHE THERE IS AN IMPERTINENT FELLOW UPON THE ROAD THERE WHO STARES UP AT MISS HUNTER + NO FRIEND OF YOURS MISS HUNTER HE ASKED + NO I KNOW NO ONE IN THESE PARTS + DEAR ME + HOW VERY IMPERTINENT + KINDLY TURN ROUND AND MOTION TO HIM TO GO AWAY + SURELY IT WOULD BE BETTER TO TAKE NO NOTICE + NO NO WE SHOULD HAVE HIM LOITERING HERE ALWAYS + KINDLY TURN ROUND AND WAVE HIM AWAY LIKE THAT + QUOTE I DID AS I WAS TOLD AND AT THE SAME INSTANT MRS. RUCASTLE DREW DOWN THE BLIND + THAT WAS A WEEK AGO AND FROM THAT TIME I HAVE NOT SAT AGAIN IN THE WINDOW NOR HAVE I WORN THE BLUE DRESS NOR SEEN THE MAN IN THE ROAD + PRAY CONTINUE SAID HOLMES + YOUR NARRATIVE PROMISES TO BE A MOST INTERESTING ONE + YOU WILL FIND IT RATHER DISCONNECTED I FEAR AND THERE MAY PROVE TO BE LITTLE RELATION BETWEEN THE DIFFERENT INCIDENTS OF WHICH I SPEAK + ON THE VERY FIRST DAY THAT I WAS AT THE COPPER BEECHES MR. RUCASTLE TOOK ME TO A SMALL OUTHOUSE WHICH STANDS NEAR THE KITCHEN DOOR + AS WE APPROACHED IT I HEARD THE SHARP RATTLING OF A CHAIN AND THE SOUND AS OF A LARGE ANIMAL MOVING ABOUT + LOOK IN HERE SAID MR. RUCASTLE SHOWING ME A SLIT BETWEEN TWO PLANKS + IS HE NOT A BEAUTY + QUOTE I LOOKED THROUGH AND WAS CONSCIOUS OF TWO GLOWING EYES AND OF A VAGUE FIGURE HUDDLED UP IN THE DARKNESS + DON'T BE FRIGHTENED SAID MY EMPLOYER LAUGHING AT THE START WHICH I HAD GIVEN + IT'S ONLY CARLO MY MASTIFF + I CALL HIM MINE BUT REALLY OLD TOLLER MY GROOM IS THE ONLY MAN WHO CAN DO ANYTHING WITH HIM + WE FEED HIM ONCE A DAY AND NOT TOO MUCH THEN SO THAT HE IS ALWAYS AS KEEN AS MUSTARD + TOLLER LETS HIM LOOSE EVERY NIGHT AND GOD HELP THE TRESPASSER WHOM HE LAYS HIS FANGS UPON + FOR GOODNESS' SAKE DON'T YOU EVER ON ANY PRETEXT SET YOUR FOOT OVER THE THRESHOLD AT NIGHT FOR IT'S AS MUCH AS YOUR LIFE IS WORTH + THE WARNING WAS NO IDLE ONE FOR TWO NIGHTS LATER I HAPPENED TO LOOK OUT OF MY BEDROOM WINDOW ABOUT TWO O'CLOCK IN THE MORNING + IT WAS A BEAUTIFUL MOONLIGHT NIGHT AND THE LAWN IN FRONT OF THE HOUSE WAS SILVERED OVER AND ALMOST AS BRIGHT AS DAY + I WAS STANDING RAPT IN THE PEACEFUL BEAUTY OF THE SCENE WHEN I WAS AWARE THAT SOMETHING WAS MOVING UNDER THE SHADOW OF THE COPPER BEECHES + AS IT EMERGED INTO THE MOONSHINE I SAW WHAT IT WAS + IT WAS A GIANT DOG AS LARGE AS A CALF TAWNY TINTED WITH HANGING JOWL BLACK MUZZLE AND HUGE PROJECTING BONES + IT WALKED SLOWLY ACROSS THE LAWN AND VANISHED INTO THE SHADOW UPON THE OTHER SIDE + THAT DREADFUL SENTINEL SENT A CHILL TO MY HEART WHICH I DO NOT THINK THAT ANY BURGLAR COULD HAVE DONE + AND NOW I HAVE A VERY STRANGE EXPERIENCE TO TELL YOU + I HAD AS YOU KNOW CUT OFF MY HAIR IN LONDON AND I HAD PLACED IT IN A GREAT COIL AT THE BOTTOM OF MY TRUNK + ONE EVENING AFTER THE CHILD WAS IN BED I BEGAN TO AMUSE MYSELF BY EXAMINING THE FURNITURE OF MY ROOM AND BY REARRANGING MY OWN LITTLE THINGS + THERE WAS AN OLD CHEST OF DRAWERS IN THE ROOM THE TWO UPPER ONES EMPTY AND OPEN THE LOWER ONE LOCKED + I HAD FILLED THE FIRST TWO WITH MY LINEN AND AS I HAD STILL MUCH TO PACK AWAY I WAS NATURALLY ANNOYED AT NOT HAVING THE USE OF THE THIRD DRAWER + IT STRUCK ME THAT IT MIGHT HAVE BEEN FASTENED BY A MERE OVERSIGHT SO I TOOK OUT MY BUNCH OF KEYS AND TRIED TO OPEN IT + THE VERY FIRST KEY FITTED TO PERFECTION AND I DREW THE DRAWER OPEN + THERE WAS ONLY ONE THING IN IT BUT I AM SURE THAT YOU WOULD NEVER GUESS WHAT IT WAS + IT WAS MY COIL OF HAIR + I TOOK IT UP AND EXAMINED IT + IT WAS OF THE SAME PECULIAR TINT AND THE SAME THICKNESS + BUT THEN THE IMPOSSIBILITY OF THE THING OBTRUDED ITSELF UPON ME + HOW COULD MY HAIR HAVE BEEN LOCKED IN THE DRAWER + WITH TREMBLING HANDS I UNDID MY TRUNK TURNED OUT THE CONTENTS AND DREW FROM THE BONOM MY OWN HAIR + I LAID THE TWO TRESSES TOGETHER AND I ASSURE YOU THAT THEY WERE IDENTICAL + WAS IT NOT EXTRAORDINARY + PUZZLE AS I WOULD I COULD MAKE NOTHING AT ALL OF WHAT IT MEANT + I RETURNED THE STRANGE HAIR TO THE DRAWER AND I SAID NOTHING OF THE MATTER TO THE RUCASTLES AS I FELT THAT I HAD PUT MYSELF IN THE WRONG BY OPENING A DRAWER WHICH THEY HAD LOCKED + I AM NATURALLY OBSERVANT AS YOU MAY HAVE REMARKED MR. HOLMES AND I SOON HAD A PRETTY GOOD PLAN OF THE WHOLE HOUSE IN MY HEAD + THERE WAS ONE WING HOWEVER WHICH APPEARED NOT TO BE INHABITED AT ALL + A DOOR WHICH FACED THAT WHICH LED INTO THE QUARTERS OF THE TOLLERS OPENED INTO THIS SUITE BUT IT WAS INVARIABLY LOCKED + ONE DAY HOWEVER AS I ASCENDED THE STAIR I MET MR. RUCASTLE COMING OUT THROUGH THIS DOOR HIS KEYS IN HIS HAND AND A LOOK ON HIS FACE WHICH MADE HIM A VERY DIFFERENT PERSON TO THE ROUND JOVIAL MAN TO WHOM I WAS ACCUSTOMED + HIS CHEEKS WERE RED HIS BROW WAS ALL CRINKLED WITH ANGER AND THE VEINS STOOD OUT AT HIS TEMPLES WITH PASSION + HE LOCKED THE DOOR AND HURRIED PAST ME WITHOUT A WORD OR A LOOK + QUOTE THIS AROUSED MY CURIOSITY SO WHEN I WENT OUT FOR A WALK IN THE GROUNDS WITH MY CHARGE I STROLLED ROUND TO THE SIDE FROM WHICH I COULD SEE THE WINDOWS OF THIS PART OF THE HOUSE + THERE WERE FOUR OF THEM IN A ROW THREE OF WHICH WERE SIMPLY DIRTY WHILE THE FOURTH WAS SHUTTERED UP + THEY WERE EVIDENTLY ALL DESERTED + AS I STROLLED UP AND DOWN GLANCING AT THEM OCCASIONALLY MR. RUCASTLE CAME OUT TO ME LOOKING AS MERRY AND JOVIAL AS EVER + AH SAID HE YOU MUST NOT THINK ME RUDE IF I PASSED YOU WITHOUT A WORD MY DEAR YOUNG LADY + I WAS PREOCCUPIED WITH BUSINESS MATTERS + I ASSURED HIM THAT I WAS NOT OFFENDED + BY THE WAY SAID I YOU SEEM TO HAVE QUITE A SUITE OF SPARE ROOMS UP THERE AND ONE OF THEM HAS THE SHUTTERS UP + HE LOOKED SURPRISED AND AS IT SEEMED TO ME A LITTLE STARTLED AT MY REMARK + PHOTOGRAPHY IS ONE OF MY HOBBIES SAID HE + I HAVE MADE MY DARK ROOM UP THERE + BUT DEAR ME WHAT AN OBSERVANT YOUNG LADY WE HAVE COME UPON + WHO WOULD HAVE BELIEVED IT + WHO WOULD HAVE EVER BELIEVED IT + HE SPOKE IN A JESTING TONE BUT THERE WAS NO JEST IN HIS EYES AS HE LOOKED AT ME + I READ SUSPICION THERE AND ANNOYANCE BUT NO JEST + WELL MR. HOLMES FROM THE MOMENT THAT I UNDERSTOOD THAT THERE WAS SOMETHING ABOUT THAT SUITE OF ROOMS WHICH I WAS NOT TO KNOW I WAS ALL ON FIRE TO GO OVER THEM + IT WAS NOT MERE CURIOSITY THOUGH I HAVE MY SHARE OF THAT + IT WAS MORE A FEELING OF DUTY A FEELING THAT SOME GOOD MIGHT COME FROM MY PENETRATING TO THIS PLACE + THEY TALK OF WOMAN'S INSTINCT PERHAPS IT WAS WOMAN'S INSTINCT WHICH GAVE ME THAT FEELING + AT ANY RATE IT WAS THERE AND I WAS KEENLY ON THE LOOKOUT FOR ANY CHANCE TO PASS THE FORBIDDEN DOOR + QUOTE IT WAS ONLY YESTERDAY THAT THE CHANCE CAME + I MAY TELL YOU THAT BESIDES MR. RUCASTLE BOTH TOLLER AND HIS WIFE FIND SOMETHING TO DO IN THESE DESERTED ROOMS AND I ONCE SAW HIM CARRYING A LARGE BLACK LINEN BAG WITH HIM THROUGH THE DOOR + RECENTLY HE HAS BEEN DRINKING HARD AND YESTERDAY EVENING HE WAS VERY DRUNK AND WHEN I CAME UPSTAIRS THERE WAS THE KEY IN THE DOOR + I HAVE NO DOUBT AT ALL THAT HE HAD LEFT IT THERE + MR. AND MRS. RUCASTLE WERE BOTH DOWNSTAIRS AND THE CHILD WAS WITH THEM SO THAT I HAD AN ADMIRABLE OPPORTUNITY + I TURNED THE KEY GENTLY IN THE LOCK OPENED THE DOOR AND SLIPPED THROUGH + THERE WAS A LITTLE PASSAGE IN FRONT OF ME UNPAPERED AND UNCARPETED WHICH TURNED AT A RIGHT ANGLE AT THE FARTHER END + ROUND THIS CORNER WERE THREE DOORS IN A LINE THE FIRST AND THIRD OF WHICH WERE OPEN + THEY EACH LED INTO AN EMPTY ROOM DUSTY AND CHEERLESS WITH TWO WINDOWS IN THE ONE AND ONE IN THE OTHER SO THICK WITH DIRT THAT THE EVENING LIGHT GLIMMERED DIMLY THROUGH THEM + THE CENTRE DOOR WAS CLOSED AND ACROSS THE OUTSIDE OF IT HAD BEEN FASTENED ONE OF THE BROAD BARS OF AN IRON BED PADLOCKED AT ONE END TO A RING IN THE WALL AND FASTENED AT THE OTHER WITH STOUT CORD + THE DOOR ITSELF WAS LOCKED AS WELL AND THE KEY WAS NOT THERE + THIS BARRICADED DOOR CORRESPONDED CLEARLY WITH THE SHUTTERED WINDOW OUTSIDE AND YET I COULD SEE BY THE GLIMMER FROM BENEATH IT THAT THE ROOM WAS NOT IN DARKNESS + EVIDENTLY THERE WAS A SKYLIGHT WHICH LET IN LIGHT FROM ABOVE + AS I STOOD IN THE PASSAGE GAZING AT THE SINISTER DOOR AND WONDERING WHAT SECRET IT MIGHT VEIL I SUDDENLY HEARD THE SOUND OF STEPS WITHIN THE ROOM AND SAW A SHADOW PASS BACKWARD AND FORWARD AGAINST THE LITTLE SLIT OF DIM LIGHT WHICH SHONE OUT FROM UNDER THE DOOR + A MAD UNREASONING TERROR ROSE UP IN ME AT THE SIGHT MR. HOLMES + MY OVERSTRUNG NERVES FAILED ME SUDDENLY AND I TURNED AND RAN RAN AS THOUGH SOME DREADFUL HAND WERE BEHIND ME CLUTCHING AT THE SKIRT OF MY DRESS + I RUSHED DOWN THE PASSAGE THROUGH THE DOOR AND STRAIGHT INTO THE ARMS OF MR. RUCASTLE WHO WAS WAITING OUTSIDE + SO SAID HE SMILING IT WAS YOU THEN + I THOUGHT THAT IT MUST BE WHEN I SAW THE DOOR OPEN + OH I AM SO FRIGHTENED + I PANTED + MY DEAR YOUNG LADY MY DEAR YOUNG LADY YOU CANNOT THINK HOW CARESSING AND SOOTHING HIS MANNER WAS AND WHAT HAS FRIGHTENED YOU MY DEAR YOUNG LADY + BUT HIS VOICE WAS JUST A LITTLE TOO COAXING + HE OVERDID IT + I WAS KEENLY ON MY GUARD AGAINST HIM + QUOTE I WAS FOOLISH ENOUGH TO GO INTO THE EMPTY WING I ANSWERED + BUT IT IS SO LONELY AND EERIE IN THIS DIM LIGHT THAT I WAS FRIGHTENED AND RAN OUT AGAIN + OH IT IS SO DREADFULLY STILL IN THERE + ONLY THAT SAID HE LOOKING AT ME KEENLY + WHY WHAT DID YOU THINK + I ASKED + WHY DO YOU THINK THAT I LOCK THIS DOOR + I AM SURE THAT I DO NOT KNOW + IT IS TO KEEP PEOPLE OUT WHO HAVE NO BUSINESS THERE + DO YOU SEE + HE WAS STILL SMILING IN THE MOST AMIABLE MANNER + QUOTE WELL THEN YOU KNOW NOW + AND IF YOU EVER PUT YOUR FOOT OVER THAT THRESHOLD AGAIN' HERE IN AN INSTANT THE SMILE HARDENED INTO A GRIN OF RAGE AND HE GLARED DOWN AT ME WITH THE FACE OF A DEMON I'LL THROW YOU TO THE MASTIFF + I WAS SO TERRIFIED THAT I DO NOT KNOW WHAT I DID + I SUPPOSE THAT I MUST HAVE RUSHED PAST HIM INTO MY ROOM + I REMEMBER NOTHING UNTIL I FOUND MYSELF LYING ON MY BED TREMBLING ALL OVER + THEN I THOUGHT OF YOU MR. HOLMES + I COULD NOT LIVE THERE LONGER WITHOUT SOME ADVICE + I WAS FRIGHTENED OF THE HOUSE OF THE MAN OF THE WOMAN OF THE SERVANTS EVEN OF THE CHILD + THEY WERE ALI HORRIBLE TO ME + IF I COULD ONLY BRING YOU DOWN ALL WOULD BE WELL + OF COURSE I MIGHT HAVE FLED FROM THE HOUSE BUT MY CURIOSITY WAS ALMOST AS STRONG AS MY FEARS + MY MIND WAS SOON MADE UP + I WOULD SEND YOU A WIRE + I PUT ON MY HAT AND CLOAK WENT DOWN TO THE OFFICE WHICH IS ABOUT HALF A MILE FROM THE HOUSE AND THEN RETURNED FEELING VERY MUCH EASIER + A HORRIBLE DOUBT CAME INTO MY MIND AS I APPROACHED THE DOOR LEST THE DOG MIGHT BE LOOSE BUT I REMEMBERED THAT TOLLER HAD DRUNK HIMSELF INTO A STATE OF INSENSIBILITY THAT EVENING AND I KNEW THAT HE WAS THE ONLY ONE IN THE HOUSEHOLD WHO HAD ANY INFLUENCE WITH THE SAVAGE CREATURE OR WHO WOULD VENTURE TO SET HIM FREE + I SLIPPED IN IN SAFETY AND LAY AWAKE HALF THE NIGHT IN MY JOY AT THE THOUGHT OF SEEING YOU + I HAD NO DIFFICULTY IN GETTING LEAVE TO COME INTO WINCHESTER THIS MORNING BUT I MUST BE BACK BEFORE THREE O'CLOCK FOR MR. AND MRS. RUCASTLE ARE GOING ON A VISIT AND WILL BE AWAY ALL THE EVENING SO THAT I MUST LOOK AFTER THE CHILD + NOW I HAVE TOLD YOU ALL MY ADVENTURES MR. HOLMES AND I SHOULD BE VERY GLAD IF YOU COULD TELL ME WHAT IT ALL MEANS AND ABOVE ALL WHAT I SHOULD DO + HOLMES AND I HAD LISTENED SPELLBOUND TO THIS EXTRAORDINARY STORY + MY FRIEND ROSE NOW AND PACED UP AND DOWN THE ROOM HIS HANDS IN HIS POCKETS AND AN EXPRESSION OF THE MOST PROFOUND GRAVITY UPON HIS FACE + IS TOLLER STILL DRUNK HE ASKED + YES + I HEARD HIS WIFE TELL MRS. RUCASTLE THAT SHE COULD DO NOTHING WITH HIM + QUOTE THAT IS WELL + AND THE RUCASTLES GO OUT TO NIGHT + YES + IS THERE A CELLAR WITH A GOOD STRONG LOCK + YES THE WINE CELLAR + YOU SEEM TO ME TO HAVE ACTED ALL THROUGH THIS MATTER LIKE A VERY BRAVE AND SENSIBLE GIRL MISS HUNTER + DO YOU THINK THAT YOU COULD PERFORM ONE MORE FEAT + I SHOULD NOT ASK IT OF YOU IF I DID NOT THINK YOU A QUITE EXCEPTIONAL WOMAN QUOTE + I WILL TRY + WHAT IS IT + WE SHALL BE AT THE COPPER BEECHES BY SEVEN O'CLOCK MY FRIEND AND I. THE RUCASTLES WILL BE GONE BY THAT TIME AND TOLLER WILL WE HOPE BE INCAPABLE + THERE ONLY REMAINS MRS. TOLLER WHO MIGHT GIVE THE ALARM + IF YOU COULD SEND HER INTO THE CELLAR ON SOME ERRAND AND THEN TURN THE KEY UPON HER YOU WOULD FACILITATE MATTERS IMMENSELY + I WILL DO IT + QUOTE EXCELLENT + WE SHALL THEN LOOK THOROUGHLY INTO THE AFFAIR + OF COURSE THERE IS ONLY ONE FEASIBLE EXPLANATION + YOU HAVE BEEN BROUGHT THERE TO PERSONATE SOMEONE AND THE REAL PERSON IS IMPRISONED IN THIS CHAMBER + THAT IS OBVIOUS + AS TO WHO THIS PRISONER IS I HAVE NO DOUBT THAT IT IS THE DAUGHTER MISS ALICE RUCASTLE IF I REMEMBER RIGHT WHO WAS SAID TO HAVE GONE TO AMERICA + YOU WERE CHOSEN DOUBTLESS AS RESEMBLING HER IN HEIGHT FIGURE AND THE COLOUR OF YOUR HAIR + HERS HAD BEEN CUT OFF VERY POSSIBLY IN SOME ILLNESS THROUGH WHICH SHE HAS PASSED AND SO OF COURSE YOURS HAD TO BE SACRIFICED ALSO + BY A CURIOUS CHANCE YOU CAME UPON HER TRESSES + THE MAN IN THE ROAD WAS UNDOUBTEDLY SOME FRIEND OF HERS POSSIBLY HER FIANCE AND NO DOUBT AS YOU WORE THE GIRL'S DRESS AND WERE SO LIKE HER HE WAS CONVINCED FROM YOUR LAUGHTER WHENEVER HE SAW YOU AND AFTERWARDS FROM YOUR GESTURE THAT MISS RUCASTLE WAS PERFECTLY HAPPY AND THAT SHE NO LONGER DESIRED HIS ATTENTIONS + THE DOG IS LET LOOSE AT NIGHT TO PREVENT HIM FROM ENDEAVOURING TO COMMUNICATE WITH HER + SO MUCH IS FAIRLY CLEAR + THE MOST SERIOUS POINT IN THE CASE IS THE DISPOSITION OF THE CHILD + WHAT ON EARTH HAS THAT TO DO WITH IT + I EJACULATED + MY DEAR WATSON YOU AS A MEDICAL MAN ARE CONTINUALLY GAINING LIGHT AS TO THE TENDENCIES OF A CHILD BY THE STUDY OF THE PARENTS + DON'T YOU SEE THAT THE CONVERSE IS EQUALLY VALID + I HAVE FREQUENTLY GAINED MY FIRST REAL INSIGHT INTO THE CHARACTER OF PARENTS BY STUDYING THEIR CHILDREN + THIS CHILD'S DISPOSITION IS ABNORMALLY CRUEL MERELY FOR CRUELTY'S SAKE AND WHETHER HE DERIVES THIS FROM HIS SMILING FATHER AS I SHOULD SUSPECT OR FROM HIS MOTHER IT BODES EVIL FOR THE POOR GIRL WHO IS IN THEIR POWER + I AM SURE THAT YOU ARE RIGHT MR. HOLMES CRIED OUR CLIENT + QUOTE A THOUSAND THINGS COME BACK TO ME WHICH MAKE ME CERTAIN THAT YOU HAVE HIT IT + OH LET US LOSE NOT AN INSTANT IN BRINGING HELP TO THIS POOR CREATURE + WE MUST BE CIRCUMSPECT FOR WE ARE DEALING WITH A VERY CUNNING MAN + WE CAN DO NOTHING UNTIL SEVEN O'CLOCK + AT THAT HOUR WE SHALL BE WITH YOU AND IT WILL NOT BE LONG BEFORE WE SOLVE THE MYSTERY + WE WERE AS GOOD AS OUR WORD FOR IT WAS JUST SEVEN WHEN WE REACHED THE COPPER BEECHES HAVING PUT UP OUR TRAP AT A WAYSIDE PUBLIC HOUSE + THE GROUP OF TREES WITH THEIR DARK LEAVES SHINING LIKE BURNISHED METAL IN THE LIGHT OF THE SETTING SUN WERE SUFFICIENT TO MARK THE HOUSE EVEN HAD MISS HUNTER NOT BEEN STANDING SMILING ON THE DOOR STEP + HAVE YOU MANAGED IT ASKED HOLMES + A LOUD THUDDING NOISE CAME FROM SOMEWHERE DOWNSTAIRS + THAT IS MRS. TOLLER IN THE CELLAR SAID SHE + QUOTE HER HUSBAND LIES SNORING ON THE KITCHEN RUG + HERE ARE HIS KEYS WHICH ARE THE DUPLICATES OF MR. RUCASTLE'S + YOU HAVE DONE WELL INDEED CRIED HOLMES WITH ENTHUSIASM + NOW LEAD THE WAY AND WE SHALL SOON SEE THE END OF THIS BLACK BUSINESS + WE PASSED UP THE STAIR UNLOCKED THE DOOR FOLLOWED ON DOWN A PASSAGE AND FOUND OURSELVES IN FRONT OF THE BARRICADE WHICH MISS HUNTER HAD DESCRIBED + HOLMES CUT THE CORD AND REMOVED THE TRANSVERSE BAR + THEN HE TRIED THE VARIOUS KEYS IN THE LOCK BUT WITHOUT SUCCESS + NO SOUND CAME FROM WITHIN AND AT THE SILENCE HOLMES'S FACE CLOUDED OVER + I TRUST THAT WE ARE NOT TOO LATE SAID HE + I THINK MISS HUNTER THAT WE HAD BETTER GO IN WITHOUT YOU + NOW WATSON PUT YOUR SHOULDER TO IT AND WE SHALL SEE WHETHER WE CANNOT MAKE OUR WAY IN QUOTE + IT WAS AN OLD RICKETY DOOR AND GAVE AT ONCE BEFORE OUR UNITED STRENGTH + TOGETHER WE RUSHED INTO THE ROOM + IT WAS EMPTY + THERE WAS NO FURNITURE SAVE A LITTLE PALLET BED A SMALL TABLE AND A BASKETFUL OF LINEN + THE SKYLIGHT ABOVE WAS OPEN AND THE PRISONER GONE + THERE HAS BEEN SOME VILLAINY HERE SAID HOLMES THIS BEAUTY HAS GUESSED MISS HUNTER'S INTENTIONS AND HAS CARRIED HIS VICTIM OFF + BUT HOW + THROUGH THE SKYLIGHT + WE SHALL SOON SEE HOW HE MANAGED IT + HE SWUNG HIMSELF UP ONTO THE ROOF + AH YES HE CRIED HERE'S THE END OF A LONG LIGHT LADDER AGAINST THE EAVES + THAT IS HOW HE DID IT QUOTE + BUT IT IS IMPOSSIBLE SAID MISS HUNTER THE LADDER WAS NOT THERE WHEN THE RUCASTLES WENT AWAY + HE HAS COME BACK AND DONE IT + I TELL YOU THAT HE IS A CLEVER AND DANGEROUS MAN + I SHOULD NOT BE VERY MUCH SURPRISED IF THIS WERE HE WHOSE STEP I HEAR NOW UPON THE STAIR + I THINK WATSON THAT IT WOULD BE AS WELL FOR YOU TO HAVE YOUR PISTOL READY + THE WORDS WERE HARDLY OUT OF HIS MOUTH BEFORE A MAN APPEARED AT THE DOOR OF THE ROOM A VERY FAT AND BURLY MAN WITH A HEAVY STICK IN HIS HAND + MISS HUNTER SCREAMED AND SHRUNK AGAINST THE WALL AT THE SIGHT OF HIM BUT SHERLOCK HOLMES SPRANG FORWARD AND CONFRONTED HIM + YOU VILLAIN SAID HE WHERE'S YOUR DAUGHTER + THE FAT MAN CAST HIS EYES ROUND AND THEN UP AT THE OPEN SKYLIGHT + IT IS FOR ME TO ASK YOU THAT HE SHRIEKED YOU THIEVES + SPIES AND THIEVES + I HAVE CAUGHT YOU HAVE L. + YOU ARE IN MY POWER + I'LL SERVE YOU QUOTE + HE TURNED AND CLATTERED DOWN THE STAIRS AS HARD AS HE COULD GO + HE'S GONE FOR THE DOG CRIED MISS HUNTER + I HAVE MY REVOLVER SAID I + BETTER CLOSE THE FRONT DOOR CRIED HOLMES AND WE ALL RUSHED DOWN THE STAIRS TOGETHER + WE HAD HARDLY REACHED THE HALL WHEN WE HEARD THE BAYING OF A HOUND AND THEN A SCREAM OF AGONY WITH A HORRIBLE WORRYING SOUND WHICH IT WAS DREADFUL TO LISTEN TO + AN ELDERLY MAN WITH A RED FACE AND SHAKING LIMBS CAME STAGGERING OUT AT A SIDE DOOR + MY GOD HE CRIED + SOMEONE HAS LOOSED THE DOG + IT'S NOT BEEN FED FOR TWO DAYS + QUICK QUICK OR IT'LL BE TOO LATE QUOTE + HOLMES AND I RUSHED OUT AND ROUND THE ANGLE OF THE HOUSE WITH TOLLER HURRYING BEHIND US + THERE WAS THE HUGE FAMISHED BRUTE ITS BLACK MUZZLE BURIED IN RUCASTLE'S THROAT WHILE HE WRITHED AND SCREAMED UPON THE GROUND + RUNNING UP I BLEW ITS BRAINS OUT AND IT FELL OVER WITH ITS KEEN WHITE TEETH STILL MEETING IN THE GREAT CREASES OF HIS NECK + WITH MUCH LABOUR WE SEPARATED THEM AND CARRIED HIM LIVING BUT HORRIBLY MANGLED INTO THE HOUSE + WE LAID HIM UPON THE DRAWING ROOM SOFA AND HAVING DISPATCHED THE SOBERED TOLLER TO BEAR THE NEWS TO HIS WIFE I DID WHAT I COULD TO RELIEVE HIS PAIN + WE WERE ALL ASSEMBLED ROUND HIM WHEN THE DOOR OPENED AND A TALL GAUNT WOMAN ENTERED THE ROOM + MRS. TOLLER CRIED MISS HUNTER + YES MISS + MR. RUCASTLE LET ME OUT WHEN HE CAME BACK BEFORE HE WENT UP TO YOU + AH MISS IT IS A PITY YOU DIDN'T LET ME KNOW WHAT YOU WERE PLANNING FOR I WOULD HAVE TOLD YOU THAT YOUR PAINS WERE WASTED + HA SAID HOLMES LOOKING KEENLY AT HER + IT IS CLEAR THAT MRS. TOLLER KNOWS MORE ABOUT THIS MATTER THAN ANYONE ELSE + QUOTE YES SIR I DO AND I AM READY ENOUGH TO TELL WHAT I KNOW QUOTE + THEN PRAY SIT DOWN AND LET US HEAR IT FOR THERE ARE SEVERAL POINTS ON WHICH I MUST CONFESS THAT I AM STILL IN THE DARK + I WILL SOON MAKE IT CLEAR TO YOU SAID SHE AND I'D HAVE DONE SO BEFORE NOW IF I COULD HA GOT OUT FROM THE CELLAR + IF THERE'S POLICE COURT BUSINESS OVER THIS YOU'LL REMEMBER THAT I WAS THE ONE THAT STOOD YOUR FRIEND AND THAT I WAS MISS ALICE'S FRIEND TOO + SHE WAS NEVER HAPPY AT HOME MISS ALICE WASN'T FROM THE TIME THAT HER FATHER MARRIED AGAIN + SHE WAS SLIGHTED LIKE AND HAD NO SAY IN ANYTHING BUT IT NEVER REALLY BECAME BAD FOR HER UNTIL AFTER SHE MET MR. FOWLER AT A FRIEND'S HOUSE + AS WELL AS I COULD LEARN MISS ALICE HAD RIGHTS OF HER OWN BY WILL BUT SHE WAS SO QUIET AND PATIENT SHE WAS THAT SHE NEVER SAID A WORD ABOUT THEM BUT JUST LEFT EVERYTHING IN MR. RUCASTLE'S HANDS + HE KNEW HE WAS SAFE WITH HER BUT WHEN THERE WAS A CHANCE OF A HUSBAND COMING FORWARD WHO WOULD ASK FOR ALL THAT THE LAW WOULD GIVE HIM THEN HER FATHER THOUGHT IT TIME TO PUT A STOP ON IT + HE WANTED HER TO SIGN A PAPER SO THAT WHETHER SHE MARRIED OR NOT HE COULD USE HER MONEY + WHEN SHE WOULDN'T DO IT HE KEPT ON WORRYING HER UNTIL SHE GOT BRAIN FEVER AND FOR SIX WEEKS WAS AT DEATH'S DOOR + THEN SHE GOT BETTER AT LAST ALL WORN TO A SHADOW AND WITH HER BEAUTIFUL HAIR CUT OFF BUT THAT DIDN'T MAKE NO CHANGE IN HER YOUNG MAN AND HE STUCK TO HER AS TRUE AS MAN COULD BE + AH SAID HOLMES I THINK THAT WHAT YOU HAVE BEEN GOOD ENOUGH TO TELL US MAKES THE MATTER FAIRLY CLEAR AND THAT I CAN DEDUCE ALL THAT REMAINS + MR. RUCASTLE THEN I PRESUME TOOK TO THIS SYSTEM OF IMPRISONMENT QUOTE + YES SIR + AND BROUGHT MISS HUNTER DOWN FROM LONDON IN ORDER TO GET RID OF THE DISAGREEABLE PERSISTENCE OF MR. FOWLER + THAT WAS IT SIR + BUT MR. FOWLER BEING A PERSEVERING MAN AS A GOOD SEAMAN SHOULD BE BLOCKADED THE HOUSE AND HAVING MET YOU SUCCEEDED BY CERTAIN ARGUMENTS METALLIC OR OTHERWISE IN CONVINCING YOU THAT YOUR INTERESTS WERE THE SAME AS HIS + MR. FOWLER WAS A VERY KIND SPOKEN FREE HANDED GENTLEMAN SAID MRS. TOLLER SERENELY + QUOTE AND IN THIS WAY HE MANAGED THAT YOUR GOOD MAN SHOULD HAVE NO WANT OF DRINK AND THAT A LADDER SHOULD BE READY AT THE MOMENT WHEN YOUR MASTER HAD GONE OUT QUOTE + YOU HAVE IT SIR JUST AS IT HAPPENED + I AM SURE WE OWE YOU AN APOLOGY MRS. TOLLER SAID HOLMES FOR YOU HAVE CERTAINLY CLEARED UP EVERYTHING WHICH PUZZLED US + AND HERE COMES THE COUNTRY SURGEON AND MRS. RUCASTLE SO I THINK + WATSON THAT WE HAD BEST ESCORT MISS HUNTER BACK TO WINCHESTER AS IT SEEMS TO ME THAT OUR LOCUS STANDI NOW IS RATHER A QUESTIONABLE ONE + AND THUS WAS SOLVED THE MYSTERY OF THE SINISTER HOUSE WITH THE COPPER BEECHES IN FRONT OF THE DOOR + MR. RUCASTLE SURVIVED BUT WAS ALWAYS A BROKEN MAN KEPT ALIVE SOLELY THROUGH THE CARE OF HIS DEVOTED WIFE + THEY STILL LIVE WITH THEIR OLD SERVANTS WHO PROBABLY KNOW SO MUCH OF RUCASTLE'S PAST LIFE THAT HE FINDS IT DIFFICULT TO PART FROM THEM + MR. FOWLER AND MISS RUCASTLE WERE MARRIED BY SPECIAL LICENSE IN SOUTHAMPTON THE DAY AFTER THEIR FLIGHT AND HE IS NOW THE HOLDER OF A GOVERNMENT APPOINTMENT IN THE ISLAND OF MAURITIUS + AS TO MISS VIOLET HUNTER MY FRIEND HOLMES RATHER TO MY DISAPPOINTMENT MANIFESTED NO FURTHER INTEREST IN HER WHEN ONCE SHE HAD CEASED TO BE THE CENTRE OF ONE OF HIS PROBLEMS AND SHE IS NOW THE HEAD OF A PRIVATE SCHOOL AT WALSALL WHERE I BELIEVE THAT SHE HAS MET WITH CONSIDERABLE SUCCESS diff --git a/samples/LMTutorial/train/crooked_man.txt b/samples/LMTutorial/train/crooked_man.txt new file mode 100755 index 0000000..99ebf89 --- /dev/null +++ b/samples/LMTutorial/train/crooked_man.txt @@ -0,0 +1,399 @@ + ONE SUMMER NIGHT A FEW MONTHS AFTER MY MARRIAGE I WAS SEATED BY MY OWN HEARTH SMOKING A LAST PIPE AND NODDING OVER A NOVEL FOR MY DAY'S WORK HAD BEEN AN EXHAUSTING ONE + MY WIFE HAD ALREADY GONE UPSTAIRS AND THE SOUND OF THE LOCKING OF THE HALL DOOR SOME TIME BEFORE TOLD ME THAT THE SERVANTS HAD ALSO RETIRED + I HAD RISEN FROM MY SEAT AND WAS KNOCKING OUT THE ASHES OF MY PIPE WHEN I SUDDENLY HEARD THE CLANG OF THE BELL + I LOOKED AT THE CLOCK + IT WAS A QUARTER TO TWELVE + THIS COULD NOT BE A VISITOR AT SO LATE AN HOUR + A PATIENT EVIDENTLY AND POSSIBLY AN ALL NIGHT SITTING + WITH A WRY FACE I WENT OUT INTO THE HALL AND OPENED THE DOOR + TO MY ASTONISHMENT IT WAS SHERLOCK HOLMES WHO STOOD UPON MY STEP + QUOTE AH WATSON QUOTE SAID HE QUOTE I HOPED THAT I MIGHT NOT BE TOO LATE TO CATCH YOU QUOTE + MY DEAR FELLOW PRAY COME IN + YOU LOOK SURPRISED AND NO WONDER + RELIEVED TOO I FANCY + HUM + YOU STILL SMOKE THE ARCADIA MIXTURE OF YOUR BACHELOR DAYS THEN + THERE'S NO MISTAKING THAT FLUFFY ASH UPON YOUR COAT + IT'S EASY TO TELL THAT YOU HAVE BEEN ACCUSTOMED TO WEAR A UNIFORM WATSON + YOU'LL NEVER PASS AS A PURE BRED CIVILIAN AS LONG AS YOU KEEP THAT HABIT OF CARRYING YOUR HANDKERCHIEF IN YOUR SLEEVE + COULD YOU PUT ME UP TO NIGHT + WITH PLEASURE + YOU TOLD ME THAT YOU HAD BACHELOR QUARTERS FOR ONE AND I SEE THAT YOU HAVE NO GENTLEMAN VISITOR AT PRESENT + YOUR HAT STAND PROCLAIMS AS MUCH QUOTE + I SHALL BE DELIGHTED IF YOU WILL STAY + THANK YOU + I'LL FILL THE VACANT PEG THEN + SORRY TO SEE THAT YOU'VE HAD THE BRITISH WORKMAN IN THE HOUSE + HE'S A TOKEN OF EVIL + NOT THE DRAINS I HOPE + NO THE GAS + AH + HE HAS LEFT TWO NAIL MARKS FROM HIS BOOT UPON YOUR LINOLEUM JUST WHERE THE LIGHT STRIKES IT + NO THANK YOU I HAD SOME SUPPER AT WATERLOO BUT I'LL SMOKE A PIPE WITH YOU WITH PLEASURE QUOTE + I HANDED HIM MY POUCH AND HE SEATED HIMSELF OPPOSITE TO ME AND SMOKED FOR SOME TIME.IN SILENCE + I WAS WELL AWARE THAT NOTHING BUT BUSINESS OF IMPORTANCE WOULD HAVE BROUGHT HIM TO ME AT SUCH AN HOUR SO I WAITED PATIENTLY UNTIL HE SHOULD COME ROUND TO IT + I SEE THAT YOU ARE PROFESSIONALLY RATHER BUSY JUST NOW SAID HE GLANCING VERY KEENLY ACROSS AT ME + YES I'VE HAD A BUSY DAY I ANSWERED + IT MAY SEEM VERY FOOLISH IN YOUR EYES I ADDED BUT REALLY I DON'T KNOW HOW YOU DEDUCED IT + HOLMES CHUCKLED TO HIMSELF + I HAVE THE ADVANTAGE OF KNOWING YOUR HABITS MY DEAR WATSON SAID HE + WHEN YOUR ROUND IS A SHORT ONE YOU WALK AND WHEN IT IS A LONG ONE YOU USE A HANSOM + AS I PERCEIVE THAT YOUR BOOTS ALTHOUGH USED ARE BY NO MEANS DIRTY I CANNOT DOUBT THAT YOU ARE AT PRESENT BUSY ENOUGH TO JUSTIFY THE HANSOM QUOTE + EXCELLENT + I CRIED + ELEMENTARY SAID HE + IT IS ONE OF THOSE INSTANCES WHERE THE REASONER CAN PRODUCE AN EFFECT WHICH SEEMS REMARKABLE TO HIS NEIGHBOUR BECAUSE THE LATTER HAS MISSED THE ONE LITTLE POINT WHICH IS THE BASIS OF THE DEDUCTION + THE SAME MAY BE SAID MY DEAR FELLOW FOR THE EFFECT OF SOME OF THESE LITTLE SKETCHES OF YOURS WHICH IS ENTIRELY MERETRICIOUS DEPENDING AS IT DOES UPON YOUR RETAINING IN YOUR OWN HANDS SOME FACTORS IN THE PROBLEM WHICH ARE NEVER IMPARTED TO THE READER + NOW AT PRESENT I AM IN THE POSITION OF THESE SAME READERS FOR I HOLD IN THIS HAND SEVERAL THREADS OF ONE OF THE STRANGEST CASES WHICH EVER PERPLEXED A MAN'S BRAIN AND YET I LACK THE ONE OR TWO WHICH ARE NEEDFUL TO COMPLETE MY THEORY + BUT I'LL HAVE THEM WATSON I'LL HAVE THEM + HIS EYES KINDLED AND A SLIGHT FLUSH SPRANG INTO HIS THIN CHEEKS + FOR AN INSTANT THE VEIL HAD LIFTED UPON HIS KEEN INTENSE NATURE BUT FOR AN INSTANT ONLY + WHEN I GLANCED AGAIN HIS FACE HAD RESUMED THAT RED INDIAN COMPOSURE WHICH HAD MADE SO MANY REGARD HIM AS A MACHINE RATHER THAN A MAN + THE PROBLEM PRESENTS FEATURES OF INTEREST SAID HE + QUOTE I MAY EVEN SAY EXCEPTIONAL FEATURES OF INTEREST + I HAVE ALREADY LOOKED INTO THE MATTER AND HAVE COME AS I THINK WITHIN SIGHT OF MY SOLUTION + IF YOU COULD ACCOMPANY ME IN THAT LAST STEP YOU MIGHT BE OF CONSIDERABLE SERVICE TO ME + I SHOULD BE DELIGHTED + COULD YOU GO AS FAR AS ALDERSHOT TO MORROW + I HAVE NO DOUBT JACKSON WOULD TAKE MY PRACTICE + VERY GOOD + I WANT TO START BY THE ELEVEN TEN FROM WATERLOO QUOTE + THAT WOULD GIVE ME TIME + THEN IF YOU ARE NOT TOO SLEEPY I WILL GIVE YOU A SKETCH OF WHAT HAS HAPPENED AND OF WHAT REMAINS TO BE DONE + I WAS SLEEPY BEFORE YOU CAME + I AM QUITE WAKEFUL NOW + I WILL COMPRESS THE STORY AS FAR AS MAY BE DONE WITHOUT OMITTING ANYTHING VITAL TO THE CASE + IT IS CONCEIVABLE THAT YOU MAY EVEN HAVE READ SOME ACCOUNT OF THE MATTER + IT IS THE SUPPOSED MURDER OF COLONEL BARCLAY OF THE ROYAL MUNSTERS AT ALDERSHOT WHICH I AM INVESTIGATING QUOTE + I HAVE HEARD NOTHING OF IT + IT HAS NOT EXCITED MUCH ATTENTION YET EXCEPT LOCALLY + THE FACTS ARE ONLY TWO DAYS OLD + BRIEFLY THEY ARE THESE + THE ROYAL MUNSTERS IS AS YOU KNOW ONE OF THE MOST FAMOUS IRISH REGIMENTS IN THE BRITISH ARMY + IT DID WONDERS BOTH IN THE CRIMEA AND THE MUTINY AND HAS SINCE THAT TIME DISTINGUISHED ITSELF UPON EVERY POSSIBLE OCCASION + IT WAS COMMANDED UP TO MONDAY NIGHT BY JAMES BARCLAY A GALLANT VETERAN WHO STARTED AS A FULL PRIVATE WAS RAISED TO COMMISSIONED RANK FOR HIS BRAVERY AT THE TIME OF THE MUTINY AND SO LIVED TO COMMAND THE REGIMENT IN WHICH HE HAD ONCE CARRIED A MUSKET + COLONEL BARCLAY HAD MARRIED AT THE TIME WHEN HE WAS A SERGEANT AND HIS WIFE WHOSE MAIDEN NAME WAS MISS NANCY DEVOY WAS THE DAUGHTER OF A FORMER COLOUR SERGEANT IN THE SAME CORPS + THERE WAS THEREFORE AS CAN BE IMAGINED SOME LITTLE SOCIAL FRICTION WHEN THE YOUNG COUPLE FOR THEY WERE STILL YOUNG FOUND THEMSELVES IN THEIR NEW SURROUNDINGS + THEY APPEAR HOWEVER TO HAVE QUICKLY ADAPTED THEMSELVES AND MRS. BARCLAY HAS ALWAYS I UNDERSTAND BEEN AS POPULAR WITH THE LADIES OF THE REGIMENT AS HER HUSBAND WAS WITH HIS BROTHER OFFICERS + I MAY ADD THAT SHE WAS A WOMAN OF GREAT BEAUTY AND THAT EVEN NOW WHEN SHE HAS BEEN MARRIED FOR UPWARD OF THIRTY YEARS SHE IS STILL OF A STRIKING AND QUEENLY APPEARANCE + COLONEL BARCLAY'S FAMILY LIFE APPEARS TO HAVE BEEN A UNIFORMLY HAPPY ONE + MAJOR MURPHY TO WHOM I OWE MOST OF MY FACTS ASSURES ME THAT HE HAS NEVER HEARD OF ANY MISUNDERSTANDING BETWEEN THE PAIR + ON THE WHOLE HE THINKS THAT BARCLAY'S DEVOTION TO HIS WIFE WAS GREATER THAN HIS WIFE'S TO BARCLAY + HE WAS ACUTELY UNEASY IF HE WERE ABSENT FROM HER FOR A DAY + SHE ON THE OTHER HAND THOUGH DEVOTED AND FAITHFUL WAS LESS OBTRUSIVELY AFFECTIONATE + BUT THEY WERE REGARDED IN THE REGIMENT AS THE VERY MODEL OF A MIDDLE AGED COUPLE + THERE WAS ABSOLUTELY NOTHING IN THEIR MUTUAL RELATIONS TO PREPARE PEOPLE FOR THE TRAGEDY WHICH WAS TO FOLLOW + QUOTE COLONEL BARCLAY HIMSELF SEEMS TO HAVE HAD SOME SINGULAR TRAITS IN HIS CHARACTER + HE WAS A DASHING JOVIAL OLD SOLDIER IN HIS USUAL MOOD BUT THERE WERE OCCASIONS ON WHICH HE SEEMED TO SHOW HIMSELF CAPABLE OF CONSIDERABLE VIOLENCE AND VINDICTIVENESS + THIS SIDE OF HIS NATURE HOWEVER APPEARS NEVER TO HAVE BEEN TURNED TOWARDS HIS WIFE + ANOTHER FACT WHICH HAD STRUCK MAJOR MURPHY AND THREE OUT OF FIVE OF THE OTHER OFFICERS WITH WHOM I CONVERSED WAS THE SINGULAR SORT OF DEPRESSION WHICH CAME UPON HIM AT TIMES + AS THE MAJOR EXPRESSED IT THE SMILE HAS OFTEN BEEN STRUCK FROM HIS MOUTH AS IF BY SOME INVISIBLE HAND WHEN HE HAS BEEN JOINING IN THE GAIETIES AND CHAFF OF THE MESS TABLE + FOR DAYS ON END WHEN THE MOOD WAS ON HIM HE HAS BEEN SUNK IN THE DEEPEST GLOOM + THIS AND A CERTAIN TINGE OF SUPERSTITION WERE THE ONLY UNUSUAL TRAITS IN HIS CHARACTER WHICH HIS BROTHER OFFICERS HAD OBSERVED + THE LATTER PECULIARITY TOOK THE FORM OF A DISLIKE TO BEING LEFT ALONE ESPECIALLY AFTER DARK + THIS PUERILE FEATURE IN A NATURE WHICH WAS CONSPICUOUSLY MANLY HAD OFTEN GIVEN RISE TO COMMENT AND CONJECTURE + THE FIRST BATTALION OF THE ROYAL MUNSTERS WHICH IS THE OLD ONE HUNDRED AND SEVENTEENTH HAS BEEN STATIONED AT ALDERSHOT FOR SOME YEARS + THE MARRIED OFFICERS LIVE OUT OF BARRACKS AND THE COLONEL HAS DURING ALL THIS TIME OCCUPIED A VILLA CALLED LACHINE ABOUT HALF A MILE FROM THE NORTH CAMP + THE HOUSE STANDS IN ITS OWN GROUNDS BUT THE WEST SIDE OF IT IS NOT MORE THAN THIRTY YARDS FROM THE HIGHROAD + A COACHMAN AND TWO MAIDS FORM THE STAFF OF SERVANTS + THESE WITH THEIR MASTER AND MISTRESS WERE THE SOLE OCCUPANTS OF LACHINE FOR THE BARCLAYS HAD NO CHILDREN NOR WAS IT USUAL FOR THEM TO HAVE RESIDENT VISITORS + NOW FOR THE EVENTS AT LACHINE BETWEEN NINE AND TEN ON THE EVENING OF LAST MONDAY + MRS. BARCLAY WAS IT APPEARS A MEMBER OF THE ROMAN CATHOLIC CHURCH AND HAD INTERESTED HERSELF VERY MUCH IN THE ESTABLISHMENT OF THE GUILD OF SAINT GEORGE WHICH WAS FORMED IN CONNECTION WITH THE WATT STREET CHAPEL FOR THE PURPOSE OF SUPPLYING THE POOR WITH CAST OFF CLOTHING + A MEETING OF THE GUILD HAD BEEN HELD THAT EVENING AT EIGHT AND MRS. BARCLAY HAD HURRIED OVER HER DINNER IN ORDER TO BE PRESENT AT IT + WHEN LEAVING THE HOUSE SHE WAS HEARD BY THE COACHMAN TO MAKE SOME COMMONPLACE REMARK TO HER HUSBAND AND TO ASSURE HIM THAT SHE WOULD BE BACK BEFORE VERY LONG + SHE THEN CALLED FOR MISS MORRISON A YOUNG LADY WHO LIVES IN THE NEXT VILLA AND THE TWO WENT OFF TOGETHER TO THEIR MEETING + IT LASTED FORTY MINUTES AND AT A QUARTER PAST NINE MRS. BARCLAY RETURNED HOME HAVING LEFT MISS MORRISON AT HER DOOR AS SHE PASSED + THERE IS A ROOM WHICH IS USED AS A MORNING ROOM AT LACHINE + THIS FACES THE ROAD AND OPENS BY A LARGE GLASS FOLDING DOOR ON TO THE LAWN + THE LAWN IS THIRTY YARDS ACROSS AND IS ONLY DIVIDED FROM THE HIGHWAY BY A LOW WALL WITH AN IRON RAIL ABOVE IT + IT WAS INTO THIS ROOM THAT MRS. BARCLAY WENT UPON HER RETURN + THE BLINDS WERE NOT DOWN FOR THE ROOM WAS SELDOM USED IN THE EVENING BUT MRS. BARCLAY HERSELF LIT THE LAMP AND THEN RANG THE BELL ASKING JANE STEWART THE HOUSEMAID TO BRING HER A CUP OF TEA WHICH WAS QUITE CONTRARY TO HER USUAL HABITS + THE COLONEL HAD BEEN SITTING IN THE DINING ROOM BUT HEARING THAT HIS WIFE HAD RETURNED HE JOINED HER IN THE MORNING ROOM + THE COACHMAN SAW HIM CROSS THE HALL AND ENTER IT + HE WAS NEVER SEEN AGAIN ALIVE + THE TEA WHICH HAD BEEN ORDERED WAS BROUGHT UP AT THE END OF TEN MINUTES BUT THE MAID AS SHE APPROACHED THE DOOR WAS SURPRISED TO HEAR THE VOICES OF HER MASTER AND MISTRESS IN FURIOUS ALTERCATION + SHE KNOCKED WITHOUT RECEIVING ANY ANSWER AND EVEN TURNED THE HANDLE BUT ONLY TO FIND THAT THE DOOR WAS LOCKED UPON THE INSIDE + NATURALLY ENOUGH SHE RAN DOWN TO TELL THE COOK AND THE TWO WOMEN WITH THE COACHMAN CAME UP INTO THE HALL AND LISTENED TO THE DISPUTE WHICH WAS STILL RAGING + THEY ALL AGREED THAT ONLY TWO VOICES WERE TO BE HEARD THOSE OF BARCLAY AND OF HIS WIFE + BARCLAY'S REMARKS WERE SUBDUED AND ABRUPT SO THAT NONE OF THEM WERE AUDIBLE TO THE LISTENERS + THE LADY'S ON THE OTHER HAND WERE MOST BITTER AND WHEN SHE RAISED HER VOICE COULD BE PLAINLY HEARD + YOU COWARD SHE REPEATED OVER AND OVER AGAIN + WHAT CAN BE DONE NOW + WHAT CAN BE DONE NOW + GIVE ME BACK MY LIFE + I WILL NEVER SO MUCH AS BREATHE THE SAME AIR WITH YOU AGAIN + YOU COWARD + YOU COWARD + THOSE WERE SCRAPS OF HER CONVERSATION ENDING IN A SUDDEN DREADFUL CRY IN THE MAN'S VOICE WITH A CRASH AND A PIERCING SCREAM FROM THE WOMAN + CONVINCED THAT SOME TRAGEDY HAD OCCURRED THE COACHMAN RUSHED TO THE DOOR AND STROVE TO FORCE IT WHILE SCREAM AFTER SCREAM ISSUED FROM WITHIN + HE WAS UNABLE HOWEVER TO MAKE HIS WAY IN AND THE MAIDS WERE TOO DISTRACTED WITH FEAR TO BE OF ANY ASSISTANCE TO HIM + A SUDDEN THOUGHT STRUCK HIM HOWEVER AND HE RAN THROUGH THE HALL DOOR AND ROUND TO THE LAWN UPON WHICH THE LONG FRENCH WINDOWS OPEN + ONE SIDE OF THE WINDOW WAS OPEN WHICH I UNDERSTAND WAS QUITE USUAL IN THE SUMMERTIME AND HE PASSED WITHOUT DIFFICULTY INTO THE ROOM + HIS MISTRESS HAD CEASED TO SCREAM AND WAS STRETCHED INSENSIBLE UPON A COUCH WHILE WITH HIS FEET TILTED OVER THE SIDE OF AN ARMCHAIR AND HIS HEAD UPON THE GROUND NEAR THE CORNER OF THE FENDER WAS IYING THE UNFORTUNATE SOLDIER STONE DEAD IN A POOL OF HIS OWN BLOOD + QUOTE NATURALLY THE COACHMAN'S FIRST THOUGHT ON FINDING THAT HE COULD DO NOTHING FOR HIS MASTER WAS TO OPEN THE DOOR + BUT HERE AN UNEXPECTED AND SINGULAR DIFFICULTY PRESENTED ITSELF + THE KEY WAS NOT IN THE INNER SIDE OF THE DOOR NOR COULD HE FIND IT ANYWHERE IN THE ROOM + HE WENT OUT AGAIN THEREFORE THROUGH THE WINDOW AND HAVING OBTAINED THE HELP OF A POLICEMAN AND OF A MEDICAL MAN HE RETURNED + THE LADY AGAINST WHOM NATURALLY THE STRONGEST SUSPICION RESTED WAS REMOVED TO HER ROOM STILL IN A STATE OF INSENSIBILITY + THE COLONEL'S BODY WAS THEN PLACED UPON THE SOFA AND A CAREFUL EXAMINATION MADE OF THE SCENE OF THE TRAGEDY + THE INJURY FROM WHICH THE UNFORTUNATE VETERAN WAS SUFFERING WAS FOUND TO BE A JAGGED CUT SOME TWO INCHES LONG AT THE BACK PART OF HIS HEAD WHICH HAD EVIDENTLY BEEN CAUSED BY A VIOLENT BLOW FROM A BLUNT WEAPON + NOR WAS IT DIFFICULT TO GUESS WHAT THAT WEAPON MAY HAVE BEEN + UPON THE FLOOR CLOSE TO THE BODY WAS LYING A SINGULAR CLUB OF HARD CARVED WOOD WITH A BONE HANDLE + THE COLONEL POSSESSED A VARIED COLLECTION OF WEAPONS BROUGHT FROM THE DIFFERENT COUNTRIES IN WHICH HE HAD FOUGHT AND IT IS CONJECTURED BY THE POLICE THAT THIS CLUB WAS AMONG HIS TROPHIES + THE SERVANTS DENY HAVING SEEN IT BEFORE BUT AMONG THE NUMEROUS CURIOSITIES IN THE HOUSE IT IS POSSIBLE THAT IT MAY HAVE BEEN OVERLOOKED + NOTHING ELSE OF IMPORTANCE WAS DISCOVERED IN THE ROOM BY THE POLICE SAVE THE INEXPLICABLE FACT THAT NEITHER UPON MRS. BARCLAY'S PERSON NOR UPON THAT OF THE VICTIM NOR IN ANY PART OF THE ROOM WAS THE MISSING KEY TO BE FOUND + THE DOOR HAD EVENTUALLY TO BE OPENED BY A LOCKSMITH FROM ALDERSHOT + THAT WAS THE STATE OF THINGS WATSON WHEN UPON THE TUESDAY MORNING I AT THE REQUEST OF MAJOR MURPHY WENT DOWN TO ALDERSHOT TO SUPPLEMENT THE EFFORTS OF THE POLICE + I THINK THAT YOU WILL ACKNOWLEDGE THAT THE PROBLEM WAS ALREADY ONE OF INTEREST BUT MY OBSERVATIONS SOON MADE ME REALIZE THAT IT WAS IN TRUTH MUCH MORE EXTRAORDINARY THAN WOULD AT FIRST SIGHT APPEAR + BEFORE EXAMINING THE ROOM I CROSS QUESTIONED THE SERVANTS BUT ONLY SUCCEEDED IN ELICITING THE FACTS WHICH I HAVE ALREADY STATED + ONE OTHER DETAIL OF INTEREST WAS REMEMBERED BY JANE STEWART THE HOUSEMAID + YOU WILL REMEMBER THAT ON HEARING THE SOUND OF THE QUARREL SHE DESCENDED AND RETURNED WITH THE OTHER SERVANTS + ON THAT FIRST OCCASION WHEN SHE WAS ALONE SHE SAYS THAT THE VOICES OF HER MASTER AND MISTRESS WERE SUNK SO LOW THAT SHE COULD HARDLY HEAR ANYTHING AND JUDGED BY THEIR TONES RATHER THAN THEIR WORDS THAT THEY HAD FALLEN OUT + ON MY PRESSING HER HOWEVER SHE REMEMBERED THAT SHE HEARD THE WORD DAVID UTTERED TWICE BY THE LADY + THE POINT IS OF THE UTMOST IMPORTANCE AS GUIDING US TOWARDS THE REASON OF THE SUDDEN QUARREL + THE COLONEL'S NAME YOU REMEMBER WAS JAMES + THERE WAS ONE THING IN THE CASE WHICH HAD MADE THE DEEPEST IMPRESSION BOTH UPON THE SERVANTS AND THE POLICE + THIS WAS THE CONTORTION OF THE COLONEL'S FACE + IT HAD SET ACCORDING TO THEIR ACCOUNT INTO THE MOST DREADFUL EXPRESSION OF FEAR AND HORROR WHICH A HUMAN COUNTENANCE IS CAPABLE OF ASSUMING + MORE THAN ONE PERSON FAINTED AT THE MERE SIGHT OF HIM SO TERRIBLE WAS THE EFFECT + IT WAS QUITE CERTAIN THAT HE HAD FORESEEN HIS FATE AND THAT IT HAD CAUSED HIM THE UTMOST HORROR + THIS OF COURSE FITTED IN WELL ENOUGH WITH THE POLICE THEORY IF THE COLONEL COULD HAVE SEEN HIS WIFE MAKING A MURDEROUS ATTACK UPON HIM + NOR WAS THE FACT OF THE WOUND BEING ON THE BACK OF HIS HEAD A FATAL OBJECTION TO THIS AS HE MIGHT HAVE TURNED TO AVOID THE BLOW + NO INFORMATION COULD BE GOT FROM THE LADY HERSELF WHO WAS TEMPORARILY INSANE FROM AN ACUTE ATTACK OF BRAIN FEVER + FROM THE POLICE I LEARNED THAT MISS MORRISON WHO YOU REMEMBER WENT OUT THAT EVENING WITH MRS. BARCLAY DENIED HAVING ANY KNOWLEDGE OF WHAT IT WAS WHICH HAD CAUSED THE ILL HUMOUR IN WHICH HER COMPANION HAD RETURNED + QUOTE HAVING GATHERED THESE FACTS WATSON I SMOKED SEVERAL PIPES OVER THEM TRYING TO SEPARATE THOSE WHICH WERE CRUCIAL FROM OTHERS WHICH WERE MERELY INCIDENTAL + THERE COULD BE NO QUESTION THAT THE MOST DISTINCTIVE AND SUGGESTIVE POINT IN THE CASE WAS THE SINGULAR DISAPPEARANCE OF THE DOOR KEY + A MOST CAREFUL SEARCH HAD FAILED TO DISCOVER IT IN THE ROOM + THEREFORE IT MUST HAVE BEEN TAKEN FROM IT + BUT NEITHER THE COLONEL NOR THE COLONEL'S WIFE COULD HAVE TAKEN IT + THAT WAS PERFECTLY CLEAR + THEREFORE A THIRD PERSON MUST HAVE ENTERED THE ROOM + AND THAT THIRD PERSON COULD ONLY HAVE COME IN THROUGH THE WINDOW + IT SEEMED TO ME THAT A CAREFUL EXAMINATION OF THE ROOM AND THE LAWN MIGHT POSSIBLY REVEAL SOME TRACES OF THIS MYSTERIOUS INDIVIDUAL + YOU KNOW MY METHODS WATSON + THERE WAS NOT ONE OF THEM WHICH I DID NOT APPLY TO THE INQUIRY + AND IT ENDED BY MY DISCOVERING TRACES BUT VERY DIFFERENT ONES FROM THOSE WHICH I HAD EXPECTED + THERE HAD BEEN A MAN IN THE ROOM AND HE HAD CROSSED THE LAWN COMING FROM THE ROAD + I WAS ABLE TO OBTAIN FIVE VERY CLEAR IMPRESSIONS OF HIS FOOTMARKS ONE IN THE ROADWAY ITSELF AT THE POINT WHERE HE HAD CLIMBED THE LOW WALL TWO ON THE LAWN AND TWO VERY FAINT ONES UPON THE STAINED BOARDS NEAR THE WINDOW WHERE HE HAD ENTERED + HE HAD APPARENTLY RUSHED ACROSS THE LAWN FOR HIS TOE MARKS WERE MUCH DEEPER THAN HIS HEELS + BUT IT WAS NOT THE MAN WHO SURPRISED ME + IT WAS HIS COMPANION + HIS COMPANION + HOLMES PULLED A LARGE SHEET OF TISSUE PAPER OUT OF HIS POCKET AND CAREFULLY UNFOLDED IT UPON HIS KNEE + WHAT DO YOU MAKE OF THAT HE ASKED + THE PAPER WAS COVERED WITH THE TRACINGS OF THE FOOTMARKS OF SOME SMALL ANIMAL + IT HAD FIVE WELL MARKED FOOTPADS AN INDICATION OF LONG NAILS AND THE WHOLE PRINT MIGHT BE NEARLY AS LARGE AS A DESSERT SPOON + IT'S A DOG SAID I + DID YOU EVER HEAR OF A DOG RUNNING UP A CURTAIN + I FOUND DISTINCT TRACES THAT THIS CREATURE HAD DONE SO QUOTE + A MONKEY THEN + BUT IT IS NOT THE PRINT OF A MONKEY + WHAT CAN IT BE THEN + NEITHER DOG NOR CAT NOR MONKEY NOR ANY CREATURE THAT WE ARE FAMILIAR WITH + I HAVE TRIED TO RECONSTRUCT IT FROM THE MEASUREMENTS + HERE ARE FOUR PRINTS WHERE THE BEAST HAS BEEN STANDING MOTIONLESS + YOU SEE THAT IT IS NO LESS THAN FIFTEEN INCHES FROM FORE FOOT TO HIND + ADD TO THAT THE LENGTH OF NECK AND HEAD AND YOU GET A CREATURE NOT MUCH LESS THAN TWO FEET LONG PROBABLY MORE IF THERE IS ANY TAIL + BUT NOW OBSERVE THIS OTHER MEASUREMENT + THE ANIMAL HAS BEEN MOVING AND WE HAVE THE LENGTH OF ITS STRIDE + IN EACH CASE IT IS ONLY ABOUT THREE INCHES + YOU HAVE AN INDICATION YOU SEE OF A LONG BODY WITH VERY SHORT LEGS ATTACHED TO IT + IT HAS NOT BEEN CONSIDERATE ENOUGH TO LEAVE ANY OF ITS HAIR BEHIND IT + BUT ITS GENERAL SHAPE MUST BE WHAT I HAVE INDICATED AND IT CAN RUN UP A CURTAIN AND IT IS CARNIVOROUS + QUOTE HOW DO YOU DEDUCE THAT QUOTE + BECAUSE IT RAN UP THE CURTAIN + A CANARY'S CAGE WAS HANGING IN THE WINDOW AND ITS AIM SEEMS TO HAVE BEEN TO GET AT THE BIRD + THEN WHAT WAS THE BEAST + AH IF I COULD GIVE IT A NAME IT MIGHT GO A LONG WAY TOWARDS SOLVING THE CASE + ON THE WHOLE IT WAS PROBABLY SOME CREATURE OF THE WEASEL AND STOAT TRIBE AND YET IT IS LARGER THAN ANY OF THESE THAT I HAVE SEEN + QUOTE BUT WHAT HAD IT TO DO WITH THE CRIME QUOTE + THAT ALSO IS STILL OBSCURE + BUT WE HAVE LEARNED A GOOD DEAL YOU PERCEIVE + WE KNOW THAT A MAN STOOD IN THE ROAD LOOKING AT THE QUARRCL BETWEEN THE BARCLAYS THE BLINDS WERE UP AND THE ROOM LIGHTED + WE KNOW ALSO THAT HE RAN ACROSS THE LAWN ENTERED THE ROOM ACCOMPANIED BY A STRANGE ANIMAL AND THAT HE EITHER STRUCK THE COLONEL OR AS IS EQUALLY POSSIBLE THAT THE COLONEL FELL DOWN FROM SHEER FRIGHT AT THE SIGHT OF HIM AND CUT HIS HEAD ON THE CORNER OF THE FENDER + FINALLY WE HAVE THE CURIOUS FACT THAT THE INTRUDER CARRIED AWAY THE KEY WITH HIM WHEN HE LEFT + YOUR DISCOVERIES SEEM TO HAVE LEFT THE BUSINESS MORE OBSCURE THAN IT WAS BEFORE SAID I + QUITE SO + THEY UNDOUBTEDLY SHOWED THAT THE AFFAIR WAS MUCH DEEPER THAN WAS AT FIRST CONJECTURED + I THOUGHT THE MATTER OVER AND I CAME TO THE CONCLUSION THAT I MUST APPROACH THE CASE FROM ANOTHER ASPECT + BUT REALLY WATSON I AM KEEPING YOU UP AND I MIGHT JUST AS WELL TELL YOU ALL THIS ON OUR WAY TO ALDERSHOT TO MORROW + QUOTE THANK YOU YOU HAVE GONE RATHER TOO FAR TO STOP QUOTE + IT IS QUITE CERTAIN THAT WHEN MRS. BARCLAY LEFT THE HOUSE AT HALF PAST SEVEN SHE WAS ON GOOD TERMS WITH HER HUSBAND + SHE WAS NEVER AS I THINK I HAVE SAID OSTENTATIOUSLY AFFECTIONATE BUT SHE WAS HEARD BY THE COACHMAN CHATTING WITH THE COLONEL IN A FRIENDLY FASHION + NOW IT WAS EQUALLY CERTAIN THAT IMMEDIATELY ON HER RETURN SHE HAD GONE TO THE ROOM IN WHICH SHE WAS LEAST LIKELY TO SEE HER HUSBAND HAD FLOWN TO TEA AS AN AGITATED WOMAN WILL AND FINALLY ON HIS COMING IN TO HER HAD BROKEN INTO VIOLENT RECRIMINATIONS + THEREFORE SOMETHING HAD OCCURRED BETWEEN SEVEN THIRTY AND NINE O'CLOCK WHICH HAD COMPLETELY ALTERED HER FEELINGS TOWARDS HIM + BUT MISS MORRISON HAD BEEN WITH HER DURING THE WHOLE OF THAT HOUR AND A HALF + IT WAS ABSOLUTELY CERTAIN THEREFORE IN SPITE OF HER DENIAL THAT SHE MUST KNOW SOMETHING OF THE MATTER + MY FIRST CONJECTURE WAS THAT POSSIBLY THERE HAD BEEN SOME PASSAGES BETWEEN THIS YOUNG LADY AND THE OLD SOLDIER WHICH THE FORMER HAD NOW CONFESSED TO THE WIFE + THAT WOULD ACCOUNT FOR THE ANGRY RETURN AND ALSO FOR THE GIRL'S DENIAL THAT ANYTHING HAD OCCURRED + NOR WOULD IT BE ENTIRELY INCOMPATIBLE WITH MOST OF THE WORDS OVERHEARD + BUT THERE WAS THE REFERENCE TO DAVID AND THERC WAS THE KNOWN AFFECTION OF THE COLONEL FOR HIS WIFE TO WEIGH AGAINST IT TO SAY NOTHING OF THE TRAGIC INTRUSION OF THIS OTHER MAN WHICH MIGHT OF COURSE BE ENTIRELY DISCONNECTED WITH WHAT HAD GONE BEFORE + IT WAS NOT EASY TO PICK ONE'S STEPS BUT ON THE WHOLE I WAS INCLINED TO DISMISS THE IDEA THAT THERE HAD BEEN ANYTHING BETWEEN THE COLONEL AND MISS MORRISON BUT MORE THAN EVER CONVINCED THAT THE YOUNG LADY HELD THE CLUE AS TO WHAT IT WAS WHICH HAD TURNED MRS. BARCLAY TO HATRED OF HER HUSBAND + I TOOK THE OBVIOUS COURSE THEREFORE OF CALLING UPON MISS M. OF EXPLAINING TO HER THAT I WAS PERFECTLY CERTAIN THAT SHE HELD THE FACTS IN HER POSSESSION AND OF ASSURING HER THAT HER FRIEND MRS. BARCLAY MIGHT FIND HERSELF IN THE DOCK UPON A CAPITAL CHARGE UNLESS THE MATTER WERE CLEARED UP + MISS MORRISON IS A LITTLE ETHEREAL SLIP OF A GIRL WITH TIMID EYES AND BLOND HAIR BUT I FOUND HER BY NO MEANS WANTING IN SHREWDNESS AND COMMON SENSE + SHE SAT THINKING FOR SOME TIME AFTER I HAD SPOKEN AND THEN TURNING TO ME WITH A BRISK AIR OF RESOLUTION SHE BROKE INTO A REMARKABLE STATEMENT WHICH I WILL CONDENSE FOR YOUR BENEFIT + I PROMISED MY FRIEND THAT I WOULD SAY NOTHING OF THE MATTER AND A PROMISE IS A PROMISE SAID SHE BUT IF I CAN REALLY HELP HER WHEN SO SERIOUS A CHARGE IS LAID AGAINST HER AND WHEN HER OWN MOUTH POOR DARLING IS CLOSED BY ILLNESS THEN I THINK I AM ABSOLVED FROM MY PROMISE + I WILL TELL YOU EXACTLY WHAT HAPPENED UPON MONDAY EVENING + WE WERE RETURNING FROM THE WATT STREET MISSION ABOUT A QUARTER TO NINE O'CLOCK + ON OUR WAY WE HAD TO PASS THROUGH HUDSON STREET WHICH IS A VERY QUIET THOROUGHFARE + THERE IS ONLY ONE LAMP IN IT UPON THE LEFT HAND SIDE AND AS WE APPROACHED THIS LAMP I SAW A MAN COMING TOWARDS US WITH HIS BACK VERY BENT AND SOMETHING LIKE A BOX SLUNG OVER ONE OF HIS SHOULDERS + HE APPEARED TO BE DEFORMED FOR HE CARRIED HIS HEAD LOW AND WALKED WITH HIS KNEES BENT + WE WERE PASSING HIM WHEN HE RAISED HIS FACE TO LOOK AT US IN THE CIRCLE OF LIGHT THROWN BY THE LAMP AND AS HE DID SO HE STOPPED AND SCREAMED OUT IN A DREADFUL VOICE QUOTE MY GOD IT'S NANCY QUOTE + MRS. BARCLAY TURNED AS WHITE AS DEATH AND WOULD HAVE FALLEN DOWN HAD THE DREADFUL LOOKING CREATURE NOT CAUGHT HOLD OF HER + I WAS GOING TO CALL FOR THE POLICE BUT SHE TO MY SURPRISE SPOKE QUITE CIVILLY TO THE FELLOW + I THOUGHT YOU HAD BEEN DEAD THIS THIRTY YEARS HENRY SAID SHE IN A SHAKING VOICE + SO I HAVE SAID HE AND IT WAS AWFUL TO HEAR THE TONES THAT HE SAID IT IN + HE HAD A VERY DARK FEARSOME FACE AND A GLEAM IN HIS EYES THAT COMES BACK TO ME IN MY DREAMS + HIS HAIR AND WHISKERS WERE SHOT WITH GRAY AND HIS FACE WAS ALL CRINKLED AND PUCKERED LIKE A WITHERED APPLE + JUST WALK ON A LITTLE WAY DEAR SAID MRS. BARCLAY I WANT TO HAVE A WORD WITH THIS MAN + THERE IS NOTHING TO BE AFRAID OF + SHE TRIED TO SPEAK BOLDLY BUT SHE WAS STILL DEADLY PALE AND COULD HARDLY GET HER WORDS OUT FOR THE TREMBLING OF HER LIPS + I DID AS SHE ASKED ME AND THEY TALKED TOGETHER FOR A FEW MINUTES + THEN SHE CAME DOWN THE STREET WITH HER EYES BLAZING AND I SAW THE CRIPPLED WRETCH STANDING BY THE LAMP POST AND SHAKING HIS CLENCHED FISTS IN THE AIR AS IF HE WERE MAD WITH RAGE + SHE NEVER SAID A WORD UNTIL WE WERE AT THE DOOR HERE WHEN SHE TOOK ME BY THE HAND AND BEGGED ME TO TELL NO ONE WHAT HAD HAPPENED + QUOTE QUOTE IT'S AN OLD ACQUAINTANCE OF MINE WHO HAS COME DOWN IN THE WORLD QUOTE SAID SHE + WHEN I PROMISED HER I WOULD SAY NOTHING SHE KISSED ME AND I HAVE NEVER SEEN HER SINCE + I HAVE TOLD YOU NOW THE WHOLE TRUTH AND IF I WITHHELD IT FROM THE POLICE IT IS BECAUSE I DID NOT REALIZE THEN THE DANGER IN WHICH MY DEAR FRIEND STOOD + I KNOW THAT IT CAN ONLY BE TO HER ADVANTAGE THAT EVERYTHING SHOULD BE KNOWN + THERE WAS HER STATEMENT WATSON AND TO ME AS YOU CAN IMAGINE IT WAS LIKE A LIGHT ON A DARK NIGHT + EVERYTHING WHICH HAD BEEN DISCONNECTED BEFORE BEGAN AT ONCE TO ASSUME ITS TRUE PLACE AND I HAD A SHADOWY PRESENTIMENT OF THE WHOLE SEQUENCE OF EVENTS + MY NEXT STEP OBVIOUSLY WAS TO FIND THE MAN WHO HAD PRODUCED SUCH A REMARKABLE IMPRESSION UPON MRS. BARCLAY + IF HE WERE STILL IN ALDERSHOT IT SHOULD NOT BE A VERY DIFFICULT MATTER + THERE ARE NOT SUCH A VERY GREAT NUMBER OF CIVILIANS AND A DEFORMED MAN WAS SURE TO HAVE ATTRACTED ATTENTION + I SPENT A DAY IN THE SEARCH AND BY EVENING THIS VERY EVENING WATSON I HAD RUN HIM DOWN + THE MAN'S NAME IS HENRY WOOD AND HE LIVES IN LODGINGS IN THIS SAME STREET IN WHICH THE LADIES MET HIM + HE HAS ONLY BEEN FIVE DAYS IN THE PLACE + IN THE CHARACTER OF A REGISTRATION AGENT I HAD A MOST INTERESTING GOSSIP WITH HIS LANDLADY + THE MAN IS BY TRADE A CONJURER AND PERFORMER GOING ROUND THE CANTEENS AFTER NIGHTFALL AND GIVING A LITTLE ENTERTAINMENT AT EACH + HE CARRIES SOME CREATURE ABOUT WITH HIM IN THAT BOX ABOUT WHICH THE LANDLADY SEEMED TO BE IN CONSIDERABLE TREPIDATION FOR SHE HAD NEVER SEEN AN ANIMAL LIKE IT + HE USES IT IN SOME OF HIS TRICKS ACCORDING TO HER ACCOUNT + SO MUCH THE WOMAN WAS ABLE TO TELL ME AND ALSO THAT IT WAS A WONDER THE MAN LIVED SEEING HOW TWISTED HE WAS AND THAT HE SPOKE IN A STRANGE TONGUE SOMETIMES AND THAT FOR THE LAST TWO NIGHTS SHE HAD HEARD HIM GROANING AND WEEPING IN HIS BEDROOM + HE WAS ALL RIGHT AS FAR AS MONEY WENT BUT IN HIS DEPOSIT HE HAD GIVEN HER WHAT LOOKED LIKE A BAD FLORIN + SHE SHOWED IT TO ME WATSON AND IT WAS AN INDIAN RUPEE + SO NOW MY DEAR FELLOW YOU SEE EXACTLY HOW WE STAND AND WHY IT IS I WANT YOU + IT IS PERFECTLY PLAIN THAT AFTER THE LADIES PARTED FROM THIS MAN HE FOLLOWED THEM AT A DISTANCE THAT HE SAW THE QUARREL BETWEEN HUSBAND AND WIFE THROUGH THE WINDOW THAT HE RUSHED IN AND THAT THE CREATURE WHICH HE CARRIED IN HIS BOX GOT LOOSE + THAT IS ALL VERY CERTAIN + BUT HE IS THE ONLY PERSON IN THIS WORLD WHO CAN TELL US EXACTLY WHAT HAPPENED IN THAT ROOM + AND YOU INTEND TO ASK HIM + MOST CERTAINLY BUT IN THE PRESENCE OF A WITNESS + QUOTE AND I AM THE WITNESS QUOTE + IF YOU WILL BE SO GOOD + IF HE CAN CLEAR THE MATTER UP WELL AND GOOD + IF HE REFUSES WE HAVE NO ALTERNATIVE BUT TO APPLY FOR A WARRANT + BUT HOW DO YOU KNOW HE'LL BE THERE WHEN WE RETURN + YOU MAY BE SURE THAT I TOOK SOME PRECAUTIONS + I HAVE ONE OF MY BAKER STREET BOYS MOUNTING GUARD OVER HIM WHO WOULD STICK TO HIM LIKE A BURR GO WHERE HE MIGHT + WE SHALL FIND HIM IN HUDSON STREET TO MORROW WATSON AND MEANWHILE I SHOULD BE THE CRIMINAL MYSELF IF I KEPT YOU OUT OF BED ANY LONGER + IT WAS MIDDAY WHEN WE FOUND OURSELVES AT THE SCENE OF THE TRAGEDY AND UNDER MY COMPANION'S GUIDANCE WE MADE OUR WAY AT ONCE TO HUDSON STREET + IN SPITE OF HIS CAPACITY FOR CONCEALING HIS EMOTIONS I COULD EASILY SEE THAT HOLMES WAS IN A STATE OF SUPPRESSED EXCITEMENT WHILE I WAS MYSELF TINGLING WITH THAT HALF SPORTING HALF INTELLECTUAL PLEASURE WHICH I INVARIABLY EXPERIENCED WHEN I ASSOCIATED MYSELF WITH HIM IN HIS INVESTIGATIONS + QUOTE THIS IS THE STREET QUOTE SAID HE AS WE TURNED INTO A SHORT THOROUGHFARE LINED WITH PLAIN TWO STORIED BRICK HOUSES + AH HERE IS SIMPSON TO REPORT + HE'S IN ALL RIGHT MR. HOLMES CRIED A SMALL STREET ARAB RUNNING UP TO US + GOOD SIMPSON SAID HOLMES PATTING HIM ON THE HEAD + COME ALONG WATSON + THIS IS THE HOUSE + HE SENT IN HIS CARD WITH A MESSAGE THAT HE HAD COME ON IMPORTANT BUSINESS AND A MOMENT LATER WE WERE FACE TO FACE WITH THE MAN WHOM WE HAD COME TO SEE + IN SPITE OF THE WARM WEATHER HE WAS CROUCHING OVER A FIRE AND THE LITTLE ROOM WAS LIKE AN OVEN + THE MAN SAT ALL TWISTED AND HUDDLED IN HIS CHAIR IN A WAY WHICH GAVE AN INDESCRIBABLE IMPRESSION OF DEFORMITY BUT THE FACE WHICH HE TURNED TOWARDS US THOUGH WORN AND SWARTHY MUST AT SOME TIME HAVE BEEN REMARKABLE FOR ITS BEAUTY + HE LOOKED SUSPICIOUSLY AT US NOW OUT OF YELLOW SHOT BILIOUS EYES AND WITHOUT SPEAKING OR RISING HE WAVED TOWARDS TWO CHAIRS + QUOTE MR. HENRY WOOD LATE OF INDIA I BELIEVE QUOTE SAID HOLMES AFFABLY + I'VE COME OVER THIS LITTLE MATTER OF COLONEL BARCLAY'S DEATH + WHAT SHOULD I KNOW ABOUT THAT + THAT'S WHAT I WANT TO ASCERTAIN + YOU KNOW I SUPPOSE THAT UNLESS THE MATTER IS CLEARED UP MRS. BARCLAY WHO IS AN OLD FRIEND OF YOURS WILL IN ALL PROBABILITY BE TRIED FOR MURDER + THE MAN GAVE A VIOLENT START + I DON'T KNOW WHO YOU ARE HE CRIED NOR HOW YOU COME TO KNOW WHAT YOU DO KNOW BUT WILL YOU SWEAR THAT THIS IS TRUE THAT YOU TELL ME + QUOTE WHY THEY ARE ONLY WAITING FOR HER TO COME TO HER SENSES TO ARREST HER QUOTE + MY GOD + ARE YOU IN THE POLICE YOURSELF + NUMBER + WHAT BUSINESS IS IT OF YOURS THEN + IT'S EVERY MAN'S BUSINESS TO SEE JUSTICE DONE + QUOTE YOU CAN TAKE MY WORD THAT SHE IS INNOCENT QUOTE + THEN YOU ARE GUILTY + NO I AM NOT + WHO KILLED COLONEL JAMES BARCLAY THEN + IT WAS A JUST PROVIDENCE THAT KILLED HIM + BUT MIND YOU THIS THAT IF I HAD KNOCKED HIS BRAINS OUT AS IT WAS IN MY HEART TO DO HE WOULD HAVE HAD NO MORE THAN HIS DUE FROM MY HANDS + IF HIS OWN GUILTY CONSCIENCE HAD NOT STRUCK HIM DOWN IT IS LIKELY ENOUGH THAT I MIGHT HAVE HAD HIS BLOOD UPON MY SOUL + YOU WANT ME TO TELL THE STORY + WELL I DON'T KNOW WHY I SHOULDN'T FOR THERE'S NO CAUSE FOR ME TO BE ASHAMED OF IT + IT WAS IN THIS WAY SIR + YOU SEE ME NOW WITH MY BACK LIKE A CAMEL AND MY RIBS ALL AWRY BUT THERE WAS A TIME WHEN CORPORAL HENRY WOOD WAS THE SMARTEST MAN IN THE ONE HUNDRED AND SEVENTEENTH FOOT + WE WERE IN INDIA THEN IN CANTONMENTS AT A PLACE WE'LL CALL BHURTEE + BARCLAY WHO DIED THE OTHER DAY WAS SERGEANT IN THE SAME COMPANY AS MYSELF AND THE BELLE OF THE REGIMENT AY AND THE FINEST GIRL THAT EVER HAD THE BREATH OF LIFE BETWEEN HER LIPS WAS NANCY DEVOY THE DAUGHTER OF THE COLOURSERGEANT + THERE WERE TWO MEN THAT LOVED HER AND ONE THAT SHE LOVED AND YOU'LL SMILE WHEN YOU LOOK AT THIS POOR THING HUDDLED BEFORE THE FIRE AND HEAR ME SAY THAT IT WAS FOR MY GOOD LOOKS THAT SHE LOVED ME + QUOTE WELL THOUGH I HAD HER HEART HER FATHER WAS SET UPON HER MARRYING BARCLAY + I WAS A HARUM SCARUM RECKLESS LAD AND HE HAD HAD AN EDUCATION AND WAS ALREADY MARKED FOR THE SWORD BELT + BUT THE GIRL HELD TRUE TO ME AND IT SEEMED THAT I WOULD HAVE HAD HER WHEN THE MUTINY BROKE OUT AND ALL HELL WAS LOOSE IN THE COUNTRY + WE WERE SHUT UP IN BHURTEE THE REGIMENT OF US WITH HALF A BATTERY OF ARTILLERY A COMPANY OF SIKHS AND A LOT OF CIVILIANS AND WOMEN FOLK + THERE WERE TEN THOUSAND REBELS ROUND US AND THEY WERE AS KEEN AS A SET OF TERRIERS ROUND A RAT CAGE + ABOUT THE SECOND WEEK OF IT OUR WATER GAVE OUT AND IT WAS A QUESTION WHETHER WE COULD COMMUNICATE WITH GENERAL NEILL'S COLUMN WHICH WAS MOVING UP COUNTRY + IT WAS OUR ONLY CHANCE FOR WE COULD NOT HOPE TO FIGHT OUR WAY OUT WITH ALL THE WOMEN AND CHILDREN SO I VOLUNTEERED TO GO OUT AND TO WARN GENERAL NEILL OF OUR DANGER + MY OFFER WAS ACCEPTED AND I TALKED IT OVER WITH SERGEANT BARCLAY WHO WAS SUPPOSED TO KNOW THE GROUND BETTER THAN ANY OTHER MAN AND WHO DREW UP A ROUTE BY WHICH I MIGHT GET THROUGH THE REBEL LINES + AT TEN O'CLOCK THE SAME NIGHT I STARTED OFF UPON MY JOURNEY + THERE WERE A THOUSAND LIVES TO SAVE BUT IT WAS OF ONLY ONE THAT I WAS THINKING WHEN I DROPPED OVER THE WALL THAT NIGHT + MY WAY RAN DOWN A DRIED UP WATERCOURSE WHICH WE HOPED WOULD SCREEN ME FROM THE ENEMY'S SENTRIES BUT AS I CREPT ROUND THE CORNER OF IT I WALKED RIGHT INTO SIX OF THEM WHO WERE CROUCHING DOWN IN THE DARK WAITING FOR ME + IN AN INSTANT I WAS STUNNED WITH A BLOW AND BOUND HAND AND FOOT + BUT THE REAL BLOW WAS TO MY HEART AND NOT TO MY HEAD FOR AS I CAME TO AND LISTENED TO AS MUCH AS I COULD UNDERSTAND OF THEIR TALK I HEARD ENOUGH TO TELL ME THAT MY COMRADE THE VERY MAN WHO HAD ARRANGED THE WAY I WAS TO TAKE HAD BETRAYED ME BY MEANS OF A NATIVE SERVANT INTO THE HANDS OF THE ENEMY + WELL THERE'S NO NEED FOR ME TO DWELL ON THAT PART OF IT + YOU KNOW NOW WHAT JAMES BARCLAY WAS CAPABLE OF + BHURTEE WAS RELIEVED BY NEILL NEXT DAY BUT THE REBELS TOOK ME AWAY WITH THEM IN THEIR RETREAT AND IT WAS MANY A LONG YEAR BEFORE EVER I SAW A WHITE FACE AGAIN + I WAS TORTURED AND TRIED TO GET AWAY AND WAS CAPTURED AND TORTURED AGAIN + YOU CAN SEE FOR YOURSELVES THE STATE IN WHICH I WAS LEFT + SOME OF THEM THAT FLED INTO NEPAL TOOK ME WITH THEM AND THEN AFTERWARDS I WAS UP PAST DARJEELING + THE HILL FOLK UP THERE MURDERED THE REBELS WHO HAD ME AND I BECAME THEIR SLAVE FOR A TIME UNTIL I ESCAPED BUT INSTEAD OF GOING SOUTH I HAD TO GO NORTH UNTIL I FOUND MYSELF AMONG THE AFGHANS + THERE I WANDERED ABOUT FOR MANY A YEAR AND AT LAST CAME BACK TO THE PUNJAB WHERE I LIVED MOSTLY AMONG THE NATIVES AND PICKED UP A LIVING BY THE CONJURING TRICKS THAT I HAD LEARNED + WHAT USE WAS IT FOR ME A WRETCHED CRIPPLE TO GO BACK TO ENGLAND OR TO MAKE MYSELF KNOWN TO MY OLD COMRADES + EVEN MY WISH FOR REVENGE WOULD NOT MAKE ME DO THAT + I HAD RATHER THAT NANCY AND MY OLD PALS SHOULD THINK OF HARRY WOOD AS HAVING DIED WITH A STRAIGHT BACK THAN SEE HIM LIVING AND CRAWLING WITH A STICK LIKE A CHIMPANZEE + THEY NEVER DOUBTED THAT I WAS DEAD AND I MEANT THAT THEY NEVER SHOULD + I HEARD THAT BARCLAY HAD MARRIED NANCY AND THAT HE WAS RISING RAPIDLY IN THE REGIMENT BUT EVEN THAT DID NOT MAKE ME SPEAK + BUT WHEN ONE GETS OLD ONE HAS A LONGING FOR HOME + FOR YEARS I'VE BEEN DREAMING OF THE BRIGHT GREEN FIELDS AND THE HEDGES OF ENGLAND + AT LAST I DETERMINED TO SEE THEM BEFORE I DIED + I SAVED ENOUGH TO BRING ME ACROSS AND THEN I CAME HERE WHERE THE SOLDIERS ARE FOR I KNOW THEIR WAYS AND HOW TO AMUSE THEM AND SO EARN ENOUGH TO KEEP ME + QUOTE YOUR NARRATIVE IS MOST INTERESTING QUOTE SAID SHERLOCK HOLMES + I HAVE ALREADY HEARD OF YOUR MEETING WITH MRS. BARCLAY AND YOUR MUTUAL RECOGNITION + YOU THEN AS I UNDERSTAND FOLLOWED HER HOME AND SAW THROUGH THE WINDOW AN ALTERCATION BETWEEN HER HUSBAND AND HER IN WHICH SHE DOUBTLESS CAST HIS CONDUCT TO YOU IN HIS TEETH + YOUR OWN FEELINGS OVERCAME YOU AND YOU RAN ACROSS THE LAWN AND BROKE IN UPON THEM + I DID SIR AND AT THE SIGHT OF ME HE LOOKED AS I HAVE NEVER SEEN A MAN LOOK BEFORE AND OVER HE WENT WITH HIS HEAD ON THE FENDER + BUT HE WAS DEAD BEFORE HE FELL + I READ DEATH ON HIS FACE AS PLAIN AS I CAN READ THAT TEXT OVER THE FIRE + THE BARE SIGHT OF ME WAS LIKE A BULLET THROUGH HIS GUILTY HEART + AND THEN + QUOTE THEN NANCY FAINTED AND I CAUGHT UP THE KEY OF THE DOOR FROM HER HAND INTENDING TO UNLOCK IT AND GET HELP + BUT AS I WAS DOING IT IT SEEMED TO ME BETTER TO LEAVE IT ALONE AND GET AWAY FOR THE THING MIGHT LOOK BLACK AGAINST ME AND ANYWAY MY SECRET WOULD BE OUT IF I WERE TAKEN + IN MY HASTE I THRUST THE KEY INTO MY POCKET AND DROPPED MY STICK WHILE I WAS CHASING TEDDY WHO HAD RUN UP THE CURTAIN + WHEN I GOT HIM INTO HIS BOX FROM WHICH HE HAD SLIPPED I WAS OFF AS FAST AS I COULD RUN + WHO'S TEDDY ASKED HOLMES + THE MAN LEANED OVER AND PULLED UP THE FRONT OF A KIND OF HUTCH IN THE CORNER + IN AN INSTANT OUT THERE SLIPPED A BEAUTIFUL REDDISHBROWN CREATURE THIN AND LITHE WITH THE LEGS OF A STOAT A LONG THIN NOSE AND A PAIR OF THE FINEST RED EYES THAT EVER I SAW IN AN ANIMAL'S HEAD + IT'S A MONGOOSE I CRIED + WELL SOME CALL THEM THAT AND SOME CALL THEM ICHNEUMON SAID THE MAN + SNAKE CATCHER IS WHAT I CALL THEM AND TEDDY IS AMAZING QUICK ON COBRAS + I HAVE ONE HERE WITHOUT THE FANGS AND TEDDY CATCHES IT EVERY NIGHT TO PLEASE THE FOLK IN THE CANTEEN + QUOTE ANY OTHER POINT SIR QUOTE + WELL WE MAY HAVE TO APPLY TO YOU AGAIN IF MRS. BARCLAY SHOULD PROVE TO BE IN SERIOUS TROUBLE + IN THAT CASE OF COURSE I'D COME FORWARD + BUT IF NOT THERE IS NO OBJECT IN RAKING UP THIS SCANDAL AGAINST A DEAD MAN FOULLY AS HE HAS ACTED + YOU HAVE AT LEAST THE SATISFACTION OF KNOWING THAT FOR THIRTY YEARS OF HIS LIFE HIS CONSCIENCE BITTERLY REPROACHED HIM FOR HIS WICKED DEED + AH THERE GOES MAJOR MURPHY ON THE OTHER SIDE OF THE STREET + GOOD BYE WOOD + I WANT TO LEARN IF ANYTHING HAS HAPPENED SINCE YESTERDAY + WE WERE IN TIME TO OVERTAKE THE MAJOR BEFORE HE REACHED THE CORNER + AH HOLMES HE SAID I SUPPOSE YOU HAVE HEARD THAT ALL THIS FUSS HAS COME TO NOTHING + QUOTE WHAT THEN QUOTE + THE THREE SLASH FOUR N. Q. U. E. S. T. IS JUST OVER + THE MEDICAL EVIDENCE SHOWED CONCLUSIVELY THAT DEATH WAS DUE TO APOPLEXY + YOU SEE IT WAS QUITE A SIMPLE CASE. AFTER ALL + OH REMARKABLY SUPERFICIAL SAID HOLMES SMILING + COME WATSON I DON'T THINK WE SHALL BE WANTED IN ALDERSHOT ANY MORE + THERE'S ONE THING SAID I AS WE WALKED DOWN TO THE STATION + QUOTE IF THE HUSBAND'S NAME WAS JAMES AND THE OTHER WAS HENRY WHAT WAS THIS TALK ABOUT DAVID QUOTE + THAT ONE WORD MY DEAR WATSON SHOULD HAVE TOLD ME THE WHOLE STORY HAD I BEEN THE IDEAL REASONER WHICH YOU ARE SO FOND OF DEPICTING + IT WAS EVIDENTLY A TERM OF REPROACH + OF REPROACH + YES DAVID STRAYED A LITTLE OCCASIONALLY YOU KNOW AND ON ONE OCCASION IN THE SAME DIRECTION AS SERGEANT JAMES BARCLAY + YOU REMEMBER THE SMALL AFFAIR OF URIAH AND BATHSHEBA + MY BIBLICAL KNOWLEDGE IS A TRIFLE RUSTY I FEAR BUT YOU WILL FIND THE STORY IN THE FIRST OR SECOND OF SAMUEL diff --git a/samples/LMTutorial/train/dancing_men.txt b/samples/LMTutorial/train/dancing_men.txt new file mode 100755 index 0000000..3621fbe --- /dev/null +++ b/samples/LMTutorial/train/dancing_men.txt @@ -0,0 +1,606 @@ + HOLMES HAD BEEN SEATED FOR SOME HOURS IN SILENCE WITH HIS LONG THIN BACK CURVED OVER A CHEMICAL VESSEL IN WHICH HE WAS BREWING A PARTICULARLY MALODOROUS PRODUCT + HIS HEAD WAS SUNK UPON HIS BREAST AND HE LOOKED FROM MY POINT OF VIEW LIKE A STRANGE LANK BIRD WITH DULL GRAY PLUMAGE AND A BLACK TOP KNOT + QUOTE SO WATSON QUOTE SAID HE SUDDENLY QUOTE YOU DO NOT PROPOSE TO INVEST IN SOUTH AFRICAN SECURITIES QUOTE + I GAVE A START OF ASTONISHMENT + ACCUSTOMED AS I WAS TO HOLMES'S CURIOUS FACULTIES THIS SUDDEN INTRUSION INTO MY MOST INTIMATE THOUGHTS WAS UTTERLY INEXPLICABLE + HOW ON EARTH DO YOU KNOW THAT + I ASKED + HE WHEELED ROUND UPON HIS STOOL WITH A STEAMING TEST TUBE IN HIS HAND AND A GLEAM OF AMUSEMENT IN HIS DEEP SET EYES + NOW WATSON CONFESS YOURSELF UTTERLY TAKEN ABACK SAID HE + I AM + I OUGHT TO MAKE YOU SIGN A PAPER TO THAT EFFECT + WHY + QUOTE BECAUSE IN FIVE MINUTES YOU WILL SAY THAT IT IS ALL SO ABSURDLY SIMPLE QUOTE + I AM SURE THAT I SHALL SAY NOTHING OF THE KIND + YOU SEE MY DEAR WATSON HE PROPPED HIS TEST TUBE IN THE RACK AND BEGAN TO LECTURE WITH THE AIR OF A PROFESSOR ADDRESSING HIS CLASS IT IS NOT REALLY DIFFICULT TO CONSTRUCT A SERIES OF INFERENCES EACH DEPENDENT UPON ITS PREDECESSOR AND EACH SIMPLE IN ITSELF + IF AFTER DOING SO ONE SIMPLY KNOCKS OUT ALL THE CENTRAL INFERENCES AND PRESENTS ONE'S AUDIENCE WITH THE STARTING POINT AND THE CONCLUSION ONE MAY PRODUCE A STARTLING THOUGH POSSIBLY A MERETRICIOUS EFFECT + NOW IT WAS NOT REALLY DIFFICULT BY AN INSPECTION OF THE GROOVE BETWEEN YOUR LEFT FOREFINGER AND THUMB TO FEEL SURE THAT YOU DID NOT PROPOSE TO INVEST YOUR SMALL CAPITAL IN THE GOLD FIELDS + I SEE NO CONNECTION + VERY LIKELY NOT BUT I CAN QUICKLY SHOW YOU A CLOSE CONNECTION + HERE ARE THE MISSING LINKS OF THE VERY SIMPLE CHAIN ONE + YOU HAD CHALK BETWEEN YOUR LEFT FINGER AND THUMB WHEN YOU RETURNED FROM THE CLUB LAST NIGHT TWO + YOU PUT CHALK THERE WHEN YOU PLAY BILLIARDS TO STEADY THE CUE. THREE + YOU NEVER PLAY BILLIARDS EXCEPT WITH THURSTON FOUR + YOU TOLD ME FOUR WEEKS AGO THAT THURSTON HAD AN OPTION ON SOME SOUTH AFRICAN PROPERTY WHICH WOULD EXPIRE IN A MONTH AND WHICH HE DESIRED YOU TO SHARE WITH HIM. FIVE + YOUR CHECK BOOK IS LOCKED IN MY DRAWER AND YOU HAVE NOT ASKED FOR THE KEY. SIX + YOU DO NOT PROPOSE TO INVEST YOUR MONEY IN THIS MANNER QUOTE + HOW ABSURDLY SIMPLE + I CRIED + QUITE SO SAID HE A LITTLE NETTLED + EVERY PROBLEM BECOMES VERY CHILDISH WHEN ONCE IT IS EXPLAINED TO YOU + HERE IS AN UNEXPLAINED ONE + SEE WHAT YOU CAN MAKE OF THAT FRIEND WATSON + HE TOSSED A SHEET OF PAPER UPON THE TABLE AND TURNED ONCE MORE TO HIS CHEMICAL ANALYSIS + I LOOKED WITH AMAZEMENT AT THE ABSURD HIEROGLYPHICS UPON THE PAPER + WHY HOLMES IT IS A CHILD'S DRAWING I CRIED + QUOTE OH THAT'S YOUR IDEA QUOTE + WHAT ELSE SHOULD IT BE + THAT IS WHAT MR. HILTON CUBITT OF RIDING THORPE MANOR NORFOLK IS VERY ANXIOUS TO KNOW + THIS LITTLE CONUNDRUM CAME BY THE FIRST POST AND HE WAS TO FOLLOW BY THE NEXT TRAIN + THERE'S A RING AT THE BELL WATSON + I SHOULD NOT BE VERY MUCH SURPRISED IF THIS WERE HE + A HEAVY STEP WAS HEARD UPON THE STAIRS AND AN INSTANT LATER THERE ENTERED A TALL RUDDY CLEAN SHAVEN GENTLEMAN WHOSE CLEAR EYES AND FLORID CHEEKS TOLD OF A LIFE LED FAR FROM THE FOGS OF BAKER STREET + HE SEEMED TO BRING A WHIFF OF HIS STRONG FRESH BRACING EAST COAST AIR WITH HIM AS HE ENTERED + HAVING SHAKEN HANDS WITH EACH OF US HE WAS ABOUT TO SIT DOWN WHEN HIS EYE RESTED UPON THE PAPER WITH THE CURIOUS MARKINGS WHICH I HAD JUST EXAMINED AND LEFT UPON THE TABLE + WELL MR. HOLMES WHAT DO YOU MAKE OF THESE HE CRIED + THEY TOLD ME THAT YOU WERE FOND OF QUEER MYSTERIES AND I DON'T THINK YOU CAN FIND A QUEERER ONE THAN THAT + I SENT THE PAPER ON AHEAD SO THAT YOU MIGHT HAVE TIME TO STUDY IT BEFORE I CAME QUOTE + IT IS CERTAINLY RATHER A CURIOUS PRODUCTION SAID HOLMES + AT FIRST SIGHT IT WOULD APPEAR TO BE SOME CHILDISH PRANK + IT CONSISTS OF A NUMBER OF ABSURD LITTLE FIGURES DANCING ACROSS THE PAPER UPON WHICH THEY ARE DRAWN + WHY SHOULD YOU ATTRIBUTE ANY IMPORTANCE TO SO GROTESQUE AN OBJECT + I NEVER SHOULD MR. HOLMES + BUT MY WIFE DOES + IT IS FRIGHTENING HER TO DEATH + SHE SAYS NOTHING BUT I CAN SEE TERROR IN HER EYES + THAT'S WHY I WANT TO SIFT THE MATTER TO THE BOTTOM + HOLMES HELD UP THE PAPER SO THAT THE SUNLIGHT SHONE FULL UPON IT + IT WAS A PAGE TORN FROM A NOTEBOOK + THE MARKINGS WERE DONE IN PENCIL AND RAN IN THIS WAY + HOLMES EXAMINED IT FOR SOME TIME AND THEN FOLDING IT CAREFULLY UP HE PLACED IT IN HIS POCKETBOOK + QUOTE THIS PROMISES TO BE A MOST INTERESTING AND UNUSUAL CASE QUOTE SAID HE + YOU GAVE ME A FEW PARTICULARS IN YOUR LETTER MR. HILTON CUBITT BUT I SHOULD BE VERY MUCH OBLIGED IF YOU WOULD KINDLY GO OVER IT ALL AGAIN FOR THE BENEFIT OF MY FRIEND DOCTOR WATSON + I'M NOT MUCH OF A STORY TELLER SAID OUR VISITOR NERVOUSLY CLASPING AND UNCLASPING HIS GREAT STRONG HANDS + YOU'LL JUST ASK ME ANYTHING THAT I DON'T MAKE CLEAR + I'LL BEGIN AT THE TIME OF MY MARRIAGE LAST YEAR BUT I WANT TO SAY FIRST OF ALL THAT THOUGH I'M NOT A RICH MAN MY PEOPLE HAVE BEEN AT RIDING THORPE FOR A MATTER OF FIVE CENTURIES AND THERE IS NO BETTER KNOWN FAMILY IN THE COUNTY OF NORFOLK + LAST YEAR I CAME UP TO LONDON FOR THE JUBILEE AND I STOPPED AT A BOARDINGHOUSE IN RUSSELL SQUARE BECAUSE PARKER THE VICAR OF OUR PARISH WAS STAYING IN IT + THERE WAS AN AMERICAN YOUNG LADY THERE PATRICK WAS THE NAME ELSIE PATRICK + IN SOME WAY WE BECAME FRIENDS UNTIL BEFORE MY MONTH WAS UP I WAS AS MUCH IN LOVE AS MAN COULD BE + WE WERE QUIETLY MARRIED AT A REGISTRY OFFICE AND WE RETURNED TO NORFOLK A WEDDED COUPLE + YOU'LL THINK IT VERY MAD MR. HOLMES THAT A MAN OF A GOOD OLD FAMILY SHOULD MARRY A WIFE IN THIS FASHION KNOWING NOTHING OF HER PAST OR OF HER PEOPLE BUT IF YOU SAW HER AND KNEW HER IT WOULD HELP YOU TO UNDERSTAND + SHE WAS VERY STRAIGHT ABOUT IT WAS ELSIE + I CAN'T SAY THAT SHE DID NOT GIVE ME EVERY CHANCE OF GETTING OUT OF IT IF I WISHED TO DO SO. L. HAVE HAD SOME VERY DISAGREEABLE ASSOCIATIONS IN MY LIFE SAID SHE I WISH TO FORGET ALL ABOUT THEM + I WOULD RATHER NEVER ALLUDE TO THE PAST FOR IT IS VERY PAINFUL TO ME + IF YOU TAKE ME HILTON YOU WILL TAKE A WOMAN WHO HAS NOTHING THAT SHE NEED BE PERSONALLY ASHAMED OF BUT YOU WILL HAVE TO BE CONTENT WITH MY WORD FOR IT AND TO ALLOW ME TO BE SILENT AS TO ALL THAT PASSED UP TO THE TIME WHEN I BECAME YOURS + IF THESE CONDITIONS ARE TOO HARD THEN GO BACK TO NORFOLK AND LEAVE ME TO THE LONELY LIFE IN WHICH YOU FOUND ME + IT WAS ONLY THE DAY BEFORE OUR WEDDING THAT SHE SAID THOSE VERY WORDS TO ME + I TOLD HER THAT I WAS CONTENT TO TAKE HER ON HER OWN TERMS AND I HAVE BEEN AS GOOD AS MY WORD + WELL WE HAVE BEEN MARRIED NOW FOR A YEAR AND VERY HAPPY WE HAVE BEEN + BUT ABOUT A MONTH AGO AT THE END OF JUNE I SAW FOR THE FIRST TIME SIGNS OF TROUBLE + ONE DAY MY WIFE RECEIVED A LETTER FROM AMERICA + I SAW THE AMERICAN STAMP + SHE TURNED DEADLY WHITE READ THE LETTER AND THREW IT INTO THE FIRE + SHE MADE NO ALLUSION TO IT AFTERWARDS AND I MADE NONE FOR A PROMISE IS A PROMISE BUT SHE HAS NEVER KNOWN AN EASY HOUR FROM THAT MOMENT + THERE IS ALWAYS A LOOK OF FEAR UPON HER FACE A LOOK AS IF SHE WERE WAITING AND EXPECTING + SHE WOULD DO BETTER TO TRUST ME + SHE WOULD FIND THAT I WAS HER BEST FRIEND + BUT UNTIL SHE SPEAKS I CAN SAY NOTHING + MIND YOU SHE IS A TRUTHFUL WOMAN MR. HOLMES AND WHATEVER TROUBLE THERE MAY HAVE BEEN IN HER PAST LIFE IT HAS BEEN NO FAULT OF HERS + I AM ONLY A SIMPLE NORFOLK SQUIRE BUT THERE IS NOT A MAN IN ENGLAND WHO RANKS HIS FAMILY HONOUR MORE HIGHLY THAN I DO + SHE KNOWS IT WELL AND SHE KNEW IT WELL BEFORE SHE MARRIED ME + SHE WOULD NEVER BRING ANY STAIN UPON IT OF THAT I AM SURE + QUOTE WELL NOW I COME TO THE QUEER PART OF MY STORY + ABOUT A WEEK AGO IT WAS THE TUESDAY OF LAST WEEK I FOUND ON ONE OF THE WINDOW SILLS A NUMBER OF ABSURD LITTLE DANCING FIGURES LIKE THESE UPON THE PAPER + THEY WERE SCRAWLED WITH CHALK + I THOUGHT THAT IT WAS THE STABLE BOY WHO HAD DRAWN THEM BUT THE LAD SWORE HE KNEW NOTHING ABOUT IT + ANYHOW THEY HAD COME THERE DURING THE NIGHT + I HAD THEM WASHED OUT AND I ONLY MENTIONED THE MATTER TO MY WIFE AFTERWARDS + TO MY SURPRISE SHE TOOK IT VERY SERIOUSLY AND BEGGED ME IF ANY MORE CAME TO LET HER SEE THEM + NONE DID COME FOR A WEEK AND THEN YESTERDAY MORNING I FOUND THIS PAPER IYING ON THE SUNDIAL IN THE GARDEN + I SHOWED IT TO ELSIE AND DOWN SHE DROPPED IN A DEAD FAINT + SINCE THEN SHE HAS LOOKED LIKE A WOMAN IN A DREAM HALF DAZED AND WITH TERROR ALWAYS LURKING IN HER EYES + IT WAS THEN THAT I WROTE AND SENT THE PAPER TO YOU MR. HOLMES + IT WAS NOT A THING THAT I COULD TAKE TO THE POLICE FOR THEY WOULD HAVE LAUGHED AT ME BUT YOU WILL TELL ME WHAT TO DO + I AM NOT A RICH MAN BUT IF THERE IS ANY DANGER THREATENING MY LITTLE WOMAN I WOULD SPEND MY LAST COPPER TO SHIELD HER + HE WAS A FINE CREATURE THIS MAN OF THE OLD ENGLISH SOIL SIMPLE STRAIGHT AND GENTLE WITH HIS GREAT EARNEST BLUE EYES AND BROAD COMELY FACE + HIS LOVE FOR HIS WIFE AND HIS TRUST IN HER SHONE IN HIS FEATURES + HOLMES HAD LISTENED TO HIS STORY WITH THE UTMOST ATTENTION AND NOW HE SAT FOR SOME TIME IN SILENT THOUGHT + DON'T YOU THINK MR. CUBITT SAID HE AT LAST THAT YOUR BEST PLAN WOULD BE TO MAKE A DIRECT APPEAL TO YOUR WIFE AND TO ASK HER TO SHARE HER SECRET WITH YOU + HILTON CUBITT SHOOK HIS MASSIVE HEAD + A PROMISE IS A PROMISE MR. HOLMES + IF ELSIE WISHED TO TELL ME SHE WOULD + IF NOT IT IS NOT FOR ME TO FORCE HER CONFIDENCE + BUT I AM JUSTIFIED IN TAKING MY OWN LINE AND I WILL + THEN I WILL HELP YOU WITH ALL MY HEART + IN THE FIRST PLACE HAVE YOU HEARD OF ANY STRANGERS BEING SEEN IN YOUR NEIGHBOURHOOD QUOTE + NUMBER + I PRESUME THAT IT IS A VERY QUIET PLACE + ANY FRESH FACE WOULD CAUSE COMMENT + IN THE IMMEDIATE NEIGHBOURHOOD YES + BUT WE HAVE SEVERAL SMALL WATERING PLACES NOT VERY FAR AWAY + AND THE FARMERS TAKE IN LODGERS + QUOTE THESE HIEROGLYPHICS HAVE EVIDENTLY A MEANING + IF IT IS A PURELY ARBITRARY ONE IT MAY BE IMPOSSIBLE FOR US TO SOLVE IT + IF ON THE OTHER HAND IT IS SYSTEMATIC I HAVE NO DOUBT THAT WE SHALL GET TO THE BOTTOM OF IT + BUT THIS PARTICULAR SAMPLE IS SO SHORT THAT I CAN DO NOTHING AND THE FACTS WHICH YOU HAVE BROUGHT ME ARE SO INDEFINITE THAT WE HAVE NO BASIS FOR AN INVESTIGATION + I WOULD SUGGEST THAT YOU RETURN TO NORFOLK THAT YOU KEEP A KEEN LOOKOUT AND THAT YOU TAKE AN EXACT COPY OF ANY FRESH DANCING MEN WHICH MAY APPEAR + IT IS A THOUSAND PITIES THAT WE HAVE NOT A REPRODUCTION OF THOSE WHICH WERE DONE IN CHALK UPON THE WINDOW SILL + MAKE A DISCREET INQUIRY ALSO AS TO ANY STRANGERS IN THE NEIGHBOURHOOD + WHEN YOU HAVE COLLECTED SOME FRESH EVIDENCE COME TO ME AGAIN + THAT IS THE BEST ADVICE WHICH I CAN GIVE YOU MR. HILTON CUBITT + IF THERE ARE ANY PRESSING FRESH DEVELOPMENTS I SHALL BE ALWAYS READY TO RUN DOWN AND SEE YOU IN YOUR NORFOLK HOME + THE INTERVIEW LEFT SHERLOCK HOLMES VERY THOUGHTFUL AND SEVERAL TIMES IN THE NEXT FEW DAYS I SAW HIM TAKE HIS SLIP OF PAPER FROM HIS NOTEBOOK AND LOOK LONG AND EARNESTLY AT THE CURIOUS FIGURES INSCRIBED UPON IT + HE MADE NO ALLUSION TO THE AFFAIR HOWEVER UNTIL ONE AFTERNOON A FORTNIGHT OR SO LATER + I WAS GOING OUT WHEN HE CALLED ME BACK + YOU HAD BETTER STAY HERE WATSON + WHY + BECAUSE I HAD A WIRE FROM HILTON CUBITT THIS MORNING + YOU REMEMBER HILTON CUBITT OF THE DANCING MEN + HE WAS TO REACH LIVERPOOL STREET AT ONE TWENTY + HE MAY BE HERE AT ANY MOMENT + I GATHER FROM HIS WIRE THAT THERE HAVE BEEN SOME NEW INCIDENTS OF IMPORTANCE + WE HAD NOT LONG TO WAIT FOR OUR NORFOLK SQUIRE CAME STRAIGHT FROM THE STATION AS FAST AS A HANSOM COULD BRING HIM + HE WAS LOOKING WORRIED AND DEPRESSED WITH TIRED EYES AND A LINED FOREHEAD + QUOTE IT'S GETTING ON MY NERVES THIS BUSINESS MR. HOLMES QUOTE SAID HE AS HE SANK LIKE A WEARIED MAN INTO AN ARMCHAIR + IT'S BAD ENOUGH TO FEEL THAT YOU ARE SURROUNDED BY UNSEEN UNKNOWN FOLK WHO HAVE SOME KIND OF DESIGN UPON YOU BUT WHEN IN ADDITION TO THAT YOU KNOW THAT IT IS JUST KILLING YOUR WIFE BY INCHES THEN IT BECOMES AS MUCH AS FLESH AND BLOOD CAN ENDURE + SHE'S WEARING AWAY UNDER IT JUST WEARING AWAY BEFORE MY EYES + HAS SHE SAID ANYTHING YET + NO MR. HOLMES SHE HAS NOT + AND YET THERE HAVE BEEN TIMES WHEN THE POOR GIRL HAS WANTED TO SPEAK AND YET COULD NOT QUITE BRING HERSELF TO TAKE THE PLUNGE + I HAVE TRIED TO HELP HER BUT I DARESAY I DID IT CLUMSILY AND SCARED HER FROM IT + SHE HAS SPOKEN ABOUT MY OLD FAMILY AND OUR REPUTATION IN THE COUNTY AND OUR PRIDE IN OUR UNSULLIED HONOUR AND I ALWAYS FELT IT WAS LEADING TO THE POINT BUT SOMEHOW IT TURNED OFF BEFORE WE GOT THERE + QUOTE BUT YOU HAVE FOUND OUT SOMETHING FOR YOURSELF QUOTE + A GOOD DEAL MR. HOLMES + I HAVE SEVERAL FRESH DANCING MEN PICTURES FOR YOU TO EXAMINE AND WHAT IS MORE IMPORTANT I HAVE SEEN THE FELLOW + WHAT THE MAN WHO DRAWS THEM + YES I SAW HIM AT HIS WORK + BUT I WILL TELL YOU EVERYTHING IN ORDER + WHEN I GOT BACK AFTER MY VISIT TO YOU THE VERY FIRST THING I SAW NEXT MORNING WAS A FRESH CROP OF DANCING MEN + THEY HAD BEEN DRAWN IN CHALK UPON THE BLACK WOODEN DOOR OF THE TOOLHOUSE WHICH STANDS BESIDE THE LAWN IN FULL VIEW OF THE FRONT WINDOWS + I TOOK AN EXACT COPY AND HERE IT IS + HE UNFOLDED A PAPER AND LAID IT UPON THE TABLE + HERE IS A COPY OF THE HIEROGLYPHICS + QUOTE EXCELLENT QUOTE SAID HOLMES + EXCELLENT + PRAY CONTINUE + WHEN I HAD TAKEN THE COPY I RUBBED OUT THE MARKS BUT TWO MORNINGS LATER A FRESH INSCRIPTION HAD APPEARED + I HAVE A COPY OF IT HERE + HOLMES RUBBED HIS HANDS AND CHUCKLED WITH DELIGHT + OUR MATERIAL IS RAPIDLY ACCUMULATING SAID HE + QUOTE THREE DAYS LATER A MESSAGE WAS LEFT SCRAWLED UPON PAPER AND PLACED UNDER A PEBBLE UPON THE SUNDIAL + HERE IT IS + THE CHARACTERS ARE AS YOU SEE EXACTLY THE SAME AS THE LAST ONE + AFTER THAT I DETERMINED TO LIE IN WAIT SO I GOT OUT MY REVOLVER AND I SAT UP IN MY STUDY WHICH OVERLOOKS THE LAWN AND GARDEN + ABOUT TWO IN THE MORNING I WAS SEATED BY THE WINDOW ALL BEING DARK SAVE FOR THE MOONLIGHT OUTSIDE WHEN I HEARD STEPS BEHIND ME AND THERE WAS MY WIFE IN HER DRESSING GOWN + SHE IMPLORED ME TO COME TO BED + I TOLD HER FRANKLY THAT I WISHED TO SEE WHO IT WAS WHO PLAYED SUCH ABSURD TRICKS UPON US + SHE ANSWERED THAT IT WAS SOME SENSELESS PRACTICAL JOKE AND THAT I SHOULD NOT TAKE ANY NOTICE OF IT + IF IT REALLY ANNOYS YOU HILTON WE MIGHT GO AND TRAVEL YOU AND I AND SO AVOID THIS NUISANCE + WHAT BE DRIVEN OUT OF OUR OWN HOUSE BY A PRACTICAL JOKER SAID I. WHY WE SHOULD HAVE THE WHOLE COUNTY LAUGHING AT US + WELL COME TO BED. SAID SHE AND WE CAN DISCUSS IT IN THE MORNING + SUDDENLY AS SHE SPOKE I SAW HER WHITE FACE GROW WHITER YET IN THE MOONLIGHT AND HER HAND TIGHTENED UPON MY SHOULDER + SOMETHING WAS MOVING IN THE SHADOW OF THE TOOL HOUSE + I SAW A DARK CREEPING FIGURE WHICH CRAWLED ROUND THE CORNER AND SQUATTED IN FRONT OF THE DOOR + SEIZING MY PISTOL I WAS RUSHING OUT WHEN MY WIFE THREW HER ARMS ROUND ME AND HELD ME WITH CONVULSIVE STRENGTH + I TRIED TO THROW HER OFF BUT SHE CLUNG TO ME MOST DESPERATELY + AT LAST I GOT CLEAR BUT BY THE TIME I HAD OPENED THE DOOR AND REACHED THE HOUSE THE CREATURE WAS GONE + HE HAD LEFT A TRACE OF HIS PRESENCE HOWEVER FOR THERE ON THE DOOR WAS THE VERY SAME ARRANGEMENT OF DANCING MEN WHICH HAD ALREADY TWICE APPEARED AND WHICH I HAVE COPIED ON THAT PAPER + THERE WAS NO OTHER SIGN OF THE FELLOW ANYWHERE THOUGH I RAN ALL OVER THE GROUNDS + AND YET THE AMAZING THING IS THAT HE MUST HAVE BEEN THERE ALL THE TIME FOR WHEN I EXAMINED THE DOOR AGAIN IN THE MORNING HE HAD SCRAWLED SOME MORE OF HIS PICTURES UNDER THE LINE WHICH I HAD ALREADY SEEN + QUOTE HAVE YOU THAT FRESH DRAWING QUOTE + YES IT IS VERY SHORT BUT I MADE A COPY OF IT AND HERE IT IS + AGAIN HE PRODUCED A PAPER + THE NEW DANCE WAS IN THIS FORM + TELL ME SAID HOLMES AND I COULD SEE BY HIS EYES THAT HE WAS MUCH EXCITED WAS THIS A MERE ADDITION TO THE FIRST OR DID IT APPEAR TO BE ENTIRELY SEPARATE + IT WAS ON A DIFFERENT PANEL OF THE DOOR + EXCELLENT + THIS IS FAR THE MOST IMPORTANT OF ALL FOR OUR PURPOSE + IT FILLS ME WITH HOPES + NOW MR. HILTON CUBITT PLEASE CONTINUE YOUR MOST INTERESTING STATEMENT + QUOTE I HAVE NOTHING MORE TO SAY MR. HOLMES EXCEPT THAT I WAS ANGRY WITH MY WIFE THAT NIGHT FOR HAVING HELD ME BACK WHEN I MIGHT HAVE CAUGHT THE SKULKING RASCAL + SHE SAID THAT SHE FEARED THAT I MIGHT COME TO HARM + FOR AN INSTANT IT HAD CROSSED MY MIND THAT PERHAPS WHAT SHE REALLY FEARED WAS THAT HE MIGHT COME TO HARM FOR I COULD NOT DOUBT THAT SHE KNEW WHO THIS MAN WAS AND WHAT HE MEANT BY THESE STRANGE SIGNALS + BUT THERE IS A TONE IN MY WIFE'S VOICE MR. HOLMES AND A LOOK IN HER EYES WHICH FORBID DOUBT AND I AM SURE THAT IT WAS INDEED MY OWN SAFETY THAT WAS IN HER MIND + THERE'S THE WHOLE CASE AND NOW I WANT YOUR ADVICE AS TO WHAT I OUGHT TO DO + MY OWN INCLINATION IS TO PUT HALF A DOZEN OF MY FARM LADS IN THE SHRUBBERY AND WHEN THIS FELLOW COMES AGAIN TO GIVE HIM SUCH A HIDING THAT HE WILL LEAVE US IN PEACE FOR THE FUTURE + I FEAR IT IS TOO DEEP A CASE FOR SUCH SIMPLE REMEDIES SAID HOLMES + HOW LONG CAN YOU STAY IN LONDON + I MUST GO BACK TODAY + I WOULD NOT LEAVE MY WIFE ALONE ALL NIGHT FOR ANYTHING + SHE IS VERY NERVOUS AND BEGGED ME TO COME BACK + QUOTE I DARESAY YOU ARE RIGHT + BUT IF YOU COULD HAVE STOPPED + I MIGHT POSSIBLY HAVE BEEN ABLE TO RETURN WITH YOU IN A DAY OR TWO + MEANWHILE YOU WILL LEAVE ME THESE PAPERS AND I THINK THAT IT IS VERY LIKELY THAT I SHALL BE ABLE TO PAY YOU A VISIT SHORTLY AND TO THROW SOME LIGHT UPON YOUR CASE + SHERLOCK HOLMES PRESERVED HIS CALM PROFESSIONAL MANNER UNTIL OUR VISITOR HAD LEFT US ALTHOUGH IT WAS EASY FOR ME WHO KNEW HIM SO WELL TO SEE THAT HE WAS PROFOUNDLY EXCITED + THE MOMENT THAT HILTON CUBITT'S BROAD BACK HAD DISAPPEARED THROUGH THE DOOR MY COMRADE RUSHED TO THE TABLE LAID OUT ALL THE SLIPS OF PAPER CONTAINING DANCING MEN IN FRONT OF HIM AND THREW HIMSELF INTO AN INTRICATE AND ELABORATE CALCULATION + FOR TWO HOURS I WATCHED HIM AS HE COVERED SHEET AFTER SHEET OF PAPER WITH FIGURES AND LETTERS SO COMPLETELY ABSORBED IN HIS TASK THAT HE HAD EVIDENTLY FORGOTTEN MY PRESENCE + SOMETIMES HE WAS MAKING PROGRESS AND WHISTLED AND SANG AT HIS WORK SOMETIMES HE WAS PUZZLED AND WOULD SIT FOR LONG SPELLS WITH A FURROWED BROW AND A VACANT EYE + FINALLY HE SPRANG FROM HIS CHAIR WITH A CRY OF SATISFACTION AND WALKED UP AND DOWN THE ROOM RUBBING HIS HANDS TOGETHER + THEN HE WROTE A LONG TELEGRAM UPON A CABLE FORM + IF MY ANSWER TO THIS IS AS I HOPE YOU WILL HAVE A VERY PRETTY CASE TO ADD TO YOUR COLLECTION WATSON SAID HE + I EXPECT THAT WE SHALL BE ABLE TO GO DOWN TO NORFOLK TOMORROW AND TO TAKE OUR FRIEND SOME VERY DEFINITE NEWS AS TO THE SECRET OF HIS ANNOYANCE + I CONFESS THAT I WAS FILLED WITH CURIOSITY BUT I WAS AWARE THAT HOLMES LIKED TO MAKE HIS DISCLOSURES AT HIS OWN TIME AND IN HIS OWN WAY SO I WAITED UNTIL IT SHOULD SUIT HIM TO TAKE ME INTO HIS CONFIDENCE + BUT THERE WAS A DELAY IN THAT ANSWERING TELEGRAM AND TWO DAYS OF IMPATIENCE FOLLOWED DURING WHICH HOLMES PRICKED UP HIS EARS AT EVERY RING OF THE BELL + ON THE EVENING OF THE SECOND THERE CAME A LETTER FROM HILTON CUBITT + ALL WAS QUIET WITH HIM SAVE THAT A LONG INSCRIPTION HAD APPEARED THAT MORNING UPON THE PEDESTAL OF THE SUNDIAL + HE INCLOSED A COPY OF IT WHICH IS HERE REPRODUCED + HOLMES BENT OVER THIS GROTESQUE FRIEZE FOR SOME MINUTES AND THEN SUDDENLY SPRANG TO HIS FEET WITH AN EXCLAMATION OF SURPRISE AND DISMAY + HIS FACE WAS HAGGARD WITH ANXIETY + WE HAVE LET THIS AFFAIR GO FAR ENOUGH SAID HE + IS THERE A TRAIN TO NORTH WALSHAM TO NIGHT + I TURNED UP THE TIME TABLE + THE LAST HAD JUST GONE + QUOTE THEN WE SHALL BREAKFAST EARLY AND TAKE THE VERY FIRST IN THE MORNING QUOTE SAID HOLMES + OUR PRESENCE IS MOST URGENTLY NEEDED + AH HERE IS OUR EXPECTED CABLEGRAM + ONE MOMENT MRS. HUDSON THERE MAY BE AN ANSWER + NO THAT IS QUITE AS I EXPECTED + THIS MESSAGE MAKES IT EVEN MORE ESSENTIAL THAT WE SHOULD NOT LOSE AN HOUR IN LETTING HILTON CUBITT KNOW HOW MATTERS STAND FOR IT IS A SINGULAR AND A DANGEROUS WEB IN WHICH OUR SIMPLE NORFOLK SQUIRE IS ENTANGLED + SO INDEED IT PROVED AND AS I COME TO THE DARK CONCLUSION OF A STORY WHICH HAD SEEMED TO ME TO BE ONLY CHILDISH AND BIZARRE I EXPERIENCE ONCE AGAIN THE DISMAY AND HORROR WITH WHICH I WAS FILLED + WOULD THAT I HAD SOME BRIGHTER ENDING TO COMMUNICATE TO MY READERS BUT THESE ARE THE CHRONICLES OF FACT AND I MUST FOLLOW TO THEIR DARK CRISIS THE STRANGE CHAIN OF EVENTS WHICH FOR SOME DAYS MADE RIDING THORPE MANOR A HOUSEHOLD WORD THROUGH THE LENGTH AND BREADTH OF ENGLAND + WE HAD HARDLY ALIGHTED AT NORTH WALSHAM AND MENTIONED THE NAME OF OUR DESTINATION WHEN THE STATIONMASTER HURRIED TOWARDS US + I SUPPOSE THAT YOU ARE THE DETECTIVES FROM LONDON SAID HE + A LOOK OF ANNOYANCE PASSED OVER HOLMES'S FACE + WHAT MAKES YOU THINK SUCH A THING + BECAUSE INSPECTOR MARTIN FROM NORWICH HAS JUST PASSED THROUGH + BUT MAYBE YOU ARE THE SURGEONS + SHE'S NOT DEAD OR WASN'T BY LAST ACCOUNTS + YOU MAY BE IN TIME TO SAVE HER YET THOUGH IT BE FOR THE GALLOWS QUOTE + HOLMES'S BROW WAS DARK WITH ANXIETY + WE ARE GOING TO RIDING THORPE MANOR SAID HE BUT WE HAVE HEARD NOTHING OF WHAT HAS PASSED THERE + IT'S A TERRIBLE BUSINESS SAID THE STATIONMASTER + THEY ARE SHOT BOTH MR. HILTON CUBITT AND HIS WIFE + SHE SHOT HIM AND THEN HERSELF SO THE SERVANTS SAY + HE'S DEAD AND HER LIFE IS DESPAIRED OF + DEAR DEAR ONE OF THE OLDEST FAMILIES IN THE COUNTY OF NORFOLK AND ONE OF THE MOST HONOURED + WITHOUT A WORD HOLMES HURRIED TO A CARRIAGE AND DURING THE LONG SEVEN MILES' DRIVE HE NEVER OPENED HIS MOUTH + SELDOM HAVE I SEEN HIM SO UTTERLY DESPONDENT + HE HAD BEEN UNEASY DURING ALL OUR JOURNEY FROM TOWN AND I HAD OBSERVED THAT HE HAD TURNED OVER THE MORNING PAPERS WITH ANXIOUS ATTENTION BUT NOW THIS SUDDEN REALIZATION OF HIS WORST FEARS LEFT HIM IN A BLANK MELANCHOLY + HE LEANED BACK IN HIS SEAT LOST IN GLOOMY SPECULATION + YET THERE WAS MUCH AROUND TO INTEREST US FOR WE WERE PASSING THROUGH AS SINGULAR A COUNTRYSIDE AS ANY IN ENGLAND WHERE A FEW SCATTERED COTTAGES REPRESENTED THE POPULATLON OF TO DAY WHILE ON EVERY HAND ENORMOUS SQUARE TOWERED CHURCHES BRISTLED UP FROM THE FLAT GREEN LANDSCAPE AND TOLD OF THE GLORY AND PROSPERITY OF OLD EAST ANGLIA + AT LAST THE VIOLET RIM OF THE GERMAN OCEAN APPEARED OVER THE GREEN EDGE OF THE NORFOLK COAST AND THE DRIVER POINTED WITH HIS WHIP TO TWO OLD BRICK AND TIMBER GABLES WHICH PROJECTED FROM A GROVE OF TREES + THAT'S RIDING THORPE MANOR SAID HE + AS WE DROVE UP TO THE PORTICOED FRONT DOOR I OBSERVED IN FRONT OF IT BESIDE THE TENNIS LAWN THE BLACK TOOL HOUSE AND THE PEDESTALLED SUNDIAL WITH WHICH WE HAD SUCH STRANGE ASSOCIATIONS + A DAPPER LITTLE MAN WITH A QUICK ALERT MANNER AND A WAXED MOUSTACHE HAD JUST DESCENDED FROM A HIGH DOG CART + HE INTRODUCED HIMSELF AS INSPECTOR MARTIN OF THE NORFOLK CONSTABULARY AND HE WAS CONSIDERABLY ASTONISHED WHEN HE HEARD THE NAME OF MY COMPANION + QUOTE WHY MR. HOLMES THE CRIME WAS ONLY COMMITTED AT THREE THIS MORNING + HOW COULD YOU HEAR OF IT IN LONDON AND GET TO THE SPOT AS SOON AS L. + I ANTICIPATED IT + I CAME IN THE HOPE OF PREVENTING IT + THEN YOU MUST HAVE IMPORTANT EVIDENCE OF WHICH WE ARE IGNORANT FOR THEY WERE SAID TO BE A MOST UNITED COUPLE + I HAVE ONLY THE EVIDENCE OF THE DANCING MEN SAID HOLMES + QUOTE I WILL EXPLAIN THE MATTER TO YOU LATER + MEANWHILE SINCE IT IS TOO LATE TO PREVENT THIS TRAGEDY I AM VERY ANXIOUS THAT I SHOULD USE THE KNOWLEDGE WHICH I POSSESS IN ORDER TO INSURE THAT JUSTICE BE DONE + WILL YOU ASSOCIATE ME IN YOUR INVESTIGATION OR WILL YOU PREFER THAT I SHOULD ACT INDEPENDENTLY + I SHOULD BE PROUD TO FEEL THAT WE WERE ACTING TOGETHER MR. HOLMES SAID THE INSPECTOR EARNESTLY + IN THAT CASE I SHOULD BE GLAD TO HEAR THE EVIDENCE AND TO EXAMINE THE PREMISES WITHOUT AN INSTANT OF UNNECESSARY DELAY + INSPECTOR MARTIN HAD THE GOOD SENSE TO ALLOW MY FRIEND TO DO THINGS IN HIS OWN FASHION AND CONTENTED HIMSELF WITH CAREFULLY NOTING THE RESULTS + THE LOCAL SURGEON AN OLD WHITE HAIRED MAN HAD JUST COME DOWN FROM MRS. HILTON CUBITT'S ROOM AND HE REPORTED THAT HER INJURIES WERE SERIOUS BUT NOT NECESSARILY FATAL + THE BULLET HAD PASSED THROUGH THE FRONT OF HER BRAIN AND IT WOULD PROBABLY BE SOME TIME BEFORE SHE COULD REGAIN CONSCIOUSNESS + ON THE QUESTION OF WHETHER SHE HAD BEEN SHOT OR HAD SHOT HERSELF HE WOULD NOT VENTURE TO EXPRESS ANY DECIDED OPINION + CERTAINLY THE BULLET HAD BEEN DISCHARGED AT VERY CLOSE QUARTERS + THERE WAS ONLY THE ONE PISTOL FOUND IN THE ROOM TWO BARRELS OF WHICH HAD BEEN EMPTIED + MR. HILTON CUBITT HAD BEEN SHOT THROUGH THE HEART + IT WAS EQUALLY CONCEIVABLE THAT HE HAD SHOT HER AND THEN HIMSELF OR THAT SHE HAD BEEN THE CRIMINAL FOR THE REVOLVER LAY UPON THE FLOOR MIDWAY BETWEEN THEM + HAS HE BEEN MOVED ASKED HOLMES + WE HAVE MOVED NOTHING EXCEPT THE LADY + WE COULD NOT LEAVE HER LYING WOUNDED UPON THE FLOOR QUOTE + HOW LONG HAVE YOU BEEN HERE DOCTOR + SINCE FOUR O'CLOCK + ANYONE ELSE + YES THE CONSTABLE HERE + AND YOU HAVE TOUCHED NOTHING + QUOTE NOTHING QUOTE + YOU HAVE ACTED WITH GREAT DISCRETION + WHO SENT FOR YOU + THE HOUSEMAID SAUNDERS + WAS IT SHE WHO GAVE THE ALARM + SHE AND MRS. KING THE COOK + QUOTE WHERE ARE THEY NOW QUOTE + IN THE KITCHEN I BELIEVE + THEN I THINK WE HAD BETTER HEAR THEIR STORY AT ONCE + THE OLD HALL OAK PANELLED AND HIGH WINDOWED HAD BEEN TURNED INTO A COURT OF INVESTIGATION + HOLMES SAT IN A GREAT OLD FASHIONED CHAIR HIS INEXORABLE EYES GLEAMING OUT OF HIS HAGGARD FACE + I COULD READ IN THEM A SET PURPOSE TO DEVOTE HIS LIFE TO THIS QUEST UNTIL THE CLIENT WHOM HE HAD FAILED TO SAVE SHOULD AT LAST BE AVENGED + THE TRIM INSPECTOR MARTIN THE OLD GRAY HEADED COUNTRY DOCTOR MYSELF AND A STOLID VILLAGE POLICEMAN MADE UP THE REST OF THAT STRANGE COMPANY + THE TWO WOMEN TOLD THEIR STORY CLEARLY ENOUGH + THEY HAD BEEN AROUSED FROM THEIR SLEEP BY THE SOUND OF AN EXPLOSION WHICH HAD BEEN FOLLOWED A MINUTE LATER BY A SECOND ONE + THEY SLEPT IN ADJOINING ROOMS AND MRS. KING HAD RUSHED IN TO SAUNDERS + TOGETHER THEY HAD DESCENDED THE STAIRS + THE DOOR OF THE STUDY WAS OPEN AND A CANDLE WAS BURNING UPON THE TABLE + THEIR MASTER LAY UPON HIS FACE IN THE CENTRE OF THE ROOM + HE WAS QUITE DEAD + NEAR THE WINDOW HIS WIFE WAS CROUCHING HER HEAD LEANING AGAINST THE WALL + SHE WAS HORRIBLY WOUNDED AND THE SIDE OF HER FACE WAS RED WITH BLOOD + SHE BREATHED HEAVILY BUT WAS INCAPABLE OF SAYING ANYTHING + THE PASSAGE AS WELL AS THE ROOM WAS FULL OF SMOKE AND THE SMELL OF POWDER + THE WINDOW WAS CERTAINLY SHUT AND FASTENED UPON THE INSIDE + BOTH WOMEN WERE POSITIVE UPON THE POINT + THEY HAD AT ONCE SENT FOR THE DOCTOR AND FOR THE CONSTABLE + THEN WITH THE AID OF THE GROOM AND THE STABLE BOY THEY HAD CONVEYED THEIR INJURED MISTRESS TO HER ROOM + BOTH SHE AND HER HUSBAND HAD OCCUPIED THE BED + SHE WAS CLAD IN HER DRESS HE IN HIS DRESSING GOWN OVER HIS NIGHT CLOTHES + NOTHING HAD BEEN MOVED IN THE STUDY + SO FAR AS THEY KNEW THERE HAD NEVER BEEN ANY QUARREL BETWEEN HUSBAND AND WIFE + THEY HAD ALWAYS LOOKED UPON THEM AS A VERY UNITED COUPLE + THESE WERE THE MAIN POINTS OF THE SERVANTS' EVIDENCE + IN ANSWER TO INSPECTOR MARTIN THEY WERE CLEAR THAT EVERY DOOR WAS FASTENED UPON THE INSIDE AND THAT NO ONE COULD HAVE ESCAPED FROM THE HOUSE + IN ANSWER TO HOLMES THEY BOTH REMEMBERED THAT THEY WERE CONSCIOUS OF THE SMELL OF POWDER FROM THE MOMENT THAT THEY RAN OUT OF THEIR ROOMS UPON THE TOP FLOOR + I COMMEND THAT FACT VERY CAREFULLY TO YOUR ATTENTION SAID HOLMES TO HIS PROFESSIONAL COLLEAGUE + AND NOW I THINK THAT WE ARE IN A POSITION TO UNDERTAKE A THOROUGH EXAMINATION OF THE ROOM + THE STUDY PROVED TO BE A SMALL CHAMBER LINED ON THREE SIDES WITH BOOKS AND WITH A WRITING TABLE FACING AN ORDINARY WINDOW WHICH LOOKED OUT UPON THE GARDEN + OUR FIRST ATTENTION WAS GIVEN TO THE BODY OF THE UNFORTUNATE SQUIRE WHOSE HUGE FRAME LAY STRETCHED ACROSS THE ROOM + HIS DISORDERED DRESS SHOWED THAT HE HAD BEEN HASTILY AROUSED FROM SLEEP + THE BULLET HAD BEEN FIRED AT HIM FROM THE FRONT AND HAD REMAINED IN HIS BODY AFTER PENETRATING THE HEART + HIS DEATH HAD CERTAINLY BEEN INSTANTANEOUS AND PAINLESS + THERE WAS NO POWDER MARKING EITHER UPON HIS DRESSINGGOWN OR ON HIS HANDS + ACCORDING TO THE COUNTRY SURGEON THE LADY HAD STAINS UPON HER FACE BUT NONE UPON HER HAND + THE ABSENCE OF THE LATTER MEANS NOTHING THOUGH ITS PRESENCE MAY MEAN EVERYTHING SAID HOLMES + QUOTE UNLESS THE POWDER FROM A BADLY FITTING CARTRIDGE HAPPENS TO SPURT BACKWARD ONE MAY FIRE MANY SHOTS WITHOUT LEAVING A SIGN + I WOULD SUGGEST THAT MR. CUBITT'S BODY MAY NOW BE REMOVED + I SUPPOSE DOCTOR YOU HAVE NOT RECOVERED THE BULLET WHICH WOUNDED THE LADY + A SERIOUS OPERATION WILL BE NECESSARY BEFORE THAT CAN BE DONE + BUT THERE ARE STILL FOUR CARTRIDGES IN THE REVOLVER + TWO HAVE BEEN FIRED AND TWO WOUNDS INFLICTED SO THAT EACH BULLET CAN BE ACCOUNTED FOR + SO IT WOULD SEEM SAID HOLMES + PERHAPS YOU CAN ACCOUNT ALSO FOR THE BULLET WHICH HAS SO OBVIOUSLY STRUCK THE EDGE OF THE WINDOW + HE HAD TURNED SUDDENLY AND HIS LONG THIN FINGER WAS POINTING TO A HOLE WHICH HAD BEEN DRILLED RIGHT THROUGH THE LOWER WINDOWSASH ABOUT AN INCH ABOVE THE BOTTOM + QUOTE BY GEORGE QUOTE CRIED THE INSPECTOR + HOW EVER DID YOU SEE THAT + BECAUSE I LOOKED FOR IT + WONDERFUL SAID THE COUNLRY DOCTOR + YOU ARE CERTAINLY RIGHT SIR + THEN A THIRD SHOT HAS BEEN FIRED AND THEREFORE A THIRD PERSON MUST HAVE BEEN PRESENT + BUT WHO COULD THAT HAVE BEEN AND HOW COULD HE HAVE GOT AWAY + QUOTE THAT IS THE PROBLEM WHICH WE ARE NOW ABOUT TO SOLVE QUOTE SAID SHERLOCK HOLMES + YOU REMEMBER INSPECTOR MARTIN WHEN THE SERVANTS SAID THAT ON LEAVING THEIR ROOM THEY WERE AT ONCE CONSCIOUS OF A SMELL OF POWDER I REMARKED THAT THE POINT WAS AN EXTREMELY IMPORTANT ONE + YES SIR BUT I CONFESS I DID NOT QUITE FOLLOW YOU + IT SUGGESTED THAT AT THE TIME OF THE FIRING THE WINDOW AS WELL AS THE DOOR OF THE ROOM HAD BEEN OPEN + OTHERWISE THE FUMES OF POWDER COULD NOT HAVE BEEN BLOWN SO RAPIDLY THROUGH THE HOUSE + A DRAUGHT IN THE ROOM WAS NECESSARY FOR THAT + BOTH DOOR AND WINDOW WERE ONLY OPEN FOR A VERY SHORT TIME HOWEVER + HOW DO YOU PROVE THAT + QUOTE BECAUSE THE CANDLE WAS NOT GUTTERED QUOTE + CAPITAL CRIED THE INSPECTOR + CAPITAL + FEELING SURE THAT THE WINDOW HAD BEEN OPEN AT THE TIME OF THE TRAGEDY I CONCEIVED THAT THERE MIGHT HAVE BEEN A THIRD PERSON IN THE AFFAIR WHO STOOD OUTSIDE THIS OPENING AND FIRED THROUGH IT + ANY SHOT DIRECTED AT THIS PERSON MIGHT HIT THE SASH + I LOOKED AND THERE SURE ENOUGH WAS THE BULLET MARK + BUT HOW CAME THE WINDOW TO BE SHUT AND FASTENED + QUOTE THE WOMAN'S FIRST INSTINCT WOULD BE TO SHUT AND FASTEN THE WINDOW + BUT HALLOA WHAT IS THIS + IT WAS A LADY'S HAND BAG WHICH STOOD UPON THE STUDY TABLE A TRIM LITTLE HANDBAG OF CROCODILE SKIN AND SILVER + HOLMES OPENED IT AND TURNED THE CONTENTS OUT + THERE WERE TWENTY FIFTY POUND NOTES OF THE BANK OF ENGLAND HELD TOGETHER BY AN INDIA RUBBER BAND NOTHING ELSE + THIS MUST BE PRESERVED FOR IT WILL FIGURE IN THE TRIAL SAID HOLMES AS HE HANDED THE BAG WITH ITS CONTENTS TO THE INSPECTOR + IT IS NOW NECESSARY THAT WE SHOULD TRY TO THROW SOME LIGHT UPON THIS THIRD BULLET WHICH HAS CLEARLY FROM THE SPLINTERING OF THE WOOD BEEN FIRED FROM INSIDE THE ROOM + I SHOULD LIKE TO SEE MRS. KING THE COOK AGAIN + YOU SAID MRS. KING THAT YOU WERE AWAKENED BY A LOUD EXPLOSION + WHEN YOU SAID THAT DID YOU MEAN THAT IT SEEMED TO YOU TO BE LOUDER THAN THE SECOND ONE + WELL SIR IT WAKENED ME FROM MY SLEEP SO IT IS HARD TO JUDGE + BUT IT DID SEEM VERY LOUD QUOTE + YOU DON'T THINK THAT IT MIGHT HAVE BEEN TWO SHOTS FIRED ALMOST AT THE SAME INSTANT + I AM SURE I COULDN'T SAY SIR + I BELIEVE THAT IT WAS UNDOUBTEDLY SO + I RATHER THINK INSPECTOR MATTIN THAT WE HAVE NOW EXHAUSTED ALL THAT THIS ROOM CAN TEACH US + IF YOU WILL KINDLY STEP ROUND WITH ME WE SHALL SEE WHAT FRESH EVIDENCE THE GARDEN HAS TO OFFER + A FLOWER BED EXTENDED UP TO THE STUDY WINDOW AND WE ALL BROKE INTO AN EXCLAMATION AS WE APPROACHED IT + THE FLOWERS WERE TRAMPLED DOWN AND THE SOFT SOIL WAS IMPRINTED ALL OVER WITH FOOTMARKS + LARGE MASCULINE FEET THEY WERE WITH PECULIARLY LONG SHARP TOES + HOLMES HUNTED ABOUT AMONG THE GRASS AND LEAVES LIKE A RETRIEVER AFTER A WOUNDED BIRD + THEN WITH A CRY OF SATISFACTION HE BENT FORWARD AND PICKED UP A LITTLE BRAZEN CYLINDER + I THOUGHT SO SAID HE THE REVOLVER HAD AN EJECTOR AND HERE IS THE THIRD CARTRIDGE + I REALLY THINK INSPECTOR MARTIN THAT OUR CASE IS ALMOST COMPLETE QUOTE + THE COUNTRY INSPECTOR'S FACE HAD SHOWN HIS INTENSE AMAZEMENT AT THE RAPID AND MASTERFUL PROGRESS OF HOLMES'S INVESTIGATION + AT FIRST HE HAD SHOWN SOME DISPOSITION TO ASSERT HIS OWN POSITION BUT NOW HE WAS OVERCOME WITH ADMIRATION AND READY TO FOLLOW WITHOUT QUESTION WHEREVER HOLMES LED + WHOM DO YOU SUSPECT HE ASKED + I'LL GO INTO THAT LATER + THERE ARE SEVERAL POINTS IN THIS PROBLEM WHICH I HAVE NOT BEEN ABLE TO EXPLAIN TO YOU YET + NOW THAT I HAVE GOT SO FAR I HAD BEST PROCEED ON MY OWN LINES AND THEN CLEAR THE WHOLE MATTER UP ONCE AND FOR ALL + JUST AS YOU WISH MR. HOLMES SO LONG AS WE GET OUR MAN + I HAVE NO DESIRE TO MAKE MYSTERIES BUT IT IS IMPOSSIBLE AT THE MOMENT OF ACTION TO ENTER INTO LONG AND COMPLEX EXPLANATIONS + I HAVE THE THREADS OF THIS AFFAIR ALL IN MY HAND + EVEN IF THIS LADY SHOULD NEVER RECOVER CONSCIOUSNESS WE CAN STILL RECONSTRUCT THE EVENTS OF LAST NIGHT AND INSURE THAT JUSTICE BE DONE + FIRST OF ALL I WISH TO KNOW WHETHER THERE IS ANY INN IN THIS NEIGHBOURHOOD KNOWN AS ELRIGE'S' QUOTE + THE SERVANTS WERE CROSS QUESTIONED BUT NONE OF THEM HAD HEARD OF SUCH A PLACE + THE STABLE BOY THREW A LIGHT UPON THE MATTER BY REMEMBERING THAT A FARMER OF THAT NAME LIVED SOME MILES OFF IN THE DIRECTION OF EAST RUSTON + IS IT A LONELY FARM + VERY LONELY SIR + PERHAPS THEY HAVE NOT HEARD YET OF ALL THAT HAPPENED HERE DURING THE NIGHT + MAYBE NOT SIR + HOLMES THOUGHT FOR A LITTLE AND THEN A CURIOUS SMILE PLAYED OVER HIS FACE + SADDLE A HORSE MY LAD SAID HE + QUOTE I SHALL WISH YOU TO TAKE A NOTE TO ELRIGE'S FARM QUOTE + HE TOOK FROM HIS POCKET THE VARIOUS SLIPS OF THE DANCING MEN + WITH THESE IN FRONT OF HIM HE WORKED FOR SOME TIME AT THE STUDY TABLE + FINALLY HE HANDED A NOTE TO THE BOY WITH DIRECTIONS TO PUT IT INTO THE HANDS OF THE PERSON TO WHOM IT WAS ADDRESSED AND ESPECIALLY TO ANSWER NO QUESTIONS OF ANY SORT WHICH MIGHT BE PUT TO HIM + I SAW THE OUTSIDE OF THE NOTE ADDRESSED IN STRAGGLING IRREGULAR CHARACTERS VERY UNLIKE HOLMES'S USUAL PRECISE HAND + IT WAS CONSIGNED TO MR. ABE SLANEY ELRIGE'S FARM EAST RUSTON NORFOLK + I THINK INSPECTOR HOLMES REMARKED THAT YOU WOULD DO WELL TO TELEGRAPH FOR AN ESCORT AS IF MY CALCULATIONS PROVE TO BE CORRECT YOU MAY HAVE A PARTICULARLY DANGEROUS PRISONER TO CONVEY TO THE COUNTY JAIL + THE BOY WHO TAKES THIS NOTE COULD NO DOUBT FORWARD YOUR TELEGRAM + IF THERE IS AN AFTERNOON TRAIN TO TOWN WATSON I THINK WE SHOULD DO WELL TO TAKE IT AS I HAVE A CHEMICAL ANALYSIS OF SOME INTEREST TO FINISH AND THIS INVESTIGATION DRAWS RAPIDLY TO A CLOSE + WHEN THE YOUTH HAD BEEN DISPATCHED WITH THE NOTE SHERLOCK HOLMES GAVE HIS INSTRUCTIONS TO THE SERVANTS + IF ANY VISITOR WERE TO CALL ASKING FOR MRS. HILTON CUBITT NO INFORMATION SHOULD BE GIVEN AS TO HER CONDITION BUT HE WAS TO BE SHOWN AT ONCE INTO THE DRAWING ROOM + HE IMPRESSED THESE POINTS UPON THEM WITH THE UTMOST EARNESTNESS + FINALLY HE LED THE WAY INTO THE DRAWING ROOM WITH THE REMARK THAT THE BUSINESS WAS NOW OUT OF OUR HANDS AND THAT WE MUST WHILE AWAY THE TIME AS BEST WE MIGHT UNTIL WE COULD SEE WHAT WAS IN STORE FOR US + THE DOCTOR HAD DEPARTED TO HIS PATIENTS AND ONLY THE INSPECTOR AND MYSELF REMAINED + I THINK THAT I CAN HELP YOU TO PASS AN HOUR IN AN INTERESTING AND PROFITABLE MANNER SAID HOLMES DRAWING HIS CHAIR UP TO THE TABLE AND SPREADING OUT IN FRONT OF HIM THE VARIOUS PAPERS UPON WHICH WERE RECORDED THE ANTICS OF THE DANCING MEN + AS TO YOU FRIEND WATSON I OWE YOU EVERY ATONEMENT FOR HAVING ALLOWED YOUR NATURAL CURIOSITY TO REMAIN SO LONG UNSATISFIED + TO YOU INSPECTOR THE WHOLE INCIDENT MAY APPEAL AS A REMARKABLE PROFESSIONAL STUDY + I MUST TELL YOU FIRST OF ALL THE INTERESTING CIRCUMSTANCES CONNECTED WITH THE PREVIOUS CONSULTATIONS WHICH MR. HILTON CUBITT HAS HAD WITH ME IN BAKER STREET + HE THEN SHORTLY RECAPITULATED THE FACTS WHICH HAVE ALREADY BEEN RECORDED + QUOTE I HAVE HERE IN FRONT OF ME THESE SINGULAR PRODUCTIONS AT WHICH ONE MIGHT SMILE HAD THEY NOT PROVED THEMSELVES TO BE THE FORERUNNERS OF SO TERRIBLE A TRAGEDY + I AM FAIRLY FAMILIAR WITH ALL FORMS OF SECRET WRITINGS AND AM MYSELF THE AUTHOR OF A TRIFLING MONOGRAPH UPON THE SUBJECT IN WHICH I ANALYZE ONE HUNDRED AND SIXTY SEPARATE CIPHERS BUT I CONFESS THAT THIS IS ENTIRELY NEW TO ME + THE OBJECT OF THOSE WHO INVENTED THE SYSTEM HAS APPARENTLY BEEN TO CONCEAL THAT THESE CHARACTERS CONVEY A MESSAGE AND TO GIVE THE IDEA THAT THEY ARE THE MERE RANDOM SKETCHES OF CHILDREN + HAVING ONCE RECOGNIZED HOWEVER THAT THE SYMBOLS STOOD FOR LETTERS AND HAVING APPLIED THE RULES WHICH GUIDE US IN ALL FORMS OF SECRET WRITINGS THE SOLUTION WAS EASY ENOUGH + THE FIRST MESSAGE SUBMITTED TO ME WAS SO SHORT THAT IT WAS IMPOSSIBLE FOR ME TO DO MORE THAN TO SAY WITH SOME CONFIDENCE THAT THE SYMBOL SEVEN EIGHTHS STOOD FOR E. AS YOU ARE AWARE E. IS THE MOST COMMON LETTER IN THE ENGLISH ALPHABET AND IT PREDOMINATES TO SO MARKED AN EXTENT THAT EVEN IN A SHORT SENTENCE ONE WOULD EXPECT TO FIND IT MOST OFTEN + OUT OF FIFTEEN SYMBOLS IN THE FIRST MESSAGE FOUR WERE THE SAME SO IT WAS REASONABLE TO SET THIS DOWN AS E. IT IS TRUE THAT IN SOME CASES THE FIGURE WAS BEARING A FLAG AND IN SOME CASES NOT BUT IT WAS PROBABLE FROM THE WAY IN WHICH THE FLAGS WERE DISTRIBUTED THAT THEY WERE USED TO BREAK THE SENTENCE UP INTO WORDS + I ACCEPTED THIS AS A HYPOTHESIS AND NOTED THAT E. WAS REPRESENTED BY SEVEN EIGHTHS + BUT NOW CAME THE REAL DIFFICULTY OF THE INQUIRY + THE ORDER OF THE ENGLISH LETTERS AFTER E. IS BY NO MEANS WELL MARKED AND ANY PREPONDERANCE WHICH MAY BE SHOWN IN AN AVERAGE OF A PRINTED SHEET MAY BE REVERSED IN A SINGLE SHORT SENTENCE + SPEAKING ROUGHLY T. A ZERO I N. S. H. R. D. AND L. ARE THE NUMERICAL ORDER IN WHICH LETTERS OCCUR BUT T. A ZERO AND I ARE VERY NEARLY ABREAST OF EACH OTHER AND IT WOULD BE AN ENDLESS TASK TO TRY EACH COMBINATION UNTIL A MEANING WAS ARRIVED AT + I THEREFORE WAITED FOR FRESH MATERIAL + IN MY SECOND INTERVIEW WITH MR. HILTON CUBITT HE WAS ABLE TO GIVE ME TWO OTHER SHORT SENTENCES AND ONE MESSAGE WHICH APPEARED SINCE THERE WAS NO FLAG TO BE A SINGLE WORD + HERE ARE THE SYMBOLS + NOW IN THE SINGLE WORD I HAVE ALREADY GOT THE TWO E'S COMING SECOND AND FOURTH IN A WORD OF FIVE LETTERS + IT MIGHT BE SEVER OR LEVER OR NEVER + THERE CAN BE NO QUESTION THAT THE LATTER AS A REPLY TO AN APPEAL IS FAR THE MOST PROBABLE AND THE CIRCUMSTANCES POINTED TO ITS BEING A REPLY WRITTEN BY THE LADY + ACCEPTING IT AS CORRECT WE ARE NOW ABLE TO SAY THAT THE SYMBOLS SEVEN EIGHTHS AND SEVEN EIGHTHS SEVEN EIGHTHS STAND RESPECTIVELY FOR N. V. AND R. + EVEN NOW I WAS IN CONSIDERABLE DIFFICULTY BUT A HAPPY THOUGHT PUT ME IN POSSESSION OF SEVERAL OTHER LETTERS + IT OCCURRED TO ME THAT IF THESE APPEALS CAME AS I EXPECTED FROM SOMEONE WHO HAD BEEN INTIMATE WITH THE LADY IN HER EARLY LIFE A COMBINATION WHICH CONTAINED TWO E'S WITH THREE LETTERS BETWEEN MIGHT VERY WELL STAND FOR THE NAME ELSIE + ON EXAMINATION I FOUND THAT SUCH A COMBINATION FORMED THE TERMINATION OF THE MESSAGE WHICH WAS THREE TIMES REPEATED + IT WAS CERTAINLY SOME APPEAL TO ELSIE + IN THIS WAY I HAD GOT MY L. S. AND I. BUT WHAT APPEAL COULD IT BE + THERE WERE ONLY FOUR LETTERS IN THE WORD WHICH PRECEDED ELSIE AND IT ENDED IN E. SURELY THE WORD MUST BE COME + I TRIED ALL OTHER FOUR LETTERS ENDING IN E. BUT COULD FIND NONE TO FIT THE CASE + SO NOW I WAS IN POSSESSION OF C. ZERO AND M. AND I WAS IN A POSITION TO ATTACK THE FIRST MESSAGE ONCE MORE DIVIDING IT INTO WORDS AND PUTTING DOTS FOR EACH SYMBOL WHICH WAS STILL UNKNOWN + SO TREATED IT WORKED OUT IN THIS FASHION + M. + ERE + E. S. L. + NE + NOW THE FIRST LETTER CAN ONLY BE A WHICH IS A MOST USEFUL DISCOVERY SINCE IT OCCURS NO FEWER THAN THREE TIMES IN THIS SHORT SENTENCE AND THE H. IS ALSO APPARENT IN THE SECOND WORD + NOW IT BECOMES A. M. HERE A + E. SLANE + OR FILLING IN THE OBVIOUS VACANCIES IN THE NAME A. M. HERE ABE SLANEY + I HAD SO MANY LETTERS NOW THAT I COULD PROCEED WITH CONSIDERABLE CONFIDENCE TO THE SECOND MESSAGE WHICH WORKED OUT IN THIS FASHION A + ELRI + E. S. HERE I COULD ONLY MAKE SENSE BY PUTTING T. AND G. FOR THE MISSING LETTERS AND SUPPOSING THAT THE NAME WAS THAT OF SOME HOUSE OR INN AT WHICH THE WRITER WAS STAYING + INSPECTOR MARTIN AND I HAD LISTENED WITH THE UTMOST INTEREST TO THE FULL AND CLEAR ACCOUNT OF HOW MY FRIEND HAD PRODUCED RESULTS WHICH HAD LED TO SO COMPLETE A COMMAND OVER OUR DIFFICULTIES + QUOTE WHAT DID YOU DO THEN SIR QUOTE ASKED THE INSPECTOR + I HAD EVERY REASON TO SUPPOSE THAT THIS ABE SLANEY WAS AN AMERICAN SINCE ABE IS AN AMERICAN CONTRACTION AND SINCE A LETTER FROM AMERICA HAD BEEN THE STARTING POINT OF ALL THE TROUBLE + I HAD ALSO EVERY CAUSE TO THINK THAT THERE WAS SOME CRIMINAL SECRET IN THE MATTER + THE LADY'S ALLUSIONS TO HER PAST AND HER REFUSAL TO TAKE HER HUSBAND INTO HER CONFIDENCE BOTH POINTED IN THAT DIRECTION + I THEREFORE CABLED TO MY FRIEND WILSON HARGREAVE OF THE NEW YORK POLICE BUREAU WHO HAS MORE THAN ONCE MADE USE OF MY KNOWLEDGE OF LONDON CRIME + I ASKED HIM WHETHER THE NAME OF ABE SLANEY WAS KNOWN TO HIM + HERE IS HIS REPLY THE MOST DANGEROUS CROOK IN CHICAGO + ON THE VERY EVENING UPON WHICH I HAD HIS ANSWER HILTON CUBITT SENT ME THE LAST MESSAGE FROM SLANEY + WORKING WITH KNOWN LETTERS IT TOOK THIS FORM ELSIE + RE + ARE TO MEET THY GO + THE ADDITION OF A P. AND A D. COMPLETED A MESSAGE WHICH SHOWED ME THAT THE RASCAL WAS PROCEEDING FROM PERSUASION TO THREATS AND MY KNOWLEDGE OF THE CROOKS OF CHICAGO PREPARED ME TO FIND THAT HE MIGHT VERY RAPIDLY PUT HIS WORDS INTO ACTION + I AT ONCE CAME TO NORFOLK WITH MY FRIEND AND COLLEAGUE DOCTOR WATSON BUT UNHAPPILY ONLY IN TIME TO FIND THAT THE WORST HAD ALREADY OCCURRED + IT IS A PRIVILEGE TO BE ASSOCIATED WITH YOU IN THE HANDLING OF A CASE SAID THE INSPECTOR WARMLY + YOU WILL EXCUSE ME HOWEVER IF I SPEAK FRANKLY TO YOU + YOU ARE ONLY ANSWERABLE TO YOURSELF BUT I HAVE TO ANSWER TO MY SUPERIORS + IF THIS ABE SLANEY LIVING AT ELRIGE'S IS INDEED THE MURDERER AND IF HE HAS MADE HIS ESCAPE WHILE I AM SEATED HERE I SHOULD CERTAINLY GET INTO SERIOUS TROUBLE + QUOTE YOU NEED NOT BE UNEASY + HE WILL NOT TRY TO ESCAPE + HOW DO YOU KNOW + TO FLY WOULD BE A CONFESSION OF GUILT + THEN LET US GO TO ARREST HIM + I EXPECT HIM HERE EVERY INSTANT + QUOTE BUT WHY SHOULD HE COME QUOTE + BECAUSE I HAVE WRITTEN AND ASKED HIM + BUT THIS IS INCREDIBLE MR. HOLMES + WHY SHOULD HE COME BECAUSE YOU HAVE ASKED HIM + WOULD NOT SUCH A REQUEST RATHER ROUSE HIS SUSPICIONS AND CAUSE HIM TO FLY + I THINK I HAVE KNOWN HOW TO FRAME THE LETTER SAID SHERLOCK HOLMES + IN FACT IF I AM NOT VERY MUCH MISTAKEN HERE IS THE GENTLEMAN HIMSELF COMING UP THE DNVE + A MAN WAS STRIDING UP THE PATH WHICH LED TO THE DOOR + HE WAS A TALL HANDSOME SWARTHY FELLOW CLAD IN A SUIT OF GRAY FLANNEL WITH A PANAMA HAT A BRISTLING BLACK BEARD AND A GREAT AGGRESSIVE HOOKED NOSE AND FLOURISHING A CANE AS HE WALKED + HE SWAGGERED UP THE PATH AS IF THE PLACE BELONGED TO HIM AND WE HEARD HIS LOUD CONFIDENT PEAL AT THE BELL + QUOTE I THINK GENTLEMEN QUOTE SAID HOLMES QUIETLY QUOTE THAT WE HAD BEST TAKE UP OUR POSITION BEHIND THE DOOR + EVERY PRECAUTION IS NECESSARY WHEN DEALING WITH SUCH A FELLOW + YOU WILL NEED YOUR HANDCUFFS INSPECTOR + YOU CAN LEAVE THE TALKING TO ME + WE WAITED IN SILENCE FOR A MINUTE ONE OF THOSE MINUTES WHICH ONE CAN NEVER FORGET + THEN THE DOOR OPENED AND THE MAN STEPPED IN + IN AN INSTANT HOLMES CLAPPED A PISTOL TO HIS HEAD AND MARTIN SLIPPED THE HANDCUFFS OVER HIS WRISTS + IT WAS ALL DONE SO SWIFTLY AND DEFTLY THAT THE FELLOW WAS HELPLESS BEFORE HE KNEW THAT HE WAS ATTACKED + HE GLARED FROM ONE TO THE OTHER OF US WITH A PAIR OF BLAZING BLACK EYES + THEN HE BURST INTO A BITTER LAUGH + WELL GENTLEMEN YOU HAVE THE DROP ON ME THIS TIME + I SEEM TO HAVE KNOCKED UP AGAINST SOMETHING HARD + BUT I CAME HERE IN ANSWER TO A LETTER FROM MRS. HILTON CUBITT + DON'T TELL ME THAT SHE IS IN THIS + DON'T TELL ME THAT SHE HELPED TO SET A TRAP FOR ME + MRS. HILTON CUBITT WAS SERIOUSLY INJURED AND IS AT DEATH'S DOOR + THE MAN GAVE A HOARSE CRY OF GRIEF WHICH RANG THROUGH THE HOUSE + YOU'RE CRAZY HE CRIED FIERCELY + QUOTE IT WAS HE THAT WAS HURT NOT SHE + WHO WOULD HAVE HURT LITTLE ELSIE + I MAY HAVE THREATENED HER GOD FORGIVE ME BUT I WOULD NOT HAVE TOUCHED A HAIR OF HER PRETTY HEAD + TAKE IT BACK YOU + SAY THAT SHE IS NOT HURT + SHE WAS FOUND BADLY WOUNDED BY THE SIDE OF HER DEAD HUSBAND + HE SANK WITH A DEEP GROAN ON TO THE SETTEE AND BURIED HIS FACE IN HIS MANACLED HANDS + FOR FIVE MINUTES HE WAS SILENT + THEN HE RAISED HIS FACE ONCE MORE AND SPOKE WITH THE COLD COMPOSURE OF DESPAIR + I HAVE NOTHING TO HIDE FROM YOU GENTLEMEN SAID HE + IF I SHOT THE MAN HE HAD HIS SHOT AT ME AND THERE'S NO MURDER IN THAT + BUT IF YOU THINK I COULD HAVE HURT THAT WOMAN THEN YOU DON'T KNOW EITHER ME OR HER + I TELL YOU THERE WAS NEVER A MAN IN THIS WORLD LOVED A WOMAN MORE THAN I LOVED HER + I HAD A RIGHT TO HER + SHE WAS PLEDGED TO ME YEARS AGO + WHO WAS THIS ENGLISHMAN THAT HE SHOULD COME BETWEEN US + I TELL YOU THAT I HAD THE FIRST RIGHT TO HER AND THAT I WAS ONLY CLAIMING MY OWN + QUOTE SHE BROKE AWAY FROM YOUR INFLUENCE WHEN SHE FOUND THE MAN THAT YOU ARE QUOTE SAID HOLMES STERNLY + SHE FLED FROM AMERICA TO AVOID YOU AND SHE MARRIED AN HONOURABLE GENTLEMAN IN ENGLAND + YOU DOGGED HER AND FOLLOWED HER AND MADE HER LIFE A MISERY TO HER IN ORDER TO INDUCE HER TO ABANDON THE HUSBAND WHOM SHE LOVED AND RESPECTED IN ORDER TO FLY WITH YOU WHOM SHE FEARED AND HATED + YOU HAVE ENDED BY BRINGING ABOUT THE DEATH OF A NOBLE MAN AND DRIVING HIS WIFE TO SUICIDE + THAT IS YOUR RECORD IN THIS BUSINESS MR. ABE SLANEY AND YOU WILL ANSWER FOR IT TO THE LAW + IF ELSIE DIES I CARE NOTHING WHAT BECOMES OF ME SAID THE AMERICAN + HE OPENED ONE OF HIS HANDS AND LOOKED AT A NOTE CRUMPLED UP IN HIS PALM + SEE HERE MISTER HE CRIED WITH A GLEAM OF SUSPICION IN HIS EYES YOU'RE NOT TRYING TO SCARE ME OVER THIS ARE YOU + IF THE LADY IS HURT AS BAD AS YOU SAY WHO WAS IT THAT WROTE THIS NOTE + HE TOSSED IT FORWARD ON TO THE TABLE + I WROTE IT TO BRING YOU HERE + QUOTE YOU WROTE IT + THERE WAS NO ONE ON EARTH OUTSIDE THE JOINT WHO KNEW THE SECRET OF THE DANCING MEN + HOW CAME YOU TO WRITE IT + WHAT ONE MAN CAN INVENT ANOTHER CAN DISCOVER SAID HOLMES + THERE IS A CAB COMING TO CONVEY YOU TO NORWICH MR. SLANEY + BUT MEANWHILE YOU HAVE TIME TO MAKE SOME SMALL REPARATION FOR THE INJURY YOU HAVE WROUGHT + ARE YOU AWARE THAT MRS. HILTON CUBITT HAS HERSELF LAIN UNDER GRAVE SUSPICION OF THE MURDER OF HER HUSBAND AND THAT IT WAS ONLY MY PRESENCE HERE AND THE KNOWLEDGE WHICH I HAPPENED TO POSSESS WHICH HAS SAVED HER FROM THE ACCUSATION + THE LEAST THAT YOU OWE HER IS TO MAKE IT CLEAR TO THE WHOLE WORLD THAT SHE WAS IN NO WAY DIRECTLY OR INDIRECTLY RESPONSIBLE FOR HIS TRAGIC END + I ASK NOTHING BETTER SAID THE AMERICAN + QUOTE I GUESS THE VERY BEST CASE I CAN MAKE FOR MYSELF IS THE ABSOLUTE NAKED TRUTH QUOTE + IT IS MY DUTY TO WARN YOU THAT IT WILL BE USED AGAINST YOU CRIED THE INSPECTOR WITH THE MAGNIFICENT FAIR PLAY OF THE BRITISH CRIMINAL LAW + SLANEY SHRUGGED HIS SHOULDERS + I'LL CHANCE THAT SAID HE + FIRST OF ALL I WANT YOU GENTLEMEN TO UNDERSTAND THAT I HAVE KNOWN THIS LADY SINCE SHE WAS A CHILD + THERE WERE SEVEN OF US IN A GANG IN CHICAGO AND ELSIE'S FATHER WAS THE BOSS OF THE JOINT + HE WAS A CLEVER MAN WAS OLD PATRICK + IT WAS HE WHO INVENTED THAT WRITING WHICH WOULD PASS AS A CHILD'S SCRAWL UNLESS YOU JUST HAPPENED TO HAVE THE KEY TO IT + WELL ELSIE LEARNED SOME OF OUR WAYS. BUT SHE COULDN'T STAND THE BUSINESS AND SHE HAD A BIT OF HONEST MONEY OF HER OWN. SO SHE GAVE US ALL THE SLIP AND GOT AWAY TO LONDON + SHE HAD BEEN ENGAGED TO ME AND SHE WOULD HAVE MARRIED ME I BELIEVE IF I HAD TAKEN OVER ANOTHER PROFESSION BUT SHE WOULD HAVE NOTHING TO DO WITH ANYTHING ON THE CROSS + IT WAS ONLY AFTER HER MARRIAGE TO THIS ENGLISHMAN THAT I WAS ABLE TO FIND OUT WHERE SHE WAS + I WROTE TO HER BUT GOT NO ANSWER + AFTER THAT I CAME OVER AND AS LETTERS WERE NO USE I PUT MY MESSAGES WHERE SHE COULD READ THEM + WELL I HAVE BEEN HERE A MONTH NOW + I LIVED IN THAT FARM WHERE I HAD A ROOM DOWN BELOW AND COULD GET IN AND OUT EVERY NIGHT AND NO ONE THE WISER + I TRIED ALL I COULD TO COAX ELSIE AWAY + I KNEW THAT SHE READ THE MESSAGES FOR ONCE SHE WROTE AN ANSWER UNDER ONE OF THEM + THEN MY TEMPER GOT THE BETTER OF ME AND I BEGAN TO THREATEN HER + SHE SENT ME A LETTER THEN IMPLORING ME TO GO AWAY AND SAYING THAT IT WOULD BREAK HER HEART IF ANY SCANDAL SHOULD COME UPON HER HUSBAND + SHE SAID THAT SHE WOULD COME DOWN WHEN HER HUSBAND WAS ASLEEP AT THREE IN THE MORNING AND SPEAK WITH ME THROUGH THE END WINDOW IF I WOULD GO AWAY AFTERWARDS AND LEAVE HER IN PEACE + SHE CAME DOWN AND BROUGHT MONEY WITH HER TRYING TO BRIBE ME TO GO + THIS MADE ME MAD AND I CAUGHT HER ARM AND TRIED TO PULL HER THROUGH THE WINDOW + AT THAT MOMENT IN RUSHED THE HUSBAND WITH HIS REVOLVER IN HIS HAND + ELSIE HAD SUNK DOWN UPON THE FLOOR AND WE WERE FACE TO FACE + I WAS HEELED ALSO AND I HELD UP MY GUN TO SCARE HIM OFF AND LET ME GET AWAY + HE FIRED AND MISSED ME + I PULLED OFF ALMOST AT THE SAME INSTANT AND DOWN HE DROPPED + I MADE AWAY ACROSS THE GARDEN AND AS I WENT I HEARD THE WINDOW SHUT BEHIND ME + THAT'S GOD'S TRUTH GENTLEMEN EVERY WORD OF IT AND I HEARD NO MORE ABOUT IT UNTIL THAT LAD CAME RIDING UP WITH A NOTE WHICH MADE ME WALK IN HERE LIKE A JAY AND GIVE MYSELF INTO YOUR HANDS + A CAB HAD DRIVEN UP WHILST THE AMERICAN HAD BEEN TALKING + TWO UNIFORMED POLICEMEN SAT INSIDE + INSPECTOR MARTIN ROSE AND TOUCHED HIS PRISONER ON THE SHOULDER + QUOTE IT IS TIME FOR US TO GO QUOTE + CAN I SEE HER FIRST + NO SHE IS NOT CONSCIOUS + MR. SHERLOCK HOLMES + I ONLY HOPE THAT IF EVER AGAIN I HAVE AN IMPORTANT CASE I SHALL HAVE THE GOOD FORTUNE TO HAVE YOU BY MY SIDE + WE STOOD AT THE WINDOW AND WATCHED THE CAB DRIVE AWAY + AS I TURNED BACK MY EYE CAUGHT THE PELLET OF PAPER WHICH THE PRISONER HAD TOSSED UPON THE TABLE + IT WAS THE NOTE WITH WHICH HOLMES HAD DECOYED HIM + SEE IF YOU CAN READ IT WATSON SAID HE WITH A SMILE + IF YOU USE THE CODE WHICH I HAVE EXPLAINED SAID HOLMES YOU WILL FIND THAT IT SIMPLY MEANS COME HERE AT ONCE + I WAS CONVINCED THAT IT WAS AN INVITATION WHICH HE WOULD NOT REFUSE SINCE HE COULD NEVER IMAGINE THAT IT COULD COME FROM ANYONE BUT THE LADY + AND SO MY DEAR WATSON WE HAVE ENDED BY TURNING THE DANCING MEN TO GOOD WHEN THEY HAVE SO OFTEN BEEN THE AGENTS OF EVIL AND I THINK THAT I HAVE FULFILLED MY PROMISE OF GIVING YOU SOMETHING UNUSUAL FOR YOUR NOTEBOOK + THREE FORTY IS OUR TRAIN AND I FANCY WE SHOULD BE BACK IN BAKER STREET FOR DINNER QUOTE + ONLY ONE WORD OF EPILOGUE + THE AMERICAN ABE SLANEY WAS CONDEMNED TO DEATH AT THE WINTER ASSIZES AT NORWICH BUT HIS PENALTY WAS CHANGED TO PENAL SERVITUDE IN CONSIDERATION OF MITIGATING CIRCUMSTANCES AND THE CERTAINTY THAT HILTON CUBITT HAD FIRED THE FIRST SHOT + OF MRS. HILTON CUBITT I ONLY KNOW THAT I HAVE HEARD SHE RECOVERED ENTIRELY AND THAT SHE STILL REMAINS A WIDOW DEVOTING HER WHOLE LIFE TO THE CARE OF THE POOR AND TO THE ADMINISTRATION OF HER HUSBAND'S ESTATE diff --git a/samples/LMTutorial/train/devils_foot.txt b/samples/LMTutorial/train/devils_foot.txt new file mode 100755 index 0000000..dbefceb --- /dev/null +++ b/samples/LMTutorial/train/devils_foot.txt @@ -0,0 +1,576 @@ + IN RECORDINC FROM TIME TO TIME SOME OF THE CURIOUS EXPERIENCES AND INTERESTING RECOLLECTIONS WHICH I ASSOCIATE WITH MY LONG AND INTIMATE FRIENDSHIP WITH MR. SHERLOCK HOLMES I HAVE CONTINUALLY BEEN FACED BY DIFFICULTIES CAUSED BY HIS OWN AVERSION TO PUBLICITY + TO HIS SOMBRE AND CYNICAL SPIRIT ALL POPULAR APPLAUSE WAS ALWAYS ABHORRENT AND NOTHING AMUSED HIM MORE AT THE END OF A SUCCESSFUL CASE THAN TO HAND OVER THE ACTUAL EXPOSURE TO SOME ORTHODOX OFFICIAL AND TO LISTEN WITH A MOCKING SMILE TO THE GENERAL CHORUS OF MISPLACED CONGRATULATION + IT WAS INDEED THIS ATTITUDE UPON THE PART OF MY FRIEND AND CERTAINLY NOT ANY LACK OF INTERESTING MATERIAL WHICH HAS CAUSED ME OF LATE YEARS TO LAY VERY FEW OF MY RECORDS BEFORE THE PUBLIC + MY PARTICIPATION IN SOME OF HIS ADVENTURES WAS ALWAYS A PRIVILEGE WHICH ENTAILED DISCRETION AND RETICENCE UPON ME + IT WAS THEN WITH CONSIDERABLE SURPRISE THAT I RECEIVED A TELEGRAM FROM HOLMES LAST TUESDAY HE HAS NEVER BEEN KNOWN TO WRITE WHERE A TELEGRAM WOULD SERVE IN THE FOLLOWING TERMS WHY NOT TELL THEM OF THE CORNISH HORROR STRANGEST CASE I HAVE HANDLED + I HAVE NO IDEA WHAT BACKWARD SWEEP OF MEMORY HAD BROUGHT THE MATTER FRESH TO HIS MIND OR WHAT FREAK HAD CAUSED HIM TO DESIRE THAT I SHOULD RECOUNT IT BUT I HASTEN BEFORE ANOTHER CANCELLING TELEGRAM MAY ARRIVE TO HUNT OUT THE NOTES WHICH GIVE ME THE EXACT DETAILS OF THE CASE AND TO LAY THE NARRATIVE BEFORE MY READERS + IT WAS THEN IN THE SPRING OF THE YEAR ONE THOUSAND EIGHT HUNDRED NINETY SEVEN THAT HOLMES'S IRON CONSTITUTION SHOWED SOME SYMPTOMS OF GIVING WAY IN THE FACE OF CONSTANT HARD WORK OF A MOST EXACTING KIND AGGRAVATED PERHAPS BY OCCASIONAL INDISCRETIONS OF HIS OWN + IN MARCH OF THAT YEAR DOCTOR MOORE AGAR OF HARLEY STREET WHOSE DRAMATIC INTRODUCTION TO HOLMES I MAY SOME DAY RECOUNT GAVE POSITIVE INJUNCTIONS THAT THE FAMOUS PRIVATE AGENT LAY ASIDE ALL HIS CASES AND SURRENDER HIMSELF TO COMPLETE REST IF HE WISHED TO AVERT AN ABSOLUTE BREAKDOWN + THE STATE OF HIS HEALTH WAS NOT A MATTER IN WHICH HE HIMSELF TOOK THE FAINTEST INTEREST FOR HIS MENTAL DETACHMENT WAS ABSOLUTE BUT HE WAS INDUCED AT LAST ON THE THREAT OF BEING PERMANENTLY DISQUALIFIED FROM WORK TO GIVE HIMSELF A COMPLETE CHANGE OF SCENE AND AIR + THUS IT WAS THAT IN THE EARLY SPRING OF THAT YEAR WE FOUND OURSELVES TOGETHER IN A SMALL COTTAGE NEAR POLDHU BAY AT THE FURTHER EXTREMITY OF THE CORNISH PENINSULA + IT WAS A SINGULAR SPOT AND ONE PECULIARLY WELL SUITED TO THE GRIM HUMOUR OF MY PATIENT + FROM THE WINDOWS OF OUR LITTLE WHITEWASHED HOUSE WHICH STOOD HIGH UPON A GRASSY HEADLAND WE LOOKED DOWN UPON THE WHOLE SINISTER SEMICIRCLE OF MOUNTS BAY THAT OLD DEATH TRAP OF SAILING VESSELS WITH ITS FRINGE OF BLACK CLIFFS AND SURGE SWEPT REEFS ON WHICH INNUMERABLE SEAMEN HAVE MET THEIR END + WITH A NORTHERLY BREEZE IT LIES PLACID AND SHELTERED INVITING THE STORM TOSSED CRAFT TO TACK INTO IT FOR REST AND PROTECTION + THEN COME THE SUDDEN SWIRL ROUND OF THE WIND THE BLUSTERING GALE FROM THE SOUTH WEST THE DRAGGING ANCHOR THE LEE SHORE AND THE LAST BATTLE IN THE CREAMING BREAKERS + THE WISE MARINER STANDS FAR OUT FROM THAT EVIL PLACE + ON THE LAND SIDE OUR SURROUNDINGS WERE AS SOMBRE AS ON THE SEA + IT WAS A COUNTRY OF ROLLING MOORS LONELY AND DUN COLOURED WITH AN OCCASIONAL CHURCH TOWER TO MARK THE SITE OF SOME OLDWORLD VILLAGE + IN EVERY DIRECTION UPON THESE MOORS THERE WERE TRACES OF SOME VANISHED RACE WHICH HAD PASSED UTTERLY AWAY AND LEFT AS ITS SOLE RECORD STRANGE MONUMENTS OF STONE IRREGULAR MOUNDS WHICH CONTAINED THE BURNED ASHES OF THE DEAD AND CURIOUS EARTHWORKS WHICH HINTED AT PREHISTORIC STRIFE + THE GLAMOUR AND MYSTERY OF THE PLACE WITH ITS SINISTER ATMOSPHERE OF FORGOTTEN NATIONS APPEALED TO THE IMAGINATION OF MY FRIEND AND HE SPENT MUCH OF HIS TIME IN LONG WALKS AND SOLITARY MEDITATIONS UPON THE MOOR + THE ANCIENT CORNISH LANGUAGE HAD ALSO ARRESTED HIS ATTENTION AND HE HAD I REMEMBER CONCEIVED THE IDEA THAT IT WAS AKIN TO THE CHALDEAN AND HAD BEEN LARGELY DERIVED FROM THE PHOENICIAN TRADERS IN TIN + HE HAD RECEIVED A CONSIGNMENT OF BOOKS UPON PHILOLOGY AND WAS SETTLING DOWN TO DEVELOP THIS THESIS WHEN SUDDENLY TO MY SORROW AND TO HIS UNFEIGNED DELIGHT WE FOUND OURSELVES EVEN IN THAT LAND OF DREAMS PLUNGED INTO A PROBLEM AT OUR VERY DOORS WHICH WAS MORE INTENSE MORE ENGROSSING AND INFINITELY MORE MYSTERIOUS THAN ANY OF THOSE WHICH HAD DRIVEN US FROM LONDON + OUR SIMPLE LIFE AND PEACEFUL HEALTHY ROUTINE WERE VIOLENTLY INTERRUPTED AND WE WERE PRECIPITATED INTO THE MIDST OF A SERIES OF EVENTS WHICH CAUSED THE UTMOST EXCITEMENT NOT ONLY IN CORNWALL BUT THROUGHOUT THE WHOLE WEST OF ENGLAND + MANY OF MY READERS MAY RETAIN SOME RECOLLECTION OF WHAT WAS CALLED AT THE TIME QUOTE THE CORNISH HORROR QUOTE THOUGH A MOST IMPERFECT ACCOUNT OF THE MATTER REACHED THE LONDON PRESS + NOW AFTER THIRTEEN YEARS I WILL GIVE THE TRUE DETAILS OF THIS INCONCEIVABLE AFFAIR TO THE PUBLIC + I HAVE SAID THAT SCATTERED TOWERS MARKED THE VILLAGES WHICH DOTTED THIS PART OF CORNWALL + THE NEAREST OF THESE WAS THE HAMLET OF TREDANNICK WOLLAS WHERE THE COTTAGES OF A COUPLE OF HUNDRED INHABITANTS CLUSTERED ROUND AN ANCIENT MOSS GROWN CHURCH + THE VICAR OF THE PARISH MR. ROUNDHAY WAS SOMETHING OF AN ARCHEOLOGIST AND AS SUCH HOLMES HAD MADE HIS ACQUAINTANCE + HE WAS A MIDDLE AGED MAN PORTLY AND AFFABLE WITH A CONSIDERABLE FUND OF LOCAL LORE + AT HIS INVITATION WE HAD TAKEN TEA AT THE VICARAGE AND HAD COME TO KNOW ALSO MR. MORTIMER TREGENNIS AN INDEPENDENT GENTLEMAN WHO INCREASED THE CLERGYMAN'S SCANTY RESOURCES BY TAKING ROOMS IN HIS LARGE STRAGGLING HOUSE + THE VICAR BEING A BACHELOR WAS GLAD TO COME TO SUCH AN ARRANGEMENT THOUGH HE HAD LITTLE IN COMMON WITH HIS LODGER WHO WAS A THIN DARK SPECTACLED MAN WITH A STOOP WHICH GAVE THE IMPRESSION OF ACTUAL PHYSICAL DEFORMITY + I REMEMBER THAT DURING OUR SHORT VISIT WE FOUND THE VICAR GARRULOUS BUT HIS LODGER STRANGELY RETICENT A SAD FACED INTROSPECTIVE MAN SITTING WITH AVERTED EYES BROODING APPARENTLY UPON HIS OWN AFFAIRS + THESE WERE THE TWO MEN WHO ENTERED ABRUPTLY INTO OUR LITTLE SITTING ROOM ON TUESDAY MARCH THE SIXTEENTH SHORTLY AFTER OUR BREAKFAST HOUR AS WE WERE SMOKING TOGETHER PREPARATORY TO OUR DAILY EXCURSION UPON THE MOORS + MR. HOLMES SAID THE VICAR IN AN AGITATED VOICE THE MOST EXTRAORDINARY AND TRAGIC AFFAIR HAS OCCURRED DURING THE NIGHT + IT IS THE MOST UNHEARD OF BUSINESS + WE CAN ONLY REGARD IT AS A SPECIAL PROVIDENCE THAT YOU SHOULD CHANCE TO BE HERE AT THE TIME FOR IN ALL ENGLAND YOU ARE THE ONE MAN WE NEED + I GLARED AT THE INTRUSIVE VICAR WITH NO VERY FRIENDLY EYES BUT HOLMES TOOK HIS PIPE FROM HIS LIPS AND SAT UP IN HIS CHAIR LIKE AN OLD HOUND WHO HEARS THE VIEW HALLOA + HE WAVED HIS HAND TO THE SOFA AND OUR PALPITATING VISITOR WITH HIS AGITATED COMPANION SAT SIDE BY SIDE UPON IT + MR. MORTIMER TREGENNIS WAS MORE SELFCONTAINED THAN THE CLERGYMAN BUT THE TWITCHING OF HIS THIN HANDS AND THE BRIGHTNESS OF HIS DARK EYES SHOWED THAT THEY SHARED A COMMON EMOTION + SHALL I SPEAK OR YOU HE ASKED OF THE VICAR + WELL AS YOU SEEM TO HAVE MADE THE DISCOVERY WHATEVER IT MAY BE AND THE VICAR TO HAVE HAD IT SECOND HAND PERHAPS YOU HAD BETTER DO THE SPEAKING SAID HOLMES + I GLANCED AT THE HASTILY CLAD CLERGYMAN WITH THE FORMALLY DRESSED LODGER SEATED BESIDE HIM AND WAS AMUSED AT THE SURPRISE WHICH HOLMES'S SIMPLE DEDUCTION HAD BROUGHT TO THEIR FACES + PERHAPS I HAD BEST SAY A FEW WORDS FIRST SAID THE VICAR AND THEN YOU CAN JUDGE IF YOU WILL LISTEN TO THE DETAILS FROM MR. TREGENNIS OR WHETHER WE SHOULD NOT HASTEN AT ONCE TO THE SCENE OF THIS MYSTERIOUS AFFAIR + I MAY EXPLAIN THEN THAT OUR FRIEND HERE SPENT LAST EVENING IN THE COMPANY OF HIS TWO BROTHERS OWEN AND GEORGE AND OF HIS SISTER BRENDA AT THEIR HOUSE OF TREDANNICK WARTHA WHICH IS NEAR THE OLD STONE CROSS UPON THE MOOR + HE LEFT THEM SHORTLY AFTER TEN O'CLOCK PLAYING CARDS ROUND THE DINING ROOM TABLE IN EXCELLENT HEALTH AND SPIRITS + THIS MORNING BEING AN EARLY RISER HE WALKED IN THAT DIRECTION BEFORE BREAKFAST AND WAS OVERTAKEN BY THE CARRIAGE OF DOCTOR RICHARDS WHO EXPLAINED THAT HE HAD JUST BEEN SENT FOR ON A MOST URGENT CALL TO TREDANNICK WARTHA + MR. MORTIMER TREGENNIS NATURALLY WENT WITH HIM + WHEN HE ARRIVED AT TREDANNICK WARTHA HE FOUND AN EXTRAORDINARY STATE OF THINGS + HIS TWO BROTHERS AND HIS SISTER WERE SEATED ROUND THE TABLE EXACTLY AS HE HAD LEFT THEM THE CARDS STILL SPREAD IN FRONT OF THEM AND THE CANDLES BURNED DOWN TO THEIR SOCKETS + THE SISTER LAY BACK STONE DEAD IN HER CHAIR WHILE THE TWO BROTHERS SAT ON EACH SIDE OF HER LAUGHING SHOUTING AND SINGING THE SENSES STRICKEN CLEAN OUT OF THEM + ALL THREE OF THEM THE DEAD WOMAN AND THE TWO DEMENTED MEN RETAINED UPON THEIR FACES AN EXPRESSION OF THE UTMOST HORROR A CONVULSION OF TERROR WHICH WAS DREADFUL TO LOOK UPON + THERE WAS NO SIGN OF THE PRESENCE OF ANYONE IN THE HOUSE EXCEPT MRS. PORTER THE OLD COOK AND HOUSEKEEPER WHO DECLARED THAT SHE HAD SLEPT DEEPLY AND HEARD NO SOUND DURING THE NIGHT + NOTHING HAD BEEN STOLEN OR DISARRANGED AND THERE IS ABSOLUTELY NO EXPLANATION OF WHAT THE HORROR CAN BE WHICH HAS FRIGHTENED A WOMAN TO DEATH AND TWO STRONG MEN OUT OF THEIR SENSES + THERE IS THE SITUATION MR. HOLMES IN A NUTSHELL AND IF YOU CAN HELP US TO CLEAR IT UP YOU WILL HAVE DONE A GREAT WORK QUOTE + I HAD HOPED THAT IN SOME WAY I COULD COAX MY COMPANION BACK INTO THE QUIET WHICH HAD BEEN THE OBJECT OF OUR JOURNEY BUT ONE GLANCE AT HIS INTENSE FACE AND CONTRACTED EYEBROWS TOLD ME HOW VAIN WAS NOW THE EXPECTATION + HE SAT FOR SOME LITTLE TIME IN SILENCE ABSORBED IN THE STRANGE DRAMA WHICH HAD BROKEN IN UPON OUR PEACE + I WILL LOOK INTO THIS MATTER HE SAID AT LAST + ON THE FACE OF IT IT WOULD APPEAR TO BE A CASE OF A VERY EXCEPTIONAL NATURE + HAVE YOU BEEN THERE YOURSELF MR. ROUNDHAY + NO MR. HOLMES + MR. TREGENNIS BROUGHT BACK THE ACCOUNT TO THE VICARAGE AND I AT ONCE HURRIED OVER WITH HIM TO CONSULT YOU + QUOTE HOW FAR IS IT TO THE HOUSE WHERE THIS SINGULAR TRAGEDY OCCURRED QUOTE + ABOUT A MILE INLAND + THEN WE SHALL WALK OVER TOGETHER + BUT BEFORE WE START I MUST ASK YOU A FEW QUESTIONS MR. MORTIMER TREGENNIS + THE OTHER HAD BEEN SILENT ALL THIS TIME BUT I HAD OBSERVED THAT HIS MORE CONTROLLED EXCITEMENT WAS EVEN GREATER THAN THE OBTRUSIVE EMOTION OF THE CLERGYMAN + HE SAT WITH A PALE DRAWN FACE HIS ANXIOUS GAZE FIXED OPON HOLMES AND HIS THIN HANDS CLASPED CONVULSIVELY TOGETHER + HIS PALE LIPS QUIVERED AS HE LISTENED TO THE DREADFUL EXPERIENCE WHICH HAD BEFALLEN HIS FAMILY AND HIS DARK EYES SEEMED TO REFLECT SOMETHING OF THE HORROR OF THE SCENE + ASK WHAT YOU LIKE MR. HOLMES SAID HE EAGERLY + IT IS A BAD THING TO SPEAK OF BUT I WILL ANSWER YOU THE TRUTH + QUOTE TELL ME ABOUT LAST NIGHT QUOTE + WELL MR. HOLMES I SUPPED THERE AS THE VICAR HAS SAID AND MY ELDER BROTHER GEORGE PROPOSED A GAME OF WHIST AFTERWARDS + WE SAT DOWN ABOUT NINE O'CLOCK + IT WAS A QUARTER PAST TEN WHEN I MOVED TO GO + I LEFT THERN ALL ROUND THE TABLE AS MERRY AS COULD BE + WHO LET YOU OUT + MRS. PORTER HAD GONE TO BED SO I LET MYSELF OUT + I SHUT THE HALL DOOR BEHIND ME + THE WINDOW OF THE ROOM IN WHICH THEY SAT WAS CLOSED BUT THE BLIND WAS NOT DRAWN DOWN + THERE WAS NO CHANGE IN DOOR OR WINDOW THIS MORNING NOR ANY REASON TO THINK THAT ANY STRANGER HAD BEEN TO THE HOUSE + YET THERE THEY SAT DRIVEN CLEAN MAD WITH TERROR AND BRENDA LYING DEAD OF FRIGHT WITH HER HEAD HANGING OVER THE ARM OF THE CHAIR + I'LL NEVER GET THE SIGHT OF THAT ROOM OUT OF MY MIND SO LONG AS I LIVE + QUOTE THE FACTS AS YOU STATE THEM ARE CERTAINLY MOST REMARKABLE QUOTE SAID HOLMES + I TAKE IT THAT YOU HAVE NO THEORY YOURSELF WHICH CAN IN ANY WAY ACCOUNT FOR THEM + IT'S DEVILISH MR. HOLMES DEVILISH CRIED MORTIMER TREGENNIS + IT IS NOT OF THIS WORLD + SOMETHING HAS COME INTO THAT ROOM WHICH HAS DASHED THE LIGHT OF REASON FROM THEIR MINDS + WHAT HUMAN CONTRIVANCE COULD DO THAT + I FEAR SAID HOLMES SEVEN EIGHTHS THAT IF THE MATTER IS BEYOND HUMANITY IT IS CERTAINLY BEYOND ME + YET WE MUST EXHAUST ALL NATURAL EXPLANATIONS BEFORE WE FALL BACK UPON SUCH A THEORY AS THIS + AS TO YOURSELF MR. TREGENRLIS I TAKE IT YOU WERE DIVIDED IN SOME WAY FROM YOUR FAMILY SINCE THEY LIVED TOGETHER AND YOU HAD ROOMS APART QUOTE + THAT IS SO MR. HOLMES THOUGH THE MATTER IS PAST AND DONE WITH + WE WERE A FAMILY OF TIN MINERS AT REDRUTH BUT WE SOLD OUT OUR VENTURE TO A COMPANY AND SO RETIRED WITH ENOUGH TO KEEP US + I WON'T DENY THAT THERE WAS SOME FEELING ABOUT THE DIVISION OF THE MONEY AND IT STOOD BETWEEN US FOR A TIME BUT IT WAS ALL FORGIVEN AND FORGOTTEN AND WE WERE THE BEST OF FRIENDS TOGETHER + LOOKING BACK AT THE EVENING WHICH YOU SPENT TOGETHER DOES ANYTHING STAND OUT IN YOUR MEMORY AS THROWING ANY POSSIBLE LIGHT UPON THE TRAGEDY + THINK CAREFULLY MR. TREGENNIS FOR ANY CLUE WHICH CAN HELP ME + THERE IS NOTHING AT ALL SIR + QUOTE YOUR PEOPLE WERE IN THEIR USUAL SPIRITS QUOTE + NEVER BETTER + WERE THEY NERVOUS PEOPLE + DID THEY EVER SHOW ANY APPREHENSION OF COMING DANGER + NOTHING OF THE KIND + YOU HAVE NOTHING TO ADD THEN WHICH COULD ASSIST ME + MORTIMER TREGENNIS CONSIDERED EARNESTLY FOR A MOMENT + QUOTE THERE IS ONE THING OCCURS TO ME QUOTE SAID HE AT LAST + AS WE SAT AT THE TABLE MY BACK WAS TO THE WINDOW AND MY BROTHER GEORGE HE BEING MY PARTNER AT CARDS WAS FACING IT + I SAW HIM ONCE LOOK HARD OVER MY SHOULDER SO I TURNED ROUND AND LOOKED ALSO + THE BLIND WAS UP AND THE WINDOW SHUT BUT I COULD JUST MAKE OUT THE BUSHES ON THE LAWN AND IT SEEMED TO ME FOR A MOMENT THAT I SAW SOMETHING MOVING AMONG THEM + I COULDN'T EVEN SAY IF IT WAS MAN OR ANIMAL BUT I JUST THOUGHT THERE WAS SOMETHING THERE + WHEN I ASKED HIM WHAT HE WAS LOOKING AT HE TOLD ME THAT HE HAD THE SAME FEELING + THAT IS ALL THAT I CAN SAY + DID YOU NOT INVESTIGATE + NO THE MATTER PASSED AS UNIMPORTANT + YOU LEFT THEM THEN WITHOUT ANY PREMONITION OF EVIL + QUOTE NONE AT ALL QUOTE + I AM NOT CLEAR HOW YOU CAME TO HEAR THE NEWS SO EARLY THIS MORNING + I AM AN EARLY RISER AND GENERALLY TAKE A WALK BEFORE BREAKFAST + THIS MORNING I HAD HARDLY STARTED WHEN THE DOCTOR IN HIS CARRIAGE OVERTOOK ME + HE TOLD ME THAT OLD MRS. PORTER HAD SENT A BOY DOWN WITH AN URGENT MESSAGE + I SPRANG IN BESIDE HIM AND WE DROVE ON + WHEN WE GOT THERE WE LOOKED INTO THAT DREADFUL ROOM + THE CANDLES AND THE FIRE MUST HAVE BURNED OUT HOURS BEFORE AND THEY HAD BEEN SITTING THERE IN THE DARK UNTIL DAWN HAD BROKEN + THE DOCTOR SAID BRENDA MUST HAVE BEEN DEAD AT LEAST SIX HOURS + THERE WERE NO SIGNS OF VIOLENCE + SHE JUST LAY ACROSS THE ARM OF THE CHAIR WITH THAT LOOK ON HER FACE + GEORGE AND OWEN WERE SINGING SNATCHES OF SONGS AND GIBBERING LIKE TWO GREAT APES + OH IT WAS AWFUL TO SEE + I COULDN'T STAND IT AND THE DOCTOR WAS AS WHITE AS A SHEET + INDEED HE FELL INTO A CHAIR IN A SORT OF FAINT AND WE NEARLY HAD HIM ON OUR HANDS AS WELL + REMARKABLE MOST REMARKABLE SAID HOLMES RISING AND TAKING HIS HAT + I THINK PERHAPS WE HAD BETTER GO DOWN TO TREDANNICK WARTHA WITHOUT FURTHER DELAY + I CONFESS THAT I HAVE SELDOM KNOWN A CASE WHICH AT FIRST SIGHT PRESENTED A MORE SINGULAR PROBLEM QUOTE + OUR PROCEEDINGS OF THAT FIRST MORNING DID LITTLE TO ADVANCE THE INVESTIGATION + IT WAS MARKED HOWEVER AT THE OUTSET BY AN INCIDENT WHICH LEFT THE MOST SINISTER IMPRESSION UPON MY MIND + THE APPROACH TO THE SPOT AT WHICH THE TRAGEDY OCCURRED IS DOWN A NARROW WINDING COUNTRY LANE + WHILE WE MADE OUR WAY ALONG IT WE HEARD THE RAFFLE OF A CARRIAGE COMING TOWARDS US AND STOOD ASIDE TO LET IT PASS + AS IT DROVE BY US I CAUGHT A GLIMPSE THROUGH THE CLOSED WINDOW OF A HORRIBLY CONTORTED GRINNING FACE GLARING OUT AT US + THOSE STARING EYES AND GNASHING TEETH FLASHED PAST US LIKE A DREADFUL VISION + MY BROTHERS CRIED MORTIMER TREGENNIS WHITE TO HIS LIPS + THEY ARE TAKING THEM TO HELSTON + WE LOOKED WITH HORROR AFTER THE BLACK CARRIAGE LUMBERING UPON ITS WAY + THEN WE TURNED OUR STEPS TOWARDS THIS ILL OMENED HOUSE IN WHICH THEY HAD MET THEIR STRANGE FATE + IT WAS A LARGE AND BRIGHT DWELLING RATHER A VILLA THAN A COTTAGE WITH A CONSIDERABLE GARDEN WHICH WAS ALREADY IN THAT CORNISH AIR WELL FILLED WITH SPRING FLOWERS + TOWARDS THIS GARDEN THE WINDOW OF THE SITTING ROOM FRONTED AND FROM IT ACCORDING TO MORTIMER TREGENNIS MUST HAVE COME THAT THING OF EVIL WHICH HAD BY SHEER HORROR IN A SINGLE INSTANT BLASTED THEIR MINDS + HOLMES WALKED SLOWLY AND THOUGHTFULLY AMONG THE FLOWER PLOTS AND ALONG THE PATH BEFORE WE ENTERED THE PORCH + SO ABSORBED WAS HE IN HIS THOUGHTS I REMEMBER THAT HE STUMBLED OVER THE WATERING POT UPSET ITS CONTENTS AND DELUGED BOTH OUR FEET AND THE GARDEN PATH + INSIDE THE HOUSE WE WERE MET BY THE E. ONE D. E. R. L. Y. CORNISH HOUSEKEEPER MRS. PORTER WHO WITH THE AID OF A YOUNG GIRL LOOKED AFTER THE WANTS OF THE FAMILY + SHE READILY ANSWERED ALL HOLMES'S QUESTIONS + SHE HAD HEARD NOTHING IN THE NIGHT + HER EMPLOYERS HAD ALL BEEN IN EXCELLENT SPIRITS LATELY AND SHE HAD NEVER KNOWN THEM MORE CHEERFUL AND PROSPEROUS + SHE HAD FAINTED WITH HORROR UPON ENTERING THE ROOM IN THE MORNING AND SEEING THAT DREADFUL COMPANY ROUND THE TABLE + SHE HAD WHEN SHE RECOVERED THROWN OPEN THE WINDOW TO LET THE MORNING AIR IN AND HAD RUN DOWN TO THE LANE WHENCE SHE SENT A FARM LAD FOR THE DOCTOR + THE LADY WAS ON HER BED UPSTAIRS IF WE CARED TO SEE HER + IT TOOK FOUR STRONG MEN TO GET THE BROTHERS INTO THE ASYLUM CARRIAGE + SHE WOULD NOT HERSELF STAY IN THE HOUSE ANOTHER DAY AND WAS STARTING THAT VERY AFTERNOON TO REJOIN HER FAMILY AT SAINT IVES + WE ASCENDED THE STAIRS AND VIEWED THE BODY + MISS BRENDA TREGENNIS HAD BEEN A VERY BEAUTIFUL GIRL THOUGH NOW VERGING UPON MIDDLE AGE + HER DARK CLEAR CUT FACE WAS HANDSOME EVEN IN DEATH BUT THERE STILL LINGERED UPON IT SOMETHING OF THAT CONVULSION OF HORROR WHICH HAD BEEN HER LAST HUMAN EMOTION + FROM HER BEDROOM WE DESCENDED TO THE SITTING ROOM WHERE THIS STRANGE TRAGEDY HAD ACTUALLY OCCURRED + THE CHARRED ASHES OF THE OVERNIGHT FIRE LAY IN THE GRATE + ON THE TABLE WERE THE FOUR GUTTERED AND BURNED OUT CANDLES WITH THE CARDS SCATTERED OVER ITS SURFACE + THE CHAIRS HAD BEEN MOVED BACK AGAINST THE WALLS BUT ALL ELSE WAS AS IT HAD BEEN THE NIGHT BEFORE + HOLMES PACED WITH LIGHT SWIFT STEPS ABOUT THE ROOM HE SAT IN THE VARIOUS CHAIRS DRAWING THEM UP AND RECONSTRUCTING THEIR POSITIONS + HE TESTED HOW MUCH OF THE GARDEN WAS VISIBLE HE EXAMINED THE FLOOR THE CEILING AND THE FIREPLACE BUT NEVER ONCE DID I SEE THAT SUDDEN BRIGHTENING OF HIS EYES AND TIGHTENING OF HIS LIPS WHICH WOULD HAVE TOLD ME THAT HE SAW SOME GLEAM OF LIGHT IN THIS UTTER DARKNESS + WHY A FIRE HE ASKED ONCE + HAD THEY ALWAYS A FIRE IN THIS SMALL ROOM ON A SPRING EVENING + MORTIMER TREGENNIS EXPLAINED THAT THE NIGHT WAS COLD AND DAMP + FOR THAT REASON AFTER HIS ARRIVAL THE FIRE WAS LIT + WHAT ARE YOU GOING TO DO NOW MR. HOLMES HE ASKED + MY FRIEND SMILED AND LAID HIS HAND UPON MY ARM + QUOTE I THINK WATSON THAT I SHALL RESUME THAT COURSE OF TOBACCO POISONING WHICH YOU HAVE SO OFTEN AND SO JUSTLY CONDEMNED QUOTE SAID HE + WITH YOUR PERMISSION GENTLEMEN WE WILL NOW RETURN TO OUR COTTAGE FOR I AM NOT AWARE THAT ANY NEW FACTOR IS LIKELY TO COME TO OUR NOTICE HERE + I WILL TURN THE FACTS OVER IN MY MIND MR. TREGENNIS AND SHOULD ANYTHING OCCUR TO ME I WILL CERTAINLY COMMUNICATE WITH YOU AND THE VICAR + IN THE MEANTIME I WISH YOU BOTH GOOD MORNING + IT WAS NOT UNTIL LONG AFTER WE WERE BACK IN POLDHU COTTAGE THAT HOLMES BROKE HIS COMPLETE AND ABSORBED SILENCE + HE SAT COILED IN HIS ARMCHAIR HIS HAGGARD AND ASCETIC FACE HARDLY VISIBLE AMID THE BLUE SWIRL OF HIS TOBACCO SMOKE HIS BLACK BROWS DRAWN DOWN HIS FOREHEAD CONTRACTED HIS EYES VACANT AND FAR AWAY + FINALLY HE LAID DOWN HIS PIPE AND SPRANG TO HIS FEET + IT WON'T DO WATSON SAID HE WITH A LAUGH + LET US WALK ALONG THE CLIFFS TOGETHER AND SEARCH FOR FLINT ARROWS + WE ARE MORE LIKELY TO FIND THEM THAN CLUES TO THIS PROBLEM + TO LET THE BRAIN WORK WITHOUT SUFFICIENT MATERIAL IS LIKE RACING AN ENGINE + IT RACKS ITSELF TO PIECES + THE SEA AIR SUNSHINE AND PATIENCE WATSON ALL ELSE WILL COME + NOW LET US CALMLY DEFINE OUR POSITION WATSON HE CONTINUED AS WE SKIRTED THE CLIFFS TOGETHER + QUOTE LET US GET A FIRM GRIP OF THE VERY LITTLE WHICH WE DO KNOW SO THAT WHEN FRESH FACTS ARISE WE MAY BE READY TO FIT THEM INTO THEIR PLACES + I TAKE IT IN THE FIRST PLACE THAT NEITHER OF US IS PREPARED TO ADMIT DIABOLICAL INTRUSIONS INTO THE AFFAIRS OF MEN + LET US BEGIN BY RULING THAT ENTIRELY OUT OF OUR MINDS + VERY GOOD + THERE REMAIN THREE PERSONS WHO HAVE BEEN GRIEVOUSLY STRICKEN BY SOME CONSCIOUS OR UNCONSCIOUS HUMAN AGENCY + THAT IS FIRM GROUND + NOW WHEN DID THIS OCCUR + EVIDENTLY ASSUMING HIS NARRATIVE TO BE TRUE IT WAS IMMEDIATELY AFTER MR. MORTIMER TREGENNIS HAD LEFT THE ROOM + THAT IS A VERY IMPORTANT POINT + THE PRESUMPTION IS THAT IT WAS WITHIN A FEW MINUTES AFTERWARDS + THE CARDS STILL LAY UPON THE TABLE + IT WAS ALREADY PAST THEIR USUAL HOUR FOR BED + YET THEY HAD NOT CHANGED THEIR POSITION OR PUSHED BACK THEIR CHAIRS + I REPEAT THEN THAT THE OCCURRENCE WAS IMMEDIATELY AFTER HIS DEPARTURE AND NOT LATER THAN ELEVEN O'CLOCK LAST NIGHT + OUR NEXT OBVIOUS STEP IS TO CHECK SO FAR AS WE CAN THE MOVEMENTS OF MORTIMER TREGENNIS AFTER HE LEFT THE ROOM + IN THIS THERE IS NO DIFFICULTY AND THEY SEEM TO BE ABOVE SUSPICION + KNOWING MY METHODS AS YOU DO YOU WERE OF COURSE CONSCIOUS OF THE SOMEWHAT CLUMSY WATER POT EXPEDIENT BY WHICH I OBTAINED A CLEARER IMPRESS OF HIS FOOT THAN MIGHT OTHERWISE HAVE BEEN POSSIBLE + THE WET SANDY PATH TOOK IT ADMIRABLY + LAST NIGHT WAS ALSO WET YOU WILL REMEMBER AND IT WAS NOT DIFFICULT HAVING OBTAINED A SAMPLE PRINT TO PICK OUT HIS TRACK AMONG OTHERS AND TO FOLLOW HIS MOVEMENTS + HE APPEARS TO HAVE WALKED AWAY SWIFTLY IN THE DIRECTION OF THE VICARAGE + IF THEN MORTIMER TREGENNIS DISAPPEARED FROM THE SCENE AND YET SOME OUTSIDE PERSON AFFECTED THE CARDPLAYERS HOW CAN WE RECONSTRUCT THAT PERSON AND HOW WAS SUCH AN IMPRESSION OF HORROR CONVEYED + MRS. PORTER MAY BE ELIMINATED + SHE IS EVIDENTLY HARMLESS + IS THERE ANY EVIDENCE THAT SOMEONE CREPT UP TO THE GARDEN WINDOW AND IN SOME MANNER PRODUCED SO TERRIFIC AN EFFECT THAT HE DROVE THOSE WHO SAW IT OUT OF THEIR SENSES + THE ONLY SUGGESTION IN THIS DIRECTION COMES FROM MORTIMER TREGENNIS HIMSELF WHO SAYS THAT HIS BROTHER SPOKE ABOUT SOME MOVEMENT IN THE GARDEN + THAT IS CERTAINLY REMARKABLE AS THE NIGHT WAS RAINY CLOUDY AND DARK + ANYONE WHO HAD THE DESIGN TO ALARM THESE PEOPLE WOULD BE COMPELLED TO PLACE HIS VERY FACE AGAINST THE GLASS BEFORE HE COULD BE SEEN + THERE IS A THREE FOOT FLOWERBORDER OUTSIDE THIS WINDOW BUT NO INDICATION OF A FOOTMARK + IT IS DIFFICULT TO IMAGINE THEN HOW AN OUTSIDER COULD HAVE MADE SO TERRIBLE AN IMPRESSION UPON THE COMPANY NOR HAVE WE FOUND ANY POSSIBLE MOTIVE FOR SO STRANGE AND ELABORATE AN ATTEMPT + YOU PERCEIVE OUR DIFFICULTIES WATSON + THEY ARE ONLY TOO CLEAR I ANSWERED WITH CONVICTION + AND YET WITH A LITTLE MORE MATERIAL WE MAY PROVE THAT THEY ARE NOT INSURMOUNTABLE SAID HOLRNES + QUOTE I FANCY THAT AMONG YOUR EXTENSIVE ARCHIVES WATSON YOU MAY FIND SOME WHICH WERE NEARLY AS OBSCURE + MEANWHILE WE SHALL PUT THE CASE ASIDE UNTIL MORE ACCURATE DATA ARE AVAILABLE AND DEVOTE THE REST OF OUR MORNING TO THE PURSUIT OF NEOLITHIC MAN + I MAY HAVE COMMENTED UPON MY FRIEND'S POWER OF MENTAL DETACHMENT BUT NEVER HAVE I WONDERED AT IT MORE THAN UPON THAT SPRING MORNING IN CORNWALL WHEN FOR TWO HOURS HE DISCOURSED UPON CELTS ARROWHEADS AND SHARDS AS LIGHTLY AS IF NO SINISTER MYSTERY WERE WAITING FOR HIS SOLUTION + IT WAS NOT UNTIL WE HAD RETURNED IN THE AFTERNOON TO OUR COTTLGE THAT WE FOUND A VISITOR AWAITING US WHO SOON BROUGHT OUR MINDS BACK TO THE MATTER IN HAND + NEITHER OF US NEEDED TO BE TOLD WHO THAT VISITOR WAS + THE HUGE BODY THE CRAGGY AND DEEPLY SEAMED FACE WITH THE FIERCE EYES AND HAWK LIKE NOSE THE GRIZZLED HAIR WHICH NEARLY BRUSHED OUR COTTAGE CEILING THE BEARD GOLDEN AT THE FRINGES AND WHITE NEAR THE LIPS SAVE FOR THE NICOTIN STAIN FROM HIS PERPETUAL CIGAR ALL THESE WERE AS WELL KNOWN IN LONDON AS IN AFRICA AND COULD ONLY BE ASSOCIATED WITH THE TREMENDOUS PERSONALITY OF DOCTOR LEON STERNDALE THE GREAT LION HUNTER AND EXPLORER + WE HAD HEARD OF HIS PRESENCE IN THE DISTRICT AND HAD ONCE OR TWICE CAUGHT SIGHT OF HIS TALL FIGURE UPON THE MOORLAND PATHS + HE MADE NO ADVANCES TO US HOWEVER NOR WOULD WE HAVE DREAMED OF DOING SO TO HIM AS IT WAS WELL KNOWN THAT IT WAS HIS LOVE OF SECLUSION WHICH CAUSED HIM TO SPEND THE GREATER PART OF THE INTERVALS BETWEEN HIS JOURNEYS IN A SMALL BUNGALOW BURIED IN THE LONELY WOOD OF BEAUCHAMP ARRIANCE + HERE AMID HIS BOOKS AND HIS MAPS HE LIVED AN ABSOLUTELY LONELY LIFE ATTENDING TO HIS OWN SIMPLE WANTS AND PAYING LITTLE APPARENT HEED TO THE AFFAIRS OF HIS NEIGHBOURS + IT WAS A SURPRISE TO ME THEREFORE TO HEAR HIM ASKING HOLMES IN AN EAGER VOICE WHETHER HE HAD MADE ANY ADVANCE IN HIS RECONSTRUCTION OF THIS MYSTERIOUS EPISODE + THE COUNTY POLICE ARE UTTERLY AT FAULT SAID HE BUT PERHAPS YOUR WIDER EXPERIENCE HAS SUGGESTED SOME CONCEIVABLE EXPLANATION + MY ONLY CLAIM TO BEING TAKEN INTO YOUR CONFIDENCE IS THAT DURING MY MANY RESIDENCES HERE I HAVE COME TO KNOW THIS FAMILY OF TREGENNIS VERY WELL INDEED UPON MY CORNISH MOTHER'S SIDE I COULD CALL THEM COUSINS AND THEIR STRANGE FATE HAS NATURALLY BEEN A GREAT SHOCK TO ME + I MAY TELL YOU THAT I HAD GOT AS FAR AS PLYMOUTH UPON MY WAY TO AFRICA BUT THE NEWS REACHED ME THIS MORNING AND I CAME STRAIGHT BACK AGAIN TO HELP IN THE INQUIRY + HOLMES RAISED HIS EYEBROWS + DID YOU LOSE YOUR BOAT THROUGH IT + I WILL TAKE THE NEXT + QUOTE DEAR ME THAT IS FRIENDSHIP INDEED QUOTE + I TELL YOU THEY WERE RELATIVES + QUITE SO COUSINS OF YOUR MOTHER + WAS YOUR BAGGAGE ABOARD THE SHIP + SOME OF IT BUT THE MAIN PART AT THE HOTEL + I SEE + BUT SURELY THIS EVENT COULD NOT HAVE FOUND ITS WAY INTO THE PLYMOUTH MORNING PAPERS QUOTE + NO SIR I HAD A TELEGRAM + MIGHT I ASK FROM WHOM + A SHADOW PASSED OVER THE GAUNT FACE OF THE EXPLORER + YOU ARE VERY INQUISITIVE MR. HOLMES + IT IS MY BUSINESS + WITH AN EFFORT DOCTOR STERNDALE RECOVERED HIS RUFFLED COMPOSURE + I HAVE NO OBJECTION TO TELLING YOU HE SAID + QUOTE IT WAS MR. ROUNDHAY THE VICAR WHO SENT ME THE TELEGRAM WHICH RECALLED ME QUOTE + THANK YOU SAID HOLMES + I MAY SAY IN ANSWER TO YOUR ORIGINAL QUESTION THAT I HAVE NOT CLEARED MY MIND ENTIRELY ON THE SUBJECT OF THIS CASE BUT THAT I HAVE EVERY HOPE OF REACHING SOME CONCLUSION + IT WOULD BE PREMATURE TO SAY MORE + PERHAPS YOU WOULD NOT MIND TELLING ME IF YOUR SUSPICIONS POINT IN ANY PARTICULAR DIRECTION + NO I CAN HARDLY ANSWER THAT + QUOTE THEN I HAVE WASTED MY TIME AND NEED NOT PROLONG MY VISIT QUOTE + THE FAMOUS DOCTOR STRODE OUT OF OUR COTTAGE IN CONSIDERABLE ILL HUMOUR AND WITHIN FIVE MINUTES HOLMES HAD FOLLOWED HIM + I SAW HIM NO MORE UNTIL THE EVENING WHEN HE RETURNED WITH A SLOW STEP AND HAGGARD FACE WHICH ASSURED ME THAT HE HAD MADE NO GREAT PROGRESS WITH HIS INVESTIGATION + HE GLANCED AT A TELEGRAM WHICH AWAITED HIM AND THREW IT INTO THE GRATE + FROM THE PLYMOUTH HOTEL WATSON HE SAID + I LEARNED THE NAME OF IT FROM THE VICAR AND I WIRED TO MAKE CERTAIN THAT DOCTOR LEON STEMDALE'S ACCOUNT WAS TRUE + IT APPEARS THAT HE DID INDEED SPEND LAST NIGHT THERE AND THAT HE HAS ACTUALLY ALLOWED SOME OF HIS BAGGAGE TO GO ON TO AFRICA WHILE HE RETURNED TO BE PRESENT AT THIS INVESTIGATION + WHAT DO YOU MAKE OF THAT WATSON + HE IS DEEPLY INTERESTED + DEEPLY INTERESTED YES + THERE IS A THREAD HERE WHICH WE HAVE NOT YET GRASPED AND WHICH MIGHT LEAD US THROUGH THE TANGLE + CHEER UP WATSON FOR I AM VERY SURE THAT OUR MATERIAL HAS NOT YET ALL COME TO HAND + WHEN IT DOES WE MAY SOON LEAVE OUR DIFFICULTIES BEHIND US QUOTE + LITTLE DID I THINK HOW SOON THE WORDS OF HOLMES WOULD BE REALIZED OR HOW STRANGE AND SINISTER WOULD BE THAT NEW DEVELOPMENT WHICH OPENED UP AN ENTIRELY FRESH LINE OF INVESTIGATION + I WAS SHAVING AT MY WINDOW IN THE MORNING WHEN I HEARD THE RATTLE OF HOOFS AND LOOKING UP SAW A DOG CART COMING AT A GALLOP DOWN THE ROAD + IT PULLED UP AT OUR DOOR AND OUR FRIEND THE VICAR SPRANG FROM IT AND RUSHED UP OUR GARDEN PATH + HOLMES WAS ALREADY DRESSED AND WE HASTENED DOWN TO MEET HIM + OUR VISITOR WAS SO EXCITED THAT HE COULD HARDLY ARTICULATE BUT AT LAST IN GASPS AND BURSTS HIS TRAGIC STORY CAME OUT OF HIM + WE ARE DEVIL RIDDEN MR. HOLMES + MY POOR PARISH IS DEVILRIDDEN HE CRIED + SATAN HIMSELF IS LOOSE IN IT + WE ARE GIVEN OVER INTO HIS HANDS + HE DANCED ABOUT IN HIS AGITATION A LUDICROUS OBJECT IF IT WERE NOT FOR HIS ASHY FACE AND STARTLED EYES + FINALLY HE SHOT OUT HIS TERRIBLE NEWS + MR. MORTIMER TREGENNIS DIED DURING THE NIGHT AND WITH EXACTLY THE SAME SYMPTOMS AS THE REST OF HIS FAMILY + HOLMES SPRANG TO HIS FEET ALL ENERGY IN AN INSTANT + QUOTE CAN YOU FIT US BOTH INTO YOUR DOG CART QUOTE + YES I CAN + THEN WATSON WE WILL POSTPONE OUR BREAKFAST + MR. ROUNDHAY WE ARE ENTIRELY AT YOUR DISPOSAL + HURRY HURRY BEFORE THINGS GET DISARRANGED + THE LODGER OCCUPIED TWO ROOMS AT THE VICARAGE WHICH WERE IN AN ANGLE BY THEMSELVES THE ONE ABOVE THE OTHER + BELOW WAS A LARGE SITTING ROOM ABOVE HIS BEDROOM + THEY LOOKED OUT UPON A CROQUET LAWN WHICH CAME UP TO THE WINDOWS + WE HAD ARRIVED BEFORE THE DOCTOR OR THE POLICE SO THAT EVERYTHING WAS ABSOLUTELY UNDISTURBED + LET ME DESCRIBE EXACTLY THE SCENE AS WE SAW IT UPON THAT MISTY MARCH MORNING + IT HAS LEFT AN IMPRESSION WHICH CAN NEVER BE EFFACED FROM MY MIND + THE ATMOSPHERE OF THE ROOM WAS OF A HORRIBLE AND DEPRESSING STUFFINESS + THE SERVANT WHO HAD FIRST ENTERED HAD THROWN UP THE WINDOW OR IT WOULD HAVE BEEN EVEN MORE INTOLERABLE + THIS MIGHT PARTLY BE DUE TO THE FACT THAT A LAMP STOOD FLARING AND SMOKING ON THE CENTRE TABLE + BESIDE IT SAT THE DEAD MAN LEANING BACK IN HIS CHAIR HIS THIN BEARD PROJECTING HIS SPECTACLES PUSHED UP ON TO HIS FOREHEAD AND HIS LEAN DARK FACE TURNED TOWARDS THE WINDOW AND TWISTED INTO THE SAME DISTORTION OF TERROR WHICH HAD MARKED THE FEATURES OF HIS DEAD SISTER + HIS LIMBS WERE CONVULSED AND HIS FINGERS CONTORTED AS THOUGH HE HAD DIED IN A VERY PAROXYSM OF FEAR + HE WAS FULLY CLOTHED THOUGH THERE WERE SIGNS THAT HIS DRESSING HAD BEEN DONE IN A HURRY + WE HAD ALREADY LEARNED THAT HIS BED HAD BEEN SLEPT IN AND THAT THE TRAGIC END HAD COME TO HIM IN THE EARLY MORNING + ONE REALIZED THE RED HOT ENERGY WHICH UNDERLAY HOLMES'S PHLEGMATIC EXTERIOR WHEN ONE SAW THE SUDDEN CHANGE WHICH CAME OVER HIM FROM THE MOMENT THAT HE ENTERED THE FATAL APARTMENT + IN AN INSTANT HE WAS TENSE AND ALERT HIS EYES SHINING HIS FACE SET HIS LIMBS QUIVERING WITH EAGER ACTIVITY + HE WAS OUT ON THE LAWN IN THROUGH THE WINDOW ROUND THE ROOM AND UP INTO THE BEDROOM FOR ALL THE WORLD LIKE A DASHING FOXHOUND DRAWING A COVER + IN THE BEDROOM HE MADE A RAPID CAST AROUND AND ENDED BY THROWING OPEN THE WINDOW WHICH APPEARED TO GIVE HIM SOME FRESH CAUSE FOR EXCITEMENT FOR HE LEANED OUT OF IT WITH LOUD EJACULATIONS OF INTEREST AND DELIGHT + THEN HE RUSHED DOWN THE STAIR OUT THROUGH THE OPEN WINDOW THREW HIMSELF UPON HIS FACE ON THE LAWN SPRANG UP AND INTO THE ROOM ONCE MORE ALL WITH THE ENERGY OF THE HUNTER WHO IS AT THE VERY HEELS OF HIS QUARRY + THE LAMP WHICH WAS AN ORDINALY STANDARD HE EXAMINED WITH MINUTE CARE MAKING CERTAIN MEASUREMENTS UPON ITS BOWL + HE CAREFULLY SCRUTINIZED WITH HIS LENS THE TALE SHIELD WHICH COVERED THE TOP OF THE CHIMNEY AND SCRAPED OFF SOME ASHES WHICH ADHERED TO ITS UPPER SURFACE PUTTING SOME OF THEM INTO AN ENVELOPE WHICH HE PLACED IN HIS POCKETBOOK + FINALLY JUST AS THE DOCTOR AND THE OFFICIAL POLICE PUT IN AN APPEARANCE HE BECKONED TO THE VICAR AND WE ALL THREE WENT OUT UPON THE LAWN + I AM GLAD TO SAY THAT MY INVESTIGATION HAS NOT BEEN ENTIRELY BARREN HE REMARKED + I CANNOT REMAIN TO DISCUSS THE MATTER WITH THE POLICE BUT I SHOULD BE EXCEEDINGLY OBLIGED MR. ROUNDHAY IF YOU WOULD GIVE THE INSPECTOR MY COMPLIMENTS AND DIRECT HIS ATTENTION TO THE BEDROOM WINDOW AND TO THE SITTINGROOM LAMP + EACH IS SUGGESTIVE AND TOGETHER THEY ARE ALMOST CONCLUSIVE + IF THE POLICE WOULD DESIRE FURTHER INFORMATION I SHALL BE HAPPY TO SEE ANY OF THEM AT THE CONAGE + AND NOW WATSON I THINK THAT PERHAPS WE SHALL BE BETTER EMPLOYED ELSEWHERE QUOTE + IT MAY BE THAT THE POLICE RESENTED THE INTRUSION OF AN AMATEUR OR THAT THEY IMAGINED THEMSELVES TO BE UPON SOME HOPEFUL LINE OF INVESTIGATION BUT IT IS CERTAIN THAT WE HEARD NOTHING FROM THEM FOR THE NEXT TWO DAYS + DURING THIS TIME HOLMES SPENT SOME OF HIS TIME SMOKING AND DREAMING IN THE COTTAGE BUT A GREATER PORTION IN COUNTRY WALKS WHICH HE UNDERTOOK ALONE RETURNING AFTER MANY HOURS WITHOUT REMARK AS TO WHERE HE HAD BEEN + ONE EXPERIMENT SERVED TO SHOW ME THE LINE OF HIS INVESTIGATION + HE HAD BOUGHT A LAMP WHICH WAS THE DUPLICATE OF THE ONE WHICH HAD BURNED IN THE ROOM OF MORTIMER TREGENNIS ON THE MORNING OF THE TRAGEDY + THIS HE FILLED WITH THE SAME OIL AS THAT USED AT THE VICARAGE AND HE CAREFULLY TIMED THE PERIOD WHICH IT WOULD TAKE TO BE EXHAUSTED + ANOTHER EXPERIMENT WHICH HE MADE WAS OF A MORE UNPLEASANT NATURE AND ONE WHICH I AM NOT LIKELY EVER TO FORGET + YOU WILL REMEMBER WATSON HE REMARKED ONE AFTERNOON THAT THERE IS A SINGLE COMMON POINT OF RESEMBLANCE IN THE VARYING REPORTS WHICH HAVE REACHED US + THIS CONCERNS THE EFFECT OF THE ATMOSPHERE OF THE ROOM IN EACH CASE UPON THOSE WHO HAD FIRST ENTERED IT + YOU WILL RECOLLECT THAT MORTIMER TREGENNIS IN DESCRIBING THE EPISODE OF HIS LAST VISIT TO HIS BROTHER'S HOUSE REMARKED THAT THE DOCTOR ON ENTERING THE ROOM FELL INTO A CHAIR + YOU HAD FORGOTTEN + WELL I CAN ANSWER FOR IT THAT IT WAS SO + NOW YOU WILL REMEMBER ALSO THAT MRS. PORTER THE HOUSEKEEPER TOLD US THAT SHE HERSELF FAINTED UPON ENTERING THE ROOM AND HAD AFTERWARDS OPENED THE WINDOW + IN THE SECOND CASE THAT OF MORTIMER TREGENNIS HIMSELF YOU CANNOT HAVE FORGOTTEN THE HORRIBLE STUFFINESS OF THE ROOM WHEN WE ARRIVED THOUGH THE SERVANT HAD THROWN OPEN THE WINDOW + THAT SERVANT I FOUND UPON INQUIRY WAS SO ILL THAT SHE HAD GONE TO HER BED + YOU WILL ADMIT WATSON THAT THESE FACTS ARE VERY SUGGESTIVE + IN EACH CASE THERE IS EVIDENCE OF A POISONOUS ATMOSPHERE + IN EACH CASE ALSO THERE IS COMBUSTION GOING ON IN THE ROOM IN THE ONE CASE A FIRE IN THE OTHER A LAMP + THE FIRE WAS NEEDED BUT THE LAMP WAS LIT AS A COMPARISON OF THE OIL CONSUMED WILL SHOW LONG AFTER IT WAS BROAD DAYLIGHT + WHY + SURELY BECAUSE THERE IS SOME CONNECTION BETWEEN THREE THINGS THE BURNING THE STUFFY ATMOSPHERE AND FINALLY THE MADNESS OR DEATH OF THOSE UNFORTUNATE PEOPLE + THAT IS CLEAR IS IT NOT + IT WOULD APPEAR SO + AT LEAST WE MAY ACCEPT IT AS A WORKING HYPOTHESIS + WE WILL SUPPOSE THEN THAT SOMETHING WAS BURNED IN EACH CASE WHICH PRODUCED AN ATMOSPHERE CAUSING STRANGE TOXIC EFFECTS + VERY GOOD + IN THE FIRST INSTANCE THAT OF THE TREGENNIS FAMILY THIS SUBSTANCE WAS PLACED IN THE FIRE + NOW THE WINDOW WAS SHUT BUT THE FIRE WOULD NATURALLY CARRY FUMES TO SOME EXTENT UP THE CHIMNEY + HENCE ONE WOULD EXPECT THE EFFECTS OF THE POISON TO BE LESS THAN IN THE SECOND CASE WHERE THERE WAS LESS ESCAPE FOR THE VAPOUR + THE RESULT SEEMS TO INDICATE THAT IT WAS SO SINCE IN THE FIRST CASE ONLY THE WOMAN WHO HAD PRESUMABLY THE MORE SENSITIVE ORGANISM WAS KILLED THE OTHERS EXHIBITING THAT TEMPORARY OR PERMANENT LUNACY WHICH IS EVIDENTLY THE FIRST EFFECT OF THE DRUG + IN THE SECOND CASE THE RESULT WAS COMPLETE + THE FACTS THEREFORE SEEM TO BEAR OUT THE THEORY OF A POISON WHICH WORKED BY COMBUSTION + WITH THIS TRAIN OF REASONING IN MY HEAD I NATURALLY LOOKED ABOUT IN MORTIMER TREGENNIS'S ROOM TO FIND SOME REMAINS OF THIS SUBSTANCE + THE OBVIOUS PLACE TO LOOK WAS THE TALC SHIELD OR SMOKE GUARD OF THE LAMP + THERE SURE ENOUGH I PERCEIVED A NUMBER OF FLAKY ASHES AND ROUND THE EDGES A FRINGE OF BROWNISH POWDER WHICH HAD NOT YET BEEN CONSUMED + HALF OF THIS I TOOK AS YOU SAW AND I PLACED IT IN AN ENVELOPE QUOTE + WHY HALF HOLMES + IT IS NOT FOR ME MY DEAR WATSON TO STAND IN THE WAY OF THE OFFICIAL POLICE FORCE + I LEAVE THEM ALL THE EVIDENCE WHICH I FOUND + THE POISON STILL REMAINED UPON THE TALC HAD THEY THE WIT TO FIND IT + NOW WATSON WE WILL LIGHT OUR LAMP WE WILL HOWEVER TAKE THE PRECAUTION TO OPEN OUR WINDOW TO AVOID THE PREMATURE DECEASE OF TWO DESERVING MEMBERS OF SOCIETY AND YOU WILL SEAT YOURSELF NEAR THAT OPEN WINDOW IN AN ARMCHAIR UNLESS LIKE A SENSIBLE MAN YOU DETERMINE TO HAVE NOTHING TO DO WITH THE AFFAIR + OH YOU WILL SEE IT OUT WILL YOU + I THOUGHT I KNEW MY WATSON + THIS CHAIR I WILL PLACE OPPOSITE YOURS SO THAT WE MAY BE THE SAME DISTANCE FROM THE POISON AND FACE TO FACE + THE DOOR WE WILL LEAVE AJAR + EACH IS NOW IN A POSITION TO WATCH THE OTHER AND TO BRING THE EXPERIMENT TO AN END SHOULD THE SYMPTOMS SEEM ALARMING + IS THAT ALL CLEAR + WELL THEN I TAKE OUR POWDER OR WHAT REMAINS OF IT FROM THE ENVELOPE AND I LAY IT ABOVE THE BURNING LAMP + SO + NOW WATSON LET US SIT DOWN AND AWAIT DEVELOPMENTS + THEY WERE NOT LONG IN COMING + I HAD HARDLV SETTLED IN MY CHAIR BEFORE I WAS CONSCIOUS OF A THICK MUSKY ODOUR SUBTLE AND NAUSEOUS + AT THE VERY FIRST WHIFF OF IT MY BRAIN AND MY IMAGINATION WERE BEYOND ALL CONTROL + A THICK BLACK CLOUD SWIRLED BEFORE MY EYES AND MY MIND TOLD ME THAT IN THIS CLOUD UNSEEN AS YET BUT ABOUT TO SPRING OUT UPON MY APPALLED SENSES LURKED ALL THAT WAS VAGUELY HORRIBLE ALL THAT WAS MONSTROUS AND INCONCEIVABLY WICKED IN THE UNIVERSE + VAGUE SHAPES SWIRLED AND SWAM AMID THE DARK CLOUD BANK EACH A MENACE AND A WARNING OF SOMETHING COMING THE ADVENT OF SOME UNSPEAKABLE DWELLER UPON THE THRESHOLD WHOSE VERY SHADOW WOULD BLAST MY SOUL + A FREEZING HORROR TOOK POSSESSION OF ME + I FELT THAT MY HAIR WAS RISING THAT MY EYES WERE PROTRUDING THAT MY MOUTH WAG OPENED AND MY TONGUE LIKE LEATHER + THE TURMOIL WITHIN MY BRAIN WAS SUCH THAT SOMETHING MUST SURELY SNAP + I TRIED TO SCREAM AND WAS VAGUELY AWARE OF SOME HOARSE CROAK WHICH WAS MY OWN VOICE BUT DISTANT AND DETACHED FROM MYSELF + AT THE SAME MOMENT IN SOME EFFORT OF ESCAPE I BROKE THROUGH THAT CLOUD OF DESPAIR AND HAD A GLIMPSE OF HOLMES'S FACE WHITE RIGID AND DRAWN WITH HORROR THE VERY LOOK WHICH I HAD SEEN UPON THE FEATURES OF THE DEAD + IT WAS THAT VISION WHICH GAVE ME AN INSTANT OF SANITY AND OF STRENGTH + I DASHED FROM MY CHAIR THREW MY ARMS ROUND HOLMES AND TOGETHER WE LURCHED THROUGH THE DOOR AND AN INSTANT AFTERWARDS HAD THROWN OURSELVES DOWN UPON THE GRASS PLOT AND WERE LYING SIDE BY SIDE CONSCIOUS ONLY OF THE GLORIOUS SUNSHINE WHICH WAS BURSTING ITS WAY THROUGH THE HELLISH CLOUD OF TERROR WHICH HAD GIRT US IN + SLOWLY IT ROSE FROM OUR SOULS LIKE THE MISTS FROM A LANDSCAPE UNTIL PEACE AND REASON HAD RETURNED AND WE WERE SITTING UPON THE GRASS WIPING OUR CLAMMY FOREHEADS AND LOOKING WITH APPREHENSION AT EACH OTHER TO MARK THE LAST TRACES OF THAT TERRIFIC EXPERIENCE WHICH WE HAD UNDERGONE + UPON MY WORD WATSON SAID HOLMES AT LAST WITH AN UNSTEADY VOICE I OWE YOU BOTH MY THANKS AND AN APOLOGY + IT WAS AN UNJUSTIFIABLE EXPERIMENT EVEN FOR ONE'S SELF AND DOUBLY SO FOR A FRIEND + I AM REALLY VERY SORRY + QUOTE YOU KNOW QUOTE I ANSWERED WITH SOME EMOTION FOR I HAD NEVER SEEN SO MUCH OF HOLMES'S HEART BEFORE QUOTE THAT IT IS MY GREATEST JOY AND PRIVILEGE TO HELP YOU QUOTE + HE RELAPSED AT ONCE INTO THE HALF HUMOROUS HALF CYNICAL VEIN WHICH WAS HIS HABITUAL ATTITUDE TO THOSE ABOUT HIM + IT WOULD BE SUPERFLUOUS TO DRIVE US MAD MY DEAR WATSON SAID HE + A CANDID OBSERVER WOULD CELTAINLY DECLARE THAT WE WERE SO ALREADY BEFORE WE EMBARKED UPON SO WILD AN EXPERIMENT + I CONFESS THAT I NEVER IMAGINED THAT THE EFFECT COULD BE SO SUDDEN AND SO SEVERE + HE DASHED INTO THE COTTAGE AND REAPPEARING WITH THE BURNING LAMP HELD AT FULL ARM'S LENGTH HE THREW IT AMONG A BANK OF BRAMBLES + WE MUST GIVE THE ROOM A LITTLE TIME TO CLEAR + I TAKE IT WATSON THAT YOU HAVE NO LONGER A SHADOW OF A DOUBT AS TO HOW THESE TRAGEDIES WERE PRODUCED + QUOTE NONE WHATEVER QUOTE + BUT THE CAUSE REMAINS AS OBSCURE AS BEFORE + COME INTO THE ARBOUR HERE AND LET US DISCUSS IT TOGETHER + THAT VILLAINOUS STUFF SEEMS STILL TO LINGER ROUND MY THROAT + I THINK WE MUST ADMIT THAT ALL THE EVIDENCE POINTS TO THIS MAN MORTIMER TREGENNIS HAVING BEEN THE CRIMINAL IN THE FIRST TRAGEDY THOUGH HE WAS THE VICTIM IN THE SECOND ONE + WE MUST REMEMBER IN THE FIRST PLACE THAT THERE IS SOME STORY OF A FAMILY QUARREL FOLLOWED BY A RECONCILIATION + HOW BITTER THAT QUARREL MAY HAVE BEEN OR HOW HOLLOW THE RECONCILIATION WE CANNOT TELL + WHEN I THINK OF MORTIMER TREGENNIS WITH THE FOXY FACE AND THE SMALL SHREWD BEADY EYES BEHIND THE SPECTACLES HE IS NOT A MAN WHOM I SHOULD JUDGE TO BE OF A PARTICULARLY FORGIVING DISPOSITION + WELL IN THE NEXT PLACE YOU WILL REMEMBER THAT THIS IDEA OF SOMEONE MOVING IN THE GARDEN WHICH TOOK OUR ATTENTION FOR A MOMENT FROM THE REAL CAUSE OF THE TRAGEDY EMANATED FROM HIM + HE HAD A MOTIVE IN MISLEADING US + FINALLY IF HE DID NOT THROW THIS SUBSTANCE INTO THE FIRE AT THE MOMENT OF LEAVING THE ROOM WHO DID DO SO + THE AFFAIR HAPPENED IMMEDIATELY AFTER HIS DEPARTURE + HAD ANYONE ELSE COME IN THE FAMILY WOULD CERTAINLY HAVE RISEN FROM THE TABLE + BESIDES IN PEACEFUL CORNWALL VISITORS DO NOT ARRIVE AFTER TEN O'CLOCK AT NIGHT + WE MAY TAKE IT THEN THAT ALL THE EVIDENCE POINTS TO MORTIMER TREGENNIS AS THE CULPRIT + THEN HIS OWN DEATH WAS SUICIDE + WELL WATSON IT IS ON THE FACE OF IT A NOT IMPOSSIBLE SUPPOSITION + THE MAN WHO HAD THE GUILT UPON HIS SOUL OF HAVING BROUGHT SUCH A FATE UPON HIS OWN FAMILY MIGHT WELL BE DRIVEN BY REMORSE TO INFLICT IT UPON HIMSELF + THERE ARE HOWEVER SOME COGENT REASONS AGAINST IT + FORTURLATELY THERE IS ONE MAN IN ENGLAND WHO KNOWS ALL ABOUT IT AND I HAVE MADE ARRANGEMENTS BY WHICH WE SHALL HEAR THE FACTS THIS AFTERNOON FROM HIS OWN LIPS + AH HE IS A LITTLE BEFORE HIS TIME + PERHAPS YOU WOULD KINDLY STEP THIS WAY DOCTOR LEON STERNDALE + WE HAVE BEEN CONDUCTING A CHEMICAL EXPERIMENT INDOORS WHICH HAS LEFT OUR LITTLE ROOM HARDLY FIT FOR THE RECEPTION OF SO DISTINGUISHED A VISITOR + I HAD HEARD THE CLICK OF THE GARDEN GATE AND NOW THE MAJESTIC FIGURE OF THE GREAT AFRICAN EXPLORER APPEARED UPON THE PATH + HE TURNED IN SOME SURPRISE TOWARDS THE RUSTIC ARBOUR IN WHICH WE SAT + QUOTE YOU SENT FOR ME MR. HOLMES + I HAD YOUR NOTE ABOUT AN HOUR AGO AND I HAVE COME THOUGH I REALLY DO NOT KNOW WHY I SHOULD OBEY YOUR SUMMONS + PERHAPS WE CAN CLEAR THE POINT UP BEFORE WE SEPARATE SAID HOLMES + MEANWHILE I AM MUCH OBLIGED TO YOU FOR YOUR COURTEOUS ACQUIESCENCE + YOU WILL EXCUSE THIS INFORMAL RECEPTION IN THE OPEN AIR BUT MY FRIEND WATSON AND I HAVE NEARLY FURNISHED AN ADDITIONAL CHAPTER TO WHAT THE PAPERS CALL THE CORNISH HORROR AND WE PREFER A CLEAR ATMOSPHERE FOR THE PRESENT + PERHAPS SINCE THE MATTERS WHICH WE HAVE TO DISCUSS WILL AFFECT YOU PERSONALLY IN A VERY INTIMATE FASHION IT IS AS WELL THAT WE SHOULD TALK WHERE THERE CAN BE NO EAVESDROPPING + THE EXPLORER TOOK HIS CIGAR FROM HIS LIPS AND GAZED STERNLY AT MY COMPANLON + I AM AT A LOSS TO KNOW SIR HE SAID WHAT YOU CAN HAVE TO SPEAK ABOUT WHICH AFFECTS ME PERSONALLY IN A VERY INTIMATE FASHION + QUOTE THE KILLING OF MORTIMER TREGENNIS QUOTE SAID HOLMES + FOR A MOMENT I WISHED THAT I WERE ARMED + STEMDALE'S FIERCE FACE TURNED TO A DUSKY RED HIS EYES GLARED AND THE KNOTTED PASSIONATE VEINS STARTED OUT IN HIS FOREHEAD WHILE HE SPRANG FORWARD WITH CLENCHED HANDS TOWARDS MY COMPANION + THEN HE STOPPED AND WITH A VIOLENT EFFORT HE RESUMED A COLD RIGID CALMNESS WHICH WAS PERHAPS MORE SUGGESTIVE OF DANGER THAN HIS HOTHEADED OUTBURST + I HAVE LIVED SO LONG AMONG SAVAGES AND BEYOND THE LAW SAID HE THAT I HAVE GOT INTO THE WAY OF BEING A LAW TO MYSELF + YOU WOULD DO WELL MR. HOLMES NOT TO FORGET IT FOR I HAVE NO DESIRE TO DO YOU AN INJURY + NOR HAVE I ANY DESIRE TO DO YOU AN INJURY DOCTOR STERNDALE + SURELY THE CLEAREST PROOF OF IT IS THAT KNOWING WHAT I KNOW I HAVE SENT FOR YOU AND NOT FOR THE POLICE + STERNDALE SAT DOWN WITH A GASP OVERAWED FOR PERHAPS THE FIRST TIME IN HIS ADVENTUROUS LIFE + THERE WAS A CALM ASSURANCE OF POWER IN HOLMES'S MANNER WHICH COULD NOT BE WITHSTOOD + OUR VISITOR STAMMERED FOR A MOMENT HIS GREAT HANDS OPENING AND SHUTTING IN HIS AGITATION + WHAT DO YOU MEAN HE ASKED AT LAST + QUOTE IF THIS IS BLUFF UPON YOUR PART MR. HOLMES YOU HAVE CHOSEN A BAD MAN FOR YOUR EXPERIMENT + LET US HAVE NO MORE BEATING ABOUT THE BUSH + WHAT DO YOU MEAN + I WILL TELL YOU SAID HOLMES AND THE REASON WHY I TELL YOU IS THAT I HOPE FRANKNESS MAY BEGET FRANKNESS + WHAT MY NEXT STEP MAY BE WILL DEPEND ENTIRELY UPON THE NATURE OF YOUR OWN DEFENCE + MY DEFENCE + YES SIR + QUOTE MY DEFENCE AGAINST WHAT QUOTE + AGAINST THE CHARGE OF KILLING MORTIMER TREGENNIS + STERNDALE MOPPED HIS FOREHEAD WITH HIS HANDKERCHIEF + UPON MY WORD YOU ARE GETTING ON SAID HE + DO ALL YOUR SUCCESSES DEPEND UPON THIS PRODIGIOUS POWER OF BLUFF + THE BLUFF SAID HOLMES STERNLY IS UPON YOUR SIDE DOCTOR LEON STERNDALE AND NOT UPON MINE + AS A PROOF I WILL TELL YOU SOME OF THE FACTS UPON WHICH MY CONCLUSIONS ARE BASED + OF YOUR RETURN FROM PLYMOUTH ALLOWING MUCH OF YOUR PROPERTY TO GO ON TO AFRICA I WILL SAY NOTHING SAVE THAT IT FIRST INFORMED ME THAT YOU WERE ONE OF THE FACTORS WHICH HAD TO BE TAKEN INTO ACCOUNT IN RECONSTRUCTING THIS DRAMA + QUOTE I HAVE HEARD YOUR REASONS AND REGARD THEM AS UNCONVINCING AND INADEQUATE + WE WILL PASS THAT + YOU CAME DOWN HERE TO ASK ME WHOM I SUSPECTED + I REFUSED TO ANSWER YOU + YOU THEN WENT TO THE VICARAGE WAITED OUTSIDE IT FOR SOME TIME AND FINALLY RETURNED TO YOUR COTTAGE + HOW DO YOU KNOW THAT + I FOLLOWED YOU + I SAW NO ONE + THAT IS WHAT YOU MAY EXPECT TO SEE WHEN I FOLLOW YOU + YOU SPENT A RESTLESS NIGHT AT YOUR COTTAGE AND YOU FORMED CERTAIN PLANS WHICH IN THE EARLY MORNING YOU PROCEEDED TO PUT INTO EXECUTION + LEAVING YOUR DOOR JUST AS DAY WAS BREAKING YOU FILLED YOUR POCKET WITH SOME REDDISH GRAVEL THAT WAS LYING HEAPED BESIDE YOUR GATE QUOTE + STERNDALE GAVE A VIOLENT START AND LOOKED AT HOLMES IN AMAZEMENT + YOU THEN WALKED SWIFTLY FOR THE MILE WHICH SEPARATED YOU FROM THE VICARAGE + YOU WERE WEARING I MAY REMARK THE SAME PAIR OF RIBBED TENNIS SHOES WHICH ARE AT THE PRESENT MOMENT UPON YOUR FEET + AT THE VICARAGE YOU PASSED THROUGH THE ORCHARD AND THE SIDE HEDGE COMING OUT UNDER THE WINDOW OF THE LODGER TREGENNIS + IT WAS NOW DAYLIGHT BUT THE HOUSEHOLD WAS NOT YET STIRRING + YOU DREW SOME OF THE GRAVEL FROM YOUR POCKET AND YOU THREW IT UP AT THE WINDOW ABOVE YOU + STERNDALE SPRANG TO HIS FEET + I BELIEVE THAT YOU ARE THE DEVIL HIMSELF HE CRIED + HOLMES SMILED AT THE COMPLIMENT + IT TOOK TWO OR POSSIBLY THREE HANDFULS BEFORE THE LODGER CAME TO THE WINDOW + YOU BECKONED HIM TO COME DOWN + HE DRESSED HURRIEDLY AND DESCENDED TO HIS SITTING ROOM + YOU ENTERED BY THE WINDOW + THERE WAS AN INTERVIEW A SHORT ONE DURING WHICH YOU WALKED UP AND DOWN THE ROOM + THEN YOU PASSED OUT AND CLOSED THE WINDOW STANDING ON THE LAWN OUTSIDE SMOKING A CIGAR AND WATCHING WHAT OCCURRED + FINALLY AFTER THE DEATH OF TREGENNIS YOU WITHDREW AS YOU HAD COME + NOW DOCTOR STERNDALE HOW DO YOU JUSTIFY SUCH CONDUCT AND WHAT WERE THE MOTIVES FOR YOUR ACTIONS + IF YOU PREVARICATE OR TRIFLE WITH ME I GIVE YOU MY ASSURANCE THAT THE MATTER WILL PASS OUT OL MY HANDS FOREVER + OUR VISITOR'S FACE HAD TURNED ASHEN GRAY AS HE LISTENED TO THE WORDS OF HIS ACCUSER + NOW HE SAT FOR SOME TIME IN THOUGHT WITH HIS FACE SUNK IN HIS HANDS + THEN WITH A SUDDEN IMPULSIVE GESTURE HE PLUCKED A PHOTOGRAPH FROM HIS BREAST POCKET AND THREW IT ON THE RUSTIC TABLE BEFORE US + QUOTE THAT IS WHY I HAVE DONE IT QUOTE SAID HE + IT SHOWED THE BUST AND FACE OF A VERY BEAUTIFUL WOMAN + HOLMES STOOPED OVER IT + BRENDA TREGENNIS SAID HE + YES BRENDA TREGENNIS REPEATED OUR VISITOR + FOR YEARS I HAVE LOVED HER + FOR YEARS SHE HAS LOVED ME + THERE IS THE SECRET OF THAT CORNISH SECLUSION WHICH PEOPLE HAVE MARVELLED AT + IT HAS BROUGHT ME CLOSE TO THE ONE THING ON EARTH THAT WAS DEAR TO ME + I COULD NOT MARRY HER FOR I HAVE A WIFE WHO HAS LEFT ME FOR YEARS AND YET WHOM BY THE DEPLORABLE LAWS OF ENGLAND I COULD NOT DIVORCE + FOR YEARS BRENDA WAITED + FOR YEARS I WAITED + AND THIS IS WHAT WE HAVE WAITED FOR + A TERRIBLE SOB SHOOK HIS GREAT FRAME AND HE CLUTCHED HIS THROAT UNDER HIS BRINDLED BEARD + THEN WITH AN EFFORT HE MASTERED HIMSELF AND SPOKE ON + THE VICAR KNEW + HE WAS IN OUR CONFIDENCE + HE WOULD TELL YOU THAT SHE WAS AN ANGEL UPON EARTH + THAT WAS WHY HE TELEGRAPHED TO ME AND I RETURNED + WHAT WAS MY BAGGAGE OR AFRICA TO ME WHEN I LEARNED THAT SUCH A FATE HAD COME UPON MY DARLING + THERE YOU HAVE THE MISSING CLUE TO MY ACTION MR. HOLMES QUOTE + PROCEED SAID MY FRIEND + DOCTOR STERNDALE DREW FROM HIS POCKET A PAPER PACKET AND LAID IT UPON THE TABLE + ON THE OUTSIDE WAS WRITTEN RADIX PEDIS DIABOLI WITH A RED POISON LABEL BENEATH IT + HE PUSHED IT TOWARDS ME + I UNDERSTAND THAT YOU ARE A DOCTOR SIR + HAVE YOU EVER HEARD OF THIS PREPARATION + DEVIL'S FOOT ROOT + NO I HAVE NEVER HEARD OF IT QUOTE + IT IS NO REFLECTION UPON YOUR PROFESSIONAL KNOWLEDGE SAID HE FOR I BELIEVE THAT SAVE FOR ONE SAMPLE IN A LABORATORY AT BUDA THERE IS NO OTHER SPECIMEN IN EUROPE + IT HAS NOT YET FOUND ITS WAY EITHER INTO THE PHARMACOPCEIA OR INTO THE LITERATURE OF TOXICOLOGY + THE ROOT IS SHAPED LIKE A FOOT HALF HUMAN HALF GOATLIKE HENCE THE FANCIFUL NAME GIVEN BY A BOTANICAL MISSIONARY + IT IS USED AS AN ORDEAL POISON BY THE MEDICINE MEN IN CERTAIN DISTRICTS OF WEST AFRICA AND IS KEPT AS A SECRET AMONG THEM + THIS PARTICULAR SPECIMEN I OBTAINED UNDER VERY EXTRAORDINARY CIRCUMSTANCES IN THE UBANGI COUNTRY + HE OPENED THE PAPER AS HE SPOKE AND DISCLOSED A HEAP OF REDDISH BROWN SNUFF LIKE POWDER + WELL SIR ASKED HOLMES STERNLY + I AM ABOUT TO TELL YOU MR. HOLMES ALL THAT ACTUALLY OCCURRED FOR YOU ALREADY KNOW SO MUCH THAT IT IS CLEARLY TO MY INTEREST THAT YOU SHOULD KNOW ALL + I HAVE ALREADY EXPLAINED THE RELATIONSHIP IN WHICH I STOOD TO THE TREGENNIS FAMILY + FOR THE SAKE OF THE SISTER I WAS FRIENDLY WITH THE BROTHERS + THERE WAS A FAMILY QUARREL ABOUT MONEY WHICH ESTRANGED THIS MAN MORTIMER BUT IT WAS SUPPOSED TO BE MADE UP AND I AFTERWARDS MET HIM AS I DID THE OTHERS + HE WAS A SLY SUBTLE SCHEMING MAN AND SEVERAL THINGS AROSE WHICH GAVE ME A SUSPICION OF HIM BUT I HAD NO CAUSE FOR ANY POSITIVE QUARREL + ONE DAY ONLY A COUPLE OF WEEKS AGO HE CAME DOWN TO MY COTTAGE AND I SHOWED HIM SOME OF MY AFRICAN CURIOSITIES + AMONG OTHER THINGS I EXHIBITED THIS POWDER AND I TOLD HIM OF ITS STRANGE PROPERTIES HOW IT STIMULATES THOSE BRAIN CENTRES WHICH CONTROL THE EMOTION OF FEAR AND HOW EITHER MADNESS OR DEATH IS THE FATE OF THE UNHAPPY NATIVE WHO IS SUBJECTED TO THE ORDEAL BY THE PRIEST OF HIS TRIBE + I TOLD HIM ALSO HOW POWERLESS EUROPEAN SCIENCE WOULD BE TO DETECT IT + HOW HI TOOK IT I CANNOT SAY FOR I NEVER LEFT THE ROOM BUT THERE IS NO DOUBT THAT IT WAS THEN WHILE I WAS OPENING CABINETS AND STOOPING TO BOXES THAT HE MANAGED TO ABSTRACT SOME OF THE DEVIL'S FOOT ROOT + I WELL REMEMBER HOW HE PLIED ME WITH QUESTIONS AS TO THE AMOUNT AND THE TIME THAT WAS NEEDED FOR ITS EFFECT BUT I LITTLE DREAMED THAT HE COULD HAVE A PERSONAL REASON FOR ASKING + QUOTE I THOUGHT NO MORE OF THE MATTER UNTIL THE VICAR'S TELEGRAM REACHED ME AT PLYMOUTH + THIS VILLAIN HAD THOUGHT THAT I WOULD BE AT SEA BEFORE THE NEWS COULD REACH ME AND THAT I SHOULD BE LOST FOR YEARS IN AFRICA + BUT I RETURNED AT ONCE + OF COURSE I COULD NOT LISTEN TO THE DETAILS WITHOUT FEELING ASSURED THAT MY POISON HAD BEEN USED + I CAME ROUND TO SEE YOU ON THE CHANCE TBAT SOME OTHER EXPLANATION HAD SUGGESTEID ITSELF TO YOU + BUT THERE COULD BE NONE + I WAS CONVINCED THAT MORTIMER TREGENNIS WAS THE MURDERER THAT FOR THE SAKE OF MONEY AND WITH THE IDEA PERHAPS THAT IF THE OTHER MEMBERS OF HIS FAMILY WERE ALL INSANE HE WOULD BE THE SOLE GUARDIAN OF THEIR JOINT PROPERTY HE HAD USED THE DEVIL'S FOOT POWDER UPON THEM DRIVEN TWO OF THEM OUT OF THEIR SENSES AND KILLED HIS SISTER BRENDA THE ONE HUMAN BEING WHOM I HAVE EVER LOVED OR WHO HAS EVER LOVED ME + THERE WAS HIS CRIME WHAT WAS TO BE HIS PUNISHMENT + SHOULD I APPEAL TO THE LAW + WHERE WERE MY PROOFS + I KNEW THAT THE FACTS WERE TRUE BUT COULD I HELP TO MAKE A JURY OF COUNTRYMEN BELIEVE SO FANTASTIC A STORY + I MIGHT OR I MIGHT NOT + BUT I COULD NOT AFFORD TO FAIL + MY SOUL CRIED OUT FOR REVENGE + I HAVE SAID TO YOU ONCE BEFORE MR. HOLMES THAT I HAVE SPENT MUCH OF MY LIFE OUTSIDE THE LAW AND THAT I HAVE COME AT LAST TO BE A LAW TO MYSELF + SO IT WAS NOW + I DETERMINED THAT THE FATE WHICH HE HAD GIVEN TO OTHERS SHOULD BE SHARED BY HIMSELF + EITHER THAT OR I WOULD DO JUSTICE UPON HIM WITH MY OWN HAND + IN ALL ENGLAND THERE CAN BE NO MAN WHO SETS LESS VALUE UPON HIS OWN LIFE THAN I DO AT THE PRESENT MOMENT + NOW I HAVE TOLD YOU ALL + YOU HAVE YOURSELF SUPPLIED THE REST + I DID AS YOU SAY AFTER A RESTLESS NIGHT SET OFF EARLY FROM MY COTTAGE + I FORESAW THE DIFFICULTY OF AROUSING HIM SO I GATHERED SOME GRAVEL FROM THE PILE WHICH YOU HAVE MENTIONED AND I USED IT TO THROW UP TO HIS WINDOW + HE CAME DOWN AND ADMITTED ME THROUGH THE WINDOW OF THE SITTING ROOM + I LAID HIS OFFENCE BEFORE HIM + I TOLD HIM THAT I HAD COME BOTH AS JUDGE AND EXECUTIONER + THE WRETCH SANK INTO A CHAIR PARALYZED AT THE SIGHT OF MY REVOLVER + I LIT THE LAMP PUT THE POWDER ABOVE IT AND STOOD OUTSIDE THE WINDOW READY TO CARRY OUT MY THREAT TO SHOOT HIM SHOULD HE TRY TO LEAVE THE ROOM + IN FIVE MINUTES HE DIED + MY GOD HOW HE DIED + BUT MY HEART WAS FLINT FOR HE ENDURED NOTHING WHICH MY INNOCENT DARLING HAD NOT FELT BEFORE HIM + THERE IS MY STORY MR. HOLMES + PERHAPS IF YOU LOVED A WOMAN YOU WOULD HAVE DONE AS MUCH YOURSELF + AT ANY RATE I AM IN YOUR HANDS + YOU CAN TAKE WHAT STEPS YOU LIKE + AS I HAVE ALREADY SAID THERE IS NO MAN LIVING WHO CAN FEAR DEATH LESS THAN I DO + HOLMES SAT FOR SOME LITTLE TIME IN SILENCE + WHAT WERE YOUR PLANS HE ASKED AT LAST + I HAD INTENDED TO BURY MYSELF IN CENTRAL AFRICA + MY WORK THERE IS BUT HALF FINISHED QUOTE + GO AND DO THE OTHER HALF SAID HOLMES + I AT LEAST AM NOT PREPARED TO PREVENT YOU + DOCTOR STERNDALE RAISED HIS GIANT FIGURE BOWED GRAVELY AND WALIKED FROM THE ARBOUR + HOLMES LIT HIS PIPE AND HANDED ME HIS POUCH + SOME FUMES WHICH ARE NOT POISONOUS WOULD BE A WELCOME CHANGE SAID HE + I THINK YOU MUST AGREE WATSON THAT IT IS NOT A CASE IN WHICH WE ARE CALLED UPON TO INTERFERE + OUR INVESTIGATION HAS BEEN INDEPENDENT AND OUR ACTION SHALL BE SO ALSO + YOU WOULD NOT DENOUNCE THE MAN + QUOTE CERTAINLY NOT QUOTE I ANSWERED + I HAVE NEVER LOVED WATSON BUT IF I DID AND IF THE WOMAN I LOVED HAD MET SUCH AN END I MIGHT ACT EVEN AS OUR LAWLESS LION HUNTER HAS DONE + WHO KNOWS + WELL WATSON I WILL NOT OFFEND YOUR INTELLIGENCE BY EXPLAINING WHAT IS OBVIOUS + THE GRAVEL UPON THE WINDOW SILL WAS OF COURSE THE STARTINGPOINT OF MY RESEARCH + IT WAS UNLIKE ANYTHING IN THE VICARAGE GARDEN + ONLY WHEN MY ATTENTION HAD BEEN DRAWN TO DOCTOR STERNDALE AND HIS COTTAGE DID I FIND ITS COUNTERPART + THE LAMP SHINING IN BROAD DAYLIGHT AND THE REMAINS OF POWDER UPON THE SHIELD WERE SUCCESSIVE LINKS IN A FAIRLY OBVIOUS CHAIN + AND NOW MY DEAR WATSON I THINK WE MAY DISMISS THE MATTER FROM OUR MIND AND GO BACK WITH A CLEAR CONSCIENCE TO THE STUDY OF THOSE CHALDEAN ROOTS WHICH ARE SURELY TO BE TRACED IN THE CORNISH BRANCH OF THE GREAT CELTIC SPEECH diff --git a/samples/LMTutorial/train/dying_detective.txt b/samples/LMTutorial/train/dying_detective.txt new file mode 100755 index 0000000..530c34b --- /dev/null +++ b/samples/LMTutorial/train/dying_detective.txt @@ -0,0 +1,541 @@ + MRS. HUDSON THE LANDLADY OF SHERLOCK HOLMES WAS A LONGSUFFERING WOMAN + NOT ONLY WAS HER FIRST FLOOR FLAT INVADED AT ALL HOURS BY THRONGS OF SINGULAR AND OFTEN UNDESIRABLE CHARACTERS BUT HER REMARKABLE LODGER SHOWED AN ECCENTRICITY AND IRREGULARITY IN HIS LIFE WHICH MUST HAVE SORELY TRIED HER PATIENCE + HIS INCREDIBLE UNTIDINESS HIS ADDICTION TO MUSIC AT STRANGE HOURS HIS OCCASIONAL REVOLVER PRACTICE WITHIN DOORS HIS WEIRD AND OFTEN MALODOROUS SCIENTIFIC EXPERIMENTS AND THE ATMOSPHERE OF VIOLENCE AND DANGER WHICH HUNG AROUND HIM MADE HIM THE VERY WORST TENANT IN LONDON + ON THE OTHER HAND HIS PAYMENTS WERE PRINCELY + I HAVE NO DOUBT THAT THE HOUSE MIGHT HAVE BEEN PURCHASED AT THE PRICE WHICH HOLMES PAID FOR HIS ROOMS DURING THE YEARS THAT I WAS WITH HIM + THE LANDLADY STOOD IN THE DEEPEST AWE OF HIM AND NEVER DARED TO INTERFERE WITH HIM HOWEVER OUTRAGEOUS HIS PROCEEDINGS MIGHT SEEM + SHE WAS FOND OF HIM TOO FOR HE HAD A REMARKABLE GENTLENESS AND COURTESY IN HIS DEALINGS WITH WOMEN + HE DISLIKED AND DISTRUSTED THE SEX BUT HE WAS ALWAYS A CHIVALROUS OPPONENT + KNOWING HOW GENUINE WAS HER REGARD FOR HIM I LISTENED EARNESTLY TO HER STORY WHEN SHE CAME TO MY ROOMS IN THE SECOND YEAR OF MY MARRIED LIFE AND TOLD ME OF THE SAD CONDITION TO WHICH MY POOR FRIEND WAS REDUCED + QUOTE HE'S DYING DOCTOR WATSON QUOTE SAID SHE + FOR THREE DAYS HE HAS BEEN SINKING AND I DOUBT IF HE WILL LAST THE DAY + HE WOULD NOT LET ME GET A DOCTOR + THIS MORNING WHEN I SAW HIS BONES STICKING OUT OF HIS FACE AND HIS GREAT BRIGHT EYES LOOKING AT ME I COULD STAND NO MORE OF IT + WITH YOUR LEAVE OR WITHOUT IT MR. HOLMES I AM GOING FOR A DOCTOR THIS VERY HOUR SAID I. LET IT BE WATSON THEN SAID HE + I WOULDN'T WASTE AN HOUR IN COMING TO HIM SIR OR YOU MAY NOT SEE HIM ALIVE + I WAS HORRIFIED FOR I HAD HEARD NOTHING OF HIS ILLNESS + I NEED NOT SAY THAT I RUSHED FOR MY COAT AND MY HAT + AS WE DROVE BACK I ASKED FOR THE DETAILS + THERE IS LITTLE I CAN TELL YOU SIR + HE HAS BEEN WORKING AT A CASE DOWN AT ROTHERHITHE IN AN ALLEY NEAR THE RIVER AND HE HAS BROUGHT THIS ILLNESS BACK WITH HIM + HE TOOK TO HIS BED ON WEDNESDAY AFTERNOON AND HAS NEVER MOVED SINCE + FOR THESE THREE DAYS NEITHER FOOD NOR DRINK HAS PASSED HIS LIPS + GOOD GOD + WHY DID YOU NOT CALL IN A DOCTOR QUOTE + HE WOULDN'T HAVE IT SIR + YOU KNOW HOW MASTERFUL HE IS + I DIDN'T DARE TO DISOBEY HIM + BUT HE'S NOT LONG FOR THIS WORLD AS YOU'LL SEE FOR YOURSELF THE MOMENT THAT YOU SET EYES ON HIM + HE WAS INDEED A DEPLORABLE SPECTACLE + IN THE DIM LIGHT OF A FOGGY NOVEMBER DAY THE SICK ROOM WAS A GLOOMY SPOT BUT IT WAS THAT GAUNT WASTED FACE STARING AT ME FROM THE BED WHICH SENT A CHILL TO MY HEART + HIS EYES HAD THE BRIGHTNESS OF FEVER THERE WAS A HECTIC FLUSH UPON EITHER CHEEK AND DARK CRUSTS CLUNG TO HIS LIPS THE THIN HANDS UPON THE COVERLET TWITCHED INCESSANTLY HIS VOICE WAS CROAKING AND SPASMODIC + HE LAY LISTLESSLY AS I ENTERED THE ROOM BUT THE SIGHT OF ME BROUGHT A GLEAM OF RECOGNITION TO HIS EYES + WELL WATSON WE SEEM TO HAVE FALLEN UPON EVIL DAYS SAID HE IN A FEEBLE VOICE BUT WITH SOMETHING OF HIS OLD CARELESSNESS OF MANNER + MY DEAR FELLOW + I CRIED APPROACHING HIM + STAND BACK + STAND RIGHT BACK QUOTE SAID HE WITH THE SHARP IMPERIOUSNESS WHICH I HAD ASSOCIATED ONLY WITH MOMENTS OF CRISIS + IF YOU APPROACH ME WATSON I SHALL ORDER YOU OUT OF THE HOUSE + BUT WHY + BECAUSE IT IS MY DESIRE + IS THAT NOT ENOUGH + YES MRS. HUDSON WAS RIGHT + HE WAS MORE MASTERFUL THAN EVER + IT WAS PITIFUL HOWEVER TO SEE HIS EXHAUSTION + I ONLY WISHED TO HELP I EXPLAINED + QUOTE EXACTLY + YOU WILL HELP BEST BY DOING WHAT YOU ARE TOLD + CERTAINLY HOLMES + HE RELAXED THE AUSTERITY OF HIS MANNER + YOU ARE NOT ANGRY HE ASKED GASPING FOR BREATH + POOR DEVIL HOW COULD I BE ANGRY WHEN I SAW HIM LYING IN SUCH A PLIGHT BEFORE ME + IT'S FOR YOUR OWN SAKE WATSON HE CROAKED + FOR MY SAKE + QUOTE I KNOW WHAT IS THE MATTER WITH ME + IT IS A COOLIE DISEASE FROM SUMATRA A THING THAT THE DUTCH KNOW MORE ABOUT THAN WE THOUGH THEY HAVE MADE LITTLE OF IT UP TO DATE + ONE THING ONLY IS CERTAIN + IT IS INFALLIBLY DEADLY AND IT IS HORRIBLY CONTAGIOUS + HE SPOKE NOW WITH A FEVERISH ENERGY THE LONG HANDS TWITCHING AND JERKING AS HE MOTIONED ME AWAY + CONTAGIOUS BY TOUCH WATSON THAT'S IT BY TOUCH + KEEP YOUR DISTANCE AND ALL IS WELL + GOOD HEAVENS HOLMES + DO YOU SUPPOSE THAT SUCH A CONSIDERATION WEIGHS WITH ME FOR AN INSTANT + IT WOULD NOT AFFECT ME IN THE CASE OF A STRANGER + DO YOU IMAGINE IT WOULD PREVENT ME FROM DOING MY DUTY TO SO OLD A FRIEND + AGAIN I ADVANCED BUT HE REPULSED ME WITH A LOOK OF FURIOUS ANGER + QUOTE IF YOU WILL STAND THERE I WILL TALK + IF YOU DO NOT YOU MUST LEAVE THE ROOM + I HAVE SO DEEP A RESPECT FOR THE EXTRAORDINARY QUALITIES OF HOLMES THAT I HAVE ALWAYS DEFERRED TO HIS WISHES EVEN WHEN I LEAST UNDERSTOOD THEM + BUT NOW ALL MY PROFESSIONAL INSTINCTS WERE AROUSED + LET HIM BE MY MASTER ELSEWHERE I AT LEAST WAS HIS IN A SICK ROOM + HOLMES SAID I YOU ARE NOT YOURSELF + A SICK MAN IS BUT A CHILD AND SO I WILL TREAT YOU + WHETHER YOU LIKE IT OR NOT I WILL EXAMINE YOUR SYMPTOMS AND TREAT YOU FOR THEM + HE LOOKED AT ME WITH VENOMOUS EYES + IF I AM TO HAVE A DOCTOR WHETHER I WILL OR NOT LET ME AT LEAST HAVE SOMEONE IN WHOM I HAVE CONFIDENCE SAID HE + THEN YOU HAVE NONE IN ME + QUOTE IN YOUR FRIENDSHIP CERTAINLY + BUT FACTS ARE FACTS WATSON AND AFTER ALL YOU ARE ONLY A GENERAL PRACTITIONER WITH VERY LIMITED EXPERIENCE AND MEDIOCRE QUALIFICATIONS + IT IS PAINFUL TO HAVE TO SAY THESE THINGS BUT YOU LEAVE ME NO CHOICE + I WAS BITTERLY HURT + SUCH A REMARK IS UNWORTHY OF YOU HOLMES + IT SHOWS ME VERY CLEARLY THE STATE OF YOUR OWN NERVES + BUT IF YOU HAVE NO CONFIDENCE IN ME I WOULD NOT INTRUDE MY SERVICES + LET ME BRING SIR JASPER MEEK OR PENROSE FISHER OR ANY OF THE BEST MEN IN LONDON + BUT SOMEONE YOU MUST HAVE AND THAT IS FINAL + IF YOU THINK THAT I AM GOING TO STAND HERE AND SEE YOU DIE WITHOUT EITHER HELPING YOU MYSELF OR BRINGING ANYONE ELSE TO HELP YOU THEN YOU HAVE MISTAKEN YOUR MAN + YOU MEAN WELL WATSON SAID THE SICK MAN WITH SOMETHING BETWEEN A SOB AND A GROAN + SHALL I DEMONSTRATE YOUR OWN IGNORANCE + WHAT DO YOU KNOW PRAY OF TAPANULI FEVER + WHAT DO YOU KNOW OF THE BLACK FORMOSA CORRUPTION QUOTE + I HAVE NEVER HEARD OF EITHER + THERE ARE MANY PROBLEMS OF DISEASE MANY STRANGE PATHOLOGICAL POSSIBILITIES IN THE EAST WATSON + HE PAUSED AFTER EACH SENTENCE TO COLLECT HIS FAILING STRENGTH + I HAVE LEARNED SO MUCH DURING SOME RECENT RESEARCHES WHICH HAVE A MEDICO CRIMINAL ASPECT + IT WAS IN THE COURSE OF THEM THAT I CONTRACTED THIS COMPLAINT + YOU CAN DO NOTHING + POSSIBLY NOT + BUT I HAPPEN TO KNOW THAT DOCTOR AINSTREE THE GREATEST LIVING AUTHORITY UPON TROPICAL DISEASE IS NOW IN LONDON + ALL REMONSTRANCE IS USELESS HOLMES I AM GOING THIS INSTANT TO FETCH HIM QUOTE + I TURNED RESOLUTELY TO THE DOOR + NEVER HAVE I HAD SUCH A SHOCK + IN AN INSTANT WITH A TIGERSPRING THE DYING MAN HAD INTERCEPTED ME + I HEARD THE SHARP SNAP OF A TWISTED KEY + THE NEXT MOMENT HE HAD STAGGERED BACK TO HIS BED EXHAUSTED AND PANTING AFTER HIS ONE TREMENDOUS OUTFLAME OF ENERGY + YOU WON'T TAKE THE KEY FROM ME BY FORCE WATSON + I'VE GOT YOU MY FRIEND + HERE YOU ARE AND HERE YOU WILL STAY UNTIL I WILL OTHERWISE + BUT I'LL HUMOUR YOU + ALL THIS IN LITTLE GASPS WITH TERRIBLE STRUGGLES FOR BREATH BETWEEN + YOU'VE ONLY MY OWN GOOD AT HEART + OF COURSE I KNOW THAT VERY WELL + YOU SHALL HAVE YOUR WAY BUT GIVE ME TIME TO GET MY STRENGTH + NOT NOW WATSON NOT NOW + IT'S FOUR O'CLOCK + AT SIX YOU CAN GO + THIS IS INSANITY HOLMES + QUOTE ONLY TWO HOURS WATSON + I PROMISE YOU WILL GO AT SIX + ARE YOU CONTENT TO WAIT + L. SEEM TO HAVE NO CHOICE + NONE IN THE WORLD WATSON + THANK YOU I NEED NO HELP IN ARRANGING THE CLOTHES + YOU WILL PLEASE KEEP YOUR DISTANCE + NOW WATSON THERE IS ONE OTHER CONDITION THAT I WOULD MAKE + YOU WILL SEEK HELP NOT FROM THE MAN YOU MENTION BUT FROM THE ONE THAT I CHOOSE + BY ALL MEANS + QUOTE THE FIRST THREE SENSIBLE WORDS THAT YOU HAVE UTTERED SINCE YOU ENTERED THIS ROOM WATSON + YOU WILL FIND SOME BOOKS OVER THERE + I AM SOMEWHAT EXHAUSTED I WONDER HOW A BATTERY FEELS WHEN IT POURS ELECTRICITY INTO A NON CONDUCTOR + AT SIX WATSON WE RESUME OUR CONVERSATION + BUT IT WAS DESTINED TO BE RESUMED LONG BEFORE THAT HOUR AND IN CIRCUMSTANCES WHICH GAVE ME A SHOCK HARDLY SECOND TO THAT CAUSED BY HIS SPRING TO THE DOOR + I HAD STOOD FOR SOME MINUTES LOOKING AT THE SILENT FIGURE IN THE BED + HIS FACE WAS ALMOST COVERED BY THE CLOTHES AND HE APPEARED TO BE ASLEEP + THEN UNABLE TO SETTLE DOWN TO READING I WALKED SLOWLY ROUND THE ROOM EXAMINING THE PICTURES OF CELEBRATED CRIMINALS WITH WHICH EVERY WALL WAS ADORNED + FINALLY IN MY AIMLESS PERAMBULATION I CAME TO THE MANTELPIECE + A LITTER OF PIPES TOBACCO POUCHES SYRINGES PENKNIVES REVOLVER CARTRIDGES AND OTHER DEBRIS WAS SCATTERED OVER IT + IN THE MIDST OF THESE WAS A SMALL BLACK AND WHITE IVORY BOX WITH A SLIDING LID + IT WAS A NEAT LITTLE THING AND I HAD STRETCHED OUT MY HAND TO EXAMINE IT MORE CLOSELY WHEN IT WAS A DREADFUL CRY THAT HE GAVE A YELL WHICH MIGHT HAVE BEEN HEARD DOWN THE STREET + MY SKIN WENT COLD AND MY HAIR BRISTLED AT THAT HORRIBLE SCREAM + AS I TURNED I CAUGHT A GLIMPSE OF A CONVULSED FACE AND FRANTIC EYES + I STOOD PARALYZED WITH THE LITTLE BOX IN MY HAND + PUT IT DOWN + DOWN THIS INSTANT WATSON THIS INSTANT I SAY + HIS HEAD SANK BACK UPON THE PILLOW AND HE GAVE A DEEP SIGH OF RELIEF AS I REPLACED THE BOX UPON THE MANTELPIECE + I HATE TO HAVE MY THINGS TOUCHED WATSON + YOU KNOW THAT I HATE IT + YOU FIDGET ME BEYOND ENDURANCE + YOU A DOCTOR YOU ARE ENOUGH TO DRIVE A PATIENT INTO AN ASYLUM + SIT DOWN MAN AND LET ME HAVE MY REST + THE INCIDENT LEFT A MOST UNPLEASANT IMPRESSION UPON MY MIND + THE VIOLENT AND CAUSELESS EXCITEMENT FOLLOWED BY THIS BRUTALITY OF SPEECH SO FAR REMOVED FROM HIS USUAL SUAVITY SHOWED ME HOW DEEP WAS THE DISORGANIZATION OF HIS MIND + OF ALL RUINS THAT OF A NOBLE MIND IS THE MOST DEPLORABLE + I SAT IN SILENT DEJECTION UNTIL THE STIPULATED TIME HAD PASSED + HE SEEMED TO HAVE BEEN WATCHING THE CLOCK AS WELL AS I FOR IT WAS HARDLY SIX BEFORE HE BEGAN TO TALK WITH THE SAME FEVERISH ANIMATION AS BEFORE + QUOTE NOW WATSON QUOTE SAID HE + HAVE YOU ANY CHANGE IN YOUR POCKET + YES + ANY SILVER + A GOOD DEAL + HOW MANY HALF CROWNS + QUOTE I HAVE FIVE QUOTE + AH TOO FEW + TOO FEW + HOW VERY UNFORTUNATE WATSON + HOWEVER SUCH AS THEY ARE YOU CAN PUT THEM IN YOUR WATCHPOCKET + AND ALL THE REST OF YOUR MONEY IN YOUR LEFT TROUSERPOCKET + THANK YOU + IT WILL BALANCE YOU SO MUCH BETTER LIKE THAT + THIS WAS RAVING INSANITY + HE SHUDDERED AND AGAIN MADE A SOUND BETWEEN A COUGH AND A SOB + YOU WILL NOW LIGHT THE GAS WATSON BUT YOU WILL BE VERY CAREFUL THAT NOT FOR ONE INSTANT SHALL IT BE MORE THAN HALF ON + I IMPLORE YOU TO BE CAREFUL WATSON + THANK YOU THAT IS EXCELLENT + NO YOU NEED NOT DRAW THE BLIND + NOW YOU WILL HAVE THE KINDNESS TO PLACE SOME LETTERS AND PAPERS UPON THIS TABLE WITHIN MY REACH + THANK YOU + NOW SOME OF THAT LITTER FROM THE MANTELPIECE + EXCELLENT WATSON + THERE IS A SUGAR TONGS THERE + KINDLY RAISE THAT SMALL IVORY BOX WITH ITS ASSISTANCE + PLACE IT HERE AMONG THE PAPERS + GOOD + YOU CAN NOW GO AND FETCH MR. CULVERTON SMITH OF THIRTEEN LOWER BURKE STREET + TO TELL THE TRUTH MY DESIRE TO FETCH A DOCTOR HAD SOMEWHAT WEAKENED FOR POOR HOLMES WAS SO OBVIOUSLY DELIRIOUS THAT IT SEEMED DANGEROUS TO LEAVE HIM + HOWEVER HE WAS AS EAGER NOW TO CONSULT THE PERSON NAMED AS HE HAD BEEN OBSTINATE IN REFUSING + I NEVER HEARD THE NAME SAID I + QUOTE POSSIBLY NOT MY GOOD WATSON + IT MAY SURPRISE YOU TO KNOW THAT THE MAN UPON EARTH WHO IS BEST VERSED IN THIS DISEASE IS NOT A MEDICAL MAN BUT A PLANTER + MR. CULVERTON SMITH IS A WELLKNOWN RESIDENT OF SUMATRA NOW VISITING LONDON + AN OUTBREAK OF THE DISEASE UPON HIS PLANTATION WHICH WAS DISTANT FROM MEDICAL AID CAUSED HIM TO STUDY IT HIMSELF WITH SOME RATHER FAR REACHING CONSEQUENCES + HE IS A VERY METHODICAL PERSON AND I DID NOT DESIRE YOU TO START BEFORE SIX BECAUSE I WAS WELL AWARE THAT YOU WOULD NOT FIND HIM IN HIS STUDY + IF YOU COULD PERSUADE HIM TO COME HERE AND GIVE US THE BENEFIT OF HIS UNIQUE EXPERIENCE OF THIS DISEASE THE INVESTIGATION OF WHICH HAS BEEN HIS DEAREST HOBBY I CANNOT DOUBT THAT HE COULD HELP ME + I GIVE HOLMES'S REMARKS AS A CONSECUTIVE WHOLE AND WILL NOT ATTEMPT TO INDICATE HOW THEY WERE INTERRUPTED BY GASPINGS FOR BREATH AND THOSE CLUTCHINGS OF HIS HANDS WHICH INDICATED THE PAIN FROM WHICH HE WAS SUFFERING + HIS APPEARANCE HAD CHANGED FOR THE WORSE DURING THE FEW HOURS THAT I HAD BEEN WITH HIM + THOSE HECTIC SPOTS WERE MORE PRONOUNCED THE EYES SHONE MORE BRIGHTLY OUT OF DARKER HOLLOWS AND A COLD SWEAT GLIMMERED UPON HIS BROW + HE STILL RETAINED HOWEVER THE JAUNTY GALLANTRY OF HIS SPEECH + TO THE LAST GASP HE WOULD ALWAYS BE THE MASTER + YOU WILL TELL HIM EXACTLY HOW YOU HAVE LEFT ME SAID HE + YOU WILL CONVEY THE VERY IMPRESSION WHICH IS IN YOUR OWN MIND A DYING MAN A DYING AND DELIRIOUS MAN + INDEED I CANNOT THINK WHY THE WHOLE BED OF THE OCEAN IS NOT ONE SOLID MASS OF OYSTERS SO PROLIFIC THE CREATURES SEEM + AH I AM WANDERING + STRANGE HOW THE BRAIN CONTROLS THE BRAIN + WHAT WAS I SAYING WATSON + MY DIRECTIONS FOR MR. CULVERTON SMITH + QUOTE AH YES I REMEMBER + MY LIFE DEPENDS UPON IT + PLEAD WITH HIM WATSON + THERE IS NO GOOD FEELING BETWEEN US + HIS NEPHEW WATSON I HAD SUSPICIONS OF FOUL PLAY AND I ALLOWED HIM TO SEE IT + THE BOY DIED HORRIBLY + HE HAS A GRUDGE AGAINST ME + YOU WILL SOFTEN HIM WATSON + BEG HIM PRAY HIM GET HIM HERE BY ANY MEANS + HE CAN SAVE ME ONLY HE + I WILL BRING HIM IN A CAB IF I HAVE TO CARRY HIM DOWN TO IT + YOU WILL DO NOTHING OF THE SORT + YOU WILL PERSUADE HIM TO COME + AND THEN YOU WILL RETURN IN FRONT OF HIM + MAKE ANY EXCUSE SO AS NOT TO COME WITH HIM + DON'T FORGET WATSON + YOU WON'T FAIL ME + YOU NEVER DID FAIL ME + NO DOUBT THERE ARE NATURAL ENEMIES WHICH LIMIT THE INCREASE OF THE CREATURES + YOU AND I WATSON WE HAVE DONE OUR PART + SHALL THE WORLD THEN BE OVERRUN BY OYSTERS + NO NO HORRIBLE + YOU'LL CONVEY ALL THAT IS IN YOUR MIND + I LEFT HIM FULL OF THE IMAGE OF THIS MAGNIFICENT INTELLECT BABBLING LIKE A FOOLISH CHILD + HE HAD HANDED ME THE KEY AND WITH A HAPPY THOUGHT I TOOK IT WITH ME LEST HE SHOULD LOCK HIMSELF IN + MRS. HUDSON WAS WAITING TREMBLING AND WEEPING IN THE PASSAGE + BEHIND ME AS I PASSED FROM THE FLAT I HEARD HOLMES'S HIGH THIN VOICE IN SOME DELIRIOUS CHANT + BELOW AS I STOOD WHISTLING FOR A CAB A MAN CAME ON ME THROUGH THE FOG + HOW IS MR. HOLMES SIR HE ASKED + IT WAS AN OLD ACQUAINTANCE INSPECTOR MORTON OF SCOTLAND YARD DRESSED IN UNOFFICIAL TWEEDS + QUOTE HE IS VERY ILL QUOTE I ANSWERED + HE LOOKED AT ME IN A MOST SINGULAR FASHION + HAD IT NOT BEEN TOO FIENDISH I COULD HAVE IMAGINED THAT THE GLEAM OF THE FANLIGHT SHOWED EXULTATION IN HIS FACE + I HEARD SOME RUMOUR OF IT SAID HE + THE CAB HAD DRIVEN UP AND I LEFT HIM + LOWER BURKE STREET PROVED TO BE A LINE OF FINE HOUSES LYING IN THE VAGUE BORDERLAND BETWEEN NOTTING HILL AND KENSINGTON + THE PARTICULAR ONE AT WHICH MY CABMAN PULLED UP HAD AN AIR OF SMUG AND DEMURE RESPECTABILITY IN ITS OLD FASHIONED IRON RAILINGS ITS MASSIVE FOLDING DOOR AND ITS SHINING BRASSWORK + ALL WAS IN KEEPING WITH A SOLEMN BUTLER WHO APPEARED FRAMED IN THE PINK RADIANCE OF A TINTED ELECTRIC LIGHT BEHIND HIM + YES MR. CULVERTON SMITH IS IN + DOCTOR WATSON + VERY GOOD SIR I WILL TAKE UP YOUR CARD + MY HUMBLE NAME AND TITLE DID NOT APPEAR TO IMPRESS MR. CULVERTON SMITH + THROUGH THE HALF OPEN DOOR I HEARD A HIGH PETULANT PENETRATING VOICE + WHO IS THIS PERSON + WHAT DOES HE WANT + DEAR ME STAPLES HOW OFTEN HAVE I SAID THAT I AM NOT TO BE DISTURBED IN MY HOURS OF STUDY + THERE CAME A GENTLE FLOW OF SOOTHING EXPLANATION FROM THE BUTLER + QUOTE WELL I WON'T SEE HIM STAPLES + I CAN'T HAVE MY WORK INTERRUPTED LIKE THIS + I AM NOT AT HOME + SAY SO + TELL HIM TO COME IN THE MORNING IF HE REALLY MUST SEE ME + AGAIN THE GENTLE MURMUR + WELL WELL GIVE HIM THAT MESSAGE + HE CAN COME IN THE MORNING OR HE CAN STAY AWAY + MY WORK MUST NOT BE HINDERED + I THOUGHT OF HOLMES TOSSING UPON HIS BED OF SICKNESS AND COUNTING THE MINUTES PERHAPS UNTIL I COULD BRING HELP TO HIM + IT WAS NOT A TIME TO STAND UPON CEREMONY + HIS LIFE DEPENDED UPON MY PROMPTNESS + BEFORE THE APOLOGETIC BUTLER HAD DELIVERED HIS MESSAGE I HAD PUSHED PAST HIM AND WAS IN THE ROOM + WITH A SHRILL CRY OF ANGER A MAN ROSE FROM A RECLINING CHAIR BESIDE THE FIRE + I SAW A GREAT YELLOW FACE COARSE GRAINED AND GREASY WITH HEAVY DOUBLE CHIN AND TWO SULLEN MENACING GRAY EYES WHICH GLARED AT ME FROM UNDER TUFTED AND SANDY BROWS + A HIGH BALD HEAD HAD A SMALL VELVET SMOKING CAP POISED COQUETTISHLY UPON ONE SIDE OF ITS PINK CURVE + THE SKULL WAS OF ENORMOUS CAPACITY AND YET AS I LOOKED DOWN I SAW TO MY AMAZEMENT THAT THE FIGURE OF THE MAN WAS SMALL AND FRAIL TWISTED IN THE SHOULDERS AND BACK LIKE ONE WHO HAS SUFFERED FROM RICKETS IN HIS CHILDHOOD + WHAT'S THIS HE CRIED IN A HIGH SCREAMING VOICE + WHAT IS THE MEANING OF THIS INTRUSION + DIDN'T I SEND YOU WORD THAT I WOULD SEE YOU TO MORROW MORNING QUOTE + I AM SORRY SAID I BUT THE MATTER CANNOT BE DELAYED + MR. SHERLOCK HOLMES + THE MENTION OF MY FRIEND'S NAME HAD AN EXTRAORDINARY EFFECT UPON THE LITTLE MAN + THE LOOK OF ANGER PASSED IN AN INSTANT FROM HIS FACE + HIS FEATURES BECAME TENSE AND ALERT + HAVE YOU COME FROM HOLMES HE ASKED + I HAVE JUST LEFT HIM + WHAT ABOUT HOLMES + HOW IS HE QUOTE + HE IS DESPERATELY ILL + THAT IS WHY I HAVE COME + THE MAN MOTIONED ME TO A CHAIR AND TURNED TO RESUME HIS OWN + AS HE DID SO I CAUGHT A GLIMPSE OF HIS FACE IN THE MIRROR OVER THE MANTELPIECE + I COULD HAVE SWORN THAT IT WAS SET IN A MALICIOUS AND ABOMINABLE SMILE + YET I PERSUADED MYSELF THAT IT MUST HAVE BEEN SOME NERVOUS CONTRACTION WHICH I HAD SURPRISED FOR HE TURNED TO ME AN INSTANT LATER WITH GENUINE CONCERN UPON HIS FEATURES + I AM SORRY TO HEAR THIS SAID HE + I ONLY KNOW MR. HOLMES THROUGH SOME BUSINESS DEALINGS WHICH WE HAVE HAD BUT I HAVE EVERY RESPECT FOR HIS TALENTS AND HIS CHARACTER + HE IS AN AMATEUR OF CRIME AS I AM OF DISEASE + FOR HIM THE VILLAIN FOR ME THE MICROBE + THERE ARE MY PRISONS HE CONTINUED POINTING TO A ROW OF BOTTLES AND JARS WHICH STOOD UPON A SIDE TABLE + QUOTE AMONG THOSE GELATINE CULTIVATIONS SOME OF THE VERY WORST OFFENDERS IN THE WORLD ARE NOW DOING TIME QUOTE + IT WAS ON ACCOUNT OF YOUR SPECIAL KNOWLEDGE THAT MR. HOLMES DESIRED TO SEE YOU + HE HAS A HIGH OPINION OF YOU AND THOUGHT THAT YOU WERE THE ONE MAN IN LONDON WHO COULD HELP HIM + THE LITTLE MAN STARTED AND THE JAUNTY SMOKING CAP SLID TO THE FLOOR + WHY HE ASKED + WHY SHOULD MR. HOLMES THINK THAT I COULD HELP HIM IN HIS TROUBLE + BECAUSE OF YOUR KNOWLEDGE OF EASTERN DISEASES + QUOTE BUT WHY SHOULD HE THINK THAT THIS DISEASE WHICH HE HAS CONTRACTED IS EASTERN QUOTE + BECAUSE IN SOME PROFESSIONAL INQUIRY HE HAS BEEN WORKING AMONG CHINESE SAILORS DOWN IN THE DOCKS + MR. CULVERTON SMITH SMILED PLEASANTLY AND PICKED UP HIS SMOKING CAP + OH THAT'S IT IS IT SAID HE + I TRUST THE MATTER IS NOT SO GRAVE AS YOU SUPPOSE + HOW LONG HAS HE BEEN ILL + ABOUT THREE DAYS + QUOTE IS HE DELIRIOUS QUOTE + OCCASIONALLY + TUT TUT + THIS SOUNDS SERIOUS + IT WOULD BE INHUMAN NOT TO ANSWER HIS CALL + I VERY MUCH RESENT ANY INTERRUPTION TO MY WORK DOCTOR WATSON BUT THIS CASE IS CERTAINLY EXCEPTIONAL + I WILL COME WITH YOU AT ONCE + I REMEMBERED HOLMES'S INJUNCTION + I HAVE ANOTHER APPOINTMENT SAID I + VERY GOOD + I WILL GO ALONE + I HAVE A NOTE OF MR. HOLMES'S ADDRESS + YOU CAN RELY UPON MY BEING THERE WITHIN HALF AN HOUR AT MOST QUOTE + IT WAS WITH A SINKING HEART THAT I REENTERED HOLMES'S BEDROOM + FOR ALL THAT I KNEW THE WORST MIGHT HAVE HAPPENED IN MY ABSENCE + TO MY ENORMOUS RELIEF HE HAD IMPROVED GREATLY IN THE INTERVAL + HIS APPEARANCE WAS AS GHASTLY AS EVER BUT ALL TRACE OF DELIRIUM HAD LEFT HIM AND HE SPOKE IN A FEEBLE VOICE IT IS TRUE BUT WITH EVEN MORE THAN HIS USUAL CRISPNESS AND LUCIDITY + WELL DID YOU SEE HIM WATSON + YES HE IS COMING + ADMIRABLE WATSON + ADMIRABLE + YOU ARE THE BEST OF MESSENGERS + HE WISHED TO RETURN WITH ME + QUOTE THAT WOULD NEVER DO WATSON + THAT WOULD BE OBVIOUSLY IMPOSSIBLE + DID HE ASK WHAT AILED ME + I TOLD HIM ABOUT THE CHINESE IN THE EAST END + EXACTLY + WELL WATSON YOU HAVE DONE ALL THAT A GOOD FRIEND COULD + YOU CAN NOW DISAPPEAR FROM THE SCENE + I MUST WAIT AND HEAR HIS OPINION HOLMES + QUOTE OF COURSE YOU MUST + BUT I HAVE REASONS TO SUPPOSE THAT THIS OPINION WOULD BE VERY MUCH MORE FRANK AND VALUABLE IF HE IMAGINES THAT WE ARE ALONE + THERE IS JUST ROOM BEHIND THE HEAD OF MY BED WATSON + MY DEAR HOLMES + I FEAR THERE IS NO ALTERNATIVE WATSON + THE ROOM DOES NOT LEND ITSELF TO CONCEALMENT WHICH IS AS WELL AS IT IS THE LESS LIKELY TO AROUSE SUSPICION + BUT JUST THERE WATSON I FANCY THAT IT COULD BE DONE + SUDDENLY HE SAT UP WITH A RIGID INTENTNESS UPON HIS HAGGARD FACE + THERE ARE THE WHEELS WATSON + QUICK MAN IF YOU LOVE ME + AND DON'T BUDGE WHATEVER HAPPENS WHATEVER HAPPENS DO YOU HEAR + DON'T SPEAK + DON'T MOVE + JUST LISTEN WITH ALL YOUR EARS QUOTE + THEN IN AN INSTANT HIS SUDDEN ACCESS OF STRENGTH DEPARTED AND HIS MASTERFUL PURPOSEFUL TALK DRONED AWAY INTO THE LOW VAGUE MURMURINGS OF A SEMI DELLRIOUS MAN + FROM THE HIDING PLACE INTO WHICH I HAD BEEN SO SWIFTLY HUSTLED I HEARD THE FOOTFALLS UPON THE STAIR WITH THE OPENING AND THE CLOSING OF THE BEDROOM DOOR + THEN TO MY SURPRISE THERE CAME A LONG SILENCE BROKEN ONLY BY THE HEAVY BREATHINGS AND GASPINGS OF THE SICK MAN + I COULD IMAGINE THAT OUR VISITOR WAS STANDING BY THE BEDSIDE AND LOOKING DOWN AT THE SUFFERER + AT LAST THAT STRANGE HUSH WAS BROKEN + HOLMES HE CRIED + HOLMES IN THE INSISTENT TONE OF ONE WHO AWAKENS A SLEEPER + CAN'T YOU HEAR ME HOLMES + THERE WAS A RUSTLING AS IF HE HAD SHAKEN THE SICK MAN ROUGHLY BY THE SHOULDER + IS THAT YOU MR. SMITH + HOLMES WHISPERED + I HARDLY DARED HOPE THAT YOU WOULD COME + THE OTHER LAUGHED + QUOTE I SHOULD IMAGINE NOT QUOTE HE SAID + AND YET YOU SEE I AM HERE + COALS OF FIRE HOLMES COALS OF FIRE + IT IS VERY GOOD OF YOU VERY NOBLE OF YOU + I APPRECIATE YOUR SPECIAL KNOWLEDGE + OUR VISITOR SNIGGERED + YOU DO + YOU ARE FORTUNATELY THE ONLY MAN IN LONDON WHO DOES + DO YOU KNOW WHAT IS THE MATTER WITH YOU QUOTE + THE SAME SAID HOLMES + AH + YOU RECOGNIZE THE SYMPTOMS + ONLY TOO WELL + WELL I SHOULDN'T BE SURPRISED HOLMES + I SHOULDN'T BE SURPRISED IF IT WERE THE SAME + A BAD LOOKOUT FOR YOU IF IT IS + POOR VICTOR WAS A DEAD MAN ON THE FOURTH DAY A STRONG HEARTY YOUNG FELLOW + IT WAS CERTAINLY AS YOU SAID VERY SURPRISING THAT HE SHOULD HAVE CONTRACTED AN OUT OF THE WAY ASIATIC DISEASE IN THE HEART OF LONDON A DISEASE TOO OF WHICH I HAD MADE SUCH A VERY SPECIAL STUDY + SINGULAR COINCIDENCE HOLMES + VERY SMART OF YOU TO NOTICE IT BUT RATHER UNCHARITABLE TO SUGGEST THAT IT WAS CAUSE AND EFFECT QUOTE + I KNEW THAT YOU DID IT + OH YOU DID DID YOU + WELL YOU COULDN'T PROVE IT ANYHOW + BUT WHAT DO YOU THINK OF YOURSELF SPREADING REPORTS ABOUT ME LIKE THAT AND THEN CRAWLING TO ME FOR HELP THE MOMENT YOU ARE IN TROUBLE + WHAT SORT OF A GAME IS THAT EH + I HEARD THE RASPING LABOURED BREATHING OF THE SICK MAN + GIVE ME THE WATER HE GASPED + YOU'RE PRECIOUS NEAR YOUR END MY FRIEND BUT I DON'T WANT YOU TO GO TILL I HAVE HAD A WORD WITH YOU + THAT'S WHY I GIVE YOU WATER + THERE DON'T SLOP IT ABOUT + THAT'S RIGHT + CAN YOU UNDERSTAND WHAT I SAY QUOTE + HOLMES GROANED + DO WHAT YOU CAN FOR ME + LET BYGONES BE BYGONES HE WHISPERED + I'LL PUT THE WORDS OUT OF MY HEAD I SWEAR I WILL + ONLY CURE ME AND I'LL FORGET IT + FORGET WHAT + QUOTE WELL ABOUT VICTOR SAVAGE'S DEATH + YOU AS GOOD AS ADMITTED JUST NOW THAT YOU HAD DONE IT + I'LL FORGET IT + YOU CAN FORGET IT OR REMEMBER IT JUST AS YOU LIKE + I DON'T SEE YOU IN THE WITNESS BOX + QUITE ANOTHER SHAPED BOX MY GOOD HOLMES I ASSURE YOU + IT MATTERS NOTHING TO ME THAT YOU SHOULD KNOW HOW MY NEPHEW DIED + IT'S NOT HIM WE ARE TALKING ABOUT + IT'S YOU + YES YES + THE FELLOW WHO CAME FOR ME I'VE FORGOTTEN HIS NAME SAID THAT YOU CONTRACTED IT DOWN IN THE EAST END AMONG THE SAILORS + QUOTE I COULD ONLY ACCOUNT FOR IT SO QUOTE + YOU ARE PROUD OF YOUR BRAINS HOLMES ARE YOU NOT + THINK YOURSELF SMART DON'T YOU + YOU CAME ACROSS SOMEONE WHO WAS SMARTER THIS TIME + NOW CAST YOUR MIND BACK HOLMES + CAN YOU THINK OF NO OTHER WAY YOU COULD HAVE GOT THIS THING + I CAN'T THINK + MY MIND IS GONE + FOR HEAVEN'S SAKE HELP ME + YES I WILL HELP YOU + I'LL HELP YOU TO UNDERSTAND JUST WHERE YOU ARE AND HOW YOU GOT THERE + I'D LIKE YOU TO KNOW BEFORE YOU DIE QUOTE + GIVE ME SOMETHING TO EASE MY PAIN + PAINFUL IS IT + YES THE COOLIES USED TO DO SOME SQUEALING TOWARDS THE END + TAKES YOU AS CRAMP I FANCY + YES YES IT IS CRAMP + WELL YOU CAN HEAR WHAT I SAY ANYHOW + LISTEN NOW + CAN YOU REMEMBER ANY UNUSUAL INCIDENT IN YOUR LIFE JUST ABOUT THE TIME YOUR SYMPTOMS BEGAN QUOTE + NO NO NOTHING + THINK AGAIN + I'M TOO ILL TO THINK + WELL THEN I'LL HELP YOU + DID ANYTHING COME BY POST + QUOTE BY POST QUOTE + A BOX BY CHANCE + I'M FAINTING I'M GONE + LISTEN HOLMES + THERE WAS A SOUND AS IF HE WAS SHAKING THE DYING MAN AND IT WAS ALL THAT I COULD DO TO HOLD MYSELF QUIET IN MY HIDING PLACE + YOU MUST HEAR ME + YOU SHALL HEAR ME + DO YOU REMEMBER A BOX AN IVORY BOX + IT CAME ON WEDNESDAY + YOU OPENED IT DO YOU REMEMBER + QUOTE YES YES I OPENED IT + THERE WAS A SHARP SPRING INSIDE IT + SOME JOKE + IT WAS NO JOKE AS YOU WILL FIND TO YOUR COST + YOU FOOL YOU WOULD HAVE IT AND YOU HAVE GOT IT + WHO ASKED YOU TO CROSS MY PATH + IF YOU HAD LEFT ME ALONE I WOULD NOT HAVE HURT YOU + I REMEMBER HOLMES GASPED + THE SPRING + IT DREW BLOOD + THIS BOX THIS ON THE TABLE QUOTE + THE VERY ONE BY GEORGE + AND IT MAY AS WELL LEAVE THE ROOM IN MY POCKET + THERE GOES YOUR LAST SHRED OF EVIDENCE + BUT YOU HAVE THE TRUTH NOW HOLMES AND YOU CAN DIE WITH THE KNOWLEDGE THAT I KILLED YOU + YOU KNEW TOO MUCH OF THE FATE OF VICTOR SAVAGE SO I HAVE SENT YOU TO SHARE IT + YOU ARE VERY NEAR YOUR END HOLMES + I WILL SIT HERE AND I WILL WATCH YOU DIE + HOLMES'S VOICE HAD SUNK TO AN ALMOST INAUDIBLE WHISPER + WHAT IS THAT SAID SMITH + TURN UP THE GAS + AH THE SHADOWS BEGIN TO FALL DO THEY + YES I WILL TURN IT UP THAT I MAY SEE YOU THE BETTER + HE CROSSED THE ROOM AND THE LIGHT SUDDENLY BRIGHTENED + QUOTE IS THERE ANY OTHER LITTLE SERVICE THAT I CAN DO YOU MY FRIEND QUOTE + A MATCH AND A CIGARETTE + I NEARLY CALLED OUT IN MY JOY AND MY AMAZEMENT + HE WAS SPEAKING IN HIS NATURAL VOICE A LITTLE WEAK PERHAPS BUT THE VERY VOICE I KNEW + THERE WAS A LONG PAUSE AND I FELT THAT CULVERTON SMITH WAS STANDING IN SILENT AMAZEMENT LOOKING DOWN AT HIS COMPANION + WHAT'S THE MEANING OF THIS + I HEARD HIM SAY AT LAST IN A DRY RASPING TONE + THE BEST WAY OF SUCCESSFULLY ACTING A PART IS TO BE IT SAID HOLMES + I GIVE YOU MY WORD THAT FOR THREE DAYS I HAVE TASTED NEITHER FOOD NOR DRINK UNTIL YOU WERE GOOD ENOUGH TO POUR ME OUT THAT GLASS OF WATER + BUT IT IS THE TOBACCO WHICH I FIND MOST IRKSOME + AH HERE ARE SOME CIGARETTES + I HEARD THE STRIKING OF A MATCH + QUOTE THAT IS VERY MUCH BETTER + HALLOA HALLOA + DO I HEAR THE STEP OF A FRIEND + THERE WERE FOOTFALLS OUTSIDE THE DOOR OPENED AND INSPECTOR MORTON APPEARED + ALL IS IN ORDER AND THIS IS YOUR MAN SAID HOLMES + THE OFFICER GAVE THE USUAL CAUTIONS + I ARREST YOU ON THE CHARGE OF THE MURDER OF ONE VICTOR SAVAGE HE CONCLUDED + AND YOU MIGHT ADD OF THE ATTEMPTED MURDER OF ONE SHERLOCK HOLMES REMARKED MY FRIEND WITH A CHUCKLE + TO SAVE AN INVALID TROUBLE INSPECTOR MR. CULVERTON SMITH WAS GOOD ENOUGH TO GIVE OUR SIGNAL BY TURNING UP THE GAS + BY THE WAY THE PRISONER HAS A SMALL BOX IN THE RIGHT HAND POCKET OF HIS COAT WHICH IT WOULD BE AS WELL TO REMOVE + THANK YOU + I WOULD HANDLE IT GINGERLY IF I WERE YOU + PUT IT DOWN HERE + IT MAY PLAY ITS PART IN THE TRIAL QUOTE + THERE WAS A SUDDEN RUSH AND A SCUFFLE FOLLOWED BY THE CLASH OF IRON AND A CRY OF PAIN + YOU'LL ONLY GET YOURSELF HURT SAID THE INSPECTOR + STAND STILL WILL YOU + THERE WAS THE CLICK OF THE CLOSING HANDCUFFS + A NICE TRAP CRIED THE HIGH SNARLING VOICE + IT WILL BRING YOU INTO THE DOCK HOLMES NOT ME + HE ASKED ME TO COME HERE TO CURE HIM + I WAS SORRY FOR HIM AND I CAME + NOW HE WILL PRETEND NO DOUBT THAT I HAVE SAID ANYTHING WHICH HE MAY INVENT WHICH WILL CORROBORATE HIS INSANE SUSPICIONS + YOU CAN LIE AS YOU LIKE HOLMES + MY WORD IS ALWAYS AS GOOD AS YOURS + QUOTE GOOD HEAVENS QUOTE CRIED HOLMES + I HAD TOTALLY FORGOTTEN HIM + MY DEAR WATSON I OWE YOU A THOUSAND APOLOGIES + TO THINK THAT I SHOULD HAVE OVERLOOKED YOU + I NEED NOT INTRODUCE YOU TO MR. CULVERTON SMITH SINCE I UNDERSTAND THAT YOU MET SOMEWHAT EARLIER IN THE EVENING + HAVE YOU THE CAB BELOW + I WILL FOLLOW YOU WHEN I AM DRESSED FOR I MAY BE OF SOME USE AT THE STATION + I NEVER NEEDED IT MORE SAID HOLMES AS HE REFRESHED HIMSELF WITH A GLASS OF CLARET AND SOME BISCUITS IN THE INTERVALS OF HIS TOILET + HOWEVER AS YOU KNOW MY HABITS ARE IRREGULAR AND SUCH A FEAT MEANS LESS TO ME THAN TO MOST MEN + IT WAS VERY ESSENTIAL THAT I SHOULD IMPRESS MRS. HUDSON WITH THE REALITY OF MY CONDITION SINCE SHE WAS TO CONVEY IT TO YOU AND YOU IN TURN TO HIM + YOU WON'T BE OFFENDED WATSON + YOU WILL REALIZE THAT AMONG YOUR MANY TALENTS DISSIMULATION FINDS NO PLACE AND THAT IF YOU HAD SHARED MY SECRET YOU WOULD NEVER HAVE BEEN ABLE TO IMPRESS SMITH WITH THE URGENT NECESSITY OF HIS PRESENCE WHICH WAS THE VITAL POINT OF THE WHOLE SCHEME + KNOWING HIS VINDICTIVE NATURE I WAS PERFECTLY CERTAIN THAT HE WOULD COME TO LOOK UPON HIS HANDIWORK + BUT YOUR APPEARANCE HOLMES YOUR GHASTLY FACE + QUOTE THREE DAYS OF ABSOLUTE FAST DOES NOT IMPROVE ONE'S BEAUTY WATSON + FOR THE REST THERE IS NOTHING WHICH A SPONGE MAY NOT CURE + WITH VASELINE UPON ONE'S FOREHEAD BELLADONNA IN ONE'S EYES ROUGE OVER THE CHEEK BONES AND CRUSTS OF BEESWAX ROUND ONE'S LIPS A VERY SATISFYING EFFECT CAN BE PRODUCED + MALINGERING IS A SUBJECT UPON WHICH I HAVE SOMETIMES THOUGHT OF WRITING A MONOGRAPH + A LITTLE OCCASIONAL TALK ABOUT HALF CROWNS OYSTERS OR ANY OTHER EXTRANEOUS SUBJECT PRODUCES A PLEASING EFFECT OF DELIRIUM + BUT WHY WOULD YOU NOT LET ME NEAR YOU SINCE THERE WAS IN TRUTH NO INFECTION + CAN YOU ASK MY DEAR WATSON + DO YOU IMAGINE THAT I HAVE NO RESPECT FOR YOUR MEDICAL TALENTS + COULD I FANCY THAT YOUR ASTUTE JUDGMENT WOULD PASS A DYING MAN WHO HOWEVER WEAK HAD NO RISE OF PULSE OR TEMPERATURE + AT FOUR YARDS I COULD DECEIVE YOU + IF I FAILED TO DO SO WHO WOULD BRING MY SMITH WITHIN MY GRASP + NO WATSON I WOULD NOT TOUCH THAT BOX + YOU CAN JUST SEE IF YOU LOOK AT IT SIDEWAYS WHERE THE SHARP SPRING LIKE A VIPER'S TOOTH EMERGES AS YOU OPEN IT + I DARE SAY IT WAS BY SOME SUCH DEVICE THAT POOR SAVAGE WHO STOOD BETWEEN THIS MONSTER AND A REVERSION WAS DONE TO DEATH + MY CORRESPONDENCE HOWEVER IS AS YOU KNOW A VARIED ONE AND I AM SOMEWHAT UPON MY GUARD AGAINST ANY PACKAGES WHICH REACH ME + IT WAS CLEAR TO ME HOWEVER THAT BY PRETENDING THAT HE HAD REALLY SUCCEEDED IN HIS DESIGN I MIGHT SURPRISE A CONFESSION + THAT PRETENCE I HAVE CARRIED OUT WITH THE THOROUGHNESS OF THE TRUE ARTIST + THANK YOU WATSON YOU MUST HELP ME ON WITH MY COAT + WHEN WE HAVE FINISHED AT THE POLICE STATION I THINK THAT SOMETHING NUTRITIOUS AT SIMPSON'S WOULD NOT BE OUT OF PLACE diff --git a/samples/LMTutorial/train/empty_house.txt b/samples/LMTutorial/train/empty_house.txt new file mode 100755 index 0000000..021ad4f --- /dev/null +++ b/samples/LMTutorial/train/empty_house.txt @@ -0,0 +1,490 @@ + IT WAS IN THE SPRING OF THE YEAR ONE THOUSAND EIGHT HUNDRED NINETY FOUR THAT ALL LONDON WAS INTERESTED AND THE FASHIONABLE WORLD DISMAYED BY THE MURDER OF THE HONOURABLE RONALD ADAIR UNDER MOST UNUSUAL AND INEXPLICABLE CIRCUMSTANCES + THE PUBLIC HAS ALREADY LEARNED THOSE PARTICULARS OF THE CRIME WHICH CAME OUT IN THE PO ICE INVESTIGATION BUT A GOOD DEAL WAS SUPPRESSED UPON THAT OCCASION SINCE THE CASE FOR THE PROSECUTION WAS SO OVERWHELMINGLY STRONG THAT IT WAS NOT NECESSARY TO BRING FORWARD ALL THE FACTS + ONLY NOW AT THE END OF NEARLY TEN YEARS AM I ALLOWED TO SUPPLY THOSE MISSING LINKS WHICH MAKE UP THE WHOLE OF THAT REMARKABLE CHAIN + THE CRIME WAS OF INTEREST IN ITSELF BUT THAT INTEREST WAS AS NOTHING TO ME COMPARED TO THE INCONCEIVABLE SEQUEL WHICH AFFORDED ME THE GREATEST SHOCK AND SURPRISE OF ANY EVENT IN MY ADVENTUROUS LIFE + EVEN NOW AFTER THIS LONG INTERVAL I FIND MYSELF THRILLING AS I THINK OF IT AND FEELING ONCE MORE THAT SUDDEN FLOOD OF JOY AMAZEMENT AND INCREDULITY WHICH UTTERLY SUBMERGED MY MIND + LET ME SAY TO THAT PUBLIC WHICH HAS SHOWN SOME INTEREST IN THOSE GLIMPSES WHICH I HAVE OCCASIONALLY GIVEN THEM OF THE THOUGHTS AND ACTIONS OF A VERY REMARKABLE MAN THAT THEY ARE NOT TO BLAME ME IF I HAVE NOT SHARED MY KNOWLEDGE WITH THEM FOR I SHOULD HAVE CONSIDERED IT MY FIRST DUTY TO DO SO HAD I NOT BEEN BARRED BY A POSITIVE PROHIBITION FROM HIS OWN LIPS WHICH WAS ONLY WITHDRAWN UPON THE THIRD OF LAST MONTH + IT CAN BE IMAGINED THAT MY CLOSE INTIMACY WITH SHERLOCK HOLMES HAD INTERESTED ME DEEPLY IN CRIME AND THAT AFTER HIS DISAPPEARANCE I NEVER FAILED TO READ WITH CARE THE VARIOUS PROBLEMS WHICH CAME BEFORE THE PUBLIC + AND I EVEN ATTEMPTED MORE THAN ONCE FOR MY OWN PRIVATE SATISFACTION TO EMPLOY HIS METHODS IN THEIR SOLUTION THOUGH WITH INDIFFERENT SUCCESS + THERE WAS NONE HOWEVER WHICH APPEALED TO ME LIKE THIS TRAGEDY OF RONALD ADAIR + AS I READ THE EVIDENCE AT THE INQUEST WHICH LED UP TO A VERDICT OF WILFUL MURDER AGAINST SOME PERSON OR PERSONS UNKNOWN I REALIZED MORE CLEARLY THAN I HAD EVER DONE THE LOSS WHICH THE COMMUNITY HAD SUSTAINED BY THE DEATH OF SHERLOCK HOLMES + THERE WERE POINTS ABOUT THIS STRANGE BUSINESS WHICH WOULD I WAS SURE HAVE SPECIALLY APPEALED TO HIM AND THE EFFORTS OF THE POLICE WOULD HAVE BEEN SUPPLEMENTED OR MORE PROBABLY ANTICIPATED BY THE TRAINED OBSERVATION AND THE ALERT MIND OF THE FIRST CRIMINAL AGENT IN EUROPE + ALL DAY. AS I DROVE UPON MY ROUND I TURNED OVER THE CASE IN MY MIND AND FOUND NO EXPLANATION WHICH APPEARED TO ME TO BE ADEQUATE + AT THE RISK OF TELLING A TWICE TOLD TALE + I WILL RECAPITULATE THE FACTS AS THEY WERE KNOWN TO THE PUBLIC AT THE CONCLUSION OF THE INQUEST + THE HONOURABLE RONALD ADAIR WAS THE SECOND SON OF THE EARL OF MAYNOOTH AT THAT TIME GOVERNOR OF ONE OF THE AUSTRALIAN COLONIES + ADAIR'S MOTHER HAD RETURNED FROM AUSTRALIA TO UNDERGO THE OPERATION FOR CATARACT AND SHE HER SON RONALD AND HER DAUGHTER HILDA WERE LIVING TOGETHER AT FOUR HUNDRED TWENTY SEVEN PARK LANE + THE YOUTH MOVED IN THE BEST SOCIETY HAD SO FAR AS WAS KNOWN NO ENEMIES AND NO PARTICULAR VICES + HE HAD BEEN ENGAGED TO MISS EDITH WOODLEY OF CARSTAIRS BUT THE ENGAGEMENT HAD BEEN BROKEN OFF BY MUTUAL CONSENT SOME MONTHS BEFORE AND THERE WAS NO SIGN THAT IT HAD LEFT ANY VERY PROFOUND FEELING BEHIND IT + FOR THE REST OF THE MAN'S LIFE MOVED IN A NARROW AND CONVENTIONAL CIRCLE FOR HIS HABITS WERE QUIET AND HIS NATURE UNEMOTIONAL + YET IT WAS UPON THIS EASY GOING YOUNG ARISTOCRAT THAT DEATH CAME IN MOST STRANGE AND UNEXPECTED FORM BETWEEN THE HOURS OF TEN AND ELEVEN TWENTY ON THE NIGHT OF MARCH THIRTIETH ONE THOUSAND EIGHT HUNDRED NINETY FOUR + RONALD ADAIR WAS FOND OF CARDS PLAYING CONTINUALLY BUT NEVER FOR SUCH STAKES AS WOULD HURT HIM + HE WAS A MEMBER OF THE BALDWIN THE CAVENDISH AND THE BAGATELLE CARD CLUBS + IT WAS SHOWN THAT AFTER DINNER ON THE DAY OF HIS DEATH HE HAD PLAYED A RUBBER OF WHIST AT THE LATTER CLUB + HE HAD ALSO PLAYED THERE IN THE AFTERNOON + THE EVIDENCE OF THOSE WHO HAD PLAYED WITH HIM MR. MURRAY SIR JOHN HARDY AND COLONEL MORAN SHOWED THAT THE GAME WAS WHIST AND THAT THERE WAS A FAIRLY EQUAL FALL OF THE CARDS + ADAIR MIGHT HAVE LOST FIVE POUNDS BUT NOT MORE + HIS FORTUNE WAS A CONSIDERABLE ONE AND SUCH A LOSS COULD NOT IN ANY WAY AFFECT HIM + HE HAD PLAYED NEARLY EVERY DAY AT ONE CLUB OR OTHER BUT HE WAS A CAUTIOUS PLAYER AND USUALLY ROSE A WINNER + IT CAME OUT IN EVIDENCE THAT IN PARTNERSHIP WITH COLONEL MORAN HE HAD ACTUALLY WON AS MUCH AS FOUR HUNDRED AND TWENTY POUNDS IN A SITTING SOME WEEKS BEFORE FROM GODFREY MILNER AND LORD BALMORAL + SO MUCH FOR HIS RECENT HISTORY AS IT CAME OUT AT THE INQUEST + ON THE EVENING OF THE CRIME HE RETURNED FROM THE CLUB EXACTLY AT TEN + HIS MOTHER AND SISTER WERE OUT SPENDING THE EVENING WITH A RELATION + THE SERVANT DEPOSED THAT SHE HEARD HIM ENTER THE FRONT ROOM ON THE SECOND FLOOR GENERALLY USED AS HIS SITTING ROOM + SHE HAD LIT A FIRE THERE AND AS IT SMOKED SHE HAD OPENED THE WINDOW + NO SOUND WAS HEARD FROM THE ROOM UNTIL ELEVEN TWENTY THE HOUR OF THE RETURN OF LADY MAYNOOTH AND HER DAUGHTER + DESIRING TO SAY GOOD NIGHT SHE ATTEMPTED TO ENTER HER SON'S ROOM + THE DOOR WAS LOCKED ON THE INSIDE AND NO ANSWER COULD BE GOT TO THEIR CRIES AND KNOCKING + HELP WAS OBTAINED AND THE DOOR FORCED + THE UNFORTUNATE YOUNG MAN WAS FOUND LYING NEAR THE TABLE + HIS HEAD HAD BEEN HORRIBLY MUTILATED BY AN EXPANDING REVOLVER BULLET BUT NO WEAPON OF ANY SORT WAS TO BE FOUND IN THE ROOM + ON THE TABLE LAY TWO BANKNOTES FOR TEN POUNDS EACH AND SEVENTEEN POUNDS TEN IN SILVER AND GOLD THE MONEY ARRANGED IN LITTLE PILES OF VARYING AMOUNT + THERE WERE SOME FIGURES ALSO UPON A SHEET OF PAPER WITH THE NAMES OF SOME CLUB FRIENDS OPPOSITE TO THEM FROM WHICH IT WAS CONJECTURED THAT BEFORE HIS DEATH HE WAS ENDEAVOURING TO MAKE OUT HIS LOSSES OR WINNINGS AT CARDS + A MINUTE EXAMINATION OF THE CIRCUMSTANCES SERVED ONLY TO MAKE THE CASE MORE COMPLEX + IN THE FIRST PLACE NO REASON COULD BE GIVEN WHY THE YOUNG MAN SHOULD HAVE FASTENED THE DOOR UPON THE INSIDE + THERE WAS THE POSSIBILITY THAT THE MURDERER HAD DONE THIS AND HAD AFTERWARDS ESCAPED BY THE WINDOW + THE DROP WAS AT LEAST TWENTY FEET HOWEVER AND A BED OF CROCUSES IN FULL BLOOM LAY BENEATH + NEITHER THE FLOWERS NOR THE EARTH SHOWED ANY SIGN OF HAVING BEEN DISTURBED NOR WERE THERE ANY MARKS UPON THE NARROW STRIP OF GRASS WHICH SEPARATED THE HOUSE FROM THE ROAD + APPARENTLY THEREFORE IT WAS THE YOUNG MAN HIMSELF WHO HAD FASTENED THE DOOR + BUT HOW DID HE COME BY HIS DEATH + NO ONE COULD HAVE CLIMBED UP TO THE WINDOW WITHOUT LEAVING TRACES + SUPPOSE A MAN HAD FIRED THROUGH THE WINDOW HE WOULD INDEED BE A REMARKABLE SHOT WHO COULD WITH A REVOLVER INFLICT SO DEADLY A WOUND + AGAIN PARK LANE IS A FREQUENTED THOROUGHFARE THERE IS A CAB STAND WITHIN A HUNDRED YARDS OF THE HOUSE + NO ONE HAD HEARD A SHOT + AND YET THERE WAS THE DEAD MAN AND THERE THE REVOLVER BULLET WHICH HAD MUSHROOMED OUT AS SOFT NOSED BULLETS WILL AND SO INFLICTED A WOUND WHICH MUST HAVE CAUSED INSTANTANEOUS DEATH + SUCH WERE THE CIRCUMSTANCES OF THE PARK LANE MYSTERY WHICH WERE FURTHER COMPLICATED BY ENTIRE ABSENCE OF MOTIVE SINCE AS I HAVE SAID YOUNG ADAIR WAS NOT KNOWN TO HAVE ANY ENEMY AND NO ATTEMPT HAD BEEN MADE TO REMOVE THE MONEY OR VALUABLES IN THE ROOM + ALL DAY I TURNED THESE FACTS OVER IN MY MIND ENDEAVOURING TO HIT SOME THEORY WHICH COULD RECONCILE THEM ALL AND TO FIND THAT LINE OF LEAST RESISTANCE WHICH MY POOR FRIEND HAD DECLARED TO BE THE STARTING POINT OF EVERY INVESTIGATION + I CONFESS THAT I MADE LITTLE PROGRESS + IN THE EVENING I STROLLED ACROSS THE PARK AND FOUND MYSELF ABOUT SIX O'CLOCK AT THE OXFORD STREET END OF PARK LANE + A GROUP OF LOAFERS UPON THE PAVEMENTS ALL STARING UP AT A PARTICULAR WINDOW DIRECTED ME TO THE HOUSE WHICH I HAD COME TO SEE + A TALL THIN MAN WITH COLOURED GLASSES WHOM I STRONGLY SUSPECTED OF BEING A PLAIN CLOTHES DETECTIVE WAS POINTING OUT SOME THEORY OF HIS OWN WHILE THE OTHERS CROWDED ROUND TO LISTEN TO WHAT HE SAID + I GOT AS NEAR HIM AS I COULD BUT HIS OBSERVATIONS SEEMED TO ME TO BE ABSURD SO I WITHDREW AGAIN IN SOME DISGUST + AS I DID SO I STRUCK AGAINST AN ELDERLY DEFORMED MAN WHO HAD BEEN BEHIND ME AND I KNOCKED DOWN SEVERAL BOOKS WHICH HE WAS CARRYING + I REMEMBER THAT AS I PICKED THEM UP I OBSERVED THE TITLE OF ONE OF THEM THE ORIGIN OF TREE WORSHIP AND IT STRUCK ME THAT THE FELLOW MUST BE SOME POOR BIBLIOPHILE WHO EITHER AS A TRADE OR AS A HOBBY WAS A COLLECTOR OF OBSCURE VOLUMES + I ENDEAVOURED TO APOLOGIZE FOR THE ACCIDENT BUT IT WAS EVIDENT THAT THESE BOOKS WHICH I HAD SO UNFORTUNATELY MALTREATED WERE VERY PRECIOUS OBJECTS IN THE EYES OF THEIR OWNER + WITH A SNARL OF CONTEMPT HE TURNED UPON HIS HEEL AND I SAW HIS CURVED BACK AND WHITE SIDE WHISKERS DISAPPEAR AMONG THE THRONG + MY OBSERVATIONS OF NUMBER FOUR HUNDRED TWENTY SEVEN PARK LANE DID LITTLE TO CLEAR UP THE PROBLEM IN WHICH I WAS INTERESTED + THE HOUSE WAS SEPARATED FROM THE STREET BY A LOW WALL AND RAILING THE WHOLE NOT MORE THAN FIVE FEET HIGH + IT WAS PERFECTLY EASY THEREFORE FOR ANYONE TO GET INTO THE GARDEN BUT THE WINDOW WAS ENTIRELY INACCESSIBLE SINCE THERE WAS NO WATERPIPE OR ANYTHING WHICH COULD HELP THE MOST ACTIVE MAN TO CLIMB IT + MORE PUZZLED THAN EVER I RETRACED MY STEPS TO KENSINGTON + I HAD NOT BEEN IN MY STUDY FIVE MINUTES WHEN THE MAID ENTERED TO SAY THAT A PERSON DESIRED TO SEE ME + TO MY ASTONISHMENT IT WAS NONE OTHER THAN MY STRANGE OLD BOOK COLLECTOR HIS SHARP WIZENED FACE PEERING OUT FROM A FRAME OF WHITE HAIR AND HIS PRECIOUS VOLUMES A DOZEN OF THEM AT LEAST WEDGED UNDER HIS RIGHT ARM + QUOTE YOU'RE SURPRISED TO SEE ME SIR QUOTE SAID HE IN A STRANGE CROAKING VOICE + I ACKNOWLEDGED THAT I WAS + WELL I'VE A CONSCIENCE SIR AND WHEN I CHANCED TO SEE YOU GO INTO THIS HOUSE AS I CAME HOBBLING AFTER YOU I THOUGHT TO MYSELF I'LL JUST STEP IN AND SEE THAT KIND GENTLEMAN AND TELL HIM THAT IF I WAS A BIT GRUFF IN MY MANNER THERE WAS NOT ANY HARM MEANT AND THAT I AM MUCH OBLIGED TO HIM FOR PICKING UP MY BOOKS + YOU MAKE TOO MUCH OF A TRIFLE SAID I. MAY I ASK HOW YOU KNEW WHO I WAS + WELL SIR IF IT ISN'T TOO GREAT A LIBERTY I AM A NEIGHBOUR OF YOURS FOR YOU'LL FIND MY LITTLE BOOKSHOP AT THE CORNER OF CHURCH STREET AND VERY HAPPY TO SEE YOU I AM SURE + MAYBE YOU COLLECT YOURSELF SIR + HERE'S BRITISH BIRDS AND CATULLUS AND THE HOLY WAR A BARGAIN EVERY ONE OF THEM + WITH FIVE VOLUMES YOU COULD JUST FILL THAT GAP ON THAT SECOND SHELF + IT LOOKS UNTIDY DOES IT NOT SIR + I MOVED MY HEAD TO LOOK AT THE CABINET BEHIND ME + WHEN I TURNED AGAIN SHERLOCK HOLMES WAS STANDING SMILING AT ME ACROSS MY STUDY TABLE + I ROSE TO MY FEET STARED AT HIM FOR SOME SECONDS IN UTTER AMAZEMENT AND THEN IT APPEARS THAT I MUST HAVE FAINTED FOR THE FIRST AND THE LAST TIME IN MY LIFE + CERTAINLY A GRAY MIST SWIRLED BEFORE MY EYES AND WHEN IT CLEARED I FOUND MY COLLARENDS UNDONE AND THE TINGLING AFTER TASTE OF BRANDY UPON MY LIPS + HOLMES WAS BENDING OVER MY CHAIR HIS FLASK IN HIS HAND + MY DEAR WATSON SAID THE WELL REMEMBERED VOICE I OWE YOU A THOUSAND APOLOGIES + I HAD NO IDEA THAT YOU WOULD BE SO AFFECTED QUOTE + I GRIPPED HIM BY THE ARMS + HOLMES + I CRIED + IS IT REALLY YOU + CAN IT INDEED BE THAT YOU ARE ALIVE + IS IT POSSIBLE THAT YOU SUCCEEDED IN CLIMBING OUT OF THAT AWFUL ABYSS + WAIT A MOMENT SAID HE + ARE YOU SURE THAT YOU ARE REALLY FIT TO DISCUSS THINGS + I HAVE GIVEN YOU A SERIOUS SHOCK BY MY UNNECESSARILY DRAMATIC REAPPEARANCE QUOTE + I AM ALL RIGHT BUT INDEED HOLMES I CAN HARDLY BELIEVE MY EYES + GOOD HEAVENS TO THINK THAT YOU YOU OF ALL MEN SHOULD BE STANDING IN MY STUDY + AGAIN I GRIPPED HIM BY THE SLEEVE AND FELT THE THIN SINEWY ARM BENEATH IT + WELL YOU'RE NOT A SPIRIT ANYHOW SAID I. MY DEAR CHAP I'M OVERJOYED TO SEE YOU + SIT DOWN AND TELL ME HOW YOU CAME ALIVE OUT OF THAT DREADFUL CHASM + HE SAT OPPOSITE TO ME AND LIT A CIGARETTE IN HIS OLD NONCHALANT MANNER + HE WAS DRESSED IN THE SEEDY FROCKCOAT OF THE BOOK MERCHANT BUT THE REST OF THAT INDIVIDUAL LAY IN A PILE OF WHITE HAIR AND OLD BOOKS UPON THE TABLE + HOLMES LOOKED EVEN THINNER AND KEENER THAN OF OLD BUT THERE WAS A DEAD WHITE TINGE IN HIS AQUILINE FACE WHICH TOLD ME THAT HIS LIFE RECENTLY HAD NOT BEEN A HEALTHY ONE + I AM GLAD TO STRETCH MYSELF WATSON SAID HE + QUOTE IT IS NO JOKE WHEN A TALL MAN HAS TO TAKE A FOOT OFF HIS STATURE FOR SEVERAL HOURS ON END + NOW MY DEAR FELLOW IN THE MATTER OF THESE EXPLANATIONS WE HAVE IF I MAY ASK FOR YOUR COOPERATION A HARD AND DANGEROUS NIGHT'S WORK IN FRONT OF US + PERHAPS IT WOULD BE BETTER IF I GAVE YOU AN ACCOUNT OF THE WHOLE SITUATION WHEN THAT WORK IS FINISHED + I AM FULL OF CURIOSITY + I SHOULD MUCH PREFER TO HEAR NOW + YOU'LL COME WITH ME TO NIGHT + WHEN YOU LIKE AND WHERE YOU LIKE + QUOTE THIS IS INDEED LIKE THE OLD DAYS + WE SHALL HAVE TIME FOR A MOUTHFUL OF DINNER BEFORE WE NEED GO + WELL THEN ABOUT THAT CHASM + I HAD NO SERIOUS DIFFICULTY IN GETTING OUT OF IT FOR THE VERY SIMPLE REASON THAT I NEVER WAS IN IT + YOU NEVER WERE IN IT + NO WATSON I NEVER WAS IN IT + MY NOTE TO YOU WAS ABSOLUTELY GENUINE + I HAD LITTLE DOUBT THAT I HAD COME TO THE END OF MY CAREER WHEN I PERCEIVED THE SOMEWHAT SINISTER FIGURE OF THE LATE PROFESSOR MORIARTY STANDING UPON THE NARROW PATHWAY WHICH LED TO SAFETY + I READ AN INEXORABLE PURPOSE IN HIS GRAY EYES + I EXCHANGED SOME REMARKS WITH HIM THEREFORE AND OBTAINED HIS COURTEOUS PERMISSION TO WRITE THE SHORT NOTE WHICH YOU AFTERWARDS RECEIVED + I LEFT IT WITH MY CIGARETTE BOX AND MY STICK AND I WALKED ALONG THE PATHWAY MORIARTY STILL AT MY HEELS + WHEN I REACHED THE END I STOOD AT BAY + HE DREW NO WEAPON BUT HE RUSHED AT ME AND THREW HIS LONG ARMS AROUND ME + HE KNEW THAT HIS OWN GAME WAS UP AND WAS ONLY ANXIOUS TO REVENGE HIMSELF UPON ME + WE TOTTERED TOGETHER UPON THE BRINK OF THE FALL + I HAVE SOME KNOWLEDGE HOWEVER OF BARITSU OR THE JAPANESE SYSTEM OF WRESTLING WHICH HAS MORE THAN ONCE BEEN VERY USEFUL TO ME + I SLIPPED THROUGH HIS GRIP AND HE WITH A HORRIBLE SCREAM KICKED MADLY FOR A FEW SECONDS AND CLAWED THE AIR WITH BOTH HIS HANDS + BUT FOR ALL HIS EFFORTS HE COULD NOT GET HIS BALANCE AND OVER HE WENT + WITH MY FACE OVER THE BRINK I SAW HIM FALL FOR A LONG WAY + THEN HE STRUCK A ROCK BOUNDED OFF AND SPLASHED INTO THE WATER + I LISTENED WITH AMAZEMENT TO THIS EXPLANATION WHICH HOLMES DELIVERED BETWEEN THE PUFFS OF HIS CIGARETTE + BUT THE TRACKS + I CRIED + QUOTE I SAW WITH MY OWN EYES THAT TWO WENT DOWN THE PATH AND NONE RETURNED QUOTE + IT CAME ABOUT IN THIS WAY + THE INSTANT THAT THE PROFESSOR HAD DISAPPEARED IT STRUCK ME WHAT A REALLY EXTRAORDINARILY LUCKY CHANCE FATE HAD PLACED IN MY WAY + I KNEW THAT MORIARTY WAS NOT THE ONLY MAN WHO HAD SWORN MY DEATH + THERE WERE AT LEAST THREE OTHERS WHOSE DESIRE FOR VENGEANCE UPON ME WOULD ONLY BE INCREASED BY THE DEATH OF THEIR LEADER + THEY WERE ALL MOST DANGEROUS MEN + ONE OR OTHER WOULD CERTAINLY GET ME + ON THE OTHER HAND. IF ALL THE WORLD WAS CONVINCED THAT I WAS DEAD THEY WOULD TAKE LIBERTIES THESE MEN THEY WOULD SOON LAY THEMSELVES OPEN AND SOONER OR LATER I COULD DESTROY THEM + THEN IT WOULD BE TIME FOR ME TO ANNOUNCE THAT I WAS STILL IN THE LAND OF THE LIVING + SO RAPIDLY DOES THE BRAIN ACT THAT I BELIEVE I HAD THOUGHT THIS ALL OUT BEFORE PROFESSOR MORIARTY HAD REACHED THE BOTTOM OF THE REICHENBACH FALL + I STOOD UP AND EXAMINED THE ROCKY WALL BEHIND ME + IN YOUR PICTURESQUE ACCOUNT OF THE MATTER WHICH I READ WITH GREAT INTEREST SOME MONTHS LATER YOU ASSERT THAT THE WALL WAS SHEER + THAT WAS NOT LITERALLY TRUE + A FEW SMALL FOOTHOLDS PRESENTED THEMSELVES AND THERE WAS SOME INDICATION OF A LEDGE + THE CLIFF IS SO HIGH THAT TO CLIMB IT ALL WAS AN OBVIOUS IMPOSSIBILITY AND IT WAS EQUALLY IMPOSSIBLE TO MAKE MY WAY ALONG THE WET PATH WITHOUT LEAVING SOME TRACKS + I MIGHT IT IS TRUE HAVE REVERSED MY BOOTS AS I HAVE DONE ON SIMILAR OCCASIONS BUT THE SIGHT OF THREE SETS OF TRACKS IN ONE DIRECTION WOULD CERTAINLY HAVE SUGGESTED A DECEPTION + ON THE WHOLE THEN IT WAS BEST THAT I SHOULD RISK THE CLIMB + IT WAS NOT A PLEASANT BUSINESS WATSON + THE FALL ROARED BENEATH ME + I AM NOT A FANCIFUL PERSON BUT I GIVE YOU MY WORD THAT I SEEMED TO HEAR MORIARTY'S VOICE SCREAMING AT ME OUT OF THE ABYSS + A MISTAKE WOULD HAVE BEEN FATAL + MORE THAN ONCE AS TUFTS OF GRASS CAME OUT IN MY HAND OR MY FOOT SLIPPED IN THE WET NOTCHES OF THE ROCK I THOUGHT THAT I WAS GONE + BUT I STRUGGLED UPWARD AND AT LAST I REACHED A LEDGE SEVERAL FEET DEEP AND COVERED WITH SOFT GREEN MOSS WHERE I COULD LIE UNSEEN IN THE MOST PERFECT COMFORT + THERE I WAS STRETCHED WHEN YOU MY DEAR WATSON AND ALL YOUR FOLLOWING WERE INVESTIGATING IN THE MOST SYMPATHETIC AND INEFFICIENT MANNER THE CIRCUMSTANCES OF MY DEATH + AT LAST WHEN YOU HAD ALL FORMED YOUR INEVITABLE AND TOTALLY ERRONEOUS CONCLUSIONS YOU DEPARTED FOR THE HOTEL AND I WAS LEFT ALONE L. HAD IMAGINED THAT I HAD REACHED THE END OF MY ADVENTURES BUT A VERY UNEXPECTED OCCURRENCE SHOWED ME THAT THERE WERE SURPRISES STILL IN STORE FOR ME + A HUGE ROCK FALLING FROM ABOVE BOOMED PAST ME STRUCK THE PATH AND BOUNDED OVER INTO THE CHASM + FOR AN INSTANT I THOUGHT THAT IT WAS AN ACCIDENT BUT A MOMENT LATER LOOKING UP I SAW A MAN'S HEAD AGAINST THE DARKENING SKY AND ANOTHER STONE STRUCK THE VERY LEDGE UPON WHICH I WAS STRETCHED WITHIN A FOOT OF MY HEAD + OF COURSE THE MEANING OF THIS WAS OBVIOUS + MORIARTY HAD NOT BEEN ALONE + A CONFEDERATE AND EVEN THAT ONE GLANCE HAD TOLD ME HOW DANGEROUS A MAN THAT CONFEDERATE WAS HAD KEPT GUARD WHILE THE PROFCSSOR HAD ATTACKED ME + FROM A DISTANCE UNSEEN BY ME HE HAD BEEN A WITNESS OF HIS FRIEND'S DEATH AND OF MY ESCAPE + HE HAD WAITED AND THEN MAKING HIS WAY ROUND TO THE TOP OF THE CLIFF HE HAD ENDEAVOURED TO SUCCEED WHERE HIS COMRADE HAD FAILED + I DID NOT TAKE LONG TO THINK ABOUT IT WATSON + AGAIN I SAW THAT GRIM FACE LOOK OVER THE CLIFF AND I KNEW THAT IT WAS THE PRECURSOR OF ANOTHER STONE + I SCRAMBLED DOWN ON TO THE PATH + I DON'T THINK I COULD HAVE DONE IT IN COLD BLOOD + IT WAS A HUNDRED TIMES MORE DIFFICULT THAN GETTING UP + BUT I HAD NO TIME TO THINK OF THE DANGER FOR ANOTHER STONE SANG PAST ME AS I HUNG BY MY HANDS FROM THE EDGE OF THE LEDGE + HALFWAY DOWN I SLIPPED BUT BY THE BLESSING OF GOD I LANDED TORN AND BLEEDING UPON THE PATH + I TOOK TO MY HEELS DID TEN MILES OVER THE MOUNTAINS IN THE DARKNESS AND A WEEK LATER I FOUND MYSELF IN FLORENCE WITH THE CERTAINTY THAT NO ONE IN THE WORLD KNEW WHAT HAD BECOME OF ME + I HAD ONLY ONE CONFIDANT MY BROTHER MYCROFT + I OWE YOU MANY APOLOGIES MY DEAR WATSON BUT IT WAS ALL IMPORTANT THAT IT SHOULD BE THOUGHT I WAS DEAD AND IT IS QUITE CERTAIN THAT YOU WOULD NOT HAVE WRITTEN SO CONVINCING AN ACCOUNT OF MY UNHAPPY END HAD YOU NOT YOURSELF THOUGHT THAT IT WAS TRUE + SEVERAL TIMES DURING THE LAST THREE YEARS I HAVE TAKEN UP MY PEN TO WRITE TO YOU BUT ALWAYS I FEARED LEST YOUR AFFECTIONATE REGARD FOR ME SHOULD TEMPT YOU TO SOME INDISCRETION WHICH WOULD BETRAY MY SECRET + FOR THAT REASON I TURNED AWAY FROM YOU THIS EVENING WHEN YOU UPSET MY BOOKS FOR I WAS IN DANGER AT THE TIME AND ANY SHOW OF SURPRISE AND EMOTION UPON YOUR PART MIGHT HAVE DRAWN ATTENTION TO MY IDENTITY AND LED TO THE MOST DEPLORABLE AND IRREPARABLE RESULTS + AS TO MYCROFT I HAD TO CONFIDE IN HIM IN ORDER TO OBTAIN THE MONEY WHICH I NEEDED + THE COURSE OF EVENTS IN LONDON DID NOT RUN SO WELL AS I HAD HOPED FOR THE TRIAL OF THE MORIARTY GANG LEFT TWO OF ITS MOST DANGEROUS MEMBERS MY OWN MOST VINDICTIVE ENEMIES AT LIBERTY + I TRAVELLED FOR TWO YEARS IN TIBET THEREFORE AND AMUSED MYSELF BY VISITING LHASSA AND SPENDING SOME DAYS WITH THE HEAD LAMA + YOU MAY HAVE READ OF THE REMARKABLE EXPLORATIONS OF A NORWEGIAN NAMED SIGERSON BUT I AM SURE THAT IT NEVER OCCURRED TO YOU THAT YOU WERE RECEIVING NEWS OF YOUR FRIEND + I THEN PASSED THROUGH PERSIA LOOKED IN AT MECCA AND PAID A SHORT BUT INTERESTING VISIT TO THE KHALIFA AT KHARTOUM THE RESULTS OF WHICH I HAVE COMMUNICATED TO THE FOREIGN OFFICE + RETURNING TO FRANCE I SPENT SOME MONTHS IN A RESEARCH INTO THE COAL TAR DERIVATIVES WHICH I CONDUCTED IN A LABORATORY AT MONTPELLIER IN THE SOUTH OF FRANCE + HAVING CONCLUDED THIS TO MY SATISFACTION AND LEARNING THAT ONLY ONE OF MY ENEMIES WAS NOW LEFT IN LONDON I WAS ABOUT TO RETURN WHEN MY MOVEMENTS WERE HASTENED BY THE NEWS OF THIS VERY REMARKABLE PARK LANE MYSTERY WHICH NOT ONLY APPEALED TO ME BY ITS OWN MERITS BUT WHICH SEEMED TO OFFER SOME MOST PECULIAR PERSONAL OPPORTUNITIES + I CAME OVER AT ONCE TO LONDON CALLED IN MY OWN PERSON AT BAKER STREET THREW MRS. HUDSON INTO VIOLENT HYSTERICS AND FOUND THAT MYCROFT HAD PRESERVED MY ROOMS AND MY PAPERS EXACTLY AS THEY HAD ALWAYS BEEN + SO IT WAS MY DEAR WATSON THAT AT TWO O'CLOCK TO DAY I FOUND MYSELF IN MY OLD ARMCHAIR IN MY OWN OLD ROOM AND ONLY WISHING THAT I COULD HAVE SEEN MY OLD FRIEND WATSON IN THE OTHER CHAIR WHICH HE HAS SO OFTEN ADORNED QUOTE + SUCH WAS THE REMARKABLE NARRATIVE TO WHICH I LISTENED ON THAT APRIL EVENING A NARRATIVE WHICH WOULD HAVE BEEN UTTERLY INCREDIBLE TO ME HAD IT NOT BEEN CONFIRMED BY THE ACTUAL SIGHT OF THE TALL SPARE FIGURE AND THE KEEN EAGER FACE WHICH I HAD NEVER THOUGHT TO SEE AGAIN + IN SOME MANNER HE HAD LEARNED OF MY OWN SAD BEREAVEMENT AND HIS SYMPATHY WAS SHOWN IN HIS MANNER RATHER THAN IN HIS WORDS + WORK IS THE BEST ANTIDOTE TO SORROW MY DEAR WATSON SAID HE AND I HAVE A PIECE OF WORK FOR US BOTH TO NIGHT WHICH IF WE CAN BRING IT TO A SUCCESSFUL CONCLUSION WILL IN ITSELF JUSTIFY A MAN'S LIFE ON THIS PLANET + IN VAIN I BEGGED HIM TO TELL ME MORE + YOU WILL HEAR AND SEE ENOUGH BEFORE MORNING HE ANSWERED + WE HAVE THREE YEARS OF THE PAST TO DISCUSS + LET THAT SUFFICE UNTIL HALF PAST NINE WHEN WE START UPON THE NOTABLE ADVENTURE OF THE EMPTY HOUSE + IT WAS INDEED LIKE OLD TIMES WHEN AT THAT HOUR I FOUND MYSELF SEATED BESIDE HIM IN A HANSOM MY REVOLVER IN MY POCKET AND THE THRILL OF ADVENTURE IN MY HEART + HOLMES WAS COLD AND STERN AND SILENT + AS THE GLEAM OF THE STREET LAMPS FLASHED UPON HIS AUSTERE FEATURES I SAW THAT HIS BROWS WERE DRAWN DOWN IN THOUGHT AND HIS THIN LIPS COMPRESSED + I KNEW NOT WHAT WILD BEAST WE WERE ABOUT TO HUNT DOWN IN THE DARK JUNGLE OF CRIMINAL LONDON BUT I WAS WELL ASSURED FROM THE BEARING OF THIS MASTER HUNTSMAN THAT THE ADVENTURE WAS A MOST GRAVE ONE WHILE THE SARDONIC SMILE WHICH OCCASIONALLY BROKE THROUGH HIS ASCETIC GLOOM BODED LITTLE GOOD FOR THE OBJECT OF OUR QUEST + I HAD IMAGINED THAT WE WERE BOUND FOR BAKER STREET BUT HOLMES STOPPED THE CAB AT THE CORNER OF CAVENDISH SQUARE + I OBSERVED THAT AS HE STEPPED OUT HE GAVE A MOST SEARCHING GLANCE TO RIGHT AND LEFT AND AT EVERY SUBSEQUENT STREET CORNER HE TOOK THE UTMOST PAINS TO ASSURE THAT HE WAS NOT FOLLOWED + OUR ROUTE WAS CERTAINLY A SINGULAR ONE + HOLMES'S KNOWLEDGE OF THE BYWAYS OF LONDON WAS EXTRAORDINARY AND ON THIS OCCASION HE PASSED RAPIDLY AND WITH AN ASSURED STEP THROUGH A NETWORK OF MEWS AND STABLES THE VERY EXISTENCE OF WHICH I HAD NEVER KNOWN + WE EMERGED AT LAST INTO A SMALL ROAD LINED WITH OLD GLOOMY HOUSES WHICH LED US INTO MANCHESTER STREET AND SO TO BLANDFORD STREET + HERE HE TURNED SWIFTLY DOWN A NARROW PASSAGE PASSED THROUGH A WOODEN GATE INTO A DESERTED YARD AND THEN OPENED WITH A KEY THE BACK DOOR OF A HOUSE + WE ENTERED TOGETHER AND HE CLOSED IT BEHIND US + THE PLACE WAS PITCH DARK BUT IT WAS EVIDENT TO ME THAT IT WAS AN EMPTY HOUSE + OUR FEET CREAKED AND CRACKLED OVER THE BARE PLANKING AND MY OUTSTRETCHED HAND TOUCHED A WALL FROM WHICH THE PAPER WAS HANGING IN RIBBONS + HOLMES'S COLD THIN FINGERS CLOSED ROUND MY WRIST AND LED ME FORWARD DOWN A LONG HALL UNTIL I DIMLY SAW THE MURKY FANLIGHT OVER THE DOOR + HERE HOLMES TURNED SUDDENLY TO THE RIGHT AND WE FOUND OURSELVES IN A LARGE SQUARE EMPTY ROOM HEAVILY SHADOWED IN THE CORNERS BUT FAINTLY LIT IN THE CENTRE FROM THE LIGHTS OF THE STREET BEYOND + THERE WAS NO LAMP NEAR AND THE WINDOW WAS THICK WITH DUST SO THAT WE COULD ONLY JUST DISCERN EACH OTHER'S FIGURES WITHIN + MY COMPANION PUT HIS HAND UPON MY SHOULDER AND HIS LIPS CLOSE TO MY EAR + DO YOU KNOW WHERE WE ARE HE WHISPERED + QUOTE SURELY THAT IS BAKER STREET QUOTE I ANSWERED STARING THROUGH THE DIM WINDOW + EXACTLY + WE ARE IN CAMDEN HOUSE WHICH STANDS OPPOSITE TO OUR OWN OLD QUARTERS + BUT WHY ARE WE HERE + BECAUSE IT COMMANDS SO EXCELLENT A VIEW OF THAT PICTURESQUE PILE + MIGHT I TROUBLE YOU MY DEAR WATSON TO DRAW A LITTLE NEARER TO THE WINDOW TAKING EVERY PRECAUTION NOT TO SHOW YOURSELF AND THEN TO LOOK UP AT OUR OLD ROOMS THE STARTING POINT OF SO MANY OF YOUR LITTLE FAIRY TALES + WE WILL SEE IF MY THREE YEARS OF ABSENCE HAVE ENTIRELY TAKEN AWAY MY POWER TO SURPRISE YOU + I CREPT FORWARD AND LOOKED ACROSS AT THE FAMILIAR WINDOW + AS MY EYES FELL UPON IT I GAVE A GASP AND A CRY OF AMAZEMENT + THE BLIND WAS DOWN AND A STRONG LIGHT WAS BURNING IN THE ROOM + THE SHADOW OF A MAN WHO WAS SEATED IN A CHAIR WITHIN WAS THROWN IN HARD BLACK OUTLINE UPON THE LUMINOUS SCREEN OF THE WINDOW + THERE WAS NO MISTAKING THE POISE OF THE HEAD THE SQUARENESS OF THE SHOULDERS THE SHARPNESS OF THE FEATURES + THE FACE WAS TURNED HALF ROUND AND THE EFFECT WAS THAT OF ONE OF THOSE BLACK SILHOUETTES WHICH OUR GRANDPARENTS LOVED TO FRAME + IT WAS A PERFECT REPRODUCTION OF HOLMES + SO AMAZED WAS I THAT I THREW OUT MY HAND TO MAKE SURE THAT THE MAN HIMSELF WAS STANDING BESIDE ME + HE WAS QUIVERING WITH SILENT LAUGHTER + QUOTE WELL QUOTE SAID HE + GOOD HCAVENS + I CRIED + IT IS MARVELLOUS + I TRUST THAT AGE DOTH NOT WITHER NOR CUSTOM STALE MY INFINITE VARIETY SAID HE AND I RECOGNIZED IN HIS VOICE THE JOY AND PRIDE WHICH THE ARTIST TAKES IN HIS OWN CREATION + IT REALLY IS RATHER LIKE ME IS IT NOT + I SHOULD BE PREPARED TO SWEAR THAT IT WAS YOU + QUOTE THE CREDIT OF THE EXECUTION IS DUE TO MONSIEUR OSCAR MEUNIER OF GRENOBLE WHO SPENT SOME DAYS IN DOING THE MOULDING + IT IS A BUST IN WAX + THE REST I ARRANGED MYSELF DURING MY VISIT TO BAKER STREET THIS AFTERNOON + BUT WHY + BECAUSE MY DEAR WATSON I HAD THE STRONGEST POSSIBLE REASON FOR WISHING CERTAIN PEOPLE TO THINK THAT I WAS THERE WHEN I WAS REALLY ELSEWHERE + AND YOU THOUGHT THE ROOMS WERE WATCHED + I KNEW THAT THEY WERE WATCHED + QUOTE BY WHOM QUOTE + BY MY OLD ENEMIES WATSON + BY THE CHARMING SOCIETY WHOSE LEADER LIES IN THE REICHENBACH FALL + YOU MUST REMEMBER THAT THEY KNEW AND ONLY THEY KNEW THAT I WAS STILL ALIVE + SOONER OR LATER THEY BELIEVED THAT I SHOULD COME BACK TO MY ROOMS + THEY WATCHED THEM CONTINUOUSLY AND THIS MORNING THEY SAW ME ARRIVE + HOW DO YOU KNOW + BECAUSE I RECOGNIZED THEIR SENTINEL WHEN I GLANCED OUT OF MY WINDOW + HE IS A HARMLESS ENOUGH FELLOW PARKER BY NAME A GARROTER BY TRADE AND A REMARKABLE PERFORMER UPON THE JEW'SHARP + I CARED NOTHING FOR HIM + BUT I CARED A GREAT DEAL FOR THE MUCH MORE FORMIDABLE PERSON WHO WAS BEHIND HIM THE BOSOM FRIEND OF MORIARTY THE MAN WHO DROPPED THE ROCKS OVER THE CLIFF THE MOST CUNNING AND DANGEROUS CRIMINAL IN LONDON + THAT IS THE MAN WHO IS AFTER ME TO NIGHT WATSON AND THAT IS THE MAN WHO IS QUITE UNAWARE THAT WE ARE AFTER HIM + MY FRIEND'S PLANS WERE GRADUALLY REVEALING THEMSELVCS + FROM THIS CONVENIENT RETREAT THE WATCHERS WERE BEING WATCHED AND THE TRACKERS TRACKED + THAT ANGULAR SHADOW UP YONDER WAS THE BAIT. AND WE WERE THE HUNTERS + IN SILENCE WE STOOD TOGETHER IN THE DARKNESS AND WATCHED THE HURRYING FIGURES WHO PASSED AND REPASSED IN FRONT OF US + HOLMES WAS SILENT AND MOTIONLESS BUT I COULD TELL THAT HE WAS KEENLY ALERT AND THAT HIS EYES WERE FIXED INTENTLY UPON THE STREAM OF PASSERS BY + IT WAS A BLEAK AND BOISTEROUS NIGHT AND THE WIND WHISTLED SHRILLY DOWN THE LONG STREET + MANY PEOPLE WERE MOVING TO AND FRO MOST OF THEM MUFFLED IN THEIR COATS AND CRAVATS + ONCE OR TWICE IT SEEMED TO ME THAT I HAD SEEN THE SAME FIGURE BEFORE AND I ESPECIALLY NOTICED TWO MEN WHO APPEARED TO BE SHELTERING THEMSELVES FROM THE WIND IN THE DOORWAY OF A HOUSE SOME DISTANCE UP THE STREET + I TRIED TO DRAW MY COMPANION'S ATTENTION TO THEM BUT HE GAVE A LITTLE EJACULATION OF IMPATIENCE AND CONTINUED TO STARE INTO THE STREET + MORE THAN ONCE HE FIDGETED WITH HIS FEET AND TAPPED RAPIDLY WITH HIS FINGERS UPON THE WALL + IT WAS EVIDENT TO ME THAT HE WAS BECOMING UNEASY AND THAT HIS PLANS WERE NOT WORKING OUT ALTOGETHER AS HE HAD HOPED + AT LAST AS MIDNIGHT APPROACHED AND THE STREET GRADUALLY CLEARED HE PACED UP AND DOWN THE ROOM IN UNCONTROLLABLE AGITATION + I WAS ABOUT TO MAKE SOME REMARK TO HIM WHEN I RAISED MY EYES TO THE LIGHTED WINDOW AND AGAIN EXPERIENCED ALMOST AS GREAT A SURPRISE AS BEFORE + I CLUTCHED HOLMES'S ARM AND POINTED UPWARD + QUOTE THE SHADOW HAS MOVED QUOTE + I CRIED + IT WAS INDEED NO LONGER THE PROFILE BUT THE BACK WHICH WAS TURNED TOWARDS US + THREE YEARS HAD CERTAINLY NOT SMOOTHED THE ASPERITIES OF HIS TEMPER OR HIS IMPATIENCE WITH A LESS ACTIVE INTELLIGENCE THAN HIS OWN + OF COURSE IT HAS MOVED SAID HE + AM I SUCH A FARCICAL BUNGLER WATSON THAT I SHOULD ERECT AN OBVIOUS DUMMY AND EXPECT THAT SOME OF THE SHARPEST MEN IN EUROPE WOULD BE DECEIVED BY IT + WE HAVE BEEN IN THIS ROOM TWO HOURS AND MRS. HUDSON HAS MADE SOME CHANGE IN THAT FIGURE EIGHT TIMES OR ONCE IN EVERY QUARTER OF AN HOUR + SHE WORKS IT FROM THE FRONT SO THAT HER SHADOW MAY NEVER BE SEEN + AH + HE DREW IN HIS BREATH WITH A SHRILL EXCITED INTAKE + IN THE DIM LIGHT I SAW HIS HEAD THROWN FORWARD HIS WHOLE ATTITUDE RIGID WITH ATTENTION + OUTSIDE THE STREET WAS ABSOLUTELY DESERTED + THOSE TWO MEN MIGHT STILL BE CROUCHING IN THE DOORWAY BUT I COULD NO LONGER SEE THEM + ALL WAS STILL AND DARK SAVE ONLY THAT BRILLIANT YELLOW SCREEN IN FRONT OF US WITH THE BLACK FIGURE OUTLINED UPON ITS CENTRE + AGAIN IN THE UTTER SILENCE I HEARD THAT THIN SIBILANT NOTE WHICH SPOKE OF INTENSE SUPPRESSED EXCITEMENT + AN INSTANT LATER HE PULLED ME BACK INTO THE BLACKEST CORNER OF THE ROOM. AND I FELT HIS WARNING HAND UPON MY LIPS + THE FINGERS WHICH CLUTCHED ME WERE QUIVERING + NEVER HAD I KNOWN MY FRIEND MORE MOVED AND YET THE DARK STREET STILL STRETCHED LONELY AND MOTIONLESS BEFORE US + BUT SUDDENLY I WAS AWARE OF THAT WHICH HIS KEENER SENSES HAD ALREADY DISTINGUISHED + A LOW STEALTHY SOUND CAME TO MY EARS NOT FROM THE DIRECTION OF BAKER STREET BUT FROM THE BACK OF THE VERY HOUSE IN WHICH WE LAY CONCEALED + A DOOR OPENED AND SHUT + AN INSTANT LATER STEPS CREPT DOWN THE PASSAGE STEPS WHICH WERE MEANT TO BE SILENT BUT WHICH REVERBERATED HARSHLY THROUGH THE EMPTY HOUSE + HOLMES CROUCHED BACK AGAINST THE WALL AND I DID THE SAME MY HAND CLOSING UPON THE HANDLE OF MY REVOLVER + PEERING THROUGH THE GLOOM I SAW THE VAGUE OUTLINE OF A MAN A SHADE BLACKER THAN THE BLACKNESS OF THE OPEN DOOR + HE STOOD FOR AN INSTANT AND THEN HE CREPT FORWARD CROUCHING MENACING INTO THE ROOM + HE WAS WITHIN THREE YARDS OF US THIS SINISTER FIGURE AND I HAD BRACED MYSELF TO MEET HIS SPRING BEFORE I REALIZED THAT HE HAD NO IDEA OF OUR PRESENCE + HE PASSED CLOSE BESIDE US STOLE OVER TO THE WINDOW AND VERY SOFTLY AND NOISELESSLY RAISED IT FOR HALF A FOOT + AS HE SANK TO THE LEVEL OF THIS OPENING THE LIGHT OF THE STREET NO LONGER DIMMED BY THE DUSTY GLASS FELL FULL UPON HIS FACE + THE MAN SEEMED TO BE BESIDE HIMSELF WITH EXCITEMENT + HIS TWO EYES SHONE LIKE STARS AND HIS FEATURES WERE WORKING CONVULSIVELY + HE WAS AN ELDERLY MAN WITH A THIN PROJECTING NOSE A HIGH BALD FOREHEAD AND A HUGE GRIZZLED MOUSTACHE + AN OPERA HAT WAS PUSHED TO THE BACK OF HIS HEAD AND AN EVENING DRESS SHIRT FRONT GLEAMED OUT THROUGH HIS OPEN OVERCOAT + HIS FACE WAS GAUNT AND SWARTHY SCORED WITH DEEP SAVAGE LINES + IN HIS HAND HE CARRIED WHAT APPEARED TO BE A STICK BUT AS HE LAID IT DOWN UPON THE FLOOR IT GAVE A METALLIC CLANG + THEN FROM THE POCKET OF HIS OVERCOAT HE DREW A BULKY OBJECT AND HE BUSIED HIMSELF IN SOME TASK WHICH ENDED WITH A LOUD SHARP CLICK AS IF A SPRING OR BOLT HAD FALLEN INTO ITS PLACE + STILL KNEELING UPON THE FLOOR HE BENT FORWARD AND THREW ALL HIS WEIGHT AND STRENGTH UPON SOME LEVER WITH THE RESULT THAT THERE CAME A LONG WHIRLING GRINDING NOISE ENDING ONCE MORE IN A POWERFUL CLICK + HE STRAIGHTENED HIMSELF THEN AND I SAW THAT WHAT HE HELD IN HIS HAND WAS A SORT OF GUN WITH A CURIOUSLY MISSHAPEN BUTT + HE OPENED IT AT THE BREECH PUT SOMETHING IN AND SNAPPED THE BREECH LOCK + THEN CROUCHING DOWN HE RESTED THE END OF THE BARREL UPON THE LEDGE OF THE OPEN WINDOW AND I SAW HIS LONG MOUSTACHE DROOP OVER THE STOCK AND HIS EYE GLEAM AS IT PEERED ALONG THE SIGHTS + I HEARD A LITTLE SIGH OF SATISFACTION AS HE CUDDLED THE BUTT INTO HIS SHOULDER AND SAW THAT AMAZING TARGET THE BLACK MAN ON THE YELLOW GROUND STANDING CLEAR AT THE END OF HIS FORESIGHT + FOR AN INSTANT HE WAS RIGID AND MOTIONLESS + THEN HIS FINGER TIGHTENED ON THE TRIGGER + THERE WAS A STRANGE LOUD WHIZ AND A LONG SILVERY TINKLE OF BROKEN GLASS + AT THAT INSTANT HOLMES SPRANG LIKE A TIGER ON TO THE MARKSMAN'S BACK AND HURLED HIM FLAT UPON HIS FACE + HE WAS UP AGAIN IN A MOMENT AND WITH CONVULSIVE STRENGTH HE SEIZED HOLMES BY THE THROAT BUT I STRUCK HIM ON THE HEAD WITH THE BUTT OF MY REVOLVER AND HE DROPPED AGAIN UPON THE FLOOR + I FELL UPON HIM AND AS I HELD HIM MY COMRADE BLEW A SHRILL CALL UPON A WHISTLE + THERE WAS THE CLATTER OF RUNNING FEET UPON THE PAVEMENT AND TWO POLICEMEN IN UNIFORM WITH ONE PLAIN CLOTHES DETECTIVE RUSHED THROUGH THE FRONT ENTRANCE AND INTO THE ROOM + THAT YOU LESTRADE SAID HOLMES + YES MR. HOLMES + I TOOK THE JOB MYSELF + IT'S GOOD TO SEE YOU BACK IN LONDON SIR QUOTE + I THINK YOU WANT A LITTLE UNOFFICIAL HELP + THREE UNDETECTED MURDERS IN ONE YEAR WON'T DO LESTRADE + BUT YOU HANDLED THE MOLESEY MYSTERY WITH LESS THAN YOUR USUAL THAT'S TO SAY YOU HANDLED IT FAIRLY WELL + WE HAD ALL RISEN TO OUR FEET OUR PRISONER BREATHING HARD WITH A STALWART CONSTABLE ON EACH SIDE OF HIM + ALREADY A FEW LOITERERS HAD BEGUN TO COLLECT IN THE STREET + HOLMES STEPPED UP TO THE WINDOW CLOSED IT AND DROPPED THE BLINDS + LESTRADE HAD PRODUCED TWO CANDLES AND THE POLICEMEN HAD UNCOVERED THEIR LANTERNS + I WAS ABLE AT LAST TO HAVE A GOOD LOOK AT OUR PRISONER + IT WAS A TREMENDOUSLY VIRILE AND YET SINISTER FACE WHICH WAS TURNED TOWARDS US + WITH THE BROW OF A PHILOSOPHER ABOVE AND THE JAW OF A SENSUALIST BELOW THE MAN MUST HAVE STARTED WITH GREAT CAPACITIES FOR GOOD OR FOR EVIL + BUT ONE COULD NOT LOOK UPON HIS CRUEL BLUE EYES WITH THEIR DROOPING CYNICAL LIDS OR UPON THE FIERCE AGGRESSIVE NOSE AND THE THREATENING DEEP LINED BROW WITHOUT READING NATURE'S PLAINEST DANGER SIGNALS + HE TOOK NO HEED OF ANY OF US BUT HIS EYES WERE FIXED UPON HOLMES'S FACE WITH AN EXPRESSION IN WHICH HATRED AND AMAZEMENT WERE EQUALLY BLENDED + YOU FIEND HE KEPT ON MUTTERING + YOU CLEVER CLEVER FIEND + AH COLONEL SAID HOLMES ARRANGING HIS RUMPLED COLLAR JOURNEYS END IN LOVERS' MEETINGS AS THE OLD PLAY SAYS + I DON'T THINK I HAVE HAD THE PLEASURE OF SEEING YOU SINCE YOU FAVOURED ME WITH THOSE ATTENTIONS AS I LAY ON THE LEDGE ABOVE THE REICHENBACH FALL QUOTE + THE COLONEL STILL STARED AT MY FRIEND LIKE A MAN IN A TRANCE + YOU CUNNING CUNNING FIEND WAS ALL THAT HE COULD SAY + I HAVE NOT INTRODUCED YOU YET SAID HOLMES + THIS GENTLEMEN IS COLONEL SEBASTIAN MORAN ONCE OF HER MAJESTY'S INDIAN ARMY AND THE BEST HEAVY GAME SHOT THAT OUR EASTERN EMPIRE HAS EVER PRODUCED + I BELIEVE I AM CORRECT COLONEL IN SAYING THAT YOUR BAG OF TIGERS STILL REMAINS UNRIVALLED + THE FIERCE OLD MAN SAID NOTHING BUT STILL GLARED AT MY COMPANION + WITH HIS SAVAGE EYES AND BRISTLING MOUSTACHE HE WAS WONDERFULLY LIKE A TIGER HIMSELF + I WONDER THAT MY VERY SIMPLE STRATAGEM COULD DECEIVE SO OLD A SHIKARI SAID HOLMES + QUOTE IT MUST BE VERY FAMILIAR TO YOU + HAVE YOU NOT TETHERED A YOUNG KID UNDER A TREE LAIN ABOVE IT WITH YOUR RIFLE AND WAITED FOR THE BAIT TO BRING UP YOUR TIGER + THIS EMPTY HOUSE IS MY TREE AND YOU ARE MY TIGER + YOU HAVE POSSIBLY HAD OTHER GUNS IN RESERVE IN CASE THERE SHOULD BE SEVERAL TIGERS OR IN THE UNLIKELY SUPPOSITION OF YOUR OWN AIM FAILING YOU + THESE HE POINTED AROUND ARE MY OTHER GUNS + THE PARALLEL IS EXACT + COLONEL MORAN SPRANG FORWARD WITH A SNARL OF RAGE BUT THE CONSTABLES DRAGGED HIM BACK + THE FURY UPON HIS FACE WAS TERRIBLE TO LOOK AT + I CONFESS THAT YOU HAD ONE SMALL SURPRISE FOR ME SAID HOLMES + I DID NOT ANTICIPATE THAT YOU WOULD YOURSELF MAKE USE OF THIS EMPTY HOUSE AND THIS CONVENIENT FRONT WINDOW + I HAD IMAGINED YOU AS OPERATING FROM THE STREET WHERE MY FRIEND LESTRADE AND HIS MERRY MEN WERE AWAITING YOU + WITH THAT EXCEPTION ALL HAS GONE AS I EXPECTED + COLONEL MORAN TURNED TO THE OFFICIAL DETECTIVE + QUOTE YOU MAY OR MAY NOT HAVE JUST CAUSE FOR ARRESTING ME QUOTE SAID HE QUOTE BUT AT LEAST THERE CAN BE NO REASON WHY I SHOULD SUBMIT TO THE GIBES OF THIS PERSON + IF I AM IN THE HANDS OF THE LAW LET THINGS BE DONE IN A LEGAL WAY + WELL THAT'S REASONABLE ENOUGH SAID LESTRADE + NOTHING FURTHER YOU HAVE TO SAY MR. HOLMES BEFORE WE GO + HOLMES HAD PICKED UP THE POWERFUL AIR GUN FROM THE FLOOR AND WAS EXAMINING ITS MECHANISM + AN ADMIRABLE AND UNIQUE WEAPON SAID HE NOISELESS AND OF TREMENDOUS POWER I KNEW VON HERDER THE BLIND GERMAN MECHANIC WHO CONSTRUCTED IT TO THE ORDER OF THE LATE PROFESSOR MORIARTY + FOR YEARS I HAVE BEEN AWARE OF ITS EXISTENCE THOUGH I HAVE NEVER BEFORE HAD THE OPPORTUNITY OF HANDLING IT + I COMMEND IT VERY SPECIALLY TO YOUR ATTENTION LESTRADE AND ALSO THE BULLETS WHICH FIT IT + QUOTE YOU CAN TRUST US TO LOOK AFTER THAT MR. HOLMES QUOTE SAID LESTRADE AS THE WHOLE PARTY MOVED TOWARDS THE DOOR + ANYTHING FURTHER TO SAY + ONLY TO ASK WHAT CHARGE YOU INTEND TO PREFER + WHAT CHARGE SIR + WHY OF COURSE THE ATTEMPTED MURDER OF MR. SHERLOCK HOLMES + NOT SO LESTRADE + I DO NOT PROPOSE TO APPEAR IN THE MATTER AT ALL + TO YOU AND TO YOU ONLY BELONGS THE CREDIT OF THE REMARKABLE ARREST WHICH YOU HAVE EFFECTED + YES LESTRADE I CONGRATULATE YOU + WITH YOUR USUAL HAPPY MIXTURE OF CUNNING AND AUDACITY YOU HAVE GOT HIM QUOTE + GOT HIM + GOT WHOM MR. HOLMES + THE MAN THAT THE WHOLE FORCE HAS BEEN SEEKING IN VAIN COLONEL SEBASTIAN MORAN WHO SHOT THE HONOURABLE RONALD ADAIR WITH AN EXPANDING BULLET FROM AN AIR GUN THROUGH THE OPEN WINDOW OF THE SECOND FLOOR FRONT OF NUMBER FOUR HUNDRED TWENTY SEVEN PARK LANE UPON THE THIRTIETH OF LAST MONTH + THAT'S THE CHARGE LESTRADE + AND NOW WATSON IF YOU CAN ENDURE THE DRAUGHT FROM A BROKEN WINDOW I THINK THAT HALF AN HOUR IN MY STUDY OVER A CIGAR MAY AFFORD YOU SOME PROFITABLE AMUSEMENT + OUR OLD CHAMBERS HAD BEEN LEFT UNCHANGED THROUGH THE SUPERVISION OF MYCROFT HOLMES AND THE IMMEDIATE CARE OF MRS. HUDSON + AS I ENTERED I SAW IT IS TRUE AN UNWONTED TIDINESS BUT THE OLD LANDMARKS WERE ALL IN THEIR PLACE + THERE WERE THE CHEMICAL CORNER AND THE ACID STAINED DEAL TOPPED TABLE + THERE UPON A SHELF WAS THE ROW OF FORMIDABLE SCRAP BOOKS AND BOOKS OF REFERENCE WHICH MANY OF OUR FELLOW CITIZENS WOULD HAVE BEEN SO GLAD TO BURN + THE DIAGRAMS THE VIOLIN CASE AND THE PIPE RACK EVEN THE PERSIAN SLIPPER WHICH CONTAINED THE TOBACCO ALL MET MY EYES AS I GLANCED ROUND ME + THERE WERE TWO OCCUPANTS OF THE ROOM ONE MRS. HUDSON WHO BEAMED UPON US BOTH AS WE ENTERED THE OTHER THE STRANGE DUMMY WHICH HAD PLAYED SO IMPORTANT A PART IN THE EVENING'S ADVENTURES + IT WAS A WAXCOLOURED MODEL OF MY FRIEND SO ADMIRABLY DONE THAT IT WAS A PERFECT FACSIMILE + IT STOOD ON A SMALL PEDESTAL TABLE WITH AN OLD DRESSING GOWN OF HOLMES'S SO DRAPED ROUND IT THAT THE ILLUSION FROM THE STREET WAS ABSOLUTELY PERFECT + I HOPE YOU OBSERVED ALL PRECAUTIONS MRS. HUDSON SAID HOLMES + QUOTE I WENT TO IT ON MY KNEES SIR JUST AS YOU TOLD ME QUOTE + EXCELLENT + YOU CARRIED THE THING OUT VERY WELL + DID YOU OBSERVE WHERE THE BULLET WENT + YES SIR + I'M AFRAID IT HAS SPOILT YOUR BEAUTIFUL BUST FOR IT PASSED RIGHT THROUGH THE HEAD AND FLATTENED ITSELF ON THE WALL + I PICKED IT UP FROM THE CARPET + HERE IT IS + HOLMES HELD IT OUT TO ME + A SOFT REVOLVER BULLET AS YOU PERCEIVE WATSON + THERE'S GENIUS IN THAT FOR WHO WOULD EXPECT TO FIND SUCH A THING FIRED FROM AN AIR GUN + ALL RIGHT MRS. HUDSON + I AM MUCH OBLIGED FOR YOUR ASSISTANCE + AND NOW + WATSON LET ME SEE YOU IN YOUR OLD SEAT ONCE MORE FOR THERE ARE SEVERAL POINTS WHICH I SHOULD LIKE TO DISCUSS WITH YOU QUOTE + HE HAD THROWN OFF THE SEEDY FROCKCOAT AND NOW HE WAS THE HOLMES OF OLD IN THE MOUSE COLOURED DRESSING GOWN WHICH HE TOOK FROM HIS EFFIGY + THE OLD SHIKARI'S NERVES HAVE NOT LOST THEIR STEADINESS NOR HIS EYES THEIR KEENNESS SAID HE WITH A LAUGH AS HE INSPECTED THE SHATTERED FOREHEAD OF HIS BUST + PLUMB IN THE MIDDLE OF THE BACK OF THE HEAD AND SMACK THROUGH THE BRAIN + HE WAS THE BEST SHOT IN INDIA AND I EXPECT THAT THERE ARE FEW BETTER IN LONDON + HAVE YOU HEARD THE NAME + NO I HAVE NOT + WELL WELL SUCH IS FAME + BUT THEN IF I REMEMBER RIGHT YOU HAD NOT HEARD THE NAME OF PROFESSOR JAMES MORIARTY WHO HAD ONE OF THE GREAT BRAINS OF THE CENTURY + JUST GIVE ME DOWN MY INDEX OF BIOGRAPHIES FROM THE SHELF QUOTE + HE TURNED OVER THE PAGES LAZILY LEANING BACK IN HIS CHAIR AND BLOWING GREAT CLOUDS FROM HIS CIGAR + MY COLLECTION OF M'S IS A FINE ONE SAID HE + MORIARTY HIMSELF IS ENOUGH TO MAKE ANY LETTER ILLUSTRIOUS AND HERE IS MORGAN THE POISONER AND MERRIDEW OF ABOMINABLE MEMORY AND MATHEWS WHO KNOCKED OUT MY LEFT CANINE IN THE WAITING ROOM AT CHARING CROSS AND FINALLY HERE IS OUR FRIEND OF TO NIGHT + HE HANDED OVER THE BOOK AND I READ MORAN SEBASTIAN COLONEL + UNEMPLOYED + FORMERLY I ST BANGALORE PIONEERS + BORN LONDON ONE THOUSAND EIGHT HUNDRED FORTY + SON OF SIR AUGUS TUS MORAN C. B. ONCE BRITISH MINISTER TO PERSIA + EDUCATED ETON AND OXFORD + SERVED IN JOWAKI CAMPAIGN AFGHAN CAMPAIGN CHARASIAB DESPATCHES SHERPUR AND CABUL + AU THOR OF HEAVY GAME OF THE WESTERN HIMALAYAS ONE THOUSAND EIGHT HUNDRED EIGHTY ONE THREE MONTHS IN THE JUNGLE ONE THOUSAND EIGHT HUNDRED EIGHTY FOUR + ADDRESS CONDUIT STREET + CLUBS THE ANGLO LNDIAN THE TANKERVILLE THE BAGATELLE CARD CLUB + ON THE MARGIN WAS WRITTEN IN HOLMES'S PRECISE HAND THE SECOND MOST DANGEROUS MAN IN LONDON + THIS IS ASTONISHING SAID I AS I HANDED BACK THE VOLUME + THE MAN'S CAREER IS THAT OF AN HONOURABLE SOLDIER + IT IS TRUE HOLMES ANSWERED + QUOTE UP TO A CERTAIN POINT HE DID WELL + HE WAS ALWAYS A MAN OF IRON NERVE AND THE STORY IS STILL TOLD IN INDIA HOW HE CRAWLED DOWN A DRAIN AFTER A WOUNDED MAN EATING TIGER + THERE ARE SOME TREES WATSON WHICH GROW TO A CERTAIN HEIGHT AND THEN SUDDENLY DEVELOP SOME UNSIGHTLY ECCENTRICITY + YOU WILL SEE IT OFTEN IN HUMANS + I HAVE A THEORY THAT THE INDIVIDUAL REPRESENTS IN HIS DEVELOPMENT THE WHOLE PROCESSION OF HIS ANCESTORS AND THAT SUCH A SUDDEN TURN TO GOOD OR EVIL STANDS FOR SOME STRONG INFLUENCE WHICH CAME INTO THE LINE OF HIS PEDIGREE + THE PERSON BECOMES AS IT WERE THE EPITOME OF THE HISTORY OF HIS OWN FAMILY + IT IS SURELY RATHER FANCIFUL + WELL I DON'T INSIST UPON IT + WHATEVER THE CAUSE COLONEL MORAN BEGAN TO GO WRONG + WITHOUT ANY OPEN SCANDAL HE STILL MADE INDIA TOO HOT TO HOLD HIM + HE RETIRED CAME TO LONDON AND AGAIN ACQUIRED AN EVIL NAME + IT WAS AT THIS TIME THAT HE WAS SOUGHT OUT BY PROFESSOR MORIARTY TO WHOM FOR A TIME HE WAS CHIEF OF THE STAFF + MORIARTY SUPPLIED HIM LIBERALLY WITH MONEY AND USED HIM ONLY IN ONE OR TWO VERY HIGH CLASS JOBS WHICH NO ORDINARY CRIMINAL COULD HAVE UNDERTAKEN + YOU MAY HAVE SOME RECOLLECTION OF THE DEATH OF MRS. STEWART OF LAUDER IN ONE THOUSAND EIGHT HUNDRED EIGHTY SEVEN + NOT + WELL I AM SURE MORAN WAS AT THE BOTTOM OF IT BUT NOTHING COULD BE PROVED + SO CLEVERLY WAS THE COLONEL CONCEALED THAT EVEN WHEN THE MORIARTY GANG WAS BROKEN UP WE COULD NOT INCRIMINATE HIM YOU REMEMBER AT THAT DATE WHEN I CALLED UPON YOU IN YOUR ROOMS HOW I PUT UP THE SHUNERS FOR FEAR OF AIR GUNS + NO DOUBT YOU THOUGHT ME FANCIFUL + I KNEW EXACTLY WHAT I WAS DOING FOR I KNEW OF THE EXISTENCE OF THIS REMARKABLE GUN AND I KNEW ALSO THAT ONE OF THE BEST SHOTS IN THE WORLD WOULD BE BEHIND IT + WHEN WE WERE IN SWITZERLAND HE FOLLOWED US WITH MORIARTY AND IT WAS UNDOUBTEDLY HE WHO GAVE ME THAT EVIL FIVE MINUTES ON THE REICHENBACH LEDGE + YOU MAY THINK THAT I READ THE PAPERS WITH SOME ATTENTION DURING MY SOJOURN IN FRANCE ON THE LOOK OUT FOR ANY CHANCE OF LAYING HIM BY THE HEELS + SO LONG AS HE WAS FREE IN LONDON MY LIFE WOULD REALLY NOT HAVE BEEN WORTH LIVING + NIGHT AND DAY THE SHADOW WOULD HAVE BEEN OVER ME AND SOONER OR LATER HIS CHANCE MUST HAVE COME + WHAT COULD I DO + I COULD NOT SHOOT HIM AT SIGHT OR I SHOULD MYSELF BE IN THE DOCK + THERE WAS NO USE APPEALING TO A MAGISTRATE + THEY CANNOT INTERFERE ON THE STRENGTH OF WHAT WOULD APPEAR TO THEM TO BE A WILD SUSPICION + SO I COULD DO NOTHING + BUT I WATCHED THE CRIMINAL NEWS KNOWING THAT SOONER OR LATER I SHOULD GET HIM + THEN CAME THE DEATH OF THIS RONALD ADAIR + MY CHANCE HAD COME AT LAST + KNOWING WHAT I DID WAS IT NOT CERTAIN THAT COLONEL MORAN HAD DONE IT + HE HAD PLAYED CARDS WITH THE LAD HE HAD FOLLOWED HIM HOME FROM THE CLUB HE HAD SHOT HIM THROUGH THE OPEN WINDOW + THERE WAS NOT A DOUBT OF IT + THE BULLETS ALONE ARE ENOUGH TO PUT HIS HEAD IN A NOOSE + I CAME OVER AT ONCE + I WAS SEEN BY THE SENTINEL WHO WOULD I KNEW DIRECT THE COLONEL'S ATTENTION TO MY PRESENCE + HE COULD NOT FAIL TO CONNECT MY SUDDEN RETURN WITH HIS CRIME AND TO BE TERRIBLY ALARMED + I WAS SURE THAT HE WOULD MAKE AN ATTEMPT TO GET ME OUT OF THE WAY AT ONCE AND WOULD BRING ROUND HIS MURDEROUS WEAPON FOR THAT PURPOSE + I LEFT HIM AN EXCELLENT MARK IN THE WINDOW AND HAVING WARNED THE POLICE THAT THEY MIGHT BE NEEDED BY THE WAY WATSON YOU SPOTTED THEIR PRESENCE IN THAT DOORWAY WITH UNERRING ACCURACY I TOOK UP WHAT SEEMED TO ME TO BE A JUDICIOUS POST FOR OBSERVATION NEVER DREAMING THAT HE WOULD CHOOSE THE SAME SPOT FOR HIS ATTACK + NOW MY DEAR WATSON DOES ANYTHING REMAIN FOR ME TO EXPLAIN + QUOTE YES QUOTE SAID I. QUOTE YOU HAVE NOT MADE IT CLEAR WHAT WAS COLONEL MORAN'S MOTIVE IN MURDERING THE HONOURABLE RONALD ADAIR QUOTE + AH MY DEAR WATSON THERE WE COME INTO THOSE REALMS OF CONJECTURE WHERE THE MOST LOGICAL MIND MAY BE AT FAULT + EACH MAY FORM HIS OWN HYPOTHESIS UPON THE PRESENT EVIDENCE AND YOURS IS AS LIKELY TO BE CORRECT AS MINE + YOU HAVE FORMED ONE THEN + I THINK THAT IT IS NOT DIFFICULT TO EXPLAIN THE FACTS + IT CAME OUT IN EVIDENCE THAT COLONEL MORAN AND YOUNG ADAIR HAD BETWEEN THEM WON A CONSIDERABLE AMOUNT OF MONEY + NOW MORAN UNDOUBTEDLY PLAYED FOUL OF THAT I HAVE LONG BEEN AWARE + I BELIEVE THAT ON THE DAY OF THE MURDER ADAIR HAD DISCOVERED THAT MORAN WAS CHEATING + VERY LIKELY HE HAD SPOKEN TO HIM PRIVATELY AND HAD THREATENED TO EXPOSE HIM UNLESS HE VOLUNTARILY RESIGNED HIS MEMBERSHIP OF THE CLUB AND PROMISED NOT TO PLAY CARDS AGAIN + IT IS UNLIKELY THAT A YOUNGSTER LIKE ADAIR WOULD AT ONCE MAKE A HIDEOUS SCANDAL BY EXPOSING A WELL KNOWN MAN SO MUCH OLDER THAN HIMSELF + PROBABLY HE ACTED AS I SUGGEST + THE EXCLUSION FROM HIS CLUBS WOULD MEAN RUIN TO MORAN WHO LIVED BY HIS ILL GOTTEN CARD GAINS + HE THEREFORE MURDERED ADAIR WHO AT THE TIME WAS ENDEAVOURING TO WORK OUT HOW MUCH MONEY HE SHOULD HIMSELF RETURN SINCE HE COULD NOT PROFIT BY HIS PARTNER'S FOUL PLAY + HE LOCKED THE DOOR LEST THE LADIES SHOULD SURPRISE HIM AND INSIST UPON KNOWING WHAT HE WAS DOING WITH THESE NAMES AND COINS + WILL IT PASS + QUOTE I HAVE NO DOUBT THAT YOU HAVE HIT UPON THE TRUTH QUOTE + IT WILL BE VERIFIED OR DISPROVED AT THE TRIAL + MEANWHILE COME WHAT MAY COLONEL MORAN WILL TROUBLE US NO MORE + THE FAMOUS AIR GUN OF VON HERDER WILL EMBELLISH THE SCOTLAND YARD MUSEUM AND ONCE AGAIN MR. SHERLOCK HOLMES IS FREE TO DEVOTE HIS LIFE TO EXAMINING THOSE INTERESTING LITTLE PROBLEMS WHICH THE COMPLEX LIFE OF LONDON SO PLENTIFULLY PRESENTS diff --git a/samples/LMTutorial/train/engineers_thumb.txt b/samples/LMTutorial/train/engineers_thumb.txt new file mode 100755 index 0000000..0944579 --- /dev/null +++ b/samples/LMTutorial/train/engineers_thumb.txt @@ -0,0 +1,489 @@ + OF ALL THE PROBLEMS WHICH HAVE BEEN SUBMITTED TO MY FRIEND MR. SHERLOCK HOLMES FOR SOLUTION DURING THE YEARS OF OUR INTIMACY THERE WERE ONLY TWO WHICH I WAS THE MEANS OF INTRODUCING TO HIS NOTICE THAT OF MR. HATHERLEY'S THUMB AND THAT OF COLONEL WARBURTON'S MADNESS + OF THESE THE LATTER MAY HAVE AFFORDED A FINER FIELD FOR AN ACUTE AND ORIGINAL OBSERVER BUT THE OTHER WAS SO STRANGE IN ITS INCEPTION AND SO DRAMATIC IN ITS DETAILS THAT IT MAY BE THE MORE WORTHY OF BEING PLACED UPON RECORD EVEN IF IT GAVE MY FRIEND FEWER OPENINGS FOR THOSE DEDUCTIVE METHODS OF REASONING BY WHICH HE ACHIEVED SUCH REMARKABLE RESULTS + THE STORY HAS I BELIEVE BEEN TOLD MORE THAN ONCE IN THE NEWSPAPERS BUT LIKE ALL SUCH NARRATIVES ITS EFFECT IS MUCH LESS STRIKING WHEN SET FORTH EN BLOC IN A SINGLE HALF COLUMN OF PRINT THAN WHEN THE FACTS SLOWLY EVOLVE BEFORE YOUR OWN EYES AND THE MYSTERY CLEARS GRADUALLY AWAY AS EACH NEW DISCOVERY FURNISHES A STEP WHICH LEADS ON TO THE COMPLETE TRUTH + AT THE TIME THE CIRCUMSTANCES MADE A DEEP IMPRESSION UPON ME AND THE LAPSE OF TWO YEARS HAS HARDLY SERVED TO WEAKEN THE EFFECT + IT WAS IN THE SUMMER OF EIGHTY NINE NOT LONG AFTER MY MARRIAGE THAT THE EVENTS OCCURRED WHICH I AM NOW ABOUT TO SUMMARIZE + I HAD RETURNED TO CIVIL PRACTICE AND HAD FINALLY ABANDONED HOLMES IN HIS BAKER STREET ROOMS ALTHOUGH I CONTINUALLY VISITED HIM AND OCCASIONALLY EVEN PERSUADED HIM TO FORGO HIS BOHEMIAN HABITS SO FAR AS TO COME AND VISIT US + MY PRACTICE HAD STEADILY INCREASED AND AS I HAPPENED TO LIVE AT NO VERY GREAT DISTANCE FROM PADDINGTON STATION I GOT A FEW PATIENTS FROM AMONG THE OFFICIALS + ONE OF THESE WHOM I HAD CURED OF A PAINFUL AND LINGERING DISEASE WAS NEVER WEARY OF ADVERTISING MY VIRTUES AND OF ENDEAVOURING TO SEND ME ON EVERY SUFFERER OVER WHOM HE MIGHT HAVE ANY INFLUENCE + ONE MORNING AT A LITTLE BEFORE SEVEN O'CLOCK I WAS AWAKENED BY THE MAID TAPPING AT THE DOOR TO ANNOUNCE THAT TWO MEN HAD COME FROM PADDINGTON AND WERE WAITING IN THE CONSULTING ROOM + I DRESSED HURRIEDLY FOR I KNEW BY EXPERIENCE THAT RAILWAY CASES WERE SELDOM TRIVIAL AND HASTENED DOWNSTAIRS + AS I DESCENDED MY OLD ALLY THE GUARD CAME OUT OF THE ROOM AND CLOSED THE DOOR TIGHTLY BEHIND HIM + QUOTE I'VE GOT HIM HERE QUOTE HE WHISPERED JERKING HIS THUMB OVER HIS SHOULDER QUOTE HE'S ALL RIGHT QUOTE + WHAT IS IT THEN + I ASKED FOR HIS MANNER SUGGESTED THAT IT WAS SOME STRANGE CREATURE WHICH HE HAD CAGED UP IN MY ROOM + IT'S A NEW PATIENT HE WHISPERED + I THOUGHT I'D BRING HIM ROUND MYSELF THEN HE COULDN'T SLIP AWAY + THERE HE IS ALL SAFE AND SOUND + I MUST GO NOW DOCTOR I HAVE MY DOOTIES JUST THE SAME AS YOU + AND OFF HE WENT THIS TRUSTY TOUT WITHOUT EVEN GIVING ME TIME TO THANK HIM + I ENTERED MY CONSULTING ROOM AND FOUND A GENTLEMAN SEATED BY THE TABLE + HE WAS QUIETLY DRESSED IN A SUIT OF HEATHER TWEED WITH A SOFT CLOTH CAP WHICH HE HAD LAID DOWN UPON MY BOOKS + ROUND ONE OF HIS HANDS HE HAD A HANDKERCHIEF WRAPPED WHICH WAS MOTTLED ALL OVER WITH BLOODSTAINS + HE WAS YOUNG NOT MORE THAN FIVE AND TWENTY I SHOULD SAY WITH A STRONG MASCULINE FACE BUT HE WAS EXCEEDINGLY PALE AND GAVE ME THE IMPRESSION OF A MAN WHO WAS SUFFERING FROM SOME STRONG AGITATION WHICH IT TOOK ALL HIS STRENGTH OF MIND TO CONTROL + I AM SORRY TO KNOCK YOU UP SO EARLY DOCTOR SAID HE BUT I HAVE HAD A VERY SERIOUS ACCIDENT DURING THE NIGHT + I CAME IN BY TRAIN THIS MORNING AND ON INQUIRING AT PADDINGTON AS TO WHERE I MIGHT FIND A DOCTOR A WORTHY FELLOW VERY KINDLY ESCORTED ME HERE + I GAVE THE MAID A CARD BUT I SEE THAT SHE HAS LEFT IT UPON THE SIDE TABLE QUOTE + I TOOK IT UP AND GLANCED AT IT + MR. VICTOR HATHERLEY HYDRAUIIC ENGINEER ONE SIX A + VICTORIA STREET THREE D. FLOOR THAT WAS THE NAME STYLE AND ABODE OF MY MORNING VISITOR + I REGRET THAT I HAVE KEPT YOU WAITING SAID I SITTING DOWN IN MY LIBRARY CHAIR + YOU ARE FRESH FROM A NIGHT JOURNEY I UNDERSTAND WHICH IS IN ITSELF A MONOTONOUS OCCUPATION + OH MY NIGHT COULD NOT BE CALLED MONOTONOUS SAID HE AND LAUGHED + HE LAUGHED VERY HEARTILY WITH A HIGH RINGING NOTE LEANING BACK IN HIS CHAIR AND SHAKING HIS SIDES + ALL MY MEDICAL INSTINCTS ROSE UP AGAINST THAT LAUGH + QUOTE STOP IT QUOTE + I CRIED PULL YOURSELF TOGETHER AND I POURED OUT SOME WATER FROM A CARAFE + IT WAS USELESS HOWEVER + HE WAS OFF IN ONE OF THOSE HYSTERICAL OUTBURSTS WHICH COME UPON A STRONG NATURE WHEN SOME GREAT CRISIS IS OVER AND GONE + PRESENTLY HE CAME TO HIMSELF ONCE MORE VERY WEARY AND PALE LOOKING + I HAVE BEEN MAKING A FOOL OF MYSELF HE GASPED + NOT AT AIL + DRINK THIS + I DASHED SOME BRANDY INTO THE WATER AND THE COLOUR BEGAN TO COME BACK TO HIS BLOODLESS CHEEKS + THAT'S BETTER SAID HE + QUOTE AND NOW DOCTOR PERHAPS YOU WOULD KINDLY ATTEND TO MY THUMB OR RATHER TO THE PLACE WHERE MY THUMB USED TO BE QUOTE + HE UNWOUND THE HANDKERCHIEF AND HELD OUT HIS HAND + IT GAVE EVEN MY HARDENED NERVES A SHUDDER TO LOOK AT IT + THERE WERE FOUR PROTRUDING FINGERS AND A HORRID RED SPONGY SURFACE WHERE THE THUMB SHOULD HAVE BEEN + IT HAD BEEN HACKED OR TORN RIGHT OUT FROM THE ROOTS + GOOD HEAVENS + I CRIED THIS IS A TERRIBLE INJURY + IT MUST HAVE BLED CONSIDERABLY + YES IT DID + I FAINTED WHEN IT WAS DONE AND I THINK THAT I MUST HAVE BEEN SENSELESS FOR A LONG TIME + WHEN I CAME TO I FOUND THAT IT WAS STILL BLEEDING SOL TIED ONE END OF MY HANDKERCHIEF VERY TIGHTLY ROUND THE WRIST AND BRACED IT UP WITH A TWIG + QUOTE EXCELLENT + YOU SHOULD HAVE BEEN A SURGEON + IT IS A QUESTION OF HYDRAULICS YOU SEE AND CAME WITHIN MY OWN PROVINCE + THIS HAS BEEN DONE SAID I EXAMINING THE WOUND BY A VERY HEAVY AND SHARP INSTRUMENT + A THING LIKE A CLEAVER SAID HE + AN ACCIDENT I PRESUME + QUOTE BY NO MEANS QUOTE + WHAT A MURDEROUS ATTACK + VERY MURDEROUS INDEED + YOU HORRIFY ME + I SPONGED THE WOUND CLEANED IT DRESSED IT AND FINALLY COVERED IT OVER WITH COTTON WADDING AND CARBOLIZED BANDAGES + HE LAY BACK WITHOUT WINCING THOUGH HE BIT HIS LIP FROM TIME TO TIME + HOW IS THAT + I ASKED WHEN I HAD FINISHED + CAPITAL + BETWEEN YOUR BRANDY AND YOUR BANDAGE I FEEL A NEW MAN + I WAS VERY WEAK BUT I HAVE HAD A GOOD DEAL TO GO THROUGH QUOTE + PERHAPS YOU HAD BETTER NOT SPEAK OF THE MATTER + IT IS EVIDENTLY TRYING TO YOUR NERVES + OH NO NOT NOW + I SHALL HAVE TO TELL MY TALE TO THE POLICE BUT BETWEEN OURSELVES IF IT WERE NOT FOR THE CONVINCING EVIDENCE OF THIS WOUND OF MINE I SHOULD BE SURPRISED IF THEY BELIEVED MY STATEMENT FOR IT IS A VERY EXTRAORDINARY ONE AND I HAVE NOT MUCH IN THE WAY OF PROOF WITH WHICH TO BACK IT UP AND EVEN IF THEY BELIEVE ME THE CLUES WHICH I CAN GIVE THEM ARE SO VAGUE THAT IT IS A QUESTION WHETHER JUSTICE WILL BE DONE + HA CRIED I IF IT IS ANYTHING IN THE NATURE OF A PROBLEM WHICH YOU DESIRE TO SEE SOLVED I SHOULD STRONGLY RECOMMEND YOU TO COME TO MY FRIEND MR. SHERLOCK HOLMES BEFORE YOU GO TO THE OFFICIAL POLICE + QUOTE OH I HAVE HEARD OF THAT FELLOW QUOTE ANSWERED MY VISITOR QUOTE AND I SHOULD BE VERY GLAD IF HE WOULD TAKE THE MATTER UP THOUGH OF COURSE I MUST USE THE OFFICIAL POLICE AS WELL + WOULD YOU GIVE ME AN INTRODUCTION TO HIM + I'LL DO BETTER + I'LL TAKE YOU ROUND TO HIM MYSELF + I SHOULD BE IMMENSELY OBLIGED TO YOU + WE'LL CALL A CAB AND GO TOGETHER + WE SHALL JUST BE IN TIME TO HAVE A LITTLE BREAKFAST WITH HIM + DO YOU FEEL EQUAL TO IT QUOTE + YES I SHALL NOT FEEL EASY UNTIL I HAVE TOLD MY STORY + THEN MY SERVANT WILL CALL A CAB AND I SHALL BE WITH YOU IN AN INSTANT + I RUSHED UPSTAIRS EXPLAINED THE MATTER SHORTLY TO MY WIFE AND IN FIVE MINUTES WAS INSIDE A HANSOM DRIVING WITH MY NEW ACQUAINTANCE TO BAKER STREET + SHERLOCK HOLMES WAS AS I EXPECTED LOUNGING ABOUT HIS SITTINGROOM IN HIS DRESSING GOWN READING THE AGONY COLUMN OF THE TIMES AND SMOKING HIS BEFORE BREAKFAST PIPE WHICH WAS COMPOSED OF ALL THE PLUGS AND DOTTLES LEFT FROM HIS SMOKES OF THE DAY BEFORE ALL CAREFULLY DRIED AND COLLECTED ON THE CORNER OF THE MANTELPIECE + HE RECEIVED US IN HIS QUIETLY GENIAL FASHION ORDERED FRESH RASHERS AND EGGS AND JOINED US IN A HEARTY MEAL + WHEN IT WAS CONCLUDED HE SETTLED OUR NEW ACQUAINTANCE UPON THE SOFA PLACED A PILLOW BENEATH HIS HEAD AND LAID A GLASS OF BRANDY AND WATER WITHIN HIS REACH + IT IS EASY TO SEE THAT YOUR EXPERIENCE HAS BEEN NO COMMON ONE MR. HATHERLEY SAID HE + PRAY LIE DOWN THERE AND MAKE YOURSELF ABSOLUTELY AT HOME + TELL US WHAT YOU CAN BUT STOP WHEN YOU ARE TIRED AND KEEP UP YOUR STRENGTH WITH A LITTLE STIMULANT + QUOTE THANK YOU QUOTE SAID MY PATIENT QUOTE BUT I HAVE FELT ANOTHER MAN SINCE THE DOCTOR BANDAGED ME AND I THINK THAT YOUR BREAKFAST HAS COMPLETED THE CURE + I SHALL TAKE UP AS LITTLE OF YOUR VALUABLE TIME AS POSSIBLE SO L. SHALL START AT ONCE UPON MY PECULIAR EXPERIENCES + HOLMES SAT IN HIS BIG ARMCHAIR WITH THE WEARY HEAVY LIDDED EXPRESSION WHICH VEILED HIS KEEN AND EAGER NATURE WHILE I SAT OPPOSITE TO HIM AND WE LISTENED IN SILENCE TO THE STRANGE STORY WHICH OUR VISITOR DETAILED TO US + YOU MUST KNOW SAID HE THAT I AM AN ORPHAN AND A BACHELOR RESIDING ALONE IN LODGINGS IN LONDON + BY PROFESSION I AM A HYDRAULIC ENGINEER AND I HAVE HAD CONSIDERABLE EXPERIENCE OF MY WORK DURING THE SEVEN YEARS THAT I WAS APPRENTICED TO VENNER AND MATHESON THE WELL KNOWN FIRM OF GREENWICH + TWO YEARS AGO HAVING SERVED MY TIME AND HAVING ALSO COME INTO A FAIR SUM OF MONEY THROUGH MY POOR FATHER'S DEATH I DETERMINED TO START IN BUSINESS FOR MYSELF AND TOOK PROFESSIONAL CHAMBERS IN VICTORIA STREET + I SUPPOSE THAT EVERYONE FINDS HIS FIRST INDEPENDENT START IN BUSINESS A DREARY EXPERIENCE + TO ME IT HAS BEEN EXCEPTIONALLY SO + DURING TWO YEARS I HAVE HAD THREE CONSULTATIONS AND ONE SMALL JOB AND THAT IS ABSOLUTELY ALL THAT MY PROFESSION HAS BROUGHT ME + MY GROSS TAKINGS AMOUNT TO TWENTY SEVEN POUNDS LOS + EVERY DAY FROM NINE IN THE MORNING UNTIL FOUR IN THE AFTERNOON I WAITED IN MY LITTLE DEN UNTIL AT LAST MY HEART BEGAN TO SINK AND I CAME TO BELIEVE THAT I SHOULD NEVER HAVE ANY PRACTICE AT ALL + YESTERDAY HOWEVER JUST AS I WAS THINKING OF LEAVING THE OFFICE MY CLERK ENTERED TO SAY THERE WAS A GENTLEMAN WAITING WHO WISHED TO SEE ME UPON BUSINESS + HE BROUGHT UP A CARD TOO WITH THE NAME OF COLONEL LYSANDER STARK ENGRAVED UPON IT + CLOSE AT HIS HEELS CAME THE COLONEL HIMSELF A MAN RATHER OVER THE MIDDLE SIZE BUT OF AN EXCEEDING THINNESS + I DO NOT THINK THAT I HAVE EVER SEEN SO THIN A MAN + HIS WHOLE FACE SHARPENED AWAY INTO NOSE AND CHIN AND THE SKIN OF HIS CHEEKS WAS DRAWN QUITE TENSE OVER HIS OUTSTANDING BONES + YET THIS EMACIATION SEEMED TO BE HIS NATURAL HABIT AND DUE TO NO DISEASE FOR HIS EYE WAS BRIGHT HIS STEP BRISK AND HIS BEARING ASSURED + HE WAS PLAINLY BUT NEATLY DRESSED AND HIS AGE I SHOULD JUDGE WOULD BE NEARER FORTY THAN THIRTY + MR. HATHERLEY SAID HE WITH SOMETHING OF A GERMAN ACCENT + YOU HAVE BEEN RECOMMENDED TO ME MR. HATHERLEY AS BEING A MAN WHO IS NOT ONLY PROFICIENT IN HIS PROFESSION BUT IS ALSO DISCREET AND CAPABLE OF PRESERVING A SECRET + QUOTE I BOWED FEELING AS FLATTERED AS ANY YOUNG MAN WOULD AT SUCH AN ADDRESS + MAY I ASK WHO IT WAS WHO GAVE ME SO GOOD A CHARACTER + WELL PERHAPS IT IS BETTER THAT I SHOULD NOT TELL YOU THAT JUST AT THIS MOMENT + I HAVE IT FROM THE SAME SOURCE THAT YOU ARE BOTH AN ORPHAN AND A BACHELOR AND ARE RESIDING ALONE IN LONDON + THAT IS QUITE CORRECT I ANSWERED BUT YOU WILL EXCUSE ME IF I SAY THAT I CANNOT SEE HOW ALL THIS BEARS UPON MY PROFESSIONAL QUALIFICATIONS + I UNDERSTAND THAT IT WAS ON A PROFESSIONAL MATTER THAT YOU WISHED TO SPEAK TO ME + UNDOUBTEDLY SO + BUT YOU WILL FIND THAT ALL I SAY IS REALLY TO THE POINT + I HAVE A PROFESSIONAL COMMISSION FOR YOU BUT ABSOLUTE SECRECY IS QUITE ESSENTIAL ABSOLUTE SECRECY YOU UNDERSTAND AND OF COURSE WE MAY EXPECT THAT MORE FROM A MAN WHO IS ALONE THAN FROM ONE WHO LIVES IN THE BOSOM OF HIS FAMILY + IF I PROMISE TO KEEP A SECRET SAID I YOU MAY ABSOLUTELY DEPEND UPON MY DOING SO + HE LOOKED VERY HARD AT ME AS I SPOKE AND IT SEEMED TO ME THAT I HAD NEVER SEEN SO SUSPICIOUS AND QUESTIONING AN EYE + QUOTE DO YOU PROMISE THEN SAID HE AT LAST + YES I PROMISE + ABSOLUTE AND COMPLETE SILENCE BEFORE DURING AND AFTER + NO REFERENCE TO THE MATTER AT ALL EITHER IN WORD OR WRITING + I HAVE ALREADY GIVEN YOU MY WORD + VERY GOOD + HE SUDDENLY SPRANG UP AND DARTING LIKE LIGHTNING ACROSS THE ROOM HE FLUNG OPEN THE DOOR + THE PASSAGE OUTSIDE WAS EMPTY + THAT'S ALL RIGHT SAID HE COMING BACK + I KNOW THE CLERKS ARE SOMETIMES CURIOUS AS TO THEIR MASTER'S AFFAIRS + NOW WE CAN TALK IN SAFETY + HE DREW UP HIS CHAIR VERY CLOSE TO MINE AND BEGAN TO STARE AT ME AGAIN WITH THE SAME QUESTIONING AND THOUGHTFUL LOOK + QUOTE A FEELING OF REPULSION AND OF SOMETHING AKIN TO FEAR HAD BEGUN TO RISE WITHIN ME AT THE STRANGE ANTICS OF THIS FLESHLESS MAN + EVEN MY DREAD OF LOSING A CLIENT COULD NOT RESTRAIN ME FROM SHOWING MY IMPATIENCE + I BEG THAT YOU WILL STATE YOUR BUSINESS SIR SAID L. MY TIME IS OF VALUE + HEAVEN FORGIVE ME FOR THAT LAST SENTENCE BUT THE WORDS CAME TO MY LIPS + HOW WOULD FIFTY GUINEAS FOR A NIGHT'S WORK SUIT YOU HE ASKED + MOST ADMIRABLY + I SAY A NIGHT'S WORK BUT AN HOUR'S WOULD BE NEARER THE MARK + I SIMPLY WANT YOUR OPINION ABOUT A HYDRAULIC STAMPING MACHINE WHICH HAS GOT OUT OF GEAR + IF YOU SHOW US WHAT IS WRONG WE SHALL SOON SET IT RIGHT OURSELVES + WHAT DO YOU THINK OF SUCH A COMMISSION AS THAT + THE WORK APPEARS TO BE LIGHT AND THE PAY MUNIFICENT + QUOTE PRECISELY SO + WE SHALL WANT YOU TO COME TO NIGHT BY THE LAST TRAIN + WHERE TO + TO EYFORD IN BERKSHIRE + IT IS A LITTLE PLACE NEAR THE BORDERS OF OXFORDSHIRE AND WITHIN SEVEN MILES OF READING + THERE IS A TRAIN FROM PADDINGTON WHICH WOULD BRING YOU THERE AT ABOUT ELEVEN FIFTEEN + VERY GOOD + I SHALL COME DOWN IN A CARRIAGE TO MEET YOU + THERE IS A DRIVE THEN + QUOTE YES OUR LITTLE PLACE IS QUITE OUT IN THE COUNTRY + IT IS A GOOD SEVEN MILES FROM EYFORD STATION + THEN WE CAN HARDLY GET THERE BEFORE MIDNIGHT + I SUPPOSE THERE WOULD BE NO CHANCE OF A TRAIN BACK + I SHOULD BE COMPELLED TO STOP THE NIGHT + YES WE COULD EASILY GIVE YOU A SHAKE DOWN + THAT IS VERY AWKWARD + COULD I NOT COME AT SOME MORE CONVENIENT HOUR + WE HAVE JUDGED IT BEST THAT YOU SHOULD COME LATE + IT IS TO RECOMPENSE YOU FOR ANY INCONVENIENCE THAT WE ARE PAYING TO YOU A YOUNG AND UNKNOWN MAN A FEE WHICH WOULD BUY AN OPINION FROM THE VERY HEADS OF YOUR PROFESSION + STILL OF COURSE IF YOU WOULD LIKE TO DRAW OUT OF THE BUSINESS THERE IS PLENTY OF TIME TO DO SO + I THOUGHT OF THE FIFTY GUINEAS AND OF HOW VERY USEFUL THEY WOULD BE TO ME + NOT AT ALL SAID I I SHALL BE VERY HAPPY TO ACCOMMODATE MYSELF TO YOUR WISHES + I SHOULD LIKE HOWEVER TO UNDERSTAND A LITTLE MORE CLEARLY WHAT IT IS THAT YOU WISH ME TO DO + QUOTE QUITE SO + IT IS VERY NATURAL THAT THE PLEDGE OF SECRECY WHICH WE HAVE EXACTED FROM YOU SHOULD HAVE AROUSED YOUR CURIOSITY + I HAVE NO WISH TO COMMIT YOU TO ANYTHING WITHOUT YOUR HAVING IT ALL LAID BEFORE YOU + I SUPPOSE THAT WE ARE ABSOLUTELY SAFE FROM EAVESDROPPERS + ENTIRELY + THEN THE MATTER STANDS THUS + YOU ARE PROBABLY AWARE THAT FULLER'S EARTH IS A VALUABLE PRODUCT AND THAT IT IS ONLY FOUND IN ONE OR TWO PLACES IN ENGLAND + I HAVE HEARD SO + SOME LITTLE TIME AGO I BOUGHT A SMALL PLACE A VERY SMALL PLACE WITHIN TEN MILES OF READING + I WAS FORTUNATE ENOUGH TO DISCOVER THAT THERE WAS A DEPOSIT OF FULLER'S EARTH IN ONE OF MY FIELDS + ON EXAMINING IT HOWEVER I FOUND THAT THIS DEPOSIT WAS A COMPARATIVELY SMALL ONE AND THAT IT FORMED A LINK BETWEEN TWO VERY MUCH LARGER ONES UPON THE RIGHT AND LEFT BOTH OF THEM HOWEVER IN THE GROUNDS OF MY NEIGHBOURS + THESE GOOD PEOPLE WERE ABSOLUTELY IGNORANT THAT THEIR LAND CONTAINED THAT WHICH WAS QUITE AS VALUABLE AS A GOLD MINE + NATURALLY IT WAS TO MY INTEREST TO BUY THEIR LAND BEFORE THEY DISCOVERED ITS TRUE VALUE BUT UNFORTUNATELY I HAD NO CAPITAL BY WHICH I COULD DO THIS + I TOOK A FEW OF MY FRIENDS INTO THE SECRET HOWEVER AND THEY SUGGESTED THAT WE SHOULD QUIETLY AND SECRETLY WORK OUR OWN LITTLE DEPOSIT AND THAT IN THIS WAY WE SHOULD EARN THE MONEY WHICH WOULD ENABLE US TO BUY THE NEIGHBOURING FIELDS + THIS WE HAVE NOW BEEN DOING FOR SOME TIME AND IN ORDER TO HELP US IN OUR OPERATIONS WE ERECTED A HYDRAULIC PRESS + THIS PRESS AS I HAVE ALREADY EXPLAINED HAS GOT OUT OF ORDER AND WE WISH YOUR ADVICE UPON THE SUBJECT + WE GUARD OUR SECRET VERY JEALOUSLY HOWEVER AND IF IT ONCE BECAME KNOWN THAT WE HAD HYDRAULIC ENGINEERS COMING TO OUR LITTLE HOUSE IT WOULD SOON ROUSE INQUIRY AND THEN IF THE FACTS CAME OUT IT WOULD BE GOOD BYE TO ANY CHANCE OF GETTING THESE FIELDS AND CARRYING OUT OUR PLANS + THAT IS WHY I HAVE MADE YOU PROMISE ME THAT YOU WILL NOT TELL A HUMAN BEING THAT YOU ARE GOING TO EYFORD TO NIGHT + I HOPE THAT I MAKE IT ALL PLAIN + I QUITE FOLLOW YOU SAID I. THE ONLY POINT WHICH I COULD NOT QUITE UNDERSTAND WAS WHAT USE YOU COULD MAKE OF A HYDRAULIC PRESS IN EXCAVATING FULLER'S EARTH WHICH AS I UNDERSTAND IS DUG OUT LIKE GRAVEL FROM A PIT + QUOTE AH SAID HE CARELESSLY WE HAVE OUR OWN PROCESS + WE COMPRESS THE EARTH INTO BRICKS SO AS TO REMOVE THEM WITHOUT REVEALING WHAT THEY ARE + BUT THAT IS A MERE DETAIL + I HAVE TAKEN YOU FULLY INTO MY CONFIDENCE NOW MR. HATHERLEY AND I HAVE SHOWN YOU HOW I TRUST YOU + HE ROSE AS HE SPOKE + I SHALL EXPECT YOU THEN AT EYFORD AT ELEVEN FIFTEEN + I SHALL CERTAINLY BE THERE + AND NOT A WORD TO A SOUL + HE LOOKED AT ME WITH A LAST LONG QUESTIONING GAZE AND THEN PRESSING MY HAND IN A COLD DANK GRASP HE HURRIED FROM THE ROOM + WELL WHEN I CAME TO THINK IT ALL OVER IN COOL BLOOD I WAS VERY MUCH ASTONISHED AS YOU MAY BOTH THINK AT THIS SUDDEN COMMISSION WHICH HAD BEEN INTRUSTED TO ME + ON THE ONE HAND OF COURSE I WAS GLAD FOR THE FEE WAS AT LEAST TENFOLD WHAT I SHOULD HAVE ASKED HAD I SET A PRICE UPON MY OWN SERVICES AND IT WAS POSSIBLE THAT THIS ORDER MIGHT LEAD TO OTHER ONES + ON THE OTHER HAND THE FACE AND MANNER OF MY PATRON HAD MADE AN UNPLEASANT IMPRESSION UPON ME AND I COULD NOT THINK THAT HIS EXPLANATION OF THE FULLER'S EARTH WAS SUFFICIENT TO EXPLAIN THE NECESSITY FOR MY COMING AT MIDNIGHT AND HIS EXTREME ANXIETY LEST I SHOULD TELL ANYONE OF MY ERRAND + HOWEVER I THREW ALL FEARS TO THE WINDS ATE A HEARTY SUPPER DROVE TO PADDINGTON AND STARTED OFF HAVING OBEYED TO THE LETTER THE INJUNCTION AS TO HOLDING MY TONGUE + AT READING I HAD TO CHANGE NOT ONLY MY CARRIAGE BUT MY STATION + HOWEVER I WAS IN TIME FOR THE LAST TRAIN TO EYFORD AND I REACHED THE LITTLE DIM LIT STATION AHER ELEVEN O'CLOCK + I WAS THE ONLY PASSENGER WHO GOT OUT THERE AND THERE WAS NO ONE UPON THE PLATFORM SAVE A SINGLE SLEEPY PORTER WITH A LANTERN + AS I PASSED OUT THROUGH THE WICKET GATE HOWEVER I FOUND MY ACQUAINTANCE OF THE MORNING WAITING IN THE SHADOW UPON THE OTHER SIDE + WITHOUT A WORD HE GRASPED MY ARM AND HURRIED ME INTO A CARRIAGE THE DOOR OF WHICH WAS STANDING OPEN + HE DREW UP THE WINDOWS ON EITHER SIDE TAPPED ON THE WOOD WORK AND AWAY WE WENT AS FAST AS THE HORSE COULD GO + QUOTE ONE HORSE QUOTE INTERJECTED HOLMES + YES ONLY ONE + DID YOU OBSERVE THE COLOUR + YES I SAW IT BY THE SIDE LIGHTS WHEN I WAS STEPPING INTO THE CARRIAGE + IT WAS A CHESTNUT + TIRED LOOKING OR FRESH + QUOTE OH FRESH AND GLOSSY QUOTE + THANK YOU + I AM SORRY TO HAVE INTERRUPTED YOU + PRAY CONTINUE YOUR MOST INTERESTING STATEMENT + AWAY WE WENT THEN AND WE DROVE FOR AT LEAST AN HOUR + COLONEL LYSANDER STARK HAD SAID THAT IT WAS ONLY SEVEN MILES BUT I SHOULD THINK FROM THE RATE THAT WE SEEMED TO GO AND FROM THE TIME THAT WE TOOK THAT IT MUST HAVE BEEN NEARER TWELVE + HE SAT AT MY SIDE IN SILENCE ALL THE TIME AND I WAS AWARE MORE THAN ONCE WHEN I GLANCED IN HIS DIRECTION THAT HE WAS LOOKING AT ME WITH GREAT INTENSITY + THE COUNTRY ROADS SEEM TO BE NOT VERY GOOD IN THAT PART OF THE WORLD FOR WE LURCHED AND JOLTED TERRIBLY + I TRIED TO LOOK OUT OF THE WINDOWS TO SEE SOMETHING OF WHERE WE WERE BUT THEY WERE MADE OF FROSTED GLASS AND I COULD MAKE OUT NOTHING SAVE THE OCCASIONAL BRIGHT BLUR OF A PASSING LIGHT + NOW AND THEN I HAZARDED SOME REMARK TO BREAK THE MONOTONY OF THE JOURNEY BUT THE COLONEL ANSWERED ONLY IN MONOSYLLABLES AND THE CONVERSATION SOON FLAGGED + AT LAST HOWEVER THE BUMPING OF THE ROAD WAS EXCHANGED FOR THE CRISP SMOOTHNESS OF A GRAVEL DRIVE AND THE CARRIAGE CAME TO A STAND + COLONEL LYSANDER STARK SPRANG OUT AND AS I FOLLOWED AFTER HIM PULLED ME SWIFTLY INTO A PORCH WHICH GAPED IN FRONT OF US + WE STEPPED AS IT WERE RIGHT OUT OF THE CARRIAGE AND INTO THE HALL SO THAT I FAILED TO CATCH THE MOST FLEETING GLANCE OF THE FRONT OF THE HOUSE + THE INSTANT THAT I HAD CROSSED THE THRESHOLD THE DOOR SLAMMED HEAVILY BEHIND US AND I HEARD FAINTLY THE RATTLE OF THE WHEELS AS THE CARRIAGE DROVE AWAY + IT WAS PITCH DARK INSIDE THE HOUSE AND THE COLONEL FUMBLED ABOUT LOOKING FOR MATCHES AND MUTTERING UNDER HIS BREATH + SUDDENLY A DOOR OPENED AT THE OTHER END OF THE PASSAGE AND A LONG GOLDEN BAR OF LIGHT SHOT OUT IN OUR DIRECTION + IT GREW BROADER AND A WOMAN APPEARED WITH A LAMP IN HER HAND WHICH SHE HELD ABOVE HER HEAD PUSHING HER FACE FORWARD AND PEERING AT US + I COULD SEE THAT SHE WAS PRETTY AND FROM THE GLOSS WITH WHICH THE LIGHT SHONE UPON HER DARK DRESS I KNEW THAT IT WAS A RICH MATERIAL + SHE SPOKE A FEW WORDS IN A FOREIGN TONGUE IN A TONE AS THOUGH ASKING A QUESTION AND WHEN MY COMPANION ANSWERED IN A GRUFF MONOSYLLABLE SHE GAVE SUCH A START THAT THE LAMP NEARLY FELL FROM HER HAND + COLONEL STARK WENT UP TO HER WHISPERED SOMETHING IN HER EAR AND THEN PUSHING HER BACK INTO THE ROOM FROM WHENCE SHE HAD COME HE WALKED TOWARDS ME AGAIN WITH THE LAMP IN HIS HAND + PERHAPS YOU WILL HAVE THE KINDNESS TO WAIT IN THIS ROOM FOR A FEW MINUTES SAID HE THROWING OPEN ANOTHER DOOR + IT WAS A QUIET LITTLE PLAINLY FURNISHED ROOM WITH A ROUND TABLE IN THE CENTRE ON WHICH SEVERAL GERMAN BOOKS WERE SCATTERED + COLONEL STARK LAID DOWN THE LAMP ON THE TOP OF A HARMONIUM BESIDE THE DOOR + I SHALL NOT KEEP YOU WAITING AN INSTANT SAID HE AND VANISHED INTO THE DARKNESS + QUOTE I GLANCED AT THE BOOKS UPON THE TABLE AND IN SPITE OF MY IGNORANCE OF GERMAN I COULD SEE THAT TWO OF THEM WERE TREATISES ON SCIENCE THE OTHERS BEING VOLUMES OF POETRY + THEN I WALKED ACROSS TO THE WINDOW HOPING THAT I MIGHT CATCH SOME GLIMPSE OF THE COUNTRY SIDE BUT AN OAK SHUTTER HEAVILY BARRED WAS FOLDED ACROSS IT + IT WAS A WONDERFULLY SILENT HOUSE + THERE WAS AN OLD CLOCK TICKING LOUDLY SOMEWHERE IN THE PASSAGE BUT OTHERWISE EVERYTHING WAS DEADLY STILL + A VAGUE FEELING OF UNEASINESS BEGAN TO STEAL OVER ME + WHO WERE THESE GERMAN PEOPLE AND WHAT WERE THEY DOING LIVING IN THIS STRANGE OUT OF THE WAY PLACE + AND WHERE WAS THE PLACE + I WAS TEN MILES OR SO FROM EYFORD THAT WAS ALL I KNEW BUT WHETHER NORTH SOUTH EAST OR WEST I HAD NO IDEA + FOR THAT MATTER READING AND POSSIBLY OTHER LARGE TOWNS WERE WITHIN THAT RADIUS SO THE PLACE MIGHT NOT BE SO SECLUDED AFTER ALL + YET IT WAS QUITE CERTAIN FROM THE ABSOLUTE STILLNESS THAT WE WERE IN THE COUNTRY + I PACED UP AND DOWN THE ROOM HUMMING A TUNE UNDER MY BREATH TO KEEP UP MY SPIRITS AND FEELING THAT I WAS THOROUGHLY EARNING MY FIFTY GUINEA FEE + SUDDENLY WITHOUT ANY PRELIMINARY SOUND IN THE MIDST OF THE UTTER STILLNESS THE DOOR OF MY ROOM SWUNG SLOWLY OPEN + THE WOMAN WAS STANDING IN THE APERTURE THE DARKNESS OF THE HALL BEHIND HER THE YELLOW LIGHT FROM MY LAMP BEATING UPON HER EAGER AND BEAUTIFUL FACE + I COULD SEE AT A GLANCE THAT SHE WAS SICK WITH FEAR AND THE SIGHT SENT A CHILL TO MY OWN HEART + SHE HELD UP ONE SHAKING FINGER TO WARN ME TO BE SILENT AND SHE SHOT A FEW WHISPERED WORDS OF BROKEN ENGLISH AT ME HER EYES GLANCING BACK LIKE THOSE OF A FRIGHTENED HORSE INTO THE GLOOM BEHIND HER + I WOULD GO SAID SHE TRYING HARD AS IT SEEMED TO ME TO SPEAK CALMLY I WOULD GO + I SHOULD NOT STAY HERE + THERE IS NO GOOD FOR YOU TO DO + BUT MADAM SAID I I HAVE NOT YET DONE WHAT I CAME FOR + I CANNOT POSSIBLY LEAVE UNTIL I HAVE SEEN THE MACHINE + IT IS NOT WORTH YOUR WHILE TO WAIT SHE WENT ON + YOU CAN PASS THROUGH THE DOOR NO ONE HINDERS + AND THEN SEEING THAT I SMILED AND SHOOK MY HEAD SHE SUDDENLY THREW ASIDE HER CONSTRAINT AND MADE A STEP FORWARD WITH HER HANDS WRUNG TOGETHER + FOR THE LOVE OF HEAVEN SHE WHISPERED GET AWAY FROM HERE BEFORE IT IS TOO LATE + BUT I AM SOMEWHAT HEADSTRONG BY NATURE AND THE MORE READY TO ENGAGE IN AN AFFAIR WHEN THERE IS SOME OBSTACLE IN THE WAY + I THOUGHT OF MY FIFTY GUINEA FEE OF MY WEARISOME JOURNEY AND OF THE UNPLEASANT NIGHT WHICH SEEMED TO BE BEFORE ME + WAS IT ALL TO GO FOR NOTHING + WHY SHOULD I SLINK AWAY WITHOUT HAVING CARRIED OUT MY COMMISSION AND WITHOUT THE PAYMENT WHICH WAS MY DUE + THIS WOMAN MIGHT FOR ALL I KNEW BE A MONOMANIAC + WITH A STOUT BEARING THEREFORE THOUGH HER MANNER HAD SHAKEN ME MORE THAN I CARED TO CONFESS I STILL SHOOK MY HEAD AND DECLARED MY INTENTION OF REMAINING WHERE I WAS + SHE WAS ABOUT TO RENEW HER ENTREATIES WHEN A DOOR SLAMMED OVERHEAD AND THE SOUND OF SEVERAL FOOTSTEPS WAS HEARD UPON THE STAIRS + SHE LISTENED FOR AN INSTANT THREW UP HER HANDS WITH A DESPAIRING GESTURE AND VANISHED AS SUDDENLY AND AS NOISELESSLY AS SHE HAD COME + QUOTE THE NEWCOMERS WERE COLONEL LYSANDER STARK AND A SHORT THICK MAN WITH A CHINCHILLA BEARD GROWING OUT OF THE CREASES OF HIS DOUBLE CHIN WHO WAS INTRODUCED TO ME AS MR. FERGUSON + THIS IS MY SECRETARY AND MANAGER SAID THE COLONEL + BY THE WAY I WAS UNDER THE IMPRESSION THAT I LEFT THIS DOOR SHUT JUST NOW + I FEAR THAT YOU HAVE FELT THE DRAUGHT + ON THE CONTRARY SAID I I OPENED THE DOOR MYSELF BECAUSE I FELT THE ROOM TO BE A LITTLE CLOSE + HE SHOT ONE OF HIS SUSPICIOUS LOOKS AT ME + PERHAPS WE HAD BETTER PROCEED TO BUSINESS THEN SAID HE + MR. FERGUSON AND I WILL TAKE YOU UP TO SEE THE MACHINE + I HAD BETTER PUT MY HAT ON I SUPPOSE + OH NO IT IS IN THE HOUSE + QUOTE WHAT YOU DIG FULLER'S EARTH IN THE HOUSE + NO NO + THIS IS ONLY WHERE WE COMPRESS IT + BUT NEVER MIND THAT + ALL WE WISH YOU TO DO IS TO EXAMINE THE MACHINE AND TO LET US KNOW WHAT IS WRONG WITH IT + WE WENT UPSTAIRS TOGETHER THE COLONEL FIRST WITH THE LAMP THE FAT MANAGER AND I BEHIND HIM + IT WAS A LABYRINTH OF AN OLD HOUSE WITH CORRIDORS PASSAGES NARROW WINDING STAIRCASES AND LITTLE LOW DOORS THE THRESHOLDS OF WHICH WERE HOLLOWED OUT BY THE GENERATIONS WHO HAD CROSSED THEM + THERE WERE NO CARPETS AND NO SIGNS OF ANY FURNITURE ABOVE THE GROUND FLOOR WHILE THE PLASTER WAS PEELING OFF THE WALLS AND THE DAMP WAS BREAKING THROUGH IN GREEN UNHEALTHY BLOTCHES + I TRIED TO PUT ON AS UNCONCERNED AN AIR AS POSSIBLE BUT I HAD NOT FORGOTTEN THE WARNINGS OF THE LADY EVEN THOUGH I DISREGARDED THEM AND I KEPT A KEEN EYE UPON MY TWO COMPANIONS + FERGUSON APPEARED TO BE A MOROSE AND SILENT MAN BUT I COULD SEE FROM THE LITTLE THAT HE SAID THAT HE WAS AT LEAST A FELLOW COUNTRYMAN + COLONEL LYSANDER STARK STOPPED AT LAST BEFORE A LOW DOOR WHICH HE UNLOCKED + WITHIN WAS A SMALL SQUARE ROOM IN WHICH THE THREE OF US COULD HARDLY GET AT ONE TIME + FERGUSON REMAINED OUTSIDE AND THE COLONEL USHERED ME IN + WE ARE NOW SAID HE ACTUALLY WITHIN THE HYDRAULIC PRESS AND IT WOULD BE A PARTICULARLY UNPLEASANT THING FOR US IF ANYONE WERE TO TURN IT ON + THE CEILING OF THIS SMALL CHAMBER IS REALLY THE END OF THE DESCENDING PISTON AND IT COMES DOWN WITH THE FORCE OF MANY TONS UPON THIS METAL FLOOR + THERE ARE SMALL LATERAL COLUMNS OF WATER OUTSIDE WHICH RECEIVE THE FORCE AND WHICH TRANSMIT AND MULTIPLY IT IN THE MANNER WHICH IS FAMILIAR TO YOU + THE MACHINE GOES READILY ENOUGH BUT THERE IS SOME STIFFNESS IN THE WORKING OF IT AND IT HAS LOST A LITTLE OF ITS FORCE + PERHAPS YOU WILL HAVE THE GOODNESS TO LOOK IT OVER AND TO SHOW US HOW WE CAN SET IT RIGHT + I TOOK THE LAMP FROM HIM AND I EXAMINED THE MACHINE VERY THOROUGHLY + IT WAS INDEED A GIGANTIC ONE AND CAPABLE OF EXERCISING ENORMOUS PRESSURE + WHEN I PASSED OUTSIDE HOWEVER AND PRESSED DOWN THE LEVERS WHICH CONTROLLED IT I KNEW AT ONCE BY THE WHISHING SOUND THAT THERE WAS A SLIGHT LEAKAGE WHICH ALLOWED A REGURGITATION OF WATER THROUGH ONE OF THE SIDE CYLINDERS + AN EXAMINATION SHOWED THAT ONE OF THE INDIA RUBBER BANDS WHICH WAS ROUND THE HEAD OF A DRIVING ROD HAD SHRUNK SO AS NOT QUITE TO FILL THE SOCKET ALONG WHICH IT WORKED + THIS WAS CLEARLY THE CAUSE OF THE LOSS OF POWER AND I POINTED IT OUT TO MY COMPANIONS WHO FOLLOWED MY REMARKS VERY CAREFULLY AND ASKED SEVERAL PRACTICAL QUESTIONS AS TO HOW THEY SHOULD PROCEED TO SET IT RIGHT + WHEN I HAD MADE IT CLEAR TO THEM I RETURNED TO THE MAIN CHAMBER OF THE MACHINE AND TOOK A GOOD LOOK AT IT TO SATISFY MY OWN CURIOSITY + IT WAS OBVIOUS AT A GLANCE THAT THE STORY OF THE FULLER'S EARTH WAS THE MEREST FABRICATION FOR IT WOULD BE ABSURD TO SUPPOSE THAT SO POWERFUL AN ENGINE COULD BE DESIGNED FOR SO INADEQUATE A PURPOSE + THE WALLS WERE OF WOOD BUT THE FLOOR CONSISTED OF A LARGE IRON TROUGH AND WHEN I CAME TO EXAMINE IT I COULD SEE A CRUST OF METALLIC DEPOSIT ALL OVER IT + I HAD STOOPED AND WAS SCRAPING AT THIS TO SEE EXACTLY WHAT IT WAS WHEN I HEARD A MUTTERED EXCLAMATION IN GERMAN AND SAW THE CADAVEROUS FACE OF THE COLONEL LOOKING DOWN AT ME + QUOTE WHAT ARE YOU DOING THERE HE ASKED + I FELT ANGRY AT HAVING BEEN TRICKED BY SO ELABORATE A STORY AS THAT WHICH HE HAD TOLD ME + I WAS ADMIRING YOUR FULLER'S EARTH SAID I I THINK THAT I SHOULD BE BETTER ABLE TO ADVISE YOU AS TO YOUR MACHINE IF I KNEW WHAT THE EXACT PURPOSE WAS FOR WHICH IT WAS USED + THE INSTANT THAT I UTTERED THE WORDS I REGRETTED THE RASHNESS OF MY SPEECH + HIS FACE SET HARD AND A BALEFUL LIGHT SPRANG UP IN HIS GRAY EYES + VERY WELL SAID HE YOU SHALL KNOW ALL ABOUT THE MACHINE + HE TOOK A STEP BACKWARD SLAMMED THE LITTLE DOOR AND TURNED THE KEY IN THE LOCK + I RUSHED TOWARDS IT AND PULLED AT THE HANDLE BUT IT WAS QUITE SECURE AND DID NOT GIVE IN THE LEAST TO MY KICKS AND SHOVES + HELLO + I YELLED + HELLO + COLONEL + LET ME OUT + AND THEN SUDDENLY IN THE SILENCE I HEARD A SOUND WHICH SENT MY HEART INTO MY MOUTH + IT WAS THE CLANK OF THE LEVERS AND THE SWISH OF THE LEAKING CYLINDER + HE HAD SET THE ENGINE AT WORK + THE LAMP STILL STOOD UPON THE FLOOR WHERE I HAD PLACED IT WHEN EXAMINING THE TROUGH + BY ITS LIGHT I SAW THAT THE BLACK CEILING WAS COMING DOWN UPON ME SLOWLY JERKILY BUT AS NONE KNEW BETTER THAN MYSELF WITH A FORCE WHICH MUST WITHIN A MINUTE GRIND ME TO A SHAPELESS PULP + I THREW MYSELF SCREAMING AGAINST THE DOOR AND DRAGGED WITH MY NAILS AT THE LOCK + I IMPLORED THE COLONEL TO LET ME OUT BUT THE REMORSELESS CLANKING OF THE LEVERS DROWNED MY CRIES + THE CEILING WAS ONLY A FOOT OR TWO ABOVE MY HEAD AND WITH MY HAND UPRAISED I COULD FEEL ITS HARD ROUGH SURFACE + THEN IT FLASHED THROUGH MY MIND THAT THE PAIN OF MY DEATH WOULD DEPEND VERY MUCH UPON THE POSITION IN WHICH I MET IT + IF I LAY ON MY FACE THE WEIGHT WOULD COME UPON MY SPINE AND I SHUDDERED TO THINK OF THAT DREADFUL SNAP + EASIER THE OTHER WAY PERHAPS AND YET HAD I THE NERVE TO LIE AND LOOK UP AT THAT DEADLY BLACK SHADOW WAVERING DOWN UPON ME + ALREADY I WAS UNABLE TO STAND ERECT WHEN MY EYE CAUGHT SOMETHING WHICH BROUGHT A GUSH OF HOPE BACK TO MY HEART + I HAVE SAID THAT THOUGH THE FLOOR AND CEILING WERE OF IRON THE WALLS WERE OF WOOD + AS I GAVE A LAST HURRIED GLANCE AROUND I SAW A THIN LINE OF YELLOW LIGHT BETWEEN TWO OF THE BOARDS WHICH BROADENED AND BROADENED AS A SMALL PANEL WAS PUSHED BACKWARD + FOR AN INSTANT I COULD HARDLY BELIEVE THAT HERE WAS INDEED A DOOR WHICH LED AWAY FROM DEATH + THE NEXT INSTANT I THREW MYSELF THROUGH AND LAY HALF FAINTING UPON THE OTHER SIDE + THE PANEL HAD CLOSED AGAIN BEHIND ME BUT THE CRASH OF THE LAMP AND A FEW MOMENTS AFTERWARDS THE CLANG OF THE TWO SLABS OF METAL TOLD ME HOW NARROW HAD BEEN MY ESCAPE + QUOTE I WAS RECALLED TO MYSELF BY A FRANTIC PLUCKING AT MY WRIST AND I FOUND MYSELF LYING UPON THE STONE FLOOR OF A NARROW CORRIDOR WHILE A WOMAN BENT OVER ME AND TUGGED AT ME WITH HER LEFT HAND WHILE SHE HELD A CANDLE IN HER RIGHT + IT WAS THE SAME GOOD FRIEND WHOSE WARNING I HAD SO FOOLISHLY REJECTED + COME COME SHE CRIED BREATHLESSLY + THEY WILL BE HERE IN A MOMENT + THEY WILL SEE THAT YOU ARE NOT THERE + OH DO NOT WASTE THE SO PRECIOUS TIME BUT COME + THIS TIME AT LEAST I DID NOT SCORN HER ADVICE + I STAGGERED TO MY FEET AND RAN WITH HER ALONG THE CORRIDOR AND DOWN A WINDING STAIR + THE LATTER LED TO ANCTHER BROAD PASSAGE AND JUST AS WE REACHED IT WE HEARD THE SOUND OF RUNNING FEET AND THE SHOUTING OF TWO VOICES ONE ANSWERING THE OTHER FROM THE FLOOR ON WHICH WE WERE AND FROM THE ONE BENEATH + MY GUIDE STOPPED AND LOOKED ABOUT HER LIKE ONE WHO IS AT HER WIT'S END + THEN SHE THREW OPEN A DOOR WHICH LED INTO A BEDROOM THROUGH THE WINDOW OF WHICH THE MOON WAS SHINING BRIGHTLY + IT IS YOUR ONLY CHANCE SAID SHE + IT IS HIGH BUT IT MAY BE THAT YOU CAN JUMP IT + AS SHE SPOKE A LIGHT SPRANG INTO VIEW AT THE FURTHER END OF THE PASSAGE AND I SAW THE LEAN FIGURE OF COLONEL LYSANDER STARK RUSHING FORWARD WITH A LANTERN IN ONE HAND AND A WEAPON LIKE A BUTCHER'S CLEAVER IN THE OTHER + I RUSHED ACROSS THE BEDROOM FLUNG OPEN THE WINDOW AND LOOKED OUT + HOW QUIET AND SWEET AND WHOLESOME THE GARDEN LOOKED IN THE MOONLIGHT AND IT COULD NOT BE MORE THAN THIRTY FEET DOWN + I CLAMBERED OUT UPON THE SILL BUT I HESITATED TO JUMP UNTIL I SHOULD HAVE HEARD WHAT PASSED BETWEEN MY SAVIOUR AND THE RUFFIAN WHO PURSUED ME + IF SHE WERE ILL USED THEN AT ANY RISKS I WAS DETERMINED TO GO BACK TO HER ASSISTANCE + THE THOUGHT HAD HARDLY FLASHED THROUGH MY MIND BEFORE HE WAS AT THE DOOR PUSHING HIS WAY PAST HER BUT SHE THREW HER ARMS ROUND HIM AND TRIED TO HOLD HIM BACK + FRITZ + FRITZ SHE CRIED IN ENGLISH REMEMBER YOUR PROMISE AFTER THE LAST TIME + YOU SAID IT SHOULD NOT BE AGAIN + HE WILL BE SILENT + OH HE WILL BE SILENT + QUOTE YOU ARE MAD ELISE HE SHOUTED STRUGGLING TO BREAK AWAY FROM HER + YOU WILL BE THE RUIN OF US + HE HAS SEEN TOO MUCH + LET ME PASS I SAY + HE DASHED HER TO ONE SIDE AND RUSHING TO THE WINDOW CUT AT ME WITH HIS HEAVY WEAPON + I HAD LET MYSELF GO AND WAS HANGING BY THE HANDS TO THE SILL WHEN HIS BLOW FELL + I WAS CONSCIOUS OF A DULL PAIN MY GRIP LOOSENED AND I FELL INTO THE GARDEN BELOW + I WAS SHAKEN BUT NOT HURT BY THE FALL SO I PICKED MYSELF UP AND RUSHED OFF AMONG THE BUSHES AS HARD AS I COULD RUN FOR I UNDERSTOOD THAT I WAS FAR FROM BEING OUT OF DANGER YET + SUDDENLY HOWEVER AS I RAN A DEADLY DIZZINESS AND SICKNESS CAME OVER ME + I GLANCED DOWN AT MY HAND WHICH WAS THROBBING PAINFULLY AND THEN FOR THE FIRST TIME SAW THAT MY THUMB HAD BEEN CUT OFF AND THAT THE BLOOD WAS POURING FROM MY WOUND + I ENDEAVOURED TO TIE MY HANDKERCHIEF ROUND IT BUT THERE CAME A SUDDEN BUZZING IN MY EARS AND NEXT MOMENT I FELL IN A DEAD FAINT AMONG THE ROSE BUSHES + HOW LONG I REMAINED UNCONSCIOUS I CANNOT TELL + IT MUST HAVE BEEN A VERY LONG TIME FOR THE MOON HAD SUNK AND A BRIGHT MORNING WAS BREAKING WHEN I CAME TO MYSELF + MY CLOTHES WERE ALL SODDEN WITH DEW AND MY COAT SLEEVE WAS DRENCHED WITH BLOOD FROM MY WOUNDED THUMB + THE SMARTING OF IT RECALLED IN AN INSTANT ALL THE PARTICULARS OF MY NIGHT'S ADVENTURE AND I SPRANG TO MY FEET WITH THE FEELING THAT I MIGHT HARDLY YET BE SAFE FROM MY PURSUERS + BUT TO MY ASTONISHMENT WHEN I CAME TO LOOK ROUND ME NEITHER HOUSE NOR GARDEN WERE TO BE SEEN + I HAD BEEN IYING IN AN ANGLE OF THE HEDGE CLOSE BY THE HIGHROAD AND JUST A LITTLE LOWER DOWN WAS A LONG BUILDING WHICH PROVED UPON MY APPROACHING IT TO BE THE VERY STATION AT WHICH I HAD ARRIVED UPON THE PREVIOUS NIGHT + WERE IT NOT FOR THE UGLY WOUND UPON MY HAND ALL THAT HAD PASSED DURING THOSE DREADFUL HOURS MIGHT HAVE BEEN AN EVIL DREAM + HALF DAZED I WENT INTO THE STATION AND ASKED ABOUT THE MORNING TRAIN + THERE WOULD BE ONE TO READING IN LESS THAN AN HOUR + THE SAME PORTER WAS ON DUTY I FOUND AS HAD BEEN THERE WHEN I ARRIVED + I INQUIRED OF HIM WHETHER HE HAD EVER HEARD OF COLONEL LYSANDER STARK + THE NAME WAS STRANGE TO HIM + HAD HE OBSERVED A CARRIAGE THE NIGHT BEFORE WAITING FOR ME + NO HE HAD NOT + WAS THERE A POLICE STATION ANYWHERE NEAR + THERE WAS ONE ABOUT THREE MILES OFF + IT WAS TOO FAR FOR ME TO GO WEAK AND ILL AS I WAS + I DETERMINED TO WAIT UNTIL I GOT BACK TO TOWN BEFORE TELLING MY STORY TO THE POLICE + IT WAS A LITTLE PAST SIX WHEN I ARRIVED SO I WENT FIRST TO HAVE MY WOUND DRESSED AND THEN THE DOCTOR WAS KIND ENOUGH TO BRING ME ALONG HERE + I PUT THE CASE INTO YOUR HANDS AND SHALL DO EXACTLY WHAT YOU ADVISE + WE BOTH SAT IN SILENCE FOR SOME LITTLE TIME AFTER LISTENING TO THIS EXTRAORDINARY NARRATIVE + THEN SHERLOCK HOLMES PULLED DOWN FROM THE SHELF ONE OF THE PONDEROUS COMMONPLACE BOOKS IN WHICH HE PLACED HIS CUTTINGS + QUOTE HERE IS AN ADVERTISEMENT WHICH WILL INTEREST YOU QUOTE SAID HE + IT APPEARED IN ALL THE PAPERS ABOUT A YEAR AGO + LISTEN TO THIS LOST ON THE NINTH INST. MR. JEREMIAH HAYLING AGED + TWENTY SIX A HYDRAULIC ENGINEER + LEFT HIS LODGINGS AT TEN + O'CLOCK AT NIGHT AND HAS NOT BEEN HEARD OF SINCE + WAS + DRESSED IN ET CETERA ET CETERA + HA + THAT REPRESENTS THE LAST TIME THAT THE COLONEL NEEDED TO HAVE HIS MACHINE OVERHAULED I FANCY + GOOD HEAVENS CRIED MY PATIENT + THEN THAT EXPLAINS WHAT THE GIRL SAID + QUOTE UNDOUBTEDLY + IT IS QUITE CLEAR THAT THE COLONEL WAS A COOL AND DESPERATE MAN WHO WAS ABSOLUTELY DETERMINED THAT NOTHING SHOULD STAND IN THE WAY OF HIS LITTLE GAME LIKE THOSE OUT AND OUT PIRATES WHO WILL LEAVE NO SURVIVOR FROM A CAPTURED SHIP + WELL EVERY MOMENT NOW IS PRECIOUS SO IF YOU FEEL EQUAL TO IT WE SHALL GO DOWN TO SCOTLAND YARD AT ONCE AS A PRELIMINARY TO STARTING FOR EYFORD + SOME THREE HOURS OR SO AFTERWARDS WE WERE ALL IN THE TRAIN TOGETHER BOUND FROM READING TO THE LITTLE BERKSHIRE VILLAGE + THERE WERE SHERLOCK HOLMES THE HYDRAULIC ENGINEER INSPECTOR BRADSTREET OF SCOTLAND YARD A PLAIN CLOTHES MAN AND MYSELF + BRADSTREET HAD SPREAD AN ORDNANCE MAP OF THE COUNTY OUT UPON THE SEAT AND WAS BUSY WITH HIS COMPASSES DRAWING A CIRCLE WITH EYFORD FOR ITS CENTRE + THERE YOU ARE SAID HE + THAT CIRCLE IS DRAWN AT A RADIUS OF TEN MILES FROM THE VILLAGE + THE PLACE WE WANT MUST BE SOMEWHERE NEAR THAT LINE + YOU SAID TEN MILES I THINK SIR + IT WAS AN HOUR'S GOOD DRIVE + QUOTE AND YOU THINK THAT THEY BROUGHT YOU BACK ALL THAT WAY WHEN YOU WERE UNCONSCIOUS QUOTE + THEY MUST HAVE DONE SO.L HAVE A CONFUSED MEMORY TOO OF HAVING BEEN LIFTED AND CONVEYED SOMEWHERE + WHAT I CANNOT UNDERSTAND SAID I IS WHY THEY SHOULD HAVE SPARED YOU WHEN THEY FOUND YOU LYING FAINTING IN THE GARDEN + PERHAPS THE VILLAIN WAS SOFTENED BY THE WOMAN'S ENTREATIES + I HARDLY THINK THAT LIKELY + I NEVER SAW A MORE INEXORABLE FACE IN MY LIFE + QUOTE OH WE SHALL SOON CLEAR UP ALL THAT QUOTE SAID BRADSTREET + WELL I HAVE DRAWN MY CIRCLE AND I ONLY WISH I KNEW AT WHAT POINT UPON IT THE FOLK THAT WE ARE IN SEARCH OF ARE TO BE FOUND + I THINK I COULD LAY MY FINGER ON IT SAID HOLMES QUIETLY + REALLY NOW CRIED THE INSPECTOR YOU HAVE FORMED YOUR OPINION + COME NOW WE SHALL SEE WHO AGREES WITH YOU + I SAY IT IS SOUTH FOR THE COUNTRY IS MORE DESERTED THERE + AND I SAY EAST SAID MY PATIENT + QUOTE I AM FOR WEST QUOTE REMARKED THE PLAIN CLOTHES MAN + THERE ARE SEVERAL QUIET LITTLE VILLAGES UP THERE + AND I AM FOR NORTH SAID I BECAUSE THERE ARE NO HILLS THERE AND OUR FRIEND SAYS THAT HE DID NOT NOTICE THE CARRIAGE GO UP ANY + COME CRIED THE INSPECTOR LAUGHING IT'S A VERY PRETTY DIVERSITY OF OPINION + WE HAVE BOXED THE COMPASS AMONG US + WHO DO YOU GIVE YOUR CASTING VOTE TO + YOU ARE ALL WRONG + QUOTE BUT WE CAN'T ALL BE QUOTE + OH YES YOU CAN + THIS IS MY POINT + HE PLACED HIS FINGER IN THE CENTRE OF THE CIRCLE + THIS IS WHERE WE SHALL FIND THEM + BUT THE TWELVE MILE DRIVE GASPED HATHERLEY + SIX OUT AND SIX BACK + NOTHING SIMPLER + YOU SAY YOURSELF THAT THE HORSE WAS FRESH AND GLOSSY WHEN YOU GOT IN + HOW COULD IT BE THAT IF IT HAD GONE TWELVE MILES OVER HEAVY ROADS QUOTE + INDEED IT IS A LIKELY RUSE ENOUGH OBSERVED BRADSTREET THOUGHTFULLY + OF COURSE THERE CAN BE NO DOUBT AS TO THE NATURE OF THIS GANG + NONE AT ALL SAID HOLMES + THEY ARE COINERS ON A LARGE SCALE AND HAVE USED THE MACHINE TO FORM THE AMALGAM WHICH HAS TAKEN THE PLACE OF SILVER + WE HAVE KNOWN FOR SOME TIME THAT A CLEVER GANG WAS AT WORK SAID THE INSPECTOR + QUOTE THEY HAVE BEEN TURNING OUT HALFCROWNS BY THE THOUSAND + WE EVEN TRACED THEM AS FAR AS READING BUT COULD GET NO FARTHER FOR THEY HAD COVERED THEIR TRACES IN A WAY THAT SHOWED THAT THEY WERE VERY OLD HANDS + BUT NOW THANKS TO THIS LUCKY CHANCE I THINK THAT WE HAVE GOT THEM RIGHT ENOUGH + BUT THE INSPECTOR WAS MISTAKEN FOR THOSE CRIMINALS WERE NOT DESTINED TO FALL INTO THE HANDS OF JUSTICE + AS WE ROLLED INTO EYFORD STATION WE SAW A GIGANTIC COLUMN OF SMOKE WHICH STREAMED UP FROM BEHIND A SMALL CLUMP OF TREES IN THE NEIGHBOURHOOD AND HUNG LIKE AN IMMENSE OSTRICH FEATHER OVER THE LANDSCAPE + A HOUSE ON FIRE ASKED BRADSTREET AS THE TRAIN STEAMED OFF AGAIN ON ITS WAY + YES SIR SAID THE STATION MASTER + WHEN DID IT BREAK OUT + I HEAR THAT IT WAS DURING THE NIGHT SIR BUT IT HAS GOT WORSE AND THE WHOLE PLACE IS IN A BLAZE + QUOTE WHOSE HOUSE IS IT QUOTE + DOCTOR BECHER'S + TELL ME BROKE IN THE ENGINEER IS DOCTOR BECHER A GERMAN VERY THIN WITH A LONG SHARP NOSE + THE STATION MASTER LAUGHED HEARTILY + NO SIR DOCTOR BECHER IS AN ENGLISHMAN AND THERE ISN'T A MAN IN THE PARISH WHO HAS A BENER LINED WAISTCOAT + BUT HE HAS A GENTLEMAN STAYING WITH HIM A PATIENT AS I UNDERSTAND WHO IS A FOREIGNER AND HE LOOKS AS IF A LITTLE GOOD BERKSHIRE BEEF WOULD DO HIM NO HARM + THE STATION MASTER HAD NOT FINISHED HIS SPEECH BEFORE WE WERE ALL HASTENING IN THE DIRECTION OF THE FIRE + THE ROAD TOPPED A LOW HILL AND THERE WAS A GREAT WIDESPREAD WHITEWASHED BUILDING IN FRONT OF US SPOUTING FIRE AT EVERY CHINK AND WINDOW WHILE IN THE GARDEN IN FRONT THREE FIRE ENGINES WERE VAINLY STRIVING TO KEEP THE FLAMES UNDER + THAT'S IT CRIED HATHERLEY IN INTENSE EXCITEMENT + QUOTE THERE IS THE GRAVEL DRIVE AND THERE ARE THE ROSE BUSHES WHERE I LAY + THAT SECOND WINDOW IS THE ONE THAT I JUMPED FROM + WELL AT LEAST SAID HOLMES YOU HAVE HAD YOUR REVENGE UPON THEM + THERE CAN BE NO QUESTION THAT IT WAS YOUR OIL LAMP WHICH WHEN IT WAS CRUSHED IN THE PRESS SET FIRE TO THE WOODEN WALLS THOUGH NO DOUBT THEY WERE TOO EXCITED IN THE CHASE AFTER YOU TO OBSERVE IT AT THE TIME + NOW KEEP YOUR EYES OPEN IN THIS CROWD FOR YOUR FRIENDS OF LAST NIGHT THOUGH I VERY MUCH FEAR THAT THEY ARE A GOOD HUNDRED MILES OFF BY NOW + AND HOLMES'S FEARS CAME TO BE REALIZED FOR FROM THAT DAY TO THIS NO WORD HAS EVER BEEN HEARD EITHER OF THE BEAUTIFUL WOMAN THE SINISTER GERMAN OR THE MOROSE ENGLISHMAN + EARLY THAT MORNING A PEASANT HAD MET A CART CONTAINING SEVERAL PEOPLE AND SOME VERY BULKY BOXES DRIVING RAPIDLY IN THE DIRECTION OF READING BUT THERE ALL TRACES OF THE FUGITIVES DISAPPEARED AND EVEN HOLMES'S INGENUITY FAILED EVER TO DISCOVER THE LEAST CLUE AS TO THEIR WHEREABOUTS + THE FIREMEN HAD BEEN MUCH PERTURBED AT THE STRANGE ARRANGEMENTS WHICH THEY HAD FOUND WITHIN AND STILL MORE SO BY DISCOVERING A NEWLY SEVERED HUMAN THUMB UPON A WINDOW SILL OF THE SECOND FLOOR + ABOUT SUNSET HOWEVER THEIR EFFORTS WERE AT LAST SUCCESSFUL AND THEY SUBDUED THE FLAMES BUT NOT BEFORE THE ROOF HAD FALLEN IN AND THE WHOLE PLACE BEEN REDUCED TO SUCH ABSOLUTE RUIN THAT SAVE SOME TWISTED CYLINDERS AND IRON PIPING NOT A TRACE REMAINED OF THE MACHINERY WHICH HAD COST OUR UNFORTUNATE ACQUAINTANCE SO DEARLY + LARGE MASSES OF NICKEL AND OF TIN WERE DISCOVERED STORED IN AN OUT HOUSE BUT NO COINS WERE TO BE FOUND WHICH MAY HAVE EXPLAINED THE PRESENCE OF THOSE BULKY BOXES WHICH HAVE BEEN ALREADY REFERRED TO + HOW OUR HYDRAULIC ENGINEER HAD BEEN CONVEYED FROM THE GARDEN TO THE SPOT WHERE HE RECOVERED HIS SENSES MIGHT HAVE REMAINED FOREVER A MYSTERY WERE IT NOT FOR THE SOFT MOULD WHICH TOLD US A VERY PLAIN TALE + HE HAD EVIDENTLY BEEN CARRIED DOWN BY TWO PERSONS ONE OF WHOM HAD REMARKABLY SMALL FEET AND THE OTHER UNUSUALLY LARGE ONES + ON THE WHOLE IT WAS MOST PROBABLE THAT THE SILENT ENGLISHMAN BEING LESS BOLD OR LESS MURDEROUS THAN HIS COMPANION HAD ASSISTED THE WOMAN TO BEAR THE UNCONSCIOUS MAN OUT OF THE WAY OF DANGER + WELL SAID OUR ENGINEER RUEFULLY AS WE TOOK OUR SEATS TO RETURN ONCE MORE TO LONDON IT HAS BEEN A PRETTY BUSINESS FOR ME + I HAVE LOST MY THUMB AND I HAVE LOST A FIFTY GUINEA FEE AND WHAT HAVE I GAINED + QUOTE EXPERIENCE QUOTE SAID HOLMES LAUGHING + INDIRECTLY IT MAY BE OF VALUE YOU KNOW YOU HAVE ONLY TO PUT IT INTO WORDS TO GAIN THE REPUTATION OF BEING EXCELLENT COMPANY FOR THE REMAINDER OF YOUR EXLSTENCE diff --git a/samples/LMTutorial/train/final_problem.txt b/samples/LMTutorial/train/final_problem.txt new file mode 100755 index 0000000..a6d4403 --- /dev/null +++ b/samples/LMTutorial/train/final_problem.txt @@ -0,0 +1,412 @@ + IT IS WITH A HEAVY HEART THAT I TAKE UP MY PEN TO WRITE THESE THE LAST WORDS IN WHICH I SHALL EVER RECORD THE SINGULAR GIFTS BY WHICH MY FRIEND MR. SHERLOCK HOLMES WAS DISTINGUISHED + IN AN INCOHERENT AND. AS I DEEPLY FEEL AN ENTIRELY INADEQUATE FASHION I HAVE ENDEAVOURED TO GIVE SOME ACCOUNT OF MY STRANGE EXPERIENCES IN HIS COMPANY FROM THE CHANCE WHICH FIRST BROUGHT US TOGETHER AT THE PERIOD OF THE QUOTE STUDY IN SCARLET QUOTE UP TO THE TIME OF HIS INTERFERENCE IN THE MATTER OF THE QUOTE NAVAL TREATY QUOTE AN INTERFERENCE WHICH HAD THE UNQUESTIONABLE EFFECT OF PREVENTING A SERIOUS INTERNATIONAL COMPLICATION + IT WAS MY INTENTION TO HAVE STOPPED THERE AND TO HAVE SAID NOTHING OF THAT EVENT WHICH HAS CREATED A VOID IN MY LIFE WHICH THE LAPSE OF TWO YEARS HAS DONE LITTLE TO FILL + MY HAND HAS BEEN FORCED HOWEVER BY THE RECENT LETTERS IN WHICH COLONEL JAMES MORIARTY DEFENDS THE MEMORY OF HIS BROTHER AND I HAVE NO CHOICE BUT TO LAY THE FACTS BEFORE THE PUBLIC EXACTLY AS THEY OCCURRED + I ALONE KNOW THE ABSOLUTE TRUTH OF THE MATTER AND I AM SATISFIED THAT THE TIME HAS COME WHEN NO GOOD PURPOSE IS TO BE SERVED BY ITS SUPPRESSION + AS FAR AS I KNOW THERE HAVE BEEN ONLY THREE ACCOUNTS IN THE PUBLIC PRESS THAT IN THE JOURNAL DE GENEVE ON MAY SIXTH ONE THOUSAND EIGHT HUNDRED NINETY ONE THE REUTER'S DISPATCH IN THE ENGLISH PAPERS ON MAY SEVENTH AND FINALLY THE RECENT LETTERS TO WHICH I HAVE ALLUDED + OF THESE THE FIRST AND SECOND WERE EXTREMELY CONDENSED WHILE THE LAST IS AS I SHALL NOW SHOW AN ABSOLUTE PERVERSION OF THE FACTS + IT LIES WITH ME TO TELL FOR THE FIRST TIME WHAT REALLY TOOK PLACE BETWEEN PROFESSOR MORIARTY AND MR. SHERLOCK HOLMES + IT MAY BE REMEMBERED THAT AFTER MY MARRIAGE AND MY SUBSEQUENT START IN PRIVATE PRACTICE THE VERY INTIMATE RELATIONS WHICH HAD EXISTED BETWEEN HOLMES AND MYSELF BECAME TO SOME EXTENT MODIFIED + HE STILL CAME TO ME FROM TIME TO TIME WHEN HE DESIRED A COMPANION IN HIS INVESTIGATIONS BUT THESE OCCASIONS GREW MORE AND MORE SELDOM UNTIL I FIND THAT IN THE YEAR ONE THOUSAND EIGHT HUNDRED NINETY THERE WERE ONLY THREE CASES OF WHICH I RETAIN ANY RECORD + DURING THE WINTER OF THAT YEAR AND THE EARLY SPRING OF ONE THOUSAND EIGHT HUNDRED NINETY ONE I SAW IN THE PAPERS THAT HE HAD BEEN ENGAGED BY THE FRENCH GOVERNMENT UPON A MATTER OF SUPREME IMPORTANCE AND I RECEIVED TWO NOTES FROM HOLMES DATED FROM NARBONNE AND FROM NIMES FROM WHICH I GATHERED THAT HIS STAY IN FRANCE WAS LIKELY TO BE A LONG ONE + IT WAS WITH SOME SURPRISE THEREFORE THAT I SAW HIM WALK INTO MY CONSULTINGROOM UPON THE EVENING OF APRIL TWENTY FOURTH + IT STRUCK ME THAT HE WAS LOOKING EVEN PALER AND THINNER THAN USUAL + YES I HAVE BEEN USING MYSELF UP RATHER TOO FREELY HE REMARKED IN ANSWER TO MY LOOK RATHER THAN TO MY WORDS I HAVE BEEN A LITTLE PRESSED OF LATE + HAVE YOU ANY OBJECTION TO MY CLOSING YOUR SHUTTERS + THE ONLY LIGHT IN THE ROOM CAME FROM THE LAMP UPON THE TABLE AT WHICH I HAD BEEN READING + HOLMES EDGED HIS WAY ROUND THE WALL AND FLINGING THE SHUTTERS TOGETHER HE BOLTED THEM SECURELY + YOU ARE AFRAID OF SOMETHING + I ASKED + WELL I AM + OF WHAT + QUOTE OF AIR GUNS QUOTE + MY DEAR HOLMES WHAT DO YOU MEAN + I THINK THAT YOU KNOW ME WELL ENOUGH + WATSON TO UNDERSTAND THAT I AM BY NO MEANS A NERVOUS MAN + AT THE SAME TIME IT IS STUPIDITY RATHER THAN COURAGE TO REFUSE TO RECOGNIZE DANGER WHEN IT IS CLOSE UPON YOU + MIGHT I TROUBLE YOU FOR A MATCH + HE DREW IN THE SMOKE OF HIS CIGARETTE AS IF THE SOOTHING INFLUENCE WAS GRATEFUL TO HIM + I MUST APOLOGIZE FOR CALLING SO LATE SAID HE AND I MUST FURTHER BEG YOU TO BE SO UNCONVENTIONAL AS TO ALLOW ME TO LEAVE YOUR HOUSE PRESENTLY BY SCRAMBLING OVER YOUR BACK GARDEN WALL + BUT WHAT DOES IT ALL MEAN + I ASKED + HE HELD OUT HIS HAND AND I SAW IN THE LIGHT OF THE LAMP THAT TWO OF HIS KNUCKLES WERE BURST AND BLEEDING + QUOTE IT'S NOT AN AIRY NOTHING YOU SEE QUOTE SAID HE. SMILING + ON THE CONTRARY IT IS SOLID ENOUGH FOR A MAN TO BREAK HIS HAND OVER + IS MRS. WATSON IN + SHE IS AWAY UPON A VISIT + INDEED + YOU ARE ALONE + QUOTE QUITE QUOTE + THEN IT MAKES IT THE EASIER FOR ME TO PROPOSE THAT YOU SHOULD COME AWAY WITH ME FOR A WEEK TO THE CONTINENT + WHERE + OH ANYWHERE + IT'S ALL THE SAME TO ME + THERE WAS SOMETHING VERY STRANGE IN ALL THIS + IT WAS NOT HOLMES'S NATURE TO TAKE AN AIMLESS HOLIDAY AND SOMETHING ABOUT HIS PALE WORN FACE TOLD ME THAT HIS NERVES WERE AT THEIR HIGHEST TENSION + HE SAW THE QUESTION IN MY EYES AND PUTTING HIS FINGER TIPS TOGETHER AND HIS ELBOWS UPON HIS KNEES HE EXPLAINED THE SITUATION + YOU HAVE PROBABLY NEVER HEARD OF PROFESSOR MORIARTY SAID HE + QUOTE NEVER QUOTE + AY THERE'S THE GENIUS AND THE WONDER OF THE THING HE CRIED + THE MAN PERVADES LONDON AND NO ONE HAS HEARD OF HIM + THAT'S WHAT PUTS HIM ON A PINNACLE IN THE RECORDS OF CRIME + I TELL YOU WATSON IN ALL SERIOUSNESS THAT IF I COULD BEAT THAT MAN IF I COULD FREE SOCIETY OF HIM I SHOULD FEEL THAT MY OWN CAREER HAD REACHED ITS SUMMIT AND I SHOULD BE PREPARED TO TURN TO SOME MORE PLACID LINE IN LIFE + BETWEEN OURSELVES THE RECENT CASES IN WHICH I HAVE BEEN OF ASSISTANCE TO THE ROYAL FAMILY OF SCANDINAVIA AND TO THE FRENCH REPUBLIC HAVE LEFT ME IN SUCH A POSITION THAT I COULD CONTINUE TO LIVE IN THE QUIET FASHION WHICH IS MOST CONGENIAL TO ME AND TO CONCENTRATE MY ATTENTION UPON MY CHEMICAL RESEARCHES + BUT I COULD NOT REST + WATSON I COULD NOT SIT QUIET IN MY CHAIR IF I THOUGHT THAT SUCH A MAN AS PROFESSOR MORIARTY WERE WALKING THE STREETS OF LONDON UNCHALLENGED + WHAT HAS HE DONE THEN + HIS CAREER HAS BEEN AN EXTRAORDINARY ONE + HE IS A MAN OF GOOD BIRTH AND EXCELLENT EDUCATION ENDOWED BY NATURE WITH A PHENOMENAL MATHEMATICAL FACULTY + AT THE AGE OF TWENTY ONE HE WROTE A TREATISE UPON THE BINOMIAL THEOREM WHICH HAS HAD A EUROPEAN VOGUE + ON THE STRENGTH OF IT HE WON THE MATHEMATICAL CHAIR AT ONE OF OUR SMALLER UNIVERSITIES AND HAD TO ALL APPEARANCES A MOST BRILLIANT CAREER BEFORE HIM + BUT THE MAN HAD HEREDITARY TENDENCIES OF THE MOST DIABOLICAL KIND + A CRIMINAL STRAIN RAN IN HIS BLOOD WHICH INSTEAD OF BEING MODIFIED WAS INCREASED AND RENDERED INFINITELY MORE DANGEROUS BY HIS EXTRAORDINARY MENTAL POWERS + DARK RUMOURS GATHERED ROUND HIM IN THE UNIVERSITY TOWN AND EVENTUALLY HE WAS COMPELLED TO RESIGN HIS CHAIR AND TO COME DOWN TO LONDON WHERE HE SET UP AS AN ARMY COACH + SO MUCH IS KNOWN TO THE WORLD BUT WHAT I AM TELLING YOU NOW IS WHAT I HAVE MYSELF DISCOVERED + QUOTE AS YOU ARE AWARE WATSON THERE IS NO ONE WHO KNOWS THE HIGHER CRIMINAL WORLD OF LONDON SO WELL AS I DO + FOR YEARS PAST I HAVE CONTINUALLY BEEN CONSCIOUS OF SOME POWER BEHIND THE MALEFACTOR SOME DEEP ORGANIZING POWER WHICH FOREVER STANDS IN THE WAY OF THE LAW AND THROWS ITS SHIELD OVER THE WRONG DOER + AGAIN AND AGAIN IN CASES OF THE MOST VARYING SORTS FORGERY CASES ROBBERIES MURDERS I HAVE FELT THE PRESENCE OF THIS FORCE AND I HAVE DEDUCED ITS ACTION IN MANY OF THOSE UNDISCOVERED CRIMES IN WHICH I HAVE NOT BEEN PERSONALLY CONSULTED + FOR YEARS I HAVE ENDEAVOURED TO BREAK THROUGH THE VEIL WHICH SHROUDED IT AND AT LAST THE TIME CAME WHEN L. SEIZED MY THREAD AND FOLLOWED IT UNTIL IT LED ME. AFTER A THOUSAND CUNNING WINDINGS TO EX PROFESSOR MORIARTY OF MATHEMATICAL CELEBRITY + HE IS THE NAPOLEON OF CRIME WATSON + HE IS THE ORGANIZER OF HALF THAT IS EVIL AND OF NEARLY ALL THAT IS UNDETECTED IN THIS GREAT CITY + HE IS A GENIUS A PHILOSOPHER AN ABSTRACT THINKER + HE HAS A BRAIN OF THE FIRST ORDER + HE SITS MOTIONLESS LIKE A SPIDER IN THE CENTRE OF ITS WEB BUT THAT WEB HAS A THOUSAND RADIATIONS AND HE KNOWS WELL EVERY QUIVER OF EACH OF THEM + HE DOES LITTLE HIMSELF + HE ONLY PLANS + BUT HIS AGENTS ARE NUMEROUS AND SPLENDIDLY ORGANIZED + IS THERE A CRIME TO BE DONE A PAPER TO BE ABSTRACTED WE WILL SAY A HOUSE TO BE RIFLED A MAN TO BE REMOVED THE WORD IS PASSED TO THE PROFESSOR THE MATTER IS ORGANIZED AND CARRIED OUT + THE AGENT MAY BE CAUGHT + IN THAT CASE MONEY IS FOUND FOR HIS BAIL OR HIS DETENCE + BUT THE CENTRAL POWER WHICH USES THE AGENT IS NEVER CAUGHT NEVER SO MUCH AS SUSPECTED + THIS WAS THE ORGANIZATION WHICH I DEDUCED WATSON AND WHICH I DEVOTED MY WHOLE ENERGY TO EXPOSING AND BREAKING UP + BUT THE PROFESSOR WAS FENCED ROUND WITH SAFEGUARDS SO CUNNINGLY DEVISED THAT DO WHAT I WOULD IT SEEMED IMPOSSIBLE TO GET EVIDENCE WHICH WOULD CONVICT IN A COURT OF LAW + YOU KNOW MY POWERS MY DEAR WATSON AND YET AT THE END OF THREE MONTHS I WAS FORCED TO CONFESS THAT I HAD AT LAST MET AN ANTAGONIST WHO WAS MY INTELLECTUAL EQUAL + MY HORROR AT HIS CRIMES WAS LOST IN MY ADMIRATION AT HIS SKILL + BUT AT LAST HE MADE A TRIP ONLY A LITTLE LITTLE TRIP BUT IT WAS MORE THAN HE COULD AFFORD WHEN I WAS SO CLOSE UPON HIM + I HAD MY CHANCE AND STARTING FROM THAT POINT I HAVE WOVEN MY NET ROUND HIM UNTIL NOW IT IS ALL READY TO CLOSE + IN THREE DAYS THAT IS TO SAY ON MONDAY NEXT MATTERS WILL BE RIPE AND THE PROFESSOR WITH ALL THE PRINCIPAL MEMBERS OF HIS GANG WILL BE IN THE HANDS OF THE POLICE + THEN WILL COME THE GREATEST CRIMINAL TRIAL OF THE CENTURY THE CLEARING UP OF OVER FORTY MYSTERIES AND THE ROPE FOR ALL OF THEM BUT IF WE MOVE AT ALL PREMATURELY YOU UNDERSTAND THEY MAY SLIP OUT OF OUR HANDS EVEN AT THE LAST MOMENT + NOW IF I COULD HAVE DONE THIS WITHOUT THE KNOWLEDGE OF PROFESSOR MORIARTY ALL WOULD HAVE BEEN WELL + BUT HE WAS TOO WILY FOR THAT + HE SAW EVERY STEP WHICH I TOOK TO DRAW MY TOILS ROUND HIM + AGAIN AND AGAIN HE STROVE TO BREAK AWAY BUT I AS OFTEN HEADED HIM OFF + I TELL YOU MY FRIEND THAT IF A DETAILED ACCOUNT OF THAT SILENT CONTEST COULD BE WRITTEN IT WOULD TAKE ITS PLACE AS THE MOST BRILLIANT BIT OF THRUST AND PARRY WORK IN THE HISTORY OF DETECTION + NEVER HAVE I RISEN TO SUCH A HEIGHT AND NEVER HAVE I BEEN SO HARD PRESSED BY AN OPPONENT + HE CUT DEEP AND YET I JUST UNDERCUT HIM + THIS MORNING THE LAST STEPS WERE TAKEN AND THREE DAYS ONLY WERE WANTED TO COMPLETE THE BUSINESS + I WAS SITTING IN MY ROOM THINKING THE MATTER OVER WHEN THE DOOR OPENED AND PROFESSOR MORIARTY STOOD BEFORE ME + MY NERVES ARE FAIRLY PROOF WATSON BUT I MUST CONFESS TO A START WHEN I SAW THE VERY MAN WHO HAD BEEN SO MUCH IN MY THOUGHTS STANDING THERE ON MY THRESHOLD + HIS APPEARANCE WAS QUITE FAMILIAR TO ME + HE IS EXTREMELY TALL AND THIN HIS FOREHEAD DOMES OUT IN A WHITE CURVE AND HIS TWO EYES ARE DEEPLY SUNKEN IN HIS HEAD + HE IS CLEAN SHAVEN PALE AND ASCETIC LOOKING RETAINING SOMETHING OF THE PROFESSOR IN HIS FEATURES + HIS SHOULDERS ARE ROUNDED FROM MUCH STUDY AND HIS FACE PROTRUDES FORWARD AND IS FOREVER SLOWLY OSCILLATING FROM SIDE TO SIDE IN A CURIOUSLY REPTILIAN FASHION + HE PEERED AT ME WITH GREAT CURIOSITY IN HIS PUCKERED EYES + YOU HAVE LESS FRONTAL DEVELOPMENT THAN I SHOULD HAVE EXPECTED SAID HE AT LAST + IT IS A DANGEROUS HABIT TO FINGER LOADED FIREARMS IN THE POCKET OF ONE'S DRESSING GOWN + QUOTE THE FACT IS THAT UPON HIS ENTRANCE I HAD INSTANTLY RECOGNIZED THE EXTREME PERSONAL DANGER IN WHICH I LAY + THE ONLY CONCEIVABLE ESCAPE FOR HIM LAY IN SILENCING MY TONGUE + IN AN INSTANT I HAD SLIPPED THE REVOLVER FROM THE DRAWER INTO MY POCKET AND WAS COVERING HIM THROUGH THE CLOTH + AT HIS REMARK I DREW THE WEAPON OUT AND LAID IT COCKED UPON THE TABLE + HE STILL SMILED AND BLINKED BUT THERE WAS SOMETHING ABOUT HIS EYES WHICH MADE ME FEEL VERY GLAD THAT I HAD IT THERE + YOU EVIDENTLY DON'T KNOW ME SAID HE + ON THE CONTRARY I ANSWERED I THINK IT IS FAIRLY EVIDENT THAT I DO + PRAY TAKE A CHAIR + I CAN SPARE YOU FIVE MINUTES IF YOU HAVE ANYTHING TO SAY + ALL THAT I HAVE TO SAY HAS ALREADY CROSSED YOUR MIND SAID HE + THEN POSSIBLY MY ANSWER HAS CROSSED YOURS I REPLIED + YOU STAND FAST + QUOTE ABSOLUTELY + HE CLAPPED HIS HAND INTO HIS POCKET AND I RAISED THE PISTOL FROM THE TABLE + BUT HE MERELY DREW OUT A MEMORANDUM BOOK IN WHICH HE HAD SCRIBBLED SOME DATES + YOU CROSSED MY PATH ON THE FOURTH OF JANUARY SAID HE + ON THE TWENTY THIRD YOU INCOMMODED ME BY THE MIDDLE OF FEBRUARY I WAS SERIOUSLY INCONVENIENCED BY YOU AT THE END OF MARCH I WAS ABSOLUTELY HAMPERED IN MY PLANS AND NOW AT THE CLOSE OF APRIL I FIND MYSELF PLACED IN SUCH A POSITION THROUGH YOUR CONTINUAL PERSECUTION THAT I AM IN POSITIVE DANGER OF LOSING MY LIBERTY + THE SITUATION IS BECOMING AN IMPOSSIBLE ONE + HAVE YOU ANY SUGGESTION TO MAKE + I ASKED + YOU MUST DROP IT MR. HOLMES SAID HE SWAYING HIS FACE ABOUT + YOU REALLY MUST YOU KNOW + AFTER MONDAY SAID I + QUOTE TUT TUT SAID HE + I AM QUITE SURE THAT A MAN OF YOUR INTELLIGENCE WILL SEE THAT THERE CAN BE BUT ONE OUTCOME TO THIS AFFAIR + IT IS NECESSARY THAT YOU SHOULD WITHDRAW + YOU HAVE WORKED THINGS IN SUCH A FASHION THAT WE HAVE ONLY ONE RESOURCE LEFT + IT HAS BEEN AN INTELLECTUAL TREAT TO ME TO SEE THE WAY IN WHICH YOU HAVE GRAPPLED WITH THIS AFFAIR AND I SAY UNAFFECTEDLY THAT IT WOULD BE A GRIEF TO ME TO BE FORCED TO TAKE ANY EXTREME MEASURE + YOU SMILE SIR BUT I ASSURE YOU THAT IT REALLY WOULD + DANGER IS PART OF MY TRADE I REMARKED + THIS IS NOT DANGER SAID HE + IT IS INEVITABLE DESTRUCTION + YOU STAND IN THE WAY NOT MERELY OF AN INDIVIDUAL BUT OF A MIGHTY ORGANIZATION THE FULL EXTENT OF WHICH YOU WITH ALL YOUR CLEVERNESS HAVE BEEN UNABLE TO REALIZE + YOU MUST STAND CLEAR MR. HOLMES OR BE TRODDEN UNDER FOOT + I AM AFRAID SAID I RISING THAT IN THE PLEASURE OF THIS CONVERSATION I AM NEGLECTING BUSINESS OF IMPORTANCE WHICH AWAITS ME ELSEWHERE + HE ROSE ALSO AND LOOKED AT ME IN SILENCE SHAKING HIS HEAD SADLY + WELL WELL SAID HE AT LAST + IT SEEMS A PITY BUT I HAVE DONE WHAT I COULD + I KNOW EVERY MOVE OF YOUR GAME + YOU CAN DO NOTHING BEFORE MONDAY + IT HAS BEEN A DUEL BETWEEN YOU AND ME MR. HOLMES + YOU HOPE TO PLACE ME IN THE DOCK + I TELL YOU THAT I WILL NEVER STAND IN THE DOCK + YOU HOPE TO BEAT ME + I TELL YOU THAT YOU WILL NEVER BEAT ME + IF YOU ARE CLEVER ENOUGH TO BRING DESTRUCTION UPON ME REST ASSURED THAT I SHALL DO AS MUCH TO YOU + QUOTE YOU HAVE PAID ME SEVERAL COMPLIMENTS MR. MORIARTY SAID I. LET ME PAY YOU ONE IN RETURN WHEN I SAY THAT IF I WERE ASSURED OF THE FORMER EVENTUALITY I WOULD IN THE INTERESTS OF THE PUBLIC CHEERFULLY ACCEPT THE LATTER + I CAN PROMISE YOU THE ONE BUT NOT THE OTHER HE SNARLED AND SO TURNED HIS ROUNDED BACK UPON ME AND WENT PEERING AND BLINKING OUT OF THE ROOM + THAT WAS MY SINGULAR INTERVIE WITH PROFESSOR MORIARTY + I CONFESS THAT IT LEFT AN UNPLEASANT EFFECT UPON MY MIND + HIS SOFT PRECISE FASHION OF SPEECH LEAVES A CONVICTION OF SINCERITY WHICH A MERE BULLY COULD NOT PRODUCE + OF COURSE YOU WILL SAY WHY NOT TAKE POLICE PRECAUTIONS AGAINST HIM + THE REASON IS THAT I AM WELL CONVINCED THAT IT IS FROM HIS AGENTS THE BLOW WOULD FALL + I HAVE THE BEST OF PROOFS THAT IT WOULD BE SO + YOU HAVE ALREADY BEEN ASSAULTED + MY DEAR WATSON PROFESSOR MORIARTY IS NOT A MAN WHO LETS THE GRASS GROW UNDER HIS FEET + I WENT OUT ABOUT MIDDAY TO TRANSACT SOME BUSINESS IN OXFORD STREET + AS I PASSED THE CORNER WHICH LEADS FROM BENTINCK STREET ON TO THE WELBECK STREET CROSSING A TWO HORSE VAN FURIOUSLY DRIVEN WHIZZED ROUND AND WAS ON ME LIKE A FLASH + I SPRANG FOR THE FOOT PATH AND SAVED MYSELF BY THE FRACTION OF A SECOND + THE VAN DASHED ROUND BY MARYLEBONE LANE AND WAS GONE IN AN INSTANT + I KEPT TO THE PAVEMENT AFTER THAT WATSON BUT AS I WALKED DOWN VERE STREET A BRICK CAME DOWN FROM THE ROOF OF ONE OF THE HOUSES AND WAS SHATTERED TO FRAGMENTS AT MY FEET + I CALLED THE POLICE AND HAD THE PLACE EXAMINED + THERE WERE SLATES AND BRICKS PILED UP ON THE ROOF PREPARATORY TO SOME REPAIRS AND THEY WOULD HAVE ME BELIEVE THAT THE WIND HAD TOPPLED OVER ONE OF THESE + OF COURSE I KNEW BETTER BUT I COULD PROVE NOTHING + I TOOK A CAB AFTER THAT AND REACHED MY BROTHER'S ROOMS IN PALL MALL WHERE I SPENT THE DAY + NOW I HAVE COME ROUND TO YOU AND ON MY WAY I WAS ATTACKED BY A ROUGH WITH A BLUDGEON + I KNOCKED HIM DOWN AND THE POLICE HAVE HIM IN CUSTODY BUT I CAN TELL YOU WITH THE MOST ABSOLUTE CONFIDENCE THAT NO POSSIBLE CONNECTION WILL EVER BE TRACED BETWEEN THE GENTLEMAN UPON WHOSE FRONT TEETH I HAVE BARKED MY KNUCKLES AND THE RETIRING MATHEMATICAL COACH WHO IS I DARESAY WORKING OUT PROBLEMS UPON A BLACK BOARD TEN MILES AWAY + YOU WILL NOT WONDER WATSON THAT MY FIRST ACT ON ENTERING YOUR ROOMS WAS TO CLOSE YOUR SHUTTERS AND THAT I HAVE BEEN COMPELLED TO ASK YOUR PERMISSION TO LEAVE THE HOUSE BY SOME LESS CONSPICUOUS EXIT THAN THE FRONT DOOR QUOTE + I HAD OFTEN ADMIRED MY FRIEND'S COURAGE BUT NEVER MORE THAN NOW AS HE SAT QUIETLY CHECKING OFF A SERIES OF INCIDENTS WHICH MUST HAVE COMBINED TO MAKE UP A DAY OF HORROR + YOU WILL SPEND THE NIGHT HERE + I SAID + NO MY FRIEND YOU MIGHT FIND ME A DANGEROUS GUEST + I HAVE MY PLANS LAID AND ALL WILL BE WELL + MATTERS HAVE GONE SO FAR NOW THAT THEY CAN MOVE WITHOUT MY HELP AS FAR AS THE ARREST GOES THOUGH MY PRESENCE IS NECESSARY FOR A CONVICTION + IT IS OBVIOUS THEREFORE THAT I CANNOT DO BETTER THAN GET AWAY FOR THE FEW DAYS WHICH REMAIN BEFORE THE POLICE ARE AT LIBERTY TO ACT + IT WOULD BE A GREAT PLEASURE TO ME THEREFORE IF YOU COULD COME ON TO THE CONTINENT WITH ME + THE PRACTICE IS QUIET SAID I AND I HAVE AN ACCOMMODATING NEIGHBOUR + I SHOULD BE GLAD TO COME + QUOTE AND TO START TO MORROW MORNING QUOTE + IF NECESSARY + OH YES IT IS MOST NECESSARY + THEN THESE ARE YOUR INSTRUCTIONS AND I BEG MY DEAR WATSON THAT YOU WILL OBEY THEM TO THE LETTER FOR YOU ARE NOW PLAYING A DOUBLE HANDED GAME WITH ME AGAINST THE CLEVEREST ROGUE AND THE MOST POWERFUL SYNDICATE OF CRIMINALS IN EUROPE + NOW LISTEN + YOU WILL DISPATCH WHATEVER LUGGAGE YOU INTEND TO TAKE BY A TRUSTY MESSENGER UNADDRESSED TO VICTORIA TO NIGHT + IN THE MORNING YOU WILL SEND FOR A HANSOM DESIRING YOUR MAN TO TAKE NEITHER THE FIRST NOR THE SECOND WHICH MAY PRESENT ITSELF + INTO THIS HANSOM YOU WILL JUMP AND YOU WILL DRIVE TO THE STRAND END OF THE LOWTHER ARCADE HANDING THE ADDRESS TO THE CABMAN UPON A SLIP OF PAPER WITH A REQUEST THAT HE WILL NOT THROW IT AWAY + HAVE YOUR FARE READY AND THE INSTANT THAT YOUR CAB STOPS DASH THROUGH THE ARCADE TIMING YOURSELF TO REACH THE OTHER SIDE AT A QUARTER PAST NINE + YOU WILL FIND A SMALL BROUGHAM WAITING CLOSE TO THE CURB DRIVEN BY A FELLOW WITH A HEAVY BLACK CLOAK TIPPED AT THE COLLAR WITH RED + INTO THIS YOU WILL STEP AND YOU WILL REACH VICTORIA IN TIME FOR THE CONTINENTAL EXPRESS + WHERE SHALL I MEET YOU + AT THE STATION + THE SECOND FIRST CLASS CARRIAGE FROM THE FRONT WILL BE RESERVED FOR US QUOTE + THE CARRIAGE IS OUR RENDEZVOUS THEN + YES + IT WAS IN VAIN THAT I ASKED HOLMES TO REMAIN FOR THE EVENING + IT WAS EVIDENT TO ME THAT HE THOUGHT HE MIGHT BRING TROUBLE TO THE ROOF HE WAS UNDER AND THAT THAT WAS THE MOTIVE WHICH IMPELLED HIM TO GO + WITH A FEW HURRIED WORDS AS TO OUR PLANS FOR THE MORROW HE ROSE AND CAME OUT WITH ME INTO THE GARDEN CLAMBERING OVER THE WALL WHICH LEADS INTO MORTIMER STREET AND IMMEDIATELY WHISTLING FOR A HANSOM IN WHICH I HEARD HIM DRIVE AWAY + IN THE MORNING I OBEYED HOLMES'S INJUNCTIONS TO THE LETTER + A HANSOM WAS PROCURED WITH SUCH PRECAUTIONS AS WOULD PREVENT ITS BEING ONE WHICH WAS PLACED READY FOR US AND I DROVE IMMEDIATELY AFTER BREAKFAST TO THE LOWTHER ARCADE THROUGH WHICH I HURRIED AT THE TOP OF MY SPEED + A BROUGHAM WAS WAITING WITH A VERY MASSIVE DRIVER WRAPPED IN A DARK CLOAK WHO THE INSTANT THAT I HAD STEPPED IN WHIPPED UP THE HORSE AND RATTLED OFF TO VICTORIA STATION + ON MY ALIGHTING THERE HE TURNED THE CAMAGE AND DASHED AWAY AGAIN WITHOUT SO MUCH AS A LOOK IN MY DIRECTION + SO FAR ALL HAD GONE ADMIRABLY + MY LUGGAGE WAS WAITING FOR ME AND I HAD NO DIFFICULTY IN FINDING THE CARRIAGE WHICH HOLMES HAD INDICATED THE LESS SO AS IT WAS THE ONLY ONE IN THE TRAIN WHICH WAS MARKED ENGAGED + MY ONLY SOURCE OF ANXIETY NOW WAS THE NON APPEARANCE OF HOLMES + THE STATION CLOCK MARKED ONLY SEVEN MINUTES FROM THE TIME WHEN WE WERE DUE TO START + IN VAIN I SEARCHED AMONG THE GROUPS OF TRAVELLERS AND LEAVE TAKERS FOR THE LITHE FIGURE OF MY FRIEND + THERE WAS NO SIGN OF HIM + I SPENT A FEW MINUTES IN ASSISTING A VENERABLE ITALIAN PRIEST WHO WAS ENDEAVOURING TO MAKE A PORTER UNDERSTAND IN HIS BROKEN ENGLISH THAT HIS LUGGAGE WAS TO BE BOOKED THROUGH TO PARIS + THEN HAVING TAKEN ANOTHER LOOK ROUND I RETURNED TO MY CARRIAGE WHERE I FOUND THAT THE PORTER IN SPITE OF THE TICKET HAD GIVEN ME MY DECREPIT ITALIAN FRIEND AS A TRAVELLING COMPANION + IT WAS USELESS FOR ME TO EXPLAIN TO HIM THAT HIS PRESENCE WAS AN INTRUSION FOR MY ITALIAN WAS EVEN MORE LIMITED THAN HIS ENGLISH SO I SHRUGGED MY SHOULDERS RESIGNEDLY AND CONTINUED TO LOOK OUT ANXIOUSLY FOR MY FRIEND + A CHILL OF FEAR HAD COME OVER ME AS I THOUGHT THAT HIS ABSENCE MIGHT MEAN THAT SOME BLOW HAD FALLEN DURING THE NIGHT + ALREADY THE DOORS HAD ALL BEEN SHUT AND THE WHISTLE BLOWN WHEN + MY DEAR WATSON SAID A VOICE YOU HAVE NOT EVEN CONDESCENDED TO SAY GOOD MORNING + I TURNED IN UNCONTROLLABLE ASTONISHMENT + THE AGED ECCLESIASTIC HAD TURNED HIS FACE TOWARDS ME + FOR AN INSTANT THE WRINKLES WERE SMOOTHED AWAY THE NOSE DREW AWAY FROM THE CHIN THE LOWER LIP CEASED TO PROTRUDE AND THE MOUTH TO MUMBLE THE DULL EYES REGAINED THEIR FIRE THE DROOPING FIGURE EXPANDED + THE NEXT THE WHOLE FRAME COLLAPSED AGAIN AND HOLMES HAD GONE AS QUICKLY AS HE HAD COME + GOOD HEAVENS + I CRIED QUOTE HOW YOU STARTLED ME QUOTE + EVERY PRECAUTION IS STILL NECESSARY HE WHISPERED + I HAVE REASON TO THINK THAT THEY ARE HOT UPON OUR TRAIL + AH THERE IS MORIARTY HIMSELF + THE TRAIN HAD ALREADY BEGUN TO MOVE AS HOLMES SPOKE + GLANCING BACK I SAW A TALL MAN PUSHING HIS WAY FURIOUSLY THROUGH THE CROWD AND WAVING HIS HAND AS IF HE DESIRED TO HAVE THE TRAIN STOPPED + IT WAS TOO LATE HOWEVER FOR WE WERE RAPIDLY GATHERING MOMENTUM AND AN INSTANT LATER HAD SHOT CLEAR OF THE STATION + WITH ALL OUR PRECAUTIONS YOU SEE THAT WE HAVE CUT IT RATHER FINE SAID HOLMES LAUGHING + HE ROSE AND THROWING OFF THE BLACK CASSOCK AND HAT WHICH HAD FORMED HIS DISGUISE HE PACKED THEM AWAY IN A HAND BAG + HAVE YOU SEEN THE MORNING PAPER WATSON + QUOTE NUMBER QUOTE + YOU HAVEN'T SEEN ABOUT BAKER STREET THEN + BAKER STREET + THEY SET FIRE TO OUR ROOMS LAST NIGHT + NO GREAT HARM WAS DONE + GOOD HEAVENS HOLMES THIS IS INTOLERABLE + QUOTE THEY MUST HAVE LOST MY TRACK COMPLETELY AFTER THEIR BLUDGEONMAN WAS ARRESTED + OTHERWISE THEY COULD NOT HAVE IMAGINED THAT I HAD RETURNED TO MY ROOMS + THEY HAVE EVIDENTLY TAKEN THE PRECAUTION OF WATCHING YOU HOWEVER AND THAT IS WHAT HAS BROUGHT MORIARTY TO VICTORIA + YOU COULD NOT HAVE MADE ANY SLIP IN COMING + I DID EXACTLY WHAT YOU ADVISED + DID YOU FIND YOUR BROUGHAM + YES IT WAS WAITING + DID YOU RECOGNIZE YOUR COACHMAN + QUOTE NUMBER QUOTE + IT WAS MY BROTHER MYCROFT + IT IS AN ADVANTAGE TO GET ABOUT IN SUCH A CASE WITHOUT TAKING A MERCENARY INTO YOUR CONFIDENCE + BUT WE MUST PLAN WHAT WE ARE TO DO ABOUT MORIARTY NOW + AS THIS IS AN EXPRESS AND AS THE BOAT RUNS IN CONNECTION WITH IT I SHOULD THINK WE HAVE SHAKEN HIM OFF VERY EFFECTIVELY + MY DEAR WATSON YOU EVIDENTLY DID NOT REALIZE MY MEANING WHEN I SAID THAT THIS MAN MAY BE TAKEN AS BEING QUITE ON THE SAME INTELLECTUAL PLANE AS MYSELF + YOU DO NOT IMAGINE THAT IF I WERE THE PURSUER I SHOULD ALLOW MYSELF TO BE BAFFLED BY SO SLIGHT AN OBSTACLE + WHY THEN SHOULD YOU THINK SO MEANLY OF HIM + QUOTE WHAT WILL HE DO QUOTE + WHAT I SHOULD DO + WHAT WOULD YOU DO THEN + ENGAGE A SPECIAL + BUT IT MUST BE LATE + BY NO MEANS + THIS TRAIN STOPS AT CANTERBURY AND THERE IS ALWAYS AT LEAST A QUARTER OF AN HOUR'S DELAY AT THE BOAT + HE WILL CATCH US THERE QUOTE + ONE WOULD THINK THAT WE WERE THE CRIMINALS + LET US HAVE HIM ARRESTED ON HIS ARRIVAL + IT WOULD BE TO RUIN THE WORK OF THREE MONTHS + WE SHOULD GET THE BIG FISH. BUT THE SMALLER WOULD DART RIGHT AND LEFT OUT OF THE NET + ON MONDAY WE SHOULD HAVE THEM ALL + NO AN ARREST IS INADMISSIBLE + WHAT THEN + QUOTE WE SHALL GET OUT AT CANTERBURY QUOTE + AND THEN + WELL THEN WE MUST MAKE A CROSS COUNTRY JOURNEY TO NEWHAVEN AND SO OVER TO DIEPPE + MORIARTY WILL AGAIN DO WHAT I SHOULD DO + HE WILL GET ON TO PARIS MARK DOWN OUR LUGGAGE AND WAIT FOR TWO DAYS AT THE DEPOT + IN THE MEANTIME WE SHALL TREAT OURSELVES TO A COUPLE OF CARPET BAGS ENCOURAGE THE MANUFACTURES OF THE COUNTRIES THROUGH WHICH WE TRAVEL AND MAKE OUR WAY AT OUR LEISURE INTO SWITZERLAND VIA LUXEMBOURG AND BASLE + AT CANTERBURY THEREFORE WE ALIGHTED ONLY TO FIND THAT WE SHOULD HAVE TO WALT AN HOUR BEFORE WE COULD GET A TRAIN TO NEWHAVEN + I WAS STILL LOOKING RATHER RUEFULLY AFTER THE RAPIDLY DISAPPEARING LUGGAGE VAN WHICH CONTAINED MY WARDROBE WHEN HOLMES PULLED MY SLEEVE AND POINTED UP THE LINE + ALREADY YOU SEE SAID HE + FAR AWAY FROM AMONG THE KENTISH WOODS THERE ROSE A THIN SPRAY OF SMOKE + A MINUTE LATER A CARRIAGE AND ENGINE COULD BE SEEN FLYING ALONG THE OPEN CURVE WHICH LEADS TO THE STATION + WE HAD HARDLY TIME TO TAKE OUR PLACE BEHIND A PILE OF LUGGAGE WHEN IT PASSED WITH A RATTLE AND A ROAR BEATING A BLAST OF HOT AIR INTO OUR FACES + THERE HE GOES SAID HOLMES AS WE WATCHED THE CARRIAGE SWING AND ROCK OVER THE POINTS + QUOTE THERE ARE LIMITS YOU SEE TO OUR FRIEND'S INTELLIGETNCE + IT WOULD HAVE BEEN A COUP DE MAITRE HAD HE DEDUCED WHAT I WOULD DEDUCE AND ACTED ACCORDINGLY + AND WHAT WOULD HE HAVE DONE HAD HE OVERTAKEN US + THERE CANNOT BE THE LEAST DOUBT THAT HE WOULD HAVE MADE A MURDEROUS ATTACK UPON ME + IT IS HOWEVER A GAME AT WHICH TWO MAY PLAY + THE QUESTION NOW IS WHETHER WE SHOULD TAKE A PREMATURE LUNCH HERE OR RUN OUR CHANCE OF STARVING BEFORE WE REACH THE BUFFET AT NEWHAVEN + WE MADE OUR WAY TO BRUSSELS THAT NIGHT AND SPENT TWO DAYS THERE MOVING ON UPON THE THIRD DAY AS FAR AS STRASBOURG + ON THE MONDAY MORNING HOLMES HAD TELEGRAPHED TO THE LONDON POLICE AND IN THE EVENING WE FOUND A REPLY WAITING FOR US AT OUR HOTEL + HOLMES TORE IT OPEN AND THEN WITH A BITTER CURSE HURLED IT INTO THE GRATE + I MIGHT HAVE KNOWN IT HE GROANED + QUOTE HE HAS ESCAPED QUOTE + MORIARTY + THEY HAVE SECURED THE WHOLE GANG WITH THE EXCEPTION OF HIM + HE HAS GIVEN THEM THE SLIP + OF COURSE WHEN I HAD LEFT THE COUNTRY THERE WAS NO ONE TO COPE WITH HIM + BUT I DID THINK THAT I HAD PUT THE GAME IN THEIR HANDS + I THINK THAT YOU HAD BETTER RETURN TO ENGLAND WATSON + WHY + BECAUSE YOU WILL FIND ME A DANGEROUS COMPANION NOW + THIS MAN'S OCCUPATION IS GONE + HE IS LOST IF HE RETURNS TO LONDON + IF I READ HIS CHARACTER RIGHT HE WILL DEVOTE HIS WHOLE ENERGIES TO REVENGING HIMSELF UPON ME + HE SAID AS MUCH IN OUR SHORT INTERVIEW AND I FANCY THAT HE MEANT IT + I SHOULD CERTAINLY RECOMMEND YOU TO RETURN TO YOUR PRACTICE QUOTE + IT WAS HARDLY AN APPEAL TO BE SUCCESSFUL WITH ONE WHO WAS AN OLD CAMPAIGNER AS WELL AS AN OLD FRIEND + WE SAT IN THE STRASBOURG SALLE A MANGER ARGUING THE QUESTION FOR HALF AN HOUR BUT THE SAME NIGHT WE HAD RESUMED OUR JOURNEY AND WERE WELL ON OUR WAY TO GENEVA + FOR A CHARMING WEEK WE WANDERED UP THE VALLEY OF THE RHONE AND THEN BRANCHING OFF AT LEUK WE MADE OUR WAY OVER THE GEMMI PASS STILL DEEP IN SNOW AND SO BY WAY OF INTERLAKEN TO MEIRINGEN + IT WAS A LOVELY TRIP THE DAINTY GREEN OF THE SPRING BELOW THE VIRGIN WHITE OF THE WINTER ABOVE BUT IT WAS CLEAR TO ME THAT NEVER FOR ONE INSTANT DID HOLMES FORGET THE SHADOW WHICH LAY ACROSS HIM + IN THE HOMELY ALPINE VILLAGES OR IN THE LONELY MOUNTAIN PASSES I COULD STILL TELL BY HIS QUICK GLANCING EYES AND HIS SHARP SCRUTINY OF EVERY FACE THAT PASSED US THAT HE WAS WELL CONVINCED THAT WALK WHERE WE WOULD WE COULD NOT WALK OURSELVES CLEAR OF THE DANGER WHICH WAS DOGGING OUR FOOTSTEPS + ONCE I. REMEMBER AS WE PASSED OVER THE GEMMI AND WALKED ALONG THE BORDER OF THE MELANCHOLY DAUBENSEE A LARGE ROCK WHICH HAD BEEN DISLODGED FROM THE RIDGE UPON OUR RIGHT CLATTERED DOWN AND ROARED INTO THE LAKE BEHIND US + IN AN INSTANT HOLMES HAD RACED UP ON TO THE RIDGE AND STANDING UPON A LOFTY PINNACLE CRANED HIS NECK IN EVERY DIRECTION + IT WAS IN VAIN THAT OUR GUIDE ASSURED HIM THAT A FALL OF STONES WAS A COMMON CHANCE IN THE SPRINGTIME AT THAT SPOT + HE SAID NOTHING BUT HE SMILED AT ME WITH THE AIR OF A MAN WHO SEES THE FULFILMENT OF THAT WHICH HE HAD EXPECTED + AND YET FOR ALL HIS WATCHFULNESS HE WAS NEVER DEPRESSED + ON THE CONTRARY I CAN NEVER RECOLLECT HAVING SEEN HIM IN SUCH EXUBERANT SPIRITS + AGAIN AND AGAIN HE RECURRED TO THE FACT THAT IF HE COULD BE ASSURED THAT SOCIETY WAS FREED FROM PROFESSOR MORIARTY HE WOULD CHEERFULLY BRING HIS OWN CAREER TO A CONCLUSION + I THINK THAT I MAY GO SO FAR AS TO SAY WATSON THAT I HAVE NOT LIVED WHOLLY IN VAIN HE REMARKED + IF MY RECORD WERE CLOSED TO NIGHT I COULD STILL SURVEY IT WITH EQUANIMITY + THE AIR OF LONDON IS THE SWEETER FOR MY PRESENCE + IN OVER A THOUSAND CASES I AM NOT AWARE THAT I HAVE EVER USED MY POWERS UPON THE WRONG SIDE + OF LATE I HAVE BEEN TEMPTED TO LOOK INTO THE PROBLEMS FURNISHED BY NATURE RATHER THAN THOSE MORE SUPERFICIAL ONES TOR WHICH OUR ARTIFICIAL STATE OF SOCIETY IS RESPONSIBLE + YOUR MEMOIRS WILL DRAW TO AN END WATSON UPON THE DAY THAT I CROWN MY CAREER BY THE CAPTURE OR EXTINCTION OF THE MOST DANGEROUS AND CAPABLE CRIMINAL IN EUROPE + I SHALL BE BRIEF AND YET EXACT IN THE LITTLE WHICH REMAINS FOR ME TO TELL + IT IS NOT A SUBJECT ON WHICH I WOULD WILLINGLY DWELL AND YET I AM CONSCIOUS THAT A DUTY DEVOLVES UPON ME TO OMIT NO DETAIL + IT WAS ON THE THIRD OF MAY THAT WE REACHED THE LITTLE VILLAGE OF MEIRINGEN WHERE WE PUT UP AT THE ENGLISCHER HOF. THEN KEPT BY PETER STEILER THE ELDER + OUR LANDLORD WAS AN INTELLIGENT MAN AND SPOKE EXCELLENT ENGLISH HAVING SERVED FOR THREE YEARS AS WAITER AT THE GROSVENOR HOTEL IN LONDON + AT HIS ADVICE ON THE AFTERNOON OF THE FOURTH WE SET OFF TOGETHER WITH THE INTENTION OF CROSSING THE HILLS AND SPENDING THE NIGHT AT THE HAMLET OF ROSENLAUI + WE HAD STRICT INJUNCTIONS HOWEVER ON NO ACCOUNT TO PASS THE FALLS OF REICHENBACH WHICH ARE ABOUT HALFWAY UP THE HILLS WITHOUT MAKING A SMALL DETOUR TO SEE THEM + IT IS INDEED A FEARFUL PLACE + THE TORRENT SWOLLEN BY THE MELTING SNOW PLUNGES INTO A TREMENDOUS ABYSS FROM WHICH THE SPRAY ROLLS UP LIKE THE SMOKE FROM A BURNING HOUSE + THE SHAFT INTO WHICH THE RIVER HURLS ITSELF IS AN IMMENSE CHASM LINED BY GLISTENING COAL BLACK ROCK AND NARROWING INTO A CREAMING BOILING PIT OF INCALCULABLE DEPTH WHICH BRIMS OVER AND SHOOTS THE STREAM ONWARD OVER ITS JAGGED LIP + THE LONG SWEEP OF GREEN WATER ROARING FOREVER DOWN AND THE THICK FLICKERING CURTAIN OF SPRAY HISSING FOREVER UPWARD TURN A MAN GIDDY WITH THEIR CONSTANT WHIRL AND CLAMOUR + WE STOOD NEAR THE EDGE PEERING DOWN AT THE GLEAM OF THE BREAKING WATER FAR BELOW US AGAINST THE BLACK ROCKS AND LISTENING TO THE HALF HUMAN SHOUT WHICH CAME BOOMING UP WITH THE SPRAY OUT OF THE ABYSS + THE PATH HAS BEEN CUT HALFWAY ROUND THE FALL TO AFFORD A COMPLETE VIEW BUT IT ENDS ABRUPTLY AND THE TRAVELLER HAS TO RETURN AS HE CAME + WE HAD TURNED TO DO SO WHEN WE SAW A SWISS LAD COME RUNNING ALONG IT WITH A LETTER IN HIS HAND + IT BORE THE MARK OF THE HOTEL WHICH WE HAD JUST LEFT AND WAS ADDRESSED TO ME BY THE LANDLORD + IT APPEARED THAT WITHIN A VERY FEW MINUTES OF OUR LEAVING AN ENGLISH LADY HAD ARRIVED WHO WAS IN THE LAST STAGE OF CONSUMPTION + SHE HAD WINTERED AT DAVOS PLATZ AND WAS JOURNEYING NOW TO JOIN HER FRIENDS AT LUCERNE WHEN A SUDDEN HEMORRHAGE HAD OVERTAKEN HER + IT WAS THOUGHT THAT SHE COULD HARDLY LIVE A FEW HOURS BUT IT WOULD BE A GREAT CONSOLATION TO HER TO SEE AN ENGLISH DOCTOR AND IF I WOULD ONLY RETURN ET CETERA + THE GOOD STEILER ASSURED ME IN A POSTSCRIPT THAT HE WOULD HIMSELF LOOK UPON MY COMPLIANCE AS A VERY GREAT FAVOUR SINCE THE LADY ABSOLUTELY REFUSED TO SEE A SWISS PHYSICIAN AND HE COULD NOT BUT FEEL THAT HE WAS INCURRING A GREAT RESPONSIBILITY + THE APPEAL WAS ONE WHICH COULD NOT BE IGNORED + IT WAS IMPOSSIBLE TO REFUSE THE REQUEST OF A FELLOW COUNTRYWOMAN DYING IN A STRANGE LAND + YET I HAD MY SCRUPLES ABOUT LEAVING HOLMES + IT WAS FINALLY AGREED HOWEVER THAT HE SHOULD RETAIN THE YOUNG SWISS MESSENGER WITH HIM AS GUIDE AND COMPANION WHILE I RETURNED TO MEIRINGEN + MY FRIEND WOULD STAY SOME LITTLE TIME AT THE FALL HE SAID AND WOULD THEN WALK SLOWLY OVER THE HILL TO ROSENLAUI WHERE I WAS TO REJOIN HIM IN THE EVENING + AS I TURNED AWAY I SAW HOLMES WITH HIS BACK AGAINST A ROCK AND HIS ARMS FOLDED GAZING DOWN AT THE RUSH OF THE WATERS + IT WAS THE LAST THAT I WAS EVER DESTINED TO SEE OF HIM IN THIS WORLD + WHEN I WAS NEAR THE BOTTOM OF THE DESCENT I LOOKED BACK + IT WAS IMPOSSIBLE FROM THAT POSITION TO SEE THE FALL BUT I COULD SEE THE CURVING PATH WHICH WINDS OVER THE SHOULDER OF THE HILLS AND LEADS TO IT + ALONG THIS A MAN WAS I REMEMBER WALKING VERY RAPIDLY + I COULD SEE HIS BLACK FIGURE CLEARLY OUTLINED AGAINST THE GREEN BEHIND HIM + I NOTED HIM AND THE ENERGY WITH WHICH HE WALKED BUT HE PASSED FROM MY MIND AGAIN AS I HURRIED ON UPON MY ERRAND + IT MAY HAVE BEEN A LITTLE OVER AN HOUR BEFORE I REACHED MEIRINGEN + OLD STEILER WAS STANDING AT THE PORCH OF HIS HOTEL + WELL SAID I AS I CAME HURRYING UP I TRUST THAT SHE IS NO WORSE + A LOOK OF SURPRISE PASSED OVER HIS FACE AND AT THE FIRST QUIVER OF HIS EYEBROWS MY HEART TURNED TO LEAD IN MY BREAST + YOU DID NOT WRITE THIS + I SAID PULLING THE LETTER FROM MY POCKET + QUOTE THERE IS NO SICK ENGLISHWOMAN IN THE HOTEL QUOTE + CERTAINLY NOT HE CRIED + BUT IT HAS THE HOTEL MARK UPON IT + HA IT MUST HAVE BEEN WRITTEN BY THAT TALL ENGLISHMAN WHO CAME IN AFTER YOU HAD GONE + HE SAID + BUT I WAITED FOR NONE OF THE LANDLORD'S EXPLANATION + IN A TINGLE OF FEAR I WAS ALREADY RUNNING DOWN THE VILLAGE STREET AND MAKING FOR THE PATH WHICH I HAD SO LATELY DESCENDED + IT HAD TAKEN ME AN HOUR TO COME DOWN + FOR ALL MY EFFORTS TWO MORE HAD PASSED BETORE I FOUND MYSELF AT THE FALL OF REICHENBACH ONCE MORE + THERE WAS HOLMES'S ALPINE STOCK STILL LEANING AGAINST THE ROCK BY WHICH I HAD LEFT HIM + BUT THERE WAS NO SIGN OF HIM AND IT WAS IN VAIN THAT I SHOUTED + MY ONLY ANSWER WAS MY OWN VOICE REVERBERATING IN A ROLLING ECHO FROM THE CLIFFS AROUND ME + IT WAS THE SIGHT OF THAT ALPINE STOCK WHICH TURNED ME COLD AND SICK + HE HAD NOT GONE TO ROSENLAUI THEN + HE HAD REMAINED ON THAT THREE FOOT PATH WITH SHEER WALL ON ONE SIDE AND SHEER DROP ON THE OTHER UNTIL HIS ENEMY HAD OVERTAKEN HIM + THE YOUNG SWISS HAD GONE TOO + HE HAD PROBABLY BEEN IN THE PAY OF MORIARTY AND HAD LEFT THE TWO MEN TOGETHER + AND THEN WHAT HAD HAPPENED + WHO WAS TO TELL US WHAT HAD HAPPENED THEN + I STOOD FOR A MINUTE OR TWO TO COLLECT MYSELF FOR I WAS DAZED WITH THE HORROR OF THE THING + THEN I BEGAN TO THINK OF HOLMES'S OWN METHODS AND TO TRY TO PRACTISE THEM IN READING THIS TRAGEDY + IT WAS ALAS ONLY TOO EASY TO DO + DURING OUR CONVERSATION WE HAD NOT GONE TO THE END OF THE PATH AND THE ALPINE STOCK MARKED THE PLACE WHERE WE HAD STOOD + THE BLACKISH SOIL IS KEPT FOREVER SOFT BY THE INCESSANT DRIFT OF SPRAY AND A BIRD WOULD LEAVE ITS TREAD UPON IT + TWO LINES OF FOOTMARKS WERE CLEARLY MARKED ALONG THE FARTHER END OF THE PATH BOTH LEADING AWAY FROM ME + THERE WERE NONE RETURNING + A FEW YARDS FROM THE END THE SOIL WAS ALL PLOUGHED UP INTO A PATCH OF MUD AND THE BRAMBLES AND FERNS WHICH FRINGED THE CHASM WERE TORN AND BEDRAGGLED + I LAY UPON MY FACE AND PEERED OVER WITH THE SPRAY SPOUTING UP ALL AROUND ME + IT HAD DARKENED SINCE I LEFT AND NOW I COULD ONLY SEE HERE AND THERE THE GLISTENING OF MOISTURE UPON THE BLACK WALLS AND FAR AWAY DOWN AT THE END OF THE SHAFT THE GLEAM OF THE BROKEN WATER + I SHOUTED BUT ONLY THAT SAME HALF HUMAN CRY OF THE FALL WAS BORNE BACK TO MY EARS + BUT IT WAS DESTINED THAT I SHOULD AFTER ALL HAVE A LAST WORD OF GREETING FROM MY FRIEND AND COMRADE + I HAVE SAID THAT HIS ALPINE STOCK HAD BEEN LEFT LEANING AGAINST A ROCK WHICH JUTTED ON TO THE PATH + FROM THE TOP OF THIS BOWLDER THE GLEAM OF SOMETHING BRIGHT CAUGHT MY EYE AND RAISING MY HAND I FOUND THAT IT CAME FROM THE SILVER CIGARETTE CASE WHICH HE USED TO CARRY + AS I TOOK IT UP A SMALL SQUARE OF PAPER UPON WHICH IT HAD LAIN FLUTTERED DOWN ON TO THE GROUND + UNFOLDING IT I FOUND THAT IT CONSISTED OF THREE PAGES TORN FROM HIS NOTEBOOK AND ADDRESSED TO ME + IT WAS CHARACTERISTIC OF THE MAN THAT THE DIRECTION WAS AS PRECISE AND THE WRITING AS FIRM AND CLEAR AS THOUGH IT HAD BEEN WRITTEN IN HIS STUDY + MY DEAR WATSON IT SAID I WRITE THESE FEW LINES THROUGH THE COURTESY OF MR. MORIARTY WHO AWAITS MY CONVENIENCE FOR THE FINAL DISCUS SION OF THOSE QUESTIONS WHICH LIE BETWEEN US + HE HAS BEEN GIVING ME A SKETCH OF THE METHODS BY WHICH HE AVOIDED THE ENGLISH POLICE AND KEPT HIMSELF INFORMED OF OUR MOVE MENTS + THEY CERTAINLY CONFIRM THE VERY HIGH OPINION WHICH I HAD FORMED OF HIS ABILITIES + I AM PLEASED TO THINK THAT I SHALL BE ABLE TO FREE SOCIETY FROM ANY FURTHER EFFECTS OF HIS PRESENCE THOUGH I FEAR THAT IT IS AT A COST WHICH WILL GIVE PAIN TO MY FRIENDS AND ESPECIALLY MY DEAR WATSON TO YOU + I HAVE ALREADY EXPLAINED TO YOU HOWEVER THAT MY CAREER HAD IN ANY CASE REACHED ITS CRISIS AND THAT NO POSSIBLE CONCLUSION TO IT COULD BE MORE CONGENIAL TO ME THAN THIS + INDEED IF I MAY MAKE A FULL CONFESSION TO YOU I WAS QUITE CONVINCED THAT THE LETTER FROM MEIRINGEN WAS A HOAX AND I ALLOWED YOU TO DEPART ON THAT ERRAND UNDER THE PERSUASION THAT SOME DEVELOPMENT OF THIS SORT WOULD FOLLOW + TELL IN SPECTOR PATTERSON THAT THE PAPERS WHICH HE NEEDS TO CONVICT THE GANG ARE IN PIGEONHOLE M. DONE UP IN A BLUE ENVELOPE AND INSCRIBED MORIARTY + I MADE EVERY DISPOSITION OF MY PROPERTY BEFORE LEAVING ENGLAND AND HANDED IT TO MY BROTHER MYCROFT + PRAY GIVE MY GREETINGS TO MRS. WATSON AND BELIEVE ME TO BE MY DEAR FELLOW VERY SINCERELY YOURS SHERLOCK HOLMES + A FEW WORDS MAY SUFFICE TO TELL THE LITTLE THAT REMAINS + AN EXAMINATION BY EXPERTS LEAVES LITTLE DOUBT THAT A PERSONAL CONTEST BETWEEN THE TWO MEN ENDED AS IT COULD HARDLY FAIL TO END IN SUCH A SITUATION IN THEIR REELING OVER LOCKED IN EACH OTHER'S ARMS + ANY ATTEMPT AT RECOVERING THE BODIES WAS ABSOLUTELY HOPELESS AND THERE DEEP DOWN IN THAT DREADFUL CAULDRON OF SWIRLING WATER AND SEETHING FOAM WILL LIE FOR ALL TIME THE MOST DANGEROUS CRIMINAL AND THE FOREMOST CHAMPION OF THE LAW OF THEIR GENERATION + THE SWISS YOUTH WAS NEVER FOUND AGAIN AND THERE CAN BE NO DOUBT THAT HE WAS ONE OF THE NUMEROUS AGENTS WHOM MORIARTY KEPT IN HIS EMPLOY + AS TO THE GANG IT WILL BE WITHIN THE MEMORY OF THE PUBLIC HOW COMPLETELY THE EVIDENCE WHICH HOLMES HAD ACCUMULATED EXPOSED THEIR ORGANIZATION AND HOW HEAVILY THE HAND OF THE DEAD MAN WEIGHED UPON THEM + OF THEIR TERRIBLE CHIEF FEW DETAILS CAME OUT DURING THE PROCEEDINGS AND IF I HAVE NOW BEEN COMPELLED TO MAKE A CLEAR STATEMENT OF HIS CAREER IT IS DUE TO THOSE INJUDICIOUS CHAMPIONS WHO HAVE ENDEAVOURED TO CLEAR HIS MEMORY BY ATTACKS UPON HIM WHOM I SHALL EVER REGARD AS THE BEST AND THE WISEST MAN WHOM I HAVE EVER KNOWN diff --git a/samples/LMTutorial/train/five_orange_pips.txt b/samples/LMTutorial/train/five_orange_pips.txt new file mode 100755 index 0000000..9f1c10c --- /dev/null +++ b/samples/LMTutorial/train/five_orange_pips.txt @@ -0,0 +1,448 @@ + WHEN I GLANCE OVER MY NOTES AND RECORDS OF THE SHERLOCK HOLMES CASES BETWEEN THE YEARS EIGHTY TWO AND NINETY I AM FACED BY SO MANY WHICH PRESENT STRANGE AND INTERESTING FEATURES THAT IT IS NO EASY MATTER TO KNOW WHICH TO CHOOSE AND WHICH TO LEAVE + SOME HOWEVER HAVE ALREADY GAINED PUBLICITY THROUGH THE PAPERS AND OTHERS HAVE NOT OFFERED A FIELD FOR THOSE PECULIAR QUALITIES WHICH MY FRIEND POSSESSED IN SO HIGH A DEGREE AND WHICH IT IS THE OBJECT OF THESE PAPERS TO ILLUSTRATE + SOME TOO HAVE BAFFLED HIS ANALYTICAL SKILL AND WOULD BE AS NARRATIVES BEGINNINGS WITHOUT AN ENDING WHILE OTHERS HAVE BEEN BUT PARTIALLY CLEARED UP AND HAVE THEIR EXPLANATIONS FOUNDED RATHER UPON CONJECTURE AND SURMISE THAN ON THAT ABSOLUTE LOGICAL PROOF WHICH WAS SO DEAR TO HIM + THERE IS HOWEVER ONE OF THESE LAST WHICH WAS SO REMARKABLE IN ITS DETAILS AND SO STARTLING IN ITS RESULTS THAT I AM TEMPTED TO GIVE SOME ACCOUNT OF IT IN SPITE OF THE FACT THAT THERE ARE POINTS IN CONNECTION WITH IT WHICH NEVER HAVE BEEN AND PROBABLY NEVER WILL BE ENTIRELY CLEARED UP + THE YEAR EIGHTY SEVEN FURNISHED US WITH A LONG SERIES OF CASES OF GREATER OR LESS INTEREST OF WHICH I RETAIN THE RECORDS + AMONG MY HEADINGS UNDER THIS ONE TWELVE MONTHS I FIND AN ACCOUNT OF THE ADVENTURE OF THE PARADOL CHAMBER OF THE AMATEUR MENDICANT SOCIETY WHO HELD A LUXURIOUS CLUB IN THE LOWER VAULT OF A FURNITURE WAREHOUSE OF THE FACTS CONNECTED WITH THE LOSS OF THE BRITISH BARK SOPHY ANDERSON OF THE SINGULAR ADVENTURES OF THE GRICE PATERSONS IN THE ISLAND OF UFFA AND FINALLY OF THE CAMBERWELL POISONING CASE + IN THE LATTER AS MAY BE REMEMBERED SHERLOCK HOLMES WAS ABLE BY WINDING UP THE DEAD MAN'S WATCH TO PROVE THAT IT HAD BEEN WOUND UP TWO HOURS BEFORE AND THAT THEREFORE THE DECEASED HAD GONE TO BED WITHIN THAT TIME A DEDUCTION WHICH WAS OF THE GREATEST IMPORTANCE IN CLEARING UP THE CASE + ALL THESE I MAY SKETCH OUT AT SOME FUTURE DATE BUT NONE OF THEM PRESENT SUCH SINGULAR FEATURES AS THE STRANGE TRAIN OF CIRCUMSTANCES WHICH I HAVE NOW TAKEN UP MY PEN TO DESCRIBE + IT WAS IN THE LATTER DAYS OF SEPTEMBER AND THE EQUINOCTIAL GALES HAD SET IN WITH EXCEPTIONAL VIOLENCE + ALL DAY THE WIND HAD SCREAMED AND THE RAIN HAD BEATEN AGAINST THE WINDOWS SO THAT EVEN HERE IN THE HEART OF GREAT HAND MADE LONDON WE WERE FORCED TO RAISE OUR MINDS FOR THE INSTANT FROM THE ROUTINE OF LIFE AND TO RECOGNIZE THE PRESENCE OF THOSE GREAT ELEMENTAL FORCES WHICH SHRIEK AT MANKIND THROUGH THE BARS OF HIS CIVILIZATION LIKE UNTAMED BEASTS IN A CAGE + AS EVENING DREW IN THE STORM GREW HIGHER AND LOUDER AND THE WIND CRIED AND SOBBED LIKE A CHILD IN THE CHIMNEY + SHERLOCK HOLMES SAT MOODILY AT ONE SIDE OF THE FIREPLACE CROSS INDEXING HIS RECORDS OF CRIME WHILE I AT THE OTHER WAS DEEP IN ONE OF CLARK RUSSELL'S FINE SEA STORIES UNTIL THE HOWL OF THE GALE FROM WITHOUT SEEMED TO BLEND WITH THE TEXT AND THE SPLASH OF THE RAIN TO LENGTHEN OUT INTO THE LONG SWASH OF THE SEA WAVES + MY WIFE WAS ON A VISIT TO HER MOTHER'S AND FOR A FEW DAYS I WAS A DWELLER ONCE MORE IN MY OLD QUARTERS AT BAKER STREET + QUOTE WHY QUOTE SAID I GLANCING UP AT MY COMPANION QUOTE THAT WAS SURELY THE BELL + WHO COULD COME TO NIGHT + SOME FRIEND OF YOURS PERHAPS + EXCEPT YOURSELF I HAVE NONE HE ANSWERED + I DO NOT ENCOURAGE VISITORS + A CLIENT THEN + IF SO IT IS A SERIOUS CASE + NOTHING LESS WOULD BRING A MAN OUT ON SUCH A DAY AND AT SUCH AN HOUR + BUT I TAKE IT THAT IT IS MORE LIKELY TO BE SOME CRONY OF THE LANDLADY'S QUOTE + SHERLOCK HOLMES WAS WRONG IN HIS CONJECTURE HOWEVER FOR THERE CAME A STEP IN THE PASSAGE AND A TAPPING AT THE DOOR + HE STRETCHED OUT HIS LONG ARM TO TURN THE LAMP AWAY FROM HIMSELF AND TOWARDS THE VACANT CHAIR UPON WHICH A NEWCOMER MUST SIT + COME IN SAID HE + THE MAN WHO ENTERED WAS YOUNG SOME TWO AND TWENTY AT THE OUTSIDE WELL GROOMED AND TRIMLY CLAD WITH SOMETHING OF REFINEMENT AND DELICACY IN HIS BEARING + THE STREAMING UMBRELLA WHICH HE HELD IN HIS HAND AND HIS LONG SHINING WATERPROOF TOLD OF THE FIERCE WEATHER THROUGH WHICH HE HAD COME + HE LOOKED ABOUT HIM ANXIOUSLY IN THE GLARE OF THE LAMP AND I COULD SEE THAT HIS FACE WAS PALE AND HIS EYES HEAVY LIKE THOSE OF A MAN WHO IS WEIGHED DOWN WITH SOME GREAT ANXIETY + L. OWE YOU AN APOLOGY HE SAID RAISING HIS GOLDEN PINCE NEZ TO HIS EYES + I TRUST THAT I AM NOT INTRUDING + I FEAR THAT I HAVE BROUGHT SOME TRACES OF THE STORM AND RAIN INTO YOUR SNUG CHAMBER + GIVE ME YOUR COAT AND UMBRELLA SAID HOLMES + QUOTE THEY MAY REST HERE ON THE HOOK AND WILL BE DRY PRESENTLY + YOU HAVE COME UP FROM THE SOUTH WEST I SEE + YES FROM HORSHAM + THAT CLAY AND CHALK MIXTURE WHICH I SEE UPON YOUR TOE CAPS IS QUITE DISTINCTIVE + I HAVE COME FOR ADVICE + THAT IS EASILY GOT + QUOTE AND HELP QUOTE + THAT IS NOT ALWAYS SO EASY + I HAVE HEARD OF YOU MR. HOLMES + I HEARD FROM MAJOR PRENDERGAST HOW YOU SAVED HIM IN THE TANKERVILLE CLUB SCANDAL + AH OF COURSE + HE WAS WRONGFULLY ACCUSED OF CHEATING AT CARDS + QUOTE HE SAID THAT YOU COULD SOLVE ANYTHING QUOTE + HE SAID TOO MUCH + THAT YOU ARE NEVER BEATEN + I HAVE BEEN BEATEN FOUR TIMES THREE TIMES BY MEN AND ONCE BY A WOMAN + BUT WHAT IS THAT COMPARED WITH THE NUMBER OF YOUR SUCCESSES + IT IS TRUE THAT I HAVE BEEN GENERALLY SUCCESSFUL + QUOTE THEN YOU MAY BE SO WITH ME QUOTE + I BEG THAT YOU WILL DRAW YOUR CHAIR UP TO THE FIRE AND FAVOUR ME WITH SOME DETAILS AS TO YOUR CASE + IT IS NO ORDINARY ONE + NONE OF THOSE WHICH COME TO ME ARE + I AM THE LAST COURT OF APPEAL + AND YET I QUESTION SIR WHETHER IN ALL YOUR EXPERIENCE YOU HAVE EVER LISTENED TO A MORE MYSTERIOUS AND INEXPLICABLE CHAIN OF EVENTS THAN THOSE WHICH HAVE HAPPENED IN MY OWN FAMILY + QUOTE YOU FILL ME WITH INTEREST QUOTE SAID HOLMES + PRAY GIVE US THE ESSENTIAL FACTS FROM THE COMMENCEMENT AND I CAN AFTERWARDS QUESTION YOU AS TO THOSE DETAILS WHICH SEEM TO ME TO BE MOST IMPORTANT + THE YOUNG MAN PULLED HIS CHAIR UP AND PUSHED HIS WET FEET OUT TOWARDS THE BLAZE + MY NAME SAID HE IS JOHN OPENSHAW BUT MY OWN AFFAIRS HAVE AS FAR AS I CAN UNDERSTAND LITTLE TO DO WITH THIS AWFUL BUSINESS + IT IS A HEREDITARY MATTER SO IN ORDER TO GIVE YOU AN IDEA OF THE FACTS I MUST GO BACK TO THE COMMENCEMENT OF THE AFFAIR + YOU MUST KNOW THAT MY GRANDFATHER HAD TWO SONS MY UNCLE ELIAS AND MY FATHER JOSEPH + MY FATHER HAD A SMALL FACTORY AT COVENTRY WHICH HE ENLARGED AT THE TIME OF THE INVENTION OF BICYCLING + HE WAS A PATENTEE OF THE OPENSHAW UNBREAKABLE TIRE AND HIS BUSINESS MET WITH SUCH SUCCESS THAT HE WAS ABLE TO SELL IT AND TO RETIRE UPON A HANDSOME COMPETENCE + MY UNCLE ELIAS EMIGRATED TO AMERICA WHEN HE WAS A YOUNG MAN AND BECAME A PLANTER IN FLORIDA WHERE HE WAS REPORTED TO HAVE DONE VERY WELL + AT THE TIME OF THE WAR HE FOUGHT IN JACKSON'S ARMY AND AFTERWARDS UNDER HOOD WHERE HE ROSE TO BE A COLONEL + WHEN LEE LAID DOWN HIS ARMS MY UNCLE RETURNED TO HIS PLANTATION WHERE HE REMAINED FOR THREE OR FOUR YEARS + ABOUT ONE THOUSAND EIGHT HUNDRED SIXTY NINE OR ONE THOUSAND EIGHT HUNDRED SEVENTY HE CAME BACK TO EUROPE AND TOOK A SMALL ESTATE IN SUSSEX NEAR HORSHAM + HE HAD MADE A VERY CONSIDERABLE FORTUNE IN THE STATES AND HIS REASON FOR LEAVING THEM WAS HIS AVERSION TO THE NEGROES AND HIS DISLIKE OF THE REPUBLICAN POLICY IN EXTENDING THE FRANCHISE TO THEM + HE WAS A SINGULAR MAN FIERCE AND QUICK TEMPERED VERY FOUL MOUTHED WHEN HE WAS ANGRY AND OF A MOST RETIRING DISPOSITION + DURING ALL THE YEARS THAT HE LIVED AT HORSHAM I DOUBT IF EVER HE SET FOOT IN THE TOWN + HE HAD A GARDEN AND TWO OR THREE FIELDS ROUND HIS HOUSE AND THERE HE WOULD TAKE HIS EXERCISE THOUGH VERY OFTEN FOR WEEKS ON END HE WOULD NEVER LEAVE HIS ROOM + HE DRANK A GREAT DEAL OF BRANDY AND SMOKED VERY HEAVILY BUT HE WOULD SEE NO SOCIETY AND DID NOT WANT ANY FRIENDS NOT EVEN HIS OWN BROTHER + HE DIDN'T MIND ME IN FACT HE TOOK A FANCY TO ME FOR AT THE TIME WHEN HE SAW ME FIRST I WAS A YOUNGSTER OF TWELVE OR SO + THIS WOULD BE IN THE YEAR ONE THOUSAND EIGHT HUNDRED SEVENTY EIGHT AFTER HE HAD BEEN EIGHT OR NINE YEARS IN ENGLAND + HE BEGGED MY FATHER TO LET ME LIVE WITH HIM AND HE WAS VERY KIND TO ME IN HIS WAY + WHEN HE WAS SOBER HE USED TO BE FOND OF PLAYING BACKGAMMON AND DRAUGHTS WITH ME AND HE WOULD MAKE ME HIS REPRESENTATIVE BOTH WITH THE SERVANTS AND WITH THE TRADESPEOPLE SO THAT BY THE TIME THAT I WAS SIXTEEN I WAS QUITE MASTER OF THE HOUSE + I KEPT ALL THE KEYS AND COULD GO WHERE I LIKED AND DO WHAT I LIKED SO LONG AS I DID NOT DISTURB HIM IN HIS PRIVACY + THERE WAS ONE SINGULAR EXCEPTION HOWEVER FOR HE HAD A SINGLE ROOM A LUMBER ROOM UP AMONG THE ATTICS WHICH WAS INVARIABLY LOCKED AND WHICH HE WOULD NEVER PERMIT EITHER ME OR ANYONE ELSE TO ENTER + WITH A BOY'S CURIOSITY I HAVE PEEPED THROUGH THE KEYHOLE BUT I WAS NEVER ABLE TO SEE MORE THAN SUCH A COLLECTION OF OLD TRUNKS AND BUNDLES AS WOULD BE EXPECTED IN SUCH A ROOM + QUOTE ONE DAY IT WAS IN MARCH ONE THOUSAND EIGHT HUNDRED EIGHTY THREE A LETTER WITH A FOREIGN STAMP LAY UPON THE TABLE IN FRONT OF THE COLONEL'S PLATE + IT WAS NOT A COMMON THING FOR HIM TO RECEIVE LETTERS FOR HIS BILLS WERE ALL PAID IN READY MONEY AND HE HAD NO FRIENDS OF ANY SORT + FROM INDIA SAID HE AS HE TOOK IT UP PONDICHERRY POSTMARK + WHAT CAN THIS BE + OPENING IT HURRIEDLY OUT THERE JUMPED FIVE LITTLE DRIED ORANGE PIPS WHICH PATTERED DOWN UPON HIS PLATE + I BEGAN TO LAUGH AT THIS BUT THE LAUGH WAS STRUCK FROM MY LIPS AT THE SIGHT OF HIS FACE + HIS LIP HAD FALLEN HIS EYES WERE PROTRUDING HIS SKIN THE COLOUR OF PUTTY AND HE GLARED AT THE ENVELOPE WHICH HE STILL HELD IN HIS TREMBLING HAND K. K. K. HE SHRIEKED AND THEN MY GOD MY GOD MY SINS HAVE OVERTAKEN ME + WHAT IS IT UNCLE + I CRIED + DEATH SAID HE AND RISING FROM THE TABLE HE RETIRED TO HIS ROOM LEAVING ME PALPITATING WITH HORROR + I TOOK UP THE ENVELOPE AND SAW SCRAWLED IN RED INK UPON THE INNER FLAP JUST ABOVE THE GUM THE LETTER K. THREE TIMES REPEATED + THERE WAS NOTHING ELSE SAVE THE FIVE DRIED PIPS + WHAT COULD BE THE REASON OF HIS OVERPOWERING TERROR + I LEFT THE BREAKFAST TABLE AND AS I ASCENDED THE STAIR I MET HIM COMING DOWN WITH AN OLD RUSTY KEY WHICH MUST HAVE BELONGED TO THE ATTIC IN ONE HAND AND A SMALL BRASS BOX LIKE A CASHBOX IN THE OTHER + THEY MAY DO WHAT THEY LIKE BUT I'LL CHECKMATE THEM STILL SAID HE WITH AN OATH + TELL MARY THAT I SHALL WANT A FIRE IN MY ROOM TO DAY AND SEND DOWN TO FORDHAM THE HORSHAM LAWYER + I DID AS HE ORDERED AND WHEN THE LAWYER ARRIVED I WAS ASKED TO STEP UP TO THE ROOM + THE FIRE WAS BURNING BRIGHTLY AND IN THE GRATE THERE WAS A MASS OF BLACK FLUFFY ASHES AS OF BURNED PAPER WHILE THE BRASS BOX STOOD OPEN AND EMPTY BESIDE IT + AS I GLANCED AT THE BOX I NOTICED WITH A START THAT UPON THE LID WAS PRINTED THE TREBLE K. WHICH I HAD READ IN THE MORNING UPON THE ENVELOPE + I WISH YOU JOHN SAID MY UNCLE TO WITNESS MY WILL + I LEAVE MY ESTATE WITH ALL ITS ADVANTAGES AND ALL ITS DISADVANTAGES TO MY BROTHER YOUR FATHER WHENCE IT WILL NO DOUBT DESCEND TO YOU + IF YOU CAN ENJOY IT IN PEACE WELL AND GOOD + IF YOU FIND YOU CANNOT TAKE MY ADVICE MY BOY AND LEAVE IT TO YOUR DEADLIEST ENEMY + I AM SORRY TO GIVE YOU SUCH A TWO EDGED THING BUT I CAN'T SAY WHAT TURN THINGS ARE GOING TO TAKE + KINDLY SIGN THE PAPER WHERE MR. FORDHAM SHOWS YOU + QUOTE I SIGNED THE PAPER AS DIRECTED AND THE LAWYER TOOK IT AWAY WITH HIM + THE SINGULAR INCIDENT MADE AS YOU MAY THINK THE DEEPEST IMPRESSION UPON ME AND I PONDERED OVER IT AND TURNED IT EVERY WAY IN MY MIND WITHOUT BEING ABLE TO MAKE ANYTHING OF IT + YET I COULD NOT SHAKE OFF THE VAGUE FEELING OF DREAD WHICH IT LEFT BEHIND THOUGH THE SENSATION GREW LESS KEEN AS THE WEEKS PASSED AND NOTHING HAPPENED TO DISTURB THE USUAL ROUTINE OF OUR LIVES + I COULD SEE A CHANGE IN MY UNCLE HOWEVER + HE DRANK MORE THAN EVER AND HE WAS LESS INCLINED FOR ANY SORT OF SOCIETY + MOST OF HIS TIME HE WOULD SPEND IN HIS ROOM WITH THE DOOR LOCKED UPON THE INSIDE BUT SOMETIMES HE WOULD EMERGE IN A SORT OF DRUNKEN FRENZY AND WOULD BURST OUT OF THE HOUSE AND TEAR ABOUT THE GARDEN WITH A REVOLVER IN HIS HAND SCREAMING OUT THAT HE WAS AFRAID OF NO MAN AND THAT HE WAS NOT TO BE COOPED UP LIKE A SHEEP IN A PEN BY MAN OR DEVIL + WHEN THESE HOT FITS WERE OVER HOWEVER HE WOULD RUSH TUMULTUOUSLY IN AT THE DOOR AND LOCK AND BAR IT BEHIND HIM LIKE A MAN WHO CAN BRAZEN IT OUT NO LONGER AGAINST THE TERROR WHICH LIES AT THE ROOTS OF HIS SOUL + AT SUCH TIMES I HAVE SEEN HIS FACE EVEN ON A COLD DAY GLISTEN WITH MOISTURE AS THOUGH IT WERE NEW RAISED FROM A BASIN + WELL TO COME TO AN END OF THE MATTER MR. HOLMES AND NOT TO ABUSE YOUR PATIENCE THERE CAME A NIGHT WHEN HE MADE ONE OF THOSE DRUNKEN SALLIES FROM WHICH HE NEVER CAME BACK + WE FOUND HIM WHEN WE WENT TO SEARCH FOR HIM FACE DOWNWARD IN A LITTLE GREEN SCUMMED POOL WHICH LAY AT THE FOOT OF THE GARDEN + THERE WAS NO SIGN OF ANY VIOLENCE AND THE WATER WAS BUT TWO FEET DEEP SO THAT THE JURY HAVING REGARD TO HIS KNOWN ECCENTRICITY BROUGHT IN A VERDICT OF SUICIDE + BUT I WHO KNEW HOW HE WINCED FROM THE VERY THOUGHT OF DEATH HAD MUCH ADO TO PERSUADE MYSELF THAT HE HAD GONE OUT OF HIS WAY TO MEET IT + THE MATTER PASSED HOWEVER AND MY FATHER ENTERED INTO POSSESSION OF THE ESTATE AND OF SOME FOURTEEN THOUSAND POUNDS WHICH LAY TO HIS CREDIT AT THE BANK + ONE MOMENT HOLMES INTERPOSED YOUR STATEMENT IS I FORESEE ONE OF THE MOST REMARKABLE TO WHICH I HAVE EVER LISTENED + LET ME HAVE THE DATE OF THE RECEPTION BY YOUR UNCLE OF THE LETTER AND THE DATE OF HIS SUPPOSED SUICIDE + THE LETTER ARRIVED ON MARCH TENTH ONE THOUSAND EIGHT HUNDRED EIGHTY THREE + HIS DEATH WAS SEVEN WEEKS LATER UPON THE NIGHT OF MAY TWO D. QUOTE + THANK YOU + PRAY PROCEED + WHEN MY FATHER TOOK OVER THE HORSHAM PROPERTY HE AT MY REQUEST MADE A CAREFUL EXAMINATION OF THE ATTIC WHICH HAD BEEN ALWAYS LOCKED UP + WE FOUND THE BRASS BOX THERE ALTHOUGH ITS CONTENTS HAD BEEN DESTROYED + ON THE INSIDE OF THE COVER WAS A PAPER LABEL WITH THE INITIALS OF K. K. K. REPEATED UPON IT AND LETTERS MEMORANDA RECEIPTS AND A REGISTER WRITTEN BENEATH + THESE WE PRESUME INDICATED THE NATURE OF THE PAPERS WHICH HAD BEEN DESTROYED BY COLONEL OPENSHAW + FOR THE REST THERE WAS NOTHING OF MUCH IMPORTANCE IN THE ATTIC SAVE A GREAT MANY SCATTERED PAPERS AND NOTE BOOKS BEARING UPON MY UNCLE'S LIFE IN AMERICA + SOME OF THEM WERE OF THE WAR TIME AND SHOWED THAT HE HAD DONE HIS DUTY WELL AND HAD BORNE THE REPUTE OF A BRAVE SOLDIER + OTHERS WERE OF A DATE DURING THE RECONSTRUCTION OF THE SOUTHERN STATES AND WERE MOSTLY CONCERNED WITH POLITICS FOR HE HAD EVIDENTLY TAKEN A STRONG PART IN OPPOSING THE CARPET BAG POLITICIANS WHO HAD BEEN SENT DOWN FROM THE NORTH + WELL IT WAS THE BEGINNING OF EIGHTY FOUR WHEN MY FATHER CAME TO LIVE AT HORSHAM AND ALL WENT AS WELL AS POSSIBLE WITH US UNTIL THE JANUARY OF EIGHTY FIVE + ON THE FOURTH DAY AFTER THE NEW YEAR I HEARD MY FATHER GIVE A SHARP CRY OF SURPRISE AS WE SAT TOGETHER AT THE BREAKFAST TABLE + THERE HE WAS SITTING WITH A NEWLY OPENED ENVELOPE IN ONE HAND AND FIVE DRIED ORANGE PIPS IN THE OUTSTRETCHED PALM OF THE OTHER ONE + HE HAD ALWAYS LAUGHED AT WHAT HE CALLED MY COCK AND BULL STORY ABOUT THE COLONEL BUT HE LOOKED VERY SCARED AND PUZZLED NOW THAT THE SAME THING HAD COME UPON HIMSELF + WHY WHAT ON EARTH DOES THIS MEAN JOHN HE STAMMERED + QUOTE MY HEART HAD TURNED TO LEAD + IT IS K. K. K. SAID I + HE LOOKED INSIDE THE ENVELOPE + SO IT IS HE CRIED + HERE ARE THE VERY LETTERS + BUT WHAT IS THIS WRITTEN ABOVE THEM + PUT THE PAPERS ON THE SUNDIAL I READ PEEPING OVER HIS SHOULDER + WHAT PAPERS + WHAT SUNDIAL HE ASKED + THE SUNDIAL IN THE GARDEN + THERE IS NO OTHER SAID I BUT THE PAPERS MUST BE THOSE THAT ARE DESTROYED + POOH SAID HE GRIPPING HARD AT HIS COURAGE + WE ARE IN A CIVILIZED LAND HERE AND WE CAN'T HAVE TOMFOOLERY OF THIS KIND + WHERE DOES THE THING COME FROM + QUOTE FROM DUNDEE I ANSWERED GLANCING AT THE POSTMARK + SOME PREPOSTEROUS PRACTICAL JOKE SAID HE + WHAT HAVE I TO DO WITH SUNDIALS AND PAPERS + I SHALL TAKE NO NOTICE OF SUCH NONSENSE + I SHOULD CERTAINLY SPEAK TO THE POLICE I SAID + AND BE LAUGHED AT FOR MY PAINS + NOTHING OF THE SORT + THEN LET ME DO SO + NO I FORBID YOU + I WON'T HAVE A FUSS MADE ABOUT SUCH NONSENSE + QUOTE IT WAS IN VAIN TO ARGUE WITH HIM FOR HE WAS A VERY OBSTINATE MAN + I WENT ABOUT HOWEVER WITH A HEART WHICH WAS FULL OF FOREBODINGS + ON THE THIRD DAY AFTER THE COMING OF THE LETTER MY FATHER WENT FROM HOME TO VISIT AN OLD FRIEND OF HIS MAJOR FREEBODY WHO IS IN COMMAND OF ONE OF THE FORTS UPON PORTSDOWN HILL + I WAS GLAD THAT HE SHOULD GO FOR IT SEEMED TO ME THAT HE WAS FARTHER FROM DANGER WHEN HE WAS AWAY FROM HOME + IN THAT HOWEVER I WAS IN ERROR + UPON THE SECOND DAY OF HIS ABSENCE I RECEIVED A TELEGRAM FROM THE MAJOR IMPLORING ME TO COME AT ONCE + MY FATHER HAD FALLEN OVER ONE OF THE DEEP CHALK PITS WHICH ABOUND IN THE NEIGHBOURHOOD AND WAS LYING SENSELESS WITH A SHATTERED SKULL + I HURRIED TO HIM BUT HE PASSED AWAY WITHOUT HAVING EVER RECOVERED HIS CONSCIOUSNESS + HE HAD AS IT APPEARS BEEN RETURNING FROM FAREHAM IN THE TWILIGHT AND AS THE COUNTRY WAS UNKNOWN TO HIM AND THE CHALK PIT UNFENCED THE JURY HAD NO HESITATION IN BRINGING IN A VERDICT OF DEATH FROM ACCIDENTAL CAUSES + CAREFULLY AS I EXAMINED EVERY FACT CONNECTED WITH HIS DEATH I WAS UNABLE TO FIND ANYTHING WHICH COULD SUGGEST THE IDEA OF MURDER + THERE WERE NO SIGNS OF VIOLENCE NO FOOTMARKS NO ROBBERY NO RECORD OF STRANGERS HAVING BEEN SEEN UPON THE ROADS + AND YET I NEED NOT TELL YOU THAT MY MIND WAS FAR FROM AT EASE AND THAT I WAS WELL NIGH CERTAIN THAT SOME FOUL PLOT HAD BEEN WOVEN ROUND HIM + IN THIS SINISTER WAY I CAME INTO MY INHERITANCE + YOU WILL ASK ME WHY I DID NOT DISPOSE OF IT + I ANSWER BECAUSE I WAS WELL CONVINCED THAT OUR TROUBLES WERE IN SOME WAY DEPENDENT UPON AN INCIDENT IN MY UNCLE'S LIFE AND THAT THE DANGER WOULD BE AS PRESSING IN ONE HOUSE AS IN ANOTHER + IT WAS IN JANUARY EIGHTY FIVE THAT MY POOR FATHER MET HIS END AND TWO YEARS AND EIGHT MONTHS HAVE ELAPSED SINCE THEN + DURING THAT TIME I HAVE LIVED HAPPILY AT HORSHAM AND I HAD BEGUN TO HOPE THAT THIS CURSE HAD PASSED WAY FROM THE FAMILY AND THAT IT HAD ENDED WITH THE LAST GENERATION + I HAD BEGUN TO TAKE COMFORT TOO SOON HOWEVER YESTERDAY MORNING THE BLOW FELL IN THE VERY SHAPE IN WHICH IT HAD COME UPON MY FATHER + THE YOUNG MAN TOOK FROM HIS WAISTCOAT A CRUMPLED ENVELOPE AND TURNING TO THE TABLE HE SHOOK OUT UPON IT FIVE LITTLE DRIED ORANGE PIPS + THIS IS THE ENVELOPE HE CONTINUED + QUOTE THE POSTMARK IS LONDON EASTERN DIVISION + WITHIN ARE THE VERY WORDS WHICH WERE UPON MY FATHER'S LAST MESSAGE K. K. K. AND THEN PUT THE PAPERS ON THE SUNDIAL + WHAT HAVE YOU DONE ASKED HOLMES + NOTHING + NOTHING + TO TELL THE TRUTH HE SANK HIS FACE INTO HIS THIN WHITE HANDS I HAVE FELT HELPLESS + I HAVE FELT LIKE ONE OF THOSE POOR RABBITS WHEN THE SNAKE IS WRITHING TOWARDS IT + I SEEM TO BE IN THE GRASP OF SOME RESISTLESS INEXORABLE EVIL WHICH NO FORESIGHT AND NO PRECAUTIONS CAN GUARD AGAINST QUOTE + TUT TUT CRIED SHERLOCK HOLMES + YOU MUST ACT MAN OR YOU ARE LOST + NOTHING BUT ENERGY CAN SAVE YOU + THIS IS NO TIME FOR DESPAIR + I HAVE SEEN THE POLICE + AH + QUOTE BUT THEY LISTENED TO MY STORY WITH A SMILE + I AM CONVINCED THAT THE INSPECTOR HAS FORMED THE OPINION THAT THE LETTERS ARE ALL PRACTICAL JOKES AND THAT THE DEATHS OF MY RELATIONS WERE REALLY ACCIDENTS AS THE JURY STATED AND WERE NOT TO BE CONNECTED WITH THE WARNINGS + HOLMES SHOOK HIS CLENCHED HANDS IN THE AIR + INCREDIBLE IMBECILITY HE CRIED + THEY HAVE HOWEVER ALLOWED ME A POLICEMAN WHO MAY REMAIN IN THE HOUSE WITH ME + HAS HE COME WITH YOU TO NIGHT + NUMBER + HIS ORDERS WERE TO STAY IN THE HOUSE QUOTE + AGAIN HOLMES RAVED IN THE AIR + WHY DID YOU COME TO ME HE CRIED AND ABOVE ALL WHY DID YOU NOT COME AT ONCE + I DID NOT KNOW + IT WAS ONLY TO DAY THAT I SPOKE TO MAJOR PRENDERGAST ABOUT MY TROUBLES AND WAS ADVISED BY HIM TO COME TO YOU + IT IS REALLY TWO DAYS SINCE YOU HAD THE LETTER + WE SHOULD HAVE ACTED BEFORE THIS + YOU HAVE NO FURTHER EVIDENCE I SUPPOSE THAN THAT WHICH YOU HAVE PLACED BEFORE US NO SUGGESTIVE DETAIL WHICH MIGHT HELP US + QUOTE THERE IS ONE THING QUOTE SAID JOHN OPENSHAW + HE RUMMAGED IN HIS COAT POCKET AND DRAWING OUT A PIECE OF DISCOLOURED BLUETINTED PAPER HE LAID IT OUT UPON THE TABLE + I HAVE SOME REMEMBRANCE SAID HE THAT ON THE DAY WHEN MY UNCLE BURNED THE PAPERS I OBSERVED THAT THE SMALL UNBURNED MARGINS WHICH LAY AMID THE ASHES WERE OF THIS PARTICULAR COLOUR + I FOUND THIS SINGLE SHEET UPON THE FLOOR OF HIS ROOM AND I AM INCLINED TO THINK THAT IT MAY BE ONE OF THE PAPERS WHICH HAS PERHAPS FLUTTERED OUT FROM AMONG THE OTHERS AND IN THAT WAY HAS ESCAPED DESTRUCTION + BEYOND THE MENTION OF PIPS I DO NOT SEE THAT IT HELPS US MUCH + I THINK MYSELF THAT IT IS A PAGE FROM SOME PRIVATE DIARY + THE WRITING IS UNDOUBTEDLY MY UNCLE'S + HOLMES MOVED THE LAMP AND WE BOTH BENT OVER THE SHEET OF PAPER WHICH SHOWED BY ITS RAGGED EDGE THAT IT HAD INDEED BEEN TORN FROM A BOOK + IT WAS HEADED MARCH ONE THOUSAND EIGHT HUNDRED SIXTY NINE AND BENEATH WERE THE FOLLOWING ENIGMATICAL NOTICES FOURTH + HUDSON CAME + SAME OLD PLATFORM SEVENTH + SET THE PIPS ON MCCAULEY PARAMORE AND JOHN SWAIN OF SAINT AUGUSTINE NINTH + MCCAULEY CLEARED + ONE O. T. H. + JOHN SWAIN CLEARED TWELFTH + VISITED PARAMORE + ALL WELL + THANK YOU SAID HOLMES FOLDING UP THE PAPER AND RETURNING IT TO OUR VISITOR + AND NOW YOU MUST ON NO ACCOUNT LOSE ANOTHER INSTANT + WE CANNOT SPARE TIME EVEN TO DISCUSS WHAT YOU HAVE TOLD ME + YOU MUST GET HOME INSTANTLY AND ACT QUOTE + WHAT SHALL I DO + THERE IS BUT ONE THING TO DO + IT MUST BE DONE AT ONCE + YOU MUST PUT THIS PIECE OF PAPER WHICH YOU HAVE SHOWN US INTO THE BRASS BOX WHICH YOU HAVE DESCRIBED + YOU MUST ALSO PUT IN A NOTE TO SAY THAT ALL THE OTHER PAPERS WERE BURNED BY YOUR UNCLE AND THAT THIS IS THE ONLY ONE WHICH REMAINS + YOU MUST ASSERT THAT IN SUCH WORDS AS WILL CARRY CONVICTION WITH THEM + HAVING DONE THIS YOU MUST AT ONCE PUT THE BOX OUT UPON THE SUNDIAL AS DIRECTED + DO YOU UNDERSTAND + ENTIRELY + DO NOT THINK OF REVENGE OR ANYTHING OF THE SORT AT PRESENT + I THINK THAT WE MAY GAIN THAT BY MEANS OF THE LAW BUT WE HAVE OUR WEB TO WEAVE WHILE THEIRS IS ALREADY WOVEN + THE FIRST CONSIDERATION IS TO REMOVE THE PRESSING DANGER WHICH THREATENS YOU + THE SECOND IS TO CLEAR UP THE MYSTERY AND TO PUNISH THE GUILTY PARTIES QUOTE + I THANK YOU SAID THE YOUNG MAN RISING AND PULLING ON HIS OVERCOAT + YOU HAVE GIVEN ME FRESH LIFE AND HOPE + I SHALL CERTAINLY DO AS YOU ADVISE + DO NOT LOSE AN INSTANT + AND ABOVE ALL TAKE CARE OF YOURSELF IN THE MEANWHILE FOR I DO NOT THINK THAT THERE CAN BE A DOUBT THAT YOU ARE THREATENED BY A VERY REAL AND IMMINENT DANGER + HOW DO YOU GO BACK + BY TRAIN FROM WATERLOO + QUOTE IT IS NOT YET NINE + THE STREETS WILL BE CROWDED SO L. TRUST THAT YOU MAY BE IN SAFETY + AND YET YOU CANNOT GUARD YOURSELF TOO CLOSELY + I AM ARMED + THAT IS WELL + TO MORROW I SHALL SET TO WORK UPON YOUR CASE + I SHALL SEE YOU AT HORSHAM THEN + QUOTE NO YOUR SECRET LIES IN LONDON + IT IS THERE THAT I SHALL SEEK IT + THEN I SHALL CALL UPON YOU IN A DAY OR IN TWO DAYS WITH NEWS AS TO THE BOX AND THE PAPERS + I SHALL TAKE YOUR ADVICE IN EVERY PARTICULAR + HE SHOOK HANDS WITH US AND TOOK HIS LEAVE + OUTSIDE THE WIND STILL SCREAMED AND THE RAIN SPLASHED AND PATTERED AGAINST THE WINDOWS + THIS STRANGE WILD STORY SEEMED TO HAVE COME TO US FROM AMID THE MAD ELEMENTS BLOWN IN UPON US LIKE A SHEET OF SEA WEED IN A GALE AND NOW TO HAVE BEEN REABSORBED BY THEM ONCE MORE + SHERLOCK HOLMES SAT FOR SOME TIME IN SILENCE WITH HIS HEAD SUNK FORWARD AND HIS EYES BENT UPON THE RED GLOW OF THE FIRE + THEN HE LIT HIS PIPE AND LEANING BACK IN HIS CHAIR HE WATCHED THE BLUE SMOKE RINGS AS THEY CHASED EACH OTHER UP TO THE CEILING + I THINK WATSON HE REMARKED AT LAST THAT OF ALL OUR CASES WE HAVE HAD NONE MORE FANTASTIC THAN THIS + SAVE PERHAPS THE SIGN OF FOUR + QUOTE WELL YES + SAVE PERHAPS THAT + AND YET THIS JOHN OPENSHAW SEEMS TO ME TO BE WALKING AMID EVEN GREATER PERILS THAN DID THE SHOLTOS + BUT HAVE YOU I ASKED FORMED ANY DEFINITE CONCEPTION AS TO WHAT THESE PERILS ARE + THERE CAN BE NO QUESTION AS TO THEIR NATURE HE ANSWERED + THEN WHAT ARE THEY + WHO IS THIS K. K. K. AND WHY DOES HE PURSUE THIS UNHAPPY FAMILY + SHERLOCK HOLMES CLOSED HIS EYES AND PLACED HIS ELBOWS UPON THE ARMS OF HIS CHAIR WITH HIS FINGER TIPS TOGETHER + QUOTE THE IDEAL REASONER QUOTE HE REMARKED QUOTE WOULD WHEN HE HAD ONCE BEEN SHOWN A SINGLE FACT IN ALL ITS BEARINGS DEDUCE FROM IT NOT ONLY ALL THE CHAIN OF EVENTS WHICH LED UP TO IT BUT ALSO ALL THE RESULTS WHICH WOULD FOLLOW FROM IT + AS CUVIER COULD CORRECTLY DESCRIBE A WHOLE ANIMAL BY THE CONTEMPLATION OF A SINGLE BONE SO THE OBSERVER WHO HAS THOROUGHLY UNDERSTOOD ONE LINK IN A SERIES OF INCIDENTS SHOULD BE ABLE TO ACCURATELY STATE ALL THE OTHER ONES BOTH BEFORE AND AFTER + WE HAVE NOT YET GRASPED THE RESULTS WHICH THE REASON ALONE CAN ATTAIN TO + PROBLEMS MAY BE SOLVED IN THE STUDY WHICH HAVE BAFFLED ALL THOSE WHO HAVE SOUGHT A SOLUTION BY THE AID OF THEIR SENSES + TO CARRY THE ART HOWEVER TO ITS HIGHEST PITCH IT IS NECESSARY THAT THE REASONER SHOULD BE ABLE TO UTILIZE ALL THE FACTS WHICH HAVE COME TO HIS KNOWLEDGE AND THIS IN ITSELF IMPLIES AS YOU WILL READILY SEE A POSSESSION OF ALL KNOWLEDGE WHICH EVEN IN THESE DAYS OF FREE EDUCATION AND ENCYCLOPAEDIAS IS A SOMEWHAT RARE ACCOMPLISHMENT + IT IS NOT SO IMPOSSIBLE HOWEVER THAT A MAN SHOULD POSSESS ALL KNOWLEDGE WHICH IS LIKELY TO BE USEFUL TO HIM IN HIS WORK AND THIS I HAVE ENDEAVOURED IN MY CASE TO DO + IF I REMEMBER RIGHTLY YOU ON ONE OCCASION IN THE EARLY DAYS OF OUR FRIENDSHIP DEFINED MY LIMITS IN A VERY PRECISE FASHION + YES I ANSWERED LAUGHING + IT WAS A SINGULAR DOCUMENT + PHILOSOPHY ASTRONOMY AND POLITICS WERE MARKED AT ZERO I REMEMBER + BOTANY VARIABLE GEOLOGY PROFOUND AS REGARDS THE MUD STAINS FROM ANY REGION WITHIN FIFTY MILES OF TOWN CHEMISTRY ECCENTRIC ANATOMY UNSYSTEMATIC SENSATIONAL LITERATURE AND CRIME RECORDS UNIQUE VIOLIN PLAYER BOXER SWORDSMAN LAWYER AND SELF POISONER BY COCAINE AND TOBACCO + THOSE I THINK WERE THE MAIN POINTS OF MY ANALYSIS + HOLMES GRINNED AT THE LAST ITEM + WELL HE SAID I SAY NOW AS I SAID THEN THAT A MAN SHOULD KEEP HIS LITTLE BRAIN ATTIC STOCKED WITH ALL THE FURNITURE THAT HE IS LIKELY TO USE AND THE REST HE CAN PUT AWAY IN THE LUMBER ROOM OF HIS LIBRARY WHERE HE CAN GET IT IF HE WANTS IT + NOW FOR SUCH A CASE AS THE ONE WHICH HAS BEEN SUBMITTED TO US TO NIGHT WE NEED CERTAINLY TO MUSTER ALL OUR RESOURCES + KINDLY HAND ME DOWN THE LETTER K. OF THE AMERICAN ENCYCLOPAEDIA WHICH STANDS UPON THE SHELF BESIDE YOU + THANK YOU + NOW LET US CONSIDER THE SITUATION AND SEE WHAT MAY BE DEDUCED FROM IT + IN THE FIRST PLACE WE MAY START WITH A STRONG PRESUMPTION THAT COLONEL OPENSHAW HAD SOME VERY STRONG REASON FOR LEAVING AMERICA + MEN AT HIS TIME OF LIFE DO NOT CHANGE ALL THEIR HABITS AND EXCHANGE WILLINGLY THE CHARMING CLIMATE OF FLORIDA FOR THE LONELY LIFE OF AN ENGLISH PROVINCIAL TOWN + HIS EXTREME LOVE OF SOLITUDE IN ENGLAND SUGGESTS THE IDEA THAT HE WAS IN FEAR OF SOMEONE OR SOMETHING SO WE MAY ASSUME AS A WORKING HYPOTHESIS THAT IT WAS FEAR OF SOMEONE OR SOMETHING WHICH DROVE HIM FROM AMERICA + AS TO WHAT IT WAS HE FEARED WE CAN ONLY DEDUCE THAT BY CONSIDERING THE FORMIDABLE LETTERS WHICH WERE RECEIVED BY HIMSELF AND HIS SUCCESSORS + DID YOU REMARK THE POSTMARKS OF THOSE LETTERS QUOTE + THE FIRST WAS FROM PONDICHERRY THE SECOND FROM DUNDEE AND THE THIRD FROM LONDON + FROM EAST LONDON + WHAT DO YOU DEDUCE FROM THAT + THEY ARE ALL SEAPORTS + THAT THE WRITER WAS ON BOARD OF A SHIP + QUOTE EXCELLENT + WE HAVE ALREADY A CLUE + THERE CAN BE NO DOUBT THAT THE PROBABILITY THE STRONG PROBABILITY IS THAT THE WRITER WAS ON BOARD OF A SHIP + AND NOW LET US CONSIDER ANOTHER POINT + IN THE CASE OF PONDICHERRY SEVEN WEEKS ELAPSED BETWEEN THE THREAT AND ITS FULFILLMENT IN DUNDEE IT WAS ONLY SOME THREE OR FOUR DAYS + DOES THAT SUGGEST ANYTHING + A GREATER DISTANCE TO TRAVEL + BUT THE LETTER HAD ALSO A GREATER DISTANCE TO COME + THEN I DO NOT SEE THE POINT + THERE IS AT LEAST A PRESUMPTION THAT THE VESSEL IN WHICH THE MAN OR MEN ARE IS A SAILING SHIP + IT LOOKS AS IF THEY ALWAYS SENI THEIR SINGULAR WARNING OR TOKEN BEFORE THEM WHEN STARTING UPON THEIR MISSION + YOU SEE HOW QUICKLY THE DEED FOLLOWED THE SIGN WHEN IT CAME FROM DUNDEE + IF THEY HAD COME FROM PONDICHERRY IN A STEAMER THEY WOULD HAVE ARRIVED ALMOST AS SOON AS THEIR LETTER + BUT AS A MATTER OF FACT SEVEN WEEKS ELAPSED + I THINK THAT THOSE SEVEN WEEKS REPRESENTED THE DIFFERENCE BETWEEN THE MAILBOAT WHICH BROUGHT THE LETTER AND THE SAILING VESSEL WHICH BROUGHT THE WRITER QUOTE + IT IS POSSIBLE + MORE THAN THAT + IT IS PROBABLE + AND NOW YOU SEE THE DEADLY URGENCY OF THIS NEW CASE AND WHY I URGED YOUNG OPENSHAW TO CAUTION + THE BLOW HAS ALWAYS FALLEN AT THE END OF THE TIME WHICH IT WOULD TAKE THE SENDERS TO TRAVEL THE DISTANCE + BUT THIS ONE COMES FROM LONDON AND THEREFORE WE CANNOT COUNT UPON DELAY + GOOD GOD + I CRIED + WHAT CAN IT MEAN THIS RELENTLESS PERSECUTION + QUOTE THE PAPERS WHICH OPENSHAW CARRIED ARE OBVIOUSLY OF VITAL IMPORTANCE TO THE PERSON OR PERSONS IN THE SAILING SHIP + I THINK THAT IT IS QUITE CLEAR THAT THERE MUST BE MORE THAN ONE OF THEM + A SINGLE MAN COULD NOT HAVE CARRIED OUT TWO DEATHS IN SUCH A WAY AS TO DECEIVE A CORONER'S JURY + THERE MUST HAVE BEEN SEVERAL IN IT AND THEY MUST HAVE BEEN MEN OF RESOURCE AND DETERMINATION + THEIR PAPERS THEY MEAN TO HAVE BE THE HOLDER OF THEM WHO IT MAY + IN THIS WAY YOU SEE K. K. K. CEASES TO BE THE INITIALS OF AN INDIVIDUAL AND BECOMES THE BADGE OF A SOCIETY + BUT OF WHAT SOCIETY + HAVE YOU NEVER SAID SHERLOCK HOLMES BENDING FORWARD AND SINKING HIS VOICE HAVE YOU NEVER HEARD OF THE KU KLUX KLAN + I NEVER HAVE + HOLMES TURNED OVER THE LEAVES OF THE BOOK UPON HIS KNEE + HERE IT IS SAID HE PRESENTLY KU KLUX KLAN + A NAME DERIVED FROM THE FANCIFUL RESEM BLANCE TO THE SOUND PRODUCED BY COCKING A RIFLE + THIS TERRIBLE SECRET SOCIETY WAS FORMED BY SOME EX CONFEDERATE SOLDIERS IN THE SOUTHERN STATES AFTER THE CIVIL WAR AND IT RAPIDLY FORMED LOCAL BRANCHES IN DIFFERENT PARTS OF THE COUNTRY NOTABLY IN TENNESSEE LOUISIANA THE CAROLINAS GEORGIA AND FLORIDA + ITS POWER WAS USED FOR POLITICAL PURPOSES PRINCIPALLY FOR THE TERRORIZING OF THE NEGRO VOT ERS AND THE MURDERING AND DRIVING FROM THE COUNTRY OF THOSE WHO WERE OPPOSED TO ITS VIEWS + ITS OUTRAGES WERE USUALLY PRECEDED BY A WARNING SENT TO THE MARKED MAN IN SOME FANTASTIC BUT GENERALLY RECOGNIZED SHAPE A SPRIG OF OAK LEAVES IN SOME PARTS MELON SEEDS OR ORANGE PIPS IN OTHERS + ON RECEIVING THIS THE VICTIM MIGHT EITHER OPENLY ABJURE HIS FORMER WAYS OR MIGHT FLY FROM THE COUNTRY + IF HE BRAVED THE MATTER OUT DEATH WOULD UNFAILINGLY COME UPON HIM AND USUALLY IN SOME STRANGE AND UNFORESEEN MANNER + SO PERFECT WAS THE ORGANIZATION OF THE SOCIETY AND SO SYSTEMATIC ITS METHODS THAT THERE IS HARDLY A CASE UPON RECORD WHERE ANY MAN SUCCEEDED IN BRAVING IT WITH IMPUNITY OR IN WHICH ANY OF ITS OUTRAGES WERE TRACED HOME TO THE PERPETRATORS + FOR SOME YEARS THE ORGANIZATION FLOURISHED IN SPITE OF THE EFFORTS OF THE UNITED STATES GOVERNMENT AND OF THE BETTER CLASSES OF THE COMMUNITY IN THE SOUTH + EVENTUALLY IN THE YEAR ONE THOUSAND EIGHT HUNDRED SIXTY NINE THE MOVEMENT RATHER SUDDENLY COLLAPSED ALTHOUGH THERE HAVE BEEN S. P. O. RADIC OUTBREAKS OF THE SAME SORT SINCE THAT DATE + QUOTE YOU WILL OBSERVE QUOTE SAID HOLMES LAYING DOWN THE VOLUME QUOTE THAT THE SUDDEN BREAKING UP OF THE SOCIETY WAS COINCIDENT WITH THE DISAPPEARANCE OF OPENSHAW FROM AMERICA WITH THEIR PAPERS + IT MAY WELL HAVE BEEN CAUSE AND EFFECT + IT IS NO WONDER THAT HE AND HIS FAMILY HAVE SOME OF THE MORE IMPLACABLE SPIRITS UPON THEIR TRACK + YOU CAN UNDERSTAND THAT THIS REGISTER AND DIARY MAY IMPLICATE SOME OF THE FIRST MEN IN THE SOUTH AND THAT THERE MAY BE MANY WHO WILL NOT SLEEP EASY AT NIGHT UNTIL IT IS RECOVERED + IS SUCH AS WE MIGHT EXPECT + IT RAN IF I REMEMBER RIGHT SENT THE PIPS TO A B. AND C. THAT IS SENT THE SOCIETY'S WARNING TO THEM + THEN THERE ARE SUCCESSIVE ENTRIES THAT A AND B. CLEARED OR LEFT THE COUNTRY AND FINALLY THAT C. WAS VISITED WITH I FEAR A SINISTER RESULT FOR C. WELL I THINK DOCTOR THAT WE MAY LET SOME LIGHT INTO THIS DARK PLACE AND I BELIEVE THAT THE ONLY CHANCE YOUNG OPENSHAW HAS IN THE MEANTIME IS TO DO WHAT I HAVE TOLD HIM + THERE IS NOTHING MORE TO BE SAID OR TO BE DONE TO NIGHT SO HAND ME OVER MY VIOLIN AND LET US TRY TO FORGET FOR HALF AN HOUR THE MISERABLE WEATHER AND THE STILL MORE MISERABLE WAYS OF OUR FELLOWMEN + IT HAD CLEARED IN THE MORNING AND THE SUN WAS SHINING WITH A SUBDUED BRIGHTNESS THROUGH THE DIM VEIL WHICH HANGS OVER THE GREAT CITY + SHERLOCK HOLMES WAS ALREADY AT BREAKFAST WHEN I CAME DOWN + YOU WILL EXCUSE ME FOR NOT WAITING FOR YOU SAID HE I HAVE I FORESEE A VERY BUSY DAY BEFORE ME IN LOOKING INTO THIS CASE OF YOUNG OPENSHAW'S + WHAT STEPS WILL YOU TAKE + I ASKED + QUOTE IT WILL VERY MUCH DEPEND UPON THE RESULTS OF MY FIRST INQUIRIES + I MAY HAVE TO GO DOWN TO HORSHAM AFTER ALL + YOU WILL NOT GO THERE FIRST + NO I SHALL COMMENCE WITH THE CITY + JUST RING THE BELL AND THE MAID WILL BRING UP YOUR COFFEE + AS I WAITED I LIFTED THE UNOPENED NEWSPAPER FROM THE TABLE AND GLANCED MY EYE OVER IT + IT RESTED UPON A HEADING WHICH SENT A CHILL TO MY HEART + HOLMES I CRIED YOU ARE TOO LATE + QUOTE AH QUOTE SAID HE LAYING DOWN HIS CUP QUOTE I FEARED AS MUCH + HOW WAS IT DONE + HE SPOKE CALMLY BUT I COULD SEE THAT HE WAS DEEPLY MOVED + MY EYE CAUGHT THE NAME OF OPENSHAW AND THE HEADING TRAGEDY NEAR WATERLOO BRIDGE + HERE IS THE ACCOUNT BETWEEN NINE AND TEN LAST NIGHT POLICE CONSTABLE COOK OF THE H. DIVISION ON DUTY NEAR WATERLOO BRIDGE HEARD A CRY FOR HELP AND A SPLASH IN THE WATER + THE NIGHT HOWEVER WAS EXTREMELY DARK AND STORMY SO THAT IN SPITE OF THE HELP OF SEVERAL PASSERS BY IT WAS QUITE IMPOSSIBLE TO EFFECT A RESCUE + THE ALARM HOWEVER WAS GIVEN AND BY THE AID OF THE WATER POLICE THE BODY WAS EVENTUALLY RECOVERED + IT PROVED TO BE THAT OF A YOUNG GENTLEMAN WHOSE NAME AS IT APPEARS FROM AN ENVELOPE WHICH WAS FOUND IN HIS POCKET WAS JOHN OPENSHAW AND WHOSE RESIDENCE IS NEAR HORSHAM + IT IS CONJECTURED THAT HE MAY HAVE BEEN HURRYING DOWN TO CATCH THE LAST TRAIN FROM WATERLOO STATION AND THAT IN HIS HASTE AND THE EXTREME DARKNESS HE MISSED HIS PATH AND WALKED OVER THE EDGE OF ONE OF THE SMALL LANDING PLACES FOR RIVER STEAMBOATS + THE BODY EXHIBITED NO TRACES OF VIOLENCE AND THERE CAN BE NO DOUBT THAT THE DECEASED HAD BEEN THE VICTIM OF AN UNFORTUNATE ACCIDENT WHICH SHOULD HAVE THE EFFECT OF CALLING THE ATTENTION OF THE AUTHORITIES TO THE CONDI TION OF THE RIVERSIDE LANDING STAGES + WE SAT IN SILENCE FOR SOME MINUTES HOLMES MORE DEPRESSED AND SHAKEN THAN I HAD EVER SEEN HIM + THAT HURTS MY PRIDE WATSON HE SAID AT LAST + QUOTE IT IS A PETTY FEELING NO DOUBT BUT IT HURTS MY PRIDE + IT BECOMES A PERSONAL MATTER WITH ME NOW AND IF GOD SENDS ME HEALTH I SHALL SET MY HAND UPON THIS GANG + THAT HE SHOULD COME TO ME FOR HELP AND THAT I SHOULD SEND HIM AWAY TO HIS DEATH + HE SPRANG FROM HIS CHAIR AND PACED ABOUT THE ROOM IN UNCONTROLLABLE AGITATION WITH A FLUSH UPON HIS SALLOW CHEEKS AND A NERVOUS CLASPING AND UNCLASPING OF HIS LONG THIN HANDS + THEY MUST BE CUNNING DEVILS HE EXCLAIMED AT LAST + HOW COULD THEY HAVE DECOYED HIM DOWN THERE + THE EMBANKMENT IS NOT ON THE DIRECT LINE TO THE STATION + THE BRIDGE NO DOUBT WAS TOO CROWDED EVEN ON SUCH A NIGHT FOR THEIR PURPOSE + WELL WATSON WE SHALL SEE WHO WILL WIN IN THE LONG RUN + I AM GOING OUT NOW + TO THE POLICE + QUOTE NO I SHALL BE MY OWN POLICE + WHEN I HAVE SPUN THE WEB THEY MAY TAKE THE FLIES BUT NOT BEFORE + ALL DAY I WAS ENGAGED IN MY PROFESSIONAL WORK AND IT WAS LATE IN THE EVENING BEFORE I RETURNED TO BAKER STREET + SHERLOCK HOLMES HAD NOT COME BACK YET + IT WAS NEARLY TEN O'CLOCK BEFORE HE ENTERED LOOKING PALE AND WORN + HE WALKED UP TO THE SIDEBOARD AND TEARING A PIECE FROM THE LOAF HE DEVOURED IT VORACIOUSLY WASHING IT DOWN WITH A LONG DRAUGHT OF WATER + YOU ARE HUNGRY I REMARKED + STARVING + IT HAD ESCAPED MY MEMORY + I HAVE HAD NOTHING SINCE BREAKFAST + NOTHING + QUOTE NOT A BITE + I HAD NO TIME TO THINK OF IT + AND HOW HAVE YOU SUCCEEDED + WELL + YOU HAVE A CLUE + I HAVE THEM IN THE HOLLOW OF MY HAND + YOUNG OPENSHAW SHALL NOT LONG REMAIN UNAVENGED + WHY WATSON LET US PUT THEIR OWN DEVILISH TRADE MARK UPON THEM + IT IS WELL THOUGHT OF QUOTE + WHAT DO YOU MEAN + HE TOOK AN ORANGE FROM THE CUPBOARD AND TEARING IT TO PIECES HE SQUEEZED OUT THE PIPS UPON THE TABLE + OF THESE HE TOOK FIVE AND THRUST THEM INTO AN ENVELOPE + ON THE INSIDE OF THE FLAP HE WROTE S. H. FOR J. ZERO + THEN HE SEALED IT AND ADDRESSED IT TO CAPTAIN JAMES CALHOUN BARK LONE STAR SAVANNAH GEORGIA + THAT WILL AWAIT HIM WHEN HE ENTERS PORT SAID HE CHUCKLING + IT MAY GIVE HIM A SLEEPLESS NIGHT + HE WILL FIND IT AS SURE A PRECURSOR OF HIS FATE AS OPENSHAW DID BEFORE HIM QUOTE + AND WHO IS THIS CAPTAIN CALHOUN + THE LEADER OF THE GANG + I SHALL HAVE THE OTHERS BUT HE FIRST + HOW DID YOU TRACE IT THEN + HE TOOK A LARGE SHEET OF PAPER FROM HIS POCKET ALL COVERED WITH DATES AND NAMES + I HAVE SPENT THE WHOLE DAY SAID HE OVER LLOYD'S REGISTERS AND FILES OF THE OLD PAPERS FOLLOWING THE FUTURE CAREER OF EVERY VESSEL WHICH TOUCHED AT PONDICHERRY IN JANUARY AND FEBRUARY IN EIGHTY THREE + THERE WERE THIRTY SIX SHIPS OF FAIR TONNAGE WHICH WERE REPORTED THERE DURING THOSE MONTHS + OF THESE ONE THE LONE STAR INSTANTLY ATTRACTED MY ATTENTION SINCE ALTHOUGH IT WAS REPORTED AS HAVING CLEARED FROM LONDON THE NAME IS THAT WHICH IS GIVEN TO ONE OF THE STATES OF THE UNION QUOTE + TEXAS I THINK + I WAS NOT AND AM NOT SURE WHICH BUT I KNEW THAT THE SHIP MUST HAVE AN AMERICAN ORIGIN + WHAT THEN + I SEARCHED THE DUNDEE RECORDS AND WHEN I FOUND THAT THE BARK LONE STAR WAS THERE IN JANUARY EIGHTY FIVE MY SUSPICION BECAME A CERTAINTY + I THEN INQUIRED AS TO THE VESSELS WHICH LAY AT PRESENT IN THE PORT OF LONDON + QUOTE YES QUOTE + THE LONE STAR HAD ARRIVED HERE LAST WEEK + I WENT DOWN TO THE ALBERT DOCK AND FOUND THAT SHE HAD BEEN TAKEN DOWN THE RIVER BY THE EARLY TIDE THIS MORNING HOMEWARD BOUND TO SAVANNAH + I WIRED TO GRAVESEND AND LEARNED THAT SHE HAD PASSED SOME TIME AGO AND AS THE WIND IS EASTERLY I HAVE NO DOUBT THAT SHE IS NOW PAST THE GOODWINS AND NOT VERY FAR FROM THE ISLE OF WIGHT + WHAT WILL YOU DO THEN + OH I HAVE MY HAND UPON HIM + HE AND THE TWO MATES ARE AS I LEARN THE ONLY NATIVE BORN AMERICANS IN THE SHIP + THE OTHERS ARE FINNS AND GERMANS + I KNOW ALSO THAT THEY WERE ALL THREE AWAY FROM THE SHIP LAST NIGHT + I HAD IT FROM THE STEVEDORE WHO HAS BEEN LOADING THEIR CARGO + BY THE TIME THAT THEIR SAILING SHIP REACHES SAVANNAH THE MAIL BOAT WILL HAVE CARRIED THIS LETTER AND THE CABLE WILL HAVE INFORMED THE POLICE OF SAVANNAH THAT THESE THREE GENTLEMEN ARE BADLY WANTED HERE UPON A CHARGE OF MURDER + THERE IS EVER A FLAW HOWEVER IN THE BEST LAID OF HUMAN PLANS AND THE MURDERERS OF JOHN OPENSHAW WERE NEVER TO RECEIVE THE ORANGE PIPS WHICH WOULD SHOW THEM THAT ANOTHER AS CUNNING AND AS RESOLUTE AS THEMSELVES WAS UPON THEIR TRACK + VERY LONG AND VERY SEVERE WERE THE EQUINOCTIAL GALES THAT YEAR + WE WAITED LONG FOR NEWS OF THE LONE STAR OF SAVANNAH BUT NONE EVER REACHED US + WE DID AT LAST HEAR THAT SOMEWHERE FAR OUT IN THE ATLANTIC A SHATTERED STERN POST OF THE BOAT WAS SEEN SWINGING IN THE TROUGH OF A WAVE WITH THE LETTERS QUOTE L. S. QUOTE CARVED UPON IT AND THAT IS ALL WHICH WE SHALL EVER KNOW OF THE FATE OF THE LONE STAR diff --git a/samples/LMTutorial/train/gloria_scott.txt b/samples/LMTutorial/train/gloria_scott.txt new file mode 100755 index 0000000..807f8d6 --- /dev/null +++ b/samples/LMTutorial/train/gloria_scott.txt @@ -0,0 +1,408 @@ + QUOTE I HAVE SOME PAPERS HERE QUOTE SAID MY FRIEND SHERLOCK HOLMES AS WE SAT ONE WINTER'S NIGHT ON EITHER SIDE OF THE FIRE QUOTE WHICH I REALLY THINK WATSON THAT IT WOULD BE WORTH YOUR WHILE TO GLANCE OVER + THESE ARE THE DOCUMENTS IN THE EXTRAORDINARY CASE OF THE GLORIA SCOTT AND THIS IS THE MESSAGE WHICH STRUCK JUSTICE OF THE PEACE TREVOR DEAD WITH HORROR WHEN HE READ IT + HE HAD PICKED FROM A DRAWER A LITTLE TARNISHED CYLINDER AND. UNDOING THE TAPE HE HANDED ME A SHORT NOTE SCRAWLED UPON A HALF SHEET OF SLATE GRAY PAPER + THE SUPPLY OF GAME FOR LONDON IS GOING STEADILY UP ONE SLASH TWO I. T. RAN + HEAD KEEPER HUDSON WE BELIEVE HAS BEEN NOW TOLD TO RECEIVE ALL ORDERS FOR FLY PAPER AND FOR PRESERVATION OF YOUR HEN PHEASANT'S LIFE + AS I GLANCED UP FROM READING THIS ENIGMATICAL MESSAGE I SAW HOLMES CHUCKLING AT THE EXPRESSION UPON MY FACE + YOU LOOK A LITTLE BEWILDERED SAID HE + I CANNOT SEE HOW SUCH A MESSAGE AS THIS COULD INSPIRE HORROR + IT SEEMS TO ME TO BE RATHER GROTESQUE THAN OTHERWISE + VERY LIKELY + YET THE FACT REMAINS THAT THE READER WHO WAS A FINE ROBUST OLD MAN WAS KNOCKED CLEAN DOWN BY IT AS IF IT HAD BEEN THE BUTT END OF A PISTOL QUOTE + YOU AROUSE MY CURIOSITY SAID I. BUT WHY DID YOU SAY JUST NOW THAT THERE WERE VERY PARTICULAR REASONS WHY I SHOULD STUDY THIS CASE + BECAUSE IT WAS THE FIRST IN WHICH I WAS EVER ENGAGED + I HAD OFTEN ENDEAVOURED TO ELICIT FROM MY COMPANION WHAT HAD FIRST TURNED HIS MIND IN THE DIRECTION OF CRIMINAL RESEARCH BUT HAD NEVER CAUGHT HIM BEFORE IN A COMMUNICATIVE HUMOUR + NOW HE SAT FORWARD IN HIS ARMCHAIR AND SPREAD OUT THE DOCUMENTS UPON HIS KNEES + THEN HE LIT HIS PIPE AND SAT FOR SOME TIME SMOKING AND TURNING THEM OVER + YOU NEVER HEARD ME TALK OF VICTOR TREVOR HE ASKED + HE WAS THE ONLY FRIEND I MADE DURING THE TWO YEARS I WAS AT COLLEGE + I WAS NEVER A VERY SOCIABLE FELLOW WATSON ALWAYS RATHER FOND OF MOPING IN MY ROOMS AND WORKING OUT MY OWN LITTLE METHODS OF THOUGHT SO THAT I NEVER MIXED MUCH WITH THE MEN OF MY YEAR + BAR FENCING AND BOXING I HAD FEW ATHLETIC TASTES AND THEN MY LINE OF STUDY WAS QUITE DISTINCT FROM THAT OF THE OTHER FELLOWS SO THAT WE HAD NO POINTS OF CONTACT AT ALL + TREVOR WAS THE ONLY MAN I KNEW AND THAT ONLY THROUGH THE ACCIDENT OF HIS BULL TERRIER FREEZING ON TO MY ANKLE ONE MORNING AS I WENT DOWN TO CHAPEL + IT WAS A PROSAIC WAY OF FORMING A FRIENDSHIP BUT IT WAS EFFECTIVE + I WAS LAID BY THE HEELS FOR TEN DAYS AND TREVOR USED TO COME IN TO INQUIRE AFTER ME + AT FIRST IT WAS ONLY A MINUTE'S CHAT BUT SOON HIS VISITS LENGTHENED AND BEFORE THE END OF THE TERM WE WERE CLOSE FRIENDS + HE WAS A HEARTY FULL BLOODED FELLOW FULL OF SPIRITS AND ENERGY THE VERY OPPOSITE TO ME IN MOST RESPECTS BUT WE HAD SOME SUBJECTS IN COMMON AND IT WAS A BOND OF UNION WHEN I FOUND THAT HE WAS AS FRIENDLESS AS I. FINALLY HE INVITED ME DOWN TO HIS FATHER'S PLACE AT DONNITHORPE IN NORFOLK AND I ACCEPTED HIS HOSPITALITY FOR A MONTH OF THE LONG VACATION + QUOTE OLD TREVOR WAS EVIDENTLY A MAN OF SOME WEALTH AND CONSIDERATION A J. P. AND A LANDED PROPRIETOR + DONNITHORPE IS A LITTLE HAMLET JUST TO THE NORTH OF LANGMERE IN THE COUNTRY OF THE BROADS + THE HOUSE WAS AN OLD FASHIONED WIDESPREAD OAK BEAMED BRICK BUILDING WITH A FINE LIME LINED AVENUE LEADING UP TO IT + THERE WAS EXCELLENT WILD DUCK SHOOTING IN THE FENS REMARKABLY GOOD FISHING A SMALL BUT SELECT LIBRARY TAKEN OVER AS I UNDERSTOOD FROM A FORMER OCCUPANT AND A TOLERABLE COOK SO THAT HE WOULD BE A FASTIDIOUS MAN WHO COULD NOT PUT IN A PLEASANT MONTH THERE + TREVOR SENIOR WAS A WIDOWER AND MY FRIEND HIS ONLY SON + THERE HAD BEEN A DAUGHTER I HEARD BUT SHE HAD DIED OF DIPHTHERIA WHILE ON A VISIT TO BIRMINGHAM + THE FATHER INTERESTED ME EXTREMELY + HE WAS A MAN OF LITTLE CULTURE BUT WITH A CONSIDERABLE AMOUNT OF RUDE STRENGTH BOTH PHYSICALLY AND MENTALLY + HE KNEW HARDLY ANY BOOKS BUT HE HAD TRAVELLED FAR HAD SEEN MUCH OF THE WORLD AND HAD REMEMBERED ALL THAT HE HAD LEARNED + IN PERSON HE WAS A THICK SET BURLY MAN WITH A SHOCK OF GRIZZLED HAIR A BROWN WEATHER BEATEN FACE AND BLUE EYES WHICH WERE KEEN TO THE VERGE OF FIERCENESS + YET HE HAD A REPUTATION FOR KINDNESS AND CHARITY ON THE COUNTRYSIDE AND WAS NOTED FOR THE LENIENCY OF HIS SENTENCES FROM THE BENCH + ONE EVENING SHORTLY AFTER MY ARRIVAL WE WERE SITTING OVER A GLASS OF PORT AFTER DINNER WHEN YOUNG TREVOR BEGAN TO TALK ABOUT THOSE HABITS OF OBSERVATION AND INFERENCE WHICH I HAD ALREADY FORMED INTO A SYSTEM ALTHOUGH I HAD NOT YET APPRECIATED THE PART WHICH THEY WERE TO PLAY IN MY LIFE + THE OLD MAN EVIDENTLY THOUGHT THAT HIS SON WAS EXAGGERATING IN HIS DESCRIPTION OF ONE OR TWO TRIVIAL FEATS WHICH I HAD PERFORMED + COME NOW MR. HOLMES SAID HE LAUGHING GOODHUMOUREDLY + I'M AN EXCELLENT SUBJECT IF YOU CAN DEDUCE ANYTHING FROM ME + I FEAR THERE IS NOT VERY MUCH I ANSWERED + I MIGHT SUGGEST THAT YOU HAVE GONE ABOUT IN FEAR OF SOME PERSONAL ATTACK WITHIN THE LAST TWELVEMONTH + QUOTE THE LAUGH FADED FROM HIS LIPS AND HE STARED AT ME IN GREAT SURPRLSE + WELL THAT'S TRUE ENOUGH SAID HE + YOU KNOW VICTOR TURNING TO HIS SON WHEN WE BROKE UP THAT POACHING GANG THEY SWORE TO KNIFE US AND SIR EDWARD HOLLY HAS ACTUALLY BEEN ATTACKED + I'VE ALWAYS BEEN ON MY GUARD SINCE THEN THOUGH I HAVE NO IDEA HOW YOU KNOW IT + YOU HAVE A VERY HANDSOME STICK I ANSWERED + BY THE INSCRIPTION I OBSERVED THAT YOU HAD NOT HAD IT MORE THAN A YEAR + BUT YOU HAVE TAKEN SOME PAINS TO BORE THE HEAD OF IT AND POUR MELTED LEAD INTO THE HOLE SO AS TO MAKE IT A FORMIDABLE WEAPON + I ARGUED THAT YOU WOULD NOT TAKE SUCH PRECAUTIONS UNLESS YOU HAD SOME DANGER TO FEAR + ANYTHING ELSE HE ASKED SMILING + YOU HAVE BOXED A GOOD DEAL IN YOUR YOUTH + RIGHT AGAIN + HOW DID YOU KNOW IT + IS MY NOSE KNOCKED A LITTLE OUT OF THE STRAIGHT + QUOTE NO SAID I. IT IS YOUR EARS + THEY HAVE THE PECULIAR FLATTENING AND THICKENING WHICH MARKS THE BOXING MAN + ANYTHING ELSE + YOU HAVE DONE A GOOD DEAL OF DIGGING BY YOUR CALLOSITIES + MADE ALL MY MONEY AT THE GOLD FIELDS + YOU HAVE BEEN IN NEW ZEALAND + RIGHT AGAIN + QUOTE YOU HAVE VISITED JAPAN + QUITE TRUE + AND YOU HAVE BEEN MOST INTIMATELY ASSOCIATED WITH SOMEONE WHOSE INITIALS WERE J. A. AND WHOM YOU AFTERWARDS WERE EAGER TO ENTIRELY FORGET + MR. TREVOR STOOD SLOWLY UP FIXED HIS LARGE BLUE EYES UPON ME WITH A STRANGE WILD STARE AND THEN PITCHED FORWARD WITH HIS FACE AMONG THE NUTSHELLS WHICH STREWED THE CLOTH IN A DEAD FAINT + YOU CAN IMAGINE WATSON HOW SHOCKED BOTH HIS SON AND I WERE + HIS ATTACK DID NOT LAST LONG HOWEVER FOR WHEN WE UNDID HIS COLLAR AND SPRINKLED THE WATER FROM ONE OF THE FINGER GLASSES OVER HIS FACE HE GAVE A GASP OR TWO AND SAT UP + AH BOYS SAID HE FORCING A SMILE I HOPE I HAVEN'T FRIGHTENED YOU + STRONG AS I LOOK THERE IS A WEAK PLACE IN MY HEART AND IT DOES NOT TAKE MUCH TO KNOCK ME OVER + I DON'T KNOW HOW YOU MANAGE THIS MR. HOLMES BUT IT SEEMS TO ME THAT ALL THE DETECTIVES OF FACT AND OF FANCY WOULD BE CHILDREN IN YOUR HANDS + THAT'S YOUR LINE OF LIFE SIR AND YOU MAY TAKE THE WORD OF A MAN WHO HAS SEEN SOMETHING OF THE WORLD + QUOTE AND THAT RECOMMENDATION WITH THE EXAGGERATED ESTIMATE OF MY ABILITY WITH WHICH HE PREFACED IT WAS IF YOU WILL BELIEVE ME WATSON THE VERY FIRST THING WHICH EVER MADE ME FEEL THAT A PROFESSION MIGHT BE MADE OUT OF WHAT HAD UP TO THAT TIME BEEN THE MEREST HOBBY + AT THE MOMENT HOWEVER I WAS TOO MUCH CONCERNED AT THE SUDDEN ILLNESS OF MY HOST TO THINK OF ANYTHING ELSE + I HOPE THAT I HAVE SAID NOTHING TO PAIN YOU SAID I + WELL YOU CERTAINLY TOUCHED UPON RATHER A TENDER POINT + MIGHT I ASK HOW YOU KNOW AND HOW MUCH YOU KNOW + HE SPOKE NOW IN A HALF JESTING FASHION BUT A LOOK OF TERROR STILL LURKED AT THE BACK OF HIS EYES + IT IS SIMPLICITY ITSELF SAID I. WHEN YOU BARED YOUR ARM TO DRAW THAT FISH INTO THE BOAT I SAW THAT J. A. HAD BEEN TATTOOED IN THE BEND OF THE ELBOW + THE LETTERS WERE STILL LEGIBLE BUT IT WAS PERFECTLY CLEAR FROM THEIR BLURRED APPEARANCE AND FROM THE STAINING OF THE SKIN ROUND THEM THAT EFFORTS HAD BEEN MADE TO OBLITERATE THEM + IT WAS OBVIOUS THEN THAT THOSE INITIALS HAD ONCE BEEN VERY FAMILIAR TO YOU AND THAT YOU HAD AFTERWARDS WISHED TO FORGET THEM + WHAT AN EYE YOU HAVE HE CRIED WITH A SIGH OF RELIEF + IT IS JUST AS YOU SAY + BUT WE WON'T TALK OF IT + OF ALL GHOSTS THE GHOSTS OF OUR OLD LOVES ARE THE WORST + COME INTO THE BILLIARD ROOM AND HAVE A QUIET CIGAR + FROM THAT DAY AMID ALL HIS CORDIALITY THERE WAS ALWAYS A TOUCH OF SUSPICION IN MR. TREVOR'S MANNER TOWARDS ME + EVEN HIS SON REMARKED IT + YOU'VE GIVEN THE GOVERNOR SUCH A TURN SAID HE THAT HE'LL NEVER BE SURE AGAIN OF WHAT YOU KNOW AND WHAT YOU DON'T KNOW + HE DID NOT MEAN TO SHOW IT I AM SURE BUT IT WAS SO STRONGLY IN HIS MIND THAT IT PEEPED OUT AT EVERY ACTION + AT LAST I BECAME SO CONVINCED THAT I WAS CAUSING HIM UNEASINESS THAT I DREW MY VISIT TO A CLOSE + ON THE VERY DAY HOWEVER BEFORE I LEFT AN INCIDENT OCCURRED WHICH PROVED IN THE SEQUEL TO BE OF IMPORTANCE + QUOTE WE WERE SITTING OUT UPON THE LAWN ON GARDEN CHAIRS THE THREE OF US BASKING IN THE SUN AND ADMIRING THE VIEW ACROSS THE BROADS WHEN A MAID CAME OUT TO SAY THAT THERE WAS A MAN AT THE DOOR WHO WANTED TO SEE MR. TREVOR + WHAT IS HIS NAME ASKED MY HOST + HE WOULD NOT GIVE ANY + WHAT DOES HE WANT THEN + HE SAYS THAT YOU KNOW HIM AND THAT HE ONLY WANTS A MOMENT'S CONVERSATION + SHOW HIM ROUND HERE + AN INSTANT AFTERWARDS THERE APPEARED A LITTLE WIZENED FELLOW WITH A CRINGING MANNER AND A SHAMBLING STYLE OF WALKING + HE WORE AN OPEN JACKET WITH A SPLOTCH OF TAR ON THE SLEEVE A RED AND BLACK CHECK SHIRT DUNGAREE TROUSERS AND HEAVY BOOTS BADLY WORN + HIS FACE WAS THIN AND BROWN AND CRAFTY WITH A PERPETUAL SMILE UPON IT WHICH SHOWED AN IRREGULAR LINE OF YELLOW TEETH AND HIS CRINKLED HANDS WERE HALF CLOSED IN A WAY THAT IS DISTINCTIVE OF SAILORS + AS HE CAME SLOUCHING ACROSS THE LAWN I HEARD MR. TREVOR MAKE A SORT OF HICCOUGHING NOISE IN HIS THROAT AND JUMPING OUT OF HIS CHAIR HE RAN INTO THE HOUSE + HE WAS BACK IN A MOMENT AND I SMELT A STRONG REEK OF BRANDY AS HE PASSED ME + QUOTE WELL MY MAN SAID HE + WHAT CAN I DO FOR YOU + THE SAILOR STOOD LOOKING AT HIM WITH PUCKERED EYES AND WITH THE SAME LOOSE LIPPED SMILE UPON HIS FACE + YOU DON'T KNOW ME HE ASKED + WHY DEAR ME IT IS SURELY HUDSON SAID MR. TREVOR IN A TONE OF SURPRISE + HUDSON IT IS SIR SAID THE SEAMAN + WHY IT'S THIRTY YEAR AND MORE SINCE I SAW YOU LAST + HERE YOU ARE IN YOUR HOUSE AND ME STILL PICKING MY SALT MEAT OUT OF THE HARNESS CASK + TUT YOU WILL FIND THAT I HAVE NOT FORGOTTEN OLD TIMES CRIED MR. TREVOR AND WALKING TOWARDS THE SAILOR HE SAID SOMETHING IN A LOW VOICE + GO INTO THE KITCHEN HE CONTINUED OUT LOUD AND YOU WILL GET FOOD AND DRINK + I HAVE NO DOUBT THAT I SHALL FIND YOU A SITUATION + QUOTE THANK YOU SIR SAID THE SEAMAN TOUCHING HIS FORELOCK + I'M JUST OFF A TWO YEARER IN AN EIGHT KNOT TRAMP SHORT HANDED AT THAT AND I WANTS A REST + I THOUGHT I'D GET IT EITHER WITH MR. BEDDOES OR WITH YOU + AH CRIED MR. TREVOR + YOU KNOW WHERE MR. BEDDOES IS + BLESS YOU SIR I KNOW WHERE ALL MY OLD FRIENDS ARE SAID THE FELLOW WITH A SINISTER SMILE AND HE SLOUCHED OFF AFTER THE MAID TO THE KITCHEN + MR. TREVOR MUMBLED SOMETHING TO US ABOUT HAVING BEEN SHIPMATE WITH THE MAN WHEN HE WAS GOING BACK TO THE DIGGINGS AND THEN LEAVING US ON THE LAWN HE WENT INDOORS + AN HOUR LATER WHEN WE ENTERED THE HOUSE WE FOUND HIM STRETCHED DEAD DRUNK UPON THE DINING ROOM SOFA + THE WHOLE INCIDENT LEFT A MOST UGLY IMPRESSION UPON MY MIND AND I WAS NOT SORRY NEXT DAY TO LEAVE DONNITHORPE BEHIND ME FOR I FELT THAT MY PRESENCE MUST BE A SOURCE OF EMBARRASSMENT TO MY FRIEND + ALL THIS OCCURRED DURING THE FIRST MONTH OF THE LONG VACATION + I WENT UP TO MY LONDON ROOMS WHERE I SPENT SEVEN WEEKS WORKING OUT A FEW EXPERIMENTS IN ORGANIC CHEMISTRY + ONE DAY HOWEVER WHEN THE AUTUMN WAS FAR ADVANCED AND THE VACATION DRAWING TO A CLOSE I RECEIVED A TELEGRAM FROM MY FRIEND IMPLORING ME TO RETURN TO DONNITHORPE AND SAYING THAT HE WAS IN GREAT NEED OF MY ADVICE AND ASSISTANCE + OF COURSE I DROPPED EVERYTHING AND SET OUT FOR THE NORTH ONCE MORE + HE MET ME WITH THE DOG CART AT THE STATION AND I SAW AT A GLANCE THAT THE LAST TWO MONTHS HAD BEEN VERY TRYING ONES FOR HIM + HE HAD GROWN THIN AND CAREWORN AND HAD LOST THE LOUD CHEERY MANNER FOR WHICH HE HAD BEEN REMARKABLE + THE GOVERNOR IS DYING WERE THE FIRST WORDS HE SAID + QUOTE IMPOSSIBLE + I CRIED + WHAT IS THE MATTER + APOPLEXY + NERVOUS SHOCK + HE'S BEEN ON THE VERGE ALL DAY + I DOUBT IF WE SHALL FIND HIM ALIVE + I WAS AS YOU MAY THINK WATSON HORRIFIED AT THIS UNEXPECTED NEWS + WHAT HAS CAUSED IT + I ASKED + AH THAT IS THE POINT + JUMP IN AND WE CAN TALK IT OVER WHILE WE DRIVE + YOU REMEMBER THAT FELLOW WHO CAME UPON THE EVENING BEFORE YOU LEFT US + PERFECTLY + QUOTE DO YOU KNOW WHO IT WAS THAT WE LET INTO THE HOUSE THAT DAY + I HAVE NO IDEA + IT WAS THE DEVIL HOLMES HE CRIED + I STARED AT HIM IN ASTONISHMENT + YES IT WAS THE DEVIL HIMSELF + WE HAVE NOT HAD A PEACEFUL HOUR SINCE NOT ONE + THE GOVERNOR HAS NEVER HELD UP HIS HEAD FROM THAT EVENING AND NOW THE LIFE HAS BEEN CRUSHED OUT OF HIM AND HIS HEART BROKEN ALL THROUGH THIS ACCURSED HUDSON + WHAT POWER HAD HE THEN + QUOTE AH THAT IS WHAT I WOULD GIVE SO MUCH TO KNOW + THE KINDLY CHARITABLE GOOD OLD GOVERNOR HOW COULD HE HAVE FALLEN INTO THE CLUTCHES OF SUCH A RUFFIAN + BUT I AM SO GLAD THAT YOU HAVE COME HOLMES + I TRUST VERY MUCH TO YOUR JUDGMENT AND DISCRETION AND I KNOW THAT YOU WILL ADVISE ME FOR THE BEST + WE WERE DASHING ALONG THE SMOOTH WHITE COUNTRY ROAD WITH THE LONG STRETCH OF THE BROADS IN FRONT OF US GLIMMERING IN THE RED LIGHT OF THE SETTING SUN + FROM A GROVE UPON OUR LEFT I COULD ALREADY SEE THE HIGH CHIMNEYS AND THE FLAGSTAFF WHICH MARKED THE SQUIRE'S DWELLING + MY FATHER MADE THE FELLOW GARDENER SAID MY COMPANION AND THEN AS THAT DID NOT SATISFY HIM HE WAS PROMOTED TO BE BUTLER + THE HOUSE SEEMED TO BE AT HIS MERCY AND HE WANDERED ABOUT AND DID WHAT HE CHOSE IN IT + THE MAIDS COMPLAINED OF HIS DRUNKEN HABITS AND HIS VILE LANGUAGE + THE DAD RAISED THEIR WAGES ALL ROUND TO RECOMPENSE THEM FOR THE ANNOYANCE + THE FELLOW WOULD TAKE THE BOAT AND MY FATHER'S BEST GUN AND TREAT HIMSELF TO LITTLE SHOOTING TRIPS + AND ALL THIS WITH SUCH A SNEERING LEERING INSOLENT FACE THAT I WOULD HAVE KNOCKED HIM DOWN TWENTY TIMES OVER IF HE HAD BEEN A MAN OF MY OWN AGE + I TELL YOU HOLMES I HAVE HAD TO KEEP A TIGHT HOLD UPON MYSELF ALL THIS TIME AND NOW I AM ASKING MYSELF WHETHER IF I HAD LET MYSELF GO A LITTIE MORE I MIGHT NOT HAVE BEEN A WISER MAN + WELL MATTERS WENT FROM BAD TO WORSE WITH US AND THIS ANIMAL HUDSON BECAME MORE AND MORE INTRUSIVE UNTIL AT LAST ON HIS MAKING SOME INSOLENT REPLY TO MY FATHER IN MY PRESENCE ONE DAY I TOOK HIM BY THE SHOULDERS AND TURNED HIM OUT OF THE ROOM + HE SLUNK AWAY WITH A LIVID FACE AND TWO VENOMOUS EYES WHICH UTTERED MORE THREATS THAN HIS TONGUE COULD DO + I DON'T KNOW WHAT PASSED BETWEEN THE POOR DAD AND HIM AFTER THAT BUT THE DAD CAME TO ME NEXT DAY AND ASKED ME WHETHER I WOULD MIND APOLOGIZING TO HUDSON + I REFUSED AS YOU CAN IMAGINE AND ASKED MY FATHER HOW HE COULD ALLOW SUCH A WRETCH TO TAKE SUCH LIBERTIES WITH HIMSELF AND HIS HOUSEHOLD + AH MY BOY SAID HE IT IS ALL VERY WELL TO TALK BUT YOU DON'T KNOW HOW I AM PLACED + BUT YOU SHALL KNOW VICTOR + I'LL SEE THAT YOU SHALL KNOW COME WHAT MAY + YOU WOULDN'T BELIEVE HARM OF YOUR POOR OLD FATHER WOULD YOU LAD + HE WAS VERY MUCH MOVED AND SHUT HIMSELF UP IN THE STUDY ALL DAY WHERE I COULD SEE THROUGH THE WINDOW THAT HE WAS WRITING BUSILY + QUOTE THAT EVENING THERE CAME WHAT SEEMED TO ME TO BE A GRAND RELEASE FOR HUDSON TOLD US THAT HE WAS GOING TO LEAVE US + HE WALKED INTO THE DINING ROOM AS WE SAT AFTER DINNER AND ANNOUNCED HIS INTENTION IN THE THICK VOICE OF A HALF DRUNKEN MAN + I'VE HAD ENOUGH OF NORFOLK SAID HE + I'LL RUN DOWN TO MR. BEDDOES IN HAMPSHIRE + HE'LL BE AS GLAD TO SEE ME AS YOU WERE I DARESAY + YOU'RE NOT GOING AWAY IN AN UNKIND SPIRIT HUDSON I HOPE SAID MY FATHER WITH A TAMENESS WHICH MADE MY BLOOD BOIL + I'VE NOT HAD MY POLOGY SAID HE SULKILY GLANCING IN MY DIRECTION + QUOTE QUOTE VICTOR YOU WILL ACKNOWLEDGE THAT YOU HAVE USED THIS WORTHY FELLOW RATHER ROUGHLY QUOTE SAID THE DAD TURNING TO ME + ON THE CONTRARY I THINK THAT WE HAVE BOTH SHOWN EXTRAORDINARY PATIENCE TOWARDS HIM I ANSWERED + OH YOU DO DO YOU HE SNARLED + VERY GOOD MATE + WE'LL SEE ABOUT THAT + HE SLOUCHED OUT OF THE ROOM AND HALF AN HOUR AFTERWARDS LEFT THE HOUSE LEAVING MY FATHER IN A STATE OF PITIABLE NERVOUSNESS + NIGHT AFTER NIGHT I HEARD HIM PACING HIS ROOM AND IT WAS JUST AS HE WAS RECOVERING HIS CONFIDENCE THAT THE BLOW DID AT LAST FALL + QUOTE AND HOW + I ASKED EAGERLY + IN A MOST EXTRAORDINARY FASHION + A LETTER ARRIVED FOR MY FATHER YESTERDAY EVENING BEARING THE FORDINGHAM POSTMARK + MY FATHER READ IT CLAPPED BOTH HIS HANDS TO HIS HEAD AND BEGAN RUNNING ROUND THE ROOM IN LITTLE CIRCLES LIKE A MAN WHO HAS BEEN DRIVEN OUT OF HIS SENSES + WHEN I AT LAST DREW HIM DOWN ON TO THE SOFA HIS MOUTH AND EYELIDS WERE ALL PUCKERED ON ONE SIDE AND I SAW THAT HE HAD A STROKE + DOCTOR FORDHAM CAME OVER AT ONCE + WE PUT HIM TO BED BUT THE PARALYSIS HAS SPREAD HE HAS SHOWN NO SIGN OF RETURNING CONSCIOUSNESS AND I THINK THAT WE SHALL HARDLY FIND HIM ALIVE + YOU HORRIFY ME TREVOR + I CRIED + WHAT THEN COULD HAVE BEEN IN THIS LETTER TO CAUSE SO DREADFUL A RESULT + NOTHING + THERE LIES THE INEXPLICABLE PART OF IT + THE MESSAGE WAS ABSURD AND TRIVIAL + AH MY GOD IT IS AS I FEARED + AS HE SPOKE WE CAME ROUND THE CURVE OF THE AVENUE AND SAW IN THE FADING LIGHT THAT EVERY BLIND IN THE HOUSE HAD BEEN DRAWN DOWN + AS WE DASHED UP TO THE DOOR MY FRIEND'S FACE CONVULSED WITH GRIEF A GENTLEMAN IN BLACK EMERGED FROM IT + WHEN DID IT HAPPEN DOCTOR ASKED TREVOR + QUOTE ALMOST IMMEDIATELY AFTER YOU LEFT + DID HE RECOVER CONSCIOUSNESS + FOR AN INSTANT BEFORE THE END + ANY MESSAGE FOR ME + ONLY THAT THE PAPERS WERE IN THE BACK DRAWER OF THE JAPANESE CABINET + MY FRIEND ASCENDED WITH THE DOCTOR TO THE CHAMBER OF DEATH WHILE I REMAINED IN THE STUDY TURNING THE WHOLE MATTER OVER AND OVER IN MY HEAD AND FEELING AS SOMBRE AS EVER I HAD DONE IN MY LIFE + WHAT WAS THE PAST OF THIS TREVOR PUGILIST TRAVELLER AND GOLD DIGGER AND HOW HAD HE PLACED HIMSELF IN THE POWER OF THIS ACID FACED SEAMAN + WHY TOO SHOULD HE FAINT AT AN ALLUSION TO THE HALF EFFACED INITIALS UPON HIS ARM AND DIE OF FRIGHT WHEN HE HAD A LETTER FROM FORDINGHAM + THEN I REMEMBERED THAT FORDINGHAM WAS IN HAMPSHIRE AND THAT THIS MR. BEDDOES WHOM THE SEAMAN HAD GONE TO VISIT AND PRESUMABLY TO BLACKMAIL HAD ALSO BEEN MENTIONED AS LIVING IN HAMPSHIRE + THE LETTER THEN MIGHT EITHER COME FROM HUDSON THE SEAMAN SAYING THAT HE HAD BETRAYED THE GUILTY SECRET WHICH APPEARED TO EXIST OR IT MIGHT COME FROM BEDDOES WARNING AN OLD CONFEDERATE THAT SUCH A BETRAYAL WAS IMMINENT + SO FAR IT SEEMED CLEAR ENOUGH + BUT THEN HOW COULD THIS LETTER BE TRIVIAL AND GROTESQUE AS DESCRIBED BY THE SON + HE MUST HAVE MISREAD IT + IF SO IT MUST HAVE BEEN ONE OF THOSE INGENIOUS SECRET CODES WHICH MEAN ONE THING WHILE THEY SEEM TO MEAN ANOTHER + I MUST SEE THIS LETTER + IF THERE WAS A HIDDEN MEANING IN IT I WAS CONFIDENT THAT I COULD PLUCK IT FORTH + FOR AN HOUR I SAT PONDERING OVER IT IN THE GLOOM UNTIL AT LAST A WEEPING MAID BROUGHT IN A LAMP AND CLOSE AT HER HEELS CAME MY FRIEND TREVOR PALE BUT COMPOSED WITH THESE VERY PAPERS WHICH LIE UPON MY KNEE HELD IN HIS GRASP + HE SAT DOWN OPPOSITE TO ME DREW THE LAMP TO THE EDGE OF THE TABLE AND HANDED ME A SHORT NOTE SCRIBBLED AS YOU SEE UPON A SINGLE SHEET OF GRAY PAPER + THE SUPPLY OF GAME FOR LONDON IS GOING STEADILY UP IT RAN + HEAD KEEPER HUDSON WE BELIEVE HAS BEEN NOW TOLD TO RECEIVE ALL ORDERS FOR FLY PAPER AND FOR PRESERVATION OF YOUR HEN PHEASANT'S LIFE + QUOTE I DARESAY MY FACE LOOKED AS BEWILDERED AS YOURS DID JUST NOW WHEN FIRST I READ THIS MESSAGE + THEN I REREAD IT VERY CAREFULLY + IT WAS EVIDENTLY AS I HAD THOUGHT AND SOME SECRET MEANING MUST LIE BURIED IN THIS STRANGE COMBINATION OF WORDS + OR COULD IT BE THAT THERE WAS A PREARRANGED SIGNIFICANCE TO SUCH PHRASES AS FLY PAPER AND HEN PHEASANT + SUCH A MEANING WOULD BE ARBITRARY AND COULD NOT BE DEDUCED IN ANY WAY + AND YET I WAS LOATH TO BELIEVE THAT THIS WAS THE CASE AND THE PRESENCE OF THE WORD HUDSON SEEMED TO SHOW THAT THE SUBJECT OF THE MESSAGE WAS AS I HAD GUESSED AND THAT IT WAS FROM BEDDOES RATHER THAN THE SAILOR + I TRIED IT BACKWARD BUT THE COMBINATION LIFE PHEASANT'S HEN WAS NOT ENCOURAGING + THEN I TRIED ALTERNATE WORDS BUT NEITHER THE OF FOR NOR SUPPLY GAME LONDON PROMISED TO THROW ANY LIGHT UPON IT + AND THEN IN AN INSTANT THE KEY OF THE RIDDLE WAS IN MY HANDS AND I SAW THAT EVERY THIRD WORD BEGINNING WITH THE FIRST WOULD GIVE A MESSAGE WHICH MIGHT WELL DRIVE OLD TREVOR TO DESPAIR + THE GAME IS UP + HUDSON HAS TOLD ALL + FLY FOR YOUR LIFE + VICTOR TREVOR SANK HIS FACE INTO HIS SHAKING HANDS + IT MUST BE THAT I SUPPOSE SAID HE + THIS IS WORSE THAN DEATH FOR IT MEANS DISGRACE AS WELL + BUT WHAT IS THE MEANING OF THESE HEADKEEPERS AND HEN PHEASANTS + IT MEANS NOTHING TO THE MESSAGE BUT IT MIGHT MEAN A GOOD DEAL TO US IF WE HAD NO OTHER MEANS OF DISCOVERING THE SENDER + YOU SEE THAT HE HAS BEGUN BY WRITING QUOTE THE GAME IS QUOTE AND SO ON + AFTERWARDS HE HAD TO FULFIL THE PREARRANGED CIPHER TO FILL IN ANY TWO WORDS IN EACH SPACE + HE WOULD NATURALLY USE THE FIRST WORDS WHICH CAME TO HIS MIND AND IF THERE WERE SO MANY WHICH REFERRED TO SPORT AMONG THEM YOU MAY BE TOLERABLY SURE THAT HE IS EITHER AN ARDENT SHOT OR INTERESTED IN BREEDING + DO YOU KNOW ANYTHING OF THIS BEDDOES + WHY NOW THAT YOU MENTION IT SAID HE I REMEMBER THAT MY POOR FATHER USED TO HAVE AN INVITATION FROM HIM TO SHOOT OVER HIS PRESERVES EVERY AUTUMN + THEN IT IS UNDOUBTEDLY FROM HIM THAT THE NOTE COMES SAID I. IT ONLY REMAINS FOR US TO FIND OUT WHAT THIS SECRET WAS WHICH THE SAILOR HUDSON SEEMS TO HAVE HELD OVER THE HEADS OF THESE TWO WEALTHY AND RESPECTED MEN + ALAS HOLMES I FEAR THAT IT IS ONE OF SIN AND SHAME CRIED MY FRIEND + BUT FROM YOU I SHALL HAVE NO SECRETS + HERE IS THE STATEMENT WHICH WAS DRAWN UP BY MY FATHER WHEN HE KNEW THAT THE DANGER FROM HUDSON HAD BECOME IMMINENT + I FOUND IT IN THE JAPANESE CABINET AS HE TOLD THE DOCTOR + TAKE IT AND READ IT TO ME FOR I HAVE NEITHER THE STRENGTH NOR THE COURAGE TO DO IT MYSELF + THESE ARE THE VERY PAPERS WATSON WHICH HE HANDED TO ME AND I WILL READ THEM TO YOU AS I READ THEM IN THE OLD STUDY THAT NIGHT TO HIM + THEY ARE ENDORSED OUTSIDE AS YOU SEE SOME PARTICULARS OF THE VOYAGE OF THE BARK GLORIA SCOTT FROM HER LEAVING FALMOUTH ON THE EIGHTH OCTOBER ONE THOUSAND EIGHT HUNDRED FIFTY FIVE TO HER DESTRUCTION IN N. LAT. FIFTEEN DEGREES TWENTY + W. LONG. TWENTY FIVE DEGREES FOURTEEN ON NOVEMBER SIXTH + IT IS IN THE FORM OF A LETTER AND RUNS IN THIS WAY + MY DEAR. DEAR SON. NOW THAT APPROACHING DISGRACE BEGINS TO DARKEN THE CLOSING YEARS OF MY LIFE I CAN WRITE WITH ALL TRUTH AND HONESTY THAT IT IS NOT THE TERROR OF THE LAW IT IS NOT THE LOSS OF MY POSITION IN THE COUNTY NOR IS IT MY FALL IN THE EYES OF ALL WHO HAVE KNOWN ME WHICH CUTS ME TO THE HEART BUT IT IS THE THOUGHT THAT YOU SHOULD COME TO BLUSH FOR ME YOU WHO LOVE ME AND WHO HAVE SELDOM I HOPE HAD REASON TO DO OTHER THAN RESPECT ME + BUT IF THE BLOW FALLS WHICH IS FOREVER HANGING OVER ME THEN I SHOULD WISH YOU TO READ THIS THAT YOU MAY KNOW STRAIGHT FROM ME HOW FAR I HAVE BEEN TO BLAME + ON THE OTHER HAND IF ALL SHOULD GO WELL WHICH MAY KIND GOD ALMIGHTY GRANT THEN IF BY ANY CHANCE THIS PAPER SHOULD BE STILL UNDESTROYED AND SHOULD FALL INTO YOUR HANDS I CONJURE YOU BY ALL YOU HOLD SACRED BY THE MEMORY OF YOUR DEAR MOTHER AND BY THE LOVE WHICH HAS BEEN BETWEEN US TO HURL IT INTO THE FIRE AND TO NEVER GIVE ONE THOUGHT TO IT AGAIN + QUOTE IF THEN YOUR EYE GOES ON TO READ THIS LINE I KNOW THAT I SHALL ALREADY HAVE BEEN EXPOSED AND DRAGGED FROM MY HOME OR AS IS MORE LIKELY FOR YOU KNOW THAT MY HEART IS WEAK BE LYING WITH MY TONGUE SEALED FOREVER IN DEATH + IN EITHER CASE THE TIME FOR SUPPRESSION IS PAST AND EVERY WORD WHICH I TELL YOU IS THE NAKED TRUTH AND THIS I SWEAR AS I HOPE FOR MERCY + MY NAME DEAR LAD IS NOT TREVOR + I WAS JAMES ARMITAGE IN MY YOUNGER DAYS AND YOU CAN UNDERSTAND NOW THE SHOCK THAT IT WAS TO ME A FEW WEEKS AGO WHEN YOUR COLLEGE FRIEND ADDRESSED ME IN WORDS WHICH SEEMED TO IMPLY THAT HE HAD SURPRISED MY SECRET + AS ARMITAGE IT WAS THAT I ENTERED A LONDON BANKINGHOUSE AND AS ARMITAGE I WAS CONVICTED OF BREAKING MY COUNTRY'S LAWS AND WAS SENTENCED TO TRANSPORTATION + DO NOT THINK VERY HARSHLY OF ME LADDIE + IT WAS A DEBT OF HONOUR SO CALLED WHICH I HAD TO PAY AND I USED MONEY WHICH WAS NOT MY OWN TO DO IT IN THE CERTAINTY THAT I COULD REPLACE IT BEFORE THERE COULD BE ANY POSSIBILITY OF ITS BEING MISSED + BUT THE MOST DREADFUL ILL LUCK PURSUED ME + THE MONEY WHICH I HAD RECKONED UPON NEVER CAME TO HAND AND A PREMATURE EXAMINATION OF ACCOUNTS EXPOSED MY DEFICIT + THE CASE MIGHT HAVE BEEN DEALT LENIENTLY WITH BUT THE LAWS WERE MORE HARSHLY ADMINISTERED THIRTY YEARS AGO THAN NOW AND ON MY TWENTY THIRD BIRTHDAY I FOUND MYSELF CHAINED AS A FELON WITH THIRTY SEVEN OTHER CONVICTS IN THE TWEEN DECKS OF THE BARK CLORIA SCOTT BOUND FOR AUSTRALIA + IT WAS THE YEAR FIFTY FIVE WHEN THE CRIMEAN WAR WAS AT ITS HEIGHT AND THE OLD CONVICT SHIPS HAD BEEN LARGELY USED AS TRANSPORTS IN THE BLACK SEA + THE GOVERNMENT WAS COMPELLED THEREFORE TO USE SMALLER AND LESS SUITABLE VESSELS FOR SENDING OUT THEIR PRISONERS + THE GLORIA SCOTT HAD BEEN IN THE CHINESE TEATRADE BUT SHE WAS AN OLD FASHIONED HEAVY BOWED BROAD BEAMED CRAFT AND THE NEW CLIPPERS HAD CUT HER OUT + SHE WAS A FIVEHUNDRED TON BOAT AND BESIDES HER THIRTY EIGHT JAIL BIRDS SHE CARRIED TWENTY SIX OF A CREW EIGHTEEN SOLDIERS A CAPTAIN THREE MATES A DOCTOR A CHAPLAIN AND FOUR WARDERS + NEARLY A HUNDRED SOULS WERE IN HER ALL TOLD WHEN WE SET SAIL FROM FALTNOUTH + THE PARTITIONS BETWEEN THE CELLS OF THE CONVICTS INSTEAD OF BEING OF THICK OAK AS IS USUAL IN CONVICT SHIPS WERE QUITE THIN AND FRAIL + THE MAN NEXT TO ME UPON THE AFT SIDE WAS ONE WHOM I HAD PARTICULARLY NOTICED WHEN WE WERE LED DOWN THE QUAY + HE WAS A YOUNG MAN WITH A CLEAR HAIRLESS FACE A LONG THIN NOSE AND RATHER NUT CRACKER JAWS + HE CARRIED HIS HEAD VERY JAUNTILY IN THE AIR HAD A SWAGGERING STYLE OF WALKING AND WAS ABOVE ALL ELSE REMARKABLE FOR HIS EXTRAORDINARY HEIGHT + I DON'T THINK ANY OF OUR HEADS WOULD HAVE COME UP TO HIS SHOULDER AND I AM SURE THAT HE COULD NOT HAVE MEASURED LESS THAN SIX AND A HALF FEET + IT WAS STRANGE AMONG SO MANY SAD AND WEARY FACES TO SEE ONE WHICH WAS FULL OF ENERGY AND RESOLUTION + THE SIGHT OF IT WAS TO ME LIKE A FIRE IN A SNOWSTORM + I WAS GLAD THEN TO FIND THAT HE WAS MY NEIGHBOUR AND GLADDER STILL WHEN IN THE DEAD OF THE NIGHT I HEARD A WHISPER CLOSE TO MY EAR AND FOUND THAT HE HAD MANAGED TO CUT AN OPENING IN THE BOARD WHICH SEPARATED US + HULLO CHUMMY SAID HE WHAT'S YOUR NAME AND WHAT ARE YOU HERE FOR + I ANSWERED HIM AND ASKED IN TURN WHO I WAS TALKING WITH + QUOTE QUOTE I'M JACK PRENDERGAST QUOTE SAID HE QUOTE AND BY GOD YOU'LL LEARN TO BLESS MY NAME BEFORE YOU'VE DONE WITH ME QUOTE + I REMEMBERED HEARING OF HIS CASE FOR IT WAS ONE WHICH HAD MADE AN IMMENSE SENSATION THROUGHOUT THE COUNTRY SOME TIME BEFORE MY OWN ARREST + HE WAS A MAN OF GOOD FAMILY AND OF GREAT ABILITY BUT OF INCURABLY VICIOUS HABITS WHO HAD BY AN INGENIOUS SYSTEM OF FRAUD OBTAINED HUGE SUMS OF MONEY FROM THE LEADING LONDON MERCHANTS + HA HA + YOU REMEMBER MY CASE SAID HE PROUDLY + VERY WELL INDEED + THEN MAYBE YOU REMEMBER SOMETHING QUEER ABOUT IT + QUOTE QUOTE WHAT WAS THAT THEN QUOTE + I'D HAD NEARLY A QUARTER OF A MILLION HADN'T I + SO IT WAS SAID + BUT NONE WAS RECOVERED EH + NUMBER + WELL WHERE D'YE SUPPOSE THE BALANCE IS HE ASKED + QUOTE QUOTE I HAVE NO IDEA QUOTE SAID I + RIGHT BETWEEN MY FINGER AND THUMB HE CRIED + BY GOD + I'VE GOT MARE POUNDS TO MY NAME THAN YOU'VE HAIRS ON YOUR HEAD + AND IF YOU'VE MONEY MY SON AND KNOW HOW TO HANDLE IT AND SPREAD IT YOU CAN DO ANYTHING + NOW YOU DON'T THINK IT LIKELY THAT A MAN WHO COULD DO ANYTHING IS GOING TO WEAR HIS BREECHES OUT SITTING IN THE STINKING HOLD OF A RAT GUTTED BEETLE RIDDEN MOULDY OLD COFFIN OF A CHIN CHINA COASTER + NO SIR SUCH A MAN WILL LOOK AFTER HIMSELF AND WILL LOOK AFTER HIS CHUMS + YOU MAY LAY TO THAT + YOU HOLD ON TO HIM AND YOU MAY KISS THE BOOK THAT HE'LL HAUL YOU THROUGH + THAT WAS HIS STYLE OF TALK AND AT FIRST I THOUGHT IT MEANT NOTHING BUT AFTER A WHILE WHEN HE HAD TESTED ME AND SWORN ME IN WITH ALL POSSIBLE SOLEMNITY HE LET ME UNDERSTAND THAT THERE REALLY WAS A PLOT TO GAIN COMMAND OF THE VESSEL + A DOZEN OF THE PRISONERS HAD HATCHED IT BEFORE THEY CAME ABOARD PRENDERGAST WAS THE LEADER AND HIS MONEY WAS THE MOTIVE POWER + I'D A PARTNER SAID HE A RARE GOOD MAN AS TRUE AS A STOCK TO A BARREL + HE'S GOT THE DIBBS HE HAS AND WHERE DO YOU THINK HE IS AT THIS MOMENT + WHY HE'S THE CHAPLAIN OF THIS SHIP THE CHAPLAIN NO LESS + HE CAME ABOARD WITH A BLACK COAT AND HIS PAPERS RIGHT AND MONEY ENOUGH IN HIS BOX TO BUY THE THING RIGHT UP FROM KEEL TO MAIN TRUCK + THE CREW ARE HIS BODY AND SOUL + HE COULD BUY 'EM AT SO MUCH A GROSS WITH A CASH DISCOUNT AND HE DID IT BEFORE EVER THEY SIGNED ON + HE'S GOT TWO OF THE WARDERS AND MEREER THE SECOND MATE AND HE'D GET THE CAPTAIN HIMSELF IF HE THOUGHT HIM WORTH IT QUOTE + WHAT ARE WE TO DO THEN + I ASKED + WHAT DO YOU THINK SAID HE + WE'LL MAKE THE COATS OF SOME OF THESE SOLDIERS REDDER THAN EVER THE TAILOR DID + BUT THEY ARE ARMED SAID I + AND SO SHALL WE BE MY BOY + THERE'S A BRACE OF PISTOLS FOR EVERY MOTHER'S SON OF US AND IF WE CAN'T CARRY THIS SHIP WITH THE CREW AT OUR BACK IT'S TIME WE WERE ALL SENT TO A YOUNG MISSES' BOARDING SCHOOL + YOU SPEAK TO YOUR MATE UPON THE LEFT TO NIGHT AND SEE IF HE IS TO BE TRUSTED QUOTE + I DID SO AND FOUND MY OTHER NEIGHBOUR TO BE A YOUNG FELLOW IN MUCH THE SAME POSITION AS MYSELF WHOSE CRIME HAD BEEN FORGERY + HIS NAME WAS EVANS BUT HE AFTERWARDS CHANGED IT LIKE MYSELF AND HE IS NOW A RICH AND PROSPEROUS MAN IN THE SOUTH OF ENGLAND + HE WAS READY ENOUGH TO JOIN THE CONSPIRACY AS THE ONLY MEANS OF SAVING OURSELVES AND BEFORE WE HAD CROSSED THE BAY THERE WERE ONLY TWO OF THE PRISONERS WHO WERE NOT IN THE SECRET + ONE OF THESE WAS OF WEAK MIND AND WE DID NOT DARE TO TRUST HIM AND THE OTHER WAS SUFFERING FROM JAUNDICE AND COULD NOT BE OF ANY USE TO US + FROM THE BEGINNING THERE WAS REALLY NOTHING TO PREVENT US FROM TAKING POSSESSION OF THE SHIP + THE CREW WERE A SET OF RUFFIANS SPECIALLY PICKED FOR THE JOB + THE SHAM CHAPLAIN CAME INTO OUR CELLS TO EXHORT US CARRYING A BLACK BAG SUPPOSED TO BE FULL OF TRACTS AND SO OFTEN DID HE COME THAT BY THE THIRD DAY WE HAD EACH STOWED AWAY AT THE FOOT OF OUR BEDS A FILE A BRACE OF PISTOLS A POUND OF POWDER AND TWENTY SLUGS + TWO OF THE WARDERS WERE AGENTS OF PRENDERGAST AND THE SECOND MATE WAS HIS RIGHT HAND MAN + THE CAPTAIN THE TWO MATES TWO WARDERS LIEUTENANT MARTIN HIS EIGHTEEN SOLDIERS AND THE DOCTOR WERE ALL THAT WE HAD AGAINST US + YET SAFE AS IT WAS WE DETERMIHED TO NEGLECT NO PRECAUTION AND TO MAKE OUR ATTACK SUDDENLY BY NIGHT + IT CAME HOWEVER MORE QUICKLY THAN WE EXPECTED AND IN THIS WAY + ONE EVENING ABOUT THE THIRD WEEK AFTER OUR START THE DOCTOR HAD COME DOWN TO SEE ONE OF THE PRISONERS WHO WAS ILL AND PUTTING HIS HAND DOWN ON THE BOTTOM OF HIS BUNK HE FELT THE OUTLINE OF THE PISTOLS + IF HE HAD BEEN SILENT HE MIGHT HAVE BLOWN THE WHOLE THING BUT HE WAS A NERVOUS LITTLE CHAP SO HE GAVE A CRY OF SURPRISE AND TURNED SO PALE THAT THE MAN KNEW WHAT WAS UP IN AN INSTANT AND SEIZED HIM + HE WAS GAGGED BEFORE HE COULD GIVE THE ALARM AND TIED DOWN UPON THE BED + HE HAD UNLOCKED THE DOOR THAT LED TO THE DECK AND WE WERE THROUGH IT IN A RUSH + THE TWO SENTRIES WERE SHOT DOWN AND SO WAS A CORPORAL WHO CAME RUNNING TO SEE WHAT WAS THE MATTER + THERE WERE TWO MORE SOLDIERS AT THE DOOR OF THE STATEROOM AND THEIR MUSKETS SEEMED NOT TO BE LOADED FOR THEY NEVER FIRED UPON US AND THEY WERE SHOT WHI E. TRYING TO FIX THEIR BAYONETS + THEN WE RUSHED ON INTO THE CAPTAIN'S CABIN BUT AS WE PUSHED OPEN THE DOOR THERE WAS AN EXPLOSION FROM WITHIN AND THERE HE LAY WITH HIS BRAINS SMEARED OVER THE CHART OF THE ATLANTIC WHICH WAS PINNED UPON THE TABLE WHILE THE CHAPLAIN STOOD WITH A SMOKING PISTOL IN HIS HAND AT HIS ELBOW + THE TWO MATES HAD BOTH BEEN SEIZED BY THE CREW AND THE WHOLE BUSINESS SEEMED TO BE SETTLED + THE STATEROOM WAS NEXT THE CABIN AND WE FLOCKED IN THERE AND FLOPPED DOWN ON THE SETTEES ALL SPEAKING TOGETHER FOR WE WERE JUST MAD WITH THE FEELING THAT WE WERE FREE ONCE MORE + THERE WERE LOCKERS ALL ROUND AND WILSON THE SHAM CHAPLAIN KNOCKED ONE OF THEM IN AND PULLED OUT A DOZEN OF BROWN SHERRY + WE CRACKED OFF THE NECKS OF THE BOTTLES POURED THE STUFF OUT INTO TUMBLERS AND WERE JUST TOSSING THEM OFF WHEN IN AN INSTANT WITHOUT WARNING THERE CAME THE ROAR OF MUSKETS IN OUR EARS AND THE SALOON WAS SO FULL OF SMOKE THAT WE COULD NOT SEE ACROSS THE TABLE + WHEN IT CLEARED AGAIN THE PLACE WAS A SHAMBLES + WILSON AND EIGHT OTHERS WERE WRIGGLING ON THE TOP OF EACH OTHER ON THE FLOOR AND THE BLOOD AND THE BROWN SHERRY ON THAT TABLE TURN ME SICK NOW WHEN I THINK OF IT + WE WERE SO COWED BY THE SIGHT THAT I THINK WE SHOULD HAVE GIVEN THE JOB UP IF IT HAD NOT BEEN FOR PRENDERGAST + HE BELLOWED LIKE A BULL AND RUSHED FOR THE DOOR WITH ALL THAT WERE LEFT ALIVE AT HIS HEELS + OUT WE RAN AND THERE ON THE POOP WERE THE LIEUTENANT AND TEN OF HIS MEN + THE SWING SKYLIGHTS ABOVE THE SALOON TABLE HAD BEEN A BIT OPEN AND THEY HAD FIRED ON US THROUGH THE SLIT + WE GOT ON THEM BEFORE THEY COULD LOAD AND THEY STOOD TO IT LIKE MEN BUT WE HAD THE UPPER HAND OF THEM AND IN FIVE MINUTES IT WAS ALL OVER + MY GOD WAS THERE EVER A SLAUGHTER HOUSE LIKE THAT SHIP + PRENDERGAST WAS LIKE A RAGING DEVIL AND HE PICKED THE SOLDIERS UP AS IF THEY HAD BEEN CHILDREN AND THREW THEM OVERBOARD ALIVE OR DEAD + THERE WAS ONE SERGEANT THAT WAS HORRIBLY WOUNDED AND YET KEPT ON SWIMMING FOR A SURPRISING TIME UNTIL SOMEONE IN MERCY BLEW OUT HIS BRAINS + WHEN THE FIGHTING WAS OVER THERE WAS NO ONE LEFT OF OUR ENEMIES EXCEPT JUST THE WARDERS THE MATES AND THE DOCTOR + LT WAS OVER THEM THAT THE GREAT QUARREL AROSE + THERE WERE MANY OF US WHO WERE GLAD ENOUGH TO WIN BACK OUR FREEDOM AND YET WHO HAD NO WISH TO HAVE MURDER ON OUR SOULS + IT WAS ONE THING TO KNOCK THE SOLDIERS OVER WITH THEIR MUSKETS IN THEIR HANDS AND IT WAS ANOTHER TO STAND BY WHILE MEN WERE BEING KILLED IN COLD BLOOD + EIGHT OF US FIVE CONVICTS AND THREE SAILORS SAID THAT WE WOULD NOT SEE IT DONE + BUT THERE WAS NO MOVING PRENDERGAST AND THOSE WHO WERE WITH HIM + OUR ONLY CHANCE OF SAFETY LAY IN MAKING A CLEAN JOB OF IT SALID HE AND HE WOULD NOT LEAVE A TONGUE WITH POWER TO WAG IN A WITNESS BOX + IT NEARLY CAME TO OUR SHARING THE FATE OF THE PRISONERS BUT AT LAST HE SAID THAT IF WE WISHED WE MIGHT TAKE A BOAT AND GO + WE JUMPED AT THE OFFER FOR WE WERE ALREADY SICK OF THESE BLOOD THIRSTY DOINGS AND WE SAW THAT THERE WOULD BE WORSE BEFORO IT WAS DONE + WE WERE GIVEN A SUIT OF SAILOR TOGS EACH A BARREL OF WATER TWO CASKS ONE OF JUNK AND ONE OF BISCUITS AND A COMPASS + PRENDERGAST THREW US OVER A CHART TOLD US THAT WE WERE SHIPRECKED MARINERS WHOSE SHIP HAD FOUNDERED IN LAT. FIFTEEN DEGREES AND LONG. TWENTY FIVE DEGREES WEST AND THEN CUT THE PAINTER AND LET US GO + QUOTE AND NOW I COME TO THE MOST SURPRISING PART OF MY STORY MY DEAR SON + THE SEAMEN HAD HAULED THE FORE YARD ABACK DURING THE RISING BUT NOW AS WE LEFT THEM THEY BROUGHT IT SQUARE AGAIN AND AS THERE WAS A LIGHT WIND FROM THE NORTH AND EAST THE BARK BEGAN TO DRAW SLOWLY AWAY FROM US + OUR BOAT LAY RISING AND FALLING UPON THE LONG SMOOTH ROLLERS AND EVANS AND I WHO WERE THE MOST EDUCATED OF THE PARTY WERE SITTING IN THE SHEETS WORKING OUT OUR POSITION AND PLANNING WHAT COAST WE SHOULD MAKE FOR + IT WAS A NICE QUESTION FOR THE CAPE VERDES WERE ABOUT FIVE HUNDRED MILES TO THE NORTH OF US AND THE AFRICAN COAST ABOUT SEVEN HUNDRED TO THE EAST + ON THE WHOLE AS THE WIND WAS COMING ROUND TO THE NORTH WE THOUGHT HAT SIERRA LEONE MIGHT BE BEST AND TURNED OUR HEAD IN THAT DIRECTION THE BARK BEING AT THAT TIME NEARLY HULL DOWN ON OUR STARBOARD QUARTER + SUDDENLY AS WE LOOKED AT HER WE SAW A DENSE BLACK CLOUD OF SMOKE SHOOT UP FROM HER WHICH HUNG LIKE A MONSTROUS TREE UPON THE SKY LINE + A FEW SECONDS LATER A ROAR LIKE THUNDER BURST UPON OUR EARS AND AS THE SMOKE THINNED AWAY THERE WAS NO SIGN LEFT OF THE GLORIA SCOTT + IN AN INSTANT WE SWEPT THE BOAT'S HEAD ROUND AGAIN AND PULLED WITH ALL OUR STRENGTH FOR THE PLACE WHERE THE HAZE STILL TRAILING OVER THE WATER MARKED THE SCENE OF THIS CATASTROPHE + IT WAS A LONG HOUR BEFORE WE REACHED IT AND AT FIRST WE FEARED THAT WE HAD COME TOO LATE TO SAVE ANYONE + A SPLINTERED BOAT AND A NUMBER OF CRATES AND FRAGMENTS OF SPARS RISING AND FALLING ON THE WAVES SHOWED US WHERE THE VESSEL HAD FOUNDERED BUT THERE WAS NO SIGN OF LIFE AND WE HAD TURNED AWAY IN DESPAIR WHEN WE HEARD A CRY FOR HELP AND SAW AT SOME DISTANCE A PIECE OF WRECKAGE WITH A MAN LYING STRETCHETL ACROSS IT + WHEN WE PULLED HIM ABOARD THE BOAT HE PROVED TO BE A YOUNG SEAMAN OF THE NAME OF HUDSON WHO WAS SO BURNED AND EXHAUSTED THAT HE COULD GIVE US NO ACCOUNT OF WHAT HAD HAPPENED UNTIL THE FOLLOWING MORNING + IT SEEMED THAT AFTER WE HAD LEFT PRENDERGAST AND HIS GANG HAD PROCEEDED TO PUT TO DEATH THE FIVE REMAINING PRISONERS + THE TWO WARDERS HAD BEEN SHOT AND THROWN OVERBOARD AND SO ALSO HAD THE THIRD MATE + PRENDERGAST THEN DESCENDED INTO THE TWEENDECKS AND WITH HIS OWN HANDS CUT THE THROAT OF THE UNFORTUNATE SURGEON + THERE ONLY REMAINED THE FIRST MATE WHO WAS A BOLD AND ACTIVE MAN + WHEN HE SAW THE CONVICT APPROACHING HIM WITH THE BLOODY KNIFE IN HIS HAND HE KICKED OFF HIS BONDS WHICH HE HAD SOMEHOW CONTRIVED TO LOOSEN AND RUSHING DOWN THE DECK HE PLUNGED INTO THE AFTER HOLD + A DOZEN CONVICTS WHO DESCENDED WITH THEIR PISTOLS IN SEARCH OF HIM FOUND HIM WITH A MATCH BOX IN HIS HAND SEATED BESIDE AN OPEN POWDER BARREL WHICH WAS ONE OF THE HUNDRED CARRIED ON BOARD AND SWEARING THAT HE WOULD BLOW ALL HANDS UP IF HE WERE IN ANY WAY MOLESTED + AN INSTANT LATER THE EXPLOSION OCCURRED THOUGH HUDSON THOUGHT IT WAS CAUSED BY THE MISDIRECTED BULLET OF ONE OF THE CONVICTS RATHER THAN THE MATE'S MATCH + BE THE CAUSE WHAT IT MAY IT WAS THE END OF THE GLORIA SCOTT AND OF THE RABBLE WHO HELD COMMAND OF HER + SUCH IN A FEW WORDS MY DEAR BOY IS THE HISTORY OF THIS TERRIBLE BUSINESS IN WHICH I WAS INVOLVED + NEXT DAY WE WERE PICKED UP BY THE BRIG HOTSPUR BOUND FOR AUSTRALIA WHOSE CAPTAIN FOUND NO DIFFICULTY IN BELIEVING THAT WE WERE THE SURVIVORS OF A PASSENGER SHIP WHICH HAD FOUNDERED + THE TRANSPORT SHIP GLORIA SCOTT WAS SET DOWN BY THE ADMIRALTY AS BEING LOST AT SEA AND NO WORD HAS EVER LEAKED OUT AS TO HER TRUE FATE + AFTER AN EXCELLENT VOYAGE THE HOTSPUR LANDED US AT SYDNEY WHERE EVANS AND I CHANGED OUR NAMES AND MADE OUR WAY TO THE DIGGINGS WHERE AMONG THE CROWDS WHO WERE GATHERED FROM ALL NATIONS WE HAD NO DIFFICULTY IN LOSING OUR FORMER IDENTITIES + THE REST I NEED NOT RELATE + WE PROSPERED WE TRAVELLED WE CAME BACK AS RICH COLONIALS TO ENGLAND AND WE BOUGHT COUNTRY ESTATES + FOR MORE THAN TWENTY YEARS WE HAVE LED PEACEFUL AND USEFUL LIVES AND WE HOPED THAT OUR PAST WAS FOREVER BURIED + IMAGINE THEN MY FEELINGS WHEN IN THE SEAMAN WHO CAME TO US I RECOGNIZED INSTANTLY THE MAN WHO HAD BEEN PICKED OFF THE WRECK + HE HAD TRACKED US DOWN SOMEHOW AND HAD SET HIMSELF TO LIVE UPON OUR FEARS + YOU WILL UNDERSTAND NOW HOW IT WAS THAT I STROVE TO KEEP THE PEACE WITH HIM AND YOU WILL IN SOME MEASURE SYMPATHIZE WITH ME IN THE FEARS WHICH FILL ME NOW THAT HE HAS GONE FROM ME TO HIS OTHER VICTIM WITH THREATS UPON HIS TONGUE + UNDERNEATH IS WRITTEN IN A HAND SO SHAKY AS TO BE HARDLY LEGIBLE BEDDOES WRITES IN CIPHER TO SAY H. HAS TOLD ALL + SWEET LORD HAVE MERCY ON OUR SOULS + THAT WAS THE NARRATIVE WHICH I READ THAT NIGHT TO YOUNG TREVOR AND I THINK WATSON THAT UNDER THE CIRCUMSTANCES IT WAS A DRAMATIC ONE + THE GOOD FELLOW WAS HEART BROKEN AT IT AND WENT OUT TO THE TERAI TEA PLANTING WHERE I HEAR THAT HE IS DOING WELL + AS TO THE SAILOR AND BEDDOES NEITHER OF THEM WAS EVER HEARD OF AGAIN AFTER THAT DAY ON WHICH THE LETTER OF WARNING WAS WRITTEN + THEY BOTH DISAPPEARED UTTERLY AND COMPLETELY + NO COMPLAINT HAD BEEN LODGED WITH THE POLICE SO THAT BEDDOES HAD MISTAKEN A THREAT FOR A DEED + HUDSON HAD BEEN SEEN LURKING ABOUT AND IT WAS BELIEVED BY THE POLICE THAT HE HAD DONE AWAY WITH BEDDOES AND HAD FLED + FOR MYSELF I BELIEVE THAT THE TRUTH WAS EXACTLY THE OPPOSITE + I THINK THAT IT IS MOST PROBABLE THAT BEDDOES PUSHED TO DESPERATION AND BELIEVING HIMSELF TO HAVE BEEN ALREADY BETRAYED HAD REVENGED HIMSELF UPON HUDSON AND HAD FLED FROM THE COUNTRY WITH AS MUCH MONEY AS HE COULD LAY HIS HANDS ON + THOSE ARE THE FACTS OF THE CASE DOCTOR AND IF THEY ARE OF ANY USE TO YOUR COLLECTION I AM SURE THAT THEY ARE VERY HEARTILY AT YOUR SERVICE QUOTE diff --git a/samples/LMTutorial/train/golden_pince-nez.txt b/samples/LMTutorial/train/golden_pince-nez.txt new file mode 100755 index 0000000..ef6d565 --- /dev/null +++ b/samples/LMTutorial/train/golden_pince-nez.txt @@ -0,0 +1,643 @@ + WHEN I LOOK AT THE THREE MASSIVE MANUSCRIPT VOLUMES WHICH CONTAIN OUR WORK FOR THE YEAR ONE THOUSAND EIGHT HUNDRED NINETY FOUR I CONFESS THAT IT IS VERY DIFFICULT FOR ME OUT OF SUCH A WEALTH OF MATERIAL TO SELECT THE CASES WHICH ARE MOST INTERESTING IN THEMSELVES AND AT THE SAME TIME MOST CONDUCIVE TO A DISPLAY OF THOSE PECULIAR POWERS FOR WHICH MY FRIEND WAS FAMOUS + AS I TURN OVER THE PAGES I SEE MY NOTES UPON THE REPULSIVE STORY OF THE RED LEECH AND THE TERRIBLE DEATH OF CROSBY THE BANKER + HERE ALSO I FIND AN ACCOUNT OF THE ADDLETON TRAGEDY AND THE SINGULAR CONTENTS OF THE ANCIENT BRITISH BARROW + THE FAMOUS SMITH MORTIMER SUCCESSION CASE COMES ALSO WITHIN THIS PERIOD AND SO DOES THE TRACKING AND ARREST OF HURET THE BOULEVARD ASSASSIN AN EXPLOIT WHICH WON FOR HOLMES AN AUTOGRAPH LETTER OF THANKS FROM THE FRENCH PRESIDENT AND THE ORDER OF THE LEGION OF HONOUR + EACH OF THESE WOULD FURNISH A NARRATIVE BUT ON THE WHOLE I AM OF OPINION THAT NONE OF THEM UNITES SO MANY SINGULAR POINTS OF INTEREST AS THE EPISODE OF YOXLEY OLD PLACE WHICH INCLUDES NOT ONLY THE LAMENTABLE DEATH OF YOUNG WILLOUGHBY SMITH BUT ALSO THOSE SUBSEQUENT DEVELOPMENTS WHICH THREW SO CURIOUS A LIGHT UPON THE CAUSES OF THE CRIME + IT WAS A WILD TEMPESTUOUS NIGHT TOWARDS THE CLOSE OF NOVEMBER + HOLMES AND I SAT TOGETHER IN SILENCE ALL THE EVENING HE ENGAGED WITH A POWERFUL LENS DECIPHERING THE REMAINS OF THE ORIGINAL INSCRIPTION UPON A PALIMPSEST I DEEP IN A RECENT TREATISE UPON SURGERY + OUTSIDE THE WIND HOWLED DOWN BAKER STREET WHILE THE RAIN BEAT FIERCELY AGAINST THE WINDOWS + IT WAS STRANGE THERE IN THE VERY DEPTHS OF THE TOWN WITH TEN MILES OF MAN'S HANDIWORK ON EVERY SIDE OF US TO FEEL THE IRON GRIP OF NATURE AND TO BE CONSCIOUS THAT TO THE HUGE ELEMENTAL FORCES ALL LONDON WAS NO MORE THAN THE MOLEHILLS THAT DOT THE FIELDS + I WALKED TO THE WINDOW AND LOOKED OUT ON THE DESERTED STREET + THE OCCASIONAL LAMPS GLEAMED ON THE EXPANSE OF MUDDY ROAD AND SHINING PAVEMENT + A SINGLE CAB WAS SPLASHING ITS WAY FROM THE OXFORD STREET END + QUOTE WELL WATSON IT'S AS WELL WE HAVE NOT TO TURN OUT TO NIGHT QUOTE SAID HOLMES LAYING ASIDE HIS LENS AND ROLLING UP THE PALIMPSEST + I'VE DONE ENOUGH FOR ONE SITTING + IT IS TRYING WORK FOR THE EYES + SO FAR AS I CAN MAKE OUT IT IS NOTHING MORE EXCITING THAN AN ABBEY'S ACCOUNTS DATING FROM THE SECOND HALF OF THE FIFTEENTH CENTURY + HALLOA HALLOA HALLOA + WHAT'S THIS + AMID THE DRONING OF THE WIND THERE HAD COME THE STAMPING OF A HORSE'S HOOFS AND THE LONG GRIND OF A WHEEL AS IT RASPED AGAINST THE CURB + THE CAB WHICH I HAD SEEN HAD PULLED UP AT OUR DOOR + WHAT CAN HE WANT + I EJACULATED AS A MAN STEPPED OUT OF IT + WANT + HE WANTS US + AND WE MY POOR WATSON WANT OVERCOATS AND CRAVATS AND GOLOSHES AND EVERY AID THAT MAN EVER INVENTED TO FIGHT THE WEATHER + WAIT A BIT THOUGH + THERE'S THE CAB OFF AGAIN + THERE'S HOPE YET + HE'D HAVE KEPT IT IF HE HAD WANTED US TO COME + RUN DOWN MY DEAR FELLOW AND OPEN THE DOOR FOR ALL VIRTUOUS FOLK HAVE BEEN LONG IN BED + WHEN THE LIGHT OF THE HALL LAMP FELL UPON OUR MIDNIGHT VISITOR I HAD NO DIFFICULTY IN RECOGNIZING HIM + IT WAS YOUNG STANLEY HOPKINS A PROMISING DETECTIVE IN WHOSE CAREER HOLMES HAD SEVERAL TIMES SHOWN A VERY PRACTICAL INTEREST + QUOTE IS HE IN QUOTE HE ASKED EAGERLY + COME UP MY DEAR SIR SAID HOLMES'S VOICE FROM ABOVE + I HOPE YOU HAVE NO DESIGNS UPON US ON SUCH A NIGHT AS THIS + THE DETECTIVE MOUNTED THE STAIRS AND OUR LAMP GLEAMED UPON HIS SHINING WATERPROOF + I HELPED HIM OUT OF IT WHILE HOLMES KNOCKED A BLAZE OUT OF THE LOGS IN THE GRATE + NOW MY DEAR HOPKINS DRAW UP AND WARM YOUR TOES SAID HE + HERE'S A CIGAR AND THE DOCTOR HAS A PRESCRIPTION CONTAINING HOT WATER AND A LEMON WHICH IS GOOD MEDICINE ON A NIGHT LIKE THIS + IT MUST BE SOMETHING IMPORTANT WHICH HAS BROUGHT YOU OUT IN SUCH A GALE + QUOTE IT IS INDEED MR. HOLMES + I'VE HAD A BUSTLING AFTERNOON I PROMISE YOU + DID YOU SEE ANYTHING OF THE YOXLEY CASE IN THE LATEST EDITIONS + I'VE SEEN NOTHING LATER THAN THE FIFTEENTH CENTURY TO DAY + WELL IT WAS ONLY A PARAGRAPH AND ALL WRONG AT THAT SO YOU HAVE NOT MISSED ANYTHING + I HAVEN'T LET THE GRASS GROW UNDER MY FEET + IT'S DOWN IN KENT SEVEN MILES FROM CHATHAM AND THREE FROM THE RAILWAY LINE + I WAS WIRED FOR AT THREE FIFTEEN REACHED YOXLEY OLD PLACE AT FIVE CONDUCTED MY INVESTIGATION WAS BACK AT CHARING CROSS BY THE LAST TRAIN AND STRAIGHT TO YOU BY CAB + WHICH MEANS I SUPPOSE THAT YOU ARE NOT QUITE CLEAR ABOUT YOUR CASE + QUOTE LT MEANS THAT I CAN MAKE NEITHER HEAD NOR TAIL OF IT + SO FAR AS I CAN SEE IT IS JUST AS TANGLED A BUSINESS AS EVER I HANDLED AND YET AT FIRST IT SEEMED SO SIMPLE THAT ONE COULDN'T GO WRONG + THERE'S NO MOTIVE MR. HOLMES + THAT'S WHAT BOTHERS ME I CAN'T PUT MY HAND ON A MOTIVE + HERE'S A MAN DEAD THERE'S NO DENYING THAT BUT SO FAR AS I CAN SEE NO REASON ON EARTH WHY ANYONE SHOULD WISH HIM HARM + HOLMES LIT HIS CIGAR AND LEANED BACK IN HIS CHAIR + LET US HEAR ABOUT IT SAID HE + I'VE GOT MY FACTS PRETTY CLEAR SAID STANLEY HOPKINS + ALL I WANT NOW IS TO KNOW WHAT THEY ALL MEAN + THE STORY SO FAR AS I CAN MAKE IT OUT IS LIKE THIS + SOME YEARS AGO THIS COUNTRY HOUSE YOXLEY OLD PLACE WAS TAKEN BY AN ELDERLY MAN WHO GAVE THE NAME OF PROFESSOR CORAM + HE WAS AN INVALID KEEPING HIS BED HALF THE TIME AND THE OTHER HALF HOBBLING ROUND THE HOUSE WITH A STICK OR BEING PUSHED ABOUT THE GROUNDS BY THE GARDENER IN A BATH CHAIR + HE WAS WELL LIKED BY THE FEW NEIGHBOURS WHO EALLED UPON HIM AND HE HAS THE REPUTATION DOWN THERE OF BEING A VERY LEARNED MAN + HIS HOUSEHOLD USED TO CONSIST OF AN ELDERLY HOUSEKEEPER MRS. MARKER AND OF A MAID SUSAN TARLTON + THESE HAVE BOTH BEEN WITH HIM SINCE HIS ARRIVAL AND THEY SEEM TO BE WOMEN OF EXCELLENT CHARACTER + THE PROFESSOR IS WRITING A LEARNED BOOK AND HE FOUND IT NECESSARY ABOUT A YEAR AGO TO ENGAGE A SECRETARY + THE FIRST TWO THAT HE TRIED WERE NOT SUCCESSES BUT THE THIRD MR. WILLOUGHBY SMITH A VERY YOUNG MAN STRAIGHT FROM THE UNIVERSITY SEEMS TO HAVE BEEN JUST WHAT HIS EMPLOYER WANTED + HIS WORK CONSISTED IN WRITING ALL THE MORNING TO THE PROFESSOR'S DICTATION AND HE USUALLY SPENT THE EVENING IN HUNTING UP REFERENCES AND PASSAGES WHICH BORE UPON THE NEXT DAY'S WORK + THIS WILLOUGHBY SMITH HAS NOTHING AGAINST HIM EITHER AS A BOY AT UPPINGHAM OR AS A YOUNG MAN AT CAMBRIDGE + I HAVE SEEN HIS TESTIMONIALS AND FROM THE FIRST HE WAS A DECENT QUIET HARDWORKING FELLOW WITH NO WEAK SPOT IN HIM AT ALL + AND YET THIS IS THE LAD WHO HAS MET HIS DEATH THIS MORNING IN THE PROFESSOR'S STUDY UNDER CIRCUMSTANCES WHICH CAN POINT ONLY TO MURDER + THE WIND HOWLED AND SCREAMED AT THE WINDOWS + HOLMES AND I DREW CLOSER TO THE FIRE WHILE THE YOUNG INSPECTOR SLOWLY AND POINT BY POINT DEVELOPED HIS SINGULAR NARRATIVE + QUOTE IF YOU WERE TO SEARCH ALL ENGLAND QUOTE SAID HE QUOTE I DON'T SUPPOSE YOU COULD FIND A HOUSEHOLD MORE SELF CONTAINED OR FREER FROM OUTSIDE INFLUENCES + WHOLE WEEKS WOULD PASS AND NOT ONE OF THEM GO PAST THE GARDEN GATE + THE PROFESSOR WAS BURIED IN HIS WORK AND EXISTED FOR NOTHING ELSE + YOUNG SMITH KNEW NOBODY IN THE NEIGHBOURHOOD AND LIVED VERY MUCH AS HIS EMPLOYER DID + THE TWO WOMEN HAD NOTHING TO TAKE THEM FROM THE HOUSE + MORTIMER THE GARDENER WHO WHEELS THE BATH CHAIR IS AN ARMY PENSIONER AN OLD CRIMEAN MAN OF EXCELLENT CHARACTER + HE DOES NOT LIVE IN THE HOUSE BUT IN A THREE ROOMED COTTAGE AT THE OTHER END OF THE GARDEN + THOSE ARE THE ONLY PEOPLE THAT YOU WOULD FIND WITHIN THE GROUNDS OF YOXLEY OLD PLACE + AT THE SAME TIME THE GATE OF THE GARDEN IS A HUNDRED YARDS FROM THE MAIN LONDON TO CHATHAM ROAD + IT OPENS WITH A LATCH AND THERE IS NOTHING TO PREVENT ANYONE FROM WALKING IN + NOW I WILL GIVE YOU THE EVIDENCE OF SUSAN TARLTON WHO IS THE ONLY PERSON WHO CAN SAY ANYTHING POSITIVE ABOUT THE MATTER + IT WAS IN THE FORENOON BETWEEN ELEVEN AND TWELVE + SHE WAS ENGAGED AT THE MOMENT IN HANGING SOME CURTAINS IN THE UPSTAIRS FRONT BEDROOM + PROFESSOR CORAM WAS STILL IN BED FOR WHEN THE WEATHER IS BAD HE SELDOM RISES BEFORE MIDDAY + THE HOUSEKEEPER WAS BUSIED WITH SOME WORK IN THE BACK OF THE HOUSE + WILLOUGHBY SMITH HAD BEEN IN HIS BEDROOM WHICH HE USES AS A SITTING ROOM BUT THE MAID HEARD HIM AT THAT MOMENT PASS ALONG THE PASSAGE AND DESCEND TO THE STUDY IMMEDIATELY BELOW HER + SHE DID NOT SEE HIM BUT SHE SAYS THAT SHE COULD NOT BE MISTAKEN IN HIS QUICK FIRM TREAD + SHE DID NOT HEAR THE STUDY DOOR CLOSE BUT A MINUTE OR SO LATER THERE WAS A DREADFUL CRY IN THE ROOM BELOW + IT WAS A WILD HOARSE SCREAM SO STRANGE AND UNNATURAL THAT IT MIGHT HAVE COME EITHER FROM A MAN OR A WOMAN + AT THE SAME INSTANT THERE WAS A HEAVY THUD WHICH SHOOK THE OLD HOUSE AND THEN ALL WAS SILENCE + THE MAID STOOD PETRIFIED FOR A MOMENT AND THEN RECOVERING HER COURAGE SHE RAN DOWNSTAIRS + THE STUDY DOOR WAS SHUT AND SHE OPENED IT + INSIDE YOUNG MR. WILLOUGHBY SMITH WAS STRETCHED UPON THE FLOOR + AT FIRST SHE COULD SEE NO INJURY BUT AS SHE TRIED TO RAISE HIM SHE SAW THAT BLOOD WAS POURING FROM THE UNDERSIDE OF HIS NECK + IT WAS PIERCED BY A VERY SMALL BUT VERY DEEP WOUND WHICH HAD DIVIDED THE CAROTID ARTERY + THE INSTRUMENT WITH WHICH THE INJURY HAD BEEN INFLICTED LAY UPON THE CARPET BESIDE HIM + IT WAS ONE OF THOSE SMALL SEALING WAX KNIVES TO BE FOUND ON OLD FASHIONED WRITING TABLES WITH AN IVORY HANDLE AND A STIFF BLADE + IT WAS PART OF THE FITTINGS OF THE PROFESSOR'S OWN DESK + AT FIRST THE MAID THOUGHT THAT YOUNG SMITH WAS ALREADY DEAD BUT ON POURING SOME WATER FROM THE CARAFE OVER HIS FOREHEAD HE OPENED HIS EYES FOR AN INSTANT + THE PROFESSOR HE MURMURED IT WAS SHE + THE MAID IS PREPARED TO SWEAR THAT THOSE WERE THE EXACT WORDS + HE TRIED DESPERATELY TO SAY SOMETHING ELSE AND HE HELD HIS RIGHT HAND UP IN THE AIR + THEN HE FELL BACK DEAD + IN THE MEANTIME THE HOUSEKEEPER HAD ALSO ARRIVED UPON THE SCENE BUT SHE WAS JUST TOO LATE TO CATCH THE YOUNG MAN'S DYING WORDS + LEAVING SUSAN WITH THE BODY SHE HURRIED TO THE PROFESSOR'S ROOM + HE WAS SITTING UP IN BED HORRIBLY AGITATED FOR HE HAD HEARD ENOUGH TO CONVINCE HIM THAT SOMETHING TERRIBLE HAD OCCURRED + MRS. MARKER IS PREPARED TO SWEAR THAT THE PROFESSOR WAS STILL IN HIS NIGHT CLOTHES AND INDEED IT WAS IMPOSSIBLE FOR HIM TO DRESS WITHOUT THE HELP OF MORTIMER WHOSE ORDERS WERE TO COME AT TWELVE O'CLOCK + THE PROFESSOR DECLARES THAT HE HEARD THE DISTANT CRY BUT THAT HE KNOWS NOTHING MORE + HE CAN GIVE NO EXPLANATION OF THE YOUNG MAN'S LAST WORDS THE PROFESSOR IT WAS SHE BUT IMAGINES THAT THEY WERE THE OUTCOME OF DELIRIUM + HE BELIEVES THAT WILLOUGHBY SMITH HAD NOT AN ENEMY IN THE WORLD AND CAN GIVE NO REASON FOR THE CRIME + HIS FIRST ACTION WAS TO SEND MORTIMER THE GARDENER FOR THE LOCAL POLICE + A LITTLE LATER THE CHIEF CONSTABLE SENT FOR ME + NOTHING WAS MOVED BEFORE I GOT THERE AND STRICT ORDERS WERE GIVEN THAT NO ONE SHOULD WALK UPON THE PATHS LEADING TO THE HOUSE + IT WAS A SPLENDID CHANCE OF PUTTING YOUR THEORIES INTO PRACTICE MR. SHERLOCK HOLMES + THERE WAS REALLY NOTHING WANTING + EXCEPT MR. SHERLOCK HOLMES SAID MY COMPANION WITH A SOMEWHAT BITTER SMILE + QUOTE WELL LET US HEAR ABOUT IT + WHAT SORT OF JOB DID YOU MAKE OF IT + I MUST ASK YOU FIRST MR. HOLMES TO GLANCE AT THIS ROUGH PLAN WHICH WILL GIVE YOU A GENERAL IDEA OF THE POSITION OF THE PROFESSOR'S STUDY AND THE VARIOUS POINTS OF THE CASE + IT WILL HELP YOU IN FOLLOWING MY INVESTIGATION + HE UNFOLDED THE ROUGH CHART WHICH I HERE REPRODUCE AND HE LAID IT ACROSS HOLMES'S KNEE + I ROSE AND STANDING BEHIND HOLMES STUDIED IT OVER HIS SHOULDER + IT IS VERY ROUGH OF COURSE AND IT ONLY DEALS WITH THE POINTS WHICH SEEM TO ME TO BE ESSENTIAL + ALL THE REST YOU WILL SEE LATER FOR YOURSELF + NOW FIRST OF ALL PRESUMING THAT THE ASSASSIN ENTERED THE HOUSE HOW DID HE OR SHE COME IN + UNDOUBTEDLY BY THE GARDEN PATH AND THE BACK DOOR FROM WHICH THERE IS DIRECT ACCESS TO THE STUDY + ANY OTHER WAY WOULD HAVE BEEN EXCEEDINGLY COMPLICATED + THE ESCAPE MUST HAVE ALSO BEEN MADE ALONG THAT LINE FOR OF THE TWO OTHER EXITS FROM THE ROOM ONE WAS BLOCKED BY SUSAN AS SHE RAN DOWNSTAIRS AND THE OTHER LEADS STRAIGHT TO THE PROFESSOR'S BEDROOM + I THEREFORE DIRECTED MY ATTENTION AT ONCE TO THE GARDEN PATH WHICH WAS SATURATED WITH RECENT RAIN AND WOULD CERTAINLY SHOW ANY FOOTMARKS + MY EXAMINATION SHOWED ME THAT I WAS DEALING WITH A CAUTIOUS AND EXPERT CRIMINAL + NO FOOTMARKS WERE TO BE FOUND ON THE PATH + THERE COULD BE NO QUESTION HOWEVER THAT SOMEONE HAD PASSED ALONG THE GRASS BORDER WHICH LINES THE PATH AND THAT HE HAD DONE SO IN ORDER TO AVOID LEAVING A TRACK + I COULD NOT FIND ANYTHING IN THE NATURE OF A DISTINCT IMPRESSION BUT THE GRASS WAS TRODDEN DOWN AND SOMEONE HAD UNDOUBTEDLY PASSED + IT COULD ONLY HAVE BEEN THE MURDERER SINCE NEITHER THE GARDENER NOR ANYONE ELSE HAD BEEN THERE THAT MORNING AND THE RAIN HAD ONLY BEGUN DURING THE NIGHT QUOTE + ONE MOMENT SAID HOLMES + WHERE DOES THIS PATH LEAD TO + TO THE ROAD + HOW LONG IS IT + A HUNDRED YARDS OR SO + QUOTE AT THE POINT WHERE THE PATH PASSES THROUGH THE GATE YOU COULD SURELY PICK UP THE TRACKS QUOTE + UNFORTUNATELY THE PATH WAS TILED AT THAT POINT + WELL ON THE ROAD ITSELF + NO IT WAS ALL TRODDEN INTO MIRE + TUT TUT + WELL THEN THESE TRACKS UPON THE GRASS WERE THEY COMING OR GOING + QUOTE IT WAS IMPOSSIBLE TO SAY + THERE WAS NEVER ANY OUTLINE + A LARGE FOOT OR A SMALL + YOU COULD NOT DISTINGUISH + HOLMES GAVE AN EJACULATION OF IMPATIENCE + IT HAS BEEN POURING RAIN AND BLOWING A HURRICANE EVER SINCE SAID HE + IT WILL BE HARDER TO READ NOW THAN THAT PALIMPSEST + WELL WELL. IT CAN'T BE HELPED + WHAT DID YOU DO + HOPKINS AFTER YOU HAD MADE CERTAIN THAT YOU HAD MADE CERTAIN OF NOTHING QUOTE + I THINK I MADE CERTAIN OF A GOOD DEAL MR. HOLMES + I KNEW THAT SOMEONE HAD ENTERED THE HOUSE CAUTIOUSLY FROM WITHOUT + I NEXT EXAMINED THE CORRIDOR + IT IS LINED WITH COCOANUT MATTING AND HAD TAKEN NO IMPRESSION OF ANY KIND + THIS BROUGHT ME INTO THE STUDY ITSELF + IT IS A SCANTILY FURNISHED ROOM + THE MAIN ARTICLE IS A LARGE WRITING TABLE WITH A FIXED BUREAU + THIS BUREAU CONSISTS OF A DOUBLE COLUMN OF DRAWERS WITH A CENTRAL SMALL CUPBOARD BETWEEN THEM + THE DRAWERS WERE OPEN THE CUPBOARD LOCKED + THE DRAWERS IT SEEMS WERE ALWAYS OPEN AND NOTHING OF VALUE WAS KEPT IN THEM + THERE WERE SOME PAPERS OF IMPORTANCE IN THE CUPBOARD BUT THERE WERE NO SIGNS THAT THIS HAD BEEN TAMPERED WITH AND THE PROFESSOR ASSURES ME THAT NOTHING WAS MISSING + IT IS CERTAIN THAT NO ROBBERY HAS BEEN COMMITTED + I COME NOW TO THE BODY OF THE YOUNG MAN + IT WAS FOUND NEAR THE BUREAU AND JUST TO THE LEFT OF IT AS MARKED UPON THAT CHART + THE STAB WAS ON THE RIGHT SIDE OF THE NECK AND FROM BEHIND FORWARD SO THAT IT IS ALMOST IMPOSSIBLE TBAT IT COULD HAVE BEEN SELF INFLICTED + UNLESS HE FELL UPON THE KNIFE SAID HOLMES + EXACTLY + THE IDEA CROSSED MY MIND + BUT WE FOUND THE KNIFE SOME FEET AWAY FROM THE BODY SO THAT SEEMS IMPOSSIBLE + THEN OF COURSE THERE ARE THE MAN'S OWN DYING WORDS + AND FINALLY THERE WAS THIS VERY IMPORTANT PIECE OF EVIDENCE WHICH WAS FOUND CLASPED IN THE DEAD MAN'S RIGHT HAND QUOTE + FROM HIS POCKET STANLEY HOPKINS DREW A SMALL PAPER PACKET + HE UNFOLDED IT AND DISCLOSED A GOLDEN PINCE NEZ WITH TWO BROKEN ENDS OF BLACK SILK CORD DANGLING FROM THE END OF IT + WILLOUGHBY SMITH HAD EXCELLENT SIGHT HE ADDED + THERE CAN BE NO QUESTION THAT THIS WAS SNATCHED FROM THE FACE OR THE PERSON OF THE ASSASSIN + SHERLOCK HOLMES TOOK THE GLASSES INTO HIS HAND AND EXAMINED THEM WITH THE UTMOST ATTENTION AND INTEREST + HE HELD THEM ON HIS NOSE ENDEAVOURED TO READ THROUGH THEM WENT TO THE WINDOW AND STARED UP THE STREET WITH THEM LOOKED AT THEM MOST MINUTELY IN THE FULL LIGHT OF THE LAMP AND FINALLY WITH A CHUCKLE SEATED HIMSELF AT THE TABLE AND WROTE A FEW LINES UPON A SHEET OF PAPER WHICH HE TOSSED ACROSS TO STANLEY HOPKINS + THAT'S THE BEST I CAN DO FOR YOU SAID HE + IT MAY PROVE TO BE OF SOME USE + THE ASTONISHED DETECTIVE READ THE NOTE ALOUD + IT RAN AS FOLLOWS WANTED A WOMAN OF GOOD ADDRESS ATTIRED LIKE A LADY + SHE HAS A REMARKABLY THICK NOSE WITH EYES WHICH ARE SET CLOSE UPON EITHER SIDE OF IT + SHE HAS A PUCKERED FOREHEAD A PEERING EXPRESSION AND PROBABLY ROUNDED SHOULDERS + THERE ARE INDICATIONS THAT SHE HAS HAD RECOURSE TO AN OPTICIAN AT LEAST TWICE DURING THE LAST FEW MONTHS + AS HER GLASSES ARE OF REMARKABLE STRENGTH AND AS OPTICIANS ARE NOT VERY NUMER OUS THERE SHOULD BE NO DIFFICULTY IN TRACING HER QUOTE + HOLMES SMILED AT THE ASTONISHMENT OF HOPKINS WHICH MUST HAVE BEEN REFLECTED UPON MY FEATURES + SURELY MY DEDUCTIONS ARE SIMPLICITY ITSELF SAID HE + IT WOULD BE DIFFICULT TO NAME ANY ARTICLES WHICH AFFORD A FINER FIELD FOR INFERENCE THAN A PAIR OF GLASSES ESPECIALLY SO REMARKABLE A PAIR AS THESE + THAT THEY BELONG TO A WOMAN I INFER FROM THEIR DELICACY AND ALSO OF COURSE FROM THE LAST WORDS OF THE DYING MAN + AS TO HER BEING A PERSON OF REFINEMENT AND WELL DRESSED THEY ARE AS YOU PERCEIVE HANDSOMELY MOUNTED IN SOLID GOLD AND IT IS INCONCEIVABLE THAT ANYONE WHO WORE SUCH GLASSES COULD BE SLATTERNLY IN OTHER RESPECTS + YOU WILL FIND THAT THE CLIPS ARE TOO WIDE FOR YOUR NOSE SHOWING THAT THE LADY'S NOSE WAS VERY BROAD AT THE BASE + THIS SORT OF NOSE IS USUALLY A SHORT AND COARSE ONE BUT THERE IS A SUFFICIENT NUMBER OF EXCEPTIONS TO PREVENT ME FROM BEING DOGMATIC OR FROM INSISTING UPON THIS POINT IN MY DESCRIPTION + MY OWN FACE IS A NARROW ONE AND YET I FIND THAT I CANNOT GET MY EYES INTO THE CENTRE NOR NEAR THE CENTRE OF THESE GLASSES + THEREFORE THE LADY'S EYES ARE SET VERY NEAR TO THE SIDES OF THE NOSE + YOU WILL PERCEIVE WATSON THAT THE GLASSES ARE CONCAVE AND OF UNUSUAL STRENGTH + A LADY WHOSE VISION HAS BEEN SO EXTREMELY CONTRACTED ALL HER LIFE IS SURE TO HAVE THE PHYSICAL CHARACTERISTICS OF SUCH VISION WHICH ARE SEEN IN THE FOREHEAD THE EYELIDS AND THE SHOULDERS + YES I SAID I CAN FOLLOW EACH OF YOUR ARGUMENTS + I CONFESS HOWEVER THAT I AM UNABLE TO UNDERSTAND HOW YOU ARRIVE AT THE DOUBLE VISIT TO THE OPTICIAN + HOLMES TOOK THE GLASSES IN HIS HAND + QUOTE YOU WILL PERCEIVE QUOTE HE SAID QUOTE THAT THE CLIPS ARE LINED WITH TINY BANDS OF CORK TO SOFTEN THE PRESSURE UPON THE NOSE + ONE OF THESE IS DISCOLOURED AND WORN TO SOME SLIGHT EXTENT BUT THE OTHER IS NEW + EVIDENTLY ONE HAS FALLEN OFF AND BEEN REPLACED + I SHOULD JUDGE THAT THE OLDER OF THEM HAS NOT BEEN THERE MORE THAN A FEW MONTHS + THEY EXACTLY CORRESPOND SO I GATHER THAT THE LADY WENT BACK TO THE SAME ESTABLISHMENT FOR THE SECOND + BY GEORGE IT'S MARVELLOUS CRIED HOPKINS IN AN ECSTASY OF ADMIRATION + TO THINK THAT I HAD ALL THAT EVIDENCE IN MY HAND AND NEVER KNEW IT + I HAD INTENDED HOWEVER TO GO THE ROUND OF THE LONDON OPTICIANS + OF COURSE YOU WOULD + MEANWHILE HAVE YOU ANYTHING MORE TO TELL US ABOUT THE CASE QUOTE + NOTHING MR. HOLMES + I THINK THAT YOU KNOW AS MUCH AS I DO NOW PROBABLY MORE + WE HAVE HAD INQUIRIES MADE AS TO ANY STRANGER SEEN ON THE COUNTRY ROADS OR AT THE RAILWAY STATION + WE HAVE HEARD OF NONE + WHAT BEATS ME IS THE UTTER WANT OF ALL OBJECT IN THE CRIME + NOT A GHOST OF A MOTIVE CAN ANYONE SUGGEST + AH THERE I AM NOT IN A POSITION TO HELP YOU + BUT I SUPPOSE YOU WANT US TO COME OUT TO MORROW + IF IT IS NOT ASKING TOO MUCH MR. HOLMES + THERE'S A TRAIN FROM CHARING CROSS TO CHATHAM AT SIX IN THE MORNING AND WE SHOULD BE AT YOXLEY OLD PLACE BETWEEN EIGHT AND NINE QUOTE + THEN WE SHALL TAKE IT + YOUR CASE HAS CERTAINLY SOME FEATURES OF GREAT INTEREST AND I SHALL BE DELIGHTED TO LOOK INTO IT + WELL IT'S NEARLY ONE AND WE HAD BEST GET A FEW HOURS' SLEEP + I DARESAY YOU CAN MANAGE ALL RIGHT ON THE SOFA IN FRONT OF THE FIRE + I'LL LIGHT MY SPIRIT LAMP AND GIVE YOU A CUP OF COFFEE BEFORE WE START + THE GALE HAD BLOWN ITSELF OUT NEXT DAY BUT IT WAS A BITTER MORNING WHEN WE STARTED UPON OUR JOURNEY + WE SAW THE COLD WINTER SUN RISE OVER THE DREARY MARSHES OF THE THAMES AND THE LONG SULLEN REACHES OF THE RIVER WHICH I SHALL EVER ASSOCIATE WITH OUR PURSUIT OF THE ANDAMAN ISLANDER IN THE EARLIER DAYS OF OUR CAREER + AFTER A LONG AND WEARY JOURNEY WE ALIGHTED AT A SMALL STATION SOME MILES FROM CHATHAM + WHILE A HORSE WAS BEING PUT INTO A TRAP AT THE LOCAL INN WE SNATCHED A HURRIED BREAKFAST AND SO WE WERE ALL READY FOR BUSINESS WHEN WE AT LAST ARRIVED AT YOXLEY OLD PLACE + A CONSTABLE MET US AT THE GARDEN GATE + WELL WILSON ANY NEWS + NO SIR NOTHING + NO REPORTS OF ANY STRANGER SEEN + QUOTE NO SIR + DOWN AT THE STATION THEY ARE CERTAIN THAT NO STRANGER EITHER CAME OR WENT YESTERDAY + HAVE YOU HAD INQUIRIES MADE AT INNS AND LODGINGS + YES SIR THERE IS NO ONE THAT WE CANNOT ACCOUNT FOR + WELL IT'S ONLY A REASONABLE WALK TO CHATHAM + ANYONE MIGHT STAY THERE OR TAKE A TRAIN WITHOUT BEING OBSERVED + THIS IS THE GARDEN PATH OF WHICH I SPOKE MR. HOLMES + I'LL PLEDGE MY WORD THERE WAS NO MARK ON IT YESTERDAY + QUOTE ON WHICH SIDE WERE THE MARKS ON THE GRASS QUOTE + THIS SIDE SIR + THIS NARROW MARGIN OF GRASS BETWEEN THE PATH AND THE FLOWERBED + I CAN'T SEE THE TRACES NOW BUT THEY WERE CLEAR TO ME THEN + YES YES SOMEONE HAS PASSED ALONG SAID HOLMES STOOPING OVER THE GRASS BORDER + OUR LADY MUST HAVE PICKED HER STEPS CAREFULLY MUST SHE NOT SINCE ON THE ONE SIDE SHE WOULD LEAVE A TRACK ON THE PATH AND ON THE OTHER AN EVEN CLEARER ONE ON THE SOFT BED + YES SIR SHE MUST HAVE BEEN A COOL HAND + I SAW AN INTENT LOOK PASS OVER HOLMES'S FACE + QUOTE YOU SAY THAT SHE MUST HAVE COME BACK THIS WAY QUOTE + YES SIR THERE IS NO OTHER + ON THIS STRIP OF GRASS + CERTAINLY MR. HOLMES + HUM + IT WAS A VERY REMARKABLE PERFORMANCE VERY REMARKABLE + WELL I THINK WE HAVE EXHAUSTED THE PATH + LET US GO FARTHER + THIS GARDEN DOOR IS USUALLY KEPT OPEN I SUPPOSE + THEN THIS VISITOR HAD NOTHING TO DO BUT TO WALK IN + THE IDEA OF MURDER WAS NOT IN HER MIND OR SHE WOULD HAVE PROVIDED HERSELF WITH SOME SORT OF WEAPON INSTEAD OF HAVING TO PICK THIS KNIFE OFF THE WRITING TABLE + SHE ADVANCED ALONG THIS CORRIDOR LEAVING NO TRACES UPON THE COCOANUT MATTING + THEN SHE FOUND HERSELF IN THIS STUDY + HOW LONG WAS SHE THERE + WE HAVE NO MEANS OF JUDGING + QUOTE NOT MORE THAN A FEW MINUTES SIR + I FORGOT TO TELL YOU THAT MRS. MARKER THE HOUSEKEEPER HAD BEEN IN THERE TIDYING NOT VERY LONG BEFORE ABOUT A QUARTER OF AN HOUR SHE SAYS + WELL THAT GIVES US A LIMIT + OUR LADY ENTERS THIS ROOM AND WHAT DOES SHE DO + SHE GOES OVER TO THE WRITING TABLE + WHAT FOR + NOT FOR ANYTHING IN THE DRAWERS + IF THERE HAD BEEN ANYTHING WORTH HER TAKING IT WOULD SURELY HAVE BEEN LOCKED UP + NO IT WAS FOR SOMETHING IN THAT WOODEN BUREAU + HALLOA WHAT IS THAT SCRATCH UPON THE FACE OF IT + JUST HOLD A MATCH WATSON + WHY DID YOU NOT TELL ME OF THIS HOPKINS + THE MARK WHICH HE WAS EXAMINING BEGAN UPON THE BRASSWORK ON THE RIGHTHAND SIDE OF THE KEYHOLE AND EXTENDED FOR ABOUT FOUR INCHES WHERE IT HAD SCRATCHED THE VARNISH FROM THE SURFACE + I NOTICED IT MR. HOLMES BUT YOU'LL ALWAYS FIND SCRATCHES ROUND A KEYHOLE + THIS IS RECENT QUITE RECENT + SEE HOW THE BRASS SHINES WHERE IT IS CUT + AN OLD SCRATCH WOULD BE THE SAME COLOUR AS THE SURFACE + LOOK AT IT THROUGH MY LENS + THERE'S THE VARNISH TOO LIKE EARTH ON EACH SIDE OF A FURROW + IS MRS. MARKER THERE QUOTE + A SAD FACED ELDERLY WOMAN CAME INTO THE ROOM + DID YOU DUST THIS BUREAU YESTERDAY MORNING + YES SIR + DID YOU NOTICE THIS SCRATCH + NO SIR I DID NOT + I AM SURE YOU DID NOT FOR A DUSTER WOULD HAVE SWEPT AWAY THESE SHREDS OF VARNISH + WHO HAS THE KEY OF THIS BUREAU QUOTE + THE PROFESSOR KEEPS IT ON HIS WATCH CHAIN + IS IT A SIMPLE KEY + NO SIR IT IS A CHUBB'S KEY + VERY GOOD + MRS. MARKER YOU CAN GO + NOW WE ARE MAKING A LITTLE PROGRESS + OUR LADY ENTERS THE ROOM ADVANCES TO THE BUREAU AND EITHER OPENS IT OR TRIES TO DO SO + WHILE SHE IS THUS ENGAGED YOUNG WILLOUGHBY SMITH ENTERS THE ROOM + IN HER HURRY TO WITHDRAW THE KEY SHE MAKES THIS SCRATCH UPON THE DOOR + HE SEIZES HER AND SHE SNATCHING UP THE NEAREST OBJECT WHICH HAPPENS TO BE THIS KNIFE STRIKES AT HIM IN ORDER TO MAKE HIM LET GO HIS HOLD + THE BLOW IS A FATAL ONE + HE FALLS AND SHE ESCAPES EITHER WITH OR WITHOUT THE OBJECT FOR WHICH SHE HAS COME + IS SUSAN THE MAID THERE + COULD ANYONE HAVE GOT AWAY THROUGH THAT DOOR AFTER THE TIME THAT YOU HEARD THE CRY SUSAN + QUOTE NO SIR IT IS IMPOSSIBLE + BEFORE I GOT DOWN THE STAIR I'D HAVE SEEN ANYONE IN THE PASSAGE + BESIDES THE DOOR NEVER OPENED OR I WOULD HAVE HEARD IT + THAT SETTLES THIS EXIT + THEN NO DOUBT THE LADY WENT OUT THE WAY SHE CAME + I UNDERSTAND THAT THIS OTHER PASSAGE LEADS ONLY TO THE PROFESSOR'S ROOM + THERE IS NO EXIT THAT WAY + NO SIR + WE SHALL GO DOWN IT AND MAKE THE ACQUAINTANCE OF THE PROFESSOR + HALLOA HOPKINS THIS IS VERY IMPORTANT VERY IMPORTANT INDEED + THE PROFESSOR'S CORRIDOR IS ALSO LINED WITH COCOANUT MATTING QUOTE + WELL SIR WHAT OF THAT + DON'T YOU SEE ANY BEARING UPON THE CASE + WELL WELL + I DON'T INSIST UPON IT + NO DOUBT I AM WRONG + AND YET IT SEEMS TO ME TO BE SUGGESTIVE + COME WITH ME AND INTRODUCE ME + WE PASSED DOWN THE PASSAGE WHICH WAS OF THE SAME LENGTH AS THAT WHICH LED TO THE GARDEN + AT THE END WAS A SHORT FLIGHT OF STEPS ENDING IN A DOOR + OUR GUIDE KNOCKED AND THEN USHERED US INTO THE PROFESSOR'S BEDROOM + IT WAS A VERY LARGE CHAMBER LINED WITH INNUMERABLE VOLUMES WHICH HAD OVERFLOWED FROM THE SHELVES AND LAY IN PILES IN THE CORNERS OR WERE STACKED ALL ROUND AT THE BASE OF THE CASES + THE BED WAS IN THE CENTRE OF THE ROOM AND IN IT PROPPED UP WITH PILLOWS WAS THE OWNER OF THE HOUSE + I HAVE SELDOM SEEN A MORE REMARKABLE LOOKING PERSON + IT WAS A GAUNT AQUILINE FACE WHICH WAS TURNED TOWARDS US WITH PIERCING DARK EYES WHICH LURKED IN DEEP HOLLOWS UNDER OVERHUNG AND TUFTED BROWS + HIS HAIR AND BEARD WERE WHITE SAVE THAT THE LATTER WAS CURIOUSLY STAINED WITH YELLOW AROUND HIS MOUTH + A CIGARETTE GLOWED AMID THE TANGLE OF WHITE HAIR AND THE AIR OF THE ROOM WAS FETID WITH STALE TOBACCO SMOKE + AS HE HELD OUT HIS HAND TO HOLMES I PERCEIVED THAT IT WAS ALSO STAINED WITH YELLOW NICOTINE + A SMOKER MR. HOLMES SAID HE SPEAKING IN WELL CHOSEN ENGLISH WITH A CURIOUS LITTLE MINCING ACCENT + PRAY TAKE A CIGARETTE + AND YOU SIR + I CAN RECOMMEND THEM FOR I HAVE THEM ESPECIALLY PREPARED BY LONIDES OF ALEXANDRIA + HE SENDS ME A THOUSAND AT A TIME AND I GRIEVE TO SAY THAT I HAVE TO ARRANGE FOR A FRESH SUPRLY EVERY FORTNIGHT + BAD SIR VERY BAD BUT AN OLD MAN HAS FEW PLEASURES + TOBACCO AND MY WORK THAT IS ALL THAT IS LEFT TO ME QUOTE + HOLMES HAD LIT A CIGARETTE AND WAS SHOOTING LITTLE DARTING GLANCES ALL OVER THE ROOM + TOBACCO AND MY WORK BUT NOW ONLY TOBACCO THE OLD MAN EXCLAIMED + ALAS WHAT A FATAL INTERRUPTION + WHO COULD HAVE FORESEEN SUCH A TERRIBLE CATASTROPHE + SO ESTIMABLE A YOUNG MAN + I ASSURE YOU THAT AFTER A FEW MONTHS' TRAINING HE WAS AN ADMIRABLE ASSISTANT + WHAT DO YOU THINK OF THE MATTER MR. HOLMES + I HAVE NOT YET MADE UP MY MIND + I SHALL INDEED BE INDEBTED TO YOU IF YOU CAN THROW A LIGHT WHERE ALL IS SO DARK TO US + TO A POOR BOOKWORM AND INVALID LIKE MYSELF SUCH A BLOW IS PARALYZING + I SEEM TO HAVE LOST THE FACULTY OF THOUGHT + BUT YOU ARE A MAN OF ACTION YOU ARE A MAN OF AFFAIRS + IT IS PART OF THE EVERYDAY ROUTINE OF YOUR LIFE + YOU CAN PRESERVE YOUR BALANCE IN EVERY EMERGENCY + WE ARE FORTUNATE INDEED IN HAVING YOU AT OUR SIDE QUOTE + HOLMES WAS PACING UP AND DOWN ONE SIDE OF THE ROOM WHILST THE OLD PROFESSOR WAS TALKING + I OBSERVED THAT HE WAS SMOKING WITH EXTRAORDINARY RAPIDITY + IT WAS EVIDENT THAT HE SHARED OUR HOST'S LIKING FOR THE FRESH ALEXANDRIAN CIGARETTES + YES SIR IT IS A CRUSHING BLOW SAID THE OLD MAN + THAT IS MY MAGNUM OPUS THE PILE OF PAPERS ON THE SIDE TABLE YONDER + IT IS MY ANALYSIS OF THE DOCUMENTS FOUND IN THE COPTIC MONASTERIES OF SYRIA AND EGYPT A WORK WHICH WILL CUT DEEP AT THE VERY FOUNDATION OF REVEALED RELIGION + WITH MY ENFEEBLED HEALTH I DO NOT KNOW WHETHER I SHALL EVER BE ABLE TO COMPLETE IT NOW THAT MY ASSISTANT HAS BEEN TAKEN FROM ME + DEAR ME + MR. HOLMES WHY YOU ARE EVEN A QUICKER SMOKER THAN I AM MYSELF + HOLMES SMILED + I AM A CONNOISSEUR SAID HE TAKING ANOTHER CIGARETTE FROM THE BOX HIS FOURTH AND LIGHTING IT FROM THE STUB OF THAT WHICH HE HAD FINISHED + I WILL NOT TROUBLE YOU WITH ANY LENGTHY CROSSEXAMINATION PROFESSOR CORAM SINCE I GATHER THAT YOU WERE IN BED AT THE TIME OF THE CRIME AND COULD KNOW NOTHING ABOUT IT + I WOULD ONLY ASK THIS WHAT DO YOU IMAGINE THAT THIS POOR FELLOW MEANT BY HIS LAST WORDS THE PROFESSOR IT WAS SHE QUOTE + THE PROFESSOR SHOOK HIS HEAD + SUSAN IS A COUNTRY GIRL SAID HE AND YOU KNOW THE INCREDIBLE STUPIDITY OF THAT CLASS + I FANCY THAT THE POOR FELLOW MURMURED SOME INCOHERENT DELIRIOUS WORDS AND THAT SHE TWISTED THEM INTO THIS MEANINGLESS MESSAGE + I SEE + YOU HAVE NO EXPLANATION YOURSELF OF THE TRAGEDY + POSSIBLY AN ACCIDENT POSSIBLY I ONLY BREATHE IT AMONG OURSELVES A SUICIDE + YOUNG MEN HAVE THEIR HIDDEN TROUBLES SOME AFFAIR OF THE HEART PERHAPS WHICH WE HAVE NEVER KNOWN + IT IS A MORE PROBABLE SUPPOSITION THAN MURDER QUOTE + BUT THE EYEGLASSES + AH + I AM ONLY A STUDENT A MAN OF DREAMS + I CANNOT EXPLAIN THE PRACTICAL THINGS OF LIFE + BUT STILL WE ARE AWARE MY FRIEND THAT LOVE GAGES MAY TAKE STRANGE SHAPES + BY ALL MEANS TAKE ANOTHER CIGARETTE + IT IS A PLEASURE TO SEE ANYONE APPRECIATE THEM SO + A FAN A GLOVE GLASSES WHO KNOWS WHAT ARTICLE MAY BE CARRIED AS A TOKEN OR TREASURED WHEN A MAN PUTS AN END TO HIS LIFE + THIS GENTLEMAN SPEAKS OF FOOTSTEPS IN THE GRASS BUT AFTER ALL IT IS EASY TO BE MISTAKEN ON SUCH A POINT + AS TO THE KNIFE IT MIGHT WELL BE THROWN FAR FROM THE UNFORTUNATE MAN AS HE FELL + IT IS POSSIBLE THAT I SPEAK AS A CHILD BUT TO ME IT SEEMS THAT WILLOUGHBY SMITH HAS MET HIS FATE BY HIS OWN HAND + HOLMES SEEMED STRUCK BY THE THEORY THUS PUT FORWARD AND H. C. CONTINUED TO WALK UP AND DOWN FOR SOME TIME LOST IN THOUGHT AND CONSUMING CIGARETTE AFTER CIGARETTE + TELL ME PROFESSOR CORAM HE SAID AT LAST WHAT IS IN THAT CUPBOARD IN THE BUREAU + NOTHING THAT WOULD HELP A THIEF + FAMILY PAPERS LETTERS FROM MY POOR WIFE DIPLOMAS OF UNIVERSITIES WHICH HAVE DONE ME HONOUR + HERE IS THE KEY + YOU CAN LOOK FOR YOURSELF QUOTE + HOLMES PICKED UP THE KEY AND LOOKED AT IT FOR AN INSTANT THEN HE HANDED IT BACK + NO I HARDLY THINK THAT IT WOULD HELP ME SAID HE + I SHOULD PREFER TO GO QUIETLY DOWN TO YOUR GARDEN AND TURN THE WHOLE MATTER OVER IN MY HEAD + THERE IS SOMETHING TO BE SAID FOR THE THEORY OF SUICIDE WHICH YOU HAVE PUT FORWARD + WE MUST APOLOGIZE FOR HAVING INTRUDED UPON YOU PROFESSOR CORAM AND I PROMISE THAT WE WON'T DISTURB YOU UNTIL AFTER LUNCH + AT TWO O'CLOCK WE WILL COME AGAIN AND REPORT TO YOU ANYTHING WHICH MAY HAVE HAPPENED IN THE INTERVAL + HOLMES WAS CURIOUSLY DISTRAIT AND WE WALKED UP AND DOWN THE GARDEN PATH FOR SOME TIME IN SILENCE + HAVE YOU A CLUE + I ASKED AT LAST + IT DEPENDS UPON THOSE CIGARETTES THAT I SMOKED SAID HE + QUOTE IT IS POSSIBLE THAT I AM UTTERLY MISTAKEN + THE CIGARETTES WILL SHOW ME + WELL WELL YOU MAY SEE FOR YOURSELF + IF NOT THERE'S NO HARM DONE + OF COURSE WE ALWAYS HAVE THE OPTICIAN CLUE TO FALL BACK UPON BUT I TAKE A SHORT CUT WHEN I CAN GET IT + AH HERE IS THE GOOD MRS. MARKER + LET US ENJOY FIVE MINUTES OF INSTRUCTIVE CONVERSATION WITH HER + I MAY HAVE REMARKED BEFORE THAT HOLMES HAD WHEN HE LIKED A PECULIARLY INGRATIATING WAY WITH WOMEN AND THAT HE VERY READILY ESTABLISHED TERMS OF CONFIDENCE WITH THEM + IN HALF THE TIME WHICH HE HAD NAMED HE HAD CAPTURED THE HOUSEKEEPER'S GOODWILL AND WAS CHATTING WITH HER AS IF HE HAD KNOWN HER FOR YEARS + YES MR. HOLMES IT IS AS YOU SAY SIR + HE DOES SMOKE SOMETHING TERRIBLE + ALL DAY AND SOMETIMES ALL NIGHT SIR + I'VE SEEN THAT ROOM OF A MORNING WELL SIR YOU'D HAVE THOUGHT IT WAS A LONDON FOG + POOR YOUNG MR. SMITH HE WAS A SMOKER ALSO BUT NOT AS BAD AS THE PROFESSOR + HIS HEALTH WELL I DON'T KNOW THAT IT'S BETTER NOR WORSE FOR THE SMOKING + QUOTE AH QUOTE SAID HOLMES QUOTE BUT IT KILLS THE APPETITE QUOTE + WELL I DON'T KNOW ABOUT THAT SIR + I SUPPOSE THE PROFESSOR EATS HARDLY ANYTHING + WELL HE IS VARIABLE + I'LL SAY THAT FOR HIM + I'LL WAGER HE TOOK NO BREAKFAST THIS MORNING AND WON'T FACE HIS LUNCH AFTER ALL THE CIGARETTES I SAW HIM CONSUME + QUOTE WELL YOU'RE OUT THERE SIR AS IT HAPPENS FOR HE ATE A REMARKABLE BIG BREAKFAST THIS MORNING + I DON'T KNOW WHEN I'VE KNOWN HIM MAKE A BETTER ONE AND HE'S ORDERED A GOOD DISH OF CUTLETS FOR HIS LUNCH + I'M SURPRISED MYSELF FOR SINCE I CAME INTO THAT ROOM YESTERDAY AND SAW YOUNG MR. SMITH LYING THERE ON THE FLOOR I COULDN'T BEAR TO LOOK AT FOOD + WELL IT TAKES ALL SORTS TO MAKE A WORLD AND THE PROFESSOR HASN'T LET IT TAKE HIS APPETITE AWAY + WE LOITERED THE MORNING AWAY IN THE GARDEN + STANLEY HOPKINS HAD GONE DOWN TO THE VILLAGE TO LOOK INTO SOME RUMOURS OF A STRANGE WOMAN WHO HAD BEEN SEEN BY SOME CHILDREN ON THE CHATHAM ROAD THE PREVIOUS MORNING + AS TO MY FRIEND ALL HIS USUAL ENERGY SEEMED TO HAVE DESERTED HIM + I HAD NEVER KNOWN HIM HANDLE A CASE IN SUCH A HALF HEARTED FASHION + EVEN THE NEWS BROUGHT BACK BY HOPKINS THAT HE HAD FOUND THE CHILDREN AND THAT THEY HAD UNDOUBTEDLY SEEN A WOMAN EXACTLY CORRESPONDING WITH HOLMES'S DESCRIPTION AND WEARING EITHER SPECTACLES OR EYEGLASSES FAILED TO ROUSE ANY SIGN OF KEEN INTEREST + HE WAS MORE ATTENTIVE WHEN SUSAN WHO WAITED UPON US AT LUNCH VOLUNTEERED THE INFORMATION THAT SHE BELIEVED MR. SMITH HAD BEEN OUT FOR A WALK YESTERDAY MORNING AND THAT HE HAD ONLY RETURNED HALF AN HOUR BEFORE THE TRAGEDY OCCURRED + I COULD NOT MYSELF SEE THE BEARING OF THIS INCIDENT BUT I CLEARLY PERCEIVED THAT HOLMES WAS WEAVING IT INTO THE GENERAL SCHEME WHICH HE HAD FORMED IN HIS BRAIN + SUDDENLY HE SPRANG FROM HIS CHAIR AND GLANCED AT HIS WATCH + TWO O'CLOCK GENTLEMEN SAID HE + WE MUST GO UP AND HAVE IT OUT WITH OUR FRIEND THE PROFESSOR + THE OLD MAN HAD JUST FINISHED HIS LUNCH AND CERTAINLY HIS EMPTY DISH BORE EVIDENCE TO THE GOOD APPETITE WITH WHICH HIS HOUSEKEEPER HAD CREDITED HIM + HE WAS INDEED A WEIRD FIGURE AS HE TURNED HIS WHITE MANE AND HIS GLOWING EYES TOWARDS US + THE ETERNAL CIGARETTE SMOULDERED IN HIS MOUTH + HE HAD BEEN DRESSED AND WAS SEATED IN AN ARMCHAIR BY THE FIRE + WELL MR. HOLMES HAVE YOU SOLVED THIS MYSTERY YET + HE SHOVED THE LARGE TIN OF CIGARETTES WHICH STOOD ON A TABLE BESIDE HIM TOWARDS MY COMPANION + HOLMES STRETCHED OUT HIS HAND AT THE SAME MOMENT AND BETWEEN THEM THEY TIPPED THE BOX OVER THE EDGE + FOR A MINUTE OR TWO WE WERE ALL ON OUR KNEES RETRIEVING STRAY CIGARETTES FROM IMPOSSIBLE PLACES + WHEN WE ROSE AGAIN I OBSERVED HOLMES'S EYES WERE SHINING AND HIS CHEEKS TINGED WITH COLOUR + ONLY AT A CRISIS HAVE I SEEN THOSE BATTLE SIGNALS FLYING + YES SAID HE I HAVE SOLVED IT + STANLEY HOPKINS AND I STARED IN AMAZEMENT + SOMETHING LIKE A SNEER QUIVERED OVER THE GAUNT FEATURES OF THE OLD PROFESSOR + QUOTE INDEED + IN THE GARDEN + NO HERE + HERE + WHEN + THIS INSTANT + QUOTE YOU ARE SURELY JOKING MR. SHERLOCK HOLMES + YOU COMPEL ME TO TELL YOU THAT THIS IS TOO SERIOUS A MATTER TO BE TREATED IN SUCH A FASHION + I HAVE FORGED AND TESTED EVERY LINK OF MY CHAIN PROFESSOR CORAM AND I AM SURE THAT IT IS SOUND + WHAT YOUR MOTIVES ARE OR WHAT EXACT PART YOU PLAY IN THIS STRANGE BUSINESS I AM NOT YET ABLE TO SAY + IN A FEW MINUTES I SHALL PROBABLY HEAR IT FROM YOUR OWN LIPS + MEANWHILE I WILL RECONSTRUCT WHAT IS PAST FOR YOUR BENEFIT SO THAT YOU MAY KNOW THE INFORMATION WHICH I STILL REQUIRE + A LADY YESTERDAY ENTERED YOUR STUDY + SHE CAME WITH THE INTENTION OF POSSESSING HERSELF OF CERTAIN DOCUMENTS WHICH WERE IN YOUR BUREAU + SHE HAD A KEY OF HER OWN + I HAVE HAD AN OPPORTUNITY OF EXAMINING YOURS AND I DO NOT FIND THAT SLIGHT DISCOLOURATION WHICH THE SCRATCH MADE UPON THE VARNISH WOULD HAVE PRODUCED + YOU WERE NOT AN ACCESSORY THEREFORE AND SHE CAME SO FAR AS I CAN READ THE EVIDENCE WITHOUT YOUR KNOWLEDGE TO ROB YOU + THE PROFESSOR BLEW A CLOUD FROM HIS LIPS + THIS IS MOST INTERESTING AND INSTRUCTIVE SAID HE + QUOTE HAVE YOU NO MORE TO ADD + SURELY HAVING TRACED THIS LADY SO FAR YOU CAN ALSO SAY WHAT HAS BECOME OF HER + I WILL ENDEAVOUR TO DO SO + IN THE FIRST PLACE SHE WAS SEIZED BY YOUR SECRETARY AND STABBED HIM IN ORDER TO ESCAPE + THIS CATASTROPHE I AM INCLINED TO REGARD AS AN UNHAPPY ACCIDENT FOR I AM CONVINCED THAT THE LADY HAD NO INTENTION OF INFLICTING SO GRIEVOUS AN INJURY + AN ASSASSIN DOES NOT COME UNARMED + HORRIFIED BY WHAT SHE HAD DONE SHE RUSHED WILDLY AWAY FROM THE SCENE OF THE TRAGEDY + UNFORTUNATELY FOR HER SHE HAD LOST HER GLASSES IN THE SCUFFLE AND AS SHE WAS EXTREMELY SHORTSIGHTED SHE WAS REALLY HELPLESS WITHOUT THEM + SHE RAN DOWN A CORRIDOR WHICH SHE IMAGINED TO BE THAT BY WHICH SHE HAD COME BOTH WERE LINED WITH COCOANUT MATTING AND IT WAS ONLY WHEN IT WAS TOO LATE THAT SHE UNDERSTOOD THAT SHE HAD TAKEN THE WRONG PASSAGE AND THAT HER RETREAT WAS CUT OFF BEHIND HER + WHAT WAS SHE TO DO + SHE COULD NOT GO BACK + SHE COULD NOT REMAIN WHERE SHE WAS + SHE MUST GO ON + SHE WENT ON + SHE MOUNTED A STAIR PUSHED OPEN A DOOR AND FOUND HERSELF IN YOUR ROOM + THE OLD MAN SAT WITH HIS MOUTH OPEN STARING WILDLY AT HOLMES + AMAZEMENT AND FEAR WERE STAMPED UPON HIS EXPRESSIVE FEATURES + NOW WITH AN EFFORT HE SHRUGGED HIS SHOULDERS AND BURST INTO INSINCERE LAUGHTER + ALL VERY FINE MR. HOLMES SAID HE + BUT THERE IS ONE LITTLE FLAW IN YOUR SPLENDID THEORY + I WAS MYSELF IN MY ROOM AND I NEVER LEFT IT DURING THE DAY QUOTE + I AM AWARE OF THAT PROFESSOR CORAM + AND YOU MEAN TO SAY THAT I COULD LIE UPON THAT BED AND NOT BE AWARE THAT A WOMAN HAD ENTERED MY ROOM + I NEVER SAID SO + YOU WERE AWARE OF IT + YOU SPOKE WITH HER + YOU RECOGNIZED HER + YOU AIDED HER TO ESCAPE + AGAIN THE PROFESSOR BURST INTO HIGH KEYED LAUGHTER + HE HAD RISEN TO HIS FEET AND HIS EYES GLOWED LIKE EMBERS + YOU ARE MAD HE CRIED + QUOTE YOU ARE TALKING INSANELY + I HELPED HER TO ESCAPE + WHERE IS SHE NOW + SHE IS THERE SAID HOLMES AND HE POINTED TO A HIGH BOOKCASE IN THE CORNER OF THE ROOM + I SAW THE OLD MAN THROW UP HIS ARMS A TERRIBLE CONVULSION PASSED OVER HIS GRIM FACE AND HE FELL BACK IN HIS CHAIR + AT THE SAME INSTANT THE BOOKCASE AT WHICH HOLMES POINTED SWUNG ROUND UPON A HINGE AND A WOMAN RUSHED OUT INTO THE ROOM + YOU ARE RIGHT SHE CRIED IN A STRANGE FOREIGN VOICE + YOU ARE RIGHT + I AM HERE + SHE WAS BROWN WITH THE DUST AND DRAPED WITH THE COBWEBS WHICH HAD COME FROM THE WALLS OF HER HIDING PLACE + HER FACE TOO WAS STREAKED WITH GRIME AND AT THE BEST SHE COULD NEVER HAVE BEEN HANDSOME FOR SHE HAD THE EXACT PHYSICAL CHARACTERISTICS WHICH HOLMES HAD DIVINED WITH IN ADDITION A LONG AND OBSTINATE CHIN + WHAT WITH HER NATURAL BLINDNESS AND WHAT WITH THE CHANGE FROM DARK TO LIGHT SHE STOOD AS ONE DAZED BLINKING ABOUT HER TO SEE WHERE AND WHO WE WERE + AND YET IN SPITE OF ALL THESE DISADVANTAGES THERE WAS A CERTAIN NOBILITY IN THE WOMAN'S BEARING A GALLANTRY IN THE DEFIANT CHIN AND IN THE UPRAISED HEAD WHICH COMPELLED SOMETHING OF RESPECT AND ADMIRATION + STANLEY HOPKINS HAD LAID HIS HAND UPON HER ARM AND CLAIMED HER AS HIS PRISONER BUT SHE WAVED HIM ASIDE GENTLY AND YET WITH AN OVER MASTERING DIGNITY WHICH COMPELLED OBEDIENCE + THE OLD MAN LAY BACK IN HIS CHAIR WITH A TWITCHING FACE AND STARED AT HER WITH BROODING EYES + QUOTE YES SIR I AM YOUR PRISONER QUOTE SHE SAID + FROM WHERE I STOOD I COULD HEAR EVERYTHING AND I KNOW THAT YOU HAVE LEARNED THE TRUTH + I CONFESS IT ALL + IT WAS I WHO KILLED THE YOUNG MAN + BUT YOU ARE RIGHT YOU WHO SAY IT WAS AN ACCIDENT + I DID NOT EVEN KNOW THAT IT WAS A KNIFE WHICH I HELD IN MY HAND FOR IN MY DESPAIR I SNATCHED ANYTHING FROM THE TABLE AND STRUCK AT HIM TO MAKE HIM LET ME GO + IT IS THE TRUTH THAT I TELL + MADAM SAID HOLMES I AM SURE THAT IT IS THE TRUTH + I FEAR THAT YOU ARE FAR FROM WELL + SHE HAD TURNED A DREADFUL COLOUR THE MORE GHASTLY UNDER THE DARK DUST STREAKS UPON HER FACE + SHE SEATED HERSELF ON THE SIDE OF THE BED THEN SHE RESUMED + I HAVE ONLY A LITTLE TIME HERE SHE SAID BUT I WOULD HAVE YOU TO KNOW THE WHOLE TRUTH + I AM THIS MAN'S WIFE + HE IS NOT AN ENGLISHMAN + HE IS A RUSSIAN + HIS NAME I WILL NOT TELL QUOTE + FOR THE FIRST TIME THE OLD MAN STIRRED + GOD BLESS YOU ANNA HE CRIED + GOD BLESS YOU + SHE CAST A LOOK OF THE DEEPEST DISDAIN IN HIS DIRECTION + WHY SHOULD YOU CLING SO HARD TO THAT WRETCHED LIFE OF YOURS SERGIUS SAID SHE + IT HAS DONE HARM TO MANY AND GOOD TO NONE NOT EVEN TO YOURSELF + HOWEVER IT IS NOT FOR ME TO CAUSE THE FRAIL THREAD TO BE SNAPPED BEFORE GOD'S TIME + I HAVE ENOUGH ALREADY UPON MY SOUL SINCE I CROSSED THE THRESHOLD OF THIS CURSED HOUSE + BUT I MUST SPEAK OR I SHALL BE TOO LATE + I HAVE SAID GENTLEMEN THAT I AM THIS MAN'S WIFE + HE WAS FIFTY AND I A FOOLISH GIRL OF TWENTY WHEN WE MARRIED + IT WAS IN A CITY OF RUSSIA A UNIVERSITY I WILL NOT NAME THE PLACE QUOTE + GOD BLESS YOU ANNA MURMURED THE OLD MAN AGAIN + WE WERE REFORMERS REVOLUTIONISTS NIHILISTS YOU UNDERSTAND + HE AND I AND MANY MORE + THEN THERE CAME A TIME OF TROUBLE A POLICE OFFICER WAS KILLED MANY WERE ARRESTED EVIDENCE WAS WANTED AND IN ORDER TO SAVE HIS OWN LIFE AND TO EARN A GREAT REWARD MY HUSBAND BETRAYED HIS OWN WIFE AND HIS COMPANIONS + YES WE WERE ALL ARRESTED UPON HIS CONFESSION + SOME OF US FOUND OUR WAY TO THE GALLOWS AND SOME TO SIBERIA + I WAS AMONG THESE LAST BUT MY TERM WAS NOT FOR LIFE + MY HUSBAND CAME TO ENGLAND WITH HIS ILL GOTTEN GAINS AND HAS LIVED IN QUIET EVER SINCE KNOWING WELL THAT IF THE BROTHERHOOD KNEW WHERE HE WAS NOT A WEEK WOULD PASS BEFORE JUSTICE WOULD BE DONE + THE OLD MAN REACHED OUT A TREMBLING HAND AND HELPED HIMSELF TO A CIGARETTE + I AM IN YOUR HANDS ANNA SAID HE + YOU WERE ALWAYS GOOD TO ME + QUOTE I HAVE NOT YET TOLD YOU THE HEIGHT OF HIS VILLAINY QUOTE SAID SHE + AMONG OUR COMRADES OF THE ORDER THERE WAS ONE WHO WAS THE FRIEND OF MY HEART + HE WAS NOBLE UNSELFISH LOVING ALL THAT MY HUSBAND WAS NOT + HE HATED VIOLENCE + WE WERE ALL GUILTY IF THAT IS GUILT BUT HE WAS NOT + HE WROTE FOREVER DISSUADING US FROM SUCH A COURSE + THESE LETTERS WOULD HAVE SAVED HIM + SO WOULD MY DIARY IN WHICH FROM DAY TO DAY I HAD ENTERED BOTH MY FEELINGS TOWARDS HIM AND THE VIEW WHICH EACH OF US HAD TAKEN + MY HUSBAND FOUND AND KEPT BOTH DIARY AND LETTERS + HE HID THEM AND HE TRIED HARD TO SWEAR AWAY THE YOUNG MAN'S LIFE + IN THIS HE FAILED BUT ALEXIS WAS SENT A CONVICT TO SIBERIA WHERE NOW AT THIS MOMENT HE WORKS IN A SALT MINE + THINK OF THAT YOU VILLAIN YOU VILLAIN NOW NOW AT THIS VERY MOMENT ALEXIS A MAN WHOSE NAME YOU ARE NOT WORTHY TO SPEAK WORKS AND LIVES LIKE A SLAVE AND YET I HAVE YOUR LIFE IN MY HANDS AND I LET YOU GO + YOU WERE ALWAYS A NOBLE WOMAN ANNA SAID THE OLD MAN PUFFING AT HIS CIGARETTE + SHE HAD RISEN BUT SHE FELL BACK AGAIN WITH A LITTLE CRY OF PAIN + I MUST FINISH SHE SAID + WHEN MY TERM WAS OVER I SET MYSELF TO GET THE DIARY AND LETTERS WHICH IF SENT TO THE RUSSIAN GOVERNMENT WOULD PROCURE MY FRIEND'S RELEASE + I KNEW THAT MY HUSBAND HAD COME TO ENGLAND + AFTER MONTHS OF SEARCHING I DISCOVERED WHERE HE WAS + I KNEW THAT HE STILL HAD THE DIARY FOR WHEN I WAS IN SIBERIA I HAD A LETTER FROM HIM ONCE REPROACHING ME AND QUOTING SOME PASSAGES FROM ITS PAGES + YET I WAS SURE THAT WITH HIS REVENGEFUL NATURE HE WOULD NEVER GIVE IT TO ME OF HIS OWN FREE WILL + I MUST GET IT FOR MYSELF + WITH THIS OBJECT I ENGAGED AN AGENT FROM A PRIVATE DETECTIVE FIRM WHO ENTERED MY HUSBAND'S HOUSE AS A SECRETARY IT WAS YOUR SECOND SECRETARY SERGIUS THE ONE WHO LEFT YOU SO HURRIEDLY + HE FOUND THAT PAPERS WERE KEPT IN THE CUPBOARD AND HE GOT AN IMPRESSION OF THE KEY + HE WOULD NOT GO FARTHER + HE FURNISHED ME WITH A PLAN OF THE HOUSE AND HE TOLD ME THAT IN THE FORENOON THE STUDY WAS ALWAYS EMPTY AS THE SECRETARY WAS EMPLOYED UP HERE + SO AT LAST I TOOK MY COURAGE IN BOTH HANDS AND I CAME DOWN TO GET THE PAPERS FOR MYSELF + I SUCCEEDED BUT AT WHAT A COST + QUOTE I HAD JUST TAKEN THE PAPERS AND WAS LOCKING THE CUPBOARD WHEN THE YOUNG MAN SEIZED ME + I HAD SEEN HIM ALREADY THAT MORNING + HE HAD MET ME ON THE ROAD AND I HAD ASKED HIM TO TELL ME WHERE PROFESSOR CORAM LIVED NOT KNOWING THAT HE WAS IN HIS EMPLOY + EXACTLY + EXACTLY SAID HOLMES + THE SECRETARY CAME BACK AND TOLD HIS EMPLOYER OF THE WOMAN HE HAD MET + THEN IN HIS LAST BREATH HE TRIED TO SEND A MESSAGE THAT IT WAS SHE THE SHE WHOM HE HAD JUST DISCUSSED WITH HIM + YOU MUST LET ME SPEAK SAID THE WOMAN IN AN IMPERATIVE VOICE AND HER FACE CONTRACTED AS IF IN PAIN + QUOTE WHEN HE HAD FALLEN I RUSHED FROM THE ROOM CHOSE THE WRONG DOOR AND FOUND MYSELF IN MY HUSBAND'S ROOM + HE SPOKE OF GIVING ME UP + I SHOWED HIM THAT IF HE DID SO HIS LIFE WAS IN MY HANDS + IF HE GAVE ME TO THE LAW I COULD GIVE HIM TO THE BROTHERHOOD + IT WAS NOT THAT I WISHED TO LIVE FOR MY OWN SAKE BUT IT WAS THAT I DESIRED TO ACCOMPLISH MY PURPOSE + HE KNEW THAT I WOULD DO WHAT I SAID THAT HIS OWN FATE WAS INVOLVED IN MINE + FOR THAT REASON AND FOR NO OTHER HE SHIELDED ME + HE THRUST ME INTO THAT DARK HIDINGPLACE A RELIC OF OLD DAYS KNOWN ONLY TO HIMSELF + HE TOOK HIS MEALS IN HIS OWN ROOM AND SO WAS ABLE TO GIVE ME PART OF HIS FOOD + IT WAS AGREED THAT WHEN THE POLICE LEFT THE HOUSE I SHOULD SLIP AWAY BY NIGHT AND COME BACK NO MORE + BUT IN SOME WAY YOU HAVE READ OUR PLANS + SHE TORE FROM THE BOSOM OF HER DRESS A SMALL PACKET + THESE ARE MY LAST WORDS SAID SHE HERE IS THE PACKET WHICH WILL SAVE ALEXIS + I CONFIDE IT TO YOUR HONOUR AND TO YOUR LOVE OF JUSTICE + TAKE IT + YOU WILL DELIVER IT AT THE RUSSIAN EMBASSY + NOW I HAVE DONE MY DUTY AND + STOP HER CRIED HOLMES + HE HAD BOUNDED ACROSS THE ROOM AND HAD WRENCHED A SMALL PHIAL FROM HER HAND + TOO LATE SHE SAID SINKING BACK ON THE BED + QUOTE TOO LATE + I TOOK THE POISON BEFORE I LEFT MY HIDING PLACE + MY HEAD SWIMS + I AM GOING + I CHARGE YOU SIR TO REMEMBER THE PACKET + A SIMPLE CASE AND YET IN SOME WAYS AN INSTRUCTIVE ONE HOLMES REMARKED AS WE TRAVELLED BACK TO TOWN + IT HINGED FROM THE OUTSET UPON THE PINCE NEZ + BUT FOR THE FORTUNATE CHANCE OF THE DYING MAN HAVING SEIZED THESE I AM NOT SURE THAT WE COULD EVER HAVE REACHED OUR SOLUTION + IT WAS CLEAR TO ME FROM THE STRENGTH OF THE GLASSES THAT THE WEARER MUST HAVE BEEN VERY BLIND AND HELPLESS WHEN DEPRIVED OF THEM + WHEN YOU ASKED ME TO BELIEVE THAT SHE WALKED ALONG A NARROW STRIP OF GRASS WITHOUT ONCE MAKING A FALSE STEP I REMARKED AS YOU MAY REMEMBER THAT IT WAS A NOTEWORTHY PERFORMANCE + IN MY MIND I SET IT DOWN AS AN IMPOSSIBLE PERFORMANCE SAVE IN THE UNLIKELY CASE THAT SHE HAD A SECOND PAIR OF GLASSES + I WAS FORCED THEREFORE TO CONSIDER SERIOUSLY THE HYPOTHESIS THAT SHE HAD REMAINED WITHIN THE HOUSE + ON PERCEIVING THE SIMILARITY OF THE TWO CORRIDORS IT BECAME CLEAR THAT SHE MIGHT VERY EASILY HAVE MADE SUCH A MISTAKE AND IN THAT CASE IT WAS EVIDENT THAT SHE MUST HAVE ENTERED THE PROFESSOR'S ROOM + I WAS KEENLY ON THE ALERT THEREFORE FOR WHATEVER WOULD BEAR OUT THIS SUPPOSITION AND I EXAMINED THE ROOM NARROWLY FOR ANYTHING IN THE SHAPE OF A HIDING PLACE + THE CARPET SEEMED CONTINUOUS AND FIRMLY NAILED SO I DISMISSED THE IDEA OF A TRAP DOOR + THERE MIGHT WELL BE A RECESS BEHIND THE BOOKS + AS YOU ARE AWARE SUCH DEVICES ARE COMMON IN OLD LIBRARIES + I OBSERVED THAT BOOKS WERE PILED ON THE FLOOR AT ALL OTHER POINTS BUT THAT ONE BOOKCASE WAS LEFT CLEAR + THIS THEN MIGHT BE THE DOOR + I COULD SEE NO MARKS TO GUIDE ME BUT THE CARPET WAS OF A DUN COLOUR WHICH LENDS ITSELF VERY WELL TO EXAMINATION + I THEREFORE SMOKED A GREAT NUMBER OF THOSE EXCELLENT CIGARETTES AND I DROPPED THE ASH ALL OVER THE SPACE IN FRONT OF THE SUSPECTED BOOKCASE + IT WAS A SIMPLE TRICK BUT EXCEEDINGLY EFFECTIVE + I THEN WENT DOWNSTAIRS AND I ASCERTAINED IN YOUR PRESENCE WATSON WITHOUT YOUR PERCEIVING THE DRIFT OF MY REMARKS THAT PROFESSOR CORAM'S CONSUMPTION OF FOOD HAD INCREASED AS ONE WOULD EXPECT WHEN HE IS SUPPLYING A SECOND PERSON + WE THEN ASCENDED TO THE ROOM AGAIN WHEN BY UPSETTING THE CIGARETTE BOX I OBTAINED A VERY EXCELLENT VIEW OF THE FLOOR AND WAS ABLE TO SEE QUITE CLEARLY FROM THE TRACES UPON THE CIGARETTE ASH THAT THE PRISONER HAD IN OUR ABSENCE COME OUT FROM HER RETREAT + WELL HOPKINS HERE WE ARE AT CHARING CROSS AND I CONGRATULATE YOU ON HAVING BROUGHT YOUR CASE TO A SUCCESSFUL CONCLUSION + YOU ARE GOING TO HEADQUARTERS NO DOUBT + I THINK WATSON YOU AND I WILL DRIVE TOGETHER TO THE RUSSIAN EMBASSY diff --git a/samples/LMTutorial/train/greek_interpreter.txt b/samples/LMTutorial/train/greek_interpreter.txt new file mode 100755 index 0000000..a53e1d0 --- /dev/null +++ b/samples/LMTutorial/train/greek_interpreter.txt @@ -0,0 +1,435 @@ + DURING MY LONG AND INTIMATE ACQUAINTANCE WITH MR. SHERLOCK HOLMES I HAD NEVER HEARD HIM REFER TO HIS RE THREE SLASH FOUR A T. I. O. N. S. AND HARDLY EVER TO HIS OWN EARLY LIFE + THIS RETICENCE UPON HIS PART HAD INCREASED THE SOMEWHAT INHUMAN EFFECT WHICH HE PRODUCED UPON ME UNTIL SOMETIMES I FOUND MYSELF REGARDING HIM AS AN ISOLATED PHENOMENON A BRAIN WITHOUT A HEART AS DEFICIENT IN HUMAN SYMPATHY AS HE WAS PREEMINENT IN INTELLIGENCE + HIS AVERSION TO WOMEN AND HIS DISINCLINATION TO FORM NEW FRIENDSHIPS WERE BOTH TYPICAL OF HIS UNEMOTIONAL CHARACTER BUT NOT MORE SO THAN HIS COMPLETE SUPPRESSION OF EVERY REFERENCE TO HIS OWN PEOPLE + I HAD COME TO BELIEVE THAT HE WAS AN ORPHAN WITH NO RELATIVES LIVING BUT ONE DAY. TO MY VERY GREAT SURPRISE HE BEGAN TO TALK TO ME ABOUT HIS BROTHER + IT WAS AFTER TEA ON A SUMMER EVENING AND THE CONVERSATION WHICH HAD ROAMED IN A DESULTORY SPASMODIC FASHION FROM GOLF CLUBS TO THE CAUSES OF THE CHANGE IN THE OBLIQUITY OF THE ECLIPTIC CAME ROUND AT LAST TO THE QUESTION OF ATAVISM AND HEREDITARY APTITUDES + THE POINT UNDER DISCUSSION WAS HOW FAR ANY SINGULAR GIFT IN AN INDIVIDUAL WAS DUE TO HIS ANCESTRY AND HOW FAR TO HIS OWN EARLY TRAINING + QUOTE IN YOUR OWN CASE QUOTE SAID I QUOTE FROM ALL THAT YOU HAVE TOLD ME IT SEEMS OBVIOUS THAT YOUR FACULTY OF OBSERVATION AND YOUR PECULIAR FACILITY FOR DEDUCTION ARE DUE TO YOUR OWN SYSTEMATIC TRAINING QUOTE + TO SOME EXTENT HE ANSWERED THOUGHTFULLY + MY ANCESTORS WERE COUNTRY SQUIRES WHO APPEAR TO HAVE LED MUCH THE SAME LIFE AS IS NATURAL TO THEIR CLASS + BUT NONE THE LESS MY TURN THAT WAY IS IN MY VEINS AND MAY HAVE COME WITH MY GRANDMOTHER WHO WAS THE SISTER OF VERNET THE FRENCH ARTIST + ART IN THE BLOOD IS LIABLE TO TAKE THE STRANGEST FORMS + BUT HOW DO YOU KNOW THAT IT IS HEREDITARY + BECAUSE MY BROTHER MYCROFT POSSESSES IT IN A LARGER DEGREE THAN I DO + THIS WAS NEWS TO ME INDEED + IF THERE WERE ANOTHER MAN WITH SUCH SINGULAR POWERS IN ENGLAND HOW WAS IT THAT NEITHER POLICE NOR PUBLIC HAD HEARD OF HIM + I PUT THE QUESTION WITH A HINT THAT IT WAS MY COMPANION'S MODESTY WHICH MADE HIM ACKNOWLEDGE HIS BROTHER AS HIS SUPERIOR + HOLMES LAUGHED AT MY SUGGESTION + QUOTE MY DEAR WATSON QUOTE SAID HE QUOTE I CANNOT AGREE WITH THOSE WHO RANK MODESTY AMONG THE VIRTUES + TO THE LOGICIAN ALL THINGS SHOULD BE SEEN EXACTLY AS THEY ARE AND TO UNDERESTIMATE ONE'S SELF IS AS MUCH A DEPARTURE FROM TRUTH AS TO EXAGGERATE ONE'S OWN POWERS + WHEN I SAY THEREFORE THAT MYCROFT HAS BETTER POWERS OF OBSERVATION THAN I YOU MAY TAKE IT THAT I AM SPEAKING THE EXACT AND LITERAL TRUTH + IS HE YOUR JUNIOR + SEVEN YEARS MY SENIOR + HOW COMES IT THAT HE IS UNKNOWN + OH HE IS VERY WELL KNOWN IN HIS OWN CIRCLE + QUOTE WHERE THEN QUOTE + WELL IN THE DIOGENES CLUB FOR EXAMPLE + I HAD NEVER HEARD OF THE INSTITUTION AND MY FACE MUST HAVE PROCLAIMED AS MUCH FOR SHERLOCK HOMES PULLED OUT HIS WATCH + THE DIOGENES CLUB IS THE QUEEREST CLUB IN LONDON AND MYCROFT ONE OF THE QUEEREST MEN + HE'S ALWAYS THERE FROM QUARTER TO FIVE TO TWENTY TO EIGHT + IT'S SIX NOW SO IF YOU CARE FOR A STROLL THIS BEAUTIFUL EVENING I SHALL BE VERY HAPPY TO INTRODUCE YOU TO TWO CURIOSITIES + FIVE MINUTES LATER WE WERE IN THE STREET WALKING TOWARDS REGENT'S CIRCUS + YOU WONDER SAID MY COMPANION WHY IT IS THAT MYCROFT DOES NOT USE HIS POWERS FOR DETECTIVE WORK + HE IS INCAPABLE OF IT + QUOTE I SAID THAT HE WAS MY SUPERIOR IN OBSERVATION AND DEDUCTION + IF THE ART OF THE DETECTIVE BEGAN AND ENDED IN REASONING FROM AN ARMCHAIR MY BROTHER WOULD BE THE GREATEST CRIMINAL AGENT THAT EVER LIVED + BUT HE HAS NO AMBITION AND NO ENERGY + HE WILL NOT EVEN GO OUT OF HIS WAY TO VERIFY HIS OWN SOLUTIONS AND WOULD RATHER BE CONSIDERED WRONG THAN TAKE THE TROUBLE TO PROVE HIMSELF RIGHT + AGAIN AND AGAIN I HAVE TAKEN A PROBLEM TO HIM AND HAVE RECEIVED AN EXPLANATION WHICH HAS AFTERWARDS PROVED TO BE THE CORRECT ONE + AND YET HE WAS ABSOLUTELY INCAPABLE OF WORKING OUT THE PRACTICAL POINTS WHICH MUST BE GONE INTO BEFORE A CASE COULD BE LAID BEFORE A JUDGE OR JURY + IT IS NOT HIS PROFESSION THEN + BY NO MEANS + WHAT IS TO ME A MEANS OF LIVELIHOOD IS TO HIM THE MEREST HOBBY OF A DILETTANTE + HE HAS AN EXTRAORDINARY FACULTY FOR FIGURES AND AUDITS THE BOOKS IN SOME OF THE GOVERNMENT DEPARTMENTS + MYCROFT LODGES IN PALL MALL AND HE WALKS ROUND THE CORNER INTO WHITEHALL EVERY MORNING AND BACK EVERY EVENING + FROM YEAR'S END TO YEAR'S END HE TAKES NO OTHER EXERCISE AND IS SEEN NOWHERE ELSE EXCEPT ONLY IN THE DIOGENES CLUB WHICH IS JUST OPPOSITE HIS ROOMS + I CANNOT RECALL THE NAME + QUOTE VERY LIKELY NOT + THERE ARE MANY MEN IN LONDON YOU KNOW WHO SOME FROM SHYNESS SOME FROM MISANTHROPY HAVE NO WISH FOR THE COMPANY OF THEIR FELLOWS + YET THEY ARE NOT AVERSE TO COMFORTABLE CHAIRS AND THE LATEST PERIODICALS + IT IS FOR THE CONVENIENCE OF THESE THAT THE DIOGENES CLUB WAS STARTED AND IT NOW CONTAINS THE MOST UNSOCIABLE AND UNCLUBABLE MEN IN TOWN + NO MEMBER IS PERMITTED TO TAKE THE LEAST NOTICE OF ANY OTHER ONE + SAVE IN THE STRANGER'S ROOM NO TALKING IS UNDER ANY CIRCUMSTANCES ALLOWED AND THREE OFFENCES IF BROUGHT TO THE NOTICE OF THE COMMITTEE RENDER THE TALKER LIABLE TO EXPULSION + MY BROTHER WAS ONE OF THE FOUNDERS AND I HAVE MYSELF FOUND IT A VERY SOOTHING ATMOSPHERE + WE HAD REACHED PALL MALL AS WE TALKED AND WERE WALKING DOWN IT FROM THE SAINT JAMES'S END + SHERLOCK HOLMES STOPPED AT A DOOR SOME LITTLE DISTANCE FROM THE CARLTON AND CAUTIONING ME NOT TO SPEAK HE LED THE WAY INTO THE HALL + THROUGH THE GLASS PANELLING I CAUGHT A GLIMPSE OF A LARGE AND LUXURIOUS ROOM IN WHICH A CONSIDERABLE NUMBER OF MEN WERE SITTING ABOUT AND READING PAPERS EACH IN HIS OWN LITTLE NOOK + HOLMES SHOWED ME INTO A SMALL CHAMBER WHICH LOOKED OUT INTO PALL MALL AND THEN LEAVING ME FOR A MINUTE HE CAME BACK WITH A COMPANION WHOM I KNEW COULD ONLY BE HIS BROTHER + MYCROFT HOLMES WAS A MUCH LARGER AND STOUTER MAN THAN SHERLOCK + HIS BODY WAS ABSOLUTELY CORPULENT BUT HIS FACE THOUGH MASSIVE HAD PRESERVED SOMETHING OF THE SHARPNESS OF EXPRESSION WHICH WAS SO REMARKABLE IN THAT OF HIS BROTHER + HIS EYES WHICH WERE OF A PECULIARLY LIGHT WATERY GRAY SEEMED TO ALWAYS RETAIN THAT FAR AWAY INTROSPECTIVE LOOK WHICH I HAD ONLY OBSERVED IN SHERLOCK'S WHEN HE WAS EXERTING HIS FULL POWERS + I AM GLAD TO MEET YOU SIR SAID HE PUTTING OUT A BROAD FAT HAND LIKE THE FLIPPER OF A SEAL + I HEAR OF SHERLOCK EVERYWHERE SINCE YOU BECAME HIS CHRONICLER + BY THE WAY SHERLOCK I EXPECTED TO SEE YOU ROUND LAST WEEK TO CONSULT ME OVER THAT MANOR HOUSE CASE + I THOUGHT YOU MIGHT BE A LITTLE OUT OF YOUR DEPTH + NO I SOLVED IT SAID MY FRIEND SMILING + QUOTE IT WAS ADAMS OF COURSE QUOTE + YES IT WAS ADAMS + I WAS SURE OF IT FROM THE FIRST + THE TWO SAT DOWN TOGETHER IN THE BOW WINDOW OF THE CLUB + TO ANYONE WHO WISHES TO STUDY MANKIND THIS IS THE SPOT SAID MYCROFT + LOOK AT THE MAGNIFICENT TYPES + LOOK AT THESE TWO MEN WHO ARE COMING TOWARDS US FOR EXAMPLE + QUOTE THE BILLIARD MARKER AND THE OTHER QUOTE + PRECISELY + WHAT DO YOU MAKE OF THE OTHER + THE TWO MEN HAD STOPPED OPPOSITE THE WINDOW + SOME CHALK MARKS OVER THE WAISTCOAT POCKET WERE THE ONLY SIGNS OF BILLIARDS WHICH I COULD SEE IN ONE OF THEM + THE OTHER WAS A VERY SMALL DARK FELLOW WITH HIS HAT PUSHED BACK AND SEVERAL PACKAGES UNDER HIS ARM + AN OLD SOLDIER I PERCEIVE SAID SHERLOCK + AND VERY RECENTLY DISCHARGED REMARKED THE BROTHER + SERVED IN INDIA I SEE + QUOTE AND A NON COMMISSIONED OFFICER QUOTE + ROYAL ARTILLERY I FANCY SAID SHERLOCK + AND A WIDOWER + BUT WITH A CHILD + CHILDREN MY DEAR BOY CHILDREN + COME SAID I. LAUGHING THIS IS A LITTLE TOO MUCH + QUOTE SURELY QUOTE ANSWERED HOLMES QUOTE IT IS NOT HARD TO SAY THAT A MAN WITH THAT BEARING EXPRESSION OF AUTHORITY AND SUN BAKED SKIN. IS A SOLDIER IS MORE THAN A PRIVATE AND IS NOT LONG FROM INDIA QUOTE + THAT HE HAS NOT LEFT THE SERVICE LONG IS SHOWN BY HIS STILL WEARING HIS AMMUNITION BOOTS AS THEY ARE CALLED OBSERVED MYCROFT + HE HAD NOT THE CAVALRY STRIDE YET HE WORE HIS HAT ON ONE SIDE AS IS SHOWN BY THE LIGHTER SKIN ON THAT SIDE OF HIS BROW + HIS WEIGHT IS AGAINST HIS BEING A SAPPER + HE IS IN THE ARTILLERY + THEN OF COURSE HIS COMPLETE MOURNING SHOWS THAT HE HAS LOST SOMEONE VERY DEAR + THE FACT THAT HE IS DOING HIS OWN SHOPPING LOOKS AS THOUGH IT WERE HIS WIFE + HE HAS BEEN BUYING THINGS FOR CHILDREN YOU PERCEIVE + THERE IS A RATTLE WHICH SHOWS THAT ONE OF THEM IS VERY YOUNG + THE WIFE PROBABLY DIED IN CHILDBED + THE FACT THAT HE HAS A PICTURE BOOK UNDER HIS ARM SHOWS THAT THERE IS ANOTHER CHILD TO BE THOUGHT OF + I BEGAN TO UNDERSTAND WHAT MY FRIEND MEANT WHEN HE SAID THAT HIS BROTHER POSSESSED EVEN KEENER FACULTIES THAN HE DID HIMSELF + HE GLANCED ACROSS AT ME AND SMILED + MYCROFT TOOK SNUFF FROM A TORTOISE SHELL BOX AND BRUSHED AWAY THE WANDERING GRAINS FROM HIS COAT FRONT WITH A LARGE RED SILK HANDKERCHIEF + QUOTE BY THE WAY SHERLOCK QUOTE SAID HE QUOTE I HAVE HAD SOMETHING QUITE AFTER YOUR OWN HEART A MOST SINGULAR PROBLEM SUBMLTTED TO MY JUDGMENT + I REALLY HAD NOT THE ENERGY TO FOLLOW IT UP SAVE IN A VERY INCOMPLETE FASHION BUT IT GAVE ME A BASIS FOR SOME PLEASING SPECULATIONS + IF YOU WOULD CARE TO HEAR THE FACTS + MY DEAR MYCROFT I SHOULD BE DELIGHTED + THE BROTHER SCRIBBLED A NOTE UPON A LEAF OF HIS POCKET BOOK AND RINGING THE BELL HE HANDED IT TO THE WAITER + I HAVE ASKED MR. MELAS TO STEP ACROSS SAID HE + HE LODGES ON THE FLOOR ABOVE ME AND I HAVE SOME SLIGHT ACQUAINTANCE WITH HIM WHICH LED HIM TO COME TO ME IN HIS PERPLEXITY + MR. MELAS IS A GREEK BY EXTRACTION AS I UNDERSTAND AND HE IS A REMARKABLE LINGUIST + HE EARNS HIS LIVING PARTLY AS INTERPRETER IN THE LAW COURTS AND PARTLY BY ACTING AS GUIDE TO ANY WEALTHY ORIENTALS WHO MAY VISIT THE NORTHUMBERLAND AVENUE HOTELS + I THINK I WILL LEAVE HIM TO TELL HIS VERY REMARKABLE EXPERIENCE IN HIS OWN FASHION + A FEW MINUTES LATER WE WERE JOINED BY A SHORT STOUT MAN WHOSE OLIVE FACE AND COAL BLACK HAIR PROCLAIMED HIS SOUTHERN ORIGIN THOUGH HIS SPEECH WAS THAT OF AN EDUCATED ENGLISHMAN + HE SHOOK HANDS EAGERLY WITH SHERLOCK HOLMES AND HIS DARK EYES SPARKLED WITH PLEASURE WHEN HE UNDERSTOOD THAT THE SPECIALIST WAS ANXIOUS TO HEAR HIS STORY + QUOTE I DO NOT BELIEVE THAT THE POLICE CREDIT ME ON MY WORD I DO NOT QUOTE SAID HE IN A WAILING VOICE + JUST BECAUSE THEY HAVE NEVER HEARD OF IT BEFORE THEY THINK THAT SUCH A THING CANNOT BE + BUT I KNOW THAT I SHALL NEVER BE EASY IN MY MIND UNTIL I KNOW WHAT HAS BECOME OF MY POOR MAN WITH THE STICKING PLASTER UPON HIS FACE + I AM ALL ATTENTION SAID SHERLOCK HOLMES + THIS IS WEDNESDAY EVENING SAID MR. MELAS + WELL THEN IT WAS MONDAY NIGHT ONLY TWO DAYS AGO YOU UNDERSTAND THAT ALL THIS HAPPENED + I AM AN INTERPRETER AS PERHAPS MY NEIGHBOUR THERE HAS TOLD YOU + I INTERPRET ALL LANGUAGES OR NEARLY ALL BUT AS I AM A GREEK BY BIRTH AND WITH A GRECIAN NAME IT IS WITH THAT PARTICULAR TONGUE THAT I AM PRINCIPALLY ASSOCIATED + FOR MANY YEARS I HAVE BEEN THE CHIEF GREEK INTERPRETER IN LONDON AND MY NAME IS VERY WELL KNOWN IN THE HOTELS + QUOTE IT HAPPENS NOT UNFREQUENTLY THAT I AM SENT FOR AT STRANGE HOURS BY FOREIGNERS WHO GET INTO DIFFICULTIES OR BY TRAVELLERS WHO ARRIVE LATE AND WISH MY SERVICES + I WAS NOT SURPRISED THEREFORE ON MONDAY NIGHT WHEN A MR. LATIMER A VERY FASHIONABLY DRESSED YOUNG MAN CAME UP TO MY ROOMS AND ASKED ME TO ACCOMPANY HIM IN A CAB WHICH WAS WAITING AT THE DOOR + A GREEK FRIEND HAD COME TO SEE HIM UPON BUSINESS HE SAID AND AS HE COULD SPEAK NOTHING BUT HIS OWN TONGUE THE SERVICES OF AN INTERPRETER WERE INDISPENSABLE + HE GAVE ME TO UNDERSTAND THAT HIS HOUSE WAS SOME LITTLE DISTANCE OFF IN KENSINGTON AND HE SEEMED TO BE IN A GREAT HURRY BUSTLING ME RAPIDLY INTO THE CAB WHEN WE HAD DESCENDED TO THE STREET + I SAY INTO THE CAB BUT I SOON BECAME DOUBTFUL AS TO WHETHER T. T. WAS NOT A CARRIAGE IN WHICH I FOUND MYSELF + IT WAS CERTAINLY MORE ROOMY THAN THE ORDINARY FOUR WHEELED DISGRACE TO LONDON AND THE FITTINGS THOUGH FRAYED WERE OF RICH QUALITY + MR. LATIMER SEATED HIMSELF OPPOSITE TO ME AND WE STARTED OFF THROUGH CHARING CROSS AND UP THE SHAFTESBURY AVENUE + WE HAD COME OUT UPON OXFORD STREET AND I HAD VENTURED SOME REMARK AS TO THIS BEING A ROUNDABOUT WAY TO KENSINGTON WHEN MY WORDS WERE ARRESTED BY THE EXTRAORDINARY CONDUCT OF MY COMPANION + HE BEGAN BY DRAWING A MOST FORMIDABLE LOOKING BLUDGEON LOADED WITH LEAD FROM HIS POCKET AND SWITCHING IT BACKWARD AND FORWARD SEVERAL TIMES AS IF TO TEST ITS WEIGHT AND STRENGTH + THEN HE PLACED IT WITHOUT A WORD UPON THE SEAT BESIDE HIM + HAVING DONE THIS HE DREW UP THE WINDOWS ON EACH SIDE AND I FOUND TO MY ASTONISHMENT THAT THEY WERE COVERED WITH PAPER SO AS TO PREVENT MY SEEING THROUGH THEM + I AM SORRY TO CUT OFF YOUR VIEW MR. MELAS SAID HE + THE FACT IS THAT I HAVE NO INTENTION THAT YOU SHOULD SEE WHAT THE PLACE IS TO WHICH WE ARE DRIVING + IT MIGHT POSSIBLY BE INCONVENIENT TO ME IF YOU COULD FIND YOUR WAY THERE AGAIN + AS YOU CAN IMAGINE I WAS UTTERLY TAKEN ABACK BY SUCH AN ADDRESS + MY COMPANION WAS A POWERFUL BROAD SHOULDERED YOUNG FELLOW AND APART FROM THE WEAPON I SHOULD NOT HAVE HAD THE SLIGHTEST CHANCE IN A STRUGGLE WITH HIM + THIS IS VERY EXTRAORDINARY CONDUCT MR. LATIMER I STAMMERED + YOU MUST BE AWARE THAT WHAT YOU ARE DOING IS QUITE ILLEGAL + QUOTE IT IS SOMEWHAT OF A LIBERTY NO DOUBT SAID HE BUT WE'LL MAKE IT UP TO YOU + I MUST WARN YOU HOWEVER MR. MELAS THAT IF AT ANY TIME TO NIGHT YOU ATTEMPT TO RAISE AN ALARM OR DO ANYTHING WHICH IS AGAINST MY INTEREST YOU WILL FIND IT A VERY SERIOUS THING + I BEG YOU TO REMEMBER THAT NO ONE KNOWS WHERE YOU ARE AND THAT WHETHER YOU ARE IN THIS CARRIAGE OR IN MY HOUSE YOU ARE EQUALLY IN MY POWER + HIS WORDS WERE QUIET BUT HE HAD A RASPING WAY OF SAYING THEM WHICH WAS VERY MENACING + I SAT IN SILENCE WONDERING WHAT ON EARTH COULD BE HIS REASON FOR KIDNAPPING ME IN THIS EXTRAORDINARY FASHION + WHATEVER IT MIGHT BE IT WAS PERFECTLY CLEAR THAT THERE WAS NO POSSIBLE USE IN MY RESISTING AND THAT I COULD ONLY WAIT TO SEE WHAT MIGHT BEFALL + FOR NEARLY TWO HOURS WE DROVE WITHOUT MY HAVING THE LEAST CLUE AS TO WHERE WE WERE GOING + SOMETIMES THE RATTLE OF THE STONES TOLD OF A PAVED CAUSEWAY AND AT OTHERS OUR SMOOTH SILENT COURSE SUGGESTED ASPHALT BUT SAVE BY THIS VARIATION IN SOUND THERE WAS NOTHING AT ALL WHICH COULD IN THE REMOTEST WAY HELP ME TO FORM A GUESS AS TO WHERE WE WERE + THE PAPER OVER EACH WINDOW WAS IMPENETRABLE TO LIGHT AND A BLUE CURTAIN WAS DRAWN ACROSS THE GLASSWORK IN FRONT + IT WAS A QUARTER PAST SEVEN WHEN WE LEFT PALL MALL AND MY WATCH SHOWED ME THAT IT WAS TEN MINUTES TO NINE WHEN WE AT LAST CAME TO A STANDSTILL + MY COMPANION LET DOWN THE WINDOW AND I CAUGHT A GLIMPSE OF A LOW ARCHED DOORWAY WITH A LAMP BURNING ABOVE IT + AS I WAS HURRIED FROM THE CARRIAGE IT SWUNG OPEN AND I FOUND MYSELF INSIDE THE HOUSE WITH A VAGUE IMPRESSION OF A LAWN AND TREES ON EACH SIDE OF ME AS I ENTERED + WHETHER THESE WERE PRIVATE GROUNDS HOWEVER OR BONA FIDE COUNTRY WAS MORE THAN I COULD POSSIBLY VENTURE TO SAY + THERE WAS A COLOURED GAS LAMP INSIDE WHICH WAS TURNED SO LOW THAT I COULD SEE LITTLE SAVE THAT THE HALL WAS OF SOME SIZE AND HUNG WITH PICTURES + IN THE DIM LIGHT I COULD MAKE OUT THAT THE PERSON WHO HAD OPENED THE DOOR WAS A SMALL MEAN LOOKING MIDDLE AGED MAN WITH ROUNDED SHOULDERS + AS HE TURNED TOWARDS US THE GLINT OF THE LIGHT SHOWED ME THAT HE WAS WEARING GLASSES + IS THIS MR. MELAS HAROLD SAID HE + YES + QUOTE WELL DONE WELL DONE + NO ILL WILL MR. MELAS I HOPE BUT WE COULD NOT GET ON WITHOUT YOU + IF YOU DEAL FAIR WITH US YOU'LL NOT REGRET IT BUT IF YOU TRY ANY TRICKS GOD HELP YOU + HE SPOKE IN A NERVOUS JERKY FASHION AND WITH LITTLE GIGGLING LAUGHS IN BETWEEN BUT SOMEHOW HE IMPRESSED ME WITH FEAR MORE THAN THE OTHER + WHAT DO YOU WANT WITH ME + I ASKED + ONLY TO ASK A FEW QUESTIONS OF A GREEK GENTLEMAN WHO IS VISITING US AND TO LET US HAVE THE ANSWERS + BUT SAY NO MORE THAN YOU ARE TOLD TO SAY OR HERE CAME THE NERVOUS GIGGLE AGAIN YOU HAD BETTER NEVER HAVE BEEN BORN + AS HE SPOKE HE OPENED A DOOR AND SHOWED THE WAY INTO A ROOM WHICH APPEARED TO BE VERY RICHLY FURNISHED BUT AGAIN THE ONLY LIGHT WAS AFFORDED BY A SINGLE LAMP HALF TURNED DOWN + THE CHAMBER WAS CERTAINLY LARGE AND THE WAY IN WHICH MY FEET SANK INTO THE CARPET AS I STEPPED ACROSS IT TOLD ME OF ITS RICHNESS + I CAUGHT GLIMPSES OF VELVET CHAIRS A HIGH WHITE MARBLE MANTELPIECE AND WHAT SEEMED TO BE A SUIT OF JAPANESE ARMOUR AT ONE SIDE OF IT + THERE WAS A CHAIR JUST UNDER THE LAMP AND THE ELDERLY MAN MOTIONED THAT I SHOULD SIT IN IT + THE YOUNGER HAD LEFT US BUT HE SUDDENLY RETURNED THROUGH ANOTHER DOOR LEADING WITH HIM A GENTLEMAN CLAD IN SOME SORT OF LOOSE DRESSING GOWN WHO MOVED SLOWLY TOWARDS US + AS HE CAME INTO THE CIRCLE OF DIM LIGHT WHICH ENABLED ME TO SEE HIM MORE CLEARLY I WAS THRILLED WITH HORROR AT HIS APPEARANCE + HE WAS DEADLY PALE AND TERRIBLY EMACIATED WITH THE PROTRUDING BRILLIANT EYES OF A MAN WHOSE SPIRIT WAS GREATER THAN HIS STRENGTH + BUT WHAT SHOCKED ME MORE THAN ANY SIGNS OF PHYSICAL WEAKNESS WAS THAT HIS FACE WAS GROTESQUELY CRISS CROSSED WITH STICKING PLASTER AND THAT ONE LARGE PAD OF IT WAS FASTENED OVER HIS MOUTH + HAVE YOU THE SLATE HAROLD CRIED THE OLDER MAN AS THIS STRANGE BEING FELL RATHER THAN SAT DOWN INTO A CHAIR + ARE HIS HANDS LOOSE + NOW THEN GIVE HIM THE PENCIL + YOU ARE TO ASK THE QUESTIONS MR. MELAS AND HE WILL WRITE THE ANSWERS + ASK HIM FIRST OF ALL WHETHER HE IS PREPARED TO SIGN THE PAPERS + QUOTE THE MAN'S EYES FLASHED FIRE + NEVER HE WROTE IN GREEK UPON THE SLATE + ON NO CONDITIONS + I ASKED AT THE BIDDING OF OUR TYRANT + ONLY IF I SEE HER MARRIED IN MY PRESENCE BY A GREEK PRIEST WHOM I KNOW + THE MAN GIGGLED IN HIS VENOMOUS WAY + YOU KNOW WHAT AWAITS YOU THEN + QUOTE I CARE NOTHING FOR MYSELF + THESE ARE SAMPLES OF THE QUESTIONS AND ANSWERS WHICH MADE UP OUR STRANGE HALF SPOKEN HALF WRITTEN CONVERSATION + AGAIN AND AGAIN I HAD TO ASK HIM WHETHER HE WOULD GIVE IN AND SIGN THE DOCUMENTS + AGAIN AND AGAIN I HAD THE SAME INDIGNANT REPLY + BUT SOON A HAPPY THOUGHT CAME TO ME + I TOOK TO ADDING ON LITTLE SENTENCES OF MY OWN TO EACH QUESTION INNOCENT ONES AT FIRST TO TEST WHETHER EITHER OF OUR COMPANIONS KNEW ANYTHING OF THE MATTER AND THEN AS I FOUND THAT THEY SHOWED NO SIGN I PLAYED A MORE DANGEROUS GAME + OUR CONVERSATION RAN SOMETHING LIKE THIS + YOU CAN DO NO GOOD BY THIS OBSTINACY + WHO ARE YOU + I CARE NOT + I AM A STRANGER IN LONDON + YOUR FATE WILL BE ON YOUR OWN HEAD + HOW LONG HAVE YOU BEEN HERE + LET IT BE SO + THREE WEEKS + QUOTE THE PROPERTY CAN NEVER BE YOURS + WHAT AILS YOU + IT SHALL NOT GO TO VILLAINS + THEY ARE STARVING ME + YOU SHALL GO FREE IF YOU SIGN + WHAT HOUSE IS THIS + I WILL NEVER SIGN + I DO NOT KNOW + YOU ARE NOT DOING HER ANY SERVICE + WHAT IS YOUR NAME + LET ME HEAR HER SAY SO + KRATIDES + QUOTE YOU SHALL SEE HER IF YOU SIGN + WHERE ARE YOU FROM + THEN I SHALL NEVER SEE HER + ATHENS + ANOTHER FIVE MINUTES MR. HOLMES AND I SHOULD HAVE WORMED OUT THE WHOLE STORY UNDER THEIR VERY NOSES + MY VERY NEXT QUESTION MIGHT HAVE CLEARED THE MATTER UP BUT AT THAT INSTANT THE DOOR OPENED AND A WOMAN STEPPED INTO THE ROOM + I COULD NOT SEE HER CLEARLY ENOUGH TO KNOW MORE THAN THAT SHE WAS TALL AND GRACEFUL WITH BLACK HAIR AND CLAD IN SOME SORT OF LOOSE WHITE GOWN + HAROLD SAID SHE SPEAKING ENGLISH WITH A BROKEN ACCENT + I COULD NOT STAY AWAY LONGER + IT IS SO LONELY UP THERE WITH ONLY OH MY GOD IT IS PAUL + THESE LAST WORDS WERE IN GREEK AND AT THE SAME INSTANT THE MAN WITH A CONVULSIVE EFFORT TORE THE PLASTER FROM HIS LIPS AND SCREAMING OUT SOPHY + SOPHY RUSHED INTO THE WOMAN'S ARMS + THEIR EMBRACE WAS BUT FOR AN INSTANT HOWEVER FOR THE YOUNGER MAN SEIZED THE WOMAN AND PUSHED HER OUT OF THE ROOM WHILE THE ELDER EASILY OVERPOWERED HIS EMACIATED VICTIM AND DRAGGED HIM AWAY THROUGH THE OTHER DOOR + FOR A MOMENT I WAS LEFT ALONE IN THE ROOM AND I SPRANG TO MY FEET WITH SOME VAGUE IDEA THAT I MIGHT IN SOME WAY GET A CLUE TO WHAT THIS HOUSE WAS IN WHICH I FOUND MYSELF + FORTUNATELY HOWEVER I TOOK NO STEPS FOR LOOKING UP I SAW THAT THE OLDER MAN WAS STANDING IN THE DOORWAY WITH HIS EYES FIXED UPON ME + THAT WILL DO MR. MELAS SAID HE + YOU PERCEIVE THAT WE HAVE TAKEN YOU INTO OUR CONFIDENCE OVER SOME VERY PRIVATE BUSINESS + WE SHOULD NOT HAVE TROUBLED YOU ONLY THAT OUR FRIEND WHO SPEAKS GREEK AND WHO BEGAN THESE NEGOTIATIONS HAS BEEN FORCED TO RETURN TO THE EAST + IT WAS QUITE NECESSARY FOR US TO FIND SOMEONE TO TAKE HIS PLACE AND WE WERE FORTUNATE IN HEARING OF YOUR POWERS + QUOTE I BOWED + THERE ARE FIVE SOVEREIGNS HERE SAID HE WALKING UP TO ME WHICH WILL I HOPE BE A SUFFICIENT FEE + BUT REMEMBER HE ADDED TAPPING ME LIGHTLY ON THE CHEST AND GIGGLING IF YOU SPEAK TO A HUMAN SOUL ABOUT THIS ONE HUMAN SOUL MIND WELL MAY GOD HAVE MERCY UPON YOUR SOUL + I CANNOT TELL YOU THE LOATHING AND HORROR WITH WHICH THIS INSIGNIFICANT LOOKING MAN INSPIRED ME + I COULD SEE HIM BETTER NOW AS THE LAMP LIGHT SHONE UPON HIM + HIS FEATURES WERE PEAKY AND SALLOW AND HIS LITTLE POINTED BEARD WAS THREADY AND ILLNOURISHED + HE PUSHED HIS FACE FORWARD AS HE SPOKE AND HIS LIPS AND EYELIDS WERE CONTINUALLY TWITCHING LIKE A MAN WITH SAINT VITUS'S DANCE + I COULD NOT HELP THINKING THAT HIS STRANGE CATCHY LITTLE LAUGH WAS ALSO A SYMPTOM OF SOME NERVOUS MALADY + THE TERROR OF HIS FACE LAY IN HIS EYES HOWEVER STEEL GRAY AND GLISTENING COLDLY WITH A MALIGNANT INEXORABLE CRUELTY IN THEIR DEPTHS + WE SHALL KNOW IF YOU SPEAK OF THIS SAID HE + WE HAVE OUR OWN MEANS OF INFORMATION + NOW YOU WILL FIND THE CARRIAGE WAITING AND MY FRIEND WILL SEE YOU ON YOUR WAY + I WAS HURRIED THROUGH THE HALL AND INTO THE VEHICLE AGAIN OBTAINING THAT MOMENTARY GLIMPSE OF TREES AND A GARDEN + MR. LATIMER FOLLOWED CLOSELY AT MY HEELS AND TOOK HIS PLACE OPPOSITE TO ME WITHOUT A WORD + IN SILENCE WE AGAIN DROVE FOR AN INTERMINABLE DISTANCE WITH THE WINDOWS RAISED UNTIL AT LAST JUST AFTER MIDNIGHT THE CARRIAGE PULLED UP + YOU WILL GET DOWN HERE MR. MELAS SAID MY COMPANION + I AM SORRY TO LEAVE YOU SO FAR FROM YOUR HOUSE BUT THERE IS NO ALTERNATIVE + ANY ATTEMPT UPON YOUR PART TO FOLLOW THE CARRIAGE CAN ONLY END IN INJURY TO YOURSELF + QUOTE HE OPENED THE DOOR AS HE SPOKE AND I HAD HARDLY TIME TO SPRING OUT WHEN THE COACHMAN LASHED THE HORSE AND THE CARRIAGE RATTLED AWAY + I LOOKED AROUND ME IN ASTONISHMENT + I WAS ON SOME SORT OF A HEATHY COMMON MOTTLED OVER WITH DARK CLUMPS OF FURZE BUSHES + FAR AWAY STRETCHED A LINE OF HOUSES WITH A LIGHT HERE AND THERE IN THE UPPER WINDOWS + ON THE OTHER SIDE I SAW THE RED SIGNAL LAMPS OF A RAILWAY + THE CARRIAGE WHICH HAD BROUGHT ME WAS ALREADY OUT OF SIGHT + I STOOD GAZING ROUND AND WONDERING WHERE ON EARTH I MIGHT BE WHEN I SAW SOMEONE COMING TOWARDS ME IN THE DARKNESS + AS HE CAME UP TO ME I MADE OUT THAT HE WAS A RAILWAY PORTER + CAN YOU TELL ME WHAT PLACE THIS IS + I ASKED + WANDSWORTH COMMON SAID HE + CAN I GET A TRAIN INTO TOWN + IF YOU WALK ON A MILE OR SO TO CLAPHAM JUNCTION SAID HE YOU'LL JUST BE IN TIME FOR THE LAST TO VICTORIA + QUOTE SO THAT WAS THE END OF MY ADVENTURE MR. HOLMES + I DO NOT KNOW WHERE I WAS NOR WHOM I SPOKE WITH NOR ANYTHING SAVE WHAT I HAVE TOLD YOU + BUT I KNOW THAT THERE IS FOUL PLAY GOING ON AND I WANT TO HELP THAT UNHAPPY MAN IF I CAN + I TOLD THE WHOLE STORY TO MR. MYCROFT HOLMES NEXT MORNING AND SUBSEQUENTLY TO THE POLICE + WE ALL SAT IN SILENCE FOR SOME LITTLE TIME AFTER LISTENING TO THIS EXTRAORDINARY NARRATIVE + THEN SHERLOCK LOOKED ACROSS AT HIS BROTHER + ANY STEPS HE ASKED + MYCROFT PICKED UP THE DAILY NEWS WHICH WAS LYING ON THE SIDE TABLE + ANYBODY SUPPLYING ANY INFORMATION AS TO THE WHERE ABOUTS OF A GREEK GENTLEMAN NAMED PAUL KRATIDES FROM ATHENS WHO IS UNABLE TO SPEAK ENGLISH WILL BE REWARDED + A SIMILAR REWARD PAID TO ANYONE GIVING INFORMATION ABOUT A GREEK LADY WHOSE FIRST NAME IS SOPHY + X. TWO THOUSAND FOUR HUNDRED SEVENTY THREE + THAT WAS IN ALL THE DAILIES + NO ANSWER + QUOTE HOW ABOUT THE GREEK LEGATION QUOTE + I HAVE INQUIRED + THEY KNOW NOTHING + A WIRE TO THE HEAD OF THE ATHENS POLICE THEN + SHERLOCK HAS ALL THE ENERGY OF THE FAMILY SAID MYCROFT TURNING TO ME + WELL YOU TAKE THE CASE UP BY ALL MEANS AND LET ME KNOW IF YOU DO ANY GOOD + QUOTE CERTAINLY QUOTE ANSWERED MY FRIEND RISING FROM HIS CHAIR + I'LL LET YOU KNOW AND MR. MELAS ALSO + IN THE MEANTIME MR. MELAS I SHOULD CERTAINLY BE ON MY GUARD IF I WERE YOU FOR OF COURSE THEY MUST KNOW THROUGH THESE ADVERTISEMENTS THAT YOU HAVE BETRAYED THEM + AS WE WALKED HOME TOGETHER HOLMES STOPPED AT A TELEGRAPH OFFICE AND SENT OFF SEVERAL WIRES + YOU SEE WATSON HE REMARKED OUR EVENING HAS BEEN BY NO MEANS WASTED + SOME OF MY MOST INTERESTING CASES HAVE COME TO ME IN THIS WAY THROUGH MYCROFT + THE PROBLEM WHICH WE HAVE JUST LISTENED TO ALTHOUGH IT CAN ADMIT OF BUT ONE EXPLANATION HAS STILL SOME DISTINGUISHING FEATURES + YOU HAVE HOPES OF SOLVING IT + QUOTE WELL KNOWING AS MUCH AS WE DO IT WILL BE SINGULAR INDEED IF WE FAIL TO DISCOVER THE REST + YOU MUST YOURSELF HAVE FORMED SOME THEORY WHICH WILL EXPLAIN THE FACTS TO WHICH WE HAVE LISTENED + IN A VAGUE WAY YES + WHAT WAS YOUR IDEA THEN + IT SEEMED TO ME TO BE OBVIOUS THAT THIS GREEK GIRL HAD BEEN CARRIED OFF BY THE YOUNG ENGLISHMAN NAMED HAROLD LATIMER + CARRIED OFF FROM WHERE + QUOTE ATHENS PERHAPS QUOTE + SHERLOCK HOLMES SHOOK HIS HEAD + THIS YOUNG MAN COULD NOT TALK A WORD OF GREEK + THE LADY COULD TALK ENGLISH FAIRLY WELL + INFERENCE THAT SHE HAD BEEN IN ENGLAND SOME LITTLE TIME BUT HE HAD NOT BEEN IN GREECE + WELL THEN WE WILL PRESUME THAT SHE HAD ONCE COME ON A VISIT TO ENGLAND AND THAT THIS HAROLD HAD PERSUADED HER TO FLY WITH HIM + THAT IS MORE PROBABLE + THEN THE BROTHER FOR THAT I FANCY MUST BE THE RELATIONSHIP COMES OVER FROM GREECE TO INTERFERE + HE IMPRUDENTLY PUTS HIMSELF INTO THE POWER OF THE YOUNG MAN AND HIS OLDER ASSOCIATE + THEY SEIZE HIM AND USE VIOLENCE TOWARDS HIM IN ORDER TO MAKE HIM SIGN SOME PAPERS TO MAKE OVER THE GIRL'S FORTUNE OF WHICH HE MAY BE TRUSTEE TO THEM + THIS HE REFUSES TO DO + IN ORDER TO NEGOTIATE WITH HIM THEY HAVE TO GET AN INTERPRETER AND THEY PITCH UPON THIS MR. MELAS HAVING USED SOME OTHER ONE BEFORE + THE GIRL IS NOT TOLD OF THE ARRIVAL OF HER BROTHER AND FINDS IT OUT BY THE MEREST ACCIDENT QUOTE + EXCELLENT WATSON CRIED HOLMES + I REALLY FANCY THAT YOU ARE NOT FAR FROM THE TRUTH + YOU SEE THAT WE HOLD ALL THE CARDS AND WE HAVE ONLY TO FEAR SOME SUDDEN ACT OF VIOLENCE ON THEIR PART + IF THEY GIVE US TIME WE MUST HAVE THEM + BUT HOW CAN WE FIND WHERE THIS HOUSE LIES + WELL IF OUR CONJECTURE IS CORRECT AND THE GIRL'S NAME IS OR WAS SOPHY KRATIDES WE SHOULD HAVE NO DIFFICULTY IN TRACING HER + THAT MUST BE OUR MAIN HOPE FOR THE BROTHER IS OF COURSC A COMPLETE STRANGER + IT IS CLEAR THAT SOME TIME HAS ELAPSED SINCE THIS HAROLD ESTABLISHED THESE RELATIONS WITH THE GIRL SOME WEEKS AT ANY RATE SINCE THE BROTHER IN GREECE HAS HAD TIME TO HEAR OF IT AND COME ACROSS + IF THEY HAVE BEEN LIVING IN THE SAME PLACE DURING THIS TIME IT IS PROBABLE THAT WE SHALL HAVE SOME ANSWER TO MYCROFT'S ADVERTISEMENT QUOTE + WE HAD REACHED OUR HOUSE IN BAKER STREET WHILE WE HAD BEEN TALKING + HOLMES ASCENDED THE STAIR FIRST AND AS HE OPENED THE DOOR OF OUR ROOM HE GAVE A START OF SURPRISE + LOOKING OVER HIS SHOULDER I WAS EQUALLY ASTONISHED + HIS BROTHER MYCROFT WAS SITTING SMOKING IN THE ARMCHAIR + COME IN SHERLOCK + COME IN SIR SAID HE BLANDLY SMILING AT OUR SURPRISED FACES + YOU DON'T EXPECT SUCH ENERGY FROM ME DO YOU SHERLOCK + BUT SOMEHOW THIS CASE ATTRACTS ME + HOW DID YOU GET HERE + QUOTE I PASSED YOU IN A HANSOM QUOTE + THERE HAS BEEN SOME NEW DEVELOPMENT + I HAD AN ANSWER TO MY ADVERTISEMENT + AH + YES IT CAME WITHIN A FEW MINUTES OF YOUR LEAVING + AND TO WHAT EFFECT + MYCROFT HOLMES TOOK OUT A SHEET OF PAPER + QUOTE HERE IT IS QUOTE SAID HE QUOTE WRITTEN WITH A J. PEN ON ROYAL CREAM PAPER BY A MIDDLE AGED MAN WITH A WEAK CONSTITUTION + SIR HE SAYSL IN ANSWER TO YOUR ADVERTISEMENT OF TO DAY'S DATE I BEG TO INFORM YOU THAT I KNOW THE YOUNG LADY IN QUESTION VERY WELL + IF YOU SHOULD CARE TO CALL UPON ME I COULD GIVE YOU SOME PARTICULARS AS TO HER PAINFUL HISTORY + SHE IS LIVING AT PRESENT AT THE MYRTLES BECKENHAM + YOURS FAITHFULLY J. DAVENPORT + HE WRITES FROM LOWER BRIXTON SAID MYCROFT HOLMES + DO YOU NOT THINK THAT WE MIGHT DRIVE TO HIM NOW SHERLOCK AND LEARN THESE PARTICULARS + MY DEAR MYCROFT THE BROTHER'S LIFE IS MORE VALUABLE THAN THE SISTER'S STORY + I THINK WE SHOULD CALL AT SCOTLAND YARD FOR INSPECTOR GREGSON AND GO STRAIGHT OUT TO BECKENHAM + WE KNOW THAT A MAN IS BEING DONE TO DEATH AND EVERY HOUR MAY BE VITAL QUOTE + BETTER PICK UP MR. MELAS ON OUR WAY I SUGGESTED + WE MAY NEED AN INTERPRETER + EXCELLENT SAID SHERLOCK HOLMES + SEND THE BOY FOR A FOUR WHEELER AND WE SHALL BE OFF AT ONCE + HE OPENED THE TABLE DRAWER AS HE SPOKE AND I NOTICED THAT HE SLIPPED HIS REVOLVER INTO HIS POCKET + YES SAID HE IN ANSWER TO MY GLANCE I SHOULD SAY FROM WHAT WE HAVE HEARD THAT WE ARE DEALING WITH A PARTICULARLY DANGEROUS GANG + IT WAS ALMOST DARK BEFORE WE FOUND OURSELVES IN PALL MALL AT THE ROOMS OF MR. MELAS + A GENTLEMAN HAD JUST CALLED FOR HIM AND HE WAS GONE + QUOTE CAN YOU TELL ME WHERE QUOTE ASKED MYCROFT HOLMES + I DON'T KNOW SIR ANSWERED THE WOMAN WHO HAD OPENED THE DOOR I ONLY KNOW THAT HE DROVE AWAY WITH THE GENTLEMAN IN A CARRIAGE + DID THE GENTLEMAN GIVE A NAME + NO SIR + HE WASN'T A TALL HANDSOME DARK YOUNG MAN + OH NO SIR + HE WAS A LITTLE GENTLEMAN WITH GLASSES THIN IN THE FACE BUT VERY PLEASANT IN HIS WAYS FOR HE WAS LAUGHING ALL THE TIME THAT HE WAS TALKING QUOTE + COME ALONG CRIED SHERLOCK HOLMES ABRUPTLY + THIS GROWS SERIOUS HE OBSERVED AS WE DROVE TO SCOTLAND YARD + THESE MEN HAVE GOT HOLD OF MELAS AGAIN + HE IS A MAN OF NO PHYSICAL COURAGE AS THEY ARE WELL AWARE FROM THEIR EXPERIENCE THE OTHER NIGHT + THIS VILLAIN WAS ABLE TO TERRORIZE HIM THE INSTANT THAT HE GOT INTO HIS PRESENCE + NO DOUBT THEY WANT HIS PROFESSIONAL SERVICES BUT HAVING USED HIM THEY MAY BE INCLINED TO PUNISH HIM FOR WHAT THEY WILL REGARD AS HIS TREACHERY + OUR HOPE WAS THAT BY TAKING TRAIN WE MIGHT GET TO BECKENHAM AS SOON AS OR SOONER THAN THE CARRIAGE + ON REACHING SCOTLAND YARD HOWEVER IT WAS MORE THAN AN HOUR BEFORE WE COULD GET INSPECTOR GREGSON AND COMPLY WITH THE LEGAL FORMALITIES WHICH WOULD ENABLE US TO ENTER THE HOUSE + IT WAS A QUARTER TO TEN BEFORE WE REACHED LONDON BRIDGE AND HALF PAST BEFORE THE FOUR OF US ALIGHTED ON THE BECKENHAM PLATFORM + A DRIVE OF HALF A MILE BROUGHT US TO THE MYRTLES A LARGE DARK HOUSE STANDING BACK FROM THE ROAD IN ITS OWN GROUNDS + HERE WE DISMISSED OUR CAB AND MADE OUR WAY UP THE DRIVE TOGETER + THE WINDOWS ARE ALL DARK REMARKED THE INSPECTOR + QUOTE THE HOUSE SEEMS DESERTED QUOTE + OUR BIRDS ARE FLOWN AND THE NEST EMPTY SAID HOLMES + WHY DO YOU SAY SO + A CARRIAGE HEAVILY LOADED WITH LUGGAGE HAS PASSED OUT DURING THE LAST HOUR + THE INSPECTOR LAUGHED + I SAW THE WHEEL TRACKS IN THE LIGHT OF THE GATE LAMP BUT WHERE DOES THE LUGGAGE COME IN + YOU MAY HAVE OBSERVED THE SAME WHEEL TRACKS GOING THE OTHER WAY + BUT THE OUTWARD BOUND ONES WERE VERY MUCH DEEPER SO MUCH SO THAT WE CAN SAY FOR A CERTAINTY THAT THERE WAS A VERY CONSIDERABLE WEIYHT ON THE CARRIAGE QUOTE + YOU GET A TRIFLE BEYOND ME THERE SAID THE INSPECTOR SHRUGGING HIS SHOULDERS + IT WILL NOT BE AN EASY DOOR TO FORCE BUT WE WILL TRY IF WE CANNOT MAKE SOMEONE HEAR US + HE HAMMERED LOUDLY AT THE KNOCKER AND PULLED AT THE BELL BUT WITHOUT ANY SUCCESS + HOLMES HAD SLIPPED AWAY BUT HE CAME BACK IN A FEW MINUTES + I HAVE A WINDOW OPEN SAID HE + IT IS A MERCY THAT YOU ARE ON THE SIDE OF THE FORCE AND NOT AGAINST IT MR. HOLMES REMARKED THE INSPECTOR AS HE NOTED THE CLEVER WAY IN WHICH MY FRIEND HAD FORCED BACK THE CATCH + WELL I THINK THAT UNDER THE CIRCUMSTANCES WE MAY ENTER WITHOUT AN INVITATION + ONE AFTER THE OTHER WE MADE OUR WAY INTO A LARGE APARTMENT WHICH WAS EVIDENTLY THAT IN WHICH MR. MELAS HAD FOUND HIMSELF + THE INSPECTOR HAD LIT HIS LANTERN AND BY ITS LIGHT WE COULD SEE THE TWO DOORS THE CURTAIN THE LAMP AND THE SUIT OF JAPANESE MAIL AS HE HAD DESCRIBED THEM + ON THE TABLE LAY TWO GLASSES AN EMPTY BRANDY BOTTLE AND THE REMAINS OF A MEAL + QUOTE WHAT IS THAT QUOTE ASKED HOLMES SUDDENLY + WE ALL STOOD STILL AND LISTENED + A LOW MOANING SOUND WAS COMING FROM SOMEWHERE OVER OUR HEADS + HOLMES RUSHED TO THE DOOR AND OUT INTO THE HALL + THE DISMAL NOISE CAME FROM UPSTAIRS + HE DASHED UP THE INSPECTOR AND I AT HIS HEELS WHILE HIS BROTHER MYCROFT FOLLOWED AS QUICKLY AS HIS GREAT BULK WOULD PERMIT + THREE DOORS FACED US UPON THE SECOND FLOOR AND IT WAS FROM THE CENTRAL OF THESE THAT THE SINISTER SOUNDS WERE ISSUING SINKING SOMETIMES INTO A DULL MUMBLE AND RISING AGAIN INTO A SHRILL WHINE + IT WAS LOCKED BUT THE KEY HAD BEEN LEFT ON THE OUTSIDE + HOLMES FLUNG OPEN THE DOOR AND RUSHED IN BUT HE WAS OUT AGAIN IN AN INSTANT WITH HIS HAND TO HIS THROAT + IT'S CHARCOAL HE CRIED + GIVE IT TIME + IT WILL CLEAR + PEERING IN WE COULD SEE THAT THE ONLY LIGHT IN THE ROOM CAME FROM A DULL BLUE FLAME WHICH FLICKERED FROM A SMALL BRASS TRIPOD IN THE CENTRE + IT THREW A LIVID UNNATURAL CIRCLE UPON THE FLOOR WHILE IN THE SHADOWS BEYOND WE SAW THE VAGUE LOOM OF TWO FIYURES WHICH CROUCHED AGAINST THE WALL + FROM THC OPEN DOOR THERE REEKED A HORRIBLE POISONOUS EXHALATION WHICH SET US GASPING AND COUGHING + HOLMES RUSHED TO THE TOP OF THE STAIRS TO DRAW IN THE FRESH AIR AND THEN DASHING INTO THE ROOM HE THREW UP THE WINDOW AND HURLED THE BRAZEN TRIPOD OUT INTO THE GARDEN + WE CAN ENTER IN A MINUTE HE GASPED DARTING OUT AGAIN + WHERE IS A CANDLE + I DOUBT IF WE COULD STRIKE A MATCH IN THAT ATMOSPHERE + HOLD THE LIGHT AT THE DOOR AND WE SHALL GET THEM OUT MYCROFT NOW QUOTE + WITH A RUSH WE GOT TO THE POISONED MEN AND DRAGGED THEM OUT INTO THE WELL LIT HALL + BOTH OF THEM WERE BLUE LIPPED AND INSENSIBLE WITH SWOLLEN CONGESTED FACES AND PROTRUDING EYES + INDEED SO DISTORTED WERE THEIR FEATURES THAT SAVE FOR HIS BLACK BEARD AND STOUT FIGURE WE MIGHT HAVE FAILED TO RECOGNIZE IN ONE OF THEM THE GREEK INTERPRETER WHO HAD PARTED FROM US ONLY A FEW HOURS BEFORE AT THE DIOGENES CLUB + HIS HANDS AND FEET WERE SECURELY STRAPPED TOGETHER AND HE BORE OVER ONE EYE THE MARKS OF A VIOLENT BLOW + THE OTHER WHO WAS SECURED IN A SIMILAR FASHION WAS A TALL MAN IN THE LAST STAGE OF EMACIATION WITH SEVERAL STRIPS OF STICKING PLASTER ARRANGED IN A GROTESQUE PATTERN OVER HIS FACE + HE HAD CEASED TO MOAN AS WE LAID HIM DOWN AND A GLANCE SHOWED ME THAT FOR HIM AT LEAST OUR AID HAD COME TOO LATE + MR. MELAS HOWEVER STILL LIVED AND IN LESS THAN AN HOUR WITH THE AID OF AMMONIA AND BRANDY I HAD THE SATISFACTION OF SEEING HIM OPEN HIS EYES AND OF KNOWING THAT MY HAND HAD DRAWN HIM BACK FROM THAT DARK VALLEY IN WHICH ALL PATHS MEET + IT WAS A SIMPLE STORY WHICH HE HAD TO TELL AND ONE WHICH DID BUT CONFIRM OUR OWN DEDUCTIONS + HIS VISITOR ON ENTERING HIS ROOMS HAD DRAWN A LIFE PRESERVER FROM HIS SLEEVE AND HAD SO IMPRESSED HIM WITH THE FEAR OF INSTANT AND INEVITABLE DEATH THAT HE HAD KIDNAPPED HIM FOR THE SECOND TIME + INDEED IT WAS ALMOST MESMERIC THE EFFECT WHICH THIS GIGGLING RUFFIAN HAD PRODUCED UPON THE UNFORTUNATE LINGUIST FOR HE COULD NOT SPEAK OF HIM SAVE WITH TREMBLING HANDS AND A BLANCHED CHEEK + HE HAD BEEN TAKEN SWIFTLY TO BECKENHAM AND HAD ACTED AS INTERPRETER IN A SECOND INTERVIEW EVEN MORE DRAMATIC THAN THE FIRST IN WHICH THE TWO ENGLISHMEN HAD MENACED THEIR PRISONER WITH INSTANT DEATH IF HE DID NOT COMPLY WITH THEIR DEMANDS + FINALLY FINDING HIM PROOF AGAINST EVERY THREAT THEY HAD HURLED HIM BACK INTO HIS PRISON AND AFTER REPROACHING MELAS WITH HIS TREACHERY WHICH APPEARED FROM THE NEWSPAPER ADVERTISEMENT THEY HAD STUNNED HIM WITH A BLOW FROM A STICK AND HE REMEMBERED NOTHING MORE UNTIL HE FOUND US BENDING OVER HIM + AND THIS WAS THE SINGULAR CASE OF THE GRECIAN INTERPRETER THE EXPLANATION OF WHICH IS STILL INVOLVED IN SOME MYSTERY + WE WERE ABLE TO FIND OUT BY COMMUNICATING WITH THE GENTLEMAN WHO HAD ANSWERED THE ADVERTISEMENT THAT THE UNFORTUNATE YOUNG LADY CAME OF A WEALTHY GRECIAN FAMILY AND THAT SHE HAD BEEN ON A VISIT TO SOME FRIENDS IN ENGLAND + WHILE THERE SHE HAD MET A YOUNG MAN NAMED HAROLD LATIMER WHO HAD ACQUIRED AN ASCENDENCY OVER HER AND HAD EVENTUALLY PERSUADED HER TO FLY WITH HIM + HER FRIENDS SHOCKED AT THE EVENT HAD CONTENTED THEMSELVES WITH INFORMING HER BROTHER AT ATHENS AND HAD THEN WASHED THEIR HANDS OF THE MATTER + THE BROTHER ON HIS ARRIVAL IN ENGLAND HAD IMPRUDENTLY PLACED HIMSELF IN THE POWER OF LATIMER AND OF HIS ASSOCIATE WHOSE NAME WAS WILSON KEMP A MAN OF THE FOULEST ANTECEDENTS + THESE TWO FINDING THAT THROUGH HIS IGNORANCE OF THE LANGUAGE HE WAS HELPLESS IN THEIR HANDS HAD KEPT HIM A PRISONER AND HAD ENDEAVOURED BY CRUELTY AND STARVATION TO MAKE HIM SIGN AWAY HIS OWN AND HIS SISTER'S PROPERTY + THEY HAD KEPT HIM IN THE HOUSE WITHOUT THE GIRL'S KNOWLEDGE AND THE PLASTER OVER THE FACE HAD BEEN FOR THE PURPOSE OF MAKING RECOGNITION DIFFICULT IN CASE SHE SHOULD EVER CATCH A GLIMPSE OF HIM + HER FEMININE PERCEPTIONS HOWEVER HAD INSTANTLY SEEN THROUGH THE DISGUISE WHEN ON THE OCCASION OF THE INTERPRETER'S VISIT SHE HAD SEEN HIM FOR THE FIRST TIME + THE POOR GIRL HOWEVER WAS HERSELF A PRISONER FOR THERE WAS NO ONE ABOUT THE HOUSE EXCEPT THE MAN WHO ACTED AS COACHMAN AND HIS WIFE BOTH OF WHOM WERE TOOLS OF THE CONSPIRATORS + FINDING THAT THEIR SECRET WAS OUT AND THAT THEIR PRISONER WAS NOT TO BE COERCED THE TWO VILLAINS WITH THE GIRL HAD FLED AWAY AT A FEW HOURS' NOTICE FROM THE FURNISHED HOUSE WHICH THEY HAD HIRED HAVING FIRST AS THEY THOUGHT TAKEN VENGEANCE BOTH UPON THE MAN WHO HAD DEFIED AND THE ONE WHO HAD BETRAYED THEM + MONTHS AFTERWARDS A CURIOUS NEWSPAPER CUTTING REACHED US FROM BUDA PESTH + IT TOLD HOW TWO ENGLISHMEN WHO HAD BEEN TRAVELLING WITH A WOMAN HAD MET WITH A TRAGIC END + THEY HAD EACH BEEN STABBED IT SEEMS AND THE HUNGARIAN POLICE WERE OF OPINION THAT THEY HAD QUARRELLED AND HAD INFLICTED MORTAL INJURIES UPON EACH OTHER + HOLMES HOWEVER IS I FANCY OF A DIFFERENT WAY OF THINKING AND HE HOLDS TO THIS DAY THAT IF ONE COULD FIND THE GRECIAN GIRL ONE MIGHT LEARN HOW THE WRONGS OF HERSELF AND HER BROTHER CAME TO BE AVENGED diff --git a/samples/LMTutorial/train/his_last_bow.txt b/samples/LMTutorial/train/his_last_bow.txt new file mode 100755 index 0000000..19eedd1 --- /dev/null +++ b/samples/LMTutorial/train/his_last_bow.txt @@ -0,0 +1,465 @@ + IT WAS NINE O'CLOCK AT NIGHT UPON THE SECOND OF AUGUST THE MOST TERRIBLE AUGUST IN THE HISTORY OF THE WORLD + ONE MIGHT HAVE THOUGHT ALREADY THAT GOD'S CURSE HUNG HEAVY OVER A DEGENERATE WORLD FOR THERE WAS AN AWESOME HUSH AND A FEELING OF VAGUE EXPECTANCY IN THE SULTRY AND STAGNANT AIR + THE SUN HAD LONG SET BUT ONE BLOOD RED GASH LIKE AN OPEN WOUND LAY LOW IN THE DISTANT WEST + ABOVE THE STARS WERE SHINING BRIGHTLY AND BELOW THE LIGHTS OF THE SHIPPING GLIMMERED IN THE BAY + THE TWO FAMOUS GERMANS STOOD BESIDE THE STONE PARAPET OF THE GARDEN WALK WITH THE LONG LOW HEAVILY GABLED HOUSE BEHIND THEM AND THEY LOOKED DOWN UPON THE BROAD SWEEP OF THE BEACH AT THE FOOT OF THE GREAT CHALK CLIFF ON WHICH VON BORK LIKE SOME WANDERING EAGLE HAD PERCHED HIMSELF FOUR YEARS BEFORE + THEY STOOD WITH THEIR HEADS CLOSE TOGETHER TALKING IN LOW CONFIDENTIAL TONES + FROM BELOW THE TWO GLOWING ENDS OF THEIR CIGARS MIGHT HAVE BEEN THE SMOULDERING EYES OF SOME MALIGNANT FIEND LOOKING DOWN IN THE DARKNESS + A REMARKABLE MAN THIS VON BORK A MAN WHO COULD HARDLY BE MATCHED AMONG ALL THE DEVOTED AGENTS OF THE KAISER + IT WAS HIS TALENTS WHICH HAD FIRST RECOMMENDED HIM FOR THE ENGLISH MISSION THE MOST IMPORTANT MISSION OF ALL BUT SINCE HE HAD TAKEN IT OVER THOSE TALENTS HAD BECOME MORE AND MORE MANIFEST TO THE HALF DOZEN PEOPLE IN THE WORLD WHO WERE REALLY IN TOUCH WITH THE TRUTH + ONE OF THESE WAS HIS PRESENT COMPANION BARON VON HERLING THE CHIEF SECRETARY OF THE LEGATION WHOSE HUGE LOO HORSE POWER BENZ CAR WAS BLOCKING THE COUNTRY LANE AS IT WAITED TO WAFT ITS OWNER BACK TO LONDON + QUOTE SO FAR AS I CAN JUDGE THE TREND OF EVENTS YOU WILL PROBABLY BE BACK IN BERLIN WITHIN THE WEEK QUOTE THE SECRETARY WAS SAYING + WHEN YOU GET THERE MY DEAR VON BORK I THINK YOU WILL BE SURPRISED AT THE WELCOME YOU WILL RECEIVE + I HAPPEN TO KNOW WHAT IS THOUGHT IN THE HIGHEST QUARTERS OF YOUR WORK IN THIS COUNTRY + HE WAS A HUGE MAN THE SECRETARY DEEP BROAD AND TALL WITH A SLOW HEAVY FASHION OF SPEECH WHICH HAD BEEN HIS MAIN ASSET IN HIS POLITICAL CAREER + VON BORK LAUGHED + THEY ARE NOT VERY HARD TO DECEIVE HE REMARKED + A MORE DOCILE SIMPLE FOLK COULD NOT BE IMAGINED + I DON'T KNOW ABOUT THAT SAID THE OTHER THOUGHTFULLY + QUOTE THEY HAVE STRANGE LIMITS AND ONE MUST LEARN TO OBSERVE THEM + IT IS THAT SURFACE SIMPLICITY OF THEIRS WHICH MAKES A TRAP FOR THE STRANGER + ONE'S FIRST IMPRESSION IS THAT THEY ARE ENTIRELY SOFT + THEN ONE COMES SUDDENLY UPON SOMETHING VERY HARD AND YOU KNOW THAT YOU HAVE REACHED THE LIMIT AND MUST ADAPT YOURSELF TO THE FACT + THEY HAVE FOR EXAMPLE THEIR INSULAR CONVENTIONS WHICH SIMPLY MUST BE OBSERVED + MEANING GOOD FORM AND THAT SORT OF THING + VON BORK SIGHED AS ONE WHO HAD SUFFERED MUCH + MEANING BRITISH PREJUDICE IN ALL ITS QUEER MANIFESTATIONS + AS AN EXAMPLE I MAY QUOTE ONE OF MY OWN WORST BLUNDERS I CAN AFFORD TO TALK OF MY BLUNDERS FOR YOU KNOW MY WORK WELL ENOUGH TO BE AWARE OF MY SUCCESSES + IT WAS ON MY FIRST ARRIVAL + I WAS INVITED TO A WEEK END GATHERING AT THE COUNTRY HOUSE OF A CABINET MINISTER + THE CONVERSATION WAS AMAZINGLY INDISCREET + VON BORK NODDED + I'VE BEEN THERE SAID HE DRYLY + QUOTE EXACTLY + WELL I NATURALLY SENT A RESUME OF THE INFORMATION TO BERLIN + UNFORTUNATELY OUR GOOD CHANCELLOR IS A LITTLE HEAVY HANDED IN THESE MATTERS AND HE TRANSMITTED A REMARK WHICH SHOWED THAT HE WAS AWARE OF WHAT HAD BEEN SAID + THIS OF COURSE TOOK THE TRAIL STRAIGHT UP TO ME + YOU'VE NO IDEA THE HARM THAT IT DID ME + THERE WAS NOTHING SOFT ABOUT OUR BRITISH HOSTS ON THAT OCCASION I CAN ASSURE YOU + I WAS TWO YEARS LIVING IT DOWN + NOW YOU WITH THIS SPORTING POSE OF YOURS + NO NO DON'T CALL IT A POSE + A POSE IS AN ARTIFICIAL THING + THIS IS QUITE NATURAL + I AM A BORN SPORTSMAN + I ENJOY IT + WELL THAT MAKES IT THE MORE EFFECTIVE + YOU YACHT AGAINST THEM YOU HUNT WITH THEM YOU PLAY POLO YOU MATCH THEM IN EVERY GAME YOUR FOUR INHAND TAKES THE PRIZE AT OLYMPIA + I HAVE EVEN HEARD THAT YOU GO THE LENGTH OF BOXING WITH THE YOUNG OFFICERS + WHAT IS THE RESULT + NOBODY TAKES YOU SERIOUSLY + YOU ARE A GOOD OLD SPORT QUITE A DECENT FELLOW FOR A GERMAN A HARD DRINKING NIGHT CLUB KNOCK ABOUT TOWN DEVIL MAY CARE YOUNG FELLOW + AND ALL THE TIME THIS QUIET COUNTRY HOUSE OF YOURS IS THE CENTRE OF HALF THE MISCHIEF IN ENGLAND AND THE SPORTING SQUIRE THE MOST ASTUTE SECRET SERVICE MAN IN EUROPE + GENIUS MY DEAR VON BORK GENIUS + QUOTE YOU FLATTER ME BARON + BUT CERTAINLY I MAY CLAIM THAT MY FOUR YEARS IN THIS COUNTRY HAVE NOT BEEN UNPRODUCTIVE + I'VE NEVER SHOWN YOU MY LITTLE STORE + WOULD YOU MIND STEPPING IN FOR A MOMENT + THE DOOR OF THE STUDY OPENED STRAIGHT ON TO THE TERRACE + VON BORK PUSHED IT BACK AND LEADING THE WAY HE CLICKED THE SWITCH OF THE ELECTRIC LIGHT + HE THEN CLOSED THE DOOR BEHIND THE BULKY FORM WHICH FOLLOWED HIM AND CAREFULLY ADJUSTED THE HEAVY CURTAIN OVER THE LATTICED WINDOW + ONLY WHEN ALL THESE PRECAUTIONS HAD BEEN TAKEN AND TESTED DID HE TURN HIS SUNBURNED AQUILINE FACE TO HIS GUEST + SOME OF MY PAPERS HAVE GONE SAID HE + WHEN MY WIFE AND THE HOUSEHOLD LEFT YESTERDAY FOR FLUSHING THEY TOOK THE LESS IMPORTANT WITH THEM + I MUST OF COURSE CLAIM THE PROTECTION OF THE EMBASSY FOR THE OTHERS + YOUR NAME HAS ALREADY BEEN FILED AS ONE OF THE PERSONAL SUITE + THERE WILL BE NO DIFFICULTIES FOR YOU OR YOUR BAGGAGE + OF COURSE IT IS JUST POSSIBLE THAT WE MAY NOT HAVE TO GO + ENGLAND MAY LEAVE FRANCE TO HER FATE + WE ARE SURE THAT THERE IS NO BINDING TREATY BETWEEN THEM QUOTE + AND BELGIUM + YES AND BELGIUM TOO + VON BORK SHOOK HIS HEAD + I DON'T SEE HOW THAT COULD BE + THERE IS A DEFINITE TREATY THERE + SHE COULD NEVER RECOVER FROM SUCH A HUMILIATION + SHE WOULD AT LEAST HAVE PEACE FOR THE MOMENT + QUOTE BUT HER HONOUR QUOTE + TUT MY DEAR SIR WE LIVE IN A UTILITARIAN AGE + HONOUR IS A MEDIAEVAL CONCEPTION + BESIDES ENGLAND IS NOT READY + IT IS AN INCONCEIVABLE THING BUT EVEN OUR SPECIAL WAR TAX OF FIFTY MILLION WHICH ONE WOULD THINK MADE OUR PURPOSE AS CLEAR AS IF WE HAD ADVERTISED IT ON THE FRONT PAGE OF THE TIMES HAS NOT ROUSED THESE PEOPLE FROM THEIR SLUMBERS + HERE AND THERE ONE HEARS A QUESTION + IT IS MY BUSINESS TO FIND AN ANSWER + HERE AND THERE ALSO THERE IS AN IRRITATION + IT IS MY BUSINESS TO SOOTHE IT + BUT I CAN ASSURE YOU THAT SO FAR AS THE ESSENTIALS GO THE STORAGE OF MUNITIONS THE PREPARATION FOR SUBMARINE ATTACK THE ARRANGEMENTS FOR MAKING HIGH EXPLOSIVES NOTHING IS PREPARED + HOW THEN CAN ENGLAND COME IN ESPECIALLY WHEN WE HAVE STIRRED HER UP SUCH A DEVIL'S BREW OF IRISH CIVIL WAR WINDOW BREAKING FURIES AND GOD KNOWS WHAT TO KEEP HER THOUGHTS AT HOME + SHE MUST THINK OF HER FUTURE + AH THAT IS ANOTHER MATTER + I FANCY THAT IN THE FUTURE WE HAVE OUR OWN VERY DEFINITE PLANS ABOUT ENGLAND AND THAT YOUR INFORMATION WILL BE VERY VITAL TO US + IT IS TO DAY OR TO MORROW WITH MR. JOHN BULL + IF HE PREFERS TO DAY WE ARE PERFECTLY READY + IF IT IS TO MORROW WE SHALL BE MORE READY STILL + I SHOULD THINK THEY WOULD BE WISER TO FIGHT WITH ALLIES THAN WITHOUT THEM BUT THAT IS THEIR OWN AFFAIR + THIS WEEK IS THEIR WEEK OF DESTINY + BUT YOU WERE SPEAKING OF YOUR PAPERS + HE SAT IN THE ARMCHAIR WITH THE LIGHT SHINING UPON HIS BROAD BALD HEAD WHILE HE PUFFED SEDATELY AT HIS CIGAR + THE LARGE OAK PANELLED BOOK LINED ROOM HAD A CURTAIN HUNG IN THE FURTHER CORNER + WHEN THIS WAS DRAWN IT DISCLOSED A LARGE BRASS BOUND SAFE + VON BORK DETACHED A SMALL KEY FROM HIS WATCH CHAIN AND AFTER SOME CONSIDERABLE MANIPULATION OF THE LOCK HE SWUNG OPEN THE HEAVY DOOR + QUOTE LOOK QUOTE SAID HE STANDING CLEAR WITH A WAVE OF HIS HAND + THE LIGHT SHONE VIVIDLY INTO THE OPENED SAFE AND THE SECRETARY OF THE EMBASSY GAZED WITH AN ABSORBED INTEREST AT THE ROWS OF STUFFED PIGEON HOLES WITH WHICH IT WAS FURNISHED + EACH PIGEONHOLE HAD ITS LABEL AND HIS EYES AS HE GLANCED ALONG THEM READ A LONG SERIES OF SUCH TITLES AS FORDS HARBOURDEFENCES AEROPLANES IRELAND EGYPT PORTSMOUTH FORTS THE CHANNEL ROSYTHE AND A SCORE OF OTHERS + EACH COMPARTMENT WAS BRISTLING WITH PAPERS AND PLANS + COLOSSAL SAID THE SECRETARY + PUTTING DOWN HIS CIGAR HE SOFTLY CLAPPED HIS FAT HANDS + AND ALL IN FOUR YEARS BARON + NOT SUCH A BAD SHOW FOR THE HARD DRINKING HARD RIDING COUNTRY SQUIRE + BUT THE GEM OF MY COLLECTION IS COMING AND THERE IS THE SETTING ALL READY FOR IT + HE POINTED TO A SPACE OVER WHICH NAVAL SIGNALS WAS PRINTED + QUOTE BUT YOU HAVE A GOOD DOSSIER THERE ALREADY QUOTE + OUT OF DATE AND WASTE PAPER + THE ADMIRALTY IN SOME WAY GOT THE ALARM AND EVERY CODE HAS BEEN CHANGED + IT WAS A BLOW BARON THE WORST SETBACK IN MY WHOLE CAMPAIGN + BUT THANKS TO MY CHECK BOOK AND THE GOOD ALTAMONT ALL WILL BE WELL TO NIGHT + THE BARON LOOKED AT HIS WATCH AND GAVE A GUTTURAL EXCLAMATION OF DISAPPOINTMENT + WELL I REALLY CAN WAIT NO LONGER + YOU CAN IMAGINE THAT THINGS ARE MOVING AT PRESENT IN CARLTON TERRACE AND THAT WE HAVE ALL TO BE AT OUR POSTS + I HAD HOPED TO BE ABLE TO BRING NEWS OF YOUR GREAT COUP + DID ALTAMONT NAME NO HOUR + VON BORK PUSHED OVER A TELEGRAM + WILL COME WITHOUT FAIL TO NIGHT AND BRING NEW SPARKING PLUGS + ALTAMONT + SPARKING PLUGS EH + QUOTE YOU SEE HE POSES AS A MOTOR EXPERT AND I KEEP A FULL GARAGE + IN OUR CODE EVERYTHING LIKELY TO COME UP IS NAMED AFTER SOME SPARE PART + IF HE TALKS OF A RADIATOR IT IS A BATTLESHIP OF AN OIL PUMP A CRUISER AND SO ON + SPARKING PLUGS ARE NAVAL SIGNALS + FROM PORTSMOUTH AT MIDDAY SAID THE SECRETARY EXAMINING THE SUPERSCRIPTION + BY THE WAY WHAT DO YOU GIVE HIM + FIVE HUNDRED POUNDS FOR THIS PARTICULAR JOB + OF COURSE HE HAS A SALARY AS WELL + QUOTE THE GREEDY ROGUE + THEY ARE USEFUL THESE TRAITORS BUT I GRUDGE THEM THEIR BLOOD MONEY + I GRUDGE ALTAMONT NOTHING + HE IS A WONDERFUL WORKER + IF I PAY HIM WELL AT LEAST HE DELIVERS THE GOODS TO USE HIS OWN PHRASE + BESIDES HE IS NOT A TRAITOR + I ASSURE YOU THAT OUR MOST PAN GERMANIC JUNKER IS A SUCKING DOVE IN HIS FEELINGS TOWARDS ENGLAND AS COMPARED WITH A REAL BITTER IRISHAMERICAN + OH AN IRISH AMERICAN + IF YOU HEARD HIM TALK YOU WOULD NOT DOUBT IT + SOMETIMES I ASSURE YOU I CAN HARDLY UNDERSTAND HIM + HE SEEMS TO HAVE DECLARED WAR ON THE KING'S ENGLISH AS WELL AS ON THE ENGLISH KING + MUST YOU REALLY GO + HE MAY BE HERE ANY MOMENT QUOTE + NUMBER + I'M SORRY BUT I HAVE ALREADY OVERSTAYED MY TIME + WE SHALL EXPECT YOU EARLY TO MORROW AND WHEN YOU GET THAT SIGNAL BOOK THROUGH THE LITTLE DOOR ON THE DUKE OF YORK'S STEPS YOU CAN PUT A TRIUMPHANT FINIS TO YOUR RECORD IN ENGLAND + WHAT + TOKAY + HE INDICATED A HEAVILY SEALED DUST COVERED BOTTLE WHICH STOOD WITH TWO HIGH GLASSES UPON A SALVER + MAY I OFFER YOU A GLASS BEFORE YOUR JOURNEY + NO THANKS + BUT IT LOOKS LIKE REVELRY + QUOTE ALTAMONT HAS A NICE TASTE IN WINES AND HE TOOK A FANCY TO MY TOKAY + HE IS A TOUCHY FELLOW AND NEEDS HUMOURING IN SMALL THINGS + I HAVE TO STUDY HIM I ASSURE YOU + THEY HAD STROLLED OUT ON TO THE TERRACE AGAIN AND ALONG IT TO THE FURTHER END WHERE AT A TOUCH FROM THE BARON'S CHAUFFEUR THE GREAT CAR SHIVERED AND CHUCKLED + THOSE ARE THE LIGHTS OF HARWICH I SUPPOSE SAID THE SECRETARY PULLING ON HIS DUST COAT + HOW STILL AND PEACEFUL IT ALL SEEMS + THERE MAY BE OTHER LIGHTS WITHIN THE WEEK AND THE ENGLISH COAST A LESS TRANQUIL PLACE + THE HEAVENS TOO MAY NOT BE QUITE SO PEACEFUL IF ALL THAT THE GOOD ZEPPELIN PROMISES US COMES TRUE + BY THE WAY WHO IS THAT + ONLY ONE WINDOW SHOWED A LIGHT BEHIND THEM IN IT THERE STOOD A LAMP AND BESIDE IT SEATED AT A TABLE WAS A DEAR OLD RUDDY FACED WOMAN IN A COUNTRY CAP + SHE WAS BENDING OVER HER KNITTING AND STOPPING OCCASIONALLY TO STROKE A LARGE BLACK CAT UPON A STOOL BESIDE HER + THAT IS MARTHA THE ONLY SERVANT I HAVE LEFT + THE SECRETARY CHUCKLED + QUOTE SHE MIGHT ALMOST PERSONIFY BRITANNIA QUOTE SAID HE QUOTE WITH HER COMPLETE SELFABSORPTION AND GENERAL AIR OF COMFORTABLE SOMNOLENCE + WELL AU REVOIR VON BORK + WITH A FINAL WAVE OF HIS HAND HE SPRANG INTO THE CAR AND A MOMENT LATER THE TWO GOLDEN CONES FROM THE HEADLIGHTS SHOT FORWARD THROUGH THE DARKNESS + THE SECRETARY LAY BACK IN THE CUSHIONS OF THE LUXURIOUS LIMOUSINE WITH HIS THOUGHTS SO FULL OF THE IMPENDING EUROPEAN TRAGEDY THAT HE HARDLY OBSERVED THAT AS HIS CAR SWUNG ROUND THE VILLAGE STREET IT NEARLY PASSED OVER A LITTLE FORD COMING IN THE OPPOSITE DIRECTION + VON BORK WALKED SLOWLY BACK TO THE STUDY WHEN THE LAST GLEAMS OF THE MOTOR LAMPS HAD FADED INTO THE DISTANCE + AS HE PASSED HE OBSERVED THAT HIS OLD HOUSEKEEPER HAD PUT OUT HER LAMP AND RETIRED + IT WAS A NEW EXPERIENCE TO HIM THE SILENCE AND DARKNESS OF HIS WIDESPREAD HOUSE FOR HIS FAMILY AND HOUSEHOLD HAD BEEN A LARGE ONE + IT WAS A RELIEF TO HIM HOWEVER TO THINK THAT THEY WERE ALL IN SAFETY AND THAT BUT FOR THAT ONE OLD WOMAN WHO HAD LINGERED IN THE KITCHEN HE HAD THE WHOLE PLACE TO HIMSELF + THERE WAS A GOOD DEAL OF TIDYING UP TO DO INSIDE HIS STUDY AND HE SET HIMSELF TO DO IT UNTIL HIS KEEN HANDSOME FACE WAS FLUSHED WITH THE HEAT OF THE BURNING PAPERS + A LEATHER VALISE STOOD BESIDE HIS TABLE AND INTO THIS HE BEGAN TO PACK VERY NEATLY AND SYSTEMATICALLY THE PRECIOUS CONTENTS OF HIS SAFE + HE HAD HARDLY GOT STARTED WITH THE WORK HOWEVER WHEN HIS QUICK EARS CAUGHT THE SOUND OF A DISTANT CAR + INSTANTLY HE GAVE AN EXCLAMATION OF SATISFACTION STRAPPED UP THE VALISE SHUT THE SAFE LOCKED IT AND HURRIED OUT ON TO THE TERRACE + HE WAS JUST IN TIME TO SEE THE LIGHTS OF A SMALL CAR COME TO A HALT AT THE GATE + A PASSENGER SPRANG OUT OF IT AND ADVANCED SWIFTLY TOWARDS HIM WHILE THE CHAUFFEUR A HEAVILY BUILT ELDERLY MAN WITH A GRAY MOUSTACHE SETTLED DOWN LIKE ONE WHO RESIGNS HIMSELF TO A LONG VIGIL + WELL ASKED VON BORK EAGERLY RUNNING FORWARD TO MEET HIS VISITOR + FOR ANSWER THE MAN WAVED A SMALL BROWN PAPER PARCEL TRIUMPHANTLY ABOVE HIS HEAD + YOU CAN GIVE ME THE GLAD HAND TO NIGHT MISTER HE CRIED + I'M BRINGING HOME THE BACON AT LAST + THE SIGNALS + QUOTE SAME AS I SAID IN MY CABLE + EVERY LAST ONE OF THEM SEMAPHORE LAMP CODE MARCONI A COPY MIND YOU NOT THE ORIGINAL + THAT WAS TOO DANGEROUS + BUT IT'S THE REAL GOODS AND YOU CAN LAY TO THAT + HE SLAPPED THE GERMAN UPON THE SHOULDER WITH A ROUGH FAMILIARITY FROM WHICH THE OTHER WINCED + COME IN HE SAID + I'M ALL ALONE IN THE HOUSE + I WAS ONLY WAITING FOR THIS + OF COURSE A COPY IS BETTER THAN THE ORIGINAL + IF AN ORIGINAL WERE MISSING THEY WOULD CHANGE THE WHOLE THING + YOU THINK IT'S ALL SAFE ABOUT THE COPY + THE IRISH AMERICAN HAD ENTERED THE STUDY AND STRETCHED HIS LONG LIMBS FROM THE ARMCHAIR + HE WAS A TALL GAUNT MAN OF SIXTY WITH CLEAR CUT FEATURES AND A SMALL GOATEE BEARD WHICH GAVE HIM A GENERAL RESEMBLANCE TO THE CARICATURES OF UNCLE SAM + A HALFSMOKED SODDEN CIGAR HUNG FROM THE CORNER OF HIS MOUTH AND AS HE SAT DOWN HE STRUCK A MATCH AND RELIT IT + MAKING READY FOR A MOVE HE REMARKED AS HE LOOKED ROUND HIM + QUOTE SAY MISTER QUOTE HE ADDED AS HIS EYES FELL UPON THE SAFE FROM WHICH THE CURTAIN WAS NOW REMOVED QUOTE YOU DON'T TELL ME YOU KEEP YOUR PAPERS IN THAT QUOTE + WHY NOT + GOSH IN A WIDE OPEN CONTRAPTION LIKE THAT + AND THEY RECKON YOU TO BE SOME SPY + WHY A YANKEE CROOK WOULD BE INTO THAT WITH A CANOPENER + IF I'D KNOWN THAT ANY LETTER OF MINE WAS GOIN' TO LIE LOOSE IN A THING LIKE THAT I'D HAVE BEEN A MUG TO WRITE TO YOU AT ALL + IT WOULD PUZZLE ANY CROOK TO FORCE THAT SAFE VON BORK ANSWERED + YOU WON'T CUT THAT METAL WITH ANY TOOL + QUOTE BUT THE LOCK QUOTE + NO IT'S A DOUBLE COMBINATION LOCK + YOU KNOW WHAT THAT IS + SEARCH ME SAID THE AMERICAN + WELL YOU NEED A WORD AS WELL AS A SET OF FIGURES BEFORE YOU CAN GET THE LOCK TO WORK + HE ROSE AND SHOWED A DOUBLERADIATING DISC ROUND THE KEYHOLE + THIS OUTER ONE IS FOR THE LETTERS THEL INNER ONE FOR THE FIGURES + QUOTE WELL WELL THAT'S FINE QUOTE + SO IT'S NOT QUITE AS SIMPLE AS YOU THOUGHT + IT WAS FOUR YEARS AGO THAT I HAD IT MADE AND WHAT DO YOU THINK I CHOSE FOR THE WORD AND FIGURES + IT'S BEYOND ME + WELL I CHOSE AUGUST FOR THE WORD AND NINETEEN FOURTEEN FOR THE FIGURES AND HERE WE ARE + THE AMERICAN'S FACE SHOWED HIS SURPRISE AND ADMIRATION + MY BUT THAT WAS SMART + YOU HAD IT DOWN TO A FINE THING QUOTE + YES A FEW OF US EVEN THEN COULD HAVE GUESSED THE DATE + HERE IT IS AND I'M SHUTTING DOWN TO MORROW MORNING + WELL I GUESS YOU'LL HAVE TO FIX ME UP ALSO + I'M NOT STAYING IN THIS G. O. L. DARNED COUNTRY ALL ON MY LONESOME + IN A WEEK OR LESS FROM WHAT I SEE JOHN BULL WILL BE ON HIS HIND LEGS AND FAIR RAMPING + I'D RATHER WATCH HIM FROM OVER THE WATER + BUT YOU'RE AN AMERICAN CITIZEN + QUOTE WELL SO WAS JACK JAMES AN AMERICAN CITIZEN BUT HE'S DOING TIME IN PORTLAND ALL THE SAME + IT CUTS NO ICE WITH A BRITISH COPPER TO TELL HIM YOU'RE AN AMERICAN CITIZEN + IT'S BRITISH LAW AND ORDER OVER HERE SAYS HE + BY THE WAY MISTER TALKING OF JACK JAMES IT SEEMS TO ME YOU DON'T DO MUCH TO COVER YOUR MEN + WHAT DO YOU MEAN + VON BORK ASKED SHARPLY + WELL YOU ARE THEIR EMPLOYER AIN'T YOU + IT'S UP TO YOU TO SEE THAT THEY DON'T FALL DOWN + BUT THEY DO FALL DOWN AND WHEN DID YOU EVER PICK THEM UP + THERE'S JAMES + IT WAS JAMES'S OWN FAULT + YOU KNOW THAT YOURSELF + HE WAS TOO SELF WILLED FOR THE JOB QUOTE + JAMES WAS A BONEHEAD I GIVE YOU THAT + THEN THERE WAS HOLLIS + THE MAN WAS MAD + WELL HE WENT A BIT WOOZY TOWARDS THE END + IT'S ENOUGH TO MAKE A MAN BUGHOUSE WHEN HE HAS TO PLAY A PART FROM MORNING TO NIGHT WITH A HUNDRED GUYS ALL READY TO SET THE COPPERS WISE TO HIM + BUT NOW THERE IS STEINER + VON BORK STARTED VIOLENTLY AND HIS RUDDY FACE TURNED A SHADE PALER + QUOTE WHAT ABOUT STEINER QUOTE + WELL THEY'VE GOT HIM THAT'S ALL + THEY RAIDED HIS STORE LAST NIGHT AND HE AND HIS PAPERS ARE ALL IN PORTSMOUTH JAIL + YOU'LL GO OFF AND HE POOR DEVIL WILL HAVE TO STAND THE RACKET AND LUCKY IF HE GETS OFF WITH HIS LIFE + THAT'S WHY I WANT TO GET OVER THE WATER AS SOON AS YOU DO + VON BORK WAS A STRONG SELF CONTAINED MAN BUT IT WAS EASY TO SEE THAT THE NEWS HAD SHAKEN HIM + HOW COULD THEY HAVE GOT ON TO STEINER HE MUTTERED + THAT'S THE WORST BLOW YET + WELL YOU NEARLY HAD A WORSE ONE FOR I BELIEVE THEY ARE NOT FAR OFF ME + QUOTE YOU DON'T MEAN THAT QUOTE + SURE THING + MY LANDLADY DOWN FRATTON WAY HAD SOME INQUIRIES AND WHEN I HEARD OF IT I GUESSED IT WAS TIME FOR ME TO HUSTLE + BUT WHAT I WANT TO KNOW MISTER IS HOW THE COPPERS KNOW THESE THINGS + STEINER IS THE FIFTH MAN YOU'VE LOST SINCE I SIGNED ON WITH YOU AND I KNOW THE NAME OF THE SIXTH IF I DON'T GET A MOVE ON + HOW DO YOU EXPLAIN IT AND AIN'T YOU ASHAMED TO SEE YOUR MEN GO DOWN LIKE THIS + VON BORK FLUSHED CRIMSON + HOW DARE YOU SPEAK IN SUCH A WAY + IF I DIDN'T DARE THINGS MISTER I WOULDN'T BE IN YOUR SERVICE + BUT I'LL TELL YOU STRAIGHT WHAT IS IN MY MIND + I'VE HEARD THAT WITH YOU GERMAN POLITICIANS WHEN AN AGENT HAS DONE HIS WORK YOU ARE NOT SORRY TO SEE HIM PUT AWAY + VON BORK SPRANG TO HIS FEET + QUOTE DO YOU DARE TO SUGGEST THAT I HAVE GIVEN AWAY MY OWN AGENTS QUOTE + I DON'T STAND FOR THAT MISTER BUT THERE'S A STOOL PIGEON OR A CROSS SOMEWHERE AND IT'S UP TO YOU TO FIND OUT WHERE IT IS + ANYHOW I AM TAKING NO MORE CHANCES + IT'S ME FOR LITTLE HOLLAND AND THE SOONER THE BETTER + VON BORK HAD MASTERED HIS ANGER + WE HAVE BEEN ALLIES TOO LONG TO QUARREL NOW AT THE VERY HOUR OF VICTORY HE SAID + YOU'VE DONE SPLENDID WORK AND TAKEN RISKS AND I CAN'T FORGET IT + BY ALL MEANS GO TO HOLLAND AND YOU CAN GET A BOAT FROM ROTTERDAM TO NEW YORK + NO OTHER LINE WILL BE SAFE A WEEK FROM NOW + I'LL TAKE THAT BOOK AND PACK IT WITH THE REST + THE AMERICAN HELD THE SMALL PARCEL IN HIS HAND BUT MADE NO MOTION TO GIVE IT UP + QUOTE WHAT ABOUT THE DOUGH QUOTE HE ASKED + THE WHAT + THE BOODLE + THE REWARD + THE FIVE HUNDRED POUNDS + THE GUNNER TURNED DAMNED NASTY AT THE LAST AND I HAD TO SQUARE HIM WITH AN EXTRA HUNDRED DOLLARS OR IT WOULD HAVE BEEN NITSKY FOR YOU AND ME + NOTHIN' DOIN' SAYS HE AND HE MEANT IT TOO BUT THE LAST HUNDRED DID IT + IT'S COST ME TWO HUNDRED POUND FROM FIRST TO LAST SO IT ISN'T LIKELY I'D GIVE IT UP WITHOUT GETTIN' MY WAD + VON BORK SMILED WITH SOME BITTERNESS + YOU DON'T SEEM TO HAVE A VERY HIGH OPINION OF MY HONOUR SAID HE YOU WANT THE MONEY BEFORE YOU GIVE UP THE BOOK + WELL MISTER IT IS A BUSINESS PROPOSITION + QUOTE ALL RIGHT + HAVE YOUR WAY + HE SAT DOWN AT THE TABLE AND SCRIBBLED A CHECK WHICH HE TORE FROM THE BOOK BUT HE REFRAINED FROM HANDING IT TO HIS COMPANION + AFTER ALL SINCE WE ARE TO BE ON SUCH TERMS MR. ALTAMONT SAID HE I DON'T SEE WHY I SHOULD TRUST YOU ANY MORE THAN YOU TRUST ME + DO YOU UNDERSTAND HE ADDED LOOKING BACK OVER HIS SHOULDER AT THE AMERICAN + THERE'S THE CHECK UPON THE TABLE + I CLAIM THE RIGHT TO EXAMINE THAT PARCEL BEFORE YOU PICK THE MONEY UP + THE AMERICAN PASSED IT OVER WITHOUT A WORD + VON BORK UNDID A WINDING OF STRING AND TWO WRAPPERS OF PAPER + THEN HE SAT GAZING FOR A MOMENT IN SILENT AMAZEMENT AT A SMALL BLUE BOOK WHICH LAY BEFORE HIM + ACROSS THE COVER WAS PRINTED IN GOLDEN LETTERS PRACTICAL HANDBOOK OF BEE CULTURE + ONLY FOR ONE INSTANT DID THE MASTER SPY GLARE AT THIS STRANGELY IRRELEVANT INSCRIPTION + THE NEXT HE WAS GRIPPED AT THE BACK OF HIS NECK BY A GRASP OF IRON AND A CHLOROFORMED SPONGE WAS HELD IN FRONT OF HIS WRITHING FACE + QUOTE ANOTHER GLASS WATSON QUOTE SAID MR. SHERLOCK HOLMES AS HE EXTENDED THE BOTTLE OF IMPERIAL TOKAY + THE THICKSET CHAUFFEUR WHO HAD SEATED HIMSELF BY THE TABLE PUSHED FORWARD HIS GLASS WITH SOME EAGERNESS + IT IS A GOOD WINE HOLMES + A REMARKABLE WINE WATSON + OUR FRIEND UPON THE SOFA HAS ASSURED ME THAT IT IS FROM FRANZ JOSEF'S SPECIAL CELLAR AT THE SCHOENBRUNN PALACE + MIGHT I TROUBLE YOU TO OPEN THE WINDOW FOR CHLOROFORM VAPOUR DOES NOT HELP THE PALATE + THE SAFE WAS AJAR AND HOLMES STANDING IN FRONT OF IT WAS REMOVING DOSSIER AFTER DOSSIER SWIFTLY EXAMINING EACH AND THEN PACKING IT NEATLY IN VON BORK'S VALISE + THE GERMAN LAY UPON THE SOFA SLEEPING STERTOROUSLY WITH A STRAP ROUND HIS UPPER ARMS AND ANOTHER ROUND HIS LEGS + WE NEED NOT HURRY OURSELVES WATSON + WE ARE SAFE FROM INTERRUPTION + WOULD YOU MIND TOUCHING THE BELL + THERE IS NO ONE IN THE HOUSE EXCEPT OLD MARTHA WHO HAS PLAYED HER PART TO ADMIRATION + I GOT HER THE SITUATION HERE WHEN FIRST I TOOK THE MATTER UP + AH MARTHA YOU WILL BE GLAD TO HEAR THAT ALL IS WELL + THE PLEASANT OLD LADY HAD APPEARED IN THE DOORWAY + SHE CURTSEYED WITH A SMILE TO MR. HOLMES BUT GLANCED WITH SOME APPREHENSION AT THE FIGURE UPON THE SOFA + QUOTE IT IS ALL RIGHT MARTHA + HE HAS NOT BEEN HURT AT ALL + I AM GLAD OF THAT MR. HOLMES + ACCORDING TO HIS LIGHTS HE HAS BEEN A KIND MASTER + HE WANTED ME TO GO WITH HIS WIFE TO GERMANY YESTERDAY BUT THAT WOULD HARDLY HAVE SUITED YOUR PLANS WOULD IT SIR + NO INDEED MARTHA + SO LONG AS YOU WERE HERE I WAS EASY IN MY MIND + WE WAITED SOME TIME FOR YOUR SIGNAL TO NIGHT + QUOTE IT WAS THE SECRETARY SIR QUOTE + I KNOW + HIS CAR PASSED OURS + I THOUGHT HE WOULD NEVER GO + I KNEW THAT IT WOULD NOT SUIT YOUR PLANS SIR TO FIND HIM HERE + NO INDEED + WELL IT ONLY MEANT THAT WE WAITED HALF AN HOUR OR SO UNTIL I SAW YOUR LAMP GO OUT AND KNEW THAT THE COAST WAS CLEAR + YOU CAN REPORT TO ME TO MORROW IN LONDON MARTHA AT CLARIDGE'S HOTEL QUOTE + VERY GOOD SIR + I SUPPOSE YOU HAVE EVERYTHING READY TO LEAVE + YES SIR + HE POSTED SEVEN LETTERS TO DAY + I HAVE THE ADDRESSES AS USUAL + VERY GOOD MARTHA + I WILL LOOK INTO THEM TO MORROW + GOODNIGHT + THESE PAPERS QUOTE HE CONTINUED AS THE OLD LADY VANISHED QUOTE ARE NOT OF VERY GREAT IMPONANCE FOR OF COURSE THE INFORMATION WHICH THEY REPRESENT HAS BEEN SENT OFF LONG AGO TO THE GERMAN GOVERNMENT + THESE ARE THE ORIGINALS WHICH COULD NOT SAFELY BE GOT OUT OF THE COUNTRY + THEN THEY ARE OF NO USE + I SHOULD NOT GO SO FAR AS TO SAY THAT WATSON + THEY WILL AT LEAST SHOW OUR PEOPLE WHAT IS KNOWN AND WHAT IS NOT + I MAY SAY THAT A GOOD MANY OF THESE PAPERS HAVE COME TBROUGH ME AND I NEED NOT ADD ARE THOROUGHLY UNTRUSTWORTHY + IT WOULD BRIGHTEN MY DECLINING YEARS TO SEE A GERMAN CRUISER NAVIGATING THE SOLENT ACCORDING TO THE MINE FIELD PLANS WHICH I HAVE FURNISHED + BUT YOU WATSON HE STOPPED HIS WORK AND TOOK HIS OLD FRIEND BY THE SHOULDERS I'VE HARDLY SEEN YOU IN THE LIGHT YET + HOW HAVE THE YEARS USED YOU + YOU LOOK THE SAME BLITHE BOY AS EVER + QUOTE I FEEL TWENTY YEARS YOUNGER HOLMES + I HAVE SELDOM FELT SO HAPPY AS WHEN I GOT YOUR WIRE ASKING ME TO MEET YOU AT HARWICH WITH THE CAR + BUT YOU HOLMES YOU HAVE CHANGED VERY LITTLE SAVE FOR THAT HORRIBLE GOATEE + THESE ARE THE SACRIFICES ONE MAKES FOR ONE'S COUNTRY WATSON SAID HOLMES PULLING AT HIS LITTLE TUFT + TO MORROW IT WILL BE BUT A DREADFUL MEMORY + WITH MY HAIR CUT AND A FEW OTHER SUPERFICIAL CHANGES I SHALL NO DOUBT REAPPEAR AT CLARIDGE'S TOMORROW AS I WAS BEFORE THIS AMERICAN STUNT I BEG YOUR PARDON WATSON MY WELL OF ENGLISH SEEMS TO BE PERMANENTLY DEFILED BEFORE THIS AMERICAN JOB CAME MY WAY + BUT YOU HAVE RETIRED HOLMES + WE HEARD OF YOU AS LIVING THE LIFE OF A HERMIT AMONG YOUR BEES AND YOUR BOOKS IN A SMALL FARM UPON THE SOUTH DOWNS QUOTE + EXACTLY WATSON + HERE IS THE FRUIT OF MY LEISURED EASE THE MAGNUM OPUS OF MY LATTER YEARS + HE PICKED UP THE VOLUME FROM THE TABLE AND READ OUT THE WHOLE TITLE PRACTICAL HANDBOOK OF BEE CULTURE WITH SOME OBSERVATIONS UPON THE SEGREGATION OF THE QUEEN + ALONE I DID IT + BEHOLD THE FRUIT OF PENSIVE NIGHTS AND LABORIOUS DAYS WHEN I WATCHED THE LITTLE WORKING GANGS AS ONCE I WATCHED THE CRIMINAL WORLD OF LONDON + BUT HOW DID YOU GET TO WORK AGAIN + QUOTE AH I HAVE OFTEN MARVELLED AT IT MYSELF + THE FOREIGN MINISTER ALONE I COULD HAVE WITHSTOOD BUT WHEN THE PREMIER ALSO DEIGNED TO VISIT MY HUMBLE ROOF + THE FACT IS WATSON THAT THIS GENTLEMAN UPON THE SOFA WAS A BIT TOO GOOD FOR OUR PEOPLE + HE WAS IN A CLASS BY HIMSELF + THINGS WERE GOING WRONG AND NO ONE COULD UNDERSTAND WHY THEY WERE GOING WRONG + AGENTS WERE SUSPECTED OR EVEN CAUGHT BUT THERE WAS EVIDENCE OF SOME STRONG AND SECRET CENTRAL FORCE + IT WAS ABSOLUTELY NECESSARY TO EXPOSE IT + STRONG PRESSURE WAS BROUGHT UPON ME TO LOOK INTO THE MATTER + IT HAS COST ME TWO YEARS WATSON BUT THEY HAVE NOT BEEN DEVOID OF EXCITEMENT + WHEN I SAY THAT I STARTED MY PILGRIMAGE AT CHICAGO GRADUATED IN AN IRISH SECRET SOCIETY AT BUFFALO GAVE SERIOUS TROUBLE TO THE CONSTABULARY AT SKIBBAREEN AND SO EVENTUALLY CAUGHT THE EYE OF A SUBORDINATE AGENT OF VON BORK WHO RECOMMENDED ME AS A LIKELY MAN YOU WILL REALIZE THAT THE MATTER WAS COMPLEX + SINCE THEN I HAVE BEEN HONOURED BY HIS CONFIDENCE WHICH HAS NOT PREVENTED MOST OF HIS PLANS GOING SUBTLY WRONG AND FIVE OF HIS BEST AGENTS BEING IN PRISON + I WATCHED THEM WATSON AND I PICKED THEM AS THEY RIPENED + WELL SIR I HOPE THAT YOU ARE NONE THE WORSE + THE LAST REMARK WAS ADDRESSED TO VON BORK HIMSELF WHO AFTER MUCH GASPING AND BLINKING HAD LAIN QUIETLY LISTENING TO HOLMES'S STATEMENT + HE BROKE OUT NOW INTO A FURIOUS STREAM OF GERMAN INVECTIVE HIS FACE CONVULSED WITH PASSION + HOLMES CONTINUED HIS SWIFT INVESTIGATION OF DOCUMENTS WHILE HIS PRISONER CURSED AND SWORE + THOUGH UNMUSICAL GERMAN IS THE MOST EXPRESSIVE OF ALL LANGUAGES HE OBSERVED WHEN VON BORK HAD STOPPED FROM PURE EXHAUSTION + HULLO + HULLO HE ADDED AS HE LOOKED HARD AT THE CORNER OF A TRACING BEFORE PUTTING IT IN THE BOX + THIS SHOULD PUT ANOTHER BIRD IN THE CAGE + I HAD NO IDEA THAT THE PAYMASTER WAS SUCH A RASCAL THOUGH I HAVE LONG HAD AN EYE UPON HIM + MISTER VON BORK YOU HAVE A GREAT DEAL TO ANSWER FOR QUOTE + THE PRISONER HAD RAISED HIMSELF WITH SOME DIFFICULTY UPON THE SOFA AND WAS STARING WITH A STRANGE MIXTURE OF AMAZEMENT AND HATRED AT HIS CAPTOR + I SHALL GET LEVEL WITH YOU ALTAMONT HE SAID SPEAKING WITH SLOW DELIBERATION + IF IT TAKES ME ALL MY LIFE I SHALL GET LEVEL WITH YOU + THE OLD SWEET SONG SAID HOLMES + HOW OFTEN HAVE I HEARD IT IN DAYS GONE BY + IT WAS A FAVOURITE DITTY OF THE LATE LAMENTED PROFESSOR MORIARTY + COLONEL SEBASTIAN MORAN HAS ALSO BEEN KNOWN TO WARBLE IT + AND YET I LIVE AND KEEP BEES UPON THE SOUTH DOWNS + QUOTE CURSE YOU YOU DOUBLE TRAITOR QUOTE CRIED THE GERMAN STRAINING AGAINST HIS BONDS AND GLARING MURDER FROM HIS FURIOUS EYES + NO NO IT IS NOT SO BAD AS THAT SAID HOLMES SMILING + AS MY SPEECH SURELY SHOWS YOU MR. ALTAMONT AF CHICAGO HAD NO EXISTENCE IN FACT + I USED HIM AND HE IS GONE + THEN WHO ARE YOU + IT IS REALLY IMMATERIAL WHO I AM BUT SINCE THE MATTER SEEMS TO INTEREST YOU MR. VON BORK I MAY SAY THAT THIS IS NOT MY FIRST ACQUAINTANCE WITH THE MEMBERS OF YOUR FAMILY + I HAVE DONE A GOOD DEAL OF BUSINESS IN GERMANY IN THE PAST AND MY NAME IS PROBABLY FAMILIAR TO YOU QUOTE + I WOULD WISH TO KNOW IT SAID THE PRUSSIAN GRIMLY + IT WAS I WHO BROUGHT ABOUT THE SEPARATION BETWEEN IRENE ADLER AND THE LATE KING OF BOHEMIA WHEN YORUR COUSIN HEINRICH WAS THE IMPERIAL ENVOY + IT WAS I ALSO WHO SAVED FROM MURDER BY THE NIHILIST KLOPMAN COUNT VON UND ZU GRAFENSTEIN WHO WAS YOUR MOTHER'S ELDER BROTHER + IT WAS I + VON BORK SAT UP IN AMAZEMENT + THERE IS ONLY ONE MAN HE CRIED + EXACTLY SAID HOLMES + VON BORK GROANED AND SANK BACK ON THE SOFA + QUOTE AND MOST OF THAT INFORMATION CAME THROUGH YOU QUOTE HE CRIED + WHAT IS IT WORTH + WHAT HAVE I DONE + IT IS MY RUIN FOREVER + IT IS CERTAINLY A LITTLE UNTRUSTWORTHY SAID HOLMES + IT WILL REQUIRE SOME CHECKING AND YOU HAVE LITTLE TIME TO CHECK IT + YOUR ADMIRAL MAY FIND THE NEW GUNS RATHER LARGER THAN HE EXPECTS AND THE CRUISERS PERHAPS A TRIFLE FASTER + VON BORK CLUTCHED AT HIS OWN THROAT IN DESPAIR + QUOTE THERE ARE A GOOD MANY OTHER POINTS OF DEFAIL WHICH WILL NO DOUBT COME TO LIGHT IN GOOD TIME + BUT YOUL HAVE ONE QUALITY WHICH IS VERY RARE IN A GERMAN MR. VON BORK YOU ARE A SPORTSMAN AND YOU WILL BEAR ME NO ILL WILL WHEN YOU REALIZE THAT YOU WHO HAVE OUTWITTED SO MANY OTHER PEOPLE HAVE AT LAST BEEN OUTWITTED YOURSELF + AFTER ALL YOU HAVE DONE VOUR BEST FOR YOUR COUNTRY AND I HAVE DONE MY BEST FOR MINE AND WHAT COULD BE MORE NATURAL + BESIDES HE ADDED NOT UNKINDLY AS HE LAID HIS HAND UPON THE SHOULDER OF THE PROSTRATE MAN IT IS BETTER THAN TO FALL BEFORE SOME MORE IGNOBLE FOE + THESE PAPERS ARE NOW READY + WATSON + IF YOU WILL HELP ME WITH OUR PRISONER I THINK THAT WE MAY GET STARTED FOR LONDON AT ONCE + IT WAS NO EASY TASK TO MOVE VON BORK FOR HE WAS A STRONG AND A DESPERATE MAN + FINALLY HOLDING EITHER ARM THE TWO FRIENDS WALKED HIM VERY SLOWLY DOWN THE GARDEN WALK WHICH HE HAD TROD WITH SUCH PROUD CONFIDENCE WHEN HE RECEIVED THE CONGRATULATIONS OF THE FAMOUS DIPLOMATIST ONLY A FEW HOURS BEFORE + AFTER A SHORT FINAL STRUGGLE HE WAS HOISTED STILL BOUND HAND AND FOOT INTO THE SPARE SEAT OF THE LITTLE CAR + HIS PRECIOUS VALISE WAS WEDGED IN BESIDE HIM + I TRUST THAT YOU ARE AS COMFORTABLE AS CIRCUMSTANCES PERMIT SAID HOLMES WHEN THE FINAL ARRANGEMENTS WERE MADE + SHOULD I BE GUILTY OF A LIBERTY IF I LIT A CIGAR AND PLACED IT BETWEEN YOUR LIPS + BUT ALL AMENITIES WERE WASTED UPON THE ANGRY GERMAN + I SUPPOSE YOU REALIZE MR. SHERLOCK HOLMES SAID HE THAT IF YOUR GOVERNMENT BEARS YOU OUT IN THIS TREATMENT IT BECOMES AN ACT OF WAR + QUOTE WHAT ABOUT YOUR GOVERNMENT AND ALL THIS TREATMENT QUOTE SAID HOLMES TAPPING THE VALISE + YOU ARE A PRIVATE INDIVIDUAL + YOU HAVE NO WARRANT FOR MY ARREST + THE WHOLE PROCEEDING IS ABSOLUTELY ILLEGAL AND OUTRAGEOUS + ABSOLUTELY SAID HOLMES + KIDNAPPING A GERMAN SUBJECT + AND STEALING HIS PRIVATE PAPERS + QUOTE WELL YOU REALIZE YOUR POSITION YOU AND YOUR ACCOMPLICE HERE + IF I WERE TO SHOUT FOR HELP AS WE PASS THROUGH THE VILLAGE + MY DEAR SIR IF YOU DID ANYTHING SO FOOLISH YOU WOULD PROBABLY ENLARGE THE TWO LIMITED TITLES OF OUR VILLAGE INNS BY GIVING US THE DANGLING PRUSSIAN AS A SIGNPOST + THE ENGLISHMAN IS A PATIENT CREATURE BUT AT PRESENT HIS TEMPER IS A LITTLE INFLAMED AND IT WOULD BE AS WELL NOT TO TRY HIM TOO FAR + NO MR. VON BORK YOU WILL GO WITH US IN A QUIET SENSIBLE FASHION TO SCOTLAND YARD WHENCE YOU CAN SEND FOR YOUR FRIEND BARON VON HERLING AND SEE IF EVEN NOW YOU MAY NOT FILL THAT PLACE WHICH HE HAS RESERVED FOR YOU IN THE AMBASSADORIAL SUITE + AS TO YOU WATSON YOU ARE JOINING US WITH YOUR OLD SERVICE AS I UNDERSTAND SO LONDON WON'T BE OUT OF YOUR WAY + STAND WITH ME HERE UPON THE TERRACE FOR IT MAY BE THE LAST QUIET TALK THAT WE SHALL EVER HAVE + THE TWO FRIENDS CHATTED IN INTIMATE CONVERSE FOR A FEW MINUTES RECALLING ONCE AGAIN THE DAYS OF THE PAST WHILE THEIR PRISONER VAINLY WRIGGLED TO UNDO THE BONDS THAT HELD HIM + AS THEY TURNED TO THE CAR HOLMES POINTED BACK TO THE MOONLIT SEA AND SHOOK A THOUGHTFUL HEAD + THERE'S AN EAST WIND COMING WATSON + L. THINK NOT HOLMES + IT IS VERY WARM QUOTE + GOOD OLD WATSON + YOU ARE THE ONE FIXED POINT IN A CHANGING AGE + THERE'S AN EAST WIND COMING ALL THE SAME SUCH A WIND AS NEVER BLEW ON ENGLAND YET + IT WILL BE COLD AND BITTER WATSON AND A GOOD MANY OF US MAY WITHER BEFORE ITS BLAST + BUT IT'S GOD'S OWN WIND NONE THE LESS AND A CLEANER BETTER STRONGER LAND WILL LIE IN THE SUNSHINE WHEN THE STORM HAS CLEARED + START HER UP WATSON FOR IT'S TIME THAT WE WERE ON OUR WAY + I HAVE A CHECK FOR FIVE HUNDRED POUNDS WHICH SHOULD BE CASHED EARLY FOR THE DRAWER IS QUITE CAPABLE OF STOPPING IT IF HE CAN diff --git a/samples/LMTutorial/train/hound_of_baskervilles.txt b/samples/LMTutorial/train/hound_of_baskervilles.txt new file mode 100755 index 0000000..abbb612 --- /dev/null +++ b/samples/LMTutorial/train/hound_of_baskervilles.txt @@ -0,0 +1,165 @@ + CHAPTER ONE MR. SHERLOCK HOLMES + MR. SHERLOCK HOLMES WHO WAS USUALLY VERY LATE IN THE MORNINGS SAVE UPON THOSE NOT INFREQUENT OCCASIONS WHEN HE WAS UP ALL NIGHT WAS SEATED AT THE BREAKFAST TABLE + I STOOD UPON THE HEARTH RUG AND PICKED UP THE STICK WHICH OUR VISITOR HAD LEFT BEHIND HIM THE NIGHT BEFORE + IT WAS A FINE THICK PIECE OF WOOD BULBOUS HEADED OF THE SORT WHICH IS KNOWN AS A QUOTE PENANG LAWYER QUOTE + JUST UNDER THE HEAD WAS A BROAD SILVER BAND NEARLY AN INCH ACROSS + TO JAMES MORTIMER M. R. C. S. FROM HIS FRIENDS OF THE C. C. H. WAS ENGRAVED UPON IT WITH THE DATE ONE THOUSAND EIGHT HUNDRED EIGHTY FOUR + IT WAS JUST SUCH A STICK AS THE OLD FASHIONED FAMILY PRACTITIONER USED TO CARRY DIGNIFIED SOLID AND REASSURING + WELL WATSON WHAT DO YOU MAKE OF IT + HOLMES WAS SITTING WITH HIS BACK TO ME AND I HAD GIVEN HIM NO SIGN OF MY OCCUPATION + HOW DID YOU KNOW WHAT I WAS DOING + I BELIEVE YOU HAVE EYES IN THE BACK OF YOUR HEAD + I HAVE AT LEAST A WELL POLISHED SILVER PLATED COFFEE POT IN FRONT OF ME SAID HE + QUOTE BUT TELL ME WATSON WHAT DO YOU MAKE OF OUR VISITOR'S STICK + SINCE WE HAVE BEEN SO UNFORTUNATE AS TO MISS HIM AND HAVE NO NOTION OF HIS ERRAND THIS ACCIDENTAL SOUVENIR BECOMES OF IMPORTANCE + LET ME HEAR YOU RECONSTRUCT THE MAN BY AN EXAMINATION OF IT + I THINK SAID I FOLLOWING AS FAR AS I COULD THE METHODS OF MY COMPANION THAT DOCTOR MORTIMER IS A SUCCESSFUL ELDERLY MEDICAL MAN WELL ESTEEMED SINCE THOSE WHO KNOW HIM GIVE HIM THIS MARK OF THEIR APPRECIATION + GOOD SAID HOLMES + EXCELLENT + I THINK ALSO THAT THE PROBABILITY IS IN FAVOUR OF HIS BEING A COUNTRY PRACTITIONER WHO DOES A GREAT DEAL OF HIS VISITING ON FOOT + QUOTE WHY SO QUOTE + BECAUSE THIS STICK THOUGH ORIGINALLY A VERY HANDSOME ONE HAS BEEN SO KNOCKED ABOUT THAT I CAN HARDLY IMAGINE A TOWN PRACTITIONER CARRYING IT + THE THICK IRON FERRULE IS WORN DOWN SO IT IS EVIDENT THAT HE HAS DONE A GREAT AMOUNT OF WALKING WITH IT + PERFECTLY SOUND SAID HOLMES + AND THEN AGAIN THERE IS THE FRIENDS OF THE C. C. H. + I SHOULD GUESS THAT TO BE THE SOMETHING HUNT THE LOCAL HUNT TO WHOSE MEMBERS HE HAS POSSIBLY GIVEN SOME SURGICAL ASSISTANCE AND WHICH HAS MADE HIM A SMALL PRESENTATION IN RETURN + QUOTE REALLY WATSON YOU EXCEL YOURSELF QUOTE SAID HOLMES PUSHING BACK HIS CHAIR AND LIGHTING A CIGARETTE + I AM BOUND TO SAY THAT IN ALL THE ACCOUNTS WHICH YOU HAVE BEEN SO GOOD AS TO GIVE OF MY OWN SMALL ACHIEVEMENTS YOU HAVE HABITUALLY UNDERRATED YOUR OWN ABILITIES + IT MAY BE THAT YOU ARE NOT YOURSELF LUMINOUS BUT YOU ARE A CONDUCTOR OF LIGHT + SOME PEOPLE WITHOUT POSSESSING GENIUS HAVE A REMARKABLE POWER OF STIMULATING IT + I CONFESS MY DEAR FELLOW THAT I AM VERY MUCH IN YOUR DEBT + HE HAD NEVER SAID AS MUCH BEFORE AND I MUST ADMIT THAT HIS WORDS GAVE ME KEEN PLEASURE FOR I HAD OFTEN BEEN PIQUED BY HIS INDIFFERENCE TO MY ADMIRATION AND TO THE ATTEMPTS WHICH I HAD MADE TO GIVE PUBLICITY TO HIS METHODS + I WAS PROUD TOO TO THINK THAT I HAD SO FAR MASTERED HIS SYSTEM AS TO APPLY IT IN A WAY WHICH EARNED HIS APPROVAL + HE NOW TOOK THE STICK FROM MY HANDS AND EXAMINED IT FOR A FEW MINUTES WITH HIS NAKED EYES + THEN WITH AN EXPRESSION OF INTEREST HE LAID DOWN HIS CIGARETTE AND CARRYING THE CANE TO THE WINDOW HE LOOKED OVER IT AGAIN WITH A CONVEX LENS + INTERESTING THOUGH ELEMENTARY SAID HE AS HE RETURNED TO HIS FAVOURITE CORNER OF THE SETTEE + THERE ARE CERTAINLY ONE OR TWO INDICATIONS UPON THE STICK + IT GIVES US THE BASIS FOR SEVERAL DEDUCTIONS + QUOTE HAS ANYTHING ESCAPED ME QUOTE + I ASKED WITH SOME SELFIMPORTANCE + I TRUST THAT THERE IS NOTHING OF CONSEQUENCE WHICH I HAVE OVERLOOKED + I AM AFRAID MY DEAR WATSON THAT MOST OF YOUR CONCLUSIONS WERE ERRONEOUS + WHEN I SAID THAT YOU STIMULATED ME I MEANT TO BE FRANK THAT IN NOTING YOUR FALLACIES I WAS OCCASIONALLY GUIDED TOWARDS THE TRUTH + NOT THAT YOU ARE ENTIRELY WRONG IN THIS INSTANCE + THE MAN IS CERTAINLY A COUNTRY PRACTITIONER + AND HE WALKS A GOOD DEAL + THEN I WAS RIGHT + TO THAT EXTENT + QUOTE BUT THAT WAS ALL QUOTE + NO NO MY DEAR WATSON NOT ALL BY NO MEANS ALL + I WOULD SUGGEST FOR EXAMPLE THAT A PRESENTATION TO A DOCTOR IS MORE LIKELY TO COME FROM A HOSPITAL THAN FROM A HUNT AND THAT WHEN THE INITIALS C. C. ARE PLACED BEFORE THAT HOSPITAL THE WORDS CHARING CROSS' VERY NATURALLY SUGGEST THEMSELVES + YOU MAY BE RIGHT + THE PROBABILITY LIES IN THAT DIRECTION + AND IF WE TAKE THIS AS A WORKING HYPOTHESIS WE HAVE A FRESH BASIS FROM WHICH TO START OUR CONSTRUCTION OF THIS UNKNOWN VISITOR + QUOTE WELL THEN SUPPOSING THAT C. C. H. DOES STAND FOR CHARING CROSS HOSPITAL WHAT FURTHER INFERENCES MAY WE DRAW QUOTE + DO NONE SUGGEST THEMSELVES + YOU KNOW MY METHODS + APPLY THEM + I CAN ONLY THINK OF THE OBVIOUS CONCLUSION THAT THE MAN HAS PRACTISED IN TOWN BEFORE GOING TO THE COUNTRY + I THINK THAT WE MIGHT VENTURE A LITTLE FARTHER THAN THIS + LOOK AT IT IN THIS LIGHT + ON WHAT OCCASION WOULD IT BE MOST PROBABLE THAT SUCH A PRESENTATION WOULD BE MADE + WHEN WOULD HIS FRIENDS UNITE TO GIVE HIM A PLEDGE OF THEIR GOOD WILL + OBVIOUSLY AT THE MOMENT WHEN DOCTOR MORTIMER WITHDREW FROM THE SERVICE OF THE HOSPITAL IN ORDER TO START IN PRACTICE FOR HIMSELF + WE KNOW THERE HAS BEEN A PRESENTATION + WE BELIEVE THERE HAS BEEN A CHANGE FROM A TOWN HOSPITAL TO A COUNTRY PRACTICE + IS IT THEN STRETCHING OUR INFERENCE TOO FAR TO SAY THAT THE PRESENTATION WAS ON THE OCCASION OF THE CHANGE + QUOTE IT CERTAINLY SEEMS PROBABLE QUOTE + NOW YOU WILL OBSERVE THAT HE COULD NOT HAVE BEEN ON THE STAFF OF OHE HOSPITAL SINCE ONLY A MAN WELL ESTABLISHED IN A LONDON PRACTICE COULD HOLD SUCH A POSITION AND SUCH A ONE WOULD NOT DRIFT INTO THE COUNTRY + WHAT WAS HE THEN + IF HE WAS IN THE HOSPITAL AND YET NOT ON THE STAFF HE COULD ONLY HAVE BEEN A HOUSE SURPEON OR A HOUSE PHYSICIAN LITTLE MORE THAN A SENIOR STUDENT + AND HE LEFT FIVE YEARS AGO THE DATE IS ON THE STICK + SO YOUR GRAVE MIDDLE AGED FAMILY PRACTITIONER VANISHES INTO THIN AIR MY DEAR WATSON AND THERE EMERGES A YOUNG FELLOW UNDER THIRTY AMIABLE UNAMBITIOUS ABSENT MINDED AND THE POSSESSOR OF A FAVOURITE DOG WHICH I SHOULD DESCRIBE ROUGHLY AS BEING LARGER THAN A TERRIER AND SMALLER THAN A MASTIFF + I LAUGHED INCREDULOUSLY AS SHERLOCK HOLMES LEANED BACK IN HIS SETTEE AND BLEW LITTLE WAVERING RINGS OF SMOKE UP TO THE CEILING + AS TO THE LATTER PART I HAVE NO MEANS OF CHECKING YOU SAID I BUT AT LEAST IT IS NOT DIFFICULT TO FIND OUT A FEW PARTICULARS ABOUT THE MAN'S AGE AND PROFESSIONAL CAREER + FROM MY SMALL MEDICAL SHELF I TOOK DOWN THE MEDICAL DIRECTORY AND TURNED UP THE NAME + THERE WERE SEVERAL MORTIMERS BUT ONLY ONE WHO COULD BE OUR VISITOR + I READ HIS RECORD ALOUD + MORTIMER JAMES M. R. C. S. ONE THOUSAND EIGHT HUNDRED EIGHTY TWO GRIMPEN DARTMOOR DEVON + HOUSE SURGEON FROM ONE THOUSAND EIGHT HUNDRED EIGHTY TWO TO ONE THOUSAND EIGHT HUNDRED EIGHTY FOUR AT CHARING CROSS HOSPITAL + WINNER OF THE JACKSON PRIZE FOR COMPARA TIVE PATHOLOGY WITH ESSAY ENTITLED IS DISEASE A REVERSION + CORRESPONDING MEMBER OF THE SWEDISH PATHOLOGICAL SOCI ETY + AUTHOR OF SOME FREAKS OF ATAVISM LANCET ONE THOUSAND EIGHT HUNDRED EIGHTY TWO + DO WE PROGRESS + JOURNAL OF PSYCHOLOGY MARCH ONE THOUSAND EIGHT HUNDRED EIGHTY THREE + MEDICAL OFFICER FOR THE PARISHES OF GRIMPEN THORSLEY AND HIGH BARROW + QUOTE NO MENTION OF THAT LOCAL HUNT WATSON QUOTE SAID HOLMES WITH A MISCHIEVOUS SMILE QUOTE BUT A COUNTRY DOCTOR AS YOU VERY ASTUTELY OBSERVED + I THINK THAT I AM FAIRLY JUSTIFIED IN MY INFERENCES + AS TO THE ADJECTIVES I SAID IF I REMEMBER RIGHT AMIABLE UNAMBITIOUS AND ABSENT MINDED + IT IS MY EXPERIENCE THAT IT IS ONLY AN AMIABLE MAN IN THIS WORLD WHO RECEIVES TESTIMONIALS ONLY AN UNAMBITIOUS ONE WHO ABANDONS A LONDON CAREER FOR THE COUNTRY AND ONLY AN ABSENT MINDED ONE WHO LEAVES HIS STICK AND NOT HIS VISITING CARD AFTER WAITING AN HOUR IN YOUR ROOM + AND THE DOG + HAS BEEN IN THE HABIT OF CARRYING THIS STICK BEHIND HIS MASTER + BEING A HEAVY STICK THE DOG HAS HELD IT TIGHTLY BY THE MIDDLE AND THE MARKS OF HIS TEETH ARE VERY PLAINLY VISIBLE + THE DOG'S JAW AS SHOWN IN THE SPACE BETWEEN THESE MARKS IS TOO BROAD IN MY OPINION FOR A TERRIER AND NOT BROAD ENOUGH FOR A MASTIFF + IT MAY HAVE BEEN YES BY JOVE IT IS A CURLY HAIRED SPANIEL + HE HAD RISEN AND PACED THE ROOM AS HE SPOKE + NOW HE HALTED IN THE RECESS OF THE WINDOW + THERE WAS SUCH A RING OF CONVICTION IN HIS VOICE THAT I GLANCED UP IN SURPRISE + MY DEAR FELLOW HOW CAN YOU POSSIBLY BE SO SURE OF THAT + QUOTE FOR THE VERY SIMPLE REASON THAT I SEE THE DOG HIMSELF ON OUR VERY DOOR STEP AND THERE IS THE RING OF ITS OWNER + DON'T MOVE I BEG YOU WATSON + HE IS A PROFESSIONAL BROTHER OF YOURS AND YOUR PRESENCE MAY BE OF ASSISTANCE TO ME + NOW IS THE DRAMATIC MOMENT OF FATE WATSON WHEN YOU HEAR A STEP UPON THE STAIR WHICH IS WALKING INTO YOUR LIFE AND YOU KNOW NOT WHETHER FOR GOOD OR ILL + WHAT DOES DOCTOR JAMES MORTIMER THE MAN OF SCIENCE ASK OF SHERLOCK HOLMES THE SPECIALIST IN CRIME + COME IN + THE APPEARANCE OF OUR VISITOR WAS A SURPRISE TO ME SINCE I HAD EXPECTED A TYPICAL COUNTRY PRACTITIONER + HE WAS A VERY TALL THIN MAN WITH A LONG NOSE LIKE A BEAK WHICH JUTTED OUT BETWEEN TWO KEEN GRAY EYES SET CLOSELY TOGETHER AND SPARKLING BRIGHTLY FROM BEHIND A PAIR OF GOLD RIMMED GLASSES + HE WAS CLAD IN A PROFESSIONAL BUT RATHER SLOVENLY FASHION FOR HIS FROCK COAT WAS DINGY AND HIS TROUSERS FRAYED + THOUGH YOUNG HIS LONG BACK WAS ALREADY BOWED AND HE WALKED WITH A FORWARD THRUST OF HIS HEAD AND A GENERAL AIR OF PEERING BENEVOLENCE + AS HE ENTERED HIS EYES FELL UPON THE STICK IN HOLMES'S HAND AND HE RAN TOWARDS IT WITH AN EXCLAMATION OF JOY + I AM SO VERY GLAD SAID HE + I WAS NOT SURE WHETHER I HAD LEFT IT HERE OR IN THE SHIPPING OFFICE + I WOULD NOT LOSE THAT STICK FOR THE WORLD + A PRESENTATION I SEE SAID HOLMES + QUOTE YES SIR QUOTE + FROM CHARING CROSS HOSPITAL + FROM ONE OR TWO FRIENDS THERE ON THE OCCASION OF MY MARRIAGE + DEAR DEAR THAT'S BAD SAID HOLMES SHAKING HIS HEAD + DOCTOR MORTIMER BLINKED THROUGH HIS GLASSES IN MILD ASTONISHMENT + WHY WAS IT BAD + ONLY THAT YOU HAVE DISARRANGED OUR LITTLE DEDUCTIONS + YOUR MARRIAGE YOU SAY QUOTE + YES SIR + I MARRIED AND SO LEFT THE HOSPITAL AND WITH IT ALL HOPES OF A CONSULTING PRACTICE + IT WAS NECESSARY TO MAKE A HOME OF MY OWN + COME COME WE ARE NOT SO FAR WRONG AFTER ALL SAID HOLMES + AND NOW DOCTOR JAMES MORTIMER + MISTER SIR MISTER A HUMBLE M. R. C. S. + QUOTE AND A MAN OF PRECISE MIND EVIDENTLY QUOTE + A DABBLER IN SCIENCE MR. HOLMES A PICKER UP OF SHELLS ON THE SHORES OF THE GREAT UNKNOWN OCEAN + I PRESUME THAT IT IS MR. SHERLOCK HOLMES WHOM I AM ADDRESSING AND NOT + NO THIS IS MY FRIEND DOCTOR WATSON + GLAD TO MEET YOU SIR + I HAVE HEARD YOUR NAME MENTIONED IN CONNECTION WITH THAT OF YOUR FRIEND + YOU INTEREST ME VERY MUCH MR. HOLMES + I HAD HARDLY EXPECTED SO DOLICHOCEPHALIC A SKULL OR SUCH WELL MARKED SUPRA ORBITAL DEVELOPMENT + WOULD YOU HAVE ANY OBJECTION TO MY RUNNING MY FINGER ALONG YOUR PARIETAL FISSURE + A CAST OF YOUR SKULL SIR UNTIL THE ORIGINAL IS AVAILABLE WOULD BE AN ORNAMENT TO ANY ANTHROPOLOGICAL MUSEUM + IT IS NOT MY INTENTION TO BE FULSOME BUT I CONFESS THAT I COVET YOUR SKULL + SHERLOCK HOLMES WAVED OUR STRANGE VISITOR INTO A CHAIR + QUOTE YOU ARE AN ENTHUSIAST IN YOUR LINE OF THOUGHT I PERCEIVE SIR AS I AM IN MINE QUOTE SAID HE + I OBSERVE FROM YOUR FOREFINGER THAT YOU MAKE YOUR OWN CIGARETTES + HAVE NO HESITATION IN LIGHTING ONE + THE MAN DREW OUT PAPER AND TOBACCO AND TWIRLED THE ONE UP IN THE OTHER WITH SURPRISING DEXTERITY + HE HAD LONG QUIVERING FINGERS AS AGILE AND RESTLESS AS THE ANTENNAE OF AN INSECT + HOLMES WAS SILENT BUT HIS LITTLE DARTING GLANCES SHOWED ME THE INTEREST WHICH HE TOOK IN OUR CURIOUS COMPANION + I PRESUME SIR SAID HE AT LAST THAT IT WAS NOT MERELY FOR THE PURPOSE OF EXAMINING MY SKULL THAT YOU HAVE DONE ME THE HONOUR TO CALL HERE LAST NIGHT AND AGAIN TO DAY + NO SIR NO THOUGH I AM HAPPY TO HAVE HAD THE OPPORTUNITY OF DOING THAT AS WELL + I CAME TO YOU MR. HOLMES BECAUSE I RECOGNIZED THAT I AM MYSELF AN UNPRACTICAL MAN AND BECAUSE I AM SUDDENLY CONFRONTED WITH A MOST SERIOUS AND EXTRAORDINARY PROBLEM + RECOGNIZING AS I DO THAT YOU ARE THE SECOND HIGHEST EXPERT IN EUROPE + QUOTE INDEED SIR + MAY I INQUIRE WHO HAS THE HONOUR TO BE THE FIRST ASKED HOLMES WITH SOME ASPERITY + TO THE MAN OF PRECISELY SCIENTIFIC MIND THE WORK OF MONSIEUR BERTILLON MUST ALWAYS APPEAL STRONGLY + THEN HAD YOU NOT BETTER CONSULT HIM + I SAID SIR TO THE PRECISELY SCIENTIFIC MIND + BUT AS A PRACTICAL MAN OF AFFAIRS IT IS ACKNOWLEDGED THAT YOU STAND ALONE + I TRUST SIR THAT I HAVE NOT INADVERTENTLY + QUOTE JUST A LITTLE QUOTE SAID HOLMES + I THINK DOCTOR MORTIMER YOU WOULD DO WISELY IF WITHOUT MORE ADO YOU WOULD KINDLY TELL ME PLAINLY WHAT THE EXACT NATURE OF THE PROBLEM IS IN WHICH YOU DEMAND MY ASSISTANCE + CHAPTER TWO THE CURSE OF THE BASKERVILLES + I HAVE IN MY POCKET A MANUSCRIPT SAID DOCTOR JAMES MORTIMER + I OBSERVED IT AS YOU ENTERED THE ROOM SAID HOLMES + IT IS AN OLD MANUSCRIPT + EARLY EIGHTEENTH CENTURY UNLESS IT IS A FORGERY + QUOTE HOW CAN YOU SAY THAT SIR QUOTE + YOU HAVE PRESENTED AN INCH diff --git a/samples/LMTutorial/train/lady_frances_carfax.txt b/samples/LMTutorial/train/lady_frances_carfax.txt new file mode 100755 index 0000000..ac549f5 --- /dev/null +++ b/samples/LMTutorial/train/lady_frances_carfax.txt @@ -0,0 +1,603 @@ + QUOTE BUT WHY TURKISH QUOTE ASKED MR. SHERLOCK HOLMES GAZING FIXEDLY AT MY BOOTS + I WAS RECLINING IN A CANE BACKED CHAIR AT THE MOMENT AND MY PROTRUDED FEET HAD ATTRACTED HIS EVER ACTIVE ATTENTION + ENGLISH I ANSWERED IN SOME SURPRISE + I GOT THEM AT LATIMER'S IN OXFORD STREET + HOLMES SMILED WITH AN EXPRESSION OF WEARY PATIENCE + THE BATH HE SAID THE BATH + WHY THE RELAXING AND EXPENSIVE TURKISH RATHER THAN THE INVIGORATING HOME MADE ARTICLE + BECAUSE FOR THE LAST FEW DAYS I HAVE BEEN FEELING RHEUMATIC AND OLD + A TURKISH BATH IS WHAT WE CALL AN ALTERATIVE IN MEDICINE A FRESH STARTING POINT A CLEANSER OF THE SYSTEM + QUOTE BY THE WAY HOLMES QUOTE I ADDED QUOTE I HAVE NO DOUBT THE CONNECTION BETWEEN MY BOOTS AND A TURKISH BATH IS A PERFECTLY SELF EVIDENT ONE TO A LOGICAL MIND AND YET I SHOULD BE OBLIGED TO YOU IF YOU WOULD INDICATE IT QUOTE + THE TRAIN OF REASONING IS NOT VERY OBSCURE WATSON SAID HOLMES WITH A MISCHIEVOUS TWINKLE + IT BELONGS TO THE SAME ELEMENTARY CLASS OF DEDUCTION WHICH I SHOULD ILLUSTRATE IF I WERE TO ASK YOU WHO SHARED YOUR CAB IN YOUR DRIVE THIS MORNING + I DON'T ADMIT THAT A FRESH ILLUSTRATION IS AN EXPLANATION SAID I WITH SOME ASPERITY + BRAVO WATSON + A VERY DIGNIFIED AND LOGICAL REMONSTRANCE + LET ME SEE WHAT WERE THE POINTS + TAKE THE LAST ONE FIRST THE CAB + YOU OBSERVE THAT YOU HAVE SOME SPLASHES ON THE LEFT SLEEVE AND SHOULDER OF YOUR COAT + HAD YOU SAT IN THE CENTRE OF A HANSOM YOU WOULD PROBABLY HAVE HAD NO SPLASHES AND IF YOU HAD THEY WOULD CERTAINLY HAVE BEEN SYMMETRICAL + THEREFORE IT IS CLEAR THAT YOU SAT AT THE SIDE + THEREFORE IT IS EQUALLY CLEAR THAT YOU HAD A COMPANION + QUOTE THAT IS VERY EVIDENT QUOTE + ABSURDLY COMMONPLACE IS IT NOT + BUT THE BOOTS AND THE BATH + EQUALLY CHILDISH + YOU ARE IN THE HABIT OF DOING UP YOUR BOOTS IN A CERTAIN WAY + I SEE THEM ON THIS OCCASION FASTENED WITH AN ELABORATE DOUBLE BOW WHICH IS NOT YOUR USUAL METHOD OF TYING THEM + YOU HAVE THEREFORE HAD THEM OFF + WHO HAS TIED THEM + A BOOTMAKER OR THE BOY AT THE BATH + IT IS UNLIKELY THAT IT IS THE BOOTMAKER SINCE YOUR BOOTS ARE NEARLY NEW + WELL WHAT REMAINS + THE BATH + ABSURD IS IT NOT + BUT FOR ALL THAT THE TURKISH BATH HAS SERVED A PURPOSE + WHAT IS THAT + QUOTE YOU SAY THAT YOU HAVE HAD IT BECAUSE YOU NEED A CHANGE + LET ME SUGGEST THAT YOU TAKE ONE + HOW WOULD LAUSANNE DO MY DEAR WATSON FIRST CLASS TICKETS AND ALL EXPENSES PAID ON A PRINCELY SCALE + SPLENDID + BUT WHY + HOLMES LEANED BACK IN HIS ARMCHAIR AND TOOK HIS NOTEBOOK FROM HIS POCKET + ONE OF THE MOST DANGEROUS CLASSES IN THE WORLD SAID HE IS THE DRIFTING AND FRIENDLESS WOMAN + SHE IS THE MOST HARMLESS AND OFTEN THE MOST USEFUL OF MORTALS BUT SHE IS THE INEVITABLE INCITER OF CRIME IN OTHERS + SHE IS HELPLESS + SHE IS MIGRATORY + SHE HAS SUFFICIENT MEANS TO TAKE HER FROM COUNTRY TO COUNTRY AND FROM HOTEL TO HOTEL + SHE IS LOST AS OFTEN AS NOT IN A MAZE OF OBSCURE PENSIONS AND BOARDING HOUSES + SHE IS A STRAY CHICKEN IN A WORLD OF FOXES + WHEN SHE IS GOBBLED UP SHE IS HARDLY MISSED + I MUCH FEAR THAT SOME EVIL HAS COME TO THE LADY FRANCES CARFAX + I WAS RELIEVED AT THIS SUDDEN DESCENT FROM THE GENERAL TO THE PARTICULAR + HOLMES CONSULTED HIS NOTES + QUOTE LADY FRANCES QUOTE HE CONTINUED QUOTE IS THE SOLE SURVIVOR OF THE DIRECT FAMILY OF THE LATE EARL OF RUFTON + THE ESTATES WENT AS YOU MAY REMEMBER IN THE MALE LINE + SHE WAS LEFT WITH LIMITED MEANS BUT WITH SOME VERY REMARKABLE OLD SPANISH JEWELLERY OF SILVER AND CURIOUSLY CUT DIAMONDS TO WHICH SHE WAS FONDLY ATTACHED TOO ATTACHED FOR SHE REFUSED TO LEAVE THEM WITH HER BANKER AND ALWAYS CARRIED THEM ABOUT WITH HER + A RATHER PATHETIC FIGURE THE LADY FRANCES A BEAUTIFUL WOMAN STILL IN FRESH MIDDLE AGE AND YET BY A STRANGE CHANCE THE LAST DERELICT OF WHAT ONLY TWENTY YEARS AGO WAS A GOODLY FLEET + WHAT HAS HAPPENED TO HER THEN + AH WHAT HAS HAPPENED TO THE LADY FRANCES + IS SHE ALIVE OR DEAD + THERE IS OUR PROBLEM + SHE IS A LADY OF PRECISE HABITS AND FOR FOUR YEARS IT HAS BEEN HER INVARIABLE CUSTOM TO WRITE EVERY SECOND WEEK TO MISS DOBNEY HER OLD GOVERNESS WHO HAS LONG RETIRED AND LIVES IN CAMBERWELL + IT IS THIS MISS DOBNEY WHO HAS CONSULTED ME + NEARLY FIVE WEEKS HAVE PASSED WITHOUT A WORD + THE LAST LETTER WAS FROM THE HOTEL NATIONAL AT LAUSANNE + LADY FRANCES SEEMS TO HAVE LEFT THERE AND GIVEN NO ADDRESS + THE FAMILY ARE ANXIOUS AND AS THEY ARE EXCEEDINGLY WEALTHY NO SUM WLLL BE SPARED IF WE CAN CLEAR THE MATTER UP + IS MISS DOBNEY THE ONLY SOURCE OF INFORMATION + SURELY SHE HAD OTHER CORRESPONDENTS QUOTE + THERE IS ONE CORRESPONDENT WHO IS A SURE DRAW WATSON + THAT IS THE BANK + SINGLE LADIES MUST LIVE AND THEIR PASSBOOKS ARE COMPRESSED DIARIES + SHE BANKS AT SILVESTER'S + I HAVE GLANCED OVER HER ACCOUNT + THE LAST CHECK BUT ONE PAID HER BILL AT LAUSANNE BUT IT WAS A LARGE ONE AND PROBABLY LEFT HER WITH CASH IN HAND + ONLY ONE CHECK HAS BEEN DRAWN SINCE + TO WHOM AND WHERE + TO MISS MARIE DEVINE + THERE IS NOTHING TO SHOW WHERE THE CHECK WAS DRAWN + IT WAS CASHED AT THE CREDIT LYONNAIS AT MONTPELLIER LESS THAN THREE WEEKS AGO + THE SUM WAS FIFTY POUNDS + QUOTE AND WHO IS MISS MARIE DEVINE QUOTE + THAT ALSO I HAVE BEEN ABLE TO DISCOVER + MISS MARIE DEVINE WAS THE MAID OF LADY FRANCES CARFAX + WHY SHE SHOULD HAVE PAID HER THIS CHECK WE HAVE NOT YET DETERMINED + I HAVE NO DOUBT HOWEVER THAT YOUR RESEARCHES WILL SOON CLEAR THE MATTER UP + MY RESEARCHES + HENCE THE HEALTH GIVING EXPEDITION TO LAUSANNE + YOU KNOW THAT I CANNOT POSSIBLY LEAVE LONDON WHILE OLD ABRAHAMS IS IN SUCH MORTAL TERROR OF HIS LIFE + BESIDES ON GENERAL PRINCIPLES IT IS BEST THAT I SHOULD NOT LEAVE THE COUNTRY + SCOTLAND YARD FEELS LONELY WITHOUT ME AND IT CAUSES AN UNHEALTHY EXCITEMENT AMONG THE CRIMINAL CLASSES + GO THEN MY DEAR WATSON AND IF MY HUMBLE COUNSEL CAN EVER BE VALUED AT SO EXTRAVAGANT A RATE AS TWO PENCE A WORD IT WAITS YOUR DISPOSAL NIGHT AND DAY AT THE END OF THE CONTINENTAL WIRE + TWO DAYS LATER FOUND ME AT THE HOTEL NATIONAL AT LAUSANNE WHERE I RECEIVED EVERY COURTESY AT THE HANDS OF M. MOSER THE WELL KNOWN MANAGER + LADY FRANCES AS HE INFORMED ME HAD STAYED THERE FOR SEVERAL WEEKS + SHE HAD BEEN MUCH LIKED BY ALL WHO MET HER + HER AGE WAS NOT MORE THAN FORTY + SHE WAS STILL HANDSOME AND BORE EVERY SIGN OF HAVING IN HER YOUTH BEEN A VERY LOVELY WOMAN + M. MOSER KNEW NOTHING OF ANY VALUABLE JEWELLERY BUT IT HAD BEEN REMARKED BY THE SERVANTS THAT THE HEAVY TRUNK IN THE LADY'S BEDROOM WAS ALWAYS SCRUPULOUSLY LOCKED + MARIE DEVINE THE MAID WAS AS POPULAR AS HER MISTRESS + SHE WAS ACTUALLY ENGAGED TO ONE OF THE HEAD WAITERS IN THE HOTEL AND THERE WAS NO DIFFICULTY IN GETTING HER ADDRESS + IT WAS ELEVEN RUE DE TRAJAN MONTPELLIER + ALL THIS I JOTTED DOWN AND FELT THAT HOLMES HIMSELF COULD NOT HAVE BEEN MORE ADROIT IN COLLECTING HIS FACTS + ONLY ONE CORNER STILL REMAINED IN THE SHADOW + NO LIGHT WHICH I POSSESSED COULD CLEAR UP THE CAUSE FOR THE LADY'S SUDDEN DEPARTURE + SHE WAS VERY HAPPY AT LAUSANNE + THERE WAS EVERY REASON TO BELIEVE THAT SHE INTENDED TO REMAIN FOR THE SEASON IN HER LUXURIOUS ROOMS OVERLOOKING THE LAKE + AND YET SHE HAD LEFT AT A SINGLE DAY'S NOTICE WHICH INVOLVED HER IN THE USELESS PAYMENT OF A WEEK'S RENT + ONLY JULES VIBART THE LOVER OF THE MAID HAD ANY SUGGESTION TO OFFER + HE CONNECTED THE SUDDEN DEPARTURE WITH THE VISIT TO THE HOTEL A DAY OR TWO BEFORE OF A TALL DARK BEARDED MAN + QUOTE UN SAUVAGE UN VERITABLE SAUVAGE QUOTE CRIED JULES VIBART + THE MAN HAD ROOMS SOMEWHERE IN THE TOWN + HE HAD BEEN SEEN TALKING EARNESTLY TO MADAME ON THE PROMENADE BY THE LAKE + THEN HE HAD CALLED + SHE HAD REFUSED TO SEE HIM + HE WAS ENGLISH BUT OF HIS NAME THERE WAS NO RECORD + MADAME HAD LEFT THE PLACE IMMEDIATELY AFTERWARDS + JULES VIBART AND WHAT WAS OF MORE IMPORTANCE JULES VIBART'S SWEETHEART THOUGHT THAT THIS CALL AND THIS DEPARTURE WERE CAUSE AND EFFECT + ONLY ONE THING JULES WOULD NOT DISCUSS + THAT WAS THE REASON WHY MARIE HAD LEFT HER MISTRESS + OF THAT HE COULD OR WOULD SAY NOTHING + IF I WISHED TO KNOW I MUST GO TO MONTPELLIER AND ASK HER + SO ENDED THE FIRST CHAPTER OF MY INQUIRY + THE SECOND WAS DEVOTED TO THE PLACE WHICH LADY FRANCES CARFAX HAD SOUGHT WHEN SHE LEFT LAUSANNE + CONCERNING THIS THERE HAD BEEN SOME SECRECY WHICH CONFIRMED THE IDEA THAT SHE HAD GONE WITH THE INTENTION OF THROWING SOMEONE OFF HER TRACK + OTHERWISE WHY SHOULD NOT HER LUGGAGE HAVE BEEN OPENLY LABELLED FOR BADEN + BOTH SHE AND IT REACHED THE RHENISH SPA BY SOME CIRCUITOUS ROUTE + THIS MUCH I GATHERED FROM THE MANAGER OF COOK'S LOCAL OFFICE + SO TO BADEN I WENT AFTER DISPATCHING TO HOLMES AN ACCOUNT OF ALL MY PROCEEDINGS AND RECEIVING IN REPLY A TELEGRAM OF HALF HUMOROUS COMMENDATION + AT BADEN THE TRACK WAS NOT DIFFICULT TO FOLLOW + LADY FRANCES HAD STAYED AT THE ENGLISCHER HOF FOR A FORTNIGHT + WHILE THERE SHE HAD MADE THE ACQUAINTANCE OF A DOCTOR SHLESSINGER AND HIS WIFE A MISSIONARY FROM SOUTH AMERICA + LIKE MOST LONELY LADIES LADY FRANCES FOUND HER COMFORT AND OCCUPATION IN RELIGION + DOCTOR SHLESSINGER'S REMARKABLE PERSONALITY HIS WHOLE HEARTED DEVOTION AND THE FACT THAT HE WAS RECOVERING FROM A DISEASE CONTRACTED IN THE EXERCISE OF HIS APOSTOLIC DUTIES AFFECTED HER DEEPLY + SHE HAD HELPED MRS. SHLESSINGER IN THE NURSING OF THE CONVALESCENT SAINT + HE SPENT HIS DAY AS THE MANAGER DESCRIBED IT TO ME UPON A LOUNGE CHAIR ON THE VERANDA WITH AN ATTENDANT LADY UPON EITHER SIDE OF HIM + HE WAS PREPARING A MAP OF THE HOLY LAND WITH SPECIAL REFERENCE TO THE KINGDOM OF THE MIDIANITES UPON WHICH HE WAS WRITING A MONOGRAPH + FINALLY HAVING IMPROVED MUCH IN HEALTH HE AND HIS WIFE HAD RETURNED TO LONDON AND LADY FRANCES HAD STARTED THITHER IN THEIR COMPANY + THIS WAS JUST THREE WEEKS BEFORE AND THE MANAGER HAD HEARD NOTHING SINCE + AS TO THE MAID MARIE SHE HAD GONE OFF SOME DAYS BEFOREHAND IN FLOODS OF TEARS AFTER INFORMING THE OTHER MAIDS THAT SHE WAS LEAVING SERVICE FOREVER + DOCTOR SHLESSINGER HAD PAID THE BILL OF THE WHOLE PARTY BEFORE HIS DEPARTURE + BY THE WAY SAID THE LANDLORD IN CONCLUSION YOU ARE NOT THE ONLY FRIEND OF LADY FRANCES CARFAX WHO IS INQUIRING AFTER HER JUST NOW + ONLY A WEEK OR SO AGO WE HAD A MAN HERE UPON THE SAME ERRAND + DID HE GIVE A NAME + I ASKED + NONE BUT HE WAS AN ENGLISHMAN THOUGH OF AN UNUSUAL TYPE + A SAVAGE SAID I LINKING MY FACTS AFTER THE FASHION OF MY ILLUSTRIOUS FRIEND + QUOTE EXACTLY + THAT DESCRIBES HIM VERY WELL + HE IS A BULKY BEARDED SUNBURNED FELLOW WHO LOOKS AS IF HE WOULD BE MORE AT HOME IN A FARMERS' INN THAN IN A FASHIONABLE HOTEL + A HARD FIERCE MAN I SHOULD THINK AND ONE WHOM I SHOULD BE SORRY TO OFFEND + ALREADY THE MYSTERY BEGAN TO DEFINE ITSELF AS FIGURES GROW CLEARER WITH THE LIFTING OF A FOG + HERE WAS THIS GOOD AND PIOUS LADY PURSUED FROM PLACE TO PLACE BY A SINISTER AND UNRELENTING FIGURE + SHE FEARED HIM OR SHE WOULD NOT HAVE FLED FROM LAUSANNE + HE HAD STILL FOLLOWED + SOONER OR LATER HE WOULD OVERTAKE HER + HAD HE ALREADY OVERTAKEN HER + WAS THAT THE SECRET OF HER CONTINUED SILENCE + COULD THE GOOD PEOPLE WHO WERE HER COMPANIONS NOT SCREEN HER FROM HIS VIOLENCE OR HIS BLACKMAIL + WHAT HORRIBLE PURPOSE WHAT DEEP DESIGN LAY BEHIND THIS LONG PURSUIT + THERE WAS THE PROBLEM WHICH I HAD TO SOLVE + TO HOLMES I WROTE SHOWING HOW RAPIDLY AND SURELY I HAD GOT DOWN TO THE ROOTS OF THE MATTER + IN REPLY I HAD A TELEGRAM ASKING FOR A DESCRIPTION OF DOCTOR SHLESSINGER'S LEFT EAR + HOLMES'S IDEAS OF HUMOUR ARE STRANGE AND OCCASIONALLY OFFENSIVE SO I TOOK NO NOTICE OF HIS ILL TIMED JEST INDEED I HAD ALREADY REACHED MONTPELLIER IN MY PURSUIT OF THE MAID MARIE BEFORE HIS MESSAGE CAME + I HAD NO DIFFICULTY IN FINDING THE EX SERVANT AND IN LEARNING ALL THAT SHE COULD TELL ME + SHE WAS A DEVOTED CREATURE WHO HAD ONLY LEFT HER MISTRESS BECAUSE SHE WAS SURE THAT SHE WAS IN GOOD HANDS AND BECAUSE HER OWN APPROACHING MARRIAGE MADE A SEPARATION INEVITABLE IN ANY CASE + HER MISTRESS HAD AS SHE CONFESSED WITH DISTRESS SHOWN SOME IRRITABILITY OF TEMPER TOWARDS HER DURING THEIR STAY IN BADEN AND HAD EVEN QUESTIONED HER ONCE AS IF SHE HAD SUSPICIONS OF HER HONESTY AND THIS HAD MADE THE PARTING EASIER THAN IT WOULD OTHERWISE HAVE BEEN + LADY FRANCES HAD GIVEN HER FIFTY POUNDS AS A WEDDING PRESENT + LIKE ME MARIE VIEWED WITH DEEP DISTRUST THE STRANGER WHO HAD DRIVEN HER MISTRESS FROM LAUSANNE + WITH HER OWN EYES SHE HAD SEEN HIM SEIZE THE LADY'S WRIST WITH GREAT VIOLENCE ON THE PUBLIC PROMENADE BY THE LAKE + HE WAS A FIERCE AND TERRIBLE MAN + SHE BELIEVED THAT IT WAS OUT OF DREAD OF HIM THAT LADY FRANCES HAD ACCEPTED THE ESCORT OF THE SHLESSINGERS TO LONDON + SHE HAD NEVER SPOKEN TO MARIE ABOUT IT BUT MANY LITTLE SIGNS HAD CONVINCED THE MAID THAT HER MISTRESS LIVED IN A STATE OF CONTINUAL NERVOUS APPREHENSION + SO FAR SHE HAD GOT IN HER NARRATIVE WHEN SUDDENLY SHE SPRANG FROM HER CHAIR AND HER FACE WAS CONVULSED WITH SURPRISE AND FEAR + SEE SHE CRIED + THE MISCREANT FOLLOWS STILL + THERE IS THE VERY MAN OF WHOM I SPEAK + THROUGH THE OPEN SITTING ROOM WINDOW I SAW A HUGE SWARTHY MAN WITH A BRISTLING BLACK BEARD WALKING SLOWLY DOWN THE CENTRE OF THE STREET AND STARING EAGERLY AT THE NUMBERS OF THE HOUSES + IT WAS CLEAR THAT LIKE MYSELF HE WAS ON THE TRACK OF THE MAID + ACTING UPON THE IMPULSE OF THE MOMENT I RUSHED OUT AND ACCOSTED HIM + YOU ARE AN ENGLISHMAN I SAID + QUOTE WHAT IF I AM QUOTE HE ASKED WITH A MOST VILLAINOUS SCOWL + MAY I ASK WHAT YOUR NAME IS + NO YOU MAY NOT SAID HE WITH DECISION + THE SITUATION WAS AWKWARD BUT THE MOST DIRECT WAY IS OFTEN THE BEST + WHERE IS THE LADY FRANCES CARFAX + I ASKED + HE STARED AT ME IN AMAZEMENT + WHAT HAVE YOU DONE WITH HER + WHY HAVE YOU PURSUED HER + I INSIST UPON AN ANSWER SAID I + THE FELLOW GAVE A BELLOW OF ANGER AND SPRANG UPON ME LIKE A TIGER + I HAVE HELD MY OWN IN MANY A STRUGGLE BUT THE MAN HAD A GRIP OF IRON AND THE FURY OF A FIEND + HIS HAND WAS ON MY THROAT AND MY SENSES WERE NEARLY GONE BEFORE AN UNSHAVEN FRENCH OUVRIER IN A BLUE BLOUSE DARTED OUT FROM A CABARET OPPOSITE WITH A CUDGEL IN HIS HAND AND STRUCK MY ASSAILANT A SHARP CRACK OVER THE FOREARM WHICH MADE HIM LEAVE GO HIS HOLD + HE STOOD FOR AN INSTANT FUMING WITH RAGE AND UNCERTAIN WHETHER HE SHOULD NOT RENEW HIS ATTACK + THEN WITH A SNARL OF ANGER HE LEFT ME AND ENTERED THE COTTAGE FROM WHICH I HAD JUST COME + I TURNED TO THANK MY PRESERVER WHO STOOD BESIDE ME IN THE ROADWAY + QUOTE WELL WATSON QUOTE SAID HE QUOTE A VERY PRETTY HASH YOU HAVE MADE OF IT + I RATHER THINK YOU HAD BETTER COME BACK WITH ME TO LONDON BY THE NIGHT EXPRESS + AN HOUR AFTERWARDS SHERLOCK HOLMES IN HIS USUAL GARB AND STYLE WAS SEATED IN MY PRIVATE ROOM AT THE HOTEL + HIS EXPLANATION OF HIS SUDDEN AND OPPORTUNE APPEARANCE WAS SIMPLICITY ITSELF FOR FINDING THAT HE COULD GET AWAY FROM LONDON HE DETERMINED TO HEAD ME OFF AT THE NEXT OBVIOUS POINT OF MY TRAVELS + IN THE DISGUISE OF A WORKINGMAN HE HAD SAT IN THE CABARET WAITING FOR MY APPEARANCE + AND A SINGULARLY CONSISTENT INVESTIGATION YOU HAVE MADE MY DEAR WATSON SAID HE + I CANNOT AT THE MOMENT RECALL ANY POSSIBLE BLUNDER WHICH YOU HAVE OMITTED + THE TOTAL EFFECT OF YOUR PROCEEDING HAS BEEN TO GIVE THE ALARM EVERYWHERE AND YET TO DISCOVER NOTHING + PERHAPS YOU WOULD HAVE DONE NO BETTER I ANSWERED BITTERLY + QUOTE THERE IS NO PERHAPS ABOUT IT + I HAVE DONE BETTER + HERE IS THE HON + PHILIP GREEN WHO IS A FELLOW LODGER WITH YOU IN THIS HOTEL AND WE MAY FIND HIM THE STARTING POINT FOR A MORE SUCCESSFUL INVESTIGATION + A CARD HAD COME UP ON A SALVER AND IT WAS FOLLOWED BY THE SAME BEARDED RUFFIAN WHO HAD ATTACKED ME IN THE STREET + HE STARTED WHEN HE SAW ME + WHAT IS THIS MR. HOLMES HE ASKED + I HAD YOUR NOTE AND I HAVE COME + BUT WHAT HAS THIS MAN TO DO WITH THE MATTER + THIS IS MY OLD FRIEND AND ASSOCIATE DOCTOR WATSON WHO IS HELPING US IN THIS AFFAIR + THE STRANGER HELD OUT A HUGE SUNBURNED HAND WITH A FEW WORDS OF APOLOGY + QUOTE I HOPE I DIDN'T HARM YOU + WHEN YOU ACCUSED ME OF HURTING HER I LOST MY GRIP OF MYSELF + INDEED I'M NOT RESPONSIBLE IN THESE DAYS + MY NERVES ARE LIKE LIVE WIRES + BUT THIS SITUATION IS BEYOND ME + WHAT I WANT TO KNOW IN THE FIRST PLACE MR. HOLMES IS HOW IN THE WORLD YOU CAME TO HEAR OF MY EXISTENCE AT ALL + I AM IN TOUCH WITH MISS DOBNEY LADY FRANCES'S GOVERNESS + OLD SUSAN DOBNEY WITH THE MOB CAP + I REMEMBER HER WELL + AND SHE REMEMBERS YOU + IT WAS IN THE DAYS BEFORE BEFORE YOU FOUND IT BETTER TO GO TO SOUTH AFRICA QUOTE + AH I SEE YOU KNOW MY WHOLE STORY + I NEED HIDE NOTHING FROM YOU + I SWEAR TO YOU MR. HOLMES THAT THERE NEVER WAS IN THIS WORLD A MAN WHO LOVED A WOMAN WITH A MORE WHOLEHEARTED LOVE THAN I HAD FOR FRANCES + I WAS A WILD YOUNGSTER I KNOW NOT WORSE THAN OTHERS OF MY CLASS + BUT HER MIND WAS PURE AS SNOW + SHE COULD NOT BEAR A SHADOW OF COARSENESS + SO WHEN SHE CAME TO HEAR OF THINGS THAT I HAD DONE SHE WOULD BAVE NO MORE TO SAY TO ME + AND YET SHE LOVED ME THAT IS THE WONDER OF IT LOVED ME WELL ENOUGH TO REMAIN SINGLE ALL HER SAINTED DAYS JUST FOR MY SAKE ALONE + WHEN THE YEARS HAD PASSED AND I HAD MADE MY MONEY AT BARBERTON I THOUGHT PERHAPS I COULD SEEK HER OUT AND SOFTEN HER + I HAD HEARD THAT SHE WAS STILL UNMARRIED + I FOUND HER AT LAUSANNE AND TRIED ALL I KNEW + SHE WEAKENED I THINK BUT HER WILL WAS STRONG AND WHEN NEXT I CALLED SHE HAD LEFT THE TOWN + I TRACED HER TO BADEN AND THEN AFTER A TIME HEARD THAT HER MAID WAS HERE + I'M A ROUGH FELLOW FRESH FROM A ROUGH LIFE AND WHEN DOCTOR WATSON SPOKE TO ME AS HE DID I LOST HOLD OF MYSELF FOR A MOMENT + BUT FOR GOD'S SAKE TELL ME WHAT HAS BECOME OF THE LADY FRANCES + THAT IS FOR US TO FIND OUT SAID SHERLOCK HOLMES WITH PECULIAR GRAVITY + WHAT IS YOUR LONDON ADDRESS MR. GREEN + THE LANGHAM HOTEL WILL FIND ME + QUOTE THEN MAY I RECOMMEND THAT YOU RETURN THERE AND BE ON HAND IN CASE I SHOULD WANT YOU + I HAVE NO DESIRE TO ENCOURAGE FALSE HOPES BUT YOU MAY REST ASSURED THAT ALL THAT CAN BE DONE WILL BE DONE FOR THE SAFETY OF LADY FRANCES + I CAN SAY NO MORE FOR THE INSTANT + I WILL LEAVE YOU THIS CARD SO THAT YOU MAY BE ABLE TO KEEP IN TOUCH WITH US + NOW WATSON IF YOU WILL PACK YOUR BAG I WILL CABLE TO MRS. HUDSON TO MAKE ONE OF HER BEST EFFORTS FOR TWO HUNGRY TRAVELLERS AT SEVEN THIRTY TO MORROW + A TELEGRAM WAS AWAITING US WHEN WE REACHED OUR BAKER STREET ROOMS WHICH HOLMES READ WITH AN EXCLAMATION OF INTEREST AND THREW ACROSS TO ME + JAGGED OR TORN WAS THE MESSAGE AND THE PLACE OF ORIGIN BADEN + WHAT IS THIS + I ASKED + IT IS EVERYTHING HOLMES ANSWERED + YOU MAY REMEMBER MY SEEMINGLY IRRELEVANT QUESTION AS TO THIS CLERICAL GENTLEMAN'S LEFT EAR + YOU DID NOT ANSWER IT QUOTE + I HAD LEFT BADEN AND COULD NOT INQUIRE + EXACTLY + FOR THIS REASON I SENT A DUPLICATE TO THE MANAGER OF THE ENGLISCHER HOF WHOSE ANSWER LIES HERE + WHAT DOES IT SHOW + IT SHOWS MY DEAR WATSON THAT WE ARE DEALING WITH AN EXCEPTIONALLY ASTUTE AND DANGEROUS MAN + THE REVEREND DOCTOR SHLESSINGER MISSIONARY FROM SOUTH AMERICA IS NONE OTHER THAN HOLY PETERS ONE OF THE MOST UNSCRUPULOUS RASCALS THAT AUSTRALIA HAS EVER EVOLVED AND FOR A YOUNG COUNTRY IT HAS TURNED OUT SOME VERY FINISHED TYPES + HIS PARTICULAR SPECIALTY IS THE BEGUILING OF LONELY LADIES BY PLAYING UPON THEIR RELIGIOUS FEELINGS AND HIS SO CALLED WIFE AN ENGLISHWOMAN NAMED FRASER IS A WORTHY HELPMATE + THE NATURE OF HIS TACTICS SUGGESTED HIS IDENTITY TO ME AND THIS PHYSICAL PECULIARITY HE WAS BADLY BITTEN IN A SALOON FIGHT AT ADELAIDE IN EIGHTY NINE CONFIRMED MY SUSPICION + THIS POOR LADY IS IN THE HANDS OF A MOST INFERNAL COUPLE WHO WILL STICK AT NOTHING WATSON + THAT SHE IS ALREADY DEAD IS A VERY LIKELY SUPPOSITION + IF NOT SHE IS UNDOUBTEDLY IN SOME SORT OF CONFINEMENT AND UNABLE TO WRITE TO MISS DOBNEY OR HER OTHER FRIENDS + IT IS ALWAYS POSSIBLE THAT SHE NEVER REACHED LONDON OR THAT SHE HAS PASSED THROUGH IT BUT THE FORMER IS IMPROBABLE AS WITH THEIR SYSTEM OF REGISTRATION IT IS NOT EASY FOR FOREIGNERS TO PLAY TRICKS WITH THE CONTINENTAL POLICE AND THE LATTER IS ALSO UNLIKELY AS THESE ROGUES COULD NOT HOPE TO FIND ANY OTHER PLACE WHERE IT WOULD BE AS EASY TO KEEP A PERSON UNDER RESTRAINT + ALL MY INSTINCTS TELL ME THAT SHE IS IN LONDON BUT AS WE HAVE AT PRESENT NO POSSIBLE MEANS OF TELLING WHERE WE CAN ONLY TAKE THE OBVIOUS STEPS EAT OUR DINNER AND POSSESS OUR SOULS IN PATIENCE + LATER IN THE EVENING I WILL STROLL DOWN AND HAVE A WORD WITH FRIEND LESTRADE AT SCOTLAND YARD QUOTE + BUT NEITHER THE OFFICIAL POLICE NOR HOLMES'S OWN SMALL BUT VERY EFFICIENT ORGANIZATION SUFFICED TO CLEAR AWAY THE MYSTERY + AMID THE CROWDED MILLIONS OF LONDON THE THREE PERSONS WE SOUGHT WERE AS COMPLETELY OBLITERATED AS IF THEY HAD NEVER LIVED + ADVERTISEMENTS WERE TRIED AND FAILED + CLUES WERE FOLLOWED AND LED TO NOTHING + EVERY CRIMINAL RESORT WHICH SHLESSINGER MIGHT FREQUENT WAS DRAWN IN VAIN + HIS OLD ASSOCIATES WERE WATCHED BUT THEY KEPT CLEAR OF HIM + AND THEN SUDDENLY AFTER A WEEK OF HELPLESS SUSPENSE THERE CAME A FLASH OF LIGHT + A SILVER ANDBRILLIANT PENDANT OF OLD SPANISH DESIGN HAD BEEN PAWNED AT BOVINGTON'S IN WESTMINSTER ROAD + THE PAWNER WAS A LARGE CLEAN SHAVEN MAN OF CLERICAL APPEARANCE + HIS NAME AND ADDRESS WERE DEMONSTRABLY FALSE + THE EAR HAD ESCAPED NOTICE BUT THE DESCRIPTION WAS SURELY THAT OF SHLESSINGER + THREE TIMES HAD OUR BEARDED FRIEND FROM THE LANGHAM CALLED FOR NEWS THE THIRD TIME WITHIN AN HOUR OF THIS FRESH DEVELOPMENT + HIS CLOTHES WERE GETTING LOOSER ON HIS GREAT BODY + HE SEEMED TO BE WILTING AWAY IN HIS ANXIETY + IF YOU WILL ONLY GIVE ME SOMETHING TO DO WAS HIS CONSTANT WAIL + AT LAST HOLMES COULD OBLIGE HIM + HE HAS BEGUN TO PAWN THE JEWELS + WE SHOULD GET HIM NOW + BUT DOES THIS MEAN THAT ANY HARM HAS BEFALLEN THE LADY FRANCES + HOLMES SHOOK HIS HEAD VERY GRAVELY + SUPPOSING THAT THEY HAVE HELD HER PRISONER UP TO NOW IT IS CLEAR THAT THEY CANNOT LET HER LOOSE WITHOUT THEIR OWN DESTRUCTION + WE MUST PREPARE FOR THE WORST QUOTE + WHAT CAN I DO + THESE PEOPLE DO NOT KNOW YOU BY SIGHT + NUMBER + IT IS POSSIBLE THAT HE WILL GO TO SOME OTHER PAWNBROKER IN THE FUTURE + IN THAT CASE WE MUST BEGIN AGAIN + ON THE OTHER HAND HE HAS HAD A FAIR PRICE AND NO QUESTIONS ASKED SO IF HE IS IN NEED OF READY MONEY HE WILL PROBABLY COME BACK TO BOVINGTON'S + I WILL GIVE YOU A NOTE TO THEM AND THEY WILL LET YOU WAIT IN THE SHOP + IF THE FELLOW COMES YOU WILL FOLLOW HIM HOME + BUT NO INDISCRETION AND ABOVE ALL NO VIOLENCE + I PUT YOU ON YOUR HONOUR THAT YOU WILL TAKE NO STEP WITHOUT MY KNOWLEDGE AND CONSENT + FOR TWO DAYS THE HON + PHILIP GREEN HE WAS I MAY MENTION THE SON OF THE FAMOUS ADMIRAL OF THAT NAME WHO COMMANDED THE SEA OF AZOF FLEET IN THE CRIMEAN WAR BROUGHT US NO NEWS + ON THE EVENING OF THE THIRD HE RUSHED INTO OUR SITTING ROOM PALE TREMBLING WITH EVERY MUSCLE OF HIS POWERFUL FRAME QUIVERING WITH EXCITEMENT + QUOTE WE HAVE HIM + WE HAVE HIM HE CRIED + HE WAS INCOHERENT IN HIS AGITATION + HOLMES SOOTHED HIM WITH A FEW WORDS AND THRUST HIM INTO AN ARMCHAIR + COME NOW GIVE US THE ORDER OF EVENTS SAID HE + SHE CAME ONLY AN HOUR AGO + IT WAS THE WIFE THIS TIME BUT THE PENDANT SHE BROUGHT WAS THE FELLOW OF THE OTHER + SHE IS A TALL PALE WOMAN WITH FERRET EYES + THAT IS THE LADY SAID HOLMES + QUOTE SHE LEFT THE OFFICE AND I FOLLOWED HER + SHE WALKED UP THE KENNINGTON ROAD AND I KEPT BEHIND HER + PRESENTLY SHE WENT INTO A SHOP + MR. HOLMES IT WAS AN UNDERTAKER'S + MY COMPANION STARTED + WELL HE ASKED IN THAT VIBRANT VOICE WHICH TOLD OF THE FIERY SOUL BEHIND THE COLD GRAY FACE + SHE WAS TALKING TO THE WOMAN BEHIND THE COUNTER + I ENTERED AS WELL + IT IS LATE I HEARD HER SAY OR WORDS TO THAT EFFECT + THE WOMAN WAS EXCUSING HERSELF + IT SHOULD BE THERE BEFORE NOW SHE ANSWERED + IT TOOK LONGER BEING OUT OF THE ORDINARY + THEY BOTH STOPPED AND LOOKED AT ME SO I ASKED SOME QUESTION AND THEN LEFT THE SHOP + YOU DID EXCELLENTLY WELL + WHAT HAPPENED NEXT QUOTE + THE WOMAN CAME OUT BUT I HAD HID MYSELF IN A DOORWAY + HER SUSPICIONS HAD BEEN AROUSED I THINK FOR SHE LOOKED ROUND HER + THEN SHE CALLED A CAB AND GOT IN + I WAS LUCKY ENOUGH TO GET ANOTHER AND SO TO FOLLOW HER + SHE GOT DOWN AT LAST AT NUMBER THIRTY SIX POULTNEY SQUARE BRIXTON + I DROVE PAST LEFT MY CAB AT THE CORNER OF THE SQUARE AND WATCHED THE HOUSE + DID YOU SEE ANYONE + THE WINDOWS WERE ALL IN DARKNESS SAVE ONE ON THE LOWER FLOOR + THE BLIND WAS DOWN AND I COULD NOT SEE IN + I WAS STANDING THERE WONDERING WHAT I SHOULD DO NEXT WHEN A COVERED VAN DROVE UP WITH TWO MEN IN IT + THEY DESCENDED TOOK SOMETHING OUT OF THE VAN AND CARRIED IT UP THE STEPS TO THE HALL DOOR + MR. HOLMES IT WAS A COFFIN + QUOTE AH QUOTE + FOR AN INSTANT I WAS ON THE POINT OF RUSHING IN + THE DOOR HAD BEEN OPENED TO ADMIT THE MEN AND THEIR BURDEN + IT WAS THE WOMAN WHO HAD OPENED IT + BUT AS I STOOD THERE SHE CAUGHT A GLIMPSE OF ME AND I THINK THAT SHE RECOGNIZED ME + I SAW HER START AND SHE HASTILY CLOSED THE DOOR + I REMEMBERED MY PROMISE TO YOU AND HERE I AM + YOU HAVE DONE EXCELLENT WORK SAID HOLMES SCRIBBLING A FEW WORDS UPON A HALF SHEET OF PAPER + WE CAN DO NOTHING LEGAL WITHOUT A WARRANT AND YOU CAN SERVE THE CAUSE BEST BY TAKING THIS NOTE DOWN TO THE AUTHORITIES AND GETTING ONE + THERE MAY BE SOME DIFFICULTY BUT I SHOULD THINK THAT THE SALE OF THE JEWELLERY SHOULD BE SUFFICIENT + LESTRADE WILL SEE TO ALL DETAILS + QUOTE BUT THEY MAY MURDER HER IN THE MEANWHILE + WHAT COULD THE COFFIN MEAN AND FOR WHOM COULD IT BE BUT FOR HER + WE WILL DO ALL THAT CAN BE DONE MR. GREEN + NOT A MOMENT WILL BE LOST + LEAVE IT IN OUR HANDS + NOW WATSON HE ADDED AS OUR CLIENT HURRIED AWAY HE WILL SET THE REGULAR FORCES ON THE MOVE + WE ARE AS USUAL THE IRREGULARS AND WE MUST TAKE OUR OWN LINE OF ACTION + THE SITUATION STRIKES ME AS SO DESPERATE THAT THE MOST EXTREME MEASURES ARE JUSTIFIED + NOT A MOMENT IS TO BE LOST IN GETTING TO POULTNEY SQUARE + LET US TRY TO RECONSTRUCT THE SITUATION SAID HE AS WE DROVE SWIFTLY PAST THE HOUSES OF PARLIAMENT AND OVER WESTMINSTER BRIDGE + THESE VILLAINS HAVE COAXED THIS UNHAPPY LADY TO LONDON AFTER FIRST ALIENATING HER FROM HER FAITHFUL MAID + IF SHE HAS WRITTEN ANY LETTERS THEY HAVE BEEN INTERCEPTED + THROUGH SOME CONFEDERATE THEY HAVE ENGAGED A FURNISHED HOUSE + ONCE INSIDE IT THEY HAVE MADE HER A PRISONER AND THEY HAVE BECOME POSSESSED OF THE VALUABLE JEWELLERY WHICH HAS BEEN THEIR OBJECT FROM THE FIRST + ALREADY THEY HAVE BEGUN TO SELL PART OF IT WHICH SEEMS SAFE ENOUGH TO THEM SINCE THEY HAVE NO REASON TO THINK THAT ANYONE IS INTERESTED IN THE LADY'S FATE + WHEN SHE IS RELEASED SHE WILL OF COURSE DENOUNCE THEM + THEREFORE SHE MUST NOT BE RELEASED + BUT THEY CANNOT KEEP HER UNDER LOCK AND KEY FOREVER + SO MURDER IS THEIR ONLY SOLUTION QUOTE + THAT SEEMS VERY CLEAR + NOW WE WILL TAKE ANOTHER LINE OF REASONING + WHEN YOU FOLLOW TWO SEPARATE CHAINS OF THOUGHT WATSON YOU WILL FIND SOME POINT OF INTERSECTION WHICH SHOULD APPROXIMATE TO THE TRUTH + WE WILL START NOW NOT FROM THE LADY BUT FROM THE COFFIN AND ARGUE BACKWARD + THAT INCIDENT PROVES I FEAR BEYOND ALL DOUBT THAT THE LADY IS DEAD + IT POINTS ALSO TO AN ORTHODOX BURIAL WITH PROPER ACCOMPANIMENT OF MEDICAL CERTIFICATE AND OFFICIAL SANCTION + HAD THE LADY BEEN OBVIOUSLY MURDERED THEY WOULD HAVE BURIED HER IN A HOLE IN THE BACK GARDEN + BUT HERE ALL IS OPEN AND REGULAR + WHAT DOES THAT MEAN + SURELY THAT THEY HAVE DONE HER TO DEATH IN SOME WAY WHICH HAS DECEIVED THE DOCTOR AND SIMULATED A NATURAL END POISONING PERHAPS + AND YET HOW STRANGE THAT THEY SHOULD EVER LET A DOCTOR APPROACH HER UNLESS HE WERE A CONFEDERATE WHICH IS HARDLY A CREDIBLE PROPOSITION + COULD THEY HAVE FORGED A MEDICAL CERTIFICATE + DANGEROUS WATSON VERY DANGEROUS + NO I HARDLY SEE THEM DOING THAT + PULL UP CABBY + THIS IS EVIDENTLY THE UNDERTAKER'S FOR WE HAVE JUST PASSED THE PAWNBROKER'S + WOULD YOU GO IN WATSON + YOUR APPEARANCE INSPIRES CONFIDENCE + ASK WHAT HOUR THE POULTNEY SQUARE FUNERAL TAKES PLACE TO MORROW QUOTE + THE WOMAN IN THE SHOP ANSWERED ME WITHOUT HESITATION THAT IT WAS TO BE AT EIGHT O'CLOCK IN THE MORNING + YOU SEE WATSON NO MYSTERY EVERYTHING ABOVEBOARD + IN SOME WAY THE LEGAL FORMS HAVE UNDOUBTEDLY BEEN COMPLIED WITH AND THEY THINK THAT THEY HAVE LITTLE TO FEAR + WELL THERE'S NOTHING FOR IT NOW BUT A DIRECT FRONTAL ATTACK + ARE YOU ARMED + MY STICK + WELL WELL WE SHALL BE STRONG ENOUGH + THRICE IS HE ARMED WHO HATH HIS QUARREL JUST + WE SIMPLY CAN'T AFFORD TO WAIT FOR THE POLICE OR TO KEEP WITHIN THE FOUR CORNERS OF THE LAW + YOU CAN DRIVE OFF CABBY + NOW WATSON WE'LL JUST TAKE OUR LUCK TOGETHER AS WE HAVE OCCASIONALLY DONE IN THE PAST + HE HAD RUNG LOUDLY AT THE DOOR OF A GREAT DARK HOUSE IN THE CENTRE OF POULTNEY SQUARE + IT WAS OPENED IMMEDIATELY AND THE FIGURE OF A TALL WOMAN WAS OUTLINED AGAINST THE DIM LIT HALL + QUOTE WELL WHAT DO YOU WANT QUOTE SHE ASKED SHARPLY PEERING AT US THROUGH THE DARKNESS + I WANT TO SPEAK TO DOCTOR SHLESSINGER SAID HOLMES + THERE IS NO SUCH PERSON HERE SHE ANSWERED AND TRIED TO CLOSE THE DOOR BUT HOLMES HAD JAMMED IT WITH HIS FOOT + WELL I WANT TO SEE THE MAN WHO LIVES HERE WHATEVER HE MAY CALL HIMSELF SAID HOLMES FIRMLY + SHE HESITATED + THEN SHE THREW OPEN THE DOOR + WELL COME IN SAID SHE + MY HUSBAND IS NOT AFRAID TO FACE ANY MAN IN THE WORLD + SHE CLOSED THE DOOR BEHIND US AND SHOWED US INTO A SITTING ROOM ON THE RIGHT SIDE OF THE HALL TURNING UP THE GAS AS SHE LEFT US + QUOTE MR. PETERS WILL BE WITH YOU IN AN INSTANT QUOTE SHE SAID + HER WORDS WERE LITERALLY TRUE FOR WE HAD HARDLY TIME TO LOOK AROUND THE DUSTY AND MOTH EATEN APARTMENT IN WHICH WE FOUND OURSELVES BEFORE THE DOOR OPENED AND A BIG CLEAN SHAVEN BALDHEADED MAN STEPPED LIGHTLY INTO THE ROOM + HE HAD A LARGE RED FACE WITH PENDULOUS CHEEKS AND A GENERAL AIR OF SUPERFICIAL BENEVOLENCE WHICH WAS MARRED BY A CRUEL VICIOUS MOUTH + THERE IS SURELY SOME MISTAKE HERE GENTLEMEN HE SAID IN AN UNCTUOUS MAKE EVERYTHING EASY VOICE + I FANCY THAT YOU HAVE BEEN MISDIRECTED + POSSIBLY IF YOU TRIED FARTHER DOWN THE STREET + THAT WILL DO WE HAVE NO TIME TO WASTE SAID MY COMPANION FIRMLY + YOU ARE HENRY PETERS OF ADELAIDE LATE THE REVEREND DOCTOR SHLESSINGER OF BADEN AND SOUTH AMERICA + I AM AS SURE OF THAT AS THAT MY OWN NAME IS SHERLOCK HOLMES QUOTE + PETERS AS I WILL NOW CALL HIM STARTED AND STARED HARD AT HIS FORMIDABLE PURSUER + I GUESS YOUR NAME DOES NOT FRIGHTEN ME MR. HOLMES SAID HE COOLLY + WHEN A MAN'S CONSCIENCE IS EASY YOU CAN'T RATTLE HIM + WHAT IS YOUR BUSINESS IN MY HOUSE + I WANT TO KNOW WHAT YOU HAVE DONE WITH THE LADY FRANCES CARFAX WHOM YOU BROUGHT AWAY WITH YOU FROM BADEN + I'D BE VERY GLAD IF YOU COULD TELL ME WHERE THAT LADY MAY BE PETERS ANSWERED COOLLY + QUOTE I'VE A BILL AGAINST HER FOR NEARLY A HUNDRED POUNDS AND NOTHING TO SHOW FOR IT BUT A COUPLE OF TRUMPERY PENDANTS THAT THE DEALER WOULD HARDLY LOOK AT + SHE ATTACHED HERSELF TO MRS. PETERS AND ME AT BADEN IT IS A FACT THAT I WAS USING ANOTHER NAME AT THE TIME AND SHE STUCK ON TO US UNTIL WE CAME TO LONDON + I PAID HER BILL AND HER TICKET + ONCE IN LONDON SHE GAVE US THE SLIP AND AS I SAY LEFT THESE OUT OF DATE JEWELS TO PAY HER BILLS + YOU FIND HER MR. HOLMES AND I'M YOUR DEBTOR + I MEAN TO FIND HER SAID SHERLOCK HOLMES + I'M GOING THROUGH THIS HOUSE TILL I DO FIND HER + WHERE IS YOUR WARRANT + HOLMES HALF DREW A REVOLVER FROM HIS POCKET + THIS WILL HAVE TO SERVE TILL A BETTER ONE COMES + QUOTE WHY YOU ARE A COMMON BURGLAR QUOTE + SO YOU MIGHT DESCRIBE ME SAID HOLMES CHEERFULLY + MY COMPANION IS ALSO A DANGEROUS RUFFIAN + AND TOGETHER WE ARE GOING THROUGH YOUR HOUSE + OUR OPPONENT OPENED THE DOOR + FETCH A POLICEMAN ANNIE SAID HE + THERE WAS A WHISK OF FEMININE SKIRTS DOWN THE PASSAGE AND THE HALL DOOR WAS OPENED AND SHUT + OUR TIME IS LIMITED WATSON SAID HOLMES + QUOTE IF YOU TRY TO STOP US PETERS YOU WILL MOST CERTAINLY GET HURT + WHERE IS THAT COFFIN WHICH WAS BROUGHT INTO YOUR HOUSE + WHAT DO YOU WANT WITH THE COFFIN + IT IS IN USE + THERE IS A BODY IN IT + I MUST SEE THAT BODY + NEVER WITH MY CONSENT + QUOTE THEN WITHOUT IT QUOTE + WITH A QUICK MOVEMENT HOLMES PUSHED THE FELLOW TO ONE SIDE AND PASSED INTO THE HALL + A DOOR HALF OPENED STOOD IMMEDIATELY BEFORE US + WE ENTERED + IT WAS THE DINING ROOM + ON THE TABLE UNDER A HALF LIT CHANDELIER THE COFFIN WAS LYING + HOLMES TURNED UP THE GAS AND RAISED THE LID + DEEP DOWN IN THE RECESSES OF THE COFFIN LAY AN EMACIATED FIGURE + THE GLARE FROM THE LIGHTS ABOVE BEAT DOWN UPON AN AGED AND WITHERED FACE + BY NO POSSIBLE PROCESS OF CRUELTY STARVATION OR DISEASE COULD THIS WORN OUT WRECK BE THE STILL BEAUTIFUL LADY FRANCES + HOLMES'S FACE SHOWED HIS AMAZEMENT AND ALSO HIS RELIEF + THANK GOD HE MUTTERED + IT'S SOMEONE ELSE + AH YOU'VE BLUNDERED BADLY FOR ONCE MR. SHERLOCK HOLMES SAID PETERS WHO HAD FOLLOWED US INTO THE ROOM + WHO IS THIS DEAD WOMAN + WELL IF YOU REALLY MUST KNOW SHE IS AN OLD NURSE OF MY WIFE'S ROSE SPENDER BY NAME WHOM WE FOUND IN THE BRIXTON WORKHOUSE INFIRMARY + WE BROUGHT HER ROUND HERE CALLED IN DOCTOR HORSOM OF THIRTEEN FIRBANK VILLAS MIND YOU TAKE THE ADDRESS MR. HOLMES AND HAD HER CAREFULLY TENDED AS CHRISTIAN FOLK SHOULD + ON THE THIRD DAY SHE DIED CERTIFICATE SAYS SENILE DECAY BUT THAT'S ONLY THE DOCTOR'S OPINION AND OF COURSE YOU KNOW BETTER + WE ORDERED HER FUNERAL TO BE CARRIED OUT BY STIMSON AND COMPANY OF THE KENNINGTON ROAD WHO WILL BURY HER AT EIGHT O'CLOCK TOMORROW MORNING + CAN YOU PICK ANY HOLE IN THAT MR. HOLMES + YOU'VE MADE A SILLY BLUNDER AND YOU MAY AS WELL OWN UP TO IT + I'D GIVE SOMETHING FOR A PHOTOGRAPH OF YOUR GAPING STARING FACE WHEN YOU PULLED ASIDE THAT LID EXPECTING TO SEE THE LADY FRANCES CARFAX AND ONLY FOUND A POOR OLD WOMAN OF NINETY QUOTE + HOLMES'S EXPRESSION WAS AS IMPASSIVE AS EVER UNDER THE JEERS OF HIS ANTAGONIST BUT HIS CLENCHED HANDS BETRAYED HIS ACUTE ANNOYANCE + I AM GOING THROUGH YOUR HOUSE SAID HE + ARE YOU THOUGH CRIED PETERS AS A WOMAN'S VOICE AND HEAVY STEPS SOUNDED IN THE PASSAGE + WE'LL SOON SEE ABOUT THAT + THIS WAY OFFICERS IF YOU PLEASE + THESE MEN HAVE FORCED THEIR WAY INTO MY HOUSE AND I CANNOT GET RID OF THEM + HELP ME TO PUT THEM OUT + A SERGEANT AND A CONSTABLE STOOD IN THE DOORWAY + HOLMES DREW HIS CARD FROM HIS CASE + THIS IS MY NAME AND ADDRESS + THIS IS MY FRIEND DOCTOR WATSON QUOTE + BLESS YOU SIR WE KNOW YOU VERY WELL SAID THE SERGEANT BUT YOU CAN'T STAY HERE WITHOUT A WARRANT + OF COURSE NOT + I QUITE UNDERSTAND THAT + ARREST HIM CRIED PETERS + WE KNOW WHERE TO LAY OUR HANDS ON THIS GENTLEMAN IF HE IS WANTED SAID THE SERGEANT MAJESTICALLY BUT YOU'LL HAVE TO GO MR. HOLMES + QUOTE YES WATSON WE SHALL HAVE TO GO QUOTE + A MINUTE LATER WE WERE IN THE STREET ONCE MORE + HOLMES WAS AS COOL AS EVER BUT I WAS HOT WITH ANGER AND HUMILIATION + THE SERGEANT HAD FOLLOWED US + SORRY MR. HOLMES BUT THAT'S THE LAW + EXACTLY SERGEANT YOU COULD NOT DO OTHERWISE + I EXPECT THERE WAS GOOD REASON FOR YOUR PRESENCE THERE + IF THERE IS ANYTHING I CAN DO + IT'S A MISSING LADY SERGEANT AND WE THINK SHE IS IN THAT HOUSE + I EXPECT A WARRANT PRESENTLY QUOTE + THEN I'LL KEEP MY EYE ON THE PARTIES MR. HOLMES + IF ANYTHING COMES ALONG I WILL SURELY LET YOU KNOW + IT WAS ONLY NINE O'CLOCK AND WE WERE OFF FULL CRY UPON THE TRAIL AT ONCE + FIRST WE DROVE TO BRIXTON WORKHOUSE INFIRMARY WHERE WE FOUND THAT IT WAS INDEED THE TRUTH THAT A CHARITABLE COUPLE HAD CALLED SOME DAYS BEFORE THAT THEY HAD CLAIMED AN IMBECILE OLD WOMAN AS A FORMER SERVANT AND THAT THEY HAD OBTAINED PERMISSION TO TAKE HER AWAY WITH THEM + NO SURPRISE WAS EXPRESSED AT THE NEWS THAT SHE HAD SINCE DIED + THE DOCTOR WAS OUR NEXT GOAL + HE HAD BEEN CALLED IN HAD FOUND THE WOMAN DYING OF PURE SENILITY HAD ACTUALLY SEEN HER PASS AWAY AND HAD SIGNED THE CERTIFICATE IN DUE FORM + I ASSURE YOU THAT EVERYTHING WAS PERFECTLY NORMAL AND THERE WAS NO ROOM FOR FOUL PLAY IN THE MATTER SAID HE + NOTHING IN THE HOUSE HAD STRUCK HIM AS SUSPICIOUS SAVE THAT FOR PEOPLE OF THEIR CLASS IT WAS REMARKABLE THAT THEY SHOULD HAVE NO SERVANT + SO FAR AND NO FARTHER WENT THE DOCTOR + FINALLY WE FOUND OUR WAY TO SCOTLAND YARD + THERE HAD BEEN DIFFICULTIES OF PROCEDURE IN REGARD TO THE WARRANT + SOME DELAY WAS INEVITABLE + THE MAGISTRATE'S SIGNATURE MIGHT NOT BE OBTAINED UNTIL NEXT MORNING + IF HOLMES WOULD CALL ABOUT NINE HE COULD GO DOWN WITH LESTRADE AND SEE IT ACTED UPON + SO ENDED THE DAY SAVE THAT NEAR MIDNIGHT OUR FRIEND THE SERGEANT CALLED TO SAY THAT HE HAD SEEN FLICKERING LIGHTS HERE AND THERE IN THE WINDOWS OF THE GREAT DARK HOUSE BUT THAT NO ONE HAD LEFT IT AND NONE HAD ENTERED + WE COULD BUT PRAY FOR PATIENCE AND WAIT FOR THE MORROW + SHERLOCK HOLMES WAS TOO IRRITABLE FOR CONVERSATION AND TOO RESTLESS FOR SLEEP + I LEFT HIM SMOKING HARD WITH HIS HEAVY DARK BROWS KNOTTED TOGETHER AND HIS LONG NERVOUS FINGERS TAPPING UPON THE ARMS OF HIS CHAIR AS HE TURNED OVER IN HIS MIND EVERY POSSIBLE SOLUTION OF THE MYSTERY + SEVERAL TIMES IN THE COURSE OF THE NIGHT I HEARD HIM PROWLING ABOUT THE HOUSE + FINALLY JUST AFTER I HAD BEEN CALLED IN THE MORNING HE RUSHED INTO MY ROOM + HE WAS IN HIS DRESSING GOWN BUT HIS PALE HOLLOW EYED FACE TOLD ME THAT HIS NIGHT HAD BEEN A SLEEPLESS ONE + WHAT TIME WAS THE FUNERAL + EIGHT WAS IT NOT HE ASKED EAGERLY + QUOTE WELL IT IS SEVEN TWENTY NOW + GOOD HEAVENS WATSON WHAT HAS BECOME OF ANY BRAINS THAT GOD HAS GIVEN ME + QUICK MAN QUICK + IT'S LIFE OR DEATH A HUNDRED CHANCES ON DEATH TO ONE ON LIFE + I'LL NEVER FORGIVE MYSELF NEVER IF WE ARE TOO LATE + FIVE MINUTES HAD NOT PASSED BEFORE WE WERE FLYING IN A HANSOM DOWN BAKER STREET + BUT EVEN SO IT WAS TWENTY FIVE TO EIGHT AS WE PASSED BIG BEN AND EIGHT STRUCK AS WE TORE DOWN THE BRIXTON ROAD + BUT OTHERS WERE LATE AS WELL AS WE + TEN MINUTES AFTER THE HOUR THE HEARSE WAS STILL STANDING AT THE DOOR OF THE HOUSE AND EVEN AS OUR FOAMING HORSE CAME TO A HALT THE COFFIN SUPPORTED BY THREE MEN APPEARED ON THE THRESHOLD + HOLMES DARTED FORWARD AND BARRED THEIR WAY + TAKE IT BACK HE CRIED LAYING HIS HAND ON THE BREAST OF THE FOREMOST + TAKE IT BACK THIS INSTANT + WHAT THE DEVIL DO YOU MEAN + ONCE AGAIN I ASK YOU WHERE IS YOUR WARRANT SHOUTED THE FURIOUS PETERS HIS BIG RED FACE GLARING OVER THE FARTHER ERID OF THE COFFIN + QUOTE THE WARRANT IS ON ITS WAY + THIS COFFIN SHALL REMAIN IN THE HOUSE UNTIL IT COMES + THE AUTHORITY IN HOLMES'S VOICE HAD ITS EFFECT UPON THE BEARERS + PETERS HAD SUDDENLY VANISHED INTO THE HOUSE AND THEY OBEYED THESE NEW ORDERS + QUICK WATSON QUICK + HERE IS A SCREW DRIVER HE SHOUTED AS THE COFFIN WAS REPLACED UPON THE TABLE + HERE'S ONE FOR YOU MY MAN + A SOVEREIGN IF THE LID COMES OFF IN A MINUTE + ASK NO QUESTIONS WORK AWAY + THAT'S GOOD + ANOTHER + AND ANOTHER + NOW PULL ALL TOGETHER + IT'S GIVING + IT'S GIVING + AH THAT DOES IT AT LAST + WITH A UNITED EFFORT WE TORE OFF THE COFFIN LID + AS WE DID SO THERE CAME FROM THE INSIDE A STUPEFYING AND OVERPOWERING SMELL OF CHLOROFORM + A BODY LAY WITHIN ITS HEAD ALL WREATHED IN COTTON WOOL WHICH HAD BEEN SOAKED IN THE NARCOTIC + HOLMES PLUCKED IT OFF AND DISCLOSED THE STATUESQUE FACE OF A HANDSOME AND SPIRITUAL WOMAN OF MIDDLE AGE + IN AN INSTANT HE HAD PASSED HIS ARM ROUND THE FIGURE AND RAISED HER TO A SITTING POSITION + QUOTE IS SHE GONE WATSON + IS THERE A SPARK LEFT + SURELY WE ARE NOT TOO LATE + FOR HALF AN HOUR IT SEEMED THAT WE WERE + WHAT WITH ACTUAL SUFFOCATION AND WHAT WITH THE POISONOUS FUMES OF THE CHLOROFORM THE LADY FRANCES SEEMED TO HAVE PASSED THE LAST POINT OF RECALL + AND THEN AT LAST WITH ARTIFICIAL RESPIRATION WITH INJECTED ETHER WITH EVERY DEVICE THAT SCIENCE COULD SUGGEST SOME FLUTTER OF LIFE SOME QUIVER OF THE EYELIDS SOME DIMMING OF A MIRROR SPOKE OF THE SLOWLY RETURNING LIFE + A CAB HAD DRIVEN UP AND HOLMES PARTING THE BLIND LOOKED OUT AT IT + HERE IS LESTRADE WITH HIS WARRANT SAID HE + HE WILL FIND THAT HIS BIRDS HAVE FLOWN + AND HERE HE ADDED AS A HEAVY STEP HURRIED ALONG THE PASSAGE IS SOMEONE WHO HAS A BETTER RIGHT TO NURSE THIS LADY THAN WE HAVE + GOOD MORNING MR. GREEN I THINK THAT THE SOONER WE CAN MOVE THE LADY FRANCES THE BETTER + MEANWHILE THE FUNERAL MAY PROCEED AND THE POOR OLD WOMAN WHO STILL LIES IN THAT COFFIN MAY GO TO HER LAST RESTING PLACE ALONE + QUOTE SHOULD YOU CARE TO ADD THE CASE TO YOUR ANNALS MY DEAR WATSON QUOTE SAID HOLMES THAT EVENING QUOTE IT CAN ONLY BE AS AN EXAMPLE OF THAT TEMPORARY ECLIPSE TO WHICH EVEN THE BEST BALANCED MIND MAY BE EXPOSED + SUCH SLIPS ARE COMMON TO ALL MORTALS AND THE GREATEST IS HE WHO CAN RECOGNIZE AND REPAIR THEM + TO THIS MODIFIED CREDIT I MAY PERHAPS MAKE SOME CLAIM + MY NIGHT WAS HAUNTED BY THE THOUGHT THAT SOMEWHERE A CLUE A STRANGE SENTENCE A CURIOUS OBSERVATION HAD COME UNDER MY NOTICE AND HAD BEEN TOO EASILY DISMISSED + THEN SUDDENLY IN THE GRAY OF THE MORNING THE WORDS CAME BACK TO ME + IT WAS THE REMARK OF THE UNDERTAKER'S WIFE AS REPORTED BY PHILIP GREEN + SHE HAD SAID IT SHOULD BE THERE BEFORE NOW + IT TOOK LONGER BEING OUT OF THE ORDINARY + IT WAS THE COFFIN OF WHICH SHE SPOKE + IT HAD BEEN OUT OF THE ORDINARY + THAT COULD ONLY MEAN THAT IT HAD BEEN MADE TO SOME SPECIAL MEASUREMENT + BUT WHY + WHY + THEN IN AN INSTANT I REMEMBERED THE DEEP SIDES AND THE LITTLE WASTED FIGURE AT THE BOTTOM + WHY SO LARGE A COFFIN FOR SO SMALL A BODY + TO LEAVE ROOM FOR ANOTHER BODY + BOTH WOULD BE BURIED UNDER THE ONE CERTIFICATE + IT HAD ALL BEEN SO CLEAR IF ONLY MY OWN SIGHT HAD NOT BEEN DIMMED + AT EIGHT THE LADY FRANCES WOULD BE BURIED + OUR ONE CHANCE WAS TO STOP THE COFFIN BEFORE IT LEFT THE HOUSE + IT WAS A DESPERATE CHANCE THAT WE MIGHT FIND HER ALIVE BUT IT WAS A CHANCE AS THE RESULT SHOWED + THESE PEOPLE HAD NEVER TO MY KNOWLEDGE DONE A MURDER + THEY MIGHT SHRINK FROM ACTUAL VIOLENCE AT THE LAST + THEY COULD BURY HER WITH NO SIGN OF HOW SHE MET HER END AND EVEN IF SHE WERE EXHUMED THERE WAS A CHANCE FOR THEM + I HOPED THAT SUCH CONSIDERATIONS MIGHT PREVAIL WITH THEM + YOU CAN RECONSTRUCT THE SCENE WELL ENOUGH + YOU SAW THE HORRIBLE DEN UPSTAIRS WHERE THE POOR LADY HAD BEEN KEPT SO LONG + THEY RUSHED IN AND OVERPOWERED HER WITH THEIR CHLOROFORM CARRIED HER DOWN POURED MORE INTO THE COFFIN TO INSURE AGAINST HER WAKING AND THEN SCREWED DOWN THE LID + A CLEVER DEVICE WATSON + IT IS NEW TO ME IN THE ANNALS OF CRIME + IF OUR EX MISSIONARY FRIENDS ESCAPE THE CLUTCHES OF LESTRADE I SHALL EXPECT TO HEAR OF SOME BRILLIANT INCIDENTS IN THEIR FUTURE CAREER diff --git a/samples/LMTutorial/train/man_with_twisted_lip.txt b/samples/LMTutorial/train/man_with_twisted_lip.txt new file mode 100755 index 0000000..cbb1722 --- /dev/null +++ b/samples/LMTutorial/train/man_with_twisted_lip.txt @@ -0,0 +1,571 @@ + ISA WHITNEY BROTHER OF THE LATE ELIAS WHITNEY D. D. PRINCIPAL OF THE THEOLOGICAL COLLEGE OF SAINT GEORGE'S WAS MUCH ADDICTED TO OPIUM + THE HABIT GREW UPON HIM AS I UNDERSTAND FROM SOME FOOLISH FREAK WHEN HE WAS AT COLLEGE FOR HAVING READ DE QUINCEY'S DESCRIPTION OF HIS DREAMS AND SENSATIONS HE HAD DRENCHED HIS TOBACCO WITH LAUDANUM IN AN ATTEMPT TO PRODUCE THE SAME EFFECTS + HE FOUND AS SO MANY MORE HAVE DONE THAT THE PRACTICE IS EASIER TO ATTAIN THAN TO GET RID OF AND FOR MANY YEARS HE CONTINUED TO BE A SLAVE TO THE DRUG AN OBJECT OF MINGLED HORROR AND PITY TO HIS FRIENDS AND RELATIVES + I CAN SEE HIM NOW WITH YELLOW PASTY FACE DROOPING LIDS AND PIN POINT PUPILS ALL HUDDLED IN A CHAIR THE WRECK AND RUIN OF A NOBLE MAN + ONE NIGHT IT WAS IN JUNE EIGHTY NINE THERE CAME A RING TO MY BELL ABOUT THE HOUR WHEN A MAN GIVES HIS FIRST YAWN AND GLANCES AT THE CLOCK + I SAT UP IN MY CHAIR AND MY WIFE LAID HER NEEDLE WORK DOWN IN HER LAP AND MADE A LITTLE FACE OF DISAPPOINTMENT + QUOTE A PATIENT QUOTE SAID SHE + YOU'LL HAVE TO GO OUT + I GROANED FOR I WAS NEWLY COME BACK FROM A WEARY DAY + WE HEARD THE DOOR OPEN A FEW HURRIED WORDS AND THEN QUICK STEPS UPON THE LINOLEUM + OUR OWN DOOR FLEW OPEN AND A LADY CLAD IN SOME DARK COLOURED STUFF WITH A BLACK VEIL ENTERED THE ROOM + YOU WILL EXCUSE MY CALLING SO LATE SHE BEGAN AND THEN SUDDENLY LOSING HER SELF CONTROL SHE RAN FORWARD THREW HER ARMS ABOUT MY WIFE'S NECK AND SOBBED UPON HER SHOULDER + OH I'M IN SUCH TROUBLE SHE CRIED I DO SO WANT A LITTLE HELP + WHY SAID MY WIFE PULLING UP HER VEIL IT IS KATE WHITNEY + HOW YOU STARTLED ME KATE + I HAD NOT AN IDEA WHO YOU WERE WHEN YOU CAME IN + QUOTE I DIDN'T KNOW WHAT TO DO SO L. CAME STRAIGHT TO YOU QUOTE + THAT WAS ALWAYS THE WAY + FOLK WHO WERE IN GRIEF CAME TO MY WIFE LIKE BIRDS TO A LIGHT HOUSE + IT WAS VERY SWEET OF YOU TO COME + NOW YOU MUST HAVE SOME WINE AND WATER AND SIT HERE COMFORTABLY AND TELL US ALL ABOUT IT + OR SHOULD YOU RATHER THAT I SENT JAMES OFF TO BED + OH NO NO + I WANT THE DOCTOR'S ADVICE AND HELP TOO + IT'S ABOUT ISA + HE HAS NOT BEEN HOME FOR TWO DAYS + I AM SO FRIGHTENED ABOUT HIM + IT WAS NOT THE FIRST TIME THAT SHE HAD SPOKEN TO US OF HER HUSBAND'S TROUBLE TO ME AS A DOCTOR TO MY WIFE AS AN OLD FRIEND AND SCHOOL COMPANION + WE SOOTHED AND COMFORTED HER BY SUCH WORDS AS WE COULD FIND + DID SHE KNOW WHERE HER HUSBAND WAS + WAS IT POSSIBLE THAT WE COULD BRING HIM BACK TO HER + IT SEEMS THAT IT WAS + SHE HAD THE SUREST INFORMATION THAT OF LATE HE HAD WHEN THE FIT WAS ON HIM MADE USE OF AN OPIUM DEN IN THE FARTHEST EAST OF THE CITY + HITHERTO HIS ORGIES HAD ALWAYS BEEN CONFINED TO ONE DAY AND HE HAD COME BACK TWITCHING AND SHATTERED IN THE EVENING + BUT NOW THE SPELL HAD BEEN UPON HIM EIGHT AND FORTY HOURS AND HE LAY THERE DOUBTLESS AMONG THE DREGS OF THE DOCKS BREATHING IN THE POISON OR SLEEPING OFF THE EFFECTS + THERE HE WAS TO BE FOUND SHE WAS SURE OF IT AT THE BAR OF GOLD IN UPPER SWANDAM LANE + BUT WHAT WAS SHE TO DO + HOW COULD SHE A YOUNG AND TIMID WOMAN MAKE HER WAY INTO SUCH A PLACE AND PLUCK HER HUSBAND OUT FROM AMONG THE RUFFIANS WHO SURROUNDED HIM + THERE WAS THE CASE AND OF COURSE THERE WAS BUT ONE WAY OUT OF IT + MIGHT I NOT ESCORT HER TO THIS PLACE + AND THEN AS A SECOND THOUGHT WHY SHOULD SHE COME AT ALL + I WAS ISA WHITNEY'S MEDICAL ADVISER AND AS SUCH I HAD INFLUENCE OVER HIM + I COULD MANAGE IT BETTER IF I WERE ALONE + I PROMISED HER ON MY WORD THAT I WOULD SEND HIM HOME IN A CAB WITHIN TWO HOURS IF HE WERE INDEED AT THE ADDRESS WHICH SHE HAD GIVEN ME + AND SO IN TEN MINUTES I HAD LEFT MY ARMCHAIR AND CHEERY SITTING ROOM BEHIND ME AND WAS SPEEDING EASTWARD IN A HANSOM ON A STRANGE ERRAND AS IT SEEMED TO ME AT THE TIME THOUGH THE FUTURE ONLY COULD SHOW HOW STRANGE IT WAS TO BE + BUT THERE WAS NO GREAT DIFFICULTY IN THE FIRST STAGE OF MY ADVENTURE + UPPER SWANDAM LANE IS A VILE ALLEY LURKING BEHIND THE HIGH WHARVES WHICH LINE THE NORTH SIDE OF THE RIVER TO THE EAST OF LONDON BRIDGE + BETWEEN A SLOP SHOP AND A GIN SHOP APPROACHED BY A STEEP FLIGHT OF STEPS LEADING DOWN TO A BLACK GAP LIKE THE MOUTH OF A CAVE I FOUND THE DEN OF WHICH I WAS IN SEARCH + ORDERING MY CAB TO WAIT I PASSED DOWN THE STEPS WORN HOLLOW IN THE CENTRE BY THE CEASELESS TREAD OF DRUNKEN FEET AND BY THE LIGHT OF A FLICKERING OIL LAMP ABOVE THE DOOR I FOUND THE LATCH AND MADE MY WAY INTO A LONG LOW ROOM THICK AND HEAVY WITH THE BROWN OPIUM SMOKE AND TERRACED WITH WOODEN BERTHS LIKE THE FORECASTLE OF AN EMIGRANT SHIP + THROUGH THE GLOOM ONE COULD DIMLY CATCH A GLIMPSE OF BODIES LYING IN STRANGE FANTASTIC POSES BOWED SHOULDERS BENT KNEES HEADS THROWN BACK AND CHINS POINTING UPWARD WITH HERE AND THERE A DARK LACK LUSTRE EYE TURNED UPON THE NEWCOMER + OUT OF THE BLACK SHADOWS THERE GLIMMERED LITTLE RED CIRCLES OF LIGHT NOW BRIGHT NOW FAINT AS THE BURNING POISON WAXED OR WANED IN THE BOWLS OF THE METAL PIPES + THE MOST LAY SILENT BUT SOME MUTTERED TO THEMSELVES AND OTHERS TALKED TOGETHER IN A STRANGE LOW MONOTONOUS VOICE THEIR CONVERSATION COMING IN GUSHES AND THEN SUDDENLY TAILING OFF INTO SILENCE EACH MUMBLING OUT HIS OWN THOUGHTS AND PAYING LITTLE HEED TO THE WORDS OF HIS NEIGHBOUR + AT THE FARTHER END WAS A SMALL BRAZIER OF BURNING CHARCOAL BESIDE WHICH ON A THREE LEGGED WOODEN STOOL THERE SAT A TALL THIN OLD MAN WITH HIS JAW RESTING UPON HIS TWO FISTS AND HIS ELBOWS UPON HIS KNEES STARING INTO THE FIRE + AS I ENTERED A SALLOW MALAY ATTENDANT HAD HURRIED UP WITH A PIPE FOR ME AND A SUPPLY OF THE DRUG BECKONING ME TO AN EMPTY BERTH + THANK YOU + I HAVE NOT COME TO STAY QUOTE SAID I. QUOTE THERE IS A FRIEND OF MINE HERE MR. ISA WHITNEY AND I WISH TO SPEAK WITH HIM QUOTE + THERE WAS A MOVEMENT AND AN EXCLAMATION FROM MY RIGHT AND PEERING THROUGH THE GLOOM I SAW WHITNEY PALE HAGGARD AND UNKEMPT STARING OUT AT ME + MY GOD + IT'S WATSON SAID HE + HE WAS IN A PITIABLE STATE OF REACTION WITH EVERY NERVE IN A TWITTER + I SAY WATSON WHAT O'CLOCK IS IT + NEARLY ELEVEN + OF WHAT DAY + QUOTE OF FRIDAY JUNE NINETEENTH QUOTE + GOOD HEAVENS + I THOUGHT IT WAS WEDNESDAY + IT IS WEDNESDAY + WHAT D'YOU WANT TO FRIGHTEN THE CHAP FOR + HE SANK HIS FACE ONTO HIS ARMS AND BEGAN TO SOB IN A HIGH TREBLE KEY + I TELL YOU THAT IT IS FRIDAY MAN + YOUR WIFE HAS BEEN WAITING THIS TWO DAYS FOR YOU + YOU SHOULD BE ASHAMED OF YOURSELF + SO I AM + BUT YOU'VE GOT MIXED WATSON FOR I HAVE ONLY BEEN HERE A FEW HOURS THREE PIPES FOUR PIPES I FORGET HOW MANY + BUT I'LL GO HOME WITH YOU + I WOULDN'T FRIGHTEN KATE POOR LITTLE KATE + GIVE ME YOUR HAND + HAVE YOU A CAB QUOTE + YES I HAVE ONE WAITING + THEN I SHALL GO IN IT + BUT I MUST OWE SOMETHING + FIND WHAT I OWE WATSON + I AM ALL OFF COLOUR + I CAN DO NOTHING FOR MYSELF + I WALKED DOWN THE NARROW PASSAGE BETWEEN THE DOUBLE ROW OF SLEEPERS HOLDING MY BREATH TO KEEP OUT THE VILE STUPEFYING FUMES OF THE DRUG AND LOOKING ABOUT FOR THE MANAGER + AS I PASSED THE TALL MAN WHO SAT BY THE BRAZIER I FELT A SUDDEN PLUCK AT MY SKIRT AND A LOW VOICE WHISPERED WALK PAST ME AND THEN LOOK BACK AT ME + THE WORDS FELL QUITE DISTINCTLY UPON MY EAR + I GLANCED DOWN + THEY COULD ONLY HAVE COME FROM THE OLD MAN AT MY SIDE AND YET HE SAT NOW AS ABSORBED AS EVER VERY THIN VERY WRINKLED BENT WITH AGE AN OPIUM PIPE DANGLING DOWN FROM BETWEEN HIS KNEES AS THOUGH IT HAD DROPPED IN SHEER LASSITUDE FROM HIS FINGERS + I TOOK TWO STEPS FORWARD AND LOOKED BACK + IT TOOK ALL MY SELF CONTROL TO PREVENT ME FROM BREAKING OUT INTO A CRY OF ASTONISHMENT + HE HAD TURNED HIS BACK SO THAT NONE COULD SEE HIM BUT I. HIS FORM HAD FILLED OUT HIS WRINKLES WERE GONE THE DULL EYES HAD REGAINED THEIR FIRE AND THERE SITTING BY THE FIRE AND GRINNING AT MY SURPRISE WAS NONE OTHER THAN SHERLOCK HOLMES + HE MADE A SLIGHT MOTION TO ME TO APPROACH HIM AND INSTANTLY AS HE TURNED HIS FACE HALF ROUND TO THE COMPANY ONCE MORE SUBSIDED INTO A DODDERING LOOSE LIPPED SENILITY + HOLMES + I WHISPERED QUOTE WHAT ON EARTH ARE YOU DOING IN THIS DEN QUOTE + AS LOW AS YOU CAN HE ANSWERED I HAVE EXCELLENT EARS + IF YOU WOULD HAVE THE GREAT KINDNESS TO GET RID OF THAT SOTTISH FRIEND OF YOURS I SHOULD BE EXCEEDINGLY GLAD TO HAVE A LITTLE TALK WITH YOU + I HAVE A CAB OUTSIDE + THEN PRAY SEND HIM HOME IN IT + YOU MAY SAFELY TRUST HIM FOR HE APPEARS TO BE TOO LIMP TO GET INTO ANY MISCHIEF + I SHOULD RECOMMEND YOU ALSO TO SEND A NOTE BY THE CABMAN TO YOUR WIFE TO SAY THAT YOU HAVE THROWN IN YOUR LOT WITH ME + IF YOU WILL WAIT OUTSIDE I SHALL BE WITH YOU IN FIVE MINUTES + IT WAS DIFFICULT TO REFUSE ANY OF SHERLOCK HOLMES'S REQUESTS FOR THEY WERE ALWAYS SO EXCEEDINGLY DEFINITE AND PUT FORWARD WITH SUCH A QUIET AIR OF MASTERY + I FELT HOWEVER THAT WHEN WHITNEY WAS ONCE CONFINED IN THE CAB MY MISSION WAS PRACTICALLY ACCOMPLISHED AND FOR THE REST I COULD NOT WISH ANYTHING BETTER THAN TO BE ASSOCIATED WITH MY FRIEND IN ONE OF THOSE SINGULAR ADVENTURES WHICH WERE THE NORMAL CONDITION OF HIS EXISTENCE + IN A FEW MINUTES I HAD WRITTEN MY NOTE PAID WHITNEY'S BILL LED HIM OUT TO THE CAB AND SEEN HIM DRIVEN THROUGH THE DARKNESS + IN A VERY SHORT TIME A DECREPIT FIGURE HAD EMERGED FROM THE OPIUM DEN AND I WAS WALKING DOWN THE STREET WITH SHERLOCK HOLMES + FOR TWO STREETS HE SHUFFLED ALONG WITH A BENT BACK AND AN UNCERTAIN FOOT + THEN GLANCING QUICKLY ROUND HE STRAIGHTENED HIMSELF OUT AND BURST INTO A HEARTY FIT OF LAUGHTER + I SUPPOSE WATSON SAID HE THAT YOU IMAGINE THAT I HAVE ADDED OPIUM SMOKING TO COCAINE INJECTIONS AND ALL THE OTHER LITTLE WEAKNESSES ON WHICH YOU HAVE FAVOURED ME WITH YOUR MEDICAL VIEWS + QUOTE I WAS CERTAINLY SURPRISED TO FIND YOU THERE QUOTE + BUT NOT MORE SO THAN I TO FIND YOU + I CAME TO FIND A FRIEND + AND I TO FIND AN ENEMY + AN ENEMY + YES ONE OF MY NATURAL ENEMIES OR SHALL I SAY MY NATURAL PREY + BRIEFLY WATSON I AM IN THE MIDST OF A VERY REMARKABLE INQUIRY AND I HAVE HOPED TO FIND A CLUE IN THE INCOHERENT RAMBLINGS OF THESE SOTS AS I HAVE DONE BEFORE NOW + HAD I BEEN RECOGNIZED IN THAT DEN MY LIFE WOULD NOT HAVE BEEN WORTH AN HOUR'S PURCHASE FOR I HAVE USED IT BEFORE NOW FOR MY OWN PURPOSES AND THE RASCALLY LASCAR WHO RUNS IT HAS SWORN TO HAVE VENGEANCE UPON ME + THERE IS A TRAP DOOR AT THE BACK OF THAT BUILDING NEAR THE CORNER OF PAUL'S WHARF WHICH COULD TELL SOME STRANGE TALES OF WHAT HAS PASSED THROUGH IT UPON THE MOONLESS NIGHTS QUOTE + WHAT + YOU DO NOT MEAN BODIES + AY BODIES WATSON + WE SHOULD BE RICH MEN IF WE HAD ONE THOUSAND POUNDS FOR EVERY POOR DEVIL WHO HAS BEEN DONE TO DEATH IN THAT DEN + IT IS THE VILEST MURDER TRAP ON THE WHOLE RIVERSIDE AND I FEAR THAT NEVILLE SAINT CLAIR HAS ENTERED IT NEVER TO LEAVE IT MORE + BUT OUR TRAP SHOULD BE HERE + HE PUT HIS TWO FOREFINGERS BETWEEN HIS TEETH AND WHISTLED SHRILLY A SIGNAL WHICH WAS ANSWERED BY A SIMILAR WHISTLE FROM THE DISTANCE FOLLOWED SHORTLY BY THE RATTLE OF WHEELS AND THE CLINK OF HORSES' HOOFS + NOW WATSON SAID HOLMES AS A TALL DOG CART DASHED UP THROUGH THE GLOOM THROWING OUT TWO GOLDEN TUNNELS OF YELLOW LIGHT FROM ITS SIDE LANTERNS + QUOTE YOU'LL COME WITH ME WON'T YOU + IF I CAN BE OF USE + OH A TRUSTY COMRADE IS ALWAYS OF USE AND A CHRONICLER STILL MORE SO + MY ROOM AT THE CEDARS IS A DOUBLE BEDDED ONE + THE CEDARS + YES THAT IS MR. SAINT CLAIR'S HOUSE + I AM STAYING THERE WHILE I CONDUCT THE INQUIRY QUOTE + WHERE IS IT THEN + NEAR LEE IN KENT + WE HAVE A SEVEN MILE DRIVE BEFORE US + BUT I AM ALL IN THE DARK + OF COURSE YOU ARE + YOU'LL KNOW ALL ABOUT IT PRESENTLY + JUMP UP HERE + ALL RIGHT JOHN WE SHALL NOT NEED YOU + HERE'S HALF A CROWN + LOOK OUT FOR ME TO MORROW ABOUT ELEVEN + GIVE HER HER HEAD + SO LONG THEN QUOTE + HE FLICKED THE HORSE WITH HIS WHIP AND WE DASHED AWAY THROUGH THE ENDLESS SUCCESSION OF SOMBRE AND DESERTED STREETS WHICH WIDENED GRADUALLY UNTIL WE WERE FLYING ACROSS A BROAD BALUSTRADED BRIDGE WITH THE MURKY RIVER FLOWING SLUGGISHLY BENEATH US + BEYOND LAY ANOTHER DULL WILDERNESS OF BRICKS AND MORTAR ITS SILENCE BROKEN ONLY BY THE HEAVY REGULAR FOOTFALL OF THE POLICEMAN OR THE SONGS AND SHOUTS OF SOME BELATED PARTY OF REVELLERS + A DULL WRACK WAS DRIFTING SLOWLY ACROSS THE SKY AND A STAR OR TWO TWINKLED DIMLY HERE AND THERE THROUGH THE RIFTS OF THE CLOUDS + HOLMES DROVE IN SILENCE WITH HIS HEAD SUNK UPON HIS BREAST AND THE AIR OF A MAN WHO IS LOST IN THOUGHT WHILE I SAT BESIDE HIM CURIOUS TO LEARN WHAT THIS NEW QUEST MIGHT BE WHICH SEEMED TO TAX HIS POWERS SO SORELY AND YET AFRAID TO BREAK IN UPON THE CURRENT OF HIS THOUGHTS + WE HAD DRIVEN SEVERAL MILES AND WERE BEGINNING TO GET TO THE FRINGE OF THE BELT OF SUBURBAN VILLAS WHEN HE SHOOK HIMSELF SHRUGGED HIS SHOULDERS AND LIT UP HIS PIPE WITH THE AIR OF A MAN WHO HAS SATISFIED HIMSELF THAT HE IS ACTING FOR THE BEST + YOU HAVE A GRAND GIFT OF SILENCE WATSON SAID HE + IT MAKES YOU QUITE INVALUABLE AS A COMPANION + PON MY WORD IT IS A GREAT THING FOR ME TO HAVE SOMEONE TO TALK TO FOR MY OWN THOUGHTS ARE NOT OVER PLEASANT + I WAS WONDERING WHAT I SHOULD SAY TO THIS DEAR LITTLE WOMAN TO NIGHT WHEN SHE MEETS ME AT THE DOOR + YOU FORGET THAT I KNOW NOTHING ABOUT IT + I SHALL JUST HAVE TIME TO TELL YOU THE FACTS OF THE CASE BEFORE WE GET TO LEE + IT SEEMS ABSURDLY SIMPLE AND YET SOMEHOW I CAN GET NOTHING TO GO UPON + THERE'S PLENTY OF THREAD NO DOUBT BUT I CAN'T GET THE END OF IT INTO MY HAND + NOW I'LL STATE THE CASE CLEARLY AND CONCISELY TO YOU WATSON AND MAYBE YOU CAN SEE A SPARK WHERE ALL IS DARK TO ME QUOTE + PROCEED THEN + SOME YEARS AGO TO BE DEFINITE IN MAY ONE THOUSAND EIGHT HUNDRED EIGHTY FOUR THERE CAME TO LEE A GENTLEMAN NEVILLE SAINT CLAIR BY NAME WHO APPEARED TO HAVE PLENTY OF MONEY + HE TOOK A LARGE VILLA LAID OUT THE GROUNDS VERY NICELY AND LIVED GENERALLY IN GOOD STYLE + BY DEGREES HE MADE FRIENDS IN THE NEIGHBOURHOOD AND IN ONE THOUSAND EIGHT HUNDRED EIGHTY SEVEN HE MARRIED THE DAUGHTER OF A LOCAL BREWER BY WHOM HE NOW HAS TWO CHILDREN + HE HAD NO OCCUPATION BUT WAS INTERESTED IN SEVERAL COMPANIES AND WENT INTO TOWN AS A RULE IN THE MORNING RETURNING BY THE FIVE FOURTEEN FROM CANNON STREET EVERY NIGHT + MR. SAINT CLAIR IS NOW THIRTY SEVEN YEARS OF AGE IS A MAN OF TEMPERATE HABITS A GOOD HUSBAND A VERY AFFECTIONATE FATHER AND A MAN WHO IS POPULAR WITH ALL WHO KNOW HIM + I MAY ADD THAT HIS WHOLE DEBTS AT THE PRESENT MOMENT AS FAR AS WE HAVE BEEN ABLE TO ASCERTAIN AMOUNT TO EIGHTY EIGHT POUNDS LOS. WHILE HE HAS TWO HUNDRED TWENTY POUNDS STANDING TO HIS CREDIT IN THE CAPITAL AND COUNTIES BANK + THERE IS NO REASON THEREFORE TO THINK THAT MONEY TROUBLES HAVE BEEN WEIGHING UPON HIS MIND + LAST MONDAY MR. NEVILLE SAINT CLAIR WENT INTO TOWN RATHER EARLIER THAN USUAL REMARKING BEFORE HE STARTED THAT HE HAD TWO IMPORTANT COMMISSIONS TO PERFORM AND THAT HE WOULD BRING HIS LITTLE BOY HOME A BOX OF BRICKS + NOW BY THE MEREST CHANCE HIS WIFE RECEIVED A TELEGRAM UPON THIS SAME MONDAY VERY SHORTLY AFTER HIS DEPARTURE TO THE EFFECT THAT A SMALL PARCEL OF CONSIDERABLE VALUE WHICH SHE HAD BEEN EXPECTING WAS WAITING FOR HER AT THE OFFICES OF THE ABERDEEN SHIPPING COMPANY + NOW IF YOU ARE WELL UP IN YOUR LONDON YOU WILL KNOW THAT THE OFFICE OF THE COMPANY IS IN FRESNO STREET WHICH BRANCHES OUT OF UPPER SWANDAM LANE WHERE YOU FOUND ME TO NIGHT + MRS. SAINT CLAIR HAD HER LUNCH STARTED FOR THE CITY DID SOME SHOPPING PROCEEDED TO THE COMPANY'S OFFICE GOT HER PACKET AND FOUND HERSELF AT EXACTLY FOUR THIRTY FIVE WALKING THROUGH SWANDAM LANE ON HER WAY BACK TO THE STATION + HAVE YOU FOLLOWED ME SO FAR + IT IS VERY CLEAR + QUOTE LF YOU REMEMBER MONDAY WAS AN EXCEEDINGLY HOT DAY AND MRS. SAINT CLAIR WALKED SLOWLY GLANCING ABOUT IN THE HOPE OF SEEING A CAB AS SHE DID NOT LIKE THE NEIGHBOURHOOD IN WHICH SHE FOUND HERSELF + WHILE SHE WAS WALKING IN THIS WAY DOWN SWANDAM LANE SHE SUDDENLY HEARD AN EJACULATION OR CRY AND WAS STRUCK COLD TO SEE HER HUSBAND LOOKING DOWN AT HER AND AS IT SEEMED TO HER BECKONING TO HER FROM A SECOND FLOOR WINDOW + THE WINDOW WAS OPEN AND SHE DISTINCTLY SAW HIS FACE WHICH SHE DESCRIBES AS BEING TERRIBLY AGITATED + HE WAVED HIS HANDS FRANTICALLY TO HER AND THEN VANISHED FROM THE WINDOW SO SUDDENLY THAT IT SEEMED TO HER THAT HE HAD BEEN PLUCKED BACK BY SOME IRRESISTIBLE FORCE FROM BEHIND + ONE SINGULAR POINT WHICH STRUCK HER QUICK FEMININE EYE WAS THAT ALTHOUGH HE WORE SOME DARK COAT SUCH AS HE HAD STARTED TO TOWN IN HE HAD ON NEITHER COLLAR NOR NECKTIE + CONVINCED THAT SOMETHING WAS AMISS WITH HIM SHE RUSHED DOWN THE STEPS FOR THE HOUSE WAS NONE OTHER THAN THE OPIUM DEN IN WHICH YOU FOUND ME TO NIGHT AND RUNNING THROUGH THE FRONT ROOM SHE ATTEMPTED TO ASCEND THE STAIRS WHICH LED TO THE FIRST FLOOR + AT THE FOOT OF THE STAIRS HOWEVER SHE MET THIS LASCAR SCOUNDREL OF WHOM I HAVE SPOKEN WHO THRUST HER BACK AND AIDED BY A DANE WHO ACTS AS ASSISTANT THERE PUSHED HER OUT INTO THE STREET + FILLED WITH THE MOST MADDENING DOUBTS AND FEARS SHE RUSHED DOWN THE LANE AND BY RARE GOOD FORTUNE MET IN FRESNO STREET A NUMBER OF CONSTABLES WITH AN INSPECTOR ALL ON THEIR WAY TO THEIR BEAT + THE INSPECTOR AND TWO MEN ACCOMPANIED HER BACK AND IN SPITE OF THE CONTINUED RESISTANCE OF THE PROPRIETOR THEY MADE THEIR WAY TO THE ROOM IN WHICH MR. SAINT CLAIR HAD LAST BEEN SEEN + THERE WAS NO SIGN OF HIM THERE + IN FACT IN THE WHOLE OF THAT FLOOR THERE WAS NO ONE TO BE FOUND SAVE A CRIPPLED WRETCH OF HIDEOUS ASPECT WHO IT SEEMS MADE HIS HOME THERE + BOTH HE AND THE LASCAR STOUTLY SWORE THAT NO ONE ELSE HAD BEEN IN THE FRONT ROOM DURING THE AFTERNOON + SO DETERMINED WAS THEIR DENIAL THAT THE INSPECTOR WAS STAGGERED AND HAD ALMOST COME TO BELIEVE THAT MRS. SAINT CLAIR HAD BEEN DELUDED WHEN WITH A CRY SHE SPRANG AT A SMALL DEAL BOX WHICH LAY UPON THE TABLE AND TORE THE LID FROM IT + OUT THERE FELL A CASCADE OF CHILDREN'S BRICKS + IT WAS THE TOY WHICH HE HAD PROMISED TO BRING HOME + THIS DISCOVERY AND THE EVIDENT CONFUSION WHICH THE CRIPPLE SHOWED MADE THE INSPECTOR REALIZE THAT THE MATTER WAS SERIOUS + THE ROOMS WERE CAREFULLY EXAMINED AND RESULTS ALL POINTED TO AN ABOMINABLE CRIME + THE FRONT ROOM WAS PLAINLY FURNISHED AS A SITTING ROOM AND LED INTO A SMALL BEDROOM WHICH LOOKED OUT UPON THE BACK OF ONE OF THE WHARVES + BETWEEN THE WHARF AND THE BEDROOM WINDOW IS A NARROW STRIP WHICH IS DRY AT LOW TIDE BUT IS COVERED AT HIGH TIDE WITH AT LEAST FOUR AND A HALF FEET OF WATER + THE BEDROOM WINDOW WAS A BROAD ONE AND OPENED FROM BELOW + ON EXAMINATION TRACES OF BLOOD WERE TO BE SEEN UPON THE WINDOWSILL AND SEVERAL SCATTERED DROPS WERE VISIBLE UPON THE WOODEN FLOOR OF THE BEDROOM + THRUST AWAY BEHIND A CURTAIN IN THE FRONT ROOM WERE ALL THE CLOTHES OF MR. NEVILLE SAINT CLAIR WITH THE EXCEPTION OF HIS COAT + HIS BOOTS HIS SOCKS HIS HAT AND HIS WATCH ALL WERE THERE + THERE WERE NO SIGNS OF VIOLENCE UPON ANY OF THESE GARMENTS AND THERE WERE NO OTHER TRACES OF MR. NEVILLE SAINT CLAIR + OUT OF THE WINDOW HE MUST APPARENTLY HAVE GONE FOR NO OTHER EXIT COULD BE DISCOVERED AND THE OMINOUS BLOODSTAINS UPON THE SILL GAVE LITTLE PROMISE THAT HE COULD SAVE HIMSELF BY SWIMMING FOR THE TIDE WAS AT ITS VERY HIGHEST AT THE MOMENT OF THE TRAGEDY + AND NOW AS TO THE VILLAINS WHO SEEMED TO BE IMMEDLATELY IMPLICATED IN THE MATTER + THE LASCAR WAS KNOWN TO BE A MAN OF THE VILEST ANTECEDENTS BUT AS BY MRS. SAINT CLAIR'S STORY HE WAS KNOWN TO HAVE BEEN AT THE FOOT OF THE STAIR WITHIN A VERY FEW SECONDS OF HER HUSBAND'S APPEARANCE AT THE WINDOW HE COULD HARDLY HAVE BEEN MORE THAN AN ACCESSORY TO THE CRIME + HIS DEFENSE WAS ONE OF ABSOLUTE IGNORANCE AND HE PROTESTED THAT HE HAD NO KNOWLEDGE AS TO THE DOINGS OF HUGH BOONE HIS LODGER AND THAT HE COULD NOT ACCOUNT IN ANY WAY FOR THE PRESENCE OF THE MISSING GENTLEMAN'S CLOTHES + SO MUCH FOR THE LASCAR MANAGER + NOW FOR THE SINISTER CRIPPLE WHO LIVES UPON THE SECOND FLOOR OF THE OPIUM DEN AND WHO WAS CERTAINLY THE LAST HUMAN BEING WHOSE EYES RESTED UPON NEVILLE SAINT CLAIR + HIS NAME IS HUGH BOONE AND HIS HIDEOUS FACE IS ONE WHICH IS FAMILIAR TO EVERY MAN WHO GOES MUCH TO THE CITY + HE IS A PROFESSIONAL BEGGAR THOUGH IN ORDER TO AVOID THE POLICE REGULATIONS HE PRETENDS TO A SMALL TRADE IN WAX VESTAS + SOME LITTLE DISTANCE DOWN THREADNEEDLE STREET UPON THE LEFT HAND SIDE THERE IS AS YOU MAY HAVE REMARKED A SMALL ANGLE IN THE WALL + HERE IT IS THAT THIS CREATURE TAKES HIS DAILY SEAT CROSS LEGGED WITH HIS TINY STOCK OF MATCHES ON HIS LAP AND AS HE IS A PITEOUS SPECTACLE A SMALL RAIN OF CHARITY DESCENDS INTO THE GREASY LEATHER CAP WHICH LIES UPON THE PAVEMENT BESIDE HIM + I HAVE WATCHED THE FELLOW MORE THAN ONCE BEFORE EVER I THOUGHT OF MAKING HIS PROFESSIONAL ACQUAINTANCE AND I HAVE BEEN SURPRISED AT THE HARVEST WHICH HE HAS REAPED IN A SHORT TIME + HIS APPEARANCE YOU SEE IS SO REMARKABLE THAT NO ONE CAN PASS HIM WITHOUT OBSERVING HIM + A SHOCK OF ORANGE HAIR A PALE FACE DISFIGURED BY A HORRIBLE SCAR WHICH BY ITS CONTRACTION HAS TURNED UP THE OUTER EDGE OF HIS UPPER LIP A BULLDOG CHIN AND A PAIR OF VERY PENETRATING DARK EYES WHICH PRESENT A SINGULAR CONTRAST TO THE COLOUR OF HIS HAIR ALL MARK HIM OUT FROM AMID THE COMMON CROWD OF MENDICANTS AND SO TOO DOES HIS WIT FOR HE IS EVER READY WITH A REPLY TO ANY PIECE OF CHAFF WHICH MAY BE THROWN AT HIM BY THE PASSERS BY + THIS IS THE MAN WHOM WE NOW LEARN TO HAVE BEEN THE LODGER AT THE OPIUM DEN AND TO HAVE BEEN THE LAST MAN TO SEE THE GENTLEMAN OF WHOM WE ARE IN QUEST + QUOTE BUT A CRIPPLE QUOTE SAID I. QUOTE WHAT COULD HE HAVE DONE SINGLEHANDED AGAINST A MAN IN THE PRIME OF LIFE QUOTE + HE IS A CRIPPLE IN THE SENSE THAT HE WALKS WITH A LIMP BUT IN OTHER RESPECTS HE APPEARS TO BE A POWERFUL AND WELL NURTURED MAN + SURELY YOUR MEDICAL EXPERIENCE WOULD TELL YOU WATSON THAT WEAKNESS IN ONE LIMB IS OFTEN COMPENSATED FOR BY EXCEPTIONAL STRENGTH IN THE OTHERS + PRAY CONTINUE YOUR NARRATIVE + MRS. SAINT CLAIR HAD FAINTED AT THE SIGHT OF THE BLOOD UPON THE WINDOW AND SHE WAS ESCORTED HOME IN A CAB BY THE POLICE AS HER PRESENCE COULD BE OF NO HELP TO THEM IN THEIR INVESTIGATIONS + INSPECTOR BARTON WHO HAD CHARGE OF THE CASE MADE A VERY CAREFUL EXAMINATION OF THE PREMISES BUT WITHOUT FINDING ANYTHING WHICH THREW ANY LIGHT UPON THE MATTER + ONE MISTAKE HAD BEEN MADE IN NOT ARRESTING BOONE INSTANTLY AS HE WAS ALLOWED SOME FEW MINUTES DURING WHICH HE MIGHT HAVE COMMUNICATED WITH HIS FRIEND THE LASCAR BUT THIS FAULT WAS SOON REMEDIED AND HE WAS SEIZED AND SEARCHED WITHOUT ANYTHING BEING FOUND WHICH COULD INCRIMINATE HIM + THERE WERE IT IS TRUE SOME BLOOD STAINS UPON HIS RIGHT SHIRT SLEEVE BUT HE POINTED TO HIS RING FINGER WHICH HAD BEEN CUT NEAR THE NAIL AND EXPLAINED THAT THE BLEEDING CAME FROM THERE ADDING THAT HE HAD BEEN TO THE WINDOW NOT LONG BEFORE AND THAT THE STAINS WHICH HAD BEEN OBSERVED THERE CAME DOUBTLESS FROM THE SAME SOURCE + HE DENIED STRENUOUSLY HAVING EVER SEEN MR. NEVILLE SAINT CLAIR AND SWORE THAT THE PRESENCE OF THE CLOTHES IN HIS ROOM WAS AS MUCH A MYSTERY TO HIM AS TO THE POLICE + AS TO MRS. SAINT CLAIR'S ASSERTION THAT SHE HAD ACTUALLY SEEN HER HUSBAND AT THE WINDOW HE DECLARED THAT SHE MUST HAVE BEEN EITHER MAD OR DREAMING + HE WAS REMOVED LOUDLY PROTESTING TO THE POLICE STATION WHILE THE INSPECTOR REMAINED UPON THE PREMISES IN THE HOPE THAT THE EBBING TIDE MIGHT AFFORD SOME FRESH CLUE + AND IT DID THOUGH THEY HARDLY FOUND UPON THE MUD BANK WHAT THEY HAD FEARED TO FIND + IT WAS NEVILLE SAINT CLAIR'S COAT AND NOT NEVILLE SAINT CLAIR WHICH LAY UNCOVERED AS THE TIDE RECEDED + AND WHAT DO YOU THINK THEY FOUND IN THE POCKETS QUOTE + I CANNOT IMAGINE + NO I DON'T THINK YOU WOULD GUESS + EVERY POCKET STUFFED WITH PENNIES AND HALF PENNIES FOUR HUNDRED TWENTY ONE PENNIES AND TWO HUNDRED SEVENTY HALF PENNIES + IT WAS NO WONDER THAT IT HAD NOT BEEN SWEPT AWAY BY THE TIDE + BUT A HUMAN BODY IS A DIFFERENT MATTER + THERE IS A FIERCE EDDY BETWEEN THE WHARF AND THE HOUSE + IT SEEMED LIKELY ENOUGH THAT THE WEIGHTED COAT HAD REMAINED WHEN THE STRIPPED BODY HAD BEEN SUCKED AWAY INTO THE RIVER + BUT I UNDERSTAND THAT ALL THE OTHER CLOTHES WERE FOUND IN THE ROOM + WOULD THE BODY BE DRESSED IN A COAT ALONE + QUOTE NO SIR BUT THE FACTS MIGHT BE MET SPECIOUSLY ENOUGH + SUPPOSE THAT THIS MAN BOONE HAD THRUST NEVILLE SAINT CLAIR THROUGH THE WINDOW THERE IS NO HUMAN EYE WHICH COULD HAVE SEEN THE DEED + WHAT WOULD HE DO THEN + IT WOULD OF COURSE INSTANTLY STRIKE HIM THAT HE MUST GET RID OF THE TELL TALE GARMENTS + HE WOULD SEIZE THE COAT THEN AND BE IN THE ACT OF THROWING IT OUT WHEN IT WOULD OCCUR TO HIM THAT IT WOULD SWIM AND NOT SINK + HE HAS LITTLE TIME FOR HE HAS HEARD THE SCUFFLE DOWNSTAIRS WHEN THE WIFE TRIED TO FORCE HER WAY UP AND PERHAPS HE HAS ALREADY HEARD FROM HIS LASCAR CONFEDERATE THAT THE POLICE ARE HURRYING UP THE STREET + THERE IS NOT AN INSTANT TO BE LOST + HE RUSHES TO SOME SECRET HOARD WHERE HE HAS ACCUMULATED THE FRUITS OF HIS BEGGARY AND HE STUFFS ALL THE COINS UPON WHICH HE CAN LAY HIS HANDS INTO THE POCKETS TO MAKE SURE OF THE COAT'S SINKING + HE THROWS IT OUT AND WOULD HAVE DONE THE SAME WITH THE OTHER GARMENTS HAD NOT HE HEARD THE RUSH OF STEPS BELOW AND ONLY JUST HAD TIME TO CLOSE THE WINDOW WHEN THE POLICE APPEARED + IT CERTAINLY SOUNDS FEASIBLE + WELL WE WILL TAKE IT AS A WORKING HYPOTHESIS FOR WANT OF A BETTER + BOONE AS I HAVE TOLD YOU WAS ARRESTED AND TAKEN TO THE STATION BUT IT COULD NOT BE SHOWN THAT THERE HAD EVER BEFORE BEEN ANYTHING AGAINST HIM + HE HAD FOR YEARS BEEN KNOWN AS A PROFESSIONAL BEGGAR BUT HIS LIFE APPEARED TO HAVE BEEN A VERY QUIET AND INNOCENT ONE + THERE THE MATTER STANDS AT PRESENT AND THE QUESTIONS WHICH HAVE TO BE SOLVED WHAT NEVILLE SAINT CLAIR WAS DOING IN THE OPIUM DEN WHAT HAPPENED TO HIM WHEN THERE WHERE IS HE NOW AND WHAT HUGH BOONE HAD TO DO WITH HIS DISAPPEARANCE ARE ALL AS FAR FROM A SOLUTION AS EVER + I CONFESS THAT I CANNOT RECALL ANY CASE WITHIN MY EXPERIENCE WHICH LOOKED AT THE FIRST GLANCE SO SIMPLE AND YET WHICH PRESENTED SUCH DIFFICULTIES + WHILE SHERLOCK HOLMES HAD BEEN DETAILING THIS SINGULAR SERIES OF EVENTS WE HAD BEEN WHIRLING THROUGH THE OUTSKIRTS OF THE GREAT TOWN UNTIL THE LAST STRAGGLING HOUSES HAD BEEN LEFT BEHIND AND WE RATTLED ALONG WITH A COUNTRY HEDGE UPON EITHER SIDE OF US + JUST AS HE FINISHED HOWEVER WE DROVE THROUGH TWO SCATTERED VILLAGES WHERE A FEW LIGHTS STILL GLIMMERED IN THE WINDOWS + WE ARE ON THE OUTSKIRTS OF LEE SAID MY COMPANION + QUOTE WE HAVE TOUCHED ON THREE ENGLISH COUNTIES IN OUR SHORT DRIVE STARTING IN MIDDLESEX PASSING OVER AN ANGLE OF SURREY AND ENDING IN KENT + SEE THAT LIGHT AMONG THE TREES + THAT IS THE CEDARS AND BESIDE THAT LAMP SITS A WOMAN WHOSE ANXIOUS EARS HAVE ALREADY I HAVE LITTLE DOUBT CAUGHT THE CLINK OF OUR HORSE'S FEET + BUT WHY ARE YOU NOT CONDUCTING THE CASE FROM BAKER STREET + I ASKED + BECAUSE THERE ARE MANY INQUIRIES WHICH MUST BE MADE OUT HERE + MRS. SAINT CLAIR HAS MOST KINDLY PUT TWO ROOMS AT MY DISPOSAL AND YOU MAY REST ASSURED THAT SHE WILL HAVE NOTHING BUT A WELCOME FOR MY FRIEND AND COLLEAGUE + I HATE TO MEET HER WATSON WHEN I HAVE NO NEWS OF HER HUSBAND + HERE WE ARE + WHOA THERE WHOA + WE HAD PULLED UP IN FRONT OF A LARGE VILLA WHICH STOOD WITHIN ITS OWN GROUNDS + A STABLE BOY HAD RUN OUT TO THE HORSE'S HEAD AND SPRINGING DOWN I FOLLOWED HOLMES UP THE SMALL WINDING GRAVEL DRIVE WHICH LED TO THE HOUSE + AS WE APPROACHED THE DOOR FLEW OPEN AND A LITTLE BLONDE WOMAN STOOD IN THE OPENING CLAD IN SOME SORT OF LIGHT MOUSSELINE DE SOIE WITH A TOUCH OF FLUFFY PINK CHIFFON AT HER NECK AND WRISTS + SHE STOOD WITH HER FIGURE OUTLINED AGAINST THE FLOOD OF LIGHT ONE HAND UPON THE DOOR ONE HALF RAISED IN HER EAGERNESS HER BODY SLIGHTLY BENT HER HEAD AND FACE PROTRUDED WITH EAGER EYES AND PARTED LIPS A STANDING QUESTION + WELL SHE CRIED WELL + AND THEN SEEING THAT THERE WERE TWO OF US SHE GAVE A CRY OF HOPE WHICH SANK INTO A GROAN AS SHE SAW THAT MY COMPANION SHOOK HIS HEAD AND SHRUGGED HIS SHOULDERS + QUOTE NO GOOD NEWS QUOTE + NONE + NO BAD + NUMBER + THANK GOD FOR THAT + BUT COME IN + YOU MUST BE WEARY FOR YOU HAVE HAD A LONG DAY + QUOTE THIS IS MY FRIEND DOCTOR WATSON + HE HAS BEEN OF MOST VITAL USE TO ME IN SEVERAL OF MY CASES AND A LUCKY CHANCE HAS MADE IT POSSIBLE FOR ME TO BRING HIM OUT AND ASSOCIATE HIM WITH THIS INVESTIGATION + I AM DELIGHTED TO SEE YOU SAID SHE PRESSING MY HAND WARMLY + YOU WILL I AM SURE FORGIVE ANYTHING THAT MAY BE WANTING IN OUR ARRANGEMENTS WHEN YOU CONSIDER THE BLOW WHICH HAS COME SO SUDDENLY UPON US + MY DEAR MADAM SAID I I AM AN OLD CAMPAIGNER AND IF I WERE NOT I CAN VERY WELL SEE THAT NO APOLOGY IS NEEDED + IF I CAN BE OF ANY ASSISTANCE EITHER TO YOU OR TO MY FRIEND HERE I SHALL BE INDEED HAPPY + QUOTE NOW MR. SHERLOCK HOLMES QUOTE SAID THE LADY AS WE ENTERED A WELL LIT DINING ROOM UPON THE TABLE OF WHICH A COLD SUPPER HAD BEEN LAID OUT QUOTE I SHOULD VERY MUCH LIKE TO ASK YOU ONE OR TWO PLAIN QUESTIONS TO WHICH I BEG THAT YOU WILL GIVE A PLAIN ANSWER QUOTE + CERTAINLY MADAM + DO NOT TROUBLE ABOUT MY FEELINGS + I AM NOT HYSTERICAL NOR GIVEN TO FAINTING + I SIMPLY WISH TO HEAR YOUR REAL REAL OPINION + UPON WHAT POINT + IN YOUR HEART OF HEARTS DO YOU THINK THAT NEVILLE IS ALIVE + SHERLOCK HOLMES SEEMED TO BE EMBARRASSED BY THE QUESTION + QUOTE FRANKLY NOW QUOTE SHE REPEATED STANDING UPON THE RUG AND LOOKING KEENLY DOWN AT HIM AS HE LEANED BACK IN A BASKET CHAIR + FRANKLY THEN MADAM I DO NOT + YOU THINK THAT HE IS DEAD + I DO + MURDERED + I DON'T SAY THAT + PERHAPS QUOTE + AND ON WHAT DAY DID HE MEET HIS DEATH + ON MONDAY + THEN PERHAPS MR. HOLMES YOU WILL BE GOOD ENOUGH TO EXPLAIN HOW IT IS THAT I HAVE RECEIVED A LETTER FROM HIM TO DAY + SHERLOCK HOLMES SPRANG OUT OF HIS CHAIR AS IF HE HAD BEEN GALVANIZED + WHAT HE ROARED + YES TO DAY + SHE STOOD SMILING HOLDING UP A LITTLE SLIP OF PAPER IN THE AIR + QUOTE MAY I SEE IT QUOTE + CERTAINLY + HE SNATCHED IT FROM HER IN HIS EAGERNESS AND SMOOTHING IT OUT UPON THE TABLE HE DREW OVER THE LAMP AND EXAMINED IT INTENTLY + I HAD LEFT MY CHAIR AND WAS GAZING AT IT OVER HIS SHOULDER + THE ENVELOPE WAS A VERY COARSE ONE AND WAS STAMPED WITH THE GRAVESEND POSTMARK AND WITH THE DATE OF THAT VERY DAY OR RATHER OF THE DAY BEFORE FOR IT WAS CONSIDERABLY AFTER MIDNIGHT + COARSE WRITING MURMURED HOLMES + SURELY THIS IS NOT YOUR HUSBAND'S WRITING MADAM + NO BUT THE ENCLOSURE IS + I PERCEIVE ALSO THAT WHOEVER ADDRESSED THE ENVELOPE HAD TO GO AND INQUIRE AS TO THE ADDRESS + QUOTE HOW CAN YOU TELL THAT QUOTE + THE NAME YOU SEE IS IN PERFECTLY BLACK INK WHICH HAS DRIED ITSELF + THE REST IS OF THE GRAYISH COLOUR WHICH SHOWS THAT BLOTTINGPAPER HAS BEEN USED + IF IT HAD BEEN WRITTEN STRAIGHT OFF AND THEN BLOTTED NONE WOULD BE OF A DEEP BLACK SHADE + THIS MAN HAS WRITTEN THE NAME AND THERE HAS THEN BEEN A PAUSE BEFORE HE WROTE THE ADDRESS WHICH CAN ONLY MEAN THAT HE WAS NOT FAMILIAR WITH IT + IT IS OF COURSE A TRIFLE BUT THERE IS NOTHING SO IMPORTANT AS TRIFLES + LET US NOW SEE THE LETTER + HA THERE HAS BEEN AN ENCLOSURE HERE + YES THERE WAS A RING + HIS SIGNET RING + AND YOU ARE SURE THAT THIS IS YOUR HUSBAND'S HAND + QUOTE ONE OF HIS HANDS QUOTE + ONE + HIS HAND WHEN HE WROTE HURRIEDLY + IT IS VERY UNLIKE HIS USUAL WRITING AND YET I KNOW IT WELL + DEAREST DO NOT BE FRIGHTENED + ALL WILL COME WELL + THERE IS A HUGE ERROR WHICH IT MAY TAKE SOME LITTLE TIME TO RECTIFY + WAIT IN PATIENCE + NEVILLE + WRITTEN IN PENCIL UPON THE FLY LEAF OF A BOOK OCTAVO SIZE NO WATER MARK + HUM + POSTED TO DAY IN GRAVESEND BY A MAN WITH A DIRTY THUMB + HA + AND THE FLAP HAS BEEN GUMMED IF I AM NOT VERY MUCH IN ERROR BY A PERSON WHO HAD BEEN CHEWING TOBACCO + AND YOU HAVE NO DOUBT THAT IT IS YOUR HUSBAND'S HAND MADAM QUOTE + NONE + NEVILLE WROTE THOSE WORDS + AND THEY WERE POSTED TO DAY AT GRAVESEND + WELL MRS. SAINT CLAIR THE CLOUDS LIGHTEN THOUGH I SHOULD NOT VENTURE TO SAY THAT THE DANGER IS OVER + BUT HE MUST BE ALIVE MR. HOLMES + QUOTE UNLESS THIS IS A CLEVER FORGERY TO PUT US ON THE WRONG SCENT + THE RING AFTER ALL PROVES NOTHING + IT MAY HAVE BEEN TAKEN FROM HIM + NO NO IT IS IT IS HIS VERY OWN WRITING + VERY WELL + IT MAY HOWEVER HAVE BEEN WRITTEN ON MONDAY AND ONLY POSTED TO DAY + THAT IS POSSIBLE + IF SO MUCH MAY HAVE HAPPENED BETWEEN + QUOTE OH YOU MUST NOT DISCOURAGE ME MR. HOLMES + I KNOW THAT ALL IS WELL WITH HIM + THERE IS SO KEEN A SYMPATHY BETWEEN US THAT I SHOULD KNOW IF EVIL CAME UPON HIM + ON THE VERY DAY THAT I SAW HIM LAST HE CUT HIMSELF IN THE BEDROOM AND YET I IN THE DININGROOM RUSHED UPSTAIRS INSTANTLY WITH THE UTMOST CERTAINTY THAT SOMETHING HAD HAPPENED + DO YOU THINK THAT I WOULD RESPOND TO SUCH A TRIFLE AND YET BE IGNORANT OF HIS DEATH + I HAVE SEEN TOO MUCH NOT TO KNOW THAT THE IMPRESSION OF A WOMAN MAY BE MORE VALUABLE THAN THE CONCLUSION OF AN ANALYTICAL REASONER + AND IN THIS LETTER YOU CERTAINLY HAVE A VERY STRONG PIECE OF EVIDENCE TO CORROBORATE YOUR VIEW + BUT IF YOUR HUSBAND IS ALIVE AND ABLE TO WRITE LETTERS WHY SHOULD HE REMAIN AWAY FROM YOU + I CANNOT IMAGINE + IT IS UNTHINKABLE + QUOTE AND ON MONDAY HE MADE NO REMARKS BEFORE LEAVING YOU QUOTE + NUMBER + AND YOU WERE SURPRISED TO SEE HIM IN SWANDAM LANE + VERY MUCH SO + WAS THE WINDOW OPEN + YES + QUOTE THEN HE MIGHT HAVE CALLED TO YOU QUOTE + HE MIGHT + HE ONLY AS I UNDERSTAND GAVE AN INARTICULATE CRY + YES + A CALL FOR HELP YOU THOUGHT + YES + HE WAVED HIS HANDS QUOTE + BUT IT MIGHT HAVE BEEN A CRY OF SURPRISE + ASTONISHMENT AT THE UNEXPECTED SIGHT OF YOU MIGHT CAUSE HIM TO THROW UP HIS HANDS + IT IS POSSIBLE + AND YOU THOUGHT HE WAS PULLED BACK + HE DISAPPEARED SO SUDDENLY + QUOTE HE MIGHT HAVE LEAPED BACK + YOU DID NOT SEE ANYONE ELSE IN THE ROOM + NO BUT THIS HORRIBLE MAN CONFESSED TO HAVING BEEN THERE AND THE LASCAR WAS AT THE FOOT OF THE STAIRS + QUITE SO + YOUR HUSBAND AS FAR AS YOU COULD SEE HAD HIS ORDINARY CLOTHES ON + BUT WITHOUT HIS COLLAR OR TIE + I DISTINCTLY SAW HIS BARE THROAT QUOTE + HAD HE EVER SPOKEN OF SWANDAM LANE + NEVER + HAD HE EVER SHOWED ANY SIGNS OF HAVING TAKEN OPIUM + NEVER + THANK YOU MRS. SAINT CLAIR + THOSE ARE THE PRINCIPAL POINTS ABOUT WHICH I WISHED TO BE ABSOLUTELY CLEAR + WE SHALL NOW HAVE A LITTLE SUPPER AND THEN RETIRE FOR WE MAY HAVE A VERY BUSY DAY TO MORROW QUOTE + A LARGE AND COMFORTABLE DOUBLE BEDDED ROOM HAD BEEN PLACED AT OUR DISPOSAL AND I WAS QUICKLY BETWEEN THE SHEETS FOR I WAS WEARY AFTER MY NIGHT OF ADVENTURE + SHERLOCK HOLMES WAS A MAN HOWEVER WHO WHEN HE HAD AN UNSOLVED PROBLEM UPON HIS MIND WOULD GO FOR DAYS AND EVEN FOR A WEEK WITHOUT REST TURNING IT OVER REARRANGING HIS FACTS LOOKING AT IT FROM EVERY POINT OF VIEW UNTIL HE HAD EITHER FATHOMED IT OR CONVINCED HIMSELF THAT HIS DATA WERE INSUFFICIENT + IT WAS SOON EVIDENT TO ME THAT HE WAS NOW PREPARING FOR AN ALL NIGHT SITTING + HE TOOK OFF HIS COAT AND WAISTCOAT PUT ON A LARGE BLUE DRESSING GOWN AND THEN WANDERED ABOUT THE ROOM COLLECTING PILLOWS FROM HIS BED AND CUSHIONS FROM THE SOFA AND ARMCHAIRS + WITH THESE HE CONSTRUCTED A SORT OF EASTERN DIVAN UPON WHICH HE PERCHED HIMSELF CROSSLEGGED WITH AN OUNCE OF SHAG TOBACCO AND A BOX OF MATCHES LAID OUT IN FRONT OF HIM + IN THE DIM LIGHT OF THE LAMP I SAW HIM SITTING THERE AN OLD BRIAR PIPE BETWEEN HIS LIPS HIS EYES FIXED VACANTLY UPON THE CORNER OF THE CEILING THE BLUE SMOKE CURLING UP FROM HIM SILENT MOTIONLESS WITH THE LIGHT SHINING UPON HIS STRONG SET AQUILINE FEATURES + SO HE SAT AS I DROPPED OFF TO SLEEP AND SO HE SAT WHEN A SUDDEN EJACULATION CAUSED ME TO WAKE UP AND I FOUND THE SUMMER SUN SHINING INTO THE APARTMENT + THE PIPE WAS STILL BETWEEN HIS LIPS THE SMOKE STILL CURLED UPWARD AND THE ROOM WAS FULL OF A DENSE TOBACCO HAZE BUT NOTHING REMAINED OF THE HEAP OF SHAG WHICH I HAD SEEN UPON THE PREVIOUS NIGHT + AWAKE WATSON HE ASKED + YES + GAME FOR A MORNING DRIVE + CERTAINLY + THEN DRESS + NO ONE IS STIRRING YET BUT I KNOW WHERE THE STABLE BOY SLEEPS AND WE SHALL SOON HAVE THE TRAP OUT QUOTE + HE CHUCKLED TO HIMSELF AS HE SPOKE HIS EYES TWINKLED AND HE SEEMED A DIFFERENT MAN TO THE SOMBRE THINKER OF THE PREVIOUS NIGHT + AS I DRESSED I GLANCED AT MY WATCH + IT WAS NO WONDER THAT NO ONE WAS STIRRING + IT WAS TWENTY FIVE MINUTES PAST FOUR + I HAD HARDLY FINISHED WHEN HOLMES RETURNED WITH THE NEWS THAT THE BOY WAS PUTTING IN THE HORSE + I WANT TO TEST A LITTLE THEORY OF MINE SAID HE PULLING ON HIS BOOTS + I THINK WATSON THAT YOU ARE NOW STANDING IN THE PRESENCE OF ONE OF THE MOST ABSOLUTE FOOLS IN EUROPE + I DESERVE TO BE KICKED FROM HERE TO CHARING CROSS + BUT I THINK I HAVE THE KEY OF THE AFFAIR NOW + AND WHERE IS IT + I ASKED SMILING + IN THE BATHROOM HE ANSWERED + QUOTE OH YES I AM NOT JOKING QUOTE HE CONTINUED SEEING MY LOOK OF INCREDULITY + I HAVE JUST BEEN THERE AND I HAVE TAKEN IT OUT AND I HAVE GOT IT IN THIS GLADSTONE BAG + COME ON MY BOY AND WE SHALL SEE WHETHER IT WILL NOT FIT THE LOCK + WE MADE OUR WAY DOWNSTAIRS AS QUIETLY AS POSSIBLE AND OUT INTO THE BRIGHT MORNING SUNSHINE + IN THE ROAD STOOD OUR HORSE AND TRAP WITH THE HALF CLAD STABLE BOY WAITING AT THE HEAD + WE BOTH SPRANG IN AND AWAY WE DASHED DOWN THE LONDON ROAD + A FEW COUNTRY CARTS WERE STIRRING BEARING IN VEGETABLES TO THE METROPOLIS BUT THE LINES OF VILLAS ON EITHER SIDE WERE AS SILENT AND LIFELESS AS SOME CITY IN A DREAM + IT HAS BEEN IN SOME POINTS A SINGULAR CASE SAID HOLMES FLICKING THE HORSE ON INTO A GALLOP + I CONFESS THAT I HAVE BEEN AS BLIND AS A MOLE BUT IT IS BETTER TO LEARN WISDOM LATE THAN NEVER TO LEARN IT AT ALL + IN TOWN THE EARLIEST RISERS WERE JUST BEGINNING TO LOOK SLEEPILY FROM THEIR WINDOWS AS WE DROVE THROUGH THE STREETS OF THE SURREY SIDE + PASSING DOWN THE WATERLOO BRIDGE ROAD WE CROSSED OVER THE RIVER AND DASHING UP WELLINGTON STREET WHEELED SHARPLY TO THE RIGHT AND FOUND OURSELVES IN BOW STREET + SHERLOCK HOLMES WAS WELL KNOWN TO THE FORCE AND THE TWO CONSTABLES AT THE DOOR SALUTED HIM + ONE OF THEM HELD THE HORSE'S HEAD WHILE THE OTHER LED US IN + WHO IS ON DUTY ASKED HOLMES + QUOTE INSPECTOR BRADSTREET SIR QUOTE + AH BRADSTREET HOW ARE YOU + A TALL STOUT OFFICIAL HAD COME DOWN THE STONE FLAGGED PASSAGE IN A PEAKED CAP AND FROGGED JACKET + I WISH TO HAVE A QUIET WORD WITH YOU BRADSTREET + CERTAINLY MR. HOLMES + STEP INTO MY ROOM HERE + IT WAS A SMALL OFFICE LIKE ROOM WITH A HUGE LEDGER UPON THE TABLE AND A TELEPHONE PROJECTING FROM THE WALL + THE INSPECTOR SAT DOWN AT HIS DESK + WHAT CAN I DO FOR YOU MR. HOLMES + QUOTE I CALLED ABOUT THAT BEGGARMAN BOONE THE ONE WHO WAS CHARGED WITH BEING CONCERNED IN THE DISAPPEARANCE OF MR. NEVILLE SAINT CLAIR OF LEE QUOTE + YES + HE WAS BROUGHT UP AND REMANDED FOR FURTHER INQUIRIES + SO I HEARD + YOU HAVE HIM HERE + IN THE CELLS + QUOTE IS HE QUIET QUOTE + OH HE GIVES NO TROUBLE + BUT HE IS A DIRTY SCOUNDREL + DIRTY + YES IT IS ALL WE CAN DO TO MAKE HIM WASH HIS HANDS AND HIS FACE IS AS BLACK AS A TINKER'S + WELL WHEN ONCE HIS CASE HAS BEEN SETTLED HE WILL HAVE A REGULAR PRISON BATH AND I THINK IF YOU SAW HIM YOU WOULD AGREE WITH ME THAT HE NEEDED IT + QUOTE I SHOULD LIKE TO SEE HIM VERY MUCH QUOTE + WOULD YOU + THAT IS EASILY DONE + COME THIS WAY + YOU CAN LEAVE YOUR BAG + NO I THINK THAT I'LL TAKE IT + VERY GOOD + COME THIS WAY IF YOU PLEASE + HE LED US DOWN A PASSAGE OPENED A BARRED DOOR PASSED DOWN A WINDING STAIR AND BROUGHT US TO A WHITEWASHED CORRIDOR WITH A LINE OF DOORS ON EACH SIDE + QUOTE THE THIRD ON THE RIGHT IS HIS QUOTE SAID THE INSPECTOR + HERE IT IS + HE QUIETLY SHOT BACK A PANEL IN THE UPPER PART OF THE DOOR AND GLANCED THROUGH + HE IS ASLEEP SAID HE + YOU CAN SEE HIM VERY WELL + WE BOTH PUT OUR EYES TO THE GRATING + THE PRISONER LAY WITH HIS FACE TOWARDS US IN A VERY DEEP SLEEP BREATHING SLOWLY AND HEAVILY + HE WAS A MIDDLE SIZED MAN COARSELY CLAD AS BECAME HIS CALLING WITH A COLOURED SHIRT PROTRUDING THROUGH THE RENT IN HIS TATTERED COAT + HE WAS AS THE INSPECTOR HAD SAID EXTREMELY DIRTY BUT THE GRIME WHICH COVERED HIS FACE COULD NOT CONCEAL ITS REPULSIVE UGLINESS + A BROAD WHEAL FROM AN OLD SCAR RAN RIGHT ACROSS IT FROM EYE TO CHIN AND BY ITS CONTRACTION HAD TURNED UP ONE SIDE OF THE UPPER LIP SO THAT THREE TEETH WERE EXPOSED IN A PERPETUAL SNARL + A SHOCK OF VERY BRIGHT RED HAIR GREW LOW OVER HIS EYES AND FOREHEAD + HE'S A BEAUTY ISN'T HE SAID THE INSPECTOR + HE CERTAINLY NEEDS A WASH REMARKED HOLMES + QUOTE I HAD AN IDEA THAT HE MIGHT AND I TOOK THE LIBERTY OF BRINGING THE TOOLS WITH ME QUOTE + HE OPENED THE GLADSTONE BAG AS HE SPOKE AND TOOK OUT TO MY ASTONISHMENT A VERY LARGE BATH SPONGE + HE HE + YOU ARE A FUNNY ONE CHUCKLED THE INSPECTOR + NOW IF YOU WILL HAVE THE GREAT GOODNESS TO OPEN THAT DOOR VERY QUIETLY WE WILL SOON MAKE HIM CUT A MUCH MORE RESPECTABLE FIGURE + WELL I DON'T KNOW WHY NOT SAID THE INSPECTOR + HE DOESN'T LOOK A CREDIT TO THE BOW STREET CELLS DOES HE + HE SLIPPED HIS KEY INTO THE LOCK AND WE ALL VERY QUIETLY ENTERED THE CELL + THE SLEEPER HALF TURNED AND THEN SETTLED DOWN ONCE MORE INTO A DEEP SLUMBER + HOLMES STOOPED TO THE WATERJUG MOISTENED HIS SPONGE AND THEN RUBBED IT TWICE VIGOROUSLY ACROSS AND DOWN THE PRISONER'S FACE + QUOTE LET ME INTRODUCE YOU QUOTE HE SHOUTED QUOTE TO MR. NEVILLE SAINT CLAIR OF LEE IN THE COUNTY OF KENT QUOTE + NEVER IN MY LIFE HAVE I SEEN SUCH A SIGHT + THE MAN'S FACE PEELED OFF UNDER THE SPONGE LIKE THE BARK FROM A TREE + GONE WAS THE COARSE BROWN TINT + GONE TOO WAS THE HORRID SCAR WHICH HAD SEAMED IT ACROSS AND THE TWISTED LIP WHICH HAD GIVEN THE REPULSIVE SNEER TO THE FACE + A TWITCH BROUGHT AWAY THE TANGLED RED HAIR AND THERE SITTING UP IN HIS BED WAS A PALE SAD FACED REFINED LOOKING MAN BLACK HAIRED AND SMOOTH SKINNED RUBBING HIS EYES AND STARING ABOUT HIM WITH SLEEPY BEWILDERMENT + THEN SUDDENLY REALIZING THE EXPOSURE HE BROKE INTO A SCREAM AND THREW HIMSELF DOWN WITH HIS FACE TO THE PILLOW + GREAT HEAVENS CRIED THE INSPECTOR IT IS INDEED THE MISSING MAN + I KNOW HIM FROM THE PHOTOGRAPH + THE PRISONER TURNED WITH THE RECKLESS AIR OF A MAN WHO ABANDONS HIMSELF TO HIS DESTINY + BE IT SO SAID HE + AND PRAY WHAT AM I CHARGED WITH + WITH MAKING AWAY WITH MR. NEVILLE SAINT OH COME YOU CAN'T BE CHARGED WITH THAT UNLESS THEY MAKE A CASE OF ATTEMPTED SUICIDE OF IT SAID THE INSPECTOR WITH A GRIN + QUOTE WELL I HAVE BEEN TWENTY SEVEN YEARS IN THE FORCE BUT THIS REALLY TAKES THE CAKE QUOTE + IF I AM MR. NEVILLE SAINT CLAIR THEN IT IS OBVIOUS THAT NO CRIME HAS BEEN COMMITTED AND THAT THEREFORE I AM ILLEGALLY DETAINED + NO CRIME BUT A VERY GREAT ERROR HAS BEEN COMMITTED SAID HOLMES + YOU WOULD HAVE DONE BETTER TO HAVE TRUSTED YOU WIFE + IT WAS NOT THE WIFE IT WAS THE CHILDREN GROANED THE PRISONER + GOD HELP ME I WOULD NOT HAVE THEM ASHAMED OF THEIR FATHER + MY GOD + WHAT AN EXPOSURE + WHAT CAN I DO QUOTE + SHERLOCK HOLMES SAT DOWN BESIDE HIM ON THE COUCH AND PATTED HIM KINDLY ON THE SHOULDER + IF YOU LEAVE IT TO A COURT OF LAW TO CLEAR THE MATTER UP SAID HE OF COURSE YOU CAN HARDLY AVOID PUBLICITY + ON THE OTHER HAND IF YOU CONVINCE THE POLICE AUTHORITIES THAT THERE IS NO POSSIBLE CASE AGAINST YOU I DO NOT KNOW THAT THERE IS ANY REASOA THAT THE DETAILS SHOULD FIND THEIR WAY INTO THE PAPERS + INSPECTOR BRADSTREET WOULD I AM SURE MAKE NOTES UPON ANYTHING WHICH YOU MIGHT TELL US AND SUBMIT IT TO THE PROPER AUTHORITIES + THE CASE WOULD THEN NEVER GO INTO COURT AT ALL + GOD BLESS YOU CRIED THE PRISONER PASSIONATELY + I WOULD HAVE ENDURED IMPRISONMENT AY EVEN EXECUTION RATHER THAN HAVE LEFT MY MISERABLE SECRET AS A FAMILY BLOT TO MY CHILDREN + YOU ARE THE FIRST WHO HAVE EVER HEARD MY STORY + MY FATHER WAS A SCHOOL MASTER IN CHESTERFIELD WHERE I RECEIVED AN EXCEL LENT EDUCATION + I TRAVELLED IN MY YOUTH TOOK TO THE STAGE AND FINALLY BECAME A REPORTER ON AN EVENING PAPER IN LONDON + ONE DAY MY EDITOR WISHED TO HAVE A SERIES OF ARTICLES UPON BEGGING IN THE METROPOLIS AND I VOLUNTEERED TO SUPPLY THEM + THERE WAS THE POINT FROM WHICH ALL MY ADVENTURES STARTED + IT WAS ONLY BY TRYING BEGGING AS AN AMATEUR THAT I COULD GET THE FACTS UPON WHICH TO BASE MY ARTICLES + WHEN AN ACTOR I HAD OF COURSE LEARNED ALL THE SECRETS OF MAKING UP AND HAD BEEN FAMOUS IN THE GREEN ROOM FOR MY SKILL + I TOOK ADVANTAGE NOW OF MY ATTAINMENTS + I PAINTED MY FACE AND TO MAKE MYSELF AS PITIABLE AS POSSIBLE I MADE A GOOD SCAR AND FIXED ONE SIDE OF MY LIP IN A TWIST BY THE AID OF A SMALL SLIP OF FLESH COLOURED PLASTER + THEN WITH A RED HEAD OF HAIR AND AN APPROPRIATE DRESS I TOOK MY STATION IN THE BUSINESS PART OF THE CITY OSTENSIBLY AS A MATCH SELLER BUT REALLY AS A BEGGAR + FOR SEVEN HOURS I PLIED MY TRADE AND WHEN I RETURNED HOME IN THE EVENING I FOUND TO MY SURPRISE THAT I HAD RECEIVED NO LESS THAN TWENTY SIXES FOUR D. + QUOTE I WROTE MY ARTICLES AND THOUGHT LITTLE MORE OF THE MATTER UNTIL SOME TIME LATER I BACKED A BILL FOR A FRIEND AND HAD A WRIT SERVED UPON ME FOR TWENTY FIVE POUNDS + I WAS AT MY WIT'S END WHERE TO GET THE MONEY BUT A SUDDEN IDEA CAME TO ME + I BEGGED A FORTNIGHT'S GRACE FROM THE CREDITOR ASKED FOR A HOLIDAY FROM MY EMPLOYERS AND SPENT THE TIME IN BEGGING IN THE CITY UNDER MY DISGUISE + IN TEN DAYS I HAD THE MONEY AND HAD PAID THE DEBT + WELL YOU CAN IMAGINE HOW HARD IT WAS TO SETTLE DOWN TO ARDUOUS WORK AT TWO POUNDS A WEEK WHEN I KNEW THAT I COULD EARN AS MUCH IN A DAY BY SMEARING MY FACE WITH A LITTLE PAINT LAYING MY CAP ON THE GROUND AND SITTING STILL + IT WAS A LONG FIGHT BETWEEN MY PRIDE AND THE MONEY BUT THE DOLLARS WON AT LAST AND I THREW UP REPORTING AND SAT DAY AFTER DAY IN THE CORNER WHICH I HAD FIRST CHOSEN INSPIRING PITY BY MY GHASTLY FACE AND FILLING MY POCKETS WITH COPPERS + ONLY ONE MAN KNEW MY SECRET + HE WAS THE KEEPER OF A LOW DEN IN WHICH I USED TO LODGE IN SWANDAM LANE WHERE I COULD EVERY MORNING EMERGE AS A SQUALID BEGGAR AND IN THE EVENINGS TRANSFORM MYSELF INTO A WELL DRESSED MAN ABOUT TOWN + THIS FELLOW A LASCAR WAS WELL PAID BY ME FOR HIS ROOMS SO THAT I KNEW THAT MY SECRET WAS SAFE IN HIS POSSESSION + WELL VERY SOON I FOUND THAT I WAS SAVING CONSIDERABLE SUMS OF MONEY + I DO NOT MEAN THAT ANY BEGGAR IN THE STREETS OF LONDON COULD EARN SEVEN HUNDRED POUNDS A YEAR WHICH IS LESS THAN MY AVERAGE TAKINGS BUT I HAD EXCEPTIONAL ADVANTAGES IN MY POWER OF MAKING UP AND ALSO IN A FACILITY OF REPARTEE WHICH IMPROVED BY PRACTICE AND MADE ME QUITE A RECOGNIZED CHARACTER IN THE CITY + ALL DAY A STREAM OF PENNIES VARIED BY SILVER POURED IN UPON ME AND IT WAS A VERY BAD DAY IN WHICH I FAILED TO TAKE TWO POUNDS + AS I GREW RICHER I GREW MORE AMBITIOUS TOOK A HOUSE IN THE COUNTRY AND EVENTUALLY MARRIED WITHOUT ANYONE HAVING A SUSPICION AS TO MY REAL OCCUPATION + MY DEAR WIFE KNEW THAT I HAD BUSINESS IN THE CITY + SHE LITTLE KNEW WHAT + LAST MONDAY I HAD FINISHED FOR THE DAY AND WAS DRESSING IN MY ROOM ABOVE THE OPIUM DEN WHEN I LOOKED OUT OF MY WINDOW AND SAW TO MY HORROR AND ASTONISHMENT THAT MY WIFE WAS STANDING IN THE STREET WITH HER EYES FIXED FULL UPON ME + I GAVE A CRY OF SURPRISE THREW UP MY ARMS TO COVER MY FACE AND RUSHING TO MY CONFIDANT THE LASCAR ENTREATED HIM TO PREVENT ANYONE FROM COMING UP TO ME + I HEARD HER VOICE DOWNSTAIRS BUT I KNEW THAT SHE COULD NOT ASCEND + SWIFTLY I THREW OFF MY CLOTHES PULLED ON THOSE OF A BEGGAR AND PUT ON MY PIGMENTS AND WIG + EVEN A WIFE'S EYES COULD NOT PIERCE SO COMPLETE A DISGUISE + BUT THEN IT OCCURRED TO ME THAT THERE MIGHT BE A SEARCH IN THE ROOM AND THAT THE CLOTHES MIGHT BETRAY ME + I THREW OPEN THE WINDOW REOPENING BY MY VIOLENCE A SMALL CUT WHICH I HAD INFLICTED UPON MYSELF IN THE BEDROOM THAT MORNING + THEN I SEIZED MY COAT WHICH WAS WEIGHTED BY THE COPPERS WHICH I HAD JUST TRANSFERRED TO IT FROM THE LEATHER BAG IN WHICH I CARRIED MY TAKINGS + I HURLED IT OUT OF THE WINDOW AND IT DISAPPERED INTO THE THAMES + THE OTHER CLOTHES WOULD HAVE FOLLOWED BUT AT THAT MOMENT THERE WAS A RUSH OF CONSTABLES UP THE STAIR AND A FEW MINUTES AFTER I FOUND RATHER I CONFESS TO MY RELIEF THAT INSTEAD OF BEING IDENTIFIED AS MR. NEVILLE SAINT CLAIR I WAS ARRESTED AS HIS MURDERER + I DO NOT KNOW THAT THERE IS ANYTHING ELSE FOR ME TO EXPLAIN + I WAS DETERMINED TO PRESERVE MY DISGUISE AS LONG AS POSSIBLE AND HENCE MY PREFERENCE FOR A DIRTY FACE + KNOWING THAT MY WIFE WOULD BE TERRIBLY ANXIOUS I SLIPPED OFF MY RING AND CONFIDED IT TO THE LASCAR AT A MOMENT WHEN NO CONSTABLE WAS WATCHING ME TOGETHER WITH A HURRIED SCRAWL TELLING HER THAT SHE HAD NO CAUSE TO FEAR QUOTE + THAT NOTE ONLY REACHED HER YESTERDAY SAID HOLMES + GOOD GOD + WHAT A WEEK SHE MUST HAVE SPENT + THE POLICE HAVE WATCHED THIS LASCAR SAID INSPECTOR BRADSTREET AND I CAN QUITE UNDERSTAND THAT HE MIGHT FIND IT DIFFICULT TO POST A LETTER UNOBSERVED + PROBABLY HE HANDED IT TO SOME SAILOR CUSTOMER OF HIS WHO FORGOT ALL ABOUT IT FOR SOME DAYS + QUOTE THAT WAS IT QUOTE SAID HOLMES NODDING APPROVINGLY QUOTE I HAVE NO DOUBT OF IT + BUT HAVE YOU NEVER BEEN PROSECUTED FOR BEGGING + MANY TIMES BUT WHAT WAS A FINE TO ME + IT MUST STOP HERE HOWEVER SAID BRADSTREET + IF THE POLICE ARE TO HUSH THIS THING UP THERE MUST BE NO MORE OF HUGH BOONE + I HAVE SWORN IT BY THE MOST SOLEMN OATHS WHICH A MAN CAN TAKE + QUOTE IN THAT CASE I THINK THAT IT IS PROBABLE THAT NO FURTHER STEPS MAY BE TAKEN + BUT IF YOU ARE FOUND AGAIN THEN ALL MUST COME OUT + I AM SURE MR. HOLMES THAT WE ARE VERY MOCH INDEBTED TO YOU FOR HAVING CLEARED THE MATTER UP + I WISH I KNEW HOW YOU REACH YOUR RESULTS + I REACHED THIS ONE SAID MY FRIEND BY SITTING UPON FIVE PILLOWS AND CONSUMING AN OUNCE OF SHAG + I THINK WATSON THAT IF WE DRIVE TO BAKER STREET WE SHALL JUST BE IN TIME FOR BREAKFAST diff --git a/samples/LMTutorial/train/missing_three-quarter.txt b/samples/LMTutorial/train/missing_three-quarter.txt new file mode 100755 index 0000000..cc64121 --- /dev/null +++ b/samples/LMTutorial/train/missing_three-quarter.txt @@ -0,0 +1,540 @@ + WE WERE FAIRLY ACCUSTOMED TO RECEIVE WEIRD TELEGRAMS AT BAKER STREET BUT I HAVE A PARTICULAR RECOLLECTION OF ONE WHICH REACHED US ON A GLOOMY FEBRUARY MORNING SOME SEVEN OR EIGHT YEARS AGO AND GAVE MR. SHERLOCK HOLMES A PUZZLED QUARTER OF AN HOUR + IT WAS ADDRESSED TO HIM AND RAN THUS PLEASE AWAIT ME + TERRIBLE MISFORTUNE + RIGHT WING THREE QUARTER MISSING INDISPENSABLE TO MORROW + OVERTON + QUOTE STRAND POSTMARK AND DISPATCHED TEN THIRTY SIX QUOTE SAID HOLMES READING IT OVER AND OVER + MR. OVERTON WAS EVIDENTLY CONSIDERABLY EXCITED WHEN HE SENT IT AND SOMEWHAT INCOHERENT IN CONSEQUENCE + WELL WELL HE WILL BE HERE I DARESAY BY THE TIME I HAVE LOOKED THROUGH THE TIMES AND THEN WE SHALL KNOW ALL ABOUT IT + EVEN THE MOST INSIGNIFICANT PROBLEM WOULD BE WELCOME IN THESE STAGNANT DAYS + THINGS HAD INDEED BEEN VERY SLOW WITH US AND I HAD LEARNED TO DREAD SUCH PERIODS OF INACTION FOR I KNEW BY EXPERIENCE THAT MY COMPANION'S BRAIN WAS SO ABNORMALLY ACTIVE THAT IT WAS DANGEROUS TO LEAVE IT WITHOUT MATERIAL UPON WHICH TO WORK + FOR YEARS I HAD GRADUALLY WEANED HIM FROM THAT DRUG MANIA WHICH HAD THREATENED ONCE TO CHECK HIS REMARKABLE CAREER + NOW I KNEW THAT UNDER ORDINARY CONDITIONS HE NO LONGER CRAVED FOR THIS ARTIFICIAL STIMULUS BUT I WAS WELL AWARE THAT THE FIEND WAS NOT DEAD BUT SLEEPING AND I HAVE KNOWN THAT THE SLEEP WAS A LIGHT ONE AND THE WAKING NEAR WHEN IN PERIODS OF IDLENESS I HAVE SEEN THE DRAWN LOOK UPON HOLMES'S ASCETIC FACE AND THE BROODING OF HIS DEEP SET AND INSCRUTABLE EYES + THEREFORE I BLESSED THIS MR. OVERTON WHOEVER HE MIGHT BE SINCE HE HAD COME WITH HIS ENIGMATIC MESSAGE TO BREAK THAT DANGEROUS CALM WHICH BROUGHT MORE PERIL TO MY FRIEND THAN ALL THE STORMS OF HIS TEMPESTUOUS LIFE + AS WE HAD EXPECTED THE TELEGRAM WAS SOON FOLLOWED BY ITS SENDER AND THE CARD OF MR. CYRIL OVERTON TRINITY COLLEGE CAMBRIDGE ANNOUNCED THE ARRIVAL OF AN ENORMOUS YOUNG MAN SIXTEEN STONE OF SOLID BONE AND MUSCLE WHO SPANNED THE DOORWAY WITH HIS BROAD SHOULDERS AND LOOKED FROM ONE OF US TO THE OTHER WITH A COMELY FACE WHICH WAS HAGGARD WITH ANXIETY + MR. SHERLOCK HOLMES + MY COMPANION BOWED + I'VE BEEN DOWN TO SCOTLAND YARD MR. HOLMES + I SAW INSPECTOR STANLEY HOPKINS + HE ADVISED ME TO COME TO YOU + HE SAID THE CASE SO FAR AS HE COULD SEE WAS MORE IN YOUR LINE THAN IN THAT OF THE REGULAR POLICE + QUOTE PRAY SIT DOWN AND TELL ME WHAT IS THE MATTER QUOTE + IT'S AWFUL MR. HOLMES SIMPLY AWFUL + I WONDER MY HAIR ISN'T GRAY + GODFREY STAUNTON YOU'VE HEARD OF HIM OF COURSE + HE'S SIMPLY THE HINGE THAT THE WHOLE TEAM TURNS ON + I'D RATHER SPARE TWO FROM THE PACK AND HAVE GODFREY FOR MY THREE QUARTER LINE + WHETHER IT'S PASSING OR TACKLING OR DRIBBLING THERE'S NO ONE TO TOUCH HIM AND THEN HE'S GOT THE HEAD AND CAN HOLD US ALL TOGETHER + WHAT AM I TO DO + THAT'S WHAT I ASK YOU MR. HOLMES + THERE'S MOORHOUSE FIRST RESERVE BUT HE IS TRAINED AS A HALF AND HE ALWAYS EDGES RIGHT IN ON TO THE SCRUM INSTEAD OF KEEPING OUT ON THE TOUCHLINE + HE'S A FINE PLACE KICK IT'S TRUE BUT THEN HE HAS NO JUDGMENT AND HE CAN'T SPRINT FOR NUTS + WHY MORTON OR JOHNSON THE OXFORD FLIERS COULD ROMP ROUND HIM + STEVENSON IS FAST ENOUGH BUT HE COULDN'T DROP FROM THE TWENTYFIVE LINE AND A THREE QUARTER WHO CAN'T EITHER PUNT OR DROP ISN'T WORTH A PLACE FOR PACE ALONE + NO MR. HOLMES WE ARE DONE UNLESS YOU CAN HELP ME TO FIND GODFREY STAUNTON + MY FRIEND HAD LISTENED WITH AMUSED SURPRISE TO THIS LONG SPEECH WHICH WAS POURED FORTH WITH EXTRAORDINARY VIGOUR AND EARNESTNESS EVERY POINT BEING DRIVEN HOME BY THE SLAPPING OF A BRAWNY HAND UPON THE SPEAKER'S KNEE + WHEN OUR VISITOR WAS SILENT HOLMES STRETCHED OUT HIS HAND AND TOOK DOWN LETTER S. OF HIS COMMONPLACE BOOK + FOR ONCE HE DUG IN VAIN INTO THAT MINE OF VARIED INFORMATION + THERE IS ARTHUR H. STAUNTON THE RISING YOUNG FORGER SAID HE AND THERE WAS HENRY STAUNTON WHOM I HELPED TO HANG BUT GODFREY STAUNTON IS A NEW NAME TO ME + IT WAS OUR VISITOR'S TURN TO LOOK SURPRISED + WHY MR. HOLMES I THOUGHT YOU KNEW THINGS SAID HE + QUOTE I SUPPOSE THEN IF YOU HAVE NEVER HEARD OF GODFREY STAUNTON YOU DON'T KNOW CYRIL OVERTON EITHER QUOTE + HOLMES SHOOK HIS HEAD GOOD HUMOUREDLY + GREAT SCOTT CRIED THE ATHLETE + WHY I WAS FIRST RESERVE FOR ENGLAND AGAINST WALES AND I'VE SKIPPERED THE VARSITY ALL THIS YEAR + BUT THAT'S NOTHING + I DIDN'T THINK THERE WAS A SOUL IN ENGLAND WHO DIDN'T KNOW GODFREY STAUNTON THE CRACK THREEQUARTER CAMBRIDGE BLACKHEATH AND FIVE INTERNATIONALS + GOOD LORD + MR. HOLMES WHERE HAVE YOU LIVED + HOLMES LAUGHED AT THE YOUNG GIANT'S NAIVE ASTONISHMENT + YOU LIVE IN A DIFFERENT WORLD TO ME MR. OVERTON A SWEETER AND HEALTHIER ONE + MY RAMIFICATIONS STRETCH OUT INTO MANY SECTIONS OF SOCIETY BUT NEVER I AM HAPPY TO SAY INTO AMATEUR SPORT WHICH IS THE BEST AND SOUNDEST THING IN ENGLAND + HOWEVER YOUR UNEXPECTED VISIT THIS MORNING SHOWS ME THAT EVEN IN THAT WORLD OF FRESH AIR AND FAIR PLAY THERE MAY BE WORK FOR ME TO DO + SO NOW MY GOOD SIR I BEG YOU TO SIT DOWN AND TO TELL ME SLOWLY AND QUIETLY EXACTLY WHAT IT IS THAT HAS OCCURRED AND HOW YOU DESIRE THAT I SHOULD HELP YOU + YOUNG OVERTON'S FACE ASSUMED THE BOTHERED LOOK OF THE MAN WHO IS MORE ACCUSTOMED TO USING HIS MUSCLES THAN HIS WITS BUT BY DEGREES WITH MANY REPETITIONS AND OBSCURITIES WHICH I MAY OMIT FROM HIS NARRATIVE HE LAID HIS STRANGE STORY BEFORE US + QUOTE IT'S THIS WAY MR. HOLMES + AS I HAVE SAID I AM THE SKIPPER OF THE RUGGER TEAM OF CAMBRIDGE VARSITY AND GODFREY STAUNTON IS MY BEST MAN + TO MORROW WE PLAY OXFORD + YESTERDAY WE ALL CAME UP AND WE SETTLED AT BENTLEY'S PRIVATE HOTEL + AT TEN O'CLOCK I WENT ROUND AND SAW THAT ALL THE FELLOWS HAD GONE TO ROOST FOR I BELIEVE IN STRICT TRAINING AND PLENTY OF SLEEP TO KEEP A TEAM FIT + I HAD A WORD OR TWO WITH GODFREY BEFORE HE TURNED IN + HE SEEMED TO ME TO BE PALE AND BOTHERED + I ASKED HIM WHAT WAS THE MATTER + HE SAID HE WAS ALL RIGHT JUST A TOUCH OF HEADACHE + I BADE HIM GOOD NIGHT AND LEFT HIM + HALF AN HOUR LATER THE PORTER TELLS ME THAT A ROUGH LOOKING MAN WITH A BEARD CALLED WITH A NOTE FOR GODFREY + HE HAD NOT GONE TO BED AND THE NOTE WAS TAKEN TO HIS ROOM + GODFREY READ IT AND FELL BACK IN A CHAIR AS IF HE HAD BEEN POLE AXED + THE PORTER WAS SO SCARED THAT HE WAS GOING TO FETCH ME BUT GODFREY STOPPED HIM HAD A DRINK OF WATER AND PULLED HIMSELF TOGETHER + THEN HE WENT DOWNSTAIRS SAID A FEW WORDS TO THE MAN WHO WAS WAITING IN THE HALL AND THE TWO OF THEM WENT OFF TOGETHER + THE LAST THAT THE PORTER SAW OF THEM THEY WERE ALMOST RUNNING DOWN THE STREET IN THE DIRECTION OF THE STRAND + THIS MORNING GODFREY'S ROOM WAS EMPTY HIS BED HAD NEVER BEEN SLEPT IN AND HIS THINGS WERE ALL JUST AS I HAD SEEN THEM THE NIGHT BEFORE + HE HAD GONE OFF AT A MOMENT'S NOTICE WITH THIS STRANGER AND NO WORD HAS COME FROM HIM SINCE + I DON'T BELIEVE HE WILL EVER COME BACK + HE WAS A SPORTSMAN WAS GODFREY DOWN TO HIS MARROW AND HE WOULDN'T HAVE STOPPED HIS TRAINING AND LET IN HIS SKIPPER IF IT WERE NOT FOR SOME CAUSE THAT WAS TOO STRONG FOR HIM + NO I FEEL AS IF HE WERE GONE FOR GOOD AND WE SHOULD NEVER SEE HIM AGAIN + SHERLOCK HOLMES LISTENED WITH THE DEEPEST ATTENTION TO THIS SINGULAR NARRATIVE + WHAT DID YOU DO HE ASKED + I WIRED TO CAMBRIDGE TO LEARN IF ANYTHING HAD BEEN HEARD OF HIM THERE + I HAVE HAD AN ANSWER + NO ONE HAS SEEN HIM + COULD HE HAVE GOT BACK TO CAMBRIDGE + QUOTE YES THERE IS A LATE TRAIN QUARTER PAST ELEVEN QUOTE + BUT SO FAR AS YOU CAN ASCERTAIN HE DID NOT TAKE IT + NO HE HAS NOT BEEN SEEN + WHAT DID YOU DO NEXT + I WIRED TO LORD MOUNT JAMES + WHY TO LORD MOUNT JAMES + QUOTE GODFREY IS AN ORPHAN AND LORD MOUNT JAMES IS HIS NEAREST RELATIVE HIS UNCLE I BELIEVE QUOTE + INDEED + THIS THROWS NEW LIGHT UPON THE MATTER + LORD MOUNTJAMES IS ONE OF THE RICHEST MEN IN ENGLAND + SO I'VE HEARD GODFREY SAY + AND YOUR FRIEND WAS CLOSELY RELATED + YES HE WAS HIS HEIR AND THE OLD BOY IS NEARLY EIGHTY CRAM FULL OF GOUT TOO + THEY SAY HE COULD CHALK HIS BILLIARD CUE WITH HIS KNUCKLES + HE NEVER ALLOWED GODFREY A SHILLING IN HIS LIFE. FOR HE IS AN ABSOLUTE MISER BUT IT WILL ALL COME TO HIM RIGHT ENOUGH QUOTE + HAVE YOU HEARD FROM LORD MOUNT JAMES + NUMBER + WHAT MOTIVE COULD YOUR FRIEND HAVE IN GOING TO LORD MOUNT JAMES + WELL SOMETHING WAS WORRYING HIM THE NIGHT BEFORE AND IF IT WAS TO DO WITH MONEY IT IS POSSIBLE THAT HE WOULD MAKE FOR HIS NEAREST RELATIVE WHO HAD SO MUCH OF IT THOUGH FROM ALL I HAVE HEARD HE WOULD NOT HAVE MUCH CHANCE OF GETTING IT + GODFREY WAS NOT FOND OF THE OLD MAN + HE WOULD NOT GO IF HE COULD HELP IT + QUOTE WELL WE CAN SOON DETERMINE THAT + IF YOUR FRIEND WAS GOING TO HIS RELATIVE LORD MOUNT JAMES YOU HAVE THEN TO EXPLAIN THE VISIT OF THIS ROUGH LOOKING FELLOW AT SO LATE AN HOUR AND THE AGITATION THAT WAS CAUSED BY HIS COMING + CYRIL OVERTON PRESSED HIS HANDS TO HIS HEAD + I CAN MAKE NOTHING OF IT SAID HE + WELL WELL I HAVE A CLEAR DAY AND I SHALL BE HAPPY TO LOOK INTO THE MATTER SAID HOLMES + I SHOULD STRONGLY RECOMMEND YOU TO MAKE YOUR PREPARATIONS FOR YOUR MATCH WITHOUT REFERENCE TO THIS YOUNG GENTLEMAN + IT MUST AS YOU SAY HAVE BEEN AN OVERPOWERING NECESSITY WHICH TORE HIM AWAY IN SUCH A FASHION AND THE SAME NECESSITY IS LIKELY TO HOLD HIM AWAY + LET US STEP ROUND TOGETHER TO THE HOTEL AND SEE IF THE PORTER CAN THROW ANY FRESH LIGHT UPON THE MATTER + SHERLOCK HOLMES WAS A PAST MASTER IN THE ART OF PUTTING A HUMBLE WITNESS AT HIS EASE AND VERY SOON IN THE PRIVACY OF GODFREY STAUNTON'S ABANDONED ROOM HE HAD EXTRACTED ALL THAT THE PORTER HAD TO TELL + THE VISITOR OF THE NIGHT BEFORE WAS NOT A GENTLEMAN NEITHER WAS HE A WORKINGMAN + HE WAS SIMPLY WHAT THE PORTER DESCRIBED AS A QUOTE MEDIUM LOOKING CHAP QUOTE A MAN OF FIFTY BEARD GRIZZLED PALE FACE QUIETLY DRESSED + HE SEEMED HIMSELF TO BE AGITATED + THE PORTER HAD OBSERVED HIS HAND TREMBLING WHEN HE HAD HELD OUT THE NOTE + GODFREY STAUNTON HAD CRAMMED THE NOTE INTO HIS POCKET + STAUNTON HAD NOT SHAKEN HANDS WITH THE MAN IN THE HALL + THEY HAD EXCHANGED A FEW SENTENCES OF WHICH THE PORTER HAD ONLY DISTINGUISHED THE ONE WORD TIME + THEN THEY HAD HURRIED OFF IN THE MANNER DESCRIBED + IT WAS JUST HALFPAST TEN BY THE HALL CLOCK + LET ME SEE SAID HOLMES SEATING HIMSELF ON STAUNTON'S BED + YOU ARE THE DAY PORTER ARE YOU NOT + YES SIR I GO OFF DUTY AT ELEVEN + THE NIGHT PORTER SAW NOTHING I SUPPOSE + QUOTE NO SIR ONE THEATRE PARTY CAME IN LATE + NO ONE ELSE + WERE YOU ON DUTY ALL DAY YESTERDAY + YES SIR + DID YOU TAKE ANY MESSAGES TO MR. STAUNTON + YES SIR ONE TELEGRAM + QUOTE AH THAT'S INTERESTING + WHAT O'CLOCK WAS THIS + ABOUT SIX + WHERE WAS MR. STAUNTON WHEN HE RECEIVED IT + HERE IN HIS ROOM + WERE YOU PRESENT WHEN HE OPENED IT + QUOTE YES SIR I WAITED TO SEE IF THERE WAS AN ANSWER QUOTE + WELL WAS THERE + YES SIR HE WROTE AN ANSWER + DID YOU TAKE IT + NO HE TOOK IT HIMSELF + BUT HE WROTE IT IN YOUR PRESENCE + QUOTE YES SIR + I WAS STANDING BY THE DOOR AND HE WITH HIS BACK TURNED TO THAT TABLE + WHEN HE HAD WRITTEN IT HE SAID ALL RIGHT PORTER + I WILL TAKE THIS MYSELF + WHAT DID HE WRITE IT WITH + A PEN SIR + WAS THE TELEGRAPHIC FORM ONE OF THESE ON THE TABLE + YES SIR IT WAS THE TOP ONE + HOLMES ROSE + TAKING THE FORMS HE CARRIED THEM OVER TO THE WINDOW AND CAREFULLY EXAMINED THAT WHICH WAS UPPERMOST + QUOTE IT IS A PITY HE DID NOT WRITE IN PENCIL QUOTE SAID HE THROWING THEM DOWN AGAIN WITH A SHRUG OF DISAPPOINTMENT + AS YOU HAVE NO DOUBT FREQUENTLY OBSERVED WATSON THE IMPRESSION USUALLY GOES THROUGH A FACT WHICH HAS DISSOLVED MANY A HAPPY MARRIAGE + HOWEVER I CAN FIND NO TRACE HERE + I REJOICE HOWEVER TO PERCEIVE THAT HE WROTE WITH A BROAD POINTED QUILL PEN AND I CAN HARDLY DOUBT THAT WE WILL FIND SOME IMPRESSION UPON THIS BLOTTING PAD + AH YES SURELY THIS IS THE VERY THING + CYRIL OVERTON WAS MUCH EXCITED + HOLD IT TO THE GLASS HE CRIED + THAT IS UNNECESSARY SAID HOLMES + THE PAPER IS THIN AND THE REVERSE WILL GIVE THE MESSAGE + HERE IT IS QUOTE + HE TURNED IT OVER AND WE READ + SO THAT IS THE TAIL END OF THE TELEGRAM WHICH GODFREY STAUNTON DISPATCHED WITHIN A FEW HOURS OF HIS DISAPPEARANCE + THERE ARE AT LEAST SIX WORDS OF THE MESSAGE WHICH HAVE ESCAPED US BUT WHAT REMAINS STAND BY US FOR GOD'S SAKE PROVES THAT THIS YOUNG MAN SAW A FORMIDABLE DANGER WHICH APPROACHED HIM AND FROM WHICH SOMEONE ELSE COULD PROTECT HIM + US MARK YOU + ANOTHER PERSON WAS INVOLVED + WHO SHOULD IT BE BUT THE PALE FACED BEARDED MAN WHO SEEMED HIMSELF IN SO NERVOUS A STATE + WHAT THEN IS THE CONNECTION BETWEEN GODFREY STAUNTON AND THE BEARDED MAN + AND WHAT IS THE THIRD SOURCE FROM WHICH EACH OF THEM SOUGHT FOR HELP AGAINST PRESSING DANGER + OUR INQUIRY HAS ALREADY NARROWED DOWN TO THAT + WE HAVE ONLY TO FIND TO WHOM THAT TELEGRAM IS ADDRESSED I SUGGESTED + EXACTLY MY DEAR WATSON + YOUR REFLECTION THOUGH PROFOUND HAD ALREADY CROSSED MY MIND + BUT I DARESAY IT MAY HAVE COME TO YOUR NOTICE THAT IF YOU WALK INTO A POSTOFFICE AND DEMAND TO SEE THE COUNTERFOIL OF ANOTHER MAN'S MESSAGE THERE MAY BE SOME DISINCLINATION ON THE PART OF THE OFFICIALS TO OBLIGE YOU + THERE IS SO MUCH RED TAPE IN THESE MATTERS + HOWEVER I HAVE NO DOUBT THAT WITH A LITTLE DELICACY AND FINESSE THE END MAY BE ATTAINED + MEANWHILE I SHOULD LIKE IN YOUR PRESENCE MR. OVERTON TO GO THROUGH THESE PAPERS WHICH HAVE BEEN LEFT UPON THE TABLE + THERE WERE A NUMBER OF LETTERS BILLS AND NOTEBOOKS WHICH HOLMES TURNED OVER AND EXAMINED WITH QUICK NERVOUS FINGERS AND DARTING PENETRATING EYES + QUOTE NOTHING HERE QUOTE HE SAID AT LAST + BY THE WAY I SUPPOSE YOUR FRIEND WAS A HEALTHY YOUNG FELLOW NOTHING AMISS WITH HIM + SOUND AS A BELL + HAVE YOU EVER KNOWN HIM ILL + NOT A DAY + HE HAS BEEN LAID UP WITH A HACK AND ONCE HE SLIPPED HIS KNEE CAP BUT THAT WAS NOTHING + QUOTE PERHAPS HE WAS NOT SO STRONG AS YOU SUPPOSE + I SHOULD THINK HE MAY HAVE HAD SOME SECRET TROUBLE + WITH YOUR ASSENT I WILL PUT ONE OR TWO OF THESE PAPERS IN MY POCKET IN CASE THEY SHOULD BEAR UPON OUR FUTURE INQUIRY + ONE MOMENT ONE MOMENT CRIED A QUERULOUS VOICE AND WE LOOKED UP TO FIND A QUEER LITTLE OLD MAN JERKING AND TWITCHING IN THE DOORWAY + HE WAS DRESSED IN RUSTY BLACK WITH A VERY BROADBRIMMED TOP HAT AND A LOOSE WHITE NECKTIE THE WHOLE EFFECT BEING THAT OF A VERY RUSTIC PARSON OR OF AN UNDERTAKER'S MUTE + YET IN SPITE OF HIS SHABBY AND EVEN ABSURD APPEARANCE HIS VOICE HAD A SHARP CRACKLE AND HIS MANNER A QUICK INTENSITY WHICH COMMANDED ATTENTION + WHO ARE YOU SIR AND BY WHAT RIGHT DO YOU TOUCH THIS GENTLEMAN'S PAPERS HE ASKED + I AM A PRIVATE DETECTIVE AND I AM ENDEAVOURING TO EXPLAIN HIS DISAPPEARANCE + OH YOU ARE ARE YOU + AND WHO INSTRUCTED YOU EH QUOTE + THIS GENTLEMAN MR. STAUNTON'S FRIEND WAS REFERRED TO ME BY SCOTLAND YARD + WHO ARE YOU SIR + I AM CYRIL OVERTON + THEN IT IS YOU WHO SENT ME A TELEGRAM + MY NAME IS LORD MOUNT JAMES + I CAME ROUND AS QUICKLY AS THE BAYSWATER BUS WOULD BRING ME + SO YOU HAVE INSTRUCTED A DETECTIVE + QUOTE YES SIR QUOTE + AND ARE YOU PREPARED TO MEET THE COST + I HAVE NO DOUBT SIR THAT MY FRIEND GODFREY WHEN WE FIND HIM WILL BE PREPARED TO DO THAT + BUT IF HE IS NEVER FOUND EH + ANSWER ME THAT + IN THAT CASE. NO DOUBT HIS FAMILY + QUOTE NOTHING OF THE SORT SIR QUOTE SCREAMED THE LITTLE MAN + DON'T LOOK TO ME FOR A PENNY NOT A PENNY + YOU UNDERSTAND THAT MR. DETECTIVE + I AM ALL THE FAMILY THAT THIS YOUNG MAN HAS GOT AND I TELL YOU THAT I AM NOT RESPONSIBLE + IF HE HAS ANY EXPECTATIONS IT IS DUE TO THE FACT THAT I HAVE NEVER WASTED MONEY AND I DO NOT PROPOSE TO BEGIN TO DO SO NOW + AS TO THOSE PAPERS WITH WHICH YOU ARE MAKING SO FREE I MAY TELL YOU THAT IN CASE THERE SHOULD BE ANYTHING OF ANY VALUE AMONG THEM YOU WILL BE HELD STRICTLY TO ACCOUNT FOR WHAT YOU DO WITH THEM + VERY GOOD SIR SAID SHERLOCK HOLMES + MAY I ASK IN THE MEANWHILE WHETHER YOU HAVE YOURSELF ANY THEORY TO ACCOUNT FOR THIS YOUNG MAN'S DISAPPEARANCE + NO SIR I HAVE NOT + HE IS BIG ENOUGH AND OLD ENOUGH TO LOOK AFTER HIMSELF AND IF HE IS SO FOOLISH AS TO LOSE HIMSELF I ENTIRELY REFUSE TO ACCEPT THE RESPONSIBILITY OF HUNTING FOR HIM QUOTE + I QUITE UNDERSTAND YOUR POSITION SAID HOLMES WITH A MISCHIEVOUS TWINKLE IN HIS EYES + PERHAPS YOU DON'T QUITE UNDERSTAND MINE + GODFREY STAUNTON APPEARS TO HAVE BEEN A POOR MAN + IF HE HAS BEEN KIDNAPPED IT COULD NOT HAVE BEEN FOR ANYTHING WHICH HE HIMSELF POSSESSES + THE FAME OF YOUR WEALTH HAS GONE ABROAD LORD MOUNT JAMES AND IT IS ENTIRELY POSSIBLE THAT A GANG OF THIEVES HAVE SECURED YOUR NEPHEW IN ORDER TO GAIN FROM HIM SOME INFORMATION AS TO YOUR HOUSE YOUR HABITS AND YOUR TREASURE + THE FACE OF OUR UNPLEASANT LITTLE VISITOR TURNED AS WHITE AS HIS NECKCLOTH + HEAVENS SIR WHAT AN IDEA + I NEVER THOUGHT OF SUCH VILLAINY + WHAT INHUMAN ROGUES THERE ARE IN THE WORLD + BUT GODFREY IS A FINE LAD A STAUNCH LAD + NOTHING WOULD INDUCE HIM TO GIVE HIS OLD UNCLE AWAY + I'LL HAVE THE PLATE MOVED OVER TO THE BANK THIS EVENING + IN THE MEANTIME SPARE NO PAINS MR. DETECTIVE + I BEG YOU TO LEAVE NO STONE UNTURNED TO BRING HIM SAFELY BACK + AS TO MONEY WELL SO FAR AS A FIVER OR EVEN A TENNER GOES YOU CAN ALWAYS LOOK TO ME + EVEN IN HIS CHASTENED FRAME OF MIND THE NOBLE MISER COULD GIVE US NO INFORMATION WHICH COULD HELP US FOR HE KNEW LITTLE OF THE PRIVATE LIFE OF HIS NEPHEW + OUR ONLY CLUE LAY IN THE TRUNCATED TELEGRAM AND WITH A COPY OF THIS IN HIS HAND HOLMES SET FORTH TO FIND A SECOND LINK FOR HIS CHAIN + WE HAD SHAKEN OFF LORD MOUNT JAMES AND OVERTON HAD GONE TO CONSULT WITH THE OTHER MEMBERS OF HIS TEAM OVER THE MISFORTUNE WHICH HAD BEFALLEN THEM + THERE WAS A TELEGRAPH OFFICE AT A SHORT DISTANCE FROM THE HOTEL + WE HALTED OUTSIDE IT + QUOTE IT'S WORTH TRYING WATSON QUOTE SAID HOLMES + OF COURSE WITH A WARRANT WE COULD DEMAND TO SEE THE COUNTERFOILS BUT WE HAVE NOT REACHED THAT STAGE YET + I DON'T SUPPOSE THEY REMEMBER FACES IN SO BUSY A PLACE + LET US VENTURE IT + I AM SORRY TO TROUBLE YOU SAID HE IN HIS BLANDEST MANNER TO THE YOUNG WOMAN BEHIND THE GRATING THERE IS SOME SMALL MISTAKE ABOUT A TELEGRAM I SENT YESTERDAY + I HAVE HAD NO ANSWER AND I VERY MUCH FEAR THAT I MUST HAVE OMITTED TO PUT MY NAME AT THE END + COULD YOU TELL ME IF THIS WAS SO + THE YOUNG WOMAN TURNED OVER A SHEAF OF COUNTERFOILS + WHAT O'CLOCK WAS IT SHE ASKED + QUOTE A LITTLE AFTER SIX QUOTE + WHOM WAS IT TO + HOLMES PUT HIS FINGER TO HIS LIPS AND GLANCED AT ME + THE LAST WORDS IN IT WERE FOR GOD'S SAKE HE WHISPERED CONFIDENTIALLY I AM VERY ANXIOUS AT GETTING NO ANSWER + THE YOUNG WOMAN SEPARATED ONE OF THE FORMS + THIS IS IT + THERE IS NO NAME SAID SHE SMOOTHING IT OUT UPON THE COUNTER + THEN THAT OF COURSE ACCOUNTS FOR MY GETTING NO ANSWER SAID HOLMES + QUOTE DEAR ME HOW VERY STUPID OF ME TO BE SURE + GOOD MORNING MISS AND MANY THANKS FOR HAVING RELIEVED MY MIND + HE CHUCKLED AND RUBBED HIS HANDS WHEN WE FOUND OURSELVES IN THE STREET ONCE MORE + WELL + I ASKED + WE PROGRESS MY DEAR WATSON WE PROGRESS + I HAD SEVEN DIFFERENT SCHEMES FOR GETTING A GLIMPSE OF THAT TELEGRAM BUT I COULD HARDLY HOPE TO SUCCEED THE VERY FIRST TIME + AND WHAT HAVE YOU GAINED + QUOTE A STARTING POINT FOR OUR INVESTIGATION QUOTE + HE HAILED A CAB + KING'S CROSS STATION SAID HE + WE HAVE A JOURNEY THEN + YES I THINK WE MUST RUN DOWN TO CAMBRIDGE TOGETHER + ALL THE INDICATIONS SEEM TO ME TO POINT IN THAT DIRECTION + TELL ME I ASKED AS WE RATTLED UP GRAY'S INN ROAD HAVE YOU ANY SUSPICION YET AS TO THE CAUSE OF THE DISAPPEARANCE + I DON'T THINK THAT AMONG ALL OUR CASES I HAVE KNOWN ONE WHERE THE MOTIVES ARE MORE OBSCURE + SURELY YOU DON'T REALLY IMAGINE THAT HE MAY BE KIDNAPPED IN ORDER TO GIVE INFORMATION AGAINST HIS WEALTHY UNCLE QUOTE + I CONFESS MY DEAR WATSON THAT THAT DOES NOT APPEAL TO ME AS A VERY PROBABLE EXPLANATION + IT STRUCK ME HOWEVER AS BEING THE ONE WHICH WAS MOST LIKELY TO INTEREST THAT EXCEEDINGLY UNPLEASANT OLD PERSON + IT CERTAINLY DID THAT BUT WHAT ARE YOUR ALTERNATIVES + I COULD MENTION SEVERAL + YOU MUST ADMIT THAT IT IS CURIOUS AND SUGGESTIVE THAT THIS INCIDENT SHOULD OCCUR ON THE EVE OF THIS IMPORTANT MATCH AND SHOULD INVOLVE THE ONLY MAN WHOSE PRESENCE SEEMS ESSENTIAL TO THE SUCCESS OF THE SIDE + IT MAY OF COURSE BE A COINCIDENCE BUT IT IS INTERESTING + AMATEUR SPORT IS FREE FROM BETTING BUT A GOOD DEAL OF OUTSIDE BETTING GOES ON AMONG THE PUBLIC AND IT IS POSSIBLE THAT IT MIGHT BE WORTH SOMEONE'S WHILE TO GET AT A PLAYER AS THE RUFFIANS OF THE TURF GET AT A RACE HORSE + THERE IS ONE EXPLANATION + A SECOND VERY OBVIOUS ONE IS THAT THIS YOUNG MAN REALLY IS THE HEIR OF A GREAT PROPERTY HOWEVER MODEST HIS MEANS MAY AT PRESENT BE AND IT IS NOT IMPOSSIBLE THAT A PLOT TO HOLD HIM FOR RANSOM MIGHT BE CONCOCTED + QUOTE THESE THEORIES TAKE NO ACCOUNT OF THE TELEGRAM QUOTE + QUITE TRUE WATSON + THE TELEGRAM STILL REMAINS THE ONLY SOLID THING WITH WHICH WE HAVE TO DEAL AND WE MUST NOT PERMIT OUR ATTENTION TO WANDER AWAY FROM IT + IT IS TO GAIN LIGHT UPON THE PURPOSE OF THIS TELEGRAM THAT WE ARE NOW UPON OUR WAY TO CAMBRIDGE + THE PATH OF OUR INVESTIGATION IS AT PRESENT OBSCURE BUT I SHALL BE VERY MUCH SURPRISED IF BEFORE EVENING WE HAVE NOT CLEARED IT UP OR MADE A CONSIDERABLE ADVANCE ALONG IT + IT WAS ALREADY DARK WHEN WE REACHED THE OLD UNIVERSITY CITY + HOLMES TOOK A CAB AT THE STATION AND ORDERED THE MAN TO DRIVE TO THE HOUSE OF DOCTOR LESLIE ARMSTRONG + A FEW MINUTES LATER WE HAD STOPPED AT A LARGE MANSION ON THE BUSIEST THOROUGHFARE + WE WERE SHOWN IN AND AFTER A LONG WAIT WERE AT LAST ADMITTED INTO THE CONSULTING ROOM WHERE WE FOUND THE DOCTOR SEATED BEHIND HIS TABLE + IT ARGUES THE DEGREE IN WHICH I HAD LOST TOUCH WITH MY PROFESSION THAT THE NAME OF LESLIE ARMSTRONG WAS UNKNOWN TO ME + NOW I AM AWARE THAT HE IS NOT ONLY ONE OF THE HEADS OF THE MEDICAL SCHOOL OF THE UNIVERSITY BUT A THINKER OF EUROPEAN REPUTATION IN MORE THAN ONE BRANCH OF SCIENCE + YET EVEN WITHOUT KNOWING HIS BRILLIANT RECORD ONE COULD NOT FAIL TO BE IMPRESSED BY A MERE GLANCE AT THE MAN THE SQUARE MASSIVE FACE THE BROODING EYES UNDER THE THATCHED BROWS AND THE GRANITE MOULDING OF THE INFLEXIBLE JAW + A MAN OF DEEP CHARACTER A MAN WITH AN ALERT MIND GRIM ASCETIC SELF CONTAINED FORMIDABLE SO I READ DOCTOR LESLIE ARMSTRONG + HE HELD MY FRIEND'S CARD IN HIS HAND AND HE LOOKED UP WITH NO VERY PLEASED EXPRESSION UPON HIS DOUR FEATURES + I HAVE HEARD YOUR NAME + MR. SHERLOCK HOLMES AND I AM AWARE OF YOUR PROFESSION ONE OF WHICH I BY NO MEANS APPROVE + IN THAT DOCTOR YOU WILL FIND YOURSELF IN AGREEMENT WITH EVERY CRIMINAL IN THE COUNTRY SAID MY FRIEND QUIETLY + QUOTE SO FAR AS YOUR EFFORTS ARE DIRECTED TOWARDS THE SUPPRESSION OF CRIME SIR THEY MUST HAVE THE SUPPORT OF EVERY REASONABLE MEMBER OF THE COMMUNITY THOUGH I CANNOT DOUBT THAT THE OFFICIAL MACHINERY IS AMPLY SUFFICIENT FOR THE PURPOSE + WHERE YOUR CALLING IS MORE OPEN TO CRITICISM IS WHEN YOU PRY INTO THE SECRETS OF PRIVATE INDIVIDUALS WHEN YOU RAKE UP FAMILY MATTERS WHICH ARE BETTER HIDDEN AND WHEN YOU INCIDENTALLY WASTE THE TIME OF MEN WHO ARE MORE BUSY THAN YOURSELF + AT THE PRESENT MOMENT FOR EXAMPLE I SHOULD BE WRITING A TREATISE INSTEAD OF CONVERSING WITH YOU + NO DOUBT DOCTOR AND YET THE CONVERSATION MAY PROVE MORE IMPORTANT THAN THE TREATISE + INCIDENTALLY I MAY TELL YOU THAT WE ARE DOING THE REVERSE OF WHAT YOU VERY JUSTLY BLAME AND THAT WE ARE ENDEAVOURING TO PREVENT ANYTHING LIKE PUBLIC EXPOSURE OF PRIVATE MATTERS WHICH MUST NECESSARILY FOLLOW WHEN ONCE THE CASE IS FAIRLY IN THE HANDS OF THE OFFICIAL POLICE + YOU MAY LOOK UPON ME SIMPLY AS AN IRREGULAR PIONEER WHO GOES IN FRONT OF THE REGULAR FORCES OF THE COUNTRY + I HAVE COME TO ASK YOU ABOUT MR. GODFREY STAUNTON + WHAT ABOUT HIM + YOU KNOW HIM DO YOU NOT + QUOTE HE IS AN INTIMATE FRIEND OF MINE QUOTE + YOU ARE AWARE THAT HE HAS DISAPPEARED + AH INDEED + THERE WAS NO CHANGE OF EXPRESSION IN THE RUGGED FEATURES OF THE DOCTOR + HE LEFT HIS HOTEL LAST NIGHT HE HAS NOT BEEN HEARD OF + NO DOUBT HE WILL RETURN + TO MORROW IS THE VARSITY FOOTBALL MATCH + QUOTE I HAVE NO SYMPATHY WITH THESE CHILDISH GAMES + THE YOUNG MAN'S FATE INTERESTS ME DEEPLY SINCE I KNOW HIM AND LIKE HIM + THE FOOTBALL MATCH DOES NOT COME WITHIN MY HORIZON AT ALL + I CLAIM YOUR SYMPATHY THEN IN MY INVESTIGATION OF MR. STAUNTON'S FATE + DO YOU KNOW WHERE HE IS + CERTAINLY NOT + YOU HAVE NOT SEEN HIM SINCE YESTERDAY + QUOTE NO I HAVE NOT QUOTE + WAS MR. STAUNTON A HEALTHY MAN + ABSOLUTELY + DID YOU EVER KNOW HIM ILL + NEVER + HOLMES POPPED A SHEET OF PAPER BEFORE THE DOCTOR'S EYES + THEN PERHAPS YOU WILL EXPLAIN THIS RECEIPTED BILL FOR THIRTEEN GUINEAS PAID BY MR. GODFREY STAUNTON LAST MONTH TO DOCTOR LESLIE ARMSTRONG OF CAMBRIDGE + I PICKED IT OUT FROM AMONG THE PAPERS UPON HLS DESK QUOTE + THE DOCTOR FLUSHED WITH ANGER + I DO NOT FEEL THAT THERE IS ANY REASON WHY I SHOULD RENDER AN EXPLANATION TO YOU MR. HOLMES + HOLMES REPLACED THE BILL IN HIS NOTEBOOK + IF YOU PREFER A PUBLIC EXPLANATION IT MUST COME SOONER OR LATER SAID HE + I HAVE ALREADY TOLD YOU THAT I CAN HUSH UP THAT WHICH OTHERS WILL BE BOUND TO PUBLISH AND YOU WOULD REALLY BE WISER TO TAKE ME INTO YOUR COMPLETE CONFIDENCE + I KNOW NOTHING ABOUT IT + DID YOU HEAR FROM MR. STAUNTON IN LONDON + QUOTE CERTAINLY NOT QUOTE + DEAR ME DEAR ME THE POSTOFFICE AGAIN + HOLMES SIGHED WEARILY + A MOST URGENT TELEGRAM WAS DISPATCHED TO YOU FROM LONDON BY GODFREY STAUNTON AT SIX FIFTEEN YESTERDAY EVENING A TELEGRAM WHICH IS UNDOUBTEDLY ASSOCIATED WITH HIS DISAPPEARANCE AND YET YOU HAVE NOT HAD IT + IT IS MOST CULPABLE + I SHALL CERTAINLY GO DOWN TO THE OFFICE HERE AND REGISTER A COMPLAINT + DOCTOR LESLIE ARMSTRONG SPRANG UP FROM BEHIND HIS DESK AND HIS DARK FACE WAS CRIMSON WITH FURY + I'LL TROUBLE YOU TO WALK OUT OF MY HOUSE SIR SAID HE + YOU CAN TELL YOUR EMPLOYER LORD MOUNT JAMES THAT I DO NOT WISH TO HAVE ANYTHING TO DO EITHER WITH HIM OR WITH HIS AGENTS + NO SIR NOT ANOTHER WORD QUOTE + HE RANG THE BELL FURIOUSLY + JOHN SHOW THESE GENTLEMEN OUT + A POMPOUS BUTLER USHERED US SEVERELY TO THE DOOR AND WE FOUND OURSELVES IN THE STREET + HOLMES BURST OUT LAUGHING + DOCTOR LESLIE ARMSTRONG IS CERTAINLY A MAN OF ENERGY AND CHARACTER SAID HE + I HAVE NOT SEEN A MAN WHO IF HE TURNS HIS TALENTS THAT WAY WAS MORE CALCULATED TO FILL THE GAP LEFT BY THE ILLUSTRIOUS MORIARTY + AND NOW MY POOR WATSON HERE WE ARE STRANDED AND FRIENDLESS IN THIS INHOSPITABLE TOWN WHICH WE CANNOT LEAVE WITHOUT ABANDONING OUR CASE + THIS LITTLE INN JUST OPPOSITE ARMSTRONG'S HOUSE IS SINGULARLY ADAPTED TO OUR NEEDS + IF YOU WOULD ENGAGE A FRONT ROOM AND PURCHASE THE NECESSARIES FOR THE NIGHT I MAY HAVE TIME TO MAKE A FEW INQUIRIES + THESE FEW INQUIRIES PROVED HOWEVER TO BE A MORE LENGTHY PROCEEDING THAN HOLMES HAD IMAGINED FOR HE DID NOT RETURN TO THE INN UNTIL NEARLY NINE O'CLOCK + HE WAS PALE AND DEJECTED STAINED WITH DUST AND EXHAUSTED WITH HUNGER AND FATIGUE + A COLD SUPPER WAS READY UPON THE TABLE AND WHEN HIS NEEDS WERE SATISFIED AND HIS PIPE ALIGHT HE WAS READY TO TAKE THAT HALF COMIC AND WHOLLY PHILOSOPHIC VIEW WHICH WAS NATURAL TO HIM WHEN HIS AFFAIRS WERE GOING AWRY + THE SOUND OF CARRIAGE WHEELS CAUSED HIM TO RISE AND GLANCE OUT OF THE WINDOW + A BROUGHAM AND PAIR OF GRAYS UNDER THE GLARE OF A GAS LAMP STOOD BEFORE THE DOCTOR'S DOOR + IT'S BEEN OUT THREE HOURS SAID HOLMES STARTED AT HALF PAST SIX AND HERE IT IS BACK AGAIN + THAT GIVES A RADIUS OF TEN OR TWELVE MILES AND HE DOES IT ONCE OR SOMETIMES TWICE A DAY QUOTE + NO UNUSUAL THING FOR A DOCTOR IN PRACTICE + BUT ARMSTRONG IS NOT REALLY A DOCTOR IN PRACTICE + HE IS A LECTURER AND A CONSULTANT BUT HE DOES NOT CARE FOR GENERAL PRACTICE WHICH DISTRACTS HIM FROM HIS LITERARY WORK + WHY THEN DOES HE MAKE THESE LONG JOURNEYS WHICH MUST BE EXCEEDINGLY IRKSOME TO HIM AND WHO IS IT THAT HE VISITS + MY DEAR WATSON CAN YOU DOUBT THAT IT WAS TO HIM THAT I FIRST APPLIED + I DO NOT KNOW WHETHER IT CAME FROM HIS OWN INNATE DEPRAVITY OR FROM THE PROMPTINGS OF HIS MASTER BUT HE WAS RUDE ENOUGH TO SET A DOG AT ME + NEITHER DOG NOR MAN LIKED THE LOOK OF MY STICK HOWEVER AND THE MATTER FELL THROUGH + RELATIONS WERE STRAINED AFTER THAT AND FURTHER INQUIRIES OUT OF THE QUESTION + ALL THAT I HAVE LEARNED I GOT FROM A FRIENDLY NATIVE IN THE YARD OF OUR OWN INN + IT WAS HE WHO TOLD ME OF THE DOCTOR'S HABITS AND OF HIS DAILY JOURNEY + AT THAT INSTANT TO GIVE POINT TO HIS WORDS THE CARRIAGE CAME ROUND TO THE DOOR + QUOTE COULD YOU NOT FOLLOW IT QUOTE + EXCELLENT WATSON + YOU ARE SCINTILLATING THIS EVENING + THE IDEA DID CROSS MY MIND + THERE IS AS YOU MAY HAVE OBSERVED A BICYCLE SHOP NEXT TO OUR INN + INTO THIS I RUSHED ENGAGED A BICYCLE AND WAS ABLE TO GET STARTED BEFORE THE CARRIAGE WAS QUITE OUT OF SIGHT + I RAPIDLY OVERTOOK IT AND THEN KEEPING AT A DISCREET DISTANCE OF A HUNDRED YARDS OR SO L. FOLLOWED ITS LIGHTS UNTIL WE WERE CLEAR OF THE TOWN + WE HAD GOT WELL OUT ON THE COUNTRY ROAD WHEN A SOMEWHAT MORTIFYING INCIDENT OCCURRED + THE CARRIAGE STOPPED THE DOCTOR ALIGHTED WALKED SWIFTLY BACK TO WHERE I HAD ALSO HALTED AND TOLD ME IN AN EXCELLENT SARDONIC FASHION THAT HE FEARED THE ROAD WAS NARROW AND THAT HE HOPED HIS CARRIAGE DID NOT IMPEDE THE PASSAGE OF MY BICYCLE + NOTHING COULD HAVE BEEN MORE ADMIRABLE THAN HIS WAY OF PUTTING IT + I AT ONCE RODE PAST THE CARRIAGE AND KEEPING TO THE MAIN ROAD I WENT ON FOR A FEW MILES AND THEN HALTED IN A CONVENIENT PLACE TO SEE IF THE CARRIAGE PASSED + THERE WAS NO SIGN OF IT HOWEVER AND SO IT BECAME EVIDENT THAT IT HAD TURNED DOWN ONE OF SEVERAL SIDE ROADS WHICH I HAD OBSERVED + I RODE BACK BUT AGAIN SAW NOTHING OF THE CARRIAGE AND NOW AS YOU PERCEIVE IT HAS RETURNED AFTER ME + OF COURSE I HAD AT THE OUTSET NO PARTICULAR REASON TO CONNECT THESE JOURNEYS WITH THE DISAPPEARANCE OF GODFREY STAUNTON AND WAS ONLY INCLINED TO INVESTIGATE THEM ON THE GENERAL GROUNDS THAT EVERYTHING WHICH CONCERNS DOCTOR ARMSTRONG IS AT PRESENT OF INTEREST TO US BUT NOW THAT I FIND HE KEEPS SO KEEN A LOOK OUT UPON ANYONE WHO MAY FOLLOW HIM ON THESE EXCURSIONS THE AFFAIR APPEARS MORE IMPORTANT AND I SHALL NOT BE SATISFIED UNTIL I HAVE MADE THE MATTER CLEAR + WE CAN FOLLOW HIM TOMORROW + CAN WE + IT IS NOT SO EASY AS YOU SEEM TO THINK + YOU ARE NOT FAMILIAR WITH CAMBRIDGESHIRE SCENERY ARE YOU + IT DOES NOT LEND ITSELF TO CONCEALMENT + ALL THIS COUNTRY THAT I PASSED OVER TO NIGHT IS AS FLAT AND CLEAN AS THE PALM OF YOUR HAND AND THE MAN WE ARE FOLLOWING IS NO FOOL AS HE VERY CLEARLY SHOWED TO NIGHT + I HAVE WIRED TO OVERTON TO LET US KNOW ANY FRESH LONDON DEVELOPMENTS AT THIS ADDRESS AND IN THE MEANTIME WE CAN ONLY CONCENTRATE OUR ATTENTION UPON DOCTOR ARMSTRONG WHOSE NAME THE OBLIGING YOUNG LADY AT THE OFFICE ALLOWED ME TO READ UPON THE COUNTERFOIL OF STAUNTON'S URGENT MESSAGE + HE KNOWS WHERE THE YOUNG MAN IS TO THAT I'LL SWEAR AND IF HE KNOWS THEN IT MUST BE OUR OWN FAULT IF WE CANNOT MANAGE TO KNOW ALSO + AT PRESENT IT MUST BE ADMITTED THAT THE ODD TRICK IS IN HIS POSSESSION AND AS YOU ARE AWARE WATSON IT IS NOT MY HABIT TO LEAVE THE GAME IN THAT CONDITION + AND YET THE NEXT DAY BROUGHT US NO NEARER TO THE SOLUTION OF THE MYSTERY + A NOTE WAS HANDED IN AFTER BREAKFAST WHICH HOLMES PASSED ACROSS TO ME WITH A SMILE + SIR IT RAN I CAN ASSURE YOU THAT YOU ARE WASTING YOUR TIME IN DOGGING MY MOVEMENTS + I HAVE AS YOU DISCOVERED LAST NIGHT A WINDOW AT THE BACK OF MY BROUGHAM AND IF YOU DESIRE A TWENTY MILE RIDE WHICH WILL LEAD YOU TO THE SPOT FROM WHICH YOU STARTED YOU HAVE ONLY TO FOLLOW ME + MEANWHILE I CAN INFORM YOU THAT NO SPYING UPON ME CAN IN ANY WAY HELP MR. GODFREY STAUNTON AND I AM CONVINCED THAT THE BEST SERVICE YOU CAN DO TO THAT GENTLEMAN IS TO RETURN AT ONCE TO LONDON AND TO REPORT TO YOUR EMPLOYER THAT YOU ARE UNABLE TO TRACE HIM + YOUR TIME IN CAMBRIDGE WILL CERTAINLY BE WASTED + YOURS FAITHFULLY LESLIE ARMSTRONG + QUOTE AN OUTSPOKEN HONEST ANTAGONIST IS THE DOCTOR QUOTE SAID HOLMES + WELL WELL HE EXCITES MY CURIOSITY AND I MUST REALLY KNOW BEFORE I LEAVE HIM + HIS CARRIAGE IS AT HIS DOOR NOW SAID I. THERE HE IS STEPPING INTO IT + I SAW HIM GLANCE UP AT OUR WINDOW AS HE DID SO + SUPPOSE I TRY MY LUCK UPON THE BICYCLE + NO NO MY DEAR WATSON + WITH ALL RESPECT FOR YOUR NATURAL ACUMEN I DO NOT THINK THAT YOU ARE QUITE A MATCH FOR THE WORTHY DOCTOR + I THINK THAT POSSIBLY I CAN ATTAIN OUR END BY SOME INDEPENDENT EXPLORATIONS OF MY OWN + I AM AFRAID THAT I MUST LEAVE YOU TO YOUR OWN DEVICES AS THE APPEARANCE OF TWO INQUIRING STRANGERS UPON A SLEEPY COUNTRYSIDE MIGHT EXCITE MORE GOSSIP THAN I CARE FOR + NO DOUBT YOU WILL FIND SOME SIGHTS TO AMUSE YOU IN THIS VENERABLE CITY AND I HOPE TO BRING BACK A MORE FAVOURABLE REPORT TO YOU BEFORE EVENING + ONCE MORE HOWEVER MY FRIEND WAS DESTINED TO BE DISAPPOINTED + HE CAME BACK AT NIGHT WEARY AND UNSUCCESSFUL + QUOTE I HAVE HAD A BLANK DAY WATSON + HAVING GOT THE DOCTOR'S GENERAL DIRECTION I SPENT THE DAY IN VISITING ALL THE VILLAGES UPON THAT SIDE OF CAMBRIDGE AND COMPARING NOTES WITH PUBLICANS AND OTHER LOCAL NEWS AGENCIES + I HAVE COVERED SOME GROUND + CHESTERTON HISTON WATERBEACH AND OAKINGTON HAVE EACH BEEN EXPLORED AND HAVE EACH PROVED DISAPPOINTING + THE DAILY APPEARANCE OF A BROUGHAM AND PAIR COULD HARDLY HAVE BEEN OVERLOOKED IN SUCH SLEEPY HOLLOWS + THE DOCTOR HAS SCORED ONCE MORE + IS THERE A TELEGRAM FOR ME + YES I OPENED IT + HERE IT IS ASK FOR POMPEY FROM JEREMY DIXON TRINITY COLLEGE + I DON'T UNDERSTAND IT + OH IT IS CLEAR ENOUGH + IT IS FROM OUR FRIEND OVERTON AND IS IN ANSWER TO A QUESTION FROM ME + I'LL JUST SEND ROUND A NOTE TO MR. JEREMY DIXON AND THEN I HAVE NO DOUBT THAT OUR LUCK WILL TURN + BY THE WAY IS THERE ANY NEWS OF THE MATCH QUOTE + YES THE LOCAL EVENING PAPER HAS AN EXCELLENT ACCOUNT IN ITS LAST EDITION + OXFORD WON BY A GOAL AND TWO TRIES + THE LAST SENTENCES OF THE DESCRIPTION SAY THE DEFEAT OF THE LIGHT BLUES MAY BE ENTIRELY ATTRIBUTED TO THE UNFORTUNATE ABSENCE OF THE CRACK INTERNATIONAL GOD FREY STAUNTON WHOSE WANT WAS FELT AT EVERY INSTANT OF THE GAME + THE LACK OF COMBINATION IN THE THREE QUARTER LINE AND THEIR WEAKNESS BOTH IN ATTACK AND DEFENCE MORE THAN NEUTRAL IZED THE EFFORTS OF A HEAVY AND HARD WORKING PACK + THEN OUR FRIEND OVERTON'S FOREBODINGS HAVE BEEN JUSTIFIED SAID HOLMES + PERSONALLY I AM IN AGREEMENT WITH DOCTOR ARMSTRONG AND FOOTBALL DOES NOT COME WITHIN MY HORIZON + EARLY TO BED TO NIGHT WATSON FOR I FORESEE THAT TO MORROW MAY BE AN EVENTFUL DAY QUOTE + I WAS HORRIFIED BY MY FIRST GLIMPSE OF HOLMES NEXT MORNING FOR HE SAT BY THE FIRE HOLDING HIS TINY HYPODERMIC SYRINGE + I ASSOCIATED THAT INSTRUMENT WITH THE SINGLE WEAKNESS OF HIS NATURE AND I FEARED THE WORST WHEN I SAW IT GLITTERING IN HIS HAND + HE LAUGHED AT MY EXPRESSION OF DISMAY AND LAID IT UPON THE TABLE + NO NO MY DEAR FELLOW THERE IS NO CAUSE FOR ALARM + IT IS NOT UPON THIS OCCASION THE INSTRUMENT OF EVIL BUT IT WILL RATHER PROVE TO BE THE KEY WHICH WILL UNLOCK OUR MYSTERY + ON THIS SYRINGE I BASE ALL MY HOPES + I HAVE JUST RETURNED FROM A SMALL SCOUTING EXPEDITION AND EVERYTHING IS FAVOURABLE + EAT A GOOD BREAKFAST WATSON FOR I PROPOSE TO GET UPON DOCTOR ARMSTRONG'S TRAIL TO DAY AND ONCE ON IT I WILL NOT STOP FOR REST OR FOOD UNTIL I RUN HIM TO HIS BURROW + IN THAT CASE SAID I WE HAD BEST CARRY OUR BREAKFAST WITH US FOR HE IS MAKING AN EARLY START + HIS CARRIAGE IS AT THE DOOR + NEVER MIND + LET HIM GO + HE WILL BE CLEVER IF HE CAN DRIVE WHERE I CANNOT FOLLOW HIM + WHEN YOU HAVE FINISHED COME DOWNSTAIRS WITH ME AND I WILL INTRODUCE YOU TO A DETECTIVE WHO IS A VERY EMINENT SPECIALIST IN THE WORK THAT LIES BEFORE US QUOTE + WHEN WE DESCENDED I FOLLOWED HOLMES INTO THE STABLE YARD WHERE HE OPENED THE DOOR OF A LOOSE BOX AND LED OUT A SQUAT LOP EARED WHITE AND TAN DOG SOMETHING BETWEEN A BEAGLE AND A FOXHOUND + LET ME INTRODUCE YOU TO POMPEY SAID HE + POMPEY IS THE PRIDE OF THE LOCAL DRAGHOUNDS NO VERY GREAT FLIER AS HIS BUILD WILL SHOW BUT A STAUNCH HOUND ON A SCENT + WELL POMPEY YOU MAY NOT BE FAST BUT I EXPECT YOU WILL BE TOO FAST FOR A COUPLE OF MIDDLE AGED LONDON GENTLEMEN SO I WILL TAKE THE LIBERTY OF FASTENING THIS LEATHER LEASH TO YOUR COLLAR + NOW BOY COME ALONG AND SHOW WHAT YOU CAN DO + HE LED HIM ACROSS TO THE DOCTOR'S DOOR + THE DOG SNIFFED ROUND FOR AN INSTANT AND THEN WITH A SHRILL WHINE OF EXCITEMENT STARTED OFF DOWN THE STREET TUGGING AT HIS LEASH IN HIS EFFORTS TO GO FASTER + IN HALF AN HOUR WE WERE CLEAR OF THE TOWN AND HASTENING DOWN A COUNTRY ROAD + WHAT HAVE YOU DONE HOLMES + I ASKED + A THREADBARE AND VENERABLE DEVICE BUT USEFUL UPON OCCASION + I WALKED INTO THE DOCTOR'S YARD THIS MORNING AND SHOT MY SYRINGE FULL OF ANISEED OVER THE HIND WHEEL + A DRAGHOUND WILL FOLLOW ANISEED FROM HERE TO JOHN O' GROAT'S AND OUR FRIEND ARMSTRONG WOULD HAVE TO DRIVE THROUGH THE CAM BEFORE HE WOULD SHAKE POMPEY OFF HIS TRAIL + OH THE CUNNING RASCAL + THIS IS HOW HE GAVE ME THE SLIP THE OTHER NIGHT QUOTE + THE DOG HAD SUDDENLY TURNED OUT OF THE MAIN ROAD INTO A GRASS GROWN LANE + HALF A MILE FARTHER THIS OPENED INTO ANOTHER BROAD ROAD AND THE TRAIL TURNED HARD TO THE RIGHT IN THE DIRECTION OF THE TOWN WHICH WE HAD JUST QUITTED + THE ROAD TOOK A SWEEP TO THE SOUTH OF THE TOWN AND CONTINUED IN THE OPPOSITE DIRECTION TO THAT IN WHICH WE STARTED + THIS DETOUR HAS BEEN ENTIRELY FOR OUR BENEFIT THEN SAID HOLMES + NO WONDER THAT MY INQUIRIES AMONG THOSE VILLAGERS LED TO NOTHING + THE DOCTOR HAS CERTAINLY PLAYED THE GAME FOR ALL IT IS WORTH AND ONE WOULD LIKE TO KNOW THE REASON FOR SUCH ELABORATE DECEPTION + THIS SHOULD BE THE VILLAGE OF TRUMPINGTON TO THE RIGHT OF US + AND BY JOVE HERE IS THE BROUGHAM COMING ROUND THE CORNER + QUICK WATSON QUICK OR WE ARE DONE + HE SPRANG THROUGH A GATE INTO A FIELD DRAGGING THE RELUCTANT POMPEY AFTER HIM + WE HAD HARDLY GOT UNDER THE SHELTER OF THE HEDGE WHEN THE CARRIAGE RATTLED PAST + I CAUGHT A GLIMPSE OF DOCTOR ARMSTRONG WITHIN HIS SHOULDERS BOWED HIS HEAD SUNK ON HIS HANDS THE VERY IMAGE OF DISTRESS + I COULD TELL BY MY COMPANION'S GRAVER FACE THAT HE ALSO HAD SEEN + I FEAR THERE IS SOME DARK ENDING TO OUR QUEST SAID HE + IT CANNOT BE LONG BEFORE WE KNOW IT + COME POMPEY + AH IT IS THE COTTAGE IN THE FIELD QUOTE + THERE COULD BE NO DOUBT THAT WE HAD REACHED THE END OF OUR JOURNEY + POMPEY RAN ABOUT AND WHINED EAGERLY OUTSIDE THE GATE WHERE THE MARKS OF THE BROUGHAM'S WHEELS WERE STILL TO BE SEEN + A FOOTPATH LED ACROSS TO THE LONELY COTTAGE + HOLMES TIED THE DOG TO THE HEDGE AND WE HASTENED ONWARD + MY FRIEND KNOCKED AT THE LITTLE RUSTIC DOOR AND KNOCKED AGAIN WITHOUT RESPONSE + AND YET THE COTTAGE WAS NOT DESERTED FOR A LOW SOUND CAME TO OUR EARS A KIND OF DRONE OF MISERY AND DESPAIR WHICH WAS INDESCRIBABLY MELANCHOLY + HOLMES PAUSED IRRESOLUTE AND THEN HE GLANCED BACK AT THE ROAD WHICH HE HAD JUST TRAVERSED + A BROUGHAM WAS COMING DOWN IT AND THERE COULD BE NO MISTAKING THOSE GRAY HORSES + BY JOVE THE DOCTOR IS COMING BACK CRIED HOLMES + THAT SETTLES IT + WE ARE BOUND TO SEE WHAT IT MEANS BEFORE HE COMES + HE OPENED THE DOOR AND WE STEPPED INTO THE HALL + THE DRONING SOUND SWELLED LOUDER UPON OUR EARS UNTIL IT BECAME ONE LONG DEEP WAIL OF DISTRESS + IT CAME FROM UPSTAIRS + HOLMES DARTED UP AND I FOLLOWED HIM + HE PUSHED OPEN A HALF CLOSED DOOR AND WE BOTH STOOD APPALLED AT THE SIGHT BEFORE US + A WOMAN YOUNG AND BEAUTIFUL WAS LYING DEAD UPON THE BED + HER CALM PALE FACE WITH DIM WIDE OPENED BLUE EYES LOOKED UPWARD FROM AMID A GREAT TANGLE OF GOLDEN HAIR + AT THE FOOT OF THE BED HALF SITTING HALF KNEELING HIS FACE BURIED IN THE CLOTHES WAS A YOUNG MAN WHOSE FRAME WAS RACKED BY HIS SOBS + SO ABSORBED WAS HE BY HIS BITTER GRIEF THAT HE NEVER LOOKED UP UNTIL HOLMES'S HAND WAS ON HIS SHOULDER + ARE YOU MR. GODFREY STAUNTON + YES YES I AM BUT YOU ARE TOO LATE + SHE IS DEAD QUOTE + THE MAN WAS SO DAZED THAT HE COULD NOT BE MADE TO UNDERSTAND THAT WE WERE ANYTHING BUT DOCTORS WHO HAD BEEN SENT TO HIS ASSISTANCE + HOLMES WAS ENDEAVOURING TO UTTER A FEW WORDS OF CONSOLATION AND TO EXPLAIN THE ALARM WHICH HAD BEEN CAUSED TO HIS FRIENDS BY HIS SUDDEN DISAPPEARANCE WHEN THERE WAS A STEP UPON THE STAIRS AND THERE WAS THE HEAVY STERN QUESTIONING FACE OF DOCTOR ARMSTRONG AT THE DOOR + SO GENTLEMEN SAID HE YOU HAVE ATTAINED YOUR END AND HAVE CERTAINLY CHOSEN A PARTICULARLY DELICATE MOMENT FOR YOUR INTRUSION + I WOULD NOT BRAWL IN THE PRESENCE OF DEATH BUT I CAN ASSURE YOU THAT IF I WERE A YOUNGER MAN YOUR MONSTROUS CONDUCT WOULD NOT PASS WITH IMPUNITY + EXCUSE ME DOCTOR ARMSTRONG I THINK WE ARE A LITTLE AT CROSSPURPOSES SAID MY FRIEND WITH DIGNITY + IF YOU COULD STEP DOWNSTAIRS WITH US WE MAY EACH BE ABLE TO GIVE SOME LIGHT TO THE OTHER UPON THIS MISERABLE AFFAIR + A MINUTE LATER THE GRIM DOCTOR AND OURSELVES WERE IN THE SITTING ROOM BELOW + WELL SIR SAID HE + QUOTE I WISH YOU TO UNDERSTAND IN THE FIRST PLACE THAT I AM NOT EMPLOYED BY LORD MOUNT JAMES AND THAT MY SYMPATHIES IN THIS MATTER ARE ENTIRELY AGAINST THAT NOBLEMAN + WHEN A MAN IS LOST IT IS MY DUTY TO ASCERTAIN HIS FATE BUT HAVING DONE SO THE MATTER ENDS SO FAR AS I AM CONCERNED AND SO LONG AS THERE IS NOTHING CRIMINAL I AM MUCH MORE ANXIOUS TO HUSH UP PRIVATE SCANDALS THAN TO GIVE THEM PUBLICITY + IF AS I IMAGINE THERE IS NO BREACH OF THE LAW IN THIS MATTER YOU CAN ABSOLUTELY DEPEND UPON MY DISCRETION AND MY COOPERATION IN KEEPING THE FACTS OUT OF THE PAPERS + DOCTOR ARMSTRONG TOOK A QUICK STEP FORWARD AND WRUNG HOLMES BY THE HAND + YOU ARE A GOOD FELLOW SAID HE + I HAD MISJUDGED YOU + I THANK HEAVEN THAT MY COMPUNCTION AT LEAVING POOR STAUNTON ALL ALONE IN THIS PLIGHT CAUSED ME TO TURN MY CARRIAGE BACK AND SO TO MAKE YOUR ACQUAINTANCE + KNOWING AS MUCH AS YOU DO THE SITUATION IS VERY EASILY EXPLAINED + A YEAR AGO GODFREY STAUNTON LODGED IN LONDON FOR A TIME AND BECAME PASSIONATELY ATTACHED TO HIS LANDLADY'S DAUGHTER WHOM HE MARRIED + SHE WAS AS GOOD AS SHE WAS BEAUTIFUL AND AS INTELLIGENT AS SHE WAS GOOD + NO MAN NEED BE ASHAMED OF SUCH A WIFE + BUT GODFREY WAS THE HEIR TO THIS CRABBED OLD NOBLEMAN AND IT WAS QUITE CERTAIN THAT THE NEWS OF HIS MARRIAGE WOULD HAVE BEEN THE END OF HIS INHERITANCE + I KNEW THE LAD WELL AND I LOVED HIM FOR HIS MANY EXCELLENT QUALITIES + I DID ALL I COULD TO HELP HIM TO KEEP THINGS STRAIGHT + WE DID OUR VERY BEST TO KEEP THE THING FROM EVERYONE FOR WHEN ONCE SUCH A WHISPER GETS ABOUT IT IS NOT LONG BEFORE EVERYONE HAS HEARD IT + THANKS TO THIS LONELY COTTAGE AND HIS OWN DISCRETION GODFREY HAS UP TO NOW SUCCEEDED + THEIR SECRET WAS KNOWN TO NO ONE SAVE TO ME AND TO ONE EXCELLENT SERVANT WHO HAS AT PRESENT GONE FOR ASSISTANCE TO TRUMPINGTON + BUT AT LAST THERE CAME A TERRIBLE BLOW IN THE SHAPE OF DANGEROUS ILLNESS TO HIS WIFE + IT WAS CONSUMPTION OF THE MOST VIRULENT KIND + THE POOR BOY WAS HALF CRAZED WITH GRIEF AND YET HE HAD TO GO TO LONDON TO PLAY THIS MATCH FOR HE COULD NOT GET OUT OF IT WITHOUT EXPLANATIONS WHICH WOULD EXPOSE HIS SECRET + I TRIED TO CHEER HIM UP BY WIRE AND HE SENT ME ONE IN REPLY IMPLORING ME TO DO ALL I COULD + THIS WAS THE TELEGRAM WHICH YOU APPEAR IN SOME INEXPLICABLE WAY TO HAVE SEEN + I DID NOT TELL HIM HOW URGENT THE DANGER WAS FOR I KNEW THAT HE COULD DO NO GOOD HERE BUT I SENT THE TRUTH TO THE GIRL'S FATHER AND HE VERY INJUDICIOUSLY COMMUNICATED IT TO GODFREY + THE RESULT WAS THAT HE CAME STRAIGHT AWAY IN A STATE BORDERING ON FRENZY AND HAS REMAINED IN THE SAME STATE KNEELING AT THE END OF HER BED UNTIL THIS MORNING DEATH PUT AN END TO HER SUFFERINGS + THAT IS ALL MR. HOLMES AND I AM SURE THAT I CAN RELY UPON YOUR DISCRETION AND THAT OF YOUR FRIEND + HOLMES GRASPED THE DOCTOR'S HAND + COME WATSON SAID HE AND WE PASSED FROM THAT HOUSE OF GRIEF INTO THE PALE SUNLIGHT OF THE WINTER DAY diff --git a/samples/LMTutorial/train/musgrave_ritual.txt b/samples/LMTutorial/train/musgrave_ritual.txt new file mode 100755 index 0000000..74b7dc3 --- /dev/null +++ b/samples/LMTutorial/train/musgrave_ritual.txt @@ -0,0 +1,396 @@ + AN ANOMALY WHICH OFTEN STRUCK ME IN THE CHARACTER OF MY FRIEND SHERLOCK HOLMES WAS THAT ALTHOUGH IN HIS METHODS OF THOUGHT HE WAS THE NEATEST AND MOST METHODICAL OF MANKIND AND ALTHOUGH ALSO HE AFFECTED A CERTAIN QUIET PRIMNESS OF DRESS HE WAS NONE THE LESS IN HIS PERSONAL HABITS ONE OF THE MOST UNTIDY MEN THAT EVER DROVE A FELLOW LODGER TO DISTRACTION + NOT THAT I AM IN THE LEAST CONVENTIONAL IN THAT RESPECT MYSELF + THE ROUGH AND TUMBLE WORK IN AFGHANISTAN COMING ON THE TOP OF NATURAL BOHEMIANISM OF DISPOSITION HAS MADE ME RATHER MORE LAX THAN BEFITS A MEDICAL MAN + BUT WITH ME THERE IS A LIMIT AND WHEN I FIND A MAN WHO KEEPS HIS CIGARS IN THE COAL SCUTTLE HIS TOBACCO IN THE TOE END OF A PERSIAN SLIPPER AND HIS UNANSWERED CORRESPONDENCE TRANSFIXED BY A JACK KNIFE INTO THE VERY CENTRE OF HIS WOODEN MANTELPIECE THEN I BEGIN TO GIVE MYSELF VIRTUOUS AIRS + I HAVE ALWAYS HELD TOO THAT PISTOL PRACTICE SHOULD BE DISTINCTLY AN OPEN AIR PASTIME AND WHEN HOLMES IN ONE OF HIS QUEER HUMOURS WOULD SIT IN AN ARMCHAIR WITH HIS HAIR TRIGGER AND A HUNDRED BOXER CARTRIDGES AND PROCEED TO ADORN THE OPPOSITE WALL WITH A PATNOTIC V. R. DONE IN BULLET POCKS I FELT STRONGLY THAT NEITHER THE ATMOSPHERE NOR THE APPEARANCE OF OUR ROOM WAS IMPROVED BY IT + OUR CHAMBERS WERE ALWAYS FULL OF CHEMICALS AND OF CRIMINAL RELICS WHICH HAD A WAY OF WANDERING INTO UNLIKELY POSITIONS AND OF TURNING UP IN THE BUTTER DISH OR IN EVEN LESS DESIRABLE PLACES + BUT HIS PAPERS WERE MY GREAT CRUX + HE HAD A HORROR OF DESTROYING DOCUMENTS ESPECIALLY THOSE WHICH WERE CONNECTED WITH HIS PAST CASES AND YET IT WAS ONLY ONCE IN EVERY YEAR OR TWO THAT HE WOULD MUSTER ENERGY TO DOCKET AND ARRANGE THEM FOR AS I HAVE MENTIONED SOMEWHERE IN THESE INCOHERENT MEMOIRS TBE OUTBURSTS OF PASSIONATE ENERGY WHEN HE PERFORMED THE REMARKABLE FEATS WITH WHICH HIS NAME IS ASSOCIATED WERE FOLLOWED BY REACTIONS OF LETHARGY DURING WHICH HE WOULD LIE ABOUT WITH HIS VIOLIN AND HIS BOOKS HARDLY MOVING SAVE FROM THE SOFA TO THE TABLE + THUS MONTH AFTER MONTH HIS PAPERS ACCUMULATED UNTIL EVERY CORNER OF THE ROOM WAS STACKED WITH BUNDLES OF MANUSCRIPT WHICH WERE ON NO ACCOUNT TO BE BURNED AND WHICH COULD NOT BE PUT AWAY SAVE BY THEIR OWNER + ONE WINTER'S NIGHT AS WE SAT TOGETHER BY THE FIRE I VENTURED TO SUGGEST TO HIM THAT AS HE HAD FINISHED PASTING EXTRACTS INTO HIS COMMONPLACE BOOK HE MIGHT EMPLOY THE NEXT TWO HOURS IN MAKING OUR ROOM A LITTLE MORE HABITABLE + HE COULD NOT DENY THE JUSTICE OF MY REQUEST SO WITH A RATHER RUEFUL FACE HE WENT OFF TO HIS BEDROOM FROM WHICH HE RETURNED PRESENTLY PULLING A LARGE TIN BOX BEHIND HIM + THIS HE PLACED IN THE MIDDLE OF THE FLOOR AND SQUATTING DOWN UPON A STOOL IN FRONT OF IT HE THREW BACK THE LID + I COULD SEE THAT IT WAS ALREADY A THIRD FULL OF BUNDLES OF PAPER TIED UP WITH RED TAPE INTO SEPARATE PACKAGES + QUOTE THERE ARE CASES ENOUGH HERE WATSON QUOTE SAID HE LOOKING AT ME WITH MISCHIEVOUS EYES + I THINK THAT IF YOU KNEW ALL THAT I HAD IN THIS BOX YOU WOULD ASK ME TO PULL SOME OUT INSTEAD OF PUTTING OTHERS IN + THESE ARE THE RECORDS OF YOUR EARLY WORK THEN + I ASKED + I HAVE OFTEN WISHED THAT I HAD NOTES OF THOSE CASES + YES MY BOY THESE WERE ALL DONE PREMATURELY BEFORE MY BIOGRAPHER HAD COME TO GLORIFY ME + HE LIFTED BUNDLE AFTER BUNDLE IN A TENDER CARESSING SORT OF WAY + THEY ARE NOT ALL SUCCESSES WATSON SAID HE + QUOTE BUT THERE ARE SOME PRETTY LITTLE PROBLEMS AMONG THEM + HERE'S THE RECORD OF THE TARLETON MURDERS AND THE CASE OF VAMBERRY THE WINE MERCHANT AND THE ADVENTURE OF THE OLD RUSSIAN WOMAN AND THE SINGULAR AFFAIR OF THE ALUMINUM CRUTCH AS WELL AS A FULL ACCOUNT OF RICOLETTI OF THE CLUB FOOT AND HIS ABOMINABLE WIFE + AND HERE AH. NOW. THIS REALLY IS SOMETHING A LITTLE RECHERCHE + HE DIVED HIS ARM DOWN TO THE BOTTOM OF THE CHEST AND BROUGHT UP A SMALL WOODEN BOX WITH A SLIDING LID SUCH AS CHILDREN'S TOYS ARE KEPT IN + FROM WITHIN HE PRODUCED A CRUMPLED PIECE OF PAPER AN OLD FASHIONED BRASS KEY A PEG OF WOOD WITH A BALL OF STRING ATTACHED TO IT AND THREE RUSTY OLD DISCS OF METAL + WELL MY BOY WHAT DO YOU MAKE OF THIS LOT HE ASKED SMILING AT MY EXPRESSION + IT IS A CURIOUS COLLECTION + VERY CURIOUS AND THE STORY THAT HANGS ROUND IT WILL STRIKE YOU AS BEING MORE CURIOUS STILL + THESE RELICS HAVE A HISTORY THEN + QUOTE SO MUCH SO THAT THEY ARE HISTORY QUOTE + WHAT DO YOU MEAN BY THAT + SHERLOCK HOLMES PICKED THEM UP ONE BY ONE AND LAID THEM ALONG THE EDGE OF THE TABLE + THEN HE RESEATED HIMSELF IN HIS CHAIR AND LOOKED THEM OVER WITH A GLEAM OF SATISFACTION IN HIS EYES + THESE SAID HE ARE ALL THAT I HAVE LEFT TO REMIND ME OF THE ADVENTURE OF THE MUSGRAVE RITUAL + I HAD HEARD HIM MENTION THE CASE MORE THAN ONCE THOUGH I HAD NEVER BEEN ABLE TO GATHER THE DETAILS + I SHOULD BE SO GLAD SAID I IF YOU WOULD GIVE ME AN ACCOUNT OF IT + AND LEAVE THE LITTER AS IT IS HE CRIED MISCHIEVOUSLY + YOUR TIDINESS WON'T BEAR MUCH STRAIN AFTER ALL WATSON + BUT I SHOULD BE GLAD THAT YOU SHOULD ADD THIS CASE TO YOUR ANNALS FOR THERE ARE POINTS IN IT WHICH MAKE IT QUITE UNIQUE IN THE CRIMINAL RECORDS OF THIS OR I BELIEVE OF ANY OTHER COUNTRY + A COLLECTION OF MY TRIFLING ACHIEVEMENTS WOULD CERTAINLY BE INCOMPLETE WHICH CONTAINED NO ACCOUNT OF THIS VERY SINGULAR BUSINESS + QUOTE YOU MAY REMEMBER HOW THE AFFAIR OF THE GLORIA SCOTT AND MY CONVERSATION WITH THE UNHAPPY MAN WHOSE FATE I TOLD YOU OF FIRST TURNED MY ATTENTION IN THE DIRECTION OF THE PROFESSION WHICH HAS BECOME MY LIFE'S WORK + YOU SEE ME NOW WHEN MY NAME HAS BECOME KNOWN FAR AND WIDE AND WHEN I AM GENERALLY RECOGNIZED BOTH BY THE PUBLIC AND BY THE OFFICIAL FORCE AS BEING A FINAL COURT OF APPEAL IN DOUBTFUL CASES + EVEN WHEN YOU KNEW ME FIRST AT THE TIME OF THE AFFAIR WHICH YOU HAVE COMMEMORATED IN A STUDY IN SCARLET I HAD ALREADY ESTABLISHED A CONSIDERABLE THOUGH NOT A VERY LUCRATIVE CONNECTION + YOU CAN HARDLY REALIZE THEN HOW DIFFICULT I FOUND IT AT FIRST AND HOW LONG I HAD TO WAIT BEFORE I SUCCEEDED IN MAKING ANY HEADWAY + WHEN I FIRST CAME UP TO LONDON I HAD ROOMS IN MONTAGUE STREET JUST ROUND THE CORNER FROM THE BRITISH MUSEUM AND THERE I WAITED FILLING IN MY TOO ABUNDANT LEISURE TIME BV STUDYING ALL THOSE BRANCHES OF SCIENCE WHICH MIGHT MAKE ME MORE EFFICIENT + NOW AND AGAIN CASES CAME IN MY WAY PRINCIPALLY THROUGH THE INTRODUCTION OF OLD FELLOW STUDENTS FOR DURING MY LAST YEARS AT THE UNIVERSITY THERE WAS A GOOD DEAL OF TALK THERE ABOUT MYSELF AND MY METHODS + THE THIRD OF THESE CASES WAS THAT OF THE MUSGRAVE RITUAL AND IT IS TO THE INTEREST WHICH WAS AROUSED BY THAT SINGULAR CHAIN OF EVENTS AND THE LARGE ISSUES WHICH PROVED TO BE AT STAKE THAT I TRACE MY FIRST STRIDE TOWARDS THE POSITION WHICH I NOW HOLD + REGINALD MUSGRAVE HAD BEEN IN THE SAME COLLEGE AS MYSELF AND I HAD SOME SLIGHT ACQUAINTANCE WITH HIM + HE WAS NOT GENERALLY POPULAR AMONG THE UNDERGRADUATES THOUGH IT ALWAYS SEEMED TO ME THAT WHAT WAS SET DOWN AS PRIDE WAS REALLY AN ATTEMPT TO COVER EXTREME NATURAL DIFFIDENCE + IN APPEARANCE HE WAS A MAN OF AN EXCEEDINGLY ARISTOCRATIC TYPE THIN HIGH NOSED AND LARGE EYED WITH LANGUID AND YET COURTLY MANNERS + HE WAS INDEED A SCION OF ONE OF THE VERY OLDEST FAMILIES IN THE KINGDOM THOUGH HIS BRANCH WAS A CADET ONE WHICH HAD SEPARATED FROM THE NORTHERN MUSGRAVES SOME TIME IN THE SIXTEENTH CENTURY AND HAD ESTABLISHED ITSELF IN WESTERN SUSSEX WHERE THE MANOR HOUSE OF HURLSTONE IS PERHAPS THE OLDEST INHABITED BUILDING IN THE COUNTY + SOMETHING OF HIS BIRTH PLACE SEEMED TO CLING TO THE MAN AND I NEVER LOOKED AT HIS PALE KEEN FACE OR THE POISE OF HIS HEAD WITHOUT ASSOCIATING HIM WITH GRAY ARCHWAYS AND MULLIONED WINDOWS AND ALL THE VENERABLE WRECKAGE OF A FEUDAL KEEP + ONCE OR TWICE WE DRIFTED INTO TALK AND I CAN REMEMBER THAT MORE THAN ONCE HE EXPRESSED A KEEN INTEREST IN MY METHODS OF OBSERVATION AND INFERENCE + FOR FOUR YEARS I HAD SEEN NOTHING OF HIM UNTIL ONE MORNING HE WALKED INTO MY ROOM IN MONTAGUE STREET + HE HAD CHANGED LITTLE WAS DRESSED LIKE A YOUNG MAN OF FASHION HE WAS ALWAYS A BIT OF A DANDY AND PRESERVED THE SAME QUIET SUAVE MANNER WHICH HAD FORMERLY DISTINGUISHED HIM + HOW HAS ALL GONE WITH YOU MUSGRAVE + I ASKED AFTER WE HAD CORDIALLY SHAKEN HANDS + YOU PROBABLY HEARD OF MY POOR FATHER'S DEATH SAID HE HE WAS CARRIED OFF ABOUT TWO YEARS AGO + SINCE THEN I HAVE OF COURSE HAD THE HURLSTONE ESTATE TO MANAGE AND AS I AM MEMBER FOR MY DISTRICT AS WELL MY LIFE HAS BEEN A BUSY ONE + BUT I UNDERSTAND HOLMES THAT YOU ARE TURNING TO PRACTICAL ENDS THOSE POWERS WITH WHICH YOU USED TO AMAZE US + QUOTE YES SAID I I HAVE TAKEN TO LIVING BY MY WITS + I AM DELIGHTED TO HEAR IT FOR YOUR ADVICE AT PRESENT WOULD BE EXCEEDINGLY VALUABLE TO ME + WE HAVE HAD SOME VERY STRANGE DOINGS AT HURLSTONE AND THE POLICE HAVE BEEN ABLE TO THROW NO LIGHT UPON THE MATTER + IT IS REALLY THE MOST EXTRAORDINARY AND INEXPLICABLE BUSINESS + YOU CAN IMAGINE WITH WHAT EAGERNESS I LISTENED TO HIM WATSON FOR THE VERY CHANCE FOR WHICH I HAD BEEN PANTING DURING ALL THOSE MONTHS OF INACTION SEEMED TO HAVE COME WITHIN MY REACH + IN MY INMOST HEART I BELIEVED THAT I COULD SUCCEED WHERE OTHERS FAILED AND NOW I HAD THE OPPORTUNITY TO TEST MYSELF + PRAY LET ME HAVE THE DETAILS I CRIED + REGINALD MUSGRAVE SAT DOWN OPPOSITE TO ME AND LIT THE CIGARETTE WHICH I HAD PUSHED TOWARDS HIM + YOU MUST KNOW SAID HE THAT THOUGH I AM A BACHELOR I HAVE TO KEEP UP A CONSIDERABLE STAFF OF SERVANTS AT HURLSTONE FOR IT IS A RAMBLING OLD PLACE AND TAKES A GOOD DEAL OF LOOKING AFTER + I PRESERVE TOO AND IN THE PHEASANT MONTHS I USUALLY HAVE A HOUSE PARTY SO THAT IT WOULD NOT DO TO BE SHORT HANDED + ALTOGETHER THERE ARE EIGHT MAIDS THE COOK THE BUTLER TWO FOOTMEN AND A BOY + THE GARDEN AND THE STABLES OF COURSE HAVE A SEPARATE STAFF + QUOTE OF THESE SERVANTS THE ONE WHO HAD BEEN LONGEST IN OUR SERVICE WAS BRUNTON THE BUTLER + HE WAS A YOUNG SCHOOLMASTER OUT OF PLACE WHEN HE WAS FIRST TAKEN UP BY MY FATHER BUT HE WAS A MAN OF GREAT ENERGY AND CHARACTER AND HE SOON BECAME QUITE INVALUABLE IN THE HOUSEHOLD + HE WAS A WELL GROWN HANDSOME MAN WITH A SPLENDID FOREHEAD AND THOUGH HE HAS BEEN WITH US FOR TWENTY YEARS HE CANNOT BE MORE THAN FORTY NOW + WITH HIS PERSONAL ADVANTAGES AND HIS EXTRAORDINARY GIFTS FOR HE CAN SPEAK SEVERAL LANGUAGES AND PLAY NEARLY EVERY MUSICAL INSTRUMENT IT IS WONDERFUL THAT HE SHOULD HAVE BEEN SATISFIED SO LONG IN SUCH A POSITION BUT I SUPPOSE THAT HE WAS COMFORTABLE AND LACKED ENERGY TO MAKE ANY CHANGE + THE BUTLER OF HURLSTONE IS ALWAYS A THING THAT IS REMEMBERED BY ALL WHO VISIT US + BUT THIS PARAGON HAS ONE FAULT + HE IS A BIT OF A DON JUAN AND YOU CAN IMAGINE THAT FOR A MAN LIKE HIM IT IS NOT A VERY DIFFICULT PART TO PLAY IN A QUIET COUNTRY DISTRICT + WHEN HE WAS MARRIED IT WAS ALL RIGHT BUT SINCE HE HAS BEEN A WIDOWER WE HAVE HAD NO END OF TROUBLE WITH HIM + A FEW MONTHS AGO WE WERE IN HOPES THAT HE WAS ABOUT TO SETTLE DOWN AGAIN FOR HE BECAME ENGAGED TO RACHEL HOWELLS OUR SECOND HOUSEMAID BUT HE HAS THROWN HER OVER SINCE THEN AND TAKEN UP WITH JANET TREGELLIS THE DAUGHTER OF THE HEAD GAME KEEPER + RACHEL WHO IS A VERY GOOD GIRL BUT OF AN EXCITABLE WELSH TEMPERAMENT HAD A SHARP TOUCH OF BRAIN FEVER AND GOES ABOUT THE HOUSE NOW OR DID UNTIL YESTERDAY LIKE A BLACK EYED SHADOW OF HER FORMER SELF + THAT WAS OUR FIRST DRAMA AT HURLSTONE BUT A SECOND ONE CAME TO DRIVE IT FROM OUR MINDS AND IT WAS PREFACED BY THE DISGRACE AND DISMISSAL OF BUTLER BRUNTON + THIS WAS HOW IT CAME ABOUT + I HAVE SAID THAT THE MAN WAS INTELLIGENT AND THIS VERY INTELLIGENCE HAS CAUSED HIS RUIN FOR IT SEEMS TO HAVE LED TO AN INSATIABLE CURIOSITY ABOUT THINGS WHICH DID NOT IN THE LEAST CONCERN HIM + I HAD NO IDEA OF THE LENGTHS TO WHICH THIS WOULD CARRY HIM UNTIL THE MEREST ACCIDENT OPENED MY EYES TO IT + I HAVE SAID THAT THE HOUSE IS A RAMBLING ONE + ONE DAY LAST WEEK ON THURSDAY NIGHT TO BE MORE EXACT I FOUND THAT I COULD NOT SLEEP HAVING FOOLISHLY TAKEN A CUP OF STRONG CAFE NOIR AFTER MY DINNER + AFTER STRUGGLING AGAINST IT UNTIL TWO IN THE MORNING I FELT THAT IT WAS QUITE HOPELESS SO I ROSE AND LIT THE CANDLE WITH THE INTENTION AF CONTINUING A NOVEL WHICH I WAS READING + THE BOOK HOWEVER HAD BEEN LEFT IN THE BILLIARD ROOM SO I PULLED ON MY DRESSING GOWN AND STARTED OFF TO GET IT + IN ORDER TO REACH THE BIILLIARD ROOM I HAD TO DESCEND A FLIGHT OF STAIRS AND THEN TO CROSS THE HEAD OF A PASSAGE WHICH LED TO THE LIBRARY AND THE GUN ROOM + YOU CAN IMAGINE MY SURPRISE WHEN AS I LOOKED DOWN THIS CORRIDOR + I SAW A GLIMMER OF LIGHT COMING FROM THE OPEN DOOR OF THE LIBRARY + I HAD MYSELF EXTINGUISHED THE LAMP AND CLOSED THE DOOR BEFORE COMING TO BED + NATURALLY MY FIRST THOUGHT WAS OF BURGLAR + THE CORRIDORS AT HURLSTONE HAVE THEIR WALLS LARGELY DECORATED WITH TROPHIES OF OLD WEAPONS + FROM ONE OF THESE I PICKED A BATTLE AXE AND THEN LEAVING MY CANDLE BEHIND ME I CREPT ON TIPTOE DOWN THE PASSAGE AND PEEPED IN AT THE OPEN DOOR + BRUNTON THE BUTLER WAS IN THE LIBRARY + HE WAS SITTING FULLY DRESSED IN AN EASY CHAIR WITH A SLIP OF PAPER WHICH LOOKED LIKE A MAP UPON HIS KNEE AND HIS FOREHEAD SUNK FORWARD UPON HIS HAND IN DEEP THOUGHT + I STOOD DUMB WITH ASTONISHMENT WATCHING HIM FROM THE DARKNESS + A SMALL TAPER ON THE EDGE OF THE TABLE SHED A FEEBLE LIGHT WHICH SUFFICED TO SHOW ME THAT HE WAS FULLY DRESSED + SUDDENLY AS I LOOKED HE ROSE FROM HIS CHAIR AND WALKING OVER TO A BUREAU AT THE SIDE HE UNLOCKED IT AND DREW OUT ONE OF THE DRAWERS + FROM THIS HE TOOK A PAPER AND RETURNING TO HIS SEAT HE FLATTENED IT OUT BESIDE THE TAPER ON THE EDGE OF THE TABLE AND BEGAN TO STUDY IT WITH MINUTE ATTENTION + MY INDIGNATION AT THIS CALM EXAMINATION OF OUR FAMILY DOCUMENTS OVERCAME ME SO FAR THAT I TOOK A STEP FORWARD AND BRUNTON LOOKING UP. SAW ME STANDING IN THE DOORWAY + HE SPRANG TO HIS FEET HIS FACE TURNED LIVID WITH FEAR AND HE THRUST INTO HIS BREAST THE CHART LIKE PAPER WHICH HE HAD BEEN ORIGINALLY STUDYING + QUOTE QUOTE SO QUOTE SAID I. QUOTE THIS IS HOW YOU REPAY THE TRUST WHICH WE HAVE REPOSED IN YOU + YOU WILL LEAVE MY SERVICE TO MORROW + HE BOWED WITH THE LOOK OF A MAN WHO IS UTTERLY CRUSHED AND SLUNK PAST ME WITHOUT A WORD + THE TAPER WAS STILL ON THE TABLE AND BY ITS LIGHT I GLANCED TO SEE WHAT THE PAPER WAS WHICH BRUNTON HAD TAKEN FROM THE BUREAU + TO MY SURPRISE IT WAS NOTHING OF ANY IMPORTANCE AT ALL BUT SIMPLY A COPY OF THE QUESTIONS AND ANSWERS IN THE SINGULAR OLD OBSERVANCE CALLED THE MUSGRAVE RITUAL + IT IS A SORT OF CEREMONY PECULIAR TO OUR FAMILY WHICH EACH MUSGRAVE FOR CENTURIES PAST HAS GONE THROUGH ON HIS COMING OF AGE A THING OF PRIVATE INTEREST AND PERHAPS OF SOME LITTLE IMPORTANCE TO THE ARCHAEOLOGIST LIKE OUR OWN BLAZONINGS AND CHARGES BUT OF NO PRACTICAL USE WHATEVER + WE HAD BETTER COME BACK TO THE PAPER AFTERWARDS SAID I + IF YOU THINK IT REALLY NECESSARY HE ANSWERED WITH SOME HESITATION + TO CONTINUE MY STATEMENT HOWEVER I RELOCKED THE BUREAU USING THE KEY WHICH BRUNTON HAD LEFT AND I HAD TURNED TO GO WHEN I WAS SURPRISED TO FIND THAT THE BUTLER HAD RETURNED AND WAS STANDING BEFORE ME + MR. MUSGRAVE SIR HE CRIED IN A VOICE WHICH WAS HOARSE WITH EMOTION I CAN'T BEAR DISGRACE SIR + I'VE ALWAYS BEEN PROUD ABOVE MY STATION IN LIFE AND DISGRACE WOULD KILL ME + MY BLOOD WILL BE ON YOUR HEAD SIR IT WILL INDEED IF YOU DRIVE ME TO DESPAIR + IF YOU CANNOT KEEP ME AFTER WHAT HAS PASSED THEN FOR GOD'S SAKE LET ME GIVE YOU NOTICE AND LEAVE IN A MONTH AS IF OF MY OWN FREE WILL + I COULD STAND THAT MR. MUSGRAVE BUT NOT TO BE CAST OUT BEFORE ALL THE FOLK THAT I KNOW SO WELL QUOTE + YOU DON'T DESERVE MUCH CONSIDERATION BRUNTON I ANSWERED + YOUR CONDUCT HAS BEEN MOST INFAMOUS + HOWEVER AS YOU HAVE BEEN A LONG TIME IN THE FAMILY I HAVE NO WISH TO BRING PUBLIC DISGRACE UPON YOU + A MONTH HOWEVER IS TOO LONG + TAKE YOURSELF AWAY IN A WEEK AND GIVE WHAT REASON YOU LIKE FOR GOING + ONLY A WEEK SIR HE CRIED IN A DESPAIRING VOICE + A FORTNIGHT SAY AT LEAST A FORTNIGHT + QUOTE QUOTE A WEEK QUOTE I REPEATED QUOTE AND YOU MAY CONSIDER YOURSELF TO HAVE BEEN VERY LENIENTLY DEALT WITH QUOTE + HE CREPT AWAY HIS FACE SUNK UPON HIS BREAST LIKE A BROKEN MAN WHILE I PUT OUT THE LIGHT AND RETURNED TO MY ROOM + FOR TWO DAYS AFTER THIS BRUNTON WAS MOST ASSIDUOUS IN HIS ATTENTION TO HIS DUTIES + I MADE NO ALLUSION TO WHAT HAD PASSED AND WAITED WITH SOME CURIOSITY TO SEE HOW HE WOULD COVER HIS DISGRACE + ON THE THIRD MORNING HOWEVER HE DID NOT APPEAR AS WAS HIS CUSTOM AFTER BREAKFAST TO RECEIVE MY INSTRUCTIONS FOR THE DAY + AS I LEFT THE DINING ROOM I HAPPENED TO MEET RACHEL HOWELLS THE MAID + I HAVE TOLD YOU THAT SHE HAD ONLY RECENTLY RECOVERED FROM AN ILLNESS AND WAS LOOKING SO WRETCHEDLY PALE AND WAN THAT I REMONSTRATED WITH HER FOR BEING AT WORK + YOU SHOULD BE IN BED I SAID + COME BACK TO YOUR DUTIES WHEN YOU ARE STRONGER SHE LOOKED AT ME WITH SO STRANGE AN EXPRESSION THAT I BEGAN TO SUSPECT THAT HER BRAIN WAS AFFECTED + I AM STRONG ENOUGH MR. MUSGRAVE SAID SHE + QUOTE QUOTE WE WILL SEE WHAT THE DOCTOR SAYS QUOTE I ANSWERED + YOU MUST STOP WORK NOW AND WHEN YOU GO DOWNSTAIRS JUST SAY THAT I WISH TO SEE BRUNTON + THE BUTLER IS GONE SAID SHE + GONE + GONE WHERE + HE IS GONE + NO ONE HAS SEEN HIM + HE IS NOT IN HIS ROOM + OH YES HE IS GONE HE IS GONE QUOTE + SHE FELL BACK AGAINST THE WALL WITH SHRIEK AFTER SHRIEK OF LAUGHTER WHILE I HORRIFIED AT THIS SUDDEN HYSTERICAL ATTACK RUSHED TO THE BELL TO SUMMON HELP + THE GIRL WAS TAKEN TO HER ROOM STILL SCREAMING AND SOBBING WHILE I MADE INQUIRIES ABOUT BRUNTON + THERE WAS NO DOUBT ABOUT IT THAT HE HAD DISAPPEARED + HIS BED HAD NOT BEEN SLEPT IN HE HAD BEEN SEEN BY NO ONE SINCE HE HAD RETIRED TO HIS ROOM THE NIGHT BEFORE AND YET IT WAS DIFFICULT TO SEE HOW HE COULD HAVE LEFT THE HOUSE AS BOTH WINDOWS AND DOORS WERE FOUND TO BE FASTENED IN THE MORNING + HIS CLOTHES HIS WATCH AND EVEN HIS MONEY WERE IN HIS ROOM BUT THE BLACK SUIT WHICH HE USUALLY WORE WAS MISSING + HIS SLIPPERS TOO WERE GONE BUT HIS BOOTS WERE LEFT BEHIND + WHERE THEN COULD BUTLER BRUNTON HAVE GONE IN THE NIGHT AND WHAT COULD HAVE BECOME OF HIM NOW + OF COURSE WE SEARCHED THE HOUSE FROM CELLAR TO GARRET BUT THERE WAS NO TRACE OF HIM + IT IS AS I HAVE SAID A LABYRINTH OF AN OLD HOUSE ESPECIALLY THE ORIGINAL WING WHICH IS NOW PRACTICALLY UNINHABITED BUT WE RANSACKED EVERY ROOM AND CELLAR WITHOUT DISCOVERING THE LEAST SIGN OF THE MISSING MAN + IT WAS INCREDIBLE TO ME THAT HE COULD HAVE GONE AWAY LEAVING ALL HIS PROPERTY BEHIND HIM AND YET WHERE COULD HE BE + I CALLED IN THE LOCAL POLICE BUT WITHOUT SUCCESS + RAIN HAD FALLEN ON THE NIGHT BEFORE AND WE EXAMINED THE LAWN AND THE PATHS ALL ROUND THE HOUSE BUT IN VAIN + MATTERS WERE IN THIS STATE WHEN A NEW DEVELOPMENT QUITE DREW OUR ATTENTION AWAY FROM THE ORIGINAL MYSTERY + FOR TWO DAYS RACHEL HOWELLS HAD BEEN SO ILL SOMETIMES DELIRIOUS SOMETIMES HYSTERICAL THAT A NURSE HAD BEEN EMPLOYED TO SIT UP WITH HER AT NIGHT + ON THE THIRD NIGHT AFTER BRUNTON'S DISAPPEARANCE THE NURSE FINDING HER PATIENT SLEEPING NICELY HAD DROPPED INTO A NAP IN THE ARMCHAIR WHEN SHE WOKE IN THE EARLY MORNING TO FIND THE BED EMPTY THE WINDOW OPEN AND NO SIGNS OF THE INVALID + I WAS INSTANTLY AROUSED AND WITH THE TWO FOOTMEN STARTED OFF AT ONCE IN SEARCH OF THE MISSING GIRL + IT WAS NOT DIFFICULT TO TELL THE DIRECTION WHICH SHE HAD TAKEN FOR STARTING FROM UNDER HER WINDOW WE COULD FOLLOW HER FOOTMARKS EASILY ACROSS THE LAWN TO THE EDGE OF THE MERE WHERE THEY VANISHED CLOSE TO THE GRAVEL PATH WHICH LEADS OUT OF THE GROUNDS + THE LAKE THERE IS EIGHT FEET DEEP AND YOU CAN IMAGINE OUR FEELINGS WHEN WE SAW THAT THE TRAIL OF THE POOR DEMENTED GIRL CAME TO AN END AT THE EDGE OF IT + OF COURSE WE HAD THE DRAGS AT ONCE AND SET TO WORK TO RECOVER THE REMAINS BUT NO TRACE OF THE BODY COULD WE FIND + ON THE OTHER HAND WE BROUGHT TO THE SURFACE AN OBJECT OF A MOST UNEXPECTED KIND + IT WAS A LINEN BAG WHICH CONTAINED WITHIN IT A MASS OF OLD RUSTED AND DISCOLOURED METAL AND SEVERAL DULLCOLOURED PIECES OF PEBBLE OR GLASS + THIS STRANGE FIND WAS ALL THAT WE COULD GET FROM THE MERE AND ALTHOUGH WE MADE EVERY POSSIBLE SEARCH AND INQUIRY YESTERDAY WE KNOW NOTHING OF THE FATE EITHER OF RACHEL HOWELLS OR OF RICHARD BRUNTON + THE COUNTY POLICE ARE AT THEIR WIT'S END AND I HAVE COME UP TO YOU AS A LAST RESOURCE + YOU CAN IMAGINE WATSON WITH WHAT EAGERNESS I LISTENED TO THIS EXTRAORDINARY SEQUENCE OF EVENTS AND ENDEAVOURED TO PIECE THEM TOGETHER AND TO DEVISE SOME COMMON THREAD UPON WHICH THEY MIGHT ALL HANG + THE BUTLER WAS GONE + THE MAID WAS GONE + THE MAID HAD LOVED THE BUTLER BUT HAD AFTERWARDS HAD CAUSE TO HATE HIM + SHE WAS OF WELSH BLOOD FIERY AND PASSIONATE + SHE HAD BEEN TERRIBLY EXCITED IMMEDIATELY AFTER HIS DISAPPEARANCE + SHE HAD FLUNG INTO THE LAKE A BAG CONTAINING SOME CURIOUS CONTENTS + THESE WERE ALL FACTORS WHICH HAD TO BE TAKEN INTO CONSIDERATION AND YET NONE OF THEM GOT QUITE TO THE HEART OF THE MATTER + WHAT WAS THE STARTING POINT OF THIS CHAIN OF EVENTS + THERE LAY THE END OF THIS TANGLED LINE + I MUST SEE THAT PAPER MUSGRAVE SAID I WHICH THIS BUTLER OF YOURS THOUGHT IT WORTH HIS WHILE TO CONSULT EVEN AT THE RISK OF THE LOSS OF HIS PLACE + QUOTE IT IS RATHER AN ABSURD BUSINESS THIS RITUAL OF OURS HE ANSWERED + BUT IT HAS AT LEAST THE SAVING GRACE OF ANTIQUITY TO EXCUSE IT + I HAVE A COPY OF THE QUESTIONS AND ANSWERS HERE IF YOU CARE TO RUN YOUR EYE OVER THEM + HE HANDED ME THE VERY PAPER WHICH I HAVE HERE WATSON AND THIS IS THE STRANGE CATECHISM TO WHICH EACH MUSGRAVE HAD TO SUBMIT WHEN HE CAME TO MAN'S ESTATE + I WILL READ YOU THE QUESTIONS AND ANSWERS AS THEY STAND + WHOSE WAS IT + HIS WHO IS GONE + WHO SHALL HAVE IT + HE WHO WILL COME + QUOTE WHERE WAS THE SUN + OVER THE OAK + WHERE WAS THE SHADOW + UNDER THE ELM + HOW WAS IT STEPPED + NORTH BY TEN AND BY TEN EAST BY FIVE AND BY FIVE SOUTH BY TWO AND BY TWO WEST BY ONE AND BY ONE AND SO UNDER + QUOTE WHAT SHALL WE GIVE FOR IT + ALL THAT IS OURS + WHY SHOULD WE GIVE IT + FOR THE SAKE OF THE TRUST + THE ORIGINAL HAS NO DATE BUT IS IN THE SPELLING OF THE MIDDLE OF THE SEVENTEENTH CENTURY REMARKED MUSGRAVE + I AM AFRAID HOWEVER THAT IT CAN BE OF LITTLE HELP TO YOU IN SOLVING THIS MYSTERY + AT LEAST SAID I IT GIVES US ANOTHER MYSTERY AND ONE WHICH IS EVEN MORE INTERESTING THAN THE FIRST + IT MAY BE THAT THE SOLUTION OF THE ONE MAY PROVE TO BE THE SOLUTION OF THE OTHER + YOU WILL EXCUSE ME MUSGRAVE IF I SAY THAT YOUR BUTLER APPEARS TO ME TO HAVE BEEN A VERY CLEVER MAN AND TO HAVE HAD A CLEARER INSIGHT THAN TEN GENERATIONS OF HIS MASTERS + QUOTE I HARDLY FOLLOW YOU SAID MUSGRAVE + THE PAPER SEEMS TO ME TO BE OF NO PRACTICAL IMPORTANCE + BUT TO ME IT SEEMS IMMENSELY PRACTICAL AND I FANCY THAT BRUNTON TOOK THE SAME VIEW + HE HAD PROBABLY SEEN IT BEFORE THAT NIGHT ON WHICH YOU CAUGHT HIM + IT IS VERY POSSIBLE + WE TOOK NO PAINS TO HIDE IT + HE SIMPLY WISHED I SHOULD IMAGINE TO REFRESH HIS MEMORY UPON THAT LAST OCCASION + HE HAD AS I UNDERSTAND SOME SORT OF MAP OR CHART WHICH HE WAS COMPARING WITH THE MANUSCRIPT AND WHICH HE THRUST INTO HIS POCKET WHEN YOU APPEARED + THAT IS TRUE + BUT WHAT COULD HE HAVE TO DO WITH THIS OLD FAMILY CUSTOM OF OURS AND WHAT DOES THIS RIGMAROLE MEAN + I DON'T THINK THAT WE SHOULD HAVE MUCH DIFFICULTY IN DETERMINING THAT SAID I WITH YOUR PERMISSION WE WILL TAKE THE FIRST TRAIN DOWN TO SUSSEX AND GO A LITTLE MORE DEEPLY INTO THE MATTER UPON THE SPOT + QUOTE THE SAME AFTERNOON SAW US BOTH AT HURLSTONE + POSSIBLY YOU HAVE SEEN PICTURES AND READ DESCRIPTIONS OF THE FAMOUS OLD BUILDING SO I WILL CONFINE MY ACCOUNT OF IT TO SAYING THAT IT IS BUILT IN THE SHAPE OF AN L. THE LONG ARM BEING THE MORE MODERN PORTION AND THE SHORTER THE ANCIENT NUCLEUS FROM WHICH THE OTHER HAS DEVELOPED + OVER THE LOW HEAVY LINTELLED DOOR IN THE CENTRE OF THIS OLD PART IS CHISELLED THE DATE ONE THOUSAND SIX HUNDRED SEVEN BUT EXPERTS ARE AGREED THAT THE BEAMS AND STONEWORK ARE REALLY MUCH OLDER THAN THIS + THE ENORMOUSLY THICK WALLS AND TINY WINDOWS OF THIS PART HAD IN THE LAST CENTURY DRIVEN THE FAMILY INTO BUILDING THE NEW WING AND THE OLD ONE WAS USED NOW AS A STOREHOUSE AND A CELLAR WHEN IT WAS USED AT ALL + A SPLENDID PARK WITH FINE OLD TIMBER SURROUNDS THE HOUSE AND THE LAKE TO WHICH MY CLIENT HAD REFERRED LAY CLOSE TO THE AVENUE ABOUT TWO HUNDRED YARDS FROM THE BUILDING + I WAS ALREADY FIRMLY CONVINCED WATSON THAT THERE WERE NOT THREE SEPARATE MYSTERIES HERE BUT ONE ONLY AND THAT IF I COULD READ THE MUSGRAVE RITUAL ARIGHT I SHOULD HOLD IN MY HAND THE CLUE WHICH WOULD LEAD ME TO THE TRUTH CONCERNING BOTH THE BUTLER BRUNTON AND THE MAID HOWELLS + TO THAT THEN I TURNED ALL MY ENERGIES + WHY SHOULD THIS SERVANT BE SO ANXIOUS TO MASTER THIS OLD FORMULA + EVIDENTLY BECAUSE HE SAW SOMETHING IN IT WHICH HAD ESCAPED ALL THOSE GENERATIONS OF COUNTRY SQUIRES AND FROM WHICH HE EXPECTED SOME PERSONAL ADVANTAGE + WHAT WAS IT THEN AND HOW HAD IT AFFECTED HIS FATE + IT WAS PERFECTLY OBVIOUS TO ME ON READING THE RITUAL THAT THE MEASUREMENTS MUST REFER TO SOME SPOT TO WHICH THE REST OF THE DOCUMENT ALLUDED AND THAT IF WE COULD FIND THAT SPOT WE SHOULD BE IN A FAIR WAY TOWARDS FINDING WHAT THE SECRET WAS WHICH THE OLD MUSGRAVES HAD THOUGHT IT NECESSARY TO EMBALM IN SO CURIOUS A FASHION + THERE WERE TWO GUIDES GIVEN US TO START WITH AN OAK AND AN ELM + AS TO THE OAK THERE COULD BE NO QUESTION AT ALL + RIGHT IN FRONT OF THE HOUSE UPON THE LEFT HAND SIDE OF THE DRIVE THERE STOOD A PATRIARCH AMONG OAKS. ONE OF THE MOST MAGNIFICENT TREES THAT I HAVE EVER SEEN + THAT WAS THERE WHEN YOUR RITUAL WAS DRAWN UP SAID I AS WE DROVE PAST IT + IT WAS THERE AT THE NORMAN CONQUEST IN ALL PROBABILITY HE ANSWERED + IT HAS A GIRTH OF TWENTY THREE FEET + HERE WAS ONE OF MY FIXED POINTS SECURED + QUOTE HAVE YOU ANY OLD ELMS + I ASKED + THERE USED TO BE A VERY OLD ONE OVER YONDER BUT IT WAS STRUCK BY LIGHTNING TEN YEARS AGO AND WE CUT DOWN THE STUMP + YOU CAN SEE WHERE IT USED TO BE + OH YES + THERE ARE NO OTHER ELMS + NO OLD ONES BUT PLENTY OF BEECHES + QUOTE I SHOULD LIKE TO SEE WHERE IT GREW + WE HAD DRIVEN UP IN A DOG CART AND MY CLIENT LED ME AWAY AT ONCE WITHOUT OUR ENTERING THE HOUSE TO THE SCAR ON THE LAWN WHERE THE ELM HAD STOOD + IT WAS NEARLY MIDWAY BETWEEN THE OAK AND THE HOUSE + MY INVESTIGATION SEEMED TO BE PROGRESSING + I SUPPOSE IT IS IMPOSSIBLE TO FIND OUT HOW HIGH THE ELM WAS + I ASKED + I CAN GIVE YOU IT AT ONCE + IT WAS SIXTY FOUR FEET + HOW DO YOU COME TO KNOW IT + I ASKED IN SURPRISE + WHEN MY OLD TUTOR USED TO GIVE ME AN EXERCISE IN TRIGONOMETRY IT ALWAYS TOOK THE SHAPE OF MEASURING HEIGHTS + WHEN I WAS A LAD I WORKED OUT EVERY TREE AND BUILDING IN THE ESTATE + QUOTE THIS WAS AN UNEXPECTED PIECE OF LUCK + MY DATA WERE COMING MORE QUICKLY THAN I COULD HAVE REASONABLY HOPED + TELL ME I ASKED DID YOUR BUTLER EVER ASK YOU SUCH A QUESTION + REGINALD MUSGRAVE LOOKED AT ME IN ASTONISHMENT + NOW THAT YOU CALL IT TO MY MIND HE ANSWERED BRUNTON DID ASK ME ABOUT THE HEIGHT OF THE TREE SOME MONTHS AGO IN CONNECTION WITH SOME LITTLE ARGUMENT WITH THE GROOM + THIS WAS EXCELLENT NEWS WATSON FOR IT SHOWED ME THAT I WAS ON THE RIGHT ROAD + I LOOKED UP AT THE SUN + IT WAS LOW IN THE HEAVENS AND I CALCULATED THAT IN LESS THAN AN HOUR IT WOULD LIE JUST ABOVE THE TOPMOST BRANCHES OF THE OLD OAK + ONE CONDITION MENTIONED IN THE RITUAL WOULD THEN BE FULFILLED + AND THE SHADOW OF THE ELM MUST MEAN THE FARTHER END OF THE SHADOW OTHERWISE THE TRUNK WOULD HAVE BEEN CHOSEN AS THE GUIDE + I HAD THEN TO FIND WHERE THE FAR END OF THE SHADOW WOULD FALL WHEN THE SUN WAS JUST CLEAR OF THE OAK + THAT MUST HAVE BEEN DIFFICULT HOLMES WHEN THE ELM WAS NO LONGER THERE + QUOTE WELL AT LEAST I KNEW THAT IF BRUNTON COULD DO IT I COULD ALSO + BESIDES THERE WAS NO REAL DIFFICULTY + I WENT WITH MUSGRAVE TO HIS STUDY AND WHITTLED MYSELF THIS PEG TO WHICH I TIED THIS LONG STRING WITH A KNOT AT EACH YARD + THEN I TOOK TWO LENGTHS OF A FISHING ROD WHICH CAME TO JUST SIX FEET AND I WENT BACK WITH MY CLIENT TO WHERE THE ELM HAD BEEN + THE SUN WAS JUST GRAZING THE TOP OF THE OAK + I FASTENED THE ROD ON END MARKED OUT THE DIRECTION OF THE SHADOW AND MEASURED IT + IT WAS NINE FEET IN LENGTH + OF COURSE THE CALCULATION NOW WAS A SIMPLE ONE + IF A ROD OF SIX FEET THREW A SHADOW OF NINE A TREE OF SIXTY FOUR FEET WOULD THROW ONE OF NINETY SIX AND THE LINE OF THE ONE WOULD OF COURSE BE THE LINE OF THE OTHER + I MEASURED OUT THE DISTANCE WHICH BROUGHT ME ALMOST TO THE WALL OF THE HOUSE AND I THRUST A PEG INTO THE SPOT + YOU CAN IMAGINE MY EXULTATION WATSON WHEN WITHIN TWO INCHES OF MY PEG I SAW A CONICAL DEPRESSION IN THE GROUND + I KNEW THAT IT WAS THE MARK MADE BY BRUNTON IN HIS MEASUREMENTS AND THAT I WAS STILL UPON HIS TRAIL + FROM THIS STARTING POINT ONE PROCEEDED TO STEP HAVING FIRST TAKEN THE CARDINAL POINTS BY MY POCKET COMPASS + TEN STEPS WITH EACH FOOT TOOK ME ALONG PARALLEL WITH THE WALL OF THE HOUSE AND AGAIN I MARKED MY SPOT WITH A PEG + THEN I CAREFULLY PACED OFF FIVE TO THE EAST AND TWO TO THE SOUTH + IT BROUGHT ME TO THE VERY THRESHOLD OF THE OLD DOOR + TWO STEPS TO THE WEST MEANT NOW THAT I WAS TO GO TWO PACES DOWN THE STONE FLAGGED PASSAGE AND THIS WAS THE PLACE INDICATED BY THE RITUAL + NEVER HAVE I FELT SUCH A COLD CHILL OF DISAPPOINTMENT WATSON + FOR A MOMENT IT SEEMED TO ME THAT THERE MUST BE SOME RADICAL MISTAKE IN MY CALCULATIONS + THE SETTING SUN SHONE FULL UPON THE PASSAGE FLOOR AND I COULD SEE THAT THE OLD FOOT WORN GRAY STONES WITH WHICH IT WAS PAVED WERE FIRMLY CEMENTED TOGETHER AND HAD CERTAINLY NOT BEEN MOVED FOR MANY A LONG YEAR + BRUNTON HAD NOT BEEN AT WORK HERE + I TAPPED UPON THE FLOOR BUT IT SOUNDED THE SAME ALL OVER AND THERE WAS NO SIGN OF ANY CRACK OR CREVICE + BUT FORTUNATELY MUSGRAVE WHO HAD BEGUN TO APPRECIATE THE MEANING OF MY PROCEEDINGS AND WHO WAS NOW AS EXCITED AS MYSELF TOOK OUT HIS MANUSCRIPT TO CHECK MY CALCULATIONS + AND UNDER HE CRIED + YOU HAVE OMITTED THE AND UNDER + QUOTE I HAD THOUGHT THAT IT MEANT THAT WE WERE TO DIG BUT NOW OF COURSE I SAW AT ONCE THAT I WAS WRONG + THERE IS A CELLAR UNDER THIS THEN + I CRIED + YES AND AS OLD AS THE HOUSE + DOWN HERE THROUGH THIS DOOR + WE WENT DOWN A WINDING STONE STAIR AND MY COMPANION STRIKING A MATCH LIT A LARGE LANTERN WHICH STOOD ON A BARREL IN THE CORNER + IN AN INSTANT IT WAS OBVIOUS THAT WE HAD AT LAST COME UPON THE TRUE PLACE AND THAT WE HAD NOT BEEN THE ONLY PEOPLE TO VISIT THE SPOT RECENTLY + IT HAD BEEN USED FOR THE STORAGE OF WOOD BUT THE BILLETS WHICH HAD EVIDENTLY BEEN LITTERED OVER THE FLOOR WERE NOW PILED AT THE SIDES SO AS TO LEAVE A CLEAR SPACE IN THE MIDDLE + IN THIS SPACE LAY A LARGE AND HEAVY FLAGSTONE WITH A RUSTED IRON RING IN THE CENTRE TO WHICH A THICK SHEPHERD'S CHECK MUFFLER WAS ATTACHED + BY JOVE CRIED MY CLIENT + THAT'S BRUNTON'S MUFFLER + I HAVE SEEN IT ON HIM AND COULD SWEAR TO IT + WHAT HAS THE VILLAIN BEEN DOING HERE + AT MY SUGGESTION A COUPLE OF THE COUNTY POLICE WERE SUMMONED TO BE PRESENT AND I THEN ENDEAVOURED TO RAISE THE STONE BY PULLING ON THE CRAVAT + I COULD ONLY MOVE IT SLIGHTLY AND IT WAS WITH THE AID OF ONE OF THE CONSTABLES THAT I SUCCEEDED AT LAST IN CARRYING IT TO ONE SIDE + A BLACK HOLE YAWNED BENEATH INTO WHICH WE ALL PEERED WHILE MUSGRAVE KNEELING AT THE SIDE PUSHED DOWN THE LANTERN + QUOTE A SMALL CHAMBER ABOUT SEVEN FEET DEEP AND FOUR FEET SQUARE LAY OPEN TO US + AT ONE SIDE OF THIS WAS A SQUAT BRASS BOUND WOODEN BOX THE LID OF WHICH WAS HINGED UPWARD WITH THIS CURIOUS OLD FASHIONED KEY PROJECTING FROM THE LOCK + IT WAS FURRED OUTSIDE BY A THICK LAYER OF DUST AND DAMP AND WORMS HAD EATEN THROUGH THE WOOD SO THAT A CROP OF LIVID FUNGI WAS GROWING ON THE INSIDE OF IT + SEVERAL DISCS OF METAL OLD COINS APPARENTLY SUCH AS I HOLD HERE WERE SCATTERED OVER THE BOTTOM OF THE BOX BUT IT CONTAINED NOTHING ELSE + AT THE MOMENT HOWEVER WE HAD NO THOUGHT FOR THE OLD CHEST FOR OUR EYES WERE RIVETED UPON THAT WHICH CROUCHED BESIDE IT + IT WAS THE FIGURE OF A MAN CLAD IN A SUIT OF BLACK WHO SQUATTED DOWN UPON HIS HAMS WITH HIS FOREHEAD SUNK UPON THE EDGE OF THE BOX AND HIS TWO ARMS THROWN OUT ON EACH SIDE OF IT + THE ATTITUDE HAD DRAWN ALL THE STAGNANT BLOOD TO THE FACE AND NO MAN COULD HAVE RECOGNIZED THAT DISTORTED LIVER COLOURED COUNTENANCE BUT HIS HEIGHT HIS DRESS AND HIS HAIR WERE ALL SUFFICIENT TO SHOW MY CLIENT WHEN WE HAD DRAWN THE BODY UP THAT IT WAS INDEED HIS MISSING BUTLER + HE HAD BEEN DEAD SOME DAYS BUT THERE WAS NO WOUND OR BRUISE UPON HIS PERSON TO SHOW HOW HE HAD MET HIS DREADFUL END + WHEN HIS BODY HAD BEEN CARRIED FROM THE CELLAR WE FOUND OURSELVES STILL CONFRONTED WITH A PROBLEM WHICH WAS ALMOST AS FORMIDABLE AS THAT WITH WHICH WE HAD STARTED + I CONFESS THAT SO FAR WATSON I HAD BEEN DISAPPOINTED IN MY INVESTIGATION + I HAD RECKONED UPON SOLVING THE MATTER WHEN ONCE I HAD FOUND THE PLACE REFERRED TO IN THE RITUAL BUT NOW I WAS THERE AND WAS APPARENTLY AS FAR AS EVER FROM KNOWING WHAT IT WAS WHICH THE FAMILY HAD CONCEALED WITH SUCH ELABORATE PRECAUTIONS + IT IS TRUE THAT I HAD THROWN A LIGHT UPON THE FATE OF BRUNTON BUT NOW I HAD TO ASCERTAIN HOW THAT FATE HAD COME UPON HIM AND WHAT PART HAD BEEN PLAYED IN THE MATTER BY THE WOMAN WHO HAD DISAPPEARED + I SAT DOWN UPON A KEG IN THE CORNER AND THOUGHT THE WHOLE MATTER CAREFULLY OVER + YOU KNOW MY METHODS IN SUCH CASES WATSON + I PUT MYSELF IN THE MAN'S PLACE AND HAVING FIRST GAUGED HIS INTELLIGENCE I TRY TO IMAGINE HOW I SHOULD MYSELF HAVE PROCEEDED UNDER THE SAME CIRCUMSTANCES + IN THIS CASE THE MATTER WAS SIMPLIFIED BY BRUNTON'S INTELLIGENCE BEING QUITE FIRST RATE SO THAT IT WAS UNNECESSARY TO MAKE ANY ALLOWANCE FOR THE PERSONAL EQUATION AS THE ASTRONOMERS HAVE DUBBED IT + HE KNEW THAT SOMETHING VALUABLE WAS CONCEALED + HE HAD SPOTTED THE PLACE + HE FOUND THAT THE STONE WHICH COVERED IT WAS JUST TOO HEAVY FOR A MAN TO MOVE UNAIDED + WHAT WOULD HE DO NEXT + HE COULD NOT GET HELP FROM OUTSIDE EVEN IF HE HAD SOMEONE WHOM HE COULD TRUST WITHOUT THE UNBARRING OF DOORS AND CONSIDERABLE RISK OF DETECTION + IT WAS BETTER IF HE COULD TO HAVE HIS HELPMATE INSIDE THE HOUSE + BUT WHOM COULD HE ASK + THIS GIRL HAD BEEN DEVOTED TO HIM + A MAN ALWAYS FINDS IT HARD TO REALIZE THAT HE MAY HAVE FINALLY LOST A WOMAN'S LOVE HOWEVER BADLY HE MAY HAVE TREATED HER + HE WOULD TRY BY A FEW ATTENTIONS TO MAKE HIS PEACE WITH THE GIRL HOWELLS AND THEN WOULD ENGAGE HER AS HIS ACCOMPLICE + TOGETHER THEY WOULD COME AT NIGHT TO THE CELLAR AND THEIR UNITED FORCE WOULD SUFFICE TO RAISE THE STONE + SO FAR I COULD FOLLOW THEIR ACTIONS AS IF I HAD ACTUALLY SEEN THEM + BUT FOR TWO OF THEM AND ONE A WOMAN IT MUST HAVE BEEN HEAVY WORK THE RAISING OF THAT STONE + A BURLY SUSSEX POLICEMAN AND I HAD FOUND IT NO LIGHT JOB + WHAT WOULD THEY DO TO ASSIST THEM + PROBABLY WHAT I SHOULD HAVE DONE MYSELF + I ROSE AND EXAMINED CAREFULLY THE DIFFERENT BILLETS OF WOOD WHICH WERE SCATTERED ROUND THE FLOOR + ALMOST AT ONCE I CAME UPON WHAT I EXPECTED + ONE PIECE ABOUT THREE FEET IN LENGTH HAD A VERY MARKED INDENTATION AT ONE END. WHILE SEVERAL WERE FLATTENED AT THE SIDES AS IF THEY HAD BEEN COMPRESSED BY SOME CONSIDERABLE WEIGHT + EVIDENTLY AS THEY HAD DRAGGED THE STONE UP THEY HAD THRUST THC CHUNKS OF WOOD INTO THE CHINK UNTIL AT LAST WHEN THE OPENING WAS LARGE ENOUGH TO CRAWL THROUGH THEY WOULD HOLD IT OPEN BY A BILLET PLACED LENGTHWISE WHICH MIGHT VERY WELL BECOME INDENTED AT THE LOWER END SINCE THE WHOLE WEIGHT OF THE STONE WOULD PRESS IT DOWN ON TO THE EDGE OF THIS OTHER SLAB + SO FAR I WAS STILL ON SAFE GROUND + AND NOW HOW WAS I TO PROCEED TO RECONSTRUCT THIS MIDNIGHT DRAMA + CLEARLY ONLY ONE COULD FIT INTO THE HOLE AND THAT ONE WAS BRUNTON + THE GIRL MUST HAVE WAITED ABOVE + BRUNTON THEN UNLOCKED THE BOX HANDED UP THE CONTENTS PRESUMABLY SINCE THEY WERE NOT TO BE FOUND AND THEN AND THEN WHAT HAPPENED + QUOTE WHAT SMOULDERING FIRE OF VENGEANCE HAD SUDDENLY SPRUNG INTO FLAME IN THIS PASSIONATE CELTIC WOMAN'S SOUL WHEN SHE SAW THE MAN WHO HAD WRONGED HER EQUALS EQUALS WRONGED HER PERHAPS FAR MORE THAN WE SUSPECTED IN HER POWER + WAS IT A CHANCE THAT THE WOOD HAD SLIPPED AND THAT THE STONE HAD SHUT BRUNTON INTO WHAT HAD BECOME HIS SEPULCHRE + HAD SHE ONLY BEEN GUILTY OF SILENCE AS TO HIS FATE + OR HAD SOME SUDDEN BLOW FROM HER HAND DASHED THE SUPPORT AWAY AND SENT THE SLAB CRASHING DOWN INTO ITS PLACE + BE THAT AS IT MIGHT I SEEMED TO SEE THAT WOMAN'S FIGURE STILL CLUTCHING AT HER TREASURE TROVE AND FLYING WILDLY UP THE WINDING STAIR WITH HER EARS RINGING PERHAPS WITH THE MUFFLED SCREAMS FROM BEHIND HER AND WITH THE DRUMMING OF FRENZIED HANDS AGAINST THE SLAB OF STONE WHICH WAS CHOKING HER FAITHLESS LOVER'S LIFE OUT + HERE WAS THE SECRET OF HER BLANCHED FACE HER SHAKEN NERVES HER PEALS OF HYSTERICAL LAUGHTER ON THE NEXT MORNING + BUT WHAT HAD BEEN IN THE BOX + WHAT HAD SHE DONE WITH THAT + OF COURSE IT MUST HAVE BEEN THE OLD METAL AND PEBBLES WHICH MY CLIENT HAD DRAGGED FROM THE MERE + SHE HAD THROWN THEM IN THERE AT THE FIRST OPPORTUNITY TO REMOVE THE LAST TRACE OF HER CRIME + FOR TWENTY MINUTES I HAD SAT MOTIONLESS THINKING THE MATTER OUT + MUSGRAVE STILL STOOD WITH A VERY PALE FACE SWINGING HIS LANTERN AND PEERING DOWN INTO THE HOLE + THESE ARE COINS OF CHARLES THE FIRST SAID HE HOLDING OUT THE FEW WHICH HAD BEEN IN THE BOX YOU SEE WE WERE RIGHT IN FIXING OUR DATE FOR THE RITUAL + WE MAY FIND SOMETHING ELSE OF CHARLES THE FIRST I CRIED AS THE PROBABLE MEANING OF THE FIRST TWO QUESTIONS OF THE RITUAL BROKE SUDDENLY UPON ME + LET ME SEE THE CONTENTS OF THE BAG WHICH YOU FISHED FROM THE MERE + WE ASCENDED TO HIS STUDY AND HE LAID THE DEBRIS BEFORE ME + I COULD UNDERSTAND HIS REGARDING IT AS OF SMALL IMPORTANCE WHEN I LOOKED AT IT FOR THE METAL WAS ALMOST BLACK AND THE STONES LUSTRELESS AND DULL + I RUBBED ONE OF THEM ON MY SLEEVE HOWEVER AND IT GLOWED AFTERWARDS LIKE A SPARK IN THE DARK HOLLOW OF MY HAND + THE METAL WORK WAS IN THE FORM OF A DOUBLE RING BUT IT HAD BEEN BENT AND TWISTED OUT OF ITS ONGINAL SHAPE + QUOTE YOU MUST BEAR IN MIND SAID I THAT THE ROYAL PARTY MADE HEAD IN ENGLAND EVEN AFTER THE DEATH OF THE KING AND THAT WHEN THEY AT LAST FLED THEY PROBABLY LEFT MANY OF THEIR MOST PRECIOUS POSSESSIONS BURIED BEHIND THEM WITH THE INTENTION OF RETURNING FOR THEM IN MORE PEACEFUL TIMES + MY ANCESTOR SIR RALPH MUSGRAVE WAS A PROMINENT CAVALIER AND THE RIGHT HAND MAN OF CHARLES THE SECOND IN HIS WANDERINGS SAID MY FRIEND + AH INDEED + I ANSWERED + WELL NOW I THINK THAT REALLY SHOULD GIVE US THE LAST LINK THAT WE WANTED + I MUST CONGRATULATE YOU ON COMING INTO THE POSSESSION THOUGH IN RATHER A TRAGIC MANNER OF A RELIC WHICH IS OF GREAT INTRINSIC VALUE BUT OF EVEN GREATER IMPORTANCE AS A HISTORICAL CURIOSITY + WHAT IS IT THEN HE GASPED IN ASTONISHMENT + IT IS NOTHING LESS THAN THE ANCIENT CROWN OF THE KINGS OF ENGLAND + THE CROWN + QUOTE PRECISELY + CONSIDER WHAT THE RITUAL SAYS + HOW DOES IT RUN + WHOSE WAS IT + HIS WHO IS GONE + THAT WAS AFTER THE EXECUTION OF CHARLES + THEN WHO SHALL HAVE IT + HE WHO WILL COME + THAT WAS CHARLES THE SECOND WHOSE ADVENT WAS ALREADY FORESEEN + THERE CAN I THINK BE NO DOUBT THAT THIS BATTERED AND SHAPELESS DIADEM ONCE ENCIRCLED THE BROWS OF THE ROYAL STUARTS + AND HOW CAME IT IN THE POND + QUOTE AH THAT IS A QUESTION THAT WILL TAKE SOME TIME TO ANSWER + AND WITH THAT I SKETCHED OUT TO HIM THE WHOLE LONG CHAIN OF SURMISE AND OF PROOF WHICH I HAD CONSTRUCTED + THE TWILIGHT HAD CLOSED IN AND THE MOON WAS SHINING BRIGHTLY IN THE SKY BEFORE MY NARRATIVE WAS FINISHED + AND HOW WAS IT THEN THAT CHARLES DID NOT GET HIS CROWN WHEN HE RETURNED ASKED MUSGRAVE PUSHING BACK THE RELIC INTO ITS LINEN BAG + AH THERE YOU LAY YOUR FINGER UPON THE ONE POINT WHICH WE SHALL PROBABLY NEVER BE ABLE TO CLEAR UP + IT IS LIKELY THAT THE MUSGRAVE WHO HELD THE SECRET DIED IN THE INTERVAL AND BY SOME OVERSIGHT LEFT THIS GUIDE TO HIS DESCENDANT WITHOUT EXPLAINING THE MEANING OF IT + FROM THAT DAY TO THIS IT HAS BEEN HANDED DOWN FROM FATHER TO SON UNTIL AT LAST IT CAME WITHIN REACH OF A MAN WHO TORE ITS SECRET OUT OF IT AND LOST HIS LIFE IN THE VENTURE + AND THAT'S THE STORY OF THE MUSGRAVE RITUAL WATSON + THEY HAVE THE CROWN DOWN AT HURLSTONE THOUGH THEY HAD SOME LEGAL BOTHER AND A CONSIDERABLE SUM TO PAY BEFORE THEY WERE ALLOWED TO RETAIN IT + I AM SURE THAT IF YOU MENTIONED MY NAME THEY WOULD BE HAPPY TO SHOW IT TO YOU + OF THE WOMAN NOTHING WAS EVER HEARD AND THE PROBABILITY IS THAT SHE GOT AWAY OUT OF ENGLAND AND CARRIED HERSELF AND THE MEMORY OF HER CRIME TO SOME LAND BEYOND THE SEAS diff --git a/samples/LMTutorial/train/naval_treaty.txt b/samples/LMTutorial/train/naval_treaty.txt new file mode 100755 index 0000000..4d15010 --- /dev/null +++ b/samples/LMTutorial/train/naval_treaty.txt @@ -0,0 +1,856 @@ + THE JULY WHICH IMMEDIATELY SUCCEEDED MY MARRIAGE WAS MADE MEMORABLE BY THREE CASES OF INTEREST IN WHICH I HAD THE PRIVILEGE OF BEING ASSOCIATED WITH SHERLOCK HOLMES AND OF STUDYING HIS METHODS + I FIND THEM RECORDED IN MY NOTES UNDER THE HEADINGS OF QUOTE THE ADVENTURE OF THE SECOND STAIN QUOTE QUOTE THE ADVENTURE OF THE NAVAL TREATY QUOTE AND QUOTE THE ADVENTURE OF THE TIRED CAPTAIN QUOTE + THE FIRST OF THESE HOWEVER DEALS WITH INTERESTS OF SUCH IMPORTANCE AND IMPLICATES SO MANY OF THE FIRST FAMILIES IN THE KINGDOM THAT FOR MANY YEARS IT WILL BE IMPOSSIBLE TO MAKE IT PUBLIC + NO CASE HOWEVER IN WHICH HOLMES WAS ENGAGED HAS EVER ILLUSTRATED THE VALUE OF HIS ANALYTICAL METHODS SO CLEARLY OR HAS IMPRESSED THOSE WHO WERE ASSOCIATED WITH HIM SO DEEPLY + I STILL RETAIN AN ALMOST VERBATIM REPORT OF THE INTERVIEW IN WHICH HE DEMONSTRATED THE TRUE FACTS OF THE CASE TO MONSIEUR DUBUGUE OF THE PARIS POLICE AND FRITZ VON WALDBAUM THE WELL KNOWN SPECIALIST OF DANTZIG BOTH OF WHOM HAD WASTED THEIR ENERGIES UPON WHAT PROVED TO BE SIDE ISSUES + THE NEW CENTURY WILL HAVE COME HOWEVER BEFORE THE STORY CAN BE SAFELY TOLD + MEANWHILE I PASS ON TO THE SECOND ON MY LIST WHICH PROMISED ALSO AT ONE TIME TO BE OF NATIONAL IMPORTANCE AND WAS MARKED BY SEVERAL INCIDENTS WHICH GIVE IT A QUITE UNIQUE CHARACTER + DURING MY SCHOOL DAYS I HAD BEEN INTIMATELY ASSOCIATED WITH A LAD NAMED PERCY PHELPS WHO WAS OF MUCH THE SAME AGE AS MYSELF THOUGH HE WAS TWO CLASSES AHEAD OF ME + HE WAS A VERY BRILLIANT BOY AND CARRIED AWAY EVERY PRIZE WHICH THE SCHOOL HAD TO OFFER FINISHING HIS EXPLOITS BY WINNING A SCHOLARSHIP WHICH SENT HIM ON TO CONTINUE HIS TRIUMPHANT CAREER AT CAMBRIDGE + HE WAS I REMEMBER EXTREMELY WELL CONNECTED AND EVEN WHEN WE WERE ALL LITTLE BOYS TOGETHER WE KNEW THAT HIS MOTHER'S BROTHER WAS LORD HOLDHURST THE GREAT CONSERVATIVE POLITICIAN + THIS GAUDY RELATIONSHIP DID HIM LITTLE GOOD AT SCHOOL + ON THE CONTRARY IT SEEMED RATHER A PIQUANT THING TO US TO CHEVY HIM ABOUT THE PLAYGROUND AND HIT HIM OVER THE SHINS WITH A WICKET + BUT IT WAS ANOTHER THING WHEN HE CAME OUT INTO THE WORLD + I HEARD VAGUELY THAT HIS ABILITIES AND THE INFLUENCES WHICH HE COMMANDED HAD WON HIM A GOOD POSITION AT THE FOREIGN OFFICE AND THEN HE PASSED COMPLETELY OUT OF MY MIND UNTIL THE FOLLOWING LETTER RECALLED HIS EXISTENCE BRIARBRAE WOKING + MY DEAR WATSON I HAVE NO DOUBT THAT YOU CAN REMEMBER TADPOLE PHELPS WHO WAS IN THE FIFTH FORM WHEN YOU WERE IN THE THIRD + IT IS POSSIBLE EVEN THAT YOU MAY HAVE HEARD THAT THROUGH MY UNCLE'S INFLUENCE I OBTAINED A GOOD APPOINTMENT AT THE FOREIGN OFFICE AND THAT I WAS IN A SITUATION OF TRUST AND HONOUR UNTIL A HORRIBLE MISFORTUNE CAME SUDDENLY TO BLAST MY CAREER + THERE IS NO USE WRITING THE DETAILS OF THAT DREADFUL EVENT + IN THE EVENT OF YOUR ACCEDING TO MY REQUEST IT IS PROBABLE THAT I SHALL HAVE TO NARRATE THEM TO YOU + I HAVE ONLY JUST RECOVERED FROM NINE WEEKS OF BRAIN FEVER AND AM STILL EXCEEDINGLY WEAK + DO YOU THINK THAT YOU COULD BRING YOUR FRIEND MR. HOLMES DOWN TO SEE ME + I SHOULD LIKE TO HAVE HIS OPINION OF THE CASE THOUGH THE AUTHORITIES ASSURE ME THAT NOTHING MORE CAN BE DONE + DO TRY TO BRING HIM DOWN AND AS SOON AS POSSIBLE + EVERY MINUTE SEEMS AN HOUR WHILE I LIVE IN THIS STATE OF HORRIBLE SUSPENSE + ASSURE HIM THAT IF I HAVE NOT ASKED HIS ADVICE SOONER IT WAS NOT BECAUSE I DID NOT APPRECIATE HIS TALENTS BUT BECAUSE I HAVE BEEN OFF MY HEAD EVER SINCE THE BLOW FELL + NOW I AM CLEAR AGAIN THOUGH I DARE NOT THINK OF IT TOO MUCH FOR FEAR OF A RELAPSE + I AM STILL SO WEAK THAT I HAVE TO WRITE AS YOU SEE BY DICTATING + DO TRY TO BRING HIM + YOUR OLD SCHOOL FELLOW PERCY PHELPS + THERE WAS SOMETHING THAT TOUCHED ME AS I READ THIS LETTER SOMETHING PITIABLE IN THE REITERATED APPEALS TO BRING HOLMES + SO MOVED WAS I THAT EVEN HAD IT BEEN A DIFFICULT MATTER I SHOULD HAVE TRIED IT BUT OF COURSE I KNEW WELL THAT HOLMES LOVED HIS ART SO THAT HE WAS EVER AS READY TO BRING HIS AID AS HIS CLIENT COULD BE TO RECEIVE IT + MY WIFE AGREED WITH ME THAT NOT A MOMENT SHOULD BE LOST IN LAYING THE MATTER BEFORE HIM AND SO WITHIN AN HOUR OF BREAKFAST TIME I FOUND MYSELF BACK ONCE MORE IN THE OLD ROOMS IN BAKER STREET + HOLMES WAS SEATED AT HIS SIDE TABLE CLAD IN HIS DRESSING GOWN AND WORKING HARD OVER A CHEMICAL INVESTIGATION + A LARGE CURVED RETORT WAS BOILING FURIOUSLY IN THE BLUISH FLAME OF A BUNSEN BURNER AND THE DISTILLED DROPS WERE CONDENSING INTO A TWO LITRE MEASURE + MY FRIEND HARDLY GLANCED UP AS I ENTERED AND I SEEING THAT HIS INVESTIGATION MUST BE OF IMPORTANCE SEATED MYSELF IN AN ARMCHAIR AND WAITED + HE DIPPED INTO THIS BOTTLE OR THAT DRAWING OUT A FEW DROPS OF EACH WITH HIS GLASS PIPETTE AND FINALLY BROUGHT A TEST TUBE CONTAINING A SOLUTION OVER TO THE TABLE + IN HIS RIGHT HAND HE HELD A SLIP OF LITMUS PAPER + YOU COME AT A CRISIS WATSON SAID HE + IF THIS PAPER REMAINS BLUE ALL IS WELL + IF IT TURNS RED IT MEANS A MAN'S LIFE + HE DIPPED IT INTO THE TEST TUBE AND IT FLUSHED AT ONCE INTO A DULL DIRTY CRIMSON + HUM + I THOUGHT AS MUCH QUOTE HE CRIED + I WILL BE AT YOUR SERVICE IN AN INSTANT WATSON + YOU WILL FIND TOBACCO IN THE PERSIAN SLIPPER + HE TURNED TO HIS DESK AND SCRIBBLED OFF SEVERAL TELEGRAMS WHICH WERE HANDED OVER TO THE PAGE BOY + THEN HE THREW HIMSELF DOWN INTO THE CHAIR OPPOSITE AND DREW UP HIS KNEES UNTIL HIS FINGERS CLASPED ROUND HIS LONG THIN SHINS + A VERY COMMONPLACE LITTLE MURDER SAID HE + YOU'VE GOT SOMETHING BETTER I FANCY + YOU ARE THE STORMY PETREL OF CRIME WATSON + WHAT IS IT + I HANDED HIM THE LETTER WHICH HE READ WITH THE MOST CONCENTRATED ATTENTION + QUOTE IT DOES NOT TELL US VERY MUCH DOES IT QUOTE HE REMARKED AS HE HANDED IT BACK TO ME + HARDLY ANYTHING + AND YET THE WRITING IS OF INTEREST + BUT THE WRITING IS NOT HIS OWN + PRECISELY + IT IS A WOMAN'S + QUOTE A MAN'S SURELY QUOTE I CRIED + NO A WOMAN'S AND A WOMAN OF RARE CHARACTER + YOU SEE AT THE COMMENCEMENT OF AN INVESTIGATION IT IS SOMETHING TO KNOW THAT YOUR CLIENT IS IN CLOSE CONTACT WITH SOMEONE WHO FOR GOOD OR EVIL HAS AN EXCEPTIONAL NATURE + MY INTEREST IS ALREADY AWAKENED IN THE CASE + IF YOU ARE READY WE WILL START AT ONCE FOR WOKING AND SEE THIS DIPLOMATIST WHO IS IN SUCH EVIL CASE AND THE LADY TO WHOM HE DICTATES HIS LETTERS + WE WERE FORTUNATE ENOUGH TO CATCH AN EARLY TRAIN AT WATERLOO AND IN A LITTLE UNDER AN HOUR WE FOUND OURSELVES AMONG THE FIR WOODS AND THE HEATHER OF WOKING + BRIARBRAE PROVED TO BE A LARGE DETACHED HOUSE STANDING IN EXTENSIVE GROUNDS WITHIN A FEW MINUTES' WALK OF THE STATION + ON SENDING IN OUR CARDS WE WERE SHOWN INTO AN ELEGANTLY APPOINTED DRAWING ROOM WHERE WE WERE JOINED IN A FEW MINUTES BY A RATHER STOUT MAN WHO RECEIVED US WITH MUCH HOSPITALITY.L + HIS AGE MAY HAVE BEEN NEARER FORTY THAN THIRTY BUT HIS CHEEKS WERE SO RUDDY AND HIS EYES SO MERRY THAT HE STILL CONVEYED THE IMPRESSION OF A PLUMP AND MISCHIEVOUS BOY + I AM SO GLAD THAT YAU HAVE COME SAID HE SHAKING OUR HANDS WITH EFFUSION + PERCY HAS BEEN INQUIRING FOR YOU ALL MORNING + AH POOR OLD CHAP HE CLINGS TO ANY STRAW + HIS FATHER AND HIS MOTHER ASKED ME TO SEE YOU FOR THE MERE MENTION OF THE SUBJECT IS VERY PAINFUL TO THEM + QUOTE WE HAVE HAD NO DETAILS YET QUOTE OBSERVED HOLMES + I PERCEIVE THAT YOU ARE NOT YOURSELF A MEMBER OF THE FAMILY + OUR ACQUAINTANCE LOOKED SURPRISED AND THEN GLANCING DOWN HE BEGAN TO LAUGH + OF COURSE YOU SAW THE J. H. MONOGRAM ON MY LOCKET SAID HE + FOR A MOMENT I THOUGHT YOU HAD DONE SOMETHING CLEVER + JOSEPH HARRISON IS MY NAME AND AS PERCY IS TO MARRY MY SISTER ANNIE I SHALL AT LEAST BE A RELATION BY MARRIAGE + YOU WILL FIND MY SISTER IN HIS ROOM FOR SHE HAS NURSED HIM HAND AND FOOT THIS TWO MONTHS BACK + PERHAPS WE'D BETTER GO IN AT ONCE FOR I KNOW HOW IMPATIENT HE IS + THE CHAMBER INTO WHICH WE WERE SHOWN WAS ON THE SAME FLOOR AS THE DRAWING ROOM IT WAS FURNISHED PARTLY AS A SITTING AND PARTLY AS A BEDROOM WITH FLOWERS ARRANGED DAINTILY IN EVERY NOOK AND CORNER + A YOUNG MAN VERY PALE AND WORN WAS LYING UPON A SOFA NEAR THE OPEN WINDOW THROUGH WHICH CAME THE RICH SCENT OF THE GARDEN AND THE BALMY SUMMER AIR + A WOMAN WAS SITTING BESIDE HIM WHO RASE AS WE ENTERED + SHALL I LEAVE PERCY SHE ASKED + HE CLUTCHED HER HAND TO DETAIN HER + QUOTE HOW ARE YOU WATSON QUOTE SAID HE CORDIALLY + I SHOULD NEVER HAVE KNOWN YOU UNDER THAT MOUSTACHE AND I DARESAY YOU WOULD NOT BE PREPARED TO SWEAR TO ME + THIS I PRESUME IS YOUR CELEBRATED FRIEND MR. SHERLOCK HOLMES + I INTRODUCED HIM IN A FEW WORDS AND WE BOTH SAT DOWN + THE STOUT YOUNG MAN HAD LEFT US BUT HIS SISTER STILL REMAINED WITH HER HAND IN THAT OF THE INVALID + SHE WAS A STRIKING LOOKING WOMAN A LITTLE SHORT AND THICK FOR SYMMETRY BUT WITH A BEAUTIFUL OLIVE COMPLEXION LARGE DARK ITALIAN EYES AND A WEALTH OF DEEP BLACK HAIR + HER RICH TINTS MADE THE WHITE FACE OF HER COMPANION THE MORE WORN AND HAGGARD BY THE CONTRAST + I WON'T WASTE YOUR TIME SAID HE RAISING HIMSELF UPON THE SOFA + I'LL PLUNGE INTO THE MATTER WITHOUT FURTHER PREAMBLE + I WAS A HAPPY AND SUCCESSFUL MAN MR. HOLMES AND ON THE EVE OF BEING MARRIED WHEN A SUDDEN AND DREADFUL MISFORTUNE WRECKED ALL MY PROSPECTS IN LIFE + I WAS AS WATSON MAY HAVE TOLD YOU IN THE FOREIGN OFFICE AND THROUGH THE INFLUENCE OF MY UNCLE LORD HOLDHURST I ROSE RAPIDLY TO A RESPONSIBLE POSITION + WHEN MY UNCLE BECAME FOREIGN MINISTER IN THIS ADMINISTRATION HE GAVE ME SEVERAL MISSIONS OF TRUST AND AS I ALWAYS BROUGHT THEM TO A SUCCESSFUL CONCLUSION HE CAME AT LAST TO HAVE THE UTMOST CONFIDENCE IN MY ABILITY AND TACT + QUOTE NEARLY TEN WEEKS AGO TO BE MORE ACCURATE ON THE TWENTYTHIRD OF MAY HE CALLED ME INTO HIS PRIVATE ROOM AND AFTER COMPLIMENTING ME ON THE GOOD WORK WHICH I HAD DONE HE INFORMED ME THAT HE HAD A NEW COMMISSION OF TRUST FOR ME TO EXECUTE + THIS SAID HE TAKING A GRAY ROLL OF PAPER FROM HIS BUREAU IS THE ORIGINAL OF THAT SECRET TREATY BETWEEN ENGLAND AND ITALY OF WHICH I REGRET TO SAY SOME RUMOURS HAVE ALREADY GOT INTO THE PUBLIC PRESS + IT IS OF ENORMOUS IMPORTANCE THAT NOTHING FURTHER SHOULD LEAK OUT + THE FRENCH OR THE RUSSIAN EMBASSY WOULD PAY AN IMMENSE SUM TO LEARN THE CONTENTS OF THESE PAPERS + THEY SHOULD NOT LEAVE MY BUREAU WERE IT NOT THAT IT IS ABSOLUTELY NECESSARY TO HAVE THEM COPIED + YOU HAVE A DESK IN YOUR OFFICE + YES SIR + THEN TAKE THE TREATY AND LOCK IT UP THERE + I SHALL GIVE DIRECTIONS THAT YOU MAY REMAIN BEHIND WHEN THE OTHERS GO SO THAT YOU MAY COPY IT AT YOUR LEISURE WITHOUT FEAR OF BEING OVERLOOKED + WHEN YOU HAVE FINISHED RELOCK BOTH THE ORIGINAL AND THE DRAFT IN THE DESK AND HAND THEM OVER TO ME PERSONALLY TO MORROW MORNING + EXCUSE ME AN INSTANT SAID HOLMES + WERE YOU ALONE DURING THIS CONVERSATION + QUOTE ABSOLUTELY QUOTE + IN A LARGE ROOM + THIRTY FEET EACH WAY + IN THE CENTRE + YES ABOUT IT + AND SPEAKING LOW + QUOTE MY UNCLE'S VOICE IS ALWAYS REMARKABLY LOW + I HARDLY SPOKE AT ALL + THANK YOU SAID HOLMES SHUTTING HIS EYES PRAY GO ON + I DID EXACTLY WHAT HE INDICATED AND WAITED UNTIL THE OTHER CLERKS HAD DEPARTED + ONE OF THEM IN MY ROOM CHARLES GOROT HAD SOME ARREARS OF WORK TO MAKE UP SO I LEFT HIM THERE AND WENT OUT TO DINE + WHEN I RETURNED HE WAS GONE + I WAS ANXIOUS TO HURRY MY WORK FOR I KNEW THAT JOSEPH THE MR. HARRISON WHOM YOU SAW JUST NOW WAS IN TOWN AND THAT HE WOULD TRAVEL DOWN TO WOKING BY THE ELEVEN O'CLOCK TRAIN AND I WANTED IF POSSIBLE TO CATCH IT + WHEN I CAME TO EXAMINE THE TREATY I SAW AT ONCE THAT IT WAS OF SUCH IMPORTANCE THAT MY UNCLE HAD BEEN GUILTY OF NO EXAGGERATION IN WHAT HE SAID + WITHOUT GOING INTO DETAILS I MAY SAY THAT IT DEFINED THE POSITION OF GREAT BRITAIN TOWARDS THE TRIPLE ALLIANCE AND FORESHADOWED THE POLICY WHICH THIS COUNTRY WOULD PURSUE IN THE EVENT OF THE FRENCH FLEET GAINING A COMPLETE ASCENDENCY OVER THAT OF ITALY IN THE MEDITERRANEAN + THE QUESTIONS TREATED IN IT WERE PURELY NAVAL + AT THE END WERE THE SIGNATURES OF THE HIGH DIGNITARIES WHO HAD SIGNED IT + I GLANCED MY EYES OVER IT AND THEN SETTLED DOWN TO MY TASK OF COPYING + IT WAS A LONG DOCUMENT WRITTEN IN THE FRENCH LANGUAGE AND CONTAINING TWENTY SIX SEPARATE ARTICLES + I COPIED AS QUICKLY AS I COULD BUT AT NINE O'CLOCK I HAD ONLY DONE NINE ARTICLES AND IT SEEMED HOPELESS FOR ME TO ATTEMPT TO CATCH MY TRAIN + I WAS FEELING DROWSY AND STUPID PARTLY FROM MY DINNER AND ALSO FROM THE EFFECTS OF A LONG DAY'S WORK + A CUP OF COFFEE WOULD CLEAR MY BRAIN + A COMMISSIONAIRE REMAINS ALL NIGHT IN A LITTLE LODGE AT THE FOOT OF THE STAIRS AND IS IN THE HABIT OF MAKING COFFEE AT HIS SPIRIT LAMP FOR ANY OF THE OFFICIALS WHO MAY BE WORKING OVERTIME + I RANG THE BELL THEREFORE TO SUMMON HIM + QUOTE TO MY SURPRISE IT WAS A WOMAN WHO ANSWERED THE SUMMONS A LARGE COARSE FACED ELDERLY WOMAN IN AN APRON + SHE EXPLAINED THAT SHE WAS THE COMMISSIONAIRE'S WIFE WHO DID THE CHARING AND I GAVE HER THE ORDER FOR THE COFFEE + I WROTE TWO MORE ARTICLES AND THEN FEELING MORE DROWSY THAN EVER I ROSE AND WALKED UP AND DOWN THE ROOM TO STRETCH MY LEGS + MY COFFEE HAD NOT YET COME AND I WONDERED WHAT THE CAUSE OF THE DELAY COULD BE + OPENING THE DOOR I STARTED DOWN THE CORRIDOR TO FIND OUT + THERE WAS A STRAIGHT PASSAGE DIMLY LIGHTED WHICH LED FROM THE ROOM IN WHICH I HAD BEEN WORKING AND WAS THE ONLY EXIT FROM IT + IT ENDED IN A CURVING STAIRCASE WITH THE COMMISSIONAIRE'S LODGE IN THE PASSAGE AT THE BOTTOM + HALFWAY DOWN THIS STAIRCASE IS A SMALL LANDING WITH ANOTHER PASSAGE RUNNING INTO IT AT RIGHT ANGLES + THIS SECOND ONE LEADS BY MEANS OF A SECOND SMALL STAIR TO A SIDE DOOR USED BY SERVANTS AND ALSO AS A SHORT CUT BY CLERKS WHEN COMING FROM CHARLES STREET + HERE IS A ROUGH CHART OF THC PLACE + THANK YOU. L. THINK THAT I QUITE FOLLOW YOU SAID SHERLOCK HOLMES + IT IS OF THE UTMOST IMPORTANCE THAT YOU SHOULD NOTICE THIS POINT + I WENT DOWN THE STAIRS AND INTO THE HALL WHERE I FOUND THE COMMISSIONAIRE FAST ASLEEP IN HIS BOX WITH THE KETTLE BOILING FURIOUSLY UPON THE SPIRIT LAMP + I TOOK OFF THE KETTLE AND BLEW OUT THE LAMP FOR THE WATER WAS SPURTING OVER THE FLOOR + THEN I PUT OUT MY HAND AND WAS ABOUT TO SHAKE THE MAN WHO WAS STILL SLEEPING SOUNDLY WHEN A BELL OVER HIS HEAD RANG LOUDLY AND HE WOKE WITH A START + MR. PHELPS SIR SAID HE LOOKING AT ME IN BEWILDERMENT + QUOTE I CAME DOWN TO SEE IF MY COFFEE WAS READY + I WAS BOILING THE KETTLE WHEN I FELL ASLEEP SIR + HE LOOKED AT ME AND THEN UP AT THE STILL QUIVERING BELL WITH AN EVER GROWING ASTONISHMENT UPON HIS FACE + IF YOU WAS HERE SIR THEN WHO RANG THE BELL HE ASKED + THE BELL + I CRIED + WHAT BELL IS IT + IT'S THE BELL OF THE ROOM YOU WERE WORKING IN + A COLD HAND SEEMED TO CLOSE ROUND MY HEART + SOMEONE THEN WAS IN THAT ROOM WHERE MY PRECIOUS TREATY LAY UPON THE TABLE + I RAN FRANTICALLY UP THE STAIR AND ALONG THE PASSAGE + THERE WAS NO ONE IN THE CORRIDORS MR. HOLMES + THERE WAS NO ONE IN THE ROOM + ALL WAS EXACTLY AS I LEFT IT SAVE ONLY THAT THE PAPERS WHICH HAD BEEN COMMITTED TO MY CARE HAD BEEN TAKEN FROM THE DESK ON WHICH THEY LAY + THE COPY WAS THERE AND THE ORIGINAL WAS GONE QUOTE + HOLMES SAT UP IN HIS CHAIR AND RUBBED HIS HANDS + I COULD SEE THAT THE PROBLEM WAS ENTIRELY TO HIS HEART + PRAY WHAT DID YOU DO THEN HE MURMURED + I RECOGNIZED IN AN INSTANT THAT THE THIEF MUST HAVE COME UP THE STAIRS FROM THE SIDE DOOR + OF COURSE I MUST HAVE MET HIM IF HE HAD COME THE OTHER WAY + YOU WERE SATISFIED THAT HE COULD NOT HAVE BEEN CONCEALED IN THE ROOM ALL THE TIME OR IN THE CORRIDOR WHICH YOU HAVE JUST DESCRIBED AS DIMLY LIGHTED + IT IS ABSOLUTELY IMPOSSIBLE + A RAT COULD NOT CONCEAL HIMSELF EITHER IN THE ROOM OR THE CORRIDOR + THERE IS NO COVER AT ALL + QUOTE THANK YOU + PRAY PROCEED + THE COMMISSIONAIRE SEEING BY MY PALE FACE THAT SOMETHING WAS TO BE FEARED HAD FOLLOWED ME UPSTAIRS + NOW WE BOTH RUSHED ALONG THE CORRIDOR AND DOWN THE STEEP STEPS WHICH LED TO CHARLES STREET + THE DOOR AT THE BOTTOM WAS CLOSED BUT UNLOCKED + WE FLUNG IT OPEN AND RUSHED OUT + I CAN DISTINCTLY REMEMBER THAT AS WE DID SO THERE CAME THREE CHIMES FROM A NEIGHBOURING CLOCK + IT WAS A QUARTER TO TEN + THAT IS OF ENORMOUS IMPORTANCE SAID HOLMES MAKING A NOTE UPON HIS SHIRTCUFF + THE NIGHT WAS VERY DARK AND A THIN WARM RAIN WAS FALLING + THERE WAS NO ONE IN CHARLES STREET BUT A GREAT TRAFFIC WAS GOING ON AS USUAL IN WHITEHALL AT THE EXTREMITY + WE RUSHED ALONG THE PAVEMENT BARE HEADED AS WE WERE AND AT THE FAR CORNER WE FOUND A POLICEMAN STANDING + QUOTE A ROBBERY HAS BEEN COMMITTED I GASPED + A DOCUMENT OF IMMENSE VALUE HAS BEEN STOLEN FROM THE FOREIGN OFFICE + HAS ANYONE PASSED THIS WAY + I HAVE BEEN STANDING HERE FOR A QUARTER OF AN HOUR SIR SAID HE ONLY ONE PERSON HAS PASSED DURING THAT TIME A WOMAN TALL AND ELDERLY WITH A PAISLEY SHAWL + AH THAT IS ONLY MY WIFE CRIED THE COMMISSIONAIRE HAS NO ONE ELSE PASSED + NO ONE + THEN IT MUST BE THE OTHER WAY THAT THE THIEF TOOK CRIED THE FELLOW TUGGING AT MY SLEEVE + BUT I WAS NOT SATISFIED AND THE ATTEMPTS WHICH HE MADE TO DRAW ME AWAY INCREASED MY SUSPICIONS + QUOTE WHICH WAY DID THE WOMAN GO + I CRIED + I DON'T KNOW SIR + I NOTICED HER PASS. BUT I HAD NO SPECIAL REASON FOR WATCHING HER + SHE SEEMED TO BE IN A HURRY + HOW LONG AGO WAS IT + OH NOT VERY MANY MINUTES + WITHIN THE LAST FIVE + WELL IT COULD NOT BE MORE THAN FIVE + QUOTE YOU'RE ONLY WASTING YOUR TIME SIR AND EVERY MINUTE NOW IS OF IMPORTANCE CRIED THE COMMISSIONAIRE TAKE MY WORD FOR IT THAT MY OLD WOMAN HAS NOTHING TO DO WITH IT AND COME DOWN TO THE OTHER END OF THE STREET + WELL IF YOU WON'T I WILL + AND WITH THAT HE RUSHED OFF IN THE OTHER DIRECTION + BUT I WAS AFTER HIM IN AN INSTANT AND CAUGHT HIM BY THE SLEEVE + WHERE DO YOU LIVE SAID I + SIXTEEN IVY LANE BRIXTON HE ANSWERED + BUT DON'T LET YOURSELF BE DRAWN AWAY UPON A FALSE SCENT MR. PHELPS + COME TO THE OTHER END OF THE STREET AND LET US SEE IF WE CAN HEAR OF ANYTHING + NOTHING WAS TO BE LOST BY FOLLOWING HIS ADVICE + WITH THE POLICEMAN WE BOTH HURRIED DOWN BUT ONLY TO FIND THE STREET FULL OF TRAFFIC MANY PEOPLE COMING AND GOING BUT ALL ONLY TOO EAGER TO GET TO A PLACE OF SAFETY UPON SO WET A NIGHT + THERE WAS NO LOUNGER WHO COULD TELL US WHO HAD PASSED + THEN WE RETURNED TO THE OFFICE AND SEARCHED THE STAIRS AND THE PASSAGE WITHOUT RESULT + THE CORRIDOR WHICH LED TO THE ROOM WAS LAID DOWN WITH A KIND OF CREAMY LINOLEUM WHICH SHOWS AN IMPRESSION VERY EASILY + WE EXAMINED IT VERY CAREFULLY BUT FOUND NO OUTLINE OF ANY FOOTMARK QUOTE + HAD IT BEEN RAINING ALL EVENING + SINCE ABOUT SEVEN + HOW IS IT THEN THAT THE WOMAN WHO CAME INTO THE ROOM ABOUT NINE LEFT NO TRACES WITH HER MUDDY BOOTS + I AM GLAD YOU RAISED THE POINT + IT OCCURRED TO ME AT THE TIME + THE CHARWOMEN ARE IN THE HABIT OF TAKING OFF THEIR BOOTS AT THE COMMISSIONAIRE'S OFFICE AND PUTTING ON LIST SLIPPERS + QUOTE THAT IS VERY CLEAR + THERE WERE NO MARKS THEN THOUGH THE NIGHT WAS A WET ONE + THE CHAIN OF EVENTS IS CERTAINLY ONE OF EXTRAORDINARY INTEREST + WHAT DID YOU DO NEXT + WE EXAMINED THE ROOM ALSO + THERE IS NO POSSIBILITY OF A SECRET DOOR AND THE WINDOWS ARE QUITE THIRTY FEET FROM THE GROUND + BOTH OF THEM WERE FASTENED ON THE INSIDE + THE CARPET PREVENTS ANY POSSIBILITY OF A TRAPDOOR AND THE CEILING IS OF THE ORDINARY WHITEWASHED KIND + I WILL PLEDGE MY LIFE THAT WHOEVER STOLE MY PAPERS COULD ONLY HAVE COME THROUGH THE DOOR + HOW ABOUT THE FIREPLACE + THEY USE NONE + THERE IS A STOVE + THE BELL ROPE HANGS FROM THE WIRE JUST TO THE RIGHT OF MY DESK + WHOEVER RANG IT MUST HAVE COME RIGHT UP TO THE DESK TO DO IT + BUT WHY SHOULD ANY CRIMINAL WISH TO RING THE BELL + IT IS A MOST INSOLUBLE MYSTERY QUOTE + CERTAINLY THE INCIDENT WAS UNUSUAL + WHAT WERE YOUR NEXT STEPS + YOU EXAMINED THE ROOM I PRESUME TO SEE IF THE INTRUDER HAD LEFT ANY TRACES ANY CIGAR END OR DROPPED GLOVE OR HAIRPIN OR OTHER TRIFLE + THERE WAS NOTHING OF THE SORT + NO SMELL + WELL WE NEVER THOUGHT OF THAT + QUOTE AH A SCENT OF TOBACCO WOULD HAVE BEEN WORTH A GREAT DEAL TO US IN SUCH AN INVESTIGATION QUOTE + I NEVER SMOKE MYSELF SO I THINK I SHOULD HAVE OBSERVED IT IF THERE HAD BEEN ANY SMELL OF TOBACCO + THERE WAS ABSOLUTELY NO CLUE OF ANY KIND + THE ONLY TANGIBLE FACT WAS THAT THE COMMISSIONAIRE'S WIFE MRS. TANGEY WAS THE NAME HAD HURRIED OUT OF THE PLACE + HE COULD GIVE NO EXPLANATION SAVE THAT IT WAS ABOUT THE TIME WHEN THE WOMAN ALWAYS WENT HOME + THE POLICEMAN AND I AGREED THAT OUR BEST PLAN WOULD BE TO SEIZE THE WOMAN BEFORE SHE COULD GET RID OF THE PAPERS PRESUMING THAT SHE HAD THEM + THE ALARM HAD REACHED SCOTLAND YARD BY THIS TIME AND MR. FORBES THE DETECTIVE CAME ROUND AT ONCE AND TOOK UP THE CASE WITH A GREAT DEAL OF ENERGY + WE HIRED A HANSOM AND IN HALF AN HOUR WE WERE AT THE ADDRESS WHICH HAD BEEN GIVEN TO US + A YOUNG WOMAN OPENED THE DOOR WHO PROVED TO BE MRS. TANGEY'S ELDEST DAUGHTER + HER MOTHER HAD NOT COME BACK YET AND WE WERE SHOWN INTO THE FRONT ROOM TO WAIT + ABOUT TEN MINUTES LATER A KNOCK CAME AT THE DOOR AND HERE WE MADE THE ONE SERIOUS MISTAKE FOR WHICH I BLAME MYSELF + INSTEAD OF OPENING THE DOOR OURSELVES WE ALLOWED THE GIRL TO DO SO + WE HEARD HER SAY MOTHER THERE ARE TWO MEN IN THE HOUSE WAITING TO SEE YOU AND AN INSTANT AFTERWARDS WE HEARD THE PATTER OF FEET RUSHING DOWN THE PASSAGE + FORBES FLUNG OPEN THE DOOR AND WE BOTH RAN INTO THE BACK ROOM OR KITCHEN BUT THE WOMAN HAD GOT THERE BEFORE US + SHE STARED AT US WITH DEFIANT EYES. AND THEN SUDDENLY RECOGNIZING ME AN EXPRESSION OF ABSOLUTE ASTONISHMENT CAME OVER HER FACE + WHY IF IT ISN'T MR. PHELPS OF THE OFFICE SHE CRIED + COME COME WHO DID YOU THINK WE WERE WHEN YOU RAN AWAY FROM US ASKED MY COMPANION + QUOTE I THOUGHT YOU WERE THE BROKERS SAID SHE WE HAVE HAD SOME TROUBLE WITH A TRADESMAN + THAT'S NOT QUITE GOOD ENOUGH ANSWERED FORBES + WE HAVE REASON TO BELIEVE THAT YOU HAVE TAKEN A PAPER OF IMPORTANCE FROM THE FOREIGN OFFICE AND THAT YOU RAN IN HERE TO DISPOSE OF IT + YOU MUST COME BACK WITH US TO SCOTLAND YARD TO BE SEARCHED + IT WAS IN VAIN THAT SHE PROTESTED AND RESISTED + A FOUR WHEELER WAS BROUGHT AND WE ALL THREE DROVE BACK IN IT + WE HAD FIRST MADE AN EXAMINATION OF THE KITCHEN AND ESPECIALLY OF THE KITCHEN FIRE TO SEE WHETHER SHE MIGHT HAVE MADE AWAY WITH THE PAPERS DURING THE INSTANT THAT SHE WAS ALONE + THERE WERE NO SIGNS HOWEVER OF ANY ASHES OR SCRAPS + WHEN WE REACHED SCOTLAND YARD SHE WAS HANDED OVER AT ONCE TO THE FEMALE SEARCHER + I WAITED IN AN AGONY OF SUSPENSE UNTIL SHE CAME BACK WITH HER REPORT + THERE WERE NO SIGNS OF THE PAPERS + THEN FOR THE FIRST TIME THE HORROR OF MY SITUATION CAME IN ITS FULL FORCE + HITHERTO I HAD BEEN ACTING AND ACTION HAD NUMBED THOUGHT + I HAD BEEN SO CONFIDENT OF REGAINING THE TREATY AT ONCE THAT I HAD NOT DARED TO THINK OF WHAT WOULD BE THE CONSEQUENCE IF I FAILED TO DO SO + BUT NOW THERE WAS NOTHING MORE TO BE DONE AND I HAD LEISURE TO REALIZE MY POSITION + IT WAS HORRIBLE + WATSON THERE WOULD TELL YOU THAT I WAS A NERVOUS SENSITIVE BOY AT SCHOOL + IT IS MY NATURE + I THOUGHT OF MY UNCLE AND OF HIS COLLEAGUES IN THE CABINET OF THE SHAME WHICH I HAD BROUGHT UPON HIM UPON MYSELF UPON EVERYONE CONNECTED WITH ME + WHAT THOUGH I WAS THE VICTIM OF AN EXTRAORDINARY ACCIDENT + NO ALLOWANCE IS MADE FOR ACCIDENTS WHERE DIPLOMATIC INTERESTS ARE AT STAKE + I WAS RUINED SHAMEFULLY HOPELESSLY RUINED + I DON'T KNOW WHAT I DID + I FANCY I MUST HAVE MADE A SCENE + I HAVE A DIM RECOLLECTION OF A GROUP OF OFFICIALS WHO CROWDED ROUND ME ENDEAVOURING TO SOOTHE ME + ONE OF THEM DROVE DOWN WITH ME TO WATERLOO AND SAW ME INTO THE WOKING TRAIN + I BELIEVE THAT HE WOULD HAVE COME ALL THE WAY HAD IT NOT BEEN THAT DOCTOR FERRIER WHO LIVES NEAR ME WAS GOING DOWN BY THAT VERY TRAIN + THE DOCTOR MOST KINDLY TOOK CHARGE OF ME AND IT WAS WELL HE DID SO FOR I HAD A FIT IN THE STATION AND BEFORE WE REACHED HOME I WAS PRACTICALLY A RAVING MANIAC + YOU CAN IMAGINE THE STATE OF THINGS HERE WHEN THEY WERE ROUSED FROM THEIR BEDS BY THE DOCTOR'S RINGING AND FOUND ME IN THIS CONDITION + POOR ANNIE HERE AND MY MOTHER WERE BROKENHEARTED + DOCTOR FERRIER HAD JUST HEARD ENOUGH FROM THE DETECTIVE AT THE STATION TO BE ABLE TO GIVE AN IDEA OF WHAT HAD HAPPENED AND HIS STORY DID NOT MEND MATTERS + IT WAS EVIDENT TO ALL THAT I WAS IN FOR A LONG ILLNESS SO JOSEPH WAS BUNDLED OUT OF THIS CHEERY BEDROOM AND IT WAS TURNED INTO A SICKROOM FOR ME + HERE I HAVE LAIN + MR. HOLMES FOR OVER NINE WEEKS UNCONSCIOUS AND RAVING WITH BRAIN FEVER + IF IT HAD NOT BEEN FOR MISS HARRISON HERE AND FOR THE DOCTOR'S CARE + I SHOULD NOT BE SPEAKING TO YOU NOW + SHE HAS NURSED ME BY DAY AND A HIRED NURSE HAS LOOKED AFTER ME BY NIGHT FOR IN MY MAD FITS I WAS CAPABLE OF ANYTHING + SLOWLY MY REASON HAS CLEARED BUT IT IS ONLY DURING THE LAST THREE DAYS THAT MY MEMORY HAS QUITE RETURNED + SOMETIMES I WISH THAT IT NEVER HAD + THE FIRST THING THAT I DID WAS TO WIRE TO MR. FORBES WHO HAD THE CASE IN HAND + HE CAME OUT AND ASSURES ME THAT THOUGH EVERYTHING HAS BEEN DONE NO TRACE OF A CLUE HAS BEEN DISCOVERED + THE COMMISSIONAIRE AND HIS WIFE HAVE BEEN EXAMINED IN EVERY WAY WITHOUT ANY LIGHT BEING THROWN UPON THE MATTER + THE SUSPICIONS OF THE POLICE THEN RESTED UPON YOUNG GOROT WHO AS YOU MAY REMEMBER STAYED OVER TIME IN THE OFFICE THAT NIGHT + HIS REMAINING BEHIND AND HIS FRENCH NAME WERE REALLY THE ONLY TWO POINTS WHICH COULD SUGGEST SUSPICION BUT AS A MATTER OF FACT I DID NOT BEGIN WORK UNTIL HE HAD GONE AND HIS PEOPLE ARE OF HUGUENOT EXTRACTION BUT AS ENGLISH IN SYMPATHY AND TRADITION AS YOU AND I ARE + NOTHING WAS FOUND TO IMPLICATE HIM IN ANY WAY AND THERE THE MATTER DROPPED + I TURN TO YOU MR. HOLMES AS ABSOLUTELY MY LAST HOPE + IF YOU FAIL ME THEN MY HONOUR AS WELL AS MY POSITION ARE FOREVER FORFEITED + THE INVALID SANK BACK UPON HIS CUSHIONS TIRED OUT BY THIS LONG RECITAL WHILE HIS NURSE POURED HIM OUT A GLASS OF SOME STIMULATING MEDICINE + HOLMES SAT SILENTLY WITH HIS HEAD THROWN BACK AND HIS EYES CLOSED IN AN ATTITUDE WHICH MIGHT SEEM LISTLESS TO A STRANGER BUT WHICH I KNEW BETOKENED THE MOST INTENSE SELFABSORPTION + QUOTE YOUR STATEMENT HAS BEEN SO EXPLICIT QUOTE SAID HE AT LAST QUOTE THAT YOU HAVE REALLY LEFT ME VERY FEW QUESTIONS TO ASK + THERE IS ONE OF THE VERY UTMOST IMPORTANCE HOWEVER + DID YOU TELL ANYONE THAT YOU HAD THIS SPECIAL TASK TO PERFORM + NO ONE + NOT MISS HARRISON HERE FOR EXAMPLE + NUMBER + I HAD NOT BEEN BACK TO WOKING BETWEEN GETTING THE ORDER AND EXECUTING THE COMMISSION + QUOTE AND NONE OF YOUR PEOPLE HAD BY CHANCE BEEN TO SEE YOU QUOTE + NONE + DID ANY OF THEM KNOW THEIR WAY ABOUT IN THE OFFICE + OH YES ALL OF THEM HAD BEEN SHOWN OVER IT + STILL OF COURSE IF YOU SAID NOTHING TO ANYONE ABOUT THE TREATY THESE INQUIRIES ARE IRRELEVANT + I SAID NOTHING + QUOTE DO YOU KNOW ANYTHING OF THE COMMISSIONAIRE QUOTE + NOTHING CXCEPT THAT HE IS AN OLD SOLDIER + WHAT REGIMENT + OH I HAVE HEARD GOLDSTREAM GUARDS + THANK YOU + I HAVE NO DOUBT I CAN GET DETAILS FROM FORBES + THE AUTHORITIES ARE EXCELLENT AT AMASSING FACTS THOUGH THEY DO NOT ALWAYS USE THEM TO ADVANTAGE + WHAT A LOVELY THING A ROSE IS + HE WALKED PAST THE COUCH TO THE OPEN WINDOW AND HELD UP THE DROOPING STALK OF A MOSS ROSE LOOKING DOWN AT THE DAINTY BLEND OF CRIMSON AND GREEN + IT WAS A NEW PHASE OF HIS CHARACTER TO ME FOR I HAD NEVER BEFORE SEEN HIM SHOW ANY KEEN INTEREST IN NATURAL OBJECTS + QUOTE THERE IS NOTHING IN WHICH DEDUCTION IS SO NECESSARY AS IN RELIGION QUOTE SAID HE LEANING WITH HIS BACK AGAINST THE SHUTTERS + IT CAN BE BUILT UP AS AN EXACT SCIENCE BY THE REASONER + OUR HIGHEST ASSURANCE OF THE GOODNESS OF PROVIDENCE SEEMS TO ME TO REST IN THE FLOWERS + ALL OTHER THINGS OUR POWERS OUR DESIRES OUR FOOD ARE ALL REALLY NECESSARY FOR OUR EXISTENCE IN THE FIRST INSTANCE + BUT THIS ROSE IS AN EXTRA + ITS SMELL AND ITS COLOUR ARE AN EMBELLISHMENT OF LIFE NOT A CONDITION OF IT + IT IS ONLY GOODNESS WHICH GIVES EXTRAS AND SO I SAY AGAIN THAT WE HAVE MUCH TO HOPE FROM THE FLOWERS + PERCY PHELPS AND HIS NURSE LOOKED AT HOLMES DURING THIS DEMONSTRATION WITH SURPRISE AND A GOOD DEAL OF DISAPPOINTMENT WRITTEN UPON THEIR FACES + HE HAD FALLEN INTO A REVERIE WITH THE MOSS ROSE BETWEEN HIS FINGERS + IT HAD LASTED SOME MINUTES BEFORE THE YOUNG LADY BROKE IN UPON IT + DO YOU SEE ANY PROSPECT OF SOLVING THIS MYSTERY MR. HOLMES SHE ASKED WITH A TOUCH OF ASPERITY IN HER VOICE + OH THE MYSTERY HE ANSWERED COMING BACK WITH A START TO THE REALITIES OF LIFE + WELL IT WOULD BE ABSURD TO DENY THAT THE CASE IS A VERY ABSTRUSE AND COMPLICATED ONE BUT I CAN PROMISE YOU THAT I WILL LOOK INTO THE MATTER AND LET YOU KNOW ANY POINTS WHICH MAY STRIKE ME + QUOTE DO YOU SEE ANY CLUE QUOTE + YOU HAVE FURNISHED ME WITH SEVEN BUT OF COURSE I MUST TEST THEM BEFORE I CAN PRONOUNCE UPON THEIR VALUE + YOU SUSPECT SOMEONE + I SUSPECT MYSELF + WHAT + OF COMING TO CONCLUSIONS TOO RAPIDLY + QUOTE THEN GO TO LONDON AND TEST YOUR CONCLUSIONS QUOTE + YOUR ADVICE IS VERY EXCELLENT + MISS HARRISON SAID HOLMCS RISING + I THINK WATSON WE CANNOT DO BETTER + DO NOT ALLOW YOURSELF TO INDULGE IN FALSE HOPES MR. PHELPS + THE AFFAIR IS A VERY TANGLED ONE + I SHALL BE IN A FEVER UNTIL I SEE YOU AGAIN CRIED THE DIPLOMATIST + QUOTE WELL I'LL COME OUT BY THE SAME TRAIN TO MORROW THOUGH IT'S MORE THAN LIKELY THAT MY REPORT WILL BE A NEGATIVE ONE QUOTE + GOD BLESS YOU FOR PROMISING TO COME CRIED OUR CLIENT + IT GIVES ME FRESH LIFE TO KNOW THAT SOMETHING IS BEING DONE + BY THE WAY I HAVE HAD A LETTER FROM LORD HOLDHURST + HA WHAT DID HE SAY + HE WAS COLD BUT NOT HARSH I DARE SAY MY SEVERE ILLNESS PREVENTED HIM FROM BEING THAT + HE REPEATED THAT THE MATTER WAS OF THE UTMOST IMPORTANCE AND ADDED THAT NO STEPS WOULD BE TAKEN ABOUT MY FUTURE BY WHICH HE MEANS OF COURSE MY DISMISSAL UNTIL MY HEALTH WAS RESTORED AND I HAD AN OPPORTUNITY OF REPAIRING MY MISFORTUNE QUOTE + WELL THAT WAS REASONABLE AND CONSIDERATE SAID HOLMES + COME WATSON FOR WE HAVE A GOOD DAY'S WORK BEFORE US IN TOWN + MR. JOSEPH HARRISON DROVE US DOWN TO THE STATION AND WE WERE SOON WHIRLING UP IN A PORTSMOUTH TRAIN + HOLMES WAS SUNK IN PROFOUND THOUGHT AND HARDLY OPENED HIS MOUTH UNTIL WE HAD PASSED CLAPHAM JUNCTION + IT'S A VERY CHEERY THING TO COME INTO LONDON BY ANY OF THESE LINES WHICH RUN HIGH AND ALLOW YOU TO LOOK DOWN UPON THE HOUSES LIKE THIS + I THOUGHT HE WAS JOKING FOR THE VIEW WAS SORDID ENOUGH BUT HE SOON EXPLAINED HIMSELF + LOOK AT THOSE BIG ISOLATED CLUMPS OF BUILDINGS RISING UP ABOVE THE SLATES LIKE BRICK ISLANDS IN A LEAD COLOURED SEA + THE BOARD SCHOOLS + QUOTE LIGHT HOUSES MY BOY + BEACONS OF THE FUTURE + CAPSULES WITH HUNDREDS OF BRIGHT LITTLE SEEDS IN EACH. OUT OF WHICH WILL SPRING THE WISER BETTER ENGLAND OF THE FUTURE + I SUPPOSE THAT MAN PHELPS DOES NOT DRINK + I SHOULD NOT THINK SO + NOR SHOULD I BUT WE ARE BOUND TO TAKE EVERY POSSIBILITY INTO ACCOUNT + THE POOR DEVIL HAS CERTAINLY GOT HIMSELF INTO VERY DEEP WATER AND IT'S A QUESTION WHETHER WE SHALL EVER BE ABLE TO GET HIM ASHORE + WHAT DO YOU THINK OF MISS HARRISON + A GIRL OF STRONG CHARACTER + QUOTE YES. BUT SHE IS A GOOD SORT OR I AM MISTAKEN + SHE AND HER BROTHER ARE THE ONLY CHILDREN OF AN IRON MASTER SOMEWHERE UP NORTHUMBERLAND WAY + HE GOT ENGAGED TO HER WHEN TRAVELLING LAST WINTER AND SHE CAME DOWN TO BE INTRODUCED TO HIS PEOPLE WITH HER BROTHER AS ESCORT + THEN CAME THE SMASH AND SHE STAYED ON TO NURSE HER LOVER WHILE BROTHER JOSEPH FINDING HIMSELF PRETTY SNUG STAYED ON TOO + I'VE BEEN MAKING A FEW INDEPENDENT INQUIRIES YOU SEE + BUT TO DAY MUST BE A DAY OF INQUIRIES + MY PRACTICE I BEGAN + OH IF YOU FIND YOUR OWN CASES MORE INTERESTING THAN MINE SAID HOLMES WITH SOME ASPERITY + I WAS GOING TO SAY THAT MY PRACTICE COULD GET ALONG VERY WELL FOR A DAY OR TWO SINCE IT IS THE SLACKEST TIME IN THE YEAR + EXCELLENT SAID HE RECOVERING HIS GOOD HUMOUR + QUOTE THEN WE'LL LOOK INTO THIS MATTER TOGETHER + I THINK THAT WE SHOULD BEGIN BY SEEING FORBES + HE CAN PROBABLY TELL US ALL THE DETAILS WE WANT UNTIL WE KNOW FROM WHAT SIDE THE CASE IS TO BE APPROACHED + YOU SAID YOU HAD A CLUE + WELL WE HAVE SEVERAL BUT WE CAN ONLY TEST THEIR VALUE BY FURTHER INQUIRY + THE MOST DIFFICULT CRIME TO TRACK IS THE ONE WHICH IS PURPOSELESS + NOW THIS IS NOT PURPOSELESS + WHO IS IT WHO PROFITS BY IT + THERE IS THE FRENCH AMBASSADOR THERE IS THE RUSSIAN THERE IS WHOEVER MIGHT SELL IT TO EITHER OF THESE AND THERE IS LORD HOLDHURST + LORD HOLDHURST + QUOTE WELL IT IS JUST CONCEIVABLE THAT A STATESMAN MIGHT FIND HIMSELF IN A POSITION WHERE HE WAS NOT SORRY TO HAVE SUCH A DOCUMENT ACCIDENTALLY DESTROYED QUOTE + NOT A STATESMAN WITH THE HONOURABLE RECORD OF LORD HOLDHURST + IT IS A POSSIBILITY AND WE CANNOT AFFORD TO DISREGARD IT + WE SHALL SEE THE NOBLE LORD TO DAY AND FIND OUT IF HE CAN TELL US ANYTHING + MEANWHILE I HAVE ALREADY SET INQUIRIES ON FOOT + ALREADY + YES I SENT WIRES FROM WOKING STATION TO EVERY EVENING PAPER IN LONDON + THIS ADVERTISEMENT WILL APPEAR IN EACH OF THEM QUOTE + HE HANDED OVER A SHEET TORN FROM A NOTEBOOK + ON IT WAS SCRIBBLED IN PENCIL TEN POUNDS REWARD + THE NUMBER OF THE CAB WHICH DROPPED A FARE AT OR ABOUT THE DOOR OF THE FOREIGN OFFICE IN CHARLES STREET AT QUARTER TO TEN IN THE EVENING OF MAY TWENTY THREE D. + APPLY TWENTY TWO L. B. BAKER STREET + YOU ARE CONFIDENT THAT THE THIEF CAME IN A CAB + IF NOT THERE IS NO HARM DONE + BUT IF MR. PHELPS IS CORRECT IN STATING THAT THERE IS NO HIDING PLACE EITHER IN THE ROOM OR THE CORRIDORS THEN THE PERSON MUST HAVE COME FROM OUTSIDE + IF HE CAME FROM OUTSIDE ON SO WET A NIGHT AND YET LEFT NO TRACE OF DAMP UPON THE LINOLEUM WHICH WAS EXAMINED WITHIN A FEW MINUTES OF HIS PASSING THEN IT IS EXCEEDINGLY PROBABLE THAT HE CAME IN A CAB + YES I THINK THAT WE MAY SAFELY DEDUCE A CAB + IT SOUNDS PLAUSIBLE + THAT IS ONE OF THE CLUES OF WHICH I SPOKE + IT MAY LEAD US TO SOMETHING + AND THEN OF COURSE THERE IS THE BELL WHICH IS THE MOST DISTINCTIVE FEATURE OF THE CASE + WHY SHOULD THE BELL RING + WAS IT THE THIEF WHO DID IT OUT OF BRAVADO + OR WAS IT SOMEONE WHO WAS WITH THE THIEF WHO DID IT IN ORDER TO PREVENT THE CRIME + OR WAS IT AN ACCIDENT + OR WAS IT QUOTE + HE SANK BACK INTO THE STATE OF INTENSE AND SILENT THOUGHT FROM WHICH HE HAD EMERGED BUT IT SEEMED TO ME ACCUSTOMED AS I WAS TO HIS EVERY MOOD THAT SOME NEW POSSIBILITY HAD DAWNED SUDDENLY UPON HIM + IT WAS TWENTY PAST THREE WHEN WE REACHED OUR TERMINUS AND AFTER A HASTY LUNCHEON AT THE BUFFET WE PUSHED ON AT ONCE TO SCOTLAND YARD + HOLMES HAD ALREADY WIRED TO FORBES AND WE FOUND HIM WAITING TO RECEIVE US A SMALL FOXY MAN WITH A SHARP BUT BY NO MEANS AMIABLE EXPRESSION + HE WAS DECIDEDLY FRIGID IN HIS MANNER TO US ESPECIALLY WHEN HE HEARD THE ERRAND UPON WHICH WE HAD COME + I'VE HEARD OF YOUR METHODS BEFORE NOW MR. HOLMES SAID HE TARTLY + YOU ARE READY ENOUGH TO USE ALL THE INFORMATION THAT THE POLICE CAN LAY AT YOUR DISPOSAL AND THEN YOU TRY TO FINISH THE CASE YOURSELF AND BRING DISCREDIT ON THEM + ON THE CONTRARY SAID HOLMES OUT OF MY LAST FIFTY THREE CASES MY NAME HAS ONLY APPEARED IN FOUR AND THE POLICE HAVE HAD ALL THE CREDIT IN FORTY NINE + I DON'T BLAME YOU FOR NOT KNOWING THIS FOR YOU ARE YOUNG AND INEXPERIENCED BUT IF YOU WISH TO GET ON IN YOUR NEW DUTIES YOU WILL WORK WITH ME AND NOT AGAINST ME + I'D BE VERY GLAD OF A HINT OR TWO SAID THE DETECTIVE CHANGING HIS MANNER + QUOTE I'VE CERTAINLY HAD NO CREDIT FROM THE CASE SO FAR QUOTE + WHAT STEPS HAVE YOU TAKEN + TANGEY THE COMMISSIONAIRE HAS BEEN SHADOWED + HE LEFT THE GUARDS WITH A GOOD CHARACTER AND WE CAN FIND NOTHING AGAINST HIM + HIS WIFE IS A BAD LOT THOUGH + I FANCY SHE KNOWS MORE ABOUT THIS THAN APPEARS + HAVE YOU SHADOWED HER + WE HAVE SET ONE OF OUR WOMEN ON TO HER + MRS. TANGEY DRINKS AND OUR WOMAN HAS BEEN WITH HER TWICE WHEN SHE WAS WELL ON BUT SHE COULD GET NOTHING OUT OF HER QUOTE + I UNDERSTAND THAT THEY HAVE HAD BROKERS IN THE HOUSE + YES BUT THEY WERE PAID OFF + WHERE DID THE MONEY COME FROM + THAT WAS ALL RIGHT + HIS PENSION WAS DUE + THEY HAVE NOT SHOWN ANY SIGN OF BEING IN FUNDS + QUOTE WHAT EXPLANATION DID SHE GIVE OF HAVING ANSWERED THE BELL WHEN MR. PHELPS RANG FOR THE COFFEE QUOTE + SHE SAID THAT HER HUSBAND WAS VERY TIRED AND SHE WISHED TO RELIEVE HIM + WELL CERTAINLY THAT WOULD AGREE WITH HIS BEING FOUND A LITTLE LATER ASLEEP IN HIS CHAIR + THERE IS NOTHING AGAINST THEM THEN BUT THE WOMAN'S CHARACTER + DID YOU ASK HER WHY SHE HURRIED AWAY THAT NIGHT + HER HASTE ATTRACTED THE ATTENTION OF THE POLICE CONSTABLE + SHE WAS LATER THAN USUAL AND WANTED TO GET HOME + DID YOU POINT OUT TO HER THAT YOU AND MR. PHELPS WHO STARTED AT LEAST TWENTY MINUTES AFTER HER GOT HOME BEFORE HER + QUOTE SHE EXPLAINS THAT BY THE DIFFERENCE BETWEEN A BUS AND A HANSOM QUOTE + DID SHE MAKE IT CLEAR WHY ON REACHING HER HOUSE SHE RAN INTO THE BACK KITCHEN + BECAUSE SHE HAD THE MONEY THERE WITH WHICH TO PAY OFF THE BROKERS + SHE HAS AT LEAST AN ANSWER FOR EVERYTHING + DID YOU ASK HER WHETHER IN LEAVING SHE MET ANYONE OR SAW ANYONE LOITERING ABOUT CHARLES STREET + SHE SAW NO ONE BUT THE CONSTABLE + QUOTE WELL YOU SEEM TO HAVE CROSS EXAMINED HER PRETTY THOROUGHLY + WHAT ELSE HAVE YOU DONE + THE CLERK GOROT HAS BEEN SHADOWED ALL THESE NINE WEEKS BUT WITHOUT RESULT + WE CAN SHOW NOTHING AGAINST HIM + ANYTHING ELSE + WELL WE HAVE NOTHING ELSE TO GO UPON NO EVIDENCE OF ANY KIND + QUOTE HAVE YOU FORMED ANY THEORY ABOUT HOW THAT BELL RANG QUOTE + WELL I MUST CONFESS THAT IT BEATS ME + IT WAS A COOL HAND WHOEVER IT WAS TO GO AND GIVE THE ALARM LIKE THAT + YES IT WAS A QUEER THING TO DO + MANY THANKS TO YOU FOR WHAT YOU HAVE TOLD ME + IF I CAN PUT THE MAN INTO YOUR HANDS YOU SHALL HEAR FROM ME + COME ALONG + WATSON + WHERE ARE WE GOING TO NOW + I ASKED AS WE LEFT THE OFFICE + QUOTE WE ARE NOW GOING TO INTERVIEW LORD HOLDHURST THE CABINET MINISTER AND FUTURE PREMIER OF ENGLAND QUOTE + WE WERE FORTUNATE IN FINDING THAT LORD HOLDHURST WAS STILL IN HIS CHAMBERS IN DOWNING STREET AND ON HOLMES SENDING IN HIS CARD WE WERE INSTANTLY SHOWN UP + THE STATESMAN RECEIVED US WITH THAT OLD FASHIONED COURTESY FOR WHICH HE IS REMARKABLE AND SEATED US ON THE TWO LUXURIANT LOUNGES ON EITHER SIDE OF THE FIREPLACE + STANDING ON THE RUG BETWEEN US WITH HIS SLIGHT TALL FIGURE HIS SHARP FEATURES THOUGHTFUL FACE AND CURLING HAIR PREMATURELY TINGED WITH GRAY HE SEEMED TO REPRESENT THAT NOT TOO COMMON TYPE A NOBLEMAN WHO IS IN TRUTH NOBLE + YOUR NAME IS VERY FAMILIAR TO ME MR. HOLMES SAID HE SMILING + AND OF COURSE I CANNOT PRETEND TO BE IGNORANT OF THE OBJECT OF YOUR VISIT + THERE HAS ONLY BEEN ONE OCCURRENCE IN THESE OFFICES WHICH COULD CALL FOR YOUR ATTENTION + IN WHOSE INTEREST ARE YOU ACTING MAY I ASK + IN THAT OF MR. PERCY PHELPS ANSWERED HOLMES + AH MY UNFORTUNATE NEPHEW + YOU CAN UNDERSTAND THAT OUR KINSHIP MAKES IT THE MORE IMPOSSIBLE FOR ME TO SCREEN HIM IN ANY WAY + I FEAR THAT THE INCIDENT MUST HAVE A VERY PREJUDICIAL EFFECT UPON HIS CAREER QUOTE + BUT IF THE DOCUMENT IS FOUND + AH THAT OF COURSE WOULD BE DIFFERENT + I HAD ONE OR TWO QUESTIONS WHICH I WISHED TO ASK YOU LORD HOLDHURST + I SHALL BE HAPPY TO GIVE YOU ANY INFORMATION IN MY POWER + WAS IT IN THIS ROOM THAT YOU GAVE YOUR INSTRUCTIONS AS TO THE COPYING OF THE DOCUMENT + QUOTE IT WAS QUOTE + THEN YOU COULD HARDLY HAVE BEEN OVERHEARD + IT IS OUT OF THE QUESTION + DID YOU EVER MENTION TO ANYONE THAT IT WAS YOUR INTENTION TO GIVE ANYONE THE TREATY TO BE COPIED + NEVER + YOU ARE CERTAIN OF THAT + QUOTE ABSOLUTELY QUOTE + WELL SINCE YOU NEVER SAID SO AND MR. PHELPS NEVER SAID SO AND NOBODY ELSE KNEW ANYTHING OF THE MATTER THEN THE THIEF'S PRESENCE IN THE ROOM WAS PURELY ACCIDENTAL + HE SAW HIS CHANCE AND HE TOOK IT + THE STATESMAN SMILED + YOU TAKE ME OUT OF MY PROVINCE THERE SAID HE + HOLMES CONSIDERED FOR A MOMENT + THERE IS ANOTHER VERY IMPORTANT POINT WHICH I WISH TO DISCUSS WITH YOU SAID HE + YOU FEARED AS I UNDERSTAND THAT VERY GRAVE RESULTS MIGHT FOLLOW FROM THE DETAILS OF THIS TREATY BECOMING KNOWN + A SHADOW PASSED OVER THE EXPRESSIVE FACE OF THE STATESMAN + QUOTE VERY GRAVE RESULTS INDEED QUOTE + AND HAVE THEY OCCURRED + NOT YET + IF THE TREATY HAD REACHED LET US SAY THE FRENCH OR RUSSIAN FOREIGN OFFICE YOU WOULD EXPECT TO HEAR OF IT + I SHOULD SAID LORD HOLDHURST WITH A WRY FACE + SINCE NEARLY TEN WEEKS HAVE ELAPSED THEN AND NOTHING HAS BEEN HEARD IT IS NOT UNFAIR TO SUPPOSE THAT FOR SOME REASON THE TREATY HAS NOT REACHED THEM + LORD HOLDHURST SHRUGGED HIS SHOULDERS + QUOTE WE CAN HARDLY SUPPOSE MR. HOLMES THAT THE THIEF TOOK THE TREATY IN ORDER TO FRAME IT AND HANG IT UP QUOTE + PERHAPS HE IS WAITING FOR A BETTER PRICE + IF HE WAITS A LITTLE LONGER HE WILL GET NO PRICE AT ALL + THE TREATY WILL CEASE TO BE SECRET IN A FEW MONTHS + THAT IS MOST IMPORTANT SAID HOLMES + OF COURSE IT IS A POSSIBLE SUPPOSITION THAT THE THIEF HAS HAD A SUDDEN ILLNESS + QUOTE AN ATTACK OF BRAIN FEVER FOR EXAMPLE QUOTE ASKED THE STATESMAN FLASHING A SWIFT GLANCE AT HIM + I DID NOT SAY SO SAID HOLMES IMPERTURBABLY + AND NOW LORD HOLDHURST WE HAVE ALREADY TAKEN UP TOO MUCH OF YOUR VALUABLE TIME AND WE SHALL WISH YOU GOOD DAY + EVERY SUCCESS TO YOUR INVESTIGATION BE THE CRIMINAL WHO IT MAY ANSWERED THE NOBLEMAN AS HE BOWED US OUT AT THE DOOR + HE'S A FINE FELLOW SAID HOLMES AS WE CAME OUT INTO WHITEHALL + BUT HE HAS A STRUGGLE TO KEEP UP HIS POSITION + HE IS FAR FROM RICH AND HAS MANY CALLS + YOU NOTICED OF COURSE THAT HIS BOOTS HAD BEEN RESOLED + NOW WATSON I WON'T DETAIN YOU FROM YOUR LEGITIMATE WORK ANY LONGER + I SHALL DO NOTHING MORE TO DAY UNLESS I HAVE AN ANSWER TO MY CAB ADVERTISEMENT + BUT I SHOULD BE EXTREMELY OBLIGED TO YOU IF YOU WOULD COME DOWN WITH ME TO WOKING TO MORROW BY THE SAME TRAIN WHICH WE TOOK YESTERDAY QUOTE + I MET HIM ACCORDINGLY NEXT MORNING AND WE TRAVELLED DOWN TO WOKING TOGETHER + HE HAD HAD NO ANSWER TO HIS ADVERTISEMENT HE SAID AND NO FRESH LIGHT HAD BEEN THROWN UPON THE CASE + HE HAD WHEN HE SO WILLED IT THE UTTER IMMOBILITY OF COUNTENANCE OF A RED INDIAN AND I COULD NOT GATHER FROM HIS APPEARANCE WHETHER HE WAS SATISFIED OR NOT WITH THE POSITION OF THE CASE + HIS CONVERSATION I REMEMBER WAS ABOUT THE BERTILLON SYSTEM OF MEASUREMENTS AND HE EXPRESSED HIS ENTHUSIASTIC ADMIRATION OF THE FRENCH SAVANT + WE FOUND OUR CLIENT STILL UNDER THE CHARGE OF HIS DEVOTED NURSE BUT LOOKING CONSIDERABLY BETTER THAN BEFORE + HE ROSE FROM THE SOFA AND GREETED US WITHOUT DIFFICULTY WHEN WE ENTERED + ANY NEWS HE ASKED EAGERLY + MY REPORT AS I EXPECTED IS A NEGATIVE ONE SAID HOLMES + I HAVE SEEN FORBES AND I HAVE SEEN YOUR UNCLE AND I HAVE SET ONE OR TWO TRAINS OF INQUIRY UPON FOOT WHICH MAY LEAD TO SOMETHING + YOU HAVE NOT LOST HEART THEN + BY NO MEANS + QUOTE GOD BLESS YOU FOR SAYING THAT QUOTE CRIED MISS HARRISON + IF WE KEEP OUR COURAGE AND OUR PATIENCE THE TRUTH MUST COME OUT + WE HAVE MORE TO TELL YOU THAN YOU HAVE FOR US SAID PHELPS RESEATING HIMSELF UPON THE COUCH + I HOPED YOU MIGHT HAVE SOMETHING + YES WE HAVE HAD AN ADVENTURE DURING THE NIGHT AND ONE WHICH MIGHT HAVE PROVED TO BE A SERIOUS ONE + HIS EXPRESSION GREW VERY GRAVE AS HE SPOKE AND A LOOK OF SOMETHING AKIN TO FEAR SPRANG UP IN HIS EYES + DO YOU KNOW SAID HE THAT I BEGIN TO BELIEVE THAT I AM THE UNCONSCIOUS CENTRE OF SOME MONSTROUS CONSPIRACY AND THAT MY LIFE IS AIMED AT AS WELL AS MY HONOUR + QUOTE AH QUOTE CRIED HOLMES + IT SOUNDS INCREDIBLE FOR I HAVE NOT AS FAR AS I KNOW AN ENEMY IN THE WORLD + YET FROM LAST NIGHT'S EXPERIENCE I CAN COME TO NO OTHER CONCLUSION + PRAY LET ME HEAR IT + YOU MUST KNOW THAT LAST NIGHT WAS THE VERY FIRST NIGHT THAT I HAVE EVER SLEPT WITHOUT A NURSE IN THE ROOM + I WAS SO MUCH BETTER THAT I THOUGHT I COULD DISPENSE WITH ONE + I HAD A NIGHT LIGHT BURNING HOWEVER + WELL ABOUT TWO IN THE MORNING I HAD SUNK INTO A LIGHT SLEEP WHEN I WAS SUDDENLY AROUSED BY A SLIGHT NOISE + IT WAS LIKE THE SOUND WHICH A MOUSE MAKES WHEN IT IS GNAWING A PLANK AND I LAY LISTENING TO IT FOR SOME TIME UNDER THE IMPRESSION THAT IT MUST COME FROM THAT CAUSE + THEN IT GREW LOUDER AND SUDDENLY THERE CAME FROM THE WINDOW A SHARP METALLIC SNICK + I SAT UP IN AMAZEMENT + THERE COULD BE NO DOUBT WHAT THE SOUNDS WERE NOW + THE FIRST ONES HAD BEEN CAUSED BY SOMEONE FORCING AN INSTRUMENT THROUGH THE SLIT BETWEEN THE SASHES AND THE SECOND BY THE CATCH BEING PRESSED BACK + THERE WAS A PAUSE THEN FOR ABOUT TEN MINUTES AS IF THE PERSON WERE WAITING TO SEE WHETHER THE NOISE HAD AWAKENED ME + THEN I HEARD A GENTLE CREAKING AS THE WINDOW WAS VERY SLOWLY OPENED + I COULD STAND IT NO LONGER FOR MY NERVES ARE NOT WHAT THEY USED TO BE + I SPRANG OUT OF BED AND FLUNG OPEN THE SHUTTERS + A MAN WAS CROUCHING AT THE WINDOW + I COULD SEE LLTTLE OF HIM FOR HE WAS GONE LIKE A FLASH + HE WAS WRAPPED IN SOME SORT OF CLOAK WHICH CAME ACROSS THE LOWER PART OF HIS FACE + ONE THING ONLY I AM SURE OF AND THAT IS THAT HE HAD SOME WEAPON IN HIS HAND + IT LOOKED TO ME LIKE A LONG KNIFE + I DISTINCTLY SAW THE GLEAM OF IT AS HE TURNED TO RUN QUOTE + THIS IS MOST INTERESTING SAID HOLMES + PRAY WHAT DID YOU DO THEN + I SHOULD HAVE FOLLOWED HIM THROUGH THE OPEN WINDOW IF I HAD BEEN STRONGER + AS IT WAS I RANG THE BELL AND ROUSED THE HOUSE + IT TOOK SOME LITTLE TIME FOR THE BELL RINGS IN THE KITCHEN AND THE SERVANTS ALL SLEEP UPSTAIRS + I SHOUTED HOWEVER AND THAT BROUGHT JOSEPH DOWN AND HE ROUSED THE OTHERS + JOSEPH AND THE GROOM FOUND MARKS ON THE BED OUTSIDE THE WINDOW BUT THE WEATHER HAS BEEN SO DRY LATELY THAT THEY FOUND IT HOPELESS TO FOLLOW THE TRAIL ACROSS THE GRASS + THERE'S A PLACE HOWEVER ON THE WOODEN FENCE WHICH SKIRTS THE ROAD WHICH SHOWS SIGNS THEY TELL ME AS IF SOMEONE HAD GOT OVER AND HAD SNAPPED THE TOP OF THE RAIL IN DOING SO + I HAVE SAID NOTHING TO THE LOCAL POLICE YET FOR I THOUGHT I HAD BEST HAVE YOUR OPINION FIRST + THIS TALE OF OUR CLIENT'S APPEARED TO HAVE AN EXTRAORDINARY EFFECT UPON SHERLOCK HOLMES + HE ROSE FROM HIS CHAIR AND PACED ABOUT THE ROOM IN UNCONTROLLABLE EXCITEMENT + MISFORTUNES NEVER COME SINGLE SAID PHELPS SMILING THOUGH IT WAS EVIDENT THAT HIS ADVENTURE HAD SOMEWHAT SHAKEN HIM + QUOTE YOU HAVE CERTAINLY HAD YOUR SHARE QUOTE SAID HOLMES + DO YOU THINK YOU COULD WALK ROUND THE HOUSE WITH ME + OH YES I SHOULD LIKE A LITTLE SUNSHINE + JOSEPH WILL COME TOO + AND I ALSO SAID MISS HARRISON + I AM AFRAID NOT SAID HOLMES SHAKING HIS HEAD + QUOTE I THINK I MUST ASK YOU TO REMAIN SITTING EXACTLY WHERE YOU ARE QUOTE + THE YOUNG LADY RESUMED HER SEAT WITH AN AIR OF DISPLEASURE + HER BROTHER HOWEVER HAD JOINED US AND WE SET OFF ALL FOUR TOGETHER + WE PASSED ROUND THE LAWN TO THE OUTSIDE OF THE YOUNG DIPLOMATIST'S WINDOW + THCRE WERE AS HE HAD SAID MARKS UPON THE BED BUT THEY WERE HOPELESSLY BLURRED AND VAGUE + HOLMES STOOPED OVER THEM FOR AN INSTANT AND THEN ROSE SHRUGGING HIS SHOULDERS + I DON'T THINK ANYONE COULD MAKE MUCH OF THIS SAID HE + LET US GO ROUND THE HOUSE AND SEE WHY THIS PARTICULAR ROOM WAS CHOSEN BY THE BURGLAR + I SHOULD HAVE THOUGHT THOSE LARGER WINDOWS OF THE DRAWING ROOM AND DINING ROOM WOULD HAVE HAD MORE ATTRACTIONS FOR HIM + THEY ARE MORE VISIBLE FROM THE ROAD SUGGESTED MR. JOSEPH HARRISON + AH YES OF COURSE + THERE IS A DOOR HERE WHICH HE MIGHT HAVE ATTEMPTED + WHAT IS IT FOR QUOTE + IT IS THE SIDE ENTRANCE FOR TRADES PEOPLE + OF COURSE IT IS LOCKED AT NIGHT + HAVE YOU EVER HAD AN ALARM LIKE THIS BEFORE + NEVER SAID OUR CLIENT + DO YOU KEEP PLATE IN THE HOUSE OR ANYTHING TO ATTRACT BURGLARS + QUOTE NOTHING OF VALUE QUOTE + HOLMES STROLLED ROUND THE HOUSE WITH HIS HANDS IN HIS POCKETS AND A NEGLIGENT AIR WHICH WAS UNUSUAL WITH HIM + BY THE WAY SAID HE TO JOSEPH HARRISON YOU FOUND SOME PLACE I UNDERSTAND WHERE THE FELLOW SCALED THE FENCE + LET US HAVE A LOOK AT THAT + THE PLUMP YOUNG MAN LED US TO A SPOT WHERE THE TOP OF ONE OF THE WOODEN RAILS HAD BEEN CRACKED + A SMALL FRAGMENT OF THE WOOD WAS HANGING DOWN + HOLMES PULLED IT OFF AND EXAMINED IT CRITICALLY + DO YOU THINK THAT WAS DONE LAST NIGHT + IT LOOKS RATHER OLD DOES IT NOT + WELL POSSIBLY SO + QUOTE THERE ARE NO MARKS OF ANYONE JUMPING DOWN UPON THE OTHER SIDE + NO I FANCY WE SHALL GET NO HELP HERE + LET US GO BACK TO THE BEDROOM AND TALK THE MATTER OVER + PERCY PHELPS WAS WALKING VERY SLOWLY LEANING UPON THE ARM OF HIS FUTURE BROTHER IN LAW + HOLMES WALKED SWIFTLY ACROSS THE LAWN AND WE WERE AT THE OPEN WINDOW OF THE BEDROOM LONG BEFORE THE OTHERS CAME UP + MISS HARRISON SAID HOLMES SPEAKING WITH THE UTMOST INTENSITY OF MANNER YOU MUST STAY WHERE YOU ARE ALL DAY + LET NOTHING PREVENT YOU FROM STAYING WHERE YOU ARE ALL DAY + IT IS OF THE UTMOST IMPORTANCE + CERTAINLY IF YOU WISH IT MR. HOLMES SAID THE GIRL IN ASTONISHMENT + WHEN YOU GO TO BED LOCK THE DOOR OF THIS ROOM ON THE OUTSIDE AND KEEP THE KEY + PROMISE TO DO THIS QUOTE + BUT PERCY + HE WILL COME TO LONDON WITH US + AND AM I TO REMAIN HERE + IT IS FOR HIS SAKE + YOU CAN SERVE HIM + QUICK + PROMISE + SHE GAVE A QUICK NOD OF ASSENT JUST AS THE OTHER TWO CAME UP + QUOTE WHY DO YOU SIT MOPING THERE ANNIE QUOTE CRIED HER BROTHER + COME OUT INTO THE SUNSHINE + NO THANK YOU JOSEPH + I HAVE A SLIGHT HEADACHE AND THIS ROOM IS DELICIOUSLY COOL AND SOOTHING + WHAT DO YOU PROPOSE NOW MR. HOLMES ASKED OUR CLIENT + WELL IN INVESTIGATING THIS MINOR AFFAIR WE MUST NOT LOSE SIGHT OF OUR MAIN INQUIRY + IT WOULD BE A VERY GREAT HELP TO ME IF YOU WOULD COME UP TO LONDON WITH US QUOTE + AT ONCE + WELL AS SOON AS YOU CONVENIENTLY CAN + SAY IN AN HOUR + I FEEL QUITE STRONG ENOUGH IF I CAN REALLY BE OF ANY HELP + THE GREATEST POSSIBLE + QUOTE PERHAPS YOU WOULD LIKE ME TO STAY THERE TO NIGHT QUOTE + I WAS JUST GOING TO PROPOSE IT + THEN IF MY FRIEND OF THE NIGHT COMES TO REVISIT ME HE WILL FIND THE BIRD FLOWN + WE ARE ALL IN YOUR HANDS MR. HOLMES AND YOU MUST TELL US EXACTLY WHAT YOU WOULD LIKE DONE + PERHAPS YOU WOULD PREFER THAT JOSEPH CAME WITH US SO AS TO LOOK AFTER ME + OH NO MY FRIEND WATSON IS A MEDICAL MAN YOU KNOW AND HE'LL LOOK AFTER YOU + WE'LL HAVE OUR LUNCH HERE IF YOU WILL PERMIT US AND THEN WE SHALL ALL THREE SET OFF FOR TOWN TOGETHER + IT WAS ARRANGED AS HE SUGGESTED THOUGH MISS HARRISON EXCUSED HERSELF FROM LEAVING THE BEDROOM IN ACCORDANCE WITH HOLMES'S SUGGESTION + WHAT THE OBJECT OF MY FRIEND'S MANOEUVRES WAS I COULD NOT CONCEIVE UNLESS IT WERE TO KEEP THE LADY AWAY FROM PHELPS WHO REJOICED BY HIS RETURNING HEALTH AND BY THE PROSPECT OF ACTION LUNCHED WITH US IN THE DINING ROOM + HOLMES HAD A STILL MORE STARTLING SURPRISE FOR US HOWEVER FOR AFTER ACCOMPANYING US DOWN TO THE STATION AND SEEING US INTO OUR CARRIAGE HE CALMLY ANNOUNCED THAT HE HAD NO INTENTION OF LEAVING WOKING + QUOTE THERE ARE ONE OR TWO SMALL POINTS WHICH I SHOULD DESIRE TO CLEAR UP BEFORE I GO QUOTE SAID HE + YOUR ABSENCE MR. PHELPS WILL IN SOME WAYS RATHER ASSIST ME + WATSON WHEN YOU REACH LONDON YOU WOULD OBLIGE ME BY DRIVING AT ONCE TO BAKER STREET WITH OUR FRIEND HERE AND REMAINING WITH HIM UNTIL I SEE YOU AGAIN + IT IS FORTUNATE THAT YOU ARE OLD SCHOOL FELLOWS AS YOU MUST HAVE MUCH TO TALK OVER + MR. PHELPS CAN HAVE THE SPARE BEDROOM TO NIGHT AND I WILL BE WITH YOU IN TIME FOR BREAKFAST FOR THERE IS A TRAIN WHICH WILL TAKE ME INTO WATERLOO AT EIGHT + BUT HOW ABOUT OUR INVESTIGATION IN LONDON ASKED PHELPS RUEFULLY + WE CAN DO THAT TO MORROW + I THINK THAT JUST AT PRESENT I CAN BE OF MORE IMMEDIATE USE HERE + QUOTE YOU MIGHT TELL THEM AT BRIARBRAE THAT I HOPE TO BE BACK TO MORROW NIGHT QUOTE CRIED PHELPS AS WE BEGAN TO MOVE FROM THE PLATFORM + I HARDLY EXPECT TO GO BACK TO BRIARBRAE ANSWERED HOLMES AND WAVED HIS HAND TO US CHEERILY AS WE SHOT OUT FROM THE STATION + PHELPS AND I TALKED IT OVER ON OUR JOURNEY BUT NEITHER OF US COULD DEVISE A SATISFACTORY REASON FOR THIS NEW DEVELOPMENT + I SUPPOSE HE WANTS TO FIND OUT SOME CLUES AS TO THE BURGLARY LAST NIGHT IF A BURGLAR IT WAS + FOR MYSELF I DON'T BELIEVE IT WAS AN ORDINARY THIEF + WHAT IS YOUR OWN IDEA THEN + UPON MY WORD YOU MAY PUT IT DOWN TO MY WEAK NERVES OR NOT BUT I BELIEVE THERE IS SOME DEEP POLITICAL INTRIGUE GOING ON AROUND ME AND THAT FOR SOME REASON THAT PASSES MY UNDERSTANDING MY LIFE IS AIMED AT BY THE CONSPIRATORS + IT SOUNDS HIGH FLOWN AND ABSURD BUT CONSIDER THE FACTS + WHY SHOULD A THIEF TRY TO BREAK IN AT A BEDROOM WINDOW WHERE THERE COULD BE NO HOPE OF ANY PLUNDER AND WHY SHOULD HE COME WITH A LONG KNIFE IN HIS HAND QUOTE + YOU ARE SURE IT WAS NOT A HOUSE BREAKER'S JIMMY + OH NO IT WAS A KNIFE + I SAW THE FLASH OF THE BLADE QUITE DISTINCTLY + BUT WHY ON EARTH SHOULD YOU BE PURSUED WITH SUCH ANIMOSITY + AH THAT IS THE QUESTION + QUOTE WELL IF HOLMES TAKES THE SAME VIEW THAT WOULD ACCOUNT FOR HIS ACTION WOULD IT NOT + PRESUMING THAT YOUR THEORY IS CORRECT IF HE CAN LAY HIS HANDS UPON THE MAN WHO THREATENED YOU LAST NIGHT HE WILL HAVE GONE A LONG WAY TOWARDS FINDING WHO TOOK THE NAVAL TREATY + IT IS ABSURD TO SUPPOSE THAT YOU HAVE TWO ENEMIES ONE OF WHOM ROBS YOU WHILE THE OTHER THREATENS YOUR LIFE + BUT HOLMES SAID THAT HE WAS NOT GOING TO BRIARBRAE + I HAVE KNOWN HIM FOR SOME TIME SAID I BUT I NEVER KNEW HIM DO ANYTHING YET WITHOUT A VERY GOOD REASON AND WITH THAT OUR CONVERSATION DRIFTED OFF ON TO OTHER TOPICS + BUT IT WAS A WEARY DAY FOR ME + PHELPS WAS STILL WEAK AFTER HIS LONG ILLNESS AND HIS MISFORTUNES MADE HIM QUERULOUS AND NERVOUS + IN VAIN I ENDEAVOURED TO INTEREST HIM IN AFGHANISTAN IN INDIA IN SOCIAL QUESTIONS IN ANYTHING WHICH MIGHT TAKE HIS MIND OUT OF THE GROOVE + HE WOULD ALWAYS COME BACK TO HIS LOST TREATY WONDERING GUESSING SPECULATING AS TO WHAT HOLMES WAS DOING WHAT STEPS LORD HOLDHURST WAS TAKING WHAT NEWS WE SHOULD HAVE IN THE MORNING + AS THE EVENING WORE ON HIS EXCITEMENT BECAME QUITE PAINFUL + YOU HAVE IMPLICIT FAITH IN HOLMES HE ASKED + I HAVE SEEN HIM DO SOME REMARKABLE THINGS + QUOTE BUT HE NEVER BROUGHT LIGHT INTO ANYTHING QUITE SO DARK AS THIS QUOTE + OH YES I HAVE KNOWN HIM SOLVE QUESTIONS WHICH PRESENTED FEWER CLUES THAN YOURS + BUT NOT WHERE SUCH LARGE INTERESTS ARE AT STAKE + I DON'T KNOW THAT + TO MY CERTAIN KNOWLEDGE HE HAS ACTED ON BEHALF OF THREE OF THE REIGNING HOUSES OF EUROPE IN VERY VITAL MATTERS + BUT YOU KNOW HIM WELL WATSON + HE IS SUCH AN INSCRUTABLE FELLOW THAT I NEVER QUITE KNOW WHAT TO MAKE OF HIM + DO YOU THINK HE IS HOPEFUL + DO YOU THINK HE EXPECTS TO MAKE A SUCCESS OF IT QUOTE + HE HAS SAID NOTHING + THAT IS A BAD SIGN + ON THE CONTRARY + I HAVE NOTICED THAT WHEN HE IS OFF THE TRAIL HE GENERALLY SAYS SO + IT IS WHEN HE IS ON A SCENT AND IS NOT QUITE ABSOLUTELY SURE YET THAT IT IS THE RIGHT ONE THAT HE IS MOST TACITURN + NOW MY DEAR FELLOW WE CAN'T HELP MATTERS BY MAKING OURSELVES NERVOUS ABOUT THEM SO LET ME IMPLORE YOU TO GO TO BED AND SO BE FRESH FOR WHATEVER MAY AWAIT US TO MORROW + I WAS ABLE AT LAST TO PERSUADE MY COMPANION TO TAKE MY ADVICE THOUGH I KNEW FROM HIS EXCITED MANNER THAT THERE WAS NOT MUCH HOPE OF SLEEP FOR HIM + INDEED HIS MOOD WAS INFECTIOUS FOR I LAY TOSSING HALF THE NIGHT MYSELF BROODING OVER THIS STRANGE PROBLEM AND INVENTING A HUNDRED THEORIES EACH OF WHICH WAS MORE IMPOSSIBLE THAN THE LAST + WHY HAD HOLMES REMAINED AT WOKING + WHY HAD HE ASKED MISS HARRISON TO REMAIN IN THE SICK ROOM ALL DAY + WHY HAD HE BEEN SO CAREFUL NOT TO INFORM THE PEOPLE AT BRIARBRAE THAT HE INTENDED TO REMAIN NEAR THEM + I CUDGELLED MY BRAINS UNTIL I FELL ASLEEP IN THE ENDEAVOUR TO FIND SOME EXPLANATION WHICH WOULD COVER ALL THESE FACTS + IT WAS SEVEN O'CLOCK WHEN I AWOKE AND I SET OFF AT ONCE FOR PHELPS'S ROOM TO FIND HIM HAGGARD AND SPENT AFTER A SLEEPLESS NIGHT + HIS FIRST QUESTION WAS WHETHER HOLMES HAD ARRIVED YET + HE'LL BE HERE WHEN HE PROMISED SAID I AND NOT AN INSTANT SOONER OR LATER + AND MY WORDS WERE TRUE FOR SHORTLY AFTER EIGHT A HANSOM DASHED UP TO THE DOOR AND OUR FRIEND GOT OUT OF IT + STANDING IN THE WINDOW WE SAW THAT HIS LEFT HAND WAS SWATHED IN A BANDAGE AND THAT HIS FACE WAS VERY GRIM AND PALE + HE ENTERED THE HOUSE BUT IT WAS SOME LITTLE TIME BEFORE HE CAME UPSTAIRS + QUOTE HE LOOKS LIKE A BEATEN MAN QUOTE CRIED PHELPS + I WAS FORCED TO CONFESS THAT HE WAS RIGHT + AFTER ALL SAID I THE CLUE OF THE MATTER LIES PROBABLY HERE IN TOWN + PHELPS GAVE A GROAN + I DON'T KNOW HOW IT IS SAID HE BUT I HAD HOPED FOR SO MUCH FROM HIS RETURN + BUT SURELY HIS HAND WAS NOT TIED UP LIKE THAT YESTERDAY + WHAT CAN BE THE MATTER + YOU ARE NOT WOUNDED HOLMES + I ASKED AS MY FRIEND ENTERED THE ROOM + TUT IT IS ONLY A SCRATCH THROUGH MY OWN CLUMSINESS HE ANSWERED NODDING HIS GOOD MORNING TO US + QUOTE THIS CASE OF YOURS MR. PHELPS IS CERTAINLY ONE OF THE DARKEST WHICH I HAVE EVER INVESTIGATED QUOTE + I FEARED THAT YOU WOULD FIND IT BEYOND YOU + IT HAS BEEN A MOST REMARKABLE EXPERIENCE + THAT BANDAGE TELLS OF ADVENTURES SAID I. WON'T YOU TELL US WHAT HAS HAPPENED + AFTER BREAKFAST MY DEAR WATSON + REMEMBER THAT I HAVE BREATHED THIRTY MILES OF SURREY AIR THIS MORNING + I SUPPOSE THAT THERE HAS BEEN NO ANSWER FROM MY CABMAN ADVERTISEMENT + WELL WELL WE CANNOT EXPECT TO SCORE EVERY TIME + THE TABLE WAS ALL LAID AND JUST AS I WAS ABOUT TO RING MRS. HUDSON ENTERED WITH THE TEA AND COFFEE + A FEW MINUTES LATER SHE BROUGHT IN THREE COVERS AND WE ALL DREW UP TO THE TABLE HOLMES RAVENOUS I CURIOUS AND PHELPS IN THE GLOOMIEST STATE OF DEPRESSION + QUOTE MRS. HUDSON HAS RISEN TO THE OCCASION QUOTE SAID HOLMES UNCOVERING A DISH OF CURRIED CHICKEN + HER CUISINE IS A LITTLE LIMITED BUT SHE HAS AS GOOD AN IDEA OF BREAKFAST AS A SCOTCHWOMAN + WHAT HAVE YOU THERE WATSON + HAM AND EGGS I ANSWERED + GOOD + WHAT ARE YOU GOING TO TAKE MR. PHELPS CURRIED FOWL OR EGGS OR WILL YOU HELP YOURSELF + QUOTE THANK YOU + I CAN EAT NOTHING SAID PHELPS + OH COME + TRY THE DISH BEFORE YOU + THANK YOU I WOULD REALLY RATHER NOT + WELL THEN SAID HOLMES WITH A MISCHIEVOUS TWINKLE I SUPPOSE THAT YOU HAVE NO OBJECTION TO HELPING ME + PHELPS RAISED THE COVER AND AS HE DID SO HE UTTERED A SCREAM AND SAT THERE STARING WITH A FACE AS WHITE AS THE PLATE UPON WHICH HE LOOKED + ACROSS THE CENTRE OF IT WAS LYING A LITTLE CYLINDER OF BLUE GRAY PAPER + HE CAUGHT IT UP DEVOURED IT WITH HIS EYES AND THEN DANCED MADLY ABOUT THE ROOM PRESSING IT TO HIS BOSOM AND SHRIEKING OUT IN HIS DELIGHT + THEN HE FELL BACK INTO AN ARMCHAIR SO LIMP AND EXHAUSTED WITH HIS OWN EMOTIONS THAT WE HAD TO POUR BRANDY DOWN HIS THROAT TO KEEP HIM FROM FAINTING + QUOTE THERE THERE QUOTE SAID HOLMES SOOTHINGLY PATTING HIM UPON THE SHOULDER + IT WAS TOO BAD TO SPRING IT ON YOU LIKE THIS BUT WATSON HERE WILL TELL YOU THAT I NEVER CAN RESIST A TOUCH OF THE DRAMATIC + PHELPS SEIZED HIS HAND AND KISSED IT + GOD BLESS YOU HE CRIED + YOU HAVE SAVED MY HONOUR + WELL MY OWN WAS AT STAKE YOU KNOW SAID HOLMES + I ASSURE YOU IT IS JUST AS HATEFUL TO ME TO FAIL IN A CASE AS IT CAN BE TO YOU TO BLUNDER OVER A COMMISSION + PHELPS THRUST AWAY THE PRECIOUS DOCUMENT INTO THE INNERMOST POCKET OF HIS COAT + QUOTE I HAVE NOT THE HEART TO INTERRUPT YOUR BREAKFAST ANY FURTHER AND YET I AM DYING TO KNOW HOW YOU GOT IT AND WHERE IT WAS QUOTE + SHERLOCK HOLMES SWALLOWED A CUP OF COFFEE AND TURNED HIS ATTENTION TO THE HAM AND EGGS + THEN HE ROSE LIT HIS PIPE AND SETTLED HIMSELF DOWN INTO HIS CHAIR + I'LL TELL YOU WHAT I DID FIRST AND HOW I CAME TO DO IT AFTERWARDS SAID HE + AFTER LEAVING YOU AT THE STATION I WENT FOR A CHARMING WALK THROUGH SOME ADMIRABLE SURREY SCENERY TO A PRETTY LITTLE VILLAGE CALLED RIPLEY WHERE I HAD MY TEA AT AN INN AND TOOK THE PRECAUTION OF FILLING MY FLASK AND OF PUTTING A PAPER OF SANDWICHES IN MY POCKET + THERE I REMAINED UNTIL EVENING WHEN I SET OFF FOR WOKING AGAIN AND FOUND MYSELF IN THE HIGHROAD OUTSIDE BRIARBRAE JUST AFTER SUNSET + WELL I WAITED UNTIL THC ROAD WAS CLEAR IT IS NEVER A VERY FREQUENTED ONE AT ANY TIME I FANCY AND THEN I CLAMBERED OVER THE FENCE INTO THE GROUNDS + SURELY THE GATE WAS OPEN EJACULATED PHELPS + YES BUT I HAVE A PECULIAR TASTE IN THESE MATTERS + I CHOSE THE PLACE WHERE THE THREE FIR TREES STAND AND BEHIND THEIR SCREEN ONE GOT OVER WITHOUT THE LEAST CHANCE OF ANYONE IN THE HOUSE BEING ABLE TO SEE ME + I CROUCHED DOWN AMONG THE BUSHES ON THE OTHER SIDE AND CRAWLED FROM ONE TO THE OTHER WITNESS THE DISREPUTABLE STATE OF MY TROUSER KNEES UNTIL I HAD REACHED THE CLUMP OF RHODODENDRONS JUST OPPOSITE TO YOUR BEDROOM WINDOW + THERE I SQUATTED DOWN AND AWAITED DEVELOPMENTS + QUOTE THE BLIND WAS NOT DOWN IN YOUR ROOM AND I COULD SEE MISS HARRISON SITTING THERE READING BY THE TABLE + IT WAS QUARTER PAST TEN WHEN SHE CLOSED HER BOOK FASTENED THE SHUTTERS AND RETIRED + I HEARD HER SHUT THE DOOR AND FELT QUITE SURE THAT SHE HAD TURNED THE KEY IN THE LOCK + THE KEY EJACULATED PHELPS + YES I HAD GIVEN MISS HARRISON INSTRUCTIONS TO LOCK THE DOOR ON THE OUTSIDE AND TAKE THE KEY WITH HER WHEN SHE WENT TO BED + SHE CARRIED OUT EVERY ONE OF MY INJUNCTIONS TO THE LETTER AND CERTAINLY WITHOUT HER COOPERATION YOU WOULD NOT HAVE THAT PAPER IN YOUR COAT POCKET + SHE DEPARTED THEN AND THE LIGHTS WENT OUT AND I WAS LEFT SQUATTING IN THE RHODODENDRON BUSH + THE NIGHT WAS FINE BUT STILL IT WAS A VERY WEARY VIGIL + OF COURSE IT HAS THE SORT OF EXCITEMENT ABOUT IT THAT THE SPORTSMAN FEELS WHEN HE LIES BESIDE THE WATERCOURSE AND WAITS FOR THE BIG GAME + IT WAS VERY LONG THOUGH ALMOST AS LONG WATSON AS WHEN YOU AND I WAITED IN THAT DEADLY ROOM WHEN WE LOOKED INTO THE LITTLE PROBLEM OF THE SPECKLED BAND + THERE WAS A CHURCH CLOCK DOWN AT WOKING WHICH STRUCK THE QUARTERS AND I THOUGHT MORE THAN ONCE THAT IT HAD STOPPED + AT LAST HOWEVER ABOUT TWO IN THE MORNING I SUDDENLY HEARD THE GENTLE SOUND OF A BOLT BEING PUSHED BACK AND THE CREAKING OF A KEY + A MOMENT LATER THE SERVANTS DOOR WAS OPENED AND MR. JOSEPH HARRISON STEPPED OUT INTO THE MOONLIGHT + QUOTE JOSEPH QUOTE EJACULATED PHELPS + HE WAS BARE HEADED BUT HE HAD A BLACK CLOAK THROWN OVER HIS SHOULDER SO THAT HE COULD CONCEAL HIS FACE IN AN INSTANT IF THERE WERE ANY ALARM + HE WALKED ON TIPTOE UNDER THE SHADOW OF THE WALL AND WHEN HE REACHED THE WINDOW HE WORKED A LONGBLADED KNIFE THROUGH THE SASH AND PUSHED BACK THE CATCH + THEN HE FLUNG OPEN THE WINDOW AND PUTTING HIS KNIFE THROUGH THE CRACK IN THE SHUTTERS HE THRUST THE BAR UP AND SWUNG THEM OPEN + FROM WHERE I LAY I HAD A PERFECT VIEW OF THE INSIDE OF THE ROOM AND OF EVERY ONE OF HIS MOVEMENTS + HE LIT THE TWO CANDLES WHICH STOOD UPON THE MANTELPIECE AND THEN HE PROCEEDED TO TURN BACK THE CORNER OF THE CARPET IN THE NEIGHBOURHOOD OF THE DOOR + PRESENTLY HE STOOPED AND PICKED OUT A SQUARE PIECE OF BOARD SUCH AS IS USUALLY LEFT TO ENABLE PLUMBERS TO GET AT THE JOINTS OF THE GAS PIPES + THIS ONE COVERED AS A MATTER OF FACT THE T. JOINT WHICH GIVES OFF THE PIPE WHICH SUPPLIES THE KITCHEN UNDERNEATH + OUT OF THIS HIDING PLACE HE DREW THAT LITTLE CYLINDER OF PAPER PUSHED DOWN THE BOARD REARRANGED THE CARPET BLEW OUT THE CANDLES AND WALKED STRAIGHT INTO MY ARMS AS I STOOD WAITING FOR HIM OUTSIDE THE WINDOW + WELL HE HAS RATHER MORE VICIOUSNESS THAN I GAVE HIM CREDIT FOR HAS MASTER JOSEPH + HE FLEW AT ME WITH HIS KNIFE AND I HAD TO GRASP HIM TWICE AND GOT A CUT OVER THE KNUCKLES BEFORE I HAD THE UPPER HAND OF HIM + HE LOOKED MURDER OUT OF THE ONLY EYE HE COULD SEE WITH WHEN WE HAD FINISHED BUT HE LISTENED TO REASON AND GAVE UP THE PAPERS + HAVING GOT THEM I LET MY MAN GO BUT I WIRED FULL PARTICULARS TO FORBES THIS MORNING + IF HE IS QUICK ENOUGH TO CATCH HIS BIRD WELL AND GOOD + BUT IF AS I SHREWDLY SUSPECT HE FINDS THE NEST EMPTY BEFORE HE GETS THERE WHY ALL THE BETTER FOR THE GOVERNMENT + I FANCY THAT LORD HOLDHURST FOR ONE AND MR. PERCY PHELPS FOR ANOTHER WOULD VERY MUCH RATHER THAT THE AFFAIR NEVER GOT AS FAR AS A POLICE COURT + MY GOD GASPED OUR CLIENT + QUOTE DO YOU TELL ME THAT DURING THESE LONG TEN WEEKS OF AGONY THE STOLEN PAPERS WERE WITHIN THE VERY ROOM WITH ME ALL THE TIME QUOTE + SO IT WAS + AND JOSEPH + JOSEPH A VILLAIN AND A THIEF + HUM + I AM AFRAID JOSEPH'S CHARACTER IS A RATHER DEEPER AND MORE DANGEROUS ONE THAN ONE MIGHT JUDGE FROM HIS APPEARANCE + FROM WHAT I HAVE HEARD FROM HIM THIS MORNING I GATHER THAT HE HAS LOST HEAVILY IN DABBLING WITH STOCKS AND THAT HE IS READY TO DO ANYTHING ON EARTH TO BETTER HIS FORTUNES + BEING AN ABSOLUTELY SELFISH MAN WHEN A CHANCE PRESENTS ITSELF HE DID NOT ALLOW EITHER HIS SISTER'S HAPPINESS OR YOUR REPUTATION TO HOLD HIS HAND + PERCY PHELPS SANK BACK IN HIS CHAIR + QUOTE MY HEAD WHIRLS QUOTE SAID HE + YOUR WORDS HAVE DAZED ME + THE PRINCIPAL DIFFICULTY IN YOUR CASE REMARKED HOLMES IN HIS DIDACTIC FASHION LAY IN THE FACT OF THERE BEING TOO MUCH EVIDENCE + WHAT WAS VITAL WAS OVERLAID AND HIDDEN BY WHAT WAS IRRELEVANT + OF ALL THE FACTS WHICH WERE PRESENTED TO US WE HAD TO PICK JUST THOSE WHICH WE DEEMED TO BE ESSENTIAL AND THEN PIECE THEM TOGETHER IN THEIR ORDER SO AS TO RECONSTRUCT THIS VERY REMARKABLE CHAIN OF EVENTS + I HAD ALREADY BEGUN TO SUSPECT JOSEPH FROM THE FACT THAT YOU HAD INTENDED TO TRAVEL HOME WITH HIM THAT NIGHT AND THAT THEREFORE IT WAS A LIKELY ENOUGH THING THAT HE SHOULD CALL FOR YOU KNOWING THE FOREIGN OFFICE WELL UPON HIS WAY + WHEN I HEARD THAT SOMEONE HAD BEEN SO ANXIOUS TO GET INTO THE BEDROOM IN WHICH NO ONE BUT JOSEPH COULD HAVE CONCEALED ANYTHING YOU TOLD US IN YOUR NARRATIVE HOW YOU HAD TURNED JOSEPH OUT WHEN YOU ARRIVED WITH THE DOCTOR MY SUSPICIONS ALL CHANGED TO CERTAINTIES ESPECIALLY AS THE ATTEMPT WAS MADE ON THE FIRST NIGHT UPON WHICH THE NURSE WAS ABSENT SHOWING THAT THE INTRUDER WAS WELL ACQUAINTED WITH THE WAYS OF THE HOUSE + HOW BLIND I HAVE BEEN + THE FACTS OF THE CASE AS FAR AS I HAVE WORKED THEM OUT ARE THESE THIS JOSEPH HARRISON ENTERED THE OFFICE THROUGH THE CHARLES STREET DOOR AND KNOWING HIS WAY HE WALKED STRAIGHT INTO YOUR ROOM THE INSTANT AFTER YOU LEFT IT + FINDING NO ONE THERE HE PROMPTLY RANG THE BELL AND AT THE INSTANT THAT HE DID SO HIS EYES CAUGHT THE PAPER UPON THE TABLE + A GLANCE SHOWED HIM THAT CHANCE HAD PUT IN HIS WAY A STATE DOCUMENT OF IMMENSE VALUE AND IN AN INSTANT HE HAD THRUST IT INTO HIS POCKET AND WAS GONE + A FEW MINUTES ELAPSED AS YOU REMEMBER BEFORE THE SLEEPY COMMISSIONAIRE DREW YOUR ATTENTION TO THE BELL AND THOSE WERE JUST ENOUGH TO GIVE THE THIEF TIME TO MAKE HIS ESCAPE + QUOTE HE MADE HIS WAY TO WOKING BY THE FIRST TRAIN AND HAVING EXAMINED HIS BOOTY AND ASSURED HIMSELF THAT IT REALLY WAS OF IMMENSE VALUE HE HAD CONCEALED IT IN WHAT HE THOUGHT WAS A VERY SAFE PLACE WITH THE INTENTION OF TAKING IT OUT AGAIN IN A DAY OR TWO AND CARRYING IT TO THE FRENCH EMBASSY OR WHEREVER HE THOUGHT THAT A LONG PRICE WAS TO BE HAD + THEN CAME YOUR SUDDEN RETURN + HE WITHOUT A MOMENT'S WARNING WAS BUNDLED OUT OF HIS ROOM AND FROM THAT TIME ONWARD THERE WERE ALWAYS AT LEAST TWO OF YOU THERE TO PREVENT HIM FROM REGAINING HIS TREASURE + THE SITUATION TO HIM MUST HAVE BEEN A MADDENING ONE + BUT AT LAST HE THOUGHT HE SAW HIS CHANCE + HE TRIED TO STEAL IN BUT WAS BAFFLED BY YOUR WAKEFULNESS + YOU MAY REMEMBER THAT YOU DID NOT TAKE YOUR USUAL DRAUGHT THAT NIGHT + I REMEMBER + I FANCY THAT HE HAD TAKEN STEPS TO MAKE THAT DRAUGHT EFFICACIOUS AND THAT HE QUITE RELIED UPON YOUR BEING UNCONSCIOUS + OF COURSE I UNDERSTOOD THAT HE WOULD REPEAT THE ATTEMPT WHENEVER IT COULD BE DONE WITH SAFETY + YOUR LEAVING THE ROOM GAVE HIM THE CHANCE HE WANTED + I KEPT MISS HARRISON IN IT ALL DAY SO THAT HE MIGHT NOT ANTICIPATE US + THEN HAVING GIVEN HIM THE IDEA THAT THE COAST WAS CLEAR I KEPT GUARD AS I HAVE DESCRIBED + I ALREADY KNEW THAT THE PAPERS WERE PROBABLY IN THE ROOM BUT I HAD NO DESIRE TO RIP UP ALL THE PLANKING AND SKIRTING IN SEARCH OF THEM + I LET HIM TAKE THEM THEREFORE FROM THE HIDING PLACE AND SO SAVED MYSELF AN INFINITY OF TROUBLE + IS THERE ANY OTHER POINT WHICH I CAN MAKE CLEAR + WHY DID HE TRY THE WINDOW ON THE FIRST OCCASION I ASKED WHEN HE MIGHT HAVE ENTERED BY THE DOOR + QUOTE IN REACHING THE DOOR HE WOULD HAVE TO PASS SEVEN BEDROOMS + ON THE OTHER HAND HE COULD GET OUT ON TO THE LAWN WITH EASE ANYT LING ELSE + YOU DO NOT THINK ASKED PHELPS THAT HE HAD ANY MURDEROUS INTENTION + THE KNIFE WAS ONLY MEANT AS A TOOL + LI MAY BE SO ANSWERED HOLMES SHRUGGING HIS SHOULDERS + I CAN ONLY SAY FOR CERTAIN THAT MR. JOSEPH HARRISON IS A GENTLEMAN TO WHOSE MERCY I SHOULD BE EXTREMELY UNWILLING TO TRUST diff --git a/samples/LMTutorial/train/noble_bachelor.txt b/samples/LMTutorial/train/noble_bachelor.txt new file mode 100755 index 0000000..d0e6eba --- /dev/null +++ b/samples/LMTutorial/train/noble_bachelor.txt @@ -0,0 +1,523 @@ + THE LORD SAINT SIMON MARRIAGE AND ITS CURIOUS TERMINATION HAVE LONG CEASED TO BE A SUBJECT OF INTEREST IN THOSE EXALTED CIRCLES IN WHICH THE UNFORTUNATE BRIDEGROOM MOVES + FRESH SCANDALS HAVE ECLIPSED IT AND THEIR MORE PIQUANT DETAILS HAVE DRAWN THE GOSSIPS AWAY FROM THIS FOUR YEAR OLD DRAMA + AS I HAVE REASON TO BELIEVE HOWEVER THAT THE FULL FACTS HAVE NEVER BEEN REVEALED TO THE GENERAL PUBLIC AND AS MY FRIEND SHERLOCK HOLMES HAD A CONSIDERABLE SHARE IN CLEARING THE MATTER UP I FEEL THAT NO MEMOIR OF HIM WOULD BE COMPLETE WITHOUT SOME LITTLE SKETCH OF THIS REMARKABLE EPISODE + IT WAS A FEW WEEKS BEFORE MY OWN MARRIAGE DURING THE DAYS WHEN I WAS STILL SHARING ROOMS WITH HOLMES IN BAKER STREET THAT HE CAME HOME FROM AN AFTERNOON STROLL TO FIND A LETTER ON THE TABLE WAITING FOR HIM + I HAD REMAINED INDOORS ALL DAY FOR THE WEATHER HAD TAKEN A SUDDEN TURN TO RAIN WITH HIGH AUTUMNAL WINDS AND THE JEZAIL BULLET WHICH I HAD BROUGHT BACK IN ONE OF MY LIMBS AS A RELIC OF MY AFGHAN CAMPAIGN THROBBED WITH DULL PERSISTENCE + WITH MY BODY IN ONE EASY CHAIR AND MY LEGS UPON ANOTHER I HAD SURROUNDED MYSELF WITH A CLOUD OF NEWSPAPERS UNTIL AT LAST SATURATED WITH THE NEWS OF THE DAY I TOSSED THEM ALL ASIDE AND LAY LISTLESS WATCHING THE HUGE CREST AND MONOGRAM UPON THE ENVELOPE UPON THE TABLE AND WONDERING LAZILY WHO MY FRIEND'S NOBLE CORRESPONDENT COULD BE + QUOTE HERE IS A VERY FASHIONABLE EPISTLE QUOTE I REMARKED AS HE ENTERED + YOUR MORNING LETTERS IF I REMEMBER RIGHT WERE FROM A FISH MONGER AND A TIDE WAITER + YES MY CORRESPONDENCE HAS CERTAINLY THE CHARM OF VARIETY HE ANSWERED SMILING AND THE HUMBLER ARE USUALLY THE MORE INTERESTING + THIS LOOKS LIKE ONE OF THOSE UNWELCOME SOCIAL SUMMONSES WHICH CALL UPON A MAN EITHER TO BE BORED OR TO LIE + HE BROKE THE SEAL AND GLANCED OVER THE CONTENTS + OH COME IT MAY PROVE TO BE SOMETHING OF INTEREST AFTER ALL + NOT SOCIAL THEN + QUOTE NO DISTINCTLY PROFESSIONAL QUOTE + AND FROM A NOBLE CLIENT + ONE OF THE HIGHEST IN ENGLAND + MY DEAR FELLOW + I CONGRATULATE YOU + I ASSURE YOU WATSON WITHOUT AFFECTATION THAT THE STATUS OF MY CLIENT IS A MATTER OF LESS MOMENT TO ME THAN THE INTEREST OF HIS CASE + IT IS JUST POSSIBLE HOWEVER THAT THAT ALSO MAY NOT BE WANTING IN THIS NEW INVESTIGATION + YOU HAVE BEEN READING THE PAPERS DILIGENTLY OF LATE HAVE YOU NOT QUOTE + IT LOOKS LIKE IT SAID I RUEFULLY POINTING TO A HUGE BUNDLE IN THE CORNER + I HAVE HAD NOTHING ELSE TO DO + IT IS FORTUNATE FOR YOU WILL PERHAPS BE ABLE TO POST ME UP + I READ NOTHING EXCEPT THE CRIMINAL NEWS AND THE AGONY COLUMN + THE LATTER IS ALWAYS INSTRUCTIVE + BUT IF YOU HAVE FOLLOWED RECENT EVENTS SO CLOSELY YOU MUST HAVE READ ABOUT LORD SAINT SIMON AND HIS WEDDING + OH YES WITH THE DEEPEST INTEREST + QUOTE THAT IS WELL + THE LETTER WHICH I HOLD IN MY HAND IS FROM LORD SAINT SIMON + I WILL READ IT TO YOU AND IN RETURN YOU MUST TURN OVER THESE PAPERS AND LET ME HAVE WHATEVER BEARS UPON THE MATTER + THIS IS WHAT HE SAYS MY DEAR MR. SHERLOCK HOLMES LORD BACKWATER TELLS ME THAT I MAY PLACE IMPLICIT RELIANCE UPON YOUR JUDGMENT AND DISCRETION + I HAVE DETERMINED THEREFORE TO CALL UPON YOU AND TO CONSULT YOU IN REFERENCE TO THE VERY PAINFUL EVENT WHICH HAS OCCURRED IN CONNECTION WITH MY WEDDING + MR. LESTRADE OF SCOTLAND YARD IS ACTING ALREADY IN THE MATTER BUT HE ASSURES ME THAT HE SEES NO OBJECTION TO YOUR COOPERATION AND THAT HE EVEN THINKS THAT IT MIGHT BE OF SOME ASSISTANCE + I WILL CALL AT FOUR O'CLOCK IN THE AFTERNOON AND SHOULD YOU HAVE ANY OTHER ENGAGEMENT AT THAT TIME I HOPE THAT YOU WILL POSTPONE IT AS THIS MATTER IS OF PARAMOUNT IMPORTANCE + YOURS FAITHFULLY ST. SIMON + IT IS DATED FROM GROSVENOR MANSIONS WRITTEN WITH A QUILL PEN AND THE NOBLE LORD HAS HAD THE MISFORTUNE TO GET A SMEAR OF INK UPON THE OUTER SIDE OF HIS RIGHT LITTLE FINGER REMARKED HOLMES AS HE FOLDED UP THE EPISTLE + HE SAYS FOUR O'CLOCK + IT IS THREE NOW + HE WILL BE HERE IN AN HOUR + QUOTE THEN I HAVE JUST TIME WITH YOUR ASSISTANCE TO GET CLEAR UPON THE SUBJECT + TURN OVER THOSE PAPERS AND ARRANGE THE EXTRACTS IN THEIR ORDER OF TIME WHILE I TAKE A GLANCE AS TO WHO OUR CLIENT IS + HE PICKED A RED COVERED VOLUME FROM A LINE OF BOOKS OF REFERENCE BESIDE THE MANTELPIECE + HERE HE IS SAID HE SITTING DOWN AND FLATTENING IT OUT UPON HIS KNEE + LORD ROBERT WALSINGHAM DE VERE SAINT SIMON SECOND SON OF THE DUKE OF BALMORAL + HUM + ARMS AZURE THREE CALTROPS IN CHIEF OVER A FESS SABLE + BORN IN ONE THOUSAND EIGHT HUNDRED FORTY SIX + HE'S FORTY ONE YEARS OF AGE WHICH IS MATURE FOR MARRIAGE + WAS UNDER SECRETARY FOR THE COLONIES IN A LATE ADMINISTRATION + THE DUKE HIS FATHER WAS AT ONE TIME SECRETARY FOR FOREIGN AFFAIRS + THEY INHERIT PLANTAGENET BLOOD BY DIRECT DESCENT AND TUDOR ON THE DISTAFF SIDE + HA + WELL THERE IS NOTHING VERY INSTRUCTIVE IN ALL THIS + I THINK THAT I MUST TURN TO YOU WATSON FOR SOMETHING MORE SOLID + I HAVE VERY LITTLE DIFFICULTY IN FINDING WHAT I WANT SAID I FOR THE FACTS ARE QUITE RECENT AND THE MATTER STRUCK ME AS REMARKABLE + I FEARED TO REFER THEM TO YOU HOWEVER AS I KNEW THAT YOU HAD AN INQUIRY ON HAND AND THAT YOU DISLIKED THE INTRUSION OF OTHER MATTERS QUOTE + OH YOU MEAN THE LITTLE PROBLEM OF THE GROSVENOR SQUARE FURNITURE VAN + THAT IS QUITE CLEARED UP NOW THOUGH INDEED IT WAS OBVIOUS FROM THE FIRST + PRAY GIVE ME THE RESULTS OF YOUR NEWSPAPER SELECTIONS + HERE IS THE FIRST NOTICE WHICH I CAN FIND + IT IS IN THE PERSONAL COLUMN OF THE MORNING POST AND DATES AS YOU SEE SOME WEEKS BACK A MARRIAGE HAS BEEN ARRANGED IT SAYS AND WILL IF RUMOUR IS CORRECT VERY SHORTLY TAKE PLACE BETWEEN LORD ROBERT SAINT SIMON SECOND SON OF THE DUKE OF BALMORAL AND MISS HATTY DORAN THE ONLY DAUGHTER OF ALOYSIUS DORAN + ESQ. OF SAN FRANCISCO CALORIE U. S. A. THAT IS ALL + QUOTE TERSE AND TO THE POINT QUOTE REMARKED HOLMES STRETCHING HIS LONG THIN LEGS TOWARDS THE FIRE + THERE WAS A PARAGRAPH AMPLIFYING THIS IN ONE OF THE SOCIETY PAPERS OF THE SAME WEEK + AH HERE IT IS THERE WILL SOON BE A CALL FOR PROTECTION IN THE MARRIAGE MARKET FOR THE PRESENT FREE TRADE PRINCIPLE APPEARS TO TELL HEAVILY AGAINST OUR HOME PRODUCT + ONE BY ONE THE MANAGE MENT OF THE NOBLE HOUSES OF GREAT BRITAIN IS PASSING INTO THE HANDS OF OUR FAIR COUSINS FROM ACROSS THE ATLANTIC + AN IMPORTANT ADDITION HAS BEEN MADE DURING THE LAST WEEK TO THE LIST OF THE PRIZES WHICH HAVE BEEN BORNE AWAY BY THESE CHARMING INVADERS + LORD SAINT SIMON WHO HAS SHOWN HIMSELF FOR OVER TWENTY YEARS PROOF AGAINST THE LITTLE GOD'S ARROWS HAS NOW DEFINITELY ANNOUNCED HIS APPROACHING MARRIAGE WITH MISS HATTY DORAN THE FASCINATING DAUGHTER OF A CALIFORNIA MILLIONAIRE + MISS DORAN WHOSE GRACEFUL FIGURE AND STRIKING FACE ATTRACTED MUCH ATTENTION AT THE WESTBURY HOUSE FESTIVI TIES IS AN ONLY CHILD AND IT IS CURRENTLY REPORTED THAT HER DOWRY WILL RUN TO CONSIDERABLY OVER THE SIX FIGURES WITH EXPECTANCIES FOR THE FUTURE + AS IT IS AN OPEN SECRET THAT THE DUKE OF BALMORAL HAS BEEN COMPELLED TO SELL HIS PICTURES WITHIN THE LAST FEW YEARS AND AS LORD SAINT SIMON HAS NO PROPERTY OF HIS OWN SAVE THE SMALL ESTATE OF BIRCHMOOR IT IS OBVIOUS THAT THE CALIFORNIAN HEIRESS IS NOT THE ONLY GAINER BY AN ALLIANCE WHICH WILL ENABLE HER TO MAKE THE EASY AND COM MON TRANSITION FROM A REPUBLICAN LADY TO A BRITISH PEERESS + ANYTHING ELSE ASKED HOLMES YAWNING + OH YES PLENTY + THEN THERE IS ANOTHER NOTE IN THE MORNING POST TO SAY THAT THE MARIAGE WOULD BE AN ABSOLUTELY QUIET ONE THAT IT WOULD BE AT SAINT GEORGE'S HANOVER SQUARE THAT ONLY HALF A DOZEN INTIMATE FRIENDS WOULD BE INVITED AND THAT THE PARTY WOULD RETURN TO THE FURNISHED HOUSE AT LANCASTER GATE WHICH HAS BEEN TAKEN BY MR. ALOYSIUS DORAN + TWO DAYS LATER THAT IS ON WEDNESDAY LAST THERE IS A CURT ANNOUNCEMENT THAT THE WEDDING HAD TAKEN PLACE AND THAT THE HONEYMOON WOULD BE PASSED AT LORD BACKWATER'S PLACE NEAR PETERSFIELD + THOSE ARE ALL THE NOTICES WHICH APPEARED BEFORE THE DISAPPEARANCE OF THE BRIDE QUOTE + BEFORE THE WHAT ASKED HOLMES WITH A START + THE VANISHING OF THE LADY + WHEN DID SHE VANISH THEN + AT THE WEDDING BREAKFAST + INDEED + THIS IS MORE INTERESTING THAN IT PROMISED TO BE QUITE DRAMATIC IN FACT QUOTE + YES IT STRUCK ME AS BEING A LITTLE OUT OF THE COMMON + THEY OFTEN VANISH BEFORE THE CEREMONY AND OCCASIONALLY DURING THE HONEYMOON BUT I CANNOT CALL TO MIND ANYTHING QUITE SO PROMPT AS THIS + PRAY LET ME HAVE THE DETAILS + I WARN YOU THAT THEY ARE VERY INCOMPLETE + PERHAPS WE MAY MAKE THEM LESS SO + QUOTE SUCH AS THEY ARE THEY ARE SET FORTH IN A SINGLE ARTICLE OF A MORNING PAPER OF YESTERDAY WHICH I WILL READ TO YOU + IT IS HEADED SINGULAR OCCURRENCE AT A FASHIONABLE WEDDING THE FAMILY OF LORD ROBERT SAINT SIMON HAS BEEN THROWN INTO THE GREATEST CONSTERNATION BY THE STRANGE AND PAINFUL EPISODES WHICH HAVE TAKEN PLACE IN CONNECTION WITH HIS WEDDING + THE CEREMONY AS SHORTLY ANNOUNCED IN THE PAPERS OF YESTERDAY OCCURRED ON THE PREVIOUS MORNING BUT IT IS ONLY NOW THAT IT HAS BEEN POSSIBLE TO CONFIRM THE STRANGE RUMOURS WHICH HAVE BEEN SO PERSISTENTLY FLOATING ABOUT + IN SPITE OF THE ATTEMPTS OF THE FRIENDS TO HUSH THE MATTER UP SO MUCH PUBLIC ATTENTION HAS NOW BEEN DRAWN TO IT THAT NO GOOD PURPOSE CAN BE SERVED BY AFFECTING TO DISREGARD WHAT IS A COMMON SUBJECT FOR CONVERSATION + THE CEREMONY WHICH WAS PERFORMED AT SAINT GEORGE'S HANOVER SQUARE WAS A VERY QUIET ONE NO ONE BEING PRESENT SAVE THE FATHER OF THE BRIDE MR. ALOYSIUS DORAN THE DUCH ESS OF BALMORAL LORD BACKWATER LORD EUSTACE AND LADY CLARA SAINT SIMON THE YOUNGER BROTHER AND SISTER OF THE BRIDEGROOM AND LADY ALICIA WHITTINGTON + THE WHOLE PARTY PROCEEDED AFTERWARDS TO THE HOUSE OF MR. ALOYSIUS DORAN AT LANCASTER GATE WHERE BREAKFAST HAD BEEN PREPARED + IT APPEARS THAT SOME LITTLE TROUBLE WAS CAUSED BY A WOMAN WHOSE NAME HAS NOT BEEN ASCERTAINED WHO ENDEAVOURED TO FORCE HER WAY INTO THE HOUSE AFTER THE BRIDAL PARTY ALLEGING THAT SHE HAD SOME CLAIM UPON LORD SAINT SIMON + IT WAS ONLY AFTER A PAINFUL AND PROLONGED SCENE THAT SHE WAS EJECTED BY THE BUTLER AND THE FOOTMAN + THE BRIDE WHO HAD FORTUNATELY ENTERED THE HOUSE BEFORE THIS UNPLEASANT INTERRUPTION HAD SAT DOWN TO BREAKFAST WITH THE REST WHEN SHE COMPLAINED OF A SUDDEN INDISPOSITION AND RETIRED TO HER ROOM + HER PRO LONGED ABSENCE HAVING CAUSED SOME COMMENT HER FATHER FOLLOWED HER BUT LEARNED FROM HER MAID THAT SHE HAD ONLY COME UP TO HER CHAMBER FOR AN INSTANT CAUGHT UP AN ULSTER AND BONNET AND HURRIED DOWN TO THE PASSAGE + ONE OF THE FOOTMEN DECLARED THAT HE HAD SEEN A LADY LEAVE THE HOUSE THUS APPARELLED BUT HAD REFUSED TO CREDIT THAT IT WAS HIS MISTRESS BELIEVING HER TO BE WITH THE COMPANY + ON ASCER TAINING THAT HIS DAUGHTER HAD DISAPPEARED MR. ALOYSIUS DORAN IN CONJUNCTION WITH THE BRIDEGROOM INSTANTLY PUT THEMSELVES IN COMMUNICATION WITH THE POLICE AND VERY ENERGETIC INQUIRIES ARE BEING MADE WHICH WILL PROBABLY RESULT IN A SPEEDY CLEARING UP OF THIS VERY SINGULAR BUSINESS + UP TO A LATE HOUR LAST NIGHT HOWEVER NOTHING HAD TRAN SPIRED AS TO THE WHEREABOUTS OF THE MISSING LADY + THERE ARE RUMOURS OF FOUL PLAY IN THE MATTER AND IT IS SAID THAT THE POLICE HAVE CAUSED THE ARREST OF THE WOMAN WHO HAD CAUSED THE ORIGINAL DISTURBANCE IN THE BELIEF THAT FROM JEALOUSY OR SOME OTHER MOTIVE SHE MAY HAVE BEEN CONCERNED IN THE STRANGE DISAPPEARANCE OF THE BRIDE + AND IS THAT ALL + ONLY ONE LITTLE ITEM IN ANOTHER OF THE MORNING PAPERS BUT IT IS A SUGGESTIVE ONE + QUOTE THAT MISS FLORA MILLAR THE LADY WHO HAD CAUSED THE DISTURBANCE HAS ACTUALLY BEEN ARRESTED + IT APPEARS THAT SHE WAS FORMERLY A DANSEUSE AT THE ALLEGRO AND THAT SHE HAS KNOWN THE BRIDEGROOM FOR SOME YEARS + THERE ARE NO FURTHER PARTICULARS AND THE WHOLE CASE IS IN YOUR HANDS NOW SO FAR AS IT HAS BEEN SET FORTH IN THE PUBLIC PRESS + AND AN EXCEEDINGLY INTERESTING CASE IT APPEARS TO BE + I WOULD NOT HAVE MISSED IT FOR WORLDS + BUT THERE IS A RING AT THE BELL WATSON AND AS THE CLOCK MAKES IT A FEW MINUTES AFTER FOUR I HAVE NO DOUBT THAT THIS WILL PROVE TO BE OUR NOBLE CLIENT + DO NOT DREAM OF GOING WATSON FOR I VERY MUCH PREFER HAVING A WITNESS IF ONLY AS A CHECK TO MY OWN MEMORY + LORD ROBERT SAINT SIMON ANNOUNCED OUR PAGE BOY THROWING OPEN THE DOOR + A GENTLEMAN ENTERED WITH A PLEASANT CULTURED FACE HIGH NOSED AND PALE WITH SOMETHING PERHAPS OF PETULANCE ABOUT THE MOUTH AND WITH THE STEADY WELL OPENED EYE OF A MAN WHOSE PLEASANT LOT IT HAD EVER BEEN TO COMMAND AND TO BE OBEYED + HIS MANNER WAS BRISK AND YET HIS GENERAL APPEARANCE GAVE AN UNDUE IMPRESSION OF AGE FOR HE HAD A SLIGHT FORWARD STOOP AND A LITTLE BEND OF THE KNEES AS HE WALKED + HIS HAIR TOO AS HE SWEPT OFF HIS VERY CURLY BRIMMED HAT WAS GRIZZLED ROUND THE EDGES AND THIN UPON THE TOP + AS TO HIS DRESS IT WAS CAREFUL TO THE VERGE OF FOPPISHNESS WITH HIGH COLLAR BLACK FROCK COAT WHITE WAISTCOAT YELLOW GLOVES PATENT LEATHER SHOES AND LIGHTCOLOURED GAITERS + HE ADVANCED SLOWLY INTO THE ROOM TURNING HIS HEAD FROM LEFT TO RIGHT AND SWINGING IN HIS RIGHT HAND THE CORD WHICH HELD HIS GOLDEN EYEGLASSES + GOODDAY LORD SAINT SIMON SAID HOLMES RISING AND BOWING + QUOTE PRAY TAKE THE BASKET CHAIR + THIS IS MY FRIEND AND COLLEAGUE DOCTOR WATSON + DRAW UP A LITTLE TO THE FIRE AND WE WILL TALK THIS MATTER OVER + A MOST PAINFUL MATTER TO ME AS YOU CAN MOST READILY IMAGINE MR. HOLMES + I HAVE BEEN CUT TO THE QUICK + I UNDERSTAND THAT YOU HAVE ALREADY MANAGED SEVERAL DELICATE CASES OF THIS SORT SIR THOUGH I PRESUME THAT THEY WERE HARDLY FROM THE SAME CLASS OF SOCIETY + NO I AM DESCENDING + I BEG PARDON + QUOTE MY LAST CLIENT OF THE SORT WAS A KING QUOTE + OH REALLY + I HAD NO IDEA + AND WHICH KING + THE KING OF SCANDINAVIA + WHAT + HAD HE LOST HIS WIFE + QUOTE YOU CAN UNDERSTAND QUOTE SAID HOLMES SUAVELY QUOTE THAT I EXTEND TO THE AFFAIRS OF MY OTHER CLIENTS THE SAME SECRECY WHICH I PROMISE TO YOU IN YOURS QUOTE + OF COURSE + VERY RIGHT VERY RIGHT + I'M SURE I BEG PARDON + AS TO MY OWN CASE I AM READY TO GIVE YOU ANY INFORMATION WHICH MAY ASSIST YOU IN FORMING AN OPINION + THANK YOU + I HAVE ALREADY LEARNED ALL THAT IS IN THE PUBLIC PRINTS NOTHING MORE + I PRESUME THAT I MAY TAKE IT AS CORRECT THIS ARTICLE FOR EXAMPLE AS TO THE DISAPPEARANCE OF THE BRIDE + LORD SAINT SIMON GLANCED OVER IT + YES IT IS CORRECT AS FAR AS IT GOES + QUOTE BUT IT NEEDS A GREAT DEAL OF SUPPLEMENTING BEFORE ANYONE COULD OFFER AN OPINION + I THINK THAT I MAY ARRIVE AT MY FACTS MOST DIRECTLY BY QUESTIONING YOU + PRAY DO SO + WHEN DID YOU FIRST MEET MISS HATTY DORAN + IN SAN FRANCISCO A YEAR AGO + YOU WERE TRAVELLING IN THE STATES + QUOTE YES QUOTE + DID YOU BECOME ENGAGED THEN + NUMBER + BUT YOU WERE ON A FRIENDLY FOOTING + I WAS AMUSED BY HER SOCIETY AND SHE COULD SEE THAT I WAS AMUSED + HER FATHER IS VERY RICH + QUOTE HE IS SAID TO BE THE RICHEST MAN ON THE PACIFIC SLOPE QUOTE + AND HOW DID HE MAKE HIS MONEY + IN MINING + HE HAD NOTHING A FEW YEARS AGO + THEN HE STRUCK GOLD INVESTED IT AND CAME UP BY LEAPS AND BOUNDS + NOW WHAT IS YOUR OWN IMPRESSION AS TO THE YOUNG LADY'S YOUR WIFE'S CHARACTER + THE NOBLEMAN SWUNG HIS GLASSES A LITTLE FASTER AND STARED DOWN INTO THE FIRE + YOU SEE MR. HOLMES SAID HE MY WIFE WAS TWENTY BEFORE HER FATHER BECAME A RICH MAN + DURING THAT TIME SHE RAN FREE IN A MINING CAMP AND WANDERED THROUGH WOODS OR MOUNTAINS SO THAT HER EDUCATION HAS COME FROM NATURE RATHER THAN FROM THE SCHOOLMASTER + SHE IS WHAT WE CALL IN ENGLAND A TOMBOY WITH A STRONG NATURE WILD AND FREE UNFETTERED BY ANY SORT OF TRADITIONS + SHE IS IMPETUOUS VOLCANIC I WAS ABOUT TO SAY + SHE IS SWIFT IN MAKING UP HER MIND AND FEARLESS IN CARTYING OUT HER RESOLUTIONS + ON THE OTHER HAND I WOULD NOT HAVE GIVEN HER THE NAME WHICH I HAVE THE HONOUR TO BEAR QUOTE HE GAVE A LITTLE STATELY COUGH QUOTE HAD NOT I THOUGHT HER TO BE AT BOTTOM A NOBLE WOMAN + I BELIEVE THAT SHE IS CAPABLE OF HEROIC SELF SACRIFICE AND THAT ANYTHING DISHONOURABLE WOULD BE REPUGNANT TO HER + HAVE YOU HER PHOTOGRAPH + I BROUGHT THIS WITH ME + HE OPENED A LOCKET AND SHOWED US THE FULL FACE OF A VERY LOVELY WOMAN + IT WAS NOT A PHOTOGRAPH BUT AN IVORY MINIATURE AND THE ARTIST HAD BROUGHT OUT THE FULL EFFECT OF THE LUSTROUS BLACK HAIR THE LARGE DARK EYES AND THE EXQUISITE MOUTH + HOLMES GAZED LONG AND EARNESTLY AT IT + THEN HE CLOSED THE LOCKET AND HANDED IT BACK TO LORD SAINT SIMON + THE YOUNG LADY CAME TO LONDON THEN AND YOU RENEWED YOUR ACQUAINTANCE + YES HER FATHER BROUGHT HER OVER FOR THIS LAST LONDON SEASON + I MET HER SEVERAL TIMES BECAME ENGAGED TO HER AND HAVE NOW MARRIED HER QUOTE + SHE BROUGHT + I UNDERSTAND A CONSIDERABLE DOWRY + A FAIR DOWRY + NOT MORE THAN IS USUAL IN MY FAMILY + AND THIS OF COURSE REMAINS TO YOU SINCE THE MARRIAGE IS A FAIT ACCOMPLI + QUOTE I REALLY HAVE MADE NO INQUIRIES ON THE SUBJECT QUOTE + VERY NATURALLY NOT + DID YOU SEE MISS DORAN ON THE DAY BEFORE THE WEDDING + YES + WAS SHE IN GOOD SPIRITS + NEVER BETTER + SHE KEPT TALKING OF WHAT WE SHOULD DO IN OUR FUTURE LIVES QUOTE + INDEED + THAT IS VETY INTERESTING + AND ON THE MORNING OF THE WEDDING + SHE WAS AS BRIGHT AS POSSIBLE AT LEAST UNTIL AFTER THE CEREMONY + AND DID YOU OBSERVE ANY CHANGE IN HER THEN + WELL TO TELL THE TRUTH I SAW THEN THE FIRST SIGNS THAT I HAD EVER SEEN THAT HER TEMPER WAS JUST A LITTLE SHARP + THE INCIDENT HOWEVER WAS TOO TRIVIAL TO RELATE AND CAN HAVE NO POSSIBLE BEARING UPON THE CASE QUOTE + PRAY LET US HAVE IT FOR ALL THAT + OH IT IS CHILDISH + SHE DROPPED HER BOUQUET AS WE WENT TOWARDS THE VESTRY + SHE WAS PASSING THE FRONT PEW AT THE TIME AND IT FELL OVER INTO THE PEW + THERE WAS A MOMENT'S DELAY BUT THE GENTLEMAN IN THE PEW HANDED IT UP TO HER AGAIN AND IT DID NOT APPEAR TO BE THE WORSE FOR THE FALL + YET WHEN I SPOKE TO HER OF THE MATTER SHE ANSWERED ME ABRUPTLY AND IN THE CARRIAGE ON OUR WAY HOME SHE SEEMED ABSURDLY AGITATED OVER THIS TRIFLING CAUSE + INDEED + YOU SAY THAT THERE WAS A GENTLEMAN IN THE PEW + SOME OF THE GENERAL PUBLIC WERE PRESENT THEN + QUOTE OH YES + IT IS IMPOSSIBLE TO EXCLUDE THEM WHEN THE CHURCH IS OPEN + THIS GENTLEMAN WAS NOT ONE OF YOUR WIFE'S FRIENDS + NO NO I CALL HIM A GENTLEMAN BY COURTESY BUT HE WAS QUITE A COMMON LOOKING PERSON + I HARDLY NOTICED HIS APPEARANCE + BUT REALLY I THINK THAT WE ARE WANDERING RATHER FAR FROM THE POINT + LADY SAINT SIMON THEN RETURNED FROM THE WEDDING IN A LESS CHEERFUL FRAME OF MIND THAN SHE HAD GONE TO IT + WHAT DID SHE DO ON REENTERING HER FATHER'S HOUSE QUOTE + I SAW HER IN CONVERSATION WITH HER MAID + AND WHO IS HER MAID + ALICE IS HER NAME + SHE IS AN AMERICAN AND CAME FROM CALIFORNIA WITH HER + A CONFIDENTIAL SERVANT + QUOTE A LITTLE TOO MUCH SO + IT SEEMED TO ME THAT HER MISTRESS ALLOWED HER TO TAKE GREAT LIBERTIES + STILL OF COURSE IN AMERICA THEY LOOK UPON THESE THINGS IN A DIFFERENT WAY + HOW LONG DID SHE SPEAK TO THIS ALICE + OH A FEW MINUTES + I HAD SOMETHING ELSE TO THINK OF + YOU DID NOT OVERHEAR WHAT THEY SAID + QUOTE LADY SAINT SIMON SAID SOMETHING ABOUT JUMPING A CLAIM + SHE WAS ACCUSTOMED TO USE SLANG OF THE KIND + I HAVE NO IDEA WHAT SHE MEANT + AMERICAN SLANG IS VERY EXPRESSIVE SOMETIMES + AND WHAT DID YOUR WIFE DO WHEN SHE FINISHED SPEAKING TO HER MAID + SHE WALKED INTO THE BREAKFAST ROOM + ON YOUR ARM + QUOTE NO ALONE + SHE WAS VERY INDEPENDENT IN LITTLE MATTERS LIKE THAT + THEN AFTER WE HAD SAT DOWN FOR TEN MINUTES OR SO SHE ROSE HURRIEDLY MUTTERED SOME WORDS OF APOLOGY AND LEFT THE ROOM + SHE NEVER CAME BACK + BUT THIS MAID ALICE AS I UNDERSTAND DEPOSES THAT SHE WENT TO HER ROOM COVERED HER BRIDE'S DRESS WITH A LONG ULSTER PUT ON A BONNET AND WENT OUT + QUITE SO + AND SHE WAS AFTERWARDS SEEN WALKING INTO HYDE PARK IN COMPANY WITH FLORA MILLAR A WOMAN WHO IS NOW IN CUSTODY AND WHO HAD ALREADY MADE A DISTURBANCE AT MR. DORAN'S HOUSE THAT MORNING + AH YES + I SHOULD LIKE A FEW PATTICULARS AS TO THIS YOUNG LADY AND YOUR RELATIONS TO HER QUOTE + LORD SAINT SIMON SHRUGGED HIS SHOULDERS AND RAISED HIS EYEBROWS + WE HAVE BEEN ON A FRIENDLY FOOTING FOR SOME YEARS I MAY SAY ON A VERY FRIENDLY FOOTING + SHE USED TO BE AT THE ALLEGRO + I HAVE NOT TREATED HER UNGENEROUSLY AND SHE HAD NO JUST CAUSE OF COMPLAINT AGAINST ME BUT YOU KNOW WHAT WOMEN ARE MR. HOLMES + FLORA WAS A DEAR LITTLE THING BUT EXCEEDINGLY HOT HEADED AND DEVOTEDLY ATTACHED TO ME + SHE WROTE ME DREADFUL LETTERS WHEN SHE HEARD THAT I WAS ABOUT TO BE MARRIED AND TO TELL THE TRUTH THE REASON WHY I HAD THE MARRIAGE CELEBRATED SO QUIETLY WAS THAT I FEARED LEST THERE MIGHT BE A SCANDAL IN THE CHURCH + SHE CAME TO MR. DORAN'S DOOR JUST AFTER WE RETURNED AND SHE ENDEAVOURED TO PUSH HER WAY IN UTTERING VERY ABUSIVE EXPRESSIONS TOWARDS MY WIFE AND EVEN THREATENING HER BUT I HAD FORESEEN THE POSSIBILITY OF SOMETHING OF THE SORT AND I HAD TWO POLICE FELLOWS THERE IN PRIVATE CLOTHES WHO SOON PUSHED HER OUT AGAIN + SHE WAS QUIET WHEN SHE SAW THAT THERE WAS NO GOOD IN MAKING A ROW + DID YOUR WIFE HEAR ALL THIS + NO THANK GOODNESS SHE DID NOT + AND SHE WAS SEEN WALKING WITH THIS VERY WOMAN AFTERWARDS + QUOTE YES + THAT IS WHAT MR. LESTRADE OF SCOTLAND YARD LOOKS UPON AS SO SERIOUS + IT IS THOUGHT THAT FLORA DECOYED MY WIFE OUT AND LAID SOME TERRIBLE TRAP FOR HER + WELL IT IS A POSSIBLE SUPPOSITION + YOU THINK SO TOO + L. DID NOT SAY A PROBABLE ONE + BUT YOU DO NOT YOURSELF LOOK UPON THIS AS LIKELY + QUOTE I DO NOT THINK FLORA WOULD HURT A FLY QUOTE + STILL JEALOUSY IS A STRANGE TRANSFORMER OF CHARACTERS + PRAY WHAT IS YOUR OWN THEORY AS TO WHAT TOOK PLACE + WELL REALLY I CAME TO SEEK A THEORY NOT TO PROPOUND ONE + I HAVE GIVEN YOU ALL THE FACTS + SINCE YOU ASK ME HOWEVER I MAY SAY THAT IT HAS OCCURRED TO ME AS POSSIBLE THAT THE EXCITEMENT OF THIS AFFAIR THE CONSCIOUSNESS THAT SHE HAD MADE SO IMMENSE A SOCIAL STRIDE HAD THE EFFECT OF CAUSING SOME LITTLE NERVOUS DISTURBANCE IN MY WIFE + IN SHORT THAT SHE HAD BECOME SUDDENLY DERANGED + QUOTE WELL REALLY WHEN I CONSIDER THAT SHE HAS TURNED HER BACK I WILL NOT SAY UPON ME BUT UPON SO MUCH THAT MANY HAVE ASPIRED TO WITHOUT SUCCESS I CAN HARDLY EXPLAIN IT IN ANY OTHER FASHION QUOTE + WELL CERTAINLY THAT IS ALSO A CONCEIVABLE HYPOTHESIS SAID HOLMES SMILING + AND NOW LORD SAINT SIMON I THINK THAT I HAVE NEARLY ALL MY DATA + MAY I ASK WHETHER YOU WERE SEATED AT THE BREAKFAST TABLE SO THAT YOU COULD SEE OUT OF THE WINDOW + WE COULD SEE THE OTHER SIDE OF THE ROAD AND THE PARK + QUITE SO + THEN I DO NOT THINK THAT I NEED TO DETAIN YOU LONGER + I SHALL COMMUNICATE WITH YOU QUOTE + SHOULD YOU BE FORTUNATE ENOUGH TO SOLVE THIS PROBLEM SAID OUR CLIENT RISING + I HAVE SOLVED IT + EH + WHAT WAS THAT + I SAY THAT I HAVE SOLVED IT + QUOTE WHERE THEN IS MY WIFE QUOTE + THAT IS A DETAIL WHICH I SHALL SPEEDILY SUPPLY + LORD SAINT SIMON SHOOK HIS HEAD + I AM AFRAID THAT IT WILL TAKE WISER HEADS THAN YOURS OR MINE HE REMARKED AND BOWING IN A STATELY OLD FASHIONED MANNER HE DEPARTED + IT IS VERY GOOD OF LORD SAINT SIMON TO HONOUR MY HEAD BY PUTTING IT ON A LEVEL WITH HIS OWN SAID SHERLOCK HOLMES LAUGHING + I THINK THAT I SHALL HAVE A WHISKY AND SODA AND A CIGAR AFTER ALL THIS CROSS QUESTIONING + I HAD FORMED MY CONCLUSIONS AS TO THE CASE BEFORE OUR CLIENT CAME INTO THE ROOM + QUOTE MY DEAR HOLMES QUOTE + I HAVE NOTES OF SEVERAL SIMILAR CASES THOUGH NONE AS I REMARKED BEFORE WHICH WERE QUITE AS PROMPT + MY WHOLE EXAMINATION SERVED TO TURN MY CONJECTURE INTO A CERTAINTY + CIRCUMSTANTIAL EVIDENCE IS OCCASIONALLY VERY CONVINCING AS WHEN YOU FIND A TROUT IN THE MILK TO QUOTE THOREAU'S EXAMPLE + BUT I HAVE HEARD ALL THAT YOU HAVE HEARD + WITHOUT HOWEVER THE KNOWLEDGE OF PREEXISTING CASES WHICH SERVES ME SO WELL + THERE WAS A PARALLEL INSTANCE IN ABERDEEN SOME YEARS BACK AND SOMETHING ON VERY MUCH THE SAME LINES AT MUNICH THE YEAR AFTER THE FRANCO PRUSSIAN WAR + IT IS ONE OF THESE CASES BUT HELLO HERE IS LESTRADE + GOOD AFTERNOON LESTRADE + YOU WILL FIND AN EXTRA TUMBLER UPON THE SIDEBOARD .AND THERE ARE CIGARS IN THE BOX + THE OFFICIAL DETECTIVE WAS ATTIRED IN A PEAJACKET AND CRAVAT WHICH GAVE HIM A DECIDEDLY NAUTICAL APPEARANCE AND HE CARRIED A BLACK CANVAS BAG IN HIS HAND + WITH A SHORT GREETING HE SEATED HIMSELF AND LIT THE CIGAR WHICH HAD BEEN OFFERED TO HIM + QUOTE WHAT'S UP THEN QUOTE ASKED HOLMES WITH A TWINKLE IN HIS EYE + YOU LOOK DISSATISFIED + AND I FEEL DISSATISFIED + IT IS THIS INFERNAL SAINT SIMON MARRIAGE CASE + I CAN MAKE NEITHER HEAD NOR TAIL OF THE BUSINESS + REALLY + YOU SURPRISE ME + QUOTE WHO EVER HEARD OF SUCH A MIXED AFFAIR + EVERY CLUE SEEMS TO SLIP THROUGH MY FINGERS + I HAVE BEEN AT WORK UPON IT ALL DAY + AND VERY WET IT SEEMS TO HAVE MADE YOU SAID HOLMES LAYING HIS HAND UPON THE ARM OF THE PEAJACKET + YES I HAVE BEEN DRAGGING THE SERPENTINE + IN HEAVEN'S NAME WHAT FOR + IN SEARCH OF THE BODY OF LADY SAINT SIMON + SHERLOCK HOLMES LEANED BACK IN HIS CHAIR AND LAUGHED HEARTILY + QUOTE HAVE YOU DRAGGED THE BASIN OF TRAFALGAR SQUARE FOUNTAIN QUOTE HE ASKED + WHY + WHAT DO YOU MEAN + BECAUSE YOU HAVE JUST AS GOOD A CHANCE OF FINDING THIS LADY IN THE ONE AS IN THE OTHER + LESTRADE SHOT AN ANGRY GLANCE AT MY COMPANION + I SUPPOSE YOU KNOW ALL ABOUT IT HE SNARLED + WELL I HAVE ONLY JUST HEARD THE FACTS BUT MY MIND IS MADE UP + QUOTE OH INDEED + THEN YOU THINK THAT THE SERPENTINE PLAYS NO PART IN THE MANER + I THINK IT VERY UNLIKELY + THEN PERHAPS YOU WILL KINDLY EXPLAIN HOW IT IS THAT WE FOUND THIS IN IT + HE OPENED HIS BAG AS HE SPOKE AND TUMBLED ONTO THE FLOOR A WEDDING DRESS OF WATERED SILK A PAIR OF WHITE SATIN SHOES AND A BRIDE'S WREATH AND VEIL ALL DISCOLOURED AND SOAKED IN WATER + THERE SAID HE PUTTING A NEW WEDDING RING UPON THE TOP OF THE PILE + THERE IS A LITTLE NUT FOR YOU TO CRACK MASTER HOLMES + QUOTE OH INDEED QUOTE SAID MY FRIEND BLOWING BLUE RINGS INTO THE AIR + YOU DRAGGED THEM FROM THE SERPENTINE + NUMBER + THEY WERE FOUND FLOATING NEAR THE MARGIN BY A PARKKEEPER + THEY HAVE BEEN IDENTIFIED AS HER CLOTHES AND IT SEEMED TO ME THAT IF THE CLOTHES WERE THERE THE BODY WOULD NOT BE FAR OFF + BY THE SAME BRILLIANT REASONING EVERY MAN'S BODY IS TO BE FOUND IN THE NEIGHBOURHOOD OF HIS WARDROBE + AND PRAY WHAT DID YOU HOPE TO ARRIVE AT THROUGH THIS + QUOTE AT SOME EVIDENCE IMPLICATING FLORA MILLAR IN THE DISAPPEARANCE QUOTE + I AM AFRAID THAT YOU WILL FIND IT DIFFICULT + ARE YOU INDEED NOW CRIED LESTRADE WITH SOME BITTERNESS + I AM AFRAID HOLMES THAT YOU ARE NOT VERY PRACTICAL WITH YOUR DEDUCTIONS AND YOUR INFERENCES + YOU HAVE MADE TWO BLUNDERS IN AS MANY MINUTES + THIS DRESS DOES IMPLICATE MISS FLORA MILLAR + AND HOW + QUOTE IN THE DRESS IS A POCKET + IN THE POCKET IS A CARD CASE + IN THE CARD CASE IS A NOTE + AND HERE IS THE VERY NOTE + HE SLAPPED IT DOWN UPON THE TABLE IN FRONT OF HIM + LISTEN TO THIS YOU WILL SEE ME WHEN ALL IS READY + COME AT ONCE + F. H. M. NOW MY THEORY ALL ALONG HAS BEEN THAT LADY SAINT SIMON WAS DECOYED AWAY BY FLORA MILLAR AND THAT SHE WITH CONFEDERATES NO DOUBT WAS RESPONSIBLE FOR HER DISAPPEARANCE + HERE SIGNED WITH HER INITIALS IS THE VERY NOTE WHICH WAS NO DOUBT QUIETLY SLIPPED INTO HER HAND AT THE DOOR AND WHICH LURED HER WITHIN THEIR REACH + VERY GOOD LESTRADE SAID HOLMES LAUGHING + QUOTE YOU REALLY ARE VERY FINE INDEED + LET ME SEE IT + HE TOOK UP THE PAPER IN A LISTLESS WAY BUT HIS ATTENTION INSTANTLY BECAME RIVETED AND HE GAVE A LITTLE CRY OF SATISFACTION + THIS IS INDEED IMPORTANT SAID HE + HA YOU FIND IT SO + EXTREMELY SO + I CONGRATULATE YOU WARMLY + LESTRADE ROSE IN HIS TRIUMPH AND BENT HIS HEAD TO LOOK + QUOTE WHY QUOTE HE SHRIEKED QUOTE YOU'RE LOOKING AT THE WRONG SIDE QUOTE + ON THE CONTRARY THIS IS THE RIGHT SIDE + THE RIGHT SIDE + YOU'RE MAD + HERE IS THE NOTE WRITTEN IN PENCIL OVER HERE + AND OVER HERE IS WHAT APPEARS TO BE THE FRAGMENT OF A HOTEL BILL WHICH INTERESTS ME DEEPLY + THERE'S NOTHING IN IT + I LOOKED AT IT BEFORE QUOTE SAID LESTRADE + OCTOBER FOURTH ROOMS EIGHTS BREAKFAST TWOS. SIX D. COCKTAIL ONES. LUNCH TWOS. SIX D. GLASS SHERRY EIGHT D. + I SEE NOTHING IN THAT + VERY LIKELY NOT + IT IS MOST IMPORTANT ALL THE SAME + AS TO THE NOTE IT IS IMPORTANT ALSO OR AT LEAST THE INITIALS ARE SO I CONGRATULATE YOU AGAIN + I'VE WASTED TIME ENOUGH SAID LESTRADE RISING + QUOTE I BELIEVE IN HARD WORK AND NOT IN SITTING BY THE FIRE SPINNING FINE THEORIES + GOOD DAY MR. HOLMES AND WE SHALL SEE WHICH GETS TO THE BOTTOM OF THE MATTER FIRST + HE GATHERED UP THE GARMENTS THRUST THEM INTO THE BAG AND MADE FOR THE DOOR + JUST ONE HINT TO YOU LESTRADE DRAWLED HOLMES BEFORE HIS RIVAL VANISHED I WILL TELL YOU THE TRUE SOLUTION OF THE MATTER + LADY SAINT SIMON IS A MYTH + THERE IS NOT AND THERE NEVER HAS BEEN ANY SUCH PERSON + LESTRADE LOOKED SADLY AT MY COMPANION + THEN HE TURNED TO ME TAPPED HIS FOREHEAD THREE TIMES SHOOK HIS HEAD SOLEMNLY AND HURRIED AWAY + HE HAD HARDLY SHUT THE DOOR BEHIND HIM WHEN HOLMES ROSE TO PUT ON HIS OVERCOAT + THERE IS SOMETHING IN WHAT THE FELLOW SAYS ABOUT OUTDOOR WORK HE REMARKED SO L. THINK WATSON THAT I MUST LEAVE YOU TO YOUR PAPERS FOR A LITTLE + IT WAS AFTER FIVE O'CLOCK WHEN SHERLOCK HOLMES LEFT ME BUT I HAD NO TIME TO BE LONELY FOR WITHIN AN HOUR THERE ARRIVED A CONFECTIONER'S MAN WITH A VERY LARGE FLAT BOX + THIS HE UNPACKED WITH THE HELP OF A YOUTH WHOM HE HAD BROUGHT WITH HIM AND PRESENTLY TO MY VERY GREAT ASTONISHMENT A QUITE EPICUREAN LITTLE COLD SUPPER BEGAN TO BE LAID OUT UPON OUR HUMBLE LODGING HOUSE MAHOGANY + THERE WERE A COUPLE OF BRACE OF COLD WOODCOCK A PHEASANT A PATE DE FOIE GRAS PIE WITH A GROUP OF ANCIENT AND COBWEBBY BOTTLES + HAVING LAID OUT ALL THESE LUXURIES MY TWO VISITORS VANISHED AWAY LIKE THE GENII OF THE ARABIAN NIGHTS WITH NO EXPLANATION SAVE THAT THE THINGS HAD BEEN PAID FOR AND WERE ORDERED TO THIS ADDRESS + JUST BEFORE NINE O'CLOCK SHERLOCK HOLMES STEPPED BRISKLY INTO THE ROOM + HIS FEATURES WERE GRAVELY SET BUT THERE WAS A LIGHT IN HIS EYE WHICH MADE ME THINK THAT HE HAD NOT BEEN DISAPPOINTED IN HIS CONCLUSIONS + THEY HAVE LAID THE SUPPER THEN HE SAID RUBBING HIS HANDS + QUOTE YOU SEEM TO EXPECT COMPANY + THEY HAVE LAID FOR FIVE + YES I FANCY WE MAY HAVE SOME COMPANY DROPPING IN SAID HE + I AM SURPRISED THAT LORD SAINT SIMON HAS NOT ALREADY ARRIVED + HA + I FANCY THAT I HEAR HIS STEP NOW UPON THE STAIRS + IT WAS INDEED OUR VISITOR OF THE AFTERNOON WHO CAME BUSTLING IN DANGLING HIS GLASSES MORE VIGOROUSLY THAN EVER AND WITH A VERY PERTURBED EXPRESSION UPON HIS ARISTOCRATIC FEATURES + MY MESSENGER REACHED YOU THEN ASKED HOLMES + QUOTE YES AND I CONFESS THAT THE CONTENTS STARTLED ME BEYOND MEASURE + HAVE YOU GOOD AUTHORITY FOR WHAT YOU SAY + THE BEST POSSIBLE + LORD SAINT SIMON SANK INTO A CHAIR AND PASSED HIS HAND OVER HIS FOREHEAD + WHAT WILL THE DUKE SAY HE MURMURED WHEN HE HEARS THAT ONE OF THE FAMILY HAS BEEN SUBJECTED TO SUCH HUMILIATION + IT IS THE PUREST ACCIDENT + I CANNOT ALLOW THAT THERE IS ANY HUMILIATION + QUOTE AH YOU LOOK ON THESE THINGS FROM ANOTHER STANDPOINT QUOTE + I FAIL TO SEE THAT ANYONE IS TO BLAME + I CAN HARDLY SEE HOW THE LADY COULD HAVE ACTED OTHERWISE THOUGH HER ABRUPT METHOD OF DOING IT WAS UNDOUBTEDLY TO BE REGRETTED + HAVING NO MOTHER SHE HAD NO ONE TO ADVISE HER AT SUCH A CRISIS + IT WAS A SLIGHT SIR A PUBLIC SLIGHT SAID LORD SAINT SIMON TAPPING HIS FINGERS UPON THE TABLE + YOU MUST MAKE ALLOWANCE FOR THIS POOR GIRL PLACED IN SO UNPRECEDENTED A POSITION + I WILL MAKE NO ALLOWANCE + I AM VERY ANGRY INDEED AND I HAVE BEEN SHAMEFULLY USED QUOTE + I THINK THAT I HEARD A RING SAID HOLMES + YES THERE ARE STEPS ON THE LANDING + IF I CANNOT PERSUADE YOU TO TAKE A LENIENT VIEW OF THE MATTER LORD SAINT SIMON I HAVE BROUGHT AN ADVOCATE HERE WHO MAY BE MORE SUCCESSFUL + HE OPENED THE DOOR AND USHERED IN A LADY AND GENTLEMAN + LORD SAINT SIMON SAID HE ALLOW ME TO INTRODUCE YOU TO MR. AND MRS. FRANCIS HAY MOULTON + THE LADY I THINK YOU HAVE ALREADY MET + AT THE SIGHT OF THESE NEWCOMERS OUR CLIENT HAD SPRUNG FROM HIS SEAT AND STOOD VERY ERECT WITH HIS EYES CAST DOWN AND HIS HAND THRUST INTO THE BREAST OF HIS FROCK COAT A PICTURE OF OFFENDED DIGNITY + THE LADY HAD TAKEN A QUICK STEP FORWARD AND HAD HELD OUT HER HAND TO HIM BUT HE STILL REFUSED TO RAISE HIS EYES + IT WAS AS WELL FOR HIS RESOLUTION PERHAPS FOR HER PLEADING FACE WAS ONE WHICH IT WAS HARD TO RESIST + QUOTE YOU'RE ANGRY ROBERT QUOTE SAID SHE + WELL I GUESS YOU HAVE EVERY CAUSE TO BE + PRAY MAKE NO APOLOGY TO ME SAID LORD SAINT SIMON BITTERLY + OH YES I KNOW THAT I HAVE TREATED YOU REAL BAD AND THAT I SHOULD HAVE SPOKEN TO YOU BEFORE I WENT BUT I WAS KIND OF RATTLED AND FROM THE TIME WHEN I SAW FRANK HERE AGAIN I JUST DIDN'T KNOW WHAT I WAS DOING OR SAYING + I ONLY WONDER I DIDN'T FALL DOWN AND DO A FAINT RIGHT THERE BEFORE THE ALTAR + PERHAPS MRS. MOULTON YOU WOULD LIKE MY FRIEND AND ME TO LEAVE THE ROOM WHILE YOU EXPLAIN THIS MATTER + QUOTE IF I MAY GIVE AN OPINION QUOTE REMARKED THE STRANGE GENTLEMAN QUOTE WE'VE HAD JUST A LITTLE TOO MUCH SECRECY OVER THIS BUSINESS ALREADY + FOR MY PART I SHOULD LIKE ALL EUROPE AND AMERICA TO HEAR THE RIGHTS OF IT + HE WAS A SMALL WIRY SUNBURNT MAN CLEAN SHAVEN WITH A SHARP FACE AND ALERT MANNER + THEN I'LL TELL OUR STORY RIGHT AWAY SAID THE LADY + FRANK HERE AND I MET IN EIGHTY FOUR IN MCQUIRE'S CAMP NEAR THE ROCKIES WHERE PA WAS WORKING A CLAIM + WE WERE ENGAGED TO EACH OTHER FRANK AND I BUT THEN ONE DAY FATHER STRUCK A RICH POCKET AND MADE A PILE WHILE POOR FRANK HERE HAD A CLAIM THAT PETERED OUT AND CAME TO NOTHING + THE RICHER PA GREW THE POORER WAS FRANK SO AT LAST PA WOULDN'T HEAR OF OUR ENGAGEMENT LASTING ANY LONGER AND HE TOOK ME AWAY TO FRISCO + FRANK WOULDN'T THROW UP HIS HAND THOUGH SO HE FOLLOWED ME THERE AND HE SAW ME WITHOUT PA KNOWING ANYTHING ABOUT IT + IT WOULD ONLY HAVE MADE HIM MAD TO KNOW SO WE JUST FIXED IT ALL UP FOR OURSELVES + FRANK SAID THAT HE WOULD GO AND MAKE HIS PILE TOO AND NEVER COME BACK TO CLAIM ME UNTIL HE HAD AS MUCH AS PA + SO THEN I PROMISED TO WAIT FOR HIM TO THE END OF TIME AND PLEDGED MYSELF NOT TO MARRY ANYONE ELSE WHILE HE LIVED + WHY SHOULDN'T WE BE MARRIED RIGHT AWAY THEN SAID HE AND THEN I WILL FEEL SURE OF YOU AND I WON'T CLAIM TO BE YOUR HUSBAND UNTIL I COME BACK + WELL WE TALKED IT OVER AND HE HAD FIXED IT ALL UP SO NICELY WITH A CLERGYMAN ALL READY IN WAITING THAT WE JUST DID IT RIGHT THERE AND THEN FRANK WENT OFF TO SEEK HIS FORTUNE AND I WENT BACK TO PA + THE NEXT I HEARD OF FRANK WAS THAT HE WAS IN MONTANA AND THEN HE WENT PROSPECTING IN ARIZONA AND THEN I HEARD OF HIM FROM NEW MEXICO + AFTER THAT CAME A LONG NEWSPAPER STORY ABOUT HOW A MINERS' CAMP HAD BEEN ATTACKED BY APACHE INDIANS AND THERE WAS MY FRANK'S NAME AMONG THE KILLED + I FAINTED DEAD AWAY AND I WAS VERY SICK FOR MONTHS AFTER + PA THOUGHT I HAD A DECLINE AND TOOK ME TO HALF THE DOCTORS IN FRISCO + NOT A WORD OF NEWS CAME FOR A YEAR AND MORE SO THAT I NEVER DOUBTED THAT FRANK WAS REALLY DEAD + THEN LORD SAINT SIMON CAME TO FRISCO AND WE CAME TO LONDON AND A MARRIAGE WAS ARRANGED AND PA WAS VERY PLEASED BUT I FELT ALL THE TIME THAT NO MAN ON THIS EARTH WOULD EVER TAKE THE PLACE IN MY HEART THAT HAD BEEN GIVEN TO MY POOR FRANK + STILL IF I HAD MARRIED LORD SAINT SIMON OF COURSE I'D HAVE DONE MY DUTY BY HIM + WE CAN'T COMMAND OUR LOVE BUT WE CAN OUR ACTIONS + I WENT TO THE ALTAR WITH HIM WITH THE INTENTION TO MAKE HIM JUST AS GOOD A WIFE AS IT WAS IN ME TO BE + BUT YOU MAY IMAGINE WHAT I FELT WHEN JUST AS I CAME TO THE ALTAR RAILS I GLANCED BACK AND SAW FRANK STANDING AND LOOKING AT ME OUT OF THE FIRST PEW + I THOUGHT IT WAS HIS GHOST AT FIRST BUT WHEN I LOOKED AGAIN THERE HE WAS STILL WITH A KIND OF QUESTION IN HIS EYES AS IF TO ASK ME WHETHER I WERE GLAD OR SORRY TO SEE HIM + I WONDER I DIDN'T DROP + I KNOW THAT EVERYTHING WAS TURNING ROUND AND THE WORDS OF THE CLERGYMAN WERE JUST LIKE THE BUZZ OF A BEE IN MY EAR + I DIDN'T KNOW WHAT TO DO + SHOULD I STOP THE SERVICE AND MAKE A SCENE IN THE CHURCH + I GLANCED AT HIM AGAIN AND HE SEEMED TO KNOW WHAT I WAS THINKING FOR HE RAISED HIS FINGER TO HIS LIPS TO TELL ME TO BE STILL + THEN I SAW HIM SCRIBBLE ON A PIECE OF PAPER AND I KNEW THAT HE WAS WRITING ME A NOTE + AS I PASSED HIS PEW ON THE WAY OUT I DROPPED MY BOUQUET OVER TO HIM AND HE SLIPPED THE NOTE INTO MY HAND WHEN HE RETURNED ME THE FLOWERS + IT WAS ONLY A LINE ASKING ME TO JOIN HIM WHEN HE MADE THE SIGN TO ME TO DO SO + OF COURSE I NEVER DOUBTED FOR A MOMENT THAT MY FIRST DUTY WAS NOW TO HIM AND I DETERMINED TO DO JUST WHATEVER HE MIGHT DIRECT + QUOTE WHEN I GOT BACK I TOLD MY MAID WHO HAD KNOWN HIM IN CALIFORNIA AND HAD ALWAYS BEEN HIS FRIEND + I ORDERED HER TO SAY NOTHING BUT TO GET A FEW THINGS PACKED AND MY ULSTER READY + I KNOW I OUGHT TO HAVE SPOKEN TO LORD SAINT SIMON BUT IT WAS DREADFUL HARD BEFORE HIS MOTHER AND ALL THOSE GREAT PEOPLE + I JUST MADE UP MY MIND TO RUN AWAY AND EXPLAIN AFTERWARDS + I HADN'T BEEN AT THE TABLE TEN MINUTES BEFORE I SAW FRANK OUT OF THE WINDOW AT THE OTHER SIDE OF THE ROAD + HE BECKONED TO ME AND THEN BEGAN WALKING INTO THE PARK + I SLIPPED OUT PUT ON MY THINGS AND FOLLOWED HIM + SOME WOMAN CAME TALKING SOMETHING OR OTHER ABOUT LORD SAINT SIMON TO ME SEEMED TO ME FROM THE LITTLE I HEARD AS IF HE HAD A LITTLE SECRET OF HIS OWN BEFORE MARRIAGE ALSO BUT I MANAGED TO GET AWAY FROM HER AND SOON OVERTOOK FRANK + WE GOT INTO A CAB TOGETHER AND AWAY WE DROVE TO SOME LODGINGS HE HAD TAKEN IN GORDON SQUARE AND THAT WAS MY TRUE WEDDING AFTER ALL THOSE YEARS OF WAITING + FRANK HAD BEEN A PRISONER AMONG THE APACHES HAD ESCAPED CAME ON TO FRISCO FOUND THAT I HAD GIVEN HIM UP FOR DEAD AND HAD GONE TO ENGLAND FOLLOWED ME THERE AND HAD COME UPON ME AT LAST ON THE VERY MORNING OF MY SECOND WEDDING + I SAW IT IN A PAPER EXPLAINED THE AMERICAN + IT GAVE THE NAME AND THE CHURCH BUT NOT WHERE THE LADY LIVED + THEN WE HAD A TALK AS TO WHAT WE SHOULD DO AND FRANK WAS ALL FOR OPENNESS BUT I WAS SO ASHAMED OF IT ALL THAT I FELT AS IF I SHOULD LIKE TO VANISH AWAY AND NEVER SEE ANY OF THEM AGAIN JUST SENDING A LINE TO PA PERHAPS TO SHOW HIM THAT I WAS ALIVE + IT WAS AWFUL TO ME TO THINK OF ALL THOSE LORDS AND LADIES SITTING ROUND THAT BREAKFAST TABLE AND WAITING FOR ME TO COME BACK + SO FRANK TOOK MY WEDDING CLOTHES AND THINGS AND MADE A BUNDLE OF THEM SO THAT I SHOULD NOT BE TRACED AND DROPPED THEM AWAY SOMEWHERE WHERE NO ONE COULD FIND THEM + IT IS LIKELY THAT WE SHOULD HAVE GONE ON TO PARIS TO MORROW ONLY THAT THIS GOOD GENTLEMAN MR. HOLMES CAME ROUND TO US THIS EVENING THOUGH HOW HE FOUND US IS MORE THAN I CAN THINK AND HE SHOWED US VERY CLEARLY AND KINDLY THAT I WAS WRONG AND THAT FRANK WAS RIGHT AND THAT WE SHOULD BE PUTTING OURSELVES IN THE WRONG IF WE WERE SO SECRET + THEN HE OFFERED TO GIVE US A CHANCE OF TALKING TO LORD SAINT SIMON ALONE AND SO WE CAME RIGHT AWAY ROUND TO HIS ROOMS AT ONCE + NOW ROBERT YOU HAVE HEARD IT ALL AND I AM VERY SORRY IF I HAVE GIVEN YOU PAIN AND I HOPE THAT YOU DO NOT THINK VERY MEANLY OF ME + LORD SAINT SIMON HAD BY NO MEANS RELAXED HIS RIGID ATTITUDE BUT HAD LISTENED WITH A FROWNING BROW AND A COMPRESSED LIP TO THIS LONG NARRATIVE + QUOTE EXCUSE ME QUOTE HE SAID QUOTE BUT IT IS NOT MY CUSTOM TO DISCUSS MY MOST INTIMATE PERSONAL AFFAIRS IN THIS PUBLIC MANNER QUOTE + THEN YOU WON'T FORGIVE ME + YOU WON'T SHAKE HANDS BEFORE I GO + OH CERTAINLY IF IT WOULD GIVE YOU ANY PLEASURE + HE PUT OUT HIS HAND AND COLDLY GRASPED THAT WHICH SHE EXTENDED TO HIM + I HAD HOPED SUGGESTED HOLMES THAT YOU WOULD HAVE JOINED US IN A FRIENDLY SUPPER + I THINK THAT THERE YOU ASK A LITTLE TOO MUCH RESPONDED HIS LORDSHIP + QUOTE I MAY BE FORCED TO ACQUIESCE IN THESE RECENT DEVELOPMENTS BUT I CAN HARDLY BE EXPECTED TO MAKE MERRY OVER THEM + I THINK THAT WITH YOUR PERMISSION I WILL NOW WISH YOU ALL A VERY GOOD NIGHT + HE INCLUDED US ALL IN A SWEEPING BOW AND STALKED OUT OF THE ROOM + THEN I TRUST THAT YOU AT LEAST WILL HONOUR ME WITH YOUR COMPANY SAID SHERLOCK HOLMES + IT IS ALWAYS A JOY TO MEET AN AMERICAN MR. MOULTON FOR I AM ONE OF THOSE WHO BELIEVE THAT THE FOLLY OF A MONARCH AND THE BLUNDERING OF A MINISTER IN FAR GONE YEARS WILL NOT PREVENT OUR CHILDREN FROM BEING SOME DAY CITIZENS OF THE SAME WORLD WIDE COUNTRY UNDER A FLAG WHICH SHALL BE A QUARTERING OF THE UNION JACK WITH THE STARS AND STRIPES + THE CASE HAS BEEN AN INTERESTING ONE REMARKED HOLMES WHEN OUR VISITORS HAD LEFT US BECAUSE IT SERVES TO SHOW VERY CLEARLY HOW SIMPLE THE EXPLANATION MAY BE OF AN AFFAIR WHICH AT FIRST SIGHT SEEMS TO BE ALMOST INEXPLICABLE + NOTHING COULD BE MORE NATURAL THAN THE SEQUENCE OF EVENTS AS NARRATED BY THIS LADY AND NOTHING STRANGER THAN THE RESULT WHEN VIEWED FOR INSTANCE BY MR. LESTRADE OF SCOTLAND YARD + QUOTE YOU WERE NOT YOURSELF AT FAULT AT ALL THEN QUOTE + FROM THE FIRST TWO FACTS WERE VERY OBVIOUS TO ME THE ONE THAT THE LADY HAD BEEN QUITE WILLING TO UNDERGO THE WEDDING CEREMONY THE OTHER THAT SHE HAD REPENTED OF IT WITHIN A FEW MINUTES OF RETURNING HOME + OBVIOUSLY SOMETHING HAD OCCURRED DURING THE MORNING THEN TO CAUSE HER TO CHANGE HER MIND + WHAT COULD THAT SOMETHING BE + SHE COULD NOT HAVE SPOKEN TO ANYONE WHEN SHE WAS OUT FOR SHE HAD BEEN IN THE COMPANY OF THE BRIDEGROOM + HAD SHE SEEN SOMEONE THEN + IF SHE HAD IT MUST BE SOMEONE FROM AMERICA BECAUSE SHE HAD SPENT SO SHORT A TIME IN THIS COUNTRY THAT SHE COULD HARDLY HAVE ALLOWED ANYONE TO ACQUIRE SO DEEP AN INFLUENCE OVER HER THAT THE MERE SIGHT OF HIM WOULD INDUCE HER TO CHANGE HER PLANS SO COMPLETELY + YOU SEE WE HAVE ALREADY ARRIVED BY A PROCESS OF EXCLUSION AT THE IDEA THAT SHE MIGHT HAVE SEEN AN AMERICAN + THEN WHO COULD THIS AMERICAN BE AND WHY SHOULD HE POSSESS SO MUCH INFLUENCE OVER HER + IT MIGHT BE A LOVER IT MIGHT BE A HUSBAND + HER YOUNG WOMANHOOD HAD I KNEW BEEN SPENT IN ROUGH SCENES AND UNDER STRANGE CONDITIONS + SO FAR I HAD GOT BEFORE I EVER HEARD LORD SAINT SIMON'S NARRATIVE + WHEN HE TOLD US OF A MAN IN A PEW OF THE CHANGE IN THE BRIDE'S MANNER OF SO TRANSPARENT A DEVICE FOR OBTAINING A NOTE AS THE DROPPING OF A BOUQUET OF HER RESORT TO HER CONFIDENTIAL MAID AND OF HER VERY SIGNIFICANT ALLUSION TO CLAIMJUMPING WHICH IN MINERS' PARLANCE MEANS TAKING POSSESSION OF THAT WHICH ANOTHER PERSON HAS A PRIOR CLAIM TO THE WHOLE SITUATION BECAME ABSOLUTELY CLEAR + SHE HAD GONE OFF WITH A MAN AND THE MAN WAS EITHER A LOVER OR WAS A PREVIOUS HUSBAND THE CHANCES BEING IN FAVOUR OF THE LATTER + AND HOW IN THE WORLD DID YOU FIND THEM + IT MIGHT HAVE BEEN DIFFICULT BUT FRIEND LESTRADE HELD INFORMATION IN HIS HANDS THE VALUE OF WHICH HE DID NOT HIMSELF KNOW + THE INITIALS WERE OF COURSE OF THE HIGHEST IMPORTANCE BUT MORE VALUABLE STILL WAS IT TO KNOW THAT WITHIN A WEEK HE HAD SETTLED HIS BILL AT ONE OF THE MOST SELECT LONDON HOTELS + QUOTE HOW DID YOU DEDUCE THE SELECT QUOTE + BY THE SELECT PRICES + EIGHT SHILLINGS FOR A BED AND EIGHTPENCE FOR A GLASS OF SHERRY POINTED TO ONE OF THE MOST EXPENSIVE HOTELS + THERE ARE NOT MANY IN LONDON WHICH CHARGE AT THAT RATE + IN THE SECOND ONE WHICH I VISITED IN NORTHUMBERLAND AVENUE I LEARNED BY AN INSPECTION OF THE BOOK THAT FRANCIS H. MOULTON AN AMERICAN GENTLEMAN HAD LEFT ONLY THE DAY BEFORE AND ON LOOKING OVER THE ENTRIES AGAINST HIM I CAME UPON THE VERY ITEMS WHICH I HAD SEEN IN THE DUPLICATE BILL + HIS LETTERS WERE TO BE FORWARDED TO TWO HUNDRED TWENTY SIX GORDON SQUARE SO THITHER I TRAVELLED AND BEING FORTUNATE ENOUGH TO FIND THE LOVING COUPLE AT HOME L. VENTURED TO GIVE THEM SOME PATERNAL ADVICE AND TO POINT OUT TO THEM THAT IT WOULD BE BETTER IN EVERY WAY THAT THEY SHOULD MAKE THEIR POSITION A LITTLE CLEARER BOTH TO THE GENERAL PUBLIC AND TO LORD SAINT SIMON IN PARTICULAR + I INVITED THEM TO MEET HIM HERE AND AS YOU SEE I MADE HIM KEEP THE APPOINTMENT + BUT WITH NO VERY GOOD RESULT I REMARKED + HIS CONDUCT WAS CERTAINLY NOT VERY GRACIOUS + AH WATSON SAID HOLMES SMILING PERHAPS YOU WOULD NOT BE VERY GRACIOUS EITHER IF AFTER ALL THE TROUBLE OF WOOING AND WEDDING YOU FOUND YOURSELF DEPRIVED IN AN INSTANT OF WIFE AND OF FORTUNE + I THINK THAT WE MAY JUDGE LORD SAINT SIMON VERY MERCIFULLY AND THANK OUR STARS THAT WE ARE NEVER LIKELY TO FIND OURSELVES IN THE SAME POSITION + DRAW YOUR CHAIR UP AND HAND ME MY VIOLIN FOR THE ONLY PROBLEM WE HAVE STILL TO SOLVE IS HOW TO WHILE AWAY THESE BLEAK AUTUMNAL EVENINGS QUOTE diff --git a/samples/LMTutorial/train/norwood_builder.txt b/samples/LMTutorial/train/norwood_builder.txt new file mode 100755 index 0000000..0080ce8 --- /dev/null +++ b/samples/LMTutorial/train/norwood_builder.txt @@ -0,0 +1,570 @@ + QUOTE FROM THE POINT OF VIEW OF THE CRIMINAL EXPERT QUOTE SAID MR. SHERLOCK HOLMES QUOTE LONDON HAS BECOME A SINGULARLY UNINTERESTING CITY SINCE THE DEATH OF THE LATE LAMENTED PROFESSOR MORIARTY QUOTE + I CAN HARDLY THINK THAT YOU WOULD FIND MANY DECENT CITIZENS TO AGREE WITH YOU I ANSWERED + WELL WELL I MUST NOT BE SELFISH SAID HE WITH A SMILE AS HE PUSHED BACK HIS CHAIR FROM THE BREAKFAST TABLE + THE COMMUNITY IS CERTAINLY THE GAINER AND NO ONE THE LOSER SAVE THE POOR OUT OF WORK SPECIALIST WHOSE OCCUPATION HAS GONE + WITH THAT MAN IN THE FIELD ONE'S MORNING PAPER PRESENTED INFINITE POSSIBILITIES + OFTEN IT WAS ONLY THE SMALLEST TRACE WATSON THE FAINTEST INDICATION AND YET IT WAS ENOUGH TO TELL ME THAT THE GREAT MALIGNANT BRAIN WAS THERE AS THE GENTLEST TREMORS OF THE EDGES OF THE WEB REMIND ONE OF THE FOUL SPIDER WHICH LURKS IN THE CENTRE + PETTY THEFTS WANTON ASSAULTS PURPOSELESS OUTRAGE TO THE MAN WHO HELD THE CLUE ALL COULD BE WORKED INTO ONE CONNECTED WHOLE + TO THE SCIENTIFIC STUDENT OF THE HIGHER CRIMINAL WORLD NO CAPITAL IN EUROPE OFFERED THE ADVANTAGES WHICH LONDON THEN POSSESSED + BUT NOW HE SHRUGGED HIS SHOULDERS IN HUMOROUS DEPRECATION OF THE STATE OF THINGS WHICH HE HAD HIMSELF DONE SO MUCH TO PRODUCE + AT THE TIME OF WHICH I SPEAK HOLMES HAD BEEN BACK FOR SOME MONTHS AND I AT HIS REQUEST HAD SOLD MY PRACTICE AND RETURNED TO SHARE THE OLD QUARTERS IN BAKER STREET + A YOUNG DOCTOR NAMED VEMER HAD PURCHASED MY SMALL KENSINGTON PRACTICE AND GIVEN WITH ASTONISHINGLY LITTLE DEMUR THE HIGHEST PRICE THAT I VENTURED TO ASK AN INCIDENT WHICH ONLY EXPLAINED ITSELF SOME YEARS LATER WHEN I FOUND THAT VEMER WAS A DISTANT RELATION OF HOLMES AND THAT IT WAS MY FRIEND WHO HAD REALLY FOUND THE MONEY + OUR MONTHS OF PARTNERSHIP HAD NOT BEEN SO UNEVENTFUL AS HE HAD STATED FOR I FIND ON LOOKING OVER MY NOTES THAT THIS PERIOD INCLUDES THE CASE OF THE PAPERS OF EX PRESIDENT MURILLO AND ALSO THE SHOCKING AFFAIR OF THE DUTCH STEAMSHIP FRIESLAND WHICH SO NEARLY COST US BOTH OUR LIVES + HIS COLD AND PROUD NATURE WAS ALWAYS AVERSE HOWEVER FROM ANYTHING IN THE SHAPE OF PUBLIC APPLAUSE AND HE BOUND ME IN THE MOST STRINGENT TERMS TO SAY NO FURTHER WORD OF HIMSELF HIS METHODS OR HIS SUCCESSES A PROHIBITION WHICH AS I HAVE EXPLAINED HAS ONLY NOW BEEN REMOVED + MR. SHERLOCK HOLMES WAS LEANING BACK IN HIS CHAIR AFTER HIS WHIMSICAL PROTEST AND WAS UNFOLDING HIS MORNING PAPER IN A LEISURELY FASHION WHEN OUR ATTENTION WAS ARRESTED BY A TREMENDOUS RING AT THE BELL FOLLOWED IMMEDIATELY BY A HOLLOW DRUMMING SOUND AS IF SOMEONE WERE BEATING ON THE OUTER DOOR WITH HIS FIST + AS IT OPENED THERE CAME A TUMULTUOUS RUSH INTO THE HALL RAPID FEET CLATTERED UP THE STAIR AND AN INSTANT LATER A WILD EYED AND FRANTIC YOUNG MAN PALE DISHEVELLED AND PALPITATING BURST INTO THE ROOM + HE LOOKED FROM ONE TO THE OTHER OF US AND UNDER OUR GAZE OF INQUIRY HE BECAME CONSCIOUS THAT SOME APOLOGY WAS NEEDED FOR THIS UNCEREMONIOUS ENTRY + I'M SORRY MR. HOLMES HE CRIED + QUOTE YOU MUSTN'T BLAME ME + I AM NEARLY MAD + MR. HOLMES I AM THE UNHAPPY JOHN HECTOR MCFARLANE + HE MADE THE ANNOUNCEMENT AS IF THE NAME ALONE WOULD EXPLAIN BOTH HIS VISIT AND ITS MANNER BUT I COULD SEEL BY MY COMPANION'S UNRESPONSIVE FACE THAT IT MEANT NO MORE TO HIM THAN TO ME + HAVE A CIGARETTE MR. MCFARLANE SAID HE PUSHING HIS CASE ACROSS + I AM SURE THAT WITH YOUR SYMPTOMS MY FRIEND DOCTOR WATSON HERE WOULD PRESCRIBE A SEDATIVE + THE WEATHER HAS BEEN SO VERY WARM THESE LAST FEW DAYS + NOW IF YOU FEEL A LITTLE MORE COMPOSED I SHOULD BE GLAD IF YOU WOULD SIT DOWN IN THAT CHAIR AND TELL US VERY SLOWLY AND QUIETLY WHO YOU ARE. AND WHAT IT IS THAT YOU WANT + YOU MENTIONED YOUR NAME AS IF I SHOULD RECOGNIZE IT BUT I ASSURE YOU THAT BEYOND THE OBVIOUS FACTS THAT YOU ARE A BACHELOR A SOLICITOR A FREEMASON AND AN ASTHMATIC I KNOW NOTHING WHATEVER ABOUT YOU + FAMILIAR AS I WAS WITH MY FRIEND'S METHODS IT WAS NOT DIFFICULT FOR ME TO FOLLOW HIS DEDUCTIONS AND TO OBSERVE THE UNTIDINESS OF ATTIRE THE SHEAF OF LEGAL PAPERS THE WATCH CHARM AND THE BREATHING WHICH HAD PROMPTED THEM + OUR CLIENT HOWEVER STARED IN AMAZEMENT + YES I AM ALL THAT MR. HOLMES AND IN ADDITION I AM THE MOST UNFORTUNATE MAN AT THIS MOMENT IN LONDON + FOR HEAVEN'S SAKE DON'T ABANDON ME MR. HOLMES + IF THEY COME TO ARREST ME BEFORE I HAVE FINISHED MY STORY MAKE THEM GIVE ME TIME SO THAT I MAY TELL YOU THE WHOLE TRUTH + I COULD GO TO JAIL HAPPY IF I KNEW THAT YOU WERE WORKING FOR ME OUTSIDE QUOTE + ARREST YOU SAID HOLMES + THIS IS REALLY MOST GRATI MOST INTERESTING + ON WHAT CHARGE DO YOU EXPECT TO BE ARRESTED + UPON THE CHARGE OF MURDERING MR. JONAS OLDACRE OF LOWER NORWOOD + MY COMPANION'S EXPRESSIVE FACE SHOWED A SYMPATHY WHICH WAS NOT I AM AFRAID ENTIRELY UNMIXED WITH SATISFACTION + DEAR ME SAID HE IT WAS ONLY THIS MOMENT AT BREAKFAST THAT I WAS SAYING TO MY FRIEND DOCTOR WATSON THAT SENSATIONAL CASES HAD DISAPPEARED OUT OF OUR PAPERS + OUR VISITOR STRETCHED FORWARD A QUIVERING HAND AND PICKED UP THE DAILY TELEGRAPH WHICH STILL LAY UPON HOLMES'S KNEE + QUOTE IF YOU HAD LOOKED AT IT SIR YOU WOULD HAVE SEEN AT A GLANCE WHAT THE ERRAND IS ON WHICH I HAVE COME TO YOU THIS MORNING + I FEEL AS IF MY NAME AND MY MISFORTUNE MUST BE IN EVERY MAN'S MOUTH + HE TURNED IT OVER TO EXPOSE THE CENTRAL PAGE + HERE IT IS AND WITH YOUR PERMISSION I WILL READ IT TO YOU + LISTEN TO THIS MR. HOLMES + THE HEADLINES ARE MYSTERIOUS AFFAIR AT LOWER NORWOOD + DISAPPEARANCE OF A WELL KNOWN BUILDER + SUSPICION OF MURDER AND ARSON + A CLUE TO THE CRIMINAL + THAT IS THE CLUE WHICH THEY ARE ALREADY FOLLOWING MR. HOLMES AND I KNOW THAT IT LEADS INFALLIBLY TO ME + I HAVE BEEN FOLLOWED FROM LONDON BRIDGE STATION AND I AM SURE THAT THEY ARE ONLY WAITING FOR THE WARRANT TO ARREST ME + IT WILL BREAK MY MOTHER'S HEART IT WILL BREAK HER HEART + HE WRUNG HIS HANDS IN AN AGONY OF APPREHENSION AND SWAYED BACKWARD AND FORWARD IN HIS CHAIR + I LOOKED WITH INTEREST UPON THIS MAN WHO WAS ACCUSED OF BEING THE PERPETRATOR OF A CRIME OF VIOLENCE + HE WAS FLAXENHAIRED AND HANDSOME IN A WASHED OUT NEGATIVE FASHION WITH FRIGHTENED BLUE EYES AND A CLEAN SHAVEN FACE WITH A WEAK SENSITIVE MOUTH + HIS AGE MAY HAVE BEEN ABOUT TWENTY SEVEN HIS DRESS AND BEARING THAT OF A GENTLEMAN + FROM THE POCKET OF HIS LIGHT SUMMER OVERCOAT PROTRUDED THE BUNDLE OF ENDORSED PAPERS WHICH PROCLAIMED HIS PROFESSION + WE MUST USE WHAT TIME WE HAVE SAID HOLMES + WATSON WOULD YOU HAVE THE KINDNESS TO TAKE THE PAPER AND TO READ THE PARAGRAPH IN QUESTION + UNDERNEATH THE VIGOROUS HEADLINES WHICH OUR CLIENT HAD QUOTED I READ THE FOLLOWING SUGGESTIVE NARRATIVE QUOTE LATE LAST NIGHT OR EARLY THIS MORNING AN INCIDENT OC CURRED AT LOWER NORWOOD WHICH POINTS IT IS FEARED TO A SERIOUS CRIME + MR. JONAS OLDACRE IS A WELL KNOWN RESIDENT OF THAT SUBURB WHERE HE HAS CARRIED ON HIS BUSINESS AS A BUILDER FOR MANY YEARS + MR. OLDACRE IS A BACHELOR FIFTY TWO YEARS OF AGE AND LIVES IN DEEP DENE HOUSE AT THE SYDENHAM END OF THE ROAD OF THAT NAME + HE HAS HAD THE REPUTATION OF BEING A MAN OF ECCENTRIC HABITS SECRETIVE AND RETIRING + FOR SOME YEARS HE HAS PRACTICALLY WITHDRAWN FROM THE BUSINESS IN WHICH HE IS SAID TO HAVE MASSED CONSIDERABLE WEALTH + A SMALL TIMBER YARD STILL EXISTS HOWEVER AT THE BACK OF THE HOUSE AND LAST NIGHT ABOUT TWELVE O'CLOCK AN ALARM WAS GIVEN THAT ONE OF THE STACKS WAS ON FIRE + THE ENGINES WERE SOON UPON THE SPOT BUT THE DRY WOOD BURNED WITH GREAT FURY AND IT WAS IMPOSSIBLE TO ARREST THE CONFLAGRATION UNTIL THE STACK HAD BEEN ENTIRELY CONSUMED + UP TO THIS POINT THE INCIDENT BORE THE APPEARANCE OF AN ORDINARY ACCIDENT BUT FRESH INDICATIONS SEEM TO POINT TO SERIOUS CRIME + SURPRISE WAS EXPRESSED AT THE ABSENCE OF THE MASTER OF THE ESTABLISH MENT FROM THE SCENE OF THE FIRE AND AN INQUIRY FOLLOWED WHICH SHOWED THAT HE HAD DISAPPEARED FROM THE HOUSE + AN EXAMINATION OF HIS ROOM REVEALED THAT THE BED HAD NOT BEEN SLEPT IN THAT A SAFE WHICH STOOD IN IT WAS OPEN THAT A NUMBER OF IMPORTANT PAPERS WERE SCATTERED ABOUT THE ROOM AND FINALLY THAT THERE WERE SIGNS OF A MURDEROUS STRUGGLE SLIGHT TRACES OF BLOOD BEING FOUND WITHIN THE ROOM AND AN OAKEN WALKING STICK WHICH ALSO SHOWED STAINS OF BLOOD UPON THE HANDLE + IT IS KNOWN THAT MR. JONAS OLDACRE HAD RECEIVED A LATE VISITOR IN HIS BEDROOM UPON THAT NIGHT AND THE STICK FOUND HAS BEEN IDENTIFIED AS THE PROPERTY OF THIS PERSON WHO IS A YOUNG LONDON SOLICITOR NAMED JOHN HECTOR MCFARLANE JUNIOR PARTNER OF GRAHAM AND MCFARLANE OF FOUR HUNDRED TWENTY SIX GRESHAM BUILDINGS + E. C. THE POLICE BELIEVE THAT THEY HAVE EVIDENCE IN THEIR POSSESSION WHICH SUPPLIES A VERY CONVINCING MOTIVE FOR THE CRIME AND ALTOGETHER IT CANNOT BE DOUBTED THAT SENSATIONAL DEVELOPMENTS WILL FOLLOW + LATER IT IS RUMOURED AS WE GO TO PRESS THAT MR. JOHN HECTOR MCFARLANE HAS ACTUALLY BEEN ARRESTED ON THE CHARGE OF THE MURDER OF MR. JONAS OLDACRE + IT IS AT LEAST CERTAIN THAT A WARRANT HAS BEEN ISSUED + THERE HAVE BEEN FURTHER AND SINISTER DEVELOPMENTS IN THE INVESTIGATION AT NORWOOD + BE SIDES THE SIGNS OF A STRUGGLE IN THE ROOM OF THE UNFORTUNATE BUILDER IT IS NOW KNOWN THAT THE FRENCH WINDOWS OF HIS BEDROOM WHICH IS ON THE GROUND FLOOR WERE FOUND TO BE OPEN THAT THERE WERE MARKS AS IF SOME BULKY OBJECT HAD BEEN DRAGGED ACROSS TO THE WOOD PILE AND FINALLY IT IS ASSERTED THAT CHARRED REMAINS HAVE BEEN FOUND AMONG THE CHARCOAL ASHES OF THE FIRE + THE POLICE THEORY IS THAT A MOST SENSATIONAL CRIME HAS BEEN COMMITTED THAT THE VICTIM WAS CLUBBED TO DEATH IN HIS OWN BEDROOM HIS PAPERS RIFLED AND HIS DEAD BODY DRAGGED ACROSS TO THE WOOD STACK WHICH WAS THEN IGNITED SO AS TO HIDE ALL TRACES OF THE CRIME + THE CONDUCT OF THE CRIMINAL INVESTIGATION HAS BEEN LEFT IN THE EXPERIENCED HANDS OF INSPECTOR LESTRADE OF SCOTLAND YARD WHO IS FOLLOWING UP THE CLUES WITH HIS ACCUSTOMED ENERGY AND SAGACITY + SHERLOCK HOLMES LISTENED WITH CLOSED EYES AND FINGERTIPS TOGETHER TO THIS REMARKABLE ACCOUNT + THE CASE HAS CERTAINLY SOME POINTS OF INTEREST SAID HE IN HIS LANGUID FASHION + MAY I ASK IN THE FIRST PLACE MR. MCFARLANE HOW IT IS THAT YOU ARE STILL AT LIBERTY SINCE THERE APPEARS TO BE ENOUGH EVIDENCE TO JUSTIFY YOUR ARREST + I LIVE AT TORRINGTON LODGE BLACKHEATH WITH MY PARENTS MR. HOLMES BUT LAST NIGHT HAVING TO DO BUSINESS VERY LATE WITH MR. JONAS OIDACRE I STAYED AT AN HOTEL IN NORWOOD AND CAME TO MY BUSINESS FROM THERE + I KNEW NOTHING OF THIS AFFAIR UNTIL I WAS IN THE TRAIN WHEN I READ WHAT YOU HAVE JUST HEARD + I AT ONCE SAW THE HORRIBLE DANGER OF MY POSITION AND I HURRIED TO PUT THE CASE INTO YOUR HANDS + I HAVE NO DOUBT THAT I SHOULD HAVE BEEN ARRESTED EITHER AT MY CITY OFFICE OR AT MY HOME + A MAN FOLLOWED ME FROM LONDON BRIDGE STATION AND I HAVE NO DOUBT GREAT HEAVEN WHAT IS THAT QUOTE + IT WAS A CLANG OF THE BELL FOLLOWED INSTANTLY BY HEAVY STEPS UPON THE STAIR + A MOMENT LATER OUR OLD FRIEND LESTRADE APPEARED IN THE DOORWAY + OVER HIS SHOULDER I CAUGHT A GLIMPSE OF ONE OR TWO UNIFORMED POLICEMEN OUTSIDE + MR. JOHN HECTOR MCFARLANE SAID LESTMDE + OUR UNFORTUNATE CLIENT ROSE WITH A GHASTLY FACE + I ARREST YOU FOR THE WILFUL MURDER OF MR. JONAS OLDACRE OF LOWER NORWOOD + MCFARLANE TURNED TO US WITH A GESTURE OF DESPAIR AND SANK INTO HIS CHAIR ONCE MORE LIKE ONE WHO IS CRUSHED + ONE MOMENT + LESTRADE SAID HOLMES + HALF AN HOUR MORE OR LESS CAN MAKE NO DIFFERENCE TO YOU AND THE GENTLEMAN WAS ABOUT TO GIVE US AN ACCOUNT OF THIS VERY INTERESTING AFFAIR WHICH MIGHT AID US IN CLEARING IT UP + QUOTE I THINK THERE WILL BE NO DIFFICULTY IN CLEARING IT UP QUOTE SAID LESTRADE GRIMLY + NONE THE LESS WITH YOUR PERMISSION I SHOULD BE MUCH INTERESTED TO HEAR HIS ACCOUNT + WELL MR. HOLMES IT IS DIFFICULT FOR ME TO REFUSE YOU ANYTHING FOR YOU HAVE BEEN OF USE TO THE FORCE ONCE OR TWICE IN THE PAST AND WE OWE YOU A GOOD TURN AT SCOTLAND YARD SAID LESTRADE + AT THE SAME TIME I MUST REMAIN WITH MY PRISONER AND I AM BOUND TO WARN HIM THAT ANYTHING HE MAY SAY WILL APPEAR IN EVIDENCE AGAINST HIM + I WISH NOTHING BETTER SAID OUR CLIENT + ALL I ASK IS THAT YOU SHOULD HEAR AND RECOGNIZE THE ABSOLUTE TRUTH + LESTRADE LOOKED AT HIS WATCH + QUOTE I'LL GIVE YOU HALF AN HOUR QUOTE SAID HE + I MUST EXPLAIN FIRST SAID MCFARLANE THAT I KNEW NOTHING OF MR. JONAS OLDACRE + HIS NAME WAS FAMILIAR TO ME FOR MANY YEARS AGO MY PARENTS WERE ACQUAINTED WITH HIM BUT THEY DRIFTED APART + I WAS VERY MUCH SURPRISED THEREFORE WHEN YESTERDAY ABOUT THREE O'CLOCK IN THE AFTERNOON HE WALKED INTO MY OFFICE IN THE CITY + BUT I WAS STILL MORE ASTONISHED WHEN HE TOLD ME THE OBJECT OF HIS VISIT + HE HAD IN HIS HAND SEVERAL SHEETS OF A NOTEBOOK COVERED WITH SCRIBBLED WRITING HERE THEY ARE AND HE LAID THEM ON MY TABLE + HERE IS MY WILL SAID HE + I WANT YOU MR. MCFARLANE TO CAST IT INTO PROPER LEGAL SHAPE + I WILL SIT HERE WHILE YOU DO SO + I SET MYSELF TO COPY IT AND YOU CAN IMAGINE MY ASTONISHMENT WHEN I FOUND THAT WITH SOME RESERVATIONS HE HAD LEFT ALL HIS PROPERTY TO ME + HE WAS A STRANGE LITTLE FERRET LIKE MAN WITH WHITE EYELASHES AND WHEN I LOOKED UP AT HIM I FOUND HIS KEEN GRAY EYES FIXED UPON ME WITH AN AMUSED EXPRESSION + I COULD HARDLY BELIEVE MY OWN SENSES AS I READ THE TERMS OF THE WILL BUT HE EXPLAINED THAT HE WAS A BACHELOR WITH HARDLY ANY LIVING RELATION THAT HE HAD KNOWN MY PARENTS IN HIS YOUTH AND THAT HE HAD ALWAYS HEARD OF ME AS A VERY DESERVING YOUNG MAN AND WAS ASSURED THAT HIS MONEY WOULD BE IN WORTHY HANDS + OF COURSE I COULD ONLY STAMMER OUT MY THANKS + THE WILL WAS DULY FINISHED SIGNED AND WITNESSCD BY MY CLERK + THIS IS IT ON THE BLUE PAPER AND THESE SLIPS AS I HAVE EXPLAINED ARE THE ROUGH DRAFT + MR. JONAS OLDACRE THEN INFORMED ME THAT THERE WERE A NUMBER OF DOCUMENTS BUILDING LEASES TITLE DEEDS MORTGAGES SCRIP AND SO FORTH WHICH IT WAS NECESSARY THAT I SHOULD SEE AND UNDERSTAND + HE SAID THAT HIS MIND WOULD NOT BE EASY UNTIL THE WHOLE THING WAS SETTLED AND HE BEGGED ME TO COME OUT TO HIS HOUSE AT NORWOOD THAT NIGHT BRINGING THE WILL WITH ME AND TO ARRANGE MATTERS + REMEMBER MY BOY NOT ONE WORD TO YOUR PARENTS ABOUT THE AFFAIR UNTIL EVERYTHING IS SETTLED + WE WILL KEEP IT AS A LITTLE SURPRISE FOR THEM + HE WAS VERY INSISTENT UPON THIS POINT AND MADE ME PROMISE IT FAITHFULLY + YOU CAN IMAGINE MR. HOLMES THAT I WAS NOT IN A HUMOUR TO REFUSE HIM ANYTHING THAT HE MIGHT ASK + HE WAS MY BENEFACTOR AND ALL MY DESIRE WAS TO CARRY OUT HIS WISHES IN EVERY PARTICULAR + I SENT A TELEGRAM HOME THEREFORE TO SAY THAT I HAD IMPORTANT BUSINESS ON HAND AND THAT IT WAS IMPOSSIBLE FOR ME TO SAY HOW LATE I MIGHT BE + MR. OLDACRE HAD TOLD ME THAT HE WOULD LIKE ME TO HAVE SUPPER WITH HIM AT NINE AS HE MIGHT NOT BE HOME BEFORE THAT HOUR + I HAD SOME DIFFICULTY IN FINDING HIS HOUSE HOWEVER AND IT WAS NEARLY HALF PAST BEFORE I REACHED IT + I FOUND HIM + QUOTE ONE MOMENT QUOTE SAID HOLMES + WHO OPENED THE DOOR + A MIDDLE AGED WOMAN WHO WAS I SUPPOSE HIS HOUSEKEEPER + AND IT WAS SHE I PRESUME WHO MENTIONED YOUR NAME + EXACTLY SAID MCFARLANE + PRAY PROCEED + QUOTE I WAS SHOWN BY THIS WOMAN INTO A SITTING ROOM WHERE A FRUGAL SUPPER WAS LAID OUT + AFTERWARDS MR. JONAS OLDACRE LED ME INTO HIS BEDROOM IN WHICH THERE STOOD A HEAVY SAFE + THIS HE OPENED AND TOOK OUT A MASS OF DOCUMENTS WHICH WE WENT OVER TOGETHER + IT WAS BETWEEN ELEVEN AND TWELVE WHEN WE FINISHED + HE REMARKED THAT WE MUST NOT DISTURB THE HOUSEKEEPER + HE SHOWED ME OUT THROUGH HIS OWN FRENCH WINDOW WHICH HAD BEEN OPEN ALL THIS TIME + WAS THE BLIND DOWN ASKED HOLMES + I WILL NOT BE SURE. BUT I BELIEVE THAT IT WAS ONLY HALF DOWN + YES I REMEMBER HOW HE PULLED IT UP IN ORDER TO SWING OPEN THE WINDOW + I COULD NOT FIND MY STICK AND HE SAID NEVER MIND MY BOY I SHALL SEE A GOOD DEAL OF YOU NOW I HOPE AND I WILL KEEP YOUR STICK UNTIL YOU COME BACK TO CLAIM IT + I LEFT HIM THERE THE SAFE OPEN AND THE PAPERS MADE UP IN PACKETS UPON THE TABLE + IT WAS SO LATC THAT I COULD NOT GET BACK TO BLACKHEATH SO I SPENT THE NIGHT AT THE ANERLEY ARMS. AND I KNEW NOTHING MORE UNTIL I READ OF THIS HORRIBLE AFFAIR IN THE MORNING + ANYTHING MORE THAT YOU WOULD LIKE TO ASK MR. HOLMES SAID LESTRADE WHOSE EYEBROWS HAD GONE UP ONCE OR TWICE DURING THIS REMARKABLE EXPLANATION + QUOTE NOT UNTIL I HAVE BEEN TO BLACKHEATH QUOTE + YOU MEAN TO NORWOOD SAID LESTRADE + OH YES NO DOUBT THAT IS WHAT I MUST HAVE MEANT SAID HOLMES WITH HIS ENIGMATICAL SMILE + LESTRADE HAD LEARNED BY MORE EXPERIENCES THAN HE WOULD CARE TO ACKNOWLEDGE THAT THAT RAZOR LIKE BRAIN COULD CUT THROUGH THAT WHICH WAS IMPENETRABLE TO HIM + I SAW HIM LOOK CURIOUSLY AT MY COMPANION + I THINK I SHOULD LIKE TO HAVE A WORD WITH YOU PRESENTLY MR. SHERLOCK HOLMES SAID HE + NOW MR. MCFARLANE TWO OF MY CONSTABLES ARE AT THE DOOR AND THERE IS A FOUR WHEELER WAITING + THE WRETCHED YOUNG MAN AROSE AND WITH A LAST BESEECHING GLANCE AT US WALKED FROM THE ROOM + THE OFFICERS CONDUCTED HIM TO THE CAB BUT LESTRADE REMAINED + HOLMES HAD PICKED UP THE PAGES WHICH FORMED THE ROUGH DRAFT OF THE WILL AND WAS LOOKING AT THEM WITH THE KEENEST INTEREST UPON HIS FACE + THERE ARE SOME POINTS ABOUT THAT DOCUMENT LESTRADE ARE THERE NOT SAID HE PUSHING THEM OVER + THE OFFICIAL LOOKED AT THEM WITH A PUZZLED EXPRESSION + QUOTE I CAN READ THE FIRST FEW LINES AND THESE IN THE MIDDLE OF THE SECOND PAGE AND ONE OR TWO AT THE END + THOSE ARE AS CLEAR AS PRINT SAID HE BUT THE WRITING IN BETWEEN IS VERY BAD AND THERE ARE THREE PLACES WHERE I CANNOT READ IT AT ALL + WHAT DO YOU MAKE OF THAT SAID HOLMES + WELL WHAT DO YOU MAKE OF IT + THAT IT WAS WRITTEN IN A TRAIN + THE GOOD WRITING REPRESENTS STATIONS THE BAD WRITING MOVEMENT AND THE VERY BAD WRITING PASSING OVER POINTS + A SCIENTIFIC EXPERT WOULD PRONOUNCE AT ONCE THAT THIS WAS DRAWN UP ON A SUBURBAN LINE SINCE NOWHERE SAVE IN THE IMMEDIATE VICINITY OF A GREAT CITY COULD THERE BE SO QUICK A SUCCESSION OF POINTS + GRANTING THAT HIS WHOLE JOURNEY WAS OCCUPIED IN DRAWING UP THE WILL THEN THE TRAIN WAS AN EXPRESS ONLY STOPPING ONCE BETWEEN NORWOOD AND LONDON BRIDGE + LESTRADE BEGAN TO LAUGH + QUOTE YOU ARE TOO MANY FOR ME WHEN YOU BEGIN TO GET ON YOUR THEORIES + MR. HOLMES SAID HE + HOW DOES THIS BEAR ON THE CASE + WELL IT CORROBORATES THE YOUNG MAN'S STORY TO THE EXTENT THAT THE WILL WAS DRAWN UP BY JONAS OLDACRE IN HIS JOURNEY YESTERDAY + IT IS CURIOUS IS IT NOT THAT A MAN SHOULD DRAW UP SO IMPORTANT A DOCUMENT IN SO HAPHAZARD A FASHION + IT SUGGESTS THAT HE DID NOT THINK IT WAS GOING TO BE OF MUCH PRACTICAL IMPORTANCE + IF A MAN DREW UP A WILL WHICH HE DID NOT INTEND EVER TO BE EFFECTIVE HE MIGHT DO IT SO + WELL HE DREW UP HIS OWN DEATH WARRANT AT THE SAME TIME SAID LESTRADE + QUOTE OH YOU THINK SO QUOTE + DON'T YOU + WELL IT IS QUITE POSSIBLE BUT THE CASE IS NOT CLEAR TO ME YET + NOT CLEAR + WELL IF THAT ISN'T CLEAR WHAT COULD BE CLEAR + HERE IS A YOUNG MAN WHO LEARNS SUDDENLY THAT IF A CERTAIN OLDER MAN DIES HE WILL SUCCEED TO A FORTUNE + WHAT DOES HE DO + HE SAYS NOTHING TO ANYONE BUT HE ARRANGES THAT HE SHALL GO OUT ON SOME PRETEXT TO SEE HIS CLIENT THAT NIGHT + HE WAITS UNTIL THE ONLY OTHER PERSON IN THE HOUSE IS IN BED AND THEN IN THE SOLITUDE OF A MAN'S ROOM HE MURDERS HIM BURNS HIS BODY IN THE WOOD PILE AND DEPARTS TO A NEIGHBOURING HOTEL + THE BLOOD STAINS IN THE ROOM AND ALSO ON THE STICK ARE VERY SLIGHT + IT IS PROBABLE THAT HE IMAGINED HIS CRIME TO BE A BLOODLESS ONE AND HOPED THAT IF THE BODY WERE CONSUMED IT WOULD HIDE ALL TRACES OF THE METHOD OF HIS DEATH TRACES WHICH FOR SOME REASON MUST HAVE POINTED TO HIM + IS NOT ALL THIS OBVIOUS + IT STRIKES ME MY GOOD LESTRADE AS BEING JUST A TRIFLE TOO OBVIOUS SAID HOLMES + QUOTE YOU DO NOT ADD IMAGINATION TO YOUR OTHER GREAT QUALITIES BUT IF YOU COULD FOR ONE MOMENT PUT YOURSELF IN THE PLACE OF THIS YOUNG MAN WOULD YOU CHOOSE THE VERY NIGHT AFTER THE WILL HAD BEEN MADE TO COMMIT YOUR CRIME + WOULD IT NOT SEEM DANGEROUS TO YOU TO MAKE SO VERY CLOSE A RELATION BETWEEN THE TWO INCIDENTS + AGAIN WOULD YOU CHOOSE AN OCCASION WHEN YOU ARE KNOWN TO BE IN THE HOUSE WHEN A SERVANT HAS LET YOU IN + AND FINALLY WOULD YOU TAKE THE GREAT PAINS TO CONCEAL THE BODY AND YET LEAVE YOUR OWN STICK AS A SIGN THAT YOU WERE THE CNMINAL + CONFESS LESTRADE THAT ALL THIS IS VERY UNLIKELY + AS TO THE STICK MR. HOLMES YOU KNOW AS WELL AS I DO THAT A CRIMINAL IS OFTEN FLURRIED AND DOES SUCH THINGS WHICH A COOL MAN WOULD AVOID + HE WAS VERY LIKELY AFRAID TO GO BACK TO THE ROOM + GIVE ME ANOTHER THEORY THAT WOULD FIT THE FACTS + I COULD VERY EASILY GIVE YOU HALF A DOZEN SAID HOLMES + HERE FOR EXAMPLE IS A VERY POSSIBLE AND EVEN PROBABLE ONE + I MAKE YOU A FREE PRESENT OF IT + THE OLDER MAN IS SHOWING DOCUMENTS WHICH ARE OF EVIDENT VALUE + A PASSING TRAMP SEES THEM THROUGH THE WINDOW THE BLIND OF WHICH IS ONLY HALF DOWN + EXIT THE SOLICITOR + ENTER THE TRAMP + HE SEIZES A STICK WHICH HE OBSERVES THERE KILLS OLDACRE AND DEPARTS AFTER BURNING THE BODY QUOTE + WHY SHOULD THE TRAMP BURN THE BODY + FOR THE MATTER OF THAT WHY SHOULD MCFARLANE + TO HIDE SOME EVIDENCE + POSSIBLY THE TRAMP WANTED TO HIDE THAT ANY MURDER AT ALL HAD BEEN COMMITTED + AND WHY DID THE TRAMP TAKE NOTHING + QUOTE BECAUSE THEY WERE PAPERS THAT HE COULD NOT NEGOTIATE QUOTE + LESTRADE SHOOK HIS HEAD THOUGH IT SEEMED TO ME THAT HIS MANNER WAS LESS ABSOLUTELY ASSURED THAN BEFORE + WELL MR. SHERLOCK HOLMES YOU MAY LOOK FOR YOUR TRAMP AND WHILE YOU ARE FINDING HIM WE WILL HOLD ON TO OUR MAN + THE FUTURE WILL SHOW WHICH IS RIGHT + JUST NOTICE THIS POINT MR. HOLMES THAT SO FAR AS WE KNOW NONE OF THE PAPERS WERE REMOVED AND THAT THE PRISONER IS THE ONE MAN IN THE WORLD WHO HAD NO REASON FOR REMOVING THEM SINCE HE WAS HEIR AT LAW AND WOULD COME INTO THEM IN ANY CASE + MY FRIEND SEEMED STRUCK BY THIS REMARK + I DON'T MEAN TO DENY THAT THE EVIDENCE IS IN SOME WAYS VERY STRONGLY IN FAVOUR OF YOUR THEORY SAID HE + I ONLY WISH TO POINT OUT THAT THERE ARE OTHER THEORIES POSSIBLE + AS YOU SAY THE FUTURE WILL DECIDE + GOOD MORNING + I DARE SAY THAT IN THE COURSE OF THE DAY I SHALL DROP IN AT NORWOOD AND SEE HOW YOU ARE GETTING ON + WHEN THE DETECTIVE DEPARTED MY FRIEND ROSE AND MADE HIS PREPARATIONS FOR THE DAY'S WORK WITH THE ALERT AIR OF A MAN WHO HAS A CONGENIAL TASK BEFORE HIM + QUOTE MY FIRST MOVEMENT WATSON QUOTE SAID HE. AS HE BUSTLED INTO HIS FROCKCOAT QUOTE MUST AS I SAID BE IN THE DIRECTION OF BLACKHEATH QUOTE + AND WHY NOT NORWOOD + BECAUSE WE HAVE IN THIS CASE ONE SINGULAR INCIDENT COMING CLOSE TO THE HEELS OF ANOTHER SINGULAR INCIDENT + THE POLICE ARE MAKING THE MISTAKE OF CONCENTRATING THEIR ATTENTION UPON THE SECOND BECAUSE IT HAPPENS TO BE THE ONE WHICH IS ACTUALLY CRIMINAL + BUT IT IS EVIDENT TO ME THAT THE LOGICAL WAY TO APPROACH THE CASE IS TO BEGIN BY TRYING TO THROW SOME LIGHT UPON THE FIRST INCIDENT THE CURIOUS WILL SO SUDDENLY MADE AND TO SO UNEXPECTED AN HEIR + IT MAY DO SOMETHING TO SIMPLIFY WHAT FOLLOWED + NO MY DEAR FELLOW I DON'T THINK YOU CAN HELP ME + THERE IS NO PROSPECT OF DANGER OR I SHOULD NOT DREAM OF STIRRING OUT WITHOUT YOU + I TRUST THAT WHEN I SEE YOU IN THE EVENING I WILL BE ABLE TO REPORT THAT I HAVE BEEN ABLE TO DO SOMETHING FOR THIS UNFORTUNATE YOUNGSTER WHO HAS THROWN HIMSELF UPON MY PROTECTION + IT WAS LATE WHEN MY FRIEND RETURNED AND I COULD SEE BY A GLANCE AT HIS HAGGARD AND ANXIOUS FACE THAT THE HIGH HOPES WITH WHICH HE HAD STARTED HAD NOT BEEN FULFILLED + FOR AN HOUR HE DRONED AWAY UPON HIS VIOLIN ENDEAVOURING TO SOOTHE HIS OWN RUFFLED SPIRITS + AT LAST HE FLUNG DOWN THE INSTRUMENT AND PLUNGED INTO A DETAILED ACCOUNT OF HIS MISADVENTURES + IT'S ALL GOING WRONG WATSON ALL AS WRONG AS IT CAN GO + I KEPT A BOLD FACE BEFORE LESTRADE BUT UPON MY SOUL I BELIEVE THAT FOR ONCE THE FELLOW IS ON THE RIGHT TRACK AND WE ARE ON THE WRONG + ALL MY INSTINCTS ARE ONE WAY AND ALL THE FACTS ARE THE OTHER AND I MUCH FEAR THAT BRITISH JURIES HAVE NOT YET ATTAINED THAT PITCH OF INTELLIGENCE WHEN THEY WILL GIVE THE PREFERENCE TO MY THEORIES OVER LESTRADE'S FACTS + QUOTE DID YOU GO TO BLACKHEATH QUOTE + YES WATSON I WENT THERE AND I FOUND VERY QUICKLY THAT THE LATE LAMENTED OLDACRE WAS A PRETTY CONSIDERABLE BLACKGUARD + THE FATHER WAS AWAY IN SEARCH OF HIS SON + THE MOTHER WAS AT HOME A LITTLE FLUFFY BLUE EYED PERSON IN A TREMOR OF FEAR AND INDIGNATION + OF COURSE SHE WOULD NOT ADMIT EVEN THE POSSIBILITY OF HIS GUILT + BUT SHE WOULD NOT EXPRESS EITHER SURPRISE OR REGRET OVER THE FATE OF OLDACRE + ON THE CONTRARY SHE SPOKE OF HIM WITH SUCH BITTERNESS THAT SHE WAS UNCONSCIOUSLY CONSIDERABLY STRENGTHENING THE CASE OF THE POLICE FOR OF COURSE IF HER SON HAD HEARD HER SPEAK OF THE MAN IN THIS FASHION IT WOULD PREDISPOSE HIM TOWARDS HATRED AND VIOLENCE + HE WAS MORE LIKE A MALIGNANT AND CUNNING APE THAN A HUMAN BEING SAID SHE AND HE ALWAYS WAS EVER SINCE HE WAS A YOUNG MAN + YOU KNEW HIM AT THAT TIME SAID I + YES I KNEW HIM WELL IN FACT HE WAS AN OLD SUITOR OF MINE + THANK HEAVEN THAT I HAD THE SENSE TO TURN AWAY FROM HIM AND TO MARRY A BETTER IF POORER MAN + I WAS ENGAGED TO HIM + MR. HOLMES WHEN I HEARD A SHOCKING STORY OF HOW HE HAD TURNED A CAT LOOSE IN AN AVIARY AND I WAS SO HORRIFIED AT HIS BRUTAL CRUELTY THAT I WOULD HAVE NOTHING MORE TO DO WITH HIM + SHE RUMMAGED IN A BUREAU AND PRESENTLY SHE PRODUCED A PHOTOGRAPH OF A WOMAN SHAMEFULLY DEFACED AND MUTILATED WITH A KNIFE + THAT IS MY OWN PHOTOGRAPH SHE SAID + HE SENT IT TO ME IN THAT STATE WITH HIS CURSE UPON MY WEDDING MORNING + WELL SAID I AT LEAST HE HAS FORGIVEN YOU NOW SINCE HE HAS LEFT ALL HIS PROPERTY TO YOUR SON + NEITHER MY SON NOR I WANT ANYTHING FROM JONAS OLDACRE DEAD OR ALIVE SHE CRIED WITH A PROPER SPIRIT + THERE IS A GOD IN HEAVEN MR. HOLMES AND THAT SAME GOD WHO HAS PUNISHED THAT WICKED MAN WILL SHOW IN HIS OWN GOOD TIME THAT MY SON'S HANDS ARE GUILTLESS OF HIS BLOOD + WELL I TRIED ONE OR TWO LEADS BUT COULD GET AT NOTHING WHICH WOULD HELP OUR HYPOTHESIS AND SEVERAL POINTS WHICH WOULD MAKE AGAINST IT + I GAVE IT UP AT LAST AND OFF I WENT TO NORWOOD + QUOTE THIS PLACE DEEP DENE HOUSE IS A BIG MODERN VILLA OF STARING BRICK STANDING BACK IN ITS OWN GROUNDS WITH A LAURELCLUMPED LAWN IN FRONT OF IT + TO THE RIGHT AND SOME DISTANCE BACK FROM THE ROAD WAS THE TIMBER YARD WHICH HAD BEEN THE SCENE OF THE FIRE + HERE'S A ROUGH PLAN ON A LEAF OF MY NOTEBOOK + THIS WINDOW ON THE LEFT IS THE ONE WHICH OPENS INTO OLDACRE'S ROOM + YOU CAN LOOK INTO IT FROM THE ROAD YOU SEE + THAT IS ABOUT THE ONLY BIT OF CONSOLATION I HAVE HAD TO DAY + LESTRADE WAS NOT THERE BUT HIS HEAD CONSTABLE DID THE HONOURS + THEY HAD JUST FOUND A GREAT TREASURE TROVE + THEY HAD SPENT THE MORNING RAKING AMONG THE ASHES OF THE BURNED WOOD PILE AND BESIDES THE CHARRED ORGANIC REMAINS THEY HAD SECURED SEVERAL DISCOLOURED METAL DISCS + I EXAMINED THEM WITH CARE AND THERE WAS NO DOUBT THAT THEY WERE TROUSER BUTTONS + I EVEN DISTINGUISHED THAT ONE OF THEM WAS MARKED WITH THE NAME OF HYAMS WHO WAS OLDACRE'S TAILOR + I THEN WORKED THE LAWN VERY CAREFULLY FOR SIGNS AND TRACES BUT THIS DROUGHT HAS MADE EVERYTHING AS HARD AS IRON + NOTHING WAS TO BE SEEN SAVE THAT SOME BODY OR BUNDLE HAD BEEN DRAGGED THROUGH A LOW PRIVET HEDGE WHICH IS IN A LINE WITH THE WOOD PILE + ALL THAT OF COURSE FITS IN WITH THE OFFICIAL THEORY + I CRAWLED ABOUT THE LAWN WITH AN AUGUST SUN ON MY BACK BUT I GOT UP AT THE END OF AN HOUR NO WISER THAN BEFORE + WELL AFTER THIS FIASCO I WENT INTO THE BEDROOM AND EXAMINED THAT ALSO + THE BLOOD STAINS WERE VERY SLIGHT MERE SMEARS AND DISCOLOURATIONS BUT UNDOUBTEDLY FRESH + THE STICK HAD BEEN REMOVED BUT THERE ALSO THE MARKS WERE SLIGHT + THERE IS NO DOUBT ABOUT THE STICK BELONGING TO OUR CLIENT + HE ADMITS IT + FOOTMARKS OF BOTH MEN COULD BE MADE OUT ON THE CARPET BUT NONE OF ANY THIRD PERSON WHICH AGAIN IS A TRICK FOR THE OTHER SIDE + THEY WERE PILING UP THEIR SCORE ALL THE TIME AND WE WERE AT A STANDSTILL + ONLY ONE LITTLE GLEAM OF HOPE DID I GET AND YET IT AMOUNTED TO NOTHING + I EXAMINED THE CONTENTS OF THE SAFE MOST OF WHICH HAD BEEN TAKEN OUT AND LEFT ON THE TABLE + THE PAPERS HAD BEEN MADE UP INTO SEALED ENVELOPES ONE OR TWO OF WHICH HAD BEEN OPENED BY THE POLICE + THEY WERE NOT SO FAR AS I COULD JUDGE OF ANY GREAT VALUE NOR DID THE BANK BOOK SHOW THAT MR. OLDACRE WAS IN SUCH VERY AFFLUENT CIRCUMSTANCES + BUT IT SEEMED TO ME THAT ALL THE PAPERS WERE NOT THERE + THERE WERE ALLUSIONS TO SOME DEEDS POSSIBLY THE MORE VALUABLE WHICH I COULD NOT FIND + THIS OF COURSE IF WE COULD DEFINITELY PROVE IT WOULD TURN LESTRADE'S ARGUMENT AGAINST HIMSELF FOR WHO WOULD STEAL A THING IF HE KNEW THAT HE WOULD SHORTLY INHERIT IT + FINALLY HAVING DRAWN EVERY OTHER COVER AND PICKED UP NO SCENT I TRIED MY LUCK WITH THE HOUSEKEEPER + MRS. LEXINGTON IS HER NAME A LITTLE DARK SILENT PERSON WITH SUSPICIOUS AND SIDELONG EYES + SHE COULD TELL US SOMETHIRIG IF SHE WOULD I AM CONVINCED OF IT + BUT SHE WAS AS CLOSE AS WAX + YES SHE HAD LET MR. MCFARLANE IN AT HALF PAST NINE + SHE WISHED HER HAND HAD WITHERED BEFORE SHE HAD DONE SO + SHE HAD GONE TO BED AT HALF PAST TEN + HER ROOM WAS AT THE OTHER END OF THE HOUSE AND SHE COULD HEAR NOTHING OF WHAT PASSED + MR. MCFARLANE HAD LEFT HIS HAT AND TO THE BEST OF HER BELIEF HIS STICK IN THE HALL + SHE HAD BEEN AWAKENED BY THE ALARM OF FIRE + HER POOR DEAR MASTER HAD CERTAINLY BEEN MURDERED + HAD HE ANY ENEMIES + WELL EVERY MAN HAD ENEMIES BUT MR. OLDACRE KEPT HIMSELF VERY MUCH TO HIMSELF AND ONLY MET PEOPLE IN THE WAY OF BUSINESS + SHE HAD SEEN THE BUTTONS AND WAS SURE THAT THEY BELONGED TO THE CLOTHES WHICH HE HAD WORN LAST NIGHT + THE WOOD PILE WAS VERY DRY FOR IT HAD NOT RAINED FOR A MONTH + IT BURNED LIKE TINDER AND BY THE TIME SHE REACHED THE SPOT NOTHING COULD BE SEEN BUT FLAMES + SHE AND ALL THE FIREMEN SMELLED THE BURNED FLESH FROM INSIDE IT + SHE KNEW NOTHING OF THE PAPERS NOR OF MR. OLDACRE'S PRIVATE AFFAIRS + SO MY DEAR WATSON THERE'S MY REPORT OF A FAILURE + AND YET AND YET HE CLENCHED HIS THIN HANDS IN A PAROXYSM OF CONVICTION I KNOW IT'S ALL WRONG + I FEEL IT IN MY BONES + THERE IS SOMETHING THAT HAS NOT COME OUT AND THAT HOUSEKEEPER KNOWS IT + THERE WAS A SORT OF SULKY DEFIANCE IN HER EYES WHICH ONLY GOES WITH GUILTY KNOWLEDGE + HOWEVER THERE'S NO GOOD TALKING ANY MORE ABOUT IT WATSON BUT UNLESS SOME LUCKY CHANCE COMES OUR WAY I FEAR THAT THE NORWOOD DISAPPEARANCE CASE WILL NOT FIGURE IN THAT CHRONICLE OF OUR SUCCESSES WHICH I FORESEE THAT A PATIENT PUBLIC WILL SOONER OR LATER HAVE TO ENDURE QUOTE + SURELY SAID I THE MAN'S APPEARANCE WOULD GO FAR WITH ANY JURY + THAT IS A DANGEROUS ARGUMENT MY DEAR WATSON + YOU REMEMBER THAT TERRIBLE MURDERER BERT STEVENS WHO WANTED US TO GET HIM OFF IN EIGHTY SEVEN + WAS THERE EVER A MORE MILD MANNERED SUNDAY SCHOOL YOUNG MAN + IT IS TRUE + UNLESS WE SUCCEED IN ESTABLISHING AN ALTERNATIVE THEORY THIS MAN IS LOST + YOU CAN HARDLY FIND A FLAW IN THE CASE WHICH CAN NOW BE PRESENTED AGAINST HIM AND ALL FURTHER INVESTIGATION HAS SERVED TO STRENGTHEN IT + BY THE WAY THERE IS ONE CURIOUS LITTLE POINT ABOUT THOSE PAPERS WHICH MAY SERVE US AS THE STARTING POINT FOR AN INQUIRY + ON LOOKING OVER THE BANK BOOK I FOUND THAT THE LOW STATE OF THE BALANCE WAS PRINCIPALLY DUE TO LARGE CHECKS WHICH HAVE BEEN MADE OUT DURING THE LAST YEAR TO MR. CORNELIUS + I CONFESS THAT I SHOULD BE INTERESTED TO KNOW WHO THIS MR. CORNELIUS MAY BE WITH WHOM A RETIRED BUILDER HAS HAD SUCH VERY LARGE TRANSACTIONS + IS IT POSSIBLE THAT HE HAS HAD A HAND IN THE AFFAIR + CORNELIUS MIGHT BE A BROKER BUT WE HAVE FOUND NO SCRIP TO CORRESPOND WITH THESE LARGE PAYMENTS + FAILING ANY OTHER INDICATION MY RESEARCHES MUST NOW TAKE THE DIRECTION OF AN INQUIRY AT THE BANK FOR THE GENTLEMAN WHO HAS CASHED THESE CHECKS + BUT I FEAR MY DEAR FELLOW THAT OUR CASE WILL END INGLORIOUSLY BY LESTRADE HANGING OUR CLIENT WHICH WILL CERTAINLY BE A TRIUMPH FOR SCOTLAND YARD QUOTE + I DO NOT KNOW HOW FAR SHERLOCK HOLMES TOOK ANY SLEEP THAT NIGHT BUT WHEN I CAME DOWN TO BREAKFAST I FOUND HIM PALE AND HARASSED HIS BRIGHT EYES THE BRIGHTER FOR THE DARK SHADOWS ROUND THEM + THE CARPET ROUND HIS CHAIR WAS LITTERED WITH CIGARETTE ENDS AND WITH THE EARLY EDITIONS OF THE MORNING PAPERS + AN OPEN TELEGRAM LAY UPON THE TABLE + WHAT DO YOU THINK OF THIS WATSON HE ASKED TOSSING IT ACROSS + IT WAS FROM NORWOOD AND RAN AS FOLLOWS IMPORTANT FRESH EVIDENCE TO HAND + MCFARLANE'S GUILT DEFI NITELY ESTABLISHED + ADVISE YOU TO ABANDON CASE + LESTRADE + THIS SOUNDS SERIOUS SAID I + IT IS LESTRADE'S LITTLE COCK A DOODLE OF VICTORY HOLMES ANSWERED WITH A BITTER SMILE + AND YET IT MAY BE PREMATURE TO ABANDON THE CASE + AFTER ALL IMPORTANT FRESH EVIDENCE IS A TWOEDGED THING AND MAY POSSIBLY CUT IN A VERY DIFFERENT DIRECTION TO THAT WHICH LESTRADE IMAGINES + TAKE YOUR BREAKFAST WATSON AND WE WILL GO OUT TOGETHER AND SEE WHAT WE CAN DO + I FEEL AS IF I SHALL NEED YOUR COMPANY AND YOUR MORAL SUPPORT TO DAY + MY FRIEND HAD NO BREAKFAST HIMSELF FOR IT WAS ONE OF HIS PECULIARITIES THAT IN HIS MORE INTENSE MOMENTS HE WOULD PERMIT HIMSELF NO FOOD AND I HAVE KNOWN HIM PRESUME UPON HIS IRON STRENGTH UNTIL HE HAS FAINTED FROM PURE INANITION + QUOTE AT PRESENT I CANNOT SPARE ENERGY AND NERVE FORCE FOR DIGESTION QUOTE HE WOULD SAY IN ANSWER TO MY MEDICAL REMONSTRANCES + I WAS NOT SURPRISED THEREFORE WHEN THIS MORNING HE LEFT HIS UNTOUCHED MEAL BEHIND HIM AND STARTED WITH ME FOR NORWOOD + A CROWD OF MORBID SIGHTSEERS WERE STILL GATHERED ROUND DEEP DENE HOUSE WHICH WAS JUST SUCH A SUBURBAN VILLA AS I HAD PICTURED + WITHIN THE GATES LESTRADE MET US HIS FACE FLUSHED WITH VICTORY HIS MANNER GROSSLY TRIUMPHANT + WELL MR. HOLMES HAVE YOU PROVED US TO BE WRONG YET + HAVE YOU FOUND YOUR TRAMP HE CRIED + I HAVE FORMED NO CONCLUSION WHATEVER MY COMPANION ANSWERED + BUT WE FORMED OURS YESTERDAY AND NOW IT PROVES TO BE CORRECT SO YOU MUST ACKNOWLEDGE THAT WE HAVE BEEN A LITTLE IN FRONT OF YOU THIS TIME MR. HOLMES + YOU CERTAINLY HAVE THE AIR OF SOMETHING UNUSUAL HAVING OCCURRED SAID HOLMES + LESTRADE LAUGHED LOUDLY + QUOTE YOU DON'T LIKE BEING BEATEN ANY MORE THAN THE REST OF US DO QUOTE SAID HE + A MAN CAN'T EXPECT ALWAYS TO HAVE IT HIS OWN WAY CAN HE DOCTOR WATSON + STEP THIS WAY IF YOU PLEASE GENTLEMEN AND I THINK I CAN CONVINCE YOU ONCE FOR ALL THAT IT WAS JOHN MCFARLANE WHO DID THIS CRIME + HE LED US THROUGH THE PASSAGE AND OUT INTO A DARK HALL BEYOND + THIS IS WHERE YOUNG MCFARLANE MUST HAVE COME OUT TO GET HIS HAT AFTER THE CRIME WAS DONE SAID HE + NOW LOOK AT THIS + WITH DRAMATIC SUDDENNESS HE STRUCK A MATCH AND BY ITS LIGHT EXPOSED A STAIN OF BLOOD UPON THE WHITEWASHED WALL + AS HE HELD THE MATCH NEARER I SAW THAT IT WAS MORE THAN A STAIN + IT WAS THE WELL MARKED PRINT OF A THUMB + LOOK AT THAT WITH YOUR MAGNIFYING GLASS MR. HOLMES + QUOTE YES I AM DOING SO QUOTE + YOU ARE AWARE THAT NO TWO THUMB MARKS ARE ALIKE + I HAVE HEARD SOMETHING OF THE KIND + WELL THEN WILL YOU PLEASE COMPARE THAT PRINT WITH THIS WAX IMPRESSION OF YOUNG MCFARLANE'S RIGHT THUMB TAKEN BY MY ORDERS THIS MORNING + AS HE HELD THE WAXEN PRINT CLOSE TO THE BLOOD STAIN IT DID NOT TAKE A MAGNIFYING GLASS TO SEE THAT THE TWO WERE UNDOUBTEDLY FROM THE SAME THUMB + IT WAS EVIDENT TO ME THAT OUR UNFORTUNATE CLIENT WAS LOST + THAT IS FINAL SAID LESTRADE + YES THAT IS FINAL I INVOLUNTARILY ECHOED + QUOTE IT IS FINAL QUOTE SAID HOLMES + SOMETHING IN HIS TONE CAUGHT MY EAR AND I TURNED TO LOOK AT HIM + AN EXTRAORDINARY CHANGE HAD COME OVER HIS FACE + IT WAS WRITHING WITH INWARD MERRIMENT + HIS TWO EYES WERE SHINING LIKE STARS + IT SEEMED TO ME THAT HE WAS MAKING DESPERATE EFFORTS TO RESTRAIN A CONVULSIVE ATTACK OF LAUGHTER + DEAR ME + DEAR ME HE SAID AT LAST + WELL NOW WHO WOULD HAVE THOUGHT IT + AND HOW DECEPTIVE APPEARANCES MAY BE TO BE SURE + SUCH A NICE YOUNG MAN TO LOOK AT + IT IS A LESSON TO US NOT TO TRUST OUR OWN JUDGMENT IS IT NOT LESTRADE + YES SOME OF US ARE A LITTLE TOO MUCH INCLINED TO BE COCKSURE MR. HOLMES SAID LESTRADE + THE MAN'S INSOLENCE WAS MADDENING BUT WE COULD NOT RESENT IT + QUOTE WHAT A PROVIDENTIAL THING THAT THIS YOUNG MAN SHOULD PRESS HIS RIGHT THUMB AGAINST THE WALL IN TAKING HIS HAT FROM THE PEG + SUCH A VERY NATURAL ACTION TOO IF YOU COME TO THINK IF IT + HOLMES WAS OUTWARDLY CALM BUT HIS WHOLE BODY GAVE A WRIGGLE OF SUPPRESSED EXCITEMENT AS HE SPOKE + BY THE WAY LESTRADE WHO MADE THIS REMARKABLE DISCOVERY + IT WAS THE HOUSEKEEPER MRS. LEXINGTON WHO DREW THE NIGHT CONSTABLE'S ATTENTION TO IT + WHERE WAS THE NIGHT CONSTABLE + HE REMAINED ON GUARD IN THE BEDROOM WHERE THE CRIME WAS COMMITTED SO AS TO SEE THAT NOTHING WAS TOUCHED + QUOTE BUT WHY DIDN'T THE POLICE SEE THIS MARK YESTERDAY QUOTE + WELL WE HAD NO PARTICULAR REASON TO MAKE A CAREFUL EXAMINATION OF THE HALL + BESIDES IT'S NOT IN A VERY PROMINENT PLACE AS YOU SEE + NO NO OF COURSE NOT + I SUPPOSE THERE IS NO DOUBT THAT THE MARK WAS THERE YESTERDAY + LESTRADE LOOKED AT HOLMES AS IF HE THOUGHT HE WAS GOING OUT OF HIS MIND + I CONFESS THAT I WAS MYSELF SURPRISED BOTH AT HIS HILARIOUS MANNER AND AT HIS' RATHER WILD OBSERVATION + I DON'T KNOW WHETHER YOU THINK THAT MCFARLANE CAME OUT OF JAIL IN THE DEAD OF THE NIGHT IN ORDER TO STRENGTHEN THE EVIDENCE AGAINST HIMSELF SAID LESTRADE + QUOTE I LEAVE IT TO ANY EXPERT IN THE WORLD WHETHER THAT IS NOT THE MARK OF HIS THUMB QUOTE + IT IS UNQUESTIONABLY THE MARK OF HIS THUMB + THERE THAT'S ENOUGH SAID LESTRADE + I AM A PRACTICAL MAN MR. HOLMES AND WHEN I HAVE GOT MY EVIDENCE I COME TO MY CONCLUSIONS + IF YOU HAVE ANYTHING TO SAY YOU WILL FIND ME WRITING MY REPORT IN THE SITTING ROOM + HOLMES HAD RECOVERED HIS EQUANIMITY THOUGH I STILL SEEMED TO DETECT GLEAMS OF AMUSEMENT IN HIS EXPRESSION + DEAR ME THIS IS A VERY SAD DEVELOPMENT WATSON IS IT NOT SAID HE + QUOTE AND YET THERE ARE SINGULAR POINTS ABOUT IT WHICH HOLD OUT SOME HOPES FOR OUR CLIENT QUOTE + I AM DELIGHTED TO HEAR IT SAID I HEARTILY + I WAS AFRAID IT WAS ALL UP WITH HIM + I WOULD HARDLY GO SO FAR AS TO SAY THAT MY DEAR WATSON + THE FACT IS THAT THERE IS ONE REALLY SERIOUS FLAW IN THIS EVIDENCE TO WHICH OUR FRIEND ATTACHES SO MUCH IMPORTANCE + INDEED HOLMES + WHAT IS IT QUOTE + ONLY THIS THAT I KNOW THAT THAT MARK WAS NOT THERE WHEN I EXAMINED THE HALL YESTERDAY + AND NOW WATSON LET US HAVE A LITTLE STROLL ROUND IN THE SUNSHINE + WITH A CONFUSED BRAIN BUT WITH A HEART INTO WHICH SOME WARMTH OF HOPE WAS RETURNING I ACCOMPANIED MY FRIEND IN A WALK ROUND THE GARDEN + HOLMES TOOK EACH FACE OF THE HOUSE IN TURN AND EXAMINED IT WITH GREAT INTEREST + HE THEN LED THE WAY INSIDE AND WENT OVER THE WHOLE BUILDING FROM BASEMENT TO ATTIC + MOST OF THE ROOMS WERE UNFURNISHED BUT NONE THE LESS HOLMES INSPECTED THEM ALL MINUTELY + FINALLY ON THE TOP CORRIDOR WHICH RAN OUTSIDE THREE UNTENANTED BEDROOMS HE AGAIN WAS SEIZED WITH A SPASM OF MERRIMENT + THERE ARE REALLY SOME VERY UNIQUE FEATURES ABOUT THIS CASE WATSON SAID HE + I THINK IT IS TIME NOW THAT WE TOOK OUR FRIEND LESTRADE INTO OUR CONFIDENCE + HE HAS HAD HIS LITTLE SMILE AT OUR EXPENSE AND PERHAPS WE MAY DO AS MUCH BY HIM IF MY READING OF THIS PROBLEM PROVES TO BE CORRECT + YES YES I THINK I SEE HOW WE SHOULD APPROACH IT + THE SCOTLAND YARD INSPECTOR WAS STILL WRITING IN THE PARLOUR WHEN HOLMES INTERRUPTED HIM + QUOTE I UNDERSTOOD THAT YOU WERE WRITING A REPORT OF THIS CASE QUOTE SAID HE + SO I AM + DON'T YOU THINK IT MAY BE A LITTLE PREMATURE + I CAN'T HELP THINKING THAT YOUR EVIDENCE IS NOT COMPLETE + LESTRADE KNEW MY FRIEND TOO WELL TO DISREGARD HIS WORDS + HE LAID DOWN HIS PEN AND LOOKED CURIOUSLY AT HIM + WHAT DO YOU MEAN MR. HOLMES + ONLY THAT THERE IS AN IMPORTANT WITNESS WHOM YOU HAVE NOT SEEN + QUOTE CAN YOU PRODUCE HIM QUOTE + I THINK I CAN + THEN DO SO + I WILL DO MY BEST + HOW MANY CONSTABLES HAVE YOU + THERE ARE THREE WITHIN CALL + QUOTE EXCELLENT QUOTE SAID HOLMES + MAY I ASK IF THEY ARE ALL LARGE ABLE BODIED MEN WITH POWERFUL VOICES + I HAVE NO DOUBT THEY ARE THOUGH I FAIL TO SEE WHAT THEIR VOICES HAVE TO DO WITH IT + PERHAPS I CAN HELP YOU TO SEE THAT AND ONE OR TWO OTHER THINGS AS WELL SAID HOLMES + KINDLY SUMMON YOUR MEN AND I WILL TRY + FIVE MINUTES LATER THREE POLICEMEN HAD ASSEMBLED IN THE HALL + IN THE OUTHOUSE YOU WILL FIND A CONSIDERABLE QUANTITY OF STRAW SAID HOLMES + QUOTE I WILL ASK YOU TO CARRY IN TWO BUNDLES OF IT + I THINK IT WILL BE OF THE GREATEST ASSISTANCE IN PRODUCING THE WITNESS WHOM I REQUIRE + THANK YOU VERY MUCH + I BELIEVE YOU HAVE SOME MATCHES IN YOUR POCKET WATSON + NOW MR. LESTRADE I WILL ASK YOU ALL TO ACCOMPANY ME TO THE TOP LANDING + AS I HAVE SAID THERE WAS A BROAD CORRIDOR THERE WHICH RAN OUTSIDE THREE EMPTY BEDROOMS + AT ONE END OF THE CORRIDOR WE WERE ALL MARSHALLED BY SHERLOCK HOLMES THE CONSTABLES GRINNING AND LESTRADE STARING AT MY FRIEND WITH AMAZEMENT EXPECTATION AND DERISION CHASING EACH OTHER ACROSS HIS FEATURES + HOLMES STOOD BEFORE US WITH THE AIR OF A CONJURER WHO IS PERFORMING A TRICK + WOULD YOU KINDLY SEND ONE OF YOUR CONSTABLES FOR TWO BUCKETS OF WATER + PUT THE STRAW ON THE FLOOR HERE. FREE FROM THE WALL ON EITHER SIDE + NOW I THINK THAT WE ARE ALL READY + LESTRADE'S FACE HAD BEGUN TO GROW RED AND ANGRY + I DON'T KNOW WHETHER YOU ARE PLAYING A GAME WITH US MR. SHERLOCK HOLMES SAID HE + IF YOU KNOW ANYTHING YOU CAN SURELY SAY IT WITHOUT ALL THIS TOMFOOLERY + QUOTE I ASSURE YOU MY GOOD LESTRADE THAT I HAVE AN EXCELLENT REASON FOR EVERYTHING THAT I DO + YOU MAY POSSIBLY REMEMBER THAT YOU CHAFFED ME A LITTLE SOME HOURS AGO WHEN THE SUN SEEMED ON YOUR SIDE OF THE HEDGE SO YOU MUST NOT GRUDGE ME A LITTLE POMP AND CEREMONY NOW + MIGHT I ASK YOU WATSON TO OPEN THAT WINDOW AND THEN TO PUT A MATCH TO THE EDGE OF THE STRAW + I DID SO AND DRIVEN BY THE DRAUGHT A COIL OF GRAY SMOKE SWIRLED DOWN THE CORRIDOR WHILE THE DRY STRAW CRACKLED AND FLAMED + NOW WE MUST SEE IF WE CAN FIND THIS WITNESS FOR YOU LESTRADE + MIGHT I ASK YOU ALL TO JOIN IN THE CRY OF FIRE + NOW THEN ONE TWO THREE + FIRE WE ALL YELLED + THANK YOU + I WILL TROUBLE YOU ONCE AGAIN QUOTE + FIRE + JUST ONCE MORE GENTLEMEN AND ALL TOGETHER + FIRE + THE SHOUT MUST HAVE RUNG OVER NORWOOD + IT HAD HARDLY DIED AWAY WHEN AN AMAZING THING HAPPENED + A DOOR SUDDENLY FLEW OPEN OUT OF WHAT APPEARED TO BE SOLID WALL AT THE END OF THE CORRIDOR AND A LITTLE WIZENED MAN DARTED OUT OF IT LIKE A RABBIT OUT OF ITS BURROW + CAPITAL SAID HOLMES CALMLY + WATSON A BUCKET OF WATER OVER THE STRAW + THAT WILL DO + LESTRADE ALLOW ME TO PRESENT YOU WITH YOUR PRINCIPAL MISSING WITNESS MR. JONAS OLDACRE QUOTE + THE DETECTIVE STARED AT THE NEWCOMER WITH BLANK AMAZEMENT + THE LATTER WAS BLINKING IN THE BRIGHT LIGHT OF THE CORRIDOR AND PEERING AT US AND AT THE SMOULDERING FIRE + IT WAS AN ODIOUS FACE CRAFTY VICIOUS MALIGNANT WITH SHIFTY LIGHT GRAY EYES AND WHITE LASHES + WHAT'S THIS THEN SAID LESTRADE AT LAST + WHAT HAVE YOU BEEN DOING ALL THIS TIME EH + OLDACRE GAVE AN UNEASY LAUGH SHRINKING BACK FROM THE FURIOUS RED FACE OF THE ANGRY DETECTIVE + I HAVE DONE NO HARM + NO HARM + YOU HAVE DONE YOUR BEST TO GET AN INNOCENT MAN HANGED + IF IT WASN'T FOR THIS GENTLEMAN HERE I AM NOT SURE THAT YOU WOULD NOT HAVE SUCCEEDED + THE WRETCHED CREATURE BEGAN TO WHIMPER + QUOTE I AM SURE SIR IT WAS ONLY MY PRACTICAL JOKE QUOTE + OH A JOKE WAS IT + YOU WON'T FIND THE LAUGH ON YOUR SIDE I PROMISE YOU + TAKE HIM DOWN AND KEEP HIM IN THE SITTING ROOM UNTIL I COME + MR. HOLMES HE CONTINUED WHEN THEY HAD GONE I COULD NOT SPEAK BEFORE THE CONSTABLES BUT I DON'T MIND SAYING IN THE PRESENCE OF DOCTOR WATSON THAT THIS IS THE BRIGHTEST THING THAT YOU HAVE DONE YET THOUGH IT IS A MYSTERY TO ME HOW YOU DID IT + YOU HAVE SAVED AN INNOCENT MAN'S LIFE AND YOU HAVE PREVENTED A VERY GRAVE SCANDAL WHICH WOULD HAVE RUINED MY REPUTATION IN THE FORCE + HOLMES SMILED AND CLAPPED LESTRADE UPON THE SHOULDER + INSTEAD OF BEING RUINED MY GOOD SIR YOU WILL FIND THAT YOUR REPUTATION HAS BEEN ENORMOUSLY ENHANCED + JUST MAKE A FEW ALTERATIONS IN THAT REPORT WHICH YOU WERE WRITING AND THEY WILL UNDERSTAND HOW HARD IT IS TO THROW DUST IN THE EYES OF INSPECTOR LESTRADE + QUOTE AND YOU DON'T WANT YOUR NAME TO APPEAR QUOTE + NOT AT ALL + THE WORK IS ITS OWN REWARD + PERHAPS I SHALL GET THE CREDIT ALSO AT SOME DISTANT DAY WHEN I PERMIT MY ZEALOUS HISTORIAN TO LAY OUT HIS FOOLSCAP ONCE MORE EH WATSON + WELL NOW LET US SEE WHERE THIS RAT HAS BEEN LURKING + A LATH AND PLASTER PARTITION HAD BEEN RUN ACROSS THE PASSAGE SIX FEET FROM THE END WITH A DOOR CUNNINGLY CONCEALED IN IT + IT WAS LIT WITHIN BY SLITS UNDER THE EAVES + A FEW ARTICLES OF FURNITURE AND A SUPPLY OF FOOD AND WATER WERE WITHIN TOGETHER WITH A NUMBER OF BOOKS AND PAPERS + THERE'S THE ADVANTAGE OF BEING A BUILDER SAID HOLMES AS WE CAME OUT + HE WAS ABLE TO FIX UP HIS OWN LITTLE HIDING PLACE WITHOUT ANY CONFEDERATE SAVE OF COURSE THAT PRECIOUS HOUSEKEEPER OF HIS WHOM I SHOULD LOSE NO TIME IN ADDING TO YOUR BAG LESTRADE + I'LL TAKE YOUR ADVICE + BUT HOW DID YOU KNOW OF THIS PLACE MR. HOLMES QUOTE + I MADE UP MY MIND THAT THE FELLOW WAS IN HIDING IN THE HOUSE + WHEN I PACED ONE CORRIDOR AND FOUND IT SIX FEET SHORTER THAN THE CORRESPONDING ONE BELOW IT WAS PRETTY CLEAR WHERE HE WAS + I THOUGHT HE HAD NOT THE NERVE TO LIE QUIET BEFORE AN ALARM OF FIRE + WE COULD OF COURSE HAVE GONE IN AND TAKEN HIM BUT IT AMUSED ME TO MAKE HIM REVEAL HIMSELF + BESIDES I OWED YOU A LITTLE MYSTIFICATION LESTRADE FOR YOUR CHAFF IN THE MORNING + WELL SIR YOU CERTAINLY GOT EQUAL WITH ME ON THAT + BUT HOW IN THE WORLD DID YOU KNOW THAT HE WAS IN THE HOUSE AT ALL + THE THUMB MARK LESTRADE + YOU SAID IT WAS FINAL AND SO IT WAS IN A VERY DIFFERENT SENSE + I KNEW IT HAD NOT BEEN THERE THE DAY BEFORE + I PAY A GOOD DEAL OF ATTENTION TO MATTERS OF DETAIL AS YOU MAY HAVE OBSERVED AND I HAD EXAMINED THE HALL AND WAS SURE THAT THE WALL WAS CLEAR + THEREFORE IT HAD BEEN PUT ON DURING THE NIGHT QUOTE + BUT HOW + VERY SIMPLY + WHEN THOSE PACKETS WERE SEALED UP JONAS OLDACRE GOT MCFARLANE TO SECURE ONE OF THE SEALS BY PUTTING HIS THUMB UPON THE SOFT WAX + IT WOULD BE DONE SO QUICKLY AND SO NATURALLY THAT I DARESAY THE YOUNG MAN HIMSELF HAS NO RECOLLECTION OF IT + VERY LIKELY IT JUST SO HAPPENED AND OLDACRE HAD HIMSELF NO NOTION OF THE USE HE WOULD PUT IT TO + BROODING OVER THE CASE IN THAT DEN OF HIS IT SUDDENLY STRUCK HIM WHAT ABSOLUTELY DAMNING EVIDENCE HE COULD MAKE AGAINST MCFARLANE BY USING THAT THUMB MARK + IT WAS THE SIMPLEST THING IN THE WORLD FOR HIM TO TAKE A WAX IMPRESSION FROM THE SEAL TO MOISTEN IT IN AS MUCH BLOOD AS HE COULD GET FROM A PIN PRICK AND TO PUT THE MARK UPON THE WALL DURING THE NIGHT EITHER WITH HIS OWN HAND OR WITH THAT OF HIS HOUSEKEEPER + IF YOU EXAMINE AMONG THOSE DOCUMENTS WHICH HE TOOK WITH HIM INTO HIS RETREAT I WILL LAY YOU A WAGER THAT YOU FIND THE SEAL WITH THE THUMBMARK UPON IT + WONDERFUL SAID LESTRADE + WONDERFUL + IT'S ALL AS CLEAR AS CRYSTAL AS YOU PUT IT + BUT WHAT IS THE OBJECT OF THIS DEEP DECEPTION MR. HOLMES QUOTE + IT WAS AMUSING TO ME TO SEE HOW THE DETECTIVE'S OVERBEARING MANNER HAD CHANGED SUDDENLY TO THAT OF A CHILD ASKING QUESTIONS OF ITS TEACHER + WELL I DON'T THINK THAT IS VERY HARD TO EXPLAIN + A VERY DEEP MALICIOUS VINDICTIVE PERSON IS THE GENTLEMAN WHO IS NOW WAITING US DOWNSTAIRS + YOU KNOW THAT HE WAS ONCE REFUSED BY MCFARLANE'S MOTHER + YOU DON'T + I TOLD YOU THAT YOU SHOULD GO TO BLACKHEATH FIRST AND NORWOOD AFTERWARDS + WELL THIS INJURY AS HE WOULD CONSIDER IT HAS RANKLED IN HIS WICKED SCHEMING BRAIN AND ALL HIS LIFE HE HAS LONGED FOR VENGEANCE BUT NEVER SEEN HIS CHANCE + DURING THE LAST YEAR OR TWO THINGS HAVE GONE AGAINST HIM SECRET SPECULATION I THINK AND HE FINDS HIMSELF IN A BAD WAY + HE DETERMINES TO SWINDLE HIS CREDITORS AND FOR THIS PURPOSE HE PAYS LARGE CHECKS TO A CERTAIN MR. CORNELIUS WHO IS I IMAGINE HIMSELF UNDER ANOTHER NAME + I HAVE NOT TRACED THESE CHECKS YET BUT I HAVE NO DOUBT THAT THEY WERE BANKED UNDER THAT NAME AT SOME PROVINCIAL TOWN WHERE OLDACRE FROM TIME TO TIME LED A DOUBLE EXISTENCE + HE INTENDED TO CHANGE HIS NAME ALTOGETHER DRAW THIS MONEY AND VANISH STARTING LIFE AGAIN ELSEWHERE + WELL THAT'S LIKELY ENOUGH + IT WOULD STRIKE HIM THAT IN DISAPPEARING HE MIGHT THROW ALL PURSUIT OFF HIS TRACK AND AT THE SAME TIME HAVE AN AMPLE AND CRUSHING REVENGE UPON HIS OLD SWEETHEART IF HE COULD GIVE THE IMPRESSION THAT HE HAD BEEN MURDERED BY HER ONLY CHILD + IT WAS A MASTERPIECE OF VILLAINY AND HE CARRIED IT OUT LIKE A MASTER + THE IDEA OF THE WILL WHICH WOULD GIVE AN OBVIOUS MOTIVE FOR THE CRIME THE SECRET VISIT UNKNOWN TO HIS OWN PARENTS THE RETENTION OF THE STICK THE BLOOD AND THE ANIMAL REMAINS AND BUTTONS IN THE WOOD PILE ALL WERE ADMIRABLE + IT WAS A NET FROM WHICH IT SEEMED TO ME A FEW HOURS AGO THAT THERE WAS NO POSSIBLE ESCAPE + BUT HE HAD NOT THAT SUPREME GIFT OF THE ARTIST THE KNOWLEDGE OF WHEN TO STOP + HE WISHED TO IMPROVE THAT WHICH WAS ALREADY PERFECT TO DRAW THE ROPE TIGHTER YET ROUND THE NECK OF HIS UNFORTUNATE VICTIM AND SO HE RUINED ALL + LET US DESCEND LESTRADE + THERE ARE JUST ONE OR TWO QUESTIONS THAT I WOULD ASK HIM + THE MALIGNANT CREATURE WAS SEATED IN HIS OWN PARLOUR WITH A POLICEMAN UPON EACH SIDE OF HIM + QUOTE IT WAS A JOKE MY GOOD SIR A PRACTICAL JOKE NOTHING MORE QUOTE HE WHINED INCESSANTLY + I ASSURE YOU SIR THAT I SIMPLY CONCEALED MYSELF IN ORDER TO SEE THE EFFECT OF MY DISAPPEARANCE AND I AM SURE THAT YOU WOULD NOT BE SO UNJUST AS TO IMAGINE THAT I WOULD HAVE ALLOWED ANY HARM TO BEFALL POOR YOUNG MR. MCFARLANE + THAT'S FOR A JURY TO DECIDE SAID LESTRADE + ANYHOW WE SHALL HAVE YOU ON A CHARGE OF CONSPIRACY IF NOT FOR ATTEMPTED MURDER + AND YOU'LL PROBABLY FIND THAT YOUR CREDITORS WILL IMPOUND THE BANKING ACCOUNT OF MR. CORNELIUS SAID HOLMES + THE LITTLE MAN STARTED AND TURNED HIS MALIGNANT EYES UPON MY FRIEND + L. HAVE TO THANK YOU FOR A GOOD DEAL SAID HE + QUOTE PERHAPS I'LL PAY MY DEBT SOME DAY QUOTE + HOLMES SMILED INDULGENTLY + I FANCY THAT FOR SOME FEW YEARS YOU WILL FIND YOUR TIME VERY FULLY OCCUPIED SAID HE + BY THE WAY WHAT WAS IT YOU PUT INTO THE WOOD PILE BESIDES YOUR OLD TROUSERS + A DEAD DOG OR RABBITS OR WHAT + YOU WON'T TELL + DEAR ME HOW VERY UNKIND OF YOU + WELL WELL I DARESAY THAT A COUPLE OF RABBITS WOULD ACCOUNT BOTH FOR THE BLOOD AND FOR THE CHARRED ASHES + IF EVER YOU WRITE AN ACCOUNT WATSON YOU CAN MAKE RABBITS SERVE YOUR TURN diff --git a/samples/LMTutorial/train/preface.txt b/samples/LMTutorial/train/preface.txt new file mode 100755 index 0000000..0d96e0e --- /dev/null +++ b/samples/LMTutorial/train/preface.txt @@ -0,0 +1,6 @@ + THE FRIENDS OF MR. SHERLOCK HOLMES WILL BE GLAD TO LEARN THAT HE IS STILL ALIVE AND WELL THOUGH SOMEWHAT CRIPPLED BY OCCASIONAL ATTACKS OF RHEUMATISM + HE HAS FOR MANY YEARS LIVED IN A SMALL FARM UPON THE DOWNS FIVE MILES FROM EASTBOURNE WHERE HIS TIME IS DIVIDED BETWEEN PHILOSOPHY AND AGRICULTURE + DURING THIS PERIOD OF REST HE HAS REFUSED THE MOST PRINCELY OFFERS TO TAKE UP VARIOUS CASES HAVING DETERMINED THAT HIS RETIREMENT WAS A PERMANENT ONE + THE APPROACH OF THE GERMAN WAR CAUSED HIM HOWEVER TO LAY HIS REMARKABLE COMBINATION OF INTELLECTUAL AND PRACTICAL ACTIVITY AT THE DISPOSAL OF THE GOVERNMENT WITH HISTORICAL RESULTS WHICH ARE RECOUNTED IN HIS LAST BOW + SEVERAL PREVIOUS EXPERIENCES WHICH HAVE LAIN LONG IN MY PORTFOLIO HAVE BEEN ADDED TO HIS LAST BOW SO AS TO COMPLETE THE VOLUME + JOHN H. WATSON M. D. diff --git a/samples/LMTutorial/train/priory_school.txt b/samples/LMTutorial/train/priory_school.txt new file mode 100755 index 0000000..ca5b7e7 --- /dev/null +++ b/samples/LMTutorial/train/priory_school.txt @@ -0,0 +1,847 @@ + WE HAVE HAD SOME DRAMATIC ENTRANCES AND EXITS UPON OUR SMALL STAGE AT BAKER STREET BUT I CANNOT RECOLLECT ANYTHING MORE SUDDEN AND STARTLING THAN THE FIRST APPEARANCE OF THORNEYCROFT HUXTABLE M. A. P. H. D. ET CETERA + HIS CARD WHICH SEEMED TOO SMALL TO CARRY THE WEIGHT OF HIS ACADEMIC DISTINCTIONS PRECEDED HIM BY A FEW SECONDS AND THEN HE ENTERED HIMSELF SO LARGE SO POMPOUS AND SO DIGNIFIED THAT HE WAS THE VERY EMBODIMENT OF SELF POSSESSION AND SOLIDITY + AND YET HIS FIRST ACTION WHEN THE DOOR HAD CLOSED BEHIND HIM WAS TO STAGGER AGAINST THE TABLE WHENCE HE SLIPPED DOWN UPON THE FLOOR AND THERE WAS THAT MAJESTIC FIGURE PROSTRATE AND INSENSIBLE UPON OUR BEARSKIN HEARTHRUG + WE HAD SPRUNG TO OUR FEET AND FOR A FEW MOMENTS WE STARED IN SILENT AMAZEMENT AT THIS PONDEROUS PIECE OF WRECKAGE WHICH TOLD OF SOME SUDDEN AND FATAL STORM FAR OUT ON THE OCEAN OF LIFE + THEN HOLMES HURRIED WITH A CUSHION FOR HIS HEAD. AND I WITH BRANDY FOR HIS LIPS + THE HEAVY WHITE FACE WAS SEAMED WITH LINES OF TROUBLE THE HANGING POUCHES UNDER THE CLOSED EYES WERE LEADEN IN COLOUR THE LOOSE MOUTH DROOPED DOLOROUSLY AT THE CORNERS THE ROLLING CHINS WERE UNSHAVEN + COLLAR AND SHIRT BORE THE GRIME OF A LONG JOURNEY AND THE HAIR BRISTLED UNKEMPT FROM THE WELL SHAPED HEAD + IT WAS A SORELY STRICKEN MAN WHO LAY BEFORE US + QUOTE WHAT IS IT WATSON QUOTE ASKED HOLMES + ABSOLUTE EXHAUSTION POSSIBLY MERE HUNGER AND FATIGUE SAID I WITH MY FINGER ON THE THREADY PULSE WHERE THE STREAM OF LIFE TRICKLED THIN AND SMALL + RETURN TICKET FROM MACKLETON IN THE NORTH OF ENGLAND SAID HOLMES DRAWING IT FROM THE WATCH POCKET + IT IS NOT TWELVE O'CLOCK YET + HE HAS CERTAINLY BEEN AN EARLY STARTER + THE PUCKERED EYELIDS HAD BEGUN TO QUIVER AND NOW A PAIR OF VACANT GRAY EYES LOOKED UP AT US + AN INSTANT LATER THE MAN HAD SCRAMBLED ON TO HIS FEET HIS FACE CRIMSON WITH SHAME + FORGIVE THIS WEAKNESS MR. HOLMES I HAVE BEEN A LITTLE OVERWROUGHT + THANK YOU IF I MIGHT HAVE A GLASS OF MILK AND A BISCUIT I HAVE NO DOUBT THAT I SHOULD BE BETTER + I CAME PERSONALLY MR. HOLMES IN ORDER TO INSURE THAT YOU WOULD RETURN WITH ME + I FEARED THAT NO TELEGRAM WOULD CONVINCE YOU OF THE ABSOLUTE URGENCY OF THE CASE QUOTE + I AM QUITE WELL AGAIN + I CANNOT IMAGINE HOW I CAME TO BE SO WEAK + I WISH YOU MR. HOLMES TO COME TO MACKLETON WITH ME BY THE NEXT TRAIN + MY FRIEND SHOOK HIS HEAD + MY COLLEAGUE DOCTOR WATSON COULD TELL YOU THAT WE ARE VERY BUSY AT PRESENT + I AM RETAINED IN THIS CASE OF THE FERRERS DOCUMENTS AND THE ABERGAVENNY MURDER IS COMING UP FOR TRIAL + ONLY A VERY IMPORTANT ISSUE COULD CALL ME FROM LONDON AT PRESENT + IMPORTANT + OUR VISITOR THREW UP HIS HANDS + QUOTE HAVE YOU HEARD NOTHING OF THE ABDUCTION OF THE ONLY SON OF THE DUKE OF HOLDERNESSE QUOTE + WHAT THE LATE CABINET MINISTER + EXACTLY + WE HAD TRIED TO KEEP IT OUT OF THE PAPERS BUT THERE WAS SOME RUMOR IN THE GLOBE LAST NIGHT + I THOUGHT IT MIGHT HAVE REACHED YOUR EARS + HOLMES SHOT OUT HIS LONG THIN ARM AND PICKED OUT VOLUME H. IN HIS ENCYCLOPAEDIA OF REFERENCE + HOLDERNESSE SIXTH DUKE K. G. P. C. HALF THE ALPHABET + BARON BEVERLEY EARL OF CARSTON DEAR ME WHAT A LIST + LORD LIEUTENANT OF HALLAMSHIRE SINCE NINETEEN HUNDRED + MARRIED EDITH DAUGHTER OF SIR CHARLES APPLEDORE ONE THOUSAND EIGHT HUNDRED EIGHTY EIGHT + HEIR AND ONLY CHILD LORD SALTIRE + OWNS ABOUT TWO HUNDRED AND FIFTY THOUSAND ACRES + MINERALS IN LANCASHIRE AND WALES + ADDRESS CARLTON HOUSE TERRACE HOLDERNESSE HALL HALLAMSHIRE CARSTON CASTLE BANGOR WALES + LORD OF THE ADMIRALTY ONE THOUSAND EIGHT HUNDRED SEVENTY TWO CHIEF SECRETARY OF STATE FOR WELL WELL THIS MAN IS CERTAINLY ONE OF THE GREATEST SUBJECTS OF THE CROWN QUOTE + THE GREATEST AND PERHAPS THE WEALTHIEST + I AM AWARE MR. HOLMES THAT YOU TAKE A VERY HIGH LINE IN PROFESSIONAL MATTERS AND THAT YOU ARE PREPARED TO WORK FOR THE WORK'S SAKE + I MAY TELL YOU HOWEVER THAT HIS GRACE HAS ALREADY INTIMATED THAT A CHECK FOR FIVE THOUSAND POUNDS WILL BE HANDED OVER TO THE PERSON WHO CAN TELL HIM WHERE HIS SON IS AND ANOTHER THOUSAND TO HIM WHO CAN NAME THE MAN OR MEN WHO HAVE TAKEN HIM + IT IS A PRINCELY OFFER SAID HOLMES + WATSON I THINK THAT WE SHALL ACCOMPANY DOCTOR HUXTABLE BACK TO THE NORTH OF ENGLAND + AND NOW DOCTOR HUXTABLE WHEN YOU HAVE CONSUMED THAT MILK YOU WILL KINDLY TELL ME WHAT HAS HAPPENED WHEN IT HAPPENED HOW IT HAPPENED AND FINALLY WHAT DOCTOR THORNEYCROFT HUXTABLE OF THE PRIORY SCHOOL NEAR MACKLETON HAS TO DO WITH THE MATTER AND WHY HE COMES THREE DAYS AFTER AN EVENT THE STATE OF YOUR CHIN GIVES THE DATE TO ASK FOR MY HUMBLE SERVICES + OUR VISITOR HAD CONSUMED HIS MILK AND BISCUITS + THE LIGHT HAD COME BACK TO HIS EYES AND THE COLOUR TO HIS CHEEKS AS HE SET HIMSELF WITH GREAT VIGOUR AND LUCIDITY TO EXPLAIN THE SITUATION + QUOTE I MUST INFORM YOU GENTLEMEN THAT THE PRIORY IS A PREPARATORY SCHOOL OF WHICH I AM THE FOUNDER AND PRINCIPAL + HUXTABLE'S SIDELIGHTS ON HORACE MAY POSSIBLY RECALL MY NAME TO YOUR MEMORIES + THE PRIORY IS WITHOUT EXCEPTION THE BEST AND MOST SELECT PREPARATORY SCHOOL IN ENGLAND + LORD LEVERSTOKE THE EARL OF BLACKWATER SIR CATHCART SOAMES THEY ALL HAVE INTRUSTED THEIR SONS TO ME + BUT I FELT THAT MY SCHOOL HAD REACHED ITS ZENITH WHEN THREE WEEKS AGO THE DUKE OF HOLDERNESSE SENT MR. JAMES WILDER HIS SECRETARY WITH THE INTIMATION THAT YOUNG LORD SALTIRE TEN YEARS OLD HIS ONLY SON AND HEIR WAS ABOUT TO BE COMMITTED TO MY CHARGE + LITTLE DID I THINK THAT THIS WOULD BE THE PRELUDE TO THE MOST CRUSHING MISFORTUNE OF MY LIFE + ON MAY FIRST THE BOY ARRIVED THAT BEING THE BEGINNING OF THE SUMMER TERM + HE WAS A CHARMING YOUTH AND HE SOON FELL INTO OUR WAYS + I MAY TELL YOU I TRUST THAT I AM NOT INDISCREET BUT HALF CONFIDENCES ARE ABSURD IN SUCH A CASE THAT HE WAS NOT ENTIRELY HAPPY AT HOME + IT IS AN OPEN SECRET THAT THE DUKE'S MARRIED LIFE HAD NOT BEEN A PEACEFUL ONE AND THE MATTER HAD ENDED IN A SEPARATION BY MUTUAL CONSENT THE DUCHESS TAKING UP HER RESIDENCE IN THE SOUTH OF FRANCE + THIS HAD OCCURRED VERY SHORTLY BEFORE AND THE BOY'S SYMPATHIES ARE KNOWN TO HAVE BEEN STRONGLY WITH HIS MOTHER + HE MOPED AFTER HER DEPARTURE FROM HOLDERNESSE HALL AND IT WAS FOR THIS REASON THAT THE DUKE DESIRED TO SEND HIM TO MY ESTABLISHMENT + IN A FORTNIGHT THE BOY WAS QUITE AT HOME WITH US AND WAS APPARENTLY ABSOLUTELY HAPPY + HE WAS LAST SEEN ON THE NIGHT OF MAY THIRTEENTH THAT IS THE NIGHT OF LAST MONDAY + HIS ROOM WAS ON THE SECOND FLOOR AND WAS APPROACHED THROUGH ANOTHER LARGER ROOM IN WHICH TWO BOYS WERE SLEEPING + THESE BOYS SAW AND HEARD NOTHING SO THAT IT IS CERTAIN THAT YOUNG SALTIRE DID NOT PASS OUT THAT WAY + HIS WINDOW WAS OPEN AND THERE IS A STOUT IVY PLANT LEADING TO THE GROUND + WE COULD TRACE NO FOOTMARKS BELOW BUT IT IS SURE THAT THIS IS THE ONLY POSSIBLE EXIT + HIS ABSENCE WAS DISCOVERED AT SEVEN O'CLOCK ON TUESDAY MORNING + HIS BED HAD BEEN SLEPT IN + HE HAD DRESSED HIMSELF FULLY BEFORE GOING OFF IN HIS USUAL SCHOOL SUIT OF BLACK ETON JACKET AND DARK GRAY TROUSERS + THERE WERE NO SIGNS THAT ANYONE HAD ENTERED THE ROOM AND IT IS QUITE CERTAIN THAT ANYTHING IN THE NATURE OF CRIES OR A STRUGGLE WOULD HAVE BEEN HEARD SINCE CAUNTER THE ELDER BOY IN THE INNER ROOM IS A VERY LIGHT SLEEPER + WHEN LORD SALTIRE'S DISAPPEARANCE WAS DISCOVERED I AT ONCE CALLED A ROLL OF THE WHOLE ESTABLISHMENT BOYS MASTERS AND SERVANTS + IT WAS THEN THAT WE ASCERTAINED THAT LORD SALTIRE HAD NOT BEEN ALONE IN HIS FLIGHT + HEIDEGGER THE GERMAN MASTER WAS MISSING + HIS ROOM WAS ON THE SECOND FLOOR AT THE FARTHER END OF THE BUILDING FACING THE SAME WAY AS LORD SALTIRE'S + HIS BED HAD ALSO BEEN SLEPT IN BUT HE HAD APPARENTLY GONE AWAY PARTLY DRESSED SINCE HIS SHIRT AND SOCKS WERE LYING ON THE FLOOR + HE HAD UNDOUBTEDLY LET HIMSELF DOWN BY THE IVY FOR WE COULD SEE THE MARKS OF HIS FEET WHERE HE HAD LANDED ON THE LAWN + HIS BICYCLE WAS KEPT IN A SMALL SHED BESIDE THIS LAWN AND IT ALSO WAS GONE + HE HAD BEEN WITH ME FOR TWO YEARS AND CAME WITH THE BEST REFERENCES BUT HE WAS A SILENT MOROSE MAN NOT VERY POPULAR EITHER WITH MASTERS OR BOYS + NO TRACE COULD BE FOUND OF THE FUGITIVES AND NOW ON THURSDAY MORNING WE ARE AS IGNORANT AS WE WERE ON TUESDAY + INQUIRY WAS OF COURSE MADE AT ONCE AT HOLDERNESE HALL + IT IS ONLY A FEW MILES AWAY AND WE IMAGINED THAT IN SOME SUDDEN ATTACK OF HOMESICKNESS HE HAD GONE BACK TO HIS FATHER BUT NOTHING HAD BEEN HEARD OF HIM + THE DUKE IS GREATLY AGITATED AND AS TO ME YOU HAVE SEEN YOURSELVES THE STATE OF NERVOUS PROSTRATION TO WHICH THE SUSPENSE AND THE RESPONSIBILITY HAVE REDUCED ME + MR. HOLMES IF EVER YOU PUT FORWARD YOUR FULL POWERS I IMPLORE YOU TO DO SO NOW FOR NEVER IN YOUR LIFE COULD YOU HAVE A CASE WHICH IS MORE WORTHY OF THEM QUOTE + SHERLOCK HOLMES HAD LISTENED WITH THE UTMOST INTENTNESS TO THE STATEMENT OF THE UNHAPPY SCHOOLMASTER + HIS DRAWN BROWS AND THE DEEP FURROW BETWEEN THEM SHOWED THAT HE NEEDED NO EXHORTATION TO CONCENTRATE ALL HIS ATTENTION UPON A PROBLEM WHICH APART FROM THE TREMENDOUS INTERESTS INVOLVED MUST APPEAL SO DIRECTLY TO HIS LOVE OF THE COMPLEX AND THE UNUSUAL + HE NOW DREW OUT HIS NOTEBOOK AND JOTTED DOWN ONE OR TWO MEMORANDA + YOU HAVE BEEN VERY REMISS IN NOT COMING TO ME SOONER SAID HE SEVERELY + YOU START ME ON MY INVESTIGATION WITH A VERY SERIOUS HANDICAP + IT IS INCONCEIVABLE FOR EXAMPLE THAT THIS IVY AND THIS LAWN WOULD HAVE YIELDED NOTHING TO AN EXPERT OBSERVER + I AM NOT TO BLAME MR. HOLMES + HIS GRACE WAS EXTREMELY DESIROUS TO AVOID ALL PUBLIC SCANDAL + HE WAS AFRAID OF HIS FAMILY UNHAPPINESS BEING DRAGGED BEFORE THE WORLD + HE HAS A DEEP HORROR OF ANYTHING OF THE KIND + QUOTE BUT THERE HAS BEEN SOME OFFICIAL INVESTIGATION QUOTE + YES SIR AND IT HAS PROVED MOST DISAPPOINTING + AN APPARENT CLUE WAS AT ONCE OBTAINED SINCE A BOY AND A YOUNG MAN WERE REPORTED TO HAVE BEEN SEEN LEAVING A NEIGHBOURING STATION BY AN EARLY TRAIN + ONLY LAST NIGHT WE HAD NEWS THAT THE COUPLE HAD BEEN HUNTED DOWN IN LIVERPOOL AND THEY PROVE TO HAVE NO CONNECTION WHATEVER WITH THE MATTER IN HAND + THEN IT WAS THAT IN MY DESPAIR AND DISAPPOINTMENT AFTER A SLEEPLESS NIGHT I CAME STRAIGHT TO YOU BY THE EARLY TRAIN + I SUPPOSE THE LOCAL INVESTIGATION WAS RELAXED WHILE THIS FALSE CLUE WAS BEING FOLLOWED UP + IT WAS ENTIRELY DROPPED + SO THAT THREE DAYS HAVE BEEN WASTED + THE AFFAIR HAS BEEN MOST DEPLORABLY HANDLED QUOTE + I FEEL IT AND ADMIT IT + AND YET THE PROBLEM SHOULD BE CAPABLE OF ULTIMATE SOLUTION + I SHALL BE VERY HAPPY TO LOOK INTO IT + HAVE YOU BEEN ABLE TO TRACE ANY CONNECTION BETWEEN THE MISSING BOY AND THIS GERMAN MASTER + NONE AT ALL + WAS HE IN THE MASTER'S CLASS + QUOTE NO HE NEVER EXCHANGED A WORD WITH HIM SO FAR AS I KNOW QUOTE + THAT IS CERTAINLY VERY SINGULAR + HAD THE BOY A BICYCLE + NUMBER + WAS ANY OTHER BICYCLE MISSING + NUMBER + QUOTE IS THAT CERTAIN QUOTE + QUITE + WELL NOW YOU DO NOT MEAN TO SERIOUSLY SUGGEST THAT THIS GERMAN RODE OFF UPON A BICYCLE IN THE DEAD OF THE NIGHT BEARING THE BOY IN HIS ARMS + CERTAINLY NOT + THEN WHAT IS THE THEORY IN YOUR MIND + THE BICYCLE MAY HAVE BEEN A BLIND + IT MAY HAVE BEEN HIDDEN SOMEWHERE AND THE PAIR GONE OFF ON FOOT QUOTE + QUITE SO BUT IT SEEMS RATHER AN ABSURD BLIND DOES IT NOT + WERE THERE OTHER BICYCLES IN THIS SHED + SEVERAL + WOULD HE NOT HAVE HIDDEN A COUPLE HAD HE DESIRED TO GIVE THE IDEA THAT THEY HAD GONE OFF UPON THEM + I SUPPOSE HE WOULD + QUOTE OF COURSE HE WOULD + THE BLIND THEORY WON'T DO + BUT THE INCIDENT IS AN ADMIRABLE STARTING POINT FOR AN INVESTIGATION + AFTER ALL A BICYCLE IS NOT AN EASY THING TO CONCEAL OR TO DESTROY + ONE OTHER QUESTION + DID ANYONE CALL TO SEE THE BOY ON THE DAY BEFORE HE DISAPPEARED + NUMBER + DID HE GET ANY LETTERS + YES ONE LETTER + FROM WHOM + QUOTE FROM HIS FATHER QUOTE + DO YOU OPEN THE BOYS' LETTERS + NUMBER + HOW DO YOU KNOW IT WAS FROM THE FATHER + THE COAT OF ARMS WAS ON THE ENVELOPE AND IT WAS ADDRESSED IN THE DUKE'S PECULIAR STIFF HAND + BESIDES THE DUKE REMEMBERS HAVING WRITTEN + QUOTE WHEN HAD HE A LETTER BEFORE THAT QUOTE + NOT FOR SEVERAL DAYS + HAD HE EVER ONE FROM FRANCE + NO NEVER + YOU SEE THE POINT OF MY QUESTIONS OF COURSE + EITHER THE BOY WAS CARRIED OFF BY FORCE OR HE WENT OF HIS OWN FREE WILL + IN THE LATTER CASE YOU WOULD EXPECT THAT SOME PROMPTING FROM OUTSIDE WOULD BE NEEDED TO MAKE SO YOUNG A LAD DO SUCH A THING + IF HE HAS HAD NO VISITORS THAT PROMPTING MUST HAVE COME IN LETTERS HENCE I TRY TO FIND OUT WHO WERE HIS CORRESPONDENTS + QUOTE I FEAR I CANNOT HELP YOU MUCH + HIS ONLY CORRESPONDENT SO FAR AS I KNOW WAS HIS OWN FATHER + WHO WROTE TO HIM ON THE VERY DAY OF HIS DISAPPEARANCE + WERE THE RELATIONS BETWEEN FATHER AND SON VERY FRIENDLY + HIS GRACE IS NEVER VERY FRIENDLY WITH ANYONE + HE IS COMPLETELY IMMERSED IN LARGE PUBLIC QUESTIONS AND IS RATHER INACCESSIBLE TO ALL ORDINARY EMOTIONS + BUT HE WAS ALWAYS KIND TO THE BOY IN HLS OWN WAY + QUOTE BUT THE SYMPATHIES OF THE LATTER WERE WITH THE MOTHER QUOTE + YES + DID HE SAY SO + NUMBER + THE DUKE THEN + GOOD HEAVEN NO + QUOTE THEN HOW COULD YOU KNOW QUOTE + I HAVE HAD SOME CONFIDENTIAL TALKS WITH MR. JAMES WILDER HIS GRACE'S SECRETARY + IT WAS HE WHO GAVE ME THE INFORMATION ABOUT LORD SALTIRE'S FEELINGS + I SEE + BY THE WAY THAT LAST LETTER OF THE DUKE'S WAS IT FOUND IN THE BOY'S ROOM AFTER HE WAS GONE + NO HE HAD TAKEN IT WITH HIM + I THINK MR. HOLMES IT IS TIME THAT WE WERE LEAVING FOR EUSTON QUOTE + I WILL ORDER A FOUR WHEELER + IN A QUARTER OF AN HOUR WE SHALL BE AT YOUR SERVICE + IF YOU ARE TELEGRAPHING HOME MR. HUXTABLE IT WOULD BE WELL TO ALLOW THE PEOPLE IN YOUR NEIGHBOURHOOD TO IMAGINE THAT THE INQUIRY IS STILL GOING ON IN LIVERPOOL OR WHEREVER ELSE THAT RED HERRING LED YOUR PACK + IN THE MEANTIME I WILL DO A LITTLE QUIET WORK AT YOUR OWN DOORS AND PERHAPS THE SCENT IS NOT SO COLD BUT THAT TWO OLD HOUNDS LIKE WATSON AND MYSELF MAY GET A SNIFF OF IT + THAT EVENING FOUND US IN THE COLD BRACING ATMOSPHERE OF THE PEAK COUNTRY IN WHICH DOCTOR HUXTABLE'S FAMOUS SCHOOL IS SITUATED + IT WAS ALREADY DARK WHEN WE REACHED IT + A CARD WAS LYING ON THE HALL TABLE AND THE BUTLER WHISPERED SOMETHING TO HIS MASTER WHO TURNED TO US WITH AGITATION IN EVERY HEAVY FEATURE + THE DUKE IS HERE SAID HE + THE DUKE AND MR. WILDER ARE IN THE STUDY + COME GENTLEMEN AND I WILL INTRODUCE YOU + I WAS OF COURSE FAMILIAR WITH THE PICTURES OF THE FAMOUS STATESMAN BUT THE MAN HIMSELF WAS VERY DIFFERENT FROM HIS REPRESENTATION + HE WAS A TALL AND STATELY PERSON SCRUPULOUSLY DRESSED WITH A DRAWN THIN FACE AND A NOSE WHICH WAS GROTESQUELY CURVED AND LONG + HIS COMPLEXION WAS OF A DEAD PALLOR WHICH WAS MORE STARTLING BY CONTRAST WITH A LONG DWINDLING BEARD OF VIVID RED WHICH FLOWED DOWN OVER HIS WHITE WAISTCOAT WITH HIS WATCH CHAIN GLEAMING THROUGH ITS FRINGE + SUCH WAS THE STATELY PRESENCE WHO LOOKED STONILY AT US FROM THE CENTRE OF DOCTOR HUXTABLE'S HEARTHRUG + BESIDE HIM STOOD A VERY YOUNG MAN WHOM I UNDERSTOOD TO BE WILDER THE PRIVATE SECRETARY + HE WAS SMALL NERVOUS ALERT WITH INTELLIGENT LIGHT BLUE EYES AND MOBILE FEATURES + IT WAS HE WHO AT ONCE IN AN INCISIVE AND POSITIVE TONE OPENED THE CONVERSATION + QUOTE I CALLED THIS MORNING DOCTOR HUXTABLE TOO LATE TO PREVENT YOU FROM STARTING FOR LONDON + I LEARNED THAT YOUR OBJECT WAS TO INVITE MR. SHERLOCK HOLMES TO UNDERTAKE THE CONDUCT OF THIS CASE + HIS GRACE IS SURPRISED DOCTOR HUXTABLE THAT YOU SHOULD HAVE TAKEN SUCH A STEP WITHOUT CONSULTING HIM + HIS GRACE IS BY NO MEANS CONVINCED THAT THE POLICE HAVE FAILED + BUT SURELY MR. WILDER + YOU ARE WELL AWARE DOCTOR HUXTABLE THAT HIS GRACE IS PARTICULARLY ANXIOUS TO AVOID ALL PUBLIC SCANDAL + HE PREFERS TO TAKE AS FEW PEOPLE AS POSSIBLE INTO HIS CONFIDENCE + QUOTE THE MATTER CAN BE EASILY REMEDIED QUOTE SAID THE BROWBEATEN DOCTOR QUOTE MR. SHERLOCK HOLMES CAN RETURN TO LONDON BY THE MORNING TRAIN QUOTE + HARDLY THAT DOCTOR HARDLY THAT SAID HOLMES IN HIS BLANDEST VOICE + THIS NORTHERN AIR IS INVIGORATING AND PLEASANT SO I PROPOSE TO SPEND A FEW DAYS UPON YOUR MOORS AND TO OCCUPY MY MIND AS BEST I MAY + WHETHER I HAVE THE SHELTER OF YOUR ROOF OR OF THE VILLAGE INN IS OF COURSE FOR YOU TO DECIDE + I COULD SEE THAT THE UNFORTUNATE DOCTOR WAS IN THE LAST STAGE OF INDECISION FROM WHICH HE WAS RESCUED BY THE DEEP SONOROUS VOICE OF THE RED BEARDED DUKE WHICH BOOMED OUT LIKE A DINNER GONG + I AGREE WITH MR. WILDER DOCTOR HUXTABLE THAT YOU WOULD HAVE DONE WISELY TO CONSULT ME + BUT SINCE MR. HOLMES HAS ALREADY BEEN TAKEN INTO YOUR CONFIDENCE IT WOULD INDEED BE ABSURD THAT WE SHOULD NOT AVAIL OURSELVES OF HIS SERVICES + FAR FROM GOING TO THE INN MR. HOLMES I SHOULD BE PLEASED IF YOU WOULD COME AND STAY WITH ME AT HOLDERNESSE HALL + QUOTE I THANK YOUR GRACE + FOR THE PURPOSES OF MY INVESTIGATION I THINK THAT IT WOULD BE WISER FOR ME TO REMAIN AT THE SCENE OF THE MYSTERY + JUST AS YOU LIKE MR. HOLMES + ANY INFORMATION WHICH MR. WILDER OR I CAN GIVE YOU IS OF COURSE AT YOUR DISPOSAL + IT WILL PROBABLY BE NECESSARY FOR ME TO SEE YOU AT THE HALL SAID HOLMES + I WOULD ONLY ASK YOU NOW SIR WHETHER YOU HAVE FORMED ANY EXPLANATION IN YOUR OWN MIND AS TO THE MYSTERIOUS DISAPPEARANCE OF YOUR SON + QUOTE NO SIR I HAVE NOT QUOTE + EXCUSE ME IF I ALLUDE TO THAT WHICH IS PAINFUL TO YOU. BUT I HAVE NO ALTERNATIVE + DO YOU THINK THAT THE DUCHESS HAD ANYTHING TO DO WITH THE MATTER + THE GREAT MINISTER SHOWED PERCEPTIBLE HESITATION + I DO NOT THINK SO HE SAID AT LAST + THE OTHER MOST OBVIOUS EXPLANATION IS THAT THE CHILD HAS BEEN KIDNAPPED FOR THE PURPOSE OF LEVYING RANSOM + YOU HAVE NOT HAD ANY DEMAND OF THE SORT + QUOTE NO SIR QUOTE + ONE MORE QUESTION YOUR GRACE + I UNDERSTAND THAT YOU WROTE TO YOUR SON UPON THE DAY WHEN THIS INCIDENT OCCURRED + NO I WROTE UPON THE DAY BEFORE + EXACTLY + BUT HE RECEIVED IT ON THAT DAY + QUOTE YES QUOTE + WAS THERE ANYTHING IN YOUR LETTER WHICH MIGHT HAVE UNBALANCED HIM OR INDUCED HIM TO TAKE SUCH A STEP + NO SIR CENAINLY NOT + DID YOU POST THAT LETTER YOURSELF + THE NOBLEMAN'S REPLY WAS INTERRUPTED BY HIS SECRETARY WHO BROKE IN WITH SOME HEAT + HIS GRACE IS NOT IN THE HABIT OF POSTING LETTERS HIMSELF SAID HE + THIS LETTER WAS LAID WITH OTHERS UPON THE STUDY TABLE AND I MYSELF PUT THEM IN THE POST BAG + QUOTE YOU ARE SURE THIS ONE WAS AMONG THEM QUOTE + YES I OBSERVED IT + HOW MANY LETTERS DID YOUR GRACE WRITE THAT DAY + TWENTY OR THIRTY + I HAVE A LARGE CORRESPONDENCE + BUT SURELY THIS IS SOMEWHAT IRRELEVANT + NOT ENTIRELY SAID HOLMES + QUOTE FOR MY OWN PART QUOTE THE DUKE CONTINUED QUOTE I HAVE ADVISED THE POLICE TO TURN THEIR ATTENTION TO THE SOUTH OF FRANCE + I HAVE ALREADY SAID THAT I DO NOT BELIEVE THAT THE DUCHESS WOULD ENCOURAGE SO MONSTROUS AN ACTION BUT THE LAD HAD THE MOST WRONGHEADED OPINIONS AND IT IS POSSIBLE THAT HE MAY HAVE FLED TO HER AIDED AND ABETTED BY THIS GERMAN + I THINK DOCTOR HUXTABLE THAT WE WILL NOW RETURN TO THE HALL + I COULD SEE THAT THERE WERE OTHER QUESTIONS WHICH HOLMES WOULD HAVE WISHED TO PUT BUT THE NOBLEMAN'S ABRUPT MANNER SHOWED THAT THE INTERVIEW WAS AT AN END + IT WAS EVIDENT THAT TO HIS INTENSELY ARISTOCRATIC NATURE THIS DISCUSSION OF HIS INTIMATE FAMILY AFFAIRS WITH A STRANGER WAS MOST ABHORRENT AND THAT HE FEARED LEST EVERY FRESH QUESTION WOULD THROW A FIERCER LIGHT INTO THE DISCREETLY SHADOWED CORNERS OF HIS DUCAL HISTORY + WHEN THE NOBLEMAN AND HIS SECRETARY HAD LEFT MY FRIEND FLUNG HIMSELF AT ONCE WITH CHARACTERISTIC EAGERNESS INTO THE INVESTIGATION + THE BOY'S CHAMBER WAS CAREFULLY EXAMINED AND YIELDED NOTHING SAVE THE ABSOLUTE CONVICTION THAT IT WAS ONLY THROUGH THE WINDOW THAT HE COULD HAVE ESCAPED + THE GERMAN MASTER'S ROOM AND EFFECTS GAVE NO FURTHER CLUE + IN HIS CASE A TRAILER OF IVY HAD GIVEN WAY UNDER HIS WEIGHT AND WE SAW BY THE LIGHT OF A LANTERN THE MARK ON THE LAWN WHERE HIS HEELS HAD COME DOWN + THAT ONE DINT IN THE SHORT GREEN GRASS WAS THE ONLY MATERIAL WITNESS LEFT OF THIS INEXPLICABLE NOCTURNAL FLIGHT + SHERLOCK HOLMES LEFT THE HOUSE ALONE AND ONLY RETURNED AFTER ELEVEN + HE HAD OBTAINED A LARGE ORDNANCE MAP OF THE NEIGHBOURHOOD AND THIS HE BROUGHT INTO MY ROOM WHERE HE LAID IT OUT ON THE BED AND HAVING BALANCED THE LAMP IN THE MIDDLE OF IT HE BEGAN TO SMOKE OVER IT AND OCCASIONALLY TO POINT OUT OBJECTS OF INTEREST WITH THE REEKING AMBER OF HIS PIPE + THIS CASE GROWS UPON ME WATSON SAID HE + THERE ARE DECIDEDLY SOME POINTS OF INTEREST IN CONNECTION WITH IT + IN THIS EARLY STAGE I WANT YOU TO REALIZE THOSE GEOGRAPHICAL FEATURES WHICH MAY HAVE A GOOD DEAL TO DO WITH OUR INVESTIGATION + LOOK AT THIS MAP + THIS DARK SQUARE IS THE PRIORY SCHOOL + I'LL PUT A PIN IN IT + NOW THIS LINE IS THE MAIN ROAD + YOU SEE THAT IT RUNS EAST AND WEST PAST THE SCHOOL AND YOU SEE ALSO THAT THERE IS NO SIDE ROAD FOR A MILE EITHER WAY + IF THESE TWO FOLK PASSED AWAY BY ROAD IT WAS THIS ROAD + QUOTE EXACTLY QUOTE + BY A SINGULAR AND HAPPY CHANCE WE ARE ABLE TO SOME EXTENT TO CHECK WHAT PASSED ALONG THIS ROAD DURING THE NIGHT IN QUESTION + AT THIS POINT WHERE MY PIPE IS NOW RESTING A COUNTY CONSTABLE WAS ON DUTY FROM TWELVE TO SIX + IT IS AS YOU PERCEIVE THE FIRST CROSS ROAD ON THE EAST SIDE + THIS MAN DECLARES THAT HE WAS NOT ABSENT FROM HIS POST FOR AN INSTANT AND HE IS POSITIVE THAT NEITHER BOY NOR MAN COULD HAVE GONE THAT WAY UNSEEN + I HAVE SPOKEN WITH THIS POLICEMAN TO NIGHT AND HE APPEARS TO ME TO BE A PERFECTLY RELIABLE PERSON + THAT BLOCKS THIS END + WE HAVE NOW TO DEAL WITH THE OTHER + THERE IS AN INN HERE THE RED BULL THE LANDLADY OF WHICH WAS ILL + SHE HAD SENT TO MACKLETON FOR A DOCTOR BUT HE DID NOT ARRIVE UNTIL MORNING BEING ABSENT AT ANOTHER CASE + THE PEOPLE AT THE INN WERE ALERT ALL NIGHT AWAITING HIS COMING AND ONE OR OTHER OF THEM SEEMS TO HAVE CONTINUALLY HAD AN EYE UPON THE ROAD + THEY DECLARE THAT NO ONE PASSED + IF THEIR EVIDENCE IS GOOD THEN WE ARE FORTUNATE ENOUGH TO BE ABLE TO BLOCK THE WEST AND ALSO TO BE ABLE TO SAY THAT THE FUGITIVES DID NOT USE THE ROAD AT ALL + BUT THE BICYCLE + I OBJECTED + QUITE SO + WE WILL COME TO THE BICYCLE PRESENTLY + TO CONTINUE OUR REASONING IF THESE PEOPLE DID NOT GO BY THE ROAD THEY MUST HAVE TRAVERSED THE COUNTRY TO THE NORTH OF THE HOUSE OR TO THE SOUTH OF THE HOUSE + THAT IS CERTAIN + LET US WEIGH THE ONE AGAINST THE OTHER + ON THE SOUTH OF THE HOUSE IS AS YOU PERCEIVE A LARGE DISTRICT OF ARABLE LAND CUT UP INTO SMALL FIELDS WITH STONE WALLS BETWEEN THEM + THERE I ADMIT THAT A BICYCLE IS IMPOSSIBLE + WE CAN DISMISS THE IDEA + WE TURN TO THE COUNTRY ON THE NORTH + HERE THERE LIES A GROVE OF TREES MARKED AS THE RAGGED SHAW AND ON THE FARTHER SIDE STRETCHES A GREAT ROLLING MOOR LOWER GILL MOOR EXTENDING FOR TEN MILES AND SLOPING GRADUALLY UPWARD + HERE AT ONE SIDE OF THIS WILDERNESS IS HOLDERNESSE HALL TEN MILES BY ROAD BUT ONLY SIX ACROSS THE MOOR + IT IS A PECULIARLY DESOLATE PLAIN + A FEW MOOR FARMERS HAVE SMALL HOLDINGS WHERE THEY REAR SHEEP AND CATTLE + EXCEPT THESE THE PLOVER AND THE CURLEW ARE THE ONLY INHABITANTS UNTIL YOU COME TO THE CHESTERFIELD HIGH ROAD + THERE IS A CHURCH THERE YOU SEE A FEW COTTAGES AND AN INN + BEYOND THAT THE HILLS BECOME PRECIPITOUS + SURELY IT IS HERE TO THE NORTH THAT OUR QUEST MUST LIE + QUOTE BUT THE BICYCLE QUOTE + I PERSISTED + WELL WELL SAID HOLMES IMPATIENTLY + A GOOD CYCLIST DOES NOT NEED A HIGH ROAD + THE MOOR IS INTERSECTED WITH PATHS AND THE MOON WAS AT THE FULL + HALLOA WHAT IS THIS + THERE WAS AN AGITATED KNOCK AT THE DOOR AND AN INSTANT AFTERWARDS DOCTOR HUXTABLE WAS IN THE ROOM + IN HIS HAND HE HELD A BLUE CRICKET CAP WITH A WHITE CHEVRON ON THE PEAK + AT LAST WE HAVE A CLUE HE CRIED + THANK HEAVEN AT LAST WE ARE ON THE DEAR BOY'S TRACK + IT IS HIS CAP QUOTE + WHERE WAS IT FOUND + IN THE VAN OF THE GIPSIES WHO CAMPED ON THE MOOR + THEY LEFT ON TUESDAY + TO DAY THE POLICE TRACED THEM DOWN AND EXAMINED THEIR CARAVAN + THIS WAS FOUND + HOW DO THEY ACCOUNT FOR IT + THEY SHUFFLED AND LIED SAID THAT THEY FOUND IT ON THE MOOR ON TUESDAY MORNING + THEY KNOW WHERE HE IS. THE RASCALS + THANK GOODNESS THEY ARE ALL SAFE UNDER LOCK AND KEY + EITHER THE FEAR OF THE LAW OR THE DUKE'S PURSE WILL CERTAINLY GET OUT OF THEM ALL THAT THEY KNOW QUOTE + SO FAR SO GOOD SAID HOLMES WHEN THE DOCTOR HAD AT LAST LEFT THE ROOM + IT AT LEAST BEARS OUT THE THEORY THAT IT IS ON THE SIDE OF THE LOWER GILL MOOR THAT WE MUST HOPE FOR RESULTS + THE POLICE HAVE REALLY DONE NOTHING LOCALLY SAVE THE ARREST OF THESE GIPSIES + LOOK HERE WATSON + THERE IS A WATERCOURSE ACROSS THE MOOR + YOU SEE IT MARKED HERE IN THE MAP + IN SOME PARTS IT WIDENS INTO A MORASS + THIS IS PARTICULARLY SO IN THE REGION BETWEEN HOLDERNESSE HALL AND THE SCHOOL + IT IS VAIN TO LOOK ELSEWHERE FOR TRACKS IN THIS DRY WEATHER BUT AT THAT POINT THERE IS CERTAINLY A CHANCE OF SOME RECORD BEING LEFT + I WILL CALL YOU EARLY TO MORROW MORNING AND YOU AND I WILL TRY IF WE CAN THROW SOME LITTLE LIGHT UPON THE MYSTERY + THE DAY WAS JUST BREAKING WHEN I WOKE TO FIND THE LONG THIN FORM OF HOLMES BY MY BEDSIDE + HE WAS FULLY DRESSED AND HAD APPARENTLY ALREADY BEEN OUT + I HAVE DONE THE LAWN AND THE BICYCLE SHED SAID HE + I HAVE ALSO HAD A RAMBLE THROUGH THE RAGGED SHAW + NOW WATSON THERE IS COCOA READY IN THE NEXT ROOM + I MUST BEG YOU TO HURRY FOR WE HAVE A GREAT DAY BEFORE US QUOTE + HIS EYES SHONE AND HIS CHEEK WAS FLUSHED WITH THE EXHILARATION OF THE MASTER WORKMAN WHO SEES HIS WORK LIE READY BEFORE HIM + A VERY DIFFERENT HOLMES THIS ACTIVE ALERT MAN FROM THE INTROSPECTIVE AND PALLID DREAMER OF BAKER STREET + I FELT AS I LOOKED UPON THAT SUPPLE FIGURE ALIVE WITH NERVOUS ENERGY THAT IT WAS INDEED A STRENUOUS DAY THAT AWAITED US + AND YET IT OPENED IN THE BLACKEST DISAPPOINTMENT + WITH HIGH HOPES WE STRUCK ACROSS THE PEATY RUSSET MOOR INTERSECTED WITH A THOUSAND SHEEP PATHS UNTIL WE CAME TO THE BROAD LIGHT GREEN BELT WHICH MARKED THE MORASS BETWEEN US AND HOLDERNESSE + CERTAINLY IF THE LAD HAD GONE HOMEWARD HE MUST HAVE PASSED THIS AND HE COULD NOT PASS IT WITHOUT LEAVING HIS TRACES + BUT NO SIGN OF HIM OR THE GERMAN COULD BE SEEN + WITH A DARKENING FACE MY FRIEND STRODE ALONG THE MARGIN EAGERLY OBSERVANT OF EVERY MUDDY STAIN UPON THE MOSSY SURFACE + SHEEP MARKS THERE WERE IN PROFUSION AND AT ONE PLACE SOME MILES DOWN COWS HAD LEFT THEIR TRACKS + NOTHING MORE + CHECK NUMBER ONE SAID HOLMES LOOKING GLOOMILY OVER THE ROLLING EXPANSE OF THE MOOR + THERE IS ANOTHER MORASS DOWN YONDER AND A NARROW NECK BETWEEN + HALLOA HALLOA HALLOA WHAT HAVE WE HERE + WE HAD COME ON A SMALL BLACK RIBBON OF PATHWAY + IN THE MIDDLE OF IT CLEARLY MARKED ON THE SODDEN SOIL WAS THE TRACK OF A BICYCLE + HURRAH + I CRIED + WE HAVE IT + BUT HOLMES WAS SHAKING HIS HEAD AND HIS FACE WAS PUZZLED AND EXPECTANT RATHER THAN JOYOUS + QUOTE A BICYCLE CERTAINLY BUT NOT THE BICYCLE QUOTE SAID HE + I AM FAMILIAR WITH FORTY TWO DIFFERENT IMPRESSIONS LEFT BY TYRES + THIS AS YOU PERCEIVE IS A DUNLOP WITH A PATCH UPON THE OUTER COVER + HEIDEGGER'S TYRES WERE PALMER'S LEAVING LONGITUDINAL STRIPES + AVELING THE MATHEMATICAL MASTER WAS SURE UPON THE POINT + THEREFORE IT IS NOT HEIDEGGER'S TRACK + THE BOY'S THEN + POSSIBLY IF WE COULD PROVE A BICYCLE TO HAVE BEEN IN HIS POSSESSION + BUT THIS WE HAVE UTTERLY FAILED TO DO + THIS TRACK AS YOU PERCEIVE WAS MADE BY A RIDER WHO WAS GOING FROM THE DIRECTION OF THE SCHOOL + QUOTE OR TOWARDS IT QUOTE + NO NO MY DEAR WATSON + THE MORE DEEPLY SUNK IMPRESSION IS OF COURSE THE HIND WHEEL UPON WHICH THE WEIGHT RESTS + YOU PERCEIVE SEVERAL PLACES WHERE IT HAS PASSED ACROSS AND OBLITERATED THE MORE SHALLOW MARK OF THE FRONT ONE + IT WAS UNDOUBTEDLY HEADING AWAY FROM THE SCHOOL + IT MAY OR MAY NOT BE CONNECTED WITH OUR INQUIRY BUT WE WILL FOLLOW IT BACKWARDS BEFORE WE GO ANY FARTHER + WE DID SO AND AT THE END OF A FEW HUNDRED YARDS LOST THE TRACKS AS WE EMERGED FROM THE BOGGY PORTION OF THE MOOR + FOLLOWING THE PATH BACKWARDS WE PICKED OUT ANOTHER SPOT WHERE A SPRING TRICKLED ACROSS IT + HERE ONCE AGAIN WAS THE MARK OF THE BICYCLE THOUGH NEARLY OBLITERATED BY THE HOOFS OF COWS + AFTER THAT THERE WAS NO SIGN BUT THE PATH RAN RIGHT ON INTO RAGGED SHAW THE WOOD WHICH BACKED ON TO THE SCHOOL + FROM THIS WOOD THE CYCLE MUST HAVE EMERGED + HOLMES SAT DOWN ON A BOULDER AND RESTED HIS CHIN IN HIS HANDS + I HAD SMOKED TWO CIGARETTES BEFORE HE MOVED + WELL WELL SAID HE AT LAST + IT IS OF COURSE POSSIBLE THAT A CUNNING MAN MIGHT CHANGE THE TYRES OF HIS BICYCLE IN ORDER TO LEAVE UNFAMILIAR TRACKS + A CRIMINAL WHO WAS CAPABLE OF SUCH A THOUGHT IS A MAN WHOM I SHOULD BE PROUD TO DO BUSINESS WITH + WE WILL LEAVE THIS QUESTION UNDECIDED AND HARK BACK TO OUR MORASS AGAIN FOR WE HAVE LEFT A GOOD DEAL UNEXPLORED + WE CONTINUED OUR SYSTEMATIC SURVEY OF THE EDGE OF THE SODDEN PORTION OF THE MOOR AND SOON OUR PERSEVERANCE WAS GLORIOUSLY REWARDED + RIGHT ACROSS THE LOWER PART OF THE BOG LAY A MIRY PATH + HOLMES GAVE A CRY OF DELIGHT AS HE APPROACHED IT + AN IMPRESSION LIKE A FINE BUNDLE OF TELEGRAPH WIRES RAN DOWN THE CENTRE OF IT + IT WAS THE PALMER TYRES + QUOTE HERE IS HERR HEIDEGGER SURE ENOUGH QUOTE CRIED HOLMES EXULTANTLY + MY REASONING SEEMS TO HAVE BEEN PRETTY SOUND WATSON + I CONGRATULATE YOU + BUT WE HAVE A LONG WAY STILL TO GO + KINDLY WALK CLEAR OF THE PATH + NOW LET US FOLLOW THE TRAIL + I FEAR THAT IT WILL NOT LEAD VERY FAR + WE FOUND HOWEVER AS WE ADVANCED THAT THIS PORTION OF THE MOOR IS INTERSECTED WITH SOFT PATCHES AND THOUGH WE FREQUENTLY LOST SIGHT OF THE TRACK WE ALWAYS SUCCEEDED IN PICKING IT UP ONCE MORE + DO YOU OBSERVE SAID HOLMES THAT THE RIDER IS NOW UNDOUBTEDLY FORCING THE PACE + THERE CAN BE NO DOUBT OF IT + LOOK AT THIS IMPRESSION WHERE YOU GET BOTH TYRES CLEAR + THE ONE IS AS DEEP AS THE OTHER + THAT CAN ONLY MEAN THAT THE RIDER IS THROWING HIS WEIGHT ON TO THE HANDLE BAR AS A MAN DOES WHEN HE IS SPRINTING + BY JOVE HE HAS HAD A FALL QUOTE + THERE WAS A BROAD IRREGULAR SMUDGE COVERING SOME YARDS OF THE TRACK + THEN THERE WERE A FEW FOOTMARKS AND THE TYRES REAPPEARED ONCE MORE + A SIDE SLIP I SUGGESTED + HOLMES HELD UP A CRUMPLED BRANCH OF FLOWERING GORSE + TO MY HORROR I PERCEIVED THAT THE YELLOW BLOSSOMS WERE ALL DABBLED WITH CRIMSON + ON THE PATH TOO AND AMONG THE HEATHER WERE DARK STAINS OF CLOTTED BLOOD + BAD SAID HOLMES + BAD + STAND CLEAR WATSON + NOT AN UNNECESSARY FOOTSTEP + WHAT DO I READ HERE + HE FELL WOUNDED HE STOOD UP HE REMOUNTED HE PROCEEDED + BUT THERE IS NO OTHER TRACK + CATTLE ON THIS SIDE PATH + HE WAS SURELY NOT GORED BY A BULL + IMPOSSIBLE + BUT I SEE NO TRACES OF ANYONE ELSE + WE MUST PUSH ON WATSON + SURELY WITH STAINS AS WELL AS THE TRACK TO GUIDE US HE CANNOT ESCAPE US NOW + OUR SEARCH WAS NOT A VERY LONG ONE + THE TRACKS OF THE TYRE BEGAN TO CURVE FANTASTICALLY UPON THE WET AND SHINING PATH + SUDDENLY AS I LOOKED AHEAD THE GLEAM OF METAL CAUGHT MY EYE FROM AMID THE THICK GORSE BUSHES + OUT OF THEM WE DRAGGED A BICYCLE PALMER TYRED ONE PEDAL BENT AND THE WHOLE FRONT OF IT HORRIBLY SMEARED AND SLOBBERED WITH BLOOD + ON THE OTHER SIDE OF THE BUSHES A SHOE WAS PROJECTING + WE RAN ROUND AND THERE LAY THE UNFORTUNATE RIDER + HE WAS A TALL MAN FULL BEARDED WITH SPECTACLES ONE GLASS OF WHICH HAD BEEN KNOCKED OUT + THE CAUSE OF HIS DEATH WAS A FRIGHTFUL BLOW UPON THE HEAD WHICH HAD CRUSHED IN PART OF HIS SKULL + THAT HE COULD HAVE GONE ON AFTER RECEIVING SUCH AN INJURY SAID MUCH FOR THE VITALITY AND COURAGE OF THE MAN + HE WORE SHOES BUT NO SOCKS AND HIS OPEN COAT DISCLOSED A NIGHTSHIRT BENEATH IT + IT WAS UNDOUBTEDLY THE GERMAN MASTER + HOLMES TURNED THE BODY OVER REVERENTLY AND EXAMINED IT WITH GREAT ATTENTION + HE THEN SAT IN DEEP THOUGHT FOR A TIME AND I COULD SEE BY HIS RUFFLED BROW THAT THIS GRIM DISCOVERY HAD NOT IN HIS OPINION ADVANCED US MUCH IN OUR INQUIRY + IT IS A LITTLE DIFFICULT TO KNOW WHAT TO DO WATSON SAID HE AT LAST + QUOTE MY OWN INCLINATIONS ARE TO PUSH THIS INQUIRY ON FOR WE HAVE ALREADY LOST SO MUCH TIME THAT WE CANNOT AFFORD TO WASTE ANOTHER HOUR + ON THE OTHER HAND WE ARE BOUND TO INFORM THE POLICE OF THE DISCOVERY AND TO SEE THAT THIS POOR FELLOW'S BODY IS LOOKED AFTER + I COULD TAKE A NOTE BACK + BUT I NEED YOUR COMPANY AND ASSISTANCE + WAIT A BIT + THERE IS A FELLOW CUTTING PEAT UP YONDER + BRING HIM OVER HERE AND HE WILL GUIDE THE POLICE + I BROUGHT THE PEASANT ACROSS AND HOLMES DISPATCHED THE FRIGHTENED MAN WITH A NOTE TO DOCTOR HUXTABLE + NOW WATSON SAID HE WE HAVE PICKED UP TWO CLUES THIS MORNING + ONE IS THE BICYCLE WITH THE PALMER TYRE AND WE SEE WHAT THAT HAS LED TO + THE OTHER IS THE BICYCLE WITH THE PATCHED DUNLOP + BEFORE WE START TO INVESTIGATE THAT LET US TRY TO REALIZE WHAT WE DO KNOW SO AS TO MAKE THE MOST OF IT AND TO SEPARATE THE ESSENTIAL FROM THE ACCIDENTAL QUOTE + FIRST OF ALL I WISH TO IMPRESS UPON YOU THAT THE BOY CERTAINLY LEFT OF HIS OWN FREE WILL + HE GOT DOWN FROM HIS WINDOW AND HE WENT OFF EITHER ALONE OR WITH SOMEONE + THAT IS SURE + I ASSENTED + WELL NOW LET US TURN TO THIS UNFORTUNATE GERMAN MASTER + THE BOY WAS FULLY DRESSED WHEN HE FLED + THEREFORE HE FORESAW WHAT HE WOULD DO + BUT THE GERMAN WENT WITHOUT HIS SOCKS + HE CERTAINLY ACTED ON VERY SHORT NOTICE + UNDOUBTEDLY + QUOTE WHY DID HE GO + BECAUSE FROM HIS BEDROOM WINDOW HE SAW THE FLIGHT OF THE BOY BECAUSE HE WISHED TO OVERTAKE HIM AND BRING HIM BACK + HE SEIZED HIS BICYCLE PURSUED THE LAD AND IN PURSUING HIM MET HIS DEATH + SO IT WOULD SEEM + NOW I COME TO THE CRITICAL PART OF MY ARGUMENT + THE NATURAL ACTION OF A MAN IN PURSUING A LITTLE BOY WOULD BE TO RUN AFTER HIM + HE WOULD KNOW THAT HE COULD OVERTAKE HIM + BUT THE GERMAN DOES NOT DO SO + HE TURNS TO HIS BICYCLE + I AM TOLD THAT HE WAS AN EXCELLENT CYCLIST + HE WOULD NOT DO THIS IF HE DID NOT SEE THAT THE BOY HAD SOME SWIFT MEANS OF ESCAPE + THE OTHER BICYCLE + QUOTE LET US CONTINUE OUR RECONSTRUCTION + HE MEETS HIS DEATH FIVE MILES FROM THE SCHOOL NOT BY A BULLET MARK YOU WHICH EVEN A LAD MIGHT CONCEIVABLY DISCHARGE BUT BY A SAVAGE BLOW DEALT BY A VIGOROUS ARM + THE LAD THEN HAD A COMPANION IN HIS FLIGHT + AND THE FLIGHT WAS A SWIFT ONE SINCE IT TOOK FIVE MILES BEFORE AN EXPERT CYCLIST COULD OVERTAKE THEM + YET WE SURVEY THE GROUND ROUND THE SCENE OF THE TRAGEDY + WHAT DO WE FIND + A FEW CATTLETRACKS NOTHING MORE + I TOOK A WIDE SWEEP ROUND AND THERE IS NO PATH WITHIN FIFTY YARDS + ANOTHER CYCLIST COULD HAVE HAD NOTHING TO DO WITH THE ACTUAL MURDER NOR WERE THERE ANY HUMAN FOOTMARKS + HOLMES I CRIED THIS IS IMPOSSIBLE + ADMIRABLE HE SAID + A MOST ILLUMINATING REMARK + IT IS IMPOSSIBLE AS I STATE IT AND THEREFORE I MUST IN SOME RESPECT HAVE STATED IT WRONG + YET YOU SAW FOR YOURSELF + CAN YOU SUGGEST ANY FALLACY + QUOTE HE COULD NOT HAVE FRACTURED HIS SKULL IN A FALL QUOTE + IN A MORASS WATSON + I AM AT MY WIT'S END + TUT TUT WE HAVE SOLVED SOME WORSE PROBLEMS + AT LEAST WE HAVE PLENTY OF MATERIAL IF WE CAN ONLY USE IT + COME THEN AND HAVING EXHAUSTED THE PALMER LET US SEE WHAT THE DUNLOP WITH THE PATCHED COVER HAS TO OFFER US + WE PICKED UP THE TRACK AND FOLLOWED IT ONWARD FOR SOME DISTANCE BUT SOON THE MOOR ROSE INTO A LONG HEATHER TUFTED CURVE AND WE LEFT THE WATERCOURSE BEHIND US + NO FURTHER HELP FROM TRACKS COULD BE HOPED FOR + AT THE SPOT WHERE WE SAW THE LAST OF THE DUNLOP TYRE IT MIGHT EQUALLY HAVE LED TO HOLDERNESSE HALL THE STATELY TOWERS OF WHICH ROSE SOME MILES TO OUR LEFT OR TO A LOW GRAY VILLAGE WHICH LAY IN FRONT OF US AND MARKED THE POSITION OF THE CHESTERFIELD HIGH ROAD + AS WE APPROACHED THE FORBIDDING AND SQUALID INN WITH THE SIGN OF A GAME COCK ABOVE THE DOOR HOLMES GAVE A SUDDEN GROAN AND CLUTCHED ME BY THE SHOULDER TO SAVE HIMSELF FROM FALLING + HE HAD HAD ONE OF THOSE VIOLENT STRAINS OF THE ANKLE WHICH LEAVE A MAN HELPLESS + WITH DIFFICULTY HE LIMPED UP TO THE DOOR WHERE A SQUAT DARK ELDERLY MAN WAS SMOKING A BLACK CLAY PIPE + HOW ARE YOU MR. REUBEN HAYES SAID HOLMES + QUOTE WHO ARE YOU AND HOW DO YOU GET MY NAME SO PAT QUOTE THE COUNTRYMAN ANSWERED WITH A SUSPICIOUS FLASH OF A PAIR OF CUNNING EYES + WELL IT'S PRINTED ON THE BOARD ABOVE YOUR HEAD + IT'S EASY TO SEE A MAN WHO IS MASTER OF HIS OWN HOUSE + I SUPPOSE YOU HAVEN'T SUCH A THING AS A CARRIAGE IN YOUR STABLES + NO I HAVE NOT + I CAN HARDLY PUT MY FOOT TO THE GROUND + DON'T PUT IT TO THE GROUND + QUOTE BUT I CAN'T WALK QUOTE + WELL THEN HOP + MR. REUBEN HAYES'S MANNER WAS FAR FROM GRACIOUS BUT HOLMES TOOK IT WITH ADMIRABLE GOOD HUMOUR + LOOK HERE MY MAN SAID HE + THIS IS REALLY RATHER AN AWKWARD FIX FOR ME + I DON'T MIND HOW I GET ON + NEITHER DO I SAID THE MOROSE LANDLORD + QUOTE THE MATTER IS VERY IMPORTANT + I WOULD OFFER YOU A SOVEREIGN FOR THE USE OF A BICYCLE + THE LANDLORD PRICKED UP HIS EARS + WHERE DO YOU WANT TO GO + TO HOLDERNESSE HALL + PALS OF THE DOOK I SUPPOSE SAID THE LANDLORD SURVEYING OUR MUD STAINED GARMENTS WITH IRONICAL EYES + HOLMES LAUGHED GOOD NATUREDLY + HE'LL BE GLAD TO SEE US ANYHOW + QUOTE WHY QUOTE + BECAUSE WE BRING HIM NEWS OF HIS LOST SON + THE LANDLORD GAVE A VERY VISIBLE START + WHAT YOU'RE ON HIS TRACK + HE HAS BEEN HEARD OF IN LIVERPOOL + THEY EXPECT TO GET HIM EVERY HOUR + AGAIN A SWIFT CHANGE PASSED OVER THE HEAVY UNSHAVEN FACE + HIS MANNER WAS SUDDENLY GENIAL + I'VE LESS REASON TO WISH THE DOOK WELL THAN MOST MEN SAID HE FOR I WAS HIS HEAD COACHMAN ONCE AND CRUEL BAD HE TREATED ME + IT WAS HIM THAT SACKED ME WITHOUT A CHARACTER ON THE WORD OF A LYING CORN CHANDLER + BUT I'M GLAD TO HEAR THAT THE YOUNG LORD WAS HEARD OF IN LIVERPOOL AND I'LL HELP YOU TO TAKE THE NEWS TO THE HALL QUOTE + THANK YOU SAID HOLMES + WE'LL HAVE SOME FOOD FIRST + THEN YOU CAN BRING ROUND THE BICYCLE + I HAVEN'T GOT A BICYCLE + HOLMES HELD UP A SOVEREIGN + I TELL YOU MAN THAT I HAVEN'T GOT ONE + I'LL LET YOU HAVE TWO HORSES AS FAR AS THE HALL QUOTE + WELL WELL SAID HOLMES WE'LL TALK ABOUT IT WHEN WE'VE HAD SOMETHING TO EAT + WHEN WE WERE LEFT ALONE IN THE STONE FLAGGED KITCHEN IT WAS ASTONISHING HOW RAPIDLY THAT SPRAINED ANKLE RECOVERED + IT WAS NEARLY NIGHTFALL AND WE HAD EATEN NOTHING SINCE EARLY MORNING SO THAT WE SPENT SOME TIME OVER OUR MEAL + HOLMES WAS LOST IN THOUGHT AND ONCE OR TWICE HE WALKED OVER TO THE WINDOW AND STARED EARNESTLY OUT + IT OPENED ON TO A SQUALID COURTYARD + IN THE FAR CORNER WAS A SMITHY WHERE A GRIMY LAD WAS AT WORK + ON THE OTHER SIDE WERE THE STABLES + HOLMES HAD SAT DOWN AGAIN AFTER ONE OF THESE EXCURSIONS WHEN HE SUDDENLY SPRANG OUT OF HIS CHAIR WITH A LOUD EXCLAMATION + BY HEAVEN WATSON I BELIEVE THAT I'VE GOT IT HE CRIED + YES YES IT MUST BE SO + WATSON DO YOU REMEMBER SEEING ANY COW TRACKS TO DAY + YES SEVERAL + QUOTE WHERE QUOTE + WELL EVERYWHERE + THEY WERE AT THE MORASS AND AGAIN ON THE PATH AND AGAIN NEAR WHERE POOR HEIDEGGER MET HIS DEATH + EXACTLY + WELL NOW WATSON HOW MANY COWS DID YOU SEE ON THE MOOR + I DON'T REMEMBER SEEING ANY + QUOTE STRANGE WATSON THAT WE SHOULD SEE TRACKS ALL ALONG OUR LINE BUT NEVER A COW ON THE WHOLE MOOR + VERY STRANGE WATSON EH + YES IT IS STRANGE + NOW WATSON MAKE AN EFFORT THROW YOUR MIND BACK + CAN YOU SEE THOSE TRACKS UPON THE PATH + YES I CAN + QUOTE CAN YOU RECALL THAT THE TRACKS WERE SOMETIMES LIKE THAT WATSON QUOTE HE ARRANGED A NUMBER OF BREAD CRUMBS IN THIS FASHION QUOTE AND SOMETIMES LIKE THIS QUOTE QUOTE AND OCCASIONALLY LIKE THIS QUOTE QUOTE CAN YOU REMEMBER THAT QUOTE + NO I CANNOT + BUT I CAN + I COULD SWEAR TO IT + HOWEVER WE WILL GO BACK AT OUR LEISURE AND VERIFY IT + WHAT A BLIND BEETLE I HAVE BEEN NOT TO DRAW MY CONCLUSION + AND WHAT IS YOUR CONCLUSION + ONLY THAT IT IS A REMARKABLE COW WHICH WALKS CANTERS AND GALLOPS + BY GEORGE + WATSON IT WAS NO BRAIN OF A COUNTRY PUBLICAN THAT THOUGHT OUT SUCH A BLIND AS THAT + THE COAST SEEMS TO BE CLEAR SAVE FOR THAT LAD IN THE SMITHY + LET US SLIP OUT AND SEE WHAT WE CAN SEE QUOTE + THERE WERE TWO ROUGH HAIRED UNKEMPT HORSES IN THE TUMBLEDOWN STABLE + HOLMES RAISED THE HIND LEG OF ONE OF THEM AND LAUGHED ALOUD + OLD SHOES BUT NEWLY SHOD OLD SHOES BUT NEW NAILS + THIS CASE DESERVES TO BE A CLASSIC + LET US GO ACROSS TO THE SMITHY + THE LAD CONTINUED HIS WORK WITHOUT REGARDING US + I SAW HOLMES'S EYE DARTING TO RIGHT AND LEFT AMONG THE LITTER OF IRON AND WOOD WHICH WAS SCATTERED ABOUT THE FLOOR + SUDDENLY HOWEVER WE HEARD A STEP BEHIND US AND THERE WAS THE LANDLORD HIS HEAVY EYEBROWS DRAWN OVER HIS SAVAGE EYES HIS SWARTHY FEATURES CONVULSED WITH PASSION + HE HELD A SHORT METAL HEADED STICK IN HIS HAND AND HE ADVANCED IN SO MENACING A FASHION THAT I WAS RIGHT GLAD TO FEEL THE REVOLVER IN MY POCKET + YOU INFERNAL SPIES THE MAN CRIED + WHAT ARE YOU DOING THERE + WHY MR. REUBEN HAYES SAID HOLMES COOLLY ONE MIGHT THINK THAT YOU WERE AFRAID OF OUR FINDING SOMETHING OUT + THE MAN MASTERED HIMSELF WITH A VIOLENT EFFORT AND HIS GRIM MOUTH LOOSENED INTO A FALSE LAUGH WHICH WAS MORE MENACING THAN HIS FROWN + QUOTE YOU'RE WELCOME TO ALL YOU CAN FIND OUT IN MY SMITHY QUOTE SAID HE + BUT LOOK HERE MISTER I DON'T CARE FOR FOLK POKING ABOUT MY PLACE WITHOUT MY LEAVE SO THE SOONER YOU PAY YOUR SCORE AND GET OUT OF THIS THE BETTER I SHALL BE PLEASED + ALL RIGHT MR. HAYES NO HARM MEANT SAID HOLMES + WE HAVE BEEN HAVING A LOOK AT YOUR HORSES BUT I THINK I'LL WALK AFTER ALL + IT'S NOT FAR I BELIEVE + NOT MORE THAN TWO MILES TO THE HALL GATES + THAT'S THE ROAD TO THE LEFT QUOTE + HE WATCHED US WITH SULLEN EYES UNTIL WE HAD LEFT HIS PREMISES + WE DID NOT GO VERY FAR ALONG THE ROAD FOR HOLMES STOPPED THE INSTANT THAT THE CURVE HID US FROM THE LANDLORD'S VIEW + WE WERE WARM AS THE CHILDREN SAY AT THAT INN SAID HE + I SEEM TO GROW COLDER EVERY STEP THAT I TAKE AWAY FROM IT + NO NO I CAN'T POSSIBLY LEAVE IT + I AM CONVINCED SAID I THAT THIS REUBEN HAYES KNOWS ALL ABOUT IT + A MORE SELF EVIDENT VILLAIN I NEVER SAW + QUOTE OH HE IMPRESSED YOU IN THAT WAY DID HE + THERE ARE THE HORSES THERE IS THE SMITHY + YES IT IS AN INTERESTING PLACE THIS FIGHTING COCK + I THINK WE SHALL HAVE ANOTHER LOOK AT IT IN AN UNOBTRUSIVE WAY + A LONG SLOPING HILLSIDE DOTTED WITH GRAY LIMESTONE BOULDERS STRETCHED BEHIND US + WE HAD TURNED OFF THE ROAD AND WERE MAKING OUR WAY UP THE HILL WHEN LOOKING IN THE DIRECTION OF HOLDEMESSE HALL I SAW A CYCLIST COMING SWIFTLY ALONG + GET DOWN WATSON CRIED HOLMES WITH A HEAVY HAND UPON MY SHOULDER + WE HAD HARDLY SUNK FROM VIEW WHEN THE MAN FLEW PAST US ON THE ROAD + AMID A ROLLING CLOUD OF DUST I CAUGHT A GLIMPSE OF A PALE AGITATED FACE A FACE WITH HORROR IN EVERY LINEAMENT THE MOUTH OPEN THE EYES STARING WILDLY IN FRONT + IT WAS LIKE SOME STRANGE CARICATURE OF THE DAPPER JAMES WILDER WHOM WE HAD SEEN THE NIGHT BEFORE + THE DUKE'S SECRETARY CRIED HOLMES + COME WATSON LET US SEE WHAT HE DOES + WE SCRAMBLED FROM ROCK TO ROCK UNTIL IN A FEW MOMENTS WE HAD MADE OUR WAY TO A POINT FROM WHICH WE COULD SEE THE FRONT DOOR OF THE INN + WILDER'S BICYCLE WAS LEANING AGAINST THE WALL BESIDE IT + NO ONE WAS MOVING ABOUT THE HOUSE NOR COULD WE CATCH A GLIMPSE OF ANY FACES AT THE WINDOWS + SLOWLY THE TWILIGHT CREPT DOWN AS THE SUN SANK BEHIND THE HIGH TOWERS OF HOLDEMESSE HALL + THEN IN THE GLOOM WE SAW THE TWO SIDE LAMPS OF A TRAP LIGHT UP IN THE STABLE YARD OF THE INN AND SHORTLY AFTERWARDS HEARD THE RATTLE OF HOOFS AS IT WHEELED OUT INTO THE ROAD AND TORE OFF AT A FURIOUS PACE IN THE DIRECTION OF CHESTERFIELD + WHAT DO YOU MAKE OF THAT WATSON + HOLMES WHISPERED + QUOTE IT LOOKS LIKE A FLIGHT QUOTE + A SINGLE MAN IN A DOG CART SO FAR AS I COULD SEE + WELL IT CEDRTNAINLY WAS NOT MR. JAMES WILDER FOR THERE HE IS AT THE DOOR + A RED SQUARE OF LIGHT HAD SPRUNG OUT OF THE DARKNESS + IN THE MIDDLE OF IT WAS THE BLACK FIGURE OF THE SECRETARY HIS HEAD ADVANCED PEERING OUT INTO THE NIGHT + IT WAS EVIDENT THAT HE WAS EXPECTING SOMEONE + THEN AT LAST THERE WERE STEPS IN THE ROAD A SECOND FIGURE WAS VISIBLE FOR AN INSTANT AGAINST THE LIGHT THE DOOR SHUT AND ALL WAS BLACK ONCE MORE + FIVE MINUTES LATER A LAMP WAS LIT IN A ROOM UPON THE FIRST FLOOR + IT SEEMS TO BE A CURIOUS CLASS OF CUSTOM THAT IS DONE BY THE FIGHTING COCK SAID HOLMES + THE BAR IS ON THE OTHER SIDE + QUITE SO + THESE ARE WHAT ONE MAY CALL THE PRIVATE GUESTS + NOW WHAT IN THE WORLD IS MR. JAMES WILDER DOING IN THAT DEN AT THIS HOUR OF NIGHT AND WHO IS THE COMPANION WHO COMES TO MEET HIM THERE + COME WATSON WE MUST REALLY TAKE A RISK AND TRY TO INVESTIGATE THIS A LITTLE MORE CLOSELY QUOTE + TOGETHER WE STOLE DOWN TO THE ROAD AND CREPT ACROSS TO THE DOOR OF THE INN + THE BICYCLE STILL LEANED AGAINST THE WALL + HOLMES STRUCK A MATCH AND HELD IT TO THE BACK WHEEL AND I HEARD HIM CHUCKLE AS THE LIGHT FELL UPON A PATCHED DUNLOP TYRE + UP ABOVE US WAS THE LIGHTED WINDOW + I MUST HAVE A PEEP THROUGH THAT WATSON + IF YOU BEND YOUR BACK AND SUPPORT YOURSELF UPON THE WALL I THINK THAT I CAN MANAGE + AN INSTANT LATER HIS FEET WERE ON MY SHOULDERS BUT HE WAS HARDLY UP BEFORE HE WAS DOWN AGAIN + COME MY FRIEND SAID HE OUR DAY'S WORK HAS BEEN QUITE LONG ENOUGH + I THINK THAT WE HAVE GATHERED ALL THAT WE CAN + IT'S A LONG WALK TO THE SCHOOL AND THE SOONER WE GET STARTED THE BETTER + HE HARDLY OPENED HIS LIPS DURING THAT WEARY TRUDGE ACROSS THE MOOR NOR WOULD HE ENTER THE SCHOOL WHEN HE REACHED IT BUT WENT ON TO MACKLETON STATION WHENCE HE COULD SEND SOME TELEGRAMS + LATE AT NIGHT I HEARD HIM CONSOLING DOCTOR HUXTABLE PROSTRATED BY THE TRAGEDY OF HIS MASTER'S DEATH AND LATER STILL HE ENTERED MY ROOM AS ALEN AND VIGOROUS AS HE HAD BEEN WHEN HE STARTED IN THE MORNING + ALL GOES WELL MY FRIEND SAID HE + QUOTE I PROMISE THAT BEFORE TO MORROW EVENING WE SHALL HAVE REACHED THE SOLUTION OF THE MYSTERY QUOTE + AT ELEVEN O'CLOCK NEXT MORNING MY FRIEND AND I WERE WALKING UP THE FAMOUS YEW AVENUE OF HOLDEMESSE HALL + WE WERE USHERED THROUGH THE MAGNIFICENT ELIZABETHAN DOORWAY AND INTO HIS GRACE'S STUDY + THERE WE FOUND MR. JAMES WILDER DEMURE AND COURTLY BUT WITH SOME TRACE OF THAT WILD TERROR OF THE NIGHT BEFORE STILL LURKING IN HIS FURTIVE EYES AND IN HIS TWITCHING FEATURES + YOU HAVE COME TO SEE HIS GRACE + I AM SORRY BUT THE FACT IS THAT THE DUKE IS FAR FROM WELL + HE HAS BEEN VERY MUCH UPSET BY THE TRAGIC NEWS + WE RECEIVED A TELEGRAM FROM DOCTOR HUXTABLE YESTERDAY AFTERNOON WHICH TOLD US OF YOUR DISCOVERY + I MUST SEE THE DUKE MR. WILDER + BUT HE IS IN HIS ROOM + THEN I MUST GO TO HIS ROOM + QUOTE I BELIEVE HE IS IN HIS BED QUOTE + I WILL SEE HIM THERE + HOLMES'S COLD AND INEXORABLE MANNER SHOWED THE SECRETARY THAT IT WAS USELESS TO ARGUE WITH HIM + VERY GOOD MR. HOLMES I WILL TELL HIM THAT YOU ARE HERE + AFTER AN HOUR'S DELAY THE GREAT NOBLEMAN APPEARED + HIS FACE WAS MORE CADAVEROUS .THAN EVER HIS SHOULDERS HAD ROUNDED AND HE SEEMED TO ME TO BE AN ALTOGETHER OLDER MAN THAN HE HAD BEEN THE MORNING BEFORE + HE GREETED US WITH A STATELY COURTESY AND SEATED HIMSELF AT HIS DESK HIS RED BEARD STREAMING DOWN ON THE TABLE + WELL MR. HOLMES SAID HE + BUT MY FRIEND'S EYES WERE FIXED UPON THE SECRETARY WHO STOOD BY HIS MASTER'S CHAIR + I THINK YOUR GRACE THAT I COULD SPEAK MORE FREELY IN MR. WILDER'S ABSENCE + THE MAN TURNED A SHADE PALER AND CAST A MALIGNANT GLANCE AT HOLMES + YES YES YOU HAD BETTER GO + NOW MR. HOLMES WHAT HAVE YOU TO SAY QUOTE + MY FRIEND WAITED UNTIL THE DOOR HAD CLOSED BEHIND THE RETREATING SECRETARY + THE FACT IS YOUR GRACE SAID HE THAT MY COLLEAGUE DOCTOR WATSON AND MYSELF HAD AN ASSURANCE FROM DOCTOR HUXTABLE THAT A REWARD HAD BEEN OFFERED IN THIS CASE + I SHOULD LIKE TO HAVE THIS CONFIRMED FROM YOUR OWN LIPS + CERTAINLY MR. HOLMES + IT AMOUNTED IF I AM CORRECTLY INFORMED TO FIVE THOUSAND POUNDS TO ANYONE WHO WILL TELL YOU WHERE YOUR SON IS + EXACTLY + QUOTE AND ANOTHER THOUSAND TO THE MAN WHO WILL NAME THE PERSON OR PERSONS WHO KEEP HIM IN CUSTODY QUOTE + EXACTLY + UNDER THE LATTER HEADING IS INCLUDED NO DOUBT NOT ONLY THOSE WHO MAY HAVE TAKEN HIM AWAY BUT ALSO THOSE WHO CONSPIRE TO KEEP HIM IN HIS PRESENT POSITION + YES YES CRIED THE DUKE IMPATIENTLY + IF YOU DO YOUR WORK WELL MR. SHERLOCK HOLMES YOU WILL HAVE NO REASON TO COMPLAIN OF NIGGARDLY TREATMENT + MY FRIEND RUBBED HIS THIN HANDS TOGETHER WITH AN APPEARANCE OF AVIDITY WHICH WAS A SURPRISE TO ME WHO KNEW HIS FRUGAL TASTES + I FANCY THAT I SEE YOUR GRACE'S CHECK BOOK UPON THE TABLE SAID HE + QUOTE I SHOULD BE GLAD IF YOU WOULD MAKE ME OUT A CHECK FOR SIX THOUSAND POUNDS + IT WOULD BE AS WELL PERHAPS FOR YOU TO CROSS IT + THE CAPITAL AND COUNTIES BANK OXFORD STREET BRANCH ARE MY AGENTS + HIS GRACE SAT VERY STERN AND UPRIGHT IN HIS CHAIR AND LOOKED STONILY AT MY FRIEND + IS THIS A JOKE MR. HOLMES + IT IS HARDLY A SUBJECT FOR PLEASANTRY + NOT AT ALL YOUR GRACE + I WAS NEVER MORE EARNEST IN MY LIFE + QUOTE WHAT DO YOU MEAN THEN QUOTE + I MEAN THAT I HAVE EARNED THE REWARD + I KNOW WHERE YOUR SON IS AND I KNOW SOME AT LEAST OF THOSE WHO ARE HOLDING HIM + THE DUKE'S BEARD HAD TURNED MORE AGGRESSIVELY RED THAN EVER AGAINST HIS GHASTLY WHITE FACE + WHERE IS HE HE GASPED + HE IS OR WAS LAST NIGHT AT THE FIGHTING COCK INN ABOUT TWO MILES FROM YOUR PARK GATE + THE DUKE FELL BACK IN HIS CHAIR + AND WHOM DO YOU ACCUSE + SHERLOCK HOLMES'S ANSWER WAS AN ASTOUNDING ONE + HE STEPPED SWIFTLY FORWARD AND TOUCHED THC DUKE UPON THE SHOULDER + QUOTE I ACCUSE YOU QUOTE SAID HE + AND NOW YOUR GRACE I'LL TROUBLE YOU FOR THAT CHECK + NEVER SHALL I FORGET THE DUKE'S APPEARANCE AS HE SPRANG UP AND CLAWED WITH HIS HANDS LIKE ONE WHO IS SINKING INTO AN ABYSS + THEN WITH AN EXTRAORDINARY EFFORT OF ARISTOCRATIC SELFCOMMAND HE SAT DOWN AND SANK HIS FACE IN HIS HANDS + IT WAS SOME MINUTES BEFORE HE SPOKE + HOW MUCH DO YOU KNOW HE ASKED AT LAST WITHOUT RAISING HIS HEAD + I SAW YOU TOGETHER LAST NIGHT + DOES ANYONE ELSE BESIDE YOUR FRIEND KNOW + I HAVE SPOKEN TO NO ONE + THE DUKE TOOK A PEN IN HIS QUIVERING FINGERS AND OPENED HIS CHECK BOOK + QUOTE I SHALL BE AS GOOD AS MY WORD MR. HOLMES + I AM ABOUT TO WRITE YOUR CHECK HOWEVER UNWELCOME THE INFORMATION WHICH YOU HAVE GAINED MAY BE TO ME + WHEN THE OFFER WAS FIRST MADE I LITTLE THOUGHT THE TURN WHICH EVENTS MIGHT TAKE + BUT YOU AND YOUR FRIEND ARE MEN OF DISCRETION MR. HOLMES + I HARDLY UNDERSTAND YOUR GRACE + I MUST PUT IT PLAINLY MR. HOLMES + IF ONLY YOU TWO KNOW OF THIS INCIDENT THERE IS NO REASON WHY IT SHOULD GO ANY FARTHER + I THINK TWELVE THOUSAND POUNDS IS THE SUM THAT I OWE YOU IS IT NOT + BUT HOLMES SMILED AND SHOOK HIS HEAD + I FEAR YOUR GRACE THAT MATTERS CAN HARDLY BE ARRANGED SO EASILY + THERE IS THE DEATH OF THIS SCHOOLMASTER TO BE ACCOUNTED FOR QUOTE + BUT JAMES KNEW NOTHING OF THAT + YOU CANNOT HOLD HIM RESPONSIBLE FOR THAT + IT WAS THE WORK OF THIS BRUTAL RUFFIAN WHOM HE HAD THE MISFONUNE TO EMPLOY + I MUST TAKE THE VIEW YOUR GRACE THAT WHEN A MAN EMBARKS UPON A CRIME HE IS MORALLY GUILTY OF ANY OTHER CRIME WHICH MAY SPRING FROM IT + MORALLY MR. HOLMES + NO DOUBT YOU ARE RIGHT + BUT SURELY NOT IN THE EYES OF THE LAW + A MAN CANNOT BE CONDEMNED FOR A MURDER AT WHICH HE WAS NOT PRESENT AND WHICH HE LOATHES AND ABHORS AS MUCH AS YOU DO + THE INSTANT THAT HE HEARD OF IT HE MADE A COMPLETE CONFESSION TO ME SO FILLED WAS HE WITH HORROR AND REMORSE + HE LOST NOT AN HOUR IN BREAKING ENTIRELY WITH THE MURDERER + OH MR. HOLMES YOU MUST SAVE HIM YOU MUST SAVE HIM + I TELL YOU THAT YOU MUST SAVE HIM + THE DUKE HAD DROPPED THE LAST ATTEMPT AT SELF COMMAND AND WAS PACING THE ROOM WITH A CONVULSED FACE AND WITH HIS CLENCHED HANDS RAVING IN THE AIR + AT LAST HE MASTERED HIMSELF AND SAT DOWN ONCE MORE AT HIS DESK + QUOTE I APPRECIATE YOUR CONDUCT IN COMING HERE BEFORE YOU SPOKE TO ANYONE ELSE QUOTE SAID HE + AT LEAST WE MAY TAKE COUNSEL HOW FAR WE CAN MINIMIZE THIS HIDEOUS SCANDAL + EXACTLY SAID HOLMES + I THINK YOUR GRACE THAT THIS CAN ONLY BE DONE BY ABSOLUTE FRANKNESS BETWEEN US + I AM DISPOSED TO HELP YOUR GRACE TO THE BEST OF MY ABILITY BUT IN ORDER TO DO SO I MUST UNDERSTAND TO THE LAST DETAIL HOW THE MATTER STANDS + I REALIZE THAT YOUR WORDS APPLIED TO MR. JAMES WILDER AND THAT HE IS NOT THE MURDERER + NO THE MURDERER HAS ESCAPED + SHERLOCK HOLMES SMILED DEMURELY + QUOTE YOUR GRACE CAN HARDLY HAVE HEARD OF ANY SMALL REPUTATION WHICH I POSSESS OR YOU WOULD NOT IMAGINE THAT IT IS SO EASY TO ESCAPE ME + MR. REUBEN HAYES WAS ARRESTED AT CHESTERFIELD ON MY INFORMATION AT ELEVEN O'CLOCK LAST NIGHT + I HAD A TELEGRAM FROM THE HEAD OF THE LOCAL POLICE BEFORE I LEFT THE SCHOOL THIS MORNING + THE DUKE LEANED BACK IN HIS CHAIR AND STARED WITH AMAZEMENT AT MY FRIEND + YOU SEEM TO HAVE POWERS THAT ARE HARDLY HUMAN SAID HE + SO REUBEN HAYES IS TAKEN + I AM RIGHT GLAD TO HEAR IT IF IT WILL NOT REACT UPON THE FATE OF JAMES + YOUR SECRETARY + QUOTE NO SIR MY SON QUOTE + IT WAS HOLMES'S TURN TO LOOK ASTONISHED + I CONFESS THAT THIS IS ENTIRELY NEW TO ME YOUR GRACE + I MUST BEG YOU TO BE MORE EXPLICIT + I WILL CONCEAL NOTHING FROM YOU + I AGREE WITH YOU THAT COMPLETE FRANKNESS HOWEVER PAINFUL IT MAY BE TO ME IS THE BEST POLICY IN THIS DESPERATE SITUATION TO WHICH JAMES'S FOLLY AND JEALOUSY HAVE REDUCED US + WHEN I WAS A VERY YOUNG MAN MR. HOLMES I LOVED WITH SUCH A LOVE AS COMES ONLY ONCE IN A LIFETIME + I OFFERED THE LADY MARRIAGE BUT SHE REFUSED IT ON THE GROUNDS THAT SUCH A MATCH MIGHT MAR MY CAREER + HAD SHE LIVED + I WOULD CERTAINLY NEVER HAVE MARRIED ANYONE ELSE + SHE DIED AND LEFT THIS ONE CHILD WHOM FOR HER SAKE I HAVE CHERISHED AND CARED FOR + I COULD NOT ACKNOWLEDGE THE PATERNITY TO THE WORLD BUT I GAVE HIM THE BEST OF EDUCATIONS AND SINCE HE CAME TO MANHOOD I HAVE KEPT HIM NEAR MY PERSON + HE SURPRISED MY SECRET AND HAS PRESUMED EVER SINCE UPON THE CLAIM WHICH HE HAS UPON ME AND UPON HIS POWER OF PROVOKING A SCANDAL WHICH WOULD BE ABHORRENT TO ME + HIS PRESENCE HAD SOMETHING TO DO WITH THE UNHAPPY ISSUE OF MY MARRIAGE + ABOVE ALL HE HATED MY YOUNG LEGITIMATE HEIR FROM THE FIRST WITH A PERSISTENT HATRED + YOU MAY WELL ASK ME WHY UNDER THESE CIRCUMSTANCES I STILL KEPT JAMES UNDER MY ROOF + I ANSWER THAT IT WAS BECAUSE I COULD SEE HIS MOTHER'S FACE IN HIS AND THAT FOR HER DEAR SAKE THERE WAS NO END TO MY LONG SUFFERING + ALL HER PRETTY WAYS TOO THERE WAS NOT ONE OF THEM WHICH HE COULD NOT SUGGEST AND BRING BACK TO MY MEMORY + I COULD NOT SEND HIM AWAY + BUT I FEARED SO MUCH LEST HE SHOULD DO ARTHUR THAT IS LORD SALTIRE A MISCHIEF THAT I DISPATCHED HIM FOR SAFETY TO DOCTOR HUXTABLE'S SCHOOL + JAMES CAME INTO CONTACT WITH THIS FELLOW HAYES BECAUSE THE MAN WAS A TENANT OF MINE AND JAMES ACTED AS AGENT + THE FELLOW WAS A RASCAL FROM THE BEGINNING BUT IN SOME EXTRAORDINARY WAY JAMES BECAME INTIMATE WITH HIM + HE HAD ALWAYS A TASTE FOR LOW COMPANY + WHEN JAMES DETERMINED TO KIDNAP LORD SALTIRE IT WAS OF THIS MAN'S SERVICE THAT HE AVAILED HIMSELF + YOU REMEMBER THAT I WROTE TO ARTHUR UPON THAT LAST DAY + WELL JAMES OPENED THE LETTER AND INSERTED A NOTE ASKING ARTHUR TO MEET HIM IN A LITTLE WOOD CALLED THE RAGGED SHAW WHICH IS NEAR TO THE SCHOOL + HE USED THE DUCHESS'S NAME AND IN THAT WAY GOT THE BOY TO COME + THAT EVENING JAMES BICYCLED OVER I AM TELLING YOU WHAT HE HAS HIMSELF CONFESSED TO ME AND HE TOLD ARTHUR WHOM HE MET IN THE WOOD THAT HIS MOTHER LONGED TO SEE HIM THAT SHE WAS AWAITING HIM ON THE MOOR AND THAT IF HE WOULD COME BACK INTO THE WOOD AT MIDNIGHT HE WOULD FIND A MAN WITH A HORSE WHO WOULD TAKE HIM TO HER + POOR ARTHUR FELL INTO THE TRAP + HE CAME TO THE APPOINTMENT AND FOUND THIS FELLOW HAYES WITH A LED PONY + ARTHUR MOUNTED AND THEY SET OFF TOGETHER + IT APPEARS THOUGH THIS JAMES ONLY HEARD YESTERDAY THAT THEY WERE PURSUED THAT HAYES STRUCK THE PURSUER WITH HIS STICK AND THAT THE MAN DIED OF HIS INJURIES + HAYES BROUGHT ARTHUR TO HIS PUBLIC HOUSE THE FIGHTING COCK WHERE HE WAS CONFINED IN AN UPPER ROOM UNDER THE CARE OF MRS. HAYES WHO IS A KINDLY WOMAN BUT ENTIRELY UNDER THE CONTROL OF HER BRUTAL HUSBAND + WELL MR. HOLMES THAT WAS THE STATE OF AFFAIRS WHEN I FIRST SAW YOU TWO DAYS AGO + I HAD NO MORE IDEA OF THE TRUTH THAN YOU + YOU WILL ASK ME WHAT WAS JAMES'S MOTIVE IN DOING SUCH A DEED + I ANSWER THAT THERE WAS A GREAT DEAL WHICH WAS UNREASONING AND FANATICAL IN THE HATRED WHICH HE BORE MY HEIR + IN HIS VIEW HE SHOULD HIMSELF HAVE BEEN HEIR OF ALL MY ESTATES AND HE DEEPLY RESENTED THOSE SOCIAL LAWS WHICH MADE IT IMPOSSIBLE + AT THE SAME TIME HE HAD A DEFINITE MOTIVE ALSO + HE WAS EAGER THAT I SHOULD BREAK THE ENTAIL AND HE WAS OF OPINION THAT IT LAY IN MY POWER TO DO SO + HE INTENDED TO MAKE A BARGAIN WITH ME TO RESTORE ARTHUR IF I WOULD BREAK THE ENTAIL AND SO MAKE IT POSSIBLE FOR THE ESTATE TO BE LEFT TO HIM BY WILL + HE KNEW WELL THAT I SHOULD NEVER WILLINGLY INVOKE THE AID OF THE POLICE AGAINST HIM + I SAY THAT HE WOULD HAVE PROPOSED SUCH A BARGAIN TO ME BUT HE DID NOT ACTUALLY DO SO FOR EVENTS MOVED TOO QUICKLY FOR HIM AND HE HAD NOT TIME TO PUT HIS PLANS INTO PRACTICE + QUOTE WHAT BROUGHT ALL HIS WICKED SCHEME TO WRECK WAS YOUR DISCOVERY OF THIS MAN HEIDEGGER'S DEAD BODY + JAMES WAS SEIZED WITH HORROR AT THE NEWS + IT CAME TO US YESTERDAY AS WE SAT TOGETHER IN THIS STUDY + DOCTOR HUXTABLE HAD SENT A TELEGRAM + JAMES WAS SO OVERWHELMED WITH GRIEF AND AGITATION THAT MY SUSPICIONS WHICH HAD NEVER BEEN ENTIRELY ABSENT ROSE INSTANTLY TO A CERTAINTY AND I TAXED HIM WITH THE DEED + HE MADE A COMPLETE VOLUNTARY CONFESSION + THEN HE IMPLORED ME TO KEEP HIS SECRET FOR THREE DAYS LONGER SO AS TO GIVE HIS WRETCHED ACCOMPLICE A CHANCE OF SAVING HIS GUILTY LIFE + I YIELDED AS I HAVE ALWAYS YIELDED TO HIS PRAYERS AND INSTANTLY JAMES HURRIED OFF TO THE FIGHTING COCK TO WARN HAYES AND GIVE HIM THE MEANS OF FLIGHT + I COULD NOT GO THERE BY DAYLIGHT WITHOUT PROVOKING COMMENT BUT AS SOON AS NIGHT FELL I HURRIED OFF TO SEE MY DEAR ARTHUR + I FOUND HIM SAFE AND WELL BUT HORRIFIED BEYOND EXPRESSION BY THE DREADFUL DEED HE HAD WITNESSED + IN DEFERENCE TO MY PROMISE AND MUCH AGAINST MY WILL I CONSENTED TO LEAVE HIM THERE FOR THREE DAYS UNDER THE CHARGE OF MRS. HAYES SINCE IT WAS EVIDENT THAT IT WAS IMPOSSIBLE TO INFORM THE POLICE WHERE HE WAS WITHOUT TELLING THEM ALSO WHO WAS THE MURDERER AND I COULD NOT SEE HOW THAT MURDERER COULD BE PUNISHED WITHOUT RUIN TO MY UNFORTUNATE JAMES + YOU ASKED FOR FRANKNESS MR. HOLMES AND I HAVE TAKEN YOU AT YOUR WORD FOR I HAVE NOW TOLD YOU EVERYTHING WITHOUT AN ATTEMPT AT CIRCUMLOCUTION OR CONCEALMENT + DO YOU IN TURN BE AS FRANK WITH ME + I WILL SAID HOLMES + IN THE FIRST PLACE YOUR GRACE I AM BOUND TO TELL YOU THAT YOU HAVE PLACED YOURSELF IN A MOST SERIOUS POSITION IN THE EYES OF THE LAW + YOU HAVE CONDONED A FELONY AND YOU HAVE AIDED THE ESCAPE OF A MURDERER FOR I CANNOT DOUBT THAT ANY MONEY WHICH WAS TAKEN BY JAMES WILDER TO AID HIS ACCOMPLICE IN HIS FLIGHT CAME FROM YOUR GRACE'S PURSE + THE DUKE BOWED HIS ASSENT + THIS IS INDEED A MOST SERIOUS MATTER + EVEN MORE CULPABLE IN MY OPINION YOUR GRACE IS YOUR ATTITUDE TOWARDS YOUR YOUNGER SON + YOU LEAVE HIM IN THIS DEN FOR THREE DAYS QUOTE + WHAT ARE PROMISES TO SUCH PEOPLE AS THESE + YOU HAVE NO GUARANTEE THAT HE WILL NOT BE SPIRITED AWAY AGAIN + TO HUMOUR YOUR GUILTY OLDER SON YOU HAVE EXPOSED YOUR INNOCENT YOUNGER SON TO IMMINENT AND UNNECESSARY DANGER + IT WAS A MOST UNJUSTIFIABLE ACTION + THE PROUD LORD OF HOLDEMESSE WAS NOT ACCUSTOMED TO BE SO RATED IN HIS OWN DUCAL HALL + THE BLOOD FLUSHED INTO HIS HIGH FOREHEAD BUT HIS CONSCIENCE HELD HIM DUMB + I WILL HELP YOU BUT ON ONE CONDITION ONLY + IT IS THAT YOU RING FOR THE FOOTMAN AND LET ME GIVE SUCH ORDERS AS I LIKE + WITHOUT A WORD THE DUKE PRESSED THE ELECTRIC BELL + A SERVANT ENTERED + YOU WILL BE GLAD TO HEAR SAID HOLMES THAT YOUR YOUNG MASTER IS FOUND + IT IS THE DUKE'S DESIRE THAT THE CARRIAGE SHALL GO AT ONCE TO THE FIGHTING COCK INN TO BRING LORD SALTIRE HOME + QUOTE NOW QUOTE SAID HOLMES WHEN THE REJOICING LACKEY HAD DISAPPEARED QUOTE HAVING SECURED THE FUTURE WE CAN AFFORD TO BE MORE LENIENT WITH THE PAST + I AM NOT IN AN OFFICIAL POSITION AND THERE IS NO REASON SO LONG AS THE ENDS OF JUSTICE ARE SERVED WHY I SHOULD DISCLOSE ALL THAT I KNOW + AS TO HAYES I SAY NOTHING + THE GALLOWS AWAITS HIM AND I WOULD DO NOTHING TO SAVE HIM FROM IT + WHAT HE WILL DIVULGE I CANNOT TELL BUT I HAVE NO DOUBT THAT YOUR GRACE COULD MAKE HIM UNDERSTAND THAT IT IS TO HIS INTEREST TO BE SILENT + FROM THE POLICE POINT OF VIEW HE WILL HAVE KIDNAPPED THE BOY FOR THE PURPOSE OF RANSOM + IF THEY DO NOT THEMSELVES FIND IT OUT I SEE NO REASON WHY I SHOULD PROMPT THEM TO TAKE A BROADER POINT OF VIEW + I WOULD WARN YOUR GRACE HOWEVER THAT THE CONTINUED PRESENCE OF MR. JAMES WILDER IN YOUR HOUSEHOLD CAN ONLY LEAD TO MISFONUNE + I UNDERSTAND THAT MR. HOLMES AND IT IS ALREADY SETTLED THAT HE SHALL LEAVE ME FOREVER AND GO TO SEEK HIS FORTUNE IN AUSTRALIA + IN THAT CASE YOUR GRACE SINCE YOU HAVE YOURSELF STATED THAT ANY UNHAPPINESS IN YOUR MARRIED LIFE WAS CAUSED BY HIS PRESENCE I WOULD SUGGEST THAT YOU MAKE SUCH AMENDS AS YOU CAN TO THE DUCHESS AND THAT YOU TRY TO RESUME THOSE RELATIONS WHICH HAVE BEEN SO UNHAPPILY INTERRUPTED + THAT ALSO I HAVE ARRANGED MR. HOLMES + I WROTE TO THE DUCHESS THIS MORNING + QUOTE IN THAT CASE QUOTE SAID HOLMES RISING QUOTE I THINK THAT MY FRIEND AND I CAN CONGRATULATE OURSELVES UPON SEVERAL MOST HAPPY RESULTS FROM OUR LITTLE VISIT TO THE NORTH + THERE IS ONE OTHER SMALL POINT UPON WHICH I DESIRE SOME LIGHT + THIS FELLOW HAYES HAD SHOD HIS HORSES WITH SHOES WHICH COUNTERFEITED THE TRACKS OF COWS + WAS IT FROM MR. WILDER THAT HE LEARNED SO EXTRAORDINARY A DEVICE + THE DUKE STOOD IN THOUGHT FOR A MOMENT WITH A LOOK OF INTENSE SURPRISE ON HIS FACE + THEN HE OPENED A DOOR AND SHOWED US INTO A LARGE ROOM FURNISHED AS A MUSEUM + HE LED THE WAY TO A GLASS CASE IN A CORNER AND POINTED TO THE INSCRIPTION + THESE SHOES IT RAN WERE DUG UP IN THE MOAT OF HOLDEMESSE HALL + THEY ARE FOR THE USE OF HORSES BUT THEY ARE SHAPED BELOW WITH A CLOVEN FOOT OF IRON SO AS TO THROW PURSUERS OFF THE TRACK + THEY ARE SUPPOSED TO HAVE BELONGED TO SOME OF THE MARAUDING BARONS OF HOLDERNESSE IN THE MIDDLE AGES + HOLMES OPENED THE CASE AND MOISTENING HIS FINGER HE PASSED IT ALONG THE SHOE + A THIN FILM OF RECENT MUD WAS LEFT UPON HIS SKIN + THANK YOU SAID HE AS HE REPLACED THE GLASS + IT IS THE SECOND MOST INTERESTING OBJECT THAT I HAVE SEEN IN THE NORTH + QUOTE AND THE FIRST QUOTE + HOLMES FOLDED UP HIS CHECK AND PLACED IT CAREFULLY IN HIS NOTEBOOK + I AM A POOR MAN SAID HE AS HE PATTED IT AFFECTIONATELY AND THRUST IT INTO THE DEPTHS OF HIS INNER POCKET diff --git a/samples/LMTutorial/train/red_circle.txt b/samples/LMTutorial/train/red_circle.txt new file mode 100755 index 0000000..bcf9c1d --- /dev/null +++ b/samples/LMTutorial/train/red_circle.txt @@ -0,0 +1,581 @@ + QUOTE WELL MRS. WARREN I CANNOT SEE THAT YOU HAVE ANY PARTICULAR CAUSE FOR UNEASINESS NOR DO I UNDERSTAND WHY I WHOSE TIME IS OF SOME VALUE SHOULD INTERFERE IN THE MATTER + I REALLY HAVE OTHER THINGS TO ENGAGE ME + SO SPOKE SHERLOCK HOLMES AND TURNED BACK TO THE GREAT SCRAPBOOK IN WHICH HE WAS ARRANGING AND INDEXING SOME OF HIS RECENT MATERIAL + BUT THE LANDLADY HAD THE PERTINACITY AND ALSO THE CUNNING OF HER SEX + SHE HELD HER GROUND FIRMLY + YOU ARRANGED AN AFFAIR FOR A LODGER OF MINE LAST YEAR SHE SAID MR. FAIRDALE HOBBS + AH YES A SIMPLE MATTER + BUT HE WOULD NEVER CEASE TALKING OF IT YOUR KINDNESS SIR AND THE WAY IN WHICH YOU BROUGHT LIGHT INTO THE DARKNESS + I REMEMBERED HIS WORDS WHEN I WAS IN DOUBT AND DARKNESS MYSELF + I KNOW YOU COULD IF YOU ONLY WOULD + HOLMES WAS ACCESSIBLE UPON THE SIDE OF FLATTERY AND ALSO TO DO HIM JUSTICE UPON THE SIDE OF KINDLINESS + THE TWO FORCES MADE HIM LAY DOWN HIS GUM BRUSH WITH A SIGH OF RESIGNATION AND PUSH BACK HIS CHAIR + QUOTE WELL WELL MRS. WARREN LET US HEAR ABOUT IT THEN + YOU DON'T OBJECT TO TOBACCO I TAKE IT + THANK YOU WATSON THE MATCHES + YOU ARE UNEASY AS I UNDERSTAND BECAUSE YOUR NEW LODGER REMAINS IN HIS ROOMS AND YOU CANNOT SEE HIM + WHY BLESS YOU MRS. WARREN IF I WERE YOUR LODGER YOU OFTEN WOULD NOT SEE ME FOR WEEKS ON END + NO DOUBT SIR BUT THIS IS DIFFERENT + IT FRIGHTENS ME MR. HOLMES + I CAN'T SLEEP FOR FRIGHT + TO HEAR HIS QUICK STEP MOVING HERE AND MOVING THERE FROM EARLY MORNING TO LATE AT NIGHT AND YET NEVER TO CATCH SO MUCH AS A GLIMPSE OF HIM IT'S MORE THAN I CAN STAND + MY HUSBAND IS AS NERVOUS OVER IT AS I AM BUT HE IS OUT AT HIS WORK ALL DAY WHILE I GET NO REST FROM IT + WHAT IS HE HIDING FOR + WHAT HAS HE DONE + EXCEPT FOR THE GIRL I AM ALL ALONE IN THE HOUSE WITH HIM AND IT'S MORE THAN MY NERVES CAN STAND + HOLMES LEANED FORWARD AND LAID HIS LONG THIN FINGERS UPON THE WOMAN'S SHOULDER + HE HAD AN ALMOST HYPNOTIC POWER OF SOOTHING WHEN HE WISHED + THE SCARED LOOK FADED FROM HER EYES AND HER AGITATED FEATURES SMOOTHED INTO THEIR USUAL COMMONPLACE + SHE SAT DOWN IN THE CHAIR WHICH HE HAD INDICATED + IF I TAKE IT UP I MUST UNDERSTAND EVERY DETAIL SAID HE + TAKE TIME TO CONSIDER + THE SMALLEST POINT MAY BE THE MOST ESSENTIAL + YOU SAY THAT THE MAN CAME TEN DAYS AGO AND PAID YOU FOR A FORTNIGHT'S BOARD AND LODGING QUOTE + HE ASKED MY TERMS SIR + I SAID FIFTY SHILLINGS A WEEK + THERE IS A SMALL SITTING ROOM AND BEDROOM AND ALL COMPLETE AT THE TOP OF THE HOUSE + WELL + HE SAID I'LL PAY YOU FIVE POUNDS A WEEK IF I CAN HAVE IT ON MY OWN TERMS + I'M A POOR WOMAN SIR AND MR. WARREN EARNS LITTLE AND THE MONEY MEANT MUCH TO ME + HE TOOK OUT A TENPOUND NOTE AND HE HELD IT OUT TO ME THEN AND THERE + YOU CAN HAVE THE SAME EVERY FORTNIGHT FOR A LONG TIME TO COME IF YOU KEEP THE TERMS HE SAID + IF NOT I'LL HAVE NO MORE TO DO WITH YOU + QUOTE WHAT WERE THE TERMS QUOTE + WELL SIR THEY WERE THAT HE WAS TO HAVE A KEY OF THE HOUSE + THAT WAS ALL RIGHT + LODGERS OFTEN HAVE THEM + ALSO THAT HE WAS TO BE LEFT ENTIRELY TO HIMSELF AND NEVER UPON ANY EXCUSE TO BE DISTURBED + NOTHING WONDERFUL IN THAT SURELY + NOT IN REASON SIR + BUT THIS IS OUT OF ALL REASON + HE HAS BEEN THERE FOR TEN DAYS AND NEITHER MR. WARREN NOR I NOR THE GIRL HAS ONCE SET EYES UPON HIM + WE CAN HEAR THAT QUICK STEP OF HIS PACING UP AND DOWN UP AND DOWN NIGHT MORNING AND NOON BUT EXCEPT ON THAT FIRST NIGHT HE HAS NEVER ONCE GONE OUT OF THE HOUSE + QUOTE OH HE WENT OUT THE FIRST NIGHT DID HE QUOTE + YES SIR AND RETURNED VERY LATE AFTER WE WERE ALL IN BED + HE TOLD ME AFTER HE HAD TAKEN THE ROOMS THAT HE WOULD DO SO AND ASKED ME NOT TO BAR THE DOOR + I HEARD HIM COME UP THE STAIR AFTER MIDNIGHT + BUT HIS MEALS + IT WAS HIS PARTICULAR DIRECTION THAT WE SHOULD ALWAYS WHEN HE RANG LEAVE HIS MEAL UPON A CHAIR OUTSIDE HIS DOOR + THEN HE RINGS AGAIN WHEN HE HAS FINISHED AND WE TAKE IT DOWN FROM THE SAME CHAIR + IF HE WANTS ANYTHING ELSE HE PRINTS IT ON A SLIP OF PAPER AND LEAVES IT + QUOTE PRINTS IT QUOTE + YES SIR PRINTS IT IN PENCIL + JUST THE WORD NOTHING MORE + HERE'S ONE I BROUGHT TO SHOW YOU SOAP + HERE'S ANOTHER MATCH + THIS IS ONE HE LEFT THE FIRST MORNING DAILY GAZETTE + I LEAVE THAT PAPER WITH HIS BREAKFAST EVERY MORNING + DEAR ME WATSON SAID HOLMES STARING WITH GREAT CURIOSITY AT THE SLIPS OF FOOLSCAP WHICH THE LANDLADY HAD HANDED TO HIM THIS IS CERTAINLY A LITTLE UNUSUAL + SECLUSION I CAN UNDERSTAND BUT WHY PRINT + PRINTING IS A CLUMSY PROCESS + WHY NOT WRITE + WHAT WOULD IT SUGGEST WATSON + THAT HE DESIRED TO CONCEAL HIS HANDWRITING + QUOTE BUT WHY + WHAT CAN IT MATTER TO HIM THAT HIS LANDLADY SHOULD HAVE A WORD OF HIS WRITING + STILL IT MAY BE AS YOU SAY + THEN AGAIN WHY SUCH LACONIC MESSAGES + I CANNOT IMAGINE + IT OPENS A PLEASING FIELD FOR INTELLIGENT SPECULATION + THE WORDS ARE WRITTEN WITH A BROAD POINTED VIOLET TINTED PENCIL OF A NOT UNUSUAL PATTERN + YOU WILL OBSERVE THAT THE PAPER IS TORN AWAY AT THE SIDE HERE AFTER THE PRINTING WAS DONE SO THAT THE S. OF SOAP IS PARTLY GONE + SUGGESTIVE WATSON IS IT NOT + OF CAUTION + QUOTE EXACTLY + THERE WAS EVIDENTLY SOME MARK SOME THUMBPRINT SOMETHING WHICH MIGHT GIVE A CLUE TO THE PERSON'S IDENTITY + NOW MRS. WARREN YOU SAY THAT THE MAN WAS OF MIDDLE SIZE DARK AND BEARDED + WHAT AGE WOULD HE BE + YOUNGISH SIR NOT OVER THIRTY + WELL CAN YOU GIVE ME NO FURTHER INDICATIONS + HE SPOKE GOOD ENGLISH SIR AND YET I THOUGHT HE WAS A FOREIGNER BY HIS ACCENT + AND HE WAS WELL DRESSED + QUOTE VERY SMARTLY DRESSED SIR QUITE THE GENTLEMAN + DARK CLOTHES NOTHING YOU WOULD NOTE + HE GAVE NO NAME + NO SIR + AND HAS HAD NO LETTERS OR CALLERS + NONE + QUOTE BUT SURELY YOU OR THE GIRL ENTER HIS ROOM OF A MORNING QUOTE + NO SIR HE LOOKS AFTER HIMSELF ENTIRELY + DEAR ME THAT IS CERTAINLY REMARKABLE + WHAT ABOUT HIS LUGGAGE + HE HAD ONE BIG BROWN BAG WITH HIM NOTHING ELSE + WELL WE DON'T SEEM TO HAVE MUCH MATERIAL TO HELP US + DO YOU SAY NOTHING HAS COME OUT OF THAT ROOM ABSOLUTELY NOTHING QUOTE + THE LANDLADY DREW AN ENVELOPE FROM HER BAG FROM IT SHE SHOOK OUT TWO BURNT MATCHES AND A CIGARETTE END UPON THE TABLE + THEY WERE ON HIS TRAY THIS MORNING + I BROUGHT THEM BECAUSE I HAD HEARD THAT YOU CAN READ GREAT THINGS OUT OF SMALL ONES + HOLMES SHRUGGED HIS SHOULDERS + THERE IS NOTHING HERE SAID HE + THE MATCHES HAVE OF COURSE BEEN USED TO LIGHT CIGARETTES + THAT IS OBVIOUS FROM THE SHORTNESS OF THE BUT END + HALF THE MATCH IS CONSUMED IN LIGHTING A PIPE OR CIGAR + BUT DEAR ME THIS CIGARETTE STUB IS CERTAINLY REMARKABLE + THE GENTLEMAN WAS BEARDED AND MOUSTACHED YOU SAY + QUOTE YES SIR QUOTE + I DON'T UNDERSTAND THAT + I SHOULD SAY THAT ONLY A CLEANSHAVEN MAN COULD HAVE SMOKED THIS + WHY WATSON EVEN YOUR MODEST MOUSTACHE WOULD HAVE BEEN SINGED + A HOLDER + I SUGGESTED + NO NO THE END IS MATTED + I SUPPOSE THERE COULD NOT BE TWO PEOPLE IN YOUR ROOMS MRS. WARREN + QUOTE NO SIR + HE EATS SO LITTLE THAT I OFTEN WONDER IT CAN KEEP LIFE IN ONE + WELL I THINK WE MUST WAIT FOR A LITTLE MORE MATERIAL + AFTER ALL YOU HAVE NOTHING TO COMPLAIN OF + YOU HAVE RECEIVED YOUR RENT AND HE IS NOT A TROUBLESOME LODGER THOUGH HE IS CERTAINLY AN UNUSUAL ONE + HE PAYS YOU WELL AND IF HE CHOOSES TO LIE CONCEALED IT IS NO DIRECT BUSINESS OF YOURS + WE HAVE NO EXCUSE FOR AN INTRUSION UPON HIS PRIVACY UNTIL WE HAVE SOME REASON TO THINK THAT THERE IS A GUILTY REASON FOR IT + I'VE TAKEN UP THE MATTER AND I WON'T LOSE SIGHT OF IT + REPORT TO ME IF ANYTHING FRESH OCCURS AND RELY UPON MY ASSISTANCE IF IT SHOULD BE NEEDED + THERE ARE CERTAINLY SOME POINTS OF INTEREST IN THIS CASE WATSON HE REMARKED WHEN THE LANDLADY HAD LEFT US + IT MAY OF COURSE BE TRIVIAL INDIVIDUAL ECCENTRICITY OR IT MAY BE VERY MUCH DEEPER THAN APPEARS ON THE SURFACE + THE FIRST THING THAT STRIKES ONE IS THE OBVIOUS POSSIBILITY THAT THE PERSON NOW IN THE ROOMS MAY BE ENTIRELY DIFFERENT FROM THE ONE WHO ENGAGED THEM + QUOTE WHY SHOULD YOU THINK SO QUOTE + WELL APART FROM THIS CIGARETTE END WAS IT NOT SUGGESTIVE THAT THE ONLY TIME THE LODGER WENT OUT WAS IMMEDIATELY AFTER HIS TAKING THE ROOMS + HE CAME BACK OR SOMEONE CAME BACK WHEN ALL WITNESSES WERE OUT OF THE WAY + WE HAVE NO PROOF THAT THE PERSON WHO CAME BACK WAS THE PERSON WHO WENT OUT + THEN AGAIN THE MAN WHO TOOK THE ROOMS SPOKE ENGLISH WELL + THIS OTHER HOWEVER PRINTS MATCH WHEN IT SHOULD HAVE BEEN MATCHES + I CAN IMAGINE THAT THE WORD WAS TAKEN OUT OF A DICTIONARY WHICH WOULD GIVE THE NOUN BUT NOT THE PLURAL + THE LACONIC STYLE MAY BE TO CONCEAL THE ABSENCE OF KNOWLEDGE OF ENGLISH + YES WATSON THERE ARE GOOD REASONS TO SUSPECT THAT THERE HAS BEEN A SUBSTITUTION OF LODGERS + BUT FOR WHAT POSSIBLE END + AH THERE LIES OUR PROBLEM + THERE IS ONE RATHER OBVIOUS LINE OF INVESTIGATION + HE TOOK DOWN THE GREAT BOOK IN WHICH DAY BY DAY HE FILED THE AGONY COLUMNS OF THE VARIOUS LONDON JOURNALS + QUOTE DEAR ME QUOTE SAID HE TURNING OVER THE PAGES QUOTE WHAT A CHORUS OF GROANS CRIES AND BLEATINGS + WHAT A RAG BAG OF SINGULAR HAPPENINGS + BUT SURELY THE MOST VALUABLE HUNTING GROUND THAT EVER WAS GIVEN TO A STUDENT OF THE UNUSUAL + THIS PERSON IS ALONE AND CANNOT BE APPROACHED BY LETTER WITHOUT A BREACH OF THAT ABSOLUTE SECRECY WHICH IS DESIRED + HOW IS ANY NEWS OR ANY MESSAGE TO REACH HIM FROM WITHOUT + OBVIOUSLY BY ADVERTISEMENT THROUGH A NEWSPAPER + THERE SEEMS NO OTHER WAY AND FORTUNATELY WE NEED CONCERN OURSELVES WITH THE ONE PAPER ONLY + HERE ARE THE DAILY GAZETTE EXTRACTS OF THE LAST FORTNIGHT + LADY WITH A BLACK BOA AT PRINCE'S SKATING CLUB THAT WE MAY PASS + SURELY JIMMY WILL NOT BREAK HIS MOTHER'S HEART THAT APPEARS TO BE IRRELEVANT + IF THE LADY WHO FAINTED IN THE BRIXTON BUS' SHE DOES NOT INTEREST ME + EVERY DAY MY HEART LONGS BLEAT WATSON UNMITIGATED BLEAT + AH THIS IS A LITTLE MORE POSSIBLE + LISTEN TO THIS BE PATIENT + WILL FIND SOME SURE MEANS OF COMMUNICATION + MEANWHILE THIS COLUMN + G. THAT IS TWO DAYS AFTER MRS. WARREN'S LODGER ARRIVED + IT SOUNDS PLAUSIBLE DOES IT NOT + THE MYSTERIOUS ONE COULD UNDERSTAND ENGLISH EVEN IF HE COULD NOT PRINT IT + LET US SEE IF WE CAN PICK UP THE TRACE AGAIN + YES HERE WE ARE THREE DAYS LATER + AM MAKING SUCCESSFUL ARRANGEMENTS + PATIENCE AND PRUDENCE + THE CLOUDS WILL PASS + G. NOTHING FOR A WEEK AFTER THAT + THEN COMES SOMETHING MUCH MORE DEFINITE THE PATH IS CLEARING + IF I FIND CHANCE SIGNAL MESSAGE REMEMBER CODE AGREED ONE A TWO B. AND SO ON + YOU WILL HEAR SOON + G. THAT WAS IN YESTERDAY'S PAPER AND THERE IS NOTHING IN TO DAY'S + IT'S ALL VERY APPROPRIATE TO MRS. WARREN'S LODGER + IF WE WAIT A LITTLE WATSON I DON'T DOUBT THAT THE AFFAIR WILL GROW MORE INTELLIGIBLE + SO IT PROVED FOR IN THE MORNING I FOUND MY FRIEND STANDING ON THE HEARTHRUG WITH HIS BACK TO THE FIRE AND A SMILE OF COMPLETE SATISFACTION UPON HIS FACE + HOW'S THIS WATSON HE CRIED PICKING UP THE PAPER FROM THE TABLE HIGH RED HOUSE WITH WHITE STONE FACINGS + THIRD FLOOR + SECOND WINDOW LEFT + AFTER DUSK + G. THAT IS DEFINITE ENOUGH + I THINK AFTER BREAKFAST WE MUST MAKE A LITTLE RECONNAISSANCE OF MRS. WARREN'S NEIGHBOURHOOD + AH MRS. WARREN WHAT NEWS DO YOU BRING US THIS MORNING + OUR CLIENT HAD SUDDENLY BURST INTO THE ROOM WITH AN EXPLOSIVE ENERGY WHICH TOLD OF SOME NEW AND MOMENTOUS DEVELOPMENT + IT'S A POLICE MATTER MR. HOLMES SHE CRIED + I'LL HAVE NO MORE OF IT + HE SHALL PACK OUT OF THERE WITH HIS BAGGAGE + I WOULD HAVE GONE STRAIGHT UP AND TOLD HIM SO ONLY I THOUGHT IT WAS BUT FAIR TO YOU TO TAKE YOUR OPINION FIRST + BUT I'M AT THE END OF MY PATIENCE AND WHEN IT COMES TO KNOCKING MY OLD MAN ABOUT QUOTE + KNOCKING MR. WARREN ABOUT + USING HIM ROUGHLY ANYWAY + BUT WHO USED HIM ROUGHLY + AH THAT'S WHAT WE WANT TO KNOW + IT WAS THIS MORNING SIR + MR. WARREN IS A TIMEKEEPER AT MORTON AND WAYLIGHT'S IN TOTTENHAM COURT ROAD + HE HAS TO BE OUT OF THE HOUSE BEFORE SEVEN + WELL THIS MORNING HE HAD NOT GONE TEN PACES DOWN THE ROAD WHEN TWO MEN CAME UP BEHIND HIM THREW A COAT OVER HIS HEAD AND BUNDLED HIM INTO A CAB THAT WAS BESIDE THE CURB + THEY DROVE HIM AN HOUR AND THEN OPENED THE DOOR AND SHOT HIM OUT + HE LAY IN THE ROADWAY SO SHAKEN IN HIS WITS THAT HE NEVER SAW WHAT BECAME OF THE CAB + WHEN HE PICKED HIMSELF UP HE FOUND HE WAS ON HAMPSTEAD HEATH SO HE TOOK A BUS HOME AND THERE HE LIES NOW ON THE SOFA WHILE I CAME STRAIGHT ROUND TO TELL YOU WHAT HAD HAPPENED + QUOTE MOST INTERESTING QUOTE SAID HOLMES + DID HE OBSERVE THE APPEARANCE OF THESE MEN DID HE HEAR THEM TALK + NO HE IS CLEAN DAZED + HE JUST KNOWS THAT HE WAS LIFTED UP AS IF BY MAGIC AND DROPPED AS IF BY MAGIC + TWO AT LEAST WERE IN IT AND MAYBE THREE + AND YOU CONNECT THIS ATTACK WITH YOUR LODGER + WELL WE'VE LIVED THERE FIFTEEN YEARS AND NO SUCH HAPPENINGS EVER CAME BEFORE + I'VE HAD ENOUGH OF HIM + MONEY'S NOT EVERYTHING + I'LL HAVE HIM OUT OF MY HOUSE BEFORE THE DAY IS DONE QUOTE + WAIT A BIT MRS. WARREN + DO NOTHING RASH + I BEGIN TO THINK THAT THIS AFFAIR MAY BE VERY MUCH MORE IMPORTANT THAN APPEARED AT FIRST SIGHT + IT IS CLEAR NOW THAT SOME DANGER IS THREATENING YOUR LODGER + IT IS EQUALLY CLEAR THAT HIS ENEMIES LYING IN WAIT FOR HIM NEAR YOUR DOOR MISTOOK YOUR HUSBAND FOR HIM IN THE FOGGY MORNING LIGHT + ON DISCOVERING THEIR MISTAKE THEY RELEASED HIM + WHAT THEY WOULD HAVE DONE HAD IT NOT BEEN A MISTAKE WE CAN ONLY CONJECTURE + WELL WHAT AM I TO DO MR. HOLMES + I HAVE A GREAT FANCY TO SEE THIS LODGER OF YOURS MRS. WARREN + I DON'T SEE HOW THAT IS TO BE MANAGED UNLESS YOU BREAK IN THE DOOR + I ALWAYS HEAR HIM UNLOCK IT AS I GO DOWN THE STAIR AFTER I LEAVE THE TRAY QUOTE + HE HAS TO TAKE THE TRAY IN + SURELY WE COULD CONCEAL OURSELVES AND SEE HIM DO IT + THE LANDLADY THOUGHT FOR A MOMENT + WELL SIR THERE'S THE BOX ROOM OPPOSITE + I COULD ARRANGE A LOOKING GLASS MAYBE AND IF YOU WERE BEHIND THE DOOR + EXCELLENT SAID HOLMES + QUOTE WHEN DOES HE LUNCH QUOTE + ABOUT ONE SIR + THEN DOCTOR WATSON AND I WILL COME ROUND IN TIME + FOR THE PRESENT MRS. WARREN GOOD BYE + AT HALF PAST TWELVE WE FOUND OURSELVES UPON THE STEPS OF MRS. WARREN'S HOUSE A HIGH THIN YELLOW BRICK EDIFICE IN GREAT ORME STREET A NARROW THOROUGHFARE AT THE NORTHEAST SIDE OF THE BRITISH MUSEUM + STANDING AS IT DOES NEAR THE CORNER OF THE STREET IT COMMANDS A VIEW DOWN HOWE STREET WITH ITS MORE PRETENTIOUS HOUSES + HOLMES POINTED WITH A CHUCKLE TO ONE OF THESE A ROW OF RESIDENTIAL FLATS WHICH PROJECTED SO THAT THEY COULD NOT FAIL TO CATCH THE EYE + SEE WATSON SAID HE. HIGH RED HOUSE WITH STONE FACINGS + THERE IS THE SIGNAL STATION ALL RIGHT + WE KNOW THE PLACE AND WE KNOW THE CODE SO SURELY OUR TASK SHOULD BE SIMPLE + THERE'S A TO LET CARD IN THAT WINDOW + IT IS EVIDENTLY AN EMPTY FLAT TO WHICH THE CONFEDERATE HAS ACCESS + WELL MRS. WARREN WHAT NOW + QUOTE I HAVE IT ALL READY FOR YOU + IF YOU WILL BOTH COME UP AND LEAVE YOUR BOOTS BELOW ON THE LANDING I'LL PUT YOU THERE NOW + IT WAS AN EXCELLENT HIDING PLACE WHICH SHE HAD ARRANGED + THE MIRROR WAS SO PLACED THAT SEATED IN THE DARK WE COULD VERY PLAINLY SEE THE DOOR OPPOSITE + WE HAD HARDLY SETTLED DOWN IN IT AND MRS. WARREN LEFT US WHEN A DISTANT TINKLE ANNOUNCED THAT OUR MYSTERIOUS NEIGHBOUR HAD RUNG + PRESENTLY THE LANDLADY APPEARED WITH THE TRAY LAID IT DOWN UPON A CHAIR BESIDE THE CLOSED DOOR AND THEN TREADING HEAVILY DEPARTED + CROUCHING TOGETHER IN THE ANGLE OF THE DOOR WE KEPT OUR EYES FIXED UPON THE MIRROR + SUDDENLY AS THE LANDLADY'S FOOTSTEPS DIED AWAY THERE WAS THE CREAK OF A TURNING KEY THE HANDLE REVOLVED AND TWO THIN HANDS DARTED OUT AND LIFTED THE TRAY FROM THE CHAIR + AN INSTANT LATER IT WAS HURRIEDLY REPLACED AND I CAUGHT A GLIMPSE OF A DARK BEAUTIFUL HORRIFIED FACE GLARING AT THE NARROW OPENING OF THE BOXROOM + THEN THE DOOR CRASHED TO THE KEY TURNED ONCE MORE AND ALL WAS SILENCE + HOLMES TWITCHED MY SLEEVE AND TOGETHER WE STOLE DOWN THE STAIR + I WILL CALL AGAIN IN THE EVENING SAID HE TO THE EXPECTANT LANDLADY + I THINK WATSON WE CAN DISCUSS THIS BUSINESS BETTER IN OUR OWN QUARTERS + MY SURMISE AS YOU SAW PROVED TO BE CORRECT SAID HE SPEAKING FROM THE DEPTHS OF HIS EASY CHAIR + THERE HAS BEEN A SUBSTITUTION OF LODGERS + WHAT I DID NOT FORESEE IS THAT WE SHOULD FIND A WOMAN AND NO ORDINARY WOMAN WATSON QUOTE + SHE SAW US + WELL SHE SAW SOMETHING TO ALARM HER + THAT IS CERTAIN + THE GENERAL SEQUENCE OF EVENTS IS PRETTY CLEAR IS IT NOT + A COUPLE SEEK REFUGE IN LONDON FROM A VERY TERRIBLE AND INSTANT DANGER + THE MEASURE OF THAT DANGER IS THE RIGOUR OF THEIR PRECAUTIONS + THE MAN WHO HAS SOME WORK WHICH HE MUST DO DESIRES TO LEAVE THE WOMAN IN ABSOLUTE SAFETY WHILE HE DOES IT + IT IS NOT AN EASY PROBLEM BUT HE SOLVED IT IN AN ORIGINAL FASHION AND SO EFFECTIVELY THAT HER PRESENCE WAS NOT EVEN KNOWN TO THE LANDLADY WHO SUPPLIES HER WITH FOOD + THE PRINTED MESSAGES AS IS NOW EVIDENT WERE TO PREVENT HER SEX BEING DISCOVERED BY HER WRITING + THE MAN CANNOT COME NEAR THE WOMAN OR HE WILL GUIDE THEIR ENEMIES TO HER + SINCE HE CANNOT COMMUNICATE WITH HER DIRECT HE HAS RECOURSE TO THE AGONY COLUMN OF A PAPER + SO FAR ALL IS CLEAR + BUT WHAT IS AT THE ROOT OF IT + AH YES WATSON SEVERELY PRACTICAL AS USUAL + WHAT IS AT THE ROOT OF IT ALL + MRS. WARREN'S WHIMSICAL PROBLEM ENLARGES SOMEWHAT AND ASSUMES A MORE SINISTER ASPECT AS WE PROCEED + THIS MUCH WE CAN SAY THAT IT IS NO ORDINARY LOVE ESCAPADE + YOU SAW THE WOMAN'S FACE AT THE SIGN OF DANGER + WE HAVE HEARD TOO OF THE ATTACK UPON THE LANDLORD WHICH WAS UNDOUBTEDLY MEANT FOR THE LODGER + THESE ALARMS AND THE DESPERATE NEED FOR SECRECY ARGUE THAT THE MATTER IS ONE OF LIFE OR DEATH + THE ATTACK UPON MR. WARREN FURTHER SHOWS THAT THE ENEMY WHOEVER THEY ARE ARE THEMSELVES NOT AWARE OF THE SUBSTITUTION OF THE FEMALE LODGER FOR THE MALE + IT IS VERY CURIOUS AND COMPLEX WATSON QUOTE + WHY SHOULD YOU GO FURTHER IN IT + WHAT HAVE YOU TO GAIN FROM IT + WHAT INDEED + IT IS ART FOR ART'S SAKE WATSON + I SUPPOSE WHEN YOU DOCTORED YOU FOUND YOURSELF STUDYING CASES WITHOUT THOUGH ONE HALF OF A FEE + FOR MY EDUCATION HOLMES + QUOTE EDUCATION NEVER ENDS WATSON + IT IS A SERIES OF LESSONS WITH THE GREATEST FOR THE LAST + THIS IS AN INSTRUCTIVE CASE + THERE IS NEITHER MONEY NOR CREDIT IN IT AND YET ONE WOULD WISH TO TIDY IT UP + WHEN DUSK COMES WE SHOULD FIND OURSELVES ONE STAGE ADVANCED IN OUR INVESTIGATION + WHEN WE RETURNED TO MRS. WARREN'S ROOMS THE GLOOM OF A LONDON WINTER EVENING HAD THICKENED INTO ONE GRAY CURTAIN A DEAD MONOTONE OF COLOUR BROKEN ONLY BY THE SHARP YELLOW SQUARES OF THE WINDOWS AND THE BLURRED HALOES OF THE GAS LAMPS + AS WE PEERED FROM THE DARKENED SITTING ROOM OF THE LODGINGHOUSE ONE MORE DIM LIGHT GLIMMERED HIGH UP THROUGH THE OBSCURITY + SOMEONE IS MOVING IN THAT ROOM SAID HOLMES IN A WHISPER HIS GAUNT AND EAGER FACE THRUST FORWARD TO THE WINDOW PANE + YES I CAN SEE HIS SHADOW + THERE HE IS AGAIN + HE HAS A CANDLE IN HIS HAND + NOW HE IS PEERING ACROSS + HE WANTS TO BE SURE THAT SHE IS ON THE LOOKOUT + NOW HE BEGINS TO FLASH + TAKE THE MESSAGE ALSO WATSON THAT WE MAY CHECK EACH OTHER + A SINGLE FLASH THAT IS A SURELY + NOW THEN + HOW MANY DID YOU MAKE IT + TWENTY + SO DID I. THAT SHOULD MEAN T. A. T. THAT'S INTELLIGIBLE ENOUGH + ANOTHER T. SURELY THIS IS THE BEGINNING OF A SECOND WORD + NOW THEN TENTA + DEAD STOP + THAT CAN'T BE ALL WATSON + ATTENTA GIVES NO SENSE + NOR IS IT ANY BETTER AS THREE WORDS A. T. TEN T. A. UNLESS T. A. ARE A PERSON'S INITIALS + THERE IT GOES AGAIN + WHAT'S THAT + ATTE WHY IT IS THE SAME MESSAGE OVER AGAIN + CURIOUS WATSON VERY CURIOUS + NOW HE IS OFF ONCE MORE + A. T. WHY HE IS REPEATING IT FOR THE THIRD TIME + ATTENTA THREE TIMES + HOW OFTEN WILL HE REPEAT IT + NO THAT SEEMS TO BE THE FINISH + HE HAS WITHDRAWN FROM THE WINDOW + WHAT DO YOU MAKE OF IT WATSON + A CIPHER MESSAGE HOLMES + MY COMPANION GAVE A SUDDEN CHUCKLE OF COMPREHENSION + QUOTE AND NOT A VERY OBSCURE CIPHER WATSON QUOTE SAID HE + WHY OF COURSE IT IS ITALIAN + THE A MEANS THAT IT IS ADDRESSED TO A WOMAN + BEWARE + BEWARE + BEWARE + HOW'S THAT WATSON + I BELIEVE YOU HAVE HIT IT + NOT A DOUBT OF IT + IT IS A VERY URGENT MESSAGE THRICE REPEATED TO MAKE IT MORE SO + BUT BEWARE OF WHAT + WAIT A BIT HE IS COMING TO THE WINDOW ONCE MORE + AGAIN WE SAW THE DIM SILHOUETTE OF A CROUCHING MAN AND THE WHISK OF THE SMALL FLAME ACROSS THE WINDOW AS THE SIGNALS WERE RENEWED + THEY CAME MORE RAPIDLY THAN BEFORE SO RAPID THAT IT WAS HARD TO FOLLOW THEM + QUOTE PERICOLO PERICOLO EH WHAT'S THAT WATSON + DANGER ISN'T IT + YES BY JOVE IT'S A DANGER SIGNAL + THERE HE GOES AGAIN + PERI + HALLOA WHAT ON EARTH + THE LIGHT HAD SUDDENLY GONE OUT THE GLIMMERING SQUARE OF WINDOW HAD DISAPPEARED AND THE THIRD FLOOR FORMED A DARK BAND ROUND THE LOFTY BUILDING WITH ITS TIERS OF SHINING CASEMENTS + THAT LAST WARNING CRY HAD BEEN SUDDENLY CUT SHORT + HOW AND BY WHOM + THE SAME THOUGHT OCCURRED ON THE INSTANT TO US BOTH + HOLMES SPRANG UP FROM WHERE HE CROUCHED BY THE WINDOW + THIS IS SERIOUS WATSON HE CRIED + THERE IS SOME DEVILRY GOING FORWARD + WHY SHOULD SUCH A MESSAGE STOP IN SUCH A WAY + I SHOULD PUT SCOTLAND YARD IN TOUCH WITH THIS BUSINESS AND YET IT IS TOO PRESSING FOR US TO LEAVE + SHALL I GO FOR THE POLICE + QUOTE WE MUST DEFINE THE SITUATION A LITTLE MORE CLEARLY + IT MAY BEAR SOME MORE INNOCENT INTERPRETATION + COME + WATSON LET US GO ACROSS OURSELVES AND SEE WHAT WE CAN MAKE OF IT. TWO + AS WE WALKED RAPIDLY DOWN HOWE STREET I GLANCED BACK AT THE BUILDING WHICH WE HAD LEFT + THERE DIMLY OUTLINED AT THE TOP WINDOW I COULD SEE THE SHADOW OF A HEAD A WOMAN'S HEAD GAZING TENSELY RIGIDLY OUT INTO THE NIGHT WAITING WITH BREATHLESS SUSPENSE FOR THE RENEWAL OF THAT INTERRUPTED MESSAGE + AT THE DOORWAY OF THE HOWE STREET FLATS A MAN MUFFLED IN A CRAVAT AND GREATCOAT WAS LEANING AGAINST THE RAILING + HE STARTED AS THE HALL LIGHT FELL UPON OUR FACES + HOLMES HE CRIED + WHY GREGSON SAID MY COMPANION AS HE SHOOK HANDS WITH THE SCOTLAND YARD DETECTIVE + JOURNEYS END WITH LOVERS' MEETINGS + WHAT BRINGS YOU HERE + QUOTE THE SAME REASONS THAT BRING YOU I EXPECT QUOTE SAID GREGSON + HOW YOU GOT ON TO IT I CAN'T IMAGINE + DIFFERENT THREADS BUT LEADING UP TO THE SAME TANGLE + I'VE BEEN TAKING THE SIGNALS + SIGNALS + YES FROM THAT WINDOW + THEY BROKE OFF IN THE MIDDLE + WE CAME OVER TO SEE THE REASON + BUT SINCE IT IS SAFE IN YOUR HANDS I SEE NO OBJECT IN CONTINUING THE BUSINESS QUOTE + WAIT A BIT CRIED GREGSON EAGERLY + I'LL DO YOU THIS JUSTICE MR. HOLMES THAT I WAS NEVER IN A CASE YET THAT I DIDN'T FEEL STRONGER FOR HAVING YOU ON MY SIDE + THERE'S ONLY THE ONE EXIT TO THESE FLATS SO WE HAVE HIM SAFE + WHO IS HE + WELL WELL WE SCORE OVER YOU FOR ONCE MR. HOLMES + YOU MUST GIVE US BEST THIS TIME QUOTE + HE STRUCK HIS STICK SHARPLY UPON THE GROUND ON WHICH A CABMAN HIS WHIP IN HIS HAND SAUNTERED OVER FROM A FOUR WHEELER WHICH STOOD ON THE FAR SIDE OF THE STREET + MAY I INTRODUCE YOU TO MR. SHERLOCK HOLMES HE SAID TO THE CABMAN + THIS IS MR. LEVERTON OF PINKERTON'S AMERICAN AGENCY + THE HERO OF THE LONG ISLAND CAVE MYSTERY SAID HOLMES + SIR I AM PLEASED TO MEET YOU + THE AMERICAN A QUIET BUSINESSLIKE YOUNG MAN WITH A CLEANSHAVEN HATCHET FACE FLUSHED UP AT THE WORDS OF COMMENDATION + I AM ON THE TRAIL OF MY LIFE NOW MR. HOLMES SAID HE + QUOTE IF I CAN GET GORGIANO QUOTE + WHAT + GORGIANO OF THE RED CIRCLE + OH HE HAS A EUROPEAN FAME HAS HE + WELL WE'VE LEARNED ALL ABOUT HIM IN AMERICA + WE KNOW HE IS AT THE BOTTOM OF FIFTY MURDERS AND YET WE HAVE NOTHING POSITIVE WE CAN TAKE HIM ON + I TRACKED HIM OVER FROM NEW YORK AND I'VE BEEN CLOSE TO HIM FOR A WEEK IN LONDON WAITING SOME EXCUSE TO GET MY HAND ON HIS COLLAR + MR. GREGSON AND I RAN HIM TO GROUND IN THAT BIG TENEMENT HOUSE AND THERE'S ONLY THE ONE DOOR SO HE CAN'T SLIP US + THERE'S THREE FOLK COME OUT SINCE HE WENT IN BUT I'LL SWEAR HE WASN'T ONE OF THEM + MR. HOLMES TALKS OF SIGNALS SAID GREGSON + QUOTE I EXPECT AS USUAL HE KNOWS A GOOD DEAL THAT WE DON'T QUOTE + IN A FEW CLEAR WORDS HOLMES EXPLAINED THE SITUATION AS IT HAD APPEARED TO US + THE AMERICAN STRUCK HIS HANDS TOGETHER WITH VEXATION + HE'S ON TO US HE CRIED + WHY DO YOU THINK SO + WELL IT FIGURES OUT THAT WAY DOES IT NOT + HERE HE IS SENDING OUT MESSAGES TO AN ACCOMPLICE THERE ARE SEVERAL OF HIS GANG IN LONDON + THEN SUDDENLY JUST AS BY YOUR OWN ACCOUNT HE WAS TELLING THEM THAT THERE WAS DANGER HE BROKE SHORT OFF + WHAT COULD IT MEAN EXCEPT THAT FROM THE WINDOW HE HAD SUDDENLY EITHER CAUGHT SIGHT OF US IN THE STREET OR IN SOME WAY COME TO UNDERSTAND HOW CLOSE THE DANGER WAS AND THAT HE MUST ACT RIGHT AWAY IF HE WAS TO AVOID IT + WHAT DO YOU SUGGEST MR. HOLMES + THAT WE GO UP AT ONCE AND SEE FOR OURSELVES + QUOTE BUT WE HAVE NO WARRANT FOR HIS ARREST QUOTE + HE IS IN UNOCCUPIED PREMISES UNDER SUSPICIOUS CIRCUMSTANCES SAID GREGSON + THAT IS GOOD ENOUGH FOR THE MOMENT + WHEN WE HAVE HIM BY THE HEELS WE CAN SEE IF NEW YORK CAN'T HELP US TO KEEP HIM + I'LL TAKE THE RESPONSIBILITY OF ARRESTING HIM NOW + OUR OFFICIAL DETECTIVES MAY BLUNDER IN THE MATTER OF INTELLIGENCE BUT NEVER IN THAT OF COURAGE + GREGSON CLIMBED THE STAIR TO ARREST THIS DESPERATE MURDERER WITH THE SAME ABSOLUTELY QUIET AND BUSINESSLIKE BEARING WITH WHICH HE WOULD HAVE ASCENDED THE OFFICIAL STAIRCASE OF SCOTLAND YARD + THE PINKERTON MAN HAD TRIED TO PUSH PAST HIM BUT GREGSON HAD FIRMLY ELBOWED HIM BACK + LONDON DANGERS WERE THE PRIVILEGE OF THE LONDON FORCE + THE DOOR OF THE LEFT HAND FLAT UPON THE THIRD LANDING WAS STANDING AJAR + GREGSON PUSHED IT OPEN + WITHIN ALL WAS ABSOLUTE SILENCE AND DARKNESS + I STRUCK A MATCH AND LIT THE DETECTIVE'S LANTERN + AS I DID SO AND AS THE FLICKER STEADIED INTO A FLAME WE ALL GAVE A GASP OF SURPRISE + ON THE DEAL BOARDS OF THE CARPETLESS FLOOR THERE WAS OUTLINED A FRESH TRACK OF BLOOD + THE RED STEPS POINTED TOWARDS US AND LED AWAY FROM AN INNER ROOM THE DOOR OF WHICH WAS CLOSED + GREGSON FLUNG IT OPEN AND HELD HIS LIGHT FULL BLAZE IN FRONT OF HIM WHILE WE ALL PEERED EAGERLY OVER HIS SHOULDERS + IN THE MIDDLE OF THE FLOOR OF THE EMPTY ROOM WAS HUDDLED THE FIGURE OF AN ENORMOUS MAN HIS CLEAN SHAVEN SWARTHY FACE GROTESQUELY HORRIBLE IN ITS CONTORTION AND HIS HEAD ENCIRCLED BY A GHASTLY CRIMSON HALO OF BLOOD LYING IN A BROAD WET CIRCLE UPON THE WHITE WOODWORK + HIS KNEES WERE DRAWN UP HIS HANDS THROWN OUT IN AGONY AND FROM THE CENTRE OF HIS BROAD BROWN UPTURNED THROAT THERE PROJECTED THE WHITE HAFT OF A KNIFE DRIVEN BLADE DEEP INTO HIS BODY + GIANT AS HE WAS THE MAN MUST HAVE GONE DOWN LIKE A POLE AXED OX BEFORE THAT TERRIFIC BLOW + BESIDE HIS RIGHT HAND A MOST FORMIDABLE HORN HANDLED TWO EDGED DAGGER LAY UPON THE FLOOR AND NEAR IT A BLACK KID GLOVE + BY GEORGE IT'S BLACK GORGIANO HIMSELF CRIED THE AMERICAN DETECTIVE + SOMEONE HAS GOT AHEAD OF US THIS TIME + QUOTE HERE IS THE CANDLE IN THE WINDOW MR. HOLMES QUOTE SAID GREGSON + WHY WHATEVER ARE YOU DOING + HOLMES HAD STEPPED ACROSS HAD LIT THE CANDLE AND WAS PASSING IT BACKWARD AND FORWARD ACROSS THE WINDOW PANES + THEN HE PEERED INTO THE DARKNESS BLEW THE CANDLE OUT AND THREW IT ON THE FLOOR + I RATHER THINK THAT WILL BE HELPFUL SAID HE + HE CAME OVER AND STOOD IN DEEP THOUGHT WHILE THE TWO PROFESSIONALS WERE EXAMINING THE BODY + YOU SAY THAT THREE PEOPLE CAME OUT FROM THE FLAT WHILE YOU WERE WAITING DOWNSTAIRS SAID HE AT LAST + DID YOU OBSERVE THEM CLOSELY + YES I DID + QUOTE WAS THERE A FELLOW ABOUT THIRTY BLACK BEARDED DARK OF MIDDLE SIZE QUOTE + YES HE WAS THE LAST TO PASS ME + THAT IS YOUR MAN I FANCY + I CAN GIVE YOU HIS DESCRIPTION AND WE HAVE A VERY EXCELLENT OUTLINE OF HIS FOOTMARK + THAT SHOULD BE ENOUGH FOR YOU + NOT MUCH MR. HOLMES AMONG THE MILLIONS OF LONDON + PERHAPS NOT + THAT IS WHY I THOUGHT IT BEST TO SUMMON THIS LADY TO YOUR AID QUOTE + WE ALL TURNED ROUND AT THE WORDS + THERE FRAMED IN THE DOORWAY WAS A TALL AND BEAUTIFUL WOMAN THE MYSTERIOUS LODGER OF BLOOMSBURY + SLOWLY SHE ADVANCED HER FACE PALE AND DRAWN WITH A FRIGHTFUL APPREHENSION HER EYES FIXED AND STARING HER TERRIFIED GAZE RIVETED UPON THE DARK FIGURE ON THE FLOOR + YOU HAVE KILLED HIM SHE MUTTERED + OH DIO MIO YOU HAVE KILLED HIM + THEN I HEARD A SUDDEN SHARP INTAKE OF HER BREATH AND SHE SPRANG INTO THE AIR WITH A CRY OF JOY + ROUND AND ROUND THE ROOM SHE DANCED HER HANDS CLAPPING HER DARK EYES GLEAMING WITH DELIGHTED WONDER AND A THOUSAND PRETTY ITALIAN EXCLAMATIONS POURING FROM HER LIPS + IT WAS TERRIBLE AND AMAZING TO SEE SUCH A WOMAN SO CONVULSED WITH JOY AT SUCH A SIGHT + SUDDENLY SHE STOPPED AND GAZED AT US ALL WITH A QUESTIONING STARE + BUT YOU + YOU ARE POLICE ARE YOU NOT + YOU HAVE KILLED GIUSEPPE GORGIANO + IS IT NOT SO + WE ARE POLICE MADAM + SHE LOOKED ROUND INTO THE SHADOWS OF THE ROOM + QUOTE BUT WHERE THEN IS GENNARO QUOTE SHE ASKED + HE IS MY HUSBAND GENNARO LUCCA + I AM EMILIA LUCCA AND WE ARE BOTH FROM NEW YORK + WHERE IS GENNARO + HE CALLED ME THIS MOMENT FROM THIS WINDOW AND I RAN WITH ALL MY SPEED + IT WAS I WHO CALLED SAID HOLMES + YOU + HOW COULD YOU CALL + QUOTE YOUR CIPHER WAS NOT DIFFICULT MADAM + YOUR PRESENCE HERE WAS DESIRABLE + I KNEW THAT I HAD ONLY TO FLASH VIENI AND YOU WOULD SURELY COME + THE BEAUTIFUL ITALIAN LOOKED WITH AWE AT MY COMPANION + I DO NOT UNDERSTAND HOW YOU KNOW THESE THINGS SHE SAID + GIUSEPPE GORGIANO HOW DID HE SHE PAUSED AND THEN SUDDENLY HER FACE LIT UP WITH PRIDE AND DELIGHT + NOW I SEE IT + MY GENNARO + MY SPLENDID BEAUTIFUL GENNARO WHO HAS GUARDED ME SAFE FROM ALL HARM HE DID IT WITH HIS OWN STRONG HAND HE KILLED THE MONSTER + OH GENNARO HOW WONDERFUL YOU ARE + WHAT WOMAN COULD EVER BE WORTHY OF SUCH A MAN + QUOTE WELL MRS. LUCCA QUOTE SAID THE PROSAIC GREGSON LAYING HIS HAND UPON THE LADY'S SLEEVE WITH AS LITTLE SENTIMENT AS IF SHE WERE A NOTTING HILL HOOLIGAN QUOTE I AM NOT VERY CLEAR YET WHO YOU ARE OR WHAT YOU ARE BUT YOU'VE SAID ENOUGH TO MAKE IT VERY CLEAR THAT WE SHALL WANT YOU AT THE YARD QUOTE + ONE MOMENT GREGSON SAID HOLMES + I RATHER FANCY THAT THIS LADY MAY BE AS ANXIOUS TO GIVE US INFORMATION AS WE CAN BE TO GET IT + YOU UNDERSTAND MADAM THAT YOUR HUSBAND WILL BE ARRESTED AND TRIED FOR THE DEATH OF THE MAN WHO LIES BEFORE US + WHAT YOU SAY MAY BE USED IN EVIDENCE + BUT IF YOU THINK THAT HE HAS ACTED FROM MOTIVES WHICH ARE NOT CRIMINAL AND WHICH HE WOULD WISH TO HAVE KNOWN THEN YOU CANNOT SERVE HIM BETTER THAN BY TELLING US THE WHOLE STORY + NOW THAT GORGIANO IS DEAD WE FEAR NOTHING SAID THE LADY + HE WAS A DEVIL AND A MONSTER AND THERE CAN BE NO JUDGE IN THE WORLD WHO WOULD PUNISH MY HUSBAND FOR HAVING KILLED HIM + QUOTE IN THAT CASE QUOTE SAID HOLMES QUOTE MY SUGGESTION IS THAT WE LOCK THIS DOOR LEAVE THINGS AS WE FOUND THEM GO WITH THIS LADY TO HER ROOM AND FORM OUR OPINION AFTER WE HAVE HEARD WHAT IT IS THAT SHE HAS TO SAY TO US QUOTE + HALF AN HOUR LATER WE WERE SEATED ALL FOUR IN THE SMALL SITTING ROOM OF SIGNORA LUCCA LISTENING TO HER REMARKABLE NARRATIVE OF THOSE SINISTER EVENTS THE ENDING OF WHICH WE HAD CHANCED TO WITNESS + SHE SPOKE IN RAPID AND FLUENT BUT VERY UNCONVENTIONAL ENGLISH WHICH FOR THE SAKE OF CLEARNESS I WILL MAKE GRAMMATICAL + I WAS BORN IN POSILIPPO NEAR NAPLES SAID SHE AND WAS THE DAUGHTER OF AUGUSTO BARELLI WHO WAS THE CHIEF LAWYER AND ONCE THE DEPUTY OF THAT PART + GENNARO WAS IN MY FATHER'S EMPLOYMENT AND I CAME TO LOVE HIM AS ANY WOMAN MUST + HE HAD NEITHER MONEY NOR POSITION NOTHING BUT HIS BEAUTY AND STRENGTH AND ENERGY SO MY FATHER FORBADE THE MATCH + WE FLED TOGETHER WERE MARRIED AT BARI AND SOLD MY JEWELS TO GAIN THE MONEY WHICH WOULD TAKE US TO AMERICA + THIS WAS FOUR YEARS AGO AND WE HAVE BEEN IN NEW YORK EVER SINCE + FORTUNE WAS VERY GOOD TO US AT FIRST + GENNARO WAS ABLE TO DO A SERVICE TO AN ITALIAN GENTLEMAN HE SAVED HIM FROM SOME RUFFIANS IN THE PLACE CALLED THE BOWERY AND SO MADE A POWERFUL FRIEND + HIS NAME WAS TITO CASTALOTTE AND HE WAS THE SENIOR PARTNER OF THE GREAT FIRM OF CASTALOTTE AND ZAMBA WHO ARE THE CHIEF FRUIT IMPORTERS OF NEW YORK + SIGNOR ZAMBA IS AN INVALID AND OUR NEW FRIEND CASTALOTTE HAS ALL POWER WITHIN THE FIRM WHICH EMPLOYS MORE THAN THREE HUNDRED MEN + HE TOOK MY HUSBAND INTO HIS EMPLOYMENT MADE HIM HEAD OF A DEPARTMENT AND SHOWED HIS GOOD WILL TOWARDS HIM IN EVERY WAY + SIGNOR CASTALOTTE WAS A BACHELOR AND I BELIEVE THAT HE FELT AS IF GENNARO WAS HIS SON AND BOTH MY HUSBAND AND I LOVED HIM AS IF HE WERE OUR FATHER + WE HAD TAKEN AND FURNISHED A LITTLE HOUSE IN BROOKLYN AND OUR WHOLE FUTURE SEEMED ASSURED WHEN THAT BLACK CLOUD APPEARED WHICH WAS SOON TO OVERSPREAD OUR SKY + ONE NIGHT WHEN GENNARO RETURNED FROM HIS WORK HE BROUGHT A FELLOW COUNTRYMAN BACK WITH HIM + HIS NAME WAS GORGIANO AND HE HAD COME ALSO FROM POSILIPPO + HE WAS A HUGE MAN AS YOU CAN TESTIFY FOR YOU HAVE LOOKED UPON HIS CORPSE + NOT ONLY WAS HIS BODY THAT OF A GIANT BUT EVERYTHING ABOUT HIM WAS GROTESQUE GIGANTIC AND TERRIFYING + HIS VOICE WAS LIKE THUNDER IN OUR LITTLE HOUSE + THERE WAS SCARCE ROOM FOR THE WHIRL OF HIS GREAT ARMS AS HE TALKED + HIS THOUGHTS HIS EMOTIONS HIS PASSIONS ALL WERE EXAGGERATED AND MONSTROUS + HE TALKED OR RATHER ROARED WITH SUCH ENERGY THAT OTHERS COULD BUT SIT AND LISTEN COWED WITH THE MIGHTY STREAM OF WORDS + HIS EYES BLAZED AT YOU AND HELD YOU AT HIS MERCY + HE WAS A TERRIBLE AND WONDERFUL MAN + I THANK GOD THAT HE IS DEAD + HE CAME AGAIN AND AGAIN + YET I WAS AWARE THAT GENNARO WAS NO MORE HAPPY THAN I WAS IN HIS PRESENCE + MY POOR HUSBAND WOULD SIT PALE AND LISTLESS LISTENING TO THE ENDLESS RAVING UPON POLITICS AND UPON SOCIAL QUESTIONS WHICH MADE UP OUR VISITOR'S CONVERSATION + GENNARO SAID NOTHING BUT I WHO KNEW HIM SO WELL COULD READ IN HIS FACE SOME EMOTION WHICH I HAD NEVER SEEN THERE BEFORE + AT FIRST I THOUGHT THAT IT WAS DISLIKE + AND THEN GRADUALLY I UNDERSTOOD THAT IT WAS MORE THAN DISLIKE + IT WAS FEAR A DEEP SECRET SHRINKING FEAR + THAT NIGHT THE NIGHT THAT I READ HIS TERROR I PUT MY ARMS ROUND HIM AND I IMPLORED HIM BY HIS LOVE FOR ME AND BY ALL THAT HE HELD DEAR TO HOLD NOTHING FROM ME AND TO TELL ME WHY THIS HUGE MAN OVERSHADOWED HIM SO + HE TOLD ME AND MY OWN HEART GREW COLD AS ICE AS I LISTENED + MY POOR GENNARO IN HIS WILD AND FIERY DAYS WHEN ALL THE WORLD SEEMED AGAINST HIM AND HIS MIND WAS DRIVEN HALF MAD BY THE INJUSTICES OF LIFE HAD JOINED A NEAPOLITAN SOCIETY THE RED CIRCLE WHICH WAS ALLIED TO THE OLD CARBONARI + THE OATHS AND SECRETS OF THIS BROTHERHOOD WERE FRIGHTFUL BUT ONCE WITHIN ITS RULE NO ESCAPE WAS POSSIBLE + WHEN WE HAD FLED TO AMERICA GENNARO THOUGHT THAT HE HAD CAST IT ALL OFF FOREVER + WHAT WAS HIS HORROR ONE EVENING TO MEET IN THE STREETS THE VERY MAN WHO HAD INITIATED HIM IN NAPLES THE GIANT GORGIANO A MAN WHO HAD EARNED THE NAME OF DEATH IN THE SOUTH OF ITALY FOR HE WAS RED TO THE ELBOW IN MURDER + HE HAD COME TO NEW YORK TO AVOID THE ITALIAN POLICE AND HE HAD ALREADY PLANTED A BRANCH OF THIS DREADFUL SOCIETY IN HIS NEW HOME + ALL THIS GENNARO TOLD ME AND SHOWED ME A SUMMONS WHICH HE HAD RECEIVED THAT VERY DAY A RED CIRCLE DRAWN UPON THE HEAD OF IT TELLING HIM THAT A LODGE WOULD BE HELD UPON A CERTAIN DATE AND THAT HIS PRESENCE AT IT WAS REQUIRED AND ORDERED + QUOTE THAT WAS BAD ENOUGH BUT WORSE WAS TO COME + I HAD NOTICED FOR SOME TIME THAT WHEN GORGIANO CAME TO US AS HE CONSTANTLY DID IN THE EVENING HE SPOKE MUCH TO ME AND EVEN WHEN HIS WORDS WERE TO MY HUSBAND THOSE TERRIBLE GLARING WILD BEAST EYES OF HIS WERE ALWAYS TURNED UPON ME + ONE NIGHT HIS SECRET CAME OUT + I HAD AWAKENED WHAT HE CALLED LOVE WITHIN HIM THE LOVE OF A BRUTE A SAVAGE + GENNARO HAD NOT YET RETURNED WHEN HE CAME + HE PUSHED HIS WAY IN SEIZED ME IN HIS MIGHTY ARMS HUGGED ME IN HIS BEAR'S EMBRACE COVERED ME WITH KISSES AND IMPLORED ME TO COME AWAY WITH HIM + I WAS STRUGGLING AND SCREAMING WHEN GENNARO ENTERED AND ATTACKED HIM + HE STRUCK GENNARO SENSELESS AND FLED FROM THE HOUSE WHICH HE WAS NEVER MORE TO ENTER + IT WAS A DEADLY ENEMY THAT WE MADE THAT NIGHT + A FEW DAYS LATER CAME THE MEETING + GENNARO RETURNED FROM IT WITH A FACE WHICH TOLD ME THAT SOMETHING DREADFUL HAD OCCURRED + IT WAS WORSE THAN WE COULD HAVE IMAGINED POSSIBLE + THE FUNDS OF THE SOCIETY WERE RAISED BY BLACKMAILING RICH ITALIANS AND THREATENING THEM WITH VIOLENCE SHOULD THEY REFUSE THE MONEY + IT SEEMS THAT CASTALOTTE OUR DEAR FRIEND AND BENEFACTOR HAD BEEN APPROACHED + HE HAD REFUSED TO YIELD TO THREATS AND HE HAD HANDED THE NOTICES TO THE POLICE + IT WAS RESOLVED NOW THAT SUCH AN EXAMPLE SHOULD BE MADE OF HIM AS WOULD PREVENT ANY OTHER VICTIM FROM REBELLING + AT THE MEETING IT WAS ARRANGED THAT HE AND HIS HOUSE SHOULD BE BLOWN UP WITH DYNAMITE + THERE WAS A DRAWING OF LOTS AS TO WHO SHOULD CARRY OUT THE DEED + GENNARO SAW OUR ENEMY'S CRUEL FACE SMILING AT HIM AS HE DIPPED HIS HAND IN THE BAG + NO DOUBT IT HAD BEEN PREARRANGED IN SOME FASHION FOR IT WAS THE FATAL DISC WITH THE RED CIRCLE UPON IT THE MANDATE FOR MURDER WHICH LAY UPON HIS PALM + HE WAS TO KILL HIS BEST FRIEND OR HE WAS TO EXPOSE HIMSELF AND ME TO THE VENGEANCE OF HIS COMRADES + IT WAS PART OF THEIR FIENDISH SYSTEM TO PUNISH THOSE WHOM THEY FEARED OR HATED BY INJURING NOT ONLY THEIR OWN PERSONS BUT THOSE WHOM THEY LOVED AND IT WAS THE KNOWLEDGE OF THIS WHICH HUNG AS A TERROR OVER MY POOR GENNARO'S HEAD AND DROVE HIM NEARLY CRAZY WITH APPREHENSION + ALL THAT NIGHT WE SAT TOGETHER OUR ARMS ROUND EACH OTHER EACH STRENGTHENING EACH FOR THE TROUBLES THAT LAY BEFORE US + THE VERY NEXT EVENING HAD BEEN FIXED TOR THE ATTEMPT + BY MIDDAY MY HUSBAND AND I WERE ON OUR WAY TO LONDON BUT NOT BEFORE HE HAD GIVEN OUR BENEFACTOR FULL WARNING OF HIS DANGER AND HAD ALSO LEFT SUCH INFORMATION FOR THE POLICE AS WOULD SAFEGUARD HIS LIFE FOR THE FUTURE + THE REST GENTLEMEN YOU KNOW FOR YOURSELVES + WE WERE SURE THAT OUR ENEMIES WOULD BE BEHIND US LIKE OUR OWN SHADOWS + GORGIANO HAD HIS PRIVATE REASONS FOR VENGEANCE BUT IN ANY CASE WE KNEW HOW RUTHLESS CUNNING AND UNTIRING HE COULD BE + BOTH ITALY AND AMERICA ARE FULL OF STORIES OF HIS DREADFUL POWERS + IF EVER THEY WERE EXERTED IT WOULD BE NOW + MY DARLING MADE USE OF THE FEW CLEAR DAYS WHICH OUR START HAD GIVEN US IN ARRANGING FOR A REFUGE FOR ME IN SUCH A FASHION THAT NO POSSIBLE DANGER COULD REACH ME + FOR HIS OWN PART HE WISHED TO BE FREE THAT HE MIGHT COMMUNICATE BOTH WITH THE AMERICAN AND WITH THE ITALIAN POLICE + I DO NOT MYSELF KNOW WHERE HE LIVED OR HOW + ALL THAT I LEARNED WAS THROUGH THE COLUMNS OF A NEWSPAPER + BUT ONCE AS I LOOKED THROUGH MY WINDOW I SAW TWO ITALIANS WATCHING THE HOUSE AND I UNDERSTOOD THAT IN SOME WAY GORGIANO HAD FOUND OUT OUR RETREAT + FINALLY GENNARO TOLD ME THROUGH THE PAPER THAT HE WOULD SIGNAL TO ME FROM A CERTAIN WINDOW BUT WHEN THE SIGNALS CAME THEY WERE NOTHING BUT WARNINGS WHICH WERE SUDDENLY INTERRUPTED + IT IS VERY CLEAR TO ME NOW THAT HE KNEW GORGIANO TO BE CLOSE UPON HIM AND THAT THANK GOD HE WAS READY FOR HIM WHEN HE CAME + AND NOW GENTLEMEN I WOULD ASK YOU WHETHER WE HAVE ANYTHING TO FEAR FROM THE LAW OR WHETHER ANY JUDGE UPON EARTH WOULD CONDEMN MY GENNARO FOR WHAT HE HAS DONE + WELL MR. GREGSON SAID THE AMERICAN LOOKING ACROSS AT THE OFFICIAL I DON'T KNOW WHAT YOUR BRITISH POINT OF VIEW MAY BE BUT I GUESS THAT IN NEW YORK THIS LADY'S HUSBAND WILL RECEIVE A PRETTY GENERAL VOTE OF THANKS + QUOTE SHE WILL HAVE TO COME WITH ME AND SEE THE CHIEF QUOTE GREGSON ANSWERED + IF WHAT SHE SAYS IS CORROBORATED I DO NOT THINK SHE OR HER HUSBAND HAS MUCH TO FEAR + BUT WHAT I CAN'T MAKE HEAD OR TAIL OF MR. HOLMES IS HOW ON EARTH YOU GOT YOURSELF MIXED UP IN THE MATTER + EDUCATION GREGSON EDUCATION + STILL SEEKING KNOWLEDGE AT THE OLD UNIVERSITY + WELL WATSON YOU HAVE ONE MORE SPECIMEN OF THE TRAGIC AND GROTESQUE TO ADD TO YOUR COLLECTION + BY THE WAY IT IS NOT EIGHT O'CLOCK AND A WAGNER NIGHT AT COVENT GARDEN + IF WE HURRY WE MIGHT BE IN TIME FOR THE SECOND ACT diff --git a/samples/LMTutorial/train/reigate_puzzle.txt b/samples/LMTutorial/train/reigate_puzzle.txt new file mode 100755 index 0000000..fe5ef1e --- /dev/null +++ b/samples/LMTutorial/train/reigate_puzzle.txt @@ -0,0 +1,452 @@ + IT WAS SOME TIME BEFORE THE HEALTH OF MY FRIEND MR. SHERLOCK HOLMES RECOVERED FROM THE STRAIN CAUSED BY HIS IMMENSE EXERTIONS IN THE SPRING OF EIGHTY SEVEN + THE WHOLE QUESTION OF THE NETHERLANDSUMATRA COMPANY AND OF THE COLOSSAL SCHEMES OF BARON MAUPERTUIS ARE TOO RECENT IN THE MINDS OF THE PUBLIC AND ARE TOO INTIMATELY CONCERNED WITH POLITICS AND FINANCE TO BE FITTING SUBJECTS FOR THIS SERIES OF SKETCHES + THEY LED HOWEVER IN AN INDIRECT FASHION TO A SINGULAR AND COMPLEX PROBLEM WHICH GAVE MY FRIEND AN OPPORTUNITY OF DEMONSTRATING THE VALUE OF A FRESH WEAPON AMONG THE MANY WITH WHICH HE WAGED HIS LIFELONG BATTLE AGAINST CRIME + ON REFERRING TO MY NOTES ONE SEE THAT IT WAS UPON THE FOURTEENTH OF APRIL THAT L. RECEIVED A TELEGRAM FROM LYONS WHICH INFORMED ME THAT HOLMES WAS LYING ILL IN THE HOTEL DULONG + WITHIN TWENTY FOUR HOURS I WAS IN HIS SICK ROOM AND WAS RELIEVED TO FIND THAT THERE WAS NOTHING FORMIDABLE IN HIS SYMPTOMS + EVEN HIS IRON CONSTITUTION HOWEVER HAD BROKEN DOWN UNDER THE STRAIN OF AN INVESTIGATION WHICH HAD EXTENDED OVER TWO MONTHS DURING WHICH PERIOD HE HAD NEVER WORKED LESS THAN FIFTEEN HOURS A DAY AND HAD MORE THAN ONCE AS HE ASSURED ME. KEPT TO HIS TASK FOR FIVE DAYS AT A STRETCH + EVEN THE TRIUMPHANT ISSUE OF HIS LABOURS COULD NOT SAVE HIM FROM REACTION AFTER SO TERRIBLE AN EXERTION AND AT A TIME WHEN EUROPE WAS RINGING WITH HIS NAME AND WHEN HIS ROOM WAS LITERALLY ANKLE DEEP WITH CONGRATULATORY TELEGRAMS I FOUND HIM A PREY TO THE BLACKEST DEPRESSION + EVEN THE KNOWLEDGE THAT HE HAD SUCCEEDED WHERE THE POLICE OF THREE COUNTRIES HAD FAILED AND THAT HE HAD OUTMANOEUVRED AT EVERY POINT THE MOST ACCOMPLISHED SWINDLER IN EUROPE WAS INSUFFICIENT TO ROUSE HIM FROM HIS NERVOUS PROSTRATION + THREE DAYS LATER WE WERE BACK IN BAKER STREET TOGETHER BUT IT WAS EVIDENT THAT MY FRIEND WOULD BE MUCH THE BETTER FOR A CHANGE AND THE THOUGHT OF A WEEK OF SPRINGTIME IN THE COUNTRY WAS FULL OF ATTRACTIONS TO ME ALSO + MY OLD FRIEND COLONEL HAYTER WHO HAD COME UNDER MY PROFESSIONAL CARE IN AFGHANISTAN HAD NOW TAKEN A HOUSE NEAR REIGATE IN SURREY AND HAD FREQUENTLY ASKED ME TO COME DOWN TO HIM UPON A VISIT + ON THE LAST OCCASION HE HAD REMARKED THAT IF MY FRIEND WOULD ONLY COME WITH ME HE WOULD BE GLAD TO EXTEND HIS HOSPITALITY TO HIM ALSO + A LITTLE DIPLOMACY WAS NEEDED BUT WHEN HOLMES UNDERSTOOD THAT THE ESTABLISHMENT WAS A BACHELOR ONE AND THAT HE WOULD BE ALLOWED THE FULLEST FREEDOM HE FELL IN WITH MY PLANS AND A WEEK AFTER OUR RETURN FROM LYONS WE WERE UNDER THE COLONEL'S ROOF + HAYTER WAS A FINE OLD SOLDIER WHO HAD SEEN MUCH OF THE WORLD AND HE SOON FOUND AS I HAD EXPECTED THAT HOLMES AND HE HAD MUCH IN COMMON + ON THE EVENING OF OUR ARRIVAL WE WERE SITTING IN THE COLONEL'S GUN ROOM AFTER DINNER HOLMES STRETCHED UPON THE SOFA WHILE HAYTER AND I LOOKED OVER HIS LITTLE ARMORY OF EASTERN WEAPONS + QUOTE BY THE WAY QUOTE SAID HE SUDDENLY QUOTE I THINK I'LL TAKE ONE OF THESE PISTOLS UPSTAIRS WITH ME IN CASE WE HAVE AN ALARM QUOTE + AN ALARM SAID I + YES WE'VE HAD A SCARE IN THIS PART LATELY + OLD ACTON WHO IS ONE OF OUR COUNTY MAGNATES HAD HIS HOUSE BROKEN INTO LAST MONDAY + NO GREAT DAMAGE DONE BUT THE FELLOWS ARE STILL AT LARGE + NO CLUE ASKED HOLMES COCKING HIS EYE AT THE COLONEL + NONE AS YET + BUT THE AFFAIR IS A PETTY ONE ONE OF OUR LITTLE COUNTRY CRIMES WHICH MUST SEEM TOO SMALL FOR YOUR ATTENTION MR. HOLMES AFTER THIS GREAT INTERNATIONAL AFFAIR QUOTE + HOLMES WAVED AWAY THE COMPLIMENT THOUGH HIS SMILE SHOWED THAT IT HAD PLEASED HIM + WAS THERE ANY FEATURE OF INTEREST + I FANCY NOT + THE THIEVES RANSACKED HE LIBRARY AND GOT VERY LITTLE FOR THEIR PAINS + THE WHOLE PLACE WAS TURNED UPSIDE DOWN DRAWERS BURST OPEN AND PRESSES RANSACKED WITH THE RESULT THAT AN ODD VOLUME OF POPE'S HOMER TWO PLATED CANDLESTICKS AN IVORY LETTER WEIGHT A SMALL OAK BAROMETER AND A BALL OF TWINE ARE ALL THAT HAVE VANISHED + WHAT AN EXTRAORDINARY ASSORTMENT + I EXCLAIMED + OH THE FELLOWS EVIDENTLY GRABBED HOLD OF EVERYTHING THEY COULD GET + HOLMES GRUNTED FROM THE SOFA + BUT I HELD UP A WARNING FINGER + QUOTE YOU ARE HERE FOR A REST MY DEAR FELLOW + FOR HEAVEN'S SAKE DON'T GET STARTED ON A NEW PROBLEM WHEN YOUR NERVES ARE ALL IN SHREDS + HOLMES SHRUGGED HIS SHOULDERS WITH A GLANCE OF COMIC RESIGNATION TOWARDS THE COLONEL AND THE TALK DRIFTED AWAY INTO LESS DANGEROUS CHANNELS + IT WAS DESTINED HOWEVER THAT ALL MY PROFESSIONAL CAUTION SHOULD BE WASTED FOR NEXT MORNING THE PROBLEM OBTRUDED ITSELF UPON US IN SUCH A WAY THAT IT WAS IMPOSSIBLE TO IGNORE IT AND OUR COUNTRY VISIT TOOK A TURN WHICH NEITHER OF US COULD HAVE ANTICIPATED + WE WERE AT BREAKFAST WHEN THE COLONEL'S BUTLER RUSHED IN WITH ALL HIS PROPRIETY SHAKEN OUT OF HIM + HAVE YOU HEARD THE NEWS SIR HE GASPED + AT THE CUNNINGHAM'S SIR + BURGLARY CRIED THE COLONEL WITH HIS COFFEE CUP IN MID AIR + MURDER + THE COLONEL WHISTLED + QUOTE BY JOVE QUOTE SAID HE + WHO'S KILLED THEN + THE J. P. OR HIS SON + NEITHER SIR + IT WAS WILLIAM THE COACHMAN + SHOT THROUGH THE HEART SIR AND NEVER SPOKE AGAIN + WHO SHOT HIM THEN + QUOTE THE BURGLAR SIR + HE WAS OFF LIKE A SHOT AND GOT CLEAN AWAY + HE'D JUST BROKE IN AT THE PANTRY WINDOW WHEN WILLIAM CAME ON HIM AND MET HIS END IN SAVING HIS MASTER'S PROPERTY + WHAT TIME + IT WAS LAST NIGHT SIR SOMEWHERE ABOUT TWELVE + AH THEN WE'LL STEP OVER AFTERWARDS SAID THE COLONEL COOLLY SETTLING DOWN TO HIS BREAKFAST AGAIN + IT'S A BADDISH BUSINESS HE ADDED WHEN THE BUTLER HAD GONE HE'S OUR LEADING MAN ABOUT HERE IS OLD CUNNINGHAM AND A VERY DECENT FELLOW TOO + HE'LL BE CUT UP OVER THIS FOR THE MAN HAS BEEN IN HIS SERVICE FOR YEARS AND WAS A GOOD SERVANT + IT'S EVIDENTLY THE SAME VILLAINS WHO BROKE INTO ACTON'S QUOTE + AND STOLE THAT VERY SINGULAR COLLECTION SAID HOLMES THOUGHTFULLY + PRECISELY + HUM + IT MAY PROVE THE SIMPLEST MATTER IN THE WORLD BUT ALL THE SAME AT FIRST GLANCE THIS IS JUST A LITTLE CURIOUS IS IT NOT + A GANG OF BURGLARS ACTING IN THE COUNTRY MIGHT BE EXPECTED TO VARY THE SCENE OF THEIR OPERATIONS AND NOT TO CRACK TWO CRIBS IN THE SAME DISTRICT WITHIN A FEW DAYS + WHEN YOU SPOKE LAST NIGHT OF TAKING PRECAUTIONS I REMEMBER THAT IT PASSED THROUGH MY MIND THAT THIS WAS PROBABLY THE LAST PARISH IN ENGLAND TO WHICH THE THIEF OR THIEVES WOULD BE LIKELY TO TURN THEIR ATTENTION WHICH SHOWS THAT I HAVE STILL MUCH TO LEARN + I FANCY IT'S SOME LOCAL PRACTITIONER SAID THE COLONEL + QUOTE IN THAT CASE OF COURSE ACTON'S AND CUNNINGHAM'S ARE JUST THE PLACES HE WOULD GO FOR SINCE THEY ARE FAR THE LARGEST ABOUT HERE QUOTE + AND RICHEST + WELL THEY OUGHT TO BE BUT THEY'VE HAD A LAWSUIT FOR SOME YEARS WHICH HAS SUCKED THE BLOOD OUT OF BOTH OF THEM I FANCY + OLD ACTON HAS SOME CLAIM ON HALF CUNNINGHAM'S ESTATE AND THE LAWYERS HAVE BEEN AT IT WITH BOTH HANDS + IF IT'S A LOCAL VILLAIN THERE SHOULD NOT BE MUCH DIFFICULTY IN RUNNING HIM DOWN SAID HOLMES WITH A YAWN + ALL RIGHT WATSON I DON'T INTEND TO MEDDLE + QUOTE INSPECTOR FORRESTER SIR QUOTE SAID THE BUTLER THROWING OPEN THE DOOR + THE OFFICIAL A SMART KEEN FACED YOUNG FELLOW STEPPED INTO THE ROOM + GOOD MORNING COLONEL SAID HE + I HOPE I DON'T INTRUDE BUT WE HEAR THAT MR. HOLMES OF BAKER STREET IS HERE + THE COLONEL WAVED HIS HAND TOWARDS MY FRIEND AND THE INSPECTOR BOWED + WE THOUGHT THAT PERHAPS YOU WOULD CARE TO STEP ACROSS MR. HOLMES + THE FATES ARE AGAINST YOU WATSON SAID HE LAUGHING + WE WERE CHATTING ABOUT THE MATTER WHEN YOU CAME IN INSPECTOR + PERHAPS YOU CAN LET US HAVE A FEW DETAILS QUOTE + AS HE LEANED BACK IN HIS CHAIR IN THE FAMILIAR ATTITUDE I KNEW THAT THE CASE WAS HOPELESS + WE HAD NO CLUE IN THE ACTON AFFAIR + BUT HERE WE HAVE PLENTY TO GO ON AND THERE'S NO DOUBT IT IS THE SAME PARTY IN EACH CASE + THE MAN WAS SEEN + AH + YES SIR + BUT HE WAS OFF LIKE A DEER AFTER THE SHOT THAT KILLED POOR WILLIAM KIRWAN WAS FIRED + MR. CUNNINGHAM SAW HIM FROM THE BEDROOM WINDOW AND MR. ALEC CUNNINGHAM SAW HIM FROM THE BACK PASSAGE + IT WAS QUARTER TO TWELVE WHEN THE ALARM BROKE OUT + MR. CUNNINGHAM HAD JUST GOT INTO BED AND MR. ALEC WAS SMOKING A PIPE IN HIS DRESSING GOWN + THEY BOTH HEARD WILLIAM THE COACHMAN CALLING FOR HELP AND MR. ALEC RAN DOWN TO SEE WHAT WAS THE MATTER + THE BACK DOOR WAS OPEN AND AS HE CAME TO THE FOOT OF THE STAIRS HE SAW TWO MEN WRESTLING TOGETHER OUTSIDE + ONE OF THEM FIRED A SHOT THE OTHER DROPPED AND THE MURDERER RUSHED ACROSS THE GARDEN AND OVER THE HEDGE + MR. CUNNINGHAM LOOKING OUT OF HIS BEDROOM SAW THE FELLOW AS HE GAINED THE ROAD BUT LOST SIGHT OF HIM AT ONCE + MR. ALEC STOPPED TO SEE IF HE COULD HELP THE DYING MAN AND SO THE VILLAIN GOT CLEAN AWAY + BEYOND THE FACT THAT HE WAS A MIDDLE SIZED MAN AND DRESSED IN SOME DARK STUFF WE HAVE NO PERSONAL CLUE BUT WE ARE MAKING ENERGETIC INQUIRIES AND IF HE IS A STRANGER WE SHALL SOON FIND HIM OUT + QUOTE WHAT WAS THIS WILLIAM DOING THERE + DID HE SAY ANYTHING BEFORE HE DIED + NOT A WORD + HE LIVES AT THE LODGE WITH HIS MOTHER AND AS HE WAS A VERY FAITHFUL FELLOW WE IMAGINE THAT HE WALKED UP TO THE HOUSE WITH THE INTENTION OF SEEING THAT ALL WAS RIGHT THERE + OF COURSE THIS ACTON BUSINESS HAS PUT EVERYONE ON THEIR GUARD + THE ROBBER MUST HAVE JUST BURST OPEN THE DOOR THE LOCK HAS BEEN FORCED WHEN WILLIAM CAME UPON HIM + DID WILLIAM SAY ANYTHING TO HIS MOTHER BEFORE GOING OUT + SHE IS VERY OLD AND DEAF AND WE CAN GET NO INFORMATION FROM HER + THE SHOCK HAS MADE HER HALF WITTED BUT I UNDERSTAND THAT SHE WAS NEVER VERY BRIGHT + THERE IS ONE VERY IMPORTANT CIRCUMSTANCE HOWEVER + LOOK AT THIS QUOTE + HE TOOK A SMALL PIECE OF TORN PAPER FROM A NOTEBOOK AND SPREAD IT OUT UPON HIS KNEE + THIS WAS FOUND BETWEEN THE FINGER AND THUMB OF THE DEAD MAN + IT APPEARS TO BE A FRAGMENT TORN FROM A LARGER SHEET + YOU WILL OBSERVE THAT THE HOUR MENTIONED UPON IT IS THE VERY TIME AT WHICH THE POOR FELLOW MET HIS FATE + YOU SEE THAT HIS MURDERER MIGHT HAVE TORN THE REST OF THE SHEET FROM HIM OR HE MIGHT HAVE TAKEN THIS FRAGMENT FROM THE MURDERER + IT READS ALMOST AS THOUGH IT WERE AN APPOINTMENT + HOLMES TOOK UP THE SCRAP OF PAPER A FACSIMILE OF WHICH IS HERE REPRODUCED + A. T. QUARTER TO TWELVE LEARN WHAT MAY + PRESUMING THAT IT IS AN APPOINTMENT CONTINUED THE INSPECTOR IT IS OF COURSE A CONCEIVABLE THEORY THAT THIS WILLIAM KIRWAN THOUGH HE HAD THE REPUTATION OF BEING AN HONEST MAN MAY HAVE BEEN IN LEAGUE WITH THE THIEF + HE MAY HAVE MET HIM THERE MAY EVEN HAVE HELPED HIM TO BREAK IN THE DOOR AND THEN THEY MAY HAVE FALLEN OUT BETWEEN THEMSELVES + THIS WRITING IS OF EXTRAORDINARY INTEREST SAID HOLMES WHO HAD BEEN EXAMINING IT WITH INTENSE CONCENTRATION + QUOTE THESE ARE MUCH DEEPER WATERS THAN I HAD THOUGHT QUOTE + HE SANK HIS HEAD UPON HIS HANDS WHILE THE INSPECTOR SMILED AT THE EFFECT WHICH HIS CASE HAD HAD UPON THE FAMOUS LONDON SPECIALIST + YOUR LAST REMARK SAID HOLMES PRESENTLY AS TO THE POSSIBILITY OF THERE BEING AN UNDERSTANDING BETWEEN THE BURGLAR AND THE SERVANT AND THIS BEING A NOTE OF APPOINTMENT FROM ONE TO THE OTHER IS AN INGENIOUS AND NOT ENTIRELY IMPOSSIBLE SUPPOSITION + BUT THIS WRITING OPENS UP HE SANK HIS HEAD INTO HIS HANDS AGAIN AND REMAINED FOR SOME MINUTES IN THE DEEPEST THOUGHT + WHEN HE RAISED HIS FACE AGAIN I WAS SURPRISED TO SEE THAT HIS CHEEK WAS TINGED WITH COLOUR AND HIS EYES AS BRIGHT AS BEFORE HIS ILLNESS + HE SPRANG TO HIS FEET WITH ALL HIS OLD ENERGY + I'LL TELL YOU WHAT SAID HE I SHOULD LIKE TO HAVE A QUIET LITTLE GLANCE INTO THE DETAILS OF THIS CASE + THERE IS SOMETHING IN IT WHICH FASCINATES ME EXTREMELY + IF YOU WILL PERMIT ME COLONEL I WILL LEAVE MY FRIEND WATSON AND YOU AND I WILL STEP ROUND WITH THE INSPECTOR TO TEST THE TRUTH OF ONE OR TWO LITTLE FANCIES OF MINE + I WILL BE WITH YOU AGAIN IN HALF AN HOUR + AN HOUR AND A HALF HAD ELAPSED BEFORE THE INSPECTOR RETURNED ALONE + MR. HOLMES IS WALKING UP AND DOWN IN THE FIELD OUTSIDE SAID HE + QUOTE HE WANTS US ALL FOUR TO GO UP TO THE HOUSE TOGETHER QUOTE + TO MR. CUNNINGHAM'S + YES SIR + WHAT FOR + THE INSPECTOR SHRUGGED HIS SHOULDERS + I DON'T QUITE KNOW SIR + BETWEEN OURSELVES I THINK MR. HOLMES HAS NOT QUITE GOT OVER HIS ILLNESS YET + HE'S BEEN BEHAVING VERY QUEERLY AND HE IS VERY MUCH EXCITED + QUOTE I DON'T THINK YOU NEED ALARM YOURSELF QUOTE SAID I. QUOTE I HAVE USUALLY FOUND THAT THERE WAS METHOD IN HIS MADNESS QUOTE + SOME FOLK MIGHT SAY THERE WAS MADNESS IN HIS METHOD MUTTERCD THE INSPECTOR + BUT HE'S ALL ON FIRE TO START COLONEL SO WE HAD BEST GO OUT IF YOU ARE READY + WE FOUND HOLMES PACING UP AND DOWN IN THE FIELD HIS CHIN SUNK UPON HIS BREAST AND HIS HANDS THRUST INTO HIS TROUSERS POCKETS + THE MATTER GROWS IN INTEREST SAID HE + WATSON YOUR COUNTRY TRIP HAS BEEN A DISTINCT SUCCESS + I HAVE HAD A CHARMING MORNING + QUOTE YOU HAVE BEEN UP TO THE SCENE OF THE CRIME I UNDERSTAND QUOTE SAID THE COLONEL + YES THE INSPECTOR AND I HAVE MADE QUITE A LITTLE RECONNAISSANCE TOGETHER + ANY SUCCESS + WELL WE HAVE SEEN SOME VERY INTERESTING THINGS + I'LL TELL YOU WHAT WE DID AS WE WALK + FIRST OF ALL WE SAW THE BODY OF THIS UNFORTUNATE MAN + HE CERTAINLY DIED FROM A REVOLVER WOUND AS REPORTED + HAD YOU DOUBTED IT THEN + QUOTE OH IT IS AS WELL TO TEST EVERYTHING + OUR INSPECTION WAS NOT WASTED + WE THEN HAD AN INTERVIEW WITH MR. CUNNINGHAM AND HIS SON WHO WERE ABLE TO POINT OUT THE EXACT SPOT WHERE THE MURDERER HAD BROKEN THROUGH THE GARDEN HEDGE IN HIS FLIGHT + THAT WAS OF GREAT INTEREST + NATURALLY + THEN WE HAD A LOOK AT THIS POOR FELLOW'S MOTHER + WE COULD GET NO INFORMATION FROM HER HOWEVER AS SHE IS VERY OLD AND FEEBLE + AND WHAT IS THE RESULT OF YOUR INVESTIGATIONS + QUOTE THE CONVICTION THAT THE CRIME IS A VERY PECULIAR ONE + PERHAPS OUR VISIT NOW MAY DO SOMETHING TO MAKE IT LESS OBSCURE + I THINK THAT WE ARE BOTH AGREED INSPECTOR THAT THE FRAGMENT OF PAPER IN THE DEAD MAN'S HAND BEARING AS IT DOES THE VERY HOUR OF HIS DEATH WRITTEN UPON IT IS OF EXTREME IMPORTANCE + IT SHOULD GIVE A CLUE MR. HOLMES + IT DOES GIVE A CLUE + WHOEVER WROTE THAT NOTE WAS THE MAN WHO BROUGHT WILLIAM KIRWAN OUT OF HIS BED AT THAT HOUR + BUT WHERE IS THE REST OF THAT SHEET OF PAPER + I EXAMINED THE GROUND CAREFULLY IN THE HOPE OF FINDING IT. SAID THE INSPECTOR + QUOTE IT WAS TORN OUT OF THE DEAD MAN'S HAND + WHY WAS SOMEONE SO ANXIOUS TO GET POSSESSION OF IT + BECAUSE IT INCRIMINATED HIM + AND WHAT WOULD HE DO WITH IT + THRUST IT INTO HIS POCKET MOST LIKELY NEVER NOTICING THAT A CORNER OF IT HAD BEEN LEFT IN THE GRIP OF THE CORPSE + IF WE COULD GET THE REST OF THAT SHEET IT IS OBVIOUS THAT WE SHOULD HAVE GONE A LONG WAY TOWARDS SOLVING THE MYSTERY + YES BUT HOW CAN WE GET AT THE CRIMINAL'S POCKET BEFORE WE CATCH THE CRIMINAL + WELL WELL IT WAS WORTH THINKING OVER + THEN THERE IS ANOTHER OBVIOUS POINT + THE NOTE WAS SENT TO WILLIAM + THE MAN WHO WROTE IT COULD NOT HAVE TAKEN IT OTHERWISE OF COURSE HE MIGHT HAVE DELIVERED HIS OWN MESSAGE BY WORD OF MOUTH + WHO BROUGHT THE NOTE THEN + OR DID IT COME THROUGH THE POST + I HAVE MADE INQUIRIES SAID THE INSPECTOR + QUOTE WILLIAM RECEIVED A LETTER BY THE AFTERNOON POST YESTERDAY + THE ENVELOPE WAS DESTROYED BY HIM + EXCELLENT CRIED HOLMES CLAPPING THE INSPECTOR ON THE BACK + YOU'VE SEEN THE POSTMAN + IT IS A PLEASURE TO WORK WITH YOU + WELL HERE IS THE LODGE AND IF YOU WILL COME UP COLONEL I WILL SHOW YOU THE SCENE OF THE CRIME + WE PASSED THE PRETTY COTTAGE WHERE THE MURDERED MAN HAD LIVED AND WALKED UP AN OAK LINED AVENUE TO THE FINE OLD QUEEN ANNE HOUSE WHICH BEARS THE DATE OF MALPLAQUET UPON THE LINTEL OF THE DOOR + HOLMES AND THE INSPECTOR LED US ROUND IT UNTIL WE CAME TO THE SIDE GATE WHICH IS SEPARATED BY A STRETCH OF GARDEN FROM THE HEDGE WHICH LINES THE ROAD + A CONSTABLE WAS STANDING AT THE KITCHEN DOOR + THROW THE DOOR OPEN OFFICER SAID HOLMES + QUOTE NOW IT WAS ON THOSE STAIRS THAT YOUNG MR. CUNNINGHAM STOOD AND SAW THE TWO MEN STRUGGLING JUST WHERE WE ARE + OLD MR. CUNNINGHAM WAS AT THAT WINDOW THE SECOND ON THE LEFT AND HE SAW THE FELLOW GET AWAY JUST TO THE LEFT OF THAT BUSH + SO DID THE SON + THEY ARE BOTH SURE OF IT ON ACCOUNT OF THE BUSH + THEN MR. ALEC RAN OUT AND KNELT BESIDE THE WOUNDED MAN + THE GROUND IS VERY HARD YOU SEE AND THERE ARE NO MARKS TO GUIDE US + AS HE SPOKE TWO MEN CAME DOWN THE GARDEN PATH FROM ROUND THE ANGLE OF THE HOUSE + THE ONE WAS AN ELDERLY MAN WITH A STRONG DEEP LINED HEAVYEYED FACE THE OTHER A DASHING YOUNG FELLOW WHOSE BRIGHT SMILING EXPRESSION AND SHOWY DRESS WERE IN STRANGE CONTRAST WITH THE BUSINESS WHICH HAD BROUGHT US THERE + STILL AT IT THEN SAID HE TO HOLMES + I THOUGHT YOU LONDONERS WERE NEVER AT FAULT + YOU DON'T SEEM TO BE SO VERY QUICK AFTER ALL + AH YOU MUST GIVE US A LITTLE TIME SAID HOLMES GOODHUMOUREDLY + QUOTE YOU'LL WANT IT QUOTE SAID YOUNG ALEC CUNNINGHAM + WHY I DON'T SEE THAT WE HAVE ANY CLUE AT ALL + THERE'S ONLY ONE ANSWERED THE INSPECTOR + WE THOUGHT THAT IF WE COULD ONLY FIND GOOD HEAVENS + MR. HOLMES WHAT IS THE MATTER + MY POOR FRIEND'S FACE HAD SUDDENLY ASSUMED THE MOST DREADFUL EXPRESSION + HIS EYES ROLLED UPWARD HIS FEATURES WRITHED IN AGONY AND WITH A SUPPRESSED GROAN HE DROPPED ON HIS FACE UPON THE GROUND + HORRIFIED AT THE SUDDENNESS AND SEVERITY OF THE ATTACK WE CARRIED HIM INTO THE KITCHEN WHERE HE LAY BACK IN A LARGE CHAIR AND BREATHED HEAVILY FOR SOME MINUTES + FINALLY WITH A SHAMEFACED APOLOGY FOR HIS WEAKNESS HE ROSE ONCE MORE + WATSON WOULD TELL YOU THAT I HAVE ONLY JUST RECOVERED FROM A SEVERE ILLNESS HE EXPLAINED + QUOTE I AM LIABLE TO THESE SUDDEN NERVOUS ATTACKS QUOTE + SHALL I SEND YOU HOME IN MY TRAP ASKED OLD CUNNINGHAM + WELL SINCE I AM HERE THERE IS ONE POINT ON WHICH I SHOULD LIKE TO FEEL SURE + WE CAN VERY EASILY VERIFY IT + WHAT IS IT + WELL IT SEEMS TO ME THAT IT IS JUST POSSIBLE THAT THE ARRIVAL OF THIS POOR FELLOW WILLIAM WAS NOT BEFORE BUT AFTER THE ENTRANCE OF THE BURGLAR INTO THE HOUSE + YOU APPEAR TO TAKE IT FOR GRANTED THAT ALTHOUGH THE DOOR WAS FORCED THE ROBBER NEVER GOT IN QUOTE + I FANCY THAT IS QUITE OBVIOUS SAID MR. CUNNINGHAM GRAVELY + WHY MY SON ALEC HAD NOT YET GONE TO BED AND HE WOULD CERTAINLY HAVE HEARD ANYONE MOVING ABOUT + WHERE WAS HE SITTING + I WAS SMOKING IN MY DRESSING ROOM + WHICH WINDOW IS THAT + QUOTE THE LAST ON THE LEFT NEXT MY FATHER'S QUOTE + BOTH OF YOUR LAMPS WERE LIT OF COURSE + UNDOUBTEDLY + THERE ARE SOME VERY SINGULAR POINTS HERE SAID HOLMES SMILING + IS IT NOT EXTRAORDINARY THAT A BURGLAR AND A BURGLAR WHO HAD SOME PREVIOUS EXPERIENCE SHOULD DELIBERATELY BREAK INTO A HOUSE AT A TIME WHEN HE COULD SEE FROM THE LIGHTS THAT TWO OF THE FAMILY WERE STILL AFOOT + HE MUST HAVE BEEN A COOL HAND + QUOTE WELL OF COURSE IF THE CASE WERE NOT AN ODD ONE WE SHOULD NOT HAVE BEEN DRIVEN TO ASK YOU FOR AN EXPLANATION QUOTE SAID YOUNG MR. ALEC + BUT AS TO YOUR IDEAS THAT THE MAN HAD ROBBED THE HOUSE BEFORE WILLIAM TACKLED HIM I THINK IT A MOST ABSURD NOTION + WOULDN'T WE HAVE FOUND THE PLACE DISARRANGED AND MISSED THE THINGS WHICH HE HAD TAKEN + IT DEPENDS ON WHAT THE THINGS WERE SAID HOLMES + YOU MUST REMEMBER THAT WE ARE DEALING WITH A BURGLAR WHO IS A VERY PECULIAR FELLOW AND WHO APPEARS TO WORK ON LINES OF HIS OWN + LOOK FOR EXAMPLE AT THE QUEER LOT OF THINGS WHICH HE TOOK FROM ACTON'S WHAT WAS IT A BALL OF STRING A LETTER WEIGHT AND I DON'T KNOW WHAT OTHER ODDS AND ENDS + QUOTE WELL WE ARE QUITE IN YOUR HANDS MR. HOLMES QUOTE SAID OLD CUNNINGHAM + ANYTHING WHICH YOU OR THE INSPECTOR MAY SUGGEST WILL MOST CERTAINLY BE DONE + IN THE FIRST PLACE SAID HOLMES I SHOULD LIKE YOU TO OFFER A REWARD COMING FROM YOURSELF FOR THE OFFICIALS MAY TAKE A LITTLE TIME BEFORE THEY WOULD AGREE UPON THE SUM AND THESE THINGS CANNOT BE DONE TOO PROMPTLY + I HAVE JOTTED DOWN THE FORM HERE IF YOU WOULD NOT MIND SIGNING IT + FIFTY POUNDS WAS QUITE ENOUGH I THOUGHT + I WOULD WILLINGLY GIVE FIVE HUNDRED SAID THE J. P. TAKING THE SLIP OF PAPER AND THE PENCIL WHICH HOLMES HANDED TO HIM + THIS IS NOT QUITE CORRECT HOWEVER HE ADDED GLANCING OVER THE DOCUMENT + QUOTE I WROTE IT RATHER HURRIEDLY QUOTE + YOU SEE YOU BEGIN WHEREAS AT ABOUT A QUARTER TO ONE ON TUESDAY MORNING AN ATTEMPT WAS MADE AND SO ON + IT WAS AT A QUARTER TO TWELVE AS A MATTER OF FACT + I WAS PAINED AT THE MISTAKE FOR I KNEW HOW KEENLY HOLMES WOULD FEEL ANY SLIP OF THE KIND + IT WAS HIS SPECIALTY TO BE ACCURATE AS TO FACT BUT HIS RECENT ILLNESS HAD SHAKEN HIM AND THIS ONE LITTLE INCIDENT WAS ENOUGH TO SHOW ME THAT HE WAS STILL FAR FROM BEING HIMSELF + HE WAS OBVIOUSLY EMBARRASSED FOR AN INSTANT WHILE THE INSPECTOR RAISED HIS EYEBROWS AND ALEC CUNNINGHAM BURST INTO A LAUGH + THE OLD GENTLEMAN CORRECTED THE MISTAKE HOWEVER AND HANDED THE PAPER BACK TO HOLMES + GET IT PRINTED AS SOON AS POSSIBLE HE SAID I THINK YOUR IDEA IS AN EXCELLENT ONE + HOLMES PUT THE SLIP OF PAPER CAREFULLY AWAY INTO HIS POCKETBOOK + AND NOW SAID HE IT REALLY WOULD BE A GOOD THING THAT WE SHOULD ALL GO OVER THE HOUSE TOGETHER AND MAKE CERTAIN THAT THIS RATHER ERRATIC BURGLAR DID NOT AFTER ALL CARRY ANYTHING AWAY WITH HIM + BEFORE ENTERING HOLMES MADE AN EXAMINATION OF THE DOOR WHICH HAD BEEN FORCED + IT WAS EVIDENT THAT A CHISEL OR STRONG KNIFE HAD BEEN THRUST IN AND THE LOCK FORCED BACK WITH IT + WE COULD SEE THE MARKS IN THE WOOD WHERE IT HAD BEEN PUSHED IN + YOU DON'T USE BARS THEN HE ASKED + QUOTE WE HAVE NEVER FOUND IT NECESSARY QUOTE + YOU DON'T KEEP A DOG + YES BUT HE IS CHAINED ON THE OTHER SIDE OF THE HOUSE + WHEN DO THE SERVANTS GO TO BED + ABOUT TEN + I UNDERSTAND THAT WILLIAM WAS USUALLY IN BED ALSO AT THAT HOUR + QUOTE YES QUOTE + IT IS SINGULAR THAT ON THIS PARTICULAR NIGHT HE SHOULD HAVE BEEN UP + NOW I SHOULD BE VERY GLAD IF YOU WOULD HAVE THE KINDNESS TO SHOW US OVER THE HOUSE MR. CUNNINGHAM + A STONE FLAGGED PASSAGE WITH THE KITCHENS BRANCHING AWAY FROM IT LED BY A WOODEN STAIRCASE DIRECTLY TO THE FIRST FLOOR OF THE HOUSE + IT CAME OUT UPON THE LANDING OPPOSITE TO A SECOND MORE ORNAMENTAL STAIR WHICH CAME UP FROM THE FRONT HALL + OUT OF THIS LANDING OPENED THE DRAWING ROOM AND SEVERAL BEDROOMS INCLUDING THOSE OF MR. CUNNINGHAM AND HIS SON + HOLMES WALKED SLOWLY TAKING KEEN NOTE OF THE ARCHITECTURE OF THE HOUSE + I COULD TELL FROM HIS EXPRESSION THAT HE WAS ON A HOT SCENT AND YET I COULD NOT IN THE LEAST IMAGINE IN WHAT DIRECTION HIS INFERENCES WERE LEADING HIM + MY GOOD SIR SAID MR. CUNNINGHARN WITH SOME IMPATIENCE THIS IS SURELY VERY UNNECESSARY + THAT IS MY ROOM AT THE END OF THE STAIRS AND MY SON'S IS THE ONE BEYOND IT + I LEAVE IT TO YOUR JUDGMENT WHETHER IT WAS POSSIBLE FOR THE THIEF TO HAVE COME UP HERE WITHOUT DISTURBING US + YOU MUSF TRY ROUND AND GET ON A FRESH SCENT I FANCY SAID THE SON WITH A RATHER MALICIOUS SMILE + QUOTE STILL I MUST ASK YOU TO HUMOUR ME A LITTLE FURTHER + I SHOULD LIKE FOR EXAMPLE TO SEE HOW FAR THE WINDOWS OF THE BEDROOMS COMMAND THE FRONT + THIS I UNDERSTAND IS YOUR SON'S ROOM HE PUSHED OPEN THE DOOR AND THAT I PRESUME IS THE DRESSINGROOM IN WHICH HE SAT SMOKING WHEN THE ALARM WAS GIVEN + WHERE DOES THE WINDOW OF THAT LOOK OUT TO + HE STEPPED ACROSS THE BEDROOM PUSHED OPEN THE DOOR AND GLANCED ROUND THE OTHER CHAMBER + I HOPE THAT YOU ARE SATISFIED NOW SAID MR. CUNNINGHAM TARTLY + THANK YOU I THINK I HAVE SEEN ALL THAT I WISHED + THEN IF IT IS REALLY NECESSARY WE CAN GO INTO MY ROOM + QUOTE IF IT IS NOT TOO MUCH TROUBLE QUOTE + THE J. P. SHRUGGED HIS SHOULDERS AND LED THE WAY INTO HIS OWN CHAMBER WHICH WAS A PLAINLY FURNISHED AND COMMONPLACE ROOM + AS WE MOVED ACROSS IT IN THE DIRECTION OF THE WINDOW HOLMES FELL BACK UNTIL HE AND I WERE THE LAST OF THE GROUP + NEAR THE FOOT OF THE BED STOOD A DISH OF ORANGES AND A CARAFE OF WATER + AS WE PASSED IT HOLMES TO MY UNUTTERABLE ASTONISHMENT LEANED OVER IN FRONT OF ME AND DELIBERATELY KNOCKED THE WHOLE THING OVER + THE GLASS SMASHED INTO A THOUSAND PIECES AND THE FRUIT ROLLED ABOUT INTO EVERY CORNER OF THE ROOM + YOU'VE DONE IT NOW WATSON SAID HE COOLLY + A PRETTY MESS YOU'VE MADE OF THE CARPET + I STOOPED IN SOME CONFUSION AND BEGAN TO PICK UP THE FRUIT UNDERSTANDING FOR SOME REASON MY COMPANION DESIRED ME TO TAKE THE BLAME UPON MYSELF + THE OTHERS DID THE SAME AND SET THE TABLE ON ITS LEGS AGAIN + HULLO CRIED THE INSPECTOR WHERE'S HE GOT TO + HOLMES HAD DISAPPEARED + WAIT HERE AN INSTANT SAID YOUNG ALEC CUNNINGHAM + THE FELLOW IS OFF HIS HEAD IN MY OPINION + COME WITH ME FATHER AND SEE WHERE HE HAS GOT TO QUOTE + THEY RUSHED OUT OF THE ROOM LEAVING THE INSPECTOR THE COLONEL AND ME STARING AT EACH OTHER + PON MY WORD I AM INCLINED TO AGREE WITH MASTER ALEC SAID THE OFFICIAL + IT MAY BE THE EFFECT OF THIS ILLNESS BUT IT SEEMS TO ME THAT + HIS WORDS WERE CUT SHORT BY A SUDDEN SCREAM OF HELP + HELP + MURDER + WITH A THRILL I RECOGNIZED THE VOICE AS THAT OF MY FRIEND + I RUSHED MADLY FROM THE ROOM ON TO THE LANDING + THE CRIES WHICH HAD SUNK DOWN INTO A HOARSE INARTICULATE SHOUTING CAME FROM THE ROOM WHICH WE HAD FIRST VISITED + I DASHED IN AND ON INTO THE DRESSING ROOM BEYOND + THE TWO CUNNINGHAMS WERE BENDING OVER THE PROSTRATE FIGURE OF SHERLOCK HOLMES THE YOUNGER CLUTCHING HIS THROAT WITH BOTH HANDS WHILE THE ELDER SEEMED TO BE TWISTING ONE OF HIS WRISTS + IN AN INSTANT THE THREE OF US HAD TORN THEM AWAY FROM HIM AND HOLMES STAGGERED TO HIS FEET VERY PALE AND EVIDENTLY GREATLY EXHAUSTED + ARREST THESE MEN INSPECTOR HE GASPED + QUOTE ON WHAT CHARGE QUOTE + THAT OF MURDERING THEIR COACHMAN WILLIAM KIRWAN + THE INSPECTOR STARED ABOUT HIM IN BEWILDERMENT + OH COME NOW MR. HOLMES SAID HE AT LAST I'M SURE YOU DON'T REALLY MEAN TO + TUT MAN LOOK AT THEIR FACES CRIED HOLMES CURTLY + NEVER CERTAINLY HAVE I SEEN A PLAINER CONFESSION OF GUILT UPON HUMAN COUNTENANCES + THE OLDER MAN SEEMED NUMBED AND DAZED WITH A HEAVY SULLEN EXPRESSION UPON HIS STRONGLY MARKED FACE + THE SON ON THE OTHER HAND HAD DROPPED ALL THAT JAUNTY DASHING STYLE WHICH HAD CHARACTERIZED HIM AND THE FEROCITY OF A DANGEROUS WILD BEAST GLEAMED IN HIS DARK EYES AND DISTORTED HIS HANDSOME FEATURES + THE INSPECTOR SAID NOTHING BUT STEPPING TO THE DOOR HE BLEW HIS WHISTLE + TWO OF HIS CONSTABLES CAME AT THE CALL + I HAVE NO ALTERNATIVE MR. CUNNINGHAM SAID HE + I TRUST THAT THIS MAY ALL PROVE TO BE AN ABSURD MISTAKE BUT YOU CAN SEE THAT AH WOULD YOU + DROP IT QUOTE + HE STRUCK OUT WITH HIS HAND AND A REVOLVER WHICH THE YOUNGER MAN WAS IN THE ACT OF COCKING CLATTERED DOWN UPON THE FLOOR + KEEP THAT SAID HOLMES QUIETLY PUTTING HIS FOOT UPON IT YOU WILL FIND IT USEFUL AT THE TRIAL + BUT THIS IS WHAT WE REALLY WANTED + HE HELD UP A LITTLE CRUMPLED PIECE OF PAPER + THE REMAINDER OF THE SHEET CRIED THE INSPECTOR + PRECISELY + AND WHERE WAS IT + QUOTE WHERE I WAS SURE IT MUST BE + I'LL MAKE THE WHOLE MATTER CLEAR TO YOU PRESENTLY + I THINK COLONEL THAT YOU AND WATSON MIGHT RETURN NOW AND I WILL BE WITH YOU AGAIN IN AN HOUR AT THE FURTHEST + THE INSPECTOR AND I MUST HAVE A WORD WITH THE PRISONERS BUT YOU WILL CERTAINLY SEE ME BACK AT LUNCHEON TIME + SHERLOCK HOLMES WAS AS GOOD AS HIS WORD FOR ABOUT ONE O'CLOCK HE REJOINED US IN THE COLONEL'S SMOKING ROOM + HE WAS ACCOMPANIED BY A LITTLE ELDERLY GENTLEMAN WHO WAS INTRODUCED TO ME AS THE MR. ACTON WHOSE HOUSE HAD BEEN THE SCENE OF THE ORIGINAL BURGLARY + I WISHED MR. ACTON TO BE PRESENT WHILE I DEMONSTRATED THIS SMALL MATTER TO YOU SAID HOLMES FOR IT IS NATURAL THAT HE SHOULD TAKE A KEEN INTEREST IN THE DETAILS + I AM AFRAID MY DEAR COLONEL THAT YOU MUST REGRET THE HOUR THAT YOU TOOK IN SUCH A STORMY PETREL AS I AM + ON THE CONTRARY ANSWERED THE COLONEL WARMLY I CONSIDER IT THE GREATEST PRIVILEGE TO HAVE BEEN PERMITTED TO STUDY YOUR METHODS OF WORKING + I CONFESS THAT THEY QUITE SURPASS MY EXPECTATIONS AND THAT I AM UTTERLY UNABLE TO ACCOUNT FOR YOUR RESULT + I HAVE NOT YET SEEN THE VESTIGE OF A CLUE + QUOTE I AM AFRAID THAT MY EXPLANATION MAY DISILLUSION YOU BUT IT HAS ALWAYS BEEN MY HABIT TO HIDE NONE OF MY METHODS EITHER FROM MY FRIEND WATSON OR FROM ANYONE WHO MIGHT TAKE AN INTELLIGENT INTEREST IN THEM + BUT FIRST AS I AM RATHER SHAKEN BY THE KNOCKING ABOUT WHICH I HAD IN THE DRESSING ROOM + I THINK THAT I SHALL HELP MYSELF TO A DASH OF YOUR BRANDY COLONEL + MY STRENGTH HAS BEEN RATHER TRIED OF LATE + I TRUST YOU HAD NO MORE OF THOSE NERVOUS ATTACKS + SHERLOCK HOLMES LAUGHED HEARTILY + WE WILL COME TO THAT IN ITS TURN SAID HE + I WILL LAY AN ACCOUNT OF THE CASE BEFORE YOU IN ITS DUE ORDER SHOWING YOU THE VARIOUS POINTS WHICH GUIDED ME IN MY DECISION + PRAY INTERRUPT ME IF THERE IS ANY INFERENCE WHICH IS NOT PERFECTLY CLEAR TO YOU + IT IS OF THE HIGHEST IMPORTANCE IN THE ART OF DETECTION TO BE ABLE TO RECOGNIZE OUT OF A NUMBER OF FACTS WHICH ARE INCIDENTAL AND WHICH VITAL + OTHERWISE YOUR ENERGY AND ATTENTION MUST BE DISSIPATED INSTEAD OF BEING CONCENTRATED + NOW IN THIS CASE THERE WAS NOT THE SLIGHTEST DOUBT IN MY MIND FROM THE FIRST THAT THE KEY OF THE WHOLE MATTER MUST BE LOOKED FOR IN THE SCRAP OF PAPER IN THE DEAD MAN'S HAND + QUOTE BEFORE GOING INTO THIS I WOULD DRAW YOUR ATTENTION TO THE FACT THAT IF ALEC CUNNINGHAM'S NARRATIVE WAS CORRECT AND IF THE ASSAILANT AFTER SHOOTING WILLIAM KIRWAN HAD INSTANTLY FLED THEN IT OBVIOUSLY COULD NOT BE HE WHO TORE THE PAPER FROM THE DEAD MAN'S HAND + BUT IF IT WAS NOT HE IT MUST HAVE BEEN ALEC CUNNINGHAM HIMSELF FOR BY THE TIME THAT THE OLD MAN HAD DESCENDED SEVERAL SERVANTS WERE UPON THE SCENE + THE POINT IS A SIMPLE ONE BUT THE INSPECTOR HAD OVERLOOKED IT BECAUSE HE HAD STARTED WITH THE SUPPOSITION THAT THESE COUNTY MAGNATES HAD HAD NOTHING TO DO WITH THE MATTER + NOW I MAKE A POINT OF NEVER HAVING ANY PREJUDICES AND OF FOLLOWING DOCILELY WHEREVER FACT MAY LEAD ME AND SO IN THE VERY FIRST STAGE OF THE INVESTIGATION I FOUND MYSELF LOOKING A LITTLE ASKANCE AT THE PART WHICH HAD BEEN PLAYED BY MR. ALEC CUNNINGHAM + AND NOW I MADE A VERY CAREFUL EXAMINATION OF THE CORNER OF PAPER WHICH THE INSPECTOR HAD SUBMITTED TO US + IT WAS AT ONCE CLEAR TO ME THAT IT FORMED PART OF A VERY REMARKABLE DOCUMENT + HERE IT IS + DO YOU NOT NOW OBSERVE SOMETHING VERY SUGGESTIVE ABOUT IT + IT HAS A VERY IRREGULAR LOOK SAID THE COLONEL + MY DEAR SIR CRIED HOLMES THERE CANNOT BE THE LEAST DOUBT IN THE WORLD THAT IT HAS BEEN WRITTEN BY TWO PERSONS DOING ALTERNATE WORDS + WHEN I DRAW YOUR ATTENTION TO THE STRONG T'S OF AT AND TO AND ASK YOU TO COMPARE THEM WITH THE WEAK ONES OF QUARTER AND TWELVE YOU WILL INSTANTLY RECOGNIZE THE FACT + A VERY BRIEF ANALYSIS OF THESE FOUR WORDS WOULD ENABLE YOU TO SAY WITH THE UTMOST CONFIDENCE THAT THE LEARN AND THE MAYBE ARE WRITTEN IN THE STRONGER HAND AND THE WHAT IN THE WEAKER + QUOTE BY JOVE IT'S AS CLEAR AS DAY QUOTE CRIED THE COLONEL + WHY ON EARTH SHOULD TWO MEN WRITE A LETTER IN SUCH A FASHION + OBVIOUSLY THE BUSINESS WAS A BAD ONE AND ONE OF THE MEN WHO DISTRUSTED THE OTHER WAS DETERMINED THAT WHATEVER WAS DONE EACH SHOULD HAVE AN EQUAL HAND IN IT + NOW OF THE TWO MEN IT IS CLEAR THAT THE ONE WHO WROTE THE AT AND TO WAS THE RINGLEADER + HOW DO YOU GET AT THAT + WE MIGHT DEDUCE IT FROM THE MERE CHARACTER OF THE ONE HAND AS COMPARED WITH THE OTHER + BUT WE HAVE MORE ASSURED REASONS THAN THAT FOR SUPPOSING IT + IF YOU EXAMINE THIS SCRAP WITH ATTENTION YOU WILL COME TO THE CONCLUSION THAT THE MAN WITH THE STRONGER HAND WROTE ALL HIS WORDS FIRST LEAVING BLANKS FOR THE OTHER TO FILL UP + THESE BLANKS WERE NOT ALWAYS SUFFICIENT AND YOU CAN SEE THAT THE SECOND MAN HAD A SQUEEZE TO FIT HIS QUARTER IN BETWEEN THE AT AND THE TO SHOWING THAT THE LATTER WERE ALREADY WRITTEN + THE MAN WHO WROTE ALL HIS WORDS FIRST IS UNDOUBTEDLY THE MAN WHO PLANNED THE AFFAIR QUOTE + EXCELLENT CRIED MR. ACTON + BUT VERY SUPERFICIAL SAID HOLMES + WE COME NOW HOWEVER TO A POINT WHICH IS OF IMPORTANCE + YOU MAY NOT BE AWARE THAT THE DEDUCTION OF A MAN'S AGE FROM HIS WRITING IS ONE WHICH HAS BEEN BROUGHT TO CONSIDEIABLE ACCURACY BY EXPERTS + IN NORMAL CASES ONE CAN PLACE A MAN IN HIS TRUE DECADE WITH TOLERABLE CONFIDENCE + I SAY NORMAL CASES BECAUSE ILL HEALTH AND PHYSICAL WEAKNESS REPRODUCE THE SIGNS OF OLD AGE EVEN WHEN THE INVALID IS A YOUTH + IN THIS CASE LOOKING AT THE BOLD STRONG HAND OF THE ONE AND THE RATHER BROKEN BACKED APPEARANCE OF THE OTHER WHICH STILL RETAINS ITS LEGIBILITY ALTHOUGH THE T'S HAVE BEGUN TO LOSE THEIR CROSSING WE CAN SAY THAT THE ONE WAS A YOUNG MAN AND THE OTHER WAS ADVANCED IN YEARS WITHOUT BEING POSITIVELY DECREPIT + EXCELLENT CRIED MR. ACTON AGAIN + QUOTE THERE IS A FURTHER POINT HOWEVER WHICH IS SUBTLER AND OF GREATER INTEREST + THERE IS SOMETHING IN COMMON BETWEEN THESE HANDS + THEY BELONG TO MEN WHO ARE BLOOD RELATIVES + IT MAY BE MOST OBVIOUS TO YOU IN THE GREEK E'S BUT TO ME THERE ARE MANY SMALL POINTS WHICH INDICATE THE SAME THING + I HAVE NO DOUBT AT ALL THAT A FAMILY MANNERISM CAN BE TRACED IN THESE TWO SPECIMENS OF WRITING + I AM ONLY OF COURSE GIVING YOU THE LEADING RESULTS NOW OF MY EXAMINATION OF THE PAPER + THERE WERE TWENTY THREE OTHER DEDUCTIONS WHICH WOULD BE OF MORE INTEREST TO EXPERTS THAN TO YOU + THEY ALL TEND TO DEEPEN THE IMPRESSION UPON MY MIND THAT THE CUNNINGHAMS FATHER AND SON HAD WRITTEN THIS LETTER + HAVING GOT SO FAR MY NEXT STEP WAS OF COURSE TO EXAMINE INTO THE DETAILS OF THE CRIME AND TO SEE HOW FAR THEY WOULD HELP US + I WENT UP TO THE HOUSE WITH THE INSPECTOR AND SAW ALL THAT WAS TO BE SEEN + THE WOUND UPON THE DEAD MAN WAS AS I WAS ABLE TO DETERMINE WITH ABSOLUTE CONFIDENCE FIRED FROM A REVOLVER AT THE DISTANCE OF SOMETHING OVER FOUR YARDS + THERE WAS NO POWDERBLACKENING ON THE CLOTHES + EVIDENTLY THEREFORE ALEC CUNNINGHAM HAD LIED WHEN HE SAID THAT THE TWO MEN WERE STRUGGLING WHEN THE SHOT WAS FIRED + AGAIN BOTH FATHER AND SON AGREED AS TO THE PLACE WHERE THE MAN ESCAPED INTO THE ROAD + AT THAT POINT HOWEVER AS IT HAPPENS THERE IS A BROADISH DITCH MOIST AT THE BOTTOM + AS THERE WERE NO INDICATIONS OF BOOT MARKS ABOUT THIS DITCH I WAS ABSOLUTELY SURE NOT ONLY THAT THE CUNNINGHAMS HAD AGAIN LIED BUT THAT THERE HAD NEVER BEEN ANY UNKNOWN MAN UPON THE SCENE AT ALL + AND NOW I HAVE TO CONSIDER THE MOTIVE OF THIS SINGULAR CRIME + TO GET AT THIS I ENDEAVOURED FIRST OF ALL TO SOLVE THE REASON OF THE ORIGINAL BURGLARY AT MR. ACTON'S + I UNDERSTOOD FROM SOMETHING WHICH THE COLONEL TOLD US THAT A LAWSUIT HAD BEEN GOING ON BETWEEN YOU MR. ACTON AND THE CUNNINGHAMS + OF COURSE IT INSTANTLY OCCURRED TO ME THAT THEY HAD BROKEN INTO YOUR LIBRARY WITH THE INTENTION OF GETTING AT SOME DOCUMENT WHICH MIGHT BE OF IMPORTANCE IN THE CASE + PRECISELY SO SAID MR. ACTON + THERE CAN BE NO POSSIBLE DOUBT AS TO THEIR INTENTIONS + I HAVE THE CLEAREST CLAIM UPON HALF OF THEIR PRESENT ESTATE AND IF THEY COULD HAVE FOUND A SINGLE PAPER WHICH FORTUNATELY WAS IN THE STRONG BOX OF MY SOLICITORS THEY WOULD UNDOUBTEDLY HAVE CRIPPLED OUR CASE QUOTE + THERE YOU ARE SAID HOLMES SMILING + IT WAS A DANGEROUS RECKLESS ATTEMPT IN WHICH I SEEM TO TRACE THE INFLUENCE OF YOUNG ALEC + HAVING FOUND NOTHING THEY TRIED TO DIVERT SUSPICION BY MAKING IT APPEAR TO BE AN ORDINARY BURGLARY TO WHICH END THEY CARRIED OFF WHATEVER THEY COULD LAY THEIR HANDS UPON + THAT IS ALL CLEAR ENOUGH BUT THERE WAS MUCH THAT WAS STILL OBSCURE + WHAT I WANTED ABOVE ALL. WAS TO GET THE MISSING PART OF THAT NOTE + I WAS CERTAIN THAT ALEC HAD TORN IT OUT OF THE DEAD MAN'S HAND AND ALMOST CERTAIN THAT HE MUST HAVE THRUST IT INTO THE POCKET OF HIS DRESSING GOWN + WHERE ELSE COULD HE HAVE PUT IT + THE ONLY QUESTION WAS WHETHER IT WAS STILL THERE + IT WAS WORTH AN EFFORT TO FIND OUT AND FOR THAT OBJECT WE ALL WENT UP TO THE HOUSE + THE CUNNINGHAMS JOINED US. AS YOU DOUBTLESS REMEMBER OUTSIDE THE KITCHEN DOOR + IT WAS OF COURSE OF THE VERY FIRST IMPORTANCE THAT THEY SHOULD NOT BE REMINDED OF THE EXISTENCE OF THIS PAPER OTHERWISE THEY WOULD NATURALLY DESTROY IT WITHOUT DELAY + THE INSPECTOR WAS ABOUT TO TELL THEM THE IMPORTANCE WHICH WE ATTACHED TO IT WHEN BY THE LUCKIEST CHANCE IN THE WORLD I TUMBLED DOWN IN A SORT OF FIT AND SO CHANGED THE CONVERSATION + GOOD HEAVENS CNED THE COLONEL LAUGHING DO YOU MEAN TO SAY ALL OUR SYMPATHY WAS WASTED AND YOUR FIT AN IMPOSTURE + QUOTE SPEAKING PROFESSIONALLY IT WAS ADMIRABLY DONE QUOTE CRIED I LOOKING IN AMAZEMENT AT THIS MAN WHO WAS FOREVER CONFOUNDING ME WITH SOME NEW PHASE OF HIS ASTUTENESS + IT IS AN ART WHICH IS OFTEN USEFUL SAID HE + WHEN I RECOVERED I MANAGED BY A DEVICE WHICH HAD PERHAPS SOME LITTLE MERIT OF INGENUITY TO GET OLD CUNNINGHAM TO WRITE THE WORD TWELVE SO THAT I MIGHT COMPARE IT WITH THE TWELVE UPON THE PAPER + OH WHAT AN ASS I HAVE BEEN + I EXCLAIMED + I COULD SEE THAT YOU WERE COMMISERATING ME OVER MY WEAKNESS SAID HOLMES LAUGHING + I WAS SORRY TO CAUSE YOU THE SYMPATHETIC PAIN WHICH I KNOW THAT YOU FELT + WE THEN WENT UPSTAIRS TOGETHER AND HAVING ENTERED THE ROOM AND SEEN THE DRESSING GOWN HANGING UP BEHIND THE DOOR I CONTRIVED BY UPSETTING A TABLE TO ENGAGE THEIR ATTENTION FOR THE MOMENT AND SLIPPED BACK TO EXAMINE THE POCKETS + I HAD HARDLY GOT THE PAPER HOWEVER WHICH WAS AS I HAD EXPECTED IN ONE OF THEM WHEN THE TWO CUNNINGHAMS WERE ON ME AND WOULD I VERILY BELIEVE HAVE MURDERED ME THEN AND THERE BUT FOR YOUR PROMPT AND FRIENDLY AID + AS IT IS I FEEL THAT YOUNG MAN'S GRIP ON MY THROAT NOW AND THE FATHER HAS TWISTED MY WRIST ROUND IN THE EFFORT TO GET THE PAPER OUT OF MY HAND + THEY SAW THAT I MUST KNOW ALL ABOUT IT YOU SEE AND THE SUDDEN CHANGE FROM ABSOLUTE SECURITY TO COMPLETE DESPAIR MADE THEM PERFECTLY DESPERATE + QUOTE I HAD A LITTLE TALK WITH OLD CUNNINGHAM AFTERWARDS AS TO THE MOTIVE OF THE CRIME + HE WAS TRACTABLE ENOUGH THOUGH HIS SON WAS A PERFECT DEMON READY TO BLOW OUT HIS OWN OR ANYBODY ELSE'S BRAINS IF HE COULD HAVE GOT TO HIS REVOLVER + WHEN CUNNINGHAM SAW THAT THE CASE AGAINST HIM WAS SO STRONG HE LOST ALL HEART AND MADE A CLEAN BREAST OF EVERYTHING + IT SEEMS THAT WILLIAM HAD SECRETLY FOLLOWED HIS TWO MASTERS ON THE NIGHT WHEN THEY MADE THEIR RAID UPON MR. ACTON'S AND HAVING THUS GOT THEM INTO HIS POWER PROCEEDED UNDER THREATS OF EXPOSURE TO LEVY BLACKMAIL UPON THEM + MR. ALEC HOWEVER WAS A DANGEROUS MAN TO PLAY GAMES OF THAT SORT WITH + IT WAS A STROKE OF POSITIVE GENIUS ON HIS PART TO SEE IN THE BURGLARY SCARE WHICH WAS CONVULSING THE COUNTRYSIDE AN OPPORTUNITY OF PLAUSIBLY GETTING RID OF THE MAN WHOM HE FEARED + WILLIAM WAS DECOYED UP AND SHOT. AND HAD THEY ONLY GOT THE WHOLE OF THE NOTE AND PAID A LITTLE MORE ATTENTION TO DETAIL IN THEIR ACCESSORIES IT IS VERY POSSIBLE THAT SUSPICION MIGHT NEVER HAVE BEEN AROUSED + AND THE NOTE + I ASKED + SHERLOCK HOLMES PLACED THE SUBJOINED PAPER BEFORE US + IF YOU WILL ONLY COME AROUND TO THE EAST GATE YOU WILL WILL VERY MUCH SURPRISE YOU AND BE OF THE GREATEST SERVICE TO YOU AND ALSO TO ANNIE MORRISON + BUT SAY NOTHING TO ANYONE UPON THE MATTER + IT IS VERY MUCH THE SORT OF THING THAT I EXPECTED SAID HE + OF COURSE WE DO NOT YET KNOW WHAT THE RELATIONS MAY HAVE BEEN BETWEEN ALEC CUNNINGHAM WILLIAM KIRWAN AND ANNIE MORRISON + THE RESULT SHOWS THAT THE TRAP WAS SKILFULLY BAITED + I AM SURE THAT YOU CANNOT FAIL TO BE DELIGHTED WITH THE TRACES OF HEREDITY SHOWN IN THE P'S AND IN THE TAILS OF THE G'S + THE ABSENCE OF THE I. DOTS IN THE OLD MAN'S WRITING IS ALSO MOST CHARACTERISTIC + WATSON I THINK OUR QUIET REST IN THE COUNTRY HAS BEEN A DISTINCT SUCCESS AND I SHALL CERTAINLY RETURN MUCH INVIGORATED TO BAKER STREET TO MORROW diff --git a/samples/LMTutorial/train/resident_patient.txt b/samples/LMTutorial/train/resident_patient.txt new file mode 100755 index 0000000..b3ff4c3 --- /dev/null +++ b/samples/LMTutorial/train/resident_patient.txt @@ -0,0 +1,460 @@ + IN GLANCING OVER THE SOMEWHAT INCOHERENT SERIES OF MEMOIRS WITH WHICH I HAVE ENDEAVOURED TO ILLUSTRATE A FEW OF THE MENTAL PECULIARITIES OF MY FRIEND MR. SHERLOCK HOLMES I HAVE BEEN STRUCK BY THE DIFFICULTY WHICH I HAVE EXPERIENCED IN PICKING OUT EXAMPLES WHICH SHALL IN EVERY WAY ANSWER MY PURPOSE + FOR IN THOSE CASES IN WHICH HOLMES HAS PERFORMED SOME TOUR DE FORCE OF ANALYTICAL REASONING AND HAS DEMONSTRATED THE VALUE OF HIS PECULIAR METHODS OF INVESTIGATION THE FACTS THEMSELVES HAVE OFTEN BEEN SO SLIGHT OR SO COMMONPLACE THAT I COULD NOT FEEL JUSTIFIED IN LAYING THEM BEFORE THE PUBLIC + ON THE OTHER HAND IT HAS FREQUENTLY HAPPENED THAT HE HAS BEEN CONCERNED IN SOME RESEARCH WHERE THE FACTS HAVE BEEN OF THE MOST REMARKABLE AND DRAMATIC CHARACTER BUT WHERE THE SHARE WHICH HE HAS HIMSELF TAKEN IN DETERMINING THEIR CAUSES HAS BEEN LESS PRONOUNCED THAN I AS HIS BIOGRAPHER COULD WISH + THE SMALL MATTER WHICH I HAVE CHRONICLED UNDER THE HEADING OF QUOTE A STUDY IN SCARLET QUOTE AND THAT OTHER LATER ONE CONNECTED WITH THE LOSS OF THE GLORIA SCOTT MAY SERVE AS EXAMPLES OF THIS SCYLLA AND CHARYBDIS WHICH ARE FOREVER THREATENING THE HISTORIAN + IT MAY BE THAT IN THE BUSINESS OF WHICH I AM NOW ABOUT TO WRITE THE PART WHICH MY FRIEND PLAYED IS NOT SUFFICIENTLY ACCENTUATED AND YET THE WHOLE TRAIN OF CIRCUMSTANCES IS SO REMARKABLE THAT I CANNOT BRING MYSELF TO OMIT IT ENTIRELY FROM THIS SERIES + IT HAD BEEN A CLOSE RAINY DAY IN OCTOBER + OUR BLINDS WERE HALF DRAWN AND HOLMES LAY CURLED UPON THE SOFA READING AND RE READING A LETTER WHICH HE HAD RECEIVED BY THE MORNING POST + FOR MYSELF MY TERM OF SERVICE IN INDIA HAD TRAINED ME TO STAND HEAT BETTER THAN COLD AND A THERMOMETER OF NINETY WAS NO HARDSHIP + BUT THE PAPER WAS UNINTERESTING + PARLIAMENT HAD RISEN + EVERYBODY WAS OUT OF TOWN AND I YEARNED FOR THE GLADES OF THE NEW FOREST OR THE SHINGLE OF SOUTHSEA + A DEPLETED BANK ACCOUNT HAD CAUSED ME TO POSTPONE MY HOLIDAY AND AS TO MY COMPANION NEITHER THE COUNTRY NOR THE SEA PRESENTED THE SLIGHTEST ATTRACTION TO HIM + HE LOVED TO LIE IN THE VERY CENTRE OF FIVE MILLIONS OF PEOPLE WITH HIS FILAMENTS STRETCHING OUT AND RUNNING THROUGH THEM RESPONSIVE TO EVERY LITTLE RUMOUR OR SUSPICION OF UNSOLVED CRIME + APPRECIATION OF NATURE FOUND NO PLACE AMONG HIS MANY GIFTS AND HIS ONLY CHANGE WAS WHEN HE TURNED HIS MIND FROM THE EVILDOER OF THE TOWN TO TRACK DOWN HIS BROTHER OF THE COUNTRY + FINDING THAT HOLMES WAS TOO ABSORBED FOR CONVERSATION I HAD TOSSED ASIDE THE BARREN PAPER AND LEANING BACK IN MY CHAIR I FELL INTO A BROWN STUDY + SUDDENLY MY COMPANION'S VOICE BROKE IN UPON MY THOUGHTS + YOU ARE RIGHT WATSON SAID HE + IT DOES SEEM A VERY PREPOSTEROUS WAY OF SETTLING A DISPUTE + MOST PREPOSTEROUS + I EXCLAIMED AND THEN SUDDENLY REALIZING HOW HE HAD ECHOED THE INMOST THOUGHT OF MY SOUL I SAT UP IN MY CHAIR AND STARED AT HIM IN BLANK AMAZEMENT + WHAT IS THIS HOLMES + I CRIED + THIS IS BEYOND ANYTHING WHICH I COULD HAVE IMAGINED + HE LAUGHED HEARTILY AT MY PERPLEXITY + QUOTE YOU REMEMBER QUOTE SAID HE QUOTE THAT SOME LITTLE TIME AGO WHEN I READ YOU THE PASSAGE IN ONE OF POE'S SKETCHES IN WHICH A CLOSE REASONER FOLLOWS THE UNSPOKEN THOUGHTS OF HIS COMPANION YOU WERE INCLINED TO TREAT THE MATTER AS A MERE TOUR DE FORCE OF THE AUTHOR + ON MY REMARKING THAT I WAS CONSTANTLY IN THE HABIT OF DOING THE SAME THING YOU EXPRESSED INCREDULITY + OH NO + PERHAPS NOT WITH YOUR TONGUE MY DEAR WATSON BUT CERTAINLY WITH YOUR EYEBROWS + SO WHEN I SAW YOU THROW DOWN YOUR PAPER AND ENTER UPON A TRAIN OF THOUGHT I WAS VERY HAPPY TO HAVE THE OPPORTUNITY OF READING IT OFF AND EVENTUALLY OF BREAKING INTO IT AS A PROOF THAT I HAD BEEN IN RAPPORT WITH YOU + BUT I WAS STILL FAR FROM SATISFIED + IN THE EXAMPLE WHICH YOU READ TO ME SAID I THE REASONER DREW HIS CONCLUSIONS FROM THE ACTIONS OF THE MAN WHOM HE OBSERVED + IF I REMEMBER RIGHT HE STUMBLED OVER A HEAP OF STONES LOOKED UP AT THE STARS AND SO ON + BUT I HAVE BEEN SEATED QUIETLY IN MY CHAIR AND WHAT CLUES CAN I HAVE GIVEN YOU QUOTE + YOU DO YOURSELF AN INJUSTICE + THE FEATURES ARE GIVEN TO MAN AS THE MEANS BY WHICH HE SHALL EXPRESS HIS EMOTIONS AND YOURS ARE FAITHFUL SERVANTS + DO YOU MEAN TO SAY THAT YOU READ MY TRAIN OF THOUGHTS FROM MY FEATURES + YOUR FEATURES AND ESPECIALLY YOUR EYES + PERHAPS YOU CANNOT YOURSELF RECALL HOW YOUR REVERIE COMMENCED + QUOTE NO I CANNOT QUOTE + THEN I WILL TELL YOU + AFTER THROWING DOWN YOUR PAPER WHICH WAS THE ACTION WHICH DREW MY ATTENTION TO YOU YOU SAT FOR HALF A MINUTE WITH A VACANT EXPRESSION + THEN YOUR EYES FIXED THEMSELVES UPON YOUR NEWLY FRAMED PICTURE OF GENERAL GORDON AND I SAW BY THE ALTERATION IN YOUR FACE THAT A TRAIN OF THOUGHT HAD BEEN STARTED + BUT IT DID NOT LEAD VERY FAR + YOUR EYES TURNED ACROSS TO THE UNFRAMED PORTRAIT OF HENRY WARD BEECHER WHICH STANDS UPON THE TOP OF YOUR BOOKS + YOU THEN GLANCED UP AT THE WALL AND OF COURSE YOUR MEANING WAS OBVIOUS + YOU WERE THINKING THAT IF THE PORTRAIT WERE FRAMED IT WOULD JUST COVER THAT BARE SPACE AND CORRESPOND WITH GORDON'S PICTURE OVER THERE + YOU HAVE FOLLOWED ME WONDERFULLY + I EXCLAIMED + SO FAR I COULD HARDLY HAVE GONE ASTRAY + BUT NOW YOUR THOUGHTS WENT BACK TO BEECHER AND YOU LOOKED HARD ACROSS AS IF YOU WERE STUDYING THE CHARACTER IN HIS FEATURES + THEN YOUR EYES CEASED TO PUCKER BUT YOU CONTINUED TO LOOK ACROSS AND YOUR FACE WAS THOUGHTFUL + YOU WERE RECALLING THE INCIDENTS OF BEECHER'S CAREER + I WAS WELL AWARE THAT YOU COULD NOT DO THIS WITHOUT THINKING OF THE MISSION WHICH HE UNDERTOOK ON BEHALF OF THE NORTH AT THE TIME OF THE CIVIL WAR FOR I REMEMBER YOU EXPRESSING YOUR PASSIONATE INDIGNATION AT THE WAY IN WHICH HE WAS RECEIVED BY THE MORE TURBULENT OF OUR PEOPLE + YOU FELT SO STRONGLY ABOUT IT THAT I KNEW YOU COULD NOT THINK OF BEECHER WITHOUT THINKING OF THAT ALSO + WHEN A MOMENT LATER I SAW YOUR EYES WANDER AWAY FROM THE PICTURE I SUSPECTED THAT YOUR MIND HAD NOW TURNED TO THE CIVIL WAR AND WHEN I OBSERVED THAT YOUR LIPS SET YOUR EYES SPARKLED AND YOUR HANDS CLINCHED I WAS POSITIVE THAT YOU WERE INDEED THINKING OF THE GALLANTRY WHICH WAS SHOWN BY BOTH SIDES IN THAT DESPERATE STRUGGLE + BUT THEN AGAIN YOUR FACE GREW SADDER YOU SHOOK YOUR HEAD + YOU WERE DWELLING UPON THE SADNESS AND HORROR AND USELESS WASTE OF LIFE + YOUR HAND STOLE TOWARDS YOUR OWN OLD WOUND AND A SMILE QUIVERED ON YOUR LIPS WHICH SHOWED ME THAT THE RIDICULOUS SIDE OF THIS METHOD OF SETTLING INTERNATIONAL QUESTIONS HAD FORCED ITSELF UPON YOUR MIND + AT THIS POINT ONE AGREED WITH YOU THAT IT WAS PREPOSTEROUS AND WAS GLAD TO FIND THAT ALL MY DEDUCTIONS HAD BEEN CORRECT + ABSOLUTELY SAID I. AND NOW THAT YOU HAVE EXPLAINED IT I CONFESS THAT I AM AS AMAZED AS BEFORE + QUOTE IT WAS VERY SUPERFICIAL MY DEAR WATSON I ASSURE YOU + I SHOULD NOT HAVE INTRUDED IT UPON YOUR ATTENTION HAD YOU NOT SHOWN SOME INCREDULITY THE OTHER DAY + BUT THE EVENING HAS BROUGHT A BREEZE WITH IT + WHAT DO YOU SAY TO A RAMBLE THROUGH LONDON + I WAS WEARY OF OUR LITTLE SITTING ROOM AND GLADLY ACQUIESCED + FOR THREE HOURS WE STROLLED ABOUT TOGETHER WATCHING THE EVERCHANGING KALEIDOSCOPE OF LIFE AS IT EBBS AND FLOWS THROUGH FLEET STREET AND THE STRAND + HIS CHARACTERISTIC TALK WITH ITS KEEN OBSERVANCE OF DETAIL AND SUBTLE POWER OF INFERENCE HELD ME AMUSED AND ENTHRALLED + IT WAS TEN O'CLOCK BEFORE WE REACHED BAKER STREET AGAIN + A BROUGHAM WAS WAITING AT OUR DOOR + HUM + A DOCTOR'S GENERAL PRACTITIONER I PERCEIVE SAID HOLMES + NOT BEEN LONG IN PRACTICE BUT HAS A GOOD DEAL TO DO + COME TO CONSULT US I FANCY + LUCKY WE CAME BACK + I WAS SUFFICIENTLY CONVERSANT WITH HOLMES'S METHODS TO BE ABLE TO FOLLOW HIS REASONING AND TO SEE THAT THE NATURE AND STATE OF THE VARIOUS MEDICAL INSTRUMENTS IN THE WICKER BASKET WHICH HUNG IN THE LAMP LIGHT INSIDE THE BROUGHAM HAD GIVEN HIM THE DATA FOR HIS SWIFT DEDUCTION + THE LIGHT IN OUR WINDOW ABOVE SHOWED THAT THIS LATE VISIT WAS INDEED INTENDED FOR US + WITH SOME CURIOSITY AS TO WHAT COULD HAVE SENT A BROTHER MEDICO TO US AT SUCH AN HOUR I FOLLOWED HOLMES INTO OUR SANCTUM + A PALE TAPER FACED MAN WITH SANDY WHISKERS ROSE UP FROM A CHAIR BY THE FIRE AS WE ENTERED + HIS AGE MAY NOT HAVE BEEN MORE THAN THREE OR FOUR AND THIRTY BUT HIS HAGGARD EXPRESSION AND UNHEALTHY HUE TOLD OF A LIFE WHICH HAD SAPPED HIS STRENGTH AND ROBBED HIM OF HIS YOUTH + HIS MANNER WAS NERVOUS AND SHY LIKE THAT OF A SENSITIVE GENTLEMAN AND THE THIN WHITE HAND WHICH HE LAID ON THE MANTELPIECE AS HE ROSE WAS THAT OF AN ARTIST RATHER THAN OF A SURGEON + HIS DRESS WAS QUIET AND SOMBRE A BLACK FROCKCOAT DARK TROUSERS AND A TOUCH OF COLOUR ABOUT HIS NECKTIE + QUOTE GOOD EVENING DOCTOR QUOTE SAID HOLMES CHEERILY + I AM GLAD TO SEE THAT YOU HAVE ONLY BEEN WAITING A VERY FEW MINUTES + YOU SPOKE TO MY COACHMAN THEN + NO IT WAS THE CANDLE ON THE SIDE TABLE THAT TOLD ME + PRAY RESUME YOUR SEAT AND LET ME KNOW HOW I CAN SERVE YOU + MY NAME IS DOCTOR PERCY TREVELYAN SAID OUR VISITOR AND I LIVE AT FOUR HUNDRED THREE BROOK STREET + QUOTE ARE YOU NOT THE AUTHOR OF A MONOGRAPH UPON OBSCURE NERVOUS LESIONS QUOTE + I ASKED + HIS PALE CHEEKS FLUSHED WITH PLEASURE AT HEARING THAT HIS WORK WAS KNOWN TO ME + I SO SELDOM HEAR OF THE WORK THAT I THOUGHT IT WAS QUITE DEAD SAID HE + MY PUBLISHERS GAVE ME A MOST DISCOURAGING ACCOUNT OF ITS SALE + YOU ARE YOURSELF I PRESUME A MEDICAL MAN + A RETIRED ARMY SURGEON + MY OWN HOBBY HAS ALWAYS BEEN NERVOUS DISEASE + I SHOULD WISH TO MAKE IT AN ABSOLUTE SPECIALTY BUT OF COURSE A MAN MUST TAKE WHAT HE CAN GET AT FIRST + THIS HOWEVER IS BESIDE THE QUESTION MR. SHERLOCK HOLMES AND I QUITE APPRECIATE HOW VALUABLE YOUR TIME IS + THE FACT IS THAT A VERY SINGULAR TRAIN OF EVENTS HAS OCCURRED RECENTLY AT MY HOUSE IN BROOK STREET AND TO NIGHT THEY CAME TO SUCH A HEAD THAT I FELT IT WAS QUITE IMPOSSIBLE FOR ME TO WAIT ANOTHER HOUR BEFORE ASKING FOR YOUR ADVLCE AND ASSISTANCE QUOTE + SHERLOCK HOLMES SAT DOWN AND LIT HIS PIPE + YOU ARE VERY WELCOME TO BOTH SAID HE + PRAY LET ME HAVE A DETAILED ACCOUNT OF WHAT THE CIRCUMSTANCES ARE WHICH HAVE DISTURBED YOU + ONE OR TWO OF THEM ARE SO TRIVIAL SAID DOCTOR TREVELYAN THAT REALLY I AM ALMOST ASHAMED TO MENTION THEM + BUT THE MATTER IS SO INEXPLICABLE AND THE RECENT TURN WHICH IT HAS TAKEN IS SO ELABORATE THAT I SHALL LAY IT ALL BEFORE YOU AND YOU SHALL JUDGE WHAT IS ESSENTIAL AND WHAT IS NOT + I AM COMPELLED TO BEGIN WITH TO SAY SOMETHING OF MY OWN COLLEGE CAREER + I AM A LONDON UNIVERSITY MAN YOU KNOW AND I AM SURE THAT YOU WILL NOT THINK THAT I AM UNDULY SINGING MY OWN PRAISES IF I SAY THAT MY STUDENT CAREER WAS CONSIDERED BY MY PROFESSORS TO BE A VERY PROMISING ONE + AFTER I HAD GRADUATED I CONTINUED TO DEVOTE MYSELF TO RESEARCH OCCUPYING A MINOR POSITION IN KING'S COLLEGE HOSPITAL AND I WAS FORTUNATE ENOUGH TO EXCITE CONSIDERABLE INTEREST BY MY RESEARCH INTO THE PATHOLOGY OF CATALEPSY AND FINALLY TO WIN THE BRUCE PINKERTON PRIZE AND MEDAL BY THE MONOGRAPH ON NERVOUS LESIONS TO WHICH YOUR FRIEND HAS JUST ALLUDED + I SHOULD NOT GO TOO FAR IF I WERE TO SAY THAT THERE WAS A GENERAL IMPRESSION AT THAT TIME THAT A DISTINGUISHED CAREER LAY BEFORE ME + BUT THE ONE GREAT STUMBLING BLOCK LAY IN MY WANT OF CAPITAL + AS YOU WILL READILY UNDERSTAND A SPECIALIST WHO AIMS HIGH IS COMPELLED TO START IN ONE OF A DOZEN STREETS IN THE CAVENDISH SQUARE QUARTER ALL OF WHICH ENTAIL ENORMOUS RENTS AND FURNISHING EXPENSES + BESIDES THIS PRELIMINARY OUTLAY HE MUST BE PREPARED TO KEEP HIMSELF FOR SOME YEARS AND TO HIRE A PRESENTABLE CARRIAGE AND HORSE + TO DO THIS WAS QUITE BEYOND MY POWER AND I COULD ONLY HOPE THAT BY ECONOMY I MIGHT IN TEN YEARS' TIME SAVE ENOUGH TO ENABLE ME TO PUT UP MY PLATE + SUDDENLY HOWEVER AN UNEXPECTED INCIDENT OPENED UP QUITE A NEW PROSPECT TO ME + QUOTE THIS WAS A VISIT FROM A GENTLEMAN OF THE NAME OF BLESSINGTON WHO WAS A COMPLETE STRANGER TO ME + HE CAME UP INTO MY ROOM ONE MORNING AND PLUNGED INTO BUSINESS IN AN INSTANT + YOU ARE THE SAME PERCY TREVELYAN WHO HAS HAD SO DISTINGUISHED A CAREER AND WON A GREAT PRIZE LATELY SAID HE + I BOWED + ANSWER ME FRANKLY HE CONTINUED FOR YOU WILL FIND IT TO YOUR INTEREST TO DO SO + YOU HAVE ALL THE CLEVERNESS WHICH MAKES A SUCCESSFUL MAN + HAVE YOU THE TACT + I COULD NOT HELP SMILING AT THE ABRUPTNESS OF THE QUESTION + L. TRUST THAT I HAVE MY SHARE I SAID + QUOTE ANY BAD HABITS + NOT DRAWN TOWARDS DRINK EH + REALLY SIR + I CRIED + QUITE RIGHT + THAT'S ALL RIGHT + BUT I WAS BOUND TO ASK + WITH ALL THESE QUALITIES WHY ARE YOU NOT IN PRACTICE + I SHRUGGED MY SHOULDERS + COME COME SAID HE IN HIS BUSTLING WAY + IT'S THE OLD STORY + MORE IN YOUR BRAINS THAN IN YOUR POCKET EH + WHAT WOULD YOU SAY IF I WERE TO START YOU IN BROOK STREET + I STARED AT HIM IN ASTONISHMENT + QUOTE OH IT'S FOR MY SAKE NOT FOR YOURS HE CRIED + I'LL BE PERFECTLY FRANK WITH YOU AND IF IT SUITS YOU IT WILL SUIT ME VERY WELL + I HAVE A FEW THOUSANDS TO INVEST D'YE SEE AND I THINK I'LL SINK THEM IN YOU + BUT WHY + I GASPED + WELL IT'S JUST LIKE ANY OTHER SPECULATION AND SAFER THAN MOST + WHAT AM I TO DO THEN + I'LL TELL YOU + I'LL TAKE THE HOUSE FURNISH IT PAY THE MAIDS AND RUN THE WHOLE PLACE + ALL YOU HAVE TO DO IS JUST TO WEAR OUT YOUR CHAIR IN THE CONSULTING ROOM + I'LL LET YOU HAVE POCKETMONEY AND EVERYTHING + THEN YOU HAND OVER TO ME THREE QUARTERS OF WHAT YOU EARN AND YOU KEEP THE OTHER QUARTER FOR YOURSELF + THIS WAS THE STRANGE PROPOSAL MR. HOLMES WITH WHICH THE MAN BLESSINGTON APPROACHED ME + I WON'T WEARY YOU WITH THE ACCOUNT OF HOW WE BARGAINED AND NEGOTIATED + IT ENDED IN MY MOVING INTO THE HOUSE NEXT LADY DAY AND STARTING IN PRACTICE ON VERY MUCH THE SAME CONDITIONS AS HE HAD SUGGESTED + HE CAME HIMSELF TO LIVE WITH ME IN THE CHARACTER OF A RESIDENT PATIENT + HIS HEART WAS WEAK IT APPEARS AND HE NEEDED CONSTANT MEDICAL SUPERVISION + HE TURNED THE TWO BEST ROOMS OF THE FIRST FLOOR INTO A SITTING ROOM AND BEDROOM FOR HIMSELF + HE WAS A MAN OF SINGULAR HABITS SHUNNING COMPANY AND VERY SELDOM GOING OUT + HIS LIFE WAS IRREGULAR BUT IN ONE RESPECT HE WAS REGULARITY ITSELF + EVERY EVENING AT THE SAME HOUR HE WALKED INTO THE CONSULTING ROOM EXAMINED THE BOOKS PUT DOWN FIVE AND THREE PENCE FOR EVERY GUINEA THAT I HAD EARNED AND CARRIED THE REST OFF TO THE STRONGBOX IN HIS OWN ROOM + QUOTE I MAY SAY WITH CONFIDENCE THAT HE NEVER HAD OCCASION TO REGRET HIS SPECULATION + FROM THE FIRST IT WAS A SUCCESS + A FEW GOOD CASES AND THE REPUTATION WHICH I HAD WON IN THE HOSPITAL BROUGHT ME RAPIDLY TO THE FRONT AND DURING THE LAST FEW YEARS I HAVE MADE HIM A RICH MAN + SO MUCH MR. HOLMES FOR MY PAST HISTORY AND MY RELATIONS WITH MR. BLESSINGTON + IT ONLY REMAINS FOR ME NOW TO TELL YOU WHAT HAS OCCURRED TO BRING ME HERE TONIGHT + SOME WEEKS AGO MR. BLESSINGTON CAME DOWN TO ME IN AS IT SEEMED TO ME A STATE OF CONSIDERABLE AGITATION + HE SPOKE OF SOME BURGLARY WHICH HE SAID HAD BEEN COMMITTED IN THE WEST END AND HE APPEARED I REMEMBER TO BE QUITE UNNECESSARILY EXCITED ABOUT IT DECLARING THAT A DAY SHOULD NOT PASS BEFORE WE SHOULD ADD STRONGER BOLTS TO OUR WINDOWS AND DOORS + FOR A WEEK HE CONTINUED TO BE IN A PECULIAR STATE OF RESTLESSNESS PEERING CONTINUALLY OUT OF THE WINDOWS AND CEASING TO TAKE THE SHORT WALK WHICH HAD USUALLY BEEN THE PRELUDE TO HIS DINNER + FROM HIS MANNER IT STRUCK ME THAT HE WAS IN MORTAL DREAD OF SOMETHING OR SOMEBODY BUT WHEN I QUESTIONED HIM UPON THE POINT HE BECAME SO OFFENSIVE THAT I WAS COMPELLED TO DROP THE SUBJECT + GRADUALLY AS TIME PASSED HIS FEARS APPEARED TO DIE AWAY AND HE RENEWED HIS FORMER HABITS WHEN A FRESH EVENT REDUCED HIM TO THE PITIABLE STATE OF PROSTRATION IN WHICH HE NOW LIES + WHAT HAPPENED WAS THIS + TWO DAYS AGO I RECEIVED THE LETTER WHICH I NOW READ TO YOU + NEITHER ADDRESS NOR DATE IS ATTACHED TO IT + A RUSSIAN NOBLEMAN WHO IS NOW RESIDENT IN ENGLAND IT RUNS WOULD BE GLAD TO AVAIL HIMSELF OF THE PROFESSIONAL ASSISTANCE OF DOCTOR PERCY TREVELYAN + HE HAS BEEN FOR SOME YEARS A VICTIM TO CATALEPTIC ATTACKS ON WHICH AS IS WELL KNOWN DOCTOR TREVELYAN IS AN AUTHORITY + HE PROPOSES TO CALL AT ABOUT A QUARTER PAST SIX TO MORROW EVENING IF DOCTOR TREVELYAN WILL MAKE IT CONVENIENT TO BE AT HOME + THIS LETTER INTERESTED ME DEEPLY BECAUSE THE CHIEF DIFFICULTY IN THE STUDY OF CATALEPSY IS THE RARENESS OF THE DISEASE + YOU MAY BELIEVE THEN THAT I WAS IN MY CONSULTING ROOM WHEN AT THE APPOINTED HOUR THE PAGE SHOWED IN THE PATIENT + QUOTE HE WAS AN ELDERLY MAN THIN DEMURE AND COMMONPLACE BY NO MEANS THE CONCEPTION ONE FORMS OF A RUSSIAN NOBLEMAN + I WAS MUCH MORE STRUCK BY THE APPEARANCE OF HIS COMPANION + THIS WAS A TALL YOUNG MAN SURPRISINGLY HANDSOME WITH A DARK FIERCE FACE AND THE LIMBS AND CHEST OF A HERCULES + HE HAD HIS HAND UNDER THE OTHER'S ARM AS THEY ENTERED AND HELPED HIM TO A CHAIR WITH A TENDERNESS WHICH ONE WOULD HARDLY HAVE EXPECTED FROM HIS APPEARANCE + YOU WILL EXCUSE MY COMING IN DOCTOR SAID HE TO ME SPEAKING ENGLISH WITH A SLIGHT LISP + THIS IS MY FATHER AND HIS HEALTH IS A MATTER OF THE MOST OVERWHELMING IMPORTANCE TO ME + I WAS TOUCHED BY THIS FILIAL ANXIETY + YOU WOULD PERHAPS CARE TO REMAIN DURING THE CONSULTATION SAID I + NOT FOR THE WORLD HE CRIED WITH A GESTURE OF HORROR + IT IS MORE PAINFUL TO ME THAN I CAN EXPRESS + IF I WERE TO SEE MY FATHER IN ONE OF THESE DREADFUL SEIZURES I AM CONVINCED THAT I SHOULD NEVER SURVIVE IT + MY OWN NERVOUS SYSTEM IS AN EXCEPTIONALLY SENSITIVE ONE + WITH YOUR PERMISSION I WILL REMAIN IN THE WAITINGROOM WHILE YOU GO INTO MY FATHER'S CASE + TO THIS OF COURSE I ASSENTED AND THE YOUNG MAN WITHDREW + THE PATIENT AND I THEN PLUNGED INTO A DISCUSSION OF HIS CASE OF WHICH I TOOK EXHAUSTIVE NOTES + HE WAS NOT REMARKABLE FOR INTELLIGENCE AND HIS ANSWERS WERE FREQUENTLY OBSCURE WHICH I ATTRIBUTED TO HIS LIMITED ACQUAINTANCE WITH OUR LANGUAGE + SUDDENLY HOWEVER AS I SAT WRITING HE CEASED TO GIVE ANY ANSWER AT ALL TO MY INQUIRIES AND ON MY TURNING TOWARDS HIM I WAS SHOCKED TO SEE THAT HE WAS SITTING BOLT UPRIGHT IN HIS CHAIR STARING AT ME WITH A PERFECTLY BLANK AND RIGID FACE + HE WAS AGAIN IN THE GRIP OF HIS MYSTERIOUS MALADY + MY FIRST FEELING AS I HAVE JUST SAID WAS ONE OF PITY AND HORROR + MY SECOND I FEAR WAS RATHER ONE OF PROFESSIONAL SATISFACTION + I MADE NOTES OF MY PATIENT'S PULSE AND TEMPERATURE TESTED THE RIGIDITY OF HIS MUSCLES AND EXAMINED HIS REFLEXES + THERE WAS NOTHING MARKEDLY ABNORMAL IN ANY OF THESE CONDITIONS WHICH HARMONIZED WITH MY FORMER EXPERIENCES + I HAD OBTAINED GOOD RESULTS IN SUCH CASES BY THE INHALATION OF NITRITE OF AMYL AND THE PRESENT SEEMED AN ADMIRABLE OPPORTUNITY OF TESTING ITS VIRTUES + THE BOTTLE WAS DOWNSTAIRS IN MY LABORATORY SO LEAVING MY PATIENT SEATED IN HIS CHAIR I RAN DOWN TO GET IT + THERE WAS SOME LITTLE DELAY IN FINDING IT FIVE MINUTES LET US SAY AND THEN I RETURNED + IMAGINE MY AMAZEMENT TO FIND THE ROOM EMPTY AND THE PATIENT GONE + QUOTE OF COURSE MY FIRST ACT WAS TO RUN INTO THE WAITING ROOM + THE SON HAD GONE ALSO + THE HALL DOOR HAD BEEN CLOSED BUT NOT SHUT + MY PAGE WHO ADMITS PATIENTS IS A NEW BOY AND BY NO MEANS QUICK + HE WAITS DOWNSTAIRS AND RUNS UP TO SHOW PATIENTS OUT WHEN I RING THE CONSULTING ROOM BELL + HE HAD HEARD NOTHING AND THE AFFAIR REMAINED A COMPLETE MYSTERY + MR. BLESSINGTON CAME IN FROM HIS WALK SHORTLY AFTERWARDS BUT I DID NOT SAY ANYTHING TO HIM UPON THE SUBJECT FOR TO TELL THE TRUTH I HAVE GOT IN THE WAY OF LATE OF HOLDING AS LITTLE COMMUNICATION WITH HIM AS POSSIBLE + WELL I NEVER THOUGHT THAT I SHOULD SEE ANYTHING MORE OF THE RUSSIAN AND HIS SON SO YOU CAN IMAGINE MY AMAZEMENT WHEN AT THE VERY SAME HOUR THIS EVENING THEY BOTH CAME MARCHING INTO MY CONSULTING ROOM JUST AS THEY HAD DONE BEFORE + I FEEL THAT I OWE YOU A GREAT MANY APOLOGIES FOR MY ABRUPT DEPARTURE YESTERDAY DOCTOR SAID MY PATIENT + I CONFESS THAT I WAS VERY MUCH SURPRISED AT IT SAID I + WELL THE FACT IS HE REMARKED THAT WHEN I RECOVER FROM THESE ATTACKS MY MIND IS ALWAYS VERY CLOUDED AS TO ALL THAT HAS GONE BEFORE + I WOKE UP IN A STRANGE ROOM AS IT SEEMED TO ME AND MADE MY WAY OUT INTO THE STREET IN A SORT OF DAZED WAY WHEN YOU WERE ABSENT + AND I SAID THE SON SEEING MY FATHER PASS THE DOOR OF THE WAITING ROOM NATURALLY THOUGHT THAT THE CONSULTATION HAD COME TO AN END + IT WAS NOT UNTIL WE HAD REACHED HOME THAT I BEGAN TO REALIZE THE TRUE STATE OF AFFAIRS + QUOTE WELL SAID I LAUGHING THERE IS NO HARM DONE EXCEPT THAT YOU PUZZLED ME TERRIBLY SO IF YOU SIR WOULD KINDLY STEP INTO THE WAITING ROOM I SHALL BE HAPPY TO CONTINUE OUR CONSULTATION WHICH WAS BROUGHT TO SO ABRUPT AN ENDING + FOR HALF AN HOUR OR SO I DISCUSSED THE OLD GENTLEMAN'S SYMPTOMS WITH HIM AND THEN HAVING PRESCRIBED FOR HIM I SAW HIM GO OFF UPON THE ARM OF HIS SON + I HAVE TOLD YOU THAT MR. BLESSINGTON GENERALLY CHOSE THIS HOUR OF THE DAY FOR HIS EXERCISE + HE CAME IN SHORTLY AFTERWARDS AND PASSED UPSTAIRS + AN INSTANT LATER I HEARD HIM RUNNING DOWN AND HE BURST INTO MY CONSULTING ROOM LIKE A MAN WHO IS MAD WITH PANIC + WHO HAS BEEN IN MY ROOM HE CRIED + NO ONE SAID I + IT'S A LIE HE YELLED + COME UP AND LOOK + QUOTE I PASSED OVER THE GROSSNESS OF HIS LANGUAGE AS HE SEEMED HALF OUT OF HIS MIND WITH FEAR + WHEN I WENT UPSTAIRS WITH HIM HE POINTED TO SEVERAL FOOTPRINTS UPON THE LIGHT CARPET + DO YOU MEAN TO SAY THOSE ARE MINE HE CRIED + THEY WERE CERTAINLY VERY MUCH LARGER THAN ANY WHICH HE COULD HAVE MADE AND WERE EVIDENTLY QUITE FRESH + IT RAINED HARD THIS AFTERNOON AS YOU KNOW AND MY PATIENTS WERE THE ONLY PEOPLE WHO CALLED + IT MUST HAVE BEEN THE CASE THEN THAT THE MAN IN THE WAITING ROOM HAD FOR SOME UNKNOWN REASON WHILE I WAS BUSY WITH THE OTHER ASCENDED TO THE ROOM OF MY RESIDENT PATIENT + NOTHING HAD BEEN TOUCHED OR TAKEN BUT THERE WERE THE FOOTPRINTS TO PROVE THAT THE INTRUSION WAS AN UNDOUBTED FACT + MR. BLESSINGTON SEEMED MORE EXCITED OVER THE MATTER THAN I SHOULD HAVE THOUGHT POSSIBLE THOUGH OF COURSE IT WAS ENOUGH TO DISTURB ANYBODY'S PEACE OF MIND + HE ACTUALLY SAT CRYING IN AN ARMCHAIR AND I COULD HARDLY GET HIM TO SPEAK COHERENTLY + IT WAS HIS SUGGESTION THAT I SHOULD COME ROUND TO YOU AND OF COURSE I AT ONCE SAW THE PROPRIETY OF IT FOR CERTAINLY THE INCIDENT IS A VERY SINGULAR ONE THOUGH HE APPEARS TO COMPLETELY OVERRATE ITS IMPORTANCE + IF YOU WOULD ONLY COME BACK WITH ME IN MY BROUGHAM YOU WOULD AT LEAST BE ABLE TO SOOTHE HIM THOUGH I CAN HARDLY HOPE THAT YOU WILL BE ABLE TO EXPLAIN THIS REMARKABLE OCCURRENCE + SHERLOCK HOLMES HAD LISTENED TO THIS LONG NARRATIVE WITH AN INTENTNESS WHICH SHOWED ME THAT HIS INTEREST WAS KEENLY AROUSED + HIS FACE WAS AS IMPASSIVE AS EVER BUT HIS LIDS HAD DROOPED MORE HEAVILY OVER HIS EYES AND HIS SMOKE HAD CURLED UP MORE THICKLY FROM HIS PIPE TO EMPHASIZE EACH CURIOUS EPISODE IN THE DOCTOR'S TALE + AS OUR VISITOR CONCLUDED HOLMES SPRANG UP WITHOUT A WORD HANDED ME MY HAT PICKED HIS OWN FROM THE TABLE AND FOLLOWED DOCTOR TREVELYAN TO THE DOOR + WITHIN A QUARTER OF AN HOUR WE HAD BEEN DROPPED AT THE DOOR OF THE PHYSICIAN'S RESIDENCE IN BROOK STREET ONE OF THOSE SOMBRE FLAT FACED HOUSES WHICH ONE ASSOCIATES WITH A WEST END PRACTICE + A SMALL PAGE ADMITTED US AND WE BEGAN AT ONCE TO ASCEND THE BROAD WELL CARPETED STAIR + BUT A SINGULAR INTERRUPTION BROUGHT US TO A STANDSTILL + THE LIGHT AT THE TOP WAS SUDDENLY WHISKED OUT AND FROM THE DARKNESS CAME A REEDY QUAVERING VOICE + I HAVE A PISTOL IT CRIED + QUOTE I GIVE YOU MY WORD THAT I'LL FIRE IF YOU COME ANY NEARER QUOTE + THIS REALLY GROWS OUTRAGEOUS MR. BLESSINGTON CRIED DOCTOR TREVELYAN + OH THEN IT IS YOU DOCTOR SAID THE VOICE WITH A GREAT HEAVE OF RELIEF + BUT THOSE OTHER GENTLEMEN ARE THEY WHAT THEY PRETEND TO BE + WE WERE CONSCIOUS OF A LONG SCRUTINY OUT OF THE DARKNESS + YES YES IT'S ALL RIGHT SAID THE VOICE AT LAST + YOU CAN COME UP AND I AM SORRY IF MY PRECAUTIONS HAVE ANNOYED YOU + HE RELIT THE STAIR GAS AS HE SPOKE AND WE SAW BEFORE US A SINGULAR LOOKING MAN WHOSE APPEARANCE AS WELL AS HIS VOICE TESTIFIED TO HIS JANGLED NERVES + HE WAS VERY FAT BUT HAD APPARENTLY AT SOME TIME BEEN MUCH FATTER SO THAT THE SKIN HUNG ABOUT HIS FACE IN LOOSE POUCHES LIKE THE CHEEKS OF A BLOODHOUND + HE WAS OF A SICKLY COLOUR AND HIS THIN SANDY HAIR SEEMED TO BRISTLE UP WITH THE INTENSITY OF HIS EMOTION + IN HIS HAND HE HELD A PISTOL BUT HE THRUST IT INTO HIS POCKET AS WE ADVANCED + QUOTE GOOD EVENING MR. HOLMES QUOTE SAID HE + I AM SURE I AM VERY MUCH OBLIGED TO YOU FOR COMING ROUND + NO ONE EVER NEEDED YOUR ADVICE MORE THAN I DO + I SUPPOSE THAT DOCTOR TREVELYAN HAS TOLD YOU OF THIS MOST UNWARRANTABLE INTRUSION INTO MY ROOMS + QUITE SO SAID HOLMES + WHO ARE THESE TWO MEN MR. BLESSINGTON AND WHY DO THEY WISH TO MOLEST YOU + WELL WELL SAID THE RESIDENT PATIENT IN A NERVOUS FASHION OF COURSE IT IS HARD TO SAY THAT + YOU CAN HARDLY EXPECT ME TO ANSWER THAT MR. HOLMES QUOTE + DO YOU MEAN THAT YOU DON'T KNOW + COME IN HERE IF YOU PLEASE + JUST HAVE THE KINDNESS TO STEP IN HERE + HE LED THE WAY INTO HIS BEDROOM WHICH WAS LARGE AND COMFORTABLY FURNISHED + YOU SEE THAT SAID HE POINTING TO A BIG BLACK BOX AT THE END OF HIS BED + I HAVE NEVER BEEN A VERY RICH MAN MR. HOLMES NEVER MADE BUT ONE INVESTMENT IN MY LIFE AS DOCTOR TREVELYAN WOULD TELL YOU + BUT I DON'T BELIEVE IN BANKERS + I WOULD NEVER TRUST A BANKER MR. HOLMES + BETWEEN OURSELVES WHAT LITTLE I HAVE IS IN THAT BOX SO YOU CAN UNDERSTAND WHAT IT MEANS TO ME WHEN UNKNOWN PEOPLE FORCE THEMSELVES INTO MY ROOMS QUOTE + HOLMES LOOKED AT BLESSINGTON IN HIS QUESTIONING WAY AND SHOOK HIS HEAD + I CANNOT POSSIBLY ADVISE YOU IF YOU TRY TO DECEIVE ME SAID HE + BUT I HAVE TOLD YOU EVERYTHING + HOLMES TURNED ON HIS HEEL WITH A GESTURE OF DISGUST + GOODNIGHT DOCTOR TREVELYAN SAID HE + AND NO ADVICE FOR ME CRIED BLESSINGTON IN A BREAKING VOICE + MY ADVICE TO YOU SIR IS TO SPEAK THE TRUTH + A MINUTE LATER WE WERE IN THE STREET AND WALKING FOR HOME + WE HAD CROSSED OXFORD STREET AND WERE HALFWAY DOWN HARLEY STREET BEFORE I COULD GET A WORD FROM MY COMPANION + QUOTE SORRY TO BRING YOU OUT ON SUCH A FOOL'S ERRAND WATSON QUOTE HE SAID AT LAST + IT IS AN INTERESTING CASE TOO AT THE BOTTOM OF IT + I CAN MAKE LITTLE OF IT I CONFESSED + WELL IT IS QUITE EVIDENT THAT THERE ARE TWO MEN MORE PERHAPS BUT AT LEAST TWO WHO ARE DETERMINED FOR SOME REASON TO GET AT THIS FELLOW BLESSINGTON + I HAVE NO DOUBT IN MY MIND THAT BOTH ON THE FIRST AND ON THE SECOND OCCASION THAT YOUNG MAN PENETRATED TO BLESSINGTON'S ROOM WHILE HIS CONFEDERATE BY AN INGENIOUS DEVICE KEPT THE DOCTOR FROM INTERFERING + AND THE CATALEPSY + QUOTE A FRAUDULENT IMITATION WATSON THOUGH I SHOULD HARDLY DARE TO HINT AS MUCH TO OUR SPECIALIST + IT IS A VERY EASY COMPLAINT TO IMITATE + I HAVE DONE IT MYSELF + AND THEN + BY THE PUREST CHANCE BLESSINGTON WAS OUT ON EACH OCCASION + THEIR REASON FOR CHOOSING SO UNUSUAL AN HOUR FOR A CONSULTATION WAS OBVIOUSLY TO INSURE THAT THERE SHOULD BE NO OTHER PATIENT IN THE WAITING ROOM + IT JUST HAPPENED HOWEVER THAT THIS HOUR COINCIDED WITH BLESSINGTON'S CONSTITUTIONAL WHICH SEEMS TO SHOW THAT THEY WERE NOT VERY WELL ACQUAINTED WITH HIS DAILY ROUTINE + OF COURSE IF THEY HAD BEEN MERELY AFTER PLUNDER THEY WOULD AT LEAST HAVE MADE SOME ATTEMPT TO SEARCH FOR IT + BESIDES I CAN READ IN A MAN'S EYE WHEN IT IS HIS OWN SKIN THAT HE IS FRIGHTENED FOR + IT IS INCONCEIVABLE THAT THIS FELLOW COULD HAVE MADE TWO SUCH VINDICTIVE ENEMIES AS THESE APPEAR TO BE WITHOUT KNOWING OF IT + I HOLD IT THEREFORE TO BE CERTAIN THAT HE DOES KNOW WHO THESE MEN ARE AND THAT FOR REASONS OF HIS OWN HE SUPPRESSES IT + IT IS JUST POSSIBLE THAT TO MORROW MAY FIND HIM IN A MORE COMMUNICATIVE MOOD + IS THERE NOT ONE ALTERNATIVE I SUGGESTED GROTESQUELY IMPROBABLE NO DOUBT BUT STILL JUST CONCEIVABLE + MIGHT THE WHOLE STORY OF THE CATALEPTIC RUSSIAN AND HIS SON BE A CONCOCTION OF DOCTOR TREVELYAN'S WHO HAS FOR HIS OWN PURPOSES BEEN IN BLESSINGTON'S ROOMS QUOTE + I SAW IN THE GAS LIGHT THAT HOLMES WORE AN AMUSED SMILE AT THIS BRILLIANT DEPARTURE OF MINE + MY DEAR FELLOW SAID HE IT WAS ONE OF THE FIRST SOLUTIONS WHICH OCCURRED TO ME BUT I WAS SOON ABLE TO CORROBORATE THE DOCTOR'S TALE + THIS YOUNG MAN HAS LEFT PRINTS UPON THE STAIR CARPET WHICH MADE IT QUITE SUPERFLUOUS FOR ME TO ASK TO SEE THOSE WHICH HE HAD MADE IN THE ROOM + WHEN I TELL YOU THAT HIS SHOES WERE SQUARE TOED INSTEAD OF BEING POINTED LIKE BLESSINGTON'S AND WERE QUITE AN INCH AND A THIRD LONGER THAN THE DOCTOR'S YOU WILL ACKNOWLEDGE THAT THERE CAN BE NO DOUBT AS TO HIS INDIVIDUALITY + BUT WE MAY SLEEP ON IT NOW FOR I SHALL BE SURPRISED IF WE DO NOT HEAR SOMETHING FURTHER FROM BROOK STREET IN THE MORNING + SHERLOCK HOLMES'S PROPHECY WAS SOON FULFILLED AND IN A DRAMATIC FASHION + AT HALF PAST SEVEN NEXT MORNING IN THE FIRST DIM GLIMMER OF DAYLIGHT I FOUND HIM STANDING BY MY BEDSIDE IN HLS DRESSING GOWN + THERE'S A BROUGHAM WAITING FOR US WATSON SAID HE + WHAT'S THE MATTER THEN + THE BROOK STREET BUSINESS + QUOTE ANY FRESH NEWS QUOTE + TRAGIC BUT AMBIGUOUS SAID HE PULLING UP THE BLIND + LOOK AT THIS A SHEET FROM A NOTEBOOK WITH FOR GOD'S SAKE COME AT ONCE + P. T. SCRAWLED UPON IT IN PENCIL + OUR FRIEND THE DOCTOR WAS HARD PUT TO IT WHEN HE WROTE THIS + COME ALONG MY DEAR FELLOW FOR IT'S AN URGENT CALL + IN A QUARTER OF AN HOUR OR SO WE WERE BACK AT THE PHYSICIAN'S HOUSE + HE CAME RUNNING OUT TO MEET US WITH A FACE OF HORROR + OH SUCH A BUSINESS HE CRIED WITH HIS HANDS TO HIS TEMPLES + WHAT THEN + QUOTE BLESSINGTON HAS COMMITTED SUICIDE QUOTE + HOLMES WHISTLED + YES HE HANGED HIMSELF DURING THE NIGHT + WE HAD ENTERED AND THE DOCTOR HAD PRECEDED US INTO WHAT WAS EVIDENTLY HIS WAITING ROOM + I REALLY HARDLY KNOW WHAT I AM DOING HE CRIED + THE POLICE ARE ALREADY UPSTAIRS + IT HAS SHAKEN ME MOST DREADFULLY + WHEN DID YOU FIND IT OUT + QUOTE HE HAS A CUP OF TEA TAKEN IN TO HIM EARLY EVERY MORNING + WHEN THE MAID ENTERED ABOUT SEVEN THERE THE UNFORTUNATE FELLOW WAS HANGING IN THE MIDDLE OF THE ROOM + HE HAD TIED HIS CORD TO THE HOOK ON WHICH THE HEAVY LAMP USED TO HANG AND HE HAD JUMPED OFF FROM THE TOP OF THE VERY BOX THAT HE SHOWED US YESTERDAY + HOLMES STOOD FOR A MOMENT IN DEEP THOUGHT + WITH YOUR PERMISSION SAID HE AT LAST I SHOULD LIKE TO GO UPSTAIRS AND LOOK INTO THE MATTER + WE BOTH ASCENDED FOLLOWED BY THE DOCTOR + IT WAS A DREADFUL SIGHT WHICH MET US AS WE ENTERED THE BEDROOM DOOR + I HAVE SPOKEN OF THE IMPRESSION OF FLABBINESS WHICH THIS MAN BLESSINGTON CONVEYED + AS HE DANGLED FROM THE HOOK IT WAS EXAGGERATED AND INTENSIFIED UNTIL HE WAS SCARCE HUMAN IN HIS APPEARANCE + THE NECK WAS DRAWN OUT LIKE A PLUCKED CHICKEN'S MAKING THE REST OF HIM SEEM THE MORE OBESE AND UNNATURAL BY THE CONTRAST + HE WAS CLAD ONLY IN HIS LONG NIGHTDRESS AND HIS SWOLLEN ANKLES AND UNGAINLY FEET PROTRUDED STARKLY FROM BENEATH IT + BESIDE HIM STOOD A SMART LOOKING POLICE INSPECTOR WHO WAS TAKING NOTES IN A POCKETBOOK + AH MR. HOLMES SAID HE HEARTILY AS MY FRIEND ENTERED I AM DELIGHTED TO SEE YOU + GOOD MORNING LANNER ANSWERED HOLMES YOU WON'T THINK ME AN INTRUDER I AM SURE + HAVE YOU HEARD OF THE EVENTS WHICH LED UP TO THIS AFFAIR + QUOTE YES I HEARD SOMETHING OF THEM QUOTE + HAVE YOU FORMED ANY OPINION + AS FAR AS I CAN SEE THE MAN HAS BEEN DRIVEN OUT OF HIS SENSES BY FRIGHT + THE BED HAS BEEN WELL SLEPT IN YOU SEE + THERE'S HIS IMPRESSION DEEP ENOUGH + IT'S ABOUT FIVE IN THE MORNING YOU KNOW THAT SUICIDES ARE MOST COMMON + THAT WOULD BE ABOUT HIS TIME FOR HANGING HIMSELF + IT SEEMS TO HAVE BEEN A VERY DELIBERATE AFFAIR + I SHOULD SAY THAT HE HAS BEEN DEAD ABOUT THREE HOURS JUDGING BY THE RIGIDITY OF THE MUSCLES SAID I + NOTICED ANYTHING PECULIAR ABOUT THE ROOM ASKED HOLMES + QUOTE FOUND A SCREW DRIVER AND SOME SCREWS ON THE WASH HAND STAND + SEEMS TO HAVE SMOKED HEAVILY DURING THE NIGHT TOO + HERE ARE FOUR CIGAR ENDS THAT I PICKED OUT OF THE FIREPLACE + HUM SAID HOLMES HAVE YOU GOT HIS CIGAR HOLDER + NO I HAVE SEEN NONE + HIS CIGAR CASE THEN + YES IT WAS IN HIS COAT POCKET + HOLMES OPENED IT AND SMELLED THE SINGLE CIGAR WHICH IT CONTAINED + QUOTE OH THIS IS A HAVANA AND THESE OTHERS ARE CIGARS OF THE PECULIAR SORT WHICH ARE IMPORTED BY THE DUTCH FROM THEIR EAST INDIAN COLONIES + THEY ARE USUALLY WRAPPED IN STRAW YOU KNOW AND ARE THINNER FOR THEIR LENGTH THAN ANY OTHER BRAND + HE PICKED UP THE FOUR ENDS AND EXAMINED THEM WITH HIS POCKET LENS + TWO OF THESE HAVE BEEN SMOKED FROM A HOLDER AND TWO WITHOUT SAID HE + TWO HAVE BEEN CUT BY A NOT VERY SHARP KNIFE AND TWO HAVE HAD THE ENDS BITTEN OFF BY A SET OF EXCELLENT TEETH + THIS IS NO SUICIDE MR. LANNER + IT IS A VERY DEEPLY PLANNED AND COLD BLOODED MURDER + IMPOSSIBLE CRIED THE INSPECTOR + QUOTE AND WHY QUOTE + WHY SHOULD ANYONE MURDER A MAN IN SO CLUMSY A FASHION AS BY HANGING HIM + THAT IS WHAT WE HAVE TO FIND OUT + HOW COULD THEY GET IN + THROUGH THE FRONT DOOR + IT WAS BARRED IN THE MORNING + QUOTE THEN IT WAS BARRED AFTER THEM QUOTE + HOW DO YOU KNOW + I SAW THEIR TRACES + EXCUSE ME A MOMENT AND I MAY BE ABLE TO GIVE YOU SOME FURTHER INFORMATION ABOUT IT + HE WENT OVER TO THE DOOR AND TURNING THE LOCK HE EXAMINED IT IN HIS METHODICAL WAY + THEN HE TOOK OUT THE KEY WHICH WAS ON THE INSIDE AND INSPECTED THAT ALSO + THE BED THE CARPET THE CHAIRS THE MANTELPIECE THE DEAD BODY AND THE ROPE WERE EACH IN TURN EXAMINED UNTIL AT LAST HE PROFESSED HIMSELF SATISFIED AND WITH MY AID AND THAT OF THE INSPECTOR CUT DOWN THE WRETCHED OBJECT AND LAID IT REVERENTLY UNDER A SHEET + HOW ABOUT THIS ROPE HE ASKED + IT IS CUT OFF THIS SAID DOCTOR TREVELYAN DRAWING A LARGE COIL FROM UNDER THE BED + QUOTE HE WAS MORBIDLY NERVOUS OF FIRE AND ALWAYS KEPT THIS BESIDE HIM SO THAT HE MIGHT ESCAPE BY THE WINDOW IN CASE THE STAIRS WERE BURNING QUOTE + THAT MUST HAVE SAVED THEM TROUBLE SAID HOLMES THOUGHTFULLY + YES THE ACTUAL FACTS ARE VERY PLAIN AND I SHALL BE SURPRISED IF BY THE AFTERNOON I CANNOT GIVE YOU THE REASONS FOR THEM AS WELL + I WILL TAKE THIS PHOTOGRAPH OF BLESSINGTON WHICH I SEE UPON THE MANTELPIECE AS IT MAY HELP ME IN MY INQUIRIES + BUT YOU HAVE TOLD US NOTHING CRIED THE DOCTOR + OH THERE CAN BE NO DOUBT AS TO THE SEQUENCE OF EVENTS SAID HOLMES + QUOTE THERE WERE THREE OF THEM IN IT THE YOUNG MAN THE OLD MAN AND A THIRD TO WHOSE IDENTITY I HAVE NO CLUE + THE FIRST TWO I NEED HARDLY REMARK ARE THE SAME WHO MASQUERADED AS THE RUSSIAN COUNT AND HIS SON SO WE CAN GIVE A VERY FULL DESCRIPTION OF THEM + THEY WERE ADMITTED BY A CONFEDERATE INSIDE THE HOUSE + IF I MIGHT OFFER YOU A WORD OF ADVICE + INSPECTOR IT WOULD BE TO ARREST THE PAGE. WHO AS I UNDERSTAND HAS ONLY RECENTLY COME INTO YOUR SERVICE DOCTOR + THE YOUNG IMP CANNOT BE FOUND SAID DOCTOR TREVELYAN THE MAID AND THE COOK HAVE JUST BEEN SEARCHING FOR HIM + HOLMES SHRUGGED HIS SHOULDERS + HE HAS PLAYED A NOT UNIMPORTANT PART IN THIS DRAMA SAID HE + THE THREE MEN HAVING ASCENDED THE STAIRS WHICH THEY DID ON TIPTOE THE ELDER MAN FIRST THE YOUNGER MAN SECOND AND THE UNKNOWN MAN IN THE REAR + MY DEAR HOLMES + I EJACULATED + QUOTE OH THERE COULD BE NO QUESTION AS TO THE SUPERIMPOSING OF THE FOOTMARKS + I HAD THE ADVANTAGE OF LEARNING WHICH WAS WHICH LAST NIGHT + THEY ASCENDED THEN TO MR. BLESSINGTON'S ROOM THE DOOR OF WHICH THEY FOUND TO BE LOCKED + WITH THE HELP OF A WIRE HOWEVER THEY FORCED ROUND THE KEY + EVEN WITHOUT THE LENS YOU WILL PERCEIVE BY THE SCRATCHES ON THIS WARD WHERE THE PRESSURE WAS APPLIED + ON ENTERING THE ROOM THEIR FIRST PROCEEDING MUST HAVE BEEN TO GAG MR. BLESSINGTON + HE MAY HAVE BEEN ASLEEP OR HE MAY HAVE BEEN SO PARALYZED WITH TERROR AS TO HAVE BEEN UNABLE TO CRY OUT + THESE WALLS ARE THICK AND IT IS CONCEIVABLE THAT HIS SHRIEK IF HE HAD TIME TO UTTER ONE WAS UNHEARD + HAVING SECURED HIM IT IS EVIDENT TO ME THAT A CONSULTATION OF SOME SORT WAS HELD + PROBABLY IT WAS SOMETHING IN THE NATURE OF A JUDICIAL PROCEEDING + IT MUST HAVE LASTED FOR SOME TIME FOR IT WAS THEN THAT THESE CIGARS WERE SMOKED + THE OLDER MAN SAT IN THAT WICKER CHAIR IT WAS HE WHO USED THE CIGAR HOLDER + THE YOUNGER MAN SAT OVER YONDER HE KNOCKED HIS ASH OFF AGAINST THE CHEST OF DRAWERS + THE THIRD FOLLOW PACED UP AND DOWN + BLESSINGTON I THINK SAT UPRIGHT IN THE BED BUT OF THAT I CANNOT BE ABSOLUTELY CERTAIN + WELL IT ENDED BY THEIR TAKING BLESSINGTON AND HANGING HIM + THE MATTER WAS SO PREARRANGED THAT IT IS MY BELIEF THAT THEY BROUGHT WITH THEM SOME SORT OF BLOCK OR PULLEY WHICH MIGHT SERVE AS A GALLOWS + THAT SCREW DRIVER AND THOSE SCREWS WERE AS I CONCEIVE FOR FIXING IT UP + SEEING THE HOOK HOWEVER THEY NATURALLY SAVED THEMSELVES THE TROUBLE + HAVING FINISHED THEIR WORK THEY MADE OFF AND THE DOOR WAS BARRED BEHIND THEM BY THEIR CONFEDERATE + WE HAD ALL LISTENED WITH THE DEEPEST INTEREST TO THIS SKETCH OF THE NIGHT'S DOINGS WHICH HOLMES HAD DEDUCED FROM SIGNS SO SUBTLE AND MINUTE THAT EVEN WHEN HE HAD POINTED THEM OUT TO US WE COULD SCARCELY FOLLOW HIM IN HIS REASONINGS + THE INSPECTOR HURRIED AWAY ON THC INSTANT TO MAKE INQUIRIES ABOUT THE PAGE. WHILE HOLMES AND I RETURNED TO BAKER STREET FOR BREAKFAST + I'LL BE BACK BY THREE SAID HE WHEN WE HAD FINISHED OUR MEAL + QUOTE BOTH THE INSPECTOR AND THE DOCTOR WILL MEET ME HERE AT THAT HOUR AND I HOPE BY THAT TIME TO HAVE CLEARED UP ANY LITTLE OBSCURITY WHICH THE CASE MAY STILL PRESENT QUOTE + OUR VISITORS ARRIVED AT THE APPOINTED TIME BUT IT WAS A QUARTER TO FOUR BEFORE MY FRIEND PUT IN AN APPEARANCE + FROM HIS EXPRESSION AS HE ENTERED HOWEVER I COULD SEE THAT ALL HAD GONE WELL WITH HIM + ANY NEWS INSPECTOR + WE HAVE GOT THE BOY SIR + EXCELLENT AND I HAVE GOT THE MEN + YOU HAVE GOT THEM WE CRIED ALL THREE + WELL AT LEAST I HAVE GOT THEIR IDENTITY + THIS SO CALLED BLESSINGTON IS AS I EXPECTED WELL KNOWN AT HEADQUARTERS AND SO ARE HIS ASSAILANTS + THEIR NAMES ARE BIDDLE HAYWARD AND MOFFAT QUOTE + THE WORTHINGDON BANK GANG CRIED THE INSPECTOR + PRECISELY SAID HOLMES + THEN BLESSINGTON MUST HAVE BEEN SUTTON + EXACTLY SAID HOLMES + WHY THAT MAKES IT AS CLEAR AS CRYSTAL SAID THE INSPECTOR + BUT TREVELYAN AND I LOOKED AT EACH OTHER IN BEWILDERMENT + QUOTE YOU MUST SURELY REMEMBER THE GREAT WORTHINGDON BANK BUSINESS QUOTE SAID HOLMES + FIVE MEN WERE IN IT THESE FOUR AND A FIFTH CALLED CARTWRIGHT + TOBIN THE CARETAKER WAS MURDERED AND THE THIEVES GOT AWAY WITH SEVEN THOUSAND POUNDS + THIS WAS IN ONE THOUSAND EIGHT HUNDRED SEVENTY FIVE + THEY WERE ALL FIVE ARRESTED BUT THE EVIDENCE AGAINST THEM WAS BY NO MEANS CONCLUSIVE + THIS BLESSINGTON OR SUTTON WHO WAS THE WORST OF THE GANG TURNED INFORMER + ON HIS EVIDENCE CARTWRIGHT WAS HANGED AND THE OTHER THREE GOT FIFTEEN YEARS APIECE + WHEN THEY GOT OUT THE OTHER DAY WHICH WAS SOME YEARS BEFORE THEIR FULL TERM THEY SET THEMSELVES AS YOU PERCEIVE TO HUNT DOWN THE TRAITOR AND TO AVENGE THE DEATH OF THEIR COMRADE UPON HIM + TWICE THEY TRIED TO GET AT HIM AND FAILED A THIRD TIME YOU SEE IT CAME OFF + IS THERE ANYTHING FURTHER WHICH I CAN EXPLAIN DOCTOR TREVELYAN + I THINK YOU HAVE MADE IT ALL REMARKABLY CLEAR SAID THE DOCTOR + NO DOUBT THE DAY ON WHICH HE WAS SO PERTURBED WAS THE DAY WHEN HE HAD SEEN OF THEIR RELEASE IN THE NEWSPAPERS + QUITE SO + HIS TALK ABOUT A BURGLARY WAS THE MEREST BLIND QUOTE + BUT WHY COULD HE NOT TELL YOU THIS + WELL MY DEAR SIR KNOWING THE VINDICTIVE CHARACTER OF HIS OLD ASSOCIATES HE WAS TRYING TO HIDE HIS OWN IDENTITY FROM EVERYBODY AS LONG AS HE COULD + HIS SECRET WAS A SHAMEFUL ONE AND HE COULD NOT BRING HIMSELF TO DIVULGE IT + HOWEVER WRETCH AS HE WAS HE WAS STILL LIVING UNDER THE SHIELD OF BRITISH LAW AND I HAVE NO DOUBT INSPECTOR THAT YOU WILL SEE THAT THOUGH THAT SHIELD MAY FAIL TO GUARD THE SWORD OF JUSTICE IS STILL THERE TO AVENGE + SUCH WERE THE SINGULAR CIRCUMSTANCES IN CONNECTION WITH THE RESIDENT PATIENT AND THE BROOK STREET DOCTOR + FROM THAT NIGHT NOTHING HAS BEEN SEEN OF THE THREE MURDERERS BY THE POLICE AND IT IS SURMISED AT SCOTLAND YARD THAT THEY WERE AMONG THE PASSENGERS OF THE ILL FATED STEAMER NORAH CREINA WHICH WAS LOST SOME YEARS AGO WITH ALL HANDS UPON THE PORTUGUESE COAST SOME LEAGUES TO THE NORTH OF OPORTO + THE PROCEEDINGS AGAINST THE PAGE BROKE DOWN FOR WANT OF EVIDENCE AND THE BROOK STREET MYSTERY AS IT WAS CALLED HAS NEVER UNTIL NOW BEEN FULLY DEALT WITH IN ANY PUBLIC PRINT diff --git a/samples/LMTutorial/train/scandal_in_bohemia.txt b/samples/LMTutorial/train/scandal_in_bohemia.txt new file mode 100755 index 0000000..c55f9f7 --- /dev/null +++ b/samples/LMTutorial/train/scandal_in_bohemia.txt @@ -0,0 +1,655 @@ + TO SHERLOCK HOLMES SHE IS ALWAYS THE WOMAN + I HAVE SELDOM HEARD HIM MENTION HER UNDER ANY OTHER NAME + IN HIS EYES SHE ECLIPSES AND PREDOMINATES THE WHOLE OF HER SEX + IT WAS NOT THAT HE FELT ANY EMOTION AKIN TO LOVE FOR IRENE ADLER + ALL EMOTIONS AND THAT ONE PARTICULARLY WERE ABHORRENT TO HIS COLD PRECISE BUT ADMIRABLY BALANCED MIND + HE WAS I TAKE IT THE MOST PERFECT REASONING AND OBSERVING MACHINE THAT THE WORLD HAS SEEN BUT AS A LOVER HE WOULD HAVE PLACED HIMSELF IN A FALSE POSITION + HE NEVER SPOKE OF THE SOFTER PASSIONS SAVE WITH A GIBE AND A SNEER + THEY WERE ADMIRABLE THINGS FOR THE OBSERVER EXCELLENT FOR DRAWING THE VEIL FROM MEN'S MOTIVES AND ACTIONS + BUT FOR THE TRAINED TEASONER TO ADMIT SUCH INTRUSIONS INTO HIS OWN DELICATE AND FINELY ADJUSTED TEMPERAMENT WAS TO INTRODUCE A DISTRACTING FACTOR WHICH MIGHT THROW A DOUBT UPON ALL HIS MENTAL RESULTS + GRIT IN A SENSITIVE INSTRUMENT OR A CRACK IN ONE OF HIS OWN HIGH POWER LENSES WOULD NOT BE MORE DISTURBING THAN A STRONG EMOTION IN A NATURE SUCH AS HIS + AND YET THERE WAS BUT ONE WOMAN TO HIM AND THAT WOMAN WAS THE LATE IRENE ADLER OF DUBIOUS AND QUESTIONABLE MEMORY + I HAD SEEN LITTLE OF HOLMES LATELY + MY MARRIAGE HAD DRIFTED US AWAY FROM EACH OTHER + MY OWN COMPLETE HAPPINESS AND THE HOME CENTRED INTERESTS WHICH RISE UP AROUND THE MAN WHO FIRST FINDS HIMSELF MASTER OF HIS OWN ESTABLISHMENT WERE SUFFICIENT TO ABSORB ALL MY ATTENTION WHILE HOLMES WHO LOATHED EVERY FORM OF SOCIETY WITH HIS WHOLE BOHEMIAN SOUL REMAINED IN OUR LODGINGS IN BAKER STREET BURIED AMONG HIS OLD BOOKS AND ALTERNATING FROM WEEK TO WEEK BETWEEN COCAINE AND AMBITION THE DROWSINESS OF THE DRUG AND THE FIERCE ENERGY OF HIS OWN KEEN NATURE + HE WAS STILL AS EVER DEEPLY ATTRACTED BY THE STUDY OF CRIME AND OCCUPIED HIS IMMENSE FACULTIES AND EXTRAORDINARY POWERS OF OBSERVATION IN FOLLOWING OUT THOSE CLUES AND CLEARING UP THOSE MYSTERIES WHICH HAD BEEN ABANDONED AS HOPELESS BY THE OFFICIAL POLICE + FROM TIME TO TIME I HEARD SOME VAGUE ACCOUNT OF HIS DOINGS OF HIS SUMMONS TO ODESSA IN THE CASE OF THE TREPOFF MURDER OF HIS CLEARING UP OF THE SINGULAR TRAGEDY OF THE ATKINSON BROTHERS AT TRINCOMALEE AND FINALLY OF THE MISSION WHICH HE HAD ACCOMPLISHED SO DELICATELY AND SUCCESSFULLY FOR THE REIGNING FAMILY OF HOLLAND + BEYOND THESE SIGNS OF HIS ACTIVITY HOWEVER WHICH I MERELY SHARED WITH ALL THE READERS OF THE DAILY PRESS I KNEW LITTLE OF MY FORMER FRIEND AND COMPANION + ONE NIGHT IT WAS ON THE TWENTIETH OF MARCH ONE THOUSAND EIGHT HUNDRED EIGHTY EIGHT I WAS RETURNING FROM A JOURNEY TO A PATIENT FOR I HAD NOW RETURNED TO CIVIL PRACTICE WHEN MY WAY LED ME THROUGH BAKER STREET + AS I PASSED THE WELL REMEMBERED DOOR WHICH MUST ALWAYS BE ASSOCIATED IN MY MIND WITH MY WOOING AND WITH THE DARK INCIDENTS OF THE STUDY IN SCARLET I WAS SEIZED WITH A KEEN DESIRE TO SEE HOLMES AGAIN AND TO KNOW HOW HE WAS EMPLOYING HIS EXTRAORDINARY POWERS + HIS ROOMS WERE BRILLIANTLY LIT AND EVEN AS I LOOKED UP I SAW HIS TALL SPARE FIGURE PASS TWICE IN A DARK SILHOUETTE AGAINST THE BLIND + HE WAS PACING THE ROOM SWIFTLY EAGERLY WITH HIS HEAD SUNK UPON HIS CHEST AND HIS HANDS CLASPED BEHIND HIM + TO ME WHO KNEW HIS EVERY MOOD AND HABIT HIS ATTITUDE AND MANNER TOLD THEIR OWN STORY + HE WAS AT WORK AGAIN + HE HAD RISEN OUT OF HIS DRUG CREATED DREAMS AND WAS HOT UPON THE SCENT OF SOME NEW PROBLEM + I RANG THE BELL AND WAS SHOWN UP TO THE CHAMBER WHICH HAD FORMERLY BEEN IN PART MY OWN + HIS MANNER WAS NOT EFFUSIVE + IT SELDOM WAS BUT HE WAS GLAD I THINK TO SEE ME + WITH HARDLY A WORD SPOKEN BUT WITH A KINDLY EYE HE WAVED ME TO AN ARMCHAIR THREW ACROSS HIS CASE OF CIGARS AND INDICATED A SPIRIT CASE AND A GASOGENE IN THE CORNER + THEN HE STOOD BEFORE THE FIRE AND LOOKED ME OVER IN HIS SINGULAR INTROSPECTIVE FASHION + QUOTE WEDLOCK SUITS YOU QUOTE HE REMARKED + I THINK WATSON THAT YOU HAVE PUT ON SEVEN AND A HALF POUNDS SINCE I SAW YOU + SEVEN + I ANSWERED + INDEED I SHOULD HAVE THOUGHT A LITTLE MORE + JUST A TRIFLE MORE I FANCY WATSON + AND IN PRACTICE AGAIN I OBSERVE + YOU DID NOT TELL ME THAT YOU INTENDED TO GO INTO HARNESS + THEN HOW DO YOU KNOW + QUOTE I SEE IT I DEDUCE IT + HOW DO I KNOW THAT YOU HAVE BEEN GETTING YOURSELF VERY WET LATELY AND THAT YOU HAVE A MOST CLUMSY AND CARELESS SERVANT GIRL + MY DEAR HOLMES SAID I THIS IS TOO MUCH + YOU WOULD CERTAINLY HAVE BEEN BURNED HAD YOU LIVED A FEW CENTURIES AGO + IT IS TRUE THAT I HAD A COUNTRY WALK ON THURSDAY AND CAME HOME IN A DREADFUL MESS BUT AS I HAVE CHANGED MY CLOTHES I CAN'T IMAGINE HOW YOU DEDUCE IT + AS TO MARY JANE SHE IS INCORRIGIBLE AND MY WIFE HAS GIVEN HER NOTICE BUT THERE AGAIN I FAIL TO SEE HOW YOU WORK IT OUT + HE CHUCKLED TO HIMSELF AND RUBBED HIS LONG NERVOUS HANDS TOGETHER + IT IS SIMPLICITY ITSELF SAID HE MY EYES TELL ME THAT ON THE INSIDE OF YOUR LEFT SHOE JUST WHERE THE FIRELIGHT STRIKES IT THE LEATHER IS SCORED BY SIX ALMOST PARALLEL CUTS + OBVIOUSLY THEY HAVE BEEN CAUSED BY SOMEONE WHO HAS VERY CARELESSLY SCRAPED ROUND THE EDGES OF THE SOLE IN ORDER TO REMOVE CRUSTED MUD FROM IT + HENCE YOU SEE MY DOUBLE DEDUCTION THAT YOU HAD BEEN OUT IN VILE WEATHER AND THAT YOU HAD A PARTICULARLY MALIGNANT BOOTSLITTING SPECIMEN OF THE LONDON SLAVEY + AS TO YOUR PRACTICE IF A GENTLEMAN WALKS INTO MY ROOMS SMELLING OF IODOFORM WITH A BLACK MARK OF NITRATE OF SILVER UPON HIS RIGHT FOREFINGER AND A BULGE ON THE RIGHT SIDE OF HIS TOP HAT TO SHOW WHERE HE HAS SECRETED HIS STETHOSCOPE I MUST BE DULL INDEED IF I DO NOT PRONOUNCE HIM TO BE AN ACTIVE MEMBER OF THE MEDICAL PROFESSION + I COULD NOT HELP LAUGHING AT THE EASE WITH WHICH HE EXPLAINED HIS PROCESS OF DEDUCTION + QUOTE WHEN I HEAR YOU GIVE YOUR REASONS QUOTE I REMARKED QUOTE THE THING ALWAYS APPEARS TO ME TO BE SO RIDICULOUSLY SIMPLE THAT I COULD EASILY DO IT MYSELF THOUGH AT EACH SUCCESSIVE INSTANCE OF YOUR REASONING I AM BAFFLED UNTIL YOU EXPLAIN YOUR PROCESS + AND YET I BELIEVE THAT MY EYES ARE AS GOOD AS YOURS + QUITE SO HE ANSWERED LIGHTING A CIGARETTE AND THROWING HIMSELF DOWN INTO AN ARMCHAIR + YOU SEE BUT YOU DO NOT OBSERVE + THE DISTINCTION IS CLEAR + FOR EXAMPLE YOU HAVE FREQUENTLY SEEN THE STEPS WHICH LEAD UP FROM THE HALL TO THIS ROOM + FREQUENTLY + QUOTE HOW OFTEN QUOTE + WELL SOME HUNDREDS OF TIMES + THEN HOW MANY ARE THERE + HOW MANY + I DON'T KNOW + QUITE SO + YOU HAVE NOT OBSERVED + AND YET YOU HAVE SEEN + THAT IS JUST MY POINT + NOW I KNOW THAT THERE ARE SEVENTEEN STEPS BECAUSE I HAVE BOTH SEEN AND OBSERVED + BY THE WAY SINCE YOU ARE INTERESTED IN THESE LITTLE PROBLEMS AND SINCE YOU ARE GOOD ENOUGH TO CHRONICLE ONE OR TWO OF MY TRIFLING EXPERIENCES YOU MAY BE INTERESTED IN THIS QUOTE + HE THREW OVER A SHEET OF THICK PINK TINTED NOTE PAPER WHICH HAD BEEN LYING OPEN UPON THE TABLE + IT CAME BY THE LAST POST SAID HE + READ IT ALOUD + THE NOTE WAS UNDATED AND WITHOUT EITHER SIGNATURE OR ADDRESS + THERE WILL CALL UPON YOU TO NIGHT AT A QUARTER TO EIGHT O'CLOCK IT SAID A GENTLEMAN WHO DESIRES TO CONSULT YOU UPON A MATTER OF THE VERY DEEPEST MOMENT + YOUR RECENT SERVICES TO ONE OF THE ROYAL HOUSES OF EUROPE HAVE SHOWN THAT YOU ARE ONE WHO MAY SAFELY BE TRUSTED WITH MATTERS WHICH ARE OF AN IMPORTANCE WHICH CAN HARDLY BE EXAGGER ATED + THIS ACCOUNT OF YOU WE HAVE FROM ALL QUARTERS RE CEIVED + BE IN YOUR CHAMBER THEN AT THAT HOUR AND DO NOT TAKE IT AMISS IF YOUR VISITOR WEAR A MASK + THIS IS INDEED A MYSTERY I REMARKED + WHAT DO YOU IMAGINE THAT IT MEANS + QUOTE I HAVE NO DATA YET + IT IS A CAPITAL MISTAKE TO THEORIZE BEFORE ONE HAS DATA + INSENSIBLY ONE BEGINS TO TWIST FACTS TO SUIT THEORIES INSTEAD OF THEORIES TO SUIT FACTS + BUT THE NOTE ITSELF + WHAT DO YOU DEDUCE FROM IT + I CAREFULLY EXAMINED THE WRITING AND THE PAPER UPON WHICH IT WAS WRITTEN + THE MAN WHO WROTE IT WAS PRESUMABLY WELL TO DO I REMARKED ENDEAVOURING TO IMITATE MY COMPANION'S PROCESSES + SUCH PAPER COULD NOT BE BOUGHT UNDER HALF A CROWN A PACKET + IT IS PECULIARLY STRONG AND STIFF + PECULIAR THAT IS THE VERY WORD SAID HOLMES + QUOTE IT IS NOT AN ENGLISH PAPER AT ALL + HOLD IT UP TO THE LIGHT + I DID SO AND SAW A LARGE E. WITH A SMALL G. A P. AND A LARGE G. WITH A SMALL F. WOVEN INTO THE TEXTURE OF THE PAPER + WHAT DO YOU MAKE OF THAT ASKED HOLMES + THE NAME OF THE MAKER NO DOUBT OR HIS MONOGRAM RATHER + NOT AT ALL + THE G. WITH THE SMALL T. STANDS FOR GESELLSCHAFT WHICH IS THE GERMAN FOR COMPANY + IT IS A CUSTOMARY CONTRACTION LIKE OUR COMPANY + P. OF COURSE STANDS FOR PAPIER + NOW FOR THE EG + LET US GLANCE AT OUR CONTINENTAL GAZETTEER QUOTE + HE TOOK DOWN A HEAVY BROWN VOLUME FROM HIS SHELVES + EGLOW EGLONITZ HERE WE ARE EGRIA + IT IS IN A GERMAN SPEAKING COUNTRY IN BOHEMIA NOT FAR FROM CARLSBAD + REMARKABLE AS BEING THE SCENE OF THE DEATH OF WALLENSTEIN AND FOR ITS NUMEROUS GLASS FACTORIES AND PAPER MILLS + HA HA MY BOY WHAT DO YOU MAKE OF THAT + HIS EYES SPARKLED AND HE SENT UP A GREAT BLUE TRIUMPHANT CLOUD FROM HIS CIGARETTE + THE PAPER WAS MADE IN BOHEMIA I SAID + PRECISELY + AND THE MAN WHO WROTE THE NOTE IS A GERMAN + DO YOU NOTE THE PECULIAR CONSTRUCTION OF THE SENTENCE THIS ACCOUNT OF YOU WE HAVE FROM ALL QUARTERS RECEIVED + A FRENCHMAN OR RUSSIAN COULD NOT HAVE WRITTEN THAT + IT IS THE GERMAN WHO IS SO UNCOURTEOUS TO HIS VERBS + IT ONLY REMAINS THEREFORE TO DISCOVER WHAT IS WANTED BY THIS GERMAN WHO WRITES UPON BOHEMIAN PAPER AND PREFERS WEARING A MASK TO SHOWING HIS FACE + AND HERE HE COMES IF I AM NOT MISTAKEN TO RESOLVE ALL OUR DOUBTS + AS HE SPOKE THERE WAS THE SHARP SOUND OF HORSES' HOOFS AND GRATING WHEELS AGAINST THE CURB FOLLOWED BY A SHARP PULL AT THE BELL + HOLMES WHISTLED + QUOTE A PAIR BY THE SOUND QUOTE SAID HE + YES HE CONTINUED GLANCING OUT OF THE WINDOW + A NICE LITTLE BROUGHAM AND A PAIR OF BEAUTIES + A HUNDRED AND FIFTY GUINEAS APIECE + THERE'S MONEY IN THIS CASE WATSON IF THERE IS NOTHING ELSE + I THINK THAT I HAD BETTER GO HOLMES + NOT A BIT DOCTOR + STAY WHERE YOU ARE + I AM LOST WITHOUT MY BOSWELL + AND THIS PROMISES TO BE INTERESTING + IT WOULD BE A PITY TO MISS IT QUOTE + NEVER MIND HIM + I MAY WANT YOUR HELP AND SO MAY HE + HERE HE COMES + SIT DOWN IN THAT ARMCHAIR DOCTOR AND GIVE US YOUR BEST ATTENTION + A SLOW AND HEAVY STEP WHICH HAD BEEN HEARD UPON THE STAIRS AND IN THE PASSAGE PAUSED IMMEDIATELY OUTSIDE THE DOOR + THEN THERE WAS A LOUD AND AUTHORITATIVE TAP + COME IN SAID HOLMES + A MAN ENTERED WHO COULD HARDLY HAVE BEEN LESS THAN SIX FEET SIX INCHES IN HEIGHT WITH THE CHEST AND LIMBS OF A HERCULES + HIS DRESS WAS RICH WITH A RICHNESS WHICH WOULD IN ENGLAND BE LOOKED UPON AS AKIN TO BAD TASTE + HEAVY BANDS OF ASTRAKHAN WERE SLASHED ACROSS THE SLEEVES AND FRONTS OF HIS DOUBLE BREASTED COAT WHILE THE DEEP BLUE CLOAK WHICH WAS THROWN OVER HIS SHOULDERS WAS LINED WITH FLAME COLOURED SILK AND SECURED AT THE NECK WITH A BROOCH WHICH CONSISTED OF A SINGLE FLAMING BERYL + BOOTS WHICH EXTENDED HALFWAY UP HIS CALVES AND WHICH WERE TRIMMED AT THE TOPS WITH RICH BROWN FUR COMPLETED THE IMPRESSION OF BARBARIC OPULENCE WHICH WAS SUGGESTED BY HIS WHOLE APPEARANCE + HE CARRIED A BROAD BRIMMED HAT IN HIS HAND WHILE HE WORE ACROSS THE UPPER PART OF HIS FACE EXTENDING DOWN PAST THE CHEEKBONES A BLACK VIZARD MASK WHICH HE HAD APPARENTLY ADJUSTED THAT VERY MOMENT FOR HIS HAND WAS STILL RAISED TO IT AS HE ENTERED + FROM THE LOWER PART OF THE FACE HE APPEARED TO BE A MAN OF STRONG CHARACTER WITH A THICK HANGING LIP AND A LONG STRAIGHT CHIN SUGGESTIVE OF RESOLUTION PUSHED TO THE LENGTH OF OBSTINACY + YOU HAD MY NOTE HE ASKED WITH A DEEP HARSH VOICE AND A STRONGLY MARKED GERMAN ACCENT + I TOLD YOU THAT I WOULD CALL + HE LOOKED FROM ONE TO THE OTHER OF US AS IF UNCERTAIN WHICH TO ADDRESS + QUOTE PRAY TAKE A SEAT QUOTE SAID HOLMES + THIS IS MY FRIEND AND COLLEAGUE DOCTOR WATSON WHO IS OCCASIONALLY GOOD ENOUGH TO HELP ME IN MY CASES + WHOM HAVE I THE HONOUR TO ADDRESS + YOU MAY ADDRESS ME AS THE COUNT VON KRAMM A BOHEMIAN NOBLEMAN + I UNDERSTAND THAT THIS GENTLEMAN YOUR FRIEND IS A MAN OF HONOUR AND DISCRETION WHOM I MAY TRUST WITH A MATTER OF THE MOST EXTREME IMPORTANCE + IF NOT I SHOULD MUCH PREFER TO COMMUNICATE WITH YOU ALONE + I ROSE TO GO BUT HOLMES CAUGHT ME BY THE WRIST AND PUSHED ME BACK INTO MY CHAIR + IT IS BOTH OR NONE SAID HE + QUOTE YOU MAY SAY BEFORE THIS GENTLEMAN ANYTHING WHICH YOU MAY SAY TO ME QUOTE + THE COUNT SHRUGGED HIS BROAD SHOULDERS + THEN I MUST BEGIN SAID HE BY BINDING YOU BOTH TO ABSOLUTE SECRECY FOR TWO YEARS AT THE END OF THAT TIME THE MATTER WILL BE OF NO IMPORTANCE + AT PRESENT IT IS NOT TOO MUCH TO SAY THAT IT IS OF SUCH WEIGHT IT MAY HAVE AN INFLUENCE UPON EUROPEAN HISTORY + I PROMISE SAID HOLMES + AND I + YOU WILL EXCUSE THIS MASK CONTINUED OUR STRANGE VISITOR + QUOTE THE AUGUST PERSON WHO EMPLOYS ME WISHES HIS AGENT TO BE UNKNOWN TO YOU AND I MAY CONFESS AT ONCE THAT THE TITLE BY WHICH I HAVE JUST CALLED MYSELF IS NOT EXACTLY MY OWN QUOTE + I WAS AWARE OF IT SAID HOLMES DRILY + THE CIRCUMSTANCES ARE OF GREAT DELICACY AND EVERY PRECAUTION HAS TO BE TAKEN TO QUENCH WHAT MIGHT GROW TO BE AN IMMENSE SCANDAL AND SERIOUSLY COMPROMISE ONE OF THE REIGNING FAMILIES OF EUROPE + TO SPEAK PLAINLY THE MATTER IMPLICATES THE GREAT HOUSE OF ORMSTEIN HEREDITARY KINGS OF BOHEMIA + I WAS ALSO AWARE OF THAT MURMURED HOLMES SETTLING HIMSELF DOWN IN HIS ARMCHAIR AND CLOSING HIS EYES + OUR VISITOR GLANCED WITH SOME APPARENT SURPRISE AT THE LANGUID LOUNGING FIGURE OF THE MAN WHO HAD BEEN NO DOUBT DEPICTED TO HIM AS THE MOST INCISIVE REASONER AND MOST ENERGETIC AGENT IN EUROPE + HOLMES SLOWLY REOPENED HIS EYES AND LOOKED IMPATIENTLY AT HIS GIGANTIC CLIENT + IF YOUR MAJESTY WOULD CONDESCEND TO STATE YOUR CASE HE REMARKED I SHOULD BE BETTER ABLE TO ADVISE YOU + THE MAN SPRANG FROM HIS CHAIR AND PACED UP AND DOWN THE ROOM IN UNCONTROLLABLE AGITATION + THEN WITH A GESTURE OF DESPERATION HE TORE THE MASK FROM HIS FACE AND HURLED IT UPON THE GROUND + QUOTE YOU ARE RIGHT QUOTE HE CRIED QUOTE I AM THE KING + WHY SHOULD I ATTEMPT TO CONCEAL IT + WHY INDEED MURMURED HOLMES + YOUR MAJESTY HAD NOT SPOKEN BEFORE I WAS AWARE THAT I WAS ADDRESSING WILHELM GOTTSREICH SIGISMOND VON ORMSTEIN GRAND DUKE OF CASSELFELSTEIN AND HEREDITARY KING OF BOHEMIA + BUT YOU CAN UNDERSTAND SAID OUR STRANGE VISITOR SITTING DOWN ONCE MORE AND PASSING HIS HAND OVER HIS HIGH WHITE FOREHEAD YOU CAN UNDERSTAND THAT I AM NOT ACCUSTOMED TO DOING SUCH BUSINESS IN MY OWN PERSON + YET THE MATTER WAS SO DELICATE THAT I COULD NOT CONFIDE IT TO AN AGENT WITHOUT PUTTING MYSELF IN HIS POWER + I HAVE COME INCOGNITO FROM PRAGUE FOR THE PURPOSE OF CONSULTING YOU + QUOTE THEN PRAY CONSULT QUOTE SAID HOLMES SHUTTING HIS EYES ONCE MORE + THE FACTS ARE BRIEFLY THESE SOME FIVE YEARS AGO DURING A LENGTHY VISIT TO WARSAW I MADE THE ACQUAINTANCE OF THE WELLKNOWN ADVENTURESS IRENE ADLER + THE NAME IS NO DOUBT FARMILIAR TO YOU + KINDLY LOOK HER UP IN MY INDEX DOCTOR MURMURED HOLMES WITHOUT OPENING HIS EYES + FOR MANY YEARS HE HAD ADOPTED A SYSTEM OF DOCKETING ALL PARAGRAPHS CONCERNING MEN AND THINGS SO THAT IT WAS DIFFICULT TO NAME A SUBJECT OR A PERSON ON WHICH HE COULD NOT AT ONCE FURNISH INFORMATION + IN THIS CASE I FOUND HER BIOGRAPHY SANDWICHED IN BETWEEN THAT OF A HEBREW RABBI AND THAT OF A STAFF COMMANDER WHO HAD WRITTEN A MONOGRAPH UPON THE DEEP SEA FISHES + LET ME SEE SAID HOLMES + HUM + BORN IN NEW JERSEY IN THE YEAR ONE THOUSAND EIGHT HUNDRED FIFTY EIGHT + CONTRALTO HUM + LA SCALA HUM + PRIMA DONNA IMPERIAL OPERA OF WARSAW YES + RETIRED FROM OPERATIC STAGE HA + LIVING IN LONDON QUITE SO + YOUR MAJESTY AS I UNDERSTAND BECAME ENTANGLED WITH THIS YOUNG PERSON WROTE HER SOME COMPROMISING LETTERS AND IS NOW DESIROUS OF GETTING THOSE LETTERS BACK QUOTE + PRECISELY SO + BUT HOW + WAS THERE A SECRET MARRIAGE + NONE + NO LEGAL PAPERS OR CERTIFICATES + QUOTE NONE QUOTE + THEN I FAIL TO FOLLOW YOUR MAJESTY + IF THIS YOUNG PERSON SHOULD PRODUCE HER LETTERS FOR BLACKMAILING OR OTHER PURPOSES HOW IS SHE TO PROVE THEIR AUTHENTICITY + THERE IS THE WRITING + POOH POOH + FORGERY + QUOTE MY PRIVATE NOTE PAPER QUOTE + STOLEN + MY OWN SEAL + IMITATED + MY PHOTOGRAPH + BOUGHT + QUOTE WE WERE BOTH IN THE PHOTOGRAPH QUOTE + OH DEAR + THAT IS VERY BAD + YOUR MAJESTY HAS INDEED COMMITTED AN INDISCRETION + I WAS MAD INSANE + YOU HAVE COMPROMISED YOURSELF SERIOUSLY + I WAS ONLY CROWN PRINCE THEN + I WAS YOUNG + I AM BUT THIRTY NOW QUOTE + IT MUST BE RECOVERED + WE HAVE TRIED AND FAILED + YOUR MAJESTY MUST PAY + IT MUST BE BOUGHT + SHE WILL NOT SELL + QUOTE STOLEN THEN QUOTE + FIVE ATTEMPTS HAVE BEEN MADE + TWICE BURGLARS IN MY PAY RANSACKED HER HOUSE + ONCE WE DIVERTED HER LUGGAGE WHEN SHE TRAVELLED + TWICE SHE HAS BEEN WAYLAID + THERE HAS BEEN NO RESULT + NO SIGN OF IT + ABSOLUTELY NONE + HOLMES LAUGHED + IT IS QUITE A PRETTY LITTLE PROBLEM SAID HE + QUOTE BUT A VERY SERIOUS ONE TO ME QUOTE RETURNED THE KING REPROACHFULLY + VERY INDEED + AND WHAT DOES SHE PROPOSE TO DO WITH THE PHOTOGRAPH + TO RUIN ME + BUT HOW + I AM ABOUT TO BE MARRIED + QUOTE SO I HAVE HEARD QUOTE + TO CLOTILDE LOTHMAN VON SAXE MENINGEN SECOND DAUGHTER OF THE KING OF SCANDINAVIA + YOU MAY KNOW THE STNCT PRINCIPLES OF HER FAMILY + SHE IS HERSELF THE VERY SOUL OF DELICACY + A SHADOW OF A DOUBT AS TO MY CONDUCT WOULD BRING THE MATTER TO AN END + AND IRENE ADLER + THREATENS TO SEND THEM THE PHOTOGRAPH + AND SHE WILL DO IT + I KNOW THAT SHE WILL DO IT + YOU DO NOT KNOW HER BUT SHE HAS A SOUL OF STEEL + SHE HAS THE FACE OF THE MOST BEAUTIFUL OF WOMEN AND THE MIND OF THE MOST RESOLUTE OF MEN + RATHER THAN I SHOULD MARRY ANOTHER WOMAN THERE ARE NO LENGTHS TO WHICH SHE WOULD NOT GO NONE + QUOTE YOU ARE SURE THAT SHE HAS NOT SENT IT YET QUOTE + I AM SURE + AND WHY + BECAUSE SHE HAS SAID THAT SHE WOULD SEND IT ON THE DAY WHEN THE BETROTHAL WAS PUBLICLY PROCLAIMED + THAT WILL BE NEXT MONDAY + OH THEN WE HAVE THREE DAYS YET SAID HOLMES WITH A YAWN + QUOTE THAT IS VERY FORTUNATE AS I HAVE ONE OR TWO MATTERS OF IMPORTANCE TO LOOK INTO JUST AT PRESENT + YOUR MAJESTY WILL OF COURSE STAY IN LONDON FOR THE PRESENT + CERTAINLY + YOU WILL FIND ME AT THE LANGHAM UNDER THE NAME OF THE COUNT VON KRAMM + THEN I SHALL DROP YOU A LINE TO LET YOU KNOW HOW WE PROGRESS + PRAY DO SO + I SHALL BE ALL ANXIETY QUOTE + THEN AS TO MONEY + YOU HAVE CARTE BLANCHE + ABSOLUTELY + I TELL YOU THAT I WOULD GIVE ONE OF THE PROVINCES OF MY KINGDOM TO HAVE THAT PHOTOGRAPH + AND FOR PRESENT EXPENSES + THE KING TOOK A HEAVY CHAMOIS LEATHER BAG FROM UNDER HIS CLOAK AND LAID IT ON THE TABLE + QUOTE THERE ARE THREE HUNDRED POUNDS IN GOLD AND SEVEN HUNDRED IN NOTES QUOTE HE SAID + HOLMES SCRIBBLED A RECEIPT UPON A SHEET OF HIS NOTE BOOK AND HANDED IT TO HIM + AND MADEMOISELLE'S ADDRESS HE ASKED + IS BRIONY LODGE SERPENTINE AVENUE SAINT JOHN'S WOOD + HOLMES TOOK A NOTE OF IT + ONE OTHER QUESTION SAID HE + WAS THE PHOTOGRAPH A CABINET + IT WAS + QUOTE THEN GOOD NIGHT YOUR MAJESTY AND I TRUST THAT WE SHALL SOON HAVE SOME GOOD NEWS FOR YOU + AND GOOD NIGHT WATSON HE ADDED AS THE WHEELS OF THE ROYAL BROUGHAM ROLLED DOWN THE STREET + IF YOU WLLL BE GOOD ENOUGH TO CALL TO MORROW AFTERNOON AT THREE O'CLOCK I SHOULD LIKE TO CHAT THIS LITTLE MATTER OVER WITH YOU + AT THREE O'CLOCK PRECISELY I WAS AT BAKER STREET BUT HOLMES HAD NOT YET RETURNED + THE LANDLADY INFORMED ME THAT HE HAD LEFT THE HOUSE SHORTLY AFTER EIGHT O'CLOCK IN THE MORNING + I SAT DOWN BESIDE THE FIRE HOWEVER WITH THE INTENTION OF AWAITING HIM HOWEVER LONG HE MIGHT BE + I WAS ALREADY DEEPLY INTERESTED IN HIS INQUIRY FOR THOUGH IT WAS SURROUNDED BY NONE OF THE GRIM AND STRANGE FEATURES WHICH WERE ASSOCIATED WITH THE TWO CRIMES WHICH I HAVE ALREADY RECORDED STILL THE NATURE OF THE CASE AND THE EXALTED STATION OF HIS CLIENT GAVE IT A CHARACTER OF ITS OWN + INDEED APART FROM THE NATURE OF THE INVESTIGATION WHICH MY FRIEND HAD ON HAND THERE WAS SOMETHING IN HIS MASTERLY GRASP OF A SITUATION AND HIS KEEN INCISIVE REASONING WHICH MADE IT A PLEASURE TO ME TO STUDY HIS SYSTEM OF WORK AND TO FOLLOW THE QUICK SUBTLE METHODS BY WHICH HE DISENTANGLED THE MOST INEXTRICABLE MYSTERIES + SO ACCUSTOMED WAS I TO HIS INVARIABLE SUCCESS THAT THE VERY POSSIBILITY OF HIS FAILING HAD CEASED TO ENTER INTO MY HEAD + IT WAS CLOSE UPON FOUR BEFORE THE DOOR OPENED AND A DRUNKENLOOKING GROOM ILL KEMPT AND SIDE WHISKERED WITH AN INFLAMED FACE AND DISREPUTABLE CLOTHES WALKED INTO THE ROOM + ACCUSTOMED AS I WAS TO MY FRIEND'S AMAZING POWERS IN THE USE OF DISGUISES I HAD TO LOOK THREE TIMES BEFORE I WAS CERTAIN THAT IT WAS INDEED HE + WITH A NOD HE VANISHED INTO THE BEDROOM WHENCE HE EMERGED IN FIVE MINUTES TWEED SUITED AND RESPECTABLE AS OF OLD + PUTTING HIS HANDS INTO HIS POCKETS HE STRETCHED OUT HIS LEGS IN FRONT OF THE FIRE AND LAUGHED HEARTILY FOR SOME MINUTES + WELL REALLY HE CRIED AND THEN HE CHOKED AND LAUGHED AGAIN UNTIL HE WAS OBLIGED TO LIE BACK LIMP AND HELPLESS IN THE CHAIR + WHAT IS IT + IT'S QUITE TOO FUNNY + I AM SURE YOU COULD NEVER GUESS HOW I EMPLOYED MY MORNING OR WHAT I ENDED BY DOING QUOTE + I CAN'T IMAGINE + I SUPPOSE THAT YOU HAVE BEEN WATCHING THE HABITS AND PERHAPS THE HOUSE OF MISS IRENE ADLER + QUITE SO BUT THE SEQUEL WAS RATHER UNUSUAL + I WILL TELL YOU HOWEVER + I LEFT THE HOUSE A LITTLE AFTER EIGHT O'CLOCK THIS MORNING IN THE CHARACTER OF A GROOM OUT OF WORK + THERE IS A WONDERFUL SYMPATHY AND FREEMASONRY AMONG HORSY MEN + BE ONE OF THEM AND YOU WILL KNOW ALL THAT THERE IS TO KNOW + I SOON FOUND BRIONY LODGE + IT IS A BIJOU VILLA WITH A GARDEN AT THE BACK. BUT BUILT OUT IN FRONT RIGHT UP TO THE ROAD TWO STORIES + CHUBB LOCK TO THE DOOR + LARGE SITTING ROOM ON THE RIGHT SIDE WELL FURNISHED WITH LONG WINDOWS ALMOST TO THE FLOOR AND THOSE PREPOSTEROUS ENGLISH WINDOW FASTENERS WHICH A CHILD COULD OPEN + BEHIND THERE WAS NOTHING REMARKABLE SAVE THAT THE PASSAGE WINDOW COULD BE REACHED FROM THE TOP OF THE COACH HOUSE + I WALKED ROUND IT AND EXAMINED IT CLOSELY FROM EVERY POINT OF VIEW BUT WITHOUT NOTING ANYTHING ELSE OF INTEREST + I THEN LOUNGED DOWN THE STREET AND FOUND AS I EXPECTED THAT THERE WAS A MEWS IN A LANE WHICH RUNS DOWN BY ONE WALL OF THE GARDEN + I LENT THE OSTLERS A HAND IN RUBBING DOWN THEIR HORSES AND RECEIVED IN EXCHANGE TWOPENCE A GLASS OF HALF AND HALF TWO FILLS OF SHAG TOBACCO AND AS MUCH INFORMATION AS I COULD DESIRE ABOUT MISS ADLER TO SAY NOTHING OF HALF A DOZEN OTHER PEOPLE IN THE NEIGHBOURHOOD IN WHOM I WAS NOT IN THE LEAST INTERESTED BUT WHOSE BIOGRAPHIES I WAS COMPELLED TO LISTEN TO + QUOTE AND WHAT OF IRENE ADLER QUOTE + I ASKED + OH SHE HAS TURNED ALL THE MEN'S HEADS DOWN IN THAT PART + SHE IS THE DAINTIEST THING UNDER A BONNET ON THIS PLANET + SO SAY THE SERPENTINE MEWS TO A MAN + SHE LIVES QUIETLY SINGS AT CONCERTS DRIVES OUT AT FIVE EVERY DAY AND RETURNS AT SEVEN SHARP FOR DINNER + SELDOM GOES OUT AT OTHER TIMES EXCEPT WHEN SHE SINGS + HAS ONLY ONE MALE VISITOR BUT A GOOD DEAL OF HIM + HE IS DARK HANDSOME AND DASHING NEVER CALLS LESS THAN ONCE A DAY AND OFTEN TWICE + HE IS A MR. GODFREY NORTON OF THE INNER TEMPLE + SEE THE ADVANTAGES OF A CABMAN AS A CONFIDANT + THEY HAD DRIVEN HIM HOME A DOZEN TIMES FROM SERPENTINE MEWS AND KNEW ALL ABOUT HIM + WHEN I HAD LISTENED TO ALL THEY HAD TO TELL I BEGAN TO WALK UP AND DOWN NEAR BRIONY LODGE ONCE MORE AND TO THINK OVER MY PLAN OF CAMPAIGN + THIS GODFREY NORTON WAS EVIDENTLY AN IMPORTANT FACTOR IN THE MATTER + HE WAS A LAWYER + THAT SOUNDED OMINOUS + WHAT WAS THE RELATION BETWEEN THEM AND WHAT THE OBJECT OF HIS REPEATED VISITS + WAS SHE HIS CLIENT HIS FRIEND OR HIS MISTRESS + IF THE FORMER SHE HAD PROBABLY TRANSFERRED THE PHOTOGRAPH TO HIS KEEPING + IF THE LATTER IT WAS LESS LIKELY + ON THE ISSUE OF THIS QUESTION DEPENDED WHETHER I SHOULD CONTINUE MY WORK AT BRIONY LODGE OR TURN MY ATTENTION TO THE GENTLEMAN'S CHAMBERS IN THE TEMPLE + IT WAS A DELICATE POINT AND IT WIDENED THE FIELD OF MY INQUIRY + I FEAR THAT I BORE YOU WITH THESE DETAILS BUT I HAVE TO LET YOU SEE MY LITTLE DIFFICULTIES IF YOU ARE TO UNDERSTAND THE SITUATION + I AM FOLLOWING YOU CLOSELY I ANSWERED + I WAS STILL BALANCING THE MATTER IN MY MIND WHEN A HANSOM CAB DROVE UP TO BRIONY LODGE AND A GENTLEMAN SPRANG OUT + HE WAS A REMARKABLY HANDSOME MAN DARK AQUILINE AND MOUSTACHED EVIDENTLY THE MAN OF WHOM I HAD HEARD + HE APPEARED TO BE IN A GREAT HURRY SHOUTED TO THE CABMAN TO WAIT AND BRUSHED PAST THE MAID WHO OPENED THE DOOR WITH THE AIR OF A MAN WHO WAS THOROUGHLY AT HOME + QUOTE HE WAS IN THE HOUSE ABOUT HALF AN HOUR AND I COULD CATCH GLIMPSES OF HIM IN THE WINDOWS OF THE SITTING ROOM PACING UP AND DOWN TALKING EXCITEDLY AND WAVING HIS ARMS + OF HER I COULD SEE NOTHING + PRESENTLY HE EMERGED LOOKING EVEN MORE FLURRIED THAN BEFORE + AS HE STEPPED UP TO THE CAB HE PULLED A GOLD WATCH FROM HIS POCKET AND LOOKED AT IT EARNESTLY DRIVE LIKE THE DEVIL HE SHOUTED FIRST TO GROSS AND HANKEY'S IN REGENT STREET AND THEN TO THE CHURCH OF SAINT MONICA IN THE EDGEWARE ROAD + HALF A GUINEA IF YOU DO IT IN TWENTY MINUTES + AWAY THEY WENT AND I WAS JUST WONDERING WHETHER I SHOULD NOT DO WELL TO FOLLOW THEM WHEN UP THE LANE CAME A NEAT LITTLE LANDAU THE COACHMAN WITH HIS COAT ONLY HALF BUTTONED AND HIS TIE UNDER HIS EAR WHILE ALL THE TAGS OF HIS HARNESS WERE STICKING OUT OF THE BUCKLES + IT HADN'T PULLED UP BEFORE SHE SHOT OUT OF THE HALL DOOR AND INTO IT + I ONLY CAUGHT A GLIMPSE OF HER AT THE MOMENT BUT SHE WAS A LOVELY WOMAN WITH A FACE THAT A MAN MIGHT DIE FOR + THE CHURCH OF SAINT MONICA JOHN SHE CRIED AND HALF A SOVEREIGN IF YOU REACH IT IN TWENTY MINUTES + THIS WAS QUITE TOO GOOD TO LOSE WATSON + I WAS JUST BALANCING WHETHER I SHOULD RUN FOR IT OR WHETHER I SHOULD PERCH BEHIND HER LANDAU WHEN A CAB CAME THROUGH THE STREET + THE DRIVER LOOKED TWICE AT SUCH A SHABBY FARE BUT I JUMPED IN BEFORE HE COULD OBJECT + THE CHURCH OF SAINT MONICA SAID I AND HALF A SOVEREIGN IF YOU REACH IT IN TWENTY MINUTES + IT WAS TWENTY FIVE MINUTES TO TWELVE AND OF COURSE IT WAS CLEAR ENOUGH WHAT WAS IN THE WIND + MY CABBY DROVE FAST + I DON'T THINK I EVER DROVE FASTER BUT THE OTHERS WERE THERE BEFORE US + THE CAB AND THE LANDAU WITH THEIR STEAMING HORSES WERE IN FRONT OF THE DOOR WHEN I ARRIVED + I PAID THE MAN AND HURRIED INTO THE CHURCH + THERE WAS NOT A SOUL THERE SAVE THE TWO WHOM I HAD FOLLOWED AND A SURPLICED CLERGYMAN WHO SEEMED TO BE EXPOSTULATING WITH THEM + THEY WERE ALL THREE STANDING IN A KNOT IN FRONT OF THE ALTAR + I LOUNGED UP THE SIDE AISLE LIKE ANY OTHER IDLER WHO HAS DROPPED INTO A CHURCH + SUDDENLY TO MY SURPRISE THE THREE AT THE ALTAR FACED ROUND TO ME AND GODFREY NORTON CAME RUNNING AS HARD AS HE COULD TOWARDS ME + THANK GOD HE CRIED + YOU'LL DO + COME + COME + QUOTE WHAT THEN + I ASKED + COME MAN COME ONLY THREE MINUTES OR IT WON'T BE LEGAL + I WAS HALF DRAGGED UP TO THE ALTAR AND BEFORE I KNEW WHERE I WAS I FOUND MYSELF MUMBLING RESPONSES WHICH WERE WHISPERED IN MY EAR. AND VOUCHING FOR THINGS OF WHICH I KNEW NOTHING AND GENERALLY ASSISTING IN THE SECURE TYING UP OF IRENE ADLER SPINSTER TO GODFREY NORTON BACHELOR + IT WAS ALL DONE IN AN INSTANT AND THERE WAS THE GENTLEMAN THANKING ME ON THE ONE SIDE AND THE LADY ON THE OTHER WHILE THE CLERGYMAN BEAMED ON ME IN FRONT + IT WAS THE MOST PREPOSTEROUS POSITION IN WHICH I EVER FOUND MYSELF IN MY LIFE AND IT WAS THE THOUGHT OF IT THAT STARTED ME LAUGHING JUST NOW + IT SEEMS THAT THERE HAD BEEN SOME INFORMALITY ABOUT THEIR LICENSE THAT THE CLERGYMAN ABSOLUTELY REFUSED TO MARRY THEM WITHOUT A WITNESS OF SOME SORT AND THAT MY LUCKY APPEARANCE SAVED THE BRIDEGROOM FROM HAVING TO SALLY OUT INTO THE STREETS IN SEARCH OF A BEST MAN + THE BRIDE GAVE ME A SOVEREIGN AND I MEAN TO WEAR IT ON MY WATCH CHAIN IN MEMORY OF THE OCCASION + THIS IS A VERY UNEXPECTED TURN OF AFFAIRS SAID L. AND WHAT THEN + WELL I FOUND MY PLANS VERY SERIOUSLY MENACED + IT LOOKED AS IF THE PAIR MIGHT TAKE AN IMMEDIATE DEPARTURE AND SO NECESSITATE VERY PROMPT AND ENERGETIC MEASURES ON MY PART + AT THE CHURCH DOOR HOWEVER THEY SEPARATED HE DRIVING BACK TO THE TEMPLE AND SHE TO HER OWN HOUSE + I SHALL DRIVE OUT IN THE PARK AT FIVE AS USUAL SHE SAID AS SHE LEFT HIM + I HEARD NO MORE + THEY DROVE AWAY IN DIFFERENT DIRECTIONS AND I WENT OFF TO MAKE MY OWN ARRANGEMENTS QUOTE + WHICH ARE + SOME COLD BEEF AND A GLASS OF BEER HE ANSWERED RINGING THE BELL + I HAVE BEEN TOO BUSY TO THINK OF FOOD AND I AM LIKELY TO BE BUSIER STILL THIS EVENING + BY THE WAY DOCTOR I SHALL WANT YOUR COOPERATION + I SHALL BE DELIGHTED + QUOTE YOU DON'T MIND BREAKING THE LAW QUOTE + NOT IN THE LEAST + NOR RUNNING A CHANCE OF ARREST + NOT IN A GOOD CAUSE + OH THE CAUSE IS EXCELLENT + THEN I AM YOUR MAN + QUOTE I WAS SURE THAT I MIGHT RELY ON YOU QUOTE + BUT WHAT IS IT YOU WISH + WHEN MRS. TURNER HAS BROUGHT IN THE TRAY I WILL MAKE IT CLEAR TO YOU + NOW HE SAID AS HE TURNED HUNGRILY ON THE SIMPLE FARE THAT OUR LANDLADY HAD PROVIDED I MUST DISCUSS IT WHILE I EAT FOR I HAVE NOT MUCH TIME + IT IS NEARLY FIVE NOW + IN TWO HOURS WE MUST BE ON THE SCENE OF ACTION + MISS IRENE OR MADAME RATHER RETURNS FROM HER DRIVE AT SEVEN + WE MUST BE AT BRIONY LODGE TO MEET HER + AND WHAT THEN + QUOTE YOU MUST LEAVE THAT TO ME + I HAVE ALREADY ARRANGED WHAT IS TO OCCUR + THERE IS ONLY ONE POINT ON WHICH I MUST INSIST + YOU MUST NOT INTERFERE COME WHAT MAY + YOU UNDERSTAND + I AM TO BE NEUTRAL + TO DO NOTHING WHATEVER + THERE WILL PROBABLY BE SOME SMALL UNPLEASANTNESS + DO NOT JOIN IN IT + IT WILL END IN MY BEING CONVEYED INTO THE HOUSE + FOUR OR FIVE MINUTES AFTERWARDS THE SITTING ROOM WINDOW WILL OPEN + YOU ARE TO STATION YOURSELF CLOSE TO THAT OPEN WINDOW + YES + QUOTE YOU ARE TO WATCH ME FOR I WILL BE VISIBLE TO YOU QUOTE + YES + AND WHEN I RAISE MY HAND SO YOU WILL THROW INTO THE ROOM WHAT I GIVE YOU TO THROW AND WILL AT THE SAME TIME RAISE THE CRY OF FIRE + YOU QUITE FOLLOW ME + ENTIRELY + IT IS NOTHING VERY FORMIDABLE HE SAID TAKING A LONG CIGARSHAPED ROLL FROM HIS POCKET + QUOTE IT IS AN ORDINARY PLUMBER'S SMOKEROCKET FITTED WITH A CAP AT EITHER END TO MAKE IT SELF LIGHTING + YOUR TASK IS CONFINED TO THAT + WHEN YOU RAISE YOUR CRY OF FIRE IT WILL BE TAKEN UP BY QUITE A NUMBER OF PEOPLE + YOU MAY THEN WALK TO THE END OF THE STREET AND I WILL REJOIN YOU IN TEN MINUTES + I HOPE THAT I HAVE MADE MYSELF CLEAR + I AM TO REMAIN NEUTRAL TO GET NEAR THE WINDOW TO WATCH YOU AND AT THE SIGNAL TO THROW IN THIS OBJECT THEN TO RAISE THE CRY OF FIRE AND TO WAIT YOU AT THE COMER OF THE STREET + PRECISELY + THEN YOU MAY ENTIRELY RELY ON ME + THAT IS EXCELLENT + I THINK PERHAPS IT IS ALMOST TIME THAT I PREPARE FOR THE NEW ROLE I HAVE TO PLAY QUOTE + HE DISAPPEARED INTO HIS BEDROOM AND RETURNED IN A FEW MINUTES IN THE CHARACTER OF AN AMIABLE AND SIMPLE MINDED NONCONFORMIST CLERGYMAN + HIS BROAD BLACK HAT HIS BAGGY TROUSERS HIS WHITE TIE HIS SYMPATHETIC SMILE AND GENERAL LOOK OF PEERING AND BENEVOLENT CURIOSITY WERE SUCH AS MR. JOHN HARE ALONE COULD HAVE EQUALLED + IT WAS NOT MERELY THAT HOLMES CHANGED HIS COSTUME + HIS EXPRESSION HIS MANNER HIS VERY SOUL SEEMED TO VARY WITH EVERY FRESH PART THAT HE ASSUMED + THE STAGE LOST A FINE ACTOR EVEN AS SCIENCE LOST AN ACUTE REASONER WHEN HE BECAME A SPECIALIST IN CRIME + IT WAS A QUARTER PAST SIX WHEN WE LEFT BAKER STREET AND IT STILL WANTED TEN MINUTES TO THE HOUR WHEN WE FOUND OURSELVES IN SERPENTINE AVENUE + IT WAS ALREADY DUSK AND THE LAMPS WERE JUST BEING LIGHTED AS WE PACED UP AND DOWN IN FRONT OF BRIONY LODGE WAITING FOR THE COMING OF ITS OCCUPANT + THE HOUSE WAS JUST SUCH AS I HAD PICTURED IT FROM SHERLOCK HOLMES'S SUCCINCT DESCRIPTION BUT THE LOCALITY APPEARED TO BE LESS PRIVATE THAN I EXPECTED + ON THE CONTRARY FOR A SMALL STREET IN A QUIET NEIGHBOURHOOD IT WAS REMARKABLY ANIMATED + THERE WAS A GROUP OF SHABBILY DRESSED MEN SMOKING AND LAUGHING IN A CORNER A SCISSORS GRINDER WITH HIS WHEEL TWO GUARDSMEN WHO WERE FLIRTING WITH A NURSE GIRL AND SEVERAL WELL DRESSED YOUNG MEN WHO WERE LOUNGING UP AND DOWN WITH CIGARS IN THEIR MOUTHS + YOU SEE REMARKED HOLMES AS WE PACED TO AND FRO IN FRONT OF THE HOUSE THIS MARRIAGE RATHER SIMPLIFIES MATTERS + THE PHOTOGRAPH BECOMES A DOUBLE EDGED WEAPON NOW + THE CHANCES ARE THAT SHE WOULD BE AS AVERSE TO ITS BEING SEEN BY MR. GODFREY NORTON AS OUR CLIENT IS TO ITS COMING TO THE EYES OF HIS PRINCESS + NOW THE QUESTION IS WHERE ARE WE TO FIND THE PHOTOGRAPH + WHERE INDEED + IT IS MOST UNLIKELY THAT SHE CARRIES IT ABOUT WITH HER + IT IS CABINET SIZE + TOO LARGE FOR EASY CONCEALMENT ABOUT A WOMAN'S DRESS + SHE KNOWS THAT THE KING IS CAPABLE OF HAVING HER WAYLAID AND SEARCHED + TWO ATTEMPTS OF THE SORT HAVE ALREADY BEEN MADE + WE MAY TAKE IT THEN THAT SHE DOES NOT CARRY IT ABOUT WITH HER + QUOTE WHERE THEN QUOTE + HER BANKER OR HER LAWYER + THERE IS THAT DOUBLE POSSIBILITY + BUT I AM INCLINED TO THINK NEITHER + WOMEN ARE NATURALLY SECRETIVE AND THEY LIKE TO DO THEIR OWN SECRETING + WHY SHOULD SHE HAND IT OVER TO ANYONE ELSE + SHE COULD TRUST HER OWN GUARDIANSHIP BUT SHE COULD NOT TELL WHAT INDIRECT OR POLITICAL INFLUENCE MIGHT BE BROUGHT TO BEAR UPON A BUSINESS MAN + BESIDES REMEMBER THAT SHE HAD RESOLVED TO USE IT WITHIN A FEW DAYS + IT MUST BE WHERE SHE CAN LAY HER HANDS UPON IT + IT MUST BE IN HER OWN HOUSE + BUT IT HAS TWICE BEEN BURGLED + PSHAW + THEY DID NOT KNOW HOW TO LOOK + QUOTE BUT HOW WILL YOU LOOK QUOTE + I WILL NOT LOOK + WHAT THEN + I WILL GET HER TO SHOW ME + BUT SHE WILL REFUSE + SHE WILL NOT BE ABLE TO + BUT I HEAR THE RUMBLE OF WHEELS + IT IS HCR CARRIAGE + NOW CARRY OUT MY ORDERS TO THE LETTER QUOTE + AS HE SPOKE THE GLEAM OF THE SIDE LIGHTS OF A CARRIAGE CAME ROUND THE CURVE OF THE AVENUE + IT WAS A SMART LITTLE LANDAU WHICH RATTLED UP TO THE DOOR OF BRIONY LODGE + AS IT PULLED UP ONE OF THE LOAFING MEN AT THE CORNER DASHED FORWARD TO OPEN THE DOOR IN THE HOPE OF EARNING A COPPER BUT WAS ELBOWED AWAY BY ANOTHER LOAFER WHO HAD RUSHED UP WITH THE SAME INTENTION + A FIERCE QUARREL BROKE OUT WHICH WAS INCREASED BY THE TWO GUARDSMEN WHO TOOK SIDES WITH ONE OF THE LOUNGERS AND BY THE SCISSORSGRINDER WHO WAS EQUALLY HOT UPON THE OTHER SIDE + A BLOW WAS STRUCK AND IN AN INSTANT THE LADY WHO HAD STEPPED FROM HER CARRIAGE WAS THE CENTRE OF A LITTLE KNOT OF FLUSHED AND STRUGGLING MEN WHO STRUCK SAVAGELY AT EACH OTHER WITH THEIR FISTS AND STICKS + HOLMES DASHED INTO THE CROWD TO PROTECT THE LADY BUT JUST AS HE REACHED HER HE GAVE A CRY AND DROPPED TO THE GROUND WITH THE BLOOD RUNNING FREELY DOWN HIS FACE + AT HIS FALL THE GUARDSMEN TOOK TO THEIR HEELS IN ONE DIRECTION AND THE LOUNGERS IN THE OTHER WHILE A NUMBER OF BETTER DRESSED PEOPLE WHO HAD WATCHED THE SCUFFLE WITHOUT TAKING PART IN IT CROWDED IN TO HELP THE LADY AND TO ATTEND TO THE INJURED MAN + IRENE ADLER AS I WILL STILL CALL HER HAD HURRIED UP THE STEPS BUT SHE STOOD AT THE TOP WITH HER SUPERB FIGURE OUTLINED AGAINST THE LIGHTS OF THE HALL LOOKING BACK INTO THE STREET + IS THE POOR GENTLEMAN MUCH HURT SHE ASKED + HE IS DEAD CRIED SEVERAL VOICES + NO NO THERE'S LIFE IN HIM SHOUTED ANOTHER + BUT HE'LL BE GONE BEFORE YOU CAN GET HIM TO HOSPITAL + HE'S A BRAVE FELLOW SAID A WOMAN + QUOTE THEY WOULD HAVE HAD THE LADY'S PURSE AND WATCH IF IT HADN'T BEEN FOR HIM + THEY WERE A GANG AND A ROUGH ONE TOO + AH HE'S BREATHING NOW + HE CAN'T LIE IN THE STREET + MAY WE BRING HIM IN MARM + SURELY + BRING HIM INTO THE SITTING ROOM + THERE IS A COMFORTABLE SOFA + THIS WAY PLEASE + SLOWLY AND SOLEMNLY HE WAS BORNE INTO BRIONY LODGE AND LAID OUT IN THE PRINCIPAL ROOM WHILE I STILL OBSERVED THE PROCEEDINGS FROM MY POST BY THE WINDOW + THE LAMPS HAD BEEN LIT BUT THE BLINDS HAD NOT BEEN DRAWN SO THAT I COULD SEE HOLMES AS HE LAY UPON THE COUCH + I DO NOT KNOW WHETHER HE WAS SEIZED WITH COMPUNCTION AT THAT MOMENT FOR THE PART HE WAS PLAYING BUT I KNOW THAT I NEVER FELT MORE HEARTILY ASHAMED OF MYSELF IN MY LIFE THAN WHEN I SAW THE BEAUTIFUL CREATURE AGAINST WHOM I WAS CONSPIRING OR THE GRACE AND KINDLINESS WITH WHICH SHE WAITED UPON THE INJURED MAN + AND YET IT WOULD BE THE BLACKEST TREACHERY TO HOLMES TO DRAW BACK NOW FROM THE PART WHICH HE HAD INTRUSTED TO ME + I HARDENED MY HEART AND TOOK THE SMOKE ROCKET FROM UNDER MY ULSTER + AFTER ALL I THOUGHT WE ARE NOT INJURING HER + WE ARE BUT PREVENTING HER FROM INJURING ANOTHER + HOLMES HAD SAT UP UPON THE COUCH AND I SAW HIM MOTION LIKE A MAN WHO IS IN NEED OF AIR + A MAID RUSHED ACROSS AND THREW OPEN THE WINDOW + AT THE SAME INSTANT I SAW HIM RAISE HIS HAND AND AT THE SIGNAL I TOSSED MY ROCKET INTO THE ROOM WITH A CRY OF QUOTE FIRE QUOTE + THE WORD WAS NO SOONER OUT OF MY MOUTH THAN THE WHOLE CROWD OF SPECTATORS WELL DRESSED AND ILL GENTLEMEN OSTLERS AND SERVANT MAIDS JOINED IN A GENERAL SHRIEK OF FIRE + THICK CLOUDS OF SMOKE CURLED THROUGH THE ROOM AND OUT AT THE OPEN WINDOW + I CAUGHT A GLIMPSE OF RUSHING FIGURES AND A MOMENT LATER THE VOICE OF HOLMES FROM WITHIN ASSURING THEM THAT IT WAS A FALSE ALARM + SLIPPING THROUGH THE SHOUTING CROWD I MADE MY WAY TO THE CORNER OF THE STREET AND IN TEN MINUTES WAS REJOICED TO FIND MY FRIEND'S ARM IN MINE AND TO GET AWAY FROM THE SCENE OF UPROAR + HE WALKED SWIFTLY AND IN SILENCE FOR SOME FEW MINUTES UNTIL WE HAD TURNED DOWN ONE OF THE QUIET STREETS WHICH LEAD TOWARDS THE EDGEWARE ROAD + YOU DID IT VERY NICELY DOCTOR HE REMARKED + NOTHING COULD HAVE BEEN BETTER + IT IS ALL RIGHT + YOU HAVE THE PHOTOGRAPH + QUOTE I KNOW WHERE IT IS QUOTE + AND HOW DID YOU FIND OUT + SHE SHOWED ME AS I TOLD YOU SHE WOULD + I AM STILL IN THE DARK + I DO NOT WISH TO MAKE A MYSTERY SAID HE LAUGHING + THE MATTER WAS PERFECTLY SIMPLE + YOU OF COURSE SAW THAT EVERYONE IN THE STREET WAS AN ACCOMPLICE + THEY WERE ALL ENGAGED FOR THE EVENING QUOTE + I GUESSED AS MUCH + THEN WHEN THE ROW BROKE OUT I HAD A LITTLE MOIST RED PAINT IN THE PALM OF MY HAND + I RUSHED FORWARD FELL DOWN. CLAPPED MY HAND TO MY FACE AND BECAME A PITEOUS SPECTACLE + IT IS AN OLD TRICK + THAT ALSO I COULD FATHOM + THEN THEY CARRIED ME IN + SHE WAS BOUND TO HAVE ME IN + WHAT ELSE COULD SHE DO + AND INTO HER SITTING ROOM. WHICH WAS THE VERY ROOM WHICH I SUSPECTED + IT LAY BETWEEN THAT AND HER BEDROOM AND I WAS DETERMINED TO SEE WHICH + THEY LAID ME ON A COUCH I MOTIONED FOR AIR THEY WERE COMPELLED TO OPEN THE WINDOW AND YOU HAD YOUR CHANCE QUOTE + HOW DID THAT HELP YOU + IT WAS ALL IMPORTANT + WHEN A WOMAN THINKS THAT HER HOUSE IS ON FIRE HER INSTINCT IS AT ONCE TO RUSH TO THE THING WHICH SHE VALUES MOST + IT IS A PERFECTLY OVERPOWERING IMPULSE AND I HAVE MORE THAN ONCE TAKEN ADVANTAGE OF IT + IN THE CASE OF THE DARLINGTON SUBSTITUTION SCANDAL IT WAS OF USE TO ME AND ALSO IN THE ARNSWORTH CASTLE BUSINESS + A MARRIED WOMAN GRABS AT HER BABY AN UNMARRIED ONE REACHES FOR HER JEWEL BOX + NOW IT WAS CLEAR TO ME THAT OUR LADY OF TO DAY HAD NOTHING IN THE HOUSE MORE PRECIOUS TO HER THAN WHAT WE ARE IN QUEST OF + SHE WOULD RUSH TO SECURE IT + THE ALARM OF FIRE WAS ADMIRABLY DONE + THE SMOKE AND SHOUTING WERE ENOUGH TO SHAKE NERVES OF STEEL + SHE RESPONDED BEAUTIFULLY + THE PHOTOGRAPH IS IN A RECESS BEHIND A SLIDING PANEL JUST ABOVE THE RIGHT BELL PULL + SHE WAS THERE IN AN INSTANT AND I CAUGHT A GLIMPSE OF IT AS SHE HALF DREW IT OUT + WHEN I CRIED OUT THAT IT WAS A FALSE ALARM SHE REPLACED IT GLANCED AT THE ROCKET RUSHED FROM THE ROOM AND I HAVE NOT SEEN HER SINCE + I ROSE AND MAKING MY EXCUSES ESCAPED FROM THE HOUSE + I HESITATED WHETHER TO ATTEMPT TO SECURE THE PHOTOGRAPH AT ONCE BUT THE COACHMAN HAD COME IN AND AS HE WAS WATCHING ME NARROWLY IT SEEMED SAFER TO WAIT + A LITTLE OVER PRECIPITANCE MAY RUIN ALL + AND NOW + I ASKED + OUR QUEST IS PRACTICALLY FINISHED + I SHALL CALL WITH THE KING TO MORROW AND WITH YOU IF YOU CARE TO COME WITH US + WE WILL BE SHOWN INTO THE SITTING ROOM TO WAIT FOR THE LADY BUT IT IS PROBABLE THAT WHEN SHE COMES SHE MAY FIND NEITHER US NOR THE PHOTOGRAPH + IT MIGHT BE A SATISFACTION TO HIS MAJESTY TO REGAIN IT WITH HIS OWN HANDS QUOTE + AND WHEN WILL YOU CALL + AT EIGHT IN THE MORNING + SHE WILL NOT BE UP SO THAT WE SHALL HAVE A CLEAR FIELD + BESIDES WE MUST BE PROMPT FOR THIS MARRIAGE MAY MEAN A COMPLETE CHANGE IN HER LIFE AND HABITS + I MUST WIRE TO THE KING WITHOUT DELAY + WE HAD REACHED BAKER STREET AND HAD STOPPED AT THE DOOR + HE WAS SEARCHING HIS POCKETS FOR THE KEY WHEN SOMEONE PASSING SAID + GOOD NIGHT MISTER SHERLOCK HOLMES + THERE WERE SEVERAL PEOPLE ON THE PAVEMENT AT THE TIME BUT THE GREETING APPEARED TO COME FROM A SLIM YOUTH IN AN ULSTER WHO HAD HURRIED BY + I'VE HEARD THAT VOICE BEFORE SAID HOLMES STARING DOWN THE DIMLY LIT STREET + QUOTE NOW I WONDER WHO THE DEUCE THAT COULD HAVE BEEN QUOTE + I SLEPT AT BAKER STREET THAT NIGHT AND WE WERE ENGAGED UPON OUR TOAST AND COFFEE IN THE MORNING WHEN THE KING OF BOHEMIA RUSHED INTO THE ROOM + YOU HAVE REALLY GOT IT HE CRIED GRASPING SHERLOCK HOLMES BY EITHER SHOULDER AND LOOKING EAGERLY INTO HIS FACE + NOT YET + BUT YOU HAVE HOPES + I HAVE HOPES + THEN COME + I AM ALL IMPATIENCE TO BE GONE QUOTE + WE MUST HAVE A CAB + NO MY BROUGHAM IS WAITING + THEN THAT WILL SIMPLIFY MATTERS + WE DESCENDED AND STARTED OFF ONCE MORE FOR BRIONY LODGE + IRENE ADLER IS MARRIED REMARKED HOLMES + MARRIED + WHEN QUOTE + YESTERDAY + BUT TO WHOM + TO AN ENGLISH LAWYER NAMED NORTON + BUT SHE COULD NOT LOVE HIM + I AM IN HOPES THAT SHE DOES + QUOTE AND WHY IN HOPES QUOTE + BECAUSE IT WOULD SPARE YOUR MAJESTY ALL FEAR OF FUTURE ANNOYANCE + IF THE LADY LOVES HER HUSBAND SHE DOES NOT LOVE YOUR MAJESTY + IF SHE DOES NOT LOVE YOUR MAJESTY THERE IS NO REASON WHY SHE SHOULD INTERFERE WITH YOUR MAJESTY'S PLAN + IT IS TRUE + AND YET WELL + I WISH SHE HAD BEEN OF MY OWN STATION + WHAT A QUEEN SHE WOULD HAVE MADE + HE RELAPSED INTO A MOODY SILENCE WHICH WAS NOT BROKEN UNTIL WE DREW UP IN SERPENTINE AVENUE + THE DOOR OF BRIONY LODGE WAS OPEN AND AN ELDERLY WOMAN STOOD UPON THE STEPS + SHE WATCHED US WITH A SARDONIC EYE AS WE STEPPED FROM THE BROUGHAM + MR. SHERLOCK HOLMES I BELIEVE SAID SHE + QUOTE I AM MR. HOLMES QUOTE ANSWERED MY COMPANION LOOKING AT HER WITH A QUESTIONING AND RATHER STARTLED GAZE + INDEED + MY MISTRESS TOLD ME THAT YOU WERE LIKELY TO CALL + SHE LEFT THIS MORNING WITH HER HUSBAND BY THE FIVE FIFTEEN TRAIN FROM CHARING CROSS FOR THE CONTINENT + WHAT + SHERLOCK HOLMES STAGGERED BACK WHITE WITH CHAGRIN AND SURPRISE + DO YOU MEAN THAT SHE HAS LEFT ENGLAND + NEVER TO RETURN + QUOTE AND THE PAPERS QUOTE ASKED THE KING HOARSELY + ALL IS LOST + WE SHALL SEE + HE PUSHED PAST THE SERVANT AND RUSHED INTO THE DRAWING ROOM FOLLOWED BY THE KING AND MYSELF + THE FURNITURE WAS SCATTERED ABOUT IN EVERY DIRECTION WITH DISMANTLED SHELVES AND OPEN DRAWERS AS IF THE LADY HAD HURRIEDLY RANSACKED THEM BEFORE HER FLIGHT + HOLMES RUSHED AT THE BELL PULL TORE BACK A SMALL SLIDING SHUTTER AND PLUNGING IN HIS HAND PULLED OUT A PHOTOGRAPH AND A LETTER + THE PHOTOGRAPH WAS OF IRENE ADLER HERSELF IN EVENING DRESS THE LETTER WAS SUPERSCRIBED TO SHERLOCK HOLMES ESQ. TO BE LEFT TILL CALLED FOR + MY FRIEND TORE IT OPEN AND WE ALL THREE READ IT TOGETHER + IT WAS DATED AT MIDNIGHT OF THE PRECEDING NIGHT AND RAN IN THIS WAY MY DEAR MR. SHERLOCK HOLMES YOU REALLY DID IT VERY WELL + YOU TOOK ME IN COMPLETELY + UNTIL AFTER THE ALARM OF FIRE I HAD NOT A SUSPICION + BUT THEN WHEN I FOUND HOW I HAD BETRAYED MYSELF I BEGAN TO THINK + I HAD BEEN WARNED AGAINST YOU MONTHS AGO + I HAD BEEN TOLD THAT IF THE KING EMPLOYED AN AGENT IT WOULD CERTAINLY BE YOU + AND YOUR ADDRESS HAD BEEN GIVEN ME + YET WITH ALL THIS YOU MADE ME REVEAL WHAT YOU WANTED TO KNOW + EVEN AFTER I BECAME SUSPICIOUS I FOUND IT HARD TO THINK EVIL OF SUCH A DEAR KIND OLD CLERGYMAN + BUT YOU KNOW I HAVE BEEN TRAINED AS AN ACTRESS MYSELF + MALE COSTUME IS NOTHING NEW TO ME + I OFTEN TAKE ADVANTAGE OF THE FREEDOM WHICH IT GIVES + I SENT JOHN THE COACHMAN TO WATCH YOU RAN UP STAIRS GOT INTO MY WALKING CLOTHES AS I CALL THEM AND CAME DOWN JUST AS YOU DEPARTED + WELL I FOLLOWED YOU TO YOUR DOOR AND SO MADE SURE THAT I WAS REALLY AN OBJECT OF INTEREST TO THE CELEBRATED MR. SHERLOCK HOLMES + THEN I RATHER IMPRUDENTLY WISHED YOU GOOD NIGHT AND STARTED FOR THE TEMPLE TO SEE MY HUSBAND + WE BOTH THOUGHT THE BEST RESOURCE WAS FLIGHT WHEN PURSUED BY SO FORMIDABLE AN ANTAGONIST SO YOU WILL FIND THE NEST EMPTY WHEN YOU CALL TO MORROW + AS TO THE PHOTOGRAPH YOUR CLIENT MAY REST IN PEACE + I LOVE AND AM LOVED BY A BETTER MAN THAN HE + THE KING MAY DO WHAT HE WILL WITHOUT HINDRANCE FROM ONE WHOM HE HAS CRUELLY WRONGED + I KEEP IT ONLY TO SAFEGUARD MYSELF AND TO PRESERVE A WEAPON WHICH WILL ALWAYS SECURE ME FROM ANY STEPS WHICH HE MIGHT TAKE IN THE FUTURE + I LEAVE A PHOTOGRAPH WHICH HE MIGHT CARE TO POSSESS AND I REMAIN DEAR MR. SHERLOCK HOLMES VERY TRULY YOURS IRENE NORTON NEE ADLER + WHAT A WOMAN OH WHAT A WOMAN CRIED THE KING OF BOHEMIA WHEN WE HAD ALL THREE READ THIS EPISTLE + DID I NOT TELL YOU HOW QUICK AND RESOLUTE SHE WAS + WOULD SHE NOT HAVE MADE AN ADMIRABLE QUEEN + IS IT NOT A PITY THAT SHE WAS NOT ON MY LEVEL QUOTE + FROM WHAT I HAVE SEEN OF THE LADY SHE SEEMS INDEED TO BE ON A VERY DIFFERENT LEVEL TO YOUR MAJESTY SAID HOLMES COLDLY + I AM SORRY THAT I HAVE NOT BEEN ABLE TO BRING YOUR MAJESTY'S BUSINESS TO A MORE SUCCESSFUL CONCLUSION + ON THE CONTRARY MY DEAR SIR CRIED THE KING NOTHING COULD BE MORE SUCCESSFUL + I KNOW THAT HER WORD IS INVIOLATE + THE PHOTOGRAPH IS NOW AS SAFE AS IF IT WERE IN THE FIRE + I AM GLAD TO HEAR YOUR MAJESTY SAY SO + QUOTE I AM IMMENSELY INDEBTED TO YOU + PRAY TELL ME IN WHAT WAY I CAN REWARD YOU + THIS RING HE SLIPPED AN EMERALD SNAKE RING FROM HIS FINGER AND HELD IT OUT UPON THE PALM OF HIS HAND + YOUR MAJESTY HAS SOMETHING WHICH I SHOULD VALUE EVEN MORE HIGHLY SAID HOLMES + ' YOU HAVE BUT TO NAME IT + ' THIS PHOTOGRAPH + THE KING STARED AT HIM IN AMAZEMENT + IRENE'S PHOTOGMPH HE CRIED + CERTAINLY IF YOU WISH IT + QUOTE I THANK YOUR MAJESTY + THEN THERE IS NO MORE TO BE DONE IN THE MATTER + I HAVE THE HONOUR TO WISH YOU A VERY GOOD MORNING + HE BOWED AND TURNING AWAY WITHOUT OBSERVING THE HAND WHICH THE KING HAD STRETCHED OUT TO HIM HE SET OFF IN MY COMPANY FOR HIS CHAMBERS + AND THAT WAS HOW A GREAT SCANDAL THREATENED TO AFFECT THE KINGDOM OF BOHEMIA AND HOW THE BEST PLANS OF MR. SHERLOCK HOLMES WERE BEATEN BY A WOMAN'S WIT + HE USED TO MAKE MERRY OVER THE CLEVERNESS OF WOMEN BUT I HAVE NOT HEARD HIM DO IT OF LATE + AND WHEN HE SPEAKS OF IRENE ADLER OR WHEN HE REFERS TO HER PHOTOGRAPH IT IS ALWAYS UNDER THE HONOURABLE TITLE OF THE WOMAN diff --git a/samples/LMTutorial/train/secondain.txt b/samples/LMTutorial/train/secondain.txt new file mode 100755 index 0000000..c75a7e6 --- /dev/null +++ b/samples/LMTutorial/train/secondain.txt @@ -0,0 +1,743 @@ + I HAD INTENDED QUOTE THE ADVENTURE OF THE ABBEY GRANGE QUOTE TO BE THE LAST OF THOSE EXPLOITS OF MY FRIEND MR. SHERLOCK HOLMES WHICH I SHOULD EVER COMMUNICATE TO THE PUBLIC + THIS RESOLUTION OF MINE WAS NOT DUE TO ANY LACK OF MATERIAL SINCE I HAVE NOTES OF MANY HUNDREDS OF CASES TO WHICH I HAVE NEVER ALLUDED NOR WAS IT CAUSED BY ANY WANING INTEREST ON THE PART OF MY READERS IN THE SINGULAR PERSONALITY AND UNIQUE METHODS OF THIS REMARKABLE MAN + THE REAL REASON LAY IN THE RELUCTANCE WHICH MR. HOLMES HAS SHOWN TO THE CONTINUED PUBLICATION OF HIS EXPERIENCES + SO LONG AS HE WAS IN ACTUAL PROFESSIONAL PRACTICE THE RECORDS OF HIS SUCCESSES WERE OF SOME PRACTICAL VALUE TO HIM BUT SINCE HE HAS DEFINITELY RETIRED FROM LONDON AND BETAKEN HIMSELF TO STUDY AND BEE FARMING ON THE SUSSEX DOWNS NOTORIETY HAS BECOME HATEFUL TO HIM AND HE HAS PEREMPTORILY REQUESTED THAT HIS WISHES IN THIS MATTER SHOULD BE STRICTLY OBSERVED + IT WAS ONLY UPON MY REPRESENTING TO HIM THAT I HAD GIVEN A PROMISE THAT THE ADVENTURE OF THE SECOND STAIN SHOULD BE PUBLISHED WHEN THE TIMES WERE RIPE AND POINTING OUT TO HIM THAT IT IS ONLY APPROPRIATE THAT THIS LONG SERIES OF EPISODES SHOULD CULMINATE IN THE MOST IMPORTANT INTERNATIONAL CASE WHICH HE HAS EVER BEEN CALLED UPON TO HANDLE THAT I AT LAST SUCCEEDED IN OBTAINING HIS CONSENT THAT A CAREFULLY GUARDED ACCOUNT OF THE INCIDENT SHOULD AT LAST BE LAID BEFORE THE PUBLIC + IF IN TELLING THE STORY I SEEM TO BE SOMEWHAT VAGUE IN CERTAIN DETAILS THE PUBLIC WILL READILY UNDERSTAND THAT THERE IS AN EXCELLENT REASON FOR MY RETICENCE + IT WAS THEN IN A YEAR AND EVEN IN A DECADE THAT SHALL BE NAMELESS THAT UPON ONE TUESDAY MORNING IN AUTUMN WE FOUND TWO VISITORS OF EUROPEAN FAME WITHIN THE WALLS OF OUR HUMBLE ROOM IN BAKER STREET + THE ONE AUSTERE HIGH NOSED EAGLE EYED AND DOMINANT WAS NONE OTHER THAN THE ILLUSTRIOUS LORD BELLINGER TWICE PREMIER OF BRITAIN + THE OTHER DARK CLEAR CUT AND ELEGANT HARDLY YET OF MIDDLE AGE AND ENDOWED WITH EVERY BEAUTY OF BODY AND OF MIND WAS THE RIGHT HONOURABLE TRELAWNEY HOPE SECRETARY FOR EUROPEAN AFFAIRS AND THE MOST RISING STATESMAN IN THE COUNTRY + THEY SAT SIDE BY SIDE UPON OUR PAPER LITTERED SETTEE AND IT WAS EASY TO SEE FROM THEIR WORN AND ANXIOUS FACES THAT IT WAS BUSINESS OF THE MOST PRESSING IMPORTANCE WHICH HAD BROUGHT THEM + THE PREMIER'S THIN BLUE VEINED HANDS WERE CLASPED TIGHTLY OVER THE IVORY HEAD OF HIS UMBRELLA AND HIS GAUNT ASCETIC FACE LOOKED GLOOMILY FROM HOLMES TO ME + THE EUROPEAN SECRETARY PULLED NERVOUSLY AT HIS MOUSTACHE AND FIDGETED WITH THE SEALS OF HIS WATCH CHAIN + WHEN I DISCOVERED MY LOSS MR. HOLMES WHICH WAS AT EIGHT O'CLOCK THIS MORNING I AT ONCE INFORMED THE PRIME MINISTER + IT WAS AT HIS SUGGESTION THAT WE HAVE BOTH COME TO YOU + HAVE YOU INFORMED THE POLICE + NO SIR SAID THE PRIME MINISTER WITH THE QUICK DECISIVE MANNER FOR WHICH HE WAS FAMOUS + QUOTE WE HAVE NOT DONE SO NOR IS IT POSSIBLE THAT WE SHOULD DO SO + TO INFORM THE POLICE MUST IN THE LONG RUN MEAN TO INFORM THE PUBLIC + THIS IS WHAT WE PARTICULARLY DESIRE TO AVOID + AND WHY. SIR + BECAUSE THE DOCUMENT IN QUESTION IS OF SUCH IMMENSE IMPORTANCE THAT ITS PUBLICATION MIGHT VERY EASILY I MIGHT ALMOST SAY PROBABLY LEAD TO EUROPEAN COMPLICATIONS OF THE UTMOST MOMENT + IT IS NOT TOO MUCH TO SAY THAT PEACE OR WAR MAY HANG UPON THE ISSUE + UNLESS ITS RECOVERY CAN BE ATTENDED WITH THE UTMOST SECRECY THEN IT MAY AS WELL NOT BE RECOVERED AT ALL FOR ALL THAT IS AIMED AT BY THOSE WHO HAVE TAKEN IT IS THAT ITS CONTENTS SHOULD BE GENERALLY KNOWN + I UNDERSTAND + NOW MR. TRELAWNEY HOPE I SHOULD BE MUCH OBLIGED IF YOU WOULD TELL ME EXACTLY THE CIRCUMSTANCES UNDER WHICH THIS DOCUMENT DISAPPEARED QUOTE + THAT CAN BE DONE IN A VERY FEW WORDS MR. HOLMES + THE LETTER FOR IT WAS A LETTER FROM A FOREIGN POTENTATE WAS RECEIVED SIX DAYS AGO + IT WAS OF SUCH IMPORTANCE THAT I HAVE NEVER LEFT IT IN MY SAFE BUT I HAVE TAKEN IT ACROSS EACH EVENING TO MY HOUSE IN WHITEHALL TERRACE AND KEPT IT IN MY BEDROOM IN A LOCKED DESPATCH BOX + IT WAS THERE LAST NIGHT + OF THAT I AM CERTAIN + I ACTUALLY OPENED THE BOX WHILE I WAS DRESSING FOR DINNER AND SAW THE DOCUMENT INSIDE + THIS MORNING IT WAS GONE + THE DESPATCHBOX HAD STOOD BESIDE THE GLASS UPON MY DRESSING TABLE ALL NIGHT + I AM A LIGHT SLEEPER AND SO IS MY WIFE + WE ARE BOTH PREPARED TO SWEAR THAT NO ONE COULD HAVE ENTERED THE ROOM DURING THE NIGHT + AND YET I REPEAT THAT THE PAPER IS GONE + WHAT TIME DID YOU DINE + HALF PAST SEVEN + HOW LONG WAS IT BEFORE YOU WENT TO BED + QUOTE MY WIFE HAD GONE TO THE THEATRE + I WAITED UP FOR HER + IT WAS HALF PAST ELEVEN BEFORE WE WENT TO OUR ROOM + THEN FOR FOUR HOURS THE DESPATCH BOX HAD LAIN UNGUARDED + NO ONE IS EVER PERMITTED TO ENTER THAT ROOM SAVE THE HOUSEMAID IN THE MORNING AND MY VALET OR MY WIFE'S MAID DURING THE REST OF THE DAY + THEY ARE BOTH TRUSTY SERVANTS WHO HAVE BEEN WITH US FOR SOME TIME + BESIDES NEITHER OF THEM COULD POSSIBLY HAVE KNOWN THAT THERE WAS ANYTHING MORE VALUABLE THAN THE ORDINARY DEPARTMENTAL PAPERS IN MY DESPATCH BOX + WHO DID KNOW OF THE EXISTENCE OF THAT LETTER + QUOTE NO ONE IN THE HOUSE QUOTE + SURELY YOUR WIFE KNEW + NO SIR + I HAD SAID NOTHING TO MY WIFE UNTIL I MISSED THE PAPER THIS MORNING + THE PREMIER NODDED APPROVINGLY + I HAVE LONG KNOWN SIR HOW HIGH IS YOUR SENSE OF PUBLIC DUTY SAID HE + I AM CONVINCED THAT IN THE CASE OF A SECRET OF THIS IMPORTANCE IT WOULD RISE SUPERIOR TO THE MOST INTIMATE DOMESTIC TIES + THE EUROPEAN SECRETARY BOWED + QUOTE YOU DO ME NO MORE THAN JUSTICE SIR + UNTIL THIS MORNING I HAVE NEVER BREATHED ONE WORD TO MY WIFE UPON THIS MATTER + COULD SHE HAVE GUESSED + NO MR. HOLMES SHE COULD NOT HAVE GUESSED NOR COULD ANYONE HAVE GUESSED + HAVE YOU LOST ANY DOCUMENTS BEFORE + NO SIR + QUOTE WHO IS THERE IN ENGLAND WHO DID KNOW OF THE EXISTENCE OF THIS LETTER QUOTE + EACH MEMBER OF THE CABINET WAS INFORMED OF IT YESTERDAY BUT THE PLEDGE OF SECRECY WHICH ATTENDS EVERY CABINET MEETING WAS INCREASED BY THE SOLEMN WARNING WHICH WAS GIVEN BY THE PRIME MINISTER + GOOD HEAVENS TO THINK THAT WITHIN A FEW HOURS I SHOULD MYSELF HAVE LOST IT + HIS HANDSOME FACE WAS DISTORTED WITH A SPASM OF DESPAIR AND HIS HANDS TORE AT HIS HAIR + FOR A MOMENT WE CAUGHT A GLIMPSE OF THE NATURAL MAN IMPULSIVE ARDENT KEENLY SENSITIVE + THE NEXT THE ARISTOCRATIC MASK WAS REPLACED AND THE GENTLE VOICE HAD RETURNED + BESIDES THE MEMBERS OF THE CABINET THERE ARE TWO OR POSSIBLY THREE DEPARTMENTAL OFFICIALS WHO KNOW OF THE LETTER + NO ONE ELSE IN ENGLAND MR. HOLMES I ASSURE YOU + BUT ABROAD + QUOTE I BELIEVE THAT NO ONE ABROAD HAS SEEN IT SAVE THE MAN WHO WROTE IT + I AM WELL CONVINCED THAT HIS MINISTERS THAT THE USUAL OFFICIAL CHANNELS HAVE NOT BEEN EMPLOYED + HOLMES CONSIDERED FOR SOME LITTLE TIME + NOW SIR I MUST ASK YOU MORE PARTICULARLY WHAT THIS DOCUMENT IS AND WHY ITS DISAPPEARANCE SHOULD HAVE SUCH MOMENTOUS CONSEQUENCES + THE TWO STATESMEN EXCHANGED A QUICK GLANCE AND THE PREMIER'S SHAGGY EYEBROWS GATHERED IN A FROWN + MR. HOLMES THE ENVELOPE IS A LONG THIN ONE OF PALE BLUE COLOUR + THERE IS A SEAL OF RED WAX STAMPED WITH A CROUCHING LION + IT IS ADDRESSED IN LARGE BOLD HANDWRITING TO + I FEAR SIR SAID HOLMES THAT INTERESTING AND INDEED ESSENTIAL AS THESE DETAILS ARE MY INQUIRIES MUST GO MORE TO THE ROOT OF THINGS + WHAT WAS THE LETTER QUOTE + THAT IS A STATE SECRET OF THE UTMOST IMPORTANCE AND I FEAR THAT I CANNOT TELL YOU NOR DO I SEE THAT IT IS NECESSARY + IF BY THE AID OF THE POWERS WHICH YOU ARE SAID TO POSSESS YOU CAN FIND SUCH AN ENVELOPE AS I DESCRIBE WITH ITS ENCLOSURE YOU WILL HAVE DESERVED WELL OF YOUR COUNTRY AND EARNED ANY REWARD WHICH IT LIES IN OUR POWER TO BESTOW + SHERLOCK HOLMES ROSE WITH A SMILE + YOU ARE TWO OF THE MOST BUSY MEN IN THE COUNTRY SAID HE AND IN MY OWN SMALL WAY I HAVE ALSO A GOOD MANY CALLS UPON ME + I REGRET EXCEEDINGLY THAT I CANNOT HELP YOU IN THIS MATTER AND ANY CONTINUATION OF THIS INTERVIEW WOULD BE A WASTE OF TIME + THE PREMIER SPRANG TO HIS FEET WITH THAT QUICK FIERCE GLEAM OF HIS DEEP SET EYES BEFORE WHICH A CABINET HAS COWERED + I AM NOT ACCUSTOMED SIR HE BEGAN BUT MASTERED HIS ANGER AND RESUMED HIS SEAT + FOR A MINUTE OR MORE WE ALL SAT IN SILENCE + THEN THE OLD STATESMAN SHRUGGED HIS SHOULDERS + QUOTE WE MUST ACCEPT YOUR TERMS MR. HOLMES + NO DOUBT YOU ARE RIGHT AND IT IS UNREASONABLE FOR US TO EXPECT YOU TO ACT UNLESS WE GIVE YOU OUR ENTIRE CONFIDENCE + I AGREE WITH YOU SAID THE YOUNGER STATESMAN + THEN I WILL TELL YOU RELYING ENTIRELY UPON YOUR HONOUR AND THAT OF YOUR COLLEAGUE DOCTOR WATSON + I MAY APPEAL TO YOUR PATRIOTISM ALSO FOR I COULD NOT IMAGINE A GREATER MISFORTUNE FOR THE COUNTRY THAN THAT THIS AFFAIR SHOULD COME OUT + YOU MAY SAFELY TRUST US + QUOTE THE LETTER THEN IS FROM A CERTAIN FOREIGN POTENTATE WHO HAS BEEN RUFFLED BY SOME RECENT COLONIAL DEVELOPMENTS OF THIS COUNTRY + IT HAS BEEN WRITTEN HURRIEDLY AND UPON HIS OWN RESPONSIBILITY ENTIRELY + INQUIRIES HAVE SHOWN THAT HIS MINISTERS KNOW NOTHING OF THE MATTER + AT THE SAME TIME IT IS COUCHED IN SO UNFORTUNATE A MANNER AND CERTAIN PHRASES IN IT ARE OF SO PROVOCATIVE A CHARACTER THAT ITS PUBLICATION WOULD UNDOUBTEDLY LEAD TO A MOST DANGEROUS STATE OF FEELING IN THIS COUNTRY + THERE WOULD BE SUCH A FERMENT SIR THAT I DO NOT HESITATE TO SAY THAT WITHIN A WEEK OF THE PUBLICATION OF THAT LETTER THIS COUNTRY WOULD BE INVOLVED IN A GREAT WAR + HOLMES WROTE A NAME UPON A SLIP OF PAPER AND HANDED IT TO THE PREMIER + EXACTLY + IT WAS HE + AND IT IS THIS LETTER THIS LETTER WHICH MAY WELL MEAN THE EXPENDITURE OF A THOUSAND MILLIONS AND THE LIVES OF A HUNDRED THOUSAND MEN WHICH HAS BECOME LOST IN THIS UNACCOUNTABLE FASHION + HAVE YOU INFORMED THE SENDER + YES SIR A CIPHER TELEGRAM HAS BEEN DESPATCHED + QUOTE PERHAPS HE DESIRES THE PUBLICATION OF THE LETTER QUOTE + NO SIR WE HAVE STRONG REASON TO BELIEVE THAT HE ALREADY UNDERSTANDS THAT HE HAS ACTED IN AN INDISCREET AND HOT HEADED MANNER + IT WOULD BE A GREATER BLOW TO HIM AND TO HIS COUNTRY THAN TO US IF THIS LETTER WERE TO COME OUT + IF THIS IS SO WHOSE INTEREST IS IT THAT THE LETTER SHOULD COME OUT + WHY SHOULD ANYONE DESIRE TO STEAL IT OR TO PUBLISH IT + THERE MR. HOLMES YOU TAKE ME INTO REGIONS OF HIGH INTERNATIONAL POLITICS + BUT IF YOU CONSIDER THE EUROPEAN SITUATION YOU WILL HAVE NO DIFFICULTY IN PERCEIVING THE MOTIVE + THE WHOLE OF EUROPE IS AN ARMED CAMP + THERE IS A DOUBLE LEAGUE WHICH MAKES A FAIR BALANCE OF MILITARY POWER + GREAT BRITAIN HOLDS THE SCALES + IF BRITAIN WERE DRIVEN INTO WAR WITH ONE CONFEDERACY IT WOULD ASSURE THE SUPREMACY OF THE OTHER CONFEDERACY WHETHER THEY JOINED IN THE WAR OR NOT + DO YOU FOLLOW QUOTE + VERY CLEARLY + IT IS THEN THE INTEREST OF THE ENEMIES OF THIS POTENTATE TO SECURE AND PUBLISH THIS LETTER SO AS TO MAKE A BREACH BETWEEN HIS COUNTRY AND OURS + YES SIR + AND TO WHOM WOULD THIS DOCUMENT BE SENT IF IT FELL INTO THE HANDS OF AN ENEMY + TO ANY OF THE GREAT CHANCELLERIES OF EUROPE + IT IS PROBABLY SPEEDING ON ITS WAY THITHER AT THE PRESENT INSTANT AS FAST AS STEAM CAN TAKE IT QUOTE + MR. TRELAWNEY HOPE DROPPED HIS HEAD ON HIS CHEST AND GROANED ALOUD + THE PREMIER PLACED HIS HAND KINDLY UPON HIS SHOULDER + IT IS YOUR MISFORTUNE MY DEAR FELLOW + NO ONE CAN BLAME YOU + THERE IS NO PRECAUTION WHICH YOU HAVE NEGLECTED + NOW MR. HOLMES YOU ARE IN FULL POSSESSION OF THE FACTS + WHAT COURSE DO YOU RECOMMEND + HOLMES SHOOK HIS HEAD MOURNFULLY + YOU THINK SIR THAT UNLESS THIS DOCUMENT IS RECOVERED THERE WILL BE WAR + I THINK IT IS VERY PROBABLE + THEN SIR PREPARE FOR WAR + QUOTE THAT IS A HARD SAYING MR. HOLMES QUOTE + CONSIDER THE FACTS SIR + IT IS INCONCEIVABLE THAT IT WAS TAKEN AFTER ELEVEN THIRTY AT NIGHT SINCE I UNDERSTAND THAT MR. HOPE AND HIS WIFE WERE BOTH IN THE ROOM FROM THAT HOUR UNTIL THE LOSS WAS FOUND OUT + IT WAS TAKEN THEN YESTERDAY EVENING BETWEEN SEVENTHIRTY AND ELEVEN THIRTY PROBABLY NEAR THE EARLIER HOUR SINCE WHOEVER TOOK IT EVIDENTLY KNEW THAT IT WAS THERE AND WOULD NATURALLY SECURE IT AS EARLY AS POSSIBLE + NOW SIR IF A DOCUMENT OF THIS IMPORTANCE WERE TAKEN AT THAT HOUR WHERE CAN IT BE NOW + NO ONE HAS ANY REASON TO RETAIN IT + IT HAS BEEN PASSED RAPIDLY ON TO THOSE WHO NEED IT + WHAT CHANCE HAVE WE NOW TO OVERTAKE OR EVEN TO TRACE IT + IT IS BEYOND OUR REACH + THE PRIME MINISTER ROSE FROM THE SETTEE + WHAT YOU SAY IS PERFECTLY LOGICAL MR. HOLMES + I FEEL THAT THE MATTER IS INDEED OUT OF OUR HANDS + THEY ARE BOTH OLD AND TRIED SERVANTS + QUOTE I UNDERSTAND YOU TO SAY THAT YOUR ROOM IS ON THE SECOND FLOOR THAT THERE IS NO ENTRANCE FROM WITHOUT AND THAT FROM WITHIN NO ONE COULD GO UP UNOBSERVED + IT MUST THEN BE SOMEBODY IN THE HOUSE WHO HAS TAKEN IT + TO WHOM WOULD THE THIEF TAKE IT + TO ONE OF SEVERAL INTERNATIONAL SPIES AND SECRET AGENTS WHOSE NAMES ARE TOLERABLY FAMILIAR TO ME + THERE ARE THREE WHO MAY BE SAID TO BE THE HEADS OF THEIR PROFESSION + I WILL BEGIN MY RESEARCH BY GOING ROUND AND FINDING IF EACH OF THEM IS AT HIS POST + IF ONE IS MISSING ESPECIALLY IF HE HAS DISAPPEARED SINCE LAST NIGHT WE WILL HAVE SOME INDICATION AS TO WHERE THE DOCUMENT HAS GONE + WHY SHOULD HE BE MISSING ASKED THE EUROPEAN SECRETARY + HE WOULD TAKE THE LETTER TO AN EMBASSY IN LONDON AS LIKELY AS NOT + I FANCY NOT + THESE AGENTS WORK INDEPENDENTLY AND THEIR RELATIONS WITH THE EMBASSIES ARE OFTEN STRAINED + THE PRIME MINISTER NODDED HIS ACQUIESCENCE + QUOTE I BELIEVE YOU ARE RIGHT MR. HOLMES + HE WOULD TAKE SO VALUABLE A PRIZE TO HEADQUARTERS WITH HIS OWN HANDS + I THINK THAT YOUR COURSE OF ACTION IS AN EXCELLENT ONE + MEANWHILE HOPE WE CANNOT NEGLECT ALL OUR OTHER DUTIES ON ACCOUNT OF THIS ONE MISFORTUNE + SHOULD THERE BE ANY FRESH DEVELOPMENTS DURING THE DAY WE SHALL COMMUNICATE WITH YOU AND YOU WILL NO DOUBT LET US KNOW THE RESULTS OF YOUR OWN INQUIRIES + THE TWO STATESMEN BOWED AND WALKED GRAVELY FROM THE ROOM + WHEN OUR ILLUSTRIOUS VISITORS HAD DEPARTED HOLMES LIT HIS PIPE IN SILENCE AND SAT FOR SOME TIME LOST IN THE DEEPEST THOUGHT + I HAD OPENED THE MORNING PAPER AND WAS IMMERSED IN A SENSATIONAL CRIME WHICH HAD OCCURRED IN LONDON THE NIGHT BEFORE WHEN MY FRIEND GAVE AN EXCLAMATION SPRANG TO HIS FEET AND LAID HIS PIPE DOWN UPON THE MANTELPIECE + YES SAID HE THERE IS NO BETTER WAY OF APPROACHING IT + THE SITUATION IS DESPERATE BUT NOT HOPELESS + EVEN NOW IF WE COULD BE SURE WHICH OF THEM HAS TAKEN IT IT IS JUST POSSIBLE THAT IT HAS NOT YET PASSED OUT OF HIS HANDS + AFTER ALL IT IS A QUESTION OF MONEY WITH THESE FELLOWS AND I HAVE THE BRITISH TREASURY BEHIND ME + IF IT'S ON THE MARKET I'LL BUY IT IF IT MEANS ANOTHER PENNY ON THE INCOME TAX + IT IS CONCEIVABLE THAT THE FELLOW MIGHT HOLD IT BACK TO SEE WHAT BIDS COME FROM THIS SIDE BEFORE HE TRIES HIS LUCK ON THE OTHER + THERE ARE ONLY THOSE THREE CAPABLE OF PLAYING SO BOLD A GAME THERE ARE OBERSTEIN LA ROTHIERE AND EDUARDO LUCAS + I WILL SEE EACH OF THEM + I GLANCED AT MY MORNING PAPER + IS THAT EDUARDO LUCAS OF GODOLPHIN STREET + YES + QUOTE YOU WILL NOT SEE HIM QUOTE + WHY NOT + HE WAS MURDERED IN HIS HOUSE LAST NIGHT + MY FRIEND HAS SO OFTEN ASTONISHED ME IN THE COURSE OF OUR ADVENTURES THAT IT WAS WITH A SENSE OF EXULTATION THAT I REALIZED HOW COMPLETELY I HAD ASTONISHED HIM + HE STARED IN AMAZEMENT AND THEN SNATCHED THE PAPER FROM MY HANDS + THIS WAS THE PARAGRAPH WHICH I HAD BEEN ENGAGED IN READING WHEN HE ROSE FROM HIS CHAIR + MURDER IN WESTMINSTER A CRIME OF MYSTERIOUS CHARACTER WAS COMMITTED LAST NIGHT AT SIXTEEN GODOLPHIN STREET ONE OF THE OLD FASHIONED AND SE CLUDED ROWS OF EIGHTEENTH CENTURY HOUSES WHICH LIE BETWEEN THE RIVER AND THE ABBEY ALMOST IN THE SHADOW OF THE GREAT TOWER OF THE HOUSES OF PARLIAMENT + THIS SMALL BUT SELECT MANSION HAS BEEN INHABITED FOR SOME YEARS BY MR. EDUARDO LUCAS WELL KNOWN IN SOCIETY CIRCLES BOTH ON ACCOUNT OF HIS CHARMING PERSONALITY AND BECAUSE HE HAS THE WELL DESERVED REPUTATION OF BEING ONE OF THE BEST AMATEUR TENORS IN THE COUNTRY + MR. LUCAS IS AN UNMARRIED MAN THIRTY FOUR YEARS OF AGE AND HIS ESTABLISHMENT CONSISTS OF MRS. PRINGLE AN ELDERLY HOUSEKEEPER AND OF MITTON HIS VALET + THE FORMER RETIRES EARLY AND SLEEPS AT THE TOP OF THE HOUSE + THE VALET WAS OUT FOR THE EVENING VISITING A FRIEND AT HAMMERSMITH + FROM TEN O'CLOCK ONWARD MR. LUCAS HAD THE HOUSE TO HIMSELF + WHAT OCCURED DURING THAT TIME HAS NOT YET TRAN SPIRED BUT AT A QUARTER TO TWELVE POLICE CONSTABLE BARRETT PASSING ALONG GODOLPHIN STREET OBSERVED THAT THE DOOR OF NUMBER SIXTEEN WAS AJAR + HE KNOCKED BUT RECEIVED NO ANSWER + PERCEIVING A LIGHT IN THE FRONT ROOM HE ADVANCED INTO THE PASSAGE AND AGAIN KNOCKED BUT WITHOUT REPLY + HE THEN PUSHED OPEN THE DOOR AND ENTERED + THE ROOM WAS IN A STATE OF WILD DISORDER THE FURNITURE BEING ALL SWEPT TO ONE SIDE AND ONE CHAIR LYING ON ITS BACK IN THE CENTRE + BESIDE THIS CHAIR AND STILL GRASPING ONE OF ITS LEGS LAY THE UNFORTUNATE TENANT OF THE HOUSE + HE HAD BEEN STABBED TO THE HEART AND MUST HAVE DIED INSTANTLY + THE KNIFE WITH WHICH THE CRIME HAD BEEN COMMITTED WAS A CURVED INDIAN DAGGER PLUCKED DOWN FROM A TROPHY OF ORIENTAL ARMS WHICH ADORNED ONE OF THE WALLS + ROBBERY DOES NOT APPEAR TO HAVE BEEN THE MOTIVE OF THE CRIME FOR THERE HAD BEEN NO ATTEMPT TO REMOVE THE VALUABLE CONTENTS OF THE ROOM + MR. EDUARDO LUCAS WAS SO WELL KNOWN AND POPULAR THAT HIS VIOLENT AND MYSTERIOUS FATE WILL AROUSE PAINFUL INTEREST AND INTENSE SYMPATHY IN A WIDE SPREAD CIRCLE OF FRIENDS + WELL WATSON WHAT DO YOU MAKE OF THIS ASKED HOLMES AFTER A LONG PAUSE + IT IS AN AMAZING COINCIDENCE + A COINCIDENCE + HERE IS ONE OF THE THREE MEN WHOM WE HAD NAMED AS POSSIBLE ACTORS IN THIS DRAMA AND HE MEETS A VIOLENT DEATH DURING THE VERY HOURS WHEN WE KNOW THAT THAT DRAMA WAS BEING ENACTED + THE ODDS ARE ENORMOUS AGAINST ITS BEING COINCIDENCE + NO FIGURES COULD EXPRESS THEM + NO MY DEAR WATSON THE TWO EVENTS ARE CONNECTED MUST BE CONNECTED + IT IS FOR US TO FIND THE CONNECTION QUOTE + BUT NOW THE OFFICIAL POLICE MUST KNOW ALL + NOT AT ALL + THEY KNOW ALL THEY SEE AT GODOLPHIN STREET + THEY KNOW AND SHALL KNOW NOTHING OF WHITEHALL TERRACE + ONLY WE KNOW OF BOTH EVENTS AND CAN TRACE THE RELATION BETWEEN THEM + THERE IS ONE OBVIOUS POINT WHICH WOULD IN ANY CASE HAVE TURNED MY SUSPICIONS AGAINST LUCAS + GODOLPHIN STREET WESTMINSTER IS ONLY A FEW MINUTES' WALK FROM WHITEHALL TERRACE + THE OTHER SECRET AGENTS WHOM I HAVE NAMED LIVE IN THE EXTREME WEST END + IT WAS EASIER THEREFORE FOR LUCAS THAN FOR THE OTHERS TO ESTABLISH A CONNECTION OR RECEIVE A MESSAGE FROM THE EUROPEAN SECRETARY'S HOUSEHOLD A SMALL THING AND YET WHERE EVENTS ARE COMPRESSED INTO A FEW HOURS IT MAY PROVE ESSENTIAL + HALLOA WHAT HAVE WE HERE + MRS. HUDSON HAD APPEARED WITH A LADY'S CARD UPON HER SALVER + HOLMES GLANCED AT IT RAISED HIS EYEBROWS AND HANDED IT OVER TO ME + ASK LADY HILDA TRELAWNEY HOPE IF SHE WILL BE KIND ENOUGH TO STEP UP SAID HE + A MOMENT LATER OUR MODEST APARTMENT ALREADY SO DISTINGUISHED THAT MORNING WAS FURTHER HONOURED BY THE ENTRANCE OF THE MOST LOVELY WOMAN IN LONDON I HAD OFTEN HEARD OF THE BEAUTY OF THE YOUNGEST DAUGHTER OF THE DUKE OF BELMINSTER BUT NO DESCRIPTION OF IT AND NO CONTEMPLATION OF COLOURLESS PHOTOGRAPHS HAD PREPARED ME FOR THE SUBTLE DELICATE CHARM AND THE BEAUTIFUL COLOURING OF THAT EXQUISITE HEAD + AND YET AS WE SAW IT THAT AUTUMN MORNING IT WAS NOT ITS BEAUTY WHICH WOULD BE THE FIRST THING TO IMPRESS THE OBSERVER + THE CHEEK WAS LOVELY BUT IT WAS PALED WITH EMOTION THE EYES WERE BRIGHT BUT IT WAS THE BRIGHTNESS OF FEVER THE SENSITIVE MOUTH WAS TIGHT AND DRAWN IN AN EFFORT AFTER SELF COMMAND + TERROR NOT BEAUTY WAS WHAT SPRANG FIRST TO THE EYE AS OUR FAIR VISITOR STOOD FRAMED FOR AN INSTANT IN THE OPEN DOOR + HAS MY HUSBAND BEEN HERE MR. HOLMES + QUOTE YES MADAM HE HAS BEEN HERE QUOTE + MR. HOLMES I IMPLORE YOU NOT TO TELL HIM THAT I CAME HERE + HOLMES BOWED COLDLY AND MOTIONED THE LADY TO A CHAIR + YOUR LADYSHIP PLACES ME IN A VERY DELICATE POSITION + I BEG THAT YOU WILL SIT DOWN AND TELL ME WHAT YOU DESIRE BUT I FEAR THAT I CANNOT MAKE ANY UNCONDITIONAL PROMISE + SHE SWEPT ACROSS THE ROOM AND SEATED HERSELF WITH HER BACK TO THE WINDOW + IT WAS A QUEENLY PRESENCE TALL GRACEFUL AND INTENSELY WOMANLY + MR. HOLMES SHE SAID AND HER WHITE GLOVED HANDS CLASPED AND UNCLASPED AS SHE SPOKE I WILL SPEAK FRANKLY TO YOU IN THE HOPES THAT IT MAY INDUCE YOU TO SPEAK FRANKLY IN RETURN + THERE IS COMPLETE CONFIDENCE BETWEEN MY HUSBAND AND ME ON ALL MATTERS SAVE ONE + THAT ONE IS POLITICS + ON THIS HIS LIPS ARE SEALED + HE TELLS ME NOTHING + NOW I AM AWARE THAT THERE WAS A MOST DEPLORABLE OCCURRENCE IN OUR HOUSE LAST NIGHT + I KNOW THAT A PAPER HAS DISAPPEARED + BUT BECAUSE THE MATTER IS POLITICAL MY HUSBAND REFUSES TO TAKE ME INTO HIS COMPLETE CONFIDENCE + NOW IT IS ESSENTIAL ESSENTIAL I SAY THAT I SHOULD THOROUGHLY UNDERSTAND IT + YOU ARE THE ONLY OTHER PERSON SAVE ONLY THESE POLITICIANS WHO KNOWS THE TRUE FACTS + I BEG YOU THEN MR. HOLMES TO TELL ME EXACTLY WHAT HAS HAPPENED AND WHAT IT WILL LEAD TO + TELL ME ALL MR. HOLMES + LET NO REGARD FOR YOUR CLIENT'S INTERESTS KEEP YOU SILENT FOR I ASSURE YOU THAT HIS INTERESTS IF HE WOULD ONLY SEE IT WOULD BE BEST SERVED BY TAKING ME INTO HIS COMPLETE CONFIDENCE + WHAT WAS THIS PAPER WHICH WAS STOLEN + QUOTE MADAM WHAT YOU ASK ME IS REALLY IMPOSSIBLE QUOTE + SHE GROANED AND SANK HER FACE IN HER HANDS + YOU MUST SEE THAT THIS IS SO MADAM + IF YOUR HUSBAND THINKS FIT TO KEEP YOU IN THE DARK OVER THIS MATTER IS IT FOR ME WHO HAS ONLY LEARNED THE TRUE FACTS UNDER THE PLEDGE OF PROFESSIONAL SECRECY TO TELL WHAT HE HAS WITHHELD + IT IS NOT FAIR TO ASK IT + IT IS HIM WHOM YOU MUST ASK + I HAVE ASKED HIM + I COME TO YOU AS A LAST RESOURCE + BUT WITHOUT YOUR TELLING ME ANYTHING DEFINITE MR. HOLMES YOU MAY DO A GREAT SERVICE IF YOU WOULD ENLIGHTEN ME ON ONE POINT + WHAT IS IT MADAM + QUOTE IS MY HUSBAND'S POLITICAL CAREER LIKELY TO SUFFER THROUGH THIS INCIDENT QUOTE + WELL MADAM UNLESS IT IS SET RIGHT IT MAY CERTAINLY HAVE A VERY UNFONUNATE EFFECT + AH + SHE DREW IN HER BREATH SHARPLY AS ONE WHOSE DOUBTS ARE RESOLVED + ONE MORE QUESTION MR. HOLMES + FROM AN EXPRESSION WHICH MY HUSBAND DROPPED IN THE FIRST SHOCK OF THIS DISASTER I UNDERSTOOD THAT TERRIBLE PUBLIC CONSEQUENCES MIGHT ARISE FROM THE LOSS OF THIS DOCUMENT + IF HE SAID SO I CERTAINLY CANNOT DENY IT + QUOTE OF WHAT NATURE ARE THEY QUOTE + NAY MADAM THERE AGAIN YOU ASK ME MORE THAN I CAN POSSIBLY ANSWER + THEN I WILL TAKE UP NO MORE OF YOUR TIME + I CANNOT BLAME YOU MR. HOLMES FOR HAVING REFUSED TO SPEAK MORE FREELY AND YOU ON YOUR SIDE WILL NOT I AM SURE THINK THE WORSE OF ME BECAUSE I DESIRE EVEN AGAINST HIS WILL TO SHARE MY HUSBAND'S ANXIETIES + ONCE MORE I BEG THAT YOU WILL SAY NOTHING OF MY VISIT + SHE LOOKED BACK AT US FROM THE DOOR AND I HAD A LAST IMPRESSION OF THAT BEAUTIFUL HAUNTED FACE THE STARTLED EYES AND THE DRAWN MOUTH + THEN SHE WAS GONE + NOW WATSON THE FAIR SEX IS YOUR DEPARTMENT SAID HOLMES WITH A SMILE WHEN THE DWINDLING FROU FROU OF SKIRTS HAD ENDED IN THE SLAM OF THE FRONT DOOR + WHAT WAS THE FAIR LADY'S GAME + WHAT DID SHE REALLY WANT + QUOTE SURELY HER OWN STATEMENT IS CLEAR AND HER ANXIETY VERY NATURAL QUOTE + HUM + THINK OF HER APPEARANCE WATSON HER MANNER HER SUPPRESSED EXCITEMENT HER RESTLESSNESS HER TENACITY IN ASKING QUESHONS + REMEMBER THAT SHE COMES OF A CASTE WHO DO NOT LIGHTLY SHOW EMOTION + SHE WAS CERTAINLY MUCH MOVED + REMEMBER ALSO THE CURIOUS EARNESTNESS WITH WHICH SHE ASSURED US THAT IT WAS BEST FOR HER HUSBAND THAT SHE SHOULD KNOW ALL + WHAT DID SHE MEAN BY THAT + AND YOU MUST HAVE OBSERVED WATSON HOW SHE MANOEUVRED TO HAVE THE LIGHT AT HER BACK + SHE DID NOT WISH US TO READ HER EXPRESSION + QUOTE YES SHE CHOSE THE ONE CHAIR IN THE ROOM QUOTE + AND YET THE MOTIVES OF WOMEN ARE SO INSCRUTABLE + YOU REMEMBER THE WOMAN AT MARGATE WHOM I SUSPECTED FOR THE SAME REASON + NO POWDER ON HER NOSE THAT PROVED TO BE THE CORRECT SOLUTION + HOW CAN YOU BUILD ON SUCH A QUICKSAND + THEIR MOST TRIVIAL ACTION MAY MEAN VOLUMES OR THEIR MOST EXTRAORDINARY CONDUCT MAY DEPEND UPON A HAIRPIN OR A CURLING TONGS + GOODMORNING WATSON + YOU ARE OFF + YES I WILL WHILE AWAY THE MORNING AT GODOLPHIN STREET WITH OUR FRIENDS OF THE REGULAR ESTABLISHMENT + WITH EDUARDO LUCAS LIES THE SOLUTION OF OUR PROBLEM THOUGH I MUST ADMIT THAT I HAVE NOT AN INKLING AS TO WHAT FORM IT MAY TAKE + IT IS A CAPITAL MISTAKE TO THEORIZE IN ADVANCE OF THE FACTS + DO YOU STAY ON GUARD MY GOOD WATSON AND RECEIVE ANY FRESH VISITORS + I'LL JOIN YOU AT LUNCH IF I AM ABLE + ALL THAT DAY AND THE NEXT AND THE NEXT HOLMES WAS IN A MOOD WHICH HIS FRIENDS WOULD CALL TACITURN AND OTHERS MOROSE + HE RAN OUT AND RAN IN SMOKED INCESSANTLY PLAYED SNATCHES ON HIS VIOLIN SANK INTO REVERIES DEVOURED SANDWICHES AT IRREGULAR HOURS AND HARDLY ANSWERED THE CASUAL QUESTIONS WHICH I PUT TO HIM + IT WAS EVIDENT TO ME THAT THINGS WERE NOT GOING WELL WITH HIM OR HIS QUEST + HE WOULD SAY NOTHING OF THE CASE AND IT WAS FROM THE PAPERS THAT I LEARNED THE PARTICULARS OF THE INQUEST AND THE ARREST WITH THE SUBSEQUENT RELEASE OF JOHN MITTON THE VALET OF THE DECEASED + THE CORONER'S JURY BROUGHT IN THE OBVIOUS WILFUL MURDER BUT THE PARTIES REMAINED AS UNKNOWN AS EVER + NO MOTIVE WAS SUGGESTED + THE ROOM WAS FULL OF ARTICLES OF VALUE BUT NONE HAD BEEN TAKEN + THE DEAD MAN'S PAPERS HAD NOT BEEN TAMPERED WITH + THEY WERE CAREFULLY EXAMINED AND SHOWED THAT HE WAS A KEEN STUDENT OF INTERNATIONAL POLITICS AN INDEFATIGABLE GOSSIP A REMARKABLE LINGUIST AND AN UNTIRING LETTER WRITER + HE HAD BEEN ON INTIMATE TERMS WITH THE LEADING POLITICIANS OF SEVERAL COUNTRIES + BUT NOTHING SENSATIONAL WAS DISCOVERED AMONG THE DOCUMENTS WHICH FILLED HIS DRAWERS + AS TO HIS RELATIONS WITH WOMEN THEY APPEARED TO HAVE BEEN PROMISCUOUS BUT SUPERFICIAL + HE HAD MANY ACQUAINTANCES AMONG THEM BUT FEW FRIENDS AND NO ONE WHOM HE LOVED + HIS HABITS WERE REGULAR HIS CONDUCT INOFFENSIVE + HIS DEATH WAS AN ABSOLUTE MYSTERY AND LIKELY TO REMAIN SO + AS TO THE ARREST OF JOHN MITTON THE VALET IT WAS A COUNCIL OF DESPAIR AS AN ALTERNATIVE TO ABSOLUTE INACTION + BUT NO CASE COULD BE SUSTAINED AGAINST HIM + HE HAD VISITED FRIENDS IN HAMMERSMITH THAT NIGHT + THE ALIBI WAS COMPLETE + IT IS TRUE THAT HE STARTED HOME AT AN HOUR WHICH SHOULD HAVE BROUGHT HIM TO WESTMINSTER BEFORE THE TIME WHEN THE CRIME WAS DISCOVERED BUT HIS OWN EXPLANATION THAT HE HAD WALKED PART OF THE WAY SEEMED PROBABLE ENOUGH IN VIEW OF THE FINENESS OF THE NIGHT + HE HAD ACTUALLY ARRIVED AT TWELVE O'CLOCK AND APPEARED TO BE OVERWHELMED BY THE UNEXPECTED TRAGEDY + HE HAD ALWAYS BEEN ON GOOD TERMS WITH HIS MASTER + SEVERAL OF THE DEAD MAN'S POSSESSIONS NOTABLY A SMALL CASE OF RAZORS HAD BEEN FOUND IN THE VALET'S BOXES BUT HE EXPLAINED THAT THEY HAD BEEN PRESENTS FROM THE DECEASED AND THE HOUSEKEEPER WAS ABLE TO CORROBORATE THE STORY + MITTON HAD BEEN IN LUCAS'S EMPLOYMENT FOR THREE YEARS + IT WAS NOTICEABLE THAT LUCAS DID NOT TAKE MITTON ON THE CONTINENT WITH HIM + SOMETIMES HE VISITED PARIS FOR THREE MONTHS ON END BUT MITTON WAS LEFT IN CHARGE OF THE GODOLPHIN STREET HOUSE + AS TO THE HOUSEKEEPER SHE HAD HEARD NOTHING ON THE NIGHT OF THE CRIME + IF HER MASTER HAD A VISITOR HE HAD HIMSELF ADMITTED HIM + SO FOR THREE MORNINGS THE MYSTERY REMAINED SO FAR AS I COULD FOLLOW IT IN THE PAPERS + IF HOLMES KNEW MORE HE KEPT HIS OWN COUNSEL BUT AS HE TOLD ME THAT INSPECTOR LESTRADE HAD TAKEN HIM INTO HIS CONFIDENCE IN THE CASE I KNEW THAT HE WAS IN CLOSE TOUCH WITH EVERY DEVELOPMENT + UPON THE FOURTH DAY THERE APPEARED A LONG TELEGRAM FROM PARIS WHICH SEEMED TO SOLVE THE WHOLE QUESTION + A DISCOVERY HAS JUST BEEN MADE BY THE PARISIAN POLICE SAID THE DAILY TELEGRAPH WHICH RAISES THE VEIL WHICH HUNG ROUND THE TRAGIC FATE OF MR. EDUARDO LUCAS WHO MET HIS DEATH BY VIOLENCE LAST MONDAY NIGHT AT GODOLPHIN STREET WESTMINSTER + OUR READERS WILL REMEMBER THAT THE DECEASED GENTLEMAN WAS FOUND STABBED IN HIS ROOM AND THAT SOME SUSPICION ATTACHED TO HIS VALET BUT THAT THE CASE BROKE DOWN ON AN ALIBI + YESTERDAY A LADY WHO HAS BEEN KNOWN AS M. M. E. + HENRI FOURNAYE OCCUPYING A SMALL VILLA IN THE RUE AUSTERLITZ WAS REPORTED TO THE AUTHORITIES BY HER SERVANTS AS BEING INSANE + AN EXAMINATION SHOWED SHE HAD INDEED DE VELOPED MANIA OF A DANGEROUS AND PERMANENT FORM + ON INQUIRY THE POLICE HAVE DISCOVERED THAT M. M. E. + HENRI FOURNAYE ONLY RETURNED FROM A JOURNEY TO LONDON ON TUESDAY LAST AND THERE IS EVIDENCE TO CONNECT HER WITH THE CRIME AT WESTMINSTER + A COMPARISON OF PHOTOGRAPHS HAS PROVED CONCLUSIVELY THAT M. HENRI FOURNAYE AND EDUARDO LUCAS WERE REALLY ONE AND THE SAME PERSON AND THAT THE DECEASED HAD FOR SOME REASON LIVED A DOUBLE LIFE IN LONDON AND PARIS + M. M. E. + FOURNAYE WHO IS OF CREOLE ORIGIN IS OF AN EXTREMELY EXCITABLE NATURE AND HAS SUFFERED IN THE PAST FROM ATTACKS OF JEALOUSY WHICH HAVE AMOUNTED TO FRENZY + IT IS CONJECTURED THAT IT WAS IN ONE OF THESE THAT SHE COMMITTED THE TERRIBLE CRIME WHICH HAS CAUSED SUCH A SENSATION IN LONDON + HER MOVEMENTS UPON THE MONDAY NIGHT HAVE NOT YET BEEN TRACED BUT IT IS UNDOUBTED THAT A WOMAN ANSWERING TO HER DESCRIPTION ATTRACTED MUCH ATTENTION AT CHARING CROSS STATION ON TUESDAY MORNING BY THE WILDNESS OF HER APPEAR ANCE AND THE VIOLENCE OR HER GESTURES + IT IS PROBABLE THERE FORE THAT THE CRIME WAS EITHER COMMITTED WHEN INSANE OR THAT ITS IMMEDIATE EFFECT WAS TO DRIVE THE UNHAPPY WOMAN OUT OF HER MIND + AT PRESENT SHE IS UNABLE TO GIVE ANY COHERENT ACCOUNT OF THE PAST AND THE DOCTORS HOLD OUT NO HOPES OF THE REESTABLISHMENT OF HER REASON + THERE IS EVI DENCE THAT A WOMAN WHO MIGHT HAVE BEEN M. M. E. + FOURNAYE WAS SEEN FOR SOME HOURS UPON MONDAY NIGHT WATCHING THE HOUSE IN GODOLPHIN STREET + QUOTE WHAT DO YOU THINK OF THAT HOLMES QUOTE + I HAD READ THE ACCOUNT ALOUD TO HIM WHILE HE FINISHED HIS BREAKFAST + MY DEAR WATSON SAID HE AS HE ROSE FROM THE TABLE AND PACED UP AND DOWN THE ROOM YOU ARE MOST LONG SUFFERING BUT IF I HAVE TOLD YOU NOTHING IN THE LAST THREE DAYS IT IS BECAUSE THERE IS NOTHING TO TELL + EVEN NOW THIS REPORT FROM PARIS DOES NOT HELP US MUCH + SURELY IT IS FINAL AS REGARDS THE MAN'S DEATH + THE MAN'S DEATH IS A MERE INCIDENT A TRIVIAL EPISODE IN COMPARISON WITH OUR REAL TASK WHICH IS TO TRACE THIS DOCUMENT AND SAVE A EUROPEAN CATASTROPHE + ONLY ONE IMPORTANT THING HAS HAPPENED IN THE LAST THREE DAYS AND THAT IS THAT NOTHING HAS HAPPENED + I GET REPORTS ALMOST HOURLY FROM THE GOVERNMENT AND IT IS CERTAIN THAT NOWHERE IN EUROPE IS THERE ANY SIGN OF TROUBLE + NOW IF THIS LETTER WERE LOOSE NO IT CAN'T BE LOOSE BUT IF IT ISN'T LOOSE WHERE CAN IT BE + WHO HAS IT + WHY IS IT HELD BACK + THAT'S THE QUESTION THAT BEATS IN MY BRAIN LIKE A HAMMER + WAS IT INDEED A COINCIDENCE THAT LUCAS SHOULD MEET HIS DEATH ON THE NIGHT WHEN THE LETTER DISAPPEARED + DID THE LETTER EVER REACH HIM + IF SO WHY IS IT NOT AMONG HIS PAPERS + DID THIS MAD WIFE OF HIS CARRY IT OFF WITH HER + IF SO IS IT IN HER HOUSE IN PARIS + HOW COULD I SEARCH FOR IT WITHOUT THE FRENCH POLICE HAVING THEIR SUSPICIONS AROUSED + IT IS A CASE MY DEAR WATSON WHERE THE LAW IS AS DANGEROUS TO US AS THE CRIMINALS ARE + EVERY MAN'S HAND IS AGAINST US AND YET THE INTERESTS AT STAKE ARE COLOSSAL + SHOULD I BRING IT TO A SUCCESSFUL CONCLUSION IT WILL CERTAINLY REPRESENT THE CROWNING GLORY OF MY CAREER + AH HERE IS MY LATEST FROM THE FRONT + HE GLANCED HURRIEDLY AT THE NOTE WHICH HAD BEEN HANDED IN + QUOTE HALLOA + LESTRADE SEEMS TO HAVE OBSERVED SOMETHING OF INTEREST + PUT ON YOUR HAT WATSON AND WE WILL STROLL DOWN TOGETHER TO WESTMINSTER + IT WAS MY FIRST VISIT TO THE SCENE OF THE CRIME A HIGH DINGY NARROW CHESTED HOUSE PRIM FORMAL AND SOLID LIKE THE CENTURY WHICH GAVE IT BIRTH + LESTRADE'S BULLDOG FEATURES GAZED OUT AT US FROM THE FRONT WINDOW AND HE GREETED US WARMLY WHEN A BIG CONSTABLE HAD OPENED THE DOOR AND LET US IN + THE ROOM INTO WHICH WE WERE SHOWN WAS THAT IN WHICH THE CRIME HAD BEEN COMMITTED BUT NO TRACE OF IT NOW REMAINED SAVE AN UGLY IRREGULAR STAIN UPON THE CARPET + THIS CARPET WAS A SMALL SQUARE DRUGGET IN THE CENTRE OF THE ROOM SURROUNDED BY A BROAD EXPANSE OF BEAUTIFUL OLD FASHIONED WOOD FLOORING IN SQUARE BLOCKS HIGHLY POLISHED + OVER THE FIREPLACE WAS A MAGNIFICENT TROPHY OF WEAPONS ONE OF WHICH HAD BEEN USED ON THAT TRAGIC NIGHT + IN THE WINDOW WAS A SUMPTUOUS WRITING DESK AND EVERY DETAIL OF THE APARTMENT THE PICTURES THE RUGS AND THE HANGINGS ALL POINTED TO A TASTE WHICH WAS LUXURIOUS TO THE VERGE OF EFFEMINACY + SEEN THE PARIS NEWS ASKED LESTRADE + HOLMES NODDED + OUR FRENCH FRIENDS SEEM TO HAVE TOUCHED THE SPOT THIS TIME + NO DOUBT IT'S JUST AS THEY SAY + SHE KNOCKED AT THE DOOR SURPRISE VISIT I GUESS FOR HE KEPT HIS LIFE IN WATER TIGHT COMPARTMENTS HE LET HER IN COULDN'T KEEP HER IN THE STREET + SHE TOLD HIM HOW SHE HAD TRACED HIM REPROACHED HIM + ONE THING LED TO ANOTHER AND THEN WITH THAT DAGGER SO HANDY THE END SOON CAME + IT WASN'T ALL DONE IN AN INSTANT THOUGH FOR THESE CHAIRS WERE ALL SWEPT OVER YONDER AND HE HAD ONE IN HIS HAND AS IF HE HAD TRIED TO HOLD HER OFF WITH IT + WE'VE GOT IT ALL CLEAR AS IF WE HAD SEEN IT + HOLMES RAISED HIS EYEBROWS + AND YET YOU HAVE SENT FOR ME + QUOTE AH YES THAT'S ANOTHER MATTER A MERE TRIFLE BUT THE SORT OF THING YOU TAKE AN INTEREST IN QUEER YOU KNOW AND WHAT YOU MIGHT CALL FREAKISH + IT HAS NOTHING TO DO WITH THE MAIN FACT CAN'T HAVE ON THE FACE OF IT + WHAT IS IT THEN + WELL YOU KNOW AFTER A CRIME OF THIS SORT WE ARE VERY CAREFUL TO KEEP THINGS IN THEIR POSITION + NOTHING HAS BEEN MOVED + OFFICER IN CHARGE HERE DAY AND NIGHT + THIS MORNING AS THE MAN WAS BURIED AND THE INVESTIGATION OVER SO FAR AS THIS ROOM IS CONCERNED WE THOUGHT WE COULD TIDY UP A BIT + THIS CARPET + YOU SEE IT IS NOT FASTENED DOWN ONLY JUST LAID THERE + WE HAD OCCASION TO RAISE IT + WE FOUND + YES + YOU FOUND QUOTE + HOLMES'S FACE GREW TENSE WITH ANXIETY + WELL I'M SURE YOU WOULD NEVER GUESS IN A HUNDRED YEARS WHAT WE DID FIND + YOU SEE THAT STAIN ON THE CARPET + WELL A GREAT DEAL MUST HAVE SOAKED THROUGH MUST IT NOT + UNDOUBTEDLY IT MUST + WELL YOU WILL BE SURPRISED TO HEAR THAT THERE IS NO STAIN ON THE WHITE WOODWORK TO CORRESPOND + NO STAIN + BUT THERE MUST QUOTE + YES SO YOU WOULD SAY + BUT THE FACT REMAINS THAT THERE ISN'T + HE TOOK THE CORNER OF THE CARPET IN HIS HAND AND TURNING IT OVER HE SHOWED THAT IT WAS INDEED AS HE SAID + BUT THE UNDER SIDE IS AS STAINED AS THE UPPER + IT MUST HAVE LEFT A MARK + LESTRADE CHUCKLED WITH DELIGHT AT HAVING PUZZLED THE FAMOUS EXPERT + NOW I'LL SHOW YOU THE EXPLANATION + THERE IS A SECOND STAIN BUT IT DOES NOT CORRESPOND WITH THE OTHER + SEE FOR YOURSELF QUOTE + AS HE SPOKE HE TURNED OVER ANOTHER PORTION OF THE CARPET AND THERE SURE ENOUGH WAS A GREAT CRIMSON SPILL UPON THE SQUARE WHITE FACING OF THE OLD FASHIONED FLOOR + WHAT DO YOU MAKE OF THAT MR. HOLMES + WHY IT IS SIMPLE ENOUGH + THE TWO STAINS DID CORRESPOND BUT THE CARPET HAS BEEN TURNED ROUND + AS IT WAS SQUARE AND UNFASTENED IT WAS EASILY DONE + THE OFFICIAL POLICE DON'T NEED YOU MR. HOLMES TO TELL THEM THAT THE CARPET MUST HAVE BEEN TURNED ROUND + THAT'S CLEAR ENOUGH FOR THE STAINS LIE ABOVE EACH OTHER IF YOU LAY IT OVER THIS WAY + BUT WHAT I WANT TO KNOW IS WHO SHIFTED THE CARPET AND WHY + I COULD SEE FROM HOLMES'S RIGID FACE THAT HE WAS VIBRATING WITH INWARD EXCITEMENT + QUOTE LOOK HERE LESTRADE QUOTE SAID HE QUOTE HAS THAT CONSTABLE IN THE PASSAGE BEEN IN CHARGE OF THE PLACE ALL THE TIME QUOTE + YES HE HAS + WELL TAKE MY ADVICE + EXAMINE HIM CAREFULLY + DON'T DO IT BEFORE US + WE'LL WAIT HERE + YOU TAKE HIM INTO THE BACK ROOM + YOU'LL BE MORE LIKELY TO GET A CONFESSION OUT OF HIM ALONE + ASK HIM HOW HE DARED TO ADMIT PEOPLE AND LEAVE THEM ALONE IN THIS ROOM + DON'T ASK HIM IF HE HAS DONE IT + TAKE IT FOR GRANTED + TELL HIM YOU KNOW SOMEONE HAS BEEN HERE + PRESS HIM + TELL HIM THAT A FULL CONFESSION IS HIS ONLY CHANCE OF FORGIVENESS + DO EXACTLY WHAT I TELL YOU + BY GEORGE IF HE KNOWS I'LL HAVE IT OUT OF HIM CRIED LESTRADE + HE DARTED INTO THE HALL AND A FEW MOMENTS LATER HIS BULLYING VOICE SOUNDED FROM THE BACK ROOM + NOW WATSON NOW CRIED HOLMES WITH FRENZIED EAGERNESS + ALL THE DEMONIACAL FORCE OF THE MAN MASKED BEHIND THAT LISTLESS MANNER BURST OUT IN A PAROXYSM OF ENERGY + HE TORE THE DRUGGET FROM THE FLOOR AND IN AN INSTANT WAS DOWN ON HIS HANDS AND KNEES CLAWING AT EACH OF THE SQUARES OF WOOD BENEATH IT + ONE TURNED SIDEWAYS AS HE DUG HIS NAILS INTO THE EDGE OF IT + IT HINGED BACK LIKE THE LID OF A BOX + A SMALL BLACK CAVITY OPENED BENEATH IT + HOLMES PLUNGED HIS EAGER HAND INTO IT AND DREW IT OUT WITH A BITTER SNARL OF ANGER AND DISAPPOINTMENT + IT WAS EMPTY + QUOTE QUICK WATSON QUICK + GET IT BACK AGAIN + THE WOODEN LID WAS REPLACED AND THE DRUGGET HAD ONLY JUST BEEN DRAWN STRAIGHT WHEN LESTRADE'S VOICE WAS HEARD IN THE PASSAGE + HE FOUND HOLMES LEANING LANGUIDLY AGAINST THE MANTELPIECE RESIGNED AND PATIENT ENDEAVOURING TO CONCEAL HIS IRREPRESSIBLE YAWNS + SORRY TO KEEP YOU WAITING MR. HOLMES + I CAN SEE THAT YOU ARE BORED TO DEATH WITH THE WHOLE AFFAIR + WELL HE HAS CONFESSED ALL RIGHT + COME IN HERE MACPHERSON + LET THESE GENTLEMEN HEAR OF YOUR MOST INEXCUSABLE CONDUCT + THE BIG CONSTABLE VERY HOT AND PENITENT SIDLED INTO THE ROOM + I MEANT NO HARM SIR I'M SURE + THE YOUNG WOMAN CAME TO THE DOOR LAST EVENING MISTOOK THE HOUSE SHE DID + AND THEN WE GOT TALKING + IT'S LONESOME WHEN YOU'RE ON DUTY HERE ALL DAY + QUOTE WELL WHAT HAPPENED THEN QUOTE + SHE WANTED TO SEE WHERE THE CRIME WAS DONE HAD READ ABOUT IT IN THE PAPERS SHE SAID + SHE WAS A VERY RESPECTABLE WELL SPOKEN YOUNG WOMAN SIR AND I SAW NO HARM IN LETTING HER HAVE A PEEP + WHEN SHE SAW THAT MARK ON THE CARPET DOWN SHE DROPPED ON THE FLOOR AND LAY AS IF SHE WERE DEAD + I RAN TO THE BACK AND GOT SOME WATER BUT I COULD NOT BRING HER TO + THEN I WENT ROUND THE CORNER TO THE IVY PLANT FOR SOME BRANDY AND BY THE TIME I HAD BROUGHT IT BACK THE YOUNG WOMAN HAD RECOVERED AND WAS OFF ASHAMED OF HERSELF I DARESAY AND DARED NOT FACE ME + HOW ABOUT MOVING THAT DRUGGET + WELL SIR IT WAS A BIT RUMPLED CERTAINLY WHEN I CAME BACK + YOU SEE SHE FELL ON IT AND IT LIES ON A POLISHED FLOOR WITH NOTHING TO KEEP IT IN PLACE + I STRAIGHTENED IT OUT AFTERWARDS + QUOTE IT'S A LESSON TO YOU THAT YOU CAN'T DECEIVE ME CONSTABLE MACPHERSON QUOTE SAID LESTRADE WITH DIGNITY + NO DOUBT YOU THOUGHT THAT YOUR BREACH OF DUTY COULD NEVER BE DISCOVERED AND YET A MERE GLANCE AT THAT DRUGGET WAS ENOUGH TO CONVINCE ME THAT SOMEONE HAD BEEN ADMITTED TO THE ROOM + IT'S LUCKY FOR YOU MY MAN THAT NOTHING IS MISSING OR YOU WOULD FIND YOURSEIF IN QUEER STREET + I'M SORRY TO HAVE CALLED YOU DOWN OVER SUCH A PETTY BUSINESS MR. HOLMES BUT I THOUGHT THE POINT OF THE SECOND STAIN NOT CORRESPONDING WITH THE FIRST WOULD INTEREST YOU + CERTAINLY IT WAS MOST INTERESTING + HAS THIS WOMAN ONLY BEEN HERE ONCE CONSTABLE + YES SIR ONLY ONCE + QUOTE WHO WAS SHE QUOTE + DON'T KNOW THE NAME SIR + WAS ANSWERING AN ADVERTISEMENT ABOUT TYPEWRITING AND CAME TO THE WRONG NUMBER VERY PLEASANT GENTEEL YOUNG WOMAN SIR + TALL + HANDSOME + YES SIR SHE WAS A WELL GROWN YOUNG WOMAN + I SUPPOSE YOU MIGHT SAY SHE WAS HANDSOME + PERHAPS SOME WOULD SAY SHE WAS VERY HANDSOME + OH OFFICER DO LET ME HAVE A PEEP SAYS SHE + SHE HAD PRETTY COAXING WAYS AS YOU MIGHT SAY AND I THOUGHT THERE WAS NO HARM IN LETTING HER JUST PUT HER HEAD THROUGH THE DOOR + QUOTE HOW WAS SHE DRESSED QUOTE + QUIET SIR A LONG MANTLE DOWN TO HER FEET + WHAT TIME WAS IT + IT WAS JUST GROWING DUSK AT THE TIME + THEY WERE LIGHTING THE LAMPS AS I CAME BACK WITH THE BRANDY + VERY GOOD SAID HOLMES + QUOTE COME WATSON I THINK THAT WE HAVE MORE IMPORTANT WORK ELSEWHERE QUOTE + AS WE LEFT THE HOUSE LESTRADE REMAINED IN THE FRONT ROOM WHILE THE REPENTANT CONSTABLE OPENED THE DOOR TO LET US OUT + HOLMES TURNED ON THE STEP AND HELD UP SOMETHING IN HIS HAND + THE CONSTABLE STARED INTENTLY + GOOD LORD SIR HE CRIED WITH AMAZEMENT ON HIS FACE + HOLMES PUT HIS FINGER ON HIS LIPS REPLACED HIS HAND IN HIS BREAST POCKET AND BURST OUT LAUGHING AS WE TURNED DOWN THE STREET + EXCELLENT SAID HE + COME FRIEND WATSON THE CURTAIN RINGS UP FOR THE LAST ACT + YOU WILL BE RELIEVED TO HEAR THAT THERE WILL BE NO WAR THAT THE RIGHT HONOURABLE TRELAWNEY HOPE WILL SUFFER NO SETBACK IN HIS BRILLIANT CAREER THAT THE INDISCREET SOVEREIGN WILL RECEIVE NO PUNISHMENT FOR HIS INDISCRETION THAT THE PRIME MINISTER WILL HAVE NO EUROPEAN COMPLICATION TO DEAL WITH AND THAT WITH A LITTLE TACT AND MANAGEMENT UPON OUR PART NOBODY WILL BE A PENNY THE WORSE FOR WHAT MIGHT HAVE BEEN A VERY UGLY INCIDENT + MY MIND FILLED WITH ADMIRATION FOR THIS EXTRAORDINARY MAN + YOU HAVE SOLVED IT + I CRIED + QUOTE HARDLY THAT WATSON + THERE ARE SOME POINTS WHICH ARE AS DARK AS EVER + BUT WE HAVE SO MUCH THAT IT WILL BE OUR OWN FAULT IF WE CANNOT GET THE REST + WE WIIL GO STRAIGHT TO WHITEHALL TERRACE AND BRING THE MATTER TO A HEAD + WHEN WE ARRIVED AT THE RESIDENCE OF THE EUROPEAN SECRETARY IT WAS FOR LADY HILDA TRELAWNEY HOPE THAT SHERLOCK HOLMES INQUIRED + WE WERE SHOWN INTO THE MORNING ROOM + MR. HOLMES SAID THE LADY AND HER FACE WAS PINK WITH HER INDIGNATION + THIS IS SURELY MOST UNFAIR AND UNGENEROUS UPON YOUR PART + I DESIRED AS I HAVE EXPLAINED TO KEEP MY VISIT TO YOU A SECRET LEST MY HUSBAND SHOULD THINK THAT I WAS INTRUDING INTO HIS AFFAIRS + AND YET YOU COMPROMISE ME BY COMING HERE AND SO SHOWING THAT THERE ARE BUSINESS RELATIONS BETWEEN US + UNFORTUNATELY MADAM I HAD NO POSSIBLE ALTERNATIVE + I HAVE BEEN COMMISSIONED TO RECOVER THIS IMMENSELY IMPORTANT PAPER + I MUST THEREFORE ASK YOU MADAM TO BE KIND ENOUGH TO PLACE IT IN MY HANDS QUOTE + THE LADY SPRANG TO HER FEET WITH THE COLOUR ALL DASHED IN AN INSTANT FROM HER BEAUTIFUL FACE + HER EYES GLAZED SHE TOTTERED I THOUGHT THAT SHE WOULD FAINT + THEN WITH A GRAND EFFORT SHE RALLIED FROM THE SHOCK AND A SUPREME ASTONISHMENT AND INDIGNATION CHASED EVERY OTHER EXPRESSION FROM HER FEATURES + YOU YOU INSULT ME MR. HOLMES + COME COME MADAM IT IS USELESS + GIVE UP THE LETTER + SHE DARTED TO THE BELL + THE BUTLER SHALL SHOW YOU OUT + DO NOT RING LADY HILDA + IF YOU DO THEN ALL MY EARNEST EFFORTS TO AVOID A SCANDAL WILL BE FRUSTRATED + GIVE UP THE LETTER AND ALL WILL BE SET RIGHT + IF YOU WILL WORK WITH ME I CAN ARRANGE EVERYTHING + IF YOU WORK AGAINST ME I MUST EXPOSE YOU QUOTE + SHE STOOD GRANDLY DEFIANT A QUEENLY FIGURE HER EYES FIXED UPON HIS AS IF SHE WOULD READ HIS VERY SOUL + HER HAND WAS ON THE BELL BUT SHE HAD FORBORNE TO RING IT + YOU ARE TRYING TO FRIGHTEN ME + IT IS NOT A VERY MANLY THING MR. HOLMES TO COME HERE AND BROWBEAT A WOMAN + YOU SAY THAT YOU KNOW SOMETHING + WHAT IS IT THAT YOU KNOW + PRAY SIT DOWN MADAM + YOU WILL HURT YOURSELF THERE IF YOU FALL + I WILL NOT SPEAK UNTIL YOU SIT DOWN + THANK YOU + I GIVE YOU FIVE MINUTES MR. HOLMES + QUOTE ONE IS ENOUGH LADY HILDA + I KNOW OF YOUR VISIT TO EDUARDO LUCAS OF YOUR GIVING HIM THIS DOCUMENT OF YOUR INGENIOUS RETURN TO THE ROOM LAST NIGHT AND OF THE MANNER IN WHICH YOU TOOK THE LETTER FROM THE HIDING PLACE UNDER THE CARPET + SHE STARED AT HIM WITH AN ASHEN FACE AND GULPED TWICE BEFORE SHE COULD SPEAK + YOU ARE MAD MR. HOLMES YOU ARE MAD SHE CRIED AT LAST + HE DREW A SMALL PIECE OF CARDBOARD FROM HIS POCKET + IT WAS THE FACE OF A WOMAN CUT OUT OF A PORTRAIT + I HAVE CARRIED THIS BECAUSE I THOUGHT IT MIGHT BE USEFUL SAID HE + THE POLICEMAN HAS RECOGNIZED IT + SHE GAVE A GASP AND HER HEAD DROPPED BACK IN THE CHAIR + COME LADY HILDA + YOU HAVE THE LETTER + THE MATTER MAY STILL BE ADJUSTED + I HAVE NO DESIRE TO BRING TROUBLE TO YOU + MY DUTY ENDS WHEN I HAVE RETURNED THE LOST LETTER TO YOUR HUSBAND + TAKE MY ADVICE AND BE FRANK WITH ME + IT IS YOUR ONLY CHANCE QUOTE + HER COURAGE WAS ADMIRABLE + EVEN NOW SHE WOULD NOT OWN DEFEAT + I TELL YOU AGAIN MR. HOLMES THAT YOU ARE UNDER SOME ABSURD ILLUSION + HOLMES ROSE FROM HIS CHAIR + I AM SORRY FOR YOU LADY HILDA + I HAVE DONE MY BEST FOR YOU + I CAN SEE THAT IT IS ALL IN VAIN + HE RANG THE BELL + THE BUTLER ENTERED + IS MR. TRELAWNEY HOPE AT HOME + HE WILL BE HOME SIR AT A QUARTER TO ONE + HOLMES GLANCED AT HIS WATCH + QUOTE STILL A QUARTER OF AN HOUR QUOTE SAID HE + VERY GOOD I SHALL WAIT + THE BUTLER HAD HARDLY CLOSED THE DOOR BEHIND HIM WHEN LADY HILDA WAS DOWN ON HER KNEES AT HOLMES'S FEET HER HANDS OUTSTRETCHED HER BEAUTIFUL FACE UPTURNED AND WET WITH HER TEARS + OH SPARE ME MR. HOLMES + SPARE ME SHE PLEADED IN A FRENZY OF SUPPLICATION + FOR HEAVEN'S SAKE DON'T TELL HIM + I LOVE HIM SO + I WOULD NOT BRING ONE SHADOW ON HIS LIFE AND THIS I KNOW WOULD BREAK HIS NOBLE HEART + HOLMES RAISED THE LADY + QUOTE I AM THANKFUL MADAM THAT YOU HAVE COME TO YOUR SENSES EVEN AT THIS LAST MOMENT + THERE IS NOT AN INSTANT TO LOSE + WHERE IS THE LETTER + SHE DARTED ACROSS TO A WRITING DESK UNLOCKED IT AND DREW OUT A LONG BLUE ENVELOPE + HERE IT IS MR. HOLMES + WOULD TO HEAVEN I HAD NEVER SEEN IT + HOW CAN WE RETURN IT + HOLMES MUTTERED + QUICK QUICK WE MUST THINK OF SOME WAY + WHERE IS THE DESPATCH BOX QUOTE + STILL IN HIS BEDROOM + WHAT A STROKE OF LUCK + QUICK MADAM BRING IT HERE + A MOMENT LATER SHE HAD APPEARED WITH A RED FLAT BOX IN HER HAND + HOW DID YOU OPEN IT BEFORE + YOU HAVE A DUPLICATE KEY + YES OF COURSE YOU HAVE + OPEN IT + FROM OUT OF HER BOSOM LADY HILDA HAD DRAWN A SMALL KEY + THE BOX FLEW OPEN + IT WAS STUFFED WITH PAPERS + HOLMES THRUST THE BLUE ENVELOPE DEEP DOWN INTO THE HEART OF THEM BETWEEN THE LEAVES OF SOME OTHER DOCUMENT + THE BOX WAS SHUT LOCKED AND RETURNED TO THE BEDROOM + QUOTE NOW WE ARE READY FOR HIM QUOTE SAID HOLMES + WE HAVE STILL TEN MINUTES + I AM GOING FAR TO SCREEN YOU LADY HILDA + IN RETURN YOU WILL SPEND THE TIME IN TELLING ME FRANKLY THE REAL MEANING OF THIS EXTRAORDINARY AFFAIR + MR. HOLMES I WILL TELL YOU EVERYTHING CRIED THE LADY + OH MR. HOLMES I WOULD CUT OFF MY RIGHT HAND BEFORE I GAVE HIM A MOMENT OF SORROW + THERE IS NO WOMAN IN ALL LONDON WHO LOVES HER HUSBAND AS I DO AND YET IF HE KNEW HOW I HAVE ACTED HOW I HAVE BEEN COMPELLED TO ACT HE WOULD NEVER FORGIVE ME + FOR HIS OWN HONOUR STANDS SO HIGH THAT HE COULD NOT FORGET OR PARDON A LAPSE IN ANOTHER + HELP ME MR. HOLMES + MY HAPPINESS HIS HAPPINESS OUR VERY LIVES ARE AT STAKE + QUOTE QUICK MADAM THE TIME GROWS SHORT QUOTE + IT WAS A LETTER OF MINE MR. HOLMES AN INDISCREET LETTER WRITTEN BEFORE MY MARRIAGE A FOOLISH LETTER A LETTER OF AN IMPULSIVE LOVING GIRL + I MEANT NO HARM AND YET HE WOULD HAVE THOUGHT IT CRIMINAL + HAD HE READ THAT LETTER HIS CONFIDENCE WOULD HAVE BEEN FOREVER DESTROYED + IT IS YEARS SINCE I WROTE IT + I HAD THOUGHT THAT THE WHOLE MATTER WAS FORGOTTEN + THEN AT LAST I HEARD FROM THIS MAN LUCAS THAT IT HAD PASSED INTO HIS HANDS AND THAT HE WOULD LAY IT BEFORE MY HUSBAND + I IMPLORED HIS MERCY + HE SAID THAT HE WOULD RETURN MY LETTER IF I WOULD BRING HIM A CERTAIN DOCUMENT WHICH HE DESCRIBED IN MY HUSBAND'S DESPATCH BOX + HE HAD SOME SPY IN THE OFFICE WHO HAD TOLD HIM OF ITS EXISTENCE + HE ASSURED ME THAT NO HARM COULD COME TO MY HUSBAND + PUT YOURSELF IN MY POSITION MR. HOLMES + WHAT WAS I TO DO + TAKE YOUR HUSBAND INTO YOUR CONFIDENCE + I COULD NOT MR. HOLMES I COULD NOT + ON THE ONE SIDE SEEMED CERTAIN RUIN ON THE OTHER TERRIBLE AS IT SEEMED TO TAKE MY HUSBAND'S PAPER STILL IN A MATTER OF POLITICS I COULD NOT UNDERSTAND THE CONSEQUENCES WHILE IN A MATTER OF LOVE AND TRUST THEY WERE ONLY TOO CLEAR TO ME + I DID IT MR. HOLMES + I TOOK AN IMPRESSION OF HIS KEY + THIS MAN LUCAS FURNISHED A DUPLICATE + I OPENED HIS DESPATCH BOX TOOK THE PAPER AND CONVEYED IT TO GODOLPHIN STREET + QUOTE WHAT HAPPENED THERE MADAM QUOTE + I TAPPED AT THE DOOR AS AGREED + LUCAS OPENED IT + I FOLLOWED HIM INTO HIS ROOM LEAVING THE HALL DOOR AJAR BEHIND ME FOR I FEARED TO BE ALONE WITH THE MAN + I REMEMBER THAT THERE WAS A WOMAN OUTSIDE AS I ENTERED + OUR BUSINESS WAS SOON DONE + HE HAD MY LETTER ON HIS DESK I HANDED HIM THE DOCUMENT + HE GAVE ME THE LETTER + AT THIS INSTANT THERE WAS A SOUND AT THE DOOR + THERE WERE STEPS IN THE PASSAGE + LUCAS QUICKLY TURNED BACK THE DRUGGET THRUST THE DOCUMENT INTO SOME HIDING PLACE THERE AND COVERED IT OVER + WHAT HAPPENED AFTER THAT IS LIKE SOME FEARFUL DREAM + I HAVE A VISION OF A DARK FRANTIC FACE OF A WOMAN'S VOICE WHICH SCREAMED IN FRENCH MY WAITING IS NOT IN VAIN + AT LAST AT LAST I HAVE FOUND YOU WITH HER + THERE WAS A SAVAGE STRUGGLE + I SAW HIM WITH A CHAIR IN HIS HAND A KNIFE GLEAMED IN HERS + I RUSHED FROM THE HORRIBLE SCENE RAN FROM THE HOUSE AND ONLY NEXT MORNING IN THE PAPER DID I LEARN THE DREADFUL RESULT + THAT NIGHT I WAS HAPPY FOR I HAD MY LETTER AND I HAD NOT SEEN YET WHAT THE FUTURE WOULD BRING + IT WAS THE NEXT MORNING THAT I REALIZED THAT I HAD ONLY EXCHANGED ONE TROUBLE FOR ANOTHER + MY HUSBAND'S ANGUISH AT THE LOSS OF HIS PAPER WENT TO MY HEART + I COULD HARDLY PREVENT MYSELF FROM THERE AND THEN KNEELING DOWN AT HIS FEET AND TELLING HIM WHAT I HAD DONE + BUT THAT AGAIN WOULD MEAN A CONFESSION OF THE PAST + I CAME TO YOU THAT MORNING IN ORDER TO UNDERSTAND THE FULL ENORMITY OF MY OFFENCE + FROM THE INSTANT THAT I GRASPED IT MY WHOLE MIND WAS TURNED TO THE ONE THOUGHT OF GETTING BACK MY HUSBAND'S PAPER + IT MUST STILL BE WHERE LUCAS HAD PLACED IT FOR IT WAS CONCEALED BEFORE THIS DREADFUL WOMAN ENTERED THE ROOM + IF IT HAD NOT BEEN FOR HER COMING I SHOULD NOT HAVE KNOWN WHERE HIS HIDING PLACE WAS + HOW WAS I TO GET INTO THE ROOM + FOR TWO DAYS I WATCHED THE PLACE BUT THE DOOR WAS NEVER LEFT OPEN + LAST NIGHT I MADE A LAST ATTEMPT + WHAT I DID AND HOW I SUCCEEDED YOU HAVE ALREADY LEARNED + I BROUGHT THE PAPER BACK WITH ME AND THOUGHT OF DESTROYING IT SINCE I COULD SEE NO WAY OF RETURNING IT WITHOUT CONFESSING MY GUILT TO MY HUSBAND + HEAVENS I HEAR HIS STEP UPON THE STAIR + THE EUROPEAN SECRETARY BURST EXCITEDLY INTO THE ROOM + ANY NEWS MR. HOLMES ANY NEWS HE CRIED + QUOTE I HAVE SOME HOPES QUOTE + AH THANK HEAVEN + HIS FACE BECAME RADIANT + THE PRIME MINISTER IS LUNCHING WITH ME + MAY HE SHARE YOUR HOPES + HE HAS NERVES OF STEEL AND YET I KNOW THAT HE HAS HARDLY SLEPT SINCE THIS TERRIBLE EVENT + JACOBS WILL YOU ASK THE PRIME MINISTER TO COME UP + AS TO YOU DEAR I FEAR THAT THIS IS A MATTER OF POLITICS + WE WILL JOIN YOU IN A FEW MINUTES IN THE DINING ROOM + THE PRIME MINISTER'S MANNER WAS SUBDUED BUT I COULD SEE BY THE GLEAM OF HIS EYES AND THE TWITCHINGS OF HIS BONY HANDS THAT HE SHARED THE EXCITEMENT OF HIS YOUNG COLLEAGUE + I UNDERSTAND THAT YOU HAVE SOMETHING TO REPORT MR. HOLMES + PURELY NEGATIVE AS YET MY FRIEND ANSWERED + QUOTE I HAVE INQUIRED AT EVERY POINT WHERE IT MIGHT BE AND I AM SURE THAT THERE IS NO DANGER TO BE APPREHENDED QUOTE + BUT THAT IS NOT ENOUGH MR. HOLMES + WE CANNOT LIVE FOREVER ON SUCH A VOLCANO + WE MUST HAVE SOMETHING DEFINITE + I AM IN HOPES OF GETTING IT + THAT IS WHY I AM HERE + THE MORE I THINK OF THE MATTER THE MORE CONVINCED I AM THAT THE LETTER HAS NEVER LEFT THIS HOUSE + MR. HOLMES + QUOTE IF IT HAD IT WOULD CERTAINLY HAVE BEEN PUBLIC BY NOW QUOTE + BUT WHY SHOULD ANYONE TAKE IT IN ORDER TO KEEP IT IN HIS HOUSE + I AM NOT CONVINCED THAT ANYONE DID TAKE IT + THEN HOW COULD IT LEAVE THE DESPATCH BOX + I AM NOT CONVINCED THAT IT EVER DID LEAVE THE DESPATCH BOX + MR. HOLMES THIS JOKING IS VERY ILL TIMED + YOU HAVE MY ASSURANCE THAT IT LEFT THE BOX QUOTE + HAVE YOU EXAMINED THE BOX SINCE TUESDAY MORNING + NUMBER + IT WAS NOT NECESSARY + YOU MAY CONCEIVABLY HAVE OVERLOOKED IT + IMPOSSIBLE I SAY + QUOTE BUT I AM NOT CONVINCED OF IT + I HAVE KNOWN SUCH THINGS TO HAPPEN + I PRESUME THERE ARE OTHER PAPERS THERE + WELL IT MAY HAVE GOT MIXED WITH THEM + IT WAS ON THE TOP + SOMEONE MAY HAVE SHAKEN THE BOX AND DISPLACED IT + NO NO I HAD EVERYTHING OUT + SURELY IT IS EASILY DECIDED HOPE SAID THE PREMIER + QUOTE LET US HAVE THE DESPATCH BOX BROUGHT IN QUOTE + THE SECRETARY RANG THE BELL + JACOBS BRING DOWN MY DESPATCH BOX + THIS IS A FARCICAL WASTE OF TIME BUT STILL IF NOTHING ELSE WILL SATISFY YOU IT SHALL BE DONE + THANK YOU JACOBS PUT IT HERE + I HAVE ALWAYS HAD THE KEY ON MY WATCH CHAIN + HERE ARE THE PAPERS YOU SEE + LETTER FROM LORD MERROW REPORT FROM SIR CHARLES HARDY MEMORANDUM FROM BELGRADE NOTE ON THE RUSSO GERMAN GRAIN TAXES LETTER FROM MADRID NOTE FROM LORD FLOWERS GOOD HEAVENS WHAT IS THIS + LORD BELLINGER + LORD BELLINGER + THE PREMIER SNATCHED THE BLUE ENVELOPE FROM HIS HAND + YES IT IS IT AND THE LETTER IS INTACT + HOPE I CONGRATULATE YOU + THANK YOU + THANK YOU + WHAT A WEIGHT FROM MY HEART + BUT THIS IS INCONCEIVABLE IMPOSSIBLE + MR. HOLMES YOU ARE A WIZARD A SORCERER + HOW DID YOU KNOW IT WAS THERE QUOTE + BECAUSE I KNEW IT WAS NOWHERE ELSE + I CANNOT BELIEVE MY EYES + HE RAN WILDLY TO THE DOOR + WHERE IS MY WIFE + I MUST TELL HER THAT ALL IS WELL + HILDA + HILDA WE HEARD HIS VOICE ON THE STAIRS + THE PREMIER LOOKED AT HOLMES WITH TWINKLING EYES + COME SIR SAID HE + QUOTE THERE IS MORE IN THIS THAN MEETS THE EYE + HOW CAME THE LETTER BACK IN THE BOX + HOLMES TURNED AWAY SMILING FROM THE KEEN SCRUTINY OF THOSE WONDERFUL EYES + WE ALSO HAVE OUR DIPLOMATIC SECRETS SAID HE AND PICKING UP HIS HAT HE TURNED TO THE DOOR diff --git a/samples/LMTutorial/train/sign_of_four.txt b/samples/LMTutorial/train/sign_of_four.txt new file mode 100755 index 0000000..4c5c051 --- /dev/null +++ b/samples/LMTutorial/train/sign_of_four.txt @@ -0,0 +1,2826 @@ + SHERLOCK HOLMES TOOK HIS BOTTLE FROM THE CORNER OF THE MANTELPIECE AND HIS HYPODERMIC SYRINGE FROM ITS NEAT MOROCCO CASE + WITH HIS LONG WHITE NERVOUS FINGERS HE ADJUSTED THE DELICATE NEEDLE AND ROLLED BACK HIS LEFT SHIRTCUFF + FOR SOME LITTLE TIME HIS EYES RESTED THOUGHTFULLY UPON THE SINEWY FOREARM AND WRIST ALL DOTTED AND SCARRED WITH INNUMERABLE PUNCTURE MARKS + FINALLY HE THRUST THE SHARP POINT HOME PRESSED DOWN THE TINY PISTON AND SANK BACK INTO THE VELVET LINED ARMCHAIR WITH A LONG SIGH OF SATISFACTION + THREE TIMES A DAY FOR MANY MONTHS I HAD WITNESSED THIS PERFORMANCE BUT CUSTOM HAD NOT RECONCILED MY MIND TO IT + ON THE CONTRARY FROM DAY TO DAY I HAD BECOME MORE IRRITABLE AT THE SIGHT AND MY CONSCIENCE SWELLED NIGHTLY WITHIN ME AT THE THOUGHT THAT I HAD LACKED THE COURAGE TO PROTEST + AGAIN AND AGAIN I HAD REGISTERED A VOW THAT I SHOULD DELIVER MY SOUL UPON THE SUBJECT BUT THERE WAS THAT IN THE COOL NONCHALANT AIR OF MY COMPANION WHICH MADE HIM THE LAST MAN WITH WHOM ONE WOULD CARE TO TAKE ANYTHING APPROACHING TO A LIBERTY + HIS GREAT POWERS HIS MASTERLY MANNER AND THE EXPERIENCE WHICH I HAD HAD OF HIS MANY EXTRAORDINARY QUALITIES ALL MADE ME DIFFIDENT AND BACKWARD IN CROSSING HIM + YET UPON THAT AFTERNOON WHETHER IT WAS THE BEAUNE WHICH I HAD TAKEN WITH MY LUNCH OR THE ADDITIONAL EXASPERATION PRODUCED BY THE EXTREME DELIBERATION OF HIS MANNER I SUDDENLY FELT THAT I COULD HOLD OUT NO LONGER + QUOTE WHICH IS IT TO DAY QUOTE I ASKED QUOTE MORPHINE OR COCAINE QUOTE + HE RAISED HIS EYES LANGUIDLY FROM THE OLD BLACK LETTER VOLUME WHICH HE HAD OPENED + IT IS COCAINE HE SAID A SEVEN PER CENT SOLUTION + WOULD YOU CARE TO TRY IT + NO INDEED I ANSWERED BRUSQUELY + MY CONSTITUTION HAS NOT GOT OVER THE AFGHAN CAMPAIGN YET + I CANNOT AFFORD TO THROW ANY EXTRA STRAIN UPON IT + HE SMILED AT MY VEHEMENCE + QUOTE PERHAPS YOU ARE RIGHT WATSON QUOTE HE SAID + I SUPPOSE THAT ITS INFLUENCE IS PHYSICALLY A BAD ONE + I FIND IT HOWEVER SO TRANSCENDENTLY STIMULATING AND CLARIFYING TO THE MIND THAT ITS SECONDARY ACTION IS A MATTER OF SMALL MOMENT + BUT CONSIDER + I SAID EARNESTLY + COUNT THE COST + YOUR BRAIN MAY AS YOU SAY BE ROUSED AND EXCITED BUT IT IS A PATHOLOGICAL AND MORBID PROCESS WHICH INVOLVES INCREASED TISSUE CHANGE AND MAY AT LEAST LEAVE A PERMANENT WEAKNESS + YOU KNOW TOO WHAT A BLACK REACTION COMES UPON YOU + SURELY THE GAME IS HARDLY WORTH THE CANDLE + WHY SHOULD YOU FOR A MERE PASSING PLEASURE RISK THE LOSS OF THOSE GREAT POWERS WITH WHICH YOU HAVE BEEN ENDOWED + REMEMBER THAT I SPEAK NOT ONLY AS ONE COMRADE TO ANOTHER BUT AS A MEDICAL MAN TO ONE FOR WHOSE CONSTITUTION HE IS TO SOME EXTENT ANSWERABLE + HE DID NOT SEEM OFFENDED + ON THE CONTRARY HE PUT HIS FINGERTIPS TOGETHER AND LEANED HIS ELBOWS ON THE ARMS OF HIS CHAIR LIKE ONE WHO HAS A RELISH FOR CONVERSATION + QUOTE MY MIND QUOTE HE SAID QUOTE REBELS AT STAGNATION + GIVE ME PROBLEMS GIVE ME WORK GIVE ME THE MOST ABSTRUSE CRYPTOGRAM OR THE MOST INTRICATE ANALYSIS AND I AM IN MY OWN PROPER ATMOSPHERE + I CAN DISPENSE THEN WITH ARTIFICIAL STIMULANTS + BUT I ABHOR THE DULL ROUTINE OF EXISTENCE + I CRAVE FOR MENTAL EXALTATION + THAT IS WHY I HAVE CHOSEN MY OWN PARTICULAR PROFESSION OR RATHER CREATED IT FOR I AM THE ONLY ONE IN THE WORLD + THE ONLY UNOFFICIAL DETECTIVE + I SAID RAISING MY EYEBROWS + THE ONLY UNOFFICIAL CONSULTING DETECTIVE HE ANSWERED + I AM THE LAST AND HIGHEST COURT OF APPEAL IN DETECTION + WHEN GREGSON OR LESTRADE OR ATHELNEY JONES ARE OUT OF THEIR DEPTHS WHICH BY THE WAY IS THEIR NORMAL STATE THE MATTER IS LAID BEFORE ME + I EXAMINE THE DATA AS AN EXPERT AND PRONOUNCE A SPECIALIST'S OPINION + I CLAIM NO CREDIT IN SUCH CASES + MY NAME FIGURES IN NO NEWSPAPER + THE WORK ITSELF THE PLEASURE OF FINDING A FIELD FOR MY PECULIAR POWERS IS MY HIGHEST REWARD + BUT YOU HAVE YOURSELF HAD SOME EXPERIENCE OF MY METHODS OF WORK IN THE JEFFERSON HOPE CASE + QUOTE YES INDEED QUOTE SAID I CORDIALLY + I WAS NEVER SO STRUCK BY ANYTHING IN MY LIFE + I EVEN EMBODIED IT IN A SMALL BROCHURE WITH THE SOMEWHAT FANTASTIC TITLE OF A STUDY IN SCARLET + HE SHOOK HIS HEAD SADLY + I GLANCED OVER IT SAID HE + HONESTLY I CANNOT CONGRATULATE YOU UPON IT + DETECTION IS OR OUGHT TO BE AN EXACT SCIENCE AND SHOULD BE TREATED IN THE SAME COLD AND UNEMOTIONAL MANNER + YOU HAVE ATTEMPTED TO TINGE IT WITH ROMANTICISM WHICH PRODUCES MUCH THE SAME EFFECT AS IF YOU WORKED A LOVE STORY OR AN ELOPEMENT INTO THE FIFTH PROPOSITION OF EUCLID + QUOTE BUT THE ROMANCE WAS THERE QUOTE I REMONSTRATED + I COULD NOT TAMPER WITH THE FACTS + SOME FACTS SHOULD BE SUPPRESSED OR AT LEAST A JUST SENSE OF PROPORTION SHOULD BE OBSERVED IN TREATING THEM + THE ONLY POINT IN THE CASE WHICH DESERVED MENTION WAS THE CURIOUS ANALYTICAL REASONING FROM EFFECTS TO CAUSES BY WHICH I SUCCEEDED IN UNRAVELLING IT + I WAS ANNOYED AT THIS CRITICISM OF A WORK WHICH HAD BEEN SPECIALLY DESIGNED TO PLEASE HIM + I CONFESS TOO THAT I WAS IRRITATED BY THE EGOTISM WHICH SEEMED TO DEMAND THAT EVERY LINE OF MY PAMPHLET SHOULD BE DEVOTED TO HIS OWN SPECIAL DOINGS + MORE THAN ONCE DURING THE YEARS THAT I HAD LIVED WITH HIM IN BAKER STREET I HAD OBSERVED THAT A SMALL VANITY UNDERLAY MY COMPANION'S QUIET AND DIDACTIC MANNER + I MADE NO REMARK HOWEVER BUT SAT NURSING MY WOUNDED LEG + I HAD HAD A JEZAII BULLET THROUGH IT SOME TIME BEFORE AND THOUGH IT DID NOT PREVENT ME FROM WALKING IT ACHED WEARILY AT EVERY CHANGE OF THE WEATHER + MY PRACTICE HAS EXTENDED RECENTLY TO THE CONTINENT SAID HOLMES AFTER A WHILE FILLING UP HIS OLD BRIER ROOT PIPE + I WAS CONSULTED LAST WEEK BY FRANCOIS LE VILLARD WHO AS YOU PROBABLY KNOW HAS COME RATHER TO THE FRONT LATELY IN THE FRENCH DETECTIVE SERVICE + HE HAS ALL THE CELTIC POWER OF QUICK INTUITION BUT HE IS DEFICIENT IN THE WIDE RANGE OF EXACT KNOWLEDGE WHICH IS ESSENTIAL TO THE HIGHER DEVELOPMENTS OF HIS ART + THE CASE WAS CONCERNED WITH A WILL AND POSSESSED SOME FEATURES OF INTEREST + I WAS ABLE TO REFER HIM TO TWO PARALLEL CASES THE ONE AT RIGA IN ONE THOUSAND EIGHT HUNDRED FIFTY SEVEN AND THE OTHER AT SAINT LOUIS IN ONE THOUSAND EIGHT HUNDRED SEVENTY ONE WHICH HAVE SUGGESTED TO HIM THE TRUE SOLUTION + HERE IS THE LETTER WHICH I HAD THIS MORNING ACKNOWLEDGING MY ASSISTANCE QUOTE + HE TOSSED OVER AS HE SPOKE A CRUMPLED SHEET OF FOREIGN NOTEPAPER + I GLANCED MY EYES DOWN IT CATCHING A PROFUSION OF NOTES OF ADMIRATION WITH STRAY MAGNIFIQUES COUP DE MAITRES AND TOURS DE FORCE ALL TESTIFYING TO THE ARDENT ADMIRATION OF THE FRENCHMAN + HE SPEAKS AS A PUPIL TO HIS MASTER SAID I + OH HE RATES MY ASSISTANCE TOO HIGHLY SAID SHERLOCK HOLMES LIGHTLY + HE HAS COOSIDERABLE GIFTS HIMSELF + HE POSSESSES TWO OUT OF THE THREE QUALITIES NECESSARY FOR THE IDEAL DETECTIVE + HE HAS THE POWER OF OBSERVATION AND THAT OF DEDUCTION + HE IS ONLY WANTING IN KNOWLEDGE AND THAT MAY COME IN TIME + HE IS NOW TRANSLATING MY SMALL WORKS INTO FRENCH + YOUR WORKS + QUOTE OH DIDN'T YOU KNOW QUOTE HE CRIED LAUGHING + YES I HAVE BEEN GUILTY OF SEVERAL MONOGRAPHS + THEY ARE ALL UPON TECHNICAL SUBJECTS + HERE FOR EXAMPLE IS ONE UPON THE DISTINCTION BETWEEN THE ASHES OF THE VARIOUS TOBACCOS + IN IT I ENUMERATE A HUNDRED AND FORTY FORMS OF CIGAR CIGARETTE AND PIPE TOBACCO WITH COLOURED PLATES ILLUSTRATING THE DIFFERENCE IN THE ASH + IT IS A POINT WHICH IS CONTINUALLY TURNING UP IN CRIMINAL TRIALS AND WHICH IS SOMETIMES OF SUPREME IMPORTANCE AS A CLUE + IF YOU CAN SAY DEFINITELY FOR EXAMPLE THAT SOME MURDER HAD BEEN DONE BY A MAN WHO WAS SMOKING AN INDIAN LUNKAH IT OBVIOUSLY NARROWS YOUR FIELD OF SEARCH + TO THE TRAINED EYE THERE IS AS MUCH DIFFERENCE BETWEEN THE BLACK ASH OF A TRICHINOPOLY AND THE WHITE FLUFF OF BIRD'S EYE AS THERE IS BETWEEN A CABBAGE AND A POTATO + YOU HAVE AN EXTRAORDINARY GENIUS FOR MINUTIAE I REMARKED + I APPRECIATE THEIR IMPORTANCE + HERE IS MY MONOGRAPH UPON THE TRACING OF FOOTSTEPS WITH SOME REMARKS UPON THE USES OF PLASTER OF PARIS AS A PRESERVER OF IMPRESSES + HERE TOO IS A CURIOUS LITTLE WORK UPON THE INFLUENCE OF A TRADE UPON THE FORM OF THE HAND WITH LITHOTYPES OF THE HANDS OF SLATERS SAILORS CORKCUTTERS COMPOSITORS WEAVERS AND DIAMOND POLISHERS + THAT IS A MATTER OF GREAT PRACTICAL INTEREST TO THE SCIENTIFIC DETECTIVE ESPECIALLY IN CASES OF UNCLAIMED BODIES OR IN DISCOVERING THE ANTECEDENTS OF CRIMINALS + BUT I WEARY YOU WITH MY HOBBY + QUOTE NOT AT ALL QUOTE I ANSWERED EARNESTLY + IT IS OF THE GREATEST INTEREST TO ME ESPECIALLY SINCE I HAVE HAD THE OPPORTUNITY OF OBSERVING YOUR PRACTICAL APPLICATION OF IT + BUT YOU SPOKE JUST NOW OF OBSERVATION AND DEDUCTION + SURELY THE ONE TO SOME EXTENT IMPLIES THE OTHER + WHY HARDLY HE ANSWERED LEANING BACK LUXURIOUSLY IN HIS ARMCHAIR AND SENDING UP THICK BLUE WREATHS FROM HIS PIPE + FOR EXAMPLE OBSERVATION SHOWS ME THAT YOU HAVE BEEN TO THE WIGMORE STREET POST OFFICE THIS MORNING BUT DEDUCTION LETS ME KNOW THAT WHEN THERE YOU DISPATCHED A TELEGRAM + RIGHT SAID I. RIGHT ON BOTH POINTS + BUT I CONFESS THAT I DON'T SEE HOW YOU ARRIVED AT IT + IT WAS A SUDDEN IMPULSE UPON MY PART AND I HAVE MENTIONED IT TO NO ONE QUOTE + IT IS SIMPLICITY ITSELF HE REMARKED CHUCKLING AT MY SURPRISE SO ABSURDLY SIMPLE THAT AN EXPLANATION IS SUPERFLUOUS AND YET IT MAY SERVE TO DEFINE THE LIMITS OF OBSERVATION AND OF DEDUCTION + OBSERVATION TELLS ME THAT YOU HAVE A LITTLE REDDISH MOULD ADHERING TO YOUR INSTEP + JUST OPPOSITE THE WIGMORE STREET OFFICE THEY HAVE TAKEN UP THE PAVEMENT AND THROWN UP SOME EARTH WHICH LIES IN SUCH A WAY THAT IT IS DIFFICULT TO AVOID TREADING IN IT IN ENTERING + THE EARTH IS OF THIS PECULIAR REDDISH TINT WHICH IS FOUND AS FAR AS I KNOW NOWHERE ELSE IN THE NEIGHBOURHOOD + SO MUCH IS OBSERVATION + THE REST IS DEDUCTION + HOW THEN DID YOU DEDUCE THE TELEGRAM + WHY OF COURSE I KNEW THAT YOU HAD NOT WRITTEN A LETTER SINCE I SAT OPPOSITE TO YOU ALL MORNING + I SEE ALSO IN YOUR OPEN DESK THERE THAT YOU HAVE A SHEET OF STAMPS AND A THICK BUNDLE OF POSTCARDS + WHAT COULD YOU GO INTO THE POST OFFICE FOR THEN BUT TO SEND A WIRE + ELIMINATE ALL OTHER FACTORS AND THE ONE WHICH REMAINS MUST BE THE TRUTH + QUOTE IN THIS CASE IT CERTAINLY IS SO QUOTE I REPLIED AFTER A LITTLE THOUGHT + THE THING HOWEVER IS AS YOU SAY OF THE SIMPLEST + WOULD YOU THINK ME IMPERTINENT IF I WERE TO PUT YOUR THEORIES TO A MORE SEVERE TEST + ON THE CONTRARY HE ANSWERED IT WOULD PREVENT ME FROM TAKING A SECOND DOSE OF COCAINE + I SHOULD BE DELIGHTED TO LOOK INTO ANY PROBLEM WHICH YOU MIGHT SUBMIT TO ME + I HAVE HEARD YOU SAY IT IS DIFFICULT FOR A MAN TO HAVE ANY OBJECT IN DAILY USE WITHOUT LEAVING THE IMPRESS OF HIS INDIVIDUALITY UPON IT IN SUCH A WAY THAT A TRAINED OBSERVER MIGHT READ IT + NOW I HAVE HERE A WATCH WHICH HAS RECENTLY COME INTO MY POSSESSION + WOULD YOU HAVE THE KINDNESS TO LET ME HAVE AN OPINION UPON THE CHARACTER OR HABITS OF THE LATE OWNER QUOTE + I HANDED HIM OVER THE WATCH WITH SOME SLIGHT FEELING OF AMUSEMENT IN MY HEART FOR THE TEST WAS AS I THOUGHT AN IMPOSSIBLE ONE AND I INTENDED IT AS A LESSON AGAINST THE SOMEWHAT DOGMATIC TONE WHICH HE OCCASIONALLY ASSUMED + HE BALANCED THE WATCH IN HIS HAND GAZED HARD AT THE DIAL OPENED THE BACK AND EXAMINED THE WORKS FIRST WITH HIS NAKED EYES AND THEN WITH A POWERFUL CONVEX LENS + I COULD HARDLY KEEP FROM SMILING AT HIS CRESTFALLEN FACE WHEN HE FINALLY SNAPPED THE CASE TO AND HANDED IT BACK + THERE ARE HARDLY ANY DATA HE REMARKED + THE WATCH HAS BEEN RECENTLY CLEANED WHICH ROBS ME OF MY MOST SUGGESTIVE FACTS + YOU ARE RIGHT I ANSWERED + IT WAS CLEANED BEFORE BEING SENT TO ME + IN MY HEART I ACCUSED MY COMPANION OF PUTTING FORWARD A MOST LAME AND IMPOTENT EXCUSE TO COVER HIS FAILURE + WHAT DATA COULD HE EXPECT FROM AN UNCLEANED WATCH + THOUGH UNSATISFACTORY MY RESEARCH HAS NOT BEEN ENTIRELY BARREN HE OBSERVED STARING UP AT THE CEILING WITH DREAMY LACK LUSTRE EYES + QUOTE SUBJECT TO YOUR CORRECTION I SHOULD JUDGE THAT THE WATCH BELONGED TO YOUR ELDER BROTHER WHO INHERITED IT FROM YOUR FATHER QUOTE + THAT YOU GATHER NO DOUBT FROM THE H. W. UPON THE BACK + QUITE SO + THE W. SUGGESTS YOUR OWN NAME + THE DATE OF THE WATCH IS NEARLY FIFTY YEARS BACK AND THE INITIALS ARE AS OLD AS THE WATCH SO IT WAS MADE FOR THE LAST GENERATION + JEWELLERY USUALLY DESCENDS TO THE ELDEST SON AND HE IS MOST LIKELY TO HAVE THE SAME NAME AS THE FATHER + YOUR FATHER HAS IF I REMEMBER RIGHT BEEN DEAD MANY YEARS + IT HAS THEREFORE BEEN IN THE HANDS OF YOUR ELDEST BROTHER + RIGHT SO FAR SAID I. ANYTHING ELSE + HE WAS A MAN OF UNTIDY HABITS VERY UNTIDY AND CARELESS + HE WAS LEFT WITH GOOD PROSPECTS BUT HE THREW AWAY HIS CHANCES LIVED FOR SOME TIME IN POVERTY WITH OCCASIONAL SHORT INTERVALS OF PROSPERITY AND FINALLY TAKING TO DRINK HE DIED + THAT IS ALL I CAN GATHER QUOTE + I SPRANG FROM MY CHAIR AND LIMPED IMPATIENTLY ABOUT THE ROOM WITH CONSIDERABLE BITTERNESS IN MY HEART + THIS IS UNWORTHY OF YOU HOLMES I SAID + I COULD NOT HAVE BELIEVED THAT YOU WOULD HAVE DESCENDED TO THIS + YOU HAVE MADE INQUIRIES INTO THE HISTORY OF MY UNHAPPY BROTHER AND YOU NOW PRETEND TO DEDUCE THIS KNOWLEDGE IN SOME FANCIFUL WAY + YOU CANNOT EXPECT ME TO BELIEVE THAT YOU HAVE READ ALL THIS FROM HIS OLD WATCH + IT IS UNKIND AND TO SPEAK PLAINLY HAS A TOUCH OF CHARLATANISM IN IT + MY DEAR DOCTOR SAID HE KINDLY PRAY ACCEPT MY APOLOGIES + VIEWING THE MATTER AS AN ABSTRACT PROBLEM I HAD FORGOTTEN HOW PERSONAL AND PAINFUL A THING IT MIGHT BE TO YOU + I ASSURE YOU HOWEVER THAT I NEVER EVEN KNEW THAT YOU HAD A BROTHER UNTIL YOU HANDED ME THE WATCH + QUOTE THEN HOW IN THE NAME OF ALL THAT IS WONDERFUL DID YOU GET THESE FACTS + THEY ARE ABSOLUTELY CORRECT IN EVERY PARTICULAR + AH THAT IS GOOD LUCK + I COULD ONLY SAY WHAT WAS THE BALANCE OF PROBABILITY + I DID NOT AT ALL EXPECT TO BE SO ACCURATE + BUT IT WAS NOT MERE GUESSWORK + NO NO I NEVER GUESS + IT IS A SHOCKING HABIT DESTRUCTIVE TO THE LOGICAL FACULTY + WHAT SEEMS STRANGE TO YOU IS ONLY SO BECAUSE YOU DO NOT FOLLOW MY TRAIN OF THOUGHT OR OBSERVE THE SMALL FACTS UPON WHICH LARGE INFERENCES MAY DEPEND + FOR EXAMPLE I BEGAN BY STATING THAT YOUR BROTHER WAS CARELESS + WHEN YOU OBSERVE THE LOWER PART OF THAT WATCH CASE YOU NOTICE THAT IT IS NOT ONLY DINTED IN TWO PLACES BUT IT IS CUT AND MARKED ALL OVER FROM THE HABIT OF KEEPING OTHER HARD OBJECTS SUCH AS COINS OR KEYS IN THE SAME POCKET + SURELY IT IS NO GREAT FEAT TO ASSUME THAT A MAN WHO TREATS A FIFTY GUINEA WATCH SO CAVALIERLY MUST BE A CARELESS MAN + NEITHER IS IT A VERY FAR FETCHED INFERENCE THAT A MAN WHO INHERITS ONE ARTICLE OF SUCH VALUE IS PRETTY WELL PROVIDED FOR IN OTHER RESPECTS QUOTE + I NODDED TO SHOW THAT I FOLLOWED HIS REASONING + IT IS VERY CUSTOMARY FOR PAWNBROKERS IN ENGLAND WHEN THEY TAKE A WATCH TO SCRATCH THE NUMBERS OF THE TICKET WITH A PINPOINT UPON THE INSIDE OF THE CASE + IT IS MORE HANDY THAN A LABEL AS THERE IS NO RISK OF THE NUMBER BEING LOST OR TRANSPOSED + THERE ARE NO LESS THAN FOUR SUCH NUMBERS VISIBLE TO MY LENS ON THE INSIDE OF THIS CASE + INFERENCE THAT YOUR BROTHER WAS OFTEN AT LOW WATER + SECONDARY INFERENCE THAT HE HAD OCCASIONAL BURSTS OF PROSPERITY OR HE COULD NOT HAVE REDEEMED THE PLEDGE + FINALLY I ASK YOU TO LOOK AT THE INNER PLATE WHICH CONTAINS THE KEYHOLE + LOOK AT THE THOUSANDS OF SCRATCHES ALL ROUND THE HOLE MARKS WHERE THE KEY HAS SLIPPED + WHAT SOBER MAN'S KEY COULD HAVE SCORED THOSE GROOVES + BUT YOU WILL NEVER SEE A DRUNKARD'S WATCH WITHOUT THEM + HE WINDS IT AT NIGHT AND HE LEAVES THESE TRACES OF HIS UNSTEADY HAND + WHERE IS THE MYSTERY IN ALL THIS + IT IS AS CLEAR AS DAYLIGHT I ANSWERED + I REGRET THE INJUSTICE WHICH I DID YOU + I SHOULD HAVE HAD MORE FAITH IN YOUR MARVELLOUS FACULTY + MAY I ASK WHETHER YOU HAVE ANY PROFESSIONAL INQUIRY ON FOOT AT PRESENT + QUOTE NONE + HENCE THE COCAINE + I CANNOT LIVE WITHOUT BRAINWORK + WHAT ELSE IS THERE TO LIVE FOR + STAND AT THE WINDOW HERE + WAS EVER SUCH A DREARY DISMAL UNPROFITABLE WORLD + SEE HOW THE YELLOW FOG SWIRLS DOWN THE STREET AND DRIFTS ACROSS THE DUNCOLOURED HOUSES + WHAT COULD BE MORE HOPELESSLY PROSAIC AND MATERIAL + WHAT IS THE USE OF HAVING POWERS DOCTOR WHEN ONE HAS NO FIELD UPON WHICH TO EXERT THEM + CRIME IS COMMONPLACC EXISTENCE IS COMMONPLACE AND NO QUALITIES SAVE THOSE WHICH ARE COMMONPLACE HAVE ANY FUNCTION UPON EARTH + I HAD OPENED MY MOUTH TO REPLY TO THIS TIRADE WHEN WITH A CRISP KNOCK OUR LANDLADY ENTERED BEARING A CARD UPON THE BRASS SALVER + A YOUNG LADY FOR YOU SIR SHE SAID ADDRESSING MY COMPANION + MISS MARY MORSTAN HE READ + HUM + I HAVE NO RECOLLECTION OF THE NAME + ASK THE YOUNG LADY TO STEP UP MRS. HUDSON + DON'T GO DOCTOR + I SHOULD PREFER THAT YOU REMAIN + CHAPTER TWO THE STATEMENT OF THE CASE + MISS MORSTAN ENTERED THE ROOM WITH A FIRM STEP AND AN OUTWARD COMPOSURE OF MANNER + SHE WAS A BLONDE YOUNG LADY SMALL DAINTY WELL GLOVED AND DRESSED IN THE MOST PERFECT TASTE + THERE WAS HOWEVER A PLAINNESS AND SIMPLICITY ABOUT HER COSTUME WHICH BORE WITH IT A SUGGESTION OF LIMITED MEANS + THE DRESS WAS A SOMBRE GRAYISH BEIGE UNTRIMMED AND UNBRAIDED AND SHE WORE A SMALL TURBAN OF THE SAME DULL HUE RELIEVED ONLY BY A SUSPICION OF WHITE FEATHER IN THE SIDE + HER FACE HAD NEITHER REGULARITY OF FEATURE NOR BEAUTY OF COMPLEXION BUT HER EXPRESSION WAS SWEET AND AMIABLE AND HER LARGE BLUE EYES WERE SINGULARLY SPIRITUAL AND SYMPATHETIC + IN AN EXPERIENCE OF WOMEN WHICH EXTENDS OVER MANY NATIONS AND THREE SEPARATE CONTINENTS I HAVE NEVER LOOKED UPON A FACE WHICH GAVE A CLEARER PROMISE OF A REFINED AND SENSITIVE NATURE + I COULD NOT BUT OBSERVE THAT AS SHE TOOK THE SEAT WHICH SHERLOCK HOLMES PLACED FOR HER HER LIP TREMBLED HER HAND QUIVERED AND SHE SHOWED EVERY SIGN OF INTENSE INWARD AGITATION + QUOTE I HAVE COME TO YOU MR. HOLMES QUOTE SHE SAID QUOTE BECAUSE YOU ONCE ENABLED MY EMPLOYER MRS. CECIL FORRESTER TO UNRAVEL A LITTLE DOMESTIC COMPLICATION + SHE WAS MUCH IMPRESSED BY YOUR KINDNESS AND SKILL + MRS. CECIL FORRESTER HE REPEATED THOUGHTFULLY + I BELIEVE THAT I WAS OF SOME SLIGHT SERVICE TO HER + THE CASE HOWEVER AS I REMEMBER IT WAS A VERY SIMPLE ONE + SHE DID NOT THINK SO + BUT AT LEAST YOU CANNOT SAY THE SAME OF MINE + I CAN HARDLY IMAGINE ANYTHING MORE STRANGE MORE UTTERLY INEXPLICABLE THAN THE SITUATION IN WHICH I FIND MYSELF QUOTE + HOLMES RUBBED HIS HANDS AND HIS EYES GLISTENED + HE LEANED FORWARD IN HIS CHAIR WITH AN EXPRESSION OF EXTRAORDINARY CONCENTRATION UPON HIS CLEAR CUT HAWKLIKE FEATURES + STATE YOUR CASE SAID HE IN BRISK BUSINESS TONES + I FELT THAT MY POSITION WAS AN EMBARRASSING ONE + YOU WILL I AM SURE EXCUSE ME I SAID RISING FROM MY CHAIR + TO MY SURPRISE THE YOUNG LADY HELD UP HER GLOVED HAND TO DETAIN ME + IF YOUR FRIEND SHE SAID WOULD BE GOOD ENOUGH TO STOP HE MIGHT BE OF INESTIMABLE SERVICE TO ME + I RELAPSED INTO MY CHAIR + BRIEFLY SHE CONTINUED THE FACTS ARE THESE + MY FATHER WAS AN OFFICER IN AN INDIAN REGIMENT WHO SENT ME HOME WHEN I WAS QUITE A CHILD + MY MOTHER WAS DEAD AND I HAD NO RELATIVE IN ENGLAND + I WAS PLACED HOWEVER IN A COMFORTABLE BOARDING ESTABLISHMENT AT EDINBURGH AND THERE I REMAINED UNTIL I WAS SEVENTEEN YEARS OF AGE + IN THE YEAR ONE THOUSAND EIGHT HUNDRED SEVENTY EIGHT MY FATHER WHO WAS SENIOR CAPTAIN OF HIS REGIMENT OBTAINED TWELVE MONTHS' LEAVE AND CAME HOME + HE TELEGRAPHED TO ME FROM LONDON THAT HE HAD ARRIVED ALL SAFE AND DIRECTED ME TO COME DOWN AT ONCE GIVING THE LANGHAM HOTEL AS HIS ADDRESS + HIS MESSAGE AS I REMEMBER WAS FULL OF KINDNESS AND LOVE + ON REACHING LONDON I DROVE TO THE LANGHAM AND WAS INFORMED THAT CAPTAIN MORSTAN WAS STAYING THERE BUT THAT HE HAD GONE OUT THE NIGHT BEFORE AND HAD NOT RETURNED + I WAITED ALL DAY WITHOUT NEWS OF HIM + THAT NIGHT ON THE ADVICE OF THE MANAGER OF THE HOTEL I COMMUNICATED WITH THE POLICE AND NEXT MORNING WE ADVERTISED IN ALL THE PAPERS + OUR INQUIRIES LED TO NO RESULT AND FROM THAT DAY TO THIS NO WORD HAS EVER BEEN HEARD OF MY UNFORTUNATE FATHER + HE CAME HOME WITH HIS HEART FULL OF HOPE TO FIND SOME PEACE SOME COMFORT AND INSTEAD + SHE PUT HER HAND TO HER THROAT AND A CHOKING SOB CUT SHORT THE SENTENCE + QUOTE THE DATE QUOTE ASKED HOLMES OPENING HIS NOTEBOOK + HE DISAPPEARED UPON THE THIRD OF DECEMBER ONE THOUSAND EIGHT HUNDRED SEVENTY EIGHT NEARLY TEN YEARS AGO + HIS LUGGAGE + REMAINED AT THE HOTEL + THERE WAS NOTHING IN IT TO SUGGEST A CLUE SOME CLOTHES SOME BOOKS AND A CONSIDERABLE NUMBER OF CURIOSITIES FROM THE ANDAMAN ISLANDS + HE HAD BEEN ONE OF THE OFFICERS IN CHARGE OF THE CONVICT GUARD THERE + HAD HE ANY FRIENDS IN TOWN + QUOTE ONLY ONE THAT WE KNOW OF MAJOR SHOLTO OF HIS OWN REGIMENT THE THIRTY FOURTH BOMBAY INFANTRY + THE MAJOR HAD RETIRED SOME LITTLE TIME BEFORE AND LIVED AT UPPER NORWOOD + WE COMMUNICATED WITH HIM OF COURSE BUT HE DID NOT EVEN KNOW THAT HIS BROTHER OFFICER WAS IN ENGLAND + A SINGULAR CASE REMARKED HOLMES + I HAVE NOT YET DESCRIBED TO YOU THE MOST SINGULAR PART + ABOUT SIX YEARS AGO TO BE EXACT UPON THE FOURTH OF MAY ONE THOUSAND EIGHT HUNDRED EIGHTY TWO AN ADVERTISEMENT APPEARED IN THE TIMES ASKING FOR THE ADDRESS OF MISS MARY MORSTAN AND STATING THAT IT WOULD BE TO HER ADVANTAGE TO COME FORWARD + THERE WAS NO NAME OR ADDRESS APPENDED + I HAD AT THAT TIME JUST ENTERED THE FAMILY OF MRS. CECIL FORRESTER IN THE CAPACITY OF GOVERNESS + BY HER ADVICE I PUBLISHED MY ADDRESS IN THE ADVERTISEMENT COLUMN + THE SAME DAY THERE ARRIVED THROUGH THE POST A SMALL CARDBOARD BOX ADDRESSED TO ME WHICH I FOUND TO CONTAIN A VERY LARGE AND LUSTROUS PEARL + NO WORD OF WRITING WAS ENCLOSED + SINCE THEN EVERY YEAR UPON THE SAME DATE THERE HAS ALWAYS APPEARED A SIMILAR BOX CONTAINING A SIMILAR PEARL WITHOUT ANY CLUE AS TO THE SENDER + THEY HAVE BEEN PRONOUNCED BY AN EXPERT TO BE OF A RARE VARIETY AND OF CONSIDERABLE VALUE + YOU CAN SEE FOR YOURSELF THAT THEY ARE VERY HANASOME + SHE OPENED A FLAT BOX AS SHE SPOKE AND SHOWED ME SIX OF THE FINEST PEARLS THAT I HAD EVER SEEN + YOUR STATEMENT IS MOST INTERESTING SAID SHERLOCK HOLMES + QUOTE HAS ANYTHING ELSE OCCURRED TO YOU QUOTE + YES AND NO LATER THAN TO DAY + THAT IS WHY I HAVE COME TO YOU + THIS MORNING I RECEIVED THIS LETTER WHICH YOU WILL PERHAPS READ FOR YOURSELF + THANK YOU SAID HOLMES + THE ENVELOPE TOO PLEASE + POST MARK LONDON S. W. DATE JULY SEVENTH + HUM + MAN'S THUMBMARK ON CORNER PROBABLY POSTMAN + BEST QUALITY PAPER + ENVELOPES AT SIXPENCE A PACKET + PARTICULAR MAN IN HIS STATIONERY + NO ADDRESS + BE AT THE THIRD PILLAR FROM THE LEFT OUTSIDE THE LYCEUM THEATRE TO NIGHT AT SEVEN O'CLOCK + IF YOU ARE DISTRUSTFUL BRING TWO FRIENDS + YOU ARE A WRONGED WOMAN AND SHALL HAVE JUSTICE + DO NOT BRING POLICE + IF YOU DO ALL WILL BE IN VAIN + YOUR UNKNOWN FRIEND + WELL REALLY THIS IS A VERY PRETTY LITTLE MYSTERY + WHAT DO YOU INTEND TO DO MISS MORSTAN QUOTE + THAT IS EXACTLY WHAT I WANT TO ASK YOU + THEN WE SHALL MOST CERTAINLY GO YOU AND I AND YES. WHY DOCTOR WATSON IS THE VERY MAN + YOUR CORRESPONDENT SAYS TWO FRIENDS + HE AND I HAVE WORKED TOGETHER BEFORE + BUT WOULD HE COME SHE ASKED WITH SOMETHING APPEALING IN HER VOICE AND EXPRESSION + I SHALL BE PROUD AND HAPPY SAID I FERVENTLY IF I CAN BE OF ANY SERVICE + QUOTE YOU ARE BOTH VERY KIND QUOTE SHE ANSWERED + I HAVE LED A RETIRED LIFE AND HAVE NO FRIENDS WHOM I COULD APPEAL TO + IF I AM HERE AT SIX IT WILL DO I SUPPOSE + YOU MUST NOT BE LATER SAID HOLMES + THERE IS ONE OTHER POINT HOWEVER + IS THIS HANDWRITING THE SAME AS THAT UPON THE PEARL BOX ADDRESSES + QUOTE I HAVE THEM HERE QUOTE SHE ANSWERED PRODUCING HALF A DOZEN PIECES OF PAPER + YOU ARE CERTAINLY A MODEL CLIENT + YOU HAVE THE CORRECT INTUITION + LET US SEE NOW + HE SPREAD OUT THE PAPERS UPON THE TABLE AND GAVE LITTLE DARTING GLANCES FROM ONE TO THE OTHER + THEY ARE DISGUISED HANDS EXCEPT THE LETTER HE SAID PRESENTLY BUT THERE CAN BE NO QUESTION AS TO THE AUTHORSHIP + SEE HOW THE IRREPRESSIBLE GREEK E. WILL BREAK OUT AND SEE THE TWIRL OF THE FINAL S. + THEY ARE UNDOUBTEDLY BY THE SAME PERSON + I SHOULD NOT LIKE TO SUGGEST FALSE HOPES MISS MORSTAN BUT IS THERE ANY RESEMBLANCE BETWEEN THIS HAND AND THAT OF YOUR FATHER + NOTHING COULD BE MORE UNLIKE + QUOTE I EXPECTED TO HEAR YOU SAY SO + WE SHALL LOOK OUT FOR YOU THEN AT SIX + PRAY ALLOW ME TO KEEP THE PAPERS + I MAY LOOK INTO THE MATTER BEFORE THEN + IT IS ONLY HALF PAST THREE + AU REVOIR THEN + AU REVOIR SAID OUR VISITOR AND WITH A BRIGHT KINDLY GLANCE FROM ONE TO THE OTHER OF US SHE REPLACED HER PEARL BOX IN HER BOSOM AND HURRIED AWAY + STANDING AT THE WINDOW I WATCHED HER WALKING BRISKLY DOWN THE STREET UNTIL THE GRAY TURBAN AND WHITE FEATHER WERE BUT A SPECK IN THE SOMBRE CROWD + WHAT A VERY ATTRACTIVE WOMAN + I EXCLAIMED TURNING TO MY COMPANION + HE HAD LIT HIS PIPE AGAIN AND WAS LEANING BACK WITH DROOPING EYELIDS + IS SHE HE SAID LANGUIDLY I DID NOT OBSERVE + YOU REALLY ARE AN AUTOMATON A CALCULATING MACHINE I CRIED + QUOTE THERE IS SOMETHING POSITIVELY INHUMAN IN YOU AT TIMES QUOTE + HE SMILED GENTLY + IT IS OF THE FIRST IMPORTANCE HE CRIED NOT TO ALLOW YOUR JUDGMENT TO BE BIASED BY PERSONAL QUALITIES + A CLIENT IS TO ME A MERE UNIT A FACTOR IN A PROBLEM + THE EMOTIONAL QUALITIES ARE ANTAGONISTIC TO CLEAR REASONING + I ASSURE YOU THAT THE MOST WINNING WOMAN I EVER KNEW WAS HANGED FOR POISONING THREE LITTLE CHILDREN FOR THEIR INSURANCE MONEY AND THE MOST REPELLENT MAN OF MY ACQUAINTANCE IS A PHILANTHROPIST WHO HAS SPENT NEARLY A QUARTER OF A MILLION UPON THE LONDON POOR + I NEVER MAKE EXCEPTIONS + AN EXCEPTION DISPROVES THE RULE + HAVE YOU EVER HAD OCCASION TO STUDY CHARACTER IN HANDWRITING + WHAT DO YOU MAKE OF THIS FELLOW'S SCRIBBLE + IT IS LEGIBLE AND REGULAR I ANSWERED + QUOTE A MAN OF BUSINESS HABITS AND SOME FORCE OF CHARACTER QUOTE + HOLMES SHOOK HIS HEAD + LOOK AT HIS LONG LETTERS HE SAID + THEY HARDLY RISE ABOVE THE COMMON HERD + THAT D. MIGHT BE AN A AND THAT I AN E. + MEN OF CHARACTER ALWAYS DIFFERENTIATE THEIR LONG LETTERS HOWEVER ILLEGIBLY THEY MAY WRITE + THERE IS VACILLATION IN HIS K'S AND SELF ESTEEM IN HIS CAPITALS + I AM GOING OUT NOW + I HAVE SOME FEW REFERENCES TO MAKE + LET ME RECOMMEND THIS BOOK ONE OF THE MOST REMARKABLE EVER PENNED + IT IS WINWOOD READE'S MARTYRDOM OF MAN + I SHALL BE BACK IN AN HOUR + I SAT IN THE WINDOW WITH THE VOLUME IN MY HAND BUT MY THOUGHTS WERE FAR FROM THE DARING SPECULATIONS OF THE WRITER + MY MIND RAN UPON OUR LATE VISITOR HER SMILES THE DEEP RICH TONES OF HER VOICE THE STRANGE MYSTERY WHICH OVERHUNG HER LIFE + IF SHE WERE SEVENTEEN AT THE TIME OF HER FATHER'S DISAPPEARANCE SHE MUST BE SEVEN AND TWENTY NOW A SWEET AGE WHEN YOUTH HAS LOST ITS SELF CONSCIOUSNESS AND BECOME A LITTLE SOBERED BY EXPERIENCE + SO I SAT AND MUSED UNTIL SUCH DANGEROUS THOUGHTS CAME INTO MY HEAD THAT I HURRIED AWAY TO MY DESK AND PLUNGED FURIOUSLY INTO THE LATEST TREATISE UPON PATHOLOGY + WHAT WAS I AN ARMY SURGEON WITH A WEAK LEG AND A WEAKER BANKING ACCOUNT THAT I SHOULD DARE TO THINK OF SUCH THINGS + SHE WAS A UNIT A FACTOR NOTHING MORE + IF MY FUTURE WERE BLACK IT WAS BETTER SURELY TO FACE IT LIKE A MAN THAN TO ATTEMPT TO BRIGHTEN IT BY MERE WILL O' THE WISPS OF THE IMAGINATION + CHAPTER THREE IN QUEST OF A SOLUTION + IT WAS HALF PAST FIVE BEFORE HOLMES RETURNED + HE WAS BRIGHT EAGER AND IN EXCELLENT SPIRITS A MOOD WHICH IN HIS CASE ALTERNATED WITH FITS OF THE BLACKEST DEPRESSION + THERE IS NO GREAT MYSTERY IN THIS MATTER HE SAID TAKING THE CUP OF TEA WHICH I HAD POURED OUT FOR HIM THE FACTS APPEAR TO ADMIT OF ONLY ONE EXPLANATION + WHAT YOU HAVE SOLVED IT ALREADY + QUOTE WELL THAT WOULD BE TOO MUCH TO SAY + I HAVE DISCOVERED A SUGGESTIVE FACT THAT IS ALL + IT IS HOWEVER VERY SUGGESTIVE + THE DETAILS ARE STILL TO BE ADDED + I HAVE JUST FOUND ON CONSULTING THE BACK FILES OF THE TIMES THAT MAJOR SHOLTO OF UPPER NORWOOD LATE OF THE THIRTY FOURTH BOMBAY INFANTRY DIED UPON THE TWENTYEIGHTH OF APRIL ONE THOUSAND EIGHT HUNDRED EIGHTY TWO + I MAY BE VERY OBTUSE HOLMES BUT I FAIL TO SEE WHAT THIS SUGGESTS + NO + YOU SURPRISE ME + LOOK AT IT IN THIS WAY THEN + CAPTAIN MORSTAN DISAPPEARS + THE ONLY PERSON IN LONDON WHOM HE COULD HAVE VISITED IS MAJOR SHOLTO + MAJOR SHOLTO DENIES HAVING HEARD THAT HE WAS IN LONDON + FOUR YEARS LATER SHOLTO DIES + WITHIN A WEEK OF HIS DEATH CAPTAIN MORSTAN'S DAUGHTER RECEIVES A VALUABLE PRESENT WHICH IS REPEATED FROM YEAR TO YEAR AND NOW CULMINATES IN A LETTER WHICH DESCRIBES HER AS A WRONGED WOMAN + WHAT WRONG CAN IT REFER TO EXCEPT THIS DEPRIVATION OF HER FATHER + AND WHY SHOULD THE PRESENTS BEGIN IMMEDIATELY AFTER SHOLTO'S DEATH UNLESS IT IS THAT SHOLTO'S HEIR KNOWS SOMETHING OF THE MYSTERY AND DESIRES TO MAKE COMPENSATION + HAVE YOU ANY ALTERNATIVE THEORY WHICH WILL MEET THE FACTS + BUT WHAT A STRANGE COMPENSATION + AND HOW STRANGELY MADE + WHY TOO SHOULD HE WRITE A LETTER NOW RATHER THAN SIX YEARS AGO + AGAIN THE LETTER SPEAKS OF GIVING HER JUSTICE + WHAT JUSTICE CAN SHE HAVE + IT IS TOO MUCH TO SUPPOSE THAT HER FATHER IS STILL ALIVE + THERE IS NO OTHER INJUSTICE IN HER CASE THAT YOU KNOW OF QUOTE + THERE ARE DIFFICULTIES THERE ARE CERTAINLY DIFFICULTIES SAID SHERLOCK HOLMES PENSIVELY BUT OUR EXPEDITION OF TO NIGHT WILL SOLVE THEM ALL + AH HERE IS A FOUR WHEELER AND MISS MORSTAN IS INSIDE + ARE YOU ALL READY + THEN WE HAD BETTER GO DOWN FOR IT IS A LITTLE PAST THE HOUR + I PICKED UP MY HAT AND MY HEAVIEST STICK BUT I OBSERVED THAT HOLMES TOOK HIS REVOLVER FROM HIS DRAWER AND SLIPPED IT INTO HIS POCKET + IT WAS CLEAR THAT HE THOUGHT THAT OUR NIGHT'S WORK MIGHT BE A SERIOUS ONE + MISS MORSTAN WAS MUFFLED IN A DARK CLOAK AND HER SENSITIVE FACE WAS COMPOSED BUT PALE + SHE MUST HAVE BEEN MORE THAN WOMAN IF SHE DID NOT FEEL SOME UNEASINESS AT THE STRANGE ENTERPRISE UPON WHICH WE WERE EMBARKING YET HER SELF CONTROL WAS PERFECT AND SHE READILY ANSWERED THE FEW ADDITIONAL QUESTIONS WHICH SHERLOCK HOLMES PUT TO HER + MAJOR SHOLTO WAS A VERY PARTICULAR FRIEND OF PAPA'S SHE SAID + HIS LETTERS WERE FULL OF ALLUSIONS TO THE MAJOR + HE AND PAPA WERE IN COMMAND OF THE TROOPS AT THE ANDAMAN ISLANDS SO THEY WERE THROWN A GREAT DEAL TOGETHER + BY THE WAY A CURIOUS PAPER WAS FOUND IN PAPA'S DESK WHICH NO ONE COULD UNDERSTAND + I DON'T SUPPOSE THAT IT IS OF THE SLIGHTEST IMPORTANCE BUT I THOUGHT YOU MIGHT CARE TO SEE IT SO I BROUGHT IT WITH ME + IT IS HERE + HOLMES UNFOLDED THE PAPER CAREFULLY AND SMOOTHED IT OUT UPON HIS KNEE + HE THEN VERY METHODICALLY EXAMINED IT ALL OVER WITH HIS DOUBLE LENS + QUOTE IT IS PAPER OF NATIVE INDIAN MANUFACTURE QUOTE HE REMARKED + IT HAS AT SOME TIME BEEN PINNED TO A BOARD + THE DIAGRAM UPON IT APPEARS TO BE A PLAN OF PART OF A LARGE BUILDING WITH NUMEROUS HALLS CORRIDORS AND PASSAGES + AT ONE POINT IS A SMALL CROSS DONE IN RED INK AND ABOVE IT IS THREE POINT THREE SEVEN FROM LEFT IN FADED PENCILWRITING + IN THE LEFT HAND CORNER IS A CURIOUS HIEROGLYPHIC LIKE FOUR CROSSES IN A LINE WITH THEIR ARMS TOUCHING + BESIDE IT IS WRITTEN IN VERY ROUGH AND COARSE CHARACTERS THE SIGN OF THE FOUR JONATHAN SMALL MAHOMET SINGH ABDULLAH KHAN DOST AKBAR + NO I CONFESS THAT I DO NOT SEE HOW THIS BEARS UPON THE MATTER + YET IT IS EVIDENTLY A DOCUMENT OF IMPORTANCE + IT HAS BEEN KEPT CAREFULLY IN A POCKETBOOK FOR THE ONE SIDE IS AS CLEAN AS THE OTHER + IT WAS IN HIS POCKETBOOK THAT WE FOUND IT + PRESERVE IT CAREFULLY THEN MISS MORSTAN FOR IT MAY PROVE TO BE OF USE TO US + I BEGIN TO SUSPECT THAT THIS MATTER MAY TURN OUT TO BE MUCH DEEPER AND MORE SUBTLE THAN I AT FIRST SUPPOSED + I MUST RECONSIDER MY IDEAS + HE LEANED BACK IN THE CAB AND I COULD SEE BY HIS DRAWN BROW AND HIS VACANT EYE THAT HE WAS THINKING INTENTLY + MISS MORSTAN AND I CHATTED IN AN UNDERTONE ABOUT OUR PRESENT EXPEDITION AND ITS POSSIBLE OUTCOME BUT OUR COMPANION MAINTAINED HIS IMPENETRABLE RESERVE UNTIL THE END OF OUR JOURNEY + IT WAS A SEPTEMBER EVENING AND NOT YET SEVEN O'CLOCK BUT THE DAY HAD BEEN A DREARY ONE AND A DENSE DRIZZLY FOG LAY LOW UPON THE GREAT CITY + MUD COLOURED CLOUDS DROOPED SADLY OVER THE MUDDY STREETS + DOWN THE STRAND THE LAMPS WERE BUT MISTY SPLOTCHES OF DIFFUSED LIGHT WHICH THREW A FEEBLE CIRCULAR GLIMMER UPON THE SLIMY PAVEMENT + THE YELLOW GLARE FROM THE SHOP WINDOWS STREAMED OUT INTO THE STEAMY VAPOROUS AIR AND THREW A MURKY SHIFTING RADIANCE ACROSS THE CROWDED THOROUGHFARE + THERE WAS TO MY MIND SOMETHING EERIE AND GHOSTLIKE IN THE ENDLESS PROCESSION OF FACES WHICH FLITTED ACROSS THESE NARROW BARS OF LIGHT SAD FACES AND GLAD HAGGARD AND MERRY + LIKE ALL HUMANKIND THEY FLITTED FROM THE GLOOM INTO THE LIGHT AND SO BACK INTO THE GLOOM ONCE MORE + I AM NOT SUBJECT TO IMPRESSIONS BUT THE DULL HEAVY EVENING WITH THE STRANGE BUSINESS UPON WHICH WE WERE ENGAGED COMBINED TO MAKE ME NERVOUS AND DEPRESSED + I COULD SEE FROM MISS MORSTAN'S MANNER THAT SHE WAS SUFFERING FROM THE SAME FEELING + HOLMES ALONE COULD RISE SUPERIOR TO PETTY INFLUENCES + HE HELD HIS OPEN NOTEBOOK UPON HIS KNEE AND FROM TIME TO TIME HE JOTTED DOWN FIGURES AND MEMORANDA IN THE LIGHT OF HIS POCKETLANTERN + AT THE LYCEUM THEATRE THE CROWDS WERE ALREADY THICK AT THE SIDE ENTRANCES + IN FRONT A CONTINUOUS STREAM OF HANSOMS AND FOUR WHEELERS WERE RATTLING UP DISCHARGING THEIR CARGOES OF SHIRTFRONTED MEN AND BESHAWLED BEDIAMONDED WOMEN + WE HAD HARDLY REACHED THE THIRD PILLAR WHICH WAS OUR RENDEZVOUS BEFORE A SMALL DARK BRISK MAN IN THE DRESS OF A COACHMAN ACCOSTED US + QUOTE ARE YOU THE PARTIES WHO COME WITH MISS MORSTAN QUOTE HE ASKED + I AM MISS MORSTAN AND THESE TWO GENTLEMEN ARE MY FRIENDS SAID SHE + HE BENT A PAIR OF WONDERFULLY PENETRATING AND QUESTIONING EYES UPON US + YOU WILL EXCUSE ME MISS HE SAID WITH A CERTAIN DOGGED MANNER BUT I WAS TO ASK YOU TO GIVE ME YOUR WORD THAT NEITHER OF YOUR COMPANIONS IS A POLICE OFFICER + I GIVE YOU MY WORD ON THAT SHE ANSWERED + HE GAVE A SHRILL WHISTLE ON WHICH A STREET ARAB LED ACROSS A FOUR WHEELER AND OPENED THE DOOR + THE MAN WHO HAD ADDRESSED US MOUNTED TO THE BOX WHILE WE TOOK OUR PLACES INSIDE + WE HAD HARDLY DONE SO BEFORE THE DRIVER WHIPPED UP HIS HORSE AND WE PLUNGED AWAY AT A FURIOUS PACE THROUGH THE FOGGY STREETS + THE SITUATION WAS A CURIOUS ONE + WE WERE DRIVING TO AN UNKNOWN PLACE ON AN UNKNOWN ERRAND + YET OUR INVITATION WAS EITHER A COMPLETE HOAX WHICH WAS AN INCONCEIVABLE HYPOTHESIS OR ELSE WE HAD GOOD REASON TO THINK THAT IMPORTANT ISSUES MIGHT HANG UPON OUR JOURNEY + MISS MORSTAN'S DEMEANOUR WAS AS RESOLUTE AND COLLECTED AS EVER + I ENDEAVOURED TO CHEER AND AMUSE HER BY REMINISCENCES OF MY ADVENTURES IN AFGHANISTAN BUT TO TELL THE TRUTH I WAS MYSELF SO EXCITED AT OUR SITUATION AND SO CURIOUS AS TO OUR DESTINATION THAT MY STORIES WERE SLIGHTLY INVOLVED + TO THIS DAY SHE DECLARES THAT I TOLD HER ONE MOVING ANECDOTE AS TO HOW A MUSKET LOOKED INTO MY TENT AT THE DEAD OF NIGHT AND HOW I FIRED A DOUBLE BARRELLED TIGER CUB AT IT + AT FIRST I HAD SOME IDEA AS TO THE DIRECTION IN WHICH WE WERE DRIVING BUT SOON WHAT WITH OUR PACE THE FOG AND MY OWN LIMITED KNOWLEDGE OF LONDON I LOST MY BEARINGS AND KNEW NOTHING SAVE THAT WE SEEMED TO BE GOING A VERY LONG WAY + SHERLOCK HOLMES WAS NEVER AT FAULT HOWEVER AND HE MUTTERED THE NAMES AS THE CAB RATTLED THROUGH SQUARES AND IN AND OUT BY TORTUOUS BY STREETS + ROCHESTER ROW SAID HE + NOW VINCENT SQUARE + NOW WE COME OUT ON THE VAUXHALL BRIDGE ROAD + WE ARE MAKING FOR THE SURREY SIDE APPARENTLY + YES I THOUGHT SO + NOW WE ARE ON THE BRIDGE + YOU CAN CATCH GLIMPSES OF THE RIVER QUOTE + WE DID INDEED GET A FLEETING VIEW OF A STRETCH OF THE THAMES WITH THE LAMPS SHINING UPON THE BROAD SILENT WATER BUT OUR CAB DASHED ON AND WAS SOON INVOLVED IN A LABYRINTH OF STREETS UPON THE OTHER SIDE + WORDSWORTH ROAD SAID MY COMPANION + PRIORY ROAD + LARK HALL LANE + STOCKWELL PLACE + ROBERT STREET + COLD HARBOUR LANE + OUR QUEST DOES NOT APPEAR TO TAKE US TO VERY FASHIONABLE REGIONS + WE HAD INDEED REACHED A QUESTIONABLE AND FORBIDDING NEIGHBOURHOOD + LONG LINES OF DULL BRICK HOUSES WERE ONLY RELIEVED BY THE COARSE GLARE AND TAWDRY BRILLIANCY OF PUBLIC HOUSES AT THE CORNER + THEN CAME ROWS OF TWO STORIED VILLAS EACH WITH A FRONTING OF MINIATURE GARDEN AND THEN AGAIN INTERMINABLE LINES OF NEW STARING BRICK BUILDINGS THE MONSTER TENTACLES WHICH THE GIANT CITY WAS THROWING OUT INTO THE COUNTRY + AT LAST THE CAB DREW UP AT THE THIRD HOUSE IN A NEW TERRACE + NONE OF THE OTHER HOUSES WERE INHABITED AND THAT AT WHICH WE STOPPED WAS AS DARK AS ITS NEIGHBOURS SAVE FOR A SINGLE GLIMMER IN THE KITCHEN WINDOW + ON OUR KNOCKING HOWEVER THE DOOR WAS INSTANTLY THROWN OPEN BY A HINDOO SERVANT CLAD IN A YELLOW TURBAN WHITE LOOSE FITTING CLOTHES AND A YELLOW SASH + THERE WAS SOMETHING STRANGELY INCONGRUOUS IN THIS ORIENTAL FIGURE FRAMED IN THE COMMONPLACE DOORWAY OF A THIRD RATE SUBURBAN DWELLING HOUSE + THE SAHIB AWAITS YOU SAID HE AND EVEN AS HE SPOKE THERE CAME A HIGH PIPING VOICE FROM SOME INNER ROOM + SHOW THEM IN TO ME KHITMUTGAR IT SAID + QUOTE SHOW THEM STRAIGHT IN TO ME QUOTE + CHAPTER FOUR THE STORY OF THE BALD HEADED MAN + WE FOLLOWED THE INDIAN DOWN A SORDID AND COMMON PASSAGE ILL LIT AND WORSE FURNISHED UNTIL HE CAME TO A DOOR UPON THE RIGHT WHICH HE THREW OPEN + A BLAZE OF YELLOW LIGHT STREAMED OUT UPON US AND IN THE CENTRE OF THE GLARE THERE STOOD A SMALL MAN WITH A VERY HIGH HEAD A BRISTLE OF RED HAIR ALL ROUND THE FRINGE OF IT AND A BALD SHINING SCALP WHICH SHOT OUT FROM AMONG IT LIKE A MOUNTAIN PEAK FROM FIR TREES + HE WRITHED HIS HANDS TOGETHER AS HE STOOD AND HIS FEATURES WERE IN A PERPETUAL JERK NOW SMILING NOW SCOWLING BUT NEVER FOR AN INSTANT IN REPOSE + NATURE HAD GIVEN HIM A PENDULOUS LIP AND A TOO VISIBLE LINE OF YELLOW AND IRREGULAR TEETH WHICH HE STROVE FEEBLY TO CONCEAL BY CONSTANTLY PASSING HIS HAND OVER THE LOWER PART OF HIS FACE + IN SPITE OF HIS OBTRUSIVE BALDNESS HE GAVE THE IMPRESSION OF YOUTH + IN POINT OF FACT HE HAD JUST TURNED HIS THIRTIETH YEAR + YOUR SERVANT MISS MORSTAN HE KEPT REPEATING IN A THIN HIGH VOICE + YOUR SERVANT GENTLEMEN + PRAY STEP INTO MY LITTLE SANCTUM + A SMALL PLACE MISS BUT FURNISHED TO MY OWN LIKING + AN OASIS OF ART IN THE HOWLING DESERT OF SOUTH LONDON + WE WERE ALL ASTONISHED BY THE APPEARANCE OF THE APARTMENT INTO WHICH HE INVITED US + IN THAT SORRY HOUSE IT LOOKED AS OUT OF PLACE AS A DIAMOND OF THE FIRST WATER IN A SETTING OF BRASS + THE RICHEST AND GLOSSIEST OF CURTAINS AND TAPESTRIES DRAPED THE WALLS LOOPED BACK HERE AND THERE TO EXPOSE SOME RICHLY MOUNTED PAINTING OR ORIENTAL VASE + THE CARPET WAS OF AMBER AND BLACK SO SOFT AND SO THICK THAT THE FOOT SANK PLEASANTLY INTO IT AS INTO A BED OF MOSS + TWO GREAT TIGER SKINS THROWN ATHWART IT INCREASED THE SUGGESTION OF EASTERN LUXURY AS DID A HUGE HOOKAH WHICH STOOD UPON A MAT IN THE CORNER + A LAMP IN THE FASHION OF A SILVER DOVE WAS HUNG FROM AN ALMOST INVISIBLE GOLDEN WIRE IN THE CENTRE OF THE ROOM + AS IT BURNED IT FILLED THE AIR WITH A SUBTLE AND AROMATIC ODOUR + MR. THADDEUS SHOLTO SAID THE LITTLE MAN STILL JERKING AND SMILING + THAT IS MY NAME + YOU ARE MISS MORSTAN OF COURSE + AND THESE GENTLEMEN QUOTE + THIS IS MR. SHERLOCK HOLMES AND THIS DOCTOR WATSON + A DOCTOR EH CRIED HE MUCH EXCITED + HAVE YOU YOUR STETHOSCOPE + MIGHT I ASK YOU WOULD YOU HAVE THE KINDNESS + I HAVE GRAVE DOUBTS AS TO MY MITRAL VALVE IF YOU WOULD BE SO VERY GOOD + THE AORTIC I MAY RELY UPON BUT I SHOULD VALUE YOUR OPINION UPON THE MITRAL + I LISTENED TO HIS HEART AS REQUESTED BUT WAS UNABLE TO FIND ANYTHING AMISS SAVE INDEED THAT HE WAS IN AN ECSTASY OF FEAR FOR HE SHIVERED FROM HEAD TO FOOT + IT APPEARS TO BE NORMAL I SAID + QUOTE YOU HAVE NO CAUSE FOR UNEASINESS QUOTE + YOU WILL EXCUSE MY ANXIETY MISS MORSTAN HE REMARKED AIRILY + I AM A GREAT SUFFERER AND I HAVE LONG HAD SUSPICIONS AS TO THAT VALVE + I AM DELIGHTED TO HEAR THAT THEY ARE UNWARRANTED + HAD YOUR FATHER MISS MORSTAN REFRAINED FROM THROWING A STRAIN UPON HIS HEART HE MIGHT HAVE BEEN ALIVE NOW + I COULD HAVE STRUCK THE MAN ACROSS THE FACE SO HOT WAS I AT THIS CALLOUS AND OFFHAND REFERENCE TO SO DELICATE A MATTER + MISS MORSTAN SAT DOWN AND HER FACE GREW WHITE TO THE LIPS + I KNEW IN MY HEART THAT HE WAS DEAD SAID SHE + I CAN GIVE YOU EVERY INFORMATION SAID HE AND WHAT IS MORE I CAN DO YOU JUSTICE AND I WILL TOO WHATEVER BROTHER BARTHOLOMEW MAY SAY + I AM SO GLAD TO HAVE YOUR FRIENDS HERE NOT ONLY AS AN ESCORT TO YOU BUT ALSO AS WITNESSES TO WHAT I AM ABOUT TO DO AND SAY + THE THREE OF US CAN SHOW A BOLD FRONT TO BROTHER BARTHOLOMEW + BUT LET US HAVE NO OUTSIDERS NO POLICE OR OFFICIALS + WE CAN SETTLE EVERYTHING SATISFACTORILY AMONG OURSELVES WITHOUT ANY INTERFERENCE + NOTHING WOULD ANNOY BROTHER BARTHOLOMEW MORE THAN ANY PUBLICITY QUOTE + HE SAT DOWN UPON A LOW SETTEE AND BLINKED AT US INQUIRINGLY WITH HIS WEAK WATERY BLUE EYES + FOR MY PART SAID HOLMES WHATEVER YOU MAY CHOOSE TO SAY WILL GO NO FURTHER + I NODDED TO SHOW MY AGREEMENT + THAT IS WELL + THAT IS WELL SAID HE + MAY I OFFER YOU A GLASS OF CHIANTI MISS MORSTAN + OR OF TOKAY + I KEEP NO OTHER WINES + SHALL I OPEN A FLASK + NO + WELL THEN I TRUST THAT YOU HAVE NO OBJECTION TO TOBACCO SMOKE TO THE BALSAMIC ODOUR OF THE EASTERN TOBACCO + I AM A LITTLE NERVOUS AND I FIND MY HOOKAH AN INVALUABLE SEDATIVE + HE APPLIED A TAPER TO THE GREAT BOWL AND THE SMOKE BUBBLED MERRILY THROUGH THE ROSE WATER + WE SAT ALL THREE IN A SEMICIRCLE WITH OUR HEADS ADVANCED AND OUR CHINS UPON OUR HANDS WHILE THE STRANGE JERKY LITTLE FELLOW WITH HIS HIGH SHINING HEAD PUFFED UNEASILY IN THE CENTRE + QUOTE WHEN I FIRST DETERMINED TO MAKE THIS COMMUNICATION TO YOU QUOTE SAID HE QUOTE I MIGHT HAVE GIVEN YOU MY ADDRESS BUT I FEARED THAT YOU MIGHT DISREGARD MY REQUEST AND BRING UNPLEASANT PEOPLE WITH YOU + I TOOK THE LIBERTY THEREFORE OF MAKING AN APPOINTMENT IN SUCH A WAY THAT MY MAN WILLIAMS MIGHT BE ABLE TO SEE YOU FIRST + I HAVE COMPLETE CONFIDENCE IN HIS DISCRETION AND HE HAD ORDERS IF HE WERE DISSATISFIED TO PROCEED NO FURTHER IN THE MATTER + YOU WILL EXCUSE THESE PRECAUTIONS BUT I AM A MAN OF SOMEWHAT RETIRING AND I MIGHT EVEN SAY REFINED TASTES AND THERE IS NOTHING MORE UNAESTHETIC THAN A POLICEMAN + I HAVE A NATURAL SHRINKING FROM ALL FORMS OF ROUGH MATERIALISM + I SELDOM COME IN CONTACT WITH THE ROUGH CROWD + I LIVE AS YOU SEE WITH SOME LITTLE ATMOSPHERE OF ELEGANCE AROUND ME + I MAY CALL MYSELF A PATRON OF THE ARTS + IT IS MY WEAKNESS + THE LANDSCAPE IS A GENUINE COROT AND THOUGH A CONNOISSEUR MIGHT PERHAPS THROW A DOUBT UPON THAT SALVATOR ROSA THERE CANNOT BE THE LEAST QUESTION ABOUT THE BOUGUEREAU + I AM PARTIAL TO THE MODERN FRENCH SCHOOL + YOU WILL EXCUSE ME MR. SHOLTO SAID MISS MORSTAN BUT I AM HERE AT YOUR REQUEST TO LEARN SOMETHING WHICH YOU DESIRE TO TELL ME + IT IS VERY LATE AND I SHOULD DESIRE THE INTERVIEW TO BE AS SHORT AS POSSIBLE + AT THE BEST IT MUST TAKE SOME TIME HE ANSWERED FOR WE SHALL CERTAINLY HAVE TO GO TO NORWOOD AND SEE BROTHER BARTHOLOMEW + WE SHALL ALL GO AND TRY IF WE CAN GET THE BETTER OF BROTHER BARTHOLOMEW + HE IS VERY ANGRY WITH ME FOR TAKING THE COURSE WHICH HAS SEEMED RIGHT TO ME + I HAD QUITE HIGH WORDS WITH HIM LAST NIGHT + YOU CANNOT IMAGINE WHAT A TERRIBLE FELLOW HE IS WHEN HE IS ANGRY + QUOTE IF WE ARE TO GO TO NORWOOD IT WOULD PERHAPS BE AS WELL TO START AT ONCE QUOTE I VENTURED TO REMARK + HE LAUGHED UNTIL HIS EARS WERE QUITE RED + THAT WOULD HARDLY DO HE CRIED + I DON'T KNOW WHAT HE WOULD SAY IF I BROUGHT YOU IN THAT SUDDEN WAY + NO I MUST PREPARE YOU BY SHOWING YOU HOW WE ALL STAND TO EACH OTHER + IN THE FIRST PLACE I MUST TELL YOU THAT THERE ARE SEVERAL POINTS IN THE STORY OF WHICH I AM MYSELF IGNORANT + I CAN ONLY LAY THE FACTS BEFORE YOU AS FAR AS I KNOW THEM MYSELF + MY FATHER WAS AS YOU MAY HAVE GUESSED MAJOR JOHN SHOLTO ONCE OF THE INDIAN ARMY + HE RETIRED SOME ELEVEN YEARS AGO AND CAME TO LIVE AT PONDICHERRY LODGE IN UPPER NORWOOD + HE HAD PROSPERED IN INDIA AND BROUGHT BACK WITH HIM A CONSIDERABLE SUM OF MONEY A LARGE COLLECTION OF VALUABLE CURIOSITIES AND A STAFF OF NATIVE SERVANTS + WITH THESE ADVANTAGES HE BOUGHT HIMSELF A HOUSE AND LIVED IN GREAT LUXURY + MY TWINBROTHER BARTHOLOMEW AND I WERE THE ONLY CHILDREN + I VERY WELL REMEMBER THE SENSATION WHICH WAS CAUSED BY THE DISAPPEARANCE OF CAPTAIN MORSTAN + WE READ THE DETAILS IN THE PAPERS AND KNOWING THAT HE HAD BEEN A FRIEND OF OUR FATHER'S WE DISCUSSED THE CASE FREELY IN HIS PRESENCE + HE USED TO JOIN IN OUR SPECULATIONS AS TO WHAT COULD HAVE HAPPENED + NEVER FOR AN INSTANT DID WE SUSPECT THAT HE HAD THE WHOLE SECRET HIDDEN IN HIS OWN BREAST THAT OF ALL MEN HE ALONE KNEW THE FATE OF ARTHUR MORSTAN + WE DID KNOW HOWEVER THAT SOME MYSTERY SOME POSITIVE DANGER OVERHUNG OUR FATHER + HE WAS VERY FEARFUL OF GOING OUT ALONE AND HE ALWAYS EMPLOYED TWO PRIZE FIGHTERS TO ACT AS PORTERS AT PONDICHERRY LODGE + WILLIAMS WHO DROVE YOU TONIGHT WAS ONE OF THEM + HE WAS ONCE LIGHTWEIGHT CHAMPION OF ENGLAND + OUR FATHER WOULD NEVER TELL US WHAT IT WAS HE FEARED BUT HE HAD A MOST MARKED AVERSION TO MEN WITH WOODEN LEGS + ON ONE OCCASION HE ACTUALLY FIRED HIS REVOLVER AT A WOODEN LEGGED MAN WHO PROVED TO BE A HARMLESS TRADESMAN CANVASSING FOR ORDERS + WE HAD TO PAY A LARGE SUM TO HUSH THE MATTER UP + MY BROTHER AND I USED TO THINK THIS A MERE WHIM OF MY FATHER'S BUT EVENTS HAVE SINCE LED US TO CHANGE OUR OPINION + QUOTE EARLY IN ONE THOUSAND EIGHT HUNDRED EIGHTY TWO MY FATHER RECEIVED A LETTER FROM INDIA WHICH WAS A GREAT SHOCK TO HIM + HE NEARLY FAINTED AT THE BREAKFAST TABLE WHEN HE OPENED IT AND FROM THAT DAY HE SICKENED TO HIS DEATH + WHAT WAS IN THE LETTER WE COULD NEVER DISCOVER BUT I COULD SEE AS HE HELD IT THAT IT WAS SHORT AND WRITTEN IN A SCRAWLING HAND + HE HAD SUFFERED FOR YEARS FROM AN ENLARGED SPLEEN BUT HE NOW BECAME RAPIDLY WORSE AND TOWARDS THE END OF APRIL WE WERE INFORMED THAT HE WAS BEYOND ALL HOPE AND THAT HE WISHED TO MAKE A LAST COMMUNICATION TO US + WHEN WE ENTERED HIS ROOM HE WAS PROPPED UP WITH PILLOWS AND BREATHING HEAVILY + HE BESOUGHT US TO LOCK THE DOOR AND TO COME UPON EITHER SIDE OF THE BED + THEN GRASPING OUR HANDS HE MADE A REMARKABLE STATEMENT TO US IN A VOICE WHICH WAS BROKEN AS MUCH BY EMOTION AS BY PAIN + I SHALL TRY AND GIVE IT TO YOU IN HIS OWN VERY WORDS + I HAVE ONLY ONE THING HE SAID WHICH WEIGHS UPON MY MIND AT THIS SUPREME MOMENT + IT IS MY TREATMENT OF POOR MORSTAN'S ORPHAN + THE CURSED GREED WHICH HAS BEEN MY BESETTING SIN THROUGH LIFE HAS WITHHELD FROM HER THE TREASURE HALF AT LEAST OF WHICH SHOULD HAVE BEEN HERS + AND YET I HAVE MADE NO USE OF IT MYSELF SO BLIND AND FOOLISH A THING IS AVARICE + THE MERE FEELING OF POSSESSION HAS BEEN SO DEAR TO ME THAT I COULD NOT BEAR TO SHARE IT WITH ANOTHER + SEE THAT CHAPLET TIPPED WITH PEARLS BESIDE THE QUININE BOTTLE + EVEN THAT I COULD NOT BEAR TO PART WITH ALTHOUGH I HAD GOT IT OUT WITH THE DESIGN OF SENDING IT TO HER + YOU MY SONS WILL GIVE HER A FAIR SHARE OF THE AGRA TREASURE + BUT SEND HER NOTHING NOT EVEN THE CHAPLET UNTIL I AM GONE + AFTER ALL MEN HAVE BEEN AS BAD AS THIS AND HAVE RECOVERED + I WILL TELL YOU HOW MORSTAN DIED HE CONTINUED + HE HAD SUFFERED FOR YEARS FROM A WEAK HEART BUT HE CONCEALED IT FROM EVERY ONE + I ALONE KNEW IT + WHEN IN INDIA HE AND I THROUGH A REMARKABLE CHAIN OF CIRCUMSTANCES CAME INTO POSSESSION OF A CONSIDERABLE TREASURE + I BROUGHT IT OVER TO ENGLAND AND ON THE NIGHT OF MORSTAN'S ARRIVAL HE CAME STRAIGHT OVER HERE TO CLAIM HIS SHARE + HE WALKED OVER FROM THE STATION AND WAS ADMITTED BY MY FAITHFUL OLD LAL CHOWDAR WHO IS NOW DEAD + MORSTAN AND I HAD A DIFFERENCE OF OPINION AS TO THE DIVISION OF THE TREASURE AND WE CAME TO HEATED WORDS + MORSTAN HAD SPRUNG OUT OF HIS CHAIR IN A PAROXYSM OF ANGER WHEN HE SUDDENLY PRESSED HIS HAND TO HIS SIDE HIS FACE TURNED A DUSKY HUE AND HE FELL BACKWARD CUTTING HIS HEAD AGAINST THE CORNER OF THE TREASURE CHEST + WHEN I STOOPED OVER HIM I FOUND TO MY HORROR THAT HE WAS DEAD + FOR A LONG TIME I SAT HALF DISTRACTED WONDERING WHAT I SHOULD DO + MY FIRST IMPULSE WAS OF COURSE TO CALL FOR ASSISTANCE BUT I COULD NOT BUT RECOGNIZE THAT THERE WAS EVERY CHANCE THAT I WOULD BE ACCUSED OF HIS MURDER + HIS DEATH AT THE MOMENT OF A QUARREL AND THE GASH IN HIS HEAD WOULD BE BLACK AGAINST ME + AGAIN AN OFFICIAL INQUIRY COULD NOT BE MADE WITHOUT BRINGING OUT SOME FACTS ABOUT THE TREASURE WHICH I WAS PARTICULARLY ANXIOUS TO KEEP SECRET + HE HAD TOLD ME THAT NO SOUL UPON EARTH KNEW WHERE HE HAD GONE + THERE SEEMED TO BE NO NECESSITY WHY ANY SOUL EVER SHOULD KNOW + I WAS STILL PONDERING OVER THE MATTER WHEN LOOKING UP I SAW MY SERVANT LAL CHOWDAR IN THE DOORWAY + HE STOLE IN AND BOLTED THE DOOR BEHIND HIM + QUOTE DO NOT FEAR SAHIB QUOTE HE SAID QUOTE NO ONE NEED KNOW THAT YOU HAVE KILLED HIM + LET US HIDE HIM AWAY AND WHO IS THE WISER + I DID NOT KILL HIM SAID I. LAL CHOWDAR SHOOK HIS HEAD AND SMILED + I HEARD IT ALL SAHIB SAID HE L. HEARD YOU QUARREL AND I HEARD THE BLOW + BUT MY LIPS ARE SEALED + ALL ARE ASLEEP IN THE HOUSE + LET US PUT HIM AWAY TOGETHER + THAT WAS ENOUGH TO DECIDE ME + IF MY OWN SERVANT COULD NOT BELIEVE MY INNOCENCE HOW COULD I HOPE TO MAKE IT GOOD BEFORE TWELVE FOOLISH TRADESMEN IN A JURY BOX + LAL CHOWDAR AND I DISPOSED OF THE BODY THAT NIGHT AND WITHIN A FEW DAYS THE LONDON PAPERS WERE FULL OF THE MYSTERIOUS DISAPPEARANCE OF CAPTAIN MORSTAN + YOU WILL SEE FROM WHAT I SAY THAT L. CAN HARDLY BE BLAMED IN THE MATTER + MY FAULT LIES IN THE FACT THAT WE CONCEALED NOT ONLY THE BODY BUT ALSO THE TREASURE AND THAT I HAVE CLUNG TO MORSTAN'S SHARE AS WELL AS TO MY OWN + I WISH YOU THEREFORE TO MAKE RESTITUTION + PUT YOUR EARS DOWN TO MY MOUTH + THE TREASURE IS HIDDEN IN + AT THIS INSTANT A HORRIBLE CHANGE CAME OVER HIS EXPRESSION HIS EYES STARED WILDLY HIS JAW DROPPED AND HE YELLED IN A VOICE WHICH I CAN NEVER FORGET KEEP HIM OUT + FOR CHRIST'S SAKE KEEP HIM OUT + WE BOTH STARED ROUND AT THE WINDOW BEHIND US UPON WHICH HIS GAZE WAS FIXED + A FACE WAS LOOKING IN AT US OUT OF THE DARKNESS + WE COULD SEE THE WHITENING OF THE NOSE WHERE IT WAS PRESSED AGAINST THE GLASS + IT WAS A BEARDED HAIRY FACE WITH WILD CRUEL EYES AND AN EXPRESSION OF CONCENTRATED MALEVOLENCE + MY BROTHER AND I RUSHED TOWARDS THE WINDOW BUT THE MAN WAS GONE + WHEN WE RETURNED TO MY FATHER HIS HEAD HAD DROPPED AND HIS PULSE HAD CEASED TO BEAT + QUOTE WE SEARCHED THE GARDEN THAT NIGHT BUT FOUND NO SIGN OF THE INTRUDER SAVE THAT JUST UNDER THE WINDOW A SINGLE FOOTMARK WAS VISIBLE IN THE FLOWER BED + BUT FOR THAT ONE TRACE WE MIGHT HAVE THOUGHT THAT OUR IMAGINATIONS HAD CONJURED UP THAT WILD FIERCE FACE + WE SOON HOWEVER HAD ANOTHER AND A MORE STRIKING PROOF THAT THERE WERE SECRET AGENCIES AT WORK ALL ROUND US + THE WINDOW OF MY FATHER'S ROOM WAS FOUND OPEN IN THE MORNING HIS CUPBOARDS AND BOXES HAD BEEN RIFLED AND UPON HIS CHEST WAS FIXED A TORN PIECE OF PAPER WITH THE WORDS THE SIGN OF THE FOUR SCRAWLED ACROSS IT + WHAT THE PHRASE MEANT OR WHO OUR SECRET VISITOR MAY HAVE BEEN WE NEVER KNEW + AS FAR AS WE CAN JUDGE NONE OF MY FATHER'S PROPERTY HAD BEEN ACTUALLY STOLEN THOUGH EVERYTHING HAD BEEN TURNED OUT + MY BROTHER AND I NATURALLY ASSOCIATED THIS PECULIAR INCIDENT WITH THE FEAR WHICH HAUNTED MY FATHER DURING HIS LIFE BUT IT IS STILL A COMPLETE MYSTERY TO US + THE LITTLE MAN STOPPED TO RELIGHT HIS HOOKAH AND PUFFED THOUGHTFULLY FOR A FEW MOMENTS + WE HAD ALL SAT ABSORBED LISTENING TO HIS EXTRAORDINARY NARRATIVE + AT THE SHORT ACCOUNT OF HER FATHER'S DEATH MISS MORSTAN HAD TURNED DEADLY WHITE AND FOR A MOMENT I FEARED THAT SHE WAS ABOUT TO FAINT + SHE RALLIED HOWEVER ON DRINKING A GLASS OF WATER WHICH I QUIETLY POURED OUT FOR HER FROM A VENETIAN CARAFE UPON THE SIDE TABLE + SHERLOCK HOLMES LEANED BACK IN HIS CHAIR WITH AN ABSTRACTED EXPRESSION AND THE LIDS DRAWN LOW OVER HIS GLITTERING EYES + AS I GLANCED AT HIM I COULD NOT BUT THINK HOW ON THAT VERY DAY HE HAD COMPLAINED BITTERLY OF THE COMMONPLACENESS OF LIFE + HERE AT LEAST WAS A PROBLEM WHICH WOULD TAX HIS SAGACITY TO THE UTMOST + MR. THADDEUS SHOLTO LOOKED FROM ONE TO THE OTHER OF US WITH AN OBVIOUS PRIDE AT THE EFFECT WHICH HIS STORY HAD PRODUCED AND THEN CONTINUED BETWEEN THE PUFFS OF HIS OVERGROWN PIPE + MY BROTHER AND I SAID HE WERE AS YOU MAY IMAGINE MUCH EXCITED AS TO THE TREASURE WHICH MY FATHER HAD SPOKEN OF + FOR WEEKS AND FOR MONTHS WE DUG AND DELVED IN EVERY PART OF THE GARDEN WITHOUT DISCOVERING ITS WHEREABOUTS + IT WAS MADDENING TO THINK THAT THE HIDING PLACE WAS ON HIS VERY LIPS AT THE MOMENT THAT HE DIED + WE COULD JUDGE THE SPLENDOUR OF THE MISSING RICHES BY THE CHAPLET WHICH HE HAD TAKEN OUT + OVER THIS CHAPLET MY BROTHER BARTHOLOMEW AND I HAD SOME LITTLE DISCUSSION + THE PEARLS WERE EVIDENTLY OF GREAT VALUE AND HE WAS AVERSE TO PART WITH THEM FOR BETWEEN FRIENDS MY BROTHER WAS HIMSELF A LITTLE INCLINED TO MY FATHER'S FAULT + HE THOUGHT TOO THAT IF WE PARTED WITH THE CHAPLET IT MIGHT GIVE RISE TO GOSSIP AND FINALLY BRING US INTO TROUBLE + IT WAS ALL THAT I COULD DO TO PERSUADE HIM TO LET ME FIND OUT MISS MORSTAN'S ADDRESS AND SEND HER A DETACHED PEARL AT FIXED INTERVALS SO THAT AT LEAST SHE MIGHT NEVER FEEL DESTITUTE + IT WAS A KINDLY THOUGHT SAID OUR COMPANION EARNESTLY IT WAS EXTREMELY GOOD OF YOU + THE LITTLE MAN WAVED HIS HAND DEPRECATINGLY + WE WERE YOUR TRUSTEES HE SAID THAT WAS THE VIEW WHICH I TOOK OF IT THOUGH BROTHER BARTHOLOMEW COULD NOT ALTOGETHER SEE IT IN THAT LIGHT + WE HAD PLENTY OF MONEY OURSELVES + I DESIRED NO MORE + BESIDES IT WOULD HAVE BEEN SUCH BAD TASTE TO HAVE TREATED A YOUNG LADY IN SO SCURVY A FASHION + LE MAUVAIS GODT MENE AU CRIME + THE FRENCH HAVE A VERY NEAT WAY OF PUTTING THESE THINGS + OUR DIFFERENCE OF OPINION ON THIS SUBJECT WENT SO FAR THAT I THOUGHT IT BEST TO SET UP ROOMS FOR MYSELF SO I LEFT PONDICHERRY LODGE TAKING THE OLD KHITMUTGAR AND WILLIAMS WITH ME + YESTERDAY HOWEVER I LEARNED THAT AN EVENT OF EXTREME IMPORTANCE HAS OCCURRED + THE TREASURE HAS BEEN DISCOVERED + I INSTANTLY COMMUNICATED WITH MISS MORSTAN AND IT ONLY REMAINS FOR US TO DRIVE OUT TO NORWOOD AND DEMAND OUR SHARE + I EXPLAINED MY VIEWS LAST NIGHT TO BROTHER BARTHOLOMEW SO WE SHALL BE EXPECTED IF NOT WELCOME VISITORS QUOTE + MR. THADDEUS SHOLTO CEASED AND SAT TWITCHING ON HIS LUXURIOUS SETTEE + WE ALL REMAINED SILENT WITH OUR THOUGHTS UPON THE NEW DEVELOPMENT WHICH THE MYSTERIOUS BUSINESS HAD TAKEN + HOLMES WAS THE FIRST TO SPRING TO HIS FEET + YOU HAVE DONE WELL SIR FROM FIRST TO LAST SAID HE + IT IS POSSIBLE THAT WE MAY BE ABLE TO MAKE YOU SOME SMALL RETURN BY THROWING SOME LIGHT UPON THAT WHICH IS STILL DARK TO YOU + BUT AS MISS MORSTAN REMARKED JUST NOW IT IS LATE AND WE HAD BEST PUT THE MATTER THROUGH WITHOUT DELAY + OUR NEW ACQUAINTANCE VERY DELIBERATELY COILED UP THE TUBE OF HIS HOOKAH AND PRODUCED FROM BEHIND A CURTAIN A VERY LONG BEFROGGED TOPCOAT WITH ASTRAKHAN COLLAR AND CUFFS + THIS HE BUTTONED TIGHTLY UP IN SPITE OF THE EXTREME CLOSENESS OF THE NIGHT AND FINISHED HIS ATTIRE BY PUTTING ON A RABBIT SKIN CAP WITH HANGING LAPPETS WHICH COVERED THE EARS SO THAT NO PART OF HIM WAS VISIBLE SAVE HIS MOBILE AND PEAKY FACE + MY HEALTH IS SOMEWHAT FRAGILE HE REMARKED AS HE LED THE WAY DOWN THE PASSAGE + I AM COMPELLED TO BE A VALETUDINARIAN + OUR CAB WAS AWAITING US OUTSIDE AND OUR PROGRAMME WAS EVIDENTLY PREARRANGED FOR THE DRIVER STARTED OFF AT ONCE AT A RAPID PACE + THADDEUS SHOLTO TALKED INCESSANTLY IN A VOICE WHICH ROSE HIGH ABOVE THE RATTLE OF THE WHEELS + QUOTE BARTHOLOMEW IS A CLEVER FELLOW QUOTE SAID HE + HOW DO YOU THINK HE FOUND OUT WHERE THE TREASURE WAS + HE HAD COME TO THE CONCLUSION THAT IT WAS SOMEWHERE INDOORS SO HE WORKED OUT ALL THE CUBIC SPACE OF THE HOUSE AND MADE MEASUREMENTS EVERYWHERE SO THAT NOT ONE INCH SHOULD BE UNACCOUNTED FOR + AMONG OTHER THINGS HE FOUND THAT THE HEIGHT OF THE BUILDING WAS SEVENTY FOUR FEET BUT ON ADDING TOGETHER THE HEIGHTS OF ALL THE SEPARATE ROOMS AND MAKING EVERY ALLOWANCE FOR THE SPACE BETWEEN WHICH HE ASCERTAINED BY BORINGS HE COULD NOT BRING THE TOTAL TO MORE THAN SEVENTY FEET + THERE WERE FOUR FEET UNACCOUNTED FOR + THESE COULD ONLY BE AT THE TOP OF THE BUILDING + HE KNOCKED A HOLE THEREFORE IN THE LATH AND PLASTER CEILING OF THE HIGHEST ROOM AND THERE SURE ENOUGH HE CAME UPON ANOTHER LITTLE GARRET ABOVE IT WHICH HAD BEEN SEALED UP AND WAS KNOWN TO NO ONE + IN THE CENTRE STOOD THE TREASURE CHEST RESTING UPON TWO RAFTERS + HE LOWERED IT THROUGH THE HOLE AND THERE IT LIES + HE COMPUTES THE VALUE OF THE JEWELS AT NOT LESS THAN HALF A MILLION STERLING + AT THE MENTION OF THIS GIGANTIC SUM WE ALL STARED AT ONE ANOTHER OPEN EYED + MISS MORSTAN COULD WE SECURE HER RIGHTS WOULD CHANGE FROM A NEEDY GOVERNESS TO THE RICHEST HEIRESS IN ENGLAND + SURELY IT WAS THE PLACE OF A LOYAL FRIEND TO REJOICE AT SUCH NEWS YET I AM ASHAMED TO SAY THAT SELFISHNESS TOOK ME BY THE SOUL AND THAT MY HEART TURNED AS HEAVY AS LEAD WITHIN ME + I STAMMERED OUT SOME FEW HALTING WORDS OF CONGRATULATION AND THEN SAT DOWNCAST WITH MY HEAD DROOPED DEAF TO THE BABBLE OF OUR NEW ACQUAINTANCE + HE WAS CLEARLY A CONFIRMED HYPOCHONDRIAC AND I WAS DREAMILY CONSCIOUS THAT HE WAS POURING FORTH INTERMINABLE TRAINS OF SYMPTOMS AND IMPLORING INFORMATION AS TO THE COMPOSITION AND ACTION OF INNUMERABLE QUACK NOSTRUMS SOME OF WHICH HE BORE ABOUT IN A LEATHER CASE IN HIS POCKET + I TRUST THAT HE MAY NOT REMEMBER ANY OF THE ANSWERS WHICH I GAVE HIM THAT NIGHT + HOLMES DECLARES THAT HE OVERHEARD ME CAUTION HIM AGAINST THE GREAT DANGER OF TAKING MORE THAN TWO DROPS OF CASTOR OIL WHILE I RECOMMENDED STRYCHNINE IN LARGE DOSES AS A SEDATIVE + HOWEVER THAT MAY BE I WAS CERTAINLY RELIEVED WHEN OUR CAB PULLED UP WITH A JERK AND THE COACHMAN SPRANG DOWN TO OPEN THE DOOR + THIS MISS MORSTAN IS PONDICHERRY LODGE SAID MR. THADDEUS SHOLTO AS HE HANDED HER OUT + CHAPTER FIVE THE TRAGEDY OF PONDICHERRY LODGE + IT WAS NEARLY ELEVEN O'CLOCK WHEN WE REACHED THIS FINAL STAGE OF OUR NIGHT'S ADVENTURES + WE HAD LEFT THE DAMP FOG OF THE GREAT CITY BEHIND US AND THE NIGHT WAS FAIRLY FINE + A WARM WIND BLEW FROM THE WESTWARD AND HEAVY CLOUDS MOVED SLOWLY ACROSS THE SKY WITH HALF A MOON PEEPING OCCASIONALLY THROUGH THE RIFTS + IT WAS CLEAR ENOUGH TO SEE FOR SOME DISTANCE BUT THADDEUS SHOLTO TOOK DOWN ONE OF THE SIDELAMPS FROM THE CARRIAGE TO GIVE US A BETTER LIGHT UPON OUR WAY + PONDICHERRY LODGE STOOD IN ITS OWN GROUNDS AND WAS GIRT ROUND WITH A VERY HIGH STONE WALL TOPPED WITH BROKEN GLASS + A SINGLE NARROW IRON CLAMPED DOOR FORMED THE ONLY MEANS OF ENTRANCE + ON THIS OUR GUIDE KNOCKED WITH A PECULIAR POSTMAN LIKE RAT TAT + WHO IS THERE CRIED A GRUFF VOICE FROM WITHIN + IT IS I MCMURDO + YOU SURELY KNOW MY KNOCK BY THIS TIME QUOTE + THERE WAS A GRUMBLING SOUND AND A CLANKING AND JARRING OF KEYS + THE DOOR SWUNG HEAVILY BACK AND A SHORT DEEP CHESTED MAN STOOD IN THE OPENING WITH THE YELLOW LIGHT OF THE LANTERN SHINING UPON HIS PROTRUDED FACE AND TWINKLING DISTRUSTFUL EYES + THAT YOU MR. THADDEUS + BUT WHO ARE THE OTHERS + I HAD NO ORDERS ABOUT THEM FROM THE MASTER + NO MCMURDO + YOU SURPRISE ME + I TOLD MY BROTHER LAST NIGHT THAT I SHOULD BRING SOME FRIENDS + HE HAIN'T BEEN OUT O' HIS ROOMS TO DAY MR. THADDEUS AND I HAVE NO ORDERS + YOU KNOW VERY WELL THAT I MUST STICK TO REGULATIONS + I CAN LET YOU IN BUT YOUR FRIENDS THEY MUST JUST STOP WHERE THEY ARE QUOTE + THIS WAS AN UNEXPECTED OBSTACLE + THADDEUS SHOLTO LOOKED ABOUT HIM IN A PERPLEXED AND HELPLESS MANNER + THIS IS TOO BAD OF YOU MCMURDO HE SAID + IF I GUARANTEE THEM THAT IS ENOUGH FOR YOU + THERE IS THE YOUNG LADY TOO + SHE CANNOT WAIT ON THE PUBIIC ROAD AT THIS HOUR + VERY SORRY MR. THADDEUS SAID THE PORTER INEXORABLY + FOLK MAY BE FRIENDS O' YOURS AND YET NO FRIEND O' THE MASTER'S + HE PAYS ME WELL TO DO MY DUTY AND MY DUTY I'LL DO + I DON'T KNOW NONE O' YOUR FRIENDS QUOTE + OH YES YOU DO MCMURDO CRIED SHERLOCK HOLMES GENIALLY + I DON'T THINK YOU CAN HAVE FORGOTTEN ME + DON'T YOU REMEMBER THAT AMATEUR WHO FOUGHT THREE ROUNDS WITH YOU AT ALISON'S ROOMS ON THE NIGHT OF YOUR BENEFIT FOUR YEARS BACK + NOT MR. SHERLOCK HOLMES ROARED THE PRIZE FIGHTER + GOD'S TRUTH HOW COULD I HAVE MISTOOK YOU + IF INSTEAD O' STANDIN' THERE SO QUIET YOU HAD JUST STEPPED UP AND GIVEN ME THAT CROSS HIT OF YOURS UNDER THE JAW I'D HA KNOWN YOU WITHOUT A QUESTION + AH YOU'RE ONE THAT HAS WASTED YOUR GIFTS YOU HAVE + YOU MIGHT HAVE AIMED HIGH IF YOU HAD JOINED THE FANCY QUOTE + YOU SEE WATSON IF ALL ELSE FAILS ME I HAVE STILL ONE OF THE SCIENTIFIC PROFESSIONS OPEN TO ME SAID HOLMES LAUGHING + OUR FRIEND WON'T KEEP US OUT IN THE COLD NOW I AM SURE + IN YOU COME SIR IN YOU COME YOU AND YOUR FRIENDS HE ANSWERED + VERY SORRY MR. THADDEUS BUT ORDERS ARE VERY STRICT + HAD TO BE CERTAIN OF YOUR FRIENDS BEFORE I LET THEM IN + INSIDE A GRAVEL PATH WOUND THROUGH DESOLATE GROUNDS TO A HUGE CLUMP OF A HOUSE SQUARE AND PROSAIC ALL PLUNGED IN SHADOW SAVE WHERE A MOONBEAM STRUCK ONE CORNER AND GLIMMERED IN A GARRET WINDOW + THE VAST SIZE OF THE BUILDING WITH ITS GLOOM AND ITS DEATHLY SILENCE STRUCK A CHILL TO THE HEART + EVEN THADDEUS SHOLTO SEEMED ILL AT EASE AND THE LANTERN QUIVERED AND RATTLED IN HIS HAND + QUOTE I CANNOT UNDERSTAND IT QUOTE HE SAID + THERE MUST BE SOME MISTAKE + I DISTINCTLY TOLD BARTHOLOMEW THAT WE SHOULD BE HERE AND YET THERE IS NO LIGHT IN HIS WINDOW + I DO NOT KNOW WHAT TO MAKE OF IT + DOES HE ALWAYS GUARD THE PREMISES IN THIS WAY ASKED HOLMES + YES HE HAS FOLLOWED MY FATHER'S CUSTOM + HE WAS THE FAVOURITE SON YOU KNOW AND I SOMETIMES THINK THAT MY FATHER MAY HAVE TOLD HIM MORE THAN HE EVER TOLD ME + THAT IS BARTHOLOMEW'S WINDOW UP THERE WHERE THE MOONSHINE STRIKES + IT IS QUITE BRIGHT BUT THERE IS NO LIGHT FROM WITHIN I THINK + QUOTE NONE QUOTE SAID HOLMES + BUT I SEE THE GLINT OF A LIGHT IN THAT LITTLE WINDOW BESIDE THE DOOR + AH THAT IS THE HOUSEKEEPER'S ROOM + THAT IS WHERE OLD MRS. BERNSTONE SITS + SHE CAN TELL US ALL ABOUT IT + BUT PERHAPS YOU WOULD NOT MIND WAITING HERE FOR A MINUTE OR TWO FOR IF WE ALL GO IN TOGETHER AND SHE HAS HAD NO WORD OF OUR COMING SHE MAY BE ALARMED + BUT HUSH WHAT IS THAT + HE HELD UP THE LANTERN AND HIS HAND SHOOK UNTIL THE CIRCLES OF LIGHT FLICKERED AND WAVERED ALL ROUND US + MISS MORSTAN SEIZED MY WRIST AND WE ALL STOOD WITH THUMPING HEARTS STRAINING OUR EARS + FROM THE GREAT BLACK HOUSE THERE SOUNDED THROUGH THE SILENT NIGHT THE SADDEST AND MOST PITIFUL OF SOUNDS THE SHRILL BROKEN WHIMPERING OF A FRIGHTENED WOMAN + IT IS MRS. BERNSTONE SAID SHOLTO + SHE IS THE ONLY WOMAN IN THE HOUSE + WAIT HERE + I SHALL BE BACK IN A MOMENT QUOTE + HE HURRIED FOR THE DOOR AND KNOCKED IN HIS PECULIAR WAY + WE COULD SEE A TALL OLD WOMAN ADMIT HIM AND SWAY WITH PLEASURE AT THE VERY SIGHT OF HIM + OH MR. THADDEUS SIR I AM SO GLAD YOU HAVE COME + I AM SO GLAD YOU HAVE COME MR. THADDEUS SIR + WE HEARD HER REITERATED REJOICINGS UNTIL THE DOOR WAS CLOSED AND HER VOICE DIED AWAY INTO A MUFFLED MONOTONE + OUR GUIDE HAD LEFT US THE LANTERN + HOLMES SWUNG IT SLOWLY ROUND AND PEERED KEENLY AT THE HOUSE AND AT THE GREAT RUBBISHHEAPS WHICH CUMBERED THE GROUNDS + MISS MORSTAN AND I STOOD TOGETHER AND HER HAND WAS IN MINE + A WONDROUS SUBTLE THING IS LOVE FOR HERE WERE WE TWO WHO HAD NEVER SEEN EACH OTHER BEFORE THAT DAY BETWEEN WHOM NO WORD OR EVEN LOOK OF AFFECTION HAD EVER PASSED AND YET NOW IN AN HOUR OF TROUBLE OUR HANDS INSTINCTIVELY SOUGHT FOR EACH OTHER + I HAVE MARVELLED AT IT SINCE BUT AT THE TIME IT SEEMED THE MOST NATURAL THING THAT I SHOULD GO OUT TO HER SO AND AS SHE HAS OFTEN TOLD ME THERE WAS IN HER ALSO THE INSTINCT TO TURN TO ME FOR COMFORT AND PROTECTION + SO WE STOOD HAND IN HAND LIKE TWO CHILDREN AND THERE WAS PEACE IN OUR HEARTS FOR ALL THE DARK THINGS THAT SURROUNDED US + WHAT A STRANGE PLACE SHE SAID LOOKING ROUND + IT LOOKS AS THOUGH ALL THE MOLES IN ENGLAND HAD BEEN LET LOOSE IN IT + I HAVE SEEN SOMETHING OF THE SORT ON THE SIDE OF A HILL NEAR BALLARAT WHERE THE PROSPECTORS HAD BEEN AT WORK + QUOTE AND FROM THE SAME CAUSE QUOTE SAID HOLMES + THESE ARE THE TRACES OF THE TREASURE SEEKERS + YOU MUST REMEMBER THAT THEY WERE SIX YEARS LOOKING FOR IT + NO WONDER THAT THE GROUNDS LOOK LIKE A GRAVEL PIT + AT THAT MOMENT THE DOOR OF THE HOUSE BURST OPEN AND THADDEUS SHOLTO CAME RUNNING OUT WITH HIS HANDS THROWN FORWARD AND TERROR IN HIS EYES + THERE IS SOMETHING AMISS WITH BARTHOLOMEW HE CRIED + I AM FRIGHTENED + MY NERVES CANNOT STAND IT + HE WAS INDEED HALF BLUBBERING WITH FEAR AND HIS TWITCHING FEEBLE FACE PEEPING OUT FROM THE GREAT ASTRAKHAN COLLAR HAD THE HELPLESS APPEALING EXPRESSION OF A TERRIFIED CHILD + QUOTE COME INTO THE HOUSE QUOTE SAID HOLMES IN HIS CRISP FIRM WAY + YES DO PLEADED THADDEUS SHOLTO + I REALLY DO NOT FEEL EQUAL TO GIVING DIRECTIONS + WE ALL FOLLOWED HIM INTO THE HOUSEKEEPER'S ROOM WHICH STOOD UPON THE LEFTHAND SIDE OF THE PASSAGE + THE OLD WOMAN WAS PACING UP AND DOWN WITH A SCARED LOOK AND RESTLESS PICKING FINGERS BUT THE SIGHT OF MISS MORSTAN APPEARED TO HAVE A SOOTHING EFFECT UPON HER + GOD BLESS YOUR SWEET CALM FACE SHE CRIED WITH A HYSTERICAL SOB + IT DOES ME GOOD TO SEE YOU + OH BUT I HAVE BEEN SORELY TRIED THIS DAY + OUR COMPANION PATTED HER THIN WORK WORN HAND AND MURMURED SOME FEW WORDS OF KINDLY WOMANLY COMFORT WHICH BROUGHT THE COLOUR BACK INTO THE OTHER'S BLOODLESS CHEEKS + QUOTE MASTER HAS LOCKED HIMSELF IN AND WILL NOT ANSWER ME QUOTE SHE EXPLAINED + ALL DAY I HAVE WAITED TO HEAR FROM HIM FOR HE OFTEN LIKES TO BE ALONE BUT AN HOUR AGO I FEARED THAT SOMETHING WAS AMISS SO I WENT UP AND PEEPED THROUGH THE KEYHOLE + YOU MUST GO UP MR. THADDEUS YOU MUST GO UP AND LOOK FOR YOURSELF + I HAVE SEEN MR. BARTHOLOMEW SHOLTO IN JOY AND IN SORROW FOR TEN LONG YEARS BUT I NEVER SAW HIM WITH SUCH A FACE ON HIM AS THAT + SHERLOCK HOLMES TOOK THE LAMP AND LED THE WAY FOR THADDEUS SHOLTO'S TEETH WERE CHATTERING IN HIS HEAD + SO SHAKEN WAS HE THAT I HAD TO PASS MY HAND UNDER HIS ARM AS WE WENT UP THE STAIRS FOR HIS KNEES WERE TREMBLING UNDER HIM + TWICE AS WE ASCENDED HOLMES WHIPPED HIS LENS OUT OF HIS POCKET AND CAREFULLY EXAMINED MARKS WHICH APPEARED TO ME TO BE MERE SHAPELESS SMUDGES OF DUST UPON THE COCOANUT MATTING WHICH SERVED AS A STAIR CARPET + HE WALKED SLOWLY FROM STEP TO STEP HOLDING THE LAMP LOW AND SHOOTING KEEN GLANCES TO RIGHT AND LEFT + MISS MORSTAN HAD REMAINED BEHIND WITH THE FRIGHTENED HOUSEKEEPER + THE THIRD FLIGHT OF STAIRS ENDED IN A STRAIGHT PASSAGE OF SOME LENGTH WITH A GREAT PICTURE IN INDIAN TAPESTRY UPON THE RIGHT OF IT AND THREE DOORS UPON THE LEFT + HOLMES ADVANCED ALONG IT IN THE SAME SLOW AND METHODICAL WAY WHILE WE KEPT CLOSE AT HIS HEELS WITH OUR LONG BLACK SHADOWS STREAMING BACKWARD DOWN THE CORRIDOR + THE THIRD DOOR WAS THAT WHICH WE WERE SEEKING + HOLMES KNOCKED WITHOUT RECEIVING ANY ANSWER AND THEN TRIED TO TURN THE HANDLE AND FORCE IT OPEN + IT WAS LOCKED ON THE INSIDE HOWEVER AND BY A BROAD AND POWERFUL BOLT AS WE COULD SEE WHEN WE SET OUR LAMP UP AGAINST IT + THE KEY BEING TURNED HOWEVER THE HOLE WAS NOT ENTIRELY CLOSED + SHERLOCK HOLMES BENT DOWN TO IT AND INSTANTLY ROSE AGAIN WITH A SHARP INTAKING OF THE BREATH + THERE IS SOMETHING DEVILISH IN THIS WATSON SAID HE MORE MOVED THAN I HAD EVER BEFORE SEEN HIM + WHAT DO YOU MAKE OF IT + I STOOPED TO THE HOLE AND RECOILED IN HORROR + MOONLIGHT WAS STREAMING INTO THE ROOM AND IT WAS BRIGHT WITH A VAGUE AND SHIFTY RADIANCE + LOOKING STRAIGHT AT ME AND SUSPENDED AS IT WERE IN THE AIR FOR ALL BENEATH WAS IN SHADOW THERE HUNG A FACE THE VERY FACE OF OUR COMPANION THADDEUS + THERE WAS THE SAME HIGH SHINING HEAD THE SAME CIRCULAR BRISTLE OF RED HAIR THE SAME BLOODLESS COUNTENANCE + THE FEATURES WERE SET HOWEVER IN A HORRIBLE SMILE A FIXED AND UNNATURAL GRIN WHICH IN THAT STILL AND MOONLIT ROOM WAS MORE JARRING TO THE NERVES THAN ANY SCOWL OR CONTORTION + SO LIKE WAS THE FACE TO THAT OF OUR LITTLE FRIEND THAT I LOOKED ROUND AT HIM TO MAKE SURE THAT HE WAS INDEED WITH US + THEN I RECALLED TO MIND THAT HE HAD MENTIONED TO US THAT HIS BROTHER AND HE WERE TWINS + THIS IS TERRIBLE + I SAID TO HOLMES + QUOTE WHAT IS TO BE DONE QUOTE + THE DOOR MUST COME DOWN HE ANSWERED AND SPRINGING AGAINST IT HE PUT ALL HIS WEIGHT UPON THE LOCK + IT CREAKED AND GROANED BUT DID NOT YIELD + TOGETHER WE FLUNG OURSELVES UPON IT ONCE MORE AND THIS TIME IT GAVE WAY WITH A SUDDEN SNAP AND WE FOUND OURSELVES WITHIN BARTHOLOMEW SHOLTO'S CHAMBER + IT APPEARED TO HAVE BEEN FITTED UP AS A CHEMICAL LABORATORY + A DOUBLE LINE OF GLASS STOPPERED BOTTLES WAS DRAWN UP UPON THE WALL OPPOSITE THE DOOR AND THE TABLE WAS LITTERED OVER WITH BUNSEN BURNERS TEST TUBES AND RETORTS + IN THE CORNERS STOOD CARBOYS OF ACID IN WICKER BASKETS + ONE OF THESE APPEARED TO LEAK OR TO HAVE BEEN BROKEN FOR A STREAM OF DARK COLOURED LIQUID HAD TRICKLED OUT FROM IT AND THE AIR WAS HEAVY WITH A PECULIARLY PUNGENT TARLIKE ODOUR + A SET OF STEPS STOOD AT ONE SIDE OF THE ROOM IN THE MIDST OF A LITTER OF LATH AND PLASTER AND ABOVE THEM THERE WAS AN OPENING IN THE CEILING LARGE ENOUGH FOR A MAN TO PASS THROUGH + AT THE FOOT OF THE STEPS A LONG COIL OF ROPE WAS THROWN CARELESSLY TOGETHER + BY THE TABLE IN A WOODEN ARMCHAIR THE MASTER OF THE HOUSE WAS SEATED ALL IN A HEAP WITH HIS HEAD SUNK UPON HIS LEFT SHOULDER AND THAT GHASTLY INSCRUTABLE SMILE UPON HIS FACE + HE WAS STIFF AND COLD AND HAD CLEARLY BEEN DEAD MANY HOURS + IT SEEMED TO ME THAT NOT ONLY HIS FEATURES BUT ALL HIS LIMBS WERE TWISTED AND TURNED IN THE MOST FANTASTIC FASHION + BY HIS HAND UPON THE TABLE THERE LAY A PECULIAR INSTRUMENT A BROWN CLOSE GRAINED STICK WITH A STONE HEAD LIKE A HAMMER RUDELY LASHED ON WITH COARSE TWINE + BESIDE IT WAS A TORN SHEET OF NOTE PAPER WITH SOME WORDS SCRAWLED UPON IT + HOLMES GLANCED AT IT AND THEN HANDED IT TO ME + ' YOU SEE HE SAID WITH A SIGNIFICANT RAISING OF THE EYEBROWS + IN THE LIGHT OF THE LANTERN I READ WITH A THRILL OF HORROR THE SIGN OF THE FOUR + IN GOD'S NAME WHAT DOES IT ALL MEAN + I ASKED + IT MEANS MURDER SAID HE STOOPING OVER THE DEAD MAN + QUOTE AH + I EXPECTED IT + LOOK HERE + HE POINTED TO WHAT LOOKED LIKE A LONG DARK THORN STUCK IN THE SKIN JUST ABOVE THE EAR + IT LOOKS LIKE A THORN SAID I + IT IS A THORN + YOU MAY PICK IT OUT + BUT BE CAREFUL FOR IT IS POISONED + I TOOK IT UP BETWEEN MY FINGER AND THUMB + IT CAME AWAY FROM THE SKIN SO READILY THAT HARDLY ANY MARK WAS LEFT BEHIND + ONE TINY SPECK OF BLOOD SHOWED WHERE THE PUNCTURE HAD BEEN + THIS IS ALL AN INSOLUBLE MYSTERY TO ME SAID I. IT GROWS DARKER INSTEAD OF CLEARER + QUOTE ON THE CONTRARY QUOTE HE ANSWERED QUOTE IT CLEARS EVERY INSTANT + I ONLY REQUIRE A FEW MISSING LINKS TO HAVE AN ENTIRELY CONNECTED CASE + WE HAD ALMOST FORGOTTEN OUR COMPANION'S PRESENCE SINCE WE ENTERED THE CHAMBER + HE WAS STILL STANDING IN THE DOORWAY THE VERY PICTURE OF TERROR WRINGING HIS HANDS AND MOANING TO HIMSELF + SUDDENLY HOWEVER HE BROKE OUT INTO A SHARP QUERULOUS CRY + THE TREASURE IS GONE HE SAID + THEY HAVE ROBBED HIM OF THE TREASURE + THERE IS THE HOLE THROUGH WHICH WE LOWERED IT + I HELPED HIM TO DO IT + I WAS THE LAST PERSON WHO SAW HIM + I LEFT HIM HERE LAST NIGHT AND I HEARD HIM LOCK THE DOOR AS I CAME DOWNSTAIRS + WHAT TIME WAS THAT + QUOTE IT WAS TEN O'CLOCK + AND NOW HE IS DEAD AND THE POLICE WILL BE CALLED IN AND I SHALL BE SUSPECTED OF HAVING HAD A HAND IN IT + OH YES I AM SURE I SHALL + BUT YOU DON'T THINK SO GENTLEMEN + SURELY YOU DON'T THINK THAT IT WAS L. + IS IT LIKELY THAT I WOULD HAVE BROUGHT YOU HERE IF IT WERE L. + OH DEAR OH DEAR + I KNOW THAT I SHALL GO MAD + HE JERKED HIS ARMS AND STAMPED HIS FEET IN A KIND OF CONVULSIVE FRENZY + YOU HAVE NO REASON FOR FEAR MR. SHOLTO SAID HOLMES KINDLY PUTTING HIS HAND UPON HIS SHOULDER TAKE MY ADVICE AND DRIVE DOWN TO THE STATION TO REPORT THE MATTER TO THE POLICE + OFFER TO ASSIST THEM IN EVERY WAY + WE SHALL WAIT HERE UNTIL YOUR RETURN + THE LITTLE MAN OBEYED IN A HALF STUPEFIED FASHION AND WE HEARD HIM STUMBLING DOWN THE STAIRS IN THE DARK + CHAPTER SIX SHERLOCK HOLMES GIVES A DEMONSTRATION + NOW WATSON SAID HOLMES RUBBING HIS HANDS WE HAVE HALF AN HOUR TO OURSELVES + LET US MAKE GOOD USE OF IT + MY CASE IS AS I HAVE TOLD YOU ALMOST COMPLETE BUT WE MUST NOT ERR ON THE SIDE OF OVERCONFIDENCE + SIMPLE AS THE CASE SEEMS NOW THERE MAY BE SOMETHING DEEPER UNDERLYING IT + QUOTE SIMPLE QUOTE + I EJACULATED + SURELY SAID HE WITH SOMETHING OF THE AIR OF A CLINICAL PROFESSOR EXPOUNDING TO HIS CLASS + JUST SIT IN THE CORNER THERE THAT YOUR FOOTPRINTS MAY NOT COMPLICATE MATTERS + NOW TO WORK + IN THE FIRST PLACE HOW DID THESE FOLK COME AND HOW DID THEY GO + THE DOOR HAS NOT BEEN OPENED SINCE LAST NIGHT + HOW OF THE WINDOW + HE CARRIED THE LAMP ACROSS TO IT MUTTERING HIS OBSERVATIONS ALOUD THE WHILE BUT ADDRESSING THEM TO HIMSELF RATHER THAN TO ME + WINDOW IS SNIBBED ON THE INNER SIDE + FRAME WORK IS SOLID + NO HINGES AT THE SIDE + LET US OPEN IT + NO WATER PIPE NEAR + ROOF QUITE OUT OF REACH + YET A MAN HAS MOUNTED BY THE WINDOW + IT RAINED A LITTLE LAST NIGHT + HERE IS THE PRINT OF A FOOT IN MOULD UPON THE SILL + AND HERE IS A CIRCULAR MUDDY MARK AND HERE AGAIN UPON THE FLOOR AND HERE AGAIN BY THE TABLE + SEE BERE WATSON + THIS IS REALLY A VERY PRETTY DEMONSTRATION + I LOOKED AT THE ROUND WELL DEFINED MUDDY DISCS + QUOTE THAT IS NOT A FOOT MARK QUOTE SAID I + IT IS SOMETHING MUCH MORE VALUABLE TO US + IT IS THE IMPRESSION OF A WOODEN STUMP + YOU SEE HERE ON THE SILL IS THE BOOTMARK A HEAVY BOOT WITH A BROAD METAL HEEL AND BESIDE IT IS THE MARK OF THE TIMBER TOE + IT IS THE WOODEN LEGGED MAN + QUITE SO + BUT THERE HAS BEEN SOMEONE ELSE A VERY ABLE AND EFFICIENT ALLY + COULD YOU SCALE THAT WALL DOCTOR + I LOOKED OUT OF THE OPEN WINDOW + THE MOON STILL SHONE BRIGHTIY ON THAT ANGLE OF THE HOUSE + WE WERE A GOOD SIXTY FEET FROM THE GROUND AND LOOK WHERE I WOULD I COULD SEE NO FOOTHOLD NOR AS MUCH AS A CREVICE IN THE BRICKWORK + QUOTE IT IS ABSOLUTELY IMPOSSIBLE QUOTE I ANSWERED + WITHOUT AID IT IS SO + BUT SUPPOSE YOU HAD A FRIEND UP HERE WHO LOWERED YOU THIS GOOD STOUT ROPE WHICH I SEE IN THE CORNER SECURING ONE END OF IT TO THIS GREAT HOOK IN THE WALL + THEN I THINK IF YOU WERE AN ACTIVE MAN YOU MIGHT SWARM UP WOODEN LEG AND ALL + YOU WOULD DEPART OF COURSE IN THE SAME FASHION AND YOUR ALLY WOULD DRAW UP THE ROPE UNTIE IT FROM THE HOOK SHUT THE WINDOW SNIB IT ON THE INSIDE AND GET AWAY IN THE WAY THAT HE ORIGINALLY CAME + AS A MINOR POINT IT MAY BE NOTED HE CONTINUED FINGERING THE ROPE THAT OUR WOODEN LEGGED FRIEND THOUGH A FAIR CLIMBER WAS NOT A PROFESSIONAL SAILOR + HIS HANDS WERE FAR FROM HORNY + MY LENS DISCLOSES MORE THAN ONE BLOODMARK ESPECIALLY TOWARDS THE END OF THE ROPE FROM WHICH I GATHER THAT HE SLIPPED DOWN WITH SUCH VELOCITY THAT HE TOOK THE SKIN OFF HIS HANDS + THIS IS ALL VERY WELL SAID I BUT THE THING BECOMES MORE UNINTELLIGIBLE THAN EVER + HOW ABOUT THIS MYSTERIOUS ALLY + HOW CAME HE INTO THE ROOM + QUOTE YES THE ALLY QUOTE REPEATED HOLMES PENSIVELY + THERE ARE FEATURES OF INTEREST ABOUT THIS ALLY + HE LIFTS THE CASE FROM THE REGIONS OF THE COMMONPLACE + I FANCY THAT THIS ALLY BREAKS FRESH GROUND IN THE ANNALS OF CRIME IN THIS COUNTRY THOUGH PARALLEL CASES SUGGEST THEMSELVES FROM INDIA AND IF MY MEMORY SERVES ME FROM SENEGAMBIA + HOW CAME HE THEN + I REITERATED + THE DOOR IS LOCKED THE WINDOW IS INACCESSIBLE + WAS IT THROUGH THE CHIMNEY + QUOTE THE GRATE IS MUCH TOO SMALL QUOTE HE ANSWERED + I HAD ALREADY CONSIDERED THAT POSSIBILITY + HOW THEN + I PERSISTED + YOU WILL NOT APPLY MY PRECEPT HE SAID SHAKING HIS HEAD + HOW OFTEN HAVE I SAID TO YOU THAT WHEN YOU HAVE ELIMINATED THE IMPOSSIBLE WHATEVER REMAINS HOWEVER IMPROBABLE MUST BE THE TRUTH + WE KNOW THAT HE DID NOT COME THROUGH THE DOOR THE WINDOW OR THE CHIMNEY + WE ALSO KNOW THAT HE COULD NOT HAVE BEEN CONCEALED IN THE ROOM AS THERE IS NO CONCEALMENT POSSIBLE + WHEN THEN DID HE COME + QUOTE HE CAME THROUGH THE HOLE IN THE ROOF QUOTE + I CRIED + OF COURSE HE DID + HE MUST HAVE DONE SO + IF YOU WILL HAVE THE KINDNESS TO HOLD THE LAMP FOR ME WE SHALL NOW EXTEND OUR RESEARCHES TO THE ROOM ABOVE THE SECRET ROOM IN WHICH THE TREASURE WAS FOUND + HE MOUNTED THE STEPS AND SEIZING A RAFTER WITH EITHER HAND HE SWUNG HIMSELF UP INTO THE GARRET + THEN LYING ON HIS FACE HE REACHED DOWN FOR THE LAMP AND HELD IT WHILE I FOLLOWED HIM + THE CHAMBER IN WHICH WE FOUND OURSELVES WAS ABOUT TEN FEET ONE WAY AND SIX THE OTHER + THE FLOOR WAS FORMED BY THE RAFTERS WITH THIN LATH AND PLASTER BETWEEN SO THAT IN WALKING ONE HAD TO STEP FROM BEAM TO BEAM + THE ROOF RAN UP TO AN APEX AND WAS EVIDENTLY THE INNER SHELL OF THE TRUE ROOF OF THE HOUSE + THERE WAS NO FURNITURE OF ANY SORT AND THE ACCUMULATED DUST OF YEARS LAY THICK UPON THE FLOOR + HERE YOU ARE YOU SEE SAID SHERLOCK HOLMES PUTTING HIS HAND AGAINST THE SLOPING WALL + THIS IS A TRAPDOOR WHICH LEADS OUT ON TO THE ROOF + I CAN PRESS IT BACK AND HERE IS THE ROOF ITSELF SLOPING AT A GENTLE ANGLE + THIS THEN IS THE WAY BY WHICH NUMBER ONE ENTERED + LET US SEE IF WE CAN FIND SOME OTHER TRACES OF HIS INDIVIDUALITY + HE HELD DOWN THE LAMP TO THE FLOOR AND AS HE DID SO I SAW FOR THE SECOND TIME THAT NIGHT A STARTLED SURPRISED LOOK COME OVER HIS FACE + FOR MYSELF AS I FOLLOWED HIS GAZE MY SKIN WAS COLD UNDER MY CLOTHES + THE FLOOR WAS COVERED THICKLY WITH THE PRINTS OF A NAKED FOOT CLEAR WELL DEFINED PERFECTLY FORMED BUT SCARCE HALF THE SIZE OF THOSE OF AN ORDINARY MAN + QUOTE HOLMES QUOTE I SAID IN A WHISPER QUOTE A CHILD HAS DONE THIS HORRID THING QUOTE + HE HAD RECOVERED HIS SELF POSSESSION IN AN INSTANT + I WAS STAGGERED FOR THE MOMENT HE SAID BUT THE THING IS QUITE NATURAL + MY MEMORY FAILED ME OR I SHOULD HAVE BEEN ABLE TO FORETELL IT + THERE IS NOTHING MORE TO BE LEARNED HERE + LET US GO DOWN + WHAT IS YOUR THEORY THEN AS TO THOSE FOOTMARKS + I ASKED EAGERLY WHEN WE HAD REGAINED THE LOWER ROOM ONCE MORE + MY DEAR WATSON TRY A LITTLE ANALYSIS YOURSELF SAID HE WITH A TOUCH OF IMPATIENCE + YOU KNOW MY METHODS + APPLY THEM AND IT WILL BE INSTRUCTIVE TO COMPARE RESULTS QUOTE + I CANNOT CONCEIVE ANYTHING WHICH WILL COVER THE FACTS I ANSWERED + IT WILL BE CLEAR ENOUGH TO YOU SOON HE SAID IN AN OFFHAND WAY + I THINK THAT THERE IS NOTHING ELSE OF IMPORTANCE HERE BUT I WILL LOOK + HE WHIPPED OUT HIS LENS AND A TAPE MEASURE AND HURRIED ABOUT THE ROOM ON HIS KNEES MEASURING COMPARING EXAMINING WITH HIS LONG THIN NOSE ONLY A FEW INCHES FROM THE PLANKS AND HIS BEADY EYES GLEAMING AND DEEP SET LIKE THOSE OF A BIRD + SO SWIFT SILENT AND FURTIVE WERE HIS MOVEMENTS LIKE THOSE OF A TRAINED BLOODHOUND PICKING OUT A SCENT THAT I COULD NOT BUT THINK WHAT A TERRIBLE CRIMINAL HE WOULD HAVE MADE HAD HE TURNED HIS ENERGY AND SAGACITY AGAINST THE LAW INSTEAD OF EXERTING THEM IN ITS DEFENCE + AS HE HUNTED ABOUT HE KEPT MUTTERING TO HIMSELF AND FINALLY HE BROKE OUT INTO A LOUD CROW OF DELIGHT + WE ARE CERTAINLY IN LUCK SAID HE + WE OUGHT TO HAVE VERY LITTLE TROUBLE NOW + NUMBER ONE HAS HAD THE MISFORTUNE TO TREAD IN THE CREOSOTE + YOU CAN SEE THE OUTLINE OF THE EDGE OF HIS SMALL FOOT HERE AT THE SIDE OF THIS EVIL SMELLING MESS + THE CARBOY HAS BEEN CRACKED YOU SEE AND THE STUFF HAS LEAKED OUT QUOTE + WHAT THEN + I ASKED + WHY WE HAVE GOT HIM THAT'S ALL SAID HE + I KNOW A DOG THAT WOULD FOLLOW THAT SCENT TO THE WORLD'S END + IF A PACK CAN TRACK A TRAILED HERRING ACROSS A SHIRE HOW FAR CAN A SPECIALLY TRAINED HOUND FOLLOW SO PUNGENT A SMELL AS THIS + IT SOUNDS LIKE A SUM IN THE RULE OF THREE + THE ANSWER SHOULD GIVE US THE BUT HALLO HERE ARE THE ACCREDITED REPRESENTATIVES OF THE LAW + HEAVY STEPS AND THE CLAMOUR OF LOUD VOICES WERE AUDIBLE FROM BELOW AND THE HALL DOOR SHUT WITH A LOUD CRASH + BEFORE THEY COME SAID HOLMES JUST PUT YOUR HAND HERE ON THIS POOR FELLOW'S ARM AND HERE ON HIS LEG + WHAT DO YOU FEEL QUOTE + THE MUSCLES ARE AS HARD AS A BOARD I ANSWERED + QUITE SO + THEY ARE IN A STATE OF EXTREME CONTRACTION FAR EXCEEDING THE USUAL RIGOR MORTIS + COUPLED WITH THIS DISTORTION OF THE FACE THIS HIPPOCRATIC SMILE OR RISUS SARDONICUS AS THE OLD WRITERS CALLED IT WHAT CONCLUSION WOULD IT SUGGEST TO YOUR MIND + DEATH FROM SOME POWERFUL VEGETABLE ALKALOID I ANSWERED SOME STRYCHNINE LIKE SUBSTANCE WHICH WOULD PRODUCE TETANUS + THAT WAS THE IDEA WHICH OCCURRED TO ME THE INSTANT I SAW THE DRAWN MUSCLES OF THE FACE + ON GETTING INTO THE ROOM I AT ONCE LOOKED FOR THE MEANS BY WHICH THE POISON HAD ENTERED THE SYSTEM + AS YOU SAW I DISCOVERED A THORN WHICH HAD BEEN DRIVEN OR SHOT WITH NO GREAT FORCE INTO THE SCALP + YOU OBSERVE THAT THE PART STRUCK WAS THAT WHICH WOULD BE TURNED TOWARDS THE HOLE IN THE CEILING IF THE MAN WERE ERECT IN HIS CHAIR + NOW EXAMINE THIS THORN QUOTE + I TOOK IT UP GINGERLY AND HELD IT IN THE LIGHT OF THE LANTERN + IT WAS LONG SHARP AND BLACK WITH A GLAZED LOOK NEAR THE POINT AS THOUGH SOME GUMMY SUBSTANCE HAD DRIED UPON IT + THE BLUNT END HAD BEEN TRIMMED AND ROUNDED OFF WITH A KNIFE + IS THAT AN ENGLISH THORN HE ASKED + NO IT CERTAINLY IS NOT + WITH ALL THESE DATA YOU SHOULD BE ABLE TO DRAW SOME JUST INFERENCE + BUT HERE ARE THE REGULARS SO THE AUXILIARY FORCES MAY BEAT A RETREAT + AS HE SPOKE THE STEPS WHICH HAD BEEN COMING NEARER SOUNDED LOUDLY ON THE PASSAGE AND A VERY STOUT PORTLY MAN IN A GRAY SUIT STRODE HEAVILY INTO THE ROOM + HE WAS RED FACED BURLY AND PLETHORIC WITH A PAIR OF VERY SMALL TWINKLING EYES WHICH LOOKED KEENLY OUT FROM BETWEEN SWOLLEN AND PUFFY POUCHES + HE WAS CLOSELY FOLLOWED BY AN INSPECTOR IN UNIFORM AND BY THE STILL PALPITATING THADDEUS SHOLTO + HERE'S A BUSINESS HE CRIED IN A MUFFLED HUSKY VOICE + QUOTE HERE'S A PRETTY BUSINESS + BUT WHO ARE ALL THESE + WHY THE HOUSE SEEMS TO BE AS FULL AS A RABBIT WARREN + I THINK YOU MUST RECOLLECT ME MR. ATHELNEY JONES SAID HOLMES QUIETLY + WHY OF COURSE I DO HE WHEEZED + IT'S MR. SHERLOCK HOLMES THE THEORIST + REMEMBER YOU + I'LL NEVER FORGET HOW YOU LECTURED US ALL ON CAUSES AND INFERENCES AND EFFECTS IN THE BISHOPGATE JEWEL CASE + IT'S TRUE YOU SET US ON THE RIGHT TRACK BUT YOU'LL OWN NOW THAT IT WAS MORE BY GOOD LUCK THAN GOOD GUIDANCE + QUOTE IT WAS A PIECE OF VERY SIMPLE REASONING QUOTE + OH COME NOW COME + NEVER BE ASHAMED TO OWN UP + BUT WHAT IS ALL THIS + BAD BUSINESS + BAD BUSINESS + STERN FACTS HERE NO ROOM FOR THEORIES + HOW LUCKY THAT I HAPPENED TO BE OUT AT NORWOOD OVER ANOTHER CASE + I WAS AT THE STATION WHEN THE MESSAGE ARRIVED + WHAT D'YOU THINK THE MAN DIED OF + OH THIS IS HARDLY A CASE FOR ME TO THEORIZE OVER SAID HOLMES DRYLY + NO NO + STILL WE CAN'T DENY THAT YOU HIT THE NAIL ON THE HEAD SOMETIMES + DEAR ME + DOOR LOCKED I UNDERSTAND + JEWELS WORTH HALF A MILLION MISSING + HOW WAS THE WINDOW + QUOTE FASTENED BUT THERE ARE STEPS ON THE SILL QUOTE + WELL WELL IF IT WAS FASTENED THE STEPS COULD HAVE NOTHING TO DO WITH THE MATTER + THAT'S COMMON SENSE + MAN MIGHT HAVE DIED IN A FIT BUT THEN THE JEWELS ARE MISSING + HA + I HAVE A THEORY + THESE FLASHES COME UPON ME AT TIMES JUST STEP OUTSIDE SERGEANT AND YOU MR. SHOLTO + YOUR FRIEND CAN REMAIN WHAT DO YOU THINK OF THIS HOLMES + SHOLTO WAS ON HIS OWN CONFESSION WITH HIS BROTHER LAST NIGHT + THE BROTHER DIED IN A FIT ON WHICH SHOLTO WALKED OFF WITH THE TREASURE + HOW'S THAT + ON WHICH THE DEAD MAN VERY CONSIDERATELY GOT UP AND LOCKED THE DOOR ON THE INSIDE + HUM + THERE'S A FLAW THERE + LET US APPLY COMMON SENSE TO THE MATTER + THIS THADDEUS SHOLTO WAS WITH HIS BROTHER THERE WAS A QUARREL SO MUCH WE KNOW + THE BROTHER IS DEAD AND THE JEWELS ARE GONE + SO MUCH ALSO WE KNOW + NO ONE SAW THE BROTHER FROM THE TIME THADDEUS LEFT HIM + HIS BED HAD NOT BEEN SLEPT IN + THADDEUS IS EVIDENTLY IN A MOST DISTURBED STATE OF MIND + HIS APPEARANCE IS WELL NOT ATTRACTIVE + YOU SEE THAT I AM WEAVING MY WEB ROUND THADDEUS + THE NET BEGINS TO CLOSE UPON HIM + QUOTE YOU ARE NOT QUITE IN POSSESSION OF THE FACTS YET QUOTE SAID HOLMES + THIS SPLINTER OF WOOD WHICH I HAVE EVERY REASON TO BELIEVE TO BE POISONED WAS IN THE MAN'S SCALP WHERE YOU STILL SEE THE MARK THIS CARD INSCRIBED AS YOU SEE IT WAS ON THE TABLE AND BESIDE IT LAY THIS RATHER CURIOUS STONE HEADED INSTRUMENT + HOW DOES ALL THAT FIT INTO YOUR THEORY + CONFIRMS IT IN EVERY RESPECT SAID THE FAT DETECTIVE POMPOUSLY + HOUSE IS FULL OF INDIAN CURIOSITIES + THADDEUS BROUGHT THIS UP AND IF THIS SPLINTER BE POISONOUS THADDEUS MAY AS WELL HAVE MADE MURDEROUS USE OF IT AS ANY OTHER MAN + THE CARD IS SOME HOCUS POCUS A BLIND AS LIKE AS NOT + THE ONLY QUESTION IS HOW DID HE DEPART + AH OF COURSE HERE IS A HOLE IN THE ROOF + WITH GREAT ACTIVITY CONSIDERING HIS BULK HE SPRANG UP THE STEPS AND SQUEEZED THROUGH INTO THE GARRET AND IMMEDIATELY AFTERWARDS WE HEARD HIS EXULTING VOICE PROCLAIMING THAT HE HAD FOUND THE TRAPDOOR + QUOTE HE CAN FIND SOMETHING QUOTE REMARKED HOLMES SHRUGGING HIS SHOULDERS QUOTE HE HAS OCCASIONAL GLIMMERINGS OF REASON L. L. N'Y A PAS DES SOTS SI INCOMMODES QUE CEUX QUI ONT DE L'ESPRIT QUOTE + YOU SEE SAID ATHELNEY JONES REAPPEARING DOWN THE STEPS AGAIN FACTS ARE BETTER THAN THEORIES AFTER ALL + MY VIEW OF THE CASE IS CONFIRMED + THERE IS A TRAPDOOR COMMUNICATING WITH THE ROOF AND IT IS PARTLY OPEN + IT WAS I WHO OPENED IT + OH INDEED + YOU DID NOTICE IT THEN + HE SEEMED A LITTLE CRESTFALLEN AT THE DISCOVERY + QUOTE WELL WHOEVER NOTICED IT IT SHOWS HOW OUR GENTLEMAN GOT AWAY + INSPECTOR + YES SIR FROM THE PASSAGE + ASK MR. SHOLTO TO STEP THIS WAY. MR. SHOLTO IT IS MY DUTY TO INFORM YOU THAT ANYTHING WHICH YOU MAY SAY WILL BE USED AGAINST YOU + I ARREST YOU IN THE QUEEN'S NAME AS BEING CONCERNED IN THE DEATH OF YOUR BROTHER + THERE NOW + DIDN'T I TELL YOU QUOTE CRIED THE POOR LITTLE MAN THROWING OUT HIS HANDS AND LOOKING FROM ONE TO THE OTHER OF US + DON'T TROUBLE YOURSELF ABOUT IT MR. SHOLTO SAID HOLMES I THINK THAT I CAN ENGAGE TO CLEAR YOU OF THE CHARGE + DON'T PROMISE TOO MUCH MR. THEORIST DON'T PROMISE TOO MUCH SNAPPED THE DETECTIVE + YOU MAY FIND IT A HARDER MATTER THAN YOU THINK + NOT ONLY WILL I CLEAR HIM MR. JONES BUT I WILL MAKE YOU A FREE PRESENT OF THE NAME AND DESCRIPTION OF ONE OF THE TWO PEOPLE WHO WERE IN THIS ROOM LAST NIGHT + HIS NAME I HAVE EVERY REASON TO BELIEVE IS JONATHAN SMALL + HE IS A POORLY EDUCATED MAN SMALL ACTIVE WITH HIS RIGHT LEG OFF AND WEARING A WOODEN STUMP WHICH IS WORN AWAY UPON THE INNER SIDE + HIS LEFT BOOT HAS A COARSE SQUARE TOED SOLE WITH AN IRON BAND ROUND THE HEEL + HE IS A MIDDLE AGED MAN MUCH SUNBURNED AND HAS BEEN A CONVICT + THESE FEW INDICATIONS MAY BE OF SOME ASSISTANCE TO YOU COUPLED WITH THE FACT THAT THERE IS A GOOD DEAL OF SKIN MISSING FROM THE PALM OF HIS HAND + THE OTHER MAN + QUOTE AH THE OTHER MAN QUOTE ASKED ATHELNEY JONES IN A SNEERING VOICE BUT IMPRESSED NONE THE LESS AS I COULD EASILY SEE BY THE PRECISION OF THE OTHER'S MANNER + IS A RATHER CURIOUS PERSON SAID SHERLOCK HOLMES TURNING UPON HIS HEEL + I HOPE BEFORE VERY LONG TO BE ABLE TO INTRODUCE YOU TO THE PAIR OF THEM + A WORD WITH YOU WATSON + HE LED ME OUT TO THE HEAD OF THE STAIR + THIS UNEXPECTED OCCURRENCE HE SAID HAS CAUSED US RATHER TO LOSE SIGHT OF THE ORIGINAL PURPOSE OF OUR JOURNEY + I HAVE JUST BEEN THINKING SO I ANSWERED IT IS NOT RIGHT THAT MISS MORSTAN SHOULD REMAIN IN THIS STRICKEN HOUSE + QUOTE NUMBER + YOU MUST ESCORT HER HOME + SHE LIVES WITH MRS. CECIL FORRESTER IN LOWER CAMBERWELL SO IT IS NOT VERY FAR + I WILL WAIT FOR YOU HERE IF YOU WILL DRIVE OUT AGAIN + OR PERHAPS YOU ARE TOO TIRED + BY NO MEANS + I DON'T THINK I COULD REST UNTIL I KNOW MORE OF THIS FANTASTIC BUSINESS + I HAVE SEEN SOMETHING OF THE ROUGH SIDE OF LIFE BUT I GIVE YOU MY WORD THAT THIS QUICK SUCCESSION OF STRANGE SURPRISES TO NIGHT HAS SHAKEN MY NERVE COMPLETELY + I SHOULD LIKE HOWEVER TO SEE THE MATTER THROUGH WITH YOU NOW THAT I HAVE GOT SO FAR + YOUR PRESENCE WILL BE OF GREAT SERVICE TO ME HE ANSWERED + WE SHALL WORK THE CASE OUT INDEPENDENTLY AND LEAVE THIS FELLOW JONES TO EXULT OVER ANY MARE'S NEST WHICH HE MAY CHOOSE TO CONSTRUCT + WHEN YOU HAVE DROPPED MISS MORSTAN I WISH YOU TO GO ON TO NUMBER THREE PINCHIN LANE DOWN NEAR THE WATER'S EDGE AT LAMBETH + THE THIRD HOUSE ON THE RIGHT HAND SIDE IS A BIRDSTUFFER'S SHERMAN IS THE NAME + YOU WILL SEE A WEASEL HOLDING A YOUNG RABBIT IN THE WINDOW + KNOCK OLD SHERMAN UP AND TELL HIM WITH MY COMPLIMENTS THAT I WANT TOBY AT ONCE + YOU WILL BRING TOBY BACK IN THE CAB WITH YOU QUOTE + A DOG I SUPPOSE + YES A QUEER MONGREL WITH A MOST AMAZING POWER OF SCENT + I WOULD RATHER HAVE TOBY'S HELP THAN THAT OF THE WHOLE DETECTIVE FORCE OF LONDON + I SHALL BRING HIM THEN SAID I. IT IS ONE NOW + I OUGHT TO BE BACK BEFORE THREE IF I CAN GET A FRESH HORSE + QUOTE AND I QUOTE SAID HOLMES QUOTE SHALL SEE WHAT I CAN LEARN FROM MRS. BERNSTONE AND FROM THE INDIAN SERVANT WHO MR. THADDEUS TELLS ME SLEEPS IN THE NEXT GARRET + THEN I SHALL STUDY THE GREAT JONES'S METHODS AND LISTEN TO HIS NOT TOO DELICATE SARCASMS WIR SIND GEWOHNT DASS DIE MENSCHEN VERHOHNEN WAS SIE NICHT VERSTEHEN + GOETHE IS ALWAYS PITHY + CHAPTER SEVEN THE EPISODE OF THE BARREL + THE POLICE HAD BROUGHT A CAB WITH THEM AND IN THIS I ESCORTED MISS MORSTAN BACK TO HER HOME + AFTER THE ANGELIC FASHION OF WOMEN SHE HAD BORNE TROUBLE WITH A CALM FACE AS LONG AS THERE WAS SOMEONE WEAKER THAN HERSELF TO SUPPORT AND I HAD FOUND HER BRIGHT AND PLACID BY THE SIDE OF THE FRIGHTENED HOUSEKEEPER LN THE CAB HOWEVER SHE FIRST TURNED FAINT AND THEN BURST INTO A PASSION OF WEEPING SO SORELY HAD SHE BEEN TRIED BY THE ADVENTURES OF THE NIGHT + SHE HAS TOLD ME SINCE THAT SHE THOUGHT ME COLD AND DISTANT UPON THAT JOURNEY + SHE LITTLE GUESSED THE STRUGGLE WITHIN MY BREAST OR THE EFFORT OF SELF RESTRAINT WHICH HELD ME BACK + MY SYMPATHIES AND MY LOVE WENT OUT TO HER EVEN AS MY HAND HAD IN THE GARDEN + I FELT THAT YEARS OF THE CONVENTIONALITIES OF LIFE COULD NOT TEACH ME TO KNOW HER SWEET BRAVE NATURE AS HAD THIS ONE DAY OF STRANGE EXPERIENCES + YET THERE WERE TWO THOUGHTS WHICH SEALED THE WORDS OF AFFECTION UPON MY LIPS + SHE WAS WEAK AND HELPLESS SHAKEN IN MIND AND NERVE + IT WAS TO TAKE HER AT A DISADVANTAGE TO OBTRUDE LOVE UPON HER AT SUCH A TIME + WORSE STILL SHE WAS RICH + IF HOLMES'S RESEARCHES WERE SUCCESSFUL SHE WOULD BE AN HEIRESS + WAS IT FAIR WAS IT HONOURABLE THAT A HALF PAY SURGEON SHOULD TAKE SUCH ADVANTAGE OF AN INTIMACY WHICH CHANCE HAD BROUGHT ABOUT + MIGHT SHE NOT LOOK UPON ME AS A MERE VULGAR FORTUNE SEEKER + I COULD NOT BEAR TO RISK THAT SUCH A THOUGHT SHOULD CROSS HER MIND + THIS AGRA TREASURE INTERVENED LIKE AN IMPASSABLE BARRIER BETWEEN US + IT WAS NEARLY TWO O'CLOCK WHEN WE REACHED MRS. CECIL FORRESTER'S + THE SERVANTS HAD RETIRED HOURS AGO BUT MRS. FORRESTER HAD BEEN SO INTERESTED BY THE STRANGE MESSAGE WHICH MISS MORSTAN HAD RECEIVED THAT SHE HAD SAT UP IN THE HOPE OF HER RETURN + SHE OPENED THE DOOR HERSELF A MIDDLE AGED GRACEFUL WOMAN AND IT GAVE ME JOY TO SEE HOW TENDERLY HER ARM STOLE ROUND THE OTHER'S WAIST AND HOW MOTHERLY WAS THE VOICE IN WHICH SHE GREETED HER + SHE WAS CLEARLY NO MERE PAID DEPENDANT BUT AN HONOURED FRIEND + I WAS INTRODUCED AND MRS. FORRESTER EARNESTLY BEGGED ME TO STEP IN AND TELL HER OUR ADVENTURES + I EXPLAINED HOWEVER THE IMPORTANCE OF MY ERRAND AND PROMISED FAITHFULLY TO CALL AND REPORT ANY PROGRESS WHICH WE MIGHT MAKE WITH THE CASE + AS WE DROVE AWAY I STOLE A GLANCE BACK AND I STILL SEEM TO SEE THAT LITTLE GROUP ON THE STEP THE TWO GRACEFUL CLINGING FIGURES THE HALF OPENED DOOR THE HALL LIGHT SHINING THROUGH STAINED GLASS THE BAROMETER AND THE BRIGHT STAIR RODS + IT WAS SOOTHING TO CATCH EVEN THAT PASSING GLIMPSE OF A TRANQUIL ENGLISH HOME IN THE MIDST OF THE WILD DARK BUSINESS WHICH HAD ABSORBED US + AND THE MORE I THOUGHT OF WHAT HAD HAPPENED THE WILDER AND DARKER IT GREW + I REVIEWED THE WHOLE EXTRAORDINARY SEQUENCE OF EVENTS AS I RATTLED ON THROUGH THE SILENT GAS LIT STREETS + THERE WAS THE ORIGINAL PROBLEM THAT AT LEAST WAS PRETTY CLEAR NOW + THE DEATH OF CAPTAIN MORSTAN THE SENDING OF THE PEARLS THE ADVERTISEMENT THE LETTER WE HAD HAD LIGHT UPON ALL THOSE EVENTS + THEY HAD ONLY LED US HOWEVER TO A DEEPER AND FAR MORE TRAGIC MYSTERY + THE INDIAN TREASURE THE CURIOUS PLAN FOUND AMONG MORSTAN'S BAGGAGE THE STRANGE SCENE AT MAJOR SHOLTO'S DEATH THE REDISCOVERY OF THE TREASURE IMMEDIATELY FOLLOWED BY THE MURDER OF THE DISCOVERER THE VERY SINGULAR ACCOMPANIMENTS TO THE CRIME THE FOOTSTEPS THE REMARKABLE WEAPONS THE WORDS UPON THE CARD CORRESPONDING WITH THOSE UPON CAPTAIN MORSTAN'S CHART HERE WAS INDEED A LABYRINTH IN WHICH A MAN LESS SINGULARLY ENDOWED THAN MY FELLOW LODGER MIGHT WELL DESPAIR OF EVER FINDING THE CLUE + PINCHIN LANE WAS A ROW OF SHABBY TWO STORIED BRICK HOUSES IN THE LOWER QUARTER OF LAMBETH + I HAD TO KNOCK FOR SOME TIME AT NUMBER THREE BEFORE I COULD MAKE ANY IMPRESSION + AT LAST HOWEVER THERE WAS THE GLINT OF A CANDLE BEHIND THE BLIND AND A FACE LOOKED OUT AT THE UPPER WINDOW + GO ON YOU DRUNKEN VAGABOND SAID THE FACE + IF YOU KICK UP ANY MORE ROW I'LL OPEN THE KENNELS AND LET OUT FORTY THREE DOGS UPON YOU + IF YOU'LL LET ONE OUT IT'S JUST WHAT I HAVE COME FOR SAID I + QUOTE GO ON QUOTE YELLED THE VOICE + SO HELP ME GRACIOUS I HAVE A WIPER IN THIS BAG AND I'LL DROP IT ON YOUR EAD IF YOU DON'T HOOK IT + BUT I WANT A DOG I CRIED + I WON'T BE ARGUED WITH SHOUTED MR. SHERMAN + NOW STAND CLEAR FOR WHEN I SAY THREE DOWN GOES THE WIPER + MR. SHERLOCK HOLMES I BEGAN BUT THE WORDS HAD A MOST MAGICAL EFFECT FOR THE WINDOW INSTANTLY SLAMMED DOWN AND WITHIN A MINUTE THE DOOR WAS UNBARRED AND OPEN + MR. SHERMAN WAS A LANKY LEAN OLD MAN WITH STOOPING SHOULDERS A STRINGY NECK AND BLUE TINTED GLASSES + QUOTE A FRIEND OF MR. SHERLOCK IS ALWAYS WELCOME QUOTE SAID HE + STEP IN SIR + KEEP CLEAR OF THE BADGER FOR HE BITES + AH NAUGHTY NAUGHTY WOULD YOU TAKE A NIP AT THE GENTLEMAN + THIS TO A STOAT WHICH THRUST ITS WICKED HEAD AND RED EYES BETWEEN THE BARS OF ITS CAGE + DON'T MIND THAT SIR IT'S ONLY A SLOWWORM + IT HAIN'T GOT NO FANGS SO I GIVES IT THE RUN O' THE ROOM FOR IT KEEPS THE BEETLES DOWN + YOU MUST NOT MIND MY BEIN' JUST A LITTLE SHORT WI YOU AT FIRST FOR I'M GUYED AT BY THE CHILDREN AND THERE'S MANY A ONE JUST COMES DOWN THIS LANE TO KNOCK ME UP + WHAT WAS IT THAT MR. SHERLOCK HOLMES WANTED SIR + HE WANTED A DOG OF YOURS + QUOTE AH THAT WOULD BE TOBY QUOTE + YES TOBY WAS THE NAME + TOBY LIVES AT NUMBER SEVEN ON THE LEFT HERE + HE MOVED SLOWLY FORWARD WITH HIS CANDLE AMONG THE QUEER ANIMAL FAMILY WHICH HE HAD GATHERED ROUND HIM + IN THE UNCERTAIN SHADOWY LIGHT I COULD SEE DIMLY THAT THERE WERE GLANCING GLIMMERING EYES PEEPING DOWN AT US FROM EVERY CRANNY AND CORNER + EVEN THE RAFTERS ABOVE OUR HEADS WERE LINED BY SOLEMN FOWLS WHO LAZILY SHIFTED THEIR WEIGHT FROM ONE LEG TO THE OTHER AS OUR VOICES DISTURBED THEIR SLUMBERS + TOBY PROVED TO BE AN UGLY LONG HAIRED LOP EARED CREATURE HALF SPANIEL AND HALF LURCHER BROWN AND WHITE IN COLOUR WITH A VERY CLUMSY WADDLING GAIT + IT ACCEPTED AFTER SOME HESITATION A LUMP OF SUGAR WHICH THE OLD NATURALIST HANDED TO ME AND HAVING THUS SEALED AN ALLIANCE IT FOLLOWED ME TO THE CAB AND MADE NO DIFFICULTIES ABOUT ACCOMPANYING ME + IT HAD JUST STRUCK THREE ON THE PALACE CLOCK WHEN I FOUND MYSELF BACK ONCE MORE AT PONDICHERRY LODGE + THE EX PRIZE FIGHTER MCMURDO HAD I FOUND BEEN ARRESTED AS AN ACCESSORY AND BOTH HE AND MR. SHOLTO HAD BEEN MARCHED OFF TO THE STATION + TWO CONSTABLES GUARDED THE NARROW GATE BUT THEY ALLOWED ME TO PASS WITH THE DOG ON MY MENTIONING THE DETECTIVE'S NAME + HOLMES WAS STANDING ON THE DOORSTEP WITH HIS HANDS IN HIS POCKETS SMOKING HIS PIPE + AH YOU HAVE HIM THERE SAID HE + GOOD DOG THEN + ATHELNEY JONES HAS GONE + WE HAVE HAD AN IMMENSE DISPLAY OF ENERGY SINCE YOU LEFT + HE HAS ARRESTED NOT ONLY FRIEND THADDEUS BUT THE GATEKEEPER THE HOUSEKEEPER AND THE INDIAN SERVANT + WE HAVE THE PLACE TO OURSELVES BUT FOR A SERGEANT UPSTAIRS + LEAVE THE DOG HERE AND COME UP + WE TIED TOBY TO THE HALL TABLE AND REASCENDED THE STAIRS + THE ROOM WAS AS WE HAD LEFT IT SAVE THAT A SHEET HAD BEEN DRAPED OVER THE CENTRAL FIGURE + A WEARY LOOKING POLICE SERGEANT RECLINED IN THE CORNER + QUOTE LEND ME YOUR BULL'S EYE SERGEANT QUOTE SAID MY COMPANION + NOW TIE THIS BIT OF CARD ROUND MY NECK SO AS TO HANG IT IN FRONT OF ME + THANK YOU + NOW I MUST KICK OFF MY BOOTS AND STOCKINGS + JUST YOU CARRY THEM DOWN WITH YOU WATSON + I AM GOING TO DO A LITTLE CLIMBING + AND DIP MY HANDKERCHIEF INTO THE CREOSOTE + THAT WILL DO + NOW COME UP INTO THE GARRET WITH ME FOR A MOMENT + WE CLAMBERED UP THROUGH THE HOLE + HOLMES TURNED HIS LIGHT ONCE MORE UPON THE FOOTSTEPS IN THE DUST + I WISH YOU PARTICULARLY TO NOTICE THESE FOOTMARKS HE SAID + DO YOU OBSERVE ANYTHING NOTEWORTHY ABOUT THEM + THEY BELONG I SAID TO A CHILD OR A SMALL WOMAN + QUOTE APART FROM THEIR SIZE THOUGH + IS THERE NOTHING ELSE + THEY APPEAR TO BE MUCH AS OTHER FOOTMARKS + NOT AT ALL + LOOK HERE + THIS IS THE PRINT OF A RIGHT FOOT IN THE DUST + NOW I MAKE ONE WITH MY NAKED FOOT BESIDE IT + WHAT IS THE CHIEF DIFFERENCE + YOUR TOES ARE ALL CRAMPED TOGETHER + THE OTHER PRINT HAS EACH TOE DISTINCTLY DIVIDED QUOTE + QUITE SO + THAT IS THE POINT + BEAR THAT IN MIND + NOW WOULD YOU KINDLY STEP OVER TO THAT FLAP WINDOW AND SMELL THE EDGE OF THE WOODWORK + I SHALL STAY OVER HERE AS I HAVE THIS HANDKERCHIEF IN MY HAND + I DID AS HE DIRECTED AND WAS INSTANTLY CONSCIOUS OF A STRONG TARRY SMELL + THAT IS WHERE HE PUT HIS FOOT IN GETTING OUT + IF YOU CAN TRACE HIM I SHOULD THINK THAT TOBY WILL HAVE NO DIFFICULTY + NOW RUN DOWNSTAIRS LOOSE THE DOG AND LOOK OUT FOR BLONDIN + BY THE TIME THAT I GOT OUT INTO THE GROUNDS SHERLOCK HOLMES WAS ON THE ROOF AND I COULD SEE HIM LIKE AN ENORMOUS GLOWWORM CRAWLING VERY SLOWLY ALONG THE RIDGE + I LOST SIGHT OF HIM BEHIND A STACK OF CHIMNEYS BUT HE PRESENTLY REAPPEARED AND THEN VANISHED ONCE MORE UPON THE OPPOSITE SIDE + WHEN I MADE MY WAY ROUND THERE I FOUND HIM SEATED AT ONE OF THE CORNER EAVES + THAT YOU WATSON HE CRIED + QUOTE YES QUOTE + THIS IS THE PLACE + WHAT IS THAT BLACK THING DOWN THERE + A WATER BARREL + TOP ON IT + YES + QUOTE NO SIGN OF A LADDER QUOTE + NUMBER + CONFOUND THE FELLOW + IT'S A MOST BREAKNECK PLACE + I OUGHT TO BE ABLE TO COME DOWN WHERE HE COULD CLIMB UP + THE WATER PIPE FEELS PRETTY FIRM + HERE GOES ANYHOW + THERE WAS A SCUFFLING OF FEET AND THE LANTERN BEGAN TO COME STEADILY DOWN THE SIDE OF THE WALL + THEN WITH A LIGHT SPRING HE CAME ON TO THE BARREL AND FROM THERE TO THE EARTH + IT WAS EASY TO FOLLOW HIM HE SAID DRAWING ON HIS STOCKINGS AND BOOTS + TILES WERE LOOSENED THE WHOLE WAY ALONG AND IN HIS HURRY HE HAD DROPPED THIS + IT CONFIRMS MY DIAGNOSIS AS YOU DOCTORS EXPRESS IT QUOTE + THE OBJECT WHICH HE HELD UP TO ME WAS A SMALL POCKET OR POUCH WOVEN OUT OF COLOURED GRASSES AND WITH A FEW TAWDRY BEADS STRUNG ROUND IT + IN SHAPE AND SIZE IT WAS NOT UNLIKE A CIGARETTE CASE + INSIDE WERE HALF A DOZEN SPINES OF DARK WOOD SHARP AT ONE END AND ROUNDED AT THE OTHER LIKE THAT WHICH HAD STRUCK BARTHOLOMEW SHOLTO + THEY ARE HELLISH THINGS SAID HE + LOOK OUT THAT YOU DON'T PRICK YOURSELF + I'M DELIGHTED TO HAVE THEM FOR THE CHANCES ARE THAT THEY ARE ALL HE HAS + THERE IS THE LESS FEAR OF YOU OR ME FINDING ONE IN OUR SKIN BEFORE LONG + I WOULD SOONER FACE A MARTINI BULLET MYSELF + ARE YOU GAME FOR A SIX MILE TRUDGE WATSON + CERTAINLY I ANSWERED + YOUR LEG WILL STAND IT + QUOTE OH YES QUOTE + HERE YOU ARE DOGGY + GOOD OLD TOBY + SMELL IT TOBY SMELL IT + HE PUSHED THE CREOSOTE HANDKERCHIEF UNDER THE DOG'S NOSE WHILE THE CREATURE STOOD WITH ITS FLUFFY LEGS SEPARATED AND WITH A MOST COMICAL COCK TO ITS HEAD LIKE A CONNOISSEUR SNIFFING THE BOUQUET OF A FAMOUS VINTAGE + HOLMES THEN THREW THE HANDKERCHIEF TO A DISTANCE FASTENED A STOUT CORD TO THE MONGREL'S COLLAR AND LED HIM TO THE FOOT OF THE WATER BARREL + THE CREATURE INSTANTLY BROKE INTO A SUCCESSION OF HIGH TREMULOUS YELPS AND WITH HIS NOSE ON THE GROUND AND HIS TAIL IN THE AIR PATTERED OFF UPON THE TRAIL AT A PACE WHICH STRAINED HIS LEASH AND KEPT US AT THE TOP OF OUR SPEED + THE EAST HAD BEEN GRADUALLY WHITENING AND WE COULD NOW SEE SOME DISTANCE IN THE COLD GRAY LIGHT + THE SQUARE MASSIVE HOUSE WITH ITS BLACK EMPTY WINDOWS AND HIGH BARE WALLS TOWERED UP SAD AND FORLORN BEHIND US + OUR COURSE LED RIGHT ACROSS THE GROUNDS IN AND OUT AMONG THE TRENCHES AND PITS WITH WHICH THEY WERE SCARRED AND INTERSECTED + THE WHOLE PLACE WITH ITS SCATTERED DIRT HEAPS AND ILL GROWN SHRUBS HAD A BLIGHTED ILL OMENED LOOK WHICH HARMONIZED WITH THE BLACK TRAGEDY WHICH HUNG OVER IT + ON REACHING THE BOUNDARY WALL TOBY RAN ALONG WHINING EAGERLY UNDERNEATH ITS SHADOW AND STOPPED FINALLY IN A CORNER SCREENED BY A YOUNG BEECH + WHERE THE TWO WALLS JOINED SEVERAL BRICKS HAD BEEN LOOSENED AND THE CREVICES LEFT WERE WORN DOWN AND ROUNDED UPON THE LOWER SIDE AS THOUGH THEY HAD FREQUENTLY BEEN USED AS A LADDER + HOLMES CLAMBERED UP AND TAKING THE DOG FROM ME HE DROPPED IT OVER UPON THE OTHER SIDE + THERE'S THE PRINT OF WOODEN LEG'S HAND HE REMARKED AS I MOUNTED UP BESIDE HIM + YOU SEE THE SLIGHT SMUDGE OF BLOOD UPON THE WHITE PLASTER + WHAT A LUCKY THING IT IS THAT WE HAVE HAD NO VERY HEAVY RAIN SINCE YESTERDAY + THE SCENT WILI LIE UPON THE ROAD IN SPITE OF THEIR EIGHT AND TWENTY HOURS' START + I CONFESS THAT I HAD MY DOUBTS MYSELF WHEN I REFLECTED UPON THE GREAT TRAFFIC WHICH HAD PASSED ALONG THE LONDON ROAD IN THE INTERVAL + MY FEARS WERE SOON APPEASED HOWEVER + TOBY NEVER HESITATED OR SWERVED BUT WADDLED ON IN HIS PECULIAR ROLLING FASHION + CLEARLY THE PUNGENT SMELL OF THE CREOSOTE ROSE HIGH ABOVE ALL OTHER CONTENDING SCENTS + QUOTE DO NOT IMAGINE QUOTE SAID HOLMES QUOTE THAT I DEPEND FOR MY SUCCESS IN THIS CASE UPON THE MERE CHANCE OF ONE OF THESE FELLOWS HAVING PUT HIS FOOT IN THE CHEMICAL + I HAVE KNOWLEDGE NOW WHICH WOULD ENABLE ME TO TRACE THEM IN MANY DIFFERENT WAYS + THIS HOWEVER IS THE READIEST AND SINCE FORTUNE HAS PUT IT INTO OUR HANDS I SHOULD BE CULPABLE IF I NEGLECTED IT + IT HAS HOWEVER PREVENTED THE CASE FROM BECOMING THE PRETTY LITTLE INTELLECTUAI PROBLEM WHICH IT AT ONE TIME PROMISED TO BE + THERE MIGHT HAVE BEEN SOME CREDIT TO BE GAINED OUT OF IT BUT FOR THIS TOO PALPABLE CLUE + THERE IS CREDIT AND TO SPARE SAID I. I ASSURE YOU HOLMES THAT I MARVEL AT THE MEANS BY WHICH YOU OBTAIN YOUR RESULTS IN THIS CASE EVEN MORE THAN I DID IN THE JEFFERSON HOPE MURDER + THE THING SEEMS TO ME TO BE DEEPER AND MORE INEXPLICABLE + HOW FOR EXAMPLE COULD YOU DESCRIBE WITH SUCH CONFIDENCE THE WOODENLEGGED MAN + PSHAW MY DEAR BOY IT WAS SIMPLICITY ITSELF + I DON'T WISH TO BE THEATRICAL + IT IS ALL PATENT AND ABOVE BOARD + TWO OFFICERS WHO ARE IN COMMAND OF A CONVICT GUARD LEARN AN IMPORTANT SECRET AS TO BURIED TREASURE + A MAP IS DRAWN FOR THEM BY AN ENGLISHMAN NAMED JONATHAN SMALL + YOU REMEMBER THAT WE SAW THE NAME UPON THE CHART IN CAPTAIN MORSTAN'S POSSESSION + HE HAD SIGNED IT IN BEHALF OF HIMSELF AND HIS ASSOCIATES THE SIGN OF THE FOUR AS HE SOMEWHAT DRAMATICALLY CALLED IT + AIDED BY THIS CHART THE OFFICERS OR ONE OF THEM GETS THE TREASURE AND BRINGS IT TO ENGLAND LEAVING WE WILL SUPPOSE SOME CONDITION UNDER WHICH HE RECEIVED IT UNFULFILLED + NOW THEN WHY DID NOT JONATHAN SMALL GET THE TREASURE HIMSELF + THE ANSWER IS OBVIOUS + THE CHART IS DATED AT A TIME WHEN MORSTAN WAS BROUGHT INTO CLOSE ASSOCIATION WITH CONVICTS + JONATHAN SMALL DID NOT GET THE TREASURE BECAUSE HE AND HIS ASSOCIATES WERE THEMSELVES CONVICTS AND COULD NOT GET AWAY + QUOTE BUT THIS IS MERE SPECULATION QUOTE SAID I + IT IS MORE THAN THAT + IT IS THE ONLY HYPOTHESIS WHICH COVERS THE FACTS + LET US SEE HOW IT FITS IN WITH THE SEQUEL + MAJOR SHOLTO REMAINS AT PEACE FOR SOME YEARS HAPPY IN THE POSSESSION OF HIS TREASURE + THEN HE RECEIVES A LETTER FROM INDIA WHICH GIVES HIM A GREAT FRIGHT + WHAT WAS THAT + A LETTER TO SAY THAT THE MEN WHOM HE HAD WRONGED HAD BEEN SET FREE + OR HAD ESCAPED + THAT IS MUCH MORE LIKELY FOR HE WOULD HAVE KNOWN WHAT THEIR TERM OF IMPRISONMENT WAS + IT WOULD NOT HAVE BEEN A SURPRISE TO HIM + WHAT DOES HE DO THEN + HE GUARDS HIMSELF AGAINST A WOODEN LEGGED MAN A WHITE MAN MARK YOU FOR HE MISTAKES A WHITE TRADESMAN FOR HIM AND ACTUALLY FIRES A PISTOL AT HIM + NOW ONLY ONE WHITE MAN'S NAME IS ON THE CHART + THE OTHERS ARE HINDOOS OR MOHAMMEDANS + THERE IS NO OTHER WHITE MAN + THEREFORE WE MAY SAY WITH CONFIDENCE THAT THE WOODEN LEGGED MAN IS IDENTICAL WITH JONATHAN SMALL + DOES THE REASONING STRIKE YOU AS BEING FAULTY + QUOTE NO IT IS CLEAR AND CONCISE QUOTE + WELL NOW LET US PUT OURSELVES IN THE PLACE OF JONATHAN SMALL + LET US LOOK AT IT FROM HIS POINT OF VIEW + HE COMES TO ENGLAND WITH THE DOUBLE IDEA OF REGAINING WHAT HE WOULD CONSIDER TO BE HIS RIGHTS AND OF HAVING HIS REVENGE UPON THE MAN WHO HAD WRONGED HIM + HE FOUND OUT WHERE SHOLTO LIVED AND VERY POSSIBLY HE ESTABLISHED COMMUNICATIONS WITH SOMEONE INSIDE THE HOUSE + THERE IS THIS BUTLER LAL RAO WHOM WE HAVE NOT SEEN + MRS. BERNSTONE GIVES HIM FAR FROM A GOOD CHARACTER + SMALL COULD NOT FIND OUT HOWEVER WHERE THE TREASURE WAS HID FOR NO ONE EVER KNEW SAVE THE MAJOR AND ONE FAITHFUL SERVANT WHO HAD DIED + SUDDENLY SMALL LEARNS THAT THE MAJOR IS ON HIS DEATHBED LN A FRENZY LEST THE SECRET OF THE TREASURE DIE WITH HIM HE RUNS THE GAUNTLET OF THE GUARDS MAKES HIS WAY TO THE DYING MAN'S WINDOW AND IS ONLY DETERRED FROM ENTERING BY THE PRESENCE OF HIS TWO SONS + MAD WITH HATE HOWEVER AGAINST THE DEAD MAN HE ENTERS THE ROOM THAT NIGHT SEARCHES HIS PRIVATE PAPERS IN THE HOPE OF DISCOVERING SOME MEMORANDUM RELATING TO THE TREASURE AND FINALLY LEAVES A MEMENTO OF HIS VISIT IN THE SHORT INSCRIPTION UPON THE CARD + HE HAD DOUBTLESS PLANNED BEFOREHAND THAT SHOULD HE SLAY THE MAJOR HE WOULD LEAVE SOME SUCH RECORD UPON THE BODY AS A SIGN THAT IT WAS NOT A COMMON MURDER BUT FROM THE POINT OF VIEW OF THE FOUR ASSOCIATES SOMETHING IN THE NATURE OF AN ACT OF JUSTICE + WHIMSICAL AND BIZARRE CONCEITS OF THIS KIND ARE COMMON ENOUGH IN THE ANNALS OF CRIME AND USUALLY AFFORD VALUABLE INDICATIONS AS TO THE CRIMINAL + DO YOU FOLLOW ALL THIS + VERY CLEARLY + NOW WHAT COULD JONATHAN SMALL DO + HE COULD ONLY CONTINUE TO KEEP A SECRET WATCH UPON THE EFFORTS MADE TO FIND THE TREASURE + POSSIBLY HE LEAVES ENGLAND AND ONLY COMES BACK AT INTERVALS + THEN COMES THE DISCOVERY OF THE GARRET AND HE IS INSTANTLY INFORMED OF IT + WE AGAIN TRACE THE PRESENCE OF SOME CONFEDERATE IN THE HOUSEHOLD + JONATHAN WITH HIS WOODEN LEG IS UTTERLY UNABLE TO REACH THE LOFTY ROOM OF BARTHOLOMEW SHOLTO + HE TAKES WITH HIM HOWEVER A RATHER CURIOUS ASSOCIATE WHO GETS OVER THIS DIFFICULTY BUT DIPS HIS NAKED FOOT INTO CREOSOTE WHENCE COME TOBY AND A SIX MILE LIMP FOR A HALF PAY OFFICER WITH A DAMAGED TENDO ACHILLIS + QUOTE BUT IT WAS THE ASSOCIATE AND NOT JONATHAN WHO COMMITTED THE CRIME QUOTE + QUITE SO + AND RATHER TO JONATHAN'S DISGUST TO JUDGE BY THE WAY HE STAMPED ABOUT WHEN HE GOT INTO THE ROOM + HE BORE NO GRUDGE AGAINST BARTHOLOMEW SHOLTO AND WOULD HAVE PREFERRED IF HE COULD HAVE BEEN SIMPLY BOUND AND GAGGED + HE DID NOT WISH TO PUT HIS HEAD IN A HALTER + THERE WAS NO HELP FOR IT HOWEVER THE SAVAGE INSTINCTS OF HIS COMPANION HAD BROKEN OUT AND THE POISON HAD DONE ITS WORK SO JONATHAN SMALL LEFT HIS RECORD LOWERED THE TREASURE BOX TO THE GROUND AND FOLLOWED IT HIMSELF + THAT WAS THE TRAIN OF EVENTS AS FAR AS I CAN DECIPHER THEM + OF COURSE AS TO HIS PERSONAL APPEARANCE HE MUST BE MIDDLE AGED AND MUST BE SUNBURNED AFTER SERVING HIS TIME IN SUCH AN OVEN AS THE ANDAMANS + HIS HEIGHT IS READILY CALCULATED FROM THE LENGTH OF HIS STRIDE AND WE KNOW THAT HE WAS BEARDED + HIS HAIRINESS WAS THE ONE POINT WHICH IMPRESSED ITSELF UPON THADDEUS SHOLTO WHEN HE SAW HIM AT THE WINDOW + I DON'T KNOW THAT THERE IS ANYTHING ELSE + THE ASSOCIATE + AH WELL THERE IS NO GREAT MYSTERY IN THAT + BUT YOU WILL KNOW ALL ABOUT IT SOON ENOUGH + HOW SWEET THE MORNING AIR IS + SEE HOW THAT ONE LITTLE CLOUD FLOATS LIKE A PINK FEATHER FROM SOME GIGANTIC FLAMINGO + NOW THE RED RIM OF THE SUN PUSHES ITSELF OVER THE LONDON CLOUD BANK + IT SHINES ON A GOOD MANY FOLK BUT ON NONE I DARE BET WHO ARE ON A STRANGER ERRAND THAN YOU AND I. HOW SMALL WE FEEL WITH OUR PETTY AMBITIONS AND STRIVINGS IN THE PRESENCE OF THE GREAT ELEMENTAL FORCES OF NATURE + ARE YOU WELL UP IN YOUR JEAN PAUL + QUOTE FAIRLY SO + I WORKED BACK TO HIM THROUGH CARLYLE + THAT WAS LIKE FOLLOWING THE BROOK TO THE PARENT LAKE + HE MAKES ONE CURIOUS BUT PROFOUND REMARK + IT IS THAT THE CHIEF PROOF OF MAN'S REAL GREATNESS LIES IN HIS PERCEPTION OF HIS OWN SMALLNESS + IT ARGUES YOU SEE A POWER OF COMPARISON AND OF APPRECIATION WHICH IS IN ITSELF A PROOF OF NOBILITY + THERE IS MUCH FOOD FOR THOUGHT IN RICHTER + YOU HAVE NOT A PISTOL HAVE YOU + I HAVE MY STICK + IT IS JUST POSSIBLE THAT WE MAY NEED SOMETHING OF THE SORT IF WE GET TO THEIR LAIR + JONATHAN I SHALL LEAVE TO YOU BUT IF THE OTHER TURNS NASTY I SHALL SHOOT HIM DEAD QUOTE + HE TOOK OUT HIS REVOLVER AS HE SPOKE AND HAVING LOADED TWO OF THE CHAMBERS HE PUT IT BACK INTO THE RIGHT HAND POCKET OF HIS JACKET + WE HAD DURING THIS TIME BEEN FOLLOWING THE GUIDANCE OF TOBY DOWN THE HALF RURAL VILLA LINED ROADS WHICH LEAD TO THE METROPOLIS + NOW HOWEVER WE WERE BEGINNING TO COME AMONG CONTINUOUS STREETS WHERE LABOURERS AND DOCKMEN WERE ALREADY ASTIR AND SLATTERNLY WOMEN WERE TAKING DOWN SHUTTERS AND BRUSHING DOORSTEPS + AT THE SQUARE TOPPED CORNER PUBLIC HOUSES BUSINESS WAS JUST BEGINNING AND ROUGH LOOKING MEN WERE EMERGING RUBBING THEIR SLEEVES ACROSS THEIR BEARDS AFTER THEIR MORNING WET + STRANGE DOGS SAUNTERED UP AND STARED WONDERINGLY AT US AS WE PASSED BUT OUR INIMITABLE TOBY LOOKED NEITHER TO THE RIGHT NOR TO THE LEFT BUT TROTTED ONWARD WITH HIS NOSE TO THE GROUND AND AN OCCASIONAL EAGER WHINE WHICH SPOKE OF A HOT SCENT + WE HAD TRAVERSED STREATHAM BRIXTON CAMBERWELL AND NOW FOUND OURSELVES IN KENNINGTON LANE HAVING BORNE AWAY THROUGH THE SIDE STREETS TO THE EAST OF THE OVAL + THE MEN WHOM WE PURSUED SEEMED TO HAVE TAKEN A CURIOUSLY ZIGZAG ROAD WITH THE IDEA PROBABLY OF ESCAPING OBSERVATION + THEY HAD NEVER KEPT TO THE MAIN ROAD IF A PARALLEL SIDE STREET WOULD SERVE THEIR TURN + AT THE FOOT OF KENNINGTON LANE THEY HAD EDGED AWAY TO THE LEFT THROUGH BOND STREET AND MILES STREET + WHERE THE LATTER STREET TURNS INTO KNIGHT'S PLACE TOBY CEASED TO ADVANCE BUT BEGAN TO RUN BACKWARD AND FORWARD WITH ONE EAR COCKED AND THE OTHER DROOPING THE VERY PICTURE OF CANINE INDECISION + THEN HE WADDLED ROUND IN CIRCLES LOOKING UP TO US FROM TIME TO TIME AS IF TO ASK FOR SYMPATHY IN HIS EMBARRASSMENT + WHAT THE DEUCE IS THE MATTER WITH THE DOG GROWLED HOLMES + THEY SURELY WOULD NOT TAKE A CAB OR GO OFF IN A BALLOON + PERHAPS THEY STOOD HERE FOR SOME TIME I SUGGESTED + AH IT'S ALL RIGHT + HE'S OFF AGAIN SAID MY COMPANION IN A TONE OF RELIEF + HE WAS INDEED OFF FOR AFTER SNIFFING ROUND AGAIN HE SUDDENLY MADE UP HIS MIND AND DARTED AWAY WITH AN ENERGY AND DETERMINATION SUCH AS HE HAD NOT YET SHOWN + THE SCENT APPEARED TO BE MUCH HOTTER THAN BEFORE FOR HE HAD NOT EVEN TO PUT HIS NOSE ON THE GROUND BUT TUGGED AT HIS LEASH AND TRIED TO BREAK INTO A RUN + I COULD SEE BY THE GLEAM IN HOLMES'S EYES THAT HE THOUGHT WE WERE NEARING THE END OF OUR JOURNEY + OUR COURSE NOW RAN DOWN NINE ELMS UNTIL WE CAME TO BRODERICK AND NELSON'S LARGE TIMBER YARD JUST PAST THE WHITE EAGLE TAVERN + HERE THE DOG FRANTIC WITH EXCITEMENT TURNED DOWN THROUGH THE SIDE GATE INTO THE ENCLOSURE WHERE THE SAWYERS WERE ALREADY AT WORK + ON THE DOG RACED THROUGH SAWDUST AND SHAVINGS DOWN AN ALLEY ROUND A PASSAGE BETWEEN TWO WOOD PILES AND FINALLY WITH A TRIUMPHANT YELP SPRANG UPON A LARGE BARREL WHICH STILL STOOD UPON THE HAND TROLLEY ON WHICH IT HAD BEEN BROUGHT + WITH LOLLING TONGUE AND BLINKING EYES TOBY STOOD UPON THE CASK LOOKING FROM ONE TO THE OTHER OF US FOR SOME SIGN OF APPRECIATION + THE STAVES OF THE BARREL AND THE WHEELS OF THE TROLLEY WERE SMEARED WITH A DARK LIQUID AND THE WHOLE AIR WAS HEAVY WITH THE SMELL OF CREOSOTE + SHERLOCK HOLMES AND I LOOKED BLANKLY AT EACH OTHER AND THEN BURST SIMULTANEOUSLY INTO AN UNCONTROLLABLE FIT OF LAUGHTER + CHAPTER EIGHT THE BAKER STREET IRREGULARS + QUOTE WHAT NOW QUOTE + I ASKED + TOBY HAS LOST HIS CHARACTER FOR INFALLIBILITY + HE ACTED ACCORDING TO HIS LIGHTS SAID HOLMES LIFTING HIM DOWN FROM THE BARREL AND WALKING HIM OUT OF THE TIMBER YARD + IF YOU CONSIDER HOW MUCH CREOSOTE IS CARTED ABOUT LONDON IN ONE DAY IT IS NO GREAT WONDER THAT OUR TRAIL SHOULD HAVE BEEN CROSSED + IT IS MUCH USED NOW ESPECIALLY FOR THE SEASONING OF WOOD + POOR TOBY IS NOT TO BLAME + WE MUST GET ON THE MAIN SCENT AGAIN I SUPPOSE + QUOTE YES + AND FORTUNATELY WE HAVE NO DISTANCE TO GO + EVIDENTLY WHAT PUZZLED THE DOG AT THE CORNER OF KNIGHT'S PLACE WAS THAT THERE WERE TWO DIFFERENT TRAILS RUNNING IN OPPOSITE DIRECTIONS + WE TOOK THE WRONG ONE + IT ONLY REMAINS TO FOLLOW THE OTHER + THERE WAS NO DIFFICULTY ABOUT THIS + ON LEADING TOBY TO THE PLACE WHERE HE HAD COMMITTED HIS FAULT HE CAST ABOUT IN A WIDE CIRCLE AND FINALLY DASHED OFF IN A FRESH DIRECTION + WE MUST TAKE CARE THAT HE DOES NOT NOW BRING US TO THE PLACE WHERE THE CREOSOTE BARREL CAME FROM I OBSERVED + I HAD THOUGHT OF THAT + BUT YOU NOTICE THAT HE KEEPS ON THE PAVEMENT WHEREAS THE BARREL PASSED DOWN THE ROADWAY + NO WE ARE ON THE TRUE SCENT NOW + IT TENDED DOWN TOWARDS THE RIVERSIDE RUNNING THROUGH BELMONT PLACE AND PRINCE'S STREET + AT THE END OF BROAD STREET IT RAN RIGHT DOWN TO THE WATER'S EDGE WHERE THERE WAS A SMALL WOODEN WHARF + TOBY LED US TO THE VERY EDGE OF THIS AND THERE STOOD WHINING LOOKING OUT ON THE DARK CURRENT BEYOND + WE ARE OUT OF LUCK SAID HOLMES + QUOTE THEY HAVE TAKEN TO A BOAT HERE QUOTE + SEVERAL SMALL PUNTS AND SKIFFS WERE LYING ABOUT IN THE WATER AND ON THE EDGE OF THE WHARF + WE TOOK TOBY ROUND TO EACH IN TURN BUT THOUGH HE SNIFFED EARNESTLY HE MADE NO SIGN + CLOSE TO THE RUDE LANDING STAGE WAS A SMALL BRICK HOUSE WITH A WOODEN PLACARD SLUNG OUT THROUGH THE SECOND WINDOW + MORDECAI SMITH WAS PRINTED ACROSS IT IN LARGE LETTERS AND UNDERNEATH BOATS TO HIRE BY THE HOUR OR DAY + A SECOND INSCRIPTION ABOVE THE DOOR INFORMED US THAT A STEAM LAUNCH WAS KEPT A STATEMENT WHICH WAS CONFIRMED BY A GREAT PILE OF COKE UPON THE JETTY + SHERLOCK HOLMES LOOKED SLOWLY ROUND AND HIS FACE ASSUMED AN OMINOUS EXPRESSION + THIS LOOKS BAD SAID HE + THESE FELLOWS ARE SHARPER THAN I EXPECTED + THEY SEEM TO HAVE COVERED THEIR TRACKS + THERE HAS I FEAR BEEN PRECONCERTED MANAGEMENT HERE + HE WAS APPROACHING THE DOOR OF THE HOUSE WHEN IT OPENED AND A LITTLE CURLY HEADED LAD OF SIX CAME RUNNING OUT FOLLOWED BY A STOUTISH RED FACED WOMAN WITH A LARGE SPONGE IN HER HAND + YOU COME BACK AND BE WASHED JACK SHE SHOUTED + QUOTE COME BACK YOU YOUNG IMP FOR IF YOUR FATHER COMES HOME AND FINDS YOU LIKE THAT HE'LL LET US HEAR OF IT QUOTE + DEAR LITTLE CHAP SAID HOLMES STRATEGICALLY + WHAT A ROSYCHEEKED YOUNG RASCAL + NOW JACK IS THERE ANYTHING YOU WOULD LIKE + THE YOUTH PONDERED FOR A MOMENT + I'D LIKE A SHILLIN' SAID HE + NOTHING YOU WOULD LIKE BETTER + QUOTE I'D LIKE TWO SHILLIN' BETTER QUOTE THE PRODIGY ANSWERED AFTER SOME THOUGHT + HERE YOU ARE THEN + CATCH A FINE CHILD MRS. SMITH + LOR BLESS YOU SIR HE IS THAT AND FORWARD + HE GETS A'MOST TOO MUCH FOR ME TO MANAGE SPECIALLY WHEN MY MAN IS AWAY DAYS AT A TIME + AWAY IS HE SAID HOLMES IN A DISAPPOINTED VOICE + QUOTE I AM SORRY FOR THAT FOR I WANTED TO SPEAK TO MR. SMITH QUOTE + HE'S BEEN AWAY SINCE YESTERDAY MORNIN' SIR AND TRUTH TO TELL I AM BEGINNIN' TO FEEL FRIGHTENED ABOUT HIM + BUT IF IT WAS ABOUT A BOAT SIR MAYBE I COULD SERVE AS WELL + I WANTED TO HIRE HIS STEAM LAUNCH + WHY BLESS YOU SIR IT IS IN THE STEAM LAUNCH THAT HE HAS GONE + THAT'S WHAT PUZZLES ME FOR I KNOW THERE AIN'T MORE COALS IN HER THAN WOULD TAKE HER TO ABOUT WOOLWICH AND BACK + IF HE'S BEEN AWAY IN THE BARGE I'D HA THOUGHT NOTHIN' FOR MANY A TIME A JOB HAS TAKEN HIM AS FAR AS GRAVESEND AND THEN IF THERE WAS MUCH DOIN' THERE HE MIGHT HA STAYED OVER + BUT WHAT GOOD IS A STEAM LAUNCH WITHOUT COALS + QUOTE HE MIGHT HAVE BOUGHT SOME AT A WHARF DOWN THE RIVER QUOTE + HE MIGHT SIR BUT IT WEREN'T HIS WAY + MANY A TIME I'VE HEARD HIM CALL OUT AT THE PRICES THEY CHARGE FOR A FEW ODD BAGS + BESIDES I DON'T LIKE THAT WOODEN LEGGED MAN WI HIS UGLY FACE AND OUTLANDISH TALK + WHAT DID HE WANT ALWAYS KNOCKIN' ABOUT HERE FOR + A WOODEN LEGGED MAN SAID HOLMES WITH BLAND SURPRISE + YES SIR A BROWN MONKEY FACED CHAP THAT'S CALLED MORE'N ONCE FOR MY OLD MAN + IT WAS HIM THAT ROUSED HIM UP YESTERNIGHT AND WHAT'S MORE MY MAN KNEW HE WAS COMIN' FOR HE HAD STEAM UP IN THE LAUNCH + I TELL YOU STRAIGHT SIR I DON'T FEEL EASY IN MY MIND ABOUT IT + QUOTE BUT MY DEAR MRS. SMITH QUOTE SAID HOLMES SHRUGGING HIS SHOULDERS QUOTE YOU ARE FRIGHTENING YOURSELF ABOUT NOTHING + HOW COULD YOU POSSIBLY TELL THAT IT WAS THE WOODEN LEGGED MAN WHO CAME IN THE NIGHT + I DON'T QUITE UNDERSTAND HOW YOU CAN BE SO SURE + HIS VOICE SIR + I KNEW HIS VOICE WHICH IS KIND O' THICK AND FOGGY + HE TAPPED AT THE WINDER ABOUT THREE IT WOULD BE + SHOW A LEG MATEY SAYS HE TIME TO TURN OUT GUARD + MY OLD MAN WOKE UP JIM THAT'S MY ELDEST AND AWAY THEY WENT WITHOUT SO MUCH AS A WORD TO ME + I COULD HEAR THE WOODEN LEG CLACKIN' ON THE STONES + AND WAS THIS WOODEN LEGGED MAN ALONE + COULDN'T SAY I AM SURE SIR + I DIDN'T HEAR NO ONE ELSE QUOTE + I AM SORRY MRS. SMITH FOR I WANTED A STEAM LAUNCH AND I HAVE HEARD GOOD REPORTS OF THE LET ME SEE WHAT IS HER NAME + THE AURORA SIR + AH + SHE'S NOT THAT OLD GREEN LAUNCH WITH A YELLOW LINE VERY BROAD IN THE BEAM + NO INDEED + SHE'S AS TRIM A LITTLE THING AS ANY ON THE RIVER + SHE'S BEEN FRESH PAINTED BLACK WITH TWO RED STREAKS QUOTE + THANKS + I HOPE THAT YOU WILL HEAR SOON FROM MR. SMITH + I AM GOING DOWN THE RIVER AND IF I SHOULD SEE ANYTHING OF THE AURORA I SHALL LET HIM KNOW THAT YOU ARE UNEASY + A BLACK FUNNEL YOU SAY + NO SIR + BLACK WITH A WHITE BAND + AH OF COURSE + IT WAS THE SIDES WHICH WERE BLACK + GOODMORNING MRS. SMITH + THERE IS A BOATMAN HERE WITH A WHERRY WATSON + WE SHALL TAKE IT AND CROSS THE RIVER QUOTE + THE MAIN THING WITH PEOPLE OF THAT SORT SAID HOLMES AS WE SAT IN THE SHEETS OF THE WHERRY IS NEVER TO LET THEM THINK THAT THEIR INFORMATION CAN BE OF THE SLIGHTEST IMPORTANCE TO YOU + IF YOU DO THEY WILL INSTANTLY SHUT UP LIKE AN OYSTER + IF YOU LISTEN TO THEM UNDER PROTEST AS IT WERE YOU ARE VERY LIKELY TO GET WHAT YOU WANT + OUR COURSE NOW SEEMS PRETTY CLEAR SAID I + WHAT WOULD YOU DO THEN + I WOULD ENGAGE A LAUNCH AND GO DOWN THE RIVER ON THE TRACK OF THE AURORA + QUOTE MY DEAR FELLOW IT WOULD BE A COLOSSAL TASK + SHE MAY HAVE TOUCHED AT ANY WHARF ON EITHER SIDE OF THE STREAM BETWEEN HERE AND GREENWICH + BELOW THE BRIDGE THERE IS A PERFECT LABYRINTH OF LANDING PLACES FOR MILES + IT WOULD TAKE YOU DAYS AND DAYS TO EXHAUST THEM IF YOU SET ABOUT IT ALONE + EMPLOY THE POLICE THEN + NUMBER + I SHALL PROBABLY CALL ATHELNEY JONES IN AT THE LAST MOMENT + HE IS NOT A BAD FELLOW AND I SHOULD NOT LIKE TO DO ANYTHING WHICH WOULD INJURE HIM PROFESSIONALLY + BUT I HAVE A FANCY FOR WORKING IT OUT MYSELF NOW THAT WE HAVE GONE SO FAR + COULD WE ADVERTISE THEN ASKING FOR INFORMATION FROM WHARFINGERS + QUOTE WORSE AND WORSE + OUR MEN WOULD KNOW THAT THE CHASE WAS HOT AT THEIR HEELS AND THEY WOULD BE OFF OUT OF THE COUNTRY + AS IT IS THEY ARE LIKELY ENOUGH TO LEAVE BUT AS LONG AS THEY THINK THEY ARE PERFECTLY SAFE THEY WILL BE IN NO HURRY + JONES'S ENERGY WILL BE OF USE TO US THERE FOR HIS VIEW OF THE CASE IS SURE TO PUSH ITSELF INTO THE DAILY PRESS AND THE RUNAWAYS WILL THINK THAT EVERYONE IS OFF ON THE WRONG SCENT + WHAT ARE WE TO DO THEN + I ASKED AS WE LANDED NEAR MILLBANK PENITENTIARY + TAKE THIS HANSOM DRIVE HOME HAVE SOME BREAKFAST AND GET AN HOUR'S SLEEP + IT IS QUITE ON THE CARDS THAT WE MAY BE AFOOT TO NIGHT AGAIN + STOP AT A TELEGRAPH OFFICE CABBY + WE WILL KEEP TOBY FOR HE MAY BE OF USE TO US YET + WE PULLED UP AT THE GREAT PETER STREET POST OFFICE AND HOLMES DISPATCHED HIS WIRE + WHOM DO YOU THINK THAT IS TO HE ASKED AS WE RESUMED OUR JOURNEY + QUOTE I AM SURE I DON'T KNOW QUOTE + YOU REMEMBER THE BAKER STREET DIVISION OF THE DETECTIVE POLICE FORCE WHOM I EMPLOYED IN THE JEFFERSON HOPE CASE + WELL SAID I LAUGHING + THIS IS JUST THE CASE WHERE THEY MIGHT BE INVALUABLE + IF THEY FAIL I HAVE OTHER RESOURCES BUT I SHALL TRY THEM FIRST + THAT WIRE WAS TO MY DIRTY LITTLE LIEUTENANT WIGGINS AND I EXPECT THAT HE AND HIS GANG WILL BE WITH US BEFORE WE HAVE FINISHED OUR BREAKFAST + IT WAS BETWEEN EIGHT AND NINE O'CLOCK NOW AND I WAS CONSCIOUS OF A STRONG REACTION AFTER THE SUCCESSIVE EXCITEMENTS OF THE NIGHT + I WAS LIMP AND WEARY BEFOGGED IN MIND AND FATIGUED IN BODY + I HAD NOT THE PROFESSIONAL ENTHUSIASM WHICH CARRIED MY COMPANION ON NOR COULD I LOOK AT THE MATTER AS A MERE ABSTRACT INTELLECTUAL PROBLEM + AS FAR AS THE DEATH OF BARTHOLOMEW SHOLTO WENT I HAD HEARD LITTLE GOOD OF HIM AND COULD FEEL NO INTENSE ANTIPATHY TO HIS MURDERERS + THE TREASURE HOWEVER WAS A DIFFERENT MATTER + THAT OR PART OF IT BELONGED RIGHTFULLY TO MISS MORSTAN + WHILE THERE WAS A CHANCE OF RECOVERING IT I WAS READY TO DEVOTE MY LIFE TO THE ONE OBJECT + TRUE IF I FOUND IT IT WOULD PROBABLY PUT HER FOREVER BEYOND MY REACH + YET IT WOULD BE A PETTY AND SELFISH LOVE WHICH WOULD BE INFLUENCED BY SUCH A THOUGHT AS THAT + IF HOLMES COULD WORK TO FIND THE CRIMINALS I HAD A TENFOLD STRONGER REASON TO URGE ME ON TO FIND THE TREASURE + A BATH AT BAKER STREET AND A COMPLETE CHANGE FRESHENED ME UP WONDERFULLY + WHEN I CAME DOWN TO OUR ROOM I FOUND THE BREAKFAST LAID AND HOLMES POURING OUT THE COFFEE + HERE IT IS SAID HE LAUGHING AND POINTING TO AN OPEN NEWSPAPER + QUOTE THE ENERGETIC JONES AND THE UBIQUITOUS REPORTER HAVE FIXED IT UP BETWEEN THEM + BUT YOU HAVE HAD ENOUGH OF THE CASE + BETTER HAVE YOUR HAM AND EGGS FIRST + I TOOK THE PAPER FROM HIM AND READ THE SHORT NOTICE WHICH WAS HEADED MYSTERIOUS BUSINESS AT UPPER NORWOOD + ABOUT TWELVE O'CLOCK LAST NIGHT SAID THE STANDARD MR. BARTHOLOMEW SHOLTO OF PONDICHERRY LODGE UPPER NOR WOOD WAS FOUND DEAD IN HIS ROOM UNDER CIRCUMSTANCES WHICH POINT TO FOUL PLAY + AS FAR AS WE CAN LEARN NO ACTUAL TRACES OF VIOLENCE WERE FOUND UPON MR. SHOLTO'S PERSON BUT A VALUABLE COLLECTION OF INDIAN GEMS WHICH THE DECEASED GENTLEMAN HAD INHERITED FROM HIS FATHER HAS BEEN CARRIED OFF + THE DISCOVERY WAS FIRST MADE BY MR. SHERLOCK HOLMES AND DOCTOR WATSON WHO HAD CALLED AT THE HOUSE WITH MR.TTHAD DEUS SHOLTO BROTHER OF THE DECEASED + BY A SINGULAR PIECE OF GOOD FORTUNE MR. ATHELNEY JONES THE WELL KNOWN MEMBER OF THE DETECTIVE POLICE FORCE HAPPENED TO BE AT THE NORWOOD POLICE STATION AND WAS ON THE GROUND WITHIN HALF AN HOUR OF THE FIRST ALARM + HIS TRAINED AND EXPERIENCED FACULTIES WERE AT ONCE DIRECTED TOWARDS THE DETECTION OF THE CRIMINALS WITH THE GRATIFYING RESULT THAT THE BROTHER THADDEUS SHOLTO HAS ALREADY BEEN ARRESTED TOGETHER WITH THE HOUSEKEEPER MRS. BERNSTONE AN INDIAN BUTLER NAMED LAL RAO AND A PORTER OR GATEKEEPER NAMED MCMURDO + IT IS QUITE CERTAIN THAT THE THIEF OR THIEVES WERE WELL ACQUAINTED WITH THE HOUSE FOR MR. JONES'S WELL KNOWN TECHNICAL KNOWLEDGE AND HIS POWERS OF MINUTE OBSERVATION HAVE ENABLED HIM TO PROVE CONCLUSIVELY THAT THE MISCREANTS COULD NOT HAVE ENTERED BY THE DOOR OR BY THE WINDOW BUT MUST HAVE MADE THEIR WAY ACROSS THE ROOF OF THE BUILDING AND SO THROUGH A TRAPDOOR INTO A ROOM WHICH COMMUNICATED WITH THAT IN WHICH THE BODY WAS FOUND + THIS FACT WHICH HAS BEEN VERY CLEARLY MADE OUT PROVES CON CLUSIVELY THAT IT WAS NO MERE HAPHAZARD BURGLARY + THE PROMPT AND ENERGETIC ACTION OF THE OFFICERS OF THE LAW SHOWS THE GREAT ADVANTAGE OF THE PRESENCE ON SUCH OCCASIONS OF A SINGLE VIGOROUS AND MASTERFUL MIND + WE CANNOT BUT THINK THAT IT SUPPLIES AN ARGUMENT TO THOSE WHO WOULD WISH TO SEE OUR DETECTIVES MORE DECENTRALIZED AND SO BROUGHT INTO CLOSER AND MORE EFFECTIVE TOUCH WITH THE CASES WHICH IT IS THEIR DUTY TO INVESTIGATE + ISN'T IT GORGEOUS SAID HOLMES GRINNING OVER HIS COFFEE CUP + WHAT DO YOU THINK OF IT + I THINK THAT WE HAVE HAD A CLOSE SHAVE OURSELVES OF BEING ARRESTED FOR THE CRIME + QUOTE SO DO I. I WOULDN'T ANSWER FOR OUR SAFETY NOW IF HE SHOULD HAPPEN TO HAVE ANOTHER OF HIS ATTACKS OF ENERGY QUOTE + AT THIS MOMENT THERE WAS A LOUD RING AT THE BELL AND I COULD HEAR MRS. HUDSON OUR LANDLADY RAISING HER VOICE IN A WAIL OF EXPOSTULATION AND DISMAY + BY HEAVENS HOLMES I SAID HALF RISING I BELIEVE THAT THEY ARE REALLY AFTER US + NO IT'S NOT QUITE SO BAD AS THAT + IT IS THE UNOFFICIAL FORCE THE BAKER STREET IRREGULARS + AS HE SPOKE THERE CAME A SWIFT PATTERING OF NAKED FEET UPON THE STAIRS A CLATTER OF HIGH VOICES AND IN RUSHED A DOZEN DIRTY AND RAGGED LITTLE STREET ARABS + THERE WAS SOME SHOW OF DISCIPLINE AMONG THEM DESPITE THEIR TUMULTUOUS ENTRY FOR THEY INSTANTLY DREW UP IN LINE AND STOOD FACING US WITH EXPECTANT FACES + ONE OF THEIR NUMBER TALLER AND OLDER THAN THE OTHERS STOOD FORWARD WITH AN AIR OF LOUNGING SUPERIORITY WHICH WAS VERY FUNNY IN SUCH A DISREPUTABLE LITTLE SCARECROW + GOT YOUR MESSAGE SIR SAID HE AND BROUGHT 'EM ON SHARP + THREE BOB AND A TANNER FOR TICKETS + QUOTE HERE YOU ARE QUOTE SAID HOLMES PRODUCING SOME SILVER + IN FUTURE THEY CAN REPORT TO YOU WIGGINS AND YOU TO ME + I CANNOT HAVE THE HOUSE INVADED IN THIS WAY + HOWEVER IT IS JUST AS WELL THAT YOU SHOULD ALL HEAR THE INSTRUCTIONS + I WANT TO FIND THE WHEREABOUTS OF A STEAM LAUNCH CALLED THE AURORA OWNER MORDECAI SMITH BLACK WITH TWO RED STREAKS FUNNEL BLACK WITH A WHITE BAND + SHE IS DOWN THE RIVER SOMEWHERE + I WANT ONE BOY TO BE AT MORDECAI SMITH'S LANDING STAGE OPPOSITE MILLBANK TO SAY IF THE BOAT COMES BACK + YOU MUST DIVIDE IT OUT AMONG YOURSELVES AND DO BOTH BANKS THOROUGHLY + LET ME KNOW THE MOMENT YOU HAVE NEWS + IS THAT ALL CLEAR + YES GUV'NOR SAID WIGGINS + THE OLD SCALE OF PAY AND A GUINEA TO THE BOY WHO FINDS THE BOAT + HERE'S A DAY IN ADVANCE + NOW OFF YOU GO + HE HANDED THEM A SHILLING EACH AND AWAY THEY BUZZED DOWN THE STAIRS AND I SAW THEM A MOMENT LATER STREAMING DOWN THE STREET + QUOTE IF THE LAUNCH IS ABOVE WATER THEY WILL FIND HER QUOTE SAID HOLMES AS HE ROSE FROM THE TABLE AND LIT HIS PIPE + THEY CAN GO EVERYWHERE SEE EVERYTHING OVERHEAR EVERYONE + I EXPECT TO HEAR BEFORE EVENING THAT THEY HAVE SPOTTED HER + IN THE MEANWHILE WE CAN DO NOTHING BUT AWAIT RESULTS + WE CANNOT PICK UP THE BROKEN TRAIL UNTIL WE FIND EITHER THE AURORA OR MR. MORDECAI SMITH + TOBY COULD EAT THESE SCRAPS I DARE SAY + ARE YOU GOING TO BED HOLMES + NO I AM NOT TIRED + I HAVE A CURIOUS CONSTITUTION + I NEVER REMEMBER FEELING TIRED BY WORK THOUGH IDLENESS EXHAUSTS ME COMPLETELY + I AM GOING TO SMOKE AND TO THINK OVER THIS QUEER BUSINESS TO WHICH MY FAIR CLIENT HAS INTRODUCED US + IF EVER MAN HAD AN EASY TASK THIS OF OURS OUGHT TO BE + WOODEN LEGGED MEN ARE NOT SO COMMON BUT THE OTHER MAN MUST I SHOULD THINK BE ABSOLUTELY UNIQUE QUOTE + THAT OTHER MAN AGAIN + I HAVE NO WISH TO MAKE A MYSTERY OF HIM TO YOU ANYWAY + BUT YOU MUST HAVE FORMED YOUR OWN OPINION + NOW DO CONSIDER THE DATA + DIMINUTIVE FOOTMARKS TOES NEVER FETTERED BY BOOTS NAKED FEET STONE HEADED WOODEN MACE GREAT AGILITY SMALL POISONED DARTS + WHAT DO YOU MAKE OF ALL THIS + A SAVAGE + I EXCLAIMED + PERHAPS ONE OF THOSE INDIANS WHO WERE THE ASSOCIATES OF JONATHAN SMALL + QUOTE HARDLY THAT QUOTE SAID HE + WHEN FIRST I SAW SIGNS OF STRANGE WEAPONS I WAS INCLINED TO THINK SO BUT THE REMARKABLE CHARACTER OF THE FOOTMARKS CAUSED ME TO RECONSIDER MY VIEWS + SOME OF THE INHABITANTS OF THE INDIAN PENINSULA ARE SMALL MEN BUT NONE COULD HAVE LEFT SUCH MARKS AS THAT + THE HINDOO PROPER HAS LONG AND THIN FEET + THE SANDAL WEARING MOHAMMEDAN HAS THE GREAT TOE WELL SEPARATED FROM THE OTHERS BECAUSE THE THONG IS COMMONLY PASSED BETWEEN + THESE LITTLE DARTS TOO COULD ONLY BE SHOT IN ONE WAY + THEY ARE FROM A BLOW PIPE + NOW THEN WHERE ARE WE TO FIND OUR SAVAGE + SOUTH AMERICA I HAZARDED + HE STRETCHED HIS HAND UP AND TOOK DOWN A BULKY VOLUME FROM THE SHELF + THIS IS THE FIRST VOLUME OF A GAZETTEER WHICH IS NOW BEING PUBLISHED + IT MAY BE LOOKED UPON AS THE VERY LATEST AUTHORITY + WHAT HAVE WE HERE + ANDAMAN ISLANDS SITUATED THREE HUNDRED FORTY MILES TO THE NORTH OF SU MATRA IN THE BAY OF BENGAL + HUM HUM + WHAT'S ALL THIS + MOIST CLIMATE CORAL REEFS SHARKS PORT BLAIR CONVICT BARRACKS RUTLAND ISLAND COTTONWOODS AH HERE WE ARE + QUOTE THE ABORIGINES OF THE ANDAMAN ISLANDS MAY PERHAPS CLAIM THE DISTINCTION OF BEING THE SMALLEST RACE UPON THIS EARTH THOUGH SOME ANTHROPOLOGISTS PREFER THE BUSHMEN OF AFRICA THE DIGGER INDIANS OF AMERICA AND THE TERRA DEL FUEGIANS + THE AVERAGE HEIGHT IS RATHER BELOW FOUR FEET ALTHOUGH MANY FULL GROWN ADULTS MAY BE FOUND WHO ARE VERY MUCH SMALLER THAN THIS + THEY ARE A FIERCE MOROSE AND INTRACTABLE PEOPLE THOUGH CAPABLE OF FORMING MOST DEVOTED FRIENDSHIPS WHEN THEIR CONFIDENCE HAS ONCE BEEN GAINED + MARK THAT WATSON + NOW THEN LISTEN TO THIS + THEY ARE NATURALLY HIDEOUS HAVING LARGE MISSHAPEN HEADS SMALL FIERCE EYES AND DISTORTED FEATURES + THEIR FEET AND HANDS HOWEVER ARE REMARKABLY SMALL + SO INTRACTABLE AND FIERCE ARE THEY THAT ALL THE EFFORTS OF THE BRITISH OFFICIALS HAVE FAILED TO WIN THEM OVER IN ANY DEGREE + THEY HAVE ALWAYS BEEN A TERROR TO SHIPWRECKED CREWS BRAINING THE SURVIVORS WITH THEIR STONE HEADED CLUBS OR SHOOTING THEM WITH THEIR POISONED ARROWS + THESE MASSACRES ARE INVARIABLY CONCLUDED BY A CANNIBAL FEAST + NICE AMIABLE PEOPLE WATSON + IF THIS FELLOW HAD BEEN LEFT TO HIS OWN UNAIDED DEVICES THIS AFFAIR MIGHT HAVE TAKEN AN EVEN MORE GHASTLY TURN + I FANCY THAT EVEN AS IT IS JONATHAN SMALL WOULD GIVE A GOOD DEAL NOT TO HAVE EMPLOYED HIM + BUT HOW CAME HE TO HAVE SO SINGULAR A COMPANION + AH THAT IS MORE THAN I CAN TELL + SINCE HOWEVER WE HAD ALREADY DETERMINED THAT SMALL HAD COME FROM THE ANDAMANS IT IS NOT SO VERY WONDERFUL THAT THIS ISLANDER SHOULD BE WITH HIM + NO DOUBT WE SHALL KNOW ALL ABOUT IT IN TIME + LOOK HERE WATSON YOU LOOK REGULARLY DONE + LIE DOWN THERE ON THE SOFA AND SEE IF I CAN PUT YOU TO SLEEP + HE TOOK UP HIS VIOLIN FROM THE CORNER AND AS I STRETCHED MYSELF OUT HE BEGAN TO PLAY SOME LOW DREAMY MELODIOUS AIR HIS OWN NO DOUBT FOR HE HAD A REMARKABLE GIFT FOR IMPROVISATION + I HAVE A VAGUE REMEMBRANCE OF HIS GAUNT LIMBS HIS EARNEST FACE AND THE RISE AND FALL OF HIS BOW + THEN I SEEMED TO BE FLOATED PEACEFULLY AWAY UPON A SOFT SEA OF SOUND UNTIL I FOUND MYSELF IN DREAMLAND WITH THE SWEET FACE OF MARY MORSTAN LOOKING DOWN UPON ME + CHAPTER NINE A BREAK IN THE CHAIN + IT WAS LATE IN THE AFTERNOON BEFORE I WOKE STRENGTHENED AND REFRESHED + SHERLOCK HOLMES STILL SAT EXACTLY AS I HAD LEFT HIM SAVE THAT HE HAD LAID ASIDE HIS VIOLIN AND WAS DEEP IN A BOOK + HE LOOKED ACROSS AT ME AS I STIRRED AND I NOTICED THAT HIS FACE WAS DARK AND TROUBLED + QUOTE YOU HAVE SLEPT SOUNDLY QUOTE HE SAID + I FEARED THAT OUR TALK WOULD WAKE YOU + I HEARD NOTHING I ANSWERED + HAVE YOU HAD FRESH NEWS THEN + UNFORTUNATELY NO + I CONFESS THAT I AM SURPRISED AND DISAPPOINTED + I EXPECTED SOMETHING DEFINITE BY THIS TIME + WIGGINS HAS JUST BEEN UP TO REPORT + HE SAYS THAT NO TRACE CAN BE FOUND OF THE LAUNCH + IT IS A PROVOKING CHECK FOR EVERY HOUR IS OF IMPORTANCE + QUOTE CAN I DO ANYTHING + I AM PERFECTLY FRESH NOW AND QUITE READY FOR ANOTHER NIGHT'S OUTING + NO WE CAN DO NOTHING + WE CAN ONLY WAIT + IF WE GO OURSELVES THE MESSAGE MIGHT COME IN OUR ABSENCE AND DELAY BE CAUSED + YOU CAN DO WHAT YOU WILL. BUT I MUST REMAIN ON GUARD + THEN I SHALL RUN OVER TO CAMBERWELL AND CALL UPON MRS. CECIL FORRESTER + SHE ASKED ME TO YESTERDAY + QUOTE ON MRS. CECIL FORRESTER QUOTE ASKED HOLMES WITH THE TWINKLE OF A SMILE IN HIS EYES + WELL OF COURSE ON MISS MORSTAN TOO + THEY WERE ANXIOUS TO HEAR WHAT HAPPENED + I WOULD NOT TELL THEM TOO MUCH SAID HOLMES + WOMEN ARE NEVER TO BE ENTIRELY TRUSTED NOT THE BEST OF THEM + I DID NOT PAUSE TO ARGUE OVER THIS ATROCIOUS SENTIMENT + I SHALL BE BACK IN AN HOUR OR TWO I REMARKED + QUOTE ALL RIGHT + GOOD LUCK + BUT I SAY IF YOU ARE CROSSING THE RIVER YOU MAY AS WELL RETURN TOBY FOR I DON'T THINK IT IS AT ALL LIKELY THAT WE SHALL HAVE ANY USE FOR HIM NOW + I TOOK OUR MONGREL ACCORDINGLY AND LEFT HIM TOGETHER WITH A HALF SOVEREIGN AT THE OLD NATURALIST'S IN PINCHIN LANE + AT CAMBERWELL I FOUND MISS MORSTAN A LITTLE WEARY AFTER HER NIGHT'S ADVENTURES BUT VERY EAGER TO HEAR THE NEWS + MRS. FORRESTER TOO WAS FULL OF CURIOSITY + I TOLD THEM ALL THAT WE HAD DONE SUPPRESSING HOWEVER THE MORE DREADFUL PARTS OF THE TRAGEDY + THUS ALTHOUGH I SPOKE OF MR. SHOLTO'S DEATH I SAID NOTHING OF THE EXACT MANNER AND METHOD OF IT + WITH ALL MY OMISSIONS HOWEVER THERE WAS ENOUGH TO STARTLE AND AMAZE THEM + IT IS A ROMANCE CRIED MRS. FORRESTER + AN INJURED LADY HALF A MILLION IN TREASURE A BLACK CANNIBAL AND A WOODEN LEGGED RUFFIAN + THEY TAKE THE PLACE OF THE CONVENTIONAL DRAGON OR WICKED EARL + AND TWO KNIGHT ERRANTS TO THE RESCUE ADDED MISS MORSTAN WITH A BRIGHT GLANCE AT ME + QUOTE WHY MARY YOUR FORTUNE DEPENDS UPON THE ISSUE OF THIS SEARCH + I DON'T THINK THAT YOU ARE NEARLY EXCITED ENOUGH + JUST IMAGINE WHAT IT MUST BE TO BE SO RICH AND TO HAVE THE WORLD AT YOUR FEET + IT SENT A LITTLE THRILL OF JOY TO MY HEART TO NOTICE THAT SHE SHOWED NO SIGN OF ELATION AT THE PROSPECT + ON THE CONTRARY SHE GAVE A TOSS OF HER PROUD HEAD AS THOUGH THE MATTER WERE ONE IN WHICH SHE TOOK SMALL INTEREST + IT IS FOR MR. THADDEUS SHOLTO THAT I AM ANXIOUS SHE SAID + NOTHING ELSE IS OF ANY CONSEQUENCE BUT I THINK THAT HE HAS BEHAVED MOST KINDLY AND HONOURABLY THROUGHOUT + IT IS OUR DUTY TO CLEAR HIM OF THIS DREADFUL AND UNFOUNDED CHARGE + IT WAS EVENING BEFORE I LEFT CAMBERWELL AND QUITE DARK BY THE TIME I REACHED HOME + MY COMPANION'S BOOK AND PIPE LAY BY HIS CHAIR BUT HE HAD DISAPPEARED + I LOOKED ABOUT IN THE HOPE OF SEEING A NOTE BUT THERE WAS NONE + I SUPPOSE THAT MR. SHERLOCK HOLMES HAS GONE OUT I SAID TO MRS. HUDSON AS SHE CAME UP TO LOWER THE BLINDS + QUOTE NO SIR + HE HAS GONE TO HIS ROOM SIR + DO YOU KNOW SIR SINKING HER VOICE INTO AN IMPRESSIVE WHISPER I AM AFRAID FOR HIS HEALTH + WHY SO MRS. HUDSON + WELL HE'S THAT STRANGE SIR + AFTER YOU WAS GONE HE WALKED AND HE WALKED UP AND DOWN AND UP AND DOWN UNTIL I WAS WEARY OF THE SOUND OF HIS FOOTSTEP + THEN I HEARD HIM TALKING TO HIMSELF AND MUTTERING AND EVERY TIME THE BELL RANG OUT HE CAME ON THE STAIRHEAD WITH WHAT IS THAT MRS. HUDSON + AND NOW HE HAS SLAMMED OFF TO HIS ROOM BUT I CAN HEAR HIM WALKING AWAY THE SAME AS EVER + I HOPE HE'S NOT GOING TO BE ILL SIR + I VENTURED TO SAY SOMETHING TO HIM ABOUT COOLING MEDICINE BUT HE TURNED ON ME SIR WITH SUCH A LOOK THAT I DON'T KNOW HOW EVER I GOT OUT OF THE ROOM + I DON'T THINK THAT YOU HAVE ANY CAUSE TO BE UNEASY MRS. HUDSON I ANSWERED + QUOTE I HAVE SEEN HIM LIKE THIS BEFORE + HE HAS SOME SMALL MATTER UPON HIS MIND WHICH MAKES HIM RESTLESS + I TRIED TO SPEAK LIGHTLY TO OUR WORTHY LANDLADY BUT I WAS MYSELF SOMEWHAT UNEASY WHEN THROUGH THE LONG NIGHT I STILL FROM TIME TO TIME HEARD THE DULL SOUND OF HIS TREAD AND KNEW HOW HIS KEEN SPIRIT WAS CHAFING AGAINST THIS INVOLUNTARY INACTION + AT BREAKFAST TIME HE LOOKED WORN AND HAGGARD WITH A LITTLE FLECK OF FEVERISH COLOUR UPON EITHER CHEEK + YOU ARE KNOCKING YOURSELF UP OLD MAN I REMARKED + I HEARD YOU MARCHING ABOUT IN THE NIGHT + NO I COULD NOT SLEEP HE ANSWERED + THIS INFERNAL PROBLEM IS CONSUMING ME + IT IS TOO MUCH TO BE BALKED BY SO PETTY AN OBSTACLE WHEN ALL ELSE HAD BEEN OVERCOME + I KNOW THE MEN THE LAUNCH EVERYTHING AND YET I CAN GET NO NEWS + I HAVE SET OTHER AGENCIES AT WORK AND USED EVERY MEANS AT MY DISPOSAL + THE WHOLE RIVER HAS BEEN SEARCHED ON EITHER SIDE BUT THERE IS NO NEWS NOR HAS MRS. SMITH HEARD OF HER HUSBAND + I SHALL COME TO THE CONCLUSION SOON THAT THEY HAVE SCUTTLED THE CRAFT + BUT THERE ARE OBJECTIONS TO THAT QUOTE + OR THAT MRS. SMITH HAS PUT US ON A WRONG SCENT + NO I THINK THAT MAY BE DISMISSED + I HAD INQUIRIES MADE AND THERE IS A LAUNCH OF THAT DESCRIPTION + COULD IT HAVE GONE UP THE RIVER + I HAVE CONSIDERED THAT POSSIBILITY TOO AND THERE IS A SEARCHPARTY WHO WILL WORK UP AS FAR AS RICHMOND + IF NO NEWS COMES TO DAY I SHALL START OFF MYSELF TOMORROW AND GO FOR THE MEN RATHER THAN THE BOAT + BUT SURELY SURELY WE SHALL HEAR SOMETHING QUOTE + WE DID NOT HOWEVER + NOT A WORD CAME TO US EITHER FROM WIGGINS OR FROM THE OTHER AGENCIES + THERE WERE ARTICLES IN MOST OF THE PAPERS UPON THE NORWOOD TRAGEDY + THEY ALL APPEARED TO BE RATHER HOSTILE TO THE UNFORTUNATE THADDEUS SHOLTO + NO FRESH DETAILS WERE TO BE FOUND HOWEVER IN ANY OF THEM SAVE THAT AN INQUEST WAS TO BE HELD UPON THE FOLLOWING DAY + I WALKED OVER TO CAMBERWELL IN THE EVENING TO REPORT OUR ILL SUCCESS TO THE LADIES AND ON MY RETURN I FOUND HOLMES DEJECTED AND SOMEWHAT MOROSE + HE WOULD HARDLY REPLY TO MY QUESTIONS AND BUSIED HIMSELF ALL THE EVENING IN AN ABSTRUSE CHEMICAL ANALYSIS WHICH INVOLVED MUCH HEATING OF RETORTS AND DISTILLING OF VAPOURS ENDING AT LAST IN A SMELL WHICH FAIRLY DROVE ME OUT OF THE APARTMENT + UP TO THE SMALL HOURS OF THE MORNING I COULD HEAR THE CLINKING OF HIS TEST TUBES WHICH TOLD ME THAT HE WAS STILL ENGAGED IN HIS MALODOROUS EXPERIMENT + IN THE EARLY DAWN I WOKE WITH A START AND WAS SURPRISED TO FIND HIM STANDING BY MY BEDSIDE CLAD IN A RUDE SAILOR DRESS WITH A PEAJACKET AND A COARSE RED SCARF ROUND HIS NECK + I AM OFF DOWN THE RIVER WATSON SAID HE + I HAVE BEEN TURNING IT OVER IN MY MIND AND I CAN SEE ONLY ONE WAY OUT OF IT + IT IS WORTH TRYING AT ALL EVENTS + SURELY I CAN COME WITH YOU THEN SAID I + NO YOU CAN BE MUCH MORE USEFUL IF YOU WILL REMAIN HERE AS MY REPRESENTATIVE + I AM LOATH TO GO FOR IT IS QUITE ON THE CARDS THAT SOME MESSAGE MAY COME DURING THE DAY THOUGH WIGGINS WAS DESPONDENT ABOUT IT LAST NIGHT + I WANT YOU TO OPEN ALL NOTES AND TELEGRAMS AND TO ACT ON YOUR OWN JUDGMENT IF ANY NEWS SHOULD COME + CAN I RELY UPON YOU QUOTE + MOST CERTAINLY + I AM AFRAID THAT YOU WILL NOT BE ABLE TO WIRE TO ME FOR I CAN HARDLY TELL YET WHERE I MAY FIND MYSELF + IF I AM IN LUCK HOWEVER I MAY NOT BE GONE SO VERY LONG + I SHALL HAVE NEWS OF SOME SORT OR OTHER BEFORE I GET BACK + I HAD HEARD NOTHING OF HIM BY BREAKFAST TIME + ON OPENING THE STANDARD HOWEVER I FOUND THAT THERE WAS A FRESH ALLUSION TO THE BUSINESS + WITH REFERENCE TO THE UPPER NORWOOD TRAGEDY IT REMARKED WE HAVE REASON TO BELIEVE THAT THE MATTER PROMISES TO BE EVEN MORE COMPLEX AND MYSTERIOUS THAN WAS ORIGINALLY SUPPOSED + FRESH EVIDENCE HAS SHOWN THAT IT IS QUITE IMPOSSI BLE THAT MR. THADDEUS SHOLTO COULD HAVE BEEN IN ANY WAY CONCERNED IN THE MATTER + HE AND THE HOUSEKEEPER MRS. BERNSTONE WERE BOTH RELEASED YESTERDAY EVENING + IT IS BE LIEVED HOWEVER THAT THE POLICE HAVE A CLUE AS TO THE REAL CULPRITS AND THAT IT IS BEING PROSECUTED BY MR. ATHELNEY JONES OF SCOTLAND YARD WITH ALL HIS WELL KNOWN ENERGY AND SAGACITY + FURTHER ARRESTS MAY BE EXPECTED AT ANY MOMENT + THAT IS SATISFACTORY SO FAR AS IT GOES THOUGHT I. FRIEND SHOLTO IS SAFE AT ANY RATE + I WONDER WHAT THE FRESH CLUE MAY BE THOUGH IT SEEMS TO BE A STEREOTYPED FORM WHENEVER THE POLICE HAVE MADE A BLUNDER + I TOSSED THE PAPER DOWN UPON THE TABLE BUT AT THAT MOMENT MY EYE CAUGHT AN ADVERTISEMENT IN THE AGONY COLUMN + IT RAN IN THIS WAY LOST WHEREAS MORDECAI SMITH BOATMAN AND HIS SON JIM LEFT SMITH'S WHARF AT OR ABOUT THREE O'CLOCK LAST TUESDAY MORNING IN THE STEAM LAUNCH AURORA BLACK WITH TWO RED STRIPES FUNNEL BLACK WITH A WHITE BAND THE SUM OF FIVE POUNDS WILL BE PAID TO ANYONE WHO CAN GIVE INFORMATION TO MRS. SMITH AT SMITH'S WHARF OR AT TWENTY TWO L. B. BAKER STREET AS TO THE WHEREABOUTS OF THE SAID MORDECAI SMITH AND THE LAUNCH AURORA + THIS WAS CLEARLY HOLMES'S DOING + THE BAKER STREET ADDRESS WAS ENOUGH TO PROVE THAT + IT STRUCK ME AS RATHER INGENIOUS BECAUSE IT MIGHT BE READ BY THE FUGITIVES WITHOUT THEIR SEEING IN IT MORE THAN THE NATURAL ANXIETY OF A WIFE FOR HER MISSING HUSBAND + IT WAS A LONG DAY + EVERY TIME THAT A KNOCK CAME TO THE DOOR OR A SHARP STEP PASSED IN THE STREET I IMAGINED THAT IT WAS EITHER HOLMES RETURNING OR AN ANSWER TO HIS ADVERTISEMENT + I TRIED TO READ BUT MY THOUGHTS WOULD WANDER OFF TO OUR STRANGE QUEST AND TO THE ILL ASSORTED AND VILLAINOUS PAIR WHOM WE WERE PURSUING + COULD THERE BE I WONDERED SOME RADICAL FLAW IN MY COMPANION'S REASONING + MIGHT HE NOT BE SUFFERING FROM SOME HUGE SELF DECEPTION + WAS IT NOT POSSIBLE THAT HIS NIMBLE AND SPECULATIVE MIND HAD BUILT UP THIS WILD THEORY UPON FAULTY PREMISES + I HAD NEVER KNOWN HIM TO BE WRONG AND YET THE KEENEST REASONER MAY OCCASIONALLY BE DECEIVED + HE WAS LIKELY I THOUGHT TO FALL INTO ERROR THROUGH THE OVER REFINEMENT OF HIS LOGIC HIS PREFERENCE FOR A SUBTLE AND BIZARRE EXPLANATION WHEN A PLAINER AND MORE COMMONPLACE ONE LAY READY TO HIS HAND + YET ON THE OTHER HAND I HAD MYSELF SEEN THE EVIDENCE AND I HAD HEARD THE REASONS FOR HIS DEDUCTIONS + WHEN I LOOKED BACK ON THE LONG CHAIN OF CURIOUS CIRCUMSTANCES MANY OF THEM TRIVIAL IN THEMSELVES BUT ALL TENDING IN THE SAME DIRECTION I COULD NOT DISGUISE FROM MYSELF THAT EVEN IF HOLMES'S EXPLANATION WERE INCORRECT THE TRUE THEORY MUST BE EQUALLY OUTRE AND STARTLING + AT THREE O'CLOCK ON THE AFTERNOON THERE WAS A LOUD PEAL AT THE BELL AN AUTHORITATIVE VOICE IN THE HALL AND TO MY SURPRISE NO LESS A PERSON THAN MR. ATHELNEY JONES WAS SHOWN UP TO ME + VERY DIFFERENT WAS HE HOWEVER FROM THE BRUSQUE AND MASTERFUL PROFESSOR OF COMMON SENSE WHO HAD TAKEN OVER THE CASE SO CONFIDENTLY AT UPPER NORWOOD + HIS EXPRESSION WAS DOWNCAST AND HIS BEARING MEEK AND EVEN APOLOGETIC + QUOTE GOOD DAY SIR GOOD DAY QUOTE SAID HE + MR. SHERLOCK HOLMES IS OUT I UNDERSTAND + YES AND I CANNOT BE SURE WHEN HE WILL BE BACK + BUT PERHAPS YOU WOULD CARE TO WAIT + TAKE THAT CHAIR AND TRY ONE OF THESE CIGARS + THANK YOU I DON'T MIND IF I DO SAID HE MOPPING HIS FACE WITH A RED BANDANNA HANDKERCHIEF + AND A WHISKY AND SODA + QUOTE WELL HALF A GLASS + IT IS VERY HOT FOR THE TIME OF YEAR AND I HAVE HAD A GOOD DEAL TO WORRY AND TRY ME + YOU KNOW MY THEORY ABOUT THIS NORWOOD CASE + I REMEMBER THAT YOU EXPRESSED ONE + WELL I HAVE BEEN OBLIGED TO RECONSIDER IT + I HAD MY NET DRAWN TIGHTLY ROUND MR. SHOLTO SIR WHEN POP HE WENT THROUGH A HOLE IN THE MIDDLE OF IT + HE WAS ABLE TO PROVE AN ALIBI WHICH COULD NOT BE SHAKEN + FROM THE TIME THAT HE LEFT HIS BROTHER'S ROOM HE WAS NEVER OUT OF SIGHT OF SOMEONE OR OTHER + SO IT COULD NOT BE HE WHO CLIMBED OVER ROOFS AND THROUGH TRAPDOORS + IT'S A VERY DARK CASE AND MY PROFESSIONAL CREDIT IS AT STAKE + I SHOULD BE VERY GLAD OF A LITTLE ASSISTANCE + WE ALL NEED HELP SOMETIMES SAID I + QUOTE YOUR FRIEND MR. SHERLOCK HOLMES IS A WONDERFUL MAN SIR QUOTE SAID HE IN A HUSKY AND CONFIDENTIAL VOICE + HE'S A MAN WHO IS NOT TO BE BEAT + I HAVE KNOWN THAT YOUNG MAN GO INTO A GOOD MANY CASES BUT I NEVER SAW THE CASE YET THAT HE COULD NOT THROW A LIGHT UPON + HE IS IRREGULAR IN HIS METHODS AND A LITTLE QUICK PERHAPS IN JUMPING AT THEORIES BUT ON THE WHOLE I THINK HE WOULD HAVE MADE A MOST PROMISING OFFICER AND I DON'T CARE WHO KNOWS IT + I HAVE HAD A WIRE FROM HIM THIS MORNING BY WHICH I UNDERSTAND THAT HE HAS GOT SOME CLUE TO THIS SHOLTO BUSINESS + HERE IS HIS MESSAGE + HE TOOK THE TELEGRAM OUT OF HIS POCKET AND HANDED IT TO ME + IT WAS DATED FROM POPLAR AT TWELVE O'CLOCK + GO TO BAKER STREET AT ONCE IT SAID + IF I HAVE NOT RETURNED WAIT FOR ME + I AM CLOSE ON THE TRACK OF THE SHOLTO GANG + YOU CAN COME WITH US TO NIGHT IF YOU WANT TO BE IN AT THE FINISH + THIS SOUNDS WELL + HE HAS EVIDENTLY PICKED UP THE SCENT AGAIN SAID I + AH THEN HE HAS BEEN AT FAULT TOO EXCLAIMED JONES WITH EVIDENT SATISFACTION + QUOTE EVEN THE BEST OF US ARE THROWN OFF SOMETIMES + OF COURSE THIS MAY PROVE TO BE A FALSE ALARM BUT IT IS MY DUTY AS AN OFFICER OF THE LAW TO ALLOW NO CHANCE TO SLIP + BUT THERE IS SOMEONE AT THE DOOR + PERHAPS THIS IS HE + A HEAVY STEP WAS HEARD ASCENDING THE STAIR WITH A GREAT WHEEZING AND RATTLING AS FROM A MAN WHO WAS SORELY PUT TO IT FOR BREATH + ONCE OR TWICE HE STOPPED AS THOUGH THE CLIMB WERE TOO MUCH FOR HIM BUT AT LAST HE MADE HIS WAY TO OUR DOOR AND ENTERED + HIS APPEARANCE CORRESPONDED TO THE SOUNDS WHICH WE HAD HEARD + HE WAS AN AGED MAN CLAD IN SEAFARING GARB WITH AN OLD PEA JACKET BUTTONED UP TO HIS THROAT + HIS BACK WAS BOWED HIS KNEES WERE SHAKY AND HIS BREATHING WAS PAINFULLY ASTHMATIC + AS HE LEANED UPON A THICK OAKEN CUDGEL HIS SHOULDERS HEAVED IN THE EFFORT TO DRAW THE AIR INTO HIS LUNGS + HE HAD A COLOURED SCARF ROUND HIS CHIN AND I COULD SEE LITTLE OF HIS FACE SAVE A PAIR OF KEEN DARK EYES OVERHUNG BY BUSHY WHITE BROWS AND LONG GRAY SIDE WHISKERS + ALTOGETHER HE GAVE ME THE IMPRESSION OF A RESPECTABLE MASTER MARINER WHO HAD FALLEN INTO YEARS AND POVERTY + WHAT IS IT MY MAN + I ASKED + HE LOOKED ABOUT HIM IN THE SLOW METHODICAL FASHION OF OLD AGE + IS MR. SHERLOCK HOLMES HERE SAID HE + NO BUT I AM ACTING FOR HIM + YOU CAN TELL ME ANY MESSAGE YOU HAVE FOR HIM + QUOTE IT WAS TO HIM HIMSELF I WAS TO TELL IT QUOTE SAID HE + BUT I TELL YOU THAT I AM ACTING FOR HIM + WAS IT ABOUT MORDECAI SMITH'S BOAT + YES + I KNOWS WELL WHERE IT IS + AN I KNOWS WHERE THE MEN HE IS AFTER ARE + AN I KNOWS WHERE THE TREASURE IS + I KNOWS ALL ABOUT IT + THEN TELL ME AND I SHALL LET HIM KNOW + IT WAS TO HIM I WAS TO TELL IT HE REPEATED WITH THE PETULANT OBSTINACY OF A VERY OLD MAN + QUOTE WELL YOU MUST WAIT FOR HIM QUOTE + NO NO I AIN'T GOIN' TO LOSE A WHOLE DAY TO PLEASE NO ONE + IF MR. HOLMES AIN'T HERE THEN MR. HOLMES MUST FIND IT ALL OUT FOR HIMSELF + I DON'T CARE ABOUT THE LOOK OF EITHER OF YOU AND I WON'T TELL A WORD + HE SHUFFLED TOWARDS THE DOOR BUT ATHELNEY JONES GOT IN FRONT OF HIM + WAIT A BIT MY FRIEND SAID HE + YOU HAVE IMPORTANT INFORMATION AND YOU MUST NOT WALK OFF + WE SHALL KEEP YOU WHETHER YOU LIKE OR NOT UNTIL OUR FRIEND RETURNS + THE OLD MAN MADE A LITTLE RUN TOWARDS THE DOOR BUT AS ATHELNEY JONES PUT HIS BROAD BACK UP AGAINST IT HE RECOGNIZED THE USELESSNESS OF RESISTANCE + QUOTE PRETTY SORT O' TREATMENT THIS QUOTE HE CRIED STAMPING HIS STICK + I COME HERE TO SEE A GENTLEMAN AND YOU TWO WHO I NEVER SAW IN MY LIFE SEIZE ME AND TREAT ME IN THIS FASHION + YOU WILL BE NONE THE WORSE I SAID + WE SHALL RECOMPENSE YOU FOR THE LOSS OF YOUR TIME + SIT OVER HERE ON THE SOFA AND YOU WILL NOT HAVE LONG TO WAIT + HE CAME ACROSS SULLENLY ENOUGH AND SEATED HIMSELF WITH HIS FACE RESTING ON HIS HANDS + JONES AND I RESUMED OUR CIGARS AND OUR TALK + SUDDENLY HOWEVER HOLMES'S VOICE BROKE IN UPON US + I THINK THAT YOU MIGHT OFFER ME A CIGAR TOO HE SAID + WE BOTH STARTED IN OUR CHAIRS + THERE WAS HOLMES SITTING CLOSE TO US WITH AN AIR OF QUIET AMUSEMENT + QUOTE HOLMES QUOTE + I EXCLAIMED + YOU HERE + BUT WHERE IS THE OLD MAN + HERE IS THE OLD MAN SAID HE HOLDING OUT A HEAP OF WHITE HAIR + HERE HE IS WIG WHISKERS EYEBROWS AND ALL + I THOUGHT MY DISGUISE WAS PRETTY GOOD BUT I HARDLY EXPECTED THAT IT WOULD STAND THAT TEST + QUOTE AH YOU ROGUE QUOTE CRIED JONES HIGHLY DELIGHTED + YOU WOULD HAVE MADE AN ACTOR AND A RARE ONE + YOU HAD THE PROPER WORKHOUSE COUGH AND THOSE WEAK LEGS OF YOURS ARE WORTH TEN POUND A WEEK + I THOUGHT I KNEW THE GLINT OF YOUR EYE THOUGH + YOU DIDN'T GET AWAY FROM US SO EASILY YOU SEE + I HAVE BEEN WORKING IN THAT GET UP ALL DAY SAID HE LIGHTING HIS CIGAR + YOU SEE A GOOD MANY OF THE CRIMINAL CLASSES BEGIN TO KNOW ME ESPECIALLY SINCE OUR FRIEND HERE TOOK TO PUBLISHING SOME OF MY CASES SO I CAN ONLY GO ON THE WAR PATH UNDER SOME SIMPLE DISGUISE LIKE THIS + YOU GOT MY WIRE + QUOTE YES THAT WAS WHAT BROUGHT ME HERE QUOTE + HOW HAS YOUR CASE PROSPERED + IT HAS ALL COME TO NOTHING + I HAVE HAD TO RELEASE TWO OF MY PRISONERS AND THERE IS NO EVIDENCE AGAINST THE OTHER TWO + NEVER MIND + WE SHALL GIVE YOU TWO OTHERS IN THE PLACE OF THEM + BUT YOU MUST PUT YOURSELF UNDER MY ORDERS + YOU ARE WELCOME TO ALL THE OFFICIAL CREDIT BUT YOU MUST ACT ON THE LINES THAT I POINT OUT + IS THAT AGREED + QUOTE ENTIRELY IF YOU WILL HELP ME TO THE MEN QUOTE + WELL THEN IN THE FIRST PLACE I SHALL WANT A FAST POLICEBOAT A STEAM LAUNCH TO BE AT THE WESTMINSTER STAIRS AT SEVEN O'CLOCK + THAT IS EASILY MANAGED + THERE IS ALWAYS ONE ABOUT THERE BUT I CAN STEP ACROSS THE ROAD AND TELEPHONE TO MAKE SURE + THEN I SHALL WANT TWO STAUNCH MEN IN CASE OF RESISTANCE + THERE WILL BE TWO OR THREE IN THE BOAT + WHAT ELSE QUOTE + WHEN WE SECURE THE MEN WE SHALL GET THE TREASURE + I THINK THAT IT WOULD BE A PLEASURE TO MY FRIEND HERE TO TAKE THE BOX ROUND TO THE YOUNG LADY TO WHOM HALF OF IT RIGHTFULLY BELONGS + LET HER BE THE FIRST TO OPEN IT + EH WATSON + IT WOULD BE A GREAT PLEASURE TO ME + RATHER AN IRREGULAR PROCEEDING SAID JONES SHAKING HIS HEAD + HOWEVER THE WHOLE THING IS IRREGULAR AND I SUPPOSE WE MUST WINK AT IT + THE TREASURE MUST AFTERWARDS BE HANDED OVER TO THE AUTHORITIES UNTIL AFTER THE OFFICIAL INVESTIGATION QUOTE + CERTAINLY + THAT IS EASILY MANAGED + ONE OTHER POINT + I SHOULD MUCH LIKE TO HAVE A FEW DETAILS ABOUT THIS MATTER FROM THE LIPS OF JONATHAN SMALL HIMSELF + YOU KNOW I LIKE TO WORK THE DETAILS OF MY CASES OUT + THERE IS NO OBJECTION TO MY HAVING AN UNOFFICIAL INTERVIEW WITH HIM EITHER HERE IN MY ROOMS OR ELSEWHERE AS LONG AS HE IS EFFICIENTLY GUARDED + WELL YOU ARE MASTER OF THE SITUATION + I HAVE HAD NO PROOF YET OF THE EXISTENCE OF THIS JONATHAN SMALL + HOWEVER IF YOU CAN CATCH HIM I DON'T SEE HOW I CAN REFUSE YOU AN INTERVIEW WITH HIM + THAT IS UNDERSTOOD THEN + QUOTE PERFECTLY + IS THERE ANYTHING ELSE + ONLY THAT I INSIST UPON YOUR DINING WITH US + IT WILL BE READY IN HALF AN HOUR + I HAVE OYSTERS AND A BRACE OF GROUSE WITH SOMETHING A LITTLE CHOICE IN WHITE WINES WATSON YOU HAVE NEVER YET RECOGNIZED MY MERITS AS A HOUSEKEEPER + CHAPTER TEN THE END OF THE ISLANDER + OUR MEAL WAS A MERRY ONE + HOLMES COULD TALK EXCEEDINGLY WELL WHEN HE CHOSE AND THAT NIGHT HE DID CHOOSE + HE APPEARED TO BE IN A STATE OF NERVOUS EXALTATION + I HAVE NEVER KNOWN HIM SO BRILLIANT + HE SPOKE ON A QUICK SUCCESSION OF SUBJECTS ON MIRACLE PLAYS ON MEDIEVAL POTTERY ON STRADIVARIUS VIOLINS ON THE BUDDHISM OF CEYLON AND ON THE WARSHIPS OF THE FUTURE HANDLING EACH AS THOUGH HE HAD MADE A SPECIAL STUDY OF IT + HIS BRIGHT HUMOUR MARKED THE REACTION FROM HIS BLACK DEPRESSION OF THE PRECEDING DAYS + ATHELNEY JONES PROVED TO BE A SOCIABLE SOUL IN HIS HOURS OF RELAXATION AND FACED HIS DINNER WITH THE AIR OF A BON VIVANT + FOR MYSELF I FELT ELATED AT THE THOUGHT THAT WE WERE NEARING THE END OF OUR TASK AND I CAUGHT SOMETHING OF HOLMES'S GAIETY + NONE OF US ALLUDED DURING DINNER TO THE CAUSE WHICH HAD BROUGHT US TOGETHER + WHEN THE CLOTH WAS CLEARED HOLMES GLANCED AT HIS WATCH AND FILLED UP THREE GLASSES WITH PORT + ONE BUMPER SAID HE TO THE SUCCESS OF OUR LITTLE EXPEDITION + AND NOW IT IS HIGH TIME WE WERE OFF + HAVE YOU A PISTOL WATSON + QUOTE I HAVE MY OLD SERVICE REVOLVER IN MY DESK QUOTE + YOU HAD BEST TAKE IT THEN + IT IS WELL TO BE PREPARED + I SEE THAT THE CAB IS AT THE DOOR + I ORDERED IT FOR HALF PAST SIX + IT WAS A LITTLE PAST SEVEN BEFORE WE REACHED THE WESTMINSTER WHARF AND FOUND OUR LAUNCH AWAITING US + HOLMES EYED IT CRITICALLY + IS THERE ANYTHING TO MARK IT AS A POLICE BOAT + YES THAT GREEN LAMP AT THE SIDE + THEN TAKE IT OFF + THE SMALL CHANGE WAS MADE WE STEPPED ON BOARD AND THE ROPES WERE CAST OFF + JONES HOLMES AND I SAT IN THE STERN + THERE WAS ONE MAN AT THE RUDDER ONE TO TEND THE ENGINES AND TWO BURLY POLICE INSPECTORS FORWARD + QUOTE WHERE TO QUOTE ASKED JONES + TO THE TOWER + TELL THEM TO STOP OPPOSITE TO JACOBSON'S YARD + OUR CRAFT WAS EVIDENTLY A VERY FAST ONE + WE SHOT PAST THE LONG LINES OF LOADED BARGES AS THOUGH THEY WERE STATIONARY + HOLMES SMILED WITH SATISFACTION AS WE OVERHAULED A RIVER STEAMER AND LEFT HER BEHIND US + WE OUGHT TO BE ABLE TO CATCH ANYTHING ON THE RIVER HE SAID + WELL HARDLY THAT + BUT THERE ARE NOT MANY LAUNCHES TO BEAT US + QUOTE WE SHALL HAVE TO CATCH THE AURORA AND SHE HAS A NAME FOR BEING A CLIPPER + I WILL TELL YOU HOW THE LAND LIES WATSON + YOU RECOLLECT HOW ANNOYED I WAS AT BEING BAULKED BY SO SMALL A THING + YES + WELL I GAVE MY MIND A THOROUGH REST BY PLUNGING INTO A CHEMICAL ANALYSIS + ONE OF OUR GREATEST STATESMEN HAS SAID THAT A CHANGE OF WORK IS THE BEST REST + SO IT IS + WHEN I HAD SUCCEEDED IN DISSOLVING THE HYDROCARBON WHICH I WAS AT WORK AT I CAME BACK TO OUR PROBLEM OF THE SHOLTOS AND THOUGHT THE WHOLE MATTER OUT AGAIN + MY BOYS HAD BEEN UP THE RIVER AND DOWN THE RIVER WITHOUT RESULT + THE LAUNCH WAS NOT AT ANY LANDING STAGE OR WHARF NOR HAD IT RETURNED + YET IT COULD HARDLY HAVE BEEN SCUTTLED TO HIDE THEIR TRACES THOUGH THAT ALWAYS REMAINED AS A POSSIBLE HYPOTHESIS IF ALL ELSE FAILED + I KNEW THAT THIS MAN SMALL HAD A CERTAIN DEGREE OF LOW CUNNING BUT I DID NOT THINK HIM CAPABLE OF ANYTHING IN THE NATURE OF DELICATE FINESSE + THAT IS USUALLY A PRODUCT OF HIGHER EDUCATION + I THEN REFLECTED THAT SINCE HE HAD CERTAINLY BEEN IN LONDON SOME TIME AS WE HAD EVIDENCE THAT HE MAINTAINED A CONTINUAL WATCH OVER PONDICHERRY LODGE HE COULD HARDLY LEAVE AT A MOMENT'S NOTICE BUT WOULD NEED SOME LITTLE TIME IF IT WERE ONLY A DAY TO ARRANGE HIS AFFAIRS + THAT WAS THE BALANCE OF PROBABILITY AT ANY RATE + IT SEEMS TO ME TO BE A LITTLE WEAK SAID I IT IS MORE PROBABLE THAT HE HAD ARRANGED HIS AFFAIRS BEFORE EVER HE SET OUT UPON HIS EXPEDITION + QUOTE NO I HARDLY THINK SO + THIS LAIR OF HIS WOULD BE TOO VALUABLE A RETREAT IN CASE OF NEED FOR HIM TO GIVE IT UP UNTIL HE WAS SURE THAT HE COULD DO WITHOUT IT + BUT A SECOND CONSIDERATION STRUCK ME + JONATHAN SMALL MUST HAVE FELT THAT THE PECULIAR APPEARANCE OF HIS COMPANION HOWEVER MUCH HE MAY HAVE TOP COATED HIM WOULD GIVE RISE TO GOSSIP AND POSSIBLY BE ASSOCIATED WITH THIS NORWOOD TRAGEDY + HE WAS QUITE SHARP ENOUGH TO SEE THAT + THEY HAD STARTED FROM THEIR HEADQUARTERS UNDER COVER OF DARKNESS AND HE WOULD WISH TO GET BACK BEFORE IT WAS BROAD LIGHT + NOW IT WAS PAST THREE O'CLOCK ACCORDING TO MRS. SMITH WHEN THEY GOT THE BOAT + IT WOULD BE QUITE BRIGHT AND PEOPLE WOULD BE ABOUT IN AN HOUR OR SO + THEREFORE I ARGUED THEY DID NOT GO VERY FAR + THEY PAID SMITH WELL TO HOLD HIS TONGUE RESERVED HIS LAUNCH FOR THE FINAL ESCAPE AND HURRIED TO THEIR LODGINGS WITH THE TREASURE BOX + IN A COUPLE OF NIGHTS WHEN THEY HAD TIME TO SEE WHAT VIEW THE PAPERS TOOK AND WHETHER THERE WAS ANY SUSPICION THEY WOULD MAKE THEIR WAY UNDER COVER OF DARKNESS TO SOME SHIP AT GRAVESEND OR IN THE DOWNS WHERE NO DOUBT THEY HAD ALREADY ARRANGED FOR PASSAGES TO AMERICA OR THE COLONIES + BUT THE LAUNCH + THEY COULD NOT HAVE TAKEN THAT TO THEIR LODGINGS + QUITE SO. L. ARGUED THAT THE LAUNCH MUST BE NO GREAT WAY OFF IN SPITE OF ITS INVISIBILITY + I THEN PUT MYSELF IN THE PLACE OF SMALL AND LOOKED AT IT AS A MAN OF HIS CAPACITY WOULD + HE WOULD PROBABLY CONSIDER THAT TO SEND BACK THE LAUNCH OR TO KEEP IT AT A WHARF WOULD MAKE PURSUIT EASY IF THE POLICE DID HAPPEN TO GET ON HIS TRACK + HOW THEN COULD HE CONCEAL THE LAUNCH AND YET HAVE HER AT HAND WHEN WANTED + I WONDERED WHAT I SHOULD DO MYSELF IF I WERE IN HIS SHOES + I COULD ONLY THINK OF ONE WAY OF DOING IT + I MIGHT HAND THE LAUNCH OVER TO SOME BOAT BUILDER OR REPAIRER WITH DIRECTIONS TO MAKE A TRIFLING CHANGE IN HER + SHE WOULD THEN BE REMOVED TO HIS SHED OR YARD AND SO BE EFFECTUALLY CONCEALED WHILE AT THE SAME TIME I COULD HAVE HER AT A FEW HOURS' NOTICE + QUOTE THAT SEEMS SIMPLE ENOUGH QUOTE + IT IS JUST THESE VERY SIMPLE THINGS WHICH ARE EXTREMELY LIABLE TO BE OVERLOOKED + HOWEVER I DETERMINED TO ACT ON THE IDEA + I STARTED AT ONCE IN THIS HARMLESS SEAMAN'S RIG AND INQUIRED AT ALL THE YARDS DOWN THE RIVER + I DREW BLANK AT FIFTEEN BUT AT THE SIXTEENTH JACOBSON'S I LEARNED THAT THE AURORA HAD BEEN HANDED OVER TO THEM TWO DAYS AGO BY A WOODEN LEGGED MAN WITH SOME TRIVIAL DIRECTIONS AS TO HER RUDDER + THERE AIN'T NAUGHT AMISS WITH HER RUDDER SAID THE FOREMAN + THERE SHE LIES WITH THE RED STREAKS + AT THAT MOMENT WHO SHOULD COME DOWN BUT MORDECAI SMITH THE MISSING OWNER + HE WAS RATHER THE WORSE FOR LIQUOR + I SHOULD NOT OF COURSE HAVE KNOWN HIM BUT HE BELLOWED OUT HIS NAME AND THE NAME OF HIS LAUNCH + I WANT HER TO NIGHT AT EIGHT O'CLOCK SAID HE EIGHT O'CLOCK SHARP MIND FOR I HAVE TWO GENTLEMEN WHO WON'T BE KEPT WAITING + THEY HAD EVIDENTLY PAID HIM WELL FOR HE WAS VERY FLUSH OF MONEY CHUCKING SHILLINGS ABOUT TO THE MEN + I FOLLOWED HIM SOME DISTANCE BUT HE SUBSIDED INTO AN ALEHOUSE SO I WENT BACK TO THE YARD AND HAPPENING TO PICK UP ONE OF MY BOYS ON THE WAY I STATIONED HIM AS A SENTRY OVER THE LAUNCH + HE IS TO STAND AT THE WATER'S EDGE AND WAVE HIS HANDKERCHIEF TO US WHEN THEY START + WE SHALL BE LYING OFF IN THE STREAM AND IT WILL BE A STRANGE THING IF WE DO NOT TAKE MEN TREASURE AND ALL + YOU HAVE PLANNED IT ALL VERY NEATLY WHETHER THEY ARE THE RIGHT MEN OR NOT SAID JONES BUT IF THE AFFAIR WERE IN MY HANDS I SHOULD HAVE HAD A BODY OF POLICE IN JACOBSON'S YARD AND ARRESTED THEM WHEN THEY CAME DOWN + WHICH WOULD HAVE BEEN NEVER + THIS MAN SMALL IS A PRETTY SHREWD FELLOW + HE WOULD SEND A SCOUT ON AHEAD AND IF ANYTHING MADE HIM SUSPICIOUS HE WOULD LIE SNUG FOR ANOTHER WEEK + QUOTE BUT YOU MIGHT HAVE STUCK TO MORDECAI SMITH AND SO BEEN LED TO THEIR HIDING PLACE QUOTE SAID I + IN THAT CASE I SHOULD HAVE WASTED MY DAY + I THINK THAT IT IS A HUNDRED TO ONE AGAINST SMITH KNOWING WHERE THEY LIVE + AS LONG AS HE HAS LIQUOR AND GOOD PAY WHY SHOULD HE ASK QUESTIONS + THEY SEND HIM MESSAGES WHAT TO DO + NO I THOUGHT OVER EVERY POSSIBLE COURSE AND THIS IS THE BEST + WHILE THIS CONVERSATION HAD BEEN PROCEEDING WE HAD BEEN SHOOTING THE LONG SERIES OF BRIDGES WHICH SPAN THE THAMES + AS WE PASSED THE CITY THE LAST RAYS OF THE SUN WERE GILDING THE CROSS UPON THE SUMMIT OF SAINT PAUL'S + IT WAS TWILIGHT BEFORE WE REACHED THE TOWER + THAT IS JACOBSON'S YARD SAID HOLMES POINTING TO A BRISTLE OF MASTS AND RIGGING ON THE SURREY SIDE + CRUISE GENTLY UP AND DOWN HERE UNDER COVER OF THIS STRING OF LIGHTERS + HE TOOK A PAIR OF NIGHT GLASSES FROM HIS POCKET AND GAZED SOME TIME AT THE SHORE + I SEE MY SENTRY AT HIS POST HE REMARKED BUT NO SIGN OF A HANDKERCHIEF + QUOTE SUPPOSE WE GO DOWNSTREAM A SHORT WAY AND LIE IN WAIT FOR THEM QUOTE SAID JONES EAGERLY + WE WERE ALL EAGER BY THIS TIME EVEN THE POLICEMEN AND STOKERS WHO HAD A VERY VAGUE IDEA OF WHAT WAS GOING FORWARD + WE HAVE NO RIGHT TO TAKE ANYTHING FOR GRANTED HOLMES ANSWERED + IT IS CERTAINLY TEN TO ONE THAT THEY GO DOWNSTREAM BUT WE CANNOT BE CERTAIN + FROM THIS POINT WE CAN SEE THE ENTRANCE OF THE YARD AND THEY CAN HARDLY SEE US + IT WILL BE A CLEAR NIGHT AND PLENTY OF LIGHT + WE MUST STAY WHERE WE ARE + SEE HOW THE FOLK SWARM OVER YONDER IN THE GASLIGHT + THEY ARE COMING FROM WORK IN THE YARD + DIRTY LOOKING RASCALS BUT I SUPPOSE EVERY ONE HAS SOME LITTLE IMMORTAL SPARK CONCEALED ABOUT HIM + YOU WOULD NOT THINK IT TO LOOK AT THEM + THERE IS NO A PRIORI PROBABILITY ABOUT IT + A STRANGE ENIGMA IS MAN QUOTE + SOMEONE CALLS HIM A SOUL CONCEALED IN AN ANIMAL I SUGGESTED + WINWOOD READE IS GOOD UPON THE SUBJECT SAID HOLMES + HE REMARKS THAT WHILE THE INDIVIDUAL MAN IS AN INSOLUBLE PUZZLE IN THE AGGREGATE HE BECOMES A MATHEMATICAL CERTAINTY + YOU CAN FOR EXAMPLE NEVER FORETELL WHAT ANY ONE MAN WILL DO BUT YOU CAN SAY WITH PRECISION WHAT AN AVERAGE NUMBER WILL BE UP TO + INDIVIDUALS VARY BUT PERCENTAGES REMAIN CONSTANT + SO SAYS THE STATISTICIAN + BUT DO I SEE A HANDKERCHIEF + SURELY THERE IS A WHITE FLUTTER OVER YONDER + YES IT IS YOUR BOY I CRIED + QUOTE I CAN SEE HIM PLAINLY QUOTE + AND THERE IS THE AURORA EXCLAIMED HOLMES AND GOING LIKE THE DEVIL + FULL SPEED AHEAD ENGINEER + MAKE AFTER THAT LAUNCH WITH THE YELLOW LIGHT + BY HEAVEN I SHALL NEVER FORGIVE MYSELF IF SHE PROVES TO HAVE THE HEELS OF US + SHE HAD SLIPPED UNSEEN THROUGH THE YARD ENTRANCE AND PASSED BETWEEN TWO OR THREE SMALL CRAFT SO THAT SHE HAD FAIRLY GOT HER SPEED UP BEFORE WE SAW HER + NOW SHE WAS FLYING DOWN THE STREAM NEAR IN TO THE SHORE GOING AT A TREMENDOUS RATE + JONES LOOKED GRAVELY AT HER AND SHOOK HIS HEAD + SHE IS VERY FAST HE SAID + I DOUBT IF WE SHALL CATCH HER + WE MUST CATCH HER CRIED HOLMES BETWEEN HIS TEETH + QUOTE HEAP IT ON STOKERS + MAKE HER DO ALL SHE CAN + IF WE BURN THE BOAT WE MUST HAVE THEM + WE WERE FAIRLY AFTER HER NOW + THE FURNACES ROARED AND THE POWERFUL ENGINES WHIZZED AND CLANKED LIKE A GREAT METALLIC HEART + HER SHARP STEEP PROW CUT THROUGH THE STILL RIVER WATER AND SENT TWO ROLLING WAVES TO RIGHT AND TO LEFT OF US + WITH EVERY THROB OF THE ENGINES WE SPRANG AND QUIVERED LIKE A LIVING THING + ONE GREAT YELLOW LANTERN IN OUR BOWS THREW A LONG FLICKERING FUNNEL OF LIGHT IN FRONT OF US + RIGHT AHEAD A DARK BLUR UPON THE WATER SHOWED WHERE THE AURORA LAY AND THE SWIRL OF WHITE FOAM BEHIND HER SPOKE OF THE PACE AT WHICH SHE WAS GOING + WE FLASHED PAST BARGES STEAMERS MERCHANT VESSELS IN AND OUT BEHIND THIS ONE AND ROUND THE OTHER + VOICES HAILED US OUT OF THE DARKNESS BUT STILL THE AURORA THUNDERED ON AND STILL WE FOLLOWED CLOSE UPON HER TRACK + PILE IT ON MEN PILE IT ON CRIED HOLMES LOOKING DOWN INTO THE ENGINE ROOM WHILE THE FIERCE GLOW FROM BELOW BEAT UPON HIS EAGER AQUILINE FACE + GET EVERY POUND OF STEAM YOU CAN + I THINK WE GAIN A LITTLE SAID JONES WITH HIS EYES ON THE AURORA + I AM SURE OF IT SAID I. WE SHALL BE UP WITH HER IN A VERY FEW MINUTES + AT THAT MOMENT HOWEVER AS OUR EVIL FATE WOULD HAVE IT A TUG WITH THREE BARGES IN TOW BLUNDERED IN BETWEEN US + IT WAS ONLY BY PUTTING OUR HELM HARD DOWN THAT WE AVOIDED A COLLISION AND BEFORE WE COULD ROUND THEM AND RECOVER OUR WAY THE AURORA HAD GAINED A GOOD TWO HUNDRED YARDS + SHE WAS STILL HOWEVER WELL IN VIEW AND THE MURKY UNCERTAIN TWILIGHT WAS SETTLING INTO A CLEAR STARLIT NIGHT + OUR BOILERS WERE STRAINED TO THEIR UTMOST AND THE FRAIL SHELL VIBRATED AND CREAKED WITH THE FIERCE ENERGY WHICH WAS DRIVING US ALONG + WE HAD SHOT THROUGH THE POOL PAST THE WEST INDIA DOCKS DOWN THE LONG DEPTFORD REACH AND UP AGAIN AFTER ROUNDING THE ISLE OF DOGS + THE DULL BLUR IN FRONT OF US RESOLVED ITSELF NOW CLEARLY INTO THE DAINTY AURORA + JONES TURNED OUR SEARCHLIGHT UPON HER SO THAT WE COULD PLAINLY SEE THE FIGURES UPON HER DECK + ONE MAN SAT BY THE STERN WITH SOMETHING BLACK BETWEEN HIS KNEES OVER WHICH HE STOOPED + BESIDE HIM LAY A DARK MASS WHICH LOOKED LIKE A NEWFOUNDLAND DOG + THE BOY HELD THE TILLER WHILE AGAINST THE RED GLARE OF THE FURNACE I COULD SEE OLD SMITH STRIPPED TO THE WAIST AND SHOVELLING COALS FOR DEAR LIFE + THEY MAY HAVE HAD SOME DOUBT AT FIRST AS TO WHETHER WE WERE REALLY PURSUING THEM BUT NOW AS WE FOLLOWED EVERY WINDING AND TURNING WHICH THEY TOOK THERE COULD NO LONGER BE ANY QUESTION ABOUT IT + AT GREENWICH WE WERE ABOUT THREE HUNDRED PACES BEHIND THEM + AT BLACKWALL WE COULD NOT HAVE BEEN MORE THAN TWO HUNDRED AND FIFTY + I HAVE COURSED MANY CREATURES IN MANY COUNTRIES DURING MY CHECKERED CAREER BUT NEVER DID SPORT GIVE ME SUCH A WILD THRILL AS THIS MAD FLYING MAN HUNT DOWN THE THAMES + STEADILY WE DREW IN UPON THEM YARD BY YARD + IN THE SILENCE OF THE NIGHT WE COULD HEAR THE PANTING AND CLANKING OF THEIR MACHINERY + THE MAN IN THE STERN STILL CROUCHED UPON THE DECK AND HIS ARMS WERE MOVING AS THOUGH HE WERE BUSY WHILE EVERY NOW AND THEN HE WOULD LOOK UP AND MEASURE WITH A GLANCE THE DISTANCE WHICH STILL SEPARATED US + NEARER WE CAME AND NEARER + JONES YELLED TO THEM TO STOP + WE WERE NOT MORE THAN FOUR BOAT'S LENGTHS BEHIND THEM BOTH BOATS FLYING AT A TREMENDOUS PACE + IT WAS A CLEAR REACH OF THE RIVER WITH BARKING LEVEL UPON ONE SIDE AND THE MELANCHOLY PLUMSTEAD MARSHES UPON THE OTHER + AT OUR HAIL THE MAN IN THE STERN SPRANG UP FROM THE DECK AND SHOOK HIS TWO CLENCHED FISTS AT US CURSING THE WHILE IN A HIGH CRACKED VOICE + HE WAS A GOOD SIZED POWERFUL MAN AND AS HE STOOD POISING HIMSELF WITH LEGS ASTRIDE I COULD SEE THAT FROM THE THIGH DOWNWARD THERE WAS BUT A WOODEN STUMP UPON THE RIGHT SIDE + AT THE SOUND OF HIS STRIDENT ANGRY CRIES THERE WAS MOVEMENT IN THE HUDDLED BUNDLE UPON THE DECK + IT STRAIGHTENED ITSELF INTO A LITTLE BLACK MAN THE SMALLEST I HAVE EVER SEEN WITH A GREAT MISSHAPEN HEAD AND A SHOCK OF TANGLED DISHEVELLED HAIR + HOLMES HAD ALREADY DRAWN HIS REVOLVER AND I WHIPPED OUT MINE AT THE SIGHT OF THIS SAVAGE DISTORTED CREATURE + HE WAS WRAPPED IN SOME SORT OF DARK ULSTER OR BLANKET WHICH LEFT ONLY HIS FACE EXPOSED BUT THAT FACE WAS ENOUGH TO GIVE A MAN A SLEEPLESS NIGHT + NEVER HAVE I SEEN FEATURES SO DEEPLY MARKED WITH ALL BESTIALITY AND CRUELTY + HIS SMALL EYES GLOWED AND BURNED WITH A SOMBRE LIGHT AND HIS THICK LIPS WERE WRITHED BACK FROM HIS TEETH WHICH GRINNED AND CHATTERED AT US WITH HALF ANIMAL FURY + QUOTE FIRE IF HE RAISES HIS HAND QUOTE SAID HOLMES QUIETLY + WE WERE WITHIN A BOAT'S LENGTH BY THIS TIME AND ALMOST WITHIN TOUCH OF OUR QUARRY + I CAN SEE THE TWO OF THEM NOW AS THEY STOOD THE WHITE MAN WITH HIS LEGS FAR APART SHRIEKING OUT CURSES AND THE UNHALLOWED DWARF WITH HIS HIDEOUS FACE AND HIS STRONG YELLOW TEETH GNASHING AT US IN THE LIGHT OF OUR LANTERN + IT WAS WELL THAT WE HAD SO CLEAR A VIEW OF HIM + EVEN AS WE LOOKED HE PLUCKED OUT FROM UNDER HIS COVERING A SHORT ROUND PIECE OF WOOD LIKE A SCHOOL RULER AND CLAPPED IT TO HIS LIPS + OUR PISTOLS RANG OUT TOGETHER + HE WHIRLED ROUND THREW UP HIS ARMS AND WITH A KIND OF CHOKING COUGH FELL SIDEWAYS INTO THE STREAM + I CAUGHT ONE GLIMPSE OF HIS VENOMOUS MENACING EYES AMID THE WHITE SWIRL OF THE WATERS + AT THE SAME MOMENT THE WOODENLEGGED MAN THREW HIMSELF UPON THE RUDDER AND PUT IT HARD DOWN SO THAT HIS BOAT MADE STRAIGHT IN FOR THE SOUTHERN BANK WHILE WE SHOT PAST HER STERN ONLY CLEARING HER BY A FEW FEET + WE WERE ROUND AFTER HER IN AN INSTANT BUT SHE WAS ALREADY NEARLY AT THE BANK + IT WAS A WILD AND DESOLATE PLACE WHERE THE MOON GLIMMERED UPON A WIDE EXPANSE OF MARSH LAND WITH POOLS OF STAGNANT WATER AND BEDS OF DECAYING VEGETATION + THE LAUNCH WITH A DULL THUD RAN UP UPON THE MUD BANK WITH HER BOW IN THE AIR AND HER STERN FLUSH WITH THE WATER + THE FUGITIVE SPRANG OUT BUT HIS STUMP INSTANTLY SANK ITS WHOLE LENGTH INTO THE SODDEN SOIL + IN VAIN HE STRUGGLED AND WRITHED + NOT ONE STEP COULD HE POSSIBLY TAKE EITHER FORWARD OR BACKWARD + HE YELLED IN IMPOTENT RAGE AND KICKED FRANTICALLY INTO THE MUD WITH HIS OTHER FOOT BUT HIS STRUGGLES ONLY BORED HIS WOODEN PIN THE DEEPER INTO THE STICKY BANK + WHEN WE BROUGHT OUR LAUNCH ALONGSIDE HE WAS SO FIRMLY ANCHORED THAT IT WAS ONLY BY THROWING THE END OF A ROPE OVER HIS SHOULDERS THAT WE WERE ABLE TO HAUL HIM OUT AND TO DRAG HIM LIKE SOME EVIL FISH OVER OUR SIDE + THE TWO SMITHS FATHER AND SON SAT SULLENLY IN THEIR LAUNCH BUT CAME ABOARD MEEKLY ENOUGH WHEN COMMANDED + THE AURORA HERSELF WE HAULED OFF AND MADE FAST TO OUR STERN + A SOLID IRON CHEST OF INDIAN WORKMANSHIP STOOD UPON THE DECK + THIS THERE COULD BE NO QUESTION WAS THE SAME THAT HAD CONTAINED THE ILL OMENED TREASURE OF THE SHOLTOS + THERE WAS NO KEY BUT IT WAS OF CONSIDERABLE WEIGHT SO WE TRANSFERRED IT CAREFULLY TO OUR OWN LITTLE CABIN + AS WE STEAMED SLOWLY UPSTREAM AGAIN WE FLASHED OUR SEARCHLIGHT IN EVERY DIRECTION BUT THERE WAS NO SIGN OF THE ISLANDER + SOMEWHERE IN THE DARK OOZE AT THE BOTTOM OF THE THAMES LIE THE BONES OF THAT STRANGE VISITOR TO OUR SHORES + SEE HERE SAID HOLMES POINTING TO THE WOODEN HATCHWAY + WE WERE HARDLY QUICK ENOUGH WITH OUR PISTOLS THERE SURE ENOUGH JUST BEHIND WHERE WE HAD BEEN STANDING STUCK ONE OF THOSE MURDEROUS DARTS WHICH WE KNEW SO WELL + IT MUST HAVE WHIZZED BETWEEN US AT THE INSTANT WE FIRED + HOLMES SMILED AT IT AND SHRUGGED HIS SHOULDERS IN HIS EASY FASHION BUT I CONFESS THAT IT TURNED ME SICK TO THINK OF THE HORRIBLE DEATH WHICH HAD PASSED SO CLOSE TO US THAT NIGHT + CHAPTER ELEVEN THE GREAT AGRA TREASURE + OOR CAPTIVE SAT IN THE CABIN OPPOSITE TO THE IRON BOX WHICH HE HAD DONE SO MUCH AND WAITED SO LONG TO GAIN + HE WAS A SUNBURNED RECKLESS EYED FELLOW WITH A NETWORK OF LINES AND WRINKLES ALL OVER HIS MAHOGANY FEATURES WHICH TOLD OF A HARD OPEN AIR LIFE + THERE WAS A SINGULAR PROMINENCE ABOUT HIS BEARDED CHIN WHICH MARKED A MAN WHO WAS NOT TO BE EASILY TURNED FROM HIS PURPOSE + HIS AGE MAY HAVE BEEN FIFTY OR THEREABOUTS FOR HIS BLACK CURLY HAIR WAS THICKLY SHOT WITH GRAY + HIS FACE IN REPOSE WAS NOT AN UNPLEASING ONE THOUGH HIS HEAVY BROWS AND AGGRESSIVE CHIN GAVE HIM AS I HAD LATELY SEEN A TERRIBLE EXPRESSION WHEN MOVED TO ANGER + HE SAT NOW WITH HIS HANDCUFFED HANDS UPON HIS LAP AND HIS HEAD SUNK UPON HIS BREAST WHILE HE LOOKED WITH HIS KEEN TWINKLING EYES AT THE BOX WHICH HAD BEEN THE CAUSE OF HIS ILL DOINGS + IT SEEMED TO ME THAT THERE WAS MORE SORROW THAN ANGER IN HIS RIGID AND CONTAINED COUNTENANCE + ONCE HE LOOKED UP AT ME WITH A GLEAM OF SOMETHING LIKE HUMOUR IN HIS EYES + WELL JONATHAN SMALL SAID HOLMES LIGHTING A CIGAR I AM SORRY THAT IT HAS COME TO THIS + AND SO AM I SIR HE ANSWERED FRANKLY + I DON'T BELIEVE THAT I CAN SWING OVER THE JOB + I GIVE YOU MY WORD ON THE BOOK THAT I NEVER RAISED HAND AGAINST MR. SHOLTO + IT WAS THAT LITTLE HELL HOUND TONGA WHO SHOT ONE OF HIS CURSED DARTS INTO HIM + I HAD NO PART IN IT SIR + I WAS AS GRIEVED AS IF IT HAD BEEN MY BLOOD RELATION + I WELTED THE LITTLE DEVIL WITH THE SLACK END OF THE ROPE FOR IT BUT IT WAS DONE AND I COULD NOT UNDO IT AGAIN QUOTE + HAVE A CIGAR SAID HOLMES AND YOU HAD BEST TAKE A PULL OUT OF MY FLASK FOR YOU ARE VERY WET + HOW COULD YOU EXPECT SO SMALL AND WEAK A MAN AS THIS BLACK FELLOW TO OVERPOWER MR. SHOLTO AND HOLD HIM WHILE YOU WERE CLIMBING THE ROPE + YOU SEEM TO KNOW AS MUCH ABOUT IT AS IF YOU WERE THERE SIR + THE TRUTH IS THAT I HOPED TO FIND THE ROOM CLEAR + I KNEW THE HABITS OF THE HOUSE PRETTY WELL AND IT WAS THE TIME WHEN MR. SHOLTO USUALLY WENT DOWN TO HIS SUPPER + I SHALL MAKE NO SECRET OF THE BUSINESS + THE BEST DEFENCE THAT I CAN MAKE IS JUST THE SIMPLE TRUTH + NOW IF IT HAD BEEN THE OLD MAJOR I WOULD HAVE SWUNG FOR HIM WITH A LIGHT HEART + I WOULD HAVE THOUGHT NO MORE OF KNIFING HIM THAN OF SMOKING THIS CIGAR + BUT IT'S CURSED HARD THAT I SHOULD BE LAGGED OVER THIS YOUNG SHOLTO WITH WHOM I HAD NO QUARREL WHATEVER + YOU ARE UNDER THE CHARGE OF MR. ATHELNEY JONES OF SCOTLAND YARD + HE IS GOING TO BRING YOU UP TO MY ROOMS AND I SHALL ASK YOU FOR A TRUE ACCOUNT OF THE MATTER + YOU MUST MAKE A CLEAN BREAST OF IT FOR IF YOU DO I HOPE THAT I MAY BE OF USE TO YOU + I THINK T. CAN PROVE THAT THE POISON ACTS SO QUICKLY THAT THE MAN WAS DEAD BEFORE EVER YOU REACHED THE ROOM QUOTE + THAT HE WAS SIR + I NEVER GOT SUCH A TURN IN MY LIFE AS WHEN I SAW HIM GRINNING AT ME WITH HIS HEAD ON HIS SHOULDER AS I CLIMBED THROUGH THE WINDOW + IT FAIRLY SHOOK ME SIR + I'D HAVE HALF KILLED TONGA FOR IT IF HE HAD NOT SCRAMBLED OFF + THAT WAS HOW HE CAME TO LEAVE HIS CLUB AND SOME OF HIS DARTS TOO AS HE TELLS ME WHICH I DARE SAY HELPED TO PUT YOU ON OUR TRACK THOUGH HOW YOU KEPT ON IT IS MORE THAN I CAN TELL + I DON'T FEEL NO MALICE AGAINST YOU FOR IT + BUT IT DOES SEEM A QUEER THING HE ADDED WITH A BITTER SMILE THAT I WHO HAVE A FAIR CLAIM TO HALF A MILLION OF MONEY SHOULD SPEND THE FIRST HALF OF MY LIFE BUILDING A BREAKWATER IN THE ANDAMANS AND AM LIKE TO SPEND THE OTHER HALF DIGGING DRAINS AT DARTMOOR + IT WAS AN EVIL DAY FOR ME WHEN FIRST I CLAPPED EYES UPON THE MERCHANT ACHMET AND HAD TO DO WITH THE AGRA TREASURE WHICH NEVER BROUGHT ANYTHING BUT A CURSE YET UPON THE MAN WHO OWNED IT + TO HIM IT BROUGHT MURDER TO MAJOR SHOLTO IT BROUGHT FEAR AND GUILT TO ME IT HAS MEANT SLAVERY FOR LIFE + AT THIS MOMENT ATHELNEY JONES THRUST HIS BROAD FACE AND HEAVY SHOULDERS INTO THE TINY CABIN + QUITE A FAMILY PARTY HE REMARKED + I THINK I SHALL HAVE A PULL AT THAT FLASK HOLMES + WELL I THINK WE MAY ALL CONGRATULATE EACH OTHER + PITY WE DIDN'T TAKE THE OTHER ALIVE BUT THERE WAS NO CHOICE + I SAY HOLMES YOU MUST CONFESS THAT YOU CUT IT RATHER FINE + IT WAS ALL WE COULD DO TO OVERHAUL HER QUOTE + ALL IS WELL THAT ENDS WELL SAID HOLMES + BUT I CERTAINLY DID NOT KNOW THAT THE AURORA WAS SUCH A CLIPPER + SMITH SAYS SHE IS ONE OF THE FASTEST LAUNCHES ON THE RIVER AND THAT IF HE HAD HAD ANOTHER MAN TO HELP HIM WITH THE ENGINES WE SHOULD NEVER HAVE CAUGHT HER + HE SWEARS HE KNEW NOTHING OF THIS NORWOOD BUSINESS + NEITHER HE DID CRIED OUR PRISONER NOT A WORD + I CHOSE HIS LAUNCH BECAUSE I HEARD THAT SHE WAS A FLIER + WE TOLD HIM NOTHING BUT WE PAID HIM WELL AND HE WAS TO GET SOMETHING HANDSOME IF WE REACHED OUR VESSEL THE ESMERALDA AT GRAVESEND OUTWARD BOUND FOR THE BRAZILS QUOTE + WELL IF HE HAS DONE NO WRONG WE SHALL SEE THAT NO WRONG COMES TO HIM + IF WE ARE PRETTY QUICK IN CATCHING OUR MEN WE ARE NOT SO QUICK IN CONDEMNING THEM + IT WAS AMUSING TO NOTICE HOW THE CONSEQUENTIAL JONES WAS ALREADY BEGINNING TO GIVE HIMSELF AIRS ON THE STRENGTH OF THE CAPTURE + FROM THE SLIGHT SMILE WHICH PLAYED OVER SHERLOCK HOLMES'S FACE I COULD SEE THAT THE SPEECH HAD NOT BEEN LOST UPON HIM + WE WILL BE AT VAUXHALL BRIDGE PRESENTLY SAID JONES AND SHALL LAND YOU DOCTOR WATSON WITH THE TREASURE BOX + I NEED HARDLY TELL YOU THAT I AM TAKING A VERY GRAVE RESPONSIBILITY UPON MYSELF IN DOING THIS + IT IS MOST IRREGULAR BUT OF COURSE AN AGREEMENT IS AN AGREEMENT + I MUST HOWEVER AS A MATTER OF DUTY SEND AN INSPECTOR WITH YOU SINCE YOU HAVE SO VALUABLE A CHARGE + YOU WILL DRIVE NO DOUBT + YES I SHALL DRIVE + QUOTE IT IS A PITY THERE IS NO KEY THAT WE MAY MAKE AN INVENTORY FIRST + YOU WILL HAVE TO BREAK IT OPEN + WHERE IS THE KEY MY MAN + AT THE BOTTOM OF THE RIVER SAID SMALL SHORTLY + HUM + THERE WAS NO USE YOUR GIVING THIS UNNECESSARY TROUBLE + WE HAVE HAD WORK ENOUGH ALREADY THROUGH YOU + HOWEVER DOCTOR I NEED NOT WARN YOU TO BE CAREFUL + BRING THE BOX BACK WITH YOU TO THE BAKER STREET ROOMS + YOU WILL FIND US THERE ON OUR WAY TO THE STATION + THEY LANDED ME AT VAUXHALL WITH MY HEAVY IRON BOX AND WITH A BLUFF GENIAL INSPECTOR AS MY COMPANION + A QUARTER OF AN HOUR'S DRIVE BROUGHT US TO MRS. CECIL FORRESTER'S + THE SERVANT SEEMED SURPRISED AT SO LATE A VISITOR + MRS. CECIL FORRESTER WAS OUT FOR THE EVENING SHE EXPLAINED AND LIKELY TO BE VERY LATE + MISS MORSTAN HOWEVER WAS IN THE DRAWING ROOM SO TO THE DRAWING ROOM I WENT BOX IN HAND LEAVING THE OBLIGING INSPECTOR IN THE CAB + SHE WAS SEATED BY THE OPEN WINDOW DRESSED IN SOME SORT OF WHITE DIAPHANOUS MATERIAL WITH A LITTLE TOUCH OF SCARLET AT THE NECK AND WAIST + THE SOFT LIGHT OF A SHADED LAMP FELL UPON HER AS SHE LEANED BACK IN THE BASKET CHAIR PLAYING OVER HER SWEET GRAVE FACE AND TINTING WITH A DULL METALLIC SPARKLE THE RICH COILS OF HER LUXURIANT HAIR + ONE WHITE ARM AND HAND DROOPED OVER THE SIDE OF THE CHAIR AND HER WHOLE POSE AND FIGURE SPOKE OF AN ABSORBING MELANCHOLY + AT THE SOUND OF MY FOOTFALL SHE SPRANG TO HER FEET HOWEVER AND A BRIGHT FLUSH OF SURPRISE AND OF PLEASURE COLOURED HER PALE CHEEKS + I HEARD A CAB DRIVE UP SHE SAID + QUOTE I THOUGHT THAT MRS. FORRESTER HAD COME BACK VERY EARLY BUT I NEVER DREAMED THAT IT MIGHT BE YOU + WHAT NEWS HAVE YOU BROUGHT ME + I HAVE BROUGHT SOMETHING BETTER THAN NEWS SAID I PUTTING DOWN THE BOX UPON THE TABLE AND SPEAKING JOVIALLY AND BOISTEROUSLY THOUGH MY HEART WAS HEAVY WITHIN ME + I HAVE BROUGHT YOU SOMETHING WHICH IS WORTH ALL THE NEWS IN THE WORLD + I HAVE BROUGHT YOU A FORTUNE + SHE GLANCED AT THE IRON BOX + IS THAT THE TREASURE THEN SHE ASKED COOLLY ENOUGH + QUOTE YES THIS IS THE GREAT AGRA TREASURE + HALF OF IT IS YOURS AND HALF IS THADDEUS SHOLTO'S + YOU WILL HAVE A COUPLE OF HUNDRED THOUSAND EACH + THINK OF THAT + AN ANNUITY OF TEN THOUSAND POUNDS + THERE WILL BE FEW RICHER YOUNG LADIES IN ENGLAND + IS IT NOT GLORIOUS + I THINK I MUST HAVE BEEN RATHER OVER ACTING MY DELIGHT AND THAT SHE DEFECTED A HOLLOW RING IN MY CONGRATULATIONS FOR I SAW HER EYEBROWS RISE A LITTLE AND SHE GLANCED AT ME CURIOUSLY + IF I HAVE IT SAID SHE I OWE IT TO YOU + NO NO I ANSWERED NOT TO ME BUT TO MY FRIEND SHERLOCK HOLMES + WITH ALL THE WILL IN THE WORLD I COULD NEVER HAVE FOLLOWED UP A CLUE WHICH HAS TAXED EVEN HIS ANALYTICAL GENIUS + AS IT WAS WE VERY NEARLY LOST IT AT THE LAST MOMENT + PRAY SIT DOWN AND TELL ME ALL ABOUT IT DOCTOR WATSON SAID SHE + I NARRATED BRIEFLY WHAT HAD OCCURRED SINCE I HAD SEEN HER LAST + HOLMES'S NEW METHOD OF SEARCH THE DISCOVERY OF THE AURORA THE APPEARANCE OF ATHELNEY JONES OUR EXPEDITION IN THE EVENING AND THE WILD CHASE DOWN THE THAMES + SHE LISTENED WITH PARTED LIPS AND SHINING EYES TO MY RECITAL OF OUR ADVENTURES + WHEN I SPOKE OF THE DART WHICH HAD SO NARROWLY MISSED US SHE TURNED SO WHITE THAT I FEARED THAT SHE WAS ABOUT TO FAINT + QUOTE IT IS NOTHING QUOTE SHE SAID AS I HASTENED TO POUR HER OUT SOME WATER + I AM ALL RIGHT AGAIN + IT WAS A SHOCK TO ME TO HEAR THAT I HAD PLACED MY FRIENDS IN SUCH HORRIBLE PERIL + THAT IS ALL OVER I ANSWERED + IT WAS NOTHING + I WILL TELL YOU NO MORE GLOOMY DETAILS + LET US TURN TO SOMETHING BRIGHTER + THERE IS THE TREASURE + WHAT COULD BE BRIGHTER THAN THAT + I GOT LEAVE TO BRING IT WITH ME THINKING THAT IT WOULD INTEREST YOU TO BE THE FIRST TO SEE IT + QUOTE IT WOULD BE OF THE GREATEST INTEREST TO ME QUOTE SHE SAID + THERE WAS NO EAGERNESS IN HER VOICE HOWEVER + IT HAD STRUCK HER DOUBTLESS THAT IT MIGHT SEEM UNGRACIOUS UPON HER PART TO BE INDIFFERENT TO A PRIZE WHICH HAD COST SO MUCH TO WIN + WHAT A PRETTY BOX SHE SAID STOOPING OVER IT + THIS IS INDIAN WORK I SUPPOSE + YES IT IS BENARES METAL WORK + AND SO HEAVY SHE EXCLAIMED TRYING TO RAISE IT + THE BOX ALONE MUST BE OF SOME VALUE + WHERE IS THE KEY QUOTE + SMALL THREW IT INTO THE THAMES I ANSWERED + I MUST BORROW MRS. FORRESTER'S POKER + THERE WAS IN THE FRONT A THICK AND BROAD HASP WROUGHT IN THE IMAGE OF A SITTING BUDDHA + UNDER THIS I THRUST THE END OF THE POKER AND TWISTED IT OUTWARD AS A LEVER + THE HASP SPRANG OPEN WITH A LOUD SNAP + WITH TREMBLING FINGERS I FLUNG BACK THE LID + WE BOTH STOOD GAZING IN ASTONISHMENT + THE BOX WAS EMPTY + NO WONDER THAT IT WAS HEAVY + THE IRONWORK WAS TWO THIRDS OF AN INCH THICK ALL ROUND + IT WAS MASSIVE WELL MADE AND SOLID LIKE A CHEST CONSTRUCTED TO CARRY THINGS OF GREAT PRICE BUT NOT ONE SHRED OR CRUMB OF METAL OR JEWELLERY LAY WITHIN IT + IT WAS ABSOLUTELY AND COMPLETELY EMPTY + THE TREASURE IS LOST SAID MISS MORSTAN CALMLY + AS I LISTENED TO THE WORDS AND REALIZED WHAT THEY MEANT A GREAT SHADOW SEEMED TO PASS FROM MY SOUL + I DID NOT KNOW HOW THIS AGRA TREASURE HAD WEIGHED ME DOWN UNTIL NOW THAT IT WAS FINALLY REMOVED + IT WAS SELFISH NO DOUBT DISLOYAL WRONG BUT I COULD REALIZE NOTHING SAVE THAT THE GOLDEN BARRIER WAS GONE FROM BETWEEN US + THANK GOD + I EJACULATED FROM MY VERY HEART + SHE LOOKED AT ME WITH A QUICK QUESTIONING SMILE + WHY DO YOU SAY THAT SHE ASKED + QUOTE BECAUSE YOU ARE WITHIN MY REACH AGAIN QUOTE I SAID TAKING HER HAND + SHE DID NOT WITHDRAW IT + BECAUSE I LOVE YOU MARY AS TRULY AS EVER A MAN LOVED A WOMAN + BECAUSE THIS TREASURE THESE RICHES SEALED MY LIPS + NOW THAT THEY ARE GONE I CAN TELL YOU HOW I LOVE YOU + THAT IS WHY I SAID THANK GOD + THEN I SAY THANK GOD TOO SHE WHISPERED AS I DREW HER TO MY SIDE + WHOEVER HAD LOST A TREASURE I KNEW THAT NIGHT THAT I HAD GAINED ONE + CHAPTER TWELVE THE STRANGE STORY OF JONATHAN SMALL + A VERY PATIENT MAN WAS THAT INSPECTOR IN THE CAB FOR IT WAS A WEARY TIME BEFORE I REJOINED HIM + HIS FACE CLOUDED OVER WHEN I SHOWED HIM THE EMPTY BOX + THERE GOES THE REWARD SAID HE GLOOMILY + WHERE THERE IS NO MONEY THERE IS NO PAY + THIS NIGHT'S WORK WOULD HAVE BEEN WORTH A TENNER EACH TO SAM BROWN AND ME IF THE TREASURE HAD BEEN THERE QUOTE + MR. THADDEUS SHOLTO IS A RICH MAN I SAID HE WILL SEE THAT YOU ARE REWARDED TREASURE OR NO + THE INSPECTOR SHOOK HIS HEAD DESPONDENTLY HOWEVER + IT'S A BAD JOB HE REPEATED AND SO MR. ATHELNEY JONES WILL THINK + HIS FORECAST PROVED TO BE CORRECT FOR THE DETECTIVE LOOKED BLANK ENOUGH WHEN I GOT TO BAKER STREET AND SHOWED HIM THE EMPTY BOX + THEY HAD ONLY JUST ARRIVED HOLMES THE PRISONER AND HE FOR THEY HAD CHANGED THEIR PLANS SO FAR AS TO REPORT THEMSELVES AT A STATION UPON THE WAY + MY COMPANION LOUNGED IN HIS ARMCHAIR WITH HIS USUAL LISTLESS EXPRESSION WHILE SMALL SAT STOLIDLY OPPOSITE TO HIM WITH HIS WOODEN LEG COCKED OVER HIS SOUND ONE + AS I EXHIBITED THE EMPTY BOX HE LEANED BACK IN HIS CHAIR AND LAUGHED ALOUD + THIS IS YOUR DOING SMALL SAID ATHELNEY JONES ANGRILY + YES I HAVE PUT IT AWAY WHERE YOU SHALL NEVER LAY HAND UPON IT HE CRIED EXULTANTLY + IT IS MY TREASURE AND IF I CAN'T HAVE THE LOOT I'LL TAKE DARNED GOOD CARE THAT NO ONE ELSE DOES + I TELL YOU THAT NO LIVING MAN HAS ANY RIGHT TO IT UNLESS IT IS THREE MEN WHO ARE IN THE ANDAMAN CONVICT BARRACKS AND MYSELF + I KNOW NOW THAT I CANNOT HAVE THE USE OF IT AND I KNOW THAT THEY CANNOT + I HAVE ACTED ALL THROUGH FOR THEM AS MUCH AS FOR MYSELF + IT'S BEEN THE SIGN OF FOUR WITH US ALWAYS + WELL I KNOW THAT THEY WOULD HAVE HAD ME DO JUST WHAT I HAVE DONE AND THROW THE TREASURE INTO THE THAMES RATHER THAN LET IT GO TO KITH OR KIN OF SHOLTO OR MORSTAN + IT WAS NOT TO MAKE THEM RICH THAT WE DID FOR ACHMET + YOU'LL FIND THE TREASURE WHERE THE KEY IS AND WHERE LITTLE TONGA IS + WHEN I SAW THAT YOUR LAUNCH MUST CATCH US I PUT THE LOOT AWAY IN A SAFE PLACE + THERE ARE NO RUPEES FOR YOU THIS JOURNEY QUOTE + YOU ARE DECEIVING US SMALL SAID ATHELNEY JONES STERNLY IF YOU HAD WISHED TO THROW THE TREASURE INTO THE THAMES IT WOULD HAVE BEEN EASIER FOR YOU TO HAVE THROWN BOX AND ALL + EASIER FOR ME TO THROW AND EASIER FOR YOU TO RECOVER HE ANSWERED WITH A SHREWD SIDE LONG LOOK + THE MAN THAT WAS CLEVER ENOUGH TO HUNT ME DOWN IS CLEVER ENOUGH TO PICK AN IRON BOX FROM THE BOTTOM OF A RIVER + NOW THAT THEY ARE SCATTERED OVER FIVE MILES OR SO IT MAY BE A HARDER JOB + IT WENT TO MY HEART TO DO IT THOUGH + I WAS HALF MAD WHEN YOU CAME UP WITH US + HOWEVER THERE'S NO GOOD GRIEVING OVER IT + I'VE HAD UPS IN MY LIFE AND I'VE HAD DOWNS BUT I'VE LEARNED NOT TO CRY OVER SPILLED MILK + THIS IS A VERY SERIOUS MATTER SMALL SAID THE DETECTIVE + QUOTE IF YOU HAD HELPED JUSTICE INSTEAD OF THWARTING IT IN THIS WAY YOU WOULD HAVE HAD A BETTER CHANCE AT YOUR TRIAL QUOTE + JUSTICE SNARLED THE EX CONVICT + A PRETTY JUSTICE + WHOSE LOOT IS THIS IF IT IS NOT OURS + WHERE IS THE JUSTICE THAT I SHOULD GIVE IT UP TO THOSE WHO HAVE NEVER EARNED IT + LOOK HOW I HAVE EARNED IT + TWENTY LONG YEARS IN THAT FEVER RIDDEN SWAMP ALL DAY AT WORK UNDER THE MANGROVE TREE ALL NIGHT CHAINED UP IN THE FILTHY CONVICT HUTS BITTEN BY MOSQUITOES RACKED WITH AGUE BULLIED BY EVERY CURSED BLACK FACED POLICEMAN WHO LOVED TO TAKE IT OUT OF A WHITE MAN + THAT WAS HOW I EARNED THE AGRA TREASURE AND YOU TALK TO ME OF JUSTICE BECAUSE I CANNOT BEAR TO FEEL THAT I HAVE PAID THIS PRICE ONLY THAT ANOTHER MAY ENJOY IT + I WOULD RATHER SWING A SCORE OF TIMES OR HAVE ONE OF TONGA'S DARTS IN MY HIDE THAN LIVE IN A CONVICT'S CELL AND FEEL THAT ANOTHER MAN IS AT HIS EASE IN A PALACE WITH THE MONEY THAT SHOULD BE MINE + SMALL HAD DROPPED HIS MASK OF STOICISM AND ALL THIS CAME OUT IN A WILD WHIRL OF WORDS WHILE HIS EYES BLAZED AND THE HANDCUFFS CLANKED TOGETHER WITH THE IMPASSIONED MOVEMENT OF HIS HANDS + I COULD UNDERSTAND AS I SAW THE FURY AND THE PASSION OF THE MAN THAT IT WAS NO GROUNDLESS OR UNNATURAL TERROR WHICH HAD POSSESSED MAJOR SHOLTO WHEN HE FIRST LEARNED THAT THE INJURED CONVICT WAS UPON HIS TRACK + YOU FORGET THAT WE KNOW NOTHING OF ALL THIS SAID HOLMES QUIETLY + WE HAVE NOT HEARD YOUR STORY AND WE CANNOT TELL HOW FAR JUSTICE MAY ORIGINALLY HAVE BEEN ON YOUR SIDE + QUOTE WELL SIR YOU HAVE BEEN VERY FAIR SPOKEN TO ME THOUGH I CAN SEE THAT I HAVE YOU TO THANK THAT I HAVE THESE BRACELETS UPON MY WRISTS + STILL I BEAR NO GRUDGE FOR THAT + IT IS ALL FAIR AND ABOVE BOARD + IF YOU WANT TO HEAR MY STORY I HAVE NO WISH TO HOLD IT BACK + WHAT I SAY TO YOU IS GOD'S TRUTH EVERY WORD OF IT + THANK YOU YOU CAN PUT THE GLASS BESIDE ME HERE AND I'LL PUT MY LIPS TO IT IF I AM DRY + I AM A WORCESTERSHIRE MAN MYSELF BORN NEAR PERSHORE + I DARE SAY YOU WOULD FIND A HEAP OF SMALLS LIVING THERE NOW IF YOU WERE TO LOOK + I HAVE OFTEN THOUGHT OF TAKING A LOOK ROUND THERE BUT THE TRUTH IS THAT I WAS NEVER MUCH OF A CREDIT TO THE FAMILY AND I DOUBT IF THEY WOULD BE SO VERY GLAD TO SEE ME + THEY WERE ALL STEADY CHAPEL GOING FOLK SMALL FARMERS WELL KNOWN AND RESPECTED OVER THE COUNTRYSIDE WHILE I WAS ALWAYS A BIT OF A ROVER + AT LAST HOWEVER WHEN I WAS ABOUT EIGHTEEN I GAVE THEM NO MORE TROUBLE FOR I GOT INTO A MESS OVER A GIRL AND COULD ONLY GET OUT OF IT AGAIN BY TAKING THE QUEEN'S SHILLING AND JOINING THE THIRD BUFFS WHICH WAS JUST STARTING FOR INDIA + I WASN'T DESTINED TO DO MUCH SOLDIERING HOWEVER + I HAD JUST GOT PAST THE GOOSE STEP AND LEARNED TO HANDLE MY MUSKET WHEN I WAS FOOL ENOUGH TO GO SWIMMING IN THE GANGES + LUCKILY FOR ME MY COMPANY SERGEANT JOHN HOLDER WAS IN THE WATER AT THE SAME TIME AND HE WAS ONE OF THE FINEST SWIMMERS IN THE SERVICE + A CROCODILE TOOK ME JUST AS I WAS HALFWAY ACROSS AND NIPPED OFF MY RIGHT LEG AS CLEAN AS A SURGEON COULD HAVE DONE IT JUST ABOVE THE KNEE + WHAT WITH THE SHOCK AND THE LOSS OF BLOOD I FAINTED AND SHOULD HAVE BEEN DROWNED IF HOLDER HAD NOT CAUGHT HOLD OF ME AND PADDLED FOR THE BANK + I WAS FIVE MONTHS IN HOSPITAL OVER IT AND WHEN AT LAST I WAS ABLE TO LIMP OUT OF IT WITH THIS TIMBER TOE STRAPPED TO MY STUMP I FOUND MYSELF INVALIDED OUT OF THE ARMY AND UNFITTED FOR ANY ACTIVE OCCUPATION + I WAS AS YOU CAN IMAGINE PRETTY DOWN ON MY LUCK AT THIS TIME FOR I WAS A USELESS CRIPPLE THOUGH NOT YET IN MY TWENTIETH YEAR + HOWEVER MY MISFORTUNE SOON PROVED TO BE A BLESSING IN DISGUISE + A MAN NAMED ABEL WHITE WHO HAD COME OUT THERE AS AN INDIGO PLANTER WANTED AN OVERSEER TO LOOK AFTER HIS COOLIES AND KEEP THEM UP TO THEIR WORK + HE HAPPENED TO BE A FRIEND OF OUR COLONEL'S WHO HAD TAKEN AN INTEREST IN ME SINCE THE ACCIDENT + TO MAKE A LONG STORY SHON THE COLONEL RECOMMENDED ME STRONGLY FOR THE POST AND AS THE WORK WAS MOSTLY TO BE DONE ON HORSEBACK MY LEG WAS NO GREAT OBSTACLE FOR I HAD ENOUGH THIGH LEFT TO KEEP A GOOD GRIP ON THE SADDLE + WHAT I HAD TO DO WAS TO RIDE OVER THE PLANTATION TO KEEP AN EYE ON THE MEN AS THEY WORKED AND TO REPORT THE IDLERS + THE PAY WAS FAIR I HAD COMFORTABLE QUARTERS AND ALTOGETHER I WAS CONTENT TO SPEND THE REMAINDER OF MY LIFE IN INDIGO PLANTING + MR. ABEL WHITE WAS A KIND MAN AND HE WOULD OFTEN DROP INTO MY LITTLE SHANTY AND SMOKE A PIPE WITH ME FOR WHITE FOLK OUT THERE FEEL THEIR HEARTS WARM TO EACH OTHER AS THEY NEVER DO HERE AT HOME + WELL I WAS NEVER IN LUCK'S WAY LONG + SUDDENLY WITHOUT A NOTE OF WARNING THE GREAT MUTINY BROKE UPON US + ONE MONTH INDIA LAY AS STILL AND PEACEFUL TO ALL APPEARANCE AS SURREY OR KENT THE NEXT THERE WERE TWO HUNDRED THOUSAND BLACK DEVILS LET LOOSE AND THE COUNTRY WAS A PERFECT HELL + OF COURSE YOU KNOW ALL ABOUT IT GENTLEMEN A DEAL MORE THAN I DO VERY LIKE SINCE READING IS NOT IN MY LINE + I ONLY KNOW WHAT I SAW WITH MY OWN EYES + OUR PLANTATION WAS AT A PLACE CALLED MUTTRA NEAR THE BORDER OF THE NONHWEST PROVINCES + NIGHT AFTER NIGHT THE WHOLE SKY WAS ALIGHT WITH THE BURNING BUNGALOWS AND DAY AFTER DAY WE HAD SMALL COMPANIES OF EUROPEANS PASSING THROUGH OUR ESTATE WITH THEIR WIVES AND CHILDREN ON THEIR WAY TO AGRA WHERE WERE THE NEAREST TROOPS + MR. ABEL WHITE WAS AN OBSTINATE MAN + HE HAD IT IN HIS HEAD THAT THE AFFAIR HAD BEEN EXAGGERATED AND THAT IT WOULD BLOW OVER AS SUDDENLY AS IT HAD SPRUNG UP + THERE HE SAT ON HIS VERANDA DRINKING WHISKY PEGS AND SMOKING CHEROOTS WHILE THE COUNTRY WAS IN A BLAZE ABOUT HIM + OF COURSE WE STUCK BY HIM I AND DAWSON WHO WITH HIS WIFE. USED TO DO THE BOOK WORK AND THE MANAGING + WELL ONE FINE DAY THE CRASH CAME + I HAD BEEN AWAY ON A DISTANT PLANTATION AND WAS RIDING SLOWLY HOME IN THE EVENING WHEN MY EYE FELL UPON SOMETHING ALL HUDDLED TOGETHER AT THE BOTTOM OF A STEEP NULLAH + I RODE DOWN TO SEE WHAT IT WAS AND THE COLD STRUCK THROUGH MY HEART WHEN I FOUND IT WAS DAWSON'S WIFE ALL CUT INTO RIBBONS AND HALF EATEN BY JACKALS AND NATIVE DOGS + A LITTLE FURTHER UP THE ROAD DAWSON HIMSELF WAS LYING ON HIS FACE QUITE DEAD WITH AN EMPTY REVOLVER IN HIS HAND AND FOUR SEPOYS LYING ACROSS EACH OTHER IN FRONT OF HIM + I REINED UP MY HORSE WONDERING WHICH WAY I SHOULD TURN BUT AT THAT MOMENT I SAW THICK SMOKE CURLING UP FROM ABEL WHITE'S BUNGALOW AND THE FLAMES BEGINNING TO BURST THROUGH THE ROOF + I KNEW THEN THAT I COULD DO MY EMPLOYER NO GOOD BUT WOULD ONLY THROW MY OWN LIFE AWAY IF I MEDDLED IN THE MATTER + FROM WHERE I STOOD I COULD SEE HUNDREDS OF THE BLACK FIENDS WITH THEIR RED COATS STILL ON THEIR BACKS DANCING AND HOWLING ROUND THE BURNING HOUSE + SOME OF THEM POINTED AT ME AND A COUPLE OF BULLETS SANG PAST MY HEAD SO I BROKE AWAY ACROSS THE PADDY FIELDS AND FOUND MYSELF LATE AT NIGHT SAFE WITHIN THE WALLS AT AGRA + AS IT PROVED HOWEVER THERE WAS NO GREAT SAFETY THERE EITHER + THE WHOLE COUNTRY WAS UP LIKE A SWARM OF BEES + WHEREVER THE ENGLISH COULD COLLECT IN LITTLE BANDS THEY HELD JUST THE GROUND THAT THEIR GUNS COMMANDED + EVERYWHERE ELSE THEY WERE HELPLESS FUGITIVES + IT WAS A FIGHT OF THE MILLIONS AGAINST THE HUNDREDS AND THE CRUELLEST PART OF IT WAS THAT THESE MEN THAT WE FOUGHT AGAINST FOOT HORSE AND GUNNERS WERE OUR OWN PICKED TROOPS WHOM WE HAD TAUGHT AND TRAINED HANDLING OUR OWN WEAPONS AND BLOWING OUR OWN BUGLE CALLS + AT AGRA THERE WERE THE THIRD BENGAL FUSILIERS SOME SIKHS TWO TROOPS OF HORSE AND A BATTERY OF ARTILLERY + A VOLUNTEER CORPS OF CLERKS AND MERCHANTS HAD BEEN FORMED AND THIS I JOINED WOODEN LEG AND ALL + WE WENT OUT TO MEET THE REBELS AT SHAHGUNGE EARLY IN JULY AND WE BEAT THEM BACK FOR A TIME BUT OUR POWDER GAVE OUT AND WE HAD TO FALL BACK UPON THE CITY + QUOTE NOTHING BUT THE WORST NEWS CAME TO US FROM EVERY SIDE WHICH IS NOT TO BE WONDERED AT FOR IF YOU LOOK AT THE MAP YOU WILL SEE THAT WE WERE RIGHT IN THE HEART OF IT + LUCKNOW IS RATHER BETTER THAN A HUNDRED MILES TO THE EAST AND CAWNPORE ABOUT AS FAR TO THE SOUTH + FROM EVERY POINT ON THE COMPASS THERE WAS NOTHING BUT TORTURE AND MURDER AND OUTRAGE + THE CITY OF AGRA IS A GREAT PLACE SWARMING WITH FANATICS AND FIERCE DEVIL WORSHIPPERS OF ALL SORTS + OUR HANDFUL OF MEN WERE LOST AMONG THE NARROW WINDING STREETS + OUR LEADER MOVED ACROSS THE RIVER THEREFORE AND TOOK UP HIS POSITION IN THE OLD FORT OF AGRA + I DON'T KNOW IF ANY OF YOU GENTLEMEN HAVE EVER READ OR HEARD ANYTHING OF THAT OLD FORT + IT IS A VERY QUEER PLACE THE QUEEREST THAT EVER I WAS IN AND I HAVE BEEN IN SOME RUM CORNERS TOO + FIRST OF ALL IT IS ENORMOUS IN SIZE + I SHOULD THINK THAT THE ENCLOSURE MUST BE ACRES AND ACRES + THERE IS A MODERN PART WHICH TOOK ALL OUR GARRISON WOMEN CHILDREN STORES AND EVERYTHING ELSE WITH PLENTY OF ROOM OVER + BUT THE MODERN PART IS NOTHING LIKE THE SIZE OF THE OLD QUARTER WHERE NOBODY GOES AND WHICH IS GIVEN OVER TO THE SCORPIONS AND THE CENTIPEDES + IT IS ALL FULL OF GREAT DESERTED HALLS AND WINDING PASSAGES AND LONG CORRIDORS TWISTING IN AND OUT SO THAT IT IS EASY ENOUGH FOR FOLK TO GET LOST IN IT + FOR THIS REASON IT WAS SELDOM THAT ANYONE WENT INTO IT THOUGH NOW AND AGAIN A PARTY WITH TORCHES MIGHT GO EXPLORING + THE RIVER WASHES ALONG THE FRONT OF THE OLD FORT AND SO PROTECTS IT BUT ON THE SIDES AND BEHIND THERE ARE MANY DOORS AND THESE HAD TO BE GUARDED OF COURSE IN THE OLD QUARTER AS WELL AS IN THAT WHICH WAS ACTUALLY HELD BY OUR TROOPS + WE WERE SHORTHANDED WITH HARDLY MEN ENOUGH TO MAN THE ANGLES OF THE BUILDING AND TO SERVE THE GUNS + IT WAS IMPOSSIBLE FOR US THEREFORE TO STATION A STRONG GUARD AT EVERY ONE OF THE INNUMERABLE GATES + WHAT WE DID WAS TO ORGANIZE A CENTRAL GUARDHOUSE IN THE MIDDLE OF THE FORT AND TO LEAVE EACH GATE UNDER THE CHARGE OF ONE WHITE MAN AND TWO OR THREE NATIVES + I WAS SELECTED TO TAKE CHARGE DURING CERTAIN HOURS OF THE NIGHT OF A SMALL ISOLATED DOOR UPON THE SOUTH WEST SIDE OF THE BUILDING + TWO SIKH TROOPERS WERE PLACED UNDER MY COMMAND AND I WAS INSTRUCTED IF ANYTHING WENT WRONG TO FIRE MY MUSKET WHEN I MIGHT RELY UPON HELP COMING AT ONCE FROM THE CENTRAL GUARD + AS THE GUARD WAS A GOOD TWO HUNDRED PACES AWAY HOWEVER AND AS THE SPACE BETWEEN WAS CUT UP INTO A LABYRINTH OF PASSAGES AND CORRIDORS I HAD GREAT DOUBTS AS TO WHETHER THEY COULD ARRIVE IN TIME TO BE OF ANY USE IN CASE OF AN ACTUAL ATTACK + WELL I WAS PRETTY PROUD AT HAVING THIS SMALL COMMAND GIVEN ME SINCE I WAS A RAW RECRUIT AND A GAME LEGGED ONE AT THAT + FOR TWO NIGHTS I KEPT THE WATCH WITH MY PUNJABEES + THEY WERE TALL FIERCE LOOKING CHAPS MAHOMET SINGH AND ABDULLAH KHAN BY NAME BOTH OLD FIGHTING MEN WHO HAD BORNE ARMS AGAINST US AT CHILIAN WALLAH + THEY COULD TALK ENGLISH PRETTY WELL BUT I COULD GET LITTLE OUT OF THEM + THEY PREFERRED TO STAND TOGETHER AND JABBER ALL NIGHT IN THEIR QUEER SIKH LINGO + FOR MYSELF I USED TO STAND OUTSIDE THE GATEWAY LOOKING DOWN ON THE BROAD WINDING RIVER AND ON THE TWINKLING LIGHTS OF THE GREAT CITY + THE BEATING OF DRUMS THE RATTLE OF TOMTOMS AND THE YELLS AND HOWLS OF THE REBELS DRUNK WITH OPIUM AND WITH BANG WERE ENOUGH TO REMIND US ALL NIGHT OF OUR DANGEROUS NEIGHBOURS ACROSS THE STREAM + EVERY TWO HOURS THE OFFICER OF THE NIGHT USED TO COME ROUND TO ALL THE POSTS TO MAKE SURE THAT ALL WAS WELL + THE THIRD NIGHT OF MY WATCH WAS DARK AND DIRTY WITH A SMALL DRIVING RAIN + IT WAS DREARY WORK STANDING IN THE GATEWAY HOUR AFTER HOUR IN SUCH WEATHER + I TRIED AGAIN AND AGAIN TO MAKE MY SIKHS TALK BUT WITHOUT MUCH SUCCESS + AT TWO IN THE MORNING THE ROUNDS PASSED AND BROKE FOR A MOMENT THE WEARINESS OF THE NIGHT + FINDING THAT MY COMPANIONS WOULD NOT BE LED INTO CONVERSATION I TOOK OUT MY PIPE AND LAID DOWN MY MUSKET TO STRIKE THE MATCH + IN AN INSTANT THE TWO SIKHS WERE UPON ME + ONE OF THEM SNATCHED MY FIRELOCK UP AND LEVELLED IT AT MY HEAD WHILE THE OTHER HELD A GREAT KNIFE TO MY THROAT AND SWORE BETWEEN HIS TEETH THAT HE WOULD PLUNGE IT INTO ME IF I MOVED A STEP + MY FIRST THOUGHT WAS THAT THESE FELLOWS WERE IN LEAGUE WITH THE REBELS AND THAT THIS WAS THE BEGINNING OF AN ASSAULT + IF OUR DOOR WERE IN THE HANDS OF THE SEPOYS THE PLACE MUST FALL AND THE WOMEN AND CHILDREN BE TREATED AS THEY WERE IN CAWNPORE + MAYBE YOU GENTLEMEN THINK THAT I AM JUST MAKING OUT A CASE FOR MYSELF BUT I GIVE YOU MY WORD THAT WHEN I THOUGHT OF THAT THOUGH I FELT THE POINT OF THE KNIFE AT MY THROAT I OPENED MY MOUTH WITH THE INTENTION OF GIVING A SCREAM IF IT WAS MY LAST ONE WHICH MIGHT ALARM THE MAIN GUARD + THE MAN WHO HELD ME SEEMED TO KNOW MY THOUGHTS FOR EVEN AS I BRACED MYSELF TO IT HE WHISPERED DON'T MAKE A NOISE + THE FORT IS SAFE ENOUGH + THERE ARE NO REBEL DOGS ON THIS SIDE OF THE RIVER + THERE WAS THE RING OF TRUTH IN WHAT HE SAID AND I KNEW THAT IF I RAISED MY VOICE I WAS A DEAD MAN + I COULD READ IT IN THE FELLOW'S BROWN EYES + I WAITED THEREFORE IN SILENCE TO SEE WHAT IT WAS THAT THEY WANTED FROM ME + QUOTE LISTEN TO ME SAHIB SAID THE TALLER AND FIERCER OF THE PAIR THE ONE WHOM THEY CALLED ABDULLAH KHAN + YOU MUST EITHER BE WITH US NOW OR YOU MUST BE SILENCED FOREVER + THE THING IS TOO GREAT A ONE FOR US TO HESITATE + EITHER YOU ARE HEART AND SOUL WITH US ON YOUR OATH ON THE CROSS OF THE CHRISTIANS OR YOUR BODY THIS NIGHT SHALL BE THROWN INTO THE DITCH AND WE SHALL PASS OVER TO OUR BROTHERS IN THE REBEL ARMY + THERE IS NO MIDDLE WAY + WHICH IS IT TO BE DEATH OR LIFE + WE CAN ONLY GIVE YOU THREE MINUTES TO DECIDE FOR THE TIME IS PASSING AND ALL MUST BE DONE BEFORE THE ROUNDS COME AGAIN + HOW CAN I DECIDE SAID I. YOU HAVE NOT TOLD ME WHAT YOU WANT OF ME + BUT I TELL YOU NOW THAT IF IT IS ANYTHING AGAINST THE SAFETY OF THE FORT I WILL HAVE NO TRUCK WITH IT SO YOU CAN DRIVE HOME YOUR KNIFE AND WELCOME + IT IS NOTHING AGAINST THE FORT SAID HE + WE ONLY ASK YOU TO DO THAT WHICH YOUR COUNTRYMEN COME TO THIS LAND FOR + WE ASK YOU TO BE RICH + IF YOU WILL BE ONE OF US THIS NIGHT WE WILL SWEAR TO YOU UPON THE NAKED KNIFE AND BY THE THREEFOLD OATH WHICH NO SIKH WAS EVER KNOWN TO BREAK THAT YOU SHALL HAVE YOUR FAIR SHARE OF THE LOOT + A QUARTER OF THE TREASURE SHALL BE YOURS + WE CAN SAY NO FAIRER + BUT WHAT IS THE TREASURE THEN + I ASKED + I AM AS READY TO BE RICH AS YOU CAN BE IF YOU WILL BUT SHOW ME HOW IT CAN BE DONE + YOU WILL SWEAR THEN SAID HE BY THE BONES OF YOUR FATHER BY THE HONOUR OF YOUR MOTHER BY THE CROSS OF YOUR FAITH TO RAISE NO HAND AND SPEAK NO WORD AGAINST US EITHER NOW OR AFTERWARDS + I WILL SWEAR IT I ANSWERED PROVIDED THAT THE FORT IS NOT ENDANGERED + QUOTE THEN MY COMRADE AND I WILL SWEAR THAT YOU SHALL HAVE A QUARTER OF THE TREASURE WHICH SHALL BE EQUALLY DIVIDED AMONG THE FOUR OF US + THERE ARE BUT THREE SAID I + NO DOST AKBAR MUST HAVE HIS SHARE + WE CAN TELL THE TALE TO YOU WHILE WE WAIT THEM + DO YOU STAND AT THE GATE MAHOMET SINGH AND GIVE NOTICE OF THEIR COMING + THE THING STANDS THUS SAHIB AND I TELL IT TO YOU BECAUSE I KNOW THAT AN OATH IS BINDING UPON A FERINGHEE AND THAT WE MAY TRUST YOU + HAD YOU BEEN A LYING HINDOO THOUGH YOU HAD SWORN BY ALL THE GODS IN THEIR FALSE TEMPLES YOUR BLOOD WOULD HAVE BEEN UPON THE KNIFE AND YOUR BODY IN THE WATER + BUT THE SIKH KNOWS THE ENGLISHMAN AND THE ENGLISHMAN KNOWS THE SIKH + HEARKEN THEN TO WHAT I HAVE TO SAY + THERE IS A RAJAH IN THE NORTHERN PROVINCES WHO HAS MUCH WEALTH THOUGH HIS LANDS ARE SMALL + MUCH HAS COME TO HIM FROM HIS FATHER AND MORE STILL HE HAS SET BY HIMSELF FOR HE IS OF A LOW NATURE AND HOARDS HIS GOLD RATHER THAN SPEND IT + WHEN THE TROUBLES BROKE OUT HE WOULD BE FRIENDS BOTH WITH THE LION AND THE TIGER WITH THE SEPOY AND WITH THE COMPANY'S RAJ + SOON HOWEVER IT SEEMED TO HIM THAT THE WHITE MEN'S DAY WAS COME FOR THROUGH ALL THE LAND HE COULD HEAR OF NOTHING BUT OF THEIR DEATH AND THEIR OVERTHROW + YET BEING A CAREFUL MAN HE MADE SUCH PLANS THAT COME WHAT MIGHT HALF AT LEAST OF HIS TREASURE SHOULD BE LEFT TO HIM + THAT WHICH WAS IN GOLD AND SILVER HE KEPT BY HIM IN THE VAULTS OF HIS PALACE BUT THE MOST PRECIOUS STONES AND THE CHOICEST PEARLS THAT HE HAD HE PUT IN AN IRON BOX AND SENT IT BY A TRUSTY SERVANT WHO UNDER THE GUISE OF A MERCHANT SHOULD TAKE IT TO THE FORT AT AGRA THERE TO LIE UNTIL THE LAND IS AT PEACE + THUS IF THE REBELS WON HE WOULD HAVE HIS MONEY BUT IF THE COMPANY CONQUERED HIS JEWELS WOULD BE SAVED TO HIM + HAVING THUS DIVIDED HIS HOARD HE THREW HIMSELF INTO THE CAUSE OF THE SEPOYS SINCE THEY WERE STRONG UPON HIS BORDERS + BY HIS DOING THIS MARK YOU SAHIB HIS PROPERTY BECOMES THE DUE OF THOSE WHO HAVE BEEN TRUE TO THEIR SALT + THIS PRETENDED MERCHANT WHO TRAVELS UNDER THE NAME OF ACHMET IS NOW IN THE CITY OF AGRA AND DESIRES TO GAIN HIS WAY INTO THE FORT + HE HAS WITH HIM AS TRAVELLING COMPANION MY FOSTER BROTHER DOST AKBAR WHO KNOWS HIS SECRET + DOST AKBAR HAS PROMISED THIS NIGHT TO LEAD HIM TO A SIDE POSTERN OF THE FORT AND HAS CHOSEN THIS ONE FOR HIS PURPOSE + HERE HE WILL COME PRESENTLY AND HERE HE WILL FIND MAHOMET SINGH AND MYSELF AWAITING HIM + THE PLACE IS LONELY AND NONE SHALL KNOW OF HIS COMING + THE WORLD SHALL KNOW THE MERCHANT ACHMET NO MORE BUT THE GREAT TREASURE OF THE RAJAH SHALL BE DIVIDED AMONG US + WHAT SAY YOU TO IT SAHIB + IN WORCESTERSHIRE THE LIFE OF A MAN SEEMS A GREAT AND A SACRED THING BUT IT IS VERY DIFFERENT WHEN THERE IS FIRE AND BLOOD ALL ROUND YOU AND YOU HAVE BEEN USED TO MEETING DEATH AT EVERY TURN + WHETHER ACHMET THE MERCHANT LIVED OR DIED WAS A THING AS LIGHT AS AIR TO ME BUT AT THE TALK ABOUT THE TREASURE MY HEART TURNED TO IT AND I THOUGHT OF WHAT I MIGHT DO IN THE OLD COUNTRY WITH IT AND HOW MY FOLK WOULD STARE WHEN THEY SAW THEIR NE'ER DO WELL COMING BACK WITH HIS POCKETS FULL OF GOLD MOIDORES + I HAD THEREFORE ALREADY MADE UP MY MIND + ABDULLAH KHAN HOWEVER THINKING THAT I HESITATED PRESSED THE MATTER MORE CLOSELY + QUOTE CONSIDER SAHIB SAID HE THAT IF THIS MAN IS TAKEN BY THE COMMANDANT HE WILL BE HUNG OR SHOT AND HIS JEWELS TAKEN BY THE GOVERNMENT SO THAT NO MAN WILL BE A RUPEE THE BETTER FOR THEM + NOW SINCE WE DO THE TAKING OF HIM WHY SHOULD WE NOT DO THE REST AS WELL + THE JEWELS WILL BE AS WELL WITH US AS IN THE COMPANY'S COFFERS + THERE WILL BE ENOUGH TO MAKE EVERY ONE OF US RICH MEN AND GREAT CHIEFS + NO ONE CAN KNOW ABOUT THE MATTER FOR HERE WE ARE CUT OFF FROM ALL MEN + WHAT COULD BE BETTER FOR THE PURPOSE + SAY AGAIN THEN SAHIB WHETHER YOU ARE WITH US OR IF WE MUST LOOK UPON YOU AS AN ENEMY + I AM WITH YOU HEART AND SOUL SAID I + IT IS WELL HE ANSWERED HANDING ME BACK MY FIRELOCK + YOU SEE THAT WE TRUST YOU FOR YOUR WORD LIKE OURS IS NOT TO BE BROKEN + WE HAVE NOW ONLY TO WAIT FOR MY BROTHER AND THE MERCHANT + DOES YOUR BROTHER KNOW THEN OF WHAT YOU WILL DO + I ASKED + THE PLAN IS HIS + HE HAS DEVISED IT + WE WILL GO TO THE GATE AND SHARE THE WATCH WITH MAHOMET SINGH + THE RAIN WAS STILL FALLING STEADILY FOR IT WAS JUST THE BEGINNING OF THE WET SEASON + BROWN HEAVY CLOUDS WERE DRIFTING ACROSS THE SKY AND IT WAS HARD TO SEE MORE THAN A STONECAST + A DEEP MOAT LAY IN FRONT OF OUR DOOR BUT THE WATER WAS IN PLACES NEARLY DRIED UP AND IT COULD EASILY BE CROSSED + IT WAS STRANGE TO ME TO BE STANDING THERE WITH THOSE TWO WILD PUNJABEES WAITING FOR THE MAN WHO WAS COMING TO HIS DEATH + QUOTE SUDDENLY MY EYE CAUGHT THE GLINT OF A SHADED LANTERN AT THE OTHER SIDE OF THE MOAT + IT VANISHED AMONG THE MOUND HEAPS AND THEN APPEARED AGAIN COMING SLOWLY IN OUR DIRECTION + HERE THEY ARE + I EXCLAIMED + YOU WILL CHALLENGE HIM SAHIB AS USUAL WHISPERED ABDULLAH + GIVE HIM NO CAUSE FOR FEAR + SEND US IN WITH HIM AND WE SHALL DO THE REST WHILE YOU STAY HERE ON GUARD + HAVE THE LANTERN READY TO UNCOVER THAT WE MAY BE SURE THAT IT IS INDEED THE MAN + THE LIGHT HAD FLICKERED ONWARD NOW STOPPING AND NOW ADVANCING UNTIL I COULD SEE TWO DARK FIGURES UPON THE OTHER SIDE OF THE MOAT + I LET THEM SCRAMBLE DOWN THE SLOPING BANK SPLASH THROUGH THE MIRE AND CLIMB HALFWAY UP TO THE GATE BEFORE I CHALLENGED THEM + WHO GOES THERE SAID I IN A SUBDUED VOICE + FRIENDS CAME THE ANSWER + I UNCOVERED MY LANTERN AND THREW A FLOOD OF LIGHT UPON THEM + THE FIRST WAS AN ENORMOUS SIKH WITH A BLACK BEARD WHICH SWEPT NEARLY DOWN TO HIS CUMMERBUND + OUTSIDE OF A SHOW I HAVE NEVER SEEN SO TALL A MAN + THE OTHER WAS A LITTLE FAT ROUND FELLOW WITH A GREAT YELLOW TURBAN AND A BUNDLE IN HIS HAND DONE UP IN A SHAWL + HE SEEMED TO BE ALL IN A QUIVER WITH FEAR FOR HIS HANDS TWITCHED AS IF HE HAD THE AGUE AND HIS HEAD KEPT TURNING TO LEFT AND RIGHT WITH TWO BRIGHT LITTLE TWINKLING EYES LIKE A MOUSE WHEN HE VENTURES OUT FROM HIS HOLE + IT GAVE ME THE CHILLS TO THINK OF KILLING HIM BUT I THOUGHT OF THE TREASURE AND MY HEART SET AS HARD AS A FLINT WITHIN ME + WHEN HE SAW MY WHITE FACE HE GAVE A LITTLE CHIRRUP OF JOY AND CAME RUNNING UP TOWARDS ME + QUOTE YOUR PROTECTION SAHIB HE PANTED YOUR PROTECTION FOR THE UNHAPPY MERCHANT ACHMET + I HAVE TRAVELLED ACROSS RAJPOOTANA THAT I MIGHT SEEK THE SHELTER OF THE FORT AT AGRA + I HAVE BEEN ROBBED AND BEATEN AND ABUSED BECAUSE I HAVE BEEN THE FRIEND OF THE COMPANY + IT IS A BLESSED NIGHT THIS WHEN I AM ONCE MORE IN SAFETY I AND MY POOR POSSESSIONS + WHAT HAVE YOU IN THE BUNDLE + I ASKED + AN IRON BOX HE ANSWERED WHICH CONTAINS ONE OR TWO LITTLE FAMILY MATTERS WHICH ARE OF NO VALUE TO OTHERS BUT WHICH I SHOULD BE SORRY TO LOSE + YET I AM NOT A BEGGAR AND I SHALL REWARD YOU YOUNG SAHIB AND YOUR GOVERNOR ALSO IF HE WILL GIVE ME THE SHELTER I ASK + I COULD NOT TRUST MYSELF TO SPEAK LONGER WITH THE MAN + THE MORE I LOOKED AT HIS FAT FRIGHTENED FACE THE HARDER DID IT SEEM THAT WE SHOULD SLAY HIM IN COLD BLOOD + IT WAS BEST TO GET IT OVER + TAKE HIM TO THE MAIN GUARD SAID I. THE TWO SIKHS CLOSED IN UPON HIM ON EACH SIDE AND THE GIANT WALKED BEHIND WHILE THEY MARCHED IN THROUGH THE DARK GATEWAY + NEVER WAS A MAN SO COMPASSED ROUND WITH DEATH + I REMAINED AT THE GATEWAY WITH THE LANTERN + I COULD HEAR THE MEASURED TRAMP OF THEIR FOOTSTEPS SOUNDING THROUGH THE LONELY CORRIDORS + SUDDENLY IT CEASED AND I HEARD VOICES AND A SCUFFLE WITH THE SOUND OF BLOWS + A MOMENT LATER THERE CAME TO MY HORROR A RUSH OF FOOTSTEPS COMING IN MY DIRECTION WITH A LOUD BREATHING OF A RUNNING MAN + I TURNED MY LANTERN DOWN THE LONG STRAIGHT PASSAGE AND THERE WAS THE FAT MAN RUNNING LIKE THE WIND WITH A SMEAR OF BLOOD ACROSS HIS FACE AND CLOSE AT HIS HEELS BOUNDING LIKE A TIGER THE GREAT BLACK BEARDED SIKH WITH A KNIFE FLASHING IN HIS HAND + I HAVE NEVER SEEN A MAN RUN SO FAST AS THAT LITTLE MERCHANT + HE WAS GAINING ON THE SIKH AND I COULD SEE THAT IF HE ONCE PASSED ME AND GOT TO THE OPEN AIR HE WOULD SAVE HIMSELF YET + MY HEART SOFTENED TO HIM BUT AGAIN THE THOUGHT OF HIS TREASURE TURNED ME HARD AND BITTER + I CAST MY FIRELOCK BETWEEN HIS LEGS AS HE RACED PAST AND HE ROLLED TWICE OVER LIKE A SHOT RABBIT + ERE HE COULD STAGGER TO HIS FEET THE SIKH WAS UPON HIM AND BURIED HIS KNIFE TWICE IN HIS SIDE + THE MAN NEVER UTTERED MOAN NOR MOVED MUSCLE BUT LAY WHERE HE HAD FALLEN + I THINK MYSELF THAT HE MAY HAVE BROKEN HIS NECK WITH THE FALL + YOU SEE GENTLEMEN THAT I AM KEEPING MY PROMISE + I AM TELLING YOU EVERY WORD OF THE BUSINESS JUST EXACTLY AS IT HAPPENED WHETHER IT IS IN MY FAVOUR OR NOT QUOTE + HE STOPPED AND HELD OUT HIS MANACLED HANDS FOR THE WHISKY AND WATER WHICH HOLMES HAD BREWED FOR HIM + FOR MYSELF I CONFESS THAT I HAD NOW CONCEIVED THE UTMOST HORROR OF THE MAN NOT ONLY FOR THIS COLD BLOODED BUSINESS IN WHICH HE HAD BEEN CONCERNED BUT EVEN MORE FOR THE SOMEWHAT FLIPPANT AND CARELESS WAY IN WHICH HE NARRATED IT + WHATEVER PUNISHMENT WAS IN STORE FOR HIM I FELT THAT HE MIGHT EXPECT NO SYMPATHY FROM ME + SHERLOCK HOLMES AND JONES SAT WITH THEIR HANDS UPON THEIR KNEES DEEPLY INTERESTED IN THE STORY BUT WITH THE SAME DISGUST WRITTEN UPON THEIR FACES + HE MAY HAVE OBSERVED IT FOR THERE WAS A TOUCH OF DEFIANCE IN HIS VOICE AND MANNER AS HE PROCEEDED + IT WAS ALL VERY BAD NO DOUBT SAID HE + I SHOULD LIKE TO KNOW HOW MANY FELLOWS IN MY SHOES WOULD HAVE REFUSED A SHARE OF THIS LOOT WHEN THEY KNEW THAT THEY WOULD HAVE THEIR THROATS CUT FOR THEIR PAINS + BESIDES IT WAS MY LIFE OR HIS WHEN ONCE HE WAS IN THE FORT + IF HE HAD GOT OUT THE WHOLE BUSINESS WOULD COME TO LIGHT AND I SHOULD HAVE BEEN COURT MARTIALLED AND SHOT AS LIKELY AS NOT FOR PEOPLE WERE NOT VERY LENIENT AT A TIME LIKE THAT + GO ON WITH YOUR STORY SAID HOLMES SHORTLY + WELL WE CARRIED HIM IN ABDULLAH AKBAR AND I. A FINE WEIGHT HE WAS TOO FOR ALL THAT HE WAS SO SHORRT + MAHOMET SINGH WAS LEFT TO GUARD THE DOOR + WE TOOK HIM TO A PLACE WHICH THE SIKHS HAD ALREADY PREPARED + IT WAS SOME DISTANCE OFF WHERE A WINDING PASSAGE LEADS TO A GREAT EMPTY HALL THE BRICK WALLS OF WHICH WERE ALL CRUMBLING TO PIECES + THE EARTH FLOOR HAD SUNK IN AT ONE PLACE MAKING A NATURAL GRAVE SO WE LEFT ACHMET THE MERCHANT THERE HAVING FIRST COVERED HIM OVER WITH LOOSE BRICKS + THIS DONE WE ALL WENT BACK TO THE TREASURE + QUOTE IT LAY WHERE HE HAD DROPPED IT WHEN HE WAS FIRST ATTACKED + THE BOX WAS THE SAME WHICH NOW LIES OPEN UPON YOUR TABLE + A KEY WAS HUNG BY A SILKEN CORD TO THAT CARVED HANDLE UPON THE TOP + WE OPENED IT AND THE LIGHT OF THE LANTERN GLEAMED UPON A COLLECTION OF GEMS SUCH AS I HAVE READ OF AND THOUGHT ABOUT WHEN I WAS A LITTLE LAD AT PERSHORE + IT WAS BLINDING TO LOOK UPON THEM + WHEN WE HAD FEASTED OUR EYES WE TOOK THEM ALL OUT AND MADE A LIST OF THEM + THERE WERE ONE HUNDRED AND FORTYTHREE DIAMONDS OF THE FIRST WATER INCLUDING ONE WHICH HAS BEEN CALLED I BELIEVE THE GREAT MOGUL AND IS SAID TO BE THE SECOND LARGEST STONE IN EXISTENCE + THEN THERE WERE NINETY SEVEN VERY FINE EMERALDS AND ONE HUNDRED AND SEVENTY RUBIES SOME OF WHICH HOWEVER WERE SMALL + THERE WERE FORTY CARBUNCLES TWO HUNDRED AND TEN SAPPHIRES SIXTY ONE AGATES AND A GREAT QUANTITY OF BERYLS ONYXES CATS' EYES TURQUOISES AND OTHER STONES THE VERY NAMES OF WHICH I DID NOT KNOW AT THE TIME THOUGH I HAVE BECOME MORE FAMILIAR WITH THEM SINCE + BESIDES THIS THERE WERE NEARLY THREE HUNDRED VERY FINE PEARLS TWELVE OF WHICH WERE SET IN A GOLD CORONET + BY THE WAY THESE LAST HAD BEEN TAKEN OUT OF THE CHEST AND WERE NOT THERE WHEN I RECOVERED IT + AFTER WE HAD COUNTED OUR TREASURES WE PUT THEM BACK INTO THE CHEST AND CARRIED THEM TO THE GATEWAY TO SHOW THEM TO MAHOMET SINGH + THEN WE SOLEMNLY RENEWED OUR OATH TO STAND BY EACH OTHER AND BE TRUE TO OUR SECRET + WE AGREED TO CONCEAL OUR LOOT IN A SAFE PLACE UNTIL THE COUNTRY SHOULD BE AT PEACE AGAIN AND THEN TO DIVIDE IT EQUALLY AMONG OURSELVES + THERE WAS NO USE DIVIDING IT AT PRESENT FOR IF GEMS OF SUCH VALUE WERE FOUND UPON US IT WOULD CAUSE SUSPICION AND THERE WAS NO PRIVACY IN THE FORT NOR ANY PLACE WHERE WE COULD KEEP THEM + WE CARRIED THE BOX THEREFORE INTO THE SAME HALL WHERE WE HAD BURIED THE BODY AND THERE UNDER CERTAIN BRICKS IN THE BEST PRESERVED WALL WE MADE A HOLLOW AND PUT OUR TREASURE + WE MADE CAREFUL NOTE OF THE PLACE AND NEXT DAY I DREW FOUR PLANS ONE FOR EACH OF US AND PUT THE SIGN OF THE FOUR OF US AT THE BOTTOM FOR WE HAD SWORN THAT WE SHOULD EACH ALWAYS ACT FOR ALL SO THAT NONE MIGHT TAKE ADVANTAGE + THAT IS AN OATH THAT I CAN PUT MY HAND TO MY HEART AND SWEAR THAT I HAVE NEVER BROKEN + WELL THERE'S NO USE MY TELLING YOU GENTLEMEN WHAT CAME OF THE INDIAN MUTINY + AFTER WILSON TOOK DELHI AND SIR COLIN RELIEVED LUCKNOW THE BACK OF THE BUSINESS WAS BROKEN + FRESH TROOPS CAME POURING IN AND NANA SAHIB MADE HIMSELF SCARCE OVER THE FRONTIER + A FLYING COLUMN UNDER COLONEL GREATHED CAME ROUND TO AGRA AND CLEARED THE PANDIES AWAY FROM IT + PEACE SEEMED TO BE SETTLING UPON THE COUNTRY AND WE FOUR WERE BEGINNING TO HOPE THAT THE TIME WAS AT HAND WHEN WE MIGHT SAFELY GO OFF WITH OUR SHARES OF THE PLUNDER + IN A MOMENT HOWEVER OUR HOPES WERE SHATTERED BY OUR BEING ARRESTED AS THE MURDERERS OF ACHMET + IT CAME ABOUT IN THIS WAY + WHEN THE RAJAH PUT HIS JEWELS INTO THE HANDS OF ACHMET HE DID IT BECAUSE HE KNEW THAT HE WAS A TRUSTY MAN + THEY ARE SUSPICIOUS FOLK IN THE EAST HOWEVER SO WHAT DOES THIS RAJAH DO BUT TAKE A SECOND EVEN MORE TRUSTY SERVANT AND SET HIM TO PLAY THE SPY UPON THE FIRST + THIS SECOND MAN WAS ORDERED NEVER TO LET ACHMET OUT OF HIS SIGHT AND HE FOLLOWED HIM LIKE HIS SHADOW + HE WENT AFTER HIM THAT NIGHT AND SAW HIM PASS THROUGH THE DOORWAY + OF COURSE HE THOUGHT HE HAD TAKEN REFUGE IN THE FORT AND APPLIED FOR ADMISSION THERE HIMSELF NEXT DAY BUT COULD FIND NO TRACE OF ACHMET + THIS SEEMED TO HIM SO STRANGE THAT HE SPOKE ABOUT IT TO A SERGEANT OF GUIDES WHO BROUGHT IT TO THE EARS OF THE COMMANDANT + A THOROUGH SEARCH WAS QUICKLY MADE AND THE BODY WAS DISCOVERED + THUS AT THE VERY MOMENT THAT WE THOUGHT THAT ALL WAS SAFE WE WERE ALL FOUR SEIZED AND BROUGHT TO TRIAL ON A CHARGE OF MURDER THREE OF US BECAUSE WE HAD HELD THE GATE THAT NIGHT AND THE FOURTH BECAUSE HE WAS KNOWN TO HAVE BEEN IN THE COMPANY OF THE MURDERED MAN + NOT A WORD ABOUT THE JEWELS CAME OUT AT THE TRIAL FOR THE RAJAH HAD BEEN DEPOSED AND DRIVEN OUT OF INDIA SO NO ONE HAD ANY PARTICULAR INTEREST IN THEM + THE MURDER HOWEVER WAS CLEARLY MADE OUT AND IT WAS CERTAIN THAT WE MUST ALL HAVE BEEN CONCERNED IN IT + THE THREE SIKHS GOT PENAL SERVITUDE FOR LIFE AND I WAS CONDEMNED TO DEATH THOUGH MY SENTENCE WAS AFTERWARDS COMMUTED TO THE SAME AS THE OTHERS + IT WAS RATHER A QUEER POSITION THAT WE FOUND OURSELVES IN THEN + THERE WE WERE ALL FOUR TIED BY THE LEG AND WITH PRECIOUS LITTLE CHANCE OF EVER GETTING OUT AGAIN WHILE WE EACH HELD A SECRET WHICH MIGHT HAVE PUT EACH OF US IN A PALACE IF WE COULD ONLY HAVE MADE USE OF IT + IT WAS ENOUGH TO MAKE A MAN EAT HIS HEART OUT TO HAVE TO STAND THE KICK AND THE CUFF OF EVERY PETTY JACK IN OFFICE TO HAVE RICE TO EAT AND WATER TO DRINK WHEN THAT GORGEOUS FORTUNE WAS READY FOR HIM OUTSIDE JUST WAITING TO BE PICKED UP + IT MIGHT HAVE DRIVEN ME MAD BUT I WAS ALWAYS A PRETTY STUBBORN ONE SO I JUST HELD ON AND BIDED MY TIME + AT LAST IT SEEMED TO ME TO HAVE COME + I WAS CHANGED FROM AGRA TO MADRAS AND FROM THERE TO BLAIR ISLAND IN THE ANDAMANS + THERE ARE VERY FEW WHITE CONVICTS AT THIS SETTLEMENT AND AS I HAD BEHAVED WELL FROM THE FIRST I SOON FOUND MYSELF A SON OF PRIVILEGED PERSON + I WAS GIVEN A HUT IN HOPE TOWN WHICH IS A SMALL PLACE ON THE SLOPES OF MOUNT HARRIET AND I WAS LEFT PRETTY MUCH TO MYSELF + IT IS A DREARY FEVER STRICKEN PLACE AND ALL BEYOND OUR LITTLE CLEARINGS WAS INFESTED WITH WILD CANNIBAL NATIVES WHO WERE READY ENOUGH TO BLOW A POISONED DART AT US IF THEY SAW A CHANCE + THERE WAS DIGGING AND DITCHING AND YAMPLANTING AND A DOZEN OTHER THINGS TO BE DONE SO WE WERE BUSY ENOUGH ALL DAY THOUGH IN THE EVENING WE HAD A LITTLE TIME TO OURSELVES + AMONG OTHER THINGS I LEARNED TO DISPENSE DRUGS FOR THE SURGEON AND PICKED UP A SMATTERING OF HIS KNOWLEDGE + ALL THE TIME I WAS ON THE LOOKOUT FOR A CHANCE TO ESCAPE BUT IT IS HUNDREDS OF MILES FROM ANY OTHER LAND AND THERE IS LITTLE OR NO WIND IN THOSE SEAS SO IT WAS A TERRIBLY DIFFICULT JOB TO GET AWAY + QUOTE THE SURGEON DOCTOR SOMERTON WAS A FAST SPORTING YOUNG CHAP AND THE OTHER YOUNG OFFICERS WOULD MEET IN HIS ROOMS OF AN EVENING AND PLAY CARDS + THE SURGERY WHERE I USED TO MAKE UP MY DRUGS WAS NEXT TO HIS SITTING ROOM WITH A SMALL WINDOW BETWEEN US + OFTEN IF I FELT LONESOME I USED TO TURN OUT THE LAMP IN THE SURGERY AND THEN STANDING THERE I COULD HEAR THEIR TALK AND WATCH THEIR PLAY + I AM FOND OF A HAND AT CARDS MYSELF AND IT WAS ALMOST AS GOOD AS HAVING ONE TO WATCH THE OTHERS + THERE WAS MAJOR SHOLTO CAPTAIN MORSTAN AND LIEUTENANT BROMLEY BROWN WHO WERE IN COMMAND OF THE NATIVE TROOPS AND THERE WAS THE SURGEON HIMSELF AND TWO OR THREE PRISON OFFICIALS CRAFTY OLD HANDS WHO PLAYED A NICE SLY SAFE GAME + A VERY SNUG LITTLE PARTY THEY USED TO MAKE + WELL THERE WAS ONE THING WHICH VERY SOON STRUCK ME AND THAT WAS THAT THE SOLDIERS USED ALWAYS TO LOSE AND THE CIVILIANS TO WIN + MIND I DON'T SAY THERE WAS ANYTHING UNFAIR BUT SO IT WAS + THESE PRISON CHAPS HAD DONE LITTLE ELSE THAN PLAY CARDS EVER SINCE THEY HAD BEEN AT THE ANDAMANS AND THEY KNEW EACH OTHER'S GAME TO A POINT WHILE THE OTHERS JUST PLAYED TO PASS THE TIME AND THREW THEIR CARDS DOWN ANYHOW + NIGHT AFTER NIGHT THE SOLDIERS GOT UP POORER MEN AND THE POORER THEY GOT THE MORE KEEN THEY WERE TO PLAY + MAJOR SHOLTO WAS THE HARDEST HIT + HE USED TO PAY IN NOTES AND GOLD AT FIRST BUT SOON IT CAME TO NOTES OF HAND AND FOR BIG SUMS + HE SOMETIMES WOULD WIN FOR A FEW DEALS JUST TO GIVE HIM HEART AND THEN THE LUCK WOULD SET IN AGAINST HIM WORSE THAN EVER + ALL DAY HE WOULD WANDER ABOUT AS BLACK AS THUNDER AND HE TOOK TO DRINKING A DEAL MORE THAN WAS GOOD FOR HIM + ONE NIGHT HE LOST EVEN MORE HEAVILY THAN USUAL + I WAS SITTING IN MY HUT WHEN HE AND CAPTAIN MORSTAN CAME STUMBLING ALONG ON THE WAY TO THEIR QUARTERS + THEY WERE BOSOM FRIENDS THOSE TWO AND NEVER FAR APART + THE MAJOR WAS RAVING ABOUT HIS LOSSES + IT'S ALL UP MORSTAN HE WAS SAYING AS THEY PASSED MY HUT + I SHALL HAVE TO SEND IN MY PAPERS + I AM A RUINED MAN + NONSENSE OLD CHAP SAID THE OTHER SLAPPING HIM UPON THE SHOULDER + SEVEN SLASH EIGHT I V. E. HAD A NASTY FACER MYSELF BUT THAT WAS ALL I COULD HEAR BUT IT WAS ENOUGH TO SET ME THINKING + A COUPLE OF DAYS LATER MAJOR SHOLTO WAS STROLLING ON THE BEACH SO I TOOK THE CHANCE OF SPEAKING TO HIM + QUOTE I WISH TO HAVE YOUR ADVICE MAJOR SAID I + WELL SMALL WHAT IS IT HE ASKED TAKING HIS CHEROOT FROM HIS LIPS + I WANTED TO ASK YOU SIR SAID I WHO IS THE PROPER PERSON TO WHOM HIDDEN TREASURE SHOULD BE HANDED OVER + I KNOW WHERE HALF A MILLION WORTH LIES AND AS I CANNOT USE IT MYSELF I THOUGHT PERHAPS THE BEST THING THAT I COULD DO WOULD BE TO HAND IT OVER TO THE PROPER AUTHORITIES AND THEN PERHAPS THEY WOULD GET MY SENTENCE SHORTENED FOR ME + HALF A MILLION SMALL HE GASPED LOOKING HARD AT ME TO SEE IF I WAS IN EARNEST + QUITE THAT SIR IN JEWELS AND PEARLS + IT LIES THERE READY FOR ANYONE + AND THE QUEER THING ABOUT IT IS THAT THE REAL OWNER IS OUTLAWED AND CANNOT HOLD PROPERTY SO THAT IT BELONGS TO THE FIRST COMER + TO GOVERNMENT SMALL HE STAMMERED TO GOVERNMENT + BUT HE SAID IT IN A HALTING FASHION AND I KNEW IN MY HEART THAT I HAD GOT HIM + QUOTE YOU THINK THEN SIR THAT I SHOULD GIVE THE INFORMATION TO THE GOVERNOR GENERAL SAID I QUIETLY + WELL WELL YOU MUST NOT DO ANYTHING RASH OR THAT YOU MIGHT REPENT + LET ME HEAR ALL ABOUT IT SMALL + GIVE ME THE FACTS + I TOLD HIM THE WHOLE STORY WITH SMALL CHANGES SO THAT HE COULD NOT IDENTIFY THE PLACES + WHEN I HAD FINISHED HE STOOD STOCK STILL AND FULL OF THOUGHT + I COULD SEE BY THE TWITCH OF HIS LIP THAT THERE WAS A STRUGGLE GOING ON WITHIN HIM + THIS IS A VERY IMPORTANT MATTER SMALL HE SAID AT LAST + YOU MUST NOT SAY A WORD TO ANYONE ABOUT IT AND I SHALL SEE YOU AGAIN SOON + TWO NIGHTS LATER HE AND HIS FRIEND CAPTAIN MORSTAN CAME TO MY HUT IN THE DEAD OF THE NIGHT WITH A LANTERN + I WANT YOU JUST TO LET CAPTAIN MORSTAN HEAR THAT STORY FROM YOUR OWN LIPS SMALL SAID HE + QUOTE I REPEATED IT AS I HAD TOLD IT BEFORE + IT RINGS TRUE EH SAID HE + IT'S GOOD ENOUGH TO ACT UPON + CAPTAIN MORSTAN NODDED + LOOK HERE SMALL SAID THE MAJOR + WE HAVE BEEN TALKING IT OVER MY FRIEND HERE AND I AND WE HAVE COME TO THE CONCLUSION THAT THIS SECRET OF YOURS IS HARDLY A GOVERNMENT MATTER AFTER ALL BUT IS A PRIVATE CONCERN OF YOUR OWN WHICH OF COURSE YOU HAVE THE POWER OF DISPOSING OF AS YOU THINK BEST + NOW THE QUESTION IS WHAT PRICE WOULD YOU ASK FOR IT + WE MIGHT BE INCLINED TO TAKE IT UP AND AT LEAST LOOK INTO IT IF WE COULD AGREE AS TO TERMS + HE TRIED TO SPEAK IN A COOL CARELESS WAY BUT HIS EYES WERE SHINING WITH EXCITEMENT AND GREED + WHY AS TO THAT GENTLEMEN I ANSWERED TRYING ALSO TO BE COOL BUT FEELING AS EXCITED AS HE DID THERE IS ONLY ONE BARGAIN WHICH A MAN IN MY POSITION CAN MAKE + I SHALL WANT YOU TO HELP ME TO MY FREEDOM AND TO HELP MY THREE COMPANIONS TO THEIRS + WE SHALL THEN TAKE YOU INTO PARTNERSHIP AND GIVE YOU A FIFTH SHARE TO DIVIDE BETWEEN YOU + HUM SAID HE + A FIFTH SHARE + THAT IS NOT VERY TEMPTING + QUOTE IT WOULD COME TO FIFTY THOUSAND APIECE SAID I + BUT HOW CAN WE GAIN YOUR FREEDOM + YOU KNOW VERY WELL THAT YOU ASK AN IMPOSSIBILITY + NOTHING OF THE SORT I ANSWERED + I HAVE THOUGHT IT ALL OUT TO THE LAST DETAIL + THE ONLY BAR TO OUR ESCAPE IS THAT WE CAN GET NO BOAT FIT FOR THE VOYAGE AND NO PROVISIONS TO LAST US FOR SO LONG A TIME + THERE ARE PLENTY OF LITTLE YACHTS AND YAWLS AT CALCUTTA OR MADRAS WHICH WOULD SERVE OUR TURN WELL + DO YOU BRING ONE OVER + WE SHALL ENGAGE TO GET ABOARD HER BY NIGHT AND IF YOU WILL DROP US ON ANY PART OF THE INDIAN COAST YOU WILL HAVE DONE YOUR PART OF THE BARGAIN + IF THERE WERE ONLY ONE HE SAID + NONE OR ALL I ANSWERED + WE HAVE SWORN IT + THE FOUR OF US MUST ALWAYS ACT TOGETHER + YOU SEE MORSTAN SAID HE SMALL IS A MAN OF HIS WORD + HE DOES NOT FLINCH FROM HIS FRIENDS + I THINK WE MAY VERY WELL TRUST HIM + QUOTE IT'S A DIRTY BUSINESS THE OTHER ANSWERED + YET AS YOU SAY THE MONEY WILL SAVE OUR COMMISSIONS HANDSOMELY + WELL SMALL SAID THE MAJOR WE MUST I SUPPOSE TRY AND MEET YOU + WE MUST FIRST OF COURSE TEST THE TRUTH OF YOUR STORY + TELL ME WHERE THE BOX IS HID AND I SHALL GET LEAVE OF ABSENCE AND GO BACK TO INDIA IN THE MONTHLY RELIEF BOAT TO INQUIRE INTO THE AFFAIR + NOT SO FAST SAID I GROWING COLDER AS HE GOT HOT + I MUST HAVE THE CONSENT OF MY THREE COMRADES + I TELL YOU THAT IT IS FOUR OR NONE WITH US + NONSENSE HE BROKE IN + WHAT HAVE THREE BLACK FELLOWS TO DO WITH OUR AGREEMENT + BLACK OR BLUE SAID I THEY ARE IN WITH ME AND WE ALL GO TOGETHER + WELL THE MATTER ENDED BY A SECOND MEETING AT WHICH MAHOMET SINGH ABDULLAH KHAN AND DOST AKBAR WERE ALL PRESENT + WE TALKED THE MATTER OVER AGAIN AND AT LAST WE CAME TO AN ARRANGEMENT + WE WERE TO PROVIDE BOTH THE OFFICERS WITH CHARTS OF THE PART OF THE AGRA FORT AND MARK THE PLACE IN THE WALL WHERE THE TREASURE WAS HID + MAJOR SHOLTO WAS TO GO TO INDIA TO TEST OUR STORY + IF HE FOUND THE BOX HE WAS TO LEAVE IT THERE TO SEND OUT A SMALL YACHT PROVISIONED FOR A VOYAGE WHICH WAS TO LIE OFF RUTLAND ISLAND AND TO WHICH WE WERE TO MAKE OUR WAY AND FINALLY TO RETURN TO HIS DUTIES + CAPTAIN MORSTAN WAS THEN TO APPLY FOR LEAVE OF ABSENCE TO MEET US AT AGRA AND THERE WE WERE TO HAVE A FINAL DIVISION OF THE TREASURE HE TAKING THE MAJOR'S SHARE AS WELL AS HIS OWN + ALL THIS WE SEALED BY THE MOST SOLEMN OATHS THAT THE MIND COULD THINK OR THE LIPS UTTER + I SAT UP ALL NIGHT WITH PAPER AND INK AND BY THE MORNING I HAD THE TWO CHARTS ALL READY SIGNED WITH THE SIGN OF FOUR THAT IS OF ABDULLAH AKBAR MAHOMET AND MYSELF + QUOTE WELL GENTLEMEN I WEARY YOU WITH MY LONG STORY AND I KNOW THAT MY FRIEND MR. JONES IS IMPATIENT TO GET ME SAFELY STOWED IN CHOKEY + I'LL MAKE IT AS SHORT AS I CAN + THE VILLAIN SHOLTO WENT OFF TO INDIA BUT HE NEVER CAME BACK AGAIN + CAPTAIN MORSTAN SHOWED ME HIS NAME AMONG A LIST OF PASSENGERS IN ONE OF THE MAIL BOATS VERY SHORTLY AFTERWARDS + HIS UNCLE HAD DIED LEAVING HIM A FORTUNE AND HE HAD LEFT THE ARMY YET HE COULD STOOP TO TREAT FIVE MEN AS HE HAD TREATED US + MORSTAN WENT OVER TO AGRA SHORTLY AFTERWARDS AND FOUND AS WE EXPECTED THAT THE TREASURE WAS INDEED GONE + THE SCOUNDREL HAD STOLEN IT ALL WITHOUT CARRYING OUT ONE OF THE CONDITIONS ON WHICH WE HAD SOLD HIM THE SECRET + FROM THAT I LIVED ONLY FOR VENGEANCE + I THOUGHT OF IT BY DAY AND I NURSED IT BY NIGHT + IT BECAME AN OVERPOWERING ABSORBING PASSION WITH ME + I CARED NOTHING FOR THE LAW NOTHING FOR THE GALLOWS + TO ESCAPE TO TRACK DOWN SHOLTO TO HAVE MY HAND UPON HIS THROAT THAT WAS MY ONE THOUGHT + EVEN THE AGRA TREASURE HAD COME TO BE A SMALLER THING IN MY MIND THAN THE SLAYING OF SHOLTO + WELL I HAVE SET MY MIND ON MANY THINGS IN THIS LIFE AND NEVER ONE WHICH I DID NOT CARRY OUT + BUT IT WAS WEARY YEARS BEFORE MY TIME CAME + I HAVE TOLD YOU THAT I HAD PICKED UP SOMETHING OF MEDICINE + ONE DAY WHEN DOCTOR SOMERTON WAS DOWN WITH A FEVER A LITTLE ANDAMAN ISLANDER WAS PICKED UP BY A CONVICT GANG IN THE WOODS + HE WAS SICK TO DEATH AND HAD GONE TO A LONELY PLACE TO DIE + I TOOK HIM IN HAND THOUGH HE WAS AS VENOMOUS AS A YOUNG SNAKE AND AFTER A COUPLE OF MONTHS I GOT HIM ALL RIGHT AND ABLE TO WALK + HE TOOK A KIND OF FANCY TO ME THEN AND WOULD HARDLY GO BACK TO HIS WOODS BUT WAS ALWAYS HANGING ABOUT MY HUT + I LEARNED A LITTLE OF HIS LINGO FROM HIM AND THIS MADE HIM ALL THE FONDER OF ME + TONGA FOR THAT WAS HIS NAME WAS A FINE BOATMAN AND OWNED A BIG ROOMY CANOE OF HIS OWN + WHEN I FOUND THAT HE WAS DEVOTED TO ME AND WOULD DO ANYTHING TO SERVE ME I SAW MY CHANCE OF ESCAPE + I TALKED IT OVER WITH HIM + HE WAS TO BRING HIS BOAT ROUND ON A CERTAIN NIGHT TO AN OLD WHARF WHICH WAS NEVER GUARDED AND THERE HE WAS TO PICK ME UP + I GAVE HIM DIRECTIONS TO HAVE SEVERAL GOURDS OF WATER AND A LOT OF YAMS COCOANUTS AND SWEET POTATOES + HE WAS STAUNCH AND TRUE WAS LITTLE TONGA + NO MAN EVER HAD A MORE FAITHFUL MATE + AT THE NIGHT NAMED HE HAD HIS BOAT AT THE WHARF + AS IT CHANCED HOWEVER THERE WAS ONE OF THE CONVICTGUARD DOWN THERE A VILE PATHAN WHO HAD NEVER MISSED A CHANCE OF INSULTING AND INJURING ME + I HAD ALWAYS VOWED VENGEANCE AND NOW I HAD MY CHANCE + IT WAS AS IF FATE HAD PLACED HIM IN MY WAY THAT I MIGHT PAY MY DEBT BEFORE I LEFT THE ISLAND + HE STOOD ON THE BANK WITH HIS BACK TO ME AND HIS CARBINE ON HIS SHOULDER + I LOOKED ABOUT FOR A STONE TO BEAT OUT HIS BRAINS WITH BUT NONE COULD I SEE + THEN A QUEER THOUGHT CAME INTO MY HEAD AND SHOWED ME WHERE I COULD LAY MY HAND ON A WEAPON + I SAT DOWN IN THE DARKNESS AND UNSTRAPPED MY WOODEN LEG + WITH THREE LONG HOPS I WAS ON HIM + HE PUT HIS CARBINE TO HIS SHOULDER BUT I STRUCK HIM FULL AND KNOCKED THE WHOLE FRONT OF HIS SKULL IN + YOU CAN SEE THE SPLIT IN THE WOOD NOW WHERE I HIT HIM + WE BOTH WENT DOWN TOGETHER FOR I COULD NOT KEEP MY BALANCE BUT WHEN I GOT UP I FOUND HIM STILL LYING QUIET ENOUGH + I MADE FOR THE BOAT AND IN AN HOUR WE WERE WELL OUT AT SEA + TONGA HAD BROUGHT ALL HIS EARTHLY POSSESSIONS WITH HIM HIS ARMS AND HIS GODS + AMONG OTHER THINGS HE HAD A LONG BAMBOO SPEAR AND SOME ANDAMAN COCOANUT MATTING WITH WHICH I MADE A SORT OF A SAIL + FOR TEN DAYS WE WERE BEATING ABOUT TRUSTING TO LUCK AND ON THE ELEVENTH WE WERE PICKED UP BY A TRADER WHICH WAS GOING FROM SINGAPORE TO JIDDAH WITH A CARGO OF MALAY PILGRIMS + THEY WERE A RUM CROWD AND TONGA AND I SOON MANAGED TO SETTLE DOWN AMONG THEM + THEY HAD ONE VERY GOOD QUALITY THEY LET YOU ALONE AND ASKED NO QUESTIONS + WELL IF I WERE TO TELL YOU ALL THE ADVENTURES THAT MY LITTLE CHUM AND I WENT THROUGH YOU WOULD NOT THANK ME FOR I WOULD HAVE YOU HERE UNTIL THE SUN WAS SHINING + HERE AND THERE WE DRIFTED ABOUT THE WORLD SOMETHING ALWAYS TURNING UP TO KEEP US FROM LONDON + ALL THE TIME HOWEVER I NEVER LOST SIGHT OF MY PURPOSE + I WOULD DREAM OF SHOLTO AT NIGHT + A HUNDRED TIMES I HAVE KILLED HIM IN MY SLEEP + AT LAST HOWEVER SOME THREE OR FOUR YEARS AGO WE FOUND OURSELVES IN ENGLAND + I HAD NO GREAT DIFFICULTY IN FINDING WHERE SHOLTO LIVED AND I SET TO WORK TO DISCOVER WHETHER HE HAD REALIZED ON THE TREASURE OR IF HE STILL HAD IT + I MADE FRIENDS WITH SOMEONE WHO COULD HELP ME I NAME NO NAMES FOR I DON'T WANT TO GET ANYONE ELSE IN A HOLE AND I SOON FOUND THAT HE STILL HAD THE JEWELS + THEN I TRIED TO GET AT HIM IN MANY WAYS BUT HE WAS PRETTY SLY AND HAD ALWAYS TWO PRIZEFIGHTERS BESIDES HIS SONS AND HIS KHITMUTGAR ON GUARD OVER HIM + QUOTE ONE DAY HOWEVER I GOT WORD THAT HE WAS DYING + I HURRIED AT ONCE TO THE GARDEN MAD THAT HE SHOULD SLIP OUT OF MY CLUTCHES LIKE THAT AND LOOKING THROUGH THE WINDOW I SAW HIM LYING IN HIS BED WITH HIS SONS ON EACH SIDE OF HIM + I'D HAVE COME THROUGH AND TAKEN MY CHANCE WITH THE THREE OF THEM ONLY EVEN AS I LOOKED AT HIM HIS JAW DROPPED AND I KNEW THAT HE WAS GONE + I GOT INTO HIS ROOM THAT SAME NIGHT THOUGH AND I SEARCHED HIS PAPERS TO SEE IF THERE WAS ANY RECORD OF WHERE HE HAD HIDDEN OUR JEWELS + THERE WAS NOT A LINE HOWEVER SO I CAME AWAY BITTER AND SAVAGE AS A MAN COULD BE + BEFORE I LEFT I BETHOUGHT ME THAT IF I EVER MET MY SIKH FRIENDS AGAIN IT WOULD BE A SATISFACTION TO KNOW THAT I HAD LEFT SOME MARK OF OUR HATRED SO I SCRAWLED DOWN THE SIGN OF THE FOUR OF US AS IT HAD BEEN ON THE CHART AND I PINNED IT ON HIS BOSOM + IT WAS TOO MUCH THAT HE SHOULD BE TAKEN TO THE GRAVE WITHOUT SOME TOKEN FROM THE MEN WHOM HE HAD ROBBED AND BEFOOLED + WE EARNED A LIVING AT THIS TIME BY MY EXHIBITING POOR TONGA AT FAIRS AND OTHER SUCH PLACES AS THE BLACK CANNIBAL + HE WOULD EAT RAW MEAT AND DANCE HIS WAR DANCE SO WE ALWAYS HAD A HATFUL OF PENNIES AFTER A DAY'S WORK + I STILL HEARD ALL THE NEWS FROM PONDICHERRY LODGE AND FOR SOME YEARS THERE WAS NO NEWS TO HEAR EXCEPT THAT THEY WERE HUNTING FOR THE TREASURE + AT LAST HOWEVER CAME WHAT WE HAD WAITED FOR SO LONG + THE TREASURE HAD BEEN FOUND + IT WAS UP AT THE TOP OF THE HOUSE IN MR. BANHOLOMEW SHOLTO'S CHEMICAL LABORATORY + I CAME AT ONCE AND HAD A LOOK AT THE PLACE BUT I COULD NOT SEE HOW WITH MY WOODEN LEG I WAS TO MAKE MY WAY UP TO IT + I LEARNED HOWEVER ABOUT A TRAPDOOR IN THE ROOF AND ALSO ABOUT MR. SHOLTO'S SUPPER HOUR + IT SEEMED TO ME THAT I COULD MANAGE THE THING EASILY THROUGH TONGA + I BROUGHT HIM OUT WITH ME WITH A LONG ROPE WOUND ROUND HIS WAIST + HE COULD CLIMB LIKE A CAT AND HE SOON MADE HIS WAY THROUGH THE ROOF BUT AS ILL LUCK WOULD HAVE IT BARTHOLOMEW SHOLTO WAS STILL IN THE ROOM TO HIS COST + TONGA THOUGHT HE HAD DONE SOMETHING VERY CLEVER IN KILLING HIM FOR WHEN I CAME UP BY THE ROPE I FOUND HIM STRUTTING ABOUT AS PROUD AS A PEACOCK + VERY MUCH SURPRISED WAS HE WHEN I MADE AT HIM WITH THE ROPE'S END AND CURSED HIM FOR A LITTLE BLOODTHIRSTY IMP + I TOOK THE TREASURE BOX AND LET IT DOWN AND THEN SLID DOWN MYSELF HAVING FIRST LEFT THE SIGN OF THE FOUR UPON THE TABLE TO SHOW THAT THE JEWELS HAD COME BACK AT LAST TO THOSE WHO HAD MOST RIGHT TO THEM + TONGA THEN PULLED UP THE ROPE CLOSED THE WINDOW AND MADE OFF THE WAY THAT HE HAD COME + I DON'T KNOW THAT I HAVE ANYTHING ELSE TO TELL YOU + I HAD HEARD A WATERMAN SPEAK OF THE SPEED OF SMITH'S LAUNCH THE AURORA SO L. THOUGHT SHE WOULD BE A HANDY CRAFT FOR OUR ESCAPE WITH OLD SMITH AND WAS TO GIVE HIM A BIG SUM IF HE GOT US SAFE TO OUR SHIP + HE KNEW NO DOUBT THAT THERE WAS SOME SCREW LOOSE BUT HE WAS NOT IN OUR SECRETS + ALL THIS IS THE TRUTH AND IF I TELL IT TO YOU GENTLEMEN IT IS NOT TO AMUSE YOU FOR YOU HAVE NOT DONE ME A VERY GOOD TURN BUT IT IS BECAUSE I BELIEVE THE BEST DEFENCE I CAN MAKE IS JUST TO HOLD BACK NOTHING BUT LET ALL THE WORLD KNOW HOW BADLY I HAVE MYSELF BEEN SERVED BY MAJOR SHOLTO AND HOW INNOCENT I AM OF THE DEATH OF HIS SON + A VERY REMARKABLE ACCOUNT SAID SHERLOCK HOLMES + A FITTING WINDUP TO AN EXTREMELY INTERESTING CASE + THERE IS NOTHING AT ALL NEW TO ME IN THE LATTER PART OF YOUR NARRATIVE EXCEPT THAT YOU BROUGHT YOUR OWN ROPE + THAT I DID NOT KNOW + BY THE WAY I HAD HOPED THAT TONGA HAD LOST ALL HIS DARTS YET HE MANAGED TO SHOOT ONE AT US IN THE BOAT QUOTE + HE HAD LOST THEM ALL SIR EXCEPT THE ONE WHICH WAS IN HIS BLOW PIPE AT THE TIME + AH OF COURSE SAID HOLMES + I HAD NOT THOUGHT OF THAT + IS THERE ANY OTHER POINT WHICH YOU WOULD LIKE TO ASK ABOUT ASKED THE CONVICT AFFABLY + I THINK NOT THANK YOU MY COMPANION ANSWERED + QUOTE WELL HOLMES QUOTE SAID ATHELNEY JONES QUOTE YOU ARE A MAN TO BE HUMOURED AND WE ALL KNOW THAT YOU ARE A CONNOISSEUR OF CRIME BUT DUTY IS DUTY AND I HAVE GONE RATHER FAR IN DOING WHAT YOU AND YOUR FRIEND ASKED ME + I SHALL FEEL MORE AT EASE WHEN WE HAVE OUR STORY TELLER HERE SAFE UNDER LOCK AND KEY + THE CAB STILL WAITS AND THERE ARE TWO INSPECTORS DOWNSTAIRS + I AM MUCH OBLIGED TO YOU BOTH FOR YOUR ASSISTANCE + OF COURSE YOU WILL BE WANTED AT THE TRIAL + GOOD NIGHT TO YOU + GOOD NIGHT GENTLEMEN BOTH SAID JONATHAN SMALL + YOU FIRST SMALL REMARKED THE WARY JONES AS THEY LEFT THE ROOM + I'LL TAKE PARTICULAR CARE THAT YOU DON'T CLUB ME WITH YOUR WOODEN LEG WHATEVER YOU MAY HAVE DONE TO THE GENTLEMAN AT THE ANDAMAN ISLES + WELL AND THERE IS THE END OF OUR LITTLE DRAMA I REMARKED AFTER WE HAD SAT SOME TIME SMOKING IN SILENCE + QUOTE I FEAR THAT IT MAY BE THE LAST INVESTIGATION IN WHICH I SHALL HAVE THE CHANCE OF STUDYING YOUR METHODS + MISS MORSTAN HAS DONE ME THE HONOUR TO ACCEPT ME AS A HUSBAND IN PROSPECTIVE + HE GAVE A MOST DISMAL GROAN + I FEARED AS MUCH SAID HE + I REALLY CANNOT CONGRATULATE YOU + I WAS A LITTLE HURT + HAVE YOU ANY REASON TO BE DISSATISFIED WITH MY CHOICE + I ASKED + NOT AT ALL + I THINK SHE IS ONE OF THE MOST CHARMING YOUNG LADIES I EVER MET AND MIGHT HAVE BEEN MOST USEFUL IN SUCH WORK AS WE HAVE BEEN DOING + SHE HAD A DECIDED GENIUS THAT WAY WITNESS THE WAY IN WHICH SHE PRESERVED THAT AGRA PLAN FROM ALI THE OTHER PAPERS OF HER FATHER + BUT LOVE IS AN EMOTIONAL THING AND WHATEVER IS EMOTIONAL IS OPPOSED TO THAT TRUE COLD REASON WHICH I PLACE ABOVE ALL THINGS + I SHOULD NEVER MARRY MYSELF LEST I BIAS MY JUDGMENT QUOTE + I TRUST SAID I LAUGHING THAT MY JUDGMENT MAY SURVIVE THE ORDEAL + BUT YOU LOOK WEARY + YES THE REACTION IS ALREADY UPON ME + I SHALL BE AS LIMP AS A RAG FOR A WEEK + STRANGE SAID I HOW TERMS OF WHAT IN ANOTHER MAN I SHOULD CALL LAZINESS ALTERNATE WITH YOUR FITS OF SPLENDID ENERGY AND VIGOUR + QUOTE YES QUOTE HE ANSWERED QUOTE THERE ARE IN ME THE MAKINGS OF A VERY FINE LOAFER AND ALSO OF A PRETTY SPRY SORT OF A FELLOW + I OFTEN THINK OF THOSE LINES OF OLD GOETHE SCHADE DASS DIE NATUR NUR EINEN MENSCH AUS DIR SCHUF DENN ZUM WURDIGEN MANN WAR UND ZUM SCHELMEN DER STOFF + BY THE WAY APROPOS OF THIS NORWOOD BUSINESS YOU SEE THAT THEY HAD AS I SURMISED A CONFEDERATE IN THE HOUSE WHO COULD BE NONE OTHER THAN LAL RAO THE BUTLER SO JONES ACTUALLY HAS THE UNDIVIDED HONOUR OF HAVING CAUGHT ONE FISH IN HIS GREAT HAUL + THE DIVISION SEEMS RATHER UNFAIR I REMARKED diff --git a/samples/LMTutorial/train/silver_blaze.txt b/samples/LMTutorial/train/silver_blaze.txt new file mode 100755 index 0000000..28a63bb --- /dev/null +++ b/samples/LMTutorial/train/silver_blaze.txt @@ -0,0 +1,627 @@ + QUOTE I AM AFRAID WATSON THAT I SHALL HAVE TO GO QUOTE SAID HOLMES AS WE SAT DOWN TOGETHER TO OUR BREAKFAST ONE MORNING + GO + WHERE TO + TO DARTMOOR TO KING'S PYLAND + I WAS NOT SURPRISED + INDEED MY ONLY WONDER WAS THAT HE HAD NOT ALREADY BEEN MIXED UP IN THIS EXTRAORDINARY CASE WHICH WAS THE ONE TOPIC OF CONVERSATION THROUGH THE LENGTH AND BREADTH OF ENGLAND + FOR A WHOLE DAY MY COMPANION HAD RAMBLED ABOUT THE ROOM WITH HIS CHIN UPON HIS CHEST AND HIS BROWS KNITTED CHARGING AND RECHARGING HIS PIPE WITH THE STRONGEST BLACK TOBACCO AND ABSOLUTELY DEAF TO ANY OF MY QUESTIONS OR REMARKS + FRESH EDITIONS OF EVERY PAPER HAD BEEN SENT UP BY OUR NEWS AGENT ONLY TO BE GLANCED OVER AND TOSSED DOWN INTO A CORNER + YET SILENT AS HE WAS I KNEW PERFECTLY WELL WHAT IT WAS OVER WHICH HE WAS BROODING + THERE WAS BUT ONE PROBLEM BEFORE THE PUBLIC WHICH COULD CHALLENGE HIS POWERS OF ANALYSIS AND THAT WAS THE SINGULAR DISAPPEARANCE OF THE FAVOURITE FOR THE WESSEX CUP AND THE TRAGIC MURDER OF ITS TRAINER + WHEN THEREFORE HE SUDDENLY ANNOUNCED HIS INTENTION OF SETTING OUT FOR THE SCENE OF THE DRAMA IT WAS ONLY WHAT I HAD BOTH EXPECTED AND HOPED FOR + I SHOULD BE MOST HAPPY TO GO DOWN WITH YOU IF I SHOULD NOT BE IN THE WAY SAID I + MY DEAR WATSON YOU WOULD CONFER A GREAT FAVOUR UPON ME BY COMING + AND I THINK THAT YOUR TIME WILL NOT BE MISSPENT FOR THERE ARE POINTS ABOUT THE CASE WHICH PROMISE TO MAKE IT AN ABSOLUTELY UNIQUE ONE + WE HAVE I THINK JUST TIME TO CATCH OUR TRAIN AT PADDINGTON AND I WILL GO FURTHER INTO THE MATTER UPON OUR JOURNEY + YOU WOULD OBLIGE ME BY BRINGING WITH YOU YOUR VERY EXCELLENT FIELD GLASS QUOTE + AND SO IT HAPPENED THAT AN HOUR OR SO LATER I FOUND MYSELF IN THE CORNER OF A FIRST CLASS CARRIAGE FLYING ALONG EN ROUTE FOR EXETER WHILE SHERLOCK HOLMES WITH HIS SHARP EAGER FACE FRAMED IN HIS EAR FLAPPED TRAVELLING CAP DIPPED RAPIDLY INTO THE BUNDLE OF FRESH PAPERS WHICH HE HAD PROCURED AT PADDINGTON + WE HAD LEFT READING FAR BEHIND US BEFORE HE THRUST THE LAST ONE OF THEM UNDER THE SEAT AND OFFERED ME HIS CIGAR CASE + WE ARE GOING WELL SAID HE LOOKING OUT OF THE WINDOW AND GLANCING AT HIS WATCH + OUR RATE AT PRESENT IS FIFTY THREE AND A HALF MILES AN HOUR + I HAVE NOT OBSERVED THE QUARTER MILE POSTS SAID I + NOR HAVE I. BUT THE TELEGRAPH POSTS UPON THIS LINE ARE SIXTY YARDS APART AND THE CALCULATION IS A SIMPLE ONE + I PRESUME THAT YOU HAVE LOOKED INTO THIS MATTER OF THE MURDER OF JOHN STRAKER AND THE DISAPPEARANCE OF SILVER BLAZE + QUOTE I HAVE SEEN WHAT THE TELEGRAPH AND THE CHRONICLE HAVE TO SAY QUOTE + IT IS ONE OF THOSE CASES WHERE THE ART OF THE REASONER SHOULD BE USED RATHER FOR THE SIFTING OF DETAILS THAN FOR THE ACQUIRING OF FRESH EVIDENCE + THE TRAGEDY HAS BEEN SO UNCOMMON SO COMPLETE AND OF SUCH PERSONAL IMPORTANCE TO SO MANY PEOPLE THAT WE ARE SUFFERING FROM A PLETHORA OF SURMISE CONJECTURE AND HYPOTHESIS + THE DIFFICULTY IS TO DETACH THE FRAMEWORK OF FACT OF ABSOLUTE UNDENIABLE FACT FROM THE EMBELLISHMENTS OF THEORISTS AND REPORTERS + THEN HAVING ESTABLISHED OURSELVES UPON THIS SOUND BASIS IT IS OUR DUTY TO SEE WHAT INFERENCES MAY BE DRAWN AND WHAT ARE THE SPECIAL POINTS UPON WHICH THE WHOLE MYSTERY TURNS + ON TUESDAY EVENING I RECEIVED TELEGRAMS FROM BOTH COLONEL ROSS THE OWNER OF THE HORSE AND FROM INSPECTOR GREGORY WHO IS LOOKING AFTER THE CASE INVITING MY COOPERATION + TUESDAY EVENING + I EXCLAIMED + AND THIS IS THURSDAY MORNING + WHY DIDN'T YOU GO DOWN YESTERDAY + QUOTE BECAUSE I MADE A BLUNDER MY DEAR WATSON WHICH IS I AM AFRAID A MORE COMMON OCCURRENCE THAN ANYONE WOULD THINK WHO ONLY KNEW ME THROUGH YOUR MEMOIRS + THE FACT IS THAT I COULD NOT BELIEVE IT POSSIBLE THAT THE MOST REMARKABLE HORSE IN ENGLAND COULD LONG REMAIN CONCEALED ESPECIALLY IN SO SPARSELY INHABITED A PLACE AS THE NORTH OF DARTMOOR + FROM HOUR TO HOUR YESTERDAY I EXPECTED TO HEAR THAT HE HAD BEEN FOUND AND THAT HIS ABDUCTOR WAS THE MURDERER OF JOHN STRAKER + WHEN HOWEVER ANOTHER MORNING HAD COME AND I FOUND THAT BEYOND THE ARREST OF YOUNG FITZROY SIMPSON NOTHING HAD BEEN DONE I FELT THAT IT WAS TIME FOR ME TO TAKE ACTION + YET IN SOME WAYS I FEEL THAT YESTERDAY HAS NOT BEEN WASTED + YOU HAVE FORMED A THEORY THEN + AT LEAST I HAVE GOT A GRIP OF THE ESSENTIAL FACTS OF THE CASE + I SHALL ENUMERATE THEM TO YOU FOR NOTHING CLEARS UP A CASE SO MUCH AS STATING IT TO ANOTHER PERSON AND I CAN HARDLY EXPECT YOUR COOPERATION IF I DO NOT SHOW YOU THE POSITION FROM WHICH WE START + I LAY BACK AGAINST THE CUSHIONS PUFFING AT MY CIGAR WHILE HOLMES LEANING FORWARD WITH HIS LONG THIN FOREFINGER CHECKING OFF THE POINTS UPON THE PALM OF HIS LEFT HAND GAVE ME A SKETCH OF THE EVENTS WHICH HAD LED TO OUR JOURNEY + SILVER BLAZE SAID HE IS FROM THE SOMOMY STOCK AND HOLDS AS BRILLIANT A RECORD AS HIS FAMOUS ANCESTOR + HE IS NOW IN HIS FIFTH YEAR AND HAS BROUGHT IN TURN EACH OF THE PRIZES OF THE TURF TO COLONEL ROSS HIS FORTUNATE OWNER + UP TO THE TIME OF THE CATASTROPHE HE WAS THE FIRST FAVOURITE FOR THE WESSEX CUP THE BETTING BEING THREE TO ONE ON HIM + HE HAS ALWAYS HOWEVER BEEN A PRIME FAVOURITE WITH THE RACING PUBLIC AND HAS NEVER YET DISAPPOINTED THEM SO THAT EVEN AT THOSE ODDS ENORMOUS SUMS OF MONEY HAVE BEEN LAID UPON HIM + IT IS OBVIOUS THEREFORE THAT THERE WERE MANY PEOPLE WHO HAD THE STRONGEST INTEREST IN PREVENTING SILVER BLAZE FROM BEING THERE AT THE FALL OF THE FLAG NEXT TUESDAY + QUOTE THE FACT WAS OF COURSE APPRECIATED AT KING'S PYLAND WHERE THE COLONEL'S TRAINING STABLE IS SITUATED + EVERY PRECAUTION WAS TAKEN TO GUARD THE FAVOURITE + THE TRAINER JOHN STRAKER IS A RETIRED JOCKEY WHO RODE IN COLONEL ROSS'S COLOURS BEFORE HE BECAME TOO HEAVY FOR THE WEIGHING CHAIR + HE HAS SERVED THE COLONEL FOR FIVE YEARS AS JOCKEY AND FOR SEVEN AS TRAINER AND HAS ALWAYS SHOWN HIMSELF TO BE A ZEALOUS AND HONEST SERVANT + UNDER HIM WERE THREE LADS FOR THE ESTABLISHMENT WAS A SMALL ONE CONTAINING ONLY FOUR HORSES IN ALL + ONE OF THESE LADS SAT UP EACH NIGHT IN THE STABLE WHILE THE OTHERS SLEPT IN THE LOFT + ALL THREE BORE EXCELLENT CHARACTERS + JOHN STRAKER WHO IS A MARRIED MAN LIVED IN A SMALL VILLA ABOUT TWO HUNDRED YARDS FROM THE STABLES + HE HAS NO CHILDREN KEEPS ONE MAIDSERVANT AND IS COMFORTABLY OFF + THE COUNTRY ROUND IS VERY LONELY BUT ABOUT HALF A MILE TO THE NORTH THERE IS A SMALL CLUSTER OF VILLAS WHICH HAVE BEEN BUILT BY A TAVISTOCK CONTRACTOR FOR THE USE OF INVALIDS AND OTHERS WHO MAY WISH TO ENJOY THE PURE DARTMOOR AIR + TAVISTOCK ITSELF LIES TWO MILES TO THE WEST WHILE ACROSS THE MOOR ALSO ABOUT TWO MILES DISTANT IS THE LARGER TRAINING ESTABLISHMENT OF MAPLETON WHICH BELONGS TO LORD BACKWATER AND IS MANAGED BY SILAS BROWN + IN EVERY OTHER DIRECTION THE MOOR IS A COMPLETE WILDERNESS INHABITED ONLY BY A FEW ROAMING GYPSIES + SUCH WAS THE GENERAL SITUATION LAST MONDAY NIGHT WHEN THE CATASTROPHE OCCURRED + ON THAT EVENING THE HORSES HAD BEEN EXERCISED AND WATERED AS USUAL AND THE STABLES WERE LOCKED UP AT NINE O'CLOCK + TWO OF THE LADS WALKED UP TO THE TRAINER'S HOUSE WHERE THEY HAD SUPPER IN THE KITCHEN WHILE THE THIRD NED HUNTER REMAINED ON GUARD + AT A FEW MINUTES AFTER NINE THE MAID EDITH BAXTER CARRIED DOWN TO THE STABLES HIS SUPPER WHICH CONSISTED OF A DISH OF CURRIED MUTTON + SHE TOOK NO LIQUID AS THERE WAS A WATER TAP IN THE STABLES AND IT WAS THE RULE THAT THE LAD ON DUTY SHOULD DRINK NOTHING ELSE + THE MAID CARRIED A LANTERN WITH HER AS IT WAS VERY DARK AND THE PATH RAN ACROSS THE OPEN MOOR + EDITH BAXTER WAS WITHIN THIRTY YARDS OF THE STABLES WHEN A MAN APPEARED OUT OF THE DARKNESS AND CALLED TO HER TO STOP + AS SHE STEPPED INTO THE CIRCLE OF YELLOW LIGHT THROWN BY THE LANTERN SHE SAW THAT HE WAS A PERSON OF GENTLEMANLY BEARING DRESSED IN A GRAY SUIT OF TWEEDS WITH A CLOTH CAP + HE WORE GAITERS AND CARRIED A HEAVY STICK WITH A KNOB TO IT + SHE WAS MOST IMPRESSED HOWEVER BY THE EXTREME PALLOR OF HIS FACE AND BY THE NERVOUSNESS OF HIS MANNER + HIS AGE SHE THOUGHT WOULD BE RATHER OVER THIRTY THAN UNDER IT + CAN YOU TELL ME WHERE I AM HE ASKED + I HAD ALMOST MADE UP MY MIND TO SLEEP ON THE MOOR WHEN I SAW THE LIGHT OF YOUR LANTERN + YOU ARE CLOSE TO THE KING'S PYLAND TRAINING STABLES SAID SHE + OH INDEED + WHAT A STROKE OF LUCK HE CRIED + I UNDERSTAND THAT A STABLE BOY SLEEPS THERE ALONE EVERY NIGHT + PERHAPS THAT IS HIS SUPPER WHICH YOU ARE CARRYING TO HIM + NOW I AM SURE THAT YOU WOULD NOT BE TOO PROUD TO EARN THE PRICE OF A NEW DRESS WOULD YOU + HE TOOK A PIECE OF WHITE PAPER FOLDED UP OUT OF HIS WAISTCOAT POCKET + SEE THAT THE BOY HAS THIS TO NIGHT AND YOU SHALL HAVE THE PRETTIEST FROCK THAT MONEY CAN BUY + QUOTE SHE WAS FRIGHTENED BY THE EARNESTNESS OF HIS MANNER AND RAN PAST HIM TO THE WINDOW THROUGH WHICH SHE WAS ACCUSTOMED TO HAND THE MEALS + IT WAS ALREADY OPENED AND HUNTER WAS SEATED AT THE SMALL TABLE INSIDE + SHE HAD BEGUN TO TELL HIM OF WHAT HAD HAPPENED WHEN THE STRANGER CAME UP AGAIN + GOOD EVENING SAID HE LOOKING THROUGH THE WINDOW + I WANTED TO HAVE A WORD WITH YOU + THE GIRL HAS SWORN THAT AS HE SPOKE SHE NOTICED THE CORNER OF THE LITTLE PAPER PACKET PROTRUDING FROM HIS CLOSED HAND + WHAT BUSINESS HAVE YOU HERE ASKED THE LAD + IT'S BUSINESS THAT MAY PUT SOMETHING INTO YOUR POCKET SAID THE OTHER + YOU'VE TWO HORSES IN FOR THE WESSEX CUP SILVER BLAZE AND BAYARD + LET ME HAVE THE STRAIGHT TIP AND YOU WON'T BE A LOSER + IS IT A FACT THAT AT THE WEIGHTS BAYARD COULD GIVE THE OTHER A HUNDRED YARDS IN FIVE FURLONGS AND THAT THE STABLE HAVE PUT THEIR MONEY ON HIM + SO YOU'RE ONE OF THOSE DAMNED TOUTS CRIED THE LAD + I'LL SHOW YOU HOW WE SERVE THEM IN KING'S PYLAND + HE SPRANG UP AND RUSHED ACROSS THE STABLE TO UNLOOSE THE DOG + THE GIRL FLED AWAY TO THE HOUSE BUT AS SHE RAN SHE LOOKED BACK AND SAW THAT THE STRANGER WAS LEANING THROUGH THE WINDOW + A MINUTE LATER HOWEVER WHEN HUNTER RUSHED OUT WITH THE HOUND HE WAS GONE AND THOUGH HE RAN ALL ROUND THE BUILDINGS HE FAILED TO FIND ANY TRACE OF HIM + QUOTE ONE MOMENT QUOTE I ASKED + DID THE STABLE BOY WHEN HE RAN OUT WITH THE DOG LEAVE THE DOOR UNLOCKED BEHIND HIM + EXCELLENT WATSON EXCELLENT MURMURED MY COMPANION + THE IMPORTANCE OF THE POINT STRUCK ME SO FORCIBLY THAT I SENT A SPECIAL WIRE TO DARTMOOR YESTERDAY TO CLEAR THE MATTER UP + THE BOY LOCKED THE DOOR BEFORE HE LEFT IT + THE WINDOW I MAY ADD WAS NOT LARGE ENOUGH FOR A MAN TO GET THROUGH + HUNTER WAITED UNTIL HIS FELLOW GROOMS HAD RETURNED WHEN HE SENT A MESSAGE TO THE TRAINER AND TOLD HIM WHAT HAD OCCURRED + STRAKER WAS EXCITED AT HEARING THE ACCOUNT ALTHOUGH HE DOES NOT SEEM TO HAVE QUITE REALIZED ITS TRUE SIGNIFICANCE + IT LEFT HIM HOWEVER VAGUELY UNEASY AND MRS. STRAKER WAKING AT ONE IN THE MORNING FOUND THAT HE WAS DRESSING + IN REPLY TO HER INQUIRIES HE SAID THAT HE COULD NOT SLEEP ON ACCOUNT OF HIS ANXIETY ABOUT THE HORSES AND THAT HE INTENDED TO WALK DOWN TO THE STABLES TO SEE THAT ALL WAS WELL + SHE BEGGED HIM TO REMAIN AT HOME AS SHE COULD HEAR THE RAIN PATTERING AGAINST THE WINDOW BUT IN SPITE OF HER ENTREATIES HE PULLED ON HIS LARGE MACKINTOSH AND LEFT THE HOUSE + MRS. STRAKER AWOKE AT SEVEN IN THE MORNING TO FIND THAT HER HUSBAND HAD NOT YET RETURNED + SHE DRESSED HERSELF HASTILY CALLED THE MAID AND SET OFF FOR THE STABLES + THE DOOR WAS OPEN INSIDE HUDDLED TOGETHER UPON A CHAIR HUNTER WAS SUNK IN A STATE OF ABSOLUTE STUPOR THE FAVOURITE'S STALL WAS EMPTY AND THERE WERE NO SIGNS OF HIS TRAINER + QUOTE THE TWO LADS WHO SLEPT IN THE CHAFF CUTTING LOFT ABOVE THE HARNESS ROOM WERE QUICKLY AROUSED + THEY HAD HEARD NOTHING DURING THE NIGHT FOR THEY ARE BOTH SOUND SLEEPERS + HUNTER WAS OBVIOUSLY UNDER THE INFLUENCE OF SOME POWERFUL DRUG AND AS NO SENSE COULD BE GOT OUT OF HIM HE WAS LEFT TO SLEEP IT OFF WHILE THE TWO LADS AND THE TWO WOMEN RAN OUT IN SEARCH OF THE ABSENTEES + THEY STILL HAD HOPES THAT THE TRAINER HAD FOR SOME REASON TAKEN OUT THE HORSE FOR EARLY EXERCISE BUT ON ASCENDING THE KNOLL NEAR THE HOUSE FROM WHICH ALL THE NEIGHBOURING MOORS WERE VISIBLE THEY NOT ONLY COULD SEE NO SIGNS OF THE MISSING FAVOURITE BUT THEY PERCEIVED SOMETHING WHICH WARNED THEM THAT THEY WERE IN THE PRESENCE OF A TRAGEDY + ABOUT A QUARTER OF A MILE FROM THE STABLES JOHN STRAKER'S OVERCOAT WAS FLAPPING FROM A FURZE BUSH + IMMEDIATELY BEYOND THERE WAS A BOWL SHAPED DEPRESSION IN THE MOOR AND AT THE BOTTOM OF THIS WAS FOUND THE DEAD BODY OF THE UNFORTUNATE TRAINER + HIS HEAD HAD BEEN SHATTERED BY A SAVAGE BLOW FROM SOME HEAVY WEAPON AND HE WAS WOUNDED ON THE THIGH WHERE THERE WAS A LONG CLEAN CUT INFLICTED EVIDENTLY BY SOME VERY SHARP INSTRUMENT + IT WAS CLEAR HOWEVER THAT STRAKER HAD DEFENDED HIMSELF VIGOROUSLY AGAINST HIS ASSAILANTS FOR IN HIS RIGHT HAND HE HELD A SMALL KNIFE WHICH WAS CLOTTED WITH BLOOD UP TO THE HANDLE WHILE IN HIS LEFT HE CLASPED A RED AND BLACK SILK CRAVAT WHICH WAS RECOGNIZED BY THE MAID AS HAVING BEEN WORN ON THE PRECEDING EVENING BY THE STRANGER WHO HAD VISITED THE STABLES + HUNTER ON RECOVERING FROM HIS STUPOR WAS ALSO QUITE POSITIVE AS TO THE OWNERSHIP OF THE CRAVAT + HE WAS EQUALLY CERTAIN THAT THE SAME STRANGER HAD WHILE STANDING AT THE WINDOW DRUGGED HIS CURRIED MUTTON AND SO DEPRIVED THE STABLES OF THEIR WATCHMAN + AS TO THE MISSING HORSE THERE WERE ABUNDANT PROOFS IN THE MUD WHICH LAY AT THE BOTTOM OF THE FATAL HOLLOW THAT HE HAD BEEN THERE AT THE TIME OF THE STRUGGLE + BUT FROM THAT MORNING HE HAS DISAPPEARED AND ALTHOUGH A LARGE REWARD HAS BEEN OFFERED AND ALL THE GYPSIES OF DARTMOOR ARE ON THE ALERT NO NEWS HAS COME OF HIM + FINALLY AN ANALYSIS HAS SHOWN THAT THE REMAINS OF HIS SUPPER LEFT BY THE STABLE LAD CONTAINED AN APPRECIABLE QUANTITY OF POWDERED OPIUM WHILE THE PEOPLE AT THE HOUSE PARTOOK OF THE SAME DISH ON THE SAME NIGHT WITHOUT ANY ILL EFFECT + THOSE ARE THE MAIN FACTS OF THE CASE STRIPPED OF ALL SURMISE AND STATED AS BALDLY AS POSSIBLE + I SHALL NOW RECAPITULATE WHAT THE POLICE HAVE DONE IN THE MATTER + INSPECTOR GREGORY TO WHOM THE CASE HAS BEEN COMMITTED IS AN EXTREMELY COMPETENT OFFICER + WERE HE BUT GIFTED WITH IMAGINATION HE MIGHT RISE TO GREAT HEIGHTS IN HIS PROFESSION + ON HIS ARRIVAL HE PROMPTLY FOUND AND ARRESTED THE MAN UPON WHOM SUSPICION NATURALLY RESTED + THERE WAS LITTLE DIFFICULTY IN FINDING HIM FOR HE INHABITED ONE OF THOSE VILLAS WHICH I HAVE MENTIONED + HIS NAME IT APPEARS WAS FITZROY SIMPSON + HE WAS A MAN OF EXCELLENT BIRTH AND EDUCATION WHO HAD SQUANDERED A FORTUNE UPON THE TURF. AND WHO LIVED NOW BY DOING A LITTLE QUIET AND GENTEEL BOOK MAKING IN THE SPORTING CLUBS OF LONDON + AN EXAMINATION OF HIS BETTING BOOK SHOWS THAT BETS TO THE AMOUNT OF FIVE THOUSAND POUNDS HAD BEEN REGISTERED BY HIM AGAINST THE FAVOURITE + ON BEING ARRESTED HE VOLUNTEERED THE STATEMENT THAT HE HAD COME DOWN TO DARTMOOR IN THE HOPE OF GETTING SOME INFORMATION ABOUT THE KING'S PYLAND HORSES AND ALSO ABOUT DESBOROUGH THE SECOND FAVOURITE WHICH WAS IN CHARGE OF SILAS BROWN AT THE MAPLETON STABLES + HE DID NOT ATTEMPT TO DENY THAT HE HAD ACTED AS DESCRIBED UPON THE EVENING BEFORE BUT DECLARED THAT HE HAD NO SINISTER DESIGNS AND HAD SIMPLY WISHED TO OBTAIN FIRST HAND INFORMATION + WHEN CONFRONTED WITH HIS CRAVAT HE TURNED VERY PALE AND WAS UTTERLY UNABLE TO ACCOUNT FOR ITS PRESENCE IN THE HAND OF THE MURDERED MAN + HIS WET CLOTHING SHOWED THAT HE HAD BEEN OUT IN THE STORM OF THE NIGHT BEFORE AND HIS STICK WHICH WAS A PENANGLAWYER WEIGHTED WITH LEAD WAS JUST SUCH A WEAPON AS MIGHT BY REPEATED BLOWS HAVE INFLICTED THE TERRIBLE INJURIES TO WHICH THE TRAINER HAD SUCCUMBED + ON THE OTHER HAND THERE WAS NO WOUND UPON HIS PERSON WHILE THE STATE OF STRAKER'S KNIFE WOULD SHOW THAT ONE AT LEAST OF HIS ASSAILANTS MUST BEAR HIS MARK UPON HIM + THERE YOU HAVE IT ALL IN A NUTSHELL WATSON AND IF YOU CAN GIVE ME ANY LIGHT I SHALL BE INFINITELY OBLIGED TO YOU + I HAD LISTENED WITH THE GREATEST INTEREST TO THE STATEMENT WHICH HOLMES WITH CHARACTERISTIC CLEARNESS HAD LAID BEFORE ME + THOUGH MOST OF THE FACTS WERE FAMILIAR TO ME I HAD NOT SUFFICIENTLY APPRECIATED THEIR RELATIVE IMPORTANCE NOR THEIR CONNECTION TO EACH OTHER + IS IT NOT POSSIBLE I SUGGESTED THAT THE INCISED WOUND UPON STRAKER MAY HAVE BEEN CAUSED BY HIS OWN KNIFE IN THE CONVULSIVE STRUGGLES WHICH FOLLOW ANY BRAIN INJURY + QUOTE IT IS MORE THAN POSSIBLE IT IS PROBABLE QUOTE SAID HOLMES + IN THAT CASE ONE OF THE MAIN POINTS IN FAVOUR OF THE ACCUSED DISAPPEARS + AND YET SAID I EVEN NOW I FAIL TO UNDERSTAND WHAT THE THEORY OF THE POLICE CAN BE + I AM AFRAID THAT WHATEVER THEORY WE STATE HAS VERY GRAVE OBJECTIONS TO IT RETURNED MY COMPANION + THE POLICE IMAGINE I TAKE IT THAT THIS FITZROY SIMPSON HAVING DRUGGED THE LAD AND HAVING IN SOME WAY OBTAINED A DUPLICATE KEY OPENED THE STABLE DOOR AND TOOK OUT THE HORSE WITH THE INTENTION APPARENTLY OF KIDNAPPING HIM ALTOGETHER + HIS BRIDLE IS MISSING SO THAT SIMPSON MUST HAVE PUT THIS ON + THEN HAVING LEFT THE DOOR OPEN BEHIND HIM HE WAS LEADING THE HORSE AWAY OVER THE MOOR WHEN HE WAS EITHER MET OR OVERTAKEN BY THE TRAINER + A ROW NATURALLY ENSUED + SIMPSON BEAT OUT THE TRAINER'S BRAINS WITH HIS HEAVY STICK WITHOUT RECEIVING ANY INJURY FROM THE SMALL KNIFE WHICH STRAKER USED IN SELF DEFENCE AND THEN THE THIEF EITHER LED THE HORSE ON TO SOME SECRET HIDING PLACE OR ELSE IT MAY HAVE BOLTED DURING THE STRUGGLE AND BE NOW WANDERING OUT ON THE MOORS + THAT IS THE CASE AS IT APPEARS TO THE POLICE AND IMPROBABLE AS IT IS ALL OTHER EXPLANATIONS ARE MORE IMPROBABLE STILL + HOWEVER I SHALL VERY QUICKLY TEST THE MATTER WHEN I AM ONCE UPON THE SPOT AND UNTIL THEN I CANNOT REALLY SEE HOW WE CAN GET MUCH FURTHER THAN OUR PRESENT POSITION + IT WAS EVENING BEFORE WE REACHED THE LITTLE TOWN OF TAVISTOCK WHICH LIES LIKE THE BOSS OF A SHIELD IN THE MIDDLE OF THE HUGE CIRCLE OF DARTMOOR + TWO GENTLEMEN WERE AWAITING US IN THE STATION THE ONE A TALL FAIR MAN WITH LION LIKE HAIR AND BEARD AND CURIOUSLY PENETRATING LIGHT BLUE EYES THE OTHER A SMALL ALERT PERSON VERY NEAT AND DAPPER IN A FROCK COAT AND GAITERS WITH TRIM LITTLE SIDE WHISKERS AND AN EYEGLASS + THE LATTER WAS COLONEL ROSS THE WELL KNOWN SPORTSMAN THE OTHER INSPECTOR GREGORY A MAN WHO WAS RAPIDLY MAKING HIS NAME IN THE ENGLISH DETECTIVE SERVICE + QUOTE I AM DELIGHTED THAT YOU HAVE COME DOWN MR. HOLMES QUOTE SAID THE COLONEL + THE INSPECTOR HERE HAS DONE ALL THAT COULD POSSIBLY BE SUGGESTED BUT I WISH TO LEAVE NO STONE UNTURNED IN TRYING TO AVENGE POOR STRAKER AND IN RECOVERING MY HORSE + HAVE THERE BEEN ANY FRESH DEVELOPMENTS ASKED HOLMES + I AM SORRY TO SAY THAT WE HAVE MADE VERY LITTLE PROGRESS SAID THE INSPECTOR + WE HAVE AN OPEN CARRIAGE OUTSIDE AND AS YOU WOULD NO DOUBT LIKE TO SEE THE PLACE BEFORE THE LIGHT FAILS WE MIGHT TALK IT OVER AS WE DRIVE + A MINUTE LATER WE WERE ALL SEATED IN A COMFORTABLE LANDAU AND WERE RATTLING THROUGH THE QUAINT OLD DEVONSHIRE CITY + INSPECTOR GREGORY WAS FULL OF HIS CASE AND POURED OUT A STREAM OF REMARKS WHILE HOLMES THREW IN AN OCCASIONAL QUESTION OR INTERJECTION + COLONEL ROSS LEANED BACK WITH HIS ARMS FOLDED AND HIS HAT TILTED OVER HIS EYES WHILE I LISTENED WITH INTEREST TO THE DIALOGUE OF THE TWO DETECTIVES + GREGORY WAS FORMULATING HIS THEORY WHICH WAS ALMOST EXACTLY WHAT HOLMES HAD FORETOLD IN THE TRAIN + THE NET IS DRAWN PRETTY CLOSE ROUND FITZROY SIMPSON HE REMARKED AND I BELIEVE MYSELF THAT HE IS OUR MAN + AT THE SAME TIME I RECOGNIZE THAT THE EVIDENCE IS PURELY CIRCUMSTANTIAL AND THAT SOME NEW DEVELOPMENT MAY UPSET IT QUOTE + HOW ABOUT STRAKER'S KNIFE + WE HAVE QUITE COME TO THE CONCLUSION THAT HE WOUNDED HIMSELF IN HIS FALL + MY FRIEND DOCTOR WATSON MADE THAT SUGGESTION TO ME AS WE CAME DOWN + IF SO IT WOULD TELL AGAINST THIS MAN SIMPSON + UNDOUBTEDLY + HE HAS NEITHER A KNIFE NOR ANY SIGN OF A WOUND + THE EVIDENCE AGAINST HIM IS CERTAINLY VERY STRONG + HE HAD A GREAT INTEREST IN THE DISAPPEARANCE OF THE FAVOURITE + HE LIES UNDER SUSPICION OF HAVING POISONED THE STABLE BOY HE WAS UNDOUBTEDLY OUT IN THE STORM HE WAS ARMED WITH A HEAVY STICK AND HIS CRAVAT WAS FOUND IN THE DEAD MAN'S HAND + I REALLY THINK WE HAVE ENOUGH TO GO BEFORE A JURY QUOTE + HOLMES SHOOK HIS HEAD + A CLEVER COUNSEL WOULD TEAR IT ALL TO RAGS SAID HE + WHY SHOULD HE TAKE THE HORSE OUT OF THE STABLE + IF HE WISHED TO INJURE IT WHY COULD HE NOT DO IT THERE + HAS A DUPLICATE KEY BEEN FOUND IN HIS POSSESSION + WHAT CHEMIST SOLD HIM THE POWDERED OPIUM + ABOVE ALL WHERE COULD HE A STRANGER TO THE DISTRICT HIDE A HORSE AND SUCH A HORSE AS THIS + WHAT IS HIS OWN EXPLANATION AS TO THE PAPER WHICH HE WISHED THE MAID TO GIVE TO THE STABLE BOY + HE SAYS THAT IT WAS A TEN POUND NOTE + ONE WAS FOUND IN HIS PURSE + BUT YOUR OTHER DIFFICULTIES ARE NOT SO FORMIDABLE AS THEY SEEM + HE IS NOT A STRANGER TO THE DISTRICT + HE HAS TWICE LODGED AT TAVISTOCK IN THE SUMMER + THE OPIUM WAS PROBABLY BROUGHT FROM LONDON + THE KEY HAVING SERVED ITS PURPOSE WOULD BE HURLED AWAY + THE HORSE MAY BE AT THE BOTTOM OF ONE OF THE PITS OR OLD MINES UPON THE MOOR + QUOTE WHAT DOES HE SAY ABOUT THE CRAVAT QUOTE + HE ACKNOWLEDGES THAT IT IS HIS AND DECLARES THAT HE HAD LOST IT + BUT A NEW ELEMENT HAS BEEN INTRODUCED INTO THE CASE WHICH MAY ACCOUNT FOR HIS LEADING THE HORSE FROM THE STABLE + HOLMES PRICKED UP HIS EARS + WE HAVE FOUND TRACES WHICH SHOW THAT A PARTY OF GYPSIES ENCAMPED ON MONDAY NIGHT WITHIN A MILE OF THE SPOT WHERE THE MURDER TOOK PLACE + ON TUESDAY THEY WERE GONE + NOW PRESUMING THAT THERE WAS SOME UNDERSTANDING BETWEEN SIMPSON AND THESE GYPSIES MIGHT HE NOT HAVE BEEN LEADING THE HORSE TO THEM WHEN HE WAS OVERTAKEN AND MAY THEY NOT HAVE HIM NOW + IT IS CERTAINLY POSSIBLE + QUOTE THE MOOR IS BEING SCOURED FOR THESE GYPSIES + I HAVE ALSO EXAMINED EVERY STABLE AND OUTHOUSE IN TAVISTOCK AND FOR A RADIUS OF TEN MILES + THERE IS ANOTHER TRAINING STABLE QUITE CLOSE I UNDERSTAND + YES AND THAT IS A FACTOR WHICH WE MUST CERTAINLY NOT NEGLECT + AS DESBOROUGH THEIR HORSE WAS SECOND IN THE BETTING THEY HAD AN INTEREST IN THE DISAPPEARANCE OF THE FAVOURITE + SILAS BROWN THE TRAINER IS KNOWN TO HAVE HAD LARGE BETS UPON THE EVENT AND HE WAS NO FRIEND TO POOR STRAKER + WE HAVE HOWEVER EXAMINED THE STABLES AND THERE IS NOTHING TO CONNECT HIM WITH THE AFFAIR + AND NOTHING TO CONNECT THIS MAN SIMPSON WITH THE INTERESTS OF THE MAPLETON STABLES + QUOTE NOTHING AT ALL QUOTE + HOLMES LEANED BACK IN THE CARRIAGE AND THE CONVERSATION CEASED + A FEW MINUTES LATER OUR DRIVER PULLED UP AT A NEAT LITTLE RED BRICK VILLA WITH OVERHANGING EAVES WHICH STOOD BY THE ROAD + SOME DISTANCE OFF ACROSS A PADDOCK LAY A LONG GRAY TILED OUTBUILDING + IN EVERY OTHER DIRECTION THE LOW CURVES OF THE MOOR BRONZE COLOURED FROM THE FADING FERNS STRETCHED AWAY TO THE SKY LINE BROKEN ONLY BY THE STEEPLES OF TAVISTOCK AND BY A CLUSTER OF HOUSES AWAY TO THE WESTWARD WHICH MARKED THE MAPLETON STABLES + WE ALL SPRANG OUT WITH THE EXCEPTION OF HOLMES WHO CONTINUED TO LEAN BACK WITH HIS EYES FIXED UPON THE SKY IN FRONT OF HIM ENTIRELY ABSORBED IN HIS OWN THOUGHTS + IT WAS ONLY WHEN I TOUCHED HIS ARM THAT HE ROUSED HIMSELF WITH A VIOLENT START AND STEPPED OUT OF THE CARRIAGE + EXCUSE ME SAID HE TURNING TO COLONEL ROSS WHO HAD LOOKED AT HIM IN SOME SURPRISE + I WAS DAY DREAMING + THERE WAS A GLEAM IN HIS EYES AND A SUPPRESSED EXCITEMENT IN HIS MANNER WHICH CONVINCED ME USED AS I WAS TO HIS WAYS THAT HIS HAND WAS UPON A CLUE THOUGH I COULD NOT IMAGINE WHERE HE HAD FOUND IT + PERHAPS YOU WOULD PREFER AT ONCE TO GO ON TO THE SCENE OF THE CRIME MR. HOLMES SAID GREGORY + I THINK THAT I SHOULD PREFER TO STAY HERE A LITTLE AND GO INTO ONE OR TWO QUESTIONS OF DETAIL + STRAKER WAS BROUGHT BACK HERE I PRESUME + QUOTE YES HE LIES UPSTAIRS + THE INQUEST IS TO MORROW + HE HAS BEEN IN YOUR SERVICE SOME YEARS COLONEL ROSS + I HAVE ALWAYS FOUND HIM AN EXCELLENT SERVANT + I PRESUME THAT YOU MADE AN INVENTORY OF WHAT HE HAD IN HIS POCKETS AT THE TIME OF HIS DEATH INSPECTOR + I HAVE THE THINGS THEMSELVES IN THE SITTING ROOM IF YOU WOULD CARE TO SEE THEM + QUOTE I SHOULD BE VERY GLAD QUOTE + WE ALL FILED INTO THE FRONT ROOM AND SAT ROUND THE CENTRAL TABLE WHILE THE INSPECTOR UNLOCKED A SQUARE TIN BOX AND LALD A SMALL HEAP OF THINGS BEFORE US + THERE WAS A BOX OF VESTAS TWO INCHES OF TALLOW CANDLE AN A D. P. BRIER ROOT PIPE A POUCH OF SEALSKIN WITH HALF AN OUNCE OF LONG CUT CAVENDISH A SILVER WATCH WITH A GOLD CHAIN FIVE SOVEREIGNS IN GOLD AN ALUMINUM PENCIL CASE A FEW PAPERS AND AN IVORY HANDLED KNIFE WITH A VERY DELICATE INFLEXIBLE BLADE MARKED WEISS AND COMPANY LONDON + THIS IS A VERY SINGULAR KNIFE SAID HOLMES LIFTING IT UP AND EXAMINING IT MINUTELY + I PRESUME AS I SEE BLOOD STAINS UPON IT THAT IT IS THE ONE WHICH WAS FOUND IN THE DEAD MAN'S GRASP + WATSON THIS KNIFE IS SURELY IN YOUR LINE + IT IS WHAT WE CALL A CATARACT KNIFE SAID I + I THOUGHT SO + A VERY DELICATE BLADE DEVISED FOR VERY DELICATE WORK + A STRANGE THING FOR A MAN TO CARRY WITH HIM UPON A ROUGH EXPEDITION ESPECIALLY AS IT WOULD NOT SHUT IN HIS POCKET QUOTE + THE TIP WAS GUARDED BY A DISC OF CORK WHICH WE FOUND BESIDE HIS BODY SAID THE INSPECTOR + HIS WIFE TELLS US THAT THE KNIFE HAD LAIN UPON THE DRESSING TABLE AND THAT HE HAD PICKED IT UP AS HE LEFT THE ROOM + IT WAS A POOR WEAPON BUT PERHAPS THE BEST THAT HE COULD LAY HIS HANDS ON AT THE MOMENT + VERY POSSIBLY + HOW ABOUT THESE PAPERS + QUOTE THREE OF THEM ARE RECEIPTED HAY DEALERS' ACCOUNTS + ONE OF THEM IS A LETTER OF INSTRUCTIONS FROM COLONEL ROSS + THIS OTHER IS A MILLINER'S ACCOUNT FOR THIRTY SEVEN POUNDS FIFTEEN MADE OUT BY MADAME LESURIER OF BOND STREET TO WILLIAM DERBYSHIRE + MRS. STRAKER TELLS US THAT DERBYSHIRE WAS A FRIEND OF HER HUSBAND'S AND THAT OCCASIONALLY HIS LETTERS WERE ADDRESSED HERE + MADAME DERBYSHIRE HAD SOMEWHAT EXPENSIVE TASTES REMARKED HOLMES GLANCING DOWN THE ACCOUNT + TWENTY TWO GUINEAS IS RATHER HEAVY FOR A SINGLE COSTUME + HOWEVER THERE APPEARS TO BE NOTHING MORE TO LEARN AND WE MAY NOW GO DOWN TO THE SCENE OF THE CRIME + AS WE EMERGED FROM THE SITTING ROOM A WOMAN WHO HAD BEEN WAITING IN THE PASSAGE TOOK A STEP FORWARD AND LAID HER HAND UPON THE INSPECTOR'S SLEEVE + HER FACE WAS HAGGARD AND THIN AND EAGER STAMPED WITH THE PRINT OF A RECENT HORROR + HAVE YOU GOT THEM + HAVE YOU FOUND THEM QUOTE SHE PANTED + NO MRS. STRAKER + BUT MR. HOLMES HERE HAS COME FROM LONDON TO HELP US AND WE SHALL DO ALL THAT IS POSSIBLE + SURELY I MET YOU IN PLYMOUTH AT A GARDEN PARTY SOME LITTLE TIME AGO MRS. STRAKER SAID HOLMES + NO SIR YOU ARE MISTAKEN + DEAR ME + WHY I COULD HAVE SWORN TO IT + YOU WORE A COSTUME OF DOVE COLOURED SILK WITH OSTRICH FEATHER TRIMMING QUOTE + I NEVER HAD SUCH A DRESS SIR ANSWERED THE LADY + AH THAT QUITE SETTLES IT SAID HOLMES + AND WITH AN APOLOGY HE FOLLOWED THE INSPECTOR OUTSIDE + A SHORT WALK ACROSS THE MOOR TOOK US TO THE HOLLOW IN WHICH THE BODY HAD BEEN FOUND + AT THE BRINK OF IT WAS THE FURZE BUSH UPON WHICH THE COAT HAD BEEN HUNG + THERE WAS NO WIND THAT NIGHT I UNDERSTAND SAID HOLMES + NONE BUT VERY HEAVY RAIN + IN THAT CASE THE OVERCOAT WAS NOT BLOWN AGAINST THE FURZEBUSH BUT PLACED THERE + QUOTE YES IT WAS LAID ACROSS THE BUSH QUOTE + YOU FILL ME WITH INTEREST + I PERCEIVE THAT THE GROUND HAS BEEN TRAMPLED UP A GOOD DEAL + NO DOUBT MANY FEET HAVE BEEN HERE SINCE MONDAY NIGHT + A PIECE OF MATTING HAS BEEN LAID HERE AT THE SIDE AND WE HAVE ALL STOOD UPON THAT + EXCELLENT + IN THIS BAG I HAVE ONE OF THE BOOTS WHICH STRAKER WORE ONE OF FITZROY SIMPSON'S SHOES AND A CAST HORSESHOE OF SILVER BLAZE + QUOTE MY DEAR INSPECTOR YOU SURPASS YOURSELF QUOTE + HOLMES TOOK THE BAG AND DESCENDING INTO THE HOLLOW HE PUSHED THE MATTING INTO A MORE CENTRAL POSITION + THEN STRETCHING HIMSELF UPON HIS FACE AND LEANING HIS CHIN UPON HIS HANDS HE MADE A CAREFUL STUDY OF THE TRAMPLED MUD IN FRONT OF HIM + HULLO SAID HE SUDDENLY + WHAT'S THIS + IT WAS A WAX VESTA HALF BURNED WHICH WAS SO COATED WITH MUD THAT IT LOOKED AT FIRST LIKE A LITTLE CHIP OF WOOD + I CANNOT THINK HOW I CAME TO OVERLOOK IT SAID THE INSPECTOR WITH AN EXPRESSION OF ANNOYANCE + IT WAS INVISIBLE BURIED IN THE MUD + I ONLY SAW IT BECAUSE I WAS LOOKING FOR IT + QUOTE WHAT YOU EXPECTED TO FIND IT QUOTE + I THOUGHT IT NOT UNLIKELY + HE TOOK THE BOOTS FROM THE BAG AND COMPARED THE IMPRESSIONS OF EACH OF THEM WITH MARKS UPON THE GROUND + THEN HE CLAMBERED UP TO THE RIM OF THE HOLLOW AND CRAWLED ABOUT AMONG THE FERNS AND BUSHES + I AM AFRAID THAT THERE ARE NO MORE TRACKS SAID THE INSPECTOR + I HAVE EXAMINED THE GROUND VERY CAREFULLY FOR A HUNDRED YARDS IN EACH DIRECTION + INDEED SAID HOLMES RISING + I SHOULD NOT HAVE THE IMPERTINENCE TO DO IT AGAIN AFTER WHAT YOU SAY + BUT I SHOULD LIKE TO TAKE A LITTLE WALK OVER THE MOOR BEFORE IT GROWS DARK THAT I MAY KNOW MY GROUND TO MORROW AND I THINK THAT I SHALL PUT THIS HORSESHOE INTO MY POCKET FOR LUCK QUOTE + COLONEL ROSS WHO HAD SHOWN SOME SIGNS OF IMPATIENCE AT MY COMPANION'S QUIET AND SYSTEMATIC METHOD OF WORK GLANCED AT HIS WATCH + I WISH YOU WOULD COME BACK WITH ME INSPECTOR SAID HE + THERE ARE SEVERAL POINTS ON WHICH I SHOULD LIKE YOUR ADVICE AND ESPECIALLY AS TO WHETHER WE DO NOT OWE IT TO THE PUBLIC TO REMOVE OUR HORSE'S NAME FROM THE ENTRIES FOR THE CUP + CERTAINLY NOT CRIED HOLMES WITH DECISION + I SHOULD LET THE NAME STAND + THE COLONEL BOWED + I AM VERY GLAD TO HAVE HAD YOUR OPINION SIR SAID HE + QUOTE YOU WILL FIND US AT POOR STRAKER'S HOUSE WHEN YOU HAVE FINISHED YOUR WALK AND WE CAN DRIVE TOGETHER INTO TAVISTOCK QUOTE + HE TURNED BACK WITH THE INSPECTOR WHILE HOLMES AND I WALKED SLOWLY ACROSS THE MOOR + THE SUN WAS BEGINNING TO SINK BEHIND THE STABLE OF MAPLETON AND THE LONG SLOPING PLAIN IN FRONT OF US WAS TINGED WITH GOLD DEEPENING INTO RICH RUDDY BROWNS WHERE THE FADED FERNS AND BRAMBLES CAUGHT THE EVENING LIGHT + BUT THE GLORIES OF THE LANDSCAPE WERE ALL WASTED UPON MY COMPANION WHO WAS SUNK IN THE DEEPEST THOUGHT + IT'S THIS WAY WATSON SAID HE AT LAST + WE MAY LEAVE THE QUESTION OF WHO KILLED JOHN STRAKER FOR THE INSTANT AND CONFINE OURSELVES TO FINDING OUT WHAT HAS BECOME OF THE HORSE + NOW SUPPOSING THAT HE BROKE AWAY DURING OR AFTER THE TRAGEDY WHERE COULD HE HAVE GONE TO + THE HORSE IS A VERY GREGARIOUS CREATURE + IF LEFT TO HIMSELF HIS INSTINCTS WOULD HAVE BEEN EITHER TO RETURN TO KING'S PYLAND OR GO OVER TO MAPLETON + WHY SHOULD HE RUN WILD UPON THE MOOR + HE WOULD SURELY HAVE BEEN SEEN BY NOW + AND WHY SHOULD GYPSIES KIDNAP HIM + THESE PEOPLE ALWAYS CLEAR OUT WHEN THEY HEAR OF TROUBLE FOR THEY DO NOT WISH TO BE PESTERED BY THE POLICE + THEY COULD NOT HOPE TO SELL SUCH A HORSE + THEY WOULD RUN A GREAT RISK AND GAIN NOTHING BY TAKING HIM + SURELY THAT IS CLEAR + WHERE IS HE THEN + I HAVE ALREADY SAID THAT HE MUST HAVE GONE TO KING'S PYLAND OR TO MAPLETON + HE IS NOT AT KING'S PYLAND + THEREFORE HE IS AT MAPLETON + LET US TAKE THAT AS A WORKING HYPOTHESIS AND SEE WHAT IT LEADS US TO + THIS PART OF THE MOOR AS THE INSPECTOR REMARKED IS VERY HARD AND DRY + BUT IT FALLS AWAY TOWARDS MAPLETON AND YOU CAN SEE FROM HERE THAT THERE IS A LONG HOLLOW OVER YONDER WHICH MUST HAVE BEEN VERY WET ON MONDAY NIGHT + IF OUR SUPPOSITION IS CORRECT THEN THE HORSE MUST HAVE CROSSED THAT AND THERE IS THE POINT WHERE WE SHOULD LOOK FOR HIS TRACKS QUOTE + WE HAD BEEN WALKING BRISKLY DURING THIS CONVERSATION AND A FEW MORE MINUTES BROUGHT US TO THE HOLLOW IN QUESTION + AT HOLMES'S REQUEST I WALKED DOWN THE BANK TO THE RIGHT AND HE TO THE LEFT BUT I HAD NOT TAKEN FIFTY PACES BEFORE I HEARD HIM GIVE A SHOUT AND SAW HIM WAVING HIS HAND TO ME + THE TRACK OF A HORSE WAS PLAINLY OUTLINED IN THE SOFT EARTH IN FRONT OF HIM AND THE SHOE WHICH HE TOOK FROM HIS POCKET EXACTLY FITTED THE IMPRESSION + SEE THE VALUE OF IMAGINATION SAID HOLMES + IT IS THE ONE QUALITY WHICH GREGORY LACKS + WE IMAGINED WHAT MIGHT HAVE HAPPENED ACTED UPON THE SUPPOSITION AND FIND OURSELVES JUSTIFIED + LET US PROCEED + WE CROSSED THE MARSHY BOTTOM AND PASSED OVER A QUARTER OF A MILE OF DRY HARD TURF + AGAIN THE GROUND SLOPED AND AGAIN WE CAME ON THE TRACKS + THEN WE LOST THEM FOR HALF A MILE BUT ONLY TO PICK THEM UP ONCE MORE QUITE CLOSE TO MAPLETON + IT WAS HOLMES WHO SAW THEM FIRST AND HE STOOD POINTING WITH A LOOK OF TRIUMPH UPON HIS FACE + A MAN'S TRACK WAS VISIBLE BESIDE THE HORSE'S + THE HORSE WAS ALONE BEFORE I CRIED + QUITE SO + IT WAS ALONE BEFORE + HULLO WHAT IS THIS QUOTE + THE DOUBLE TRACK TURNED SHARP OFF AND TOOK THE DIRECTION OF KING'S PYLAND + HOLMES WHISTLED AND WE BOTH FOLLOWED ALONG AFTER IT + HIS EYES WERE ON THE TRAIL BUT I HAPPENED TO LOOK A LITTLE TO ONE SIDE AND SAW TO MY SURPRISE THE SAME TRACKS COMING BACK AGAIN IN THE OPPOSITE DIRECTION + ONE FOR YOU WATSON SAID HOLMES WHEN I POINTED IT OUT + YOU HAVE SAVED US A LONG WALK WHICH WOULD HAVE BROUGHT US BACK ON OUR OWN TRACES + LET US FOLLOW THE RETURN TRACK + WE HAD NOT TO GO FAR + IT ENDED AT THE PAVING OF ASPHALT WHICH LED UP TO THE GATES OF THE MAPLETON STABLES + AS WE APPROACHED A GROOM RAN OUT FROM THEM + WE DON'T WANT ANY LOITERERS ABOUT HERE SAID HE + I ONLY WISHED TO ASK A QUESTION SAID HOLMES WITH HIS FINGER AND THUMB IN HIS WAISTCOAT POCKET + QUOTE SHOULD I BE TOO EARLY TO SEE YOUR MASTER MR. SILAS BROWN IF I WERE TO CALL AT FIVE O'CLOCK TO MORROW MORNING QUOTE + BLESS YOU SIR IF ANYONE IS ABOUT HE WILL BE FOR HE IS ALWAYS THE FIRST STIRRING + BUT HERE HE IS SIR TO ANSWER YOUR QUESTIONS FOR HIMSELF + NO SIR NO IT IS AS MUCH AS MY PLACE IS WORTH TO LET HIM SEE ME TOUCH YOUR MONEY + AFTERWARDS IF YOU LIKE + AS SHERLOCK HOLMES REPLACED THE HALF CROWN WHICH HE HAD DRAWN FROM HIS POCKET A FIERCE LOOKING ELDERLY MAN STRODE OUT FROM THE GATE WITH A HUNTING CROP SWINGING IN HIS HAND + WHAT'S THIS DAWSON HE CRIED + NO GOSSIPING + GO ABOUT YOUR BUSINESS + AND YOU WHAT THE DEVIL DO YOU WANT HERE + QUOTE TEN MINUTES' TALK WITH YOU MY GOOD SIR QUOTE SAID HOLMES IN THE SWEETEST OF VOICES + I'VE NO TIME TO TALK TO EVERY GADABOUT + WE WANT NO STRANGERS HERE + BE OFF OR YOU MAY FIND A DOG AT YOUR HEELS + HOLMES LEANED FORWARD AND WHISPERED SOMETHING IN THE TRAINER'S EAR + HE STARTED VIOLENTLY AND FLUSHED TO THE TEMPLES + IT'S A LIE HE SHOUTED + AN INFERNAL LIE + VERY GOOD + SHALL WE ARGUE ABOUT IT HERE IN PUBLIC OR TALK IT OVER IN YOUR PARLOUR QUOTE + OH COME IN IF YOU WISH TO + HOLMES SMILED + I SHALL NOT KEEP YOU MORE THAN A FEW MINUTES WATSON SAID HE + NOW + MR. BROWN + I AM QUITE AT YOUR DISPOSAL + IT WAS TWENTY MINUTES AND THE REDS HAD ALL FADED INTO GRAYS BEFORE HOLMES AND THE TRAINER REAPPEARED + NEVER HAVE I SEEN SUCH A CHANGE AS HAD BEEN BROUGHT ABOUT IN SILAS BROWN IN THAT SHORT TIME + HIS FACE WAS ASHY PALE BEADS OF PERSPIRATION SHONE UPON HIS BROW AND HIS HANDS SHOOK UNTIL THE HUNTING CROP WAGGED LIKE A BRANCH IN THE WIND + HIS BULLYING OVERBEARING MANNER WAS ALL GONE TOO AND HE CRINGED ALONG AT MY COMPANION'S SIDE LIKE A DOG WITH ITS MASTER + YOUR INSTRUCTIONS WILL BE DONE + IT SHALL ALL BE DONE QUOTE SAID HE + THERE MUST BE NO MISTAKE SAID HOLMES LOOKING ROUND AT HIM + THE OTHER WINCED AS HE READ THE MENACE IN HIS EYES + OH NO THERE SHALL BE NO MISTAKE + IT SHALL BE THERE + SHOULD I CHANGE IT FIRST OR NOT + HOLMES THOUGHT A LITTLE AND THEN BURST OUT LAUGHING + NO DON'T SAID HE I SHALL WRITE TO YOU ABOUT IT + NO TRICKS NOW OR + QUOTE OH YOU CAN TRUST ME YOU CAN TRUST ME QUOTE + YES I THINK I CAN + WELL YOU SHALL HEAR FROM ME TO MORROW + HE TURNED UPON HIS HEEL DISREGARDING THE TREMBLING HAND WHICH THE OTHER HELD OUT TO HIM AND WE SET OFF FOR KING'S PYLAND + A MORE PERFECT COMPOUND OF THE BULLY COWARD AND SNEAK THAN MASTER SILAS BROWN I HAVE SELDOM MET WITH REMARKED HOLMES AS WE TRUDGED ALONG TOGETHER + HE HAS THE HORSE THEN + HE TRIED TO BLUSTER OUT OF IT BUT I DESCRIBED TO HIM SO EXACTLY WHAT HIS ACTIONS HAD BEEN UPON THAT MORNING THAT HE IS CONVINCED THAT I WAS WATCHING HIM + OF COURSE YOU OBSERVED THE PECULIARLY SQUARE TOES IN THE IMPRESSIONS AND THAT HIS OWN BOOTS EXACTLY CORRESPONDED TO THEM + AGAIN OF COURSE NO SUBORDINATE WOULD HAVE DARED TO DO SUCH A THING + I DESCRIBED TO HIM HOW WHEN ACCORDING TO HIS CUSTOM HE WAS THE FIRST DOWN HE PERCEIVED A STRANGE HORSE WANDERING OVER THE MOOR + HOW HE WENT OUT TO IT AND HIS ASTONISHMENT AT RECOGNIZING FROM THE WHITE FOREHEAD WHICH HAS GIVEN THE FAVOURITE ITS NAME THAT CHANCE HAD PUT IN HIS POWER THE ONLY HORSE WHICH COULD BEAT THE ONE UPON WHICH HE HAD PUT HIS MONEY + THEN I DESCRIBED HOW HIS FIRST IMPULSE HAD BEEN TO LEAD HIM BACK TO KING'S PYLAND AND HOW THE DEVIL HAD SHOWN HIM HOW HE COULD HIDE THE HORSE UNTIL THE RACE WAS OVER AND HOW HE HAD LED IT BACK AND CONCEALED IT AT MAPLETON + WHEN I TOLD HIM EVERY DETAIL HE GAVE IT UP AND THOUGHT ONLY OF SAVING HIS OWN SKIN QUOTE + BUT HIS STABLES HAD BEEN SEARCHED + OH AN OLD HORSE FAKER LIKE HIM HAS MANY A DODGE + BUT ARE YOU NOT AFRAID TO LEAVE THE HORSE IN HIS POWER NOW SINCE HE HAS EVERY INTEREST IN INJURING IT + MY DEAR FELLOW HE WILL GUARD IT AS THE APPLE OF HIS EYE + HE KNOWS THAT HIS ONLY HOPE OF MERCY IS TO PRODUCE IT SAFE + QUOTE COLONEL ROSS DID NOT IMPRESS ME AS A MAN WHO WOULD BE LIKELY TO SHOW MUCH MERCY IN ANY CASE QUOTE + THE MATTER DOES NOT REST WITH COLONEL ROSS + I FOLLOW MY OWN METHODS AND TELL AS MUCH OR AS LITTLE AS I CHOOSE + THAT IS THE ADVANTAGE OF BEING UNOFFICIAL + I DON'T KNOW WHETHER YOU OBSERVED IT WATSON BUT THE COLONEL'S MANNER HAS BEEN JUST A TRIFLE CAVALIER TO ME + I AM INCLINED NOW TO HAVE A LITTLE AMUSEMENT AT HIS EXPENSE + SAY NOTHING TO HIM ABOUT THE HORSE + CERTAINLY NOT WITHOUT YOUR PERMISSION + AND OF COURSE THIS IS ALL QUITE A MINOR POINT COMPARED TO THE QUESTION OF WHO KILLED JOHN STRAKER + AND YOU WILL DEVOTE YOURSELF TO THAT + QUOTE ON THE CONTRARY WE BOTH GO BACK TO LONDON BY THE NIGHT TRAIN QUOTE + I WAS THUNDERSTRUCK BY MY FRIEND'S WORDS + WE HAD ONLY BEEN A FEW HOURS IN DEVONSHIRE AND THAT HE SHOULD GIVE UP AN INVESTIGATION WHICH HE HAD BEGUN SO BRILLIANTLY WAS QUITE INCOMPREHENSIBLE TO ME + NOT A WORD MORE COULD I DRAW FROM HIM UNTIL WE WERE BACK AT THE TRAINER'S HOUSE + THE COLONEL AND THE INSPECTOR WERE AWAITING US IN THE PARLOUR + MY FRIEND AND I RETURN TO TOWN BY THE NIGHT EXPRESS SAID HOLMES + WE HAVE HAD A CHARMING LITTLE BREATH OF YOUR BEAUTIFUL DARTMOOR AIR + THE INSPECTOR OPENED HIS EYES AND THE COLONEL'S LIP CURLED IN A SNEER + SO YOU DESPAIR OF ARRESTING THE MURDERER OF POOR STRAKER SAID HE + HOLMES SHRUGGED HIS SHOULDERS + THERE ARE CERTAINLY GRAVE DIFFICULTIES IN THE WAY SAID HE + I HAVE EVERY HOPE HOWEVER THAT YOUR HORSE WILL START UPON TUESDAY AND I BEG THAT YOU WILL HAVE YOUR JOCKEY IN READINESS + MIGHT I ASK FOR A PHOTOGRAPH OF MR. JOHN STRAKER QUOTE + THE INSPECTOR TOOK ONE FROM AN ENVELOPE AND HANDED IT TO HIM + MY DEAR GREGORY YOU ANTICIPATE ALL MY WANTS + IF I MIGHT ASK YOU TO WAIT HERE FOR AN INSTANT I HAVE A QUESTION WHICH I SHOULD LIKE TO PUT TO THE MAID + I MUST SAY THAT I AM RATHER DISAPPOINTED IN OUR LONDON CONSULTANT SAID COLONEL ROSS BLUNTLY AS MY FRIEND LEFT THE ROOM + I DO NOT SEE THAT WE ARE ANY FURTHER THAN WHEN HE CAME + AT LEAST YOU HAVE HIS ASSURANCE THAT YOUR HORSE WILL RUN SAID I + QUOTE YES I HAVE HIS ASSURANCE QUOTE SAID THE COLONEL WITH A SHRUG OF HIS SHOULDERS + I SHOULD PREFER TO HAVE THE HORSE + I WAS ABOUT TO MAKE SOME REPLY IN DEFENCE OF MY FRIEND WHEN HE ENTERED THE ROOM AGAIN + NOW GENTLEMEN SAID HE I AM QUITE READY FOR TAVISTOCK + AS WE STEPPED INTO THE CARRIAGE ONE OF THE STABLE LADS HELD THE DOOR OPEN FOR US + A SUDDEN IDEA SEEMED TO OCCUR TO HOLMES FOR HE LEANED FORWARD AND TOUCHED THE LAD UPON THE SLEEVE + YOU HAVE A FEW SHEEP IN THE PADDOCK HE SAID + WHO ATTENDS TO THEM + I DO SIR + QUOTE HAVE YOU NOTICED ANYTHING AMISS WITH THEM OF LATE QUOTE + WELL SIR NOT OF MUCH ACCOUNT BUT THREE OF THEM HAVE GONE LAME SIR + I COULD SEE THAT HOLMES WAS EXTREMELY PLEASED FOR HE CHUCKLED AND RUBBED HIS HANDS TOGETHER + A LONG SHOT WATSON A VERY LONG SHOT SAID HE PINCHING MY ARM + GREGORY LET ME RECOMMEND TO YOUR ATTENTION THIS SINGULAR EPIDEMIC AMONG THE SHEEP + DRIVE ON COACHMAN + COLONEL ROSS STILL WORE AN EXPRESSION WHICH SHOWED THE POOR OPINION WHICH HE HAD FORMED OF MY COMPANION'S ABILITY BUT I SAW BY THE INSPECTOR'S FACE THAT HIS ATTENTION HAD BEEN KEENLY AROUSED + YOU CONSIDER THAT TO BE IMPORTANT HE ASKED + QUOTE EXCEEDINGLY SO QUOTE + IS THERE ANY POINT TO WHICH YOU WOULD WISH TO DRAW MY ATTENTION + TO THE CURIOUS INCIDENT OF THE DOG IN THE NIGHT TIME + THE DOG DID NOTHING IN THE NIGHT TIME + THAT WAS THE CURIOUS INCIDENT REMARKED SHERLOCK HOLMES + FOUR DAYS LATER HOLMES AND I WERE AGAIN IN THE TRAIN BOUND FOR WINCHESTER TO SEE THE RACE FOR THE WESSEX CUP + COLONEL RLOSS MET US BY APPOINTMENT OUTSIDE THE STATION AND WE DROVE IN HIS DRAG TO THE COURSE BEYOND THE TOWN + HIS FACE WAS GRAVE AND HIS MANNER WAS COLD IN THE EXTREME + I HAVE SEEN NOTHING OF MY HORSE SAID HE + QUOTE I SUPPOSE THAT YOU WOULD KNOW HIM WHEN YOU SAW HIM QUOTE ASKED HOLMES + THE COLONEL WAS VERY ANGRY + I HAVE BEEN ON THE TURF FOR TWENTY YEARS AND NEVER WAS ASKED SUCH A QUESTION AS THAT BEFORE SAID HE + A CHILD WOULD KNOW SILVER BLAZE WITH HIS WHITE FOREHEAD AND HIS MOTTLED OFF FORELEG + HOW IS THE BETTING + WELL THAT IS THE CURIOUS PART OF IT + YOU COULD HAVE GOT FIFTEEN TO ONE YESTERDAY BUT THE PRICE HAS BECOME SHORTER AND SHORTER UNTIL YOU CAN HARDLY GET THREE TO ONE NOW + QUOTE HUM QUOTE SAID HOLMES + SOMEBODY KNOWS SOMETHING THAT IS CLEAR + AS THE DRAG DREW UP IN THE ENCLOSURE NEAR THE GRANDSTAND I GLANCED AT THE CARD TO SEE THE ENTRIES + WESSEX PLATE IT RAN FIFTY SOVS. EACH H. F. T. WITH ONE THOUSAND SOVS. ADDED FOR FOUR AND FIVE YEAR OLDS + SECOND THREE HUNDRED POUNDS + THIRD TWO HUNDRED POUNDS + NEW COURSE ONE MILE AND FIVE FURLONGS ONE + MR. HEATH NEWTON'S THE NEGRO + RED CAP + CINNAMON JACKET TWO + COLONEL WARDLAW'S PUGILIST + PINK CAP + BLUE AND BLACK JACKET THREE + LORD BACKWATER'S DESBOROUGH + YELLOW CAP AND SLEEVES FOUR + COLONEL ROSS'S SILVER BLAZE + BLACK CAP + RED JACKET FIVE + DUKE OF BALMORAL'S IRIS + YELLOW AND BLACK STRIPES SIX + LORD SINGLEFORD'S RASPER + PURPLE CAP + BLACK SLEEVES + WE SCRATCHED OUR OTHER ONE AND PUT ALL HOPES ON YOUR WORD SAID THE COLONEL + WHY WHAT IS THAT + SILVER BLAZE FAVOURITE + FIVE TO FOUR AGAINST SILVER BLAZE ROARED THE RING + QUOTE FIVE TO FOUR AGAINST SILVER BLAZE + FIVE TO FIFTEEN AGAINST DESBOROUGH + FIVE TO FOUR ON THE FIELD + THERE ARE THE NUMBERS UP I CRIED + THEY ARE ALL SIX THERE + ALL SIX THERE + THEN MY HORSE IS RUNNING CRIED THE COLONEL IN GREAT AGITATION + QUOTE BUT I DON'T SEE HIM + MY COLOURS HAVE NOT PASSED + ONLY FIVE HAVE PASSED + THIS MUST BE HE + AS I SPOKE A POWERFUL BAY HORSE SWEPT OUT FROM THE WEIGHING ENCLOSURE AND CANTERED PAST US BEARING ON ITS BACK THE WELLKNOWN BLACK AND RED OF THE COLONEL + THAT'S NOT MY HORSE CRIED THE OWNER + THAT BEAST HAS NOT A WHITE HAIR UPON ITS BODY + WHAT IS THIS THAT YOU HAVE DONE MR. HOLMES QUOTE + WELL WELL LET US SEE HOW HE GETS ON SAID MY FRIEND IMPERTURBABLY + FOR A FEW MINUTES HE GAZED THROUGH MY FIELDGLASS + CAPITAL + AN EXCELLENT START HE CRIED SUDDENLY + THERE THEY ARE COMING ROUND THE CURVE + FROM OUR DRAG WE HAD A SUPERB VIEW AS THEY CAME UP THE STRAIGHT + THE SIX HORSES WERE SO CLOSE TOGETHER THAT A CARPET COULD HAVE COVERED THEM BUT HALFWAY UP THE YELLOW OF THE MAPLETON STABLE SHOWED TO THE FRONT + BEFORE THEY REACHED US HOWEVER DESBOROUGH'S BOLT WAS SHOT AND THE COLONEL'S HORSE COMING AWAY WITH A RUSH PASSED THE POST A GOOD SIX LENGTHS BEFORE ITS RIVAL THE DUKE OF BALMORAL'S IRIS MAKING A BAD THIRD + IT'S MY RACE ANYHOW GASPED THE COLONEL PASSING HIS HAND OVER HIS EYES + QUOTE I CONFESS THAT I CAN MAKE NEITHER HEAD NOR TAIL OF IT + DON'T YOU THINK THAT YOU HAVE KEPT UP YOUR MYSTERY LONG ENOUGH MR. HOLMES + CERTAINLY COLONEL YOU SHALL KNOW EVERYTHING + LET US ALL GO ROUND AND HAVE A LOOK AT THE HORSE TOGETHER + HERE HE IS HE CONTINUED AS WE MADE OUR WAY INTO THE WEIGHING ENCLOSURE WHERE ONLY OWNERS AND THEIR FRIENDS FIND ADMITTANCE + YOU HAVE ONLY TO WASH HIS FACE AND HIS LEG IN SPIRITS OF WINE AND YOU WILL FIND THAT HE IS THE SAME OLD SILVER BLAZE AS EVER + YOU TAKE MY BREATH AWAY + QUOTE I FOUND HIM IN THE HANDS OF A FAKER AND TOOK THE LIBERTY OF RUNNING HIM JUST AS HE WAS SENT OVER QUOTE + MY DEAR SIR YOU HAVE DONE WONDERS + THE HORSE LOOKS VERY FIT AND WELL + IT NEVER WENT BETTER IN ITS LIFE + I OWE YOU A THOUSAND APOLOGIES FOR HAVING DOUBTED YOUR ABILITY + YOU HAVE DONE ME A GREAT SERVICE BY RECOVERING MY HORSE + YOU WOULD DO ME A GREATER STILL IF YOU COULD LAY YOUR HANDS ON THE MURDERER OF JOHN STRAKER + I HAVE DONE SO SAID HOLMES QUIETLY + THE COLONEL AND I STARED AT HIM IN AMAZEMENT + YOU HAVE GOT HIM + WHERE IS HE THEN + QUOTE HE IS HERE QUOTE + HERE + WHERE + IN MY COMPANY AT THE PRESENT MOMENT + THE COLONEL FLUSHED ANGRILY + I QUITE RECOGNIZE THAT I AM UNDER OBLIGATIONS TO YOU MR. HOLMES SAID HE BUT I MUST REGARD WHAT YOU HAVE JUST SAID AS EITHER A VERY BAD JOKE OR AN INSULT + SHERLOCK HOLMES LAUGHED + I ASSURE YOU THAT I HAVE NOT ASSOCIATED YOU WITH THE CRIME COLONEL SAID HE + QUOTE THE REAL MURDERER IS STANDING IMMEDIATELY BEHIND YOU QUOTE + HE STEPPED PAST AND LAID HIS HAND UPON THE GLOSSY NECK OF THE THOROUGHBRED + THE HORSE CRIED BOTH THE COLONEL AND MYSELF + YES THE HORSE + AND IT MAY LESSEN HIS GUILT IF I SAY THAT IT WAS DONE IN SELF DEFENCE AND THAT JOHN STRAKER WAS A MAN WHO WAS ENTIRELY UNWORTHY OF YOUR CONFIDENCE + BUT THERE GOES THE BELL AND AS I STAND TO WIN A LITTLE ON THIS NEXT RACE I SHALL DEFER A LENGTHY EXPLANATION UNTIL A MORE FITTING TIME + WE HAD THE CORNER OF A PULLMAN CAR TO OURSELVES THAT EVENING AS WE WHIRLED BACK TO LONDON AND I FANCY THAT THE JOURNEY WAS A SHORT ONE TO COLONEL ROSS AS WELL AS TO MYSELF AS WE LISTENED TO OUR COMPANION'S NARRATIVE OF THE EVENTS WHICH HAD OCCURRED AT THE DARTMOOR TRAINING STABLES UPON THAT MONDAY NIGHT AND THE MEANS BY WHICH HE HAD UNRAVELLED THEM + I CONFESS SAID HE THAT ANY THEORIES WHICH I HAD FORMED FROM THE NEWSPAPER REPORTS WERE ENTIRELY ERRONEOUS + AND YET THERE WERE INDICATIONS THERE HAD THEY NOT BEEN OVERLAID BY OTHER DETAILS WHICH CONCEALED THEIR TRUE IMPORT + I WENT TO DEVONSHIRE WITH THE CONVICTION THAT FITZROY SIMPSON WAS THE TRUE CULPRIT ALTHOUGH OF COURSE I SAW THAT THE EVIDENCE AGAINST HIM WAS BY NO MEANS COMPLETE + IT WAS WHILE I WAS IN THE CARRIAGE JUST AS WE REACHED THE TRAINER'S HOUSE THAT THE IMMENSE SIGNIFICANCE OF THE CURRIED MUTTON OCCURRED TO ME + YOU MAY REMEMBER THAT I WAS DISTRAIT AND REMAINED SITTING AFTER YOU HAD ALL ALIGHTED + I WAS MARVELLING IN MY OWN MIND HOW I COULD POSSIBLY HAVE OVERLOOKED SO OBVIOUS A CLUE + QUOTE I CONFESS QUOTE SAID THE COLONEL QUOTE THAT EVEN NOW I CANNOT SEE HOW IT HELPS US QUOTE + IT WAS THE FIRST LINK IN MY CHAIN OF REASONING + POWDERED OPIUM IS BY NO MEANS TASTELESS + THE FLAVOUR IS NOT DISAGREEABLE BUT IT IS PERCEPTIBLE + WERE IT MIXED WITH ANY ORDINARY DISH THE EATER WOULD UNDOUBTEDLY DETECT IT AND WOULD PROBABLY EAT NO MORE + A CURRY WAS EXACTLY THE MEDIUM WHICH WOULD DISGUISE THIS TASTE + BY NO POSSIBLE SUPPOSITION COULD THIS STRANGER FITZROY SIMPSON HAVE CAUSED CURRY TO BE SERVED IN THE TRAINER'S FAMILY THAT NIGHT AND IT IS SURELY TOO MONSTROUS A COINCIDENCE TO SUPPOSE THAT HE HAPPENED TO COME ALONG WITH POWDERED OPIUM UPON THE VERY NIGHT WHEN A DISH HAPPENED TO BE SERVED WHICH WOULD DISGUISE THE FLAVOUR + THAT IS UNTHINKABLE + THEREFORE SIMPSON BECOMES ELIMINATED FROM THE CASE AND OUR ATTENTION CENTRES UPON STRAKER AND HIS WIFE THE ONLY TWO PEOPLE WHO COULD HAVE CHOSEN CURRIED MUTTON FOR SUPPER THAT NIGHT + THE OPIUM WAS ADDED AFTER THE DISH WAS SET ASIDE FOR THE STABLE BOY FOR THE OTHERS HAD THE SAME FOR SUPPER WITH NO ILL EFFECTS + WHICH OF THEM THEN HAD ACCESS TO THAT DISH WITHOUT THE MAID SEEING THEM + BEFORE DECIDING THAT QUESTION I HAD GRASPED THE SIGNIFICANCE OF THE SILENCE OF THE DOG FOR ONE TRUE INFERENCE INVARIABLY SUGGESTS OTHERS + THE SIMPSON INCIDENT HAD SHOWN ME THAT A DOG WAS KEPT IN THE STABLES AND YET THOUGH SOMEONE HAD BEEN IN AND HAD FETCHED OUT A HORSE HE HAD NOT BARKED ENOUGH TO AROUSE THE TWO LADS IN THE LOFT + OBVIOUSLY THE MIDNIGHT VISITOR WAS SOMEONE WHOM THE DOG KNEW WELL + I WAS ALREADY CONVINCED OR ALMOST CONVINCED THAT JOHN STRAKER WENT DOWN TO THE STABLES IN THE DEAD OF THE NIGHT AND TOOK OUT SILVER BLAZE + FOR WHAT PURPOSE + FOR A DISHONEST ONE OBVIOUSLY OR WHY SHOULD HE DRUG HIS OWN STABLE BOY + AND YET I WAS AT A LOSS TO KNOW WHY + THERE HAVE BEEN CASES BEFORE NOW WHERE TRAINERS HAVE MADE SURE OF GREAT SUMS OF MONEY BY LAYING AGAINST THEIR OWN HORSES THROUGH AGENTS AND THEN PREVENTING THEM FROM WINNING BY FRAUD + SOMETIMES IT IS A PULLING JOCKEY + SOMETIMES IT IS SOME SURER AND SUBTLER MEANS + WHAT WAS IT HERE + I HOPED THAT THE CONTENTS OF HIS POCKETS MIGHT HELP ME TO FORM A CONCLUSION + AND THEY DID SO + YOU CANNOT HAVE FORGOTTEN THE SINGULAR KNIFE WHICH WAS FOUND IN THE DEAD MAN'S HAND A KNIFE WHICH CERTAINLY NO SANE MAN WOULD CHOOSE FOR A WEAPON + IT WAS AS DOCTOR WATSON TOLD US A FORM OF KNIFE WHICH IS USED FOR THE MOST DELICATE OPERATIONS KNOWN IN SURGERY + AND IT WAS TO BE USED FOR A DELICATE OPERATION THAT NIGHT + YOU MUST KNOW WITH YOUR WIDE EXPERIENCE OF TURF MATTERS COLONEL ROSS THAT IT IS POSSIBLE TO MAKE A SLIGHT NICK UPON THE TENDONS OF A HORSE'S HAM AND TO DO IT SUBCUTANEOUSLY SO AS TO LEAVE ABSOLUTELY NO TRACE + A HORSE SO TREATED WOULD DEVELOP A SLIGHT LAMENESS WHICH WOULD BE PUT DOWN TO A STRAIN IN EXERCISE OR A TOUCH OF RHEUMATISM BUT NEVER TO FOUL PLAY + QUOTE VILLAIN + SCOUNDREL CRIED THE COLONEL + WE HAVE HERE THE EXPLANATION OF WHY JOHN STRAKER WISHED TO TAKE THE HORSE OUT ON TO THE MOOR + SO SPIRITED A CREATURE WOULD HAVE CERTAINLY ROUSED THE SOUNDEST OF SLEEPERS WHEN IT FELT THE PRICK OF THE KNIFE + IT WAS ABSOLUTELY NECESSARY TO DO IT IN THE OPEN AIR + I HAVE BEEN BLIND CRIED THE COLONEL + OF COURSE THAT WAS WHY HE NEEDED THE CANDLE AND STRUCK THE MATCH + QUOTE UNDOUBTEDLY + BUT IN EXAMINING HIS BELONGINGS I WAS FORTUNATE ENOUGH TO DISCOVER NOT ONLY THE METHOD OF THE CRIME BUT EVEN ITS MOTIVES + AS A MAN OF THE WORLD COLONEL YOU KNOW THAT MEN DO NOT CARRY OTHER PEOPLE'S BILLS ABOUT IN THEIR POCKETS + WE HAVE MOST OF US QUITE ENOUGH TO DO TO SETTLE OUR OWN + I AT ONCE CONCLUDED THAT STRAKER WAS LEADING A DOUBLE LIFE AND KEEPING A SECOND ESTABLISHMENT + THE NATURE OF THE BILL SHOWED THAT THERE WAS A LADY IN THE CASE AND ONE WHO HAD EXPENSIVE TASTES + LIBERAL AS YOU ARE WITH YOUR SERVANTS ONE CAN HARDLY EXPECT THAT THEY CAN BUY TWENTY GUINEA WALKING DRESSES FOR THEIR LADIES + I QUESTIONED MRS. STRAKER AS TO THE DRESS WITHOUT HER KNOWING IT AND HAVING SATISFIED MYSELF THAT IT HAD NEVER REACHED HER I MADE A NOTE OF THE MILLINER'S ADDRESS AND FELT THAT BY CALLING THERE WITH STRAKER'S PHOTOGRAPH I COULD EASILY DISPOSE OF THE MYTHICAL DERBYSHIRE + FROM THAT TIME ON ALL WAS PLAIN + STRAKER HAD LED OUT THE HORSE TO A HOLLOW WHERE HIS LIGHT WOULD BE INVISIBLE + SIMPSON IN HIS FLIGHT HAD DROPPED HIS CRAVAT AND STRAKER HAD PICKED IT UP WITH SOME IDEA PERHAPS THAT HE MIGHT USE IT IN SECURING THE HORSE'S LEG + ONCE IN THE HOLLOW HE HAD GOT BEHIND THE HORSE AND HAD STRUCK A LIGHT BUT THE CREATURE FRIGHTENED AT THE SUDDEN GLARE AND WITH THE STRANGE INSTINCT OF ANIMALS FEELING THAT SOME MISCHIEF WAS INTENDED HAD LASHED OUT AND THE STEEL SHOE HAD STRUCK STRAKER FULL ON THE FOREHEAD + HE HAD ALREADY IN SPITE OF THE RAIN TAKEN OFF HIS OVERCOAT IN ORDER TO DO HIS DELICATE TASK AND SO AS HE FELL HIS KNIFE GASHED HIS THIGH + DO I MAKE IT CLEAR + WONDERFUL CRIED THE COLONEL + WONDERFUL + YOU MIGHT HAVE BEEN THERE + QUOTE MY FINAL SHOT WAS I CONFESS A VERY LONG ONE + IT STRUCK ME THAT SO ASTUTE A MAN AS STRAKER WOULD NOT UNDERTAKE THIS DELICATE TENDON NICKING WITHOUT A LITTLE PRACTISE + WHAT COULD HE PRACTISE ON + MY EYES FELL UPON THE SHEEP AND I ASKED A QUESTION WHICH RATHER TO MY SURPRISE SHOWED THAT MY SURMISE WAS CORRECT + WHEN I RETURNED TO LONDON I CALLED UPON THE MILLINER WHO HAD RECOGNIZED STRAKER AS AN EXCELLENT CUSTOMER OF THE NAME OF DERBYSHIRE WHO HAD A VERY DASHING WIFE WITH A STRONG PARTIALITY FOR EXPENSIVE DRESSES + I HAVE NO DOUBT THAT THIS WOMAN HAD PLUNGED HIM OVER HEAD AND EARS IN DEBT AND SO LED HIM INTO THIS MISERABLE PLOT + YOU HAVE EXPLAINED ALL BUT ONE THING CRIED THE COLONEL + WHERE WAS THE HORSE + AH IT BOLTED AND WAS CARED FOR BY ONE OF YOUR NEIGHBOURS + WE MUST HAVE AN AMNESTY IN THAT DIRECTION I THINK + THIS IS CLAPHAM JUNCTION IF I AM NOT MISTAKEN AND WE SHALL BE IN VICTORIA IN LESS THAN TEN MINUTES + IF YOU CARE TO SMOKE A CIGAR IN OUR ROOMS COLONEL + I SHALL BE HAPPY TO GIVE YOU ANY OTHER DETAILS WHICH MIGHT INTEREST YOU QUOTE diff --git a/samples/LMTutorial/train/six_napoleons.txt b/samples/LMTutorial/train/six_napoleons.txt new file mode 100755 index 0000000..89b47e3 --- /dev/null +++ b/samples/LMTutorial/train/six_napoleons.txt @@ -0,0 +1,520 @@ + IT WAS NO VERY UNUSUAL THING FOR MR. LESTRADE OF SCOTLAND YARD TO LOOK IN UPON US OF AN EVENING AND HIS VISITS WERE WELCOME TO SHERLOCK HOLMES FOR THEY ENABLED HIM TO KEEP IN TOUCH WITH ALL THAT WAS GOING ON AT THE POLICE HEADQUARTERS + IN RETURN FOR THE NEWS WHICH LESTRDE WOULD BRING HOLMES WAS ALWAYS READY TO LISTEN WITH ATTENTION TO THE DETAILS OF ANY CASE UPON WHICH THE DETECTIVE WAS ENGAGED AND WAS ABLE OCCASIONALLY WITHOUT ANY ACTIVE INTERFERENCE TO GIVE SOME HINT OR SUGGESTION DRAWN FROM HIS OWN VAST KNOWLEDGE AND EXPERIENCE + ON THIS PARTICULAR EVENING LESTRADE HAD SPOKEN OF THE WEATHER AND THE NEWSPAPERS + THEN HE HAD FALLEN SILENT PUFFING THOUGHTFULLY AT HIS CIGAR + HOLMES LOOKED KEENLY AT HIM + QUOTE ANYTHING REMARKABLE ON HAND QUOTE HE ASKED + OH NO MR. HOLMES NOTHING VERY PARTICULAR + THEN TELL ME ABOUT IT + LESTRADE LAUGHED + WELL MR. HOLMES THERE IS NO USE DENYING THAT THERE IS SOMETHING ON MY MIND + AND YET IT IS SUCH AN ABSURD BUSINESS THAT I HESITATED TO BOTHER YOU ABOUT IT + ON THE OTHER HAND ALTHOUGH IT IS TRIVIAL IT IS UNDOUBTEDLY QUEER AND I KNOW THAT YOU HAVE A TASTE FOR ALL THAT IS OUT OF THE COMMON + BUT IN MY OPINION IT COMES MORE IN DOCTOR WATSON'S LINE THAN OURS + DISEASE SAID I + QUOTE MADNESS ANYHOW + AND A QUEER MADNESS TOO + YOU WOULDN'T THINK THERE WAS ANYONE LIVING AT THIS TIME OF DAY WHO HAD SUCH A HATRED OF NAPOLEON THE FIRST THAT HE WOULD BREAK ANY IMAGE OF HIM THAT HE COULD SEE + HOLMES SANK BACK IN HIS CHAIR + THAT'S NO BUSINESS OF MINE SAID HE + EXACTLY + THAT'S WHAT I SAID + BUT THEN WHEN THE MAN COMMITS BURGLARY IN ORDER TO BREAK IMAGES WHICH ARE NOT HIS OWN THAT BRINGS IT AWAY FROM THE DOCTOR AND ON TO THE POLICEMAN + HOLMES SAT UP AGAIN + BURGLARY + THIS IS MORE INTERESTING + LET ME HEAR THE DETAILS QUOTE + LESTRADE TOOK OUT HIS OFFICIAL NOTEBOOK AND REFRESHED HIS MEMORY FROM ITS PAGES + THE FIRST CASE REPORTED WAS FOUR DAYS AGO SAID HE + IT WAS AT THE SHOP OF MORSE HUDSON WHO HAS A PLACE FOR THE SALE OF PICTURES AND STATUES IN THE KENNINGTON ROAD + THE ASSISTANT HAD LEFT THE FRONT SHOP FOR AN INSTANT WHEN HE HEARD A CRASH AND HURRYING IN HE FOUND A PLASTER BUST OF NAPOLEON WHICH STOOD WITH SEVERAL OTHER WORKS OF ART UPON THE COUNTER LYING SHIVERED INTO FRAGMENTS + HE RUSHED OUT INTO THE ROAD BUT ALTHOUGH SEVERAL PASSERS BY DECLARED THAT THEY HAD NOTICED A MAN RUN OUT OF THE SHOP HE COULD NEITHER SEE ANYONE NOR COULD HE FIND ANY MEANS OF IDENTIFYING THE RASCAL + IT SEEMED TO BE ONE OF THOSE SENSELESS ACTS OF HOOLIGANISM WHICH OCCUR FROM TIME TO TIME AND IT WAS REPORTED TO THE CONSTABLE ON THE BEAT AS SUCH + THE PLASTER CAST WAS NOT WORTH MORE THAN A FEW SHILLINGS AND THE WHOLE AFFAIR APPEARED TO BE TOO CHILDISH FOR ANY PARTICULAR INVESTIGATION + THE SECOND CASE HOWEVER WAS MORE SERIOUS AND ALSO MORE SINGULAR + IT OCCURRED ONLY LAST NIGHT + IN KENNINGTON ROAD AND WITHIN A FEW HUNDRED YARDS OF MORSE HUDSON'S SHOP THERE LIVES A WELL KNOWN MEDICAL PRACTITIONER NAMED DOCTOR BARNICOT WHO HAS ONE OF THE LARGEST PRACTICES UPON THE SOUTH SIDE OF THE THAMES + HIS RESIDENCE AND PRINCIPAL CONSULTING ROOM IS AT KENNINGTON ROAD BUT HE HAS A BRANCH SURGERY AND DISPENSARY AT LOWER BRIXTON ROAD TWO MILES AWAY + THIS DOCTOR BARNICOT IS AN ENTHUSIASTIC ADMIRER OF NAPOLEON AND HIS HOUSE IS FULL OF BOOKS PICTURES AND RELICS OF THE FRENCH EMPEROR + SOME LITTLE TIME AGO HE PURCHASED FROM MORSE HUDSON TWO DUPLICATE PLASTER CASTS OF THE FAMOUS HEAD OF NAPOLEON BY THE FRENCH SCULPTOR DEVINE + ONE OF THESE HE PLACED IN HIS HALL IN THE HOUSE AT KENNINGTON ROAD AND THE OTHER ON THE MANTELPIECE OF THE SURGERY AT LOWER BRIXTON + WELL WHEN DOCTOR BARNICOT CAME DOWN THIS MORNING HE WAS ASTONISHED TO FIND THAT HIS HOUSE HAD BEEN BURGLED DURING THE NIGHT BUT THAT NOTHING HAD BEEN TAKEN SAVE THE PLASTER HEAD FROM THE HALL + IT HAD BEEN CARRIED OUT AND HAD BEEN DASHED SAVAGELY AGAINST THE GARDEN WALL UNDER WHICH ITS SPLINTERED FRAGMENTS WERE DISCOVERED + HOLMES RUBBED HIS HANDS + QUOTE THIS IS CERTAINLY VERY NOVEL QUOTE SAID HE + I THOUGHT IT WOULD PLEASE YOU + BUT I HAVE NOT GOT TO THE END YET + DOCTOR BARNICOT WAS DUE AT HIS SURGERY AT TWELVE O'CLOCK AND YOU CAN IMAGINE HIS AMAZEMENT WHEN ON ARRIVING THERE HE FOUND THAT THE WINDOW HAD BEEN OPENED IN THE NIGHT AND THAT THE BROKEN PIECES OF HIS SECOND BUST WERE STREWN ALL OVER THE ROOM + IT HAD BEEN SMASHED TO ATOMS WHERE IT STOOD + IN NEITHER CASE WERE THERE ANY SIGNS WHICH COULD GIVE US A CLUE AS TO THE CRIMINAL OR LUNATIC WHO HAD DONE THE MISCHIEF + NOW MR. HOLMES YOU HAVE GOT THE FACTS + THEY ARE SINGULAR NOT TO SAY GROTESQUE SAID HOLMES + MAY I ASK WHETHER THE TWO BUSTS SMASHED IN DOCTOR BARNICOT'S ROOMS WERE THE EXACT DUPLICATES OF THE ONE WHICH WAS DESTROYED IN MORSE HUDSON'S SHOP + THEY WERE TAKEN FROM THE SAME MOULD + QUOTE SUCH A FACT MUST TELL AGAINST THE THEORY THAT THE MAN WHO BREAKS THEM IS INFLUENCED BY ANY GENERAL HATRED OF NAPOLEON + CONSIDERING HOW MANY HUNDREDS OF STATUES OF THE GREAT EMPEROR MUST EXIST IN LONDON IT IS TOO MUCH TO SUPPOSE SUCH A COINCIDENCE AS THAT A PROMISCUOUS ICONOCLAST SHOULD CHANCE TO BEGIN UPON THREE SPECIMENS OF THE SAME BUST + WELL I THOUGHT AS YOU DO SAID LESTRADE + ON THE OTHER HAND THIS MORSE HUDSON IS THE PURVEYOR OF BUSTS IN THAT PART OF LONDON AND THESE THREE WERE THE ONLY ONES WHICH HAD BEEN IN HIS SHOP FOR YEARS + SO ALTHOUGH AS YOU SAY THERE ARE MANY HUNDREDS OF STATUES IN LONDON IT IS VERY PROBABLE THAT THESE THREE WERE THE ONLY ONES IN THAT DISTRICT + THEREFORE A LOCAL FANATIC WOULD BEGIN WITH THEM + WHAT DO YOU THINK DOCTOR WATSON + THERE ARE NO LIMITS TO THE POSSIBILITIES OF MONOMANIA I ANSWERED + QUOTE THERE IS THE CONDITION WHICH THE MODERN FRENCH PSYCHOLOGISTS HAVE CALLED THE IDEE FIXE WHICH MAY BE TRIFLING IN CHARACTER AND ACCOMPANIED BY COMPLETE SANITY IN EVERY OTHER WAY + A MAN WHO HAD READ DEEPLY ABOUT NAPOLEON OR WHO HAD POSSIBLY RECEIVED SOME HEREDITARY FAMILY INJURY THROUGH THE GREAT WAR MIGHT CONCEIVABLY FORM SUCH AN IDEE FIXE AND UNDER ITS INFLUENCE BE CAPABLE OF ANY FANTASTIC OUTRAGE + THAT WON'T DO MY DEAR WATSON SAID HOLMES SHAKING HIS HEAD FOR NO AMOUNT OF IDEE FIXE WOULD ENABLE YOUR INTERESTING MONOMANIAC TO FIND OUT WHERE THESE BUSTS WERE SITUATED + WELL HOW DO YOU EXPLAIN IT + I DON'T ATTEMPT TO DO SO + I WOULD ONLY OBSERVE THAT THERE IS A CERTAIN METHOD IN THE GENTLEMAN'S ECCENTRIC PROCEEDINGS + FOR EXAMPLE IN DOCTOR BARNICOT'S HALL WHERE A SOUND MIGHT AROUSE THE FAMILY THE BUST WAS TAKEN OUTSIDE BEFORE BEING BROKEN WHEREAS IN THE SURGERY WHERE THERE WAS LESS DANGER OF AN ALARM IT WAS SMASHED WHERE IT STOOD + THE AFFAIR SEEMS ABSURDLY TRIFLING AND YET I DARE CALL NOTHING TRIVIAL WHEN I REFLECT THAT SOME OF MY MOST CLASSIC CASES HAVE HAD THE LEAST PROMISING COMMENCEMENT + YOU WILL REMEMBER WATSON HOW THE DREADFUL BUSINESS OF THE ABERNETTY FAMILY WAS FIRST BROUGHT TO MY NOTICE BY THE DEPTH WHICH THE PARSLEY HAD SUNK INTO THE BUTTER UPON A HOT DAY + I CAN'T AFFORD THEREFORE TO SMILE AT YOUR THREE BROKEN BUSTS LESTRADE AND I SHALL BE VERY MUCH OBLIGED TO YOU IF YOU WILL LET ME HEAR OF ANY FRESH DEVELOPMENT OF SO SINGULAR A CHAIN OF EVENTS + THE DEVELOPMENT FOR WHICH MY FRIEND HAD ASKED CAME IN A QUICKER AND AN INFINITELY MORE TRAGIC FORM THAN HE COULD HAVE IMAGINED + I WAS STILL DRESSING IN MY BEDROOM NEXT MORNING WHEN THERE WAS A TAP AT THE DOOR AND HOLMES ENTERED A TELEGRAM IN HIS HAND + HE READ IT ALOUD QUOTE COME INSTANTLY ONE HUNDRED THIRTY ONE PITT STREET KENSINGTON + LESTRADE + WHAT IS IT THEN + I ASKED + DON'T KNOW MAY BE ANYTHING + BUT I SUSPECT IT IS THE SEQUEL OF THE STORY OF THE STATUES + IN THAT CASE OUR FRIEND THE IMAGEBREAKER HAS BEGUN OPERATIONS IN ANOTHER QUARTER OF LONDON + THERE'S COFFEE ON THE TABLE WATSON AND I HAVE A CAB AT THE DOOR + IN HALF AN HOUR WE HAD REACHED PITT STREET A QUIET LITTLE BACKWATER JUST BESIDE ONE OF THE BRISKEST CURRENTS OF LONDON LIFE + NUMBER ONE HUNDRED THIRTY ONE WAS ONE OF A ROW ALL FLAT CHESTED RESPECTABLE AND MOST UNROMANTIC DWELLINGS + AS WE DROVE UP WE FOUND THE RAILINGS IN FRONT OF THE HOUSE LINED BY A CURIOUS CROWD + HOLMES WHISTLED + BY GEORGE IT'S ATTEMPTED MURDER AT THE LEAST + NOTHING LESS WILL HOLD THE LONDON MESSAGE BOY + THERE'S A DEED OF VIOLENCE INDICATED IN THAT FELLOW'S ROUND SHOULDERS AND OUTSTRETCHED NECK + WHAT'S THIS WATSON + THE TOP STEPS SWILLED DOWN AND THE OTHER ONES DRY + FOOTSTEPS ENOUGH ANYHOW + WELL WELL THERE'S LESTRADE AT THE FRONT WINDOW AND WE SHALL SOON KNOW ALL ABOUT IT QUOTE + THE OFFICIAL RECEIVED US WITH A VERY GRAVE FACE AND SHOWED US INTO A SITTING ROOM WHERE AN EXCEEDINGLY UNKEMPT AND AGITATED ELDERLY MAN CLAD IN A FLANNEL DRESSING GOWN WAS PACING UP AND DOWN + HE WAS INTRODUCED TO US AS THE OWNER OF THE HOUSE MR. HORACE HARKER OF THE CENTRAL PRESS SYNDICATE + IT'S THE NAPOLEON BUST BUSINESS AGAIN SAID LESTRADE + YOU SEEMED INTERESTED LAST NIGHT MR. HOLMES SO I THOUGHT PERHAPS YOU WOULD BE GLAD TO BE PRESENT NOW THAT THE AFFAIR HAS TAKEN A VERY MUCH GRAVER TURN + WHAT HAS IT TURNED TO THEN + TO MURDER + MR. HARKER WILL YOU TELL THESE GENTLEMEN EXACTLY WHAT HAS OCCURRED + THE MAN IN THE DRESSING GOWN TURNED UPON US WITH A MOST MELANCHOLY FACE + QUOTE IT'S AN EXTRAORDINARY THING QUOTE SAID HE QUOTE THAT ALL MY LIFE I HAVE BEEN COLLECTING OTHER PEOPLE'S NEWS AND NOW THAT A REAL PIECE OF NEWS HAS COME MY OWN WAY I AM SO CONFUSED AND BOTHERED THAT I CAN'T PUT TWO WORDS TOGETHER + IF I HAD COME IN HERE AS A JOURNALIST I SHOULD HAVE INTERVIEWED MYSELF AND HAD TWO COLUMNS IN EVERY EVENING PAPER + AS IT IS I AM GIVING AWAY VALUABLE COPY BY TELLING MY STORY OVER AND OVER TO A STRING OF DIFFERENT PEOPLE AND I CAN MAKE NO USE OF IT MYSELF + HOWEVER I'VE HEARD YOUR NAME MR. SHERLOCK HOLMES AND IF YOU'LL ONLY EXPLAIN THIS QUEER BUSINESS I SHALL BE PAID FOR MY TROUBLE IN TELLING YOU THE STORY + HOLMES SAT DOWN AND LISTENED + IT ALL SEEMS TO CENTRE ROUND THAT BUST OF NAPOLEON WHICH I BOUGHT FOR THIS VERY ROOM ABOUT FOUR MONTHS AGO + I PICKED IT UP CHEAP FROM HARDING BROTHERS TWO DOORS FROM THE HIGH STREET STATION + A GREAT DEAL OF MY JOURNALISTIC WORK IS DONE AT NIGHT AND I OFTEN WRITE UNTIL THE EARLY MORNING + SO IT WAS TO DAY + I WAS SITTING IN MY DEN WHICH IS AT THE BACK OF THE TOP OF THE HOUSE ABOUT THREE O'CLOCK WHEN I WAS CONVINCED THAT L. HEARD SOME SOUNDS DOWNSTAIRS + I LISTENED BUT THEY WERE NOT REPEATED AND I CONCLUDED THAT THEY CAME FROM OUTSIDE + THEN SUDDENLY ABOUT FIVE MINUTES LATER THERE CAME A MOST HORRIBLE YELL THE MOST DREADFUL SOUND MR. HOLMES THAT EVER I HEARD + IT WILL RING IN MY EARS AS LONG AS I LIVE + I SAT FROZEN WITH HORROR FOR A MINUTE OR TWO + THEN I SEIZED THE POKER AND WENT DOWNSTAIRS + WHEN I ENTERED THIS ROOM I FOUND THE WINDOW WIDE OPEN AND I AT ONCE OBSERVED THAT THE BUST WAS GONE FROM THE MANTELPIECE + WHY ANY BURGLAR SHOULD TAKE SUCH A THING PASSES MY UNDERSTANDING FOR IT WAS ONLY A PLASTER CAST AND OF NO REAL VALUE WHATEVER + YOU CAN SEE FOR YOURSELF THAT ANYONE GOING OUT THROUGH THAT OPEN WINDOW COULD REACH THE FRONT DOORSTEP BY TAKING A LONG STRIDE + THIS WAS CLEARLY WHAT THE BURGLAR HAD DONE SO I WENT ROUND AND OPENED THE DOOR + STEPPING OUT INTO THE DARK I NEARLY FELL OVER A DEAD MAN WHO WAS LYING THERE + I RAN BACK FOR A LIGHT AND THERE WAS THE POOR FELLOW A GREAT GASH IN HIS THROAT AND THE WHOLE PLACE SWIMMING IN BLOOD + HE LAY ON HIS BACK HIS KNEES DRAWN UP AND HIS MOUTH HORRIBLY OPEN + I SHALL SEE HIM IN MY DREAMS + I HAD JUST TIME TO BLOW ON MY POLICE WHISTLE AND THEN I MUST HAVE FAINTED FOR I KNEW NOTHING MORE UNTIL I FOUND THE POLICEMAN STANDING OVER ME IN THE HALL + WELL WHO WAS THE MURDERED MAN ASKED HOLMES + QUOTE THERE'S NOTHING TO SHOW WHO HE WAS QUOTE SAID LESTRADE + YOU SHALL SEE THE BODY AT THE MORTUARY BUT WE HAVE MADE NOTHING OF IT UP TO NOW + HE IS A TALL MAN SUNBURNED VERY POWERFUL NOT MORE THAN THIRTY + HE IS POORLY DRESSED AND YET DOES NOT APPEAR TO BE A LABOURER + A HORN HANDLED CLASP KNIFE WAS LYING IN A POOL OF BLOOD BESIDE HIM + WHETHER IT WAS THE WEAPON WHICH DID THE DEED OR WHETHER IT BELONGED TO THE DEAD MAN I DO NOT KNOW + THERE WAS NO NAME ON HIS CLOTHING AND NOTHING IN HIS POCKETS SAVE AN APPLE SOME STRING A SHILLING MAP OF LONDON AND A PHOTOGRAPH + HERE IT IS + IT WAS EVIDENTLY TAKEN BY A SNAPSHOT FROM A SMALL CAMERA + IT REPRESENTED AN ALERT SHARP FEATURED SIMIAN MAN. WITH THICK EYEBROWS AND A VERY PECULIAR PROJECTION OF THE LOWER PART OF THE FACE LIKE THE MUZZLE OF A BABOON + AND WHAT BECAME OF THE BUST ASKED HOLMES AFTER A CAREFUL STUDY OF THIS PICTURE + WE HAD NEWS OF IT JUST BEFORE YOU CAME + IT HAS BEEN FOUND IN THE FRONT GARDEN OF AN EMPTY HOUSE IN CAMPDEN HOUSE ROAD + IT WAS BROKEN INTO FRAGMENTS + I AM GOING ROUND NOW TO SEE IT + WILL YOU COME + QUOTE CERTAINLY + I MUST JUST TAKE ONE LOOK ROUND + HE EXAMINED THE CARPET AND THE WINDOW + THE FELLOW HAD EITHER VERY LONG LEGS OR WAS A MOST ACTIVE MAN SAID HE + WITH AN AREA BENEATH IT WAS NO MEAN FEAT TO REACH THAT WINDOW LEDGE AND OPEN THAT WINDOW + GETTING BACK WAS COMPARATIVELY SIMPLE + ARE YOU COMING WITH US TO SEE THE REMAINS OF YOUR BUST MR. HARKER + THE DISCONSOLATE JOURNALIST HAD SEATED HIMSELF AT A WRITING TABLE + I MUST TRY AND MAKE SOMETHING OF IT SAID HE THOUGH I HAVE NO DOUBT THAT THE FIRST EDITIONS OF THE EVENING PAPERS ARE OUT ALREADY WITH FULL DETAILS + IT'S LIKE MY LUCK + YOU REMEMBER WHEN THE STAND FELL AT DONCASTER + WELL I WAS THE ONLY JOURNALIST IN THE STAND AND MY JOURNAL THE ONLY ONE THAT HAD NO ACCOUNT OF IT FOR I WAS TOO SHAKEN TO WRITE IT + AND NOW I'LL BE TOO LATE WITH A MURDER DONE ON MY OWN DOORSTEP QUOTE + AS WE LEFT THE ROOM WE HEARD HIS PEN TRAVELLING SHRILLY OVER THE FOOLSCAP + THE SPOT WHERE THE FRAGMENTS OF THE BUST HAD BEEN FOUND WAS ONLY A FEW HUNDRED YARDS AWAY + FOR THE FIRST TIME OUR EYES RESTED UPON THIS PRESENTMENT OF THE GREAT EMPEROR WHICH SEEMED TO RAISE SUCH FRANTIC AND DESTRUCTIVE HATRED IN THE MIND OF THE UNKNOWN + IT LAY SCATTERED IN SPLINTERED SHARDS UPON THE GRASS + HOLMES PICKED UP SEVERAL OF THEM AND EXAMINED THEM CAREFULLY + I WAS CONVINCED FROM HIS INTENT FACE AND HIS PURPOSEFUL MANNER THAT AT LAST HE WAS UPON A CLUE + WELL ASKED LESTRADE + HOLMES SHRUGGED HIS SHOULDERS + WE HAVE A LONG WAY TO GO YET SAID HE + AND YET AND YET WELL WE HAVE SOME SUGGESTIVE FACTS TO ACT UPON + THE POSSESSION OF THIS TRIFLING BUST WAS WORTH MORE IN THE EYES OF THIS STRANGE CRIMINAL THAN A HUMAN LIFE + THAT IS ONE POINT + THEN THERE IS THE SINGULAR FACT THAT HE DID NOT BREAK IT IN THE HOUSE OR IMMEDIATELY OUTSIDE THE HOUSE IF TO BREAK IT WAS HIS SOLE OBJECT + HE WAS RATTLED AND BUSTLED BY MEETING THIS OTHER FELLOW + HE HARDLY KNEW WHAT HE WAS DOING QUOTE + WELL THAT'S LIKELY ENOUGH + BUT I WISH TO CALL YOUR ATTENTION VERY PARTICULARLY TO THE POSITION OF THIS HOUSE IN THE GARDEN OF WHICH THE BUST WAS DESTROYED + LESTRADE LOOKED ABOUT HIM + IT WAS AN EMPTY HOUSE AND SO HE KNEW THAT HE WOULD NOT BE DISTURBED IN THE GARDEN + YES BUT THERE IS ANOTHER EMPTY HOUSE FARTHER UP THE STREET WHICH HE MUST HAVE PASSED BEFORE HE CAME TO THIS ONE + WHY DID HE NOT BREAK IT THERE SINCE IT IS EVIDENT THAT EVERY YARD THAT HE CARRIED IT INCREASED THE RISK OF SOMEONE MEETING HIM + QUOTE I GIVE IT UP QUOTE SAID LESTRADE + HOLMES POINTED TO THE STREET LAMP ABOVE OUR HEADS + HE COULD SEE WHAT HE WAS DOING HERE AND HE COULD NOT THERE + THAT WAS HIS REASON + BY JOVE THAT'S TRUE SAID THE DETECTIVE + NOW THAT I COME TO THINK OF IT DOCTOR BARNICOT'S BUST WAS BROKEN NOT FAR FROM HIS RED LAMP + WELL MR. HOLMES WHAT ARE WE TO DO WITH THAT FACT + QUOTE TO REMEMBER IT TO DOCKET IT + WE MAY COME ON SOMETHING LATER WHICH WILL BEAR UPON IT + WHAT STEPS DO YOU PROPOSE TO TAKE NOW LESTRADE + THE MOST PRACTICAL WAY OF GETTING AT IT IN MY OPINION IS TO IDENTIFY THE DEAD MAN + THERE SHOULD BE NO DIFFICULTY ABOUT THAT + WHEN WE HAVE FOUND WHO HE IS AND WHO HIS ASSOCIATES ARE WE SHOULD HAVE A GOOD START IN LEARNING WHAT HE WAS DOING IN PITT STREET LAST NIGHT AND WHO IT WAS WHO MET HIM AND KILLED HIM ON THE DOORSTEP OF MR. HORACE HARKER + DON'T YOU THINK SO + NO DOUBT AND YET IT IS NOT QUITE THE WAY IN WHICH I SHOULD APPROACH THE CASE + WHAT WOULD YOU DO THEN + QUOTE OH YOU MUST NOT LET ME INFLUENCE YOU IN ANY WAY + I SUGGEST THAT YOU GO ON YOUR LINE AND I ON MINE + WE CAN COMPARE NOTES AFTERWARDS AND EACH WILL SUPPLEMENT THE OTHER + VERY GOOD SAID LESTRADE + IF YOU ARE GOING BACK TO PITT STREET YOU MIGHT SEE MR. HORACE HARKER + TELL HIM FOR ME THAT I HAVE QUITE MADE UP MY MIND AND THAT IT IS CERTAIN THAT A DANGEROUS HOMICIDAL LUNATIC WITH NAPOLEONIC DELUSIONS WAS IN HIS HOUSE LAST NIGHT + IT WILL BE USEFUL FOR HIS ARTICLE + LESTRADE STARED + YOU DON'T SERIOUSLY BELIEVE THAT + HOLMES SMILED + QUOTE DON'T I WELL PERHAPS I DON'T + BUT I AM SURE THAT IT WILL INTEREST MR. HORACE HARKER AND THE SUBSCRIBERS OF THE CENTRAL PRESS SYNDICATE + NOW WATSON I THINK THAT WE SHALL FIND THAT WE HAVE A LONG AND RATHER COMPLEX DAY'S WORK BEFORE US + I SHOULD BE GLAD LESTRADE IF YOU COULD MAKE IT CONVENIENT TO MEET US AT BAKER STREET AT SIX O'CLOCK THIS EVENING + UNTIL THEN I SHOULD LIKE TO KEEP THIS PHOTOGRAPH FOUND IN THE DEAD MAN'S POCKET + IT IS POSSIBLE THAT I MAY HAVE TO ASK YOUR COMPANY AND ASSISTANCE UPON A SMALL EXPEDITION WHICH WILL HAVE TO BE UNDERTAKEN TONIGHT IF MY CHAIN OF REASONING SHOULD PROVE TO BE CORRECT + UNTIL THEN GOOD BYE AND GOOD LUCK + SHERLOCK HOLMES AND I WALKED TOGETHER TO THE HIGH STREET WHERE WE STOPPED AT THE SHOP OF HARDING BROTHERS WHENCE THE BUST HAD BEEN PURCHASED + A YOUNG ASSISTANT INFORMED US THAT MR. HARDING WOULD BE ABSENT UNTIL AFTERNOON AND THAT HE WAS HIMSELF A NEWCOMER WHO COULD GIVE US NO INFORMATION + HOLMES'S FACE SHOWED HIS DISAPPOINTMENT AND ANNOYANCE + WELL WELL WE CAN'T EXPECT TO HAVE IT ALL OUR OWN WAY WATSON HE SAID AT LAST + WE MUST COME BACK IN THE AFTERNOON IF MR. HARDING WILL NOT BE HERE UNTIL THEN + I AM AS YOU HAVE NO DOUBT SURMISED ENDEAVOURING TO TRACE THESE BUSTS TO THEIR SOURCE IN ORDER TO FIND IF THERE IS NOT SOMETHING PECULIAR WHICH MAY ACCOUNT FOR THEIR REMARKABLE FATE + LET US MAKE FOR MR. MORSE HUDSON OF THE KENNINGTON ROAD AND SEE IF HE CAN THROW ANY LIGHT UPON THE PROBLEM + A DRIVE OF AN HOUR BROUGHT US TO THE PICTURE DEALER'S ESTABLISHMENT + HE WAS A SMALL STOUT MAN WITH A RED FACE AND A PEPPERY MANNER + YES SIR + ON MY VERY COUNTER SIR QUOTE SAID HE + WHAT WE PAY RATES AND TAXES FOR I DON'T KNOW WHEN ANY RUFFIAN CAN COME IN AND BREAK ONE'S GOODS + YES SIR IT WAS I WHO SOLD DOCTOR BARNICOT HIS TWO STATUES + DISGRACEFUL SIR + A NIHILIST PLOT THAT'S WHAT I MAKE IT + NO ONE BUT AN ANARCHIST WOULD GO ABOUT BREAKING STATUES + RED REPUBLICANS THAT'S WHAT I CALL 'EM + WHO DID I GET THE STATUES FROM + I DON'T SEE WHAT THAT HAS TO DO WITH IT + WELLL IF YOU REALLY WANT TO KNOW I GOT THEM FROM GELDER AND COMPANY IN CHURCH STREET STEPNEY + THEY ARE A WELL KNOWN HOUSE IN THE TRADE AND HAVE BEEN THIS TWENTY YEARS + HOW MANY HAD L. + THREE TWO AND ONE ARE THREE TWO OF DOCTOR BARNICOT'S AND ONE SMASHED IN BROAD DAYLIGHT ON MY OWN COUNTER + DO I KNOW THAT PHOTOGRAPH + NO I DON'T + YES I DO THOUGH + WHY IT'S BEPPO + HE WAS A KIND OF ITALIAN PIECE WORK MAN WHO MADE HIMSELF USEFUL IN THE SHOP + HE COULD CARVE A BIT AND GILD AND FRAME AND DO ODD JOBS + THE FELLOW LEFT ME LAST WEEK AND I'VE HEARD NOTHING OF HIM SINCE + NO I DON'T KNOW WHERE HE CAME FROM NOR WHERE HE WENT TO + I HAD NOTHING AGAINST HIM WHILE HE WAS HERE + HE WAS GONE TWO DAYS BEFORE THE BUST WAS SMASHED + WELL THAT'S ALL WE COULD REASONABLY EXPECT FROM MORSE HUDSON SAID HOLMES AS WE EMERGED FROM THE SHOP + WE HAVE THIS BEPPO AS A COMMON FACTOR BOTH IN KENNINGTON AND IN KENSINGTON SO THAT IS WORTH A TEN MILE DRIVE + NOW WATSON LET US MAKE FOR GELDER AND COMPANY OF STEPNEY THE SOURCE AND ORIGIN OF THE BUSTS + I SHALL BE SURPRISED IF WE DON'T GET SOME HELP DOWN THERE + IN RAPID SUCCESSION WE PASSED THROUGH THE FRINGE OF FASHIONABLE LONDON HOTEL LONDON THEATRICAL LONDON LITERARY LONDON COMMERCIAL LONDON AND FINALLY MARITIME LONDON TILL WE CAME TO A RIVERSIDE CITY OF A HUNDRED THOUSAND SOULS WHERE THE TENEMENT HOUSES SWELTER AND REEK WITH THE OUTCASTS OF EUROPE + HERE IN A BROAD THOROUGHFARE ONCE THE ABODE OF WEALTHY CITY MERCHANTS WE FOUND THE SCULPTURE WORKS FOR WHICH WE SEARCHED + OUTSIDE WAS A CONSIDERABLE YARD FULL OF MONUMENTAL MASONRY + INSIDE WAS A LARGE ROOM IN WHICH FIFTY WORKERS WERE CARVING OR MOULDING + THE MANAGER A BIG BLOND GERMAN RECEIVED US CIVILLY AND GAVE A CLEAR ANSWER TO ALL HOLMES'S QUESTIONS + A REFERENCE TO HIS BOOKS SHOWED THAT HUNDREDS OF CASTS HAD BEEN TAKEN FROM A MARBLE COPY OF DEVINE'S HEAD OF NAPOLEON BUT THAT THE THREE WHICH HAD BEEN SENT TO MORSE HUDSON A YEAR OR SO BEFORE HAD BEEN HALF OF A BATCH OF SIX THE OTHER THREE BEING SENT TO HARDING BROTHERS OF KENSINGTON + THERE WAS NO REASON WHY THOSE SIX SHOULD BE DIFFERENT FROM ANY OF THE OTHER CASTS + HE COULD SUGGEST NO POSSIBLE CAUSE WHY ANYONE SHOULD WISH TO DESTROY THEM IN FACT HE LAUGHED AT THE IDEA + THEIR WHOLESALE PRICE WAS SIX SHILLINGS BUT THE RETAILER WOULD GET TWELVE OR MORE + THE CAST WAS TAKEN IN TWO MOULDS FROM EACH SIDE OF THE FACE AND THEN THESE TWO PROFILES OF PLASTER OF PARIS WERE JOINED TOGETHER TO MAKE THE COMPLETE BUST + THE WORK WAS USUALLY DONE BY ITALIANS IN THE ROOM WE WERE IN + WHEN FINISHED THE BUSTS WERE PUT ON A TABLE IN THE PASSAGE TO DRY AND AFTERWARDS STORED + THAT WAS ALL HE COULD TELL US + BUT THE PRODUCTION OF THE PHOTOGRAPH HAD A REMARKABLE EFFECT UPON THE MANAGER + HIS FACE FLUSHED WITH ANGER AND HIS BROWS KNOTTED OVER HIS BLUE TEUTONIC EYES + QUOTE AH THE RASCAL QUOTE HE CRIED + YES INDEED I KNOW HIM VERY WELL + THIS HAS ALWAYS BEEN A RESPECTABLE ESTABLISHMENT AND THE ONLY TIME THAT WE HAVE EVER HAD THE POLICE IN IT WAS OVER THIS VERY FELLOW + IT WAS MORE THAN A YEAR AGO NOW + HE KNIFED ANOTHER ITALIAN IN THE STREET AND THEN HE CAME TO THE WORKS WITH THE POLICE ON HIS HEELS AND HE WAS TAKEN HERE + BEPPO WAS HIS NAME HIS SECOND NAME I NEVER KNEW + SERVE ME RIGHT FOR ENGAGING A MAN WITH SUCH A FACE + BUT HE WAS A GOOD WORKMAN ONE OF THE BEST + WHAT DID HE GET + THE MAN LIVED AND HE GOT OFF WITH A YEAR + I HAVE NO DOUBT HE IS OUT NOW BUT HE HAS NOT DARED TO SHOW HIS NOSE HERE + WE HAVE A COUSIN OF HIS HERE AND I DARESAY HE COULD TELL YOU WHERE HE IS + QUOTE NO NO QUOTE CRIED HOLMES QUOTE NOT A WORD TO THE COUSIN NOT A WORD I BEG OF YOU + THE MATTER IS VERY IMPORTANT AND THE FARTHER I GO WITH IT THE MORE IMPORTANT IT SEEMS TO GROW + WHEN YOU REFERRED IN YOUR LEDGER TO THE SALE OF THOSE CASTS I OBSERVED THAT THE DATE WAS JUNE THIRD OF LAST YEAR + COULD YOU GIVE ME THE DATE WHEN BEPPO WAS ARRESTED + I COULD TELL YOU ROUGHLY BY THE PAY LIST THE MANAGER ANSWERED + YES HE CONTINUED AFTER SOME TURNING OVER OF PAGES HE WAS PAID LAST ON MAY TWENTIETH + THANK YOU SAID HOLMES + I DON'T THINK THAT I NEED INTRUDE UPON YOUR TIME AND PATIENCE ANY MORE + WITH A LAST WORD OF CAUTION THAT HE SHOULD SAY NOTHING AS TO OUR RESEARCHES WE TURNED OUR FACES WESTWARD ONCE MORE + THE AFTERNOON WAS FAR ADVANCED BEFORE WE WERE ABLE TO SNATCH A HASTY LUNCHEON AT A RESTAURANT + A NEWS BILL AT THE ENTRANCE ANNOUNCED QUOTE KENSINGTON OUTRAGE + MURDER BY A MADMAN AND THE CONTENTS OF THE PAPER SHOWED THAT MR. HORACE HARKER HAD GOT HIS ACCOUNT INTO PRINT AFTER ALL + TWO COLUMNS WERE OCCUPIED WITH A HIGHLY SENSATIONAL AND FLOWERY RENDERING OF THE WHOLE INCIDENT + HOLMES PROPPED IT AGAINST THE CRUET STAND AND READ IT WHILE HE ATE + ONCE OR TWICE HE CHUCKLED + THIS IS ALL RIGHT WATSON SAID HE + LISTEN TO THIS IT IS SATISFACTORY TO KNOW THAT THERE CAN BE NO DIFFERENCE OF OPINION UPON THIS CASE SINCE MR. LESTRADE ONE OF THE MOST EXPERIENCED MEMBERS OF THE OFFICIAL FORCE AND MR. SHERLOCK HOLMES THE WELL KNOWN CONSULTING EXPERT HAVE EACH COME TO THE CONCLUSION THAT THE GROTESQUE SERIES OF INCIDENTS WHICH HAVE ENDED IN SO TRAGIC A FASHION ARISE FROM LUNACY RATHER THAN FROM DELIBERATE CRIME + NO EXPLANA TION SAVE MENTAL ABERRATION CAN COVER THE FACTS + THE PRESS WATSON IS A MOST VALUABLE INSTITUTION IF YOU ONLY KNOW HOW TO USE IT + AND NOW IF YOU HAVE QUITE FINISHED WE WILL HARK BACK TO KENSINGTON AND SEE WHAT THE MANAGER OF HARDING BROTHERS HAS TO SAY ON THE MATTER + THE FOUNDER OF THAT GREAT EMPORIUM PROVED TO BE A BRISK CRISP LITTLE PERSON VERY DAPPER AND QUICK WITH A CLEAR HEAD AND A READY TONGUE + YES SIR I HAVE ALREADY READ THE ACCOUNT IN THE EVENING PAPERS + MR. HORACE HARKER IS A CUSTOMER OF OURS + WE SUPPLIED HIM WITH THE BUST SOME MONTHS AGO + WE ORDERED THREE BUSTS OF THAT SORT FROM GELDER AND COMPANY OF STEPNEY + THEY ARE ALL SOLD NOW + TO WHOM + OH I DARESAY BY CONSULTING OUR SALES BOOK WE COULD VERY EASILY TELL YOU + YES WE HAVE THE ENTRIES HERE + ONE TO MR. HARKER YOU SEE AND ONE TO MR. JOSIAH BROWN OF LABURNUM LODGE LABURNUM VALE CHISWICK AND ONE TO MR. SANDEFORD OF LOWER GROVE ROAD READING + NO I HAVE NEVER SEEN THIS FACE WHICH YOU SHOW ME IN THE PHOTOGRAPH + YOU WOULD HARDLY FORGET IT WOULD YOU SIR FOR I'VE SELDOM SEEN AN UGLIER + HAVE WE ANY ITALIANS ON THE STAFF + YES SIR WE HAVE SEVERAL AMONG OUR WORKPEOPLE AND CLEANERS + I DARESAY THEY MIGHT GET A PEEP AT THAT SALES BOOK IF THEY WANTED TO + THERE IS NO PARTICULAR REASON FOR KEEPING A WATCH UPON THAT BOOK + WELL WELL IT'S A VERY STRANGE BUSINESS AND I HOPE THAT YOU WILL LET ME KNOW IF ANYTHING COMES OF YOUR INQUIRIES QUOTE + HOLMES HAD TAKEN SEVERAL NOTES DURING MR. HARDING'S EVIDENCE AND I COULD SEE THAT HE WAS THOROUGHLY SATISFIED BY THE TURN WHICH AFFAIRS WERE TAKING + HE MADE NO REMARK HOWEVER SAVE THAT UNLESS WE HURRIED WE SHOULD BE LATE FOR OUR APPOINTMENT WITH LESTRADE + SURE ENOUGH WHEN WE REACHED BAKER STREET THE DETECTIVE WAS ALREADY THERE AND WE FOUND HIM PACING UP AND DOWN IN A FEVER OF IMPATIENCE + HIS LOOK OF IMPORTANCE SHOWED THAT HIS DAY'S WORK HAD NOT BEEN IN VAIN + WELL HE ASKED + WHAT LUCK MR. HOLMES + WE HAVE HAD A VERY BUSY DAY AND NOT ENTIRELY A WASTED ONE MY FRIEND EXPLAINED + WE HAVE SEEN BOTH THE RETAILERS AND ALSO THE WHOLESALE MANUFACTURERS + I CAN TRACE EACH OF THE BUSTS NOW FROM THE BEGINNING + QUOTE THE BUSTS QUOTE CRIED LESTRADE + WELL WELL YOU HAVE YOUR OWN METHODS MR. SHERLOCK HOLMES AND IT IS NOT FOR ME TO SAY A WORD AGAINST THEM BUT I THINK I HAVE DONE A BETTER DAY'S WORK THAN YOU + I HAVE IDENTIFIED THE DEAD MAN + YOU DON'T SAY SO + AND FOUND A CAUSE FOR THE CRIME + SPLENDID + QUOTE WE HAVE AN INSPECTOR WHO MAKES A SPECIALTY OF SAFFRON HILL AND THE ITALIAN QUARTER + WELL THIS DEAD MAN HAD SOME CATHOLIC EMBLEM ROUND HIS NECK. AND THAT ALONG WITH HIS COLOUR MADE ME THINK HE WAS FROM THE SOUTH + INSPECTOR HILL KNEW HIM THE MOMENT HE CAUGHT SIGHT OF HIM + HIS NAME IS PIETRO VENUCCI FROM NAPLES AND HE IS ONE OF THE GREATEST CUT THROATS IN LONDON + HE IS CONNECTED WITH THE MAFIA WHICH AS YOU KNOW IS A SECRET POLITICAL SOCIETY ENFORCING ITS DECREES BY MURDER + NOW YOU SEE HOW THE AFFAIR BEGINS TO CLEAR UP + THE OTHER FELLOW IS PROBABLY AN ITALIAN ALSO AND A MEMBER OF THE MAFIA + HE HAS BROKEN THE RULES IN SOME FASHION + PIETRO IS SET UPON HIS TRACK + PROBABLY THE PHOTOGRAPH WE FOUND IN HIS POCKET IS THE MAN HIMSELF SO THAT HE MAY NOT KNIFE THE WRONG PERSON + HE DOGS THE FELLOW HE SEES HIM ENTER A HOUSE HE WAITS OUTSIDE FOR HIM AND IN THE SCUFFLE HE RECEIVES HIS OWN DEATH WOUND + HOW IS THAT MR. SHERLOCK HOLMES + HOLMES CLAPPED HIS HANDS APPROVINGLY + EXCELLENT LESTRADE EXCELLENT HE CRIED + BUT I DIDN'T QUITE FOLLOW YOUR EXPLANATION OF THE DESTRUCTION OF THE BUSTS + THE BUSTS + YOU NEVER CAN GET THOSE BUSTS OUT OF YOUR HEAD + AFTER ALL THAT IS NOTHING PETTY LARCENY SIX MONTHS AT THE MOST + IT IS THE MURDER THAT WE ARE REALLY INVESTIGATING AND I TELL YOU THAT I AM GATHERING ALL THE THREADS INTO MY HANDS + QUOTE AND THE NEXT STAGE QUOTE + IS A VERY SIMPLE ONE + I SHALL GO DOWN WITH HILL TO THE ITALIAN QUARTER FIND THE MAN WHOSE PHOTOGRAPH WE HAVE GOT AND ARREST HIM ON THE CHARGE OF MURDER + WILL YOU COME WITH US + I THINK NOT + I FANCY WE CAN ATTAIN OUR END IN A SIMPLER WAY + I CAN'T SAY FOR CERTAIN BECAUSE IT ALL DEPENDS WELL IT ALL DEPENDS UPON A FACTOR WHICH IS COMPLETELY OUTSIDE OUR CONTROL + BUT I HAVE GREAT HOPES IN FACT THE BETTING IS EXACTLY TWO TO ONE THAT IF YOU WILL COME WITH US TO NIGHT I SHALL BE ABLE TO HELP YOU TO LAY HIM BY THE HEELS + IN THE ITALIAN QUARTER + QUOTE NO I FANCY CHISWICK IS AN ADDRESS WHICH IS MORE LIKELY TO FIND HIM + IF YOU WILL COME WITH ME TO CHISWICK TO NIGHT LESTRADE I'LL PROMISE TO GO TO THE ITALIAN QUARTER WITH YOU TO MORROW AND NO HARM WILL BE DONE BY THE DELAY + AND NOW I THINK THAT A FEW HOURS' SLEEP WOULD DO US ALL GOOD FOR I DO NOT PROPOSE TO LEAVE BEFORE ELEVEN O'CLOCK AND IT IS UNLIKELY THAT WE SHALL BE BACK BEFORE MORNING + YOU'LL DINE WITH US LESTRADE AND THEN YOU ARE WELCOME TO THE SOFA UNTIL IT IS TIME FOR US TO START + IN THE MEANTIME WATSON I SHOULD BE GLAD IF YOU WOULD RING FOR AN EXPRESS MESSENGER FOR I HAVE A LETTER TO SEND AND IT IS IMPONANT THAT IT SHOULD GO AT ONCE + HOLMES SPENT THE EVENING IN RUMMAGING AMONG THE FILES OF THE OLD DAILY PAPERS WITH WHICH ONE OF OUR LUMBER ROOMS WAS PACKED + WHEN AT LAST HE DESCENDED IT WAS WITH TRIUMPH IN HIS EYES BUT HE SAID NOTHING TO EITHER OF US AS TO THE RESULT OF HIS RESEARCHES + FOR MY OWN PART I HAD FOLLOWED STEP BY STEP THE METHODS BY WHICH HE HAD TRACED THE VARIOUS WINDINGS OF THIS COMPLEX CASE AND THOUGH I COULD NOT YET PERCEIVE THE GOAL WHICH WE WOULD REACH I UNDERSTOOD CLEARLY THAT HOLMES EXPECTED THIS GROTESQUE CRIMINAL TO MAKE AN ATTEMPT UPON THE TWO REMAINING BUSTS ONE OF WHICH I REMEMBERED WAS AT CHISWICK + NO DOUBT THE OBJECT OF OUR JOURNEY WAS TO CATCH HIM IN THE VERY ACT AND I COULD NOT BUT ADMIRE THE CUNNING WITH WHICH MY FRIEND HAD INSERTED A WRONG CLUE IN THE EVENING PAPER SO AS TO GIVE THE FELLOW THE IDEA THAT HE COULD CONTINUE HIS SCHEME WITH IMPUNITY + I WAS NOT SURPRISED WHEN HOLMES SUGGESTED THAT I SHOULD TAKE MY REVOLVER WITH ME + HE HAD HIMSELF PICKED UP THE LOADED HUNTING CROP WHICH WAS HIS FAVOURITE WEAPON + A FOUR WHEELER WAS AT THE DOOR AT ELEVEN AND IN IT WE DROVE TO A SPOT AT THE OTHER SIDE OF HAMMERSMITH BRIDGE + HERE THE CABMAN WAS DIRECTED TO WAIT + A SHORT WALK BROUGHT US TO A SECLUDED ROAD FRINGED WITH PLEASANT HOUSES EACH STANDING IN ITS OWN GROUNDS + IN THE LIGHT OF A STREET LAMP WE READ LABURNUM VILLA UPON THE GATE POST OF ONE OF THEM + THE OCCUPANTS HAD EVIDENTLY RETIRED TO REST FOR ALL WAS DARK SAVE FOR A FANLIGHT OVER THE HALL DOOR WHICH SHED A SINGLE BLURRED CIRCLE ON TO THE GARDEN PATH + THE WOODEN FENCE WHICH SEPARATED THE GROUNDS FROM THE ROAD THREW A DENSE BLACK SHADOW UPON THE INNER SIDE AND HERE IT WAS THAT WE CROUCHED + I FEAR THAT YOU'LL HAVE A LONG WAIT HOLMES WHISPERED + WE MAY THANK OUR STARS THAT IT IS NOT RAINING + I DON'T THINK WE CAN EVEN VENTURE TO SMOKE TO PASS THE TIME + HOWEVER IT'S A TWO TO ONE CHANCE THAT WE GET SOMETHING TO PAY US FOR OUR TROUBLE + IT PROVED HOWEVER THAT OUR VIGIL WAS NOT TO BE SO LONG AS HOLMES HAD LED US TO FEAR AND IT ENDED IN A VERY SUDDEN AND SINGULAR FASHION + IN AN INSTANT WITHOUT THE LEAST SOUND TO WARN US OF HIS COMING THE GARDEN GATE SWUNG OPEN AND A LITHE DARK FIGURE AS SWIFT AND ACTIVE AS AN APE RUSHED UP THE GARDEN PATH + WE SAW IT WHISK PAST THE LIGHT THROWN FROM OVER THE DOOR AND DISAPPEAR AGAINST THE BLACK SHADOW OF THE HOUSE + THERE WAS A LONG PAUSE DURING WHICH WE HELD OUR BREATH AND THEN A VERY GENTLE CREAKING SOUND CAME TO OUR EARS + THE WINDOW WAS BEING OPENED + THE NOISE CEASED AND AGAIN THERE WAS A LONG SILENCE + THE FELLOW WAS MAKING HIS WAY INTO THE HOUSE + WE SAW THE SUDDEN FLASH OF A DARK LANTERN INSIDE THE ROOM + WHAT HE SOUGHT WAS EVIDENTLY NOT THERE FOR AGAIN WE SAW THE FLASH THROUGH ANOTHER BLIND AND THEN THROUGH ANOTHER + QUOTE LET US GET TO THE OPEN WINDOW + WE WILL NAB HIM AS HE CLIMBS OUT + LESTRADE WHISPERED + BUT BEFORE WE COULD MOVE. THE MAN HAD EMERGED AGAIN + AS HE CAME OUT INTO THE GLIMMERING PATCH OF LIGHT WE SAW THAT HE CARRLED SOMETHING WHITE UNDER HIS ARM + HE LOOKED STEALTHILY ALL ROUND HIM + THE SILENCE OF THE DESERTED STREET REASSURED HIM + TURNING HIS BACK UPON US HE LAID DOWN HIS BURDEN AND THE NEXT INSTANT THERE WAS THE SOUND OF A SHARP TAP FOLLOWED BY A CLATTER AND RATTLE + THE MAN WAS SO INTENT UPON WHAT HE WAS DOING THAT HE NEVER HEARD OUR STEPS AS WE STOLE ACROSS THE GRASS PLOT + WITH THE BOUND OF A TIGER HOLMES WAS ON HIS BACK AND AN INSTANT LATER LESTRADE AND I HAD HIM BY EITHER WRIST AND THE HANDCUFFS HAD BEEN FASTENED + AS WE TURNED HIM OVER I SAW A HIDEOUS SALLOW FACE WITH WRITHING FURIOUS FEATURES GLARING UP AT US AND I KNEW THAT IT WAS INDEED THE MAN OF THE PHOTOGRAPH WHOM WE HAD SECURED + BUT IT WAS NOT OUR PRISONER TO WHOM HOLMES WAS GIVING HIS ATTENTION + SQUATTED ON THE DOORSTEP HE WAS ENGAGED IN MOST CAREFULLY EXAMINING THAT WHICH THE MAN HAD BROUGHT FROM THE HOUSE + IT WAS A BUST OF NAPOLEON + IIKE THE ONE WHICH WE HAD SEEN THAT MORNING AND IT HAD BEEN BROKEN INTO SIMILAR FRAGMENTS + CAREFULLY HOLMES HELD EACH SEPARATE SHARD TO THE LIGHT BUT IN NO WAY DID IT DIFFER FROM ANY OTHER SHATTERED PIECE OF PLASTER + HE HAD JUST COMPLETED HIS EXAMINATION WHEN THE HALL LIGHTS FLEW UP THE DOOR OPENED AND THE OWNER OF THE HOUSE A JOVIAL ROTUND FIGURE IN SHIRT AND TROUSERS PRESENTED HIMSELI + MR. JOSIAH BROWN I SUPPOSE SAID HOLMES + YES SIR AND YOU NO DOUBT ARE MR. SHERLOCK HOLMES + I HAD THE NOTE WHICH YOU SENT BY THE EXPRESS MESSENGER AND I DID EXACTLY WHAT YOU TOLD ME + WE LOCKED EVERY DOOR ON THE INSIDE AND AWAITED DEVELOPMENTS + WELL I'M VERY GLAD TO SEE THAT YOU HAVE GOT THE RASCAL + I HOPE GENTLEMEN THAT YOU WILL COME IN AND HAVE SOME REFRESHMENT + HOWEVER LESTRADE WAS ANXIOUS TO GET HIS MAN INTO SAFE QUARTERS SO WITHIN A FEW MINUTES OUR CAB HAD BCEN SUMMONED AND WE WERE ALL TOUR UPON OUR WAY TO LONDON + NOT A WORD WOULD OUR CAPTIVE SAY. BUT HE GLARED AT US FROM THC SHADOW OF HIS MATTED HAIR. AND ONCE. WHEN MY HAND SEEMED WITHIN HIS REACH HE SNAPPED AT IT LIKE A HUNGRY WOLF + WE STAYED LONG ENOUGH AT THE POLICE STATION TO LEARN THAT A SEARCH OF HIS CLOTHING REVEALED NOTHING SAVE A FEW SHILLINGS AND A LONG SHEATH KNIFE THE HANDLE OF WHICH BORE COPIOUS TRACES OF RECENT BLOOD + THAT'S ALL RIGHT SAID LESTRADE AS WE PARTED + QUOTE HILL KNOWS ALL THESE GENTRY AND HE WILL GIVE A NAME TO HIM + YOU'LL FIND THAT MY THEORY OF THE MAFIA WILL WORK OUT ALL RIGHT + BUT I'M SURE I AM EXCEEDINGLY OBLIGED TO YOU MR. HOLMES FOR THE WORKMANLIKE WAY IN WHICH YOU LAID HANDS UPON HIM + I DON'T QUITE UNDERSTAND IT ALL YET + I FEAR IT IS RATHER TOO LATE AN HOUR FOR EXPLANATIONS SAID HOLMES + BESIDES THERE ARE ONE OR TWO DETAILS WHICH ARE NOT FINISHED OFF AND IT IS ONE OF THOSE CASES WHICH ARE WORTH WORKING OUT TO THE VERY END + IF YOU WILL COME ROUND ONCE MORE TO MY ROOMS AT SIX O'CLOCK TO MORROW I THINK I SHALL BE ABLE TO SHOW YOU THAT EVEN NOW YOU HAVE NOT GRASPED THE ENTIRE MEANING OF THIS BUSINESS WHICH PRESENTS SOME FEATURES WHICH MAKE IT ABSOLUTELY ORIGINAL IN THE HISTORY OF CRIME + IF EVER I PERMIT YOU TO CHRONICLE ANY MORE OF MY LITTLE PROBLEMS WATSON I FORESEE THAT YOU WILL ENLIVEN YOUR PAGES BY AN ACCOUNT OF THE SINGULAR ADVENTURE OF THE NAPOLEONIC BUSTS + WHEN WE MET AGAIN NEXT EVENING LESTRADE WAS FURNISHED WITH MUCH INFORMATION CONCERNING OUR PRISONER + HIS NAME IT APPEARED WAS BEPPO SECOND NAME UNKNOWN + HE WAS A WELLKNOWN NE'ER DO WELL AMONG THE ITALIAN COLONY + HE HAD ONCE BEEN A SKILFUL SCULPTOR AND HAD EARNED AN HONEST LIVING BUT HE HAD TAKEN TO EVIL COURSES AND HAD TWICE ALREADY BEEN IN JAIL ONCE FOR A PETTY THEFT AND ONCE AS WE HAD ALREADY HEARD FOR STABBING A FELLOW COUNTRYMAN + HE COULD TALK ENGLISH PERFECTLY WELL + HIS REASONS FOR DESTROYING THE BUSTS WERE STILL UNKNOWN AND HE REFUSED TO ANSWER ANY QUESTIONS UPON THE SUBJECT BUT THE POLICE HAD DISCOVERED THAT THESE SAME BUSTS MIGHT VERY WELL HAVE BEEN MADE BY HIS OWN HANDS SINCE HE WAS ENGAGED IN THIS CLASS OF WORK AT THE ESTABLISHMENT OF GELDER AND COMPANY + TO ALL THIS INFORMATION MUCH OF WHICH WE ALREADY KNEW HOLMES LISTENED WITH POLITE ATTENTION BUT I WHO KNEW HIM SO WELL COULD CLEARLY SEE THAT HIS THOUGHTS WERE ELSEWHERE AND I DETECTED A MIXTURE OF MINGLED UNEASINESS AND EXPECTATION BENEATH THAT MASK WHICH HE WAS WONT TO ASSUME + AT LAST HE STARTED IN HIS CHAIR AND HIS EYES BRIGHTENED + THERE HAD BEEN A RING AT THE BELL + A MINUTE LATER WE HEARD STEPS UPON THE STAIRS AND AN ELDERLY RED FACED MAN WITH GRIZZLED SIDE WHISKERS WAS USHERED IN + IN HIS RIGHT HAND HE CARRIED AN OLD FASHIONED CARPET BAG WHICH HE PLACED UPON THE TABLE + IS MR. SHERLOCK HOLMES HERE + MY FRIEND BOWED AND SMILED + QUOTE MR. SANDEFORD OF READING I SUPPOSE QUOTE SAID HE + YES SIR I FEAR THAT I AM A LITTLE LATE BUT THE TRAINS WERE AWKWARD + YOU WROTE TO ME ABOUT A BUST THAT IS IN MY POSSESSION + EXACTLY + I HAVE YOUR LETTER HERE + YOU SAID I DESIRE TO POSSESS A COPY OF DEVINE'S NAPOLEON AND AM PREPARED TO PAY YOU TEN POUNDS FOR THE ONE WHICH IS IN YOUR POSSESSION + IS THAT RIGHT + QUOTE CERTAINLY QUOTE + I WAS VERY MUCH SURPRISED AT YOUR LETTER FOR I COULD NOT IMAGINE HOW YOU KNEW THAT I OWNED SUCH A THING + OF COURSE YOU MUST HAVE BEEN SURPRISED BUT THE EXPLANATION IS VERY SIMPLE + MR. HARDING OF HARDING BROTHERS SAID THAT THEY HAD SOLD YOU THEIR LAST COPY AND HE GAVE ME YOUR ADDRESS + OH THAT WAS IT WAS IT + DID HE TELL YOU WHAT I PAID FOR IT + QUOTE NO HE DID NOT QUOTE + WELL I AM AN HONEST MAN THOUGH NOT A VERY RICH ONE + I ONLY GAVE FIFTEEN SHILLINGS FOR THE BUST AND I THINK YOU OUGHT TO KNOW THAT BEFORE I TAKE TEN POUNDS FROM YOU + I AM SURE THE SCRUPLE DOES YOU HONOUR MR. SANDEFORD + BUT I HAVE NAMED THAT PRICE SO I INTEND TO STICK TO IT + WELL IT IS VERY HANDSOME OF YOU MR. HOLMES + I BROUGHT THE BUST UP WITH ME AS YOU ASKED ME TO DO + HERE IT IS QUOTE + HE OPENED HIS BAG AND AT LAST WE SAW PLACED UPON OUR TABLE A COMPLETE SPECIMEN OF THAT BUST WHICH WE HAD ALREADY SEEN MORE THAN ONCE IN FRAGMENTS + HOLMES TOOK A PAPER FROM HIS POCKET AND LAID A TEN POUND NOTE UPON THE TABLE + YOU WILL KINDLY SIGN THAT PAPER MR. SANDEFORD IN THE PRESENCE OF THESE WITNESSES + IT IS SIMPLY TO SAY THAT YOU TRANSFER EVERY POSSIBLE RIGHT THAT YOU EVER HAD IN THE BUST TO ME + I AM A METHODICAL MAN YOU SEE AND YOU NEVER KNOW WHAT TURN EVENTS MIGHT TAKE AFTERWARDS + THANK YOU MR. SANDEFORD HERE IS YOUR MONEY AND I WISH YOU A VERY GOOD EVENING + WHEN OUR VISITOR HAD DISAPPEARED SHERLOCK HOLMES'S MOVEMENTS WERE SUCH AS TO RIVET OUR ATTENTION + HE BEGAN BY TAKING A CLEAN WHITE CLOTH FROM A DRAWER AND LAYING IT OVER THE TABLE + THEN HE PLACED HIS NEWLY ACQUIRED BUST IN THE CENTRE OF THE CLOTH + FINALLY HE PICKED UP HIS HUNTING CROP AND STRUCK NAPOLEON A SHARP BLOW ON THE TOP OF THE HEAD + THE FIGURE BROKE INTO FRAGMENTS AND HOLMES BENT EAGERLY OVER THE SHATTERED REMAINS + NEXT INSTANT WITH A LOUD SHOUT OF TRIUMPH HE HELD UP ONE SPLINTER IN WHICH A ROUND DARK OBJECT WAS FIXED LIKE A PLUM IN A PUDDING + GENTLEMEN HE CRIED LET ME INTRODUCE YOU TO THE FAMOUS BLACK PEARL OF THE BORGIAS + LESTRADE AND I SAT SILENT FOR A MOMENT AND THEN WITH A SPONTANEOUS IMPULSE WE BOTH BROKE OUT CLAPPING AS AT THE WELL WROUGHT CRISIS OF A PLAY + A FLUSH OF COLOUR SPRANG TO HOLMES'S PALE CHEEKS AND HE BOWED TO US LIKE THE MASTER DRAMATIST WHO RECEIVES THE HOMAGE OF HIS AUDIENCE + IT WAS AT SUCH MOMENTS THAT FOR AN INSTANT HE CEASED TO BE A REASONING MACHINE AND BETRAYED HIS HUMAN LOVE FOR ADMIRATION AND APPLAUSE + THE SAME SINGULARLY PROUD AND RESERVED NATURE WHICH TURNED AWAY WITH DISDAIN FROM POPULAR NOTORIETY WAS CAPABLE OF BEING MOVED TO ITS DEPTHS BY SPONTANEOUS WONDER AND PRAISE FROM A FRIEND + YES GENTLEMEN SAID HE IT IS THE MOST FAMOUS PEARL NOW EXISTING IN THE WORLD AND IT HAS BEEN MY GOOD FORTUNE BY A CONNECTED CHAIN OF INDUCTIVE REASONING TO TRACE IT FROM THE PRINCE OF COLONNA'S BEDROOM AT THE DACRE HOTEL WHERE IT WAS LOST TO THE INTERIOR OF THIS THE LAST OF THE SIX BUSTS OF NAPOLEON WHICH WERE MANUFACTURED BY GELDER AND COMPANY OF STEPNEY + YOU WILL REMEMBER LESTRADE THE SENSATION CAUSED BY THE DISAPPEARANCE OF THIS VALUABLE JEWEL AND THE VAIN EFFORTS OF THE LONDON POLICE TO RECOVER IT + I WAS MYSELF CONSULTED UPON THE CASE BUT I WAS UNABLE TO THROW ANY LIGHT UPON IT + SUSPICION FELL UPON THE MAID OF THE PRINCESS WHO WAS AN ITALIAN AND IT WAS PROVED THAT SHE HAD A BROTHER IN LONDON BUT WE FAILED TO TRACE ANY CONNECTION BETWEEN THEM + THE MAID'S NAME WAS LUCRETIA VENUCCI AND THERE IS NO DOUBT IN MY MIND THAT THIS PIETRO WHO WAS MURDERED TWO NIGHTS AGO WAS THE BROTHER + I HAVE BEEN LOOKING UP THE DATES IN THE OLD FILES OF THE PAPER AND I FIND THAT THE DISAPPEARANCE OF THE PEARL WAS EXACTLY TWO DAYS BEFORE THE ARREST OF BEPPO FOR SOME CRIME OF VIOLENCE AN EVENT WHICH TOOK PLACE IN THE FACTORY OF GELDER AND COMPANY AT THE VERY MOMENT WHEN THESE BUSTS WERE BEING MADE + NOW YOU CLEARLY SEE THE SEQUENCE OF EVENTS THOUGH YOU SEE THEM OF COURSE IN THE INVERSE ORDER TO THE WAY IN WHICH THEY PRESENTED THEMSELVES TO ME + BEPPO HAD THE PEARL IN HIS POSSESSION + HE MAY HAVE STOLEN IT FROM PIETRO HE MAY HAVE BEEN PIETRO'S CONFEDERATE HE MAY HAVE BEEN THE GO BETWEEN OF PIETRO AND HIS SISTER + IT IS OF NO CONSEQUENCE TO US WHICH IS THE CORRECT SOLUTION + THE MAIN FACT IS THAT HE HAD THE PEARL AND AT THAT MOMENT WHEN IT WAS ON HIS PERSON HE WAS PURSUED BY THE POLICE + HE MADE FOR THE FACTORY IN WHICH HE WORKED AND HE KNEW THAT HE HAD ONLY A FEW MINUTES IN WHICH TO CONCEAL THIS ENORMOUSLY VALUABLE PRIZE WHICH WOULD OTHERWISE BE FOUND ON HIM WHEN HE WAS SEARCHED + SIX PLASTER CASTS OF NAPOLEON WERE DRYING IN THE PASSAGE + ONE OF THEM WAS STILL SOFT + IN AN INSTANT BEPPO A SKILFUL WORKMAN MADE A SMALL HOLE IN THE WET PLASTER DROPPED IN THE PEARL AND WITH A FEW TOUCHES COVERED OVER THE APERTURE ONCE MORE + IT WAS AN ADMIRABLE HIDING PLACE + NO ONE COULD POSSIBLY FIND IT + BUT BEPPO WAS CONDEMNED TO A YEAR'S IMPRISONMENT AND IN THE MEANWHILE HIS SIX BUSTS WERE SCATTERED OVER LONDON + HE COULD NOT TELL WHICH CONTAINED HIS TREASURE + ONLY BY BREAKING THEM COULD HE SEE + EVEN SHAKING WOULD TELL HIM NOTHING FOR AS THE PLASTER WAS WET IT WAS PROBABLE THAT THE PEARL WOULD ADHERE TO IT AS IN FACT IT HAS DONE + BEPPO DID NOT DESPAIR AND HE CONDUCTED HIS SEARCH WITH CONSIDERABLE INGENUITY AND PERSEVERANCE + THROUGH A COUSIN WHO WORKS WITH GELDER HE FOUND OUT THE RETAIL FIRMS WHO HAD BOUGHT THE BUSTS + HE MANAGED TO FIND EMPLOYMENT WITH MORSE HUDSON AND IN THAT WAY TRACKED DOWN THREE OF THEM + THE PEARL WAS NOT THERE + THEN WITH THE HELP OF SOME ITALIAN EMPLOYE HE SUCCEEDED IN FINDING OUT WHERE THE OTHER THREE BUSTS HAD GONE + THE FIRST WAS AT HARKER'S + THERE HE WAS DOGGED BY HIS CONFEDERATE WHO HELD BEPPO RESPONSIBLE FOR THE LOSS OF THE PEARL AND HE STABBED HIM IN THE SCUFFLE WHICH FOLLOWED QUOTE + IF HE WAS HIS CONFEDERATE WHY SHOULD HE CARRY HIS PHOTOGRAPH + I ASKED + AS A MEANS OF TRACING HIM IF HE WISHED TO INQUIRE ABOUT HIM FROM ANY THIRD PERSON + THAT WAS THE OBVIOUS REASON + WELL AFTER THE MURDER I CALCULATED THAT BEPPO WOULD PROBABLY HURRY RATHER THAN DELAY HIS MOVEMENTS + HE WOULD FEAR THAT THE POLICE WOULD READ HIS SECRET AND SO HE HASTENED ON BEFORE THEY SHOULD GET AHEAD OF HIM + OF COURSE I COULD NOT SAY THAT HE HAD NOT FOUND THE PEARL IN HARKER'S BUST + I HAD NOT EVEN CONCLUDED FOR CERTAIN THAT IT WAS THE PEARL BUT IT WAS EVIDENT TO ME THAT HE WAS LOOKING FOR SOMETHING SINCE HE CARRIED THE BUST PAST THE OTHER HOUSES IN ORDER TO BREAK IT IN THE GARDEN WHICH HAD A LAMP OVERLOOKING IT + SINCE HARKER'S BUST WAS ONE IN THREE THE CHANCES WERE EXACTLY AS I TOLD YOU TWO TO ONE AGAINST THE PEARL BEING INSIDE IT THERE REMAINED TWO BUSTS AND IT WAS OBVIOUS THAT HE WOULD GO FOR THE LONDON ONE FIRST + I WARNED THE INMATES OF THE HOUSE SO AS TO AVOID A SECOND TRAGEDY AND WE WENT DOWN WITH THE HAPPIEST RESULTS + BY THAT TIME OF COURSE I KNEW FOR CERTAIN THAT IT WAS THE BORGIA PEARL THAT WE WERE AFTER + THE NAME OF THE MURDERED MAN LINKED THE ONE EVENT WITH THE OTHER + THERE ONLY REMAINED A SINGLE BUST THE READING ONE AND THE PEARL MUST BE THERE + I BOUGHT IT IN YOUR PRESENCE FROM THE OWNER AND THERE IT LIES + WE SAT IN SILENCE FOR A MOMENT + WELL SAID LESTRADE I'VE SEEN YOU HANDLE A GOOD MANY CASES MR. HOLMES BUT I DON'T KNOW THAT I EVER KNEW A MORE WORKMANLIKE ONE THAN THAT + WE'RE NOT JEALOUS OF YOU AT SCOTLAND YARD + NO SIR WE ARE VERY PROUD OF YOU AND IF YOU COME DOWN TO MORROW THERE'S NOT A MAN FROM THE OLDEST INSPECTOR TO THE YOUNGEST CONSTABLE WHO WOULDN'T BE GLAD TO SHAKE YOU BY THE HAND + QUOTE THANK YOU QUOTE SAID HOLMES + THANK YOU AND AS HE TURNED AWAY IT SEEMED TO ME THAT HE WAS MORE NEARLY MOVED BY THE SOFTER HUMAN EMOTIONS THAN I HAD EVER SEEN HIM + A MOMENT LATER HE WAS THE COLD AND PRACTICAL THINKER ONCE MORE + PUT THE PEARL IN THE SAFE WATSON SAID HE AND GET OUT THE PAPERS OF THE CONK SINGLETON FORGERY CASE + GOOD BYE LESTRADE + IF ANY LITTLE PROBLEM COMES YOUR WAY I SHALL BE HAPPY IF I CAN TO GIVE YOU A HINT OR TWO AS TO ITS SOLUTION diff --git a/samples/LMTutorial/train/solitary_cyclist.txt b/samples/LMTutorial/train/solitary_cyclist.txt new file mode 100755 index 0000000..fc41e5c --- /dev/null +++ b/samples/LMTutorial/train/solitary_cyclist.txt @@ -0,0 +1,505 @@ + FROM THE YEARS ONE THOUSAND EIGHT HUNDRED NINETY FOUR TO NINETEEN OH ONE INCLUSIVE MR. SHERLOCK HOLMES WAS A VERY BUSY MAN + IT IS SAFE TO SAY THAT THERE WAS NO PUBLIC CASE OF ANY DIFFICULTY IN WHICH HE WAS NOT CONSULTED DURING THOSE EIGHT YEARS AND THERE WERE HUNDREDS OF PRIVATE CASES SOME OF THEM OF THE MOST INTRICATE AND EXTRAORDINARY CHARACTER IN WHICH HE PLAYED A PROMINENT PART + MANY STARTLING SUCCESSES AND A FEW UNAVOIDABLE FAILURES WERE THE OUTCOME OF THIS LONG PERIOD OF CONTINUOUS WORK + AS I HAVE PRESERVED VERY FULL NOTES OF ALL THESE CASES AND WAS MYSELF PERSONALLY ENGAGED IN MANY OF THEM IT MAY BE IMAGINED THAT IT IS NO EASY TASK TO KNOW WHICH I SHOULD SELECT TO LAY BEFORE THE PUBLIC + I SHALL HOWEVER PRESERVE MY FORMER RULE AND GIVE THE PREFERENCE TO THOSE CASES WHICH DERIVE THEIR INTEREST NOT SO MUCH FROM THE BRUTALITY OF THE CRIME AS FROM THE INGENUITY AND DRAMATIC QUALITY OF THE SOLUTION + FOR THIS REASON I WILL NOW LAY BEFORE THE READER THE FACTS CONNECTED WITH MISS VIOLET SMITH THE SOLITARY CYCLIST OF CHARLINGTON AND THE CURIOUS SEQUEL OF OUR INVESTIGATION WHICH CULMINATED IN UNEXPECTED TRAGEDY + IT IS TRUE THAT THE CIRCUMSTANCE DID NOT ADMIT OF ANY STRIKING ILLUSTRATION OF THOSE POWERS FOR WHICH MY FRIEND WAS FAMOUS BUT THERE WERE SOME POINTS ABOUT THE CASE WHICH MADE IT STAND OUT IN THOSE LONG RECORDS OF CRIME FROM WHICH I GATHER THE MATERIAL FOR THESE LITTLE NARRATIVES + ON REFERING TO MY NOTEBOOK FOR THE YEAR ONE THOUSAND EIGHT HUNDRED NINETY FIVE I FIND THAT IT WAS UPON SATURDAY THE TWENTY THREE D. OF APRIL THAT WE FIRST HEARD OF MISS VIOLET SMILH + HER VISIT WAS I REMEMBER EXTREMELY UNWELCOME TO HOLMES FOR HE WAS IMMERSED AT THE MOMENT IN A VERY ABSTRUSE AND COMPLICATED PROBLEM CONCERNING THE PECULIAR PERSECUTION TO WHICH JOHN VINCENT HARDEN THE WELL KNOWN TOBACCO MILLIONAIRE HAD BEEN SUBJECTED + MY FRIEND WHO LOVED ABOVE ALL THINGS PRECISION AND CONCENTRATION OF THOUGHT RESENTED ANYTHING WHICH DISTRACTED HIS ATTENTION FROM THE MATTER IN HAND + AND YET WITHOUT A HARSHNESS WHICH WAS FOREIGN TO HIS NATURE IT WAS IMPOSSIBLE TO REFUSE TO LISTEN TO THE STORY OF THE YOUNG AND BEAUTIFUL WOMAN TALL GRACEFUL AND QUEENLY WHO PRESENTED HERSELF AT BAKER STREET LATE IN THE EVENING AND IMPLORED HIS ASSISTANCE AND ADVICE + IT WAS VAIN TO URGE THAT HIS TIME WAS ALREADY FULLY OCCUPIED FOR THE YOUNG LADY HAD COME WITH THE DETERMINATION TO TELL HER STORY AND IT WAS EVIDENT THAT NOTHING SHORT OF FORCE COULD GET HER OUT OF THE ROOM UNTIL SHE HAD DONE SO + WITH A RESIGNED AIR AND A SOMEWHAT WEARY SMILE HOLMES BEGGED THE BEAUTIFUL INTRUDER TO TAKE A SEAT. AND TO INFORM US WHAT IT WAS THAT WAS TROUBLING HER + QUOTE AT LEAST IT CANNOT BE YOUR HEALTH QUOTE SAID HE AS HIS KEEN EYES DARTED OVEL HER QUOTE SO ARDENT A BICYCLIST MUST BE FULL OF ENERGY QUOTE + SHE GLANLCED DOWN IN SURPRISE AT HER OWN FEET AND I OBSERVED THE SLIGHT ROUGHENING OF THE SIDE OF THE SOLE CAUSED BY THE FRICTION OF THE EDGE OF THE PEDAL + YES I BICYCLE A GOOD DEAL MR. HOLMES AND THAT HAS SOMETHING TO DO WITH MY VISIT TO YOU TO DAY + MY FRIEND TOOK THE LADY'S UNGLOVED HAND AND EXAMINED IT WITH AS CLOSE AN ATTENTION AND AS LITTLE SENTIMENT AS A SCIENTIST WOULD SHOW TO A SPECIMEN + YOU WILLL CXCUSE ME + I AM SURE + IT IS MY BUSINESS SAID HE AS HE DROPPED IT + I NEARLY FELL INTO THE ERROR OF SUPPOSING THAT YOU WERE TYPEWRITING + OF COURSE IT IS OBVIOUS THAT IT IS MUSIC + YOU OBSERVE THE SPATULATE FINGER ENDS WATSON WHICH IS COMMON TO BOTH PROFESSIONS + THERE IS A SPIRITUALITY ABOUT THE FACE HOWEVER SHE GENTLY TURNED IT TOWARDS THC LIGHT WHICH THE TYPEWRITER DOES NOT GENERATE + THIS LADY IS A MUSICIAN QUOTE + YES MR. HOLMES I TEACH MUSIC + IN THE COUNTRY I PRESUME FROM YOUR COMPLEXION + YES SIR NEAR FARNHAM ON THE BORDERS OF SURREY + A BEAUTIFUL NEIGHBOURHOOD AND FULL OF THE MOST INTERESTING ASSOCIATION + YOU REMEMBER WATSON THAT IT WAS NEAR THERE THAT WE TOOK ARCHIE STAMFORD THE FORGER + NOW MISS VIOLET WHAT HAS HAPPENED TO YOU NEAR FARNHAM ON THE BORDERS OF SURREY + QUOTE MY FATHER IS DEAD MR. HOLMES + HE WAS JAMES SMITH WHO CONDUCTED THE ORCHESTRA AT THE OLD IMPERIAL THEATRE + MY MOTHER AND I WERE LEFT WITHOUT A RELATION IN THE WORLD EXCEPT ONE UNCLE RALPH SMITH WHO WENT TO AFRICA TWENTY FIVE YEARS AGO AND WE HAVE NEVER HAD A WORD FROM HIM SINCE + WHEN FATHER DIED WE WERE LEFT VERY POOR BUT ONE DAY WE WERE TOLD THAT THERE WAS AN ADVERTISEMENT IN THE TIMES INQUIRING FOR OUR WHEREABOUTS + YOU CAN IMAGINE HOW EXCITED WE WERE FOR WE THOUGHT THAT SOMEONE HAD LEFT US A FORTUNE + WE WENT AT ONCE TO THE LAWYER WHOSE NAME WAS GIVEN IN THE PAPER + THERE WE MET TWO GENTLEMEN MR. CARRUTHERS AND MR. WOODLEY WHO WERE HOME ON A VISIT FROM SOUTH AFRICA + THEY SAID THAT MY UNCLE WAS A FRIEND OF THEIRS THAT HE HAD DIED SOME MONTHS BEFORE IN GREAT POVERTY IN JOHANNESBURG AND THAT HE HAD ASKED THEM WITH HIS LAST BREATH TO HUNT UP HIS RELATIONS AND SEE THAT THEY WERE IN NO WANT + IT SEEMED STRANGE TO US THAT UNCLE RALPH WHO TOOK NO NOTICE OF US WHEN HE WAS ALIVE SHOULD BE SO CAREFUL TO LOOK AFTER US WHEN HE WAS DEAD BUT MR. CARRUTHERS EXPLAINED THAT THE REASON WAS THAT MY UNCLE HAD JUST HEARD OF THE DEATH OF HIS BROTHER AND SO FELT RESPONSIBLE FOR OUR FATE + EXCUSE ME. SAID HOLMES + WHEN WAS THIS INTERVIEW + LAST DECEMBER FOUR MONTHS AGO + PRAY PROCEED + QUOTE MR. WOODLEY SEEMED TO ME TO BE A MOST ODIOUS PERSON + HE WAS FOR EVER MAKING EYES AT ME A COARSE PUFFY FACED REDMOUSTACHED YOUNG MAN WITH HIS HAIR PLASTERED DOWN ON EACH SIDE OF HIS FOREHEAD + I THOUGHT THAT HE WAS PERFECTLY HATEFUL AND I WAS SURE THAT CYRIL WOULD NOT WISH ME TO KNOW SUCH A PERSON + OH CYRIL IS HIS NAME SAID HOLMES SMILING + THE YOUNG LADY BLUSHED AND LAUGHED + YES MR. HOLMES CYRIL MORTON AN ELECTRICAL ENGINEER AND WE HOPE TO BE MARRIED AT THE END OF THE SUMMER + DEAR ME HOW DID I GET TALKING ABOUT HIM + WHAT I WISHED TO SAY WAS THAT MR. WOODLEY WAS PERFECTLY ODIOUS BUT THAT MR. CARRUTHERS WHO WAS A MUCH OLDER MAN WAS MORE AGREEABLE + HE WAS A DARK SALLOW CLEAN SHAVEN SILENT PERSON BUT HE HAD POLITE MANNERS AND A PLEASANT SMILE + HE INQUIRED HOW WE WERE LEFT AND ON FINDING THAT WE WERE VERY POOR HE SUGGESTED THAT I SHOULD COME AND TEACH MUSIC TO HIS ONLY DAUGHTER AGED TEN + I SAID THAT I DID NOT LIKE TO LEAVE MY MOTHER ON WHICH HE SUGGESTED THAT I SHOULD GO HOME TO HER EVERY WEEK END AND HE OFFERED ME A HUNDRED A YEAR WHICH WAS CERTAINLY SPLENDID PAY + SO IT ENDED BY MY ACCEPTING AND I WENT DOWN TO CHILTERN GRANGE ABOUT SIX MILES FROM FARNHAM + MR. CARRUTHERS WAS A WIDOWER BUT HE HAD ENGAGED A LADY HOUSEKEEPER A VERY RESPECTABLE ELDERLY PERSON CALLED MRS. DIXON TO LOOK AFTER HIS ESTABLISHMENT + THE CHILD WAS A DEAR AND EVERYTHING PROMISED WELI + MR. CARRUTHERS WAS VERY KIND AND VERY MUSICAL AND WE HAD MOST PLEASANT EVENINGS TOGETHER + EVERY WEEK END I WENT HOME TO MY MOTHER IN TOWN + THE FIRST FLAW IN MY HAPPINESS WAS THE ARRIVAL OF THE REDMOUSTACHED MR. WOODLEY + HE CAME FOR A VISIT OF A WEEK AND OH IT SEEMED THREE MONTHS TO ME + HE WAS A DREADFUL PERSON A BULLY TO EVERYONE ELSE BUT TO ME SOMETHING INFINITELY WORSE + HE MADE ODIOUS LOVE TO ME BOASTED OF HIS WEALTH SAID THAT IF I MARRIED HIM I COULD HAVE THE FINEST DIAMONDS IN LONDON AND FINALLY WHEN I WOULD HAVE NOTHING TO DO WITH HIM HE SEIZED ME IN HIS ARMS ONE DAY AFTER DINNER HE WAS HIDEOUSLY STRONG AND SWORE THAT HE WOULD NOT LET ME GO UNTIL I HAD KISSED HIM + MR. CARRUTHERS CAME IN AND TORE HIM FROM ME ON WHICH HE TURNED UPON HIS OWN HOST KNOCKING HIM DOWN AND CUTTING HIS FACE OPEN + THAT WAS THE END OF HIS VISIT AS YOU CAN IMAGINE + MR. CARRUTHERS APOLOGIZED TO ME NEXT DAY AND ASSURED ME THAT I SHOULD NEVER BE EXPOSED TO SUCH AN INSULT AGAIN + I HAVE NOT SEEN MR. WOODLEY SINCE + AND NOW MR. HOLMES I COME AT LAST TO THE SPECIAL THING WHICH HAS CAUSED ME TO ASK YOUR ADVLCE TO DAY + YOU MUST KNOW THAT EVERY SATURDAY FORENOON I RIDE ON MY BICYCLE TO FARNHAM STATION IN ORDER TO GET THE TWELVE TWENTY TWO TO TOWN + THE ROAD FROM CHILTERN GRANGE IS A LONELY ONE AND AT ONE SPOT IT IS PARTICULARLY SO FOR IT LIES FOR OVER A MILE BETWEEN CHARLINGTON HEATH UPON ONE SIDE AND THE WOODS WHICH LIE ROUND CHARLINGTON HALL UPON THE OTHER + YOU COULD NOT FIND A MORE LONELY TRACT OF ROAD ANYWHERE AND IT IS QUITE RARE TO MEET SO MUCH AS A CART OR A PEASANT UNTIL YOU REACH THE HIGH ROAD NEAR CROOKSBURY HILL + TWO WEEKS AGO I WAS PASSING THIS PLACE WHEN I CHANCED TO LOOK BACK OVER MY SHOULDER AND ABOUT TWO HUNDRED YARDS BEHIND ME I SAW A MAN ALSO ON A BICYCLE + HE SEEMED TO BE A MIDDLE AGED MAN WITH A SHORT DARK BEARD + I LOOKED BACK BEFORE I REACHED FARNHAM BUT THE MAN WAS GONE SO I THOUGHT NO MORE ABOUT IT + BUT YOU CAN IMAGINE HOW SURPRISED I WAS MR. HOLMES WHEN ON MY RETURN ON THE MONDAY I SAW THE SAME MAN ON THE SAME STRETCH OF ROAD + MY ASTONISHMENT WAS INCREASED WHEN THE INCIDENT OCCURRED AGAIN EXACTLY AS BEFORE ON THE FOLLOWING SATURDAY AND MONDAY + HE ALWAYS KEPT HIS DISTANCE AND DID NOT MOLEST ME IN ANY WAY BUT STILL IT CERTAINLY WAS VERY ODD + I MENTIONED IT TO MR. CARRUTHERS WHO SEEMED INTERESTED IN WHAT I SAID AND TOLD ME THAT HE HAD ORDERED A HORSE AND TRAP SO THAT IN FUTURE ONE SHOULD NOT PASS OVER THESE LONELY ROADS WITHOUT SOME COMPANION + QUOTE THE HORSE AND TRAP WERE TO HAVE COME THIS WEEK BUT FOR SOME REASON THEY WERE NOT DELIVERED AND AGAIN I HAD TO CYCLE TO THE STATION + THAT WAS THIS MORNING + YOU CAN THINK THAT I LOOKED OUT WHEN I CAME TO CHARLINGTON HEATH AND THERE SURE ENOUGH WAS THE MAN EXACTLY AS HE HAD BEEN THE TWO WEEKS BEFORE + HE ALWAYS KEPT SO FAR FROM ME THAT I COULD NOT CLEARLY SEE HIS FACE BUT IT WAS CERTAINLY SOMEONE WHOM I DID NOT KNOW + HE WAS DRESSED IN A DARK SUIT WITH A CLOTH CAP + THE ONLY THING ABOUT HIS FACE THAT I COULD CLEARLY SEE WAS HIS DARK BEARD + TO DAY I WAS NOT ALARMED BUT I WAS FILLED WITH CURIOSITY AND I DETERMINED TO FIND OUT WHO HE WAS AND WHAT HE WANTED + I SLOWED DOWN MY MACHINE BUT HE SLOWED DOWN HIS + THEN I STOPPED ALTOGETHER BUT HE STOPPED ALSO + THEN I LAID A TRAP FOR HIM + THERE IS A SHARP TURNING OF THE ROAD AND I PEDALLED VERY QUICKLY ROUND THIS AND THEN I STOPPED AND WAITED + I EXPECTED HIM TO SHOOT ROUND AND PASS ME BEFORE HE COULD STOP + BUT HE NEVER APPEARED + THEN I WENT BACK AND LOOKED ROUND THE CORNER + I COULD SEE A MILE OF ROAD BUT HE WAS NOT ON IT + TO MAKE IT THE MORE EXTRAORDINARY THERE WAS NO SIDE ROAD AT THIS POINT DOWN WHICH HE COULD HAVE GONE + HOLMES CHUCKLED AND RUBBED HIS HANDS + THIS CASE CERTAINLY PRESENTS SOME FEATURES OF ITS OWN SAID HE + HOW MUCH TIME ELAPSED BETWEEN YOUR TURNING THE CORNER AND YOUR DISCOVERY THAT THE ROAD WAS CLEAR + TWO OR THREE MINUTES + THEN HE COULD NOT HAVE RETREATED DOWN THE ROAD AND YOU SAY THAT THERE ARE NO SIDE ROADS + QUOTE NONE QUOTE + THEN HE CERTAINLY TOOK A FOOTPATH ON ONE SIDE OR THE OTHER + IT COULD NOT HAVE BEEN ON THE SIDE OF THE HEATH OR I SHOULD HAVE SEEN HIM + SO BY THE PROCESS OF EXCLUSION WE ARRIVE AT THE FACT THAT HE MADE HIS WAY TOWARD CHARLINGTON HALL WHICH AS I UNDERSTAND IS SITUATED IN ITS OWN GROUNDS ON ONE SIDE OF THE ROAD + ANYTHING ELSE + NOTHING MR. HOLMES SAVE THAT I WAS SO PERPLEXED THAT I FELT I SHOULD NOT BE HAPPY UNTIL I HAD SEEN YOU AND HAD YOUR ADVICE + HOLMES SAT IN SILENCE FOR SOME LITTLE TIME + QUOTE WHERE IS THE GENTLEMAN TO WHOM YOU ARE ENGAGED QUOTE HE ASKED AT LAST + HE IS IN THE MIDLAND ELECTRICAL COMPANY AT COVENTRY + HE WOULD NOT PAY YOU A SURPRISE VISIT OH MR. HOLMES + AS IF I SHOULD NOT KNOW HIM + HAVE YOU HAD ANY OTHER ADMIRERS + SEVERAL BEFORE I KNEW CYRIL + QUOTE AND SINCE QUOTE + THERE WAS THIS DREADFUL MAN WOODLEY IF YOU CAN CALL HIM AN ADMIRER + NO ONE ELSE + OUR FAIR CLIENT SEEMED A LITTLE CONFUSED + WHO WAS HE ASKED HOLMES + OH IT MAY BE A MERE FANCY OF MINE BUT IT HAD SEEMED TO ME SOMETIMES THAT MY EMPLOYER MR. CARRUTHERS TAKES A GREAT DEAL OF INTEREST IN ME + WE ARE THROWN RATHER TOGETHER + I PLAY HIS ACCOMPANIMENTS IN THE EVENING + HE HAS NEVER SAID ANYTHING + HE IS A PERFECT GENTLEMAN + BUT A GIRL ALWAYS KNOWS + QUOTE HA QUOTE + HOLMES LOOKED GRAVE + WHAT DOES HE DO FOR A LIVING + HE IS A RICH MAN + NO CARRIAGES OR HORSES + WELL AT LEAST HE IS FAIRLY WELL TO DO + BUT HE GOES INTO THE CITY TWO OR THREE TIMES A WEEK + HE IS DEEPLY INTERESTED IN SOUTH AFRICAN GOLD SHARES + QUOTE YOU WILL LET ME KNOW ANY FRESH DEVELOPMENT MISS SMITH + I AM VERY BUSY JUST NOW BUT I WILL FIND TIME TO MAKE SOME INQUIRIES INTO YOUR CASE + IN THE MEANTIME TAKE NO STEP WITHOUT LETTING ME KNOW + GOOD BYE AND I TRUST THAT WE SHALL HAVE NOTHING BUT GOOD NEWS FROM YOU + IT IS PART OF THE SETTLED ORDER OF NATURE THAT SUCH A GIRL SHOULD HAVE FOLLOWERS SAID HOLMES AS HE PULLED AT HIS MEDITATIVE PIPE. BUT FOR CHOICE NOT ON BICYCLES IN LONELY COUNTRY ROADS + SOME SECRETIVE LOVER BEYOND ALL DOUBT + BUT THERE ARE CURIOUS AND SUGGESTIVE DETAILS ABOUT THE CASE + WATSON + THAT HE SHOULD APPEAR ONLY AT THAT POINT + EXACTLY + OUR FIRST EFFORT MUST BE TO FIND WHO ARE THE TENANTS OF CHARLINGTON HALL + THEN AGAIN HOW ABOUT THE CONNECTION BETWEEN CARRUTHERS AND WOODLEY SINCE THEY APPEAR TO BE MEN OF SUCH A DIFFERENT TYPE + HOW CAME THEY BOTH TO BE SO KEEN UPON LOOKING UP RALPH SMITH'S RELATIONS + ONE MORE POINT + WHAT SORT OF A MENAGE IS IT WHICH PAYS DOUBLE THE MARKET PRICE FOR A GOVERNESS BUT DOES NOT KEEP A HORSE ALTHOUGH SIX MILES FROM THE STATION + ODD WATSON VERY ODD QUOTE + YOU WILL GO DOWN + NO MY DEAR FELLOW YOU WILL GO DOWN + THIS MAY BE SOME TRIFLING INTRIGUE AND I CANNOT BREAK MY OTHER IMPORTANT RESEARCH FOR THE SAKE OF IT + ON MONDAY YOU WILL ARRIVE EARLY AT FARNHAM YOU WILL CONCEAL YOURSELF NEAR CHARLINGTON HEATH YOU WILL OBSERVE THESE FACTS FOR YOURSELF AND ACT AS YOUR OWN JUDGMENT ADVISES + THEN HAVING INQUIRED AS TO THE OCCUPANTS OF THE HALL YOU WILL COME BACK TO ME AND REPORT + AND NOW WATSON NOT ANOTHER WORD OF THE MATTER UNTIL WE HAVE A FEW SOLID STEPPINGSTONES ON WHICH WE MAY HOPE TO GET ACROSS TO OUR SOLUTION + WE HAD ASCERTAINED FROM THE LADY THAT SHE WENT DOWN UPON THE MONDAY BY THE TRAIN WHICH LEAVES WATERLOO AT NINE FIFTY SO I STARTED EARLY AND CAUGHT THE NINE THIRTEEN + AT FARNHAM STATION I HAD NO DIFFICULTY IN BEING DIRECTED TO CHARLINGTON HEATH + IT WAS IMPOSSIBLE TO MISTAKE THE SCENE OF THE YOUNG LADY'S ADVENTURE FOR THE ROAD RUNS BETWEEN THE OPEN HEATH ON ONE SIDE AND AN OLD YEW HEDGE UPON THE OTHER SURROUNDING A PARK WHICH IS STUDDED WITH MAGNIFICENT TREES + THERE WAS A MAIN GATEWAY OF LICHEN STUDDED STONE EACH SIDE PILLAR SURMOUNTED BY MOULDERING HERALDIC EMBLEMS BUT BESIDES THIS CENTRAL CARRIAGE DRIVE I OBSERVED SEVERAL POINTS WHERE THERE WERE GAPS IN THE HEDGE AND PATHS LEADING THROUGH THEM + THE HOUSE WAS INVISIBLE FROM THE ROAD BUT THE SURROUNDINGS ALL SPOKE OF GLOOM AND DECAY + THE HEATH WAS COVERED WITH GOLDEN PATCHES OF FLOWERING GORSE GLEAMING MAGNIFICENTLY IN THE LIGHT OF THE BRIGHT SPRING SUNSHINE + BEHIND ONE OF THESE CLUMPS I TOOK UP MY POSITION SO AS TO COMMAND BOTH THE GATEWAY OF THE HALL AND A LONG STRETCH OF THE ROAD UPON EITHER SIDE + IT HAD BEEN DESERTED WHEN I LEIFT IT BUT NOW I SAW A CYCLIST RIDING DOWN IT FROM THE OPPOSITE DIRECTION TO THAT IN WHICH I HAD COME + HE WAS CLAD IN A DARK SUIT AND I SAW THAT HE HAD A BLACK BEARD + ON REACHING THE END OF THE CHDRLINGTON GROUNDS HE SPRANG FROM HIS MACHINE AND LED IT THROUGH A GAP IN THE HEDGE DISAPPEARING FROM MY VIEW + A QUARTER OF AN HOUR PASSED AND THEN A SECOND CYCLIST APPEARED + THIS TIME IT WAS THE YOUNG LADY COMING FROM THE STATION + I SAW HER LOOK ABOUT HER AS SHE CAME TO THE CHARLINGTON HEDGE + AN INSTANT LATER THE MAN EMERGED FROM HIS HIDING PLACE SPRANG UPON HIS CYCLE AND FOLLOWED HER + IN ALL THE BROAD LANDSCAPE THOSE WERE THE ONLY MOVING FIGURES THE GRACEFUL GIRL SITTING VERY STRAIGHT UPON HER MACHINE AND THE MAN BEHIND HER BENDING LOW OVER HIS HANDLE BAR WITH A CURIOUSLY FURTIVE SUGGESTION IN EVERY MOVEMENT + SHE LOCKED BACK AT HIM AND SLOWED HER PACE + HE SLOWED ALSO + SHE STOPPED + HE AT ONCE STOPPED TOO KEEPING TWO HUNDRED YARDS BEHIND HER + HER NEXT MOVEMENT WAS AS UNEXPECTED AS IT WAS SPIRITED + SHE SUDDENLY WHISKED HER WHEELS ROUND AND DASHED STRAIGHT AT HIM + HE WAS AS QUICK AS SHE HOWEVER AND DARTED OFF IN DESPERATE FLIGHT + PRESENTLY SHE CAME BACK UP THE ROAD AGAIN HER HEAD HAUGHTILY IN THE AIR NOT DEIGNING TO TAKE ANY FURTHER NOTICE OF HER SILENT ATTENDANT + HE HAD TURNED ALSO AND STILL KEPT HIS DISTANCE UNTIL THE CURVE OF THE ROAD HID THEM FROM MY SIGHT + I REMAINED IN MY HIDING PLACE AND IT WAS WELL THAT I DID SO FOR PRESENTLY THE MAN REAPPEARED CYCLING SLOWLY BACK + HE TURNED IN AT THE HALL GATES AND DISMOUNTED FROM HIS MACHINE + FOR SOME MINUTES I COULD SEE HIM STANDING AMONG THE TREES + HIS HANDS WERE RAISED AND HE SEEMED TO BE SETTLING HIS NECKTIE + THEN HE MOUNTED HIS CYCLE AND RODE AWAY FROM ME DOWN THE DRIVE TOWARDS THE HALL + I RAN ACROSS THE HEATH AND PEERED THROUGH THE TREES + FAR AWAY I COULD CATCH GLIMPSES OF THE OLD GRAY BUILDING WITH ITS BRISTLING TUDOR CHIMNEYS BUT THE DRIVE RAN THROUGH A DENSE SHRUBBERY AND I SAW NO MORE OF MY MAN + HOWEVER IT SEEMED TO ME THAT I HAD DONE A FAIRLY GOOD MORNING'S WORK AND I WALKED BACK IN HIGH SPIRITS TO FARNHAM + THE LOCAL HOUSE AGENT COULD TELL ME NOTHING ABOUT CHARLINGTON HALL AND REFERRED ME TO A WELL KNOWN FIRM IN PALL MALL + THERE I HALTED ON MY WAY HOME AND MET WITH COURTESY FROM THE REPRESENTATIVE + NO I COULD NOT HAVE CHARLINGTON HALL FOR THE SUMMER + I WAS JUST TOO LATE + IT HAD BEEN LET ABOUT A MONTH AGO + MR. WILLIAMSON WAS THE NAME OF THE TENANT + HE WAS A RESPECTABLE ELDERLY GENTLEMAN + THE POLITE AGENT WAS AFRAID HE COULD SAY NO MORE AS THE AFFAIRS OF HIS CLIENTS WERE NOT MATTERS WHICH HE COULD DISCUSS + MR. SHERLOCK HOLMES LISTENED WITH ATTENTION TO THE LONG REPORT WHICH I WAS ABLE TO PRESENT TO HIM THAT EVENING BUT IT DID NOT ELICIT THAT WORD OF CURT PRAISE WHICH I HAD HOPED FOR AND SHOULD HAVE VALUED + ON THE CONTRARY HIS AUSTERE FACE WAS EVEN MORE SEVERE THAN USUAL AS HE COMMENTED UPON THE THINGS THAT I HAD DONE AND THE THINGS THAT I HAD NOT + YOUR HIDING PLACE MY DEAR WATSON WAS VERY FAULTY + YOU SHOULD HAVE BEEN BEHIND THE HEDGE THEN YOU WOULD HAVE HAD A CLOSE VIEW OF THIS INTERESTING PERSON + AS IT IS YOU WERE SOME HUNDREDS OF YARDS AWAY AND CAN TELL ME EVEN LESS THAN MISS SMITH + SHE THINKS SHE DOES NOT KNOW THE MAN I AM CONVINCED SHE DOES + WHY OTHERWISE SHOULD HE BE SO DESPERATELY ANXIOUS THAT SHE SHOULD NOT GET SO NEAR HIM AS TO SEE HIS FEATURES + YOU DESCRIBE HIM AS BENDING OVER THE HANDLE BAR + CONCEALMENT AGAIN YOU SEE + YOU REALLY HAVE DONE REMARKABLY BADLY + HE RETURNS TO THE HOUSE AND YOU WANT TO FIND OUT WHO HE IS + YOU COME TO A LONDON HOUSE AGENT + QUOTE WHAT SHOULD I HAVE DONE QUOTE + I CRIED WITH SOME HEAT + GONE TO THE NEAREST PUBLIC HOUSE + THAT IS THE CENTRE OF COUNTRY GOSSIP + THEY WOULD HAVE TOLD YOU EVERY NAME FROM THE MASTER TO THE SCULLERY MAID + WILLIAMSON + IT CONVEYS NOTHING TO MY MIND + IF HE IS AN ELDERLY MAN HE IS NOT THIS ACTIVE CYCLIST WHO SPRINTS AWAY FROM THAT YOUNG LADY'S ATHLETIC PURSUIT + WHAT HAVE WE GAINED BY YOUR EXPEDITION + THE KNOWLEDGE THAT THE GIRL'S STORY IS TRUE + I NEVER DOUBTED IT + THAT THERE IS A CONNECTION BETWEEN THE CYCLIST AND THE HALL + I NEVER DOUBTED THAT EITHER + THAT THE HALL IS TENANTED BY WILLIAMSON + WHO'S THE BETTER FOR THAT + WELL WELL MY DEAR SIR DON'T LOOK SO DEPRESSED + WE CAN DO LITTLE MORE UNTIL NEXT SATURDAY AND IN THE MEANTIME I MAY MAKE ONE OR TWO INQUIRIES MYSELF + NEXT MORNING WE HAD A NOTE FROM MISS SMITH RECOUNTING SHORTLY AND ACCURATELY THE VERY INCIDENTS WHICH I HAD SEEN BUT THE PITH OF THE LETTER LAY IN THE POSTSCRIPT I AM SURE THAT YOU WILL RESPECT MY CONFIDENCE MR. HOLMES WHEN I TELL YOU THAT MY PLACE HERE HAS BECOME DIFFICULT OWING TO THE FACT THAT MY EMPLOYER HAS PROPOSED MARRIAGE TO ME + I AM CONVINCED THAT HIS FEELINGS ARE MOST DEEP AND MOST HONOURABLE + AT THE SAME TIME MY PROMISE IS OF COURSE GIVEN + HE TOOK MY REFUSAL VERY SERIOUSLY BUT ALSO VERY GENTLY + YOU CAN UNDERSTAND HOWEVER THAT THE SITUA TION IS A LITTLE STRAINED + OUR YOUNG FRIEND SEEMS TO BE GETTING INTO DEEP WATERS SAID HOLMES THOUGHTFULLY AS HE FINISHED THE LETTER + THE CASE CERTAINLY PRESENTS MORE FEATURES OF INTEREST AND MORE POSSIBILITY OF DEVELOPMENT THAN I HAD ORIGINALLY THOUGHT + I SHOULD BE NONE THE WORSE FOR A QUIET PEACEFUL DAY IN THE COUNTRY AND I AM INCLINED TO RUN DOWN THIS AFTERNOON AND TEST ONE OR TWO THEORIES WHICH I HAVE FORMED + HOLMES'S QUIET DAY IN THE COUNTRY HAD A SINGULAR TERMINATION FOR HE ARRIVED AT BAKER STREET LATE IN THE EVENING WITH A CUT LIP AND A DISCOLOURED LUMP UPON HIS FOREHEAD BESIDES A GENERAL AIR OF DISSIPATION WHICH WOULD HAVE MADE HIS OWN PERSON THE FITTING OBJECT OF A SCOTLAND YARD INVESTIGATION + HE WAS IMMENSELY TICKLED BY HIS OWN ADVENTURES AND LAUGHED HEARTILY AS HE RECOUNTED THEM + QUOTE I GET SO LITTLE ACTIVE EXERCISE THAT IT IS ALWAYS A TREAT QUOTE SAID HE + YOU ARE AWARE THAT I HAVE SOME PROFICIENCY IN THE GOOD OLD BRITISH SPORT OF BOXING + OCCASIONALLY IT IS OF SERVICE TODAY FOR EXAMPLE I SHOULD HAVE COME TO VERY IGNOMINIOUS GRIEF WITHOUT IT + I BEGGED HIM TO TELL ME WHAT HAD OCCURRED + I FOUND THAT COUNTRY PUB WHICH I HAD ALREADY RECOMMENDED TO YOUR NOTICE AND THERE I MADE MY DISCREET INQUIRIES + I WAS IN THE BAR AND A GARRULOUS LANDLORD WAS GIVING ME ALL THAT I WANTED + WILLIAMSON IS A WHITE BEARDED MAN AND HE LIVES ALONE WITH A SMALL STAFF OF SERVANTS AT THE HALL + THERE IS SOME RUMOR THAT HE IS OR HAS BEEN A CLERGYMAN BUT ONE OR TWO INCIDENTS OF HIS SHORT RESIDENCE AT THE HALL STRUCK ME AS PECULIARLY UNECCLESIASTICAL + I HAVE ALREADY MADE SOME INQUIRIES AT A CLERICAL AGENCY AND THEY TELL ME THAT THERE WAS A MAN OF THAT NAME IN ORDERS WHOSE CAREER HAS BEEN A SINGULARLY DARK ONE + THE LANDLORD FURTHER INFORMED ME THAT THERE ARE USUALLY WEEKEND VISITORS A WARM LOT SIR AT THE HALL AND ESPECIALLY ONE GENTLEMAN WITH A RED MOUSTACHE MR. WOODLEY BY NAME WHO WAS ALWAYS THERE + WE HAD GOT AS FAR AS THIS WHEN WHO SHOULD WALK IN BUT THE GENTLEMAN HIMSELF WHO HAD BEEN DRINKING HIS BEER IN THE TAPROOM AND HAD HEARD THE WHOLE CONVERSATION + WHO WAS L. + WHAT DID I WANT + WHAT DID I MEAN BY ASKING QUESTIONS + HE HAD A FINE FLOW OF LANGUAGE AND HIS ADJECTIVES WERE VERY VIGOROUS + HE ENDED A STRING OF ABUSE BY A VICIOUS BACKHANDER WHICH I FAILED TO ENTIRELY AVOID + THE NEXT FEW MINUTES WERE DELICIOUS + IT WAS A STRAIGHT LEFT AGAINST A SLOGGING RUFFIAN + I EMERGED AS YOU SEE ME + MR. WOODLEY WENT HOME IN A CART + SO ENDED MY COUNTRY TRIP AND IT MUST BE CONFESSED THAT HOWEVER ENJOYABLE MY DAY ON THE SURREY BORDER HAS NOT BEEN MUCH MORE PROFITABLE THAN YOUR OWN + THE THURSDAY BROUGHT US ANOTHER LETTER FROM OUR CLIENT + YOU WILL NOT BE SURPRISED MR. HOLMES SAID SHE TO HEAR THAT I AM LEAVING MR. CARRUTHERS'S EMPLOYMENT + EVEN THE HIGH PAY CANNOT RECONCILE ME TO THE DISCOMFORTS OF MY SITUATION + ON SATURDAY I COME UP TO TOWN AND I DO NOT INTEND TO RETURN + MR. CARRUTHERS HAS GOT A TRAP AND SO THE DANGERS OF THE LONELY ROAD IF THERE EVER WERE ANY DANGERS ARE NOW OVER + AS TO THE SPECIAL CAUSE OF MY LEAVING IT IS NOT MERELY THE STRAINED SITUATION WITH MR. CARRUTHERS BUT IT IS THE REAP PEARANCE OF THAT ODIOUS MAN MR. WOODLEY + HE WAS ALWAYS HIDEOUS BUT HE LOOKS MORE AWFUL THAN EVER NOW FOR HE APPEARS TO HAVE HAD AN ACCIDENT AND HE IS MUCH DISFIGURED + I SAW HIM OUT OF THE WINDOW BUT I AM GLAD TO SAY I DID NOT MEET HIM + HE HAD A LONG TALK WITH MR. CARRUTHERS WHO SEEMED MUCH EXCITED AFTERWARDS + WOODLEY MUST BE STAYING IN THE NEIGHBOURHOOD FOR HE DID NOT SLEEP HERE AND YET I CAUGHT A GLIMPSE OF HIM AGAIN THIS MORNING SLINKING ABOUT IN THE SHRUBBERY + I WOULD SOONER HAVE A SAVAGE WILD ANIMAL LOOSE ABOUT THE PLACE + I LOATHE AND FEAR HIM MORE THAN I CAN SAY + HOW CAN MR. CARRUTHERS ENDURE SUCH A CREATURE FOR A MOMENT + HOWEVER ALL MY TROUBLES WILL BE OVER ON SATURDAY + SO I TRUST WATSON SO I TRUST SAID HOLMES GRAVELY + QUOTE THERE IS SOME DEEP INTRIGUE GOING ON ROUND THAT LITTLE WOMAN AND IT IS OUR DUTY TO SEE THAT NO ONE MOLESTS HER UPON THAT LAST JOURNEY + I THINK WATSON THAT WE MUST SPARE TIME TO RUN DOWN TOGETHER ON SATURDAY MORNING AND MAKE SURE THAT THIS CURIOUS AND INCLUSIVE INVESTIGATION HAS NO UNTOWARD ENDING + I CONFESS THAT I HAD NOT UP TO NOW TAKEN A VERY SERIOUS VIEW OF THE CASE WHICH HAD SEEMED TO ME RATHER GROTESQUE AND BIZARRE THAN DANGEROUS + THAT A MAN SHOULD LIE IN WAIT FOR AND FOLLOW A VERY HANDSOME WOMAN IS NO UNHEARD OF THING AND IF HE HAS SO LITTLE AUDACITY THAT HE NOT ONLY DARED NOT ADDRESS HER BUT EVEN FLED FROM HER APPROACH HE WAS NOT A VERY FORMIDABLE ASSAILANT + THE RUFFIAN WOODLEY WAS A VERY DIFFERENT PERSON BUT EXCEPT ON ONE OCCASION HE HAD NOT MOLESTED OUR CLIENT AND NOW HE VISITED THE HOUSE OF CARRUTHERS WITHOUT INTRUDING UPON HER PRESENCE + THE MAN ON THE BICYCLE WAS DOUBTLESS A MEMBER OF THOSE WEEK END PARTIES AT THE HALL OF WHICH THE PUBLICAN HAD SPOKEN BUT WHO HE WAS OR WHAT HE WANTED WAS AS OBSCURE AS EVER + IT WAS THE SEVERITY OF HOLMES'S MANNER AND THE FACT THAT HE SLIPPED A REVOLVER INTO HIS POCKET BEFORE LEAVING OUR ROOMS WHICH IMPRESSED ME WITH THE FEELING THAT TRAGEDY MIGHT PROVE TO LURK BEHIND THIS CURIOUS TRAIN OF EVENTS + A RAINY NIGHT HAD BEEN FOLLOWED BY A GLORIOUS MORNING AND THE HEATH COVERED COUNTRYSIDE WITH THE GLOWING CLUMPS OF FLOWERING GORSE SEEMED ALL THE MORE BEAUTIFUL TO EYES WHICH WERE WEARY OF THE DUNS AND DRABS AND SLATE GRAYS OF LONDON + HOLMES AND I WALKED ALONG THE BROAD SANDY ROAD INHALING THE FRESH MORNING AIR AND REJOICING IN THE MUSIC OF THE BIRDS AND THE FRESH BREATH OF THE SPRING + FROM A RISE OF THE ROAD ON THE SHOULDER OF CROOKSBURY HILL WE COULD SEE THE GRIM HALL BRISTLING OUT FROM AMIDST THE ANCIENT OAKS WHICH OLD AS THEY WERE WERE STILL YOUNGER THAN THE BUILDING WHICH THEY SURROUNDED + HOLMES POINTED DOWN THE LONG TRACT OF ROAD WHICH WOUND A REDDISH YELLOW BAND BETWEEN THE BROWN OF THE HEATH AND THE BUDDING GREEN OF THE WOODS + FAR AWAY A BLACK DOT WE COULD SEE A VEHICLE MOVING IN OUR DIRECTION + HOLMES GAVE AN EXCLAMATION OF IMPATIENCE + I HAVE GIVEN A MARGIN OF HALF AN HOUR SAID HE + IF THAT IS HER TRAP SHE MUST BE MAKING FOR THE EARLIER TRAIN + I FEAR WATSON THAT SHE WILL BE PAST CHARLINGTON BEFORE WE CAN POSSIBLY MEET HER + FROM THE INSTANT THAT WE PASSED THE RISE WE COULD NO LONGER SEE THE VEHICLE BUT WE HASTENED ONWARD AT SUCH A PACE THAT MY SEDENTARY LIFE BEGAN TO TELL UPON ME AND I WAS COMPELLED TO FALL BEHIND + HOLMES HOWEVER WAS ALWAYS IN TRAINING FOR HE HAD INEXHAUSTIBLE STORES OF NERVOUS ENERGY UPON WHICH TO DRAW + HIS SPRINGY STEP NEVER SLOWED UNTIL SUDDENLY WHEN HE WAS A HUNDRED YARDS IN FRONT OF ME HE HALTED AND I SAW HIM THROW UP HIS HAND WITH A GESTURE OF GRIEF AND DESPAIR + AT THE SAME INSTANT AN EMPTY DOG CART THE HORSE CANTERING THE REINS TRAILING APPEARED ROUND THE CURVE OF THE ROAD AND RATTLED SWIFTLY TOWARDS US + TOO LATE WATSON TOO LATE CRIED HOLMES AS I RAN PANTING TO HIS SIDE + QUOTE FOOL THAT I WAS NOT TO ALLOW FOR THAT EARLIER TRAIN + IT'S ABDUCTION WATSON ABDUCTION + MURDER + HEAVEN KNOWS WHATL BLOCK THE ROAD + STOP THE HORSE + THAT'S RIGHT + NOW JUMP IN AND LET US SEE IF I CAN REPAIR THE CONSEQUENCES OF MY OWN BLUNDER + WE HAD SPRUNG INTO THE DOG CART AND HOLMES AFTER TURNING THE HORSE GAVE IT A SHARP CUT WITH THE WHIP AND WE FLEW BACK ALONG THE ROAD + AS WE TURNED THE CURVE THE WHOLE STRETCH OF ROAD BETWEEN THE HALL AND THE HEATH WAS OPENED UP + I GRASPED HOLMES'S ARM + THAT'S THE MAN + I GASPED + A SOLITARY CYCLIST WAS COMING TOWARDS US + HIS HEAD WAS DOWN AND HIS SHOULDERS ROUNDED AS HE PUT EVERY OUNCE OF ENERGY THAT HE POSSESSED ON TO THE PEDALS + HE WAS FLYING LIKE A RACER + SUDDENLY HE RAISED HIS BEARDED FACE SAW US CLOSE TO HIM AND PULLED UP SPRINGING FROM HIS MACHINE + THAT COAL BLACK BEARD WAS IN SINGULAR CONTRAST TO THE PALLOR OF HIS FACE AND HIS EYES WERE AS BRIGHT AS IF HE HAD A FEVER + HE STARED AT US AND AT THE DOG CART + THEN A LOOK OF AMAZEMENT CAME OVER HIS FACE + HALLOA + STOP THERE HE SHOUTED HOLDING HIS BICYCLE TO BLOCK OUR ROAD + WHERE DID YOU GET THAT DOG CART + PULL UP MAN QUOTE HE YELLED DRAWING A PISTOLL FROM HIS SIDE POCKET + PULL UP I SAY OR BY GEORGE I'LL PUT AL BULLET INTO YOUR HORSE + HOLMES THREW THE REINS INTO MY LAP AND SPRANG DOWN FROM THE CART + YOU'RE THE MAN WE WANT TO SEE + WHERE IS MISS VIOLET SMITH HE SAID IN HIS QUICK CLEAR WAY + THAT'S WHAT I'M ASKING YOU + YOU'RE IN HER DOG CART + YOU OUGHT TO KNOW WHERE SHE IS + QUOTE WE MET THE DOG CART ON THE ROAD + THERE WAS NO ONE IN IT + WE DROVE BACK TO HELP THE YOUNG LADY + GOOD LORD + GOOD LORD + WHAT SHALL I DO CRIED THE STRANGER IN AN ECSTASY OF DESPAIR + THEY'VE GOT HER THAT HELL HOUND WOODLEY AND THE BLACKGUARD PARSON + COME MAN COME IF YOU REALLY ARE HER FRIEND + STAND BY ME AND WE'LL SAVE HER IF I HAVE TO LEAVE MY CARCASS IN CHARLLINGTON WOOD + HE RAN DISTRACTEDLY HIS PISTOL IN HIS HAND TOWARDS A GAP IN THE HEDGE + HOLMES FOLLOWED HIM AND I LEAVING THE HORSE GRAZING BESIDE THE ROAD FOLLOWED HOLMES + QUOTE THIS IS WHERE THEY CAME THROUGH QUOTE SAID HE POINTING TO THE MARKS OF SEVERAL FEET UPON THE MUDDY PATH + HALLOA + STOP A MINUTE + WHO'S THIS IN THE BUSH + IT WAS A YOUNG FELLOW ABOUT SEVENTEEN DRESSED LIKE AN OSTLER WITH LEATHER CORDS AND GAITERS + HE LAY UPON HIS BACK HIS KNEES DRAWN UP A TERRIBLE CUT UPON HIS HEAD + HE WAS INSENSIBLE BUT ALIVE + A GLANCE AT HIS WOUND TOLD ME THAT IT HAD NOT PENETRATED THE BONE + THAT'S PETER THE GROOM CRIED THE STRANGER + HE DROVE HER + THE BEASTS HAVE PULLED HIM OFF AND CLUBBED HIM + LET HIM LIE WE CAN'T DO HIM ANY GOOD BUT WE MAY SAVE HER FROM THE WORST FATE THAT CAN BEFALL A WOMAN + WE RAN FRANTICALLY DOWN THE PATH WHICH WOUND AMONG THE TREES + WE HAD REACHED THE SHRUBBERY WHICH SURROUNDED THE HOUSE WHEN HOLMES PULLED UP + QUOTE THEY DIDN'T GO TO THE HOUSE + HERE ARE THEIR MARKS ON THE LEFT HERE BESIDE THE LAUREL BUSHES + AH + I SAID SO + AS HE SPOKE A WOMAN'S SHRILL SCREAM A SCREAM WHICH VIBRATED WITH A FRENZY OF HORROR BURST FROM THE THICK GREEN CLUMP OF BUSHES IN FRONT OF US + IT ENDED SUDDENLY ON ITS HIGHEST NOTE WITH A CHOKE AND A GURGLE + THIS WAY + THIS WAY + THEY ARE IN THE BOWLING ALLEY CRIED THE STRANGER DARTING THROUGH THE BUSHES + AH THE COWARDLY DOGS + FOLLOW ME GENTLEMEN + TOO LATE TOO LATE BY THE LIVING JINGO + WE HAD BROKEN SUDDENLY INTO A LOVELY GLADE OF GREENSWARD SURROUNDED BY ANCIENT TREES + ON THE FARTHER SIDE OF IT UNDER THE SHADOW OF A MIGHTY OAK THERE STOOD A SINGULAR GROUP OF THREE PEOPLE + ONE WAS A WOMAN OUR CLIENT DROOPING AND FAINT A HANDKERCHIEF ROUND HER MOUTH + OPPOSITE HER STOOD A BRUTAL HEAVY FACED RED MOUSTACHED YOUNG MAN HIS GAITERED LEGS PARTED WIDE ONE ARM AKIMBO THE OTHER WAVING A RIDING CROP HIS WHOLE ATTITUDE SUGGESIVE OF TRIUMPHANT BRAVADO + BETWEEN THEM AN ELDERLY GRAY BEARDED MAN WEARING A SHORT SURPLICE OVER A LIGHT TWEED SUIT HAD EVIDENTLY JUST COMPLETED THE WEDDING SERVICE FOR HE POCKETED HIS PRAYER BOOK AS WE APPEARED AND SLAPPED THE SINISTER BRIDEGROOM UPON THE BACK IN JOVIAL CONGRATULATION + QUOTE THEY'RE MARRIED QUOTE + I GASPED + COME ON CRIED OUR GUIDE COME ON + HE RUSHED ACROSS THE GLADE HOLMES AND I AT HIS HEELS + AS WE APPROACHED THE LADY STAGGERED AGAINST THE TRUNK OF THE TREE FOR SUPPORT + WILLIAMSON THE EX CLERGYMAN BOWED TO US WITH MOCK POLITENESS AND THE BULLY WOODLEY ADVANCED WITH A SHOUT OF BRUTAL AND EXULTANT LAUGHTER + YOU CAN TAKE YOUR BEARD OFF BOB SAID HE + I KNOW YOU RIGHT ENOUGH + WELL YOU AND YOUR PALS HAVE JUST COME IN TIME FOR ME TO BE ABLE TO INTRODUCE YOU TO MRS. WOODLEY + OUR GUIDE'S ANSWER WAS A SINGULAR ONE + HE SNATCHED OFF THE DARK BEARD WHICH HAD DISGUISED HIM AND THREW IT ON THE GROUND DISCLOSING A LONG SALLOW CLEAN SHAVEN FACE BELOW IT + THEN HE RAISED HIS REVOLVER AND COVERED THE YOUNG RUFFIAN WHO WAS ADVANCING UPON HIM WITH HIS DANGEROUS RIDING CROP SWINGING IN HIS HAND + YES SAID OUR ALLY I AM BOB CARRUTHERS AND I'LL SEE THIS WOMAN RIGHTED IF I HAVE TO SWING FOR IT + I TOLD YOU WHAT I'D DO IF YOU MOLESTED HER AND BY THE LORD + I'LL BE AS GOOD AS MY WORD QUOTE + YOU'RE TOO LATE + SHE'S MY WIFE + NO SHE'S YOUR WIDOW + HIS REVOLVER CRACKED AND I SAW THE BLOOD SPURT FROM THE FRONT OF WOODLEY'S WAISTCOAT + HE SPUN ROUND WITH A SCREAM AND FELL UPON HIS BACK HIS HIDEOUS RED FACE TURNING SUDDENLY TO A DREADFUL MOTTLED PALLOR + THE OLD MAN STILL CLAD IN HIS SURPLICE BURST INTO SUCH A STRING OF FOUL OATHS AS I HAVE NEVER HEARD AND PULLED OUT A REVOLVER OF HIS OWN BUT BEFORE HE COULD RAISE IT HE WAS LOOKING DOWN THE BARREL OF HOLMES'S WEAPON + ENOUGH OF THIS SAID MY FRIEND COLDLY + DROP THAT PISTOL + WATSON PICK IT UP + HOLD IT TO HIS HEAD + THANK YOU + YOU CARRUTHERS GIVE ME THAT REVOLVER + WE'LL HAVE NO MORE VIOLENCE COME HAND IT OVER QUOTE + WHO ARE YOU THEN + MY NAME IS SHERLOCK HOLMES + GOOD LORD + YOU HAVE HEARD OF ME I SEE + I WILL REPRESENT THE OFFICIAL POLICE UNTIL THEIR ARRIVAL + HERE YOU HE SHOUTED TO A FRIGHTENED GROOM WHO HAD APPEARED AT THE EDGE OF THE GLADE + QUOTE COME HERE + TAKE THIS NOTE AS HARD AS YOU CAN RIDE TO FARNHAM + HE SCRIBBLED A FEW WORDS UPON A LEAF FROM HIS NOTEBOOK + GIVE IT TO THE SUPERINTENDENT AT THE POLICE STATION + UNTIL HE COMES I MUST DETAIN YOU ALL UNDER MY PERSONAL CUSTODY + THE STRONG MASTERFUL PERSONALITY OF HOLMES DOMINATED THE TRAGIC SCENE AND ALL WERE EQUALLY PUPPETS IN HIS HANDS + WILLIAMSON AND CARRUTHERS FOUND THEMSELVES CARRYING THE WOUNDED WOODLEY INTO THE HOUSE AND I GAVE MY ARM TO THE FRIGHTENED GIRL + THE INJURED MAN WAS LAID ON HIS BED AND AT HOLMES'S REQUEST I EXAMINED HIM + I CARRIED MY REPORT TO WHERE HE SAT IN THE OLD TAPESTRY HUNG DINING ROOM WITH HIS TWO PRISONERS BEFORE HIM + HE WILL LIVE SAID I + WHAT CRIED CARRUTHERS SPRINGING OUT OF HIS CHAIR + QUOTE I'LL GO UPSTAIRS AND FINISH HIM FIRST + DO YOU TELL ME THAT THAT GIRL THAT ANGEL IS TO BE TIED TO ROARING JACK WOODLEY FOR LIFE + YOU NEED NOT CONCERN YOURSELF ABOUT THAT SAID HOLMES + THERE ARE TWO VERY GOOD REASONS WHY SHE SHOULD UNDER NO CIRCUMSTANCES BE HIS WIFE + IN THE FIRST PLACE WE ARE VERY SAFE IN QUESTIONING MR. WILLIAMSON'S RIGHT TO SOLEMNIZE A MARRIAGE + I HAVE BEEN ORDAINED CRIED THE OLD RASCAL + QUOTE AND ALSO UNFROCKED QUOTE + ONCE A CLERGYMAN ALWAYS A CLERGYMAN + I THINK NOT + HOW ABOUT THE LICENCE + WE HAD A LICENCE FOR THE MARRIAGE + I HAVE IT HERE IN MY POCKET + QUOTE THEN YOU GOT IT BY A TRICK + BUT IN ANY CASE A FORCED MARRIAGE IS NO MARRIAGE BUT IT IS A VERY SERIOUS FELONY AS YOU WILL DISCOVER BEFORE YOU HAVE FINISHED + YOU'LL HAVE TIME TO THINK THE POINT OUT DURING THE NEXT TEN YEARS OR SO UNLESS I AM MISTAKEN + AS TO YOU CARRUTHERS YOU WOULD HAVE DONE BETTER TO KEEP YOUR PISTOL IN YOUR POCKET + I BEGIN TO THINK SO MR. HOLMES BUT WHEN I THOUGHT OF ALL THE PRECAUTION I HAD TAKEN TO SHIELD THIS GIRL FOR I LOVED HER MR. HOLMES AND IT IS THE ONLY TIME THAT EVER I KNEW WHAT LOVE WAS IT FAIRLY DROVE ME MAD TO THINK THAT SHE WAS IN THE POWER OF THE GREATEST BRUTE AND BULLY IN SOUTH AFRICA A MAN WHOSE NAME IS A HOLY TERROR FROM KIMBERLEY TO JOHANNESBURG + WHY MR. HOLMES YOU'LL HARDLY BELIEVE IT BUT EVER SINCE THAT GIRL HAS BEEN IN MY EMPLOYMENT I NEVER ONCE LET HER GO PAST THIS HOUSE WHERE I KNEW THE RASCALS WERE LURKING WITHOUT FOLLOWING HER ON MY BICYCLE JUST TO SEE THAT SHE CAME TO NO HARM + I KEPT MY DISTANCE FROM HER AND I WORE A BEARD SO THAT SHE SHOULD NOT RECOGNIZE ME FOR SHE IS A GOOD AND HIGH SPIRITED GIRL AND SHE WOULDN'T HAVE STAYED IN MY EMPLOYMENT LONG IF SHE HAD THOUGHT THAT I WAS FOLLOWING HER ABOUT THE COUNTRY ROADS + WHY DIDN'T YOU TELL HER OF HER DANGER + BECAUSE THEN AGAIN SHE WOULD HAVE LEFT ME AND I COULDN'T BEAR TO FACE THAT + EVEN IF SHE COULDN'T LOVE ME IT WAS A GREAT DEAL TO ME JUST TO SEE HER DAINTY FORM ABOUT THE HOUSE AND TO HEAR THE SOUND OF HER VOICE QUOTE + WELL SAID I YOU CALL THAT LOVE MR. CARRUTHERS BUT I SHOULD CALL IT SELFISHNESS + MAYBE THE TWO THINGS GO TOGETHER + ANYHOW I COULDN'T LET HER GO + BESIDES WITH THIS CROWD ABOUT IT WAS WELL THAT SHE SHOULD HAVE SOMEONE NEAR TO LOOK AFTER HER + THEN WHEN THE CABLE CAME I KNEW THEY WERE BOUND TO MAKE A MOVE + WHAT CABLE + CARRUTHERS TOOK A TELEGRAM FROM HIS POCKET + THAT'S IT SAID HE + IT WAS SHORT AND CONCISE THE OLD MAN IS DEAD + QUOTE HUM QUOTE SAID HOLMES + I THINK I SEE HOW THINGS WORKED AND I CAN UNDERSTAND HOW THIS MESSAGE WOULD AS YOU SAY BRING THEM TO A HEAD + BUT WHILE YOU WAIT YOU MIGHT TELL ME WHAT YOU CAN + THE OLD REPROBATE WITH THC SURPLICE BURST INTO A VOLLEY OF BAD LANGUAGE + BY HEAVEN SAID HE IF YOU SQUEAL ON US BOB CARRUTHERS I'LL SERVE YOU AS YOU SERVED JACK WOODLEY + YOU CAN BLEAT ABOUT THE GIRL TO YOUR HEART'S CONTENT FOR THAT'S YOUR OWN AFFAIR BUT IF YOU ROUND ON YOUR PALS TO THIS PLAIN CLOTHES COPPER IT WILL BE THE WORST DAY'S WORK THAT EVER YOU DID + YOUR REVERENCE NEED NOT BE EXCITED SAID HOLMES LIGHTING A CIGARETTE + QUOTE THE CASE IS CLEAR ENOUGH AGAINST YOU AND ALL I ASK IS A FEW DETAILS FOR MY PRIVATE CURIOSITY + HOWEVER IF THERE'S ANY DIFFICULTY IN YOUR TELLING ME I'LL DO THE TALKING AND THEN YOU WILL SEE HOW FAR YOU HAVE A CHANCE OF HOLDING BACK YOUR SECRETS + IN THE FIRST PLACE THREE OF YOU CAME FROM SOUTH AFRICA ON THIS GAME YOU WILLIAMSON YOU CARRUTHERS AND WOODLEY + LIE NUMBER ONE SAID THE OLD MAN I NEVER SAW EITHER OF THEM UNTIL TWO MONTHS AGO AND I HAVE NEVER BEEN IN AFRICA IN MY LIFE SO YOU CAN PUT THAT IN YOUR PIPE AND SMOKE IT MR. BUSYBODY HOLMES + WELL WELL TWO OF YOU CAME OVER + HIS REVERENCE IS OUR OWN HOMEMADE ARTICLE + YOU HAD KNOWN RALPH SMITH IN SOUTH AFRICA + YOU HAD REASON TO BELIEVE HE WOULD NOT LIVE LONG + YOU FOUND OUT THAT HIS NIECE WOULD INHERIT HIS FORTUNE + HOW'S THAT EH + CARRUTHERS NODDED AND WILLIAMSON SWORE + SHE WAS NEXT OF KIN NO DOUBT AND YOU WERE AWARE THAT THE OLD FELLOW WOULD MAKE NO WILL + QUOTE COULDN'T READ OR WRITE QUOTE SAID CARRUTHERS + SO YOU CAME OVER THE TWO OF YOU AND HUNTED UP THE GIRL THE IDEA WAS THAT ONE OF YOU WAS TO MARRY HER AND THE OTHER HAVE A SHARE OF THE PLUNDER + FOR SOME REASON WOODLEY WAS CHOSEN AS THE HUSBAND + WHY WAS THAT + WE PLAYED CARDS FOR HER ON THE VOYAGE + HE WON + I SEE + YOU GOT THE YOUNG LADY INTO YOUR SERVICE AND THERE WOODLEY WAS TO DO THE COURTING + SHE RECOGNIZED THE DRUNKEN BRUTE THAT HE WAS AND WOULD HAVE NOTHING TO DO WITH HIM + MEANWHILE YOUR ARRANGEMENT WAS RATHER UPSET BY THE FACT THAT YOU HAD YOURSELF FALLEN IN LOVE WITH THE LADY + YOU COULD NO LONGER BEAR THE IDEA OF THIS RUFFIAN OWNING HER QUOTE + NO BY GEORGE + I COULDN'T + THERE WAS A QUARREL BETWEEN YOU + HE LEFT YOU IN A RAGE AND BEGAN TO MAKE HIS OWN PLANS INDEPENDENTLY OF YOU + IT STRIKES ME WILLIAMSON THERE ISN'T VERY MUCH THAT WE CAN TELL THIS GENTLEMAN CRIED CARRUTHERS WITH A BITTER LAUGH + QUOTE YES WE QUARRELED AND HE KNOCKED ME DOWN + I AM LEVEL WITH HIM ON THAT ANYHOW + THEN I LOST SIGHT OF HIM + THAT WAS WHEN HE PICKED UP WITH THIS OUTCAST PADRE HERE + I FOUND THAT THEY HAD SET UP HOUSEKEEPING TOGETHER AT THIS PLACE ON THE LINE THAT SHE HAD TO PASS FOR THE STATION + I KEPT MY EYE ON HER AFTER THAT FOR I KNEW THERE WAS SOME DEVILRY IN THE WIND + I SAW THEM FROM TIME TO TIME FOR I WAS ANXIOUS TO KNOW WHAT THEY WERE AFTER + TWO DAYS AGO WOODLEY CAME UP TO MY HOUSE WITH THIS CABLE WHICH SHOWED THAT RALPH SMITH WAS DEAD + HE ASKED ME IF I WOULD STAND BY THE BARGAIN + I SAID I WOULD NOT + HE ASKED ME IF I WOULD MARRY THE GIRL MYSELF AND GIVE HIM A SHARE + I SAID I WOULD WILLINGLY DO SO BUT THAT SHE WOULD NOT HAVE ME + HE SAID LET US GET HER MARRIED FIRST AND AFTER A WEEK OR TWO SHE MAY SEE THINGS A BIT DIFFERENT + I SAID I WOULD HAVE NOTHING TO DO WITH VIOLENCE + SO HE WENT OFF CURSING LIKE THE FOUL MOUTHED BLACKGUARD THAT HE WAS AND SWEARING THAT HE WOULD HAVE HER YET + SHE WAS LEAVING ME THIS WEEK END AND I HAD GOT A TRAP TO TAKE HER TO THE STATION BUT I WAS SO UNEASY IN MY MIND THAT I FOLLOWED HER ON MY BICYCLE + SHE HAD GOT A STATT HOWEVER AND BEFORE I COULD CATCH HER THE MISCHIEF WAS DONE + THE FIRST THING I KNEW ABOUT IT WAS WHEN I SAW YOU TWO GENTLEMEN DRIVING BACK IN HER DOG CART + HOLMES ROSE AND TOSSED THE END OF HIS CIGARETTE INTO THE GRATE + I HAVE BEEN VERY OBTUSE WATSON SAID HE + WHEN IN YOUR REPORT YOU SAID THAT YOU HAD SEEN THE CYCLIST AS YOU THOUGHT ARRANGE HIS NECKTIE IN THE SHRUBBERY THAT ALONE SHOULD HAVE TOLD ME ALL + HOWEVER WE MAY CONGRATULATE OURSELVES UPON A CURIOUS AND IN SOME RESPECTS A UNIQUE CASE + I PERCEIVE THREE OF THE COUNTY CONSTABULARY IN THE DRIVE AND I AM GLAD TO SEE THAT THE LITTLE OSTLER IS ABLE TO KEEP PACE WITH THEM SO IT IS LIKELY THAT NEITHER HE NOR THE INTERESTING BRIDEGROOM WILL BE PERMANENTLY DAMAGED BY THEIR MORNING'S ADVENTURES + I THINK WATSON THAT IN YOUR MEDICAL CAPACITY YOU MIGHT WAIT UPON MISS SMITH AND TELL HER THAT IF SHE IS SUFFICIENTLY RECOVERED WE SHALL BE HAPPY TO ESCORT HER TO HER MOTHER'S HOME + IF SHE IS NOT QUITE CONVALESCENT YOU WILL FIND THAT A HINT THAT WE WERE ABOUT TO TELEGRAPH TO A YOUNG ELECTRICIAN IN THE MIDLANDS WOULD PROBABLY COMPLETE THE CURE + AS TO YOU MR. CARRUTHERS I THINK THAT YOU HAVE DONE WHAT YOU COULD TO MAKE AMENDS FOR YOUR SHARE IN AN EVIL PLOT + THERE IS MY CARD SIR AND IF MY EVIDENCE CAN BE OF HELP IN YOUR TRIAL IT SHALL BE AT YOUR DISPOSAL + IN THE WHIRL OF OUR INCESSANT ACTIVITY IT HAS OFTEN BEEN DIFFICULT FOR ME AS THE READER HAS PROBABLY OBSERVED TO ROUND OFF MY NARRATIVES AND TO GIVE THOSE FINAL DETAILS WHICH THE CURIOUS MIGHT EXPECT + EACH CASE HAS BEEN THE PRELUDE TO ANOTHER AND THE CRISIS ONCE OVER THE ACTORS HAVE PASSED FOR EVER OUT OF OUR BUSY LIVES + I FIND HOWEVER A SHORT NOTE AT THE END OF MY MANUSCRIPT DEALING WITH THIS CASE IN WHICH I HAVE PUT IT UPON RECORD THAT MISS VIOLET SMITH DID INDEED INHERIT A LARGE FORTUNE AND THAT SHE IS NOW THE WIFE OF CYRIL MORTON THE SENIOR PARTNER OF MORTON AND KENNEDY THE FAMOUS WESTMINSTER ELECTRICIANS + WILLIAMSON AND WOODLEY WERE BOTH TRIED FOR ABDUCTION AND ASSAULT THE FORMER GETTING SEVEN YEARS AND THE LATTER TEN + OF THE FATE OF CARRUTHERS I HAVE NO RECORD BUT I AM SURE THAT HIS ASSAULT WAS NOT VIEWED VERY GRAVELY BY THE COURT SINCE WOODLEY HAD THE REPUTATION OF BEING A MOST DANGEROUS RUFFIAN AND I THINK THAT A FEW MONTHS WERE SUFFICIENT TO SATISFY THE DEMANDS OF JUSTICE diff --git a/samples/LMTutorial/train/speckled_band.txt b/samples/LMTutorial/train/speckled_band.txt new file mode 100755 index 0000000..3d9e7fa --- /dev/null +++ b/samples/LMTutorial/train/speckled_band.txt @@ -0,0 +1,596 @@ + ON GLANCING OVER MY NOTES OF THE SEVENTY ODD CASES IN WHICH I HAVE DURING THE LAST EIGHT YEARS STUDIED THE METHODS OF MY FRIEND SHERLOCK HOLMES I FIND MANY TRAGIC SOME COMIC A LARGE NUMBER MERELY STRANGE BUT NONE COMMONPLACE FOR WORKING AS HE DID RATHER FOR THE LOVE OF HIS ART THAN FOR THE ACQUIREMENT OF WEALTH HE REFUSED TO ASSOCIATE HIMSELF WITH ANY INVESTIGATION WHICH DID NOT TEND TOWARDS THE UNUSUAL AND EVEN THE FANTASTIC + OF ALL THESE VARIED CASES HOWEVER I CANNOT RECALL ANY WHICH PRESENTED MORE SINGULAR FEATURES THAN THAT WHICH WAS ASSOCIATED WITH THE WELL KNOWN SURREY FAMILY OF THE ROYLOTTS OF STOKE MORAN + THE EVENTS IN QUESTION OCCURRED IN THE EARLY DAYS OF MY ASSOCIATION WITH HOLMES WHEN WE WERE SHARING ROOMS AS BACHELORS IN BAKER STREET + IT IS POSSIBLE THAT I MIGHT HAVE PLACED THEM UPON RECORD BEFORE BUT A PROMISE OF SECRECY WAS MADE AT THE TIME FROM WHICH I HAVE ONLY BEEN FREED DURING THE LAST MONTH BY THE UNTIMELY DEATH OF THE LADY TO WHOM THE PLEDGE WAS GIVEN + IT IS PERHAPS AS WELL THAT THE FACTS SHOULD NOW COME TO LIGHT FOR I HAVE REASONS TO KNOW THAT THERE ARE WIDESPREAD RUMOURS AS TO THE DEATH OF DOCTOR GRIMESBY ROYLOTT WHICH TEND TO MAKE THE MATTER EVEN MORE TERRIBLE THAN THE TRUTH + IT WAS EARLY IN APRIL IN THE YEAR EIGHTY THREE THAT I WOKE ONE MORNING TO FIND SHERLOCK HOLMES STANDING FULLY DRESSED BY THE SIDE OF MY BED + HE WAS A LATE RISER AS A RULE AND AS THE CLOCK ON THE MANTELPIECE SHOWED ME THAT IT WAS ONLY A QUARTER PAST SEVEN I BLINKED UP AT HIM IN SOME SURPRISE AND PERHAPS JUST A LITTLE RESENTMENT FOR I WAS MYSELF REGULAR IN MY HABITS + QUOTE VERY SORRY TO KNOCK YOU UP WATSON QUOTE SAID HE QUOTE BUT IT'S THE COMMON LOT THIS MORNING + MRS. HUDSON HAS BEEN KNOCKED UP SHE RETORTED UPON ME AND I ON YOU + WHAT IS IT THEN A FIRE + NO A CLIENT + IT SEEMS THAT A YOUNG LADY HAS ARRIVED IN A CONSIDERABLE STATE OF EXCITEMENT WHO INSISTS UPON SEEING ME + SHE IS WAITING NOW IN THE SITTING ROOM + NOW WHEN YOUNG LADIES WANDER ABOUT THE METROPOLIS AT THIS HOUR OF THE MORNING AND KNOCK SLEEPY PEOPLE UP OUT OF THEIR BEDS I PRESUME THAT IT IS SOMETHING VERY PRESSING WHICH THEY HAVE TO COMMUNICATE + SHOULD IT PROVE TO BE AN INTERESTING CASE YOU WOULD I AM SURE WISH TO FOLLOW IT FROM THE OUTSET + I THOUGHT AT ANY RATE THAT I SHOULD CALL YOU AND GIVE YOU THE CHANCE + MY DEAR FELLOW I WOULD NOT MISS IT FOR ANYTHING + I HAD NO KEENER PLEASURE THAN IN FOLLOWING HOLMES IN HIS PLOFESSIONAL INVESTIGATIONS AND IN ADMIRING THE RAPID DEDUCTIONS AS SWIFT AS INTUITIONS AND YET ALWAYS FOUNDED ON A LOGICAL BASIS WLTH WHICH HE UNRAVELLED THE PROBLEMS WHICH WERE SUBMITTED TO HIM + I RAPIDLY THREW ON MY CLOTHES AND WAS READY IN A FEW MINUTES TO ACCOMPANY MY FRIEND DOWN TO THE SITTING ROOM + A LADY DRESSED IN BLACK AND HEAVILY VEILED WHO HAD BEEN SITTING IN THE WINDOW ROSE AS WE ENTERED + QUOTE GOOD MORNING MADAM QUOTE SAID HOLMES CHEERILY + MY NAME IS SHERLOCK HOLMES + THIS IS MY INTIMATE FRIEND AND ASSOCIATE DOCTOR WATSON BEFORE WHOM YOU CAN SPEAK AS FREELY AS BEFORE MYSELF + HA + I AM GLAD TO SEE THAT MRS. HUDSON HAS HAD THE GOOD SENSE TO LIGHT THE FIRE + PRAY DRAW UP TO IT AND I SHALL ORDER YOU A CUP OF HOT COFFEE FOR I OBSERVE THAT YOU ARE SHIVERING + LT IS NOT COLD WHICH MAKES ME SHIVER SAID THE WOMAN IN A LOW VOICE CHANGING HER SEAT AS REQUESTED + WHAT THEN + IT IS FEAR MR. HOLMES + IT IS TERROR QUOTE + SHE RAISED HER VEIL AS SHE SPOKE AND WE COULD SEE THAT SHE WAS INDEED IN A PITIABLE STATE OF AGITATION HER FACE ALL DRAWN AND GRAY WITH RESTLESS FRIGHTENED EYES LIKE THOSE OF SOME HUNTED ANIMAL + HER FEATURES AND FIGURE WERE THOSE OF A WOMAN OF THIRTY BUT HER HAIR WAS SHOT WITH PREMATURE GRAY AND HER EXPRESSION WAS WEARY AND HAGGARD + SHERLOCK HOLMES RAN HER OVER WITH ONE OF HIS QUICK ALLCOMPREHENSIVE GLANCES + YOU MUST NOT FEAR SAID HE SOOTHINGLY BENDING FORWARD AND PATTING HER FOREARM + WE SHALL SOON SET MATTERS RIGHT I HAVE NO DOUBT + YOU HAVE COME IN BY TRAIN THIS MORNING I SEE + YOU KNOW ME THEN + NO BUT I OBSERVE THE SECOND HALF OF A RETURN TICKET IN THE PALM OF YOUR LEFT GLOVE + YOU MUST HAVE STARTED EARLY AND YET YOU HAD A GOOD DRIVE IN A DOG CART ALONG HEAVY ROADS BEFORE YOU REACHED THE STATION QUOTE + THE LADY GAVE A VIOLENT START AND STARED IN BEWILDERMENT AT MY COMPANION + THERE IS NO MYSTERY MY DEAR MADAM SAID HE SMILING + THE LEFT ARM OF YOUR JACKET IS SPATTERED WITH MUD IN NO LESS THAN SEVEN PLACES + THE MARKS ARE PERFECTLY FRESH + THERE IS NO VEHICLE SAVE A DOG CART WHICH THROWS UP MUD IN THAT WAY AND THEN ONLY WHEN YOU SIT ON THE LEFT HAND SIDE OF THE DRIVER + WHATEVER YOUR REASONS MAY BE YOU ARE PERFECTLY CORRECT SAID SHE + I STARTED FROM HOME BEFORE SIX REACHED LEATHERHEAD AT TWENTY PAST AND CAME IN BY THE FIRST TRAIN TO WATERLOO + SIR I CAN STAND THIS STRAIN NO LONGER I SHALL GO MAD IF IT CONTINUES + I HAVE NO ONE TO TURN TO NONE SAVE ONLY ONE WHO CARES FOR ME AND HE POOR FELLOW CAN BE OF LITTLE AID + I HAVE HEARD OF YOU MR. HOLMES I HAVE HEARD OF YOU FROM MRS. FARINTOSH WHOM YOU HELPED IN THE HOUR OF HER SORE NEED + IT WAS FROM HER THAT I HAD YOUR ADDRESS + OH SIR DO YOU NOT THINK THAT YOU COULD HELP ME TOO AND AT LEAST THROW A LITTLE LIGHT THROUGH THE DENSE DARKNESS WHICH SURROUNDS ME + AT PRESENT IT IS OUT OF MY POWER TO REWARD YOU FOR YOUR SERVICES BUT IN A MONTH OR SIX WEEKS I SHALL BE MARRIED WITH THE CONTROL OF MY OWN INCOME AND THEN AT LEAST YOU SHALL NOT FIND ME UNGRATEFUL QUOTE + HOLMES TURNED TO HIS DESK AND UNLOCKING IT DREW OUT A SMALL CASE BOOK WHICH HE CONSULTED + FARINTOSH SAID HE + AH YES I RECALL THE CASE IT WAS CONCERNED WITH AN OPAL TIARA + I THINK IT WAS BEFORE YOUR TIME WATSON + I CAN ONLY SAY MADAM THAT I SHALL BE HAPPY TO DEVOTE THE SAME CARE TO YOUR CASE AS I DID TO THAT OF YOUR FRIEND + AS TO REWARD MY PROFESSION IS ITS OWN REWARD BUT YOU ARE AT LIBERTY TO DEFRAY WHATEVER EXPENSES I MAY BE PUT TO AT THE TIME WHICH SUITS YOU BEST + AND NOW I BEG THAT YOU WILL LAY BEFORE US EVERYTHING THAT MAY HELP US IN FORMING AN OPINION UPON THE MATTER + ALAS REPLIED OUR VISITOR THE VERY HORROR OF MY SITUATION LIES IN THE FACT THAT MY FEARS ARE SO VAGUE AND MY SUSPICIONS DEPEND SO ENTIRELY UPON SMALL POINTS WHICH MIGHT SEEM TRIVIAL TO ANOTHER THAT EVEN HE TO WHOM OF ALL OTHERS I HAVE A RIGHT TO LOOK FOR HELP AND ADVICE LOOKS UPON ALL THAT I TELL HIM ABOUT IT AS THE FANCIES OF A NERVOUS WOMAN + HE DOES NOT SAY SO BUT I CAN READ IT FROM HIS SOOTHING ANSWERS AND AVERTED EYES + BUT I HAVE HEARD MR. HOLMES THAT YOU CAN SEE DEEPLY INTO THE MANIFOLD WICKEDNESS OF THE HUMAN HEART + YOU MAY ADVISE ME HOW TO WALK AMID THE DANGERS WHICH ENCOMPASS ME + QUOTE I AM ALL ATTENTION MADAM QUOTE + MY NAME IS HELEN STONER AND I AM LIVING WITH MY STEPFATHER WHO IS THE LAST SURVIVOR OF ONE OF THE OLDEST SAXON FAMILIES IN ENGLAND THE ROYLOTTS OF STOKE MORAN ON THE WESTERN BORDER OF SURREY + HOLMES NODDED HIS HEAD + THE NAME IS FAMILIAR TO ME SAID HE + THE FAMILY WAS AT ONE TIME AMONG THE RICHEST IN ENGLAND AND THE ESTATES EXTENDED OVER THE BORDERS INTO BERKSHIRE IN THE NORTH AND HAMPSHIRE IN THE WEST + IN THE LAST CENTURY HOWEVER FOUR SUCCESSIVE HEIRS WERE OF A DISSOLUTE AND WASTEFUL DISPOSITION AND THE FAMILY RUIN WAS EVENTUALLY COMPLETED BY A GAMBLER IN THE DAYS OF THE REGENCY + NOTHING WAS LEFT SAVE A FEW ACRES OF GROUND AND THE TWO HUNDRED YEAR OLD HOUSE WHICH IS ITSELF CRUSHED UNDER A HEAVY MORTGAGE + THE LAST SQUIRE DRAGGED OUT HIS EXISTENCE THERE LIVING THE HORRIBLE LIFE OF AN ARISTOCRATIC PAUPER BUT HIS ONLY SON MY STEPFATHER SEEING THAT HE MUST ADAPT HIMSELF TO THE NEW CONDITIONS OBTAINED AN ADVANCE FROM A RELATIVE WHICH ENABLED HIM TO TAKE A MEDICAL DEGREE AND WENT OUT TO CALCUTTA WHERE BY HIS PROFESSIONAL SKILL AND HIS FORCE OF CHARACTER HE ESTABLISHED A LARGE PRACTICE + IN A FIT OF ANGER HOWEVER CAUSED BY SOME ROBBERIES WHICH HAD BEEN PERPETRATED IN THE HOUSE HE BEAT HIS NATIVE BUTLER TO DEATH AND NARROWLY ESCAPED A CAPITAL SENTENCE + AS IT WAS HE SUFFERED A LONG TERM OF IMPRISONMENT AND AFTERWARDS RETURNED TO ENGLAND A MOROSE AND DISAPPOINTED MAN + WHEN DOCTOR ROYLOTT WAS IN INDIA HE MARRIED MY MOTHER MRS. STONER THE YOUNG WIDOW OF MAJOR GENERAL STONER OF THE BENGAL ARTILLERY + MY SISTER JULIA AND I WERE TWINS AND WE WERE ONLY TWO YEARS OLD AT THE TIME OF MY MOTHER'S RE MARRIAGE + SHE HAD A CONSIDERABLE SUM OF MONEY NOT LESS THAN LOOO POUNDS A YEAR AND THIS SHE BEQUEATHED TO DOCTOR ROYLOTT ENTIRELY WHILE WE RESIDED WITH HIM WITH A PROVISION THAT A CERTAIN ANNUAL SUM SHOULD BE ALLOWED TO EACH OF US IN THE EVENT OF OUR MARRIAGE + SHORTLY AFTER OUR RETURN TO ENGLAND MY MOTHER DIED SHE WAS KILLED EIGHT YEARS AGO IN A RAILWAY ACCIDENT NEAR CREWE + DOCTOR ROYLOTT THEN ABANDONED HIS ATTEMPTS TO ESTABLISH HIMSELF IN PRACTICE IN LONDON AND TOOK US TO LIVE WITH HIM IN THE OLD ANCESTRAL HOUSE AT STOKE MORAN + THE MONEY WHICH MY MOTHER HAD LEFT WAS ENOUGH FOR ALL OUR WANTS AND THERE SEEMED TO BE NO OBSTACLE TO OUR HAPPINESS + BUT A TERRIBLE CHANGE CAME OVER OUR STEPFATHER ABOUT THIS TIME + INSTEAD OF MAKING FRIENDS AND EXCHANGING VISITS WITH OUR NEIGHBOURS WHO HAD AT FIRST BEEN OVERJOYED TO SEE A ROYLOTT OF STOKE MORAN BACK IN THE OLD FAMILY SEAT HE SHUT HIMSELF UP IN HIS HOUSE AND SELDOM CAME OUT SAVE TO INDULGE IN FEROCIOUS QUARRELS WITH WHOEVER MIGHT CROSS HIS PATH + VIOLENCE OF TEMPER APPROACHING TO MANIA HAS BEEN HEREDITARY IN THE MEN OF THE FAMILY AND IN MY STEPFATHER'S CASE IT HAD I BELIEVE BEEN INTENSIFIED BY HIS LONG RESIDENCE IN THE TROPICS + A SERIES OF DISGRACEFUL BRAWLS TOOK PLACE TWO OF WHICH ENDED IN THE POLICECOURT UNTIL AT LAST HE BECAME THE TERROR OF THE VILLAGE AND THE FOLKS WOULD FLY AT HIS APPROACH FOR HE IS A MAN OF IMMENSE STRENGTH AND ABSOLUTELY UNCONTROLLABLE IN HIS ANGER + QUOTE LAST WEEK HE HURLED THE LOCAL BLACKSMITH OVER A PARAPET INTO A STREAM AND IT WAS ONLY BY PAYING OVER ALL THE MONEY WHICH I COULD GATHER TOGETHER THAT I WAS ABLE TO AVERT ANOTHER PUBLIC EXPOSURE + HE HAD NO FRIENDS AT ALL SAVE THE WANDERING GYPSIES AND HE WOULD GIVE THESE VAGABONDS LEAVE TO ENCAMP UPON THE FEW ACRES OF BRAMBLE COVERED LAND WHICH REPRESENT THE FAMILY ESTATE AND WOULD ACCEPT IN RETURN THE HOSPITALITY OF THEIR TENTS WANDERING AWAY WITH THEM SOMETIMES FOR WEEKS ON END + HE HAS A PASSION ALSO FOR INDIAN ANIMALS WHICH ARE SENT OVER TO HIM BY A CORRESPONDENT AND HE HAS AT THIS MOMENT A CHEETAH AND A BABOON WHICH WANDER FREELY OVER HIS GROUNDS AND ARE FEARED BY THE VILLAGERS ALMOST AS MUCH AS THEIR MASTER + YOU CAN IMAGINE FROM WHAT I SAY THAT MY POOR SISTER JULIA AND I HAD NO GREAT PLEASURE IN OUR LIVES + NO SERVANT WOULD STAY WITH US AND FOR A LONG TIME WE DID ALL THE WORK OF THE HOUSE + SHE WAS BUT THIRTY AT THE TIME OF HER DEATH AND YET HER HAIR HAD ALREADY BEGUN TO WHITEN EVEN AS MINE HAS + YOUR SISTER IS DEAD THEN + SHE DIED JUST TWO YEARS AGO AND IT IS OF HER DEATH THAT I WISH TO SPEAK TO YOU + YOU CAN UNDERSTAND THAT LIVING THE LIFE WHICH I HAVE DESCRIBED WE WERE LITTLE LIKELY TO SEE ANYONE OF OUR OWN AGE AND POSITION + WE HAD HOWEVER AN AUNT MY MOTHER'S MAIDEN SISTER MISS HONORIA WESTPHAIL WHO LIVES NEAR HARROW AND WE WERE OCCASIONALLY ALLOWED TO PAY SHORT VISITS AT THIS LADY'S HOUSE + JULIA WENT THERE AT CHRISTMAS TWO YEARS AGO AND MET THERE A HALF PAY MAJOR OF MARINES TO WHOM SHE BECAME ENGAGED + MY STEPFATHER LEARNED OF THE ENGAGEMENT WHEN MY SISTER RETURNED AND OFFERED NO OBJECTION TO THE MARRIAGE BUT WLTHIN A FORTNIGHT OF THE DAY WHICH HAD BEEN FIXED FOR THE WEDDING THE TERRIBLE EVENT OCCURRED WHICH HAS DEPRIVED ME OF MY ONLY COMPANION + SHERLOCK HOLMES HAD BEEN LEANING BACK IN HIS CHAIR WITH HIS EYES CLOSED AND HIS HEAD SUNK IN A CUSHION BUT HE HALF OPENED HLS LIDS NOW AND GLANCED ACROSS AT HIS VISITOR + QUOTE PRAY BE PRECISE AS TO DETAILS QUOTE SAID HE + IT IS EASY FOR ME TO BE SO FOR EVERY EVENT OF THAT DREADFUL TIME IS SEARED INTO MY MEMORY + THE MANOR HOUSE IS AS I HAVE ALREADY SAID VERY OLD AND ONLY ONE WING IS NOW INHABITED + THE BEDROOMS IN THIS WING ARE ON THE GROUND FLOOR THE SITTING ROOMS BEING IN THE CENTRAL BLOCK OF THE BUILDINGS + OF THESE BEDROOMS THE FIRST IS DOCTOR ROYLOTT'S THE SECOND MY SISTER'S AND THE THIRD MY OWN + THERE IS NO COMMUNICATION BETWEEN THEM BUT THEY ALL OPEN OUT INTO THE SAME CORRIDOR + DO I MAKE MYSELF PLAIN + PERFECTLY SO + THE WINDOWS OF THE THREE ROOMS OPEN OUT UPON THE LAWN + THAT FATAL NIGHT DOCTOR ROYLOTT HAD GONE TO HIS ROOM EARLY THOUGH WE KNEW THAT HE HAD NOT RETIRED TO REST FOR MY SISTER WAS TROUBLED BY THE SMELL OF THE STRONG INDIAN CIGARS WHICH IT WAS HIS CUSTOM TO SMOKE + SHE LEFT HER ROOM THEREFORE AND CAME INTO MINE WHERE SHE SAT FOR SOME TIME CHATTING ABOUT HER APPROACHING WEDDING + AT ELEVEN O'CLOCK SHE ROSE TO LEAVE ME BUT SHE PAUSED AT THE DOOR AND LOOKED BACK + TELL ME HELEN SAID SHE HAVE YOU EVER HEARD ANYONE WHISTLE IN THE DEAD OF THE NIGHT + QUOTE NEVER SAID I + I SUPPOSE THAT YOU COULD NOT POSSIBLY WHISTLE YOURSELF IN YOUR SLEEP + CERTAINLY NOT + BUT WHY + BECAUSE DURING THE LAST FEW NIGHTS I HAVE ALWAYS ABOUT THREE IN THE MORNING HEARD A LOW CLEAR WHISTLE + I AM A LIGHT SLEEPER AND IT HAS AWAKENED ME + I CANNOT TELL WHERE IT CAME FROM PERHAPS FROM THE NEXT ROOM PERHAPS FROM THE LAWN + I THOUGHT THAT I WOULD JUST ASK YOU WHETHER YOU HAD HEARD IT + NO I HAVE NOT + IT MUST BE THOSE WRETCHED GYPSIES IN THE PLANTATION + VERY LIKELY + AND YET IF IT WERE ON THE LAWN I WONDER THAT YOU DID NOT HEAR IT ALSO + QUOTE AH BUT I SLEEP MORE HEAVILY THAN YOU + WELL IT IS OF NO GREAT CONSEQUENCE AT ANY RATE + SHE SMILED BACK AT ME CLOSED MY DOOR AND A FEW MOMENTS LATER I HEARD HER KEY TURN IN THE LOCK + INDEED SAID HOLMES + WAS IT YOUR CUSTOM ALWAYS TO LOCK YOURSELVES IN AT NIGHT + ALWAYS + QUOTE AND WHY QUOTE + I THINK THAT I MENTIONED TO YOU THAT THE DOCTOR KEPT A CHEETAH AND A BABOON + WE HAD NO FEELING OF SECURITY UNLESS OUR DOORS WERE LOCKED + QUITE SO + PRAY PROCEED WITH YOUR STATEMENT + I COULD NOT SLEEP THAT NIGHT + A VAGUE FEELING OF IMPENDING MISFORTUNE IMPRESSED ME + MY SISTER AND I YOU WILL RECOLLECT WERE TWINS AND YOU KNOW HOW SUBTLE ARE THE LINKS WHICH BIND TWO SOULS WHICH ARE SO CLOSELY ALLIED + IT WAS A WILD NIGHT + THE WIND WAS HOWLING OUTSIDE AND THE RAIN WAS BEATING AND SPLASHING AGAINST THE WINDOWS + SUDDENLY AMID ALL THE HUBBUB OF THE GALE THERE BURST FORTH THE WILD SCREAM OF A TERRIFIED WOMAN + I KNEW THAT IT WAS MY SISTER'S VOICE + I SPRANG FROM MY BED WRAPPED A SHAWL ROUND ME AND RUSHED INTO THE CORRIDOR + AS I OPENED MY DOOR I SEEMED TO HEAR A LOW WHISTLE SUCH AS MY SISTER DESCRIBED AND A FEW MOMENTS LATER A CLANGING SOUND AS IF A MASS OF METAL HAD FALLEN + AS I RAN DOWN THE PASSAGE MY SISTER'S DOOR WAS UNLOCKED AND REVOLVED SLOWLY UPON ITS HINGES + I STARED AT IT HORROR STRICKEN NOT KNOWING WHAT WAS ABOUT TO ISSUE FROM IT + BY THE LIGHT OF THE CORRIDOR LAMP I SAW MY SISTER APPEAR AT THE OPENING HER FACE BLANCHED WITH TERROR HER HANDS GROPING FOR HELP HER WHOLE FIGURE SWAYING TO AND FRO LIKE THAT OF A DRUNKARD + I RAN TO HER AND THREW MY ARMS ROUND HER BUT AT THAT MOMENT HER KNEES SEEMED TO GIVE WAY AND SHE FELL TO THE GROUND + SHE WRITHED AS ONE WHO IS IN TERRIBLE PAIN AND HER LIMBS WERE DREADFULLY CONVULSED + AT FIRST I THOUGHT THAT SHE HAD NOT RECOGNIZED ME BUT AS I BENT OVER HER SHE SUDDENLY SHRIEKED OUT IN A VOICE WHICH I SHALL NEVER FORGET OH MY GOD + HELEN + IT WAS THE BAND + THE SPECKLED BAND + THERE WAS SOMETHING ELSE WHICH SHE WOULD FAIN HAVE SAID AND SHE STABBED WITH HER FINGER INTO THE AIR IN THE DIRECTION OF THE DOCTOR'S ROOM BUT A FRESH CONVULSION SEIZED HER AND CHOKED HER WORDS + I RUSHED OUT CALLING LOUDLY FOR MY STEPFATHER AND I MET HIM HASTENING FROM HIS ROOM IN HIS DRESSING GOWN + WHEN HE REACHED MY SISTER'S SIDE SHE WAS UNCONSCIOUS AND THOUGH HE POURED BRANDY DOWN HER THROAT AND SENT FOR MEDICAL AID FROM THE VILLAGE ALL EFFORTS WERE IN VAIN FOR SHE SLOWLY SANK AND DIED WITHOUT HAVING RECOVERED HER CONSCIOUSNESS + SUCH WAS THE DREADFUL END OF MY BELOVED SISTER QUOTE + ONE MOMENT SAID HOLMES ARE YOU SURE ABOUT THIS WHISTLE AND METALLIC SOUND + COULD YOU SWEAR TO IT + THAT WAS WHAT THE COUNTY CORONER ASKED ME AT THE INQUIRY + IT IS MY STRONG IMPRESSION THAT I HEARD IT AND YET AMONG THE CRASH OF THE GALE AND THE CREAKING OF AN OLD HOUSE I MAY POSSIBLY HAVE BEEN DECEIVED + WAS YOUR SISTER DRESSED + QUOTE NO SHE WAS IN HER NIGHT DRESS + IN HER RIGHT HAND WAS FOUND THE CHARRED STUMP OF A MATCH AND IN HER LEFT A MATCH BOX + SHOWING THAT SHE HAD STRUCK A LIGHT AND LOOKED ABOUT HER WHEN THE ALARM TOOK PLACE + THAT IS IMPORTANT + AND WHAT CONCLUSIONS DID THE CORONER COME TO + HE INVESTIGATED THE CASE WITH GREAT CARE FOR DOCTOR ROYLOTT'S CONDUCT HAD LONG BEEN NOTORIOUS IN THE COUNTY BUT HE WAS UNABLE TO FIND ANY SATISFACTORY CAUSE OF DEATH + MY EVIDENCE SHOWED THAT THE DOOR HAD BEEN FASTENED UPON THE INNER SIDE AND THE WINDOWS WERE BLOCKED BY OLD FASHIONED SHUTTERS WITH BROAD IRON BARS WHICH WERE SECURED EVERY NIGHT + THE WALLS WERE CAREFULLY SOUNDED AND WERE SHOWN TO BE QUITE SOLID ALL ROUND AND THE FLOORING WAS ALSO THOROUGHLY EXAMINED WITH THE SAME RESULT + THE CHIMNEY IS WIDE BUT IS BARRED UP BY FOUR LARGE STAPLES + IT IS CERTAIN THEREFORE THAT MY SISTER WAS QUITE ALONE WHEN SHE MET HER END + BESIDES THERE WERE NO MARKS OF ANY VIOLENCE UPON HER + QUOTE HOW ABOUT POISON QUOTE + THE DOCTORS EXAMINED HER FOR IT BUT WITHOUT SUCCESS + WHAT DO YOU THINK THAT THIS UNFORTUNATE LADY DIED OF THEN + IT IS MY BELIEF THAT SHE DIED OF PURE FEAR AND NERVOUS SHOCK THOUGH WHAT IT WAS THAT FRIGHTENED HER I CANNOT IMAGINE + WERE THERE GYPSIES IN THE PLANTATION AT THE TIME + YES THERE ARE NEARLY ALWAYS SOME THERE + QUOTE AH AND WHAT DID YOU GATHER FROM THIS ALLUSION TO A BAND A SPECKLED BAND QUOTE + SOMETIMES I HAVE THOUGHT THAT IT WAS MERELY THE WILD TALK OF DELIRIUM SOMETIMES THAT IT MAY HAVE REFERRED TO SOME BAND OF PEOPLE PERHAPS TO THESE VERY GYPSIES IN THE PLANTATION + I DO NOT KNOW WHETHER THE SPOTTED HANDKERCHIEFS WHICH SO MANY OF THEM WEAR OVER THEIR HEADS MIGHT HAVE SUGGESTED THE STRANGE ADJECTIVE WHICH SHE USED + HOLMES SHOOK HIS HEAD LIKE A MAN WHO IS FAR FROM BEING SATISFIED + THESE ARE VERY DEEP WATERS SAID HE PRAY GO ON WITH YOUR NARRATIVE + TWO YEARS HAVE PASSED SINCE THEN AND MY LIFE HAS BEEN UNTIL LATELY LONELIER THAN EVER + A MONTH AGO HOWEVER A DEAR FRIEND WHOM I HAVE KNOWN FOR MANY YEARS HAS DONE ME THE HONOUR TO ASK MY HAND IN MARRIAGE + HIS NAME IS ARMITAGE PERCY ARMITAGE THE SECOND SON OF MR. ARMITAGE OF CRANE WATER NEAR READING + MY STEPFATHER HAS OFFERED NO OPPOSITION TO THE MATCH AND WE ARE TO BE MARRIED IN THE COURSE OF THE SPRING + TWO DAYS AGO SOME REPAIRS WERE STARTED IN THE WEST WING OF THE BUILDING AND MY BEDROOM WALL HAS BEEN PIERCED SO THAT I HAVE HAD TO MOVE INTO THE CHAMBER IN WHICH MY SISTER DIED AND TO SLEEP IN THE VERY BED IN WHICH SHE SLEPT + IMAGINE THEN MY THRILL OF TERROR WHEN LAST NIGHT AS I LAY AWAKE THINKING OVER HER TERRIBLE FATE I SUDDENLY HEARD IN THE SILENCE OF THE NIGHT THE LOW WHISTLE WHICH HAD BEEN THE HERALD OF HER OWN DEATH + I SPRANG UP AND LIT THE LAMP BUT NOTHING WAS TO BE SEEN IN THE ROOM + I WAS TOO SHAKEN TO GO TO BED AGAIN HOWEVER SO I DRESSED AND AS SOON AS IT WAS DAYLIGHT I SLIPPED DOWN GOT A DOG CART AT THE CROWN INN WHICH IS OPPOSITE AND DROVE TO LEATHERHEAD FROM WHENCE I HAVE COME ON THIS MORNING WITH THE ONE OBJECT OF SEEING YOU AND ASKING YOUR ADVICE + QUOTE YOU HAVE DONE WISELY QUOTE SAID MY FRIEND + BUT HAVE YOU TOLD ME ALL + YES ALL + MISS ROYLOTT YOU HAVE NOT + YOU ARE SCREENING YOUR STEPFATHER + WHY WHAT DO YOU MEAN + FOR ANSWER HOLMES PUSHED BACK THE FRILL OF BLACK LACE WHICH FRINGED THE HAND THAT LAY UPON OUR VISITOR'S KNEE + FIVE LITTLE LIVID SPOTS THE MARKS OF FOUR FINGERS AND A THUMB WERE PRINTED UPON THE WHITE WRIST + QUOTE YOU HAVE BEEN CRUELLY USED QUOTE SAID HOLMES + THE LADY COLOURED DEEPLY AND COVERED OVER HER INJURED WRIST + HE IS A HARD MAN SHE SAID AND PERHAPS HE HARDLY KNOWS HIS OWN STRENGTH + THERE WAS A LONG SILENCE DURING WHICH HOLMES LEANED HIS CHIN UPON HIS HANDS AND STARED INTO THE CRACKLING FIRE + THIS IS A VERY DEEP BUSINESS HE SAID AT LAST + THERE ARE A THOUSAND DETAILS WHICH I SHOULD DESIRE TO KNOW BEFORE I DECIDE UPON OUR COURSE OF ACTION + YET WE HAVE NOT A MOMENT TO LOSE + IF WE WERE TO COME TO STOKE MORAN TO DAY WOULD IT BE POSSIBLE FOR US TO SEE OVER THESE ROOMS WITHOUT THE KNOWLEDGE OF YOUR STEPFATHER + AS IT HAPPENS HE SPOKE OF COMING INTO TOWN TO DAY UPON SOME MOST IMPORTANT BUSINESS + IT IS PROBABLE THAT HE WILL BE AWAY ALL DAY AND THAT THERE WOULD BE NOTHING TO DISTURB YOU + WE HAVE A HOUSEKEEPER NOW BUT SHE IS OLD AND FOOLISH AND I COULD EASILY GET HER OUT OF THE WAY QUOTE + EXCELLENT + YOU ARE NOT AVERSE TO THIS TRIP WATSON + BY NO MEANS + THEN WE SHALL BOTH COME + WHAT ARE YOU GOING TO DO YOURSELF + QUOTE I HAVE ONE OR TWO THINGS WHICH I WOULD WISH TO DO NOW THAT I AM IN TOWN + BUT I SHALL RETURN BY THE TWELVE O'CLOCK TRAIN SO AS TO BE THERE IN TIME FOR YOUR COMING + AND YOU MAY EXPECT US EARLY IN THE AFTERNOON + I HAVE MYSELF SOME SMALL BUSINESS MATTERS TO ATTEND TO + WILL YOU NOT WAIT AND BREAKFAST + NO I MUST GO + MY HEART IS LIGHTENED ALREADY SINCE I HAVE CONFIDED MY TROUBLE TO YOU + I SHALL LOOK FORWARD TO SEEING YOU AGAIN THIS AFTERNOON + SHE DROPPED HER THICK BLACK VEIL OVER HER FACE AND GLIDED FROM THE ROOM + QUOTE AND WHAT DO YOU THINK OF IT ALL WATSON QUOTE ASKED SHERLOCK HOLMES LEANING BACK IN HIS CHAIR + IT SEEMS TO ME TO BE A MOST DARK AND SINISTER BUSINESS + DARK ENOUGH AND SINISTER ENOUGH + YET IF THE LADY IS CORRECT IN SAYING THAT THE FLOORING AND WALLS ARE SOUND AND THAT THE DOOR WINDOW AND CHIMNEY ARE IMPASSABLE THEN HER SISTER MUST HAVE BEEN UNDOUBTEDLY ALONE WHEN SHE MET HER MYSTERIOUS END + WHAT BECOMES THEN OF THESE NOCTURNAL WHISTLES AND WHAT OF THE VERY PECULIAR WORDS OF THE DYING WOMAN + I CANNOT THINK + QUOTE WHEN YOU COMBINE THE IDEAS OF WHISTLES AT NIGHT THE PRESENCE OF A BAND OF GYPSIES WHO ARE ON INTIMATE TERMS WITH THIS OLD DOCTOR THE FACT THAT WE HAVE EVERY REASON TO BELIEVE THAT THE DOCTOR HAS AN INTEREST IN PREVENTING HIS STEPDAUGHTER'S MARRIAGE THE DYING ALLUSION TO A BAND AND FINALLY THE FACT THAT MISS HELEN STONER HEARD A METALLIC CLANG WHICH MIGHT HAVE BEEN CAUSED BY ONE OF THOSE METAL BARS THAT SECURED THE SHUTTERS FALLING BACK INTO ITS PLACE I THINK THAT THERE IS GOOD GROUND TO THINK THAT THE MYSTERY MAY BE CLEARED ALONG THOSE LINES QUOTE + BUT WHAT THEN DID THE GYPSIES DO + I CANNOT IMAGINE + I SEE MANY OBJECTIONS TO ANY SUCH THEORY + AND SO DO I. IT IS PRECISELY FOR THAT REASON THAT WE ARE GOING TO STOKE MORAN THIS DAY + I WANT TO SEE WHETHER THE OBJECTIONS ARE FATAL OR IF THEY MAY BE EXPLAINED AWAY + BUT WHAT IN THE NAME OF THE DEVIL + THE EJACULATION HAD BEEN DRAWN FROM MY COMPANION BY THE FACT THAT OUR DOOR HAD BEEN SUDDENLY DASHED OPEN AND THAT A HUGE MAN HAD FRAMED HIMSELF IN THE APERTURE + HIS COSTUME WAS A PECULIAR MIXTURE OF THE PROFESSIONAL AND OF THE AGRICULTURAL HAVING A BLACK TOP HAT A LONG FROCK COAT AND A PAIR OF HIGH GAITERS WITH A HUNTING CROP SWINGING IN HIS HAND + SO TALL WAS HE THAT HIS HAT ACTUALLY BRUSHED THE CROSS BAR OF THE DOORWAY AND HIS BREADTH SEEMED TO SPAN IT ACROSS FROM SIDE TO SIDE + A LARGE FACE SEARED WITH A THOUSAND WRINKLES BURNED YELLOW WITH THE SUN AND MARKED WITH EVERY EVIL PASSION WAS TURNED FROM ONE TO THE OTHER OF US WHILE HIS DEEP SET BILE SHOT EYES AND HIS HIGH THIN FLESHLESS NOSE GAVE HIM SOMEWHAT THE RESEMBLANCE TO A FIERCE OLD BIRD OF PREY + QUOTE WHICH OF YOU IS HOLMES QUOTE ASKED THIS APPARITION + MY NAME SIR BUT YOU HAVE THE ADVANTAGE OF ME SAID MY COMPANION QUIETLY + I AM DOCTOR GRIMESBY ROYLOTT OF STOKE MORAN + INDEED DOCTOR SAID HOLMES BLANDLY + PRAY TAKE A SEAT + I WILL DO NOTHING OF THE KIND + MY STEPDAUGHTER HAS BEEN HERE + I HAVE TRACED HER + WHAT HAS SHE BEEN SAYING TO YOU QUOTE + IT IS A LITTLE COLD FOR THE TIME OF THE YEAR SAID HOLMES + WHAT HAS SHE BEEN SAYING TO YOU SCREAMED THE OLD MAN FURIOUSLY + BUT I HAVE HEARD THAT THE CROCUSES PROMISE WELL CONTINUED MY COMPANION IMPERTURBABLY + HA + YOU PUT ME OFF DO YOU SAID OUR NEW VISITOR TAKING A STEP FORWARD AND SHAKING HIS HUNTING CROP + QUOTE I KNOW YOU YOU SCOUNDREL + I HAVE HEARD OF YOU BEFORE + YOU ARE HOLMES THE MEDDLER + MY FRIEND SMILED + HOLMES THE BUSYBODY + HIS SMILE BROADENED + HOLMES THE SCOTLAND YARD JACK IN OFFICE + HOLMES CHUCKLED HEARTILY + YOUR CONVERSATION IS MOST ENTERTAINING SAID HE + WHEN YOU GO OUT CLOSE THE DOOR FOR THERE IS A DECIDED DRAUGHT + QUOTE I WILL GO WHEN I HAVE SAID MY SAY + DON'T YOU DARE TO MEDDLE WITH MY AFFAIRS + I KNOW THAT MISS STONER HAS BEEN HERE + I TRACED HER + I AM A DANGEROUS MAN TO FALL FOUL OF + SEE HERE + HE STEPPED SWIFTLY FORWARD SEIZED THE POKER AND BENT IT INTO A CURVE WITH HIS HUGE BROWN HANDS + SEE THAT YOU KEEP YOURSELF OUT OF MY GRIP HE SNARLED AND HURLING THE TWISTED POKER INTO THE FIREPLACE HE STRODE OUT OF THE ROOM + HE SEEMS A VERY AMIABLE PERSON SAID HOLMES LAUGHING + I AM NOT QUITE SO BULKY BUT IF HE HAD REMAINED I MIGHT HAVE SHOWN HIM THAT MY GRIP WAS NOT MUCH MORE FEEBLE THAN HIS OWN + AS HE SPOKE HE PICKED UP THE STEEL POKER AND WITH A SUDDEN EFFORT STRAIGHTENED IT OUT AGAIN + FANCY HIS HAVING THE INSOLENCE TO CONFOUND ME WITH THE OFFICIAL DETECTIVE FORCE + THIS INCIDENT GIVES ZEST TO OUR INVESTIGATION HOWEVER AND I ONLY TRUST THAT OUR LITTLE FRIEND WILL NOT SUFFER FROM HER IMPRUDENCE IN ALLOWING THIS BRUTE TO TRACE HER + AND NOW WATSON WE SHALL ORDER BREAKFAST AND AFTERWARDS I SHALL WALK DOWN TO DOCTORS' COMMONS WHERE I HOPE TO GET SOME DATA WHICH MAY HELP US IN THIS MATTER QUOTE + IT WAS NEARLY ONE O'CLOCK WHEN SHERLOCK HOLMES RETURNED FROM HIS EXCURSION + HE HELD IN HIS HAND A SHEET OF BLUE PAPER SCRAWLED OVER WITH NOTES AND FIGURES + I HAVE SEEN THE WILL OF THE DECEASED WIFE SAID HE + TO DETERMINE ITS EXACT MEANING I HAVE BEEN OBLIGED TO WORK OUT THE PRESENT PRICES OF THE INVESTMENTS WITH WHICH IT IS CONCERNED + THE TOTAL INCOME WHICH AT THE TIME OF THE WIFE'S DEATH WAS LITTLE SHORT OF ELEVEN HUNDRED POUNDS IS NOW THROUGH THE FALL IN AGRICULTURAL PRICES NOT MORE THAN SEVEN HUNDRED FIFTY POUNDS + EACH DAUGHTER CAN CLAIM AN INCOME OF TWO HUNDRED FIFTY POUNDS IN CASE OF MARRIAGE + IT IS EVIDENT THEREFORE THAT IF BOTH GIRLS HAD MARRIED THIS BEAUTY WOULD HAVE HAD A MERE PITTANCE WHILE EVEN ONE OF THEM WOULD CRIPPLE HIM TO A VERY SERIOUS EXTENT + MY MORNING'S WORK HAS NOT BEEN WASTED SINCE IT HAS PROVED THAT HE HAS THE VERY STRONGEST MOTIVES FOR STANDING IN THE WAY OF ANYTHING OF THE SORT + AND NOW WATSON THIS IS TOO SERIOUS FOR DAWDLING ESPECIALLY AS THE OLD MAN IS AWARE THAT WE ARE INTERESTING OURSELVES IN HIS AFFAIRS SO IF YOU ARE READY WE SHALL CALL A CAB AND DRIVE TO WATERLOO + I SHOULD BE VERY MUCH OBLIGED IF YOU WOULD SLIP YOUR REVOLVER INTO YOUR POCKET + AN ELEY'S NUMBER TWO IS AN EXCELLENT ARGUMENT WITH GENTLEMEN WHO CAN TWIST STEEL POKERS INTO KNOTS + THAT AND A TOOTH BRUSH ARE I THINK ALL THAT WE NEED + AT WATERLOO WE WERE FORTUNATE IN CATCHING A TRAIN FOR LEATHERHEAD WHERE WE HIRED A TRAP AT THE STATION INN AND DROVE FOR FOUR OR FIVE MILES THROUGH THE LOVELY SURREY LARIES + IT WAS A PERFECT DAY WITH A BRIGHT SUN AND A FEW FLEECY CLOUDS IN THE HEAVENS + THE TREES AND WAYSIDE HEDGES WERE JUST THROWING OUT THEIR FIRST GREEN SHOOTS AND THE AIR WAS FULL OF THE PLEASANT SMELL OF THE MOIST EARTH + TO ME AT LEAST THERE WAS A STRANGE CONTRAST BETWEEN THE SWEET PROMISE OF THE SPRING AND THIS SINISTER QUEST UPON WHICH WE WERE ENGAGED + MY COMPANION SAT IN THE FRONT OF THE TRAP HIS ARMS FOLDED HIS HAT PULLED DOWN OVER HIS EYES AND HIS CHIN SUNK UPON HIS BREAST BURIED IN THE DEEPEST THOUGHT + SUDDENLY HOWEVER HE STARTED TAPPED ME ON THE SHOULDER AND POINTED OVER THE MEADOWS + LOOK THERE SAID HE + A HEAVILY TIMBERED PARK STRETCHED UP IN A GENTLE SLOPE THICKENING MTO A GROVE AT THE HIGHEST POINT + FROM AMID THE BRANCHES THERE JUTTED OUT THE GRAY GABLES AND HIGH ROOF TREE OF A VERY OLD MANSION + STOKE MORAN SAID HE + QUOTE YES SIR THAT BE THE HOUSE OF DOCTOR GRIMESBY ROYLOTT QUOTE REMARKED THE DRIVER + THERE IS SOME BUILDING GOING ON THERE SAID HOLMES THAT IS WHERE WE ARE GOING + THERE'S THE VILLAGE SAID THE DRIVER POINTING TO A CLUSTER OF ROOFS SOME DISTANCE TO THE LEFT BUT IF YOU WANT TO GET TO THE HOUSE YOU'LL FIND IT SHORTER TO GET OVER THIS STILE AND SO BY THE FOOT PATH OVER THE FIELDS + THERE IT IS WHERE THE LADY IS WALKING + AND THE LADY I FANCY IS MISS STONER OBSERVED HOLMES SHADING HIS EYES + YES I THINK WE HAD BETTER DO AS YOU SUGGEST + WE GOT OFF PAID OUR FARE AND THE TRAP RATTLED BACK ON ITS WAY TO LEATHERHEAD + QUOTE I THOUGHT IT AS WELL QUOTE SAID HOLMES AS WE CLIMBED THE STILE QUOTE THAT THIS FELLOW SHOULD THINK WE HAD COME HERE AS ARCHITECTS OR ON SOME DEFINITE BUSINESS + IT MAY STOP HIS GOSSIP + GOOD AFTERNOON MISS STONER + YOU SEE THAT WE HAVE BEEN AS GOOD AS OUR WORD + OUR CLIENT OF THE MORNING HAD HURRIED FORWARD TO MEET US WITH A FACE WHICH SPOKE HER JOY + I HAVE BEEN WAITING SO EAGERLY FOR YOU SHE CRIED SHAKING HANDS WITH US WARMLY + ALL HAS TURNED OUT SPLENDIDLY + DOCTOR ROYLOTT HAS GONE TO TOWN AND IT IS UNLIKELY THAT HE WILL BE BACK BEFORE EVENING + WE HAVE HAD THE PLEASURE OF MAKING THE DOCTOR'S ACQUAINTANCE SAID HOLMES AND IN A FEW WORDS HE SKETCHED OUT WHAT HAD OCCURRED + MISS STONER TURNED WHITE TO THE LIPS AS SHE LISTENED + QUOTE GOOD HEAVENS QUOTE SHE CRIED QUOTE HE HAS FOLLOWED ME THEN QUOTE + SO IT APPEARS + HE IS SO CUNNING THAT I NEVER KNOW WHEN I AM SAFE FROM HIM + WHAT WILL HE SAY WHEN HE RETURNS + HE MUST GUARD HIMSELF FOR HE MAY FIND THAT THERE IS SOMEONE MORE CUNNING THAN HIMSELF UPON HIS TRACK + YOU MUST LOCK YOURSELF UP FROM HIM TO NIGHT + IF HE IS VIOLENT WE SHALL TAKE YOU AWAY TO YOUR AUNT'S AT HARROW + NOW WE MUST MAKE THE BEST USE OF OUR TIME SO KINDLY TAKE US AT ONCE TO THE ROOMS WHICH WE ARE TO EXAMINE + THE BUILDING WAS OF GRAY LICHEN BLOTCHED STONE WITH A HIGH CENTRAL PORTION AND TWO CURVING WINGS LIKE THE CLAWS OF A CRAB THROWN OUT ON EACH SIDE + IN ONE OF THESE WINGS THE WINDOWS WERE BROKEN AND BLOCKED WITH WOODEN BOARDS WHILE THE ROOF WAS PARTLY CAVED IN A PICTURE OF RUIN + THE CENTRAL PORTION WAS IN LITTLE BETTER REPAIR BUT THE RIGHT HAND BLOCK WAS COMPARATIVELY MODERN AND THE BLINDS IN THE WINDOWS WITH THE BLUE SMOKE CURLING UP FROM THE CHIMNEYS SHOWED THAT THIS WAS WHERE THE FAMILY RESIDED + SOME SCAFFOLDING HAD BEEN ERECTED AGAINST THE END WALL AND THE STONE WORK HAD BEEN BROKEN INTO BUT THERE WERE NO SIGNS OF ANY WORKMEN AT THE MOMENT OF OUR VISIT + HOLMES WALKED SLOWLY UP AND DOWN THE ILL TRIMMED LAWN AND EXAMINED WITH DEEP ATTENTION THE OUTSIDES OF THE WINDOWS + QUOTE THIS I TAKE IT BELONGS TO THE ROOM IN WHICH YOU USED TO SLEEP THE CENTRE ONE TO YOUR SISTER'S AND THE ONE NEXT TO THE MAIN BUILDING TO DOCTOR ROYLOTT'S CHAMBER QUOTE + EXACTLY SO + BUT I AM NOW SLEEPING IN THE MIDDLE ONE + PENDING THE ALTERATIONS AS I UNDERSTAND + BY THE WAY THERE DOES NOT SEEM TO BE ANY VERY PRESSING NEED FOR REPAIRS AT THAT END WALL + THERE WERE NONE + I BELIEVE THAT IT WAS AN EXCUSE TO MOVE ME FROM MY ROOM QUOTE + AH THAT IS SUGGESTIVE + NOW ON THE OTHER SIDE OF THIS NARROW WING RUNS THE CORRIDOR FROM WHICH THESE THREE ROOMS OPEN + THERE ARE WINDOWS IN IT OF COURSE + YES BUT VERY SMALL ONES + TOO NARROW FOR ANYONE TO PASS THROUGH + AS YOU BOTH LOCKED YOUR DOORS AT NIGHT YOUR ROOMS WERE UNAPPROACHABLE FROM THAT SIDE + NOW WOULD YOU HAVE THE KINDNESS TO GO INTO YOUR ROOM AND BAR YOUR SHUTTERS QUOTE + MISS STONER DID SO AND HOLMES AFTER A CAREFUL EXAMINATION THROUGH THE OPEN WINDOW ENDEAVOURED IN EVERY WAY TO FORCE THE SHUTTER OPEN BUT WITHOUT SUCCESS + THERE WAS NO SLIT THROUGH WHICH A KNIFE COULD BE PASSED TO RAISE THE BAR + THEN WITH HIS LENS HE TESTED THE HINGES BUT THEY WERE OF SOLID IRON BUILT FIRMLY INTO THE MASSIVE MASONRY + HUM SAID HE SCRATCHING HIS CHIN IN SOME PERPLEXITY MY THEORY CERTAINLY PRESENTS SOME DIFFICULTIES + NO ONE COULD PASS THESE SHUTTERS IF THEY WERE BOLTED + WELL WE SHALL SEE IF THE INSIDE THROWS ANY LIGHT UPON THE MATTER + A SMALL SLDE DOOR LED INTO THE WHITEWASHED CORRIDOR FROM WHICH THE THREE BEDROOMS OPENED + HOLMES REFUSED TO EXAMINE THE THIRD CHAMBER SO WE PASSED AT ONCE TO THE SECOND THAT IN WHICH MISS STONER WAS NOW SLEEPING AND IN WHICH HER SISTER HAD MET WITH HER FATE + IT WAS A HOMELY LITTLE ROOM WITH A LOW CEILING AND A GAPING FIREPLACE AFTER THE FASHION OF OLD COUNTRY HOUSES + A BROWN CHEST OF DRAWERS STOOD IN ONE CORNER A NARROW WHITECOUNTERPANED BED IN ANOTHER AND A DRESSING TABLE ON THE LEFT HAND SIDE OF THE WINDOW + THESE ARTICLES WITH TWO SMALL WICKER WORK CHAIRS MADE UP ALL THE FURNITURE IN THE ROOM SAVE FOR A SQUARE OF WILTON CARPET IN THE CENTRE + THE BOARDS ROUND AND THE PANELLING OF THE WALLS WERE OF BROWN WORM EATEN OAK SO OLD AND DISCOLOURED THAT IT MAY HAVE DATED FROM THE ORIGINAL BUILDING OF THE HOUSE + HOLMES DREW ONE OF THE CHAIRS INTO A CORNER AND SAT SLLENT WHILE HIS EYES TRAVELLED ROUND AND ROUND AND UP AND DOWN TAKING IN EVERY DETAIL OF THE APARTMENT + WHERE DOES THAT BELL COMMUNICATE WITH HE ASKED AT LAST POINTING TO A THICK BELT ROPE WHICH HUNG DOWN BESIDE THE BED THE TASSEL ACTUALLY LYING UPON THE PI LOW + IT GOES TO THE HOUSEKEEPER'S ROOM + IT LOOKS NEWER THAN THE OTHER THINGS + QUOTE YES IT WAS ONLY PUT THERE A COUPLE OF YEARS AGO QUOTE + YOUR SISTER ASKED FOR IT I SUPPOSE + NO I NEVER HEARD OF HER USING IT + WE USED ALWAYS TO GET WHAT WE WANTED FOR OURSELVES + INDEED IT SEEMED UNNECESSARY TO PUT SO NICE A BELL PULL THERE + YOU WILL EXCUSE ME FOR A FEW MINUTES WHILE I SATISFY MYSELF AS TO THIS FLOOR + HE THREW HIMSELF DOWN UPON HIS FACE WITH HIS LENS IN HIS HAND AND CRAWLED SWIFTLY BACKWARD AND FORWARD EXAMINING MINUTELY THE CRACKS BETWEEN THE BOARDS + THEN HE DLD THE SAME WITH THE WOOD WORK WITH WHICH THE CHAMBER WAS PANELLED + FINALLY HE WALKED OVER TO THE BED AND SPENT SOME TIME IN STARING AT IT AND IN RUNNING HIS EYE UP AND DOWN THE WALL + FINALLY HE TOOK THE BELL ROPE IN HIS HAND AND GAVE IT A BRISK TUG + QUOTE WHY IT'S A DUMMY QUOTE SAID HE + WON'T IT RING + NO IT IS NOT EVEN ATTACHED TO A WIRE + THIS IS VERY INTERESTING + YOU CAN SEE NOW THAT IT IS FASTENED TO A HOOK JUST ABOVE WHERE THE LITTLE OPENING FOR THE VENTILATOR IS + HOW VERY ABSURD + I NEVER NOTICED THAT BEFORE + QUOTE VERY STRANGE QUOTE MUTTERED HOLMES PULLING AT THE ROPE + THERE ARE ONE OR TWO VERY SINGULAR POINTS ABOUT THIS ROOM + FOR EXAMPLE WHAT A FOOL A BUILDER MUST BE TO OPEN A VENTILATOR INTO ANOTHER ROOM WHEN WITH THE SAME TROUBLE HE MIGHT HAVE COMMUNICATED WITH THE OUTSIDE AIR + THAT IS ALSO QUITE MODERN SAID THE LADY + DONE ABOUT THE SAME TIME AS THE BELL ROPE REMARKED HOLMES + YES THERE WERE SEVERA THREE QUARTERS LITTLE CHANGES CARRIED OUT ABOUT THAT TIME + QUOTE THEY SEEM TO HAVE BEEN OF A MOST INTERESTING CHARACTER DUMMY BELL ROPES AND VENTILATORS WHICH DO NOT VENTILATE + WITH YOUR PERMISSION MISS STONER WE SHALL NOW CARRY OUR RESEARCHES INTO THE INNER APARTMENT + DOCTOR GRIMESBY ROYLOTT'S CHAMBER WAS LARGER THAN THAT OF HIS STEPDAUGHTER BUT WAS AS PLAINLY FURNISHED + A CAMP BED A SMALL WOODEN SHELF FULL OF BOOKS MOSTLY OF A TECHNICAL CHARACTER AN ARMCHAIR BESIDE THE BED A PLAIN WOODEN CHAIR AGAINST THE WAIL A ROUND TABLE AND A LARGE IRON SAFE WERE THE PRINCIPAL THINGS WHICH MET THE EYE + HOLMES WALKED SLOWLY ROUND AND EXAMINED EACH AND ALL OF THEM WITH THE KEENEST INTEREST + WHAT'S IN HERE HE ASKED TAPPING THE SAFE + MY STEPFATHER'S BUSINESS PAPERS + OH YOU HAVE SEEN INSIDE THEN + ONLY ONCE SOME YEARS AGO + I REMEMBER THAT IT WAS FULL OF PAPERS QUOTE + THERE ISN'T A CAT IN IT FOR EXAMPLE + NUMBER + WHAT A STRANGE IDEA + WELL LOOK AT THIS + HE TOOK UP A SMALL SAUCER OF MILK WHICH STOOD ON THE TOP OF IT + NO WE DON'T KEEP A CAT + BUT THERE IS A CHEETAH AND A BABOON QUOTE + AH YES OF COURSE + WELL A CHEETAH IS JUST A BIG CAT AND YET A SAUCER OF MILK DOES NOT GO VERY FAR IN SATISFYING ITS WANTS I DARESAY + THERE IS ONE POINT WHICH I SHOULD WISH TO DETERMINE + HE SQUATTED DOWN IN FRONT OF THE WOODEN CHAIR AND EXAMINED THE SEAT OF IT WITH THE GREATEST ATTENTION + THANK YOU + THAT IS QUITE SETTLED SAID HE RISING AND PUTTING HIS LENS IN HIS POCKET + HELLO + HERE IS SOMETHING INTERESTING QUOTE + THE OBJECT WHICH HAD CAUGHT HIS EYE WAS A SMALL DOG LASH HUNG ON ONE CORNER OF THE BED + THE LASH HOWEVER WAS CURLED UPON ITSELF AND TIED SO AS TO MAKE A LOOP OF WHIPCORD + WHAT DO YOU MAKE OF THAT WATSON + IT'S A COMMON ENOUGH LASH + BUT I DON'T KNOW WHY IF SHOULD BE TIED + THAT IS NOT QUITE SO COMMON IS IT + AH ME IT'S A WICKED WORLD AND WHEN A CLEVER MAN TURNS HIS BRAINS TO CRIME IT IS THE WORST OF ALL + I THINK THAT I HAVE SEEN ENOUGH NOW MISS STONER AND WITH YOUR PERMISSION WE SHALL WALK OUT UPON THE LAWN + I HAD NEVER SEEN MY FRIEND'S FACE SO GRIM OR HIS BROW SO DARK AS IT WAS WHEN WE TURNED FROM THE SCENE OF THIS INVESTIGATION + WE HAD WALKED SEVERAL TIMES UP AND DOWN THE LAWN NEITHER MISS STONER NOR MYSELF LIKING TO BREAK IN UPON HIS THOUGHTS BEFORE HE ROUSED HIMSELF FROM HIS REVERIE + QUOTE IT IS VERY ESSENTIAL MISS STONER QUOTE SAID HE QUOTE THAT YOU SHOULD ABSOLUTELY FOLLOW MY ADVICE IN EVERY RESPECT QUOTE + I SHALL MOST CERTAINLY DO SO + THE MATTER IS TOO SERIOUS FOR ANY HESITATION + YOUR LIFE MAY DEPEND UPON YOUR COMPLIANCE + I ASSURE YOU THAT I AM IN YOUR HANDS + IN THE FIRST PLACE BOTH MY FRIEND AND I MUST SPEND THE NIGHT IN YOUR ROOM + BOTH MISS STONER AND I GAZED AT HIM IN ASTONISHMENT + QUOTE YES IT MUST BE SO + LET ME EXPLAIN + I BELIEVE THAT THAT IS THE VILLAGE INN OVER THERE + YES THAT IS THE CROWN + VERY GOOD + YOUR WINDOWS WOULD BE VISIBLE FROM THERE + CERTAINLY + QUOTE YOU MUST CONFINE YOURSELF TO YOUR ROOM ON PRETENCE OF A HEADACHE WHEN YOUR STEPFATHER COMES BACK + THEN WHEN YOU HEAR HIM RETIRE FOR THE NIGHT YOU MUST OPEN THE SHUTTERS OF YOUR WINDOW UNDO THE HASP PUT YOUR LAMP THERE AS A SIGNAL TO US AND THEN WITHDRAW QUIETLY WITH EVERYTHING WHICH YOU ARE LIKELY TO WANT INTO THE ROOM WHICH YOU USED TO OCCUPY + I HAVE NO DOUBT THAT IN SPITE OF THE REPAIRS YOU COULD MANAGE THERE FOR ONE NIGHT + OH YES EASILY + THE REST YOU WILL LEAVE IN OUR HANDS + BUT WHAT WILL YOU DO + WE SHALL SPEND THE NIGHT IN YOUR ROOM AND WE SHALL INVESTIGATE THE CAUSE OF THIS NOISE WHICH HAS DISTURBED YOU + QUOTE I BELIEVE MR. HOLMES THAT YOU HAVE ALREADY MADE UP YOUR MIND QUOTE SAID MISS STONER LAYING HER HAND UPON MY COMPANION'S SLEEVE + PERHAPS I HAVE + THEN FOR PITY'S SAKE TELL ME WHAT WAS THE CAUSE OF MY SISTER'S DEATH + I SHOULD PREFER TO HAVE CLEARER PROOFS BEFORE I SPEAK + YOU CAN AT LEAST TELL ME WHETHER MY OWN THOUGHT IS CORRECT AND IF SHE DIED FROM SOME SUDDEN FRIGHT + NO I DO NOT THINK SO + I THINK THAT THERE WAS PROBABLY SOME MORE TANGIBLE CAUSE + AND NOW MISS STONER WE MUST LEAVE YOU FOR IF DOCTOR ROYLOTT RETURNED AND SAW US OUR JOURNEY WOULD BE IN VAIN + GOOD BYE AND BE BRAVE FOR IF YOU WILL DO WHAT I HAVE TOLD YOU YOU MAY REST ASSURED THAT WE SHALL SOON DRIVE AWAY THE DANGERS THAT THREATEN YOU QUOTE + SHERLOCK HOLMES AND I HAD NO DIFFICULTY IN ENGAGING A BEDROOM AND SITTING ROOM AT THE CROWN INN + THEY WERE ON THE UPPER FLOOR AND FROM OUR WINDOW WE COULD COMMAND A VIEW OF THE AVENUE GATE AND OF THE INHABITED WING OF STOKE MORAN MANOR HOUSE + AT DUSK WE SAW DOCTOR GRIMESBY ROYLOTT DRIVE PAST HIS HUGE FORM LOOMING UP BESIDE THE LITTLE FIGURE OF THE LAD WHO DROVE HIM + THE BOY HAD SOME SLIGHT DIFFICULTY IN UNDOING THE HEAVY IRON GATES AND WE HEARD THE HOARSE ROAR OF THE DOCTOR'S VOICE AND SAW THE FURY WITH WHICH HE SHOOK HIS CLINCHED FISTS AT HIM + THE TRAP DROVE ON AND A FEW MINUTES LATER WE SAW A SUDDEN LIGHT SPRING UP AMONG THE TREES AS THE LAMP WAS LIT IN ONE OF THE SITTING ROOMS + DO YOU KNOW WATSON SAID HOLMES AS WE SAT TOGETHER IN THE GATHERING DARKNESS I HAVE REALLY SOME SCRUPLES AS TO TAKING YOU TO NIGHT + THERE IS A DISTINCT ELEMENT OF DANGER + CAN I BE OF ASSISTANCE + YOUR PRESENCE MIGHT BE INVALUABLE + THEN I SHALL CERTAINLY COME + QUOTE IT IS VERY KIND OF YOU QUOTE + YOU SPEAK OF DANGER + YOU HAVE EVIDENTLY SEEN MORE IN THESE ROOMS THAN WAS VISIBLE TO ME + NO BUT I FANCY THAT I MAY HAVE DEDUCED A LITTLE MORE + I IMAGINE THAT YOU SAW ALL THAT I DID + I SAW NOTHING REMARKABLE SAVE THE BELL ROPE AND WHAT PURPOSE THAT COULD ANSWER I CONFESS IS MORE THAN I CAN IMAGINE + QUOTE YOU SAW THE VENTILATOR TOO QUOTE + YES BUT I DO NOT THINK THAT IT IS SUCH A VERY UNUSUAL THING TO HAVE A SMALL OPENING BETWEEN TWO ROOMS + IT WAS SO SMALL THAT A RAT COULD HARDLY PASS THROUGH + I KNEW THAT WE SHOULD FIND A VENTILATOR BEFORE EVER WE CAME TO STOKE MORAN + MY DEAR HOLMES + OH YES I DID + YOU REMEMBER IN HER STATEMENT SHE SAID THAT HER SISTER COULD SMELL DOCTOR ROYLOTT'S CIGAR + NOW OF COURSE THAT SUGGESTED AT ONCE THAT THERE MUST BE A COMMUNICATION BETWEEN THE TWO ROOMS + IT COULD ONLY BE A SMALL ONE OR IT WOULD HAVE BEEN REMARKED UPON AT THE CORONER'S INQUIRY + I DEDUCED A VENTILATOR QUOTE + BUT WHAT HARM CAN THERE BE IN THAT + WELL THERE IS AT LEAST A CURIOUS COINCIDENCE OF DATES + A VENTILATOR IS MADE A CORD IS HUNG AND A LADY WHO SLEEPS IN THE BED DIES + DOES NOT THAT STRIKE YOU + I CANNOT AS YET SEE ANY CONNECTION + DID YOU OBSERVE ANYTHING VERY PECULIAR ABOUT THAT BED + QUOTE NUMBER QUOTE + IT WAS CLAMPED TO THE FLOOR + DID YOU EVER SEE A BED FASTENED LIKE THAT BEFORE + I CANNOT SAY THAT I HAVE + THE LADY COULD NOT MOVE HER BED + IT MUST ALWAYS BE IN THE SAME RELATIVE POSITION TO THE VENTILATOR AND TO THE ROPE OR SO WE MAY CALL IT SINCE IT WAS CLEARLY NEVER MEANT FOR A BELL PULL + QUOTE HOLMES QUOTE I CRIED QUOTE I SEEM TO SEE DIMLY WHAT YOU ARE HINTING AT + WE ARE ONLY JUST IN TIME TO PREVENT SOME SUBTLE AND HORRIBLE CRIME + SUBTLE ENOUGH AND HORRIBLE ENOUGH + WHEN A DOCTOR DOES GO WRONG HE IS THE FIRST OF CRIMINALS + HE HAS NERVE AND HE HAS KNOWLEDGE + PALMER AND PRITCHARD WERE AMONG THE HEADS OF THEIR PROFESSION + THIS MAN STRIKES EVEN DEEPER BUT I THINK WATSON THAT WE SHALL BE ABLE TO STRIKE DEEPER STILL + BUT WE SHALL HAVE HORRORS ENOUGH BEFORE THE NIGHT IS OVER FOR GOODNESS' SAKE LET US HAVE A QUIET PIPE AND TURN OUR MINDS FOR A FEW HOURS TO SOMETHING MORE CHEERFUL + ABOUT NINE O'CLOCK THE LIGHT AMONG THE TREES WAS EXTINGUISHED AND ALL WAS DARK IN THE DIRECTION OF THE MANOR HOUSE + TWO HOURS PASSED SLOWLY AWAY AND THEN SUDDENLY JUST AT THE STROKE OF ELEVEN A SINGLE BRIGHT LIGHT SHONE OUT RIGHT IN FRONT OF US + THAT IS OUR SIGNAL SAID HOLMES SPRINGING TO HIS FEET IT COMES FROM THE MIDDLE WINDOW + AS WE PASSED OUT HE EXCHANGED A FEW WORDS WITH THE LANDLORD EXPLAINING THAT WE WERE GOING ON A LATE VISIT TO AN ACQUAINTANCE AND THAT IT WAS POSSIBLE THAT WE MIGHT SPEND THE NIGHT THERE + A MOMENT LATER WE WERE OUT ON THE DARK ROAD A CHILL WIND BLOWING IN OUR FACES AND ONE YELLOW LIGHT TWINKLING IN FRONT OF US THROUGH THE GLOOM TO GUIDE US ON OUR SOMBRE ERRAND + THERE WAS LITTLE DIFFICULTY IN ENTERING THE GROUNDS FOR UNREPAIRED BREACHES GAPED IN THE OLD PARK WALL + MAKING OUR WAY AMONG THE TREES WE REACHED THE LAWN CROSSED IT AND WERE ABOUT TO ENTER THROUGH THE WINDOW WHEN OUT FROM A CLUMP OF LAUREL BUSHES THERE DARTED WHAT SEEMED TO BE A HIDEOUS AND DISTORTED CHILD WHO THREW ITSELF UPON THE GRASS WITH WRITHING LIMBS AND THEN RAN SWIFTLY ACROSS THE LAWN INTO THE DARKNESS + MY GOD + I WHISPERED QUOTE DID YOU SEE IT QUOTE + HOLMES WAS FOR THE MOMENT AS STARTLED AS I. HIS HAND CLOSED LIKE A VISE UPON MY WRIST IN HIS AGITATION + THEN HE BROKE INTO A LOW LAUGH AND PUT HIS LIPS TO MY EAR + IT IS A NICE HOUSEHOLD HE MURMURED + THAT IS THE BABOON + I HAD FORGOTTEN THE STRANGE PETS WHICH THE DOCTOR AFFECTED + THERE WAS A CHEETAH TOO PERHAPS WE MIGHT FIND IT UPON OUR SHOULDERS AT ANY MOMENT + I CONFESS THAT I FELT EASIER IN MY MIND WHEN AFTER FOLLOWING HOLMES'S EXAMPLE AND SLIPPING OFF MY SHOES I FOUND MYSELF INSIDE THE BEDROOM + MY COMPANION NOISELESSLY CLOSED THE SHUTTERS MOVED THE LAMP ONTO THE TABLE AND CAST HIS EYES ROUND THE ROOM + ALL WAS AS WE HAD SEEN IT IN THE DAYTIME + THEN CREEPING UP TO ME AND MAKING A TRUMPET OF HIS HAND HE WHISPERED INTO MY EAR AGAIN SO GENTLY THAT IT WAS ALL THAT I COULD DO TO DISTINGUISH THE WORDS + THE LEAST SOUND WOULD BE FATAL TO OUR PLANS + I NODDED TO SHOW THAT I HAD HEARD + WE MUST SIT WITHOUT LIGHT + HE WOULD SEE IT THROUGH THE VENTILATOR + I NODDED AGAIN + QUOTE DO NOT GO ASLEEP YOUR VERY LIFE MAY DEPEND UPON IT + HAVE YOUR PISTOL READY IN CASE WE SHOULD NEED IT + I WILL SIT ON THE SIDE OF THE BED AND YOU IN THAT CHAIR + I TOOK OUT MY REVOLVER AND LAID IT ON THE CORNER OF THE TABLE + HOLMES HAD BROUGHT UP A LONG THIN CANE AND THIS HE PLACED UPON THE BED BESIDE HIM + BY IT HE LAID THE BOX OF MATCHES AND THE STUMP OF A CANDLE + THEN HE TURNED DOWN THE LAMP AND WE WERE LEFT IN DARKNESS + HOW SHALL I EVER FORGET THAT DREADFUL VIGIL + I COULD NOT HEAR A SOUND NOT EVEN THE DRAWING OF A BREATH AND YET I KNEW THAT MY COMPANION SAT OPEN EYED WITHIN A FEW FEET OF ME IN THE SAME STATE OF NERVOUS TENSION IN WHICH I WAS MYSELF + THE SHUTTERS CUT OFF THE LEAST RAY OF LIGHT AND WE WAITED IN ABSOLUTE DARKNESS + FROM OUTSIDE CAME THE OCCASIONAL CRY OF A NIGHT BIRD AND ONCE AT OUR VERY WINDOW A LONG DRAWN CATLIKE WHINE WHICH TOLD US THAT THE CHEETAH WAS INDEED AT LIBERTY + FAR AWAY WE COULD HEAR THE DEEP TONES OF THE PARISH CLOCK WHICH BOOMED OUT EVERY QUARTER OF AN HOUR + HOW LONG THEY SEEMED THOSE QUARTERS + TWELVE STRUCK AND ONE AND TWO AND THREE AND STILL WE SAT WAITING SILENTLY FOR WHATEVER MIGHT BEFALL + SUDDENLY THERE WAS THE MOMENTARY GLEAM OF A LIGHT UP IN THE DIRECTION OF THE VENTILATOR WHICH VANISHED IMMEDIATELY BUT WAS SUCCEEDED BY A STRONG SMELL OF BURNING OIL AND HEATED METAL + SOMEONE IN THE NEXT ROOM HAD LIT A DARK LANTERN + I HEARD A GENTLE SOUND OF MOVEMENT AND THEN ALL WAS SILENT ONCE MORE THOUGH THE SMELL GREW STRONGER + FOR HALF AN HOUR I SAT WITH STRAINING EARS + THEN SUDDENLY ANOTHER SOUND BECAME AUDIBLE A VERY GENTLE SOOTHING SOUND LIKE THAT OF A SMALL JET OF STEAM ESCAPING CONTINUALLY FROM A KETTLE + THE INSTANT THAT WE HEARD IT HOLMES SPRANG FROM THE BED STRUCK A MATCH AND LASHED FURIOUSLY WITH HIS CANE AT THE BELL PULL + YOU SEE IT WATSON HE YELLED + YOU SEE IT + BUT I SAW NOTHING + AT THE MOMENT WHEN HOLMES STRUCK THE LIGHT I HEARD A LOW CLEAR WHISTLE BUT THE SUDDEN GLARE FLASHING INTO MY WEARY EYES MADE IT IMPOSSIBLE FOR ME TO TELL WHAT IT WAS AT WHICH MY FRIEND LASHED SO SAVAGELY + I COULD HOWEVER SEE THAT HIS FACE WAS DEADLY PALE AND FILLED WITH HORROR AND LOATHING + HE HAD CEASED TO STRIKE AND WAS GAZING UP AT THE VENTILATOR WHEN SUDDENLY THERE BROKE FROM THE SILENCE OF THE NIGHT THE MOST HORRIBLE CRY TO WHICH I HAVE EVER LISTENED + IT SWELLED UP LOUDER AND LOUDER A HOARSE YELL OF PAIN AND FEAR AND ANGER ALL MINGLED IN THE ONE DREADFUL SHRIEK + THEY SAY THAT AWAY DOWN IN THE VILLAGE AND EVEN IN THE DISTANT PARSONAGE THAT CRY RAISED THE SLEEPERS FROM THEIR BEDS + IT STRUCK COLD TO OUR HEARTS AND I STOOD GAZING AT HOLMES AND HE AT ME UNTIL THE LAST ECHOES OF IT HAD DIED AWAY INTO THE SILENCE FROM WHICH IT ROSE + WHAT CAN IT MEAN + I GASPED + IT MEANS THAT IT IS ALL OVER HOLMES ANSWERED + QUOTE AND PERHAPS AFTER ALL IT IS FOR THE BEST + TAKE YOUR PISTOL AND WE WILL ENTER DOCTOR ROYLOTT'S ROOM + WITH A GRAVE FACE HE LIT THE LAMP AND LED THE WAY DOWN THE CORRIDOR + TWICE HE STRUCK AT THE CHAMBER DOOR WITHOUT ANY REPLY FROM WITHIN + THEN HE TURNED THE HANDLE AND ENTERED I AT HIS HEELS WITH THE COCKED PISTOL IN MY HAND + IT WAS A SINGULAR SIGHT WHICH MET OUR EYES + ON THE TABLE STOOD A DARK LANTERN WITH THE SHUTTER HALF OPEN THROWING A BRILLIANT BEAM OF LIGHT UPON THE IRON SAFE THE DOOR OF WHICH WAS AJAR + BESIDE THIS TABLE ON THE WOODEN CHAIR SAT DOCTOR GRIMESBY ROYLOTT CLAD IN A LONG GRAY DRESSING GOWN HIS BARE ANKLES PROTRUDING BENEATH AND HIS FEET THRUST INTO RED HEELLESS TURKISH SLIPPERS + ACROSS HIS LAP LAY THE SHORT STOCK WITH THE LONG LASH WHICH WE HAD NOTICED DURING THE DAY + HIS CHIN WAS COCKED UPWARD AND HIS EYES WERE FIXED IN A DREADFUL RIGID STARE AT THE CORNER OF THE CEILING + ROUND HIS BROW HE HAD A PECULIAR YELLOW BAND WITH BROWNISH SPECKLES WHICH SEEMED TO BE BOUND TIGHTLY ROUND HIS HEAD + AS WE ENTERED HE MADE NEITHER SOUND NOR MOTION + THE BAND THE SPECKLED BAND WHISPERED HOLMES + I TOOK A STEP FORWARD + IN AN INSTANT HIS STRANGE HEADGEAR BEGAN TO MOVE AND THERE REARED ITSELF FROM AMONG HIS HAIR THE SQUAT DIAMOND SHAPED HEAD AND PUFFED NECK OF A LOATHSOME SERPENT + IT IS A SWAMP ADDER CRIED HOLMES THE DEADLIEST SNAKE IN INDIA + HE HAS DIED WITHIN TEN SECONDS OF BEING BITTEN + VIOLENCE DOES IN TRUTH RECOIL UPON THE VIOLENT AND THE SCHEMER FALLS INTO THE PIT WHICH HE DIGS FOR ANOTHER + LET US THRUST THIS CREATURE BACK INTO ITS DEN AND WE CAN THEN REMOVE MISS STONER TO SOME PLACE OF SHELTER AND LET THE COUNTY POLICE KNOW WHAT HAS HAPPENED + AS HE SPOKE HE DREW THE DOG WHIP SWIFTLY FROM THE DEAD MAN'S LAP AND THROWING THE NOOSE ROUND THE REPTILE'S NECK HE DREW IT FROM ITS HORRID PERCH AND CARRYING IT AT ARM'S LENGTH THREW IT INTO THE IRON SAFE WHICH HE CLOSED UPON IT + SUCH ARE THE TRUE FACTS OF THE DEATH OF DOCTOR GRIMESBY ROYLOTT OF STOKE MORAN + IT IS NOT NECESSARY THAT I SHOULD PROLONG A NARRATIVE WHICH HAS ALREADY RUN TO TOO GREAT A LENGTH BY TELLING HOW WE BROKE THE SAD NEWS TO THE TERRIFIED GIRL HOW WE CONVEYED HER BY THE MORNING TRAIN TO THE CARE OF HER GOOD AUNT AT HARROW OF HOW THE SLOW PROCESS OF OFFICIAL INQUIRY CAME TO THE CONCLUSION THAT THE DOCTOR MET HIS FATE WHILE INDISCREETLY PLAYING WITH A DANGEROUS PET + THE LITTLE WHICH I HAD YET TO LEARN OF THE CASE WAS TOLD ME BY SHERLOCK HOLMES AS WE TRAVELLED BACK NEXT DAY + I HAD SAID HE COME TO AN ENTIRELY ERRONEOUS CONCLUSION WHICH SHOWS MY DEAR WATSON HOW DANGEROUS IT ALWAYS IS TO REASON FROM INSUFFICIENT DATA + THE PRESENCE OF THE GYPSIES AND THE USE OF THE WORD BAND WHICH WAS USED BY THE POOR GIRL NO DOUBT TO EXPLAIN THE APPEARANCE WHICH SHE HAD CAUGHT A HURRIED GLIMPSE OF BY THE LIGHT OF HER MATCH WERE SUFFICIENT TO PUT ME UPON AN ENTIRELY WRONG SCENT + I CAN ONLY CLAIM THE MERIT THAT I INSTANTLY RECONSIDERED MY POSITION WHEN HOWEVER IT BECAME CLEAR TO ME THAT WHATEVER DANGER THREATENED AN OCCUPANT OF THE ROOM COULD NOT COME EITHER FROM THE WINDOW OR THE DOOR + MY ATTENTION WAS SPEEDILY DRAWN AS I HAVE ALREADY REMARKED TO YOU TO THIS VENTILATOR AND TO THE BELL ROPE WHICH HUNG DOWN TO THE BED + THE DISCOVERY THAT THIS WAS A DUMMY AND THAT THE BED WAS CLAMPED TO THE FLOOR INSTANTLY GAVE RISE TO THE SUSPICION THAT THE ROPE WAS THERE AS A BRIDGE FOR SOMETHING PASSING THROUGH THE HOLE AND COMING TO THE BED + THE IDEA OF A SNAKE INSTANTLY OCCURRED TO ME AND WHEN I COUPLED IT WITH MY KNOWLEDGE THAT THE DOCTOR WAS FURNISHED WITH A SUPPLY OF CREATURES FROM INDIA I FELT THAT I WAS PROBABLY ON THE RIGHT TRACK + THE IDEA OF USING A FORM OF POISON WHICH COULD NOT POSSIBLY BE DISCOVERED BY ANY CHEMICAL TEST WAS JUST SUCH A ONE AS WOULD OCCUR TO A CLEVER AND RUTHLESS MAN WHO HAD HAD AN EASTERN TRAINING + THE RAPIDITY WITH WHICH SUCH A POISON WOULD TAKE EFFECT WOULD ALSO FROM HIS POINT OF VIEW BE AN ADVANTAGE + IT WOULD BE A SHARP EYED CORONER INDEED WHO COULD DISTINGUISH THE TWO LITTLE DARK PUNCTURES WHICH WOULD SHOW WHERE THE POISON FANGS HAD DONE THEIR WORK + THEN I THOUGHT OF THE WHISTLE + OF COURSE HE MUST RECALL THE SNAKE BEFORE THE MORNING LIGHT REVEALED IT TO THE VICTIM + HE HAD TRAINED IT PROBABLY BY THE USE OF THE MILK WHICH WE SAW TO RETURN TO HIM WHEN SUMMONED + HE WOULD PUT IT THROUGH THIS VENTILATOR AT THE HOUR THAT HE THOUGHT BEST WITH THE CERTAINTY THAT IT WOULD CRAWL DOWN THE ROPE AND LAND ON THE BED + IT MIGHT OR MIGHT NOT BITE THE OCCUPANT PERHAPS SHE MIGHT ESCAPE EVERY NIGHT FOR A WEEK BUT SOONER OR LATER SHE MUST FALL A VICTIM + QUOTE I HAD COME TO THESE CONCLUSIONS BEFORE EVER I HAD ENTERED HIS ROOM + AN INSPECTION OF HIS CHAIR SHOWED ME THAT HE HAD BEEN IN THE HABIT OF STANDING ON IT WHICH OF COURSE WOULD BE NECESSARY IN ORDER THAT HE SHOULD REACH THE VENTILATOR + THE SIGHT OF THE SAFE THE SAUCER OF MILK AND THE LOOP OF WHIPCORD WERE ENOUGH TO FINALLY DISPEL ANY DOUBTS WHICH MAY HAVE REMAINED + THE METALLIC CLANG HEARD BY MISS STONER WAS OBVIOUSLY CAUSED BY HER STEPFATHER HASTILY CLOSING THE DOOR OF HIS SAFE UPON ITS TERRIBLE OCCUPANT + HAVING ONCE MADE UP MY MIND YOU KNOW THE STEPS WHICH I TOOK IN ORDER TO PUT THE MATTER TO THE PROOF + I HEARD THE CREATURE HISS AS I HAVE NO DOUBT THAT YOU DID ALSO AND I INSTANTLY LIT THE LIGHT AND ATTACKED IT + WITH THE RESULT OF DRIVING IT THROUGH THE VENTILATOR + AND ALSO WITH THE RESULT OF CAUSING IT TO TURN UPON ITS MASTER AT THE OTHER SIDE + SOME OF THE BLOWS OF MY CANE CAME HOME AND ROUSED ITS SNAKISH TEMPER SO THAT IT FLEW UPON THE FIRST PERSON IT SAW + IN THIS WAY I AM NO DOUBT INDIRECTLY RESPONSIBLE FOR DOCTOR GRIMESBY ROYLOTT'S DEATH AND I CANNOT SAY THAT IT IS LIKELY TO WEIGH VERY HEAVILY UPON MY CONSCIENCE diff --git a/samples/LMTutorial/train/stock_brokers_clerk.txt b/samples/LMTutorial/train/stock_brokers_clerk.txt new file mode 100755 index 0000000..35d44cf --- /dev/null +++ b/samples/LMTutorial/train/stock_brokers_clerk.txt @@ -0,0 +1,471 @@ + SHORTLY AFTER MY MARRIAGE I HAD BOUGHT A CONNECTION IN THE PADDINGTON DISTRICT + OLD MR. FARQUHAR FROM WHOM I PURCHASED IT HAD AT ONE TIME AN EXCELLENT GENERAL PRACTICE BUT HIS AGE AND AN AFFLICTION OF THE NATURE OF SAINT VITUS'S DANCE FROM WHICH HE SUFFERED HAD VERY MUCH THINNED IT + THE PUBLIC NOT UNNATURALLY GOES ON THE PRINCIPLE THAT HE WHO WOULD HEAL OTHERS MUST HIMSELF BE WHOLE AND LOOKS ASKANCE AT THE CURATIVE POWERS OF THE MAN WHOSE OWN CASE IS BEYOND THE REACH OF HIS DRUGS + THUS AS MY PREDECESSOR WEAKENED HIS PRACTICE DECLINED UNTIL WHEN I PURCHASED IT FROM HIM IT HAD SUNK FROM TWELVE HUNDRED TO LITTLE MORE THAN THREE HUNDRED A YEAR + I HAD CONFIDENCE HOWEVER IN MY OWN YOUTH AND ENERGY AND WAS CONVINCED THAT IN A VERY FEW YEARS THE CONCERN WOULD BE AS FLOURISHING AS EVER + FOR THREE MONTHS AFTER TAKING OVER THE PRACTICE I WAS KEPT VERY CLOSELY AT WORK AND SAW LITTLE OF MY FRIEND SHERLOCK HOLMES FOR I WAS TOO BUSY TO VISIT BAKER STREET AND HE SELDOM WENT ANYWHERE HIMSELF SAVE UPON PROFESSIONAL BUSINESS + I WAS SURPRISED THEREFORE WHEN ONE MORNING IN JUNE AS I SAT READING THE BRITISH MEDICAL JOURNAL AFTER BREAKFAST I HEARD A RING AT THE BELL FOLLOWED BY THE HIGH SOMEWHAT STRIDENT TONES OF MY OLD COMPANION'S VOICE + QUOTE AH MY DEAR WATSON QUOTE SAID HE STRIDING INTO THE ROOM QUOTE I AM VERY DELIGHTED TO SEE YOU + I TRUST THAT MRS. WATSON HAS ENTIRELY RECOVERED FROM ALL THE LITTLE EXCITEMENTS CONNECTED WITH OUR ADVENTURE OF THE SIGN OF FOUR + THANK YOU WE ARE BOTH VERY WELL SAID I SHAKING HIM WARMLY BY THE HAND + AND I HOPE ALSO HE CONTINUED SITTING DOWN IN THE ROCKINGCHAIR THAT THE CARES OF MEDICAL PRACTICE HAVE NOT ENTIRELY OBLITERATED THE INTEREST WHICH YOU USED TO TAKE IN OUR LITTLE DEDUCTIVE PROBLEMS + ON THE CONTRARY I ANSWERED IT WAS ONLY LAST NIGHT THAT I WAS LOOKING OVER MY OLD NOTES AND CLASSIFYING SOME OF OUR PAST RESULTS + I TRUST THAT YOU DON'T CONSIDER YOUR COLLECTION CLOSED + QUOTE NOT AT ALL + I SHOULD WISH NOTHING BETTER THAN TO HAVE SOME MORE OF SUCH EXPERIENCES + TO DAY FOR EXAMPLE + YES TO DAY IF YOU LIKE + AND AS FAR OFF AS BIRMINGHAM + CERTAINLY IF YOU WISH IT + QUOTE AND THE PRACTICE QUOTE + I DO MY NEIGHBOUR'S WHEN HE GOES + HE IS ALWAYS READY TO WORK OFF THE DEBT + HA NOTHING COULD BE BETTER SAID HOLMES LEANING BACK IN HIS CHAIR AND LOOKING KEENLY AT ME FROM UNDER HIS HALF CLOSED LIDS + I PERCEIVE THAT YOU HAVE BEEN UNWELL LATELY + SUMMER COLDS ARE ALWAYS A LITTLE TRYING + QUOTE I WAS CONFINED TO THE HOUSE BY A SEVERE CHILL FOR THREE DAYS LAST WEEK + I THOUGHT HOWEVER THAT I HAD CAST OFF EVERY TRACE OF IT + SO YOU HAVE + YOU LOOK REMARKABLY ROBUST + HOW THEN DID YOU KNOW OF IT + MY DEAR FELLOW YOU KNOW MY METHODS + QUOTE YOU DEDUCED IT THEN QUOTE + CERTAINLY + AND FROM WHAT + FROM YOUR SLIPPERS + I GLANCED DOWN AT THE NEW PATENT LEATHERS WHICH I WAS WEARING + HOW ON EARTH I BEGAN BUT HOLMES ANSWERED MY QUESTION BEFORE IT WAS ASKED + YOUR SLIPPERS ARE NEW HE SAID + QUOTE YOU COULD NOT HAVE HAD THEM MORE THAN A FEW WEEKS + THE SOLES WHICH YOU ARE AT THIS MOMENT PRESENTING TO ME ARE SLIGHTLY SCORCHED + FOR A MOMENT I THOUGHT THEY MIGHT HAVE GOT WET AND BEEN BURNED IN THE DRYING + BUT NEAR THE INSTEP THERE IS A SMALL CIRCULAR WAFER OF PAPER WITH THE SHOPMAN'S HIEROGLYPHICS UPON IT + DAMP WOULD OF COURSE HAVE REMOVED THIS + YOU HAD THEN BEEN SITTING WITH YOUR FEET OUTSTRETCHED TO THE FIRE WHICH A MAN WOULD HARDLY DO EVEN IN SO WET A JUNE AS THIS IF HE WERE IN HIS FULL HEALTH + LIKE ALL HOLMES'S REASONING THE THING SEEMED SIMPLICITY ITSELF WHEN IT WAS ONCE EXPLAINED + HE READ THE THOUGHT UPON MY FEATURES AND HIS SMILE HAD A TINGE OF BITTERNESS + I AM AFRAID THAT I RATHER GIVE MYSELF AWAY WHEN I EXPLAIN SAID HE + RESULTS WITHOUT CAUSES ARE MUCH MORE IMPRESSIVE + YOU ARE READY TO COME TO BIRMINGHAM THEN + CERTAINLY + WHAT IS THE CASE QUOTE + YOU SHALL HEAR IT ALL IN THE TRAIN + MY CLIENT IS OUTSIDE IN A FOUR WHEELER + CAN YOU COME AT ONCE + IN AN INSTANT + I SCRIBBLED A NOTE TO MY NEIGHBOUR RUSHED UPSTAIRS TO EXPLAIN THE MATTER TO MY WIFE AND JOINED HOLMES UPON THE DOORSTEP + YOUR NEIGHBOUR IS A DOCTOR SAID HE NODDING AT THE BRASS PLATE + YES HE BOUGHT A PRACTICE AS I DID + QUOTE AN OLD ESTABLISHED ONE QUOTE + JUST THE SAME AS MINE + BOTH HAVE BEEN EVER SINCE THE HOUSES WERE BUILT + AH THEN YOU GOT HOLD OF THE BEST OF THE TWO + I THINK I DID + BUT HOW DO YOU KNOW + QUOTE BY THE STEPS MY BOY + YOURS ARE WORN THREE INCHES DEEPER THAN HIS + BUT THIS GENTLEMAN IN THE CAB IS MY CLIENT MR. HALL PYCROFT + ALLOW ME TO INTRODUCE YOU TO HIM + WHIP YOUR HORSE UP CABBY FOR WE HAVE ONLY JUST TIME TO CATCH OUR TRAIN + THE MAN WHOM I FOUND MYSELF FACING WAS A WELL BUILT FRESHCOMPLEXIONED YOUNG FELLOW WITH A FRANK HONEST FACE AND A SLIGHT CRISP YELLOW MOUSTACHE + HE WORE A VERY SHINY TOP HAT AND A NEAT SUIT OF SOBER BLACK WHICH MADE HIM LOOK WHAT HE WAS A SMART YOUNG CITY MAN OF THE CLASS WHO HAVE BEEN LABELLED COCKNEYS BUT WHO GIVE US OUR CRACK VOLUNTEER REGIMENTS AND WHO TURN OUT MORE FINE ATHLETES AND SPORTSMEN THAN ANY BODY OF MEN IN THESE ISLANDS + HIS ROUND RUDDY FACE WAS NATURALLY FULL OF CHEERINESS BUT THE CORNERS OF HIS MOUTH SEEMED TO ME TO BE PULLED DOWN IN A HALF COMICAL DISTRESS + IT WAS NOT HOWEVER UNTIL WE WERE IN A FIRST CLASS CARRIAGE AND WELL STARTED UPON OUR JOURNEY TO BIRMINGHAM THAT I WAS ABLE TO LEARN WHAT THE TROUBLE WAS WHICH HAD DRIVEN HIM TO SHERLOCK HOLMES + WE HAVE A CLEAR RUN HERE OF SEVENTY MINUTES HOLMES REMARKED + I WANT YOU MR. HALL PYCROFT TO TELL MY FRIEND YOUR VERY INTERESTING EXPERIENCE EXACTLY AS YOU HAVE TOLD IT TO ME OR WITH MORE DETAIL IF POSSIBLE + IT WILL BE OF USE TO ME TO HEAR THE SUCCESSION OF EVENTS AGAIN + IT IS A CASE WATSON WHICH MAY PROVE TO HAVE SOMETHING IN IT OR MAY PROVE TO HAVE NOTHING BUT WHICH AT LEAST PRESENTS THOSE UNUSUAL AND OUTRE FEATURES WHICH ARE AS DEAR TO YOU AS THEY ARE TO ME + NOW MR. PYCROFT + I SHALL NOT INTERRUPT YOU AGAIN + OUR YOUNG COMPANION LOOKED AT ME WITH A TWINKLE IN HIS EYE + THE WORST OF THE STORY IS. SAID HE. THAT I SHOW MYSELF UP AS SUCH A CONFOUNDED FOOL + OF COURSE IT MAY WORK OUT ALL RIGHT AND I DON'T SEE THAT I COULD HAVE DONE OTHERWISE BUT IF I HAVE LOST MY CRIB AND GET NOTHING IN EXCHANGE I SHALL FEEL WHAT A SOFT JOHNNY I HAVE BEEN + I'M NOT VERY GOOD AT TELLING A STORY DOCTOR WATSON BUT IT IS LIKE THIS WITH ME + QUOTE I USED TO HAVE A BILLET AT COXON AND WOODHOUSE'S OF DRAPER GARDENS BUT THEY WERE LET IN EARLY IN THE SPRING THROUGH THE VENEZUELAN LOAN AS NO DOUBT YOU REMEMBER AND CAME A NASTY CROPPER + I HAVE BEEN WITH THEM FIVE YEARS AND OLD COXON GAVE ME A RIPPING GOOD TESTIMONIAL WHEN THE SMASH CAME. BUT OF COURSE WE CLERKS WERE ALL TURNED ADRIFT THE TWENTY SEVEN OF US + I TRIED HERE AND TRIED THERE BUT THERE WERE LOTS OF OTHER CHAPS ON THE SAME LAY AS MYSELF AND IT WAS A PERFECT FROST FOR A LONG TIME + I HAD BEEN TAKING THREE POUNDS A WEEK AT COXON'S AND I HAD SAVED ABOUT SEVENTY OF THEM BUT I SOON WORKED MY WAY THROUGH THAT AND OUT AT THE OTHER END + I WAS FAIRLY AT THE END OF MY TETHER AT LAST AND COULD HARDLY FIND THE STAMPS TO ANSWER THE ADVERTISEMENTS OR THE ENVELOPES TO STICK THEM TO + I HAD WORN OUT MY BOOTS PADDLING UP OFFICE STAIRS AND I SEEMED JUST AS FAR FROM GETTING A BILLET AS EVER + AT LAST I SAW A VACANCY AT MAWSON AND WILLIAMS'S THE GREAT STOCK BROKING FIRM IN LOMBARD STREET + I DARE SAY E. C. IS NOT MUCH IN YOUR LINE BUT I CAN TELL YOU THAT THIS IS ABOUT THE RICHEST HOUSE IN LONDON + THE ADVERTISEMENT WAS TO BE ANSWERED BY LETTER ONLY + I SENT IN MY TESTIMONIAL AND APPLICATION BUT WITHOUT THE LEAST HOPE OF GETTING IT + BACK CAME AN ANSWER BY RETURN SAYING THAT IF I WOULD APPEAR NEXT MONDAY I MIGHT TAKE OVER MY NEW DUTIES AT ONCE PROVIDED THAT MY APPEARANCE WAS SATISFACTORY + NO ONE KNOWS HOW THESE THINGS ARE WORKED + SOME PEOPLE SAY THAT THE MANAGER JUST PLUNGES HIS HAND INTO THE HEAP AND TAKES THE FIRST THAT COMES + ANYHOW IT WAS MY INNINGS THAT TIME AND I DON'T EVER WISH TO FEEL BETTER PLEASED + THE SCREW WAS A POUND A WEEK RISE AND THE DUTIES JUST ABOUT THE SAME AS AT COXON'S + AND NOW I COME TO THE QUEER PART OF THE BUSINESS + I WAS IN DIGGINGS OUT HAMPSTEAD WAY SEVENTEEN POTTER'S TERRACE + WELL I WAS SITTING DOING A SMOKE THAT VERY EVENING AFTER I HAD BEEN PROMISED THE APPOINTMENT WHEN UP CAME MY LANDLADY WITH A CARD WHICH HAD ARTHUR PINNER FINANCIAL AGENT PRINTED UPON IT + I HAD NEVER HEARD THE NAME BEFORE AND COULD NOT IMAGINE WHAT HE WANTED WITH ME BUT OF COURSE I ASKED HER TO SHOW HIM UP + IN HE WALKED A MIDDLE SIZED DARK HAIRED DARK EYED. BLACK BEARDED MAN. WITH A TOUCH OF THE SHEENY ABOUT HIS NOSE + HE HAD A BRISK KIND OF WAY WITH HIM AND SPOKE SHARPLY LIKE A MAN WHO KNEW THE VALUE OF TIME + MR. HALL PYCROFT I BELIEVE SAID HE + YES SIR I ANSWERED PUSHING A CHAIR TOWARDS HIM + LATELY ENGAGED AT COXON AND WOODHOUSE'S + QUOTE YES SIR + AND NOW ON THE STAFF OF MAWSON'S + QUITE SO + WELL. SAID HE THE FACT IS THAT I HAVE HEARD SOME REALLY EXTRAORDINARY STORIES ABOUT YOUR FINANCIAL ABILITY + YOU REMEMBER PARKER WHO USED TO BE COXON'S MANAGER + HE CAN NEVER SAY ENOUGH ABOUT IT + OF COURSE I WAS PLEASED TO HEAR THIS + I HAD ALWAYS BEEN PRETTY SHARP IN THE OFFICE BUT I HAD NEVER DREAMED THAT I WAS TALKED ABOUT IN THE CITY IN THIS FASHION + YOU HAVE A GOOD MEMORY SAID HE + QUOTE PRETTY FAIR I ANSWERED MODESTLY + HAVE YOU KEPT IN TOUCH WITH THE MARKET WHILE YOU HAVEBEEN OUT OF WORK HE ASKED + YES + I READ THE STOCK EXCHANGE LIST EVERY MORNING + NOW THAT SHOWS REAL APPLICATION HE CRIED + THAT IS THE WAY TO PROSPER + YOU WON'T MIND MY TESTING YOU WILL YOU + LET ME SEE + HOW ARE AYRSHIRES + A HUNDRED AND SIX AND A QUARTER TO A HUNDRED AND FIVE AND SEVEN EIGHTHS + AND NEW ZEALAND CONSOLIDATED + QUOTE A HUNDRED AND FOUR + AND BRITISH BROKEN HILLS + SEVEN TO SEVEN AND SIX + WONDERFUL HE CRIED WITH HIS HANDS UP + THIS QUITE FITS IN WITH ALL THAT I HAD HEARD + MY BOY MY BOY YOU ARE VERY MUCH TOO GOOD TO BE A CLERK AT MAWSON'S + THIS OUTBURST RATHER ASTONISHED ME AS YOU CAN THINK + WELL SAID I OTHER PEOPLE DON'T THINK QUITE SO MUCH OF ME AS YOU SEEM TO DO MR. PINNER + I HAD A HARD ENOUGH FIGHT TO GET THIS BERTH AND I AM VERY GLAD TO HAVE IT + POOH MAN YOU SHOULD SOAR ABOVE IT + YOU ARE NOT IN YOUR TRUE SPHERE + NOW I'LL TELL YOU HOW IT STANDS WITH ME + WHAT I HAVE TO OFFER IS LITTLE ENOUGH WHEN MEASURED BY YOUR ABILITY BUT WHEN COMPARED WITH MAWSON'S IT'S LIGHT TO DARK + LET ME SEE + WHEN DO YOU GO TO MAWSON'S + QUOTE ON MONDAY + HA HA + I THINK I WOULD RISK A LITTLE SPORTING FLUTTER THAT YOU DON'T GO THERE AT ALL + NOT GO TO MAWSON'S' + NO SIR + BY THAT DAY YOU WILL BE THE BUSINESS MANAGER OF THE FRANCO MIDLAND HARDWARE COMPANY LIMITED WITH A HUNDRED AND THIRTY FOUR BRANCHES IN THE TOWNS AND VILLAGES OF FRANCE NOT COUNTING ONE IN BRUSSELS AND ONE IN SAN REMO + THIS TOOK MY BREATH AWAY + I NEVER HEARD OF IT. SAID I + VERY LIKELY NOT + IT HAS BEEN KEPT VERY QUIET FOR THE CAPITAL WAS ALL PRIVATELY SUBSCRIBED AND IT'S TOO GOOD A THING TO LET THE PUBLIC INTO + MY BROTHER HARRY PINNER IS PROMOTER AND JOINS THE BOARD AFTER ALLOTMENT AS MANAGING DIRECTOR + HE KNEW I WAS IN THE SWIM DOWN HERE AND ASKED ME TO PICK UP A GOOD MAN CHEAP + A YOUNG PUSHING MAN WITH PLENTY OF SNAP ABOUT HIM + PARKER SPOKE OF YOU AND THAT BROUGHT ME HERE TO NIGHT + WE CAN ONLY OFFER YOU A BEGGARLY FIVE HUNDRED TO START WITH + QUOTE FIVE HUNDRED A YEAR + I SHOUTED + ONLY THAT AT THE BEGINNING BUT YOU ARE TO HAVE AN OVERRIDING COMMISSION OF ONE PER CENT ON ALL BUSINESS DONE BY YOUR AGENTS AND YOU MAY TAKE MY WORD FOR IT THAT THIS WILL COME TO MORE THAN YOUR SALARY + BUT I KNOW NOTHING ABOUT HARDWARE + TUT MY BOY YOU KNOW ABOUT FIGURES + MY HEAD BUZZED AND I COULD HARDLY SIT STILL IN MY CHAIR + BUT SUDDENLY A LITTLE CHILL OF DOUBT CAME UPON ME + I MUST BE FRANK WITH YOLI SAID I. MAWSON ONLY GIVES ME TWO HUNDRED BUT MAWSON IS SAFE + NOW REALLY I KNOW SO LITTLE ABOUT YOUR COMPANY THAT + QUOTE AH SMART SMART HE CRIED IN A KIND OF ECSTASY OF DELIGHT + YOU ARE THE VERY MAN FOR US + YOU ARE NOT TO BE TALKED OVER AND QUITE RIGHT TOO + NOW HERE'S A NOTE FOR A HUNDRED POUNDS AND IF YOU THINK THAT WE CAN DO BUSINESS YOU MAY JUST SLIP IT INTO YOUR POCKET AS AN ADVANCE UPON YOUR SALARY + THAT IS VERY HANDSOME SAID I. WHEN SHOULD I TAKE OVER MY NEW DUTIES + BE IN BIRMINGHAM TO MORROW AT ONE SAID HE + I HAVE A NOTE IN MY POCKET HERE WHICH YOU WILL TAKE TO MY BROTHER + YOU WILL FIND HIM AT ONE TWENTY SIX B. CORPORATION STREET WHERE THE TEMPORARY OFFICES OF THE COMPANY ARE SITUATED + OF COURSE HE MUST CONFIRM YOUR ENGAGEMENT BUT BETWEEN OURSELVES IT WILL BE ALL RIGHT + REALLY I HARDLY KNOW HOW TO EXPRESS MY GRATITUDE MR. PINNER SAID I + NOT AT ALL MY BOY + YOU HAVE ONLY GOT YOUR DESERTS + THERE ARE ONE OR TWO SMALL THINGS MERE FORMALITIES WHICH I MUST ARRANGE WITH YOU + YOU HAVE A BIT OF PAPER BESIDE YOU THERE + KINDLY WRITE UPON IT I AM PERFECTLY WILLING TO ACT AS BUSINESS MANAGER TO THE FRANCO MIDLAND HARDWARE COMPANY LIMITED AT A MINIMUM SALARY OF FIVE HUNDRED POUNDS + QUOTE I DID AS HE ASKED AND HE PUT THE PAPER IN HIS POCKET + THERE IS ONE OTHER DETAIL SAID HE + WHAT DO YOU INTEND TO DO ABOUT MAWSON'S + I HAD FORGOTTEN ALL ABOUT MAWSON'S IN MY JOY + I'LL WRITE AND RESIGN SAID I + PRECISELY WHAT I DON'T WANT YOU TO DO + I HAD A ROW OVER YOU WITH MAWSON'S MANAGER + I HAD GONE UP TO ASK HIM ABOUT YOU AND HE WAS VERY OFFENSIVE ACCUSED ME OF COAXING YOU AWAY FROM THE SERVICE OF THE FIRM AND THAT SORT OF THING + AT LAST I FAIRLY LOST MY TEMPER + IF YOU WANT GOOD MEN YOU SHOULD PAY THEM A GOOD PRICE SAID I + HE WOULD RATHER HAVE OUR SMALL PRICE THAN YOUR BIG ONE SAID HE + QUOTE QUOTE I'LL LAY YOU A FIVER QUOTE SAID I QUOTE THAT WHEN HE HAS MY OFFER YOU'LL NEVER SO MUCH AS HEAR FROM HIM AGAIN QUOTE + DONE SAID HE + WE PICKED HIM OUT OF THE GUTTER AND HE WON'T LEAVE US SO EASILY + THOSE WERE HIS VERY WORDS + THE IMPUDENT SCOUNDREL + I CRIED + I'VE NEVER SO MUCH AS SEEN HIM IN MY LIFE + WHY SHOULD I CONSIDER HIM IN ANY WAY + I SHALL CERTAINLY NOT WRITE IF YOU WOULD RATHER I DIDN'T + GOOD + THAT'S A PROMISE SAID HE RISING FROM HIS CHAIR + WELL I'M DELIGHTED TO HAVE GOT SO GOOD A MAN FOR MY BROTHER + HERE'S YOUR ADVANCE OF A HUNDRED POUNDS AND HERE IS THE LETTER + MAKE A NOTE OF THE ADDRESS ONE TWENTY SIX B. CORPORATION STREET AND REMEMBER THAT ONE O'CLOCK TO MORROW IS YOUR APPOINTMENT + GOODNIGHT AND MAY YOU HAVE ALL THE FORTUNE THAT YOU DESERVE + THAT'S JUST ABOUT ALL THAT PASSED BETWEEN US AS NEAR AS I CAN REMEMBER + YOU CAN IMAGINE DOCTOR WATSON HOW PLEASED I WAS AT SUCH AN EXTRAORDINARY BIT OF GOOD FORTUNE + I SAT UP HALF THE NIGHT HUGGING MYSELF OVER IT AND NEXT DAY I WAS OFF TO BIRMINGHAM IN A TRAIN THAT WOULD TAKE ME IN PLENTY TIME FOR MY APPOINTMENT + I TOOK MY THINGS TO A HOTEL IN NEW STREET AND THEN I MADE MY WAY TO THE ADDRESS WHICH HAD BEEN GIVEN ME + QUOTE IT WAS A QUARTER OF AN HOUR BEFORE MY TIME BUT I THOUGHT THAT WOULD MAKC NO DIFFERENCE ONE TWENTY SIX B. WAS A PASSAGE BETWEEN TWO LARGE SHOPS WHICH LED TO A WINDING STONE STAIR FROM WHICH THERE WERE MANY FLATS LET AS OFFICES TO COMPANIES OR PROFESSIONAL MEN + THE NAMES OF THE OCCUPANTS WERE PAINTED AT THE BOTTOM ON THE WALL BUT THERE WAS NO SUCH NAME AS THE FRANCO MIDLAND HARDWARE COMPANY LIMITED + I STOOD FOR A FEW MINUTES WITH MY HEART IN MY BOOTS WONDERING WHETHER THE WHOLE THING WAS AN ELABORATE HOAX OR NOT WHEN UP CAME A MAN AND ADDRESSED ME + HE WAS VERY LIKE THE CHAP I HAD SEEN THE NIGHT BEFORE THE SAME FIGURE AND VOICE BUT HE WAS CLEAN SHAVEN AND HIS HAIR WAS LIGHTER + ARE YOU MR. HALL PYCROFT HE ASKED + YES SAID I + OH + I WAS EXPECTING YOU BUT YOU ARE A TRIFLE BEFORE YOUR TIME + I HAD A NOTE FROM MY BROTHER THIS MORNING IN WHICH HE SANG YOUR PRAISES VERY LOUDLY + I WAS JUST LOOKING FOR THE OFFICES WHEN YOU CAME + WE HAVE NOT GOT OUR NAME UP YET FOR WE ONLY SECURED THESE TEMPORARY PREMISES LAST WEEK + COME UP WITH ME AND WE WILL TALK THE MATTER OVER + QUOTE I FOLLOWED HIM TO THE TOP OF A VERY LOFTY STAIR AND THERE RIGHT UNDER THE SLATES WERE A COUPLE OF EMPTY DUSTY LITTLE ROOMS UNCARPETED AND UNCURTAINED INTO WHICH HE LED ME + I HAD THOUGHT OF A GREAT OFFICE WITH SHINING TABLES AND ROWS OF CLERKS SUCH AS I WAS USED TO AND I DARESAY I STARED RATHER STRAIGHT AT THE TWO DEAL CHAIRS AND ONE LITTLE TABLE WHICH WITH A LEDGER AND A WASTE PAPER BASKET MADE UP THE WHOLE FURNITURE + DON'T BE DISHEARTENED MR. PYCROFT SAID MY NEW ACQUAINTANCE SEEING THE LENGTH OF MY FACE + ROME WAS NOT BUILT IN A DAY AND WE HAVE LOTS OF MONEY AT OUR BACKS THOUGH WE DON'T CUT MUCH DASH YET IN OFFICES + PRAY SIT DOWN AND LET ME HAVE YOUR LETTER + I GAVE IT TO HIM AND HE READ IT OVER VERY CAREFULLY + YOU SEEM TO HAVE MADE A VAST IMPRESSION UPON MY BROTHER ARTHUR SAID HE AND I KNOW THAT HE IS A PRETTY SHREWD JUDGE + HE SWEARS BY LONDON YOU KNOW AND I BY BIRMINGHAM BUT THIS TIME I SHALL FOLLOW HIS ADVICE + PRAY CONSIDER YOURSELF DEFINITELY ENGAGED + WHAT ARE MY DUTIES + I ASKED + YOU WILL EVENTUALLY MANAGE THE GREAT DEPOT IN PARIS WHICH WILL POUR A FLOOD OF ENGLISH CROCKERY INTO THE SHOPS OF A HUNDRED AND THIRTY FOUR AGENTS IN FRANCE + THE PURCHASE WILL BE COMPLETED IN A WEEK AND MEANWHILE YOU WILL REMAIN IN BIRMINGHAM AND MAKE YOURSELF USEFUL + QUOTE HOW + FOR ANSWER HE TOOK A BIG RED BOOK OUT OF A DRAWER + THIS IS A DIRECTORY OF PARIS SAID HE WITH THE TRADES AFTER THE NAMES OF THE PEOPLE + I WANT YOU TO TAKE IT HOME WITH YOU AND TO MARK OFF ALL THE HARDWARE SELLERS WITH THEIR ADDRESSES + IT WOULD BE OF THE GREATEST USE TO ME TO HAVE THEM + SURELY THERE ARE CLASSIFIED LISTS + I SUGGESTED + NOT RELIABLE ONES + THEIR SYSTEM IS DIFFERENT FROM OURS + STICK AT IT AND LET ME HAVE THE LISTS BY MONDAY AT TWELVE + GOOD DAY MR. PYCROFT + IF YOU CONTINUE TO SHOW ZEAL AND INTELLIGENCE YOU WILL FIND THE COMPANY A GOOD MASTER + I WENT BACK TO THE HOTEL WITH THE BIG BOOK UNDER MY ARM AND WITH VERY CONFLICTING FEELINGS IN MY BREAST + ON THE ONE HAND I WAS DEFINITELY ENGAGED AND HAD A HUNDRED POUNDS IN MY POCKET ON THE OTHER THE LOOK OF THE OFFICES THE ABSENCE OF NAME ON THE WALL AND OTHER OF THE POINTS WHICH WOULD STRIKE A BUSINESS MAN HAD LEFT A BAD IMPRESSION AS TO THE POSITION OF MY EMPLOYERS + HOWEVER COME WHAT MIGHT I HAD MY MONEY SO L. SETTLED DOWN TO MY TASK + ALL SUNDAY I WAS KEPT HARD AT WORK AND YET BY MONDAY I HAD ONLY GOT AS FAR AS H. I WENT ROUND TO MY EMPLOYER FOUND HIM IN THE SAME DISMANTLED KIND OF ROOM AND WAS TOLD TO KEEP AT IT UNTIL WEDNESDAY AND THEN COME AGAIN + ON WEDNESDAY IT WAS STILL UNFINISHED SO I HAMMERED AWAY UNTIL FRIDAY THAT IS YESTERDAY + THEN I BROUGHT IT ROUND TO MR. HARRY PINNER + QUOTE THANK YOU VERY MUCH SAID HE I FEAR THAT I UNDERRATED THE DIFFICULTY OF THE TASK + THIS LIST WILL BE OF VERY MATERIAL ASSISTANCE TO ME + IT TOOK SOME TIME SAID I + AND NOW SAID HE I WANT YOU TO MAKE A LIST OF THE FURNITURE SHOPS FOR THEY ALL SELL CROCKERY + VERY GOOD + AND YOU CAN COME UP TO MORROW EVENING AT SEVEN AND LET ME KNOW HOW YOU ARE GETTING ON + DON'T OVERWORK YOURSELF + A COUPLE OF HOURS AT DAY'S MUSIC HALL IN THE EVENING WOULD DO YOU NO HARM AFTER YOUR LABOURS + HE LAUGHED AS HE SPOKE AND I SAW WITH A THRILL THAT HIS SECOND TOOTH UPON THE LEFT HAND SIDE HAD BEEN VERY BADLY STUFFED WITH GOLD + SHERLOCK HOLMES RUBBED HIS HANDS WITH DELIGHT AND I STARED WITH ASTONISHMENT AT OUR CLIENT + QUOTE YOU MAY WELL LOOK SURPRISED DOCTOR WATSON BUT IT IS THIS WAY QUOTE SAID HE QUOTE WHEN I WAS SPEAKING TO THE OTHER CHAP IN LONDON AT THE TIME THAT HE LAUGHED AT MY NOT GOING TO MAWSON'S I HAPPENED TO NOTICE THAT HIS TOOTH WAS STUFFED IN THIS VERY IDENTICAL FASHION + THE GLINT OF THE GOLD IN EACH CASE CAUGHT MY EYE YOU SEE + WHEN I PUT THAT WITH THE VOICE AND FIGURE BEING THE SAME AND ONLY THOSE THINGS ALTERED WHICH MIGHT BE CHANGED BY A RAZOR OR A WIG I COULD NOT DOUBT THAT IT WAS THE SAME MAN + OF COURSE YOU EXPECT TWO BROTHERS TO BE ALIKE BUT NOT THAT THEY SHOULD HAVE THE SAME TOOTH STUFFED IN THE SAME WAY + HE BOWED ME OUT AND I FOUND MYSELF IN THE STREET HARDLY KNOWING WHETHER I WAS ON MY HEAD OR MY HEELS + BACK I WENT TO MY HOTEL PUT MY HEAD IN A BASIN OF COLD WATER AND TRIED TO THINK IT OUT + WHY HAD HE SENT ME FROM LONDON TO BIRMINGHAM + WHY HAD HE GOT THERE BEFORE ME + AND WHY HAD HE WRITTEN A LETTER FROM HIMSELF TO HIMSELF + IT WAS ALTOGETHER TOO MUCH FOR ME AND I COULD MAKE NO SENSE OF IT + AND THEN SUDDENLY IT STRUCK ME THAT WHAT WAS DARK TO ME MIGHT BE VERY LIGHT TO MR. SHERLOCK HOLMES + I HAD JUST TIME TO GET UP TO TOWN BY THE NIGHT TRAIN TO SEE HIM THIS MORNING AND TO BRING YOU BOTH BACK WITH ME TO BIRMINGHAM + THERE WAS A PAUSE AFTER THE STOCK BROKER'S CLERK HAD CONCLUDED HIS SURPRISING EXPERIENCE + THEN SHERLOCK HOLMES COCKED HIS EYE AT ME LEANING BACK ON THE CUSHIONS WITH A PLEASED AND YET CRITICAL FACE LIKE A CONNOISSEUR WHO HAS JUST TAKEN HIS FIRST SIP OF A COMET VINTAGE + RATHER FINE WATSON IS IT NOT SAID HE + THERE ARE POINTS IN IT WHICH PLEASE ME + I THINK THAT YOU WILL AGREE WITH ME THAT AN INTERVIEW WITH MR. ARTHUR HARRY PINNER IN THE TEMPORARY OFFICES OF THE FRANCO MIDLAND HARDWARE COMPANY LIMITED WOULD BE A RATHER INTERESTING EXPERIENCE FOR BOTH OF US + BUT HOW CAN WE DO IT + I ASKED + QUOTE OH EASILY ENOUGH QUOTE SAID HALL PYCROFT CHEERILY + YOU ARE TWO FRIENDS OF MINE WHO ARE IN WANT OF A BILLET AND WHAT COULD BE MORE NATURAL THAN THAT I SHOULD BRING YOU BOTH ROUND TO THE MANAGING DIREETOR + QUITE SO OF COURSE SAID HOLMES + I SHOULD LIKE TO HAVE A LOOK AT THE GENTLEMAN AND SEE IF I CAN MAKE ANYTHING OF HIS LITTLE GAME + WHAT QUALITIES HAVE YOU MY FRIEND WHICH WOULD MAKE YOUR SERVICES SO VALUABLE + OR IS IT POSSIBLE THAT HE BEGAN BITING HIS NAILS AND STARING BLANKLY OUT OF THE WINDOW AND WE HARDLY DREW ANOTHER WORD FROM HIM UNTIL WE WERE IN NEW STREET + AT SEVEN O'CLOCK THAT EVENING WE WERE WALKING THE THREE OF US DOWN CORPORATION STREET TO THE COMPANY'S OFFICES + IT IS NO USE OUR BEING AT ALL BEFORE OUR TIME SAID OUR CLIENT + QUOTE HE ONLY COMES THERE TO SEE ME APPARENTLY FOR THE PLACE IS DESERTED UP TO THE VERY HOUR HE NAMES QUOTE + THAT IS SUGGESTIVE REMARKED HOLMES + BY JOVE I TOLD YOU SO CRIED THE CLERK + THAT'S HE WALKING AHEAD OF US THERE + HE POINTED TO A SMALLISH DARK WELL DRESSED MAN WHO WAS BUSTLING ALONG THE OTHER SIDE OF THE ROAD + AS WE WATCHED HIM HE LOOKED ACROSS AT A BOY WHO WAS BAWLING OUT THE LATEST EDITION OF THE EVENING PAPER AND RUNNING OVER AMONG THE CABS AND BUSSES HE BOUGHT ONE FROM HIM + THEN CLUTCHING IT IN HIS HAND HE VANISHED THROUGH A DOORWAY + THERE HE GOES CRIED HALL PYCROFT + THESE ARE THE COMPANY'S OFFICES INTO WHICH HE HAS GONE + COME WITH ME AND I'LL FIX IT UP AS EASILY AS POSSIBLE QUOTE + FOLLOWING HIS LEAD WE ASCENDED FIVE STORIES UNTIL WE FOUND OURSELVES OUTSIDE A HALF OPENED DOOR AT WHICH OUR CLIENT TAPPED + A VOICE WITHIN BADE US ENTER AND WE ENTERED A BARE UNFURNISHED ROOM SUCH AS HALL PYCROFT HAD DESCRIBED + AT THE SINGLE TABLE SAT THE MAN WHOM WE HAD SEEN IN THE STREET WITH HIS EVENING PAPER SPREAD OUT IN FRONT OF HIM AND AS HE LOOKED UP AT US IT SEEMED TO ME THAT I HAD NEVER LOOKED UPON A FACE WHICH BORE SUCH MARKS OF GRIEF AND OF SOMETHING BEYOND GRIEF OF A HORROR SUCH AS COMES TO FEW MEN IN A LIFETIME + HIS BROW GLISTENED WITH PERSPIRATION HIS CHEEKS WERE OF THE DULL DEAD WHITE OF A FISH'S BELLY AND HIS EYES WERE WILD AND STARING + HE LOOKED AT HIS CLERK AS THOUGH HE FAILED TO RECOGNIZE HIM AND I COULD SEE BY THE ASTONISHMENT DEPICTED UPON OUR CONDUCTOR'S FACE THAT THIS WAS BY NO MEANS THE USUAL APPEARANCE OF HIS EMPLOYER + YOU LOOK ILL MR. PINNER HE EXCLAIMED + YES I AM NOT VERY WELL ANSWERED THE OTHER MAKING OBVIOUS EFFORTS TO PULL HIMSELF TOGETHER AND LICKING HIS DRY LIPS BEFORE HE SPOKE + WHO ARE THESE GENTLEMEN WHOM YOU HAVE BROUGHT WITH YOU + ONE IS MR. HARRIS OF BERMONDSEY AND THE OTHER IS MR. PRICE OF THIS TOWN SAID OUR CLERK GLIBLY + THEY ARE FRIENDS OF MINE AND GENTLEMEN OF EXPERIENCE BUT THEY HAVE BEEN OUT OF A PLACE FOR SOME LITTLE TIME AND THEY HOPED THAT PERHAPS YOU MIGHT FIND AN OPENING FOR THEM IN THE COMPANY'S EMPLOYMENT + QUOTE VERY POSSIBLY VERY POSSIBLY QUOTE CRIED MR. PINNER WITH A GHASTLY SMILE + YES I HAVE NO DOUBT THAT WE SHALL BE ABLE TO DO SOMETHING FOR YOU + WHAT IS YOUR PARTICULAR LINE MR. HARRIS + I AM AN ACCOUNTANT SAID HOLMES + AH YES WE SHALL WANT SOMETHING OF THE SORT + AND YOU + MR. PRICE + QUOTE A CLERK QUOTE SAID I + I HAVE EVERY HOPE THAT THE COMPANY MAY ACCOMMODATE YOU + I WILL LET YOU KNOW ABOUT IT AS SOON AS WE COME TO ANY CONCLUSION + AND NOW I BEG THAT YOU WILL GO + FOR GOD'S SAKE LEAVE ME TO MYSELF + THESE LAST WORDS WERE SHOT OUT OF HIM AS THOUGH THE CONSTRAINT WHICH HE WAS EVIDENTLY SETTING UPON HIMSELF HAD SUDDENLY AND UTTERLY BURST ASUNDER + HOLMES AND I GLANCED AT EACH OTHER AND HALL PYCROFT TOOK A STEP TOWARDS THE TABLE + YOU FORGET MR. PINNER THAT I AM HERE BY APPOINTMENT TO RECEIVE SOME DIRECTIONS FROM YOU SAID HE + CERTAINLY MR. PYCROFT CERTAINLY THE OTHER RESUMED IN A CALMER TONE + YOU MAY WAIT HERE A MOMENT AND THERE IS NO REASON WHY YOUR FRIENDS SHOULD NOT WAIT WITH YOU + I WILL BE ENTIRELY AT YOUR SERVICE IN THREE MINUTES IF I MIGHT TRESPASS UPON YOUR PATIENCE SO FAR QUOTE + HE ROSE WITH A VERY COURTEOUS AIR AND BOWING TO US HE PASSED OUT THROUGH A DOOR AT THE FARTHER END OF THE ROOM WHICH HE CLOSED BEHIND HIM + WHAT NOW WHISPERED HOLMES + IS HE GIVING US THE SLIP + IMPOSSIBLE ANSWERED PYCROFT + WHY SO + THAT DOOR LEADS INTO AN INNER ROOM + QUOTE THERE IS NO EXIT QUOTE + NONE + IS IT FURNISHED + IT WAS EMPTY YESTERDAY + THEN WHAT ON EARTH CAN HE BE DOING + THERE IS SOMETHING WHICH I DON'T UNDERSTAND IN THIS MATTER + IF EVER A MAN WAS THREE PARTS MAD WITH TERROR THAT MAN'S NAME IS PINNER + WHAT CAN HAVE PUT THE SHIVERS ON HIM + QUOTE HE SUSPECTS THAT WE ARE DETECTIVES QUOTE I SUGGESTED + THAT'S IT CRIED PYCROFT + HOLMES SHOOK HIS HEAD + HE DID NOT TURN PALE + HE WAS PALE WHEN WE ENTERED THE ROOM SAID HE + IT IS JUST POSSIBLE THAT + HIS WORDS WERE INTERRUPTED BY A SHARP RAT TAT FROM THE DIRECTION OF THE INNER DOOR + WHAT THE DEUCE IS HE KNOCKING AT HIS OWN DOOR FOR CRIED THE CLERK + AGAIN AND MUCH LOUDER CAME THE RAT TAT TAT + WE ALL GAZED EXPECTANTLY AT THE CLOSED DOOR + GLANCING AT HOLMES I SAW HIS FACE TURN RIGID AND HE LEANED FORWARD IN INTENSE EXCITEMENT + THEN SUDDENLY CAME A LOW GUGGLING GARGLING SOUND AND A BRISK DRUMMING UPON WOODWORK + HOLMES SPRANG FRANTICALLY ACROSS THE ROOM AND PUSHED AT THE DOOR + IT WAS FASTENED ON THE INNER SIDE + FOLLOWING HIS EXAMPLE WE THREW OURSELVES UPON IT WITH ALL OUR WEIGHT + ONE HINGE SNAPPED THEN THE OTHER AND DOWN CAME THE DOOR WITH A CRASH + RUSHING OVER IT WE FOUND OURSELVES IN THE INNER ROOM + IT WAS EMPTY + BUT IT WAS ONLY FOR A MOMENT THAT WE WERE AT FAULT + AT ONE CORNER THE CORNER NEAREST THE ROOM WHICH WE HAD LEFT THERE WAS A SECOND DOOR + HOLMES SPRANG TO IT AND PULLED IT OPEN + A COAT AND WAISTCOAT WERE LYING ON THE FLOOR AND FROM A HOOK BEHIND THE DOOR WITH HIS OWN BRACES ROUND HIS NECK WAS HANGING THE MANAGING DIRECTOR OF THE FRANCO MIDLAND HARDWARE COMPANY + HIS KNEES WERE DRAWN UP HIS HEAD HUNG AT A DREADFUL ANGLE TO HIS BODY AND THE CLATTER OF HIS HEELS AGAINST THE DOOR MADE THE NOISE WHICH HAD BROKEN IN UPON OUR CONVERSATION + IN AN INSTANT I HAD CAUGHT HIM ROUND THE WAIST AND HELD HIM UP WHILE HOLMES AND PYCROFT UNTIED THE ELASTIC BANDS WHICH HAD DISAPPEARED BETWEEN THE LIVID CREASES OF SKIN + THEN WE CARRIED HIM INTO THE OTHER ROOM WHERE HE LAY WITH A CLAY COLOURED FACE PUFFING HIS PURPLE LIPS IN AND OUT WITH EVERY BREATH A DREADFUL WRECK OF ALL THAT HE HAD BEEN BUT FIVE MINUTES BEFORE + QUOTE WHAT DO YOU THINK OF HIM WATSON QUOTE ASKED HOLMES + I STOOPED OVER HIM AND EXAMINED HIM + HIS PULSE WAS FEEBLE AND INTERMITTENT BUT HIS BREATHING GREW LONGER AND THERE WAS A LITTLE SHIVERING OF HIS EYELIDS WHICH SHOWED A THIN WHITE SLIT OF BALL BENEATH + IT HAS BEEN TOUCH AND GO WITH HIM SAID I BUT HE'LL LIVE NOW + JUST OPEN THAT WINDOW AND HAND ME THE WATER CARAFE + I UNDID HIS COLLAR POURED THE COLD WATER OVER HIS FACE AND RAISED AND SANK HIS ARMS UNTIL HE DREW A LONG NATURAL BREATH + IT'S ONLY A QUESTION OF TIME NOW SAID I AS I TURNED AWAY FROM HIM + HOLMES STOOD BY THE TABLE WITH HIS HANDS DEEP IN HIS TROUSERS' POCKETS AND HIS CHIN UPON HIS BREAST + I SUPPOSE WE OUGHT TO CALL THE POLICE IN NOW SAID HE + AND YET I CONFESS THAT I'D LIKE TO GIVE THEM A COMPLETE CASE WHEN THEY COME + QUOTE IT'S A BLESSED MYSTERY TO ME QUOTE CRIED PYCROFT SCRATCHING HIS HEAD + WHATEVER THEY WANTED TO BRING ME ALL THE WAY UP HERE FOR AND THEN + POOH + ALL THAT IS CLEAR ENOUGH SAID HOLMES IMPATIENTLY + IT IS THIS LAST SUDDEN MOVE + YOU UNDERSTAND THE REST THEN + QUOTE I THINK THAT IT IS FAIRLY OBVIOUS + WHAT DO YOU SAY WATSON + I SHRUGGED MY SHOULDERS + I MUST CONFESS THAT I AM OUT OF MY DEPTHS SAID I + OH SURELY IF YOU CONSIDER THE EVENTS AT FIRST THEY CAN ONLY POINT TO ONE CONCLUSION + WHAT DO YOU MAKE OF THEM + WELL THE WHOLE THING HINGES UPON TWO POINTS + THE FIRST IS THE MAKING OF PYCROFT WRITE A DECLARATION BY WHICH HE ENTERED THE SERVICE OF THIS PREPOSTEROUS COMPANY + DO YOU NOT SEE HOW VERY SUGGESTIVE THAT IS QUOTE + I AM AFRAID I MISS THE POINT + WELL WHY DID THEY WANT HIM TO DO IT + NOT AS A BUSINESS MATTER FOR THESE ARRANGEMENTS ARE USUALLY VERBAL AND THERE WAS NO EARTHLY BUSINESS REASON WHY THIS SHOULD BE AN EXCEPTION + DON'T YOU SEE MY YOUNG FRIEND THAT THEY WERE VERY ANXIOUS TO OBTAIN A SPECIMEN OF YOUR HANDWRITING AND HAD NO OTHER WAY OF DOING IT + AND WHY + QUITE SO + WHY + WHEN WE ANSWER THAT WE HAVE MADE SOME PROGRESS WITH OUR LITTLE PROBLEM + WHY + THERE CAN BE ONLY ONE ADEQUATE REASON + SOMEONE WANTED TO LEARN TO IMITATE YOUR WRITING AND HAD TO PROCURE A SPECIMEN OF IT FIRST + AND NOW IF WE PASS ON TO THE SECOND POINT WE FIND THAT EACH THROWS LIGHT UPON THE OTHER + THAT POINT IS THE REQUEST MADE BY PINNER THAT YOU SHOULD NOT RESIGN YOUR PLACE BUT SHOULD LEAVE THE MANAGER OF THIS IMPORTANT BUSINESS IN THE FULL EXPECTATION THAT A MR. HALL PYCROFT WHOM HE HAD NEVER SEEN WAS ABOUT TO ENTER THE OFFICE UPON THE MONDAY MORNING QUOTE + MY GOD CRIED OUR CLIENT WHAT A BLIND BEETLE I HAVE BEEN + NOW YOU SEE THE POINT ABOUT THE HANDWRITING + SUPPOSE THAT SOMEONE TURNED UP IN YOUR PLACE WHO WROTE A COMPLETELY DIFFERENT HAND FROM THAT IN WHICH YOU HAD APPLIED FOR THE VACANCY OF COURSE THE GAME WOULD HAVE BEEN UP + BUT IN THE INTERVAL THE ROGUE HAD LEARNED TO IMITATE YOU AND HIS POSITION WAS THEREFORE SECURE AS I PRESUME THAT NOBODY IN THE OFFICE HAD EVER SET EYES UPON YOU + NOT A SOUL GROANED HALL PYCROFT + VERY GOOD + OF COURSE IT WAS OF THE UTMOST IMPORTANCE TO PREVENT YOU FROM THINKING BETTER OF IT AND ALSO TO KEEP YOU FROM COMING INTO CONTACT WITH ANYONE WHO MIGHT TELL YOU THAT YOUR DOUBLE WAS AT WORK IN MAWSON'S OFFICE + THEREFORE THEY GAVE YOU A HANDSOME ADVANCE ON YOUR SALARY AND RAN YOU OFF TO THE MIDLLANDS WHERE THEY GAVE YOU ENOUGH WORK TO DO TO PREVENT YOUR GOING TO LONDON WHERE YOU MIGHT HAVE BURST THEIR LITTLE GAME UP + THAT IS ALL PLAIN ENOUGH + QUOTE BUT WHY SHOULD THIS MAN PRETEND TO BE HIS OWN BROTHER QUOTE + WELL THAT IS PRETTY CLEAR ALSO + THERE ARE EVIDENTLY ONLY TWO OF THEM IN IT + THE OTHER IS IMPERSONATING YOU AT THE OFFICE + THIS ONE ACTED AS YOUR ENGAGER AND THEN FOUND THAT HE COULD NOT FIND YOU AN EMPLOYER WITHOUT ADMITTING A THIRD PERSON INTO HIS PLOT + THAT HE WAS MOST UNWILLING TO DO + HE CHANGED HIS APPEARANCE AS FAR AS HE COULD AND TRUSTED THAT THE LIKENESS WHICH YOU COULD NOT FAIL TO OBSERVE WOULD BE PUT DOWN TO A FAMILY RESEMBLANCE + BUT FOR THE HAPPY CHANCE OF THE GOLD STUFFING YOUR SUSPICIONS WOULD PROBABLY NEVER HAVE BEEN AROUSED + HALL PYCROFT SHOOK HIS CLENCHED HANDS IN THE AIR + GOOD LORD HE CRIED WHILE I HAVE BEEN FOOLED IN THIS WAY WHAT HAS THIS OTHER HALL PYCROFT BEEN DOING AT MAWSON'S + WHAT SHOULD WE DO MR. HOLMES + TELL ME WHAT TO DO + WE MUST WIRE TO MAWSON'S + QUOTE THEY SHUT AT TWELVE ON SATURDAYS QUOTE + NEVER MIND + THERE MAY BE SOME DOOR KEEPER OR ATTENDANT + AH YES THEY KEEP A PERMANENT GUARD THERE ON ACCOUNT OF THE VALUE OF THE SECURITIES THAT THEY HOLD + I REMEMBER HEARING IT TALKED OF IN THE CITY + VERY GOOD WE SHALL WIRE TO HIM AND SEE IF ALL IS WELL AND IF A CLERK OF YOUR NAME IS WORKING THERE + THAT IS CLEAR ENOUGH BUT WHAT IS NOT SO CLEAR IS WHY AT SIGHT OF US ONE OF THE ROGUES SHOULD INSTANTLY WALK OUT OF THE ROOM AND HANG HIMSELF QUOTE + THE PAPER CROAKED A VOICE BEHIND US + THE MAN WAS SITTING UP BLANCHED AND GHASTLY WITH RETURNING REASON IN HIS EYES AND HANDS WHICH RUBBED NERVOUSLY AT THE BROAD RED BAND WHICH STILL ENCIRCLED HIS THROAT + THE PAPER + OF COURSE YELLED HOLMES IN A PAROXYSM OF EXCITEMENT + IDIOT THAT I WAS + I THOUGHT SO MUCH OF OUR VISIT THAT THE PAPER NEVER ENTERED MY HEAD FOR AN INSTANT + TO BE SURE THE SECRET MUST LIE THERE + HE FLATTENED IT OUT UPON THE TABLE AND A CRY OF TRIUMPH BURST FROM HIS LIPS + QUOTE LOOK AT THIS WATSON QUOTE HE CRIED + IT IS A LONDON PAPER AN EARLY EDITION OF THE EVENING STANDARD + HERE IS WHAT WE WANT + LOOK AT THE HEADLINES CRIME IN THE CITY + MURDER AT MAWSON AND WILLIAMS'S + GIGANTIC ATTEMPTED ROBBERY + CAPTURE OF THE CRIMINAL + HERE WATSON WE ARE ALL EQUALLY ANXIOUS TO HEAR IT SO KINDLY READ IT ALOUD TO US + IT APPEARED FROM ITS POSITION IN THE PAPER TO HAVE BEEN THE ONE EVENT OF IMPORTANCE IN TOWN AND THE ACCOUNT OF IT RAN IN THIS WAY A DESPERATE ATTEMPT AT ROBBERY CULMINATING IN THE DEATH OF ONE MAN AND THE CAPTURE OF THE CRIMINAL OCCURRED THIS AFTERNOON IN THE CITY + FOR SOME TIME BACK MAWSON AND WILLIAMS THE FAMOUS FINANCIAL HOUSE HAVE BEEN THE GUARD IANS OF SECURITIES WHICH AMOUNT IN THE AGGREGATE TO A SUM OF CONSIDERABLY OVER A MILLION STERLING + SO CONSCIOUS WAS THE MANAGER OF THE RESPONSIBILITY WHICH DEVOLVED UPON HIM IN CONSEQUENCE OF THE GREAT INTERESTS AT STAKE THAT SAFES OF THE VERY LATEST CONSTRUCTION HAVE BEEN EMPLOYED AND AN ARMED WATCHMAN HAS BEEN LEFT DAY AND NIGHT IN THE BUILDING + IT APPEARS THAT LAST WEEK A NEW CLERK NAMED HALL PYCROFT WAS ENGAGED BY THE FIRM + THIS PERSON APPEARS TO HAVE BEEN NONE OTHER THAN BEDDINGTON THE FAMOUS FORGER AND CRACKSMAN WHO WITH HIS BROTHER HAS ONLY RECENTLY EMERGED FROM A FIVE YEARS' SPELL OF PENAL SERVITUDE + BY SOME MEANS WHICH ARE NOT YET CLEAR HE SUCCEEDED IN WINNING UNDER A FALSE NAME THIS OFFICIAL POSITION IN THE OFFICE WHICH HE UTILIZED IN ORDER TO OBTAIN MOULDINGS OF VARIOUS LOCKS AND A THOR OUGH KNOWLEDGE OF THE POSITION OF THE STRONGROOM AND THE SAFES + IT IS CUSTOMARY AT MAWSON'S FOR THE CLERKS TO LEAVE AT MIDDAY ON SATURDAY + SERGEANT TUSON OF THE CITY POLICE WAS SOMEWHAT SURPRISED THEREFORE TO SEE A GENTLEMAN WITH A CARPET BAG COME DOWN THE STEPS AT TWENTY MINUTES PAST ONE + HIS SUSPICIONS BEING AROUSED THE SERGEANT FOLLOWED THE MAN AND WITH THE AID OF CONSTABLE POLLOCK SUCCEEDED AFTER A MOST DESPERATE RESISTANCE IN ARRESTING HIM + IT WAS AT ONCE CLEAR THAT. A DARING AND GIGANTIC ROBBERY HAD BEEN COMMITTED + NEARLY A HUNDRED THOUSAND POUNDS' WORTH OF AMERICAN RAILWAY BONDS WITH A LARGE AMOUNT OF SCRIP IN MINES AND OTHER COMPANIES WAS DISCOVERED IN THE BAG + ON EXAMINING THE PREMISES THE BODY OF THE UNFORTUNATE WATCH MAN WAS FOUND DOUBLED UP AND THRUST INTO THE LARGEST OF THE SAFES WHERE IT WOULD NOT HAVE BEEN DISCOVERED UNTIL MON DAY MORNING HAD IT NOT BEEN FOR THE PROMPT ACTION OF SERGEANT TUSON + THE MAN'S SKULL HAD BEEN SHATTERED BY A BLOW FROM A POKER DELIVERED FROM BEHIND + THERE COULD BE NO DOUBT THAT BEDDINGTON HAD OBTAINED ENTRANCE BY PRETEND ING THAT HE HAD LEFT SOMETHING BEHIND HIM AND HAVING MURDERED THE WATCHMAN RAPIDLY RIFLED THE LARGE SAFE AND THEN MADE OFF WITH HIS BOOTY + HIS BROTHER WHO USUALLY WORKS WITH HIM HAS NOT APPEARED IN THIS JOB AS FAR AS CAN AT PRESENT BE ASCERTAINED ALTHOUGH THE POLICE ARE MAKING ENER GETIC INQUIRIES AS TO HIS WHEREABOUTS + QUOTE WELL WE MAY SAVE THE POLICE SOME LITTLE TROUBLE IN THAT DIRECTION QUOTE SAID HOLMES GLANCING AT THE HAGGARD FIGURE HUDDLED UP BY THE WINDOW + HUMAN NATURE IS A STRANGE MIXTURE WATSON + YOU SEE THAT EVEN A VILLAIN AND MURDERER CAN INSPIRE SUCH AFFECTION THAT HIS BROTHER TURNS TO SUICIDE WHEN HE LEARNS THAT HIS NECK IS FORFEITED + HOWEVER WE HAVE NO CHOICE AS TO OUR ACTION + THE DOCTOR AND I WILL REMAIN ON GUARD MR. PYCROFT IF YOU WILL HAVE THE KINDNESS TO STEP OUT FOR THE POLICE diff --git a/samples/LMTutorial/train/study_in_scarlet.txt b/samples/LMTutorial/train/study_in_scarlet.txt new file mode 100755 index 0000000..a98a9dc --- /dev/null +++ b/samples/LMTutorial/train/study_in_scarlet.txt @@ -0,0 +1,2607 @@ + PART ONE BEING A REPRINT FROM THE REMINISCENCES OF JOHN H. WATSON M. D. LATE OF THE ARMY MEDICAL DEPARTMENT CHAPTER ONE MR. SHERLOCK HOLMES + IN THE YEAR ONE THOUSAND EIGHT HUNDRED SEVENTY EIGHT I TOOK MY DEGREE OF DOCTOR OF MEDICINE OF THE UNIVERSITY OF LONDON AND PROCEEDED TO NETLEY TO GO THROUGH THE COURSE PRESCRIBED FOR SURGEONS IN THE ARMY + HAVING COMPLETED MY STUDIES THERE I WAS DULY ATTACHED TO THE FIFTH NORTHUMBERLAND FUSILIERS AS ASSISTANT SURGEON + THE REGIMENT WAS STATIONED IN INDIA AT THE TIME AND BEFORE I COULD JOIN IT THE SECOND AFGHAN WAR HAD BROKEN OUT + ON LANDING AT BOMBAY I LEARNED THAT MY CORPS HAD ADVANCED THROUGH THE PASSES AND WAS ALREADY DEEP IN THE ENEMY'S COUNTRY + I FOLLOWED HOWEVER WITH MANY OTHER OFFICERS WHO WERE IN THE SAME SITUATION AS MYSELF AND SUCCEEDED IN REACHING CANDAHAR IN SAFETY WHERE I FOUND MY REGIMENT AND AT ONCE ENTERED UPON MY NEW DUTIES + THE CAMPAIGN BROUGHT HONOURS AND PROMOTION TO MANY BUT FOR ME IT HAD NOTHING BUT MISFORTUNE AND DISASTER + I WAS REMOVED FROM MY BRIGADE AND ATTACHED TO THE BERKSHIRES WITH WHOM I SERVED AT THE FATAL BATTLE OF MAIWAND + THERE I WAS STRUCK ON THE SHOULDER BY A JEZAIL BULLET WHICH SHATTERED THE BONE AND GRAZED THE SUBCLAVIAN ARTERY + I SHOULD HAVE FALLEN INTO THE HANDS OF THE MURDEROUS GHAZIS HAD IT NOT BEEN FOR THE DEVOTION AND COURAGE SHOWN BY MURRAY MY ORDERLY WHO THREW ME ACROSS A PACKHORSE AND SUCCEEDED IN BRINGING ME SAFELY TO THE BRITISH LINES + WORN WITH PAIN AND WEAK FROM THE PROLONGED HARDSHIPS WHICH I HAD UNDERGONE I WAS REMOVED WITH A GREAT TRAIN OF WOUNDED SUFFERERS TO THE BASE HOSPITAL AT PESHAWAR + HERE I RALLIED AND HAD ALREADY IMPROVED SO FAR AS TO BE ABLE TO WALK ABOUT THE WARDS AND EVEN TO BASK A LITTLE UPON THE VERANDA WHEN I WAS STRUCK DOWN BY ENTERIC FEVER THAT CURSE OF OUR INDIAN POSSESSIONS + FOR MONTHS MY LIFE WAS DESPAIRED OF AND WHEN AT LAST I CAME TO MYSELF AND BECAME CONVALESCENT I WAS SO WEAK AND EMACIATED THAT A MEDICAL BOARD DETERMINED THAT NOT A DAY SHOULD BE LOST IN SENDING ME BACK TO ENGLAND + I WAS DESPATCHED ACCORDINGLY IN THE TROOPSHIP ORONTES AND LANDED A MONTH LATER ON PORTSMOUTH JETTY WITH MY HEALTH IRRETRIEVABLY RUINED BUT WITH PERMISSION FROM A PATERNAL GOVERNMENT TO SPEND THE NEXT NINE MONTHS IN ATTEMPTING TO IMPROVE IT + I HAD NEITHER KITH NOR KIN IN ENGLAND AND WAS THEREFORE AS FREE AS AIR OR AS FREE AS AN INCOME OF ELEVEN SHILLINGS AND SIXPENCE A DAY WILL PERMIT A MAN TO BE + UNDER SUCH CIRCUMSTANCES I NATURALLY GRAVITATED TO LONDON THAT GREAT CESSPOOL INTO WHICH ALL THE LOUNGERS AND IDLERS OF THE EMPIRE ARE IRRESISTIBLY DRAINED + THERE I STAYED FOR SOME TIME AT A PRIVATE HOTEL IN THE STRAND LEADING A COMFORTLESS MEANINGLESS EXISTENCE AND SPENDING SUCH MONEY AS I HAD CONSIDERABLY MORE FREELY THAN I OUGHT + SO ALARMING DID THE STATE OF MY FINANCES BECOME THAT I SOON REALIZED THAT I MUST EITHER LEAVE THE METROPOLIS AND RUSTICATE SOMEWHERE IN THE COUNTRY OR THAT I MUST MAKE A COMPLETE ALTERATION IN MY STYLE OF LIVING + CHOOSING THE LATTER ALTERNATIVE I BEGAN BY MAKING UP MY MIND TO LEAVE THE HOTEL AND TAKE UP MY QUARTERS IN SOME LESS PRETENTIOUS AND LESS EXPENSIVE DOMICILE + ON THE VERY DAY THAT I HAD COME TO THIS CONCLUSION I WAS STANDING AT THE CRITERION BAR WHEN SOMEONE TAPPED ME ON THE SHOULDER AND TURNING ROUND I RECOGNIZED YOUNG STAMFORD WHO HAD BEEN A DRESSER UNDER ME AT BART'S + THE SIGHT OF A FRIENDLY FACE IN THE GREAT WILDERNESS OF LONDON IS A PLEASANT THING INDEED TO A LONELY MAN + IN OLD DAYS STAMFORD HAD NEVER BEEN A PARTICULAR CRONY OF MINE BUT NOW I HAILED HIM WITH ENTHUSIASM AND HE IN HIS TURN APPEARED TO BE DELIGHTED TO SEE ME + IN THE EXUBERANCE OF MY JOY I ASKED HIM TO LUNCH WITH ME AT THE HOLBORN AND WE STARTED OFF TOGETHER IN A HANSOM + QUOTE WHATEVER HAVE YOU BEEN DOING WITH YOURSELF WATSON QUOTE HE ASKED IN UNDISGUISED WONDER AS WE RATTLED THROUGH THE CROWDED LONDON STREETS + YOU ARE AS THIN AS A LATH AND AS BROWN AS A NUT + I GAVE HIM A SHORT SKETCH OF MY ADVENTURES AND HAD HARDLY CONCLUDED IT BY THE TIME THAT WE REACHED OUR DESTINATION + POOR DEVIL HE SAID COMMISERATINGLY AFTER HE HAD LISTENED TO MY MISFORTUNES + WHAT ARE YOU UP TO NOW + LOOKING FOR LODGINGS I ANSWERED + TRYING TO SOLVE THE PROBLEM AS TO WHETHER IT IS POSSIBLE TO GET COMFORTABLE ROOMS AT A REASONABLE PRICE + QUOTE THAT'S A STRANGE THING QUOTE REMARKED MY COMPANION QUOTE YOU ARE THE SECOND MAN TODAY THAT HAS USED THAT EXPRESSION TO ME QUOTE + AND WHO WAS THE FIRST + I ASKED + A FELLOW WHO IS WORKING AT THE CHEMICAL LABORATORY UP AT THE HOSPITAL + HE WAS BEMOANING HIMSELF THIS MORNING BECAUSE HE COULD NOT GET SOMEONE TO GO HALVES WITH HIM IN SOME NICE ROOMS WHICH HE HAD FOUND AND WHICH WERE TOO MUCH FOR HIS PURSE + BY JOVE + I CRIED IF HE REALLY WANTS SOMEONE TO SHARE THE ROOMS AND THE EXPENSE I AM THE VERY MAN FOR HIM + I SHOULD PREFER HAVING A PARTNER TO BEING ALONE QUOTE + YOUNG STAMFORD LOOKED RATHER STRANGELY AT ME OVER HIS WINEGLASS + YOU DON'T KNOW SHERLOCK HOLMES YET HE SAID PERHAPS YOU WOULD NOT CARE FOR HIM AS A CONSTANT COMPANION + WHY WHAT IS THERE AGAINST HIM + OH I DIDN'T SAY THERE WAS ANYTHING AGAINST HIM + HE IS A LITTLE QUEER IN HIS IDEAS AN ENTHUSIAST IN SOME BRANCHES OF SCIENCE + AS FAR AS I KNOW HE IS A DECENT FELLOW ENOUGH + A MEDICAL STUDENT I SUPPOSE SAID I + QUOTE NO I HAVE NO IDEA WHAT HE INTENDS TO GO IN FOR + I BELIEVE HE IS WELL UP IN ANATOMY AND HE IS A FIRST CLASS CHEMIST BUT AS FAR AS I KNOW HE HAS NEVER TAKEN OUT ANY SYSTEMATIC MEDICAL CLASSES + HIS STUDIES ARE VERY DESULTORY AND ECCENTRIC BUT HE HAS AMASSED A LOT OF OUT OF THE WAY KNOWLEDGE WHICH WOULD ASTONISH HIS PROFESSORS + DID YOU NEVER ASK HIM WHAT HE WAS GOING IN FOR + I ASKED + NO HE IS NOT A MAN THAT IT IS EASY TO DRAW OUT THOUGH HE CAN BE COMMUNICATIVE ENOUGH WHEN THE FANCY SEIZES HIM + I SHOULD LIKE TO MEET HIM I SAID + IF I AM TO LODGE WITH ANYONE I SHOULD PREFER A MAN OF STUDIOUS AND QUIET HABITS + I AM NOT STRONG ENOUGH YET TO STAND MUCH NOISE OR EXCITEMENT + I HAD ENOUGH OF BOTH IN AFGHANISTAN TO LAST ME FOR THE REMAINDER OF MY NATURAL EXISTENCE + HOW COULD I MEET THIS FRIEND OF YOURS QUOTE + HE IS SURE TO BE AT THE LABORATORY RETURNED MY COMPANION + HE EITHER AVOIDS THE PLACE FOR WEEKS OR ELSE HE WORKS THERE FROM MORNING TILL NIGHT + IF YOU LIKE WE WILL DRIVE ROUND TOGETHER AFTER LUNCHEON + CERTAINLY I ANSWERED AND THE CONVERSATION DRIFTED AWAY INTO OTHER CHANNELS + AS WE MADE OUR WAY TO THE HOSPITAL AFTER LEAVING THE HOLBORN STAMFORD GAVE ME A FEW MORE PARTICULARS ABOUT THE GENTLEMAN WHOM I PROPOSED TO TAKE AS A FELLOW LODGER + YOU MUSTN'T BLAME ME IF YOU DON'T GET ON WITH HIM HE SAID I KNOW NOTHING MORE OF HIM THAN I HAVE LEARNED FROM MEETING HIM OCCASIONALLY IN THE LABORATORY + YOU PROPOSED THIS ARRANGEMENT SO YOU MUST NOT HOLD ME RESPONSIBLE QUOTE + IF WE DON'T GET ON IT WILL BE EASY TO PART COMPANY I ANSWERED + IT SEEMS TO ME STAMFORD I ADDED LOOKING HARD AT MY COMPANION THAT YOU HAVE SOME REASON FOR WASHING YOUR HANDS OF THE MATTER + IS THIS FELLOW'S TEMPER SO FORMIDABLE OR WHAT IS IT + DON'T BE MEALYMOUTHED ABOUT IT + IT IS NOT EASY TO EXPRESS THE INEXPRESSIBLE HE ANSWERED WITH A LAUGH + HOLMES IS A LITTLE TOO SCIENTIFIC FOR MY TASTES IT APPROACHES TO COLD BLOODEDNESS + I COULD IMAGINE HIS GIVING A FRIEND A LITTLE PINCH OF THE LATEST VEGETABLE ALKALOID NOT OUT OF MALEVOLENCE YOU UNDERSTAND BUT SIMPLY OUT OF A SPIRIT OF INQUIRY IN ORDER TO HAVE AN ACCURATE IDEA OF THE EFFECTS + TO DO HIM JUSTICE I THINK THAT HE WOULD TAKE IT HIMSELF WITH THE SAME READINESS + HE APPEARS TO HAVE A PASSION FOR DEFINITE AND EXACT KNOWLEDGE QUOTE + VERY RIGHT TOO + YES BUT IT MAY BE PUSHED TO EXCESS + WHEN IT COMES TO BEATING THE SUBJECTS IN THE DISSECTING ROOMS WITH A STICK IT IS CERTAINLY TAKING RATHER A BIZARRE SHAPE + BEATING THE SUBJECTS + YES TO VERIFY HOW FAR BRUISES MAY BE PRODUCED AFTER DEATH + I SAW HIM AT IT WITH MY OWN EYES QUOTE + AND YET YOU SAY HE IS NOT A MEDICAL STUDENT + NUMBER + HEAVEN KNOWS WHAT THE OBJECTS OF HIS STUDIES ARE + BUT HERE WE ARE AND YOU MUST FORM YOUR OWN IMPRESSIONS ABOUT HIM + AS HE SPOKE WE TURNED DOWN A NARROW LANE AND PASSED THROUGH A SMALL SIDE DOOR WHICH OPENED INTO A WING OF THE GREAT HOSPITAL + IT WAS FAMILIAR GROUND TO ME AND I NEEDED NO GUIDING AS WE ASCENDED THE BLEAK STONE STAIRCASE AND MADE OUR WAY DOWN THE LONG CORRIDOR WITH ITS VISTA OF WHITEWASHED WALL AND DUNCOLOURED DOORS + NEAR THE FARTHER END A LOW ARCHED PASSAGE BRANCHED AWAY FROM IT AND LED TO THE CHEMICAL LABORATORY + THIS WAS A LOFTY CHAMBER LINED AND LITTERED WITH COUNTLESS BOTTLES + BROAD LOW TABLES WERE SCATTERED ABOUT WHICH BRISTLED WITH RETORTS TEST TUBES AND LITTLE BUNSEN LAMPS WITH THEIR BLUE FLICKERING FLAMES + THERE WAS ONLY ONE STUDENT IN THE ROOM WHO WAS BENDING OVER A DISTANT TABLE ABSORBED IN HIS WORK + AT THE SOUND OF OUR STEPS HE GLANCED ROUND AND SPRANG TO HIS FEET WITH A CRY OF PLEASURE + I'VE FOUND IT + I'VE FOUND IT HE SHOUTED TO MY COMPANION RUNNING TOWARDS US WITH A TEST TUBE IN HIS HAND + QUOTE I HAVE FOUND A RE AGENT WHICH IS PRECIPITATED BY HAEMOGLOBIN AND BY NOTHING ELSE QUOTE + HAD HE DISCOVERED A GOLD MINE GREATER DELIGHT COULD NOT HAVE SHONE UPON HIS FEATURES + DOCTOR WATSON MR. SHERLOCK HOLMES SAID STAMFORD INTRODUCING US + HOW ARE YOU HE SAID CORDIALLY GRIPPING MY HAND WITH A STRENGTH FOR WHICH I SHOULD HARDLY HAVE GIVEN HIM CREDIT + YOU HAVE BEEN IN AFGHANISTAN I PERCEIVE + HOW ON EARTH DID YOU KNOW THAT + I ASKED IN ASTONISHMENT + NEVER MIND SAID HE CHUCKLING TO HIMSELFL THE QUESTION NOW IS ABOUT HAEMOGLOBIN + NO DOUBT YOU SEE THE SIGNIFICANCE OF THIS DISCOVERY OF MINE QUOTE + WHY MAN IT IS THE MOST PRACTICAL MEDICO LEGAL DISCOVERY FOR YEARS + DON'T YOU SEE THAT IT GIVES US AN INFALLIBLE TEST FOR BLOOD STAINS + COME OVER HERE NOW + HE SEIZED ME BY THE COAT SLEEVE IN HIS EAGERNESS AND DREW ME OVER TO THE TABLE AT WHICH HE HAD BEEN WORKING + LET US HAVE SOME FRESH BLOOD HE SAID DIGGING A LONG BODKIN INTO HIS FINGER AND DRAWING OFF THE RESULTING DROP OF BLOOD IN A CHEMICAL PIPETTE + NOW I ADD THIS SMALL QUANTITY OF BLOOD TO A LITRE OF WATER + YOU PERCEIVE THAT THE RESULTING MIXTURE HAS THE APPEARANCE OF PURE WATER + THE PROPORTION OF BLOOD CANNOT BE MORE THAN ONE IN A MILLION + I HAVE NO DOUBT HOWEVER THAT WE SHALL BE ABLE TO OBTAIN THE CHARACTERISTIC REACTION + AS HE SPOKE HE THREW INTO THE VESSEL A FEW WHITE CRYSTALS AND THEN ADDED SOME DROPS OF A TRANSPARENT FLUID + IN AN INSTANT THE CONTENTS ASSUMED A DULL MAHOGAHY COLOUR AND A BROWNISH DUST WAS PRECIPITATED TO THE BOTTOM OF THE GLASS JAR + QUOTE HA HA QUOTE HE CRIED CLAPPING HIS HANDS AND LOOKING AS DELIGHTED AS A CHILD WITH A NEW TOY + WHAT DO YOU THINK OF THAT + IT SEEMS TO BE A VERY DELICATE TEST I REMARKED + BEAUTIFUL BEAUTIFUL + THE OLD GUAIACUM TEST WAS VERY CLUMSY AND UNCERTAIN + SO IS THE MICROSCOPIC EXAMINATION FOR BLOOD CORPUSCLES + THE LATTER IS VALUELESS IF THE STAINS ARE A FEW HOURS OLD + NOW THIS APPEARS TO ACT AS WELL WHETHER THE BLOOD IS OLD OR NEW + HAD THIS TEST BEEN INVENTED THERE ARE HUNDREDS OF MEN NOW WALKING THE EARTH WHO WOULD LONG AGO HAVE PAID THE PENALTY OF THEIR CRIMES + INDEED + I MURMURED + QUOTE CRIMINAL CASES ARE CONTINUALLY HINGING UPON THAT ONE POINT + A MAN IS SUSPECTED OF A CRIME MONTHS PERHAPS AFTER IT HAS BEEN COMMITTED + HIS LINEN OR CLOTHES ARE EXAMINED AND BROWNISH STAINS DISCOVERED UPON THEM + ARE THEY BLOOD STAINS OR MUD STAINS OR RUST STAINS OR FRUIT STAINS OR WHAT ARE THEY + THAT IS A QUESTION WHICH HAS PUZZLED MANY AN EXPERT AND WHY + BECAUSE THERE WAS NO RELIABLE TEST + NOW WE HAVE THE SHERLOCK HOLMES'S TEST AND THERE WILL NO LONGER BE ANY DIFFICULTY + HIS EYES FAIRLY GLITTERED AS HE SPOKE AND HE PUT HIS HAND OVER HIS HEART AND BOWED AS IF TO SOME APPLAUDING CROWD CONJURED UP BY HLS IMAGINATION + YOU ARE TO BE CONGRATULATED I REMARKED CONSIDERABLY SURPRISED AT HIS ENTHUSIASM + THERE WAS THE CASE OF VON BISCHOFF AT FRANKFORT LAST YEAR + HE WOULD CERTAINLY HAVE BEEN HUNG HAD THIS TEST BEEN IN EXISTENCE + THEN THERE WAS MASON OF BRADFORD AND THE NOTORIOUS MULLER AND LEFEVRE OF MONTPELLIER AND SAMSON OF NEW ORLEANS + I COULD NAME A SCORE OF CASES IN WHICH IT WOULD HAVE BEEN DECISIVE + YOU SEEM TO BE A WALKING CALENDAR OF CRIME SAID STAMFORD WITH A LAUGH + QUOTE YOU MIGHT START A PAPER ON THOSE LINES + CALL IT THE POLICE NEWS OF THE PAST + VERY INTERESTING READING IT MIGHT BE MADE TOO REMARKED SHERLOCK HOLMES STICKING A SMALL PIECE OF PLASTER OVER THE PRICK ON HIS FINGER + I HAVE TO BE CAREFUL HE CONTINUED TURNING TO ME WITH A SMILE FOR I DABBLE WITH POISONS A GOOD DEAL + HE HELD OUT HIS HAND AS HE SPOKE AND I NOTICED THAT IT WAS ALL MOTTLED OVER WITH SIMILAR PIECES OF PLASTER AND DISCOLOURED WITH STRONG ACIDS + WE CAME HERE ON BUSINESS SAID STAMFORD SITTING DOWN ON A HIGH THREE LEGGED STOOL AND PUSHING ANOTHER ONE IN MY DIRECTION WITH HIS FOOT + MY FRIEND HERE WANTS TO TAKE DIGGINGS AND AS YOU WERE COMPLAINING THAT YOU COULD GET NO ONE TO GO HALVES WITH YOU I THOUGHT THAT I HAD BETTER BRING YOU TOGETHER + SHERLOCK HOLMES SEEMED DELIGHTED AT THE IDEA OF SHARING HIS ROOMS WITH ME + QUOTE I HAVE MY EYE ON A SUITE IN BAKER STREET QUOTE HE SAID QUOTE WHICH WOULD SUIT US DOWN TO THE GROUND + YOU DON'T MIND THE SMELL OF STRONG TOBACCO I HOPE + I ALWAYS SMOKE SHIP'S' MYSELF I ANSWERED + THAT'S GOOD ENOUGH + I GENERALLY HAVE CHEMICALS ABOUT AND OCCASIONALLY DO EXPERIMENTS + WOULD THAT ANNOY YOU + BY NO MEANS + QUOTE LET ME SEE WHAT ARE MY OTHER SHORTCOMINGS + I GET IN THE DUMPS AT TIMES AND DON'T OPEN MY MOUTH FOR DAYS ON END + YOU MUST NOT THINK I AM SULKY WHEN I DO THAT + JUST LET ME ALONE AND I'LL SOON BE RIGHT + WHAT HAVE YOU TO CONFESS NOW + IT'S JUST AS WELL FOR TWO FELLOWS TO KNOW THE WORST OF ONE ANOTHER BEFORE THEY BEGIN TO LIVE TOGETHER + I LAUGHED AT THIS CROSS EXAMINATION + I KEEP A BULL PUP I SAID AND I OBJECT TO ROWS BECAUSE MY NERVES ARE SHAKEN AND I GET UP AT ALL SORTS OF UNGODLY HOURS AND I AM EXTREMELY LAZY + I HAVE ANOTHER SET OF VICES WHEN I'M WELL BUT THOSE ARE THE PRINCIPAL ONES AT PRESENT + DO YOU INCLUDE VIOLIN PLAYING IN YOUR CATEGORY OF ROWS HE ASKED ANXIOUSLY + IT DEPENDS ON THE PLAYER I ANSWERED + QUOTE A WELL PLAYED VIOLIN IS A TREAT FOR THE GODS A BADLY PLAYED ONE QUOTE + OH THAT'S ALL RIGHT HE CRIED WITH A MERRY LAUGH + I THINK WE MAY CONSIDER THE THING AS SETTLED THAT IS IF THE ROOMS ARE AGREEABLE TO YOU + WHEN SHALL WE SEE THEM + CALL FOR ME HERE AT NOON TO MORROW AND WE'LL GO TOGETHER AND SETTLE EVERYTHING HE ANSWERED + ALL RIGHT NOON EXACTLY SAID I SHAKING HIS HAND + WE LEFT HIM WORKING AMONG HIS CHEMICALS AND WE WALKED TOGETHER TOWARDS MY HOTEL + QUOTE BY THE WAY QUOTE I ASKED SUDDENLY STOPPING AND TURNING UPON STAMFORD QUOTE HOW THE DEUCE DID HE KNOW THAT I HAD COME FROM AFGHANISTAN QUOTE + MY COMPANION SMILED AN ENIGMATICAL SMILE + THAT'S JUST HIS LITTLE PECULIARITY HE SAID + A GOOD MANY PEOPLE HAVE WANTED TO KNOW HOW HE FINDS THINGS OUT + OH A MYSTERY IS IT + I CRIED RUBBING MY HANDS + THIS IS VERY PIQUANT + I AM MUCH OBLIGED TO YOU FOR BRINGING US TOGETHER + THE PROPER STUDY OF MANKIND IS MAN YOU KNOW + QUOTE YOU MUST STUDY HIM THEN QUOTE STAMFORD SAID AS HE BADE ME GOOD BYE + YOU'LL FIND HIM A KNOTTY PROBLEM THOUGH + I'LL WAGER HE LEARNS MORE ABOUT YOU THAN YOU ABOUT HIM + GOOD BYE + GOOD BYE I ANSWERED AND STROLLED ON TO MY HOTEL CONSIDERABLY INTERESTED IN MY NEW ACQUAINTANCE + CHAPTER TWO THE SCIENCE OF DEDUCTION + WE MET NEXT DAY AS HE HAD ARRANGED AND INSPECTED THE ROOMS AT NUMBER TWENTY TWO L. B. BAKER STREET OF WHICH HE HAD SPOKEN AT OUR MEETING + THEY CONSISTED OF A COUPLE OF COMFORTABLE BEDROOMS AND A SINGLE LARGE AIRY SITTING ROOM CHEERFULLY FURNISHED AND ILLUMINATED BY TWO BROAD WINDOWS + SO DESIRABLE IN EVERY WAY WERE THE APARTMENTS AND SO MODERATE DID THE TERMS SEEM WHEN DIVIDED BETWEEN US THAT THE BARGAIN WAS CONCLUDED UPON THE SPOT AND WE AT ONCE ENTERED INTO POSSESSION + THAT VERY EVENING I MOVED MY THINGS ROUND FROM THE HOTEL AND ON THE FOLLOWING MORNING SHERLOCK HOLMES FOLLOWED ME WITH SEVERAL BOXES AND PORTMANTEAUS + FOR A DAY OR TWO WE WERE BUSILY EMPLOYED IN UNPACKING AND LAYING OUT OUR PROPERTY TO THE BEST ADVANTAGE + THAT DONE WE GRADUALLY BEGAN TO SETTLE DOWN AND TO ACCOMMODATE OURSELVES TO OUR NEW SURROUNDINGS + HOLMES WAS CERTAINLY NOT A DIFFICULT MAN TO LIVE WITH + HE WAS QUIET IN HIS WAYS AND HIS HABITS WERE REGULAR + IT WAS RARE FOR HIM TO BE UP AFTER TEN AT NIGHT AND HE HAD INVARIABLY BREAKFASTED AND GONE OUT BEFORE I ROSE IN THE MORNING + SOMETIMES HE SPENT HIS DAY AT THE CHEMICAL LABORATORY SOMETIMES IN THE DISSECTINGROOMS AND OCCASIONALLY IN LONG WALKS WHICH APPEARED TO TAKE HIM INTO THE LOWEST PORTIONS OF THE CITY + NOTHING COULD EXCEED HIS ENERGY WHEN THE WORKING FIT WAS UPON HIM BUT NOW AND AGAIN A REACTION WOULD SEIZE HIM AND FOR DAYS ON END HE WOULD LIE UPON THE SOFA IN THE SITTING ROOM HARDLY UTTERING A WORD OR MOVING A MUSCLE FROM MORNING TO NIGHT + ON THESE OCCASIONS I HAVE NOTICED SUCH A DREAMY VACANT EXPRESSION IN HIS EYES THAT I MIGHT HAVE SUSPECTED HIM OF BEING ADDICTED TO THE USE OF SOME NARCOTIC HAD NOT THE TEMPERANCE AND CLEANLINESS OF HIS WHOLE LIFE FORBIDDEN SUCH A NOTION + AS THE WEEKS WENT BY MY INTEREST IN HIM AND MY CURIOSITY AS TO HIS AIMS IN LIFE GRADUALLY DEEPENED AND INCREASED + HIS VERY PERSON AND APPEARANCE WERE SUCH AS TO STRIKE THE ATTENTION OF THE MOST CASUAL OBSERVER + IN HEIGHT HE WAS RATHER OVER SIX FEET AND SO EXCESSIVELY LEAN THAT HE SEEMED TO BE CONSIDERABLY TALLER + HIS EYES WERE SHARP AND PIERCING SAVE DURING THOSE INTERVALS OF TORPOR TO WHICH I HAVE ALLUDED AND HIS THIN HAWK LIKE NOSE GAVE HIS WHOLE EXPRESSION AN AIR OF ALERTNESS AND DECISION + HIS CHIN TOO HAD THE PROMINENCE AND SQUARENESS WHICH MARK THE MAN OF DETERMINATION + HIS HANDS WERE INVARIABLY BLOTTED WITH INK AND STAINED WITH CHEMICALS YET HE WAS POSSESSED OF EXTRAORDINARY DELICACY OF TOUCH AS I FREQUENTLY HAD OCCASION TO OBSERVE WHEN I WATCHED HIM MANIPULATING HIS FRAGILE PHILOSOPHICAL INSTRUMENTS + THE READER MAY SET ME DOWN AS A HOPELESS BUSYBODY WHEN I CONFESS HOW MUCH THIS MAN STIMULATED MY CURIOSITY AND HOW OFTEN I ENDEAVOURED TO BREAK THROUGH THE RETICENCE WHICH HE SHOWED ON ALL THAT CONCERNED HIMSELF + BEFORE PRONOUNCING JUDGMENT HOWEVER BE IT REMEMBERED HOW OBJECTLESS WAS MY LIFE AND HOW LITTLE THERE WAS TO ENGAGE MY ATTENTION + MY HEALTH FORBADE ME FROM VENTURING OUT UNLESS THE WEATHER WAS EXCEPTIONALLY GENIAL AND I HAD NO FRIENDS WHO WOULD CALL UPON ME AND BREAK THE MONOTONY OF MY DAILY EXISTENCE + UNDER THESE CIRCUMSTANCES I EAGERLY HAILED THE LITTLE MYSTERY WHICH HUNG AROUND MY COMPANION AND SPENT MUCH OF MY TIME IN ENDEAVOURING TO UNRAVEL IT + HE WAS NOT STUDYING MEDICINE + HE HAD HIMSELF IN REPLY TO A QUESTION CONFIRMED STAMFORD'S OPINION UPON THAT POINT + NEITHER DID HE APPEAR TO HAVE PURSUED ANY COURSE OF READING WHICH MIGHT FIT HIM FOR A DEGREE IN SCIENCE OR ANY OTHER RECOGNIZED PORTAL WHICH WOULD GIVE HIM AN ENTRANCE INTO THE LEARNED WORLD + YET HIS ZEAL FOR CERTAIN STUDIES WAS REMARKABLE AND WITHIN ECCENTRIC LIMITS HIS KNOWLEDGE WAS SO EXTRAORDINARILY AMPLE AND MINUTE THAT HIS OBSERVATIONS HAVE FAIRLY ASTOUNDED ME + SURELY NO MAN WOULD WORK SO HARD OR ATTAIN SUCH PRECISE INFORMATION UNLESS HE HAD SOME DEFINITE END IN VIEW + DESULTORY READERS ARE SELDOM REMARKABLE FOR THE EXACTNESS OF THEIR LEARNING + NO MAN BURDENS HIS MIND WITH SMALL MATTERS UNLESS HE HAS SOME VERY GOOD REASON FOR DOING SO + HIS IGNORANCE WAS AS REMARKABLE AS HIS KNOWLEDGE + OF CONTEMPORARY LITERATURE PHILOSOPHY AND POLITICS HE APPEARED TO KNOW NEXT TO NOTHING + UPON MY QUOTING THOMAS CARLYLE HE INQUIRED IN THE NAIVEST WAY WHO HE MIGHT BE AND WHAT HE HAD DONE + MY SURPRISE REACHED A CLIMAX HOWEVER WHEN I FOUND INCIDENTALLY THAT HE WAS IGNORANT OF THE COPERNICAN THEORY AND OF THE COMPOSITION OF THE SOLAR SYSTEM + THAT ANY CIVILIZED HUMAN BEING IN THIS NINETEENTH CENTURY SHOULD NOT BE AWARE THAT THE EARTH TRAVELLED ROUND THE SUN APPEARED TO ME TO BE SUCH AN EXTRAORDINARY FACT THAT I COULD HARDLY REALIZE IT + YOU APPEAR TO BE ASTONISHED HE SAID SMILING AT MY EXPRESSION OF SURPRISE + NOW THAT I DO KNOW IT I SHALL DO MY BEST TO FORGET IT + QUOTE TO FORGET IT QUOTE + YOU SEE HE EXPLAINED I CONSIDER THAT A MAN'S BRAIN ORIGINALLY IS LIKE A LITTLE EMPTY ATTIC AND YOU HAVE TO STOCK IT WITH SUCH FURNITURE AS YOU CHOOSE + A FOOL TAKES IN ALL THE LUMBER OF EVERY SORT THAT HE COMES ACROSS SO THAT THE KNOWLEDGE WHICH MIGHT BE USEFUL TO HIM GETS CROWDED OUT OR AT BEST IS JUMBLED UP WITH A LOT OF OTHER THINGS SO THAT HE HAS A DIFFICULTY IN LAYING HIS HANDS UPON IT + NOW THE SKILFUL WORKMAN IS VERY CAREFUL INDEED AS TO WHAT HE TAKES INTO HIS BRAIN ATTIC + HE WILL HAVE NOTHING BUT THE TOOLS WHICH MAY HELP HIM IN DOING HIS WORK BUT OF THESE HE HAS A LARGE ASSORTMENT AND ALL IN THE MOST PERFECT ORDER + IT IS A MISTAKE TO THINK THAT THAT LITTLE ROOM HAS ELASTIC WALLS AND CAN DISTEND TO ANY EXTENT + DEPEND UPON IT THERE COMES A TIME WHEN FOR EVERY ADDITION OF KNOWLEDGE YOU FORGET SOMETHING THAT YOU KNEW BEFORE + IT IS OF THE HIGHEST IMPORTANCE THEREFORE NOT TO HAVE USELESS FACTS ELBOWING OUT THE USEFUL ONES + BUT THE SOLAR SYSTEM + I PROTESTED + WHAT THE DEUCE IS IT TO ME HE INTERRUPTED IMPATIENTLY YOU SAY THAT WE GO ROUND THE SUN + IF WE WENT ROUND THE MOON IT WOULD NOT MAKE A PENNYWORTH OF DIFFERENCE TO ME OR TO MY WORK + I WAS ON THE POINT OF ASKING HIM WHAT THAT WORK MIGHT BE BUT SOMETHING IN HIS MANNER SHOWED ME THAT THE QUESTION WOULD BE AN UNWELCOME ONE + I PONDERED OVER OUR SHORT CONVERSATION HOWEVER AND ENDEAVOURED TO DRAW MY DEDUCTIONS FROM IT + HE SAID THAT HE WOULD ACQUIRE NO KNOWLEDGE WHICH DID NOT BEAR UPON HIS OBJECT + THEREFORE ALL THE KNOWLEDGE WHICH HE POSSESSED WAS SUCH AS WOULD BE USEFUL TO HIM + I ENUMERATED IN MY OWN MIND ALL THE VARIOUS POINTS UPON WHICH HE HAD SHOWN ME THAT HE WAS EXCEPTIONALLY WELL INFORMED + I EVEN TOOK A PENCIL AND JOTTED THEM DOWN + I COULD NOT HELP SMILING AT THE DOCUMENT WHEN I HAD COMPLETED IT + IT RAN IN THIS WAY SHERLOCK HOLMES HIS LIMITS ONE + KNOWLEDGE OF LITERATURE NIL. TWO QUOTE QUOTE PHILOSOPHY NIL. THREE QUOTE QUOTE ASTRONOMY NIL. FOUR QUOTE QUOTE POLITICS FEEBLE. FIVE QUOTE QUOTE BOTANY VARIABLE + WELL UP IN BELLADONNA OPIUM AND POISONS GENERALLY + KNOWS NOTHING OF PRACTICAL GARDENING SIX + KNOWLEDGE OF GEOLOGY PRACTICAL BUT LIMITED + TELLS AT A GLANCE DIFFERENT SOILS FROM EACH OTHER + AFTER WALKS HAS SHOWN ME SPLASHES UPON HIS TROU SERS AND TOLD ME BY THEIR COLOUR AND CONSISTENCE IN WHAT PART OF LONDON HE HAD RECEIVED THEM. SEVEN + KNOWLEDGE OF CHEMISTRY PROFOUND. EIGHT ANATOMY. ACCURATE BUT UNSYSTEMATIC NINE SENSATIONAL LITERATURE IMMENSE + HE APPEARS TO KNOW EVERY DETAIL OF EVERY HORROR PERPETRATED IN THE CENTURY TEN + PLAYS THE VIOLIN WELL. ELEVEN + IS AN EXPERT SINGLESTICK PLAYER BOXER AND SWORDSMAN TWELVE + HAS A GOOD PRACTICAL KNOWLEDGE OF BRITISH LAW + WHEN I HAD GOT SO FAR IN MY LIST I THREW IT INTO THE FIRE IN DESPAIR + IF I CAN ONLY FIND WHAT THE FELLOW IS DRIVING AT BY RECONCILING ALL THESE ACCOMPLISHMENTS AND DISCOVERING A CALLING WHICH NEEDS THEM ALL I SAID TO MYSELF I MAY AS WELL GIVE UP THE ATTEMPT AT ONCE + I SEE THAT I HAVE ALLUDED ABOVE TO HIS POWERS UPON THE VIOLIN + THESE WERE VERY REMARKABLE BUT AS ECCENTRIC AS ALL HIS OTHER ACCOMPLISHMENTS + THAT HE COULD PLAY PIECES AND DIFFICULT PIECES I KNEW WELL BECAUSE AT MY REQUEST HE HAS PLAYED ME SOME OF MENDELSSOHN'S LIEDER AND OTHER FAVOURITES + WHEN LEFT TO HIMSELF HOWEVER HE WOULD SELDOM PRODUCE ANY MUSIC OR ATTEMPT ANY RECOGNIZED AIR + LEANING BACK IN HIS ARMCHAIR OF AN EVENING HE WOULD CLOSE HIS EYES AND SCRAPE CARELESSLY AT THE FIDDLE WHICH WAS THROWN ACROSS HIS KNEE + SOMETIMES THE CHORDS WERE SONOROUS AND MELANCHOLY + OCCASIONALLY THEY WERE FANTASTIC AND CHEERFUL + CLEARLY THEY REFLECTED THE THOUGHTS WHICH POSSESSED HIM BUT WHETHER THE MUSIC AIDED THOSE THOUGHTS OR WHETHER THE PLAYING WAS SIMPLY THE RESULT OF A WHIM OR FANCY WAS MORE THAN I COULD DETERMINE + I MIGHT HAVE REBELLED AGAINST THESE EXASPERATING SOLOS HAD IT NOT BEEN THAT HE USUALLY TERMINATED THEM BY PLAYING IN QUICK SUCCESSION A WHOLE SERIES OF MY FAVOURITE AIRS AS A SLIGHT COMPENSATION FOR THE TRIAL UPON MY PATIENCE + DURING THE FIRST WEEK OR SO WE HAD NO CALLERS AND I HAD BEGUN TO THINK THAT MY COMPANION WAS AS FRIENDLESS A MAN AS I WAS MYSELF + PRESENTLY HOWEVER I FOUND THAT HE HAD MANY ACQUAINTANCES AND THOSE IN THE MOST DIFFERENT CLASSES OF SOCIETY + THERE WAS ONE LITTLE SALLOW RAT FACED DARK EYED FELLOW WHO WAS INTRODUCED TO ME AS MR. LESTRADE AND WHO CAME THREE OR FOUR TIMES IN A SINGLE WEEK + ONE MORNING A YOUNG GIRL CALLED FASHIONABLY DRESSED AND STAYED FOR HALF AN HOUR OR MORE + THE SAME AFTERNOON BROUGHT A GRAY HEADED SEEDY VISITOR LOOKING LIKE A JEW PEDDLER WHO APPEARED TO ME TO BE MUCH EXCITED AND WHO WAS CLOSELY FOLLOWED BY A SLIPSHOD ELDERLY WOMAN + ON ANOTHER OCCASION AN OLD WHITE HAIRED GENTLEMAN HAD AN INTERVIEW WITH MY COMPANION AND ON ANOTHER A RAILWAY PORTER IN HIS VELVETEEN UNIFORM + WHEN ANY OF THESE NONDESCRIPT INDIVIDUALS PUT IN AN APPEARANCE SHERLOCK HOLMES USED TO BEG FOR THE USE OF THE SITTING ROOM AND I WOULD RETIRE TO MY BEDROOM + HE ALWAYS APOLOGIZED TO ME FOR PUTTING ME TO THIS INCONVENIENCE + I HAVE TO USE THIS ROOM AS A PLACE OF BUSINESS HE SAID AND THESE PEOPLE ARE MY CLIENTS + AGAIN I HAD AN OPPORTUNITY OF ASKING HIM A POINT BLANK QUESTION AND AGAIN MY DELICACY PREVENTED ME FROM FORCING ANOTHER MAN TO CONFIDE IN ME + I IMAGINED AT THE TIME THAT HE HAD SOME STRONG REASON FOR NOT ALLUDING TO IT BUT HE SOON DISPELLED THE IDEA BY COMING ROUND TO THE SUBJECT OF HIS OWN ACCORD + IT WAS UPON THE FOURTH OF MARCH AS I HAVE GOOD REASON TO REMEMBER THAT I ROSE SOMEWHAT EARLIER THAN USUAL AND FOUND THAT SHERLOCK HOLMES HAD NOT YET FINISHED HIS BREAKFAST + THE LANDLADY HAD BECOME SO ACCUSTOMED TO MY LATE HABITS THAT MY PLACE HAD NOT BEEN LAID NOR MY COFFEE PREPARED + WITH THE UNREASONABLE PETULANCE OF MANKIND I RANG THE BELL AND GAVE A CURT INTIMATION THAT I WAS READY + THEN I PICKED UP A MAGAZINE FROM THE TABLE AND ATTEMPTED TO WHILE AWAY THE TIME WITH IT WHILE MY COMPANION MUNCHED SILENTLY AT HIS TOAST + ONE OF THE ARTICLES HAD A PENCIL MARK AT THE HEADING AND I NATURALLY BEGAN TO RUN MY EYE THROUGH IT + ITS SOMEWHAT AMBITIOUS TITLE WAS THE BOOK OF LIFE AND IT ATTEMPTED TO SHOW HOW MUCH AN OBSERVANT MAN MIGHT LEARN BY AN ACCURATE AND SYSTEMATIC EXAMINATION OF ALL THAT CAME IN HIS WAY + IT STRUCK ME AS BEING A REMARKABLE MIXTURE OF SHREWDNESS AND OF ABSURDITY + THE REASONING WAS CLOSE AND INTENSE BUT THE DEDUCTIONS APPEARED TO ME TO BE FAR FETCHED AND EXAGGERATED + THE WRITER CLAIMED BY A MOMENTARY EXPRESSION A TWITCH OF A MUSCLE OR A GLANCE OF AN EYE TO FATHOM A MAN'S INMOST THOUGHTS + DECEIT ACCORDING TO HIM WAS AN IMPOSSIBILITY IN THE CASE OF ONE TRAINED TO OBSERVATION AND ANALYSIS + HIS CONCLUSIONS WERE AS INFALLIBLE AS SO MANY PROPOSITIONS OF EUCLID + SO STARTLING WOULD HIS RESULTS APPEAR TO THE UNINITIATED THAT UNTIL THEY LEARNED THE PROCESSES BY WHICH HE HAD ARRIVED AT THEM THEY MIGHT WELL CONSIDER HIM AS A NECROMANCER + FROM A DROP OF WATER SAID THE WRITER A LOGICIAN COULD INFER THE POSSIBILITY OF AN ATLANTIC OR A NIAGARA WITHOUT HAVING SEEN OR HEARD OF ONE OR THE OTHER + SO ALL LIFE IS A GREAT CHAIN THE NATURE OF WHICH IS KNOWN WHENEVER WE ARE SHOWN A SINGLE LINK OF IT + LIKE ALL OTHER ARTS THE SCIENCE OF DEDUCTION AND ANALYSIS IS ONE WHICH CAN ONLY BE ACQUIRED BY LONG AND PATIENT STUDY NOR IS LIFE LONG ENOUGH TO ALLOW ANY MORTAL TO ATTAIN THE HIGHEST POSSIBLE PERFECTION IN IT + BEFORE TURNING TO THOSE MORAL AND MENTAL ASPECTS OF THE MATTER WHICH PRESENT THE GREATEST DIFFICULTIES LET THE INQUIRER BEGIN BY MASTERING MORE ELEMENTARY PROBLEMS + LET HIM ON MEETING A FELLOW MORTAL LEARN AT A GLANCE TO DISTINGUISH THE HISTORY OF THE MAN AND THE TRADE OR PROFESSION TO WHICH HE BELONGS + PUERILE AS SUCH AN EXERCISE MAY SEEM IT SHARPENS THE FACULTIES OF OBSERVATION AND TEACHES ONE WHERE TO LOOK AND WHAT TO LOOK FOR + BY A MAN'S FINGER NAILS BY HIS COAT SLEEVE BY HIS BOOTS BY HIS TROUSER KNEES BY THE CALLOSITIES OF HIS FOREFINGER AND THUMB BY HIS EXPRESSION BY HIS SHIRTCUFFS BY EACH OF THESE THINGS A MAN'S CALLING IS PLAINLY REVEALED + THAT ALL UNITED SHOULD FAIL TO ENLIGHTEN THE COMPETENT INQUIRER IN ANY CASE IS ALMOST INCONCEIVABLE QUOTE + WHAT INEFFABLE TWADDLE + I CRIED SLAPPING THE MAGAZINE DOWN ON THE TABLE I NEVER READ SUCH RUBBISH IN MY LIFE + WHAT IS IT ASKED SHERLOCK HOLMES + WHY THIS ARTICLE I SAID POINTING AT IT WITH MY EGGSPOON AS I SAT DOWN TO MY BREAKFAST + I SEE THAT YOU HAVE READ IT SINCE YOU HAVE MARKED IT + I DON'T DENY THAT IT IS SMARTLY WRITTEN + IT IRRITATES ME THOUGH + IT IS EVIDENTLY THE THEORY OF SOME ARMCHAIR LOUNGER WHO EVOLVES ALL THESE NEAT LITTLE PARADOXES IN THE SECLUSION OF HIS OWN STUDY + IT IS NOT PRACTICAL + I SHOULD LIKE TO SEE HIM CLAPPED DOWN IN A THIRD CLASS CARRIAGE ON THE UNDERGROUND AND ASKED TO GIVE THE TRADES OF ALL HIS FELLOW TRAVELLERS + I WOULD LAY A THOUSAND TO ONE AGAINST HIM QUOTE + YOU WOULD LOSE YOUR MONEY HOLMES REMARKED CALMLY + AS FOR THE ARTICLE I WROTE IT MYSELF + YOU + YES I HAVE A TURN BOTH FOR OBSERVATION AND FOR DEDUCTION + THE THEORIES WHICH I HAVE EXPRESSED THERE AND WHICH APPEAR TO YOU TO BE SO CHIMERICAL ARE REALLY EXTREMELY PRACTICAL SO PRACTICAL THAT I DEPEND UPON THEM FOR MY BREAD AND CHEESE + QUOTE AND HOW QUOTE + I ASKED INVOLUNTARILY + WELL I HAVE A TRADE OF MY OWN + I SUPPOSE I AM THE ONLY ONE IN THE WORLD + I'M A CONSULTING DETECTIVE IF YOU CAN UNDERSTAND WHAT THAT IS + HERE IN LONDON WE HAVE LOTS OF GOVERNMENT DETECTIVES AND LOTS OF PRIVATE ONES + WHEN THESE FELLOWS ARE AT FAULT THEY COME TO ME AND I MANAGE TO PUT THEM ON THE RIGHT SCENT + THEY LAY ALL THE EVIDENCE BEFORE ME AND I AM GENERALLY ABLE BY THE HELP OF MY KNOWLEDGE OF THE HISTORY OF CRIME TO SET THEM STRAIGHT + THERE IS A STRONG FAMILY RESEMBLANCE ABOUT MISDEEDS AND IF YOU HAVE ALL THE DETAILS OF A THOUSAND AT YOUR FINGER ENDS IT IS ODD IF YOU CAN'T UNRAVEL THE THOUSAND AND FIRST + LESTRADE IS A WELL KNOWN DETECTIVE + HE GOT HIMSELF INTO A FOG RECENTLY OVER A FORGERY CASE AND THAT WAS WHAT BROUGHT HIM HERE + AND THESE OTHER PEOPLE + THEY ARE MOSTLY SENT ON BY PRIVATE INQUIRY AGENCIES + THEY ARE ALL PEOPLE WHO ARE IN TROUBLE ABOUT SOMETHING AND WANT A LITTLE ENLIGHTENING + I LISTEN TO THEIR STORY THEY LISTEN TO MY COMMENTS AND THEN I POCKET MY FEE + QUOTE BUT DO YOU MEAN TO SAY QUOTE I SAID QUOTE THAT WITHOUT LEAVING YOUR ROOM YOU CAN UNRAVEL SOME KNOT WHICH OTHER MEN CAN MAKE NOTHING OF ALTHOUGH THEY HAVE SEEN EVERY DETAIL FOR THEMSELVES QUOTE + QUITE SO. L. HAVE A KIND OF INTUITION THAT WAY + NOW AND AGAIN A CASE TURNS UP WHICH IS A LITTLE MORE COMPLEX + THEN I HAVE TO BUSTLE ABOUT AND SEE THINGS WITH MY OWN EYES + YOU SEE I HAVE A LOT OF SPECIAL KNOWLEDGE WHICH I APPLY TO THE PROBLEM AND WHICH FACILITATES MATTERS WONDERFULLY + THOSE RULES OF DEDUCTION LAID DOWN IN THAT ARTICLE WHICH AROUSED YOUR SCORN ARE INVALUABLE TO ME IN PRACTICAL WORK + OBSERVATION WITH ME IS SECOND NATURE + YOU APPEARED TO BE SURPRISED WHEN I TOLD YOU ON OUR FIRST MEETING THAT YOU HAD COME FROM AFGHANISTAN + YOU WERE TOLD NO DOUBT + NOTHING OF THE SORT + I KNEW YOU CAME FROM AFGHANISTAN + FROM LONG HABIT THE TRAIN OF THOUGHTS RAN SO SWIFTLY THROUGH MY MIND THAT I ARRIVED AT THE CONCLUSION WITHOUT BEING CONSCIOUS OF INTERMEDIATE STEPS + THERE WERE SUCH STEPS HOWEVER + THE TRAIN OF REASONING RAN HERE IS A GENTLEMAN OF A MEDICAL TYPE BUT WITH THE AIR OF A MILITARY MAN + CLEARLY AN ARMY DOCTOR THEN + HE HAS JUST COME FROM THE TROPICS FOR HIS FACE IS DARK AND THAT IS NOT THE NATURAL TINT OF HIS SKIN FOR HIS WRISTS ARE FAIR + HE HAS UNDERGONE HARDSHIP AND SICKNESS AS HIS HAGGARD FACE SAYS CLEARLY + HIS LEFT ARM HAS BEEN INJURED + HE HOLDS IT IN A STIFF AND UNNATURAL MANNER + WHERE IN THE TROPICS COULD AN ENGLISH ARMY DOCTOR HAVE SEEN MUCH HARDSHIP AND GOT HIS ARM WOUNDED + CLEARLY IN AFGHANISTAN + THE WHOLE TRAIN OF THOUGHT DID NOT OCCUPY A SECOND + I THEN REMARKED THAT YOU CAME FROM AFGHANISTAN AND YOU WERE ASTONISHED + QUOTE IT IS SIMPLE ENOUGH AS YOU EXPLAIN IT QUOTE I SAID SMILING + YOU REMIND ME OF EDGAR ALLAN POE'S DUPIN + I HAD NO IDEA THAT SUCH INDIVIDUALS DID EXIST OUTSIDE OF STORIES + SHERLOCK HOLMES ROSE AND LIT HIS PIPE + NO DOUBT YOU THINK THAT YOU ARE COMPLIMENTING ME IN COMPARING ME TO DUPIN HE OBSERVED + NOW IN MY OPINION DUPIN WAS A VERY INFERIOR FELLOW + THAT TRICK OF HIS OF BREAKING IN ON HIS FRIENDS' THOUGHTS WITH AN APROPOS REMARK AFTER A QUARTER OF AN HOUR'S SILENCE IS REALLY VERY SHOWY AND SUPERFICIAL + HE HAD SOME ANALYTICAL GENIUS NO DOUBT BUT HE WAS BY NO MEANS SUCH A PHENOMENON AS POE APPEARED TO IMAGINE + QUOTE HAVE YOU READ GABORIAU'S WORKS QUOTE + I ASKED + DOES LECOQ COME UP TO YOUR IDEA OF A DETECTIVE + SHERLOCK HOLMES SNIFFED SARDONICALLY + LECOQ WAS A MISERABLE BUNGLER HE SAID IN AN ANGRY VOICE HE HAD ONLY ONE THING TO RECOMMEND HIM AND THAT WAS HIS ENERGY + THAT BOOK MADE ME POSITIVELY ILL + THE QUESTION WAS HOW TO IDENTIFY AN UNKNOWN PRISONER + I COULD HAVE DONE IT IN TWENTY FOUR HOURS + LECOQ TOOK SIX MONTHS OR SO + IT MIGHT BE MADE A TEXTBOOK FOR DETECTIVES TO TEACH THEM WHAT TO AVOID + I FELT RATHER INDIGNANT AT HAVING TWO CHARACTERS WHOM I HAD ADMIRED TREATED IN THIS CAVALIER STYLE + I WALKED OVER TO THE WINDOW AND STOOD LOOKING OUT INTO THE BUSY STREET + THIS FELLOW MAY BE VERY CLEVER I SAID TO MYSELF BUT HE IS CERTAINLY VERY CONCEITED + THERE ARE NO CRIMES AND NO CRIMINALS IN THESE DAYS HE SAID QUERULOUSLY + QUOTE WHAT IS THE USE OF HAVING BRAINS IN OUR PROFESSION + I KNOW WELL THAT I HAVE IT IN ME TO MAKE MY NAME FAMOUS + NO MAN LIVES OR HAS EVER LIVED WHO HAS BROUGHT THE SAME AMOUNT OF STUDY AND OF NATURAL TALENT TO THE DETECTION OF CRIME WHICH I HAVE DONE + AND WHAT IS THE RESULT + THERE IS NO CRIME TO DETECT OR AT MOST SOME BUNGLING VILLAINY WITH A MOTIVE SO TRANSPARENT THAT EVEN A SCOTLAND YARD OFFICIAL CAN SEE THROUGH IT + I WAS STILL ANNOYED AT HIS BUMPTIOUS STYLE OF CONVERSATION + I THOUGHT IT BEST TO CHANGE THE TOPIC + I WONDER WHAT THAT FELLOW IS LOOKING FOR + I ASKED POINTING TO A STALWART PLAINLY DRESSED INDIVIDUAL WHO WAS WALKING SLOWLY DOWN THE OTHER SIDE OF THE STREET LOOKING ANXIOUSLY AT THE NUMBERS + HE HAD A LARGE BLUE ENVELOPE IN HIS HAND AND WAS EVIDENTLY THE BEARER OF A MESSAGE + YOU MEAN THE RETIRED SERGEANT OF MARINES SAID SHERLOCK HOLMES + BRAG AND BOUNCE THOUGHT I TO MYSELF + HE KNOWS THAT I CANNOT VERIFY HIS GUESS + THE THOUGHT HAD HARDLY PASSED THROUGH MY MIND WHEN THE MAN WHOM WE WERE WATCHING CAUGHT SIGHT OF THE NUMBER ON OUR DOOR AND RAN RAPIDLY ACROSS THE ROADWAY + WE HEARD A LOUD KNOCK A DEEP VOICE BELOW AND HEAVY STEPS ASCENDING THE STAIR + QUOTE FOR MR. SHERLOCK HOLMES QUOTE HE SAID STEPPING INTO THE ROOM AND HANDING MY FRIEND THE LETTER + HERE WAS AN OPPORTUNITY OF TAKING THE CONCEIT OUT OF HIM + HE LITTLE THOUGHT OF THIS WHEN HE MADE THAT RANDOM SHOT + MAY I ASK MY LAD I SAID IN THE BLANDEST VOICE WHAT YOUR TRADE MAY BE + COMMISSIONAIRE SIR HE SAID GRUFFLY + UNIFORM AWAY FOR REPAIRS + AND YOU WERE + I ASKED WITH A SLIGHTLY MALICIOUS GLANCE AT MY COMPANION + A SERGEANT SIR ROYAL MARINE LIGHT INFANTRY SIR + NO ANSWER + RIGHT SIR QUOTE + HE CLICKED HIS HEELS TOGETHER RAISED HIS HAND IN SALUTE AND WAS GONE + CHAPTER THREE THE LAURISTON GARDEN MYSTERY + I CONFESS THAT I WAS CONSIDERABLY STARTLED BY THIS FRESH PROOF OF THE PRACTICAL NATURE OF MY COMPANION'S THEORIES + MY RESPECT FOR HIS POWERS OF ANALYSIS INCREASED WONDROUSLY + THERE STILL REMAINED SOME LURKING SUSPICION IN MY MIND HOWEVER THAT THE WHOLE THING WAS A PREARRANGED EPISODE INTENDED TO DAZZLE ME THOUGH WHAT EARTHLY OBJECT HE COULD HAVE IN TAKING ME IN WAS PAST MY COMPREHENSION + WHEN I LOOKED AT HIM HE HAD FINISHED READING THE NOTE AND HIS EYES HAD ASSUMED THE VACANT LACKLUSTRE EXPRESSION WHICH SHOWED MENTAL ABSTRACTION + HOW IN THE WORLD DID YOU DEDUCE THAT + I ASKED + DEDUCE WHAT SAID HE PETULANTLY + WHY THAT HE WAS A RETIRED SERGEANT OF MARINES + I HAVE NO TIME FOR TRIFLES HE ANSWERED BRUSQUELY THEN WITH A SMILE EXCUSE MY RUDENESS + YOU BROKE THE THREAD OF MY THOUGHTS BUT PERHAPS IT IS AS WELL + SO YOU ACTUALLY WERE NOT ABLE TO SEE THAT THAT MAN WAS A SERGEANT OF MARINES + QUOTE NO INDEED QUOTE + IT WAS EASIER TO KNOW IT THAN TO EXPLAIN WHY I KNOW IT + IF YOU WERE ASKED TO PROVE THAT TWO AND TWO MADE FOUR YOU MIGHT FIND SOME DIFFICULTY AND YET YOU ARE QUITE SURE OF THE FACT + EVEN ACROSS THE STREET I COULD SEE A GREAT BLUE ANCHOR TATTOOED ON THE BACK OF THE FELLOW'S HAND + THAT SMACKED OF THE SEA + HE HAD A MILITARY CARRIAGE HOWEVER AND REGULATION SIDE WHISKERS + THERE WE HAVE THE MARINE + HE WAS A MAN WITH SOME AMOUNT OF SELF IMPORTANCE AND A CERTAIN AIR OF COMMAND + YOU MUST HAVE OBSERVED THE WAY IN WHICH HE HELD HIS HEAD AND SWUNG HIS CANE + A STEADY RESPECTABLE MIDDLE AGED MAN TOO ON THE FACE OF HIM ALL FACTS WHICH LED ME TO BELIEVE THAT HE HAD BEEN A SERGEANT + WONDERFUL + I EJACULATED + COMMONPLACE SAID HOLMES THOUGH I THOUGHT FROM HIS EXPRESSION THAT HE WAS PLEASED AT MY EVIDENT SURPRISE AND ADMIRATION + I SAID JUST NOW THAT THERE WERE NO CRIMINALS + IT APPEARS THAT I AM WRONG LOOK AT THIS QUOTE + HE THREW ME OVER THE NOTE WHICH THE COMMISSIONAIRE HAD BROUGHT + WHY I CRIED AS I CAST MY EYE OVER IT THIS IS TERRIBLE + IT DOES SEEM TO BE A LITTLE OUT OF THE COMMON HE REMARKED CALMLY + WOULD YOU MIND READING IT TO ME ALOUD + THIS IS THE LETTER WHICH I READ TO HIM MY DEAR MR. SHERLOCK HOLMES THERE HAS BEEN A BAD BUSINESS DURING THE NIGHT AT THREE LAURISTON GARDENS OFF THE BRIXTON ROAD + OUR MAN ON THE BEAT SAW A LIGHT THERE ABOUT TWO IN THE MORNING AND AS THE HOUSE WAS AN EMPTY ONE SUSPECTED THAT SOMETHING WAS AMISS + HE FOUND THE DOOR OPEN AND IN THE FRONT ROOM WHICH IS BARE OF FURNITURE DISCOVERED THE BODY OF A GENTLE MAN WELL DRESSED AND HAVING CARDS IN HIS POCKET BEARING THE NAME OF ENOCH J. DREBBER CLEVELAND OHIO U. S. A. THERE HAD BEEN NO ROBBERY NOR IS THERE ANY EVIDENCE AS TO HOW THE MAN MET HIS DEATH + THERE ARE MARKS OF BLOOD IN THE ROOM BUT THERE IS NO WOUND UPON HIS PERSON + WE ARE AT A LOSS AS TO HOW HE CAME INTO THE EMPTY HOUSE INDEED THE WHOLE AFFAIR IS A PUZZLER + IF YOU CAN COME ROUND TO THE HOUSE ANY TIME BEFORE TWELVE YOU WILL FIND ME THERE + I HAVE LEFT EVERYTHING IN STATU QUO UNTIL I HEAR FROM YOU + IF YOU ARE UNABLE TO COME I SHALL GIVE YOU FULLER DETAILS AND WOULD ESTEEM IT A GREAT KINDNESS IF YOU WOULD FAVOUR ME WITH YOUR OPINIONS + YOURS FAITHFULLY TOBIAS GREGSON + QUOTE GREGSON IS THE SMARTEST OF THE SCOTLAND YARDERS QUOTE MY FRIEND REMARKED QUOTE HE AND LESTRADE ARE THE PICK OF A BAD LOT + THEY ARE BOTH QUICK AND ENERGETIC BUT CONVENTIONAL SHOCKINGLY SO + THEY HAVE THEIR KNIVES INTO ONE ANOTHER TOO + THEY ARE AS JEALOUS AS A PAIR OF PROFESSIONAL BEAUTIES + THERE WILL BE SOME FUN OVER THIS CASE IF THEY ARE BOTH PUT UPON THE SCENT + I WAS AMAZED AT THE CALM WAY IN WHICH HE RIPPLED ON + SURELY THERE IS NOT A MOMENT TO BE LOST I CRIED SHALL I GO AND ORDER YOU A CAB + I'M NOT SURE ABOUT WHETHER I SHALL GO + I AM THE MOST INCURABLY LAZY DEVIL THAT EVER STOOD IN SHOE LEATHER THAT IS WHEN THE FIT IS ON ME FOR I CAN BE SPRY ENOUGH AT TIMES + WHY IT IS JUST SUCH A CHANCE AS YOU HAVE BEEN LONGING FOR + QUOTE MY DEAR FELLOW WHAT DOES IT MATTER TO ME + SUPPOSING I UNRAVEL THE WHOLE MATTER YOU MAY BE SURE THAT GREGSON LESTRADE AND COMPANY WILL POCKET ALL THE CREDIT + THAT COMES OF BEING AN UNOFFICIAL PERSONAGE + BUT HE BEGS YOU TO HELP HIM + YES + HE KNOWS THAT I AM HIS SUPERIOR AND ACKNOWLEDGES IT TO ME BUT HE WOULD CUT HIS TONGUE OUT BEFORE HE WOULD OWN IT TO ANY THIRD PERSON + HOWEVER WE MAY AS WELL GO AND HAVE A LOOK + I SHALL WORK IT OUT ON MY OWN HOOK + I MAY HAVE A LAUGH AT THEM IF I HAVE NOTHING ELSE + COME ON + HE HUSTLED ON HIS OVERCOAT AND BUSTLED ABOUT IN A WAY THAT SHOWED THAT AN ENERGETIC FIT HAD SUPERSEDED THE APATHETIC ONE + GET YOUR HAT HE SAID + QUOTE YOU WISH ME TO COME QUOTE + YES IF YOU HAVE NOTHING BETTER TO DO + A MINUTE LATER WE WERE BOTH IN A HANSOM DRIVING FURIOUSLY FOR THE BRIXTON ROAD + IT WAS A FOGGY CLOUDY MORNING AND A DUN COLOURED VEIL HUNG OVER THE HOUSETOPS LOOKING LIKE THE REFLECTION OF THE MUDCOLOURED STREETS BENEATH + MY COMPANION WAS IN THE BEST OF SPIRITS AND PRATTLED AWAY ABOUT CREMONA FIDDLES AND THE DIFFERENCE BETWEEN A STRADIVARIUS AND AN AMATI + AS FOR MYSELF I WAS SILENT FOR THE DULL WEATHER AND THE MELANCHOLY BUSINESS UPON WHICH WE WERE ENGAGED DEPRESSED MY SPIRITS + YOU DON'T SEEM TO GIVE MUCH THOUGHT TO THE MATTER IN HAND I SAID AT LAST INTERRUPTING HOLMES'S MUSICAL DISQUISITION + NO DATA YET HE ANSWERED + IT IS A CAPITAL MISTAKE TO THEORIZE BEFORE YOU HAVE ALL THE EVIDENCE + IT BIASES THE JUDGMENT + QUOTE YOU WILL HAVE YOUR DATA SOON QUOTE I REMARKED POINTING WITH MY FINGER QUOTE THIS IS THE BRIXTON ROAD AND THAT IS THE HOUSE IF I AM NOT VERY MUCH MISTAKEN QUOTE + SO IT IS + STOP DRIVER STOP + WE WERE STILL A HUNDRED YARDS OR SO FROM IT BUT HE INSISTED UPON OUR ALIGHTING AND WE FINISHED OUR JOURNEY UPON FOOT + NUMBER THREE LAURISTON GARDENS WORE AN ILL OMENED AND MINATORY LOOK + IT WAS ONE OF FOUR WHICH STOOD BACK SOME LITTLE WAY FROM THE STREET TWO BEING OCCUPIED AND TWO EMPTY + THE LATTER LOOKED OUT WITH THREE TIERS OF VACANT MELANCHOLY WINDOWS WHICH WERE BLANK AND DREARY SAVE THAT HERE AND THERE A TO LET CARD HAD DEVELOPED LIKE A CATARACT UPON THE BLEARED PANES + A SMALL GARDEN SPRINKLED OVER WITH A SCATTERED ERUPTION OF SICKLY PLANTS SEPARATED EACH OF THESE HOUSES FROM THE STREET AND WAS TRAVERSED BY A NARROW PATHWAY YELLOWISH IN COLOUR AND CONSISTING APPARENTLY OF A MIXTURE OF CLAY AND OF GRAVEL + THE WHOLE PLACE WAS VERY SLOPPY FROM THE RAIN WHICH HAD FALLEN THROUGH THE NIGHT + THE GARDEN WAS BOUNDED BY A THREE FOOT BRICK WALL WITH A FRINGE OF WOOD RAILS UPON THE TOP AND AGAINST THIS WALL WAS LEANING A STALWART POLICE CONSTABLE SURROUNDED BY A SMALL KNOT OF LOAFERS WHO CRANED THEIR NECKS AND STRAINED THEIR EYES IN THE VAIN HOPE OF CATCHING SOME GLIMPSE OF THE PROCEEDINGS WITHIN + I HAD IMAGINED THAT SHERLOCK HOLMES WOULD AT ONCE HAVE HURRIED INTO THE HOUSE AND PLUNGED INTO A STUDY OF THE MYSTERY + NOTHING APPEARED TO BE FURTHER FROM HIS INTENTION + WITH AN AIR OF NONCHALANCE WHICH UNDER THE CIRCUMSTANCES SEEMED TO ME TO BORDER UPON AFFECTATION HE LOUNGED UP AND DOWN THE PAVEMENT AND GAZED VACANTLY AT THE GROUND THE SKY THE OPPOSITE HOUSES AND THE LINE OF RAILINGS + HAVING FINISHED HIS SCRUTINY HE PROCEEDED SLOWLY DOWN THE PATH OR RATHER DOWN THE FRINGE OF GRASS WHICH FLANKED THE PATH KEEPING HIS EYES RIVETED UPON THE GROUND + TWICE HE STOPPED AND ONCE I SAW HIM SMILE AND HEARD HIM UTTER AN EXCLAMATION OF SATISFACTION + THERE WERE MANY MARKS OF FOOTSTEPS UPON THE WET CLAYEY SOIL BUT SINCE THE POLICE HAD BEEN COMING AND GOING OVER IT I WAS UNABLE TO SEE HOW MY COMPANION COULD HOPE TO LEARN ANYTHING FROM IT + STILL I HAD HAD SUCH EXTRAORDINARY EVIDENCE OF THE QUICKNESS OF HIS PERCEPTIVE FACULTIES THAT I HAD NO DOUBT THAT HE COULD SEE A GREAT DEAL WHICH WAS HIDDEN FROM ME + AT THE DOOR OF THE HOUSE WE WERE MET BY A TALL WHITE FACED FLAXEN HAIRED MAN WITH A NOTEBOOK IN HIS HAND WHO RUSHED FORWARD AND WRUNG MY COMPANION'S HAND WITH EFFUSION + IT IS INDEED KIND OF YOU TO COME HE SAID I HAVE HAD EVERYTHING LEFT UNTOUCHED + EXCEPT THAT MY FRIEND ANSWERED POINTING AT THE PATHWAY + QUOTE IF A HERD OF BUFFALOES HAD PASSED ALONG THERE COULD NOT BE A GREATER MESS + NO DOUBT HOWEVER YOU HAD DRAWN YOUR OWN CONCLUSIONS GREGSON BEFORE YOU PERMITTED THIS + I HAVE HAD SO MUCH TO DO INSIDE THE HOUSE THE DETECTIVE SAID EVASIVELY + MY COLLEAGUE MR. LESTRADE IS HERE + I HAD RELIED UPON HIM TO LOOK AFTER THIS + HOLMES GLANCED AT ME AND RAISED HIS EYEBROWS SARDONICALLY + WITH TWO SUCH MEN AS YOURSELF AND LESTRADE UPON THE GROUND THERE WILL NOT BE MUCH FOR A THIRD PARTY TO FIND OUT HE SAID + GREGSON RUBBED HIS HANDS IN A SELF SATISFIED WAY + QUOTE I THINK WE HAVE DONE ALL THAT CAN BE DONE QUOTE HE ANSWERED QUOTE IT'S A QUEER CASE THOUGH AND I KNEW YOUR TASTE FOR SUCH THINGS QUOTE + YOU DID NOT COME HERE IN A CAB ASKED SHERLOCK HOLMES + NO SIR + NOR LESTRADE + NO SIR + THEN LET US GO AND LOOK AT THE ROOM + WITH WHICH INCONSEQUENT REMARK HE STRODE ON INTO THE HOUSE FOLLOWED BY GREGSON WHOSE FEATURES EXPRESSED HIS ASTONISHMENT + A SHORT PASSAGE BARE PLANKED AND DUSTY LED TO THE KITCHEN AND OFFICES + TWO DOORS OPENED OUT OF IT TO THE LEFT AND TO THE RIGHT + ONE OF THESE HAD OBVIOUSLY BEEN CLOSED FOR MANY WEEKS + THE OTHER BELONGED TO THE DINING ROOM WHICH WAS THE APARTMENT IN WHICH THE MYSTERIOUS AFFAIR HAD OCCURRED + HOLMES WALKED IN AND I FOLLOWED HIM WITH THAT SUBDUED FEELING AT MY HEART WHICH THE PRESENCE OF DEATH INSPIRES + IT WAS A LARGE SQUARE ROOM LOOKING ALL THE LARGER FROM THE ABSENCE OF ALL FURNITURE + A VULGAR FLARING PAPER ADORNED THE WALLS BUT IT WAS BLOTCHED IN PLACES WITH MILDEW AND HERE AND THERE GREAT STRIPS HAD BECOME DETACHED AND HUNG DOWN EXPOSING THE YELLOW PLASTER BENEATH + OPPOSITE THE DOOR WAS A SHOWY FIREPLACE SURMOUNTED BY A MANTELPIECE OF IMITATION WHITE MARBLE + ON ONE CORNER OF THIS WAS STUCK THE STUMP OF A RED WAX CANDLE + THE SOLITARY WINDOW WAS SO DIRTY THAT THE LIGHT WAS HAZY AND UNCERTAIN GIVING A DULL GRAY TINGE TO EVERYTHING WHICH WAS INTENSIFIED BY THE THICK LAYER OF DUST WHICH COATED THE WHOLE APARTMENT + ALL THESE DETAILS I OBSERVED AFTERWARDS + AT PRESENT MY ATTENTION WAS CENTRED UPON THE SINGLE GRIM MOTIONLESS FIGURE WHICH LAY STRETCHED UPON THE BOARDS WITH VACANT SIGHTLESS EYES STARING UP AT THE DISCOLOURED CEILING + IT WAS THAT OF A MAN ABOUT FORTYTHREE OR FORTY FOUR YEARS OF AGE MIDDLE SIZED BROAD SHOULDERED WITH CRISP CURLING BLACK HAIR AND A SHORT STUBBLY BEARD + HE WAS DRESSED IN A HEAVY BROADCLOTH FROCK COAT AND WAISTCOAT WITH LIGHT COLOURED TROUSERS AND IMMACULATE COLLAR AND CUFFS + A TOP HAT WELL BRUSHED AND TRIM WAS PLACED UPON THE FLOOR BESIDE HIM + HIS HANDS WERE CLENCHED AND HIS ARMS THROWN ABROAD WHILE HIS LOWER LIMBS WERE INTERLOCKED AS THOUGH HIS DEATH STRUGGLE HAD BEEN A GRIEVOUS ONE + ON HIS RIGID FACE THERE STOOD AN EXPRESSION OF HORROR AND AS IT SEEMED TO ME OF HATRED SUCH AS I HAVE NEVER SEEN UPON HUMAN FEATURES + THIS MALIGNANT AND TERRIBLE CONTORTION COMBINED WITH THE LOW FOREHEAD BLUNT NOSE AND PROGNATHOUS JAW GAVE THE DEAD MAN A SINGULARLY SIMIOUS AND APE LIKE APPEARANCE WHICH WAS INCREASED BY. HIS WRITHING UNNATURAL POSTURE + I HAVE SEEN DEATH IN MANY FORMS BUT NEVER HAS IT APPEARED TO ME IN A MORE FEARSOME ASPECT THAN IN THAT DARK GRIMY APARTMENT WHICH LOOKED OUT UPON ONE OF THE MAIN ARTERIES OF SUBURBAN LONDON + LESTRADE LEAN AND FERRET LIKE AS EVER WAS STANDING BY THE DOORWAY AND GREETED MY COMPANION AND MYSELF + QUOTE THIS CASE WILL MAKE A STIR SIR QUOTE HE REMARKED + IT BEATS ANYTHING I HAVE SEEN AND I AM NO CHICKEN + THERE IS NO CLUE SAID GREGSON + NONE AT ALL CHIMED IN LESTRADE + SHERLOCK HOLMES APPROACHED THE BODY AND KNEELING DOWN EXAMINED IT INTENTLY + YOU ARE SURE THAT THERE IS NO WOUND HE ASKED POINTING TO NUMEROUS GOUTS AND SPLASHES OF BLOOD WHICH LAY ALL ROUND + POSITIVE CRIED BOTH DETECTIVES + QUOTE THEN OF COURSE THIS BLOOD BELONGS TO A SECOND INDIVIDUAL PRESUMABLY THE MURDERER IF MURDER HAS BEEN COMMITTED + IT REMINDS ME OF THE CIRCUMSTANCES ATTENDANT ON THE DEATH OF VAN JANSEN IN UTRECHT IN THE YEAR THIRTY FOUR + DO YOU REMEMBER THE CASE GREGSON + NO SIR + READ IT UP YOU REALLY SHOULD + THERE IS NOTHING NEW UNDER THE SUN + IT HAS ALL BEEN DONE BEFORE + AS HE SPOKE HIS NIMBLE FINGERS WERE FLYING HERE THERE AND EVERYWHERE FEELING PRESSING UNBUTTONING EXAMINING WHILE HIS EYES WORE THE SAME FAR AWAY EXPRESSION WHICH I HAVE ALREADY REMARKED UPON + SO SWIFTLY WAS THE EXAMINATION MADE THAT ONE WOULD HARDLY HAVE GUESSED THE MINUTENESS WITH WHICH IT WAS CONDUCTED + FINALLY HE SNIFFED THE DEAD MAN'S LIPS AND THEN GLANCED AT THE SOLES OF HIS PATENT LEATHER BOOTS + HE HAS NOT BEEN MOVED AT ALL HE ASKED + QUOTE NO MORE THAN WAS NECESSARY FOR THE PURPOSE OF OUR EXAMINATION QUOTE + YOU CAN TAKE HIM TO THE MORTUARY NOW HE SAID + THERE IS NOTHING MORE TO BE LEARNED + GREGSON HAD A STRETCHER AND FOUR MEN AT HAND + AT HIS CALL THEY ENTERED THE ROOM AND THE STRANGER WAS LIFTED AND CARRIED OUT + AS THEY RAISED HIM A RING TINKLED DOWN AND ROLLED ACROSS THE FLOOR + LESTRADE GRABBED IT UP AND STARED AT IT WITH MYSTIFIED EYES + THERE'S BEEN A WOMAN HERE HE CRIED + IT'S A WOMAN'S WEDDING RING + HE HELD IT OUT AS HE SPOKE UPON THE PALM OF HIS HAND + WE ALL GATHERED ROUND HIM AND GAZED AT IT + THERE COULD BE NO DOUBT THAT THAT CIRCLET OF PLAIN GOLD HAD ONCE ADORNED THE FINGER OF A BRIDE + THIS COMPLICATES MATTERS SAID GREGSON + QUOTE HEAVEN KNOWS THEY WERE COMPLICATED ENOUGH BEFORE QUOTE + YOU'RE SURE IT DOESN'T SIMPLIFY THEM OBSERVED HOLMES + THERE'S NOTHING TO BE LEARNED BY STARING AT IT + WHAT DID YOU FIND IN HIS POCKETS + WE HAVE IT ALL HERE SAID GREGSON POINTING TO A LITTER OF OBJECTS UPON ONE OF THE BOTTOM STEPS OF THE STAIRS + A GOLD WATCH NUMBER NINETY SEVEN THOUSAND ONE HUNDRED SIXTY THREE BY BARRAUD OF LONDON + GOLD ALBERT CHAIN VERY HEAVY AND SOLID + GOLD RING WITH MASONIC DEVICE + GOLD PIN BULL DOG'S HEAD WITH RUBIES AS EYES + RUSSIAN LEATHER CARDCASE WITH CARDS OF ENOCH J. DREBBER OF CLEVELAND CORRESPONDING WITH THE E. J. D. UPON THE LINEN + NO PURSE BUT LOOSE MONEY TO THE EXTENT OF SEVEN POUNDS THIRTEEN + POCKET EDITION OF BOCCACCIO'S DECAMERON WITH NAME OF JOSEPH STANGERSON UPON THE FLYLEAF + TWO LETTERS ONE ADDRESSED TO E. J. DREBBER AND ONE TO JOSEPH STANGERSON QUOTE + AT WHAT ADDRESS + AMERICAN EXCHANGE STRAND TO BE LEFT TILL CALLED FOR + THEY ARE BOTH FROM THE GUION STEAMSHIP COMPANY AND REFER TO THE SAILING OF THEIR BOATS FROM LIVERPOOL + IT IS CLEAR THAT THIS UNFORTUNATE MAN WAS ABOUT TO RETURN TO NEW YORK + HAVE YOU MADE ANY INQUIRIES AS TO THIS MAN STANGERSON + I DID IT AT ONCE SIR SAID GREGSON + QUOTE I HAVE HAD ADVERTISEMENTS SENT TO ALL THE NEWSPAPERS AND ONE OF MY MEN HAS GONE TO THE AMERICAN EXCHANGE BUT HE HAS NOT RETURNED YET QUOTE + HAVE YOU SENT TO CLEVELAND + WE TELEGRAPHED THIS MORNING + HOW DID YOU WORD YOUR INQUIRIES + WE SIMPLY DETAILED THE CIRCUMSTANCES AND SAID THAT WE SHOULD BE GLAD OF ANY INFORMATION WHICH COULD HELP US + YOU DID NOT ASK FOR PARTICULARS ON ANY POINT WHICH APPEARED TO YOU TO BE CRUCIAL + QUOTE I ASKED ABOUT STANGERSON QUOTE + NOTHING ELSE + IS THERE NO CIRCUMSTANCE ON WHICH THIS WHOLE CASE APPEARS TO HINGE + WILL YOU NOT TELEGRAPH AGAIN + I HAVE SAID ALL I HAVE TO SAY SAID GREGSON IN AN OFFENDED VOICE + SHERLOCK HOLMES CHUCKLED TO HIMSELF AND APPEARED TO BE ABOUT TO MAKE SOME REMARK WHEN LESTRADE WHO HAD BEEN IN THE FRONT ROOM WHILE WE WERE HOLDING THIS CONVERSATION IN THE HALL REAPPEARED UPON THE SCENE RUBBING HIS HANDS IN A POMPOUS AND SELF SATISFIED MANNER + MR. GREGSON HE SAID I HAVE JUST MADE A DISCOVERY OF THE HIGHEST IMPORTANCE AND ONE WHICH WOULD HAVE BEEN OVERLOOKED HAD I NOT MADE A CAREFUL EXAMINATION OF THE WALLS + THE LITTLE MAN'S EYES SPARKLED AS HE SPOKE AND HE WAS EVIDENTLY IN A STATE OF SUPPRESSED EXULTATION AT HAVING SCORED A POINT AGAINST HIS COLLEAGUE + COME HERE HE SAID BUSTLING BACK INTO THE ROOM THE ATMOSPHERE OF WHICH FELT CLEARER SINCE THE REMOVAL OF ITS GHASTLY INMATE + QUOTE NOW STAND THERE QUOTE + HE STRUCK A MATCH ON HIS BOOT AND HELD IT UP AGAINST THE WALL + LOOK AT THAT HE SAID TRIUMPHANTLY + I HAVE REMARKED THAT THE PAPER HAD FALLEN AWAY IN PARTS + IN THIS PARTICULAR CORNER OF THE ROOM A LARGE PIECE HAD PEELED OFF LEAVING A YELLOW SQUARE OF COARSE PLASTERING + ACROSS THIS BARE SPACE THERE WAS SCRAWLED IN BLOOD RED LETTERS A SINGLE WORD RACHE + WHAT DO YOU THINK OF THAT CRIED THE DETECTIVE WITH THE AIR OF A SHOWMAN EXHIBITING HIS SHOW + THIS WAS OVERLOOKED BECAUSE IT WAS IN THE DARKEST CORNER OF THE ROOM AND NO ONE THOUGHT OF LOOKING THERE + THE MURDERER HAS WRITTEN IT WITH HIS OR HER OWN BLOOD + SEE THIS SMEAR WHERE IT HAS TRICKLED DOWN THE WALL + THAT DISPOSES OF THE IDEA OF SUICIDE ANYHOW + WHY WAS THAT CORNER CHOSEN TO WRITE IT ON + I WILL TELL YOU + SEE THAT CANDLE ON THE MANTELPIECE + IT WAS LIT AT THE TIME AND IF IT WAS LIT THIS CORNER WOULD BE THE BRIGHTEST INSTEAD OF THE DARKEST PORTION OF THE WALL + AND WHAT DOES IT MEAN NOW THAT YOU HAVE FOUND IT ASKED GREGSON IN A DEPRECIATORY VOICE + QUOTE MEAN + WHY IT MEANS THAT THE WRITER WAS GOING TO PUT THE FEMALE NAME RACHEL BUT WAS DISTURBED BEFORE HE OR SHE HAD TIME TO FINISH + YOU MARK MY WORDS WHEN THIS CASE COMES TO BE CLEARED UP YOU WILL FIND THAT A WOMAN NAMED RACHEL HAS SOMETHING TO DO WITH IT + IT'S ALL VERY WELL FOR YOU TO LAUGH MR. SHERLOCK HOLMES + YOU MAY BE VERY SMART AND CLEVER BUT THE OLD HOUND IS THE BEST WHEN ALL IS SAID AND DONE + I REALLY BEG YOUR PARDON SAID MY COMPANION WHO HAD RUFFLED THE LITTLE MAN'S TEMPER BY BURSTING INTO AN EXPLOSION OF LAUGHTER + YOU CERTAINLY HAVE THE CREDIT OF BEING THE FIRST OF US TO FIND THIS OUT AND AS YOU SAY IT BEARS EVERY MARK OF HAVING BEEN WRITTEN BY THE OTHER PARTICIPANT IN LAST NIGHT'S MYSTERY + I HAVE NOT HAD TIME TO EXAMINE THIS ROOM YET BUT WITH YOUR PERMISSION I SHALL DO SO NOW + AS HE SPOKE HE WHIPPED A TAPE MEASURE AND A LARGE ROUND MAGNIFYING GLASS FROM HIS POCKET + WITH THESE TWO IMPLEMENTS HE TROTTED NOISELESSLY ABOUT THE ROOM SOMETIMES STOPPING OCCASIONALLY KNEELING AND ONCE LYING FLAT UPON HIS FACE + SO ENGROSSED WAS HE WITH HIS OCCUPATION THAT HE APPEARED TO HAVE FORGOTTEN OUR PRESENCE FOR HE CHATTERED AWAY TO HIMSELF UNDER HIS BREATH THE WHOLE TIME KEEPING UP A RUNNING FIRE OF EXCLAMATIONS GROANS WHISTLES AND LITTLE CRIES SUGGESTIVE OF ENCOURAGEMENT AND OF HOPE + AS I WATCHED HIM I WAS IRRESISTIBLY REMINDED OF A PURE BLOODED WELL TRAINED FOXHOUND AS IT DASHES BACKWARD AND FORWARD THROUGH THE COVERT WHINING IN ITS EAGERNESS UNTIL IT COMES ACROSS THE LOST SCENT + FOR TWENTY MINUTES OR MORE HE CONTINUED HIS RESEARCHES MEASURING WITH THE MOST EXACT CARE THE DISTANCE BETWEEN MARKS WHICH WERE ENTIRELY INVISIBLE TO ME AND OCCASIONALLY APPLYING HIS TAPE TO THE WALLS IN AN EQUALLY INCOMPREHENSIBLE MANNER + IN ONE PLACE HE GATHERED UP VERY CAREFULLY A LITTLE PILE OF GRAY DUST FROM THE FLOOR AND PACKED IT AWAY IN AN ENVELOPE + FINALLY HE EXAMINED WITH HIS GLASS THE WORD UPON THE WALL GOING OVER EVERY LETTER OF IT WITH THE MOST MINUTE EXACTNESS + THIS DONE HE APPEARED TO BE SATISFIED FOR HE REPLACED HIS TAPE AND HIS GLASS IN HIS POCKET + THEY SAY THAT GENIUS IS AN INFINITE CAPACITY FOR TAKING PAINS HE REMARKED WITH A SMILE + QUOTE IT'S A VERY BAD DEFINITION BUT IT DOES APPLY TO DETECTIVE WORK QUOTE + GREGSON AND LESTRADE HAD WATCHED THE MANOEUVRES OF THEIR AMATEUR COMPANION WITH CONSIDERABLE CURIOSITY AND SOME CONTEMPT + THEY EVIDENTLY FAILED TO APPRECIATE THE FACT WHICH I HAD BEGUN TO REALIZE THAT SHERLOCK HOLMES'S SMALLEST ACTIONS WERE ALL DIRECTED TOWARDS SOME DEFINITE AND PRACTICAL END + WHAT DO YOU THINK OF IT SIR THEY BOTH ASKED + IT WOULD BE ROBBING YOU OF THE CREDIT OF THE CASE IF I WERE TO PRESUME TO HELP YOU REMARKED MY FRIEND + YOU ARE DOING SO WELL NOW THAT IT WOULD BE A PITY FOR ANYONE TO INTERFERE + THERE WAS A WORLD OF SARCASM IN HIS VOICE AS HE SPOKE + IF YOU WILL LET ME KNOW HOW YOUR INVESTIGATIONS GO HE CONTINUED I SHALL BE HAPPY TO GIVE YOU ANY HELP I CAN + IN THE MEANTIME I SHOULD LIKE TO SPEAK TO THE CONSTABLE WHO FOUND THE BODY + CAN YOU GIVE ME HIS NAME AND ADDRESS + LESTRADE GLANCED AT HIS NOTEBOOK + QUOTE JOHN RANCE QUOTE HE SAID + HE IS OFF DUTY NOW + YOU WILL FIND HIM AT FORTY SIX AUDLEY COURT KENNINGTON PARK GATE + HOLMES TOOK A NOTE OF THE ADDRESS + COME ALONG DOCTOR HE SAID WE SHALL GO AND LOOK HIM UP + I'LL TELL YOU ONE THING WHICH MAY HELP YOU IN THE CASE HE CONTINUED TURNING TO THE TWO DETECTIVES + THERE HAS BEEN MURDER DONE AND THE MURDERER WAS A MAN + HE WAS MORE THAN SIX FEET HIGH WAS IN THE PRIME OF LIFE HAD SMALL FEET FOR HIS HEIGHT WORE COARSE SQUARE TOED BOOTS AND SMOKED A TRICHINOPOLY CIGAR + HE CAME HERE WITH HIS VICTIM IN A FOUR WHEELED CAB WHICH WAS DRAWN BY A HORSE WITH THREE OLD SHOES AND ONE NEW ONE ON HIS OFF FORE LEG + IN ALL PROBABILITY THE MURDERER HAD A FLORID FACE AND THE FINGER NAILS OF HIS RIGHT HAND WERE REMARKABLY LONG + THESE ARE ONLY A FEW INDICATIONS BUT THEY MAY ASSIST YOU QUOTE + LESTRADE AND GREGSON GLANCED AT EACH OTHER WITH AN INCREDULOUS SMILE + IF THIS MAN WAS MURDERED HOW WAS IT DONE ASKED THE FORMER + POISON SAID SHERLOCK HOLMES CURTLY AND STRODE OFF + ONE OTHER THING LESTRADE HE ADDED TURNING ROUND AT THE DOOR RACHE IS THE GERMAN FOR REVENGE SO DON'T LOSE YOUR TIME LOOKING FOR MISS RACHEL + WITH WHICH PARTHIAN SHOT HE WALKED AWAY LEAVING THE TWO RIVALS OPEN MOUTHED BEHIND HIM + CHAPTER FOUR WHAT JOHN RANCE HAD TO TELL + IT WAS ONE O'CLOCK WHEN WE LEFT NUMBER THREE LAURISTON GARDENS + SHERLOCK HOLMES LED ME TO THE NEAREST TELEGRAPH OFFICE WHENCE HE DISPATCHED A LONG TELEGRAM + HE THEN HAILED A CAB AND ORDERED THE DRIVER TO TAKE US TO THE ADDRESS GIVEN US BY LESTRADE + THERE IS NOTHING LIKE FIRST HAND EVIDENCE HE REMARKED AS A MATTER OF FACT MY MIND IS ENTIRELY MADE UP UPON THE CASE BUT STILL WE MAY AS WELL LEARN ALL THAT IS TO BE LEARNED + YOU AMAZE ME HOLMES SAID I. SURELY YOU ARE NOT AS SURE AS YOU PRETEND TO BE OF ALL THOSE PARTICULARS WHICH YOU GAVE + QUOTE THERE'S NO ROOM FOR A MISTAKE QUOTE HE ANSWERED + THE VERY FIRST THING WHICH I OBSERVED ON ARRIVING THERE WAS THAT A CAB HAD MADE TWO RUTS WITH ITS WHEELS CLOSE TO THE CURB + NOW UP TO LAST NIGHT WE HAVE HAD NO RAIN FOR A WEEK SO THAT THOSE WHEELS WHICH LEFT SUCH A DEEP IMPRESSION MUST HAVE BEEN THERE DURING THE NIGHT + THERE WERE THE MARKS OF THE HORSE'S HOOFS TOO THE OUTLINE OF ONE OF WHICH WAS FAR MORE CLEARLY CUT THAN THAT OF THE OTHER THREE SHOWING THAT THAT WAS A NEW SHOE + SINCE THE CAB WAS THERE AFTER THE RAIN BEGAN AND WAS NOT THERE AT ANY TIME DURING THE MORNING I HAVE GREGSON'S WORD FOR THAT IT FOLLOWS THAT IT MUST HAVE BEEN THERE DURING THE NIGHT AND THEREFORE THAT IT BROUGHT THOSE TWO INDIVIDUALS TO THE HOUSE + THAT SEEMS SIMPLE ENOUGH SAID I BUT HOW ABOUT THE OTHER MAN'S HEIGHT + WHY THE HEIGHT OF A MAN IN NINE CASES OUT OF TEN CAN BE TOLD FROM THE LENGTH OF HIS STRIDE + IT IS A SIMPLE CALCULATION ENOUGH THOUGH THERE IS NO USE MY BORING YOU WITH FIGURES + I HAD THIS FELLOW'S STRIDE BOTH ON THE CLAY OUTSIDE AND ON THE DUST WITHIN + THEN I HAD A WAY OF CHECKING MY CALCULATION + WHEN A MAN WRITES ON A WALL HIS INSTINCT LEADS HIM TO WRITE ABOVE THE LEVEL OF HIS OWN EYES + NOW THAT WRITING WAS JUST OVER SIX FEET FROM THE GROUND + IT WAS CHILD'S PLAY + QUOTE AND HIS AGE QUOTE + I ASKED + WELL IF A MAN CAN STRIDE FOUR AND A HALF FEET WITHOUT THE SMALLEST EFFORT HE CAN'T BE QUITE IN THE SERE AND YELLOW + THAT WAS THE BREADTH OF A PUDDLE ON THE GARDEN WALK WHICH HE HAD EVIDENTLY WALKED ACROSS + PATENT LEATHER BOOTS HAD GONE ROUND AND SQUARE TOES HAD HOPPED OVER + THERE IS NO MYSTERY ABOUT IT AT ALL + I AM SIMPLY APPLYING TO ORDINARY LIFE A FEW OF THOSE PRECEPTS OF OBSERVATION AND DEDUCTION WHICH I ADVOCATED IN THAT ARTICLE + IS THERE ANYTHING ELSE THAT PUZZLES YOU + THE FINGER NAILS AND THE TRICHINOPOLY I SUGGESTED + THE WRITING ON THE WALL WAS DONE WITH A MAN'S FOREFINGER DIPPED IN BLOOD + MY GLASS ALLOWED ME TO OBSERVE THAT THE PLASTER WAS SLIGHTLY SCRATCHED IN DOING IT WHICH WOULD NOT HAVE BEEN THE CASE IF THE MAN'S NAIL HAD BEEN TRIMMED + I GATHERED UP SOME SCATTERED ASH FROM THE FLOOR + IT WAS DARK IN COLOUR AND FLAKY SUCH AN ASH IS ONLY MADE BY A TRICHINOPOLY + I HAVE MADE A SPECIAL STUDY OF CIGAR ASHES IN FACT I HAVE WRITTEN A MONOGRAPH UPON THE SUBJECT + I FLATTER MYSELF THAT I CAN DISTINGUISH AT A GLANCE THE ASH OF ANY KNOWN BRAND EITHER OF CIGAR OR OF TOBACCO + IT IS JUST IN SUCH DETAILS THAT THE SKILLED DETECTIVE DIFFERS FROM THE GREGSON AND LESTRADE TYPE + QUOTE AND THE FLORID FACE QUOTE + I ASKED + AH THAT WAS A MORE DARING SHOT THOUGH I HAVE NO DOUBT THAT I WAS RIGHT + YOU MUST NOT ASK ME THAT AT THE PRESENT STATE OF THE AFFAIR + I PASSED MY HAND OVER MY BROW + MY HEAD IS IN A WHIRL I REMARKED THE MORE ONE THINKS OF IT THE MORE MYSTERIOUS IT GROWS + HOW CAME THESE TWO MEN IF THERE WERE TWO MEN INTO AN EMPTY HOUSE + WHAT HAS BECOME OF THE CABMAN WHO DROVE THEM + HOW COULD ONE MAN COMPEL ANOTHER TO TAKE POISON + WHERE DID THE BLOOD COME FROM + WHAT WAS THE OBJECT OF THE MURDERER SINCE ROBBERY HAD NO PART IN IT + HOW CAME THE WOMAN'S RING THERE + ABOVE ALL WHY SHOULD THE SECOND MAN WRITE UP THE GERMAN WORD RACHE BEFORE DECAMPING + I CONFESS THAT I CANNOT SEE ANY POSSIBLE WAY OF RECONCILING ALL THESE FACTS + MY COMPANION SMILED APPROVINGLY + YOU SUM UP THE DIFFICULTIES OF THE SITUATION SUCCINCTLY AND WELL HE SAID + QUOTE THERE IS MUCH THAT IS STILL OBSCURE THOUGH I HAVE QUITE MADE UP MY MIND ON THE MAIN FACTS + AS TO POOR LESTRADE'S DISCOVERY IT WAS SIMPLY A BLIND INTENDED TO PUT THE POLICE UPON A WRONG TRACK BY SUGGESTING SOCIALISM AND SECRET SOCIETIES + IT WAS NOT DONE BY A GERMAN + THE A IF YOU NOTICED WAS PRINTED SOMEWHAT AFTER THE GERMAN FASHION + NOW A REAL GERMAN INVARIABLY PRINTS IN THE LATIN CHARACTER SO THAT WE MAY SAFELY SAY THAT THIS WAS NOT WRITTEN BY ONE BUT BY A CLUMSY IMITATOR WHO OVERDID HIS PART + IT WAS SIMPLY A RUSE TO DIVERT INQUIRY INTO A WRONG CHANNEL + I'M NOT GOING TO TELL YOU MUCH MORE OF THE CASE DOCTOR + YOU KNOW A CONJURER GETS NO CREDIT WHEN ONCE HE HAS EXPLAINED HIS TRICK AND IF I SHOW YOU TOO MUCH OF MY METHOD OF WORKING YOU WILL COME TO THE CONCLUSION THAT I AM A VERY ORDINARY INDIVIDUAL AFTER ALL + I SHALL NEVER DO THAT I ANSWERED YOU HAVE BROUGHT DETECTION AS NEAR AN EXACT SCIENCE AS IT EVER WILL BE BROUGHT IN THIS WORLD + MY COMPANION FLUSHED UP WITH PLEASURE AT MY WORDS AND THE EARNEST WAY IN WHICH I UTTERED THEM + I HAD ALREADY OBSERVED THAT HE WAS AS SENSITIVE TO FLATTERY ON THE SCORE OF HIS ART AS ANY GIRL COULD BE OF HER BEAUTY + I'LL TELL YOU ONE OTHER THING HE SAID + PATENT LEATHERS AND SQUARE TOES CAME IN THE SAME CAB AND THEY WALKED DOWN THE PATHWAY TOGETHER AS FRIENDLY AS POSSIBLE ARM IN ARM IN ALL PROBABILITY + WHEN THEY GOT INSIDE THEY WALKED UP AND DOWN THE ROOM OR RATHER PATENT LEATHERS STOOD STILL WHILE SQUARE TOES WALKED UP AND DOWN + I COULD READ ALL THAT IN THE DUST AND I COULD READ THAT AS HE WALKED HE GREW MORE AND MORE EXCITED + THAT IS SHOWN BY THE INCREASED LENGTH OF HIS STRIDES + HE WAS TALKING ALL THE WHILE AND WORKING HIMSELF UP NO DOUBT INTO A FURY + THEN THE TRAGEDY OCCURRED + I'VE TOLD YOU ALL I KNOW MYSELF NOW FOR THE REST IS MERE SURMISE AND CONJECTURE + WE HAVE A GOOD WORKING BASIS HOWEVER ON WHICH TO START + WE MUST HURRY UP FOR I WANT TO GO TO HALLE'S CONCERT TO HEAR NORMAN NERUDA THIS AFTERNOON + THIS CONVERSATION HAD OCCURRED WHILE OUR CAB HAD BEEN THREADING ITS WAY THROUGH A LONG SUCCESSION OF DINGY STREETS AND DREARY BYWAYS LN THE DINGIEST AND DREARIEST OF THEM OUR DRIVER SUDDENLY CAME TO A STAND + QUOTE THAT'S AUDLEY COURT IN THERE QUOTE HE SAID POINTING TO A NARROW SLIT IN THE LINE OF DEAD COLOURED BRICK + YOU'LL FIND ME HERE WHEN YOU COME BACK + AUDLEY COURT WAS NOT AN ATTRACTIVE LOCALITY + THE NARROW PASSAGE LED US INTO A QUADRANGLE PAVED WITH FLAGS AND LINED BY SORDID DWELLINGS + WE PICKED OUR WAY AMONG GROUPS OF DIRTY CHILDREN AND THROUGH LINES OF DISCOLOURED LINEN UNTIL WE CAME TO NUMBER FORTY SIX THE DOOR OF WHICH WAS DECORATED WITH A SMALL SLIP OF BRASS ON WHICH THE NAME RANCE WAS ENGRAVED + ON INQUIRY WE FOUND THAT THE CONSTABLE WAS IN BED AND WE WERE SHOWN INTO A LITTLE FRONT PARLOUR TO AWAIT HIS COMING + HE APPEARED PRESENTLY LOOKING A LITTLE IRRITABLE AT BEING DISTURBED IN HIS SLUMBERS + I MADE MY REPORT AT THE OFFICE HE SAID + HOLMES TOOK A HALF SOVEREIGN FROM HIS POCKET AND PLAYED WITH IT PENSIVELY + WE THOUGHT THAT WE SHOULD LIKE TO HEAR IT ALL FROM YOUR OWN LIPS HE SAID + I SHALL BE MOST HAPPY TO TELL YOU ANYTHING I CAN THE CONSTABLE ANSWERED WITH HIS EYES UPON THE LITTLE GOLDEN DISC + JUST LET US HEAR IT ALL IN YOUR OWN WAY AS IT OCCURRED + RANCE SAT DOWN ON THE HORSEHAIR SOFA AND KNITTED HIS BROWS AS THOUGH DETERMINED NOT TO OMIT ANYTHING IN HIS NARRATIVE + QUOTE I'LL TELL IT YE FROM THE BEGINNING QUOTE HE SAID + MY TIME IS FROM TEN AT NIGHT TO SIX IN THE MORNING + AT ELEVEN THERE WAS A FIGHT AT THE WHITE HART BUT BAR THAT ALL WAS QUIET ENOUGH ON THE BEAT + AT ONE O'CLOCK IT BEGAN TO RAIN AND I MET HARRY MURCHER HIM WHO HAS THE HOLLAND GROVE BEAT AND WE STOOD TOGETHER AT THE CORNER OF HENRIETTA STREET A TALKIN' + PRESENTLY MAYBE ABOUT TWO OR A LITTLE AFTER I THOUGHT I WOULD TAKE A LOOK ROUND AND SEE THAT ALL WAS RIGHT DOWN THE BRIXTON ROAD + IT WAS PRECIOUS DIRTY AND LONELY + NOT A SOUL DID I MEET ALL THE WAY DOWN THOUGH A CAB OR TWO WENT PAST ME + I WAS A STROLLIN' DOWN THINKIN' BETWEEN OURSELVES HOW UNCOMMON HANDY A FOUR OF GIN HOT WOULD BE WHEN SUDDENLY THE GLINT OF A LIGHT CAUGHT MY EYE IN THE WINDOW OF THAT SAME HOUSE + NOW I KNEW THAT THEM TWO HOUSES IN LAURISTON GARDENS WAS EMPTY ON ACCOUNT OF HIM THAT OWNS THEM WHO WON'T HAVE THE DRAINS SEED TO THOUGH THE VERY LAST TENANT WHAT LIVED IN ONE OF THEM DIED O' TYPHOID FEVER + I WAS KNOCKED ALL IN A HEAP THEREFORE AT SEEING A LIGHT IN THE WINDOW AND I SUSPECTED AS SOMETHING WAS WRONG + WHEN I GOT TO THE DOOR + YOU STOPPED AND THEN WALKED BACK TO THE GARDEN GATE MY COMPANION INTERRUPTED + WHAT DID YOU DO THAT FOR + RANCE GAVE A VIOLENT JUMP AND STARED AT SHERLOCK HOLMES WITH THE UTMOST AMAZEMENT UPON HIS FEATURES + WHY THAT'S TRUE SIR HE SAID THOUGH HOW YOU COME TO KNOW IT HEAVEN ONLY KNOWS + YE SEE WHEN I GOT UP TO THE DOOR IT WAS SO STILL AND SO LONESOME THAT I THOUGHT I'D BE NONE THE WORSE FOR SOMEONE WITH ME + I AIN'T AFEARED OF ANYTHING ON THIS SIDE O' THE GRAVE BUT I THOUGHT THAT MAYBE IT WAS HIM THAT DIED O' THE TYPHOID INSPECTING THE DRAINS WHAT KILLED HIM + THE THOUGHT GAVE ME A KIND O' TURN AND I WALKED BACK TO THE GATE TO SEE IF I COULD SEE MURCHER'S LANTERN BUT THERE WASN'T NO SIGN OF HIM NOR OF ANYONE ELSE QUOTE + THERE WAS NO ONE IN THE STREET + NOT A LIVIN' SOUL SIR NOR AS MUCH AS A DOG + THEN I PULLED MYSELF TOGETHER AND WENT BACK AND PUSHED THE DOOR OPEN + ALL WAS QUIET INSIDE SO I WENT INTO THE ROOM WHERE THE LIGHT WAS A BURNIN' + THERE WAS A CANDLE FLICKERIN' ON THE MANTELPIECE A RED WAX ONE AND BY ITS LIGHT I SAW + YES I KNOW ALL THAT YOU SAW + YOU WALKED ROUND THE ROOM SEVERAL TIMES AND YOU KNELT DOWN BY THE BODY AND THEN YOU WALKED THROUGH AND TRIED THE KITCHEN DOOR AND THEN + JOHN RANCE SPRANG TO HIS FEET WITH A FRIGHTENED FACE AND SUSPICION IN HIS EYES + QUOTE WHERE WAS YOU HID TO SEE ALL THAT QUOTE HE CRIED + IT SEEMS TO ME THAT YOU KNOWS A DEAL MORE THAN YOU SHOULD + HOLMES LAUGHED AND THREW HIS CARD ACROSS THE TABLE TO THE CONSTABLE + DON'T GO ARRESTING ME FOR THE MURDER HE SAID + I AM ONE OF THE HOUNDS AND NOT THE WOLF MR. GREGSON OR MR. LESTRADE WILL ANSWER FOR THAT + GO ON THOUGH + WHAT DID YOU DO NEXT + RANCE RESUMED HIS SEAT WITHOUT HOWEVER LOSING HIS MYSTIFIED EXPRESSION + I WENT BACK TO THE GATE AND SOUNDED MY WHISTLE + THAT BROUGHT MURCHER AND TWO MORE TO THE SPOT QUOTE + WAS THE STREET EMPTY THEN + WELL IT WAS AS FAR AS ANYBODY THAT COULD BE OF ANY GOOD GOES + WHAT DO YOU MEAN + THE CONSTABLE'S FEATURES BROADENED INTO A GRIN I'VE SEEN MANY A DRUNK CHAP IN MY TIME HE SAID BUT NEVER ANYONE SO CRYIN' DRUNK AS THAT COVE + HE WAS AT THE GATE WHEN I CAME OUT A LEANIN' UP AG'IN THE RAILINGS AND A SINGIN' AT THE PITCH O' HIS LUNGS ABOUT COLUMBINE'S NEW FANGLED BANNER OR SOME SUCH STUFF + HE COULDN'T STAND FAR LESS HELP + QUOTE WHAT SORT OF A MAN WAS HE QUOTE ASKED SHERLOCK HOLMES + JOHN RANCE APPEARED TO BE SOMEWHAT IRRITATED AT THIS DIGRESSION + HE WAS AN UNCOMMON DRUNK SORT O' MAN HE SAID + HE'D HA FOUND HISSELF IN THE STATION IF WE HADN'T BEEN SO TOOK UP + HIS FACE HIS DRESS DIDN'T YOU NOTICE THEM + HOLMES BROKE IN IMPATIENTLY + I SHOULD THINK I DID NOTICE THEM SEEING THAT I HAD TO PROP HIM UP ME AND MURCHER BETWEEN US + HE WAS A LONG CHAP WITH A RED FACE THE LOWER PART MUFFLED ROUND + QUOTE THAT WILL DO QUOTE CRIED HOLMES + WHAT BECAME OF HIM + WE'D ENOUGH TO DO WITHOUT LOOKIN' AFTER HIM THE POLICEMAN SAID IN AN AGGRIEVED VOICE + I'LL WAGER HE FOUND HIS WAY HOME ALL RIGHT + HOW WAS HE DRESSED + A BROWN OVERCOAT + QUOTE HAD HE A WHIP IN HIS HAND QUOTE + A WHIP NO + HE MUST HAVE LEFT IT BEHIND MUTTERED MY COMPANION + YOU DIDN'T HAPPEN TO SEE OR HEAR A CAB AFTER THAT + NUMBER + THERE'S A HALF SOVEREIGN FOR YOU MY COMPANION SAID STANDING UP AND TAKING HIS HAT + QUOTE I AM AFRAID RANCE THAT YOU WILL NEVER RISE IN THE FORCE + THAT HEAD OF YOURS SHOULD BE FOR USE AS WELL AS ORNAMENT + YOU MIGHT HAVE GAINED YOUR SERGEANT'S STRIPES LAST NIGHT + THE MAN WHOM YOU HELD IN YOUR HANDS IS THE MAN WHO HOLDS THE CLUE OF THIS MYSTERY AND WHOM WE ARE SEEKING + THERE IS NO USE OF ARGUING ABOUT IT NOW I TELL YOU THAT IT IS SO + COME ALONG DOCTOR + WE STARTED OFF FOR RHE CAB TOGETHER LEAVING OUR INFORMANT INCREDULOUS BUT OBVIOUSLY UNCOMFORTABLE + THE BLUNDERING FOOL + HOLMES SAID BITTERLY AS WE DROVE BACK TO OUR LODGINGS + JUST TO THINK OF HIS HAVING SUCH AN INCOMPARABLE BIT OF GOOD LUCK AND NOT TAKING ADVANTAGE OF IT + I AM RATHER IN THE DARK STILL + IT IS TRUE THAT THE DESCRIPTION OF THIS MAN TALLIES WITH YOUR IDEA OF THE SECOND PARTY IN THIS MYSTERY + BUT WHY SHOULD HE COME BACK TO THE HOUSE AFTER LEAVING IT + THAT IS NOT THE WAY OF CRIMINALS + QUOTE THE RING MAN THE RING THAT WAS WHAT HE CAME BACK FOR + IF WE HAVE NO OTHER WAY OF CATCHING HIM WE CAN ALWAYS BAIT OUR LINE WITH THE RING + I SHALL HAVE HIM DOCTOR I'LL LAY YOU TWO TO ONE THAT I HAVE HIM + I MUST THANK YOU FOR IT ALL + I MIGHT NOT HAVE GONE BUT FOR YOU AND SO HAVE MISSED THE FINEST STUDY I EVER CAME ACROSS A STUDY IN SCARLET EH + WHY SHOULDN'T WE USE A LITTLE ART JARGON + THERE'S THE SCARLET THREAD OF MURDER RUNNING THROUGH THE COLOURLESS SKEIN OF LIFE AND OUR DUTY IS TO UNRAVEL IT AND ISOLATE IT AND EXPOSE EVERY INCH OF IT + AND NOW FOR LUNCH AND THEN FOR NORMAN NERUDA + HER ATTACK AND HER BOWING ARE SPLENDID + WHAT'S THAT LITTLE THING OF CHOPIN'S SHE PLAYS SO MAGNIFICENTLY T. R. A. LA LA LIRA LIRA LAY + LEANING BACK IN THE CAB THIS AMATEUR BLOODHOUND CAROLLED AWAY LIKE A LARK WHILE I MEDITATED UPON THE MANY SIDEDNESS OF THE HUMAN MIND + CHAPTER FIVE OUR ADVERTISEMENT BRINGS A VISITOR + OUR MORNING'S EXERTIONS HAD BEEN TOO MUCH FOR MY WEAK HEALTH AND I WAS TIRED OUT IN THE AFTERNOON + AFTER HOLMES'S DEPARTURE FOR THE CONCERT I LAY DOWN UPON THE SOFA AND ENDEAVOURED TO GET A COUPLE OF HOURS' SLEEP + IT WAS A USELESS ATTEMPT + MY MIND HAD BEEN TOO MUCH EXCITED BY ALL THAT HAD OCCURRED AND THE STRANGEST FANCIES AND SURMISES CROWDED INTO IT + EVERY TIME THAT I CLOSED MY EYES ONE SAW BEFORE ME THE DISTORTED BABOON LIKE COUNTENANCE OF THE MURDERED MAN + SO SINISTER WAS THE IMPRESSION WHICH THAT FACE HAD PRODUCED UPON ME THAT I FOUND IT DIFFICULT TO FEEL ANYTHING BUT GRATITUDE FOR HIM WHO HAD REMOVED ITS OWNER FROM THE WORLD + IF EVER HUMAN FEATURES BESPOKE VICE OF THE MOST MALIGNANT TYPE THEY WERE CERTAINLY THOSE OF ENOCH J. DREBBER OF CLEVELAND + STILL I RECOGNIZED THAT JUSTICE MUST BE DONE AND THAT THE DEPRAVITY OF THE VICTIM WAS NO CONDONEMENT IN THE EYES OF THE LAW + THE MORE I THOUGHT OF IT THE MORE EXTRAORDINARY DID MY COMPANION'S HYPOTHESIS THAT THE MAN HAD BEEN POISONED APPEAR + I REMEMBERED HOW HE HAD SNIFFED HIS LIPS AND HAD NO DOUBT THAT HE HAD DETECTED SOMETHING WHICH HAD GIVEN RISE TO THE IDEA + THEN AGAIN IF NOT POISON WHAT HAD CAUSED THE MAN'S DEATH SINCE THERE WAS NEITHER WOUND NOR MARKS OF STRANGULATION + BUT ON THE OTNER HAND WHOSE BLOOD WAS THAT WHICH LAY SO THICKLY UPON THE FLOOR + THERE WERE NO SIGNS OF A STRUGGLE NOR HAD THE VICTIM ANY WEAPON WITH WHICH HE MIGHT HAVE WOUNDED AN ANTAGONIST + AS LONG AS ALL THESE QUESTIONS WERE UNSOLVED I FELT THAT SLEEP WOULD BE NO EASY MATTER EITHER FOR HOLMES OR MYSELF + HIS QUIET SELF CONFIDENT MANNER CONVINCED ME THAT HE HAD ALREADY FORMED A THEORY WHICH EXPLAINED ALL THE FACTS THOUGH WHAT IT WAS I COULD NOT FOR AN INSTANT CONJECTURE + HE WAS VERY LATE IN RETURNING SO LATE THAT I KNEW THAT THE CONCERT COULD NOT HAVE DETAINED HIM ALL THE TIME + DINNER WAS ON THE TABLE BEFORE HE APPEARED + IT WAS MAGNIFICENT HE SAID AS HE TOOK HIS SEAT + DO YOU REMEMBER WHAT DARWIN SAYS ABOUT MUSIC + HE CLAIMS THAT THE POWER OF PRODUCING AND APPRECIATING IT EXISTED AMONG THE HUMAN RACE LONG BEFORE THE POWER OF SPEECH WAS ARRIVED AT + PERHAPS THAT IS WHY WE ARE SO SUBTLY INFLUENCED BY IT + THERE ARE VAGUE MEMORIES IN OUR SOULS OF THOSE MISTY CENTURIES WHEN THE WORLD WAS IN ITS CHILDHOOD + THAT'S RATHER A BROAD IDEA I REMARKED + QUOTE ONE'S IDEAS MUST BE AS BROAD AS NATURE IF THEY ARE TO INTERPRET NATURE QUOTE HE ANSWERED + WHAT'S THE MATTER + YOU'RE NOT LOOKING QUITE YOURSELF + THIS BRIXTON ROAD AFFAIR HAS UPSET YOU + TO TELL THE TRUTH IT HAS I SAID + I OUGHT TO BE MORE CASE HARDENED AFTER MY AFGHAN EXPERIENCES + I SAW MY OWN COMRADES HACKED TO PIECES AT MAIWAND WITHOUT LOSING MY NERVE + QUOTE I CAN UNDERSTAND + THERE IS A MYSTERY ABOUT THIS WHICH STIMULATES THE IMAGINATION WHERE THERE IS NO IMAGINATION THERE IS NO HORROR + HAVE YOU SEEN THE EVENING PAPER + NUMBER + IT GIVES A FAIRLY GOOD ACCOUNT OF THE AFFAIR + IT DOES NOT MENTION THE FACT THAT WHEN THE MAN WAS RAISED UP A WOMAN'S WEDDING RING FELL UPON THE FLOOR + IT IS JUST AS WELL IT DOES NOT + WHY + QUOTE LOOK AT THIS ADVERTISEMENT QUOTE HE ANSWERED + I HAD ONE SENT TO EVERY PAPER THIS MORNING IMMEDIATELY AFTER THE AFFAIR + HE THREW THE PAPER ACROSS TO ME AND I GLANCED AT THE PLACE INDICATED + IT WAS THE FIRST ANNOUNCEMENT IN THE FOUND COLUMN + IN BRIXTON ROAD THIS MORNING IT RAN A PLAIN GOLD WEDDING RING FOUND IN THE ROADWAY BETWEEN THE WHITE HART TAVERN AND HOLLAND GROVE + APPLY DOCTOR WATSON TWO HUNDRED TWENTY ONE B. BAKER STREET BETWEEN EIGHT AND NINE THIS EVENING + EXCUSE MY USING YOUR NAME HE SAID + QUOTE IF I USED MY OWN SOME OF THESE DUNDERHEADS WOULD RECOGNIZE IT AND WANT TO MEDDLE IN THE AFFAIR QUOTE + THAT IS ALL RIGHT I ANSWERED + BUT SUPPOSING ANYONE APPLIES I HAVE NO RING + OH YES YOU HAVE SAID HE HANDING ME ONE + THIS WILL DO VERY WELL + IT IS ALMOST A FACSIMILE + QUOTE AND WHO DO YOU EXPECT WILL ANSWER THIS ADVERTISEMENT QUOTE + WHY THE MAN IN THE BROWN COAT OUR FLORID FRIEND WITH THE SQUARE TOES + IF HE DOES NOT COME HIMSELF HE WILL SEND AN ACCOMPLICE + WOULD HE NOT CONSIDER IT AS TOO DANGEROUS + NOT AT ALL + IF MY VIEW OF THE CASE IS CORRECT AND I HAVE EVERY REASON TO BELIEVE THAT IT IS THIS MAN WOULD RATHER RISK ANYTHING THAN LOSE THE RING + ACCORDING TO MY NOTION HE DROPPED IT WHILE STOOPING OVER DREBBER'S BODY AND DID NOT MISS IT AT THE TIME + AFTER LEAVING THE HOUSE HE DISCOVERED HIS LOSS AND HURRIED BACK BUT FOUND THE POLICE ALREADY IN POSSESSION OWING TO HIS OWN FOLLY IN LEAVING THE CANDLE BURNING + HE HAD TO PRETEND TO BE DRUNK IN ORDER TO ALLAY THE SUSPICIONS WHICH MIGHT HAVE BEEN AROUSED BY HIS APPEARANCE AT THE GATE + NOW PUT YOURSELF IN THAT MAN'S PLACE + ON THINKING THE MATTER OVER IT MUST HAVE OCCURRED TO HIM THAT IT WAS POSSIBLE THAT HE HAD LOST THE RING IN THE ROAD AFTER LEAVING THE HOUSE + WHAT WOULD HE DO THEN + HE WOULD EAGERLY LOOK OUT FOR THE EVENING PAPERS IN THE HOPE OF SEEING IT AMONG THE ARTICLES FOUND + HIS EYE OF COURSE WOULD LIGHT UPON THIS + HE WOULD BE OVERJOYED + WHY SHOULD HE FEAR A TRAP + THERE WOULD BE NO REASON IN HIS EYES WHY THE FINDING OF THE RING SHOULD BE CONNECTED WITH THE MURDER + HE WOULD COME + HE WILL COME + YOU SHALL SEE HIM WITHIN AN HOUR + QUOTE AND THEN QUOTE + I ASKED + OH YOU CAN LEAVE ME TO DEAL WITH HIM THEN + HAVE YOU ANY ARMS + I HAVE MY OLD SERVICE REVOLVER AND A FEW CARTRIDGES + YOU HAD BETTER CLEAN IT AND LOAD IT + HE WILL BE A DESPERATE MAN AND THOUGH I SHALL TAKE HIM UNAWARES IT IS AS WELL TO BE READY FOR ANYTHING + I WENT TO MY BEDROOM AND FOLLOWED HIS ADVICE + WHEN I RETURNED WITH THE PISTOL THE TABLE HAD BEEN CLEARED AND HOLMES WAS ENGAGED IN HIS FAVOURITE OCCUPATION OF SCRAPING UPON HIS VIOLIN + QUOTE THE PLOT THICKENS QUOTE HE SAID AS I ENTERED QUOTE I HAVE JUST HAD AN ANSWER TO MY AMERICAN TELEGRAM + MY VIEW OF THE CASE IS THE CORRECT ONE + AND THAT IS + I ASKED EAGERLY + MY FIDDLE WOULD BE THE BETTER FOR NEW STRINGS HE REMARKED + PUT YOUR PISTOL IN YOUR POCKET + WHEN THE FELLOW COMES SPEAK TO HIM IN AN ORDINARY WAY + LEAVE THE REST TO ME + DON'T FRIGHTEN HIM BY LOOKING AT HIM TOO HARD + QUOTE IT IS EIGHT O'CLOCK NOW QUOTE I SAID GLANCING AT MY WATCH + YES + HE WILL PROBABLY BE HERE IN A FEW MINUTES + OPEN THE DOOR SLIGHTLY + THAT WILL DO + NOW PUT THE KEY ON THE INSIDE + THANK YOU + THIS IS A QUEER OLD BOOK I PICKED UP AT A STALL YESTERDAY DE JURE INTER GENTES PUBLISHED IN LATIN AT LIEGE IN THE LOWLANDS IN ONE THOUSAND SIX HUNDRED FORTY TWO + CHARLES'S HEAD WAS STILL FIRM ON HIS SHOULDERS WHEN THIS LITTLE BROWN BACKED VOLUME WAS STRUCK OFF + WHO IS THE PRINTER + PHILIPPE DE CROY WHOEVER HE MAY HAVE BEEN + ON THE FLYLEAF IN VERY FADED INK IS WRITTEN EX LIBRIS GULIOLMI WHYTE + I WONDER WHO WILLIAM WHYTE WAS + SOME PRAGMATICAL SEVENTEENTHCENTURY LAWYER I SUPPOSE + HIS WRITING HAS A LEGAL TWIST ABOUT IT + HERE COMES OUR MAN I THINK + AS HE SPOKE THERE WAS A SHARP RING AT THE BELL + SHERLOCK HOLMES ROSE SOFTLY AND MOVED HIS CHAIR IN THE DIRECTION OF THE DOOR + WE HEARD THE SERVANT PASS ALONG THE HALL AND THE SHARP CLICK OF THE LATCH AS SHE OPENED IT + QUOTE DOES DOCTOR WATSON LIVE HERE QUOTE ASKED A CLEAR BUT RATHER HARSH VOICE + WE COULD NOT HEAR THE SERVANT'S REPLY BUT THE DOOR CLOSED AND SOMEONE BEGAN TO ASCEND THE STAIRS + THE FOOTFALL WAS AN UNCERTAIN AND SHUFFLING ONE + A LOOK OF SURPRISE PASSED OVER THE FACE OF MY COMPANION AS HE LISTENED TO IT + IT CAME SLOWLY ALONG THE PASSAGE AND THERE WAS A FEEBLE TAP AT THE DOOR + COME IN I CRIED + AT MY SUMMONS INSTEAD OF THE MAN OF VIOLENCE WHOM WE EXPECTED A VERY OLD AND WRINKLED WOMAN HOBBLED INTO THE APARTMENT + SHE APPEARED TO BE DAZZLED BY THE SUDDEN BLAZE OF LIGHT AND AFTER DROPPING A CURTSEY SHE STOOD BLINKING AT US WITH HER BLEARED EYES AND FUMBLING IN HER POCKET WITH NERVOUS SHAKY FINGERS + I GLANCED AT MY COMPANION AND HIS FACE HAD ASSUMED SUCH A DISCONSOLATE EXPRESSION THAT IT WAS ALL I COULD DO TO KEEP MY COUNTENANCE + THE OLD CRONE DREW OUT AN EVENING PAPER AND POINTED AT OUR ADVERTISEMENT + IT'S THIS AS HAS BROUGHT ME GOOD GENTLEMEN SHE SAID DROPPING ANOTHER CURTSEY A GOLD WEDDING RING IN THE BRIXTON ROAD + IT BELONGS TO MY GIRL SALLY AS WAS MARRIED ONLY THIS TIME TWELVEMONTH WHICH HER HUSBAND IS STEWARD ABOARD A UNION BOAT AND WHAT HE'D SAY IF HE COMES OME AND FOUND HER WITHOUT HER RING IS MORE THAN I CAN THINK HE BEING SHORT ENOUGH AT THE BEST O' TIMES BUT MORE ESPECIALLY WHEN HE HAS THE DRINK + IF IT PLEASE YOU SHE WENT TO THE CIRCUS LAST NIGHT ALONG WITH + IS THAT HER RING + I ASKED + THE LORD BE THANKED CRIED THE OLD WOMAN SALLY WILL BE A GLAD WOMAN THIS NIGHT + THAT'S THE RING QUOTE + AND WHAT MAY YOUR ADDRESS BE + I INQUIRED TAKING UP A PENCIL + THIRTEEN DUNCAN STREET HOUNDSDITCH + A WEARY WAY FROM HERE + THE BRIXTON ROAD DOES NOT LIE BETWEEN ANY CIRCUS AND HOUNDSDITCH SAID SHERLOCK HOLMES SHARPLY + THE OLD WOMAN FACED ROUND AND LOOKED KEENLY AT HIM FROM HER LITTLE RED RIMMED EYES + THE GENTLEMAN ASKED ME FOR MY ADDRESS SHE SAID + QUOTE SALLY LIVES IN LODGINGS AT THREE MAYFIELD PLACE PECKHAM QUOTE + AND YOUR NAME IS + HERE IS YOUR RING MRS. SAWYER I INTERRUPTED IN OBEDIENCE TO A SIGN FROM MY COMPANION IT CLEARLY BELONGS TO YOUR DAUGHTER AND I AM GLAD TO BE ABLE TO RESTORE IT TO THE RIGHTFUL OWNER + WITH MANY MUMBLED BLESSINGS AND PROTESTATIONS OF GRATITUDE THE OLD CRONE PACKED IT AWAY IN HER POCKET AND SHUFFLED OFF DOWN THE STAIRS + SHERLOCK HOLMES SPRANG TO HIS FEET THE MOMENT THAT SHE WAS GONE AND RUSHED INTO HIS ROOM + HE RETURNED IN A FEW SECONDS ENVELOPED IN AN ULSTER AND A CRAVAT + I'LL FOLLOW HER HE SAID HURRIEDLY SHE MUST BE AN ACCOMPLICE AND WILL LEAD ME TO HIM + WAIT UP FOR ME + THE HALL DOOR HAD HARDLY SLAMMED BEHIND OUR VISITOR BEFORE HOLMES HAD DESCENDED THE STAIR + LOOKING THROUGH THE WINDOW I COULD SEE HER WALKING FEEBLY ALONG THE OTHER SIDE WHILE HER PURSUER DOGGED HER SOME LITTLE DISTANCE BEHIND + EITHER HIS WHOLE THEORY IS INCORRECT I THOUGHT TO MYSELF OR ELSE HE WILL BE LED NOW TO THE HEART OF THE MYSTERY + THERE WAS NO NEED FOR HIM TO ASK ME TO WAIT UP FOR HIM FOR I FELT THAT SLEEP WAS IMPOSSIBLE UNTIL I HEARD THE RESULT OF HIS ADVENTURE + IT WAS CLOSE UPON NINE WHEN HE SET OUT + I HAD NO IDEA HOW LONG HE MIGHT BE BUT I SAT STOLIDLY PUFFING AT MY PIPE AND SKIPPING OVER THE PAGES OF HENRI MURGER'S VIE DE BOHEME + TEN O'CLOCK PASSED AND I HEARD THE FOOTSTEPS OF THE MAID AS SHE PATTERED OFF TO BED + ELEVEN AND THE MORE STATELY TREAD OF THE LANDLADY PASSED MY DOOR BOUND FOR THE SAME DESTINATION + IT WAS CLOSE UPON TWELVE BEFORE I HEARD THE SHARP SOUND OF HIS LATCHKEY + THE INSTANT HE ENTERED I SAW BY HIS FACE THAT HE HAD NOT BEEN SUCCESSFUL + AMUSEMENT AND CHAGRIN SEEMED TO BE STRUGGLING FOR THE MASTERY UNTIL THE FORMER SUDDENLY CARRIED THE DAY AND HE BURST INTO A HEARTY LAUGH + QUOTE I WOULDN'T HAVE THE SCOTLAND YARDERS KNOW IT FOR THE WORLD QUOTE HE CRIED DROPPING INTO HIS CHAIR QUOTE I HAVE CHAFFED THEM SO MUCH THAT THEY WOULD NEVER HAVE LET ME HEAR THE END OF IT + I CAN AFFORD TO LAUGH BECAUSE I KNOW THAT I WILL BE EVEN WITH THEM IN THE LONG RUN + WHAT IS IT THEN + I ASKED + OH I DON'T MIND TELLING A STORY AGAINST MYSELF + THAT CREATURE HAD GONE A LITTLE WAY WHEN SHE BEGAN TO LIMP AND SHOW EVERY SIGN OF BEING FOOTSORE + PRESENTLY SHE CAME TO A HALT AND HAILED A FOUR WHEELER WHICH WAS PASSING + I MANAGED TO BE CLOSE TO HER SO AS TO HEAR THE ADDRESS BUT I NEED NOT HAVE BEEN SO ANXIOUS FOR SHE SANG IT OUT LOUD ENOUGH TO BE HEARD AT THE OTHER SIDE OF THE STREET DRIVE TO THIRTEEN DUNCAN STREET HOUNDSDITCH SHE CRIED + THIS BEGINS TO LOOK GENUINE I THOUGHT AND HAVING SEEN HER SAFELY INSIDE I PERCHED MYSELF BEHIND + THAT'S AN ART WHICH EVERY DETECTIVE SHOULD BE AN EXPERT AT + WELL AWAY WE RATTLED AND NEVER DREW REIN UNTIL WE REACHED THE STREET IN QUESTION + I HOPPED OFF BEFORE WE CAME TO THE DOOR AND STROLLED DOWN THE STREET IN AN EASY LOUNGING WAY + I SAW THE CAB PULL UP + THE DRIVER JUMPED DOWN AND I SAW HIM OPEN THE DOOR AND STAND EXPECTANTLY + NOTHING CAME OUT THOUGH + WHEN I REACHED HIM HE WAS GROPING ABOUT FRANTICALLY IN THE EMPTY CAB AND GIVING VENT TO THE FINEST ASSORTED COLLECTION OF OATHS THAT EVER I LISTENED TO + THERE WAS NO SIGN OR TRACE OF HIS PASSENGER AND I FEAR IT WILL BE SOME TIME BEFORE HE GETS HIS FARE + ON INQUIRING AT NUMBER THIRTEEN WE FOUND THAT THE HOUSE BELONGED TO A RESPEETABLE PAPERHANGER NAMED KESWICK AND THAT NO ONE OF THE NAME EITHER OF SAWYER OR DENNIS HAD EVER BEEN HEARD OF THERE + YOU DON'T MEAN TO SAY I CRIED IN AMAZEMENT THAT THAT TOTTERING FEEBLE OLD WOMAN WAS ABLE TO GET OUT OF THE CAB WHILE IT WAS IN MOTION WITHOUT EITHER YOU OR THE DRIVER SEEING HER + QUOTE OLD WOMAN BE DAMNED QUOTE SAID SHERLOCK HOLMES SHARPLY + WE WERE THE OLD WOMEN TO BE SO TAKEN IN + IT MUST HAVE BEEN A YOUNG MAN AND AN ACTIVE ONE TOO BESIDES BEING AN INCOMPARABLE ACTOR + THE GET UP WAS INIMITABLE + HE SAW THAT HE WAS FOLLOWED NO DOUBT AND USED THIS MEANS OF GIVING ME THE SLIP + IT SHOWS THAT THE MAN WE ARE AFTER IS NOT AS LONELY AS I IMAGINED HE WAS BUT HAS FRIENDS WHO ARE READY TO RISK SOMETHING FOR HIM + NOW DOCTOR YOU ARE LOOKING DONE UP + TAKE MY ADVICE AND TURN IN + I WAS CERTAINLY FEELING VERY WEARY SO I OBEYED HIS INJUNCTION + I LEFT HOLMES SEATED IN FRONT OF THE SMOULDERING FIRE AND LONG INTO THE WATCHES OF THE NIGHT I HEARD THE LOW MELANCHOLY WAILINGS OF HIS VIOLIN AND KNEW THAT HE WAS STILL PONDERING OVER THE STRANGE PROBLEM WHICH HE HAD SET HIMSELF TO UNRAVEL + CHAPTER SIX TOBIAS GREGSON SHOWS WHAT HE CAN DO + THE PAPERS NEXT DAY WERE FULL OF THE BRIXTON MYSTERY AS THEY TERMED IT + EACH HAD A LONG ACCOUNT OF THE AFFAIR AND SOME HAD LEADERS UPON IT IN ADDITION + THERE WAS SOME INFORMATION IN THEM WHICH WAS NEW TO ME + I STILL RETAIN IN MY SCRAPBOOK NUMEROUS CLIPPINGS AND EXTRACTS BEARING UPON THE CASE + HERE IS A CONDENSATION OF A FEW OF THEM + THE DAILY TELEGRAPH REMARKED THAT IN THE HISTORY OF CRIME THERE HAD SELDOM BEEN A TRAGEDY WHICH PRESENTED STRANGER FEATURES + THE GERMAN NAME OF THE VICTIM THE ABSENCE OF ALL OTHER MOTIVE AND THE SINISTER INSCRIPTION ON THE WALL ALL POINTED TO ITS PERPETRATION BY POLITICAL REFUGEES AND REVOLUTIONISTS + THE SOCIALISTS HAD MANY BRANCHES IN AMERICA AND THE DECEASED HAD NO DOUBT INFRINGED THEIR UNWRITTEN LAWS AND BEEN TRACKED DOWN BY THEM + AFTER ALLUDING AIRILY TO THE VEHMGERICHT AQUA TOFANA CARBONARI THE MARCHIONESS DE BRINVILLIERS THE DARWINIAN THEORY THE PRINCIPLES OF MALTHUS AND THE RATCLIFF HIGHWAY MURDERS THE ARTICLE CONCLUDED BY ADMONISHING THE GOVERNMENT AND ADVOCATING A CLOSER WATCH OVER FOREIGNERS IN ENGLAND + THE STANDARD COMMENTED UPON THE FACT THAT LAWLESS OUTRAGES OF THE SORT USUALLY OCCURRED UNDER A LIBERAL ADMINISTRATION + THEY AROSE FROM THE UNSETTLING OF THE MINDS OF THE MASSES AND THE CONSEQUENT WEAKENING OF ALL AUTHORITY + THE DECEASED WAS AN AMERICAN GENTLEMAN WHO HAD BEEN RESIDING FOR SOME WEEKS IN THE METROPOLIS + HE HAD STAYED AT THE BOARDING HOUSE OF MADAME CHARPENTIER IN TORQUAY TERRACE CAMBERWELL + HE WAS ACCOMPANIED IN HIS TRAVELS BY HIS PRIVATE SECRETARY MR. JOSEPH STANGERSON + THE TWO BADE ADIEU TO THEIR LANDLADY UPON TUESDAY THE FOURTH INST. AND DEPARTED TO EUSTON STATION WITH THE AVOWED INTENTION OF CATCHING THE LIVERPOOL EXPRESS + THEY WERE AFTERWARDS SEEN TOGETHER UPON THE PLATFORM + NOTHING MORE IS KNOWN OF THEM UNTIL MR. DREBBER'S BODY WAS AS RECORDED DISCOVERED IN AN EMPTY HOUSE IN THE BRIXTON ROAD MANY MILES FROM EUSTON + HOW HE CAME THERE OR HOW HE MET HIS FATE ARE QUESTIONS WHICH ARE STILL INVOLVED IN MYSTERY + NOTHING IS KNOWN OF THE WHEREABOUTS OF STANGERSON + WE ARE GLAD TO LEARN THAT MR. LESTRADE AND MR. GREGSON OF SCOTLAND YARD ARE BOTH ENGAGED UPON THE CASE AND IT IS CONFIDENTLY ANTICIPATED THAT THESE WELL KNOWN OFFICERS WILL SPEEDILY THROW LIGHT UPON THE MATTER + THE DAILY NEWS OBSERVED THAT THERE WAS NO DOUBT AS TO THE CRIME BEING A POLITICAL ONE + THE DESPOTISM AND HATRED OF LIBERALISM WHICH ANIMATED THE CONTINENTAL GOVERNMENTS HAD HAD THE EFFECT OF DRIVING TO OUR SHORES A NUMBER OF MEN WHO MIGHT HAVE MADE EXCELLENT CITIZENS WERE THEY NOT SOURED BY THE RECOLLECTION OF ALL THAT THEY HAD UNDERGONE + AMONG THESE MEN THERE WAS A STRINGENT CODE OF HONOUR ANY INFRINGEMENT OF WHICH WAS PUNISHED BY DEATH + EVERY EFFORT SHOULD BE MADE TO FIND THE SECRETARY STANGERSON AND TO ASCERTAIN SOME PARTICULARS OF THE HABITS OF THE DECEASED + A GREAT STEP HAD BEEN GAINED BY THE DISCOVERY OF THE ADDRESS OF THE HOUSE AT WHICH HE HAD BOARDED A RESULT WHICH WAS ENTIRELY DUE TO THE ACUTENESS AND ENERGY OF MR. GREGSON OF SCOTLAND YARD + SHERLOCK HOLMES AND I READ THESE NOTICES OVER TOGETHER AT BREAKFAST AND THEY APPEARED TO AFFORD HIM CONSIDERABLE AMUSEMENT + I TOLD YOU THAT WHATEVER HAPPENED LESTRADE AND GREGSON WOULD BE SURE TO SCORE + THAT DEPENDS ON HOW IT TURNS OUT + OH BLESS YOU IT DOESN'T MATTER IN THE LEAST + IF THE MAN IS CAUGHT IT WILL BE ON ACCOUNT OF THEIR EXERTIONS IF HE ESCAPES IT WILL BE IN SPITE OF THEIR EXERTIONS + IT'S HEADS I WIN AND TAILS YOU LOSE + WHATEVER THEY DO THEY WILL HAVE FOLLOWERS + UN SOT TROUVE TOUJOURS UN PLUS SOT QUI L'ADMIRE QUOTE + WHAT ON EARTH IS THIS + I CRIED FOR AT THIS MOMENT THERE CAME THE PATTERING OF MANY STEPS IN THE HALL AND ON THE STAIRS ACCOMPANIED BY AUDIBLE EXPRESSIONS OF DISGUST UPON THE PART OF OUR LANDLADY + IT'S THE BAKER STREET DIVISION OF THE DETECTIVE POLICE FORCE SAID MY COMPANION GRAVELY AND AS HE SPOKE THERE RUSHED INTO THE ROOM HALF A DOZEN OF THE DIRTIEST AND MOST RAGGED STREET ARABS THAT EVER I CLAPPED EYES ON + TENTION CRIED HOLMES IN A SHARP TONE AND THE SIX DIRTY LITTLE SCOUNDRELS STOOD IN A LINE LIKE SO MANY DISREPUTABLE STATUETTES + IN FUTURE YOU SHALL SEND UP WIGGINS ALONE TO REPORT AND THE REST OF YOU MUST WAIT IN THE STREET + HAVE YOU FOUND IT WIGGINS + QUOTE NO SIR WE HAIN'T QUOTE SAID ONE OF THE YOUTHS + I HARDLY EXPECTED YOU WOULD + YOU MUST KEEP ON UNTIL YOU DO + HERE ARE YOUR WAGES + HE HANDED EACH OF THEM A SHILLING + NOW OFF YOU GO AND COME BACK WITH A BETTER REPORT NEXT TIME + HE WAVED HIS HAND AND THEY SCAMPERED AWAY DOWNSTAIRS LIKE SO MANY RATS AND WE HEARD THEIR SHRILL VOICES NEXT MOMENT IN THE STREET + THERE'S MORE WORK TO BE GOT OUT OF ONE OF THOSE LITTLE BEGGARS THAN OUT OF A DOZEN OF THE FORCE HOLMES REMARKED + THE MERE SIGHT OF AN OFFICIAL LOOKING PERSON SEALS MEN'S LIPS + THESE YOUNGSTERS HOWEVER GO EVERYWHERE AND HEAR EVERYTHING + THEY ARE AS SHARP AS NEEDLES TOO ALL THEY WANT IS ORGANIZATION QUOTE + IS IT ON THIS BRIXTON CASE THAT YOU ARE EMPLOYING THEM + I ASKED + YES THERE IS A POINT WHICH I WISH TO ASCERTAIN + IT IS MERELY A MATTER OF TIME + HULLO WE ARE GOING TO HEAR SOME NEWS NOW WITH A VENGEANCE + HERE IS GREGSON COMING DOWN THE ROAD WITH BEATITUDE WRITTEN UPON EVERY FEATURE OF HIS FACE + BOUND FOR US I KNOW + YES HE IS STOPPING + THERE HE IS + THERE WAS A VIOLENT PEAL AT THE BELL AND IN A FEW SECONDS THE FAIR HAIRED DETECTIVE CAME UP THE STAIRS THREE STEPS AT A TIME AND BURST INTO OUR SITTING ROOM + MY DEAR FELLOW HE CRIED WRINGING HOLMES'S UNRESPONSIVE HAND CONGRATULATE ME + I HAVE MADE THE WHOLE THING AS CLEAR AS DAY + A SHADE OF ANXIETY SEEMED TO ME TO CROSS MY COMPANION'S EXPRESSIVE FACE + QUOTE DO YOU MEAN THAT YOU ARE ON THE RIGHT TRACK QUOTE HE ASKED + THE RIGHT TRACK + WHY SIR WE HAVE THE MAN UNDER LOCK AND KEY + AND HIS NAME IS + ARTHUR CHARPENTIER SUB LIEUTENANT IN HER MAJESTY'S NAVY CRIED GREGSON POMPOUSLY RUBBING HIS FAT HANDS AND INFLATING HIS CHEST + SHERLOCK HOLMES GAVE A SIGH OF RELIEF AND RELAXED INTO A SMILE + TAKE A SEAT AND TRY ONE OF THESE CIGARS HE SAID + QUOTE WE ARE ANXIOUS TO KNOW HOW YOU MANAGED IT + WILL YOU HAVE SOME WHISKY AND WATER + I DON'T MIND IF I DO THE DETECTIVE ANSWERED + THE TREMENDOUS EXERTIONS WHICH I HAVE GONE THROUGH DURING THE LAST DAY OR TWO HAVE WORN ME OUT + NOT SO MUCH BODILY EXERTION YOU UNDERSTAND AS THE STRAIN UPON THE MIND + YOU WILL APPRECIATE THAT MR. SHERLOCK HOLMES FOR WE ARE BOTH BRAIN WORKERS + YOU DO ME TOO MUCH HONOUR SAID HOLMES GRAVELY + QUOTE LET US HEAR HOW YOU ARRIVED AT THIS MOST GRATIFYING RESULT QUOTE + THE DETECTIVE SEATED HIMSELF IN THE ARMCHAIR AND PUFFED COMPLACENTLY AT HIS CIGAR + THEN SUDDENLY HE SLAPPED HIS THIGH IN A PAROXYSM OF AMUSEMENT + THE FUN OF IT IS HE CRIED THAT THAT FOOL LESTRADE WHO THINKS HIMSELF SO SMART HAS GONE OFF UPON THE WRONG TRACK ALTOGETHER + HE IS AFTER THE SECRETARY STANGERSON WHO HAD NO MORE TO DO WITH THE CRIME THAN THE BABE UNBORN + I HAVE NO DOUBT THAT HE HAS CAUGHT HIM BY THIS TIME + THE IDEA TICKLED GREGSON SO MUCH THAT HE LAUGHED UNTIL HE CHOKED + AND HOW DID YOU GET YOUR CLUE + AH I'LL TELL YOU ALL ABOUT IT + OF COURSE DOCTOR WATSON THIS IS STRICTLY BETWEEN OURSELVES + THE FIRST DIFFICULTY WHICH WE HAD TO CONTEND WITH WAS THE FINDING OF THIS AMERICAN'S ANTECEDENTS + SOME PEOPLE WOULD HAVE WAITED UNTIL THEIR ADVERTISEMENTS WERE ANSWERED OR UNTIL PARTIES CAME FORWARD AND VOLUNTEERED INFORMATION + THAT IS NOT TOBIAS GREGSON'S WAY OF GOING TO WORK + YOU REMEMBER THE HAT BESIDE THE DEAD MAN + QUOTE YES QUOTE SAID HOLMES QUOTE BY JOHN UNDERWOOD AND SONS ONE HUNDRED TWENTY NINE CAMBERWELL ROAD QUOTE + GREGSON LOOKED QUITE CRESTFALLEN + I HAD NO IDEA THAT YOU NOTICED THAT HE SAID + HAVE YOU BEEN THERE + NUMBER + HA CRIED GREGSON IN A RELIEVED VOICE YOU SHOULD NEVER NEGLECT A CHANCE HOWEVER SMALL IT MAY SEEM + TO A GREAT MIND NOTHING IS LITTLE REMARKED HOLMES SENTENTIOUSLY + QUOTE WELL I WENT TO UNDERWOOD AND ASKED HIM IF HE HAD SOLD A HAT OF THAT SIZE AND DESCRIPTION + HE LOOKED OVER HIS BOOKS AND CAME ON IT AT ONCE + HE HAD SENT THE HAT TO A MR. DREBBER RESIDING AT CHARPENTIER'S BOARDING ESTABLISHMENT TORQUAY TERRACE + THUS I GOT AT HIS ADDRESS + SMART VERY SMART MURMURED SHERLOCK HOLMES + I NEXT CALLED UPON MADAME CHARPENTIER CONTINUED THE DETECTIVE + I FOUND HER VERY PALE AND DISTRESSED + HER DAUGHTER WAS IN THE ROOM TOO AN UNCOMMONLY FINE GIRL SHE IS TOO SHE WAS LOOKING RED ABOUT THE EYES AND HER LIPS TREMBLED AS I SPOKE TO HER + THAT DIDN'T ESCAPE MY NOTICE + I BEGAN TO SMELL A RAT + YOU KNOW THE FEELING MR. SHERLOCK HOLMES WHEN YOU COME UPON THE RIGHT SCENT A KIND OF THRILL IN YOUR NERVES + HAVE YOU HEARD OF THE MYSTERIOUS DEATH OF YOUR LATE BOARDER MR. ENOCH J. DREBBER OF CLEVELAND + I ASKED + THE MOTHER NODDED + SHE DIDN'T SEEM ABLE TO GET OUT A WORD + THE DAUGHTER BURST INTO TEARS + I FELT MORE THAN EVER THAT THESE PEOPLE KNEW SOMETHING OF THE MATTER + QUOTE AT WHAT O'CLOCK DID MR. DREBBER LEAVE YOUR HOUSE FOR THE TRAIN + I ALSKED + AT EIGHT O'CLOCK SHE SAID GULPING IN HER THROAT TO KEEP DOWN HER AGITATION + HIS SECRETARY MR. STANGERSON SAID THAT THERE WERE TWO TRAINS ONE AT NINE FIFTEEN AND ONE AT ELEVEN + HE WAS TO CATCH THE LFIRST + AND WAS THAT THE LAST WHICH YOU SAW OF HIM + A TERIBLE CHANGE CAME OVER THE WOMAN'S FACE AS I ASKED THE QUESTION + HER FEATURES TURNED PERFECTLY LIVID + IT WAS SOME SECONDS BEFORE SHE COULD GET OUT THE SINGLE WORD YES AND WHEN IT DID COME IT WAS IN A HUSKY UNNATURAL TONE + THERE WAS SILENCE FOR A MOMENT AND THEN THE DAUGHTER SPOKE IN A CALM CLEAR VOICE + NO GOOD CAN EVER COME OF FALSEHOOD MOTHER SHE SAID + LET US BE FRANK WITH THIS GENTLEMAN + WE DID SEE MR. DREBBER AGAIN + QUOTE GOD FORGIVE YOU CRIED MADAME CHARPENTIER THROWING UP HER HANDS AND SINKING BACK IN HER CHAIR + YOU HAVE MURDERED YOUR BROTHER + ARTHUR WOULD RATHER THAT WE SPOKE THE TRUTH THE GIRL ANSWERED FIRMLY + YQU HAD BEST TELL ME ALL ABOUT IT NOW I SAID + HALFCONFIDENCES ARE WORSE THAN NONE + BESIDES YOU DO NOT KNOW HOW MUCH WE KNOW OF IT + ON YOUR HEAD BE IT ALICE CRIED HER MOTHER AND THEN TURNING TO ME I WILL TELL YOU ALL SIR + DO NOT IMAGINE THAT MY AGITATION ON BEHALF OF MY SON ARISES FROM ANY FEAR LEST HE SHOULD HAVE HAD A HAND IN THIS TERRIBLE AFFAIR + HE IS UTTERLY INNOCENT OF IT + MY DREAD IS HOWEVER THAT IN YOUR EYES AND IN THE EYES OF OTHERS HE MAY APPEAR TO BE COMPROMISED + THAT HOWEVER IS SURELY IMPOSSIBLE + HIS HIGH CHARACTER HIS PROFESSION HIS ANTECEDENTS WOULD ALL FORBID IT + YOUR BEST WAY IS TO MAKE A CLEAN BREAST OF THE FACTS I ANSWERED + DEPEND UPON IT IF YOUR SON IS INNOCENT HE WILL BE NONE THE WORSE + PERHAPS ALICE YOU HAD BETTER LEAVE US TOGETHER SHE SAID AND HER DAUGHTER WITHDREW + NOW SIR SHE CONTINUED I HAD NO INTENTION OF TELLING YOU ALL THIS BUT SINCE MY POOR DAUGHTER HAS DISCLOSED IT I HAVE NO ALTERNATIVE + HAVING ONCE DECIDED TO SPEAK I WILL TELL YOU ALL WITHOUT OMITTING ANY PARTICULAR + QUOTE IT IS YOUR WISEST COURSE SAID I + MR. DREBBER HAS BEEN WITH US NEARLY THREE WEEKS + HE AND HIS SECRETARY MR. STANGERSON HAD BEEN TRAVELLING ON THE CONTINENT + I NOTICED A COPENHAGEN LABEL UPON EACH OF THEIR TRUNKS SHOWING THAT THAT HAD BEEN THEIR LAST STOPPING PLACE + STANGERSON WAS A QUIET RESERVED MAN BUT HIS EMPLOYER I AM SORRY TO SAY WAS FAR OTHERWISE + HE WAS COARSE IN HIS HABITS AND BRUTISH IN HIS WAYS + THE VERY NIGHT OF HIS ARRIVAL HE BECAME VERY MUCH THE WORSE FOR DRINK AND INDEED AFTER TWELVE O'CLOCK IN THE DAY HE COULD HARDLY EVER BE SAID TO BE SOBER + HIS MANNERS TOWARDS THE MAID SERVANTS WERE DISGUSTINGLY FREE AND FAMILIAR + WORST OF ALL HE SPEEDILY ASSUMED THE SAME ATTITUDE TOWARDS MY DAUGHTER ALICE AND SPOKE TO HER MORE THAN ONCE IN A WAY WHICH FORTUNATELY SHE IS TOO INNOCENT TO UNDERSTAND + ON ONE OCCASION HE ACTUALLY SEIZED HER IN HIS ARMS AND EMBRACED HER AN OUTRAGE WHICH CAUSED HIS OWN SECRETARY TO REPROACH HIM FOR HIS UNMANLY CONDUCT + BUT WHY DID YOU STAND ALL THIS + I ASKED + I SUPPOSE THAT YOU CAN GET RID OF YOUR BOARDERS WHEN YOU WISH + MRS. CHARPENTIER BLUSHED AT MY PERTINENT QUESTION + WOULD TO GOD THAT I HAD GIVEN HIM NOTICE ON THE VERY DAY THAT HE CAME SHE SAID + BUT IT WAS A SORE TEMPTATION + THEY WERE PAYING A POUND A DAY EACH FOURTEEN POUNDS A WEEK AND THIS IS THE SLACK SEASON + I AM A WIDOW AND MY BOY IN THE NAVY HAS COST ME MUCH + I GRUDGED TO LOSE THE MONEY + I ACTED FOR THE BEST + THIS LAST WAS TOO MUCH HOWEVER AND I GAVE HIM NOTICE TO LEAVE ON ACCOUNT OF IT + THAT WAS THE REASON OF HIS GOING + WELL + MY HEART GREW LIGHT WHEN I SAW HIM DRIVE AWAY + MY SON IS ON LEAVE JUST NOW BUT I DID NOT TELL HIM ANYTHING OF ALL THIS FOR HIS TEMPER IS VIOLENT AND HE IS PASSIONATELY FOND OF HIS SISTER + WHEN I CLOSED THE DOOR BEHIND THEM A LOAD SEEMED TO BE LIFTED FROM MY MIND + ALAS IN LESS THAN AN HOUR THERE WAS A RING AT THE BELL AND I LEARNED THAT MR. DREBBER HAD RETURNED + HE WAS MUCH EXCITED AND EVIDENTLY THE WORSE FOR DRINK + HE FORCED HIS WAY INTO THE ROOM WHERE I WAS SITTING WITH MY DAUGHTER AND MADE SOME INCOHERENT REMARK ABOUT HAVING MISSED HIS TRAIN + HE THEN TURNED TO ALICE AND BEFORE MY VERY FACE PROPOSED TO HER THAT SHE SHOULD FLY WITH HIM + QUOTE YOU ARE OF AGE QUOTE HE SAID QUOTE AND THERE IS NO LAW TO STOP YOU + I HAVE MONEY ENOUGH AND TO SPARE + NEVER MIND THE OLD GIRL HERE BUT COME ALONG WITH ME NOW STRAIGHT AWAY + YOU SHALL LIVE LIKE A PRINCESS + POOR ALICE WAS SO FRIGHTENED THAT SHE SHRUNK AWAY FROM HIM BUT HE CAUGHT HER BY THE WRIST AND ENDEAVOURED TO DRAW HER TOWARDS THE DOOR + I SCREAMED AND AT THAT MOMENT MY SON ARTHUR CAME INTO THE ROOM + WHAT HAPPENED THEN I DO NOT KNOW + I HEARD OATHS AND THE CONFUSED SOUNDS OF A SCUFFLE + I WAS TOO TERRIFIED TO RAISE MY HEAD + WHEN I DID LOOK UP I SAW ARTHUR STANDING IN THE DOORWAY LAUGHING WITH A STICK IN HIS HAND + I DON'T THINK THAT FINE FELLOW WILL TROUBLE US AGAIN HE SAID + I WILL JUST GO AFTER HIM AND SEE WHAT HE DOES WITH HIMSELF + WITH THOSE WORDS HE TOOK HIS HAT AND STARTED OFF DOWN THE STREET + THE NEXT MORNING WE HEARD OF MR. DREBBER'S MYSTERIOUS DEATH + THIS STATEMENT CAME FROM MRS. CHARPENTIER'S LIPS WITH MANY GASPS AND PAUSES + AT TIMES SHE SPOKE SO LOW THAT I COULD HARDLY CATCH THE WORDS + I MADE SHORTHAND NOTES OF ALL THAT SHE SAID HOWEVER SO THAT THERE SHOULD BE NO POSSIBILITY OF A MISTAKE + QUOTE IT'S QUITE EXCITING QUOTE SAID SHERLOCK HOLMES WITH A YAWN + WHAT HAPPENED NEXT + WHEN MRS. CHARPENTIER PAUSED THE DETECTIVE CONTINUED I SAW THAT THE WHOLE CASE HUNG UPON ONE POINT + FIXING HER WITH MY EYE IN A WAY WHICH I ALWAYS FOUND EFFECTIVE WITH WOMEN I ASKED HER AT WHAT HOUR HER SON RETURNED + I DO NOT KNOW SHE ANSWERED + NOT KNOW + NO HE HAS A LATCHKEY AND HE LET HIMSELF IN + QUOTE AFTER YOU WENT TO BED + YES + WHEN DID YOU GO TO BED + ABOUT ELEVEN + SO YOUR SON WAS GONE AT LEAST TWO HOURS + YES + QUOTE POSSIBLY FOUR OR FIVE + YES + WHAT WAS HE DOING DURING THAT TIME + I DO NOT KNOW SHE ANSWERED TURNING WHITE TO HER VERY LIPS + OF COURSE AFTER THAT THERE WAS NOTHING MORE TO BE DONE + I FOUND OUT WHERE LIEUTENANT CHARPENTIER WAS TOOK TWO OFFICERS WITH ME AND ARRESTED HIM + WHEN I TOUCHED HIM ON THE SHOULDER AND WARNED HIM TO COME QUIETLY WITH US HE ANSWERED US AS BOLD AS BRASS I SUPPOSE YOU ARE ARRESTING ME FOR BEING CONCERNED IN THE DEATH OF THAT SCOUNDREL DREBBER HE SAID + WE HAD SAID NOTHING TO HIM ABOUT IT SO THAT HIS ALLUDING TO IT HAD A MOST SUSPICIOUS ASPECT + QUOTE VERY QUOTE SAID HOLMES + HE STILL CARRIED THE HEAVY STICK WHICH THE MOTHER DESCRIBED HIM AS HAVING WITH HIM WHEN HE FOLLOWED DREBBER + IT WAS A STOUT OAK CUDGEL + WHAT IS YOUR THEORY THEN + WELL MY THEORY IS THAT HE FOLLOWED DREBBER AS FAR AS THE BRIXTON ROAD + WHEN THERE A FRESH ALTERCATION AROSE BETWEEN THEM IN THE COURSE OF WHICH DREBBER RECEIVED A BLOW FROM THE STICK IN THE PIT OF THE STOMACH PERHAPS WHICH KILLED HIM WITHOUT LEAVING ANY MARK + THE NIGHT WAS SO WET THAT NO ONE WAS ABOUT SO CHARPENTIER DRAGGED THE BODY OF HIS VICTIM INTO THE EMPTY HOUSE + AS TO THE CANDLE AND THE BLOOD AND THE WRITING ON THE WALL AND THE RING THEY MAY ALL BE SO MANY TRICKS TO THROW THE POLICE ON TO THE WRONG SCENT + QUOTE WELL DONE QUOTE SAID HOLMES IN AN ENCOURAGING VOICE + REALLY GREGSON YOU ARE GETTING ALONG + WE SHALL MAKE SOMETHING OF YOU YET + I FLATTER MYSELF THAT I HAVE MANAGED IT RATHER NEATLY THE DETECTIVE ANSWERED PROUDLY + THE YOUNG MAN VOLUNTEERED A STATEMENT IN WHICH HE SAID THAT AFTER FOLLOWING DREBBER SOME TIME THE LATTER PERCEIVED HIM AND TOOK A CAB IN ORDER TO GET AWAY FROM HIM + ON HIS WAY HOME HE MET AN OLD SHIPMATE AND TOOK A LONG WALK WITH HIM + ON BEING ASKED WHERE THIS OLD SHIPMATE LIVED HE WAS UNABLE TO GIVE ANY SATISFACTORY REPLY + I THINK THE WHOLE CASE FITS TOGETHER UNCOMMONLY WELL + WHAT AMUSES ME IS TO THINK OF LESTRADE WHO HAD STARTED OFF UPON THE WRONG SCENT + I AM AFRAID HE WON'T MAKE MUCH OF IT + WHY BY JOVE HERE'S THE VERY MAN HIMSELF + IT WAS INDEED LESTRADE WHO HAD ASCENDED THE STAIRS WHILE WE WERE TALKING AND WHO NOW ENTERED THE ROOM + THE ASSURANCE AND JAUNTINESS WHICH GENERALLY MARKED HIS DEMEANOUR AND DRESS WERE HOWEVER WANTING + HIS FACE WAS DISTURBED AND TROUBLED WHILE HIS CLOTHES WERE DISARRANGED AND UNTIDY + HE HAD EVIDENTLY COME WITH THE INTENTION OF CONSULTING WITH SHERLOCK HOLMES FOR ON PERCEIVING HIS COLLEAGUE HE APPEARED TO BE EMBARRASSED AND PUT OUT + HE STOOD IN THE CENTRE OF THE ROOM FUMBLING NERVOUSLY WITH HIS HAT AND UNCERTAIN WHAT TO DO + QUOTE THIS IS A MOST EXTRAORDINARY CASE QUOTE HE SAID AT LAST QUOTE A MOST INCOMPREHENSIBLE AFFAIR QUOTE + AH YOU FIND IT SO MR. LESTRADE CRIED GREGSON TRIUMPHANTLY + I THOUGHT YOU WOULD COME TO THAT CONCLUSION + HAVE YOU MANAGED TO FIND THE SECRETARY MR. JOSEPH STANGERSON + THE SECRETARY MR. JOSEPH STANGERSON SAID LESTRADE GRAVELY WAS MURDERED AT HALLIDAY'S PRIVATE HOTEL ABOUT SIX O'CLOCK THIS MORNING + CHAPTER SEVEN LIGHT IN THE DARKNESS + THE INTELLIGENCE WITH WHICH LESTRADE GREETED US WAS SO MOMENTOUS AND SO UNEXPECTED THAT WE WERE ALL THREE FAIRLY DUMFOUNDED + GREGSON SPRANG OUT OF HIS CHAIR AND UPSET THE REMAINDER OF HIS WHISKY AND WATER + I STARED IN SILENCE AT SHERLOCK HOLMES WHOSE LIPS WERE COMPRESSED AND HIS BROWS DRAWN DOWN OVER HIS EYES + STANGERSON TOO HE MUTTERED + QUOTE THE PLOT THICKENS QUOTE + IT WAS QUITE THICK ENOUGH BEFORE GRUMBLED LESTRADE TAKING A CHAIR I SEEM TO HAVE DROPPED INTO A SORT OF COUNCIL OF WAR + ARE YOU ARE YOU SURE OF THIS PIECE OF INTELLIGENCE STAMMERED GREGSON + I HAVE JUST COME FROM HIS ROOM SAID LESTRADE + I WAS THE FIRST TO DISCOVER WHAT HAD OCCURRED + WE HAVE BEEN HEARING GREGSON'S VIEW OF THE MATTER HOLMES OBSERVED + QUOTE WOULD YOU MIND LETTING US KNOW WHAT YOU HAVE SEEN AND DONE QUOTE + I HAVE NO OBJECTION LESTRADE ANSWERED SEATING HIMSELF + I FREELY CONFESS THAT I WAS OF THE OPINION THAT STANGERSON WAS CONCERNED IN THE DEATH OF DREBBER + THIS FRESH DEVELOPMENT HAS SHOWN ME THAT I WAS COMPLETELY MISTAKEN + FULL OF THE ONE IDEA I SET MYSELF TO FIND OUT WHAT HAD BECOME OF THE SECRETARY + THEY HAD BEEN SEEN TOGETHER AT EUSTON STATION ABOUT HALF PAST EIGHT ON THE EVENING OF THE THIRD + AT TWO IN THE MORNING DREBBER HAD BEEN FOUND IN THE BRIXTON ROAD + THE QUESTION WHICH CONFRONTED ME WAS TO FIND OUT HOW STANGERSON HAD BEEN EMPLOYED BETWEEN EIGHT THIRTY AND THE TIME OF THE CRIME AND WHAT HAD BECOME OF HIM AFTERWARDS + I TELEGRAPHED TO LIVERPOOL GIVING A DESCRIPTION OF THE MAN AND WARNING THEM TO KEEP A WATCH UPON THE AMERICAN BOATS + I THEN SET TO WORK CALLING UPON ALL THE HOTELS AND LODGINGHOUSES IN THE VICINITY OF EUSTON + YOU SEE I ARGUED THAT IF DREBBER AND HIS COMPANION HAD BECOME SEPARATED THE NATURAL COURSE FOR THE LATTER WOULD BE TO PUT UP SOMEWHERE IN THE VICINITY FOR THE NIGHT AND THEN TO HANG ABOUT THE STATION AGAIN NEXT MORNING + THEY WOULD BE LIKELY TO AGREE ON SOME MEETING PLACE BEFOREHAND REMARKED HOLMES + SO IT PROVED + I SPENT THE WHOLE OF YESTERDAY EVENING IN MAKING INQUIRIES ENTIRELY WITHOUT AVAIL + THIS MORNING I BEGAN VERY EARLY AND AT EIGHT O'CLOCK I REACHED HALLIDAY'S PRIVATE HOTEL IN LITTLE GEORGE STREET + ON MY INQUIRY AS TO WHETHER A MR. STANGERSON WAS LIVING THERE THEY AT ONCE ANSWERED ME IN THE AFFIRMATIVE + QUOTE NO DOUBT YOU ARE THE GENTLEMAN WHOM HE WAS EXPECTING THEY SAID + HE HAS BEEN WAITING FOR A GENTLEMAN FOR TWO DAYS + WHERE IS HE NOW + I ASKED + HE IS UPSTAIRS IN BED + HE WISHED TO BE CALLED AT NINE + I WILL GO UP AND SEE HIM AT ONCE I SAID + IT SEEMED TO ME THAT MY SUDDEN APPEARANCE MIGHT SHAKE HIS NERVES AND LEAD HIM TO SAY SOMETHING UNGUARDED + THE BOOTS VOLUNTEERED TO SHOW ME THE ROOM IT WAS ON THE SECOND FLOOR AND THERE WAS A SMALL CORRIDOR LEADING UP TO IT + THE BOOTS POINTED OUT THE DOOR TO ME AND WAS ABOUT TO GO DOWNSTAIRS AGAIN WHEN I SAW SOMETHING THAT MADE ME FEEL SICKISH IN SPITE OF MY TWENTY YEARS' EXPERIENCE + FROM UNDER THE DOOR THERE CURLED A LITTLE RED RIBBON OF BLOOD WHICH HAD MEANDERED ACROSS THE PASSAGE AND FORMED A LITTLE POOL ALONG THE SKIRTING AT THE OTHER SIDE + I GAVE A CRY WHICH BROUGHT THE BOOTS BACK + HE NEARLY FAINTED WHEN HE SAW IT + THE DOOR WAS LOCKED ON THE INSIDE BUT WE PUT OUR SHOULDERS TO IT AND KNOCKED IT IN + THE WINDOW OF THE ROOM WAS OPEN AND BESIDE THE WINDOW ALL HUDDLED UP LAY THE BODY OF A MAN IN HIS NIGHTDRESS + HE WAS QUITE DEAD AND HAD BEEN FOR SOME TIME FOR HIS LIMBS WERE RIGID AND COLD + WHEN WE TURNED HIM OVER THE BOOTS RECOGNIZED HIM AT ONCE AS BEING THE SAME GENTLEMAN WHO HAD ENGAGED THE ROOM UNDER THE NAME OF JOSEPH STANGERSON + THE CAUSE OF DEATH WAS A DEEP STAB IN THE LEFT SIDE WHICH MUST HAVE PENETRATED THE HEART + AND NOW COMES THE STRANGEST PART OF THE AFFAIR + WHAT DO YOU SUPPOSE WAS ABOVE THE MURDERED MAN + I FELT A CREEPING OF THE FLESH AND A PRESENTIMENT OF COMING HORROR EVEN BEFORE SHEROCK HOLMES ANSWERED + QUOTE THAT WAS IT QUOTE SAID LESTRADE IN AN AWESTRUCK VOICE AND WE WERE ALL SILENT FOR A WHILE + THERE WAS SOMETHING SO METHODICAL AND SO INCOMPREHENSIBLE ABOUT THE DEEDS OF THIS UNKNOWN ASSASSIN THAT IT IMPARTED A FRESH GHASTLINESS TO HIS CRIMES + MY NERVES WHICH WERE STEADY ENOUGH ON THE FIELD OF BATTLE TINGLED AS I THOUGHT OF IT + THE MAN WAS SEEN CONTINUED LESTRADE + A MILK BOY PASSING ON HIS WAY TO THE DAIRY HAPPENED TO WALK DOWN THE LANE WHICH LEADS FROM THE MEWS AT THE BACK OF THE HOTEL + HE NOTICED THAT A LADDER WHICH USUALLY LAY THERE WAS RAISED AGAINST ONE OF THE WINDOWS OF THE SECOND FLOOR WHICH WAS WIDE OPEN + AFTER PASSING HE LOOKED BACK AND SAW A MAN DESCEND THE LADDER + HE CAME DOWN SO QUIETLY AND OPENLY THAT THE BOY IMAGINED HIM TO BE SOME CARPENTER OR JOINER AT WORK IN THE HOTEL + HE TOOK NO PARTICULAR NOTICE OF HIM BEYOND THINKING IN HIS OWN MIND THAT IT WAS EARLY FOR HIM TO BE AT WORK + HE HAS AN IMPRESSION THAT THE MAN WAS TALL HAD A REDDISH FACE AND WAS DRESSED IN A LONG BROWNISH COAT + HE MUST HAVE STAYED IN THE ROOM SOME LITTLE TIME AFTER THE MURDER FOR WE FOUND BLOOD STAINED WATER IN THE BASIN WHERE HE HAD WASHED HIS HANDS AND MARKS ON THE SHEETS WHERE HE HAD DELIBERATELY WIPED HIS KNIFE + I GLANCED AT HOLMES ON HEARING THE DESCRIPTION OF THE MURDERER WHICH TALLIED SO EXACTLY WITH HIS OWN + THERE WAS HOWEVER NO TRACE OF EXULTATION OR SATISFACTION UPON HIS FACE + DID YOU FIND NOTHING IN THE ROOM WHICH COULD FURNISH A CLUE TO THE MURDERER HE ASKED + NOTHING + STANGERSON HAD DREBBER'S PURSE IN HIS POCKET BUT IT SEEMS THAT THIS WAS USUAL AS HE DID ALL THE PAYING + THERE WAS EIGHTY ODD POUNDS IN IT BUT NOTHING HAD BEEN TAKEN + WHATEVER THE MOTIVES OF THESE EXTRAORDINARY CRIMES ROBBERY IS CERTAINLY NOT ONE OF THEM + THERE WERE NO PAPERS OR MEMORANDA IN THE MURDERED MAN'S POCKET EXCEPT A SINGLE TELEGRAM DATED FROM CLEVELAND ABOUT A MONTH AGO AND CONTAINING THE WORDS J. H. IS IN EUROPE + THERE WAS NO NAME APPENDED TO THIS MESSAGE QUOTE + AND THERE WAS NOTHING ELSE + HOLMES ASKED + NOTHING OF ANY IMPORTANCE + THE MAN'S NOVEL WITH WHICH HE HAD READ HIMSELF TO SLEEP WAS LYING UPON THE BED AND HIS PIPE WAS ON A CHAIR BESIDE HIM + THERE WAS A GLASS OF WATER ON THE TABLE AND ON THE WINDOW SILL A SMALL CHIP OINTMENT BOX CONTAINING A COUPLE OF PILLS + SHERLOCK HOLMES SPRANG FROM HIS CHAIR WITH AN EXCLAMATION OF DELIGHT + THE LAST LINK HE CRIED EXULTANTLY + MY CASE IS COMPLETE + THE TWO DETECTIVES STARED AT HIM IN AMAZEMENT + QUOTE I HAVE NOW IN MY HANDS QUOTE MY COMPANION SAID CONFIDENTLY QUOTE ALL THE THREADS WHICH HAVE FORMED SUCH A TANGLE + THERE ARE OF COURSE DETAILS TO BE FILLED IN BUT I AM AS CERTAIN OF ALL THE MAIN FACTS FROM THE TIME THAT DREBBER PARTED FROM STANGERSON AT THE STATION UP TO THE DISCOVERY OF THE BODY OF THE LATTER AS IF I HAD SEEN THEM WITH MY OWN EYES + I WILL GIVE YOU A PROOF OF MY KNOWLEDGE + COULD YOU LAY YOUR HAND UPON THOSE PILLS + I HAVE THEM SAID LESTRADE PRODUCING A SMALL WHITE BOX I TOOK THEM AND THE PURSE AND THE TELEGRAM INTENDING TO HAVE THEM PUT IN A PLACE OF SAFETY AT THE POLICE STATION + IT WAS THE MEREST CHANCE MY TAKING THESE PILLS FOR I AM BOUND TO SAY THAT I DO NOT ATTACH ANY IMPORTANCE TO THEM + GIVE THEM HERE SAID HOLMES + NOW DOCTOR TURNING TO ME ARE THOSE ORDINARY PILLS + THEY CERTAINLY WERE NOT + THEY WERE OF A PEARLY GRAY COLOUR SMALL ROUND AND ALMOST TRANSPARENT AGAINST THE LIGHT + QUOTE FROM THEIR LIGHTNESS AND TRANSPARENCY I SHOULD IMAGINE THAT THEY ARE SOLUBLE IN WATER QUOTE I REMARKED + PRECISELY SO ANSWERED HOLMES + NOW WOULD YOU MIND GOING DOWN AND FETCHING THAT POOR LITTLE DEVIL OF A TERRIER WHICH HAS BEEN BAD SO LONG AND WHICH THE LANDLADY WANTED YOU TO PUT OUT OF ITS PAIN YESTERDAY + I WENT DOWNSTAIRS AND CARRIED THE DOG UPSTAIRS IN MY ARMS + ITS LABOURED BREATHING AND GLAZING EYE SHOWED THAT IT WAS NOT FAR FROM ITS END + INDEED ITS SNOW WHITE MUZZLE PROCLAIMED THAT IT HAD ALREADY EXCEEDED THE USUAL TERM OF CANINE EXISTENCE + I PLACED IT UPON A CUSHION ON THE RUG + I WILL NOW CUT ONE OF THESE PILLS IN TWO SAID HOLMES AND DRAWING HIS PENKNIFE HE SUITED THE ACTION TO THE WORD + ONE HALF WE RETURN INTO THE BOX FOR FUTURE PURPOSES + THE OTHER HALF I WILL PLACE IN THIS WINEGLASS IN WHICH IS A TEASPOONFUL OF WATER + YOU PERCEIVE THAT OUR FRIEND THE DOCTOR IS RIGHT AND THAT IT READILY DISSOLVES + QUOTE THIS MAY BE VERY INTERESTING QUOTE SAID LESTRADE IN THE INJURED TONE OF ONE WHO SUSPECTS THAT HE IS BEING LAUGHED AT QUOTE I CANNOT SEE HOWEVER WHAT IT HAS TO DO WITH THE DEATH OF MR. JOSEPH STANGERSON QUOTE + PATIENCE MY FRIEND PATIENCE + YOU WILL FIND IN TIME THAT IT HAS EVERYTHING TO DO WITH IT + I SHALL NOW ADD A LITTLE MILK TO MAKE THE MIXTURE PALATABLE AND ON PRESENTING IT TO THE DOG WE FIND THAT HE LAPS IT UP READILY ENOUGH + AS HE SPOKE HE TURNED THE CONTENTS OF THE WINEGLASS INTO A SAUCER AND PLACED IT IN FRONT OF THE TERRIER WHO SPEEDILY LICKED IT DRY + SHERLOCK HOLMES'S EARNEST DEMEANOUR HAD SO FAR CONVINCED US THAT WE ALL SAT IN SILENCE WATCHING THE ANIMAL INTENTLY AND EXPECTING SOME STARTLING EFFECT + NONE SUCH APPEARED HOWEVER + THE DOG CONTINUED TO LIE STRETCHED UPON THE CUSHION BREATHING IN A LABOURED WAY BUT APPARENTLY NEITHER THE BETTER NOR THE WORSE FOR ITS DRAUGHT + HOLMES HAD TAKEN OUT HIS WATCH AND AS MINUTE FOLLOWED MINUTE WITHOUT RESULT AN EXPRESSION OF THE UTMOST CHAGRIN AND DISAPPOINTMENT APPEARED UPON HIS FEATURES + HE GNAWED HIS LIP DRUMMED HIS FINGERS UPON THE TABLE AND SHOWED EVERY OTHER SYMPTOM OF ACUTE IMPATIENCE + SO GREAT WAS HIS EMOTION THAT I FELT SINCERELY SORRY FOR HIM WHILE THE TWO DETECTIVES SMILED DERISIVELY BY NO MEANS DISPLEASED AT THIS CHECK WHICH HE HAD MET + IT CAN'T BE A COINCIDENCE HE CRIED AT LAST SPRINGING FROM HIS CHAIR AND PACING WILDLY UP AND DOWN THE ROOM IT IS IMPOSSIBLE THAT IT SHOULD BE A MERE COINCIDENCE + THE VERY PILLS WHICH I SUSPECTED IN THE CASE OF DREBBER ARE ACTUALLY FOUND AFTER THE DEATH OF STANGERSON + AND YET THEY ARE INERT + WHAT CAN IT MEAN + SURELY MY WHOLE CHAIN OF REASONING CANNOT HAVE BEEN FALSE + IT IS IMPOSSIBLE + AND YET THIS WRETCHED DOG IS NONE THE WORSE + AH I HAVE IT + I HAVE IT + WITH A PERFECT SHRIEK OF DELIGHT HE RUSHED TO THE BOX CUT THE OTHER PILL IN TWO DISSOLVED IT ADDED MILK AND PRESENTED IT TO THE TERRIER + THE UNFORTUNATE CREATURE'S TONGUE SEEMED HARDLY TO HAVE BEEN MOISTENED IN IT BEFORE IT GAVE A CONVULSIVE SHIVER IN EVERY LIMB AND LAY AS RIGID AND LIFELESS AS IF IT HAD BEEN STRUCK BY LIGHTNING + SHERLOCK HOLMES DREW A LONG BREATH AND WIPED THE PERSPIRATION FROM HIS FOREHEAD + I SHOULD HAVE MORE FAITH HE SAID I OUGHT TO KNOW BY THIS TIME THAT WHEN A FACT APPEARS TO BE OPPOSED TO A LONG TRAIN OF DEDUCTIONS IT INVARIABLY PROVES TO BE CAPABLE OF BEARING SOME OTHER INTERPRETATION + OF THE TWO PILLS IN THAT BOX ONE WAS OF THE MOST DEADLY POISON AND THE OTHER WAS ENTIRELY HARMLESS + I OUGHT TO HAVE KNOWN THAT BEFORE EVER I SAW THE BOX AT ALL QUOTE + THIS LAST STATEMENT APPEARED TO ME TO BE SO STARTLING THAT I COULD HARDLY BELIEVE THAT HE WAS IN HIS SOBER SENSES + THERE WAS THE DEAD DOG HOWEVER TO PROVE THAT HIS CONJECTURE HAD BEEN CORRECT + IT SEEMED TO ME THAT THE MISTS IN MY OWN MIND WERE GRADUALLY CLEARING AWAY AND I BEGAN TO HAVE A DIM VAGUE PERCEPTION OF THE TRUTH + ALL THIS SEEMS STRANGE TO YOU CONTINUED HOLMES BECAUSE YOU FAILED AT THE BEGINNING OF THE INQUIRY TO GRASP THE IMPORTANCE OF THE SINGLE REAL CLUE WHICH WAS PRESENTED TO YOU + I HAD THE GOOD FORTUNE TO SEIZE UPON THAT AND EVERYTHING WHICH HAS OCCURRED SINCE THEN HAS SERVED TO CONFIRM MY ORIGINAL SUPPOSITION AND INDEED WAS THE LOGICAL SEQUENCE OF IT + HENCE THINGS WHICH HAVE PERPLEXED YOU AND MADE THE CASE MORE OBSCURE HAVE SERVED TO ENLIGHTEN ME AND TO STRENGTHEN MY CONCLUSIONS + IT IS A MISTAKE TO CONFOUND STRANGENESS WITH MYSTERY + THE MOST COMMONPLACE CRIME IS OFTEN THE MOST MYSTERIOUS BECAUSE IT PRESENTS NO NEW OR SPECIAL FEATURES FROM WHICH DEDUCTIONS MAY BE DRAWN + THIS MURDER WOULD HAVE BEEN INFINITELY MORE DIFFICULT TO UNRAVEL HAD THE BODY OF THE VICTIM BEEN SIMPLY FOUND LYING IN THE ROADWAY WITHOUT ANY OF THOSE OUTRE AND SENSATIONAL ACCOMPANIMENTS WHICH HAVE RENDERED IT REMARKABLE + THESE STRANGE DETAILS FAR FROM MAKING THE CASE MORE DIFFICULT HAVE REALLY HAD THE EFFECT OF MAKING IT LESS SO + MR. GREGSON WHO HAD LISTENED TO THIS ADDRESS WITH CONSIDERABLE IMPATIENCE COULD CONTAIN HIMSELF NO LONGER + LOOK HERE MR. SHERLOCK HOLMES HE SAID WE ARE ALL READY TO ACKNOWLEDGE THAT YOU ARE A SMART MAN AND THAT YOU HAVE YOUR OWN METHODS OF WORKING + WE WANT SOMETHING MORE THAN MERE THEORY AND PREACHING NOW THOUGH + IT IS A CASE OF TAKING THE MAN + I HAVE MADE MY CASE OUT AND IT SEEMS I WAS WRONG + YOUNG CHARPENTIER COULD NOT HAVE BEEN ENGAGED IN THIS SECOND AFFAIR + LESTRADE WENT AFTER HIS MAN STANGERSON AND IT APPEARS THAT HE WAS WRONG TOO + YOU HAVE THROWN OUT HINTS HERE AND HINTS THERE AND SEEM TO KNOW MORE THAN WE DO BUT THE TIME HAS COME WHEN WE FEEL THAT WE HAVE A RIGHT TO ASK YOU STRAIGHT HOW MUCH YOU DO KNOW OF THE BUSINESS + CAN YOU NAME THE MAN WHO DID IT + I CANNOT HELP FEELING THAT GREGSON IS RIGHT SIR REMARKED LESTRADE + QUOTE WE HAVE BOTH TRIED AND WE HAVE BOTH FAILED + YOU HAVE REMARKED MORE THAN ONCE SINCE I HAVE BEEN IN THE ROOM THAT YOU HAD ALL THE EVIDENCE WHICH YOU REQUIRE + SURELY YOU WILL NOT WITHHOLD IT ANY LONGER + ANY DELAY IN ARRESTING THE ASSASSIN I OBSERVED MIGHT GIVE HIM TIME TO PERPETRATE SOME FRESH ATROCITY + THUS PRESSED BY US ALL HOLMES SHOWED SIGNS OF IRRESOLUTION + HE CONTINUED TO WALK UP AND DOWN THE ROOM WITH HIS HEAD SUNK ON HIS CHEST AND HIS BROWS DRAWN DOWN AS WAS HIS HABIT WHEN LOST IN THOUGHT + THERE WILL BE NO MORE MURDERS HE SAID AT LAST STOPPING ABRUPTLY AND FACING US + YOU CAN PUT THAT CONSIDERATION OUT OF THE QUESTION + YOU HAVE ASKED ME IF I KNOW THE NAME OF THE ASSASSIN + I DO + THE MERE KNOWING OF HIS NAME IS A SMALL THING HOWEVER COMPARED WITH THE POWER OF LAYING OUR HANDS UPON HIM + THIS I EXPECT VERY SHORTLY TO DO + I HAVE GOOD HOPES OF MANAGING IT THROUGH MY OWN ARRANGEMENTS BUT IT IS A THING WHICH NEEDS DELICATE HANDLING FOR WE HAVE A SHREWD AND DESPERATE MAN TO DEAL WITH WHO IS SUPPORTED AS I HAVE HAD OCCASION TO PROVE BY ANOTHER WHO IS AS CLEVER AS HIMSELF + AS LONG AS THIS MAN HAS NO IDEA THAT ANYONE CAN HAVE A CLUE THERE IS SOME CHANCE OF SECURING HIM BUT IF HE HAD THE SLIGHTEST SUSPICION HE WOULD CHANGE HIS NAME AND VANISH IN AN INSTANT AMONG THE FOUR MILLION INHABITANTS OF THIS GREAT CITY + WITHOUT MEANING TO HURT EITHER OF YOUR FEELINGS I AM BOUND TO SAY THAT T. CONSIDER THESE MEN TO BE MORE THAN A MATCH FOR THE OFFICIAL FORCE AND THAT IS WHY I HAVE NOT ASKED YOUR ASSISTANCE + IF I FAIL I SHALL OF COURSE INCUR ALL THE BLAME DUE TO THIS OMISSION BUT THAT I AM PREPARED FOR + AT PRESENT I AM READY TO PROMISE THAT THE INSTANT THAT I CAN COMMUNICATE WITH YOU WITHOUT ENDANGERING MY OWN COMBINATIONS I SHALL DO SO + GREGSON AND LESTRADE SEEMED TO BE FAR FROM SATISFIED BY THIS ASSURANCE OR BY THE DEPRECIATING ALLUSION TO THE DETECTIVE POLICE + THE FORMER HAD FLUSHED UP TO THE ROOTS OF HIS FLAXEN HAIR WHILE THE OTHER'S BEADY EYES GLISTENED WITH CURIOSITY AND RESENTMENT + NEITHER OF THEM HAD TIME TO SPEAK HOWEVER BEFORE THERE WAS A TAP AT THE DOOR AND THE SPOKESMAN OF THE STREET ARABS YOUNG WIGGINS INTRODUCED HIS INSIGNIFICANT AND UNSAVOURY PERSON + QUOTE PLEASE SIR QUOTE HE SAID TOUCHING HIS FORELOCK QUOTE I HAVE THE CAB DOWNSTAIRS QUOTE + GOOD BOY SAID HOLMES BLANDLY + WHY DON'T YOU INTRODUCE THIS PATTERN AT SCOTLAND YARD HE CONTINUED TAKING A PAIR OF STEEL HANDCUFFS FROM A DRAWER + SEE HOW BEAUTIFULLY THE SPRING WORKS + THEY FASTEN IN AN INSTANT + THE OLD PATTERN IS GOOD ENOUGH REMARKED LESTRADE IF WE CAN ONLY FIND THE MAN TO PUT THEM ON + QUOTE VERY GOOD VERY GOOD QUOTE SAID HOLMES SMILING + THE CABMAN MAY AS WELL HELP ME WITH MY BOXES + JUST ASK HIM TO STEP UP WIGGINS + I WAS SURPRISED TO FIND MY COMPANION SPEAKING AS THOUGH HE WERE ABOUT TO SET OUT ON A JOURNEY SINCE HE HAD NOT SAID ANYTHING TO ME ABOUT IT + THERE WAS A SMALL PORTMANTEAU IN THE ROOM AND THIS HE PULLED OUT AND BEGAN TO STRAP + HE WAS BUSILY ENGAGED AT IT WHEN THE CABMAN ENTERED THE ROOM + JUST GIVE ME A HELP WITH THIS BUCKLE CABMAN HE SAID KNEELING OVER HIS TASK AND NEVER TURNING HIS HEAD + THE FELLOW CAME FORWARD WITH A SOMEWHAT SULLEN DEFIANT AIR AND PUT DOWN HIS HANDS TO ASSIST + AT THAT INSTANT THERE WAS A SHARP CLICK THE JANGLING OF METAL AND SHERLOCK HOLMES SPRANG TO HIS FEET AGAIN + GENTLEMEN HE CRIED WITH FLASHING EYES LET ME INTRODUCE YOU TO MR. JEFFERSON HOPE THE MURDERER OF ENOCH DREBBER AND OF JOSEPH STANGERSON + THE WHOLE THING OCCURRED IN A MOMENT SO QUICKLY THAT I HAD NO TIME TO REALIZE IT + I HAVE A VIVID RECOLLECTION OF THAT INSTANT OF HOLMES'S TRIUMPHANT EXPRESSION AND THE RING OF HIS VOICE OF THE CABMAN'S DAZED SAVAGE FACE AS HE GLARED AT THE GLITTERING HANDCUFFS WHICH HAD APPEARED AS IF BY MAGIC UPON HIS WRISTS + FOR A SECOND OR TWO WE MIGHT HAVE BEEN A GROUP OF STATUES + THEN WITH AN INARTICULATE ROAR OF FURY THE PRISONER WRENCHED HIMSELF FREE FROM HOLMES'S GRASP AND HURLED HIMSELF THROUGH THE WINDOW + WOODWORK AND GLASS GAVE WAY BEFORE HIM BUT BEFORE HE GOT QUITE THROUGH GREGSON LESTRADE AND HOLMES SPRANG UPON HIM LIKE SO MANY STAGHOUNDS + HE WAS DRAGGED BACK INTO THE ROOM AND THEN COMMENCED A TERRIFIC CONFLICT + SO POWERFUL AND SO FIERCE WAS HE THAT THE FOUR OF US WERE SHAKEN OFF AGAIN AND AGAIN + HE APPEARED TO HAVE THE CONVULSIVE STRENGTH OF A MAN IN AN EPILEPTIC FIT + HIS FACE AND HANDS WERE TERRIBLY MANGLED BY HIS PASSAGE THROUGH THE GLASS BUT LOSS OF BLOOD HAD NO EFFECT IN DIMINISHING HIS RESISTANCE + IT WAS NOT UNTIL LESTRADE SUCCEEDED IN GETTING HIS HAND INSIDE HIS NECKCLOTH AND HALF STRANGLING HIM THAT WE MADE HIM REALIZE THAT HIS STRUGGLES WERE OF NO AVAIL AND EVEN THEN WE FELT NO SECURITY UNTIL WE HAD PINIONED HIS FEET AS WELL AS HIS HANDS + THAT DONE WE ROSE TO OUR FEET BREATHLESS AND PANTING + WE HAVE HIS CAB SAID SHERLOCK HOLMES + QUOTE IT WILL SERVE TO TAKE HIM TO SCOTLAND YARD + AND NOW GENTLEMEN HE CONTINUED WITH A PLEASANT SMILE WE HAVE REACHED THE END OF OUR LITTLE MYSTERY + YOU ARE VERY WELCOME TO PUT ANY QUESTIONS THAT YOU LIKE TO ME NOW AND THERE IS NO DANGER THAT I WILL REFUSE TO ANSWER THEM + PART TWO THE COUNTRY OF THE SAINTS CHAPTER ONE ON THE GREAT ALKALI PLAIN + IN THE CENTRAL PORTION OF THE GREAT NORTH AMERICAN CONTINENT THERE LIES AN ARID AND REPULSIVE DESERT WHICH FOR MANY A LONG YEAR SERVED AS A BARRIER AGAINST THE ADVANCE OF CIVILIZATION + FROM THE SIERRA NEVADA TO NEBRASKA AND FROM THE YELLOWSTONE RIVER IN THE NORTH TO THE COLORADO UPON THE SOUTH IS A REGION OF DESOLATION AND SILENCE + NOR IS NATURE ALWAYS IN ONE MOOD THROUGHOUT THIS GRIM DISTRICT + IT COMPRISES SNOW CAPPED AND LOFTY MOUNTAINS AND DARK AND GLOOMY VALLEYS + THERE ARE SWIFT FLOWING RIVERS WHICH DASH THROUGH JAGGED CANONS AND THERE ARE ENORMOUS PLAINS WHICH IN WINTER ARE WHITE WITH SNOW AND IN SUMMER ARE GRAY WITH THE SALINE ALKALI DUST + THEY ALL PRESERVE HOWEVER THE COMMON CHARACTERISTICS OF BARRENNESS INHOSPITALITY AND MISERY + THERE ARE NO INHABITANTS OF THIS LAND OF DESPAIR + A BAND OF PAWNEES OR OF BLACKFEET MAY OCCASIONALLY TRAVERSE IT IN ORDER TO REACH OTHER HUNTING GROUNDS BUT THE HARDIEST OF THE BRAVES ARE GLAD TO LOSE SIGHT OF THOSE AWESOME PLAINS AND TO FIND THEMSELVES ONCE MORE UPON THEIR PRAIRIES + THE COYOTE SKULKS AMONG THE SCRUB THE BUZZARD FLAPS HEAVILY THROUGH THE AIR AND THE CLUMSY GRIZZLY BEAR LUMBERS THROUGH THE DARK RAVINES AND PICKS UP SUCH SUSTENANCE AS IT CAN AMONGST THE ROCKS + THESE ARE THE SOLE DWELLERS IN THE WILDERNESS + IN THE WHOLE WORLD THERE CAN BE NO MORE DREARY VIEW THAN THAT FROM THE NORTHERN SLOPE OF THE SIERRA BLANCO + AS FAR AS THE EYE CAN REACH STRETCHES THE GREAT FLAT PLAIN LAND ALL DUSTED OVER WITH PATCHES OF ALKALI AND INTERSECTED BY CLUMPS OF THE DWARFISH CHAPARRAL BUSHES + ON THE EXTREME VERGE OF THE HORIZON LIE A LONG CHAIN OF MOUNTAIN PEAKS WITH THEIR RUGGED SUMMITS FLECKED WITH SNOW + IN THIS GREAT STRETCH OF COUNTRY THERE IS NO SIGN OF LIFE NOR OF ANYTHING APPERTAINING TO LIFE + THERE IS NO BIRD IN THE STEEL BLUE HEAVEN NO MOVEMENT UPON THE DULL GRAY EARTH ABOVE ALL THERE IS ABSOLUTE SILENCE + LISTEN AS ONE MAY THERE IS NO SHADOW OF A SOUND IN ALL THAT MIGHTY WILDERNESS NOTHING BUT SILENCE COMPLETE AND HEART SUBDUING SILENCE + IT HAS BEEN SAID THERE IS NOTHING APPERTAINING TO LIFE UPON THE BROAD PLAIN + THAT IS HARDLY TRUE + LOOKING DOWN FROM THE SIERRA BLANCO ONE SEES A PATHWAY TRACED OUT ACROSS THE DESERT WHICH WINDS AWAY AND IS LOST IN THE EXTREME DISTANCE + IT IS RUTTED WITH WHEELS AND TRODDEN DOWN BY THE FEET OF MANY ADVENTURERS + HERE AND THERE THERE ARE SCATTERED WHITE OBJECTS WHICH GLISTEN IN THE SUN AND STAND OUT AGAINST THE DULL DEPOSIT OF ALKALI + APPROACH AND EXAMINE THEM + THEY ARE BONES SOME LARGE AND COARSE OTHERS SMALLER AND MORE DELICATE + THE FORMER HAVE BELONGED TO OXEN AND THE LATTER TO MEN + FOR FIFTEEN HUNDRED MILES ONE MAY TRACE THIS GHASTLY CARAVAN ROUTE BY THESE SCATTERED REMAINS OF THOSE WHO HAD FALLEN BY THE WAYSIDE + LOOKING DOWN ON THIS VERY SCENE THERE STOOD UPON THE FOURTH OF MAY EIGHTEEN HUNDRED AND FORTY SEVEN A SOLITARY TRAVELLER + HIS APPEARANCE WAS SUCH THAT HE MIGHT HAVE BEEN THE VERY GENIUS OR DEMON OF THE REGION + AN OBSERVER WOULD HAVE FOUND IT DIFFICULT TO SAY WHETHER HE WAS NEARER TO FORTY OR TO SIXTY + HIS FACE WAS LEAN AND HAGGARD AND THE BROWN PARCHMENT LIKE SKIN WAS DRAWN TIGHTLY OVER THE PROJECTING BONES HIS LONG BROWN HAIR AND BEARD WERE ALL FLECKED AND DASHED WITH WHITE HIS EYES WERE SUNKEN IN HIS HEAD AND BURNED WITH AN UNNATURAL LUSTRE WHILE THE HAND WHICH GRASPED HIS RIFLE WAS HARDLY MORE FLESHY THAN THAT OF A SKELETON + AS HE STOOD HE LEANED UPON HIS WEAPON FOR SUPPORT AND YET HIS TALL FIGURE AND THE MASSIVE FRAMEWORK OF HIS BONES SUGGESTED A WIRY AND VIGOROUS CONSTITUTION + HIS GAUNT FACE HOWEVER AND HIS CLOTHES WHICH HUNG SO BAGGILY OVER HIS SHRIVELLED LIMBS PROCLAIMED WHAT IT WAS THAT GAVE HIM THAT SENILE AND DECREPIT APPEARANCE + THE MAN WAS DYING DYING FROM HUNGER AND FROM THIRST + HE HAD TOILED PAINFULLY DOWN THE RAVINE AND ON TO THIS LITTLE ELEVATION IN THE VAIN HOPE OF SEEING SOME SIGNS OF WATER + NOW THE GREAT SALT PLAIN STRETCHED BEFORE HIS EYES AND THE DISTANT BELT OF SAVAGE MOUNTAINS WITHOUT A SIGN ANYWHERE OF PLANT OR TREE WHICH MIGHT INDICATE THE PRESENCE OF MOISTURE + IN ALL THAT BROAD LANDSCAPE THERE WAS NO GLEAM OF HOPE + NORTH AND EAST AND WEST HE LOOKED WITH WILD QUESTIONING EYES AND THEN HE REALIZED THAT HIS WANDERINGS HAD COME TO AN END AND THAT THERE ON THAT BARREN CRAG HE WAS ABOUT TO DIE + WHY NOT HERE AS WELL AS IN A FEATHER BED TWENTY YEARS HENCE HE MUTTERED AS HE SEATED HIMSELF IN THE SHELTER OF A BOULDER + BEFORE SITTING DOWN HE HAD DEPOSITED UPON THE GROUND HIS USELESS RIFLE AND ALSO A LARGE BUNDLE TIED UP IN A GRAY SHAWL WHICH HE HAD CARRIED SLUNG OVER HIS RIGHT SHOULDER + IT APPEARED TO BE SOMEWHAT TOO HEAVY FOR HIS STRENGTH FOR IN LOWERING IT IT CAME DOWN ON THE GROUND WITH SOME LITTLE VIOLENCE + INSTANTLY THERE BROKE FROM THE GRAY PARCEL A LITTLE MOANING CRY AND FROM IT THERE PROTRUDED A SMALL SCARED FACE WITH VERY BRIGHT BROWN EYES AND TWO LITTLE SPECKLED DIMPLED FISTS + YOU'VE HURT ME SAID A CHILDISH VOICE REPROACHFULLY + HAVE I THOUGH THE MAN ANSWERED PENITENTLY I DIDN'T GO FOR TO DO IT + AS HE SPOKE HE UNWRAPPED THE GRAY SHAWL AND EXTRICATED A PRETTY LITTLE GIRL OF ABOUT FIVE YEARS OF AGE WHOSE DAINTY SHOES AND SMART PINK FROCK WITH ITS LITTLE LINEN APRON ALL BESPOKE A MOTHER'S CARE + THE CHILD WAS PALE AND WAN BUT HER HEALTHY ARMS AND LEGS SHOWED THAT SHE HAD SUFFERED LESS THAN HER COMPANION + QUOTE HOW IS IT NOW QUOTE HE ANSWERED ANXIOUSLY FOR SHE WAS STILL RUBBING THE TOUSY GOLDEN CURLS WHICH COVERED THE BACK OF HER HEAD + KISS IT AND MAKE IT WELL SHE SAID WITH PERFECT GRAVITY SHOWING THE INJURED PART UP TO HIM + THAT'S WHAT MOTHER USED TO DO + WHERE'S MOTHER + MOTHER'S GONE + I GUESS YOU'LL SEE HER BEFORE LONG + QUOTE GONE EH QUOTE SAID THE LITTLE GIRL + FUNNY SHE DIDN'T SAY GOOD BYE SHE MOST ALWAYS DID IF SHE WAS JUST GOIN' OVER TO AUNTIE'S FOR TEA AND NOW SHE'S BEEN AWAY THREE DAYS + SAY IT'S AWFUL DRY AIN'T IT + AIN'T THERE NO WATER NOR NOTHING TO EAT + NO THERE AIN'T NOTHING DEARIE + YOU'LL JUST NEED TO BE PATIENT AWHILE AND THEN YOU'LL BE ALL RIGHT + PUT YOUR HEAD UP AG'IN ME LIKE THAT AND THEN YOU'LL FEEL BULLIER + IT AIN'T EASY TO TALK WHEN YOUR LIPS IS LIKE LEATHER BUT I GUESS I'D BEST LET YOU KNOW HOW THE CARDS LIE + WHAT'S THAT YOU'VE GOT + PRETTY THINGS FINE THINGS CRIED THE LITTLE GIRL ENTHUSIASTICALLY HOLDING UP TWO GLITTERING FRAGMENTS OF MICA + QUOTE WHEN WE GOES BACK TO HOME I'LL GIVE THEM TO BROTHER BOB QUOTE + YOU'LL SEE PRETTIER THINGS THAN THEM SOON SAID THE MAN CONFIDENTLY + YOU JUST WAIT A BIT + I WAS GOING TO TELL YOU THOUGH YOU REMEMBER WHEN WE LEFT THE RIVER + OH YES + WELL WE RECKONED WE'D STRIKE ANOTHER RIVER SOON D'YE SEE + BUT THERE WAS SOMETHIN' WRONG COMPASSES OR MAP OR SOMETHIN' AND IT DIDN'T TURN UP + WATER RAN OUT + JUST EXCEPT A LITTLE DROP FOR THE LIKES OF YOU AND AND QUOTE + AND YOU COULDN'T WASH YOURSELF INTERRUPTED HIS COMPANION GRAVELY STARING UP AT HIS GRIMY VISAGE + NO NOR DRINK + AND MR. BENDER HE WAS THE FUST TO GO AND THEN INDIAN PETE AND THEN MRS. MCGREGOR AND THEN JOHNNY HONES AND THEN DEARIE YOUR MOTHER + THEN MOTHER'S A DEADER TOO CRIED THE LITTLE GIRL DROPPING HER FACE IN HER PINAFORE AND SOBBING BITTERLY + YES THEY ALL WENT EXCEPT YOU AND ME + THEN I THOUGHT THERE WAS SOME CHANCE OF WATER IN THIS DIRECTION SO L. HEAVED YOU OVER MY SHOULDER AND WE TRAMPED IT TOGETHER + IT DON'T SEEM AS THOUGH WE'VE IMPROVED MATTERS + THERE'S AN ALMIGHTY SMALL CHANCE FOR US NOW QUOTE + DO YOU MEAN THAT WE ARE GOING TO DIE TO ASKED THE CHILD CHECKING HER SOBS AND RAISING HER TEAR STAINED FACE + I GUESS THAT'S ABOUT THE SIZE OF IT + WHY DIDN'T YOU SAY SO BEFORE SHE SAID LAUGHING GLEEFULLY + YOU GAVE ME SUCH A FRIGHT + WHY OF COURSE NOW AS LONG AS WE DIE WE'LL BE WITH MOTHER AGAIN + QUOTE YES YOU WILL DEARIE QUOTE + AND YOU TOO + I'LL TELL HER HOW AWFUL GOOD YOU'VE BEEN + I'LL BET SHE MEETS US AT THE DOOR OF HEAVEN WITH A BIG PITCHER OF WATER AND A LOT OF BUCKWHEAT CAKES HOT AND TOASTED ON BOTH SIDES LIKE BOB AND ME WAS FOND OF + HOW LONG WILL IT BE FIRST + I DON'T KNOW NOT VERY LONG + THE MAN'S EYES WERE FIXED UPON THE NORTHERN HORIZON + IN THE BLUE VAULT OF THE HEAVEN THERE HAD APPEARED THREE LITTLE SPECKS WHICH INCREASED IN SIZE EVERY MOMENT SO RAPIDLY DID THEY APPROACH + THEY SPEEDILY RESOLVED THEMSELVES INTO THREE LARGE BROWN BIRDS WHICH CIRCLED OVER THE HEADS OF THE TWO WANDERERS AND THEN SETTLED UPON SOME ROCKS WHICH OVERLOOKED THEM + THEY WERE BUZZARDS THE VULTURES OF THE WEST WHOSE COMING IS THE FORERUNNER OF DEATH + COCKS AND HENS CRIED THE LITTLE GIRL GLEEFULLY POINTING AT THEIR ILL OMENED FORMS AND CLAPPING HER HANDS TO MAKE THEM RISE + SAY DID GOD MAKE THIS COUNTRY + QUOTE OF COURSE HE DID QUOTE SAID HER COMPANION RATHER STARTLED BY THIS UNEXPECTED QUESTION + HE MADE THE COUNTRY DOWN IN ILLINOIS AND HE MADE THE MISSOURI THE LITTLE GIRL CONTINUED + I GUESS SOMEBODY ELSE MADE THE COUNTRY IN THESE PARTS + IT'S NOT NEARLY SO WELL DONE + THEY FORGOT THE WATER AND THE TREES + WHAT WOULD YE THINK OF OFFERING UP PRAYER THE MAN ASKED DIFFIDENTLY + IT AIN'T NIGHT YET SHE ANSWERED + QUOTE IT DON'T MATTER + IT AIN'T QUITE REGULAR BUT HE WON'T MIND THAT YOU BET + YOU SAY OVER THEM ONES THAT YOU USED TO SAY EVERY NIGHT IN THE WAGON WHEN WE WAS ON THE PLAINS + WHY DON'T YOU SAY SOME YOURSELF THE CHILD ASKED WITH WONDERING EYES + I DISREMEMBER THEM HE ANSWERED + I HAIN'T SAID NONE SINCE I WAS HALF THE HEIGHT O' THAT GUN + I GUESS IT'S NEVER TOO LATE + YOU SAY THEM OUT AND I'LL STAND BY AND COME IN ON THE CHORUSES + QUOTE THEN YOU'LL NEED TO KNEEL DOWN AND ME TOO QUOTE SHE SAID LAYING THE SHAWL OUT FOR THAT PURPOSE + YOU'VE GOT TO PUT YOUR HANDS UP LIKE THIS + IT MAKES YOU FEEL KIND OF GOOD + IT WAS A STRANGE SIGHT HAD THERE BEEN ANYTHING BUT THE BUZZARDS TO SEE IT + SIDE BY SIDE ON THE NARROW SHAWL KNELT THE TWO WANDERERS THE LITTLE PRATTLING CHILD AND THE RECKLESS HARDENED ADVENTURER + HER CHUBBY FACE AND HIS HAGGARD ANGULAR VISAGE WERE BOTH TURNED UP TO THE CLOUDLESS HEAVEN IN HEARTFELT ENTREATY TO THAT DREAD BEING WITH WHOM THEY WERE FACE TO FACE WHILE THE TWO VOICES THE ONE THIN AND CLEAR THE OTHER DEEP AND HARSH UNITED IN THE ENTREATY FOR MERCY AND FORGIVENESS + THE PRAYER FINISHED THEY RESUMED THEIR SEAT IN THE SHADOW OF THE BOULDER UNTIL THE CHILD FELL ASLEEP NESTLING UPON THE BROAD BREAST OF HER PROTECTOR + HE WATCHED OVER HER SLUMBER FOR SOME TIME BUT NATURE PROVED TO BE TOO STRONG FOR HIM + FOR THREE DAYS AND THREE NIGHTS HE HAD ALLOWED HIMSELF NEITHER REST NOR REPOSE + SLOWLY THE EYELIDS DROOPED OVER THE TIRED EYES AND THE HEAD SUNK LOWER AND LOWER UPON THE BREAST UNTIL THE MAN'S GRIZZLED BEARD WAS MIXED WITH THE GOLD TRESSES OF HIS COMPANION AND BOTH SLEPT THE SAME DEEP AND DREAMLESS SLUMBER + HAD THE WANDERER REMAINED AWAKE FOR ANOTHER HALF HOUR A STRANGE SIGHT WOULD HAVE MET HIS EYES + FAR AWAY ON THE EXTREME VERGE OF THE ALKALI PLAIN THERE ROSE UP A LITTLE SPRAY OF DUST VERY SLIGHT AT FIRST AND HARDLY TO BE DISTINGUISHED FROM THE MISTS OF THE DISTANCE BUT GRADUALLY GROWING HIGHER AND BROADER UNTIL IT FORMED A SOLID WELL DEFINED CLOUD + THIS CLOUD CONTINUED TO INCREASE IN SIZE UNTIL IT BECAME EVIDENT THAT IT COULD ONLY BE RAISED BY A GREAT MULTITUDE OF MOVING CREATURES + IN MORE FERTILE SPOTS THE OBSERVER WOULD HAVE COME TO THE CONCLUSION THAT ONE OF THOSE GREAT HERDS OF BISONS WHICH GRAZE UPON THE PRAIRIE LAND WAS APPROACHING HIM + THIS WAS OBVIOUSLY IMPOSSIBLE IN THESE ARID WILDS + AS THE WHIRL OF DUST DREW NEARER TO THE SOLITARY BLUFF UPON WHICH THE TWO CASTAWAYS WERE REPOSING THE CANVAS COVERED TILTS OF WAGONS AND THE FIGURES OF ARMED HORSEMEN BEGAN TO SHOW UP THROUGH THE HAZE AND THE APPARITION REVEALED ITSELF AS BEING A GREAT CARAVAN UPON ITS JOURNEY FOR THE WEST + BUT WHAT A CARAVAN + WHEN THE HEAD OF IT HAD REACHED THE BASE OF THE MOUNTAINS THE REAR WAS NOT YET VISIBLE ON THE HORIZON + RIGHT ACROSS THE ENORMOUS PLAIN STRETCHED THE STRAGGLING ARRAY WAGONS AND CARTS MEN ON HORSEBACK AND MEN ON FOOT + INNUMERABLE WOMEN WHO STAGGERED ALONG UNDER BURDENS AND CHILDREN WHO TODDLED BESIDE THE WAGONS OR PEEPED OUT FROM UNDER THE WHITE COVERINGS + THIS WAS EVIDENTLY NO ORDINARY PARTY OF IMMIGRANTS BUT RATHER SOME NOMAD PEOPLE WHO HAD BEEN COMPELLED FROM STRESS OF CIRCUMSTANCES TO SEEK THEMSELVES A NEW COUNTRY + THERE ROSE THROUGH THE CLEAR AIR A CONFUSED CLATTERING AND RUMBLING FROM THIS GREAT MASS OF HUMANITY WITH THE CREAKING OF WHEELS AND THE NEIGHING OF HORSES + LOUD AS IT WAS IT WAS NOT SUFFICIENT TO ROUSE THE TWO TIRED WAYFARERS ABOVE THEM + AT THE HEAD OF THE COLUMN THERE RODE A SCORE OR MORE OF GRAVE IRON FACED MEN CLAD IN SOMBRE HOMESPUN GARMENTS AND ARMED WITH RIFLES + ON REACHING THE BASE OF THE BLUFF THEY HALTED AND HELD A SHORT COUNCIL AMONG THEMSELVES + THE WELLS ARE TO THE RIGHT MY BROTHERS SAID ONE A HARDLIPPED CLEAN SHAVEN MAN WITH GRIZZLY HAIR + TO THE RIGHT OF THE SIERRA BLANCO SO WE SHALL REACH THE RIO GRANDE SAID ANOTHER + FEAR NOT FOR WATER CRIED A THIRD + QUOTE HE WHO COULD DRAW IT FROM THE ROCKS WILL NOT NOW ABANDON HIS OWN CHOSEN PEOPLE QUOTE + AMEN AMEN RESPONDED THE WHOLE PARTY + THEY WERE ABOUT TO RESUME THEIR JOURNEY WHEN ONE OF THE YOUNGEST AND KEENEST EYED UTTERED AN EXCLAMATION AND POINTED UP AT THIE RUGGED CRAG ABOVE THEM + FROM ITS SUMMIT THERE FLUTTERED A LITTLE WISP OF PINK SHOWING UP HARD AND BRIGHT AGAINST THE GRAY ROCKS BEHIND + AT THE SIGHT THERE WAS A GENERAL REINING UP OF HORSES AND UNSLINGING OF GUNS WHILE FRESH HORSEMEN CAME GALLOPING UP TO REINFORCE THE VANGUARD + THE WORD REDSKINS WAS ON EVERY LIP + THERE CAN'T BE ANY NUMBER OF INJUNS HERE SAID THE ELDERLY MAN WHO APPEARED TO BE IN COMMAND + WE HAVE PASSED THE PAWLEES AND THERE ARE NO OTHER TRIBES UNTIL WE CROSS THE GREAT MOUNTAINS + SHALL I GO FORWARD AND SEE BROTHER STANGERSON ASKED ONE OF THE BAND + QUOTE AND I QUOTE QUOTE AND I QUOTE CRIED A DOZEN VOICES + LEAVE YOUR HORSES BELOW AND WE WILL AWAIT YOU HERE THE ELDER ANSWERED + IN A MOMENT THE YOUNG FELLOWS HAD DISMOUNTED FASTENED THEIR HORSES AND WERE ASCENDING THE PRECIPITOUS SLOPE WHICH LED UP TO THE OBJECT WHICH HAD EXCITED THEIR CURIOSITY + THEY ADVANCED RAPIDLY AND NOISELESSLY WITH THE CONFIDENCE AND DEXTERITY OF PRACTISED SCOUTS + THE WATCHERS FROM THE PLAIN BELOW COULD SEE THEM FLIT FROM ROCK TO ROCK UNTIL THEIR FIGURES STOOD OUT AGAINST THE SKY LINE + THE YOUNG MAN WHO HAD FIRST GIVEN THE ALARM WAS LEADING THEM + SUDDENLY HIS FOLLOWERS SAW HIM THROW UP HIS HANDS AS THOUGH OVERCOME WITH ASTONISHMENT AND ON JOINING HIM THEY WERE AFFECTED IN THE SAME WAY BY THE SIGHT WHICH MET THEIR EYES + ON THE LITTLE PLATEAU WHICH CROWNED THE BARREN HILL THERE STOOD A SINGLE GIANT BOULDER AND AGAINST THIS BOULDER THERE LAY A TALL MAN LONG BEARDED AND HARD FEATURED BUT OF AN EXCESSIVE THINNESS + HIS PLACID FACE AND REGULAR BREATHING SHOWED THAT HE WAS FAST ASLEEP + BESIDE HIM LAY A CHILD WITH HER ROUND WHITE ARMS ENCIRCLING HIS BROWN SINEWY NECK AND HER GOLDEN HAIRED HEAD RESTING UPON THE BREAST OF HIS VELVETEEN TUNIC + HER ROSY LIPS WERE PARTED SHOWING THE REGULAR LINE OF SNOW WHITE TEETH WITHIN AND A PLAYFUL SMILE PLAYED OVER HER INFANTILE FEATURES + HER PLUMP LITTLE WHITE LEGS TERMINATING IN WHITE SOCKS AND NEAT SHOES WITH SHINING BUCKLES OFFERED A STRANGE CONTRAST TO THE LONG SHRIVELLED MEMBERS OF HER COMPANION + ON THE LEDGE OF ROCK ABOVE THIS STRANGE COUPLE THERE STOOD THREE SOLEMN BUZZARDS WHO AT THE SIGHT OF THE NEWCOMERS UTTERED RAUCOUS SCREAMS OF DISAPPOINTMENT AND FLAPPED SULLENLY AWAY + THE CRIES OF THE FOUL BIRDS AWOKE THE TWO SLEEPERS WHO STARED ABOUT THEM IN BEWILDERMENT + THE MAN STAGGERED TO HIS FEET AND LOOKED DOWN UPON THE PLAIN WHICH HAD BEEN SO DESOLATE WHEN SLEEP HAD OVERTAKEN HIM AND WHICH WAS NOW TRAVERSED BY THIS ENORMOUS BODY OF MEN AND OF BEASTS + HIS FACE ASSUMED AN EXPRESSION OF INCREDULITY AS HE GAZED AND HE PASSED HIS BONY HAND OVER HIS EYES + THIS IS WHAT THEY CALL DELIRIUM I GUESS HE MUTTERED + THE CHILD STOOD BESIDE HIM HOLDING ON TO THE SKIRT OF HIS COAT AND SAID NOTHING BUT LOOKED ALL ROUND HER WITH THE WONDERING QUESTIONING GAZE OF CHILDHOOD + THE RESCUING PARTY WERE SPEEDILY ABLE TO CONVINCE THE TWO CASTAWAYS THAT THEIR APPEARANCE WAS NO DELUSION + ONE OF THEM SEIZED THE LITTLE GIRL AND HOISTED HER UPON HIS SHOULDER WHILE TWO OTHERS SUPPORTED HER GAUNT COMPANION AND ASSISTED HIM TOWARDS THE WAGONS + MY NAME IS JOHN FERRIER THE WANDERER EXPLAINED ME AND THAT LITTLE UN ARE ALL THAT'S LEFT O' TWENTY ONE PEOPLE + THE REST IS ALL DEAD O' THIRST AND HUNGER AWAY DOWN IN THE SOUTH + IS SHE YOUR CHILD ASKED SOMEONE + QUOTE I GUESS SHE IS NOW QUOTE THE OTHER CRIED DEFIANTLY QUOTE SHE'S MINE 'CAUSE I SAVED HER + NO MAN WILL TAKE HER FROM ME + SHE'S LUCY FERRIER FROM THIS DAY ON + WHO ARE YOU THOUGH HE CONTINUED GLANCING WITH CURIOSITY AT HIS STALWART SUNBURNED RESCUERS THERE SEEMS TO BE A POWERFUL LOT OF YE + NIGH UNTO TEN THOUSAND SAID ONE OF THE YOUNG MEN WE ARE THE PERSECUTED CHILDREN OF GOD THE CHOSEN OF THE ANGEL MORONI + I NEVER HEARD TELL ON HIM SAID THE WANDERER + HE APPEARS TO HAVE CHOSEN A FAIR CROWD OF YE + DO NOT JEST AT THAT WHICH IS SACRED SAID THE OTHER STERNLY + QUOTE WE ARE OF THOSE WHO BELIEVE IN THOSE SACRED WRITINGS DRAWN IN EGYPTIAN LETTERS ON PLATES OF BEATEN GOLD WHICH WERE HANDED UNTO THE HOLY JOSEPH SMITH AT PALMYRA + WE HAVE COME FROM NAUVOO IN THE STATE OF ILLINOIS WHERE WE HAD FOUNDED OUR TEMPLE + WE HAVE COME TO SEEK A REFUGE FROM THE VIOLENT MAN AND FROM THE GODLESS EVEN THOUGH IT BE THE HEART OF THE DESERT + THE NAME OF NAUVOO EVIDENTLY RECALLED RECOLLECTIONS TO JOHN FERRIER + I SEE HE SAID YOU ARE THE MORMONS + WE ARE THE MORMONS ANSWERED HIS COMPANIONS WITH ONE VOICE + AND WHERE ARE YOU GOING + WE DO NOT KNOW + THE HAND OF GOD IS LEADING US UNDER THE PERSON OF OUR PROPHET + YOU MUST COME BEFORE HIM + HE SHALL SAY WHAT IS TO BE DONE WITH YOU QUOTE + THEY HAD REACHED THE BASE OF THE HILL BY THIS TIME AND WERE SURROUNDED BY CROWDS OF THE PILGRIMS PALE FACED MEEK LOOKING WOMEN STRONG LAUGHING CHILDREN AND ANXIOUS EARNEST EYED MEN + MANY WERE THE CRIES OF ASTONISHMENT AND OF COMMISERATION WHICH AROSE FROM THEM WHEN THEY PERCEIVED THE YOUTH OF ONE OF THE STRANGERS AND THE DESTITUTION OF THE OTHER + THEIR ESCORT DID NOT HALT HOWEVER BUT PUSHED ON FOLLOWED BY A GREAT CROWD OF MORMONS UNTIL THEY REACHED A WAGON WHICH WAS CONSPICUOUS FOR ITS GREAT SIZE AND FOR THE GAUDINESS AND SMARTNESS OF ITS APPEARANCE + SIX HORSES WERE YOKED TO IT WHEREAS THE OTHERS WERE FURNISHED WITH TWO OR AT MOST FOUR APIECE + BESIDE THE DRIVER THERE SAT A MAN WHO COULD NOT HAVE BEEN MORE THAN THIRTY YEARS OF AGE BUT WHOSE MASSIVE HEAD AND RESOLUTE EXPRESSION MARKED HIM AS A LEADER + HE WAS READING A BROWN BACKED VOLUME BUT AS THE CROWD APPROACHED HE LAID IT ASIDE AND LISTENED ATTENTIVELY TO AN ACCOUNT OF THE EPISODE + THEN HE TURNED TO THE TWO CASTAWAYS + IF WE TAKE YOU WITH US HE SAID IN SOLEMN WORDS IT CAN ONLY BE AS BELIEVERS IN OUR OWN CREED + WE SHALL HAVE NO WOLVES IN OUR FOLD + BETTER FAR THAT YOUR BONES SHOULD BLEACH IN THIS WILDERNESS THAN THAT YOU SHOULD PROVE TO BE THAT LITTLE SPECK OF DECAY WHICH IN TIME CORRUPTS THE WHOLE FRUIT + WILL YOU COME WITH US ON THESE TERMS + GUESS I'LL COME WITH YOU ON ANY TERMS SAID FERRIER WITH SUCH EMPHASIS THAT THE GRAVE ELDERS COULD NOT RESTRAIN A SMILE + THE LEADER ALONE RETAINED HIS STERN IMPRESSIVE EXPRESSION + TAKE HIM BROTHER STANGERSON HE SAID GIVE HIM FOOD AND DRINK AND THE CHILD LIKEWISE + LET IT BE YOUR TASK ALSO TO TEACH HIM OUR HOLY CREED + WE HAVE DELAYED LONG ENOUGH + FORWARD + ON ON TO ZION + QUOTE ON ON TO ZION QUOTE CRIED THE CROWD OF MORMONS AND THE WORDS RIPPLED DOWN THE LONG CARAVAN PASSING FROM MOUTH TO MOUTH UNTIL THEY DIED AWAY IN A DULL MURMUR IN THE FAR DISTANCE + WITH A CRACKING OF WHIPS AND A CREAKING OF WHEELS THE GREAT WAGONS GOT INTO MOTION AND SOON THE WHOLE CARAVAN WAS WINDING ALONG ONCE MORE + THE ELDER TO WHOSE CARE THE TWO WAIFS HAD BEEN COMMITTED LED THEM TO HIS WAGON WHERE A MEAL WAS ALREADY AWAITING THEM + YOU SHALL REMAIN HERE HE SAID + IN A FEW DAYS YOU WILL HAVE RECOVERED FROM YOUR FATIGUES + IN THE MEANTIME REMEMBER THAT NOW AND FOREVER YOU ARE OF OUR RELIGION + BRIGHAM YOUNG HAS SAID IT AND HE HAS SPOKEN WITH THE VOICE OF JOSEPH SMITH WHICH IS THE VOICE OF GOD + CHAPTER TWO THE FLOWER OF UTAH + THIS IS NOT THE PLACE TO COMMEMORATE THE TRIALS AND PRIVATIONS ENDURED BY THE IMMIGRANT MORMONS BEFORE THEY CAME TO THEIR FINAL HAVEN + FROM THE SHORES OF THE MISSISSIPPI TO THE WESTERN SLOPES OF THE ROCKY MOUNTAINS THEY HAD STRUGGLED ON WITH A CONSTANCY ALMOST UNPARALLELED IN HISTORY + THE SAVAGE MAN AND THE SAVAGE BEAST HUNGER THIRST FATIGUE AND DISEASE EVERY IMPEDIMENT WHICH NATURE COULD PLACE IN THE WAY HAD ALL BEEN OVERCOME WITH ANGLO SAXON TENACITY + YET THE LONG JOURNEY AND THE ACCUMULATED TERRORS HAD SHAKEN THE HEARTS OF THE STOUTEST AMONG THEM + THERE WAS NOT ONE WHO DID NOT SINK UPON HIS KNEES IN HEARTFELT PRAYER WHEN THEY SAW THE BROAD VALLEY OF UTAH BATHED IN THE SUNLIGHT BENEATH THEM AND LEARNED FROM THE LIPS OF THEIR LEADER THAT THIS WAS THE PROMISED LAND AND THAT THESE VIRGIN ACRES WERE TO BE THEIRS FOR EVERMORE + YOUNG SPEEDILY PROVED HIMSELF TO BE A SKILFUL ADMINISTRATOR AS WELL AS A RESOLUTE CHIEF + MAPS WERE DRAWN AND CHARTS PREPARED IN WHICH THE FUTURE CITY WAS SKETCHED OUT + ALL AROUND FARMS WERE APPORTIONED AND ALLOTTED IN PROPORTION TO THE STANDING OF EACH INDIVIDUAL + THE TRADESMAN WAS PUT TO HIS TRADE AND THE ARTISAN TO HIS CALLING + IN THE TOWN STREETS AND SQUARES SPRANG UP AS IF BY MAGIC + IN THE COUNTRY THERE WAS DRAINING AND HEDGING PLANTING AND CLEARING UNTIL THE NEXT SUMMER SAW THE WHOLE COUNTRY GOLDEN WITH THE WHEAT CROP + EVERYTHING PROSPERED IN THE STRANGE SETTLEMENT + ABOVE ALL THE GREAT TEMPLE WHICH THEY HAD ERECTED IN THE CENTRE OF THE CITY GREW EVER TALLER AND LARGER + FROM THE FIRST BLUSH OF DAWN UNTIL THE CLOSING OF THE TWILIGHT THE CLATTER OF THE HAMMER AND THE RASP OF THE SAW WERE NEVER ABSENT FROM THE MONUMENT WHICH THE IMMIGRANTS ERECTED TO HIM WHO HAD LED THEM SAFE THROUGH MANY DANGERS + THE TWO CASTAWAYS JOHN FERRIER AND THE LITTLE GIRL WHO HAD SHARED HIS FORTUNES AND HAD BEEN ADOPTED AS HIS DAUGHTER ACCOMPANIED THE MORMONS TO THE END OF THEIR GREAT PILGRIMAGE + LITTLE LUCY FERRIER WAS BORNE ALONG PLEASANTLY ENOUGH IN ELDER STANGERSON'S WAGON A RETREAT WHICH SHE SHARED WITH THE MORMON'S THREE WIVES AND WITH HIS SON A HEADSTRONG FORWARD BOY OF TWELVE + HAVING RALLIED WITH THE ELASTICITY OF CHILDHOOD FROM THE SHOCK CAUSED BY HER MOTHER'S DEATH SHE SOON BECAME A PET WITH THE WOMEN AND RECONCILED HERSELF TO THIS NEW LIFE IN HER MOVING CANVAS COVERED HOME + IN THE MEANTIME FERRIER HAVING RECOVERED FROM HIS PRIVATIONS DISTINGUISHED HIMSELF AS A USEFUL GUIDE AND AN INDEFATIGABLE HUNTER + SO RAPIDLY DID HE GAIN THE ESTEEM OF HIS NEW COMPANIONS THAT WHEN THEY REACHED THE END OF THEIR WANDERINGS IT WAS UNANIMOUSLY AGREED THAT HE SHOULD BE PROVIDED WITH AS LARGE AND AS FERTILE A TRACT OF LAND AS ANY OF THE SETTLERS WITH THE EXCEPTION OF YOUNG HIMSELF AND OF STANGERSON KEMBALL JOHNSTON AND DREBBER WHO WERE THE FOUR PRINCIPAL ELDERS + ON THE FARM THUS ACQUIRED JOHN FERRIER BUILT HIMSELF A SUBSTANTIAL LOG HOUSE WHICH RECEIVED SO MANY ADDITIONS IN SUCCEEDING YEARS THAT IT GREW INTO A ROOMY VILLA + HE WAS A MAN OF A PRACTICAL TURN OF MIND KEEN IN HIS DEALINGS AND SKILFUL WITH HIS HANDS + HIS IRON CONSTITUTION ENABLED HIM TO WORK MORNING AND EVENING AT IMPROVING AND TILLING HIS LANDS + HENCE IT CAME ABOUT THAT HIS FARM AND ALL THAT BELONGED TO HIM PROSPERED EXCEEDINGLY + IN THREE YEARS HE WAS BETTER OFF THAN HIS NEIGHBOURS IN SIX HE WAS WELL TO DO. IN NINE HE WAS RICH AND IN TWELVE THERE WERE NOT HALF A DOZEN MEN IN THE WHOLE OF SALT LAKE CITY WHO COULD COMPARE WITH HIM + FROM THE GREAT INLAND SEA TO THE DISTANT WASATCH MOUNTAINS THERE WAS NO NAME BETTER KNOWN THAN THAT OF JOHN FERRIER + THERE WAS ONE WAY AND ONLY ONE IN WHICH HE OFFENDED THE SUSCEPTIBILITIES OF HIS CO RELIGIONISTS + NO ARGUMENT OR PERSUASION COULD EVER INDUCE HIM TO SET UP A FEMALE ESTABLISHMENT AFTER THE MANNER OF HIS COMPANIONS + HE NEVER GAVE REASONS FOR THIS PERSISTENT REFUSAL BUT CONTENTED HIMSELF BY RESOLUTELY AND INFLEXIBLY ADHERING TO HIS DETERMINATION + THERE WERE SOME WHO ACCUSED HIM OF LUKEWARMNESS IN HIS ADOPTED RELIGION AND OTHERS WHO PUT IT DOWN TO GREED OF WEALTH AND RELUCTANCE TO INCUR EXPENSE + OTHERS AGAIN SPOKE OF SOME EARLY LOVE AFFAIR AND OF A FAIR HAIRED GIRL WHO HAD PINED AWAY ON THE SHORES OF THE ATLANTIC + WHATEVER THE REASON FERRIER REMAINED STRICTLY CELIBATE + IN EVERY OTHER RESPECT HE CONFORMED TO THE RELIGION OF THE YOUNG SETTLEMENT AND GAINED THE NAME OF BEING AN ORTHODOX AND STRAIGHTWALKING MAN + LUCY FERRIER GREW UP WITHIN THE LOG HOUSE AND ASSISTED HER ADOPTED FATHER IN ALL HIS UNDERTAKINGS + THE KEEN AIR OF THE MOUNTAINS AND THE BALSAMIC ODOUR OF THE PINE TREES TOOK THE PLACE OF NURSE AND MOTHER TO THE YOUNG GIRL + AS YEAR SUCCEEDED TO YEAR SHE GREW TALLER AND STRONGER HER CHEEK MORE RUDDY AND HER STEP MORE ELASTIC + MANY A WAYFARER UPON THE HIGH ROAD WHICH RAN BY FERRIER'S FARM FELT LONG FORGOTTEN THOUGHTS REVIVE IN HIS MIND AS HE WATCHED HER LITHE GIRLISH FIGURE TRIPPING THROUGH THE WHEATFIELDS OR MET HER MOUNTED UPON HER FATHER'S MUSTANG AND MANAGING IT WITH ALL THE EASE AND GRACE OF A TRUE CHILD OF THE WEST + SO THE BUD BLOSSOMED INTO A FLOWER AND THE YEAR WHICH SAW HER FATHER THE RICHEST OF THE FARMERS LEFT HER AS FAIR A SPECIMEN OF AMERICAN GIRLHOOD AS COULD BE FOUND IN THE WHOLE PACIFIC SLOPE + IT WAS NOT THE FATHER HOWEVER WHO FIRST DISCOVERED THAT THE CHILD HAD DEVELOPED INTO THE WOMAN + IT SELDOM IS IN SUCH CASES + THAT MYSTERIOUS CHANGE IS TOO SUBTLE AND TOO GRADUAL TO BE MEASURED BY DATES + LEAST OF ALL DOES THE MAIDEN HERSELF KNOW IT UNTIL THE TONE OF A VOICE OR THE TOUCH OF A HAND SETS HER HEART THRILLING WITHIN HER AND SHE LEARNS WITH A MIXTURE OF PRIDE AND OF FEAR THAT A NEW AND A LARGER NATURE HAS AWAKENED WITHIN HER + THERE ARE FEW WHO CANNOT RECALL THAT DAY AND REMEMBER THE ONE LITTLE INCIDENT WHICH HERALDED THE DAWN OF A NEW LIFE + IN THE CASE OF LUCY FERRIER THE OCCASION WAS SERIOUS ENOUGH IN ITSELF APART FROM ITS FUTURE INFLUENCE ON HER DESTINY AND THAT OF MANY BESIDES + IT WAS A WARM JUNE MORNING AND THE LATTER DAY SAINTS WERE AS BUSY AS THE BEES WHOSE HIVE THEY HAVE CHOSEN FOR THEIR EMBLEM + IN THE FIELDS AND IN THE STREETS ROSE THE SAME HUM OF HUMAN INDUSTRY + DOWN THE DUSTY HIGH ROADS DEFILED LONG STREAMS OF HEAVILY LADEN MULES ALL HEADING TO THE WEST FOR THE GOLD FEVER HAD BROKEN OUT IN CALIFORNIA AND THE OVERLAND ROUTE LAY THROUGH THE CITY OF THE ELECT + THERE TOO WERE DROVES OF SHEEP AND BULLOCKS COMING IN FROM THE OUTLYING PASTURE LANDS AND TRAINS OF TIRED IMMIGRANTS MEN AND HORSES EQUALLY WEARY OF THEIR INTERMINABLE JOURNEY + THROUGH ALL THIS MOTLEY ASSEMBLAGE THREADING HER WAY WITH THE SKILL OF AN ACCOMPLISHED RIDER THERE GALLOPED LUCY FERRIER HER FAIR FACE FLUSHED WITH THE EXERCISE AND HER LONG CHESTNUT HAIR FLOATING OUT BEHIND HER + SHE HAD A COMMISSION FROM HER FATHER IN THE CITY AND WAS DASHING IN AS SHE HAD DONE MANY A TIME BEFORE WITH ALL THE FEARLESSNESS OF YOUTH THINKING ONLY OF HER TASK AND HOW IT WAS TO BE PERFORMED + THE TRAVEL STAINED ADVENTURERS GAZED AFTER HER IN ASTONISHMENT AND EVEN THE UNEMOTIONAL INDIANS JOURNEYING IN WITH THEIR PELTRIES RELAXED THEIR ACCUSTOMED STOICISM AS THEY MARVELLED AT THE BEAUTY OF THE PALE FACED MAIDEN + SHE HAD REACHED THE OUTSKIRTS OF THE CITY WHEN SHE FOUND THE ROAD BLOCKED BY A GREAT DROVE OF CATTLE DRIVEN BY A HALF DOZEN WILD LOOKING HERDSMEN FROM THE PLAINS + IN HER IMPATIENCE SHE ENDEAVOURED TO PASS THIS OBSTACLE BY PUSHING HER HORSE INTO WHAT APPEARED TO BE A GAP + SCARCELY HAD SHE GOT FAIRLY INTO IT HOWEVER BEFORE THE BEASTS CLOSED IN BEHIND HER AND SHE FOUND HERSELF COMPLETELY EMBEDDED IN THE MOVING STREAM OF FIERCEEYED LONG HORNED BULLOCKS + ACCUSTOMED AS SHE WAS TO DEAL WITH CATTLE SHE WAS NOT ALARMED AT HER SITUATION BUT TOOK ADVANTAGE OF EVERY OPPORTUNITY TO URGE HER HORSE ON IN THE HOPES OI. PUSHING HER WAY THROUGH THE CAVALCADE + UNFORTUNATELY THE HORNS OF ONE OF THE CREATURES EITHER BY ACCIDENT OR DESIGN CAME IN VIOLENT CONTACT WITH THE FLANK OF THE MUSTANG AND EXCITED IT TO MADNESS + IN AN INSTANT IT REARED UP UPON ITS HIND LEGS WITH A SNORT OF RAGE AND PRANCED AND TOSSED IN A WAY THAT WOULD HAVE UNSEATED ANY BUT A SKILFUL RIDER + THE SITUATION WAS FULL OF PERIL + EVERY PLUNGE OF THE EXCITED HORSE BROUGHT IT AGAINST THE HORNS AGAIN AND GOADED IT TO FRESH MADNESS + IT WAS ALL THAT THE GIRL COULD DO TO KEEP HERSELF IN THE SADDLE YET A SLIP WOULD MEAN A TERRIBLE DEATH UNDER THE HOOFS OF THE UNWIELDY AND TERRIFIED ANIMALS + UNACCUSTOMED TO SUDDEN EMERGENCIES HER HEAD BEGAN TO SWIM AND HER GRIP UPON THE BRIDLE TO RELAX + CHOKED BY THE RISING CLOUD OF DUST AND BY THE STEAM FROM THE STRUGGLING CREATURES SHE MIGHT HAVE ABANDONED HER EFFORTS IN DESPAIR BUT FOR A KINDLY VOICE AT HER ELBOW WHICH ASSURED HER OF ASSISTANCE + AT THE SAME MOMENT A SINEWY BROWN HAND CAUGHT THE FRIGHTENED HORSE BY THE CURB AND FORCING A WAY THROUGH THE DROVE SOON BROUGHT HER TO THE OUTSKIRTS + YOU'RE NOT HURT I HOPE MISS SAID HER PRESERVER RESPECTFULLY + SHE LOOKED UP AT HIS DARK FIERCE FACE AND LAUGHED SAUCILY + I'M AWFUL FRIGHTENED SHE SAID NAIVELY WHOEVER WOULD HAVE THOUGHT THAT PONCHO WOULD HAVE BEEN SO SCARED BY A LOT OF COWS + QUOTE THANK GOD YOU KEPT YOUR SEAT QUOTE THE OTHER SAID EARNESTLY + HE WAS A TALL SAVAGE LOOKING YOUNG FELLOW MOUNTED ON A POWERFUL ROAN HORSE AND CLAD IN THE ROUGH DRESS OF A HUNTER WITH A LONG RIFLE SLUNG OVER HIS SHOULDERS + I GUESS YOU ARE THE DAUGHTER OF JOHN FERRIER HE REMARKED I SAW YOU RIDE DOWN FROM HIS HOUSE + WHEN YOU SEE HIM ASK HIM IF HE REMEMBERS THE JEFFERSON HOPES OF SAINT LOUIS + IF HE'S THE SAME FERRIER MY FATHER AND HE WERE PRETTY THICK + HADN'T YOU BETTER COME AND ASK YOURSELF SHE ASKED DEMURELY + THE YOUNG FELLOW SEEMED PLEASED AT THE SUGGESTION AND HIS DARK EYES SPARKLED WITH PLEASURE + I'LL DO SO HE SAID WE'VE BEEN IN THE MOUNTAINS FOR TWO MONTHS AND ARE NOT OVER AND ABOVE IN VISITING CONDITION + HE MUST TAKE US AS HE FINDS US + QUOTE HE HAS A GOOD DEAL TO THANK YOU FOR AND SO HAVE I QUOTE SHE ANSWERED QUOTE HE'S AWFUL FOND OF ME + IF THOSE COWS HAD JUMPED ON ME HE'D HAVE NEVER GOT OVER IT + NEITHER WOULD I SAID HER COMPANION + YOU + WELL I DON'T SEE THAT IT WOULD MAKE MUCH MATTER TO YOU ANYHOW + YOU AIN'T EVEN A FRIEND OF OURS + THE YOUNG HUNTER'S DARK FACE GREW SO GLOOMY OVER THIS REMARK THAT LUCY FERRIER LAUGHED ALOUD + THERE I DIDN'T MEAN THAT SHE SAID OF COURSE YOU ARE A FRIEND NOW + YOU MUST COME AND SEE US + NOW I MUST PUSH ALONG OR FATHER WON'T TRUST ME WITH HIS BUSINESS ANY MORE + GOOD BYE QUOTE + GOOD BYE HE ANSWERED RAISING HIS BROAD SOMBRERO AND BENDING OVER HER LITTLE HAND + SHE WHEELED HER MUSTANG ROUND GAVE IT A CUT WITH HER RIDING WHIP AND DARTED AWAY DOWN THE BROAD ROAD IN A ROLLING CLOUD OF DUST + YOUNG JEFFERSON HOPE RODE ON WITH HIS COMPANIONS GLOOMY AND TACITUM + HE AND THEY HAD BEEN AMONG THE NEVADA MOUNTAINS PROSPECTING FOR SILVER AND WERE RETURNING TO SALT LAKE CITY IN THE HOPE OF RAISING CAPITAL ENOUGH TO WORK SOME LODES WHICH THEY HAD DISCOVERED + HE HAD BEEN AS KEEN AS ANY OF THEM UPON THE BUSINESS UNTIL THIS SUDDEN INCIDENT HAD DRAWN HIS THOUGHTS INTO ANOTHER CHANNEL + THE SIGHT OF THE FAIR YOUNG GIRL AS FRANK AND WHOLESOME AS THE SIERRA BREEZES HAD STIRRED HIS VOLCANIC UNTAMED HEART TO ITS VERY DEPTHS + WHEN SHE HAD VANISHED FROM HIS SIGHT HE REALIZED THAT A CRISIS HAD COME IN HIS LIFE AND THAT NEITHER SILVER SPECULATIONS NOR ANY OTHER QUESTIONS COULD EVER BE OF SUCH IMPORTANCE TO HIM AS THIS NEW AND ALL ABSORBING ONE + THE LOVE WHICH HAD SPRUNG UP IN HIS HEART WAS NOT THE SUDDEN CHANGEABLE FANCY OF A BOY BUT RATHER THE WILD FIERCE PASSION OF A MAN OF STRONG WILL AND IMPERIOUS TEMPER + HE HAD BEEN ACCUSTOMED TO SUCCEED IN ALL THAT HE UNDERTOOK + HE SWORE IN HIS HEART THAT HE WOULD NOT FAIL IN THIS IF HUMAN EFFORT AND HUMAN PERSEVERANCE COULD RENDER HIM SUCCESSFUL + HE CALLED ON JOHN FERRIER THAT NIGHT AND MANY TIMES AGAIN UNTIL HIS FACE WAS A FAMILIAR ONE AT THE FARMHOUSE + JOHN COOPED UP IN THE VALLEY AND ABSORBED IN HIS WORK HAD HAD LITTLE CHANCE OF LEARNING THE NEWS OF THE OUTSIDE WORLD DURING THE LAST TWELVE YEARS + ALL THIS JEFFERSON HOPE WAS ABLE TO TELL HIM AND IN A STYLE WHICH INTERESTED LUCY AS WELL AS HER FATHER + HE HAD BEEN A PIONEER IN CALIFORNIA AND COULD NARRATE MANY A STRANGE TALE OF FORTUNES MADE AND FORTUNES LOST IN THOSE WILD HALCYON DAYS + HE HAD BEEN A SCOUT TOO AND A TRAPPER A SILVER EXPLORER AND A RANCHMAN + WHEREVER STIRRING ADVENTURES WERE TO BE HAD JEFFERSON HOPE HAD BEEN THERE IN SEARCH OF THEM + HE SOON BECAME A FAVOURITE WITH THE OLD FARMER WHO SPOKE ELOQUENTLY OF HIS VIRTUES + ON SUCH OCCASIONS LUCY WAS SILENT BUT HER BLUSHING CHEEK AND HER BRIGHT HAPPY EYES SHOWED ONLY TOO CLEARLY THAT HER YOUNG HEART WAS NO LONGER HER OWN + HER HONEST FATHER MAY NOT HAVE OBSERVED THESE SYMPTOMS BUT THEY WERE ASSUREDLY NOT THROWN AWAY UPON THE MAN WHO HAD WON HER AFFECTIONS + ONE SUMMER EVENING HE CAME GALLOPING DOWN THE ROAD AND PULLED UP AT THE GATE + SHE WAS AT THE DOORWAY AND CAME DOWN TO MEET HIM + HE THREW THE BRIDLE OVER THE FENCE AND STRODE UP THE PATHWAY + I AM OFF LUCY HE SAID TAKING HER TWO HANDS IN HIS AND GAZING TENDERLY DOWN INTO HER FACE I WON'T ASK YOU TO COME WITH ME NOW BUT WILL YOU BE READY TO COME WHEN I AM HERE AGAIN + AND WHEN WILL THAT BE SHE ASKED BLUSHING AND LAUGHING + A COUPLE OF MONTHS AT THE OUTSIDE + I WILL COME AND CLAIM YOU THEN MY DARLING + THERE'S NO ONE WHO CAN STAND BETWEEN US + QUOTE AND HOW ABOUT FATHER QUOTE SHE ASKED + HE HAS GIVEN HIS CONSENT PROVIDED WE GET THESE MINES WORKING ALL RIGHT + I HAVE NO FEAR ON THAT HEAD + OH WELL OF COURSE IF YOU AND FATHER HAVE ARRANGED IT ALL THERE'S NO MORE TO BE SAID SHE WHISPERED WITH HER CHEEK AGAINST HIS BROAD BREAST + THANK GOD HE SAID HOARSELY STOOPING AND KISSING HER + IT IS SETTLED THEN + THE LONGER I STAY THE HARDER IT WILL BE TO GO + THEY ARE WAITING FOR ME AT THE CANON + GOOD BYE MY OWN DARLING GOOD BYE + IN TWO MONTHS YOU SHALL SEE ME QUOTE + HE TORE HIMSELF FROM HER AS HE SPOKE AND FLINGING HIMSELF UPON HIS HORSE GALLOPED FURIOUSLY AWAY NEVER EVEN LOOKING ROUND AS THOUGH AFRAID THAT HIS RESOLUTION MIGHT FAIL HIM IF HE TOOK ONE GLANCE AT WHAT HE WAS LEAVING + SHE STOOD AT THE GATE GAZING AFTER HIM UNTIL HE VANISHED FROM HER SIGHT + THEN SHE WALKED BACK INTO THE HOUSE THE HAPPIEST GIRL IN ALL UTAH + CHAPTER THREE JOHN FERRIER TALKS WITH THE PROPHET + THREE WEEKS HAD PASSED SINCE JEFFERSON HOPE AND HIS COMRADES HAD DEPARTED FROM SALT LAKE CITY + JOHN FERRIER'S HEART WAS SORE WITHIN HIM WHEN HE THOUGHT OF THE YOUNG MAN'S RETURN AND OF THE IMPENDING LOSS OF HIS ADOPTED CHILD + YET HER BRIGHT AND HAPPY FACE RECONCILED HIM TO THE ARRANGEMENT MORE THAN ANY ARGUMENT COULD HAVE DONE + HE HAD ALWAYS DETERMINED DEEP DOWN IN HIS RESOLUTE HEART THAT NOTHING WOULD EVER INDUCE HIM TO ALLOW HIS DAUGHTER TO WED A MORMON + SUCH MARRIAGE HE REGARDED AS NO MARRIAGE AT ALL BUT AS A SHAME AND A DISGRACE + WHATEVER HE MIGHT THINK OF THE MORMON DOCTRINES UPON THAT ONE POINT HE WAS INFLEXIBLE + HE HAD TO SEAL HIS MOUTH ON THE SUBJECT HOWEVER FOR TO EXPRESS AN UNORTHODOX OPINION WAS A DANGEROUS MATTER IN THOSE DAYS IN THE LAND OF THE SAINTS + YES A DANGEROUS MATTER SO DANGEOUS THAT EVEN THE MOST SAINTLY DARED ONLY WHISPER THEIR RELIGIOUS OPINIONS WITH BATED BREATH LEST SOMETHING WHICH FELL FROM THEIR LIPS MIGHT BE MISCONSTRUED AND BRING DOWN A SWIFT RETRIBUTION UPON THEM + THE VICTIMS OF PERSECUTION HAD NOW TURNED PERSECUTORS ON THEIR OWN ACCOUNT AND PERSECUTORS OF THE MOST TERRIBLE DESCRIPTION + NOT THE INQUISITION OF SEVILLE NOR THE GERMAN VEHMGERICHT NOR THE SECRET SOCIETIES OF ITALY WERE EVER ABLE TO PUT A MORE FORMIDABLE MACHINERY IN MOTION THAN THAT WHICH CAST A CLOUD OVER THE STATE OF UTAH + ITS INVISIBILITY AND THE MYSTERY WHICH WAS ATTACHED TO IT MADE THIS ORGANIZATION DOUBLY TERRIBLE + IT APPEARED TO BE OMNISCIENT AND OMNIPOTENT AND YET WAS NEITHER SEEN NOR HEARD + THE MAN WHO HELD OUT AGAINST THE CHURCH VANISHED AWAY AND NONE KNEW WHITHER HE HAD GONE OR WHAT HAD BEFALLEN HIM + HIS WIFE AND HIS CHILDREN AWAITED HIM AT HOME BUT NO FATHER EVER RETURNED TO TELL THEM HOW HE HAD FARED AT THE HANDS OF HIS SECRET JUDGES + A RASH WORD OR A HASTY ACT WAS FOLLOWED BY ANNIHILATION AND YET NONE KNEW WHAT THE NATURE MIGHT BE OF THIS TERRIBLE POWER WHICH WAS SUSPENDED OVER THEM + NO WONDER THAT MEN WENT ABOUT IN FEAR AND TREMBLING AND THAT EVEN IN THE HEART OF THE WILDERNESS THEY DARED NOT WHISPER THE DOUBTS WHICH OPPRESSED THEM + AT FIRST THIS VAGUE AND TERRIBLE POWER WAS EXERCISED ONLY UPON THE RECALCITRANTS WHO HAVING EMBRACED THE MORMON FAITH WISHED AFTERWARDS TO PERVERT OR TO ABANDON IT + SOON HOWEVER IT TOOK A WIDER RANGE + THE SUPPLY OF ADULT WOMEN WAS RUNNING SHORT AND POLYGAMY WITHOUT A FEMALE POPULATION ON WHICH TO DRAW WAS A BARREN DOCTRINE INDEED + STRANGE RUMOURS BEGAN TO BE BANDIED ABOUT RUMOURS OF MURDERED IMMIGRANTS AND RIFLED CAMPS IN REGIONS WHERE INDIANS HAD NEVER BEEN SEEN + FRESH WOMEN APPEARED IN THE HAREMS OF THE ELDERS WOMEN WHO PINED AND WEPT AND BORE UPON THEIR FACES THE TRACES OF AN UNEXTINGUISHABLE HORROR + BELATED WANDERERS UPON THE MOUNTAINS SPOKE OF GANGS OF ARMED MEN MASKED STEALTHY AND NOISELESS WHO FLITTED BY THEM IN THE DARKNESS + THESE TALES AND RUMOURS TOOK SUBSTANCE AND SHAPE AND WERE CORROBORATED AND RECORROBORATED UNTIL THEY RESOLVED THEMSELVES INTO A DEFINITE NAME + TO THIS DAY IN THE LONELY RANCHES OF THE WEST THE NAME OF THE DANITE BAND OR THE AVENGING ANGELS IS A SINISTER AND AN ILL OMENED ONE + FULLER KNOWLEDGE OF THE ORGANIZATION WHICH PRODUCED SUCH TERRIBLE RESULTS SERVED TO INCREASE RATHER THAN TO LESSEN THE HORROR WHICH IT INSPIRED IN THE MINDS OF MEN + NONE KNEW WHO BELONGED TO THIS RUTHLESS SOCIETY + THE NAMES OF THE PARTICIPATORS IN THE DEEDS OF BLOOD AND VIOLENCE DONE UNDER THE NAME OF RELIGION WERE KEPT PROFOUNDLY SECRET + THE VERY FRIEND TO WHOM YOU COMMUNICATED YOUR MISGIVINGS AS TO THE PROPHET AND HIS MISSION MIGHT BE ONE OF THOSE WHO WOULD COME FORTH AT NIGHT WITH FIRE AND SWORD TO EXACT A TERRIBLE REPARATION + HENCE EVERY MAN FEARED HIS NEIGHBOUR AND NONE SPOKE OF THE THINGS WHICH WERE NEAREST HIS HEART + ONE FINE MORNING JOHN FERRIER WAS ABOUT TO SET OUT TO HIS WHEATFIELDS WHEN HE HEARD THE CLICK OF THE LATCH AND LOOKING THROUGH THE WINDOW SAW A STOUT SANDY HAIRED MIDDLE AGED MAN COMING UP THE PATHWAY + HIS HEART LEAPT TO HIS MOUTH FOR THIS WAS NONE OTHER THAN THE GREAT BRIGHAM YOUNG HIMSELF + FULL OF TREPIDATION FOR HE KNEW THAT SUCH A VISIT BODED HIM LITTLE GOOD FERRIER RAN TO THE DOOR TO GREET THE MORMON CHIEF + THE LATTER HOWEVER RECEIVED HIS SALUTATIONS COLDLY AND FOLLOWED HIM WITH A STERN FACE INTO THE SITTING ROOM + BROTHER FERRIER HE SAID TAKING A SEAT AND EYEING THE FARMER KEENLY FROM UNDER HIS LIGHT COLOURED EYELASHES THE TRUE BELIEVERS HAVE BEEN GOOD FRIENDS TO YOU + WE PICKED YOU UP WHEN YOU WERE STARVING IN THE DESERT WE SHARED OUR FOOD WITH YOU LED YOU SAFE TO THE CHOSEN VALLEY GAVE YOU A GOODLY SHARE OF LAND AND ALLOWED YOU TO WAX RICH UNDER OUR PROTECTION + IS NOT THIS SO + IT IS SO ANSWERED JOHN FERRIER + IN RETURN FOR ALL THIS WE ASKED BUT ONE CONDITION THAT WAS THAT YOU SHOULD EMBRACE THE TRUE FAITH AND CONFORM IN EVERY WAY TO ITS USAGES + THIS YOU PROMISED TO DO AND THIS IF COMMON REPORT SAYS TRULY YOU HAVE NEGLECTED + QUOTE AND HOW HAVE I NEGLECTED IT QUOTE ASKED FERRIER THROWING OUT HIS HANDS IN EXPOSTULATION + HAVE I NOT GIVEN TO THE COMMON FUND + HAVE I NOT ATTENDED AT THE TEMPLE + HAVE I NOT + WHERE ARE YOUR WIVES ASKED YOUNG LOOKING ROUND HIM + CALL THEM IN THAT I MAY GREET THEM + IT IS TRUE THAT I HAVE NOT MARRIED FERRIER ANSWERED + QUOTE BUT WOMEN WERE FEW AND THERE WERE MANY WHO HAD BETTER CLAIMS THAN I. I WAS NOT A LONELY MAN I HAD MY DAUGHTER TO ATTEND TO MY WANTS QUOTE + IT IS OF THAT DAUGHTER THAT I WOULD SPEAK TO YOU SAID THE LEADER OF THE MORMONS + SHE HAS GROWN TO BE THE FLOWER OF UTAH AND HAS FOUND FAVOUR IN THE EYES OF MANY WHO ARE HIGH IN THE LAND + JOHN FERRIER GROANED INTERNALLY + THERE ARE STORIES OF HER WHICH I WOULD FAIN DISBELIEVE STORIES THAT SHE IS SEALED TO SOME GENTILE + THIS MUST BE THE GOSSIP OF IDLE TONGUES + WHAT IS THE THIRTEENTH RULE IN THE CODE OF THE SAINTED JOSEPH SMITH + LET EVERY MAIDEN OF THE TRUE FAITH MARRY ONE OF THE ELECT FOR IF SHE WED A GENTILE SHE COMMITS A GRIEVOUS SIN + THIS BEING SO IT IS IMPOSSIBLE THAT YOU WHO PROFESS THE HOLY CREED SHOULD SUFFER YOUR DAUGHTER TO VIOLATE IT + JOHN FERRIER MADE NO ANSWER BUT HE PLAYED NERVOUSLY WITH HIS RIDING WHIP + UPON THIS ONE POINT YOUR WHOLE FAITH SHALL BE TESTED SO IT HAS BEEN DECIDED IN THE SACRED COUNCIL OF FOUR + THE GIRL IS YOUNG AND WE WOULD NOT HAVE HER WED GRAY HAIRS NEITHER WOULD WE DEPRIVE HER OF ALL CHOICE + WE ELDERS HAVE MANY HEIFERS BUT OUR CHILDREN MUST ALSO BE PROVIDED + STANGERSON HAS A SON AND DREBBER HAS A SON AND EITHER OF THEM WOULD GLADLY WELCOME YOUR DAUGHTER TO HIS HOUSE + LET HER CHOOSE BETWEEN THEM + THEY ARE YOUNG AND RICH AND OF THE TRUE FAITH + WHAT SAY YOU TO THAT QUOTE + FERRIER REMAINED SILENT FOR SOME LITTLE TIME WITH HIS BROWS KNITTED + YOU WIL GIVE US TIME HE SAID AT LAST + MY DAUGHTER IS VERY YOUNG SHE IS SCARCE OF AN AGE TO MARRY + SHE SHALL HAVE A MONTH TO CHOOSE SAID YOUNG RISING FROM HIS SEAT + AT THE END OF THAT TIME SHE SHALL GIVE HER ANSWER + HE WAS PASSING THROUGH THE DOOR WHEN HE TURNED WITH FLUSHED FACE AND FLASHING EYES + IT WERE BETTER FOR YOU JOHN FERRIER HE THUNDERED THAT YOU AND SHE WERE NOW LYING BLANCHED SKELETONS UPON THE SIERRA BLANCO THAN THAT YOU SHOULD PUT YOUR WEAK WILLS AGAINST THE ORDERS OF THE HOLY FOUR + WITH A THREATENING GESTURE OF HIS HAND HE TURNED FROM THE DOOR AND FERRIER HEARD HIS HEAVY STEPS SCRUNCHING ALONG THE SHINGLY PATH + HE WAS STILL SITTING WITH HIS ELBOW UPON HIS KNEE CONSIDERING HOW HE SHOULD BROACH THE MATTER TO HIS DAUGHTER WHEN A SOFT HAND WAS LAID UPON HIS AND LOOKING UP HE SAW HER STANDING BESIDE HIM + ONE GLANCE AT HER PALE FRIGHTENED FACE SHOWED HIM THAT SHE HAD HEARD WHAT HAD PASSED + QUOTE I COULD NOT HELP IT QUOTE SHE SAID IN ANSWER TO HIS LOOK + HIS VOICE RANG THROUGH THE HOUSE + OH FATHER FATHER WHAT SHALL WE DO + DON'T YOU SCARE YOURSELF HE ANSWERED DRAWING HER TO HIM AND PASSING HIS BROAD ROUGH HAND CARESSINGLY OVER HER CHESTNUT HAIR + WE'LL FIX IT UP SOMEHOW OR ANOTHER + YOU DON'T FIND YOUR FANCY KIND O' LESSENING FOR THIS CHAP DO YOU + A SOB AND A SQUEEZE OF HIS HAND WERE HER ONLY ANSWER + QUOTE NO OF COURSE NOT + I SHOULDN'T CARE TO HEAR YOU SAY YOU DID + HE'S A LIKELY LAD AND HE'S A CHRISTIAN WHICH IS MORC THAN THESE FOLKS HERE IN SPITE O' ALL THEIR PRAYING AND PREACHING + THERE'S A PARTY STARTING FOR NEVADA TO MORROW AND I'LL MANAGE TO SEND HIM A MESSAGE LETTING HIM KNOW THE HOLE WE ARE IN + IF I KNOW ANYTHING O' THAT YOUNG MAN HE'LL BE BACK WITH A SPEED THAT WOULD WHIP ELECTRO TELEGRAPHS + LUCY LAUGHED THROUGH HER TEARS AT HER FATHER'S DESCRIPTION + WHEN HE COMES HE WILL ADVISE US FOR THE BEST + BUT IT IS FOR YOU THAT I AM FRIGHTENED DEAR + ONE HEARS ONE HEARS SUCH DREADFUL STORIES ABOUT THOSE WHO OPPOSE THE PROPHET SOMETHING TERRIBLE ALWAYS HAPPENS TO THEM + BUT WE HAVEN'T OPPOSED HIM YET HER FATHER ANSWERED + IT WILL BE TIME TO LOOK OUT FOR SQUALLS WHEN WE DO + WE HAVE A CLEAR MONTH BEFORE US AT THE END OF THAT I GUESS WE HAD BEST SHIN OUT OF UTAH QUOTE + LEAVE UTAH + THAT'S ABOUT THE SIZE OF IT + BUT THE FARM + WE WILL RAISE AS MUCH AS WE CAN IN MONEY AND LET THE REST GO + TO TELL THE TRUTH LUCY IT ISN'T THE FIRST TIME I HAVE THOUGHT OF DOING IT + I DON'T CARE ABOUT KNUCKLING UNDER TO ANY MAN AS THESE FOLK DO TO THEIR DAMED PROPHET + I'M A FREEBORN AMERICAN AND IT'S ALL NEW TO ME + GUESS I'M TOO OLD TO LEARN + IF HE COMES BROWSING ABOUT THIS FARM HE MIGHT CHANCE TO RUN UP AGAINST A CHARGE OF BUCKSHOT TRAVELLING IN THE OPPOSITE DIRECTION + QUOTE BUT THEY WON'T LET US LEAVE QUOTE HIS DAUGHTER OBJECTED + WAIT TILL JEFFERSON COMES AND WE'LL SOON MANAGE THAT + IN THE MEANTIME DON'T YOU FRET YOURSELF MY DEARIE AND DON'T GET YOUR EYES SWELLED UP ELSE HE'LL BE WALKING INTO ME WHEN HE SEES YOU + THERE'S NOTHING TO BE AFEARED ABOUT AND THERE'S NO DANGER AT ALL + JOHN FERRIER UTTERED THESE CONSOLING REMARKS IN A VERY CONFIDENT TONE BUT SHE COULD NOT HELP OBSERVING THAT HE PAID UNUSUAL CARE TO THE FASTENING OF THE DOORS THAT NIGHT AND THAT HE CAREFULLY CLEANED AND LOADED THE RUSTY OLD SHOT GUN WHICH HUNG UPON THE WALL OF HIS BEDROOM + CHAPTER FOUR A FLIGHT FOR LIFE + ZERO N. THE MORNIHG WHICH FOLLOWED HIS INTERVIEW WITH THE MORMON PROPHET JOHN FERRIER WENT IN TO SALT LAKE CITY AND HAVING FOUND HIS ACQUAINTANCE WHO WAS BOUND FOR THE NEVADA MOUNTAINS HE ENTRUSTED HIM WITH HIS MESSAGE TO JEFFERSON HOPE + IN IT HE TOLD THE YOUNG MAN OF THE IMMINENT DANGER WHICH THREATENED THEM AND HOW NECESSARY IT WAS THAT HE SHOULD RETURN + HAVING DONE THUS HE FELT EASIER IN HIS MIND AND RETURNED HOME WITH A LIGHTER HEART + AS HE APPROACHED HIS FARM HE WAS SURPRISED TO SEE A HORSE HITCHED TO EACH OF THE POSTS OF THE GATE + STILL MORE SURPRISED WAS HE ON THE ENTERING TO FIND TWO YOUNG MEN IN POSSESSION OF HIS SITTING ROOM + ONE WITH A LONG PALE FACE WAS LEANING BACK IN THE ROCKING CHAIR WITH HIS FEET COCKED UP UPON THE STOVE + THE OTHER A BULL NECKED YOUTH WITH COARSE BLOATED FEATURES WAS STANDING IN FRONT OF THE WINDOW WITH HIS HANDS IN HIS POCKETS WHISTLING A POPULAR HYMN + BOTH OF THEM NODDED TO FERRIER AS HE ENTERED AND THE ONE IN THE ROCKING CHAIR COMMENCED THE CONVERSATION + MAYBE YOU DON'T KNOW US HE SAID + THIS HERE IS THE SON OF ELDER DREBBER AND I'M JOSEPH STANGERSON WHO TRAVELLED WITH YOU IN THE DESERT WHEN THE LORD STRETCHED OUT HIS HAND AND GATHERED YOU INTO THE TRUE FOLD + AS HE WILL ALL THE NATIONS IN HIS OWN GOOD TIME SAID THE OTHER IN A NASAL VOICE HE GRINDETH SLOWLY BUT EXCEEDING SMALL + JOHN FERRIER BOWED COLDLY + HE HAD GUESSED WHO HIS VISITORS WERE + QUOTE WE HAVE COME QUOTE CONTINUED STANGERSON QUOTE AT THE ADVICE OF OUR FATHERS TO SOLICIT THE HAND OF YOUR DAUGHTER FOR WHICHEVER OF US MAY SEEM GOOD TO YOU AND TO HER + AS I HAVE BUT FOUR WIVES AND BROTHER DREBBER HERE HAS SEVEN IT APPEARS TO ME THAT MY CLAIM IS THE STRONGER ONE + NAY NAY BROTHER STANGERSON CRIED THE OTHER THE QUESTION IS NOT HOW MANY WIVES WE HAVE BUT HOW MANY WE CAN KEEP + MY FATHER HAS NOW GIVEN OVER HIS MILLS TO ME AND I AM THE RICHER MAN + BUT MY PROSPECTS ARE BETTER SAID THE OTHER WARMLY + WHEN THE LORD REMOVES MY FATHER I SHALL HAVE HIS TANNING YARD AND HIS LEATHER FACTORY + THEN I AM YOUR ELDER AND AM HIGHER IN THE CHURCH QUOTE + IT WILL BE FOR THE MAIDEN TO DECIDE REJOINED YOUNG DREBBER SMIRKING AT HIS OWN REFLECTION IN THE GLASS + WE WILL LEAVE IT ALL TO HER DECISION + DURING THIS DIALOGUE JOHN FERRIER HAD STOOD FUMING IN THE DOORWAY HARDLY ABLE TO KEEP HIS RIDING WHIP FROM THE BACKS OF HIS TWO VISITORS + LOOK HERE HE SAID AT LAST STRIDING UP TO THEM WHEN MY DAUGHTER SUMMONS YOU YOU CAN COME BUT UNTIL THEN I DON'T WANT TO SEE YOUR FACES AGAIN + THE TWO YOUNG MORMONS STARED AT HIM IN AMAZEMENT + IN THEIR EYES THIS COMPETITION BETWEEN THEM FOR THE MAIDEN'S HAND WAS THE HIGHEST OF HONOURS BOTH TO HER AND HER FATHER + THERE ARE TWO WAYS OUT OF THE ROOM CRIED FERRIER THERE IS THE DOOR AND THERE IS THE WINDOW + WHICH DO YOU CARE TO USE + HIS BROWN FACE LOOKED SO SAVAGE AND HIS GAUNT HANDS SO THREATENING THAT HIS VISITORS SPRANG TO THEIR FEET AND BEAT A HURRIED RETREAT + THE OLD FARMER FOLLOWED THEM TO THE DOOR + QUOTE LET ME KNOW WHEN YOU HAVE SETTLED WHICH IT IS TO BE QUOTE HE SAID SARDONICALLY + YOU SHALL SMART FOR THIS + STANGERSON CRIED WHITE WITH RAGE + YOU HAVE DEFIED THE PROPHET AND THE COUNCIL OF FOUR + YOU SHALL RUE IT TO THE END OF YOUR DAYS + THE HAND OF THE LORD SHALL BE HEAVY UPON YOU CRIED YOUNG DREBBER HE WILL ARISE AND SMITE YOU + THEN I'LL START THE SMITING EXCLAIMED FERRIER FURIOUSLY AND WOULD HAVE RUSHED UPSTAIRS FOR HIS GUN HAD NOT LUCY SEIZED HIM BY THE ARM AND RESTRAINED HIM + BEFORE HE COULD ESCAPE FROM HER THE CLATTER OF HORSES' HOOFS TOLD HIM THAT THEY WERE BEYOND HIS REACH + QUOTE THE YOUNG CANTING RASCALS QUOTE HE EXCLAIMED WIPING THE PERSPIRATION FROM HIS FOREHEAD QUOTE I WOULD SOONER SEE YOU IN YOUR GRAVE MY GIRL THAN THE WIFE OF EITHER OF THEM QUOTE + AND SO SHOULD I FATHER SHE ANSWERED WITH SPIRIT BUT JEFFERSON WILL SOON BE HERE + YES + IT WILL NOT BE LONG BEFORE HE COMES + THE SOONER THE BETTER FOR WE DO NOT KNOW WHAT THEIR NEXT MOVE MAY BE + IT WAS INDEED HIGH TIME THAT SOMEONE CAPABLE OF GIVING ADVICE AND HELP SHOULD COME TO THE AID OF THE STURDY OLD FARMER AND HIS ADOPTED DAUGHTER + IN THE WHOLE HISTORY OF THE SETTLEMENT THERE HAD NEVER BEEN SUCH A CASE OF RANK DISOBEDIENCE TO THE AUTHORITY OF THE ELDERS + IF MINOR ERRORS WERE PUNISHED SO STERNLY WHAT WOULD BE THE FATE OF THIS ARCH REBEL + FERRIER KNEW THAT HIS WEALTH AND POSITION WOULD BE OF NO AVAIL TO HIM + OTHERS AS WELL KNOWN AND AS RICH AS HIMSELF HAD BEEN SPIRITED AWAY BEFORE NOW AND THEIR GOODS GIVEN OVER TO THE CHURCH + HE WAS A BRAVE MAN BUT HE TREMBLED AT THE VAGUE SHADOWY TERRORS WHICH HUNG OVER HIM + ANY KNOWN DANGER HE COULD FACE WITH A FIRM LIP BUT THIS SUSPENSE WAS UNNERVING + HE CONCEALED HIS FEARS FROM HIS DAUGHTER HOWEVER AND AFFECTED TO MAKE LIGHT OF THE WHOLE MATTER THOUGH SHE WITH THE KEEN EYE OF LOVE SAW PLAINLY THAT HE WAS ILL AT EASE + HE EXPECTED THAT HE WOULD RECEIVE SOME MESSAGE OR REMONSTRANCE FROM YOUNG AS TO HIS CONDUCT AND HE WAS NOT MISTAKEN THOUGH IT CAME IN AN UNLOOKED FOR MANNER + UPON RISING NEXT MORNING HE FOUND TO HIS SURPRISE A SMALL SQUARE OF PAPER PINNED ON TO THE COVERLET OF HIS BED JUST OVER HIS CHEST + ON IT WAS PRINTED IN BOLD STRAGGLING LETTERS + THE DASH WAS MORE FEAR INSPIRING THAN ANY THREAT COULD HAVE BEEN + HOW THIS WARNING CAME INTO HIS ROOM PUZZLED JOHN FERRIER SORELY FOR HIS SERVANTS SLEPT IN AN OUTHOUSE AND THE DOORS AND WINDOWS HAD ALL BEEN SECURED + HE CRUMPLED THE PAPER UP AND SAID NOTHING TO HIS DAUGHTER BUT THE INCIDENT STRUCK A CHILL INTO HIS HEART + THE TWENTY NINE DAYS WERE EVIDENTLY THE BALANCE OF THE MONTH WHICH YOUNG HAD PROMISED + WHAT STRENGTH OR COURAGE COULD AVAIL AGAINST AN ENEMY ARMED WITH SUCH MYSTERIOUS POWERS + THE HAND WHICH FASTENED THAT PIN MIGHT HAVE STRUCK HIM TO THE HEART AND HE COULD NEVER HAVE KNOWN WHO HAD SLAIN HIM + STILL MORE SHAKEN WAS HE NEXT MORNING + THEY HAD SAT DOWN TO THEIR BREAKFAST WHEN LUCY WITH A CRY OF SURPRISE POINTED UPWARDS + IN THE CENTRE OF THE CEILING WAS SCRAWLED WITH A BURNED STICK APPARENTLY THE NUMBER TWENTY EIGHT + TO HIS DAUGHTER IT WAS UNINTELLIGIBLE AND HE DID NOT ENLIGHTEN HER + THAT NIGHT HE SAT UP WITH HIS GUN AND KEPT WATCH AND WARD + HE SAW AND HE HEARD NOTHING AND YET IN THE MORNING A GREAT TWENTY SEVEN HAD BEEN PAINTED UPON THE OUTSIDE OF HIS DOOR + THUS DAY FOLLOWED DAY AND AS SURE AS MORNING CAME HE FOUND THAT HIS UNSEEN ENEMIES HAD KEPT THEIR REGISTER AND HAD MARKED UP IN SOME CONSPICUOUS POSITION HOW MANY DAYS WERE STILL LEFT TO HIM OUT OF THE MONTH OF GRACE + SOMETIMES THE FATAL NUMBERS APPEARED UPON THE WALLS SOMETIMES UPON THE FLOORS OCCASIONALLY THEY WERE ON SMALL PLACARDS STUCK UPON THE GARDEN GATE OR THE RAILINGS + WITH ALL HIS VIGILANCE JOHN FERRIER COULD NOT DISCOVER WHENCE THESE DAILY WARNINGS PROCEEDED + A HORROR WHICH WAS ALMOST SUPERSTITIOUS CAME UPON HIM AT THE SIGHT OF THEM + HE BECAME HAGGARD AND RESTLESS AND HIS EYES HAD THE TROUBLED LOOK OF SOME HUNTED CREATURE + HE HAD BUT ONE HOPE IN LIFE NOW AND THAT WAS FOR THE ARRIVAL OF THE YOUNG HUNTER FROM NEVADA + TWENTY HAD CHANGED TO FIFTEEN AND FIFTEEN TO TEN BUT THERE WAS NO NEWS OF THE ABSENTEE + ONE BY ONE THE NUMBERS DWINDLED DOWN AND STILL THERE CAME NO SIGN OF HIM + WHENEVER A HORSEMAN CLATTERED DOWN THE ROAD OR A DRIVER SHOUTED AT HIS TEAM THE OLD FARMER HURRIED TO THE GATE THINKING THAT HELP HAD ARRIVED AT LAST + AT LAST WHEN HE SAW FIVE GIVE WAY TO FOUR AND THAT AGAIN TO THREE HE LOST HEART AND ABANDONED ALL HOPE OF ESCAPE + SINGLEHANDED AND WITH HIS LIMITED KNOWLEDGE OF THE MOUNTAINS WHICH SURROUNDED THE SETTLEMENT HE KNEW THAT HE WAS POWERLESS + THE MORE FREQUENTED ROADS WERE STRICTLY WATCHED AND GUARDED AND NONE COULD PASS ALONG THEM WITHOUT AN ORDER FROM THE COUNCIL + TURN WHICH WAY HE WOULD THERE APPEARED TO BE NO AVOIDING THE BLOW WHICH HUNG OVER HIM + YET THE OLD MAN NEVER WAVERED IN HIS RESOLUTION TO PART WITH LIFE ITSELF BEFORE HE CONSENTED TO WHAT HE REGARDED AS HIS DAUGHTER'S DISHONOUR + HE WAS SITTING ALONE ONE EVENING PONDERING DEEPLY OVER HIS TROUBLES AND SEARCHING VAINLY FOR SOME WAY OUT OF THEM + THAT MORNING HAD SHOWN THE FIGURE TWO UPON THE WALL OF HIS HOUSE AND THE NEXT DAY WOULD BE THE LAST OF THE ALLOTTED TIME WHAT WAS TO HAPPEN THEN + ALL MANNER OF VAGUE AND TERRIBLE FANCIES FILLED HIS IMAGINATION + AND HIS DAUGHTER WHAT WAS TO BECOME OF HER AFTER HE WAS GONE + WAS THERE NO ESCAPE FROM THE INVISIBLE NETWORK WHICH WAS DRAWN ALL ROUND THEM + HE SANK HIS HEAD UPON THE TABLE AND SOBBED AT THE THOUGHT OF HIS OWN IMPOTENCE + WHAT WAS THAT + IN THE SILENCE HE HEARD A GENTLE SCRATCHING SOUND LOW BUT VERY DISTINCT IN THE QUIET OF THE NIGHT + IT CAME FROM THE DOOR OF THE HOUSE + FERRIER CREPT INTO THE HALL AND LISTENED INTENTLY + THERE WAS A PAUSE FOR A FEW MOMENTS AND THEN THE LOW INSIDIOUS SOUND WAS REPEATED + SOMEONE WAS EVIDENTLY TAPPING VERY GENTLY UPON ONE OF THE PANELS OF THE DOOR + WAS IT SOME MIDNIGHT ASSASSIN WHO HAD COME TO CARRY OUT THE MURDEROUS ORDERS OF THE SECRET TRIBUNAL + OR WAS IT SOME AGENT WHO WAS MARKING UP THAT THE LAST DAY OF GRACE HAD ARRIVED + JOHN FERRIER FELT THAT INSTANT DEATH WOULD BE BETTER THAN THE SUSPENSE WHICH SHOOK HIS NERVES AND CHILLED HIS HEART + SPRINGING FORWARD HE DREW THE BOLT AND THREW THE DOOR OPEN + OUTSIDE ALL WAS CALM AND QUIET + THE NIGHT WAS FINE AND THE STARS WERE TWINKLING BRIGHTLY OVERHEAD + THE LITTLE FRONT GARDEN LAY BEFORE THE FARMER'S EYES BOUNDED BY THE FENCE AND GATE BUT NEITHER THERE NOR ON THE ROAD WAS ANY HUMAN BEING TO BE SEEN + WITH A SIGH OF RELIEF FERRIER LOOKED TO RIGHT AND TO LEFT UNTIL HAPPENING TO GLANCE STRAIGHT DOWN AT HIS OWN FEET HE SAW TO HIS ASTONISHMENT A MAN LYING FLAT UPON HIS FACE UPON THE GROUND WITH ARMS AND LEGS ALL ASPRAWL + SO UNNERVED WAS HE AT THE SIGHT THAT HE LEANED UP AGAINST THE WALL WITH HIS HAND TO HIS THROAT TO STIFLE HIS INCLINATION TO CALL OUT + HIS FIRST THOUGHT WAS THAT THE PROSTRATE FIGURE WAS THAT OF SOME WOUNDED OR DYING MAN BUT AS HE WATCHED IT HE SAW IT WRITHE ALONG THE GROUND AND INTO THE HALL WITH THE RAPIDITY AND NOISELESSNESS OF A SERPENT + ONCE WITHIN THE HOUSE THE MAN SPRANG TO HIS FEET CLOSED THE DOOR AND REVEALED TO THE ASTONISHED FARMER THE FIERCE FACE AND RESOLUTE EXPRESSION OF JEFFERSON HOPE + GOOD GOD GASPED JOHN FERRIER + HOW YOU SCARED ME + WHATEVER MADE YOU COME IN LIKE THAT QUOTE + GIVE ME FOOD THE OTHER SAID HOARSELY + I HAVE HAD NO TIME FOR BITE OR SUP FOR EIGHT AND FORTY HOURS + HE FLUNG HIMSELF UPON THE COLD MEAT AND BREAD WHICH WERE STILL LYING UPON THE TABLE FROM HIS HOST'S SUPPER AND DEVOURED IT VORACIOUSLY + DOES LUCY BEAR UP WELL HE ASKED WHEN HE HAD SATISFIED HIS HUNGER + YES + SHE DOES NOT KNOW THE DANGER HER FATHER ANSWERED + QUOTE THAT IS WELL + THE HOUSE IS WATCHED ON EVERY SIDE + THAT IS WHY I CRAWLED MY WAY UP TO IT + THEY MAY BE DARNED SHARP BUT THEY'RE NOT QUITE SHARP ENOUGH TO CATCH A WASHOE HUNTER + JOHN FERRIER FELT A DIFFERENT MAN NOW THAT HE REALIZED THAT HE HAD A DEVOTED ALLY + HE SEIZED THE YOUNG MAN'S LEATHERY HAND AND WRUNG IT CORDIALLY + YOU'RE A MAN TO BE PROUD OF HE SAID + THERE ARE NOT MANY WHO WOULD COME TO SHARE OUR DANGER AND OUR TROUBLES + YOU'VE HIT IT THERE PARD THE YOUNG HUNTER ANSWERED + I HAVE A RESPECT FOR YOU BUT IF YOU WERE ALONE IN THIS BUSINESS I'D THINK TWICE BEFORE I PUT MY HEAD INTO SUCH A HORNET'S NEST + IT'S LUCY THAT BRINGS ME HERE AND BEFORE HARM COMES ON HER I GUESS THERE WILL BE ONE LESS O' THE HOPE FAMILY IN UTAH QUOTE + WHAT ARE WE TO DO + TO MORROW IS YOUR LAST DAY AND UNLESS YOU ACT TO NIGHT YOU ARE LOST + I HAVE A MULE AND TWO HORSES WAITING IN THE EAGLE RAVINE + HOW MUCH MONEY HAVE YOU + TWO THOUSAND DOLLARS IN GOLD AND FIVE IN NOTES + THAT WILL DO + I HAVE AS MUCH MORE TO ADD TO IT + WE MUST PUSH FOR CARSON CITY THROUGH THE MOUNTAINS + YOU HAD BEST WAKE LUCY + IT IS AS WELL THAT THE SERVANTS DO NOT SLEEP IN THE HOUSE QUOTE + WHILE FERRIER WAS ABSENT PREPARING HIS DAUGHTER FOR THE APPROACHING JOURNEY JEFFERSON HOPE PACKED ALL THE EATABLES THAT HE COULD FIND INTO A SMALL PARCEL AND FILLED A STONEWARE JAR WITH WATER FOR HE KNEW BY EXPERIENCE THAT THE MOUNTAIN WELLS WERE FEW AND FAR BETWEEN + HE HAD HARDLY COMPLETED HIS ARRANGEMENTS BEFORE THE FARMER RETURNED WITH HIS DAUGHTER ALL DRESSED AND READY FOR A START + THE GREETING BETWEEN THE LOVERS WAS WARM BUT BRIEF FOR MINUTES WERE PRECIOUS AND THERE WAS MUCH TO BE DONE + WE MUST MAKE OUR START AT ONCE SAID JEFFERSON HOPE SPEAKING IN A LOW BUT RESOLUTE VOICE LIKE ONE WHO REALIZES THE GREATNESS OF THE PERIL BUT HAS STEELED HIS HEART TO MEET IT + THE FRONT AND BACK ENTRANCES ARE WATCHED BUT WITH CAUTION WE MAY GET AWAY THROUGH THE SIDE WINDOW AND ACROSS THE FIELDS + ONCE ON THE ROAD WE ARE ONLY TWO MILES FROM THE RAVINE WHERE THE HORSES ARE WAITING + BY DAYBREAK WE SHOULD BE HALFWAY THROUGH THE MOUNTAINS + WHAT IF WE ARE STOPPED ASKED FERRIER + HOPE SLAPPED THE REVOLVER BUTT WHICH PROTRUDED FROM THE FRONT OF HIS TUNIC + IF THEY ARE TOO MANY FOR US WE SHALL TAKE TWO OR THREE OF THEM WITH US HE SAID WITH A SINISTER SMILE + THE LIGHTS INSIDE THE HOUSE HAD ALL BEEN EXTINGUISHED AND FROM THE DARKENED WINDOW FERRIER PEERED OVER THE FIELDS WHICH HAD BEEN HIS OWN AND WHICH HE WAS NOW ABOUT TO ABANDON FOREVER + HE HAD LONG NERVED HIMSELF TO THE SACRIFICE HOWEVER AND THE THOUGHT OF THE HONOUR AND HAPPINESS OF HIS DAUGHTER OUTWEIGHED ANY REGRET AT HIS RUINED FORTUNES + ALL LOOKED SO PEACEFUL AND HAPPY THE RUSTLING TREES AND THE BROAD SILENT STRETCH OF GRAINLAND THAT IT WAS DIFFICULT TO REALIZE THAT THE SPIRIT OF MURDER LURKED THROUGH IT ALL + YET THE WHITE FACE AND SET EXPRESSION OF THE YOUNG HUNTER SHOWED THAT IN HIS APPROACH TO THEHOUSE HE HAD SEEN ENOUGH TO SATISFY HIM UPON THAT HEAD + FERRIER CARRIED THE BAG OF GOLD AND NOTES JEFFERSON HOPE HAD THE SCANTY PROVISIONS AND WATER WHILE LUCY HAD A SMALL BUNDLE CONTAINING A FEW OF HER MORE VALUED POSSESSIONS + OPENING THE WINDOW VERY SLOWLY AND CAREFULLY THEY WAITED UNTIL A DARK CLOUD HAD SOMEWHAT OBSCURED THE NIGHT AND THEN ONE BY ONE PASSED THROUGH INTO THE LITTLE GARDEN + WITH BATED BREATH AND CROUCHING FIGURES THEY STUMBLED ACROSS IT AND GAINED THE SHELTER OF THE HEDGE WHICH THEY SKIRTED UNTIL THEY CAME TO THE GAP WHICH OPENED INTO THE CORNFIELD + THEY HAD JUST REACHED THIS POINT WHEN THE YOUNG MAN SEIZED HIS TWO COMPANIONS AND DRAGGED THEM DOWN INTO THE SHADOW WHERE THEY LAY SILENT AND TREMBLING + IT WAS AS WELL THAT HIS PRAIRIE TRAINING HAD GIVEN JEFFERSON HOPE THE EARS OF A LYNX + HE AND HIS FRIENDS HAD HARDLY CROUCHED DOWN BEFORE THE MELANCHOLY HOOTING OF A MOUNTAIN OWL WAS HEARD WITHIN A FEW YARDS OF THEM WHICH WAS IMMEDIATELY ANSWERED BY ANOTHER HOOT AT A SMALL DISTANCE + AT THE SAME MOMENT A VAGUE SHADOWY FIGURE EMERGED FROM THE GAP FOR WHICH THEY HAD BEEN MAKING AND UTTERED THE PLAINTIVE SIGNAL CRY AGAIN ON WHICH A SECOND MAN APPEARED OUT OF THE OBSCURITY + QUOTE TO MORROW AT MIDNIGHT QUOTE SAID THE FIRST WHO APPEARED TO BE IN AUTHORITY + WHEN THE WHIPPOORWILL CALLS THREE TIMES + IT IS WELL RETURNED THE OTHER + SHALL I TELL BROTHER DREBBER + PASS IT ON TO HIM AND FROM HIM TO THE OTHERS + NINE TO SEVEN + QUOTE SEVEN TO FIVE QUOTE REPEATED THE OTHER AND THE TWO FIGURES FLITTED AWAY IN DIFFERENT DIRECTIONS + THEIR CONCLUDING WORDS HAD EVIDENTLY BEEN SOME FORM OF SIGN AND COUNTERSIGN + THE INSTANT THAT THEIR FOOTSTEPS HAD DIED AWAY IN THE DISTANCE JEFFERSON HOPE SPRANG TO HIS FEET AND HELPING HIS COMPANIONS THROUGH THE GAP LED THE WAY ACROSS THE FIELDS AT THE TOP OF HIS SPEED SUPPORTING AND HALF CARRYING THE GIRL WHEN HER STRENGTH APPEARED TO FAIL HER + HURRY ON HURRY ON HE GASPED FROM TIME TO TIME + WE ARE THROUGH THE LINE OF SENTINELS + EVERYTHING DEPENDS ON SPEED + HURRY ON + ONCE ON THE HIGH ROAD THEY MADE RAPID PROGRESS + ONLY ONCE DID THEY MEET ANYONE AND THEN THEY MANAGED TO SLIP INTO A FIELD AND SO AVOID RECOGNITION + BEFORE REACHING THE TOWN THE HUNTER BRANCHED AWAY INTO A RUGGED AND NARROW FOOTPATH WHICH LED TO THE MOUNTAINS + TWO DARK JAGGED PEAKS LOOMED ABOVE THEM THROUGH THE DARKNESS AND THE DEFILE WHICH LED BETWEEN THEM WAS THE EAGLE CANON IN WHICH THE HORSES WERE AWAITING THEM + WITH UNERRING INSTINCT JEFFERSON HOPE PICKED HIS WAY AMONG THE GREAT BOULDERS AND ALONG THE BED OF A DRIED UP WATER COURSE UNTIL HE CAME TO THE RETIRED CORNER SCREENED WITH ROCKS WHERE THE FAITHFUL ANIMALS HAD BEEN PICKETED + THE GIRL WAS PLACED UPON THE MULE AND OLD FERRIER UPON ONE OF THE HORSES WITH HIS MONEY BAG WHILE JEFFERSON HOPE LED THE OTHER ALONG THE PRECIPITOUS AND DANGEROUS PATH + IT WAS A BEWILDERING ROUTE FOR ANYONE WHO WAS NOT ACCUSTOMED TO FACE NATURE IN HER WILDEST MOODS + ON THE ONE SIDE A GREAT CRAG TOWERED UP A THOUSAND FEET OR MORE BLACK STERN AND MENACING WITH LONG BASALTIC COLUMNS UPON ITS RUGGED SURFACE LIKE THE RIBS OF SOME PETRIFIED MONSTER + ON THE OTHER HAND A WILD CHAOS OF BOULDERS AND DEBRIS MADE ALL ADVANCE IMPOSSIBLE + BETWEEN THE TWO RAN THE IRREGULAR TRACKS SO NARROW IN PLACES THAT THEY HAD TO TRAVEL IN INDIAN FILE AND SO ROUGH THAT ONLY PRACTISED RIDERS COULD HAVE TRAVERSED IT AT ALL + YET IN SPITE OF ALL DANGERS AND DIFFICULTIES THE HEARTS OF THE FUGITIVES WERE LIGHT WITHIN THEM FOR EVERY STEP INCREASED THE DISTANCE BETWEEN THEM AND THE TERRIBLE DESPOTISM FROM WHICH THEY WERE FLYING + THEY SOON HAD A PROOF HOWEVER THAT THEY WERE STILL WITHIN THE JURISDICTION OF THE SAINTS + THEY HAD REACHED THE VERY WILDEST AND MOST DESOLATE PORTION OF THE PASS WHEN THE GIRL GAVE A STARTLED CRY AND POINTED UPWARDS + ON A ROCK WHICH OVERLOOKED THE TRACK SHOWING OUT DARK AND PLAIN AGAINST THE SKY THERE STOOD A SOLITARY SENTINEL + HE SAW THEM AS SOON AS THEY PERCEIVED HIM AND HIS MILITARY CHALLENGE OF WHO GOES THERE RANG THROUGH THE SILENT RAVINE + TRAVELLERS FOR NEVADA SAID JEFFERSON HOPE WITH HIS HAND UPON THE RIFLE WHICH HUNG BY HIS SADDLE + THEY COULD SEE THE LONELY WATCHER FINGERING HIS GUN AND PEERING DOWN AT THEM AS IF DISSATISFIED AT THEIR REPLY + QUOTE BY WHOSE PERMISSION QUOTE HE ASKED + THE HOLY FOUR ANSWERED FERRIER + HIS MORMON EXPERIENCES HAD TAUGHT HIM THAT THAT WAS THE HIGHEST AUTHORITY TO WHICH HE COULD REFER + NINE TO SEVEN CRIED THE SENTINEL + SEVEN TO FIVE RETURNED JEFFERSON HOPE PROMPTLY REMEMBERING THE COUNTERSIGN WHICH HE HAD HEARD IN THE GARDEN + PASS AND THE LORD GO WITH YOU SAID THE VOICE FROM ABOVE + BEYOND HIS POST THE PATH BROADENED OUT AND THE HORSES WERE ABLE TO BREAK INTO A TROT + LOOKING BACK THEY COULD SEE THE SOLITARY WATCHER LEANING UPON HIS GUN AND KNEW THAT THEY. HAD PASSED THE OUTLYING POST OF THE CHOSEN PEOPLE AND THAT FREEDOM LAY BEFORE THEM + CHAPTER FIVE THE AVENGING ANGELS + ALL NIGHT THEIR COURSE LAY THROUGH INTRICATE DEFILES AND OVER IRREGULAR AND ROCKSTREWN PATHS + MORE THAN ONCE THEY LOST THEIR WAY BUT HOPE'S INTIMATE KNOWLEDGE OF THE MOUNTAINS ENABLED THEM TO REGAIN THE TRACK ONCE MORE + WHEN MORNING BROKE A SCENE OF MARVELLOUS THOUGH SAVAGE BEAUTY LAY BEFORE THEM + IN EVERY DIRECTION THE GREAT SNOW CAPPED PEAKS HEMMED THEM IN PEEPING OVER EACH OTHER'S SHOULDERS TO THE FAR HORIZON + SO STEEP WERE THE ROCKY BANKS ON EITHER SIDE OF THEM THAT THE LARCH AND THE PINE SEEMED TO BE SUSPENDED OVER THEIR HEADS AND TO NEED ONLY A GUST OF WIND TO COME HURTLING DOWN UPON THEM + NOR WAS THE FEAR ENTIRELY AN ILLUSION FOR THE BARREN VALLEY WAS THICKLY STREWN WITH TREES AND BOULDERS WHICH HAD FALLEN IN A SIMILAR MANNER + EVEN AS THEY PASSED A GREAT ROCK CAME THUNDERING DOWN WITH A HOARSE RATTLE WHICH WOKE THE ECHOES IN THE SILENT GORGES AND STARTLED THE WEARY HORSES INTO A GALLOP + AS THE SUN ROSE SLOWLY ABOVE THE EASTERN HORIZON THE CAPS OF THE GREAT MOUNTAINS LIT UP ONE AFTER THE OTHER LIKE LAMPS AT A FESTIVAL UNTIL THEY WERE ALL RUDDY AND GLOWING + THE MAGNIFICENT SPECTACLE CHEERED THE HEARTS OF THE THREE FUGITIVES AND GAVE THEM FRESH ENERGY + AT A WILD TORRENT WHICH SWEPT OUT OF A RAVINE THEY CALLED A HALT AND WATERED THEIR HORSES WHILE THEY PARTOOK OF A HASTY BREAKFAST + LUCY AND HER FATHER WOULD FAIN HAVE RESTED LONGER BUT JEFFERSON HOPE WAS INEXORABLE + THEY WILL BE UPON OUR TRACK BY THIS TIME HE SAID + QUOTE EVERYTHING DEPENDS UPON OUR SPEED + ONCE SAFE IN CARSON WE MAY REST FOR THE REMAINDER OF OUR LIVES + DURING THE WHOLE OF THAT DAY THEY STRUGGLED ON THROUGH THE DEFILES AND BY EVENING THEY CALCULATED THAT THEY WERE MORE THAN THIRTY MILES FROM THEIR ENEMIES + AT NIGHT TIME THEY CHOSE THE BASE OF A BEETLING CRAG WHERE THE ROCKS OFFERED SOME PROTECTION FROM THE CHILL WIND AND THERE HUDDLED TOGETHER FOR WARMTH THEY ENJOYED A FEW HOURS' SLEEP + BEFORE DAYBREAK HOWEVER THEY WERE UP AND ON THEIR WAY ONCE MORE + THEY HAD SEEN NO SIGNS OF ANY PURSUERS AND JEFFERSON HOPE BEGAN TO THINK THAT THEY WERE FAIRLY OUT OF THE REACH OF THE TERRIBLE ORGANIZATION WHOSE ENMITY THEY HAD INCURRED + HE LITTLE KNEW HOW FAR THAT IRON GRASP COULD REACH OR HOW SOON IT WAS TO CLOSE UPON THEM AND CRUSH THEM + ABOUT THE MIDDLE OF THE SECOND DAY OF THEIR FLIGHT THEIR SCANTY STORE OF PROVISIONS BEGAN TO RUN OUT + THIS GAVE THE HUNTER LITTLE UNEASINESS HOWEVER FOR THERE WAS GAME TO BE HAD AMONG THE MOUNTAINS AND HE HAD FREQUENTLY BEFORE HAD TO DEPEND UPON HIS RIFLE FOR THE NEEDS OF LIFE + CHOOSING A SHELTERED NOOK HE PILED TOGETHER A FEW DRIED BRANCHES AND MADE A BLAZING FIRE AT WHICH HIS COMPANIONS MIGHT WARM THEMSELVES FOR THEY WERE NOW NEARLY FIVE THOUSAND FEET ABOVE THE SEA LEVEL AND THE AIR WAS BITTER AND KEEN + HAVING TETHERED THE HORSES AND BID LUCY ADIEU HE THREW HIS GUN OVER HIS SHOULDER AND SET OUT IN SEARCH OF WHATEVER CHANCE MIGHT THROW IN HIS WAY + LOOKING BACK HE SAW THE OLD MAN AND THE YOUNG GIRL CROUCHING OVER THE BLAZING FIRE WHILE THE THREE ANIMALS STOOD MOTIONLESS IN THE BACKGROUND + THEN THE INTERVENING ROCKS HID THEM FROM HIS VIEW + HE WALKED FOR A COUPLE OF MILES THROUGH ONE RAVINE AFTER ANOTHER WITHOUT SUCCESS THOUGH FROM THE MARKS UPON THE BARK OF THE TREES AND OTHER INDICATIONS HE JUDGED THAT THERE WERE NUMEROUS BEARS IN THE VICINITY + AT LAST AFTER TWO OR THREE HOURS' FRUITLESS SEARCH HE WAS THINKING OF TURNING BACK IN DESPAIR WHEN CASTING HIS EYES UPWARDS HE SAW A SIGHT WHICH SENT A THRILL OF PLEASURE THROUGH HIS HEART + ON THE EDGE OF A JUTTING PINNACLE THREE OR FOUR HUNDRED FEET ABOVE HIM THERE STOOD A CREATURE SOMEWHAT RESEMBLING A SHEEP IN APPEARANCE BUT ARMED WITH A PAIR OF GIGANTIC HORNS + THE BIG HORN FOR SO IT IS CALLED WAS ACTING PROBABLY AS A GUARDIAN OVER A FLOCK WHICH WERE INVISIBLE TO THE HUNTER BUT FORTUNATELY IT WAS HEADING IN THE OPPOSITE DIRECTION AND HAD NOT PERCEIVED HIM + LYING ON HIS FACE HE RESTED HIS RIFLE UPON A ROCK AND TOOK A LONG AND STEADY AIM BEFORE DRAWING THE TRIGGER + THE ANIMAL SPRANG INTO THE AIR TOTTERED FOR A MOMENT UPON THE EDGE OF THE PRECIPICE AND THEN CAME CRASHING DOWN INTO THE VALLEY BENEATH + THE CREATURE WAS TOO UNWIELDY TO LIFT SO THE HUNTER CONTENTED HIMSELF WITH CUTTING AWAY ONE HAUNCH AND PART OF THE FLANK + WITH THIS TROPHY OVER HIS SHOULDER HE HASTENED TO RETRACE HIS STEPS FOR THE EVENING WAS ALREADY DRAWING IN + HE HAD HARDLY STARTED HOWEVER BEFORE HE REALIZED THE DIFFICULTY WHICH FACED HIM + IN HIS EAGERNESS HE HAD WANDERED FAR PAST THE RAVINES WHICH WERE KNOWN TO HIM AND IT WAS NO EASY MATTER TO PICK OUT THE PATH WHICH HE HAD TAKEN + THE VALLEY IN WHICH HE FOUND HIMSELF DIVIDED AND SUB DIVIDED INTO MANY GORGES WHICH WERE SO LIKE EACH OTHER THAT IT WAS IMPOSSIBLE TO DISTINGUISH ONE FROM THE OTHER + HE FOLLOWED ONE FOR A MILE OR MORE UNTIL HE CAME TO A MOUNTAIN TORRENT WHICH HE WAS SURE THAT HE HAD NEVER SEEN BEFORE + CONVINCED THAT HE HAD TAKEN THE WRONG TURN HE TRIED ANOTHER BUT WITH THE SAME RESULT + NIGHT WAS COMING ON RAPIDLY AND IT WAS ALMOST DARK BEFORE HE AT LAST FOUND HIMSELF IN A DEFILE WHICH WAS FAMILIAR TO HIM + EVEN THEN IT WAS NO EASY MATTER TO KEEP TO THE RIGHT TRACK FOR THE MOON HAD NOT YET RISEN AND THE HIGH CLIFFS ON EITHER SIDE MADE THE OBSCURITY MORE PROFOUND + WEIGHED DOWN WITH HIS BURDEN AND WEARY FROM HIS EXERTIONS HE STUMBLED ALONG KEEPING UP HIS HEART BY THE REFLECTION THAT EVERY STEP BROUGHT HIM NEARER TO LUCY AND THAT HE CARRIED WITH HIM ENOUGH TO ENSURE THEM FOOD FOR THE REMAINDER OF THEIR JOURNEY + HE HAD NOW COME TO THE MOUTH OF THE VERY DEFILE IN WHICH HE HAD LEFT THEM + EVEN IN THE DARKNESS HE COULD RECOGNIZE THE OUTLINE OF THE CLIFFS WHICH BOUNDED IT + THEY MUST HE REFLECTED BE AWAITING HIM ANXIOUSLY FOR HE HAD BEEN ABSENT NEARLY FIVE HOURS + IN THE GLADNESS OF HIS HEART HE PUT HIS HANDS TO HIS MOUTH AND MADE THE GLEN REECHO TO A LOUD HALLOO AS A SIGNAL THAT HE WAS COMING + HE PAUSED AND LISTENED FOR AN ANSWER + NONE CAME SAVE HIS OWN CRY WHICH CLATTERED UP THE DREARY SILENT RAVINES AND WAS BORNE BACK TO HIS EARS IN COUNTLESS REPETITIONS + AGAIN HE SHOUTED EVEN LOUDER THAN BEFORE AND AGAIN NO WHISPER CAME BACK FROM THE FRIENDS WHOM HE HAD LEFT SUCH A SHORT TIME AGO + A VAGUE NAMELESS DREAD CAME OVER HIM AND HE HURRIED ONWARD FRANTICALLY DROPPING THE PRECIOUS FOOD IN HIS AGITATION + WHEN HE TURNED THE CORNER HE CAME FULL IN SIGHT OF THE SPOT WHERE THE FIRE HAD BEEN LIT + THERE WAS STILL A GLOWING PILE OF WOOD ASHES THERE BUT IT HAD EVIDENTLY NOT BEEN TENDED SINCE HIS DEPARTURE + THE SAME DEAD SILENCE STILL REIGNED ALL ROUND + WITH HIS FEARS ALL CHANGED TO CONVICTIONS HE HURRIED ON + THERE WAS NO LIVING CREATURE NEAR THE REMAINS OF THE FIRE ANIMALS MAN MAIDEN ALL WERE GONE + IT WAS ONLY TOO CLEAR THAT SOME SUDDEN AND TERRIBLE DISASTER HAD OCCURRED DURING HIS ABSENCE A DISASTER WHICH HAD EMBRACED THEM ALL AND YET HAD LEFT NO TRACES BEHIND IT + BEWILDERED AND STUNNED BY THIS BLOW JEFFERSON HOPE FELT HIS HEAD SPIN ROUND AND HAD TO LEAN UPON HIS RIFLE TO SAVE HIMSELF FROM FALLING + HE WAS ESSENTIALLY A MAN OF ACTION HOWEVER AND SPEEDILY RECOVERED FROM HIS TEMPORARY IMPOTENCE + SEIZING A HALF CONSUMED PIECE OF WOOD FROM THE SMOULDERING FIRE HE BLEW IT INTO A FLAME AND PROCEEDED WITH ITS HELP TO EXAMINE THE LITTLE CAMP + THE GROUND WAS ALL STAMPED DOWN BY THE FEET OF HORSES SHOWING THAT A LARGE PARTY OF MOUNTED MEN HAD OVERTAKEN THE FUGITIVES AND THE DIRECTION OF THEIR TRACKS PROVED THAT THEY HAD AFTERWARDS TURNED BACK TO SALT LAKE CITY + HAD THEY CARRIED BACK BOTH OF HIS COMPANIONS WITH THEM + JEFFERSON HOPE HAD ALMOST PERSUADED HIMSELF THAT THEY MUST HAVE DONE SO WHEN HIS EYE FELL UPON AN OBJECT WHICH MADE EVERY NERVE OF HIS BODY TINGLE WITHIN HIM + A LITTLE WAY ON ONE SIDE OF THE CAMP WAS A LOW LYING HEAP OF REDDISH SOIL WHICH HAD ASSUREDLY NOT BEEN THERE BEFORE + THERE WAS NO MISTAKING IT FOR ANYTHING BUT A NEWLY DUG GRAVE + AS THE YOUNG HUNTER APPROAEHED IT HE PERCEIVED THAT A STICK HAD BEEN PLANTED ON IT WITH A SHEET OF PAPER STUCK IN THE CLEFT FORK OF IT + THE INSCRIPTION UPON THE PAPER WAS BRIEF BUT TO THE POINT JOHN FERRIER FORMERLY OF SALT LAKE CITY + DIED AUGUST FOURTH ONE THOUSAND EIGHT HUNDRED SIXTY + THE STURDY OLD MAN WHOM HE HAD LEFT SO SHORT A TIME BEFORE WAS GONE THEN AND THIS WAS ALL HIS EPITAPH + JEFFERSON HOPE LOOKED WILDLY ROUND TO SEE IF THERE WAS A SECOND GRAVE BUT THERE WAS NO SIGN OF ONE + LUCY HAD BEEN CARRIED BACK BY THEIR TERRIBLE PURSUERS TO FULFIL HER ORIGINAL DESTINY BY BECOMING ONE OF THE HAREM OF AN ELDER'S SON + AS THE YOUNG FELLOW REALIZED THE CERTAINTY OF HER FATE AND HIS OWN POWERLESSNESS TO PREVENT IT HE WISHED THAT HE TOO WAS LYING WITH THE OLD FARMER IN HIS LAST SILENT RESTING PLACE + AGAIN HOWEVER HIS ACTIVE SPIRIT SHOOK OFF THE LETHARGY WHICH SPRINGS FROM DESPAIR + IF THERE WAS NOTHING ELSE LEFT TO HIM HE COULD AT LEAST DEVOTE HIS LIFE TO REVENGE + WITH INDOMITABLE PATIENCE AND PERSEVERANCE JEFFERSON HOPE POSSESSED ALSO A POWER OF SUSTAINED VINDICTIVENESS WHICH HE MAY HAVE LEARNED FROM THE INDIANS AMONGST WHOM HE HAD LIVED + AS HE STOOD BY THE DESOLATE FIRE HE FELT THAT THE ONLY ONE THING WHICH COULD ASSUAGE HIS GRIEF WOULD BE THOROUGH AND COMPLETE RETRIBUTION BROUGHT BY HIS OWN HAND UPON HIS ENEMIES + HIS STRONG WILL AND UNTIRING ENERGY SHOULD HE DETERMINED BE DEVOTED TO THAT ONE END + WITH A GRIM WHITE FACE HE RETRACED HIS STEPS TO WHERE HE HAD DROPPED THE FOOD AND HAVING STIRRED UP THE SMOULDERING FIRE HE COOKED ENOUGH TO LAST HIM FOR A FEW DAYS + THIS HE MADE UP INTO A BUNDLE AND TIRED AS HE WAS HE SET HIMSELF TO WALK BACK THROUGH THE MOUNTAINS UPON THE TRACK OF THE AVENGING ANGELS + FOR FIVE DAYS HE TOILED FOOTSORE AND WEARY THROUGH THE DEFILES WHICH HE HAD ALREADY TRAVERSED ON HORSEBACK + AT NIGHT HE FLUNG HIMSELF DOWN AMONG THE ROCKS AND SNATCHED A FEW HOURS OF SLEEP BUT BEFORE DAYBREAK HE WAS ALWAYS WELL ON HIS WAY + ON THE SIXTH DAY HE REACHED THE EAGLE CANON FROM WHICH THEY HAD COMMENCED THEIR ILL FATED FLIGHT + THENCE HE COULD LOOK DOWN UPON THE HOME OF THE SAINTS + WORN AND EXHAUSTED HE LEANED UPON HIS RIFLE AND SHOOK HIS GAUNT HAND FIERCELY AT THE SILENT WIDESPREAD CITY BENEATH HIM + AS HE LOOKED AT IT HE OBSERVED THAT THERE WERE FLAGS IN SOME OF THE PRINCIPAL STREETS AND OTHER SIGNS OF FESTIVITY + HE WAS STILL SPECULATING AS TO WHAT THIS MIGHT MEAN WHEN HE HEARD THE CLATTER OF HORSE'S HOOFS AND SAW A MOUNTED MAN RIDING TOWARDS HIM + AS HE APPROACHED HE RECOGNIZED HIM AS A MORMON NAMED COWPER TO WHOM HE HAD RENDERED SERVICES AT DIFFERENT TIMES + HE THEREFORE ACCOSTED HIM WHEN HE GOT UP TO HIM WITH THE OBJECT OF FINDING OUT WHAT LUCY FERRIER'S FATE HAD BEEN + I AM JEFFERSON HOPE HE SAID + YOU REMEMBER ME + THE MORMON LOOKED AT HIM WITH UNDISGUISED ASTONISHMENT INDEED IT WAS DIFFICULT TO RECOGNIZE IN THIS TATTERED UNKEMPT WANDERER WITH GHASTLY WHITE FACE AND FIERCE WILD EYES THE SPRUCE YOUNG HUNTER OF FORMER DAYS + HAVING HOWEVER AT LAST SATISFIED HIMSELF AS TO HIS IDENTITY THE MAN'S SURPRISE CHANGED TO CONSTERNATION + YOU ARE MAD TO COME HERE HE CRIED + IT IS AS MUCH AS MY OWN LIFE IS WORTH TO BE SEEN TALKING WITH YOU + THERE IS A WARRANT AGAINST YOU FROM THE HOLY FOUR FOR ASSISTING THE FERRIERS AWAY QUOTE + I DON'T FEAR THEM OR THEIR WARRANT HOPE SAID EARNESTLY + YOU MUST KNOW SOMETHING OF THIS MATTER COWPER + I CONJURE YOU BY EVERYTHING YOU HOLD DEAR TO ANSWER A FEW QUESTIONS + WE HAVE ALWAYS BEEN FRIENDS + FOR GOD'S SAKE DON'T REFUSE TO ANSWER ME + WHAT IS IT THE MORMON ASKED UNEASILY + BE QUICK + THE VERY ROCKS HAVE EARS AND THE TREES EYES QUOTE + WHAT HAS BECOME OF LUCY FERRIER + SHE WAS MARRIED YESTERDAY TO YOUNG DREBBER + HOLD UP MAN HOLD UP YOU HAVE NO LIFE LEFT IN YOU + DON'T MIND ME SAID HOPE FAINTLY + HE WAS WHITE TO THE VERY LIPS AND HAD SUNK DOWN ON THE STONE AGAINST WHICH HE HAD BEEN LEANING + MARRIED YOU SAY + QUOTE MARRIED YESTERDAY THAT'S WHAT THOSE FLAGS ARE FOR ON THE ENDOWMENT HOUSE + THERE WAS SOME WORDS BETWEEN YOUNG DREBBER AND YOUNG STANGERSON AS TO WHICH WAS TO HAVE HER + THEY'D BOTH BEEN IN THE PARTY THAT FOLLOWED THEM AND STANGERSON HAD SHOT HER FATHER WHICH SEEMED TO GIVE HIM THE BEST CLAIM BUT WHEN THEY ARGUED IT OUT IN COUNCIL DREBBER'S PARTY WAS THE STRONGER SO THE PROPHET GAVE HER OVER TO HIM + NO ONE WON'T HAVE HER VERY LONG THOUGH FOR I SAW DEATH IN HER FACE YESTERDAY + SHE IS MORE LIKE A GHOST THAN A WOMAN + ARE YOU OFF THEN + YES I AM OFF SAID JEFFERSON HOPE WHO HAD RISEN FROM HIS SEAT + HIS FACE MIGHT HAVE BEEN CHISELLED OUT OF MARBLE SO HARD AND SET WAS ITS EXPRESSION WHILE ITS EYES GLOWED WITH A BALEFUL LIGHT + WHERE ARE YOU GOING + NEVER MIND HE ANSWERED AND SLINGING HIS WEAPON OVER HIS SHOULDER STRODE OFF DOWN THE GORGE AND SO AWAY INTO THE HEART OF THE MOUNTAINS TO THE HAUNTS OF THE WILD BEASTS + AMONGST THEM ALL THERE WAS NONE SO FIERCE AND SO DANGEROUS AS HIMSELF + THE PREDICTION OF THE MORMON WAS ONLY TOO WELL FULFILLED + WHETHER IT WAS THE TERRIBLE DEATH OF HER FATHER OR THE EFFECTS OF THE HATEFUL MARRIAGE INTO WHICH SHE HAD BEEN FORCED POOR LUCY NEVER HELD UP HEF HEAD AGAIN BUT PINED AWAY AND DIED WITHIN A MONTH + HER SOTTISH HUSBAND WHO HAD MARRIED HER PRINCIPALLY FOR THE SAKE OF JOHN FERRIER'S PROPERTY DID NOT AFFECT ANY GREAT GRIEF AT HIS BEREAVEMENT BUT HIS OTHER WIVES MOURNED OVER HER AND SAT UP WITH HER THE NIGHT BEFORE THE BURIAL AS IS THE MORMON CUSTOM + THEY WERE GROUPED ROUND THE BIER IN THE EARLY HOURS OF THE MORNING WHEN TO THEIR INEXPRESSIBLE FEAR AND ASTONISHMENT THE DOOR WAS FLUNG OPEN AND A SAVAGE LOOKING WEATHER BEATEN MAN IN TATTERED GARMENTS STRODE INTO THE ROOM + WITHOUT A GLANCE OR A WORD TO THE COWERING WOMEN HE WALKED UP TO THE WHITE SILENT FIGURE WHICH HAD ONCE CONTAINED THE PURE SOUL OF LUCY FERRIER + STOOPING OVER HER HE PRESSED HIS LIPS REVERENTLY TO HER COLD FOREHEAD AND THEN SNATCHING UP HER HAND HE TOOK THE WEDDING RING FROM HER FINGER + SHE SHALL NOT BE BURIED IN THAT HE CRIED WITH A FIERCE SNARL AND BEFORE AN ALARM COULD BE RAISED SPRANG DOWN THE STAIRS AND WAS GONE + SO STRANGE AND SO BRIEF WAS THE EPISODE THAT THE WATCHERS MIGHT HAVE FOUND IT HARD TO BELIEVE IT THEMSELVES OR PERSUADE OTHER PEOPLE OF IT HAD IT NOT BEEN FOR THE UNDENIABLE FACT THAT THE CIRCLET OF GOLD WHICH MARKED HER AS HAVING BEEN A BRIDE HAD DISAPPEARED + FOR SOME MONTHS JEFFERSON HOPE LINGERED AMONG THE MOUNTAINS LEADING A STRANGE WILD LIFE AND NURSING IN HIS HEART THE FIERCE DESIRE FOR VENGEANCE WHICH POSSESSED HIM + TALES WERE TOLD IN THE CITY OF THE WEIRD FIGURE WHICH WAS SEEN PROWLING ABOUT THE SUBURBS AND WHICH HAUNTED THE LONELY MOUNTAIN GORGES + ONCE A BULLET WHISTLED THROUGH STANGERSON'S WINDOW AND FLATTENED ITSELF UPON THE WALL WITHIN A FOOT OF HIM + ON ANOTHER OCCASION AS DREBBER PASSED UNDER A CLIFF A GREAT BOULDER CRASHED DOWN ON HIM AND HE ONLY ESCAPED A TERRIBLE DEATH BY THROWING HIMSELF UPON HIS FACE + THE TWO YOUNG MORMONS WERE NOT LONG IN DISCOVERING THE REASON OF THESE ATTEMPTS UPON THEIR LIVES AND LED REPEATED EXPEDITIONS INTO THE MOUNTAINS IN THE HOPE OF CAPTURING OR KILLING THEIR ENEMY BUT ALWAYS WITHOUT SUCCESS + THEN THEY ADOPTED THE PRECAUTION OF NEVER GOING OUT ALONE OR AFTER NIGHTFALL AND OF HAVING THEIR HOUSES GUARDED + AFTER A TIME THEY WERE ABLE TO RELAX THESE MEASURES FOR NOTHING WAS EITHER HEARD OR SEEN OF THEIR OPPONENT AND THEY HOPED THAT TIME HAD COOLED HIS VINDICTIVENESS + FAR FROM DOING SO IT HAD IF ANYTHING AUGMENTED IT + THE HUNTER'S MIND WAS OF A HARD UNYIELDING NATURE AND THE PREDOMINANT IDEA OF REVENGE HAD TAKEN SUCH COMPLETE POSSESSION OF IT THAT THERE WAS NO ROOM FOR ANY OTHER EMOTION + HE WAS HOWEVER ABOVE ALL THINGS PRACTICAL + HE SOON REALIZED THAT EVEN HIS IRON CONSTITUTION COULD NOT STAND THE INCESSANT STRAIN WHICH HE WAS PUTTING UPON IT + EXPOSURE AND WANT OF WHOLESOME FOOD WERE WEARING HIM OUT + IF HE DIED LIKE A DOG AMONG THE MOUNTAINS WHAT WAS TO BECOME OF HIS REVENGE THEN + AND YET SUCH A DEATH WAS SURE TO OVERTAKE HIM IF HE PERSISTED + HE FELT THAT THAT WAS TO PLAY HIS ENEMY'S GAME SO HE RELUCTANTLY RETURNED TO THE OLD NEVADA MINES THERE TO RECRUIT HIS HEALTH AND TO AMASS MONEY ENOUGH TO ALLOW HIM TO PURSUE HIS OBJECT WITHOUT PRIVATION + HIS INTENTION HAD BEEN TO BE ABSENT A YEAR AT THE MOST BUT A COMBINATION OF UNFORESEEN CIRCUMSTANCES PREVENTED HIS LEAVING THE MINES FOR NEARLY FIVE + AT THE END OF THAT TIME HOWEVER HIS MEMORY OF HIS WRONGS AND HIS CRAVING FOR REVENGE WERE QUITE AS KEEN AS ON THAT MEMORABLE NIGHT WHEN HE HAD STOOD BY JOHN FERRIER'S GRAVE + DISGUISED AND UNDER AN ASSUMED NAME HE RETURNED TO SALT LAKE CITY CARELESS WHAT BECAME OF HIS OWN LIFE AS LONG AS HE OBTAINED WHAT HE KNEW TO BE JUSTICE + THERE HE FOUND EVIL TIDINGS AWAITING HIM + THERE HAD BEEN A SCHISM AMONG THE CHOSEN PEOPLE A FEW MONTHS BEFORE SOME OF THE YOUNGER MEMBERS OF THE CHURCH HAVING REBELLED AGAINST THE AUTHORITY OF THE ELDERS AND THE RESULT HAD BEEN THE SECESSION OF A CERTAIN NUMBER OF THE MALCONTENTS WHO HAD LEFT UTAH AND BECOME GENTILES + AMONG THESE HAD BEEN DREBBER AND STANGERSON AND NO ONE KNEW WHITHER THEY HAD GONE + RUMOUR REPORTED THAT DREBBER HAD MANAGED TO CONVERT A LARGE PART OF HIS PROPERTY INTO MONEY AND THAT HE HAD DEPARTED A WEALTHY MAN WHILE HIS COMPANION STANGERSON WAS COMPARATIVELY POOR + THERE WAS NO CLUE AT ALL HOWEVER AS TO THEIR WHEREABOUTS + MANY A MAN HOWEVER VINDICTIVE WOULD HAVE ABANDONED ALL THOUGHT OF REVENGE IN THE FACE OF SUCH A DIFFICULTY BUT JEFFERSON HOPE NEVER FALTERED FOR A MOMENT + WITH THE SMALL COMPETENCE HE POSSESSED EKED OUT BY SUCH EMPLOYMENT AS HE COULD PICK UP HE TRAVELLED FROM TOWN TO TOWN THROUGH THE UNITED STATES IN QUEST OF HIS ENEMIES + YEAR PASSED INTO YEAR HIS BLACK HAIR TURNED GRIZZLED BUT STILL HE WANDERED ON A HUMAN BLOODHOUND WITH HIS MIND WHOLLY SET UPON THE ONE OBJECT TO WHICH HE HAD DEVOTED HIS LIFE + AT LAST HIS PERSEVERANCE WAS REWARDED + IT WAS BUT A GLANCE OF A FACE IN A WINDOW BUT THAT ONE GLANCE TOLD HIM THAT CLEVELAND IN OHIO POSSESSED THE MEN WHOM HE WAS IN PURSUIT OF + HE RETURNED TO HIS MISERABLE LODGINGS WITH HIS PLAN OF VENGEANCE ALL ARRANGED + IT CHANCED HOWEVER THAT DREBBER LOOKING FROM HIS WINDOW HAD RECOGNIZED THE VAGRANT IN THE STREET AND HAD READ MURDER IN HIS EYES + HE HURRIED BEFORE A JUSTICE OF THE PEACE ACCOMPANIED BY STANGERSON WHO HAD BECOME HIS PRIVATE SECRETARY AND REPRESENTED TO HIM THAT THEY WERE IN DANGER OF THEIR LIVES FROM THE JEALOUSY AND HATRED OF AN OLD RIVAL + THAT EVENING JEFFERSON HOPE WAS TAKEN INTO CUSTODY AND NOT BEING ABLE TO FIND SURETIES WAS DETAINED FOR SOME WEEKS + WHEN AT LAST HE WAS LIBERATED IT WAS ONLY TO FIND THAT DREBBER'S HOUSE WAS DESERTED AND THAT HE AND HIS SECRETARY HAD DEPARTED FOR EUROPE + AGAIN THE AVENGER HAD BEEN FOILED AND AGAIN HIS CONCENTRATED HATRED URGED HIM TO CONTINUE THE PURSUIT + FUNDS WERE WANTING HOWEVER AND FOR SOME TIME HE HAD TO RETURN TO WORK SAVING EVERY DOLLAR FOR HIS APPROACHING JOURNEY + AT LAST HAVING COLLECTED ENOUGH TO KEEP LIFE IN HIM HE DEPARTED FOR EUROPE AND TRACKED HIS ENEMIES FROM CITY TO CITY WORKING HIS WAY IN ANY MENIAL CAPACITY BUT NEVER OVERTAKING THE FUGITIVES + WHEN HE REACHED SAINT PETERSBURG THEY HAD DEPARTED FOR PARIS AND WHEN HE FOLLOWED THEM THERE HE LEARNED THAT THEY HAD JUST SET OFF FOR COPENHAGEN + AT THE DANISH CAPITAL HE WAS AGAIN A FEW DAYS LATE FOR THEY HAD JOURNEYED ON TO LONDON WHERE HE AT LAST SUCCEEDED IN RUNNING THEM TO EARTH + AS TO WHAT OCCURRED THERE WE CANNOT DO BETTER THAN QUOTE THE OLD HUNTER'S OWN ACCOUNT AS DULY RECORDED IN DOCTOR WATSON'S JOURNAL TO WHICH WE ARE ALREADY UNDER SUCH OBLIGATIONS + CHAPTER SIX A CONTINUATION OF THE REMINISCENCES OF JOHN WATSON M. D. + OUR PRISONER'S FURIOUS RESISTANCE DID NOT APPARENTLY INDICATE ANY FEROCITY IN HIS DISPOSITION TOWARDS OURSELVES FOR ON FINDING HIMSELF POWERLESS HE SMILED IN AN AFFABLE MANNER AND EXPRESSED HIS HOPES THAT HE HAD NOT HURT ANY OF US IN THE SCUFFLE + QUOTE I GUESS YOU'RE GOING TO TAKE ME TO THE POLICE STATION QUOTE HE REMARKED TO SHERLOCK HOLMES QUOTE MY CAB'S AT THE DOOR + IF YOU'LL LOOSE MY LEGS I'LL WALK DOWN TO IT + I'M NOT SO LIGHT TO LIFT AS I USED TO BE + GREGSON AND LESTRADE EXCHANGED GLANCES AS IF THEY THOUGHT THIS PROPOSITION RATHER A BOLD ONE BUT HOLMES AT ONCE TOOK THE PRISONER AT HIS WORD AND LOOSENED THE TOWEL WHICH WE HAD BOUND ROUND HIS ANKLES + HE ROSE AND STRETCHED HIS LEGS AS THOUGH TO ASSURE HIMSELF THAT THEY WERE FREE ONCE MORE + I REMEMBER THAT I THOUGHT TO MYSELF AS I EYED HIM THAT I HAD SELDOM SEEN A MORE POWERFULLY BUILT MAN AND HIS DARK SUNBURNED FACE BORE AN EXPRESSION OF DETERMINATION AND ENERGY WHICH WAS AS FORMIDABLE AS HIS PERSONAL STRENGTH + IF THERE'S A VACANT PLACE FOR A CHIEF OF THE POLICE I RECKON YOU ARE THE MAN FOR IT HE SAID GAZING WITH UNDISGUISED ADMIRATION AT MY FELLOW LODGER + THE WAY YOU KEPT ON MY TRAIL WAS A CAUTION + YOU HAD BETTER COME WITH ME SAID HOLMES TO THE TWO DETECTIVES + I CAN DRIVE YOU SAID LESTRADE + QUOTE GOOD AND GREGSON CAN COME INSIDE WITH ME + YOU TOO DOCTOR + YOU HAVE TAKEN AN INTEREST IN THE CASE AND MAY AS WELL STICK TO US + I ASSENTED GLADLY AND WE ALL DESCENDED TOGETHER + OUR PRISONER MADE NO ATTEMPT AT ESCAPE BUT STEPPED CALMLY INTO THE CAB WHICH HAD BEEN HIS AND WE FOLLOWED HIM + LESTRADE MOUNTED THE BOX WHIPPED UP THE HORSE AND BROUGHT US IN A VERY SHORT TIME TO OUR DESTINATION + WE WERE USHERED INTO A SMALL CHAMBER WHERE A POLICE INSPECTOR NOTED DOWN OUR PRISONER'S NAME AND THE NAMES OF THE MEN WITH WHOSE MURDER HE HAD BEEN CHARGED + THE OFFICIAL WAS A WHITE FACED UNEMOTIONAL MAN WHO WENT THROUGH HIS DUTIES IN A DULL MECHANICAL WAY + THE PRISONER WILL BE PUT BEFORE THE MAGISTRATES IN THE COURSE OF THE WEEK HE SAID IN THE MEANTIME MR. JEFFERSON HOPE HAVE YOU ANYTHING THAT YOU WISH TO SAY + I MUST WARN YOU THAT YOUR WORDS WILL BE TAKEN DOWN AND MAY BE USED AGAINST YOU + I'VE GOT A GOOD DEAL TO SAY OUR PRISONER SAID SLOWLY + I WANT TO TELL YOU GENTLEMEN ALL ABOUT IT + QUOTE HADN'T YOU BETTER RESERVE THAT FOR YOUR TRIAL QUOTE ASKED THE INSPECTOR + I MAY NEVER BE TRIED HE ANSWERED + YOU NEEDN'T LOOK STARTLED + IT ISN'T SUICIDE I AM THINKING OF + ARE YOU A DOCTOR + HE TURNED HIS FIERCE DARK EYES UPON ME AS HE ASKED THIS LAST QUESTION + YES I AM I ANSWERED + THEN PUT YOUR HAND HERE HE SAID WITH A SMILE MOTIONING WITH HIS MANACLED WRISTS TOWARDS HIS CHEST + I DID SO AND BECAME AT ONCE CONSCIOUS OF AN EXTRAORDINARY THROBBING AND COMMOTION WHICH WAS GOING ON INSIDE + THE WALLS OF HIS CHEST SEEMED TO THRILL AND QUIVER AS A FRAIL BUILDING WOULD DO INSIDE WHEN SOME POWERFUL ENGINE WAS AT WORK + IN THE SILENCE OF THE ROOM I COULD HEAR A DULL HUMMING AND BUZZING NOISE WHICH PROCEEDED FROM THE SAME SOURCE + QUOTE WHY QUOTE I CRIED QUOTE YOU HAVE AN AORTIC ANEURISM QUOTE + THAT'S WHAT THEY CALL IT HE SAID PLACIDLY + I WENT TO A DOCTOR LAST WEEK ABOUT IT AND HE TOLD ME THAT IT IS BOUND TO BURST BEFORE MANY DAYS PASSED + IT HAS BEEN GETTING WORSE FOR YEARS + I GOT IT FROM OVEREXPOSURE AND UNDER FEEDING AMONG THE SALT LAKE MOUNTAINS + I'VE DONE MY WORK NOW AND I DON'T CARE HOW SOON I GO BUT I SHOULD LIKE TO LEAVE SOME ACCOUNT OF THE BUSINESS BEHIND ME + I DON'T WANT TO BE REMEMBERED AS A COMMON CUT THROAT + THE INSPECTOR AND THE TWO DETECTIVES HAD A HURRIED DISCUSSION AS TO THE ADVISABILITY OF ALLOWING HIM TO TELL HIS STORY + DO YOU CONSIDER DOCTOR THAT THERE IS IMMEDIATE DANGER THE FORMER ASKED + MOST CERTAINLY THERE IS I ANSWERED + QUOTE IN THAT CASE IT IS CLEARLY OUR DUTY IN THE INTERESTS OF JUSTICE TO TAKE HIS STATEMENT QUOTE SAID THE INSPECTOR + YOU ARE AT LIBERTY SIR TO GIVE YOUR ACCOUNT WHICH I AGAIN WARN YOU WILL BE TAKEN DOWN + I'LL SIT DOWN WITH YOUR LEAVE THE PRISONER SAID SUITING THE ACTION TO THE WORD + THIS ANEURISM OF MINE MAKES ME EASILY TIRED AND THE TUSSLE WE HAD HALF AN HOUR AGO HAS NOT MENDED MATTERS + I'M ON THE BRINK OF THE GRAVE AND I AM NOT LIKELY TO LIE TO YOU + EVERY WORD I SAY IS THE ABSOLUTE TRUTH AND HOW YOU USE IT IS A MATTER OF NO CONSEQUENCE TO ME + WITH THESE WORDS JEFFERSON HOPE LEANED BACK IN HIS CHAIR AND BEGAN THE FOLLOWING REMARKABLE STATEMENT + HE SPOKE IN A CALM AND METHODICAL MANNER AS THOUGH THE EVENTS WHICH HE NARRATED WERE COMMONPLACE ENOUGH + I CAN VOUCH FOR THE ACCURACY OF THE SUBJOINED ACCOUNT FOR I HAVE HAD ACCESS TO LESTRADE'S NOTEBOOK IN WHICH THE PRISONER'S WORDS WERE TAKEN DOWN EXACTLY AS THEY WERE UTTERED + IT DON'T MUCH MATTER TO YOU WHY I HATED THESE MEN HE SAID IT'S ENOUGH THAT THEY WERE GUILTY OF THE DEATH OF TWO HUMAN BEINGS A FATHER AND DAUGHTER AND THAT THEY HAD THEREFORE FORFEITED THEIR OWN LIVES + AFTER THE LAPSE OF TIME THAT HAS PASSED SINCE THEIR CRIME IT WAS IMPOSSIBLE FOR ME TO SECURE A CONVICTION AGAINST THEM IN ANY COURT + I KNEW OF THEIR GUILT THOUGH AND I DETERMINED THAT I SHOULD BE JUDGE JURY AND EXECUTIONER ALL ROLLED INTO ONE + YOU'D HAVE DONE THE SAME IF YOU HAVE ANY MANHOOD IN YOU IF YOU HAD BEEN IN MY PLACE + QUOTE THAT GIRL THAT I SPOKE OF WAS TO HAVE MARRIED ME TWENTY YEARS AGO + SHE WAS FORCED INTO MARRYING THAT SAME DREBBER AND BROKE HER HEART OVER IT + I TOOK THE MARRIAGE RING FROM BER DEAD FINGER AND I VOWED THAT HIS DYING EYES SHOULD REST UPON THAT VERY RING AND THAT HIS LAST THOUGHTS SHOULD BE OF THE CRIME FOR WHICH HE WAS PUNISHED + I HAVE CARRIED IT ABOUT WITH ME AND HAVE FOLLOWED HIM AND HIS ACCOMPLICE OVER TWO CONTINENTS UNTIL I CAUGHT THEM + THEY THOUGHT TO TIRE ME OUT BUT THEY COULD NOT DO IT + IF I DIE TO MORROW AS IS LIKELY ENOUGH I DIE KNOWING THAT MY WORK IN THIS WORLD IS DONE AND WELL DONE + THEY HAVE PERISHED AND BY MY HAND + THERE IS NOTHING LEFT FOR ME TO HOPE FOR OR TO DESIRE + THEY WERE RICH AND I WAS POOR SO THAT IT WAS NO EASY MATTER FOR ME TO FOLLOW THEM + WHEN I GOT TO LONDON MY POCKET WAS ABOUT EMPTY AND I FOUND THAT I MUST TURN MY HAND TO SOMETHING FOR MY LIVING + DRIVING AND RIDING ARE AS NATURAL TO ME AS WALKING SO I APPLIED AT A CAB OWNER'S OFFICE AND SOON GOT EMPLOYMENT + I WAS TO BRING A CERTAIN SUM A WEEK TO THE OWNER AND WHATEVER WAS OVER THAT I MIGHT KEEP FOR MYSELF + THERE WAS SELDOM MUCH OVER BUT I MANAGED TO SCRAPE ALONG SOMEHOW + THE HARDEST JOB WAS TO LEARN MY WAY ABOUT FOR I RECKON THAT OF ALL THE MAZES THAT EVER WERE CONTRIVED THIS CITY IS THE MOST CONFUSING + I HAD A MAP BESIDE ME THOUGH AND WHEN ONCE I HAD SPOTTED THE PRINCIPAL HOTELS AND STATIONS I GOT ON PRETTY WELL + IT WAS SOME TIME BEFORE I FOUND OUT WHERE MY TWO GENTLEMEN WERE LIVING BUT I INQUIRED AND INQUIRED UNTIL AT LAST I DROPPED ACROSS THEM + THEY WERE AT A BOARDING HOUSE AT CAMBERWELL OVER ON THE OTHER SIDE OF THE RIVER + WHEN ONCE I FOUND THEM OUT I KNEW THAT I HAD THEM AT MY MERCY + I HAD GROWN MY BEARD AND THERE WAS NO CHANCE OF THEIR RECOGNIZING ME + I WOULD DOG THEM AND FOLLOW THEM UNTIL I SAW MY OPPORTUNITY + I WAS DETERMINED THAT THEY SHOULD NOT ESCAPE ME AGAIN + THEY WERE VERY NEAR DOING IT FOR ALL THAT + GO WHERE THEY WOULD ABOUT LONDON I WAS ALWAYS AT THEIR HEELS + SOMETIMES I FOLLOWED THEM ON MY CAB AND SOMETIMES ON FOOT BUT THE FORMER WAS THE BEST FOR THEN THEY COULD NOT GET AWAY FROM ME + IT WAS ONLY EARLY IN THE MORNING OR LATE AT NIGHT THAT I COULD EARN ANYTHING SO THAT I BEGAN TO GET BEHINDHAND WITH MY EMPLOYER + I DID NOT MIND THAT HOWEVER AS LONG AS I COULD LAY MY HAND UPON THE MEN I WANTED + THEY WERE VERY CUNNING THOUGH + THEY MUST HAVE THOUGHT THAT THERE WAS SOME CHANCE OF THEIR BEING FOLLOWED FOR THEY WOULD NEVER GO OUT ALONE AND NEVER AFTER NIGHTFALL + DURING TWO WEEKS I DROVE BEHIND THEM EVERY DAY AND NEVER ONCE SAW THEM SEPARATE + DREBBER HIMSELF WAS DRUNK HALF THE TIME BUT STANGERSON WAS NOT TO BE CAUGHT NAPPING + I WATCHED THEM LATE AND EARLY BUT NEVER SAW THE GHOST OF A CHANCE BUT I WAS NOT DISCOURAGED FOR SOMETHING TOLD ME THAT THE HOUR HAD ALMOST COME + MY ONLY FEAR WAS THAT THIS THING IN MY CHEST MIGHT BURST A LITTLE TOO SOON AND LEAVE MY WORK UNDONE + QUOTE AT LAST ONE EVENING I WAS DRIVING UP AND DOWN TORQUAY TERRACE AS THE STREET WAS CALLED IN WHICH THEY BOARDED WHEN I SAW A CAB DRIVE UP TO THEIR DOOR + PRESENTLY SOME LUGGAGE WAS BROUGHT OUT AND AFTER A TIME DREBBER AND STANGERSON FOLLOWED IT AND DROVE OFF + I WHIPPED UP MY HORSE AND KEPT WITHIN SIGHT OF THEM FEELING VERY ILL AT EASE FOR I FEARED THAT THEY WERE GOING TO SHIFT THEIR QUARTERS + AT EUSTON STATION THEY GOT OUT AND I LEFT A BOY TO HALD MY HORSE AND FOLLOWED THEM ON TO THE PLATFORM + I HEARD THEM ASK FOR THE LIVERPOOL TRAIN AND THE GUARD ANSWER THAT ONE HAD JUST GONE. AND THERE WOULD NOT BE ANOTHER FOR SOME HOURS + STANGERSON SEEMED TO BE PUT OUT AT THAT BUT DREBBER WAS RATHER PLEASED THAN OTHERWISE + I GOT SO CLOSE TO THEM IN THE BUSTLE THAT I COULD HEAR EVERY WORD THAT PASSED BETWEEN THEM + DREBBER SAID THAT HE HAD A LITTLE BUSINESS OF HIS OWN TO DO AND THAT IF THE OTHER WOULD WAIT FOR HIM HE WOULD SOON REJOIN HIM + HIS COMPANION REMONSTRATED WITH HIM AND REMINDED HIM THAT THEY HAD RESOLVED TO STICK TOGETHER + DREBBER ANSWERED THAT THE MATTER WAS A DELICATE ONE AND THAT HE MUST GO ALONE + I COULD NOT CATCH WHAT STANGERSON SAID TO THAT BUT THE OTBER BURST OUT SWEARING AND REMINDED HIM THAT HE WAS NOTHING MORE THAN HIS PAID SERVANT AND THAT HE MUST NOT PRESUME TO DICTATE TO HIM + ON THAT THE SECRETARY GAVE IT UP AS A BAD JOB AND SIMPLY BARGAINED WITH HIM THAT IF HE MISSED THE LAST TRAIN HE SHOULD REJOIN HIM AT HALLIDAY'S PRIVATE HOTEL TO WHICH DREBBER ANSWERED THAT HE WOULD BE BACK ON THE PLATFORM BEFORE ELEVEN AND MADE HIS WAY OUT OF THE STATION + THE MOMENT FOR WHICH I HAD WAITED SO LONG HAD AT LAST COME + I HAD MY ENEMIES WITHIN MY POWER + TOGETHER THEY COULD PROTECT EACH OTHER BUT SINGLY THEY WERE AT MY MERCY + I DID NOT ACT HOWEVER WITH UNDUE PRECIPITATION + MY PLANS WERE ALREADY FORMED + THERE IS NO SATISFACTION IN VENGEANCE UNLESS THE OFFENDER HAS TIME TO REALIZE WHO IT IS THAT STRIKES HIM AND WHY RETRIBUTION HAS COME UPON HIM + I HAD MY PLANS ARRANGED BY WHICH I SHOULD HAVE THE OPPORTUNITY OF MAKING THE MAN WHO HAD WRONGED ME UNDERSTAND THAT HIS OLD SIN HAD FOUND HIM OUT + IT CHANCED THAT SOME DAYS BEFORE A GENTLEMAN WHO HAD BEEN ENGAGED IN LOOKING OVER SOME HOUSES IN THE BRIXTON ROAD HAD DROPPED THE KEY OF ONE OF THEM IN MY CARRIAGE + IT WAS CLAIMED THAT SAME EVENING AND RETURNED BUT IN THE INTERVAL I HAD TAKEN A MOULDING OF IT AND HAD A DUPLICATE CONSTRUCTED + BY MEANS OF THIS I HAD ACCESS TO AT LEAST ONE SPOT IN THIS GREAT CITY WHERE I COULD RELY UPON BEING FREE FROM INTERRUPTION + HOW TO GET DREBBER TO THAT HOUSE WAS THE DIFFICULT PROBLEM WHICH I HAD NOW TO SOLVE + HE WALKED DOWN THE ROAD AND WENT INTO ONE OR TWO LIQUOR SHOPS STAYING FOR NEARLY HALF AN HOUR IN THE LAST OF THEM + WHEN HE CAME OUT. HE STAGGERED IN HIS WALK AND WAS EVIDENTLY PRETTY WELL ON + THERE WAS A HANSOM JUST IN FRONT OF ME AND HE HAILED IT + I FOLLOWED IT SO CLOSE THAT THE NOSE OF MY HORSE WAS WITHIN A YARD OF HIS DRIVER THE WHOLE WAY + WE RATTLED ACROSS WATERLOO BRIDGE AND THROUGH MILES OF STREETS UNTIL TO MY ASTONISHMENT WE FOUND OURSELVES BACK IN THE TERRACE IN WHICH HE HAD BOARDED + I COULD NOT IMAGINE WHAT HIS INTENTION WAS IN RETURNING THERE BUT I WENT ON AND PULLED UP MY CAB A HUNDRED YARDS OR SO FROM THE HOUSE + HE ENTERED IT AND HIS HANSOM DROVE AWAY + GIVE ME A GLASS OF WATER IF YOU PLEASE + MY MOUTH GETS DRY WITH THE TALKING + I HANDED HIM THE GLASS AND HE DRANK IT DOWN + THAT'S BETTER HE SAID + WELL I WAITED TOR A QUARTER OF AN HOUR OR MORE WHEN SUDDENLY THERE CAME A NOISE LIKE PEOPLE STRUGGLING INSIDE THE HOUSE + NEXT MOMENT THE DOOR WAS FLUNG OPEN AND TWO MEN APPEARED ONE OF WHOM WAS DREBBER AND THE OTHER WAS A YOUNG CHAP WHOM I HAD NEVER SEEN BEFORE + THIS FELLOW HAD DREBBER BY THE COLLAR AND WHEN THEY CAME TO THE HEAD OF THE STEPS HE GAVE HIM A SHOVE AND A KICK WHICH SENT HIM HALF ACROSS THE ROAD + YOU HOUND HE CRIED SHAKING HIS STICK AT HIM I'LL TEACH YOU TO INSULT AN HONEST GIRL + HE WAS SO HOT THAT I THINK HE WOULD HAVE THRASHED DREBBER WITH HIS CUDGEL ONLY THAT THE CUR STAGGERED AWAY DOWN THE ROAD AS FAST AS HIS LEGS WOULD CARRY HIM + HE RAN AS FAR AS THE CORNER AND THEN SEEING MY CAB HE HAILED ME AND JUMPED IN + DRIVE ME TO HALLIDAY'S PRIVATE HOTEL SAID HE + QUOTE WHEN I HAD HIM FAIRLY INSIDE MY CAB MY HEART JUMPED SO WITH JOY THAT I FEARED LEST AT THIS LAST MOMENT MY ANEURISM MIGHT GO WRONG + I DROVE ALONG SLOWLY WEIGHING IN MY OWN MIND WHAT IT WAS BEST TO DO + I MIGHT TAKE HIM RIGHT OUT INTO THE COUNTRY AND THERE IN SOME DESERTED LANE HAVE MY LAST INTERVIEW WITH HIM + I HAD ALMOST DECIDED UPON THIS WHEN HE SOLVED THE PROBLEM FOR ME + THE CRAZE FOR DRINK HAD SEIZED HIM AGAIN AND HE ORDERED ME TO PULL UP OUTSIDE A GIN PALACE + HE WENT IN LEAVING WORD THAT I SHOULD WAIT FOR HIM + THERE HE REMAINED UNTIL CLOSING TIME. AND WHEN HE CAME OUT HE WAS SO FAR GONE THAT I KNEW THE GAME WAS IN MY OWN HANDS + DON'T IMAGINE THAT I INTENDED TO KILL HIM IN COLD BLOOD + IT WOULD ONLY HAVE BEEN RIGID JUSTICE IF I HAD DONE SO BUT I COULD NOT BRING MYSELF TO DO IT + I HAD LONG DETERMINED THAT HE SHOULD HAVE A SHOW FOR HIS LIFE IF HE CHOSE TO TAKE ADVANTAGE OF IT + AMONG THE MANY BILLETS WHICH I HAVE FILLED IN AMERICA DURING MY WANDERING LIFE I WAS ONCE JANITOR AND SWEEPER OUT OF THE LABORATORY AT YORK COLLEGE + ONE DAY THE PROFESSOR WAS LECTURING ON POISONS AND HE SHOWED HIS STUDENTS SOME ALKALOID AS HE CALLED IT WHICH HE HAD EXTRACTED FROM SOME SOUTH AMERICAN ARROW POISON AND WHICH WAS SO POWERFUL THAT THE LEAST GRAIN MEANT INSTANT DEATH + I SPOTTED THE BOTTLE IN WHICH THIS PREPARATION WAS KEPT AND WHEN THEY WERE ALL GONE I HELPED MYSELF TO A LITTLE OF IT + I WAS A FAIRLY GOOD DISPENSER SO I WORKED THIS ALKALOID INTO SMALL SOLUBLE PILLS AND EACH PILL I PUT IN A BOX WITH A SIMILAR PILL MADE WITHOUT THE POISON + I DETERMINED AT THE TIME THAT WHEN I HAD MY CHANCE MY GENTLEMEN SHOULD EACH HAVE A DRAW OUT OF ONE OF THESE BOXES WHILE I ATE THE PILL THAT REMAINED + IT WOULD BE QUITE AS DEADLY AND A GOOD DEAL LESS NOISY THAN FIRING ACROSS A HANDKERCHIEF + FROM THAT DAY I HAD ALWAYS MY PILL BOXES ABOUT WITH ME. AND THE TIME HAD NOW COME WHEN I WAS TO USE THEM + IT WAS NEARER ONE THAN TWELVE AND A WILD BLEAK NIGHT BLOWING HARD AND RAINING IN TORRENTS + DISMAL AS IT WAS OUTSIDE + I WAS GLAD WITHIN SO GLAD THAT I COULD HAVE SHOUTED OUT FROM PURE EXULTATION + IF ANY OF YOU GENTLEMEN HAVE EVER PINED FOR A THING AND LONGED FOR IT DURING TWENTY LONG YEARS AND THEN SUDDENLY FOUND IT WITHIN YOUR REACH YOU WOULD UNDERSTAND MY FEELINGS + I LIT A CIGAR AND PUFFED AT IT TO STEADY MY NERVES BUT MY HANDS WERE TREMBLING AND MY TEMPLES THROBBING WITH EXCITEMENT + AS I DROVE I COULD SEE OLD JOHN FERRIER AND SWEET LUCY LOOKING AT ME OUT OF THE DARKNESS AND SMILING AT ME JUST AS PLAIN AS I SEE YOU ALL IN THIS ROOM + ALL THE WAY THEY WERE AHEAD OF ME ONE ON EACH SIDE OF THE HORSE UNTIL I PULLED UP AT THE HOUSE IN THE BRIXTON ROAD + THERE WAS NOT A SOUL TO BE SEEN NOR A SOUND TO BE HEARD EXCEPT THE DRIPPING OF THE RAIN + WHEN I LOOKED IN AT THE WINDOW I FOUND DREBBER ALL HUDDLED TOGETHER IN A DRUNKEN SLEEP + I SHOOK HIM BY THE ARM IT'S TIME TO GET OUT + I SAID + ALL RIGHT CABBY SAID HE + I SUPPOSE HE THOUGHT WE HAD COME TO THE HOTEL THAT HE HAD MENTIONED FOR HE GOT OUT WITHOUT ANOTHER WORD AND FOLLOWED ME DOWN THE GARDEN + I HAD TO WALK BESIDE HIM TO KEEP HIM STEADY FOR HE WAS STILL A LITTLE TOP HEAVY + WHEN WE CAME TO THE DOOR I OPENED IT AND LED HIM INTO THE FRONT ROOM + I GIVE YOU MY WORD THAT ALL THE WAY THE FATHER AND THE DAUGHTER WERE WALKING IN FRONT OF US + QUOTE IT'S INFERNALLY DARK SAID HE STAMPING ABOUT + WE'LL SOON HAVE A LIGHT I SAID STRIKING A MATCH AND PUTTING IT TO A WAX CANDLE WHICH I HAD BROUGHT WITH ME + NOW ENOCH DREBBER I CONTINUED TURNING TO HIM AND HOLDING THE LIGHT TO MY OWN FACE WHO AM L. + HE GAZED AT ME WITH BLEARED DRUNKEN EYES FOR A MOMENT AND THEN I SAW A HORROR SPRING UP IN THEM AND CONVULSE HIS WHOLE FEATURES WHICH SHOWED ME THAT HE KNEW ME + HE STAGGERED BACK WITH A LIVID FACE AND I SAW THE PERSPIRATION BREAK OUT UPON HIS BROW WHILE HIS TEETH CHATTERED IN HIS HEAD + AT THE SIGHT I LEANED MY BACK AGAINST THE DOOR AND LAUGHED LOUD AND LONG + I HAD ALWAYS KNOWN THAT VENGEANCE WOULD BE SWEET BUT I HAD NEVER HOPED FOR THE CONTENTMENT OF SOUL WHICH NOW POSSESSED ME + YOU DOG + I SAID I HAVE HUNTED YOU FROM SALT LAKE CITY TO SAINT PETERSBURG AND YOU HAVE ALWAYS ESCAPED ME + NOW AT LAST YOUR WANDERINGS HAVE COME TO AN END FOR EITHER YOU OR I SHALL NEVER SEE TO MORROW'S SUN RISE + HE SHRUNK STILL FARTHER AWAY AS I SPOKE AND I COULD SEE ON HIS FACE THAT HE THOUGHT I WAS MAD + SO I WAS FOR THE TIME + THE PULSES IN MY TEMPLES BEAT LIKE SLEDGEHAMMERS AND I BELIEVE I WOULD HAVE HAD A FIT OF SOME SORT IF THE BLOOD HAD NOT GUSHED FROM MY NOSE AND RELIEVED ME + WHAT DO YOU THINK OF LUCY FERRIER NOW + I CRIED LOCKING THE DOOR AND SHAKING THE KEY IN HIS FACE + PUNISHMENT HAS BEEN SLOW IN COMING BUT IT HAS OVERTAKEN YOU AT LAST + I SAW HIS COWARD LIPS TREMBLE AS I SPOKE + HE WOULD HAVE BEGGED FOR HIS LIFE BUT HE KNEW WELL THAT IT WAS USELESS + WOULD YOU MURDER ME HE STAMMERED + QUOTE THERE IS NO MURDER I ANSWERED + WHO TALKS OF MURDERING A MAD DOG + WHAT MERCY HAD YOU UPON MY POOR DARLING WHEN YOU DRAGGED HER FROM HER SLAUGHTERED FATHER AND BORE HER AWAY TO YOUR ACCURSED AND SHAMELESS HAREM + IT WAS NOT I WHO KILLED HER FATHER HE CRIED + BUT IT WAS YOU WHO BROKE HER INNOCENT HEART I SHRIEKED THRUSTING THE BOX BEFORE HIM + LET THE HIGH GOD JUDGE BETWEEN US + CHOOSE AND EAT + THERE IS DEATH IN ONE AND LIFE IN THE OTHER + I SHALL TAKE WHAT YOU LEAVE + LET US SEE IF THERE IS JUSTICE UPON THE EARTH OR IF WE ARE RULED BY CHANCE + HE COWERED AWAY WITH WILD CRIES AND PRAYERS FOR MERCY BUT I DREW MY KNIFE AND HELD IT TO HIS THROAT UNTIL HE HAD OBEYED ME + THEN I SWALLOWED THE OTHER AND WE STOOD FACING ONE ANOTHER IN SILENCE FOR A MINUTE OR MORE WAITING TO SEE WHICH WAS TO LIVE AND WHICH WAS TO DIE + SHALL I EVER FORGET THE LOOK WHICH CAME OVER HIS FACE WHEN THE FIRST WARNING PANGS TOLD HIM THAT THE POISON WAS IN HIS SYSTEM + I LAUGHED AS I SAW IT AND HELD LUCY'S MARRIAGE RING IN FRONT OF HIS EYES + IT WAS BUT FOR A MOMENT FOR THE ACTION OF THE ALKALOID IS RAPID + A SPASM OF PAIN CONTORTED HIS FEATURES HE THREW HIS HANDS OUT IN FRONT OF HIM STAGGERED AND THEN WITH A HOARSE CRY FELL HEAVILY UPON THE FLOOR + I TURNED HIM OVER WITH MY FOOT AND PLACED MY HAND UPON HIS HEART + THERE WAS NO MOVEMENT + HE WAS DEAD + THE BLOOD HAD BEEN STREAMING FROM MY NOSE BUT I HAD TAKEN NO NOTICE OF IT + I DON'T KNOW WHAT IT WAS THAT PUT IT INTO MY HEAD TO WRITE UPON THE WALL WITH IT + PERHAPS IT WAS SOME MISCHIEVOUS IDEA OF SETTING THE POLICE UPON A WRONG TRACK FOR I FELT LIGHTHEARTED AND CHEERFUL + I REMEMBER A GERMAN BEING FOUND IN NEW YORK WITH RACHE WRITTEN UP ABOVE HIM AND IT WAS ARGUED AT THE TIME IN THE NEWSPAPERS THAT THE SECRET SOCIETIES MUST HAVE DONE IT + I GUESSED THAT WHAT PUZZLED THE NEW YORKERS WOULD PUZZLE THE LONDONERS SO I DIPPED MY FINGER IN MY OWN BLOOD AND PRINTED IT ON A CONVENIENT PLACE ON THE WALL + THEN I WALKED DOWN TO MY CAB AND FOUND THAT THERE WAS NOBODY ABOUT AND THAT THE NIGHT WAS STILL VERY WILD + I HAD DRIVEN SOME DISTANCE WHEN I PUT MY HAND INTO THE POCKET IN WHICH I USUALLY KEPT LUCY'S RING AND FOUND THAT IT WAS NOT THERE + I WAS THUNDERSTRUCK AT THIS FOR IT WAS THE ONLY MEMENTO THAT I HAD OF HER + THINKING THAT I MIGHT HAVE DROPPED IT WHEN I STOOPED OVER DREBBER'S BODY I DROVE BACK AND LEAVING MY CAB IN A SIDE STREET I WENT BOLDLY UP TO THE HOUSE FOR I WAS READY TO DARE ANYTHING RATHER THAN LOSE THE RING + WHEN I ARRIVED THERE I WALKED RIGHT INTO THE ARMS OF A POLICEOFFICER WHO WAS COMING OUT AND ONLY MANAGED TO DISARM HIS SUSPICIONS BY PRETENDING TO BE HOPELESSLY DRUNK + THAT WAS HOW ENOCH DREBBER CAME TO HIS END + ALL I HAD TO DO THEN WAS TO DO AS MUCH FOR STANGERSON AND SO PAY OFF JOHN FERRIER'S DEBT + I KNEW THAT HE WAS STAYING AT HALLIDAY'S PRIVATE HOTEL AND I HUNG ABOUT ALL DAY BUT HE NEVER CAME OUT + I FANCY THAT HE SUSPECTED SOMETHING WHEN DREBBER FAILED TO PUT IN AN APPEARANCE + HE WAS CUNNING WAS STANGERSON AND ALWAYS ON HIS GUARD + IF HE THOUGHT HE COULD KEEP ME OFF BY STAYING INDOORS HE WAS VERY MUCH MISTAKEN + I SOON FOUND OUT WHICH WAS THE WINDOW OF HIS BEDROOM AND EARLY NEXT MORNING I TOOK ADVANTAGE OF SOME LADDERS WHICH WERE LYING IN THE LANE BEHIND THE HOTEL AND SO MADE MY WAY INTO HIS ROOM IN THE GRAY OF THE DAWN + I WOKE HIM UP AND TOLD HIM THAT THE HOUR HAD COME WHEN HE WAS TO ANSWER FOR THE LIFE HE HAD TAKEN SO LONG BEFORE + I DESCRIBED DREBBER'S DEATH TO HIM AND I GAVE HIM THE SAME CHOICE OF THE POISONED PILLS + INSTEAD OF GRASPING AT THE CHANCE OF SAFETY WHICH THAT OFFERED HIM HE SPRANG FROM HIS BED AND FLEW AT MY THROAT + IN SELF DEFENCE I STABBED HIM TO THE HEART + IT WOULD HAVE BEEN THE SAME IN ANY CASE FOR PROVIDENCE WOULD NEVER HAVE ALLOWED HIS GUILTY HAND TO PICK OUT ANYTHING BUT THE POISON + QUOTE I HAVE LITTLE MORE TO SAY AND IT'S AS WELL FOR I AM ABOUT DONE UP + I WENT ON CABBING IT FOR A DAY OR SO INTENDING TO KEEP AT IT UNTIL I COULD SAVE ENOUGH TO TAKE ME BACK TO AMERICA + I WAS STANDING IN THE YARD WHEN A RAGGED YOUNGSTER ASKED IF THERE WAS A CABBY THERE CALLED JEFFERSON HOPE AND SAID THAT HIS CAB WAS WANTED BY A GENTLEMAN AT TWENTY TWO L. B. BAKER STREET + I WENT ROUND SUSPECTING NO HARM AND THE NEXT THING I KNEW THIS YOUNG MAN HERE HAD THE BRACELETS ON MY WRISTS AND AS NEATLY SHACKLED AS EVER I SAW IN MY LIFE + THAT'S THE WHOLE OF MY STORY GENTLEMEN + YOU MAY CONSIDER ME TO BE A MURDERER BUT I HOLD THAT I AM JUST AS MUCH AN OFFICER OF JUSTICE AS YOU ARE + SO THRILLING HAD THE MAN'S NARRATIVE BEEN AND HIS MANNER WAS SO IMPRESSIVE THAT WE HAD SAT SILENT AND ABSORBED + EVEN THE PROFESSIONAL DETECTIVES BLASE AS THEY WERE IN EVERY DETAIL OF CRIME APPEARED TO BE KEENLY INTERESTED IN THE MAN'S STORY + WHEN HE FINISHED WE SAT FOR SOME MINUTES IN A STILLNESS WHICH WAS ONLY BROKEN BY THE SCRATCHING OF LESTRADE'S PENCIL AS HE GAVE THE FINISHING TOUCHES TO HIS SHORTHAND ACCOUNT + THERE IS ONLY ONE POINT ON WHICH I SHOULD LIKE A LITTLE MORE INFORMATION SHERLOCK HOLMES SAID AT LAST + WHO WAS YOUR ACCOMPLICE WHO CAME FOR THE RING WHICH I ADVERTISED + THE PRISONER WINKED AT MY FRIEND JOCOSELY + I CAN TELL MY OWN SECRETS HE SAID BUT I DON'T GET OTHER PEOPLE INTO TROUBLE + I SAW YOUR ADVERTISEMENT AND I THOUGHT IT MIGHT BE A PLANT OR IT MIGHT BE THE RING WHICH I WANTED + MY FRIEND VOLUNTEERED TO GO AND SEE + I THINK YOU'LL OWN HE DID IT SMARTLY + QUOTE NOT A DOUBT OF THAT QUOTE SAID HOLMES HEARTILY + NOW GENTLEMEN THE INSPECTOR REMARKED GRAVELY THE FORMS OF THE LAW MUST BE COMPLIED WITH + ON THURSDAY THE PRISONER WILL BE BROUGHT BEFORE THE MAGISTRATES AND YOUR ATTENDANCE WILL BE REQUIRED + UNTIL THEN I WILL BE RESPONSIBLE FOR HIM + HE RANG THE BELL AS HE SPOKE AND JEFFERSON HOPE WAS LED OFF BY A COUPLE OF WARDERS WHILE MY FRIEND AND I MADE OUR WAY OUT OF THE STATION AND TOOK A CAB BACK TO BAKER STREET + CHAPTER SEVEN THE CONCLUSION + WE HAD ALL BEEN WARNED TO APPEAR BEFORE THE MAGISTRATES UPON THE THURSDAY BUT WHEN THE THURSDAY CAME THERE WAS NO OCCASION FOR OUR TESTIMONY + A HIGHER JUDGE HAD TAKEN THE MATTER IN HAND AND JEFFERSON HOPE HAD BEEN SUMMONED BEFORE A TRIBUNAL WHERE STRICT JUSTICE WOULD BE METED OUT TO HIM + ON THE VERY NIGHT AFTER HIS CAPTURE THE ANEURISM BURST AND HE WAS FOUND IN THE MORNING STRETCHED UPON THE FLOOR OF THE CELL WITH A PLACID SMILE UPON HIS FACE AS THOUGH HE HAD BEEN ABLE IN HIS DYING MOMENTS TO LOOK BACK UPON A USEFUL LIFE AND ON WORK WELL DONE + GREGSON AND LESTRADE WILL BE WILD ABOUT HIS DEATH HOLMES REMARKED AS WE CHATTED IT OVER NEXT EVENING + WHERE WILL THEIR GRAND ADVERTISEMENT BE NOW + I DON'T SEE THAT THEY HAD VERY MUCH TO DO WITH HIS CAPTURE I ANSWERED + QUOTE WHAT YOU DO IN THIS WORLD IS A MATTER OF NO CONSEQUENCE QUOTE RETURNED MY COMPANION BITTERLY + THE QUESTION IS WHAT CAN YOU MAKE PEOPLE BELIEVE THAT YOU HAVE DONE + NEVER MIND HE CONTINUED MORE BRIGHTLY AFTER A PAUSE + I WOULD NOT HAVE MISSED THE INVESTIGATION FOR ANYTHING + THERE HAS BEEN NO BETTER CASE WITHIN MY RECOLLECTION + SIMPLE AS IT WAS THERE WERE SEVERAL MOST INSTRUCTIVE POINTS ABOUT IT + SIMPLE + I EJACULATED + QUOTE WELL REALLY IT CAN HARDLY BE DESCRIBED AS OTHERWISE QUOTE SAID SHERLOCK HOLMES SMILING AT MY SURPRISE + THE PROOF OF ITS INTRINSIC SIMPLICITY IS THAT WITHOUT ANY HELP SAVE A FEW VERY ORDINARY DEDUCTIONS I WAS ABLE TO LAY MY HAND UPON THE CRIMINAL WITHIN THREE DAYS + THAT IS TRUE SAID I + I HAVE ALREADY EXPLAINED TO YOU THAT WHAT IS OUT OF THE COMMON IS USUALLY A GUIDE RATHER THAN A HINDRANCE + IN SOLVING A PROBLEM OF THIS SORT THE GRAND THING IS TO BE ABLE TO REASON BACKWARD + THAT IS A VERY USEFUL ACCOMPLISHMENT AND A VERY EASY ONE BUT PEOPLE DO NOT PRACTISE IT MUCH + IN THE EVERYDAY AFFAIRS OF LIFE IT IS MORE USEFUL TO REASON FORWARD AND SO THE OTHER COMES TO BE NEGLECTED + THERE ARE FIFTY WHO CAN REASON SYNTHETICALLY FOR ONE WHO CAN REASON ANALYTICALLY + I CONFESS SAID I THAT I DO NOT QUITE FOLLOW YOU + QUOTE I HARDLY EXPECTED THAT YOU WOULD + LET ME SEE IF I CAN MAKE IT CLEARER + MOST PEOPLE IF YOU DESCRIBE A TRAIN OF EVENTS TO THEM WILL TELL YOU WHAT THE RESULT WOULD BE + THEY CAN PUT THOSE EVENTS TOGETHER IN THEIR MINDS AND ARGUE FROM THEM THAT SOMETHING WILL COME TO PASS + THERE ARE FEW PEOPLE HOWEVER WHO IF YOU TOLD THEM A RESULT WOULD BE ABLE TO EVOLVE FROM THEIR OWN INNER CONSCIOUSNESS WHAT THE STEPS WERE WHICH LED UP TO THAT RESULT + THIS POWER IS WHAT I MEAN WHEN I TALK OF REASONING BACKWARD OR ANALYTICALLY + I UNDERSTAND SAID I + NOW THIS WAS A CASE IN WHICH YOU WERE GIVEN THE RESULT AND HAD TO FIND EVERYTHING ELSE FOR YOURSELF + NOW LET ME ENDEAVOUR TO SHOW YOU THE DIFFERENT STEPS IN MY REASONING + TO BEGIN AT THE BEGINNING + I APPROACHED THE HOUSE AS YOU KNOW ON FOOT AND WITH MY MIND ENTIRELY FREE FROM ALL IMPRESSIONS + I NATURALLY BEGAN BY EXAMINING THE ROADWAY AND THERE AS I HAVE ALREADY EXPLAINED TO YOU I SAW CLEARLY THE MARKS OF A CAB WHICH I ASCERTAINED BY INQUIRY MUST HAVE BEEN THERE DURING THE NIGHT + I SATISFIED MYSELF THAT IT WAS A CAB AND NOT A PRIVATE CARRIAGE BY THE NARROW GAUGE OF THE WHEELS + THE ORDINARY LONDON GROWLER IS CONSIDERABLY LESS WIDE THAN A GENTLEMAN'S BROUGHAM + THIS WAS THE FIRST POINT GAINED + I THEN WALKED SLOWLY DOWN THE GARDEN PATH WHICH HAPPENED TO BE COMPOSED OF A CLAY SOIL PECULIARLY SUITABLE FOR TAKING IMPRESSIONS + NO DOUBT IT APPEARED TO YOU TO BE A MERE TRAMPLED LINE OF SLUSH BUT TO MY TRAINED EYES EVERY MARK UPON ITS SURFACE HAD A MEANING + THERE IS NO BRANCH OF DETECTIVE SCIENCE WHICH IS SO IMPORTANT AND SO MUCH NEGLECTED AS THE ART OF TRACING FOOTSTEPS + HAPPILY I HAVE ALWAYS LAID GREAT STRESS UPON IT AND MUCH PRACTICE HAS MADE IT SECOND NATURE TO ME + I SAW THE HEAVY FOOTMARKS OF THE CONSTABLES BUT I SAW ALSO THE TRACK OF THE TWO MEN WHO HAD FIRST PASSED THROUGH THE GARDEN + IT WAS EASY TO TELL THAT THEY HAD BEEN BEFORE THE OTHERS BECAUSE IN PLACES THEIR MARKS HAD BEEN ENTIRELY OBLITERATED BY THE OTHERS COMING UPON THE TOP OF THEM + IN THIS WAY MY SECOND LINK WAS FORMED WHICH TOLD ME THAT THE NOCTURNAL VISITORS WERE TWO IN NUMBER ONE REMARKABLE FOR HIS HEIGHT AS I CALCULATED FROM THE LENGTH OF HIS STRIDE AND THE OTHER FASHIONABLY DRESSED TO JUDGE FROM THE SMALL AND ELEGANT IMPRESSION LEFT BY HIS BOOTS + ON ENTERING THE HOUSE THIS LAST INFERENCE WAS CONFIRMED + MY WELL BOOTED MAN LAY BEFORE ME + THE TALL ONE THEN HAD DONE THE MURDER IF MURDER THERE WAS + THERE WAS NO WOUND UPON THE DEAD MAN'S PERSON BUT THE AGITATED EXPRESSION UPON HIS FACE ASSURED ME THAT HE HAD FORESEEN HIS FATE BEFORE IT CAME UPON HIM + MEN WHO DIE FROM HEART DISEASE OR ANY SUDDEN NATURAL CAUSE NEVER BY ANY CHANCE EXHIBIT AGITATION UPON THEIR FEATURES + HAVING SNIFFED THE DEAD MAN'S LIPS I DETECTED A SLIGHTLY SOUR SMELL AND I CAME TO THE CONCLUSION THAT HE HAD HAD POISON FORCED UPON HIM + AGAIN I ARGUED THAT IT HAD BEEN FORCED UPON HIM FROM THE HATRED AND FEAR EXPRESSED UPON HIS FACE + BY THE METHOD OF EXCLUSION I HAD ARRIVED AT THIS RESULT FOR NO OTHER HYPOTHESIS WOULD MEET THE FACTS + DO NOT IMAGINE THAT IT WAS A VERY UNHEARD OF IDEA + THE FORCIBLE ADMINISTRATION OF POISON IS BY NO MEANS A NEW THING IN CRIMINAL ANNALS + THE CASES OF DOLSKY IN ODESSA AND OF LETURIER IN MONTPELLIER WILL OCCUR AT ONCE TO ANY TOXICOLOGIST + QUOTE AND NOW CAME THE GREAT QUESTION AS TO THE REASON WHY + ROBBERY HAD NOT BEEN THE OBJECT OF THE MURDER FOR NOTHING WAS TAKEN + WAS IT POLITICS THEN OR WAS IT A WOMAN + THAT WAS THE QUESTION WHICH CONFRONTED ME + I WAS INCLINED FROM THE FIRST TO THE LATTER SUPPOSITION + POLITICAL ASSASSINS ARE ONLY TOO GLAD TO DO THEIR WORK AND TO FLY + THIS MURDER HAD ON THE CONTRARY BEEN DONE MOST DELIBERATELY AND THE PERPETRATOR HAD LEFT HIS TRACKS ALL OVER THE ROOM SHOWING THAT HE HAD BEEN THERE ALL THE TIME + IT MUST HAVE BEEN A PRIVATE WRONG AND NOT A POLITICAL ONE WHICH CALLED FOR SUCH A METHODICAL REVENGE + WHEN THE INSCRIPTION WAS DISCOVERED UPON THE WALL I WAS MORE INCLINED THAN EVER TO MY OPINION + THE THING WAS TOO EVIDENTLY A BLIND + WHEN THE RING WAS FOUND HOWEVER IT SETTLED THE QUESTION + CLEARLY THE MURDERER HAD USED IT TO REMIND HIS VICTIM OF SOME DEAD OR ABSENT WOMAN + IT WAS AT THIS POINT THAT I ASKED CREGSON WHETHER HE HAD INQUIRED IN HIS TELEGRAM TO CLEVELAND AS TO ANY PARTICULAR POINT IN MR. DREBBER'S FORMER CAREER + HE ANSWERED YOU REMEMBER IN THE NEGATIVE + I THEN PROCEEDED TO MAKE A CAREFUL EXAMINATION OF THE ROOM WHICH CONFIRMED ME IN MY OPINION AS TO THE MURDERER'S HEIGHT AND FURNISHED ME WITH THE ADDITIONAL DETAILS AS TO THE TRICHINOPOLY CIGAR AND THE LENGTH OF HIS NAILS + I HAD ALREADY COME TO THE CONCLUSION SINCE THERE WERE NO SIGNS OF A STRUGGLE THAT THE BLOOD WHICH COVERED THE FLOOR HAD BURST FROM THE MURDERER'S NOSE IN HIS EXCITEMENT + I COULD PERCEIVE THAT THE TRACK OF BLOOD COINCIDED WITH THE TRACK OF HIS FEET + IT IS SELDOM THAT ANY MAN UNLESS HE IS VERY FULL BLOODED BREAKS OUT IN THIS WAY THROUGH EMOTION SO I HAZARDED THE OPINION THAT THE CRIMINAL WAS PROBABLY A ROBUST AND RUDDY FACED MAN + EVENTS PROVED THAT I HAD JUDGED CORRECTLY + HAVING LEFT THE HOUSE I PROCEEDED TO DO WHAT GREGSON HAD NEGLECTED + I TELEGRAPHED TO THE HEAD OF THE POLICE AT CLEVELAND LIMITING MY INQUIRY TO THE CIRCUMSTANCES CONNECTED WITH THE MARRIAGE OF ENOCH DREBBER + THE ANSWER WAS CONCLUSIVE + IT TOLD ME THAT DREBBER HAD ALREADY APPLIED FOR THE PROTECTION OF THE LAW AGAINST AN OLD RIVAL IN LOVE NAMED JEFFERSON HOPE AND THAT THIS SAME HOPE WAS AT PRESENT IN EUROPE + I KNEW NOW THAT I HELD THE CLUE TO THE MYSTERY IN MY HAND AND ALL THAT REMAINED WAS TO SECURE THE MURDERER + I HAD ALREADY DETERMINED IN MY OWN MIND THAT THE MAN WHO HAD WALKED INTO THE HOUSE WITH DREBBER WAS NONE OTHER THAN THE MAN WHO HAD DRIVEN THE CAB + THE MARKS IN THE ROAD SHOWED ME THAT THE HORSE HAD WANDERED ON IN A WAY WHICH WOULD HAVE BEEN IMPOSSIBLE HAD THERE BEEN ANYONE IN CHARGE OF IT + WHERE THEN COULD THE DRIVER BE UNLESS HE WERE INSIDE THE HOUSE + AGAIN IT IS ABSURD TO SUPPOSE THAT ANY SANE MAN WOULD CARRY OUT A DELIBERATE CRIME UNDER THE VERY EYES AS IT WERE OF A THIRD PERSON WHO WAS SURE TO BETRAY HIM + LASTLY SUPPOSING ONE MAN WISHED TO DOG ANOTHER THROUGH LONDON WHAT BETTER MEANS COULD HE ADOPT THAN TO TURN CABDRIVER + ALL THESE CONSIDERATIONS LED ME TO THE IRRESISTIBLE CONCLUSION THAT JEFFERSON HOPE WAS TO BE FOUND AMONG THE JARVEYS OF THE METROPOLIS + IF HE HAD BEEN ONE THERE WAS NO REASON TO BELIEVE THAT HE HAD CEASED TO BE + ON THE CONTRARY FROM HIS POINT OF VIEW ANY SUDDEN CHANGE WOULD BE LIKELY TO DRAW ATTENTION TO HIMSELF + HE WOULD PROBABLY FOR A TIME AT LEAST CONTINUE TO PERFORM HIS DUTIES + THERE'WAS NO REASON TO SUPPOSE THAT HE WAS GOING UNDER AN ASSUMED NAME + WHY SHOULD HE CHANGE HIS NAME IN A COUNTRY WHERE NO ONE KNEW HIS ORIGINAL ONE + I THEREFORE ORGANIZED MY STREET ARAB DETECTIVE CORPS AND SENT THEM SYSTEMATICALLY TO EVERY CAB PROPRIETOR IN LONDON UNTIL THEY FERRETED OUT THE MAN THAT I WANTED + HOW WELL THEY SUCCEEDED AND HOW QUICKLY I TOOK ADVANTAGE OF IT ARE STILL FRESH IN YOUR RECOLLECTION + THE MURDER OF STANGERSON WAS AN INCIDENT WHICH WAS ENTIRELY UNEXPECTED BUT WHICH COULD HARDLY IN ANY CASE HAVE BEEN PREVENTED + THROUGH IT AS YOU KNOW I CAME INTO POSSESSION OF THE PILLS THE EXISTENCE OF WHICH I HAD ALREADY SURMISED + YOU SEE THE WHOLE THING IS A CHAIN OF LOGICAL SEQUENCES WITHOUT A BREAK OR FLAW + QUOTE IT IS WONDERFUL QUOTE + I CRIED + YOUR MERITS SHOULD BE PUBLICLY RECOGNIZED + YOU SHOULD PUBLISH AN ACCOUNT OF THE CASE + IF YOU WON'T I WILL FOR YOU + YOU MAY DO WHAT YOU LIKE DOCTOR HE ANSWERED + SEE HERE HE CONTINUED HANDING A PAPER OVER TO ME LOOK AT THIS + IT WAS THE ECHO FOR THE DAY AND THE PARAGRAPH TO WHICH HE POINTED WAS DEVOTED TO THE CASE IN QUESTION + THE PUBLIC IT SAID HAVE LOST A SENSATIONAL TREAT THROUGH THE SUDDEN DEATH OF THE MAN HOPE WHO WAS SUSPECTED OF THE MURDER OF MR. ENOCH DREBBER AND OF MR. JOSEPH STANGERSON + THE DETAILS OF THE CASE WILL PROBABLY BE NEVER KNOWN NOW THOUGH WE ARE INFORMED UPON GOOD AUTHORITY THAT THE CRIME WAS THE RESULT OF AN OLD STANDING AND ROMANTIC FEUD IN WHICH LOVE AND MORMONISM BORE A PART + IT SEEMS THAT BOTH THE VICTIMS BELONGED IN THEIR YOUNGER DAYS TO THE LATTER DAY SAINTS AND HOPE THE DECEASED PRISONER HAILS ALSO FROM SALT LAKE CITY + IF THE CASE HAS HAD NO OTHER EFFECT IT AT LEAST BRINGS OUT IN THE MOST STRIKING MANNER THE EFFICIENCY OF OUR DETECTIVE POLICE FORCE AND WILL SERVE AS A LESSON TO ALL FOREIGNERS THAT THEY WILL DO WISELY TO SETTLE THEIR FEUDS AT HOME AND NOT TO CARRY THEM ON TO BRITISH SOIL + IT IS AN OPEN SECRET THAT THE CREDIT OF THIS SMART CAPTURE BELONGS ENTIRELY TO THE WELL KNOWN SCOTLAND YARD OFFICIALS MESSRS LESTRADE AND GREGSON + THE MAN WAS APPREHENDED IT APPEARS IN THE ROOMS OF A CERTAIN MR. SHERLOCK HOLMES WHO HAS HIMSELF AS AN AMATEUR SHOWN SOME TALENT IN THE DETECTIVE LINE AND WHO WITH SUCH INSTRUCTORS MAY HOPE IN TIME TO ATTAIN TO SOME DEGREE OF THEIR SKILL + IT IS EXPECTED THAT A TESTIMONIAL OF SOME SORT WILL BE PRESENTED TO THE TWO OFFICERS AS A FITTING RECOGNITION OF THEIR SERVICES QUOTE + DIDN'T I TELL YOU SO WHEN WE STARTED CRIED SHERLOCK HOLMES WITH A LAUGH + THAT'S THE RESULT OF ALL OUR STUDY IN SCARLET TO GET THEM A TESTIMONIAL + NEVER MIND I ANSWERED I HAVE ALL THE FACTS IN MY JOURNAL AND THE PUBLIC SHALL KNOW THEM + IN THE MEANTIME YOU MUST MAKE YOURSELF CONTENTED BY THE CONSCIOUSNESS OF SUCCESS LIKE THE ROMAN MISER POPULUS ME SIBILAT AT MIHI PLAUDO IPSE DOMI SIMUL AC NUMMOS CONTEMPLAR IN ARCA diff --git a/samples/LMTutorial/train/threeudents.txt b/samples/LMTutorial/train/threeudents.txt new file mode 100755 index 0000000..90c3db5 --- /dev/null +++ b/samples/LMTutorial/train/threeudents.txt @@ -0,0 +1,535 @@ + IT WAS IN THE YEAR NINETY FIVE THAT A COMBINATION OF EVENTS INTO WHICH I NEED NOT ENTER CAUSED MR. SHERLOCK HOLMES AND MYSELF TO SPEND SOME WEEKS IN ONE OF OUR GREAT UNIVERSITY TOWNS AND IT WAS DURING THIS TIME THAT THE SMALL BUT INSTRUCTIVE ADVENTURE WHICH I AM ABOUT TO RELATE BEFELL US + IT WILL BE OBVIOUS THAT ANY DETAILS WHICH WOULD HELP THE READER EXACTLY TO IDENTIFY THE COLLEGE OR THE CRIMINAL WOULD BE INJUDICIOUS AND OFFENSIVE + SO PAINFUL A SCANDAL MAY WELL BE ALLOWED TO DIE OUT + WITH DUE DISCRETION THE INCIDENT ITSELF MAY HOWEVER BE DESCRIBED SINCE IT SERVES TO ILLUSTRATE SOME OF THOSE QUALITIES FOR WHICH MY FRIEND WAS REMARKABLE + I WILL ENDEAVOUR IN MY STATEMENT TO AVOID SUCH TERMS AS WOULD SERVE TO LIMIT THE EVENTS TO ANY PARTICULAR PLACE OR GIVE A CLUE AS TO THE PEOPLE CONCERNED + WE WERE RESIDING AT THE TIME IN FURNISHED LODGINGS CLOSE TO A LIBRARY WHERE SHERLOCK HOLMES WAS PURSUING SOME LABORIOUS RESEARCHES IN EARLY ENGLISH CHARTERS RESEARCHES WHICH LED TO RESULTS SO STRIKING THAT THEY MAY BE THE SUBJECT OF ONE OF MY FUTURE NARRATIVES + HERE IT WAS THAT ONE EVENING WE RECEIVED A VISIT FROM AN ACQUAINTANCE MR. HILTON SOAMES TUTOR AND LECTURER AT THE COLLEGE OF SAINT LUKE'S + MR. SOAMES WAS A TALL SPARE MAN OF A NERVOUS AND EXCITABLE TEMPERAMENT + I HAD ALWAYS KNOWN HIM TO BE RESTLESS IN HIS MANNER BUT ON THIS PARTICULAR OCCASION HE WAS IN SUCH A STATE OF UNCONTROLLABLE AGITATION THAT IT WAS CLEAR SOMETHING VERY UNUSUAL HAD OCCURRED + QUOTE I TRUST MR. HOLMES THAT YOU CAN SPARE ME A FEW HOURS OF YOUR VALUABLE TIME + WE HAVE HAD A VERY PAINFUL INCIDENT AT SAINT LUKE'S AND REALLY BUT FOR THE HAPPY CHANCE OF YOUR BEING IN TOWN I SHOULD HAVE BEEN AT A LOSS WHAT TO DO + I AM VERY BUSY JUST NOW AND I DESIRE NO DISTRACTIONS MY FRIEND ANSWERED + I SHOULD MUCH PREFER THAT YOU CALLED IN THE AID OF THE POLICE + NO NO MY DEAR SIR SUCH A COURSE IS UTTERLY IMPOSSIBLE + WHEN ONCE THE LAW IS EVOKED IT CANNOT BE STAYED AGAIN AND THIS IS JUST ONE OF THOSE CASES WHERE FOR THE CREDIT OF THE COLLEGE IT IS MOST ESSENTIAL TO AVOID SCANDAL + YOUR DISCRETION IS AS WELL KNOWN AS YOUR POWERS AND YOU ARE THE ONE MAN IN THE WORLD WHO CAN HELP ME + I BEG YOU MR. HOLMES TO DO WHAT YOU CAN + MY FRIEND'S TEMPER HAD NOT IMPROVED SINCE HE HAD BEEN DEPRIVED OF THE CONGENIAL SURROUNDINGS OF BAKER STREET + WITHOUT HIS SCRAPBOOKS HIS CHEMICALS AND HIS HOMELY UNTIDINESS HE WAS AN UNCOMFORTABLE MAN + HE SHRUGGED HIS SHOULDERS IN UNGRACIOUS ACQUIESCENCE WHILE OUR VISITOR IN HURRIED WORDS AND WITH MUCH EXCITABLE GESTICULATION POURED FORTH HIS STORY + QUOTE I MUST EXPLAIN TO YOU MR. HOLMES THAT TO MORROW IS THE FIRST DAY OF THE EXAMINATION FOR THE FORTESCUE SCHOLARSHIP + I AM ONE OF THE EXAMINERS + MY SUBJECT IS GREEK AND THE FIRST OF THE PAPERS CONSISTS OF A LARGE PASSAGE OF GREEK TRANSLATION WHICH THE CANDIDATE HAS NOT SEEN + THIS PASSAGE IS PRINTED ON THE EXAMINATION PAPER AND IT WOULD NATURALLY BE AN IMMENSE ADVANTAGE IF THE CANDIDATE COULD PREPARE IT IN ADVANCE + FOR THIS REASON GREAT CARE IS TAKEN TO KEEP THE PAPER SECRET + TO DAY ABOUT THREE O'CLOCK THE PROOFS OF THIS PAPER ARRIVED FROM THE PRINTERS + THE EXERCISE CONSISTS OF HALF A CHAPTER OF THUCYDIDES + I HAD TO READ IT OVER CAREFULLY AS THE TEXT MUST BE ABSOLUTELY CORRECT + AT FOUR THIRTY MY TASK WAS NOT YET COMPLETED + I HAD HOWEVER PROMISED TO TAKE TEA IN A FRIEND'S ROOMS SO I LEFT THE PROOF UPON MY DESK + I WAS ABSENT RATHER MORE THAN AN HOUR + YOU ARE AWARE MR. HOLMES THAT OUR COLLEGE DOORS ARE DOUBLE A GREEN BAIZE ONE WITHIN AND A HEAVY OAK ONE WITHOUT + AS I APPROACHED MY OUTER DOOR I WAS AMAZED TO SEE A KEY IN IT + FOR AN INSTANT I IMAGINED THAT I HAD LEFT MY OWN THERE BUT ON FEELING IN MY POCKET I FOUND THAT IT WAS ALL RIGHT + THE ONLY DUPLICATE WHICH EXISTED SO FAR AS I KNEW WAS THAT WHICH BELONGED TO MY SERVANT BANNISTER A MAN WHO HAS LOOKED AFTER MY ROOM FOR TEN YEARS AND WHOSE HONESTY IS ABSOLUTELY ABOVE SUSPICION + I FOUND THAT THE KEY WAS INDEED HIS THAT HE HAD ENTERED MY ROOM TO KNOW IF I WANTED TEA AND THAT HE HAD VERY CARELESSLY LEFT THE KEY IN THE DOOR WHEN HE CAME OUT + HIS VISIT TO MY ROOM MUST HAVE BEEN WITHIN A VERY FEW MINUTES OF MY LEAVING IT + HIS FORGETFULNESS ABOUT THE KEY WOULD HAVE MATTERED LITTLE UPON ANY OTHER OCCASION BUT ON THIS ONE DAY IT HAS PRODUCED THE MOST DEPLORABLE CONSEQUENCES + THE MOMENT I LOOKED AT MY TABLE I WAS AWARE THAT SOMEONE HAD RUMMAGED AMONG MY PAPERS + THE PROOF WAS IN THREE LONG SLIPS + I HAD LEFT THEM ALL TOGETHER + NOW I FOUND THAT ONE OF THEM WAS LYING ON THE FLOOR ONE WAS ON THE SIDE TABLE NEAR THE WINDOW AND THE THIRD WAS WHERE I HAD LEFT IT + HOLMES STIRRED FOR THE FIRST TIME + THE FIRST PAGE ON THE FLOOR THE SECOND IN THE WINDOW THE THIRD WHERE YOU LEFT IT SAID HE + QUOTE EXACTLY MR. HOLMES + YOU AMAZE ME + HOW COULD YOU POSSIBLY KNOW THAT + PRAY CONTINUE YOUR VERY INTERESTING STATEMENT + FOR AN INSTANT I IMAGINED THAT BANNISTER HAD TAKEN THE UNPARDONABLE LIBERTY OF EXAMINING MY PAPERS + HE DENIED IT HOWEVER WITH THE UTMOST EARNESTNESS AND I AM CONVINCED THAT HE WAS SPEAKING THE TRUTH + THE ALTERNATIVE WAS THAT SOMEONE PASSING HAD OBSERVED THE KEY IN THE DOOR HAD KNOWN THAT I WAS OUT AND HAD ENTERED TO LOOK AT THE PAPERS + A LARGE SUM OF MONEY IS AT STAKE FOR THE SCHOLARSHIP IS A VERY VALUABLE ONE AND AN UNSCRUPULOUS MAN MIGHT VERY WELL RUN A RISK IN ORDER TO GAIN AN ADVANTAGE OVER HIS FELLOWS + BANNISTER WAS VERY MUCH UPSET BY THE INCIDENT + HE HAD NEARLY FAINTED WHEN WE FOUND THAT THE PAPERS HAD UNDOUBTEDLY BEEN TAMPERED WITH + I GAVE HIM A LITTLE BRANDY AND LEFT HIM COLLAPSED IN A CHAIR WHILE I MADE A MOST CAREFUL EXAMINATION OF THE ROOM + I SOON SAW THAT THE INTRUDER HAD LEFT OTHER TRACES OF HIS PRESENCE BESIDES THE RUMPLED PAPERS + ON THE TABLE IN THE WINDOW WERE SEVERAL SHREDS FROM A PENCIL WHICH HAD BEEN SHARPENED + A BROKEN TIP OF LEAD WAS LYING THERE ALSO + EVIDENTLY THE RASCAL HAD COPIED THE PAPER IN A GREAT HURRY HAD BROKEN HIS PENCIL AND HAD BEEN COMPELLED TO PUT A FRESH POINT TO IT + QUOTE EXCELLENT QUOTE SAID HOLMES WHO WAS RECOVERING HIS GOODHUMOUR AS HIS ATTENTION BECAME MORE ENGROSSED BY THE CASE + FORTUNE HAS BEEN YOUR FRIEND + THIS WAS NOT ALL + I HAVE A NEW WRITING TABLE WITH A FINE SURFACE OF RED LEATHER + I AM PREPARED TO SWEAR AND SO IS BANNISTER THAT IT WAS SMOOTH AND UNSTAINED + NOW I FOUND A CLEAN CUT IN IT ABOUT THREE INCHES LONG NOT A MERE SCRATCH BUT A POSITIVE CUT + NOT ONLY THIS BUT ON THE TABLE I FOUND A SMALL BALL OF BLACK DOUGH OR CLAY WITH SPECKS OF SOMETHING WHICH LOOKS LIKE SAWDUST IN IT + I AM CONVINCED THAT THESE MARKS WERE LEFT BY THE MAN WHO RIFLED THE PAPERS + THERE WERE NO FOOTMARKS AND NO OTHER EVIDENCE AS TO HIS IDENTITY + I WAS AT MY WIT'S END WHEN SUDDENLY THE HAPPY THOUGHT OCCURRED TO ME THAT YOU WERE IN THE TOWN AND I CAME STRAIGHT ROUND TO PUT THE MATTER INTO YOUR HANDS + DO HELP ME MR. HOLMES + YOU SEE MY DILEMMA + EITHER I MUST FIND THE MAN OR ELSE THE EXAMINATION MUST BE POSTPONED UNTIL FRESH PAPERS ARE PREPARED AND SINCE THIS CANNOT BE DONE WITHOUT EXPLANATION THERE WILL ENSUE A HIDEOUS SCANDAL WHICH WILL THROW A CLOUD NOT ONLY ON THE COLLEGE BUT ON THE UNIVERSITY + ABOVE ALL THINGS I DESIRE TO SETTLE THE MATTER QUIETLY AND DISCREETLY + I SHALL BE HAPPY TO LOOK INTO IT AND TO GIVE YOU SUCH ADVICE AS I CAN SAID HOLMES RISING AND PUTTING ON HIS OVERCOAT + THE CASE IS NOT ENTIRELY DEVOID OF INTEREST + HAD ANYONE VISITED YOU IN YOUR ROOM AFTER THE PAPERS CAME TO YOU QUOTE + YES YOUNG DAULAT RAS AN INDIAN STUDENT WHO LIVES ON THE SAME STAIR CAME IN TO ASK ME SOME PARTICULARS ABOUT THE EXAMINATION + FOR WHICH HE WAS ENTERED + YES + AND THE PAPERS WERE ON YOUR TABLE + TO THE BEST OF MY BELIEF THEY WERE ROLLED UP + QUOTE BUT MIGHT BE RECOGNIZED AS PROOFS QUOTE + POSSIBLY + NO ONE ELSE IN YOUR ROOM + NUMBER + DID ANYONE KNOW THAT THESE PROOFS WOULD BE THERE + NO ONE SAVE THE PRINTER + QUOTE DID THIS MAN BANNISTER KNOW QUOTE + NO CERTAINLY NOT + NO ONE KNEW + WHERE IS BANNISTER NOW + HE WAS VERY ILL POOR FELLOW + I LEFT HIM COLLAPSED IN THE CHAIR + I WAS IN SUCH A HURRY TO COME TO YOU + QUOTE YOU LEFT YOUR DOOR OPEN QUOTE + I LOCKED UP THE PAPERS FIRST + THEN IT AMOUNTS TO THIS MR. SOAMES THAT UNLESS THE INDIAN STUDENT RECOGNIZED THE ROLL AS BEING PROOFS THE MAN WHO TAMPERED WITH THEM CAME UPON THEM ACCIDENTALLY WITHOUT KNOWING THAT THEY WERE THERE + SO IT SEEMS TO ME + HOLMES GAVE AN ENIGMATIC SMILE + WELL SAID HE. LET US GO ROUND + NOT ONE OF YOUR CASES + WATSON MENTAL NOT PHYSICAL + ALL RIGHT COME IF YOU WANT TO + NOW MR. SOAMES AT YOUR DISPOSAL + THE SITTING ROOM OF OUR CLIENT OPENED BY A LONG LOW LATTICED WINDOW ON TO THE ANCIENT LICHEN TINTED COURT OF THE OLD COLLEGE + A GOTHIC ARCHED DOOR LED TO A WORN STONE STAIRCASE + ON THE GROUND FLOOR WAS THE TUTOR'S ROOM + ABOVE WERE THREE STUDENTS ONE ON EACH STORY + IT WAS ALREADY TWILIGHT WHEN WE REACHED THE SCENE OF OUR PROBLEM + HOLMES HALTED AND LOOKED EARNESTLY AT THE WINDOW + THEN HE APPROACHED IT AND STANDING ON TIPTOE WITH HIS NECK CRANED HE LOOKED INTO THE ROOM + QUOTE HE MUST HAVE ENTERED THROUGH THE DOOR + THERE IS NO OPENING EXCEPT THE ONE PANE SAID OUR LEARNED GUIDE + DEAR ME SAID HOLMES AND HE SMILED IN A SINGULAR WAY AS HE GLANCED AT OUR COMPANION + WELL IF THERE IS NOTHING TO BE LEARNED HERE WE HAD BEST GO INSIDE + THE LECTURER UNLOCKED THE OUTER DOOR AND USHERED US INTO HIS ROOM + WE STOOD AT THE ENTRANCE WHILE HOLMES MADE AN EXAMINATION OF THE CARPET + I AM AFRAID THERE ARE NO SIGNS HERE SAID HE + ONE COULD HARDLY HOPE FOR ANY UPON SO DRY A DAY + YOUR SERVANT SEEMS TO HAVE QUITE RECOVERED + YOU LEFT HIM IN A CHAIR YOU SAY + WHICH CHAIR QUOTE + BY THE WINDOW THERE + I SEE + NEAR THIS LITTLE TABLE + YOU CAN COME IN NOW + I HAVE FINISHED WITH THE CARPET + LET US TAKE THE LITTLE TABLE FIRST + OF COURSE WHAT HAS HAPPENED IS VERY CLEAR + THE MAN ENTERED AND TOOK THE PAPERS SHEET BY SHEET FROM THE CENTRAL TABLE + HE CARRIED THEM OVER TO THE WINDOW TABLE BECAUSE FROM THERE HE COULD SEE IF YOU CAME ACROSS THE COURTYARD AND SO COULD EFFECT AN ESCAPE + AS A MATTER OF FACT HE COULD NOT SAID SOAMES FOR I ENTERED BY THE SIDE DOOR + AH THAT'S GOOD + WELL ANYHOW THAT WAS IN HIS MIND + LET ME SEE THE THREE STRIPS + NO FINGER IMPRESSIONS NO + WELL HE CARRIED OVER THIS ONE FIRST AND HE COPIED IT + HOW LONG WOUID IT TAKE HIM TO DO THAT USING EVERY POSSIBLE CONTRACTION + A QUARTER OF AN HOUR NOT LESS + THEN HE TOSSED IT DOWN AND SEIZED THE NEXT + HE WAS IN THE MIDST OF THAT WHEN YOUR RETURN CAUSED HIM TO MAKE A VERY HURRIED RETREAT VERY HURRIED SINCE HE HAD NOT TIME TO REPLACE THE PAPERS WHICH WOULD TELL YOU THAT HE HAD BEEN THERE + YOU WERE NOT AWARE OF ANY HURRYING FEET ON THE STAIR AS YOU ENTERED THE OUTER DOOR QUOTE + NO I CAN'T SAY I WAS + WELL HE WROTE SO FURIOUSLY THAT HE BROKE HIS PENCIL AND HAD AS YOU OBSERVE TO SHARPEN IT AGAIN + THIS IS OF INTEREST WATSON + THE PENCIL WAS NOT AN ORDINARY ONE + IT WAS ABOVE THE USUAL SIZE WITH A SOFT LEAD THE OUTER COLOUR WAS DARK BLUE THE MAKER'S NAME WAS PRINTED IN SILVER LETTERING AND THE PIECE REMAINING IS ONLY ABOUT AN INCH AND A HALF LONG + LOOK FOR SUCH A PENCIL MR. SOAMES AND YOU HAVE GOT YOUR MAN + WHEN I ADD THAT HE POSSESSES A LARGE AND VERY BLUNT KNIFE YOU HAVE AN ADDITIONAL AID + MR. SOAMES WAS SOMEWHAT OVERWHELMED BY THIS FLOOD OF INFORMATION + I CAN FOLLOW THE OTHER POINTS SAID HE BUT REALLY IN THIS MATTER OF THE LENGTH + HOLMES HELD OUT A SMALL CHIP WITH THE LETTERS NN AND A SPACE OF CLEAR WOOD AFTER THEM + YOU SEE + QUOTE WATSON I HAVE ALWAYS DONE YOU AN INJUSTICE + THERE ARE OTHERS + WHAT COULD THIS NN BE + IT IS AT THE END OF A WORD + YOU ARE AWARE THAT JOHANN FABER IS THE MOST COMMON MAKER'S NAME + IS IT NOT CLEAR THAT THERE IS JUST AS MUCH OF THE PENCIL LEFT AS USUALLY FOLLOWS THE JOHANN + HE HELD THE SMALL TABLE SIDEWAYS TO THE ELECTRIC LIGHT + I WAS HOPING THAT IF THE PAPER ON WHICH HE WROTE WAS THIN SOME TRACE OF IT MIGHT COME THROUGH UPON THIS POLISHED SURFACE + NO I SEE NOTHING + I DON'T THINK THERE IS ANYTHING MORE TO BE LEARNED HERE + NOW FOR THE CENTRAL TABLE + THIS SMALL PELLET IS I PRESUME THE BLACK DOUGHY MASS YOU SPOKE OF + ROUGHLY PYRAMIDAL IN SHAPE AND HOLLOWED OUT I PERCEIVE + AS YOU SAY THERE APPEAR TO BE GRAINS OF SAWDUST IN IT + DEAR ME THIS IS VERY INTERESTING + AND THE CUT A POSITIVE TEAR I SEE + IT BEGAN WITH A THIN SCRATCH AND ENDED IN A JAGGED HOLE + I AM MUCH INDEBTED TO YOU FOR DIRECTING MY ATTENTION TO THIS CASE MR. SOAMES + WHERE DOES THAT DOOR LEAD TO + TO MY BEDROOM + HAVE YOU BEEN IN IT SINCE YOUR ADVENTURE + QUOTE NO I CAME STRAIGHT AWAY FOR YOU QUOTE + I SHOULD LIKE TO HAVE A GLANCE ROUND + WHAT A CHARMING OLD FASHIONED ROOM + PERHAPS YOU WILL KINDLY WAIT A MINUTE UNTIL I HAVE EXAMINED THE FLOOR + NO I SEE NOTHING + WHAT ABOUT THIS CURTAIN + YOU HANG YOUR CLOTHES BEHIND IT + IF ANYONE WERE FORCED TO CONCEAL HIMSELF IN THIS ROOM HE MUST DO IT THERE SINCE THE BED IS TOO LOW AND THE WARDROBE TOO SHALLOW + NO ONE THERE I SUPPOSE + AS HOLMES DREW THE CURTAIN I WAS AWARE FROM SOME LITTLE RIGIDITY AND ALERTNESS OF HIS ATTITUDE THAT HE WAS PREPARED FOR AN EMERGENCY + AS A MATTER OF FACT THE DRAWN CURTAIN DISCLOSED NOTHING BUT THREE OR FOUR SUITS OF CLOTHES HANGING FROM A LINE OF PEGS + HOLMES TURNED AWAY AND STOOPED SUDDENLY TO THE FLOOR + HALLOA + WHAT'S THIS SAID HE + IT WAS A SMALL PYRAMID OF BLACK PUTTY LIKE STUFF EXACTLY LIKE THE ONE UPON THE TABLE OF THE STUDY + HOLMES HELD IT OUT ON HIS OPEN PALM IN THE GLARE OF THE ELECTRIC LIGHT + YOUR VISITOR SEEMS TO HAVE LEFT TRACES IN YOUR BEDROOM AS WELL AS IN YOUR SITTING ROOM MR. SOAMES + QUOTE WHAT COULD HE HAVE WANTED THERE QUOTE + I THINK IT IS CLEAR ENOUGH + YOU CAME BACK BY AN UNEXPECTED WAY AND SO HE HAD NO WARNING UNTIL YOU WERE AT THE VERY DOOR + WHAT COULD HE DO + HE CAUGHT UP EVERYTHING WHICH WOULD BETRAY HIM AND HE RUSHED INTO YOUR BEDROOM TO CONCEAL HIMSELF + GOOD GRACIOUS MR. HOLMES DO YOU MEAN TO TELL ME THAT ALL THE TIME I WAS TALKING TO BANNISTER IN THIS ROOM WE HAD THE MAN PRISONER IF WE HAD ONLY KNOWN IT + SO I READ IT + SURELY THERE IS ANOTHER ALTERNATIVE MR. HOLMES + I DON'T KNOW WHETHER YOU OBSERVED MY BEDROOM WINDOW QUOTE + LATTICE PANED LEAD FRAMEWORK THREE SEPARATE WINDOWS ONE SWINGING ON HINGE AND LARGE ENOUGH TO ADMIT A MAN + EXACTLY + AND IT LOOKS OUT ON AN ANGLE OF THE COURTYARD SO AS TO BE PARTLY INVISIBLE + THE MAN MIGHT HAVE EFFECTED HIS ENTRANCE THERE LEFT TRACES AS HE PASSED THROUGH THE BEDROOM AND FINALLY FINDING THE DOOR OPEN HAVE ESCAPED THAT WAY + HOLMES SHOOK HIS HEAD IMPATIENTLY + LET US BE PRACTICAL SAID HE + I UNDERSTAND YOU TO SAY THAT THERE ARE THREE STUDENTS WHO USE THIS STAIR AND ARE IN THE HABIT OF PASSING YOUR DOOR + QUOTE YES THERE ARE QUOTE + AND THEY ARE ALL IN FOR THIS EXAMINATION + YES + HAVE YOU ANY REASON TO SUSPECT ANY ONE OF THEM MORE THAN THE OTHERS + SOAMES HESITATED + IT IS A VERY DELICATE QUESTION SAID HE + ONE HARDLY LIKES TO THROW SUSPICION WHERE THERE ARE NO PROOFS + QUOTE LET US HEAR THE SUSPICIONS + I WILL LOOK AFTER THE PROOFS + I WILL TELL YOU THEN IN A FEW WORDS THE CHARACTER OF THE THREE MCN WHO INHABIT THESE ROOMS + THE LOWER OF THE THREE IS GILCHRIST A FINE SCHOLAR AND ATHLETC PLAYS IN THE RUGBY TEAM AND THE CRICKET TEAM FOR THE COLLEGE AND GOT HIS BLUE FOR THE HURDLES AND THE LONG JUMP + HE IS A FINE MANLY FELLOW + HIS FATHER WAS THE NOTORIOUS SIR JABEZ GILCHRIST WHO RUINED HIMSELF ON THE TURF + MY SCHOLAR HAS BEEN LEFT VERY POOR BUT HE IS HARD WORKING AND INDUSTRIOUS + HE WILL DO WELL + THE SECOND FLOOR IS INHABITED BY DAULAT RAS THE INDIAN + HE IS A QUIET INSCRUTABLE FELLOW AS MOST OF THOSE INDIANS ARE + HE IS WELL UP IN HIS WORK THOUGH HIS GREEK IS HIS WEAK SUBJECT + HE IS STEADY AND METHODICAL + THE TOP FLOOR BELONGS TO MILES MCLAREN + HE IS A BRILLIANT FELLOW WHEN HE CHOOSES TO WORK ONE OF THE BRIGHTEST INTELLECTS OF THE UNIVERSITY BUT HE IS WAYWARD DISSIPATED AND UNPRINCIPLED + HE WAS NEARLY EXPELLED OVER A CARD SCANDAL IN HIS FIRST YEAR + HE HAS BEEN IDLING ALL THIS TERM AND HE MUST LOOK FORWARD WITH DREAD TO THE EXAMINATION + QUOTE THEN IT IS HE WHOM YOU SUSPECT QUOTE + I DARE NOT GO SO FAR AS THAT + BUT OF THE THREE HE IS PERHAPS THE LEAST UNLIKELY + EXACTLY + NOW MR. SOAMES LET US HAVE A LOOK AT YOUR SERVANT BANNISTER + HE WAS A LITTLE WHITE FACED CLEAN SHAVEN GRIZZLY HAIRED FELLOW OF FIFTY + HE WAS STILL SUFFERING FROM THIS SUDDEN DISTURBANCE OF THE QUIET ROUTINE OF HIS LIFE + HIS PLUMP FACE WAS TWITCHING WITH HIS NERVOUSNESS AND HIS FINGERS COULD NOT KEEP STILL + WE ARE INVESTIGATING THIS UNHAPPY BUSINESS BANNISTER SAID HIS MASTER + QUOTE YES SIR QUOTE + I UNDERSTAND SAID HOLMES THAT YOU LEFT YOUR KEY IN THE DOOR + YES SIR + WAS IT NOT VERY EXTRAORDINARY THAT YOU SHOULD DO THIS ON THE VERY DAY WHEN THERE WERE THESE PAPERS INSIDE + IT WAS MOST UNFORTUNATE SIR + BUT I HAVE OCCASIONALLY DONE THE SAME THING AT OTHER TIMES + QUOTE WHEN DID YOU ENTER THE ROOM QUOTE + IT WAS ABOUT HALF PAST FOUR + THAT IS MR. SOAMES'S TEA TIME + HOW LONG DID YOU STAY + WHEN I SAW THAT HE WAS ABSENT + I WITHDREW AT ONCE + DID YOU LOOK AT THESE PAPERS ON THE TABLE + QUOTE NO SIR CERTAINLY NOT QUOTE + HOW CAME YOU TO LEAVE THE KEY IN THE DOOR + I HAD THE TEA TRAY IN MY HAND + I THOUGHT I WOULD COME BACK FOR THE KEY + THEN I FORGOT + HAS THE OUTER DOOR A SPRING LOCK + NO SIR + QUOTE THEN IT WAS OPEN ALL THE TIME QUOTE + YES SIR + ANYONE IN THE ROOM COULD GET OUT + YES SIR + WHEN MR. SOAMES RETURNED AND CALLED FOR YOU YOU WERE VERY MUCH DISTURBED + YES SIR + SUCH A THING HAS NEVER HAPPENED DURING THE MANY YEARS THAT I HAVE BEEN HERE + I NEARLY FAINTED SIR QUOTE + SO I UNDERSTAND + WHERE WERE YOU WHEN YOU BEGAN TO FEEL BAD + WHERE WAS I SIR + WHY HERE NEAR THE DOOR + THAT IS SINGULAR BECAUSE YOU SAT DOWN IN THAT CHAIR OVER YONDER NEAR THE CORNER + WHY DID YOU PASS THESE OTHER CHAIRS QUOTE + I DON'T KNOW SIR IT DIDN'T MATTER TO ME WHERE I SAT + I REALLY DON'T THINK HE KNEW MUCH ABOUT IT MR. HOLMES + HE WAS LOOKING VERY BAD QUITE GHASTLY + YOU STAYED HERE WHEN YOUR MASTER LEFT + ONLY FOR A MINUTE OR SO + THEN I LOCKED THE DOOR AND WENT TO MY ROOM QUOTE + WHOM DO YOU SUSPECT + OH I WOULD NOT VENTURE TO SAY SIR + I DON'T BELIEVE THERE IS ANY GENTLEMAN IN THIS UNIVERSITY WHO IS CAPABLE OF PROFITING BY SUCH AN ACTION + NO SIR I'LL NOT BELIEVE IT + THANK YOU THAT WILL DO SAID HOLMES + OH ONE MORE WORD + YOU HAVE NOT MENTIONED TO ANY OF THE THREE GENTLEMEN WHOM YOU ATTEND THAT ANYTHING IS AMISS QUOTE + NO SIR NOT A WORD + YOU HAVEN'T SEEN ANY OF THEM + NO SIR + VERY GOOD + NOW MR. SOAMES WE WILL TAKE A WALK IN THE QUADRANGLE IF YOU PLEASE + THREE YELLOW SQUARES OF LIGHT SHONE ABOVE US IN THE GATHERING GLOOM + QUOTE YOUR THREE BIRDS ARE ALL IN THEIR NESTS QUOTE SAID HOLMES LOOKING UP + HALLOA + WHAT'S THAT + ONE OF THEM SEEMS RESTLESS ENOUGH + IT WAS THE INDIAN WHOSE DARK SILHOUETTE APPEARED SUDDENLY UPON HIS BLIND + HE WAS PACING SWIFTLY UP AND DOWN HIS ROOM + I SHOULD LIKE TO HAVE A PEEP AT EACH OF THEM SAID HOLMES + IS IT POSSIBLE + NO DIFFICULTY IN THE WORLD SOAMES ANSWERED + QUOTE THIS SET OF ROOMS IS QUITE THE OLDEST IN THE COLLEGE AND IT IS NOT UNUSUAL FOR VISITORS TO GO OVER THEM + COME ALONG AND I WILL PERSONALLY CONDUCT YOU + NO NAMES PLEASE SAID HOLMES AS WE KNOCKED AT GILCHRIST'S DOOR + A TALL FLAXEN HAIRED SLIM YOUNG FELLOW OPENED IT AND MADE US WELCOME WHEN HE UNDERSTOOD OUR ERRAND + THERE WERE SOME REALLY CURIOUS PIECES OF MEDIAEVAL DOMESTIC ARCHITECTURE WITHIN + HOLMES WAS SO CHARMED WITH ONE OF THEM THAT HE INSISTED ON DRAWING IT IN HIS NOTEBOOK BROKE HIS PENCIL HAD TO BORROW ONE FROM OUR HOST AND FINALLY BORROWED A KNIFE TO SHARPEN HIS OWN + THE SAME CURIOUS ACCIDENT HAPPENED TO HIM IN THE ROOMS OF THE INDIAN A SILENT LITTLE HOOK NOSED FELLOW WHO EYED US ASKANCE AND WAS OBVIOUSLY GLAD WHEN HOLMES'S ARCHITECTURAL STUDIES HAD COME TO AN END + I COULD NOT SEE THAT IN EITHER CASE HOLMES HAD COME UPON THE CLUE FOR WHICH HE WAS SEARCHING + ONLY AT THE THIRD DID OUR VISIT PROVE ABORTIVE + THE OUTER DOOR WOULD NOT OPEN TO OUR KNOCK AND NOTHING MORE SUBSTANTIAL THAN A TORRENT OF BAD LANGUAGE CAME FROM BEHIND IT + I DON'T CARE WHO YOU ARE + YOU CAN GO TO BLAZES ROARED THE ANGRY VOICE + TOMORROW'S THE EXAM AND I WON'T BE DRAWN BY ANYONE + QUOTE A RUDE FELLOW QUOTE SAID OUR GUIDE FLUSHING WITH ANGER AS WE WITHDREW DOWN THE STAIR + OF COURSE HE DID NOT REALIZE THAT IT WAS I WHO WAS KNOCKING BUT NONE THE LESS HIS CONDUCT WAS VERY UNCOURTEOUS AND INDEED UNDER THE CIRCUMSTANCES RATHER SUSPICIOUS + HOLMES'S RESPONSE WAS A CURIOUS ONE + CAN YOU TELL ME HIS EXACT HEIGHT HE ASKED + REALLY MR. HOLMES I CANNOT UNDERTAKE TO SAY + HE IS TALLER THAN THE INDIAN NOT SO TALL AS GILCHRIST + I SUPPOSE FIVE FOOT SIX WOULD BE ABOUT IT + THAT IS VERY IMPORTANT SAID HOLMES + QUOTE AND NOW MR. SOAMES I WISH YOU GOOD NIGHT QUOTE + OUR GUIDE CRIED ALOUD IN HIS ASTONISHMENT AND DISMAY + GOOD GRACIOUS MR. HOLMES YOU ARE SURELY NOT GOING TO LEAVE ME IN THIS ABRUPT FASHION + YOU DON'T SEEM TO REALIZE THE POSITION + TO MORROW IS THE EXAMINATION + I MUST TAKE SOME DEFINITE ACTION TO NIGHT + I CANNOT ALLOW THE EXAMINATION TO BE HELD IF ONE OF THE PAPERS HAS BEEN TAMPERED WITH + THE SITUATION MUST BE FACED + YOU MUST LEAVE IT AS IT IS + I SHALL DROP ROUND EARLY TO MORROW MORNING AND CHAT THE MATTER OVER + IT IS POSSIBLE THAT I MAY BE IN A POSITION THEN TO INDICATE SOME COURSE OF ACTION + MEANWHILE YOU CHANGE NOTHING NOTHING AT ALL + VERY GOOD MR. HOLMES + QUOTE YOU CAN BE PERFECTLY EASY IN YOUR MIND + WE SHALL CERTAINLY FIND SOME WAY OUT OF YOUR DIFFICULTIES + I WILL TAKE THE BLACK CLAY WITH ME ALSO THE PENCIL CUTTINGS + GOOD BYE + WHEN WE WERE OUT IN THE DARKNESS OF THE QUADRANGLE WE AGAIN LOOKED UP AT THE WINDOWS + THE INDIAN STILL PACED HIS ROOM + THE OTHERS WERE INVISIBLE + WELL WATSON WHAT DO YOU THINK OF IT + HOLMES ASKED AS WE CAME OUT INTO THE MAIN STREET + QUITE A LITTLE PARLOUR GAME SORT OF THREE CARD TRICK IS IT NOT + THERE ARE YOUR THREE MEN + IT MUST BE ONE OF THEM + YOU TAKE YOUR CHOICE + WHICH IS YOURS + THE FOUL MOUTHED FELLOW AT THE TOP + HE IS THE ONE WITH THE WORST RECORD + AND YET THAT INDIAN WAS A SLY FELLOW ALSO + WHY SHOULD HE BE PACING HIS ROOM ALL THE TIME QUOTE + THERE IS NOTHING IN THAT + MANY MEN DO IT WHEN THEY ARE TRYING TO LEARN ANYTHING BY HEART + HE LOOKED AT US IN A QUEER WAY + SO WOULD YOU IF A FLOCK OF STRANGERS CAME IN ON YOU WHEN YOU WERE PREPARING FOR AN EXAMINATION NEXT DAY AND EVERY MOMENT WAS OF VALUE + NO I SEE NOTHING IN THAT + PENCILS TOO AND KNIVES ALL WAS SATISFACTORY + BUT THAT FELLOW DOES PUZZLE ME + QUOTE WHO QUOTE + WHY BANNISTER THE SERVANT + WHAT'S HIS GAME IN THE MATTER + HE IMPRESSED ME AS BEING A PERFECTLY HONEST MAN + SO HE DID ME + THAT'S THE PUZZLING PART + WHY SHOULD A PERFECTLY HONEST MAN WELL WELL HERE'S A LARGE STATIONER'S + WE SHALL BEGIN OUR RESEARCHES HERE + THERE WERE ONLY FOUR STATIONERS OF ANY CONSEQUENCES IN THE TOWN AND AT EACH HOLMES PRODUCED HIS PENCIL CHIPS AND BID HIGH FOR A DUPLICATE + ALL WERE AGREED THAT ONE COULD BE ORDERED BUT THAT IT WAS NOT A USUAL SIZE OF PENCIL AND THAT IT WAS SELDOM KEPT IN STOCK + MY FRIEND DID NOT APPEAR TO BE DEPRESSED BY HIS FAILURE BUT SHRUGGED HIS SHOULDERS IN HALF HUMOROUS RESIGNATION + QUOTE NO GOOD MY DEAR WATSON + THIS THE BEST AND ONLY FINAL CLUE HAS RUN TO NOTHING + BUT INDEED I HAVE LITTLE DOUBT THAT WE CAN BUILD UP A SUFFICIENT CASE WITHOUT IT + BY JOVE MY DEAR FELLOW IT IS NEARLY NINE AND THE LANDLADY BABBLED OF GREEN PEAS AT SEVEN THIRTY + WHAT WITH YOUR ETERNAL TOBACCO WATSON AND YOUR IRREGULARITY AT MEALS I EXPECT THAT YOU WILL GET NOTICE TO QUIT AND THAT I SHALL SHARE YOUR DOWNFALL NOT HOWEVER BEFORE WE HAVE SOLVED THE PROBLEM OF THE NERVOUS TUTOR THE CARELESS SERVANT AND THE THREE ENTERPRISING STUDENTS + HOLMES MADE NO FURTHER ALLUSION TO THE MATTER THAT DAY THOUGH HE SAT LOST IN THOUGHT FOR A LONG TIME AFTER OUR BELATED DINNER + AT EIGHT IN THE MORNING HE CAME INTO MY ROOM JUST AS I FINISHED MY TOILET + WELL WATSON SAID HE IT IS TIME WE WENT DOWN TO SAINT LUKE'S + CAN YOU DO WITHOUT BREAKFAST + CERTAINLY + SOAMES WILL BE IN A DREADFUL FIDGET UNTIL WE ARE ABLE TO TELL HIM SOMETHING POSITIVE + QUOTE HAVE YOU ANYTHING POSITIVE TO TELL HIM QUOTE + I THINK SO + YOU HAVE FORMED A CONCLUSION + YES MY DEAR WATSON I HAVE SOLVED THE MYSTERY + BUT WHAT FRESH EVIDENCE COULD YOU HAVE GOT + AHA + IT IS NOT FOR NOTHING THAT I HAVE TURNED MYSELF OUT OF BED AT THE UNTIMELY HOUR OF SIX + I HAVE PUT IN TWO HOURS' HARD WORK AND COVERED AT LEAST FIVE MILES WITH SOMETHING TO SHOW FOR IT + LOOK AT THAT QUOTE + HE HELD OUT HIS HAND + ON THE PALM WERE THREE LITTLE PYRAMIDS OF BLACK DOUGHY CLAY + WHY HOLMES YOU HAD ONLY TWO YESTERDAY + AND ONE MORE THIS MORNING + IT IS A FAIR ARGUMENT THAT WHEREVER NUMBER THREE CAME FROM IS ALSO THE SOURCE OF NUMBERS ONE AND TWO + EH WATSON + WELL COME ALONG AND PUT FRIEND SOAMES OUT OF HIS PAIN + THE UNFORTUNATE TUTOR WAS CERTAINLY IN A STATE OF PITIABLE AGITATION WHEN WE FOUND HIM IN HIS CHAMBERS + IN A FEW HOURS THE EXAMINATION WOULD COMMENCE AND HE WAS STILL IN THE DILEMMA BETWEEN MAKING THE FACTS PUBLIC AND ALLOWING THE CULPRIT TO COMPETE FOR THE VALUABLE SCHOLARSHIP + HE COULD HARDLY STAND STILL SO GREAT WAS HIS MENTAL AGITATION AND HE RAN TOWARDS HOLMES WITH TWO EAGER HANDS OUTSTRETCHED + THANK HEAVEN THAT YOU HAVE COME + I FEARED THAT YOU HAD GIVEN IT UP IN DESPAIR + WHAT AM I TO DO + SHALL THE EXAMINATION PROCEED + QUOTE YES LET IT PROCEED BY ALL MEANS QUOTE + BUT THIS RASCAL + HE SHALL NOT COMPETE + YOU KNOW HIM + I THINK SO + IF THIS MATTER IS NOT TO BECOME PUBLIC WE MUST GIVE OURSELVES CERTAIN POWERS AND RESOLVE OURSELVES INTO A SMALL PRIVATE COURT MARTIAL + YOU THERE IF YOU PLEASE SOAMES + WATSON YOU HERE + I'LL TAKE THE ARMCHAIR IN THE MIDDLE + I THINK THAT WE ARE NOW SUFFICIENTLY IMPOSING TO STRIKE TERROR INTO A GUILTY BREAST + KINDLY RING THE BELL + BANNISTER ENTERED AND SHRANK BACK IN EVIDENT SURPRISE AND FEAR AT OUR JUDICIAL APPEARANCE + QUOTE YOU WILL KINDLY CLOSE THE DOOR QUOTE SAID HOLMES + NOW BANNISTER WILL YOU PLEASE TELL US THE TRUTH ABOUT YESTERDAY'S INCIDENT + THE MAN TURNED WHITE TO THE ROOTS OF HIS HAIR + I HAVE TOLD YOU EVERYTHING SIR + NOTHING TO ADD + NOTHING AT ALL SIR + WELL THEN I MUST MAKE SOME SUGGESTIONS TO YOU + WHEN YOU SAT DOWN ON THAT CHAIR YESTERDAY DID YOU DO SO IN ORDER TO CONCEAL SOME OBJECT WHICH WOULD HAVE SHOWN WHO HAD BEEN IN THE ROOM QUOTE + BANNISTER'S FACE WAS GHASTLY + NO SIR CERTAINLY NOT + IT IS ONLY A SUGGESTION SAID HOLMES SUAVELY + I FRANKLY ADMIT THAT I AM UNABLE TO PROVE IT + BUT IT SEEMS PROBABLE ENOUGH SINCE THE MOMENT THAT MR. SOAMES'S BACK WAS TURNED YOU RELEASED THE MAN WHO WAS HIDING IN THAT BEDROOM + BANNISTER LICKED HIS DRY LIPS + THERE WAS NO MAN SIR + QUOTE AH THAT'S A PITY BANNISTER + UP TO NOW YOU MAY HAVE SPOKEN THE TRUTH BUT NOW I KNOW THAT YOU HAVE LIED + THE MAN'S FACE SET IN SULLEN DEFIANCE + THERE WAS NO MAN SIR + COME COME BANNISTER + NO SIR THERE WAS NO ONE + IN THAT CASE YOU CAN GIVE US NO FURTHER INFORMATION + WOULD YOU PLEASE REMAIN IN THE ROOM + STAND OVER THERE NEAR THE BEDROOM DOOR + NOW SOAMES I AM GOING TO ASK YOU TO HAVE THE GREAT KINDNESS TO GO UP TO THE ROOM OF YOUNG GILCHRIST AND TO ASK HIM TO STEP DOWN INTO YOURS QUOTE + AN INSTANT LATER THE TUTOR RETURNED BRINGING WITH HIM THE STUDENT + HE WAS A FINE FIGURE OF A MAN TALL LITHE AND AGILE WITH A SPRINGY STEP AND A PLEASANT OPEN FACE + HIS TROUBLED BLUE EYES GLANCED AT EACH OF US AND FINALLY RESTED WITH AN EXPRESSION OF BLANK DISMAY UPON BANNISTER IN THE FARTHER CORNER + JUST CLOSE THE DOOR SAID HOLMES + NOW MR. GILCHRIST WE ARE ALL QUITE ALONE HERE AND NO ONE NEED EVER KNOW ONE WORD OF WHAT PASSES BETWEEN US + WE CAN BE PERFECTLY FRANK WITH EACH OTHER + WE WANT TO KNOW MR. GILCHRIST HOW YOU AN HONOURABLE MAN EVER CAME TO COMMIT SUCH AN ACTION AS THAT OF YESTERDAY + THE UNFORTUNATE YOUNG MAN STAGGERED BACK AND CAST A LOOK FULL OF HORROR AND REPROACH AT BANNISTER + NO NO MR. GILCHRIST SIR I NEVER SAID A WORD NEVER ONE WORD CRIED THE SERVANT + NO BUT YOU HAVE NOW SAID HOLMES + QUOTE NOW SIR YOU MUST SEE THAT AFTER BANNISTER'S WORDS YOUR POSITION IS HOPELESS AND THAT YOUR ONLY CHANCE LIES IN A FRANK CONFESSION QUOTE + FOR A MOMENT GILCHRIST WITH UPRAISED HAND TRIED TO CONTROL HIS WRITHING FEATURES + THE NEXT HE HAD THROWN HIMSELF ON HIS KNEES BESIDE THE TABLE AND BURYING HIS FACE IN HIS HANDS HE HAD BURST INTO A STORM OF PASSIONATE SOBBING + COME COME SAID HOLMES KINDLY IT IS HUMAN TO ERR AND AT LEAST NO ONE CAN ACCUSE YOU OF BEING A CALLOUS CRIMINAL + PERHAPS IT WOULD BE EASIER FOR YOU IF I WERE TO TELL MR. SOAMES WHAT OCCURRED AND YOU CAN CHECK ME WHERE I AM WRONG + SHALL I DO SO + WELL WELL DON'T TROUBLE TO ANSWER + LISTEN AND SEE THAT I DO YOU NO INJUSTICE + FROM THE MOMENT MR. SOAMES THAT YOU SAID TO ME THAT NO ONE NOT EVEN BANNISTER COULD HAVE TOLD THAT THE PAPERS WERE IN YOUR ROOM THE CASE BEGAN TO TAKE A DEFINITE SHAPE IN MY MIND + THE PRINTER ONE COULD OF COURSE DISMISS + HE COULD EXAMINE THE PAPERS IN HIS OWN OFFICE + THE INDIAN I ALSO THOUGHT NOTHING OF + IF THE PROOFS WERE IN A ROLL HE COULD NOT POSSIBLY KNOW WHAT THEY WERE + ON THE OTHER HAND IT SEEMED AN UNTHINKABLE COINCIDENCE THAT A MAN SHOULD DARE TO ENTER THE ROOM AND THAT BY CHANCE ON THAT VERY DAY THE PAPERS WERE ON THE TABLE + I DISMISSED THAT + THE MAN WHO ENTERED KNEW THAT THE PAPERS WERE THERE + HOW DID HE KNOW + WHEN I APPROACHED YOUR ROOM I EXAMINED THE WINDOW + YOU AMUSED ME BY SUPPOSING THAT I WAS CONTEMPLATING THE POSSIBILITY OF SOMEONE HAVING IN BROAD DAYLIGHT UNDER THE EYES OF ALL THESE OPPOSITE ROOMS FORCED HIMSELF THROUGH IT + SUCH AN IDEA WAS ABSURD + I WAS MEASURING HOW TALL A MAN WOULD NEED TO BE IN ORDER TO SEE AS HE PASSED WHAT PAPERS WERE ON THE CENTRAL TABLE + I AM SIX FEET HIGH AND I COULD DO IT WITH AN EFFORT + NO ONE LESS THAN THAT WOULD HAVE A CHANCE + ALREADY YOU SEE I HAD REASON TO THINK THAT IF ONE OF YOUR THREE STUDENTS WAS A MAN OF UNUSUAL HEIGHT HE WAS THE MOST WORTH WATCHING OF THE THREE + I ENTERED AND I TOOK YOU INTO MY CONFIDENCC AS TO THE SUGGESTIONS OF THE SIDE TABLE + OF THE CENTRE TABLE I COULD MAKE NOTHING UNTIL IN YOUR DESCRIPTION OF GILCHRIST YOU MENTIONED THAT HE WAS A LONG DISTANCE JUMPER + THEN THE WHOLE THING CAME TO ME IN AN INSTANT AND I ONLY NEEDED CERTAIN CORROBORATIVE PROOFS WHICH I SPEEDILY OBTAINED + WHAT HAPPENED WAS THIS THIS YOUNG FELLOW HAD EMPLOYED HIS AFTERNOON AT THE ATHLETIC GROUNDS WHERE HE HAD BEEN PRACTISING THE JUMP + HE RETURNED CARRYING HIS JUMPING SHOES WHICH ARE PROVIDED AS YOU ARE AWARE WITH SEVERAL SHARP SPIKES + AS HE PASSED YOUR WINDOW HE SAW BY MEANS OF HIS GREAT HEIGHT THESE PROOFS UPON YOUR TABLE AND CONJECTURED WHAT THEY WERE + NO HARM WOULD HAVE BEEN DONE HAD IT NOT BEEN THAT AS HE PASSED YOUR DOOR HE PERCEIVED THE KEY WHICH HAD BEEN LEFT BY THE CARELESSNESS OF YOUR SERVANT + A SUDDEN IMPULSE CAME OVER HIM TO ENTER AND SEE IF THEY WERE INDEED THE PROOFS + IT WAS NOT A DANGEROUS EXPLOIT FOR HE COULD ALWAYS PRETEND THAT HE HAD SIMPLY LOOKED IN TO ASK A QUESTION + QUOTE WELL WHEN HE SAW THAT THEY WERE INDEED THE PROOFS IT WAS THEN THAT HE YIELDED TO TEMPTATION + HE PUT HIS SHOES ON THE TABLE + WHAT WAS IT YOU PUT ON THAT CHAIR NEAR THE WINDOW + GLOVES SAID THE YOUNG MAN + HOLMES LOOKED TRIUMPHANTLY AT BANNISTER + HE PUT HIS GLOVES ON THE CHAIR AND HE TOOK THE PROOFS SHEET BY SHEET TO COPY THEM + HE THOUGHT THE TUTOR MUST RETURN BY THE MAIN GATE AND THAT HE WOULD SEE HIM + AS WE KNOW HE CAME BACK BY THE SIDE GATE + SUDDENLY HE HEARD HIM AT THE VERY DOOR + THERE WAS NO POSSIBLE ESCAPE + HE FORGOT HIS GLOVES BUT HE CAUGHT UP HIS SHOES AND DARTED INTO THE BEDROOM + YOU OBSERVE THAT THE SCRATCH ON THAT TABLE IS SLIGHT AT ONE SIDE BUT DEEPENS IN THE DIRECTION OF THE BEDROOM DOOR + THAT IN ITSELF IS ENOUGH TO SHOW US THAT THE SHOE HAD BEEN DRAWN IN THAT DIRECTION AND THAT THE CULPRIT HAD TAKEN REFUGE THERE + THE EARTH ROUND THE SPIKE HAD BEEN LEFT ON THE TABLE AND A SECOND SAMPLE WAS LOOSENED AND FELL IN THE BEDROOM + I MAY ADD THAT I WALKED OUT TO THE ATHLETIC GROUNDS THIS MORNING SAW THAT TENACIOUS BLACK CLAY IS USED IN THE JUMPINGPIT AND CARRIED AWAY A SPECIMEN OF IT TOGETHER WITH SOME OF THE FINE TAN OR SAWDUST WHICH IS STREWN OVER IT TO PREVENT THE ATHLETE FROM SLIPPING + HAVE I TOLD THE TRUTH MR. GILCHRIST + THE STUDENT HAD DRAWN HIMSELF ERECT + YES SIR IT IS TRUE SAID HE + QUOTE GOOD HEAVENS HAVE YOU NOTHING TO ADD QUOTE CRIED SOAMES + YES SIR I HAVE BUT THE SHOCK OF THIS DISGRACEFUL EXPOSURE HAS BEWILDERED ME + I HAVE A LETTER HERE MR. SOAMES WHICH I WROTE TO YOU EARLY THIS MORNING IN THE MIDDLE OF A RESTLESS NIGHT + IT WAS BEFORE I KNEW THAT MY SIN HAD FOUND ME OUT + HERE IT IS SIR + YOU WILL SEE THAT I HAVE SAID I HAVE DETERMINED NOT TO GO IN FOR THE EXAMINATION + I HAVE BEEN OFFERED A COMMISSION IN THE RHODESIAN POLICE AND I AM GOING OUT TO SOUTH AFRICA AT ONCE + I AM INDEED PLEASED TO HEAR THAT YOU DID NOT INTEND TO PROFIT BY YOUR UNFAIR ADVANTAGE SAID SOAMES + BUT WHY DID YOU CHANGE YOUR PURPOSE + GILCHRIST POINTED TO BANNISTER + THERE IS THE MAN WHO SET ME IN THE RIGHT PATH SAID HE + QUOTE COME NOW BANNISTER QUOTE SAID HOLMES + IT WILL BE CLEAR TO YOU FROM WHAT I HAVE SAID THAT ONLY YOU COULD HAVE LET THIS YOUNG MAN OUT SINCE YOU WERE LEFT IN THE ROOM AND MUST HAVE LOCKED THE DOOR WHEN YOU WENT OUT + AS TO HIS ESCAPING BY THAT WINDOW IT WAS INCREDIBLE + CAN YOU NOT CLEAR UP THE LAST POINT IN THIS MYSTERY AND TELL US THE REASONS FOR YOUR ACTION + IT WAS SIMPLE ENOUGH SIR IF YOU ONLY HAD KNOWN BUT WITH ALL YOUR CLEVERNESS IT WAS IMPOSSIBLE THAT YOU COULD KNOW + TIME WAS SIR WHEN I WAS BUTLER TO OLD SIR JABEZ GILCHRIST THIS YOUNG GENTLEMAN'S FATHER + WHEN HE WAS RUINED I CAME TO THE COLLEGE AS SERVANT BUT I NEVER FORGOT MY OLD EMPLOYER BECAUSE HE WAS DOWN IN THE WORLD + I WATCHED HIS SON ALL I COULD FOR THE SAKE OF THE OLD DAYS + WELL SIR WHEN I CAME INTO THIS ROOM YESTERDAY WHEN THE ALARM WAS GIVEN THE VERY FIRST THING I SAW WAS MR. GILCHRIST'S TAN GLOVES A LYING IN THAT CHAIR + I KNEW THOSE GLOVES WELL AND I UNDERSTOOD THEIR MESSAGE + IF MR. SOAMES SAW THEM THE GAME WAS UP + I FLOPPED DOWN INTO THAT CHAIR AND NOTHING WOULD BUDGE ME UNTIL MR. SOAMES WENT FOR YOU + THEN OUT CAME MY POOR YOUNG MASTER WHOM I HAD DANDLED ON MY KNEE AND CONFESSED IT ALL TO ME + WASN'T IT NATURAL SIR THAT I SHOULD SAVE HIM AND WASN'T IT NATURAL ALSO THAT I SHOULD TRY TO SPEAK TO HIM AS HIS DEAD FATHER WOULD HAVE DONE AND MAKE HIM UNDERSTAND THAT HE COULD NOT PROFIT BY SUCH A DEED + COULD YOU BLAME ME SIR + NO INDEED SAID HOLMES HEARTILY SPRINGING TO HIS FEET + QUOTE WELL SOAMES I THINK WE HAVE CLEARED YOUR LITTLE PROBLEM UP AND OUR BREAKFAST AWAITS US AT HOME + COME WATSON + AS TO YOU SIR I TRUST THAT A BRIGHT FUTURE AWAITS YOU IN RHODESIA + FOR ONCE YOU HAVE FALLEN LOW + LET US SEE IN THE FUTURE HOW HIGH YOU CAN RISE diff --git a/samples/LMTutorial/train/valley_of_fear.txt b/samples/LMTutorial/train/valley_of_fear.txt new file mode 100755 index 0000000..6fb5f0c --- /dev/null +++ b/samples/LMTutorial/train/valley_of_fear.txt @@ -0,0 +1,4112 @@ + QUOTE I AM INCLINED TO THINK QUOTE SAID I + I SHOULD DO SO SHERLOCK HOLMES REMARKED IMPATIENTLY + I BELIEVE THAT I AM ONE OF THE MOST LONG SUFFERING OF MORTALS BUT I'LL ADMIT THAT I WAS ANNOYED AT THE SARDONIC INTERRUPTION + REALLY HOLMES SAID I SEVERELY YOU ARE A LITTLE TRYING AT TIMES + HE WAS TOO MUCH ABSORBED WITH HIS OWN THOUGHTS TO GIVE ANY IMMEDIATE ANSWER TO MY REMONSTRANCE + HE LEANED UPON HIS HAND WITH HIS UNTASTED BREAKFAST BEFORE HIM AND HE STARED AT THE SLIP OF PAPER WHICH HE HAD JUST DRAWN FROM ITS ENVELOPE + THEN HE TOOK THE ENVELOPE ITSELF HELD IT UP TO THE LIGHT AND VERY CAREFULLY STUDIED BOTH THE EXTERIOR AND THE FLAP + IT IS PORLOCK'S WRITING SAID HE THOUGHTFULLY + I CAN HARDLY DOUBT THAT IT IS PORLOCK'S WRITING THOUGH I HAVE SEEN IT ONLY TWICE BEFORE + THE GREEK E. WITH THE PECULIAR TOP FLOURISH IS DISTINCTIVE + BUT IF IT IS PORLOCK THEN IT MUST BE SOMETHING OF THE VERY FIRST IMPORTANCE + HE WAS SPEAKING TO HIMSELF RATHER THAN TO ME BUT MY VEXATION DISAPPEARED IN THE INTEREST WHICH THE WORDS AWAKENED + QUOTE WHO THEN IS PORLOCK QUOTE + I ASKED + PORLOCK WATSON IS A NOM DE PLUME A MERE IDENTIFICATION MARK BUT BEHIND IT LIES A SHIFTY AND EVASIVE PERSONALITY + IN A FORMER LETTER HE FRANKLY INFORMED ME THAT THE NAME WAS NOT HIS OWN AND DEFIED ME EVER TO TRACE HIM AMONG THE TEEMING MILLIONS OF THIS GREAT CITY + PORLOCK IS IMPORTANT NOT FOR HIMSELF BUT FOR THE GREAT MAN WITH WHOM HE IS IN TOUCH + PICTURE TO YOURSELF THE PILOT FISH WITH THE SHARK THE JACKAL WITH THE LION ANYTHING THAT IS INSIGNIFICANT IN COMPANIONSHIP WITH WHAT IS FORMIDABLE NOT ONLY FORMIDABLE WATSON BUT SINISTER IN THE HIGHEST DEGREE SINISTER + THAT IS WHERE HE COMES WITHIN MY PURVIEW + YOU HAVE HEARD ME SPEAK OF PROFESSOR MORIARTY + MY BLUSHES WATSON + HOLMES MURMURED IN A DEPRECATING VOICE + I WAS ABOUT TO SAY AS HE IS UNKNOWN TO THE PUBLIC + A TOUCH + A DISTINCT TOUCH QUOTE CRIED HOLMES + YOU ARE DEVELOPING A CERTAIN UNEXPECTED VEIN OF PAWKY HUMOUR WATSON AGAINST WHICH I MUST LEARN TO GUARD MYSELF + BUT IN CALLING MORIARTY A CRIMINAL YOU ARE UTTERING LIBEL IN THE EYES OF THE LAW AND THERE LIE THE GLORY AND THE WONDER OF IT + THE GREATEST SCHEMER OF ALL TIME THE ORGANIZER OF EVERY DEVILTRY THE CONTROLLING BRAIN OF THE UNDERWORLD A BRAIN WHICH MIGHT HAVE MADE OR MARRED THE DESTINY OF NATIONS THAT'S THE MAN + BUT SO ALOOF IS HE FROM GENERAL SUSPICION SO IMMUNE FROM CRITICISM SO ADMIRABLE IN HIS MANAGEMENT AND SELF EFFACEMENT THAT FOR THOSE VERY WORDS THAT YOU HAVE UTTERED HE COULD HALE YOU TO A COURT AND EMERGE WITH YOUR YEAR'S PENSION AS A SOLATIUM FOR HIS WOUNDED CHARACTER + IS HE NOT THE CELEBRATED AUTHOR OF THE DYNAMICS OF AN ASTEROID A BOOK WHICH ASCENDS TO SUCH RAREFIED HEIGHTS OF PURE MATHEMATICS THAT IT IS SAID THAT THERE WAS NO MAN IN THE SCIENTIFIC PRESS CAPABLE OF CRITICIZING IT + IS THIS A MAN TO TRADUCE + FOULMOUTHED DOCTOR AND SLANDERED PROFESSOR SUCH WOULD BE YOUR RESPECTIVE ROLES + THAT'S GENIUS WATSON + BUT IF I AM SPARED BY LESSER MEN OUR DAY WILL SURELY COME + MAY I BE THERE TO SEE + I EXCLAIMED DEVOUTLY + BUT YOU WERE SPEAKING OF THIS MAN PORLOCK + AH YES THE SO CALLED PORLOCK IS A LINK IN THE CHAIN SOME LITTLE WAY FROM ITS GREAT ATTACHMENT + PORLOCK IS NOT QUITE A SOUND LINK BETWEEN OURSELVES + HE IS THE ONLY FLAW IN THAT CHAIN SO FAR AS I HAVE BEEN ABLE TO TEST IT QUOTE + BUT NO CHAIN IS STRONGER THAN ITS WEAKEST LINK + EXACTLY MY DEAR WATSON + HENCE THE EXTREME IMPORTANCE OF PORLOCK + LED ON BY SOME RUDIMENTARY ASPIRATIONS TOWARDS RIGHT AND ENCOURAGED BY THE JUDICIOUS STIMULATION OF AN OCCASIONAL TEN POUND NOTE SENT TO HIM BY DEVIOUS METHODS HE HAS ONCE OR TWICE GIVEN ME ADVANCE INFORMATION WHICH HAS BEEN OF VALUE THAT HIGHEST VALUE WHICH ANTICIPATES AND PREVENTS RATHER THAN AVENGES CRIME + I CANNOT DOUBT THAT IF WE HAD THE CIPHER WE SHOULD FIND THAT THIS COMMUNICATION IS OF THE NATURE THAT I INDICATE + AGAIN HOLMES FLATTENED OUT THE PAPER UPON HIS UNUSED PLATE + I ROSE AND LEANING OVER HIM STARED DOWN AT THE CURIOUS INSCRIPTION WHICH RAN AS FOLLOWS FIVE HUNDRED THIRTY FOUR C. TWO THIRTEEN ONE HUNDRED TWENTY SEVEN THIRTY SIX THIRTY ONE FOUR SEVENTEEN TWENTY ONE FORTY ONE DOUGLAS ONE HUNDRED NINE TWO HUNDRED NINETY THREE FIVE THIRTY SEVEN BIRLSTONE TWENTY SIX BIRLSTONE NINE FORTY SEVEN ONE HUNDRED SEVENTY ONE + WHAT DO YOU MAKE OF IT HOLMES + IT IS OBVIOUSLY AN ATTEMPT TO CONVEY SECRET INFORMATION + QUOTE BUT WHAT IS THE USE OF A CIPHER MESSAGE WITHOUT THE CIPHER QUOTE + IN THIS INSTANCE NONE AT ALL + WHY DO YOU SAY IN THIS INSTANCE + BECAUSE THERE ARE MANY CIPHERS WHICH I WOULD READ AS EASILY AS I DO THE APOCRYPHA OF THE AGONY COLUMN SUCH CRUDE DEVICES AMUSE THE INTELLIGENCE WITHOUT FATIGUING IT + BUT THIS IS DIFFERENT + IT IS CLEARLY A REFERENCE TO THE WORDS IN A PAGE OF SOME BOOK + UNTIL I AM TOLD WHICH PAGE AND WHICH BOOK I AM POWERLESS + BUT WHY DOUGLAS AND BIRLSTONE + QUOTE CLEARLY BECAUSE THOSE ARE WORDS WHICH WERE NOT CONTAINED IN THE PAGE IN QUESTION QUOTE + THEN WHY HAS HE NOT INDICATED THE BOOK + YOW NATIVE SHREWDNESS MY DEAR WATSON THAT INNATE CUNNING WHICH IS THE DELIGHT OF YOUR FRIENDS WOULD SURELY PREVENT YOU FROM INCLOSING CIPHER AND MESSAGE IN THE SAME ENVELOPE + SHOULD IT MISCARRY YOU ARE UNDONE + AS IT IS BOTH HAVE TO GO WRONG BEFORE ANY HARM COMES FROM IT + OUR SECOND POST IS NOW OVERDUE AND I SHALL BE SURPRISED IF IT DOES NOT BRING US EITHER A FURTHER LETTER OF EXPLANATION OR AS IS MORE PROBABLE THE VERY VOLUME TO WHICH THESE FIGURES REFER + HOLMES'S CALCULATION WAS FULFILLED WITHIN A VERY FEW MINUTES BY THE APPEARANCE OF BILLY THE PAGE WITH THE VERY LETTER WHICH WE WERE EXPECTING + THE SAME WRITING REMARKED HOLMES AS HE OPENED THE ENVELOPE AND ACTUALLY SIGNED HE ADDED IN AN EXULTANT VOICE AS HE UNFOLDED THE EPISTLE + COME WE ARE GETTING ON WATSON + HIS BROW CLOUDED HOWEVER AS HE GLANCED OVER THE CONTENTS + QUOTE DEAR ME THIS IS VERY DISAPPOINTING + I FEAR WATSON THAT ALL OUR EXPECTATIONS COME TO NOTHING + I TRUST THAT THE MAN PORLOCK WILL COME TO NO HARM + DEAR MR. HOLMES HE SAYS I WILL GO NO FURTHER IN THIS MANER + IT IS TOO DANGEROUS HE SUSPECTS ME + I CAN SEE THAT HE SUSPECTS ME + HE CAME TO ME QUITE UNEXPECTEDLY AFTER I HAD ACTUALLY ADDRESSED THIS ENVE LOPE WITH THE INTENTION OF SENDING YOU THE KEY TO THE CIPHER + I WAS ABLE TO COVER IT UP + IF HE HAD SEEN IT IT WOULD HAVE GONE HARD WITH ME + BUT I READ SUSPICION IN HIS EYES + PLEASE BURN THE CIPHER MESSAGE WHICH CAN NOW BE OF NO USE TO YOU + FRED PORLOCK + HOLMES SAT FOR SOME LITTLE TIME TWISTING THIS LETTER BETWEEN HIS FINGERS AND FROWNING AS HE STARED INTO THE FIRE + AFTER ALL HE SAID AT LAST THERE MAY BE NOTHING IN IT + IT MAY BE ONLY HIS GUILTY CONSCIENCE + KNOWING HIMSELF TO BE A TRAITOR HE MAY HAVE READ THE ACCUSATION IN THE OTHER'S EYES + THE OTHER BEING I PRESUME PROFESSOR MORIARTY + QUOTE NO LESS + WHEN ANY OF THAT PARTY TALK ABOUT HE YOU KNOW WHOM THEY MEAN + THERE IS ONE PREDOMINANT HE FOR ALL OF THEM + BUT WHAT CAN HE DO + HUM + THAT'S A LARGE QUESTION + WHEN YOU HAVE ONE OF THE FIRST BRAINS OF EUROPE UP AGAINST YOU AND ALL THE POWERS OF DARKNESS AT HIS BACK THERE ARE INFINITE POSSIBILITIES + ANYHOW FRIEND PORLOCK IS EVIDENTLY SCARED OUT OF HIS SENSES KINDLY COMPARE THE WRITING IN THE NOTE TO THAT UPON ITS ENVELOPE WHICH WAS DONE HE TELLS US BEFORE THIS ILL OMENED VISIT + THE ONE IS CLEAR AND FIRM + THE OTHER HARDLY LEGIBLE + WHY DID HE WRITE AT ALL + WHY DID HE NOT SIMPLY DROP IT QUOTE + BECAUSE HE FEARED I WOULD MAKE SOME INQUIRY AFTER HIM IN THAT CASE AND POSSIBLY BRING TROUBLE ON HIM + NO DOUBT SAID I. OF COURSE + I HAD PICKED UP THE ORIGINAL CIPHER MESSAGE AND WAS BENDING MY BROWS OVER IT + IT'S PRETTY MADDENING TO THINK THAT AN IMPORTANT SECRET MAY LIE HERE ON THIS SLIP OF PAPER AND THAT IT IS BEYOND HUMAN POWER TO PENETRATE IT + SHERLOCK HOLMES HAD PUSHED AWAY HIS UNTASTED BREAKFAST AND LIT THE UNSAVOURY PIPE WHICH WAS THE COMPANION OF HIS DEEPEST MEDITATIONS + I WONDER SAID HE LEANING BACK AND STARING AT THE CEILING + PERHAPS THERE ARE POINTS WHICH HAVE ESCAPED YOUR MACHIAVELLIAN INTELLECT + LET US CONSIDER THE PROBLEM IN THE LIGHT OF PURE REASON + THIS MAN'S REFERENCE IS TO A BOOK + THAT IS OUR POINT OF DEPARTURE QUOTE + A SOMEWHAT VAGUE ONE + LET US SEE THEN IF WE CAN NARROW IT DOWN + AS I FOCUS MY MIND UPON IT IT SEEMS RATHER LESS IMPENETRABLE + WHAT INDICATIONS HAVE WE AS TO THIS BOOK + NONE + WELL WELL IT IS SURELY NOT QUITE SO BAD AS THAT + THE CIPHER MESSAGE BEGINS WITH A LARGE FIVE HUNDRED THIRTY FOUR DOES IT NOT + WE MAY TAKE IT AS A WORKING HYPOTHESIS THAT FIVE HUNDRED THIRTY FOUR IS THE PARTICULAR PAGE TO WHICH THE CIPHER REFERS + SO OUR BOOK HAS ALREADY BECOME A LARGE BOOK WHICH IS SURELY SOMETHING GAINED + WHAT OTHER INDICATIONS HAVE WE AS TO THE NATURE OF THIS LARGE BOOK + THE NEXT SIGN IS C. TWO + WHAT DO YOU MAKE OF THAT WATSON QUOTE + CHAPTER THE SECOND NO DOUBT + HARDLY THAT WATSON + YOU WILL I AM SURE AGREE WITH ME THAT IF THE PAGE BE GIVEN THE NUMBER OF THE CHAPTER IS IMMATERIAL + ALSO THAT IF PAGE FIVE HUNDRED THIRTY FOUR FINDS US ONLY IN THE SECOND CHAPTER THE LENGTH OF THE FIRST ONE MUST HAVE BEEN REALLY INTOLERABLE + COLUMN + I CRIED + BRILLIANT WATSON + YOU ARE SCINTILLATING THIS MORNING + IF IT IS NOT COLUMN THEN I AM VERY MUCH DECEIVED + SO NOW YOU SEE WE BEGIN TO VISUALIZE A LARGE BOOK PRINTED IN DOUBLE COLUMNS WHICH ARE EACH OF A CONSIDERABLE IENGTH SINCE ONE OF THE WORDS IS NUMBERED IN THE DOCUMENT AS THE TWO HUNDRED AND NINETYTHIRD + HAVE WE REACHED THE LIMITS OF WHAT REASON CAN SUPPLY QUOTE + I FEAR THAT WE HAVE + SURELY YOU DO YOURSELF AN INJUSTICE + ONE MORE CORUSCATION MY DEAR WATSON YET ANOTHER BRAIN WAVE + HAD THE VOLUME BEEN AN UNUSUAL ONE HE WOULD HAVE SENT IT TO ME + INSTEAD OF THAT HE HAD INTENDED BEFORE HIS PLANS WERE NIPPED TO SEND ME THE CLUE IN THIS ENVELOPE + HE SAYS SO IN HIS NOTE + THIS WOULD SEEM TO INDICATE THAT THE BOOK IS ONE WHICH HE THOUGHT I WOULD HAVE NO DIFFICULTY IN FINDING FOR MYSELF + HE HAD IT AND HE IMAGINED THAT I WOULD HAVE IT TOO + IN SHORT WATSON IT IS A VERY COMMON BOOK + WHAT YOU SAY CERTAINLY SOUNDS PLAUSIBLE + SO WE HAVE CONTRACTED OUR FIELD OF SEARCH TO A LARGE BOOK PRINTED IN DOUBLE COLUMNS AND IN COMMON USE + QUOTE THE BIBLE QUOTE + I CRIED TRIUMPHANTLY + GOOD WATSON GOOD + BUT NOT IF I MAY SAY SO QUITE GOOD ENOUGH + EVEN IF I ACCEPTED THE COMPLIMENT FOR MYSELF I COULD HARDLY NAME ANY VOLUME WHICH WOULD BE LESS LIKELY TO IIE AT THE ELBOW OF ONE OF MORIARTY'S ASSOCIATES + BESIDES THE EDITIONS OF HOLY WRIT ARE SO NUMEROUS THAT HE COULD HARDLY SUPPOSE THAT TWO COPIES WOULD HAVE THE SAME PAGINATION + THIS IS CLEARLY A BOOK WHICH IS STANDARDIZED + HE KNOWS FOR CERTAIN THAT HIS PAGE FIVE HUNDRED THIRTY FOUR WILL EXACTLY AGREE WITH MY PAGE FIVE HUNDRED THIRTY FOUR + BUT VERY FEW BOOKS WOULD CORRESPOND WITH THAT + EXACTLY + THEREIN LIES OUR SALVATION + OUR SEARCH IS NARROWED DOWN TO STANDARDIZED BOOKS WHICH ANYONE MAY BE SUPPOSED TO POSSESS + QUOTE BRADSHAW QUOTE + THERE ARE DIFFICULTIES WATSON + THE VOCABULARY OF BRADSHAW IS NERVOUS AND TERSE BUT LIMITED + THE SELECTION OF WORDS WOULD HARDLY LEND ITSELF TO THE SENDING OF GENERAL MESSAGES + WE WILL ELIMINATE BRADSHAW + THE DICTIONARY IS I FEAR INADMISSIBLE FOR THE SAME REASON + WHAT THEN IS LEFT + AN ALMANAC + EXCELLENT WATSON + I AM VERY MUCH MISTAKEN IF YOU HAVE NOT TOUCHED THE SPOT + AN ALMANAC + LET US CONSIDER THE CLAIMS OF WHITAKER'S ALMANAC + IT IS IN COMMON USE + IT HAS THE REQUISITE NUMBER OF PAGES + IT IS IN DOUBLE COLUMN + THOUGH RESERVED IN ITS EARLIER VOCABULARY IT BECOMES IF I REMEMBER RIGHT QUITE GARRULOUS TOWARDS THE END + HE PICKED THE VOLUME FROM HIS DESK + QUOTE HERE IS PAGE FIVE HUNDRED THIRTY FOUR COLUMN TWO A SUBSTANTIAL BLOCK OF PRINT DEALING I PERCEIVE WITH THE TRADE AND RESOURCES OF BRITISH INDIA + JOT DOWN THE WORDS WATSON + NUMBER THIRTEEN IS MAHRATTA + NOT I FEAR A VERY AUSPICIOUS BEGINNING + NUMBER ONE HUNDRED AND TWENTY SEVEN IS GOVERNMENT WHICH AT LEAST MAKES SENSE THOUGH SOMEWHAT IRRELEVANT TO OURSELVES AND PROFESSOR MORIARTY + NOW LET US TRY AGAIN + WHAT DOES THE MAHRATTA GOVERNMENT DO + ALAS THE NEXT WORD IS PIG'S BRISTLES + WE ARE UNDONE MY GOOD WATSON + IT IS FINISHED + HE HAD SPOKEN IN JESTING VEIN BUT THE TWITCHING OF HIS BUSHY EYEBROWS BESPOKE HIS DISAPPOINTMENT AND IRRITATION + I SAT HELPLESS AND UNHAPPY STARING INTO THE FIRE + A LONG SILENCE WAS BROKEN BY A SUDDEN EXCLAMATION FROM HOLMES WHO DASHED AT A CUPBOARD FROM WHICH HE EMERGED WITH A SECOND YELLOW COVERED VOLUME IN HIS HAND + WE PAY THE PRICE WATSON FOR BEING TOO UP TO DATE HE CRIED + WE ARE BEFORE OUR TIME AND SUFFER THE USUAL PENALTIES + BEING THE SEVENTH OF JANUARY WE HAVE VERY PROPERLY LAID IN THE NEW ALMANAC + IT IS MORE THAN LIKELY THAT PORLOCK TOOK HIS MESSAGE FROM THE OLD ONE + NO DOUBT HE WOULD HAVE TOLD US SO HAD HIS LETTER OF EXPLANATION BEEN WRITTEN + NOW LET US SEE WHAT PAGE FIVE HUNDRED THIRTY FOUR HAS IN STORE FOR US + NUMBER THIRTEEN IS THERE WHICH IS MUCH MORE PROMISING + NUMBER ONE HUNDRED AND TWENTY SEVEN IS IS THERE IS' HOLMES'S EYES WERE GLEAMING WITH EXCITEMENT AND HIS THIN NERVOUS FINGERS TWITCHED AS HE COUNTED THE WORDS DANGER + HA + HA + CAPITAL + PUT THAT DOWN WATSON + THERE IS DANGER MAY COME VERY SOON ONE + THEN WE HAVE THE NAME DOUGLAS RICH COUNTRY NOW AT BIRLSTONE HOUSE BIRLSTONE CONFIDENCE IS PRESSING + THERE WATSON + WHAT DO YOU THINK OF PURE REASON AND ITS FRUIT + IF THE GREENGROCER HAD SUCH A THING AS A LAUREL WREATH I SHOULD SEND BILLY ROUND FOR IT + I WAS STARING AT THE STRANGE MESSAGE WHICH I HAD SCRAWLED AS HE DECIPHERED IT UPON A SHEET OF FOOLSCAP ON MY KNEE + QUOTE WHAT A QUEER SCRAMBLING WAY OF EXPRESSING HIS MEANING QUOTE SAID I + ON THE CONTRARY HE HAS DONE QUITE REMARKABLY WELL SAID HOLMES + WHEN YOU SEARCH A SINGLE COLUMN FOR WORDS WITH WHICH TO EXPRESS YOUR MEANING YOU CAN HARDLY EXPECT TO GET EVERYTHING YOU WANT + YOU ARE BOUND TO LEAVE SOMETHING TO THE INTELLIGENCE OF YOUR CORRESPONDENT + THE PURPORT IS PERFECTLY CLEAR + SOME DEVILTRY IS INTENDED AGAINST ONE DOUGLAS WHOEVER HE MAY BE RESIDING AS STATED A RICH COUNTRY GENTLEMAN + HE IS SURE CONFIDENCE WAS AS NEAR AS HE COULD GET TO CONFIDENT THAT IT IS PRESSING + THERE IS OUR RESULT AND A VERY WORKMANLIKE LITTLE BIT OF ANALYSIS IT WAS + HOLMES HAD THE IMPERSONAL JOY OF THE TRUE ARTIST IN HIS BETTER WORK EVEN AS HE MOURNED DARKLY WHEN IT FELL BELOW THE HIGH LEVEL TO WHICH HE ASPIRED + HE WAS STILL CHUCKLING OVER HIS SUCCESS WHEN BILLY SWUNG OPEN THE DOOR AND INSPECTOR MACDONALD OF SCOTLAND YARD WAS USHERED INTO THE ROOM + THOSE WERE THE EARLY DAYS AT THE END OF THE EIGHTY'S WHEN ALEC MACDONALD WAS FAR FROM HAVING ATTAINED THE NATIONAL FAME WHICH HE HAS NOW ACHIEVED + HE WAS A YOUNG BUT TRUSTED MEMBER OF THE DETECTIVE FORCE WHO HAD DISTINGUISHED HIMSELF IN SEVERAL CASES WHICH HAD BEEN INTRUSTED TO HIM + HIS TALL BONY FIGURE GAVE PROMISE OF EXCEPTIONAL PHYSICAL STRENGTH WHILE HIS GREAT CRANIUM AND DEEP SET LUSTROUS EYES SPOKE NO LESS CLEARLY OF THE KEEN INTELLIGENCE WHICH TWINKLED OUT FROM BEHIND HIS BUSHY EYEBROWS + HE WAS A SILENT PRECISE MAN WITH A DOUR NATURE AND A HARD ABERDONIAN ACCENT + TWICE ALREADY IN HIS CAREER HAD HOLMES HELPED HIM TO ATTAIN SUCCESS HIS OWN SOLE REWARD BEING THE INTELLECTUAL JOY OF THE PROBLEM + FOR THIS REASON THE AFFECTION AND RESPECT OF THE SCOTCHMAN FOR HIS AMATEUR COLLEAGUE WERE PROFOUND AND HE SHOWED THEM BY THE FRANKNESS WITH WHICH HE CONSULTED HOLMES IN EVERY DIFFICULTY + MEDIOCRITY KNOWS NOTHING HIGHER THAN ITSELF BUT TALENT INSTANTLY RECOGNIZES GENIUS AND MACDONALD HAD TALENT ENOUGH FOR HIS PROFESSION TO ENABLE HIM TO PERCEIVE THAT THERE WAS NO HUMILIATION IN SEEKING THE ASSISTANCE OF ONE WHO ALREADY STOOD ALONE IN EUROPE BOTH IN HIS GIFTS AND IN HIS EXPERIENCE + HOLMES WAS NOT PRONE TO FRIENDSHIP BUT HE WAS TOLERANT OF THE BIG SCOTCHMAN AND SMILED AT THE SIGHT OF HIM + YOU ARE AN EARLY BIRD MR. MAC SAID HE + I WISH YOU LUCK WITH YOUR WORM + I FEAR THIS MEANS THAT THERE IS SOME MISCHIEF AFOOT QUOTE + IF YOU SAID HOPE INSTEAD OF FEAR IT WOULD BE NEARER THE TRUTH I'M THINKING MR. HOLMES THE INSPECTOR ANSWERED WITH A KNOWING GRIN + WELL MAYBE A WEE NIP WOULD KEEP OUT THE RAW MORNING CHILL + NO I WON'T SMOKE I THANK YOU + I'LL HAVE TO BE PUSHING ON MY WAY FOR THE EARLY HOURS OF A CASE ARE THE PRECIOUS ONES AS NO MAN KNOWS BETTER THAN YOUR OWN SELF + BUT BUT + THE INSPECTOR HAD STOPPED SUDDENLY AND WAS STARING WITH A LOOK OF ABSOLUTE AMAZEMENT AT A PAPER UPON THE TABLE + IT WAS THE SHEET UPON WHICH I HAD SCRAWLED THE ENIGMATIC MESSAGE + DOUGLAS HE STAMMERED + BIRLSTONE + WHAT'S THIS MR. HOLMES + MAN IT'S WITCHCRAFT + WHERE IN THE NAME OF ALL THAT IS WONDERFUL DID YOU GET THOSE NAMES QUOTE + IT IS A CIPHER THAT DOCTOR WATSON AND I HAVE HAD OCCASION TO SOLVE + BUT WHY WHAT'S AMISS WITH THE NAMES + THE INSPECTOR LOOKED FROM ONE TO THE OTHER OF US IN DAZED ASTONISHMENT + JUST THIS SAID HE THAT MR. DOUGLAS OF BIRLSTONE MANOR HOUSE WAS HORRIBLY MURDERED LAST NIGHT + CHAPTER TWO SHERLOCK HOLMES DISCOURSES + IT WAS ONE OF THOSE DRAMATIC MOMENTS FOR WHICH MY FRIEND EXISTED + IT WOULD BE AN OVERSTATEMENT TO SAY THAT HE WAS SHOCKED OR EVEN EXCITED BY THE AMAZING ANNOUNCEMENT + WITHOUT HAVING A TINGE OF CRUELTY IN HIS SINGULAR COMPOSLTION HE WAS UNDOUBTEDLY CALLOUS FROM LONG OVERSTIMULATION + YET IF HIS EMOTIONS WERE DULLED HIS INTELLECTUAL PERCEPTIONS WERE EXCEEDINGLY ACTIVE + THERE WAS NO TRACE THEN OF THE HORROR WHICH I HAD MYSELF FELT AT THIS CURT DECLARATION BUT HIS FACE SHOWED RATHER THE QUIET AND INTERESTED COMPOSURE OF THE CHEMIST WHO SEES THE CRYSTALS FALLING INTO POSITION FROM HIS OVERSATURATED SOLUTION + REMARKABLE SAID HE + REMARKAHLE + QUOTE YOU DON'T SEEM SURPRISED QUOTE + INTERESTED MR. MAC BUT HARDLY SURPRISED + WHY SHOULD I BE SURPRISED + I RECEIVE AN ANONYMOUS COMMUNICATION FROM A QUARTER WHICH I KNOW TO BE IMPORTANT WARNING ME THAT DANGER THREATENS A CERTAIN PERSON + WITHIN AN HOUR I LEARN THAT THIS DANGER HAS ACTUALLY MATERIALIZED AND THAT THE PERSON IS DEAD + I AM INTERESTED BUT AS YOU OBSERVE I AM NOT SURPRISED + IN A FEW SHORT SENTENCES HE EXPLAINED TO THE INSPECTOR THE FACTS ABOUT THE LETTER AND THE CIPHER + MACDONALD SAT WITH HIS CHIN ON HIS HANDS AND HIS GREAT SANDY EYEBROWS BUNCHED INTO A YELLOW TANGLE + I WAS GOING DOWN TO BIRLSTONE THIS MORNING SAID HE + I HAD COME TO ASK YOU IF YOU CARED TO COME WITH ME YOU AND YOUR FRIEND HERE + BUT FROM WHAT YOU SAY WE MIGHT PERHAPS BE DOING BETTER WORK IN LONDON + QUOTE I RATHER THINK NOT QUOTE SAID HOLMES + HANG IT ALL MR. HOLMES CRIED THE INSPECTOR + THE PAPERS WILL BE FULL OF THE BIRLSTONE MYSTERY IN A DAY OR TWO BUT WHERE'S THE MYSTERY IF THERE IS A MAN IN LONDON WHO PROPHESIED THE CRIME BEFORE EVER IT OCCURRED + WE HAVE ONLY TO LAY OUR HANDS ON THAT MAN AND THE REST WILL FOLLOW + NO DOUBT MR. MAC + BUT HOW DO YOU PROPOSE TO LAY YOUR HANDS ON THE SO CALLED PORLOCK + MACDONALD TURNED OVER THE LETTER WHICH HOLMES HAD HANDED HIM + QUOTE POSTED IN CAMBERWELL THAT DOESN'T HELP US MUCH + NAME YOU SAY IS ASSUMED + NOT MUCH TO GO ON CERTAINLY + DIDN'T YOU SAY THAT YOU HAVE SENT HIM MONEY + TWICE + AND HOW + IN NOTES TO CAMBERWELL POSTOFFICE + DID YOU EVER TROUBLE TO SEE WHO CALLED FOR THEM + QUOTE NUMBER QUOTE + THE INSPECTOR LOOKED SURPRISED AND A LITTLE SHOCKED + WHY NOT + BECAUSE I ALWAYS KEEP FAITH + I HAD PROMISED WHEN HE FIRST WROTE THAT I WOULD NOT TRY TO TRACE HIM + YOU THINK THERE IS SOMEONE BEHIND HIM + I KNOW THERE IS + QUOTE THIS PROFESSOR THAT I'VE HEARD YOU MENTION QUOTE + EXACTLY + INSPECTOR MACDONALD SMILED AND HIS EYELID QUIVERED AS HE GLANCED TOWARDS ME + I WON'T CONCEAL FROM YOU MR. HOLMES THAT WE THINK IN THE C. I. D. THAT YOU HAVE A WEE BIT OF A BEE IN YOUR BONNET OVER THIS PROFESSOR + I MADE SOME INQUIRIES MYSELF ABOUT THE MATTER + HE SEEMS TO BE A VERLY RESPECTABLE LEARNED AND TALENTED SORT OF MAN + I'M GLAD YOU'VE GOT SO FAR AS TO RECOGNIZE THE TALENT + MAN YOU CAN'T BUT RECOGNIZE IT + AFTER I HEARD YOUR VIEW I MADE IT MY BUSINESS TO SEE HIM + I HAD A CHAT WITH HIM ON ECLIPSES + HOW THE TALK GOT THAT WAY I CANNA THINK BUT HE HAD OUT A REFLECTOR LANTERN AND A GLOBE AND MADE IT ALL CLEAR IN A MINUTE + HE LENT ME A BOOK BUT I DON'T MIND SAYING THAT IT WAS A BIT ABOVE MY HEAD THOUGH I HAD A GOOD ABERDEEN UPBRINGING + HE'D HAVE MADE A GRAND MEENISTER WITH HIS THIN FACE AND GRAY HAIR AND SOLEMN LIKE WAY OF TALKING + WHEN HE PUT HIS HAND ON MY SHOULDER AS WE WERE PARTING IT WAS LIKE A FATHER'S BLESSING BEFORE YOU GO OUT INTO THE COLD CRUEL WORLD QUOTE + HOLMES CHUCKLED AND RUBBED HIS HANDS + GREAT HE SAID + GREAT + TELL ME FRIEND MACDONALD THIS PLEASING AND TOUCHING INTERVIEW WAS I SUPPOSE IN THE PROFESSOR'S STUDY + THAT'S SO + A FINE ROOM IS IT NOT + QUOTE VERY FINE VERY HANDSOME INDEED MR. HOLMES QUOTE + YOU SAT IN FRONT OF HIS WRITING DESK + JUST SO + SUN IN YOUR EYES AND HIS FACE IN THE SHADOW + WELL IT WAS EVENING BUT I MIND THAT THE LAMP WAS TURNED ON MY FACE + IT WOULD BE + DID YOU HAPPEN TO OBSERVE A PICTURE OVER THE PROFESSOR'S HEAD QUOTE + I DON'T MISS MUCH MR. HOLMES + MAYBE I LEARNED THAT FROM YOU + YES I SAW THE PICTURE A YOUNG WOMAN WITH HER HEAD ON HER HANDS PEEPING AT YOU SIDEWAYS + THAT PAINTING WAS BY JEAN BAPTISTE GREUZE + THE INSPECTOR ENDEAVOURED TO LOOK INTERESTED + JEAN BAPTISTE GREUZE HOLMES CONTINUED JOINING HIS FINGER TIPS AND LEANING WELL BACK IN HIS CHAIR WAS A FRENCH ARTIST WHO FLOURISHED BETWEEN THE YEARS ONE THOUSAND SEVEN HUNDRED FIFTY AND EIGHTEEN HUNDRED + I ALLUDE OF COURSE TO HIS WORKING CAREER + MODERN CRITICISM HAS MORE THAN INDORSED THE HIGH OPINION FORMED OF HIM BY HIS CONTEMPORARIES + THE INSPECTOR'S EYES GREW ABSTRACTED + QUOTE HADN'T WE BETTER QUOTE HE SAID + WE ARE DOING SO HOLMES INTERRUPTED + ALL THAT I AM SAYING HAS A VERY DIRECT AND VITAL BEARING UPON WHAT YOU HAVE CALLED THE BIRLSTONE MYSTERY + IN FACT IT MAY IN A SENSE BE CALLED THE VERY CENTRE OF IT + MACDONALD SMILED FEEBLY AND LOOKED APPEALINGLY TO ME + YOUR THOUGHTS MOVE A BIT TOO QUICK FOR ME MR. HOLMES + YOU LEAVE OUT A LINK OR TWO AND I CAN'T GET OVER THE GAP + WHAT IN THE WHOLE WIDE WORLD CAN BE THE CONNECTION BETWEEN THIS DEAD PAINTING MAN AND THE AFFAIR AT BIRLSTONE + QUOTE ALL KNOWLEDGE COMES USEFUL TO THE DETECTIVE QUOTE REMARKED HOLMES + EVEN THE TRIVIAL FACT THAT IN THE YEAR ONE THOUSAND EIGHT HUNDRED SIXTY FIVE A PICTURE BY GREUZE ENTITLED LA JEUNE FILLE A L'AGNEAU FETCHED ONE MILLION TWO HUNDRED THOUSAND FRANCS MORE THAN FORTY THOUSAND POUNDS AT THE PORTALIS SALE MAY START A TRAIN OF REFLECTION IN YOUR MIND + IT WAS CLEAR THAT IT DID + THE INSPECTOR LOOKED HONESTLY INTERESTED + I MAY REMIND YOU HOLMES CONTINUED THAT THE PROFESSOR'S SALARY CAN BE ASCERTAINED IN SEVERAL TRUSTWORTHY BOOKS OF REFERENCE + IT IS SEVEN HUNDRED A YEAR + QUITE SO + HOW COULD HE + QUOTE AY THAT'S REMARKABLE QUOTE SAID THE INSPECTOR THOUGHTFULLY + TALK AWAY MR. HOLMES + I'M JUST LOVING IT + IT'S FINE + HOLMES SMILED + HE WAS ALWAYS WARMED BY GENUINE ADMIRATION THE CHARACTERISTIC OF THE REAL ARTIST + WHAT ABOUT BIRLSTONE HE ASKED + WE'VE TIME YET SAID THE INSPECTOR GLANCING AT HIS WATCH + I'VE A CAB AT THE DOOR AND IT WON'T TAKE US TWENTY MINUTES TO VICTORIA + BUT ABOUT THIS PICTURE I THOUGHT YOU TOLD ME ONCE MR. HOLMES THAT YOU HAD NEVER MET PROFESSOR MORIARTY QUOTE + NO I NEVER HAVE + THEN HOW DO YOU KNOW ABOUT HIS ROOMS + AH THAT'S ANOTHER MATTER + I HAVE BEEN THREE TIMES IN HIS ROOMS TWICE WAITING FOR HIM UNDER DIFFERENT PRETEXTS AND LEAVING BEFORE HE CAME + ONCE WELL I CAN HARDLY TELL ABOUT THE ONCE TO AN OFFICIAL DETECTIVE + IT WAS ON THE LAST OCCASION THAT I TOOK THE LIBERTY OF RUNNING OVER HIS PAPERS WITH THE MOST UNEXPECTED RESULTS + YOU FOUND SOMETHING COMPROMISING + QUOTE ABSOLUTELY NOTHING + THAT WAS WHAT AMAZED ME + HOWEVER YOU HAVE NOW SEEN THE POINT OF THE PICTURE + IT SHOWS HIM TO BE A VERY WEALTHY MAN + HOW DID HE ACQUIRE WEALTH + HE IS UNMARRIED + HIS YOUNGER BROTHER IS A STATION MASTER IN THE WEST OF ENGLAND + HIS CHAIR IS WORTH SEVEN HUNDRED A YEAR + AND HE OWNS A GREUZE + WELL + SURELY THE INFERENCE IS PLAIN + YOU MEAN THAT HE HAS A GREAT INCOME AND THAT HE MUST EARN IT IN AN ILLEGAL FASHION + EXACTLY + OF COURSE I HAVE OTHER REASONS FOR THINKING SO DOZENS OF EXIGUOUS THREADS WHICH LEAD VAGUELY UP TOWARDS THE CENTRE OF THE WEB WHERE THE POISONOUS MOTIONLESS CREATURE IS LURKING + I ONLY MENTION THE GREUZE BECAUSE IT BRINGS THE MATTER WITHIN THE RANGE OF YOUR OWN OBSERVATION QUOTE + WELL MR. HOLMES I ADMIT THAT WHAT YOU SAY IS INTERESTING IT'S MORE THAN INTERESTING IT'S JUST WONDERFUL + BUT LET US HAVE IT A LITTLE CLEARER IF YOU CAN + IS IT FORGERY COINING BURGLARY WHERE DOES THE MONEY COME FROM + HAVE YOU EVER READ OF JONATHAN WILD + WELL THE NAME HAS A FAMILIAR SOUND + SOMEONE IN A NOVEL WAS HE NOT + I DON'T TAKE MUCH STOCK OF DETECTIVES IN NOVELS CHAPS THAT DO THINGS AND NEVER LET YOU SEE HOW THEY DO THEM + THAT'S JUST INSPIRATION NOT BUSINESS + QUOTE JONATHAN WILD WASN'T A DETECTIVE AND HE WASN'T IN A NOVEL + HE WAS A MASTER CRIMINAL AND HE LIVED LAST CENTURY ONE THOUSAND SEVEN HUNDRED FIFTY OR THEREABOUTS + THEN HE'S NO USE TO ME + I'M A PRACTICAL MAN + MR. MAC THE MOST PRACTICAL THING THAT YOU EVER DID IN YOUR LIFE WOULD BE TO SHUT YOURSELF UP FOR THREE MONTHS AND READ TWELVE HOURS A DAY AT THE ANNALS OF CRIME + EVERYTHING COMES IN CIRCLES EVEN PROFESSOR MORIARTY + JONATHAN WILD WAS THE HIDDEN FORCE OF THE LONDON CRIMINALS TO WHOM HE SOLD HIS BRAINS AND HIS ORGANIZATION ON A FIFTEEN PER CENT COMMISSION + THE OLD WHEEL TURNS AND THE SAME SPOKE COMES UP + IT'S ALL BEEN DONE BEFORE AND WILL BE AGAIN + I'LL TELL YOU ONE OR TWO THINGS ABOUT MORIARTY WHICH MAY INTEREST YOU + QUOTE YOU'LL INTEREST ME RIGHT ENOUGH QUOTE + I HAPPEN TO KNOW WHO IS THE FIRST LINK IN HIS CHAIN A CHAIN WITH THIS NAPOLEON GONE WRONG AT ONE END AND A HUNDRED BROKEN FIGHTING MEN PICKPOCKETS BLACKMAILERS AND CARD SHARPERS AT THE OTHER WITH EVERY SORT OF CRIME IN BETWEEN + HIS CHIEF OF STAFF IS COLONEL SEBASTIAN MORAN AS ALOOF AND GUARDED AND INACCESSIBLE TO THE LAW AS HIMSELF + WHAT DO YOU THINK HE PAYS HIM + I'D LIKE TO HEAR + SIX THOUSAND A YEAR + THAT'S PAYING FOR BRAINS YOU SEE THE AMERICAN BUSINESS PRINCIPLE + I LEARNED THAT DETAIL QUITE BY CHANCE + IT'S MORE THAN THE PRIME MINISTER GETS + THAT GIVES YOU AN IDEA OF MORIARTY'S GAINS AND OF THE SCALE ON WHICH HE WORKS + ANOTHER POINT I MADE IT MY BUSINESS TO HUNT DOWN SOME OF MORIARTY'S CHECKS LATELY JUST COMMON INNOCENT CHECKS THAT HE PAYS HIS HOUSEHOLD BILLS WITH + THEY WERE DRAWN ON SIX DIFFERENT BANKS + DOES THAT MAKE ANY IMPRESSION ON YOUR MIND + QUOTE QUEER CERTAINLY + BUT WHAT DO YOU GATHER FROM IT + THAT HE WANTED NO GOSSIP ABOUT HIS WEALTH + NO SINGLE MAN SHOULD KNOW WHAT HE HAD + I HAVE NO DOUBT THAT HE HAS TWENTY BANKING ACCOUNTS THE BULK OF HIS FORTUNE ABROAD IN THE DEUTSCHE BANK OR THE CREDIT LYONNAIS AS LIKELY AS NOT + SOMETIME WHEN YOU HAVE A YEAR OR TWO TO SPARE I COMMEND TO YOU THE STUDY OF PROFESSOR MORIARTY + INSPECTOR MACDONALD HAD GROWN STEADILY MORE IMPRESSED AS THE CONVERSATION PROCEEDED + HE HAD LOST HIMSELF IN HIS INTEREST + NOW HIS PRACTICAL SCOTCH INTELLIGENCE BROUGHT HIM BACK WITH A SNAP TO THE MATTER IN HAND + HE CAN KEEP ANYHOW SAID HE + YOU'VE GOT US SIDE TRACKED WITH YOUR INTERESTING ANECDOTES MR. HOLMES + WHAT REALLY COUNTS IS YOUR REMARK THAT THERE IS SOME CONNECTION BETWEEN THE PROFESSOR AND THE CRIME + THAT YOU GET FROM THE WARNING RECEIVED THROUGH THE MAN PORLOCK + CAN WE FOR OUR PRESENT PRACTICAL NEEDS GET ANY FURTHER THAN THAT QUOTE + WE MAY FORM SOME CONCEPTION AS TO THE MOTIVES OF THE CRIME + IT IS AS I GATHER FROM YOUR ORIGINAL REMARKS AN INEXPLICABLE OR AT LEAST AN UNEXPLAINED MURDER + NOW PRESUMING THAT THE SOURCE OF THE CRIME IS AS WE SUSPECT IT TO BE THERE MIGHT BE TWO DIFFERENT MOTIVES + IN THE FIRST PLACE I MAY TELL YOU THAT MORIARTY RULES WITH A ROD OF IRON OVER HIS PEOPLE + HIS DISCIPLINE IS TREMENDOUS + THERE IS ONLY ONE PUNISHMENT IN HIS CODE + IT IS DEATH + NOW WE MIGHT SUPPOSE THAT THIS MURDERED MAN THIS DOUGLAS WHOSE APPROACHING FATE WAS KNOWN BY ONE OF THE ARCH CRIMINAL'S SUBORDINATES HAD IN SOME WAY BETRAYED THE CHIEF + HIS PUNISHMENT FOLLOWED AND WOULD BE KNOWN TO ALL IF ONLY TO PUT THE FEAR OF DEATH INTO THEM + WELL THAT IS ONE SUGGESTION MR. HOLMES + THE OTHER IS THAT IT HAS BEEN ENGINEERED BY MORIARTY IN THE ORDINARY COURSE OF BUSINESS + WAS THERE ANY ROBBERY + QUOTE I HAVE NOT HEARD QUOTE + IF SO IT WOULD OF COURSE BE AGAINST THE FIRST HYPOTHESIS AND IN FAVOUR OF THE SECOND + MORIARTY MAY HAVE BEEN ENGAGED TO ENGINEER IT ON A PROMISE OF PART SPOILS OR HE MAY HAVE BEEN PAID SO MUCH DOWN TO MANAGE IT + EITHER IS POSSIBLE + BUT WHICHEVER IT MAY BE OR IF IT IS SOME THIRD COMBINATION IT IS DOWN AT BIRLSTONE THAT WE MUST SEEK THE SOLUTION + I KNOW OUR MAN TOO WELL TO SUPPOSE THAT HE HAS LEFT ANYTHING UP HERE WHICH MAY LEAD US TO HIM + THEN TO BIRLSTONE WE MUST GO CRIED MACDONALD JUMPING FROM HIS CHAIR + MY WORD IT'S LATER THAN I THOUGHT + I CAN GIVE YOU GENTLEMEN FIVE MINUTES FOR PREPARATION AND THAT IS ALL + QUOTE AND AMPLE FOR US BOTH QUOTE SAID HOLMES AS HE SPRANG UP AND HASTENED TO CHANGE FROM HIS DRESSING GOWN TO HIS COAT + WHILE WE ARE ON OUR WAY MR. MAC I WILL ASK YOU TO BE GOOD ENOUGH TO TELL ME ALL ABOUT IT + ALL ABOUT IT PROVED TO BE DISAPPOINTINGLY LITTLE AND YET THERE WAS ENOUGH TO ASSURE US THAT THE CASE BEFORE US MIGHT WELL BE WORTHY OF THE EXPERT'S CLOSEST ATTENTION + HE BRIGHTENED AND RUBBED HIS THIN HANDS TOGETHER AS HE LISTENED TO THE MEAGRE BUT REMARKABLE DETAILS + A LONG SERIES OF STERILE WEEKS LAY BEHIND US AND HERE AT LAST THERE WAS A FITTING OBJECT FOR THOSE REMARKABLE POWERS WHICH LIKE ALL SPECIAL GIFTS BECOME IRKSOME TO THEIR OWNER WHEN THEY ARE NOT IN USE + THAT RAZOR BRAIN BLUNTED AND RUSTED WITH INACTION + SHERLOCK HOLMES'S EYES GLISTENED HIS PALE CHEEKS TOOK A WARMER HUE AND HIS WHOLE EAGER FACE SHONE WITH AN INWARD LIGHT WHEN THE CALL FOR WORK REACHED HIM + LEANING FORWARD IN THE CAB HE LISTENED INTENTLY TO MACDONALD'S SHORT SKETCH OF THE PROBLEM WHICH AWAITED US IN SUSSEX + THE INSPECTOR WAS HIMSELF DEPENDENT AS HE EXPLAINED TO US UPON A SCRIBBLED ACCOUNT FORWARDED TO HIM BY THE MILK TRAIN IN THE EARLY HOURS OF THE MORNING + WHITE MASON THE LOCAL OFFICER WAS A PERSONAL FRIEND AND HENCE MACDONALD HAD BEEN NOTIFIED MUCH MORE PROMPTLY THAN IS USUAL AT SCOTLAND YARD WHEN PROVINCIALS NEED THEIR ASSISTANCE + IT IS A VERY COLD SCENT UPON WHICH THE METROPOLITAN EXPERT IS GENERALLY ASKED TO RUN + DEAR INSPECTOR MACDONALD SAID THE LETTER WHICH HE READ TO US OFFICIAL REQUISITION FOR YOUR SERVICES IS IN SEPARATE ENVE LOPE + THIS IS FOR YOUR PRIVATE EYE + WIRE ME WHAT TRAIN IN THE MORNING YOU CAN GET FOR BIRLSTONE AND I WILL MEET IT OR HAVE IT MET IF I AM TOO OCCUPIED + THIS CASE IS A SNORTER + DON'T WASTE A MOMENT IN GETTING STARTED + IF YOU CAN BRING MR. HOLMES PLEASE DO SO FOR HE WILL FIND SOMETHING AFTER HIS OWN HEART + WE WOULD THINK THE WHOLE THING HAD BEEN FIXED UP FOR THEATRICAL EFFECT IF THERE WASN'T A DEAD MAN IN THE MIDDLE OF IT + MY WORD IT IS A SNORTER + YOUR FRIEND SEEMS TO BE NO FOOL REMARKED HOLMES + QUOTE NO SIR WHITE MASON IS A VERY LIVE MAN IF I AM ANY JUDGE QUOTE + WELL HAVE YOU ANYTHING MORE + ONLY THAT HE WILL GIVE US EVERY DETAIL WHEN WE MEET + THEN HOW DID YOU GET AT MR. DOUGLAS AND THE FACT THAT HE HAD BEEN HORRIBLY MURDERED + THAT WAS IN THE INCLOSED OFFICIAL REPORT + IT DIDN'T SAY HORRIBLE THAT'S NOT A RECOGNIZED OFFICIAL TERM + IT GAVE THE NAME JOHN DOUGLAS + IT MENTIONED THAT HIS INJURIES HAD BEEN IN THE HEAD FROM THE DISCHARGE OF A SHOTGUN + IT ALSO MENTIONED THE HOUR OF THE ALARM WHICH WAS CLOSE ON TO MIDNIGHT LAST NIGHT + IT ADDED THAT THE CASE WAS UNDOUBTEDLY ONE OF MURDER BUT THAT NO ARREST HAD BEEN MADE AND THAT THE CASE WAS ONE WHICH PRESENTED SOME VERY PERPLEXING AND EXTRAORDINARY FEATURES + THAT'S ABSOLUTELY ALL WE HAVE AT PRESENT MR. HOLMES + QUOTE THEN WITH YOUR PERMISSION WE WILL LEAVE IT AT THAT MR. MAC + THE TEMPTATION TO FORM PREMATURE THEORIES UPON INSUFFICIENT DATA IS THE BANE OF OUR PROFESSION + I CAN SEE ONLY TWO THINGS FOR CERTAIN AT PRESENT A GREAT BRAIN IN LONDON AND A DEAD MAN IN SUSSEX + IT'S THE CHAIN BETWEEN THAT WE ARE GOING TO TRACE + CHAPTER THREE THE TRAGEDY OF BIRLSTONE + NOW FOR A MOMENT I WILL ASK LEAVE TO REMOVE MY OWN INSIGNIFICANT PERSONALITY AND TO DESCRIBE EVENTS WHICH OCCURRED BEFORE WE ARRIVED UPON THE SCENE BY THE LIGHT OF KNOWLEDGE WHICH CAME TO US AFTERWARDS + ONLY IN THIS WAY CAN I MAKE THE READER APPRECIATE THE PEOPLE CONCERNED AND THE STRANGE SETTING IN WHICH THEIR FATE WAS CAST + THE VILLAGE OF BIRLSTONE IS A SMALL AND VERY ANCIENT CLUSTER OF HALF TIMBERED COTTAGES ON THE NORTHERN BORDER OF THE COUNTY OF SUSSEX + FOR CENTURIES IT HAD REMAINED UNCHANGED BUT WITHIN THE LAST FEW YEARS ITS PICTURESQUE APPEARANCE AND SITUATION HAVE ATTRACTED A NUMBER OF WELL TO DO RESIDENTS WHOSE VILLAS PEEP OUT FROM THE WOODS AROUND + THESE WOODS ARE LOCALLY SUPPOSED TO BE THE EXTREME FRINGE OF THE GREAT WEALD FOREST WHICH THINS AWAY UNTIL IT REACHES THE NORTHERN CHALK DOWNS + A NUMBER OF SMALL SHOPS HAVE COME INTO BEING TO MEET THE WANTS OF THE INCREASED POPULATION SO THERE SEEMS SOME PROSPECT THAT BIRLSTONE MAY SOON GROW FROM AN ANCIENT VILLAGE INTO A MODERN TOWN + IT IS THE CENTRE FOR A CONSIDERABLE AREA OF COUNTRY SINCE TUNBRIDGE WELLS THE NEAREST PLACE OF IMPORTANCE IS TEN OR TWELVE MILES TO THE EASTWARD OVER THE BORDERS OF KENT + ABOUT HALF A MILE FROM THE TOWN STANDING IN AN OLD PARK FAMOUS FOR ITS HUGE BEECH TREES IS THE ANCIENT MANOR HOUSE OF BIRLSTONE + PART OF THIS VENERABLE BUILDING DATES BACK TO THE TIME OF THE FIRST CRUSADE WHEN HUGO DE CAPUS BUILT A FORTALICE IN THE CENTRE OF THE ESTATE WHICH HAD BEEN GRANTED TO HIM BY THE RED KING + THIS WAS DESTROYED BY FIRE IN ONE THOUSAND FIVE HUNDRED FORTY THREE AND SOME OF ITS SMOKE BLACKENED CORNER STONES WERE USED WHEN IN JACOBEAN TIMES A BRICK COUNTRY HOUSE ROSE UPON THE RUINS OF THE FEUDAL CASTLE + THE MANOR HOUSE WITH ITS MANY GABLES AND ITS SMALL DIAMONDPANED WINDOWS WAS STILL MUCH AS THE BUILDER HAD LEFT IT IN THE EARLY SEVENTEENTH CENTURY + OF THE DOUBLE MOATS WHICH HAD GUARDED ITS MORE WARLIKE PREDECESSOR THE OUTER HAD BEEN ALLOWED TO DRY UP AND SERVED THE HUMBLE FUNCTION OF A KITCHEN GARDEN + THE INNER ONE WAS STILL THERE AND LAY FORTY FEET IN BREADTH THOUGH NOW ONLY A FEW FEET IN DEPTH ROUND THE WHOLE HOUSE + A SMALL STREAM FED IT AND CONTINUED BEYOND IT SO THAT THE SHEET OF WATER THOUGH TURBID WAS NEVER DITCHLIKE OR UNHEALTHY + THE GROUND FLOOR WINDOWS WERE WITHIN A FOOT OF THE SURFACE OF THE WATER + THE ONLY APPROACH TO THE HOUSE WAS OVER A DRAWBRIDGE THE CHAINS AND WINDLASS OF WHICH HAD LONG BEEN RUSTED AND BROKEN + THE LATEST TENANTS OF THE MANOR HOUSE HAD HOWEVER WITH CHARACTERISTIC ENERGY SET THIS RIGHT AND THE DRAWBRIDGE WAS NOT ONLY CAPABLE OF BEING RAISED BUT ACTUALLY WAS RAISED EVERY EVENING AND LOWERED EVERY MORNING + BY THUS RENEWING THE CUSTOM OF THE OLD FEUDAL DAYS THE MANOR HOUSE WAS CONVERTED INTO AN ISLAND DURING THE NIGHT A FACT WHICH HAD A VERY DIRECT BEARING UPON THE MYSTERY WHICH WAS SOON TO ENGAGE THE ATTENTION OF ALL ENGLAND + THE HOUSE HAD BEEN UNTENANTED FOR SOME YEARS AND WAS THREATENING TO MOULDER INTO A PICTURESQUE DECAY WHEN THE DOUGLASES TOOK POSSESSION OF IT + THIS FAMILY CONSISTED OF ONLY TWO INDIVIDUALS JOHN DOUGLAS AND HIS WIFE + DOUGLAS WAS A REMARKABLE MAN BOTH IN CHARACTER AND IN PERSON + IN AGE HE MAY HAVE BEEN ABOUT FIFTY WITH A STRONGJAWED RUGGED FACE A GRIZZLING MOUSTACHE PECULIARLY KEEN GRAY EYES AND A WIRY VIGOROUS FIGURE WHICH HAD LOST NOTHING OF THE STRENGTH AND ACTIVITY OF YOUTH + HE WAS CHEERY AND GENIAL TO ALL BUT SOMEWHAT OFFHAND IN HIS MANNERS GIVING THE IMPRESSION THAT HE HAD SEEN LIFE IN SOCIAL STRATA ON SOME FAR LOWER HORIZON THAN THE COUNTY SOCIETY OF SUSSEX + YET THOUGH LOOKED AT WITH SOME CURIOSITY AND RESERVE BY HIS MORE CULTIVATED NEIGHBOURS HE SOON ACQUIRED A GREAT POPULARITY AMONG THE VILLAGERS SUBSCRIBING HANDSOMELY TO ALL LOCAL OBJECTS AND ATTENDING THEIR SMOKING CONCERTS AND OTHER FUNCTIONS WHERE HAVING A REMARKABLY RICH TENOR VOICE HE WAS ALWAYS READY TO OBLIGE WITH AN EXCELLENT SONG + HE APPEARED TO HAVE PLENTY OF MONEY WHICH WAS SAID TO HAVE BEEN GAINED IN THE CALIFORNIA GOLD FIELDS AND IT WAS CLEAR FROM HIS OWN TALK AND THAT OF HIS WIFE THAT HE HAD SPENT A PART OF HIS LIFE IN AMERICA + THE GOOD IMPRESSION WHICH HAD BEEN PRODUCED BY HIS GENEROSITY AND BY HIS DEMOCRATIC MANNERS WAS INCREASED BY A REPUTATION GAINED FOR UTTER INDIFFERENCE TO DANGER + THOUGH A WRETCHED RIDER HE TURNED OUT AT EVERY MEET AND TOOK THE MOST AMAZING FALLS IN HIS DETERMINATION TO HOLD HIS OWN WITH THE BEST + WHEN THE VICARAGE CAUGHT FIRE HE DISTINGUISHED HIMSELF ALSO BY THE FEARLESSNESS WITH WHICH HE REENTERED THE BUILDING TO SAVE PROPERTY AFTER THE LOCAL FIRE BRIGADE HAD GIVEN IT UP AS IMPOSSIBLE + THUS IT CAME ABOUT THAT JOHN DOUGLAS OF THE MANOR HOUSE HAD WITHIN FIVE YEARS WON HIMSELF QUITE A REPUTATION IN BIRLSTONE + HIS WIFE TOO WAS POPULAR WITH THOSE WHO HAD MADE HER ACQUAINTANCE THOUGH AFTER THE ENGLISH FASHION THE CALLERS UPON A STRANGER WHO SETTLED IN THE COUNTY WITHOUT INTRODUCTIONS WERE FEW AND FAR BETWEEN + THIS MATTERED THE LESS TO HER AS SHE WAS RETIRING BY DISPOSITION AND VERY MUCH ABSORBED TO ALL APPEARANCE IN HER HUSBAND AND HER DOMESTIC DUTIES + IT WAS KNOWN THAT SHE WAS AN ENGLISH LADY WHO HAD MET MR. DOUGLAS IN LONDON HE BEING AT THAT TIME A WIDOWER + SHE WAS A BEAUTIFUL WOMAN TALL DARK AND SLENDER SOME TWENTY YEARS YOUNGER THAN HER HUSBAND A DISPARITY WHICH SEEMED IN NO WISE TO MAR THE CONTENTMENT OF THEIR FAMILY LIFE + IT WAS REMARKED SOMETIMES HOWEVER BY THOSE WHO KNEW THEM BEST THAT THE CONFIDENCE BETWEEN THE TWO DID NOT APPEAR TO BE COMPLETE SINCE THE WIFE WAS EITHER VERY RETICENT ABOUT HER HUSBAND'S PAST LIFE OR ELSE AS SEEMED MORE LIKELY WAS IMPERFECTLY INFORMED ABOUT IT + IT HAD ALSO BEEN NOTED AND COMMENTED UPON BY A FEW OBSERVANT PEOPLE THAT THERE WERE SIGNS SOMETIMES OF SOME NERVE STRAIN UPON THE PART OF MRS. DOUGLAS AND THAT SHE WOULD DISPLAY ACUTE UNEASINESS IF HER ABSENT HUSBAND SHOULD EVER BE PATTICULARLY LATE IN HIS RETURN + ON A QUIET COUNTRYSIDE WHERE ALL GOSSIP IS WELCOME THIS WEAKNESS OF THE LADY OF THE MANOR HOUSE DID NOT PASS WITHOUT REMARK AND IT BULKED LARGER UPON PEOPLE'S MEMORY WHEN THE EVENTS AROSE WHICH GAVE IT A VERY SPECIAL SIGNIFICANCE + THERE WAS YET ANOTHER INDIVIDUAL WHOSE RESIDENCE UNDER THAT ROOF WAS IT IS TRUE ONLY AN INTERMITTENT ONE BUT WHOSE PRESENCE AT THE TIME OF THE STRANGE HAPPENINGS WHICH WILL NOW BE NARRATED BROUGHT HIS NAME PROMINENTLY BEFORE THE PUBLIC + THIS WAS CECIL JAMES BARKER OF HALES LODGE HAMPSTEAD + CECIL BARKER'S TALL LOOSEJOINTED FIGURE WAS A FAMILIAR ONE IN THE MAIN STREET OF BIRLSTONE VILLAGE FOR HE WAS A FREQUENT AND WELCOME VISITOR AT THE MANOR HOUSE + HE WAS THE MORE NOTICED AS BEING THE ONLY FRIEND OF THE PAST UNKNOWN LIFE OF MR. DOUGLAS WHO WAS EVER SEEN IN HIS NEW ENGLISH SURROUNDINGS + BARKER WAS HIMSELF AN UNDOUBTED ENGLISHMAN BUT BY HIS REMARKS IT WAS CLEAR THAT HE HAD FIRST KNOWN DOUGLAS IN AMERICA AND HAD THERE LIVED ON INTIMATE TERMS WITH HIM + HE APPEARED TO BE A MAN OF CONSIDERABLE WEALTH AND WAS REPUTED TO BE A BACHELOR + IN AGE HE WAS RATHER YOUNGER THAN DOUGLAS FORTY FIVE AT THE MOST A TALL STRAIGHT BROAD CHESTED FELLOW WITH A CLEAN SHAVED PRIZE FIGHTER FACE THICK STRONG BLACK EYEBROWS AND A PAIR OF MASTERFUL BLACK EYES WHICH MIGHT EVEN WITHOUT THE AID OF HIS VERY CAPABLE HANDS CLEAR A WAY FOR HIM THROUGH A HOSTILE CROWD + HE NEITHER RODE NOR SHOT BUT SPENT HIS DAYS IN WANDERING ROUND THE OLD VILLAGE WITH HIS PIPE IN HIS MOUTH OR IN DRIVING WITH HIS HOST OR IN HIS ABSENCE WITH HIS HOSTESS OVER THE BEAUTIFUL COUNTRYSIDE + AN EASY GOING FREE HANDED GENTLEMAN SAID AMES THE BUTLER + BUT MY WORD + I HAD RATHER NOT BE THE MAN THAT CROSSED HIM + HE WAS CORDIAL AND INTIMATE WITH DOUGLAS AND HE WAS NO LESS FRIENDLY WITH HIS WIFE A FRIENDSHIP WHICH MORE THAN ONCE SEEMED TO CAUSE SOME IRRITATION TO THE HUSBAND SO THAT EVEN THE SERVANTS WERE ABLE TO PERCEIVE HIS ANNOYANCE + SUCH WAS THE THIRD PERSON WHO WAS ONE OF THE FAMILY WHEN THE CATASTROPHE OCCURRED + AS TO THE OTHER DENIZENS OF THE OLD BUILDING IT WILL SUFFICE OUT OF A LARGE HOUSEHOLD TO MENTION THE PRIM RESPECTABLE AND CAPABLE AMES AND MRS. ALLEN A BUXOM AND CHEERFUL PERSON WHO RELIEVED THE LADY OF SOME OF HER HOUSEHOLD CARES + THE OTHER SIX SERVANTS IN THE HOUSE BEAR NO RELATION TO THE EVENTS OF THE NIGHT OF JANUARY SIXTH + IT WAS AT ELEVEN FORTY FIVE THAT THE FIRST ALARM REACHED THE SMALL LOCAL POLICE STATION IN CHARGE OF SERGEANT WILSON OF THE SUSSEX CONSTABULARY + CECIL BARKER MUCH EXCITED HAD RUSHED UP TO THE DOOR AND PEALED FURIOUSLY UPON THE BELL + A TERRIBLE TRAGEDY HAD OCCURRED AT THE MANOR HOUSE AND JOHN DOUGLAS HAD BEEN MURDERED + THAT WAS THE BREATHLESS BURDEN OF HIS MESSAGE + HE HAD HURRIED BACK TO THE HOUSE FOLLOWED WITHIN A FEW MINUTES BY THE POLICE SERGEANT WHO ARRIVED AT THE SCENE OF THE CRIME A LITTLE AFTER TWELVE O'CLOCK AFTER TAKING PROMPT STEPS TO WARN THE COUNTY AUTHORITIES THAT SOMETHING SERIOUS WAS AFOOT + ON REACHING THE MANOR HOUSE THE SERGEANT HAD FOUND THE DRAWBRIDGE DOWN THE WINDOWS LIGHTED UP AND THE WHOLE HOUSEHOLD IN A STATE OF WILD CONFUSION AND ALARM + THE WHITE FACED SERVANTS WERE HUDDLING TOGETHER IN THE HALL WITH THE FRIGHTENED BUTLER WRINGING HIS HANDS IN THE DOORWAY + ONLY CECIL BARKER SEEMED TO BE MASTER OF HIMSELF AND HIS EMOTIONS HE HAD OPENED THE DOOR WHICH WAS NEAREST TO THE ENTRANCE AND HE HAD BECKONED TO THE SERGEANT TO FOLLOW HIM + AT THAT MOMENT THERE ARRIVED DOCTOR WOOD A BRISK AND CAPABLE GENERAL PRACTITIONER FROM THE VILLAGE + THE THREE MEN ENTERED THE FATAL ROOM TOGETHER WHILE THE HORRORSTRICKEN BUTLER FOLLOWED AT THEIR HEELS CLOSING THE DOOR BEHIND HIM TO SHUT OUT THE TERRIBLE SCENE FROM THE MAID SERVANTS + THE DEAD MAN LAY ON HIS BACK SPRAWLING WITH OUTSTRETCHED LIMBS IN THE CENTRE OF THE ROOM + HE WAS CLAD ONLY IN A PINK DRESSING GOWN WHICH COVERED HIS NIGHT CLOTHES + THERE WERE CARPET SLIPPERS ON HIS BARE FEET + THE DOCTOR KNELT BESIDE HIM AND HELD DOWN THE HAND LAMP WHICH HAD STOOD ON THE TABLE + ONE GLANCE AT THE VICTIM WAS ENOUGH TO SHOW THE HEALER THAT HIS PRESENCE COULD BE DISPENSED WITH + THE MAN HAD BEEN HORRIBLY INJURED + LYING ACROSS HIS CHEST WAS A CURIOUS WEAPON A SHOTGUN WITH THE BATREL SAWED OFF A FOOT IN FRONT OF THE TRIGGERS + IT WAS CLEAR THAT THIS HAD BEEN FIRED AT CLOSE RANGE AND THAT HE HAD RECEIVED THE WHOLE CHARGE IN THE FACE BLOWING HIS HEAD ALMOST TO PIECES + THE TRIGGERS HAD BEEN WIRED TOGETHER SO AS TO MAKE THE SIMULTANEOUS DISCHARGE MORE DESTRUCTIVE + THE COUNTRY POLICEMAN WAS UNNERVED AND TROUBLED BY THE TREMENDOUS RESPONSIBILITY WHICH HAD COME SO SUDDENLY UPON HIM + WE WILL TOUCH NOTHING UNTIL MY SUPERIORS ARRIVE HE SAID IN A HUSHED VOICE STARING IN HORROR AT THE DREADFUL HEAD + QUOTE NOTHING HAS BEEN TOUCHED UP TO NOW QUOTE SAID CECIL BARKER + I'LL ANSWER FOR THAT + YOU SEE IT ALL EXACTLY AS I FOUND IT + WHEN WAS THAT + THE SERGEANT HAD DRAWN OUT HIS NOTEBOOK + IT WAS JUST HALF PAST ELEVEN + I HAD NOT BEGUN TO UNDRESS AND I WAS SITTING BY THE FIRE IN MY BEDROOM WHEN I HEARD THE REPORT + IT WAS NOT VERY LOUD IT SEEMED TO BE MUFFLED + I RUSHED DOWN I DON'T SUPPOSE IT WAS THIRTY SECONDS BEFORE I WAS IN THE ROOM + QUOTE WAS THE DOOR OPEN QUOTE + YES IT WAS OPEN + POOR DOUGLAS WAS LYING AS YOU SEE HIM + HIS BEDROOM CANDLE WAS BURNING ON THE TABLE + IT WAS I WHO LIT THE LAMP SOME MINUTES AFTERWARD + DID YOU SEE NO ONE + NUMBER + I HEARD MRS. DOUGLAS COMING DOWN THE STAIR BEHIND ME AND I RUSHED OUT TO PREVENT HER FROM SEEING THIS DREADFUL SIGHT + MRS. ALLEN THE HOUSEKEEPER CAME AND TOOK HER AWAY + AMES HAD ARRIVED AND WE RAN BACK INTO THE ROOM ONCE MORE + QUOTE BUT SURELY I HAVE HEARD THAT THE DRAWBRIDGE IS KEPT UP ALL NIGHT SEVEN EIGHTHS + YES IT WAS UP UNTIL I LOWERED IT + THEN HOW COULD ANY MURDERER HAVE GOT AWAY + IT IS OUT OF THE QUESTION + MR. DOUGLAS MUST HAVE SHOT HIMSELF + THAT WAS OUR FIRST IDEA + BUT SEE + BARKER DREW ASIDE THE CURTAIN AND SHOWED THAT THE LONG DIAMOND PANED WINDOW WAS OPEN TO ITS FULL EXTENT + QUOTE AND LOOK AT THIS QUOTE + HE HELD THE LAMP DOWN AND ILLUMINATED A SMUDGE OF BLOOD LIKE THE MARK OF A BOOT SOLE U. P. N. THE WOODEN SILL + SOMEONE HAS STOOD THERE IN GETTING OUT + YOU MEAN THAT SOMEONE WADED ACROSS THE MOAT + EXACTLY + THEN IF YOU WERE IN THE ROOM WITHIN HALF A MINUTE OF THE CRIME HE MUST HAVE BEEN IN THE WATER AT THAT VERY MOMENT + I HAVE NOT A DOUBT OF IT + I WISH TO HEAVEN THAT I HAD RUSHED TO THE WINDOW + BUT THE CURTAIN SCREENED IT AS YOU CAN SEE AND SO IT NEVER OCCURRED TO ME + THEN I HEARD THE STEP OF MRS. DOUGLAS AND I COULD NOT LET HER ENTER THE ROOM + IT WOULD HAVE BEEN TOO HORRIBLE QUOTE + HORRIBLE ENOUGH SAID THE DOCTOR LOOKING AT THE SHATTERED HEAD AND THE TERRIBLE MARKS WHICH SURROUNDED IT + I'VE NEVER SEEN SUCH INJURIES SINCE THE BIRLSTONE RAILWAY SMASH + BUT I SAY REMARKED THE POLICE SERGEANT WHOSE SLOW BUCOLIC COMMON SENSE WAS STILL PONDERING THE OPEN WINDOW + IT'S ALL VERY WELL YOUR SAYING THAT A MAN ESCAPED BY WADING THIS MOAT BUT WHAT I ASK YOU IS HOW DID HE EVER GET INTO THE HOUSE AT ALL IF THE BRIDGE WAS UP + AH THAT'S THE QUESTION SAID BARKER + QUOTE AT WHAT O'CLOCK WAS IT RAISED QUOTE + IT WAS NEARLY SIX O'CLOCK SAID AMES THE BUTLER + I'VE HEARD SAID THE SERGEANT THAT IT WAS USUALLY RAISED AT SUNSET + THAT WOULD BE NEARER HALF PAST FOUR THAN SIX AT THIS TIME OF YEAR + MRS. DOUGLAS HAD VISITORS TO TEA SAID AMES + I COULDN'T RAISE IT UNTIL THEY WENT + THEN I WOUND IT UP MYSELF QUOTE + THEN IT COMES TO THIS SAID THE SERGEANT IF ANYONE CAME FROM OUTSIDE IF THEY DID THEY MUST HAVE GOT IN ACROSS THE BRIDGE BEFORE SIX AND BEEN IN HIDING EVER SINCE UNTIL MR. DOUGLAS CAME INTO THE ROOM AFTER ELEVEN + THAT IS SO + MR. DOUGLAS WENT ROUND THE HOUSE EVERY NIGHT THE LAST THING BEFORE HE TURNED IN TO SEE THAT THE LIGHTS WERE RIGHT + THAT BROUGHT HIM IN HERE + THE MAN WAS WAITING AND SHOT HIM + THEN HE GOT AWAY THROUGH THE WINDOW AND LEFT HIS GUN BEHIND HIM + THAT'S HOW I READ IT FOR NOTHING ELSE WILL FIT THE FACTS + THE SERGEANT PICKED UP A CARD WHICH LAY BESIDE THE DEAD MAN ON THE FLOOR + THE INITIALS V. V. AND UNDER THEM THE NUMBER THREE HUNDRED FORTY ONE WERE RUDELY SCRAWLED IN INK UPON IT + WHAT'S THIS HE ASKED HOLDING IT UP + BARKER LOOKED AT IT WITH CURIOSITY + I NEVER NOTICED IT BEFORE HE SAID + QUOTE THE MURDERER MUST HAVE LEFT IT BEHIND HIM QUOTE + V. V. THREE HUNDRED FORTY ONE + I CAN MAKE NO SENSE OF THAT + THE SERGEANT KEPT TURNING IT OVER IN HIS BIG FINGERS + WHAT'S V. V. + SOMEBODY'S INITIALS MAYBE + WHAT HAVE YOU GOT THERE DOCTOR WOOD + IT WAS A GOOD SIZED HAMMER WHICH HAD BEEN LYING ON THE RUG IN FRONT OF THE FIREPLACE A SUBSTANTIAL WORKMANLIKE HAMMER + CECIL BARKER POINTED TO A BOX OF BRASS HEADED NAILS UPON THE MANTELPIECE + MR. DOUGLAS WAS ALTERING THE PICTURES YESTERDAY HE SAID + QUOTE I SAW HIM MYSELF STANDING UPON THAT CHAIR AND FIXING THE BIG PICTURE ABOVE IT + THAT ACCOUNTS FOR THE HAMMER + WE'D BEST PUT IT BACK ON THE RUG WHERE WE FOUND IT SAID THE SERGEANT SCRATCHING HIS PUZZLED HEAD IN HIS PERPLEXITY + IT WILL WANT THE BEST BRAINS IN THE FORCE TO GET TO THE BOTTOM OF THIS THING + IT WILL BE A LONDON JOB BEFORE IT IS FINISHED + HE RAISED THE HAND LAMP AND WALKED SLOWLY ROUND THE ROOM + HULLO HE CRIED EXCITEDLY DRAWING THE WINDOW CURTAIN TO ONE SIDE + QUOTE WHAT O'CLOCK WERE THOSE CURTAINS DRAWN QUOTE + WHEN THE LAMPS WERE LIT SAID THE BUTLER + IT WOULD BE SHORTLY AFTER FOUR + SOMEONE HAD BEEN HIDING HERE SURE ENOUGH + HE HELD DOWN THE LIGHT AND THE MARKS OF MUDDY BOOTS WERE VERY VISIBLE IN THE CORNER + I'M BOUND TO SAY THIS BEARS OUT YOUR THEORY MR. BARKER + IT LOOKS AS IF THE MAN GOT INTO THE HOUSE AFTER FOUR WHEN THE CURTAINS WERE DRAWN AND BEFORE SIX WHEN THE BRIDGE WAS RAISED + HE SLIPPED INTO THIS ROOM BECAUSE IT WAS THE FIRST THAT HE SAW + THERE WAS NO OTHER PLACE WHERE HE COULD HIDE SO HE POPPED IN BEHIND THIS CURTAIN + THAT ALL SEEMS CLEAR ENOUGH + IT IS LIKELY THAT HIS MAIN IDEA WAS TO BURGLE THE HOUSE BUT MR. DOUGLAS CHANCED TO COME UPON HIM SO HE MURDERED HIM AND ESCAPED + QUOTE THAT'S HOW I READ IT QUOTE SAID BARKER + BUT I SAY AREN'T WE WASTING PRECIOUS TIME + COULDN'T WE START OUT AND SCOUR THE COUNTRY BEFORE THE FELLOW GETS AWAY + THE SERGEANT CONSIDERED FOR A MOMENT + THERE ARE NO TRAINS BEFORE SIX IN THE MORNING SO HE CAN'T GET AWAY BY RAIL + IF HE GOES BY ROAD WITH HIS LEGS ALL DRIPPING IT'S ODDS THAT SOMEONE WILL NOTICE HIM + ANYHOW I CAN'T LEAVE HERE MYSELF UNTIL I AM RELIEVED + BUT I THINK NONE OF YOU SHOULD GO UNTIL WE SEE MORE CLEARLY HOW WE ALL STAND + THE DOCTOR HAD TAKEN THE LAMP AND WAS NARROWLY SCRUTINIZING THE BODY + WHAT'S THIS MARK HE ASKED + QUOTE COULD THIS HAVE ANY CONNECTION WITH THE CRIME QUOTE + THE DEAD MAN'S RIGHT ARM WAS THRUST OUT FROM HIS DRESSING GOWN AND EXPOSED AS HIGH AS THE ELBOW + ABOUT HALFWAY UP THE FOREARM WAS A CURIOUS BROWN DESIGN A TRIANGLE INSIDE A CIRCLE STANDING OUT IN VIVID RELIEF UPON THE LARD COLOURED SKIN + IT'S NOT TATTOOED SAID THE DOCTOR PEERING THROUGH HIS GLASSES + I NEVER SAW ANYTHING LIKE IT + THE MAN HAS BEEN BRANDED AT SOME TIME AS THEY BRAND CATTLE + WHAT IS THE MEANING OF THIS + I DON'T PROFESS TO KNOW THE MEANING OF IT SAID CECIL BARKER BUT I HAVE SEEN THE MARK ON DOUGLAS MANY TIMES THIS LAST TEN YEARS + AND SO HAVE I SAID THE BUTLER + QUOTE MANY A TIME WHEN THE MASTER HAS ROLLED UP HIS SLEEVES I HAVE NOTICED THAT VERY MARK + I'VE OFTEN WONDERED WHAT IT COULD BE + THEN IT HAS NOTHING TO DO WITH THE CRIME ANYHOW SAID THE SERGEANT + BUT IT'S A RUM THING ALL THE SAME + EVERYTHING ABOUT THIS CASE IS RUM + WELL WHAT IS IT NOW + THE BUTLER HAD GIVEN AN EXCLAMATION OF ASTONISHMENT AND WAS POINTING AT THE DEAD MAN'S OUTSTRETCHED HAND + THEY'VE TAKEN HIS WEDDING RING HE GASPED + QUOTE WHAT QUOTE + YES INDEED + MASTER ALWAYS WORE HIS PLAIN GOLD WEDDING RING ON THE LITTLE FINGER OF HIS LEFT HAND + THAT RING WITH THE ROUGH NUGGET ON IT WAS ABOVE IT AND THE TWISTED SNAKE RING ON THE THIRD FINGER + THERE'S THE NUGGET AND THERE'S THE SNAKE BUT THE WEDDING RING IS GONE + HE'S RIGHT SAID BARKER + DO YOU TELL ME SAID THE SERGEANT THAT THE WEDDING RING WAS BELOW THE OTHER + ALWAYS + QUOTE THEN THE MURDERER OR WHOEVER IT WAS FIRST TOOK OFF THIS RING YOU CALL THE NUGGET RING THEN THE WEDDING RING AND AFTERWARDS PUT THE NUGGET RING BACK AGAIN QUOTE + THAT IS SO + THE WORTHY COUNTRY POLICEMAN SHOOK HIS HEAD + SEEMS TO ME THE SOONER WE GET LONDON ON TO THIS CASE THE BETTER SAID HE + WHITE MASON IS A SMART MAN + NO LOCAL JOB HAS EVER BEEN TOO MUCH FOR WHITE MASON + IT WON'T BE LONG NOW BEFORE HE IS HERE TO HELP US + BUT I EXPECT WE'LL HAVE TO LOOK TO LONDON BEFORE WE ARE THROUGH + ANYHOW I'M NOT ASHAMED TO SAY THAT IT IS A DEAL TOO THICK FOR THE LIKES OF ME + CHAPTER FOUR DARKNESS + AT THREE IN THE MORNING THE CHIEF SUSSEX DETECTIVE OBEYING THE URGENT CALL FROM SERGEANT WILSON OF BIRLSTONE ARRIVED FROM HEADQUARTERS IN A LIGHT DOG CART BEHIND A BREATHLESS TROTTER + BY THE FIVE FORTY TRAIN IN THE MORNING HE HAD SENT HIS MESSAGE TO SCOTLAND YARD AND HE WAS AT THE BIRLSTONE STATION AT TWELVE O'CLOCK TO WELCOME US + WHITE MASON WAS A QUIET COMFORTABLELOOKING PERSON IN A LOOSE TWEED SUIT WITH A CLEAN SHAVED RUDDY FACE A STOUTISH BODY AND POWERFUL BANDY LEGS ADORNED WITH GAITERS LOOKING LIKE A SMALL FARMER A RETIRED GAMEKEEPER OR ANYTHING UPON EARTH EXCEPT A VERY FAVOURABLE SPECIMEN OF THE PROVINCIAL CRIMINAL OFFICER + A REAL DOWNRIGHT SNORTER MR. MACDONALD HE KEPT REPEATING + QUOTE WE'LL HAVE THE PRESSMEN DOWN LIKE FLIES WHEN THEY UNDERSTAND IT + I'M HOPING WE WILL GET OUR WORK DONE BEFORE THEY GET POKING THEIR NOSES INTO IT AND MESSING UP ALL THE TRAILS + THERE HAS BEEN NOTHING LIKE THIS THAT I CAN REMEMBER + THERE ARE SOME BITS THAT WILL COME HOME TO YOU MR. HOLMES OR I AM MISTAKEN + AND YOU ALSO DOCTOR WATSON FOR THE MEDICOS WILL HAVE A WORD TO SAY BEFORE WE FINISH + YOUR ROOM IS AT THE WESTVILLE ARMS + THERE'S NO OTHER PLACE BUT I HEAR THAT IT IS CLEAN AND GOOD + THE MAN WILL CARRY YOUR BAGS + THIS WAY GENTLEMEN IF YOU PLEASE + HE WAS A VERY BUSTLING AND GENIAL PERSON THIS SUSSEX DETECTIVE + IN TEN MINUTES WE HAD ALL FOUND OUR QUARTERS + IN TEN MORE WE WERE SEATED IN THE PARLOUR OF THE INN AND BEING TREATED TO A RAPID SKETCH OF THOSE EVENTS WHICH HAVE BEEN OUTLINED IN THE PREVIOUS CHAPTER + MACDONALD MADE AN OCCASIONAL NOTE WHILE HOLMES SAT ABSORBED WITH THE EXPRESSION OF SURPRISED AND REVERENT ADMIRATION WITH WHICH THE BOTANIST SURVEYS THE RARE AND PRECIOUS BLOOM + REMARKABLE HE SAID WHEN THE STORY WAS UNFOLDED MOST REMARKABLE + I CAN HARDLY RECALL ANY CASE WHERE THE FEATURES HAVE BEEN MORE PECULIAR + I THOUGHT YOU WOULD SAY SO MR. HOLMES SAID WHITE MASON IN GREAT DELIGHT + WE'RE WELL UP WITH THE TIMES IN SUSSEX + I'VE TOLD YOU NOW HOW MATTERS WERE UP TO THE TIME WHEN I TOOK OVER FROM SERGEANT WILSON BETWEEN THREE AND FOUR THIS MORNING + MY WORD + I MADE THE OLD MARE GO + BUT I NEED NOT HAVE BEEN IN SUCH A HURRY AS IT TURNED OUT FOR THERE WAS NOTHING IMMEDIATE THAT I COULD DO + SERGEANT WILSON HAD ALL THE FACTS + I CHECKED THEM AND CONSIDERED THEM AND MAYBE ADDED A FEW OF MY OWN QUOTE + WHAT WERE THEY ASKED HOLMES EAGERLY + WELL I FIRST HAD THE HAMMER EXAMINED + THERE WAS DOCTOR WOOD THERE TO HELP ME + WE FOUND NO SIGNS OF VIOLENCE UPON IT + I WAS HOPING THAT IF MR. DOUGLAS DEFENDED HIMSELF WITH THE HAMMER HE MIGHT HAVE LEFT HIS MARK UPON THE MURDERER BEFORE HE DROPPED IT ON THE MAT + BUT THERE WAS NO STAIN + THAT OF COURSE PROVES NOTHING AT ALL REMARKED INSPECTOR MACDONALD + THERE HAS BEEN MANY A HAMMER MURDER AND NO TRACE ON THE HAMMER + QUOTE QUITE SO + IT DOESN'T PROVE IT WASN'T USED + BUT THERE MIGHT HAVE BEEN STAINS AND THAT WOULD HAVE HELPED US + AS A MATTER OF FACT THERE WERE NONE + THEN I EXAMINED THE GUN + THEY WERE BUCKSHOT CARTRIDGES AND AS SERGEANT WILSON POINTED OUT THE TRIGGERS WERE WIRED TOGETHER SO THAT IF YOU PULLED ON THE HINDER ONE BOTH BARRELS WERE DISCHARGED + WHOEVER FIXED THAT UP HAD MADE UP HIS MIND THAT HE WAS GOING TO TAKE NO CHANCES OF MISSING HIS MAN + THE SAWED GUN WAS NOT MORE THAN TWO FOOT LONG ONE COULD CARRY IT EASILY UNDER ONE'S COAT + THERE WAS NO COMPLETE MAKER'S NAME BUT THE PRINTED LETTERS P. E. N. WERE ON THE FLUTING BETWEEN THE BARRELS AND THE REST OF THE NAME HAD BEEN CUT OFF BY THE SAW + A BIG P. WITH A FLOURISH ABOVE IT E. AND N. SMALLER ASKED HOLMES + EXACTLY + PENNSYLVANIA SMALL ARMS COMPANY WELL KNOWN AMERICAN FIRM SAID HOLMES + WHITE MASON GAZED AT MY FRIEND AS THE LITTLE VILLAGE PRACTITIONER LOOKS AT THE HARLEY STREET SPECIALIST WHO BY A WORD CAN SOLVE THE DIFFICULTIES THAT PERPLEX HIM + THAT IS VERY HELPFUL MR. HOLMES + NO DOUBT YOU ARE RIGHT + WONDERFUL + WONDERFUL + DO YOU CARRY THE NAMES OF ALL THE GUN MAKERS IN THE WORLD IN YOUR MEMORY QUOTE + HOLMES DISMISSED THE SUBJECT WITH A WAVE + NO DOUBT IT IS AN AMERICAN SHOTGUN WHITE MASON CONTINUED + I SEEM TO HAVE READ THAT A SAWED OFF SHOTGUN IS A WEAPON USED IN SOME PARTS OF AMERICA + APART FROM THE NAME UPON THE BARREL THE IDEA HAD OCCURRED TO ME + THERE IS SOME EVIDENCE THEN THAT THIS MAN WHO ENTERED THE HOUSE AND KILLED ITS MASTER WAS AN AMERICAN + MACDONALD SHOOK HIS HEAD + MAN YOU ARE SURELY TRAVELLING OVERFAST SAID HE + I HAVE HEARD NO EVIDENCE YET THAT ANY STRANGER WAS EVER IN THE HOUSE AT ALL + QUOTE THE OPEN WINDOW THE BLOOD ON THE SILL THE QUEER CARD THE MARKS OF BOOTS IN THE CORNER THE GUN QUOTE + NOTHING THERE THAT COULD NOT HAVE BEEN ARRANGED + MR. DOUGLAS WAS AN AMERICAN OR HAD LIVED LONG IN AMERICA + SO HAD MR. BARKER + YOU DON'T NEED TO IMPORT AN AMERICAN FROM OUTSIDE IN ORDER TO ACCOUNT FOR AMERICAN DOINGS + WHAT ABOUT HIM + IS HE RELIABLE + TEN YEARS WITH SIR CHARLES CHANDOS AS SOLID AS A ROCK + HE HAS BEEN WITH DOUGLAS EVER SINCE HE TOOK THE MANOR HOUSE FIVE YEARS AGO + HE HAS NEVER SEEN A GUN OF THIS SORT IN THE HOUSE QUOTE + THE GUN WAS MADE TO CONCEAL + THAT'S WHY THE BARRELS WERE SAWED + IT WOULD FIT INTO ANY BOX + HOW COULD HE SWEAR THERE WAS NO SUCH GUN IN THE HOUSE + WELL ANYHOW HE HAD NEVER SEEN ONE + MACDONALD SHOOK HIS OBSTINATE SCOTCH HEAD + I'M NOT CONVINCED YET THAT THERE WAS EVER ANYONE IN THE HOUSE SAID HE + I'M ASKING YOU TO CONSEEDAR HIS ACCENT BECAME MORE ABERDONIAN AS HE LOST HIMSELF IN HIS ARGUMENT I'M ASKING YOU TO CONSEEDAR WHAT IT INVOLVES IF YOU SUPPOSE THAT THIS GUN WAS EVER BROUGHT INTO THE HOUSE AND THAT ALL THESE STRANGE THINGS WERE DONE BY A PERSON FROM OUTSIDE + OH MAN IT'S JUST INCONCEIVABLE + IT'S CLEAN AGAINST COMMON SENSE + I PUT IT TO YOU MR. HOLMES JUDGING IT BY WHAT WE HAVE HEARD QUOTE + WELL STATE YOUR CASE MR. MAC SAID HOLMES IN HIS MOST JUDICIAL STYLE + THE MAN IS NOT A BURGLAR SUPPOSING THAT HE EVER EXISTED + THE RING BUSINESS AND THE CARD POINT TO PREMEDITATED MURDER FOR SOME PRIVATE REASON + VERY GOOD + HERE IS A MAN WHO SLIPS INTO A HOUSE WITH THE DELIBERATE INTENTION OF COMMITTING MURDER + HE KNOWS IF HE KNOWS ANYTHING THAT HE WILL HAVE A DEEFICULTY IN MAKING HIS ESCAPE AS THE HOUSE IS SURROUNDED WITH WATER + WHAT WEAPON WOULD HE CHOOSE + YOU WOULD SAY THE MOST SILENT IN THE WORLD + THEN HE COULD HOPE WHEN THE DEED WAS DONE TO SLIP QUICKLY FROM THE WINDOW TO WADE THE MOAT AND TO GET AWAY AT HIS LEISURE + THAT'S UNDERSTANDABLE + BUT IS IT UNDERSTANDABLE THAT HE SHOULD GO OUT OF HIS WAY TO BRING WITH HIM THE MOST NOISY WEAPON HE COULD SELECT KNOWING WELL THAT IT WILL FETCH EVERY HUMAN BEING IN THE HOUSE TO THE SPOT AS QUICK AS THEY CAN RUN AND THAT IT IS ALL ODDS THAT HE WILL BE SEEN BEFORE HE CAN GET ACROSS THE MOAT + IS THAT CREDIBLE MR. HOLMES + WELL YOU PUT THE CASE STRONGLY MY FRIEND REPLIED THOUGHTFULLY + IT CERTAINLY NEEDS A GOOD DEAL OF JUSTIFICATION + MAY I ASK MR. WHITE MASON WHETHER YOU EXAMINED THE FARTHER SIDE OF THE MOAT AT ONCE TO SEE IF THERE WERE ANY SIGNS OF THE MAN HAVING CLIMBED OUT FROM THE WATER QUOTE + THERE WERE NO SIGNS MR. HOLMES + BUT IT IS A STONE LEDGE AND ONE COULD HARDLY EXPECT THEM + NO TRACKS OR MARKS + NONE + HA + WOULD THERE BE ANY OBJECTION MR. WHITE MASON TO OUR GOING DOWN TO THE HOUSE AT ONCE + THERE MAY POSSIBLY BE SOME SMALL POINT WHICH MIGHT BE SUGGESTIVE QUOTE + I WAS GOING TO PROPOSE IT MR. HOLMES BUT I THOUGHT IT WELL TO PUT YOU IN TOUCH WITH ALL THE FACTS BEFORE WE GO + I SUPPOSE IF ANYTHING SHOULD STRIKE YOU WHITE MASON LOOKED DOUBTFULLY AT THE AMATEUR + I HAVE WORKED WITH MR. HOLMES BEFORE SAID INSPECTOR MACDONALD + HE PLAYS THE GAME + MY OWN IDEA OF THE GAME AT ANY RATE SAID HOLMES WITH A SMILE + QUOTE I GO INTO A CASE TO HELP THE ENDS OF JUSTICE AND THE WORK OF THE POLICE + IF I HAVE EVER SEPARATED MYSELF FROM THE OFFICIAL FORCE IT IS BECAUSE THEY HAVE FIRST SEPARATED THEMSELVES FROM ME + I HAVE NO WISH EVER TO SCORE AT THEIR EXPENSE + AT THE SAME TIME MR. WHITE MASON I CLAIM THE RIGHT TO WORK IN MY OWN WAY AND GIVE MY RESULTS AT MY OWN TIME COMPLETE RATHER THAN IN STAGES + I AM SURE WE ARE HONOURED BY YOUR PRESENCE AND TO SHOW YOU ALL WE KNOW SAID WHITE MASON CORDIALLY + COME ALONG DOCTOR WATSON AND WHEN THE TIME COMES WE'LL ALL HOPE FOR A PLACE IN YOUR BOOK + WE WALKED DOWN THE QUAINT VILLAGE STREET WITH A ROW OF POLLARDED ELMS ON EACH SIDE OF IT + JUST BEYOND WERE TWO ANCIENT STONE PILLARS WEATHER STAINED AND LICHEN BLOTCHED BEARING UPON THEIR SUMMITS A SHAPELESS SOMETHING WHICH HAD ONCE BEEN THE RAMPANT LION OF CAPUS OF BIRLSTONE + A SHORT WALK ALONG THE WINDING DRIVE WITH SUCH SWARD AND OAKS AROUND IT AS ONE ONLY SEES IN RURAL ENGLAND THEN A SUDDEN TURN AND THE LONG LOW JACOBEAN HOUSE OF DINGY LIVER COLOURED BRICK LAY BEFORE US WITH AN OLD FASHIONED GARDEN OF CUT YEWS ON EACH SIDE OF IT + AS WE APPROACHED IT THERE WAS THE WOODEN DRAWBRIDGE AND THE BEAUTIFUL BROAD MOAT AS STILL AND LUMINOUS AS QUICKSILVER IN THE COLD WINTER SUNSHINE + THREE CENTURIES HAD FLOWED PAST THE OLD MANOR HOUSE CENTURIES OF BIRTHS AND OF HOMECOMINGS OF COUNTRY DANCES AND OF THE MEETINGS OF FOX HUNTERS + STRANGE THAT NOW IN ITS OLD AGE THIS DARK BUSINESS SHOULD HAVE CAST ITS SHADOW UPON THE VENERABLE WALLS + AND YET THOSE STRANGE PEAKED ROOFS AND QUAINT OVERHUNG GABLES WERE A FITTING COVERING TO GRIM AND TERRIBLE INTRIGUE + AS I LOOKED AT THE DEEP SET WINDOWS AND THE LONG SWEEP OF THE DULL COLOURED WATER LAPPED FRONT I FELT THAT NO MORE FITTING SCENE COULD BE SET FOR SUCH A TRAGEDY + THAT'S THE WINDOW SAID WHITE MASON THAT ONE ON THE IMMEDIATE RIGHT OF THE DRAWBRIDGE + IT'S OPEN JUST AS IT WAS FOUND LAST NIGHT + QUOTE IT LOOKS RATHER NARROW FOR A MAN TO PASS QUOTE + WELL IT WASN'T A FAT MAN ANYHOW + WE DON'T NEED YOUR DEDUCTIONS MR. HOLMES TO TELL US THAT + BUT YOU OR I COULD SQUEEZE THROUGH ALL RIGHT + HOLMES WALKED TO THE EDGE OF THE MOAT AND LOOKED ACROSS + THEN HE EXAMINED THE STONE LEDGE AND THE GRASS BORDER BEYOND IT + I'VE HAD A GOOD LOOK MR. HOLMES SAID WHITE MASON + THERE IS NOTHING THERE NO SIGN THAT ANYONE HAS LANDED BUT WHY SHOULD HE LEAVE ANY SIGN + QUOTE EXACTLY + WHY SHOULD HE + IS THE WATER ALWAYS TURBID + GENERALLY ABOUT THIS COLOUR + THE STREAM BRINGS DOWN THE CLAY + HOW DEEP IS IT + ABOUT TWO FEET AT EACH SIDE AND THREE IN THE MIDDLE + QUOTE SO WE CAN PUT ASIDE ALL IDEA OF THE MAN HAVING BEEN DROWNED IN CROSSING QUOTE + NO A CHILD COULD NOT BE DROWNED IN IT + WE WALKED ACROSS THE DRAWBRIDGE AND WERE ADMITTED BY A QUAINT GNARLED DRIED UP PERSON WHO WAS THE BUTLER AMES + THE POOR OLD FELLOW WAS WHITE AND QUIVERING FROM THE SHOCK + THE VILLAGE SERGEANT A TALL FORMAL MELANCHOLY MAN STILL HELD HIS VIGIL IN THE ROOM OF FATE + THE DOCTOR HAD DEPARTED + ANYTHING FRESH SERGEANT WILSON ASKED WHITE MASON + NO SIR + THEN YOU CAN GO HOME + YOU'VE HAD ENOUGH + WE CAN SEND FOR YOU IF WE WANT YOU + THE BUTLER HAD BETTER WAIT OUTSIDE + TELL HIM TO WARN MR. CECIL BARKER MRS. DOUGLAS AND THE HOUSEKEEPER THAT WE MAY WANT A WORD WITH THEM PRESENTLY + NOW GENTLEMEN PERHAPS YOU WILL ALLOW ME TO GIVE YOU THE VIEWS I HAVE FORMED FIRST AND THEN YOU WILL BE ABLE TO ARRIVE AT YOUR OWN + HE IMPRESSED ME THIS COUNTRY SPECIALIST + HE HAD A SOLID GRIP OF FACT AND A COOL CLEAR COMMON SENSE BRAIN WHICH SHOULD TAKE HIM SOME WAY IN HIS PROFESSION + HOLMES LISTENED TO HIM INTENTLY WITH NO SIGN OF THAT IMPATIENCE WHICH THE OFFICIAL EXPONENT TOO OFTEN PRODUCED + QUOTE IS IT SUICIDE OR IS IT MURDER THAT'S OUR FIRST QUESTION GENTLEMEN IS IT NOT + IF IT WERE SUICIDE THEN WE HAVE TO BELIEVE THAT THIS MAN BEGAN BY TAKING OFF HIS WEDDING RING AND CONCEALING IT THAT HE THEN CAME DOWN HERE IN HIS DRESSING GOWN TRAMPLED MUD INTO A CORNER BEHIND THE CURTAIN IN ORDER TO GIVE THE IDEA SOMEONE HAD WAITED FOR HIM OPENED THE WINDOW PUT BLOOD ON THE + WE CAN SURELY DISMISS THAT SAID MACDONALD + SO I THINK + SUICIDE IS OUT OF THE QUESTION + THEN A MURDER HAS BEEN DONE + WHAT WE HAVE TO DETERMINE IS WHETHER IT WAS DONE BY SOMEONE OUTSIDE OR INSIDE THE HOUSE + WELL LET'S HEAR THE ARGUMENT + QUOTE THERE ARE CONSIDERABLE DIFFICULTIES BOTH WAYS AND YET ONE OR THE OTHER IT MUST BE + WE WILL SUPPOSE FIRST THAT SOME PERSON OR PERSONS INSIDE THE HOUSE DID THE CRIME + THEY GOT THIS MAN DOWN HERE AT A TIME WHEN EVERYTHING WAS STILL AND YET NO ONE WAS ASLEEP + THEY THEN DID THE DEED WITH THE QUEEREST AND NOISIEST WEAPON IN THE WORLD SO AS TO TELL EVERYONE WHAT HAD HAPPENED A WEAPON THAT WAS NEVER SEEN IN THE HOUSE BEFORE + THAT DOES NOT SEEM A VERY LIKELY START DOES IT + NO IT DOES NOT + WELL THEN EVERYONE IS AGREED THAT AFTER THE ALARM WAS GIVEN ONLY A MINUTE AT THE MOST HAD PASSED BEFORE THE WHOLE HOUSEHOLD NOT MR. CECIL BARKER ALONE THOUGH HE CLAIMS TO HAVE BEEN THE FIRST BUT AMES AND ALL OF THEM WERE ON THE SPOT + DO YOU TELL ME THAT IN THAT TIME THE GUILTY PERSON MANAGED TO MAKE FOOTMARKS IN THE CORNER OPEN THE WINDOW MARK THE SILL WITH BLOOD TAKE THE WEDDING NNG OFF THE DEAD MAN'S FINGER AND ALL THE REST OF IT + IT'S IMPOSSIBLE + YOU PUT IT VERY CLEARLY SAID HOLMES + QUOTE I AM INCLINED TO AGREE WITH YOU QUOTE + WELL THEN WE ARE DRIVEN BACK TO THE THEORY THAT IT WAS DONE BY SOMEONE FROM OUTSIDE + WE ARE STILL FACED WITH SOME BIG DIFFICULTIES BUT ANYHOW THEY HAVE CEASED TO BE IMPOSSIBILITIES + THE MAN GOT INTO THE HOUSE BETWEEN FOUR THIRTY AND SIX THAT IS TO SAY BETWEEN DUSK AND THE TIME WHEN THE BRIDGE WAS RAISED + THERE HAD BEEN SOME VISITORS AND THE DOOR WAS OPEN SO THERE WAS NOTHING TO PREVENT HIM + HE MAY HAVE BEEN A COMMON BURGLAR OR HE MAY HAVE HAD SOME PRIVATE GRUDGE AGAINST MR. DOUGLAS + SINCE MR. DOUGLAS HAS SPENT MOST OF HIS LIFE IN AMERICA AND THIS SHOTGUN SEEMS TO BE AN AMERICAN WEAPON IT WOULD SEEM THAT THE PRIVATE GRUDGE IS THE MORE LIKELY THEORY + HE SLIPPED INTO THIS ROOM BECAUSE IT WAS THE FIRST HE CAME TO AND HE HID BEHIND THE CURTAIN + THERE HE REMAINED UNTIL PAST ELEVEN AT NIGHT + AT THAT TIME MR. DOUGLAS ENTERED THE ROOM + IT WAS A SHORT INTERVIEW IF THERE WERE ANY INTERVIEW AT ALL FOR MRS. DOUGLAS DECLARES THAT HER HUSBAND HAD NOT LEFT HER MORE THAN A FEW MINUTES WHEN SHE HEARD THE SHOT + THE CANDLE SHOWS THAT SAID HOLMES + EXACTLY + THE CANDLE WHICH WAS A NEW ONE IS NOT BURNED MORE THAN HALF AN INCH + HE MUST HAVE PLACED IT ON THE TABLE BEFORE HE WAS ATTACKED OTHERWISE OF COURSE IT WOULD HAVE FALLEN WHEN HE FELL + THIS SHOWS THAT HE WAS NOT ATTACKED THE INSTANT THAT HE ENTERED THE ROOM + WHEN MR. BARKER ARRIVED THE CANDLE WAS LIT AND THE LAMP WAS OUT + QUOTE THAT'S ALL CLEAR ENOUGH QUOTE + WELL NOW WE CAN RECONSTRUCT THINGS ON THOSE LINES + MR. DOUGLAS ENTERS THE ROOM + HE PUTS DOWN THE CANDLE + A MAN APPEARS FROM BEHIND THE CURTAIN + HE IS ARMED WITH THIS GUN + HE DEMANDS THE WEDDING RING HEAVEN ONLY KNOWS WHY BUT SO IT MUST HAVE BEEN + MR. DOUGLAS GAVE IT UP + THEN EITHER IN COLD BLOOD OR IN THE COURSE OF A STRUGGLE DOUGLAS MAY HAVE GRIPPED THE HAMMER THAT WAS FOUND UPON THE MAT HE SHOT DOUGLAS IN THIS HORRIBLE WAY + HE DROPPED HIS GUN AND ALSO IT WOULD SEEM THIS QUEER CARD V. V. THREE HUNDRED FORTY ONE WHATEVER THAT MAY MEAN AND HE MADE HIS ESCAPE THROUGH THE WINDOW AND ACROSS THE MOAT AT THE VERY MOMENT WHEN CECIL BARKER WAS DISCOVERING THE CRIME + HOW'S THAT MR. HOLMES + VERY INTERESTING BUT JUST A LITTLE UNCONVINCING + MAN IT WOULD BE ABSOLUTE NONSENSE IF IT WASN'T THAT ANYTHING ELSE IS EVEN WORSE CRIED MACDONALD + SOMEBODY KILLED THE MAN AND WHOEVER IT WAS I COULD CLEARLY PROVE TO YOU THAT HE SHOULD HAVE DONE IT SOME OTHER WAY + WHAT DOES HE MEAN BY ALLOWING HIS RETREAT TO BE CUT OFF LIKE THAT + WHAT DOES HE MEAN BY USING A SHOTGUN WHEN SILENCE WAS HIS ONE CHANCE OF ESCAPE + COME MR. HOLMES IT'S UP TO YOU TO GIVE US A LEAD SINCE YOU SAY MR. WHITE MASON'S THEORY IS UNCONVINCING QUOTE + HOLMES HAD SAT INTENTLY OBSERVANT DURING THIS LONG DISCUSSION MISSING NO WORD THAT WAS SAID WITH HIS KEEN EYES DARTING TO RIGHT AND TO LEFT AND HIS FOREHEAD WRINKLED WITH SPECULATION + I SHOULD LIKE A FEW MORE FACTS BEFORE I GET SO FAR AS A THEORY MR. MAC SAID HE KNEELING DOWN BESIDE THE BODY + DEAR ME THESE INJURIES ARE REALLY APPALLING + CAN WE HAVE THE BUTLER IN FOR A MOMENT + AMES I UNDERSTAND THAT YOU HAVE OFTEN SEEN THIS VERY UNUSUAL MARK A BRANDED TRIANGLE INSIDE A CIRCLE UPON MR. DOUGLAS'S FOREARM + FREQUENTLY SIR + YOU NEVER HEARD ANY SPECULATION AS TO WHAT IT MEANT + QUOTE NO SIR QUOTE + IT MUST HAVE CAUSED GREAT PAIN WHEN IT WAS INFLICTED + IT IS UNDOUBTEDLY A BURN + NOW I OBSERVE AMES THAT THERE IS A SMALL PIECE OF PLASTER AT THE ANGLE OF MR. DOUGLAS'S JAW + DID YOU OBSERVE THAT IN LIFE + YES SIR HE CUT HIMSELF IN SHAVING YESTERDAY MORNING + DID YOU EVER KNOW HIM TO CUT HIMSELF IN SHAVING BEFORE + NOT FOR A VERY LONG TIME SIR + QUOTE SUGGESTIVE QUOTE SAID HOLMES + IT MAY OF COURSE BE A MERE COINCIDENCE OR IT MAY POINT TO SOME NERVOUSNESS WHICH WOULD INDICATE THAT HE HAD REASON TO APPREHEND DANGER + HAD YOU NOTICED ANYTHING UNUSUAL IN HIS CONDUCT YESTERDAY AMES + IT STRUCK ME THAT HE WAS A LITTLE RESTLESS AND EXCITED SIR + HA + THE ATTACK MAY NOT HAVE BEEN ENTIRELY UNEXPECTED + WE DO SEEM TO MAKE A LITTLE PROGRESS DO WE NOT + PERHAPS YOU WOULD RATHER DO THE QUESTIONING MR. MAC + QUOTE NO MR. HOLMES IT'S IN BETTER HANDS THAN MINE QUOTE + WELL THEN WE WILL PASS TO THIS CARD V. V. THREE HUNDRED FORTY ONE + IT IS ROUGH CARDBOARD + HAVE YOU ANY OF THE SORT IN THE HOUSE + L. DON'T THINK SO + HOLMES WALKED ACROSS TO THE DESK AND DABBED A LITTLE INK FROM EACH BOTTLE ON TO THE BLOTTING PAPER + IT WAS NOT PRINTED IN THIS ROOM HE SAID THIS IS BLACK INK AND THE OTHER PURPLISH + IT WAS DONE BY A THICK PEN AND THESE ARE FINE + NO IT WAS DONE ELSEWHERE I SHOULD SAY + CAN YOU MAKE ANYTHING OF THE INSCRIPTION AMES + QUOTE NO SIR NOTHING QUOTE + WHAT DO YOU THINK MR. MAC + IT GIVES ME THE IMPRESSION OF A SECRET SOCIETY OF SOME SORT THE SAME WITH HIS BADGE UPON THE FOREARM + THAT'S MY IDEA TOO SAID WHITE MASON + WELL WE CAN ADOPT IT AS A WORKING HYPOTHESIS AND THEN SEE HOW FAR OUR DIFFICULTIES DISAPPEAR + AN AGENT FROM SUCH A SOCIETY MAKES HIS WAY INTO THE HOUSE WAITS FOR MR. DOUGLAS BLOWS HIS HEAD NEARLY OFF WITH THIS WEAPON AND ESCAPES BY WADING THE MOAT AFTER LEAVING A CARD BESIDE THE DEAD MAN WHICH WILL WHEN MENTIONED IN THE PAPERS TELL OTHER MEMBERS OF THE SOCIETY THAT VENGEANCE HAS BEEN DONE + THAT ALL HANGS TOGETHER + BUT WHY THIS GUN OF ALL WEAPONS + QUOTE EXACTLY QUOTE + AND WHY THE MISSING RING + QUITE SO + AND WHY NO ARREST + IT'S PAST TWO NOW + I TAKE IT FOR GRANTED THAT SINCE DAWN EVERY CONSTABLE WITHIN FORTY MILES HAS BEEN LOOKING OUT FOR A WET STRANGER + THAT IS SO MR. HOLMES + QUOTE WELL UNLESS HE HAS A BURROW CLOSE BY OR A CHANGE OF CLOTHES READY THEY CAN HARDLY MISS HIM + AND YET THEY HAVE MISSED HIM UP TO NOW + HOLMES HAD GONE TO THE WINDOW AND WAS EXAMINING WITH HIS LENS THE BLOOD MARK ON THE SILL + IT IS CLEARLY THE TREAD OF A SHOE + IT IS REMARKABLY BROAD A SPLAY FOOT ONE WOULD SAY + CURIOUS BECAUSE SO FAR AS ONE CAN TRACE ANY FOOTMARK IN THIS MUD STAINED CORNER ONE WOULD SAY IT WAS A MORE SHAPELY SOLE + HOWEVER THEY ARE CERTAINLY VERY INDISTINCT + WHAT'S THIS UNDER THE SIDE TABLE + MR. DOUGLAS'S DUMB BELLS SAID AMES + DUMB BELL THERE'S ONLY ONE + WHERE'S THE OTHER QUOTE + I DON'T KNOW MR. HOLMES + THERE MAY HAVE BEEN ONLY ONE + I HAVE NOT NOTICED THEM FOR MONTHS + ONE DUMB BELL HOLMES SAID SERIOUSLY BUT HIS REMARKS WERE INTERRUPTED BY A SHARP KNOCK AT THE DOOR + A TALL SUNBURNED CAPABLE LOOKING CLEAN SHAVED MAN LOOKED IN AT US + I HAD NO DIFFICULTY IN GUESSING THAT IT WAS THE CECIL BARKER OF WHOM I HAD HEARD + HIS MASTERFUL EYES TRAVELLED QUICKLY WITH A QUESTIONING GLANCE FROM FACE TO FACE + SORRY TO INTERRUPT YOUR CONSULTATION SAID HE BUT YOU SHOULD HEAR THE LATEST NEWS + AN ARREST + QUOTE NO SUCH LUCK + BUT THEY'VE FOUND HIS BICYCLE + THE FELLOW LEFT HIS BICYCLE BEHIND HIM + COME AND HAVE A LOOK + IT IS WITHIN A HUNDRED YARDS OF THE HALL DOOR + WE FOUND THREE OR FOUR GROOMS AND IDLERS STANDING IN THE DRIVE INSPECTING A BICYCLE WHICH HAD BEEN DRAWN OUT FROM A CLUMP OF EVERGREENS IN WHICH IT HAD BEEN CONCEALED + IT WAS A WELL USED RUDGE WHITWORTH SPLASHED AS FROM A CONSIDERABLE JOURNEY + THERE WAS A SADDLEBAG WITH SPANNER AND OILCAN BUT NO CLUE AS TO THE OWNER + IT WOULD BE A GRAND HELP TO THE POLICE SAID THE INSPECTOR IF THESE THINGS WERE NUMBERED AND REGISTERED + BUT WE MUST BE THANKFUL FOR WHAT WE'VE GOT + IF WE CAN'T FIND WHERE HE WENT TO AT LEAST WE ARE LIKELY TO GET WHERE HE CAME FROM + BUT WHAT IN THE NAME OF ALL THAT IS WONDERFUL MADE THE FELLOW LEAVE IT BEHIND + AND HOW IN THE WORLD HAS HE GOT AWAY WITHOUT IT + WE DON'T SEEM TO GET A GLEAM OF LIGHT IN THE CASE MR. HOLMES + DON'T WE MY FRIEND ANSWERED THOUGHTFULLY + I WONDER + CHAPTER FIVE THE PEOPLE OF THE DRAMA + QUOTE HAVE YOU SEEN ALL YOU WANT OF THE STUDY QUOTE ASKED WHITE MASON AS WE REENTERED THE HOUSE + FOR THE TIME SAID THE INSPECTOR AND HOLMES NODDED + THEN PERHAPS YOU WOULD NOW LIKE TO HEAR THE EVIDENCE OF SOME OF THE PEOPLE IN THE HOUSE + WE COULD USE THE DINING ROOM AMES + PLEASE COME YOURSELF FIRST AND TELL US WHAT YOU KNOW + THE BUTLER'S ACCOUNT WAS A SIMPLE AND A CLEAR ONE AND HE GAVE A CONVINCING IMPRESSION OF SINCERITY + HE HAD BEEN ENGAGED FIVE YEARS BEFORE WHEN DOUGLAS FIRST CAME TO BIRLSTONE + HE UNDERSTOOD THAT MR. DOUGLAS WAS A RICH GENTLEMAN WHO HAD MADE HIS MONEY IN AMERICA + HE HAD BEEN A KIND AND CONSIDERATE EMPLOYER NOT QUITE WHAT AMES WAS USED TO PERHAPS BUT ONE CAN'T HAVE EVERYTHING + HE NEVER SAW ANY SIGNS OF APPREHENSION IN MR. DOUGLAS ON THE CONTRARY HE WAS THE MOST FEARLESS MAN HE HAD EVER KNOWN + HE ORDERED THE DRAWBRIDGE TO BE PULLED UP EVERY NIGHT BECAUSE IT WAS THE ANCIENT CUSTOM OF THE OLD HOUSE AND HE LIKED TO KEEP THE OLD WAYS UP + MR. DOUGLAS SELDOM WENT TO LONDON OR LEFT THE VILLAGE BUT ON THE DAY BEFORE THE CRIME HE HAD BEEN SHOPPING AT TUNBRIDGE WELLS + HE AMES HAD OBSERVED SOME RESTLESSNESS AND EXCITEMENT ON THE PART OF MR. DOUGLAS THAT DAY FOR HE HAD SEEMED IMPATIENT AND IRRITABLE WHICH WAS UNUSUAL WITH HIM + HE HAD NOT GONE TO BED THAT NIGHT BUT WAS IN THE PANTRY AT THE BACK OF THE HOUSE PUTTING AWAY THE SILVER WHEN HE HEARD THE BELL RING VIOLENTLY + HE HEARD NO SHOT BUT IT WAS HARDLY POSSIBLE HE WOULD AS THE PANTRY AND KITCHENS WERE AT THE VERY BACK OF THE HOUSE AND THERE WERE SEVERAL CLOSED DOORS AND A LONG PASSAGE BETWEEN + THE HOUSEKEEPER HAD COME OUT OF HER ROOM ATTRACTED BY THE VIOLENT RINGING OF THE BELL + THEY HAD GONE TO THE FRONT OF THE HOUSE TOGETHER + AS THEY REACHED THE BOTTOM OF THE STAIR HE HAD SEEN MRS. DOUGLAS COMING DOWN IT + NO SHE WAS NOT HURRYING IT DID NOT SEEM TO HIM THAT SHE WAS PARTICULARLY AGITATED + JUST AS SHE REACHED THE BOTTOM OF THE STAIR MR. BARKER HAD RUSHED OUT OF THE STUDY + HE HAD STOPPED MRS. DOUGLAS AND BEGGED HER TO GO BACK + FOR GOD'S SAKE GO BACK TO YOUR ROOM HE CRIED + POOR JACK IS DEAD + YOU CAN DO NOTHING + FOR GOD'S SAKE GO BACK QUOTE + AFTER SOME PERSUASION UPON THE STAIRS MRS. DOUGLAS HAD GONE BACK + SHE DID NOT SCREAM + SHE MADE NO OUTCRY WHATEVER + MRS. ALLEN THE HOUSEKEEPER HAD TAKEN HER UPSTAIRS AND STAYED WITH HER IN THE BEDROOM + AMES AND MR. BARKER HAD THEN RETURNED TO THE STUDY WHERE THEY HAD FOUND EVERYTHING EXACTLY AS THE POLICE HAD SEEN IT + THE CANDLE WAS NOT LIT AT THAT TIME BUT THE LAMP WAS BURNING + THEY HAD LOOKED OUT OF THE WINDOW BUT THE NIGHT WAS VERY DARK AND NOTHING COULD BE SEEN OR HEARD + THEY HAD THEN RUSHED OUT INTO THE HALL WHERE AMES HAD TURNED THE WINDLASS WHICH LOWERED THE DRAWBRIDGE + MR. BARKER HAD THEN HURRIED OFF TO GET THE POLICE + SUCH IN ITS ESSENTIALS WAS THE EVIDENCE OF THE BUTLER + THE ACCOUNT OF MRS. ALLEN THE HOUSEKEEPER WAS SO FAR AS IT WENT A CORROBORATION OF THAT OF HER FELLOW SERVANT + THE HOUSEKEEPER'S ROOM WAS RATHER NEARER TO THE FRONT OF THE HOUSE THAN THE PANTRY IN WHICH AMES HAD BEEN WORKING + SHE WAS PREPARING TO GO TO BED WHEN THE LOUD RINGING OF THE BELL HAD ATTRACTED HER ATTENTION + SHE WAS A LITTLE HARD OF HEARING + PERHAPS THAT WAS WHY SHE HAD NOT HEARD THE SHOT BUT IN ANY CASE THE STUDY WAS A LONG WAY OFF + SHE REMEMBERED HEARING SOME SOUND WHICH SHE IMAGINED TO BE THE SLAMMING OF A DOOR + THAT WAS A GOOD DEAL EARLIER HALF AN HOUR AT LEAST BEFORE THE RINGING OF THE BELL + WHEN MR. AMES RAN TO THE FRONT SHE WENT WITH HIM + SHE SAW MR. BARKER VERY PALE AND EXCITED COME OUT OF THE STUDY + HE INTERCEPTED MRS. DOUGLAS WHO WAS COMING DOWN THE STAIRS + HE ENTREATED HER TO GO BACK AND SHE ANSWERED HIM BUT WHAT SHE SAID COULD NOT BE HEARD + TAKE HER UP + STAY WITH HER HE HAD SAID TO MRS. ALLEN + SHE HAD THEREFORE TAKEN HER TO THE BEDROOM AND ENDEAVOURED TO SOOTHE HER + SHE WAS GREATLY EXCITED TREMBLING ALL OVER BUT MADE NO OTHER ATTEMPT TO GO DOWNSTAIRS + SHE JUST SAT IN HER DRESSING GOWN BY HER BEDROOM FIRE WITH HER HEAD SUNK IN HER HANDS + MRS. ALLEN STAYED WITH HER MOST OF THE NIGHT + AS TO THE OTHER SERVANTS THEY HAD ALL GONE TO BED AND THE ALARM DID NOT REACH THEM UNTIL JUST BEFORE THE POLICE ARRIVED + THEY SLEPT AT THE EXTREME BACK OF THE HOUSE AND COULD NOT POSSIBLY HAVE HEARD ANYTHING + SO FAR THE HOUSEKEEPER COULD ADD NOTHING ON CROSS EXAMINATION SAVE LAMENTATIONS AND EXPRESSIONS OF AMAZEMENT + CECIL BARKER SUCCEEDED MRS. ALLEN AS A WITNESS + AS TO THE OCCURRENCES OF THE NIGHT BEFORE HE HAD VERY LITTLE TO ADD TO WHAT HE HAD ALREADY TOLD THE POLICE + PERSONALLY HE WAS CONVINCED THAT THE MURDERER HAD ESCAPED BY THE WINDOW + THE BLOODSTAIN WAS CONCLUSIVE IN HIS OPINION ON THAT POINT + BESIDES AS THE BRIDGE WAS UP THERE WAS NO OTHER POSSIBLE WAY OF ESCAPING + HE COULD NOT EXPLAIN WHAT HAD BECOME OF THE ASSASSIN OR WHY HE HAD NOT TAKEN HIS BICYCLE IF IT WERE INDEED HIS + HE COULD NOT POSSIBLY HAVE BEEN DROWNED IN THE MOAT WHICH WAS AT NO PLACE MORE THAN THREE FEET DEEP + IN HIS OWN MIND HE HAD A VERY DEFINITE THEORY ABOUT THE MURDER + DOUGLAS WAS A RETICENT MAN AND THERE WERE SOME CHAPTERS IN HIS LIFE OF WHICH HE NEVER SPOKE + HE HAD EMIGRATED TO AMERICA WHEN HE WAS A VERY YOUNG MAN + HE HAD PROSPERED WELL AND BARKER HAD FIRST MET HIM IN CALIFORNIA WHERE THEY HAD BECOME PARTNERS IN A SUCCESSFUL MINING CLAIM AT A PLACE CALLED BENITO CANON + THEY HAD DONE VERY WELL BUT DOUGLAS HAD SUDDENLY SOLD OUT AND STARTED FOR ENGLAND + HE WAS A WIDOWER AT THAT TIME + BARKER HAD AFTERWARDS REALIZED HIS MONEY AND COME TO LIVE IN LONDON + THUS THEY HAD RENEWED THEIR FRIENDSHIP + DOUGLAS HAD GIVEN HIM THE IMPRESSION THAT SOME DANGER WAS HANGING OVER HIS HEAD AND HE HAD ALWAYS LOOKED UPON HIS SUDDEN DEPARTURE FROM CALIFORNIA AND ALSO HIS RENTING A HOUSE IN SO QUIET A PLACE IN ENGLAND AS BEING CONNECTED WITH THIS PERIL + HE IMAGINED THAT SOME SECRET SOCIETY SOME IMPLACABLE ORGANIZATION WAS ON DOUGLAS'S TRACK WHICH WOULD NEVER REST UNTIL IT KILLED HIM + SOME REMARKS OF HIS HAD GIVEN HIM THIS IDEA THOUGH HE HAD NEVER TOLD HIM WHAT THE SOCIETY WAS NOR HOW HE HAD COME TO OFFEND IT + HE COULD ONLY SUPPOSE THAT THE LEGEND UPON THE PLACARD HAD SOME REFERENCE TO THIS SECRET SOCIETY + HOW LONG WERE YOU WITH DOUGLAS IN CALIFORNIA ASKED INSPECTOR MACDONALD + FIVE YEARS ALTOGETHER + HE WAS A BACHELOR YOU SAY + QUOTE A WIDOWER QUOTE + HAVE YOU EVER HEARD WHERE HIS FIRST WIFE CAME FROM + NO I REMEMBER HIS SAYING THAT SHE WAS OF GERMAN EXTRACTION AND I HAVE SEEN HER PORTRAIT + SHE WAS A VERY BEAUTIFUL WOMAN + SHE DIED OF TYPHOID THE YEAR BEFORE I MET HIM + YOU DON'T ASSOCIATE HIS PAST WITH ANY PARTICULAR PART OF AMERICA + I HAVE HEARD HIM TALK OF CHICAGO + HE KNEW THAT CITY WELL AND HAD WORKED THERE + I HAVE HEARD HIM TALK OF THE COAL AND IRON DISTRICTS + HE HAD TRAVELLED A GOOD DEAL IN HIS TIME QUOTE + WAS HE A POLITICIAN + HAD THIS SECRET SOCIETY TO DO WITH POLITICS + NO HE CARED NOTHING ABOUT POLITICS + YOU HAVE NO REASON TO THINK IT WAS CRIMINAL + ON THE CONTRARY I NEVER MET A STRAIGHTER MAN IN MY LIFE + QUOTE WAS THERE ANYTHING CURIOUS ABOUT HIS LIFE IN CALIFORNIA QUOTE + HE LIKED BEST TO STAY AND TO WORK AT OUR CLAIM IN THE MOUNTAINS + HE WOULD NEVER GO WHERE OTHER MEN WERE IF HE COULD HELP IT + THAT'S WHY I FIRST THOUGHT THAT SOMEONE WAS AFTER HIM + THEN WHEN HE LEFT SO SUDDENLY FOR EUROPE I MADE SURE THAT IT WAS SO + I BELIEVE THAT HE HAD A WARNING OF SOME SORT + WITHIN A WEEK OF HIS LEAVING HALF A DOZEN MEN WERE INQUIRING FOR HIM + WHAT SORT OF MEN + WELL THEY WERE A MIGHTY HARD LOOKING CROWD + THEY CAME UP TO THE CLAIM AND WANTED TO KNOW WHERE HE WAS + I TOLD THEM THAT HE WAS GONE TO EUROPE AND THAT I DID NOT KNOW WHERE TO FIND HIM + THEY MEANT HIM NO GOOD IT WAS EASY TO SEE THAT + QUOTE WERE THESE MEN AMERICANS CALIFORNIANS QUOTE + WELL I DON'T KNOW ABOUT CALIFORNIANS + THEY WERE AMERICANS ALL RIGHT + BUT THEY WERE NOT MINERS + I DON'T KNOW WHAT THEY WERE AND WAS VERY GLAD TO SEE THEIR BACKS + THAT WAS SIX YEARS AGO + NEARER SEVEN + AND THEN YOU WERE TOGETHER FIVE YEARS IN CALIFORNIA SO THAT THIS BUSINESS DATES BACK NOT LESS THAN ELEVEN YEARS AT THE LEAST + QUOTE THAT IS SO QUOTE + IT MUST BE A VERY SERIOUS FEUD THAT WOULD BE KEPT UP WITH SUCH EARNESTNESS FOR AS LONG AS THAT + IT WOULD BE NO LIGHT THING THAT WOULD GIVE RISE TO IT + I THINK IT SHADOWED HIS WHOLE LIFE + IT WAS NEVER QUITE OUT OF HIS MIND + BUT IF A MAN HAD A DANGER HANGING OVER HIM AND KNEW WHAT IT WAS DON'T YOU THINK HE WOULD TURN TO THE POLICE FOR PROTECTION + QUOTE MAYBE IT WAS SOME DANGER THAT HE COULD NOT BE PROTECTED AGAINST + THERE'S ONE THING YOU SHOULD KNOW + HE ALWAYS WENT ABOUT ARMED + HIS REVOLVER WAS NEVER OUT OF HIS POCKET + BUT BY BAD LUCK HE WAS IN HIS DRESSING GOWN AND HAD LEFT IT IN THE BEDROOM LAST NIGHT + ONCE THE BRIDGE WAS UP I GUESS HE THOUGHT HE WAS SAFE + I SHOULD LIKE THESE DATES A LITTLE CLEARER SAID MACDONALD + IT IS QUITE SIX YEARS SINCE DOUGLAS LEFT CALIFORNIA + YOU FOLLOWED HIM NEXT YEAR DID YOU NOT + THAT IS SO + QUOTE AND HE HAD BEEN MARRIED FIVE YEARS + YOU MUST HAVE RETURNED ABOUT THE TIME OF HIS MARRIAGE + ABOUT A MONTH BEFORE + I WAS HIS BEST MAN + DID YOU KNOW MRS. DOUGLAS BEFORE HER MARRIAGE + NO I DID NOT + I HAD BEEN AWAY FROM ENGLAND FOR TEN YEARS QUOTE + BUT YOU HAVE SEEN A GOOD DEAL OF HER SINCE + BARKER LOOKED STERNLY AT THE DETECTIVE + I HAVE SEEN A GOOD DEAL OF HIM SINCE HE ANSWERED + IF I HAVE SEEN HER IT IS BECAUSE YOU CANNOT VISIT A MAN WITHOUT KNOWING HIS WIFE + IF YOU IMAGINE THERE IS ANY CONNECTION + I IMAGINE NOTHING MR. BARKER + I AM BOUND TO MAKE EVERY INQUIRY WHICH CAN BEAR UPON THE CASE + BUT I MEAN NO OFFENSE QUOTE + SOME INQUIRIES ARE OFFENSIVE BARKER ANSWERED ANGRILY + IT'S ONLY THE FACTS THAT WE WANT + IT IS IN YOUR INTEREST AND EVERYONE'S INTEREST THAT THEY SHOULD BE CLEARED UP + DID MR. DOUGLAS ENTIRELY APPROVE YOUR FRIENDSHIP WITH HIS WIFE + BARKER GREW PALER AND HIS GREAT STRONG HANDS WERE CLASPED CONVULSIVELY TOGETHER + YOU HAVE NO RIGHT TO ASK SUCH QUESTIONS HE CRIED + WHAT HAS THIS TO DO WITH THE MATTER YOU ARE INVESTIGATING + QUOTE I MUST REPEAT THE QUESTION QUOTE + WELL I REFUSE TO ANSWER + YOU CAN REFUSE TO ANSWER BUT YOU MUST BE AWARE THAT YOUR REFUSAL IS IN ITSELF AN ANSWER FOR YOU WOULD NOT REFUSE IF YOU HAD NOT SOMETHING TO CONCEAL + BARKER STOOD FOR A MOMENT WITH HIS FACE SET GRIMLY AND HIS STRONG BLACK EYEBROWS DRAWN LOW IN INTENSE THOUGHT + THEN HE LOOKED UP WITH A SMILE + WELL I GUESS YOU GENTLEMEN ARE ONLY DOING YOUR CLEAR DUTY AFTER ALL AND I HAVE NO RIGHT TO STAND IN THE WAY OF IT + I'D ONLY ASK YOU NOT TO WORRY MRS. DOUGLAS OVER THIS MATTER FOR SHE HAS ENOUGH UPON HER JUST NOW + I MAY TELL YOU THAT POOR DOUGLAS HAD JUST ONE FAULT IN THE WORLD AND THAT WAS HIS JEALOUSY + HE WAS FOND OF ME NO MAN COULD BE FONDER OF A FRIEND + AND HE WAS DEVOTED TO HIS WIFE + HE LOVED ME TO COME HERE AND WAS FOREVER SENDING FOR ME + AND YET IF HIS WIFE AND I TALKED TOGETHER OR THERE SEEMED ANY SYMPATHY BETWEEN US A KIND OF WAVE OF JEALOUSY WOULD PASS OVER HIM AND HE WOULD BE OFF THE HANDLE AND SAYING THE WILDEST THINGS IN A MOMENT + MORE THAN ONCE I'VE SWORN OFF COMING FOR THAT REASON AND THEN HE WOULD WRITE ME SUCH PENITENT IMPLORING LETTERS THAT I JUST HAD TO + BUT YOU CAN TAKE IT FROM ME GENTLEMEN IF IT WAS MY LAST WORD THAT NO MAN EVER HAD A MORE LOVING FAITHFUL WIFE AND I CAN SAY ALSO NO FRIEND COULD BE MORE LOYAL THAN I + IT WAS SPOKEN WITH FERVOUR AND FEELING AND YET INSPECTOR MACDONALD COULD NOT DISMISS THE SUBJECT + YOU ARE AWARE SAID HE THAT THE DEAD MAN'S WEDDING RING HAS BEEN TAKEN FROM HIS FINGER + QUOTE SO IT APPEARS QUOTE SAID BARKER + WHAT DO YOU MEAN BY APPEARS + YOU KNOW IT AS A FACT + THE MAN SEEMED CONFUSED AND UNDECIDED + WHEN I SAID APPEARS I MEANT THAT IT WAS CONCEIVABLE THAT HE HAD HIMSELF TAKEN OFF THE RING + THE MERE FACT THAT THE RING SHOULD BE ABSENT WHOEVER MAY HAVE REMOVED IT WOULD SUGGEST TO ANYONE'S MIND WOULD IT NOT THAT THE MARRIAGE AND THE TRAGEDY WERE CONNECTED + BARKER SHRUGGED HIS BROAD SHOULDERS + I CAN'T PROFESS TO SAY WHAT IT MEANS HE ANSWERED + QUOTE BUT IF YOU MEAN TO HINT THAT IT COULD REFLECT IN ANY WAY UPON THIS LADY'S HONOUR QUOTE HIS EYES BLAZED FOR AN INSTANT AND THEN WITH AN EVIDENT EFFORT HE GOT A GRIP UPON HIS OWN EMOTIONS QUOTE WELL YOU ARE ON THE WRONG TRACK THAT'S ALL QUOTE + I DON'T KNOW THAT I'VE ANYTHING ELSE TO ASK YOU AT PRESENT SAID MACDONALD COLDLY + THERE WAS ONE SMALL POINT REMARKED SHERLOCK HOLMES + WHEN YOU ENTERED THE ROOM THERE WAS ONLY A CANDLE LIGHTED ON THE TABLE WAS THERE NOT + YES THAT WAS SO + BY ITS LIGHT YOU SAW THAT SOME TERRIBLE INCIDENT HAD OCCURRED + QUOTE EXACTLY QUOTE + YOU AT ONCE RANG FOR HELP + YES + AND IT ARRIVED VERY SPEEDILY + WITHIN A MINUTE OR SO + AND YET WHEN THEY ARRIVED THEY FOUND THAT THE CANDLE WAS OUT AND THAT THE LAMP HAD BEEN LIGHTED + THAT SEEMS VERY REMARKABLE QUOTE + AGAIN BARKER SHOWED SOME SIGNS OF INDECISION + I DON'T SEE THAT IT WAS REMARKABLE MR. HOLMES HE ANSWERED AFTER A PAUSE + THE CANDLE THREW A VERY BAD LIGHT + MY FIRST THOUGHT WAS TO GET A BETTER ONE + THE LAMP WAS ON THE TABLE SO I LIT IT + AND BLEW OUT THE CANDLE + EXACTLY + HOLMES ASKED NO FURTHER QUESTION AND BARKER WITH A DELIBERATE LOOK FROM ONE TO THE OTHER OF US WHICH HAD AS IT SEEMED TO ME SOMETHING OF DEFIANCE IN IT TURNED AND LEFT THE ROOM + INSPECTOR MACDONALD HAD SENT UP A NOTE TO THE EFFECT THAT HE WOULD WAIT UPON MRS. DOUGLAS IN HER ROOM BUT SHE HAD REPLIED THAT SHE WOULD MEET US IN THE DINING ROOM + SHE ENTERED NOW A TALL AND BEAUTIFUL WOMAN OF THIRTY RESERVED AND SELF POSSESSED TO A REMARKABLE DEGREE VERY DIFFERENT FROM THE TRAGIC AND DISTRACTED FIGURE I HAD PICTURED + IT IS TRUE THAT HER FACE WAS PALE AND DRAWN LIKE THAT OF ONE WHO HAS ENDURED A GREAT SHOCK BUT HER MANNER WAS COMPOSED AND THE FINELY MOULDED HAND WHICH SHE RESTED UPON THE EDGE OF THE TABLE WAS AS STEADY AS MY OWN + HER SAD APPEALING EYES TRAVELLED FROM ONE TO THE OTHER OF US WITH A CURIOUSLY INQUISITIVE EXPRESSION + THAT QUESTIONING GAZE TRANSFORMED ITSELF SUDDENLY INTO ABRUPT SPEECH + QUOTE HAVE YOU FOUND ANYTHING OUT YET QUOTE SHE ASKED + WAS IT MY IMAGINATION THAT THERE WAS AN UNDERTONE OF FEAR RATHER THAN OF HOPE IN THE QUESTION + WE HAVE TAKEN EVERY POSSIBLE STEP MRS. DOUGLAS SAID THE INSPECTOR + YOU MAY REST ASSURED THAT NOTHING WILL BE NEGLECTED + SPARE NO MONEY SHE SAID IN A DEAD EVEN TONE + IT IS MY DESIRE THAT EVERY POSSIBLE EFFORT SHOULD BE MADE + PERHAPS YOU CAN TELL US SOMETHING WHICH MAY THROW SOME LIGHT UPON THE MATTER + QUOTE I FEAR NOT BUT ALL I KNOW IS AT YOUR SERVICE QUOTE + WE HAVE HEARD FROM MR. CECIL BARKER THAT YOU DID NOT ACTUALLY SEE THAT YOU WERE NEVER IN THE ROOM WHERE THE TRAGEDY OCCURRED + NO HE TURNED ME BACK UPON THE STAIRS + HE BEGGED ME TO RETURN TO MY ROOM + QUITE SO + YOU HAD HEARD THE SHOT AND YOU HAD AT ONCE COME DOWN + QUOTE I PUT ON MY DRESSING GOWN AND THEN CAME DOWN QUOTE + HOW LONG WAS IT AFTER HEARING THE SHOT THAT YOU WERE STOPPED ON THE STAIR BY MR. BARKER + IT MAY HAVE BEEN A COUPLE OF MINUTES + IT IS SO HARD TO RECKON TIME AT SUCH A MOMENT + HE IMPLORED ME NOT TO GO ON + HE ASSURED ME THAT I COULD DO NOTHING + THEN MRS. ALLEN THE HOUSEKEEPER LED ME UPSTAIRS AGAIN + IT WAS ALL LIKE SOME DREADFUL DREAM + CAN YOU GIVE US ANY IDEA HOW LONG YOUR HUSBAND HAD BEEN DOWNSTAIRS BEFORE YOU HEARD THE SHOT + NO I CANNOT SAY + HE WENT FROM HIS DRESSING ROOM AND I DID NOT HEAR HIM GO + HE DID THE ROUND OF THE HOUSE EVERY NIGHT FOR HE WAS NERVOUS OF FIRE + IT IS THE ONLY THING THAT I HAVE EVER KNOWN HIM NERVOUS OF QUOTE + THAT IS JUST THE POINT WHICH I WANT TO COME TO MRS. DOUGLAS + YOU HAVE KNOWN YOUR HUSBAND ONLY IN ENGLAND HAVE YOU NOT + YES WE HAVE BEEN MARRIED FIVE YEARS + HAVE YOU HEARD HIM SPEAK OF ANYTHING WHICH OCCURRED IN AMERICA AND MIGHT BRING SOME DANGER UPON HIM + MRS. DOUGLAS THOUGHT EARNESTLY BEFORE SHE ANSWERED + YES. SHE SAID AT LAST I HAVE ALWAYS FELT THAT THERE WAS A DANGER HANGING OVER HIM + HE REFUSED TO DISCUSS IT WITH ME + IT WAS NOT FROM WANT OF CONFIDENCE IN ME THERE WAS THE MOST COMPLETE LOVE AND CONFIDENCE BETWECN US BUT IT WAS OUT OF HIS DESIRE TO KEEP ALL ALARM AWAY FROM ME + HE THOUGHT I SHOULD BROOD OVER IT IF I KNEW ALL AND SO HE WAS SILENT QUOTE + HOW DID YOU KNOW IT THEN + MRS. DOUGLAS'S FACE LIT WITH A QUICK SMILE + CAN A HUSBAND EVER CARRY ABOUT A SECRET ALL HIS LIFE AND A WOMAN WHO LOVES HIM HAVE NO SUSPICION OF IT + I KNEW IT BY HIS REFUSAL TO TALK ABOUT SOME EPISODES IN HIS AMERICAN LIFE + I KNEW IT BY CERTAIN PRECAUTIONS HE TOOK + I KNEW IT BY CERTAIN WORDS HE LET FALL + I KNEW IT BY THE WAY HE LOOKED AT UNEXPECTED STRANGERS + I WAS PERFECTLY CERTAIN THAT HE HAD SOME POWERFUL ENEMIES THAT HE BELIEVED THEY WERE ON HIS TRACK AND THAT HE WAS ALWAYS ON HIS GUARD AGAINST THEM + I WAS SO SURE OF IT THAT FOR YEARS I HAVE BEEN TERRIFIED IF EVER HE CAME HOME LATER THAN WAS EXPECTED + MIGHT I ASK ASKED HOLMES WHAT THE WORDS WERE WHICH ATTRACTED YOUR ATTENTION + THE VALLEY OF FEAR THE LADY ANSWERED + QUOTE THAT WAS AN EXPRESSION HE HAS USED WHEN I QUESTIONED HIM + I HAVE BEEN IN THE VALLEY OF FEAR + I AM NOT OUT OF IT YET. ARE WE NEVER TO GET OUT OF THE VALLEY OF FEAR + I HAVE ASKED HIM WHEN I HAVE SEEN HIM MORE SERIOUS THAN USUAL + SOMETIMES I THINK THAT WE NEVER SHALL HE HAS ANSWERED + SURELY YOU ASKED HIM WHAT HE MEANT BY THE VALLEY OF FEAR + I DID BUT HIS FACE WOULD BECOME VERY GRAVE AND HE WOULD SHAKE HIS HEAD + IT IS BAD ENOUGH THAT ONE OF US SHOULD HAVE BEEN IN ITS SHADOW HE SAID + PLEASE GOD IT SHALL NEVER FALL UPON YOU + IT WAS SOME REAL VALLEY IN WHICH HE HAD LIVED AND IN WHICH SOMETHING TERRIBLE HAD OCCURRED TO HIM OF THAT I AM CERTAIN BUT I CAN TELL YOU NO MORE + AND HE NEVER MENTIONED ANY NAMES + QUOTE YES HE WAS DELIRIOUS WITH FEVER ONCE WHEN HE HAD HIS HUNTING ACCIDENT THREE YEARS AGO + THEN I REMEMBER THAT THERE WAS A NAME THAT CAME CONTINUALLY TO HIS LIPS + HE SPOKE IT WITH ANGER AND A SORT OF HORROR + MCGINTY WAS THE NAME BODYMASTER MCGINTY + I ASKED HIM WHEN HE RECOVERED WHO BODYMASTER MCGINTY WAS AND WHOSE BODY HE WAS MASTER OF + NEVER OF MINE THANK GOD HE ANSWERED WITH A LAUGH AND THAT WAS ALL I COULD GET FROM HIM + BUT THERE IS A CONNECTION BETWEEN BODYMASTER MCGINTY AND THE VALLEY OF FEAR + THERE IS ONE OTHER POINT SAID INSPECTOR MACDONALD + YOU MET MR. DOUGLAS IN A BOARDING HOUSE IN LONDON DID YOU NOT AND BECAME ENGAGED TO HIM THERE + WAS THERE ANY ROMANCE ANYTHING SECRET OR MYSTERIOUS ABOUT THE WEDDING + THERE WAS ROMANCE + THERE IS ALWAYS ROMANCE + THERE WAS NOTHING MYSTERIOUS QUOTE + HE HAD NO RIVAL + NO I WAS QUITE FREE + YOU HAVE HEARD NO DOUBT THAT HIS WEDDING RING HAS BEEN TAKEN + DOES THAT SUGGEST ANYTHING TO YOU + SUPPOSE THAT SOME ENEMY OF HIS OLD LIFE HAD TRACKED HIM DOWN AND COMMITTED THIS CRIME WHAT POSSIBLE REASON COULD HE HAVE FOR TAKING HIS WEDDING RING + FOR AN INSTANT I COULD HAVE SWORN THAT THE FAINTEST SHADOW OF A SMILE FLICKERED OVER THE WOMAN'S LIPS + I REALLY CANNOT TELL SHE ANSWERED + QUOTE IT IS CERTAINLY A MOST EXTRAORDINARY THING QUOTE + WELL WE WILL NOT DETAIN YOU ANY LONGER AND WE ARE SORRY TO HAVE PUT YOU TO THIS TROUBLE AT SUCH A TIME SAID THE INSPECTOR + THERE ARE SOME OTHER POINTS NO DOUBT BUT WE CAN REFER TO YOU AS THEY ARISE + SHE ROSE AND I WAS AGAIN CONSCIOUS OF THAT QUICK QUESTIONING GLANCE WITH WHICH SHE HAD JUST SURVEYED US + WHAT IMPRESSION HAS MY EVIDENCE MADE UPON YOU + THE QUESTION MIGHT AS WELL HAVE BEEN SPOKEN + THEN WITH A BOW SHE SWEPT FROM THE ROOM + SHE'S A BEAUTIFUL WOMAN A VERY BEAUTIFUL WOMAN SAID MACDONALD THOUGHTFULLY AFTER THE DOOR HAD CLOSED BEHIND HER + THIS MAN BARKER HAS CERTAINLY BEEN DOWN HERE A GOOD DEAL + HE IS A MAN WHO MIGHT BE ATTRACTIVE TO A WOMAN + HE ADMITS THAT THE DEAD MAN WAS JEALOUS AND MAYBE HE KNEW BEST HIMSELF WHAT CAUSE HE HAD FOR JEALOUSY + THEN THERE'S THAT WEDDING RING + YOU CAN'T GET PAST THAT + THE MAN WHO TEARS A WEDDING RING OFF A DEAD MAN'S WHAT DO YOU SAY TO IT MR. HOLMES QUOTE + MY FRIEND HAD SAT WITH HIS HEAD UPON HIS HANDS SUNK IN THE DEEPEST THOUGHT + NOW HE ROSE AND RANG THE BELL + AMES HE SAID WHEN THE BUTLER ENTERED WHERE IS MR. CECIL BARKER NOW + I'LL SEE SIR + HE CAME BACK IN A MOMENT TO SAY THAT BARKER WAS IN THE GARDEN + CAN YOU REMEMBER AMES WHAT MR. BARKER HAD ON HIS FEET LAST NIGHT WHEN YOU JOINED HIM IN THE STUDY + YES MR. HOLMES + HE HAD A PAIR OF BEDROOM SLIPPERS + I BROUGHT HIM HIS BOOTS WHEN HE WENT FOR THE POLICE + QUOTE WHERE ARE THE SLIPPERS NOW QUOTE + THEY ARE STILL UNDER THE CHAIR IN THE HALL + VERY GOOD AMES + IT IS OF COURSE IMPORTANT FOR US TO KNOW WHICH TRACKS MAY BE MR. BARKER'S AND WHICH FROM OUTSIDE + YES SIR + I MAY SAY THAT I NOTICED THAT THE SLIPPERS WERE STAINED WITH BLOOD SO INDEED WERE MY OWN + QUOTE THAT IS NATURAL ENOUGH CONSIDERING THE CONDITION OF THE ROOM + VERY GOOD AMES + WE WILL RING IF WE WANT YOU + A FEW MINUTES LATER WE WERE IN THE STUDY + HOLMES HAD BROUGHT WITH HIM THE CARPET SLIPPERS FROM THE HALL + AS AMES HAD OBSERVED THE SOLES OF BOTH WERE DARK WITH BLOOD + STRANGE MURMURED HOLMES AS HE STOOD IN THE LIGHT OF THE WINDOW AND EXAMINED THEM MINUTELY + VERY STRANGE INDEED + STOOPING WITH ONE OF HIS QUICK FELINE POUNCES HE PLACED THE SLIPPER UPON THE BLOOD MARK ON THE SILL + IT EXACTLY CORRESPONDED + HE SMILED IN SILENCE AT HIS COLLEAGUES + THE INSPECTOR WAS TRANSFIGURED WITH EXCITEMENT + HIS NATIVE ACCENT RATTLED LIKE A STICK UPON RAILINGS + MAN HE CRIED THERE'S NOT A DOUBT OF IT + BARKER HAS JUST MARKED THE WINDOW HIMSELF + IT'S A GOOD DEAL BROADER THAN ANY BOOTMARK + I MIND THAT YOU SAID IT WAS A SPLAY FOOT AND HERE'S THE EXPLANATION + BUT WHAT'S THE GAME MR. HOLMES WHAT'S THE GAME + QUOTE AY WHAT'S THE GAME QUOTE MY FRIEND REPEATED THOUGHTFULLY + WHITE MASON CHUCKLED AIND RUBBED HIS FAT HANDS TOGETHER IN HIS PROFESSIONAL SATISFACTION + I SAID IT WAS A SNORTER HE CRIED + AND A REAL SNORTER IT IS + CHAPTER SIX A DAWNING LIGHT + THE THREE DETECTIVES HAD MANY MATTERS OF DETAIL INTO WHICH TO INQUIRE SO I RETURNED ALONE TO OUR MODEST QUARTERS AT THE VILLAGE INN + BUT BEFORE DOING SO I TOOK A STROLL IN THE CURIOUS OLD WORLD GARDEN WHICH FLANKED THE HOUSE + ROWS OF VERY ANCIENT YEW TREES CUT INTO STRANGE DESIGNS GIRDED IT ROUND + INSIDE WAS A BEAUTIFUL STRETCH OF LAWN WITH AN OLD SUNDIAL IN THE MIDDLE THE WHOLE EFFECT SO SOOTHING AND RESTFUL THAT IT WAS WELCOME TO MY SOMEWHAT JANGLED NERVES + IN THAT DEEPLY PEACEFUL ATMOSPHERE ONE COULD FORGET OR REMEMBER ONLY AS SOME FANTASTIC NIGHTMARE THAT DARKENED STUDY WITH THE SPRAWLING BLOODSTAINED FIGURE ON THE FLOOR + AND YET AS I STROLLED ROUND IT AND TRIED TO STEEP MY SOUL IN ITS GENTLE BALM A STRANGE INCIDENT OCCURRED WHICH BROUGHT ME BACK TO THE TRAGEDY AND LEFT A SINISTER IMPRESSION IN MY MIND + I HAVE SAID THAT A DECORATION OF YEW TREES CIRCLED THE GARDEN + AT THE END FARTHEST FROM THE HOUSE THEY THICKENED INTO A CONTINUOUS HEDGE + ON THE OTHER SIDE OF THIS HEDGE CONCEALED FROM THE EYES OF ANYONE APPROACHING FROM THE DIRECTION OF THE HOUSE THERE WAS A STONE SEAT + AS I APPROACHED THE SPOT I WAS AWARE OF VOICES SOME REMARK IN THE DEEP TONES OF A MAN ANSWERED BY A LITTLE RIPPLE OF FEMININE LAUGHTER + AN INSTANT LATER I HAD COME ROUND THE END OF THE HEDGE AND MY EYES LIT UPON MRS. DOUGLAS AND THE MAN BARKER BEFORE THEY WERE AWARE OF MY PRESENCE + HER APPEARANCE GAVE ME A SHOCK + IN THE DINING ROOM SHE HAD BEEN DEMURE AND DISCREET + NOW ALL PRETENSE OF GRIEF HAD PASSED AWAY FROM HER + HER EYES SHONE WITH THE JOY OF LIVING AND HER FACE STILL QUIVERED WITH AMUSEMENT AT SOME REMARK OF HER COMPANION + HE SAT FORWARD HIS HANDS CLASPED AND HIS FOREARMS ON HIS KNEES WITH AN ANSWERING SMILE UPON HIS BOLD HANDSOME FACE + IN AN INSTANT BUT IT WAS JUST ONE INSTANT TOO LATE THEY RESUMED THEIR SOLEMN MASKS AS MY FIGURE CAME INTO VIEW + A HURRIED WORD OR TWO PASSED BETWEEN THEM AND THEN BARKER ROSE AND CAME TOWARDS ME + EXCUSE ME SIR SAID HE BUT AM I ADDRESSING DOCTOR WATSON + I BOWED WITH A COLDNESS WHICH SHOWED I DARE SAY VERY PLAINLY THE IMPRESSION WHICH HAD BEEN PRODUCED UPON MY MIND + WE THOUGHT THAT IT WAS PROBABLY YOU AS YOUR FRIENDSHIP WITH MR. SHERLOCK HOLMES IS SO WELL KNOWN + WOULD YOU MIND COMING OVER AND SPEAKING TO MRS. DOUGLAS FOR ONE INSTANT + I FOLLOWED HIM WITH A DOUR FACE + VERY CLEARLY I COULD SEE IN MY MIND'S EYE THAT SHATTERED FIGURE ON THE FLOOR + HERE WITHIN A FEW HOURS OF THE TRAGEDY WERE HIS WIFE AND HIS NEAREST FRIEND LAUGHING TOGETHER BEHIND A BUSH IN THE GARDEN WHICH HAD BEEN HIS + I GREETED THE LADY WITH RESERVE + I HAD GRIEVED WITH HER GRIEF IN THE DINING ROOM + NOW I MET HER APPEALING GAZE WITH AN UNRESPONSLVE EYE + QUOTE I FEAR THAT YOU THINK ME CALLOUS AND HARD HEARTED QUOTE SAID SHE + I SHRUGGED MY SHOULDERS + ' IT IS NO BUSINESS OF MINE SAID I + PERHAPS SOME DAY YOU WILL DO ME JUSTICE + IF YOU ONLY REALIZED + THERE IS NO NEED WHY DOCTOR WATSON SHOULD REALIZE SAID BARKER QUICKLY + AS HE HAS HIMSELF SAID IT IS NO POSSIBLE BUSINESS OF HIS + QUOTE EXACTLY QUOTE SAID I QUOTE AND SO I WILL BEG LEAVE TO RESUME MY WALK QUOTE + ONE MOMENT DOCTOR WATSON CRIED THE WOMAN IN A PLEADING VOICE + THERE IS ONE QUESTION WHICH YOU CAN ANSWER WITH MORE AUTHORITY THAN ANYONE ELSE IN THE WORLD AND IT MAY MAKE A VERY GREAT DIFFERENCE TO ME + YOU KNOW MR. HOLMES AND HIS RELATIONS WITH THE POLICE BETTER THAN ANYONE ELSE CAN + SUPPOSING THAT A MATTER WERE BROUGHT CONFIDENTIALLY TO HIS KNOWLEDGE IS IT ABSOLUTELY NECESSARY THAT HE SHOULD PASS IT ON TO THE DETECTIVES + YES THAT'S IT SAID BARKER EAGERLY + IS HE ON HIS OWN OR IS HE ENTIRELY IN WITH THEM + QUOTE I REALLY DON'T KNOW THAT I SHOULD BE JUSTIFIED IN DISCUSSING SUCH A POINT QUOTE + I BEG I IMPLORE THAT YOU WILL DOCTOR WATSON + I ASSURE YOU THAT YOU WILL BE HELPING US HELPING ME GREATLY IF YOU WILL GUIDE US ON THAT POINT + THERE WAS SUCH A RING OF SINCERITY IN THE WOMAN'S VOICE THAT FOR THE INSTANT I FORGOT ALL ABOUT HER LEVITY AND WAS MOVED ONLY TO DO HER WILL + MR. HOLMES IS AN INDEPENDENT INVESTIGATOR I SAID + HE IS HIS OWN MASTER AND WOULD ACT AS HIS OWN JUDGMENT DIRECTED + AT THE SAME TIME HE WOULD NATURALLY FEEL LOYALTY TOWARDS THE OFFICIALS WHO WERE WORKING ON THE SAME CASE AND HE WOULD NOT CONCEAL FROM THEM ANYTHING WHICH WOULD HELP THEM IN BRINGING A CRIMINAL TO JUSTICE + BEYOND THIS I CAN SAY NOTHING AND I WOULD REFER YOU TO MR. HOLMES HIMSELF IF YOU WANTED FULLER INFORMATION + SO SAYING I RAISED MY HAT AND WENT UPON MY WAY LEAVING THEM STILL SEATED BEHIND THAT CONCEALING HEDGE + I LOOKED BACK AS I ROUNDED THE FAR END OF IT AND SAW THAT THEY WERE STILL TALKING VERY EARNESTLY TOGETHER AND AS THEY WERE GAZING AFTER ME IT WAS CLEAR THAT IT WAS OUR INTERVIEW THAT WAS THE SUBJECT OF THEIR DEBATE + QUOTE I WISH NONE OF THEIR CONFIDENCES QUOTE SAID HOLMES WHEN I REPORTED TO HIM WHAT HAD OCCURRED + HE HAD SPENT THE WHOLE AFTERNOON AT THE MANOR HOUSE IN CONSULTATION WITH HIS TWO COLLEAGUES AND RETURNED ABOUT FIVE WITH A RAVENOUS APPETITE FOR A HIGH TEA WHICH I HAD ORDERED FOR HIM + NO CONFIDENCES WATSON FOR THEY ARE MIGHTY AWKWARD IF IT COMES TO AN ARREST FOR CONSPIRACY AND MURDER + YOU THINK IT WILL COME TO THAT + HE WAS IN HIS MOST CHEERFUL AND DEBONAIR HUMOUR + MY DEAR WATSON WHEN I HAVE EXTERMINATED THAT FOURTH EGG I SHALL BE READY TO PUT YOU IN TOUCH WITH THE WHOLE SITUATION + I DON'T SAY THAT WE HAVE FATHOMED IT FAR FROM IT BUT WHEN WE HAVE TRACED THE MISSING DUMB BELL + THE DUMB BELL + QUOTE DEAR ME WATSON IS IT POSSIBLE THAT YOU HAVE NOT PENETRATED THE FACT THAT THE CASE HANGS UPON THE MISSING DUMB BELL + WELL WELL YOU NEED NOT BE DOWNCAST FOR BETWEEN OURSELVES I DON'T THINK THAT EITHER INSPECTOR MAC OR THE EXCELLENT LOCAL PRACTITIONER HAS GRASPED THE OVERWHELMING IMPORTANCE OF THIS INCIDENT + ONE DUMB BELL WATSON + CONSIDER AN ATHLETE WITH ONE DUMB BELL + PICTURE TO YOURSELF THE UNILATERAL DEVELOPMENT THE IMMINENT DANGER OF A SPINAL CURVATURE + SHOCKING WATSON SHOCKING + HE SAT WITH HIS MOUTH FULL OF TOAST AND HIS EYES SPARKLING WITH MISCHIEF WATCHING MY INTELLECTUAL ENTANGLEMENT + THE MERE SIGHT OF HIS EXCELLENT APPETITE WAS AN ASSURANCE OF SUCCESS FOR I HAD VERY CLEAR RECOLLECTIONS OF DAYS AND NIGHTS WITHOUT A THOUGHT OF FOOD WHEN HIS BAFFLED MIND HAD CHAFED BEFORE SOME PROBLEM WHILE HIS THIN EAGER FEATURES BECAME MORE ATTENUATED WITH THE ASCETICISM OF COMPLETE MENTAL CONCENTRATION + FINALLY HE LIT HIS PIPE AND SITTING IN THE INGLENOOK OF THE OLD VILLAGE INN HE TALKED SLOWLY AND AT RANDOM ABOUT HIS CASE RATHER AS ONE WHO THINKS ALOUD THAN AS ONE WHO MAKES A CONSIDERED STATEMENT + A LIE WATSON A GREAT BIG THUMPING OBTRUSIVE UNCOMPROMISING LIE THAT'S WHAT MEETS US ON THE THRESHOLD + THERE IS OUR STARTING POINT + THE WHOLE STORY TOLD BY BARKER IS A LIE + BUT BARKER'S STORY IS CORROBORATED BY MRS. DOUGLAS + THEREFORE SHE IS LYING ALSO + THEY ARE BOTH LYING AND IN A CONSPIRACY + SO NOW WE HAVE THE CLEAR PROBLEM + WHY ARE THEY LYING AND WHAT IS THE TRUTH WHICH THEY ARE TRYING SO HARD TO CONCEAL + LET US TRY WATSON YOU AND I IF WE CAN GET BEHIND THE LIE AND RECONSTRUCT THE TRUTH + HOW DO I KNOW THAT THEY ARE LYING + BECAUSE IT IS A CLUMSY FABRICATION WHICH SIMPLY COULD NOT BE TRUE + CONSIDER + ACCORDING TO THE STORY GIVEN TO US THE ASSASSIN HAD LESS THAN A MINUTE AFTER THE MURDER HAD BEEN COMMITTED TO TAKE THAT RING WHICH WAS UNDER ANOTHER RING FROM THE DEAD MAN'S FINGER TO REPLACE THE OTHER RING A THING WHICH HE WOULD SURELY NEVER HAVE DONE AND TO PUT THAT SINGULAR CARD BESIDE HIS VICTIM + I SAY THAT THIS WAS OBVIOUSLY IMPOSSIBLE + YOU MAY ARGUE BUT I HAVE TOO MUCH RESPECT FOR YOUR JUDGMENT WATSON TO THINK THAT YOU WILL DO SO THAT THE RING MAY HAVE BEEN TAKEN BEFORE THE MAN WAS KILLED + THE FACT THAT THE CANDLE HAD BEEN LIT ONLY A SHORT TIME SHOWS THAT THERE HAD BEEN NO LENGTHY INTERVIEW + WAS DOUGLAS FROM WHAT WE HEAR OF HIS FEARLESS CHARACTER A MAN WHO WOULD BE LIKELY TO GIVE UP HIS WEDDING RING AT SUCH SHORT NOTICE OR COULD WE CONCEIVE OF HIS GIVING IT UP AT ALL + NO NO WATSON THE ASSASSIN WAS ALONE WITH THE DEAD MAN FOR SOME TIME WITH THE LAMP LIT + OF THAT I HAVE NO DOUBT AT ALL + BUT THE GUNSHOT WAS APPARENTLY THE CAUSE OF DEATH + THEREFORE THE SHOT MUST HAVE BEEN FIRED SOME TIME EARLIER THAN WE ARE TOLD + BUT THERE COULD BE NO MISTAKE ABOUT SUCH A MATTER AS THAT + WE ARE IN THE PRESENCE THEREFORE OF A DELIBERATE CONSPIRACY UPON THE PART OF THE TWO PEOPLE WHO HEARD THE GUNSHOT OF THE MAN BARKER AND OF THE WOMAN DOUGLAS + WHEN ON THE TOP OF THIS I AM ABLE TO SHOW THAT THE BLOOD MARK ON THE WINDOWSILL WAS DELIBERATELY PLACED THERE BY BARKER IN ORDER TO GIVE A FALSE CLUE TO THE POLICE YOU WILL ADMIT THAT THE CASE GROWS DARK AGAINST HIM + QUOTE NOW WE HAVE TO ASK OURSELVES AT WHAT HOUR THE MURDER ACTUALLY DID OCCUR + UP TO HALF PAST TEN THE SERVANTS WERE MOVING ABOUT THE HOUSE SO IT WAS CERTAINLY NOT BEFORE THAT TIME + AT A QUARTER TO ELEVEN THEY HAD ALL GONE TO THEIR ROOMS WITH THE EXCEPTION OF AMES WHO WAS IN THE PANTRY + I HAVE BEEN TRYING SOME EXPERIMENTS AFTER YOU LEFT US THIS AFTERNOON AND I FIND THAT NO NOISE WHICH MACDONALD CAN MAKE IN THE STUDY CAN PENETRATE TO ME IN THE PANTRY WHEN THE DOORS ARE ALL SHUT + IT IS OTHERWISE HOWEVER FROM THE HOUSEKEEPER'S ROOM + IT IS NOT SO FAR DOWN THE CORRIDOR AND FROM IT I COULD VAGUELY HEAR A VOICE WHEN IT WAS VERY LOUDLY RAISED + THE SOUND FROM A SHOTGUN IS TO SOME EXTENT MUFFLED WHEN THE DISCHARGE IS AT VERY CLOSE RANGE AS IT UNDOUBTEDLY WAS IN THIS INSTANCE + IT WOULD NOT BE VERY LOUD AND YET IN THE SILENCE OF THE NIGHT IT SHOULD HAVE EASILY PENETRATED TO MRS. ALLEN'S ROOM + SHE IS AS SHE HAS TOLD US SOMEWHAT DEAF BUT NONE THE LESS SHE MENTIONED IN HER EVIDENCE THAT SHE DID HEAR SOMETHING LIKE A DOOR SLAMMING HALF AN HOUR BEFORE THE ALARM WAS GIVEN + HALF AN HOUR BEFORE THE ALARM WAS GIVEN WOULD BE A QUARTER TO ELEVEN + I HAVE NO DOUBT THAT WHAT SHE HEARD WAS THE REPORT OF THE GUN AND THAT THIS WAS THE REAL INSTANT OF THE MURDER + IF THIS IS SO WE HAVE NOW TO DETERMINE WHAT BARKER AND MRS. DOUGLAS PRESUMING THAT THEY ARE NOT THE ACTUAL MURDERERS COULD HAVE BEEN DOING FROM QUARTER TO ELEVEN WHEN THE SOUND OF THE SHOT BROUGHT THEM DOWN UNTIL QUARTER PAST ELEVEN WHEN THEY RANG THE BELL AND SUMMONED THE SERVANTS + WHAT WERE THEY DOING AND WHY DID THEY NOT INSTANTLY GIVE THE ALARM + THAT IS THE QUESTION WHICH FACES US AND WHEN IT HAS BEEN ANSWERED WE SHALL SURELY HAVE GONE SOME WAY TO SOLVE OUR PROBLEM + I AM CONVINCED MYSELF SAID I THAT THERE IS AN UNDERSTANDING BETWEEN THOSE TWO PEOPLE + SHE MUST BE A HEARTLESS CREATURE TO SIT LAUGHING AT SOME JEST WITHIN A FEW HOURS OF HER HUSBAND'S MURDER + QUOTE EXACTLY + SHE DOES NOT SHINE AS A WIFE EVEN IN HER OWN ACCOUNT OF WHAT OCCURRED + I AM NOT A WHOLE SOULED ADMIRER OF WOMANKIND AS YOU ARE AWARE WATSON BUT MY EXPERIENCE OF LIFE HAS TAUGHT ME THAT THERE ARE FEW WIVES HAVING ANY REGARD FOR THEIR HUSBANDS WHO WOULD LET ANY MAN'S SPOKEN WORD STAND BETWEEN THEM AND THAT HUSBAND'S DEAD BODY + SHOULD I EVER MARRY WATSON I SHOULD HOPE TO INSPIRE MY WIFE WITH SOME FEELING WHICH WOULD PREVENT HER FROM BEING WALKED OFF BY A HOUSEKEEPER WHEN MY CORPSE WAS LYING WITHIN A FEW YARDS OF HER + IT WAS BADLY STAGE MANAGED FOR EVEN THE RAWEST INVESTIGATORS MUST BE STRUCK BY THE ABSENCE OF THE USUAL FEMININE ULULATION + IF THERE HAD BEEN NOTHING ELSE THIS INCIDENT ALONE WOULD HAVE SUGGESTED A PREARRANGED CONSPIRACY TO MY MIND + YOU THINK THEN DEFINITELY THAT BARKER AND MRS. DOUGLAS ARE GUILTY OF THE MURDER + THERE IS AN APPALLING DIRECTNESS ABOUT YOUR QUESTIONS WATSON SAID HOLMES SHAKING HIS PIPE AT ME + THEY COME AT ME LIKE BULLETS + IF YOU PUT IT THAT MRS. DOUGLAS AND BARKER KNOW THE TRUTH ABOUT THE MURDER AND ARE CONSPIRING TO CONCEAL IT THEN I CAN GIVE YOU A WHOLE SOULED ANSWER + I AM SURE THEY DO + BUT YOUR MORE DEADLY PROPOSITION IS NOT SO CLEAR + LET US FOR A MOMENT CONSIDER THE DIFFICULTIES WHICH STAND IN THE WAY + WE WILL SUPPOSE THAT THIS COUPLE ARE UNITED BY THE BONDS OF A GUILTY LOVE AND THAT THEY HAVE DETERMINED TO GET RID OF THE MAN WHO STANDS BETWEEN THEM + IT IS A LARGE SUPPOSITION FOR DISCREET INQUIRY AMONG SERVANTS AND OTHERS HAS FAILED TO CORROBORATE IT IN ANY WAY + ON THE CONTRARY THERE IS A GOOD DEAL OF EVIDENCE THAT THE DOUGLASES WERE VERY ATTACHED TO EACH OTHER QUOTE + THAT + I AM SURE. CANNOT HE TRUE. SAID I. THINKING OF THE BEAUTIFUL SMILING FACE IN THE GARDEN + WELL AT LEAST THCY GAVE THAT IMPRESSION + HOWEVER WE WILL SUPPOSE THAT THEY ARE AN EXTRAORDINARILY ASTUTE COUPLE WHO DECEIVE EVCRYONE UPON THIS POINT AND CONSPIRE TO MURDER THE HUSBAND + HE HAPPENS TO BE A MAN OVER WHOSE HEAD SOME DANGER HANGS + WE HAVC ONLY THEIR WORD FOR THAT + HOLMES LOOKED THOUGHTFUL + QUOTE I SEE + WATSON + YOU ARE SKETCHING OUT A THEORY BY WHICH EVERYTHING THEY SAY FROM THE BEGINNING IS FALSE + ACCORDING TO YOUR IDEA THERE WAS NEVER ANY HIDDEN MENACE OR SECRET SOCIETY OR VALLEY OF FEAR OR BOSS MACSOMEBODY OR ANYTHING ELSE + WELL THAT IS A GOOD SWEEPING GENERALIZATION + LET US SEE WHAT THAT BRINGS US TO + THEY INVENT THIS THEORY TO ACCOUNT FOR THE CRIME + THEY THEN PLAY UP TO THE IDEA BY LEAVING THIS BICYCLE IN THE PARK AS PROOF OF THE EXISTENCE OF SOME OUTSIDER + THE STAIN ON THE WINDOWSILL CONVEYS THE SAME IDEA + SO DOES THE CARD ON THE BODY WHICH MIGHT HAVE BEEN PREPARED IN THE HOUSE + THAT ALL FITS INTO YOUR HYPOTHESIS WATSON + BUT NOW WE COME ON THE NASTY ANGULAR UNCOMPROMISING BITS WHICH WON'T SLIP INTO THEIR PLACES + WHY A CUT OFF SHOTGUN OF ALL WEAPONS AND AN AMERICAN ONE AT THAT + HOW COULD THEY BE SO SURE THAT THE SOUND OF IT WOULD NOT BRING SOMEONE ON TO THEM + IT'S A MERE CHANCE AS IT IS THAT MRS. ALLEN DID NOT START OUT TO INQUIRE FOR THE SLAMMING DOOR + WHY DID YOUR GUILTY COUPLE DO ALL THIS WATSON + I CONFESS THAT I CAN'T EXPLAIN IT + THEN AGAIN IF A WOMAN AND HER LOVER CONSPIRE TO MURDER A HUSBAND ARE THEY GOING TO ADVERTISE THEIR GUILT BY OSTENTATIOUSLY REMOVING HIS WEDDING RING AFTER HIS DEATH + DOES THAT STRIKE YOU AS VERY PROBABLE WATSON + NO IT DOES NOT + QUOTE AND ONCE AGAIN IF THE THOUGHT OF LEAVING A BICYCLE CONCEALED OUTSIDE HAD OCCURRED TO YOU. WOULD IT REALLY HAVE SEEMED WORTH DOING WHEN THE DULLEST DETECTIVE WOULD NATURALLY SAY THIS IS AN OBVIOUS BLIND AS THE BICYCLE IS THE FIRST THING WHICH THE FUGITIVE NEEDED IN ORDER TO MAKE HIS ESCAPE QUOTE + I CAN CONCEIVE OF NO CXPLANATION + AND YET THERE SHOULD BE NO COMBINATION OF CVENTS FOR WHICH THE WIT OF MAN CANNOT CONCEIVE AN EXPLANATION + SIMPLY AS A MENTAL EXERCISE WITHOUT ANY ASSERTION THAT IT IS TRUE + LET ME INDICATE A POSSIBLE LINE OF THOUGHT + IT IS I ADMIT MERE IMAGINATION BUT HOW OFTEN IS IMAGINATION THE MOTHER OF TRUTH + WE WILL SUPPOSE THAT THERE WAS A GUILTY SECRET A REALLY SHAMEFUL SECRET IN THE LIFE OF THIS MAN DOUGLAS + THIS LEADS TO HIS MURDER BY SOMEONE WHO IS. WE WILL SUPPOSE AN AVENGER SOMEONE FROM OUTSIDE + THIS AVENGER FOR SOME REASON WHICH I CONFESS I AM STILL AT A LOSS TO CXPLAIN TOOK THE DEAD MAN'S WEDDING RING + THE VENDETTA MIGHT CONCEIVABLY DATE BACK TO THE MAN'S FIRST MARRIAGE AND THC RING BC TAKEN FOR SOME SUCH REASON + BEFORE THIS AVENGER GOT AWAY BARKER AND THE WIFE HAD REACHED THE ROOM + THE ASSASSIN CONVINCED THEM THAT ANY ATTEMPT TO ARREST HIM WOULD LEAD TO THE PUBLICATION OF SOME HIDEOUS SCANDAL + THEY WERE CONVERTED TO THIS IDEA AND PREFERRED TO LET HIM GO + FOR THIS PURPOSE THEY PROBABLY LOWERED THE BRIDGE WHICH CAN BE DONE QUITE NOISELESSLY AND THEN RAISED IT AGAIN + HE MADE HIS ESCAPE AND FOR SOME REASON THOUGHT THAT HE COULD DO SO MORE SAFELY ON FOOT THAN ON THE BICYCLE + HE THEREFORE LEFT HIS MACHINE WHERE IT WOULD NOT BE DISCOVERED UNTIL HE HAD GOT SAFELY AWAY + SO FAR WE ARE WITHIN THE BOUNDS OF POSSIBILITY ARE WE NOT + QUOTE WELL IT IS POSSIBLE NO DOUBT QUOTE SAID I WITH SOME RESERVE + WE HAVE TO REMEMBER WATSON THAT WHATEVER OCCURRED IS CERTAINLY SOMETHING VERY EXTRAORDINARY + WELL NOW TO CONTINUE OUR SUPPOSITITIOUS CASE THE COUPLE NOT NECESSARILY A GUILTY COUPLE REALIZE AFTER THE MURDERER IS GONE THAT THEY HAVE PLACED THEMSELVES IN A POSITION IN WHICH IT MAY BE DIFFICULT FOR THEM TO PROVE THAT THEY DID NOT THEMSELVES EITHER DO THE DEED OR CONNIVE AT IT + THEY RAPIDLY AND RATHER CLUMSILY MET THE SITUATION + THE MARK WAS PUT BY BARKER'S BLOODSTAINED SLIPPER UPON THE WINDOWSILL TO SUGGEST HOW THE FUGITIVE GOT AWAY + THEY OBVIOUSLY WERE THE TWO WHO MUST HAVE HEARD THE SOUND OF THE GUN SO THEY GAVE THE ALARM EXACTLY AS THEY WOULD HAVE DONE BUT A GOOD HALF HOUR AFTER THE EVENT + AND HOW DO YOU PROPOSE TO PROVE ALL THIS + WELL IF THERE WERE AN OUTSIDER HE MAY BE TRACED AND TAKEN + THAT WOULD BE THE MOST EFFECTIVE OF ALL PROOFS + BUT IF NOT WELL THE RESOURCES OF SCIENCE ARE FAR FROM BEING EXHAUSTED + I THINK THAT AN EVENING ALONE IN THAT STUDY WOULD HELP ME MUCH + QUOTE AN EVENING ALONE QUOTE + I PROPOSE TO GO UP THERE PRESENTLY + I HAVE ARRANGED IT WITH THE ESTIMABLE AMES WHO IS BY NO MEANS WHOLE HEARTED ABOUT BARKER + I SHALL SIT IN THAT ROOM AND SEE IF ITS ATMOSPHERE BRINGS ME INSPIRATION + I'M A BELIEVER IN THE GENIUS LOCI + YOU SMILE FRIEND WATSON + WELL WE SHALL SEE + BY THE WAY YOU HAVE THAT BIG UMBRELLA OF YOURS HAVE YOU NOT + IT IS HERE + WELL I'LL BORROW THAT IF I MAY + CERTAINLY BUT WHAT A WRETCHCD WEAPON + IF THERE IS DANGER QUOTE + NOTHING SERIOUS MY DEAR WATSON OR I SHOULD CERTAINLY ASK FOR YOUR ASSISTANCE + BUT I'LL TAKE THE UMBRELLA + AT PRESENT I AM ONLY AWAITING THE RETURN OF OUR COLLEAGUES FROM TUNBRIDGE WELLS WHERE THEY ARE AT PRESENT ENGAGED IN TRYING FOR A LIKELY OWNER TO THE BLCYCLE + IT WAS NIGHTFALL BEFORE INSPECTOR MACDONALD AND WHITE MASON CAME BACK FROM THEIR EXPEDITION AND THEY ARRIVED EXULTANT REPORTING A GREAT ADVANCE IN OUR INVESTIGATION + MAN I'LL ADMEET THAT I HAD MY DOUBTS IF THERE WAS EVER AN OUTSIDER SAID MACDONALD BUT THAT'S ALL PAST NOW + WE'VE HAD THE BICYCLE IDENTIFIED AND WE HAVE A DESCRIPTION OF OUR MAN SO THAT'S A LONG STEP ON OUR JOURNEY + IT SOUNDS TO ME LIKE THE BEGINNING OF THE END SAID HOLMES + QUOTE I'M SURE I CONGRATULATE YOU BOTH WITH ALL MY HEART QUOTE + WELL I STARTED FROM THE FACT THAT MR. DOUGLAS HAD SEEMED DISTURBED SINCE THE DAY BEFORE WHEN HE HAD BEEN AT TUNBRIDGE WELLS + IT WAS AT TUNBRIDGE WELLS THEN THAT HE HAD BECOME CONSCIOUS OF SOME DANGER + IT WAS CLEAR THEREFORE THAT IF A NLAN HAD COME OVER WITH A BICYCLE IT WAS FROM TUNBRIDGE WELLS THAT HE MIGHT BE EXPECTED TO HAVE COME + WE TOOK THE BICYCLE OVER WITH US AND SHOWED IT AT THE HOTELS + IT WAS IDENTIFIED AT ONCE BY THE MANAGER OF THE EAGLE COMMERCIAL AS BELONGING TO A MAN NAMED HARGRAVE WHO HAD TAKEN A ROOM THERE TWO DAYS BEFORE + THIS BICYCLE AND A SMALL VALISE WERE HIS WHOLE BELONGINGS + HE HAD REGISTERED HIS NAME AS COMING FROM LONDON BUT HAD GIVEN NO ADDRESS + THE VALISE WAS LONDON MADE AND THE CONTENTS WERE BRITISH BUT THE MAN HIMSELF WAS UNDOUBTEDLY AN AMERICAN + WELL WELL SAID HOLMES GLEEFULLY YOU HAVE INDEED DONE SOME SOLID WORK WHILE I HAVE BEEN SITTING SPINNING THEORIES WITH MY FRIEND + IT'S A LESSON IN BEING PRACTICAL MR. MAC + AY IT'S JUST THAT MR. HOLMES SAID THE INSPECTOR WITH SATISFACTION + QUOTE BUT THIS MAY ALL FIT IN WITH YOUR THEORIES QUOTE I REMARKED + THAT MAY OR MAY NOT BE + BUT LET US HEAR THE END MR. MAC + WAS THERE NOTHING TO IDENTIFY THIS MAN + SO LITTLE THAT IT WAS EVIDENT THAT HE HAD CAREFULLY GUARDED HIMSELF AGAINST IDENTIFICATION + THERE WERE NO PAPERS OR LETTERS AND NO MARKING UPON THE CLOTHES + A CYCLE MAP OF THE COUNTY LAY ON HIS BEDROOM TABLE + HE HAD LEFT THE HOTEL AFTER BREAKFAST YESTERDAY MORNING ON HIS BICYCLE AND NO MORE WAS HEARD OF HIM UNTIL OUR INQUIRIES + THAT'S WHAT PUZZLES ME MR. HOLMES SAID WHITE MASON + QUOTE IF THE FELLOW DID NOT WANT THE HUE AND CRY RAISED OVER HIM ONE WOULD IMAGINE THAT HE WOULD HAVE RETURNED AND REMAINED AT THE HOTEL AS AN INOFFENSIVE TOURIST + AS IT IS HE MUST KNOW THAT HE WILL BE REPORTED TO THE POLICE BY THE HOTEL MANAGER AND THAT HIS DISAPPEARANCE WILL BE CONNECTED WITH THE MURDER + SO ONE WOULD IMAGINE + STILL HE HAS BEEN JUSTIFIED OF HIS WISDOM UP TO DATE AT ANY RATE SINCE HE HAS NOT BEEN TAKEN + BUT HIS DESCRIPTION WHAT OF THAT + MACDONALD REFERRED TO HIS NOTEBOOK + HERE WE HAVE IT SO FAR AS THEY COULD GIVE IT + THEY DON'T SEEM TO HAVE TAKEN ANY VERY PARTICULAR STOCK OF HIM BUT STILL THE PORTER THE CLERK AND THE CHAMBERMAID ARE ALL AGREED THAT THIS ABOUT COVERS THE POINTS + HE WAS A MAN ABOUT FIVE FOOT NINE IN HEIGHT FIFTY OR SO YEARS OF AGE HIS HAIR SLIGHTLY GRIZZLED A GRAYISH MOUSTACHE A CURVED NOSE AND A FACE WHICH ALL OF THEM DESCRIBED AS FIERCE AND FORBIDDING + QUOTE WELL BAR THE EXPRESSION THAT MIGHT ALMOST BE A DESCRIPTION OF DOUGLAS HIMSELF QUOTE SAID HOLMES + HE IS JUST OVER FIFTY WITH GRIZZLED HAIR AND MOUSTACHE AND ABOUT THE SAME HEIGHT + DID YOU GET ANYTHING ELSE + HE WAS DRESSED IN A HEAVY GRAY SUIT WITH A REEFER JACKET AND HE WORE A SHORT YELLOW OVERCOAT AND A SOFT CAP + WHAT ABOUT THE SHOTGUN + IT IS LESS THAN TWO FEET LONG + IT COULD VERY WELL HAVE FITTED INTO HIS VALISE + HE COULD HAVE CARRIED IT INSIDE HIS OVERCOAT WITHOUT DIFFICULTY QUOTE + AND HOW DO YOU CONSIDER THAT ALL THIS BEARS UPON THE GENERAL CASE + WELL MR. HOLMES SAID MACDONALD WHEN WE HAVE GOT OUR MAN AND YOU MAY BE SURE THAT I HAD HIS DESCRIPTION ON THE WIRES WITHIN FIVE MINUTES OF HEARING IT WE SHALL BE BETTER ABLE TO JUDGE + BUT EVEN AS IT STANDS WE HAVE SURELY GONE A LONG WAY + WE KNOW THAT AN AMERICAN CALLING HIMSELF HARGRAVE CAME TO TUNBRIDGE WELLS TWO DAYS AGO WITH BICYCLE AND VALISE + IN THE LATTER WAS A SAWED OFF SHOTGUN SO HE CAME WITH THE DELIBERATE PURPOSE OF CRIME + YESTERDAY MORNING HE SET OFF FOR THIS PLACE ON HIS BICYCLE WITH HIS GUN CONCEALED IN HIS OVERCOAT + NO ONE SAW HIM ARRIVE SO FAR AS WE CAN LEARN BUT HE NEED NOT PASS THROUGH THE VILLAGE TO REACH THE PARK GATES AND THERE ARE MANY CYCLISTS UPON THE ROAD + PRESUMABLY HE AT ONCE CONCEALED HIS CYCLE AMONG THE LAURELS WHERE IT WAS FOUND AND POSSIBLY LURKED THERE HIMSELF WITH HIS EYE ON THE HOUSE WAITING FOR MR. DOUGLAS TO COME OUT + THE SHOTGUN IS A STRANGE WEAPON TO USE INSIDE A HOUSE BUT HE HAD INTENDED TO USE IT OUTSIDE AND THERE IT HAS VERY OBVIOUS ADVANTAGES AS IT WOULD BE IMPOSSIBLE TO MISS WITH IT AND THE SOUND OF SHOTS IS SO COMMON IN AN ENGLISH SPORTING NEIGHBOURHOOD THAT NO PARTICULAR NOTICE WOULD BE TAKEN + THAT IS ALL VERY CLEAR SAID HOLMES + WELL MR. DOUGLAS DID NOT APPEAR + WHAT WAS HE TO DO NEXT + HE LEFT HIS BICYCLE AND APPROACHED THE HOUSE IN THE TWILIGHT + HE FOUND THE BRIDGE DOWN AND NO ONE ABOUT + HE TOOK HIS CHANCE INTENDING NO DOUBT TO MAKE SOME EXCUSE IF HE MET ANYONE + HE MET NO ONE + HE SLIPPED INTO THE FIRST ROOM THAT HE SAW AND CONCEALED HIMSELF BEHIND THE CURTAIN + THENCE HE COULD SEE THE DRAWBRIDGE GO UP AND HE KNEW THAT HIS ONLY ESCAPE WAS THROUGH THE MOAT + HE WAITED UNTIL QUARTER PAST ELEVEN WHEN MR. DOUGLAS UPON HIS USUAL NIGHTLY ROUND CAME INTO THE ROOM + HE SHOT HIM AND ESCAPED AS ARRANGED + HE WAS AWARE THAT THE BICYCLE WOULD BE DESCRIBED BY THE HOTEL PEOPLE AND BE A CLUE AGAINST HIM SO HE LEFT IT THERE AND MADE HIS WAY BY SOME OTHER MEANS TO LONDON OR TO SOME SAFE HIDING PLACE WHICH HE HAD ALREADY ARRANGED + HOW IS THAT MR. HOLMES QUOTE + WELL MR. MAC IT IS VERY GOOD AND VERY CLEAR SO FAR AS IT GOES + THAT IS YOUR END OF THE STORY + MY END IS THAT THE CRIME WAS COMMITTED HALF AN HOUR EARLIER THAN REPORTED THAT MRS. DOUGLAS AND BARKER ARE BOTH IN A CONSPIRACY TO CONCEAL SOMETHING THAT THEY AIDED THE MURDERER'S ESCAPE OR AT LEAST THAT THEY REACHED THE ROOM BEFORE HE ESCAPED AND THAT THEY FABRICATED EVIDENCE OF HIS ESCAPE THROUGH THE WINDOW WHEREAS IN ALL PROBABILITY THEY HAD THEMSELVES LET HIM GO BY LOWERING THE BRIDGE + THAT'S MY READING OF THE FIRST HALF + THE TWO DETECTIVES SHOOK THEIR HEADS + WELL MR. HOLMES IF THIS IS TRUE WE ONLY TUMBLE OUT OF ONE MYSTERY INTO ANOTHER SAID THE LONDON INSPECTOR + AND IN SOME WAYS A WORSE ONE ADDED WHITE MASON + THE LADY HAS NEVER BEEN IN AMERICA IN ALL HER LIFE + WHAT POSSIBLE CONNECTION COULD SHE HAVE WITH AN AMERICAN ASSASSIN WHICH WOULD CAUSE HER TO SHELTER HIM QUOTE + I FREELY ADMIT THE DIFFICULTIES SAID HOLMES + I PROPOSE TO MAKE A LITTLE INVESTIGATION OF MY OWN TO NIGHT AND IT IS JUST POSSIBLE THAT IT MAY CONTRIBUTE SOMETHING TO THE COMMON CAUSE + CAN WE HELP YOU MR. HOLMES + NO NO + DARKNESS AND DOCTOR WATSON'S UMBRELLA MY WANTS ARE SIMPLE + AND AMES THE FAITHFUL AMES NO DOUBT HE WILL STRETCH A POINT FOR ME + ALL MY LINES OF THOUGHT LEAD ME BACK INVARIABLY TO THE ONE BASIC QUESTION WHY SHOULD AN ATHLETIC MAN DEVELOP HIS FRAME UPON SO UNNATURAL AN INSTRUMENT AS A SINGLE DUMB BELL + IT WAS LATE THAT NIGHT WHEN HOLMES RETURNED FROM HIS SOLITARY EXCURSION + WE SLEPT IN A DOUBLE BEDDED ROOM WHICH WAS THE BEST THAT THE LITTLE COUNTRY INN COULD DO FOR US + I WAS ALREADY ASLEEP WHEN I WAS PARTLY AWAKENED BY HIS ENTRANCE + QUOTE WELL HOLMES QUOTE I MURMURED QUOTE HAVE YOU FOUND ANYTHING OUT QUOTE + HE STOOD BESIDE ME IN SILENCE HIS CANDLE IN HIS HAND + THEN THE TALL LEAN FIGURE INCLINED TOWARDS ME + I SAY WATSON HE WHISPERED WOULD YOU BE AFRAID TO SLEEP IN THE SAME ROOM WITH A LUNATIC A MAN WITH SOFTENING OF THE BRAIN AN IDIOT WHOSE MIND HAS LOST ITS GRIP + NOT IN THE LEAST I ANSWERED IN ASTONISHMENT + AH THAT'S LUCKY HE SAID AND NOT ANOTHER WORD WOULD HE UTTER THAT NIGHT + CHAPTER SEVEN THE SOLUTION + NEXT MORNING AFTER BREAKFAST WE FOUND INSPECTOR MACDONALD AND WHITE MASON SEATED IN CLOSE CONSULTATION IN THE SMALL PARLOUR OF THE LOCAL POLICE SERGEANT + ON THE TABLE IN FRONT OF THEM WERE PILED A NUMBER OF LETTERS AND TELEGRAMS WHICH THEY WERE CAREFULLY SORTING AND DOCKETING + THREE HAD BEEN PLACED ON ONE SIDE + STILL ON THE TRACK OF THE ELUSIVE BICYCLIST + HOLMES ASKED CHEERFULLY + WHAT IS THE LATEST NEWS OF THE RUFFIAN + MACDONALD POINTED RUEFULLY TO HIS HEAP OF CORRESPONDENCE + QUOTE HE IS AT PRESENT REPORTED FROM LEICESTER NOTTINGHAM SOUTHAMPTON DERBY EAST HAM RICHMOND AND FOURTEEN OTHER PLACES + IN THREE OF THEM EAST HAM LEICESTER AND LIVERPOOL THERE IS A CLEAR CASE AGAINST HIM AND HE HAS ACTUALLY BEEN ARRESTED + THE COUNTRY SEEMS TO BE FULL OF THE FUGITIVES WITH YELLOW COATS + DEAR ME SAID HOLMES SYMPATHETICALLY + NOW MR. MAC AND YOU MR. WHITE MASON I WISH TO GIVE YOU A VERY EARNEST PIECE OF ADVICE + WHEN I WENT INTO THIS CASE WITH YOU I BARGAINED AS YOU WILL NO DOUBT REMEMBER THAT I SHOULD NOT PRESENT YOU WITH HALF PROVED THEORIES BUT THAT I SHOULD RETAIN AND WORK OUT MY OWN IDEAS UNTIL I HAD SATISFIED MYSELF THAT THEY WERE CORRECT + FOR THIS REASON I AM NOT AT THE PRESENT MOMENT TELLING YOU ALL THAT IS IN MY MIND + ON THE OTHER HAND I SAID THAT I WOULD PLAY THE GAME FAIRLY BY YOU AND I DO NOT THINK IT IS A FAIR GAME TO ALLOW YOU FOR ONE UNNECESSARY MOMENT TO WASTE YOUR ENERGIES UPON A PROFITLESS TASK + THEREFORE I AM HERE TO ADVISE YOU THIS MORNING AND MY ADVICE TO YOU IS SUMMED UP IN THREE WORDS ABANDON THE CASE + MACDONALD AND WHITE MASON STARED IN AMAZEMENT AT THEIR CELEBRATED COLLEAGUE + YOU CONSIDER IT HOPELESS CRIED THE INSPECTOR + QUOTE I CONSIDER YOUR CASE TO BE HOPELESS + I DO NOT CONSIDER THAT IT IS HOPELESS TO ARRIVE AT THE TRUTH + BUT THIS CYCLIST + HE IS NOT AN INVENTION + WE HAVE HIS DESCRIPTION HIS VALISE HIS BICYCLE + THE FELLOW MUST BE SOMEWHERE + WHY SHOULD WE NOT GET HIM + YES YES NO DOUBT HE IS SOMEWHERE AND NO DOUBT WE SHALL GET HIM BUT I WOULD NOT HAVE YOU WASTE YOUR ENERGIES IN EAST HAM OR LIVERPOOL + I AM SURE THAT WE CAN FIND SOME SHORTER CUT TO A RESULT + QUOTE YOU ARE HOLDING SOMETHING BACK + IT'S HARDLY FAIR OF YOU MR. HOLMES + THE INSPECTOR WAS ANNOYED + YOU KNOW MY METHODS OF WORK MR. MAC + BUT I WILL HOLD IT BACK FOR THE SHORTEST TIME POSSIBLE + I ONLY WISH TO VERIFY MY DETAILS IN ONE WAY WHICH CAN VERY READILY BE DONE AND THEN I MAKE MY BOW AND RETURN TO LONDON LEAVING MY RESULTS ENTIRELY AT YOUR SERVICE + I OWE YOU TOO MUCH TO ACT OTHERWISE FOR IN ALL MY EXPERIENCE I CANNOT RECALL ANY MORE SINGULAR AND INTERESTING STUDY + THIS IS CLEAN BEYOND ME MR. HOLMES + WE SAW YOU WHEN WE RETURNED FROM TUNBNDGE WELLS LAST NIGHT AND YOU WERE IN GENERAL AGREEMENT WITH OUR RESULTS + WHAT HAS HAPPENED SINCE THEN TO GIVE YOU A COMPLETELY NEW IDEA OF THE CASE + QUOTE WELL SINCE YOU ASK ME I SPENT AS I TOLD YOU THAT I WOULD SOME HOURS LAST NIGHT AT THE MANOR HOUSE QUOTE + WELL WHAT HAPPENED + AH I CAN ONLY GIVE YOU A VERY GENERAL ANSWER TO THAT FOR THE MOMENT + BY THE WAY I HAVE BEEN READING A SHORT BUT CLEAR AND INTERESTING ACCOUNT OF THE OLD BUILDING PURCHASABLE AT THE MODEST SUM OF ONE PENNY FROM THE LOCAL TOBACCONIST + HERE HOLMES DREW A SMALL TRACT EMBELLISHED WITH A RUDE ENGRAVING OF THE ANCIENT MANOR HOUSE FROM HIS WAISTCOAT POCKET + IT IMMENSELY ADDS TO THE ZEST OF AN INVESTIGATION MY DEAR MR. MAC WHEN ONE IS IN CONSCIOUS SYMPATHY WITH THE HISTORICAL ATMOSPHERE OF ONE'S SURROUNDINGS + DON'T LOOK SO IMPATIENT FOR I ASSURE YOU THAT EVEN SO BALD AN ACCOUNT AS THIS RAISES SOME SORT OF PICTURE OF THE PAST IN ONE'S MIND + PERMIT ME TO GIVE YOU A SAMPLE + ERECTED IN THE FIFTH YEAR OF THE REIGN OF JAMES ONE AND STANDING UPON THE SITE OF A MUCH OLDER BUILDING THE MANOR HOUSE OF BIRLSTONE PRESENTS ONE OF THE FINEST SURVIVING EXAMPLES OF THE MOATED JACOBEAN RESIDENCE + QUOTE YOU ARE MAKING FOOLS OF US MR. HOLMES QUOTE + TUT TUT MR. MAC THE FIRST SIGN OF TEMPER I HAVE DETECTED IN YOU + WELL I WON'T READ IT VERBATIM SINCE YOU FEEL SO STRONGLY UPON THE SUBJECT + BUT WHEN I TELL YOU THAT THERE IS SOME ACCOUNT OF THE TAKING OF THE PLACE BY A PARLIAMENTARY COLONEL IN ONE THOUSAND SIX HUNDRED FORTY FOUR OF THE CONCEALMENT OF CHARLES FOR SEVERAL DAYS IN THE COURSE OF THE CIVIL WAR AND FINALLY OF A VISIT THERE BY THE SECOND GEORGE YOU WILL ADMIT THAT THERE ARE VARIOUS ASSOCIATIONS OF INTEREST CONNECTED WITH THIS ANCIENT HOUSE + I DON'T DOUBT IT MR. HOLMES BUT THAT IS NO BUSINESS OF OURS + IS IT NOT + IS IT NOT + BREADTH OF VIEW MY DEAR MR. MAC IS ONE OF THE ESSENTIALS OF OUR PROFESSION + THE INTERPLAY OF IDEAS AND THE OBLIQUE USES OF KNOWLEDGE ARE OFTEN OF EXTRAORDINARY INTEREST + YOU WILL EXCUSE THESE REMARKS FROM ONE WHO THOUGH A MERE CONNOISSEUR OF CRIME IS STILL RATHER OLDER AND PERHAPS MORE EXPERIENCED THAN YOURSELF + QUOTE I'M THE FIRST TO ADMIT THAT QUOTE SAID THE DETECTIVE HEARTILY + YOU GET TO YOUR POINT I ADMIT BUT YOU HAVE SUCH A DEUCED ROUND THECORNER WAY OF DOING IT + WELL WELL I'LL DROP PAST HISTORY AND GET DOWN TO PRESENTDAY FACTS + I CALLED LAST NIGHT AS I HAVE ALREADY SAID AT THE MANOR HOUSE + I DID NOT SEE EITHER BARKER OR MRS. DOUGLAS + I SAW NO NECESSITY TO DISTURB THEM BUT I WAS PLEASED TO HEAR THAT THE LADY WAS NOT VISIBLY PINING AND THAT SHE HAD PARTAKEN OF AN EXCELLENT DINNER + MY VISIT WAS SPECIALLY MADE TO THE GOOD MR. AMES WITH WHOM I EXCHANGED SOME AMIABILITIES WHICH CULMINATED IN HIS ALLOWING ME WITHOUT REFERENCE TO ANYONE ELSE. TO SIT ALONE FOR A TIME IN THE STUDY + WHAT + WITH THAT + I EJACULATED + QUOTE NO NO EVERYTHING IS NOW IN ORDER + YOU GAVE PERMISSION FOR THAT MR. MAC AS I AM INFORMED + THE ROOM WAS IN ITS NORMAL STATE AND IN IT I PASSED AN INSTRUCTIVE QUARTER OF AN HOUR + WHAT WERE YOU DOING + WELL NOT TO MAKE A MYSTERY OF SO SIMPLE A MATTER I WAS LOOKING FOR THE MISSING DUMB BELL + IT HAS ALWAYS BULKED RATHER LARGE IN MY ESTIMATE OF THE CASE + I ENDED BY FINDING IT + WHERE + QUOTE AH THERE WE COME TO THE EDGE OF THE UNEXPLORED + LET ME GO A LITTLE FURTHER A VERY LITTLE FURTHER AND I WILL PROMISE THAT YOU SHALL SHARE EVERYTHING THAT I KNOW + WELL WE'RE BOUND TO TAKE YOU ON YOUR OWN TERMS SAID THE INSPECTOR BUT WHEN IT COMES TO TELLING US TO ABANDON THE CASE WHY IN THE NAME OF GOODNESS SHOULD WE ABANDON THE CASE + FOR THE SIMPLE REASON MY DEAR MR. MAC THAT YOU HAVE NOT GOT THE FIRST IDEA WHAT IT IS THAT YOU ARE INVESTIGATING + WE ARE INVESTIGATING THE MURDER OF MR. JOHN DOUGLAS OF BIRLSTONE MANOR + YES YES SO YOU ARE + BUT DON'T TROUBLE TO TRACE THE MYSTERIOUS GENTLEMAN UPON THE BICYCLE + I ASSURE YOU THAT IT WON'T HELP YOU QUOTE + THEN WHAT DO YOU SUGGEST THAT WE DO + I WILL TELL YOU EXACTLY WHAT TO DO IF YOU WILL DO IT + WELL I'M BOUND TO SAY I'VE ALWAYS FOUND YOU HAD REASON BEHIND ALL YOUR QUEER WAYS + I'LL DO WHAT YOU ADVISE + AND YOU MR. WHITE MASON + THE COUNTRY DETECTIVE LOOKED HELPLESSLY FROM ONE TO THE OTHER + HOLMES AND HIS METHODS WERE NEW TO HIM + QUOTE WELL IF IT IS GOOD ENOUGH FOR THE INSPECTOR IT IS GOOD ENOUGH FOR ME QUOTE HE SAID AT LAST + CAPITAL SAID HOLMES + WELL THEN I SHOULD RECOMMEND A NICE CHEERY COUNTRY WALK FOR BOTH OF YOU + THEY TELL ME THAT THE VIEWS FROM BIRLSTONE RIDGE OVER THE WEALD ARE VERY REMARKABLE + NO DOUBT LUNCH COULD BE GOT AT SOME SUITABLE HOSTELRY THOUGH MY IGNORANCE OF THE COUNTRY PREVENTS ME FROM RECOMMENDING ONE + IN THE EVENING TIRED BUT HAPPY + MAN THIS IS GETTING PAST A JOKE CRIED MACDONALD RISING ANGRILY FROM HIS CHAIR + WELL WELL SPEND THE DAY AS YOU LIKE SAID HOLMES PATTING HIM CHEERFULLY UPON THE SHOULDER + QUOTE DO WHAT YOU LIKE AND GO WHERE YOU WILL BUT MEET ME HERE BEFORE DUSK WITHOUT FAIL WITHOUT FAIL MR. MAC QUOTE + THAT SOUNDS MORE LIKE SANITY + ALL OF IT WAS EXCELLENT ADVICE BUT I DON'T INSIST SO LONG AS YOU ARE HERE WHEN I NEED YOU + BUT NOW BEFORE WE PART I WANT YOU TO WRITE A NOTE TO MR. BARKER + WELL + I'LL DICTATE IT IF YOU LIKE + READY + QUOTE DEAR SIR QUOTE IT HAS STRUCK ME THAT IT IS OUR DUTY TO DRAIN THE MOAT IN THE HOPE THAT WE MAY FIND SOME QUOTE + IT'S IMPOSSIBLE SAID THE INSPECTOR + I'VE MADE INQUIRY + TUT TUT + MY DEAR SIR PLEASE DO WHAT I ASK YOU + WELL GO ON. IN THE HOPE THAT WE MAY FIND SOMETHING WHICH MAY BEAR UPON OUR INVESTIGATION + I HAVE MADE ARRANGEMENTS AND THE WORKMEN WILL BE AT WORK EARLY TO MORROW MORNING DIVERT ING THE STREAM QUOTE + IMPOSSIBLE DIVERTING THE STREAM SO I THOUGHT IT BEST TO EXPLAIN MATTERS BEFOREHAND + NOW SIGN THAT AND SEND IT BY HAND ABOUT FOUR O'CLOCK + AT THAT HOUR WE SHALL MEET AGAIN IN THIS ROOM + UNTIL THEN WE MAY EACH DO WHAT WE LIKE FOR I CAN ASSURE YOU THAT THIS INQUIRY HAS COME TO A DEFINITE PAUSE + EVENING WAS DRAWING IN WHEN WE REASSEMBLED + HOLMES WAS VERY SERIOUS IN HIS MANNER MYSELF CURIOUS AND THE DETECTIVES OBVIOUSLY CRITICAL AND ANNOYED + WELL GENTLEMEN SAID MY FRIEND GRAVELY I AM ASKING YOU NOW TO PUT EVERYTHING TO THE TEST WITH ME AND YOU WILL JUDGE FOR YOURSELVES WHETHER THE OBSERVATIONS I HAVE MADE JUSTIFY THE CONCLUSIONS TO WHICH I HAVE COME + IT IS A CHILL EVENING AND I DO NOT KNOW HOW LONG OUR EXPEDITION MAY LAST SO I BEG THAT YOU WILL WEAR YOUR WARMEST COATS + IT IS OF THE FIRST IMPORTANCE THAT WE SHOULD BE IN OUR PLACES BEFORE IT GROWS DARK SO WITH YOUR PERMISSION WE SHALL GET STARTED AT ONCE + WE PASSED ALONG THE OUTER BOUNDS OF THE MANOR HOUSE PARK UNTIL WE CAME TO A PLACE WHERE THERE WAS A GAP IN THE RAILS WHICH FENCED IT + THROUGH THIS WE SLIPPED AND THEN IN THE GATHERING GLOOM WE FOLLOWED HOLMES UNTIL WE HAD REACHED A SHRUBBERY WHICH LIES NEARLY OPPOSITE TO THE MAIN DOOR AND THE DRAWBRIDGE + THE LATTER HAD NOT BEEN RAISED + HOLMES CROUCHED DOWN BEHIND THE SCREEN OF LAURELS AND WE ALL THREE FOLLOWED HIS EXAMPLE + WELL WHAT ARE WE TO DO NOW ASKED MACDONALD WITH SOME GRUFFNESS + QUOTE POSSESS OUR SOULS IN PATIENCE AND MAKE AS LITTLE NOISE AS POSSIBLE QUOTE HOLMES ANSWERED + WHAT ARE WE HERE FOR AT ALL + I REALLY THINK THAT YOU MIGHT TREAT US WITH MORE FRANKNESS + HOLMES LAUGHED + WATSON INSISTS THAT I AM THE DRAMATIST IN REAL LIFE SAID HE + SOME TOUCH OF THE ARTIST WELLS UP WITHIN ME AND CALLS INSISTENTLY FOR A WELL STAGED PERFORMANCE + SURELY OUR PROFESSION MR. MAC WOULD BE A DRAB AND SORDID ONE IF WE DID NOT SOMETIMES SET THE SCENE SO AS TO GLORIFY OUR RESULTS + THE BLUNT ACCUSATION THE BRUTAL TAP UPON THE SHOULDER WHAT CAN ONE MAKE OF SUCH A DENOUEMENT + BUT THE QUICK INFERENCE THE SUBTLE TRAP THE CLEVER FORECAST OF COMING EVENTS THE TRIUMPHANT VINDICATION OF BOLD THEORIES ARE THESE NOT THE PRIDE AND THE JUSTIFICATION OF OUR LIFE'S WORK + AT THE PRESENT MOMENT YOU THRILL WITH THE GLAMOUR OF THE SITUATION AND THE ANTICIPATION OF THE HUNT + WHERE WOULD BE THAT THRILL IF I HAD BEEN AS DEFINITE AS A TIMETABLE + I ONLY ASK A LITTLE PATIENCE MR. MAC AND ALL WILL BE CLEAR TO YOU + QUOTE WELL I HOPE THE PRIDE AND JUSTIFICATION AND THE REST OF IT WILL COME BEFORE WE ALL GET OUR DEATH OF COLD QUOTE SAID THE LONDON DETECTIVE WITH COMIC RESIGNATION + WE ALL HAD GOOD REASON TO JOIN IN THE ASPIRATION FOR OUR VIGIL WAS A LONG AND BITTER ONE + SLOWLY THE SHADOWS DARKENED OVER THE LONG SOMBRE FACE OF THE OLD HOUSE + A COLD DAMP REEK FROM THE MOAT CHILLED US TO THE BONES AND SET OUR TEETH CHATTERING + THERE WAS A SINGLE LAMP OVER THE GATEWAY AND A STEADY GLOBE OF LIGHT IN THE FATAL STUDY + EVERYTHING ELSE WAS DARK AND STILL + HOW LONG IS THIS TO LAST ASKED THE INSPECTOR FINALLY + AND WHAT IS IT WE ARE WATCHING FOR + I HAVE NO MORE NOTION THAN YOU HOW LONG IT IS TO LAST HOLMES ANSWERED WITH SOME ASPERITY + IF CRIMINALS WOULD ALWAYS SCHEDULE THEIR MOVEMENTS LIKE RAILWAY TRAINS IT WOULD CERTAINLY BE MORE CONVENIENT FOR ALL OF US + AS TO WHAT IT IS WE WELL THAT'S WHAT WE ARE WATCHING FOR + AS HE SPOKE THE BRIGHT YELLOW LIGHT IN THE STUDY WAS OBSCURED BY SOMEBODY PASSING TO AND FRO BEFORE IT + THE LAURELS AMONG WHICH WE LAY WERE IMMEDIATELY OPPOSITE THE WINDOW AND NOT MORE THAN A HUNDRED FEET FROM IT + PRESENTLY IT WAS THROWN OPEN WITH A WHINING OF HINGES AND WE COULD DIMLY SEE THE DARK OUTLINE OF A MAN'S HEAD AND SHOULDERS LOOKING OUT INTO THE GLOOM + FOR SOME MINUTES HE PEERED FORTH IN FURTIVE STEALTHY FASHION AS ONE WHO WISHES TO BE ASSURED THAT HE IS UNOBSERVED + THEN HE LEANED FORWARD AND IN THE INTENSE SILENCE WE WERE AWARE OF THE SOFT LAPPING OF AGITATED WATER + HE SEEMED TO BE STIRRING UP THE MOAT WITH SOMETHING WHICH HE HELD IN HIS HAND + THEN SUDDENLY HE HAULED SOMETHING IN AS A FISHERMAN LANDS A FISH SOME LARGE ROUND OBJECT WHICH OBSCURED THE LIGHT AS IT WAS DRAGGED THROUGH THE OPEN CASEMENT + QUOTE NOW QUOTE CRIED HOLMES + NOW + WE WERE ALL UPON OUR FEET STAGGERING AFTER HIM WITH OUR STIFFENED LIMBS WHILE HE RAN SWIFTLY ACROSS THE BRIDGE AND RANG VIOLENTLY AT THE BELL + THERE WAS THE RASPING OF BOLTS FROM THE OTHER SIDE AND THE AMAZED AMES STOOD IN THE ENTRANCE + HOLMES BRUSHED HIM ASIDE WITHOUT A WORD AND FOLLOWED BY ALL OF US RUSHED INTO THE ROOM WHICH HAD BEEN OCCUPIED BY THE MAN WHOM WE HAD BEEN WATCHING + THE OIL LAMP ON THE TABLE REPRESENTED THE GLOW WHICH WE HAD SEEN FROM OUTSIDE + IT WAS NOW IN THE HAND OF CECIL BARKER WHO HELD IT TOWARDS US AS WE ENTERED + ITS LIGHT SHONE UPON HIS STRONG RESOLUTE CLEAN SHAVED FACE AND HIS MENACING EYES + WHAT THE DEVIL IS THE MEANING OF ALL THIS HE CRIED + WHAT ARE YOU AFTER ANYHOW + HOLMES TOOK A SWIFT GLANCE ROUND AND THEN POUNCED UPON A SODDEN BUNDLE TIED TOGETHER WITH CORD WHICH LAY WHERE IT HAD BEEN THRUST UNDER THE WRITING TABLE + THIS IS WHAT WE ARE AFTER MR. BARKER THIS BUNDLE WEIGHTED WITH A DUMB BELL WHICH YOU HAVE JUST RAISED FROM THE BOTTOM OF THE MOAT + BARKER STARED AT HOLMES WITH AMAZEMENT IN HIS FACE + HOW IN THUNDER CAME YOU TO KNOW ANYTHING ABOUT IT HE ASKED + QUOTE SIMPLY THAT I PUT IT THERE QUOTE + YOU PUT IT THERE + YOU + PERHAPS I SHOULD HAVE SAID REPLACED IT THERE SAID HOLMES + YOU WILL REMEMBER INSPECTOR MACDONALD THAT I WAS SOMEWHAT STRUCK BY THE ABSENCE OF A DUMB BELL + I DREW YOUR ATTENTION TO IT BUT WITH THE PRESSURE OF OTHER EVENTS YOU HAD HARDLY THE TIME TO GIVE IT THE CONSIDERATION WHICH WOULD HAVE ENABLED YOU TO DRAW DEDUCTIONS FROM IT + WHEN WATER IS NEAR AND A WEIGHT IS MISSING IT IS NOT A VERY FAR FETCHED SUPPOSITION THAT SOMETHING HAS BEEN SUNK IN THE WATER + THE IDEA WAS AT LEAST WORTH TESTING SO WITH THE HELP OF AMES WHO ADMITTED ME TO THE ROOM AND THE CROOK OF DOCTOR WATSON'S UMBRELLA I WAS ABLE LAST NIGHT TO FISH UP AND INSPECT THIS BUNDLE + IT WAS OF THE FIRST IMPORTANCE HOWEVER THAT WE SHOULD BE ABLE TO PROVE WHO PLACED IT THERE + THIS WE ACCOMPLISHED BY THE VERY OBVIOUS DEVICE OF ANNOUNCING THAT THE MOAT WOULD BE DRIED TO MORROW WHICH HAD OF COURSE THE EFFECT THAT WHOEVER HAD HIDDEN THE BUNDLE WOULD MOST CERTAINLY WITHDRAW IT THE MOMENT THAT DARKNESS ENABLED HIM TO DO SO + WE HAVE NO LESS THAN FOUR WITNESSES AS TO WHO IT WAS WHO TOOK ADVANTAGE OF THE OPPORTUNITY AND SO MR. BARKER I THINK THE WORD LIES NOW WITH YOU QUOTE + SHERLOCK HOLMES PUT THE SOPPING BUNDLE UPON THE TABLE BESIDE THE LAMP AND UNDID THE CORD WHICH BOUND IT + FROM WITHIN HE EXTRACTED A DUMB BELL WHICH HE TOSSED DOWN TO ITS FELLOW IN THE CORNER + NEXT HE DREW FORTH A PAIR OF BOOTS + AMERICAN AS YOU PERCEIVE HE REMARKED POINTING TO THE TOES + THEN HE LAID UPON THE TABLE A LONG DEADLY SHEATHED KNIFE + FINALLY HE UNRAVELLED A BUNDLE OF CLOTHING COMPRISING A COMPLETE SET OF UNDERCLOTHES SOCKS A GRAY TWEED SUIT AND A SHORT YELLOW OVERCOAT + THE CLOTHES ARE COMMONPLACE REMARKED HOLMES SAVE ONLY THE OVERCOAT WHICH IS FULL OF SUGGESTIVE TOUCHES + HE HELD IT TENDERLY TOWARDS THE LIGHT + HERE AS YOU PERCEIVE IS THE INNER POCKET PROLONGED INTO THE LINING IN SUCH FASHION AS TO GIVE AMPLE SPACE FOR THE TRUNCATED FOWLING PIECE + THE TAILOR'S TAB IS ON THE NECK NEAL OUTFITTER VERMISSA U. S. A. I HAVE SPENT AN INSTRUCTIVE AFTERNOON IN THE RECTOR'S LIBRARY AND HAVE ENLARGED MY KNOWLEDGE BY ADDING THE FACT THAT VERMISSA IS A FLOURISHING LITTLE TOWN AT THE HEAD OF ONE OF THE BEST KNOWN COAL AND IRON VALLEYS IN THE UNITED STATES + I HAVE SOME RECOLLECTION MR. BARKER THAT YOU ASSOCIATED THE COAL DISTRICTS WITH MR. DOUGLAS'S FIRST WIFE AND IT WOULD SURELY NOT BE TOO FAR FETCHED AN INFERENCE THAT THE V. V. UPON THE CARD BY THE DEAD BODY MIGHT STAND FOR VERMISSA VALLEY OR THAT THIS VERY VALLEY WHICH SENDS FORTH EMISSARIES OF MURDER MAY BE THAT VALLEY OF FEAR OF WHICH WE HAVE HEARD + SO MUCH IS FAIRLY CLEAR + AND NOW MR. BARKER I SEEM TO BE STANDING RATHER IN THE WAY OF YOUR EXPLANATION + IT WAS A SIGHT TO SEE CECIL BARKER'S EXPRESSIVE FACE DURING THIS EXPOSITION OF THE GREAT DETECTIVE + ANGER AMAZEMENT CONSTERNATION AND INDECISION SWEPT OVER IT IN TURN + FINALLY HE TOOK REFUGE IN A SOMEWHAT ACRID IRONY + YOU KNOW SUCH A LOT MR. HOLMES PERHAPS YOU HAD BETTER TELL US SOME MORE HE SNEERED + QUOTE I HAVE NO DOUBT THAT I COULD TELL YOU A GREAT DEAL MORE MR. BARKER BUT IT WOULD COME WITH A BETTER GRACE FROM YOU QUOTE + OH YOU THINK SO DO YOU + WELL ALL I CAN SAY IS THAT IF THERE'S ANY SECRET HERE IT IS NOT MY SECRET AND I AM NOT THE MAN TO GIVE IT AWAY + WELL IF YOU TAKE THAT LINE MR. BARKER SAID THE INSPECTOR QUIETLY WE MUST JUST KEEP YOU IN SIGHT UNTIL WE HAVE THE WARRANT AND CAN HOLD YOU + YOU CAN DO WHAT YOU DAMN PLEASE ABOUT THAT SAID BARKER DEFIANTLY + THE PROCEEDINGS SEEMED TO HAVE COME TO A DEFINITE END SO FAR AS HE WAS CONCERNED FOR ONE HAD ONLY TO LOOK AT THAT GRANITE FACE TO REALIZE THAT NO PEINE FORTE ET DURE WOULD EVER FORCE HIM TO PLEAD AGAINST HIS WILL + THE DEADLOCK WAS BROKEN HOWEVER BY A WOMAN'S VOICE + MRS. DOUGLAS HAD BEEN STANDING LISTENING AT THE HALF OPENED DOOR AND NOW SHE ENTERED THE ROOM + YOU HAVE DONE ENOUGH FOR NOW CECIL SAID SHE + QUOTE WHATEVER COMES OF IT IN THE FUTURE YOU HAVE DONE ENOUGH QUOTE + ENOUGH AND MORE THAN ENOUGH REMARKED SHERLOCK HOLMES GRAVELY + I HAVE EVERY SYMPATHY WITH YOU MADAM AND SHOULD STRONGLY URGE YOU TO HAVE SOME CONFIDENCE IN THE COMMON SENSE OF OUR JURISDICTION AND TO TAKE THE POLICE VOLUNTARILY INTO YOUR COMPLETE CONFIDENCE + IT MAY BE THAT I AM MYSELF AT FAULT FOR NOT FOLLOWING UP THE HINT WHICH YOU CONVEYED TO ME THROUGH MY FRIEND DOCTOR WATSON BUT AT THAT TIME I HAD EVERY REASON TO BELIEVE THAT YOU WERE DIRECTLY CONCERNED IN THE CRIME + NOW I AM ASSURED THAT THIS IS NOT SO + AT THE SAME TIME THERE IS MUCH THAT IS UNEXPLAINED AND I SHOULD STRONGLY RECOMMEND THAT YOU ASK MR. DOUGLAS TO TELL US HIS OWN STORY + MRS. DOUGLAS GAVE A CRY OF ASTONISHMENT AT HOLMES'S WORDS + THE DETECTIVES AND I MUST HAVE ECHOED IT WHEN WE WERE AWARE OF A MAN WHO SEEMED TO HAVE EMERGED FROM THE WALL WHO ADVANCED NOW FROM THE GLOOM OF THE CORNER IN WHICH HE HAD APPEARED + MRS. DOUGLAS TURNED AND IN AN INSTANT HER ARMS WERE ROUND HIM + BARKER HAD SEIZED HIS OUTSTRETCHED HAND + IT'S BEST THIS WAY JACK HIS WIFE REPEATED I AM SURE THAT IT IS BEST + INDEED YES MR. DOUGLAS SAID SHERLOCK HOLMES I AM SURE THAT YOU WILL FIND IT BEST + THE MAN STOOD BLINKING AT US WITH THE DAZED LOOK OF ONE WHO COMES FROM THE DARK INTO THE LIGHT + IT WAS A REMARKABLE FACE BOLD GRAY EYES A STRONG SHORT CLIPPED GRIZZLED MOUSTACHE A SQUARE PROJECTING CHIN AND A HUMOROUS MOUTH + HE TOOK A GOOD LOOK AT US ALL AND THEN TO MY AMAZEMENT HE ADVANCED TO ME AND HANDED ME A BUNDLE OF PAPER + QUOTE I'VE HEARD OF YOU QUOTE SAID HE IN A VOICE WHICH WAS NOT QUITE ENGLISH AND NOT QUITE AMERICAN BUT WAS ALTOGETHER MELLOW AND PLEASING + YOU ARE THE HISTORIAN OF THIS BUNCH + WELL DOCTOR WATSON YOU'VE NEVER HAD SUCH A STORY AS THAT PASS THROUGH YOUR HANDS BEFORE AND I'LL LAY MY LAST DOLLAR ON THAT + TELL IT YOUR OWN WAY BUT THERE ARE THE FACTS AND YOU CAN'T MISS THE PUBLIC SO LONG AS YOU HAVE THOSE + I'VE BEEN COOPED UP TWO DAYS AND I'VE SPENT THE DAYLIGHT HOURS AS MUCH DAYLIGHT AS I COULD GET IN THAT RAT TRAP IN PUTTING THE THING INTO WORDS + YOU'RE WELCOME TO THEM YOU AND YOUR PUBLIC + THERE'S THE STORY OF THE VALLEY OF FEAR + THAT'S THE PAST MR. DOUGLAS SAID SHERLOCK HOLMES QUIETLY + WHAT WE DESIRE NOW IS TO HEAR YOUR STORY OF THE PRESENT + YOU'LL HAVE IT SIR SAID DOUGLAS + QUOTE MAY I SMOKE AS I TALK + WELL THANK YOU MR. HOLMES + YOU'RE A SMOKER YOURSELF IF I REMEMBER RIGHT AND YOU'LL GUESS WHAT IT IS TO BE SITTING FOR TWO DAYS WITH TOBACCO IN YOUR POCKET AND AFRAID THAT THE SMELL WILL GIVE YOU AWAY + HE LEANED AGAINST THE MANTELPIECE AND SUCKED AT THE CIGAR WHICH HOLMES HAD HANDED HIM + I'VE HEARD OF YOU MR. HOLMES + I NEVER GUESSED THAT I SHOULD MEET YOU + BUT BEFORE YOU ARE THROUGH WITH THAT HE NODDED AT MY PAPERS YOU WILL SAY I'VE BROUGHT YOU SOMETHING FRESH + INSPECTOR MACDONALD HAD BEEN STARING AT THE NEWCOMER WITH THE GREATEST AMAZEMENT + WELL THIS FAIRLY BEATS ME HE CRIED AT LAST + IF YOU ARE MR. JOHN DOUGLAS OF BIRLSTONE MANOR THEN WHOSE DEATH HAVE WE BEEN INVESTIGATING FOR THESE TWO DAYS AND WHERE IN THE WORLD HAVE YOU SPRUNG FROM NOW + YOU SEEMED TO ME TO COME OUT OF THE FLOOR LIKE A JACK IN A BOX QUOTE + AH MR. MAC SAID HOLMES SHAKING A REPROVING FOREFINGER YOU WOULD NOT READ THAT EXCELLENT LOCAL COMPILATION WHICH DESCRIBED THE CONCEALMENT OF KING CHARLES + PEOPLE DID NOT HIDE IN THOSE DAYS WITHOUT EXCELLENT HIDING PLACES AND THE HIDING PLACE THAT HAS ONCE BEEN USED MAY BE AGAIN + I HAD PERSUADED MYSELF THAT WE SHOULD FIND MR. DOUGLAS UNDER THIS ROOF + AND HOW LONG HAVE YOU BEEN PLAYING THIS TRICK UPON US MR. HOLMES SAID THE INSPECTOR ANGRILY + HOW LONG HAVE YOU ALLOWED US TO WASTE OURSELVES UPON A SEARCH THAT YOU KNEW TO BE AN ABSURD ONE + NOT ONE INSTANT MY DEAR MR. MAC + ONLY LAST NIGHT DID I FORM MY VIEWS OF THE CASE + AS THEY COULD NOT BE PUT TO THE PROOF UNTIL THIS EVENING I INVITED YOU AND YOUR COLLEAGUE TO TAKE A HOLIDAY FOR THE DAY + PRAY WHAT MORE COULD I DO + WHEN I FOUND THE SUIT OF CLOTHES IN THE MOAT IT AT ONCE BECAME APPARENT TO ME THAT THE BODY WE HAD FOUND COULD NOT HAVE BEEN THE BODY OF MR. JOHN DOUGLAS AT ALL BUT MUST BE THAT OF THE BICYCLIST FROM TUNBRIDGE WELLS + NO OTHER CONCLUSION WAS POSSIBLE + THEREFORE I HAD TO DETERMINE WHERE MR. JOHN DOUGLAS HIMSELF COULD BE AND THE BALANCE OF PROBABILITY WAS THAT WITH THE CONNIVANCE OF HIS WIFE AND HIS FRIEND HE WAS CONCEALED IN A HOUSE WHICH HAD SUCH CONVENIENCES FOR A FUGITIVE AND AWAITING QUIETER TIMES WHEN HE COULD MAKE HIS FINAL ESCAPE QUOTE + WELL YOU FIGURED IT OUT ABOUT RIGHT SAID DOUGLAS APPROVINGLY + I THOUGHT I'D DODGE YOUR BRITISH LAW FOR I WAS NOT SURE HOW I STOOD UNDER IT AND ALSO I SAW MY CHANCE TO THROW THESE HOUNDS ONCE FOR ALL OFF MY TRACK + MIND YOU FROM FIRST TO LAST I HAVE DONE NOTHING TO BE ASHAMED OF AND NOTHING THAT I WOULD NOT DO AGAIN BUT YOU'LL JUDGE THAT FOR YOURSELVES WHEN I TELL YOU MY STORY + NEVER MIND WARNING ME INSPECTOR I'M READY TO STAND PAT UPON THE TRUTH + I'M NOT GOING TO BEGIN AT THE BEGINNING + THAT'S ALL THERE HE INDICATED MY BUNDLE OF PAPERS AND A MIGHTY QUEER YARN YOU'LL FIND IT + IT ALL COMES DOWN TO THIS THAT THERE ARE SOME MEN THAT HAVE GOOD CAUSE TO HATE ME AND WOULD GIVE THEIR LAST DOLLAR TO KNOW THAT THEY HAD GOT ME + SO LONG AS I AM ALIVE AND THEY ARE ALIVE THERE IS NO SAFETY IN THIS WORLD FOR ME + THEY HUNTED ME FROM CHICAGO TO CALIFORNIA THEN THEY CHASED ME OUT OF AMERICA BUT WHEN I MARRIED AND SETTLED DOWN IN THIS QUIET SPOT I THOUGHT MY LAST YEARS WERE GOING TO BE PEACEABLE + I NEVER EXPLAINED TO MY WIFE HOW THINGS WERE + WHY SHOULD I PULL HER INTO IT + SHE WOULD NEVER HAVE A QUIET MOMENT AGAIN BUT WOULD ALWAYS BE IMAGINING TROUBLE + I FANCY SHE KNEW SOMETHING FOR I MAY HAVE DROPPED A WORD HERE OR A WORD THERE BUT UNTIL YESTERDAY AFTER YOU GENTLEMEN HAD SEEN HER SHE NEVER KNEW THE RIGHTS OF THE MATTER + SHE TOLD YOU ALL SHE KNEW AND SO DID BARKER HERE FOR ON THE NIGHT WHEN THIS THING HAPPENED THERE WAS MIGHTY LITTLE TIME FOR EXPLANATIONS + SHE KNOWS EVERYTHING NOW AND I WOULD HAVE BEEN A WISER MAN IF I HAD TOLD HER SOONER + BUT IT WAS A HARD QUESTION DEAR QUOTE HE TOOK HER HAND FOR AN INSTANT IN HIS OWN QUOTE AND I ACTED FOR THE BEST + WELL GENTLEMEN THE DAY BEFORE THESE HAPPENINGS I WAS OVER IN TUNBRIDGE WELLS AND I GOT A GLIMPSE OF A MAN IN THE STREET + IT WAS ONLY A GLIMPSE BUT I HAVE A QUICK EYE FOR THESE THINGS AND I NEVER DOUBTED WHO IT WAS + IT WAS THE WORST ENEMY I HAD AMONG THEM ALL ONE WHO HAS BEEN AFTER ME LIKE A HUNGRY WOLF AFTER A CARIBOU ALL THESE YEARS + I KNEW THERE WAS TROUBLE COMING AND I CAME HOME AND MADE READY FOR IT + I GUESSED I'D FIGHT THROUGH IT ALL RIGHT ON MY OWN MY LUCK WAS A PROVERB IN THE STATES ABOUT SEVENTY SIX + I NEVER DOUBTED THAT IT WOULD BE WITH ME STILL + I WAS ON MY GUARD ALL THAT NEXT DAY AND NEVER WENT OUT INTO THE PARK + IT'S AS WELL OR HE'D HAVE HAD THE DROP ON ME WITH THAT BUCKSHOT GUN OF HIS BEFORE EVER I COULD DRAW ON HIM + AFTER THE BRIDGE WAS UP MY MIND WAS ALWAYS MORE RESTFUL WHEN THAT BRIDGE WAS UP IN THE EVENINGS I PUT THE THING CLEAR OUT OF MY HEAD + I NEVER DREAMED OF HIS GETTING INTO THE HOUSE AND WAITING FOR ME + BUT WHEN I MADE MY ROUND IN MY DRESSING GOWN AS WAS MY HABIT I HAD NO SOONER ENTERED THE STUDY THAN I SCENTED DANGER + I GUESS WHEN A MAN HAS HAD DANGERS IN HIS LIFE AND I'VE HAD MORE THAN MOST IN MY TIME THERE IS A KIND OF SIXTH SENSE THAT WAVES THE RED FLAG + I SAW THE SIGNAL CLEAR ENOUGH AND YET I COULDN'T TELL YOU WHY + NEXT INSTANT I SPOTTED A BOOT UNDER THE WINDOW CURTAIN AND THEN I SAW WHY PLAIN ENOUGH + I'D JUST THE ONE CANDLE THAT WAS IN MY HAND BUT THERE WAS A GOOD LIGHT FROM THE HALL LAMP THROUGH THE OPEN DOOR + I PUT DOWN THE CANDLE AND JUMPED FOR A HAMMER THAT I'D LEFT ON THE MANTEL + AT THE SAME MOMENT HE SPRANG AT ME + I SAW THE GLINT OF A KNIFE AND I LASHED AT HIM WITH THE HAMMER + I GOT HIM SOMEWHERE FOR THE KNIFE TINKLED DOWN ON THE FLOOR + HE DODGED ROUND THE TABLE AS QUICK AS AN EEL AND A MOMENT LATER HE'D GOT HIS GUN FROM UNDER HIS COAT + I HEARD HIM COCK IT BUT I HAD GOT HOLD OF IT BEFORE HE COULD FIRE + I HAD IT BY THE BARREL AND WE WRESTLED FOR IT ALL ENDS UP FOR A MINUTE OR MORE + IT WAS DEATH TO THE MAN THAT LOST HIS GRIP + HE NEVER LOST HIS GRIP BUT HE GOT IT BUTT DOWNWARD FOR A MOMENT TOO LONG + MAYBE IT WAS I THAT PULLED THE TRIGGER + MAYBE WE JUST JOLTED IT OFF BETWEEN US + ANYHOW HE GOT BOTH BARRELS IN THE FACE AND THERE I WAS STARING DOWN AT ALL THAT WAS LEFT OF TED BALDWIN + I'D RECOGNIZED HIM IN THE TOWNSHIP AND AGAIN WHEN HE SPRANG FOR ME BUT HIS OWN MOTHER WOULDN'T RECOGNIZE HIM AS I SAW HIM THEN + I'M USED TO ROUGH WORK BUT I FAIRLY TURNED SICK AT THE SIGHT OF HIM + I WAS HANGING ON THE SIDE OF THE TABLE WHEN BARKER CAME HURRYING DOWN + I HEARD MY WIFE COMING AND I RAN TO THE DOOR AND STOPPED HER + IT WAS NO SIGHT FOR A WOMAN + I PROMISED I'D COME TO HER SOON + I SAID A WORD OR TWO TO BARKER HE TOOK IT ALL IN AT A GLANCE AND WE WAITED FOR THE REST TO COME ALONG + BUT THERE WAS NO SIGN OF THEM + THEN WE UNDERSTOOD THAT THEY COULD HEAR NOTHING AND THAT ALL THAT HAD HAPPENED WAS KNOWN ONLY TO OURSELVES + QUOTE IT WAS AT THAT INSTANT THAT THE IDEA CAME TO ME + I WAS FAIRLY DAZZLED BY THE BRILLIANCE OF IT + THE MAN'S SLEEVE HAD SLIPPED UP AND THERE WAS THE BRANDED MARK OF THE LODGE UPON HIS FOREARM + SEE HERE + THE MAN WHOM WE HAD KNOWN AS DOUGLAS TURNED UP HIS OWN COAT AND CUFF TO SHOW A BROWN TRIANGLE WITHIN A CIRCLE EXACTLY LIKE THAT WHICH WE HAD SEEN UPON THE DEAD MAN + IT WAS THE SIGHT OF THAT WHICH STARTED ME ON IT + I SEEMED TO SEE IT ALL CLEAR AT A GLANCE + THERE WERE HIS HEIGHT AND HAIR AND FIGURE ABOUT THE SAME AS MY OWN + NO ONE COULD SWEAR TO HIS FACE POOR DEVIL + I BROUGHT DOWN THIS SUIT OF CLOTHES AND IN A QUARTER OF AN HOUR BARKER AND I HAD PUT MY DRESSING GOWN ON HIM AND HE LAY AS YOU FOUND HIM + WE TIED ALL HIS THINGS INTO A BUNDLE AND I WEIGHTED THEM WITH THE ONLY WEIGHT I COULD FIND AND PUT THEM THROUGH THE WINDOW + THE CARD HE HAD MEANT TO LAY UPON MY BODY WAS LYING BESIDE HIS OWN + MY RINGS WERE PUT ON HIS FINGER BUT WHEN IT CAME TO THE WEDDING RING HE HELD OUT HIS MUSCULAR HAND YOU CAN SEE FOR YOURSELVES THAT I HAD STRUCK THE LIMIT + I HAVE NOT MOVED IT SINCE THE DAY I WAS MARRIED AND IT WOULD HAVE TAKEN A FILE TO GET IT OFF + I DON'T KNOW ANYHOW THAT I SHOULD HAVE CARED TO PART WITH IT BUT IF I HAD WANTED TO I COULDN'T + SO WE JUST HAD TO LEAVE THAT DETAIL TO TAKE CARE OF ITSELF + ON THE OTHER HAND I BROUGHT A BIT OF PLASTER DOWN AND PUT IT WHERE I AM WEARING ONE MYSELF AT THIS INSTANT + YOU SLIPPED UP THERE MR. HOLMES CLEVER AS YOU ARE FOR IF YOU HAD CHANCED TO TAKE OFF THAT PLASTER YOU WOULD HAVE FOUND NO CUT UNDERNEATH IT + WELL THAT WAS THE SITUATION + IF I COULD LIE LOW FOR A WHILE AND THEN GET AWAY WHERE I COULD BE JOINED BY MY WIDOW WE SHOULD HAVE A CHANCE AT LAST OF LIVING IN PEACE FOR THE REST OF OUR LIVES + THESE DEVILS WOULD GIVE ME NO REST SO LONG AS I WAS ABOVE GROUND BUT IF THEY SAW IN THE PAPERS THAT BALDWIN HAD GOT HIS MAN THERE WOULD BE AN END OF ALL MY TROUBLES + I HADN'T MUCH TIME TO MAKE IT ALL CLEAR TO BARKER AND TO MY WIFE BUT THEY UNDERSTOOD ENOUGH TO BE ABLE TO HELP ME + I KNEW ALL ABOUT THIS HIDING PLACE SO DID AMES BUT IT NEVER ENTERED HIS HEAD TO CONNECT IT WITH THE MATTER + I RETIRED INTO IT AND IT WAS UP TO BARKER TO DO THE REST + I GUESS YOU CAN FILL IN FOR YOURSELVES WHAT HE DID + HE OPENED THE WINDOW AND MADE THE MARK ON THE SILL TO GIVE AN IDEA OF HOW THE MURDERER ESCAPED + IT WAS A TALL ORDER THAT BUT AS THE BRIDGE WAS UP THERE WAS NO OTHER WAY + THEN WHEN EVERYTHING WAS FIXED HE RANG THE BELL FOR ALL HE WAS WORTH + WHAT HAPPENED AFTERWARD YOU KNOW + AND SO GENTLEMEN YOU CAN DO WHAT YOU PLEASE BUT I'VE TOLD YOU THE TRUTH AND THE WHOLE TRUTH SO HELP ME GOD + WHAT I ASK YOU NOW IS HOW DO I STAND BY THE ENGLISH LAW QUOTE + THERE WAS A SILENCE WHICH WAS BROKEN BY SHERLOCK HOLMES + THE ENGLISH LAW IS IN THE MAIN A JUST LAW + YOU WILL GET NO WORSE THAN YOUR DESERTS FROM THAT MR. DOUGLAS + BUT I WOULD ASK YOU HOW DID THIS MAN KNOW THAT YOU LIVED HERE OR HOW TO GET INTO YOUR HOUSE OR WHERE TO HIDE TO GET YOU + I KNOW NOTHING OF THIS + HOLMES'S FACE WAS VERY WHITE AND GRAVE + THE STORY IS NOT OVER YET I FEAR SAID HE + YOU MAY FIND WORSE DANGERS THAN THE ENGLISH LAW OR EVEN THAN YOUR ENEMIES FROM AMERICA + I SEE TROUBLE BEFORE YOU MR. DOUGLAS + YOU'LL TAKE MY ADVICE AND STILL BE ON YOUR GUARD QUOTE + AND NOW MY LONG SUFFERING READERS I WILL ASK YOU TO COME AWAY WITH ME FOR A TIME FAR FROM THE SUSSEX MANOR HOUSE OF BIRLSTONE AND FAR ALSO FROM THE YEAR OF GRACE IN WHICH WE MADE OUR EVENTFUL JOURNEY WHICH ENDED WITH THE STRANGE STORY OF THE MAN WHO HAD BEEN KNOWN AS JOHN DOUGLAS + I WISH YOU TO JOURNEY BACK SOME TWENTY YEARS IN TIME AND WESTWARD SOME THOUSANDS OF MILES IN SPACE THAT I MAY LAY BEFORE YOU A SINGULAR AND TERRIBLE NARRATIVE SO SINGULAR AND SO TERRIBLE THAT YOU MAY FIND IT HARD TO BELIEVE THAT EVEN AS I TELL IT EVEN SO DID IT OCCUR + DO NOT THINK THAT I INTRUDE ONE STORY BEFORE ANOTHER IS FINISHED + AS YOU READ ON YOU WILL FIND THAT THIS IS NOT SO + AND WHEN I HAVE DETAILED THOSE DISTANT EVENTS AND YOU HAVE SOLVED THIS MYSTERY OF THE PAST WE SHALL MEET ONCE MORE IN THOSE ROOMS ON BAKER STREET WHERE THIS LIKE SO MANY OTHER WONDERFUL HAPPENINGS WILL FIND ITS END + PART TWO THE SCOWRERS CHAPTER ONE THE MAN + IT WAS THE FOURTH OF FEBRUARY IN THE YEAR ONE THOUSAND EIGHT HUNDRED SEVENTY FIVE + IT HAD BEEN A SEVERE WINTER AND THE SNOW LAY DEEP IN THE GORGES OF THE GILMERTON MOUNTAINS + THE STEAM PLOUGHS HAD HOWEVER KEPT THE RAILROAD OPEN AND THE EVENING TRAIN WHICH CONNECTS THE LONG LINE OF COAL MINING AND IRON WORKING SETTLEMENTS WAS SLOWLY GROANING ITS WAY UP THE STEEP GRADIENTS WHICH LEAD FROM STAGVILLE ON THE PLAIN TO VERMISSA THE CENTRAL TOWNSHIP WHICH LIES AT THE HEAD OF VERMISSA VALLEY + FROM THIS POINT THE TRACK SWEEPS DOWNWARD TO BARTONS CROSSING HELMDALE AND THE PURELY AGRICULTURAL COUNTY OF MERTON + IT WAS A SINGLE TRACK RAILROAD BUT AT EVERY SIDING AND THEY WERE NUMEROUS LONG LINES OF TRUCKS PILED WITH COAL AND IRON ORE TOLD OF THE HIDDEN WEALTH WHICH HAD BROUGHT A RUDE POPULATION AND A BUSTLING LIFE TO THIS MOST DESOLATE CORNER OF THE UNITED STATES OF AMERICA + FOR DESOLATE IT WAS + LITTLE COULD THE FIRST PIONEER WHO HAD TRAVERSED IT HAVE EVER IMAGINED THAT THE FAIREST PRAIRIES AND THE MOST LUSH WATER PASTURES WERE VALUELESS COMPARED TO THIS GLOOMY LAND OF BLACK CRAG AND TANGLED FOREST + ABOVE THE DARK AND OFTEN SCARCELY PENETRABLE WOODS UPON THEIR FLANKS THE HIGH BARE CROWNS OF THE MOUNTAINS WHITE SNOW AND JAGGED ROCK TOWERED UPON EACH FLANK LEAVING A LONG WINDING TORTUOUS VALLEY IN THE CENTRE + UP THIS THE LITTLE TRAIN WAS SLOWLY CRAWLING + THE OIL LAMPS HAD JUST BEEN LIT IN THE LEADING PASSENGER CAR A LONG BARE CARRIAGE IN WHICH SOME TWENTY OR THIRTY PEOPLE WERE SEATED + THE GREATER NUMBER OF THESE WERE WORKMEN RETURNING FROM THEIR DAY'S TOIL IN THE LOWER PART OF THE VALLEY + AT LEAST A DOZEN BY THEIR GRIMED FACES AND THE SAFETY LANTERNS WHICH THEY CARRIED PROCLAIMED THEMSELVES MINERS + THESE SAT SMOKING IN A GROUP AND CONVERSED IN LOW VOICES GLANCING OCCASIONALLY AT TWO MEN ON THE OPPOSITE SIDE OF THE CAR WHOSE UNIFORMS AND BADGES SHOWED THEM TO BE POLICEMEN + SEVERAL WOMEN OF THE LABOURING CLASS AND ONE OR TWO TRAVELLERS WHO MIGHT HAVE BEEN SMALL LOCAL STOREKEEPERS MADE UP THE REST OF THE COMPANY WITH THE EXCEPTION OF ONE YOUNG MAN IN A CORNER BY HIMSELF + IT IS WITH THIS MAN THAT WE ARE CONCERNED + TAKE A GOOD LOOK AT HIM FOR HE IS WORTH IT + HE IS A FRESH COMPLEXIONED MIDDLE SIZED YOUNG MAN NOT FAR ONE WOULD GUESS FROM HIS THIRTIETH YEAR + HE HAS LARGE SHREWD HUMOROUS GRAY EYES WHICH TWINKLE INQUIRINGLY FROM TIME TO TIME AS HE LOOKS ROUND THROUGH HIS SPECTACLES AT THE PEOPLE ABOUT HIM + IT IS EASY TO SEE THAT HE IS OF A SOCIABLE AND POSSIBLY SIMPLE DISPOSITION ANXIOUS TO BE FRIENDLY TO ALL MEN + ANYONE COULD PICK HIM AT ONCE AS GREGARIOUS IN HIS HABITS AND COMMUNICATIVE IN HIS NATURE WITH A QUICK WIT AND A READY SMILE + AND YET THE MAN WHO STUDIED HIM MORE CLOSELY MIGHT DISCERN A CERTAIN FIRMNESS OF JAW AND GRIM TIGHTNESS ABOUT THE LIPS WHICH WOULD WARN HIM THAT THERE WERE DEPTHS BEYOND AND THAT THIS PLEASANT BROWN HAIRED YOUNG IRISHMAN MIGHT CONCEIVABLY LEAVE HIS MARK FOR GOOD OR EVIL UPON ANY SOCIETY TO WHICH HE WAS INTRODUCED + HAVING MADE ONE OR TWO TENTATIVE REMARKS TO THE NEAREST MINER AND RECEIVING ONLY SHORT GRUFF REPLIES THE TRAVELLER RESIGNED HIMSELF TO UNCONGENIAL SILENCE STARING MOODILY OUT OF THE WINDOW AT THE FADING LANDSCAPE + IT WAS NOT A CHEERING PROSPECT + THROUGH THE GROWING GLOOM THERE PULSED THE RED GLOW OF THE FURNACES ON THE SIDES OF THE HILLS + GREAT HEAPS OF SLAG AND DUMPS OF CINDERS LOOMED UP ON EACH SIDE WITH THE HIGH SHAFTS OF THE COLLIERIES TOWERING ABOVE THEM + HUDDLED GROUPS OF MEAN WOODEN HOUSES THE WINDOWS OF WHICH WERE BEGINNING TO OUTLINE THEMSELVES IN LIGHT WERE SCATTERED HERE AND THERE ALONG THE LINE AND THE FREQUENT HALTING PLACES WERE CROWDED WITH THEIR SWARTHY INHABITANTS + THE IRON AND COAL VALLEYS OF THE VERMISSA DISTRICT WERE NO RESORTS FOR THE LEISURED OR THE CULTURED + EVERYWHERE THERE WERE STERN SIGNS OF THE CRUDEST BATTLE OF LIFE THE RUDE WORK TO BE DONE AND THE RUDE STRONG WORKERS WHO DID IT + THE YOUNG TRAVELLER GAZED OUT INTO THIS DISMAL COUNTRY WITH A FACE OF MINGLED REPULSION AND INTEREST WHICH SHOWED THAT THE SCENE WAS NEW TO HIM + AT INTERVALS HE DREW FROM HIS POCKET A BULKY LETTER TO WHICH HE REFERRED AND ON THE MARGINS OF WHICH HE SCRIBBLED SOME NOTES + ONCE FROM THE BACK OF HIS WAIST HE PRODUCED SOMETHING WHICH ONE WOULD HARDLY HAVE EXPECTED TO FIND IN THE POSSESSION OF SO MILD MANNERED A MAN + IT WAS A NAVY REVOLVER OF THE LARGEST SIZE + AS HE TURNED IT SLANTWISE TO THE LIGHT THE GLINT UPON THE RIMS OF THE COPPER SHELLS WITHIN THE DRUM SHOWED THAT IT WAS FULLY LOADED + HE QUICKLY RESTORED IT TO HIS SECRET POCKET BUT NOT BEFORE IT HAD BEEN OBSERVED BY A WORKING MAN WHO HAD SEATED HIMSELF UPON THE ADJOINING BENCH + HULLO MATE SAID HE + YOU SEEM HEELED AND READY + THE YOUNG MAN SMILED WITH AN AIR OF EMBARRASSMENT + YES SAID HE WE NEED THEM SOMETIMES IN THE PLACE I COME FROM + AND WHERE MAY THAT BE + I'M LAST FROM CHICAGO + QUOTE A STRANGER IN THESE PARTS QUOTE + YES + YOU MAY FIND YOU NEED IT HERE SAID THE WORKMAN + AH IS THAT SO + THE YOUNG MAN SEEMED INTERESTED + HAVE YOU HEARD NOTHING OF DOINGS HEREABOUTS + NOTHING OUT OF THE WAY + QUOTE WHY I THOUGHT THE COUNTRY WAS FULL OF IT + YOU'LL HEAR QUICK ENOUGH + WHAT MADE YOU COME HERE + I HEARD THERE WAS ALWAYS WORK FOR A WILLING MAN + ARE YOU A MEMBER OF THE UNION + SURE + THEN YOU'LL GET YOUR JOB I GUESS + HAVE YOU ANY FRIENDS QUOTE + NOT YET BUT I HAVE THE MEANS OF MAKING THEM + HOW'S THAT THEN + I AM ONE OF THE EMINENT ORDER OF FREEMEN + THERE'S NO TOWN WITHOUT A LODGE AND WHERE THERE IS A LODGE I'LL FIND MY FRIENDS + THE REMARK HAD A SINGULAR EFFECT UPON HIS COMPANION + HE GLANCED ROUND SUSPICIOUSLY AT THE OTHERS IN THE CAR + THE MINERS WERE STILL WHISPERING AMONG THEMSELVES + THE TWO POLICE OFFICERS WERE DOZING + HE CAME ACROSS SEATED HIMSELF CLOSE TO THE YOUNG TRAVELLER AND HELD OUT HIS HAND + PUT IT THERE HE SAID + A HAND GRIP PASSED BETWEEN THE TWO + QUOTE I SEE YOU SPEAK THE TRUTH QUOTE SAID THE WORKMAN + BUT IT'S WELL TO MAKE CERTAIN + HE RAISED HIS RIGHT HAND TO HIS RIGHT EYEBROW + THE TRAVELLER AT ONCE RAISED HIS LEFT HAND TO HIS LEFT EYEBROW + DARK NIGHTS ARE UNPLEASANT SAID THE WORKMAN + YES FOR STRANGERS TO TRAVEL THE OTHER ANSWERED + THAT'S GOOD ENOUGH + I'M BROTHER SCANLAN LODGE THREE HUNDRED FORTY ONE VERMISSA VALLEY + GLAD TO SEE YOU IN THESE PARTS + QUOTE THANK YOU + I'M BROTHER JOHN MCMURDO LODGE TWENTY NINE CHICAGO + BODYMASTER J. H. SCOTT + BUT I AM IN LUCK TO MEET A BROTHER SO EARLY + WELL THERE ARE PLENTY OF US ABOUT + YOU WON'T FIND THE ORDER MORE FLOURISHING ANYWHERE IN THE STATES THAN RIGHT HERE IN VERMISSA VALLEY + BUT WE COULD DO WITH SOME LADS LIKE YOU + I CAN'T UNDERSTAND A SPRY MAN OF THE UNION FINDING NO WORK TO DO IN CHICAGO + I FOUND PLENTY OF WORK TO DO SAID MCMURDO + THEN WHY DID YOU LEAVE + MCMURDO NODDED TOWARDS THE POLICEMEN AND SMILED + QUOTE I GUESS THOSE CHAPS WOULD BE GLAD TO KNOW QUOTE HE SAID + SCANLAN GROANED SYMPATHETICALLY + IN TROUBLE HE ASKED IN A WHISPER + DEEP + A PENITENTIARY JOB + AND THE REST + NOT A KILLING + QUOTE IT'S EARLY DAYS TO TALK OF SUCH THINGS QUOTE SAID MCMURDO WITH THE AIR OF A MAN WHO HAD BEEN SURPRISED INTO SAYING MORE THAN HE INTENDED + I'VE MY OWN GOOD REASONS FOR LEAVING CHICAGO AND LET THAT BE ENOUGH FOR YOU + WHO ARE YOU THAT YOU SHOULD TAKE IT ON YOURSELF TO ASK SUCH THINGS + HIS GRAY EYES GLEAMED WITH SUDDEN AND DANGEROUS ANGER FROM BEHIND HIS GLASSES + ALL RIGHT MATE NO OFFENSE MEANT + THE BOYS WILL THINK NONE THE WORSE OF YOU WHATEVER YOU MAY HAVE DONE + WHERE ARE YOU BOUND FOR NOW + VERMISSA + QUOTE THAT'S THE THIRD HALT DOWN THE LINE + WHERE ARE YOU STAYING + MCMURDO TOOK OUT AN ENVELOPE AND HELD IT CLOSE TO THE MURKY OIL LAMP + HERE IS THE ADDRESS JACOB SHAFTER SHERIDAN STREET + IT'S A BOARDING HOUSE THAT WAS RECOMMENDED BY A MAN I KNEW IN CHICAGO + WELL I DON'T KNOW IT BUT VERMISSA IS OUT OF MY BEAT + I LIVE AT HOBSON'S PATCH AND THAT'S HERE WHERE WE ARE DRAWING UP + BUT SAY THERE'S ONE BIT OF ADVICE I'LL GIVE YOU BEFORE WE PART IF YOU'RE IN TROUBLE IN VERMISSA GO STRAIGHT TO THE UNION HOUSE AND SEE BOSS MCGINTY + HE IS THE BODYMASTER OF VERMISSA LODGE AND NOTHING CAN HAPPEN IN THESE PARTS UNLESS BLACK JACK MCGINTY WANTS IT + SO LONG MATE + MAYBE WE'LL MEET IN LODGE ONE OF THESE EVENINGS + BUT MIND MY WORDS IF YOU ARE IN TROUBLE GO TO BOSS MCGINTY + SCANLAN DESCENDED AND MCMURDO WAS LEFT ONCE AGAIN TO HIS THOUGHTS + NIGHT HAD NOW FALLEN AND THE FLAMES OF THE FREQUENT FURNACES WERE ROARING AND LEAPING IN THE DARKNESS + AGAINST THEIR LURID BACKGROUND DARK FIGURES WERE BENDING AND STRAINING TWISTING AND TURNING WITH THE MOTION OF WINCH OR OF WINDLASS TO THE RHYTHM OF AN ETERNAL CLANK AND ROAR + QUOTE I GUESS HELL MUST LOOK SOMETHING LIKE THAT QUOTE SAID A VOICE + MCMURDO TURNED AND SAW THAT ONE OF THE POLICEMEN HAD SHIFTED IN HIS SEAT AND WAS STARING OUT INTO THE FIERY WASTE + FOR THAT MATTER SAID THE OTHER POLICEMAN I ALLOW THAT HELL MUST BE SOMETHING LIKE THAT + IF THERE ARE WORSE DEVILS DOWN YONDER THAN SOME WE COULD NAME IT'S MORE THAN I'D EXPECT + I GUESS YOU ARE NEW TO THIS PART YOUNG MAN + WELL WHAT IF I AM + MCMURDO ANSWERED IN A SURLY VOICE + JUST THIS MISTER THAT I SHOULD ADVISE YOU TO BE CAREFUL IN CHOOSING YOUR FRIENDS + I DON'T THINK I'D BEGIN WITH MIKE SCANLAN OR HIS GANG IF I WERE YOU + QUOTE WHAT THE HELL IS IT TO YOU WHO ARE MY FRIENDS QUOTE ROARED MCMURDO IN A VOICE WHICH BROUGHT EVERY HEAD IN THE CARRIAGE ROUND TO WITNESS THE ALTERCATION + DID I ASK YOU FOR YOUR ADVICE OR DID YOU THINK ME SUCH A SUCKER THAT I COULDN'T MOVE WITHOUT IT + YOU SPEAK WHEN YOU ARE SPOKEN TO AND BY THE LORD YOU'D HAVE TO WAIT A LONG TIME IF IT WAS ME + HE THRUST OUT HIS FACE AND GRINNED AT THE PATROLMEN LIKE A SNARLING DOG + THE TWO POLICEMEN HEAVY GOOD NATURED MEN WERE TAKEN ABACK BY THE EXTRAORDINARY VEHEMENCE WITH WHICH THEIR FRIENDLY ADVANCES HAD BEEN REJECTED + NO OFFENSE STRANGER SAID ONE + IT WAS A WARNING FOR YOUR OWN GOOD SEEING THAT YOU ARE BY YOUR OWN SHOWING NEW TO THE PLACE + I'M NEW TO THE PLACE BUT I'M NOT NEW TO YOU AND YOUR KIND CRIED MCMURDO IN COLD FURY + QUOTE I GUESS YOU'RE THE SAME IN ALL PLACES SHOVING YOUR ADVICE IN WHEN NOBODY ASKS FOR IT QUOTE + MAYBE WE'LL SEE MORE OF YOU BEFORE VERY LONG SAID ONE OF THE PATROLMEN WITH A GRIN + YOU'RE A REAL HAND PICKED ONE IF I AM A JUDGE + I WAS THINKING THE SAME REMARKED THE OTHER + I GUESS WE MAY MEET AGAIN + I'M NOT AFRAID OF YOU AND DON'T YOU THINK IT CRIED MCMURDO + QUOTE MY NAME'S JACK MCMURDO SEE + IF YOU WANT ME YOU'LL FIND ME AT JACOB SHAFTER'S ON SHERIDAN STREET VERMISSA SO I'M NOT HIDING FROM YOU AM L. + DAY OR NIGHT I DARE TO LOOK THE LIKE OF YOU IN THE FACE DON'T MAKE ANY MISTAKE ABOUT THAT + THERE WAS A MURMUR OF SYMPATHY AND ADMIRATION FROM THE MINERS AT THE DAUNTLESS DEMEANOUR OF THE NEWCOMER WHILE THE TWO POLICEMEN SHRUGGED THEIR SHOULDERS AND RENEWED A CONVERSATION BETWEEN THEMSELVES + A FEW MINUTES LATER THE TRAIN RAN INTO THE ILL LIT STATION AND THERE WAS A GENERAL CLEARING FOR VERMISSA WAS BY FAR THE LARGEST TOWN ON THE LINE + MCMURDO PICKED UP HIS LEATHER GRIPSACK AND WAS ABOUT TO START OFF INTO THE DARKNESS WHEN ONE OF THE MINERS ACCOSTED HIM + BY GAR MATE YOU KNOW HOW TO SPEAK TO THE COPS HE SAID IN A VOICE OF AWE + IT WAS GRAND TO HEAR YOU + LET ME CARRY YOUR GRIP AND SHOW YOU THE ROAD + I'M PASSING SHAFTER'S ON THE WAY TO MY OWN SHACK + THERE WAS A CHORUS OF FRIENDLY GOOD NIGHTS FROM THE OTHER MINERS AS THEY PASSED FROM THE PLATFORM + BEFORE EVER HE HAD SET FOOT IN IT MCMURDO THE TURBULENT HAD BECOME A CHARACTER IN VERMISSA + THE COUNTRY HAD BEEN A PLACE OF TERROR BUT THE TOWN WAS IN ITS WAY EVEN MORE DEPRESSING + DOWN THAT LONG VALLEY THERE WAS AT LEAST A CERTAIN GLOOMY GRANDEUR IN THE HUGE FIRES AND TBE CLOUDS OF DRIFTING SMOKE WHILE THE STRENGTH AND INDUSTRY OF MAN FOUND FITTING MONUMENTS IN THE HILLS WHICH HE HAD SPILLED BY THE SIDE OF HIS MONSTROUS EXCAVATIONS + BUT THE TOWN SHOWED A DEAD LEVEL OF MEAN UGLINESS AND SQUALOR + THE BROAD STREET WAS CHURNED UP BY THE TRAFFIC INTO A HORRIBLE RUTTED PASTE OF MUDDY SNOW + THE SIDEWALKS WERE NARROW AND UNEVEN + THE NUMEROUS GAS LAMPS SERVED ONLY TO SHOW MORE CLEARLY A LONG LINE OF WOODEN HOUSES EACH WITH ITS VERANDA FACING THE STREET UNKEMPT AND DIRTY + AS THEY APPROACHED THE CENTRE OF THE TOWN THE SCENE WAS BRIGHTENED BY A ROW OF WELL LIT STORES AND EVEN MORE BY A CLUSTER OF SALOONS AND GAMING HOUSES IN WHICH THE MINERS SPENT THEIR HARD EARNED BUT GENEROUS WAGES + QUOTE THAT'S THE UNION HOUSE QUOTE SAID THE GUIDE POINTING TO ONE SALOON WHICH ROSE ALMOST TO THE DIGNITY OF BEING A HOTEL + JACK MCGINTY IS THE BOSS THERE + WHAT SORT OF A MAN IS HE + MCMURDO ASKED + WHAT HAVE YOU NEVER HEARD OF THE BOSS + HOW COULD I HAVE HEARD OF HIM WHEN YOU KNOW THAT I AM A STRANGER IN THESE PARTS + WELL I THOUGHT HIS NAME WAS KNOWN CLEAR ACROSS THE COUNTRY + IT'S BEEN IN THE PAPERS OFTEN ENOUGH QUOTE + WHAT FOR + WELL THE MINER LOWERED HIS VOICE OVER THE AFFAIRS + WHAT AFFAIRS + GOOD LORD MISTER YOU ARE QUEER IF I MUST SAY IT WITHOUT OFFENSE + THERE'S ONLY ONE SET OF AFFAIRS THAT YOU'LL HEAR OF IN THESE PARTS AND THAT'S THE AFFAIRS OF THE SCOWRERS + QUOTE WHY I SEEM TO HAVE READ OF THE SCOWRERS IN CHICAGO + A GANG OF MURDERERS ARE THEY NOT + HUSH ON YOUR LIFE CRIED THE MINER STANDING STILL IN ALARM AND GAZING IN AMAZEMENT AT HIS COMPANION + MAN YOU WON'T LIVE LONG IN THESE PARTS IF YOU SPEAK IN THE OPEN STREET LIKE THAT + MANY A MAN HAS HAD THE LIFE BEATEN OUT OF HIM FOR LESS + WELL I KNOW NOTHING ABOUT THEM + IT'S ONLY WHAT I HAVE READ QUOTE + AND I'M NOT SAYING THAT YOU HAVE NOT READ THE TRUTH + THE MAN LOOKED NERVOUSLY ROUND HIM AS HE SPOKE PEERING INTO THE SHADOWS AS IF HE FEARED TO SEE SOME LURKING DANGER + IF KILLING IS MURDER THEN GOD KNOWS THERE IS MURDER AND TO SPARE + BUT DON'T YOU DARE TO BREATHE THE NAME OF JACK MCGINTY IN CONNECTION WITH IT STRANGER FOR EVERY WHISPER GOES BACK TO HIM AND HE IS NOT ONE THAT IS LIKELY TO LET IT PASS + NOW THAT'S THE HOUSE YOU'RE AFTER THAT ONE STANDING BACK FROM THE STREET + YOU'LL FIND OLD JACOB SHAFTER THAT RUNS IT AS HONEST A MAN AS LIVES IN THIS TOWNSHIP + I THANK YOU SAID MCMURDO AND SHAKING HANDS WITH HIS NEW ACQUAINTANCE HE PLODDED GRIPSACK IN HAND UP THE PATH WHICH LED TO THE DWELLING HOUSE AT THE DOOR OF WHICH HE GAVE A RESOUNDING KNOCK + IT WAS OPENED AT ONCE BY SOMEONE VERY DIFFERENT FROM WHAT HE HAD EXPECTED + IT WAS A WOMAN YOUNG AND SINGULARLY BEAUTIFUL + SHE WAS OF THE GERMAN TYPE BLONDE AND FAIR HAIRED WITH THE PIQUANT CONTRAST OF A PAIR OF BEAUTIFUL DARK EYES WITH WHICH SHE SURVEYED THE STRANGER WITH SURPRISE AND A PLEASING EMBARRASSMENT WHICH BROUGHT A WAVE OF COLOUR OVER HER PALE FACE + FRAMED IN THE BRIGHT LIGHT OF THE OPEN DOORWAY IT SEEMED TO MCMURDO THAT HE HAD NEVER SEEN A MORE BEAUTIFUL PICTURE THE MORE ATTRACTIVE FOR ITS CONTRAST WITH THE SORDID AND GLOOMY SURROUNDINGS + A LOVELY VIOLET GROWING UPON ONE OF THOSE BLACK SLAG HEAPS OF THE MINES WOULD NOT HAVE SEEMED MORE SURPRISING + SO ENTRANCED WAS HE THAT HE STOOD STARING WITHOUT A WORD AND IT WAS SHE WHO BROKE THE SILENCE + I THOUGHT IT WAS FATHER SAID SHE WITH A PLEASING LITTLE TOUCH OF A GERMAN ACCENT + QUOTE DID YOU COME TO SEE HIM + HE IS DOWNTOWN + I EXPECT HIM BACK EVERY MINUTE + MCMURDO CONTINUED TO GAZE AT HER IN OPEN ADMIRATION UNTIL HER EYES DROPPED IN CONFUSION BEFORE THIS MASTERFUL VISITOR + NO MISS HE SAID AT LAST I'M IN NO HURRY TO SEE HIM + BUT YOUR HOUSE WAS RECOMMENDED TO ME FOR BOARD + I THOUGHT IT MIGHT SUIT ME AND NOW I KNOW IT WILL + YOU ARE QUICK TO MAKE UP YOUR MIND SAID SHE WITH A SMILE + ANYONE BUT A BLIND MAN COULD DO AS MUCH THE OTHER ANSWERED + SHE LAUGHED AT THE COMPLIMENT + QUOTE COME RIGHT IN SIR QUOTE SHE SAID + I'M MISS ETTIE SHAFTER MR. SHAFTER'S DAUGHTER + MY MOTHER'S DEAD AND I RUN THE HOUSE + YOU CAN SIT DOWN BY THE STOVE IN THE FRONT ROOM UNTIL FATHER COMES ALONG AH HERE HE IS + SO YOU CAN FIX THINGS WITH HIM RIGHT AWAY + A HEAVY ELDERLY MAN CAME PLODDING UP THE PATH + IN A FEW WORDS MCMURDO EXPLAINED HIS BUSINESS + A MAN OF THE NAME OF MURPHY HAD GIVEN HIM THE ADDRESS IN CHICAGO + HE IN TURN HAD HAD IT FROM SOMEONE ELSE + OLD SHAFTER WAS QUITE READY + THE STRANGER MADE NO BONES ABOUT TERMS AGREED AT ONCE TO EVERY CONDITION AND WAS APPARENTLY FAIRLY FLUSH OF MONEY + FOR SEVEN DOLLARS A WEEK PAID IN ADVANCE HE WAS TO HAVE BOARD AND LODGING + SO IT WAS THAT MCMURDO THE SELF CONFESSED FUGITIVE FROM JUSTICE TOOK UP HIS ABODE UNDER THE ROOF OF THE SHAFTERS THE FIRST STEP WHICH WAS TO LEAD TO SO LONG AND DARK A TRAIN OF EVENTS ENDING IN A FAR DISTANT LAND + CHAPTER TWO THE BODYMASTER + MCMURDO WAS A MAN WHO MADE HIS MARK QUICKLY + WHEREVER HE WAS THE FOLK AROUND SOON KNEW IT + WITHIN A WEEK HE HAD BECOME INFINITELY THE MOST IMPORTANT PERSON AT SHAFTER'S + THERE WERE TEN OR A DOZEN BOARDERS THERE BUT THEY WERE HONEST FOREMEN OR COMMONPLACE CLERKS FROM THE STORES OF A VERY DIFFERENT CALIBRE FROM THE YOUNG IRISHMAN + OF AN EVENING WHEN THEY GATHERED TOGETHER HIS JOKE WAS ALWAYS THE READIEST HIS CONVERSATION THE BRIGHTEST AND HIS SONG THE BEST + HE WAS A BORN BOON COMPANION WITH A MAGNETISM WHICH DREW GOOD HUMOUR FROM ALL AROUND HIM + AND YET HE SHOWED AGAIN AND AGAIN AS HE HAD SHOWN IN THE RAILWAY CARRIAGE A CAPACITY FOR SUDDEN FIERCE ANGER WHICH COMPELLED THE RESPECT AND EVEN THE FEAR OF THOSE WHO MET HIM + FOR THE LAW TOO AND ALL WHO WERE CONNECTED WITH IT HE EXHIBITED A BITTER CONTEMPT WHICH DELIGHTED SOME AND ALARMED OTHERS OF HIS FELLOW BOARDERS + FROM THE FIRST HE MADE IT EVIDENT BY HIS OPEN ADMIRATION THAT THE DAUGHTER OF THE HOUSE HAD WON HIS HEART FROM THE INSTANT THAT HE HAD SET EYES UPON HER BEAUTY AND HER GRACE + HE WAS NO BACKWARD SUITOR + ON THE SECOND DAY HE TOLD HER THAT HE LOVED HER AND FROM THEN ONWARD HE REPEATED THE SAME STORY WITH AN ABSOLUTE DISREGARD OF WHAT SHE MIGHT SAY TO DISCOURAGE HIM + SOMEONE ELSE HE WOULD CRY + WELL THE WORSE LUCK FOR SOMEONE ELSE + LET HIM LOOK OUT FOR HIMSELF + AM I TO LOSE MY LIFE'S CHANCE AND ALL MY HEART'S DESIRE FOR SOMEONE ELSE + YOU CAN KEEP ON SAYING NO ETTIE THE DAY WILL COME WHEN YOU WILL SAY YES AND I'M YOUNG ENOUGH TO WAIT + HE WAS A DANGEROUS SUITOR WITH HIS GLIB IRISH TONGUE AND HIS PRETTY COAXING WAYS + THERE WAS ABOUT HIM ALSO THAT GLAMOUR OF EXPERIENCE AND OF MYSTERY WHICH ATTRACTS A WOMAN'S INTEREST AND FINALLY HER LOVE + HE COULD TALK OF THE SWEET VALLEYS OF COUNTY MONAGHAN FROM WHICH HE CAME OF THE LOVELY DISTANT ISLAND THE LOW HILLS AND GREEN MEADOWS OF WHICH SEEMED THE MORE BEAUTIFUL WHEN IMAGINATION VIEWED THEM FROM THIS PLACE OF GRIME AND SNOW + THEN HE WAS VERSED IN THE LIFE OF THE CITIES OF THE NORTH OF DETROIT AND THE LUMBER CAMPS OF MICHIGAN AND FINALLY OF CHICAGO WHERE HE HAD WORKED IN A PLANING MILL + AND AFTERWARDS CAME THE HINT OF ROMANCE THE FEELING THAT STRANGE THINGS HAD HAPPENED TO HIM IN THAT GREAT CITY SO STRANGE AND SO INTIMATE THAT THEY MIGHT NOT BE SPOKEN OF + HE SPOKE WISTFULLY OF A SUDDEN LEAVING A BREAKING OF OLD TIES A FLIGHT INTO A STRANGE WORLD ENDING IN THIS DREARY VALLEY AND ETTIE LISTENED HER DARK EYES GLEAMING WITH PITY AND WITH SYMPATHY THOSE TWO QUALITIES WHICH MAY TURN SO RAPIDLY AND SO NATURALLY TO LOVE + MCMURDO HAD OBTAINED A TEMPORARY JOB AS BOOKKEEPER FOR HE WAS A WELL EDUCATED MAN + THIS KEPT HIM OUT MOST OF THE DAY AND HE HAD NOT FOUND OCCASION YET TO REPORT HIMSELF TO THE HEAD OF THE LODGE OF THE EMINENT ORDER OF FREEMEN + HE WAS REMINDED OF HIS OMISSION HOWEVER BY A VISIT ONE EVENING FROM MIKE SCANLAN THE FELLOW MEMBER WHOM HE HAD MET IN THE TRAIN + SCANLAN THE SMALL SHARP FACED NERVOUS BLACK EYED MAN SEEMED GLAD TO SEE HIM ONCE MORE + AFTER A GLASS OR TWO OF WHISKY HE BROACHED THE OBJECT OF HIS VISIT + QUOTE SAY MCMURDO QUOTE SAID HE QUOTE I REMEMBERED YOUR ADDRESS SO L. MADE BOLD TO CALL + I'M SURPRISED THAT YOU'VE NOT REPORTED TO THE BODYMASTER + WHY HAVEN'T YOU SEEN BOSS MCGINTY YET + WELL I HAD TO FIND A JOB + I HAVE BEEN BUSY + YOU MUST FIND TIME FOR HIM IF YOU HAVE NONE FOR ANYTHING ELSE + GOOD LORD MAN YOU'RE A FOOL NOT TO HAVE BEEN DOWN TO THE UNION HOUSE AND REGISTERED YOUR NAME THE FIRST MORNING AFTER YOU CAME HERE + IF YOU RUN AGAINST HIM WELL YOU MUSTN'T THAT'S ALL + MCMURDO SHOWED MILD SURPRISE + QUOTE I'VE BEEN A MEMBER OF THE LODGE FOR OVER TWO YEARS SCANLAN BUT I NEVER HEARD THAT DUTIES WERE SO PRESSING AS ALL THAT QUOTE + MAYBE NOT IN CHICAGO + WELL IT'S THE SAME SOCIETY HERE + IS IT + SCANLAN LOOKED AT HIM LONG AND FIXEDLY + THERE WAS SOMETHING SINISTER IN HIS EYES + ISN'T IT + YOU'LL TELL ME THAT IN A MONTH'S TIME + I HEAR YOU HAD A TALK WITH THE PATROLMEN AFTER I LEFT THE TRAIN QUOTE + HOW DID YOU KNOW THAT + OH IT GOT ABOUT THINGS DO GET ABOUT FOR GOOD AND FOR BAD IN THIS DISTRICT + WELL YES + I TOLD THE HOUNDS WHAT I THOUGHT OF THEM + BY THE LORD YOU'LL BE A MAN AFTER MCGINTY'S HEART + QUOTE WHAT DOES HE HATE THE POLICE TOO QUOTE + SCANLAN BURST OUT LAUGHING + YOU GO AND SEE HIM MY LAD SAID HE AS HE TOOK HIS LEAVE + IT'S NOT THE POLICE BUT YOU THAT HE'LL HATE IF YOU DON'T + NOW TAKE A FRIEND'S ADVICE AND GO AT ONCE + IT CHANCED THAT ON THE SAME EVENING MCMURDO HAD ANOTHER MORE PRESSING INTERVIEW WHICH URGED HIM IN THE SAME DIRECTION + IT MAY HAVE BEEN THAT HIS ATTENTIONS TO ETTIE HAD BEEN MORE EVIDENT THAN BEFORE OR THAT THEY HAD GRADUALLY OBTRUDED THEMSELVES INTO THE SLOW MIND OF HIS GOOD GERMAN HOST BUT WHATEVER THE CAUSE THE BOARDING HOUSE KEEPER BECKONED THE YOUNG MAN INTO HLS PRIVATE ROOM AND STARTED ON THE SUBJECT WITHOUT ANY CIRCUMLOCUTION + IT SEEMS TO ME MISTER SAID HE THAT YOU ARE GETTIN' SET ON MY ETTIE + AIN'T THAT SO OR AM I WRONG + QUOTE YES THAT IS SO QUOTE THE YOUNG MAN ANSWERED + VELL I VANT TO TELL YOU RIGHT NOW THAT IT AIN'T NO MANNER OF USE + THERE'S SOMEONE SLIPPED IN AFORE YOU + SHE TOLD ME SO + VELL YOU CAN LAY THAT SHE TOLD YOU TRUTH + BUT DID SHE TELL YOU WHO IT VAS + QUOTE NO I ASKED HER BUT SHE WOULDN'T TELL QUOTE + I DARE SAY NOT THE LEETLE BAGGAGE + PERHAPS SHE DID NOT VISH TO FRIGHTEN YOU AVAY + FRIGHTEN + MCMURDO WAS ON FIRE IN A MOMENT + AH YES MY FRIEND + YOU NEED NOT BE ASHAMED TO BE FRIGHTENED OF HIM + IT IS TEDDY BALDWIN + QUOTE AND WHO THE DEVIL IS HE QUOTE + HE IS A BOSS OF SCOWRERS + SCOWRERS + I'VE HEARD OF THEM BEFORE + IT'S SCOWRERS HERE AND SCOWRERS THERE AND ALWAYS IN A WHISPER + WHAT ARE YOU ALL AFRAID OF + WHO ARE THE SCOWRERS + THE BOARDING HOUSE KEEPER INSTINCTIVELY SANK HIS VOICE AS EVERYONE DID WHO TALKED ABOUT THAT TERRIBLE SOCIETY + THE SCOWRERS SAID HE ARE THE EMINENT ORDER OF FREEMEN + THE YOUNG MAN STARED + WHY I AM A MEMBER OF THAT ORDER MYSELF + QUOTE YOU + I VOULD NEVER HAVE HAD YOU IN MY HOUSE IF I HAD KNOWN IT NOT IF YOU VERE TO PAY ME A HUNDRED DOLLAR A VEEK + WHAT'S WRONG WITH THE ORDER + IT'S FOR CHARITY AND GOOD FELLOWSHIP + THE RULES SAY SO + MAYBE IN SOME PLACES + NOT HERE + QUOTE WHAT IS IT HERE QUOTE + IT'S A MURDER SOCIETY THAT'S VAT IT IS + MCMURDO LAUGHED INCREDULOUSLY + HOW CAN YOU PROVE THAT HE ASKED + PROVE IT + ARE THERE NOT FIFTY MURDERS TO PROVE IT + VAT ABOUT MILMAN AND VAN SHORST AND THE NICHOLSON FAMILY AND OLD MR. HYAM AND LITTLE BILLY JAMES AND THE OTHERS + PROVE IT + IS THERE A MAN OR A VOMAN IN THIS VALLEY VAT DOES NOT KNOW IT + SEE HERE SAID MCMURDO EARNESTLY + QUOTE I WANT YOU TO TAKE BACK WHAT YOU'VE SAID OR ELSE MAKE IT GOOD + ONE OR THE OTHER YOU MUST DO BEFORE I QUIT THIS ROOM + PUT YOURSELF IN MY PLACE + HERE AM I A STRANGER IN THE TOWN + I BELONG TO A SOCIETY THAT I KNOW ONLY AS AN INNOCENT ONE + YOU'LL FIND IT THROUGH THE LENGTH AND BREADTH OF THE STATES BUT ALWAYS AS AN INNOCENT ONE + NOW WHEN I AM COUNTING UPON JOINING IT HERE YOU TELL ME THAT IT IS THE SAME AS A MURDER SOCIETY CALLED THE SCOWRERS + I GUESS YOU OWE ME EITHER AN APOLOGY OR ELSE AN EXPLANATION MR. SHAFTER + I CAN BUT TELL YOU VAT THE WHOLE VORLD KNOWS MISTER + THE BOSSES OF THE ONE ARE THE BOSSES OF THE OTHER + IF YOU OFFEND THE ONE IT IS THE OTHER VAT VILL STRIKE YOU + WE HAVE PROVED IT TOO OFTEN + THAT'S JUST GOSSIP I WANT PROOF SAID MCMURDO + IF YOU LIVE HERE LONG YOU VILL GET YOUR PROOF + BUT I FORGET THAT YOU ARE YOURSELF ONE OF THEM + YOU VILL SOON BE AS BAD AS THE REST + BUT YOU VILL FIND OTHER LODGINGS MISTER + I CANNOT HAVE YOU HERE + IS IT NOT BAD ENOUGH THAT ONE OF THESE PEOPLE COME COURTING MY ETTIE AND THAT I DARE NOT TURN HIM DOWN BUT THAT I SHOULD HAVE ANOTHER FOR MY BOARDER + YES INDEED YOU SHALL NOT SLEEP HERE AFTER TO NIGHT QUOTE + MCMURDO FOUND HIMSELF UNDER SENTENCE OF BANISHMENT BOTH FROM HIS COMFORTABLE QUARTERS AND FROM THE GIRL WHOM HE LOVED + HE FOUND HER ALONE IN THE SITTING ROOM THAT SAME EVENING AND HE POURED HIS TROUBLES INTO HER EAR + SURE YOUR FATHER IS AFTER GIVING ME NOTICE HE SAID + IT'S LITTLE I WOULD CARE IF IT WAS JUST MY ROOM BUT INDEED ETTIE THOUGH IT'S ONLY A WEEK THAT I'VE KNOWN YOU YOU ARE THE VERY BREATH OF LIFE TO ME AND I CAN'T LIVE WITHOUT YOU + OH HUSH MR. MCMURDO DON'T SPEAK SO SAID THE GIRL + I HAVE TOLD YOU HAVE I NOT THAT YOU ARE TOO LATE + THERE IS ANOTHER AND IF I HAVE NOT PROMISED TO MARRY HIM AT ONCE AT LEAST I CAN PROMISE NO ONE ELSE + QUOTE SUPPOSE I HAD BEEN FIRST ETTIE WOULD I HAVE HAD A CHANCE QUOTE + THE GIRL SANK HER FACE INTO HER HANDS + I WISH TO HEAVEN THAT YOU HAD BEEN FIRST SHE SOBBED + MCMURDO WAS DOWN ON HIS KNEES BEFORE HER IN AN INSTANT + FOR GOD'S SAKE ETTIE LET IT STAND AT THAT HE CRIED + WILL YOU RUIN YOUR LIFE AND MY OWN FOR THE SAKE OF THIS PROMISE + FOLLOW YOUR HEART ACUSHLA + TIS A SAFER GUIDE THAN ANY PROMISE BEFORE YOU KNEW WHAT IT WAS THAT YOU WERE SAYING + HE HAD SEIZED ETTIE'S WHITE HAND BETWEEN HIS OWN STRONG BROWN ONES + SAY THAT YOU WILL BE MINE AND WE WILL FACE IT OUT TOGETHER + QUOTE NOT HERE QUOTE + YES HERE + NO NO JACK + HIS ARMS WERE ROUND HER NOW + IT COULD NOT BE HERE + COULD YOU TAKE ME AWAY + A STRUGGLE PASSED FOR A MOMENT OVER MCMURDO'S FACE BUT IT ENDED BY SETTING LIKE GRANITE + NO HERE HE SAID + QUOTE I'LL HOLD YOU AGAINST THE WORLD ETTIE RIGHT HERE WHERE WE ARE QUOTE + WHY SHOULD WE NOT LEAVE TOGETHER + NO ETTIE I CAN'T LEAVE HERE + BUT WHY + I'D NEVER HOLD MY HEAD UP AGAIN IF I FELT THAT I HAD BEEN DRIVEN OUT + BESIDES WHAT IS THERE TO BE AFRAID OF + ARE WE NOT FREE FOLKS IN A FREE COUNTRY + IF YOU LOVE ME AND I YOU WHO WILL DARE TO COME BETWEEN + QUOTE YOU DON'T KNOW JACK + YOU'VE BEEN HERE TOO SHORT A TIME + YOU DON'T KNOW THIS BALDWIN + YOU DON'T KNOW MCGINTY AND HIS SCOWRERS + NO I DON'T KNOW THEM AND I DON'T FEAR THEM AND I DON'T BELIEVE IN THEM SAID MCMURDO + I'VE LIVED AMONG ROUGH MEN MY DARLING AND INSTEAD OF FEARING THEM IT HAS ALWAYS ENDED THAT THEY HAVE FEARED ME ALWAYS ETTIE + IT'S MAD ON THE FACE OF IT + IF THESE MEN AS YOUR FATHER SAYS HAVE DONE CRIME AFTER CRIME IN THE VALLEY AND IF EVERYONE KNOWS THEM BY NAME HOW COMES IT THAT NONE ARE BROUGHT TO JUSTICE + YOU ANSWER ME THAT ETTIE + BECAUSE NO WITNESS DARES TO APPEAR AGAINST THEM + HE WOULD NOT LIVE A MONTH IF HE DID + ALSO BECAUSE THEY HAVE ALWAYS THEIR OWN MEN TO SWEAR THAT THE ACCUSED ONE WAS FAR FROM THE SCENE OF THE CRIME + BUT SURELY JACK YOU MUST HAVE READ ALL THIS + I HAD UNDERSTOOD THAT EVERY PAPER IN THE UNITED STATES WAS WRITING ABOUT IT QUOTE + WELL I HAVE READ SOMETHING IT IS TRUE BUT I HAD THOUGHT IT WAS A STORY + MAYBE THESE MEN HAVE SOME REASON IN WHAT THEY DO + MAYBE THEY ARE WRONGED AND HAVE NO OTHER WAY TO HELP THEMSELVES + OH JACK DON'T LET ME HEAR YOU SPEAK SO + THAT IS HOW HE SPEAKS THE OTHER ONE + BALDWIN HE SPEAKS LIKE THAT DOES HE + QUOTE AND THAT IS WHY I LOATHE HIM SO + OH JACK NOW I CAN TELL YOU THE TRUTH + I LOATHE HIM WITH ALL MY HEART BUT I FEAR HIM ALSO + I FEAR HIM FOR MYSELF BUT ABOVE ALL I FEAR HIM FOR FATHER + I KNOW THAT SOME GREAT SORROW WOULD COME UPON US IF I DARED TO SAY WHAT I REALLY FELT + THAT IS WHY I HAVE PUT HIM OFF WITH HALFPROMISES + IT WAS IN REAL TRUTH OUR ONLY HOPE + BUT IF YOU WOULD FLY WITH ME JACK WE COULD TAKE FATHER WITH US AND LIVE FOREVER FAR FROM THE POWER OF THESE WICKED MEN + AGAIN THERE WAS THE STRUGGLE UPON MCMURDO'S FACE AND AGAIN IT SET LIKE GRANITE + NO HARM SHALL COME TO YOU ETTIE NOR TO YOUR FATHER EITHER + AS TO WICKED MEN I EXPECT YOU MAY FIND THAT I AM AS BAD AS THE WORST OF THEM BEFORE WE'RE THROUGH + NO NO JACK + I WOULD TRUST YOU ANYWHERE + MCMURDO LAUGHED BITTERLY + QUOTE GOOD LORD HOW LITTLE YOU KNOW OF ME + YOUR INNOCENT SOUL MY DARLING COULD NOT EVEN GUESS WHAT IS PASSING IN MINE + BUT HULLO WHO'S THE VISITOR + THE DOOR HAD OPENED SUDDENLY AND A YOUNG FELLOW CAME SWAGGERING IN WITH THE AIR OF ONE WHO IS THE MASTER + HE WAS A HANDSOME DASHING YOUNG MAN OF ABOUT THE SAME AGE AND BUILD AS MCMURDO HIMSELF + UNDER HIS BROAD BRIMMED BLACK FELT HAT WHICH HE HAD NOT TROUBLED TO REMOVE A HANDSOME FACE WITH FIERCE DOMINEERING EYES AND A CURVED HAWK BILL OF A NOSE LOOKED SAVAGELY AT THE PAIR WHO SAT BY THE STOVE + ETTIE HAD JUMPED TO HER FEET FULL OF CONFUSION AND ALARM + I'M GLAD TO SEE YOU MR. BALDWIN SAID SHE + YOU'RE EARLIER THAN I HAD THOUGHT + COME AND SIT DOWN + BALDWIN STOOD WITH HIS HANDS ON HIS HIPS LOOKING AT MCMURDO + WHO IS THIS HE ASKED CURTLY + QUOTE IT'S A FRIEND OF MINE MR. BALDWIN A NEW BOARDER HERE + MR. MCMURDO MAY I INTRODUCE YOU TO MR. BALDWIN + THE YOUNG MEN NODDED IN SURLY FASHION TO EACH OTHER + MAYBE MISS ETTIE HAS TOLD YOU HOW IT IS WITH US SAID BALDWIN + I DIDN'T UNDERSTAND THAT THERE WAS ANY RELATION BETWEEN YOU + DIDN'T YOU + WELL YOU CAN UNDERSTAND IT NOW + YOU CAN TAKE IT FROM ME THAT THIS YOUNG LADY IS MINE AND YOU'LL FIND IT A VERY FINE EVENING FOR A WALK + THANK YOU I AM IN NO HUMOUR FOR A WALK + QUOTE AREN'T YOU QUOTE + THE MAN'S SAVAGE EYES WERE BLAZING WITH ANGER + MAYBE YOU ARE IN A HUMOUR FOR A FIGHT MR. BOARDER + THAT I AM CRIED MCMURDO SPRINGING TO HIS FEET + YOU NEVER SAID A MORE WELCOME WORD + FOR GOD'S SAKE JACK + OH FOR GOD'S SAKE CRIED POOR DISTRACTED ETTIE + QUOTE OH JACK JACK HE WILL HURT YOUL QUOTE + OH IT'S JACK IS IT SAID BALDWIN WITH AN OATH + YOU'VE COME TO THAT ALREADY HAVE YOU + OH TED BE REASONABLE BE KIND + FOR MY SAKE TED IF EVER YOU LOVED ME BE BIG HEARTED AND FORGIVING + I THINK ETTIE THAT IF YOU WERE TO LEAVE US ALONE WE COULD GET THIS THING SETTLED SAID MCMURDO QUIETLY + QUOTE OR MAYBE MR. BALDWIN YOU WILL TAKE A TURN DOWN THE STREET WITH ME + IT'S A FINE EVENING AND THERE'S SOME OPEN GROUND BEYOND THE NEXT BLOCK + I'LL GET EVEN WITH YOU WITHOUT NEEDING TO DIRTY MY HANDS SAID HIS ENEMY + YOU'LL WISH YOU HAD NEVER SET FOOT IN THIS HOUSE BEFORE I AM THROUGH WITH YOU + NO TIME LIKE THE PRESENT CRIED MCMURDO + I'LL CHOOSE MY OWN TIME MISTER + YOU CAN LEAVE THE TIME TO ME + SEE HERE QUOTE + HE SUDDENLY ROLLED UP HIS SLEEVE AND SHOWED UPON HIS FOREARM A PECULIAR SIGN WHICH APPEARED TO HAVE BEEN BRANDED THERE + IT WAS A CIRCLE WITH A TRIANGLE WITHIN IT + D'YOU KNOW WHAT THAT MEANS + I NEITHER KNOW NOR CARE + WELL YOU WILL KNOW I'LL PROMISE YOU THAT + YOU WON'T BE MUCH OLDER EITHER + PERHAPS MISS ETTIE CAN TELL YOU SOMETHING ABOUT IT + AS TO YOU ETTIE YOU'LL COME BACK TO ME ON YOUR KNEES D'YE HEAR GIRL ON YOUR KNEES AND THEN I'LL TELL YOU WHAT YOUR PUNISHMENT MAY BE + YOU'VE SOWED AND BY THE LORD I'LL SEE THAT YOU REAP + HE GLANCED AT THEM BOTH IN FURY + THEN HE TURNED UPON HIS HEEL AND AN INSTANT LATER THE OUTER DOOR HAD BANGED BEHIND HIM + FOR A FEW MOMENTS MCMURDO AND THE GIRL STOOD IN SILENCE + THEN SHE THREW HER ARMS AROUND HIM + OH JACK HOW BRAVE YOU WERE + BUT IT IS NO USE YOU MUST FLY + TO NIGHT JACK TO NIGHT + IT'S YOUR ONLY HOPE + HE WILL HAVE YOUR LIFE + I READ IT IN HIS HORRIBLE EYES + WHAT CHANCE HAVE YOU AGAINST A DOZEN OF THEM WITH BOSS MCGINTY AND ALL THE POWER OF THE LODGE BEHIND THEM QUOTE + MCMURDO DISENGAGED HER HANDS KISSED HER AND GENTLY PUSHED HER BACK INTO A CHAIR + THERE ACUSHLA THERE + DON'T BE DISTURBED OR FEAR FOR ME + I'M A FREEMAN MYSELF + I'M AFTER TELLING YOUR FATHER ABOUT IT + MAYBE I AM NO BETTER THAN THE OTHERS SO DON'T MAKE A SAINT OF ME + PERHAPS YOU HATE ME TOO NOW THAT I'VE TOLD YOU AS MUCH + HATE YOU JACK + WHILE LIFE LASTS I COULD NEVER DO THAT + I'VE HEARD THAT THERE IS NO HARM IN BEING A FREEMAN ANYWHERE BUT HERE SO WHY SHOULD I THINK THE WORSE OF YOU FOR THAT + BUT IF YOU ARE A FREEMAN JACK WHY SHOULD YOU NOT GO DOWN AND MAKE A FRIEND OF BOSS MCGINTY + OH HURRY JACK HURRY + GET YOUR WORD IN FIRST OR THE HOUNDS WILL BE ON YOUR TRAIL + I WAS THINKING THE SAME THING SAID MCMURDO + QUOTE I'LL GO RIGHT NOW AND FIX IT + YOU CAN TELL YOUR FATHER THAT I'LL SLEEP HERE TO NIGHT AND FIND SOME OTHER QUARTERS IN THE MORNING + THE BAR OF MCGINTY'S SALOON WAS CROWDED AS USUAL FOR IT WAS THE FAVOURITE LOAFING PLACE OF ALL THE ROUGHER ELEMENTS OF THE TOWN + THE MAN WAS POPULAR FOR HE HAD A ROUGH JOVIAL DISPOSITION WHICH FORMED A MASK COVERING A GREAT DEAL WHICH LAY BEHIND IT + BUT APART FROM THIS POPULARITY THE FEAR IN WHICH HE WAS HELD THROUGHOUT THE TOWNSHIP AND INDEED DOWN THE WHOLE THIRTY MILES OF THE VALLEY AND PAST THE MOUNTAINS ON EACH SIDE OF IT WAS ENOUGH IN ITSELF TO FILL HIS BAR FOR NONE COULD AFFORD TO NEGLECT HIS GOOD WILL + BESIDES THOSE SECRET POWERS WHICH IT WAS UNIVERSALLY BELIEVED THAT HE EXERCISED IN SO PITILESS A FASHION HE WAS A HIGH PUBLIC OFFICIAL A MUNICIPAL COUNCILLOR AND A COMMISSIONER OF ROADS ELECTED TO THE OFFICE THROUGH THE VOTES OF THE RUFFIANS WHO IN TURN EXPECTED TO RECEIVE FAVOURS AT HIS HANDS + ASSESSMENTS AND TAXES WERE ENORMOUS THE PUBLIC WORKS WERE NOTORIOUSLY NEGLECTED THE ACCOUNTS WERE SLURRED OVER BY BRIBED AUDITORS AND THE DECENT CITIZEN WAS TERRORIZED INTO PAYING PUBLIC BLACKMAIL AND HOLDING HIS TONGUE LEST SOME WORSE THING BEFALL HIM + THUS IT WAS THAT YEAR BY YEAR BOSS MCGINTY'S DIAMOND PINS BECAME MORE OBTRUSIVE HIS GOLD CHAINS MORE WEIGHTY ACROSS A MORE GORGEOUS VEST AND HIS SALOON STRETCHED FARTHER AND FARTHER UNTIL IT THREATENED TO ABSORB ONE WHOLE SIDE OF THE MARKET SQUARE + MCMURDO PUSHED OPEN THE SWINGING DOOR OF THE SALOON AND MADE HIS WAY AMID THE CROWD OF MEN WITHIN THROUGH AN ATMOSPHERE BLURRED WITH TOBACCO SMOKE AND HEAVY WITH THE SMELL OF SPIRITS + THE PLACE WAS BRILLIANTLY LIGHTED AND THE HUGE HEAVILY GILT MIRRORS UPON EVERY WALL REFLECTED AND MULTIPLIED THE GARISH ILLUMINATION + THERE WERE SEVERAL BARTENDERS IN THEIR SHIRT SLEEVES HARD AT WORK MIXING DRINKS FOR THE LOUNGERS WHO FRINGED THE BROAD BRASS TRIMMED COUNTER + AT THE FAR END WITH HIS BODY RESTING UPON THE BAR AND A CIGAR STUCK AT AN ACUTE ANGLE FROM THE CORNER OF HIS MOUTH STOOD A TALL STRONG HEAVILY BUILT MAN WHO COULD BE NONE OTHER THAN THE FAMOUS MCGINTY HIMSELF + HE WAS A BLACK MANED GIANT BEARDED TO THE CHEEK BONES AND WITH A SHOCK OF RAVEN HAIR WHICH FELL TO HIS COLLAR + HIS COMPLEXION WAS AS SWARTHY AS THAT OF AN ITALIAN AND HIS EYES WERE OF A STRANGE DEAD BLACK WHICH COMBINED WITH A SLIGHT SQUINT GAVE THEM A PARTICULARLY SINISTER APPEARANCE + ALL ELSE IN THE MAN HIS NOBLE PROPORTIONS HIS FINE FEATURES AND HIS FRANK BEARING FITTED IN WITH THAT JOVIAL MAN TO MAN MANNER WHICH HE AFFECTED + HERE. ONE WOULD SAY IS A BLUFF HONEST FELLOW WHOSE HEART WOULD BE SOUND HOWEVER RUDE HIS OUTSPOKEN WORDS MIGHT SEEM + IT WAS ONLY WHEN THOSE DEAD DARK EYES DEEP AND REMORSELESS WERE TURNED UPON A MAN THAT HE SHRANK WITHIN HIMSELF FEELING THAT HE WAS FACE TO FACE WITH AN INFINITE POSSIBILITY OF LATENT EVIL WITH A STRENGTH AND COURAGE AND CUNNING BEHIND IT WHICH MADE IT A THOUSAND TIMES MORE DEADLY + HAVING HAD A GOOD LOOK AT HIS MAN MCMURDO ELBOWED HIS WAY FORWARD WITH HIS USUAL CARELESS AUDACITY AND PUSHED HIMSELF THROUGH THE LITTLE GROUP OF COURTIERS WHO WERE FAWNING UPON THE POWERFUL BOSS LAUGHING UPROARIOUSLY AT THE SMALLEST OF HIS JOKES + THE YOUNG STRANGER'S BOLD GRAY EYES LOOKED BACK FEARLESSLY THROUGH THEIR GLASSES AT THE DEADLY BLACK ONES WHICH TURNED SHARPLY UPON HIM + WELL YOUNG MAN I CAN'T CALL YOUR FACE TO MIND + I'M NEW HERE MR. MCGINTY + YOU ARE NOT SO NEW THAT YOU CAN'T GIVE A GENTLEMAN HIS PROPER TITLE + HE'S COUNCILLOR MCGINTY YOUNG MAN SAID A VOICE FROM THE GROUP + QUOTE I'M SORRY COUNCILLOR + I'M STRANGE TO THE WAYS OF THE PLACE + BUT I WAS ADVISED TO SEE YOU + WELL YOU SEE ME + THIS IS ALL THERE IS + WHAT D'YOU THINK OF ME + WELL IT'S EARLY DAYS + IF YOUR HEART IS AS BIG AS YOUR BODY AND YOUR SOUL AS FINE AS YOUR FACE THEN I'D ASK FOR NOTHING BETTER SAID MCMURDO + QUOTE BY GAR YOU'VE GOT AN IRISH TONGUE IN YOUR HEAD ANYHOW QUOTE CRIED THE SALOON KEEPER NOT QUITE CERTAIN WHETHER TO HUMOUR THIS AUDACIOUS VISITOR OR TO STAND UPON HIS DIGNITY + SO YOU ARE GOOD ENOUGH TO PASS MY APPEARANCE + SURE SAID MCMURDO + AND YOU WERE TOLD TO SEE ME + I WAS + AND WHO TOLD YOU + QUOTE BROTHER SCANLAN OF LODGE THREE HUNDRED FORTY ONE VERMISSA + I DRINK YOUR HEALTH COUNCILLOR AND TO OUR BETTER ACQUAINTANCE + HE RAISED A GLASS WITH WHICH HE HAD BEEN SERVED TO HIS LIPS AND ELEVATED HIS LITTLE FINGER AS HE DRANK IT + MCGINTY WHO HAD BEEN WATCHING HIM NARROWLY RAISED HIS THICK BLACK EYEBROWS + OH IT'S LIKE THAT IS IT SAID HE + I'LL HAVE TO LOOK A BIT CLOSER INTO THIS MISTER + MCMURDO + A BIT CLOSER MR. MCMURDO FOR WE DON'T TAKE FOLK ON TRUST IN THESE PARTS NOR BELIEVE ALL WE'RE TOLD NEITHER + COME IN HERE FOR A MOMENT BEHIND THE BAR QUOTE + THERE WAS A SMALL ROOM THERE LINED WITH BARRELS + MCGINTY CAREFULLY CLOSED THE DOOR AND THEN SEATED HIMSELF ON ONE OF THEM BITING THOUGHTFULLY ON HIS CIGAR AND SURVEYING HIS COMPANION WITH THOSE DISQUIETING EYES + FOR A COUPLE OF MINUTES HE SAT IN COMPLETE SILENCE + MCMURDO BORE THE INSPECTION CHEERFULLY ONE HAND IN HIS COAT POCKET THE OTHER TWISTING HIS BROWN MOUSTACHE + SUDDENLY MCGINTY STOOPED AND PRODUCED A WICKED LOOKING REVOLVER + SEE HERE MY JOKER SAID HE IF I THOUGHT YOU WERE PLAYING ANY GAME ON US IT WOULD BE SHORT WORK FOR YOU + THIS IS A STRANGE WELCOME MCMURDO ANSWERED WITH SOME DIGNITY FOR THE BODYMASTER OF A LODGE OF FREEMEN TO GIVE TO A STRANGER BROTHER + AY BUT IT'S JUST THAT SAME THAT YOU HAVE TO PROVE SAID MCGINTY AND GOD HELP YOU IF YOU FAIL + WHERE WERE YOU MADE + LODGE TWENTY NINE CHICAGO + QUOTE WHEN QUOTE + JUNE TWENTY FOURTH ONE THOUSAND EIGHT HUNDRED SEVENTY TWO + WHAT BODYMASTER + JAMES H. SCOTT + WHO IS YOUR DISTRICT RULER + BARTHOLOMEW WILSON + QUOTE HUM + YOU SEEM GLIB ENOUGH IN YOUR TESTS + WHAT ARE YOU DOING HERE + WORKING THE SAME AS YOU BUT A POORER JOB + YOU HAVE YOUR BACK ANSWER QUICK ENOUGH + YES I WAS ALWAYS QUICK OF SPEECH + ARE YOU QUICK OF ACTION + QUOTE I HAVE HAD THAT NAME AMONG THOSE THAT KNEW ME BEST QUOTE + WELL WE MAY TRY YOU SOONER THAN YOU THINK + HAVE YOU HEARD ANYTHING OF THE LODGE IN THESE PARTS + I'VE HEARD THAT IT TAKES A MAN TO BE A BROTHER + TRUE FOR YOU MR. MCMURDO + WHY DID YOU LEAVE CHICAGO + QUOTE I'M DAMNED IF I TELL YOU THAT QUOTE + MCGINTY OPENED HIS EYES + HE WAS NOT USED TO BEING ANSWERED IN SUCH FASHION AND IT AMUSED HIM + WHY WON'T YOU TELL ME + BECAUSE NO BROTHER MAY TELL ANOTHER A LIE + THEN THE TRUTH IS TOO BAD TO TELL + YOU CAN PUT IT THAT WAY IF YOU LIKE + SEE HERE MISTER YOU CAN'T EXPECT ME AS BODYMASTER TO PASS INTO THE LODGE A MAN FOR WHOSE PAST HE CAN'T ANSWER + MCMURDO LOOKED PUZZLED + THEN HE TOOK A WORN NEWSPAPER CUTTING FROM AN INNER POCKET + QUOTE YOU WOULDN'T SQUEAL ON A FELLOW QUOTE SAID HE + I'LL WIPE MY HAND ACROSS YOUR FACE IF YOU SAY SUCH WORDS TO ME CRIED MCGINTY HOTLY + YOU ARE RIGHT COUNCILLOR SAID MCMURDO MEEKLY + I SHOULD APOLOGIZE + I SPOKE WITHOUT THOUGHT + WELL I KNOW THAT I AM SAFE IN YOUR HANDS + LOOK AT THAT CLIPPING + MCGINTY GLANCED HIS EYES OVER THE ACCOUNT OF THE SHOOTING OF ONE JONAS PINTO IN THE LAKE SALOON MARKET STREET CHICAGO IN THE NEW YEAR WEEK OF ONE THOUSAND EIGHT HUNDRED SEVENTY FOUR + YOUR WORK HE ASKED AS HE HANDED BACK THE PAPER + MCMURDO NODDED + QUOTE WHY DID YOU SHOOT HIM QUOTE + I WAS HELPING UNCLE SAM TO MAKE DOLLARS + MAYBE MINE WERE NOT AS GOOD GOLD AS HIS. BUT THEY LOOKED AS WELL AND WERE CHEAPER TO MAKE + THIS MAN PINTO HELPED ME TO SHOVE THE QUEER + TO DO WHAT + WELL IT MEANS TO PASS THE DOLLARS OUT INTO CIRCULATION + THEN HE SAID HE WOULD SPLIT + MAYBE HE DID SPLIT + I DIDN'T WAIT TO SEE + I JUST KILLED HIM AND LIGHTED OUT FOR THE COAL COUNTRY + QUOTE WHY THE COAL COUNTRY QUOTE + CAUSE I'D READ IN THE PAPERS THAT THEY WEREN'T TOO PARTICULAR IN THOSE PARTS + MCGINTY LAUGHED + YOU WERE FIRST A COINER AND THEN A MURDERER AND YOU CAME TO THESE PARTS BECAUSE YOU THOUGHT YOU'D BE WELCOME + THAT'S ABOUT THE SIZE OF IT MCMURDO ANSWERED + WELL I GUESS YOU'LL GO FAR + SAY CAN YOU MAKE THOSE DOLLARS YET + MCMURDO TOOK HALF A DOZEN FROM HIS POCKET + QUOTE THOSE NEVER PASSED THE PHILADELPHIA MINT QUOTE SAID HE + YOU DON'T SAY + MCGINTY HELD THEM TO THE LIGHT IN HIS ENORMOUS HAND WHICH WAS HAIRY AS A GORILLA'S + I CAN SEE NO DIFFERENCE + GAR YOU'LL BE A MIGHTY USEFUL BROTHER I'M THINKING + WE CAN DO WITH A BAD MAN OR TWO AMONG US FRIEND MCMURDO FOR THERE ARE TIMES WHEN WE HAVE TO TAKE OUR OWN PART + WE'D SOON BE AGAINST THE WALL IF WE DIDN'T SHOVE BACK AT THOSE THAT WERE PUSHING US + WELL I GUESS I'LL DO MY SHARE OF SHOVING WITH THE REST OF THE BOYS + YOU SEEM TO HAVE A GOOD NERVE + YOU DIDN'T SQUIRM WHEN I SHOVED THIS GUN AT YOU QUOTE + IT WAS NOT ME THAT WAS IN DANGER + WHO THEN + IT WAS YOU COUNCILLOR + MCMURDO DREW A COCKED PISTOL FROM THE SIDE POCKET OF HIS PEAJACKET + I WAS COVERING YOU ALL THE TIME + I GUESS MY SHOT WOULD HAVE BEEN AS QUICK AS YOURS + QUOTE BY GAR QUOTE + MCGINTY FLUSHED AN ANGRY RED AND THEN BURST INTO A ROAR OF LAUGHTER + SAY WE'VE HAD NO SUCH HOLY TERROR COME TO HAND THIS MANY A YEAR + I RECKON THE LODGE WILL LEARN TO BE PROUD OF YOU + WELL WHAT THE HELL DO YOU WANT + AND CAN'T I SPEAK ALONE WITH A GENTLEMAN FOR FIVE MINUTES BUT YOU MUST BUTT IN ON US + THE BARTENDER STOOD ABASHED + I'M SORRY COUNCILLOR BUT IT'S TED BALDWIN + HE SAYS HE MUST SEE YOU THIS VERY MINUTE + THE MESSAGE WAS UNNECESSARY FOR THE SET. CRUEL FACE OF THE MAN HIMSELF WAS LOOKING OVER THE SERVANT'S SHOULDER + HE PUSHED THE BARTENDER OUT AND CLOSED THE DOOR ON HIM + SO SAID HE WITH A FURIOUS GLANCE AT MCMURDO YOU GOT HERE FIRST DID YOU + I'VE A WORD TO SAY TO YOU COUNCILLOR ABOUT THIS MAN QUOTE + THEN SAY IT HERE AND NOW BEFORE MY FACE CRIED MCMURDO + I'LL SAY IT AT MY OWN TIME IN MY OWN WAY + TUT + TUT SAID MCGINTY GETTING OFF HIS BARREL + THIS WILL NEVER DO + WE HAVE A NEW BROTHER HERE BALDWIN AND IT'S NOT FOR US TO GREET HIM IN SUCH FASHION + HOLD OUT YOUR HAND MAN AND MAKE IT UP QUOTE + NEVER CRIED BALDWIN IN A FURY + I'VE OFFERED TO FIGHT HIM IF HE THINKS I HAVE WRONGED HIM SAID MCMURDO + I'LL FIGHT HIM WITH FISTS OR IF THAT WON'T SATISFY HIM I'LL FIGHT HIM ANY OTHER WAY HE CHOOSES + NOW I'LL LEAVE IT TO YOU COUNCILLOR TO JUDGE BETWEEN US AS A BODYMASTER SHOULD + WHAT IS IT THEN + QUOTE A YOUNG LADY + SHE'S FREE TO CHOOSE FOR HERSELF + IS SHE CRIED BALDWIN + AS BETWEEN TWO BROTHERS OF THE LODGE I SHOULD SAY THAT SHE WAS SAID THE BOSS + OH THAT'S YOUR RULING IS IT + YES IT IS TED BALDWIN SAID MCGINTY WITH A WICKED STARE + QUOTE IS IT YOU THAT WOULD DISPUTE IT QUOTE + YOU WOULD THROW OVER ONE THAT HAS STOOD BY YOU THIS FIVE YEARS IN FAVOUR OF A MAN THAT YOU NEVER SAW BEFORE IN YOUR LIFE + YOU'RE NOT BODYMASTER FOR LIFE JACK MCGINTY AND BY GOD WHEN NEXT IT COMES TO A VOTE + THE COUNCILLOR SPRANG AT HIM LIKE A TIGER + HIS HAND CLOSED ROUND THE OTHER'S NECK AND HE HURLED HIM BACK ACROSS ONE OF THE BARRELS + IN HIS MAD FURY HE WOULD HAVE SQUEEZED THE LIFE OUT OF HIM IF MCMURDO HAD NOT INTERFERED + EASY COUNCILLOR + FOR HEAVEN'S SAKE GO EASY HE CRIED AS HE DRAGGED HIM BACK + MCGINTY RELEASED HIS HOLD AND BALDWIN COWED AND SHAKEN GASPING FOR BREATH AND SHIVERING IN EVERY LIMB AS ONE WHO HAS LOOKED OVER THE VERY EDGE OF DEATH SAT UP ON THE BARREL OVER WHICH HE HAD BEEN HURLED + YOU'VE BEEN ASKING FOR IT THIS MANY A DAY TED BALDWIN NOW YOU'VE GOT IT CRIED MCGINTY HIS HUGE CHEST RISING AND FALLING + QUOTE MAYBE YOU THINK IF I WAS VOTED DOWN FROM BODYMASTER YOU WOULD FIND YOURSELF IN MY SHOES + IT'S FOR THE LODGE TO SAY THAT + BUT SO LONG AS I AM THE CHIEF I'LL HAVE NO MAN LIFT HIS VOICE AGALNST ME OR MY RULINGS + I HAVE NOTHING AGAINST YOU MUMBLED BALDWIN FEELING HIS THROAT + WELL THEN CRIED THE OTHER RELAPSING IN A MOMENT INTO A BLUFF JOVIALITY WE ARE ALL GOOD FRIENDS AGAIN AND THERE'S AN END OF THE MATTER + HE TOOK A BOTTLE OF CHAMPAGNE DOWN FROM THE SHELF AND TWISTED OUT THE CORK + SEE NOW HE CONTINUED AS HE FILLED THREE HIGH GLASSES LET US DRINK THE QUARRELLING TOAST OF THE LODGE + AFTER THAT AS YOU KNOW THERE CAN BE NO BAD BLOOD BETWEEN US + NOW THEN THE LEFT HAND ON THE APPLE OF MY THROAT + I SAY TO YOU TED BALDWIN WHAT IS THE OFFENSE SIR + QUOTE BUT THEY WILL FOREVER BRIGHTEN QUOTE + AND THIS I SWEAR + THERE CRIED MCGINTY RUBBING HIS HANDS + THAT'S THE END OF THE BLACK BLOOD + YOU COME UNDER LODGE DISCIPLINE IF IT GOES FURTHER AND THAT'S A HEAVY HAND IN THESE PARTS AS BROTHER BALDWIN KNOWS AND AS YOU WILL DAMN SOON FIND OUT BROTHER MCMURDO IF YOU ASK FOR TROUBLE + FAITH I'D BE SLOW TO DO THAT SAID MCMURDO + HE HELD OUT HIS HAND TO BALDWIN + QUOTE I'M QUICK TO QUARREL AND QUICK TO FORGIVE + IT'S MY HOT IRISH BLOOD THEY TELL ME + BUT IT'S OVER FOR ME AND I BEAR NO GRUDGE + BALDWIN HAD TO TAKE THE PROFFERED HAND FOR THE BALEFUL EYE OF THE TERRIBLE BOSS WAS UPON HIM + BUT HIS SULLEN FACE SHOWED HOW LITTLE THE WORDS OF THE OTHER HAD MOVED HIM + MCGINTY CLAPPED THEM BOTH ON THE SHOULDERS + TUT + THESE GIRLS + THESE GIRLS HE CRIED + TO THINK THAT THE SAME PETTICOATS SHOULD COME BETWEEN TWO OF MY BOYS + IT'S THE DEVIL'S OWN LUCK + WELL IT'S THE COLLEEN INSIDE OF THEM THAT MUST SETTLE THE QUESTION FOR IT'S OUTSIDE THE JURISDICTION OF A BODYMASTER AND THE LORD BE PRAISED FOR THAT + WE HAVE ENOUGH ON US WITHOUT THE WOMEN AS WELL + YOU'LL HAVE TO BE AFFILIATED TO LODGE THREE HUNDRED FORTY ONE BROTHER MCMURDO + WE HAVE OUR OWN WAYS AND METHODS DIFFERENT FROM CHICAGO + SATURDAY NIGHT IS OUR MEETING AND IF YOU COME THEN WE'LL MAKE YOU FREE FOREVER OF THE VERMISSA VALLEY + CHAPTER THREE LODGE THREE HUNDRED FORTY ONE VERMISSA + ON THE DAY FOLLOWING THE EVENING WHICH HAD CONTAINED SO MANY EXCITING EVENTS MCMURDO MOVED HIS LODGINGS FROM OLD JACOB SHAFTER'S AND TOOK UP HIS QUARTERS AT THE WIDOW MACNAMARA'S ON THE EXTREME OUTSKIRTS OF THE TOWN + SCANLAN HIS ORIGINAL ACQUAINTANCE ABOARD THE TRAIN HAD OCCASION SHORTLY AFTERWARDS TO MOVE INTO VERMISSA AND THE TWO LODGED TOGETHER + THERE WAS NO OTHER BOARDER AND THE HOSTESS WAS AN EASY GOING OLD IRISHWOMAN WHO LEFT THEM TO THEMSELVES SO THAT THEY HAD A FREEDOM FOR SPEECH AND ACTION WELCOME TO MEN WHO HAD SECRETS IN COMMON + SHAFTER HAD RELENTED TO THE EXTENT OF LETTING MCMURDO COME TO HIS MEALS THERE WHEN HE LIKED SO THAT HIS INTERCOURSE WITH ETTIE WAS BY NO MEANS BROKEN + ON THE CONTRARY IT DREW CLOSER AND MORE INTIMATE AS THE WEEKS WENT BY + IN HIS BEDROOM AT HIS NEW ABODE MCMURDO FELT IT SAFE TO TAKE OUT THE COINING MOULDS AND UNDER MANY A PLEDGE OF SECRECY A NUMBER OF BROTHERS FROM THE LODGE WERE ALLOWED TO COME IN AND SEE THEM EACH CARRYING AWAY IN HIS POCKET SOME EXAMPLES OF THE FALSE MONEY SO CUNNINGLY STRUCK THAT THERE WAS NEVER THE SLIGHTEST DIFFICULTY OR DANGER IN PASSING IT + WHY WITH SUCH A WONDERFUL ART AT HIS COMMAND MCMURDO SHOULD CONDESCEND TO WORK AT ALL WAS A PERPETUAL MYSTERY TO HIS COMPANIONS THOUGH HE MADE IT CLEAR TO ANYONE WHO ASKED HIM THAT IF HE LIVED WITHOUT ANY VISIBLE MEANS IT WOULD VERY QUICKLY BRING THE POLICE UPON HIS TRACK + ONE POLICEMAN WAS INDEED AFTER HIM ALREADY BUT THE INCIDENT AS LUCK WOULD HAVE IT DID THE ADVENTURER A GREAT DEAL MORE GOOD THAN HARM + AFTER THE FIRST INTRODUCTION THERE WERE FEW EVENINGS WHEN HE DID NOT FIND HIS WAY TO MCGINTY'S SALOON THERE TO MAKE CLOSER ACQUAINTANCE WITH QUOTE THE BOYS QUOTE WHICH WAS THE JOVIAL TITLE BY WHICH THE DANGEROUS GANG WHO INFESTED THE PLACE WERE KNOWN TO ONE ANOTHER + HIS DASHING MANNER AND FEARLESSNESS OF SPEECH MADE HIM A FAVOURITE WITH THEM ALL WHILE THE RAPID AND SCIENTIFIC WAY IN WHICH HE POLISHED OFF HIS ANTAGONIST IN AN ALL IN BAR ROOM SCRAP EARNED THE RESPECT OF THAT ROUGH COMMUNITY + ANOTHER INCIDENT HOWEVER RAISED HIM EVEN HIGHER IN THEIR ESTIMATION + JUST AT THE CROWDED HOUR ONE NIGHT THE DOOR OPENED AND A MAN ENTERED WITH THE QUIET BLUE UNIFORRN AND PEAKED CAP OF THE MINE POLICE + THIS WAS A SPECIAL BODY RAISED BY THE RAILWAYS AND COLLIERY OWNERS TO SUPPLEMENT THE EFFORTS OF THE ORDINARY CIVIL POLICE WHO WERE PERFECTLY HELPLESS IN THE FACE OF THE ORGANIZED RUFFIANISM WHICH TERRORIZED THE DISTRICT + THERE WAS A HUSH AS HE ENTERED AND MANY A CURIOUS GLANCE WAS CAST AT HIM BUT THE RELATIONS BETWEEN POLICEMEN AND CRIMINALS ARE PECULIAR IN SOME PARTS OF THE STATES AND MCGINTY HIMSELF STANDING BEHIND HIS COUNTER SHOWED NO SURPRISE WHEN THE POLICEMAN ENROLLED HIMSELF AMONG HIS CUSTOMERS + A STRAIGHT WHISKY FOR THE NIGHT IS BITTER SAID THE POLICE OFFICER + I DON'T THINK WE HAVE MET BEFORE COUNCILLOR + YOU'LL BE THE NEW CAPTAIN SAID MCGINTY + THAT'S SO + WE'RE LOOKING TO YOU COUNCILLOR AND TO THE OTHER LEADING CITIZENS TO HELP US IN UPHOLDING LAW AND ORDER IN THIS TOWNSHIP + CAPTAIN MARVIN IS MY NAME QUOTE + WE'D DO BETTER WITHOUT YOU CAPTAIN MARVIN SAID MCGINTY COLDLY FOR WE HAVE OUR OWN POLICE OF THE TOWNSHIP AND NO NEED FOR ANY IMPORTED GOODS + WHAT ARE YOU BUT THE PAID TOOL OF THE CAPITALISTS HIRED BY THEM TO CLUB OR SHOOT YOUR POORER FELLOW CITIZEN + WELL WELL WE WON'T ARGUE ABOUT THAT SAID THE POLICE OFFICER GOOD HUMOUREDLY + I EXPECT WE ALL DO OUR DUTY SAME AS WE SEE IT BUT WE CAN'T ALL SEE IT THE SAME + HE HAD DRUNK OFF HIS GLASS AND HAD TURNED TO GO WHEN HIS EYES FELL UPON THE FACE OF JACK MCMURDO WHO WAS SCOWLING AT HIS ELBOW + HULLO + HULLO QUOTE HE CRIED LOOKING HIM UP AND DOWN + HERE'S AN OLD ACQUAINTANCE + MCMURDO SHRANK AWAY FROM HIM + I WAS NEVER A FRIEND TO YOU NOR ANY OTHER CURSED COPPER IN MY LIFE SAID HE + AN ACQUAINTANCE ISN'T ALWAYS A FRIEND SAID THE POLICE CAPTAIN GRINNING + YOU'RE JACK MCMURDO OF CHICAGO RIGHT ENOUGH AND DON'T YOU DENY IT + MCMURDO SHRUGGED HIS SHOULDERS + I'M NOT DENYING IT SAID HE + QUOTE D'YE THINK I'M ASHAMED OF MY OWN NAME QUOTE + YOU'VE GOT GOOD CAUSE TO BE ANYHOW + WHAT THE DEVIL D'YOU MEAN BY THAT HE ROARED WITH HIS FISTS CLENCHED + NO NO JACK BLUSTER WON'T DO WITH ME + I WAS AN OFFICER IN CHICAGO BEFORE EVER I CAME TO THIS DARNED COAL BUNKER AND I KNOW A CHICAGO CROOK WHEN I SEE ONE + MCMURDO'S FACE FELL + DON'T TELL ME THAT YOU'RE MARVIN OF THE CHICAGO CENTRAL HE CRIED + QUOTE JUST THE SAME OLD TEDDY MARVIN AT YOUR SERVICE + WE HAVEN'T FORGOTTEN THE SHOOTING OF JONAS PINTO UP THERE + I NEVER SHOT HIM + DID YOU NOT + THAT'S GOOD IMPARTIAL EVIDENCE AIN'T IT + WELL HIS DEATH CAME IN UNCOMMON HANDY FOR YOU OR THEY WOULD HAVE HAD YOU FOR SHOVING THE QUEER + WELL WE CAN LET THAT BE BYGONES FOR BETWEEN YOU AND ME AND PERHAPS I'M GOING FURTHER THAN MY DUTY IN SAYING IT THEY COULD GET NO CLEAR CASE AGAINST YOU AND CHICAGO'S OPEN TO YOU TO MORROW + I'M VERY WELL WHERE I AM + QUOTE WELL I'VE GIVEN YOU THE POINTER AND YOU'RE A SULKY DOG NOT TO THANK ME FOR IT QUOTE + WELL I SUPPOSE YOU MEAN WELL AND I DO THANK YOU SAID MCMURDO IN NO VERY GRACIOUS MANNER + IT'S MUM WITH ME SO LONG AS I SEE YOU LIVING ON THE STRAIGHT SAID THE CAPTAIN + BUT BY THE LORD IF YOU GET OFF AFTER THIS IT'S ANOTHER STORY + SO GOOD NIGHT TO YOU AND GOODNIGHT COUNCILLOR + HE LEFT THE BAR ROOM BUT NOT BEFORE HE HAD CREATED A LOCAL HERO + MCMURDO'S DEEDS IN FAR CHICAGO HAD BEEN WHISPERED BEFORE + HE HAD PUT OFF ALL QUESTIONS WITH A SMILE AS ONE WHO DID NOT WISH TO HAVE GREATNESS THRUST UPON HIM + BUT NOW THE THING WAS OFFICIALLY CONFIRMED + THE BAR LOAFERS CROWDED ROUND HIM AND SHOOK HIM HEARTILY BY THE HAND + HE WAS FREE OF THE COMMUNITY FROM THAT TIME ON + HE COULD DRINK HARD AND SHOW LITTLE TRACE OF IT BUT THAT EVENING HAD HIS MATE SCANLAN NOT BEEN AT HAND TO LEAD HIM HOME THE FETED HERO WOULD SURELY HAVE SPENT HIS NIGHT UNDER THE BAR + ON A SATURDAY NIGHT MCMURDO WAS INTRODUCED TO THE LODGE + HE HAD THOUGHT TO PASS IN WITHOUT CEREMONY AS BEING AN INITIATE OF CHICAGO BUT THERE WERE PARTICULAR RITES IN VERMISSA OF WHICH THEY WERE PROUD AND THESE HAD TO BE UNDERGONE BY EVERY POSTULANT + THE ASSEMBLY MET IN A LARGE ROOM RESERVED FOR SUCH PURPOSES AT THE UNION HOUSE + SOME SIXTY MEMBERS ASSEMBLED AT VERMISSA BUT THAT BY NO MEANS REPRESENTED THE FULL STRENGTH OF THE ORGANIZATION FOR THERE WERE SEVERAL OTHER LODGES IN THE VALLEY AND OTHERS ACROSS THE MOUNTAINS ON EACH SIDE WHO EXCHANGED MEMBERS WHEN ANY SERIOUS BUSINESS WAS AFOOT SO THAT A CRIME MIGHT BE DONE BY MEN WHO WERE STRANGERS TO THE LOCALITY + ALTOGETHER THERE WERE NOT LESS THAN FIVE HUNDRED SCATTERED OVER THE COAL DISTRICT + IN THE BARE ASSEMBLY ROOM THE MEN WERE GATHERED ROUND A LONG TABLE + AT THE SIDE WAS A SECOND ONE LADEN WITH BOTTLES AND GLASSES ON WHICH SOME MEMBERS OF THE COMPANY WERE ALREADY TURNING THEIR EYES + MCGINTY SAT AT THE HEAD WITH A FLAT BLACK VELVET CAP UPON HIS SHOCK OF TANGLED BLACK HAIR AND A COLOURED PURPLE STOLE ROUND HIS NECK SO THAT HE SEEMED TO BE A PRIEST PRESIDING OVER SOME DIABOLICAL RITUAL + TO RIGHT AND LEFT OF HIM WERE THE HIGHER LODGE OFFICIALS THE CRUEL HANDSOME FACE OF TED BALDWIN AMONG THEM + EACH OF THESE WORE SOME SCARF OR MEDALLION AS EMBLEM OF HIS OFFICE + THEY WERE FOR THE MOST PART MEN OF MATURE AGE BUT THE REST OF THE COMPANY CONSISTED OF YOUNG FELLOWS FROM EIGHTEEN TO TWENTYFIVE THE READY AND CAPABLE AGENTS WHO CARRIED OUT THE COMMANDS OF THEIR SENIORS + AMONG THE OLDER MEN WERE MANY WHOSE FEATURES SHOWED THE TIGERISH LAWLESS SOULS WITHIN BUT LOOKING AT THE RANK AND FILE IT WAS DIFFICULT TO BELIEVE THAT THESE EAGER AND OPEN FACED YOUNG FELLOWS WERE IN VERY TRUTH A DANGEROUS GANG OF MURDERERS WHOSE MINDS HAD SUFFERED SUCH COMPLETE MORAL PERVERSION THAT THEY TOOK A HORRIBLE PRIDE IN THEIR PROFICIENCY AT THE BUSINESS AND LOOKED WITH DEEPEST RESPECT AT THE MAN WHO HAD THE REPUTATION OF MAKING WHAT THEY CALLED A CLEAN JOB + TO THEIR CONTORTED NATURES IT HAD BECOME A SPIRITED AND CHIVALROUS THING TO VOLUNTEER FOR SERVICE AGAINST SOME MAN WHO HAD NEVER INJURED THEM AND WHOM IN MANY CASES THEY HAD NEVER SEEN IN THEIR LIVES + THE CRIME COMMITTED THEY QUARRELLED AS TO WHO HAD ACTUALLY STRUCK THE FATAL BLOW AND AMUSED ONE ANOTHER AND THE COMPANY BY DESCRIBING THE CRIES AND CONTORTIONS OF THE MURDERED MAN + AT FIRST THEY HAD SHOWN SOME SECRECY IN THEIR ARRANGEMENTS BUT AT THE TIME WHICH THIS NARRATIVE DESCRIBES THEIR PROCEEDINGS WERE EXTRAORDINARILY OPEN FOR THE REPEATED FAILURES OF THE LAW HAD PROVED TO THEM THAT ON THE ONE HAND NO ONE WOULD DARE TO WITNESS AGAINST THEM AND ON THE OTHER THEY HAD AN UNLIMITED NUMBER OF STANCH WITNESSES UPON WHOM THEY COULD CALL AND A WELL FILLED TREASURE CHEST FROM WHICH THEY COULD DRAW THE FUNDS TO ENGAGE THE BEST LEGAL TALENT IN THE STATE + IN TEN LONG YEARS OF OUTRAGE THERE HAD BEEN NO SINGLE CONVICTION AND THC ONLY DANGER THAT EVER THREATENED THE SCOWRERS LAY IN THE VICTIM HIMSELF WHO HOWEVER OUTNUMBERED AND TAKEN BY SURPRISE MIGHT AND OCCASIONALLY DID LEAVE HIS MARK UPON HIS ASSAILANTS + MCMURDO HAD BEEN WARNED THAT SOME ORDEAL LAY BEFORE HIM BUT NO ONE WOULD TELL HIM IN WHAT IT CONSISTED + HE WAS LED NOW INTO AN OUTER ROOM BY TWO SOLEMN BROTHERS + THROUGH THE PLANK PARTITION HE COULD HEAR THE MURMUR OF MANY VOICES FROM THE ASSEMBLY WITHIN + ONCE OR TWICE HE CAUGHT THE SOUND OF HIS OWN NAME AND HE KNEW THAT THEY WERE DISCUSSING HIS CANDIDACY + THEN THERE ENTERED AN INNER GUARD WITH A GREEN AND GOLD SASH ACROSS HIS CHEST + QUOTE THE BODYMASTER ORDERS THAT HE SHALL BE TRUSSED BLINDED AND ENTERED QUOTE SAID HE + THE THREE OF THEM REMOVED HIS COAT TURNED UP THE SLEEVE OF HIS RIGHT ARM AND FINALLY PASSED A ROPE ROUND ABOVE THE ELBOWS AND MADE IT FAST + THEY NEXT PLACED A THICK BLACK CAP RIGHT OVER HIS HEAD AND THE UPPER PART OF HIS FACE SO THAT HE COULD SEE NOTHING + HE WAS THEN LED INTO THE ASSEMBLY HALL + IT WAS PITCH DARK AND VERY OPPRESSIVE UNDER HIS HOOD + HE HEARD THE RUSTLE AND MURMUR OF THE PEOPLE ROUND HIM AND THEN THE VOICE OF MCGINTY SOUNDED DULL AND DISTANT THROUGH THE COVERING OF HIS EARS + JOHN MCMURDO SAID THE VOICE ARE YOU ALREADY A MEMBER OF THE ANCIENT ORDER OF FREEMEN + HE BOWED IN ASSENT + IS YOUR LODGE NUMBER TWENTY NINE CHICAGO + HE BOWED AGAIN + DARK NIGHTS ARE UNPLEASANT SAID THE VOICE + YES FOR STRANGERS TO TRAVEL HE ANSWERED + THE CLOUDS ARE HEAVY + QUOTE YES A STORM IS APPROACHING QUOTE + ARE THE BRETHREN SATISFIED ASKED THE BODYMASTER + THERE WAS A GENERAL MURMUR OF ASSENT + WE KNOW BROTHER BY YOUR SIGN AND BY YOUR COUNTERSIGN THAT YOU ARE INDEED ONE OF US SAID MCGINTY + WE WOULD HAVE YOU KNOW HOWEVER THAT IN THIS COUNTY AND IN OTHER COUNTIES OF THESE PARTS WE HAVE CERTAIN RITES AND ALSO CERTAIN DUTIES OF OUR OWN WHICH CALL FOR GOOD MEN + ARE YOU READY TO BE TESTED + I AM + QUOTE ARE YOU OF STOUT HEART QUOTE + I AM + TAKE A STRIDE FORWARD TO PROVE IT + AS THE WORDS WERE SAID HE FELT TWO HARD POINTS IN FRONT OF HIS EYES PRESSING UPON THEM SO THAT IT APPEARED AS IF HE COULD NOT MOVE FORWARD WITHOUT A DANGER OF LOSING THEM + NONE THE LESS. HE NERVED HIMSELF TO STEP RESOLUTELY OUT AND AS HE DID SO THE PRESSURE MELTED AWAY + THERE WAS A LOW MURMUR OF APPLAUSE + HE IS OF STOUT HEART SAID THE VOICE + CAN YOU BEAR PAIN + AS WELL AS ANOTHER HE ANSWERED + QUOTE TEST HIM QUOTE + IT WAS ALL HE COULD DO TO KEEP HIMSELF FROM SCREAMING OUT FOR AN AGONIZING PAIN SHOT THROUGH HIS FOREARM + HE NEARLY FAINTED AT THE SUDDEN SHOCK OF IT BUT HE BIT HIS LIP AND CLENCHED HIS HANDS TO HIDE HIS AGONY + I CAN TAKE MORE THAN THAT SAID HE + THIS TIME THERE WAS LOUD APPLAUSE + A FINER FIRST APPEARANCE HAD NEVER BEEN MADE IN THE LODGE + HANDS CLAPPED HIM ON THE BACK AND THE HOOD WAS PLUCKED FROM HIS HEAD + HE STOOD BLINKING AND SMILING AMID THE CONGRATULATIONS OF THE BROTHERS + ONE LAST WORD BROTHER MCMURDO SAID MCGINTY + YOU HAVE ALREADY SWORN THE OATH OF SECRECY AND FIDELITY AND YOU ARE AWARE THAT THE PUNISHMENT FOR ANY BREACH OF IT IS INSTANT AND INEVITABLE DEATH + I AM SAID MCMURDO + AND YOU ACCEPT THE RULE OF THE BODYMASTER FOR THE TIME BEING UNDER ALL CIRCUMSTANCES + QUOTE I DO QUOTE + THEN IN THE NAME OF LODGE THREE HUNDRED FORTY ONE VEMMISSA I WELCOME YOU TO ITS PRIVILEGES AND DEBATES + YOU WILL PUT THE LIQUOR ON THE TABLE BROTHER SCANLAN AND WE WILL DRINK TO OUR WORTHY BROTHER + MCMURDO'S COAT HAD BEEN BROUGHT TO HIM BUT BEFORE PUTTING IT ON HE EXAMINED HIS RIGHT ARM WHICH STILL SMARTED HEAVILY + THERE ON THE FLESH OF THE FOREARM WAS A CIRCLE WITH A TRIANGLE WITHIN IT DEEP AND RED AS THE BRANDING IRON HAD LEFT IT + ONE OR TWO OF HIS NEIGHBOURS PULLED UP THEIR SLEEVES AND SHOWED THEIR OWN LODGE MARKS + WE'VE ALL HAD IT SAID ONE BUT NOT ALL AS BRAVE AS YOU OVER IT + TUT + IT WAS NOTHING SAID HE BUT IT BURNED AND ACHED ALL THE SAME + WHEN THE DRINKS WHICH FOLLOWED THE CEREMONY OF INITIATION HAD ALL BEEN DISPOSED OF THE BUSINESS OF THE LODGE PROCEEDED + MCMURDO ACCUSTOMED ONLY TO THE PROSAIC PERFORMANCES OF CHICAGO LISTENED WITH OPEN EARS AND MORE SURPRISE THAN HE VENTURED TO SHOW TO WHAT FOLLOWED + QUOTE THE FIRST BUSINESS ON THE AGENDA PAPER QUOTE SAID MCGINTY QUOTE IS TO READ THE FOLLOWING LETTER FROM DIVISION MASTER WINDLE OF MERTON COUNTY LODGE TWO HUNDRED FORTY NINE + HE SAYS DEAR SIR THERE IS A JOB TO BE DONE ON ANDREW RAE OF RAE AND STURMASH COAL OWNERS NEAR THIS PLACE + YOU WILL REMEMBER THAT YOUR LODGE OWES US A RETURN HAVING HAD THE SERVICE OF TWO BRETHREN IN THE MATTER OF THE PATROLMAN LAST FALL + YOU WILL SEND TWO GOOD MEN THEY WILL BE TAKEN CHARGE OF BY TREASURER HIGGINS OF THIS LODGE WHOSE ADDRESS YOU KNOW + HE WILL SHOW THEM WHEN TO ACT AND WHERE + YOURS IN FREEDOM J. W. WINDLE D. M. A. ZERO + F. + WINDLE HAS NEVER REFUSED US WHEN WE HAVE HAD OCCASION TO ASK FOR THE LOAN OF A MAN OR TWO AND IT IS NOT FOR US TO REFUSE HIM + MCGINTY PAUSED AND LOOKED ROUND THE ROOM WITH HIS DULL MALEVOLENT EYES + WHO WILL VOLUNTEER FOR THE JOB + SEVERAL YOUNG FELLOWS HELD UP THEIR HANDS + THE BODYMASTER LOOKED AT THEM WITH AN APPROVING SMILE + YOU'LL DO TIGER CORMAC + IF YOU HANDLE IT AS WELL AS YOU DID THE LAST YOU WON'T BE WRONG + AND YOU WILSON QUOTE + I'VE NO PISTOL SAID THE VOLUNTEER A MERE BOY IN HIS TEENS + IT'S YOUR FIRST IS IT NOT + WELL YOU HAVE TO BE BLOODED SOME TIME + IT WILL BE A GREAT START FOR YOU + AS TO THE PISTOL YOU'LL FIND IT WAITING FOR YOU OR I'M MISTAKEN + IF YOU REPORT YOURSELVES ON MONDAY IT WILL BE TIME ENOUGH + YOU'LL GET A GREAT WELCOME WHEN YOU RETURN + ANY REWARD THIS TIME ASKED CORMAC A THICK SET DARKFACED BRUTAL LOOKING YOUNG MAN WHOSE FEROCITY HAD EAMED HIM THE NICKNAME OF TIGER + NEVER MIND THE REWARD + YOU JUST DO IT FOR THE HONOUR OF THE THING + MAYBE WHEN IT IS DONE THERE WILL BE A FEW ODD DOLLARS AT THE BOTTOM OF THE BOX QUOTE + WHAT HAS THE MAN DONE ASKED YOUNG WILSON + SURE IT'S NOT FOR THE LIKES OF YOU TO ASK WHAT THE MAN HAS DONE + HE HAS BEEN JUDGED OVER THERE + THAT'S NO BUSINESS OF OURS + ALL WE HAVE TO DO IS TO CARRY IT OUT FOR THEM SAME AS THEY WOULD FOR US + SPEAKING OF THAT TWO BROTHERS FROM THE MERTON LODGE ARE COMING OVER TO US NEXT WEEK TO DO SOME BUSINESS IN THIS QUARTER + WHO ARE THEY ASKED SOMEONE + FAITH IT IS WISER NOT TO ASK + IF YOU KNOW NOTHING YOU CAN TESTIFY NOTHING AND NO TROUBLE CAN COME OF IT + BUT THEY ARE MEN WHO WILL MAKE A CLEAN JOB WHEN THEY ARE ABOUT IT QUOTE + AND TIME TOO CRIED TED BALDWIN + FOLK ARE GETTIN' OUT OF HAND IN THESE PARTS + IT WAS ONLY LAST WEEK THAT THREE OF OUR MEN WERE TURNED OFF BY FOREMAN BLAKER + IT'S BEEN OWING HIM A LONG TIME AND HE'LL GET IT FULL AND PROPER + GET WHAT + MCMURDO WHISPERED TO HIS NEIGHBOUR + THE BUSINESS END OF A BUCKSHOT CARTRIDGE CRIED THE MAN WITH A LOUD LAUGH + QUOTE WHAT THINK YOU OF OUR WAYS BROTHER QUOTE + MCMURDO'S CRIMINAL SOUL SEEMED TO HAVE ALREADY ABSORBED THE SPIRIT OF THE VILE ASSOCIATION OF WHICH HE WAS NOW A MEMBER + I LIKE IT WELL SAID HE. TIS A PROPER PLACE FOR A LAD OF METTLE + SEVERAL OF THOSE WHO SAT AROUND HEARD HIS WORDS AND APPLAUDED THEM + WHAT'S THAT CRIED THE BLACK MANED BODYMASTER FROM THE END OF THE TABLE + TIS OUR NEW BROTHER SIR WHO FINDS OUR WAYS TO HIS TASTE + MCMURDO ROSE TO HIS FEET FOR AN INSTANT + I WOULD SAY EMINENT BODYMASTER THAT IF A MAN SHOULD BE WANTED I SHOULD TAKE IT AS AN HONOUR TO BE CHOSEN TO HELP THE LODGE + THERE WAS GREAT APPLAUSE AT THIS + IT WAS FELT THAT A NEW SUN WAS PUSHING ITS RIM ABOVE THE HORIZON + TO SOME OF THE ELDERS IT SEEMED THAT THE PROGRESS WAS A LITTLE TOO RAPID + I WOULD MOVE SAID THE SECRETARY HARRAWAY A VULTUREFACED OLD GRAYBEARD WHO SAT NEAR THE CHAIRMAN THAT BROTHER MCMURDO SHOULD WAIT UNTIL IT IS THE GOOD PLEASURE OF THE LODGE TO EMPLOY HIM + QUOTE SURE THAT WAS WHAT I MEANT I'M IN YOUR HANDS QUOTE SAID MCMURDO + YOUR TIME WILL COME BROTHER SAID THE CHAIRMAN + WE HAVE MARKED YOU DOWN AS A WILLING MAN AND WE BELIEVE THAT YOU WILL DO GOOD WORK IN THESE PARTS + THERE IS A SMALL MATTER TO NIGHT IN WHICH YOU MAY TAKE A HAND IF IT SO PLEASE YOU + I WILL WAIT FOR SOMETHING THAT IS WORTH WHILE + YOU CAN COME TO NIGHT ANYHOW AND IT WILL HELP YOU TO KNOW WHAT WE STAND FOR IN THIS COMMUNITY + I WILL MAKE THE ANNOUNCEMENT LATER + MEANWHILE QUOTE HE GLANCED AT HIS AGENDA PAPER QUOTE I HAVE ONE OR TWO MORE POINTS TO BRING BEFORE THE MEETING + FIRST OF ALL I WILL ASK THE TREASURER AS TO OUR BANK BALANCE + THERE IS THE PENSION TO JIM CARNAWAY'S WIDOW + HE WAS STRUCK DOWN DOING THE WORK OF THE LODGE AND IT IS FOR US TO SEE THAT SHE IS NOT THE LOSER + JIM WAS SHOT LAST MONTH WHEN THEY TRIED TO KILL CHESTER WILCOX OF MARLEY CREEK MCMURDO'S NEIGHBOUR INFORMED HIM + THE FUNDS ARE GOOD AT THE MOMENT SAID THE TREASURER WITH THE BANKBOOK IN FRONT OF HIM + THE FIRMS HAVE BEEN GENEROUS OF LATE + MAX LINDER AND COMPANY PAID FIVE HUNDRED TO BE LEFT ALONE + WALKER BROTHERS SENT IN A HUNDRED BUT I TOOK IT ON MYSELF TO RETURN IT AND ASK FOR FIVE + IF I DO NOT HEAR BY WEDNESDAY THEIR WINDING GEAR MAY GET OUT OF ORDER + WE HAD TO BURN THEIR BREAKER LAST YEAR BEFORE THEY BECAME REASONABLE + THEN THE WEST SECTION COALING COMPANY HAS PAID ITS ANNUAL CONTRIBUTION + WE HAVE ENOUGH ON HAND TO MEET ANY OBLIGATIONS + QUOTE WHAT ABOUT ARCHIE SWINDON QUOTE ASKED A BROTHER + HE HAS SOLD OUT AND LEFT THE DISTRICT + THE OLD DEVIL LEFT A NOTE FOR US TO SAY THAT HE HAD RATHER BE A FREE CROSSING SWEEPER IN NEW YORK THAN A LARGE MINE OWNER UNDER THE POWER OF A RING OF BLACKMAILERS + BY GAR IT WAS AS WELL THAT HE MADE A BREAK FOR IT BEFORE THE NOTE REACHED US + I GUESS HE WON'T SHOW HIS FACE IN THIS VALLEY AGAIN + AN ELDERLY CLEAN SHAVED MAN WITH A KINDLY FACE AND A GOOD BROW ROSE FROM THE END OF THE TABLE WHICH FACED THE CHAIRMAN + MR. TREASURER HE ASKED MAY I ASK WHO HAS BOUGHT THE PROPERTY OF THIS MAN THAT WE HAVE DRIVEN OUT OF THE DISTRICT + YES BROTHER MORRIS + IT HAS BEEN BOUGHT BY THE STATE AND MERTON COUNTY RAILROAD COMPANY + QUOTE AND WHO BOUGHT THE MINES OF TODMAN AND OF LEE THAT CAME INTO THE MARKET IN THE SAME WAY LAST YEAR QUOTE + THE SAME COMPANY BROTHER MORRIS + AND WHO BOUGHT THE IRONWORKS OF MANSON AND OF SHUMAN AND OF VAN DEHER AND OF ATWOOD WHICH HAVE ALL BEEN GIVEN UP OF LATE + THEY WERE ALL BOUGHT BY THE WEST GILMERTON GENERAL MINING COMPANY + I DON'T SEE BROTHER MORRIS SAID THE CHAIRMAN THAT IT MATTERS TO US WHO BUYS THEM SINCE THEY CAN'T CARRY THEM OUT OF THE DISTRICT + WITH ALL RESPECT TO YOU EMINENT BODYMASTER I THINK IT MAY MATTER VERY MUCH TO US + THIS PROCESS HAS BEEN GOING ON NOW FOR TEN LONG YEARS + WE ARE GRADUALLY DRIVING ALL THE SMALL MEN OUT OF TRADE + WHAT IS THE RESULT + WE FIND IN THEIR PLACES GREAT COMPANIES LIKE THE RAILROAD OR THE GENERAL IRON WHO HAVE THEIR DIRECTORS IN NEW YORK OR PHILADELPHIA AND CARE NOTHING FOR OUR THREATS + WE CAN TAKE IT OUT OF THEIR LOCAL BOSSES BUT IT ONLY MEANS THAT OTHERS WILL BE SENT IN THEIR STEAD + AND WE ARE MAKING IT DANGEROUS FOR OURSELVES + THE SMALL MEN COULD NOT HARM US + THEY HAD NOT THE MONEY NOR THE POWER + SO LONG AS WE DID NOT SQUEEZE THEM TOO DRY THEY WOULD STAY ON UNDER OUR POWER + BUT IF THESE BIG COMPANIES FIND THAT WE STAND BETWEEN THEM AND THEIR PROFITS THEY WILL SPARE NO PAINS AND NO EXPENSE TO HUNT US DOWN AND BRING US TO COURT QUOTE + THERE WAS A HUSH AT THESE OMINOUS WORDS AND EVERY FACE DARKENED AS GLOOMY LOOKS WERE EXCHANGED + SO OMNIPOTENT AND UNCHALLENGED HAD THEY BEEN THAT THE VERY THOUGHT THAT THERE WAS POSSIBLE RETRIBUTION IN THE BACKGROUND HAD BEEN BANISHED FROM THEIR MINDS + AND YET THE IDEA STRUCK A CHILL TO THE MOST RECKLESS OF THEM + IT IS MY ADVICE THE SPEAKER CONTINUED THAT WE GO EASIER UPON THE SMALL MEN + ON THE DAY THAT THEY HAVE ALL BEEN DRIVEN OUT THE POWER OF THIS SOCIETY WILL HAVE BEEN BROKEN + UNWELCOME TRUTHS ARE NOT POPULAR + THERE WERE ANGRY CRIES AS THE SPEAKER RESUMED HIS SEAT + MCGINTY ROSE WITH GLOOM UPON HIS BROW + BROTHER MORRIS SAID HE YOU WERE ALWAYS A CROAKER + SO LONG AS THE MEMBERS OF THIS LODGE STAND TOGETHER THERE IS NO POWER IN THE UNITED STATES THAT CAN TOUCH THEM + SURE HAVE WE NOT TRIED IT OFTEN ENOUGH IN THE LAW COURTS + I EXPECT THE BIG COMPANIES WILL FIND IT EASIER TO PAY THAN TO FIGHT SAME AS THE LITTLE COMPANIES DO + AND NOW BRETHREN MCGINTY TOOK OFF HIS BLACK VELVET CAP AND HIS STOLE AS HE SPOKE THIS LODGE HAS FINISHED ITS BUSINESS FOR THE EVENING SAVE FOR ONE SMALL MATTER WHICH MAY BE MENTIONED WHEN WE ARE PARTING + THE TIME HAS NOW COME FOR FRATERNAL REFRESHMENT AND FOR HARMONY + STRANGE INDEED IS HUMAN NATURE + HERE WERE THESE MEN TO WHOM MURDER WAS FAMILIAR WHO AGAIN AND AGAIN HAD STRUCK DOWN THE FATHER OF THE FAMILY SOME MAN AGAINST WHOM THEY HAD NO PERSONAL FEELING WITHOUT ONE THOUGHT OF COMPUNCTION OR OF COMPASSION FOR HIS WEEPING WIFE OR HELPLESS CHILDREN AND YET THE TENDER OR PATHETIC IN MUSIC COULD MOVE THEM TO TEARS + MCMURDO HAD A FINE TENOR VOICE AND IF HE HAD FAILED TO GAIN THE GOOD WILL OF THE LODGE BEFORE IT COULD NO LONGER HAVE BEEN WITHHELD AFTER HE HAD THRILLED THEM WITH QUOTE I'M SITTING ON THE STILE MARY QUOTE AND QUOTE ON THE BANKS OF ALLAN WATER QUOTE + IN HIS VERY FIRST NIGHT THE NEW RECRUIT HAD MADE HIMSELF ONE OF THE MOST POPULAR OF THE BRETHREN MARKED ALREADY FOR ADVANCEMENT AND HIGH OFFICE + THERE WERE OTHER QUALITIES NEEDED HOWEVER BESIDES THOSE OF GOOD FELLOWSHIP TO MAKE A WORTHY FREEMAN AND OF THESE HE WAS GIVEN AN EXAMPLE BEFORE THE EVENING WAS OVER + THE WHISKY BOTTLE HAD PASSED ROUND MANY TIMES AND THE MEN WERE FLUSHED AND RIPE FOR MISCHIEF WHEN THEIR BODYMASTER ROSE ONCE MORE TO ADDRESS THEM + BOYS SAID HE THERE'S ONE MAN IN THIS TOWN THAT WANTS TRIMMING UP AND IT'S FOR YOU TO SEE THAT HE GETS IT + I'M SPEAKING OF JAMES STANGER OF THE HERALD + YOU'VE SEEN HOW HE'S BEEN OPENING HIS MOUTH AGAINST US AGAIN + THERE WAS A MURMUR OF ASSENT WITH MANY A MUTTERED OATH + MCGINTY TOOK A SLIP OF PAPER FROM HIS WAISTCOAT POCKET + LAW AND ORDER + THAT'S HOW HE HEADS IT + REIGN OF TERROR IN THE COAL AND IRON DISTRICT TWELVE YEARS HAVE NOW ELAPSED SINCE THE FIRST ASSASSINA TIONS WHICH PROVED THE EXISTENCE OF A CRIMINAL ORGANIZATION IN OUR MIDST + FROM THAT DAY THESE OUTRAGES HAVE NEVER CEASED UNTIL NOW THEY HAVE REACHED A PITCH WHICH MAKES US THE OPPROBRIUM OF THE CIVILIZED WORLD + IS IT FOR SUCH RESULTS AS THIS THAT OUR GREAT COUNTRY WELCOMES TO ITS BOSOM THE ALIEN WHO FLIES FROM THE DESPOTISMS OF EUROPE + IS IT THAT THEY SHALL THEMSELVES BECOME TYRANTS OVER THE VERY MEN WHO HAVE GIVEN THEM SHELTER AND THAT A STATE OF TERRORISM AND LAWLESSNESS SHOULD BE ESTABLISHED UNDER THE VERY SHADOW OF THE SACRED FOLDS OF THE STARRY FLAG OF FREEDOM WHICH WOULD RAISE HORROR IN OUR MINDS IF WE READ OF IT AS EXISTING UNDER THE MOST EFFETE MONARCHY OF THE EAST + THE MEN ARE KNOWN + THE ORGANIZATION IS PATENT AND PUBLIC + HOW LONG ARE WE TO ENDURE IT + CAN WE FOREVER LIVE SURE I'VE READ ENOUGH OF THE SLUSH CRIED THE CHAIRMAN TOSSING THE PAPER DOWN UPON THE TABLE + QUOTE THAT'S WHAT HE SAYS OF US + THE QUESTION I'M ASKING YOU IS WHAT SHALL WE SAY TO HIM + KILL HIM CRIED A DOZEN FIERCE VOICES + I PROTEST AGAINST THAT SAID BROTHER MORRIS THE MAN OF THE GOOD BROW AND SHAVED FACE + I TELL YOU BRETHREN THAT OUR HAND IS TOO HEAVY IN THIS VALLEY AND THAT THERE WILL COME A POINT WHERE IN SELF DEFENSE EVERY MAN WILL UNITE TO CRUSH US OUT + JAMES STANGER IS AN OLD MAN + HE IS RESPECTED IN THE TOWNSHIP AND THE DISTRICT + HIS PAPER STANDS FOR ALL THAT IS SOLID IN THE VALLEY + IF THAT MAN IS STRUCK DOWN THERE WILL BE A STIR THROUGH THIS STATE THAT WILL ONLY END WITH OUR DESTRUCTION + QUOTE AND HOW WOULD THEY BRING ABOUT OUR DESTRUCTION MR. STANDBACK QUOTE CRIED MCGINTY + IS IT BY THE POLICE + SURE HALF OF THEM ARE IN OUR PAY AND HALF OF THEM AFRAID OF US + OR IS IT BY THE LAW COURTS AND THE JUDGE + HAVEN'T WE TRIED THAT BEFORE NOW AND WHAT EVER CAME OF IT + THERE IS A JUDGE LYNCH THAT MIGHT TRY THE CASE SAID BROTHER MORRIS + A GENERAL SHOUT OF ANGER GREETED THE SUGGESTION + I HAVE BUT TO RAISE MY FINGER CRIED MCGINTY AND I COULD PUT TWO HUNDRED MEN INTO THIS TOWN THAT WOULD CLEAR IT OUT FROM END TO END + THEN SUDDENLY RAISING HIS VOICE AND BENDING HIS HUGE BLACK BROWS INTO A TERRIBLE FROWN SEE HERE BROTHER MORRIS I HAVE MY EYE ON YOU AND HAVE HAD FOR SOME TIME + YOU'VE NO HEART YOURSELF AND YOU TRY TO TAKE THE HEART OUT OF OTHERS + IT WILL BE AN ILL DAY FOR YOU BROTHER MORRIS WHEN YOUR OWN NAME COMES ON OUR AGENDA PAPER AND I'M THINKING THAT IT'S JUST THERE THAT I OUGHT TO PLACE IT QUOTE + MORRIS HAD TURNED DEADLY PALE AND HIS KNEES SEEMED TO GIVE WAY UNDER HIM AS HE FELL BACK INTO HIS CHAIR + HE RAISED HIS GLASS IN HIS TREMBLING HAND AND DRANK BEFORE HE COULD ANSWER + I APOLOGIZE EMINENT BODYMASTER TO YOU AND TO EVERY BROTHER IN THIS LODGE IF I HAVE SAID MORE THAN I SHOULD + I AM A FAITHFUL MEMBER YOU ALL KNOW THAT AND IT IS MY FEAR LEST EVIL COME TO THE LODGE WHICH MAKES ME SPEAK IN ANXIOUS WORDS + BUT I HAVE GREATER TRUST IN YOUR JUDGMENT THAN IN MY OWN EMINENT BODYMASTER AND I PROMISE YOU THAT I WILL NOT OFFEND AGAIN + THE BODYMASTER'S SCOWL RELAXED AS HE LISTENED TO THE HUMBLE WORDS + VERY GOOD BROTHER MORRIS + IT'S MYSELF THAT WOULD BE SORRY IF IT WERE NEEDFUL TO GIVE YOU A LESSON + BUT SO LONG AS I AM IN THIS CHAIR WE SHALL BE A UNITED LODGE IN WORD AND IN DEED + AND NOW BOYS HE CONTINUED LOOKING ROUND AT THE COMPANY I'LL SAY THIS MUCH THAT IF STANGER GOT HIS FULL DESERTS THERE WOULD BE MORE TROUBLE THAN WE NEED ASK FOR + THESE EDITORS HANG TOGETHER AND EVERY JOURNAL IN THE STATE WOULD BE CRYING OUT FOR POLICE AND TROOPS + BUT I GUESS YOU CAN GIVE HIM A PRETTY SEVERE WARNING + WILL YOU FIX IT BROTHER BALDWIN + QUOTE SURE QUOTE SAID THE YOUNG MAN EAGERLY + HOW MANY WILL YOU TAKE + HALF A DOZEN AND TWO TO GUARD THE DOOR + YOU'LL COME GOWER AND YOU MANSEL AND YOU SCANLAN AND THE TWO WILLABYS + I PROMISED THE NEW BROTHER HE SHOULD GO SAID THE CHAIRMAN + TED BALDWIN LOOKED AT MCMURDO WITH EYES WHICH SHOWED THAT HE HAD NOT FORGOTTEN NOR FORGIVEN + WELL HE CAN COME IF HE WANTS HE SAID IN A SURLY VOICE + QUOTE THAT'S ENOUGH + THE SOONER WE GET TO WORK THE BETTER + THE COMPANY BROKE UP WITH SHOUTS AND YELLS AND SNATCHES OF DRUNKEN SONG + THE BAR WAS STILL CROWDED WITH REVELLERS AND MANY OF THE BRETHREN REMAINED THERE + THE LITTLE BAND WHO HAD BEEN TOLD OFF FOR DUTY PASSED OUT INTO THE STREET PROCEEDING IN TWOS AND THREES ALONG THE SIDEWALK SO AS NOT TO PROVOKE ATTENTION + IT WAS A BITTERLY COLD NIGHT WITH A HALF MOON SHINING BRILLIANTLY IN A FROSTY STAR SPANGLED SKY + THE MEN STOPPED AND GATHERED IN A YARD WHICH FACED A HIGH BUILDING + THE WORDS VEMMISSA HERALD WERE PRINTED IN GOLD LETTERING BETWEEN THE BRIGHTLY LIT WINDOWS + FROM WITHIN CAME THE CLANKING OF THE PRINTING PRESS + HERE YOU SAID BALDWIN TO MCMURDO YOU CAN STAND BELOW AT THE DOOR AND SEE THAT THE ROAD IS KEPT OPEN FOR US + ARTHUR WILLABY CAN STAY WITH YOU + YOU OTHERS COME WITH ME + HAVE NO FEARS BOYS FOR WE HAVE A DOZEN WITNESSES THAT WE ARE IN THE UNION BAR AT THIS VERY MOMENT + IT WAS NEARLY MIDNIGHT AND THE STREET WAS DESERTED SAVE FOR ONE OR TWO REVELLERS UPON THEIR WAY HOME + THE PARTY CROSSED THE ROAD AND PUSHING OPEN THE DOOR OF THE NEWSPAPER OFFICE BALDWIN AND HIS MEN RUSHED IN AND UP THE STAIR WHICH FACED THEM + MCMURDO AND ANOTHER REMAINED BELOW + FROM THE ROOM ABOVE CAME A SHOUT A CRY FOR HELP AND THEN THE SOUND OF TRAMPLING FEET AND OF FALLING CHAIRS + AN INSTANT LATER A GRAY HAIRED MAN RUSHED OUT ON THE LANDING + HE WAS SEIZED BEFORE HE COULD GET FARTHER AND HIS SPECTACLES CAME TINKLING DOWN TO MCMURDO'S FEET + THERE WAS A THUD AND A GROAN + HE WAS ON HIS FACE AND HALF A DOZEN STICKS WERE CLATTERING TOGETHER AS THEY FELL UPON HIM + HE WRITHED AND HIS LONG THIN LIMBS QUIVERED UNDER THE BLOWS + THE OTHERS CEASED AT LAST BUT BALDWIN HIS CRUEL FACE SET IN AN INFERNAL SMILE WAS HACKING AT THE MAN'S HEAD WHICH HE VAINLY ENDEAVOURED TO DEFEND WITH HIS ARMS + HIS WHITE HAIR WAS DABBLED WITH PATCHES OF BLOOD + BALDWIN WAS STILL STOOPING OVER HIS VICTIM PUTTING IN A SHORT VICIOUS BLOW WHENEVER HE COULD SEE A PART EXPOSED WHEN MCMURDO DASHED UP THE STAIR AND PUSHED HIM BACK + YOU'LL KILL THE MAN SAID HE + QUOTE DROP IT QUOTE + BALDWIN LOOKED AT HIM IN AMAZEMENT + CURSE YOU HE CRIED + WHO ARE YOU TO INTERFERE YOU THAT ARE NEW TO THE LODGE + STAND BACK + HE RAISED HIS STICK BUT MCMURDO HAD WHIPPED HIS PISTOL OUT OF HIS HIP POCKET + STAND BACK YOURSELF HE CRIED + I'LL BLOW YOUR FACE IN IF YOU LAY A HAND ON ME + AS TO THE LODGE WASN'T IT THE ORDER OF THE BODYMASTER THAT THE MAN WAS NOT TO BE KILLED AND WHAT ARE YOU DOING BUT KILLING HIM QUOTE + IT'S TRUTH HE SAYS REMARKED ONE OF THE MEN + BY GAR YOU'D BEST HURRY YOURSELVES CRIED THE MAN BELOW + THE WINDOWS ARE ALL LIGHTING UP AND YOU'LL HAVE THE WHOLE TOWN HERE INSIDE OF FIVE MINUTES + THERE WAS INDEED THE SOUND OF SHOUTING IN THE STREET AND A LITTLE GROUP OF COMPOSITORS AND PRESSMEN WAS FORMING IN THE HALL BELOW AND NERVING ITSELF TO ACTION + LEAVING THE LIMP AND MOTIONLESS BODY OF THE EDITOR AT THE HEAD OF THE STAIR THE CRIMINALS RUSHED DOWN AND MADE THEIR WAY SWIFTLY ALONG THE STREET + HAVING REACHED THE UNION HOUSE SOME OF THEM MIXED WITH THE CROWD IN MCGINTY'S SALOON WHISPERING ACROSS THE BAR TO THE BOSS THAT THE JOB HAD BEEN WELL CARRIED THROUGH + OTHERS AND AMONG THEM MCMURDO BROKE AWAY INTO SIDE STREETS AND SO BY DEVIOUS PATHS TO THEIR OWN HOMES + CHAPTER FOUR THE VALLEY OF FEAR + WHEN MCMURDO AWOKE NEXT MORNING HE HAD GOOD REASON TO REMEMBER HIS INITIATION INTO THE LODGE + HIS HEAD ACHED WITH THE EFFECT OF THE DRINK AND HIS ARM WHERE HE HAD BEEN BRANDED WAS HOT AND SWOLLEN + HAVING HIS OWN PECULIAR SOURCE OF INCOME HE WAS IRREGULAR IN HIS ATTENDANCE AT HIS WORK SO HE HAD A LATE BREAKFAST AND REMAINED AT HOME FOR THE MORNING WRITING A LONG LETTER TO A FRIEND + AFTERWARDS HE READ THE DAILY HERALD + IN A SPECIAL COLUMN PUT IN AT THE LAST MOMENT HE READ OUTRAGE A. T. THE HERALD OFFICE EDITOR SERIOUSLY INJURED + IT WAS A SHORT ACCOUNT OF THE FACTS WITH WHICH HE WAS HIMSELF MORE FAMILIAR THAN THE WRITER COULD HAVE BEEN + IT ENDED WITH THE STATEMENT THE MATTER IS NOW IN THE HANDS OF THE POLICE BUT IT CAN HARDLY BE HOPED THAT THEIR EXERTIONS WILL BE ATTENDED BY ANY BETTER RESULTS THAN IN THE PAST + SOME OF THE MEN WERE RECOGNIZED AND THERE IS HOPE THAT A CONVICTION MAY BE OBTAINED + THE SOURCE OF THE OUTRAGE WAS IT NEED HARDLY BE SAID THAT INFAMOUS SOCIETY WHICH HAS HELD THIS COMMUNITY IN BONDAGE FOR SO LONG A PERIOD AND AGAINST WHICH THE HERALD HAS TAKEN SO UNCOMPROMISING A STAND + MR. STANGER'S MANY FRIENDS WILL REJOICE TO HEAR THAT THOUGH HE HAS BEEN CRUELLY AND BRUTALLY BEATEN AND THOUGH HE HAS SUSTAINED SEVERE INJURIES ABOUT THE HEAD THERE IS NO IMMEDIATE DANGER TO HIS LIFE + BELOW IT STATED THAT A GUARD OF POLICE ARMED WITH WINCHESTER RIFLES HAD BEEN REQUISITIONED FOR THE DEFENSE OF THE OFFICE + MCMURDO HAD LAID DOWN THE PAPER AND WAS LIGHTING HIS PIPE WITH A HAND WHICH WAS SHAKY FROM THE EXCESSES OF THE PREVIOUS EVENING WHEN THERE WAS A KNOCK OUTSIDE AND HIS LANDLADY BROUGHT TO HIM A NOTE WHICH HAD JUST BEEN HANDED IN BY A LAD + IT WAS UNSIGNED AND RAN THUS I SHOULD WISH TO SPEAK TO YOU BUT WOULD RATHER NOT DO SO IN YOUR HOUSE + YOU WILL FIND ME BESIDE THE FLAGSTAFF UPON MILLER HILL + IF YOU WILL COME THERE NOW I HAVE SOMETHING WHICH IT IS IMPORTANT FOR YOU TO HEAR AND FOR ME TO SAY + MCMURDO READ THE NOTE TWICE WITH THE UTMOST SURPRISE FOR HE COULD NOT IMAGINE WHAT IT MEANT OR WHO WAS THE AUTHOR OF IT + HAD IT BEEN IN A FEMININE HAND HE MIGHT HAVE IMAGINED THAT IT WAS THE BEGINNING OF ONE OF THOSE ADVENTURES WHICH HAD BEEN FAMILIAR ENOUGH IN HIS PAST LIFE + BUT IT WAS THE WRITING OF A MAN AND OF A WELL EDUCATED ONE TOO + FINALLY AFTER SOME HESITATION HE DETERMINED TO SEE THE MATTER THROUGH + MILLER HILL IS AN ILL KEPT PUBLIC PARK IN THE VERY CENTRE OF THE TOWN + IN SUMMER IT IS A FAVOURITE RESORT OF THE PEOPLE BUT IN WINTER IT IS DESOLATE ENOUGH + FROM THE TOP OF IT ONE HAS A VIEW NOT ONLY OF THE WHOLE STRAGGLING GRIMY TOWN BUT OF THE WINDING VALLEY BENEATH WITH ITS SCATTERED MINES AND FACTORIES BLACKENING THE SNOW ON EACH SIDE OF IT AND OF THE WOODED AND WHITE CAPPED RANGES FLANKING IT + MCMURDO STROLLED UP THE WINDING PATH HEDGED IN WITH EVERGREENS UNTIL HE REACHED THE DESERTED RESTAURANT WHICH FORMS THE CENTRE OF SUMMER GAIETY + BESIDE IT WAS A BARE FLAGSTAFF AND UNDERNEATH IT A MAN HIS HAT DRAWN DOWN AND THE COLLAR OF HIS OVERCOAT TURNED UP + WHEN HE TURNED HIS FACE MCMURDO SAW THAT IT WAS BROTHER MORRIS HE WHO HAD INCURRED THE ANGER OF THE BODYMASTER THE NIGHT BEFORE + THE LODGE SIGN WAS GIVEN AND EXCHANGED AS THEY MET + I WANTED TO HAVE A WORD WITH YOU MR. MCMURDO SAID THE OLDER MAN SPEAKING WITH A HESITATION WHICH SHOWED THAT HE WAS ON DELICATE GROUND + IT WAS KIND OF YOU TO COME + QUOTE WHY DID YOU NOT PUT YOUR NAME TO THE NOTE QUOTE + ONE HAS TO BE CAUTIOUS MISTER + ONE NEVER KNOWS IN TIMES LIKE THESE HOW A THING MAY COME BACK TO ONE + ONE NEVER KNOWS EITHER WHO TO TRUST OR WHO NOT TO TRUST + SURELY ONE MAY TRUST BROTHERS OF THE LODGE + NO NO NOT ALWAYS CRIED MORRIS WITH VEHEMENCE + WHATEVER WE SAY EVEN WHAT WE THINK SEEMS TO GO BACK TO THAT MAN MCGINTY + QUOTE LOOK HERE QUOTE SAID MCMURDO STERNLY + IT WAS ONLY LAST NIGHT AS YOU KNOW WELL THAT I SWORE GOOD FAITH TO OUR BODYMASTER + WOULD YOU BE ASKING ME TO BREAK MY OATH + IF THAT IS THE VIEW YOU TAKE SAID MORRIS SADLY I CAN ONLY SAY THAT I AM SORRY I GAVE YOU THE TROUBLE TO COME AND MEET ME + THINGS HAVE COME TO A BAD PASS WHEN TWO FREE CITIZENS CANNOT SPEAK THEIR THOUGHTS TO EACH OTHER + MCMURDO WHO HAD BEEN WATCHING HIS COMPANION VERY NARROWLY RELAXED SOMEWHAT IN HIS BEARING + SURE I SPOKE FOR MYSELF ONLY SAID HE + QUOTE I AM A NEWCOMER AS YOU KNOW AND I AM STRANGE TO IT ALL + IT IS NOT FOR ME TO OPEN MY MOUTH MR. MORRIS AND IF YOU THINK WELL TO SAY ANYTHING TO ME I AM HERE TO HEAR IT + AND TO TAKE IT BACK TO BOSS MCGINTY SAID MORRIS BITTERLY + INDEED THEN YOU DO ME INJUSTICE THERE CRIED MCMURDO + FOR MYSELF I AM LOYAL TO THE LODGE AND SO L. TELL YOU STRAIGHT BUT I WOULD BE A POOR CREATURE IF I WERE TO REPEAT TO ANY OTHER WHAT YOU MIGHT SAY TO ME IN CONFIDENCE + IT WILL GO NO FURTHER THAN ME THOUGH I WARN YOU THAT YOU MAY GET NEITHER HELP NOR SYMPATHY + QUOTE I HAVE GIVEN UP LOOKING FOR EITHER THE ONE OR THE OTHER QUOTE SAID MORRIS + I MAY BE PUTTING MY VERY LIFE IN YOUR HANDS BY WHAT I SAY BUT BAD AS YOU ARE AND IT SEEMED TO ME LAST NIGHT THAT YOU WERE SHAPING TO BE AS BAD AS THE WORST STILL YOU ARE NEW TO IT AND YOUR CONSCIENCE CANNOT YET BE AS HARDENED AS THEIRS + THAT WAS WHY I THOUGHT TO SPEAK WITH YOU + WELL WHAT HAVE YOU TO SAY + IF YOU GIVE ME AWAY MAY A CURSE BE ON YOU + SURE I SAID I WOULD NOT + QUOTE I WOULD ASK YOU THEN WHEN YOU JOINED THE FREEMAN'S SOCIETY IN CHICAGO AND SWORE VOWS OF CHARITY AND FIDELITY DID EVER IT CROSS YOUR MIND THAT YOU MIGHT FIND IT WOULD LEAD YOU TO CRIME QUOTE + IF YOU CALL IT CRIME MCMURDO ANSWERED + CALL IT CRIME CRIED MORRIS HIS VOICE VIBRATING WITH PASSION + YOU HAVE SEEN LITTLE OF IT IF YOU CAN CALL IT ANYTHING ELSE + WAS IT CRIME LAST NIGHT WHEN A MAN OLD ENOUGH TO BE YOUR FATHER WAS BEATEN TILL THE BLOOD DRIPPED FROM HIS WHITE HAIRS + WAS THAT CRIME OR WHAT ELSE WOULD YOU CALL IT + THERE ARE SOME WOULD SAY IT WAS WAR SAID MCMURDO A WAR OF TWO CLASSES WITH ALL IN SO THAT EACH STRUCK AS BEST IT COULD + QUOTE WELL DID YOU THINK OF SUCH A THING WHEN YOU JOINED THE FREEMAN'S SOCIETY AT CHICAGO QUOTE + NO I'M BOUND TO SAY I DID NOT + NOR DID I WHEN I JOINED IT AT PHILADELPHIA + IT WAS JUST A BENEFIT CLUB AND A MEETING PLACE FOR ONE'S FELLOWS + THEN I HEARD OF THIS PLACE CURSE THE HOUR THAT THE NAME FIRST FELL UPON MY EARS AND I CAME TO BETTER MYSELF + MY GOD TO BETTER MYSELF + MY WIFE AND THREE CHILDREN CAME WITH ME + I STARTED A DRYGOODS STORE ON MARKET SQUARE AND I PROSPERED WELL + THE WORD HAD GONE ROUND THAT I WAS A FREEMAN AND I WAS FORCED TO JOIN THE LOCAL LODGE SAME AS YOU DID LAST NIGHT + I'VE THE BADGE OF SHAME ON MY FOREARM AND SOMETHING WORSE BRANDED ON MY HEART + I FOUND THAT I WAS UNDER THE ORDERS OF A BLACK VILLAIN AND CAUGHT IN A MESHWORK OF CRIME + WHAT COULD I DO + EVERY WORD I SAID TO MAKE THINGS BETTER WAS TAKEN AS TREASON SAME AS IT WAS LAST NIGHT + I CAN'T GET AWAY FOR ALL I HAVE IN THE WORLD IS IN MY STORE + IF I LEAVE THE SOCIETY I KNOW WELL THAT IT MEANS MURDER TO ME AND GOD KNOWS WHAT TO MY WIFE AND CHILDREN + OH MAN IT IS AWFUL AWFUL + HE PUT HIS HANDS TO HIS FACE AND HIS BODY SHOOK WITH CONVULSIVE SOBS + MCMURDO SHRUGGED HIS SHOULDERS + YOU WERE TOO SOFT FOR THE JOB SAID HE + YOU ARE THE WRONG SORT FOR SUCH WORK + QUOTE I HAD A CONSCIENCE AND A RELIGION BUT THEY MADE ME A CRIMINAL AMONG THEM + I WAS CHOSEN FOR A JOB + IF I BACKED DOWN I KNEW WELL WHAT WOULD COME TO ME + MAYBE I'M A COWARD + MAYBE IT'S THE THOUGHT OF MY POOR LITTLE WOMAN AND THE CHILDREN THAT MAKES ME ONE + ANYHOW I WENT + I GUESS IT WILL HAUNT ME FOREVER + IT WAS A LONELY HOUSE TWENTY MILES FROM HERE OVER THE RANGE YONDER + I WAS TOLD OFF FOR THE DOOR SAME AS YOU WERE LAST NIGHT + THEY COULD NOT TRUST ME WITH THE JOB + THE OTHERS WENT IN + WHEN THEY CAME OUT THEIR HANDS WERE CRIMSON TO THE WRISTS + AS WE TURNED AWAY A CHILD WAS SCREAMING OUT OF THE HOUSE BEHIND US + IT WAS A BOY OF FIVE WHO HAD SEEN HIS FATHER MURDERED + I NEARLY FAINTED WITH THE HORROR OF IT AND YET I HAD TO KEEP A BOLD AND SMILING FACE FOR WELL I KNEW THAT IF I DID NOT IT WOULD BE OUT OF MY HOUSE THAT THEY WOULD COME NEXT WITH THEIR BLOODY HANDS AND IT WOULD BE MY LITTLE FRED THAT WOULD BE SCREAMING FOR HIS FATHER + BUT I WAS A CRIMINAL THEN PART SHARER IN A MURDER LOST FOREVER IN THIS WORLD AND LOST ALSO IN THE NEXT + I AM A GOOD CATHOLIC BUT THE PRIEST WOULD HAVE NO WORD WITH ME WHEN HE HEARD I WAS A SCOWRER AND I AM EXCOMMUNICATED FROM MY FAITH + THAT'S HOW IT STANDS WITH ME + AND T. SEE YOU GOING DOWN THE SAME ROAD AND I ASK YOU WHAT THE END IS TO BE + ARE YOU READY TO BE A COLD BLOODED MURDERER ALSO OR CAN WE DO ANYTHING TO STOP IT + WHAT WOULD YOU DO ASKED MCMURDO ABRUPTLY + YOU WOULD NOT INFORM + QUOTE GOD FORBID QUOTE CRIED MORRIS + SURE THE VERY THOUGHT WOULD COST ME MY LIFE + THAT'S WELL SAID MCMURDO + I'M THINKING THAT YOU ARE A WEAK MAN AND THAT YOU MAKE TOO MUCH OF THE MATTER + TOO MUCH + WAIT TILL YOU HAVE LIVED HERE LONGER + LOOK DOWN THE VALLEY + SEE THE CLOUD OF A HUNDRED CHIMNEYS THAT OVERSHADOWS IT + I TELL YOU THAT THE CLOUD OF MURDER HANGS THICKER AND LOWER THAN THAT OVER THE HEADS OF THE PEOPLE + IT IS THE VALLEY OF FEAR THE VALLEY OF DEATH + THE TERROR IS IN THE HEARTS OF THE PEOPLE FROM THE DUSK TO THE DAWN + WAIT YOUNG MAN AND YOU WILL LEARN FOR YOURSELF + QUOTE WELL I'LL LET YOU KNOW WHAT I THINK WHEN I HAVE SEEN MORE QUOTE SAID MCMURDO CARELESSLY + WHAT IS VERY CLEAR IS THAT YOU ARE NOT THE MAN FOR THE PLACE AND THAT THE SOONER YOU SELL OUT IF YOU ONLY GET A DIME A DOLLAR FOR WHAT THE BUSINESS IS WORTH THE BETTER IT WILL BE FOR YOU + WHAT YOU HAVE SAID IS SAFE WITH ME BUT BY GAR IF I THOUGHT YOU WERE AN INFORMER + NO NO CRIED MORRIS PITEOUSLY + WELL LET IT REST AT THAT + I'LL BEAR WHAT YOU HAVE SAID IN MIND AND MAYBE SOME DAY I'LL COME BACK TO IT + I EXPECT YOU MEANT KINDLY BY SPEAKING TO ME LIKE THIS + NOW I'LL BE GETTING HOME + QUOTE ONE WORD BEFORE YOU GO QUOTE SAID MORRIS + WE MAY HAVE BEEN SEEN TOGETHER + THEY MAY WANT TO KNOW WHAT WE HAVE SPOKEN ABOUT + AH THAT'S WELL THOUGHT OF + I OFFER YOU A CLERKSHIP IN MY STORE + AND I REFUSE IT + THAT'S OUR BUSINESS + WELL SO LONG BROTHER MORRIS AND MAY YOU FIND THINGS GO BETTER WITH YOU IN THE FUTURE QUOTE + THAT SAME AFTERNOON AS MCMURDO SAT SMOKING LOST IN THOUGHT BESIDE THE STOVE OF HIS SITTING ROOM THE DOOR SWUNG OPEN AND ITS FRAMEWORK WAS FILLED WITH THE HUGE FIGURE OF BOSS MCGINTY + HE PASSED THE SIGN AND THEN SEATING HIMSELF OPPOSITE TO THE YOUNG MAN HE LOOKED AT HIM STEADILY FOR SOME TIME A LOOK WHICH WAS AS STEADILY RETURNED + I'M NOT MUCH OF A VISITOR BROTHER MCMURDO HE SAID AT LAST + I GUESS I AM TOO BUSY OVER THE FOLK THAT VISIT ME + BUT I THOUGHT I'D STRETCH A POINT AND DROP DOWN TO SEE YOU IN YOUR OWN HOUSE + I'M PROUD TO SEE YOU HERE COUNCILLOR MCMURDO ANSWERED HEARTILY BRINGING HIS WHISKY BOTTLE OUT OF THE CUPBOARD + IT'S AN HONOUR THAT I HAD NOT EXPECTED + QUOTE HOW'S THE ARM QUOTE ASKED THE BOSS + MCMURDO MADE A WRY FACE + WELL I'M NOT FORGETTING IT HE SAID BUT IT'S WORTH IT + YES IT'S WORTH IT THE OTHER ANSWERED TO THOSE THAT ARE LOYAL AND GO THROUGH WITH IT AND ARE A HELP TO THE LODGE + WHAT WERE YOU SPEAKING TO BROTHER MORRIS ABOUT ON MILLER HILL THIS MORNING + THE QUESTION CAME SO SUDDENLY THAT IT WAS WELL THAT HE HAD HIS ANSWER PREPARED + HE BURST INTO A HEARTY LAUGH + MORRIS DIDN'T KNOW I COULD EARN A LIVING HERE AT HOME + HE SHAN'T KNOW EITHER FOR HE HAS GOT TOO MUCH CONSCIENCE FOR THE LIKES OF ME + BUT HE'S A GOOD HEARTED OLD CHAP + IT WAS HIS IDEA THAT I WAS AT A LOOSE END AND THAT HE WOULD DO ME A GOOD TURN BY OFFERING ME A CLERKSHIP IN A DRYGOODS STORE + QUOTE OH THAT WAS IT QUOTE + YES THAT WAS IT + AND YOU REFUSED IT + SURE + COULDN'T I EARN TEN TIMES AS MUCH IN MY OWN BEDROOM WITH FOUR HOURS' WORK + THAT'S SO + BUT I WOULDN'T GET ABOUT TOO MUCH WITH MORRIS QUOTE + WHY NOT + WELL I GUESS BECAUSE I TELL YOU NOT + THAT'S ENOUGH FOR MOST FOLK IN THESE PARTS + IT MAY BE ENOUGH FOR MOST FOLK BUT IT AIN'T ENOUGH FOR ME COUNCILLOR SAID MCMURDO BOLDLY + IF YOU ARE A JUDGE OF MEN YOU'LL KNOW THAT + THE SWARTHY GIANT GLARED AT HIM AND HIS HAIRY PAW CLOSED FOR AN INSTANT ROUND THE GLASS AS THOUGH HE WOULD HURL IT AT THE HEAD OF HIS COMPANION + THEN HE LAUGHED IN HIS LOUD BOISTEROUS INSINCERE FASHION + QUOTE YOU'RE A QUEER CARD FOR SURE QUOTE SAID HE + WELL IF YOU WANT REASONS I'LL GIVE THEM + DID MORRIS SAY NOTHING TO YOU AGAINST THE LODGE + NUMBER + NOR AGAINST ME + NUMBER + QUOTE WELL THAT'S BECAUSE HE DAREN'T TRUST YOU + BUT IN HIS HEART HE IS NOT A LOYAL BROTHER + WE KNOW THAT WELL + SO WE WATCH HIM AND WE WAIT FOR THE TIME TO ADMONISH HIM + I'M THINKING THAT THE TIME IS DRAWING NEAR + THERE'S NO ROOM FOR SCABBY SHEEP IN OUR PEN + BUT IF YOU KEEP COMPANY WITH A DISLOYAL MAN WE MIGHT THINK THAT YOU WERE DISLOYAL TOO + SEE + THERE'S NO CHANCE OF MY KEEPING COMPANY WITH HIM FOR I DISLIKE THE MAN MCMURDO ANSWERED + AS TO BEING DISLOYAL IF IT WAS ANY MAN BUT YOU HE WOULD NOT USE THE WORD TO ME TWICE + WELL THAT'S ENOUGH SAID MCGINTY DRAINING OFF HIS GLASS + I CAME DOWN TO GIVE YOU A WORD IN SEASON AND YOU'VE HAD IT + QUOTE I'D LIKE TO KNOW QUOTE SAID MCMURDO QUOTE HOW YOU EVER CAME TO LEARN THAT I HAD SPOKEN WITH MORRIS AT ALL QUOTE + MCGINTY LAUGHED + IT'S MY BUSINESS TO KNOW WHAT GOES ON IN THIS TOWNSHIP SAID HE + I GUESS YOU'D BEST RECKON ON MY HEARING ALL THAT PASSES + WELL TIME'S UP AND I'LL JUST SAY + BUT HIS LEAVETAKING WAS CUT SHORT IN A VERY UNEXPECTED FASHION + WITH A SUDDEN CRASH THE DOOR FLEW OPEN AND THREE FROWNING INTENT FACES GLARED IN AT THEM FROM UNDER THE PEAKS OF POLICE CAPS + MCMURDO SPRANG TO HIS FEET AND HALF DREW HIS REVOLVER BUT HIS ARM STOPPED MIDWAY AS HE BECAME CONSCIOUS THAT TWO WINCHESTER RIFLES WERE LEVELLED AT HIS HEAD + A MAN IN UNIFORM ADVANCED INTO THE ROOM A SIX SHOOTER IN HIS HAND + IT WAS CAPTAIN MARVIN ONCE OF CHICAGO AND NOW OF THE MINE CONSTABULARY + HE SHOOK HIS HEAD WITH A HALF SMILE AT MCMURDO + I THOUGHT YOU'D BE GETTING INTO TROUBLE MR. CROOKED MCMURDO OF CHICAGO SAID HE + CAN'T KEEP OUT OF IT CAN YOU + TAKE YOUR HAT AND COME ALONG WITH US QUOTE + I GUESS YOU'LL PAY FOR THIS CAPTAIN MARVIN SAID MCGINTY + WHO ARE YOU I'D LIKE TO KNOW TO BREAK INTO A HOUSE IN THIS FASHION AND MOLEST HONEST LAW ABIDING MEN + YOU'RE STANDING OUT IN THIS DEAL COUNCILLOR MCGINTY SAID THE POLICE CAPTAIN + WE ARE NOT OUT AFTER YOU BUT AFTER THIS MAN MCMURDO + IT IS FOR YOU TO HELP NOT TO HINDER US IN OUR DUTY + QUOTE HE IS A FRIEND OF MINE AND I'LL ANSWER FOR HIS CONDUCT QUOTE SAID THE BOSS + BY ALL ACCOUNTS MR. MCGINTY YOU MAY HAVE TO ANSWER FOR YOUR OWN CONDUCT SOME OF THESE DAYS THE CAPTAIN ANSWERED + THIS MAN MCMURDO WAS A CROOK BEFORE EVER HE CAME HERE AND HE'S A CROOK STILL + COVER HIM PATROLMAN WHILE I DISARM HIM + THERE'S MY PISTOL SAID MCMURDO COOLLY + MAYBE CAPTAIN MARVIN IF YOU AND I WERE ALONE AND FACE TO FACE YOU WOULD NOT TAKE ME SO EASILY + QUOTE WHERE'S YOUR WARRANT QUOTE ASKED MCGINTY + BY GAR A MAN MIGHT AS WELL LIVE IN RUSSIA AS IN VEMMISSA WHILE FOLK LIKE YOU ARE RUNNING THE POLICE + IT'S A CAPITALIST OUTRAGE AND YOU'LL HEAR MORE OF IT I RECKON + YOU DO WHAT YOU THINK IS YOUR DUTY THE BEST WAY YOU CAN COUNCILLOR + WE'LL LOOK AFTER OURS + WHAT AM I ACCUSED OF ASKED MCMURDO + QUOTE OF BEING CONCERNED IN THE BEATING OF OLD EDITOR STANGER AT THE HERALD OFFICE + IT WASN'T YOUR FAULT THAT IT ISN'T A MURDER CHARGE + WELL IF THAT'S ALL YOU HAVE AGAINST HIM CRIED MCGINTY WITH A LAUGH YOU CAN SAVE YOURSELF A DEAL OF TROUBLE BY DROPPING IT RIGHT NOW + THIS MAN WAS WITH ME IN MY SALOON PLAYING POKER UP TO MIDNIGHT AND I CAN BRING A DOZEN TO PROVE IT + THAT'S YOUR AFFAIR AND I GUESS YOU CAN SETTLE IT IN COURT TO MORROW + MEANWHILE COME ON MCMURDO AND COME QUIETLY IF YOU DON'T WANT A GUN ACROSS YOUR HEAD + YOU STAND WIDE MR. MCGINTY FOR I WARN YOU I WILL STAND NO RESISTANCE WHEN I AM ON DUTY + SO DETERMINED WAS THE APPEARANCE OF THE CAPTAIN THAT BOTH MCMURDO AND HIS BOSS WERE FORCED TO ACCEPT THE SITUATION + THE LATTER MANAGED TO HAVE A FEW WHISPERED WORDS WITH THE PRISONER BEFORE THEY PARTED + QUOTE WHAT ABOUT QUOTE HE JERKED HIS THUMB UPWARD TO SIGNIFY THE COINING PLANT + ALL RIGHT WHISPERED MCMURDO WHO HAD DEVISED A SAFE HIDING PLACE UNDER THE FLOOR + I'LL BID YOU GOOD BYE SAID THE BOSS SHAKING HANDS + I'LL SEE REILLY THE LAWYER AND TAKE THE DEFENSE UPON MYSELF + TAKE MY WORD FOR IT THAT THEY WON'T BE ABLE TO HOLD YOU + I WOULDN'T BET ON THAT + GUARD THE PRISONER YOU TWO AND SHOOT HIM IF HE TRIES ANY GAMES + I'LL SEARCH THE HOUSE BEFORE I LEAVE QUOTE + HE DID SO BUT APPARENTLY FOUND NO TRACE OF THE CONCEALED PLANT + WHEN HE HAD DESCENDED HE AND HIS MEN ESCORTED MCMURDO TO HEADQUARTERS + DARKNESS HAD FALLEN AND A KEEN BLIZZARD WAS BLOWING SO THAT THE STREETS WERE NEARLY DESERTED BUT A FEW LOITERERS FOLLOWED THE GROUP AND EMBOLDENED BY INVISIBILITY SHOUTED IMPRECATIONS AT THE PRISONER + LYNCH THE CURSED SCOWRER THEY CRIED + LYNCH HIM + THEY LAUGHED AND JEERED AS HE WAS PUSHED INTO THE POLICE STATION + AFTER A SHORT FORMAL EXAMINATION FROM THE INSPECTOR IN CHARGE HE WAS PUT INTO THE COMMON CELL + HERE HE FOUND BALDWIN AND THREE OTHER CRIMINALS OF THE NIGHT BEFORE ALL ARRESTED THAT AFTERNOON AND WAITING THEIR TRIAL NEXT MORNING + BUT EVEN WITHIN THIS INNER FORTRESS OF THE LAW THE LONG ARM OF THE FREEMEN WAS ABLE TO EXTEND + LATE AT NIGHT THERE CAME A JAILER WITH A STRAW BUNDLE FOR THEIR BEDDING OUT OF WHICH HE EXTRACTED TWO BOTTLES OF WHISKY SOME GLASSES AND A PACK OF CARDS + THEY SPENT A HILARIOUS NIGHT WITHOUT AN ANXIOUS THOUGHT AS TO THE ORDEAL OF THE MORNING + NOR HAD THEY CAUSE AS THE RESULT WAS TO SHOW + THE MAGISTRATE COULD NOT POSSIBLY ON THE EVIDENCE HAVE HELD THEM FOR A HIGHER COURT + ON THE ONE HAND THE COMPOSITORS AND PRESSMEN WERE FORCED TO ADMIT THAT THE LIGHT WAS UNCERTAIN THAT THEY WERE THEMSELVES MUCH PERTURBED AND THAT IT WAS DIFFICULT FOR THEM TO SWEAR TO THE IDENTITY OF THE ASSAILANTS ALTHOUGH THEY BELIEVED THAT THE ACCUSED WERE AMONG THEM + CROSS EXAMINED BY THE CLEVER ATTORNEY WHO HAD BEEN ENGAGED BY MCGINTY THEY WERE EVEN MORE NEBULOUS IN THEIR EVIDENCE + THE INJURED MAN HAD ALREADY DEPOSED THAT HE WAS SO TAKEN BY SURPRISE BY THE SUDDENNESS OF THE ATTACK THAT HE COULD STATE NOTHING BEYOND THE FACT THAT THE FIRST MAN WHO STRUCK HIM WORE A MOUSTACHE + HE ADDED THAT HE KNEW THEM TO BE SCOWRERS SINCE NO ONE ELSE IN THE COMMUNITY COULD POSSIBLY HAVE ANY ENMITY TO HIM AND HE HAD LONG BEEN THREATENED ON ACCOUNT OF HIS OUTSPOKEN EDITORIALS + ON THE OTHER HAND IT WAS CLEARLY SHOWN BY THE UNITED AND UNFALTERING EVIDENCE OF SIX CITIZENS INCLUDING THAT HIGH MUNICIPAL OFFICIAL COUNCILLOR MCGINTY THAT THE MEN HAD BEEN AT A CARD PARTY AT THE UNION HOUSE UNTIL AN HOUR VERY MUCH LATER THAN THE COMMISSION OF THE OUTRAGE + NEEDLESS TO SAY THAT THEY WERE DISCHARGED WITH SOMETHING VERY NEAR TO AN APOLOGY FROM THE BENCH FOR THE INCONVENIENCE TO WHICH THEY HAD BEEN PUT TOGETHER WITH AN IMPLIED CENSURE OF CAPTAIN MARVIN AND THE POLICE FOR THEIR OFFICIOUS ZEAL + THE VERDICT WAS GREETED WITH LOUD APPLAUSE BY A COURT IN WHICH MCMURDO SAW MANY FAMILIAR FACES + BROTHERS OF THE LODGE SMILED AND WAVED + BUT THERE WERE OTHERS WHO SAT WITH COMPRESSED LIPS AND BROODING EYES AS THE MEN FILED OUT OF THE DOCK + ONE OF THEM A LITTLE DARK BEARDED RESOLUTE FELLOW PUT THE THOUGHTS OF HIMSELF AND COMRADES INTO WORDS AS THE EX PRISONERS PASSED HIM + YOU DAMNED MURDERERS HE SAID + WE'LL FIX YOU YET + CHAPTER FIVE THE DARKEST HOUR + IF ANYTHING HAD BEEN NEEDED TO GIVE AN IMPETUS TO JACK MCMURDO'S POPULARITY AMONG HIS FELLOWS IT WOULD HAVE BEEN HIS ARREST AND ACQUITTAL + THAT A MAN ON THE VERY NIGHT OF JOINING THE LODGE SHOULD HAVE DONE SOMETHING WHICH BROUGHT HIM BEFORE THE MAGISTRATE WAS A NEW RECORD IN THE ANNALS OF THE SOCIETY + ALREADY HE HAD EARNED THE REPUTATION OF A GOOD BOON COMPANION A CHEERY REVELLER AND WITHAL A MAN OF HIGH TEMPER WHO WOULD NOT TAKE AN INSULT EVEN FROM THE ALL POWERFUL BOSS HIMSELF + BUT IN ADDITION TO THIS HE IMPRESSED HIS COMRADES WITH THE IDEA THAT AMONG THEM ALL THERE WAS NOT ONE WHOSE BRAIN WAS SO READY TO DEVISE A BLOODTHIRSTY SCHEME OR WHOSE HAND WOULD BE MORE CAPABLE OF CARRYING IT OUT + HE'LL BE THE BOY FOR THE CLEAN JOB SAID THE OLDSTERS TO ONE ANOTHER AND WAITED THEIR TIME UNTIL THEY COULD SET HIM TO HIS WORK + MCGINTY HAD INSTRUMENTS ENOUGH ALREADY BUT HE RECOGNIZED THAT THIS WAS A SUPREMELY ABLE ONE + HE FELT LIKE A MAN HOLDING A FIERCE BLOODHOUND IN LEASH + THERE WERE CURS TO DO THE SMALLER WORK BUT SOME DAY HE WOULD SLIP THIS CREATURE UPON ITS PREY + A FEW MEMBERS OF THE LODGE TED BALDWIN AMONG THEM RESENTED THE RAPID RISE OF THE STRANGER AND HATED HIM FOR IT BUT THEY KEPT CLEAR OF HIM FOR HE WAS AS READY TO FIGHT AS TO LAUGH + BUT IF HE GAINED FAVOUR WITH HIS FELLOWS THERE WAS ANOTHER QUARTER ONE WHICH HAD BECOME EVEN MORE VITAL TO HIM IN WHICH HE LOST IT + ETTIE SHAFTER'S FATHER WOULD HAVE NOTHING MORE TO DO WITH HIM NOR WOULD HE ALLOW HIM TO ENTER THE HOUSE + ETTIE HERSELF WAS TOO DEEPLY IN LOVE TO GIVE HIM UP ALTOGETHER AND YET HER OWN GOOD SENSE WARNED HER OF WHAT WOULD COME FROM A MARRIAGE WITH A MAN WHO WAS REGARDED AS A CRIMINAL + ONE MORNING AFTER A SLEEPLESS NIGHT SHE DETERMINED TO SEE HIM POSSIBLY FOR THE LAST TIME AND MAKE ONE STRONG ENDEAVOUR TO DRAW HIM FROM THOSE EVIL INFLUENCES WHICH WERE SUCKING HIM DOWN + SHE WENT TO HIS HOUSE AS HE HAD OFTEN BEGGED HER TO DO AND MADE HER WAY INTO THE ROOM WHICH HE USED AS HIS SITTINGROOM + HE WAS SEATED AT A TABLE WITH HIS BACK TURNED AND A LETTER IN FRONT OF HIM + A SUDDEN SPIRIT OF GIRLISH MISCHIEF CAME OVER HER SHE WAS STILL ONLY NINETEEN + HE HAD NOT HEARD HER WHEN SHE PUSHED OPEN THE DOOR + NOW SHE TIPTOED FORWARD AND LAID HER HAND LIGHTLY UPON HIS BENDED SHOULDERS + IF SHE HAD EXPECTED TO STARTLE HIM SHE CERTAINLY SUCCEEDED BUT ONLY IN TURN TO BE STARTLED HERSELF + WITH A TIGER SPRING HE TURNED ON HER AND HIS RIGHT HAND WAS FEELING FOR HER THROAT + AT THE SAME INSTANT WITH THE OTHER HAND HE CRUMPLED UP THE PAPER THAT LAY BEFORE HIM + FOR AN INSTANT HE STOOD GLARING + THEN ASTONISHMENT AND JOY TOOK THE PLACE OF THE FEROCITY WHICH HAD CONVULSED HIS FEATURES A FEROCITY WHICH HAD SENT HER SHRINKING BACK IN HORROR AS FROM SOMETHING WHICH HAD NEVER BEFORE INTRUDED INTO HER GENTLE LIFE + QUOTE IT'S YOU QUOTE SAID HE MOPPING HIS BROW + AND TO THINK THAT YOU SHOULD COME TO ME HEART OF MY HEART AND I SHOULD FIND NOTHING BETTER TO DO THAN TO WANT TO STRANGLE YOU + COME THEN DARLING AND HE HELD OUT HIS ARMS LET ME MAKE IT UP TO YOU + BUT SHE HAD NOT RECOVERED FROM THAT SUDDEN GLIMPSE OF GUILTY FEAR WHICH SHE HAD READ IN THE MAN'S FACE + ALL HER WOMAN'S INSTINCT TOLD HER THAT IT WAS NOT THE MERE FRIGHT OF A MAN WHO IS STARTLED + GUILT THAT WAS IT GUILT AND FEAR + WHAT'S COME OVER YOU LACK SHE CRIED + WHY WERE YOU SO SCARED OF ME + OH JACK IF YOUR CONSCIENCE WAS AT EASE YOU WOULD NOT HAVE LOOKED AT ME LIKE THAT + QUOTE NO NO IT WAS MORE THAN THAT JACK QUOTE + THEN A SUDDEN SUSPICION SEIZED HER + LET ME SEE THAT LETTER YOU WERE WRITING + AH ETTIE I COULDN'T DO THAT + HER SUSPICIONS BECAME CERTAINTIES + IT'S TO ANOTHER WOMAN SHE CRIED + I KNOW IT + WHY ELSE SHOULD YOU HOLD IT FROM ME + WAS IT TO YOUR WIFE THAT YOU WERE WRITING + HOW AM I TO KNOW THAT YOU ARE NOT A MARRIED MAN YOU A STRANGER THAT NOBODY KNOWS + QUOTE I AM NOT MARRIED ETTIE + SEE NOW I SWEAR IT + YOU'RE THE ONLY ONE WOMAN ON EARTH TO ME + BY THE CROSS OF CHRIST I SWEAR IT + HE WAS SO WHITE WITH PASSIONATE EARNESTNESS THAT SHE COULD NOT BUT BELIEVE HIM + WELL THEN SHE CRIED WHY WILL YOU NOT SHOW ME THE LETTER + I'LL TELL YOU ACUSHLA SAID HE + I'M UNDER OATH NOT TO SHOW IT AND JUST AS I WOULDN'T BREAK MY WORD TO YOU SO I WOULD KEEP IT TO THOSE WHO HOLD MY PROMISE + IT'S THE BUSINESS OF THE LODGE AND EVEN TO YOU IT'S SECRET + AND IF I WAS SCARED WHEN A HAND FELL ON ME CAN'T YOU UNDERSTAND IT WHEN IT MIGHT HAVE BEEN THE HAND OF A DETECTIVE + SHE FELT THAT HE WAS TELLING THE TRUTH + HE GATHERED HER INTO HIS ARMS AND KISSED AWAY HER FEARS AND DOUBTS + QUOTE SIT HERE BY ME THEN + IT'S A QUEER THRONE FOR SUCH A QUEEN BUT IT'S THE BEST YOUR POOR LOVER CAN FIND + HE'LL DO BETTER FOR YOU SOME OF THESE DAYS I'M THINKING + NOW YOUR MIND IS EASY ONCE AGAIN IS IT NOT + HOW CAN IT EVER BE AT EASE JACK WHEN I KNOW THAT YOU ARE A CRIMINAL AMONG CRIMINALS WHEN I NEVER KNOW THE DAY THAT I MAY HEAR YOU ARE IN COURT FOR MURDER + MCMURDO THE SCOWRER THAT'S WHAT ONE OF OOR BOARDERS CALLED YOU YESTERDAY + IT WENT THROUGH MY HEART LIKE A KNIFE + SURE HARD WORDS BREAK NO BONES + BUT THEY WERE TRUE + QUOTE WELL DEAR IT'S NOT SO BAD AS YOU THINK + WE ARE BUT POOR MEN THAT ARE TRYING IN OUR OWN WAY TO GET OUR RIGHTS + ETTIE THREW HER ARMS ROUND HER LOVER'S NECK + GIVE IT UP JACK + FOR MY SAKE FOR GOD'S SAKE GIVE IT UP + IT WAS TO ASK YOU THAT I CAME HERE TO DAY + OH JACK SEE I BEG IT OF YOU ON MY BENDED KNEES + KNEELING HERE BEFORE YOU I IMPLORE YOU TO GIVE IT UP + HE RAISED HER AND SOOTHED HER WITH HER HEAD AGAINST HIS BREAST + SURE MY DARLIN' YOU DON'T KNOW WHAT IT IS YOU ARE ASKING + HOW COULD I GIVE IT UP WHEN IT WOULD BE TO BREAK MY OATH AND TO DESERT MY COMRADES + IF YOU COULD SEE HOW THINGS STAND WITH ME YOU COULD NEVER ASK IT OF ME + BESIDES IF I WANTED TO HOW COULD I DO IT + YOU DON'T SUPPOSE THAT THE LODGE WOULD LET A MAN GO FREE WITH ALL ITS SECRETS + QUOTE I'VE THOUGHT OF THAT JACK + I'VE PLANNED IT ALL + FATHER HAS SAVED SOME MONEY + HE IS WEARY OF THIS PLACE WHERE THE FEAR OF THESE PEOPLE DARKENS OUR LIVES + HE IS READY TO GO + WE WOULD FLY TOGETHER TO PHILADELPHIA OR NEW YORK WHERE WE WOULD BE SAFE FROM THEM + MCMURDO LAUGHED + THE LODGE HAS A LONG ARM + DO YOU THINK IT COULD NOT STRETCH FROM HERE TO PHILADELPHIA OR NEW YORK + WELL THEN TO THE WEST OR TO ENGLAND OR TO GERMANY WHERE FATHER CAME FROM ANYWHERE TO GET AWAY FROM THIS VALLEY OF FEAR + MCMURDO THOUGHT OF OLD BROTHER MORRIS + SURE IT IS THE SECOND TIME I HAVE HEARD THE VALLEY SO NAMED SAID HE + QUOTE THE SHADOW DOES INDEED SEEM TO LIE HEAVY ON SOME OF YOU QUOTE + IT DARKENS EVERY MOMENT OF OUR LIVES + DO YOU SUPPOSE THAT TED BALDWIN HAS EVER FORGIVEN US + IF IT WERE NOT THAT HE FEARS YOU WHAT DO YOU SUPPOSE OUR CHANCES WOULD BE + IF YOU SAW THE LOOK IN THOSE DARK HUNGRY EYES OF HIS WHEN THEY FALL ON ME + BY GAR + I'D TEACH HIM BETTER MANNERS IF I CAUGHT HIM AT IT + BUT SEE HERE LITTLE GIRL + I CAN'T LEAVE HERE + I CAN'T TAKE THAT FROM ME ONCE AND FOR ALL + BUT IF YOU WILL LEAVE ME TO FIND MY OWN WAY I WILL TRY TO PREPARE A WAY OF GETTING HONOURABLY OUT OF IT + THERE IS NO HONOUR IN SUCH A MATTER + QUOTE WELL WELL IT'S JUST HOW YOU LOOK AT IT + BUT IF YOU'LL GIVE ME SIX MONTHS I'LL WORK IT SO THAT I CAN LEAVE WITHOUT BEING ASHAMED TO LOOK OTHERS IN THE FACE + THE GIRL LAUGHED WITH JOY + SIX MONTHS SHE CRIED + IS IT A PROMISE + WELL IT MAY BE SEVEN OR EIGHT + BUT WITHIN A YEAR AT THE FURTHEST WE WILL LEAVE THE VALLEY BEHIND US + IT WAS THE MOST THAT ETTIE COULD OBTAIN AND YET IT WAS SOMETHING + THERE WAS THIS DISTANT LIGHT TO ILLUMINATE THE GLOOM OF THE IMMEDIATE FUTURE + SHE RETURNED TO HER FATHER'S HOUSE MORE LIGHTHEARTED THAN SHE HAD EVER BEEN SINCE JACK MCMURDO HAD COME INTO HER LIFE + IT MIGHT BE THOUGHT THAT AS A MEMBER ALL THE DOINGS OF THE SOCIETY WOULD BE TOLD TO HIM BUT HE WAS SOON TO DISCOVER THAT THE ORGANIZATION WAS WIDER AND MORE COMPLEX THAN THE SIMPLE LODGE + EVEN BOSS MCGINTY WAS IGNORANT AS TO MANY THINGS FOR THERE WAS AN OFFICIAL NAMED THE COUNTY DELEGATE LIVING AT HOBSON'S PATCH FARTHER DOWN THE LINE WHO HAD POWER OVER SEVERAL DIFFERENT LODGES WHICH HE WIELDED IN A SUDDEN AND ARBITRARY WAY + ONLY ONCE DID MCMURDO SEE HIM A SLY LITTLE GRAYHAIRED RAT OF A MAN WITH A SLINKING GAIT AND A SIDELONG GLANCE WHICH WAS CHARGED WITH MALICE + EVANS POTT WAS HIS NAME AND EVEN THE GREAT BOSS OF VERMISSA FELT TOWARDS HIM SOMETHING OF THE REPULSION AND FEAR WHICH THE HUGE DANTON MAY HAVE FELT FOR THE PUNY BUT DANGEROUS ROBESPIERRE + ONE DAY SCANLAN WHO WAS MCMURDO'S FELLOW BOARDER RECEIVED A NOTE FROM MCGINTY INCLOSING ONE FROM EVANS POTT WHICH INFORMED HIM THAT HE WAS SENDING OVER TWO GOOD MEN LAWLER AND ANDREWS WHO HAD INSTRUCTIONS TO ACT IN THE NEIGHBOURHOOD THOUGH IT WAS BEST FOR THE CAUSE THAT NO PARTICULARS AS TO THEIR OBJECTS SHOULD BE GIVEN + WOULD THE BODYMASTER SEE TO IT THAT SUITABLE ARRANGEMENTS BE MADE FOR THEIR LODGINGS AND COMFORT UNTIL THE TIME FOR ACTION SHOULD ARRIVE + MCGINTY ADDED THAT IT WAS IMPOSSIBLE FOR ANYONE TO REMAIN SECRET AT THE UNION HOUSE AND THAT THEREFORE HE WOULD BE OBLIGED IF MCMURDO AND SCANLAN WOULD PUT THE STRANGERS UP FOR A FEW DAYS IN THEIR BOARDING HOUSE + THE SAME EVENING THE TWO MEN ARRIVED EACH CARRYING HIS GRIPSACK + LAWLER WAS AN ELDERLY MAN SHREWD SILENT AND SELFCONTAINED CLAD IN AN OLD BLACK FROCK COAT WHICH WITH HIS SOFT FELT HAT AND RAGGED GRIZZLED BEARD GAVE HIM A GENERAL RESEMBLANCE TO AN ITINERANT PREACHER + HIS COMPANION ANDREWS WAS LITTLE MORE THAN A BOY FRANK FACED AND CHEERFUL WITH THE BREEZY MANNER OF ONE WHO IS OUT FOR A HOLIDAY AND MEANS TO ENJOY EVERY MINUTE OF IT + BOTH MEN WERE TOTAL ABSTAINERS AND BEHAVED IN ALL WAYS AS EXEMPLARY MEMBERS OF THE SOCIETY WITH THE ONE SIMPLE EXCEPTION THAT THEY WERE ASSASSINS WHO HAD OFTEN PROVED THEMSELVES TO BE MOST CAPABLE INSTRUMENTS FOR THIS ASSOCIATION OF MURDER + LAWLER HAD ALREADY CARRIED OUT FOURTEEN COMMISSIONS OF THE KIND AND ANDREWS THREE + THEY WERE AS MCMURDO FOUND QUITE READY TO CONVERSE ABOUT THEIR DEEDS IN THE PAST WHICH THEY RECOUNTED WITH THE HALFBASHFUL PRIDE OF MEN WHO HAD DONE GOOD AND UNSELFISH SERVICE FOR THE COMMUNITY + THEY WERE RETICENT HOWEVER AS TO THE IMMEDIATE JOB IN HAND + QUOTE THEY CHOSE US BECAUSE NEITHER I NOR THE BOY HERE DRINK QUOTE LAWLER EXPLAINED + THEY CAN COUNT ON US SAYING NO MORE THAN WE SHOULD + YOU MUST NOT TAKE IT AMISS BUT IT IS THE ORDERS OF THE COUNTY DELEGATE THAT WE OBEY + SURE WE ARE ALL IN IT TOGETHER SAID SCANLAN MCMURDO'S MATE AS THE FOUR SAT TOGETHER AT SUPPER + THAT'S TRUE ENOUGH AND WE'LL TALK TILL THE COWS COME HOME OF THE KILLING OF CHARLIE WILLIAMS OR OF SIMON BIRD OR ANY OTHER JOB IN THE PAST + BUT TILL THE WORK IS DONE WE SAY NOTHING + QUOTE THERE ARE HALF A DOZEN ABOUT HERE THAT I HAVE A WORD TO SAY TO QUOTE SAID MCMURDO WITH AN OATH + I SUPPOSE IT ISN'T JACK KNOX OF IRONHILL THAT YOU ARE AFTER + I'D GO SOME WAY TO SEE HIM GET HIS DESERTS + NO IT'S NOT HIM YET + OR HERMAN STRAUSS + NO NOR HIM EITHER + QUOTE WELL IF YOU WON'T TELL US WE CAN'T MAKE YOU BUT I'D BE GLAD TO KNOW QUOTE + LAWLER SMILED AND SHOOK HIS HEAD + HE WAS NOT TO BE DRAWN + IN SPITE OF THE RETICENCE OF THEIR GUESTS SCANLAN AND MCMURDO WERE QUITE DETERMINED TO BE PRESENT AT WHAT THEY CALLED THE FUN + WHEN THEREFORE AT AN EARLY HOUR ONE MORNING MCMURDO HEARD THEM CREEPING DOWN THE STAIRS HE AWAKENED SCANLAN AND THE TWO HURRIED ON THEIR CLOTHES + WHEN THEY WERE DRESSED THEY FOUND THAT THE OTHERS HAD STOLEN OUT LEAVING THE DOOR OPEN BEHIND THEM + IT WAS NOT YET DAWN AND BY THE LIGHT OF THE LAMPS THEY COULD SEE THE TWO MEN SOME DISTANCE DOWN THE STREET + THEY FOLLOWED THEM WARILY TREADING NOISELESSLY IN THE DEEP SNOW + THE BOARDING HOUSE WAS NEAR THE EDGE OF THE TOWN AND SOON THEY WERE AT THE CROSSROADS WHICH IS BEYOND ITS BOUNDARY + HERE THREE MEN WERE WAITING WITH WHOM LAWLER AND ANDREWS HELD A SHORT EAGER CONVERSATION + THEN THEY ALL MOVED ON TOGETHER + IT WAS CLEARLY SOME NOTABLE JOB WHICH NEEDED NUMBERS + AT THIS POINT THERE ARE SEVERAL TRAILS WHICH LEAD TO VARIOUS MINES + THE STRANGERS TOOK THAT WHICH LED TO THE CROW HILL A HUGE BUSINESS WHICH WAS IN STRONG HANDS WHICH HAD BEEN ABLE THANKS TO THEIR ENERGETIC AND FEARLESS NEW ENGLAND MANAGER JOSIAH H. DUNN TO KEEP SOME ORDER AND DISCIPLINE DURING THE LONG REIGN OF TERROR + DAY WAS BREAKING NOW AND A LINE OF WORKMEN WERE SLOWLY MAKING THEIR WAY SINGLY AND IN GROUPS ALONG THE BLACKENED PATH + MCMURDO AND SCANLAN STROLLED ON WITH THE OTHERS KEEPING IN SIGHT OF THE MEN WHOM THEY FOLLOWED + A THICK MIST LAY OVER THEM AND FROM THE HEART OF IT THERE CAME THE SUDDEN SCREAM OF A STEAM WHISTLE + IT WAS THE TEN MINUTE SIGNAL BEFORE THE CAGES DESCENDED AND THE DAY'S LABOUR BEGAN + WHEN THEY REACHED THE OPEN SPACE ROUND THE MINE SHAFT THERE WERE A HUNDRED MINERS WAITING STAMPING THEIR FEET AND BLOWING ON THEIR FINGERS FOR IT WAS BITTERLY COLD + THE STRANGERS STOOD IN A LITTLE GROUP UNDER THE SHADOW OF THE ENGINE HOUSE + SCANLAN AND MCMURDO CLIMBED A HEAP OF SLAG FROM WHICH THE WHOLE SCENE LAY BEFORE THEM + THEY SAW THE MINE ENGINEER A GREAT BEARDED SCOTCHMAN NAMED MENZIES COME OUT OF THE ENGINE HOUSE AND BLOW HIS WHISTLE FOR THE CAGES TO BE LOWERED + AT THE SAME INSTANT A TALL LOOSE FRAMED YOUNG MAN WITH A CLEAN SHAVED EARNEST FACE ADVANCED EAGERLY TOWARDS THE PIT HEAD + AS HE CAME FORWARD HIS EYES FELL UPON THE GROUP SILENT AND MOTIONLESS UNDER THE ENGINE HOUSE + THE MEN HAD DRAWN DOWN THEIR HATS AND TURNED UP THEIR COLLARS TO SCREEN THEIR FACES + FOR A MOMENT THE PRESENTIMENT OF DEATH LAID ITS COLD HAND UPON THE MANAGER'S HEART + AT THE NEXT HE HAD SHAKEN IT OFF AND SAW ONLY HIS DUTY TOWARDS INTRUSIVE STRANGERS + WHO ARE YOU HE ASKED AS HE ADVANCED + WHAT ARE YOU LOITERING THERE FOR + THERE WAS NO ANSWER BUT THE LAD ANDREWS STEPPED FORWARD AND SHOT HIM IN THE STOMACH + THE HUNDRED WAITING MINERS STOOD AS MOTIONLESS AND HELPLESS AS IF THEY WERE PARALYZED + THE MANAGER CLAPPED HIS TWO HANDS TO THE WOUND AND DOUBLED HIMSELF UP + THEN HE STAGGERED AWAY BUT ANOTHER OF THE ASSASSINS FIRED AND HE WENT DOWN SIDEWISE KICKING AND CLAWING AMONG A HEAP OF CLINKERS + MENZIES THE SCOTCHMAN GAVE A ROAR OF RAGE AT THE SIGHT AND RUSHED WITH AN IRON SPANNER AT THE MURDERERS BUT WAS MET BY TWO BALLS IN THE FACE WHICH DROPPED HIM DEAD AT THEIR VERY FEET + THERE WAS A SURGE FORWARD OF SOME OF THE MINERS AND AN INARTICULATE CRY OF PITY AND OF ANGER BUT A COUPLE OF THE STRANGERS EMPTIED THEIR SIX SHOOTERS OVER THE HEADS OF THE CROWD AND THEY BROKE AND SCATTERED SOME OF THEM RUSHING WILDLY BACK TO THEIR HOMES IN VERMISSA + WHEN A FEW OF THE BRAVEST HAD RALLIED AND THERE WAS A RETURN TO THE MINE THE MURDEROUS GANG HAD VANISHED IN THE MISTS OF MORNING WITHOUT A SINGLE WITNESS BEING ABLE TO SWEAR TO THE IDENTITY OF THESE MEN WHO IN FRONT OF A HUNDRED SPECTATORS HAD WROUGHT THIS DOUBLE CRIME + SCANLAN AND MCMURDO MADE THEIR WAY BACK SCANLAN SOMEWHAT SUBDUED FOR IT WAS THE FIRST MURDER JOB THAT HE HAD SEEN WITH HIS OWN EYES AND IT APPEARED LESS FUNNY THAN HE HAD BEEN LED TO BELIEVE + THE HORRIBLE SCREAMS OF THE DEAD MANAGER'S WIFE PURSUED THEM AS THEY HURRIED TO THE TOWN + MCMURDO WAS ABSORBED AND SILENT BUT HE SHOWED NO SYMPATHY FOR THE WEAKENING OF HIS COMPANION + SURE IT IS LIKE A WAR HE REPEATED + WHAT IS IT BUT A WAR BETWEEN US AND THEM AND WE HIT BACK WHERE WE BEST CAN + THERE WAS HIGH REVEL IN THE LODGE ROOM AT THE UNION HOUSE THAT NIGHT NOT ONLY OVER THE KILLING OF THE MANAGER AND ENGINEER OF THE CROW HILL MINE WHICH WOULD BRING THIS ORGANIZATION INTO LINE WITH THE OTHER BLACKMAILED AND TERROR STRICKEN COMPANIES OF THE DISTRICT BUT ALSO OVER A DISTANT TRIUMPH WHICH HAD BEEN WROUGHT BY THE HANDS OF THE LODGE ITSELF + IT WOULD APPEAR THAT WHEN THE COUNTY DELEGATE HAD SENT OVER FIVE GOOD MEN TO STRIKE A BLOW IN VERMISSA HE HAD DEMANDED THAT IN RETURN THREE VERMISSA MEN SHOULD BE SECRETLY SELECTED AND SENT ACROSS TO KILL WILLIAM HALES OF STAKE ROYAL ONE OF THE BEST KNOWN AND MOST POPULAR MINE OWNERS IN THE GILMERTON DISTRICT A MAN WHO WAS BELIEVED NOT TO HAVE AN ENEMY IN THE WORLD FOR HE WAS IN ALL WAYS A MODEL EMPLOYER + HE HAD INSISTED HOWEVER UPON EFFICIENCY IN THE WORK AND HAD THEREFORE PAID OFF CERTAIN DRUNKEN AND IDLE EMPLOYEES WHO WERE MEMBERS OF THE ALLPOWERFUL SOCIETY + COFFIN NOTICES HUNG OUTSIDE HIS DOOR HAD NOT WEAKENED HIS RESOLUTION AND SO IN A FREE CIVILIZED COUNTRY HE FOUND HIMSELF CONDEMNED TO DEATH + THE EXECUTION HAD NOW BEEN DULY CARRIED OUT + TED BALDWIN WHO SPRAWLED NOW IN THE SEAT OF HONOUR BESIDE THE BODYMASTER HAD BEEN CHIEF OF THE PARTY + HIS FLUSHED FACE AND GLAZED BLOODSHOT EYES TOLD OF SLEEPLESSNESS AND DRINK + HE AND HIS TWO COMRADES HAD SPENT THE NIGHT BEFORE AMONG THE MOUNTAINS + THEY WERE UNKEMPT AND WEATHER STAINED + BUT NO HEROES RETURNING FROM A FORLORN HOPE COULD HAVE HAD A WARMER WELCOME FROM THEIR COMRADES + THE STORY WAS TOLD AND RETOLD AMID CRIES OF DELIGHT AND SHOUTS OF LAUGHTER + THEY HAD WAITED FOR THEIR MAN AS HE DROVE HOME AT NIGHTFALL TAKING THEIR STATION AT THE TOP OF A STEEP HILL WHERE HIS HORSE MUST BE AT A WALK + HE WAS SO FURRED TO KEEP OUT THE COLD THAT HE COULD NOT LAY HIS HAND ON HIS PISTOL + THEY HAD PULLED HIM OUT AND SHOT HIM AGAIN AND AGAIN + HE HAD SCREAMED FOR MERCY + THE SCREAMS WERE REPEATED FOR THE AMUSEMENT OF THE LODGE + QUOTE LET'S HEAR AGAIN HOW HE SQUEALED QUOTE THEY CRIED + NONE OF THEM KNEW THE MAN BUT THERE IS ETERNAL DRAMA IN A KILLING AND THEY HAD SHOWN THE SCOWRERS OF GILMERTON THAT THE VERMISSA MEN WERE TO BE RELIED UPON + THERE HAD BEEN ONE CONTRETEMPS FOR A MAN AND HIS WIFE HAD DRIVEN UP WHILE THEY WERE STILL EMPTYING THEIR REVOLVERS INTO THE SILENT BODY + IT HAD BEEN SUGGESTED THAT THEY SHOULD SHOOT THEM BOTH BUT THEY WERE HARMLESS FOLK WHO WERE NOT CONNECTED WITH THE MINES SO THEY WERE STERNLY BIDDEN TO DRIVE ON AND KEEP SILENT LEST A WORSE THING BEFALL THEM + AND SO THE BLOOD MOTTLED FIGURE HAD BEEN LEFT AS A WARNING TO ALL SUCH HARD HEARTED EMPLOYERS AND THE THREE NOBLE AVENGERS HAD HURRIED OFF INTO THE MOUNTAINS WHERE UNBROKEN NATURE COMES DOWN TO THE VERY EDGE OF THE FURNACES AND THE SLAG HEAPS + HERE THEY WERE SAFE AND SOUND THEIR WORK WELL DONE AND THE PLAUDITS OF THEIR COMPANIONS IN THEIR EARS + IT HAD BEEN A GREAT DAY FOR THE SCOWRERS + THE SHADOW HAD FALLEN EVEN DARKER OVER THE VALLEY + BUT AS THE WISE GENERAL CHOOSES THE MOMENT OF VICTORY IN WHICH TO REDOUBLE HIS EFFORTS SO THAT HIS FOES MAY HAVE NO TIME TO STEADY THEMSELVES AFTER DISASTER SO BOSS MCGINTY LOOKING OUT UPON THE SCENE OF HIS OPERATIONS WITH HIS BROODING AND MALICIOUS EYES HAD DEVISED A NEW ATTACK UPON THOSE WHO OPPOSED HIM + THAT VERY NIGHT AS THE HALF DRUNKEN COMPANY BROKE UP HE TOUCHED MCMURDO ON THE ARM AND LED HIM ASIDE INTO THAT INNER ROOM WHERE THEY HAD THEIR FIRST INTERVIEW + SEE HERE MY LAD SAID HE I'VE GOT A JOB THAT'S WORTHY OF YOU AT LAST + YOU'LL HAVE THE DOING OF IT IN YOUR OWN HANDS + PROUD I AM TO HEAR IT MCMURDO ANSWERED + YOU CAN TAKE TWO MEN WITH YOU MANDERS AND REILLY + THEY HAVE BEEN WARNED FOR SERVICE + WE'LL NEVER BE RIGHT IN THIS DISTRICT UNTIL CHESTER WILCOX HAS BEEN SETTLED AND YOU'LL HAVE THE THANKS OF EVERY LODGE IN THE COAL FIELDS IF YOU CAN DOWN HIM + QUOTE I'LL DO MY BEST ANYHOW + WHO IS HE AND WHERE SHALL I FIND HIM + MCGINTY TOOK HIS ETERNAL HALF CHEWED HALF SMOKED CIGAR FROM THE CORNER OF HIS MOUTH AND PROCEEDED TO DRAW A ROUGH DIAGRAM ON A PAGE TORN FROM HIS NOTEBOOK + HE'S THE CHIEF FOREMAN OF THE IRON DIKE COMPANY + HE'S A HARD CITIZEN AN OLD COLOUR SERGEANT OF THE WAR ALL SCARS AND GRIZZLE + WE'VE HAD TWO TRIES AT HIM BUT HAD NO LUCK AND JIM CARNAWAY LOST HIS LIFE OVER IT + NOW IT'S FOR YOU TO TAKE IT OVER + THAT'S THE HOUSE ALL ALONE AT THE IRON DIKE CROSSROAD SAME AS YOU SEE HERE ON THE MAP WITHOUT ANOTHER WITHIN EARSHOT + IT'S NO GOOD BY DAY + HE'S ARMED AND SHOOTS QUICK AND STRAIGHT WITH NO QUESTIONS ASKED + BUT AT NIGHT WELL THERE HE IS WITH HIS WIFE THREE CHILDREN AND A HIRED HELP + YOU CAN'T PICK OR CHOOSE + IT'S ALL OR NONE + IF YOU COULD GET A BAG OF BLASTING POWDER AT THE FRONT DOOR WITH A SLOW MATCH TO IT + WHAT'S THE MAN DONE + DIDN'T I TELL YOU HE SHOT JIM CAMAWAY + QUOTE WHY DID HE SHOOT HIM QUOTE + WHAT IN THUNDER HAS THAT TO DO WITH YOU + CARNAWAY WAS ABOUT HIS HOUSE AT NIGHT AND HE SHOT HIM + THAT'S ENOUGH FOR ME AND YOU + YOU'VE GOT TO SETTLE THE THING RIGHT + THERE'S THESE TWO WOMEN AND THE CHILDREN + DO THEY GO UP TOO + THEY HAVE TO ELSE HOW CAN WE GET HIM + QUOTE IT SEEMS HARD ON THEM FOR THEY'VE DONE NOTHING QUOTE + WHAT SORT OF FOOL'S TALK IS THIS + DO YOU BACK OUT + EASY COUNCILLOR EASY + WHAT HAVE I EVER SAID OR DONE THAT YOU SHOULD THINK I WOULD BE AFTER STANDING BACK FROM AN ORDER OF THE BODYMASTER OF MY OWN LODGE + IF IT'S RIGHT OR IF IT'S WRONG IT'S FOR YOU TO DECIDE + YOU'LL DO IT THEN + QUOTE OF COURSE I WILL DO IT QUOTE + WHEN + WELL YOU HAD BEST GIVE ME A NIGHT OR TWO THAT I MAY SEE THE HOUSE AND MAKE MY PLANS + THEN + VERY GOOD SAID MCGINTY SHAKING HIM BY THE HAND + I LEAVE IT WITH YOU + IT WILL BE A GREAT DAY WHEN YOU BRING US THE NEWS + IT'S JUST THE LAST STROKE THAT WILL BRING THEM ALL TO THEIR KNEES QUOTE + MCMURDO THOUGHT LONG AND DEEPLY OVER THE COMMISSION WHICH HAD BEEN SO SUDDENLY PLACED IN HIS HANDS + THE ISOLATED HOUSE IN WHICH CHESTER WILCOX LIVED WAS ABOUT FIVE MILES OFF IN AN ADJACENT VALLEY + THAT VERY NIGHT HE STARTED OFF ALL ALONE TO PREPARE FOR THE ATTEMPT + IT WAS DAYLIGHT BEFORE HE RETURNED FROM HIS RECONNAISSANCE + NEXT DAY HE INTERVIEWED HIS TWO SUBORDINATES MANDERS AND REILLY RECKLESS YOUNGSTERS WHO WERE AS ELATED AS IF IT WERE A DEER HUNT + TWO NIGHTS LATER THEY MET OUTSIDE THE TOWN ALL THREE ARMED AND ONE OF THEM CARRYING A SACK STUFFED WITH THE POWDER WHICH WAS USED IN THE QUARRIES + IT WAS TWO IN THE MORNING BEFORE THEY CAME TO THE LONELY HOUSE + THE NIGHT WAS A WINDY ONE WITH BROKEN CLOUDS DRIFTING SWIFTLY ACROSS THE FACE OF A THREE QUARTER MOON + THEY HAD BEEN WARNED TO BE ON THEIR GUARD AGAINST BLOODHOUNDS SO THEY MOVED FORWARD CAUTIOUSLY WITH THEIR PISTOLS COCKED IN THEIR HANDS + BUT THERE WAS NO SOUND SAVE THE HOWLING OF THE WIND AND NO MOVEMENT BUT THE SWAYING BRANCHES ABOVE THEM + MCMURDO LISTENED AT THE DOOR OF THE LONELY HOUSE BUT ALL WAS STILL WITHIN + THEN HE LEANED THE POWDER BAG AGAINST IT RIPPED A HOLE IN IT WITH HIS KNIFE AND ATTACHED THE FUSE + WHEN IT WAS WELL ALIGHT HE AND HIS TWO COMPANIONS TOOK TO THEIR HEELS AND WERE SOME DISTANCE OFF SAFE AND SNUG IN A SHELTERING DITCH BEFORE THE SHATTERING ROAR OF THE EXPLOSION WITH THE LOW DEEP RUMBLE OF THE COLLAPSING BUILDING TOLD THEM THAT THEIR WORK WAS DONE + NO CLEANER JOB HAD EVER BEEN CARRIED OUT IN THE BLOODSTAINED ANNALS OF THE SOCIETY + BUT ALAS THAT WORK SO WELL ORGANIZED AND BOLDLY CARRIED OUT SHOULD ALL HAVE GONE FOR NOTHING + WARNED BY THE FATE OF THE VARIOUS VICTIMS AND KNOWING THAT HE WAS MARKED DOWN FOR DESTRUCTION CHESTER WILCOX HAD MOVED HIMSELF AND HIS FAMILY ONLY THE DAY BEFORE TO SOME SAFER AND LESS KNOWN QUARTERS WHERE A GUARD OF POLICE SHOULD WATCH OVER THEM + IT WAS AN EMPTY HOUSE WHICH HAD BEEN TORN DOWN BY THE GUNPOWDER AND THE GRIM OLD COLOUR SERGEANT OF THE WAR WAS STILL TEACHING DISCIPLINE TO THE MINERS OF IRON DIKE + LEAVE HIM TO ME SAID MCMURDO + HE'S MY MAN AND I'LL GET HIM SURE IF I HAVE TO WAIT A YEAR FOR HIM + A VOTE OF THANKS AND CONFIDENCE WAS PASSED IN FULL LODGE AND SO FOR THE TIME THE MATTER ENDED + WHEN A FEW WEEKS LATER IT WAS REPORTED IN THE PAPERS THAT WILCOX HAD BEEN SHOT AT FROM AN AMBUSCADE IT WAS AN OPEN SECRET THAT MCMURDO WAS STILL AT WORK UPON HIS UNFINISHED JOB + SUCH WERE THE METHODS OF THE SOCIETY OF FREEMEN AND SUCH WERE THE DEEDS OF THE SCOWRERS BY WHICH THEY SPREAD THEIR RULE OF FEAR OVER THE GREAT AND RICH DISTRICT WHICH WAS FOR SO LONG A PERIOD HAUNTED BY THEIR TERRIBLE PRESENCE + WHY SHOULD THESE PAGES BE STAINED BY FURTHER CRIMES + HAVE I NOT SAID ENOUGH TO SHOW THE MEN AND THEIR METHODS + THESE DEEDS ARE WRITTEN IN HISTORY AND THERE ARE RECORDS WHEREIN ONE MAY READ THE DETAILS OF THEM + THERE ONE MAY LEARN OF THE SHOOTING OF POLICEMEN HUNT AND EVANS BECAUSE THEY HAD VENTURED TO ARREST TWO MEMBERS OF THE SOCIETY A DOUBLE OUTRAGE PLANNED AT THE VERMISSA LODGE AND CARRIED OUT IN COLD BLOOD UPON TWO HELPLESS AND DISARMED MEN + THERE ALSO ONE MAY READ OF THE SHOOTING OF MRS. LARBEY WHEN SHE WAS NURSING HER HUSBAND WHO HAD BEEN BEATEN ALMOST TO DEATH BY ORDERS OF BOSS MCGINTY + THE KILLING OF THE ELDER JENKINS SHORTLY FOLLOWED BY THAT OF HIS BROTHER THE MUTILATION OF JAMES MURDOCH THE BLOWING UP OF THE STAPHOUSE FAMILY AND THE MURDER OF THE STENDALS ALL FOLLOWED HARD UPON ONE ANOTHER IN THE SAME TERRIBLE WINTER + DARKLY THE SHADOW LAY UPON THE VALLEY OF FEAR + THE SPRING HAD COME WITH RUNNING BROOKS AND BLOSSOMING TREES + THERE WAS HOPE FOR ALL NATURE BOUND SO LONG IN AN IRON GRIP BUT NOWHERE WAS THERE ANY HOPE FOR THE MEN AND WOMEN WHO LIVED UNDER THE YOKE OF THE TERROR + NEVER HAD THE CLOUD ABOVE THEM BEEN SO DARK AND HOPELESS AS IN THE EARLY SUMMER OF THE YEAR ONE THOUSAND EIGHT HUNDRED SEVENTY FIVE + CHAPTER SIX DANGER + IT WAS THE HEIGHT OF THE REIGN OF TERROR + MCMURDO WHO HAD ALREADY BEEN APPOINTED INNER DEACON WITH EVERY PROSPECT OF SOME DAY SUCCEEDING MCGINTY AS BODYMASTER WAS NOW SO NECESSARY TO THE COUNCILS OF HIS COMRADES THAT NOTHING WAS DONE WITHOUT HIS HELP AND ADVICE + THE MORE POPULAR HE BECAME HOWEVER WITH THE FREEMEN THE BLACKER WERE THE SCOWLS WHICH GREETED HIM AS HE PASSED ALONG THE STREETS OF VERMISSA + IN SPITE OF THEIR TERROR THE CITIZENS WERE TAKING HEART TO BAND THEMSELVES TOGETHER AGAINST THEIR OPPRESSORS + RUMOURS HAD REACHED THE LODGE OF SECRET GATHERINGS IN THE HERALD OFFICE AND OF DISTRIBUTION OF FIREARMS AMONG THE LAW ABIDING PEOPLE + BUT MCGINTY AND HIS MEN WERE UNDISTURBED BY SUCH REPORTS + THEY WERE NUMEROUS RESOLUTE AND WELL ARMED + THEIR OPPONENTS WERE SCATTERED AND POWERLESS + IT WOULD ALL END AS IT HAD DONE IN THE PAST IN AIMLESS TALK AND POSSIBLY IN IMPOTENT ARRESTS + SO SAID MCGINTY MCMURDO AND ALL THE BOLDER SPIRITS + IT WAS A SATURDAY EVENING IN MAY + SATURDAY WAS ALWAYS THE LODGE NIGHT AND MCMURDO WAS LEAVING HIS HOUSE TO ATTEND IT WHEN MORRIS THE WEAKER BROTHER OF THE ORDER CAME TO SEE HIM + HIS BROW WAS CREASED WITH CARE AND HIS KINDLY FACE WAS DRAWN AND HAGGARD + CAN I SPEAK WITH YOU FREELY MR. MCMURDO + SURE + I CAN'T FORGET THAT I SPOKE MY HEART TO YOU ONCE AND THAT YOU KEPT IT TO YOURSELF EVEN THOUGH THE BOSS HIMSELF CAME TO ASK YOU ABOUT IT + QUOTE WHAT ELSE COULD I DO IF YOU TRUSTED ME + IT WASN'T THAT I AGREED WITH WHAT YOU SAID + I KNOW THAT WELL + BUT YOU ARE THE ONE THAT I CAN SPEAK TO AND BE SAFE + I'VE A SECRET HERE HE PUT HIS HAND TO HIS BREAST AND IT IS JUST BURNING THE LIFE OUT OF ME + I WISH IT HAD COME TO ANY ONE OF YOU BUT ME + IF I TELL IT IT WILL MEAN MURDER FOR SURE + IF I DON'T IT MAY BRING THE END OF US ALL + GOD HELP ME. BUT I AM NEAR OUT OF MY WITS OVER IT + MCMURDO LOOKED AT THE MAN EARNESTLY + HE WAS TREMBLING IN EVERY LIMB + HE POURED SOME WHISKY INTO A GLASS AND HANDED IT TO HIM + THAT'S THE PHYSIC FOR THE LIKES OF YOU SAID HE + QUOTE NOW LET ME HEAR OF IT QUOTE + MORRIS DRANK AND HIS WHITE FACE TOOK A TINGE OF COLOUR + I CAN TELL IT TO YOU ALL IN ONE SENTENCE SAID HE + THERE'S A DETECTIVE ON OUR TRAIL + MCMURDO STARED AT HIM IN ASTONISHMENT + WHY MAN YOU'RE CRAZY HE SAID + ISN'T THE PLACE FULL OF POLICE AND DETECTIVES AND WHAT HARM DID THEY EVER DO US + NO NO IT'S NO MAN OF THE DISTRICT + AS YOU SAY WE KNOW THEM AND IT IS LITTLE THAT THEY CAN DO + BUT YOU'VE HEARD OF PINKERTON'S QUOTE + I'VE READ OF SOME FOLK OF THAT NAME + WELL YOU CAN TAKE IT FROM ME YOU'VE NO SHOW WHEN THEY ARE ON YOUR TRAIL + IT'S NOT A TAKE IT OR MISS IT GOVERNMENT CONCERN + IT'S A DEAD EARNEST BUSINESS PROPOSITION THAT'S OUT FOR RESULTS AND KEEPS OUT TILL BY HOOK OR CROOK IT GETS THEM + IF A PINKERTON MAN IS DEEP IN THIS BUSINESS WE ARE ALL DESTROYED + WE MUST KILL HIM + AH IT'S THE FIRST THOUGHT THAT CAME TO YOU + SO IT WILL BE UP AT THE LODGE + DIDN'T I SAY TO YOU THAT IT WOULD END IN MURDER QUOTE + SURE WHAT IS MURDER + ISN'T IT COMMON ENOUGH IN THESE PARTS + IT IS INDEED BUT IT'S NOT FOR ME TO POINT OUT THE MAN THAT IS TO BE MURDERED + I'D NEVER REST EASY AGAIN + AND YET IT'S OUR OWN NECKS THAT MAY BE AT STAKE + IN GOD'S NAME WHAT SHALL I DO + HE ROCKED TO AND FRO IN HIS AGONY OF INDECISION + BUT HIS WORDS HAD MOVED MCMURDO DEEPLY + IT WAS EASY TO SEE THAT HE SHARED THE OTHER'S OPINION AS TO THE DANGER AND THE NEED FOR MEETING IT + HE GRIPPED MORRIS'S SHOULDER AND SHOOK HIM IN HIS EARNESTNESS + SEE HERE MAN HE CRIED AND HE ALMOST SCREECHED THE WORDS IN HIS EXCITEMENT YOU WON'T GAIN ANYTHING BY SITTING KEENING LIKE AN OLD WIFE AT A WAKE + LET'S HAVE THE FACTS + WHO IS THE FELLOW + WHERE IS HE + HOW DID YOU HEAR OF HIM + WHY DID YOU COME TO ME QUOTE + I CAME TO YOU FOR YOU ARE THE ONE MAN THAT WOULD ADVISE ME + I TOLD YOU THAT I HAD A STORE IN THE EAST BEFORE I CAME HERE + I LEFT GOOD FRIENDS BEHIND ME AND ONE OF THEM IS IN THE TELEGRAPH SERVICE + HERE'S A LETTER THAT I HAD FROM HIM YESTERDAY + IT'S THIS PART FROM THE TOP OF THE PAGE + YOU CAN READ IT YOURSELF + THIS WAS WHAT MCMURDO READ HOW ARE THE SCOWRERS GETTING ON IN YOUR PARTS + WE READ PLENTY OF THEM IN THE PAPERS + BETWEEN YOU AND ME I EXPECT TO HEAR NEWS FROM YOU BEFORE LONG + FIVE BIG CORPORATIONS AND THE TWO RAILROADS HAVE TAKEN THE THING UP IN DEAD EARNEST + THEY MEAN IT AND YOU CAN BET THEY'LL GET THERE + THEY ARE RIGHT DEEP DOWN INTO IT + PINKERTON HAS TAKEN HOLD UNDER THEIR ORDERS AND HIS BEST MAN BIRDY EDWARDS IS OPERATING + THE THING HAS GOT TO BE STOPPED RIGHT NOW + NOW READ THE POSTSCRIPT + OF COURSE WHAT I GIVE YOU IS WHAT I LEARNED IN BUSINESS SO IT GOES NO FURTHER + IT'S A QUEER CIPHER THAT YOU HANDLE BY THE YARD EVERY DAY AND CAN GET NO MEANING FROM + MCMURDO SAT IN SILENCE FOR SOME TIME WITH THE LETTER IN HIS LISTLESS HANDS + THE MIST HAD LIFTED FOR A MOMENT AND THERE WAS THE ABYSS BEFORE HIM + DOES ANYONE ELSE KNOW OF THIS HE ASKED + I HAVE TOLD NO ONE ELSE + QUOTE BUT THIS MAN YOUR FRIEND HAS HE ANY OTHER PERSON THAT HE WOULD BE LIKELY TO WRITE TO QUOTE + WELL I DARE SAY HE KNOWS ONE OR TWO MORE + OF THE LODGE + IT'S LIKELY ENOUGH + I WAS ASKING BECAUSE IT IS LIKELY THAT HE MAY HAVE GIVEN SOME DESCRIPTION OF THIS FELLOW BIRDY EDWARDS THEN WE COULD GET ON HIS TRAIL + WELL IT'S POSSIBLE + BUT I SHOULD NOT THINK HE KNEW HIM + HE IS JUST TELLING ME THE NEWS THAT CAME TO HIM BY WAY OF BUSINESS + HOW WOULD HE KNOW THIS PINKERTON MAN QUOTE + MCMURDO GAVE A VIOLENT START + BY GAR HE CRIED I'VE GOT HIM + WHAT A FOOL I WAS NOT TO KNOW IT + LORD BUT WE'RE IN LUCK + WE WILL FIX HIM BEFORE HE CAN DO ANY HARM + SEE HERE MORRIS WILL YOU LEAVE THIS THING IN MY HANDS + SURE IF YOU WILL ONLY TAKE IT OFF MINE + I'LL DO THAT + YOU CAN STAND RIGHT BACK AND LET ME RUN IT + EVEN YOUR NAME NEED NOT BE MENTIONED + I'LL TAKE IT ALL ON MYSELF AS IF IT WERE TO ME THAT THIS LETTER HAS COME + WILL THAT CONTENT YOU + QUOTE LT'S JUST WHAT I WOULD ASK QUOTE + THEN LEAVE IT AT THAT AND KEEP YOUR HEAD SHUT + NOW I'LL GET DOWN TO THE LODGE AND WE'LL SOON MAKE OLD MAN PINKERTON SORRY FOR HIMSELF + YOU WOULDN'T KILL THIS MAN + THE LESS YOU KNOW FRIEND MORRIS THE EASIER YOUR CONSCIENCE WILL BE AND THE BETTER YOU WILL SLEEP + ASK NO QUESTIONS AND LET THESE THINGS SETTLE THEMSELVES + I HAVE HOLD OF IT NOW + MORRIS SHOOK HIS HEAD SADLY AS HE LEFT + QUOTE I FEEL THAT HIS BLOOD IS ON MY HANDS QUOTE HE GROANED + SELF PROTECTION IS NO MURDER ANYHOW SAID MCMURDO SMILING GRIMLY + IT'S HIM OR US + I GUESS THIS MAN WOULD DESTROY US ALL IF WE LEFT HIM LONG IN THE VALLEY + WHY BROTHER MORRIS WE'LL HAVE TO ELECT YOU BODYMASTER YET FOR YOU'VE SURELY SAVED THE LODGE + AND YET IT WAS CLEAR FROM HIS ACTIONS THAT HE THOUGHT MORE SERIOUSLY OF THIS NEW INTRUSION THAN HIS WORDS WOULD SHOW + IT MAY HAVE BEEN HIS GUILTY CONSCIENCE IT MAY HAVE BEEN THE REPUTATION OF THE PINKERTON ORGANIZATION IT MAY HAVE BEEN THE KNOWLEDGE THAT GREAT RICH CORPORATIONS HAD SET THEMSELVES THE TASK OF CLEARING OUT THE SCOWRERS BUT WHATEVER HIS REASON HIS ACTIONS WERE THOSE OF A MAN WHO IS PREPARING FOR THE WORST + EVERY PAPER WHICH WOULD INCRIMINATE HIM WAS DESTROYED BEFORE HE LEFT THE HOUSE + AFTER THAT HE GAVE A LONG SIGH OF SATISFACTION FOR IT SEEMED TO HIM THAT HE WAS SAFE + AND YET THE DANGER MUST STILL HAVE PRESSED SOMEWHAT UPON HIM FOR ON HIS WAY TO THE LODGE HE STOPPED AT OLD MAN SHAFTER'S + THE HOUSE WAS FORBIDDEN HIM BUT WHEN HE TAPPED AT THE WINDOW ETTIE CAME OUT TO HIM + THE DANCING IRISH DEVILTRY HAD GONE FROM HER LOVER'S EYES + SHE READ HIS DANGER IN HIS EARNEST FACE + SOMETHING HAS HAPPENED SHE CRIED + OH JACK YOU ARE IN DANGER + QUOTE SURE IT IS NOT VERY BAD MY SWEETHEART + AND YET IT MAY BE WISE THAT WE MAKE A MOVE BEFORE IT IS WORSE + MAKE A MOVE + I PROMISED YOU ONCE THAT I WOULD GO SOME DAY + I THINK THE TIME IS COMING + I HAD NEWS TO NIGHT BAD NEWS AND I SEE TROUBLE COMING + THE POLICE + QUOTE WELL A PINKERTON + BUT SURE YOU WOULDN'T KNOW WHAT THAT IS ACUSHLA NOR WHAT IT MAY MEAN TO THE LIKES OF ME + I'M TOO DEEP IN THIS THING AND I MAY HAVE TO GET OUT OF IT QUICK + YOU SAID YOU WOULD COME WITH ME IF I WENT + OH JACK IT WOULD BE THE SAVING OF YOU + I'M AN HONEST MAN IN SOME THINGS ETTIE + I WOULDN'T HURT A HAIR OF YOUR BONNY HEAD FOR ALL THAT THE WORLD CAN GIVE NOR EVER PULL YOU DOWN ONE INCH FROM THE GOLDEN THRONE ABOVE THE CLOUDS WHERE I ALWAYS SEE YOU + WOULD YOU TRUST ME + SHE PUT HER HAND IN HIS WITHOUT A WORD + WELL THEN LISTEN TO WHAT I SAY AND DO AS I ORDER YOU FOR INDEED IT'S THE ONLY WAY FOR US + THINGS ARE GOING TO HAPPEN IN THIS VALLEY + I FEEL IT IN MY BONES + THERE MAY BE MANY OF US THAT WILL HAVE TO LOOK OUT FOR OURSELVES + I'M ONE ANYHOW + IF I GO BY DAY OR NIGHT IT'S YOU THAT MUST COME WITH ME QUOTE + I'D COME AFTER YOU JACK + NO NO YOU SHALL COME WITH ME + IF THIS VALLEY IS CLOSED TO ME AND I CAN NEVER COME BACK HOW CAN I LEAVE YOU BEHIND AND ME PERHAPS IN HIDING FROM THE POLICE WITH NEVER A CHANCE OF A MESSAGE + IT'S WITH ME YOU MUST COME + I KNOW A GOOD WOMAN IN THE PLACE I COME FROM AND IT'S THERE I'D LEAVE YOU TILL WE CAN GET MARRIED + WILL YOU COME + YES JACK I WILL COME + GOD BLESS YOU FOR YOUR TRUST IN ME + IT'S A FIEND OUT OF HELL THAT I SHOULD BE IF I ABUSED IT + NOW MARK YOU ETTIE IT WILL BE JUST A WORD TO YOU AND WHEN IT REACHES YOU YOU WILL DROP EVERYTHING AND COME RIGHT DOWN TO THE WAITING ROOM AT THE DEPOT AND STAY THERE TILL I COME FOR YOU QUOTE + DAY OR NIGHT I'LL COME AT THE WORD JACK + SOMEWHAT EASED IN MIND NOW THAT HIS OWN PREPARATIONS FOR ESCAPE HAD BEEN BEGUN MCMURDO WENT ON TO THE LODGE + IT HAD ALREADY ASSEMBLED AND ONLY BY COMPLICATED SIGNS AND COUNTERSIGNS COULD HE PASS THROUGH THE OUTER GUARD AND INNER GUARD WHO CLOSE TILED IT + A BUZZ OF PLEASURE AND WELCOME GREETED HIM AS HE ENTERED + THE LONG ROOM WAS CROWDED AND THROUGH THE HAZE OF TOBACCO SMOKE HE SAW THE TANGLED BLACK MANE OF THE BODYMASTER THE CRUEL UNFRIENDLY FEATURES OF BALDWIN THE VULTURE FACE OF HARRAWAY THE SECRETARY AND A DOZEN MORE WHO WERE AMONG THE LEADERS OF THE LODGE + HE REJOICED THAT THEY SHOULD ALL BE THERE TO TAKE COUNSEL OVER HIS NEWS + INDEED IT'S GLAD WE ARE TO SEE YOU BROTHER CRIED THE CHAIRMAN + THERE'S BUSINESS HERE THAT WANTS A SOLOMON IN JUDGMENT TO SET IT RIGHT + IT'S LANDER AND EGAN EXPLAINED HIS NEIGHBOUR AS HE TOOK HIS SEAT + THEY BOTH CLAIM THE HEAD MONEY GIVEN BY THE LODGE FOR THE SHOOTING OF OLD MAN CRABBE OVER AT STYLESTOWN AND WHO'S TO SAY WHICH FIRED THE BULLET + MCMURDO ROSE IN HIS PLACE AND RAISED HIS HAND + THE EXPRESSION OF HIS FACE FROZE THE ATTENTION OF THE AUDIENCE + THERE WAS A DEAD HUSH OF EXPECTATION + QUOTE EMINENT BODYMASTER QUOTE HE SAID IN A SOLEMN VOICE QUOTE I CLAIM URGENCY QUOTE + BROTHER MCMURDO CLAIMS URGENCY SAID MCGINTY + IT'S A CLAIM THAT BY THE RULES OF THIS LODGE TAKES PRECEDENCE + NOW BROTHER WE ATTEND YOU + MCMURDO TOOK THE LETTER FROM HIS POCKET + EMINENT BODYMASTER AND BRETHREN HE SAID I AM THE BEARER OF ILL NEWS THIS DAY BUT IT IS BETTER THAT IT SHOULD BE KNOWN AND DISCUSSED THAN THAT A BLOW SHOULD FALL UPON US WITHOUT WARNING WHICH WOULD DESTROY US ALL + I HAVE INFORMATION THAT THE MOST POWERFUL AND RICHEST ORGANIZATIONS IN THIS STATE HAVE BOUND THEMSELVES TOGETHER FOR OUR DESTRUCTION AND THAT AT THIS VERY MOMENT THERE IS A PINKERTON DETECTIVE ONE BIRDY EDWARDS AT WORK IN THE VALLEY COLLECTING THE EVIDENCE WHICH MAY PUT A ROPE ROUND THE NECKS OF MANY OF US AND SEND EVERY MAN IN THIS ROOM INTO A FELON'S CELL + THAT IS THE SITUATION FOR THE DISCUSSION OF WHICH I HAVE MADE A CLAIM OF URGENCY + THERE WAS A DEAD SILENCE IN THE ROOM + IT WAS BROKEN BY THE CHAIRMAN + QUOTE WHAT IS YOUR EVIDENCE FOR THIS BROTHER MCMURDO QUOTE HE ASKED + IT IS IN THIS LETTER WHICH HAS COME INTO MY HANDS SAID MCMURDO + ME READ THE PASSAGE ALOUD + IT IS A MATTER OF HONOUR WITH ME THAT I CAN GIVE NO FURTHER PARTICULARS ABOUT THE LETTER NOR PUT IT INTO YOUR HANDS BUT I ASSURE YOU THAT THERE IS NOTHING ELSE IN IT WHICH CAN AFFECT THE INTERESTS OF THE LODGE + I PUT THE CASE BEFORE YOU AS IT HAS REACHED ME + LET ME SAY MR. CHAIRMAN SAID ONE OF THE OLDER BRETHREN THAT I HAVE HEARD OF BIRDY EDWARDS AND THAT HE HAS THE NAME OF BEING THE BEST MAN IN THE PINKERTON SERVICE + DOES ANYONE KNOW HIM BY SIGHT ASKED MCGINTY + QUOTE YES QUOTE SAID MCMURDO QUOTE I DO QUOTE + THERE WAS A MURMUR OF ASTONISHMENT THROUGH THE HALL + I BELIEVE WE HOLD HIM IN THE HOLLOW OF OUR HANDS HE CONTINUED WITH AN EXULTING SMILE UPON HIS FACE + IF WE ACT QUICKLY AND WISELY WE CAN CUT THIS THING SHORT + IF I HAVE YOUR CONFIDENCE AND YOUR HELP IT IS LITTLE THAT WE HAVE TO FEAR + WHAT HAVE WE TO FEAR ANYHOW + WHAT CAN HE KNOW OF OUR AFFAIRS + QUOTE YOU MIGHT SAY SO IF ALL WERE AS STANCH AS YOU COUNCILLOR + BUT THIS MAN HAS ALL THE MILLIONS OF THE CAPITALISTS AT HIS BACK + DO YOU THINK THERE IS NO WEAKER BROTHER AMONG ALL OUR LODGES THAT COULD NOT BE BOUGHT + HE WILL GET AT OUR SECRETS MAYBE HAS GOT THEM ALREADY + THERE'S ONLY ONE SURE CURE + THAT HE NEVER LEAVES THE VALLEY SAID BALDWIN + MCMURDO NODDED + GOOD FOR YOU BROTHER BALDWIN HE SAID + YOU AND I HAVE HAD OUR DIFFERENCES BUT YOU HAVE SAID THE TRUE WORD TO NIGHT + WHERE IS HE THEN + WHERE SHALL WE KNOW HIM QUOTE + EMINENT BODYMASTER SAID MCMURDO EARNESTLY I WOULD PUT IT TO YOU THAT THIS IS TOO VITAL A THING FOR US TO DISCUSS IN OPEN LODGE + GOD FORBID THAT I SHOULD THROW A DOUBT ON ANYONE HERE BUT IF SO MUCH AS A WORD OF GOSSIP GOT TO THE EARS OF THIS MAN THERE WOULD BE AN END OF ANY CHANCE OF OUR GETTING HIM + I WOULD ASK THE LODGE TO CHOOSE A TRUSTY COMMITTEE MR. CHAIRMAN YOURSELF IF I MIGHT SUGGEST IT AND BROTHER BALDWIN HERE AND FIVE MORE + THEN I CAN TALK FREELY OF WHAT I KNOW AND OF WHAT I ADVISE SHOULD BE DONE + THE PROPOSITION WAS AT ONCE ADOPTED AND THE COMMITTEE CHOSEN + BESIDES THE CHAIRMAN AND BALDWIN THERE WERE THE VULTUREFACED SECRETARY HARRAWAY TIGER CORMAC THE BRUTAL YOUNG ASSASSIN CARTER THE TREASURER AND THE BROTHERS WILLABY FEARLESS AND DESPERATE MEN WHO WOULD STICK AT NOTHING + THE USUAL REVELRY OF THE LODGE WAS SHORT AND SUBDUED FOR THERE WAS A CLOUD UPON THE MEN'S SPIRITS AND MANY THERE FOR THE FIRST TIME BEGAN TO SEE THE CLOUD OF AVENGING LAW DRIFTING UP IN THAT SERENE SKY UNDER WHICH THEY HAD DWELT SO LONG + THE HORRORS THEY HAD DEALT OUT TO OTHERS HAD BEEN SO MUCH A PART OF THEIR SETTLED LIVES THAT THE THOUGHT OF RETRIBUTION HAD BECOME A REMOTE ONE AND SO SEEMED THE MORE STARTLING NOW THAT IT CAME SO CLOSELY UPON THEM + THEY BROKE UP EARLY AND LEFT THEIR LEADERS TO THEIR COUNCIL + NOW MCMURDO SAID MCGINTY WHEN THEY WERE ALONE + THE SEVEN MEN SAT FROZEN IN THEIR SEATS + I SAID JUST NOW THAT I KNEW BIRDY EDWARDS MCMURDO EXPLAINED + I NEED NOT TELL YOU THAT HE IS NOT HERE UNDER THAT NAME + HE'S A BRAVE MAN BUT NOT A CRAZY ONE + HE PASSES UNDER THE NAME OF STEVE WILSON AND HE IS LODGING AT HOBSON'S PATCH QUOTE + HOW DO YOU KNOW THIS + BECAUSE I FELL INTO TALK WITH HIM + I THOUGHT LITTLE OF IT AT THE TIME NOR WOULD HAVE GIVEN IT A SECOND THOUGHT BUT FOR THIS LETTER BUT NOW I'M SURE IT'S THE MAN + I MET HIM ON THE CARS WHEN I WENT DOWN THE LINE ON WEDNESDAY A HARD CASE IF EVER THERE WAS ONE + HE SAID HE WAS A REPORTER + I BELIEVED IT FOR THE MOMENT + WANTED TO KNOW ALL HE COULD ABOUT THE SCOWRERS AND WHAT HE CALLED THE OUTRAGES' FOR A NEW YORK PAPER + ASKED ME EVERY KIND OF QUESTION SO AS TO GET SOMETHING + YOU BET I WAS GIVING NOTHING AWAY + I'D PAY FOR IT AND PAY WELL SAID HE IF I COULD GET SOME STUFF THAT WOULD SUIT MY EDITOR + I SAID WHAT I THOUGHT WOULD PLEASE HIM BEST AND HE HANDED ME A TWENTY DOLLAR BILL FOR MY INFORMATION + THERE'S TEN TIMES THAT FOR YOU SAID HE IF YOU CAN FIND ME ALL THAT I WANT + WHAT DID YOU TELL HIM THEN + ANY STUFF I COULD MAKE UP + QUOTE HOW DO YOU KNOW HE WASN'T A NEWSPAPER MAN QUOTE + I'LL TELL YOU + HE GOT OUT AT HOBSON'S PATCH AND SO DID I. I CHANCED INTO THE TELEGRAPH BUREAU AND HE WAS LEAVING IT + SEE HERE SAID THE OPERATOR AFTER HE'D GONE OUT I GUESS WE SHOULD CHARGE DOUBLE RATES FOR THIS. I GUESS YOU SHOULD SAID I. HE HAD FILLED THE FORM WITH STUFF THAT MIGHT HAVE BEEN CHINESE FOR ALL WE COULD MAKE OF IT + HE FIRES A SHEET OF THIS OFF EVERY DAY SAID THE CLERK + YES SAID I IT'S SPECIAL NEWS FOR HIS PAPER AND HE'S SCARED THAT THE OTHERS SHOULD TAP IT + THAT WAS WHAT THE OPERATOR THOUGHT AND WHAT I THOUGHT AT THE TIME BUT I THINK DIFFERENTLY NOW + BY GAR + I BELIEVE YOU ARE RIGHT SAID MCGINTY + QUOTE BUT WHAT DO YOU ALLOW THAT WE SHOULD DO ABOUT IT QUOTE + WHY NOT GO RIGHT DOWN NOW AND FIX HIM SOMEONE SUGGESTED + AY THE SOONER THE BETTER + I'D START THIS NEXT MINUTE IF I KNEW WHERE WE COULD FIND HIM SAID MCMURDO + HE'S IN HOBSON'S PATCH BUT I DON'T KNOW THE HOUSE + I'VE GOT A PLAN THOUGH IF YOU'LL ONLY TAKE MY ADVICE + QUOTE WELL WHAT IS IT QUOTE + I'LL GO TO THE PATCH TO MORROW MORNING + I'LL FIND HIM THROUGH THE OPERATOR + HE CAN LOCATE HIM I GUESS + WELL THEN I'LL TELL HIM THAT I'M A FREEMAN MYSELF + I'LL OFFER HIM ALL THE SECRETS OF THE LODGE FOR A PRICE + YOU BET HE'LL TUMBLE TO IT + I'LL TELL HIM THE PAPERS ARE AT MY HOUSE AND THAT IT'S AS MUCH AS MY LIFE WOULD BE WORTH TO LET HIM COME WHILE FOLK WERE ABOUT + HE'LL SEE THAT THAT'S HORSE SENSE + LET HIM COME AT TEN O'CLOCK AT NIGHT AND HE SHALL SEE EVERYTHING + THAT WILL FETCH HIM SURE + WELL + YOU CAN PLAN THE REST FOR YOURSELVES + WIDOW MACNAMARA'S IS A LONELY HOUSE + SHE'S AS TRUE AS STEEL AND AS DEAF AS A POST + THERE'S ONLY SCANLAN AND ME IN THE HOUSE + IF I GET HIS PROMISE AND I'LL LET YOU KNOW IF I DO I'D HAVE THE WHOLE SEVEN OF YOU COME TO ME BY NINE O'CLOCK + WE'LL GET HIM IN + IF EVER HE GETS OUT ALIVE WELL HE CAN TALK OF BIRDY EDWARDS'S LUCK FOR THE REST OF HIS DAYS + QUOTE THERE'S GOING TO BE A VACANCY AT PINKERTON'S OR I'M MISTAKEN + LEAVE IT AT THAT MCMURDO + AT NINE TO MORROW WE'LL BE WITH YOU + YOU ONCE GET THE DOOR SHUT BEHIND HIM AND YOU CAN LEAVE THE REST WITH US + CHAPTER SEVEN THE TRAPPING OF BIRDY EDWARDS + AS MCMURDO HAD SAID THE HOUSE IN WHICH HE LIVED WAS A LONELY ONE AND VERY WELL SUITED FOR SUCH A CRIME AS THEY HAD PLANNED + IT WAS ON THE EXTREME FRINGE OF THE TOWN AND STOOD WELL BACK FROM THE ROAD + IN ANY OTHER CASE THE CONSPIRATORS WOULD HAVE SIMPLY CALLED OUT THEIR MAN AS THEY HAD MANY A TIME BEFORE AND EMPTIED THEIR PISTOLS INTO HIS BODY BUT IN THIS INSTANCE IT WAS VERY NECESSARY TO FIND OUT HOW MUCH HE KNEW HOW HE KNEW IT AND WHAT HAD BEEN PASSED ON TO HIS EMPLOYERS + IT WAS POSSIBLE THAT THEY WERE ALREADY TOO LATE AND THAT THE WORK HAD BEEN DONE + IF THAT WAS INDEED SO THEY COULD AT LEAST HAVE THEIR REVENGE UPON THE MAN WHO HAD DONE IT + BUT THEY WERE HOPEFUL THAT NOTHING OF GREAT IMPORTANCE HAD YET COME TO THE DETECTIVE'S KNOWLEDGE AS OTHERWISE THEY ARGUED HE WOULD NOT HAVE TROUBLED TO WRITE DOWN AND FORWARD SUCH TRIVIAL INFORMATION AS MCMURDO CLAIMED TO HAVE GIVEN HIM + HOWEVER ALL THIS THEY WOULD LEARN FROM HIS OWN LIPS + ONCE IN THEIR POWER THEY WOULD FIND A WAY TO MAKE HIM SPEAK + IT WAS NOT THE FIRST TIME THAT THEY HAD HANDLED AN UNWILLING WITNESS + MCMURDO WENT TO HOBSON'S PATCH AS AGREED + THE POLICE SEEMED TO TAKE PARTICULAR INTEREST IN HIM THAT MORNING AND CAPTAIN MARVIN HE WHO HAD CLAIMED THE OLD ACQUAINTANCE WITH HIM AT CHICAGO ACTUALLY ADDRESSED HIM AS HE WAITED AT THE STATION + MCMURDO TURNED AWAY AND REFUSED TO SPEAK WITH HIM + HE WAS BACK FROM HIS MISSION IN THE AFTERNOON AND SAW MCGINTY AT THE UNION HOUSE + HE IS COMING HE SAID + GOOD SAID MCGINTY + THE GIANT WAS IN HIS SHIRT SLEEVES WITH CHAINS AND SEALS GLEAMING ATHWART HIS AMPLE WAISTCOAT AND A DIAMOND TWINKLING THROUGH THE FRINGE OF HIS BRISTLING BEARD + DRINK AND POLITICS HAD MADE THE BOSS A VERY RICH AS WELL AS POWERFUL MAN + THE MORE TERRIBLE THEREFORE SEEMED THAT GLIMPSE OF THE PRISON OR THE GALLOWS WHICH HAD RISEN BEFORE HIM THE NIGHT BEFORE + DO YOU RECKON HE KNOWS MUCH HE ASKED ANXIOUSLY + MCMURDO SHOOK HIS HEAD GLOOMILY + HE'S BEEN HERE SOME TIME SIX WEEKS AT THE LEAST + I GUESS HE DIDN'T COME INTO THESE PARTS TO LOOK AT THE PROSPECT + IF HE HAS BEEN WORKING AMONG US ALL THAT TIME WITH THE RAILROAD MONEY AT HIS BACK I SHOULD EXPECT THAT HE HAS GOT RESULTS AND THAT HE HAS PASSED THEM ON QUOTE + THERE'S NOT A WEAK MAN IN THE LODGE CRIED MCGINTY + TRUE AS STEEL EVERY MAN OF THEM + AND YET BY THE LORD THERE IS THAT SKUNK MORRIS + WHAT ABOUT HIM + IF ANY MAN GIVES US AWAY IT WOULD BE HE + I'VE A MIND TO SEND A COUPLE OF THE BOYS ROUND BEFORE EVENING TO GIVE HIM A BEATING UP AND SEE WHAT THEY CAN GET FROM HIM + WELL THERE WOULD BE NO HARM IN THAT MCMURDO ANSWERED + I WON'T DENY THAT I HAVE A LIKING FOR MORRIS AND WOULD BE SORRY TO SEE HIM COME TO HARM + HE HAS SPOKEN TO ME ONCE OR TWICE OVER LODGE MATTERS AND THOUGH HE MAY NOT SEE THEM THE SAME AS YOU OR I HE NEVER SEEMED THE SORT THAT SQUEALS + BUT STILL IT IS NOT FOR ME TO STAND BETWEEN HIM AND YOU QUOTE + I'LL FIX THE OLD DEVIL SAID MCGINTY WITH AN OATH + I'VE HAD MY EYE ON HIM THIS YEAR PAST + WELL YOU KNOW BEST ABOUT THAT MCMURDO ANSWERED + BUT WHATEVER YOU DO MUST BE TO MORROW FOR WE MUST LIE LOW UNTIL THE PINKERTON AFFAIR IS SETTLED UP + WE CAN'T AFFORD TO SET THE POLICE BUZZING TO DAY OF ALL DAYS + QUOTE TRUE FOR YOU QUOTE SAID MCGINTY + AND WE'LL LEARN FROM BIRDY EDWARDS HIMSELF WHERE HE GOT HIS NEWS IF WE HAVE TO CUT HIS HEART OUT FIRST + DID HE SEEM TO SCENT A TRAP + MCMURDO LAUGHED + I GUESS I TOOK HIM ON HIS WEAK POINT HE SAID + IF HE COULD GET ON A GOOD TRAIL OF THE SCOWRERS HE'S READY TO FOLLOW IT INTO HELL + I TOOK HIS MONEY MCMURDO GRINNED AS HE PRODUCED A WAD OF DOLLAR NOTES AND AS MUCH MORE WHEN HE HAS SEEN ALL MY PAPERS + QUOTE WHAT PAPERS QUOTE + WELL THERE ARE NO PAPERS + BUT I FILLED HIM UP ABOUT CONSTITUTIONS AND BOOKS OF RULES AND FORMS OF MEMBERSHIP + HE EXPECTS TO GET RIGHT DOWN TO THE END OF EVERYTHING BEFORE HE LEAVES + FAITH HE'S RIGHT THERE SAID MCGINTY GRIMLY + DIDN'T HE ASK YOU WHY YOU DIDN'T BRING HIM THE PAPERS + AS IF I WOULD CARRY SUCH THINGS AND ME A SUSPECTED MAN AND CAPTAIN MARVIN AFTER SPEAKING TO ME THIS VERY DAY AT THE DEPOT + QUOTE AY I HEARD OF THAT QUOTE SAID MCGINTY + I GUESS THE HEAVY END OF THIS BUSINESS IS COMING ON TO YOU + WE COULD PUT HIM DOWN AN OLD SHAFT WHEN WE'VE DONE WITH HIM BUT HOWEVER WE WORK IT WE CAN'T GET PAST THE MAN LIVING AT HOBSON'S PATCH AND YOU BEING THERE TO DAY + MCMURDO SHRUGGED HIS SHOULDERS + IF WE HANDLE IT RIGHT THEY CAN NEVER PROVE THE KILLING SAID HE + NO ONE CAN SEE HIM COME TO THE HOUSE AFTER DARK AND I'LL LAY TO IT THAT NO ONE WILL SEE HIM GO + NOW SEE HERE COUNCILLOR I'LL SHOW YOU MY PLAN AND I'LL ASK YOU TO FIT THE OTHERS INTO IT + YOU WILL ALL COME IN GOOD TIME + VERY WELL + HE COMES AT TEN + HE IS TO TAP THREE TIMES AND ME TO OPEN THE DOOR FOR HIM + THEN I'LL GET BEHIND HIM AND SHUT IT + HE'S OUR MAN THEN + QUOTE THAT'S ALL EASY AND PLAIN QUOTE + YES BUT THE NEXT STEP WANTS CONSIDERING + HE'S A HARD PROPOSITION + HE'S HEAVILY ARMED + I'VE FOOLED HIM PROPER AND YET HE IS LIKELY TO BE ON HIS GUARD + SUPPOSE I SHOW HIM RIGHT INTO A ROOM WITH SEVEN MEN IN IT WHERE HE EXPECTED TO FIND ME ALONE + THERE IS GOING TO BE SHOOTING AND SOMEBODY IS GOING TO BE HURT + THAT'S SO + AND THE NOISE IS GOING TO BRING EVERY DAMNED COPPER IN THE TOWNSHIP ON TOP OF IT + I GUESS YOU ARE RIGHT + QUOTE THIS IS HOW I SHOULD WORK IT + YOU WILL ALL BE IN THE BIG ROOM SAME AS YOU SAW WHEN YOU HAD A CHAT WITH ME + I'LL OPEN THE DOOR FOR HIM SHOW HIM INTO THE PARLOUR BESIDE THE DOOR AND LEAVE HIM THERE WHILE I GET THE PAPERS + THAT WILL GIVE ME THE CHANCE OF TELLING YOU HOW THINGS ARE SHAPING + THEN I WILL GO BACK TO HIM WITH SOME FAKED PAPERS + AS HE IS READING THEM I WILL JUMP FOR HIM AND GET MY GRIP ON HIS PISTOL ARM + YOU'LL HEAR ME CALL AND IN YOU WILL RUSH + THE QUICKER THE BETTER FOR HE IS AS STRONG A MAN AS I AND I MAY HAVE MORE THAN I CAN MANAGE + BUT I ALLOW THAT I CAN HOLD HIM TILL YOU COME + IT'S A GOOD PLAN SAID MCGINTY + THE LODGE WILL OWE YOU A DEBT FOR THIS + I GUESS WHEN I MOVE OUT OF THE CHAIR I CAN PUT A NAME TO THE MAN THAT'S COMING AFTER ME + SURE COUNCILLOR I AM LITTLE MORE THAN A RECRUIT SAID MCMURDO BUT HIS FACE SHOWED WHAT HE THOUGHT OF THE GREAT MAN'S COMPLIMENT + WHEN HE HAD RETURNED HOME HE MADE HIS OWN PREPARATIONS FOR THE GRIM EVENING IN FRONT OF HIM + FIRST HE CLEANED OILED AND LOADED HIS SMITH AND WESSON REVOLVER + THEN HE SURVEYED THE ROOM IN WHICH THE DETECTIVE WAS TO BE TRAPPED + IT WAS A LARGE APARTMENT WITH A LONG DEAL TABLE IN THE CENTRE AND THE BIG STOVE AT ONE SIDE + AT EACH OF THE OTHER SIDES WERE WINDOWS + THERE WERE NO SHUTTERS ON THESE ONLY LIGHT CURTAINS WHICH DREW ACROSS + MCMURDO EXAMINED THESE ATTENTIVELY + NO DOUBT IT MUST HAVE STRUCK HIM THAT THE APARTMENT WAS VERY EXPOSED FOR SO SECRET A MEETING + YET ITS DISTANCE FROM THE ROAD MADE IT OF LESS CONSEQUENCE + FINALLY HE DISCUSSED THE MATTER WITH HIS FELLOW LODGER + SCANLAN THOUGH A SCOWRER WAS AN INOFFENSIVE LITTLE MAN WHO WAS TOO WEAK TO STAND AGAINST THE OPINION OF HIS COMRADES BUT WAS SECRETLY HORRIFIED BY THE DEEDS OF BLOOD AT WHICH HE HAD SOMETIMES BEEN FORCED TO ASSIST + MCMURDO TOLD HIM SHORTLY WHAT WAS INTENDED + QUOTE AND IF I WERE YOU MIKE SCANLAN I WOULD TAKE A NIGHT OFF AND KEEP CLEAR OF IT + THERE WILL BE BLOODY WORK HERE BEFORE MORNING + WELL INDEED THEN MAC SCANLAN ANSWERED + IT'S NOT THE WILL BUT THE NERVE THAT IS WANTING IN ME + WHEN I SAW MANAGER DUNN GO DOWN AT THE COLLIERY YONDER IT WAS JUST MORE THAN I COULD STAND + I'M NOT MADE FOR IT SAME AS YOU OR MCGINTY + IF THE LODGE WILL THINK NONE THE WORSE OF ME I'LL JUST DO AS YOU ADVISE AND LEAVE YOU TO YOURSELVES FOR THE EVENING + THE MEN CAME IN GOOD TIME AS ARRANGED + THEY WERE OUTWARDLY RESPECTABLE CITIZENS WELL CLAD AND CLEANLY BUT A JUDGE OF FACES WOULD HAVE READ LITTLE HOPE FOR BIRDY EDWARDS IN THOSE HARD MOUTHS AND REMORSELESS EYES + THERE WAS NOT A MAN IN THE ROOM WHOSE HANDS HAD NOT BEEN REDDENED A DOZEN TIMES BEFORE + THEY WERE AS HARDENED TO HUMAN MURDER AS A BUTCHER TO SHEEP + FOREMOST OF COURSE BOTH IN APPEARANCE AND IN GUILT WAS THE FORMIDABLE BOSS + HARRAWAY THE SECRETARY WAS A LEAN BITTER MAN WITH A LONG SCRAGGY NECK AND NERVOUS JERKY LIMBS A MAN OF INCORRUPTIBLE FIDELITY WHERE THE FINANCES OF THE ORDER WERE CONCERNED AND WITH NO NOTION OF JUSTICE OR HONESTY TO ANYONE BEYOND + THE TREASURER CARTER WAS A MIDDLE AGED MAN WITH AN IMPASSIVE RATHER SULKY EXPRESSION AND A YELLOW PARCHMENT SKIN + HE WAS A CAPABLE ORGANIZER AND THE ACTUAL DETAILS OF NEARLY EVERY OUTRAGE HAD SPRUNG FROM HIS PLOTTING BRAIN + THE TWO WILLABYS WERE MEN OF ACTION TALL LITHE YOUNG FELLOWS WITH DETERMINED FACES WHILE THEIR COMPANION TIGER CORMAC A HEAVY DARK YOUTH WAS FEARED EVEN BY HIS OWN COMRADES FOR THE FEROCITY OF HIS DISPOSITION + THESE WERE THE MEN WHO ASSEMBLED THAT NIGHT UNDER THE ROOF OF MCMURDO FOR THE KILLING OF THE PINKERTON DETECTIVE + THEIR HOST HAD PLACED WHISKY UPON THE TABLE AND THEY HAD HASTENED TO PRIME THEMSELVES FOR THE WORK BEFORE THEM + BALDWIN AND CORMAC WERE ALREADY HALF DRUNK AND THE LIQUOR HAD BROUGHT OUT ALL THEIR FEROCITY + CORMAC PLACED HIS HANDS ON THE STOVE FOR AN INSTANT IT HAD BEEN LIGHTED FOR THE NIGHTS WERE STILL COLD + THAT WILL DO SAID HE WITH AN OATH + QUOTE AY QUOTE SAID BALDWIN CATCHING HIS MEANING + IF HE IS STRAPPED TO THAT WE WILL HAVE THE TRUTH OUT OF HIM + WE'LL HAVE THE TRUTH OUT OF HIM NEVER FEAR SAID MCMURDO + HE HAD NERVES OF STEEL THIS MAN FOR THOUGH THE WHOLE WEIGHT OF THE AFFAIR WAS ON HIM HIS MANNER WAS AS COOL AND UNCONCERNED AS EVER + THE OTHERS MARKED IT AND APPLAUDED + YOU ARE THE ONE TO HANDLE HIM SAID THE BOSS APPROVINGLY + NOT A WARNING WILL HE GET TILL YOUR HAND IS ON HIS THROAT + IT'S A PITY THERE ARE NO SHUTTERS TO YOUR WINDOWS + MCMURDO WENT FROM ONE TO THE OTHER AND DREW THE CURTAINS TIGHTER + QUOTE SURE NO ONE CAN SPY UPON US NOW + IT'S CLOSE UPON THE HOUR + MAYBE HE WON'T COME + MAYBE HE'LL GET A SNIFF OF DANGER SAID THE SECRETARY + HE'LL COME NEVER FEAR MCMURDO ANSWERED + HE IS AS EAGER TO COME AS YOU CAN BE TO SEE HIM + HARK TO THAT QUOTE + THEY ALL SAT LIKE WAX FIGURES SOME WITH THEIR GLASSES ARRESTED HALFWAY TO THEIR LIPS + THREE LOUD KNOCKS HAD SOUNDED AT THE DOOR + HUSH + MCMURDO RAISED HIS HAND IN CAUTION + AN EXULTING GLANCE WENT ROUND THE CIRCLE AND HANDS WERE LAID UPON HIDDEN WEAPONS + NOT A SOUND FOR YOUR LIVES + MCMURDO WHISPERED AS HE WENT FROM THE ROOM CLOSING THE DOOR CAREFULLY BEHIND HIM + WITH STRAINED EARS THE MURDERERS WAITED + THEY COUNTED THE STEPS OF THEIR COMRADE DOWN THE PASSAGE + THEN THEY HEARD HIM OPEN THE OUTER DOOR + THERE WERE A FEW WORDS AS OF GREETING + THEN THEY WERE AWARE OF A STRANGE STEP INSIDE AND OF AN UNFAMILIAR VOICE + AN INSTANT LATER CAME THE SLAM OF THE DOOR AND THE TURNING OF THE KEY IN THE LOCK + THEIR PREY WAS SAFE WITHIN THE TRAP + TIGER CORMAC LAUGHED HORRIBLY AND BOSS MCGINTY CLAPPED HIS GREAT HAND ACROSS HIS MOUTH + BE QUIET YOU FOOL HE WHISPERED + YOU'LL BE THE UNDOING OF US YET + THERE WAS A MUTTER OF CONVERSATION FROM THE NEXT ROOM + IT SEEMED INTERMINABLE + THEN THE DOOR OPENED AND MCMURDO APPEARED HIS FINGER UPON HIS LIP + HE CAME TO THE END OF THE TABLE AND LOOKED ROUND AT THEM + A SUBTLE CHANGE HAD COME OVER HIM + HIS MANNER WAS AS OF ONE WHO HAS GREAT WORK TO DO + HIS FACE HAD SET INTO GRANITE FIRMNESS + HIS EYES SHONE WITH A FIERCE EXCITEMENT BEHIND HIS SPECTACLES + HE HAD BECOME A VISIBLE LEADER OF MEN + THEY STARED AT HIM WITH EAGER INTEREST BUT HE SAID NOTHING + STILL WITH THE SAME SINGULAR GAZE HE LOOKED FROM MAN TO MAN + WELL CRIED BOSS MCGINTY AT LAST + QUOTE IS HE HERE + IS BIRDY EDWARDS HERE + YES MCMURDO ANSWERED SLOWLY + BIRDY EDWARDS IS HERE + I AM BIRDY EDWARDS + THERE WERE TEN SECONDS AFTER THAT BRIEF SPEECH DURING WHICH THE ROOM MIGHT HAVE BEEN EMPTY SO PROFOUND WAS THE SILENCE + THE HISSING OF A KETTLE UPON THE STOVE ROSE SHARP AND STRIDENT TO THE EAR + SEVEN WHITE FACES ALL TURNED UPWARD TO THIS MAN WHO DOMINATED THEM WERE SET MOTIONLESS WITH UTTER TERROR + THEN WITH A SUDDEN SHIVERING OF GLASS A BRISTLE OF GLISTENING RIFLE BARRELS BROKE THROUGH EACH WINDOW WHILE THE CURTAINS WERE TORN FROM THEIR HANGINGS + AT THE SIGHT BOSS MCGINTY GAVE THE ROAR OF A WOUNDED BEAR AND PLUNGED FOR THE HALF OPENED DOOR + A LEVELLED REVOLVER MET HIM THERE WITH THE STERN BLUE EYES OF CAPTAIN MARVIN OF THE MINE POLICE GLEAMING BEHIND THE SIGHTS + THE BOSS RECOILED AND FELL BACK INTO HIS CHAIR + YOU'RE SAFER THERE COUNCILLOR SAID THE MAN WHOM THEY HAD KNOWN AS MCMURDO + QUOTE AND YOU BALDWIN IF YOU DON'T TAKE YOUR HAND OFF YOUR PISTOL YOU'LL CHEAT THE HANGMAN YET + PULL IT OUT OR BY THE LORD THAT MADE ME THERE THAT WILL DO + THERE ARE FORTY ARMED MEN ROUND THIS HOUSE AND YOU CAN FIGURE IT OUT FOR YOURSELF WHAT CHANCE YOU HAVE + TAKE THEIR PISTOLS MARVIN + THERE WAS NO POSSIBLE RESISTANCE UNDER THE MENACE OF THOSE RIFLES + THE MEN WERE DISARMED + SULKY SHEEPISH AND AMAZED THEY STILL SAT ROUND THE TABLE + I'D LIKE TO SAY A WORD TO YOU BEFORE WE SEPARATE SAID THE MAN WHO HAD TRAPPED THEM + I GUESS WE MAY NOT MEET AGAIN UNTIL YOU SEE ME ON THE STAND IN THE COURTHOUSE + I'LL GIVE YOU SOMETHING TO THINK OVER BETWEEN NOW AND THEN + YOU KNOW ME NOW FOR WHAT I AM + AT LAST I CAN PUT MY CARDS ON THE TABLE + I AM BIRDY EDWARDS OF PINKERTON'S + I WAS CHOSEN TO BREAK UP YOUR GANG + I HAD A HARD AND DANGEROUS GAME TO PLAY + NOT A SOUL NOT ONE SOUL NOT MY NEAREST AND DEAREST KNEW THAT I WAS PLAYING IT + ONLY CAPTAIN MARVIN HERE AND MY EMPLOYERS KNEW THAT + BUT IT'S OVER TO NIGHT THANK GOD AND I AM THE WINNER + THE SEVEN PALE RIGID FACES LOOKED UP AT HIM + THERE WAS UNAPPEASABLE HATRED IN THEIR EYES + HE READ THE RELENTLESS THREAT + MAYBE YOU THINK THAT THE GAME IS NOT OVER YET + WELL I TAKE MY CHANCE OF THAT + ANYHOW SOME OF YOU WILL TAKE NO FURTHER HAND AND THERE ARE SIXTY MORE BESIDES YOURSELVES THAT WILL SEE A JAIL THIS NIGHT + I'LL TELL YOU THIS THAT WHEN I WAS PUT UPON THIS JOB I NEVER BELIEVED THERE WAS SUCH A SOCIETY AS YOURS + I THOUGHT IT WAS PAPER TALK AND THAT I WOULD PROVE IT SO + THEY TOLD ME IT WAS TO DO WITH THE FREEMEN SO I WENT TO CHICAGO AND WAS MADE ONE + THEN I WAS SURER THAN EVER THAT IT WAS JUST PAPER TALK FOR I FOUND NO HARM IN THE SOCIETY BUT A DEAL OF GOOD + QUOTE STILL I HAD TO CARRY OUT MY JOB AND I CAME TO THE COAL VALLEYS + WHEN I REACHED THIS PLACE I LEARNED THAT I WAS WRONG AND THAT IT WASN'T A DIME NOVEL AFTER ALL + SO I STAYED TO LOOK AFTER IT + I NEVER KILLED A MAN IN CHICAGO + I NEVER MINTED A DOLLAR IN MY LIFE + THOSE I GAVE YOU WERE AS GOOD AS ANY OTHERS BUT I NEVER SPENT MONEY BETTER + BUT I KNEW THE WAY INTO YOUR GOOD WISHES AND SO L. PRETENDED TO YOU THAT THE LAW WAS AFTER ME + IT ALL WORKED JUST AS I THOUGHT + SO I JOINED YOUR INFERNAL LODGE AND I TOOK MY SHARE IN YOUR COUNCILS + MAYBE THEY WILL SAY THAT I WAS AS BAD AS YOU + THEY CAN SAY WHAT THEY LIKE SO LONG AS I GET YOU + BUT WHAT IS THE TRUTH + THE NIGHT I JOINED YOU BEAT UP OLD MAN STANGER + I COULD NOT WARN HIM FOR THERE WAS NO TIME BUT I HELD YOUR HAND BALDWIN WHEN YOU WOULD HAVE KILLED HIM + IF EVER I HAVE SUGGESTED THINGS SO AS TO KEEP MY PLACE AMONG YOU THEY WERE THINGS WHICH I KNEW I COULD PREVENT + I COULD NOT SAVE DUNN AND MENZIES FOR I DID NOT KNOW ENOUGH BUT I WILL SEE THAT THEIR MURDERERS ARE HANGED + I GAVE CHESTER WILCOX WARNING SO THAT WHEN I BLEW HIS HOUSE IN HE AND HIS FOLK WERE IN HIDING + THERE WAS MANY A CRIME THAT I COULD NOT STOP BUT IF YOU LOOK BACK AND THINK HOW OFTEN YOUR MAN CAME HOME THE OTHER ROAD OR WAS DOWN IN TOWN WHEN YOU WENT FOR HIM OR STAYED INDOORS WHEN YOU THOUGHT HE WOULD COME OUT YOU'LL SEE MY WORK + YOU BLASTED TRAITOR HISSED MCGINTY THROUGH HIS CLOSED TEETH + AY JOHN MCGINTY YOU MAY CALL ME THAT IF IT EASES YOUR SMART + YOU AND YOUR LIKE HAVE BEEN THE ENEMY OF GOD AND MAN IN THESE PARTS + IT TOOK A MAN TO GET BETWEEN YOU AND THE POOR DEVILS OF MEN AND WOMEN THAT YOU HELD UNDER YOUR GRIP + THERE WAS JUST ONE WAY OF DOING IT AND I DID IT + YOU CALL ME A TRAITOR BUT I GUESS THERE'S MANY A THOUSAND WILL CALL ME A DELIVERER THAT WENT DOWN INTO HELL TO SAVE THEM + I'VE HAD THREE MONTHS OF IT + I WOULDN'T HAVE THREE SUCH MONTHS AGAIN IF THEY LET ME LOOSE IN THE TREASURY AT WASHINGTON FOR IT + I HAD TO STAY TILL I HAD IT ALL EVERY MAN AND EVERY SECRET RIGHT HERE IN THIS HAND + I'D HAVE WAITED A LITTLE LONGER IF IT HADN'T COME TO MY KNOWLEDGE THAT MY SECRET WAS COMING OUT + A LETTER HAD COME INTO THE TOWN THAT WOULD HAVE SET YOU WISE TO IT ALL + THEN I HAD TO ACT AND ACT QUICKLY + I'VE NOTHING MORE TO SAY TO YOU EXCEPT THAT WHEN MY TIME COMES I'LL DIE THE EASIER WHEN I THINK OF THE WORK I HAVE DONE IN THIS VALLEY + NOW MARVIN I'LL KEEP YOU NO MORE + TAKE THEM IN AND GET IT OVER QUOTE + THERE IS LITTLE MORE TO TELL + SCANLAN HAD BEEN GIVEN A SEALED NOTE TO BE LEFT AT THE ADDRESS OF MISS ETTIE SHAFTER A MISSION WHICH HE HAD ACCEPTED WITH A WINK AND A KNOWING SMILE + IN THE EARLY HOURS OF THE MORNING A BEAUTIFUL WOMAN AND A MUCH MUFFLED MAN BOARDED A SPECIAL TRAIN WHICH HAD BEEN SENT BY THE RAILROAD COMPANY AND MADE A SWIFT UNBROKEN JOURNEY OUT OF THE LAND OF DANGER + IT WAS THE LAST TIME THAT EVER EITHER ETTIE OR HER LOVER SET FOOT IN THE VALLEY OF FEAR + TEN DAYS LATER THEY WERE MARRIED IN CHICAGO WITH OLD JACOB SHAFTER AS WITNESS OF THE WEDDING + THE TRIAL OF THE SCOWRERS WAS HELD FAR FROM THE PLACE WHERE THEIR ADHERENTS MIGHT HAVE TERRIFIED THE GUARDIANS OF THE LAW + IN VAIN THEY STRUGGLED + IN VAIN THE MONEY OF THE LODGE MONEY SQUEEZED BY BLACKMAIL OUT OF THE WHOLE COUNTRYSIDE WAS SPENT LIKE WATER IN THE ATTEMPT TO SAVE THEM + THAT COLD CLEAR UNIMPASSIONED STATEMENT FROM ONE WHO KNEW EVERY DETAIL OF THEIR LIVES THEIR ORGANIZATION AND THEIR CRIMES WAS UNSHAKEN BY ALL THE WILES OF THEIR DEFENDERS + AT LAST AFTER SO MANY YEARS THEY WERE BROKEN AND SCATTERED + THE CLOUD WAS LIFTED FOREVER FROM THE VALLEY + MCGINTY MET HIS FATE UPON THE SCAFFOLD CRINGING AND WHINING WHEN THE LAST HOUR CAME + EIGHT OF HIS CHIEF FOLLOWERS SHARED HIS FATE + FIFTY ODD HAD VARIOUS DEGREES OF IMPRISONMENT + THE WORK OF BIRDY EDWARDS WAS COMPLETE + AND YET AS HE HAD GUESSED THE GAME WAS NOT OVER YET + THERE WAS ANOTHER HAND TO BE PLAYED AND YET ANOTHER AND ANOTHER + TED BALDWIN FOR ONE HAD ESCAPED THE SCAFFOLD SO HAD THE WILLABYS SO HAD SEVERAL OTHERS OF THE FIERCEST SPIRITS OF THE GANG + FOR TEN YEARS THEY WERE OUT OF THE WORLD AND THEN CAME A DAY WHEN THEY WERE FREE ONCE MORE A DAY WHICH EDWARDS WHO KNEW HIS MEN WAS VERY SURE WOULD BE AN END OF HIS LIFE OF PEACE + THEY HAD SWORN AN OATH ON ALL THAT THEY THOUGHT HOLY TO HAVE HIS BLOOD AS A VENGEANCE FOR THEIR COMRADES + AND WELL THEY STROVE TO KEEP THEIR VOW + FROM CHICAGO HE WAS CHASED AFTER TWO ATTEMPTS SO NEAR SUCCESS THAT IT WAS SURE THAT THE THIRD WOULD GET HIM + FROM CHICAGO HE WENT UNDER A CHANGED NAME TO CALIFORNIA AND IT WAS THERE THAT THE LIGHT WENT FOR A TIME OUT OF HIS LIFE WHEN ETTIE EDWARDS DIED + ONCE AGAIN HE WAS NEARLY KILLED AND ONCE AGAIN UNDER THE NAME OF DOUGLAS HE WORKED IN A LONELY CANON WHERE WITH AN ENGLISH PARTNER NAMED BARKER HE AMASSED A FORTUNE + AT LAST THERE CAME A WARNING TO HIM THAT THE BLOODHOUNDS WERE ON HIS TRACK ONCE MORE AND HE CLEARED ONLY JUST IN TIME FOR ENGLAND + AND THENCE CAME THE JOHN DOUGLAS WHO FOR A SECOND TIME MARRIED A WORTHY MATE AND LIVED FOR FIVE YEARS AS A SUSSEX COUNTY GENTLEMAN A LIFE WHICH ENDED WITH THE STRANGE HAPPENINGS OF WHICH WE HAVE HEARD + EPILOGUE + THE POLICE TRIAL HAD PASSED IN WHICH THE CASE OF JOHN DOUGLAS WAS REFERRED TO A HIGHER COURT + SO HAD THE QUARTER SESSIONS AT WHICH HE WAS ACQUITTED AS HAVING ACTED IN SELF DEFENSE + GET HIM OUT OF ENGLAND AT ANY COST WROTE HOLMES TO THE WIFE + THERE ARE FORCES HERE WHICH MAY BE MORE DANGEROUS THAN THOSE HE HAS ESCAPED + THERE IS NO SAFETY FOR YOUR HUSBAND IN ENGLAND + TWO MONTHS HAD GONE BY AND THE CASE HAD TO SOME EXTENT PASSED FROM OUR MINDS + THEN ONE MORNING THERE CAME AN ENIGMATIC NOTE SLIPPED INTO OUR LETTER BOX + DEAR ME MR. HOLMES + DEAR ME SAID THIS SINGULAR EPISTLE + THERE WAS NEITHER SUPERSCRIPTION NOR SIGNATURE + I LAUGHED AT THE QUAINT MESSAGE BUT HOLMES SHOWED UNWONTED SERIOUSNESS + QUOTE DEVILTRY WATSON QUOTE HE REMARKED AND SAT LONG WITH A CLOUDED BROW + LATE LAST NIGHT MRS. HUDSON OUR LANDLADY BROUGHT UP A MESSAGE THAT A GENTLEMAN WISHED TO SEE HOLMES AND THAT THE MATTER WAS OF THE UTMOST IMPORTANCE + CLOSE AT THE HEELS OF HIS MESSENGER CAME CECIL BARKER OUR FRIEND OF THE MOATED MANOR HOUSE + HIS FACE WAS DRAWN AND HAGGARD + I'VE HAD BAD NEWS TERRIBLE NEWS MR. HOLMES SAID HE + I FEARED AS MUCH SAID HOLMES + YOU HAVE NOT HAD A CABLE HAVE YOU + I HAVE HAD A NOTE FROM SOMEONE WHO HAS + IT'S POOR DOUGLAS + THEY TELL ME HIS NAME IS EDWARDS BUT HE WILL ALWAYS BE JACK DOUGLAS OF BENITO CANON TO ME + I TOLD YOU THAT THEY STARTED TOGETHER FOR SOUTH AFRICA IN THE PALMYRA THREE WEEKS AGO QUOTE + EXACTLY + THE SHIP REACHED CAPE TOWN LAST NIGHT + I RECEIVED THIS CABLE FROM MRS. DOUGLAS THIS MORNING JACK HAS BEEN LOST OVERBOARD IN GALE OFF SAINT HELENA + NO ONE KNOWS HOW ACCIDENT OCCURRED + IVY DOUGLAS + HA + IT CAME LIKE THAT DID IT SAID HOLMES THOUGHTFULLY + WELL I'VE NO DOUBT IT WAS WELL STAGE MANAGED + QUOTE YOU MEAN THAT YOU THINK THERE WAS NO ACCIDENT QUOTE + NONE IN THE WORLD + HE WAS MURDERED + SURELY + SO I THINK ALSO + THESE INFERNAL SCOWRERS THIS CURSED VINDICTIVE NEST OF CRIMINALS + QUOTE NO NO MY GOOD SIR QUOTE SAID HOLMES + THERE IS A MASTER HAND HERE + IT IS NO CASE OF SAWED OFF SHOTGUNS AND CLUMSY SIXSHOOTERS + YOU CAN TELL AN OLD MASTER BY THE SWEEP OF HIS BRUSH + I CAN TELL A MORIARTY WHEN I SEE ONE + THIS CRIME IS FROM LONDON NOT FROM AMERICA + BUT FOR WHAT MOTIVE + BECAUSE IT IS DONE BY A MAN WHO CANNOT AFFORD TO FAIL ONE WHOSE WHOLE UNIQUE POSITION DEPENDS UPON THE FACT THAT ALL HE DOES MUST SUCCEED + A GREAT BRAIN AND A HUGE ORGANIZATION HAVE BEEN TURNED TO THE EXTINCTION OF ONE MAN + IT IS CRUSHING THE NUT WITH THE TRIPHAMMER AN ABSURD EXTRAVAGANCE OF ENERGY BUT THE NUT IS VERY EFFECTUALLY CRUSHED ALL THE SAME + QUOTE HOW CAME THIS MAN TO HAVE ANYTHING TO DO WITH IT QUOTE + I CAN ONLY SAY THAT THE FIRST WORD THAT EVER CAME TO US OF THE BUSINESS WAS FROM ONE OF HIS LIEUTENANTS + THESE AMERICANS WERE WELL ADVISED + HAVING AN ENGLISH JOB TO DO THEY TOOK INTO PARTNERSHIP AS ANY FOREIGN CRIMINAL COULD DO THIS GREAT CONSULTANT IN CRIME + FROM THAT MOMENT THEIR MAN WAS DOOMED + AT FIRST HE WOULD CONTENT HIMSELF BY USING HIS MACHINERY IN ORDER TO FIND THEIR VICTIM + THEN HE WOULD INDICATE HOW THE MATTER MIGHT BE TREATED + FINALLY WHEN HE READ IN THE REPORTS OF THE FAILURE OF THIS AGENT HE WOULD STEP IN HIMSELF WITH A MASTER TOUCH + YOU HEARD ME WARN THIS MAN AT BIRLSTONE MANOR HOUSE THAT THE COMING DANGER WAS GREATER THAN THE PAST + WAS I RIGHT + BARKER BEAT HIS HEAD WITH HIS CLENCHED FIST IN HIS IMPOTENT ANGER + DO NOT TELL ME THAT WE HAVE TO SIT DOWN UNDER THIS + DO YOU SAY THAT NO ONE CAN EVER GET LEVEL WITH THIS KING DEVIL + NO I DON'T SAY THAT SAID HOLMES AND HIS EYES SEEMED TO BE LOOKING FAR INTO THE FUTURE + QUOTE I DON'T SAY THAT HE CAN'T BE BEAT + BUT YOU MUST GIVE ME TIME YOU MUST GIVE ME TIME + WE ALL SAT IN SILENCE FOR SOME MINUTES WHILE THOSE FATEFUL EYES STILL STRAINED TO PIERCE THE VEIL diff --git a/samples/LMTutorial/train/wisteria_lodge.txt b/samples/LMTutorial/train/wisteria_lodge.txt new file mode 100755 index 0000000..b7faa66 --- /dev/null +++ b/samples/LMTutorial/train/wisteria_lodge.txt @@ -0,0 +1,778 @@ + THE ADVENTURE OF WISTERIA LODGE ONE + THE SINGULAR EXPERIENCE OF MR. JOHN SCOTT ECCLES + I FIND IT RECORDED IN MY NOTEBOOK THAT IT WAS A BLEAK AND WINDY DAY TOWARDS THE END OF MARCH IN THE YEAR ONE THOUSAND EIGHT HUNDRED NINETY TWO + HOLMES HAD RECEIVED A TELEGRAM WHILE WE SAT AT OUR LUNCH AND HE HAD SCRIBBLED A REPLY + HE MADE NO REMARK BUT THE MATTER REMAINED IN HIS THOUGHTS FOR HE STOOD IN FRONT OF THE FIRE AFTERWARDS WITH A THOUGHTFUL FACE SMOKING HIS PIPE AND CASTING AN OCCASIONAL GLANCE AT THE MESSAGE + SUDDENLY HE TURNED UPON ME WITH A MISCHIEVOUS TWINKLE IN HIS EYES + QUOTE I SUPPOSE WATSON WE MUST LOOK UPON YOU AS A MAN OF LETTERS QUOTE SAID HE + HOW DO YOU DEFINE THE WORD GROTESQUE + STRANGE REMARKABLE I SUGGESTED + HE SHOOK HIS HEAD AT MY DEFINITION + THERE IS SURELY SOMETHING MORE THAN THAT SAID HE SOME UNDERLYING SUGGESTION OF THE TRAGIC AND THE TERRIBLE + IF YOU CAST YOUR MIND BACK TO SOME OF THOSE NARRATIVES WITH WHICH YOU HAVE AFFLICTED A LONG SUFFERING PUBLIC YOU WILL RECOGNIZE HOW OFTEN THE GROTESQUE HAS DEEPENED INTO THE CRIMINAL + THINK OF THAT LITTLE AFFAIR OF THE RED HEADED MEN + THAT WAS GROTESQUE ENOUGH IN THE OUTSET AND YET IT ENDED IN A DESPERATE ATTEMPT AT ROBBERY + OR AGAIN THERE WAS THAT MOST GROTESQUE AFFAIR OF THE FIVE ORANGE PIPS WHICH LED STRAIGHT TO A MURDEROUS CONSPIRACY + THE WORD PUTS ME ON THE ALERT + HAVE YOU IT THERE + I ASKED + HE READ THE TELEGRAM ALOUD + QUOTE HAVE JUST HAD MOST INCREDIBLE AND GROTESQUE EXPERI ENCE + MAY I CONSULT YOU + SCOTT ECCLES POST OFFICE CHARING CROSS + MAN OR WOMAN + I ASKED + OH MAN OF COURSE + NO WOMAN WOULD EVER SEND A REPLYPAID TELEGRAM + SHE WOULD HAVE COME + WILL YOU SEE HIM + QUOTE MY DEAR WATSON YOU KNOW HOW BORED I HAVE BEEN SINCE WE LOCKED UP COLONEL CARRUTHERS + MY MIND IS LIKE A RACING ENGINE TEARING ITSELF TO PIECES BECAUSE IT IS NOT CONNECTED UP WITH THE WORK FOR WHICH IT WAS BUILT + LIFE IS COMMONPLACE THE PAPERS ARE STERILE AUDACITY AND ROMANCE SEEM TO HAVE PASSED FOREVER FROM THE CRIMINAL WORLD + CAN YOU ASK ME THEN WHETHER I AM READY TO LOOK INTO ANY NEW PROBLEM HOWEVER TRIVIAL IT MAY PROVE + BUT HERE UNLESS I AM MISTAKEN IS OUR CLIENT + A MEASURED STEP WAS HEARD UPON THE STAIRS AND A MOMENT LATER A STOUT TALL GRAY WHISKERED AND SOLEMNLY RESPECTABLE PERSON WAS USHERED INTO THE ROOM + HIS LIFE HISTORY WAS WRITTEN IN HIS HEAVY FEATURES AND POMPOUS MANNER + FROM HIS SPATS TO HIS GOLD RIMMED SPECTACLES HE WAS A CONSERVATIVE A CHURCHMAN A GOOD CITIZEN ORTHODOX AND CONVENTIONAL TO THE LAST DEGREE + BUT SAME AMAZING EXPERIENCE HAD DISTURBED HIS NATIVE COMPOSURE AND LEFT ITS TRACES IN HIS BRISTLING HAIR HIS FLUSHED ANGRY CHEEKS AND HIS FLURRIED EXCITED MANNER + HE PLUNGED INSTANTLY INTO HIS BUSINESS + I HAVE HAD A MOST SINGULAR AND UNPLEASANT EXPERIENCE MR. HOLMES SAID HE + NEVER IN MY LIFE HAVE I BEEN PLACED IN SUCH A SITUATION + IT IS MOST IMPROPER MOST OUTRAGEOUS + I MUST INSIST UPON SOME EXPLANATION + HE SWELLED AND PUFFED IN HIS ANGER + PRAY SIT DOWN MR. SCOTT ECCLES SAID HOLMES IN A SOOTHING VOICE + QUOTE MAY I ASK IN THE FIRST PLACE WHY YOU CAME TO ME AT ALL QUOTE + WELL SIR IT DID NOT APPEAR TO BE A MATTER WHICH CONCERNED THE POLICE AND YET WHEN YOU HAVE HEARD THE FACTS YOU MUST ADMIT THAT I COULD NOT LEAVE IT WHERE IT WAS + PRIVATE DETECTIVES ARE A CLASS WITH WHOM I HAVE ABSOLUTELY NO SYMPATHY BUT NONE THE LESS HAVING HEARD YOUR NAME + QUITE SO + BUT IN THE SECOND PLACE WHY DID YOU NOT COME AT ONCE + WHAT DO YOU MEAN + HOLMES GLANCED AT HIS WATCH + QUOTE IT IS A QUARTER PAST TWO QUOTE HE SAID + YOUR TELEGRAM WAS DISPATCHED ABOUT ONE + BUT NO ONE CAN GLANCE AT YOUR TOILET AND ATTIRE WITHOUT SEEING THAT YOUR DISTURBANCE DATES FROM THE MOMENT OF YOUR WAKING + OUR CLIENT SMOOTHED DOWN HIS UNBRUSHED HAIR AND FELT HIS UNSHAVEN CHIN + YOU ARE RIGHT MR. HOLMES + I NEVER GAVE A THOUGHT TO MY TOILET + I WAS ONLY TOO GLAD TO GET OUT OF SUCH A HOUSE + BUT I HAVE BEEN RUNNING ROUND MAKING INQUIRIES BEFORE I CAME TO YOU + I WENT TO THE HOUSE AGENTS YOU KNOW AND THEY SAID THAT MR. GARCIA'S RENT WAS PAID UP ALL RIGHT AND THAT EVERYTHING WAS IN ORDER AT WISTERIA LODGE + COME COME SIR SAID HOLMES LAUGHING + QUOTE YOU ARE LIKE MY FRIEND DOCTOR WATSON WHO HAS A BAD HABIT OF TELLING HIS STORIES WRONG END FOREMOST + PLEASE ARRANGE YOUR THOUGHTS AND LET ME KNOW IN THEIR DUE SEQUENCE EXACTLY WHAT THOSE EVENTS ARE WHICH HAVE SENT YOU OUT UNBRUSHED AND UNKEMPT WITH DRESS BOOTS AND WAISTCOAT BUTTONED AWRY IN SEARCH OF ADVICE AND ASSISTANCE + OUR CLIENT LOOKED DOWN WITH A RUEFUL FACE AT HIS OWN UNCONVENTIONAL APPEARANCE + I'M SURE IT MUST LOOK VERY BAD MR. HOLMES AND I AM NOT AWARE THAT IN MY WHOLE LIFE SUCH A THING HAS EVER HAPPENED BEFORE + BUT I WILL TELL YOU THE WHOLE QUEER BUSINESS AND WHEN I HAVE DONE SO YOU WILL ADMIT I AM SURE THAT THERE HAS BEEN ENOUGH TO EXCUSE ME + BUT HIS NARRATIVE WAS NIPPED IN THE BUD + THERE WAS A BUSTLE OUTSIDE AND MRS. HUDSON OPENED THE DOOR TO USHER IN TWO ROBUST AND OFFICIAL LOOKING INDIVIDUALS ONE OF WHOM WAS WELL KNOWN TO US AS INSPECTOR GREGSON OF SCOTLAND YARD AN ENERGETIC GALLANT AND WITHIN HIS LIMITATIONS A CAPABLE OFFICER + HE SHOOK HANDS WITH HOLMES AND INTRODUCED HIS COMRADE AS INSPECTOR BAYNES OF THE SURREY CONSTABULARY + WE ARE HUNTING TOGETHER MR. HOLMES AND OUR TRAIL LAY IN THIS DIRECTION + HE TURNED HIS BULLDOG EJES UPON OUR VISITOR + ARE YOU MR. JOHN SCOTT ECCLES OF POPHAM HOUSE LEE + QUOTE I AM QUOTE + WE HAVE BEEN FOLLOWING YOU ABOUT ALL THE MORNING + YOU TRACED HIM THROUGH THE TELEGRAM NO DOUBT SAID HOLMES + EXACTLY MR. HOLMES + WE PICKED UP THE SCENT AT CHARING CROSS POST OFFICE AND CAME ON HERE + BUT WHY DO YOU FOLLOW ME + WHAT DO YOU WANT QUOTE + WE WISH A STATEMENT MR. SCOTT ECCLES AS TO THE EVENTS WHICH LED UP TO THE DEATH LAST NIGHT OF MR. ALOYSIUS GARCIA OF WISTERIA LODGE NEAR ESHER + OUR CLIENT HAD SAT UP WITH STARING EYES AND EVERY TINGE OF COLOUR STRUCK FROM HIS ASTONISHED FACE + DEAD + DID YOU SAY HE WAS DEAD + YES SIR HE IS DEAD + BUT HOW + AN ACCIDENT QUOTE + MURDER IF EVER THERE WAS ONE UPON EARTH + GOOD GOD + THIS IS AWFUL + YOU DON'T MEAN YOU DON'T MEAN THAT I AM SUSPECTED + A LETTER OF YOURS WAS FOUND IN THE DEAD MAN'S POCKET AND WE KNOW BY IT THAT YOU HAD PLANNED TO PASS LAST NIGHT AT HIS HOUSE + SO I DID + QUOTE OH YOU DID DID YOU QUOTE + OUT CAME THE OFFICIAL NOTEBOOK + WAIT A BIT GREGSON SAID SHERLOCK HOLMES + ALL YOU DESIRE IS A PLAIN STATEMENT IS IT NOT + AND IT IS MY DUTY TO WARN MR. SCOTT ECCLES THAT IT MAY BE USED AGAINST HIM + MR. ECCLES WAS GOING TO TELL US ABOUT IT WHEN YOU ENTERED THE ROOM + I THINK WATSON A BRANDY AND SODA WOULD DO HIM NO HARM + NOW SIR I SUGGEST THAT YOU TAKE NO NOTICE OF THIS ADDITION TO YOUR AUDIENCE AND THAT YOU PROCEED WITH YOUR NARRATIVE EXACTLY AS YOU WOULD HAVE DONE HAD YOU NEVER BEEN INTERRUPTED + OUR VISITOR HAD GULPED OFF THE BRANDY AND THE COLOUR HAD RETURNED TO HIS FACE + WITH A DUBIOUS GLANCE AT THE INSPECTOR'S NOTEBOOK HE PLUNGED AT ONCE INTO HIS EXTRAORDINARY STATEMENT + QUOTE I AM A BACHELOR QUOTE SAID HE QUOTE AND BEING OF A SOCIABLE TURN I CULTIVATE A LARGE NUMBER OF FRIENDS + AMONG THESE ARE THE FAMILY OF A RETIRED BREWER CALLED MELVILLE LIVING AT ALBEMARLE MANSION KENSINGTON + IT WAS AT HIS TABLE THAT I MET SOME WEEKS AGO A YOUNG FELLOW NAMED GARCIA + HE WAS I UNDERSTOOD OF SPANISH DESCENT AND CONNECTED IN SOME WAY WITH THE EMBASSY + HE SPOKE PERFECT ENGLISH WAS PLEASING IN HIS MANNERS AND AS GOODLOOKING A MAN AS EVER I SAW IN MY LIFE + IN SOME WAY WE STRUCK UP QUITE A FRIENDSHIP THIS YOUNG FELLOW AND I. HE SEEMED TO TAKE A FANCY TO ME FROM THE FIRST AND WITHIN TWO DAYS OF OUR MEETING HE CAME TO SEE ME AT LEE + ONE THING LED TO ANOTHER AND IT ENDED IN HIS INVITING ME OUT TO SPEND A FEW DAYS AT HIS HOUSE WISTERIA LODGE BETWEEN ESHER AND OXSHOTT + YESTERDAY EVENING I WENT TO ESHER TO FULFIL THIS ENGAGEMENT + HE HAD DESCRIBED HIS HOUSEHOLD TO ME BEFORE I WENT THERE + HE LIVED WITH A FAITHFUL SERVANT A COUNTRYMAN OF HIS OWN WHO LOOKED AFTER ALL HIS NEEDS + THIS FELLOW COULD SPEAK ENGLISH AND DID HIS HOUSEKEEPING FOR HIM + THEN THERE WAS A WONDERFUL COOK HE SAID A HALF BREED WHOM HE HAD PICKED UP IN HIS TRAVELS WHO COULD SERVE AN EXCELLENT DINNER + I REMEMBER THAT HE REMARKED WHAT A QUEER HOUSEHOLD IT WAS TO FIND IN THE HEART OF SURREY AND THAT I AGREED WITH HIM THOUGH IT HAS PROVED A GOOD DEAL QUEERER THAN I THOUGHT + I DROVE TO THE PLACE ABOUT TWO MILES ON THE SOUTH SIDE OF ESHER + THE HOUSE WAS A FAIR SIZED ONE STANDING BACK FROM THE ROAD WITH A CURVING DRIVE WHICH WAS BANKED WITH HIGH EVERGREEN SHRUBS + IT WAS AN OLD TUMBLE DOWN BUILDING IN A CRAZY STATE OF DISREPAIR + WHEN THE TRAP PULLED UP ON THE GRASS GROWN DRIVE IN FRONT OF THE BLOTCHED AND WEATHER STAINED DOOR I HAD DOUBTS AS TO MY WISDOM IN VISITING A MAN WHOM I KNEW SO SLIGHTLY + HE OPENED THE DOOR HIMSELF HOWEVER AND GREETED ME WLTH A GREAT SHOW OF CORDIALITY + I WAS HANDED OVER TO THE MANSERVANT A MELANCHOLY SWARTHY INDIVIDUAL WHO LED THE WAY MY BAG IN HIS HAND TO MY BEDROOM + THE WHOLE PLACE WAS DEPRESSING + OUR DINNER WAS TETE A TETE AND THOUGH MY HOST DID HIS BEST TO BE ENTERTAINING HIS THOUGHTS SEEMED TO CONTINUALLY WANDER AND HE TALKED SO VAGUELY AND WILDLY THAT I COULD HARDLY UNDERSTAND HIM + HE CONTINUALLY DRUMMED HIS FINGERS ON THE TABLE GNAWED HIS NAILS AND GAVE OTHER SIGNS OF NERVOUS IMPATIENCE + THE DINNER ITSELF WAS NEITHER WELL SERVED NOR WELL COOKED AND THE GLOOMY PRESENCE OF THE TACITURN SERVANT DID NOT HELP TO ENLIVEN US + I CAN ASSURE YOU THAT MANY TIMES IN THE COURSE OF THE EVENING I WISHED THAT I COULD INVENT SOME EXCUSE WHICH WOULD TAKE ME BACK TO LEE + ONE THING COMES BACK TO MY MEMORY WHICH MAY HAVE A BEARING UPON THE BUSINESS THAT YOU TWO GENTLEMEN ARE INVESTIGATING + I THOUGHT NOTHING OF IT AT THE TIME + NEAR THE END OF DINNER A NOTE WAS HANDED IN BY THE SERVANT + I NOTICED THAT AFTER MY HOST HAD READ IT HE SEEMED EVEN MORE DISTRAIT AND STRANGE THAN BEFORE + HE GAVE UP ALL PRETENCE AT CONVERSATION AND SAT SMOKING ENDLESS CIGARETTES LOST IN HIS OWN THOUGHTS BUT HE MADE NO REMARK AS TO THE CONTENTS + ABOUT ELEVEN I WAS GLAD TO GO TO BED + SOME TIME LATER GARCIA LOOKED IN AT MY DOOR THE ROOM WAS DARK AT THE TIME AND ASKED ME IF I HAD RUNG + I SAID THAT I HAD NOT + HE APOLOGIZED FOR HAVING DISTURBED ME SO LATE SAYING THAT IT WAS NEARLY ONE O'CLOCK + I DROPPED OFF AFTER THIS AND SLEPT SOUNDLY ALL NIGHT + AND NOW I COME TO THE AMAZING PART OF MY TALE + WHEN I WOKE IT WAS BROAD DAYLIGHT + I GLANCED AT MY WATCH AND THE TIME WAS NEARLY NINE + I HAD PARTICULARLY ASKED TO BE CALLED AT EIGHT SO I WAS VERY MUCH ASTONISHED AT THIS FORGETFULNESS + I SPRANG UP AND RANG FOR THE SERVANT + THERE WAS NO RESPONSE + I RANG AGAIN AND AGAIN WITH THE SAME RESULT + THEN I CAME TO THE CONCLUSION THAT THE BELL WAS OUT OF ORDER + I HUDDLED ON MY CLOTHES AND HURRIED DOWNSTAIRS IN AN EXCEEDINGLY BAD TEMPER TO ORDER SOME HOT WATER + YOU CAN IMAGINE MY SURPRISE WHEN I FOUND THAT THERE WAS NO ONE THERE + I SHOUTED IN THE HALL + THERE WAS NO ANSWER + THEN I RAN FROM ROOM TO ROOM + ALL WERE DESERTED + MY HOST HAD SHOWN ME WHICH WAS HIS BEDROOM THE NIGHT BEFORE SO I KNOCKED AT THE DOOR + NO REPLY + I TURNED THE HANDLE AND WALKED IN + THE ROOM WAS EMPTY AND THE BED HAD NEVER BEEN SLEPT IN + HE HAD GONE WITH THE REST + THE FOREIGN HOST THE FOREIGN FOOTMAN THE FOREIGN COOK ALL HAD VANISHED IN THE NIGHT + THAT WAS THE END OF MY VISIT TO WISTERIA LODGE QUOTE + SHERLOCK HOLMES WAS RUBBING HIS HANDS AND CHUCKLING AS HE ADDED THIS BIZARRE INCIDENT TO HIS COLLECTION OF STRANGE EPISODES + YOUR EXPERIENCE IS SO FAR AS I KNOW PERFECTLY UNIQUE SAID HE + MAY I ASK SIR WHAT YOU DID THEN + I WAS FURIOUS + MY FIRST IDEA WAS THAT I HAD BEEN THE VICTIM OF SOME ABSURD PRACTICAL JOKE + I PACKED MY THINGS BANGED THE HALL DOOR BEHIND ME AND SET OFF FOR ESHER WITH MY BAG IN MY HAND + I CALLED AT ALLAN BROTHERS THE CHIEF LAND AGENTS IN THE VILLAGE AND FOUND THAT IT WAS FROM THIS FIRM THAT THE VILLA HAD BEEN RENTED + IT STRUCK ME THAT THE WHOLE PROCEEDING COULD HARDLY BE FOR THE PURPOSE OF MAKING A FOOL OF ME AND THAT THE MAIN OBJECT MUST BE TO GET OUT OF THE RENT + IT IS LATE IN MARCH SO QUARTER DAY IS AT HAND + BUT THIS THEORY WOULD NOT WORK + THE AGENT WAS OBLIGED TO ME FOR MY WARNING BUT TOLD ME THAT THE RENT HAD BEEN PAID IN ADVANCE + THEN I MADE MY WAY TO TOWN AND CALLED AT THE SPANISH EMBASSY + THE MAN WAS UNKNOWN THERE + AFTER THIS I WENT TO SEE MELVILLE AT WHOSE HOUSE I HAD FIRST MET GARCIA BUT I FOUND THAT HE REALLY KNEW RATHER LESS ABOUT HIM THAN I DID + FINALLY WHEN I GOT YOUR REPLY TO MY WIRE I CAME OUT TO YOU SINCE I GATHER THAT YOU ARE A PERSON WHO GIVES ADVICE IN DIFFICULT CASES + BUT NOW MR. INSPECTOR I UNDERSTAND FROM WHAT YOU SAID WHEN YOU ENTERED THE ROOM THAT YOU CAN CARRY THE STORY ON AND THAT SOME TRAGEDY HAS OCCURRED + I CAN ASSURE YOU THAT EVERY WORD I HAVE SAID IS THE TRUTH AND THAT OUTSIDE OF WHAT I HAVE TOLD YOU I KNOW ABSOLUTELY NOTHING ABOUT THE FATE OF THIS MAN + MY ONLY DESIRE IS TO HELP THE LAW IN EVERY POSSIBLE WAY + I AM SURE OF IT MR. SCOTT ECCLES I AM SURE OF IT SAID INSPECTOR GREGSON IN A VERY AMIABLE TONE + QUOTE I AM BOUND TO SAY THAT EVERYTHING WHICH YOU HAVE SAID AGREES VERY CLOSELY WITH THE FACTS AS THEY HAVE COME TO OUR NOTICE + FOR EXAMPLE THERE WAS THAT NOTE WHICH ARRIVED DURING DINNER + DID YOU CHANCE TO OBSERVE WHAT BECAME OF IT + YES I DID + GARCIA ROLLED IT UP AND THREW IT INTO THE FIRE + WHAT DO YOU SAY TO THAT MR. BAYNES + THE COUNTRY DETECTIVE WAS A STOUT PUFFY RED MAN WHOSE FACE WAS ONLY REDEEMED FROM GROSSNESS BY TWO EXTRAORDINARILY BRIGHT EYES ALMOST HIDDEN BEHIND THE HEAVY CREASES OF CHEEK AND BROW + WITH A SLOW SMILE HE DREW A FOLDED AND DISCOLOURED SCRAP OF PAPER FROM HIS POCKET + IT WAS A DOG GRATE MR. HOLMES AND HE OVERPITCHED IT + I PICKED THIS OUT UNBURNED FROM THE BACK OF IT QUOTE + HOLMES SMILED HIS APPRECIATION + YOU MUST HAVE EXAMINED THE HOUSE VERY CAREFULLY TO FIND A SINGLE PELLET OF PAPER + I DID MR. HOLMES + IT'S MY WAY + SHALL I READ IT MR. GREGSON + THE LONDONER NODDED + THE NOTE IS WRITTEN UPON ORDINARY CREAM LAID PAPER WITHOUT WATERMARK + IT IS A QUARTER SHEET + THE PAPER IS CUT OFF IN TWO SNIPS WITH A SHORT BLADED SCISSORS + IT HAS BEEN FOLDED OVER THREE TIMES AND SEALED WITH PURPLE WAX PUT ON HURRIEDLY AND PRESSED DOWN WITH SOME FLAT OVAL OBJECT + IT IS ADDRESSED TO MR. GARCIA WISTERIA LODGE + IT SAYS OUR OWN COLOURS GREEN AND WHITE + GREEN OPEN WHITE SHUT + MAIN STAIR FIRST CORRIDOR SEVENTH RIGHT GREEN BAIZE + GODSPEED + D. IT IS A WOMAN'S WRITING DONE WITH A SHARP POINTED PEN BUT THE ADDRESS IS EITHER DONE WITH ANOTHER PEN OR BY SOMEONE ELSE + IT IS THICKER AND BOLDER AS YOU SEE QUOTE + A VERY REMARKABLE NOTE SAID HOLMES GLANCING IT OVER + I MUST COMPLIMENT YOU MR. BAYNES UPON YOUR ATTENTION TO DETAIL IN YOUR EXAMINATION OF IT + A FEW TRIFLING POINTS MIGHT PERHAPS BE ADDED + THE OVAL SEAL IS UNDOUBTEDLY A PLAIN SLEEVE LINK WHAT ELSE IS OF SUCH A SHAPE + THE SCISSORS WERE BENT NAIL SCISSORS + SHORT AS THE TWO SNIPS ARE YOU CAN DISTINCTLY SEE THE SAME SLIGHT CURVE IN EACH + THE COUNTRY DETECTIVE CHUCKLED + I THOUGHT I HAD SQUEEZED ALL THE JUICE OUT OF IT BUT I SEE THERE WAS A LITTLE OVER HE SAID + I'M BOUND TO SAY THAT I MAKE NOTHING OF THE NOTE EXCEPT THAT THERE WAS SOMETHING ON HAND AND THAT A WOMAN AS USUAL WAS AT THE BOTTOM OF IT + MR. SCOTT ECCLES HAD FIDGETED IN HIS SEAT DURING THIS CONVERSATION + QUOTE I AM GLAD YOU FOUND THE NOTE SINCE IT CORROBORATES MY STORY QUOTE SAID HE + BUT I BEG TO POINT OUT THAT I HAVE NOT YET HEARD WHAT HAS HAPPENED TO MR. GARCIA NOR WHAT HAS BECOME OF HIS HOUSEHOLD + AS TO GARCIA SAID GREGSON THAT IS EASILY ANSWERED + HE WAS FOUND DEAD THIS MORNING UPON OXSHOTT COMMON NEARLY A MILE FROM HIS HOME + HIS HEAD HAD BEEN SMASHED TO PULP BY HEAVY BLOWS OF A SANDBAG OR SOME SUCH INSTRUMENT WHICH HAD CRUSHED RATHER THAN WOUNDED + IT IS A LONELY CORNER AND THERE IS NO HOUSE WITHIN A QUARTER OF A MILE OF THE SPOT + HE HAD APPARENTLY BEEN STRUCK DOWN FIRST FROM BEHIND BUT HIS ASSAILANT HAD GONE ON BEATING HIM LONG AFTER HE WAS DEAD + IT WAS A MOST FURIOUS ASSAULT + THERE ARE NO FOOTSTEPS NOR ANY CLUE TO THE CRIMINALS + ROBBED + NO THERE WAS NO ATTEMPT AT ROBBERY + QUOTE THIS LIS VERY PAINFUL VERY PAINFUL AND TERRIBLE QUOTE SAID MR. SCOTT ECCLES IN A QUERULOUS VOICE QUOTE BUT IT IS REALLY UNCOMMONLY HARD UPON ME + I HAD NOTHING TO DO WITH MY HOST GOING OFF UPON A NOCTURNAL EXCURSION AND MEETING SO SAD AN END + HOW DO I COME TO BE MIXLED UP WITH THE CASE + VERY SIMPLY SIR INSPECTOR BAYNES ANSWERED + THE ONLY DOCUMENT FOUND IN THE POCKET OF THE DECEASED WAS A LETTER FROM YOU SAYING THAT YOU WOULD BE WITH HIM ON THE NIGHT OF HIS DEATH + IT WAS THE ENVELOPE OF THIS LETTER WHICH GAVE US THE DEAD MAN'S NAME AND ADDRESS + IT WAS AFTER NINE THIS MORNING WHEN WE REACHED HIS HOUSE AND FOUND NEITHER YOU NOR ANYONE ELSE INSIDE IT + I WIRED TO MR. GREGSON TO RUN YOU DOWN IN LONDON WHILE I EXAMINED WISTERIA LODGE + THEN I CAME INTO TOWN JOINED MR. GREGSON AND HERE WE ARE + I THINK NOW SAID GREGSON RISING WE HAD BEST PUT THIS MATTER INTO AN OFFICIAL SHAPE + YOU WILL COME ROUND WITH US TO THE STATION MR. SCOTT ECCLES AND LET US HAVE YOUR STATEMENT IN WRITING QUOTE + CERTAINLY I WILL COME AT ONCE + BUT I RETAIN YOUR SERVICES MR. HOLMES + I DESIRE YOU TO SPARE NO EXPENSE AND NO PAINS TO GET AT THE TRUTH + MY FRIEND TURNED TO THE COUNTRY INSPECTOR + I SUPPOSE THAT YOU HAVE NO OBJECTION TO MY COLLABORATING WITH YOU MR. BAYNES + HIGHLY HONOURED SIR I AM SURE + YOU APPEAR TO HAVE BEEN VERY PROMPT AND BUSINESS LIKE IN ALL THAT YOU HAVE DONE + WAS THERE ANY CLUE MAY I ASK AS TO THE EXACT HOUR THAT THE MAN MET HIS DEATH QUOTE + HE HAD BEEN THERE SINCE ONE O'CLOCK + THERE WAS RAIN ABOUT THAT TIME AND HIS DEATH HAD CERTAINLY BEEN BEFORE THE RAIN + BUT THAT IS PERFECTLY IMPOSSIBLE MR. BAYNES CRIED OUR CLIENT + HIS VOICE IS UNMISTAKABLE + I COULD SWEAR TO IT THAT IT WAS HE WHO ADDRESSED ME IN MY BEDROOM AT THAT VERY HOUR + QUOTE REMARKABLE BUT BY NO MEANS IMPOSSIBLE QUOTE SAID HOLMES SMILING + YOU HAVE A CLUE ASKED GREGSON + ON THE FACE OF IT THE CASE IS NOT A VERY COMPLEX ONE THOUGH IT CERTAINLY PRESENTS SOME NOVEL AND INTERESTING FEATURES + A FURTHER KNOWLEDGE OF FACTS IS NECESSARY BEFORE I WOULD VENTURE TO GIVE A FINAL AND DEFINITE OPINION + BY THE WAY MR. BAYNES DID YOU FIND ANYTHING REMARKABLE BESIDES THIS NOTE IN YOUR EXAMINATION OF THE HOUSE + THE DETECTIVE LOOKED AT MY FRIEND IN A SINGULAR WAY + THERE WERE SAID HE ONE OR TWO VELY REMARKABLE THINGS + PERHAPS WHEN I HAVE FINISHED AT THE POLICE STATION YOU WOULD CARE TO COME OUT AND GIVE ME YOUR OPINION OF THEM + QUOTE I AM ENTIRELY AT YOUR SERVICE QUOTE SAID SHERLOCK HOLMES RINGING THE BELL + YOU WILL SHOW THESE GENTLEMEN OUT MRS. HUDSON AND KINDLY SEND THE BOY WITH THIS TELEGRAM + HE IS TO PAY A FIVE SHILLING REPLY + WE SAT FOR SOME TIME IN SILENCE AFTER OUR VISITORS HAD LEFT + HOLMES SMOKED HARD WITH HIS BROWS DRAWN DOWN OVER HIS KEEN EYES AND HIS HEAD THRUST FORWARD IN THE EAGER WAY CHARACTERISTIC OF THE MAN + WELL WATSON HE ASKED TURNING SUDDENLY UPON ME WHAT DO YOU MAKE OF IT + I CAN MAKE NOTHING OF THIS MYSTIFICATION OF SCOTT ECCLES + BUT THE CRIME + QUOTE WELL TAKEN WITH THE DISAPPEARANCE OF THE MAN'S COMPANIONS I SHOULD SAY THAT THEY WERE IN SOME WAY CONCERNED IN THE MURDER AND HAD FLED FROM JUSTICE QUOTE + THAT IS CERTAINLY A POSSIBLE POINT OF VIEW + ON THE FACE OF IT YOU MUST ADMIT HOWEVER THAT IT IS VERY STRANGE THAT HIS TWO SERVANTS SHOULD HAVE BEEN IN A CONSPIRACY AGAINST HIM AND SHOULD HAVE ATTACKED HIM ON THE ONE NIGHT WHEN HE HAD A GUEST + THEY HAD HIM ALONE AT THEIR MERCY EVERY OTHER NIGHT IN THE WEEK + THEN WHY DID THEY FLY + QUITE SO + WHY DID THEY FLY + THERE IS A BIG FACT + ANOTHER BIG FACT IS THE REMARKABLE EXPERIENCE OF OUR CLIENT SCOTT ECCLES + NOW MY DEAR WATSON IS IT BEYOND THE LIMITS OF HUMAN INGENUITY TO FURNISH AN EXPLANATION WHICH WOULD COVER BOTH THESE BIG FACTS + IF IT WERE ONE WHICH WOULD ALSO ADMIT OF THE MYSTERIOUS NOTE WITH ITS VERY CURIOUS PHRASEOLOGY WHY THEN IT WOULD BE WORTH ACCEPTING AS A TEMPORARY HYPOTHESIS + IF THE FRESH FACTS WHICH COME TO OUR KNOWLEDGE ALL FIT THEMSELVES INTO THE SCHEME THEN OUR HYPOTHESIS MAY GRADUALLY BECOME A SOLUTION + QUOTE BUT WHAT IS OUR HYPOTHESIS QUOTE + HOLMES LEANED BACK IN HIS CHAIR WITH HALF CLOSED EYES + YOU MUST ADMIT MY DEAR WATSON THAT THE IDEA OF A JOKE IS IMPOSSIBLE + THERE WERE GRAVE EVENTS AFOOT AS THE SEQUEL SHOWED AND THE COAXING OF SCOTT ECCLES TO WISTERIA LODGE HAD SOME CONNECTION WITH THEM + BUT WHAT POSSIBLE CONNECTION + LET US TAKE IT LINK BY LINK + THERE IS ON THE FACE OF IT SOMETHING UNNATURAL ABOUT THIS STRANGE AND SUDDEN FRIENDSHIP BETWEEN THE YOUNG SPANIARD AND SCOTT ECCLES + IT WAS THE FORMER WHO FORCED THE PACE + HE CALLED UPON ECCLES AT THE OTHER END OF LONDON ON THE VERY DAY AFTER HE FIRST MET HIM AND HE KEPT IN CLOSE TOUCH WITH HIM UNTIL HE GOT HIM DOWN TO ESHER + NOW WHAT DID HE WANT WITH ECCLES + WHAT COULD ECCLES SUPPLY + I SEE NO CHARM IN THE MAN + HE IS NOT PARTICULARLY INTELLIGENT NOT A MAN LIKELY TO BE CONGENIAL TO A QUICK WITTED LATIN + WHY THEN WAS HE PICKED OUT FROM ALL THE OTHER PEOPLE WHOM GARCIA MET AS PARTICULARLY SUITED TO HIS PURPOSE + HAS HE ANY ONE OUTSTANDING QUALITY + I SAY THAT HE HAS + HE IS THE VERY TYPE OF CONVENTIONAL BRITISH RESPECTABILITY AND THE VERY MAN AS A WITNESS TO IMPRESS ANOTHER BRITON + YOU SAW YOURSELF HOW NEITHER OF THE INSPECTORS DREAMED OF QUESTIONING HIS STATEMENT EXTRAORDINARY AS IT WAS + QUOTE BUT WHAT WAS HE TO WITNESS QUOTE + NOTHING AS THINGS TURNED OUT BUT EVERYTHING HAD THEY GONE ANOTHER WAY + THAT IS HOW I READ THE MATTER + I SEE HE MIGHT HAVE PROVED AN ALIBI + EXACTLY MY DEAR WATSON HE MIGHT HAVE PROVED AN ALIBI + WE WILL SUPPOSE FOR ARGUMENT'S SAKE THAT THE HOUSEHOLD OF WISTERIA LODGE ARE CONFEDERATES IN SOME DESIGN + THE ATTEMPT WHATEVER IT MAY BE IS TO COME OFF WE WILL SAY BEFORE ONE O'CLOCK + BY SOME JUGGLING OF THE CLOCKS IT IS QUITE POSSIBLE THAT THEY MAY HAVE GOT SCOTT ECCLES TO BED EARLIER THAN HE THOUGHT BUT IN ANY CASE IT IS LIKELY THAT WHEN GARCIA WENT OUT OF HIS WAY TO TELL HIM THAT IT WAS ONE IT WAS REALLY NOT MORE THAN TWELVE + IF GARCIA COULD DO WHATEVER HE HAD TO DO AND BE BACK BY THE HOUR MENTIONED HE HAD EVIDENTLY A POWERFUL REPLY TO ANY ACCUSATION + HERE WAS THIS IRREPROACHABLE ENGLISHMAN READY TO SWEAR IN ANY COURT OF LAW THAT THE ACCUSED WAS IN HIS HOUSE ALL THE TIME + IT WAS AN INSURANCE AGAINST THE WORST + QUOTE YES YES I SEE THAT + BUT HOW ABOUT THE DISAPPEARANCE OF THE OTHERS + I HAVE NOT ALL MY FACTS YET BUT I DO NOT THINK THERE ARE ANY INSUPERABLE DIFFICULTIES + STILL IT IS AN ERROR TO ARGUE IN FRONT OF YOUR DATA + YOU FIND YOURSELF INSENSIBLY TWISTING THEM ROUND TO FIT YOUR THEORIES + AND THE MESSAGE + HOW DID IT RUN + OUR OWN COLOURS GREEN AND WHITE + SOUNDS LIKE RACING + GREEN OPEN WHITE SHUT. SEVEN EIGHTHS + THAT IS CLEARLY A SIGNAL + MAIN STAIR FIRST CORRIDOR SEVENTH RIGHT GREEN BAIZE + THIS IS AN ASSIGNATION + WE MAY FIND A JEALOUS HUSBAND AT THE BOTTOM OF IT ALL + IT WAS CLEARLY A DANGEROUS QUEST + SHE WOULD NOT HAVE SAID GODSPEED HAD IT NOT BEEN SO + D. THAT SHOULD BE A GUIDE QUOTE + THE MAN WAS A SPANIARD + I SUGGEST THAT D. STANDS FOR DOLORES A COMMON FEMALE NAME IN SPAIN + GOOD WATSON VERY GOOD BUT QUITE INADMISSIBLE + A SPANIARD WOULD WRITE TO A SPANIARD IN SPANISH + THE WRITER OF THIS NOTE IS CERTAINLY ENGLISH + WELL WE CAN ONLY POSSESS OUR SOULS IN PATIENCE UNTIL THIS EXCELLENT INSPECTOR COMES BACK FOR US + MEANWHILE WE CAN THANK OUR LUCKY FATE WHICH HAS RESCUED US FOR A FEW SHORT HOURS FROM THE INSUFFERABLE FATIGUES OF IDLENESS + AN ANSWER HAD ARRIVED TO HOLMES'S TELEGRAM BEFORE OUR SURREY OFFICER HAD RETURNED + HOLMES READ IT AND WAS ABOUT TO PLACE IT IN HIS NOTEBOOK WHEN HE CAUGHT A GLIMPSE OF MY EXPECTANT FACE + HE TOSSED IT ACROSS WITH A LAUGH + WE ARE MOVING IN EXALTED CIRCLES SAID HE + THE TELEGRAM WAS A LIST OF NAMES AND ADDRESSES LORD HARRINGBY THE DINGLE SIR GEORGE FFOLLIOTT OXSHOTT TOWERS MR. HYNES HYNES J. P. PURDEY PLACE MR. JAMES BAKER WILLIAMS FORTON OLD HALL MR. HENDERSON HIGH GABLE REVEREND JOSHUA STONE NETHER WALSLING + QUOTE THIS IS A VERY OBVIOUS WAY OF LIMITING OUR FIELD OF OPERATIONS QUOTE SAID HOLMES + NO DOUBT BAYNES WITH HIS METHODICAL MIND HAS ALREADY ADOPTED SOME SIMILAR PLAN + I DON'T QUITE UNDERSTAND + WELL MY DEAR FELLOW WE HAVE ALREADY ARRIVED AT THE CONCLUSION THAT THE MESSAGE RECEIVED BY GARCIA AT DINNER WAS AN APPOINTMENT OR AN ASSIGNATION + NOW IF THE OBVIOUS READING OF IT IS CORRECT AND IN ORDER TO KEEP THIS TRYST ONE HAS TO ASCEND A MAIN STAIR AND SEEK THE SEVENTH DOOR IN A CORRIDOR IT IS PERFECTLY CLEAR THAT THE HOUSE IS A VERY LARGE ONE + IT IS EQUALLY CERTAIN THAT THIS HOUSE CANNOT BE MORE THAN A MILE OR TWO FROM OXSHOTT SINCE GARCIA WAS WALKING IN THAT DIRECTION AND HOPED ACCORDING TO MY READING OF THE FACTS TO BE BACK IN WISTERIA LODGE IN TIME TO AVAIL HIMSELF OF AN ALIBI WHICH WOULD ONLY BE VALID UP TO ONE O'CLOCK + AS THE NUMBER OF LARGE HOUSES CLOSE TO OXSHOTT MUST BE LIMITED I ADOPTED THE OBVIOUS METHOD OF SENDING TO THE AGENTS MENTIONED BY SCOTT ECCLES AND OBTAINING A LIST OF THEM + HERE THEY ARE IN THIS TELEGRAM AND THE OTHER END OF OUR TANGLED SKEIN MUST LIE AMONG THEM + IT WAS NEARLY SIX O'CLOCK BEFORE WE FOUND OURSELVES IN THE PRETTY SURREY VILLAGE OF ESHER WITH INSPECTOR BAYNES AS OUR COMPANION + HOLMES AND I HAD TAKEN THINGS FOR THE NIGHT AND FOUND COMFORTABLE QUARTERS AT THE BULL + FINALLY WE SET OUT IN THE COMPANY OF THE DETECTIVE ON OUR VISIT TO WISTERIA LODGE LT WAS A COLD DARK MARCH EVENING WITH A SHARP WIND AND A FINE RAIN BEATING UPON OUR FACES A FIT SETTING FOR THE WILD COMMON OVER WHICH OUR ROAD PASSED AND THE TRAGIC GOAL TO WHICH IT LED US. TWO + THE TIGER OF SAN PEDRO + A COLD AND MELANCHOLY WALK OF A COUPLE OF MILES BROUGHT US TO A HIGH WOODEN GATE WHICH OPENED INTO A GLOOMY AVENUE OF CHESTNUTS + THE CURVED AND SHADOWED DRIVE LED US TO A LOW DARK HOUSE PITCH BLACK AGAINST A SLATE COLOURED SKY + FROM THE FRONT WINDOW UPON THE LEFT OF THE DOOR THERE PEEPED A GLIMMER OF A FEEBLE LIGHT + THERE'S A CONSTABLE IN POSSESSION SAID BAYNES + QUOTE I'LL KNOCK AT THE WINDOW QUOTE + HE STEPPED ACROSS THE GRASS PLOT AND TAPPED WITH HIS HAND ON THE PANE + THROUGH THE FOGGED GLASS I DIMLY SAW A MAN SPRING UP FROM A CHAIR BESIDE THE FIRE AND HEARD A SHARP CRY FROM WITHIN THE ROOM + AN INSTANT LATER A WHITE FACED HARDBREATHING POLICEMAN HAD OPENED THE DOOR THE CANDLE WAVERING IN HIS TREMBLING HAND + WHAT'S THE MATTER WALTERS ASKED BAYNES SHARPLY + THE MAN MOPPED HIS FOREHEAD WITH HIS HANDKERCHIEF AND GAVE A LONG SIGH OF RELIEF + I AM GLAD YOU HAVE COME SIR + IT HAS BEEN A LONG EVENING AND L. DON'T THINK MY NERVE IS AS GOOD AS IT WAS + YOUR NERVE WALTERS + I SHOULD NOT HAVE THOUGHT YOU HAD A NERVE IN YOUR BODY + QUOTE WELL SIR IT'S THIS LONELY SILENT HOUSE AND THE QUEER THING IN THE KITCHEN + THEN WHEN YOU TAPPED AT THE WINDOW I THOUGHT IT HAD COME AGAIN + THAT WHAT HAD COME AGAIN + THE DEVIL SIR FOR ALL I KNOW + IT WAS AT THE WINDOW + WHAT WAS AT THE WINDOW AND WHEN + QUOTE IT WAS JUST ABOUT TWO HOURS AGO + THE LIGHT WAS JUST FADING + I WAS SITTING READING IN THE CHAIR + I DON'T KNOW WHAT MADE ME LOOK UP BUT THERE WAS A FACE LOOKING IN AT ME THROUGH THE LOWER PANE + LORD SIR WHAT A FACE IT WAS + I'LL SEE IT IN MY DREAMS + TUT TUT WALTERS + THIS IS NOT TALK FOR A POLICE CONSTABLE + I KNOW SIR I KNOW BUT IT SHOOK ME SIR AND THERE'S NO USE TO DENY IT. IT WASN'T BLACK SIR NOR WAS IT WHITE NOR ANY COLOUR THAT I KNOW BUT A KIND OF QUEER SHADE LIKE CLAY WITH A SPLASH OF MILK IN IT + THEN THERE WAS THE SIZE OF IT IT WAS TWICE YOURS SIR + AND THE LOOK OF IT THE GREAT STARING GOGGLE EYES AND THE LINE OF WHITE TEETH LIKE A HUNGRY BEAST + I TELL YOU SIR I COULDN'T MOVE A FINGER NOR GET MY BREATH TILL IT WHISKED AWAY AND WAS GONE + OUT I RAN AND THROUGH THE SHRUBBERY BUT THANK GOD THERE WAS NO ONE THERE + QUOTE IF I DIDN'T KNOW YOU WERE A GOOD MAN WALTERS I SHOULD PUT A BLACK MARK AGAINST YOU FOR THIS + IF IT WERE THE DEVIL HIMSELF A CONSTABLE ON DUTY SHOULD NEVER THANK GOD THAT HE COULD NOT LAY HIS HANDS UPON HIM + I SUPPOSE THE WHOLE THING IS NOT A VISION AND A TOUCH OF NERVES + THAT AT LEAST IS VERY EASILY SETTLED SAID HOLMES LIGHTING HIS LITTLE POCKET LANTERN + YES HE REPORTED AFTER A SHORT EXAMINATION OF THE GRASS BED A NUMBER TWELVE SHOE I SHOULD SAY + IF HE WAS ALL ON THE SAME SCALE AS HIS FOOT HE MUST CERTAINLY HAVE BEEN A GIANT + WHAT BECAME OF HIM + QUOTE HE SEEMS TO HAVE BROKEN THROUGH THE SHRUBBERY AND MADE FOR THE ROAD QUOTE + WELL SAID THE INSPECTOR WITH A GRAVE AND THOUGHTFUL FACE WHOEVER HE MAY HAVE BEEN AND WHATEVER HE MAY HAVE WANTED HE'S GONE FOR THE PRESENT AND WE HAVE MORE IMMEDIATE THINGS TO ATTEND TO + NOW MR. HOLMES WITH YOUR PERMISSION I WILL SHOW YOU ROUND THE HOUSE + THE VARIOUS BEDROOMS AND SITTING ROOMS HAD YIELDED NOTHING TO A CAREFUL SEARCH + APPARENTLY THE TENANTS HAD BROUGHT LITTLE OR NOTHING WITH THEM AND ALL THE FURNITURE DOWN TO THE SMALLEST DETAILS HAD BEEN TAKEN OVER WITH THE HOUSE + A GOOD DEAL OF CLOTHING WITH THE STAMP OF MARX AND COMPANY HIGH HOLBORN HAD BEEN LEFT BEHIND + TELEGRAPHIC INQUIRIES HAD BEEN ALREADY MADE WHICH SHOWED THAT MARX KNEW NOTHING OF HIS CUSTOMER SAVE THAT HE WAS A GOOD PAYER + ODDS AND ENDS SOME PIPES A FEW NOVELS TWO OF THEM IN SPANISH AN OLD FASHIONED PINFIRE REVOLVER AND A GUITAR WERE AMONG THE PERSONAL PROPERTY + NOTHING IN ALL THIS SAID BAYNES STALKING CANDLE IN HAND FROM ROOM TO ROOM + BUT NOW MR. HOLMES I INVITE YOUR ATTENTION TO THE KITCHEN + IT WAS A GLOOMY HIGH CEILINGED ROOM AT THE BACK OF THE HOUSE WITH A STRAW LITTER IN ONE CORNER WHICH SERVED APPARENTLY AS A BED FOR THE COOK + THE TABLE WAS PILED WITH HALF EATEN DISHES AND DIRTY PLATES THE DEBRIS OF LAST NIGHT'S DINNER + LOOK AT THIS SAID BAYNES + QUOTE WHAT DO YOU MAKE OF IT QUOTE + HE HELD UP HIS CANDLE BEFORE AN EXTRAORDINARY OBJECT WHICH STOOD AT THE BACK OF THE DRESSER + IT WAS SO WRINKLED AND SHRUNKEN AND WITHERED THAT IT WAS DIFFICULT TO SAY WHAT IT MIGHT HAVE BEEN + ONE COULD BUT SAY THAT IT WAS BLACK AND LEATHERY AND THAT IT BORE SOME RESEMBLANCE TO A DWARFISH HUMAN FIGURE + AT FIRST AS I EXAMINED IT I THOUGHT THAT IT WAS A MUMMIFIED NEGRO BABY AND THEN IT SEEMED A VERY TWISTED AND ANCIENT MONKEY + FINALLY I WAS LEFT IN DOUBT AS TO WHETHER IT WAS ANIMAL OR HUMAN + A DOUBLE BAND OF WHITE SHELLS WAS STRUNG ROUND THE CENTRE OF IT + VERY INTERESTING VERY INTERESTING INDEED SAID HOLMES PEERING AT THIS SINISTER RELIC + ANYTHING MORE + IN SILENCE BAYNES LED THE WAY TO THE SINK AND HELD FORWARD HIS CANDLE + THE LIMBS AND BODY OF SOME LARGE WHITE BIRD TORN SAVAGELY TO PIECES WITH THE FEATHERS STILL ON WERE LITTERED ALL OVER IT + HOLMES POINTED TO THE WATTLES ON THE SEVERED HEAD + A WHITE COCK SAID HE + MOST INTERESTING + IT IS REALLY A VERY CURIOUS CASE + BUT MR. BAYNES HAD KEPT HIS MOST SINISTER EXHIBIT TO THE LAST + FROM UNDER THE SINK HE DREW A ZINC PAIL WHICH CONTAINED A QUANTITY OF BLOOD + THEN FROM THE TABLE HE TOOK A PLATTER HEAPED WITH SMALL PIECES OF CHARRED BONE + QUOTE SOMETHING HAS BEEN KILLED AND SOMETHING HAS BEEN BURNED + WE RAKED ALL THESE OUT OF THE FIRE + WE HAD A DOCTOR IN THIS MORNING + HE SAYS THAT THEY ARE NOT HUMAN + HOLMES SMILED AND RUBBED HIS HANDS + I MUST CONGRATULATE YOU INSPECTOR ON HANDLING SO DISTINCTIVE AND INSTRUCTIVE A CASE + YOUR POWERS IF I MAY SAY SO WITHOUT OFFENCE SEEM SUPERIOR TO YOUR OPPORTUNITIES + INSPECTOR BAYNES'S SMALL EYES TWINKLED WITH PLEASURE + YOU'RE RIGHT MR. HOLMES + WE STAGNATE IN THE PROVINCES + A CASE OF THIS SORT GIVES A MAN A CHANCE AND I HOPE THAT I SHALL TAKE IT + WHAT DO YOU MAKE OF THESE BONES + QUOTE A LAMB I SHOULD SAY OR A KID QUOTE + AND THE WHITE COCK + CURIOUS MR. BAYNES VERY CURIOUS + I SHOULD SAY ALMOST UNIQUE + YES SIR THERE MUST HAVE BEEN SOME VERY STRANGE PEOPLE WITH SOME VERY STRANGE WAYS IN THIS HOUSE + ONE OF THEM IS DEAD + DID HIS COMPANIONS FOLLOW HIM AND KILL HIM + IF THEY DID WE SHOULD HAVE THEM FOR EVERY PORT IS WATCHED + BUT MY OWN VIEWS ARE DIFFERENT + YES SIR MY OWN VIEWS ARE VERY DIFFERENT + QUOTE YOU HAVE A THEORY THEN QUOTE + AND I'LL WORK IT MYSELF MR. HOLMES + IT'S ONLY DUE TO MY OWN CREDIT TO DO SO + YOUR NAME IS MADE BUT I HAVE STILL TO MAKE MINE + I SHOULD BE GLAD TO BE ABLE TO SAY AFTERWARDS THAT I HAD SOLVED IT WITHOUT YOUR HELP + HOLMES LAUGHED GOOD HUMOUREDLY + WELL WELL INSPECTOR SAID HE + DO YOU FOLLOW YOUR PATH AND I WILL FOLLOW MINE + MY RESULTS ARE ALWAYS VERY MUCH AT YOUR SERVICE IF YOU CARE TO APPLY TO ME FOR THEM + I THINK THAT I HAVE SEEN ALL THAT I WISH IN THIS HOUSE AND THAT MY TIME MAY BE MORE PROFITABLY EMPLOYED ELSEWHERE + AU REVOIR AND GOOD LUCK + I COULD TELL BY NUMEROUS SUBTLE SIGNS WHICH MIGHT HAVE BEEN LOST UPON ANYONE BUT MYSELF THAT HOLMES WAS ON A HOT SCENT + AS IMPASSIVE AS EVER TO THE CASUAL OBSERVER THERE WERE NONE THE LESS A SUBDUED EAGERNESS AND SUGGESTION OF TENSION IN HIS BRIGHTENED EYES AND BRISKER MANNER WHICH ASSURED ME THAT THE GAME WAS AFOOT + AFTER HIS HABIT HE SAID NOTHING AND AFTER MINE I ASKED NO QUESTIONS + SUFFICIENT FOR ME TO SHARE THE SPORT AND LEND MY HUMBLE HELP TO THE CAPTURE WITHOUT DISTRACTING THAT INTENT BRAIN WITH NEEDLESS INTERRUPTION + ALL WOULD COME ROUND TO ME IN DUE TIME + I WAITED THEREFORE BUT TO MY EVER DEEPENING DISAPPOINTMENT I WAITED IN VAIN + DAY SUCCEEDED DAY AND MY FRIEND TOOK NO STEP FORWARD + ONE MORNING HE SPENT IN TOWN AND I LEARNED FROM A CASUAL REFERENCE THAT HE HAD VISITED THE BRITISH MUSEUM + SAVE FOR THIS ONE EXCURSION HE SPENT HIS DAYS IN LONG AND OFTEN SOLITARY WALKS OR IN CHATTING WITH A NUMBER OF VILLAGE GOSSIPS WHOSE ACQUAINTANCE HE HAD CULTIVATED + QUOTE I'M SURE WATSON A WEEK IN THE COUNTRY WILL BE INVALUABLE TO YOU QUOTE HE REMARKED + IT IS VERY PLEASANT TO SEE THE FIRST GREEN SHOOTS UPON THE HEDGES AND THE CATKINS ON THE HAZELS ONCE AGAIN + WITH A SPUD A TIN BOX AND AN ELEMENTARY BOOK ON BOTANY THERE ARE INSTRUCTIVE DAYS TO BE SPENT + HE PROWLED ABOUT WITH THIS EQUIPMENT HIMSELF BUT IT WAS A POOR SHOW OF PLANTS WHICH HE WOULD BRING BACK OF AN EVENING + OCCASIONALLY IN OUR RAMBLES WE CAME ACROSS INSPECTOR BAYNES + HIS FAT RED FACE WREATHED ITSELF IN SMILES AND HIS SMALL EYES GLITTERED AS HE GREETED MY COMPANION + HE SAID LITTLE ABOUT THE CASE BUT FROM THAT LITTLE WE GATHERED THAT HE ALSO WAS NOT DISSATISFIED AT THE COURSE OF EVENTS + I MUST ADMIT HOWEVER THAT I WAS SOMEWHAT SURPRISED WHEN SOME FIVE DAYS AFTER THE CRIME I OPENED MY MORNING PAPER TO FIND IN LARGE LETTERS THE OXSHOTT MYSTERY A SOLUTION ARREST OF SUPPOSED ASSASSIN + HOLMES SPRANG IN HIS CHAIR AS IF HE HAD BEEN STUNG WHEN I READ THE HEADLINES + BY JOVE HE CRIED + YOU DON'T MEAN THAT BAYNES HAS GOT HIM + APPARENTLY SAID I AS I READ THE FOLLOWING REPORT GREAT EXCITEMENT WAS CAUSED IN ESHER AND THE NEIGH BOURING DISTRICT WHEN IT WAS LEARNED LATE LAST NIGHT THAT AN ARREST HAD BEEN EFFECTED IN CONNECTION WITH THE OXSHOTT MURDER + IT WILL BE REMEMBERED THAT MR. GARCIA OF WISTE RIA LODGE WAS FOUND DEAD ON OXSHOTT COMMON HIS BODY SHOWING SIGNS OF EXTREME VIOLENCE AND THAT ON THE SAME NIGHT HIS SERVANT AND HIS COOK FLED WHICH APPEARED TO SHOW THEIR PARTICIPATION IN THE CRIME + IT WAS SUGGESTED BUT NEVER PROVED THAT THE DECEASED GENTLEMAN MAY HAVE HAD VALU ABLES IN THE HOUSE AND THAT THEIR ABSTRACTION WAS THE MOTIVE OF THE CRIME + EVERY EFFORT WAS MADE BY INSPECTOR BAYNES WHO HAS THE CASE IN HAND TO ASCERTAIN THE HIDING PLACE OF THE FUGITIVES AND HE HAD GOOD REASON TO BELIEVE THAT THEY HAD NOT GONE FAR BUT WERE LURKING IN SOME RETREAT WHICH HAD BEEN ALREADY PREPARED + IT WAS CERTAIN FROM THE FIRST HOW EVER THAT THEY WOULD EVENTUALLY BE DETECTED AS THE COOK FROM THE EVIDENCE OF ONE OR TWO TRADESPEOPLE WHO HAVE CAUGHT A GLIMPSE OF HIM THROUGH THE WINDOW WAS A MAN OF MOST REMARKABLE APPEARANCE BEING A HUGE AND HIDEOUS MULATTO WITH YELLOWISH FEATURES OF A PRONOUNCED NEGROID TYPE + THIS MAN HAS BEEN SEEN SINCE THE CRIME FOR HE WAS DETECTED AND PURSUED BY CONSTABLE WALTERS ON THE SAME EVENING WHEN HE HAD THE AUDACITY TO REVISIT WISTERIA LODGE + INSPECTOR BAYNES CONSIDERING THAT SUCH A VISIT MUST HAVE SOME PURPOSE IN VIEW AND WAS LIKELY THEREFORE TO BE REPEATED ABANDONED THE HOUSE BUT LEFT AN AMBUSCADE IN THE SHRUBBERY + THE MAN WALKED INTO THE TRAP AND WAS CAPTURED LAST NIGHT AFTER A STRUGGLE IN WHICH CONSTABLE DOWNING WAS BADLY BITTEN BY THE SAVAGE + WE UNDERSTAND THAT WHEN THE PRISONER IS BROUGHT BEFORE THE MAGISTRATES A REMAND WILL BE APPLIED FOR BY THE POLICE AND THAT GREAT DEVELOPMENTS ARE HOPED FROM HIS CAPTURE QUOTE + REALLY WE MUST SEE BAYNES AT ONCE CRIED HOLMES PICKING UP HIS HAT + WE WILL JUST CATCH HIM BEFORE HE STARTS + WE HURRIED DOWN THE VILLAGE STREET AND FOUND AS WE HAD EXPECTED THAT THE INSPECTOR WAS JUST LEAVING HIS LODGINGS + YOU'VE SEEN THE PAPER MR. HOLMES HE ASKED HOLDING ONE OUT TO US + YES BAYNES I'VE SEEN IT + PRAY DON'T THINK IT A LIBERTY IF I GIVE YOU A WORD OF FRIENDLY WARNING + QUOTE OF WARNING MR. HOLMES QUOTE + I HAVE LOOKED INTO THIS CASE WITH SOME CARE AND I AM NOT CONVINCED THAT YOU ARE ON THE RIGHT LINES + I DON'T WANT YOU TO COMMIT YOURSELF TOO FAR UNLESS YOU ARE SURE + YOU'RE VERY KIND MR. HOLMES + I ASSURE YOU I SPEAK FOR YOUR GOOD + IT SEEMED TO ME THAT SOMETHING LIKE A WINK QUIVERED FOR AN INSTANT OVER ONE OF MR. BAYNES'S TINY EYES + WE AGREED TO WORK ON OUR OWN LINES MR. HOLMES + THAT'S WHAT I AM DOING QUOTE + OH VERY GOOD SAID HOLMES + DON'T BLAME ME + NO SIR I BELIEVE YOU MEAN WELL BY ME + BUT WE ALL HAVE OUR OWN SYSTEMS MR. HOLMES + YOU HAVE YOURS AND MAYBE I HAVE MINE + LET US SAY NO MORE ABOUT IT + QUOTE YOU'RE WELCOME ALWAYS TO MY NEWS + THIS FELLOW IS A PERFECT SAVAGE AS STRONG AS A CART HORSE AND AS FIERCE AS THE DEVIL + HE CHEWED DOWNING'S THUMB NEARLY OFF BEFORE THEY COULD MASTER HIM + HE HARDLY SPEAKS A WORD OF ENGLISH AND WE CAN GET NOTHING OUT OF HIM BUT GRUNTS + AND YOU THINK YOU HAVE EVIDENCE THAT HE MURDERED HIS LATE MASTER + I DIDN'T SAY SO MR. HOLMES I DIDN'T SAY SO + WE ALL HAVE OUR LITTLE WAYS + YOU TRY YOURS AND I WILL TRY MINE + THAT'S THE AGREEMENT + HOLMES SHRUGGED HIS SHOULDERS AS WE WALKED AWAY TOGETHER + I CAN'T MAKE THE MAN OUT + HE SEEMS TO BE RIDING FOR A FALL + WELL AS HE SAYS WE MUST EACH TRY OUR OWN WAY AND SEE WHAT COMES OF IT + BUT THERE'S SOMETHING IN INSPECTOR BAYNES WHICH I CAN'T QUITE UNDERSTAND QUOTE + JUST SIT DOWN IN THAT CHAIR WATSON SAID SHERLOCK HOLMES WHEN WE HAD RETURNED TO OUR APARTMENT AT THE BULL + I WANT TO PUT YOU IN TOUCH WITH THE SITUATION AS I MAY NEED YOUR HELP TO NIGHT + LET ME SHOW YOU THE EVOLUTION OF THIS CASE SO FAR AS I HAVE BEEN ABLE TO FOLLOW IT + SIMPLE AS IT HAS BEEN IN ITS LEADING FEATURES IT HAS NONE THE LESS PRESENTED SURPRISING DIFFICULTIES IN THE WAY OF AN ARREST + THERE ARE GAPS IN THAT DIRECTION WHICH WE HAVE STILL TO FILL + WE WILL GO BACK TO THE NOTE WHICH WAS HANDED IN TO GARCIA UPON THE EVENING OF HIS DEATH + WE MAY PUT ASIDE THIS IDEA OF BAYNES'S THAT GARCIA'S SERVANTS WERE CONCERNED IN THE MATTER + THE PROOF OF THIS LIES IN THE FACT THAT IT WAS HE WHO HAD ARRANGED FOR THE PRESENCE OF SCOTT ECCLES WHICH COULD ONLY HAVE BEEN DONE FOR THE PURPOSE OF AN ALIBI + IT WAS GARCIA THEN WHO HAD AN ENTERPRISE AND APPARENTLY A CRIMINAL ENTERPRISE IN HAND THAT NIGHT IN THE COURSE OF WHICH HE MET HIS DEATH + I SAY CRIMINAL BECAUSE ONLY A MAN WITH A CRIMINAL ENTERPRISE DESIRES TO ESTABLISH AN ALIBI + WHO THEN IS MOST LIKELY TO HAVE TAKEN HIS LIFE + SURELY THE PERSON AGAINST WHOM THE CRIMINAL ENTERPRISE WAS DIRECTED + SO FAR IT SEEMS TO ME THAT WE ARE ON SAFE GROUND + WE CAN NOW SEE A REASON FOR THE DISAPPEARANCE OF GARCIA'S HOUSEHOLD + THEY WERE ALL CONFEDERATES IN THE SAME UNKNOWN CRIME + IF IT CAME OFF WHEN GARCIA RETURNED ANY POSSIBLE SUSPICION WOULD BE WARDED OFF BY THE ENGLISHMAN'S EVIDENCE AND ALL WOULD BE WELL + BUT THE ATTEMPT WAS A DANGEROUS ONE AND IF GARCIA DID NOT RETURN BY A CERTAIN HOUR IT WAS PROBABLE THAT HIS OWN LIFE HAD BEEN SACRIFICED + IT HAD BEEN ARRANGED THEREFORE THAT IN SUCH A CASE HIS TWO SUBORDINATES WERE TO MAKE FOR SOME PREARRANGED SPOT WHERE THEY COULD ESCAPE INVESTIGATION AND BE IN A POSITION AFTERWARDS TO RENEW THEIR ATTEMPT + THAT WOULD FULLY EXPLAIN THE FACTS WOULD IT NOT + THE WHOLE INEXPLICABLE TANGLE SEEMED TO STRAIGHTEN OUT BEFORE ME + I WONDERED AS I ALWAYS DID HOW IT HAD NOT BEEN OBVIOUS TO ME BEFORE + QUOTE BUT WHY SHOULD ONE SERVANT RETURN QUOTE + WE CAN IMAGINE THAT IN THE CONFUSION OF FLIGHT SOMETHING PRECIOUS SOMETHING WHICH HE COULD NOT BEAR TO PART WITH HAD BEEN LEFT BEHIND + THAT WOULD EXPLAIN HIS PERSISTENCE WOULD IT NOT + WELL WHAT IS THE NEXT STEP + THE NEXT STEP IS THE NOTE RECEIVED BY GARCIA AT THE DINNER + IT INDICATES A CONFEDERATE AT THE OTHER END + NOW WHERE WAS THE OTHER END + I HAVE ALREADY SHOWN YOU THAT IT COULD ONLY LIE IN SOME LARGE HOUSE AND THAT THE NUMBER OF LARGE HOUSES IS LIMITED + MY FIRST DAYS IN THIS VILLAGE WERE DEVOTED TO A SERIES OF WALKS IN WHICH IN THE INTERVALS OF MY BOTANICAL RESEARCHES I MADE A RECONNAISSANCE OF ALL THE LARGE HOUSES AND AN EXAMINATION OF THE FAMILY HISTORY OF THE OCCUPANTS + ONE HOUSE AND ONLY ONE RIVETED MY ATTENTION + IT IS THE FAMOUS OLD JACOBEAN GRANGE OF HIGH GABLE ONE MILE ON THE FARTHER SIDE OF OXSHOTT AND LESS THAN HALF A MILE FROM THE SCENE OF THE TRAGEDY + THE OTHER MANSIONS BELONGED TO PROSAIC AND RESPECTABLE PEOPLE WHO LIVE FAR ALOOF FROM ROMANCE + BUT MR. HENDERSON OF HIGH GABLE WAS BY ALL ACCOUNTS A CURIOUS MAN TO WHOM CURIOUS ADVENTURES MIGHT BEFALL + I CONCENTRATED MY ATTENTION THEREFORE UPON HIM AND HIS HOUSEHOLD + A SINGULAR SET OF PEOPLE WATSON THE MAN HIMSELF THE MOST SINGULAR OF THEM ALL + I MANAGED TO SEE HIM ON A PLAUSIBLE PRETEXT BUT I SEEMED TO READ IN HIS DARK DEEP SET BROODING EYES THAT HE WAS PERFECTLY AWARE OF MY TRUE BUSINESS + HE IS A MAN OF FIFTY STRONG ACTIVE WITH IRON GRAY HAIR GREAT BUNCHED BLACK EYEBROWS THE STEP OF A DEER AND THE AIR OF AN EMPEROR A FIERCE MASTERFUL MAN WITH A RED HOT SPIRIT BEHIND HIS PARCHMENT FACE + HE IS EITHER A FOREIGNER OR HAS LIVED LONG IN THE TROPICS FOR HE IS YELLOW AND SAPLESS BUT TOUGH AS WHIPCORD + HIS FRIEND AND SECRETARY MR. LUCAS IS UNDOUBTEDLY A FOREIGNER CHOCOLATE BROWN WILY SUAVE AND CAT LIKE WITH A POISONOUS GENTLENESS OF SPEECH + YOU SEE WATSON WE HAVE COME ALREADY UPON TWO SETS OF FOREIGNERS ONE AT WISTERIA LODGE AND ONE AT HIGH GABLE SO OUR GAPS ARE BEGINNING TO CLOSE + QUOTE THESE TWO MEN CLOSE AND CONFIDENTIAL FRIENDS ARE THE CENTRE OF THE HOUSEHOLD BUT THERE IS ONE OTHER PERSON WHO FOR OUR IMMEDIATE PURPOSE MAY BE EVEN MORE IMPORTANT + HENDERSON HAS TWO CHILDREN GIRLS OF ELEVEN AND THIRTEEN + THEIR GOVERNESS IS A MISS BURNET AN ENGLISHWOMAN OF FORTY OR THEREABOUTS + THERE IS ALSO ONE CONFIDENTIAL MANSERVANT + THIS LITTLE GROUP FORMS THE REAL FAMILY FOR THEY TRAVEL ABOUT TOGETHER AND HENDERSON IS A GREAT TRAVELLER ALWAYS ON THE MOVE + IT IS ONLY WITHIN THE LAST FEW WEEKS THAT HE HAS RETURNED AFTER A YEAR'S ABSENCE TO HIGH GABLE + I MAY ADD THAT HE IS ENORMOUSLY RICH AND WHATEVER HIS WHIMS MAY BE HE CAN VERY EASILY SATISFY THEM + FOR THE REST HIS HOUSE IS FULL OF BUTLERS FOOTMEN MAIDSERVANTS AND THE USUAL OVERFED UNDERWORKED STAFF OF A LARGE ENGLISH COUNTRY HOUSE + SO MUCH I LEARNED PARTLY FROM VILLAGE GOSSIP AND PARTLY FROM MY OWN OBSERVATION + THERE ARE NO BETTER INSTRUMENTS THAN DISCHARGED SERVANTS WITH A GRIEVANCE AND I WAS LUCKY ENOUGH TO FIND ONE + I CALL IT LUCK BUT IT WOULD NOT HAVE COME MY WAY HAD I NOT BEEN LOOKING OUT FOR IT + AS BAYNES REMARKS WE ALL HAVE OUR SYSTEMS + IT WAS MY SYSTEM WHICH ENABLED ME TO FIND JOHN WARNER LATE GARDENER OF HIGH GABLE SACKED IN A MOMENT OF TEMPER BY HIS IMPERIOUS EMPLOYER + HE IN TURN HAD FRIENDS AMONG THE INDOOR SERVANTS WHO UNITE IN THEIR FEAR AND DISLIKE OF THEIR MASTER + SO I HAD MY KEY TO THE SECRETS OF THE ESTABLISHMENT + CURIOUS PEOPLE WATSON + I DON'T PRETEND TO UNDERSTAND IT ALL YET BUT VERY CURIOUS PEOPLE ANYWAY + IT'S A DOUBLE WINGED HOUSE AND THE SERVANTS LIVE ON ONE SIDE THE FAMILY ON THE OTHER + THERE'S NO LINK BETWEEN THE TWO SAVE FOR HENDERSON'S OWN SERVANT WHO SERVES THE FAMILY'S MEALS + EVERYTHING IS CARRIED TO A CERTAIN DOOR WHICH FORMS THE ONE CONNECTION + GOVERNESS AND CHILDREN HARDLY GO OUT AT ALL EXCEPT INTO THE GARDEN + HENDERSON NEVER BY ANY CHANCE WALKS ALONE + HIS DARK SECRETARY IS LIKE HIS SHADOW + THE GOSSIP AMONG THE SERVANTS IS THAT THEIR MASTER IS TERRIBLY AFRAID OF SOMETHING + SOLD HIS SOUL TO THE DEVIL IN EXCHANGE FOR MONEY SAYS WARNER AND EXPECTS HIS CREDITOR TO COME UP AND CLAIM HIS OWN + WHERE THEY CAME FROM OR WHO THEY ARE NOBODY HAS AN IDEA + THEY ARE VERY VIOLENT + TWICE HENDERSON HAS LASHED AT FOLK WITH HIS DOG WHIP AND ONLY HIS LONG PURSE AND HEAVY COMPENSATION HAVE KEPT HIM OUT OF THE COURTS + WELL NOW WATSON LET US JUDGE THE SITUATION BY THIS NEW INFORMATION + WE MAY TAKE IT THAT THE LETTER CAME OUT OF THIS STRANGE HOUSEHOLD AND WAS AN INVITATION TO GARCIA TO CARRY OUT SOME ATTEMPT WHICH HAD ALREADY BEEN PLANNED + WHO WROTE THE NOTE + IT WAS SOMEONE WITHIN THE CITADEL AND IT WAS A WOMAN + WHO THEN BUT MISS BURNET THE GOVERNESS + ALL OUR REASONING SEEMS TO POINT THAT WAY + AT ANY RATE WE MAY TAKE IT AS A HYPOTHESIS AND SEE WHAT CONSEQUENCES IT WOULD ENTAIL + I MAY ADD THAT MISS BURNET'S AGE AND CHARACTER MAKE IT CERTAIN THAT MY FIRST IDEA THAT THERE MIGHT BE A LOVE INTEREST IN OUR STORY IS OUT OF THE QUESTION + IF SHE WROTE THE NOTE SHE WAS PRESUMABLY THE FRIEND AND CONFEDERATE OF GARCIA + WHAT THEN MIGHT SHE BE EXPECTED TO DO IF SHE HEARD OF HIS DEATH + IF HE MET IT IN SOME NEFARIOUS ENTERPRISE HER LIPS MIGHT BE SEALED + STILL IN HER HEART SHE MUST RETAIN BITTERNESS AND HATRED AGAINST THOSE WHO HAD KILLED HIM AND WOULD PRESUMABLY HELP SO FAR AS SHE COULD TO HAVE REVENGE UPON THEM + COULD WE SEE HER THEN AND TRY TO USE HER + THAT WAS MY FIRST THOUGHT + BUT NOW WE COME TO A SINISTER FACT + MISS BURNET HAS NOT BEEN SEEN BY ANY HUMAN EYE SINCE THE NIGHT OF THE MURDER + FROM THAT EVENING SHE HAS UTTERLY VANISHED + IS SHE ALIVE + HAS SHE PERHAPS MET HER END ON THE SAME NIGHT AS THE FRIEND WHOM SHE HAD SUMMONED + OR IS SHE MERELY A PRISONER + THERE IS THE POINT WHICH WE STILL HAVE TO DECIDE + YOU WILL APPRECIATE THE DIFFICULTY OF THE SITUATION WATSON + THERE IS NOTHING UPON WHICH WE CAN APPLY FOR A WARRANT + OUR WHOLE SCHEME MIGHT SEEM FANTASTIC IF LAID BEFORE A MAGISTRATE + THE WOMAN'S DISAPPEARANCE COUNTS FOR NOTHING SINCE IN THAT EXTRAORDINARY HOUSEHOLD ANY MEMBER OF IT MIGHT BE INVISIBLE FOR A WEEK + AND YET SHE MAY AT THE PRESENT MOMENT BE IN DANGER OF HER LIFE + ALL I CAN DO IS TO WATCH THE HOUSE AND LEAVE MY AGENT WARNER ON GUARD AT THE GATES + WE CAN'T LET SUCH A SITUATION CONTINUE + IF THE LAW CAN DO NOTHING WE MUST TAKE THE RISK OURSELVES QUOTE + WHAT DO YOU SUGGEST + I KNOW WHICH IS HER ROOM + IT IS ACCESSIBLE FROM THE TOP OF AN OUTHOUSE + MY SUGGESTION IS THAT YOU AND I GO TO NIGHT AND SEE IF WE CAN STRIKE AT THE VERY HEART OF THE MYSTERY + IT WAS NOT I MUST CONFESS A VERY ALLURING PROSPECT + THE OLD HOUSE WITH ITS ATMOSPHERE OF MURDER THE SINGULAR AND FORMIDABLE INHABITANTS THE UNKNOWN DANGERS OF THE APPROACH AND THE FACT THAT WE WERE PUTTING OURSELVES LEGALLY IN A FALSE POSITION ALL COMBINED TO DAMP MY ARDOUR + BUT THERE WAS SOMETHING IN THE ICE COLD REASONING OF HOLMES WHICH MADE IT IMPOSSIBLE TO SHRINK FROM ANY ADVENTURE WHICH HE MIGHT RECOMMEND + ONE KNEW THAT THUS AND ONLY THUS COULD A SOLUTION BE FOUND + I CLASPED HIS HAND IN SILENCE AND THE DIE WAS CAST + BUT IT WAS NOT DESTINED THAT OUR INVESTIGATION SHOULD HAVE SO ADVENTUROUS AN ENDING + IT WAS ABOUT FIVE O'CLOCK AND THE SHADOWS OF THE MARCH EVENING WERE BEGINNING TO FALL WHEN AN EXCITED RUSTIC RUSHED INTO OUR ROOM + THEY'VE GONE MR. HOLMES + THEY WENT BY THE LAST TRAIN + THE LADY BROKE AWAY AND I'VE GOT HER IN A CAB DOWNSTAIRS + QUOTE EXCELLENT WARNER QUOTE CRIED HOLMES SPRINGING TO HIS FEET + WATSON THE GAPS ARE CLOSING RAPIDLY + IN THE CAB WAS A WOMAN HALF COLLAPSED FROM NERVOUS EXHAUSTION + SHE BORE UPON HER AQUILINE AND EMACIATED FACE THE TRACES OF SOME RECENT TRAGEDY + HER HEAD HUNG LISTLESSLY UPON HER BREAST BUT AS SHE RAISED IT AND TURNED HER DULL EYES UPON US I SAW THAT HER PUPILS WERE DARK DOTS IN THE CENTRE OF THE BROAD GRAY IRIS + SHE WAS DRUGGED WITH OPIUM + I WATCHED AT THE GATE SAME AS YOU ADVISED MR. HOLMES SAID OUR EMISSARY THE DISCHARGED GARDENER + WHEN THE CARRIAGE CAME OUT I FOLLOWED IT TO THE STATION + SHE WAS LIKE ONE WALKING IN HER SLEEP BUT WHEN THEY TRIED TO GET HER INTO THE TRAIN SHE CAME TO LIFE AND STRUGGLED + THEY PUSHED HER INTO THE CARRIAGE + SHE FOUGHT HER WAY OUT AGAIN + I TOOK HER PART GOT HER INTO A CAB AND HERE WE ARE + I SHAN'T FORGET THE FACE AT THE CARRIAGE WINDOW AS I LED HER AWAY + I'D HAVE A SHORT LIFE IF HE HAD HIS WAY THE BLACK EYED SCOWLING YELLOW DEVIL + WE CARRIED HER UPSTAIRS LAID HER ON THE SOFA AND A COUPLE OF CUPS OF THE STRONGEST COFFEE SOON CLEARED HER BRAIN FROM THE MISTS OF THE DRUG + BAYNES HAD BEEN SUMMONED BY HOLMES AND THE SITUATION RAPIDLY EXPLAINED TO HIM + WHY SIR YOU'VE GOT ME THE VERY EVIDENCE I WANT SAID THE INSPECTOR WARMLY SHAKING MY FRIEND BY THE HAND + QUOTE I WAS ON THE SAME SCENT AS YOU FROM THE FIRST QUOTE + WHAT + YOU WERE AFTER HENDERSON + WHY MR. HOLMES WHEN YOU WERE CRAWLING IN THE SHRUBBERY AT HIGH GABLE I WAS UP ONE OF THE TREES IN THE PLANTATION AND SAW YOU DOWN BELOW + IT WAS JUST WHO WOULD GET HIS EVIDENCE FIRST + THEN WHY DID YOU ARREST THE MULATTO + BAYNES CHUCKLED + QUOTE I WAS SURE HENDERSON AS HE CALLS HIMSELF FELT THAT HE WAS SUSPECTED AND THAT HE WOULD LIE LOW AND MAKE NO MOVE SO LONG AS HE THOUGHT HE WAS IN ANY DANGER + I ARRESTED THE WRONG MAN TO MAKE HIM BELIEVE THAT OUR EYES WERE OFF HIM + I KNEW HE WOULD BE LIKELY TO CLEAR OFF THEN AND GIVE US A CHANCE OF GETTING AT MISS BURNET + HOLMES LAID HIS HAND UPON THE INSPECTOR'S SHOULDER + YOU WILL RISE HIGH IN YOUR PROFESSION + YOU HAVE INSTINCT AND INTUITION SAID HE + BAYNES FLUSHED WITH PLEASURE + I'VE HAD A PLAIN CLOTHES MAN WAITING AT THE STATION ALL THE WEEK + WHEREVER THE HIGH GABLE FOLK GO HE WILL KEEP THEM IN SIGHT + BUT HE MUST HAVE BEEN HARD PUT TO IT WHEN MISS BURNET BROKE AWAY + HOWEVER YOUR MAN PICKED HER UP AND IT ALL ENDS WELL + WE CAN'T ARREST WITHOUT HER EVIDENCE THAT IS CLEAR SO THE SOONER WE GET A STATEMENT THE BETTER + QUOTE EVERY MINUTE SHE GETS STRONGER QUOTE SAID HOLMES GLANCING AT THE GOVERNESS + BUT TELL ME BAYNES WHO IS THIS MAN HENDERSON + HENDERSON THE INSPECTOR ANSWERED IS DON MURILLO ONCE CALLED THE TIGER OF SAN PEDRO + THE TIGER OF SAN PEDRO + THE WHOLE HISTORY OF THE MAN CAME BACK TO ME IN A FLASH + HE HAD MADE HIS NAME AS THE MOST LEWD AND BLOODTHIRSTY TYRANT THAT HAD EVER GOVERNED ANY COUNTRY WITH A PRETENCE TO CIVILIZATION + STRONG FEARLESS AND ENERGETIC HE HAD SUFFICIENT VIRTUE TO ENABLE HIM TO IMPOSE HIS ODIOUS VICES UPON A COWERING PEOPLE FOR TEN OR TWELVE YEARS + HIS NAME WAS A TERROR THROUGH ALL CENTRAL AMERICA + AT THE END OF THAT TIME THERE WAS A UNIVERSAL RISING AGAINST HIM + BUT HE WAS AS CUNNING AS HE WAS CRUEL AND AT THE FIRST WHISPER OF COMING TROUBLE HE HAD SECRETLY CONVEYED HIS TREASURES ABOARD A SHIP WHICH WAS MANNED BY DEVOTED ADHERENTS + IT WAS AN EMPTY PALACE WHICH WAS STORMED BY THE INSURGENTS NEXT DAY + THE DICTATOR HIS TWO CHILDREN HIS SECRETARY AND HIS WEALTH HAD ALL ESCAPED THEM + FROM THAT MOMENT HE HAD VANISHED FROM THE WORLD AND HIS IDENTITY HAD BEEN A FREQUENT SUBJECT FOR COMMENT IN THE EUROPEAN PRESS + YES SIR DON MURILLO THE TIGER OF SAN PEDRO SAID BAYNES + IF YOU LOOK IT UP YOU WILL FIND THAT THE SAN PEDRO COLOURS ARE GREEN AND WHITE SAME AS IN THE NOTE MR. HOLMES + HENDERSON HE CALLED HIMSELF BUT I TRACED HIM BACK PARIS AND ROME AND MADRID TO BARCELONA WHERE HIS SHIP CAME IN IN EIGHTY SIX + THEY'VE BEEN LOOKING FOR HIM ALL THE TIME FOR THEIR REVENGE BUT IT IS ONLY NOW THAT THEY HAVE BEGUN TO FIND HIM OUT + QUOTE THEY DISCOVERED HIM A YEAR AGO QUOTE SAID MISS BURNET WHO HAD SAT UP AND WAS NOW INTENTLY FOLLOWING THE CONVERSATION + ONCE ALREADY HIS LIFE HAS BEEN ATTEMPTED BUT SOME EVIL SPIRIT SHIELDED HIM + NOW AGAIN IT IS THE NOBLE CHIVALROUS GARCIA WHO HAS FALLEN WHILE THE MONSTER GOES SAFE + BUT ANOTHER WILL COME AND YET ANOTHER UNTIL SOME DAY JUSTICE WILL BE DONE THAT IS AS CERTAIN AS THE RISE OF TO MORROW'S SUN + HER THIN HANDS CLENCHED AND HER WORN FACE BLANCHED WITH THE PASSION OF HER HATRED + BUT HOW COME YOU INTO THIS MATTER MISS BURNET ASKED HOLMES + HOW CAN AN ENGLISH LADY JOIN IN SUCH A MURDEROUS AFFAIR + I JOIN IN IT BECAUSE THERE IS NO OTHER WAY IN THE WORLD BY WHICH JUSTICE CAN BE GAINED + WHAT DOES THE LAW OF ENGLAND CARE FOR THE RIVERS OF BLOOD SHED YEARS AGO IN SAN PEDRO OR FOR THE SHIPLOAD OF TREASURE WHICH THIS MAN HAS STOLEN + TO YOU THEY ARE LIKE CRIMES COMMITTED IN SOME OTHER PLANET + BUT WE KNOW + WE HAVE LEARNED THE TRUTH IN SORROW AND IN SUFFERING + TO US THERE IS NO FIEND IN HELL LIKE JUAN MURILLO AND NO PEACE IN LIFE WHILE HIS VICTIMS STILL CRY FOR VENGEANCE QUOTE + NO DOUBT SAID HOLMES HE WAS AS YOU SAY I HAVE HEARD THAT HE WAS ATROCIOUS + BUT HOW ARE YOU AFFECTED + I WILL TELL YOU IT ALL + THIS VILLAIN'S POLICY WAS TO MURDER ON ONE PRETEXT OR ANOTHER EVERY MAN WHO SHOWED SUCH PROMISE THAT HE MIGHT IN TIME COME TO BE A DANGEROUS RIVAL + MY HUSBAND YES MY REAL NAME IS SIGNORA VICTOR DURANDO WAS THE SAN PEDRO MINISTER IN LONDON + HE MET ME AND MARRIED ME THERE + A NOBLER MAN NEVER LIVED UPON EARTH + UNHAPPILY MURILLO HEARD OF HIS EXCELLENCE RECALLED HIM ON SOME PRETEXT AND HAD HIM SHOT + WITH A PREMONITION OF HIS FATE HE HAD REFUSED TO TAKE ME WITH HIM + HIS ESTATES WERE CONFISCATED AND I WAS LEFT WITH A PITTANCE AND A BROKEN HEART + THEN CAME THE DOWNFALL AF THE TYRANT + HE ESCAPED AS YOU HAVE JUST DESCRIBED + BUT THE MANY WHOSE LIVES HE HAD RUINED WHOSE NEAREST AND DEAREST HAD SUFFERED TORTURE AND DEATH AT HIS HANDS WOULD NOT LET THE MATTER REST + THEY BANDED THEMSELVES INTO A SOCIETY WHICH SHOULD NEVER BE DISSOLVED UNTIL THE WORK WAS DONE + IT WAS MY PART AFTER WE HAD DISCOVERED IN THE TRANSFORMED HENDERSON THE FALLEN DESPOT TO ATTACH MYSELF TO HIS HOUSEHOLD AND KEEP THE OTHERS IN TOUCH WITH HIS MOVEMENTS + THIS I WAS ABLE TO DO BY SECURING THE POSITION OF GOVERNESS IN HIS FAMILY + HE LITTLE KNEW THAT THE WOMAN WHO FACED HIM AT EVERY MEAL WAS THE WOMAN WHOSE HUSBAND HE HAD HURRIED AT AN HOUR'S NOTICE INTO ETERNITY + I SMILED ON HIM DID MY DUTY TO HIS CHILDREN AND BIDED MY TIME + AN ATTEMPT WAS MADE IN PARIS AND FAILED + WE ZIG ZAGGED SWIFTLY HERE AND THERE OVER EUROPE TO THROW OFF THE PURSUERS AND FINALLY RETULNED TO THIS HOUSE WHICH HE HAD TAKEN UPON HIS FIRST ARRIVAL IN ENGLAND + BUT HERE ALSO THE MINISTERS OF JUSTICE WERE WAITING + KNOWING THAT HE WOULD RETURN THERE GARCIA WHO IS THE SON OF THE FORMER HIGHEST DIGNITARY IN SAN PEDLRO WAS WAITING WITH TWO TRUSTY COMPANIONS OF HUMBLE STATION ALL THREE FIRED WITH THE SAME REASONS FOR REVENGE + HE COULD DO LITTLE DURING THE DAY FOR MURILLO TOOK EVERY PRECAUTION AND NEVER WENT OUT SAVE WITH HIS SATELLITE LUCAS OR LOPEZ AS HE WAS KNOWN IN THE DAYS OF HIS GREATNESS + AT NIGHT HOWEVER HE SLEPT ALONE AND THE AVENGER MIGHT FIND HIM + ON A CERTAIN EVENING WHICH HAD BEEN PREARRANGED I SENT MY FRIEND FINAL INSTRUCTIONS FOR THE MAN WAS FOREVER ON THE ALERT AND CONTINUALLY CHANGED HIS ROOM + I WAS TO SEE THAT THE DOORS WERE OPEN AND THE SIGNAL OF A GREEN OR WHITE LIGHT IN A WINDOW WHICH FACED THE DRIVE WAS TO GIVE NOTICE IF ALL WAS SAFE OR IF THE ATTEMPT HAD BETTER BE POSTPONED + QUOTE BUT EVERYTHING WENT WRONG WITH US + IN SOME WAY I HAD EXCITED THE SUSPICION OF LOPEZ THE SECRETARY + HE CREPT UP BEHIND ME AND SPRANG UPON ME JUST AS I HAD FINISHED THE NOTE + HE AND HIS MASTER DRAGGED ME TO MY ROOM AND HELD JUDGMENT UPON ME AS A CONVICTED TRAITRESS + THEN AND THERE THEY WOULD HAVE PLUNGED THEIR KNIVES INTO ME COULD THEY HAVE SEEN HOW TO ESCAPE THE CONSEQUENCES OF THE DEED + FINALLY AFTER MUCH DEBATE THEY CONCLUDED THAT MY MURDER WAS TOO DANGEROUS + BUT THEY DETERMINED TO GET RID FOREVER OF GARCIA + THEY HAD GAGGED ME AND MURILLO TWISTED MY ARM ROUND UNTIL I GAVE HIM THE ADDRESS + I SWEAR THAT HE MIGHT HAVE TWISTED IT OFF HAD I UNDERSTOOD WHAT IT WOULD MEAN TO GARCIA + LOPEZ ADDRESSED THE NOTE WHICH I HAD WRITTEN SEALED IT WITH HIS SLEEVE LINK AND SENT IT BY THE HAND OF THE SERVANT JOSE + HOW THEY MURDERED HIM I DO NOT KNOW SAVE THAT IT WAS MURILLO'S HAND WHO STRUCK HIM DOWN FOR LOPEZ HAD REMAINED TO GUARD ME + I BELIEVE HE MUST HAVE WAITED AMONG THE GORSE BUSHES THROUGH WHICH THE PATH WINDS AND STRUCK HIM DOWN AS HE PASSED + AT FIRST THEY WERE OF A MIND TO LET HIM ENTER THE HOUSE AND TO KILL HIM AS A DETECTED BURGLAR BUT THEY ARGUED THAT IF THEY WERE MIXED UP IN AN INQUIRY THEIR OWN IDENTITY WOULD AT ONCE BE PUBLICLY DISCLOSED AND THEY WOULD BE OPEN TO FURTHER ATTACKS + WITH THE DEATH OF GARCIA THE PURSUIT MIGHT CEASE SINCE SUCH A DEATH MIGHT FRIGHTEN OTHERS FROM THE TASK + ALL WOULD NOW HAVE BEEN WELL FOR THEM HAD IT NOT BEEN FOR MY KNOWLEDGE OF WHAT THEY HAD DONE + I HAVE NO DOUBT THAT THERE WERE TIMES WHEN MY LIFE HUNG IN THE BALANCE + I WAS CONFINED TO MY ROOM TERRORIZED BY THE MOST HORRIBLE THREATS CRUELLY ILL USED TO BREAK MY SPIRIT SEE THIS STAB ON MY SHOULDER AND THE BRUISES FROM END TO END OF MY ARMS AND A GAG WAS THRUST INTO MY MOUTH ON THE ONE OCCASION WHEN I TRIED TO CALL FROM THE WINDOW + FOR FIVE DAYS THIS CRUEL IMPRISONMENT CONTINUED WITH HARDLY ENOUGH FOOD TO HOLD BODY AND SOUL TOGETHER + THIS AFTERNOON A GOOD LUNCH WAS BROUGHT ME BUT THE MOMENT AFTER I TOOK IT I KNEW THAT I HAD BEEN DRUGGED + IN A SORT OF DREAM I REMEMBER BEING HALF LED HALF CARRIED TO THE CARRIAGE IN THE SAME STATE I WAS CONVEYED TO THE TRAIN + ONLY THEN WHEN THE WHEELS WERE ALMOST MOVING DID I SUDDENLY REALIZE THAT MY LIBERTY LAY IN MY OWN HANDS + I SPRANG OUT THEY TRIED TO DRAG ME BACK AND HAD IT NOT BEEN FOR THE HELP OF THIS GOOD MAN WHO LED ME TO THE CAB I SHOULD NEVER HAVE BROKEN AWAY + NOW THANK GOD I AM BEYOND THEIR POWER FOREVER + WE HAD ALL LISTENED INTENTLY TO THIS REMARKABLE STATEMENT + IT WAS HOLMES WHO BROKE THE SILENCE + OUR DIFFICULTIES ARE NOT OVER HE REMARKED SHAKING HIS HEAD + OUR POLICE WORK ENDS BUT OUR LEGAL WORK BEGINS + EXACTLY SAID I. A PLAUSIBLE LAWYER COULD MAKE IT OUT AS AN ACT OF SELF DEFENCE + THERE MAY BE A HUNDRED CRIMES IN THE BACKGROUND BUT IT IS ONLY ON THIS ONE THAT THEY CAN BE TRIED QUOTE + COME COME SAID BAYNES CHEERILY I THINK BETTER OF THE LAW THAN THAT + SELF DEFENCE IS ONE THING + TO ENTICE A MAN IN COLD BLOOD WITH THE OBJECT OF MURDERING HIM IS ANOTHER WHATEVER DANGER YOU MAY FEAR FROM HIM + NO NO WE SHALL ALL BE JUSTIFIED WHEN WE SEE THE TENANTS OF HIGH GABLE AT THE NEXT GUILDFORD ASSIZES + IT IS A MATTER OF HISTORY HOWEVER THAT A LITTLE TIME WAS STILL TO ELAPSE BEFORE THE TIGER OF SAN PEDRO SHOULD MEET WITH HIS DESERTS + WILY AND BOLD HE AND HIS COMPANION THREW THEIR PURSUER OFF THEIR TRACK BY ENTERING A LODGING HOUSE IN EDMONTON STREET AND LEAVING BY THE BACK GATE INTO CURZON SQUARE + FROM THAT DAY THEY WERE SEEN NO MORE IN ENGLAND + SOME SIX MONTHS AFTERWARDS THE MARQUESS OF MONTALVA AND SIGNOR RULLI HIS SECRETARY WERE BOTH MURDERED IN THEIR ROOMS AT THE HOTEL ESCURIAL AT MADRID + THE CRIME WAS ASCRIBED TO NIHILISM AND THE MURDERERS WERE NEVER ARRESTED + INSPECTOR BAYNES VISITED US AT BAKER STREET WITH A PRINTED DESCRIPTION OF THE DARK FACE OF THE SECRETARY AND OF THE MASTERFUL FEATURES THE MAGNETIC BLACK EYES AND THE TUFTED BROWS OF HIS MASTER + WE COULD NOT DOUBT THAT JUSTICE IF BELATED HAD COME AT LAST + A CHAOTIC CASE MY DEAR WATSON SAID HOLMES OVER AN EVENING PIPE + IT WILL NOT BE POSSIBLE FOR YOU TO PRESENT IT IN THAT COMPACT FORM WHICH IS DEAR TO YOUR HEART + IT COVERS TWO CONTINENTS CONCERNS TWO GROUPS OF MYSTERIOUS PERSONS AND IS FURTHER COMPLICATED BY THE HIGHLY RESPECTABLE PRESENCE OF OUR FRIEND SCOTT ECCLES WHOSE INCLUSION SHOWS ME THAT THE DECEASED GARCIA HAD A SCHEMING MIND AND A WELL DEVELOPED INSTINCT OF SELFPRESERVATION + IT IS REMARKABLE ONLY FOR THE FACT THAT AMID A PERFECT JUNGLE OF POSSIBILITIES WE WITH OUR WORTHY COLLABORATOR THE INSPECTOR HAVE KEPT OUR CLOSE HOLD ON THE ESSENTIALS AND SO BEEN GUIDED ALONG THE CROOKED AND WINDING PATH + IS THERE ANY POINT WHICH IS NOT QUITE CLEAR TO YOU + QUOTE THE OBJECT OF THE MULATTO COOK'S RETURN QUOTE + I THINK THAT THE STRANGE CREATURE IN THE KITCHEN MAY ACCOUNT FOR IT + THE MAN WAS A PRIMITIVE SAVAGE FROM THE BACKWOODS OF SAN PEDRO AND THIS WAS HIS FETISH + WHEN HIS COMPANION AND HE HAD FLED TO SOME PREARRANGED RETREAT ALREADY OCCUPIED NO DOUBT BY A CONFEDERATE THE COMPANION HAD PERSUADED HIM TO LEAVE SO COMPROMISING AN ARTICLE OF FURNITURE + BUT THE MULATTO'S HEART WAS WITH IT AND HE WAS DRIVEN BACK TO IT NEXT DAY WHEN ON RECONNOITRING THROUGH THE WINDOW HE FOUND POLICEMAN WALTERS IN POSSESSION + HE WAITED THREE DAYS LONGER AND THEN HIS PIETY OR HIS SUPERSTITION DROVE HIM TO TRY ONCE MORE + INSPECTOR BAYNES WHO WITH HIS USUAL ASTUTENESS HAD MINIMIZED THE INCIDENT BEFORE ME HAD REALLY RECOGNIZED ITS IMPORTANCE AND HAD LEFT A TRAP INTO WHICH THE CREATURE WALKED + ANY OTHER POINT WATSON + THE TORN BIRD THE PAIL OF BLOOD THE CHARRED BONES ALL THE MYSTERY OF THAT WEIRD KITCHEN + HOLMES SMILED AS HE TURNED UP AN ENTRY IN HIS NOTEBOOK + I SPENT A MORNING IN THE BRITISH MUSEUM READING UP ON THAT AND OTHER POINTS + HERE IS A QUOTATION FROM ECKERMANN'S VOODOOISM AND THE NEGROID RELIGIONS THE TRUE VOODOO WORSHIPPER ATTEMPTS NOTHING OF IMPOR TANCE WITHOUT CERTAIN SACRIFICES WHICH ARE INTENDED TO PROPI TIATE HIS UNCLEAN GODS + IN EXTREME CASES THESE RITES TAKE THE FORM OF HUMAN SACRIFICES FOLLOWED BY CANNIBALISM + THE MORE USUAL VICTIMS ARE A WHITE COCK WHICH IS PLUCKED IN PIECES ALIVE OR A BLACK GOAT WHOSE THROAT IS CUT AND BODY BURNED + SO YOU SEE OUR SAVAGE FRIEND WAS VERY ORTHODOX IN HIS RITUAL + IT IS GROTESQUE WATSON QUOTE HOLMES ADDED AS HE SLOWLY FASTENED HIS NOTEBOOK QUOTE BUT AS I HAVE HAD OCCASION TO REMARK THERE IS BUT ONE STEP FROM THE GROTESQUE TO THE HORRIBLE QUOTE diff --git a/samples/LMTutorial/train/yellow_face.txt b/samples/LMTutorial/train/yellow_face.txt new file mode 100755 index 0000000..c2930ba --- /dev/null +++ b/samples/LMTutorial/train/yellow_face.txt @@ -0,0 +1,454 @@ + IN PUBLISHING THESE SHORT SKETCHES BASED UPON THE NUMEROUS CASES IN WHICH MY COMPANION'S SINGULAR GIFTS HAVE MADE US THE LISTENERS TO AND EVENTUALLY THE ACTORS IN SOME STRANGE DRAMA IT IS ONLY NATURAL THAT I SHOULD DWELL RATHER UPON HIS SUCCESSES THAN UPON HIS FAILURES + AND THIS NOT SO MUCH FOR THE SAKE OF HIS REPUTATION FOR INDEED IT WAS WHEN HE WAS AT HIS WIT'S END THAT HIS ENERGY AND HIS VERSATILITY WERE MOST ADMIRABLE BUT BECAUSE WHERE HE FAILED IT HAPPENED TOO OFTEN THAT NO ONE ELSE SUCCEEDED AND THAT THE TALE WAS LEFT FOREVER WITHOUT A CONCLUSION + NOW AND AGAIN HOWEVER IT CHANCED THAT EVEN WHEN HE ERRED THE TRUTH WAS STILL DISCOVERED + I HAVE NOTES OF SOME HALF DOZEN CASES OF THE KIND THE ADVENTURE OF THE MUSGRAVE RITUAL AND THAT WHICH I AM ABOUT TO RECOUNT ARE THC TWO WHICH PRESENT THE STRONGEST FEATURES OF INTEREST + SHERLOCK HOLMES WAS A MAN WHO SELDOM TOOK EXERCISE FOR EXERCISE'S SAKE + FEW MEN WERE CAPABLE OF GREATER MUSCULAR EFFORT AND HE WAS UNDOUBTEDLY ONE OF THE FINEST BOXERS OF HIS WEIGHT THAT I HAVE EVER SEEN BUT HE LOOKED UPON AIMLESS BODILY EXERTION AS A WASTE OF ENERGY AND HE SELDOM BESTIRRED HIMSELF SAVE WHERE THERE WAS SOME PROFESSIONAL OBJECT TO BE SERVED + THEN HE WAS ABSOLUTELY UNTIRING AND INDEFATIGABLE + THAT HE SHOULD HAVE KEPT HIMSELF IN TRAINING UNDER SUCH CIRCUMSTANCES IS REMARKABLE BUT HIS DIET WAS USUALLY OF THE SPAREST AND HIS HABITS WERE SIMPLE TO THE VERGE OF AUSTERITY + SAVE FOR THE OCCASIONAL USE OF COCAINE HE HAD NO VICES AND HE ONLY TURNED TO THE DRUG AS A PROTEST AGAINST THE MONOTONY OF EXISTENCE WHEN CASES WERE SCANTY AND THE PAPERS UNINTERESTING + ONE DAY IN EARLY SPRING HE HAD SO FAR RELAXED AS TO GO FOR A WALK WITH ME IN THE PARK WHERE THE FIRST FAINT SHOOTS OF GREEN WERE BREAKING OUT UPON THE ELMS AND THE STICKY SPEAR HEADS OF THE CHESTNUTS WERE JUST BEGINNING TO BURST INTO THEIR FIVE FOLD LEAVES + FOR TWO HOURS WE RAMBLED ABOUT TOGETHER IN SILENCE FOR THE MOST PART AS BEFITS TWO MEN WHO KNOW EACH OTHER INTIMATELY + IT WAS NEARLY FIVE BEFORE WE WERE BACK IN BAKER STREET ONCE MORE + QUOTE BEG PARDON SIR QUOTE SAID OUR PAGE BOY AS HE OPENED THE DOOR + THERE'S BEEN A GENTLEMAN HERE ASKING FOR YOU SIR + HOLMES GLANCED REPROACHFULLY AT ME + SO MUCH FOR AFTERNOON WALKS SAID HE + HAS THIS GENTLEMAN GONE THEN + YES SIR + DIDN'T YOU ASK HIM IN + QUOTE YES SIR HE CAME IN QUOTE + HOW LONG DID HE WAIT + HALF AN HOUR SIR + HE WAS A VERY RESTLESS GENTLEMAN SIR A WALKIN' AND A STAMPIN' ALL THE TIME HE WAS HERE + I WAS WAITIN' OUTSIDE THE DOOR SIR AND I COULD HEAR HIM + AT LAST HE OUTS INTO THE PASSAGE AND HE CRIES IS THAT MAN NEVER GOIN' TO COME + THOSE WERE HIS VERY WORDS SIR + YOU'LL ONLY NEED TO WAIT A LITTLE LONGER SAYS I. THEN I'LL WAIT IN THE OPEN AIR FOR I FEEL HALF CHOKED SAYS HE + I'LL BE BACK BEFORE LONG + AND WITH THAT HE UPS AND HE OUTS AND ALL I COULD SAY WOULDN'T HOLD HIM BACK + WELL WELL YOU DID YOUR BEST SAID HOLMES AS WE WALKED INTO OUR ROOM + IT'S VERY ANNOYING THOUGH WATSON + I WAS BADLY IN NEED OF A CASE AND THIS LOOKS FROM THE MAN'S IMPATIENCE AS IF IT WERE OF IMPORTANCE + HULLO THAT'S NOT YOUR PIPE ON THE TABLE + HE MUST HAVE LEFT HIS BEHIND HIM + A NICE OLD BRIER WITH A GOOD LONG STEM OF WHAT THE TOBACCONISTS CALL AMBER + I WONDER HOW MANY REAL AMBER MOUTHPIECES THERE ARE IN LONDON + SOME PEOPLE THINK THAT A FLY IN IT IS A SIGN + WELL HE MUST HAVE BEEN DISTURBED IN HIS MIND TO LEAVE A PIPE BEHIND HIM WHICH HE EVIDENTLY VALUES HIGHLY QUOTE + HOW DO YOU KNOW THAT HE VALUES IT HIGHLY + I ASKED + WELL I SHOULD PUT THE ORIGINAL COST OF THE PIPE AT SEVEN AND SIXPENCE + NOW IT HAS YOU SEE BEEN TWICE MENDED ONCE IN THE WOODEN STEM AND ONCE IN THE AMBER + EACH OF THESE MENDS DONE AS YOU OBSERVE WITH SILVER BANDS MUST HAVE COST MORE THAN THE PIPE DID ORIGINALLY + THE MAN MUST VALUE THE PIPE HIGHLY WHEN HE PREFERS TO PATCH IT UP RATHER THAN BUY A NEW ONE WITH THE SAME MONEY + ANYTHING ELSE + I ASKED FOR HOLMES WAS TURNING THE PIPE ABOUT IN HIS HAND AND STARING AT IT IN HIS PECULIAR PENSIVE WAY + HE HELD IT UP AND TAPPED ON IT WITH HIS LONG THIN FOREFINGER AS A PROFESSOR MIGHT WHO WAS LECTURING ON A BONE + PIPES ARE OCCASIONALLY OF EXTRAORDINARY INTEREST SAID HE + QUOTE NOTHING HAS MORE INDIVIDUALITY SAVE PERHAPS WATCHES AND BOOTLACES + THE INDICATIONS HERE HOWEVER ARE NEITHER VERY MARKED NOR VERY IMPORTANT + THE OWNER IS OBVIOUSLY A MUSCULAR MAN LEFT HANDED WITH AN EXCELLENT SET OF TEETH CARELESS IN HIS HABITS AND WITH NO NEED TO PRACTISE ECONOMY + MY FRIEND THREW OUT THE INFORMATION IN A VERY OFFHAND WAY BUT I SAW THAT HE COCKED HIS EYE AT ME TO SEE IF I HAD FOLLOWED HIS REASONING + YOU THINK A MAN MUST BE WELL TO DO IF HE SMOKES A SEVENSHILLING PIPE SAID I + THIS IS GROSVENOR MIXTURE AT EIGHTPENCE AN OUNCE HOLMES ANSWERED KNOCKING A LITTLE OUT ON HIS PALM + AS HE MIGHT GET AN EXCELLENT SMOKE FOR HALF THE PRICE HE HAS NO NEED TO PRACTISE ECONOMY + AND THE OTHER POINTS + QUOTE HE HAS BEEN IN THE HABIT OF LIGHTING HIS PIPE AT LAMPS AND GASJETS + YOU CAN SEE THAT IT IS QUITE CHARRED ALL DOWN ONE SIDE + OF COURSE A MATCH COULD NOT HAVE DONE THAT + WHY SHOULD A MAN HOLD A MATCH TO THE SIDE OF HIS PIPE + BUT YOU CANNOT LIGHT IT AT A LAMP WITHOUT GETTING THE BOWL CHARRED + AND IT IS ALL ON THE RIGHT SIDE OF THE PIPE + FROM THAT I GATHER THAT HE IS A LEFT HANDED MAN + YOU HOLD YOUR OWN PIPE TO THE LAMP AND SEE HOW NATURALLY YOU BEING RIGHT HANDED HOLD THE LEFT SIDE TO THE FLAME + YOU MIGHT DO IT ONCE THE OTHER WAY BUT NOT AS A CONSTANCY + THIS HAS ALWAYS BEEN HELD SO + THEN HE HAS BITTEN THROUGH HIS AMBER + IT TAKES A MUSCULAR ENERGETIC FELLOW AND ONE WITH A GOOD SET OF TEETH TO DO THAT + BUT IF I AM NOT MISTAKEN I HEAR HIM UPON THE STAIR SO WE SHALL HAVE SOMETHING MORE INTERESTING THAN HIS PIPE TO STUDY + AN INSTANT LATER OUR DOOR OPENED AND A TALL YOUNG MAN ENTERED THE ROOM + HE WAS WELL BUT QUIETLY DRESSED IN A DARK GRAY SUIT AND CARRIED A BROWN WIDEAWAKE IN HIS HAND + I SHOULD HAVE PUT HIM AT ABOUT THIRTY THOUGH HE WAS REALLY SOME YEARS OLDER + L. BEG YOUR PARDON SAID HE WITH SOME EMBARRASSMENT I SUPPOSE I SHOULD HAVE KNOCKED + YES OF COURSE I SHOULD HAVE KNOCKED + THE FACT IS THAT I AM A LITTLE UPSET AND YOU MUST PUT IT ALL DOWN TO THAT + HE PASSED HIS HAND OVER HIS FOREHEAD LIKE A MAN WHO IS HALF DAZED AND THEN FELL RATHER THAN SAT DOWN UPON A CHALR + I CAN SEE THAT YOU HAVE NOT SLEPT FOR A NIGHT OR TWO SAID HOLMES IN HIS EASY GENIAL WAY + THAT TRIES A MAN'S NERVES MORE THAN WORK AND MORE EVEN THAN PLEASURE + MAY I ASK HOW I CAN HELP YOU QUOTE + I WANTED YOUR ADVICE SIR + I DON'T KNOW WHAT TO DO AND MY WHOLE LIFE SEEMS TO HAVE GONE TO PIECES + YOU WISH TO EMPLOY ME AS A CONSULTING DETECTIVE + NOT THAT ONLY + I WANT YOUR OPINION AS A JUDICIOUS MAN AS A MAN OF THE WORLD + I WANT TO KNOW WHAT I OUGHT TO DO NEXT + I HOPE TO GOD YOU'LL BE ABLE TO TELL ME + HE SPOKE IN LITTLE SHARP JERKY OUTBURSTS AND IT SEEMED TO ME THAT TO SPEAK AT ALL WAS VERY PAINFUL TO HIM AND THAT HIS WILL ALL THROUGH WAS OVERRIDING HIS INCLINATIONS + QUOTE IT'S A VERY DELICATE THING QUOTE SAID HE + ONE DOES NOT LIKE TO SPEAK OF ONE'S DOMESTIC AFFAIRS TO STRANGERS + IT SEEMS DREADFUL TO DISCUSS THE CONDUCT OF ONE'S WIFE WITH TWO MEN WHOM I HAVE NEVER SEEN BEFORE + IT'S HORRIBLE TO HAVE TO DO IT + BUT I'VE GOT TO THE END OF MY TETHER AND I MUST HAVE ADVICE + MY DEAR MR. GRANT MUNRO BEGAN HOLMES + OUR VISITOR SPRANG FROM HIS CHAIR + WHAT HE CRIED YOU KNOW MY NAME + IF YOU WISH TO PRESERVE YOUR INCOGNITO SAID HOLMES SMILING I WOULD SUGGEST THAT YOU CEASE TO WRITE YOUR NAME UPON THE LINING OF YOUR HAT OR ELSE THAT YOU TURN THE CROWN TOWARDS THE PERSON WHOM YOU ARE ADDRESSING + I WAS ABOUT TO SAY THAT MY FRIEND AND I HAVE LISTENED TO A GOOD MANY STRANGE SECRETS IN THIS ROOM AND THAT WE HAVE HAD THE GOOD FORTUNE TO BRING PEACE TO MANY TROUBLED SOULS + I TRUST THAT WE MAY DO AS MUCH FOR YOU + MIGHT I BEG YOU AS TIME MAY PROVE TO BE OF IMPORTANCE TO FURNISH ME WITH THE FACTS OF YOUR CASE WITHOUT FURTHER DELAY QUOTE + OUR VISITOR AGAIN PASSED HIS HAND OVER HIS FOREHEAD AS IF HE FOUND IT BITTERLY HARD + FROM EVERY GESTURE AND EXPRESSION I COULD SEE THAT HE WAS A RESERVED SELF CONTAINED MAN WITH A DASH OF PRIDE IN HIS NATURE MORE LIKELY TO HIDE HIS WOUNDS THAN TO EXPOSE THEM + THEN SUDDENLY WITH A FIERCE GESTURE OF HIS CLOSED HAND LIKE ONE WHO THROWS RESERVE TO THE WINDS HE BEGAN + THE FACTS ARE THESE MR. HOLMES SAID HE + I AM A MARRIED MAN AND HAVE BEEN SO FOR THREE YEARS + DURING THAT TIME MY WIFE AND I HAVE LOVED EACH OTHER AS FONDLY AND LIVED AS HAPPILY AS ANY TWO THAT EVER WERE JOINED + WE HAVE NOT HAD A DIFFERENCE NOT ONE IN THOUGHT OR WORD OR DEED + AND NOW SINCE LAST MONDAY THERE HAS SUDDENLY SPRUNG UP A BARRIER BETWEEN US. AND I FIND THAT THERE IS SOMETHING IN HER LIFE AND IN HER THOUGHTS OF WHICH I KNOW AS LITTLE AS IF SHE WERE THE WOMAN WHO BRUSHES BY ME IN THE STREET + WE ARE ESTRANGED AND I WANT TO KNOW WHY + NOW THERE IS ONE THING THAT I WANT TO IMPRESS UPON YOU BEFORE I GO ANY FURTHER MR. HOLMES + EFFIE LOVES ME + DON'T LET THERE BE ANY MISTAKE ABOUT THAT + SHE LOVES ME WITH HER WHOLE HEART AND SOUL AND NEVER MORE THAN NOW + I KNOW IT + I FEEL IT + I DON'T WANT TO ARGUE ABOUT THAT + A MAN CAN TELL EASILY ENOUGH WHEN A WOMAN LOVES HIM + BUT THERE'S THIS SECRET BETWEEN US AND WE CAN NEVER BE THE SAME UNTIL IT IS CLEARED + KINDLY LET ME HAVE THE FACTS MR. MUNRO SAID HOLMES WITH SOME IMPATIENCE + QUOTE I'LL TELL YOU WHAT I KNOW ABOUT EFFIE'S HISTORY + SHE WAS A WIDOW WHEN I MET HER FIRST THOUGH QUITE YOUNG ONLY TWENTYFIVE + HER NAME THEN WAS MRS. HEBRON + SHE WENT OUT TO AMERICA WHEN SHE WAS YOUNG AND LIVED IN THE TOWN OF ATLANTA WHERE SHE MARRIED THIS HEBRON WHO WAS A LAWYER WITH A GOOD PRACTICE + THEY HAD ONE CHILD BUT THE YELLOW FEVER BROKE OUT BADLY IN THE PLACE AND BOTH HUSBAND AND CHILD DIED OF IT + I HAVE SEEN HIS DEATH CERTIFICATE + THIS SICKENED HER OF AMERICA AND SHE CAME BACK TO LIVE WITH A MAIDEN AUNT AT PINNER IN MIDDLESEX + I MAY MENTION THAT HER HUSBAND HAD LEFT HER COMFORTABLY OFF AND THAT SHE HAD A CAPITAL OF ABOUT FOUR THOUSAND FIVE HUNDRED POUNDS WHICH HAD BEEN SO WELL INVESTED BY HIM THAT IT RETURNED AN AVERAGE OF SEVEN PER CENT + SHE HAD ONLY BEEN SIX MONTHS AT PINNER WHEN I MET HER WE FELL IN LOVE WITH EACH OTHER AND WE MARRIED A FEW WEEKS AFTERWARDS + I AM A HOP MERCHANT MYSELF AND AS I HAVE AN INCOME OF SEVEN OR EIGHT HUNDRED WE FOUND OURSELVES COMFORTABLY OFF AND TOOK A NICE EIGHTY POUND A YEAR VILLA AT NORBURY + OUR LITTLE PLACE WAS VERY COUNTRIFIED CONSIDERING THAT IT IS SO CLOSE TO TOWN + WE HAD AN INN AND TWO HOUSES A LITTLE ABOVE US AND A SINGLE COTTAGE AT THE OTHER SIDE OF THE FIELD WHICH FACES US AND EXCEPT THOSE THERE WERE NO HOUSES UNTIL YOU GOT HALFWAY TO THE STATION + MY BUSINESS TOOK ME INTO TOWN AT CERTAIN SEASONS BUT IN SUMMER I HAD LESS TO DO AND THEN IN OUR COUNTRY HOME MY WIFE AND I WERE JUST AS HAPPY AS COULD BE WISHED + I TELL YOU THAT THERE NEVER WAS A SHADOW BETWEEN US UNTIL THIS ACCURSED AFFAIR BEGAN + THERE'S ONE THING I OUGHT TO TELL YOU BEFORE I GO FURTHER + WHEN WE MARRIED MY WIFE MADE OVER ALL HER PROPERTY TO ME RATHER AGAINST MY WILL FOR I SAW HOW AWKWARD IT WOULD BE IF MY BUSINESS AFFAIRS WENT WRONG + HOWEVER SHE WOULD HAVE IT SO AND IT WAS DONE + WELL ABOUT SIX WEEKS AGO SHE CAME TO ME + JACK SAID SHE WHEN YOU TOOK MY MONEY YOU SAID THAT IF EVER I WANTED ANY I WAS TO ASK YOU FOR IT + CERTAINLY SAID I. IT'S ALL YOUR OWN + WELL SAID SHE I WANT A HUNDRED POUNDS + QUOTE I WAS A BIT STAGGERED AT THIS FOR I HAD IMAGINED IT WAS SIMPLY A NEW DRESS OR SOMETHING OF THE KIND THAT SHE WAS AFTER + WHAT ON EARTH FOR + I ASKED + OH SAID SHE IN HER PLAYFUL WAY YOU SAID THAT YOU WERE ONLY MY BANKER AND BANKERS NEVER ASK QUESTIONS YOU KNOW + IF YOU REALLY MEAN IT OF COURSE YOU SHALL HAVE THE MONEY SAID I + OH YES I REALLY MEAN IT + AND YOU WON'T TELL ME WHAT YOU WANT IT FOR + QUOTE SOME DAY PERHAPS BUT NOT JUST AT PRESENT JACK + SO I HAD TO BE CONTENT WITH THAT THOUGH IT WAS THE FIRST TIME THAT THERE HAD EVER BEEN ANY SECRET BETWEEN US + I GAVE HER A CHECK AND I NEVER THOUGHT ANY MORE OF THE MATTER + IT MAY HAVE NOTHING TO DO WITH WHAT CAME AFTERWARDS BUT I THOUGHT IT ONLY RIGHT TO MENTION IT + WELL I TOLD YOU JUST NOW THAT THERE IS A COTTAGE NOT FAR FROM OUR HOUSE + THERE IS JUST A FIELD BETWEEN US BUT TO REACH IT YOU HAVE TO GO ALONG THE ROAD AND THEN TURN DOWN A LANE + JUST BEYOND IT IS A NICE LITTLE GROVE OF SCOTCH FIRS AND I USED TO BE VERY FOND OF STROLLING DOWN THERE FOR TREES ARE ALWAYS A NEIGHBOURLY KIND OF THING + THE COTTAGE HAD BEEN STANDING EMPTY THIS EIGHT MONTHS AND IT WAS A PITY FOR IT WAS A PRETTY TWO STORIED PLACE WITH AN OLD FASHIONED PORCH AND A HONEYSUCKLE ABOUT IT + I HAVE STOOD MANY A TIME AND THOUGHT WHAT A NEAT LITTLE HOMESTEAD IT WOULD MAKE + WELL LAST MONDAY EVENING I WAS TAKING A STROLL DOWN THAT WAY WHEN I MET AN EMPTY VAN COMING UP THE LANE AND SAW A PILE OF CARPETS AND THINGS LYING ABOUT ON THE GRASS PLOT BESIDE THE PORCH + IT WAS CLEAR THAT THE COTTAGE HAD AT LAST BEEN LET + I WALKED PAST IT AND THEN STOPPING AS AN IDLE MAN MIGHT I RAN MY EYE OVER IT AND WONDERED WHAT SORT OF FOLK THEY WERE WHO HAD COME TO LIVE SO NEAR US + AND AS I LOOKED I SUDDENLY BECAME AWARE THAT A FACE WAS WATCHING ME OUT OF ONE OF THE UPPER WINDOWS + I DON'T KNOW WHAT THERE WAS ABOUT THAT FACE MR. HOLMES BUT IT SEEMED TO SEND A CHILL RIGHT DOWN MY BACK + I WAS SOME LITTLE WAY OFF SO THAT I COULD NOT MAKE OUT THE FEATURES BUT THERE WAS SOMETHING UNNATURAL AND INHUMAN ABOUT THE FACE + THAT WAS THE IMPRESSION THAT I HAD AND I MOVED QUICKLY FORWARD TO GET A NEARER VIEW OF THE PERSON WHO WAS WACHING ME + BUT AS I DID SO THE FACE SUDDENLY DISAPPEARED SO SUDDENLY THAT IT SEEMED TO HAVE BEEN PLUCKED AWAY INTO THE DARKNESS OF THE ROOM + I STOOD FOR FIVE MINUTES THINKING THE BUSINESS OVER AND TRYING TO ANALYZE MY IMPRESSIONS + I COULD NOT TELL IF THE FACE WAS THAT OF A MAN OR A WOMAN + IT HAD BEEN TOO FAR FROM ME FOR THAT + BUT ITS COLOUR WAS WHAT HAD IMPRESSED ME MOST + IT WAS OF A LIVID CHALKY WHITE AND WITH SOMETHING SET AND RIGID ABOUT IT WHICH WAS SHOCKINGLY UNNATURAL + SO DISTURBED WAS I THAT I DETERMINED TO SEE A LITTLE MORE OF THE NEW INMATES OF THE COTTAGE + I APPROACHED AND KNOCKED AT THE DOOR WHICH WAS INSTANTLY OPENED BY A TALL GAUNT WOMAN WITH A HARSH FORBIDDING FACE + WHAT MAY YOU BE WANTIN' SHE ASKED IN A NORTHERN ACCENT + QUOTE I AM YOUR NEIGHBOUR OVER YONDER SAID I NODDING TOWARDS MY HOUSE + I SEE THAT YOU HAVE ONLY JUST MOVED IN SO I THOUGHT THAT IF I COULD BE OF ANY HELP TO YOU IN ANY + AY WE'LL JUST ASK YE WHEN WE WANT YE SAID SHE AND SHUT THE DOOR IN MY FACE + ANNOYED AT THE CHURLISH REBUFF I TURNED MY BACK AND WALKED HOME + ALL EVENING THOUGH I TRIED TO THINK OF OTHER THINGS MY MIND WOULD STILL TURN TO THE APPARITION AT THE WINDOW AND THE RUDENESS OF THE WOMAN + I DETERMINED TO SAY NOTHING ABOUT THE FORMER TO MY WIFE FOR SHE IS A NERVOUS HIGHLY STRUNG WOMAN AND I HAD NO WISH THAT SHE SHOULD SHARE THE UNPLEASANT IMPRESSION WHICH HAD BEEN PRODUCED UPON MYSELF + I REMARKED TO HER HOWEVER BEFORE I FELL ASLEEP THAT THE COTTAGE WAS NOW OCCUPIED TO WHICH SHE RETURNED NO REPLY + I AM USUALLY AN EXTREMELY SOUND SLEEPER + IT HAS BEEN A STANDING JEST IN THE FAMILY THAT NOTHING COULD EVER WAKE ME DURING THE NIGHT + AND YET SOMEHOW ON THAT PARTICULAR NIGHT WHETHER IT MAY HAVE BEEN THE SLIGHT EXCITEMENT PRODUCED BY MY LITTLE ADVENTURE OR NOT I KNOW NOT BUT I SIEPT MUCH MORE LIGHTLY THAN USUAL + HALF IN MY DREAMS I WAS DIMLY CONSCIOUS THAT SOMETHING WAS GOING ON IN THE ROOM AND GRADUALLY BECAME AWARE THAT MY WIFE HAD DRESSED HERSELF AND WAS SLIPPING ON HER MANTLE AND HER BONNET + MY LIPS WERE PARTED TO MURMUR OUT SOME SLEEPY WORDS OF SURPRISE OR REMONSTRANCE AT THIS UNTIMELY PREPARATION WHEN SUDDENLY MY HALF OPENED EYES FELL UPON HER FACE ILLUMINATED BY THE CANDLE LIGHT AND ASTONISHMENT HELD ME DUMB + SHE WORE AN EXPRESSION SUCH AS I HAD NEVER SEEN BEFORE SUCH AS I SHOULD HAVE THOUGHT HER INCAPABLE OF ASSUMING + SHE WAS DEADLY PALE AND BREATHING FAST GLANCING FURTIVELY TOWARDS THE BED AS SHE FASTENED HER MANTLE TO SEE IF SHE HAD DISTURBED ME + THEN THINKING THAT I WAS STILL ASLEEP SHE SLIPPED NOISELESSLY FROM THE ROOM AND AN INSTANT LATER I HEARD A SHARP CREAKING WHICH COULD ONLY COME FROM THE HINGES OF THE FRONT DOOR + I SAT UP IN BED AND RAPPED MY KNUCKLES AGAINST THE RAIL TO MAKE CERTAIN THAT I WAS TRULY AWAKE + THEN I TOOK MY WATCH FROM UNDER THE PILLOW + IT WAS THREE IN THE MORNING + WHAT ON THIS EARTH COULD MY WIFE BE DOING OUT ON THE COUNTRY ROAD AT THREE IN THE MORNING + I HAD SAT FOR ABOUT TWENTY MINUTES TURNING THE THING OVER IN MY MIND AND TRYING TO FIND SOME POSSIBLE EXPLANATION + THE MORE I THOUGHT THE MORE EXTRAORDINARY AND INEXPLICABLE DID IT APPEAR + I WAS STILL PUZZLING OVER IT WHEN I HEARD THE DOOR GENTLY CLOSE AGAIN AND HER FOOTSTEPS COMING UP THE STAIRS + WHERE IN THE WORLD HAVE YOU BEEN EFFIE + I ASKED AS SHE ENTERED + SHE GAVE A VIOLENT START AND A KIND OF GASPING CRY WHEN I SPOKE AND THAT CRY AND START TROUBLED ME MORE THAN ALL THE REST FOR THERE WAS SOMETHING INDESCRIBABLY GUILTY ABOUT THEM + MY WIFE HAD ALWAYS BEEN A WOMAN OF A FRANK OPEN NATURE AND IT GAVE ME A CHILL TO SEE HER SLINKING INTO HER OWN ROOM AND CRYING OUT AND WINCING WHEN HER OWN HUSBAND SPOKE TO HER + QUOTE YOU AWAKE JACK SHE CRIED WITH A NERVOUS LAUGH + WHY I THOUGHT THAT NOTHING COULD AWAKE YOU + WHERE HAVE YOU BEEN + I ASKED MORE STERNLY + I DON'T WONDER THAT YOU ARE SURPRISED SAID SHE AND I COULD SEE THAT HER FINGERS WERE TREMBLING AS SHE UNDID THE FASTENINGS OF HER MANTLE + WHY I NEVER REMEMBER HAVING DONE SUCH A THING IN MY LIFE BEFORE + THE FACT IS THAT I FELT AS THOUGH I WERE CHOKING AND HAD A PERFECT LONGING FOR A BREATH OF FRESH AIR + I REALLY THINK THAT I SHOULD HAVE FAINTED IF I HAD NOT GONE OUT + I STOOD AT THE DOOR FOR A FEW MINUTES AND NOW I AM QUITE MYSELF AGAIN + ALL THE TIME THAT SHE WAS TELLING ME THIS STORY SHE NEVER ONCE LOOKED IN MY DIRECTION AND HER VOICE WAS QUITE UNLIKE HER USUAL TONES + IT WAS EVIDENT TO ME THAT SHE WAS SAYING WHAT WAS FALSE + I SAID NOTHING IN REPLY BUT TURNED MY FACE TO THE WALL SICK AT HEART WITH MY MIND FILLED WITH A THOUSAND VENOMOUS DOUBTS AND SUSPICIONS + WHAT WAS IT THAT MY WIFE WAS CONCEALING FROM ME + WHERE HAD SHE BEEN DURING THAT STRANGE EXPEDITION + I FELT THAT I SHOULD HAVE NO PEACE UNTIL I KNEW AND YET I SHRANK FROM ASKING HER AGAIN AFTER ONCE SHE HAD TOLD ME WHAT WAS FALSE + ALL THE REST OF THE NIGHT I TOSSED AND TUMBLED FRAMING THEORY AFTER THEORY EACH MORE UNLIKELY THAN THE LAST + I SHOULD HAVE GONE TO THE CITY THAT DAY BUT I WAS TOO DISTURBED IN MY MIND TO BE ABLE TO PAY ATTENTION TO BUSINESS MATTERS + MY WIFE SEEMED TO BE AS UPSET AS MYSELF AND I COULD SEE FROM THE LITTLE QUESTIONING GLANCES WHICH SHE KEPT SHOOTING AT ME THAT SHE UNDERSTOOD THAT I DISBELIEVED HER STATEMENT AND THAT SHE WAS AT HER WIT'S END WHAT TO DO + WE HARDLY EXCHANGED A WORD DURING BREAKFAST AND IMMEDIATELY AFTERWARDS I WENT OUT FOR A WALK THAT I MIGHT THINK THE MATTER OUT IN THE FRESH MORNING AIR + I WENT AS FAR AS THE CRYSTAL PALACE SPENT AN HOUR IN THE GROUNDS AND WAS BACK IN NORBURY BY ONE O'CLOCK + IT HAPPENED THAT MY WAY TOOK ME PAST THE COTTAGE AND I STOPPED FOR AN INSTANT TO LOOK AT THE WINDOWS AND TO SEE IF I COULD CATCH A GLIMPSE OF THE STRANGE FACE WHICH HAD LOOKED OUT AT ME ON THE DAY BEFORE + AS I STOOD THERE IMAGINE MY SURPRISE MR. HOLMES WHEN THE DOOR SUDDENLY OPENED AND MY WIFE WALKED OUT + QUOTE I WAS STRUCK DUMB WITH ASTONISHMENT AT THE SIGHT OF HER BUT MY EMOTIONS WERE NOTHING TO THOSE WHICH SHOWED THEMSELVES UPON HER FACE WHEN OUR EYES MET + SHE SEEMED FOR AN INSTANT TO WISH TO SHRINK BACK INSIDE THE HOUSE AGAIN AND THEN SEEING HOW USELESS ALL CONCEALMENT MUST BE SHE CAME FORWARD WITH A VERY WHITE FACE AND FRIGHTENED EYES WHICH BELIED THE SMILE UPON HER LIPS + AH JACK SHE SAID I HAVE JUST BEEN IN TO SEE IF I CAN BE OF ANY ASSISTANCE TO OUR NEW NEIGHBOURS + WHY DO YOU LOOK AT ME LIKE THAT JACK + YOU ARE NOT ANGRY WITH ME + SO SAID I THIS IS WHERE YOU WENT DURING THE NIGHT + WHAT DO YOU MEAN SHE CRIED + YOU CAME HERE + I AM SURE OF IT + WHO ARE THESE PEOPLE THAT YOU SHOULD VISIT THEM AT SUCH AN HOUR + I HAVE NOT BEEN HERE BEFORE + QUOTE HOW CAN YOU TELL ME WHAT YOU KNOW IS FALSE + I CRIED + YOUR VERY VOICE CHANGES AS YOU SPEAK + WHEN HAVE I EVER HAD A SECRET FROM YOU + I SHALL ENTER THAT COTTAGE AND I SHALL PROBE THE MATTER TO THE BOTTOM + NO NO JACK FOR GOD'S SAKE SHE GASPED IN UNCONTROLLABLE EMOTION + THEN AS I APPROACHED THE DOOR SHE SEIZED MY SLEEVE AND PULLED ME BACK WITH CONVULSIVE STRENGTH + I IMPLORE YOU NOT TO DO THIS JACK SHE CRIED + I SWEAR THAT I WILL TELL YOU EVERYTHING SOME DAY BUT NOTHING BUT MISERY CAN COME OF IT IF YOU ENTER THAT COTTAGE + THEN AS I TRIED TO SHAKE HER OFF SHE CLUNG TO ME IN A FRENZY OF ENTREATY + TRUST ME JACK SHE CRIED + TRUST ME ONLY THIS ONCE + YOU WILL NEVER HAVE CAUSE TO REGRET IT + YOU KNOW THAT I WOULD NOT HAVE A SECRET FROM YOU IF IT WERE NOT FOR YOUR OWN SAKE + OUR WHOLE LIVES ARE AT STAKE IN THIS + IF YOU COME HOME WITH ME ALL WILL BE WELL + IF YOU FORCE YOUR WAY INTO THAT COTTAGE ALL IS OVER BETWEEN US + THERE WAS SUCH EARNESTNESS SUCH DESPAIR IN HER MANNER THAT HER WORDS ARRESTED ME AND I STOOD IRRESOLUTE BEFORE THE DOOR + I WILL TRUST YOU ON ONE CONDITION AND ON ONE CONDITION ONLY SAID I AT LAST + IT IS THAT THIS MYSTERY COMES TO AN END FROM NOW + YOU ARE AT LIBERTY TO PRESERVE YOUR SECRET BUT YOU MUST PROMISE ME THAT THERE SHALL BE NO MORE NIGHTLY VISITS NO MORE DOINGS WHICH ARE KEPT FROM MY KNOWLEDGE + I AM WILLING TO FORGET THOSE WHICH ARE PAST IF YOU WILL PROMISE THAT THERE SHALL BE NO MORE IN THE FUTURE + QUOTE I WAS SURE THAT YOU WOULD TRUST ME SHE CRIED WITH A GREAT SIGH OF RELIEF + IT SHALL BE JUST AS YOU WISH + COME AWAY OH COME AWAY UP TO THE HOUSE + STILL PULLING AT MY SLEEVE SHE LED ME AWAY FROM THE COTTAGE + AS WE WENT I GLANCED BACK AND THERE WAS THAT YELLOW LIVID FACE WATCHING US OUT OF THE UPPER WINDOW + WHAT LINK COULD THERE BE BETWEEN THAT CREATURE AND MY WIFE + OR HOW COULD THE COARSE ROUGH WOMAN WHOM I HAD SEEN THE DAY BEFORE BE CONNECTED WITH HER + IT WAS A STRANGE PUZZLE AND YET I KNEW THAT MY MIND COULD NEVER KNOW EASE AGAIN UNTIL I HAD SOLVED IT + FOR TWO DAYS AFTER THIS I STAYED AT HOME AND MY WIFE APPEARED TO ABIDE LOYALLY BY OUR ENGAGEMENT FOR AS FAR AS I KNOW SHE NEVER STIRRED OUT OF THE HOUSE + ON THE THIRD DAY HOWEVER I HAD AMPLE EVIDENCE THAT HER SOLEMN PROMISE WAS NOT ENOUGH TO HOLD HER BACK FROM THIS SECRET INFLUENCE WHICH DREW HER AWAY FROM HER HUSBAND AND HER DUTY + I HAD GONE INTO TOWN ON THAT DAY BUT I RETURNED BY THE TWO FORTY INSTEAD OF THE THREE THIRTY SIX WHICH IS MY USUAL TRAIN + AS I ENTERED THE HOUSE THE MAID RAN INTO THE HALL WITH A STARTLED FACE + WHERE IS YOUR MISTRESS + I ASKED + I THINK THAT SHE HAS GONE OUT FOR A WALK SHE ANSWERED + QUOTE MY MIND WAS INSTANTLY FILLED WITH SUSPICION + I RUSHED UPSTAIRS TO MAKE SURE THAT SHE WAS NOT IN THE HOUSE + AS I DID SO I HAPPENED TO GLANCE OUT OF ONE OF THE UPPER WINDOWS AND SAW THE MAID WITH WHOM I HAD JUST BEEN SPEAKING RUNNING ACROSS THE FIELD IN THE DIRECTION OF THE COTTAGE + THEN OF COURSE I SAW EXACTLY WHAT IT ALL MEANT + MY WIFE HAD GONE OVER THERE AND HAD ASKED THE SERVANT TO CALL HER IF I SHOULD RETURN + TINGLING WITH ANGER I RUSHED DOWN AND HURRIED ACROSS DETERMINED TO END THE MATTER ONCE AND FOREVER + I SAW MY WIFE AND THE MAID HURRYING BACK ALONG THE LANE BUT I DID NOT STOP TO SPEAK WITH THEM + IN THE COTTAGE LAY THE SECRET WHICH WAS CASTING A SHADOW OVER MY LIFE + I VOWED THAT COME WHAT MIGHT IT SHOULD BE A SECRET NO LONGER + I DID NOT EVEN KNOCK WHEN I REACHED IT BUT TURNED THE HANDLE AND RUSHED INTO THE PASSAGE + IT WAS ALL STILL AND QUIET UPON THE GROUND FLOOR + IN THE KITCHEN A KETTLE WAS SINGING ON THE FIRE AND A LARGE BLACK CAT LAY COILED UP IN THE BASKET BUT THERE WAS NO SIGN OF THE WOMAN WHOM I HAD SEEN BEFORE + I RAN INTO THE OTHER ROOM BUT IT WAS EQUALLY DESERTED + THEN I RUSHED UP THE STAIRS ONLY TO FIND TWO OTHER ROOMS EMPTY AND DESERTED AT THE TOP + THERE WAS NO ONE AT ALL IN THE WHOLE HOUSE + THE FURNITURE AND PICTURES WERE OF THE MOST COMMON AND VULGAR DESCRIPTION SAVE IN THE ONE CHAMBER AT THE WINDOW OF WHICH I HAD SEEN THE STRANGE FACE + THAT WAS COMFORTABLE AND ELEGANT AND ALL MY SUSPICIONS ROSE INTO A FIERCE BITTER FLAME WHEN I SAW THAT ON THE MANTELPIECE STOOD A COPY OF A FULL LENGTH PHOTOGRAPH OF MY WIFE WHICH HAD BEEN TAKEN AT MY REQUEST ONLY THREE MONTHS AGO + I STAYED LONG ENOUGH TO MAKE CERTAIN THAT THE HOUSE WAS ABSOLUTELY EMPTY + THEN I LEFT IT FEELING A WEIGHT AT MY HEART SUCH AS I HAD NEVER HAD BEFORE + MY WIFE CAME OUT INTO THE HALL AS I ENTERED MY HOUSE BUT I WAS TOO HURT AND ANGRY TO SPEAK WITH HER AND PUSHING PAST HER I MADE MY WAY INTO MY STUDY + SHE FOLLOWED ME HOWEVER BEFORE I COULD CLOSE THE DOOR + I AM SORRY THAT I BROKE MY PROMISE JACK SAID SHE BUT IF YOU KNEW ALL THE CIRCUMSTANCES I AM SURE THAT YOU WOULD FORGIVE ME + TELL ME EVERYTHING THEN SAID I + I CANNOT JACK I CANNOT SHE CRIED + QUOTE UNTIL YOU TELL ME WHO IT IS THAT HAS BEEN LIVING IN THAT COTTAGE AND WHO IT IS TO WHOM YOU HAVE GIVEN THAT PHOTOGRAPH THERE CAN NEVER BE ANY CONFIDENCE BETWEEN US SAID I AND BREAKING AWAY FROM HER I LEFT THE HOUSE + THAT WAS YESTERDAY MR. HOLMES AND I HAVE NOT SEEN HER SINCE NOR DO I KNOW ANYTHING MORE ABOUT THIS STRANGE BUSINESS + IT IS THE FIRST SHADOW THAT HAS COME BETWEEN US AND IT HAS SO SHAKEN ME THAT I DO NOT KNOW WHAT I SHOULD DO FOR THE BEST + SUDDENLY THIS MORNING IT OCCURRED TO ME THAT YOU WERE THE MAN TO ADVISE ME SO I HAVE HURRIED TO YOU NOW AND I PLACE MYSELF UNRESERVEDLY IN YOUR HANDS + IF THERE IS ANY POINT WHICH I HAVE NOT MADE CLEAR PRAY QUESTION ME ABOUT IT + BUT ABOVE ALL TELL ME QUICKLY WHAT I AM TO DO. FOR THIS MISERY IS MORE THAN I CAN BEAR + HOLMES AND I HAD LISTENED WITH THE UTMOST INTEREST TO THIS EXTRAORDINARY STATEMENT WHICH HAD BEEN DELIVERED IN THE JERKY BROKEN FASHION OF A MAN WHO IS UNDER THE INFLUENCE OF EXTREME EMOTION + MY COMPANION SAT SILENT NOW FOR SOME TIME WITH HIS CHIN UPON HIS HAND LOST IN THOUGHT + TELL ME SAID HE AT LAST COULD YOU SWEAR THAT THIS WAS A MAN'S FACE WHICH YOU SAW AT THE WINDOW + EACH TIME THAT I SAW IT I WAS SOME DISTANCE AWAY FROM IT SO THAT IT IS IMPOSSIBLE FOR ME TO SAY + YOU APPEAR HOWEVER TO HAVE BEEN DISAGREEABLY IMPRESSED BY IT + IT SEEMED TO BE OF AN UNUSUAL COLOUR AND TO HAVE A STRANGE RIGIDITY ABOUT THE FEATURES + WHEN I APPROACHED IT VANISHED WITH A JERK QUOTE + HOW LONG IS IT SINCE YOUR WIFE ASKED YOU FOR A HUNDRED POUNDS + NEARLY TWO MONTHS + HAVE YOU EVER SEEN A PHOTOGRAPH OF HER FIRST HUSBAND + NO THERE WAS A GREAT FIRE AT ATLANTA VERY SHORTLY AFTER HIS DEATH AND ALL HER PAPERS WERE DESTROYED + AND YET SHE HAD A CERTIFICATE OF DEATH + YOU SAY THAT YOU SAW IT QUOTE + YES SHE GOT A DUPLICATE AFTER THE FIRE + DID YOU EVER MEET ANYONE WHO KNEW HER IN AMERICA + NUMBER + DID SHE EVER TALK OF REVISITING THE PLACE + NUMBER + QUOTE OR GET LETTERS FROM IT QUOTE + NUMBER + THANK YOU + I SHOULD LIKE TO THINK OVER THE MATTER A LITTLE NOW + IF THE COTTAGE IS NOW PERMANENTLY DESERTED WE MAY HAVE SOME DIFFICULTY + IF ON THE OTHER HAND AS I FANCY IS MORE LIKELY THE INMATES WERE WARNED OF YOUR COMING AND LEFT BEFORE YOU ENTERED YESTERDAY THEN THEY MAY BE BACK NOW AND WE SHOULD CLEAR IT ALL UP EASILY + LET ME ADVISE YOU THEN TO RETURN TO NORBURY AND TO EXAMINE THE WINDOWS OF THE COTTAGE AGAIN + IF YOU HAVE REASON TO BELIEVE THAT IT IS INHABITED DO NOT FORCE YOUR WAY IN BUT SEND A WIRE TO MY FRIEND AND ME + WE SHALL BE WITH YOU WITHIN AN HOUR OF RECEIVING IT AND WE SHALL THEN VERY SOON GET TO THE BOTTOM OF THE BUSINESS + AND IF IT IS STILL EMPTY + IN THAT CASE I SHALL COME OUT TO MORROW AND TALK IT OVER WITH YOU + GOOD BYE AND ABOVE ALL DO NOT FRET UNTIL YOU KNOW THAT YOU REALLY HAVE A CAUSE FOR IT QUOTE + I AM AFRAID THAT THIS IS A BAD BUSINESS WATSON SAID MY COMPANION AS HE RETURNED AFTER ACCOMPANYING MR. GRANT MUNRO TO THE DOOR + WHAT DO YOU MAKE OF IT + IT HAD AN UGLY SOUND I ANSWERED + YES + THERE'S BLACKMAIL IN IT OR I AM MUCH MISTAKEN + QUOTE AND WHO IS THE BLACKMAILER QUOTE + WELL IT MUST BE THE CREATURE WHO LIVES IN THE ONLY COMFORTABLE ROOM IN THE PLACE AND HAS HER PHOTOGRAPH ABOVE HIS FIREPLACE + UPON MY WORD WATSON THERE IS SOMETHING VERY ATTRACTIVE ABOUT THAT LIVID FACE AT THE WINDOW AND I WOULD NOT HAVE MISSED THE CASE FOR WORLDS + YOU HAVE A THEORY + YES A PROVISIONAL ONE + BUT I SHALL BE SURPRISED IF IT DOES NOT TURN OUT TO BE CORRECT + THIS WOMAN'S FIRST HUSBAND IS IN THAT COTTAGE + QUOTE WHY DO YOU THINK SO QUOTE + HOW ELSE CAN WE EXPLAIN HER FRENZIED ANXIETY THAT HER SECOND ONE SHOULD NOT ENTER IT + THE FACTS AS I READ THEM ARE SOMETHING LIKE THIS THIS WOMAN WAS MARRIED IN AMERICA + HER HUSBAND DEVELOPED SOME HATEFUL QUALITIES OR SHALL WE SAY HE CONTRACTED SOME LOATHSOME DISEASE AND BECAME A LEPER OR AN IMBECILE + SHE FLIES FROM HIM AT LAST RETURNS TO ENGLAND CHANGES HER NAME AND STARTS HER LIFE AS SHE THINKS AFRESH + SHE HAS BEEN MARRIED THREE YEARS AND BELIEVES THAT HER POSITION IS QUITE SECURE HAVING SHOWN HER HUSBAND THE DEATH CERTIFICATE OF SOME MAN WHOSE NAME SHE HAS ASSUMED WHEN SUDDENLY HER WHEREABOUTS IS DISCOVERED BY HER FIRST HUSBAND OR WE MAY SUPPOSE BY SOME UNSCRUPULOUS WOMAN WHO HAS ATTACHED HERSELF TO THE INVALID + THEY WRITE TO THE WIFE AND THREATEN TO COME AND EXPOSE HER + SHE ASKS FOR A HUNDRED POUNDS AND ENDEAVOURS TO BUY THEM OFF + THEY COME IN SPITE OF IT AND WHEN THE HUSBAND MENTIONS CASUALLY TO THE WIFE THAT THERE ARE NEWCOMERS IN THE COTTAGE SHE KNOWS IN SOME WAY THAT THEY ARE HER PURSUERS + SHE WAITS UNTIL HER HUSBAND IS ASLEEP AND THEN SHE RUSHES DOWN TO ENDEAVOUR TO PERSUADE THEM TO LEAVE HER IN PEACE + HAVING NO SUCCESS SHE GOES AGAIN NEXT MORNING AND HER HUSBAND MEETS HER AS HE HAS TOLD US AS SHE COMES OUT + SHE PROMISES HIM THEN NOT TO GO THERE AGAIN BUT TWO DAYS AFTERWARDS THE HOPE OF GETTING RID OF THOSE DREADFUL NEIGHBOURS WAS TOO STRONG FOR HER AND SHE MADE ANOTHER ATTEMPT TAKING DOWN WITH HER THE PHOTOGRAPH WHICH HAD PROBABLY BEEN DEMANDED FROM HER + IN THE MIDST OF THIS INTERVIEW THE MAID RUSHED IN TO SAY THAT THE MASTER HAD COME HOME ON WHICH THE WIFE KNOWING THAT HE WOULD COME STRAIGHT DOWN TO THE COTTAGE HURRIED THE INMATES OUT AT THE BACK DOOR INTO THE GROVE OF FIR TREES PROBABLY WHICH WAS MENTIONED AS STANDING NEAR + IN THIS WAY HE FOUND THE PLACE DESERTED + I SHALL BE VERY MUCH SURPRISED HOWEVER IF IT IS STILL SO WHEN HE RECONNOITRES IT THIS EVENING + WHAT DO YOU THINK OF MY THEORY + IT IS ALL SURMISE + BUT AT LEAST IT COVERS ALL THE FACTS + WHEN NEW FACTS COME TO OUR KNOWLEDGE WHICH CANNOT BE COVERED BY IT IT WILL BE TIME ENOUGH TO RECONSIDER IT + WE CAN DO NOTHING MORE UNTIL WE HAVE A MESSAGE FROM OUR FRIEND AT NORBURY + BUT WE HAD NOT A VERY LONG TIME TO WAIT FOR THAT + IT CAME JUST AS WE HAD FINISHED OUR TEA + THE COTTAGE IS STILL TENANTED IT SAID + HAVE SEEN THE FACE AGAIN AT THE WINDOW + WILL MEET THE SEVEN O'CLOCK TRAIN AND WILL TAKE NO STEPS UNTIL YOU ARRIVE + HE WAS WAITING ON THE PLATFORM WHEN WE STEPPED OUT AND WE COULD SEE IN THE LIGHT OF THE STATION LAMPS THAT HE WAS VERY PALE AND QUIVERING WITH AGITATION + QUOTE THEY ARE STILL THERE MR. HOLMES QUOTE SAID HE LAYING HIS HAND HARD UPON MY FRIEND'S SLEEVE + I SAW LIGHTS IN THE COTTAGE AS I CAME DOWN + WE SHALL SETTLE IT NOW ONCE AND FOR ALL + WHAT IS YOUR PLAN THEN ASKED HOLMES AS HE WALKED DOWN THE DARK TREE LINED ROAD + I AM GOING TO FORCE MY WAY IN AND SEE FOR MYSELF WHO IS IN THE HOUSE + I WISH YOU BOTH TO BE THERE AS WITNESSES + QUOTE YOU ARE QUITE DETERMINED TO DO THIS IN SPITE OF YOUR WIFE'S WARNING THAT IT IS BETTER THAT YOU SHOULD NOT SOLVE THE MYSTERY QUOTE + YES I AM DETERRNINED + WELL I THINK THAT YOU ARE IN THE RIGHT + ANY TRUTH IS BETTER THAN INDEFINITE DOUBT + WE HAD BETTER GO UP AT ONCE + OF COURSE LEGALLY WE ARE PUTTING OURSELVES HOPELESSLY IN THE WRONG BUT I THINK THAT IT IS WORTH IT + IT WAS A VERY DARK NIGHT AND A THIN RAIN BEGAN TO FALL AS WE TURNED FROM THE HIGHROAD INTO A NARROW LANE DEEPLY RUTTED WITH HEDGES ON EITHER SIDE + MR. GRANT MUNRO PUSHED IMPATIENTLY FORWARD HOWEVER AND WE STUMBLED AFTER HIM AS BEST WE COULD + THERE ARE THE LIGHTS OF MY HOUSE HE MURMURED POINTING TO A GLIMMER AMONG THE TREES + AND HERE IS THE COTTAGE WHICH I AM GOING TO ENTER + WE TURNED A CORNER IN THE LANE AS HE SPOKE AND THERE WAS THE BUILDING CLOSE BESIDE US + A YELLOW BAR FALLING ACROSS THE BLACK FOREGROUND SHOWED THAT THE DOOR WAS NOT QUITE CLOSED AND ONE WINDOW IN THE UPPER STORY WAS BRIGHTLY ILLUMINATED + AS WE LOOKED WE SAW A DARK BLUR MOVING ACROSS THE BLIND + QUOTE THERE IS THAT CREATURE QUOTE CRIED GRANT MUNRO + YOU CAN SEE FOR YOURSELVES THAT SOMEONE IS THERE + NOW FOLLOW ME AND WE SHALL SOON KNOW ALL + WE APPROACHED THE DOOR BUT SUDDENLY A WOMAN APPEARED OUT OF THE SHADOW AND STOOD IN THE GOLDEN TRACK OF THE LAMPLIGHT + I COULD NOT SEE HER FACE IN THE DARKNESS BUT HER ARMS WERE THROWN OUT IN AN ATTITUDE OF ENTREATY + FOR GOD'S SAKE DON'T JACK SHE CRIED + I HAD A PRESENTIMENT THAT YOU WOULD COME THIS EVENING + THINK BETTER OF IT DEAR + TRUST ME AGAIN AND YOU WILL NEVER HAVE CAUSE TO REGRET IT + QUOTE I HAVE TRUSTED YOU TOO LONG EFFIE QUOTE HE CRIED STERNLY + LEAVE GO OF ME + I MUST PASS YOU + MY FRIENDS AND I ARE GOING TO SETTLE THIS MATTER ONCE AND FOREVER + HE PUSHED HER TO ONE SIDE AND WE FOLLOWED CLOSELY AFTER HIM + AS HE THREW THE DOOR OPEN AN OLD WOMAN RAN OUT IN FRONT OF HIM AND TRIED TO BAR HIS PASSAGE BUT HE THRUST HER BACK AND AN INSTANT AFTERWARDS WE WERE ALL UPON THE STAIRS + GRANT MUNRO RUSHED INTO THE LIGHTED ROOM AT THE TOP AND WE ENTERED AT HIS HEELS + IT WAS A COSY WELL FURNISHED APARTMENT WITH TWO CANDLES BURNING UPON THE TABLE AND TWO UPON THE MANTELPIECE + IN THE CORNER STOOPING OVER A DESK THERE SAT WHAT APPEARED TO BE A LITTLE GIRL + HER FACE WAS TURNED AWAY AS WE ENTERED BUT WE COULD SEE THAT SHE WAS DRESSED IN A RED FROCK AND THAT SHE HAD LONG WHITE GLOVES ON + AS SHE WHISKED ROUND TO US I GAVE A CRY OF SURPRISE AND HORROR + THE FACE WHICH SHE TURNED TOWARDS US WAS OF THE STRANGEST LIVID TINT AND THE FEATURES WERE ABSOLUTELY DEVOID OF ANY EXPRESSION + AN INSTANT LATER THE MYSTERY WAS EXPLAINED + HOLMES WITH A LAUGH PASSED HIS HAND BEHIND THE CHILD'S EAR A MASK PEELED OFF FROM HER COUNTENANCE AND THERE WAS A LITTLE COAL BLACK NEGRESS WITH ALL HER WHITE TEETH FLASHING IN AMUSEMENT AT OUR AMAZED FACES + I BURST OUT LAUGHING OUT OF SYMPATHY WITH HER MERRIMENT BUT GRANT MUNRO STOOD STARING WITH HIS HAND CLUTCHING HIS THROAT + MY GOD HE CRIED + WHAT CAN BE THE MEANING OF THIS + I WILL TELL YOU THE MEANING OF IT CRIED THE LADY SWEEPING INTO THE ROOM WITH A PROUD SET FACE + QUOTE YOU HAVE FORCED ME AGAINST MY OWN JUDGMENT TO TELL YOU AND NOW WE MUST BOTH MAKE THE BEST OF IT + MY HUSBAND DIED AT ATLANTA + MY CHILD SURVIVED + YOUR CHILD + SHE DREW A LARGE SILVER LOCKET FROM HER BOSOM + YOU HAVE NEVER SEEN THIS OPEN + I UNDERSTOOD THAT IT DID NOT OPEN + SHE TOUCHED A SPRING AND THE FRONT HINGED BACK + THERE WAS A PORTRAIT WITHIN OF A MAN STRIKINGLY HANDSOME AND INTELLIGENTLOOKING BUT BEARING UNMISTAKABLE SIGNS UPON HIS FEATURES OF HIS AFRICAN DESCENT + THAT IS JOHN HEBRON OF ATLANTA SAID THE LADY AND A NOBLER MAN NEVER WALKED THE EARTH + I CUT MYSELF OFF FROM MY RACE IN ORDER TO WED HIM BUT NEVER ONCE WHILE HE LIVED DID I FOR AN INSTANT REGRET IT + IT WAS OUR MISFORTUNE THAT OUR ONLY CHILD TOOK AFTER HIS PEOPLE RATHER THAN MINE + IT IS OFTEN SO IN SUCH MATCHES AND LITTLE LUCY IS DARKER FAR THAN EVER HER FATHER WAS + BUT DARK OR FAIR SHE IS MY OWN DEAR LITTLE GIRLIE AND HER MOTHER'S PET QUOTE + THE LITTLE CREATURE RAN ACROSS AT THE WORDS AND NESTLED UP AGAINST THE LADY'S DRESS + WHEN I LEFT HER IN AMERICA SHE CONTINUED IT WAS ONLY BECAUSE HER HEALTH WAS WEAK AND THE CHANGE MIGHT HAVE DONE HER HARM + SHE WAS GIVEN TO THE CARE OF A FAITHFUL SCOTCH WOMAN WHO HAD ONCE BEEN OUR SERVANT + NEVER FOR AN INSTANT DID I DREAM OF DISOWNING HER AS MY CHILD + BUT WHEN CHANCE THREW YOU IN MY WAY JACK AND I LEARNED TO LOVE YOU I FEARED TO TELL YOU ABOUT MY CHILD + GOD FORGIVE ME I FEARED THAT I SHOULD LOSE YOU AND I HAD NOT THE COURAGE TO TELL YOU + I HAD TO CHOOSE BETWEEN YOU AND IN MY WEAKNESS I TURNED AWAY FROM MY OWN LITTLE GIRL + FOR THREE YEARS I HAVE KEPT HER EXISTENCE A SECRET FROM YOU BUT I HEARD FROM THE NURSE AND I KNEW THAT ALL WAS WELL WITH HER + AT LAST HOWEVER THERE CAME AN OVERWHELMING DESIRE TO SEE THE CHILD ONCE MORE + I STRUGGLED AGAINST IT BUT IN VAIN + THOUGH I KNEW THE DANGER I DETERMINED TO HAVE THE CHILD OVER IF IT WERE BUT FOR A FEW WEEKS + I SENT A HUNDRED POUNDS TO THE NURSE AND I GAVE HER INSTRUCTIONS ABOUT THIS COTTAGE SO THAT SHE MIGHT COME AS A NEIGHBOUR WITHOUT MY APPEARING TO BE IN ANY WAY CONNECTED WITH HER + I PUSHED MY PRECAUTIONS SO FAR AS TO ORDER HER TO KEEP THE CHILD IN THE HOUSE DURING THE DAYTIME AND TO COVER UP HER LITTLE FACE AND HANDS SO THAT EVEN THOSE WHO MIGHT SEE HER AT THE WINDOW SHOULD NOT GOSSIP ABOUT THERE BEING A BLACK CHILD IN THE NEIGHBOURHOOD + IF I HAD BEEN LESS CAUTIOUS I MIGHT HAVE BEEN MORE WISE. BUT I WAS HALF CRAZY WITH FEAR THAT YOU SHOULD LEARN THE TRUTH + IT WAS YOU WHO TOLD ME FIRST THAT THE COTTAGE WAS OCCUPIED + I SHOULD HAVE WAITED FOR THE MORNING BUT I COULD NOT SLEEP FOR EXCITEMENT AND SO AT LAST I SLIPPED OUT KNOWING HOW DIFFICULT IT IS TO AWAKE YOU + BUT YOU SAW ME GO AND THAT WAS THE BEGINNING OF MY TROUBLES + NEXT DAY YOU HAD MY SECRET AT YOUR MERCY BUT YOU NOBLY REFRAINED FROM PURSUING YOUR ADVANTAGE + THREE DAYS LATER HOWEVER THE NURSE AND CHILD ONLY JUST ESCAPED FROM THE BACK DOOR AS YOU RUSHED IN AT THE FRONT ONE + AND NOW TO NIGHT YOU AT LAST KNOW ALL AND I ASK YOU WHAT IS TO BECOME OF US MY CHILD AND ME + SHE CLASPED HER HANDS AND WAITED FOR AN ANSWER + IT WAS A LONG TEN MINUTES BEFORE GRANT MUNRO BROKE THE SILENCE AND WHEN HIS ANSWER CAME IT WAS ONE OF WHICH I LOVE TO THINK + HE LIFTED THE LITTLE CHILD KISSED HER AND THEN STILL CARRYING HER HE HELD HIS OTHER HAND OUT TO HIS WIFE AND TURNED TOWARDS THE DOOR + WE CAN TALK IT OVER MORE COMFORTABLY AT HOME SAID HE + I AM NOT A VERY GOOD MAN EFFIE BUT I THINK THAT I AM A BETTER ONE THAN YOU HAVE GIVEN ME CREDIT FOR BEING + HOLMES AND I FOLLOWED THEM DOWN THE LANE AND MY FRIEND PLUCKED AT MY SLEEVE AS WE CAME OUT + I THINK SAID HE THAT WE SHALL BE OF MORE USE IN LONDON THAN IN NORBURY + NOT ANOTHER WORD DID HE SAY OF THE CASE UNTIL LATE THAT NIGHT WHEN HE WAS TURNING AWAY WITH HIS LIGHTED CANDLE FOR HIS BEDROOM + QUOTE WATSON QUOTE SAID HE QUOTE IF IT SHOULD EVER STRIKE YOU THAT I AM GETTING A LITTLE OVERCONFIDENT IN MY POWERS OR GIVING LESS PAINS TO A CASE THAN IT DESERVES KINDLY WHISPER NORBURY IN MY EAR AND I SHALL BE INFINITELY OBLIGED TO YOU QUOTE diff --git a/samples/RMHTK/environment b/samples/RMHTK/environment new file mode 100755 index 0000000..ab7048f --- /dev/null +++ b/samples/RMHTK/environment @@ -0,0 +1,29 @@ +############################################################ +# Environment +############################################################ + +HTKSRC=$PWD + +# recipe directory +RMHTK=$HTKSRC/samples/RMHTK + +# location of HTK binaries +HTKBIN=$HTKSRC/bin +BINDIR=$HTKBIN + +# locations of the Resource Management data +export RMCD1=/data/ldc/LDC1993S3B/rm1_audio1 +export RMCD2=/data/ldc/LDC1993S3B/rm1_audio2/2_4_2 + +# local work directories +RMWORKBASE=$HTKSRC/RM/releaseA +export RMDATA="$RMWORKBASE/data" +export RMLIB="$RMWORKBASE/lib" +export RMWORK="$RMWORKBASE/exp" + +# directory containing these scripts +RMVALIDATEDIR=$RMWORKBASE/steps + +# add all necessary paths +export PATH="$HTKBIN:$RMHTK/scripts:$RMHTK/python_scripts:$PATH" +export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64" diff --git a/samples/RMHTK/lib/awks/full.list.awk b/samples/RMHTK/lib/awks/full.list.awk new file mode 100755 index 0000000..e7db521 --- /dev/null +++ b/samples/RMHTK/lib/awks/full.list.awk @@ -0,0 +1,15 @@ +{ + ph[++np]=$1; +} +END { + printf("sil\nsp\n"); + ph[++np]="sil"; + for (j=1;j990) + links=1; + else if (!ln) { + printf("N=%d L=%d\n",nn,nl); + stwd="!SENT_START"; + printf("I=%-4d W=%s\n",0,stwd); + enwd="!SENT_END"; + word="SENTENCE-END"; + num[word]=1; words[1]=word; + printf("I=%-4d W=%s\n",1,enwd); + ln=2; + } + } + else if (links) { + if (substr($1,1,1)==">") { + word=substr($1,2,length($1)-1); + } + else { + like=-log(nfoll[word]); + if (word=="SENTENCE-END") + printf("J=%-5d S=%-4d E=%-4d l=%.4f\n",la,0,num[$1],like); + else + printf("J=%-5d S=%-4d E=%-4d l=%.4f\n",la,num[word],num[$1],like); + la++; + } + } + else if (ln) { + if (substr($1,1,1)==">") { + word=substr($1,2,length($1)-1); + nfoll[word]=0; + if (num[word]) { + n=num[word]; + } + else { + n=ln; + num[word]=ln++; + printf("I=%-4d W=%s\n",n,word); + } + } + else + nfoll[word]++; + } + +} diff --git a/samples/RMHTK/lib/configs/config.adapt b/samples/RMHTK/lib/configs/config.adapt new file mode 100755 index 0000000..6b657b3 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.adapt @@ -0,0 +1,2 @@ +FORCEOUT = TRUE +TARGETKIND = MFCC_E_D_A diff --git a/samples/RMHTK/lib/configs/config.basic b/samples/RMHTK/lib/configs/config.basic new file mode 100755 index 0000000..1af4362 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.basic @@ -0,0 +1,6 @@ + TARGETKIND = MFCC_E_D_A # Basic parameterisation +#TARGETKIND = MFCC_E_D_A_V # VQ parameterisation +#VQTABLE = vq.table # VQ table + HNET:TRACE = 1 # Want this for recognition +#FORCECXTEXP = T # Needed for cross word systems +HMODEL: SAVEBINARY = T diff --git a/samples/RMHTK/lib/configs/config.cmllr b/samples/RMHTK/lib/configs/config.cmllr new file mode 100755 index 0000000..622c76d --- /dev/null +++ b/samples/RMHTK/lib/configs/config.cmllr @@ -0,0 +1,14 @@ + + HADAPT:TRACE = 61 + + HADAPT:TRANSKIND = CMLLR + HADAPT:USEBIAS = TRUE + HADAPT:REGTREE = regtree_2.tree + HADAPT:ADAPTKIND = TREE + HADAPT:SPLITTHRESH = 1000.0 + HADAPT:BLOCKSIZE = "IntVec 3 13 13 13" + + HMODEL:SAVEBINARY = FALSE + HMODEL:TRACE = 512 + + diff --git a/samples/RMHTK/lib/configs/config.code b/samples/RMHTK/lib/configs/config.code new file mode 100755 index 0000000..c5ea5d3 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.code @@ -0,0 +1,52 @@ + SOURCEKIND = WAVEFORM + SOURCEFORMAT = NIST + SOURCERATE = 625 + + ZMEANSOURCE = FALSE + TARGETKIND = MFCC_E +#TARGETFORMAT = HTK + TARGETRATE = 100000 + + SAVECOMPRESSED = TRUE +#SAVEWITHCRC = TRUE + + WINDOWSIZE = 250000.0 +#USEHAMMING = TRUE +#PREEMCOEF = 0.97 + +#USEPOWER = FALSE + NUMCHANS = 24 +#LOFREQ = -1.0 +#HIFREQ = -1.0 + +#LPCORDER = 12 + +#CEPLIFTER = 22 +#NUMCEPS = 12 + +#RAWENERGY = TRUE + ENORMALISE = TRUE + ESCALE = 1.0 +#SILFLOOR = 50.0 + +#DELTAWINDOW = 2 +#ACCWINDOW = 2 +#SIMPLEDIFFS = FALSE + +#USESILDET = TRUE +#SPEECHTHRESH = 0.0 +#SILTHRESH = 0.0 +#MEASURESIL = TRUE + +#OUTSILWARN = TRUE +#SILMEAN = 0.0 +#SILSTD = 0.0 +#AUDIOSIG = 0 +#V1COMPAT = FALSE +#VQTABLE = "" + +HWAVEFILTER = "w_decode -opcm $ -" +# for pcm use 1.0 +HPARM:ADDDITHER = 1.0 +# for mu-low use 0.2 +# HPARM:ADDDITHER = 0.2 diff --git a/samples/RMHTK/lib/configs/config.cov b/samples/RMHTK/lib/configs/config.cov new file mode 100755 index 0000000..40ff2e9 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.cov @@ -0,0 +1,14 @@ + + HADAPT:TRACE = 61 + + HADAPT:TRANSKIND = MLLRCOV + HADAPT:USEBIAS = FALSE + HADAPT:REGTREE = regtree_2.tree + HADAPT:ADAPTKIND = TREE + HADAPT:SPLITTHRESH = 1000.0 + HADAPT:BLOCKSIZE = "IntVec 3 13 13 13" + + HMODEL:SAVEBINARY = FALSE + HMODEL:TRACE = 512 + + diff --git a/samples/RMHTK/lib/configs/config.debug b/samples/RMHTK/lib/configs/config.debug new file mode 100755 index 0000000..f458486 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.debug @@ -0,0 +1,2 @@ +HMODEL:TRACE = 17 +HADAPT:TRACE = 17 diff --git a/samples/RMHTK/lib/configs/config.discrete b/samples/RMHTK/lib/configs/config.discrete new file mode 100755 index 0000000..d894b1c --- /dev/null +++ b/samples/RMHTK/lib/configs/config.discrete @@ -0,0 +1,3 @@ + TARGETKIND = MFCC_E_D_A_V + VQTABLE = vq.table + HNET:TRACE = 1 diff --git a/samples/RMHTK/lib/configs/config.dnn.hd b/samples/RMHTK/lib/configs/config.dnn.hd new file mode 100755 index 0000000..8487a83 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.dnn.hd @@ -0,0 +1,14 @@ +TARGETKIND = MFCC_E_D_A_Z # Basic parameterisation + +HPARM: VARSCALEDIR = cvn +HPARM: VARSCALEMASK = '*.%%%' +HPARM: VARSCALEPATHMASK = '*.%%%' +HPARM: VARSCALEFN = ident_MFCC_E_D_A_Z_cvn + +HLANGMODFILTER = 'gunzip -c $.gz' +HNETFILTER = 'gunzip -c $.gz' +HNETOFILTER = 'gzip -c > $.gz' +RAWMITFORMAT = T + +STARTWORD = !SENT_START +ENDWORD = !SENT_END diff --git a/samples/RMHTK/lib/configs/config.dnn.xwrd b/samples/RMHTK/lib/configs/config.dnn.xwrd new file mode 100755 index 0000000..c18eebf --- /dev/null +++ b/samples/RMHTK/lib/configs/config.dnn.xwrd @@ -0,0 +1,12 @@ +TARGETKIND = MFCC_E_D_A_Z # Basic parameterisation + +HPARM: VARSCALEDIR = cvn +HPARM: VARSCALEMASK = '*.%%%' +HPARM: VARSCALEPATHMASK = '*.%%%' +HPARM: VARSCALEFN = ident_MFCC_E_D_A_Z_cvn + +HNET:TRACE = 1 # Want this for recognition +ALLOWXWRDEXP = TRUE # Needed for cross word systems +FORCECXTEXP = TRUE # Needed for cross word systems + +HMODEL:TRACE = 512 # Enables tracking of transforms diff --git a/samples/RMHTK/lib/configs/config.dnnbasic b/samples/RMHTK/lib/configs/config.dnnbasic new file mode 100755 index 0000000..e04c436 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.dnnbasic @@ -0,0 +1,10 @@ +# DATATYPE = MFCC +# DATADIFF = _E_D_A_Z +# DATADIM = 13 * 3 +TARGETKIND = MFCC_E_D_A_Z # Basic parameterisation + +HPARM: VARSCALEDIR = cvn +HPARM: VARSCALEMASK = '*.%%%' +HPARM: VARSCALEPATHMASK = '*.%%%' +HPARM: VARSCALEFN = ident_MFCC_E_D_A_Z_cvn + diff --git a/samples/RMHTK/lib/configs/config.dnncvn b/samples/RMHTK/lib/configs/config.dnncvn new file mode 100755 index 0000000..9b4dd3c --- /dev/null +++ b/samples/RMHTK/lib/configs/config.dnncvn @@ -0,0 +1,5 @@ +# DATATYPE = MFCC +# DATADIFF = _E_D_A_Z +# DATADIM = 13 * 3 +TARGETKIND = MFCC_E_D_A_Z # Basic parameterisation + diff --git a/samples/RMHTK/lib/configs/config.hd b/samples/RMHTK/lib/configs/config.hd new file mode 100755 index 0000000..7ad180f --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hd @@ -0,0 +1,9 @@ +TARGETKIND = MFCC_E_D_A # Basic parameterisation + +HLANGMODFILTER = 'gunzip -c $.gz' +HNETFILTER = 'gunzip -c $.gz' +HNETOFILTER = 'gzip -c > $.gz' +RAWMITFORMAT = T + +STARTWORD = !SENT_START +ENDWORD = !SENT_END diff --git a/samples/RMHTK/lib/configs/config.hd.mod b/samples/RMHTK/lib/configs/config.hd.mod new file mode 100755 index 0000000..95e2c5f --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hd.mod @@ -0,0 +1 @@ +FORCELATOUT = F diff --git a/samples/RMHTK/lib/configs/config.hd.win b/samples/RMHTK/lib/configs/config.hd.win new file mode 100755 index 0000000..50b6bc8 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hd.win @@ -0,0 +1,6 @@ +TARGETKIND = MFCC_E_D_A # Basic parameterisation + +RAWMITFORMAT = T + +STARTWORD = !SENT_START +ENDWORD = !SENT_END diff --git a/samples/RMHTK/lib/configs/config.hlda b/samples/RMHTK/lib/configs/config.hlda new file mode 100755 index 0000000..e7efda9 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hlda @@ -0,0 +1,18 @@ + + HADAPT:TRACE = 61 + + HADAPT:TRANSKIND = SEMIT + HADAPT:USEBIAS = FALSE + HADAPT:BASECLASS = global + HADAPT:ADAPTKIND = BASE + HADAPT:SPLITTHRESH = 0.0 + HADAPT:SEMITIEDMACRO = HLDA + HADAPT:NUMNUISANCEDIM = 13 + HADAPT:SEMITIED2INPUTXFORM = TRUE + HADAPT:MAXXFORMITER = 100 + HADAPT:MAXSEMITIEDITER = 20 + + HMODEL:SAVEBINARY = FALSE + HMODEL:TRACE = 512 + + diff --git a/samples/RMHTK/lib/configs/config.hlm b/samples/RMHTK/lib/configs/config.hlm new file mode 100755 index 0000000..1a0b26e --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hlm @@ -0,0 +1,17 @@ + RAWMITFORMAT = TRUE + OUTCMAPRAW = TRUE + INCMAPRAW = TRUE + OUTWMAPRAW = TRUE + INWMAPRAW = TRUE +LPCALC: TRACE = 3 +LCMAP: UNKNOWNNAME = !!UNK +LCMAP: UNKNOWNID = 1 + LGRAMOFILTER = 'gzip -c > $.gz' + LGRAMFILTER = 'gunzip -c $' + HLANGMODOFILTER = 'gzip -c > $.gz' + HLANGMODFILTER = 'gunzip -c $.gz' + LMTEXTFILTER = 'gunzip -c $' + LCMAPOFILTER = 'gzip -c > $.gz' + LCMAPFILTER = 'gunzip -c $.gz' + LWMAPFILTER = 'gunzip -c $.gz' + LWMAPOFILTER = 'gzip -c > $.gz' diff --git a/samples/RMHTK/lib/configs/config.hlm.win b/samples/RMHTK/lib/configs/config.hlm.win new file mode 100755 index 0000000..4453df1 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hlm.win @@ -0,0 +1,8 @@ + RAWMITFORMAT = TRUE + OUTCMAPRAW = TRUE + INCMAPRAW = TRUE + OUTWMAPRAW = TRUE + INWMAPRAW = TRUE +LPCALC: TRACE = 3 +LCMAP: UNKNOWNNAME = !!UNK +LCMAP: UNKNOWNID = 1 diff --git a/samples/RMHTK/lib/configs/config.hlr b/samples/RMHTK/lib/configs/config.hlr new file mode 100755 index 0000000..99e07cd --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hlr @@ -0,0 +1,16 @@ +FIXBADLATS = T + +HLANGMODFILTER = 'gunzip -cd $.gz' +HNETOFILTER = 'gzip -c > $.gz' +HNETFILTER = 'gunzip -c $.gz' + +HLM:RAWMITFORMAT = T +HLM:TRACE = 1 + +HLAT: TRACE = 1 +# HLAT:TRACE = 27 +# HLAT:TRACE = 155 + +STARTWORD = !SENT_START +ENDWORD = !SENT_END + diff --git a/samples/RMHTK/lib/configs/config.hlr.win b/samples/RMHTK/lib/configs/config.hlr.win new file mode 100755 index 0000000..0155427 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.hlr.win @@ -0,0 +1,12 @@ +FIXBADLATS = T + +HLM:RAWMITFORMAT = T +HLM:TRACE = 1 + +HLAT: TRACE = 1 +# HLAT:TRACE = 27 +# HLAT:TRACE = 155 + +STARTWORD = !SENT_START +ENDWORD = !SENT_END + diff --git a/samples/RMHTK/lib/configs/config.logxwrd b/samples/RMHTK/lib/configs/config.logxwrd new file mode 100755 index 0000000..d187874 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.logxwrd @@ -0,0 +1,11 @@ + TARGETKIND = MFCC_E_D_A # Basic parameterisation +#TARGETKIND = MFCC_E_D_A_V # VQ parameterisation +#VQTABLE = vq.table # VQ table + HNET:TRACE = 1 # Want this for recognition + ALLOWXWRDEXP = T # Needed for cross word systems + FORCECXTEXP = T # Needed for cross word systems + +HMODEL:TRACE = 512 # Enables tracking of transforms + +HNET: MARKLOGHMM = TRUE # Produce logical triphone labels suitable for HMMs with any clustering + diff --git a/samples/RMHTK/lib/configs/config.mfc.uncompress b/samples/RMHTK/lib/configs/config.mfc.uncompress new file mode 100644 index 0000000..649967a --- /dev/null +++ b/samples/RMHTK/lib/configs/config.mfc.uncompress @@ -0,0 +1,5 @@ +TARGETKIND = MFCC_E_D_A +NATURALWRITEORDER = TRUE +SAVEWITHCRC = FALSE +SAVECOMPRESSED = FALSE + diff --git a/samples/RMHTK/lib/configs/config.mllr b/samples/RMHTK/lib/configs/config.mllr new file mode 100755 index 0000000..39c6291 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.mllr @@ -0,0 +1,14 @@ + + HADAPT:TRACE = 61 + + HADAPT:TRANSKIND = MLLRMEAN + HADAPT:USEBIAS = TRUE + HADAPT:REGTREE = regtree_2.tree + HADAPT:ADAPTKIND = TREE + HADAPT:SPLITTHRESH = 1000.0 + HADAPT:BLOCKSIZE = "IntVec 3 13 13 13" + + HMODEL:SAVEBINARY = FALSE + HMODEL:TRACE = 512 + + diff --git a/samples/RMHTK/lib/configs/config.mlp.uncompress b/samples/RMHTK/lib/configs/config.mlp.uncompress new file mode 100644 index 0000000..17c3844 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.mlp.uncompress @@ -0,0 +1,5 @@ +TARGETKIND = USER +NATURALWRITEORDER = TRUE +SAVEWITHCRC = FALSE +SAVECOMPRESSED = FALSE + diff --git a/samples/RMHTK/lib/configs/config.mmi b/samples/RMHTK/lib/configs/config.mmi new file mode 100755 index 0000000..9430217 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.mmi @@ -0,0 +1,22 @@ +# ------------------------------------------------------------- +# general +# ------------------------------------------------------------- + +HPARM: TARGETKIND = MFCC_E_D_A + +SAVEBINARY = T + +# ------------------------------------------------------------- +# MMI +# ------------------------------------------------------------- + +LATMASKNUM = %%%%%%* +LATMASKDEN = %%%%%%* + +HMMIREST:TRACE = 1 +ABORTONERR = TRUE + +HNETFILTER = 'gunzip -c < $.gz' + +E = 2.0 +LATPROBSCALE = 0.142857 \ No newline at end of file diff --git a/samples/RMHTK/lib/configs/config.mpe b/samples/RMHTK/lib/configs/config.mpe new file mode 100755 index 0000000..9e8fc3b --- /dev/null +++ b/samples/RMHTK/lib/configs/config.mpe @@ -0,0 +1,31 @@ +# ------------------------------------------------------------- +# general +# ------------------------------------------------------------- + +HPARM: TARGETKIND = MFCC_E_D_A + +SAVEBINARY = T + +# ------------------------------------------------------------- +# MMI +# ------------------------------------------------------------- + +LATMASKNUM = %%%%%%* +LATMASKDEN = %%%%%%* + +HMMIREST:TRACE = 1 +ABORTONERR = TRUE + +HNETFILTER = 'gunzip -c < $.gz' + +E = 2.0 +LATPROBSCALE = 0.142857 +MPE = TRUE +ISMOOTHTAU = 70 +ISMOOTHTAUT = 1 +ISMOOTHTAUW = 1 + +VARFLOORPERCENTILE = 20 +MMITAUI = 50 +MMIPRIOR = TRUE + diff --git a/samples/RMHTK/lib/configs/config.mpe.win b/samples/RMHTK/lib/configs/config.mpe.win new file mode 100755 index 0000000..f1aaab7 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.mpe.win @@ -0,0 +1,24 @@ +# ------------------------------------------------------------- +# general +# ------------------------------------------------------------- + +HPARM: TARGETKIND = MFCC_E_D_A + +SAVEBINARY = T + +# ------------------------------------------------------------- +# MMI +# ------------------------------------------------------------- + +LATMASKNUM = *\%\%\%\%\%\%_*.mfc +LATMASKDEN = *\%\%\%\%\%\%_*.mfc + +HMMIREST:TRACE = 1 +ABORTONERR = TRUE + +E = 2.0 +LATPROBSCALE = 0.142857 +MPE = TRUE +ISMOOTHTAU = 50 +ISMOOTHTAUT = 1 +ISMOOTHTAUW = 1 diff --git a/samples/RMHTK/lib/configs/config.semit b/samples/RMHTK/lib/configs/config.semit new file mode 100755 index 0000000..dde6f76 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.semit @@ -0,0 +1,17 @@ + + HADAPT:TRACE = 61 + + HADAPT:TRANSKIND = SEMIT + HADAPT:USEBIAS = FALSE + HADAPT:BASECLASS = regtree_2.base + HADAPT:ADAPTKIND = BASE + HADAPT:SPLITTHRESH = 0.0 + HADAPT:SEMITIEDMACRO = SEMITIED + HADAPT:MAXXFORMITER = 100 + HADAPT:MAXSEMITIEDITER = 20 + + + HMODEL:SAVEBINARY = FALSE + HMODEL:TRACE = 512 + + diff --git a/samples/RMHTK/lib/configs/config.tandem.basic b/samples/RMHTK/lib/configs/config.tandem.basic new file mode 100755 index 0000000..127d1a8 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.tandem.basic @@ -0,0 +1,4 @@ +TARGETKIND = USER # Basic parameterisation +HNET:TRACE = 1 # Want this for recognition +#FORCECXTEXP = T # Needed for cross word systems +HMODEL: SAVEBINARY = T diff --git a/samples/RMHTK/lib/configs/config.tandem.compress b/samples/RMHTK/lib/configs/config.tandem.compress new file mode 100644 index 0000000..b2a5aed --- /dev/null +++ b/samples/RMHTK/lib/configs/config.tandem.compress @@ -0,0 +1,5 @@ +TARGETKIND = USER +SAVECOMPRESSED = TRUE +NATURALREADORDER = TRUE +NATURALWRITEORDER = FALSE +SAVEWITHCRC = TRUE diff --git a/samples/RMHTK/lib/configs/config.tandem.semit b/samples/RMHTK/lib/configs/config.tandem.semit new file mode 100755 index 0000000..60b0c5d --- /dev/null +++ b/samples/RMHTK/lib/configs/config.tandem.semit @@ -0,0 +1,18 @@ +HADAPT:TRACE = 61 + +HADAPT:TRANSKIND = SEMIT +HADAPT:USEBIAS = FALSE +HADAPT:BASECLASS = global +HADAPT:ADAPTKIND = BASE +HADAPT:SPLITTHRESH = 0.0 +HADAPT:SEMITIEDMACRO = SEMITIED +HADAPT:MAXXFORMITER = 100 +HADAPT:MAXSEMITIEDITER = 20 +#HADAPT:BLOCKSIZE = IntVec 1 78 + +HMODEL:SAVEBINARY = FALSE +HMODEL:TRACE = 512 + +USEOLDXFORMCVN = FALSE + + diff --git a/samples/RMHTK/lib/configs/config.tandem.xwrd b/samples/RMHTK/lib/configs/config.tandem.xwrd new file mode 100755 index 0000000..81a2779 --- /dev/null +++ b/samples/RMHTK/lib/configs/config.tandem.xwrd @@ -0,0 +1,6 @@ +TARGETKIND = USER # Basic parameterisation +HNET:TRACE = 1 # Want this for recognition +ALLOWXWRDEXP = T # Needed for cross word systems +FORCECXTEXP = T # Needed for cross word systems + +HMODEL:TRACE = 512 # Enables tracking of transforms diff --git a/samples/RMHTK/lib/configs/config.xwrd b/samples/RMHTK/lib/configs/config.xwrd new file mode 100755 index 0000000..18ee97d --- /dev/null +++ b/samples/RMHTK/lib/configs/config.xwrd @@ -0,0 +1,8 @@ + TARGETKIND = MFCC_E_D_A # Basic parameterisation +#TARGETKIND = MFCC_E_D_A_V # VQ parameterisation +#VQTABLE = vq.table # VQ table + HNET:TRACE = 1 # Want this for recognition + ALLOWXWRDEXP = T # Needed for cross word systems + FORCECXTEXP = T # Needed for cross word systems + +HMODEL:TRACE = 512 # Enables tracking of transforms diff --git a/samples/RMHTK/lib/corrupt b/samples/RMHTK/lib/corrupt new file mode 100755 index 0000000..90c4d4c --- /dev/null +++ b/samples/RMHTK/lib/corrupt @@ -0,0 +1,12 @@ +ind_eval/gmb0_5/gmb0_5_st0060.mfc 189 274 +dev_aug/jlm0_4/jlm0_4_st0153.mfc 408 492 +dev_aug/ctm0_2/ctm0_2_st0522.mfc 558 643 +dev_aug/bth0_7/bth0_7_st1059.mfc 620 704 +dev_aug/bgt0_5/bgt0_5_st0366.mfc 550 635 +dev_aug/bcg1_8/bcg1_8_st1059.mfc 676 695 +dev_aug/awf0_5/awf0_5_st0344.mfc 357 442 +dev_aug/ajp0_6/ajp0_6_st0139.mfc 493 578 +ind_trn/rcg0_1/rcg0_1_st0679.mfc 602 640 +ind_trn/mcc0_5/mcc0_5_sr292.mfc 426 473 +ind_trn/jxm0_5/jxm0_5_sr104.mfc 405 490 +ind_trn/crc0_5/crc0_5_st0802.mfc 387 469 diff --git a/samples/RMHTK/lib/dicts/mono.dct b/samples/RMHTK/lib/dicts/mono.dct new file mode 100755 index 0000000..0473aa2 --- /dev/null +++ b/samples/RMHTK/lib/dicts/mono.dct @@ -0,0 +1,993 @@ +!SENT_END sil +!SENT_START sil +A ax sp +A42128 ey f ao r t uw w ah n t uw ey td sp +AAW ey ey d ah b y uw sp +ABERDEEN ae b er d iy n sp +ABOARD ax b ao r dd sp +ABOVE ax b ah v sp +ADD ae dd sp +ADDED ae dx ax dd sp +ADDING ae dx ih ng sp +AFFECT ax f eh kd sp +AFTER ae f t er sp +AGAIN ax g eh n sp +AJAX ey dd jh ae k s sp +AJAX+S ey dd jh ae k s ax z sp +ALASKA ax l ae s k ax sp +ALERT ax l er td sp +ALERTS ax l er ts sp +ALEXANDRIA ae l ax kd z ae n d r iy ax sp +ALL ao l sp +AN ax n sp +ANCHORAGE ae ng k er dd jh sp +AND ae n sp +ANY eh n iy sp +ANYBODY eh n iy b ah dx iy sp +APALACHICOLA ae p ax l ae td ch ax k ow l ax sp +APALACHICOLA+S ae p ax l ae td ch ax k ow l ax z sp +APRIL ey p r el sp +ARABIAN ax r ey b iy ax n sp +ARCTIC aa r t ax k sp +ARE aa r sp +AREA eh r iy ax sp +AREAS eh r iy ax z sp +AREN+T aa er n sp +ARKANSAS aa r k ax n s ao sp +ARKANSAS+S aa r k ax n s ao z sp +AROUND ax r aw n sp +ARRIVAL ax r ay v el sp +ARRIVE ax r ay v sp +ARRIVED ax r ay v dd sp +ARRIVING ax r ay v ih ng sp +ARROW eh r ow sp +AS ax z sp +ASTORIA ax s t ao r iy ax sp +ASUW ey eh s y uw d ah b y uw sp +ASW ey eh s d ah b y uw sp +AT ae td sp +ATLANTIC ax dd l ae n ax k sp +AUGUST ao g ax s td sp +AVAILABLE ax v ey l ax b el sp +AVERAGE ae v er dd jh sp +BAD b ae dd sp +BADGER b ae dd jh er sp +BADGER+S b ae dd jh er z sp +BAINBRIDGE b ey n b r ih dd jh sp +BAINBRIDGE+S b ey n b r ih dd jh ax z sp +BANGKOK b ae ng k aa k sp +BARGE b aa r dd jh sp +BASS b ae s sp +BAY b ey sp +BE b iy sp +BEAM b iy m sp +BEAMS b iy m z sp +BEEN b ih n sp +BEFORE b ax f er sp +BELOW b ax l ow sp +BERING b eh r ih ng sp +BETTER b eh dx er sp +BETWEEN b ax t w iy n sp +BIDDLE b ih dx el sp +BIDDLE+S b ih dx el z sp +BISMARK b ih z m aa r k sp +BOMBAY b aa m b ey sp +BOTH b ow th sp +BOX b aa k s sp +BRIGHT b r ay td sp +BRITISH b r ih dx ax sh sp +BROOKE b r uh k sp +BROOKE+S b r uh k s sp +BRUNSWICK b r ah n z w ax k sp +BRUNSWICK+S b r ah n z w ax k s sp +BUD-TEST b ah dd t eh s td sp +BUMP b ah m p sp +BY b ay sp +C-CODE s iy k ow dd sp +C-CODES s iy k ow dd z sp +C-RATING s iy r ey dx ih ng sp +C-RATINGS s iy r ey dx ih ng z sp +C1 s iy w ah n sp +C2 s iy t uw sp +C3 s iy th r iy sp +C4 s iy f ao r sp +C5 s iy f ay v sp +CALEDONIA k ae l ax d ow n iy ax sp +CALIFORNIA k ae l ax f ao r n y ax sp +CAMDEN k ae m d ax n sp +CAMDEN+S k ae m d ax n z sp +CAMPBELL k ae m b el sp +CAMPBELL+S k ae m b el z sp +CAN k ax n sp +CANADA k ae n ax d ax sp +CAPABILITIES k ey p ax b ih l ax dx iy z sp +CAPABILITY k ey p ax b ih l ax dx iy sp +CAPABLE k ey p ax b el sp +CAPACITIES k ax p ae s ax dx iy z sp +CAPACITY k ax p ae s ax dx iy sp +CARRIER k eh r iy er sp +CARRIER+S k eh r iy er z sp +CARRIERS k eh r iy er z sp +CARRY k eh r iy sp +CASREP k ae s r eh p sp +CASREPED k ae s r eh pd t sp +CASREPS k ae s r eh p s sp +CASUALTY k ae sh uw ax l t iy sp +CAT-2 k ae t uw sp +CAT-3 k ae t th r iy sp +CAT-4 k ae t f ao r sp +CATEGORIES k ae dx ax g ao r iy z sp +CATEGORY k ae dx ax g ao r iy sp +CENTER s eh n t er sp +CENTERED s eh n t er dd sp +CENTERING s eh n er ih ng sp +CEP s iy iy p iy sp +CHANGE td ch ey n jh sp +CHANGED td ch ey n jh sp +CHANGING td ch ey n jh ih ng sp +CHANNEL td ch ae n el sp +CHART td ch aa r td sp +CHARTS td ch aa r ts sp +CHATTAHOOCHEE td ch ae dx ax hh uw td ch iy sp +CHATTAHOOCHEE+S td ch ae dx ax hh uw td ch iy z sp +CHESHIRE td ch eh sh er sp +CHINA td ch ay n ax sp +CHOP td ch aa p sp +CHOPPED td ch aa pd t sp +CHOPPING td ch aa p ih ng sp +CIRCLE s er k el sp +CITRUS s ih dx er s sp +CITRUS+S s ih dx er s ax z sp +CITY s ih dx iy sp +CLEAR k l iy r sp +CLEARED k l iy r dd sp +CLEARING k l iy r ih ng sp +CLEVELAND k l iy v l ax n sp +CLEVELAND+S k l iy v l ax n z sp +CLOSE k l ow z sp +CLOSER k l ow s er sp +CLOSEST k l ow s ax s td sp +CODAG k ow d ae g sp +CODE k ow dd sp +CODES k ow dd z sp +COLOR k ah l er sp +COMPARED k ax m p eh r dd sp +CONFIDENCE k aa n f ax d ax n s sp +CONFIDENCE+S k aa n f ax d ax n td s ax z sp +CONIFER k aa n ax f er sp +CONIFER+S k aa n ax f er z sp +CONQUEST k aa ng k w eh s td sp +CONQUEST+S k aa ng k w eh s td sp +CONSTANT k aa n s t ax n sp +CONSTANT+S k aa n s t ax n s sp +CONSTELLATION k aa n s t ax l ey sh ax n sp +CONSTELLATION+S k aa n s t ax l ey sh en z sp +CONVENTIONAL k ax n v eh n sh ax n el sp +COOK k uh k sp +COPELAND k ow p l ax n sp +COPELAND+S k ow p l ax n z sp +CORAL k ao r el sp +COULD k uh dd sp +COULDN+T k uh dx ax n sp +COUNT k aw n sp +COUNTED k aw n ax dd sp +COUNTING k aw n ng sp +CROVL k r ow v el sp +CROVLS k r ow v el z sp +CRUISER k r uw z er sp +CRUISER+S k r uw z er z sp +CRUISERS k r uw z er z sp +CRUISERS+S k r uw z er z sp +CRUISING k r uw z ih ng sp +CURRENT k er ax n sp +CURRENTLY k er ax n t l iy sp +DALE d ey l sp +DALE+S d ey l z sp +DARWIN d aa r w ax n sp +DATA d ey dx ax sp +DATE d ey td sp +DATED d ey dx ax dd sp +DATES d ey ts sp +DAVIDSON d ey v ax d s ax n sp +DAVIDSON+S d ey v ax d s en z sp +DAY d ey sp +DAYS d ey z sp +DDD992 d iy d iy d iy n ay n n ay n t uw sp +DECEMBER d ax s eh m b er sp +DECREASE d iy k r iy s sp +DECREASED d iy k r iy s td sp +DECREASING d iy k r iy s ih ng sp +DEFAULT d iy f ao l sp +DEFAULTS d iy f el ts sp +DEFINE d ax f ay n sp +DEFINED d ax f ay n sp +DEFINING d ax f ay n ih ng sp +DEFINITION d eh f ax n ih sh ax n sp +DEFINITIONS d eh f ax n ih sh en z sp +DEGRADATION d eh g er d ey sh ax n sp +DEGRADATIONS d eh g er d ey sh en z sp +DEGRADE d ax g r ey dd sp +DEGRADED d ax g r ey dx ax dd sp +DEGRADING d ax g r ey dx ih ng sp +DEGREES d ax g r iy z sp +DELETE d ax l iy td sp +DELETED d ax l iy dx ax dd sp +DELETING d ax l iy dx ih ng sp +DENVER d eh n v er sp +DENVER+S d eh n v er z sp +DEPLOYED d ax p l oy dd sp +DEPLOYMENT d ax p l oy m ax n sp +DEPLOYMENTS d ax p l oy m ax n s sp +DEPTH d eh p th sp +DEPTHS d eh pd s sp +DESTINATION d eh s t ax n ey sh ax n sp +DESTINATIONS d eh s t ax n ey sh en z sp +DID d ih dd sp +DIDN+T d ih d ax n sp +DIEGO-GARCIA d iy ey g ow g er s iy ax sp +DIESEL d iy z el sp +DIM d ih m sp +DISPLACEMENT d ax s p l ey s m ax n sp +DISPLACEMENTS d ax s p l ey s m ax n s sp +DISPLAY d ax s p l ey sp +DISPLAYED d ax s p l ey dd sp +DISPLAYING d ax s p l ey ih ng sp +DISTANCE d ih s t ax n s sp +DIXON d ih k s ax n sp +DIXON+S d ih k s en z sp +DMDS d iy eh m d iy eh s sp +DO d uw sp +DOES d ax z sp +DOESN+T d ah z ax n sp +DON+T d ow n sp +DOWNES d aw n z sp +DOWNES+S d aw n z sp +DOWNGRADE d aw n g r ey dd sp +DOWNGRADED d aw n g r ey dx ax dd sp +DRAFT dd jh r ae f td sp +DRAFTS dd jh r ae f ts sp +DRAW dd jh r ao sp +DUBUQUE d ax b y uw k sp +DUBUQUE+S d ax b y uw k s sp +DUE d uw sp +DURING d er ih ng sp +EACH iy td ch sp +EARLIER er l iy er sp +EARLIEST er l iy ax s td sp +EARLY er l iy sp +EAST iy s td sp +EASTERN iy s t er n sp +EASTPAC iy s p ae k sp +EASTPAC+S iy s p ae k s sp +ECG041 iy s iy dd jh iy z iy r ow f ao r w ah n sp +ECHO eh k ow sp +ECONOMIC eh k ax n aa m ax k sp +EDIT eh dx ax td sp +EDITED eh dx ax dx ax dd sp +EDITING eh dx ax dx ih ng sp +EIGHT ey td sp +EIGHTEEN ey t iy n sp +EIGHTEENTH ey t iy n th sp +EIGHTH ey td th sp +EIGHTY ey dx iy sp +EISENHOWER ay z ax n hh aw er sp +EISENHOWER+S ay z ax n hh aw er z sp +ELEVEN ax l eh v ax n sp +ELEVENTH ax l eh v ax n th sp +ELIZABETH ax l ih z ax b ax th sp +EMPLOYED ax m p l oy dd sp +END eh n sp +ENDING eh n d ih ng sp +ENGLAND ih ng g l ax n sp +ENGLAND+S ih ng g l ax n z sp +ENGLISH ih ng g l ax sh sp +ENOUGH ax n ah f sp +ENROUTE ax n r uw td sp +ENTERPRISE eh n er p r ay z sp +ENTERPRISE+S eh n er p r ay z ax z sp +EQUIPMENT iy k w ih pd m ax n sp +EQUIPPED iy k w ih pd t sp +ESTEEM ax s t iy m sp +ESTEEM+S ax s t iy m z sp +ESTIMATED eh s t ax m ey dx ax dd sp +ETA iy t iy ey sp +ETR iy t iy aa r sp +EVER eh v er sp +EVERETT eh v r ax td sp +EXPECTED ax k s p eh kd t ax dd sp +FANNING f ae n ih ng sp +FANNING+S f ae n ih ng z sp +FAR f aa r sp +FARTHER f aa r dh er sp +FARTHEST f aa r dh ax s td sp +FAST f ae s td sp +FASTER f ae s t er sp +FASTEST f ae s t ax s td sp +FEBRUARY f eh b y uw eh r iy sp +FEET f iy td sp +FFF088 eh f eh f eh f z iy r ow ey d ey td sp +FIFTEEN f ih f t iy n sp +FIFTEENTH f ih f t iy n th sp +FIFTH f ih f th sp +FIFTY f ih f t iy sp +FIGURE f ih g y er sp +FIGURES f ih g y er z sp +FIJI f iy dd jh iy sp +FIND f ay n sp +FIREBUSH f ay er b uh sh sp +FIREBUSH+S f ay er b uh sh ax z sp +FIRST f er s td sp +FIVE f ay v sp +FIXED f ih k s td sp +FLASHER f l ae sh er sp +FLASHER+S f l ae sh er z sp +FLEET f l iy td sp +FLEETS f l iy ts sp +FLINT f l ih n sp +FLINT+S f l ih n s sp +FOOTER f uh dx er sp +FOR f er sp +FORMOSA f er m ow s ax sp +FORTY f ao r dx iy sp +FOUR f ao r sp +FOURTEEN f ao r t iy n sp +FOURTEENTH f ao r t iy n th sp +FOURTH f ao ax th sp +FOX f aa k s sp +FOX+S f aa k s ax z sp +FREDERICK f r eh dd jh r ax k sp +FREDERICK+S f r eh d er k s sp +FRENCH f r eh n td ch sp +FRESNO f r eh z n ow sp +FRESNO+S f r eh z n ow z sp +FRIDAY f r ay d ey sp +FRIDAY+S f r ay dx iy z sp +FRIGATE f r ih g ax td sp +FRIGATE+S f r ih g ax ts sp +FRIGATES f r ih g ax ts sp +FRIGATES+S f r ih g ax td s sp +FROM f r ax m sp +FUEL f y uw l sp +FULL f uh l sp +GALLONS g ae l ax n z sp +GALVESTON g ae l v ax s t ax n sp +GAS g ae s sp +GET g eh td sp +GIVE g ih v sp +GLACIER g l ey sh er sp +GLACIER+S g l ey sh er z sp +GNOMONIC n ax m aa n ax k sp +GO g ow sp +GOING g ow ih ng sp +GONE g aa n sp +GREAT g r ey td sp +GREATER g r ey dx er sp +GREATEST g r ey dx ax s td sp +GREEN g r iy n sp +GRID g r ih dd sp +GRIDLEY g r ih d l iy sp +GRIDLEY+S g r ih dd l iy z sp +GRILL g r ih l sp +GROSS g r ow s sp +GROUP g r uw p sp +GROUPS g r uw p s sp +GUARDFISH g aa r d f ih sh sp +GUARDFISH+S g aa r dd f ih sh ax z sp +GUITARRO g ih t aa r ow sp +GUITARRO+S g ih t aa r ow z sp +GULF g ah l f sp +HAD hh ae dd sp +HALF hh ae f sp +HARBOR hh aa r b er sp +HARPOON hh aa r p uw n sp +HAS hh ae z sp +HASN+T hh ae z ax n sp +HAVE hh ae v sp +HAVEN+T hh ae v ax n sp +HAWKBILL hh ao kd b ih l sp +HAWKBILL+S hh ao kd b ih l z sp +HE hh iy sp +HE+S hh iy z sp +HECTOR hh eh kd t er sp +HECTOR+S hh eh kd t er z sp +HEPBURN hh eh b er n sp +HEPBURN+S hh eh pd b er n z sp +HER hh er sp +HERS hh er z sp +HFDF ey td ch eh f d iy eh f sp +HIGH hh ay sp +HIGHER hh ay er sp +HIGHEST hh ay ax s td sp +HIM hh ih m sp +HIS hh ih z sp +HOME hh ow m sp +HOMER hh ow m er sp +HONG-KONG hh ao ng k ao ng sp +HONOLULU hh aa n ax l uw l uw sp +HOOKED hh uh kd t sp +HORNE hh ao r n sp +HORNE+S hh ao r n z sp +HOUR aw er sp +HOURS aw er z sp +HOW hh aw sp +HUNDRED hh ah n d er dx sp +ICE-NINE ay s n ay n sp +ID ay d iy sp +IDENTIFICATION ay d eh n ax f ax k ey sh ax n sp +IDENTIFICATIONS ay d eh n ax f ax k ey sh en z sp +IF ih f sp +IN ih n sp +INCLUDE ax ng k l uw dd sp +INCLUDED ax ng k l uw dx ax dd sp +INCLUDING ax ng k l uw dx ih ng sp +INCREASE ih ng k r iy s sp +INCREASED ih ng k r iy s td sp +INCREASING ih ng k r iy s ih ng sp +INDEPENDENCE ih n d iy p eh n d ax n s sp +INDEPENDENCE+S ih n d iy p eh n d ax n td s ax z sp +INDIAN ih n d iy ax n sp +INDONESIA ih n d ow n ey sh ax sp +INFORMATION ih n f ax m ey sh ax n sp +INSTALLED ax n s t aa l dd sp +INSTEAD ax n s t eh dd sp +INSUFFICIENT ih n s ax f ih sh ax n sp +INVOLVED ax n v aa l v dd sp +INVOLVING ax n v aa l v ih ng sp +IRONWOOD ay er n w uh dd sp +IRONWOOD+S ay er n w uh dd z sp +IS ih z sp +ISLANDS ay l ax n z sp +ISN+T ih z ax n sp +IT ih td sp +IT+S ih ts sp +ITS ih ts sp +JANUARY dd jh ae n y uw er iy sp +JAPAN dd jh ax p ae n sp +JARRETT dd jh eh r ax td sp +JARRETT+S dd jh eh er ts sp +JARVIS dd jh aa r v ax s sp +JARVIS+S dd jh aa r v ax s ax z sp +JASON dd jh ey s ax n sp +JASON+S dd jh ey s en z sp +JULY dd jh uw l ay sp +JUNE dd jh uw n sp +JUPITER dd jh uw p ax dx er sp +JUPITER+S dd jh uw p ax dx er z sp +KENNEDY k eh n ax dx iy sp +KENNEDY+S k eh n ax dx iy z sp +KILOMETER k el aa m ax dx er sp +KILOMETERS k el aa m ax dx er z sp +KIRK k er k sp +KIRK+S k er k s sp +KISKA k ih s k ax sp +KISKA+S k ih s k ax z sp +KNOT n aa td sp +KNOTS n aa ts sp +KODIAK k ow dd iy ae k sp +KOREA k ao r iy ax sp +KOREAN k ao r iy ax n sp +LAMPS l ae m p s sp +LANTFLT l ae n t f l iy td sp +LARGE l aa r dd jh sp +LARGER l aa r dd jh er sp +LARGEST l aa r dd jh ax s td sp +LAST l ae s td sp +LAT l ae td sp +LAT-LON l ae td l aa n sp +LAT-LONS l ae td l aa n z sp +LATER l ey dx er sp +LATEST l ey dx ax s td sp +LATITUDE l ae dx ax t uw dd sp +LATITUDES l ae dx ax t uw dd z sp +LATS l ae ts sp +LEAST l iy s td sp +LEFT l eh f td sp +LENGTH l eh ng th sp +LENGTHS l eh ng th s sp +LENINGRAD l eh n ax n g r ae dd sp +LESS l eh s sp +LETTER l eh dx er sp +LETTERS l eh dx er z sp +LEVEL l eh v el sp +LEVELS l eh v el z sp +LINK-11 l ih ng k ax l eh v ax n sp +LIST l ih s td sp +LOCATED l ow k ey dx ax dd sp +LOCATION l ow k ey sh ax n sp +LOCATIONS l ow k ey sh en z sp +LOCKWOOD l aa k w uh dd sp +LOCKWOOD+S l aa k w uh dd z sp +LON l aa n sp +LONG l ao ng sp +LONGER l ao ng g er sp +LONGEST l ao ng g ax s td sp +LONGITUDE l aa n jh ax t uw dd sp +LONGITUDES l aa n jh ax t uw dd z sp +LONS l aa n z sp +LOW l ow sp +LOWER l ow er sp +LOWEST l ow ax s td sp +M-CODE eh m k ow dd sp +M-CODES eh m k ow dd z sp +M-RATING eh m r ey dx ih ng sp +M-RATINGS eh m r ey dx ih ng z sp +M1 eh m w ah n sp +M2 eh m t uw sp +M3 eh m th r iy sp +M4 eh m f ao r sp +M5 eh m f ay v sp +MADAGASCAR m ae d ax g ae s k aa r sp +MADE m ey dd sp +MAKE m ey k sp +MAKING m ey k ih ng sp +MANCHESTER m ae n td ch ax s t er sp +MANHATTAN m ae n hh ae t ax n sp +MANHATTAN+S m ae n hh ae dx ax n z sp +MANILA m ax n ih l ax sp +MANY m eh n iy sp +MARCH m aa r td ch sp +MARS m aa r z sp +MARS+S m aa r z sp +MAX m ae k s sp +MAXIMUM m ae k s m ax m sp +MAY m ey sp +MCCLUSKY m ax k l ah s k iy sp +MCCLUSKY+S m ax k l ah s k iy z sp +ME m iy sp +MEASURE m ey sh er sp +MERCATOR m er k ey dx er sp +MERCURY m er k y er iy sp +MERCURY+S m er k y er iy z sp +METEOR m iy t iy er sp +METEOR+S m iy t iy er z sp +METERS m iy dx er z sp +METRIC m eh td ch r ax k sp +MEXICO m eh k s ax k ow sp +MIAMI m ay ae m iy sp +MIDGETT m ih dd jh ax td sp +MIDGETT+S m ih dd jh ax ts sp +MIDPAC m ih dd p ae k sp +MIDPAC+S m ih dd p ae k s sp +MIDWAY m ih d w ey sp +MIDWAY+S m ih d w ey z sp +MILE m ay el sp +MILES m ay el z sp +MIND m ay n sp +MINUTES m ih n ax ts sp +MISHAWAKA m ih sh ax w aa k ax sp +MISHAWAKA+S m ih sh ax w aa k ax z sp +MISSION m ih sh ax n sp +MISSIONS m ih sh en z sp +MISSISSIPPI m ih s ax s ih p iy sp +MISSISSIPPI+S m ih s ax s ih p iy z sp +MIW eh m ay d ah b y uw sp +MOB eh m ow b iy sp +MONDAY m ah n d ey sp +MONDAY+S m ah n d ey z sp +MONGOLIA m aa ng g ow l iy ax sp +MONTH m ah n th sp +MONTH+S m ah n th s sp +MONTHS m ah n th s sp +MONTICELLO m aa n ax s eh l ow sp +MONTICELLO+S m aa n ax s eh l ow z sp +MORE m ao r sp +MOST m ow s td sp +MOZAMBIQUE m ow z ae m b iy k sp +MUCH m ah td ch sp +N92762 eh n n ay n t uw s eh v ax n s ih k s t uw sp +NAME n ey m sp +NAMES n ey m z sp +NAPLES n ey p el z sp +NASHUA n ae sh uw ax sp +NASHUA+S n ae sh uw ax z sp +NEAR n iy r sp +NEARER n iy r er sp +NEAREST n iy r ax s td sp +NEVER n eh v er sp +NEW n uw sp +NEW-YORK n uw y ao r k sp +NEW-ZEALAND n uw z iy l ax n sp +NEWCASTLE n uw k ae s el sp +NEWER n uw er sp +NEWEST n uw ax s td sp +NEXT n eh k s td sp +NINE n ay n sp +NINETEEN n ay n t iy n sp +NINETEENTH n ay n t iy n th sp +NINETY n ay n iy sp +NINTH n ay n th sp +NO n ow sp +NOME n ow m sp +NORTH n ao ax th sp +NORTHERN n ao r dh er n sp +NOT n aa td sp +NOVA n ow v ax sp +NOVEMBER n ow v eh m b er sp +NOW n aw sp +NTDS eh n t iy d iy eh s sp +NUCLEAR n uw k l iy er sp +NUMBER n ah m b er sp +OAKLAND ow k l ax n sp +OCEAN ow sh ax n sp +OCTOBER aa kd t ow b er sp +OF ax v sp +OFF ao f sp +OLD ow dx sp +OLDER ow d er sp +OLDEST ow l d ax s td sp +OLYMPIA ow l ih m p iy ax sp +ON aa n sp +ONE w ah n sp +ONLY ow n l iy sp +OPEN ow p ax n sp +OR ao r sp +ORANGE ao er n jh sp +OSGP ow eh s dd jh iy p iy sp +OVERALL ow v er ao l sp +OVERLAY ow v er l ey sp +OVERLAYS ow v er l ey z sp +PAC p ae k sp +PACFLT p ae k f l iy td sp +PACIFIC p ax s ih f ax k sp +PANAMA p ae n ax m aa sp +PARAMETER p er ae m ax dx er sp +PARAMETERS p er ae m ax dx er z sp +PEARL p er l sp +PEORIA p iy ao r iy ax sp +PEORIA+S p iy ao r iy ax z sp +PERCENT p er s eh n sp +PERSIAN p er sh ax n sp +PERSONNEL p er s ax n eh l sp +PHILIPPINE f ih l ax p iy n sp +PHILIPPINES f ih l ax p iy n z sp +PIGEON p ih dd jh ax n sp +PIGEON+S p ih dd jh ax n z sp +PLH003 p iy eh l ey td ch z iy r ow z iy r ow th r iy sp +PLUCK p l ah k sp +PLUCK+S p l ah k s sp +PLUNGER p l ah n jh er sp +PLUNGER+S p l ah n jh er z sp +POLLACK p aa l ax k sp +POLLACK+S p aa l ax k s sp +POLYNESIA p aa l ax n iy sh ax sp +PORT p ao r td sp +PORTS p ao r ts sp +POSIT p aa z ax td sp +POSITION p ax z ih sh ax n sp +POSITIONS p ax z ih sh en z sp +POSITS p aa z ax ts sp +POUGHKEEPSIE p uw k ih p s iy sp +POUGHKEEPSIE+S p uw k ih p s iy z sp +POWERED p aw er dd sp +PRAIRIE p r eh r iy sp +PRAIRIE+S p r eh r iy z sp +PRESENT p r eh z ax n sp +PREVIOUS p r iy v iy ax s sp +PROBLEM p r aa b l ax m sp +PROBLEMS p r aa b l ax m z sp +PROJECTION p er dd jh eh k sh ax n sp +PROPELLED p er p eh l dd sp +PROPULSION p er p ah l sh ax n sp +PUFFER p ah f er sp +PUFFER+S p ah f er z sp +PUGET-1 p y uw dd jh ax td w ah n sp +QUARTER k w ao r dx er sp +QUARTERS k w ao r dx er s sp +QUEENFISH k w iy n f ih sh sp +QUEENFISH+S k w iy n f ih sh ax z sp +RADAR r ey dx aa r sp +RAMSEY r ae m z iy sp +RAMSEY+S r ae m z iy z sp +RANGER r ey n jh er sp +RANGER+S r ey n jh er z sp +RATED r ey dx ax dd sp +RATHBURNE r ae th b er n sp +RATHBURNE+S r ae th b er n z sp +RATING r ey dx ih ng sp +RATINGS r ey dx ih ng z sp +READINESS r eh dx iy n ax s sp +REASON r iy z ax n sp +REASONER r iy z ax n er sp +REASONER+S r iy z ax n er z sp +REASONS r iy z en z sp +RECENT r iy s ax n sp +RECLAIMER r iy k l ey m er sp +RECLAIMER+S r iy k l ey m er z sp +RED r eh dd sp +REDEFINE r iy d iy f ay n sp +REDEFINED r iy d iy f ay n sp +REDEFINING r iy d iy f ay n ih ng sp +REDISPLAY r iy d ax s p l ey sp +REDO r iy d uw sp +REDRAW r iy dd jh r ao sp +REEVES r iy v z sp +REEVES+S r iy v z sp +REMAINING r iy m ey n ih ng sp +REMARK r iy m aa r k sp +REMARKS r iy m aa r k s sp +REPAIR r iy p eh r sp +REPAIRED r iy p eh r dd sp +REPAIRING r iy p eh r ih ng sp +REPLACED r iy p l ey s td sp +REPORT r iy p ao r td sp +REPORTED r iy p ao r dx ax dd sp +REPORTING r iy p ao r dx ih ng sp +REPORTS r iy p ao r ts sp +RESET r iy s eh td sp +RESOLUTION r eh z ax l uw sh ax n sp +RESOLVED r iy z ao l v dd sp +RESOURCE r iy s ao r s sp +RESOURCES r iy s ao r s ax z sp +REVIEW r iy v y uw sp +ROSS r ao sp +SACRAMENTO s ae k er m eh n t ow sp +SACRAMENTO+S s ae k er m eh n t ow z sp +SAIL s ey l sp +SAME s ey m sp +SAMPLE s ae m p el sp +SAMPLE+S s ae m p el z sp +SAN-DIEGO s ae n d iy ey g ow sp +SAN-FRAN s ae n f r ae n sp +SASSAFRAS s ae s ax f r ae s sp +SASSAFRAS+S s ae s ax f r ae s ax z sp +SATURDAY s ae dx er d ey sp +SATURDAY+S s ae dx er d ey z sp +SAVE s ey v sp +SCHENECTADY s k ax n eh kd t ax dx iy sp +SCHENECTADY+S s k ax n eh kd t ax dx iy z sp +SCREEN s k r iy n sp +SCREENS s k r iy n z sp +SEA s iy sp +SEAWOLF s iy w uh l f sp +SEAWOLF+S s iy w uh l f s sp +SECOND s eh k ax n sp +SECURITY s ax k y er ax dx iy sp +SENSOR s eh n s er sp +SENSORS s eh n s er z sp +SEPTEMBER s ax pd t eh m b er sp +SET s eh td sp +SETTING s eh dx ih ng sp +SETTINGS s eh dx ih ng z sp +SEVEN s eh v ax n sp +SEVENTEEN s eh v ax n t iy n sp +SEVENTEENTH s eh v ax n t iy n th sp +SEVENTH s eh v ax n th sp +SEVENTY s eh v ax n iy sp +SHASTA sh ae s t ax sp +SHASTA+S sh ae s t ax z sp +SHE sh iy sp +SHE+S sh iy z sp +SHERMAN sh er m ax n sp +SHERMAN+S sh er m ax n z sp +SHIP sh ih p sp +SHIPS sh ih p s sp +SHIPS+S sh ih p s sp +SHOW sh ow sp +SHOWING sh ow ih ng sp +SHOWN sh ow n sp +SIBERIAN s ay b iy r iy ax n sp +SIDNEY s ih dd n iy sp +SINCE s ih n s sp +SINGAPORE s ih ng ax p ao r sp +SIX s ih k s sp +SIXTEEN s ih k s t iy n sp +SIXTEENTH s ih k s t iy n th sp +SIXTH s ih k s th sp +SIXTY s ih k s t iy sp +SIZE s ay z sp +SLOW s l ow sp +SLOWER s l ow er sp +SLOWEST s l ow ax s td sp +SLQ-32 eh s eh l k y uw th er dx iy t uw sp +SMALL s m ao l sp +SMALLER s m ao l er sp +SMALLEST s m ao l ax s td sp +SOHO s ow hh ow sp +SOLOMON s ao l ax m ax n sp +SONAR s ow n aa r sp +SOON s uw n sp +SOONER s uw n er sp +SOUTH s aw th sp +SOUTHERN s ah dh er n sp +SOVIET s ow v iy ax td sp +SPEED s p iy dd sp +SPEEDS s p iy dd z sp +SPS-40 eh s p iy eh s f ao r dx iy sp +SPS-48 eh s p iy eh s f ao r dx iy ey td sp +SQQ-23 eh s k y uw k y uw t w eh n iy th r iy sp +START s t aa r td sp +STARTED s t aa r dx ax dd sp +STARTING s t aa r dx ih ng sp +STATES s t ey ts sp +STATION s t ey sh ax n sp +STATUS s t ey dx ax s sp +STEAM s t iy m sp +STEREOGRAPHIC s t eh r iy ow g r ae f ax k sp +STERETT s t eh r ax td sp +STERETT+S s t eh r ax ts sp +STRAIT s td ch r ey td sp +SUB s ah b sp +SUB+S s ah b z sp +SUBIC s uw b ax k sp +SUBMARINE s ah b m er iy n sp +SUBMARINE+S s ah b m er iy n z sp +SUBMARINES s ah b m er iy n z sp +SUBS s ah b z sp +SUFFICIENT s ax f ih sh ax n sp +SUMMARIZE s ah m er ay z sp +SUNDAY s ah n d ey sp +SUNDAY+S s ah n d ey z sp +SUPPLIES s ax p l ay z sp +SUPPLY s ax p l ay sp +SUPPOSED s ax p ow z sp +SURFACE s er f ax s sp +SUSTAINED s ax s t ey n sp +SWITCH s w ih td ch sp +SWITCHES s w ih td ch ax z sp +SWORDFISH s ao r d f ih sh sp +SWORDFISH+S s ao r dd f ih sh ax z sp +SYSTEM s ih s t ax m sp +T-LAM t iy l ae m sp +TACAN t ae k ae n sp +TAIWAN t ay w aa n sp +TAKE t ey k sp +TAKEN t ey k ax n sp +TASM t ae s ax m sp +TEN t eh n sp +TENTH t eh n th sp +TEST t eh s td sp +TEXAS t eh k s ax s sp +TEXAS+S t eh k s ax s ax z sp +TFCC t iy eh f s iy s iy sp +THAILAND t ay l ae n sp +THAN dh ae n sp +THAT dh ae td sp +THE dh ax sp +THEIR dh eh r sp +THEM dh eh m sp +THERE dh eh r sp +THESE dh iy z sp +THEY dh ey sp +THIRD th er dd sp +THIRTEEN th er t iy n sp +THIRTEENTH th er t iy n th sp +THIRTIETH th er dx iy ax th sp +THIRTY th er dx iy sp +THIS dh ih s sp +THOSE dh ow z sp +THOUSAND th aw z ax n sp +THREAT th r eh td sp +THREATS th r eh ts sp +THREE th r iy sp +THURSDAY th er z d ey sp +THURSDAY+S th er z d ey z sp +TICONDEROGA t ay k aa n d er ow g ax sp +TICONDEROGA+S t ay k aa n d er ow g ax z sp +TIME t ay m sp +TIMES t ay m z sp +TO t uw sp +TODAY t ax d ey sp +TODAY+S t ax d ey z sp +TOGGLE t aa g el sp +TOGGLED t aa g el dd sp +TOGGLING t aa g el ih ng sp +TOKYO t ow k iy ow sp +TOMORROW t ax m ao r ow sp +TOMORROW+S t ax m ao r ow z sp +TONKIN t ao ng k ax n sp +TONS t ah n z sp +TOTAL t ow dx el sp +TOWNSVILLE t aw n z v el sp +TRACK td ch r ae k sp +TRACKS td ch r ae k s sp +TRAINING td ch r ey n ih ng sp +TRIPOLI td ch r ih p ow l iy sp +TRIPOLI+S td ch r ih p ow l iy z sp +TRUE-VIEW td ch r uw v y uw sp +TUESDAY t uw z d ey sp +TUESDAY+S t uw z d ey z sp +TURBINE t er b ax n sp +TURN t er n sp +TURNED t er n sp +TURNING t er n ih ng sp +TUSCALOOSA t ah s k ax l uw s ax sp +TUSCALOOSA+S t ah s k ax l uw s ax z sp +TWELFTH t w eh l f th sp +TWELVE t w eh l v sp +TWENTIETH t w ah n iy ax th sp +TWENTY t w ah n iy sp +TWO t uw sp +TYPE t ay p sp +TYPES t ay p s sp +UNION y uw n y ax n sp +UNIT y uw n ax td sp +UNITED y uw n ay dx ax dd sp +UNTIL ax n t ih l sp +UOM y uw ow eh m sp +UPDATE ah pd d ey td sp +UPDATED ah pd d ey dx ax dd sp +UPDATES ah pd d ey ts sp +UPGRADE ah pd g r ey dd sp +UPGRADED ah pd g r ey dx ax dd sp +USA y uw eh s ey sp +USE y uw z sp +USING y uw z ih ng sp +USN y uw eh s eh n sp +VALUE v ae l y uw sp +VALUES v ae l y uw z sp +VANCOUVER v ae ng k uw v er sp +VANCOUVER+S v ae ng k uw v er z sp +VANDERGRIFT v ae n d er g r ih f td sp +VANDERGRIFT+S v ae n d er g r ih f ts sp +VARIOUS v eh r iy ax s sp +VESSEL v eh s el sp +VESSELS v eh s el z sp +VICTORIA v ax kd t ao r iy ax sp +VIRGINIA v er dd jh ih n y ax sp +VIRGINIA+S v er dd jh ih n y ax z sp +VISUAL v ih sh uw el sp +WABASH w aa b ae sh sp +WABASH+S w aa b ae sh ax z sp +WADSWORTH w aa dd z w er th sp +WADSWORTH+S w aa dd z w er th s sp +WAS w ah z sp +WASN+T w ah z ax n sp +WASP w aa s p sp +WASP+S w aa s p s sp +WE w iy sp +WEDNESDAY w eh n z d ey sp +WEDNESDAY+S w eh n z d ey z sp +WEEK w iy k sp +WEEK+S w iy k s sp +WEEKS w iy k s sp +WELLINGTON w eh l ax ng t ax n sp +WENT w eh n sp +WERE w er sp +WEREN+T w er n sp +WEST w eh s td sp +WESTERN w eh s t er n sp +WESTPAC w eh s p ae k sp +WESTPAC+S w eh s p ae k s sp +WHAT w ah td sp +WHAT+RE w ah dx er sp +WHAT+S w ah ts sp +WHEN w eh n sp +WHEN+LL w eh n el sp +WHEN+S w eh n z sp +WHERE w eh r sp +WHERE+S w eh r z sp +WHICH w ih td ch sp +WHIPPLE w ih p el sp +WHIPPLE+S w ih p el z sp +WHO hh uw sp +WHO+S hh uw z sp +WHOSE hh uw z sp +WHY w ay sp +WHY+S w ay z sp +WICHITA w ih td ch ax t ao sp +WICHITA+S w ih td ch ax t ao z sp +WILL w el sp +WILLAMETTE w ih l ax m eh td sp +WILLAMETTE+S w ih l ax m eh ts sp +WINAMAC w ih n ax m ae k sp +WINAMAC+S w ih n ax m ae k s sp +WINDOW w ih n d ow sp +WINDOWS w ih n d ow z sp +WITH w ax th sp +WITHIN w ax th ih n sp +WITHOUT w ax th aw td sp +WON+T w ow n sp +WORSE w er s sp +WORST w er s td sp +WOULD w uh dd sp +WOULDN+T w uh d ax n sp +YANKEE y ae ng k iy sp +YEAR y iy r sp +YEARS y iy ax z sp +YELLOW y eh l ow sp +YESTERDAY y eh s t er d ey sp +YESTERDAY+S y eh s t er dx iy z sp +YET y eh td sp +YORKTOWN y ao r kd t aw n sp +YORKTOWN+S y ao r kd t aw n z sp +ZULU z uw l uw sp diff --git a/samples/RMHTK/lib/dicts/mono.ded b/samples/RMHTK/lib/dicts/mono.ded new file mode 100755 index 0000000..d8d8321 --- /dev/null +++ b/samples/RMHTK/lib/dicts/mono.ded @@ -0,0 +1,51 @@ +# command file for editing SRI Resource Management dictionary +# make a dictionary that is similar to the CMU phone set +UW + +# delete glottal stops +DP q + +# consonant transformations +MP ts tcl t s +MP d dcl d +RP dd dcl +MP k kcl k +RP kd kcl +MP p pcl p +RP pd pcl +MP t tcl t +RP td tcl +MP b bcl b +RP b bcl +MP g gcl g +RP g gcl +RP hh hv + +# nasals +RP ng eng + +# merge in stressed vowels +RP aa aa+1 +RP ae ae+1 +RP ah ah+1 +RP ao ao+1 +RP aw aw+1 +RP ay ay+1 +RP eh eh+1 +RP er er+1 +RP er axr +RP ey ey+1 +RP ih ih+1 +RP iy iy+1 +RP ow ow+1 +RP oy oy+1 +RP uw uw+1 +RP uh uh+1 + +# fix up a few other things +RP sh zh +RP m em + +# Add silence to words (but not !SENT_????) +AS sp +MP sil sil sp diff --git a/samples/RMHTK/lib/dicts/mono.hd.dct b/samples/RMHTK/lib/dicts/mono.hd.dct new file mode 100755 index 0000000..dc44b70 --- /dev/null +++ b/samples/RMHTK/lib/dicts/mono.hd.dct @@ -0,0 +1,993 @@ +!SENT_END sil +!SENT_START sil +A ax +A42128 ey f ao r t uw w ah n t uw ey td +AAW ey ey d ah b y uw +ABERDEEN ae b er d iy n +ABOARD ax b ao r dd +ABOVE ax b ah v +ADD ae dd +ADDED ae dx ax dd +ADDING ae dx ih ng +AFFECT ax f eh kd +AFTER ae f t er +AGAIN ax g eh n +AJAX ey dd jh ae k s +AJAX+S ey dd jh ae k s ax z +ALASKA ax l ae s k ax +ALERT ax l er td +ALERTS ax l er ts +ALEXANDRIA ae l ax kd z ae n d r iy ax +ALL ao l +AN ax n +ANCHORAGE ae ng k er dd jh +AND ae n +ANY eh n iy +ANYBODY eh n iy b ah dx iy +APALACHICOLA ae p ax l ae td ch ax k ow l ax +APALACHICOLA+S ae p ax l ae td ch ax k ow l ax z +APRIL ey p r el +ARABIAN ax r ey b iy ax n +ARCTIC aa r t ax k +ARE aa r +AREA eh r iy ax +AREAS eh r iy ax z +AREN+T aa er n +ARKANSAS aa r k ax n s ao +ARKANSAS+S aa r k ax n s ao z +AROUND ax r aw n +ARRIVAL ax r ay v el +ARRIVE ax r ay v +ARRIVED ax r ay v dd +ARRIVING ax r ay v ih ng +ARROW eh r ow +AS ax z +ASTORIA ax s t ao r iy ax +ASUW ey eh s y uw d ah b y uw +ASW ey eh s d ah b y uw +AT ae td +ATLANTIC ax dd l ae n ax k +AUGUST ao g ax s td +AVAILABLE ax v ey l ax b el +AVERAGE ae v er dd jh +BAD b ae dd +BADGER b ae dd jh er +BADGER+S b ae dd jh er z +BAINBRIDGE b ey n b r ih dd jh +BAINBRIDGE+S b ey n b r ih dd jh ax z +BANGKOK b ae ng k aa k +BARGE b aa r dd jh +BASS b ae s +BAY b ey +BE b iy +BEAM b iy m +BEAMS b iy m z +BEEN b ih n +BEFORE b ax f er +BELOW b ax l ow +BERING b eh r ih ng +BETTER b eh dx er +BETWEEN b ax t w iy n +BIDDLE b ih dx el +BIDDLE+S b ih dx el z +BISMARK b ih z m aa r k +BOMBAY b aa m b ey +BOTH b ow th +BOX b aa k s +BRIGHT b r ay td +BRITISH b r ih dx ax sh +BROOKE b r uh k +BROOKE+S b r uh k s +BRUNSWICK b r ah n z w ax k +BRUNSWICK+S b r ah n z w ax k s +BUD-TEST b ah dd t eh s td +BUMP b ah m p +BY b ay +C-CODE s iy k ow dd +C-CODES s iy k ow dd z +C-RATING s iy r ey dx ih ng +C-RATINGS s iy r ey dx ih ng z +C1 s iy w ah n +C2 s iy t uw +C3 s iy th r iy +C4 s iy f ao r +C5 s iy f ay v +CALEDONIA k ae l ax d ow n iy ax +CALIFORNIA k ae l ax f ao r n y ax +CAMDEN k ae m d ax n +CAMDEN+S k ae m d ax n z +CAMPBELL k ae m b el +CAMPBELL+S k ae m b el z +CAN k ax n +CANADA k ae n ax d ax +CAPABILITIES k ey p ax b ih l ax dx iy z +CAPABILITY k ey p ax b ih l ax dx iy +CAPABLE k ey p ax b el +CAPACITIES k ax p ae s ax dx iy z +CAPACITY k ax p ae s ax dx iy +CARRIER k eh r iy er +CARRIER+S k eh r iy er z +CARRIERS k eh r iy er z +CARRY k eh r iy +CASREP k ae s r eh p +CASREPED k ae s r eh pd t +CASREPS k ae s r eh p s +CASUALTY k ae sh uw ax l t iy +CAT-2 k ae t uw +CAT-3 k ae t th r iy +CAT-4 k ae t f ao r +CATEGORIES k ae dx ax g ao r iy z +CATEGORY k ae dx ax g ao r iy +CENTER s eh n t er +CENTERED s eh n t er dd +CENTERING s eh n er ih ng +CEP s iy iy p iy +CHANGE td ch ey n jh +CHANGED td ch ey n jh +CHANGING td ch ey n jh ih ng +CHANNEL td ch ae n el +CHART td ch aa r td +CHARTS td ch aa r ts +CHATTAHOOCHEE td ch ae dx ax hh uw td ch iy +CHATTAHOOCHEE+S td ch ae dx ax hh uw td ch iy z +CHESHIRE td ch eh sh er +CHINA td ch ay n ax +CHOP td ch aa p +CHOPPED td ch aa pd t +CHOPPING td ch aa p ih ng +CIRCLE s er k el +CITRUS s ih dx er s +CITRUS+S s ih dx er s ax z +CITY s ih dx iy +CLEAR k l iy r +CLEARED k l iy r dd +CLEARING k l iy r ih ng +CLEVELAND k l iy v l ax n +CLEVELAND+S k l iy v l ax n z +CLOSE k l ow z +CLOSER k l ow s er +CLOSEST k l ow s ax s td +CODAG k ow d ae g +CODE k ow dd +CODES k ow dd z +COLOR k ah l er +COMPARED k ax m p eh r dd +CONFIDENCE k aa n f ax d ax n s +CONFIDENCE+S k aa n f ax d ax n td s ax z +CONIFER k aa n ax f er +CONIFER+S k aa n ax f er z +CONQUEST k aa ng k w eh s td +CONQUEST+S k aa ng k w eh s td +CONSTANT k aa n s t ax n +CONSTANT+S k aa n s t ax n s +CONSTELLATION k aa n s t ax l ey sh ax n +CONSTELLATION+S k aa n s t ax l ey sh en z +CONVENTIONAL k ax n v eh n sh ax n el +COOK k uh k +COPELAND k ow p l ax n +COPELAND+S k ow p l ax n z +CORAL k ao r el +COULD k uh dd +COULDN+T k uh dx ax n +COUNT k aw n +COUNTED k aw n ax dd +COUNTING k aw n ng +CROVL k r ow v el +CROVLS k r ow v el z +CRUISER k r uw z er +CRUISER+S k r uw z er z +CRUISERS k r uw z er z +CRUISERS+S k r uw z er z +CRUISING k r uw z ih ng +CURRENT k er ax n +CURRENTLY k er ax n t l iy +DALE d ey l +DALE+S d ey l z +DARWIN d aa r w ax n +DATA d ey dx ax +DATE d ey td +DATED d ey dx ax dd +DATES d ey ts +DAVIDSON d ey v ax d s ax n +DAVIDSON+S d ey v ax d s en z +DAY d ey +DAYS d ey z +DDD992 d iy d iy d iy n ay n n ay n t uw +DECEMBER d ax s eh m b er +DECREASE d iy k r iy s +DECREASED d iy k r iy s td +DECREASING d iy k r iy s ih ng +DEFAULT d iy f ao l +DEFAULTS d iy f el ts +DEFINE d ax f ay n +DEFINED d ax f ay n +DEFINING d ax f ay n ih ng +DEFINITION d eh f ax n ih sh ax n +DEFINITIONS d eh f ax n ih sh en z +DEGRADATION d eh g er d ey sh ax n +DEGRADATIONS d eh g er d ey sh en z +DEGRADE d ax g r ey dd +DEGRADED d ax g r ey dx ax dd +DEGRADING d ax g r ey dx ih ng +DEGREES d ax g r iy z +DELETE d ax l iy td +DELETED d ax l iy dx ax dd +DELETING d ax l iy dx ih ng +DENVER d eh n v er +DENVER+S d eh n v er z +DEPLOYED d ax p l oy dd +DEPLOYMENT d ax p l oy m ax n +DEPLOYMENTS d ax p l oy m ax n s +DEPTH d eh p th +DEPTHS d eh pd s +DESTINATION d eh s t ax n ey sh ax n +DESTINATIONS d eh s t ax n ey sh en z +DID d ih dd +DIDN+T d ih d ax n +DIEGO-GARCIA d iy ey g ow g er s iy ax +DIESEL d iy z el +DIM d ih m +DISPLACEMENT d ax s p l ey s m ax n +DISPLACEMENTS d ax s p l ey s m ax n s +DISPLAY d ax s p l ey +DISPLAYED d ax s p l ey dd +DISPLAYING d ax s p l ey ih ng +DISTANCE d ih s t ax n s +DIXON d ih k s ax n +DIXON+S d ih k s en z +DMDS d iy eh m d iy eh s +DO d uw +DOES d ax z +DOESN+T d ah z ax n +DON+T d ow n +DOWNES d aw n z +DOWNES+S d aw n z +DOWNGRADE d aw n g r ey dd +DOWNGRADED d aw n g r ey dx ax dd +DRAFT dd jh r ae f td +DRAFTS dd jh r ae f ts +DRAW dd jh r ao +DUBUQUE d ax b y uw k +DUBUQUE+S d ax b y uw k s +DUE d uw +DURING d er ih ng +EACH iy td ch +EARLIER er l iy er +EARLIEST er l iy ax s td +EARLY er l iy +EAST iy s td +EASTERN iy s t er n +EASTPAC iy s p ae k +EASTPAC+S iy s p ae k s +ECG041 iy s iy dd jh iy z iy r ow f ao r w ah n +ECHO eh k ow +ECONOMIC eh k ax n aa m ax k +EDIT eh dx ax td +EDITED eh dx ax dx ax dd +EDITING eh dx ax dx ih ng +EIGHT ey td +EIGHTEEN ey t iy n +EIGHTEENTH ey t iy n th +EIGHTH ey td th +EIGHTY ey dx iy +EISENHOWER ay z ax n hh aw er +EISENHOWER+S ay z ax n hh aw er z +ELEVEN ax l eh v ax n +ELEVENTH ax l eh v ax n th +ELIZABETH ax l ih z ax b ax th +EMPLOYED ax m p l oy dd +END eh n +ENDING eh n d ih ng +ENGLAND ih ng g l ax n +ENGLAND+S ih ng g l ax n z +ENGLISH ih ng g l ax sh +ENOUGH ax n ah f +ENROUTE ax n r uw td +ENTERPRISE eh n er p r ay z +ENTERPRISE+S eh n er p r ay z ax z +EQUIPMENT iy k w ih pd m ax n +EQUIPPED iy k w ih pd t +ESTEEM ax s t iy m +ESTEEM+S ax s t iy m z +ESTIMATED eh s t ax m ey dx ax dd +ETA iy t iy ey +ETR iy t iy aa r +EVER eh v er +EVERETT eh v r ax td +EXPECTED ax k s p eh kd t ax dd +FANNING f ae n ih ng +FANNING+S f ae n ih ng z +FAR f aa r +FARTHER f aa r dh er +FARTHEST f aa r dh ax s td +FAST f ae s td +FASTER f ae s t er +FASTEST f ae s t ax s td +FEBRUARY f eh b y uw eh r iy +FEET f iy td +FFF088 eh f eh f eh f z iy r ow ey d ey td +FIFTEEN f ih f t iy n +FIFTEENTH f ih f t iy n th +FIFTH f ih f th +FIFTY f ih f t iy +FIGURE f ih g y er +FIGURES f ih g y er z +FIJI f iy dd jh iy +FIND f ay n +FIREBUSH f ay er b uh sh +FIREBUSH+S f ay er b uh sh ax z +FIRST f er s td +FIVE f ay v +FIXED f ih k s td +FLASHER f l ae sh er +FLASHER+S f l ae sh er z +FLEET f l iy td +FLEETS f l iy ts +FLINT f l ih n +FLINT+S f l ih n s +FOOTER f uh dx er +FOR f er +FORMOSA f er m ow s ax +FORTY f ao r dx iy +FOUR f ao r +FOURTEEN f ao r t iy n +FOURTEENTH f ao r t iy n th +FOURTH f ao ax th +FOX f aa k s +FOX+S f aa k s ax z +FREDERICK f r eh dd jh r ax k +FREDERICK+S f r eh d er k s +FRENCH f r eh n td ch +FRESNO f r eh z n ow +FRESNO+S f r eh z n ow z +FRIDAY f r ay d ey +FRIDAY+S f r ay dx iy z +FRIGATE f r ih g ax td +FRIGATE+S f r ih g ax ts +FRIGATES f r ih g ax ts +FRIGATES+S f r ih g ax td s +FROM f r ax m +FUEL f y uw l +FULL f uh l +GALLONS g ae l ax n z +GALVESTON g ae l v ax s t ax n +GAS g ae s +GET g eh td +GIVE g ih v +GLACIER g l ey sh er +GLACIER+S g l ey sh er z +GNOMONIC n ax m aa n ax k +GO g ow +GOING g ow ih ng +GONE g aa n +GREAT g r ey td +GREATER g r ey dx er +GREATEST g r ey dx ax s td +GREEN g r iy n +GRID g r ih dd +GRIDLEY g r ih d l iy +GRIDLEY+S g r ih dd l iy z +GRILL g r ih l +GROSS g r ow s +GROUP g r uw p +GROUPS g r uw p s +GUARDFISH g aa r d f ih sh +GUARDFISH+S g aa r dd f ih sh ax z +GUITARRO g ih t aa r ow +GUITARRO+S g ih t aa r ow z +GULF g ah l f +HAD hh ae dd +HALF hh ae f +HARBOR hh aa r b er +HARPOON hh aa r p uw n +HAS hh ae z +HASN+T hh ae z ax n +HAVE hh ae v +HAVEN+T hh ae v ax n +HAWKBILL hh ao kd b ih l +HAWKBILL+S hh ao kd b ih l z +HE hh iy +HE+S hh iy z +HECTOR hh eh kd t er +HECTOR+S hh eh kd t er z +HEPBURN hh eh b er n +HEPBURN+S hh eh pd b er n z +HER hh er +HERS hh er z +HFDF ey td ch eh f d iy eh f +HIGH hh ay +HIGHER hh ay er +HIGHEST hh ay ax s td +HIM hh ih m +HIS hh ih z +HOME hh ow m +HOMER hh ow m er +HONG-KONG hh ao ng k ao ng +HONOLULU hh aa n ax l uw l uw +HOOKED hh uh kd t +HORNE hh ao r n +HORNE+S hh ao r n z +HOUR aw er +HOURS aw er z +HOW hh aw +HUNDRED hh ah n d er dx +ICE-NINE ay s n ay n +ID ay d iy +IDENTIFICATION ay d eh n ax f ax k ey sh ax n +IDENTIFICATIONS ay d eh n ax f ax k ey sh en z +IF ih f +IN ih n +INCLUDE ax ng k l uw dd +INCLUDED ax ng k l uw dx ax dd +INCLUDING ax ng k l uw dx ih ng +INCREASE ih ng k r iy s +INCREASED ih ng k r iy s td +INCREASING ih ng k r iy s ih ng +INDEPENDENCE ih n d iy p eh n d ax n s +INDEPENDENCE+S ih n d iy p eh n d ax n td s ax z +INDIAN ih n d iy ax n +INDONESIA ih n d ow n ey sh ax +INFORMATION ih n f ax m ey sh ax n +INSTALLED ax n s t aa l dd +INSTEAD ax n s t eh dd +INSUFFICIENT ih n s ax f ih sh ax n +INVOLVED ax n v aa l v dd +INVOLVING ax n v aa l v ih ng +IRONWOOD ay er n w uh dd +IRONWOOD+S ay er n w uh dd z +IS ih z +ISLANDS ay l ax n z +ISN+T ih z ax n +IT ih td +IT+S ih ts +ITS ih ts +JANUARY dd jh ae n y uw er iy +JAPAN dd jh ax p ae n +JARRETT dd jh eh r ax td +JARRETT+S dd jh eh er ts +JARVIS dd jh aa r v ax s +JARVIS+S dd jh aa r v ax s ax z +JASON dd jh ey s ax n +JASON+S dd jh ey s en z +JULY dd jh uw l ay +JUNE dd jh uw n +JUPITER dd jh uw p ax dx er +JUPITER+S dd jh uw p ax dx er z +KENNEDY k eh n ax dx iy +KENNEDY+S k eh n ax dx iy z +KILOMETER k el aa m ax dx er +KILOMETERS k el aa m ax dx er z +KIRK k er k +KIRK+S k er k s +KISKA k ih s k ax +KISKA+S k ih s k ax z +KNOT n aa td +KNOTS n aa ts +KODIAK k ow dd iy ae k +KOREA k ao r iy ax +KOREAN k ao r iy ax n +LAMPS l ae m p s +LANTFLT l ae n t f l iy td +LARGE l aa r dd jh +LARGER l aa r dd jh er +LARGEST l aa r dd jh ax s td +LAST l ae s td +LAT l ae td +LAT-LON l ae td l aa n +LAT-LONS l ae td l aa n z +LATER l ey dx er +LATEST l ey dx ax s td +LATITUDE l ae dx ax t uw dd +LATITUDES l ae dx ax t uw dd z +LATS l ae ts +LEAST l iy s td +LEFT l eh f td +LENGTH l eh ng th +LENGTHS l eh ng th s +LENINGRAD l eh n ax n g r ae dd +LESS l eh s +LETTER l eh dx er +LETTERS l eh dx er z +LEVEL l eh v el +LEVELS l eh v el z +LINK-11 l ih ng k ax l eh v ax n +LIST l ih s td +LOCATED l ow k ey dx ax dd +LOCATION l ow k ey sh ax n +LOCATIONS l ow k ey sh en z +LOCKWOOD l aa k w uh dd +LOCKWOOD+S l aa k w uh dd z +LON l aa n +LONG l ao ng +LONGER l ao ng g er +LONGEST l ao ng g ax s td +LONGITUDE l aa n jh ax t uw dd +LONGITUDES l aa n jh ax t uw dd z +LONS l aa n z +LOW l ow +LOWER l ow er +LOWEST l ow ax s td +M-CODE eh m k ow dd +M-CODES eh m k ow dd z +M-RATING eh m r ey dx ih ng +M-RATINGS eh m r ey dx ih ng z +M1 eh m w ah n +M2 eh m t uw +M3 eh m th r iy +M4 eh m f ao r +M5 eh m f ay v +MADAGASCAR m ae d ax g ae s k aa r +MADE m ey dd +MAKE m ey k +MAKING m ey k ih ng +MANCHESTER m ae n td ch ax s t er +MANHATTAN m ae n hh ae t ax n +MANHATTAN+S m ae n hh ae dx ax n z +MANILA m ax n ih l ax +MANY m eh n iy +MARCH m aa r td ch +MARS m aa r z +MARS+S m aa r z +MAX m ae k s +MAXIMUM m ae k s m ax m +MAY m ey +MCCLUSKY m ax k l ah s k iy +MCCLUSKY+S m ax k l ah s k iy z +ME m iy +MEASURE m ey sh er +MERCATOR m er k ey dx er +MERCURY m er k y er iy +MERCURY+S m er k y er iy z +METEOR m iy t iy er +METEOR+S m iy t iy er z +METERS m iy dx er z +METRIC m eh td ch r ax k +MEXICO m eh k s ax k ow +MIAMI m ay ae m iy +MIDGETT m ih dd jh ax td +MIDGETT+S m ih dd jh ax ts +MIDPAC m ih dd p ae k +MIDPAC+S m ih dd p ae k s +MIDWAY m ih d w ey +MIDWAY+S m ih d w ey z +MILE m ay el +MILES m ay el z +MIND m ay n +MINUTES m ih n ax ts +MISHAWAKA m ih sh ax w aa k ax +MISHAWAKA+S m ih sh ax w aa k ax z +MISSION m ih sh ax n +MISSIONS m ih sh en z +MISSISSIPPI m ih s ax s ih p iy +MISSISSIPPI+S m ih s ax s ih p iy z +MIW eh m ay d ah b y uw +MOB eh m ow b iy +MONDAY m ah n d ey +MONDAY+S m ah n d ey z +MONGOLIA m aa ng g ow l iy ax +MONTH m ah n th +MONTH+S m ah n th s +MONTHS m ah n th s +MONTICELLO m aa n ax s eh l ow +MONTICELLO+S m aa n ax s eh l ow z +MORE m ao r +MOST m ow s td +MOZAMBIQUE m ow z ae m b iy k +MUCH m ah td ch +N92762 eh n n ay n t uw s eh v ax n s ih k s t uw +NAME n ey m +NAMES n ey m z +NAPLES n ey p el z +NASHUA n ae sh uw ax +NASHUA+S n ae sh uw ax z +NEAR n iy r +NEARER n iy r er +NEAREST n iy r ax s td +NEVER n eh v er +NEW n uw +NEW-YORK n uw y ao r k +NEW-ZEALAND n uw z iy l ax n +NEWCASTLE n uw k ae s el +NEWER n uw er +NEWEST n uw ax s td +NEXT n eh k s td +NINE n ay n +NINETEEN n ay n t iy n +NINETEENTH n ay n t iy n th +NINETY n ay n iy +NINTH n ay n th +NO n ow +NOME n ow m +NORTH n ao ax th +NORTHERN n ao r dh er n +NOT n aa td +NOVA n ow v ax +NOVEMBER n ow v eh m b er +NOW n aw +NTDS eh n t iy d iy eh s +NUCLEAR n uw k l iy er +NUMBER n ah m b er +OAKLAND ow k l ax n +OCEAN ow sh ax n +OCTOBER aa kd t ow b er +OF ax v +OFF ao f +OLD ow dx +OLDER ow d er +OLDEST ow l d ax s td +OLYMPIA ow l ih m p iy ax +ON aa n +ONE w ah n +ONLY ow n l iy +OPEN ow p ax n +OR ao r +ORANGE ao er n jh +OSGP ow eh s dd jh iy p iy +OVERALL ow v er ao l +OVERLAY ow v er l ey +OVERLAYS ow v er l ey z +PAC p ae k +PACFLT p ae k f l iy td +PACIFIC p ax s ih f ax k +PANAMA p ae n ax m aa +PARAMETER p er ae m ax dx er +PARAMETERS p er ae m ax dx er z +PEARL p er l +PEORIA p iy ao r iy ax +PEORIA+S p iy ao r iy ax z +PERCENT p er s eh n +PERSIAN p er sh ax n +PERSONNEL p er s ax n eh l +PHILIPPINE f ih l ax p iy n +PHILIPPINES f ih l ax p iy n z +PIGEON p ih dd jh ax n +PIGEON+S p ih dd jh ax n z +PLH003 p iy eh l ey td ch z iy r ow z iy r ow th r iy +PLUCK p l ah k +PLUCK+S p l ah k s +PLUNGER p l ah n jh er +PLUNGER+S p l ah n jh er z +POLLACK p aa l ax k +POLLACK+S p aa l ax k s +POLYNESIA p aa l ax n iy sh ax +PORT p ao r td +PORTS p ao r ts +POSIT p aa z ax td +POSITION p ax z ih sh ax n +POSITIONS p ax z ih sh en z +POSITS p aa z ax ts +POUGHKEEPSIE p uw k ih p s iy +POUGHKEEPSIE+S p uw k ih p s iy z +POWERED p aw er dd +PRAIRIE p r eh r iy +PRAIRIE+S p r eh r iy z +PRESENT p r eh z ax n +PREVIOUS p r iy v iy ax s +PROBLEM p r aa b l ax m +PROBLEMS p r aa b l ax m z +PROJECTION p er dd jh eh k sh ax n +PROPELLED p er p eh l dd +PROPULSION p er p ah l sh ax n +PUFFER p ah f er +PUFFER+S p ah f er z +PUGET-1 p y uw dd jh ax td w ah n +QUARTER k w ao r dx er +QUARTERS k w ao r dx er s +QUEENFISH k w iy n f ih sh +QUEENFISH+S k w iy n f ih sh ax z +RADAR r ey dx aa r +RAMSEY r ae m z iy +RAMSEY+S r ae m z iy z +RANGER r ey n jh er +RANGER+S r ey n jh er z +RATED r ey dx ax dd +RATHBURNE r ae th b er n +RATHBURNE+S r ae th b er n z +RATING r ey dx ih ng +RATINGS r ey dx ih ng z +READINESS r eh dx iy n ax s +REASON r iy z ax n +REASONER r iy z ax n er +REASONER+S r iy z ax n er z +REASONS r iy z en z +RECENT r iy s ax n +RECLAIMER r iy k l ey m er +RECLAIMER+S r iy k l ey m er z +RED r eh dd +REDEFINE r iy d iy f ay n +REDEFINED r iy d iy f ay n +REDEFINING r iy d iy f ay n ih ng +REDISPLAY r iy d ax s p l ey +REDO r iy d uw +REDRAW r iy dd jh r ao +REEVES r iy v z +REEVES+S r iy v z +REMAINING r iy m ey n ih ng +REMARK r iy m aa r k +REMARKS r iy m aa r k s +REPAIR r iy p eh r +REPAIRED r iy p eh r dd +REPAIRING r iy p eh r ih ng +REPLACED r iy p l ey s td +REPORT r iy p ao r td +REPORTED r iy p ao r dx ax dd +REPORTING r iy p ao r dx ih ng +REPORTS r iy p ao r ts +RESET r iy s eh td +RESOLUTION r eh z ax l uw sh ax n +RESOLVED r iy z ao l v dd +RESOURCE r iy s ao r s +RESOURCES r iy s ao r s ax z +REVIEW r iy v y uw +ROSS r ao +SACRAMENTO s ae k er m eh n t ow +SACRAMENTO+S s ae k er m eh n t ow z +SAIL s ey l +SAME s ey m +SAMPLE s ae m p el +SAMPLE+S s ae m p el z +SAN-DIEGO s ae n d iy ey g ow +SAN-FRAN s ae n f r ae n +SASSAFRAS s ae s ax f r ae s +SASSAFRAS+S s ae s ax f r ae s ax z +SATURDAY s ae dx er d ey +SATURDAY+S s ae dx er d ey z +SAVE s ey v +SCHENECTADY s k ax n eh kd t ax dx iy +SCHENECTADY+S s k ax n eh kd t ax dx iy z +SCREEN s k r iy n +SCREENS s k r iy n z +SEA s iy +SEAWOLF s iy w uh l f +SEAWOLF+S s iy w uh l f s +SECOND s eh k ax n +SECURITY s ax k y er ax dx iy +SENSOR s eh n s er +SENSORS s eh n s er z +SEPTEMBER s ax pd t eh m b er +SET s eh td +SETTING s eh dx ih ng +SETTINGS s eh dx ih ng z +SEVEN s eh v ax n +SEVENTEEN s eh v ax n t iy n +SEVENTEENTH s eh v ax n t iy n th +SEVENTH s eh v ax n th +SEVENTY s eh v ax n iy +SHASTA sh ae s t ax +SHASTA+S sh ae s t ax z +SHE sh iy +SHE+S sh iy z +SHERMAN sh er m ax n +SHERMAN+S sh er m ax n z +SHIP sh ih p +SHIPS sh ih p s +SHIPS+S sh ih p s +SHOW sh ow +SHOWING sh ow ih ng +SHOWN sh ow n +SIBERIAN s ay b iy r iy ax n +SIDNEY s ih dd n iy +SINCE s ih n s +SINGAPORE s ih ng ax p ao r +SIX s ih k s +SIXTEEN s ih k s t iy n +SIXTEENTH s ih k s t iy n th +SIXTH s ih k s th +SIXTY s ih k s t iy +SIZE s ay z +SLOW s l ow +SLOWER s l ow er +SLOWEST s l ow ax s td +SLQ-32 eh s eh l k y uw th er dx iy t uw +SMALL s m ao l +SMALLER s m ao l er +SMALLEST s m ao l ax s td +SOHO s ow hh ow +SOLOMON s ao l ax m ax n +SONAR s ow n aa r +SOON s uw n +SOONER s uw n er +SOUTH s aw th +SOUTHERN s ah dh er n +SOVIET s ow v iy ax td +SPEED s p iy dd +SPEEDS s p iy dd z +SPS-40 eh s p iy eh s f ao r dx iy +SPS-48 eh s p iy eh s f ao r dx iy ey td +SQQ-23 eh s k y uw k y uw t w eh n iy th r iy +START s t aa r td +STARTED s t aa r dx ax dd +STARTING s t aa r dx ih ng +STATES s t ey ts +STATION s t ey sh ax n +STATUS s t ey dx ax s +STEAM s t iy m +STEREOGRAPHIC s t eh r iy ow g r ae f ax k +STERETT s t eh r ax td +STERETT+S s t eh r ax ts +STRAIT s td ch r ey td +SUB s ah b +SUB+S s ah b z +SUBIC s uw b ax k +SUBMARINE s ah b m er iy n +SUBMARINE+S s ah b m er iy n z +SUBMARINES s ah b m er iy n z +SUBS s ah b z +SUFFICIENT s ax f ih sh ax n +SUMMARIZE s ah m er ay z +SUNDAY s ah n d ey +SUNDAY+S s ah n d ey z +SUPPLIES s ax p l ay z +SUPPLY s ax p l ay +SUPPOSED s ax p ow z +SURFACE s er f ax s +SUSTAINED s ax s t ey n +SWITCH s w ih td ch +SWITCHES s w ih td ch ax z +SWORDFISH s ao r d f ih sh +SWORDFISH+S s ao r dd f ih sh ax z +SYSTEM s ih s t ax m +T-LAM t iy l ae m +TACAN t ae k ae n +TAIWAN t ay w aa n +TAKE t ey k +TAKEN t ey k ax n +TASM t ae s ax m +TEN t eh n +TENTH t eh n th +TEST t eh s td +TEXAS t eh k s ax s +TEXAS+S t eh k s ax s ax z +TFCC t iy eh f s iy s iy +THAILAND t ay l ae n +THAN dh ae n +THAT dh ae td +THE dh ax +THEIR dh eh r +THEM dh eh m +THERE dh eh r +THESE dh iy z +THEY dh ey +THIRD th er dd +THIRTEEN th er t iy n +THIRTEENTH th er t iy n th +THIRTIETH th er dx iy ax th +THIRTY th er dx iy +THIS dh ih s +THOSE dh ow z +THOUSAND th aw z ax n +THREAT th r eh td +THREATS th r eh ts +THREE th r iy +THURSDAY th er z d ey +THURSDAY+S th er z d ey z +TICONDEROGA t ay k aa n d er ow g ax +TICONDEROGA+S t ay k aa n d er ow g ax z +TIME t ay m +TIMES t ay m z +TO t uw +TODAY t ax d ey +TODAY+S t ax d ey z +TOGGLE t aa g el +TOGGLED t aa g el dd +TOGGLING t aa g el ih ng +TOKYO t ow k iy ow +TOMORROW t ax m ao r ow +TOMORROW+S t ax m ao r ow z +TONKIN t ao ng k ax n +TONS t ah n z +TOTAL t ow dx el +TOWNSVILLE t aw n z v el +TRACK td ch r ae k +TRACKS td ch r ae k s +TRAINING td ch r ey n ih ng +TRIPOLI td ch r ih p ow l iy +TRIPOLI+S td ch r ih p ow l iy z +TRUE-VIEW td ch r uw v y uw +TUESDAY t uw z d ey +TUESDAY+S t uw z d ey z +TURBINE t er b ax n +TURN t er n +TURNED t er n +TURNING t er n ih ng +TUSCALOOSA t ah s k ax l uw s ax +TUSCALOOSA+S t ah s k ax l uw s ax z +TWELFTH t w eh l f th +TWELVE t w eh l v +TWENTIETH t w ah n iy ax th +TWENTY t w ah n iy +TWO t uw +TYPE t ay p +TYPES t ay p s +UNION y uw n y ax n +UNIT y uw n ax td +UNITED y uw n ay dx ax dd +UNTIL ax n t ih l +UOM y uw ow eh m +UPDATE ah pd d ey td +UPDATED ah pd d ey dx ax dd +UPDATES ah pd d ey ts +UPGRADE ah pd g r ey dd +UPGRADED ah pd g r ey dx ax dd +USA y uw eh s ey +USE y uw z +USING y uw z ih ng +USN y uw eh s eh n +VALUE v ae l y uw +VALUES v ae l y uw z +VANCOUVER v ae ng k uw v er +VANCOUVER+S v ae ng k uw v er z +VANDERGRIFT v ae n d er g r ih f td +VANDERGRIFT+S v ae n d er g r ih f ts +VARIOUS v eh r iy ax s +VESSEL v eh s el +VESSELS v eh s el z +VICTORIA v ax kd t ao r iy ax +VIRGINIA v er dd jh ih n y ax +VIRGINIA+S v er dd jh ih n y ax z +VISUAL v ih sh uw el +WABASH w aa b ae sh +WABASH+S w aa b ae sh ax z +WADSWORTH w aa dd z w er th +WADSWORTH+S w aa dd z w er th s +WAS w ah z +WASN+T w ah z ax n +WASP w aa s p +WASP+S w aa s p s +WE w iy +WEDNESDAY w eh n z d ey +WEDNESDAY+S w eh n z d ey z +WEEK w iy k +WEEK+S w iy k s +WEEKS w iy k s +WELLINGTON w eh l ax ng t ax n +WENT w eh n +WERE w er +WEREN+T w er n +WEST w eh s td +WESTERN w eh s t er n +WESTPAC w eh s p ae k +WESTPAC+S w eh s p ae k s +WHAT w ah td +WHAT+RE w ah dx er +WHAT+S w ah ts +WHEN w eh n +WHEN+LL w eh n el +WHEN+S w eh n z +WHERE w eh r +WHERE+S w eh r z +WHICH w ih td ch +WHIPPLE w ih p el +WHIPPLE+S w ih p el z +WHO hh uw +WHO+S hh uw z +WHOSE hh uw z +WHY w ay +WHY+S w ay z +WICHITA w ih td ch ax t ao +WICHITA+S w ih td ch ax t ao z +WILL w el +WILLAMETTE w ih l ax m eh td +WILLAMETTE+S w ih l ax m eh ts +WINAMAC w ih n ax m ae k +WINAMAC+S w ih n ax m ae k s +WINDOW w ih n d ow +WINDOWS w ih n d ow z +WITH w ax th +WITHIN w ax th ih n +WITHOUT w ax th aw td +WON+T w ow n +WORSE w er s +WORST w er s td +WOULD w uh dd +WOULDN+T w uh d ax n +YANKEE y ae ng k iy +YEAR y iy r +YEARS y iy ax z +YELLOW y eh l ow +YESTERDAY y eh s t er d ey +YESTERDAY+S y eh s t er dx iy z +YET y eh td +YORKTOWN y ao r kd t aw n +YORKTOWN+S y ao r kd t aw n z +ZULU z uw l uw diff --git a/samples/RMHTK/lib/dicts/pcdsril.txt b/samples/RMHTK/lib/dicts/pcdsril.txt new file mode 100755 index 0000000..a2dcd75 --- /dev/null +++ b/samples/RMHTK/lib/dicts/pcdsril.txt @@ -0,0 +1,1010 @@ +; +; EXPERIMENTAL - DO NOT CITE WITHOUT THE AUTHORS' PERMISSIONS. +; +* NAME 'pcdsril.txt' +* DESC 'DARPA RM dB Words, SRI most likely phones' +* FORMAT 'NIST2' +* code is compositional and separated by " ". +* element type is "word" +* order is "alphabetic". +* type_case is "lower" +* lower code is "pcdsrip2.txt" +; This version is a "most likely phones" lexicon received from +; Mike Cohen of SRI 1/31/90. These pronunciations are based on +; the most frequent forms observed in a training set from the +; Resource Management database. SRI does not claim that +; these represent the most likely pronunciations in general. +; Spellings have been converted to SNOR except lower-case. +; Also, "-pau-" has been commented out to agree with other lexicons. +; -pau- - +a ax +a42128 q ey+1 f ao+1 r tcl t uw+1 w ah+1 n tcl t uw+1 ey+1 tcl +aaw q ey+1 q ey+1 dcl d ah+1 bcl b y uw +aberdeen q ae+1 bcl b axr dcl d iy+1 n +aboard ax bcl b ao+1 r dcl +above ax bcl b ah+1 v +add q ae+1 dcl +added q ae+1 dx ax dcl +adding q ae+1 dx ih ng +affect ax f eh+1 kcl +after q ae+1 f tcl t axr +again ax gcl g eh+1 n +ajax q ey+1 dcl jh ae kcl k s +ajax+s q ey+1 dcl jh ae kcl k s ax z +alaska ax l ae+1 s kcl k ax +alert ax l er+1 tcl +alerts ax l er+1 tcl t s +alexandria q ae+1 l ax kcl z ae+1 n d r iy ax +all q ao+1 l +an ax n +anchorage q ae+1 ng kcl k axr dcl jh +and q ae n +any eh+1 n iy +anybody q eh+1 n iy bcl b ah+1 dx iy +apalachicola q ae+1 pcl p ax l ae+1 tcl ch ax kcl k ow+1 l ax +apalachicola+s q ae+1 pcl p ax l ae+1 tcl ch ax kcl k ow+1 l ax z +april q ey+1 pcl p r el +arabian ax r ey+1 bcl b iy ax n +arctic q aa+1 r tcl t ax kcl k +are aa r +area q eh+1 r iy ax +areas q eh+1 r iy ax z +aren+t aa axr n +arkansas q aa+1 r kcl k ax n s ao +arkansas+s q aa+1 r kcl k ax n s ao z +around ax r aw+1 n +arrival ax r ay+1 v el +arrive ax r ay+1 v +arrived ax r ay+1 v dcl +arriving ax r ay+1 v ih ng +arrow q eh+1 r ow +as ax z +astoria ax s tcl t ao+1 r iy ax +asuw q ey+1 eh+1 s y uw+1 dcl d ah+1 bcl b y uw +asw q ey+1 eh+1 s dcl d ah+1 bcl b y uw +at ae tcl +atlantic ax dcl l ae+1 n ax kcl k +august q ao+1 gcl g ax s tcl +available ax v ey+1 l ax bcl b el +average q ae+1 v axr dcl jh +bad bcl b ae+1 dcl +badger bcl b ae+1 dcl jh axr +badger+s bcl b ae+1 dcl jh axr z +bainbridge bcl b ey+1 n bcl b r ih+1 dcl jh +bainbridge+s bcl b ey+1 n bcl b r ih+1 dcl jh ax z +bangkok bcl b ae+1 ng k aa kcl k +barge bcl b aa+1 r dcl jh +bass bcl b ae+1 s +bay bcl b ey+1 +be bcl b iy+1 +beam bcl b iy+1 m +beams bcl b iy+1 m z +been bcl b ih+1 n +before bcl b ax f axr +below bcl b ax l ow+1 +bering bcl b eh+1 r ih ng +better bcl b eh+1 dx axr +between bcl b ax tcl t w iy+1 n +biddle bcl b ih+1 dx el +biddle+s bcl b ih+1 dx el z +bismark bcl b ih+1 z m aa r kcl k +bombay bcl b aa m bcl b ey+1 +both bcl b ow+1 th +box bcl b aa+1 kcl k s +bright bcl b r ay+1 tcl +british bcl b r ih+1 dx ax sh +brooke bcl b r uh+1 kcl k +brooke+s bcl b r uh+1 kcl k s +brunswick bcl b r ah+1 n z w ax kcl k +brunswick+s bcl b r ah+1 n z w ax kcl k s +bud-test bcl b ah+1 dcl tcl t eh+1 s tcl +bump bcl b ah+1 m pcl p +by bcl b ay +c-code s iy+1 kcl k ow+1 dcl +c-codes s iy+1 kcl k ow+1 dcl z +c-rating s iy+1 r ey+1 dx ih ng +c-ratings s iy+1 r ey+1 dx ih ng z +c1 s iy+1 w ah+1 n +c2 s iy+1 tcl t uw+1 +c3 s iy+1 th r iy+1 +c4 s iy+1 f ao+1 r +c5 s iy+1 f ay+1 v +caledonia kcl k ae+1 l ax dcl d ow+1 n iy ax +california kcl k ae+1 l ax f ao+1 r n y ax +camden kcl k ae+1 m d ax n +camden+s kcl k ae+1 m d ax n z +campbell kcl k ae+1 m b el +campbell+s kcl k ae+1 m b el z +can kcl k ax n +canada kcl k ae+1 n ax dcl d ax +capabilities kcl k ey+1 pcl p ax bcl b ih+1 l ax dx iy z +capability kcl k ey+1 pcl p ax bcl b ih+1 l ax dx iy +capable kcl k ey+1 pcl p ax bcl b el +capacities kcl k ax pcl p ae+1 s ax dx iy z +capacity kcl k ax pcl p ae+1 s ax dx iy +carrier kcl k eh+1 r iy axr +carrier+s kcl k eh+1 r iy axr z +carriers kcl k eh+1 r iy axr z +carry kcl k eh+1 r iy +casrep kcl k ae+1 s r eh+1 pcl p +casreped kcl k ae+1 s r eh+1 pcl tcl t +casreps kcl k ae+1 s r eh+1 pcl p s +casualty kcl k ae+1 zh uw ax l tcl t iy +cat-2 kcl k ae+1 tcl t uw+1 +cat-3 kcl k ae+1 tcl t th r iy+1 +cat-4 kcl k ae+1 tcl t f ao+1 r +categories kcl k ae+1 dx ax gcl g ao r iy z +category kcl k ae+1 dx ax gcl g ao r iy +center s eh+1 n tcl t axr +centered s eh+1 n tcl t axr dcl +centering s eh+1 n axr ih ng +cep s iy+1 iy+1 pcl p iy+1 +change tcl ch ey+1 n jh +changed tcl ch ey+1 n jh +changing tcl ch ey+1 n jh ih ng +channel tcl ch ae+1 n el +chart tcl ch aa+1 r tcl +charts tcl ch aa+1 r tcl t s +chattahoochee tcl ch ae+1 dx ax hh uw+1 tcl ch iy +chattahoochee+s tcl ch ae+1 dx ax hh uw+1 tcl ch iy z +cheshire tcl ch eh+1 sh axr +china tcl ch ay+1 n ax +chop tcl ch aa+1 pcl p +chopped tcl ch aa+1 pcl tcl t +chopping tcl ch aa+1 pcl p ih ng +circle s er+1 kcl k el +citrus s ih+1 dx axr s +citrus+s s ih+1 dx axr s ax z +city s ih+1 dx iy +clear kcl k l iy+1 r +cleared kcl k l iy+1 r dcl +clearing kcl k l iy+1 r ih ng +cleveland kcl k l iy+1 v l ax n +cleveland+s kcl k l iy+1 v l ax n z +close kcl k l ow+1 z +closer kcl k l ow+1 s axr +closest kcl k l ow+1 s ax s tcl +codag kcl k ow+1 dcl d ae+1 gcl +code kcl k ow+1 dcl +codes kcl k ow+1 dcl z +color kcl k ah+1 l axr +compared kcl k ax m pcl p eh+1 r dcl +confidence kcl k aa+1 n f ax dcl d ax n s +confidence+s kcl k aa+1 n f ax dcl d ax n tcl s ax z +conifer kcl k aa+1 n ax f axr +conifer+s kcl k aa+1 n ax f axr z +conquest kcl k aa+1 ng kcl k w eh s tcl +conquest+s kcl k aa+1 ng kcl k w eh s tcl +constant kcl k aa+1 n s tcl t ax n +constant+s kcl k aa+1 n s tcl t ax n s +constellation kcl k aa+1 n s tcl t ax l ey+1 sh ax n +constellation+s kcl k aa+1 n s tcl t ax l ey+1 sh en z +conventional kcl k ax n v eh+1 n sh ax n el +cook kcl k uh+1 kcl k +copeland kcl k ow+1 pcl p l ax n +copeland+s kcl k ow+1 pcl p l ax n z +coral kcl k ao+1 r el +could kcl k uh dcl +couldn+t kcl k uh+1 dx ax n +count kcl k aw+1 n +counted kcl k aw+1 n ax dcl +counting kcl k aw+1 n eng +crovl kcl k r ow+1 v el +crovls kcl k r ow+1 v el z +cruiser kcl k r uw+1 z axr +cruiser+s kcl k r uw+1 z axr z +cruisers kcl k r uw+1 z axr z +cruisers+s kcl k r uw+1 z axr z +cruising kcl k r uw+1 z ih ng +current kcl k er+1 ax n +currently kcl k er+1 ax n tcl t l iy +dale dcl d ey+1 l +dale+s dcl d ey+1 l z +darwin dcl d aa+1 r w ax n +data dcl d ey+1 dx ax +date dcl d ey+1 tcl +dated dcl d ey+1 dx ax dcl +dates dcl d ey+1 tcl t s +davidson dcl d ey+1 v ax dcl d s ax n +davidson+s dcl d ey+1 v ax dcl d s en z +day dcl d ey+1 +days dcl d ey+1 z +ddd992 dcl d iy+1 dcl d iy+1 dcl d iy+1 n ay+1 n n ay+1 n tcl t uw+1 +december dcl d ax s eh+1 m b axr +decrease dcl d iy+1 kcl k r iy s +decreased dcl d iy+1 kcl k r iy s tcl +decreasing dcl d iy+1 kcl k r iy s ih ng +default dcl d iy+1 f ao l +defaults dcl d iy+1 f el tcl t s +define dcl d ax f ay+1 n +defined dcl d ax f ay+1 n +defining dcl d ax f ay+1 n ih ng +definition dcl d eh+1 f ax n ih+1 sh ax n +definitions dcl d eh+1 f ax n ih+1 sh en z +degradation dcl d eh+1 gcl g axr dcl d ey+1 sh ax n +degradations dcl d eh+1 gcl g axr dcl d ey+1 sh en z +degrade dcl d ax gcl g r ey+1 dcl +degraded dcl d ax gcl g r ey+1 dx ax dcl +degrading dcl d ax gcl g r ey+1 dx ih ng +degrees dcl d ax gcl g r iy+1 z +delete dcl d ax l iy+1 tcl +deleted dcl d ax l iy+1 dx ax dcl +deleting dcl d ax l iy+1 dx ih ng +denver dcl d eh+1 n v axr +denver+s dcl d eh+1 n v axr z +deployed dcl d ax pcl p l oy+1 dcl +deployment dcl d ax pcl p l oy+1 m ax n +deployments dcl d ax pcl p l oy+1 m ax n s +depth d eh+1 pcl p th +depths dcl d eh+1 pcl s +destination dcl d eh+1 s tcl t ax n ey+1 sh ax n +destinations dcl d eh+1 s tcl t ax n ey+1 sh en z +did d ih+1 dcl +didn+t dcl d ih+1 dcl d ax n +diego-garcia dcl d iy ey+1 gcl g ow gcl g axr s iy+1 ax +diesel dcl d iy+1 z el +dim dcl d ih+1 m +displacement d ax s pcl p l ey+1 s m ax n +displacements d ax s pcl p l ey+1 s m ax n s +display d ax s pcl p l ey+1 +displayed d ax s pcl p l ey+1 dcl +displaying d ax s pcl p l ey+1 ih ng +distance dcl d ih+1 s tcl t ax n s +dixon dcl d ih+1 kcl k s ax n +dixon+s dcl d ih+1 kcl k s en z +dmds dcl d iy+1 eh+1 m dcl d iy+1 eh+1 s +do d uw+1 +does d ax z +doesn+t dcl d ah+1 z ax n +don+t dcl d ow+1 n +downes dcl d aw+1 n z +downes+s dcl d aw+1 n z +downgrade dcl d aw+1 n g r ey+1 dcl +downgraded dcl d aw+1 n g r ey+1 dx ax dcl +draft dcl jh r ae+1 f tcl +drafts dcl jh r ae+1 f tcl t s +draw dcl jh r ao+1 +dubuque d ax bcl b y uw+1 kcl k +dubuque+s d ax bcl b y uw+1 kcl k s +due dcl d uw+1 +during dcl d er+1 ih ng +each q iy+1 tcl ch +earlier q er+1 l iy axr +earliest q er+1 l iy ax s tcl +early q er+1 l iy +east iy+1 s tcl +eastern q iy+1 s tcl t axr n +eastpac q iy+1 s pcl p ae+1 kcl k +eastpac+s q iy+1 s pcl p ae+1 kcl k s +ecg041 q iy+1 s iy+1 dcl jh iy+1 z iy+1 r ow f ao+1 r w ah+1 n +echo q eh+1 kcl k ow +economic q eh+1 kcl k ax n aa+1 m ax kcl k +edit q eh+1 dx ax tcl +edited q eh+1 dx ax dx ax dcl +editing q eh+1 dx ax dx ih ng +eight ey+1 tcl +eighteen q ey+1 tcl t iy+1 n +eighteenth q ey+1 tcl t iy+1 n th +eighth q ey+1 tcl th +eighty q ey+1 dx iy +eisenhower q ay+1 z ax n hh aw+1 axr +eisenhower+s q ay+1 z ax n hh aw+1 axr z +eleven ax l eh+1 v ax n +eleventh ax l eh+1 v ax n th +elizabeth ax l ih+1 z ax bcl b ax th +employed ax m pcl p l oy+1 dcl +end q eh+1 n +ending q eh+1 n d ih ng +england q ih+1 ng g l ax n +england+s q ih+1 ng g l ax n z +english q ih+1 ng g l ax sh +enough ax n ah+1 f +enroute ax n r uw+1 tcl +enterprise q eh+1 n axr pcl p r ay+1 z +enterprise+s q eh+1 n axr pcl p r ay+1 z ax z +equipment iy kcl k w ih+1 pcl m ax n +equipped iy kcl k w ih+1 pcl tcl t +esteem ax s tcl t iy+1 m +esteem+s ax s tcl t iy+1 m z +estimated q eh+1 s tcl t ax m ey+1 dx ax dcl +eta q iy+1 tcl t iy+1 q ey+1 +etr q iy+1 tcl t iy+1 aa+1 r +ever q eh+1 v axr +everett q eh+1 v r ax tcl +expected ax kcl k s pcl p eh+1 kcl t ax dcl +fanning f ae+1 n ih ng +fanning+s f ae+1 n ih ng z +far f aa+1 r +farther f aa+1 r dh axr +farthest f aa+1 r dh ax s tcl +fast f ae+1 s tcl +faster f ae+1 s tcl t axr +fastest f ae+1 s tcl t ax s tcl +february f eh+1 bcl b y uw eh+1 r iy +feet f iy+1 tcl +fff088 q eh+1 f eh+1 f eh+1 f z iy+1 r ow ey+1 dcl d ey+1 tcl +fifteen f ih+1 f tcl t iy+1 n +fifteenth f ih+1 f tcl t iy+1 n th +fifth f ih+1 f th +fifty f ih+1 f tcl t iy +figure f ih+1 gcl g y axr +figures f ih+1 gcl g y axr z +fiji f iy+1 dcl jh iy +find f ay+1 n +firebush f ay+1 axr bcl b uh+1 sh +firebush+s f ay+1 axr bcl b uh+1 sh ax z +first f er+1 s tcl +five f ay+1 v +fixed f ih+1 kcl k s tcl +flasher f l ae+1 sh axr +flasher+s f l ae+1 sh axr z +fleet f l iy+1 tcl +fleets f l iy+1 tcl t s +flint f l ih+1 n +flint+s f l ih+1 n s +footer f uh+1 dx axr +for f axr +formosa f axr m ow+1 s ax +forty f ao+1 r dx iy +four f ao+1 r +fourteen f ao+1 r tcl t iy+1 n +fourteenth f ao+1 r tcl t iy+1 n th +fourth f ao+1 ax th +fox f aa+1 kcl k s +fox+s f aa+1 kcl k s ax z +frederick f r eh+1 dcl jh r ax kcl k +frederick+s f r eh+1 dcl d axr kcl k s +french f r eh+1 n tcl ch +fresno f r eh+1 z n ow +fresno+s f r eh+1 z n ow z +friday f r ay+1 dcl d ey +friday+s f r ay+1 dx iy z +frigate f r ih+1 gcl g ax tcl +frigate+s f r ih+1 gcl g ax tcl t s +frigates f r ih+1 gcl g ax tcl t s +frigates+s f r ih+1 gcl g ax tcl s +from f r ax m +fuel f y uw+1 l +full f uh+1 l +gallons gcl g ae+1 l ax n z +galveston gcl g ae+1 l v ax s tcl t ax n +gas gcl g ae+1 s +get g eh+1 tcl +give g ih+1 v +glacier gcl g l ey+1 sh axr +glacier+s gcl g l ey+1 sh axr z +gnomonic n ax m aa+1 n ax kcl k +go gcl g ow+1 +going gcl g ow+1 ih ng +gone gcl g aa+1 n +great gcl g r ey+1 tcl +greater gcl g r ey+1 dx axr +greatest gcl g r ey+1 dx ax s tcl +green gcl g r iy+1 n +grid gcl g r ih+1 dcl +gridley gcl g r ih+1 dcl d l iy +gridley+s gcl g r ih+1 dcl l iy z +grill gcl g r ih+1 l +gross gcl g r ow+1 s +group gcl g r uw+1 pcl p +groups gcl g r uw+1 pcl p s +guardfish gcl g aa+1 r dcl d f ih+1 sh +guardfish+s gcl g aa+1 r dcl f ih+1 sh ax z +guitarro gcl g ih tcl t aa+1 r ow +guitarro+s gcl g ih tcl t aa+1 r ow z +gulf gcl g ah+1 l f +had hh ae dcl +half hh ae+1 f +harbor hh aa+1 r bcl b axr +harpoon hh aa r pcl p uw+1 n +has hh ae z +hasn+t hh ae+1 z ax n +have hh ae v +haven+t hh ae v ax n +hawkbill hh ao+1 kcl b ih+1 l +hawkbill+s hh ao+1 kcl b ih+1 l z +he hh iy+1 +he+s hv iy+1 z +hector hh eh+1 kcl t axr +hector+s hh eh+1 kcl t axr z +hepburn hh eh+1 bcl b axr n +hepburn+s hh eh+1 pcl b axr n z +her hh axr +hers hh er+1 z +hfdf q ey+1 tcl ch eh+1 f dcl d iy+1 eh+1 f +high hh ay+1 +higher hh ay+1 axr +highest hh ay+1 ax s tcl +him hh ih m +his hh ih z +home hh ow+1 m +homer hh ow+1 m axr +hong-kong hh ao+1 ng kcl k ao+1 ng +honolulu hh aa+1 n ax l uw+1 l uw +hooked hh uh+1 kcl t +horne hh ao+1 r n +horne+s hh ao+1 r n z +hour q aw+1 axr +hours aw+1 axr z +how hh aw +hundred hh ah+1 n d axr dx +ice-nine q ay+1 s n ay+1 n +id q ay+1 dcl d iy+1 +identification ay dcl d eh+1 n ax f ax kcl k ey+1 sh ax n +identifications ay dcl d eh+1 n ax f ax kcl k ey+1 sh en z +if ih f +in ih n +include ax ng kcl k l uw+1 dcl +included ax ng kcl k l uw+1 dx ax dcl +including ax ng kcl k l uw+1 dx ih ng +increase q ih+1 ng kcl k r iy s +increased q ih+1 ng kcl k r iy s tcl +increasing q ih+1 ng kcl k r iy s ih ng +independence q ih+1 n d iy pcl p eh+1 n d ax n s +independence+s q ih+1 n d iy pcl p eh+1 n d ax n tcl s ax z +indian q ih+1 n d iy ax n +indonesia q ih+1 n d ow n ey+1 zh ax +information q ih+1 n f ax m ey+1 sh ax n +installed ax n s tcl t aa+1 l dcl +instead ax n s tcl t eh+1 dcl +insufficient q ih+1 n s ax f ih+1 sh ax n +involved ax n v aa+1 l v dcl +involving ax n v aa+1 l v ih ng +ironwood q ay+1 axr n w uh+1 dcl +ironwood+s q ay+1 axr n w uh+1 dcl z +is ih z +islands q ay+1 l ax n z +isn+t q ih+1 z ax n +it ih tcl +it+s ih tcl t s +its ih tcl t s +january dcl jh ae+1 n y uw axr iy +japan dcl jh ax pcl p ae+1 n +jarrett dcl jh eh+1 r ax tcl +jarrett+s dcl jh eh+1 axr tcl t s +jarvis dcl jh aa+1 r v ax s +jarvis+s dcl jh aa+1 r v ax s ax z +jason dcl jh ey+1 s ax n +jason+s dcl jh ey+1 s en z +july dcl jh uw l ay+1 +june dcl jh uw+1 n +jupiter dcl jh uw+1 pcl p ax dx axr +jupiter+s dcl jh uw+1 pcl p ax dx axr z +kennedy kcl k eh+1 n ax dx iy +kennedy+s kcl k eh+1 n ax dx iy z +kilometer kcl k el aa+1 m ax dx axr +kilometers kcl k el aa+1 m ax dx axr z +kirk kcl k er+1 kcl k +kirk+s kcl k er+1 kcl k s +kiska kcl k ih+1 s kcl k ax +kiska+s kcl k ih+1 s kcl k ax z +knot n aa+1 tcl +knots n aa+1 tcl t s +kodiak kcl k ow+1 dcl iy ae+1 kcl k +korea kcl k ao r iy+1 ax +korean kcl k ao r iy+1 ax n +lamps l ae+1 m p s +lantflt l ae+1 n t f l iy+1 tcl +large l aa+1 r dcl jh +larger l aa+1 r dcl jh axr +largest l aa+1 r dcl jh ax s tcl +last l ae+1 s tcl +lat l ae+1 tcl +lat-lon l ae+1 tcl q l aa+1 n +lat-lons l ae+1 tcl q l aa+1 n z +later l ey+1 dx axr +latest l ey+1 dx ax s tcl +latitude l ae+1 dx ax tcl t uw+1 dcl +latitudes l ae+1 dx ax tcl t uw+1 dcl z +lats l ae+1 tcl t s +least l iy+1 s tcl +left l eh+1 f tcl +length l eh+1 ng th +lengths l eh+1 ng th s +leningrad l eh+1 n ax n g r ae+1 dcl +less l eh+1 s +letter l eh+1 dx axr +letters l eh+1 dx axr z +level l eh+1 v el +levels l eh+1 v el z +link-11 l ih+1 ng kcl k ax l eh+1 v ax n +list l ih+1 s tcl +located l ow+1 kcl k ey dx ax dcl +location l ow kcl k ey+1 sh ax n +locations l ow kcl k ey+1 sh en z +lockwood l aa+1 kcl k w uh+1 dcl +lockwood+s l aa+1 kcl k w uh+1 dcl z +lon l aa+1 n +long l ao+1 ng +longer l ao+1 ng g axr +longest l ao+1 ng g ax s tcl +longitude l aa+1 n jh ax tcl t uw+1 dcl +longitudes l aa+1 n jh ax tcl t uw+1 dcl z +lons l aa+1 n z +low l ow+1 +lower l ow+1 axr +lowest l ow+1 ax s tcl +m-code q eh+1 m kcl k ow+1 dcl +m-codes q eh+1 m kcl k ow+1 dcl z +m-rating q eh+1 m r ey+1 dx ih ng +m-ratings q eh+1 m r ey+1 dx ih ng z +m1 q eh+1 m w ah+1 n +m2 q eh+1 m tcl t uw+1 +m3 q eh+1 m th r iy+1 +m4 q eh+1 m f ao+1 r +m5 q eh+1 m f ay+1 v +madagascar m ae+1 dcl d ax gcl g ae+1 s kcl k aa r +made m ey+1 dcl +make m ey+1 kcl k +making m ey+1 kcl k ih ng +manchester m ae+1 n tcl ch ax s tcl t axr +manhattan m ae n hh ae+1 tcl t ax n +manhattan+s m ae n hh ae+1 dx ax n z +manila m ax n ih+1 l ax +many m eh+1 n iy +march m aa+1 r tcl ch +mars m aa+1 r z +mars+s m aa+1 r z +max m ae+1 kcl k s +maximum m ae+1 kcl k s em ax m +may m ey+1 +mcclusky m ax kcl k l ah+1 s kcl k iy +mcclusky+s m ax kcl k l ah+1 s kcl k iy z +me m iy+1 +measure m ey+1 zh axr +mercator m axr kcl k ey+1 dx axr +mercury m er+1 kcl k y axr iy +mercury+s m er+1 kcl k y axr iy z +meteor m iy+1 tcl t iy axr +meteor+s m iy+1 tcl t iy axr z +meters m iy+1 dx axr z +metric m eh+1 tcl ch r ax kcl k +mexico m eh+1 kcl k s ax kcl k ow +miami m ay ae+1 m iy +midgett m ih+1 dcl jh ax tcl +midgett+s m ih+1 dcl jh ax tcl t s +midpac m ih+1 dcl pcl p ae+1 kcl k +midpac+s m ih+1 dcl pcl p ae+1 kcl k s +midway m ih+1 dcl d w ey+1 +midway+s m ih+1 dcl d w ey+1 z +mile m ay+1 el +miles m ay+1 el z +mind m ay+1 n +minutes m ih+1 n ax tcl t s +mishawaka m ih+1 sh ax w aa+1 kcl k ax +mishawaka+s m ih+1 sh ax w aa+1 kcl k ax z +mission m ih+1 sh ax n +missions m ih+1 sh en z +mississippi m ih+1 s ax s ih+1 pcl p iy +mississippi+s m ih+1 s ax s ih+1 pcl p iy z +miw q eh+1 m ay+1 dcl d ah+1 bcl b y uw +mob q eh+1 m ow+1 bcl b iy+1 +monday m ah+1 n d ey +monday+s m ah+1 n d ey z +mongolia m aa ng g ow+1 l iy ax +month m ah+1 n th +month+s m ah+1 n th s +months m ah+1 n th s +monticello m aa+1 n ax s eh+1 l ow +monticello+s m aa+1 n ax s eh+1 l ow z +more m ao+1 r +most m ow+1 s tcl +mozambique m ow+1 z ae m bcl b iy+1 kcl k +much m ah tcl ch +n92762 q eh+1 n n ay+1 n tcl t uw+1 s eh+1 v ax n s ih+1 kcl k s tcl t uw+1 +name n ey+1 m +names n ey+1 m z +naples n ey+1 pcl p el z +nashua n ae+1 sh uw ax +nashua+s n ae sh uw ax z +near n iy+1 r +nearer n iy+1 r axr +nearest n iy+1 r ax s tcl +never n eh+1 v axr +new n uw+1 +new-york n uw+1 y ao+1 r kcl k +new-zealand n uw+1 z iy+1 l ax n +newcastle n uw+1 kcl k ae+1 s el +newer n uw+1 axr +newest n uw+1 ax s tcl +next n eh+1 kcl k s tcl +nine n ay+1 n +nineteen n ay+1 n tcl t iy+1 n +nineteenth n ay+1 n tcl t iy+1 n th +ninety n ay+1 n iy +ninth n ay+1 n th +no n ow+1 +nome n ow+1 m +north n ao+1 ax th +northern n ao+1 r dh axr n +not n aa+1 tcl +nova n ow+1 v ax +november n ow v eh+1 m b axr +now n aw+1 +ntds q eh+1 n tcl t iy+1 dcl d iy+1 eh+1 s +nuclear n uw+1 kcl k l iy axr +number n ah+1 m b axr +oakland ow+1 kcl k l ax n +ocean ow+1 sh ax n +october aa kcl t ow+1 bcl b axr +of ax v +off q ao+1 f +old ow+1 dx +older ow+1 dcl d axr +oldest ow+1 l dcl d ax s tcl +olympia ow l ih+1 m pcl p iy ax +on q aa n +one w ah+1 n +only ow+1 n l iy +open ow+1 pcl p ax n +or ao r +orange ao+1 axr n jh +osgp q ow+1 eh+1 s dcl jh iy+1 pcl p iy+1 +overall q ow+1 v axr ao+1 l +overlay q ow+1 v axr l ey+1 +overlays q ow+1 v axr l ey+1 z +pac pcl p ae+1 kcl k +pacflt pcl p ae+1 kcl k f l iy+1 tcl +pacific pcl p ax s ih+1 f ax kcl k +panama pcl p ae+1 n ax m aa +parameter pcl p axr ae+1 m ax dx axr +parameters pcl p axr ae+1 m ax dx axr z +pearl pcl p er+1 l +peoria pcl p iy ao+1 r iy ax +peoria+s pcl p iy ao+1 r iy ax z +percent pcl p axr s eh+1 n +persian pcl p er+1 zh ax n +personnel pcl p axr s ax n eh+1 l +philippine f ih+1 l ax pcl p iy+1 n +philippines f ih+1 l ax pcl p iy+1 n z +pigeon pcl p ih+1 dcl jh ax n +pigeon+s pcl p ih+1 dcl jh ax n z +plh003 pcl p iy+1 eh+1 l ey+1 tcl ch z iy+1 r ow z iy+1 r ow th r iy+1 +pluck pcl p l ah+1 kcl k +pluck+s pcl p l ah+1 kcl k s +plunger pcl p l ah+1 n jh axr +plunger+s pcl p l ah+1 n jh axr z +pollack pcl p aa+1 l ax kcl k +pollack+s pcl p aa+1 l ax kcl k s +polynesia pcl p aa+1 l ax n iy+1 zh ax +port pcl p ao+1 r tcl +ports pcl p ao+1 r tcl t s +posit pcl p aa+1 z ax tcl +position pcl p ax z ih+1 sh ax n +positions pcl p ax z ih+1 sh en z +posits pcl p aa+1 z ax tcl t s +poughkeepsie pcl p uw kcl k ih+1 pcl p s iy +poughkeepsie+s pcl p uw kcl k ih+1 pcl p s iy z +powered pcl p aw+1 axr dcl +prairie pcl p r eh+1 r iy +prairie+s pcl p r eh+1 r iy z +present pcl p r eh+1 z ax n +previous pcl p r iy+1 v iy ax s +problem pcl p r aa+1 bcl l ax m +problems pcl p r aa+1 bcl l ax m z +projection pcl p axr dcl jh eh+1 kcl k sh ax n +propelled pcl p axr pcl p eh+1 l dcl +propulsion pcl p axr pcl p ah+1 l sh ax n +puffer pcl p ah+1 f axr +puffer+s pcl p ah+1 f axr z +puget-1 pcl p y uw+1 dcl jh ax tcl q w ah+1 n +quarter kcl k w ao+1 r dx axr +quarters kcl k w ao+1 r dx axr s +queenfish kcl k w iy+1 n f ih+1 sh +queenfish+s kcl k w iy+1 n f ih+1 sh ax z +radar r ey+1 dx aa r +ramsey r ae+1 m z iy +ramsey+s r ae+1 m z iy z +ranger r ey+1 n jh axr +ranger+s r ey+1 n jh axr z +rated r ey+1 dx ax dcl +rathburne r ae+1 th bcl b axr n +rathburne+s r ae+1 th bcl b axr n z +rating r ey+1 dx ih ng +ratings r ey+1 dx ih ng z +readiness r eh+1 dx iy n ax s +reason r iy+1 z ax n +reasoner r iy+1 z ax n axr +reasoner+s r iy+1 z ax n axr z +reasons r iy+1 z en z +recent r iy+1 s ax n +reclaimer r iy kcl k l ey+1 m axr +reclaimer+s r iy kcl k l ey+1 m axr z +red r eh+1 dcl +redefine r iy+1 dcl d iy f ay+1 n +redefined r iy+1 dcl d iy f ay+1 n +redefining r iy+1 dcl d iy f ay+1 n ih ng +redisplay r iy+1 dcl d ax s pcl p l ey+1 +redo r iy+1 dcl d uw+1 +redraw r iy+1 dcl jh r ao+1 +reeves r iy+1 v z +reeves+s r iy+1 v z +remaining r iy m ey+1 n ih ng +remark r iy m aa+1 r kcl k +remarks r iy m aa+1 r kcl k s +repair r iy pcl p eh+1 r +repaired r iy pcl p eh+1 r dcl +repairing r iy pcl p eh+1 r ih ng +replaced r iy pcl p l ey+1 s tcl +report r iy pcl p ao+1 r tcl +reported r iy pcl p ao+1 r dx ax dcl +reporting r iy pcl p ao+1 r dx ih ng +reports r iy pcl p ao+1 r tcl t s +reset r iy+1 s eh+1 tcl +resolution r eh+1 z ax l uw+1 sh ax n +resolved r iy z ao+1 l v dcl +resource r iy+1 s ao r s +resources r iy+1 s ao r s ax z +review r iy v y uw+1 +ross r ao+1 +sacramento s ae+1 kcl k axr m eh+1 n t ow +sacramento+s s ae+1 kcl k axr m eh+1 n tcl t ow z +sail s ey+1 l +same s ey+1 m +sample s ae+1 m pcl p el +sample+s s ae+1 m pcl p el z +san-diego s ae+1 n d iy ey+1 gcl g ow +san-fran s ae+1 n f r ae+1 n +sassafras s ae+1 s ax f r ae s +sassafras+s s ae+1 s ax f r ae s ax z +saturday s ae+1 dx axr dcl d ey +saturday+s s ae+1 dx axr dcl d ey z +save s ey+1 v +schenectady s kcl k ax n eh+1 kcl t ax dx iy +schenectady+s s kcl k ax n eh+1 kcl t ax dx iy z +screen s kcl k r iy+1 n +screens s kcl k r iy+1 n z +sea s iy+1 +seawolf s iy+1 w uh+1 l f +seawolf+s s iy+1 w uh+1 l f s +second s eh+1 kcl k ax n +security s ax kcl k y er+1 ax dx iy +sensor s eh+1 n s axr +sensors s eh+1 n s axr z +september s ax pcl t eh+1 m b axr +set s eh+1 tcl +setting s eh+1 dx ih ng +settings s eh+1 dx ih ng z +seven s eh+1 v ax n +seventeen s eh+1 v ax n tcl t iy+1 n +seventeenth s eh+1 v ax n tcl t iy+1 n th +seventh s eh+1 v ax n th +seventy s eh+1 v ax n iy +shasta sh ae+1 s tcl t ax +shasta+s sh ae+1 s tcl t ax z +she sh iy+1 +she+s sh iy+1 z +sherman sh er+1 m ax n +sherman+s sh er+1 m ax n z +ship sh ih+1 pcl p +ships sh ih+1 pcl p s +ships+s sh ih+1 pcl p s +show sh ow+1 +showing sh ow+1 ih ng +shown sh ow+1 n +siberian s ay bcl b iy+1 r iy ax n +sidney s ih+1 dcl n iy +since s ih+1 n s +singapore s ih+1 ng ax pcl p ao r +six s ih+1 kcl k s +sixteen s ih+1 kcl k s tcl t iy+1 n +sixteenth s ih+1 kcl k s tcl t iy+1 n th +sixth s ih+1 kcl k s th +sixty s ih+1 kcl k s tcl t iy +size s ay+1 z +slow s l ow+1 +slower s l ow+1 axr +slowest s l ow+1 ax s tcl +slq-32 q eh+1 s eh+1 l kcl k y uw+1 th er+1 dx iy tcl t uw+1 +small s m ao+1 l +smaller s m ao+1 l axr +smallest s m ao+1 l ax s tcl +soho s ow+1 hh ow +solomon s ao+1 l ax m ax n +sonar s ow+1 n aa r +soon s uw+1 n +sooner s uw+1 n axr +south s aw+1 th +southern s ah+1 dh axr n +soviet s ow+1 v iy ax tcl +speed s pcl p iy+1 dcl +speeds s pcl p iy+1 dcl z +sps-40 q eh+1 s pcl p iy+1 eh+1 s f ao+1 r dx iy +sps-48 q eh+1 s pcl p iy+1 eh+1 s f ao+1 r dx iy ey+1 tcl +sqq-23 q eh+1 s kcl k y uw+1 kcl k y uw+1 tcl t w eh+1 n iy th r iy+1 +start s tcl t aa+1 r tcl +started s tcl t aa+1 r dx ax dcl +starting s tcl t aa+1 r dx ih ng +states s tcl t ey+1 tcl t s +station s tcl t ey+1 sh ax n +status s tcl t ey+1 dx ax s +steam s tcl t iy+1 m +stereographic s tcl t eh+1 r iy ow gcl g r ae+1 f ax kcl k +sterett s tcl t eh+1 r ax tcl +sterett+s s tcl t eh+1 r ax tcl t s +strait s tcl ch r ey+1 tcl +sub s ah+1 bcl b +sub+s s ah+1 bcl b z +subic s uw+1 bcl b ax kcl k +submarine s ah+1 bcl m axr iy+1 n +submarine+s s ah+1 bcl m axr iy+1 n z +submarines s ah+1 bcl m axr iy+1 n z +subs s ah+1 bcl b z +sufficient s ax f ih+1 sh ax n +summarize s ah+1 m axr ay+1 z +sunday s ah+1 n d ey +sunday+s s ah+1 n d ey z +supplies s ax pcl p l ay+1 z +supply s ax pcl p l ay+1 +supposed s ax pcl p ow+1 z +surface s er+1 f ax s +sustained s ax s tcl t ey+1 n +switch s w ih+1 tcl ch +switches s w ih+1 tcl ch ax z +swordfish s ao+1 r dcl d f ih+1 sh +swordfish+s s ao+1 r dcl f ih+1 sh ax z +system s ih+1 s tcl t ax m +t-lam tcl t iy+1 l ae+1 m +tacan tcl t ae+1 kcl k ae n +taiwan tcl t ay w aa+1 n +take tcl t ey+1 kcl k +taken tcl t ey+1 kcl k ax n +tasm tcl t ae+1 s ax m +ten tcl t eh+1 n +tenth tcl t eh+1 n th +test tcl t eh+1 s tcl +texas tcl t eh+1 kcl k s ax s +texas+s tcl t eh+1 kcl k s ax s ax z +tfcc tcl t iy+1 eh+1 f s iy+1 s iy+1 +thailand tcl t ay+1 l ae n +than dh ae n +that dh ae tcl +the dh ax +their dh eh r +them dh eh m +there dh eh+1 r +these dh iy+1 z +they dh ey+1 +third th er+1 dcl +thirteen th er+1 tcl t iy+1 n +thirteenth th er+1 tcl t iy+1 n th +thirtieth th er+1 dx iy ax th +thirty th er+1 dx iy +this dh ih s +those dh ow+1 z +thousand th aw+1 z ax n +threat th r eh+1 tcl +threats th r eh+1 tcl t s +three th r iy+1 +thursday th er+1 z dcl d ey +thursday+s th er+1 z dcl d ey z +ticonderoga tcl t ay kcl k aa+1 n d axr ow+1 gcl g ax +ticonderoga+s tcl t ay kcl k aa+1 n d axr ow+1 gcl g ax z +time tcl t ay+1 m +times tcl t ay+1 m z +to tcl t uw +today tcl t ax dcl d ey+1 +today+s tcl t ax dcl d ey+1 z +toggle tcl t aa+1 gcl g el +toggled tcl t aa+1 gcl g el dcl +toggling tcl t aa+1 gcl g el ih ng +tokyo tcl t ow+1 kcl k iy ow +tomorrow tcl t ax m ao+1 r ow +tomorrow+s tcl t ax m ao+1 r ow z +tonkin tcl t ao+1 ng kcl k ax n +tons tcl t ah+1 n z +total tcl t ow+1 dx el +townsville tcl t aw+1 n z v el +track tcl ch r ae+1 kcl k +tracks tcl ch r ae+1 kcl k s +training tcl ch r ey+1 n ih ng +tripoli tcl ch r ih+1 pcl p ow l iy+1 +tripoli+s tcl ch r ih+1 pcl p ow l iy+1 z +true-view tcl ch r uw+1 v y uw+1 +tuesday tcl t uw+1 z dcl d ey +tuesday+s tcl t uw+1 z dcl d ey z +turbine tcl t er+1 bcl b ax n +turn tcl t er+1 n +turned tcl t er+1 n +turning tcl t er+1 n ih ng +tuscaloosa tcl t ah+1 s kcl k ax l uw+1 s ax +tuscaloosa+s tcl t ah+1 s kcl k ax l uw+1 s ax z +twelfth tcl t w eh+1 l f th +twelve tcl t w eh+1 l v +twentieth tcl t w ah+1 n iy ax th +twenty tcl t w ah+1 n iy +two tcl t uw+1 +type tcl t ay+1 pcl p +types tcl t ay+1 pcl p s +union y uw+1 n y ax n +unit y uw+1 n ax tcl +united y uw n ay+1 dx ax dcl +until ax n tcl t ih+1 l +uom y uw+1 ow+1 q eh+1 m +update ah+1 pcl d ey+1 tcl +updated ah+1 pcl d ey+1 dx ax dcl +updates ah+1 pcl d ey+1 tcl t s +upgrade ah+1 pcl g r ey+1 dcl +upgraded ah+1 pcl g r ey+1 dx ax dcl +usa y uw+1 eh+1 s q ey+1 +use y uw+1 z +using y uw+1 z ih ng +usn y uw+1 eh+1 s eh+1 n +value v ae+1 l y uw +values v ae+1 l y uw z +vancouver v ae ng kcl k uw+1 v axr +vancouver+s v ae ng kcl k uw+1 v axr z +vandergrift v ae+1 n d axr gcl g r ih+1 f tcl +vandergrift+s v ae+1 n d axr gcl g r ih+1 f tcl t s +various v eh+1 r iy ax s +vessel v eh+1 s el +vessels v eh+1 s el z +victoria v ax kcl t ao+1 r iy ax +virginia v axr dcl jh ih+1 n y ax +virginia+s v axr dcl jh ih+1 n y ax z +visual v ih+1 zh uw el +wabash w aa+1 bcl b ae sh +wabash+s w aa+1 bcl b ae sh ax z +wadsworth w aa+1 dcl z w axr th +wadsworth+s w aa+1 dcl z w axr th s +was w ah z +wasn+t w ah+1 z ax n +wasp w aa+1 s pcl p +wasp+s w aa+1 s pcl p s +we w iy+1 +wednesday w eh+1 n z dcl d ey +wednesday+s w eh+1 n z dcl d ey z +week w iy+1 kcl k +week+s w iy+1 kcl k s +weeks w iy+1 kcl k s +wellington w eh+1 l ax ng tcl t ax n +went w eh+1 n +were w axr +weren+t w axr n +west w eh+1 s tcl +western w eh+1 s tcl t axr n +westpac w eh+1 s pcl p ae+1 kcl k +westpac+s w eh+1 s pcl p ae+1 kcl k s +what w ah+1 tcl +what+re w ah+1 dx axr +what+s w ah+1 tcl t s +when w eh+1 n +when+ll w eh+1 n el +when+s w eh+1 n z +where w eh r +where+s w eh+1 r z +which w ih+1 tcl ch +whipple w ih+1 pcl p el +whipple+s w ih+1 pcl p el z +who hh uw+1 +who+s hh uw+1 z +whose hh uw+1 z +why w ay+1 +why+s w ay+1 z +wichita w ih+1 tcl ch ax tcl t ao+1 +wichita+s w ih+1 tcl ch ax tcl t ao+1 z +will w el +willamette w ih+1 l ax m eh+1 tcl +willamette+s w ih+1 l ax m eh+1 tcl t s +winamac w ih+1 n ax m ae+1 kcl k +winamac+s w ih+1 n ax m ae+1 kcl k s +window w ih+1 n d ow +windows w ih+1 n d ow z +with w ax th +within w ax th ih+1 n +without w ax th aw+1 tcl +won+t w ow+1 n +worse w er+1 s +worst w er+1 s tcl +would w uh dcl +wouldn+t w uh+1 dcl d ax n +yankee y ae+1 ng kcl k iy+1 +year y iy+1 r +years y iy+1 ax z +yellow y eh+1 l ow +yesterday y eh+1 s tcl t axr dcl d ey +yesterday+s y eh+1 s tcl t axr dx iy z +yet y eh+1 tcl +yorktown y ao+1 r kcl t aw+1 n +yorktown+s y ao+1 r kcl t aw+1 n z +zulu z uw+1 l uw diff --git a/samples/RMHTK/lib/dicts/sil.txt b/samples/RMHTK/lib/dicts/sil.txt new file mode 100755 index 0000000..fd66330 --- /dev/null +++ b/samples/RMHTK/lib/dicts/sil.txt @@ -0,0 +1,2 @@ +!SENT_END [] sil +!SENT_START [] sil diff --git a/samples/RMHTK/lib/dicts/tri.dct b/samples/RMHTK/lib/dicts/tri.dct new file mode 100755 index 0000000..54ecb6e --- /dev/null +++ b/samples/RMHTK/lib/dicts/tri.dct @@ -0,0 +1,993 @@ +!SENT_END sil +!SENT_START sil +A ax sp +A42128 ey+f ey-f+ao f-ao+r ao-r+t r-t+uw t-uw+w uw-w+ah w-ah+n ah-n+t n-t+uw t-uw+ey uw-ey+td ey-td sp +AAW ey+ey ey-ey+d ey-d+ah d-ah+b ah-b+y b-y+uw y-uw sp +ABERDEEN ae+b ae-b+er b-er+d er-d+iy d-iy+n iy-n sp +ABOARD ax+b ax-b+ao b-ao+r ao-r+dd r-dd sp +ABOVE ax+b ax-b+ah b-ah+v ah-v sp +ADD ae+dd ae-dd sp +ADDED ae+dx ae-dx+ax dx-ax+dd ax-dd sp +ADDING ae+dx ae-dx+ih dx-ih+ng ih-ng sp +AFFECT ax+f ax-f+eh f-eh+kd eh-kd sp +AFTER ae+f ae-f+t f-t+er t-er sp +AGAIN ax+g ax-g+eh g-eh+n eh-n sp +AJAX ey+dd ey-dd+jh dd-jh+ae jh-ae+k ae-k+s k-s sp +AJAX+S ey+dd ey-dd+jh dd-jh+ae jh-ae+k ae-k+s k-s+ax s-ax+z ax-z sp +ALASKA ax+l ax-l+ae l-ae+s ae-s+k s-k+ax k-ax sp +ALERT ax+l ax-l+er l-er+td er-td sp +ALERTS ax+l ax-l+er l-er+ts er-ts sp +ALEXANDRIA ae+l ae-l+ax l-ax+kd ax-kd+z kd-z+ae z-ae+n ae-n+d n-d+r d-r+iy r-iy+ax iy-ax sp +ALL ao+l ao-l sp +AN ax+n ax-n sp +ANCHORAGE ae+ng ae-ng+k ng-k+er k-er+dd er-dd+jh dd-jh sp +AND ae+n ae-n sp +ANY eh+n eh-n+iy n-iy sp +ANYBODY eh+n eh-n+iy n-iy+b iy-b+ah b-ah+dx ah-dx+iy dx-iy sp +APALACHICOLA ae+p ae-p+ax p-ax+l ax-l+ae l-ae+td ae-td+ch td-ch+ax ch-ax+k ax-k+ow k-ow+l ow-l+ax l-ax sp +APALACHICOLA+S ae+p ae-p+ax p-ax+l ax-l+ae l-ae+td ae-td+ch td-ch+ax ch-ax+k ax-k+ow k-ow+l ow-l+ax l-ax+z ax-z sp +APRIL ey+p ey-p+r p-r+el r-el sp +ARABIAN ax+r ax-r+ey r-ey+b ey-b+iy b-iy+ax iy-ax+n ax-n sp +ARCTIC aa+r aa-r+t r-t+ax t-ax+k ax-k sp +ARE aa+r aa-r sp +AREA eh+r eh-r+iy r-iy+ax iy-ax sp +AREAS eh+r eh-r+iy r-iy+ax iy-ax+z ax-z sp +AREN+T aa+er aa-er+n er-n sp +ARKANSAS aa+r aa-r+k r-k+ax k-ax+n ax-n+s n-s+ao s-ao sp +ARKANSAS+S aa+r aa-r+k r-k+ax k-ax+n ax-n+s n-s+ao s-ao+z ao-z sp +AROUND ax+r ax-r+aw r-aw+n aw-n sp +ARRIVAL ax+r ax-r+ay r-ay+v ay-v+el v-el sp +ARRIVE ax+r ax-r+ay r-ay+v ay-v sp +ARRIVED ax+r ax-r+ay r-ay+v ay-v+dd v-dd sp +ARRIVING ax+r ax-r+ay r-ay+v ay-v+ih v-ih+ng ih-ng sp +ARROW eh+r eh-r+ow r-ow sp +AS ax+z ax-z sp +ASTORIA ax+s ax-s+t s-t+ao t-ao+r ao-r+iy r-iy+ax iy-ax sp +ASUW ey+eh ey-eh+s eh-s+y s-y+uw y-uw+d uw-d+ah d-ah+b ah-b+y b-y+uw y-uw sp +ASW ey+eh ey-eh+s eh-s+d s-d+ah d-ah+b ah-b+y b-y+uw y-uw sp +AT ae+td ae-td sp +ATLANTIC ax+dd ax-dd+l dd-l+ae l-ae+n ae-n+ax n-ax+k ax-k sp +AUGUST ao+g ao-g+ax g-ax+s ax-s+td s-td sp +AVAILABLE ax+v ax-v+ey v-ey+l ey-l+ax l-ax+b ax-b+el b-el sp +AVERAGE ae+v ae-v+er v-er+dd er-dd+jh dd-jh sp +BAD b+ae b-ae+dd ae-dd sp +BADGER b+ae b-ae+dd ae-dd+jh dd-jh+er jh-er sp +BADGER+S b+ae b-ae+dd ae-dd+jh dd-jh+er jh-er+z er-z sp +BAINBRIDGE b+ey b-ey+n ey-n+b n-b+r b-r+ih r-ih+dd ih-dd+jh dd-jh sp +BAINBRIDGE+S b+ey b-ey+n ey-n+b n-b+r b-r+ih r-ih+dd ih-dd+jh dd-jh+ax jh-ax+z ax-z sp +BANGKOK b+ae b-ae+ng ae-ng+k ng-k+aa k-aa+k aa-k sp +BARGE b+aa b-aa+r aa-r+dd r-dd+jh dd-jh sp +BASS b+ae b-ae+s ae-s sp +BAY b+ey b-ey sp +BE b+iy b-iy sp +BEAM b+iy b-iy+m iy-m sp +BEAMS b+iy b-iy+m iy-m+z m-z sp +BEEN b+ih b-ih+n ih-n sp +BEFORE b+ax b-ax+f ax-f+er f-er sp +BELOW b+ax b-ax+l ax-l+ow l-ow sp +BERING b+eh b-eh+r eh-r+ih r-ih+ng ih-ng sp +BETTER b+eh b-eh+dx eh-dx+er dx-er sp +BETWEEN b+ax b-ax+t ax-t+w t-w+iy w-iy+n iy-n sp +BIDDLE b+ih b-ih+dx ih-dx+el dx-el sp +BIDDLE+S b+ih b-ih+dx ih-dx+el dx-el+z el-z sp +BISMARK b+ih b-ih+z ih-z+m z-m+aa m-aa+r aa-r+k r-k sp +BOMBAY b+aa b-aa+m aa-m+b m-b+ey b-ey sp +BOTH b+ow b-ow+th ow-th sp +BOX b+aa b-aa+k aa-k+s k-s sp +BRIGHT b+r b-r+ay r-ay+td ay-td sp +BRITISH b+r b-r+ih r-ih+dx ih-dx+ax dx-ax+sh ax-sh sp +BROOKE b+r b-r+uh r-uh+k uh-k sp +BROOKE+S b+r b-r+uh r-uh+k uh-k+s k-s sp +BRUNSWICK b+r b-r+ah r-ah+n ah-n+z n-z+w z-w+ax w-ax+k ax-k sp +BRUNSWICK+S b+r b-r+ah r-ah+n ah-n+z n-z+w z-w+ax w-ax+k ax-k+s k-s sp +BUD-TEST b+ah b-ah+dd ah-dd+t dd-t+eh t-eh+s eh-s+td s-td sp +BUMP b+ah b-ah+m ah-m+p m-p sp +BY b+ay b-ay sp +C-CODE s+iy s-iy+k iy-k+ow k-ow+dd ow-dd sp +C-CODES s+iy s-iy+k iy-k+ow k-ow+dd ow-dd+z dd-z sp +C-RATING s+iy s-iy+r iy-r+ey r-ey+dx ey-dx+ih dx-ih+ng ih-ng sp +C-RATINGS s+iy s-iy+r iy-r+ey r-ey+dx ey-dx+ih dx-ih+ng ih-ng+z ng-z sp +C1 s+iy s-iy+w iy-w+ah w-ah+n ah-n sp +C2 s+iy s-iy+t iy-t+uw t-uw sp +C3 s+iy s-iy+th iy-th+r th-r+iy r-iy sp +C4 s+iy s-iy+f iy-f+ao f-ao+r ao-r sp +C5 s+iy s-iy+f iy-f+ay f-ay+v ay-v sp +CALEDONIA k+ae k-ae+l ae-l+ax l-ax+d ax-d+ow d-ow+n ow-n+iy n-iy+ax iy-ax sp +CALIFORNIA k+ae k-ae+l ae-l+ax l-ax+f ax-f+ao f-ao+r ao-r+n r-n+y n-y+ax y-ax sp +CAMDEN k+ae k-ae+m ae-m+d m-d+ax d-ax+n ax-n sp +CAMDEN+S k+ae k-ae+m ae-m+d m-d+ax d-ax+n ax-n+z n-z sp +CAMPBELL k+ae k-ae+m ae-m+b m-b+el b-el sp +CAMPBELL+S k+ae k-ae+m ae-m+b m-b+el b-el+z el-z sp +CAN k+ax k-ax+n ax-n sp +CANADA k+ae k-ae+n ae-n+ax n-ax+d ax-d+ax d-ax sp +CAPABILITIES k+ey k-ey+p ey-p+ax p-ax+b ax-b+ih b-ih+l ih-l+ax l-ax+dx ax-dx+iy dx-iy+z iy-z sp +CAPABILITY k+ey k-ey+p ey-p+ax p-ax+b ax-b+ih b-ih+l ih-l+ax l-ax+dx ax-dx+iy dx-iy sp +CAPABLE k+ey k-ey+p ey-p+ax p-ax+b ax-b+el b-el sp +CAPACITIES k+ax k-ax+p ax-p+ae p-ae+s ae-s+ax s-ax+dx ax-dx+iy dx-iy+z iy-z sp +CAPACITY k+ax k-ax+p ax-p+ae p-ae+s ae-s+ax s-ax+dx ax-dx+iy dx-iy sp +CARRIER k+eh k-eh+r eh-r+iy r-iy+er iy-er sp +CARRIER+S k+eh k-eh+r eh-r+iy r-iy+er iy-er+z er-z sp +CARRIERS k+eh k-eh+r eh-r+iy r-iy+er iy-er+z er-z sp +CARRY k+eh k-eh+r eh-r+iy r-iy sp +CASREP k+ae k-ae+s ae-s+r s-r+eh r-eh+p eh-p sp +CASREPED k+ae k-ae+s ae-s+r s-r+eh r-eh+pd eh-pd+t pd-t sp +CASREPS k+ae k-ae+s ae-s+r s-r+eh r-eh+p eh-p+s p-s sp +CASUALTY k+ae k-ae+sh ae-sh+uw sh-uw+ax uw-ax+l ax-l+t l-t+iy t-iy sp +CAT-2 k+ae k-ae+t ae-t+uw t-uw sp +CAT-3 k+ae k-ae+t ae-t+th t-th+r th-r+iy r-iy sp +CAT-4 k+ae k-ae+t ae-t+f t-f+ao f-ao+r ao-r sp +CATEGORIES k+ae k-ae+dx ae-dx+ax dx-ax+g ax-g+ao g-ao+r ao-r+iy r-iy+z iy-z sp +CATEGORY k+ae k-ae+dx ae-dx+ax dx-ax+g ax-g+ao g-ao+r ao-r+iy r-iy sp +CENTER s+eh s-eh+n eh-n+t n-t+er t-er sp +CENTERED s+eh s-eh+n eh-n+t n-t+er t-er+dd er-dd sp +CENTERING s+eh s-eh+n eh-n+er n-er+ih er-ih+ng ih-ng sp +CEP s+iy s-iy+iy iy-iy+p iy-p+iy p-iy sp +CHANGE td+ch td-ch+ey ch-ey+n ey-n+jh n-jh sp +CHANGED td+ch td-ch+ey ch-ey+n ey-n+jh n-jh sp +CHANGING td+ch td-ch+ey ch-ey+n ey-n+jh n-jh+ih jh-ih+ng ih-ng sp +CHANNEL td+ch td-ch+ae ch-ae+n ae-n+el n-el sp +CHART td+ch td-ch+aa ch-aa+r aa-r+td r-td sp +CHARTS td+ch td-ch+aa ch-aa+r aa-r+ts r-ts sp +CHATTAHOOCHEE td+ch td-ch+ae ch-ae+dx ae-dx+ax dx-ax+hh ax-hh+uw hh-uw+td uw-td+ch td-ch+iy ch-iy sp +CHATTAHOOCHEE+S td+ch td-ch+ae ch-ae+dx ae-dx+ax dx-ax+hh ax-hh+uw hh-uw+td uw-td+ch td-ch+iy ch-iy+z iy-z sp +CHESHIRE td+ch td-ch+eh ch-eh+sh eh-sh+er sh-er sp +CHINA td+ch td-ch+ay ch-ay+n ay-n+ax n-ax sp +CHOP td+ch td-ch+aa ch-aa+p aa-p sp +CHOPPED td+ch td-ch+aa ch-aa+pd aa-pd+t pd-t sp +CHOPPING td+ch td-ch+aa ch-aa+p aa-p+ih p-ih+ng ih-ng sp +CIRCLE s+er s-er+k er-k+el k-el sp +CITRUS s+ih s-ih+dx ih-dx+er dx-er+s er-s sp +CITRUS+S s+ih s-ih+dx ih-dx+er dx-er+s er-s+ax s-ax+z ax-z sp +CITY s+ih s-ih+dx ih-dx+iy dx-iy sp +CLEAR k+l k-l+iy l-iy+r iy-r sp +CLEARED k+l k-l+iy l-iy+r iy-r+dd r-dd sp +CLEARING k+l k-l+iy l-iy+r iy-r+ih r-ih+ng ih-ng sp +CLEVELAND k+l k-l+iy l-iy+v iy-v+l v-l+ax l-ax+n ax-n sp +CLEVELAND+S k+l k-l+iy l-iy+v iy-v+l v-l+ax l-ax+n ax-n+z n-z sp +CLOSE k+l k-l+ow l-ow+z ow-z sp +CLOSER k+l k-l+ow l-ow+s ow-s+er s-er sp +CLOSEST k+l k-l+ow l-ow+s ow-s+ax s-ax+s ax-s+td s-td sp +CODAG k+ow k-ow+d ow-d+ae d-ae+g ae-g sp +CODE k+ow k-ow+dd ow-dd sp +CODES k+ow k-ow+dd ow-dd+z dd-z sp +COLOR k+ah k-ah+l ah-l+er l-er sp +COMPARED k+ax k-ax+m ax-m+p m-p+eh p-eh+r eh-r+dd r-dd sp +CONFIDENCE k+aa k-aa+n aa-n+f n-f+ax f-ax+d ax-d+ax d-ax+n ax-n+s n-s sp +CONFIDENCE+S k+aa k-aa+n aa-n+f n-f+ax f-ax+d ax-d+ax d-ax+n ax-n+td n-td+s td-s+ax s-ax+z ax-z sp +CONIFER k+aa k-aa+n aa-n+ax n-ax+f ax-f+er f-er sp +CONIFER+S k+aa k-aa+n aa-n+ax n-ax+f ax-f+er f-er+z er-z sp +CONQUEST k+aa k-aa+ng aa-ng+k ng-k+w k-w+eh w-eh+s eh-s+td s-td sp +CONQUEST+S k+aa k-aa+ng aa-ng+k ng-k+w k-w+eh w-eh+s eh-s+td s-td sp +CONSTANT k+aa k-aa+n aa-n+s n-s+t s-t+ax t-ax+n ax-n sp +CONSTANT+S k+aa k-aa+n aa-n+s n-s+t s-t+ax t-ax+n ax-n+s n-s sp +CONSTELLATION k+aa k-aa+n aa-n+s n-s+t s-t+ax t-ax+l ax-l+ey l-ey+sh ey-sh+ax sh-ax+n ax-n sp +CONSTELLATION+S k+aa k-aa+n aa-n+s n-s+t s-t+ax t-ax+l ax-l+ey l-ey+sh ey-sh+en sh-en+z en-z sp +CONVENTIONAL k+ax k-ax+n ax-n+v n-v+eh v-eh+n eh-n+sh n-sh+ax sh-ax+n ax-n+el n-el sp +COOK k+uh k-uh+k uh-k sp +COPELAND k+ow k-ow+p ow-p+l p-l+ax l-ax+n ax-n sp +COPELAND+S k+ow k-ow+p ow-p+l p-l+ax l-ax+n ax-n+z n-z sp +CORAL k+ao k-ao+r ao-r+el r-el sp +COULD k+uh k-uh+dd uh-dd sp +COULDN+T k+uh k-uh+dx uh-dx+ax dx-ax+n ax-n sp +COUNT k+aw k-aw+n aw-n sp +COUNTED k+aw k-aw+n aw-n+ax n-ax+dd ax-dd sp +COUNTING k+aw k-aw+n aw-n+ng n-ng sp +CROVL k+r k-r+ow r-ow+v ow-v+el v-el sp +CROVLS k+r k-r+ow r-ow+v ow-v+el v-el+z el-z sp +CRUISER k+r k-r+uw r-uw+z uw-z+er z-er sp +CRUISER+S k+r k-r+uw r-uw+z uw-z+er z-er+z er-z sp +CRUISERS k+r k-r+uw r-uw+z uw-z+er z-er+z er-z sp +CRUISERS+S k+r k-r+uw r-uw+z uw-z+er z-er+z er-z sp +CRUISING k+r k-r+uw r-uw+z uw-z+ih z-ih+ng ih-ng sp +CURRENT k+er k-er+ax er-ax+n ax-n sp +CURRENTLY k+er k-er+ax er-ax+n ax-n+t n-t+l t-l+iy l-iy sp +DALE d+ey d-ey+l ey-l sp +DALE+S d+ey d-ey+l ey-l+z l-z sp +DARWIN d+aa d-aa+r aa-r+w r-w+ax w-ax+n ax-n sp +DATA d+ey d-ey+dx ey-dx+ax dx-ax sp +DATE d+ey d-ey+td ey-td sp +DATED d+ey d-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +DATES d+ey d-ey+ts ey-ts sp +DAVIDSON d+ey d-ey+v ey-v+ax v-ax+d ax-d+s d-s+ax s-ax+n ax-n sp +DAVIDSON+S d+ey d-ey+v ey-v+ax v-ax+d ax-d+s d-s+en s-en+z en-z sp +DAY d+ey d-ey sp +DAYS d+ey d-ey+z ey-z sp +DDD992 d+iy d-iy+d iy-d+iy d-iy+d iy-d+iy d-iy+n iy-n+ay n-ay+n ay-n+n n-n+ay n-ay+n ay-n+t n-t+uw t-uw sp +DECEMBER d+ax d-ax+s ax-s+eh s-eh+m eh-m+b m-b+er b-er sp +DECREASE d+iy d-iy+k iy-k+r k-r+iy r-iy+s iy-s sp +DECREASED d+iy d-iy+k iy-k+r k-r+iy r-iy+s iy-s+td s-td sp +DECREASING d+iy d-iy+k iy-k+r k-r+iy r-iy+s iy-s+ih s-ih+ng ih-ng sp +DEFAULT d+iy d-iy+f iy-f+ao f-ao+l ao-l sp +DEFAULTS d+iy d-iy+f iy-f+el f-el+ts el-ts sp +DEFINE d+ax d-ax+f ax-f+ay f-ay+n ay-n sp +DEFINED d+ax d-ax+f ax-f+ay f-ay+n ay-n sp +DEFINING d+ax d-ax+f ax-f+ay f-ay+n ay-n+ih n-ih+ng ih-ng sp +DEFINITION d+eh d-eh+f eh-f+ax f-ax+n ax-n+ih n-ih+sh ih-sh+ax sh-ax+n ax-n sp +DEFINITIONS d+eh d-eh+f eh-f+ax f-ax+n ax-n+ih n-ih+sh ih-sh+en sh-en+z en-z sp +DEGRADATION d+eh d-eh+g eh-g+er g-er+d er-d+ey d-ey+sh ey-sh+ax sh-ax+n ax-n sp +DEGRADATIONS d+eh d-eh+g eh-g+er g-er+d er-d+ey d-ey+sh ey-sh+en sh-en+z en-z sp +DEGRADE d+ax d-ax+g ax-g+r g-r+ey r-ey+dd ey-dd sp +DEGRADED d+ax d-ax+g ax-g+r g-r+ey r-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +DEGRADING d+ax d-ax+g ax-g+r g-r+ey r-ey+dx ey-dx+ih dx-ih+ng ih-ng sp +DEGREES d+ax d-ax+g ax-g+r g-r+iy r-iy+z iy-z sp +DELETE d+ax d-ax+l ax-l+iy l-iy+td iy-td sp +DELETED d+ax d-ax+l ax-l+iy l-iy+dx iy-dx+ax dx-ax+dd ax-dd sp +DELETING d+ax d-ax+l ax-l+iy l-iy+dx iy-dx+ih dx-ih+ng ih-ng sp +DENVER d+eh d-eh+n eh-n+v n-v+er v-er sp +DENVER+S d+eh d-eh+n eh-n+v n-v+er v-er+z er-z sp +DEPLOYED d+ax d-ax+p ax-p+l p-l+oy l-oy+dd oy-dd sp +DEPLOYMENT d+ax d-ax+p ax-p+l p-l+oy l-oy+m oy-m+ax m-ax+n ax-n sp +DEPLOYMENTS d+ax d-ax+p ax-p+l p-l+oy l-oy+m oy-m+ax m-ax+n ax-n+s n-s sp +DEPTH d+eh d-eh+p eh-p+th p-th sp +DEPTHS d+eh d-eh+pd eh-pd+s pd-s sp +DESTINATION d+eh d-eh+s eh-s+t s-t+ax t-ax+n ax-n+ey n-ey+sh ey-sh+ax sh-ax+n ax-n sp +DESTINATIONS d+eh d-eh+s eh-s+t s-t+ax t-ax+n ax-n+ey n-ey+sh ey-sh+en sh-en+z en-z sp +DID d+ih d-ih+dd ih-dd sp +DIDN+T d+ih d-ih+d ih-d+ax d-ax+n ax-n sp +DIEGO-GARCIA d+iy d-iy+ey iy-ey+g ey-g+ow g-ow+g ow-g+er g-er+s er-s+iy s-iy+ax iy-ax sp +DIESEL d+iy d-iy+z iy-z+el z-el sp +DIM d+ih d-ih+m ih-m sp +DISPLACEMENT d+ax d-ax+s ax-s+p s-p+l p-l+ey l-ey+s ey-s+m s-m+ax m-ax+n ax-n sp +DISPLACEMENTS d+ax d-ax+s ax-s+p s-p+l p-l+ey l-ey+s ey-s+m s-m+ax m-ax+n ax-n+s n-s sp +DISPLAY d+ax d-ax+s ax-s+p s-p+l p-l+ey l-ey sp +DISPLAYED d+ax d-ax+s ax-s+p s-p+l p-l+ey l-ey+dd ey-dd sp +DISPLAYING d+ax d-ax+s ax-s+p s-p+l p-l+ey l-ey+ih ey-ih+ng ih-ng sp +DISTANCE d+ih d-ih+s ih-s+t s-t+ax t-ax+n ax-n+s n-s sp +DIXON d+ih d-ih+k ih-k+s k-s+ax s-ax+n ax-n sp +DIXON+S d+ih d-ih+k ih-k+s k-s+en s-en+z en-z sp +DMDS d+iy d-iy+eh iy-eh+m eh-m+d m-d+iy d-iy+eh iy-eh+s eh-s sp +DO d+uw d-uw sp +DOES d+ax d-ax+z ax-z sp +DOESN+T d+ah d-ah+z ah-z+ax z-ax+n ax-n sp +DON+T d+ow d-ow+n ow-n sp +DOWNES d+aw d-aw+n aw-n+z n-z sp +DOWNES+S d+aw d-aw+n aw-n+z n-z sp +DOWNGRADE d+aw d-aw+n aw-n+g n-g+r g-r+ey r-ey+dd ey-dd sp +DOWNGRADED d+aw d-aw+n aw-n+g n-g+r g-r+ey r-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +DRAFT dd+jh dd-jh+r jh-r+ae r-ae+f ae-f+td f-td sp +DRAFTS dd+jh dd-jh+r jh-r+ae r-ae+f ae-f+ts f-ts sp +DRAW dd+jh dd-jh+r jh-r+ao r-ao sp +DUBUQUE d+ax d-ax+b ax-b+y b-y+uw y-uw+k uw-k sp +DUBUQUE+S d+ax d-ax+b ax-b+y b-y+uw y-uw+k uw-k+s k-s sp +DUE d+uw d-uw sp +DURING d+er d-er+ih er-ih+ng ih-ng sp +EACH iy+td iy-td+ch td-ch sp +EARLIER er+l er-l+iy l-iy+er iy-er sp +EARLIEST er+l er-l+iy l-iy+ax iy-ax+s ax-s+td s-td sp +EARLY er+l er-l+iy l-iy sp +EAST iy+s iy-s+td s-td sp +EASTERN iy+s iy-s+t s-t+er t-er+n er-n sp +EASTPAC iy+s iy-s+p s-p+ae p-ae+k ae-k sp +EASTPAC+S iy+s iy-s+p s-p+ae p-ae+k ae-k+s k-s sp +ECG041 iy+s iy-s+iy s-iy+dd iy-dd+jh dd-jh+iy jh-iy+z iy-z+iy z-iy+r iy-r+ow r-ow+f ow-f+ao f-ao+r ao-r+w r-w+ah w-ah+n ah-n sp +ECHO eh+k eh-k+ow k-ow sp +ECONOMIC eh+k eh-k+ax k-ax+n ax-n+aa n-aa+m aa-m+ax m-ax+k ax-k sp +EDIT eh+dx eh-dx+ax dx-ax+td ax-td sp +EDITED eh+dx eh-dx+ax dx-ax+dx ax-dx+ax dx-ax+dd ax-dd sp +EDITING eh+dx eh-dx+ax dx-ax+dx ax-dx+ih dx-ih+ng ih-ng sp +EIGHT ey+td ey-td sp +EIGHTEEN ey+t ey-t+iy t-iy+n iy-n sp +EIGHTEENTH ey+t ey-t+iy t-iy+n iy-n+th n-th sp +EIGHTH ey+td ey-td+th td-th sp +EIGHTY ey+dx ey-dx+iy dx-iy sp +EISENHOWER ay+z ay-z+ax z-ax+n ax-n+hh n-hh+aw hh-aw+er aw-er sp +EISENHOWER+S ay+z ay-z+ax z-ax+n ax-n+hh n-hh+aw hh-aw+er aw-er+z er-z sp +ELEVEN ax+l ax-l+eh l-eh+v eh-v+ax v-ax+n ax-n sp +ELEVENTH ax+l ax-l+eh l-eh+v eh-v+ax v-ax+n ax-n+th n-th sp +ELIZABETH ax+l ax-l+ih l-ih+z ih-z+ax z-ax+b ax-b+ax b-ax+th ax-th sp +EMPLOYED ax+m ax-m+p m-p+l p-l+oy l-oy+dd oy-dd sp +END eh+n eh-n sp +ENDING eh+n eh-n+d n-d+ih d-ih+ng ih-ng sp +ENGLAND ih+ng ih-ng+g ng-g+l g-l+ax l-ax+n ax-n sp +ENGLAND+S ih+ng ih-ng+g ng-g+l g-l+ax l-ax+n ax-n+z n-z sp +ENGLISH ih+ng ih-ng+g ng-g+l g-l+ax l-ax+sh ax-sh sp +ENOUGH ax+n ax-n+ah n-ah+f ah-f sp +ENROUTE ax+n ax-n+r n-r+uw r-uw+td uw-td sp +ENTERPRISE eh+n eh-n+er n-er+p er-p+r p-r+ay r-ay+z ay-z sp +ENTERPRISE+S eh+n eh-n+er n-er+p er-p+r p-r+ay r-ay+z ay-z+ax z-ax+z ax-z sp +EQUIPMENT iy+k iy-k+w k-w+ih w-ih+pd ih-pd+m pd-m+ax m-ax+n ax-n sp +EQUIPPED iy+k iy-k+w k-w+ih w-ih+pd ih-pd+t pd-t sp +ESTEEM ax+s ax-s+t s-t+iy t-iy+m iy-m sp +ESTEEM+S ax+s ax-s+t s-t+iy t-iy+m iy-m+z m-z sp +ESTIMATED eh+s eh-s+t s-t+ax t-ax+m ax-m+ey m-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +ETA iy+t iy-t+iy t-iy+ey iy-ey sp +ETR iy+t iy-t+iy t-iy+aa iy-aa+r aa-r sp +EVER eh+v eh-v+er v-er sp +EVERETT eh+v eh-v+r v-r+ax r-ax+td ax-td sp +EXPECTED ax+k ax-k+s k-s+p s-p+eh p-eh+kd eh-kd+t kd-t+ax t-ax+dd ax-dd sp +FANNING f+ae f-ae+n ae-n+ih n-ih+ng ih-ng sp +FANNING+S f+ae f-ae+n ae-n+ih n-ih+ng ih-ng+z ng-z sp +FAR f+aa f-aa+r aa-r sp +FARTHER f+aa f-aa+r aa-r+dh r-dh+er dh-er sp +FARTHEST f+aa f-aa+r aa-r+dh r-dh+ax dh-ax+s ax-s+td s-td sp +FAST f+ae f-ae+s ae-s+td s-td sp +FASTER f+ae f-ae+s ae-s+t s-t+er t-er sp +FASTEST f+ae f-ae+s ae-s+t s-t+ax t-ax+s ax-s+td s-td sp +FEBRUARY f+eh f-eh+b eh-b+y b-y+uw y-uw+eh uw-eh+r eh-r+iy r-iy sp +FEET f+iy f-iy+td iy-td sp +FFF088 eh+f eh-f+eh f-eh+f eh-f+eh f-eh+f eh-f+z f-z+iy z-iy+r iy-r+ow r-ow+ey ow-ey+d ey-d+ey d-ey+td ey-td sp +FIFTEEN f+ih f-ih+f ih-f+t f-t+iy t-iy+n iy-n sp +FIFTEENTH f+ih f-ih+f ih-f+t f-t+iy t-iy+n iy-n+th n-th sp +FIFTH f+ih f-ih+f ih-f+th f-th sp +FIFTY f+ih f-ih+f ih-f+t f-t+iy t-iy sp +FIGURE f+ih f-ih+g ih-g+y g-y+er y-er sp +FIGURES f+ih f-ih+g ih-g+y g-y+er y-er+z er-z sp +FIJI f+iy f-iy+dd iy-dd+jh dd-jh+iy jh-iy sp +FIND f+ay f-ay+n ay-n sp +FIREBUSH f+ay f-ay+er ay-er+b er-b+uh b-uh+sh uh-sh sp +FIREBUSH+S f+ay f-ay+er ay-er+b er-b+uh b-uh+sh uh-sh+ax sh-ax+z ax-z sp +FIRST f+er f-er+s er-s+td s-td sp +FIVE f+ay f-ay+v ay-v sp +FIXED f+ih f-ih+k ih-k+s k-s+td s-td sp +FLASHER f+l f-l+ae l-ae+sh ae-sh+er sh-er sp +FLASHER+S f+l f-l+ae l-ae+sh ae-sh+er sh-er+z er-z sp +FLEET f+l f-l+iy l-iy+td iy-td sp +FLEETS f+l f-l+iy l-iy+ts iy-ts sp +FLINT f+l f-l+ih l-ih+n ih-n sp +FLINT+S f+l f-l+ih l-ih+n ih-n+s n-s sp +FOOTER f+uh f-uh+dx uh-dx+er dx-er sp +FOR f+er f-er sp +FORMOSA f+er f-er+m er-m+ow m-ow+s ow-s+ax s-ax sp +FORTY f+ao f-ao+r ao-r+dx r-dx+iy dx-iy sp +FOUR f+ao f-ao+r ao-r sp +FOURTEEN f+ao f-ao+r ao-r+t r-t+iy t-iy+n iy-n sp +FOURTEENTH f+ao f-ao+r ao-r+t r-t+iy t-iy+n iy-n+th n-th sp +FOURTH f+ao f-ao+ax ao-ax+th ax-th sp +FOX f+aa f-aa+k aa-k+s k-s sp +FOX+S f+aa f-aa+k aa-k+s k-s+ax s-ax+z ax-z sp +FREDERICK f+r f-r+eh r-eh+dd eh-dd+jh dd-jh+r jh-r+ax r-ax+k ax-k sp +FREDERICK+S f+r f-r+eh r-eh+d eh-d+er d-er+k er-k+s k-s sp +FRENCH f+r f-r+eh r-eh+n eh-n+td n-td+ch td-ch sp +FRESNO f+r f-r+eh r-eh+z eh-z+n z-n+ow n-ow sp +FRESNO+S f+r f-r+eh r-eh+z eh-z+n z-n+ow n-ow+z ow-z sp +FRIDAY f+r f-r+ay r-ay+d ay-d+ey d-ey sp +FRIDAY+S f+r f-r+ay r-ay+dx ay-dx+iy dx-iy+z iy-z sp +FRIGATE f+r f-r+ih r-ih+g ih-g+ax g-ax+td ax-td sp +FRIGATE+S f+r f-r+ih r-ih+g ih-g+ax g-ax+ts ax-ts sp +FRIGATES f+r f-r+ih r-ih+g ih-g+ax g-ax+ts ax-ts sp +FRIGATES+S f+r f-r+ih r-ih+g ih-g+ax g-ax+td ax-td+s td-s sp +FROM f+r f-r+ax r-ax+m ax-m sp +FUEL f+y f-y+uw y-uw+l uw-l sp +FULL f+uh f-uh+l uh-l sp +GALLONS g+ae g-ae+l ae-l+ax l-ax+n ax-n+z n-z sp +GALVESTON g+ae g-ae+l ae-l+v l-v+ax v-ax+s ax-s+t s-t+ax t-ax+n ax-n sp +GAS g+ae g-ae+s ae-s sp +GET g+eh g-eh+td eh-td sp +GIVE g+ih g-ih+v ih-v sp +GLACIER g+l g-l+ey l-ey+sh ey-sh+er sh-er sp +GLACIER+S g+l g-l+ey l-ey+sh ey-sh+er sh-er+z er-z sp +GNOMONIC n+ax n-ax+m ax-m+aa m-aa+n aa-n+ax n-ax+k ax-k sp +GO g+ow g-ow sp +GOING g+ow g-ow+ih ow-ih+ng ih-ng sp +GONE g+aa g-aa+n aa-n sp +GREAT g+r g-r+ey r-ey+td ey-td sp +GREATER g+r g-r+ey r-ey+dx ey-dx+er dx-er sp +GREATEST g+r g-r+ey r-ey+dx ey-dx+ax dx-ax+s ax-s+td s-td sp +GREEN g+r g-r+iy r-iy+n iy-n sp +GRID g+r g-r+ih r-ih+dd ih-dd sp +GRIDLEY g+r g-r+ih r-ih+d ih-d+l d-l+iy l-iy sp +GRIDLEY+S g+r g-r+ih r-ih+dd ih-dd+l dd-l+iy l-iy+z iy-z sp +GRILL g+r g-r+ih r-ih+l ih-l sp +GROSS g+r g-r+ow r-ow+s ow-s sp +GROUP g+r g-r+uw r-uw+p uw-p sp +GROUPS g+r g-r+uw r-uw+p uw-p+s p-s sp +GUARDFISH g+aa g-aa+r aa-r+d r-d+f d-f+ih f-ih+sh ih-sh sp +GUARDFISH+S g+aa g-aa+r aa-r+dd r-dd+f dd-f+ih f-ih+sh ih-sh+ax sh-ax+z ax-z sp +GUITARRO g+ih g-ih+t ih-t+aa t-aa+r aa-r+ow r-ow sp +GUITARRO+S g+ih g-ih+t ih-t+aa t-aa+r aa-r+ow r-ow+z ow-z sp +GULF g+ah g-ah+l ah-l+f l-f sp +HAD hh+ae hh-ae+dd ae-dd sp +HALF hh+ae hh-ae+f ae-f sp +HARBOR hh+aa hh-aa+r aa-r+b r-b+er b-er sp +HARPOON hh+aa hh-aa+r aa-r+p r-p+uw p-uw+n uw-n sp +HAS hh+ae hh-ae+z ae-z sp +HASN+T hh+ae hh-ae+z ae-z+ax z-ax+n ax-n sp +HAVE hh+ae hh-ae+v ae-v sp +HAVEN+T hh+ae hh-ae+v ae-v+ax v-ax+n ax-n sp +HAWKBILL hh+ao hh-ao+kd ao-kd+b kd-b+ih b-ih+l ih-l sp +HAWKBILL+S hh+ao hh-ao+kd ao-kd+b kd-b+ih b-ih+l ih-l+z l-z sp +HE hh+iy hh-iy sp +HE+S hh+iy hh-iy+z iy-z sp +HECTOR hh+eh hh-eh+kd eh-kd+t kd-t+er t-er sp +HECTOR+S hh+eh hh-eh+kd eh-kd+t kd-t+er t-er+z er-z sp +HEPBURN hh+eh hh-eh+b eh-b+er b-er+n er-n sp +HEPBURN+S hh+eh hh-eh+pd eh-pd+b pd-b+er b-er+n er-n+z n-z sp +HER hh+er hh-er sp +HERS hh+er hh-er+z er-z sp +HFDF ey+td ey-td+ch td-ch+eh ch-eh+f eh-f+d f-d+iy d-iy+eh iy-eh+f eh-f sp +HIGH hh+ay hh-ay sp +HIGHER hh+ay hh-ay+er ay-er sp +HIGHEST hh+ay hh-ay+ax ay-ax+s ax-s+td s-td sp +HIM hh+ih hh-ih+m ih-m sp +HIS hh+ih hh-ih+z ih-z sp +HOME hh+ow hh-ow+m ow-m sp +HOMER hh+ow hh-ow+m ow-m+er m-er sp +HONG-KONG hh+ao hh-ao+ng ao-ng+k ng-k+ao k-ao+ng ao-ng sp +HONOLULU hh+aa hh-aa+n aa-n+ax n-ax+l ax-l+uw l-uw+l uw-l+uw l-uw sp +HOOKED hh+uh hh-uh+kd uh-kd+t kd-t sp +HORNE hh+ao hh-ao+r ao-r+n r-n sp +HORNE+S hh+ao hh-ao+r ao-r+n r-n+z n-z sp +HOUR aw+er aw-er sp +HOURS aw+er aw-er+z er-z sp +HOW hh+aw hh-aw sp +HUNDRED hh+ah hh-ah+n ah-n+d n-d+er d-er+dx er-dx sp +ICE-NINE ay+s ay-s+n s-n+ay n-ay+n ay-n sp +ID ay+d ay-d+iy d-iy sp +IDENTIFICATION ay+d ay-d+eh d-eh+n eh-n+ax n-ax+f ax-f+ax f-ax+k ax-k+ey k-ey+sh ey-sh+ax sh-ax+n ax-n sp +IDENTIFICATIONS ay+d ay-d+eh d-eh+n eh-n+ax n-ax+f ax-f+ax f-ax+k ax-k+ey k-ey+sh ey-sh+en sh-en+z en-z sp +IF ih+f ih-f sp +IN ih+n ih-n sp +INCLUDE ax+ng ax-ng+k ng-k+l k-l+uw l-uw+dd uw-dd sp +INCLUDED ax+ng ax-ng+k ng-k+l k-l+uw l-uw+dx uw-dx+ax dx-ax+dd ax-dd sp +INCLUDING ax+ng ax-ng+k ng-k+l k-l+uw l-uw+dx uw-dx+ih dx-ih+ng ih-ng sp +INCREASE ih+ng ih-ng+k ng-k+r k-r+iy r-iy+s iy-s sp +INCREASED ih+ng ih-ng+k ng-k+r k-r+iy r-iy+s iy-s+td s-td sp +INCREASING ih+ng ih-ng+k ng-k+r k-r+iy r-iy+s iy-s+ih s-ih+ng ih-ng sp +INDEPENDENCE ih+n ih-n+d n-d+iy d-iy+p iy-p+eh p-eh+n eh-n+d n-d+ax d-ax+n ax-n+s n-s sp +INDEPENDENCE+S ih+n ih-n+d n-d+iy d-iy+p iy-p+eh p-eh+n eh-n+d n-d+ax d-ax+n ax-n+td n-td+s td-s+ax s-ax+z ax-z sp +INDIAN ih+n ih-n+d n-d+iy d-iy+ax iy-ax+n ax-n sp +INDONESIA ih+n ih-n+d n-d+ow d-ow+n ow-n+ey n-ey+sh ey-sh+ax sh-ax sp +INFORMATION ih+n ih-n+f n-f+ax f-ax+m ax-m+ey m-ey+sh ey-sh+ax sh-ax+n ax-n sp +INSTALLED ax+n ax-n+s n-s+t s-t+aa t-aa+l aa-l+dd l-dd sp +INSTEAD ax+n ax-n+s n-s+t s-t+eh t-eh+dd eh-dd sp +INSUFFICIENT ih+n ih-n+s n-s+ax s-ax+f ax-f+ih f-ih+sh ih-sh+ax sh-ax+n ax-n sp +INVOLVED ax+n ax-n+v n-v+aa v-aa+l aa-l+v l-v+dd v-dd sp +INVOLVING ax+n ax-n+v n-v+aa v-aa+l aa-l+v l-v+ih v-ih+ng ih-ng sp +IRONWOOD ay+er ay-er+n er-n+w n-w+uh w-uh+dd uh-dd sp +IRONWOOD+S ay+er ay-er+n er-n+w n-w+uh w-uh+dd uh-dd+z dd-z sp +IS ih+z ih-z sp +ISLANDS ay+l ay-l+ax l-ax+n ax-n+z n-z sp +ISN+T ih+z ih-z+ax z-ax+n ax-n sp +IT ih+td ih-td sp +IT+S ih+ts ih-ts sp +ITS ih+ts ih-ts sp +JANUARY dd+jh dd-jh+ae jh-ae+n ae-n+y n-y+uw y-uw+er uw-er+iy er-iy sp +JAPAN dd+jh dd-jh+ax jh-ax+p ax-p+ae p-ae+n ae-n sp +JARRETT dd+jh dd-jh+eh jh-eh+r eh-r+ax r-ax+td ax-td sp +JARRETT+S dd+jh dd-jh+eh jh-eh+er eh-er+ts er-ts sp +JARVIS dd+jh dd-jh+aa jh-aa+r aa-r+v r-v+ax v-ax+s ax-s sp +JARVIS+S dd+jh dd-jh+aa jh-aa+r aa-r+v r-v+ax v-ax+s ax-s+ax s-ax+z ax-z sp +JASON dd+jh dd-jh+ey jh-ey+s ey-s+ax s-ax+n ax-n sp +JASON+S dd+jh dd-jh+ey jh-ey+s ey-s+en s-en+z en-z sp +JULY dd+jh dd-jh+uw jh-uw+l uw-l+ay l-ay sp +JUNE dd+jh dd-jh+uw jh-uw+n uw-n sp +JUPITER dd+jh dd-jh+uw jh-uw+p uw-p+ax p-ax+dx ax-dx+er dx-er sp +JUPITER+S dd+jh dd-jh+uw jh-uw+p uw-p+ax p-ax+dx ax-dx+er dx-er+z er-z sp +KENNEDY k+eh k-eh+n eh-n+ax n-ax+dx ax-dx+iy dx-iy sp +KENNEDY+S k+eh k-eh+n eh-n+ax n-ax+dx ax-dx+iy dx-iy+z iy-z sp +KILOMETER k+el k-el+aa el-aa+m aa-m+ax m-ax+dx ax-dx+er dx-er sp +KILOMETERS k+el k-el+aa el-aa+m aa-m+ax m-ax+dx ax-dx+er dx-er+z er-z sp +KIRK k+er k-er+k er-k sp +KIRK+S k+er k-er+k er-k+s k-s sp +KISKA k+ih k-ih+s ih-s+k s-k+ax k-ax sp +KISKA+S k+ih k-ih+s ih-s+k s-k+ax k-ax+z ax-z sp +KNOT n+aa n-aa+td aa-td sp +KNOTS n+aa n-aa+ts aa-ts sp +KODIAK k+ow k-ow+dd ow-dd+iy dd-iy+ae iy-ae+k ae-k sp +KOREA k+ao k-ao+r ao-r+iy r-iy+ax iy-ax sp +KOREAN k+ao k-ao+r ao-r+iy r-iy+ax iy-ax+n ax-n sp +LAMPS l+ae l-ae+m ae-m+p m-p+s p-s sp +LANTFLT l+ae l-ae+n ae-n+t n-t+f t-f+l f-l+iy l-iy+td iy-td sp +LARGE l+aa l-aa+r aa-r+dd r-dd+jh dd-jh sp +LARGER l+aa l-aa+r aa-r+dd r-dd+jh dd-jh+er jh-er sp +LARGEST l+aa l-aa+r aa-r+dd r-dd+jh dd-jh+ax jh-ax+s ax-s+td s-td sp +LAST l+ae l-ae+s ae-s+td s-td sp +LAT l+ae l-ae+td ae-td sp +LAT-LON l+ae l-ae+td ae-td+l td-l+aa l-aa+n aa-n sp +LAT-LONS l+ae l-ae+td ae-td+l td-l+aa l-aa+n aa-n+z n-z sp +LATER l+ey l-ey+dx ey-dx+er dx-er sp +LATEST l+ey l-ey+dx ey-dx+ax dx-ax+s ax-s+td s-td sp +LATITUDE l+ae l-ae+dx ae-dx+ax dx-ax+t ax-t+uw t-uw+dd uw-dd sp +LATITUDES l+ae l-ae+dx ae-dx+ax dx-ax+t ax-t+uw t-uw+dd uw-dd+z dd-z sp +LATS l+ae l-ae+ts ae-ts sp +LEAST l+iy l-iy+s iy-s+td s-td sp +LEFT l+eh l-eh+f eh-f+td f-td sp +LENGTH l+eh l-eh+ng eh-ng+th ng-th sp +LENGTHS l+eh l-eh+ng eh-ng+th ng-th+s th-s sp +LENINGRAD l+eh l-eh+n eh-n+ax n-ax+n ax-n+g n-g+r g-r+ae r-ae+dd ae-dd sp +LESS l+eh l-eh+s eh-s sp +LETTER l+eh l-eh+dx eh-dx+er dx-er sp +LETTERS l+eh l-eh+dx eh-dx+er dx-er+z er-z sp +LEVEL l+eh l-eh+v eh-v+el v-el sp +LEVELS l+eh l-eh+v eh-v+el v-el+z el-z sp +LINK-11 l+ih l-ih+ng ih-ng+k ng-k+ax k-ax+l ax-l+eh l-eh+v eh-v+ax v-ax+n ax-n sp +LIST l+ih l-ih+s ih-s+td s-td sp +LOCATED l+ow l-ow+k ow-k+ey k-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +LOCATION l+ow l-ow+k ow-k+ey k-ey+sh ey-sh+ax sh-ax+n ax-n sp +LOCATIONS l+ow l-ow+k ow-k+ey k-ey+sh ey-sh+en sh-en+z en-z sp +LOCKWOOD l+aa l-aa+k aa-k+w k-w+uh w-uh+dd uh-dd sp +LOCKWOOD+S l+aa l-aa+k aa-k+w k-w+uh w-uh+dd uh-dd+z dd-z sp +LON l+aa l-aa+n aa-n sp +LONG l+ao l-ao+ng ao-ng sp +LONGER l+ao l-ao+ng ao-ng+g ng-g+er g-er sp +LONGEST l+ao l-ao+ng ao-ng+g ng-g+ax g-ax+s ax-s+td s-td sp +LONGITUDE l+aa l-aa+n aa-n+jh n-jh+ax jh-ax+t ax-t+uw t-uw+dd uw-dd sp +LONGITUDES l+aa l-aa+n aa-n+jh n-jh+ax jh-ax+t ax-t+uw t-uw+dd uw-dd+z dd-z sp +LONS l+aa l-aa+n aa-n+z n-z sp +LOW l+ow l-ow sp +LOWER l+ow l-ow+er ow-er sp +LOWEST l+ow l-ow+ax ow-ax+s ax-s+td s-td sp +M-CODE eh+m eh-m+k m-k+ow k-ow+dd ow-dd sp +M-CODES eh+m eh-m+k m-k+ow k-ow+dd ow-dd+z dd-z sp +M-RATING eh+m eh-m+r m-r+ey r-ey+dx ey-dx+ih dx-ih+ng ih-ng sp +M-RATINGS eh+m eh-m+r m-r+ey r-ey+dx ey-dx+ih dx-ih+ng ih-ng+z ng-z sp +M1 eh+m eh-m+w m-w+ah w-ah+n ah-n sp +M2 eh+m eh-m+t m-t+uw t-uw sp +M3 eh+m eh-m+th m-th+r th-r+iy r-iy sp +M4 eh+m eh-m+f m-f+ao f-ao+r ao-r sp +M5 eh+m eh-m+f m-f+ay f-ay+v ay-v sp +MADAGASCAR m+ae m-ae+d ae-d+ax d-ax+g ax-g+ae g-ae+s ae-s+k s-k+aa k-aa+r aa-r sp +MADE m+ey m-ey+dd ey-dd sp +MAKE m+ey m-ey+k ey-k sp +MAKING m+ey m-ey+k ey-k+ih k-ih+ng ih-ng sp +MANCHESTER m+ae m-ae+n ae-n+td n-td+ch td-ch+ax ch-ax+s ax-s+t s-t+er t-er sp +MANHATTAN m+ae m-ae+n ae-n+hh n-hh+ae hh-ae+t ae-t+ax t-ax+n ax-n sp +MANHATTAN+S m+ae m-ae+n ae-n+hh n-hh+ae hh-ae+dx ae-dx+ax dx-ax+n ax-n+z n-z sp +MANILA m+ax m-ax+n ax-n+ih n-ih+l ih-l+ax l-ax sp +MANY m+eh m-eh+n eh-n+iy n-iy sp +MARCH m+aa m-aa+r aa-r+td r-td+ch td-ch sp +MARS m+aa m-aa+r aa-r+z r-z sp +MARS+S m+aa m-aa+r aa-r+z r-z sp +MAX m+ae m-ae+k ae-k+s k-s sp +MAXIMUM m+ae m-ae+k ae-k+s k-s+m s-m+ax m-ax+m ax-m sp +MAY m+ey m-ey sp +MCCLUSKY m+ax m-ax+k ax-k+l k-l+ah l-ah+s ah-s+k s-k+iy k-iy sp +MCCLUSKY+S m+ax m-ax+k ax-k+l k-l+ah l-ah+s ah-s+k s-k+iy k-iy+z iy-z sp +ME m+iy m-iy sp +MEASURE m+ey m-ey+sh ey-sh+er sh-er sp +MERCATOR m+er m-er+k er-k+ey k-ey+dx ey-dx+er dx-er sp +MERCURY m+er m-er+k er-k+y k-y+er y-er+iy er-iy sp +MERCURY+S m+er m-er+k er-k+y k-y+er y-er+iy er-iy+z iy-z sp +METEOR m+iy m-iy+t iy-t+iy t-iy+er iy-er sp +METEOR+S m+iy m-iy+t iy-t+iy t-iy+er iy-er+z er-z sp +METERS m+iy m-iy+dx iy-dx+er dx-er+z er-z sp +METRIC m+eh m-eh+td eh-td+ch td-ch+r ch-r+ax r-ax+k ax-k sp +MEXICO m+eh m-eh+k eh-k+s k-s+ax s-ax+k ax-k+ow k-ow sp +MIAMI m+ay m-ay+ae ay-ae+m ae-m+iy m-iy sp +MIDGETT m+ih m-ih+dd ih-dd+jh dd-jh+ax jh-ax+td ax-td sp +MIDGETT+S m+ih m-ih+dd ih-dd+jh dd-jh+ax jh-ax+ts ax-ts sp +MIDPAC m+ih m-ih+dd ih-dd+p dd-p+ae p-ae+k ae-k sp +MIDPAC+S m+ih m-ih+dd ih-dd+p dd-p+ae p-ae+k ae-k+s k-s sp +MIDWAY m+ih m-ih+d ih-d+w d-w+ey w-ey sp +MIDWAY+S m+ih m-ih+d ih-d+w d-w+ey w-ey+z ey-z sp +MILE m+ay m-ay+el ay-el sp +MILES m+ay m-ay+el ay-el+z el-z sp +MIND m+ay m-ay+n ay-n sp +MINUTES m+ih m-ih+n ih-n+ax n-ax+ts ax-ts sp +MISHAWAKA m+ih m-ih+sh ih-sh+ax sh-ax+w ax-w+aa w-aa+k aa-k+ax k-ax sp +MISHAWAKA+S m+ih m-ih+sh ih-sh+ax sh-ax+w ax-w+aa w-aa+k aa-k+ax k-ax+z ax-z sp +MISSION m+ih m-ih+sh ih-sh+ax sh-ax+n ax-n sp +MISSIONS m+ih m-ih+sh ih-sh+en sh-en+z en-z sp +MISSISSIPPI m+ih m-ih+s ih-s+ax s-ax+s ax-s+ih s-ih+p ih-p+iy p-iy sp +MISSISSIPPI+S m+ih m-ih+s ih-s+ax s-ax+s ax-s+ih s-ih+p ih-p+iy p-iy+z iy-z sp +MIW eh+m eh-m+ay m-ay+d ay-d+ah d-ah+b ah-b+y b-y+uw y-uw sp +MOB eh+m eh-m+ow m-ow+b ow-b+iy b-iy sp +MONDAY m+ah m-ah+n ah-n+d n-d+ey d-ey sp +MONDAY+S m+ah m-ah+n ah-n+d n-d+ey d-ey+z ey-z sp +MONGOLIA m+aa m-aa+ng aa-ng+g ng-g+ow g-ow+l ow-l+iy l-iy+ax iy-ax sp +MONTH m+ah m-ah+n ah-n+th n-th sp +MONTH+S m+ah m-ah+n ah-n+th n-th+s th-s sp +MONTHS m+ah m-ah+n ah-n+th n-th+s th-s sp +MONTICELLO m+aa m-aa+n aa-n+ax n-ax+s ax-s+eh s-eh+l eh-l+ow l-ow sp +MONTICELLO+S m+aa m-aa+n aa-n+ax n-ax+s ax-s+eh s-eh+l eh-l+ow l-ow+z ow-z sp +MORE m+ao m-ao+r ao-r sp +MOST m+ow m-ow+s ow-s+td s-td sp +MOZAMBIQUE m+ow m-ow+z ow-z+ae z-ae+m ae-m+b m-b+iy b-iy+k iy-k sp +MUCH m+ah m-ah+td ah-td+ch td-ch sp +N92762 eh+n eh-n+n n-n+ay n-ay+n ay-n+t n-t+uw t-uw+s uw-s+eh s-eh+v eh-v+ax v-ax+n ax-n+s n-s+ih s-ih+k ih-k+s k-s+t s-t+uw t-uw sp +NAME n+ey n-ey+m ey-m sp +NAMES n+ey n-ey+m ey-m+z m-z sp +NAPLES n+ey n-ey+p ey-p+el p-el+z el-z sp +NASHUA n+ae n-ae+sh ae-sh+uw sh-uw+ax uw-ax sp +NASHUA+S n+ae n-ae+sh ae-sh+uw sh-uw+ax uw-ax+z ax-z sp +NEAR n+iy n-iy+r iy-r sp +NEARER n+iy n-iy+r iy-r+er r-er sp +NEAREST n+iy n-iy+r iy-r+ax r-ax+s ax-s+td s-td sp +NEVER n+eh n-eh+v eh-v+er v-er sp +NEW n+uw n-uw sp +NEW-YORK n+uw n-uw+y uw-y+ao y-ao+r ao-r+k r-k sp +NEW-ZEALAND n+uw n-uw+z uw-z+iy z-iy+l iy-l+ax l-ax+n ax-n sp +NEWCASTLE n+uw n-uw+k uw-k+ae k-ae+s ae-s+el s-el sp +NEWER n+uw n-uw+er uw-er sp +NEWEST n+uw n-uw+ax uw-ax+s ax-s+td s-td sp +NEXT n+eh n-eh+k eh-k+s k-s+td s-td sp +NINE n+ay n-ay+n ay-n sp +NINETEEN n+ay n-ay+n ay-n+t n-t+iy t-iy+n iy-n sp +NINETEENTH n+ay n-ay+n ay-n+t n-t+iy t-iy+n iy-n+th n-th sp +NINETY n+ay n-ay+n ay-n+iy n-iy sp +NINTH n+ay n-ay+n ay-n+th n-th sp +NO n+ow n-ow sp +NOME n+ow n-ow+m ow-m sp +NORTH n+ao n-ao+ax ao-ax+th ax-th sp +NORTHERN n+ao n-ao+r ao-r+dh r-dh+er dh-er+n er-n sp +NOT n+aa n-aa+td aa-td sp +NOVA n+ow n-ow+v ow-v+ax v-ax sp +NOVEMBER n+ow n-ow+v ow-v+eh v-eh+m eh-m+b m-b+er b-er sp +NOW n+aw n-aw sp +NTDS eh+n eh-n+t n-t+iy t-iy+d iy-d+iy d-iy+eh iy-eh+s eh-s sp +NUCLEAR n+uw n-uw+k uw-k+l k-l+iy l-iy+er iy-er sp +NUMBER n+ah n-ah+m ah-m+b m-b+er b-er sp +OAKLAND ow+k ow-k+l k-l+ax l-ax+n ax-n sp +OCEAN ow+sh ow-sh+ax sh-ax+n ax-n sp +OCTOBER aa+kd aa-kd+t kd-t+ow t-ow+b ow-b+er b-er sp +OF ax+v ax-v sp +OFF ao+f ao-f sp +OLD ow+dx ow-dx sp +OLDER ow+d ow-d+er d-er sp +OLDEST ow+l ow-l+d l-d+ax d-ax+s ax-s+td s-td sp +OLYMPIA ow+l ow-l+ih l-ih+m ih-m+p m-p+iy p-iy+ax iy-ax sp +ON aa+n aa-n sp +ONE w+ah w-ah+n ah-n sp +ONLY ow+n ow-n+l n-l+iy l-iy sp +OPEN ow+p ow-p+ax p-ax+n ax-n sp +OR ao+r ao-r sp +ORANGE ao+er ao-er+n er-n+jh n-jh sp +OSGP ow+eh ow-eh+s eh-s+dd s-dd+jh dd-jh+iy jh-iy+p iy-p+iy p-iy sp +OVERALL ow+v ow-v+er v-er+ao er-ao+l ao-l sp +OVERLAY ow+v ow-v+er v-er+l er-l+ey l-ey sp +OVERLAYS ow+v ow-v+er v-er+l er-l+ey l-ey+z ey-z sp +PAC p+ae p-ae+k ae-k sp +PACFLT p+ae p-ae+k ae-k+f k-f+l f-l+iy l-iy+td iy-td sp +PACIFIC p+ax p-ax+s ax-s+ih s-ih+f ih-f+ax f-ax+k ax-k sp +PANAMA p+ae p-ae+n ae-n+ax n-ax+m ax-m+aa m-aa sp +PARAMETER p+er p-er+ae er-ae+m ae-m+ax m-ax+dx ax-dx+er dx-er sp +PARAMETERS p+er p-er+ae er-ae+m ae-m+ax m-ax+dx ax-dx+er dx-er+z er-z sp +PEARL p+er p-er+l er-l sp +PEORIA p+iy p-iy+ao iy-ao+r ao-r+iy r-iy+ax iy-ax sp +PEORIA+S p+iy p-iy+ao iy-ao+r ao-r+iy r-iy+ax iy-ax+z ax-z sp +PERCENT p+er p-er+s er-s+eh s-eh+n eh-n sp +PERSIAN p+er p-er+sh er-sh+ax sh-ax+n ax-n sp +PERSONNEL p+er p-er+s er-s+ax s-ax+n ax-n+eh n-eh+l eh-l sp +PHILIPPINE f+ih f-ih+l ih-l+ax l-ax+p ax-p+iy p-iy+n iy-n sp +PHILIPPINES f+ih f-ih+l ih-l+ax l-ax+p ax-p+iy p-iy+n iy-n+z n-z sp +PIGEON p+ih p-ih+dd ih-dd+jh dd-jh+ax jh-ax+n ax-n sp +PIGEON+S p+ih p-ih+dd ih-dd+jh dd-jh+ax jh-ax+n ax-n+z n-z sp +PLH003 p+iy p-iy+eh iy-eh+l eh-l+ey l-ey+td ey-td+ch td-ch+z ch-z+iy z-iy+r iy-r+ow r-ow+z ow-z+iy z-iy+r iy-r+ow r-ow+th ow-th+r th-r+iy r-iy sp +PLUCK p+l p-l+ah l-ah+k ah-k sp +PLUCK+S p+l p-l+ah l-ah+k ah-k+s k-s sp +PLUNGER p+l p-l+ah l-ah+n ah-n+jh n-jh+er jh-er sp +PLUNGER+S p+l p-l+ah l-ah+n ah-n+jh n-jh+er jh-er+z er-z sp +POLLACK p+aa p-aa+l aa-l+ax l-ax+k ax-k sp +POLLACK+S p+aa p-aa+l aa-l+ax l-ax+k ax-k+s k-s sp +POLYNESIA p+aa p-aa+l aa-l+ax l-ax+n ax-n+iy n-iy+sh iy-sh+ax sh-ax sp +PORT p+ao p-ao+r ao-r+td r-td sp +PORTS p+ao p-ao+r ao-r+ts r-ts sp +POSIT p+aa p-aa+z aa-z+ax z-ax+td ax-td sp +POSITION p+ax p-ax+z ax-z+ih z-ih+sh ih-sh+ax sh-ax+n ax-n sp +POSITIONS p+ax p-ax+z ax-z+ih z-ih+sh ih-sh+en sh-en+z en-z sp +POSITS p+aa p-aa+z aa-z+ax z-ax+ts ax-ts sp +POUGHKEEPSIE p+uw p-uw+k uw-k+ih k-ih+p ih-p+s p-s+iy s-iy sp +POUGHKEEPSIE+S p+uw p-uw+k uw-k+ih k-ih+p ih-p+s p-s+iy s-iy+z iy-z sp +POWERED p+aw p-aw+er aw-er+dd er-dd sp +PRAIRIE p+r p-r+eh r-eh+r eh-r+iy r-iy sp +PRAIRIE+S p+r p-r+eh r-eh+r eh-r+iy r-iy+z iy-z sp +PRESENT p+r p-r+eh r-eh+z eh-z+ax z-ax+n ax-n sp +PREVIOUS p+r p-r+iy r-iy+v iy-v+iy v-iy+ax iy-ax+s ax-s sp +PROBLEM p+r p-r+aa r-aa+b aa-b+l b-l+ax l-ax+m ax-m sp +PROBLEMS p+r p-r+aa r-aa+b aa-b+l b-l+ax l-ax+m ax-m+z m-z sp +PROJECTION p+er p-er+dd er-dd+jh dd-jh+eh jh-eh+k eh-k+sh k-sh+ax sh-ax+n ax-n sp +PROPELLED p+er p-er+p er-p+eh p-eh+l eh-l+dd l-dd sp +PROPULSION p+er p-er+p er-p+ah p-ah+l ah-l+sh l-sh+ax sh-ax+n ax-n sp +PUFFER p+ah p-ah+f ah-f+er f-er sp +PUFFER+S p+ah p-ah+f ah-f+er f-er+z er-z sp +PUGET-1 p+y p-y+uw y-uw+dd uw-dd+jh dd-jh+ax jh-ax+td ax-td+w td-w+ah w-ah+n ah-n sp +QUARTER k+w k-w+ao w-ao+r ao-r+dx r-dx+er dx-er sp +QUARTERS k+w k-w+ao w-ao+r ao-r+dx r-dx+er dx-er+s er-s sp +QUEENFISH k+w k-w+iy w-iy+n iy-n+f n-f+ih f-ih+sh ih-sh sp +QUEENFISH+S k+w k-w+iy w-iy+n iy-n+f n-f+ih f-ih+sh ih-sh+ax sh-ax+z ax-z sp +RADAR r+ey r-ey+dx ey-dx+aa dx-aa+r aa-r sp +RAMSEY r+ae r-ae+m ae-m+z m-z+iy z-iy sp +RAMSEY+S r+ae r-ae+m ae-m+z m-z+iy z-iy+z iy-z sp +RANGER r+ey r-ey+n ey-n+jh n-jh+er jh-er sp +RANGER+S r+ey r-ey+n ey-n+jh n-jh+er jh-er+z er-z sp +RATED r+ey r-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +RATHBURNE r+ae r-ae+th ae-th+b th-b+er b-er+n er-n sp +RATHBURNE+S r+ae r-ae+th ae-th+b th-b+er b-er+n er-n+z n-z sp +RATING r+ey r-ey+dx ey-dx+ih dx-ih+ng ih-ng sp +RATINGS r+ey r-ey+dx ey-dx+ih dx-ih+ng ih-ng+z ng-z sp +READINESS r+eh r-eh+dx eh-dx+iy dx-iy+n iy-n+ax n-ax+s ax-s sp +REASON r+iy r-iy+z iy-z+ax z-ax+n ax-n sp +REASONER r+iy r-iy+z iy-z+ax z-ax+n ax-n+er n-er sp +REASONER+S r+iy r-iy+z iy-z+ax z-ax+n ax-n+er n-er+z er-z sp +REASONS r+iy r-iy+z iy-z+en z-en+z en-z sp +RECENT r+iy r-iy+s iy-s+ax s-ax+n ax-n sp +RECLAIMER r+iy r-iy+k iy-k+l k-l+ey l-ey+m ey-m+er m-er sp +RECLAIMER+S r+iy r-iy+k iy-k+l k-l+ey l-ey+m ey-m+er m-er+z er-z sp +RED r+eh r-eh+dd eh-dd sp +REDEFINE r+iy r-iy+d iy-d+iy d-iy+f iy-f+ay f-ay+n ay-n sp +REDEFINED r+iy r-iy+d iy-d+iy d-iy+f iy-f+ay f-ay+n ay-n sp +REDEFINING r+iy r-iy+d iy-d+iy d-iy+f iy-f+ay f-ay+n ay-n+ih n-ih+ng ih-ng sp +REDISPLAY r+iy r-iy+d iy-d+ax d-ax+s ax-s+p s-p+l p-l+ey l-ey sp +REDO r+iy r-iy+d iy-d+uw d-uw sp +REDRAW r+iy r-iy+dd iy-dd+jh dd-jh+r jh-r+ao r-ao sp +REEVES r+iy r-iy+v iy-v+z v-z sp +REEVES+S r+iy r-iy+v iy-v+z v-z sp +REMAINING r+iy r-iy+m iy-m+ey m-ey+n ey-n+ih n-ih+ng ih-ng sp +REMARK r+iy r-iy+m iy-m+aa m-aa+r aa-r+k r-k sp +REMARKS r+iy r-iy+m iy-m+aa m-aa+r aa-r+k r-k+s k-s sp +REPAIR r+iy r-iy+p iy-p+eh p-eh+r eh-r sp +REPAIRED r+iy r-iy+p iy-p+eh p-eh+r eh-r+dd r-dd sp +REPAIRING r+iy r-iy+p iy-p+eh p-eh+r eh-r+ih r-ih+ng ih-ng sp +REPLACED r+iy r-iy+p iy-p+l p-l+ey l-ey+s ey-s+td s-td sp +REPORT r+iy r-iy+p iy-p+ao p-ao+r ao-r+td r-td sp +REPORTED r+iy r-iy+p iy-p+ao p-ao+r ao-r+dx r-dx+ax dx-ax+dd ax-dd sp +REPORTING r+iy r-iy+p iy-p+ao p-ao+r ao-r+dx r-dx+ih dx-ih+ng ih-ng sp +REPORTS r+iy r-iy+p iy-p+ao p-ao+r ao-r+ts r-ts sp +RESET r+iy r-iy+s iy-s+eh s-eh+td eh-td sp +RESOLUTION r+eh r-eh+z eh-z+ax z-ax+l ax-l+uw l-uw+sh uw-sh+ax sh-ax+n ax-n sp +RESOLVED r+iy r-iy+z iy-z+ao z-ao+l ao-l+v l-v+dd v-dd sp +RESOURCE r+iy r-iy+s iy-s+ao s-ao+r ao-r+s r-s sp +RESOURCES r+iy r-iy+s iy-s+ao s-ao+r ao-r+s r-s+ax s-ax+z ax-z sp +REVIEW r+iy r-iy+v iy-v+y v-y+uw y-uw sp +ROSS r+ao r-ao sp +SACRAMENTO s+ae s-ae+k ae-k+er k-er+m er-m+eh m-eh+n eh-n+t n-t+ow t-ow sp +SACRAMENTO+S s+ae s-ae+k ae-k+er k-er+m er-m+eh m-eh+n eh-n+t n-t+ow t-ow+z ow-z sp +SAIL s+ey s-ey+l ey-l sp +SAME s+ey s-ey+m ey-m sp +SAMPLE s+ae s-ae+m ae-m+p m-p+el p-el sp +SAMPLE+S s+ae s-ae+m ae-m+p m-p+el p-el+z el-z sp +SAN-DIEGO s+ae s-ae+n ae-n+d n-d+iy d-iy+ey iy-ey+g ey-g+ow g-ow sp +SAN-FRAN s+ae s-ae+n ae-n+f n-f+r f-r+ae r-ae+n ae-n sp +SASSAFRAS s+ae s-ae+s ae-s+ax s-ax+f ax-f+r f-r+ae r-ae+s ae-s sp +SASSAFRAS+S s+ae s-ae+s ae-s+ax s-ax+f ax-f+r f-r+ae r-ae+s ae-s+ax s-ax+z ax-z sp +SATURDAY s+ae s-ae+dx ae-dx+er dx-er+d er-d+ey d-ey sp +SATURDAY+S s+ae s-ae+dx ae-dx+er dx-er+d er-d+ey d-ey+z ey-z sp +SAVE s+ey s-ey+v ey-v sp +SCHENECTADY s+k s-k+ax k-ax+n ax-n+eh n-eh+kd eh-kd+t kd-t+ax t-ax+dx ax-dx+iy dx-iy sp +SCHENECTADY+S s+k s-k+ax k-ax+n ax-n+eh n-eh+kd eh-kd+t kd-t+ax t-ax+dx ax-dx+iy dx-iy+z iy-z sp +SCREEN s+k s-k+r k-r+iy r-iy+n iy-n sp +SCREENS s+k s-k+r k-r+iy r-iy+n iy-n+z n-z sp +SEA s+iy s-iy sp +SEAWOLF s+iy s-iy+w iy-w+uh w-uh+l uh-l+f l-f sp +SEAWOLF+S s+iy s-iy+w iy-w+uh w-uh+l uh-l+f l-f+s f-s sp +SECOND s+eh s-eh+k eh-k+ax k-ax+n ax-n sp +SECURITY s+ax s-ax+k ax-k+y k-y+er y-er+ax er-ax+dx ax-dx+iy dx-iy sp +SENSOR s+eh s-eh+n eh-n+s n-s+er s-er sp +SENSORS s+eh s-eh+n eh-n+s n-s+er s-er+z er-z sp +SEPTEMBER s+ax s-ax+pd ax-pd+t pd-t+eh t-eh+m eh-m+b m-b+er b-er sp +SET s+eh s-eh+td eh-td sp +SETTING s+eh s-eh+dx eh-dx+ih dx-ih+ng ih-ng sp +SETTINGS s+eh s-eh+dx eh-dx+ih dx-ih+ng ih-ng+z ng-z sp +SEVEN s+eh s-eh+v eh-v+ax v-ax+n ax-n sp +SEVENTEEN s+eh s-eh+v eh-v+ax v-ax+n ax-n+t n-t+iy t-iy+n iy-n sp +SEVENTEENTH s+eh s-eh+v eh-v+ax v-ax+n ax-n+t n-t+iy t-iy+n iy-n+th n-th sp +SEVENTH s+eh s-eh+v eh-v+ax v-ax+n ax-n+th n-th sp +SEVENTY s+eh s-eh+v eh-v+ax v-ax+n ax-n+iy n-iy sp +SHASTA sh+ae sh-ae+s ae-s+t s-t+ax t-ax sp +SHASTA+S sh+ae sh-ae+s ae-s+t s-t+ax t-ax+z ax-z sp +SHE sh+iy sh-iy sp +SHE+S sh+iy sh-iy+z iy-z sp +SHERMAN sh+er sh-er+m er-m+ax m-ax+n ax-n sp +SHERMAN+S sh+er sh-er+m er-m+ax m-ax+n ax-n+z n-z sp +SHIP sh+ih sh-ih+p ih-p sp +SHIPS sh+ih sh-ih+p ih-p+s p-s sp +SHIPS+S sh+ih sh-ih+p ih-p+s p-s sp +SHOW sh+ow sh-ow sp +SHOWING sh+ow sh-ow+ih ow-ih+ng ih-ng sp +SHOWN sh+ow sh-ow+n ow-n sp +SIBERIAN s+ay s-ay+b ay-b+iy b-iy+r iy-r+iy r-iy+ax iy-ax+n ax-n sp +SIDNEY s+ih s-ih+dd ih-dd+n dd-n+iy n-iy sp +SINCE s+ih s-ih+n ih-n+s n-s sp +SINGAPORE s+ih s-ih+ng ih-ng+ax ng-ax+p ax-p+ao p-ao+r ao-r sp +SIX s+ih s-ih+k ih-k+s k-s sp +SIXTEEN s+ih s-ih+k ih-k+s k-s+t s-t+iy t-iy+n iy-n sp +SIXTEENTH s+ih s-ih+k ih-k+s k-s+t s-t+iy t-iy+n iy-n+th n-th sp +SIXTH s+ih s-ih+k ih-k+s k-s+th s-th sp +SIXTY s+ih s-ih+k ih-k+s k-s+t s-t+iy t-iy sp +SIZE s+ay s-ay+z ay-z sp +SLOW s+l s-l+ow l-ow sp +SLOWER s+l s-l+ow l-ow+er ow-er sp +SLOWEST s+l s-l+ow l-ow+ax ow-ax+s ax-s+td s-td sp +SLQ-32 eh+s eh-s+eh s-eh+l eh-l+k l-k+y k-y+uw y-uw+th uw-th+er th-er+dx er-dx+iy dx-iy+t iy-t+uw t-uw sp +SMALL s+m s-m+ao m-ao+l ao-l sp +SMALLER s+m s-m+ao m-ao+l ao-l+er l-er sp +SMALLEST s+m s-m+ao m-ao+l ao-l+ax l-ax+s ax-s+td s-td sp +SOHO s+ow s-ow+hh ow-hh+ow hh-ow sp +SOLOMON s+ao s-ao+l ao-l+ax l-ax+m ax-m+ax m-ax+n ax-n sp +SONAR s+ow s-ow+n ow-n+aa n-aa+r aa-r sp +SOON s+uw s-uw+n uw-n sp +SOONER s+uw s-uw+n uw-n+er n-er sp +SOUTH s+aw s-aw+th aw-th sp +SOUTHERN s+ah s-ah+dh ah-dh+er dh-er+n er-n sp +SOVIET s+ow s-ow+v ow-v+iy v-iy+ax iy-ax+td ax-td sp +SPEED s+p s-p+iy p-iy+dd iy-dd sp +SPEEDS s+p s-p+iy p-iy+dd iy-dd+z dd-z sp +SPS-40 eh+s eh-s+p s-p+iy p-iy+eh iy-eh+s eh-s+f s-f+ao f-ao+r ao-r+dx r-dx+iy dx-iy sp +SPS-48 eh+s eh-s+p s-p+iy p-iy+eh iy-eh+s eh-s+f s-f+ao f-ao+r ao-r+dx r-dx+iy dx-iy+ey iy-ey+td ey-td sp +SQQ-23 eh+s eh-s+k s-k+y k-y+uw y-uw+k uw-k+y k-y+uw y-uw+t uw-t+w t-w+eh w-eh+n eh-n+iy n-iy+th iy-th+r th-r+iy r-iy sp +START s+t s-t+aa t-aa+r aa-r+td r-td sp +STARTED s+t s-t+aa t-aa+r aa-r+dx r-dx+ax dx-ax+dd ax-dd sp +STARTING s+t s-t+aa t-aa+r aa-r+dx r-dx+ih dx-ih+ng ih-ng sp +STATES s+t s-t+ey t-ey+ts ey-ts sp +STATION s+t s-t+ey t-ey+sh ey-sh+ax sh-ax+n ax-n sp +STATUS s+t s-t+ey t-ey+dx ey-dx+ax dx-ax+s ax-s sp +STEAM s+t s-t+iy t-iy+m iy-m sp +STEREOGRAPHIC s+t s-t+eh t-eh+r eh-r+iy r-iy+ow iy-ow+g ow-g+r g-r+ae r-ae+f ae-f+ax f-ax+k ax-k sp +STERETT s+t s-t+eh t-eh+r eh-r+ax r-ax+td ax-td sp +STERETT+S s+t s-t+eh t-eh+r eh-r+ax r-ax+ts ax-ts sp +STRAIT s+td s-td+ch td-ch+r ch-r+ey r-ey+td ey-td sp +SUB s+ah s-ah+b ah-b sp +SUB+S s+ah s-ah+b ah-b+z b-z sp +SUBIC s+uw s-uw+b uw-b+ax b-ax+k ax-k sp +SUBMARINE s+ah s-ah+b ah-b+m b-m+er m-er+iy er-iy+n iy-n sp +SUBMARINE+S s+ah s-ah+b ah-b+m b-m+er m-er+iy er-iy+n iy-n+z n-z sp +SUBMARINES s+ah s-ah+b ah-b+m b-m+er m-er+iy er-iy+n iy-n+z n-z sp +SUBS s+ah s-ah+b ah-b+z b-z sp +SUFFICIENT s+ax s-ax+f ax-f+ih f-ih+sh ih-sh+ax sh-ax+n ax-n sp +SUMMARIZE s+ah s-ah+m ah-m+er m-er+ay er-ay+z ay-z sp +SUNDAY s+ah s-ah+n ah-n+d n-d+ey d-ey sp +SUNDAY+S s+ah s-ah+n ah-n+d n-d+ey d-ey+z ey-z sp +SUPPLIES s+ax s-ax+p ax-p+l p-l+ay l-ay+z ay-z sp +SUPPLY s+ax s-ax+p ax-p+l p-l+ay l-ay sp +SUPPOSED s+ax s-ax+p ax-p+ow p-ow+z ow-z sp +SURFACE s+er s-er+f er-f+ax f-ax+s ax-s sp +SUSTAINED s+ax s-ax+s ax-s+t s-t+ey t-ey+n ey-n sp +SWITCH s+w s-w+ih w-ih+td ih-td+ch td-ch sp +SWITCHES s+w s-w+ih w-ih+td ih-td+ch td-ch+ax ch-ax+z ax-z sp +SWORDFISH s+ao s-ao+r ao-r+d r-d+f d-f+ih f-ih+sh ih-sh sp +SWORDFISH+S s+ao s-ao+r ao-r+dd r-dd+f dd-f+ih f-ih+sh ih-sh+ax sh-ax+z ax-z sp +SYSTEM s+ih s-ih+s ih-s+t s-t+ax t-ax+m ax-m sp +T-LAM t+iy t-iy+l iy-l+ae l-ae+m ae-m sp +TACAN t+ae t-ae+k ae-k+ae k-ae+n ae-n sp +TAIWAN t+ay t-ay+w ay-w+aa w-aa+n aa-n sp +TAKE t+ey t-ey+k ey-k sp +TAKEN t+ey t-ey+k ey-k+ax k-ax+n ax-n sp +TASM t+ae t-ae+s ae-s+ax s-ax+m ax-m sp +TEN t+eh t-eh+n eh-n sp +TENTH t+eh t-eh+n eh-n+th n-th sp +TEST t+eh t-eh+s eh-s+td s-td sp +TEXAS t+eh t-eh+k eh-k+s k-s+ax s-ax+s ax-s sp +TEXAS+S t+eh t-eh+k eh-k+s k-s+ax s-ax+s ax-s+ax s-ax+z ax-z sp +TFCC t+iy t-iy+eh iy-eh+f eh-f+s f-s+iy s-iy+s iy-s+iy s-iy sp +THAILAND t+ay t-ay+l ay-l+ae l-ae+n ae-n sp +THAN dh+ae dh-ae+n ae-n sp +THAT dh+ae dh-ae+td ae-td sp +THE dh+ax dh-ax sp +THEIR dh+eh dh-eh+r eh-r sp +THEM dh+eh dh-eh+m eh-m sp +THERE dh+eh dh-eh+r eh-r sp +THESE dh+iy dh-iy+z iy-z sp +THEY dh+ey dh-ey sp +THIRD th+er th-er+dd er-dd sp +THIRTEEN th+er th-er+t er-t+iy t-iy+n iy-n sp +THIRTEENTH th+er th-er+t er-t+iy t-iy+n iy-n+th n-th sp +THIRTIETH th+er th-er+dx er-dx+iy dx-iy+ax iy-ax+th ax-th sp +THIRTY th+er th-er+dx er-dx+iy dx-iy sp +THIS dh+ih dh-ih+s ih-s sp +THOSE dh+ow dh-ow+z ow-z sp +THOUSAND th+aw th-aw+z aw-z+ax z-ax+n ax-n sp +THREAT th+r th-r+eh r-eh+td eh-td sp +THREATS th+r th-r+eh r-eh+ts eh-ts sp +THREE th+r th-r+iy r-iy sp +THURSDAY th+er th-er+z er-z+d z-d+ey d-ey sp +THURSDAY+S th+er th-er+z er-z+d z-d+ey d-ey+z ey-z sp +TICONDEROGA t+ay t-ay+k ay-k+aa k-aa+n aa-n+d n-d+er d-er+ow er-ow+g ow-g+ax g-ax sp +TICONDEROGA+S t+ay t-ay+k ay-k+aa k-aa+n aa-n+d n-d+er d-er+ow er-ow+g ow-g+ax g-ax+z ax-z sp +TIME t+ay t-ay+m ay-m sp +TIMES t+ay t-ay+m ay-m+z m-z sp +TO t+uw t-uw sp +TODAY t+ax t-ax+d ax-d+ey d-ey sp +TODAY+S t+ax t-ax+d ax-d+ey d-ey+z ey-z sp +TOGGLE t+aa t-aa+g aa-g+el g-el sp +TOGGLED t+aa t-aa+g aa-g+el g-el+dd el-dd sp +TOGGLING t+aa t-aa+g aa-g+el g-el+ih el-ih+ng ih-ng sp +TOKYO t+ow t-ow+k ow-k+iy k-iy+ow iy-ow sp +TOMORROW t+ax t-ax+m ax-m+ao m-ao+r ao-r+ow r-ow sp +TOMORROW+S t+ax t-ax+m ax-m+ao m-ao+r ao-r+ow r-ow+z ow-z sp +TONKIN t+ao t-ao+ng ao-ng+k ng-k+ax k-ax+n ax-n sp +TONS t+ah t-ah+n ah-n+z n-z sp +TOTAL t+ow t-ow+dx ow-dx+el dx-el sp +TOWNSVILLE t+aw t-aw+n aw-n+z n-z+v z-v+el v-el sp +TRACK td+ch td-ch+r ch-r+ae r-ae+k ae-k sp +TRACKS td+ch td-ch+r ch-r+ae r-ae+k ae-k+s k-s sp +TRAINING td+ch td-ch+r ch-r+ey r-ey+n ey-n+ih n-ih+ng ih-ng sp +TRIPOLI td+ch td-ch+r ch-r+ih r-ih+p ih-p+ow p-ow+l ow-l+iy l-iy sp +TRIPOLI+S td+ch td-ch+r ch-r+ih r-ih+p ih-p+ow p-ow+l ow-l+iy l-iy+z iy-z sp +TRUE-VIEW td+ch td-ch+r ch-r+uw r-uw+v uw-v+y v-y+uw y-uw sp +TUESDAY t+uw t-uw+z uw-z+d z-d+ey d-ey sp +TUESDAY+S t+uw t-uw+z uw-z+d z-d+ey d-ey+z ey-z sp +TURBINE t+er t-er+b er-b+ax b-ax+n ax-n sp +TURN t+er t-er+n er-n sp +TURNED t+er t-er+n er-n sp +TURNING t+er t-er+n er-n+ih n-ih+ng ih-ng sp +TUSCALOOSA t+ah t-ah+s ah-s+k s-k+ax k-ax+l ax-l+uw l-uw+s uw-s+ax s-ax sp +TUSCALOOSA+S t+ah t-ah+s ah-s+k s-k+ax k-ax+l ax-l+uw l-uw+s uw-s+ax s-ax+z ax-z sp +TWELFTH t+w t-w+eh w-eh+l eh-l+f l-f+th f-th sp +TWELVE t+w t-w+eh w-eh+l eh-l+v l-v sp +TWENTIETH t+w t-w+ah w-ah+n ah-n+iy n-iy+ax iy-ax+th ax-th sp +TWENTY t+w t-w+ah w-ah+n ah-n+iy n-iy sp +TWO t+uw t-uw sp +TYPE t+ay t-ay+p ay-p sp +TYPES t+ay t-ay+p ay-p+s p-s sp +UNION y+uw y-uw+n uw-n+y n-y+ax y-ax+n ax-n sp +UNIT y+uw y-uw+n uw-n+ax n-ax+td ax-td sp +UNITED y+uw y-uw+n uw-n+ay n-ay+dx ay-dx+ax dx-ax+dd ax-dd sp +UNTIL ax+n ax-n+t n-t+ih t-ih+l ih-l sp +UOM y+uw y-uw+ow uw-ow+eh ow-eh+m eh-m sp +UPDATE ah+pd ah-pd+d pd-d+ey d-ey+td ey-td sp +UPDATED ah+pd ah-pd+d pd-d+ey d-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +UPDATES ah+pd ah-pd+d pd-d+ey d-ey+ts ey-ts sp +UPGRADE ah+pd ah-pd+g pd-g+r g-r+ey r-ey+dd ey-dd sp +UPGRADED ah+pd ah-pd+g pd-g+r g-r+ey r-ey+dx ey-dx+ax dx-ax+dd ax-dd sp +USA y+uw y-uw+eh uw-eh+s eh-s+ey s-ey sp +USE y+uw y-uw+z uw-z sp +USING y+uw y-uw+z uw-z+ih z-ih+ng ih-ng sp +USN y+uw y-uw+eh uw-eh+s eh-s+eh s-eh+n eh-n sp +VALUE v+ae v-ae+l ae-l+y l-y+uw y-uw sp +VALUES v+ae v-ae+l ae-l+y l-y+uw y-uw+z uw-z sp +VANCOUVER v+ae v-ae+ng ae-ng+k ng-k+uw k-uw+v uw-v+er v-er sp +VANCOUVER+S v+ae v-ae+ng ae-ng+k ng-k+uw k-uw+v uw-v+er v-er+z er-z sp +VANDERGRIFT v+ae v-ae+n ae-n+d n-d+er d-er+g er-g+r g-r+ih r-ih+f ih-f+td f-td sp +VANDERGRIFT+S v+ae v-ae+n ae-n+d n-d+er d-er+g er-g+r g-r+ih r-ih+f ih-f+ts f-ts sp +VARIOUS v+eh v-eh+r eh-r+iy r-iy+ax iy-ax+s ax-s sp +VESSEL v+eh v-eh+s eh-s+el s-el sp +VESSELS v+eh v-eh+s eh-s+el s-el+z el-z sp +VICTORIA v+ax v-ax+kd ax-kd+t kd-t+ao t-ao+r ao-r+iy r-iy+ax iy-ax sp +VIRGINIA v+er v-er+dd er-dd+jh dd-jh+ih jh-ih+n ih-n+y n-y+ax y-ax sp +VIRGINIA+S v+er v-er+dd er-dd+jh dd-jh+ih jh-ih+n ih-n+y n-y+ax y-ax+z ax-z sp +VISUAL v+ih v-ih+sh ih-sh+uw sh-uw+el uw-el sp +WABASH w+aa w-aa+b aa-b+ae b-ae+sh ae-sh sp +WABASH+S w+aa w-aa+b aa-b+ae b-ae+sh ae-sh+ax sh-ax+z ax-z sp +WADSWORTH w+aa w-aa+dd aa-dd+z dd-z+w z-w+er w-er+th er-th sp +WADSWORTH+S w+aa w-aa+dd aa-dd+z dd-z+w z-w+er w-er+th er-th+s th-s sp +WAS w+ah w-ah+z ah-z sp +WASN+T w+ah w-ah+z ah-z+ax z-ax+n ax-n sp +WASP w+aa w-aa+s aa-s+p s-p sp +WASP+S w+aa w-aa+s aa-s+p s-p+s p-s sp +WE w+iy w-iy sp +WEDNESDAY w+eh w-eh+n eh-n+z n-z+d z-d+ey d-ey sp +WEDNESDAY+S w+eh w-eh+n eh-n+z n-z+d z-d+ey d-ey+z ey-z sp +WEEK w+iy w-iy+k iy-k sp +WEEK+S w+iy w-iy+k iy-k+s k-s sp +WEEKS w+iy w-iy+k iy-k+s k-s sp +WELLINGTON w+eh w-eh+l eh-l+ax l-ax+ng ax-ng+t ng-t+ax t-ax+n ax-n sp +WENT w+eh w-eh+n eh-n sp +WERE w+er w-er sp +WEREN+T w+er w-er+n er-n sp +WEST w+eh w-eh+s eh-s+td s-td sp +WESTERN w+eh w-eh+s eh-s+t s-t+er t-er+n er-n sp +WESTPAC w+eh w-eh+s eh-s+p s-p+ae p-ae+k ae-k sp +WESTPAC+S w+eh w-eh+s eh-s+p s-p+ae p-ae+k ae-k+s k-s sp +WHAT w+ah w-ah+td ah-td sp +WHAT+RE w+ah w-ah+dx ah-dx+er dx-er sp +WHAT+S w+ah w-ah+ts ah-ts sp +WHEN w+eh w-eh+n eh-n sp +WHEN+LL w+eh w-eh+n eh-n+el n-el sp +WHEN+S w+eh w-eh+n eh-n+z n-z sp +WHERE w+eh w-eh+r eh-r sp +WHERE+S w+eh w-eh+r eh-r+z r-z sp +WHICH w+ih w-ih+td ih-td+ch td-ch sp +WHIPPLE w+ih w-ih+p ih-p+el p-el sp +WHIPPLE+S w+ih w-ih+p ih-p+el p-el+z el-z sp +WHO hh+uw hh-uw sp +WHO+S hh+uw hh-uw+z uw-z sp +WHOSE hh+uw hh-uw+z uw-z sp +WHY w+ay w-ay sp +WHY+S w+ay w-ay+z ay-z sp +WICHITA w+ih w-ih+td ih-td+ch td-ch+ax ch-ax+t ax-t+ao t-ao sp +WICHITA+S w+ih w-ih+td ih-td+ch td-ch+ax ch-ax+t ax-t+ao t-ao+z ao-z sp +WILL w+el w-el sp +WILLAMETTE w+ih w-ih+l ih-l+ax l-ax+m ax-m+eh m-eh+td eh-td sp +WILLAMETTE+S w+ih w-ih+l ih-l+ax l-ax+m ax-m+eh m-eh+ts eh-ts sp +WINAMAC w+ih w-ih+n ih-n+ax n-ax+m ax-m+ae m-ae+k ae-k sp +WINAMAC+S w+ih w-ih+n ih-n+ax n-ax+m ax-m+ae m-ae+k ae-k+s k-s sp +WINDOW w+ih w-ih+n ih-n+d n-d+ow d-ow sp +WINDOWS w+ih w-ih+n ih-n+d n-d+ow d-ow+z ow-z sp +WITH w+ax w-ax+th ax-th sp +WITHIN w+ax w-ax+th ax-th+ih th-ih+n ih-n sp +WITHOUT w+ax w-ax+th ax-th+aw th-aw+td aw-td sp +WON+T w+ow w-ow+n ow-n sp +WORSE w+er w-er+s er-s sp +WORST w+er w-er+s er-s+td s-td sp +WOULD w+uh w-uh+dd uh-dd sp +WOULDN+T w+uh w-uh+d uh-d+ax d-ax+n ax-n sp +YANKEE y+ae y-ae+ng ae-ng+k ng-k+iy k-iy sp +YEAR y+iy y-iy+r iy-r sp +YEARS y+iy y-iy+ax iy-ax+z ax-z sp +YELLOW y+eh y-eh+l eh-l+ow l-ow sp +YESTERDAY y+eh y-eh+s eh-s+t s-t+er t-er+d er-d+ey d-ey sp +YESTERDAY+S y+eh y-eh+s eh-s+t s-t+er t-er+dx er-dx+iy dx-iy+z iy-z sp +YET y+eh y-eh+td eh-td sp +YORKTOWN y+ao y-ao+r ao-r+kd r-kd+t kd-t+aw t-aw+n aw-n sp +YORKTOWN+S y+ao y-ao+r ao-r+kd r-kd+t kd-t+aw t-aw+n aw-n+z n-z sp +ZULU z+uw z-uw+l uw-l+uw l-uw sp diff --git a/samples/RMHTK/lib/dicts/tri.ded b/samples/RMHTK/lib/dicts/tri.ded new file mode 100755 index 0000000..5644d35 --- /dev/null +++ b/samples/RMHTK/lib/dicts/tri.ded @@ -0,0 +1,8 @@ +# command file for editing SRI Resource Management dictionary +# starting from mono.dct make tri.dct + +# and make triphones (but not !SENT_????) +DP sp +TC +AS sp +MP sil sil sp diff --git a/samples/RMHTK/lib/discrete.hmm b/samples/RMHTK/lib/discrete.hmm new file mode 100755 index 0000000..41d38b5 --- /dev/null +++ b/samples/RMHTK/lib/discrete.hmm @@ -0,0 +1,39 @@ + + 5 + 2 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + + 3 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + + 4 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + + 5 + 0.000e+0 1.000e+0 0.000e+0 0.000e+0 0.000e+0 + 0.000e+0 6.000e-1 4.000e-1 0.000e+0 0.000e+0 + 0.000e+0 0.000e+0 6.000e-1 4.000e-1 0.000e+0 + 0.000e+0 0.000e+0 0.000e+0 6.000e-1 4.000e-1 + 0.000e+0 0.000e+0 0.000e+0 0.000e+0 0.000e+0 + diff --git a/samples/RMHTK/lib/discrete.sp b/samples/RMHTK/lib/discrete.sp new file mode 100755 index 0000000..3f493f6 --- /dev/null +++ b/samples/RMHTK/lib/discrete.sp @@ -0,0 +1,17 @@ + + 3 + 2 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + + 3 + 0.000e+0 6.000e-1 4.000e-1 + 0.000e+0 6.000e-1 4.000e-1 + 0.000e+0 0.000e+0 0.000e+0 + diff --git a/samples/RMHTK/lib/eq.ng b/samples/RMHTK/lib/eq.ng new file mode 100755 index 0000000..f24f0a2 --- /dev/null +++ b/samples/RMHTK/lib/eq.ng @@ -0,0 +1,28 @@ +ARKANSAS ARKANSAS+S +SUBS SUB+S +SASSAFRAS SASSAFRAS+S +SUBMARINES SUBMARINE+S +MONTHS MONTH+S +LON LONG +NOT KNOT +JARVIS JARVIS+S +MARS MARS+S +REEVES REEVES+S +SHIPS SHIPS+S +ITS IT+S +FRIGATES FRIGATES+S +FRIGATES FRIGATE+S +CITRUS CITRUS+S +DOWNES DOWNES+S +CRUISERS CRUISERS+S +CRUISERS CRUISER+S +CARRIERS CARRIER+S +FOUR FOR +THERE THEIR +DUE DO +TWO TO +TEXAS TEXAS+S +WEEKS WEEK+S +WHOSE WHO+S +::: !SENT_START +::: !SENT_END diff --git a/samples/RMHTK/lib/eq.wp b/samples/RMHTK/lib/eq.wp new file mode 100755 index 0000000..2acd1ce --- /dev/null +++ b/samples/RMHTK/lib/eq.wp @@ -0,0 +1,2 @@ +::: !SENT_START +::: !SENT_END diff --git a/samples/RMHTK/lib/htefiles/HTE.align b/samples/RMHTK/lib/htefiles/HTE.align new file mode 100755 index 0000000..da27e0e --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.align @@ -0,0 +1,88 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.xwrd # Basic configuration +setenv HEXFORMCONFIG $rmlib/configs/config.cmllr + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=$rmlib/flists/ind_feb89.scp +set TRAINMLF=hmm0/align_wp_feb89.1/wp_feb89.mlf + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=600.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +set HEUPD=a + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# The alignment information +set HVALIGN +if ($?TESTSET) then + set ALIGNMLF=hmm0/wlabs/wp_${TESTSET}.mlf +endif + +# HERest adaptation options +set HESPKRMASK = '*/%%%%%%_*.mfc' +set HEOUTXFORMEXT = cmllr1 +set HEINXFORMEXT = cmllr1 +set HEFORCEXFORMDIR = (hmm0 hmm2/cmllr2) + +# HVite adaptation options +set HVSPKRMASK = '*/%%%%%%_*.mfc' +set HVINXFORMEXT = cmllr2 +set HVFORCEXFORMDIR = (hmm0 hmm2/cmllr2) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.align.trn b/samples/RMHTK/lib/htefiles/HTE.align.trn new file mode 100755 index 0000000..660f8ae --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.align.trn @@ -0,0 +1,63 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 05/09/15 # +# # +# This version is for: # +# # +# HTE.align.trn - logical triphone state train set alignment # +# for std./Tandem GMM-HMM & DNN-HMM systems # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE=5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.logxwrd # Basic configuration +setenv HEXFORMCONFIG $rmlib/configs/config.cmllr + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Test Data +# training set SCP and MLF +set SETLIST=( trn109 ) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_${TESTSET}.mlf +endif + +# Define possible test conditions (to fit htestrm conventions) +set TYPELIST=( ind ) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# The alignment information +set HVALIGN +set HVSTATEALIGN # for state to frame alignment +if ($?TESTSET) then + set ALIGNMLF=$TESTMLF +endif + +# HVite adaptation options +set HVSPKRMASK = '*/%%%%%%_*.mfc' +set HVINXFORMEXT = cmllr2 +set HVFORCEXFORMDIR = (hmm0 hmm2/cmllr2) + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.dnn.am b/samples/RMHTK/lib/htefiles/HTE.dnn.am new file mode 100755 index 0000000..eeb54de --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.dnn.am @@ -0,0 +1,46 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 05/09/15 # +# # +# This version is for: # +# # +# HTE.dnn.am - CE DNN-HMMs training # +# for hybrid systems # +# # +#---------------------------------------------------------------# + +# DNN definition variables +set FEATURETYPE=MFCC_E_D_A_Z +set FEATUREDIM=39 +set CONTEXTSHIFT=-4,-3,-2,-1,0,1,2,3,4 # input feature context shift +set DNNSTRUCTURE=351X500X500X500X500X500X3000 # BN DNN structure (351 = 39 * 9) +set HIDDENACTIVATION=SIGMOID # Sigmoid hidden activation function +set OUTPUTACTIVATION=SOFTMAX # Softmax output activation function +set LOGOBSVPRIOR=-135.0 # log p(o_t) = -135.0 to make log likelihood < 0 for CN +set MINIBATCHSIZE=800 # mini-batch size +set DATACACHESIZE=200000000 # maximum num of cached samples (a virtual num) + # better shuffling when more samples cached + # saves reloading cost when all samples cached + +# DNN layerwise discriminative pretraining variables +set PTLEARNRATEKIND=LIST # use LIST learning rate scheduler for PT +set PTLEARNRATEVALS=0.001 # one epoch for PT, learning rate 0.001 +set PTMOMENTUM=0.5 # momentum set to 0.5 for PT +set PTWEIGHTDECAY=0.001 # weight decay set to 0.001 for PT +set PTGRADIENTCLIP=0.32 # PT gradients cliping threshold 0.32 + +# DNN finetuning variables +set FTLEARNRATEKIND=NEWBOB # use NEWBOB learning rate scheduler for FT +set FTNEWBOBCRITERION=ACC # use (validation) class accuracy for NEWBOB +set FTNEWBOBRAMPSTART=0.001 # NEWBOB ramp start threshold 0.001 * 100% +set FTNEWBOBSTOPDIFF=0.001 # NEWBOB stops when increase < 0.001 * 100% +set FTNEWBOBDECAY=0.5 # NEWBOB reduces learning rate by 0.5, if needed +set FTLEARNRATEVALS=0.002 # intial learning rate for NEWBOB +set FTMINEPOCHNUM=4 # minmum epoch number for NEWBOB FT +set FTMAXEPOCHNUM=4 # maximum epoch number for NEWBOB FT +set FTMOMENTUM=0.5 # momentum set to 0.5 for FT +set FTWEIGHTDECAY=0.001 # weight decay set to 0.001 for FT +set FTGRADIENTCLIP=0.32 # FT gradients cliping threshold 0.32 + +#---------------------------------------------------------------# +# End of Environment definition # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.dnn.bn b/samples/RMHTK/lib/htefiles/HTE.dnn.bn new file mode 100755 index 0000000..a180508 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.dnn.bn @@ -0,0 +1,46 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 05/09/15 # +# # +# This version is for: # +# # +# HTE.dnn.bn - bottleneck DNN(-HMMs) training # +# for Tandem GMM-HMM systems # +# # +#---------------------------------------------------------------# + +# DNN definition variables +set FEATURETYPE=MFCC_E_D_A_Z +set FEATUREDIM=39 +set CONTEXTSHIFT=-4,-3,-2,-1,0,1,2,3,4 # input feature context shift +set DNNSTRUCTURE=351X500X500X500X500X39X3000 # BN DNN structure (351 = 39 * 9), BN dim = 39 +set HIDDENACTIVATION=SIGMOID # Sigmoid hidden activation function +set OUTPUTACTIVATION=SOFTMAX # Softmax output activation function +set LOGOBSVPRIOR=0.0 # log p(o_t) = 0.0 +set MINIBATCHSIZE=800 # mini-batch size +set DATACACHESIZE=200000000 # maximum num of cached samples (a virtual num) + # better shuffling when more samples cached + # saves reloading cost when all samples cached + +# DNN layerwise discriminative pretraining variables +set PTLEARNRATEKIND=LIST # use LIST learning rate scheduler for PT +set PTLEARNRATEVALS=0.001 # one epoch for PT, learning rate 0.001 +set PTMOMENTUM=0.5 # momentum set to 0.5 for PT +set PTWEIGHTDECAY=0.001 # weight decay set to 0.001 for PT +set PTGRADIENTCLIP=0.32 # PT gradients cliping threshold 0.32 + +# DNN finetuning variables +set FTLEARNRATEKIND=NEWBOB # use NEWBOB learning rate scheduler for FT +set FTNEWBOBCRITERION=ACC # use (validation) class accuracy for NEWBOB +set FTNEWBOBRAMPSTART=0.001 # NEWBOB ramp start threshold 0.001 * 100% +set FTNEWBOBSTOPDIFF=0.001 # NEWBOB stops when increase < 0.001 * 100% +set FTNEWBOBDECAY=0.5 # NEWBOB reduces learning rate by 0.5, if needed +set FTLEARNRATEVALS=0.002 # intial learning rate for NEWBOB +set FTMINEPOCHNUM=12 # minmum epoch number for NEWBOB FT +set FTMAXEPOCHNUM=16 # maximum epoch number for NEWBOB FT +set FTMOMENTUM=0.5 # momentum set to 0.5 for FT +set FTWEIGHTDECAY=0.001 # weight decay set to 0.001 for FT +set FTGRADIENTCLIP=0.32 # FT gradients cliping threshold 0.32 + +#---------------------------------------------------------------# +# End of Environment definition # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.dnn.decode b/samples/RMHTK/lib/htefiles/HTE.dnn.decode new file mode 100755 index 0000000..ebe3b30 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.dnn.decode @@ -0,0 +1,56 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 02/10/15 # +# # +# This version is for: # +# # +# state-clustered xwrd triphones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HVCONFIG $rmlib/configs/config.dnn.xwrd # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 200.0) +set HVMAXACTIVE=(10000 10000) +set HVGSCALE=(5.0 5.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.dnn.latgen b/samples/RMHTK/lib/htefiles/HTE.dnn.latgen new file mode 100755 index 0000000..5be320d --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.dnn.latgen @@ -0,0 +1,55 @@ +#!/bin/tcsh +#---------------------------------------------------------------# +# HTK RM Environment File 02/08/05 # +# # +# This version is for: # +# # +# state-clustered xwrd triphones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# Define input configuration files +set HLMCONFIG = ${rmlib}/configs/config.hlm +set HDCONFIG = ${rmlib}/configs/config.dnn.hd +set HDMODCONFIG = ${rmlib}/configs/config.hd.mod +set HLRCONFIG = ${rmlib}/configs/config.hlr + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST = ${rmlib}/flists/ind_trn109.scp +set TRAINMLF = ${rmlib}/wlabs/ind_trn109.mlf + +# Define vovabulary +set HDVOCAB = ${rmlib}/dicts/mono.hd.dct + +# Define HLM options +set HLMORDER = 2 +set HLMNNEWWORD = 1000000 +set HLMBUFSIZE = 4000000 +set HLMUGFLR = 1 +set HLMNGRAMCUTOFF = ( 2 5 ) +set HLMDISCOUNT = 7 +set HLMTRACE = 3 + +# Define HDecode options +set HDGENBEAM = ( 200.0 200.0 ) +set HDGSCALE = 5.0 +set HDIMPROB = 0.0 +set HDTOKENS = 32 +set HDTRACE = 1 + +# Define HLRescore options +set HLRGSCALE = 5.0 +set HLRIMPROB = 0.0 +set HLRTRACE = 3 +set HLRMRGDIR = f +set HLRGENBEAM = ( 300.0 10000.0 ) diff --git a/samples/RMHTK/lib/htefiles/HTE.dnn.mpe b/samples/RMHTK/lib/htefiles/HTE.dnn.mpe new file mode 100755 index 0000000..e106aa4 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.dnn.mpe @@ -0,0 +1,35 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 05/09/15 # +# # +# This version is for: # +# # +# HTE.dnn.mpe - MPE DNN-HMMs training # +# for hybrid systems # +# # +#---------------------------------------------------------------# + +set MINIBATCHSIZE=1500 # mini-batch size, if the length of an utterance + # is bigger than this number, it is skipped +set DATACACHESIZE=200000000 # maximum num of cached samples (a virtual num) + # better shuffling when more samples cached + # saves reloading cost when all samples cached +set SHUFFLEKIND=QUICKNET # data shuffling method +set LEARNRATEKIND=LIST # use LIST learning rate scheduler for MPE +set LEARNRATEVALS=0.002,0.002 # using fixed learning rate for 2 epochs +set NORMLEARNRATE=FALSE # set TRUE to normalise the learning rates + # accirdubg to the utterance lengths + +set PROBSCALE=1.0 # scale the state output & LM probabilities +set LATPROBSCALE=0.20000 # for HDecode.mod phone lattices, + # LATPROBSCALE = 1.0/"-s", "-s" is the grammar + # scaling factor in lattice generation +set INSCORRECTNESS=-1.0 # to penalise the ins errors, -1.0 by default +set MOMENTUM=0.0 # momentum for MPE, to use with NORMLEARNRATE +set NORMMOMENTUM=FALSE # set TRUE to norm momentum by utterance length +set WEIGHTDECAY=0.0 # MPE l2 regulariser, to use with NORMWEIGHTDECAY +set NORMWEIGHTDECAY=FALSE # set TRUE to norm l2 factor by utterance length + + +#---------------------------------------------------------------# +# End of Environment definition # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.hlda b/samples/RMHTK/lib/htefiles/HTE.hlda new file mode 100755 index 0000000..89cb382 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.hlda @@ -0,0 +1,68 @@ +#---------------------------------------------------------------# +# HTK RM Environment File # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.xwrd # Basic configuration +setenv HEXFORMCONFIG $rmlib/configs/config.hlda + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=$rmlib/flists/ind_trn109.scp +set TRAINMLF=$rmlib/labs/xwrd.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +# 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HEPRUNE= (250.0 250.0 1000.1) +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +set HEUPD=stw + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +set HEFORCEXFORMDIR = (hmm0) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.latgen b/samples/RMHTK/lib/htefiles/HTE.latgen new file mode 100755 index 0000000..c005bc0 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.latgen @@ -0,0 +1,55 @@ +#!/bin/tcsh +#---------------------------------------------------------------# +# HTK RM Environment File 02/08/05 # +# # +# This version is for: # +# # +# state-clustered xwrd triphones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# Define input configuration files +set HLMCONFIG = ${rmlib}/configs/config.hlm +set HDCONFIG = ${rmlib}/configs/config.hd +set HDMODCONFIG = ${rmlib}/configs/config.hd.mod +set HLRCONFIG = ${rmlib}/configs/config.hlr + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST = ${rmlib}/flists/ind_trn109.scp +set TRAINMLF = ${rmlib}/wlabs/ind_trn109.mlf + +# Define vovabulary +set HDVOCAB = ${rmlib}/dicts/mono.hd.dct + +# Define HLM options +set HLMORDER = 2 +set HLMNNEWWORD = 1000000 +set HLMBUFSIZE = 4000000 +set HLMUGFLR = 1 +set HLMNGRAMCUTOFF = ( 2 5 ) +set HLMDISCOUNT = 7 +set HLMTRACE = 3 + +# Define HDecode options +set HDGENBEAM = ( 220.0 220.0 ) +set HDGSCALE = 7.0 +set HDIMPROB = 0.0 +set HDTOKENS = 32 +set HDTRACE = 1 + +# Define HLRescore options +set HLRGSCALE = 7.0 +set HLRIMPROB = 0.0 +set HLRTRACE = 3 +set HLRMRGDIR = f +set HLRGENBEAM = ( 300.0 10000.0 ) diff --git a/samples/RMHTK/lib/htefiles/HTE.latgen.3 b/samples/RMHTK/lib/htefiles/HTE.latgen.3 new file mode 100755 index 0000000..ae2ad80 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.latgen.3 @@ -0,0 +1,62 @@ +#!/bin/tcsh +#---------------------------------------------------------------# +# HTK RM Environment File 02/08/05 # +# # +# This version is for: # +# # +# state-clustered xwrd triphones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# Define input configuration files +set HLMCONFIG = ${rmlib}/configs/config.hlm +set HDCONFIG = ${rmlib}/configs/config.hd +set HDMODCONFIG = ${rmlib}/configs/config.hd.mod +set HLRCONFIG = ${rmlib}/configs/config.hlr + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST = ${rmlib}/flists/ind_trn109.scp +set TRAINMLF = ${rmlib}/wlabs/ind_trn109.mlf + +# Define vovabulary +set HDVOCAB = ${rmlib}/dicts/mono.hd.dct + +# Define HLM options +set HLMORDER = 2 +set HLMNNEWWORD = 1000000 +set HLMBUFSIZE = 4000000 +set HLMUGFLR = 1 +set HLMNGRAMCUTOFF = ( 2 5 ) +set HLMDISCOUNT = 7 +set HLMTRACE = 3 + +# # Define HDecode options (larger beam settings, slower but deeper lattices) +# set HDGENBEAM = ( 220.0 220.0 ) +# set HDGSCALE = 7.0 +# set HDIMPROB = 0.0 +# set HDTOKENS = 32 +# set HDTRACE = 1 + +# Define HDecode options (tigher beam settings, faster but smaller lattices) +set HDGENBEAM = ( 210.0 210.0 ) +set HDGSCALE = 7.0 +set HDIMPROB = 0.0 +set HDTOKENS = 12 +set HDTRACE = 1 + +# Define HLRescore options +set HLRGSCALE = 7.0 +set HLRIMPROB = 0.0 +set HLRTRACE = 3 +set HLRMRGDIR = f +set HLRGENBEAM = ( 300.0 10000.0 ) diff --git a/samples/RMHTK/lib/htefiles/HTE.mpe b/samples/RMHTK/lib/htefiles/HTE.mpe new file mode 100755 index 0000000..ba56ac7 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.mpe @@ -0,0 +1,70 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# state-clustered xwrd triphones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.mpe # Basic configuration +setenv HVCONFIG $rmlib/configs/config.xwrd # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=$rmlib/flists/ind_trn109.lat.scp + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HESTATS=stats # stats files aren't always needed but are interesting # + +set NUMLATDIR = lattices/num +set DENLATDIR = lattices/den + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +set HEBIN=HMMIRest + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.sat.model b/samples/RMHTK/lib/htefiles/HTE.sat.model new file mode 100755 index 0000000..1c34fc9 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.sat.model @@ -0,0 +1,83 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.xwrd # Basic configuration +setenv HEXFORMCONFIG $rmlib/configs/config.cmllr + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=$rmlib/flists/ind_trn109.scp +set TRAINMLF=$rmlib/labs/xwrd.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=250.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +set HEUPD=tmvw + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HERest adaptation options +set HESPKRMASK = '*/%%%%%%_*.mfc' +set HEINXFORMEXT = cmllr +set HEPAXFORMDIR = hmm0/cmllr +set HEPAXFORMEXT = cmllr +set HEFORCEXFORMDIR = (hmm0) + +# HVite adaptation options +set HVSPKRMASK = '*/%%%%%%_*.mfc' +set HVINXFORMEXT = cmllr +set HVFORCEXFORMDIR = (hmm0) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.sat.xform b/samples/RMHTK/lib/htefiles/HTE.sat.xform new file mode 100755 index 0000000..4e5b610 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.sat.xform @@ -0,0 +1,81 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.xwrd # Basic configuration +setenv HEXFORMCONFIG $rmlib/configs/config.cmllr + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=$rmlib/flists/ind_trn109.scp +set TRAINMLF=$rmlib/labs/xwrd.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=250.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +set HEUPD=a + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HERest adaptation options +set HESPKRMASK = '*/%%%%%%_*.mfc' +set HEOUTXFORMEXT = cmllr +set HEFORCEXFORMDIR = (hmm0) + +# HVite adaptation options +set HVSPKRMASK = '*/%%%%%%_*.mfc' +set HVINXFORMEXT = cmllr +set HVFORCEXFORMDIR = (hmm0) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.semit b/samples/RMHTK/lib/htefiles/HTE.semit new file mode 100755 index 0000000..3b74d7d --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.semit @@ -0,0 +1,69 @@ +#---------------------------------------------------------------# +# HTK RM Environment File # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.xwrd # Basic configuration +setenv HEXFORMCONFIG $rmlib/configs/config.semit + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=$rmlib/flists/ind_trn109.scp +set TRAINMLF=$rmlib/labs/xwrd.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +# 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HEPRUNE= (250.0 250.0 1000.1) +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +set HEUPD=stw + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +set HEFORCEXFORMDIR = (hmm0 hmm1) +set HVFORCEXFORMDIR = (hmm0 hmm1) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/htefiles/HTE.tandem.semit b/samples/RMHTK/lib/htefiles/HTE.tandem.semit new file mode 100755 index 0000000..9a4e771 --- /dev/null +++ b/samples/RMHTK/lib/htefiles/HTE.tandem.semit @@ -0,0 +1,72 @@ +#---------------------------------------------------------------# +# HTK RM Environment File # +# # +#---------------------------------------------------------------# + +# Comparing to HTE.semit, -t, -v, & -s are doubled since the +# input feature dimension changed from 39d -> 78d + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.tandem.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.tandem.xwrd # Basic configuration +setenv HEXFORMCONFIG $rmlib/configs/config.tandem.semit + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=./ind_trn109.scp +set TRAINMLF=$rmlib/labs/xwrd.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=./ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +# 500==VERY TIGHT, 1000==TIGHT, 2000==LOOSE # +set HEPRUNE= (500.0 500.0 2000.1) +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +set HEUPD=stw + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(400.0 600.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(14.0 14.0) +set HVIMPROB=(0.0 0.0) + +set HEFORCEXFORMDIR = (hmm0 hmm1) +set HVFORCEXFORMDIR = (hmm0 hmm1) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn b/samples/RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn new file mode 100755 index 0000000..7aa97b9 --- /dev/null +++ b/samples/RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn @@ -0,0 +1,2 @@ + 39 + 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 1.000000e+00 diff --git a/samples/RMHTK/lib/labs/mono.hled b/samples/RMHTK/lib/labs/mono.hled new file mode 100755 index 0000000..5d78c46 --- /dev/null +++ b/samples/RMHTK/lib/labs/mono.hled @@ -0,0 +1,2 @@ +EX +IS sil sil diff --git a/samples/RMHTK/lib/labs/tri.hled b/samples/RMHTK/lib/labs/tri.hled new file mode 100755 index 0000000..5d78c46 --- /dev/null +++ b/samples/RMHTK/lib/labs/tri.hled @@ -0,0 +1,2 @@ +EX +IS sil sil diff --git a/samples/RMHTK/lib/labs/xwrd.hled b/samples/RMHTK/lib/labs/xwrd.hled new file mode 100755 index 0000000..b6b3d47 --- /dev/null +++ b/samples/RMHTK/lib/labs/xwrd.hled @@ -0,0 +1,5 @@ +NB sp +TC +IT +RE sil sil +RE sp sp diff --git a/samples/RMHTK/lib/maketandem.hed b/samples/RMHTK/lib/maketandem.hed new file mode 100644 index 0000000..245e61d --- /dev/null +++ b/samples/RMHTK/lib/maketandem.hed @@ -0,0 +1,3 @@ +SW 1 78 +SK USER + diff --git a/samples/RMHTK/lib/null.hled b/samples/RMHTK/lib/null.hled new file mode 100755 index 0000000..0f6876e --- /dev/null +++ b/samples/RMHTK/lib/null.hled @@ -0,0 +1 @@ +# diff --git a/samples/RMHTK/lib/quests.hed b/samples/RMHTK/lib/quests.hed new file mode 100755 index 0000000..046f569 --- /dev/null +++ b/samples/RMHTK/lib/quests.hed @@ -0,0 +1,214 @@ +QS "R_NonBoundary" { *+* } +QS "R_Silence" { *+sil } +QS "R_Stop" { *+p,*+pd,*+b,*+t,*+td,*+d,*+dd,*+k,*+kd,*+g } +QS "R_Nasal" { *+m,*+n,*+en,*+ng } +QS "R_Fricative" { *+s,*+sh,*+z,*+f,*+v,*+ch,*+jh,*+th,*+dh } +QS "R_Liquid" { *+l,*+el,*+r,*+w,*+y,*+hh } +QS "R_Vowel" { *+eh,*+ih,*+ao,*+aa,*+uw,*+ah,*+ax,*+er,*+ay,*+oy,*+ey,*+iy,*+ow } +QS "R_C-Front" { *+p,*+pd,*+b,*+m,*+f,*+v,*+w } +QS "R_C-Central" { *+t,*+td,*+d,*+dd,*+en,*+n,*+s,*+z,*+sh,*+th,*+dh,*+l,*+el,*+r } +QS "R_C-Back" { *+sh,*+ch,*+jh,*+y,*+k,*+kd,*+g,*+ng,*+hh } +QS "R_V-Front" { *+iy,*+ih,*+eh } +QS "R_V-Central" { *+eh,*+aa,*+er,*+ao } +QS "R_V-Back" { *+uw,*+aa,*+ax,*+uh } +QS "R_Front" { *+p,*+pd,*+b,*+m,*+f,*+v,*+w,*+iy,*+ih,*+eh } +QS "R_Central" { *+t,*+td,*+d,*+dd,*+en,*+n,*+s,*+z,*+sh,*+th,*+dh,*+l,*+el,*+r,*+eh,*+aa,*+er,*+ao } +QS "R_Back" { *+sh,*+ch,*+jh,*+y,*+k,*+kd,*+g,*+ng,*+hh,*+aa,*+uw,*+ax,*+uh } +QS "R_Fortis" { *+p,*+pd,*+t,*+td,*+k,*+kd,*+f,*+th,*+s,*+sh,*+ch } +QS "R_Lenis" { *+b,*+d,*+dd,*+g,*+v,*+dh,*+z,*+sh,*+jh } +QS "R_UnFortLenis" { *+m,*+n,*+en,*+ng,*+hh,*+l,*+el,*+r,*+y,*+w } +QS "R_Coronal" { *+t,*+td,*+d,*+dd,*+n,*+en,*+th,*+dh,*+s,*+z,*+sh,*+ch,*+jh,*+l,*+el,*+r } +QS "R_NonCoronal" { *+p,*+pd,*+b,*+m,*+k,*+kd,*+g,*+ng,*+f,*+v,*+hh,*+y,*+w } +QS "R_Anterior" { *+p,*+pd,*+b,*+m,*+t,*+td,*+d,*+dd,*+n,*+en,*+f,*+v,*+th,*+dh,*+s,*+z,*+l,*+el,*+w } +QS "R_NonAnterior" { *+k,*+kd,*+g,*+ng,*+sh,*+hh,*+ch,*+jh,*+r,*+y } +QS "R_Continuent" { *+m,*+n,*+en,*+ng,*+f,*+v,*+th,*+dh,*+s,*+z,*+sh,*+hh,*+l,*+el,*+r,*+y,*+w } +QS "R_NonContinuent" { *+p,*+pd,*+b,*+t,*+td,*+d,*+dd,*+k,*+kd,*+g,*+ch,*+jh } +QS "R_Strident" { *+s,*+z,*+sh,*+ch,*+jh } +QS "R_NonStrident" { *+f,*+v,*+th,*+dh,*+hh } +QS "R_UnStrident" { *+p,*+pd,*+b,*+m,*+t,*+td,*+d,*+dd,*+n,*+en,*+k,*+kd,*+g,*+ng,*+l,*+el,*+r,*+y,*+w } +QS "R_Glide" { *+hh,*+l,*+el,*+r,*+y,*+w } +QS "R_Syllabic" { *+en,*+m,*+l,*+el,*+er } +QS "R_Unvoiced-Cons" { *+p,*+pd,*+t,*+td,*+k,*+kd,*+s,*+sh,*+f,*+th,*+hh,*+ch } +QS "R_Voiced-Cons" { *+jh,*+b,*+d,*+dd,*+dh,*+g,*+y,*+l,*+el,*+m,*+n,*+en,*+ng,*+r,*+v,*+w,*+z } +QS "R_Unvoiced-All" { *+p,*+pd,*+t,*+td,*+k,*+kd,*+s,*+sh,*+f,*+th,*+hh,*+ch,*+sil } +QS "R_Long" { *+iy,*+aa,*+ow,*+ao,*+uw,*+en,*+m,*+l,*+el } +QS "R_Short" { *+eh,*+ey,*+aa,*+ih,*+ay,*+oy,*+ah,*+ax,*+uh } +QS "R_Dipthong" { *+ey,*+ay,*+oy,*+aa,*+er,*+en,*+m,*+l,*+el } +QS "R_Front-Start" { *+ey,*+aa,*+er } +QS "R_Fronting" { *+ay,*+ey,*+oy } +QS "R_High" { *+ih,*+uw,*+aa,*+ax,*+iy } +QS "R_Medium" { *+ey,*+er,*+aa,*+ax,*+eh,*+en,*+m,*+l,*+el } +QS "R_Low" { *+eh,*+ay,*+aa,*+aw,*+ao,*+oy } +QS "R_Rounded" { *+ao,*+uw,*+aa,*+ax,*+oy,*+w } +QS "R_Unrounded" { *+eh,*+ih,*+aa,*+er,*+ay,*+ey,*+iy,*+aw,*+ah,*+ax,*+en,*+m,*+hh,*+l,*+el,*+r,*+y } +QS "R_NonAffricate" { *+s,*+sh,*+z,*+f,*+v,*+th,*+dh } +QS "R_Affricate" { *+ch,*+jh } +QS "R_IVowel" { *+ih,*+iy } +QS "R_EVowel" { *+eh,*+ey } +QS "R_AVowel" { *+eh,*+aa,*+er,*+ay,*+aw } +QS "R_OVowel" { *+ao,*+oy,*+aa } +QS "R_UVowel" { *+aa,*+ax,*+en,*+m,*+l,*+el,*+uw } +QS "R_Voiced-Stop" { *+b,*+d,*+dd,*+g } +QS "R_Unvoiced-Stop" { *+p,*+pd,*+t,*+td,*+k,*+kd } +QS "R_Front-Stop" { *+p,*+pd,*+b } +QS "R_Central-Stop" { *+t,*+td,*+d,*+dd } +QS "R_Back-Stop" { *+k,*+kd,*+g } +QS "R_Voiced-Fric" { *+z,*+sh,*+dh,*+ch,*+v } +QS "R_Unvoiced-Fric" { *+s,*+sh,*+th,*+f,*+ch } +QS "R_Front-Fric" { *+f,*+v } +QS "R_Central-Fric" { *+s,*+z,*+th,*+dh } +QS "R_Back-Fric" { *+sh,*+ch,*+jh } +QS "R_aa" { *+aa } +QS "R_ae" { *+ae } +QS "R_ah" { *+ah } +QS "R_ao" { *+ao } +QS "R_aw" { *+aw } +QS "R_ax" { *+ax } +QS "R_ay" { *+ay } +QS "R_b" { *+b } +QS "R_ch" { *+ch } +QS "R_d" { *+d } +QS "R_dd" { *+dd } +QS "R_dh" { *+dh } +QS "R_dx" { *+dx } +QS "R_eh" { *+eh } +QS "R_el" { *+el } +QS "R_en" { *+en } +QS "R_er" { *+er } +QS "R_ey" { *+ey } +QS "R_f" { *+f } +QS "R_g" { *+g } +QS "R_hh" { *+hh } +QS "R_ih" { *+ih } +QS "R_iy" { *+iy } +QS "R_jh" { *+jh } +QS "R_k" { *+k } +QS "R_kd" { *+kd } +QS "R_l" { *+l } +QS "R_m" { *+m } +QS "R_n" { *+n } +QS "R_ng" { *+ng } +QS "R_ow" { *+ow } +QS "R_oy" { *+oy } +QS "R_p" { *+p } +QS "R_pd" { *+pd } +QS "R_r" { *+r } +QS "R_s" { *+s } +QS "R_sh" { *+sh } +QS "R_t" { *+t } +QS "R_td" { *+td } +QS "R_th" { *+th } +QS "R_ts" { *+ts } +QS "R_uh" { *+uh } +QS "R_uw" { *+uw } +QS "R_v" { *+v } +QS "R_w" { *+w } +QS "R_y" { *+y } +QS "R_z" { *+z } +QS "L_NonBoundary" { *-* } +QS "L_Silence" { sil-* } +QS "L_Stop" { p-*,pd-*,b-*,t-*,td-*,d-*,dd-*,k-*,kd-*,g-* } +QS "L_Nasal" { m-*,n-*,en-*,ng-* } +QS "L_Fricative" { s-*,sh-*,z-*,f-*,v-*,ch-*,jh-*,th-*,dh-* } +QS "L_Liquid" { l-*,el-*,r-*,w-*,y-*,hh-* } +QS "L_Vowel" { eh-*,ih-*,ao-*,aa-*,uw-*,ah-*,ax-*,er-*,ay-*,oy-*,ey-*,iy-*,ow-* } +QS "L_C-Front" { p-*,pd-*,b-*,m-*,f-*,v-*,w-* } +QS "L_C-Central" { t-*,td-*,d-*,dd-*,en-*,n-*,s-*,z-*,sh-*,th-*,dh-*,l-*,el-*,r-* } +QS "L_C-Back" { sh-*,ch-*,jh-*,y-*,k-*,kd-*,g-*,ng-*,hh-* } +QS "L_V-Front" { iy-*,ih-*,eh-* } +QS "L_V-Central" { eh-*,aa-*,er-*,ao-* } +QS "L_V-Back" { uw-*,aa-*,ax-*,uh-* } +QS "L_Front" { p-*,pd-*,b-*,m-*,f-*,v-*,w-*,iy-*,ih-*,eh-* } +QS "L_Central" { t-*,td-*,d-*,dd-*,en-*,n-*,s-*,z-*,sh-*,th-*,dh-*,l-*,el-*,r-*,eh-*,aa-*,er-*,ao-* } +QS "L_Back" { sh-*,ch-*,jh-*,y-*,k-*,kd-*,g-*,ng-*,hh-*,aa-*,uw-*,ax-*,uh-* } +QS "L_Fortis" { p-*,pd-*,t-*,td-*,k-*,kd-*,f-*,th-*,s-*,sh-*,ch-* } +QS "L_Lenis" { b-*,d-*,dd-*,g-*,v-*,dh-*,z-*,sh-*,jh-* } +QS "L_UnFortLenis" { m-*,n-*,en-*,ng-*,hh-*,l-*,el-*,r-*,y-*,w-* } +QS "L_Coronal" { t-*,td-*,d-*,dd-*,n-*,en-*,th-*,dh-*,s-*,z-*,sh-*,ch-*,jh-*,l-*,el-*,r-* } +QS "L_NonCoronal" { p-*,pd-*,b-*,m-*,k-*,kd-*,g-*,ng-*,f-*,v-*,hh-*,y-*,w-* } +QS "L_Anterior" { p-*,pd-*,b-*,m-*,t-*,td-*,d-*,dd-*,n-*,en-*,f-*,v-*,th-*,dh-*,s-*,z-*,l-*,el-*,w-* } +QS "L_NonAnterior" { k-*,kd-*,g-*,ng-*,sh-*,hh-*,ch-*,jh-*,r-*,y-* } +QS "L_Continuent" { m-*,n-*,en-*,ng-*,f-*,v-*,th-*,dh-*,s-*,z-*,sh-*,hh-*,l-*,el-*,r-*,y-*,w-* } +QS "L_NonContinuent" { p-*,pd-*,b-*,t-*,td-*,d-*,dd-*,k-*,kd-*,g-*,ch-*,jh-* } +QS "L_Strident" { s-*,z-*,sh-*,ch-*,jh-* } +QS "L_NonStrident" { f-*,v-*,th-*,dh-*,hh-* } +QS "L_UnStrident" { p-*,pd-*,b-*,m-*,t-*,td-*,d-*,dd-*,n-*,en-*,k-*,kd-*,g-*,ng-*,l-*,el-*,r-*,y-*,w-* } +QS "L_Glide" { hh-*,l-*,el-*,r-*,y-*,w-* } +QS "L_Syllabic" { en-*,m-*,l-*,el-*,er-* } +QS "L_Unvoiced-Cons" { p-*,pd-*,t-*,td-*,k-*,kd-*,s-*,sh-*,f-*,th-*,hh-*,ch-* } +QS "L_Voiced-Cons" { jh-*,b-*,d-*,dd-*,dh-*,g-*,y-*,l-*,el-*,m-*,n-*,en-*,ng-*,r-*,v-*,w-*,z-* } +QS "L_Unvoiced-All" { p-*,pd-*,t-*,td-*,k-*,kd-*,s-*,sh-*,f-*,th-*,hh-*,ch-*,sil-* } +QS "L_Long" { iy-*,aa-*,ow-*,ao-*,uw-*,en-*,m-*,l-*,el-* } +QS "L_Short" { eh-*,ey-*,aa-*,ih-*,ay-*,oy-*,ah-*,ax-*,uh-* } +QS "L_Dipthong" { ey-*,ay-*,oy-*,aa-*,er-*,en-*,m-*,l-*,el-* } +QS "L_Front-Start" { ey-*,aa-*,er-* } +QS "L_Fronting" { ay-*,ey-*,oy-* } +QS "L_High" { ih-*,uw-*,aa-*,ax-*,iy-* } +QS "L_Medium" { ey-*,er-*,aa-*,ax-*,eh-*,en-*,m-*,l-*,el-* } +QS "L_Low" { eh-*,ay-*,aa-*,aw-*,ao-*,oy-* } +QS "L_Rounded" { ao-*,uw-*,aa-*,ax-*,oy-*,w-* } +QS "L_Unrounded" { eh-*,ih-*,aa-*,er-*,ay-*,ey-*,iy-*,aw-*,ah-*,ax-*,en-*,m-*,hh-*,l-*,el-*,r-*,y-* } +QS "L_NonAffricate" { s-*,sh-*,z-*,f-*,v-*,th-*,dh-* } +QS "L_Affricate" { ch-*,jh-* } +QS "L_IVowel" { ih-*,iy-* } +QS "L_EVowel" { eh-*,ey-* } +QS "L_AVowel" { eh-*,aa-*,er-*,ay-*,aw-* } +QS "L_OVowel" { ao-*,oy-*,aa-* } +QS "L_UVowel" { aa-*,ax-*,en-*,m-*,l-*,el-*,uw-* } +QS "L_Voiced-Stop" { b-*,d-*,dd-*,g-* } +QS "L_Unvoiced-Stop" { p-*,pd-*,t-*,td-*,k-*,kd-* } +QS "L_Front-Stop" { p-*,pd-*,b-* } +QS "L_Central-Stop" { t-*,td-*,d-*,dd-* } +QS "L_Back-Stop" { k-*,kd-*,g-* } +QS "L_Voiced-Fric" { z-*,sh-*,dh-*,ch-*,v-* } +QS "L_Unvoiced-Fric" { s-*,sh-*,th-*,f-*,ch-* } +QS "L_Front-Fric" { f-*,v-* } +QS "L_Central-Fric" { s-*,z-*,th-*,dh-* } +QS "L_Back-Fric" { sh-*,ch-*,jh-* } +QS "L_aa" { aa-* } +QS "L_ae" { ae-* } +QS "L_ah" { ah-* } +QS "L_ao" { ao-* } +QS "L_aw" { aw-* } +QS "L_ax" { ax-* } +QS "L_ay" { ay-* } +QS "L_b" { b-* } +QS "L_ch" { ch-* } +QS "L_d" { d-* } +QS "L_dd" { dd-* } +QS "L_dh" { dh-* } +QS "L_dx" { dx-* } +QS "L_eh" { eh-* } +QS "L_el" { el-* } +QS "L_en" { en-* } +QS "L_er" { er-* } +QS "L_ey" { ey-* } +QS "L_f" { f-* } +QS "L_g" { g-* } +QS "L_hh" { hh-* } +QS "L_ih" { ih-* } +QS "L_iy" { iy-* } +QS "L_jh" { jh-* } +QS "L_k" { k-* } +QS "L_kd" { kd-* } +QS "L_l" { l-* } +QS "L_m" { m-* } +QS "L_n" { n-* } +QS "L_ng" { ng-* } +QS "L_ow" { ow-* } +QS "L_oy" { oy-* } +QS "L_p" { p-* } +QS "L_pd" { pd-* } +QS "L_r" { r-* } +QS "L_s" { s-* } +QS "L_sh" { sh-* } +QS "L_t" { t-* } +QS "L_td" { td-* } +QS "L_th" { th-* } +QS "L_ts" { ts-* } +QS "L_uh" { uh-* } +QS "L_uw" { uw-* } +QS "L_v" { v-* } +QS "L_w" { w-* } +QS "L_y" { y-* } +QS "L_z" { z-* } diff --git a/samples/RMHTK/lib/regtree_c2.hed b/samples/RMHTK/lib/regtree_c2.hed new file mode 100755 index 0000000..ee92c27 --- /dev/null +++ b/samples/RMHTK/lib/regtree_c2.hed @@ -0,0 +1,2 @@ +LS "./stats" +RC 2 "regtree_2" {(sil,sp).state[1-10].mix} diff --git a/samples/RMHTK/lib/replacesil.hed b/samples/RMHTK/lib/replacesil.hed new file mode 100644 index 0000000..e1be802 --- /dev/null +++ b/samples/RMHTK/lib/replacesil.hed @@ -0,0 +1,2 @@ +TI "sil_s" {("sil","sp").state[2-4]} + diff --git a/samples/RMHTK/lib/sents.snr b/samples/RMHTK/lib/sents.snr new file mode 100755 index 0000000..2dc06c0 --- /dev/null +++ b/samples/RMHTK/lib/sents.snr @@ -0,0 +1,2862 @@ +; al_sents.snr - updated 09/20/89 +; +; All 2847 Resource Management Database Sentences (SNOR form) +; +; 2 sentences used as dialect calibration material (not in Resource Management +; language model): +SHE HAD YOUR DARK SUIT IN GREASY WASH WATER ALL YEAR (SA1) +DON+T ASK ME TO CARRY AN OILY RAG LIKE THAT (SA2) +; +; 10 sentences used as rapid adaptation material: +SHOW LOCATIONS AND C-RATINGS FOR ALL DEPLOYED SUBS THAT WERE IN THEIR HOME PORTS APRIL FIVE (SB01) +LIST THE CRUISERS IN PERSIAN SEA THAT HAVE CASUALTY REPORTS EARLIER THAN JARRETT+S OLDEST ONE (SB02) +DISPLAY POSITS FOR THE HOOKED TRACK WITH CHART SWITCHES SET TO THEIR DEFAULT VALUES (SB03) +WHAT IS ENGLAND+S ESTIMATED TIME OF ARRIVAL AT TOWNSVILLE (SB04) +HOW MANY SHIPS WERE IN GALVESTON MAY THIRD (SB05) +DRAW A CHART CENTERED AROUND FOX USING STEREOGRAPHIC PROJECTION (SB06) +HOW MANY LONG TONS IS THE AVERAGE DISPLACEMENT OF SHIPS IN BERING STRAIT (SB07) +WHAT VESSEL WASN+T DOWNGRADED ON TRAINING READINESS DURING JULY (SB08) +SHOW THE SAME DISPLAY INCREASING LETTER SIZE TO THE MAXIMUM VALUE (SB09) +IS PUFFER+S REMAINING FUEL SUFFICIENT TO ARRIVE IN PORT AT THE PRESENT SPEED (SB10) +; +; 600 sentences used as speaker-dependent training material and part +; of speaker-independent training material: +WHAT IS THE CONSTELLATION+S GROSS DISPLACEMENT IN LONG TONS (SR001) +IS RANGER+S EARLIEST CASREP RATED WORSE THAN HERS (SR002) +SHOW ME ALL ALERTS (SR003) +GIVE BAINBRIDGE+S CASREPS FROM THE LAST SEVEN MONTHS (SR004) +SHOW THE ENTERPRISE+S HOME PORT (SR005) +DRAW TEXAS+S LAST THREE HFDF SENSOR POSITS (SR006) +IS ENGLAND+S REMAINING FUEL INSUFFICIENT TO ARRIVE IN PORT AT CURRENT SPEED (SR007) +LIST FOX+S AVERAGE DISPLACEMENT AND CAPABILITIES (SR008) +SHOW THE GRIDLEY+S TRACK IN BRIGHT ORANGE WITH HORNE+S IN DIM RED (SR009) +IS REEVES+S FUEL CAPACITY GREATER THAN STERETT+S (SR010) +WHAT IF FLASHER+S MAXIMUM SPEED WERE DECREASED BY FIVE KNOTS (SR011) +WHAT+S THE GUARDFISH+S ETA AT OLYMPIA (SR012) +WHAT IS GUITARRO+S FLEET ID (SR013) +DISPLAY HAWKBILL+S TRACK WITH OVERLAY BUD-TEST (SR014) +GET PLUNGER+S CROVL (SR015) +DRAW THE POLLACK+S POSIT ON TWO MAY AND HIS VARIOUS CAPABILITIES (SR016) +IS PUFFER+S POSITION NEARER TO OSGP THAN QUEENFISH+S LOCATION IS (SR017) +WHERE IS SEAWOLF+S HOME PORT (SR018) +IS SWORDFISH+S LAST LATITUDE AND LONGITUDE WITHIN A KILOMETER OF PAC ALERT (SR019) +SUMMARIZE THE BADGER+S RATINGS (SR020) +WHAT IS BROOKE+S FUEL LEVEL AND FUEL CAPACITY (SR021) +SHOW ME COPELAND+S VISUAL LAT-LONS USING SAN-FRAN (SR022) +WHAT+S DAVIDSON+S LAT AND LONG (SR023) +DISPLAY DOWNES+S TRACK IN BRIGHT YELLOW WITH HIGH RESOLUTION (SR024) +FIND THE FANNING+S PERCENT FUEL ABOARD AND HER PRESENT LATITUDE (SR025) +DRAW HEPBURN+S LONGITUDE WITH OVERLAYS PUGET-1 AND GRILL (SR026) +IS JARRETT+S DESTINATION THE SAME AS LOCKWOOD+S (SR027) +LIST MCCLUSKY+S AND RAMSEY+S CURRENT SPEED (SR028) +IS RATHBURNE+S LATEST POSITION FARTHER FROM REASONER+S THAN FROM SAMPLE+S (SR029) +IS VANDERGRIFT+S MAX DRAFT LARGER THAN WADSWORTH+S (SR030) +WHAT IF THE WHIPPLE+S PROPULSION TYPE WAS NUCLEAR INSTEAD OF STEAM TURBINE (SR031) +GET A LIST OF AJAX+S CAT-2 CASUALTY REPORTS FOR THE LAST EIGHT WEEKS (SR032) +IS APALACHICOLA+S RADAR SENSOR LOCATION DATA NEWER THAN SONAR DATA (SR033) +SHOW BRUNSWICK+S PROBLEMS FROM LAST WEEK (SR034) +IS THE CAMDEN+S BEAM AND LENGTH LESS THAN CAMPBELL+S (SR035) +GIVE CHATTAHOOCHEE+S PROPULSION TYPE AND FUEL CAPACITY (SR036) +WHAT IS CITRUS+S CURRENT READINESS (SR037) +IS CLEVELAND+S DISTANCE FROM THE CONSTELLATION MORE THAN NINETEEN KILOMETERS (SR038) +DISPLAY CONIFER+S PRESENT PERSONNEL READINESS (SR039) +LIST CONFIDENCE+S THREATS (SR040) +GET ME KENNEDY+S EQUIPMENT READINESS (SR041) +IS INDEPENDENCE+S BEAM SMALLER THAN THE EISENHOWER+S (SR042) +SHOW YANKEE (SR043) +DISPLAY MISSISSIPPI+S DISPLACEMENT IN METRIC TONS (SR044) +WHAT IS VIRGINIA+S DESTINATION (SR045) +SHOW BIDDLE+S LATITUDE AND LONGITUDE ON FEBRUARY FOUR NINETEEN EIGHTY FIVE (SR046) +IS CONQUEST+S LAST LAT-LON CLOSER THAN THE CONSTANT+S TO BUMP ALERT (SR047) +DISPLAY DENVER+S LATEST POSITION IN DIM GREEN WITH AREA OFF (SR048) +IS DIXON+S LENGTH GREATER THAN THAT OF RANGER (SR049) +WHAT+S THE DUBUQUE+S ASW MISSION STATUS (SR050) +FIND ESTEEM+S VARIOUS RESOURCE RATINGS (SR051) +DRAW FIREBUSH+S LAST NINE POSITIONS AND THEIR SENSORS (SR052) +IS FLINT+S CURRENT SPEED SLOWER THAN FREDERICK+S (SR053) +SHOW THE FRESNO+S TRACK WITHOUT OVERLAY (SR054) +SHOW ME GLACIER+S LATEST CASUALTY REPORT DATE AND FULL LOCATION DATA (SR055) +WHAT IS HECTOR+S PRESENT LATITUDE AND LONGITUDE AND ESTIMATED TIME OF ARRIVAL AT BANGKOK (SR056) +IS IRONWOOD+S AVERAGE SPEED LESS THAN TWENTY KNOTS (SR057) +SHOW THE JARVIS+S CASUALTY REPORTS FOR THE LAST SIX MONTHS (SR058) +IS JASON+S TRAINING RATING GREATER THAN JUPITER+S (SR059) +IS KIRK+S ARRIVAL HOUR EARLIER THAN KISKA+S (SR060) +WHAT IS THE MANHATTAN+S DISTANCE FROM ARKANSAS (SR061) +IS MARS+S LAST LAT IN NORTH ATLANTIC OCEAN (SR062) +IS MERCURY+S GROSS DISPLACEMENT LESS THAN THAT OF THE BAINBRIDGE (SR063) +DISPLAY METEOR+S LON USING OVERLAY BOX (SR064) +DISPLAY MIDGETT+S AAW READINESS (SR065) +IS MISHAWAKA+S REMAINING FUEL GREATER THAN MONTICELLO+S (SR066) +WHAT WAS THE NASHUA+S POSITION AND ASUW AREA MISSION CODE ON THE TWENTY FIRST OF AUGUST (SR067) +IS PEORIA+S TEST DEPTH LESS THAN PIGEON+S (SR068) +IS PLUCK+S MOB AREA M-RATING BELOW THE YORKTOWN+S (SR069) +WHICH OF POUGHKEEPSIE+S MISSION AREAS ARE M1 OR HIGHER (SR070) +IS PRAIRIE+S ECONOMIC SPEED GREATER THAN RECLAIMER+S (SR071) +DRAW DALE+S LAST FOUR LOCATIONS IN THE DATA WINDOW (SR072) +GIVE TICONDEROGA+S AND SACRAMENTO+S ARRIVAL TIMES (SR073) +IS SASSAFRAS+S MAXIMUM DRAFT LARGER THAN SCHENECTADY+S (SR074) +LIST THE SHASTA+S OVERALL C-RATING AND LOCATION (SR075) +IS SHERMAN+S PROPULSION TYPE THE SAME AS TRIPOLI+S (SR076) +GET THE SUPPLIES READINESS FOR ENTERPRISE (SR077) +FIND THE OVERALL RESOURCE RATING FOR TEXAS (SR078) +IS THE TUSCALOOSA+S POSITION EAST OF VANCOUVER+S (SR079) +SHOW ME PERSONNEL C-CODE AND LAST POSITION DATE FOR ANY SHIP IN MANILA AFTER DECEMBER THIRD (SR080) +GIVE THE EQUIPMENT READINESS OF ENGLAND ON THE THIRTIETH OF MARCH (SR081) +IS THE WABASH+S LAST LOCATION CLOSER THAN WASP+S TO ICE-NINE (SR082) +SHOW THE TRAINING READINESS OF FOX (SR083) +WHAT ARE WICHITA+S SEVEN WORST PROBLEMS (SR084) +LIST ALL SHIPS IN SIDNEY ON THREE JULY (SR085) +FIND THE PREVIOUS SUPPLIES READINESS OF THE GRIDLEY (SR086) +WHAT+RE WILLAMETTE+S CAPABILITIES (SR087) +WHAT WAS WINAMAC+S LAST REPORTED LATITUDE AND LONGITUDE (SR088) +SHOW FRIGATES THAT ARE C1 ON TRAINING (SR089) +DON+T END TIME WINDOW UNTIL SIX HUNDRED HOURS ZULU (SR090) +GIVE ME THE PERSONNEL RESOURCE RATING ON THE HORNE (SR091) +LIST RESOURCE AREA RATINGS FOR REEVES (SR092) +WHAT+S STERETT AND MIDWAY+S MAXIMUM SUSTAINED SPEED (SR093) +GET THE SPEEDS AVAILABLE FOR FLASHER AND GUARDFISH (SR094) +WHO HAS THE LEAST FUEL LEFT (SR095) +FIND MISSION AREA RATINGS FOR GUITARRO (SR096) +SHOW ON THE DATA SCREEN CONSTELLATION+S TRACK SINCE FIVE OCTOBER (SR097) +SHOW ONLY THE VISUAL SENSOR LATITUDES AND LONGITUDES AVAILABLE ON HAWKBILL (SR098) +WHAT IF PLUNGER REPLACED THE POLLACK IN CHINA SEA (SR099) +WHEN IS PUFFER ARRIVING IN PORT (SR100) +WHAT WAS RANGER+S READINESS JUNE FOURTEENTH (SR101) +GIVE ME SPS-48 CAPABLE CRUISERS AT SEA TODAY (SR102) +LIST THE CARRIERS THAT WERE DEPLOYED ON THE EIGHTH OF SEPTEMBER (SR103) +WHAT IF QUEENFISH INCREASED ITS AVERAGE CRUISING SPEED BY ONE KNOT (SR104) +GET ALL C-CODES FOR SEAWOLF (SR105) +FIND SPEEDS FOR THE SHIPS THAT ARE IN SIBERIAN SEA (SR106) +WHEN+S SWORDFISH DUE IN PORT (SR107) +START EDITING POSITION DATA FOR ARKANSAS+S TRACK (SR108) +WHO HAD THE HIGHEST AVERAGE C-RATING DURING THE LAST YEAR (SR109) +WHEN IS BADGER CHANGING FLEETS (SR110) +SHOW AREAS (SR111) +NEVER MIND THE NEXT CHART DISPLAY (SR112) +GIVE SPEEDS OF THE C2 SUBMARINES (SR113) +REVIEW CHESHIRE AREA ALERTS (SR114) +WHAT IS BAINBRIDGE+S PROPULSION (SR115) +LIST PACFLT SHIPS THAT ARE C3 ON EQUIPMENT (SR116) +GET ME LATS AND LONS AND SPEEDS FOR THE SUBS IN GULF OF TONKIN (SR117) +FIND LATITUDES AND NAMES OF VESSELS THAT ARE IN SEA OF JAPAN (SR118) +GIVE ME A LIST OF LONGITUDES OF TRACKS THAT ARE IN THE FORMOSA STRAIT (SR119) +GET A LIST OF POSITIONS FOR SHIPS IN GULF OF CALIFORNIA THAT WENT TO C4 NINE JANUARY (SR120) +SHOW ALL LOCATIONS OF TRACKS FOR USN FRIGATES (SR121) +GIVE LATITUDES AND LONGITUDES AND NAMES OF ANY OF EASTPAC+S CRUISERS THAT WERE IN THE PHILIPPINE SEA ON NOVEMBER TWENTIETH (SR122) +LIST THE CARRIER+S POSITIONS FOR APRIL (SR123) +WHAT IS THE FRIGATE+S HOME PORT (SR124) +GET ME ENTERPRISE+S LOCATIONS FOR LAST MONTH (SR125) +FIND LATITUDES AND LONGITUDES OF CARRIERS THAT ARE IN THE KOREAN BAY (SR126) +ARE ANY SHIPS+S TRAINING RATINGS LOWER THAN TEXAS+S (SR127) +IS BROOKE WITHIN TWENTY THREE MILES OF SEVENTY FIVE DEGREES SIXTEEN MINUTES SOUTH AND NINETY DEGREES FORTY TWO MINUTES WEST (SR128) +DIDN+T PUFFER ARRIVE AT DARWIN YESTERDAY (SR129) +IS COPELAND THE SLOWEST FRIGATE IN PACIFIC FLEET (SR130) +WHY DID DAVIDSON CHANGE SUPPLIES READINESS EIGHT MAY (SR131) +IS THE DOWNES IN GULF OF THAILAND (SR132) +ISN+T FANNING IN THE YELLOW SEA (SR133) +IS HEPBURN GOING TO BE IN ALEXANDRIA MONDAY (SR134) +WHEN IS JARRETT EXPECTED TO UPGRADE (SR135) +IS LOCKWOOD CLOSER TO LENINGRAD THAN MCCLUSKY (SR136) +IS RAMSEY WITHIN A MILE OF WELLINGTON (SR137) +WHERE ARE THE RATHBURNE AND REASONER ENROUTE TO (SR138) +IS THERE A CRUISER IN CORAL SEA WITH HARPOON (SR139) +IS THE SAMPLE EQUIPPED WITH TACAN (SR140) +WHEN+S VANDERGRIFT SUPPOSED TO BE IN PORT (SR141) +IS THE WADSWORTH GAS OR DIESEL (SR142) +WHEN WILL WHIPPLE CHOP FROM PACFLT TO LANTFLT (SR143) +IS AJAX LOCATED IN ABERDEEN OR MANCHESTER (SR144) +WHAT IF SHE HAD ENGLAND+S CAPABILITIES (SR145) +IS THE BRUNSWICK AT ONE QUARTER OF FUEL CAPACITY OR LESS (SR146) +WHERE+S CAMDEN DEPLOYED (SR147) +DOES CAMPBELL HAVE ANY M2 RATINGS (SR148) +IS CHATTAHOOCHEE POWERED BY CODAG (SR149) +WHAT IF CITRUS HAD THE FOX+S CASUALTY REPORTS (SR150) +IS CLEVELAND NEARER TO CONIFER THAN CONFIDENCE (SR151) +IS KENNEDY AT MORE THAN ONE HALF HER FUEL CAPACITY (SR152) +WHY IS THE INDEPENDENCE REPORTING C5 (SR153) +IS EISENHOWER MORE THAN FOUR KILOMETERS FROM MISSISSIPPI (SR154) +WAS VIRGINIA IN HOME PORT ON NINE FEBRUARY (SR155) +IS BIDDLE NUCLEAR POWERED (SR156) +IS THE CONQUEST MORE THAN A KILOMETER FROM CONSTANT (SR157) +GIVE TOMORROW+S ESTIMATED TIME OF ARRIVAL FOR DENVER (SR158) +EDIT THE BISMARK SEA AREA THREAT (SR159) +LIST THE ROSS SEA ALERT (SR160) +GET THE SOLOMON SEA SHIPS THAT ARE C1 (SR161) +HOW MANY IN ARCTIC OCEAN HAVE MORE THAN THREE QUARTERS THEIR FUEL LEFT (SR162) +WHAT SUBMARINES THAT ARE IN THE NORTH BERING SEA HAVE FUEL CAPACITY LESS THAN A THOUSAND GALLONS (SR163) +SHOW THE PAC AREA ALERTS (SR164) +HAS GRIDLEY+S MIW MISSION AREA GONE TO M3 BEFORE FEBRUARY THIRTEENTH (SR165) +SHOW THE ASW RATING FOR THE DIXON (SR166) +GIVE MAX SPEEDS FOR SHIPS IN OAKLAND (SR167) +WHAT+S THE AAW RATING OF DUBUQUE (SR168) +SHOW ASUW READINESS OF THE ESTEEM ELEVEN AUGUST (SR169) +ADD A NEW AREA (SR170) +WHAT EQUIPMENT PROBLEM WAS CASREPED BY FIREBUSH LAST MONTH (SR171) +GET MOB RATING CODES FOR SUBS THAT ARE IN GULF OF ALASKA (SR172) +LIST SENSORS (SR173) +CLEAR THE CHARTS (SR174) +SHOW ME THE MAXIMUM SPEED FOR VESSELS IN THE BERING STRAIT (SR175) +HOW MANY YEARS HAS FLINT BEEN EMPLOYED (SR176) +WHICH OF THEM HAS THE MOST REMAINING FUEL (SR177) +SHOW THE SAME DISPLAY INCREASING LETTER SIZE TO THE MAX VALUE (SR178) +WHAT SHIPS CARRY SQQ-23 (SR179) +DOES FREDERICK HAVE BOTH NTDS AND LINK-11 (SR180) +WILL THE HORNE+S CAT-3 PROBLEM BE FIXED BY SATURDAY (SR181) +DRAW CHINA WITH SOHO (SR182) +DOES FRESNO HAVE SUFFICIENT FUEL TO GET TO NEWCASTLE (SR183) +USE BRIGHT RED FOR TRACK ECG041 (SR184) +DISPLAY THE CURRENT SPEED AND LOCATION OF GLACIER (SR185) +USE DIM ORANGE FOR TRACKS OF CONVENTIONAL SURFACE SHIPS (SR186) +SHOW THEIR AVERAGE SPEEDS AND WHERE THEY ARE ENROUTE TO (SR187) +GIVE THE LAST DATE ON REEVES+S PERSONNEL CASUALTY REPORTS (SR188) +SHOW THE ECONOMIC SPEED FOR THE HECTOR (SR189) +LIST THE MOST RECENT DATE ON STERETT+S CAT-4 EQUIPMENT CASREPS (SR190) +WON+T IRONWOOD BE UPGRADED ON TRAINING FROM C2 TO C3 BY DECEMBER EIGHTEEN (SR191) +DO FLASHER+S ALERTS INCLUDE OSGP (SR192) +DISPLAY THE MAXIMUM SUSTAINED SPEED OF JARVIS (SR193) +DO THE GUARDFISH+S CAPABILITIES INCLUDE TFCC (SR194) +SHOW THE SIX FRIGATES THAT ARE IN INDIAN OCEAN WITH THE LOWEST FUEL CAPACITY (SR195) +WHAT IS THE AVERAGE CRUISING SPEED AND MAX SPEED OF JASON (SR196) +DISPLAY THE FOUR CRUISERS IN BASS STRAIT WITH THE SMALLEST FUEL CAPACITIES (SR197) +HOW MUCH DOES INCLUDING YESTERDAY+S DATA CHANGE THAT FIGURE (SR198) +GET ME THE MISSIONS EDITED TODAY (SR199) +WHAT IS THE MAXIMUM SPEED AND CROVL OF JUPITER (SR200) +IS TASM INSTALLED ABOARD KIRK (SR201) +FIND AVERAGE DISPLACEMENTS FOR CARRIERS THAT ARE IN THE PERSIAN SEA (SR202) +WHAT IF STEAM SHIPS WERE NOT COUNTED (SR203) +COUNT THE GAS POWERED SUBMARINES IN ARABIAN SEA (SR204) +SHOW THE CURRENT SPEED AND FUEL CAPACITY FOR THIS CARRIER (SR205) +SHOW GROSS DISPLACEMENT OF SHIPS THAT ARE T-LAM CAPABLE (SR206) +GIVE AVERAGE SPEEDS AND CAPABILITIES OF THE SUBS IN MOZAMBIQUE CHANNEL (SR207) +LIST CURRENT SUPPLIES READINESS OF KISKA (SR208) +WHAT+S THE AVERAGE OVERALL RATING CODE FOR USN VESSELS THAT ARE IN EASTPAC (SR209) +WILL THE GUITARRO+S LATEST PROBLEM BE REPAIRED BY THURSDAY (SR210) +GET ME THE CROVL OF MANHATTAN ELEVENTH MARCH (SR211) +WHEN+LL HAWKBILL+S LAST REPORTED TRAINING PROBLEM BE FIXED (SR212) +FIND LAST MONTH+S CASUALTY REPORTS FOR THE MARS (SR213) +DISPLAY ALL OVERLAYS (SR214) +ARE THERE ANY PROBLEMS FOR MERCURY THAT AFFECT MISSION AREAS (SR215) +WHAT ARE THE OPEN CASUALTY REPORTS ON METEOR (SR216) +SHOW LAST WEEK+S PROBLEMS FROM THE MIDGETT (SR217) +WAS PLUNGER+S LAST UPDATE ON WEDNESDAY (SR218) +WHEN WILL MISHAWAKA NEXT CHANGE FLEETS (SR219) +WHAT IS THE DISTANCE FROM ALEXANDRIA TO MONTICELLO (SR220) +WHAT IS THE TOTAL FUEL ABOARD NASHUA (SR221) +GIVE THE PERCENT FUEL ABOARD PEORIA (SR222) +LIST MIDPAC+S DEPLOYMENTS DURING JULY FOURTH (SR223) +DRAW TRACKS IN HOOKED PORT (SR224) +HOW FAR IS PIGEON FROM PLUCK (SR225) +SHOW LATS FOR HOOKED TRACK WITH DMDS SWITCHES SET TO DEFAULT VALUES (SR226) +WHAT SHIPS IN MIDPAC HAVE BOTH SLQ-32 AND SPS-40 (SR227) +WHAT+S THE DISTANCE FROM THE YORKTOWN TO THE POUGHKEEPSIE (SR228) +WHAT SENSOR IS POLLACK+S LAST LATITUDE AND LONGITUDE FROM (SR229) +WAS PRAIRIE IN WESTPAC YESTERDAY (SR230) +DOES RECLAIMER HAVE THE GREATEST FUEL CAPACITY OF FRIGATES THAT ARE IN THE EAST CHINA SEA (SR231) +WHAT PORT IS DALE IN (SR232) +WHAT CRUISERS IN CHINA SEA HAVE LAMPS INSTALLED (SR233) +WHO+S CLOSEST TO TICONDEROGA (SR234) +HOW FAR IS THE PUFFER+S LAST POSIT FROM PAC ALERT (SR235) +WHO IS IN WEST SIBERIAN SEA (SR236) +HOW CLOSE IS QUEENFISH+S MOST RECENT POSITION TO THIRTEEN DEGREES SOUTH SIXTY DEGREES EAST (SR237) +WHICH SHIP IN GULF OF TONKIN IS NEAREST TO SACRAMENTO (SR238) +TOTAL THE NUMBER OF THE SPS-48 CARRIERS THAT ARE C4 (SR239) +WHICH SHIPS IN SEA OF JAPAN HAVE A HARPOON CAPABILITY (SR240) +HOW MANY OF SEAWOLF+S POSITS ARE IN FORMOSA STRAIT (SR241) +CENTER IT AROUND GULF OF CALIFORNIA (SR242) +DOES THE SASSAFRAS HAVE THE LOWEST FUEL CAPACITY OF PHILIPPINE SEA SUBMARINES (SR243) +HOW NEAR IS SCHENECTADY TO HIM (SR244) +SWORDFISH+S DISTANCE FROM THE SHASTA (SR245) +HOW OLD IS BADGER+S OLDEST PROBLEM (SR246) +IS ANYBODY IN HOMER TACAN CAPABLE (SR247) +WHICH SUBMARINE HAS THE LARGEST DISPLACEMENT (SR248) +WHAT CAPABILITIES DOES SHERMAN HAVE (SR249) +HOW BAD IS BROOKE+S EARLIEST CASUALTY REPORT (SR250) +WHICH SHIPS IN THE GULF OF THAILAND ARE SQQ-23 EQUIPPED (SR251) +WHAT RATING HAS TRIPOLI DEGRADED TO ON PERSONNEL READINESS (SR252) +WAS TUSCALOOSA IN THE YELLOW SEA ON THE EIGHTEENTH OF OCTOBER (SR253) +HOW SMALL IS THE COPELAND+S FUEL CAPACITY (SR254) +GET ALL ALERTS (SR255) +SET CHART PARAMETERS TO THEIR DEFAULT VALUES (SR256) +DOES VANCOUVER HAVE THE LARGEST FUEL CAPACITY OF PACIFIC OCEAN SUBS (SR257) +DISPLAY THE SUB CLOSEST TO THE WABASH (SR258) +TOGGLE ARROW SWITCH (SR259) +SET CHART PARAMETER RESOLUTION TO LOW (SR260) +DOES WASP HAVE ENOUGH FUEL TO ARRIVE AT HER DESTINATION (SR261) +TURN RESOLUTION SWITCH ON (SR262) +FIND THE VARIOUS CAPABILITIES FOR DIESEL VESSELS IN THE CORAL SEA (SR263) +CLEAR CHARTS (SR264) +GIVE ME A LIST OF POSITIONS AND C-RATINGS FOR ALL OF WESTPAC+S SHIPS THAT WERE IN THEIR HOME PORTS ON TEN JUNE (SR265) +GET A LIST OF THE VARIOUS C-RATINGS FOR WICHITA (SR266) +WILL WILLAMETTE BE CHOPPING TO ATLANTIC FLEET TODAY (SR267) +WHAT IF THE MIW MISSION AREA RATING OF THE WINAMAC WERE M4 UNTIL SEVEN HUNDRED (SR268) +SHOW LOCATIONS AND M-RATINGS FOR ALL OF EASTPAC+S FRIGATES THAT WERE IN THEIR HOME PORTS ON FIFTEEN SEPTEMBER (SR269) +WHAT IS THE AVERAGE ASW RATING M-CODE FOR USN C5 CRUISERS THAT ARE IN THE BISMARK SEA (SR270) +SHOW NEW DEFINITIONS INVOLVING THE MIDWAY (SR271) +DISPLAY THE FUEL CAPACITY AND PROPULSION TYPE FOR CONSTELLATION (SR272) +WHAT IS THE FUEL CAPACITY IN METRIC TONS FOR RANGER (SR273) +HOW MANY FEET LONG IS ARKANSAS (SR274) +HOW SOON WILL THE BAINBRIDGE NEXT CHOP TO ATLANTIC FLEET FROM PACIFIC FLEET (SR275) +RESET SWITCHES TO DEFAULTS (SR276) +GIVE ME THE SAME INFORMATION FOR ENTERPRISE (SR277) +DRAW TRACK DDD992 IN BRIGHT GREEN (SR278) +WHAT VESSEL IN TOWNSVILLE IS M5 OR HIGHER ON AAW (SR279) +HOW SLOW WOULD TEXAS HAVE TO GO TO GET TO NOME ON HER REMAINING FUEL (SR280) +WHAT TIME WILL THE ENGLAND ARRIVE AT HIS DESTINATION (SR281) +HOW SOON CAN FOX GET TO WITHIN EIGHTY THREE MILES OF GRIDLEY (SR282) +SHOW CHART OF ROSS SEA USING THE TRUE-VIEW PROJECTION (SR283) +HOW LONG BEFORE HORNE WILL BE IN SOLOMON SEA (SR284) +AREN+T REEVES AND STERETT IN EVERETT NOW (SR285) +HOW SOON CAN FLASHER GO FROM BERING SEA TO GULF OF ALASKA (SR286) +WHAT+S THE NAME AND ETA AT ANCHORAGE OF THE SHIP IN BERING STRAIT (SR287) +HOW EARLY CAN THE GUARDFISH BE THERE (SR288) +WHAT IS THE DATE AND HOUR OF ARRIVAL IN PORT FOR GUITARRO (SR289) +LIST LENGTH AND BEAM OF HAWKBILL IN METERS AND FEET (SR290) +HOW FAST COULD PLUNGER GET TO SIX SOUTH SEVENTEEN WEST (SR291) +GET THE CROVLS AND TRACKS FOR ALL NTDS CARRIERS IN INDIAN OCEAN (SR292) +FIND THE C-CODE AND LAST LOCATION DATE FOR ANY FRIGATE IN BASS STRAIT AFTER FOURTEEN JANUARY (SR293) +REDEFINE AREA BUMP (SR294) +SHOW THE NAMES AND RESOURCES OF SHIPS THAT ARE IN THE EAST PERSIAN SEA (SR295) +GIVE ME BEAMS AND DRAFTS OF SUBMARINES IN ARABIAN SEA (SR296) +DISPLAY TRACKS AND SPEEDS OF SHIPS THAT ARE IN THE MOZAMBIQUE CHANNEL (SR297) +SET CEP AND FOOTER SWITCHES TO ON (SR298) +LIST DEGRADATIONS AND REASONS FOR THE POLLACK (SR299) +GET THE NAMES AND ESTIMATED TIME OF ARRIVAL AT THEIR DESTINATIONS FOR SUBS IN EASTPAC (SR300) +WHAT IS THE NAME AND VARIOUS RATINGS OF THE CRUISER IN BASS STRAIT (SR301) +FIND ALL OF TUESDAY+S AND WEDNESDAY+S CASUALTY REPORTS FOR PUFFER (SR302) +IS MORE THAN ONE LINK-11 CARRIER IN PORT (SR303) +SHOW LENGTHS AND BEAMS OF VESSELS THAT ARE IN WESTPAC (SR304) +IS MORE THAN ONE TFCC CAPABLE SHIP IN PORT (SR305) +GIVE REMARKS AND THEIR DATES FOR DAVIDSON+S LAST FIVE PROBLEMS (SR306) +LIST DESTINATIONS AND ARRIVAL HOUR AT DESTINATION FOR ALL SHIPS (SR307) +IS MORE THAN ONE QUARTER OF THE DOWNES+S FUEL LEFT (SR308) +SHOW ME SWITCH SETTINGS (SR309) +WHAT CASUALTY REPORTS FROM FRIDAY ARE CATEGORY TWO OR LOWER FOR SHIPS THAT ARE IN GULF OF TONKIN (SR310) +FIND LATITUDES AND LONGITUDES AND LATEST DEPLOYMENT DATES FOR ALL FRIGATES IN THE ATLANTIC OCEAN (SR311) +DON+T WE HAVE ANY TASM CRUISERS THAT ARE IN CHINA SEA (SR312) +SHOW ALERTS WITHIN THE LAST FIFTY HOURS (SR313) +DRAW ON THE SCREEN THE CURRENT LATITUDE AND LONGITUDE AND C-CODES FOR THE QUEENFISH (SR314) +WHAT WAS THE REASON FOR FANNING+S LAST DEGRADATION (SR315) +GIVE SUNDAY+S AND MONDAY+S CASREPS FOR CARRIERS IN SIBERIAN SEA (SR316) +GET PARAMETER SETTINGS (SR317) +LIST NAMES AND THE POSITIONS FOR T-LAM SUBMARINES IN SEA OF JAPAN TWELVE NOVEMBER (SR318) +WHAT PROBLEMS ARE MISSION DEGRADING (SR319) +GET ME THURSDAY AND FRIDAY+S UPDATES ON SEAWOLF (SR320) +WAS TODAY+S LAST HFDF SENSOR POSITION FOR SWORDFISH IN FORMOSA STRAIT (SR321) +WHAT ARE THE CATEGORIES FOR HEPBURN+S CASUALTY REPORTS (SR322) +FIND LOCATION DATA FOR SHIPS EMPLOYED BEFORE LAST NINETEEN APRIL (SR323) +SHOW FUEL LEVELS FOR NUCLEAR SUBS IN GULF OF CALIFORNIA (SR324) +GIVE C-RATINGS FOR VESSELS THAT ARE IN THE NORTH PHILIPPINE SEA (SR325) +SHOW TRACKS FOR FRIGATES (SR326) +LIST MAXIMUM DRAFTS FOR FRIGATES IN KOREAN BAY (SR327) +GET ME ALL LOCATIONS FOR THE CRUISERS THAT ARE IN GULF OF THAILAND (SR328) +DISPLAY TRACKS FOR BADGER AND FOR BROOKE (SR329) +FIND THE M-CODES FOR ANY CARRIERS IN YELLOW SEA (SR330) +SHOW DATA FOR COPELAND UPDATED SINCE TWO HUNDRED HOURS (SR331) +REDO FIGURES FOR DAVIDSON (SR332) +GIVE THE LATITUDE AND LONGITUDE DATA FOR THE HOOKED PORT (SR333) +DRAW TRACKS FOR USN SHIPS (SR334) +LIST M-CODES FOR ANY SUBMARINES THAT ARE IN THE PACIFIC OCEAN (SR335) +WHAT SHIPS ARE LOCATED IN THE CORAL SEA (SR336) +GET FULL POSITION DATA FOR TRACK FFF088 (SR337) +FIND ME THE LOCATION OF ALL SUBS THAT HAVE GONE TO M1 ON ASUW SINCE SIXTEEN MAY (SR338) +GIVE ME A LIST OF ALL LATITUDE AND LONGITUDE DATA FOR PLH003 (SR339) +WAS JARRETT+S POSITION ON SUNDAY IN THE BISMARK SEA (SR340) +DISPLAY THE LOCATION OF DOWNES (SR341) +SHOW LATITUDE AND LONGITUDE DATA FOR ALL TRACKS (SR342) +GIVE REMARKS FOR FANNING (SR343) +EDIT THE POSITION DATA FOR TRACK A42128 (SR344) +LIST LOCATION AND ECONOMIC SPEED OF HEPBURN WITH UNIT OF MEASURE SWITCH SET TO ENGLISH (SR345) +GET FULL LATITUDE AND LONGITUDE DATA FOR ALL TRACKS (SR346) +TOGGLE THE GREAT CIRCLE AND THE GRID PARAMETERS (SR347) +FIND ME POSITION DATA FOR JARRETT (SR348) +ARE ANY OF LOCKWOOD+S LAST EIGHT LATITUDES AND LONGITUDES IN ROSS SEA (SR349) +SHOW LOCATION OF LOCKWOOD ON ELEVEN FEBRUARY (SR350) +HOW CLOSE IS THE WEST SOLOMON SEA TO MCCLUSKY (SR351) +GIVE THE ESTIMATED TIME TO REPAIR FOR THE MOST RECENT CASUALTY REPORT FROM RAMSEY (SR352) +WHAT+S THE ETR ON MCCLUSKY+S SLQ-32 (SR353) +LIST NAMES AND RESOURCES OF ARCTIC OCEAN VESSELS (SR354) +WHAT ARE THE VARIOUS RESOURCE AREA RATINGS ON RATHBURNE (SR355) +SHOW A CHART CENTERED AROUND REASONER (SR356) +WHICH OF THESE ARE HIGHER THAN M2 IN MOB MISSION AREA (SR357) +DISPLAY A CHART CENTERED AROUND THE SAMPLE USING MERCATOR PROJECTION (SR358) +WHICH SHIPS THAT ARE C1 ARE IN BERING SEA (SR359) +DRAW CHART CENTERED AROUND VANDERGRIFT (SR360) +GET FRIGATES THAT ARE M3 ON MIW AND IN NEW-YORK (SR361) +CLEAR WINDOWS (SR362) +WHEN WILL WADSWORTH BE REPAIRING THAT PROBLEM WITH SPS-40 (SR363) +SHOW CARRIERS IN BERING STRAIT AND THEIR PROPULSION TYPES (SR364) +GIVE ANY SHIPS THAT ARE C2 (SR365) +WHAT IS THE TOTAL NUMBER OF SUBMARINES IN THE INDIAN OCEAN (SR366) +LIST USN SHIPS THAT ARE IN BASS STRAIT (SR367) +GET PERSIAN SEA SUBS THAT ARE C3 ON EQUIPMENT READINESS (SR368) +SHOW THE SAME VESSELS WITH FULL LATITUDE AND LONGITUDE DATA FOR EACH (SR369) +FIND ME THE SHIPS IN ARABIAN SEA SINCE EIGHTEEN AUGUST (SR370) +SHOW FRIGATES IN MOZAMBIQUE CHANNEL (SR371) +WHICH LAMPS CAPABLE CRUISERS THAT ARE IN EASTPAC THAT ARE M4 OR LOWER ON ASW CHOPPED TO PACIFIC FLEET AFTER ONE MARCH (SR372) +GIVE THE DEPLOYMENTS OF CARRIERS TWENTY NINE DECEMBER (SR373) +ARE THERE ANY SHIPS DEPLOYED IN MIDPAC THAT ARE C4 (SR374) +LIST DEPLOYMENTS OF SUBMARINES DURING MARCH (SR375) +HOW MANY KILOMETERS ARE THERE BETWEEN WHIPPLE AND AJAX (SR376) +GET USN SHIPS DEPLOYED IN NINETEEN EIGHTY ONE (SR377) +DID ANY SUBS THAT ARE IN BOMBAY EVER GO TO M5 ON AAW (SR378) +FIND THE VESSELS THAT WERE C5 ON JULY TWENTY SEVEN (SR379) +COUNT THE SHIPS IN WESTPAC (SR380) +SHOW ME FRIGATES WITH SPS-48 EMPLOYED BEFORE TWENTY SECOND OCTOBER (SR381) +GIVE CRUISERS THAT ARE C1 THAT AREN+T DEPLOYED (SR382) +LIST THE CARRIERS IN SOUTH ATLANTIC OCEAN AND THEIR MAXIMUM SUSTAINED SPEEDS (SR383) +HOW MANY SHIPS THAT ARE HARPOON CAPABLE ARE THERE AT DIEGO-GARCIA (SR384) +GET SUBMARINES THAT ARE M1 ON ASUW (SR385) +FIND ALL SHIPS THAT ARE IN HOME PORT (SR386) +COUNT THE SUBS THAT ARE AT GREATER THAN HALF THEIR FUEL CAPACITY (SR387) +SHOW VESSELS THAT WERE M2 ON MOB ON JUNE NINTH (SR388) +GIVE ME THE SHIPS DEPLOYED AFTER TWENTY FIFTH OF SEPTEMBER (SR389) +LIST FRIGATES IN CHINA SEA AND THEIR DESTINATIONS (SR390) +DO ANY CRUISERS THAT ARE IN SIBERIAN SEA HAVE MORE FUEL THAN HER (SR391) +GET THE CARRIERS THAT ARE C2 (SR392) +FIND SHIPS IN HOME PORT ON JANUARY FIFTEENTH (SR393) +HOW MANY SUBMARINES IN GULF OF TONKIN ARE STEAM PROPELLED (SR394) +GIVE ME A LIST OF SHIPS THAT WERE IN SEA OF JAPAN AS OF NOVEMBER SEVENTEENTH (SR395) +GET A LIST OF THE SUBS THAT ARE IN FORMOSA STRAIT AND THEIR AVERAGE DISPLACEMENTS (SR396) +ARE THERE VESSELS IN GULF OF CALIFORNIA THAT ARE C3 (SR397) +SHOW SHIPS THAT ARE IN PHILIPPINE SEA AND C4 ON TRAINING (SR398) +GIVE ME THE FRIGATES WITH SUPPLY PROBLEMS (SR399) +LIST C5 CRUISERS THAT ARE IN GALVESTON (SR400) +HOW MANY SUBMARINES IN KOREAN BAY HAVE TEST DEPTHS LESS THAN ONE THOUSAND FEET (SR401) +GET SHIPS THAT ARE IN GULF OF THAILAND THAT HAVE CASUALTY REPORTS DATED EARLIER THAN RAMSEY+S OLDEST ONE (SR402) +FIND THE SUBMARINES THAT ARE IN YELLOW SEA AND THAT ARE M3 ON MIW (SR403) +HOW MANY SHIPS ARE IN THE PACIFIC FLEET (SR404) +SHOW SUBS THAT ARE C1 ON SUPPLIES (SR405) +HOW MANY VESSELS WHOSE AVERAGE CRUISING SPEEDS ARE AS FAST AS RATHBURNE+S WERE IN HONOLULU TWENTY TWO APRIL (SR406) +GIVE THE SHIPS IN NORTH PACIFIC OCEAN WITH TACAN (SR407) +DO ANY FRIGATES THAT ARE IN CORAL SEA HAVE ASW MISSION AREA OF M4 (SR408) +LIST ALL CRUISERS AND THEIR FLEET IDENTIFICATIONS (SR409) +GET ME CARRIERS IN PORT ELIZABETH (SR410) +WHAT SQQ-23 SHIPS ARE IN THE BISMARK SEA (SR411) +FIND SUBMARINES DEPLOYED TWENTY EIGHT MAY (SR412) +HOW MANY SHIPS WITH MAX SPEEDS ABOVE THIRTY FOUR KNOTS ARE IN ROSS SEA (SR413) +SHOW SUBS WHOSE OVERALL READINESS IS C2 (SR414) +GIVE VESSELS THAT ARE C3 AND AREN+T DEPLOYED (SR415) +LIST C4 SHIPS THAT ARE IN THE SOLOMON SEA (SR416) +HOW MANY FRIGATES HAVE GROSS DISPLACEMENTS GREATER THAN REASONER+S (SR417) +GET ANY CRUISERS THAT ARE IN ARCTIC OCEAN AND THAT ARE RATED M5 ON AAW (SR418) +FIND ME CARRIERS THAT WENT TO M1 ON ASUW AFTER TWENTY EIGHT FEBRUARY (SR419) +SHOW ANY SHIPS THAT WERE C5 ON AUGUST NINETEENTH (SR420) +HOW MANY SUBMARINES ARE C1 OR ABOVE (SR421) +GIVE SHIPS DEPLOYED SINCE DECEMBER SIXTEENTH (SR422) +LIST ANY SUBS THAT ARE C2 ON PERSONNEL READINESS (SR423) +WHICH OF THE EAST BERING SEA VESSELS ARE ON STATION (SR424) +GET PACIFIC FLEET SHIPS THAT WERE C3 ON TWENTY SEVEN MARCH (SR425) +DECREASE LETTER SIZE BY ONE ON CHART OF SOUTH FORMOSA (SR426) +FIND FRIGATES AND THEIR DESTINATIONS (SR427) +MAKE LETTERS SIZE ONE (SR428) +SHOW ME THE NAMES AND MAXIMUM SPEEDS FOR CRUISERS (SR429) +WHAT SUBMARINE IS NEAREST APALACHICOLA (SR430) +GIVE CARRIERS (SR431) +LIST SHIPS DEPLOYED ONE AUGUST (SR432) +GET USN SUBMARINES IN THE GULF OF ALASKA SINCE THIRTY JULY (SR433) +WHAT IS SAMPLE+S FUEL STATUS (SR434) +FIND SHIPS IN BERING STRAIT AS OF OCTOBER THIRTY ONE (SR435) +SHOW SUBS THAT WERE DEPLOYED ON THE TENTH JUNE (SR436) +GIVE ME FUEL LEVELS FOR VESSELS IN INDIAN OCEAN (SR437) +DELETE VANDERGRIFT+S NEWEST POSITION DATA (SR438) +LIST THE LAST THREE POSITIONS FOR BRUNSWICK (SR439) +REVIEW THE WADSWORTH+S LAST SIX ALERTS (SR440) +WEREN+T THERE MORE THAN FIFTY SHIPS THAT WERE IN PACIFIC FLEET IN EIGHTY TWO (SR441) +DISPLAY THE LAST LOCATION OF THE HOOKED TRACK (SR442) +HAVE NOT MORE THAN TWO FRIGATES BEEN IN THEIR HOME PORTS SINCE SEPTEMBER SIXTH (SR443) +HAD CAMDEN MADE THAT CASUALTY REPORT EARLIER THAN EIGHT HUNDRED HOURS (SR444) +DELETE ANY MISSIONS THAT WERE CHANGED TODAY (SR445) +GET THE LAST NINE LOCATIONS OF CAMPBELL (SR446) +FIND CAPABILITIES THAT THE CHATTAHOOCHEE HAS (SR447) +WHAT CRUISERS ARE REPORTING M2 ON MOB (SR448) +GIVE ME A LIST OF AREA ALERTS FOR BASS STRAIT (SR449) +GET A LIST OF ALL NTDS CARRIERS THAT WEREN+T DEPLOYED IN JANUARY (SR450) +WHO HAS LINK-11 CAPABILITY IN THE PERSIAN SEA (SR451) +SHOW ANY TFCC SHIPS DEPLOYED BEFORE TWELFTH OF NOVEMBER AND THAT WEREN+T IN HOME PORT SEVEN APRIL (SR452) +WHAT+S THE LATEST LATITUDE AND LONGITUDE (SR453) +GIVE ME TASM CAPABLE SUBMARINES THAT ARE IN ARABIAN SEA (SR454) +WHAT IS THE LAST REPORT DATE FOR WHIPPLE+S EQUIPMENT CASUALTY REPORT (SR455) +LIST THE T-LAM CAPABLE SHIPS (SR456) +WHAT IS THE AVERAGE UNIT READINESS FOR THE THREE FASTEST SUBS IN MOZAMBIQUE CHANNEL (SR457) +GET ANY SLQ-32 CAPABLE VESSELS IN EASTPAC FIVE MAY AND C4 ON TWO FEBRUARY (SR458) +FIND SPS-40 SHIPS (SR459) +EDIT THE ALERT INVOLVING CITRUS (SR460) +SHOW THE LAMPS CAPABLE FRIGATES THAT ARE C5 (SR461) +REDRAW CHART WITH GROUPS AND NTDS SWITCHES TOGGLED (SR462) +DISPLAY AJAX+S TRACK WITH OVERLAY BARGE (SR463) +GIVE ANY SPS-48 CAPABLE CRUISERS THAT ARE IN PORT TODAY (SR464) +DRAW THE CHART WITH REDEFINED OVERLAYS (SR465) +LIST HARPOON CAPABLE CARRIERS IN ATLANTIC CITY (SR466) +SHOW ME CHART WITH NO SPEED DATA DISPLAYED (SR467) +GET ANY TACAN CAPABLE SHIPS THAT ARE NOT C1 ON TRAINING (SR468) +DEFINE THE TIME WINDOW FOR THE CHART OF NORTHERN JAPAN TO START AT PRESENT TIME AND END AT THIRTEEN HUNDRED ZULU (SR469) +FIND THE SQQ-23 SUBMARINES THAT WERE LOCATED IN GULF OF TONKIN ON EIGHT AUGUST (SR470) +REDEFINE TIME WINDOW FOR THE CHART OF SOUTHERN THAILAND TO START FOUR DAYS SOONER (SR471) +ARE THERE ANY CATEGORY THREE PROBLEMS FOR CLEVELAND (SR472) +SHOW THE MOST RECENT DEPLOYMENT DATES FOR SHIPS (SR473) +WHICH SUBS HAVE CATEGORY FOUR CASREPS (SR474) +REDRAW THE CHART OF KOREA INCREASING LETTER SIZE TO TWO (SR475) +IS THERE AN NTDS INSTALLED ON CONIFER (SR476) +GIVE LAST WEEK+S CATEGORY TWO CASUALTY REPORTS FOR VESSELS IN WESTPAC (SR477) +WHAT+S THE SETTING OF UOM SWITCH (SR478) +LIST MIW RATING CODES FOR ALL OF MIDPAC+S C2 SHIPS THAT ARE IN THE ATLANTIC OCEAN (SR479) +HAS CONFIDENCE CHOPPED TO PACIFIC FLEET YET (SR480) +WOULDN+T IT HAVE TAKEN LONGER WITH KENNEDY (SR481) +HOW MUCH FASTER IS APALACHICOLA+S CURRENT SPEED COMPARED TO THE BRUNSWICK+S (SR482) +MAKE CHART OF BRITISH SOLOMON ISLANDS AGAIN REDEFINING OVERLAYS (SR483) +GET ME DESTINATIONS AND ESTIMATED TIME OF ARRIVAL AT DESTINATION FOR LINK-11 CAPABLE FRIGATES (SR484) +CAN THE INDEPENDENCE GET TO CHINA SEA BY TEN HUNDRED HOURS ON TUESDAY (SR485) +WHAT CRUISERS RATED ABOVE M3 ON ASW WILL CHANGE READINESS BY NINE DECEMBER (SR486) +DISPLAY CHART OF WEST SIBERIAN SEA WITH NOVA OVERLAY (SR487) +DRAW A CHART OF THE GULF OF TONKIN WITH TIME WINDOW STARTED AT SIX HUNDRED HOURS (SR488) +FIND THE VARIOUS FLEET IDENTIFICATIONS FOR CARRIERS (SR489) +SHOW THE SAME CHART WITH BUD-TEST (SR490) +ON WHAT DAY IS EISENHOWER DUE IN KODIAK (SR491) +REDRAW THE CHART OF FORMOSA STRAIT WITH SAN-FRAN OVERLAY ADDED (SR492) +SET LETTER SIZE TO GREATEST VALUE (SR493) +DISPLAY TRACKS OF ANY SHIPS IN GULF OF CALIFORNIA (SR494) +REDO THE CHART OF PHILIPPINE SEA SHOWING ONLY LATITUDES AND LONGITUDES FROM SONAR SENSOR (SR495) +SET COLOR OF CAMDEN+S TRACK TO DIM YELLOW (SR496) +SHOW ALL DEFINITIONS OF ANY ALERTS INVOLVING THE MISSISSIPPI (SR497) +DRAW A CHART OF CANADA CENTERING IT AROUND VIRGINIA (SR498) +ADD PUGET-1 OVERLAY (SR499) +REDO CHART OF THE CORAL SEA ISLANDS USING GNOMONIC PROJECTION (SR500) +HAS BIDDLE BEEN AT SEA LONGEST OF SUBMARINES THAT ARE IN PACIFIC FLEET (SR501) +SHOW C3 SHIPS IN THE PACIFIC FLEET (SR502) +REDRAW THE CHART OF COOK ISLANDS WITH NEW POSITION DATA INCLUDED (SR503) +GIVE ME C4 SUBS THAT WERE IN KOREAN BAY ON FOUR MARCH (SR504) +REDISPLAY THE CHART OF GULF OF THAILAND AFTER CLEARING GRILL (SR505) +DISPLAY LENGTHS AND BEAMS FOR VESSELS THAT ARE IN PORT VICTORIA (SR506) +LIST GROUP NAMES (SR507) +SHOW THE DEFINITION OF THE CHESHIRE ALERT (SR508) +HAS CONQUEST ARRIVED AT HER DESTINATION YET (SR509) +GET THE NAMES OF SHIPS IN HOOKED PORT (SR510) +REDRAW CHART OF FIJI WITH THE RADAR SENSOR LOCATION DATA DELETED (SR511) +INCREASE LETTER SIZE TO THREE FOR CHART OF YELLOW SEA (SR512) +FIND THE VARIOUS FLEET IDENTIFICATIONS FOR TFCC FRIGATES THAT ARE IN PACIFIC OCEAN (SR513) +SHOW A CHART OF FRENCH POLYNESIA (SR514) +WHAT CRUISERS WENT TO C5 ON SUPPLIES AFTER SEVEN JULY (SR515) +SHOW ME ALERTS IN WHICH SHE+S INVOLVED (SR516) +REDO CHART OF CORAL SEA TOGGLING UNIT OF MEASURE PARAMETER (SR517) +GIVE FRIDAY+S PROBLEMS FROM THE DENVER (SR518) +LIST SPEED OF CARRIERS IN EAST BISMARK SEA (SR519) +ARE THERE ANY OLDER THAN THOSE (SR520) +MAKE CHART AGAIN IN HIGH RESOLUTION (SR521) +DISPLAY THE CHART OF ROSS SEA TURNING OFF POSIT DISPLAY SWITCH (SR522) +REDRAW CHART OF HONG-KONG WITH LATITUDE AND LONGITUDE DATA SHOWN IN BRIGHT ORANGE (SR523) +REDISPLAY CHART OF THE SOLOMON SEA ADDING NEW OVERLAYS (SR524) +COULDN+T DIXON ARRIVE IN PORT BY TOMORROW (SR525) +DRAW CHART OF INDONESIA WITH SECURITY OFF (SR526) +GET THE ESTIMATED ARRIVAL TIMES FOR SHIPS DUE IN ASTORIA TODAY (SR527) +DISPLAY SPEED OF DUBUQUE (SR528) +WHEN+LL ESTEEM NEXT BE ON STATION (SR529) +SHOW THE NUMBER OF SUBMARINES WITH C1 EQUIPMENT (SR530) +FIND THE MISSION AREAS ABOARD FIREBUSH THAT ARE M4 (SR531) +HOW LONG WOULD IT TAKE FLINT TO GET FROM SAN-DIEGO TO THREE NORTH FIFTEEN WEST (SR532) +SHOW ME A CHART OF ARCTIC OCEAN WITH PORTS SWITCH TURNED ON (SR533) +REDRAW THE CHART OF MADAGASCAR WITH TIME WINDOW DEFINED TO START AT SIX HUNDRED (SR534) +HOW LONG WILL IT TAKE FREDERICK TO GET WHERE HE+S GOING (SR535) +SHOW DATES OF PERSONNEL PROBLEMS REPORTED BY FRESNO IN NINETEEN EIGHTY THREE (SR536) +DO WE HAVE A SUB IN THE BERING SEA WITH TEST DEPTH LESS THAN FIVE THOUSAND FEET (SR537) +DISPLAY A CHART OF GULF OF ALASKA WITH TIME WINDOW STARTING AT FORTY AND ENDING AT TWO HUNDRED HOURS ZULU (SR538) +REDRAW CHART OF MONGOLIA WITH THE EDITED POSITION DATA (SR539) +DRAW CHART OF EASTERN MEXICO USING OVERLAY YANKEE (SR540) +REDO THE SAME CHART WITH SAIL PARAMETER ON (SR541) +WHAT IS THE TOTAL NUMBER OF SHIPS IN PACIFIC FLEET (SR542) +ON WHAT DAY COULD GLACIER ARRIVE IN PORT AT HER AVERAGE SPEED (SR543) +REDRAW THE CHART OF MOZAMBIQUE DECREASING LETTER SIZE TO FOUR (SR544) +GIVE THE NAMES OF ANY SUBS THAT WERE IN BERING STRAIT ON EIGHT OCTOBER (SR545) +WHAT VESSEL WAS IN SUBIC BAY SEPTEMBER ONE (SR546) +SHOW CHART OF NEW CALEDONIA WITH SAVE TOGGLED (SR547) +HOW LONG WOULD IT TAKE HECTOR TO GET TO MIAMI AT NINE KNOTS (SR548) +DISPLAY A CHART OF NEW-ZEALAND WITH SYSTEM SWITCHES SET TO THEIR DEFAULTS (SR549) +REDRAW THE CHART OF PHILIPPINES WITH DATA SCREEN CLEARED (SR550) +WILL IRONWOOD BE AT NAPLES TOMORROW (SR551) +SHOW THE NAME OF DIM RED TRACK (SR552) +REDRAW CHART OF PANAMA DELETING HFDF SENSOR LOCATION DATA (SR553) +HAS THE JARVIS CHOPPED TO ATLANTIC FLEET YET (SR554) +DRAW CHART OF INDIAN OCEAN (SR555) +HOW MANY DAYS WOULD IT TAKE JASON TO GET TO HER DESTINATION AT HER ECONOMIC SPEED (SR556) +TOTAL THE NUMBER OF VESSELS THAT ARE IN BASS STRAIT (SR557) +DISPLAY THE DEFINITION OF THE THREATS INVOLVING JUPITER (SR558) +SHOW THE SAME CHART OF SOUTH SINGAPORE DEFINING TIME WINDOW TO START AT SEVEN HUNDRED HOURS (SR559) +CAN KIRK GET TO KODIAK BY MONDAY (SR560) +REDRAW PROJECTION USING STEREOGRAPHIC (SR561) +GET ME THE DATES ON EQUIPMENT CASUALTY REPORTS FOR KISKA (SR562) +SHOW THE NUMBER OF SHIPS DEPLOYED IN NORTH PERSIAN SEA (SR563) +SET COLOR OF N92762 TO BRIGHT YELLOW (SR564) +REDRAW CHART OF TAIWAN MAKING THE LETTERS ONE SIZE SMALLER (SR565) +WHAT IS THE NUMBER OF FRIGATES THAT ARE IN ARABIAN SEA WITHOUT TASM (SR566) +REDRAW CHART OF SOVIET UNION WITH REDEFINED OVERLAYS (SR567) +WHAT WOULD IT BE COUNTING ONLY C2 CRUISERS (SR568) +WHEN WAS HE LAST IN THE MOZAMBIQUE CHANNEL (SR569) +SET ALL PARAMETERS TO DEFAULTS (SR570) +FIND ANY ALERTS IN WHICH MANHATTAN IS INVOLVED (SR571) +MAKE CHART OF UNITED STATES AGAIN WITH RESOLUTION SET TO LOW (SR572) +REDO THE CHART OF USA WITH LETTERS DECREASED BY ONE SIZE (SR573) +GIVE ME A LIST OF THE VARIOUS FLEET IDENTIFICATIONS FOR T-LAM CARRIERS (SR574) +GET A LIST OF LAST MONTH+S WORST PROBLEMS FOR EACH EASTPAC SHIP (SR575) +DISPLAY THE DEFINITION OF THE MIDPAC ALERT (SR576) +SHOW THE C3 SHIPS IN WESTPAC (SR577) +WHAT+S THE STATUS OF MARS (SR578) +DISPLAY A CHART OF WESTERN CHINA WITH ECHO SWITCH OFF (SR579) +GIVE ME C4 SUBMARINES (SR580) +DRAW THE CHART OF ATLANTIC OCEAN WITH MERCURY DISPLAYED IN CENTER (SR581) +LIST TUESDAY+S CASUALTY REPORTS FOR METEOR (SR582) +WHAT WERE THE CAMPBELL+S PROBLEMS YESTERDAY (SR583) +WHAT IS MIDGETT+S ETA AT ITS DESTINATION (SR584) +DOESN+T CHATTAHOOCHEE HAVE SLQ-32 (SR585) +IS CITRUS+S EARLIEST CASREP LATER THAN TWENTY ONE HUNDRED (SR586) +WHAT IS THE CRUISER+S ESTIMATED TIME OF ARRIVAL AT TOKYO (SR587) +IS THE CONIFER+S ARRIVAL HOUR IN PEARL HARBOR AFTER THREE HUNDRED HOURS (SR588) +WHY WAS CONFIDENCE+S AAW MISSION AREA CHANGED ON FIVE JUNE (SR589) +WHAT+S KENNEDY+S TRAINING RESOURCE READINESS (SR590) +WILL INDEPENDENCE+S SUPPLIES CASUALTY REPORT BE FIXED BY SEPTEMBER TWO (SR591) +IS EISENHOWER+S RATING ON OVERALL READINESS HIGHER THAN THAT OF THE MISHAWAKA (SR592) +WHAT IS MISSISSIPPI+S HOME PORT (SR593) +WHY WAS VIRGINIA+S PERSONNEL RESOURCE RATING DEGRADED SEVENTH JANUARY (SR594) +WHAT IS BIDDLE+S EQUIPMENT READINESS NOW (SR595) +WHEN WAS THE CONQUEST+S LAST REPORTED TRAINING PROBLEM (SR596) +WHAT+S CONSTANT+S PROPULSION TYPE AND FUEL CAPACITY (SR597) +IS DENVER+S DISPLACEMENT GREATER THAN AVERAGE FOR M5 ASUW SHIPS (SR598) +IS DIXON+S LENGTH LESS THAN ANY FRIGATE IN THE CHINA SEA (SR599) +WHAT IS DUBUQUE+S OLDEST CASUALTY REPORT (SR600) +; +; 2235 sentences used as speaker-dependent test material, part of speaker- +; independent training material, and speaker-independent test material (Note: +; 35 of these sentences were not used in the Resource Managment corpus): +IS ESTEEM+S ESTIMATED TIME OF ARRIVAL LATER THAN EIGHT HUNDRED HOURS ZULU (ST0001) +WHAT IS FIREBUSH+S PROPULSION TYPE (ST0002) +IS FLINT+S MAX DRAFT GREATER THAN THE AVERAGE FOR HER FLEET (ST0003) +WHERE WAS FREDERICK+S DESTINATION NOVEMBER FOURTEENTH (ST0004) +IS FRESNO+S AVERAGE DISPLACEMENT LARGER THAN AVERAGE FOR SIBERIAN SEA SUBS (ST0005) +WHAT+S GLACIER+S MAXIMUM DRAFT (ST0006) +IS THE HECTOR+S FLEET IDENTIFICATION THE SAME AS IRONWOOD+S (ST0007) +WHAT IS JARVIS+S M-RATING ON MOB (ST0008) +IS JASON+S MAXIMUM SUSTAINED SPEED SLOWER THAN JUPITER+S (ST0009) +IS EVERETT THE KIRK+S DESTINATION (ST0010) +WHAT IS KISKA+S FUEL CAPACITY (ST0011) +IS MANHATTAN+S LENGTH MORE THAN SEVEN HUNDRED METERS (ST0012) +WHY WAS MARS+S MIW M-CODE CHANGED ON TWENTY SIXTH OF APRIL (ST0013) +WHAT+S THE MERCURY+S AVERAGE CRUISING SPEED (ST0014) +ARE THERE ANY GAS PROPELLED VESSELS THAT ARE IN GULF OF TONKIN (ST0015) +WHAT IS METEOR+S CURRENT SPEED (ST0016) +ARE THERE ANY DIESEL SURFACE VESSELS WITHIN FOUR MILES OF DARWIN (ST0017) +WHAT IS MIDGETT+S PERCENT FUEL (ST0018) +ARE THERE FOURTEEN SHIPS AT SEA (ST0019) +WHAT WAS THE PREVIOUS SUPPLIES READINESS OF MONTICELLO (ST0020) +ARE THERE NINE SPS-40 FRIGATES WITH MAX SPEEDS NOT LESS THAN FIFTEEN KNOTS (ST0021) +WERE THERE TWENTY SIX CRUISERS AT SEA ON TWELVE MAY (ST0022) +WHO HAS THE LOWEST FUEL CAPACITY OF NUCLEAR SURFACE SHIPS IN THE SEA OF JAPAN (ST0023) +ARE THERE FOUR CARRIERS WITH MAXIMUM SPEEDS MORE THAN SEVEN KNOTS (ST0024) +REVIEW MISHAWAKA+S ALERTS (ST0025) +WHAT+S THE OVERALL RESOURCE READINESS OF NASHUA (ST0026) +IS HOMER THE DESTINATION FOR ANY SHIPS (ST0027) +ARE THERE THREE HARPOON SUBMARINES THAT ARE IN FORMOSA STRAIT CAPABLE OF A MAXIMUM SPEED OF NINETEEN KNOTS OR HIGHER (ST0028) +TURN AREAS OFF AND REDRAW CURRENT AREA (ST0029) +SET AREA ON (ST0030) +DON+T SHOW THE CHART ON REDRAW (ST0031) +DISPLAY POSITIONS FOR HOOKED TRACK (ST0032) +TURN ARROW ON FOR TRACKS WHOSE POSITION IS HOOKED (ST0033) +WHY WAS MONTICELLO+S ASW MISSION AREA DOWNGRADED ON SIXTEEN FEBRUARY (ST0034) +WHAT IS THE EQUIPMENT C-RATING FOR THE PEORIA (ST0035) +TURN OFF CEP SWITCH (ST0036) +WHEN WILL THE PERSONNEL PROBLEM FOR PIGEON BE RESOLVED (ST0037) +TURN OFF CHART PARAMETER (ST0038) +WHEN DID THE NASHUA+S PERSONNEL READINESS RATING LAST DEGRADE (ST0039) +WHY DID PEORIA+S AAW MISSION AREA RATING DEGRADE ON ELEVEN AUGUST (ST0040) +REDRAW SHOWING THE LAST SIX LOCATIONS OF ALL CARRIERS AND ALL SUBS (ST0041) +WHY DID PLUCK CHANGE EQUIPMENT READINESS ON EIGHTEEN DECEMBER (ST0042) +GET THE LATITUDES AND LONGITUDES OF VESSELS THAT ARE IN GULF OF CALIFORNIA (ST0043) +ARE THERE FIVE SHIPS IN SIDNEY WITH READINESS MORE THAN C3 (ST0044) +WHAT WAS PIGEON+S TRAINING READINESS ON LAST SATURDAY (ST0045) +WHY WAS SUPPLIES READINESS OF YORKTOWN DEGRADED ON THIRTEEN MARCH (ST0046) +IS LENINGRAD THE DESTINATION OF ANY FRIGATES (ST0047) +WHO HAS THE SMALLEST FUEL CAPACITY IN THE PHILIPPINE SEA (ST0048) +WHAT IS THE OVERALL READINESS OF POUGHKEEPSIE (ST0049) +WHICH OF THE CRUISERS THAT ARE IN KOREAN BAY HAVE SPS-48 (ST0050) +WHAT+S THE PERSONNEL RESOURCE READINESS ON PRAIRIE (ST0051) +WHEN WAS RECLAIMER LAST IN THE GULF OF THAILAND (ST0052) +WHAT IS THE EQUIPMENT READINESS ON PLUCK (ST0053) +WHEN WAS DALE LAST IN PORT (ST0054) +ARE THERE TWO CARRIERS IN YELLOW SEA WITH TRAINING RATING MORE THAN C1 (ST0055) +WHAT IS THE SUPPLIES RESOURCE RATING ON TICONDEROGA (ST0056) +ARE THERE ANY C2 SHIPS THAT ARE IN THE PACIFIC OCEAN (ST0057) +WHAT+S THE OVERALL RESOURCE RATING AND DESTINATION OF SACRAMENTO (ST0058) +WHEN WILL THE PERSONNEL CASUALTY REPORT FROM THE YORKTOWN BE RESOLVED (ST0059) +NEVER MIND THE DISPLAY (ST0060) +HAS THE SASSAFRAS CHANGED EQUIPMENT READINESS (ST0061) +IS SCHENECTADY AS FAST AS SHASTA (ST0062) +WHAT IS THE TRAINING RATING OF SHERMAN (ST0063) +IS TRIPOLI IN THE HOOKED PORT (ST0064) +DID THE TUSCALOOSA REPORT ANY PROBLEM ON TEN JULY (ST0065) +HASN+T VANCOUVER REPORTED ANY SUPPLIES RESOURCE AREA PROBLEMS SINCE FIFTEEN OCTOBER (ST0066) +IS WABASH ON STATION TODAY (ST0067) +WHAT IS THE LONGEST CRUISER IN PACIFIC FLEET (ST0068) +CLEAR SCREENS (ST0069) +IS WASP WITHIN SIXTY KILOMETERS OF THIRTY EIGHT SOUTH NINE WEST (ST0070) +WHEN DID THE WICHITA LAST DOWNGRADE FOR ASUW MISSION AREA (ST0071) +IS WILLAMETTE FARTHER FROM WINAMAC THAN MIDWAY IS (ST0072) +WHEN DID THE CONSTELLATION LAST REPORT OVERALL RESOURCE AREA C3 (ST0073) +IS RANGER FASTER THAN ARKANSAS (ST0074) +DIDN+T BAINBRIDGE UPGRADE ON SEVENTEEN JUNE (ST0075) +WHEN+LL ENTERPRISE NEXT BE IN HOME PORT (ST0076) +IS THE TEXAS CAPABLE OF A SPEED OF FOURTEEN KNOTS (ST0077) +ARE ENGLAND AND FOX IN WELLINGTON (ST0078) +IS GRIDLEY A HARPOON CARRIER (ST0079) +DOES HORNE HAVE AN MOB READINESS OF M1 (ST0080) +WHERE IS THE REEVES ENROUTE TO (ST0081) +IS STERETT SLOWER THAN FLASHER (ST0082) +WHERE IS GUARDFISH GOING (ST0083) +WHY WAS GUITARRO RATED C4 ON JUNE ONE (ST0084) +IS THE HAWKBILL DUE IN PORT BEFORE TWELVE HUNDRED ON NEXT THURSDAY (ST0085) +HASN+T PLUNGER CASREPED ANY PERSONNEL RESOURCE PROBLEMS SINCE NINETEEN SEPTEMBER (ST0086) +WHERE+S POLLACK NOW (ST0087) +REVIEW ALERTS WITHIN THE LAST TEN HOURS FOR THE SHIPS THAT ARE IN GULF OF ALASKA (ST0088) +IS QUEENFISH GOING TO BE CHOPPING TO THE ATLANTIC FLEET SOON (ST0089) +WHEN DID SEAWOLF DEGRADE FROM HER PREVIOUS EQUIPMENT C-RATING (ST0090) +HAS SWORDFISH REPORTED ANY TRAINING PROBLEMS (ST0091) +WHEN DID BADGER CHOP TO LANTFLT (ST0092) +IS THERE A SHIP IN CORAL SEA LONGER THAN SEVEN HUNDRED FEET (ST0093) +WHERE WAS THE BROOKE ON JANUARY SIXTEEN (ST0094) +DIDN+T COPELAND DOWNGRADE ON MIW IN NOVEMBER (ST0095) +IS DAVIDSON+S MAX SPEED AS FAST AS DOWNES+S (ST0096) +WHICH SUBMARINES IN BISMARK SEA HAVE TACAN (ST0097) +WHAT+S THE ASW AVERAGE RATING CODE FOR SHIPS THAT ARE IN THE ROSS SEA (ST0098) +WHAT SUBS IN EAST SOLOMON SEA WENT TO M2 IN AAW SINCE SEVENTEENTH APRIL (ST0099) +WHICH VESSELS THAT ARE IN ARCTIC OCEAN ARE SQQ-23 CAPABLE (ST0100) +WHAT IS THE ETA AT HER DESTINATION OF FANNING (ST0101) +WHICH SHIPS IN MANCHESTER HAVE A SUPPLIES READINESS RATING OF C5 (ST0102) +DID THE ASUW MISSION AREA OF HEPBURN EVER GO TO M3 ON MAY SIXTEENTH (ST0103) +WHAT IS THE ESTIMATED TIME OF ARRIVAL IN OAKLAND OF JARRETT (ST0104) +DID MOB MISSION AREA OF LOCKWOOD EVER GO TO M4 IN EIGHTY FOUR (ST0105) +WHAT PERSONNEL PROBLEMS HAS THE MCCLUSKY REPORTED SINCE FIRST OF FEBRUARY (ST0106) +DEFINE A PAC AREA ALERT (ST0107) +WHAT+S THE MIW MISSION AREA RATING FOR RAMSEY (ST0108) +WHICH FRIGATES THAT ARE IN BERING SEA HAVE AN OVERALL READINESS THAT IS C1 (ST0109) +ADD BOX (ST0110) +DRAW GULF OF ALASKA (ST0111) +HAS THE POUGHKEEPSIE+S ASW MISSION AREA RATING BEEN CHANGED SINCE WEDNESDAY (ST0112) +WHICH CRUISERS IN BERING STRAIT HAVE AN OVERALL RESOURCE READINESS OF C2 (ST0113) +HAS AAW MISSION AREA OF RATHBURNE GONE TO M5 SINCE TWENTY THREE AUGUST (ST0114) +WHICH CARRIERS THAT ARE IN NEWCASTLE ARE C3 (ST0115) +WHAT SUPPLY PROBLEMS HAS REASONER REPORTED (ST0116) +DID THE PRAIRIE+S ASUW MISSION AREA EVER GO TO M1 AFTER TWENTY FIVE DECEMBER (ST0117) +WHAT IS THE MOB M-CODE FOR SAMPLE (ST0118) +DOES VANDERGRIFT HAVE NTDS CAPABILITY (ST0119) +ARE THERE ANY LINK-11 CAPABLE SHIPS IN INDIAN OCEAN (ST0120) +DOESN+T WADSWORTH HAVE TFCC YET (ST0121) +HOW MANY CAT-2 CASREPS ARE THERE FOR SUBMARINES THAT ARE IN BASS STRAIT (ST0122) +ARE THERE ANY TASM SHIPS IN PERSIAN SEA (ST0123) +SHOW FORMOSA (ST0124) +REDRAW JAPAN IN HIGH RESOLUTION (ST0125) +DISPLAY THAILAND USING TRUE-VIEW (ST0126) +HOW MUCH FUEL DOES WHIPPLE HAVE REMAINING (ST0127) +IS THE AVERAGE SPEED OF AJAX GREATER THAN EIGHTEEN KNOTS (ST0128) +REDRAW KOREA WITH LOW RESOLUTION (ST0129) +IS THE ECONOMIC SPEED OF APALACHICOLA LESS THAN THAT OF THE BRUNSWICK (ST0130) +WHAT IS THE MAXIMUM SPEED OF ALL SUBS THAT ARE IN PACIFIC FLEET (ST0131) +ARE ANY SUPPLY PROBLEMS REPORTED BY CAMDEN DATED TWENTY TWO MARCH (ST0132) +IS THE AVERAGE CRUISING SPEED FOR VESSELS IN THE ARABIAN SEA GREATER THAN RECLAIMER+S MAX SPEED (ST0133) +ARE MORE THAN EIGHT SHIPS CURRENTLY IN HOME PORT (ST0134) +DOES THE CAMPBELL HAVE FOUR OPEN CAT-3 PROBLEMS (ST0135) +WHAT+S THE PRESENT PERSONNEL READINESS FOR CHATTAHOOCHEE (ST0136) +IS THE GROSS DISPLACEMENT OF CITRUS MORE THAN A THOUSAND LONG TONS (ST0137) +WHAT IS THE MAXIMUM SPEED OF CLEVELAND (ST0138) +HOW MANY NUCLEAR SURFACE SHIPS ARE WITHIN FIFTY NINE MILES OF CONIFER (ST0139) +WHAT FRIGATES HAVE CASREPED EQUIPMENT PROBLEMS (ST0140) +WHAT ARE THE AVERAGE DISPLACEMENTS FOR MOZAMBIQUE CHANNEL CONVENTIONAL SURFACE VESSELS (ST0141) +WEREN+T MORE THAN SIX C4 CRUISERS IN PACIFIC FLEET TODAY (ST0142) +IS THERE A PROBLEM WITH TRAINING FOR CONFIDENCE (ST0143) +EDIT DALE+S ALERTS (ST0144) +WHAT IS THE CURRENT SUPPLIES READINESS OF THE KENNEDY (ST0145) +ARE THERE MORE THAN FOUR T-LAM CAPABLE CARRIERS THAT ARE IN PORT (ST0146) +WHAT SHIPS CHOPPED FROM THE ATLANTIC FLEET TO THE PACIFIC FLEET IN JULY (ST0147) +REDISPLAY CHART ADDING SOHO (ST0148) +TICONDEROGA+S OVERALL READINESS RATING (ST0149) +WHAT PACIFIC FLEET SUBMARINE WASN+T DOWNGRADED ON PERSONNEL READINESS DURING OCTOBER (ST0150) +HOW FAST IS INDEPENDENCE (ST0151) +ADD AN ALERT (ST0152) +ARE ANY OF THE SACRAMENTO+S POSITIONS FROM VISUAL SENSOR (ST0153) +TURN FOOTER SWITCH ON (ST0154) +WERE ANY OF SASSAFRAS+S PROBLEMS REPORTED BEFORE TWENTY SEVEN JUNE (ST0155) +SET GREAT CIRCLE SWITCH TO ON (ST0156) +WHAT SUB HAD THE MOST CASUALTY REPORTS DURING THE LAST THREE MONTHS (ST0157) +TOGGLE THE UNIT OF MEASURE PARAMETER (ST0158) +ARE ANY OF SCHENECTADY+S PROBLEMS DATED TWENTY SIX SEPTEMBER (ST0159) +WHAT SPEED IS EISENHOWER GOING (ST0160) +REDRAW IT INCREASING LETTER SIZE TO ONE (ST0161) +WHAT CASUALTY REPORTS ON MISSISSIPPI ARE THERE FOR TWENTY FIVE JANUARY (ST0162) +REDRAW IT MAKING THE LETTER SIZE ONE SMALLER (ST0163) +SET COLOR FOR SHASTA+S TRACK TO DIM GREEN (ST0164) +WHAT VESSEL IN MIDPAC HAS LEAST REMAINING FUEL (ST0165) +SET CHART SWITCH TO HIGH (ST0166) +HOW SOON CAN THE SHERMAN+S LATEST PROBLEM BE FIXED (ST0167) +WHICH SHIP IN WESTPAC HAS THE LARGEST FUEL CAPACITY (ST0168) +WHAT FRIGATE IN NORTH ATLANTIC OCEAN HAS THE SLOWEST CURRENT SPEED (ST0169) +REDRAW CHART DISPLAYING THE TWO LAST LOCATIONS FOR EACH CRUISER (ST0170) +EQUIPMENT RATING FOR VIRGINIA (ST0171) +WHAT SUBMARINES IN THE CHINA SEA ON TWENTY EIGHT NOVEMBER WILL CHOP TO ATLANTIC FLEET BY TWENTY NINE APRIL (ST0172) +IS TRIPOLI+S FUEL CAPACITY LARGER THAN TUSCALOOSA+S (ST0173) +EDIT OSGP (ST0174) +REDO CHART DELETING THE LATEST POSIT DATA FOR EACH CARRIER (ST0175) +WHAT+S THE PRESENT MIW MISSION READINESS OF THE BIDDLE (ST0176) +TURN GRID OFF (ST0177) +WHAT TYPE OF PROPULSION DOES CONQUEST HAVE (ST0178) +HOW SOON WILL CONSTANT BE UPGRADED ON TRAINING READINESS (ST0179) +CLEAR DATA SCREEN (ST0180) +IS THERE A REMARK ON VANCOUVER+S MOST RECENT CASUALTY REPORT (ST0181) +DID THE DENVER REPORT ANY SUPPLIES PROBLEM JULY ONE (ST0182) +WHAT IS THE NAME AND C-CODE OF THE CARRIER IN SIBERIAN SEA (ST0183) +DOES DIXON HAVE ANY CATEGORY THREE OR CATEGORY FOUR PROBLEMS (ST0184) +CLEAR THE OVERLAYS AND DISPLAY TRACK OF DUBUQUE (ST0185) +HOW SOON CAN ESTEEM CHOP TO ATLANTIC FLEET (ST0186) +WHAT CASREP DID FIREBUSH HAVE ON TWENTY SEVEN MAY (ST0187) +DRAW THE WABASH+S TRACK AND CURRENT OVERALL READINESS (ST0188) +MAKE LETTERS ONE SIZE SMALLER (ST0189) +HOW SOON WILL FLINT BE UPGRADED ON ASW MISSION READINESS (ST0190) +CLEAR CHART SCREEN (ST0191) +HOW SOON CAN THE FREDERICK GET TO ALEXANDRIA (ST0192) +NEVER MIND (ST0193) +HOW SOON DOES FRESNO ARRIVE IN TOWNSVILLE (ST0194) +CLEAR DATA SCREENS (ST0195) +WHAT ARE THE VARIOUS RATINGS FOR GLACIER (ST0196) +DOES HECTOR HAVE ANY CASREPS OF CATEGORY TWO OR CATEGORY THREE (ST0197) +SHOW POSITION DATA AND THE VARIOUS MISSION CODES FOR SHIPS IN GULF OF TONKIN BEFORE FEBRUARY TWENTY THREE (ST0198) +ARE THERE ANY OPEN CASUALTY REPORTS FOR IRONWOOD (ST0199) +CHANGE ALERT FOR SEA OF JAPAN (ST0200) +WHAT SPS-48 CAPABLE CARRIERS ARE IN SOLOMON SEA (ST0201) +HOW SOON WILL JARVIS BE IN HOME PORT (ST0202) +DEFINE AREA ALERTS FOR GULF OF CALIFORNIA (ST0203) +DELETE LOCATION DATA FOR WASP+S TRACK (ST0204) +EDIT THE WICHITA+S LATITUDE AND LONGITUDE DATA FROM RADAR SENSOR (ST0205) +ARE ANY OF WESTPAC+S SUBS RATED M2 ON AAW (ST0206) +HAS JASON BEEN DOWNGRADED YET (ST0207) +HOW MANY OF EASTPAC+S VESSELS WERE IN HOME PORT ON SEVENTH AUGUST (ST0208) +WHAT SUBMARINE WASN+T DEGRADED IN PERSONNEL READINESS IN NINETEEN EIGHTY FIVE (ST0209) +WHOSE AVERAGE SPEEDS ARE ELEVEN KNOTS OR LESS (ST0210) +HOW MANY METRIC TONS IS THE AVERAGE DISPLACEMENT OF SHIPS IN PACIFIC FLEET (ST0211) +IS THERE NO PHILIPPINE SEA SUB RATED M3 ON ASUW (ST0212) +WAS THERE NO KOREAN BAY VESSEL THAT WAS RATED M4 ON MOB IN THE GULF OF THAILAND DECEMBER NINETEENTH (ST0213) +WHAT+RE THE VARIOUS RESOURCE AREA RATINGS FOR JUPITER (ST0214) +SET UNIT OF MEASURE TO METRIC (ST0215) +WHOSE ECONOMIC SPEEDS ARE LESS THAN SEVENTEEN KNOTS (ST0216) +HOW MANY KILOMETERS IS IT BETWEEN KIRK AND NOME (ST0217) +HOW MANY FRIGATES ARE STEAM POWERED (ST0218) +HOW MANY CRUISERS ARE THERE THAT ARE IN YELLOW SEA (ST0219) +ARE THERE ANY CARRIERS WITHIN TWENTY FIVE MILES OF TWO WEST EIGHTEEN SOUTH (ST0220) +WHICH SHIP IS CLOSEST TO ANCHORAGE (ST0221) +DECREASE THE LETTER SIZE BY ONE (ST0222) +HOW SOON CAN KISKA CHOP FROM PACIFIC FLEET TO ATLANTIC FLEET (ST0223) +HOW MANY KILOMETERS IS NEW-YORK FROM BOMBAY (ST0224) +ARE THERE ANY SHIPS LONGER THAN ONE THOUSAND FEET IN THE NORTH PACIFIC OCEAN (ST0225) +WHAT GAS SURFACE SHIPS WHICH ARE IN CORAL SEA ARE SLQ-32 CAPABLE (ST0226) +COUNT ALL THE SUBMARINES (ST0227) +HOW MANY MILES IS IT FROM DIEGO-GARCIA TO MANHATTAN (ST0228) +COUNT THE SHIPS THAT WILL ARRIVE IN GALVESTON BY NEXT MONTH (ST0229) +HOW MANY SUBS WILL BE IN HONOLULU BY THIRTEEN HUNDRED HOURS TOMORROW (ST0230) +RESET THE SWITCHES (ST0231) +DO ANY VESSELS THAT ARE IN PACIFIC FLEET HAVE SPS-40 (ST0232) +ARE ANY SHIPS IN BISMARK SEA BELOW NINETY PERCENT OF THEIR FUEL CAPACITY (ST0233) +HOW MANY FRIGATES WERE IN PORT ELIZABETH DURING THE LAST FORTY EIGHT WEEKS (ST0234) +WHICH LAMPS CAPABLE CRUISERS ARE IN ROSS SEA (ST0235) +HOW MANY DAYS WOULD IT TAKE MARS TO GET TO ATLANTIC CITY AT HIS MAXIMUM SUSTAINED SPEED (ST0236) +DEFINE AN ALERT FOR THE FORMOSA STRAIT (ST0237) +WHICH HARPOON CAPABLE SHIPS ARE C5 (ST0238) +HOW MANY SUBMARINES WERE IN PORT VICTORIA ON THE TWENTIETH OF MARCH (ST0239) +DO ANY SHIPS THAT ARE CAPABLE OF AN AVERAGE CRUISING SPEED OF MORE THAN FOURTEEN KNOTS HAVE TACAN (ST0240) +AREN+T THERE ANY SUBS THAT HAVEN+T REPORTED AN EQUIPMENT PROBLEM SINCE THIRTY JULY (ST0241) +HOW MANY VESSELS WERE DEPLOYED SINCE THIRTY ONE OCTOBER (ST0242) +WERE ANY SHIPS IN ASTORIA ON NINE JUNE (ST0243) +HOW MANY FRIGATES ARE C1 ON TRAINING (ST0244) +WEREN+T ANY CRUISERS IN ARCTIC OCEAN IN SEPTEMBER (ST0245) +SHOW ME TRACKS OF CARRIERS IN THE BERING SEA (ST0246) +HOW MANY SHIPS IN THE GULF OF ALASKA ON SIX JANUARY HAVE CHANGED READINESS (ST0247) +WHICH SQQ-23 CAPABLE SUBMARINES HAVE A SUPPLIES RESOURCE RATING OF MORE THAN C2 (ST0248) +HOW MANY SHIPS WERE DEPLOYED IN EIGHTY SIX (ST0249) +ARE THERE ANY SUBS THAT ARE IN BERING STRAIT CAPABLE OF A SPEED OF TWENTY KNOTS (ST0250) +HOW MANY VESSELS ARE IN INDIAN OCEAN (ST0251) +DO ANY SHIPS THAT ARE IN BASS STRAIT HAVE AN M5 MIW M-RATING (ST0252) +HOW MANY FRIGATES HAVE OPEN CASUALTY REPORTS (ST0253) +ARE ANY CRUISERS CAPABLE OF A MAX SPEED OF MORE THAN SIXTEEN KNOTS (ST0254) +HOW MANY CARRIERS HAVE BEEN DEPLOYED SINCE FOUR NOVEMBER (ST0255) +ARE THERE ANY SHIPS THAT HAVEN+T REPORTED A PROBLEM WITH TRAINING SINCE SEVEN APRIL (ST0256) +HOW MANY SUBMARINES CHOPPED TO PACIFIC FLEET FROM ATLANTIC FLEET IN NINETEEN EIGHTY FOUR (ST0257) +WHAT THREE PERSIAN SEA SHIPS WENT TO M1 ON ASW SINCE SIX MAY (ST0258) +HOW MANY SUBS ARE THERE IN SAN-DIEGO (ST0259) +WERE THERE ANY VESSELS IN THE ARABIAN SEA ON FIVE FEBRUARY (ST0260) +ARE THERE NO SHIPS THAT ARE IN THE MOZAMBIQUE CHANNEL (ST0261) +HOW MANY FRIGATES ARE CURRENTLY IN HOME PORT (ST0262) +WERE THERE NO CRUISERS IN EASTPAC DECEMBER ONE (ST0263) +HOW MANY CARRIERS WERE DEPLOYED AS OF TWO AUGUST (ST0264) +DO ANY SHIPS IN MIDPAC HAVE AN M2 AAW MISSION AREA (ST0265) +ARE THERE MORE THAN EIGHT SUBMARINES THAT ARE IN WESTPAC (ST0266) +DELETE MISSIONS (ST0267) +HOW MANY SHIPS ARE NOT NTDS CAPABLE (ST0268) +DISPLAY THE LAST NINE LATITUDES AND LONGITUDES FOR THE MERCURY (ST0269) +HOW MANY SUBS WERE IN ATLANTIC OCEAN ON DECEMBER SEVEN (ST0270) +ARE ANY PROBLEMS REPORTED BY METEOR DATED TWENTY SECOND MARCH (ST0271) +DRAW THE LAST THREE POSITIONS FOR TRACKS OF CARRIERS THAT ARE LINK-11 CAPABLE (ST0272) +HOW MANY VESSELS IN CHINA SEA HAVE ASUW M-RATINGS LOWER THAN M3 (ST0273) +WILL ANY TFCC CAPABLE SHIPS BE IN THE SOUTH SIBERIAN SEA BY FRIDAY (ST0274) +HOW MANY FRIGATES WERE IN GULF OF TONKIN ON JULY TWENTY FOURTH (ST0275) +WERE THERE MORE THAN EIGHTY FIVE VESSELS AT SEA ON THIRTY FIRST OF OCTOBER (ST0276) +HOW MANY TASM CAPABLE CARRIERS ARE IN SEA OF JAPAN (ST0277) +SHOW THE LAST TWO LOCATIONS FOR TRACKS OF CARRIERS WHOSE PERSONNEL READINESS IS C3 (ST0278) +HOW MANY SHIPS ARE C4 (ST0279) +WERE THERE MORE THAN EIGHT SUBMARINES EMPLOYED IN EIGHTY TWO (ST0280) +HOW MANY T-LAM SHIPS HAVE BEEN DEPLOYED SINCE FOUR JUNE (ST0281) +ARE THERE MORE THAN NINE SUBS THAT ARE IN SUBIC BAY (ST0282) +WERE THERE MORE THAN FIFTEEN PACIFIC FLEET VESSELS EMPLOYED IN NINETEEN EIGHTY THREE (ST0283) +HOW MANY SLQ-32 SHIPS ARE IN THE FORMOSA STRAIT (ST0284) +ARE THERE MORE THAN FIFTY FRIGATES AT SEA (ST0285) +CHANGE AREA ALERT PAC (ST0286) +IS THERE MORE THAN ONE SPS-40 CAPABLE FRIGATE IN GULF OF CALIFORNIA (ST0287) +REDEFINE AREA ALERT BUMP (ST0288) +HOW MANY LAMPS CRUISERS IN MIAMI HAVE REPORTED PROBLEMS WITH EQUIPMENT (ST0289) +IS THERE MORE THAN ONE SPS-48 CAPABLE CRUISER IN PORT (ST0290) +REVIEW THE LAST SIX ALERTS (ST0291) +ARE THERE MORE THAN FOUR CARRIERS THAT ARE IN PORT TODAY (ST0292) +HOW MANY HARPOON CAPABLE SHIPS ARE THERE (ST0293) +WAS THERE MORE THAN ONE CARRIER IN PHILIPPINE SEA ON SEVEN SEPTEMBER (ST0294) +WHICH OF MIDPAC+S SUBMARINES ARE M4 OR HIGHER ON MOB (ST0295) +CLEAR DISPLAY WINDOW (ST0296) +SET TIME WINDOW TO START AT THE PRESENT TIME AND END AT SEVENTEEN HUNDRED HOURS (ST0297) +DISPLAY CHART WITH LETTER SIZE INCREASED BY ONE (ST0298) +ARE THERE ANY CATEGORY THREE CASUALTY REPORTS FOR ANY OF THE SHIPS IN KOREAN BAY (ST0299) +WHAT IS THE LATEST DEPLOYMENT DATE FOR MIDGETT (ST0300) +IS THERE A GULF OF THAILAND SHIP RATED M5 ON MIW (ST0301) +DRAW THE TRACK OF MISHAWAKA (ST0302) +WHAT+S THE DESTINATION OF MONTICELLO (ST0303) +WHICH OF WESTPAC+S SUBS ARE C5 (ST0304) +SHOW TRACK OF NASHUA SINCE FOURTEEN JANUARY (ST0305) +WHAT IS THE NAME OF THE SUBMARINE IN THE YELLOW SEA (ST0306) +WHICH VESSELS HAVE A C1 TRAINING RESOURCE RATING (ST0307) +DISPLAY A NEW CHART PROJECTION OF PACIFIC OCEAN (ST0308) +REDRAW THE SAME CHART WITH DATA SCREEN CLEARED (ST0309) +WHAT IS THE DESTINATION ARRIVAL HOUR FOR PEORIA (ST0310) +SET THE UNIT OF MEASURE SWITCH TO ENGLISH (ST0311) +CAN PIGEON GET TO HER DESTINATION BY SUNDAY (ST0312) +WHAT+S THE LAT AND LONG OF PLUCK (ST0313) +DRAW TRACKS OF SHIPS THAT ARE IN THE CORAL SEA (ST0314) +WHAT FRIGATES WERE IN WEST BISMARK SEA ON TWELVE NOVEMBER (ST0315) +CLEAR SCREEN (ST0316) +ARE SATURDAY+S PROBLEMS WORSE THAN WEDNESDAY+S FOR YORKTOWN (ST0317) +INCREASE LETTER SIZE TO THE MAX VALUE AND REDRAW (ST0318) +HOW LONG WOULD IT TAKE POUGHKEEPSIE TO GET FROM NAPLES TO WILLAMETTE+S CURRENT LATITUDE (ST0319) +DEFINE A MISSION (ST0320) +SHOW THE SAME CHART WITH TIME STARTED AT NINETEEN HUNDRED ZULU (ST0321) +REDISPLAY OVERLAY BARGE TURNING OFF GROUPS (ST0322) +RESET DMDS SWITCHES TO DEFAULTS (ST0323) +HOW LONG IS IT GOING TO TAKE PRAIRIE TO GET TO WHERE SHE+S GOING (ST0324) +DISPLAY A NEW CHART PROJECTION USING MERCATOR (ST0325) +WILL THE RECLAIMER BE IN PORT BY TWENTY TWO HUNDRED HOURS (ST0326) +SET PARAMETERS TO DEFAULTS (ST0327) +WILL WINAMAC+S C2 SUPPLIES PROBLEM BE FIXED BY SIXTEEN APRIL (ST0328) +SET SWITCHES TO THEIR DEFAULTS (ST0329) +HOW LONG WOULD IT TAKE DALE TO GET TO THIRTY THREE NORTH SIX EAST (ST0330) +WHAT IS THE MIDWAY+S FUEL LEVEL (ST0331) +SET LETTER SIZE TO TWO (ST0332) +DRAW A CHART OF BRITISH SOLOMON ISLANDS USING STEREOGRAPHIC PROJECTION (ST0333) +IS PRESENT SPEED OF TICONDEROGA GREATER THAN ELEVEN KNOTS (ST0334) +SET THE COLOR OF HOOKED TRACK TO BRIGHT RED (ST0335) +HOW MUCH FUEL IS ABOARD SACRAMENTO (ST0336) +WILL SASSAFRAS CHOP TO LANTFLT BY TWENTY THREE HUNDRED HOURS ON TUESDAY (ST0337) +SHOW TRACK OF THE SCHENECTADY CLEARING OVERLAYS (ST0338) +WHAT REMARKS ARE THERE ON CONSTELLATION+S LAST CASUALTY REPORT (ST0339) +HAS SHASTA ARRIVED AT KODIAK YET (ST0340) +DISPLAY A NEW CHART USING TRUE-VIEW (ST0341) +SET CHART SWITCHES TO DEFAULTS (ST0342) +WHEN IS THE ESTIMATED TIME OF ARRIVAL IN HOME PORT FOR THE SHERMAN (ST0343) +DRAW A CHART OF ROSS SEA (ST0344) +CLEAR DISPLAY (ST0345) +HOW LONG WOULD IT TAKE TRIPOLI TO GET TO TOKYO AT HER MAXIMUM SPEED (ST0346) +SHOW ME A CHART OF EAST AND WEST CANADA (ST0347) +DISPLAY THE NAME OF HOOKED PORT (ST0348) +HOW LONG WOULD IT TAKE THE TUSCALOOSA TO GET TO HIS DESTINATION AT FORTY KNOTS (ST0349) +WHAT IS THE AVERAGE OF CURRENT SPEEDS FOR CRUISERS IN SOLOMON SEA (ST0350) +WHAT CARRIERS ARE IN ARCTIC OCEAN (ST0351) +DISPLAY A CHART OF BERING SEA WITH THE TIME WINDOW FROM TWENTY FOUR HUNDRED TO EIGHTEEN HUNDRED HOURS ZULU (ST0352) +WHAT SHIPS WERE AT SEA ON THIRTEEN MAY (ST0353) +WHAT+S THE LONGITUDE OF THE SUB CLOSEST TO SEVENTY FIVE NORTH TWO EAST (ST0354) +WHICH SUBMARINES ARE IN PEARL HARBOR (ST0355) +REVIEW THE LAST ALERT FOR VANCOUVER (ST0356) +CLEAR ALL WINDOWS (ST0357) +WHAT IS RANGER+S AVERAGE DISPLACEMENT IN LONG TONS (ST0358) +IS ARKANSAS+S MOST RECENT CASUALTY REPORT RATED WORSE THAN HERS (ST0359) +FIND THE ALERTS (ST0360) +SHOW ENTERPRISE+S CASUALTY REPORTS FROM THE LAST EIGHT MONTHS (ST0361) +SHOW TEXAS+S HOME PORT (ST0362) +DRAW ENGLAND+S LAST NINE SONAR SENSOR LATITUDES AND LONGITUDES (ST0363) +IS FOX+S REMAINING FUEL INSUFFICIENT TO ARRIVE IN PORT AT THE CURRENT SPEED (ST0364) +GIVE GRIDLEY+S GROSS DISPLACEMENT AND CAPABILITIES (ST0365) +SHOW ME HORNE+S TRACK IN DIM ORANGE WITH REEVES+S IN BRIGHT GREEN (ST0366) +IS STERETT+S FUEL CAPACITY LESS THAN THE FLASHER+S (ST0367) +WHAT IF GUARDFISH+S AVERAGE SPEED WERE DECREASED BY SEVEN KNOTS (ST0368) +WHAT IS GUITARRO+S ETA AT HOMER (ST0369) +WHAT+S HAWKBILL+S FLEET IDENTIFICATION (ST0370) +DISPLAY PLUNGER+S TRACK WITH THE OVERLAY NOVA (ST0371) +LIST POLLACK+S OVERALL RESOURCE READINESS (ST0372) +DRAW PUFFER+S POSITION ON FIFTEEN FEBRUARY AND HER VARIOUS CAPABILITIES (ST0373) +IS QUEENFISH+S LOCATION CLOSER TO ICE-NINE THAN SEAWOLF+S LATITUDE AND LONGITUDE IS (ST0374) +WHERE IS THE SWORDFISH+S HOME PORT (ST0375) +IS BADGER+S LAST LAT-LON WITHIN A MILE OF CHESHIRE (ST0376) +SUMMARIZE BROOKE+S RATINGS (ST0377) +WHAT IS COPELAND+S FUEL LEVEL AND FUEL CAPACITY (ST0378) +SHOW DAVIDSON+S VISUAL POSITIONS USING BUD-TEST (ST0379) +WHAT IS THE DOWNES+S POSITION NOW (ST0380) +DISPLAY FANNING+S TRACK IN DIM YELLOW WITH LOW RESOLUTION (ST0381) +GET HEPBURN+S PERCENT FUEL ABOARD AND ITS PRESENT LOCATION (ST0382) +DRAW JARRETT+S LATITUDE AND LONGITUDE WITH OVERLAYS SAN-FRAN AND PUGET-1 (ST0383) +IS LOCKWOOD+S DESTINATION THE SAME AS THE MCCLUSKY+S (ST0384) +FIND RAMSEY+S AND RATHBURNE+S ECONOMIC SPEED (ST0385) +IS REASONER+S LATEST LATITUDE NEARER TO SAMPLE+S THAN TO THE VANDERGRIFT+S (ST0386) +IS WADSWORTH+S MAXIMUM DRAFT LARGER THAN WHIPPLE+S (ST0387) +WHAT IF AJAX+S PROPULSION TYPE WAS DIESEL INSTEAD OF CODAG (ST0388) +SHOW APALACHICOLA+S CAT-2 PROBLEMS FOR THE LAST NINETY WEEKS (ST0389) +IS BRUNSWICK+S HFDF SENSOR LAT AND LON DATA NEWER THAN THE SONAR DATA (ST0390) +GIVE ME CAMDEN+S CASREPS FROM LAST WEEK (ST0391) +IS CAMPBELL+S BEAM AND LENGTH GREATER THAN CHATTAHOOCHEE+S (ST0392) +LIST CITRUS+S PROPULSION TYPE AND FUEL CAPACITY (ST0393) +WHAT+S THE CLEVELAND+S CURRENT READINESS (ST0394) +IS CONIFER+S DISTANCE FROM WABASH MORE THAN TWENTY THREE KILOMETERS (ST0395) +DISPLAY CONFIDENCE+S PRESENT OVERALL READINESS (ST0396) +GET KENNEDY+S ALERTS (ST0397) +FIND THE INDEPENDENCE+S OVERALL READINESS (ST0398) +IS EISENHOWER+S BEAM SMALLER THAN MISSISSIPPI+S (ST0399) +SHOW GRILL (ST0400) +DISPLAY VIRGINIA+S DISPLACEMENT IN METRIC TONS (ST0401) +WHAT IS BIDDLE+S DESTINATION (ST0402) +SHOW THE CONQUEST+S POSITION SEVENTEEN AUGUST OF EIGHTY SIX (ST0403) +IS CONSTANT+S LAST LOCATION CLOSER THAN DENVER+S TO PAC ALERT (ST0404) +DISPLAY DIXON+S LATEST LATITUDE AND LONGITUDE IN BRIGHT ORANGE WITH NTDS ON (ST0405) +IS THE DUBUQUE+S LENGTH LESS THAN THAT OF WASP (ST0406) +WHAT IS ESTEEM+S ASW MISSION STATUS (ST0407) +SHOW ME FIREBUSH+S VARIOUS RESOURCE RATINGS (ST0408) +DRAW FLINT+S LAST FIVE LOCATIONS AND THEIR SENSORS (ST0409) +IS THE FREDERICK+S CURRENT SPEED SLOWER THAN FRESNO+S (ST0410) +SHOW GLACIER+S TRACK WITHOUT OVERLAY (ST0411) +SHOW HECTOR+S EARLIEST CASUALTY REPORT DATE AND FULL POSITION DATA (ST0412) +WHAT+S THE IRONWOOD+S PRESENT LOCATION AND ESTIMATED TIME OF ARRIVAL AT OLYMPIA (ST0413) +IS JARVIS+S MAXIMUM SUSTAINED SPEED GREATER THAN TWENTY TWO KNOTS (ST0414) +GIVE JASON+S CASUALTY REPORTS FOR THE LAST EIGHT MONTHS (ST0415) +IS JUPITER+S PERSONNEL RATING LESS THAN KIRK+S (ST0416) +IS THE KISKA+S ARRIVAL HOUR EARLIER THAN MANHATTAN+S (ST0417) +WHAT IS MARS+S DISTANCE FROM WICHITA (ST0418) +IS MERCURY+S LAST LATITUDE AND LONGITUDE IN THE BERING STRAIT (ST0419) +IS METEOR+S AVERAGE DISPLACEMENT GREATER THAN THAT OF WILLAMETTE (ST0420) +DISPLAY MIDGETT+S POSITION USING OVERLAY YANKEE (ST0421) +DISPLAY MISHAWAKA+S AAW READINESS (ST0422) +IS THE MONTICELLO+S REMAINING FUEL LESS THAN NASHUA+S (ST0423) +WHAT WAS PEORIA+S LOCATION AND ASUW AREA MISSION CODE JULY ONE (ST0424) +IS PIGEON+S TEST DEPTH GREATER THAN PLUCK+S (ST0425) +IS THE YORKTOWN+S MOB AREA M-RATING BELOW POUGHKEEPSIE+S (ST0426) +WHICH OF PRAIRIE+S MISSION AREAS ARE M2 OR LOWER (ST0427) +IS RECLAIMER+S AVERAGE CRUISING SPEED LESS THAN DALE+S (ST0428) +DRAW THE TICONDEROGA+S LAST FOUR LATITUDES AND LONGITUDES IN DATA WINDOW (ST0429) +LIST SACRAMENTO+S AND SASSAFRAS+S ARRIVAL TIMES (ST0430) +IS SCHENECTADY+S MAX DRAFT LARGER THAN THE SHASTA+S (ST0431) +GET SHERMAN+S OVERALL C-RATING AND LATITUDE AND LONGITUDE (ST0432) +IS TRIPOLI+S PROPULSION TYPE THE SAME AS TUSCALOOSA+S (ST0433) +FIND ME THE EQUIPMENT READINESS FOR WINAMAC (ST0434) +SHOW THE TRAINING RESOURCE RATING FOR THE MIDWAY (ST0435) +IS VANCOUVER+S POSIT SOUTH OF WABASH+S (ST0436) +GIVE SUPPLIES C-CODE AND LAST POSITION DATE FOR ANY VESSEL IN BANGKOK AFTER FOURTEEN DECEMBER (ST0437) +LIST THE OVERALL READINESS OF CONSTELLATION MARCH TWELVE (ST0438) +IS THE WASP+S LAST LOCATION CLOSER THAN WICHITA+S TO OSGP (ST0439) +GET THE PERSONNEL READINESS OF RANGER (ST0440) +WHAT ARE WILLAMETTE+S FIVE WORST PROBLEMS (ST0441) +FIND SUBS THAT WERE IN MANILA ON THE TWENTY EIGHTH JULY (ST0442) +SHOW ME THE PREVIOUS EQUIPMENT READINESS OF ARKANSAS (ST0443) +WHAT ARE WINAMAC+S CAPABILITIES (ST0444) +WHAT WAS MIDWAY+S LAST REPORTED LATITUDE AND LONGITUDE (ST0445) +GIVE VESSELS THAT ARE C3 ON TRAINING (ST0446) +DON+T END THE TIME WINDOW UNTIL NINETEEN HUNDRED HOURS (ST0447) +SHOW THE SUPPLIES RESOURCE RATING ON BAINBRIDGE (ST0448) +GET RESOURCE AREA RATINGS FOR ENTERPRISE (ST0449) +WHAT IS THE TEXAS AND THE CONSTELLATION+S MAX SPEED (ST0450) +FIND SPEEDS AVAILABLE FOR ENGLAND AND FOX (ST0451) +WHO HAS THE MOST FUEL LEFT (ST0452) +GIVE ME A LIST OF ALL MISSION AREA RATINGS FOR THE GRIDLEY (ST0453) +SHOW ON DATA SCREEN RANGER+S TRACK SINCE OCTOBER THIRTEENTH (ST0454) +DISPLAY ONLY THE RADAR SENSOR POSITIONS AVAILABLE ON HORNE (ST0455) +WHAT IF THE REEVES REPLACED STERETT IN INDIAN OCEAN (ST0456) +WHEN IS FLASHER ARRIVING IN PORT (ST0457) +WHAT WAS ARKANSAS+S READINESS THE TWENTY NINTH OF JUNE (ST0458) +SHOW TACAN CAPABLE SHIPS AT SEA (ST0459) +GIVE FRIGATES THAT WERE DEPLOYED ON SIXTEEN SEPTEMBER (ST0460) +WHAT IF GUARDFISH INCREASED HER MAXIMUM SPEED BY ONE KNOT (ST0461) +LIST C-CODES FOR THE GUITARRO (ST0462) +GET SPEEDS FOR CRUISERS IN BASS STRAIT (ST0463) +WHEN+S HAWKBILL DUE IN PORT (ST0464) +START EDITING THE POSITION DATA FOR BAINBRIDGE+S TRACK (ST0465) +WHO HAD THE HIGHEST AVERAGE C-RATING DURING LAST YEAR (ST0466) +WHEN IS PLUNGER CHANGING FLEETS (ST0467) +FIND AREAS (ST0468) +NEVER MIND NEXT CHART DISPLAY (ST0469) +SHOW ME ALL SPEEDS OF C4 CARRIERS (ST0470) +REVIEW THE YELLOW SEA AREA ALERTS (ST0471) +WHAT+S ENTERPRISE+S PROPULSION (ST0472) +GIVE THE PACIFIC FLEET SHIPS THAT ARE C5 ON EQUIPMENT (ST0473) +LIST LOCATIONS AND SPEEDS FOR SUBMARINES THAT ARE IN WEST PERSIAN SEA (ST0474) +GET LATITUDES AND LONGITUDES AND NAMES OF SHIPS IN THE ARABIAN SEA (ST0475) +FIND POSITIONS OF TRACKS THAT ARE IN MOZAMBIQUE CHANNEL (ST0476) +SHOW LOCATIONS FOR SUBS IN EASTPAC THAT WENT TO C1 ON ELEVEN JANUARY (ST0477) +GIVE ME LATITUDES AND LONGITUDES OF TRACKS FOR ALL USN CARRIERS (ST0478) +LIST THE POSITIONS AND NAMES OF ANY OF EASTPAC+S SHIPS THAT WERE IN MIDPAC ON TWENTY SIX NOVEMBER (ST0479) +GET THE CRUISER+S LOCATIONS FOR APRIL (ST0480) +WHAT IS THE CARRIER+S HOME PORT (ST0481) +FIND TEXAS+S LATITUDES AND LONGITUDES FOR THE LAST MONTH (ST0482) +SHOW POSITS OF FRIGATES THAT ARE IN WESTPAC (ST0483) +ARE ANY FRIGATES+S PERSONNEL RATINGS HIGHER THAN ENGLAND+S (ST0484) +IS POLLACK WITHIN EIGHTEEN MILES OF SIXTY DEGREES THIRTY FOUR MINUTES NORTH AND SEVEN DEGREES THIRTEEN MINUTES EAST (ST0485) +DIDN+T THE FLASHER ARRIVE AT WELLINGTON YESTERDAY (ST0486) +IS THE PUFFER THE FASTEST SHIP IN PACIFIC FLEET (ST0487) +WHY DID QUEENFISH CHANGE EQUIPMENT READINESS TWENTY THREE MAY (ST0488) +IS SEAWOLF IN ATLANTIC OCEAN (ST0489) +ISN+T SWORDFISH IN THE CHINA SEA (ST0490) +IS BADGER GOING TO BE IN GALVESTON MONDAY (ST0491) +WHEN IS BROOKE EXPECTED TO UPGRADE (ST0492) +IS COPELAND FARTHER FROM SIDNEY THAN THE DAVIDSON (ST0493) +IS DOWNES WITHIN A KILOMETER OF LENINGRAD (ST0494) +WHERE ARE FANNING AND HEPBURN ENROUTE TO (ST0495) +IS THERE A FRIGATE IN GULF OF TONKIN WITH SQQ-23 (ST0496) +IS THE JARRETT EQUIPPED WITH NTDS (ST0497) +WHEN+S LOCKWOOD SUPPOSED TO BE IN PORT (ST0498) +IS MCCLUSKY NUCLEAR OR STEAM (ST0499) +WHEN WILL RAMSEY CHOP FROM PACIFIC FLEET TO ATLANTIC FLEET (ST0500) +IS RATHBURNE LOCATED IN WELLINGTON OR ABERDEEN (ST0501) +WHAT IF SHE HAD FOX+S CAPABILITIES (ST0502) +IS SAMPLE AT THREE QUARTERS FUEL CAPACITY OR LESS (ST0503) +WHERE IS VANDERGRIFT DEPLOYED (ST0504) +DOES WADSWORTH HAVE ANY M2 RATINGS (ST0505) +IS THE WHIPPLE POWERED BY GAS TURBINE (ST0506) +WHAT IF AJAX HAD GRIDLEY+S CASUALTY REPORTS (ST0507) +IS APALACHICOLA CLOSER TO THE BRUNSWICK THAN THE CAMDEN (ST0508) +IS CAMPBELL AT MORE THAN ONE QUARTER HER FUEL CAPACITY (ST0509) +WHY+S CHATTAHOOCHEE REPORTING C2 (ST0510) +IS CITRUS MORE THAN EIGHTY KILOMETERS FROM CLEVELAND (ST0511) +WAS THE CONIFER IN HOME PORT ON TWENTY SIX FEBRUARY (ST0512) +IS CONFIDENCE DIESEL POWERED (ST0513) +IS KENNEDY MORE THAN A MILE FROM INDEPENDENCE (ST0514) +LIST TOMORROW+S ESTIMATED TIME OF ARRIVAL FOR EISENHOWER (ST0515) +EDIT THE SEA OF JAPAN AREA ALERT (ST0516) +SHOW ME THE FORMOSA STRAIT THREAT (ST0517) +FIND GULF OF CALIFORNIA CRUISERS THAT ARE C3 (ST0518) +HOW MANY IN WEST PHILIPPINE SEA HAVE MORE THAN HALF THEIR FUEL LEFT (ST0519) +WHAT CARRIERS THAT ARE IN KOREAN BAY HAVE FUEL CAPACITY GREATER THAN FIVE THOUSAND GALLONS (ST0520) +SHOW THE BUMP AREA THREATS (ST0521) +HAS HORNE+S MIW MISSION AREA GONE TO M3 BEFORE TWENTY TWO AUGUST (ST0522) +GIVE THE ASW RATING FOR MISSISSIPPI (ST0523) +LIST MAXIMUM SPEEDS FOR SHIPS IN MANCHESTER (ST0524) +WHAT IS THE AAW RATING OF THE VIRGINIA (ST0525) +GET ASUW READINESS OF BIDDLE ON TWENTY EIGHT DECEMBER (ST0526) +ADD AN AREA (ST0527) +WHAT TRAINING PROBLEM WAS REPORTED BY CONQUEST LAST MONTH (ST0528) +FIND ME MOB RATING CODES FOR ALL THE SUBMARINES THAT ARE IN GULF OF THAILAND (ST0529) +SHOW SENSORS (ST0530) +SHOW THE AVERAGE SPEED FOR SHIPS IN YELLOW SEA (ST0531) +HOW MANY YEARS HAS CONSTANT BEEN EMPLOYED (ST0532) +WHICH OF THEM HAS THE LEAST REMAINING FUEL (ST0533) +DISPLAY THE SAME CHART INCREASING LETTER SIZE TO THE MAXIMUM VALUE (ST0534) +WHAT SUBS CARRY LINK-11 (ST0535) +DOES DENVER HAVE BOTH TFCC AND TASM (ST0536) +WILL REEVES+S CAT-3 CASUALTY REPORT BE FIXED BY SATURDAY (ST0537) +DRAW WESTERN CORAL SEA ISLANDS WITH BOX (ST0538) +DOES DIXON HAVE SUFFICIENT FUEL TO GET TO OAKLAND (ST0539) +USE DIM RED FOR TRACK ECG041 (ST0540) +DISPLAY THE ECONOMIC SPEED AND LOCATION OF THE DUBUQUE (ST0541) +USE BRIGHT YELLOW FOR TRACKS OF NUCLEAR SURFACE SHIPS (ST0542) +GIVE THEIR MAXIMUM SUSTAINED SPEEDS AND WHERE THEY ARE ENROUTE TO (ST0543) +LIST THE LATEST DATE ON STERETT+S SUPPLIES PROBLEMS (ST0544) +SHOW THE AVERAGE CRUISING SPEED FOR ESTEEM (ST0545) +GET ME THE LAST DATE ON FLASHER+S CAT-4 EQUIPMENT CASUALTY REPORTS (ST0546) +WON+T FIREBUSH BE UPGRADED ON PERSONNEL FROM C4 TO C5 BY TWENTY NINE MARCH (ST0547) +DO THE GUARDFISH+S ALERTS INCLUDE ICE-NINE (ST0548) +DISPLAY THE MAX SPEED OF FLINT (ST0549) +DO GUITARRO+S CAPABILITIES INCLUDE T-LAM (ST0550) +SHOW THE SEVEN VESSELS THAT ARE IN PACIFIC OCEAN WITH THE GREATEST FUEL CAPACITY (ST0551) +WHAT+S THE MAXIMUM SPEED AND CURRENT SPEED OF THE FREDERICK (ST0552) +DISPLAY THE THREE SHIPS IN CORAL SEA WITH THE LARGEST FUEL CAPACITIES (ST0553) +HOW MUCH DOES INCLUDING MONDAY+S DATA CHANGE THAT FIGURE (ST0554) +FIND MISSIONS EDITED TODAY (ST0555) +WHAT IS THE AVERAGE SPEED AND CROVL OF FRESNO (ST0556) +IS SLQ-32 INSTALLED ABOARD THE GLACIER (ST0557) +GIVE ME A LIST OF GROSS DISPLACEMENTS FOR FRIGATES THAT ARE IN BISMARK SEA (ST0558) +WHAT IF NUCLEAR CRUISERS WERE NOT COUNTED (ST0559) +TOTAL THE STEAM POWERED CARRIERS IN ROSS SEA (ST0560) +SHOW THE ECONOMIC SPEED AND FUEL CAPACITY FOR THIS CRUISER (ST0561) +GET A LIST OF THE AVERAGE DISPLACEMENT OF SHIPS THAT ARE SPS-40 CAPABLE (ST0562) +SHOW ME MAXIMUM SUSTAINED SPEEDS AND CAPABILITIES OF SUBMARINES IN SOUTH SOLOMON SEA (ST0563) +GIVE CURRENT EQUIPMENT READINESS OF THE HECTOR (ST0564) +WHAT IS THE AVERAGE TRAINING RATING CODE FOR USN SHIPS THAT ARE IN ARCTIC OCEAN (ST0565) +WILL HAWKBILL+S MOST RECENT CASREP BE REPAIRED BY THURSDAY (ST0566) +SHOW SUPPLIES READINESS OF IRONWOOD AUGUST ONE (ST0567) +WHEN WILL THE PLUNGER+S LATEST CASREPED EQUIPMENT PROBLEM BE FIXED (ST0568) +GET LAST MONTH+S PROBLEMS FOR JARVIS (ST0569) +DISPLAY OVERLAYS (ST0570) +ARE THERE ANY CASREPS FOR JASON THAT AFFECT MISSION AREAS (ST0571) +WHAT ARE THE OPEN CASUALTY REPORTS ON THE JUPITER (ST0572) +FIND LAST WEEK+S PROBLEMS FROM KIRK (ST0573) +WAS POLLACK+S LAST UPDATE ON WEDNESDAY (ST0574) +WHEN+LL KISKA NEXT CHANGE FLEETS (ST0575) +WHAT+S THE DISTANCE FROM NEWCASTLE TO MANHATTAN (ST0576) +WHAT IS THE TOTAL FUEL ABOARD THE MARS (ST0577) +SHOW PERCENT FUEL ABOARD MERCURY (ST0578) +GIVE ME MIDPAC+S DEPLOYMENTS DURING TWENTY FIVE JULY (ST0579) +DRAW TRACKS THAT ARE IN THE HOOKED PORT (ST0580) +HOW FAR IS THE METEOR FROM THE MIDGETT (ST0581) +SHOW LAT-LONS FOR HOOKED TRACK WITH SYSTEM PARAMETERS SET TO DEFAULT VALUES (ST0582) +WHAT FRIGATES IN BERING SEA HAVE BOTH LAMPS AND SPS-48 (ST0583) +WHAT IS THE DISTANCE FROM THE MISHAWAKA TO THE MONTICELLO (ST0584) +WHAT SENSOR IS PUFFER+S LAST LATITUDE AND LONGITUDE FROM (ST0585) +WAS NASHUA IN GULF OF ALASKA YESTERDAY (ST0586) +DOES THE PEORIA HAVE LOWEST FUEL CAPACITY OF VESSELS THAT ARE IN BERING STRAIT (ST0587) +WHAT PORT IS PIGEON IN (ST0588) +WHAT SHIPS IN INDIAN OCEAN HAVE HARPOON INSTALLED (ST0589) +WHO+S CLOSEST TO THE PLUCK (ST0590) +HOW FAR IS QUEENFISH+S LAST POSITION FROM CHESHIRE (ST0591) +WHO IS IN BASS STRAIT (ST0592) +HOW CLOSE IS SEAWOLF+S LAST LOCATION TO FIFTY TWO DEGREES NORTH EIGHT DEGREES EAST (ST0593) +WHICH CARRIER IN PERSIAN SEA IS FARTHEST FROM THE YORKTOWN (ST0594) +COUNT THE NUMBER OF TACAN FRIGATES THAT ARE C1 (ST0595) +WHICH CRUISERS IN ARABIAN SEA HAVE AN SQQ-23 CAPABILITY (ST0596) +HOW MANY OF SWORDFISH+S POSITIONS ARE IN MOZAMBIQUE CHANNEL (ST0597) +CENTER IT AROUND THE INDIAN OCEAN (ST0598) +DOES POUGHKEEPSIE HAVE GREATEST FUEL CAPACITY OF ALL MIDPAC CARRIERS (ST0599) +HOW NEAR IS PRAIRIE TO IT (ST0600) +THE BADGER+S DISTANCE FROM RECLAIMER (ST0601) +HOW OLD IS BROOKE+S OLDEST CASUALTY REPORT (ST0602) +IS ANYBODY IN WESTPAC NTDS CAPABLE (ST0603) +WHICH SHIP HAS THE SMALLEST DISPLACEMENT (ST0604) +WHAT CAPABILITIES DOES DALE HAVE (ST0605) +HOW BAD IS THE COPELAND+S MOST RECENT CASUALTY REPORT (ST0606) +WHICH SHIPS IN SOUTH ATLANTIC OCEAN ARE LINK-11 EQUIPPED (ST0607) +WHAT RATING HAS TICONDEROGA DEGRADED TO ON OVERALL READINESS (ST0608) +WAS SACRAMENTO IN CHINA SEA OCTOBER TWENTY FOUR (ST0609) +HOW LARGE IS THE DAVIDSON+S FUEL CAPACITY (ST0610) +LIST ALL THE ALERTS (ST0611) +SET DMDS SWITCHES TO THEIR DEFAULT VALUES (ST0612) +DOES SASSAFRAS HAVE THE LARGEST FUEL CAPACITY OF ALL SIBERIAN SEA SUBMARINES (ST0613) +DISPLAY THE SUBMARINE CLOSEST TO THE SCHENECTADY (ST0614) +TOGGLE POSIT DISPLAY PARAMETER (ST0615) +SET CHART SWITCH RESOLUTION TO HIGH (ST0616) +DOES SHASTA HAVE ENOUGH FUEL TO ARRIVE AT HER DESTINATION (ST0617) +TURN THE RESOLUTION SWITCH ON (ST0618) +GET THE VARIOUS CAPABILITIES FOR GAS TURBINE SHIPS IN THE GULF OF TONKIN (ST0619) +CLEAR ALL CHARTS (ST0620) +FIND LOCATIONS AND C-RATINGS FOR ALL OF WESTPAC+S SUBS THAT WERE IN THEIR HOME PORTS ON THE SECOND OF JUNE (ST0621) +SHOW THE VARIOUS C-RATINGS FOR SHERMAN (ST0622) +WILL THE TRIPOLI BE CHOPPING TO ATLANTIC FLEET TODAY (ST0623) +WHAT IF THE MIW MISSION AREA RATING OF TUSCALOOSA WERE M4 UNTIL TEN HUNDRED (ST0624) +GIVE ME LATITUDES AND LONGITUDES AND M-RATINGS FOR ALL OF EASTPAC+S VESSELS THAT WERE IN THEIR HOME PORTS ON SEPTEMBER FIFTEENTH (ST0625) +WHAT+S THE AVERAGE ASW RATING M-CODE FOR USN C2 SHIPS THAT ARE IN SEA OF JAPAN (ST0626) +SHOW THE NEW DEFINITIONS INVOLVING VANCOUVER (ST0627) +DISPLAY THE FUEL CAPACITY AND PROPULSION TYPE FOR WABASH (ST0628) +WHAT IS THE FUEL CAPACITY IN TONS FOR WASP (ST0629) +HOW MANY FEET LONG IS THE WICHITA (ST0630) +HOW SOON WILL WILLAMETTE NEXT CHOP TO ATLANTIC FLEET FROM PACIFIC FLEET (ST0631) +RESET THE SWITCHES TO DEFAULTS (ST0632) +LIST THE SAME INFORMATION FOR WINAMAC (ST0633) +DRAW TRACK DDD992 IN DIM GREEN (ST0634) +WHAT SUB IN ALEXANDRIA IS M5 OR LOWER ON AAW (ST0635) +HOW SLOW WOULD THE MIDWAY HAVE TO GO TO GET TO TOWNSVILLE ON HIS REMAINING FUEL (ST0636) +WHAT TIME WILL CONSTELLATION ARRIVE AT HER DESTINATION (ST0637) +HOW SOON CAN RANGER GET TO WITHIN FIFTEEN MILES OF ARKANSAS (ST0638) +SHOW CHART OF THE FORMOSA STRAIT USING MERCATOR PROJECTION (ST0639) +HOW LONG BEFORE BAINBRIDGE WILL BE IN GULF OF CALIFORNIA (ST0640) +AREN+T ENTERPRISE AND THE TEXAS IN THE PHILIPPINE SEA TODAY (ST0641) +HOW SOON CAN ENGLAND GO FROM KOREAN BAY TO GULF OF THAILAND (ST0642) +WHAT IS THE NAME AND ETA AT NOME OF THE VESSEL IN THE YELLOW SEA (ST0643) +HOW EARLY CAN FOX BE THERE (ST0644) +WHAT+S THE DATE AND HOUR OF ARRIVAL IN PORT FOR GRIDLEY (ST0645) +GET LENGTH AND BEAM OF HORNE IN METERS AND FEET (ST0646) +HOW FAST COULD THE REEVES GET TO SEVENTY SOUTH TWENTY NINE EAST (ST0647) +FIND CROVLS AND TRACKS FOR TFCC FRIGATES IN NORTH PACIFIC OCEAN (ST0648) +SHOW ME THE C-CODE AND LAST POSITION DATE FOR ANY SHIP IN CORAL SEA AFTER THE TWENTY SEVENTH OF JANUARY (ST0649) +REDEFINE AREA PAC (ST0650) +GIVE THE NAMES AND RESOURCES OF CRUISERS THAT ARE IN BISMARK SEA (ST0651) +LIST BEAMS AND DRAFTS OF CARRIERS IN ROSS SEA (ST0652) +DISPLAY THE TRACKS AND SPEEDS OF SHIPS THAT ARE IN SOLOMON SEA (ST0653) +SET SECURITY AND PORTS PARAMETERS TO OFF (ST0654) +GET THE DEGRADATIONS AND REASONS FOR STERETT (ST0655) +FIND THE NAMES AND ESTIMATED TIME OF ARRIVAL AT THEIR DESTINATIONS FOR SUBMARINES IN ARCTIC OCEAN (ST0656) +WHAT IS THE NAME AND THE VARIOUS RATINGS OF THE FRIGATE IN WEST BERING SEA (ST0657) +SHOW ALL OF THURSDAY+S AND FRIDAY+S CASUALTY REPORTS FOR FLASHER (ST0658) +IS MORE THAN ONE TASM CRUISER IN PORT (ST0659) +GIVE ME LENGTHS AND BEAMS OF ALL SHIPS THAT ARE IN GULF OF ALASKA (ST0660) +IS MORE THAN ONE T-LAM CAPABLE CARRIER IN PORT (ST0661) +LIST REMARKS AND THEIR DATES FOR DOWNES+S LAST SIX PROBLEMS (ST0662) +GET THE DESTINATIONS AND ARRIVAL HOUR AT DESTINATION FOR ALL SUBS (ST0663) +IS MORE THAN THREE QUARTERS OF FANNING+S FUEL LEFT (ST0664) +SHOW PARAMETER SETTINGS (ST0665) +WHAT PROBLEMS FROM FRIDAY ARE CATEGORY FOUR OR HIGHER FOR CRUISERS THAT ARE IN THE PERSIAN SEA (ST0666) +SHOW LATS AND LONS AND THE EARLIEST DEPLOYMENT DATES FOR VESSELS IN BERING STRAIT (ST0667) +DON+T WE HAVE ANY SLQ-32 SHIPS THAT ARE IN INDIAN OCEAN (ST0668) +GIVE ME ALERTS WITHIN THE LAST FOUR HOURS (ST0669) +DRAW ON THE SCREEN THE CURRENT POSITION AND C-CODES FOR GUARDFISH (ST0670) +WHAT WAS THE REASON FOR HEPBURN+S LATEST DEGRADATION (ST0671) +LIST MONDAY+S AND TUESDAY+S CASUALTY REPORTS FOR FRIGATES IN BASS STRAIT (ST0672) +DISPLAY SWITCH SETTINGS (ST0673) +GET NAMES AND LATITUDES FOR SPS-40 CARRIERS IN ARABIAN SEA TWENTY SEVEN NOVEMBER (ST0674) +WHAT CASREPS ARE MISSION DEGRADING (ST0675) +FIND TUESDAY AND WEDNESDAY+S UPDATES ON GUITARRO (ST0676) +WAS MONDAY+S LAST HFDF SENSOR LOCATION FOR THE HAWKBILL IN MOZAMBIQUE CHANNEL (ST0677) +WHAT ARE THE CATEGORIES FOR JARRETT+S CASUALTY REPORTS (ST0678) +GIVE ME A LIST OF LATITUDE AND LONGITUDE DATA FOR SHIPS EMPLOYED BEFORE LAST TWENTY THREE APRIL (ST0679) +GET A LIST OF FUEL LEVELS FOR ALL DIESEL VESSELS IN EASTPAC (ST0680) +SHOW THE C-RATINGS FOR SHIPS THAT ARE IN MIDPAC (ST0681) +SHOW ME TRACKS FOR SUBS (ST0682) +GIVE MAX DRAFTS FOR VESSELS IN WESTPAC (ST0683) +LIST LONGITUDES FOR SHIPS THAT ARE IN ATLANTIC OCEAN (ST0684) +DISPLAY TRACKS FOR PLUNGER AND FOR POLLACK (ST0685) +GET M-CODES FOR ANY FRIGATES IN CHINA SEA (ST0686) +FIND DATA FOR PUFFER UPDATED SINCE SEVENTEEN HUNDRED HOURS (ST0687) +REDO THE FIGURES FOR QUEENFISH (ST0688) +SHOW POSITION DATA FOR HOOKED PORT (ST0689) +DRAW TRACKS FOR ALL USN CRUISERS (ST0690) +GIVE ME THE M-CODES FOR ANY CARRIERS THAT ARE IN SOUTH SIBERIAN SEA (ST0691) +WHAT SHIPS ARE LOCATED IN GULF OF TONKIN (ST0692) +LIST FULL LOCATION DATA FOR TRACK FFF088 (ST0693) +GET LATITUDE AND LONGITUDE OF SUBMARINES THAT HAVE GONE TO M1 ON ASUW SINCE THIRTY MAY (ST0694) +FIND THE POSITION DATA FOR PLH003 (ST0695) +WAS LOCKWOOD+S LOCATION ON SUNDAY IN SEA OF JAPAN (ST0696) +SHOW LATITUDE AND LONGITUDE OF SEAWOLF (ST0697) +GIVE POSITION DATA FOR ALL TRACKS (ST0698) +LIST THE REMARKS FOR SWORDFISH (ST0699) +EDIT LOCATION DATA FOR TRACK A42128 (ST0700) +GET ME LATITUDE AND LONGITUDE AND AVERAGE CRUISING SPEED OF BADGER WITH THE UNIT OF MEASURE SWITCH SET TO METRIC (ST0701) +FIND FULL POSITION DATA FOR ALL TRACKS (ST0702) +TOGGLE SAIL AND SAVE SWITCHES (ST0703) +SHOW LOCATION DATA FOR BROOKE (ST0704) +ARE ANY OF MCCLUSKY+S LAST SIX POSITIONS IN FORMOSA STRAIT (ST0705) +GIVE THE LATITUDE AND LONGITUDE OF COPELAND ON ONE FEBRUARY (ST0706) +HOW CLOSE IS GULF OF CALIFORNIA TO DAVIDSON (ST0707) +SHOW THE ESTIMATED TIME TO REPAIR FOR THE LAST CASREP FROM DOWNES (ST0708) +WHAT IS THE ESTIMATED TIME TO REPAIR ON THE RAMSEY+S LAMPS (ST0709) +GET NAMES AND RESOURCES OF PHILIPPINE SEA SHIPS (ST0710) +WHAT ARE THE VARIOUS RESOURCE AREA RATINGS ON FANNING (ST0711) +SHOW ME A CHART CENTERED AROUND THE HEPBURN (ST0712) +WHICH OF THESE ARE LOWER THAN M2 IN MOB MISSION AREA (ST0713) +DISPLAY A CHART CENTERED AROUND JARRETT USING STEREOGRAPHIC PROJECTION (ST0714) +WHICH SUBS THAT ARE C3 ARE IN KOREAN BAY (ST0715) +DRAW CHART CENTERED AROUND THE LOCKWOOD (ST0716) +FIND VESSELS THAT ARE M3 ON MIW AND IN ANCHORAGE (ST0717) +REVIEW THE LAST ALERT FOR POUGHKEEPSIE (ST0718) +WHEN WILL MCCLUSKY BE REPAIRING THAT PROBLEM WITH SPS-48 (ST0719) +GIVE THE FRIGATES IN YELLOW SEA AND THEIR PROPULSION TYPES (ST0720) +LIST ANY CRUISERS THAT ARE C4 (ST0721) +WHAT+S THE TOTAL NUMBER OF CARRIERS IN PACIFIC OCEAN (ST0722) +GET ALL USN SHIPS THAT ARE IN CORAL SEA (ST0723) +FIND ME THE NORTH BISMARK SEA SUBMARINES THAT ARE C5 ON OVERALL READINESS (ST0724) +SHOW THE SAME SHIPS WITH FULL POSITION DATA FOR EACH (ST0725) +SHOW SUBS IN ROSS SEA SINCE FIVE AUGUST (ST0726) +GIVE VESSELS IN THE SOLOMON SEA (ST0727) +WHICH HARPOON CAPABLE SHIPS THAT ARE IN ARCTIC OCEAN THAT ARE M4 OR HIGHER ON ASW CHOPPED TO PACIFIC FLEET AFTER TWO DECEMBER (ST0728) +LIST DEPLOYMENTS OF FRIGATES ON EIGHT MARCH (ST0729) +ARE THERE ANY CRUISERS DEPLOYED IN BERING SEA THAT ARE C1 (ST0730) +GET DEPLOYMENTS OF CARRIERS DURING JULY (ST0731) +HOW MANY KILOMETERS ARE THERE BETWEEN RAMSEY AND THE RATHBURNE (ST0732) +FIND ME USN SHIPS DEPLOYED IN EIGHTY FOUR (ST0733) +DID ANY SUBMARINES THAT ARE IN NEW-YORK EVER GO TO M5 ON AAW (ST0734) +GIVE ME A LIST OF SHIPS THAT WERE C2 ON NINE OCTOBER (ST0735) +COUNT THE SUBS IN GULF OF ALASKA (ST0736) +GET A LIST OF VESSELS WITH TACAN EMPLOYED BEFORE ONE OCTOBER (ST0737) +SHOW THE SHIPS THAT ARE C3 THAT AREN+T DEPLOYED (ST0738) +GIVE FRIGATES IN BERING STRAIT AND THEIR MAX SPEEDS (ST0739) +HOW MANY CRUISERS THAT ARE SQQ-23 CAPABLE ARE THERE AT BOMBAY (ST0740) +LIST CARRIERS THAT ARE M1 ON ASUW (ST0741) +GET SHIPS THAT ARE IN HOME PORT (ST0742) +TOTAL THE SUBMARINES THAT ARE AT LESS THAN ONE QUARTER OF THEIR FUEL CAPACITY (ST0743) +FIND ME THE SHIPS THAT WERE M2 ON MOB ON SEVEN JUNE (ST0744) +SHOW SUBS DEPLOYED AFTER SEPTEMBER THREE (ST0745) +GIVE VESSELS IN INDIAN OCEAN AND THEIR DESTINATIONS (ST0746) +DO ANY SHIPS THAT ARE IN BASS STRAIT HAVE MORE FUEL THAN HER (ST0747) +LIST THE FRIGATES THAT ARE C4 (ST0748) +GET CRUISERS THAT WERE IN HOME PORT ON EIGHTH OF JANUARY (ST0749) +HOW MANY CARRIERS IN EAST PERSIAN SEA ARE NUCLEAR PROPELLED (ST0750) +FIND SHIPS THAT WERE IN THE ARABIAN SEA AS OF NOVEMBER TWENTY FIRST (ST0751) +SHOW ME ALL SUBMARINES THAT ARE IN MOZAMBIQUE CHANNEL AND THEIR GROSS DISPLACEMENTS (ST0752) +ARE THERE SHIPS IN EASTPAC THAT ARE C5 (ST0753) +GIVE SUBS THAT ARE IN MIDPAC AND C1 ON PERSONNEL (ST0754) +LIST VESSELS WITH SUPPLY PROBLEMS (ST0755) +GET C2 SHIPS THAT ARE IN DIEGO-GARCIA (ST0756) +HOW MANY SUBS IN WESTPAC HAVE TEST DEPTHS GREATER THAN FOURTEEN HUNDRED METERS (ST0757) +FIND CRUISERS THAT ARE IN ATLANTIC OCEAN THAT HAVE CASUALTY REPORTS DATED EARLIER THAN THE RATHBURNE+S OLDEST ONE (ST0758) +SHOW CARRIERS THAT ARE IN CHINA SEA AND M3 ON MIW (ST0759) +HOW MANY SHIPS ARE IN PACIFIC FLEET (ST0760) +GIVE ME SUBMARINES THAT ARE C3 ON EQUIPMENT (ST0761) +HOW MANY SHIPS WHOSE MAXIMUM SPEEDS ARE AS FAST AS THE REASONER+S WERE IN GALVESTON THIRD OF APRIL (ST0762) +LIST SUBS IN SIBERIAN SEA WITH NTDS (ST0763) +DO ANY VESSELS THAT ARE IN GULF OF TONKIN HAVE ASW MISSION AREA OF M4 (ST0764) +GET THE SHIPS AND THEIR FLEET IDENTIFICATIONS (ST0765) +FIND FRIGATES IN HONOLULU (ST0766) +WHAT LINK-11 CRUISERS ARE IN SEA OF JAPAN (ST0767) +SHOW CARRIERS DEPLOYED FIVE MAY (ST0768) +HOW MANY SHIPS WITH CURRENT SPEEDS ABOVE TWELVE KNOTS ARE IN FORMOSA STRAIT (ST0769) +GIVE THE SUBMARINES WHOSE TRAINING READINESS IS C4 (ST0770) +LIST SHIPS THAT ARE C5 AND AREN+T DEPLOYED (ST0771) +GET ME C1 SUBS THAT ARE IN GULF OF CALIFORNIA (ST0772) +HOW MANY VESSELS HAVE AVERAGE DISPLACEMENTS LESS THAN SAMPLE+S (ST0773) +FIND ANY SHIPS THAT ARE IN SOUTH PHILIPPINE SEA AND RATED M5 ON AAW (ST0774) +SHOW THE FRIGATES THAT WENT TO M1 ON ASUW AFTER TWO FEBRUARY (ST0775) +GIVE ANY CRUISERS THAT WERE C2 ON EIGHT AUGUST (ST0776) +HOW MANY CARRIERS ARE C3 OR BETTER (ST0777) +LIST SHIPS DEPLOYED SINCE FOUR DECEMBER (ST0778) +GET ANY SUBMARINES THAT ARE C4 ON SUPPLIES READINESS (ST0779) +WHICH OF THE KOREAN BAY SHIPS ARE ON STATION NOW (ST0780) +FIND ME PACIFIC FLEET SUBS THAT WERE C5 ON NINETEEN MARCH (ST0781) +DECREASE LETTER SIZE BY ONE ON CHART OF COOK ISLANDS (ST0782) +GIVE ME A LIST OF THE VESSELS AND THEIR DESTINATIONS (ST0783) +MAKE LETTERS SIZE THREE (ST0784) +GET A LIST OF NAMES AND AVERAGE SPEEDS FOR ALL SHIPS (ST0785) +WHAT SHIP IS NEAREST REASONER (ST0786) +SHOW THE FRIGATES (ST0787) +GIVE CRUISERS DEPLOYED SIXTEEN JULY (ST0788) +LIST USN CARRIERS IN GULF OF THAILAND SINCE ELEVEN OCTOBER (ST0789) +WHAT IS VANDERGRIFT+S FUEL STATUS (ST0790) +GET SHIPS IN THE YELLOW SEA AS OF EIGHTEEN JUNE (ST0791) +FIND ME SUBMARINES THAT WERE DEPLOYED JANUARY ONE (ST0792) +SHOW FUEL LEVELS FOR SHIPS IN PACIFIC OCEAN (ST0793) +DELETE WADSWORTH+S NEWEST LOCATION DATA (ST0794) +GIVE THE LAST NINE LOCATIONS FOR THE SAMPLE (ST0795) +REVIEW WHIPPLE+S LAST SIX ALERTS (ST0796) +WEREN+T THERE MORE THAN FOUR SUBS THAT WERE IN PACIFIC FLEET IN NINETEEN EIGHTY FIVE (ST0797) +DISPLAY THE LAST LATITUDE AND LONGITUDE OF THE HOOKED TRACK (ST0798) +HAVE NOT MORE THAN SEVEN VESSELS BEEN IN THEIR HOME PORTS SINCE THIRTEEN SEPTEMBER (ST0799) +HAD VANDERGRIFT MADE THAT CASUALTY REPORT EARLIER THAN THREE HUNDRED HOURS ZULU (ST0800) +DELETE ANY MISSIONS CHANGED TODAY (ST0801) +LIST THE LAST SIX LATITUDES AND LONGITUDES OF WADSWORTH (ST0802) +GET THE CAPABILITIES THAT WHIPPLE HAS (ST0803) +WHAT SHIPS ARE REPORTING M2 ON MOB (ST0804) +FIND AREA ALERTS FOR CORAL SEA (ST0805) +SHOW ME THE TFCC FRIGATES THAT WEREN+T DEPLOYED IN JANUARY (ST0806) +WHO HAS TASM CAPABILITY IN BISMARK SEA (ST0807) +GIVE ANY T-LAM CRUISERS THAT WERE DEPLOYED BEFORE NOVEMBER TEN AND THAT WEREN+T IN HOME PORT THIRTIETH APRIL (ST0808) +WHAT IS THE MOST RECENT POSIT (ST0809) +LIST SLQ-32 CAPABLE CARRIERS THAT ARE IN ROSS SEA (ST0810) +WHAT+S THE LATEST REPORT DATE FOR THE AJAX+S TRAINING PROBLEM (ST0811) +GET SPS-40 CAPABLE SHIPS (ST0812) +WHAT IS THE AVERAGE UNIT READINESS FOR THE FIVE SLOWEST SUBMARINES IN WEST SOLOMON SEA (ST0813) +FIND ANY LAMPS CAPABLE SHIPS THAT WERE IN ARCTIC OCEAN ON MAY ELEVENTH AND THAT WERE C1 ON FOURTH OF FEBRUARY (ST0814) +SHOW THE SPS-48 SUBS (ST0815) +EDIT THE ALERT INVOLVING AJAX (ST0816) +GIVE ME HARPOON CAPABLE VESSELS THAT ARE C2 (ST0817) +REDRAW CHART WITH ECHO AND AREAS SWITCHES TOGGLED (ST0818) +DISPLAY APALACHICOLA+S TRACK WITH OVERLAY SOHO (ST0819) +LIST ANY TACAN CAPABLE SHIPS THAT ARE IN PORT (ST0820) +DRAW CHART WITH REDEFINED OVERLAYS (ST0821) +GET SQQ-23 CAPABLE FRIGATES IN PORT ELIZABETH (ST0822) +SHOW THE CHART WITH NO SPEED DATA DISPLAYED (ST0823) +FIND ANY NTDS CAPABLE CRUISERS THAT ARE NOT C3 ON PERSONNEL (ST0824) +DEFINE THE TIME WINDOW FOR THE CHART OF FIJI TO START AT PRESENT TIME AND END AT TWO HUNDRED HOURS (ST0825) +SHOW LINK-11 CARRIERS THAT WERE LOCATED IN BERING SEA ON FIFTEEN AUGUST (ST0826) +REDEFINE TIME WINDOW FOR THE CHART OF FRENCH POLYNESIA TO START EIGHT DAYS SOONER (ST0827) +ARE THERE ANY CATEGORY TWO PROBLEMS FOR THE APALACHICOLA (ST0828) +GIVE ME THE LAST DEPLOYMENT DATES FOR ALL SHIPS (ST0829) +WHICH SUBMARINES HAVE CATEGORY THREE CASUALTY REPORTS (ST0830) +REDRAW CHART OF EAST HONG-KONG INCREASING LETTER SIZE TO FOUR (ST0831) +IS THERE A TFCC INSTALLED ON BRUNSWICK (ST0832) +LIST LAST WEEK+S CATEGORY FOUR PROBLEMS FOR SHIPS IN GULF OF ALASKA (ST0833) +WHAT IS THE SETTING OF THE UOM PARAMETER (ST0834) +GET MIW RATING CODES FOR ALL OF MIDPAC+S C4 SUBS THAT ARE IN BERING STRAIT (ST0835) +HAS CAMDEN CHOPPED TO PACFLT YET (ST0836) +WOULDN+T IT HAVE TAKEN LONGER WITH THE CAMPBELL (ST0837) +HOW MUCH FASTER IS BRUNSWICK+S ECONOMIC SPEED COMPARED TO CAMDEN+S (ST0838) +MAKE CHART OF NORTHERN INDONESIA AGAIN REDEFINING OVERLAYS (ST0839) +FIND THE DESTINATIONS AND ESTIMATED TIME OF ARRIVAL AT DESTINATION FOR TASM CAPABLE VESSELS (ST0840) +CAN CHATTAHOOCHEE GET TO INDIAN OCEAN BY NINE HUNDRED HOURS ON TUESDAY (ST0841) +WHAT SHIPS RATED ABOVE M3 ON ASW WILL CHANGE READINESS BY SEVENTEEN DECEMBER (ST0842) +DISPLAY CHART OF BASS STRAIT WITH BARGE OVERLAY (ST0843) +DRAW A CHART OF PERSIAN SEA WITH TIME WINDOW STARTED AT SEVEN HUNDRED HOURS (ST0844) +SHOW THE VARIOUS FLEET IDENTIFICATIONS FOR FRIGATES (ST0845) +SHOW THE SAME CHART WITH NOVA (ST0846) +ON WHAT DAY IS THE CITRUS DUE IN TOKYO (ST0847) +REDRAW CHART OF MOZAMBIQUE CHANNEL WITH BUD-TEST OVERLAY ADDED (ST0848) +SET LETTER SIZE TO LOWEST VALUE (ST0849) +DISPLAY THE TRACKS OF ANY CRUISERS IN EASTPAC (ST0850) +REDO CHART OF MIDPAC SHOWING ONLY POSITIONS FROM VISUAL SENSOR (ST0851) +SET COLOR OF THE CAMPBELL+S TRACK TO BRIGHT RED (ST0852) +SHOW ME DEFINITIONS OF ANY ALERTS INVOLVING CLEVELAND (ST0853) +DRAW A CHART OF MADAGASCAR CENTERING IT AROUND CONIFER (ST0854) +ADD THE SAN-FRAN OVERLAY (ST0855) +REDO CHART OF MONGOLIA USING TRUE-VIEW PROJECTION (ST0856) +HAS CONFIDENCE BEEN AT SEA THE LONGEST OF CARRIERS THAT ARE IN PACIFIC FLEET (ST0857) +GIVE C5 SHIPS IN PACIFIC FLEET (ST0858) +REDRAW CHART OF MEXICO WITH NEW POSITION DATA INCLUDED (ST0859) +LIST THE C1 SUBMARINES THAT WERE IN WESTPAC ON FOURTEEN MARCH (ST0860) +REDISPLAY CHART OF NORTH ATLANTIC OCEAN AFTER CLEARING PUGET-1 (ST0861) +DISPLAY LENGTHS AND THE BEAMS FOR SHIPS THAT ARE IN ATLANTIC CITY (ST0862) +GET GROUP NAMES (ST0863) +SHOW THE DEFINITION OF PAC ALERT (ST0864) +HAS KENNEDY ARRIVED AT HER DESTINATION YET (ST0865) +FIND THE NAMES OF SUBS IN THE HOOKED PORT (ST0866) +REDRAW CHART OF MOZAMBIQUE WITH RADAR SENSOR LOCATION DATA DELETED (ST0867) +INCREASE LETTER SIZE TO THREE FOR CHART OF THE CHINA SEA (ST0868) +GIVE ME A LIST OF THE VARIOUS FLEET IDENTIFICATIONS FOR T-LAM VESSELS THAT ARE IN SIBERIAN SEA (ST0869) +SHOW ME A CHART OF NEW CALEDONIA (ST0870) +WHAT SHIPS WENT TO C2 ON EQUIPMENT AFTER TWELVE JULY (ST0871) +GET A LIST OF ALERTS IN WHICH SHE+S INVOLVED (ST0872) +REDO CHART OF THE GULF OF TONKIN TOGGLING UNIT OF MEASURE SWITCH (ST0873) +SHOW THURSDAY+S CASREPS FROM EISENHOWER (ST0874) +GIVE SPEED OF FRIGATES IN THE SEA OF JAPAN (ST0875) +MAKE CHART AGAIN IN LOW RESOLUTION (ST0876) +DISPLAY CHART OF FORMOSA STRAIT TURNING OFF AREA SWITCH (ST0877) +REDRAW THE CHART OF NEW-ZEALAND WITH ALL LATITUDE AND LONGITUDE DATA SHOWN IN DIM ORANGE (ST0878) +REDISPLAY CHART OF GULF OF CALIFORNIA ADDING NEW OVERLAYS (ST0879) +COULDN+T MISSISSIPPI ARRIVE IN PORT BY TOMORROW (ST0880) +DRAW THE CHART OF PHILIPPINES WITH ARROW ON (ST0881) +LIST ESTIMATED ARRIVAL TIMES FOR CRUISERS DUE IN PORT VICTORIA TODAY (ST0882) +DISPLAY SPEED OF THE VIRGINIA (ST0883) +WHEN WILL BIDDLE NEXT BE ON STATION (ST0884) +SHOW THE NUMBER OF CARRIERS WITH C3 CROVL (ST0885) +GET ME MISSION AREAS ABOARD CONQUEST THAT ARE M4 (ST0886) +HOW LONG WOULD IT TAKE CONSTANT TO GET FROM ASTORIA TO NINETY SOUTH FORTY THREE WEST (ST0887) +SHOW A CHART OF THE PHILIPPINE SEA WITH CEP PARAMETER TURNED ON (ST0888) +REDRAW CHART OF PANAMA WITH TIME WINDOW DEFINED TO START AT NINETEEN HUNDRED ZULU (ST0889) +HOW LONG WILL IT TAKE DENVER TO GET WHERE IT+S GOING (ST0890) +FIND THE DATES OF SUPPLIES PROBLEMS REPORTED BY DIXON IN EIGHTY SIX (ST0891) +DO WE HAVE A SUBMARINE IN KOREAN BAY WITH TEST DEPTH GREATER THAN FIVE HUNDRED FEET (ST0892) +DISPLAY A CHART OF GULF OF THAILAND WITH TIME WINDOW STARTING AT TWO AND ENDING AT SIXTEEN HUNDRED HOURS (ST0893) +REDRAW THE CHART OF SINGAPORE WITH EDITED LAT AND LONG DATA (ST0894) +DRAW CHART OF TAIWAN USING OVERLAY GRILL (ST0895) +REDO THE SAME CHART WITH FOOTER SWITCH OFF (ST0896) +WHAT+S THE TOTAL NUMBER OF SHIPS IN THE PACIFIC FLEET (ST0897) +ON WHAT DAY COULD DUBUQUE ARRIVE IN PORT AT HIS MAXIMUM SUSTAINED SPEED (ST0898) +REDRAW CHART OF SOVIET UNION DECREASING LETTER SIZE TO TWO (ST0899) +SHOW THE NAMES OF ANY SUBMARINES IN YELLOW SEA ON TWENTY EIGHT OCTOBER (ST0900) +WHAT SUB WAS IN SAN-DIEGO TWENTY FOUR JUNE (ST0901) +SHOW THE CHART OF SOUTHERN UNITED STATES WITH GREAT CIRCLE TOGGLED (ST0902) +HOW LONG WOULD IT TAKE ESTEEM TO GET TO SUBIC BAY AT ELEVEN KNOTS (ST0903) +DISPLAY A CHART OF EASTERN USA WITH CHART PARAMETERS SET TO THEIR DEFAULTS (ST0904) +REDRAW CHART OF NORTHERN CHINA WITH DATA SCREEN CLEARED (ST0905) +WILL FIREBUSH BE AT MIAMI TOMORROW (ST0906) +GIVE ME THE NAME OF THE BRIGHT GREEN TRACK (ST0907) +REDRAW CHART OF FORMOSA DELETING SONAR SENSOR DATA (ST0908) +HAS FLINT CHOPPED TO ATLANTIC FLEET YET (ST0909) +DRAW CHART OF NORTH PACIFIC OCEAN (ST0910) +HOW MANY DAYS WOULD IT TAKE THE FREDERICK TO GET TO HER DESTINATION AT HER AVERAGE CRUISING SPEED (ST0911) +COUNT THE NUMBER OF SHIPS THAT ARE IN CORAL SEA (ST0912) +DISPLAY THE DEFINITION OF ALERTS INVOLVING FRESNO (ST0913) +SHOW THE SAME CHART OF JAPAN DEFINING TIME WINDOW TO START AT NINE HUNDRED HOURS (ST0914) +CAN THE GLACIER GET TO NAPLES BY MONDAY (ST0915) +REDRAW PROJECTION USING MERCATOR (ST0916) +LIST DATES ON PERSONNEL CASUALTY REPORTS FOR HECTOR (ST0917) +SHOW THE NUMBER OF SUBS DEPLOYED IN BISMARK SEA (ST0918) +SET THE COLOR OF N92762 TO DIM YELLOW (ST0919) +REDRAW CHART OF THAILAND MAKING LETTERS ONE SIZE SMALLER (ST0920) +WHAT IS THE NUMBER OF VESSELS THAT ARE IN ROSS SEA WITHOUT SLQ-32 (ST0921) +REDRAW CHART OF KOREA WITH REDEFINED OVERLAYS (ST0922) +WHAT WOULD IT BE COUNTING ONLY C4 SHIPS (ST0923) +WHEN WAS SHE LAST IN SOLOMON SEA (ST0924) +GET ANY ALERTS IN WHICH THE IRONWOOD IS INVOLVED (ST0925) +MAKE CHART OF BRITISH SOLOMON ISLANDS AGAIN WITH RESOLUTION SET TO HIGH (ST0926) +REDO CHART OF CANADA WITH LETTERS DECREASED BY ONE SIZE (ST0927) +FIND THE VARIOUS FLEET IDENTIFICATIONS FOR SPS-40 FRIGATES (ST0928) +SHOW ME LAST MONTH+S WORST PROBLEMS FOR EACH ARCTIC OCEAN VESSEL (ST0929) +DISPLAY THE DEFINITION OF SOUTH BERING SEA ALERT (ST0930) +GET THE C5 CRUISERS IN GULF OF ALASKA (ST0931) +WHAT IS THE STATUS OF JARVIS (ST0932) +DISPLAY A CHART OF CORAL SEA ISLANDS WITH THE GRID SWITCH OFF (ST0933) +LIST C1 CARRIERS (ST0934) +DRAW CHART OF BERING STRAIT WITH JASON DISPLAYED IN THE CENTER (ST0935) +GET SUNDAY+S CASUALTY REPORTS FOR JUPITER (ST0936) +WHAT WERE CHATTAHOOCHEE+S PROBLEMS YESTERDAY (ST0937) +WHAT+S KIRK+S ETA AT HER DESTINATION (ST0938) +DOESN+T CITRUS HAVE LAMPS (ST0939) +IS THE CLEVELAND+S MOST RECENT CASUALTY REPORT LATER THAN SIX HUNDRED (ST0940) +WHAT IS THE SUB+S ESTIMATED TIME OF ARRIVAL AT KODIAK (ST0941) +IS CONFIDENCE+S ARRIVAL HOUR IN TOKYO AFTER FOUR HUNDRED HOURS ZULU (ST0942) +WHY WAS KENNEDY+S AAW MISSION AREA CHANGED ON TWENTY SEVEN SEPTEMBER (ST0943) +WHAT IS INDEPENDENCE+S PERSONNEL RESOURCE READINESS (ST0944) +WILL THE EISENHOWER+S EQUIPMENT PROBLEM BE FIXED BY TWENTY THREE JANUARY (ST0945) +IS MISSISSIPPI+S RATING ON TRAINING READINESS LOWER THAN THAT OF KISKA (ST0946) +WHAT+S VIRGINIA+S HOME PORT (ST0947) +WHY WAS BIDDLE+S SUPPLIES RESOURCE RATING DOWNGRADED FEBRUARY ONE (ST0948) +WHAT IS THE CONQUEST+S OVERALL READINESS TODAY (ST0949) +WHEN WAS CONSTANT+S LAST REPORTED PERSONNEL CASUALTY REPORT (ST0950) +WHAT IS DENVER+S PROPULSION TYPE AND FUEL CAPACITY (ST0951) +IS DIXON+S DISPLACEMENT LESS THAN AVERAGE FOR M5 ASUW SHIPS (ST0952) +IS THE DUBUQUE+S LENGTH GREATER THAN ANY SHIP IN INDIAN OCEAN (ST0953) +WHAT+S ESTEEM+S OLDEST CASUALTY REPORT (ST0954) +IS FIREBUSH+S ESTIMATED TIME OF ARRIVAL LATER THAN SIX HUNDRED HOURS (ST0955) +WHAT IS FLINT+S PROPULSION TYPE (ST0956) +IS THE FREDERICK+S MAXIMUM DRAFT LESS THAN AVERAGE FOR HER FLEET (ST0957) +WHERE WAS FRESNO+S DESTINATION ON TWENTY FIVE NOVEMBER (ST0958) +IS GLACIER+S GROSS DISPLACEMENT LARGER THAN AVERAGE FOR BASS STRAIT SUBMARINES (ST0959) +WHAT IS THE HECTOR+S MAX DRAFT (ST0960) +IS IRONWOOD+S FLEET IDENTIFICATION THE SAME AS JARVIS+S (ST0961) +WHAT+S JASON+S M-RATING ON MOB (ST0962) +IS JUPITER+S MAX SPEED SLOWER THAN THE KIRK+S (ST0963) +IS EVERETT KISKA+S DESTINATION (ST0964) +WHAT IS MANHATTAN+S FUEL CAPACITY (ST0965) +IS MARS+S LENGTH MORE THAN A THOUSAND METERS (ST0966) +WHY WAS MERCURY+S MIW M-CODE CHANGED ON APRIL TWENTY TWO (ST0967) +WHAT IS THE METEOR+S MAXIMUM SPEED (ST0968) +ARE THERE ANY STEAM PROPELLED SHIPS THAT ARE IN PERSIAN SEA (ST0969) +WHAT+S MIDGETT+S CURRENT SPEED (ST0970) +ARE THERE ANY GAS TURBINE SURFACE VESSELS WITHIN SIXTY MILES OF DARWIN (ST0971) +WHAT IS MISHAWAKA+S PERCENT FUEL (ST0972) +ARE THERE EIGHT SUBS AT SEA NOW (ST0973) +WHAT WAS THE PREVIOUS EQUIPMENT READINESS OF MANHATTAN (ST0974) +ARE THERE NINE SPS-48 VESSELS WITH CURRENT SPEEDS NOT GREATER THAN SEVEN KNOTS (ST0975) +WERE THERE EIGHTEEN SHIPS AT SEA ON THE EIGHTEENTH MAY (ST0976) +WHO HAS THE GREATEST FUEL CAPACITY OF CONVENTIONAL SURFACE SHIPS IN ARABIAN SEA (ST0977) +ARE THERE THREE FRIGATES WITH AVERAGE SPEEDS MORE THAN FIFTEEN KNOTS (ST0978) +REVIEW ALL MONTICELLO+S THREATS (ST0979) +WHAT IS THE TRAINING RESOURCE READINESS OF MARS (ST0980) +IS HOMER THE DESTINATION FOR ANY CRUISERS (ST0981) +ARE THERE FIVE HARPOON CARRIERS THAT ARE IN MOZAMBIQUE CHANNEL CAPABLE OF A MAX SPEED OF THIRTY TWO KNOTS OR HIGHER (ST0982) +TURN GROUPS ON AND REDRAW THE CURRENT AREA (ST0983) +SET NTDS ON (ST0984) +DON+T SHOW CHART ON REDRAW (ST0985) +DISPLAY LOCATIONS FOR HOOKED TRACK (ST0986) +TURN POSIT DISPLAY OFF FOR TRACKS WHOSE LONGITUDE IS HOOKED (ST0987) +WHY WAS NASHUA+S ASW MISSION AREA DEGRADED ON FEBRUARY TWENTY THIRD (ST0988) +WHAT+S THE SUPPLIES C-RATING FOR MERCURY (ST0989) +TURN OFF SECURITY PARAMETER (ST0990) +WHEN+LL THE TRAINING PROBLEM FOR METEOR BE RESOLVED (ST0991) +TURN ON THE CHART SWITCH (ST0992) +WHEN DID PEORIA+S OVERALL READINESS LAST DEGRADE (ST0993) +WHY DID PIGEON+S AAW MISSION AREA RATING DOWNGRADE ON NINTH OF AUGUST (ST0994) +REDRAW SHOWING THE LAST EIGHT LATITUDES AND LONGITUDES OF CARRIERS AND SUBMARINES (ST0995) +WHY DID MIDGETT CHANGE READINESS ON TWENTY FOUR DECEMBER (ST0996) +FIND POSITIONS OF ALL SHIPS WHICH ARE IN EASTPAC (ST0997) +ARE THERE NINE SUBS THAT ARE IN PEARL HARBOR WITH READINESS MORE THAN C2 (ST0998) +WHAT WAS PLUCK+S PERSONNEL READINESS ON LAST SATURDAY (ST0999) +WHY WAS THE EQUIPMENT READINESS OF MISHAWAKA DOWNGRADED ON TWENTY SIX MARCH (ST1000) +IS SIDNEY THE DESTINATION OF ANY VESSELS (ST1001) +WHO HAS THE LARGEST FUEL CAPACITY IN MIDPAC (ST1002) +WHAT IS THE TRAINING READINESS OF MONTICELLO (ST1003) +WHICH OF THE SHIPS IN WESTPAC HAVE TACAN (ST1004) +WHAT IS THE SUPPLIES RESOURCE READINESS ON THE NASHUA (ST1005) +WHEN WAS PEORIA LAST IN THE ATLANTIC OCEAN (ST1006) +WHAT+S THE OVERALL READINESS ON YORKTOWN (ST1007) +WHEN WAS PIGEON LAST IN PORT (ST1008) +ARE THERE FOUR FRIGATES THAT ARE IN THE CHINA SEA WITH PERSONNEL RATING MORE THAN C3 (ST1009) +WHAT IS THE EQUIPMENT RESOURCE RATING ON PLUCK (ST1010) +ARE THERE ANY C4 CRUISERS IN WEST SIBERIAN SEA (ST1011) +WHAT IS THE TRAINING RESOURCE RATING AND DESTINATION OF YORKTOWN (ST1012) +WHEN WILL THE SUPPLIES CASUALTY REPORT FROM THE POUGHKEEPSIE BE RESOLVED (ST1013) +NEVER MIND THE NEW DISPLAY (ST1014) +HAS POUGHKEEPSIE CHANGED OVERALL READINESS (ST1015) +IS PRAIRIE AS FAST AS RECLAIMER (ST1016) +WHAT+S THE PERSONNEL RATING OF THE DALE (ST1017) +IS TICONDEROGA IN THE HOOKED PORT (ST1018) +DID SACRAMENTO REPORT ANY PROBLEM ON TWENTY SEVEN JULY (ST1019) +HASN+T SASSAFRAS REPORTED ANY EQUIPMENT RESOURCE AREA PROBLEMS SINCE TWENTY THREE OCTOBER (ST1020) +IS SCHENECTADY ON STATION (ST1021) +WHAT IS THE LONGEST FRIGATE IN PACIFIC FLEET (ST1022) +CLEAR THE SCREENS (ST1023) +IS SHASTA WITHIN SIX KILOMETERS OF THIRTEEN NORTH FORTY EAST (ST1024) +WHEN DID SHERMAN LAST DOWNGRADE FOR ASUW MISSION AREA (ST1025) +IS TRIPOLI NEARER TO THE TUSCALOOSA THAN VANCOUVER IS (ST1026) +WHEN DID WABASH LAST REPORT TRAINING RESOURCE AREA C5 (ST1027) +IS WASP FASTER THAN WICHITA (ST1028) +DIDN+T THE WILLAMETTE UPGRADE ON THIRTY JUNE (ST1029) +WHEN WILL WINAMAC NEXT BE IN HOME PORT (ST1030) +IS MIDWAY CAPABLE OF A SPEED OF THIRTY FIVE KNOTS (ST1031) +ARE CONSTELLATION AND RANGER IN LENINGRAD (ST1032) +IS THE ARKANSAS AN SQQ-23 CRUISER (ST1033) +DOES BAINBRIDGE HAVE AN MOB READINESS OF M1 (ST1034) +WHERE+S ENTERPRISE ENROUTE TO (ST1035) +IS TEXAS SLOWER THAN ENGLAND (ST1036) +WHERE IS THE FOX GOING (ST1037) +WHY WAS GRIDLEY RATED C1 ON THIRTY SEPTEMBER (ST1038) +IS HORNE DUE IN PORT BEFORE TWENTY ONE HUNDRED ON NEXT THURSDAY (ST1039) +HASN+T REEVES REPORTED ANY SUPPLIES RESOURCE PROBLEMS SINCE TWO JANUARY (ST1040) +WHERE IS STERETT TODAY (ST1041) +REVIEW ALERTS WITHIN THE LAST FORTY EIGHT HOURS FOR SHIPS THAT ARE IN GULF OF THAILAND (ST1042) +IS GUARDFISH GOING TO BE CHOPPING TO LANTFLT SOON (ST1043) +WHEN DID GUITARRO DEGRADE FROM HER PREVIOUS OVERALL C-RATING (ST1044) +HAS HAWKBILL CASREPED ANY PERSONNEL PROBLEMS (ST1045) +WHEN DID THE PLUNGER CHOP TO ATLANTIC FLEET (ST1046) +IS THERE A CARRIER IN GULF OF TONKIN LONGER THAN ONE THOUSAND FEET (ST1047) +WHERE WAS POLLACK ON EIGHT NOVEMBER (ST1048) +DIDN+T PUFFER DOWNGRADE ON MIW IN APRIL (ST1049) +IS QUEENFISH+S MAXIMUM SPEED AS FAST AS THE SEAWOLF+S (ST1050) +WHICH CARRIERS THAT ARE IN SEA OF JAPAN HAVE NTDS (ST1051) +WHAT IS THE ASW AVERAGE RATING CODE FOR SHIPS IN FORMOSA STRAIT (ST1052) +WHAT SUBMARINES THAT ARE IN GULF OF CALIFORNIA WENT TO M2 IN AAW SINCE MARCH ONE (ST1053) +WHICH SHIPS IN PHILIPPINE SEA ARE LINK-11 CAPABLE (ST1054) +WHAT+S THE ETA AT HIS DESTINATION OF THE SWORDFISH (ST1055) +WHICH SUBS THAT ARE IN ABERDEEN HAVE AN EQUIPMENT READINESS RATING OF C2 (ST1056) +DID ASUW MISSION AREA OF BADGER EVER GO TO M3 ON NINE MAY (ST1057) +WHAT IS THE ESTIMATED TIME OF ARRIVAL IN MANCHESTER OF BROOKE (ST1058) +DID MOB MISSION AREA OF THE COPELAND EVER GO TO M4 IN NINETEEN EIGHTY ONE (ST1059) +WHAT TRAINING PROBLEMS HAS DAVIDSON REPORTED SINCE FEBRUARY SEVEN (ST1060) +DEFINE A BUMP AREA ALERT (ST1061) +WHAT IS THE MIW MISSION AREA RATING FOR DOWNES (ST1062) +WHICH VESSELS IN KOREAN BAY HAVE A SUPPLIES READINESS THAT IS C3 (ST1063) +ADD YANKEE (ST1064) +DRAW GULF OF THAILAND (ST1065) +HAS THE PRAIRIE+S ASW MISSION AREA RATING BEEN CHANGED SINCE WEDNESDAY (ST1066) +WHICH SHIPS THAT ARE IN YELLOW SEA HAVE AN OVERALL RESOURCE READINESS OF C4 (ST1067) +HAS AAW MISSION AREA OF FANNING GONE TO M5 SINCE TWENTY FIFTH AUGUST (ST1068) +WHICH FRIGATES IN OAKLAND ARE C5 (ST1069) +WHAT SUPPLY PROBLEMS HAS THE HEPBURN REPORTED (ST1070) +DID RECLAIMER+S ASUW MISSION AREA EVER GO TO M1 AFTER DECEMBER TENTH NINETEEN EIGHTY FOUR (ST1071) +WHAT+S THE MOB M-CODE FOR JARRETT (ST1072) +DOES LOCKWOOD HAVE TFCC CAPABILITY (ST1073) +ARE THERE ANY TASM CAPABLE CRUISERS THAT ARE IN PACIFIC OCEAN (ST1074) +DOESN+T THE MCCLUSKY HAVE T-LAM YET (ST1075) +HOW MANY CAT-2 CASUALTY REPORTS ARE THERE FOR CARRIERS IN CORAL SEA (ST1076) +ARE THERE ANY SLQ-32 SHIPS THAT ARE IN WEST BISMARK SEA (ST1077) +SHOW ME COOK ISLANDS (ST1078) +REDRAW FIJI IN LOW RESOLUTION (ST1079) +DISPLAY FRENCH POLYNESIA USING STEREOGRAPHIC (ST1080) +HOW MUCH FUEL DOES RAMSEY HAVE REMAINING (ST1081) +IS THE MAXIMUM SUSTAINED SPEED OF RATHBURNE LESS THAN TWENTY THREE KNOTS (ST1082) +REDRAW HONG-KONG WITH HIGH RESOLUTION (ST1083) +IS THE AVERAGE CRUISING SPEED OF THE REASONER GREATER THAN THAT OF SAMPLE (ST1084) +WHAT IS THE AVERAGE SPEED OF SUBMARINES IN THE PACIFIC FLEET (ST1085) +ARE ANY SUPPLY PROBLEMS REPORTED BY VANDERGRIFT DATED SIXTH OF MARCH (ST1086) +IS THE MAXIMUM SPEED FOR SHIPS THAT ARE IN THE ROSS SEA LESS THAN DALE+S CURRENT SPEED (ST1087) +ARE MORE THAN FIVE SUBS CURRENTLY IN HOME PORT (ST1088) +DOES WADSWORTH HAVE TWO OPEN CAT-3 CASREPS (ST1089) +WHAT IS THE PRESENT OVERALL READINESS FOR WHIPPLE (ST1090) +IS THE AVERAGE DISPLACEMENT OF AJAX MORE THAN EIGHT THOUSAND LONG TONS (ST1091) +WHAT+S THE AVERAGE SPEED OF THE APALACHICOLA (ST1092) +HOW MANY DIESEL SURFACE SHIPS ARE WITHIN TEN MILES OF BRUNSWICK (ST1093) +WHAT VESSELS HAVE REPORTED TRAINING PROBLEMS (ST1094) +WHAT+RE THE GROSS DISPLACEMENTS FOR SOLOMON SEA NUCLEAR SURFACE VESSELS (ST1095) +WEREN+T MORE THAN NINETY C1 SHIPS IN PACIFIC FLEET TODAY (ST1096) +IS THERE A PROBLEM WITH PERSONNEL FOR THE CAMDEN (ST1097) +EDIT TICONDEROGA+S ALERTS (ST1098) +WHAT IS THE CURRENT EQUIPMENT READINESS OF CAMPBELL (ST1099) +ARE THERE MORE THAN FOUR SPS-40 CAPABLE FRIGATES IN PORT NOW (ST1100) +WHAT CRUISERS CHOPPED FROM THE ATLANTIC FLEET TO PACIFIC FLEET IN JULY (ST1101) +REDISPLAY CHART ADDING BOX (ST1102) +SACRAMENTO+S TRAINING READINESS RATING (ST1103) +WHAT PACIFIC FLEET CARRIER WASN+T DEGRADED ON SUPPLIES READINESS DURING OCTOBER (ST1104) +HOW FAST IS CHATTAHOOCHEE (ST1105) +ADD A NEW ALERT (ST1106) +ARE ANY OF SASSAFRAS+S POSITIONS FROM VISUAL SENSOR (ST1107) +TURN PORTS SWITCH ON (ST1108) +WERE ANY OF SCHENECTADY+S PROBLEMS CASREPED BEFORE NINE JUNE (ST1109) +SET THE SAIL PARAMETER TO OFF (ST1110) +WHAT SUBMARINE HAD THE MOST CASUALTY REPORTS DURING THE LAST SIX MONTHS (ST1111) +TOGGLE UNIT OF MEASURE SWITCH (ST1112) +ARE ANY OF SHASTA+S PROBLEMS DATED FOUR SEPTEMBER (ST1113) +WHAT SPEED IS CITRUS GOING (ST1114) +REDRAW IT INCREASING THE LETTER SIZE TO THREE (ST1115) +WHAT CASUALTY REPORTS ON CLEVELAND ARE THERE FOR SEVEN JANUARY (ST1116) +REDRAW IT MAKING LETTER SIZE ONE SMALLER (ST1117) +SET COLOR FOR SHERMAN+S TRACK TO BRIGHT ORANGE (ST1118) +WHAT SUB IN BERING SEA HAS THE MOST REMAINING FUEL (ST1119) +SET CHART SWITCH TO LOW (ST1120) +HOW SOON CAN TRIPOLI+S EARLIEST CASREP BE FIXED (ST1121) +WHICH VESSEL IN GULF OF ALASKA HAS THE SMALLEST FUEL CAPACITY (ST1122) +WHAT SHIP IN BERING STRAIT HAS THE FASTEST ECONOMIC SPEED (ST1123) +REDRAW THE CHART DISPLAYING THE THREE LATEST POSITIONS FOR EACH FRIGATE (ST1124) +CROVL FOR CONIFER (ST1125) +WHAT CARRIERS THAT WERE IN INDIAN OCEAN SIX NOVEMBER WILL CHOP TO ATLANTIC FLEET BY FIVE APRIL (ST1126) +IS TUSCALOOSA+S FUEL CAPACITY LARGER THAN VANCOUVER+S (ST1127) +EDIT ICE-NINE (ST1128) +REDO CHART DELETING THE LATEST POSITION DATA FOR EACH CRUISER (ST1129) +WHAT IS THE PRESENT MIW MISSION READINESS OF CONFIDENCE (ST1130) +TURN SAVE OFF (ST1131) +WHAT TYPE OF PROPULSION DOES KENNEDY HAVE (ST1132) +HOW SOON WILL INDEPENDENCE BE UPGRADED ON PERSONNEL READINESS (ST1133) +CLEAR THE DATA SCREEN (ST1134) +IS THERE A REMARK ON WABASH+S LAST CASUALTY REPORT (ST1135) +DID EISENHOWER REPORT ANY EQUIPMENT PROBLEM ON TWO MAY (ST1136) +WHAT+S THE NAME AND C-CODE OF THE CARRIER IN THE BASS STRAIT (ST1137) +DOES MISSISSIPPI HAVE ANY CATEGORY THREE OR CATEGORY FOUR PROBLEMS (ST1138) +CLEAR OVERLAYS AND DISPLAY TRACK OF VIRGINIA (ST1139) +HOW SOON CAN THE BIDDLE CHOP TO ATLANTIC FLEET (ST1140) +WHAT CASUALTY REPORT DID CONQUEST HAVE ON FIFTEEN FEBRUARY (ST1141) +DRAW WASP+S TRACK AND CURRENT TRAINING READINESS (ST1142) +MAKE THE LETTERS ONE SIZE LARGER (ST1143) +HOW SOON WILL THE CONSTANT BE UPGRADED ON ASW MISSION READINESS (ST1144) +CLEAR THE CHART SCREEN (ST1145) +HOW SOON CAN DENVER GET TO NEWCASTLE (ST1146) +HOW SOON DOES DIXON ARRIVE IN ALEXANDRIA (ST1147) +CLEAR ALL DATA SCREENS (ST1148) +WHAT ARE THE VARIOUS RATINGS FOR DUBUQUE (ST1149) +DOES THE ESTEEM HAVE ANY CASUALTY REPORTS OF CATEGORY TWO OR CATEGORY THREE (ST1150) +SHOW LOCATION DATA AND VARIOUS MISSION CODES FOR SHIPS IN SOUTH PERSIAN SEA BEFORE SEVENTEEN AUGUST (ST1151) +ARE THERE ANY OPEN CASUALTY REPORTS FOR FIREBUSH (ST1152) +CHANGE THE ALERT FOR ARABIAN SEA (ST1153) +DEFINE AN ALERT FOR MOZAMBIQUE CHANNEL (ST1154) +HOW SOON WILL FLINT BE IN HOME PORT (ST1155) +DEFINE AREA ALERTS FOR EASTPAC (ST1156) +DELETE THE LATITUDE AND LONGITUDE DATA FOR WICHITA+S TRACK (ST1157) +EDIT WILLAMETTE+S LAT-LON DATA FROM HFDF SENSOR (ST1158) +ARE ANY OF WESTPAC+S SUBMARINES RATED M2 ON AAW (ST1159) +HAS FREDERICK BEEN DOWNGRADED YET (ST1160) +HOW MANY OF EASTPAC+S SHIPS WERE IN HOME PORT ON APRIL ONE (ST1161) +WHAT SHIP WASN+T DOWNGRADED IN SUPPLIES READINESS IN EIGHTY TWO (ST1162) +WHOSE MAXIMUM SUSTAINED SPEEDS ARE TWENTY EIGHT KNOTS OR LESS (ST1163) +HOW MANY METRIC TONS IS THE AVERAGE DISPLACEMENT OF SUBS THAT ARE IN PACIFIC FLEET (ST1164) +IS THERE NO MIDPAC SUBMARINE RATED M3 ON ASUW (ST1165) +WAS THERE NO WESTPAC SUB THAT WAS RATED M4 ON MOB IN ATLANTIC OCEAN FOURTEEN DECEMBER (ST1166) +WHAT ARE THE VARIOUS RESOURCE AREA RATINGS FOR FRESNO (ST1167) +SET UNIT OF MEASURE TO ENGLISH (ST1168) +WHOSE AVERAGE CRUISING SPEEDS ARE GREATER THAN NINE KNOTS (ST1169) +HOW MANY KILOMETERS IS IT BETWEEN GLACIER AND TOWNSVILLE (ST1170) +HOW MANY VESSELS ARE CODAG POWERED (ST1171) +HOW MANY SHIPS ARE THERE IN CHINA SEA (ST1172) +ARE THERE ANY FRIGATES WITHIN TWELVE MILES OF SIXTY NORTH THIRTY SEVEN EAST (ST1173) +WHICH VESSEL IS THE CLOSEST TO NOME (ST1174) +DECREASE LETTER SIZE BY ONE (ST1175) +HOW SOON CAN HECTOR CHOP FROM PACIFIC FLEET TO ATLANTIC FLEET (ST1176) +HOW MANY KILOMETERS IS ANCHORAGE FROM NEW-YORK (ST1177) +ARE THERE ANY CRUISERS LONGER THAN NINETEEN HUNDRED METERS THAT ARE IN SIBERIAN SEA (ST1178) +WHAT NUCLEAR SURFACE SHIPS IN GULF OF TONKIN ARE LAMPS CAPABLE (ST1179) +COUNT THE CARRIERS (ST1180) +HOW MANY MILES IS IT FROM BOMBAY TO THE IRONWOOD (ST1181) +TOTAL THE SHIPS THAT WILL ARRIVE IN DIEGO-GARCIA BY NEXT MONTH (ST1182) +HOW MANY SUBMARINES WILL BE IN GALVESTON BY THREE HUNDRED HOURS TOMORROW (ST1183) +RESET SWITCHES (ST1184) +DO ANY SHIPS THAT ARE IN PACIFIC FLEET HAVE SPS-48 (ST1185) +ARE ANY SUBS IN SEA OF JAPAN BELOW FIVE PERCENT OF THEIR FUEL CAPACITY (ST1186) +HOW MANY VESSELS WERE IN HONOLULU DURING THE LAST SIXTEEN WEEKS (ST1187) +WHICH HARPOON CAPABLE SHIPS ARE IN FORMOSA STRAIT (ST1188) +HOW MANY DAYS WOULD IT TAKE JARVIS TO GET TO PORT ELIZABETH AT HER MAX SPEED (ST1189) +WHAT TACAN CAPABLE FRIGATES ARE IN THE GULF OF CALIFORNIA (ST1190) +WHICH SQQ-23 CAPABLE CRUISERS ARE C2 (ST1191) +HOW MANY CARRIERS WERE IN ATLANTIC CITY ON MARCH ELEVEN (ST1192) +DO ANY SHIPS THAT ARE CAPABLE OF A MAXIMUM SPEED OF MORE THAN EIGHTEEN KNOTS HAVE NTDS (ST1193) +AREN+T THERE ANY SUBMARINES THAT HAVEN+T REPORTED AN EQUIPMENT PROBLEM SINCE TWELFTH JULY (ST1194) +HOW MANY SHIPS WERE DEPLOYED SINCE OCTOBER FIFTH (ST1195) +WERE ANY SUBS IN PORT VICTORIA ON FOURTEENTH OF JUNE (ST1196) +HOW MANY VESSELS ARE C3 ON PERSONNEL (ST1197) +WEREN+T ANY SHIPS IN SOUTH PHILIPPINE SEA IN SEPTEMBER (ST1198) +SHOW TRACKS OF THE FRIGATES IN KOREAN BAY (ST1199) +HOW MANY CRUISERS IN GULF OF THAILAND ON EIGHTEEN JANUARY HAVE CHANGED READINESS (ST1200) +WHICH LINK-11 CAPABLE CARRIERS HAVE AN EQUIPMENT RESOURCE RATING OF MORE THAN C4 (ST1201) +HOW MANY SHIPS WERE DEPLOYED IN NINETEEN EIGHTY THREE (ST1202) +ARE THERE ANY SUBMARINES THAT ARE IN YELLOW SEA CAPABLE OF A SPEED OF FORTY TWO KNOTS (ST1203) +HOW MANY SHIPS ARE IN PACIFIC OCEAN (ST1204) +DO ANY SUBS THAT ARE IN THE CORAL SEA HAVE AN M5 MIW M-RATING (ST1205) +HOW MANY VESSELS HAVE OPEN CASREPS (ST1206) +ARE ANY SHIPS CAPABLE OF A MAXIMUM SPEED OF MORE THAN FIFTY KNOTS (ST1207) +HOW MANY FRIGATES HAVE BEEN DEPLOYED SINCE THIRTEEN NOVEMBER (ST1208) +ARE THERE ANY CRUISERS THAT HAVEN+T REPORTED A PROBLEM WITH TRAINING SINCE TEN APRIL (ST1209) +HOW MANY CARRIERS CHOPPED TO PACFLT FROM LANTFLT IN EIGHTY FOUR (ST1210) +WHAT FOUR BISMARK SEA SHIPS WENT TO M1 ON ASW SINCE FIFTEEN MAY (ST1211) +HOW MANY SUBMARINES ARE THERE IN ASTORIA (ST1212) +WERE THERE ANY SHIPS IN ROSS SEA SEVENTEEN FEBRUARY (ST1213) +ARE THERE NO SUBS THAT ARE IN WEST SOLOMON SEA (ST1214) +HOW MANY VESSELS ARE CURRENTLY IN HOME PORT (ST1215) +WERE THERE NO SHIPS IN ARCTIC OCEAN ON FOURTEEN AUGUST (ST1216) +HOW MANY FRIGATES WERE DEPLOYED AS OF TWENTY NINE DECEMBER (ST1217) +DO ANY CRUISERS IN BERING SEA HAVE AN M2 AAW MISSION AREA (ST1218) +ARE THERE MORE THAN SIX CARRIERS THAT ARE IN THE GULF OF ALASKA (ST1219) +DELETE ALL MISSIONS (ST1220) +HOW MANY SHIPS ARE NOT TFCC CAPABLE (ST1221) +DISPLAY THE LAST FOUR LOCATIONS FOR JASON (ST1222) +HOW MANY SUBMARINES WERE IN BERING STRAIT ON TWENTY SEVEN MARCH (ST1223) +ARE ANY PROBLEMS REPORTED BY JUPITER DATED ONE AUGUST (ST1224) +DRAW THE LAST THREE LATITUDES AND LONGITUDES FOR TRACKS OF CRUISERS THAT ARE TASM CAPABLE (ST1225) +HOW MANY SHIPS IN THE INDIAN OCEAN HAVE ASUW M-RATINGS HIGHER THAN M3 (ST1226) +WILL ANY T-LAM CAPABLE SUBS BE IN BASS STRAIT BY FRIDAY (ST1227) +HOW MANY VESSELS WERE IN PERSIAN SEA ON TWENTY SIX JULY (ST1228) +WERE THERE MORE THAN TWELVE SHIPS AT SEA ON OCTOBER TWENTY FIVE (ST1229) +HOW MANY SLQ-32 CAPABLE FRIGATES ARE IN ARABIAN SEA (ST1230) +SHOW THE LAST TWO POSITIONS FOR TRACKS OF CRUISERS WHOSE SUPPLIES READINESS IS C5 (ST1231) +HOW MANY CRUISERS ARE C1 (ST1232) +WERE THERE MORE THAN SEVENTY CARRIERS EMPLOYED IN NINETEEN EIGHTY FIVE (ST1233) +HOW MANY SPS-40 SHIPS HAVE BEEN DEPLOYED SINCE THE TWENTY SIXTH JUNE (ST1234) +ARE THERE MORE THAN EIGHT SUBMARINES THAT ARE IN SAN-DIEGO (ST1235) +WERE THERE MORE THAN TWENTY NINE PACIFIC FLEET SHIPS EMPLOYED IN EIGHTY SIX (ST1236) +HOW MANY LAMPS CRUISERS ARE IN MOZAMBIQUE CHANNEL (ST1237) +ARE THERE MORE THAN SEVEN VESSELS AT SEA (ST1238) +CHANGE AREA ALERT CHESHIRE (ST1239) +IS THERE MORE THAN ONE SPS-48 CAPABLE SHIP IN EASTPAC (ST1240) +REDEFINE AREA ALERT PAC (ST1241) +HOW MANY HARPOON SHIPS IN SUBIC BAY HAVE REPORTED PROBLEMS WITH EQUIPMENT (ST1242) +IS THERE MORE THAN ONE TACAN CAPABLE FRIGATE IN PORT (ST1243) +REVIEW THE LAST THREE ALERTS (ST1244) +ARE THERE MORE THAN FIVE FRIGATES THAT ARE IN PORT (ST1245) +HOW MANY SQQ-23 CAPABLE CRUISERS ARE THERE (ST1246) +WAS THERE MORE THAN ONE CRUISER IN MIDPAC ON SEPTEMBER SEVENTEENTH (ST1247) +WHICH OF MIDPAC+S CARRIERS ARE M4 OR LOWER ON MOB (ST1248) +CLEAR THE DISPLAY WINDOW (ST1249) +SET THE TIME WINDOW TO START AT PRESENT TIME AND END AT TWO HUNDRED HOURS ZULU (ST1250) +SHOW THE CHART WITH LETTER SIZE DECREASED BY ONE (ST1251) +ARE THERE ANY CATEGORY TWO CASUALTY REPORTS FOR ANY OF THE SHIPS IN WESTPAC (ST1252) +WHAT IS THE MOST RECENT DEPLOYMENT DATE FOR THE KIRK (ST1253) +IS THERE AN EAST ATLANTIC OCEAN CARRIER RATED M5 ON MIW (ST1254) +DRAW TRACK OF KISKA (ST1255) +WHAT IS THE DESTINATION OF MANHATTAN (ST1256) +WHICH OF WESTPAC+S SUBMARINES ARE C2 (ST1257) +SHOW TRACK OF THE MARS SINCE SIXTEENTH OF JANUARY (ST1258) +WHAT+S THE NAME OF THE SHIP IN CHINA SEA (ST1259) +WHICH SHIPS HAVE A C3 PERSONNEL RESOURCE RATING (ST1260) +DISPLAY A NEW CHART PROJECTION OF SIBERIAN SEA (ST1261) +REDRAW THE SAME CHART WITH THE DATA SCREEN CLEARED (ST1262) +WHAT IS THE DESTINATION ARRIVAL HOUR FOR MERCURY (ST1263) +SET UNIT OF MEASURE PARAMETER TO METRIC (ST1264) +CAN METEOR GET TO HER DESTINATION BY SUNDAY (ST1265) +WHAT IS THE POSITION OF MIDGETT (ST1266) +DRAW THE TRACKS OF ALL SUBS THAT ARE IN GULF OF TONKIN (ST1267) +WHAT VESSELS WERE IN SEA OF JAPAN ON TWENTY EIGHT NOVEMBER (ST1268) +CLEAR THE SCREEN (ST1269) +ARE FRIDAY+S PROBLEMS WORSE THAN TUESDAY+S FOR THE MISHAWAKA (ST1270) +INCREASE LETTER SIZE TO MAXIMUM VALUE AND REDRAW (ST1271) +HOW LONG WOULD IT TAKE MONTICELLO TO GET FROM MIAMI TO WINAMAC+S CURRENT LOCATION (ST1272) +DEFINE A NEW MISSION (ST1273) +SHOW ME THE SAME CHART WITH THE TIME STARTED AT NINETEEN HUNDRED (ST1274) +REDISPLAY OVERLAY SOHO TURNING ON ECHO (ST1275) +RESET SYSTEM PARAMETERS TO DEFAULTS (ST1276) +HOW LONG IS IT GOING TO TAKE NASHUA TO GET TO WHERE SHE+S GOING (ST1277) +DISPLAY A NEW CHART PROJECTION USING TRUE-VIEW (ST1278) +WILL PEORIA BE IN PORT BY SIXTEEN HUNDRED HOURS (ST1279) +SET SWITCHES TO DEFAULTS (ST1280) +WILL MIDWAY+S C4 EQUIPMENT PROBLEM BE FIXED BY TWENTY FOUR APRIL (ST1281) +SET THE SWITCHES TO THEIR DEFAULTS (ST1282) +HOW LONG WOULD IT TAKE PIGEON TO GET TO ELEVEN NORTH NINETY WEST (ST1283) +WHAT+S CONSTELLATION+S FUEL LEVEL (ST1284) +SET LETTER SIZE TO FOUR (ST1285) +DRAW A CHART OF INDONESIA USING MERCATOR PROJECTION (ST1286) +IS THE PRESENT SPEED OF PLUCK LESS THAN FORTY KNOTS (ST1287) +SET COLOR OF HOOKED TRACK TO DIM RED (ST1288) +HOW MUCH FUEL IS ABOARD YORKTOWN (ST1289) +WILL THE POUGHKEEPSIE CHOP TO ATLANTIC FLEET BY EIGHTEEN HUNDRED HOURS ON TUESDAY (ST1290) +SHOW TRACK OF PRAIRIE CLEARING OVERLAYS (ST1291) +WHAT REMARKS ARE THERE ON RANGER+S LATEST CASUALTY REPORT (ST1292) +HAS THE RECLAIMER ARRIVED AT NAPLES YET (ST1293) +DISPLAY A NEW CHART USING GNOMONIC (ST1294) +SET DMDS PARAMETERS TO DEFAULTS (ST1295) +WHEN IS THE ESTIMATED TIME OF ARRIVAL IN HOME PORT FOR DALE (ST1296) +DRAW A CHART OF FORMOSA STRAIT (ST1297) +CLEAR THE DISPLAY (ST1298) +HOW LONG WOULD IT TAKE THE TICONDEROGA TO GET TO KODIAK AT HER AVERAGE SPEED (ST1299) +SHOW A CHART OF NORTH AND SOUTH MADAGASCAR (ST1300) +DISPLAY THE NAME OF THE HOOKED PORT (ST1301) +HOW LONG WOULD IT TAKE SACRAMENTO TO GET TO HER DESTINATION AT SIX KNOTS (ST1302) +WHAT IS THE AVERAGE OF ECONOMIC SPEEDS FOR SHIPS IN GULF OF CALIFORNIA (ST1303) +WHAT FRIGATES ARE IN THE PHILIPPINE SEA (ST1304) +DISPLAY A CHART OF KOREAN BAY WITH TIME WINDOW FROM THIRTEEN HUNDRED ZULU TO TWENTY TWO HUNDRED HOURS (ST1305) +WHAT CRUISERS WERE AT SEA TWENTY FOUR MAY (ST1306) +WHAT IS THE LATITUDE AND LONGITUDE OF THE SUBMARINE CLOSEST TO TEN SOUTH SIXTY EAST (ST1307) +WHICH CARRIERS ARE IN TOKYO (ST1308) +REVIEW THE LAST ALERT FOR SASSAFRAS (ST1309) +CLEAR THE WINDOWS (ST1310) +WHAT+S ARKANSAS+S GROSS DISPLACEMENT IN LONG TONS (ST1311) +IS THE BAINBRIDGE+S LAST CASUALTY REPORT RATED WORSE THAN HERS (ST1312) +LIST ALERTS (ST1313) +GIVE TEXAS+S CASUALTY REPORTS FROM THE LAST THREE MONTHS (ST1314) +SHOW ME ENGLAND+S HOME PORT (ST1315) +DRAW THE FOX+S LAST SIX SONAR SENSOR LOCATIONS (ST1316) +IS GRIDLEY+S REMAINING FUEL INSUFFICIENT TO ARRIVE IN PORT AT CURRENT SPEED (ST1317) +LIST HORNE+S AVERAGE DISPLACEMENT AND CAPABILITIES (ST1318) +SHOW REEVES+S TRACK IN BRIGHT YELLOW WITH THE STERETT+S IN DIM GREEN (ST1319) +IS FLASHER+S FUEL CAPACITY GREATER THAN GUARDFISH+S (ST1320) +WHAT IF GUITARRO+S MAXIMUM SUSTAINED SPEED WERE DECREASED BY FIVE KNOTS (ST1321) +WHAT IS HAWKBILL+S ETA AT EVERETT (ST1322) +WHAT IS THE PLUNGER+S FLEET IDENTIFICATION (ST1323) +DISPLAY POLLACK+S TRACK WITH OVERLAY BARGE (ST1324) +GET PUFFER+S TRAINING RESOURCE READINESS (ST1325) +SHOW QUEENFISH+S LOCATION ON TWENTY TWO FEBRUARY AND ITS VARIOUS CAPABILITIES (ST1326) +IS THE SEAWOLF+S POSITION FARTHER FROM OSGP THAN SWORDFISH+S POSITION IS (ST1327) +WHERE+S BADGER+S HOME PORT (ST1328) +IS BROOKE+S LAST LOCATION WITHIN A KILOMETER OF PAC ALERT (ST1329) +SUMMARIZE COPELAND+S RATINGS (ST1330) +WHAT+S THE DAVIDSON+S FUEL LEVEL AND FUEL CAPACITY (ST1331) +SHOW DOWNES+S RADAR LATITUDES AND LONGITUDES USING NOVA (ST1332) +WHAT IS FANNING+S LATITUDE AND LONGITUDE TODAY (ST1333) +DISPLAY HEPBURN+S TRACK IN BRIGHT RED WITH HIGH RESOLUTION (ST1334) +FIND JARRETT+S PERCENT FUEL ABOARD AND HER PRESENT POSITION (ST1335) +DRAW THE LOCKWOOD+S LOCATION WITH OVERLAYS BUD-TEST AND SAN-FRAN (ST1336) +IS MCCLUSKY+S DESTINATION THE SAME AS RAMSEY+S (ST1337) +SHOW ME RATHBURNE+S AND REASONER+S AVERAGE CRUISING SPEED (ST1338) +IS THE SAMPLE+S LATEST LATITUDE AND LONGITUDE CLOSER TO VANDERGRIFT+S THAN TO WADSWORTH+S (ST1339) +IS WHIPPLE+S MAX DRAFT LARGER THAN AJAX+S (ST1340) +WHAT IF APALACHICOLA+S PROPULSION TYPE WAS STEAM TURBINE INSTEAD OF GAS (ST1341) +GIVE THE BRUNSWICK+S CAT-2 PROBLEMS FOR THE LAST EIGHT WEEKS (ST1342) +IS CAMDEN+S HFDF SENSOR POSITION DATA NEWER THAN VISUAL DATA (ST1343) +LIST CAMPBELL+S CASUALTY REPORTS FROM LAST WEEK (ST1344) +IS CHATTAHOOCHEE+S BEAM AND LENGTH LESS THAN THE CITRUS+S (ST1345) +GET CLEVELAND+S PROPULSION TYPE AND FUEL CAPACITY (ST1346) +WHAT IS CONIFER+S CURRENT READINESS (ST1347) +IS CONFIDENCE+S DISTANCE FROM SCHENECTADY MORE THAN FIFTEEN KILOMETERS (ST1348) +DISPLAY THE KENNEDY+S PRESENT SUPPLIES READINESS (ST1349) +FIND INDEPENDENCE+S ALERTS (ST1350) +SHOW EISENHOWER+S OVERALL READINESS (ST1351) +IS MISSISSIPPI+S BEAM SMALLER THAN VIRGINIA+S (ST1352) +SHOW ME PUGET-1 (ST1353) +DISPLAY THE BIDDLE+S DISPLACEMENT IN METRIC TONS (ST1354) +WHAT+S CONQUEST+S DESTINATION (ST1355) +SHOW CONSTANT+S LOCATION ON TWENTY NINE AUGUST OF NINETEEN EIGHTY FOUR (ST1356) +IS DENVER+S LAST LATITUDE AND LONGITUDE CLOSER THAN DIXON+S TO THE BUMP ALERT (ST1357) +DISPLAY DUBUQUE+S LATEST POSIT IN DIM ORANGE WITH AREAS ON (ST1358) +IS ESTEEM+S LENGTH GREATER THAN THAT OF SHASTA (ST1359) +WHAT IS FIREBUSH+S ASW MISSION STATUS (ST1360) +GIVE THE FLINT+S VARIOUS RESOURCE RATINGS (ST1361) +DRAW FREDERICK+S LAST SEVEN POSITIONS AND THEIR SENSORS (ST1362) +IS FRESNO+S CURRENT SPEED SLOWER THAN GLACIER+S (ST1363) +SHOW HECTOR+S TRACK WITHOUT THE OVERLAY (ST1364) +SHOW IRONWOOD+S MOST RECENT CASUALTY REPORT DATE AND FULL POSITION DATA (ST1365) +WHAT IS JARVIS+S PRESENT LOCATION AND ESTIMATED TIME OF ARRIVAL AT DARWIN (ST1366) +IS JASON+S MAX SPEED LESS THAN FORTY KNOTS (ST1367) +LIST JUPITER+S PROBLEMS FOR THE LAST THREE MONTHS (ST1368) +IS THE KIRK+S OVERALL READINESS RATING GREATER THAN KISKA+S (ST1369) +IS MANHATTAN+S ARRIVAL HOUR EARLIER THAN MARS+S (ST1370) +WHAT+S MERCURY+S DISTANCE FROM THE SHERMAN (ST1371) +IS METEOR+S LAST LATITUDE AND LONGITUDE IN YELLOW SEA (ST1372) +IS MIDGETT+S GROSS DISPLACEMENT LESS THAN THAT OF TRIPOLI (ST1373) +DISPLAY THE MISHAWAKA+S POSITION USING OVERLAY GRILL (ST1374) +DISPLAY MONTICELLO+S AAW READINESS (ST1375) +IS NASHUA+S REMAINING FUEL GREATER THAN PEORIA+S (ST1376) +WHAT WAS PIGEON+S LOCATION AND ASUW AREA MISSION CODE TWENTY FIVE DECEMBER (ST1377) +IS THE PLUCK+S TEST DEPTH LESS THAN YORKTOWN+S (ST1378) +IS POUGHKEEPSIE+S MOB AREA M-RATING BELOW PRAIRIE+S (ST1379) +WHICH OF RECLAIMER+S MISSION AREAS ARE M1 OR HIGHER (ST1380) +IS THE DALE+S MAXIMUM SPEED GREATER THAN TICONDEROGA+S (ST1381) +DRAW SACRAMENTO+S LAST TWO LOCATIONS IN DATA WINDOW (ST1382) +GET ME SASSAFRAS+S AND SCHENECTADY+S ARRIVAL TIMES (ST1383) +IS SHASTA+S MAXIMUM DRAFT LARGER THAN SHERMAN+S (ST1384) +FIND TRIPOLI+S OVERALL C-RATING AND LATITUDE AND LONGITUDE (ST1385) +IS TUSCALOOSA+S PROPULSION TYPE THE SAME AS THE VANCOUVER+S (ST1386) +GET THE CROVL FOR TUSCALOOSA (ST1387) +SHOW THE PERSONNEL RESOURCE RATING FOR VANCOUVER (ST1388) +IS WABASH+S POSITION WEST OF WASP+S (ST1389) +SHOW THE EQUIPMENT C-CODE AND LAST LOCATION DATE FOR ANY SUB IN HOMER AFTER THIRTY MARCH (ST1390) +GIVE THE TRAINING READINESS OF WABASH THIRTY ONE JULY (ST1391) +IS WICHITA+S LAST LATITUDE AND LONGITUDE CLOSER THAN WILLAMETTE+S TO ICE-NINE (ST1392) +GET THE SUPPLIES READINESS OF WASP (ST1393) +WHAT ARE THE WINAMAC+S TWO WORST CASREPS (ST1394) +GET ME SUBMARINES THAT WERE IN OLYMPIA ON ONE JANUARY (ST1395) +FIND THE PREVIOUS OVERALL READINESS OF WICHITA (ST1396) +WHAT ARE MIDWAY+S CAPABILITIES (ST1397) +WHAT WAS CONSTELLATION+S LAST REPORTED POSITION (ST1398) +SHOW ALL THE SHIPS THAT ARE C5 ON PERSONNEL (ST1399) +DON+T END TIME WINDOW UNTIL TWENTY THREE HUNDRED HOURS (ST1400) +GIVE THE EQUIPMENT RESOURCE RATING ON WILLAMETTE (ST1401) +LIST RESOURCE AREA RATINGS FOR WINAMAC (ST1402) +WHAT IS MIDWAY AND RANGER+S CURRENT SPEED (ST1403) +GET SPEEDS AVAILABLE FOR CONSTELLATION AND RANGER (ST1404) +WHO HAS THE LEAST FUEL REMAINING (ST1405) +FIND ME THE MISSION AREA RATINGS FOR ARKANSAS (ST1406) +SHOW ON DATA SCREEN ARKANSAS+S TRACK SINCE FOUR OCTOBER (ST1407) +SHOW ONLY THE RADAR SENSOR POSITIONS AVAILABLE ON THE BAINBRIDGE (ST1408) +WHAT IF ENTERPRISE REPLACED TEXAS IN EAST PACIFIC OCEAN (ST1409) +WHEN IS ENGLAND ARRIVING IN PORT (ST1410) +WHAT WAS THE BAINBRIDGE+S READINESS JUNE NINE (ST1411) +GET THE NTDS CAPABLE SUBS AT SEA NOW (ST1412) +LIST VESSELS THAT WERE DEPLOYED ON THE FIRST OF SEPTEMBER (ST1413) +WHAT IF FOX INCREASED HER AVERAGE SPEED BY ONE KNOT (ST1414) +GET THE C-CODES FOR GRIDLEY (ST1415) +FIND ME ALL SPEEDS FOR SHIPS IN CORAL SEA (ST1416) +WHEN+S THE HORNE DUE IN PORT (ST1417) +START EDITING LOCATION DATA FOR ENTERPRISE+S TRACK (ST1418) +WHO HAD THE LOWEST AVERAGE C-RATING DURING LAST YEAR (ST1419) +WHEN IS REEVES CHANGING FLEETS (ST1420) +SHOW THE AREAS (ST1421) +GIVE SPEEDS OF C1 FRIGATES (ST1422) +REVIEW THE INDIAN OCEAN AREA ALERTS (ST1423) +WHAT IS THE TEXAS+S PROPULSION (ST1424) +LIST PACIFIC FLEET CRUISERS THAT ARE C2 ON TRAINING (ST1425) +GET POSITIONS AND SPEEDS FOR CARRIERS THAT ARE IN BISMARK SEA (ST1426) +FIND THE LOCATIONS AND NAMES OF SHIPS IN ROSS SEA (ST1427) +SHOW ME LATITUDES AND LONGITUDES OF TRACKS THAT ARE IN SOLOMON SEA (ST1428) +GIVE POSITIONS FOR SUBMARINES IN THE ARCTIC OCEAN THAT WENT TO C3 JANUARY SEVENTH (ST1429) +LIST LOCATIONS OF TRACKS FOR USN SHIPS (ST1430) +GET LATITUDES AND LONGITUDES AND NAMES OF ANY OF EASTPAC+S SUBS THAT WERE IN NORTH BERING SEA ON THE NINETEENTH OF NOVEMBER (ST1431) +FIND THE SUBMARINE+S POSITIONS FOR APRIL (ST1432) +WHAT+S THE SUB+S HOME PORT (ST1433) +SHOW ENGLAND+S LOCATIONS FOR LAST MONTH (ST1434) +GIVE ME LATITUDES AND LONGITUDES OF VESSELS THAT ARE IN GULF OF ALASKA (ST1435) +ARE ANY CRUISERS+S SUPPLIES RATINGS LOWER THAN THE FOX+S (ST1436) +IS STERETT WITHIN THIRTY SIX MILES OF FOUR DEGREES SEVENTEEN MINUTES SOUTH AND FORTY DEGREES SEVENTY SEVEN MINUTES WEST (ST1437) +DIDN+T ENGLAND ARRIVE AT MANCHESTER YESTERDAY (ST1438) +IS FLASHER THE SLOWEST VESSEL IN PACFLT (ST1439) +WHY DID GUARDFISH CHANGE OVERALL READINESS THREE MAY (ST1440) +IS GUITARRO IN THE BERING STRAIT (ST1441) +ISN+T HAWKBILL IN INDIAN OCEAN (ST1442) +IS PLUNGER GOING TO BE IN PORT VICTORIA MONDAY (ST1443) +WHEN IS THE POLLACK EXPECTED TO UPGRADE (ST1444) +IS PUFFER NEARER TO LENINGRAD THAN QUEENFISH (ST1445) +IS SEAWOLF WITHIN A MILE OF WELLINGTON (ST1446) +WHERE ARE SWORDFISH AND THE BADGER ENROUTE TO (ST1447) +IS THERE A SHIP IN PERSIAN SEA WITH LINK-11 (ST1448) +IS BROOKE EQUIPPED WITH TFCC (ST1449) +WHEN+S COPELAND SUPPOSED TO BE IN PORT (ST1450) +IS DAVIDSON DIESEL OR NUCLEAR (ST1451) +WHEN+LL THE DOWNES CHOP FROM PACIFIC FLEET TO ATLANTIC FLEET (ST1452) +IS FANNING LOCATED IN ABERDEEN OR MANCHESTER (ST1453) +WHAT IF SHE HAD GRIDLEY+S CAPABILITIES (ST1454) +IS JARRETT AT HALF FUEL CAPACITY OR LESS (ST1455) +WHERE IS THE LOCKWOOD DEPLOYED (ST1456) +DOES MCCLUSKY HAVE ANY M2 RATINGS (ST1457) +IS RAMSEY POWERED BY STEAM TURBINE (ST1458) +WHAT IF RATHBURNE HAD HORNE+S CASUALTY REPORTS (ST1459) +IS THE REASONER FARTHER FROM SAMPLE THAN VANDERGRIFT (ST1460) +IS WADSWORTH AT MORE THAN THREE QUARTERS HER FUEL CAPACITY (ST1461) +WHY IS WHIPPLE REPORTING C4 (ST1462) +IS THE AJAX MORE THAN SIX KILOMETERS FROM APALACHICOLA (ST1463) +WAS BRUNSWICK IN HOME PORT ON FIVE FEBRUARY (ST1464) +IS CAMDEN GAS POWERED (ST1465) +IS CAMPBELL MORE THAN A KILOMETER FROM THE CHATTAHOOCHEE (ST1466) +GET TOMORROW+S ESTIMATED TIME OF ARRIVAL FOR CITRUS (ST1467) +EDIT ARABIAN SEA AREA ALERT (ST1468) +FIND MOZAMBIQUE CHANNEL ALERT (ST1469) +GIVE ME A LIST OF EASTPAC SHIPS THAT ARE C5 (ST1470) +HOW MANY IN MIDPAC HAVE MORE THAN ONE QUARTER THEIR FUEL LEFT (ST1471) +WHAT FRIGATES THAT ARE IN WESTPAC HAVE FUEL CAPACITY LESS THAN TWO HUNDRED GALLONS (ST1472) +GET A LIST OF PAC AREA ALERTS (ST1473) +HAS REEVES+S MIW MISSION AREA GONE TO M3 BEFORE EIGHT AUGUST (ST1474) +SHOW THE ASW RATING FOR CLEVELAND (ST1475) +GIVE ME THE ECONOMIC SPEEDS FOR CRUISERS IN KODIAK (ST1476) +WHAT IS THE AAW RATING OF CONIFER (ST1477) +LIST ASUW READINESS OF CONFIDENCE NINE DECEMBER (ST1478) +WHAT PERSONNEL PROBLEM WAS REPORTED BY THE KENNEDY LAST MONTH (ST1479) +GET MOB RATING CODES FOR CARRIERS THAT ARE IN ATLANTIC OCEAN (ST1480) +FIND SENSORS (ST1481) +SHOW THE MAXIMUM SUSTAINED SPEED FOR SHIPS IN THE CHINA SEA (ST1482) +HOW MANY YEARS HAS INDEPENDENCE BEEN EMPLOYED (ST1483) +WHICH OF THEM HAS MOST REMAINING FUEL (ST1484) +WHAT SUBMARINES CARRY TASM (ST1485) +DOES EISENHOWER HAVE BOTH T-LAM AND SLQ-32 (ST1486) +WILL STERETT+S CAT-3 CASUALTY REPORT BE FIXED BY SATURDAY (ST1487) +DRAW MONGOLIA WITH YANKEE (ST1488) +DOES THE MISSISSIPPI HAVE SUFFICIENT FUEL TO GET TO NEWCASTLE (ST1489) +USE BRIGHT GREEN FOR TRACK ECG041 (ST1490) +DISPLAY THE AVERAGE CRUISING SPEED AND LATITUDE AND LONGITUDE OF VIRGINIA (ST1491) +USE DIM YELLOW FOR TRACKS OF CONVENTIONAL SURFACE SHIPS (ST1492) +SHOW THEIR MAX SPEEDS AND WHERE THEY ARE ENROUTE TO (ST1493) +GIVE ME THE EARLIEST DATE ON FLASHER+S EQUIPMENT PROBLEMS (ST1494) +SHOW THE MAXIMUM SPEED FOR BIDDLE (ST1495) +LIST THE LATEST DATE ON THE GUARDFISH+S CAT-4 TRAINING CASUALTY REPORTS (ST1496) +WON+T CONQUEST BE UPGRADED ON SUPPLIES FROM C1 TO C2 BY SEVEN MARCH (ST1497) +DO GUITARRO+S ALERTS INCLUDE OSGP (ST1498) +DISPLAY THE CURRENT SPEED OF CONSTANT (ST1499) +DO HAWKBILL+S CAPABILITIES INCLUDE SPS-40 (ST1500) +SHOW THE THREE SHIPS THAT ARE IN THE NORTH SIBERIAN SEA WITH THE LOWEST FUEL CAPACITY (ST1501) +WHAT IS THE AVERAGE SPEED AND ECONOMIC SPEED OF DENVER (ST1502) +DISPLAY THE FIVE SUBS IN GULF OF TONKIN WITH THE LARGEST FUEL CAPACITIES (ST1503) +HOW MUCH DOES INCLUDING TODAY+S DATA CHANGE THAT FIGURE (ST1504) +GET ALL THE MISSIONS EDITED TODAY (ST1505) +WHAT+S THE MAXIMUM SUSTAINED SPEED AND THE CROVL OF DIXON (ST1506) +IS LAMPS INSTALLED ABOARD DUBUQUE (ST1507) +FIND AVERAGE DISPLACEMENTS FOR VESSELS THAT ARE IN SEA OF JAPAN (ST1508) +WHAT IF DIESEL SHIPS WERE NOT COUNTED (ST1509) +COUNT THE NUCLEAR POWERED FRIGATES IN THE FORMOSA STRAIT (ST1510) +SHOW ME THE AVERAGE CRUISING SPEED AND FUEL CAPACITY FOR THIS FRIGATE (ST1511) +SHOW GROSS DISPLACEMENT OF CRUISERS THAT ARE SPS-48 CAPABLE (ST1512) +GIVE MAX SPEEDS AND CAPABILITIES OF CARRIERS IN THE GULF OF CALIFORNIA (ST1513) +LIST CURRENT OVERALL READINESS OF ESTEEM (ST1514) +WHAT IS THE AVERAGE PERSONNEL RATING CODE FOR USN SHIPS THAT ARE IN PHILIPPINE SEA (ST1515) +WILL PLUNGER+S LAST PROBLEM BE REPAIRED BY THURSDAY (ST1516) +GET THE EQUIPMENT READINESS OF FIREBUSH TWO JULY (ST1517) +WHEN WILL POLLACK+S LAST REPORTED TRAINING PROBLEM BE FIXED (ST1518) +FIND LAST MONTH+S PROBLEMS FOR FLINT (ST1519) +ARE THERE ANY CASUALTY REPORTS FOR THE FREDERICK THAT AFFECT MISSION AREAS (ST1520) +WHAT ARE THE OPEN CASUALTY REPORTS ON FRESNO (ST1521) +SHOW ME LAST WEEK+S CASREPS FROM GLACIER (ST1522) +WAS PUFFER+S LAST UPDATE ON WEDNESDAY (ST1523) +WHEN WILL THE HECTOR NEXT CHANGE FLEETS (ST1524) +WHAT IS THE DISTANCE FROM ALEXANDRIA TO IRONWOOD (ST1525) +WHAT+S THE TOTAL FUEL ABOARD JARVIS (ST1526) +GIVE PERCENT FUEL ABOARD JASON (ST1527) +LIST MIDPAC+S DEPLOYMENTS DURING EIGHT OCTOBER NINETEEN EIGHTY SIX (ST1528) +DRAW THE TRACKS IN HOOKED PORT (ST1529) +HOW FAR IS JUPITER FROM KIRK (ST1530) +SHOW ALL POSITIONS FOR THE HOOKED TRACK WITH CHART SWITCHES SET TO DEFAULT VALUES (ST1531) +WHAT SUBMARINES IN KOREAN BAY HAVE BOTH HARPOON AND TACAN (ST1532) +WHAT IS THE DISTANCE FROM KISKA TO MANHATTAN (ST1533) +WHAT SENSOR IS QUEENFISH+S LAST POSITION FROM (ST1534) +WAS THE MARS IN GULF OF THAILAND YESTERDAY (ST1535) +DOES MERCURY HAVE THE GREATEST FUEL CAPACITY OF SHIPS THAT ARE IN YELLOW SEA (ST1536) +WHAT PORT IS THE METEOR IN (ST1537) +WHAT SUBS IN PACIFIC OCEAN HAVE SQQ-23 INSTALLED (ST1538) +WHO+S CLOSEST TO MIDGETT (ST1539) +HOW FAR IS SEAWOLF+S LAST LOCATION FROM PAC ALERT (ST1540) +WHO IS IN CORAL SEA (ST1541) +HOW CLOSE IS THE SWORDFISH+S LATEST LATITUDE AND LONGITUDE TO FOURTEEN DEGREES SOUTH NINETY DEGREES EAST (ST1542) +WHICH CRUISER IN WEST BISMARK SEA IS NEAREST TO MISHAWAKA (ST1543) +COUNT THE NUMBER OF NTDS VESSELS THAT ARE C3 (ST1544) +WHICH SHIPS IN ROSS SEA HAVE A LINK-11 CAPABILITY (ST1545) +HOW MANY OF THE BADGER+S LOCATIONS ARE IN THE SOLOMON SEA (ST1546) +CENTER IT AROUND THE ARCTIC OCEAN (ST1547) +DOES MONTICELLO HAVE LOWEST FUEL CAPACITY OF ALL THE BERING SEA FRIGATES (ST1548) +HOW NEAR IS NASHUA TO HER (ST1549) +BROOKE+S DISTANCE FROM PEORIA (ST1550) +HOW OLD IS COPELAND+S OLDEST CASUALTY REPORT (ST1551) +IS ANYBODY IN THE GULF OF ALASKA TFCC CAPABLE (ST1552) +WHICH CARRIER HAS THE LARGEST DISPLACEMENT (ST1553) +WHAT CAPABILITIES DOES PIGEON HAVE (ST1554) +HOW BAD IS DAVIDSON+S LAST PROBLEM (ST1555) +WHICH CRUISERS IN BERING STRAIT ARE TASM EQUIPPED (ST1556) +WHAT RATING HAS PLUCK DEGRADED TO ON SUPPLIES READINESS (ST1557) +WAS THE YORKTOWN IN INDIAN OCEAN FOUR JUNE (ST1558) +HOW LARGE IS DOWNES+S FUEL CAPACITY (ST1559) +GET THREATS (ST1560) +SET SYSTEM SWITCHES TO THEIR DEFAULT VALUES (ST1561) +DOES THE POUGHKEEPSIE HAVE THE SMALLEST FUEL CAPACITY OF BASS STRAIT CARRIERS (ST1562) +DISPLAY THE SHIP CLOSEST TO PRAIRIE (ST1563) +TOGGLE AREA SWITCH (ST1564) +SET CHART SWITCH RESOLUTION TO LOW (ST1565) +DOES THE RECLAIMER HAVE ENOUGH FUEL TO ARRIVE AT HIS DESTINATION (ST1566) +TURN RESOLUTION PARAMETER OFF (ST1567) +FIND THE VARIOUS CAPABILITIES FOR STEAM TURBINE SHIPS IN EAST PERSIAN SEA (ST1568) +SHOW ME LATITUDES AND LONGITUDES AND C-RATINGS FOR ALL OF WESTPAC+S SUBMARINES THAT WERE IN THEIR HOME PORTS ON ONE FEBRUARY (ST1569) +GIVE THE VARIOUS C-RATINGS FOR THE DALE (ST1570) +WILL TICONDEROGA BE CHOPPING TO ATLANTIC FLEET TODAY (ST1571) +WHAT IF THE MIW MISSION AREA RATING OF SACRAMENTO WERE M4 UNTIL TWENTY FOUR HUNDRED (ST1572) +LIST POSITIONS AND M-RATINGS FOR ALL OF EASTPAC+S SHIPS THAT WERE IN THEIR HOME PORTS TWELVE SEPTEMBER (ST1573) +WHAT IS THE AVERAGE ASW RATING M-CODE FOR USN C4 SUBS THAT ARE IN THE ARABIAN SEA (ST1574) +SHOW NEW DEFINITIONS INVOLVING SASSAFRAS (ST1575) +DISPLAY THE FUEL CAPACITY AND PROPULSION TYPE FOR SCHENECTADY (ST1576) +WHAT+S THE FUEL CAPACITY IN TONS FOR THE SHASTA (ST1577) +HOW MANY FEET LONG IS SHERMAN (ST1578) +HOW SOON WILL TRIPOLI NEXT CHOP TO ATLANTIC FLEET FROM PACIFIC FLEET (ST1579) +RESET PARAMETERS TO DEFAULTS (ST1580) +GET THE SAME INFORMATION FOR TUSCALOOSA (ST1581) +DRAW THE TRACK DDD992 IN BRIGHT ORANGE (ST1582) +WHAT SUBMARINE IN TOWNSVILLE IS M4 OR HIGHER ON AAW (ST1583) +HOW SLOW WOULD VANCOUVER HAVE TO GO TO GET TO NOME ON HER REMAINING FUEL (ST1584) +WHAT TIME WILL WABASH ARRIVE AT HER DESTINATION (ST1585) +HOW SOON CAN WASP GET TO WITHIN TWENTY NINE MILES OF WICHITA (ST1586) +SHOW THE CHART OF MOZAMBIQUE CHANNEL USING STEREOGRAPHIC PROJECTION (ST1587) +HOW LONG BEFORE WILLAMETTE WILL BE IN EASTPAC (ST1588) +AREN+T THE WINAMAC AND MIDWAY IN MIDPAC (ST1589) +HOW SOON CAN CONSTELLATION GO FROM WESTPAC TO THE ATLANTIC OCEAN (ST1590) +WHAT IS THE NAME AND ETA AT ANCHORAGE OF THE SUB IN CHINA SEA (ST1591) +HOW EARLY CAN RANGER BE THERE (ST1592) +WHAT IS THE DATE AND HOUR OF ARRIVAL IN PORT FOR ARKANSAS (ST1593) +FIND ME LENGTH AND BEAM OF THE BAINBRIDGE IN METERS AND FEET (ST1594) +HOW FAST COULD ENTERPRISE GET TO SIX NORTH NINETEEN WEST (ST1595) +SHOW CROVLS AND TRACKS FOR T-LAM VESSELS IN SIBERIAN SEA (ST1596) +GIVE THE C-CODE AND LAST POSITION DATE FOR ANY VESSEL IN THE GULF OF TONKIN AFTER JANUARY SIXTEEN (ST1597) +REDEFINE AREA OSGP (ST1598) +LIST THE NAMES AND RESOURCES OF SHIPS THAT ARE IN SEA OF JAPAN (ST1599) +GET BEAMS AND DRAFTS OF FRIGATES IN FORMOSA STRAIT (ST1600) +DISPLAY THE TRACKS AND SPEEDS OF ALL CRUISERS THAT ARE IN GULF OF CALIFORNIA (ST1601) +SET ARROW AND CEP SWITCHES TO OFF (ST1602) +FIND THE DEGRADATIONS AND REASONS FOR TEXAS (ST1603) +GIVE ME A LIST OF THE NAMES AND ESTIMATED TIME OF ARRIVAL AT THEIR DESTINATIONS FOR CARRIERS IN THE PHILIPPINE SEA (ST1604) +WHAT+S THE NAME AND THE VARIOUS RATINGS OF THE SHIP IN KOREAN BAY (ST1605) +GET ME A LIST OF ALL OF SATURDAY+S AND SUNDAY+S CASUALTY REPORTS FOR ENGLAND (ST1606) +IS MORE THAN ONE SLQ-32 FRIGATE IN PORT (ST1607) +SHOW LENGTHS AND THE BEAMS OF SHIPS THAT ARE IN GULF OF THAILAND (ST1608) +IS MORE THAN ONE SPS-40 CAPABLE CRUISER IN PORT (ST1609) +GIVE REMARKS AND THEIR DATES FOR FANNING+S LAST FOUR PROBLEMS (ST1610) +LIST THE DESTINATIONS AND ARRIVAL HOUR AT DESTINATION FOR ALL SUBMARINES (ST1611) +IS MORE THAN HALF OF HEPBURN+S FUEL LEFT (ST1612) +SHOW SWITCH SETTINGS (ST1613) +WHAT PROBLEMS FROM FRIDAY ARE CATEGORY THREE OR LOWER FOR SHIPS THAT ARE IN THE BISMARK SEA (ST1614) +FIND ME LOCATIONS AND THE MOST RECENT DEPLOYMENT DATES FOR SHIPS IN YELLOW SEA (ST1615) +DON+T WE HAVE ANY LAMPS CARRIERS THAT ARE IN PACIFIC OCEAN (ST1616) +SHOW ALL ALERTS WITHIN THE LAST SIXTY HOURS (ST1617) +DRAW ON THE SCREEN THE CURRENT LOCATION AND C-CODES FOR FOX (ST1618) +WHAT WAS THE REASON FOR JARRETT+S EARLIEST DEGRADATION (ST1619) +GIVE MONDAY+S AND TUESDAY+S CASUALTY REPORTS FOR VESSELS IN CORAL SEA (ST1620) +GET SWITCH SETTINGS (ST1621) +LIST NAMES AND LATITUDES AND LONGITUDES FOR SPS-48 FRIGATES IN ROSS SEA TWENTIETH NOVEMBER (ST1622) +WHAT CASUALTY REPORTS ARE MISSION DEGRADING (ST1623) +GET SUNDAY AND MONDAY+S UPDATES ON THE GRIDLEY (ST1624) +WAS TODAY+S LAST SONAR SENSOR LATITUDE AND LONGITUDE FOR HORNE IN NORTH SOLOMON SEA (ST1625) +WHAT+RE THE CATEGORIES FOR LOCKWOOD+S PROBLEMS (ST1626) +FIND POSITION DATA FOR CRUISERS EMPLOYED BEFORE LAST APRIL TWENTY SECOND (ST1627) +SHOW ME FUEL LEVELS FOR GAS CARRIERS IN THE ARCTIC OCEAN (ST1628) +GIVE C-RATINGS FOR SHIPS THAT ARE IN BERING SEA (ST1629) +SHOW TRACKS FOR THE SUBMARINES (ST1630) +LIST MAXIMUM DRAFTS FOR SHIPS IN GULF OF ALASKA (ST1631) +GET POSITIONS FOR ALL SUBS THAT ARE IN BERING STRAIT (ST1632) +DISPLAY THE TRACKS FOR REEVES AND FOR STERETT (ST1633) +FIND M-CODES FOR ANY VESSELS IN INDIAN OCEAN (ST1634) +SHOW ME DATA FOR THE FLASHER UPDATED SINCE ELEVEN HUNDRED HOURS ZULU (ST1635) +REDO FIGURES FOR GUARDFISH (ST1636) +GIVE LOCATION DATA FOR HOOKED PORT (ST1637) +DRAW THE TRACKS FOR USN SHIPS (ST1638) +LIST M-CODES FOR ANY FRIGATES THAT ARE IN BASS STRAIT (ST1639) +WHAT CRUISERS ARE LOCATED IN PERSIAN SEA (ST1640) +GET FULL LATITUDE AND LONGITUDE DATA FOR TRACK FFF088 (ST1641) +FIND POSITION OF THE CARRIERS THAT HAVE GONE TO M1 ON ASUW SINCE TWENTY FOURTH OF MAY (ST1642) +SHOW LOCATION DATA FOR PLH003 (ST1643) +WAS MCCLUSKY+S LATITUDE AND LONGITUDE ON SUNDAY IN ARABIAN SEA (ST1644) +DISPLAY THE POSITION OF GUITARRO (ST1645) +LIST LOCATION DATA FOR ALL TRACKS (ST1646) +GET ALL REMARKS FOR HAWKBILL (ST1647) +EDIT LATITUDE AND LONGITUDE DATA FOR TRACK A42128 (ST1648) +FIND THE POSIT AND MAXIMUM SPEED OF PLUNGER WITH UNIT OF MEASURE PARAMETER SET TO ENGLISH (ST1649) +SHOW FULL POSITION DATA FOR ALL TRACKS (ST1650) +TOGGLE FOOTER AND GREAT CIRCLE SWITCHES (ST1651) +GIVE LOCATION DATA FOR THE POLLACK (ST1652) +ARE ANY OF RAMSEY+S LAST SEVEN LOCATIONS IN MOZAMBIQUE CHANNEL (ST1653) +LIST LATITUDE AND LONGITUDE OF PUFFER ON EIGHTEEN FEBRUARY (ST1654) +HOW CLOSE IS THE QUEENFISH TO EASTPAC (ST1655) +DISPLAY THE ESTIMATED TIME TO REPAIR FOR THE LATEST CASUALTY REPORT FROM SEAWOLF (ST1656) +WHAT IS THE ESTIMATED TIME TO REPAIR ON RATHBURNE+S HARPOON (ST1657) +FIND NAMES AND RESOURCES OF THE MIDPAC SHIPS (ST1658) +WHAT ARE THE VARIOUS RESOURCE AREA RATINGS ON SWORDFISH (ST1659) +SHOW A CHART CENTERED AROUND BADGER (ST1660) +WHICH OF THESE ARE LOWER THAN M4 IN THE ASW MISSION AREA (ST1661) +DISPLAY A CHART CENTERED AROUND BROOKE USING TRUE-VIEW PROJECTION (ST1662) +WHICH SUBMARINES THAT ARE C5 ARE IN WESTPAC (ST1663) +DRAW CHART CENTERED AROUND COPELAND (ST1664) +GIVE ME A LIST OF SHIPS THAT ARE M3 ON MIW AND IN NEW-YORK (ST1665) +WHICH FRIGATES ARE IN EVERETT (ST1666) +WHEN+LL DAVIDSON BE REPAIRING THAT PROBLEM WITH TACAN (ST1667) +SHOW VESSELS IN CHINA SEA AND THEIR PROPULSION TYPES (ST1668) +GIVE ME ANY SHIPS THAT ARE C1 (ST1669) +WHAT IS THE TOTAL NUMBER OF FRIGATES IN SIBERIAN SEA (ST1670) +LIST THE USN CRUISERS THAT ARE IN GULF OF TONKIN (ST1671) +GET SEA OF JAPAN CARRIERS THAT ARE C2 ON OVERALL READINESS (ST1672) +SHOW THE SAME SHIPS WITH FULL LAT AND LONG DATA FOR EACH (ST1673) +FIND SUBMARINES IN THE FORMOSA STRAIT SINCE THIRTEEN AUGUST (ST1674) +SHOW SHIPS IN GULF OF CALIFORNIA (ST1675) +WHICH SQQ-23 CAPABLE SUBS THAT ARE IN PHILIPPINE SEA THAT ARE M4 OR LOWER ON ASW CHOPPED TO PACIFIC FLEET AFTER TEN DECEMBER (ST1676) +GIVE ME DEPLOYMENTS OF VESSELS ON FIFTEEN MARCH (ST1677) +ARE THERE ANY SHIPS DEPLOYED IN THE KOREAN BAY THAT ARE C3 (ST1678) +LIST DEPLOYMENTS OF FRIGATES DURING JULY (ST1679) +HOW MANY KILOMETERS ARE THERE BETWEEN DOWNES AND FANNING (ST1680) +GET USN CRUISERS DEPLOYED IN NINETEEN EIGHTY ONE (ST1681) +DID ANY CARRIERS THAT ARE IN BOMBAY EVER GO TO M5 ON AAW (ST1682) +FIND SHIPS THAT WERE C4 ON SEVENTEEN OCTOBER (ST1683) +TOTAL THE SUBMARINES IN THE GULF OF THAILAND (ST1684) +SHOW SHIPS WITH NTDS EMPLOYED BEFORE FOURTEEN JUNE (ST1685) +GIVE SUBS THAT ARE C5 THAT AREN+T DEPLOYED (ST1686) +LIST VESSELS IN YELLOW SEA AND THEIR CURRENT SPEEDS (ST1687) +HOW MANY SHIPS THAT ARE LINK-11 CAPABLE ARE THERE AT DIEGO-GARCIA (ST1688) +GET ME THE FRIGATES THAT ARE M1 ON ASUW (ST1689) +FIND CRUISERS THAT ARE IN HOME PORT (ST1690) +COUNT THE CARRIERS THAT ARE AT GREATER THAN THREE QUARTERS THEIR FUEL CAPACITY (ST1691) +SHOW SHIPS THAT WERE M2 ON MOB ON TWELVE SEPTEMBER (ST1692) +GIVE ALL SUBMARINES DEPLOYED AFTER NINETEEN JANUARY (ST1693) +LIST SHIPS IN THE SOUTH PACIFIC OCEAN AND THEIR DESTINATIONS (ST1694) +DO ANY SUBS THAT ARE IN CORAL SEA HAVE MORE FUEL THAN HER (ST1695) +GET VESSELS THAT ARE C1 (ST1696) +FIND ME SHIPS THAT WERE IN HOME PORT ON MARCH ONE (ST1697) +HOW MANY FRIGATES IN BISMARK SEA ARE DIESEL PROPELLED (ST1698) +SHOW THE CRUISERS THAT WERE IN ROSS SEA AS OF TWENTY THREE NOVEMBER (ST1699) +GIVE CARRIERS THAT ARE IN SOLOMON SEA AND THEIR AVERAGE DISPLACEMENTS (ST1700) +ARE THERE SHIPS IN ARCTIC OCEAN THAT ARE C2 (ST1701) +LIST THE SUBMARINES THAT ARE IN WEST BERING SEA AND C3 ON OVERALL READINESS (ST1702) +GET SHIPS WITH SUPPLY CASREPS (ST1703) +FIND C4 SUBS THAT ARE IN GALVESTON (ST1704) +HOW MANY SUBMARINES IN GULF OF ALASKA HAVE TEST DEPTHS LESS THAN A THOUSAND METERS (ST1705) +SHOW ME SHIPS THAT ARE IN THE BERING STRAIT THAT HAVE CASUALTY REPORTS DATED EARLIER THAN REASONER+S OLDEST ONE (ST1706) +GIVE FRIGATES THAT ARE IN INDIAN OCEAN AND THAT ARE M3 ON MIW (ST1707) +HOW MANY CRUISERS ARE IN PACIFIC FLEET (ST1708) +LIST THE CARRIERS THAT ARE C5 ON OVERALL READINESS (ST1709) +HOW MANY SHIPS WHOSE AVERAGE SPEEDS ARE AS FAST AS SAMPLE+S WERE IN HONOLULU APRIL TWENTY SIX (ST1710) +GET SUBMARINES IN BASS STRAIT WITH TFCC (ST1711) +DO ANY SHIPS THAT ARE IN PERSIAN SEA HAVE ASW MISSION AREA OF M4 (ST1712) +FIND THE SUBS AND THEIR FLEET IDENTIFICATIONS (ST1713) +GIVE ME A LIST OF VESSELS IN PORT ELIZABETH (ST1714) +WHAT TASM SHIPS ARE IN ARABIAN SEA (ST1715) +GET A LIST OF ALL FRIGATES DEPLOYED THIRTY MAY (ST1716) +HOW MANY CRUISERS WITH ECONOMIC SPEEDS ABOVE THIRTY FIVE KNOTS ARE IN THE MOZAMBIQUE CHANNEL (ST1717) +SHOW ME CARRIERS WHOSE PERSONNEL READINESS IS C1 (ST1718) +GIVE SHIPS THAT ARE C2 AND AREN+T DEPLOYED (ST1719) +LIST C3 SUBMARINES THAT ARE IN EASTPAC (ST1720) +HOW MANY SHIPS HAVE GROSS DISPLACEMENTS GREATER THAN VANDERGRIFT+S (ST1721) +GET ANY SUBS THAT ARE IN MIDPAC AND RATED M5 ON AAW (ST1722) +FIND VESSELS THAT WENT TO M1 ON ASUW AFTER FEBRUARY TWENTY EIGHTH (ST1723) +SHOW ANY SHIPS THAT WERE C4 ON THIRTEENTH OF AUGUST (ST1724) +HOW MANY FRIGATES ARE C4 OR ABOVE (ST1725) +GIVE ME CRUISERS DEPLOYED SINCE TWENTY TWO DECEMBER (ST1726) +LIST ANY CARRIERS THAT ARE C1 ON EQUIPMENT READINESS (ST1727) +WHICH OF THE WESTPAC SHIPS ARE ON STATION TODAY (ST1728) +GET PACFLT SUBMARINES THAT WERE C2 ON TWENTY EIGHT MARCH (ST1729) +DECREASE THE LETTER SIZE BY ONE ON CHART OF MEXICO (ST1730) +FIND ALL CRUISERS AND THEIR DESTINATIONS (ST1731) +MAKE LETTERS SIZE FOUR (ST1732) +SHOW NAMES AND MAXIMUM SUSTAINED SPEEDS FOR THE SUBS (ST1733) +WHAT CARRIER IS NEAREST HEPBURN (ST1734) +GIVE A LIST OF ALL VESSELS (ST1735) +LIST SHIPS DEPLOYED TWENTY NINE JULY (ST1736) +GET ME USN FRIGATES IN ATLANTIC OCEAN SINCE TWENTY SEVEN OCTOBER (ST1737) +WHAT+S THE WADSWORTH+S FUEL STATUS (ST1738) +FIND CRUISERS IN CHINA SEA AS OF TWENTY THREE JUNE (ST1739) +SHOW CARRIERS THAT WERE DEPLOYED ON TWENTY FIVE SEPTEMBER (ST1740) +GIVE FUEL LEVELS FOR SHIPS IN THE EAST SIBERIAN SEA (ST1741) +DELETE WHIPPLE+S NEWEST LATITUDE DATA (ST1742) +LIST THE LAST TWO LATITUDES AND LONGITUDES FOR JARRETT (ST1743) +REVIEW AJAX+S LAST EIGHT ALERTS (ST1744) +WEREN+T THERE MORE THAN FOUR SUBMARINES IN PACIFIC FLEET IN EIGHTY TWO (ST1745) +DISPLAY THE LAST LONGITUDE OF THE HOOKED TRACK (ST1746) +HAVE NOT MORE THAN NINE SHIPS BEEN IN THEIR HOME PORTS SINCE TWENTY SIX JANUARY (ST1747) +HAD THE LOCKWOOD MADE THAT CASUALTY REPORT EARLIER THAN SIXTEEN HUNDRED HOURS (ST1748) +DELETE ANY MISSIONS THAT WERE CHANGED SINCE YESTERDAY (ST1749) +GET THE LAST FOUR POSITIONS OF MCCLUSKY (ST1750) +FIND ME CAPABILITIES THAT RAMSEY HAS (ST1751) +WHAT SUBS ARE REPORTING M2 ON MOB (ST1752) +SHOW THE AREA ALERTS FOR GULF OF TONKIN (ST1753) +GIVE T-LAM VESSELS THAT WEREN+T DEPLOYED IN NOVEMBER (ST1754) +WHO HAS SLQ-32 CAPABILITY IN SEA OF JAPAN (ST1755) +LIST ANY SPS-40 SHIPS DEPLOYED BEFORE TWENTY SEVEN APRIL AND THAT WEREN+T IN HOME PORT APRIL ONE (ST1756) +WHAT IS THE LAST POSITION (ST1757) +GET ALL LAMPS CAPABLE FRIGATES WHICH ARE IN THE FORMOSA STRAIT (ST1758) +WHAT IS THE MOST RECENT REPORT DATE FOR APALACHICOLA+S TRAINING CASUALTY REPORT (ST1759) +FIND SPS-48 CAPABLE CRUISERS (ST1760) +WHAT+S THE AVERAGE UNIT READINESS FOR THE THREE FASTEST CARRIERS THAT ARE IN GULF OF CALIFORNIA (ST1761) +SHOW ME ANY HARPOON CAPABLE SHIPS THAT WERE IN PHILIPPINE SEA ON THIRTY MAY AND THAT WERE C3 ON FEBRUARY TWENTY ONE (ST1762) +GIVE THE TACAN SUBMARINES (ST1763) +EDIT THE THREAT INVOLVING RATHBURNE (ST1764) +LIST SQQ-23 CAPABLE SHIPS THAT ARE C4 (ST1765) +REDRAW CHART WITH GRID AND THE GROUPS PARAMETERS TOGGLED (ST1766) +DISPLAY BRUNSWICK+S TRACK WITH OVERLAY BOX (ST1767) +GET ANY NTDS CAPABLE SUBS IN PORT NOW (ST1768) +FIND LINK-11 CAPABLE VESSELS THAT ARE IN ATLANTIC CITY (ST1769) +REDRAW THE CHART WITH NO RESOURCE DATA DISPLAYED (ST1770) +GIVE ME A LIST OF ANY TFCC CAPABLE SHIPS NOT C5 ON SUPPLIES (ST1771) +DEFINE THE TIME WINDOW FOR THE CHART OF MOZAMBIQUE TO START AT PRESENT TIME AND END AT ELEVEN HUNDRED (ST1772) +GET ME A LIST OF TASM FRIGATES THAT WERE LOCATED IN KOREAN BAY ON TWENTY NINTH AUGUST (ST1773) +REDEFINE THE TIME WINDOW FOR THE CHART OF NEW CALEDONIA TO START SIX DAYS SOONER (ST1774) +ARE THERE ANY CATEGORY FOUR PROBLEMS FOR REASONER (ST1775) +SHOW THE LATEST DEPLOYMENT DATES FOR CRUISERS (ST1776) +WHICH CARRIERS HAVE CATEGORY TWO CASUALTY REPORTS (ST1777) +REDRAW CHART OF NEW-ZEALAND INCREASING LETTER SIZE TO TWO (ST1778) +IS THERE A T-LAM INSTALLED ON SAMPLE (ST1779) +GIVE LAST WEEK+S CATEGORY THREE PROBLEMS FOR SHIPS THAT ARE IN THE GULF OF THAILAND (ST1780) +WHAT IS THE SETTING OF UOM SWITCH (ST1781) +LIST MIW RATING CODES FOR ALL OF MIDPAC+S C1 SUBMARINES IN YELLOW SEA (ST1782) +HAS THE VANDERGRIFT CHOPPED TO PACIFIC FLEET YET (ST1783) +WOULDN+T IT HAVE TAKEN LONGER WITH WADSWORTH (ST1784) +HOW MUCH FASTER IS CAMDEN+S AVERAGE CRUISING SPEED COMPARED TO CAMPBELL+S (ST1785) +MAKE CHART OF PHILIPPINES AGAIN REDEFINING THE OVERLAYS (ST1786) +GET DESTINATIONS AND ESTIMATED TIME OF ARRIVAL AT DESTINATION FOR SLQ-32 CAPABLE SHIPS (ST1787) +CAN WHIPPLE GET TO PACIFIC OCEAN BY EIGHTEEN HUNDRED HOURS ON TUESDAY (ST1788) +WHAT SUBS RATED ABOVE M3 ON ASW WILL CHANGE READINESS BY DECEMBER SECOND (ST1789) +DISPLAY THE CHART OF CORAL SEA WITH SOHO OVERLAY (ST1790) +DRAW A CHART OF NORTH BISMARK SEA WITH TIME WINDOW STARTED AT FIVE HUNDRED HOURS ZULU (ST1791) +FIND THE VARIOUS FLEET IDENTIFICATIONS FOR THE VESSELS (ST1792) +SHOW ME THE SAME CHART WITH BARGE (ST1793) +ON WHAT DAY IS AJAX DUE IN ABERDEEN (ST1794) +REDRAW CHART OF SOLOMON SEA WITH NOVA OVERLAY ADDED (ST1795) +SET LETTER SIZE TO THE GREATEST VALUE (ST1796) +DISPLAY TRACKS OF ANY SHIPS THAT ARE IN ARCTIC OCEAN (ST1797) +REDO CHART OF BERING SEA SHOWING ONLY LOCATIONS FROM VISUAL SENSOR (ST1798) +SET THE COLOR OF CHATTAHOOCHEE+S TRACK TO DIM RED (ST1799) +SHOW DEFINITIONS OF ANY ALERTS INVOLVING APALACHICOLA (ST1800) +DRAW A CHART OF PANAMA CENTERING IT AROUND THE BRUNSWICK (ST1801) +ADD BUD-TEST OVERLAY (ST1802) +REDO CHART OF SINGAPORE USING MERCATOR PROJECTION (ST1803) +HAS THE CAMDEN BEEN AT SEA LONGEST OF ALL FRIGATES IN PACIFIC FLEET (ST1804) +SHOW C2 CRUISERS THAT ARE IN PACIFIC FLEET (ST1805) +REDRAW CHART OF TAIWAN WITH THE NEW LOCATION DATA INCLUDED (ST1806) +GIVE C3 CARRIERS IN GULF OF ALASKA ON FIFTEENTH OF MARCH (ST1807) +REDISPLAY CHART OF THE BERING STRAIT AFTER CLEARING SAN-FRAN (ST1808) +DISPLAY LENGTHS AND BEAMS FOR SHIPS IN PORT VICTORIA (ST1809) +LIST ALL GROUP NAMES (ST1810) +SHOW THE DEFINITION OF CHESHIRE THREAT (ST1811) +HAS THE CAMPBELL ARRIVED AT HIS DESTINATION YET (ST1812) +GET ME THE NAMES OF SUBMARINES THAT ARE IN HOOKED PORT (ST1813) +REDRAW CHART OF ARCTIC OCEAN WITH HFDF SENSOR LATITUDE AND LONGITUDE DATA DELETED (ST1814) +INCREASE THE LETTER SIZE TO THREE FOR CHART OF INDIAN OCEAN (ST1815) +FIND THE VARIOUS FLEET IDENTIFICATIONS FOR SPS-40 SHIPS IN BASS STRAIT (ST1816) +SHOW A CHART OF UNITED STATES (ST1817) +WHAT SUBS WENT TO C4 ON TRAINING AFTER TWO JULY (ST1818) +SHOW ALERTS IN WHICH SHE+S INVOLVED (ST1819) +REDO CHART OF WEST PERSIAN SEA TOGGLING UNIT OF MEASURE SWITCH (ST1820) +GIVE TUESDAY+S CASUALTY REPORTS FROM CITRUS (ST1821) +LIST THE SPEED OF VESSELS THAT ARE IN ARABIAN SEA (ST1822) +MAKE THE CHART AGAIN IN HIGH RESOLUTION (ST1823) +DISPLAY CHART OF THE MOZAMBIQUE CHANNEL TURNING ON NTDS PARAMETER (ST1824) +REDRAW CHART OF SOUTH USA WITH LAT-LON DATA SHOWN IN BRIGHT YELLOW (ST1825) +REDISPLAY CHART OF EASTPAC ADDING THE NEW OVERLAYS (ST1826) +COULDN+T CLEVELAND ARRIVE IN PORT BY TOMORROW (ST1827) +DRAW CHART OF CHINA WITH POSIT DISPLAY ON (ST1828) +GET ME ESTIMATED ARRIVAL TIMES FOR THE SHIPS DUE IN ASTORIA TODAY (ST1829) +DISPLAY SPEED OF CONIFER (ST1830) +WHEN WILL CONFIDENCE NEXT BE ON STATION (ST1831) +SHOW THE NUMBER OF FRIGATES WITH C5 PERSONNEL (ST1832) +FIND MISSION AREAS ABOARD THE KENNEDY THAT ARE M4 (ST1833) +HOW LONG WOULD IT TAKE INDEPENDENCE TO GET FROM SAN-DIEGO TO EIGHT NORTH THIRTEEN EAST (ST1834) +SHOW A CHART OF MIDPAC WITH SECURITY SWITCH TURNED OFF (ST1835) +REDRAW CHART OF FORMOSA WITH THE TIME WINDOW DEFINED TO START AT NINE HUNDRED (ST1836) +HOW LONG WILL IT TAKE EISENHOWER TO GET WHERE SHE+S GOING (ST1837) +SHOW DATES OF EQUIPMENT PROBLEMS CASREPED BY MISSISSIPPI IN NINETEEN EIGHTY THREE (ST1838) +DO WE HAVE A SUB IN WESTPAC WITH TEST DEPTH LESS THAN ONE THOUSAND FEET (ST1839) +DISPLAY A CHART OF THE ATLANTIC OCEAN WITH TIME WINDOW STARTING AT SIX AND ENDING AT SEVEN HUNDRED HOURS (ST1840) +REDRAW CHART OF JAPAN WITH EDITED POSITION DATA (ST1841) +DRAW THE CHART OF THAILAND USING OVERLAY PUGET-1 (ST1842) +REDO THE SAME CHART WITH PORTS SWITCH OFF (ST1843) +WHAT IS THE TOTAL NUMBER OF CRUISERS IN PACFLT (ST1844) +ON WHAT DAY COULD VIRGINIA ARRIVE IN PORT AT HER MAX SPEED (ST1845) +REDRAW CHART OF KOREA DECREASING THE LETTER SIZE TO THREE (ST1846) +GIVE ME THE NAMES OF ANY CARRIERS THAT WERE IN CHINA SEA THREE OCTOBER (ST1847) +WHAT SUBMARINE WAS IN SUBIC BAY FIVE JUNE (ST1848) +SHOW CHART OF WESTERN BRITISH SOLOMON ISLANDS WITH SAIL TOGGLED (ST1849) +HOW LONG WOULD IT TAKE BIDDLE TO GET TO MIAMI AT FIFTEEN KNOTS (ST1850) +DISPLAY A CHART OF CANADA WITH DMDS SWITCHES SET TO THEIR DEFAULTS (ST1851) +REDRAW CHART OF CORAL SEA ISLANDS WITH THE DATA SCREEN CLEARED (ST1852) +WILL CONQUEST BE AT NAPLES TOMORROW (ST1853) +SHOW THE NAME OF DIM GREEN TRACK (ST1854) +REDRAW CHART OF SOUTHERN COOK ISLANDS DELETING SONAR SENSOR LOCATION DATA (ST1855) +HAS CONSTANT CHOPPED TO LANTFLT YET (ST1856) +DRAW THE CHART OF SIBERIAN SEA (ST1857) +HOW MANY DAYS WOULD IT TAKE DENVER TO GET TO HER DESTINATION AT HER MAXIMUM SPEED (ST1858) +COUNT THE NUMBER OF SHIPS IN GULF OF TONKIN (ST1859) +DISPLAY THE DEFINITION OF ALERTS INVOLVING THE DIXON (ST1860) +SHOW THE SAME CHART OF FIJI DEFINING TIME WINDOW TO START AT EIGHT HUNDRED HOURS (ST1861) +CAN DUBUQUE GET TO KODIAK BY MONDAY (ST1862) +REDRAW PROJECTION USING TRUE-VIEW (ST1863) +GET DATES ON TRAINING PROBLEMS FOR THE ESTEEM (ST1864) +SHOW THE NUMBER OF SUBMARINES THAT ARE DEPLOYED IN SEA OF JAPAN (ST1865) +SET COLOR OF N92762 TO BRIGHT RED (ST1866) +REDRAW CHART OF FRENCH POLYNESIA MAKING LETTERS ONE SIZE SMALLER (ST1867) +WHAT+S THE NUMBER OF SHIPS IN THE FORMOSA STRAIT WITHOUT LAMPS (ST1868) +REDRAW CHART OF HONG-KONG WITH REDEFINED OVERLAYS (ST1869) +WHAT WOULD IT BE COUNTING ONLY C1 SUBS (ST1870) +WHEN WAS IT LAST IN GULF OF CALIFORNIA (ST1871) +SET THE SWITCHES TO DEFAULTS (ST1872) +FIND ME ANY ALERTS IN WHICH FIREBUSH IS INVOLVED (ST1873) +MAKE CHART OF WESTERN INDONESIA AGAIN WITH RESOLUTION SET TO LOW (ST1874) +REDO CHART OF MADAGASCAR WITH THE LETTERS DECREASED BY ONE SIZE (ST1875) +SHOW THE VARIOUS FLEET IDENTIFICATIONS FOR ALL SPS-48 VESSELS (ST1876) +GIVE LAST MONTH+S WORST CASREPS FOR EACH SOUTH PHILIPPINE SEA SUB (ST1877) +DISPLAY THE DEFINITION OF KOREAN BAY ALERT (ST1878) +LIST C2 SHIPS THAT ARE IN THE GULF OF THAILAND (ST1879) +WHAT IS THE STATUS OF FLINT (ST1880) +DISPLAY A CHART OF MONGOLIA WITH SAVE PARAMETER ON (ST1881) +GET C3 FRIGATES (ST1882) +DRAW CHART OF THE YELLOW SEA WITH FREDERICK DISPLAYED IN CENTER (ST1883) +FIND SATURDAY+S CASUALTY REPORTS FOR FRESNO (ST1884) +WHAT WERE CITRUS+S PROBLEMS YESTERDAY (ST1885) +WHAT IS THE GLACIER+S ETA AT HER DESTINATION (ST1886) +DOESN+T CLEVELAND HAVE HARPOON (ST1887) +IS CONIFER+S LAST CASUALTY REPORT LATER THAN TEN HUNDRED ZULU (ST1888) +WHAT+S THE SUBMARINE+S ESTIMATED TIME OF ARRIVAL AT TOKYO (ST1889) +IS KENNEDY+S ARRIVAL HOUR IN PEARL HARBOR AFTER FIFTEEN HUNDRED HOURS (ST1890) +WHY WAS THE INDEPENDENCE+S AAW MISSION AREA CHANGED ON FOUR SEPTEMBER (ST1891) +WHAT IS EISENHOWER+S SUPPLIES RESOURCE READINESS (ST1892) +WILL MISSISSIPPI+S EQUIPMENT CASUALTY REPORT BE FIXED BY NINE JANUARY (ST1893) +IS VIRGINIA+S RATING ON PERSONNEL READINESS HIGHER THAN THAT OF HECTOR (ST1894) +WHAT IS THE BIDDLE+S HOME PORT (ST1895) +WHY WAS CONQUEST+S EQUIPMENT RESOURCE RATING DEGRADED SIX NOVEMBER (ST1896) +WHAT+S CONSTANT+S TRAINING READINESS (ST1897) +WHEN WAS DENVER+S LAST REPORTED SUPPLIES CASUALTY REPORT (ST1898) +WHAT IS DIXON+S PROPULSION TYPE AND FUEL CAPACITY (ST1899) +IS THE DUBUQUE+S DISPLACEMENT GREATER THAN AVERAGE FOR M5 ASUW CRUISERS (ST1900) +IS ESTEEM+S LENGTH LESS THAN ANY VESSEL IN PACIFIC OCEAN (ST1901) +WHAT IS FIREBUSH+S OLDEST CASREP (ST1902) +IS THE FLINT+S ESTIMATED TIME OF ARRIVAL LATER THAN FOUR HUNDRED HOURS (ST1903) +WHAT+S FREDERICK+S PROPULSION TYPE (ST1904) +IS FRESNO+S MAX DRAFT GREATER THAN AVERAGE FOR HER FLEET (ST1905) +WHERE WAS GLACIER+S DESTINATION ON SEVEN APRIL (ST1906) +IS THE HECTOR+S AVERAGE DISPLACEMENT LARGER THAN AVERAGE FOR CORAL SEA CARRIERS (ST1907) +WHAT IS IRONWOOD+S MAXIMUM DRAFT (ST1908) +IS JARVIS+S FLEET IDENTIFICATION THE SAME AS JASON+S (ST1909) +WHAT IS THE JUPITER+S M-RATING ON MOB (ST1910) +IS KIRK+S CURRENT SPEED SLOWER THAN KISKA+S (ST1911) +IS OLYMPIA MANHATTAN+S DESTINATION (ST1912) +WHAT+S MARS+S FUEL CAPACITY (ST1913) +IS THE MERCURY+S LENGTH MORE THAN THREE THOUSAND FEET (ST1914) +WHY WAS METEOR+S MIW M-CODE CHANGED ON SIX MAY (ST1915) +WHAT IS MIDGETT+S AVERAGE SPEED (ST1916) +ARE THERE ANY CODAG PROPELLED SHIPS IN BISMARK SEA (ST1917) +WHAT IS MISHAWAKA+S CURRENT SPEED (ST1918) +ARE THERE ANY NUCLEAR SURFACE VESSELS WITHIN FIVE MILES OF SIDNEY (ST1919) +WHAT+S THE MONTICELLO+S PERCENT FUEL (ST1920) +ARE THERE SEVENTEEN SUBMARINES AT SEA TODAY (ST1921) +WHAT WAS THE PREVIOUS OVERALL READINESS OF IRONWOOD (ST1922) +ARE THERE TWO TACAN SHIPS WITH ECONOMIC SPEEDS NOT LESS THAN SEVENTEEN KNOTS (ST1923) +WERE THERE TWENTY EIGHT SUBS AT SEA ON ONE MAY (ST1924) +WHO HAS THE LOWEST FUEL CAPACITY OF NUCLEAR SURFACE SHIPS THAT ARE IN ROSS SEA (ST1925) +ARE THERE NINE VESSELS WITH MAXIMUM SUSTAINED SPEEDS MORE THAN THIRTY SEVEN KNOTS (ST1926) +REVIEW NASHUA+S ALERTS (ST1927) +WHAT IS THE PERSONNEL RESOURCE READINESS OF JARVIS (ST1928) +IS BANGKOK THE DESTINATION FOR ANY SHIPS (ST1929) +ARE THERE THREE SQQ-23 FRIGATES IN THE WEST SOLOMON SEA THAT ARE CAPABLE OF A MAXIMUM CRUISING SPEED OF FOURTEEN KNOTS OR HIGHER (ST1930) +TURN ECHO ON AND REDRAW CURRENT AREA (ST1931) +SET AREAS OFF (ST1932) +DON+T SHOW ME CHART ON REDRAW (ST1933) +DISPLAY LATITUDES AND LONGITUDES FOR HOOKED TRACK (ST1934) +TURN AREA OFF FOR TRACKS WHOSE LATITUDE AND LONGITUDE IS HOOKED (ST1935) +WHY WAS THE PEORIA+S ASW MISSION AREA DOWNGRADED ON FIVE FEBRUARY (ST1936) +WHAT IS THE EQUIPMENT C-RATING FOR JASON (ST1937) +TURN ON ARROW SWITCH (ST1938) +WHEN WILL TRAINING CASUALTY REPORT FOR THE JUPITER BE RESOLVED (ST1939) +TURN ON CHART SWITCH (ST1940) +WHEN DID PIGEON+S SUPPLIES READINESS RATING LAST DEGRADE (ST1941) +WHY DID PLUCK+S AAW MISSION AREA RATING DEGRADE ON AUGUST TWO (ST1942) +REDRAW SHOWING THE LAST EIGHT POSITS OF CRUISERS AND CARRIERS (ST1943) +WHY DID KIRK CHANGE OVERALL READINESS ON TWENTY SEVENTH DECEMBER (ST1944) +SHOW ALL LAT-LONS OF SHIPS IN ARCTIC OCEAN (ST1945) +ARE THERE FOUR SUBMARINES THAT ARE IN LENINGRAD WITH READINESS MORE THAN C4 (ST1946) +WHAT WAS THE YORKTOWN+S OVERALL READINESS LAST SATURDAY (ST1947) +WHY WAS EQUIPMENT READINESS OF KISKA DEGRADED ON MARCH EIGHTH (ST1948) +IS WELLINGTON THE DESTINATION OF ANY SHIPS (ST1949) +WHO HAS THE LARGEST FUEL CAPACITY IN BERING SEA (ST1950) +WHAT+S THE PERSONNEL READINESS OF MANHATTAN (ST1951) +WHICH OF THE SUBS IN THE GULF OF ALASKA HAVE NTDS (ST1952) +WHAT IS THE EQUIPMENT RESOURCE READINESS ON MARS (ST1953) +WHEN WAS MERCURY LAST IN BERING STRAIT (ST1954) +WHAT IS THE TRAINING READINESS ON POUGHKEEPSIE (ST1955) +WHEN WAS THE METEOR LAST IN PORT (ST1956) +ARE THERE NINE VESSELS THAT ARE IN INDIAN OCEAN WITH SUPPLIES RATING MORE THAN C5 (ST1957) +WHAT+S THE OVERALL RESOURCE RATING ON MIDGETT (ST1958) +ARE THERE ANY C1 SHIPS IN BASS STRAIT (ST1959) +WHAT IS THE PERSONNEL RESOURCE RATING AND DESTINATION OF THE MISHAWAKA (ST1960) +WHEN+LL THE EQUIPMENT PROBLEM FROM THE PRAIRIE BE RESOLVED (ST1961) +HAS MONTICELLO CHANGED TRAINING READINESS (ST1962) +IS NASHUA AS FAST AS THE PEORIA (ST1963) +WHAT IS THE SUPPLIES RATING OF PIGEON (ST1964) +IS PLUCK IN THE HOOKED PORT (ST1965) +DID YORKTOWN REPORT ANY PROBLEM ON TWENTY FIRST OF JULY (ST1966) +HASN+T THE POUGHKEEPSIE REPORTED ANY RESOURCE AREA PROBLEMS SINCE TWELVE OCTOBER (ST1967) +IS PRAIRIE ON STATION NOW (ST1968) +WHAT+S THE LONGEST SHIP IN PACIFIC FLEET (ST1969) +IS RECLAIMER WITHIN NINETY KILOMETERS OF FORTY SIX NORTH FOUR EAST (ST1970) +WHEN DID DALE LAST DOWNGRADE FOR THE ASUW MISSION AREA (ST1971) +IS TICONDEROGA CLOSER TO SACRAMENTO THAN SASSAFRAS IS (ST1972) +WHEN DID SCHENECTADY LAST REPORT PERSONNEL RESOURCE AREA C2 (ST1973) +IS THE SHASTA FASTER THAN SHERMAN (ST1974) +DIDN+T TRIPOLI UPGRADE ON NINETEEN JUNE (ST1975) +WHEN WILL TUSCALOOSA NEXT BE IN HOME PORT (ST1976) +IS VANCOUVER CAPABLE OF A SPEED OF SIXTEEN KNOTS (ST1977) +ARE THE WABASH AND WASP IN ABERDEEN (ST1978) +IS WICHITA A LINK-11 FRIGATE (ST1979) +DOES WILLAMETTE HAVE AN MOB READINESS OF M1 (ST1980) +WHERE IS WINAMAC ENROUTE TO (ST1981) +IS THE MIDWAY SLOWER THAN CONSTELLATION (ST1982) +WHERE+S RANGER GOING (ST1983) +WHY WAS ARKANSAS RATED C3 ON ELEVEN SEPTEMBER (ST1984) +IS BAINBRIDGE DUE IN PORT BEFORE SEVEN HUNDRED ON NEXT THURSDAY (ST1985) +HASN+T THE ENTERPRISE REPORTED ANY EQUIPMENT RESOURCE PROBLEMS SINCE EIGHTEEN JANUARY (ST1986) +WHERE IS TEXAS (ST1987) +REVIEW ALL ALERTS WITHIN THE LAST FOURTEEN HOURS FOR CRUISERS THAT ARE IN THE ATLANTIC OCEAN (ST1988) +IS FOX GOING TO BE CHOPPING TO ATLANTIC FLEET SOON (ST1989) +WHEN DID THE GRIDLEY DEGRADE FROM HIS PREVIOUS TRAINING C-RATING (ST1990) +HAS HORNE REPORTED ANY SUPPLIES PROBLEMS (ST1991) +WHEN DID REEVES CHOP TO ATLANTIC FLEET (ST1992) +IS THERE A CRUISER IN PERSIAN SEA LONGER THAN THIRTEEN HUNDRED FEET (ST1993) +WHERE WAS STERETT ON TEN NOVEMBER (ST1994) +DIDN+T THE FLASHER DOWNGRADE ON MIW IN APRIL (ST1995) +IS GUARDFISH+S MAXIMUM SPEED AS FAST AS GUITARRO+S (ST1996) +WHICH FRIGATES THAT ARE IN ARABIAN SEA HAVE TFCC (ST1997) +WHAT IS THE ASW AVERAGE RATING CODE FOR CRUISERS IN MOZAMBIQUE CHANNEL (ST1998) +WHAT CARRIERS THAT ARE IN EASTPAC WENT TO M2 IN AAW SINCE FIFTEEN MAY (ST1999) +WHICH SHIPS IN MIDPAC ARE TASM CAPABLE (ST2000) +WHAT IS THE ETA AT HER DESTINATION OF HAWKBILL (ST2001) +WHICH SUBMARINES THAT ARE IN OAKLAND HAVE AN OVERALL READINESS RATING OF C4 (ST2002) +DID ASUW MISSION AREA OF PLUNGER EVER GO TO M3 SEVENTEEN FEBRUARY (ST2003) +WHAT+S THE ESTIMATED TIME OF ARRIVAL IN NEWCASTLE OF THE POLLACK (ST2004) +DID MOB MISSION AREA OF PUFFER EVER GO TO M4 IN EIGHTY FOUR (ST2005) +WHAT PERSONNEL PROBLEMS HAS QUEENFISH CASREPED SINCE FOURTEEN AUGUST (ST2006) +DEFINE AN OSGP AREA THREAT (ST2007) +WHAT IS THE MIW MISSION AREA RATING FOR SEAWOLF (ST2008) +WHICH SHIPS IN WESTPAC HAVE AN EQUIPMENT READINESS THAT IS C5 (ST2009) +ADD GRILL (ST2010) +DRAW WEST ATLANTIC OCEAN (ST2011) +HAS RECLAIMER+S ASW MISSION AREA RATING BEEN CHANGED SINCE WEDNESDAY (ST2012) +WHICH SUBS THAT ARE IN CHINA SEA HAVE A TRAINING RESOURCE READINESS OF C1 (ST2013) +HAS THE AAW MISSION AREA OF THE SWORDFISH GONE TO M5 SINCE ONE JUNE (ST2014) +WHICH VESSELS IN ALEXANDRIA ARE C2 (ST2015) +WHAT SUPPLY PROBLEMS HAS BADGER REPORTED (ST2016) +DID DALE+S ASUW MISSION AREA EVER GO TO M1 AFTER TWELVE DECEMBER (ST2017) +WHAT IS THE MOB M-CODE FOR BROOKE (ST2018) +DOES COPELAND HAVE T-LAM CAPABILITY (ST2019) +ARE THERE ANY SLQ-32 CAPABLE SHIPS THAT ARE IN THE SIBERIAN SEA (ST2020) +DOESN+T DAVIDSON HAVE SPS-40 YET (ST2021) +HOW MANY CAT-2 CASUALTY REPORTS ARE THERE FOR FRIGATES IN GULF OF TONKIN (ST2022) +ARE THERE ANY LAMPS CRUISERS THAT ARE IN SEA OF JAPAN (ST2023) +SHOW MEXICO (ST2024) +REDRAW SOUTH MOZAMBIQUE IN HIGH RESOLUTION (ST2025) +DISPLAY NEW CALEDONIA USING TRUE-VIEW (ST2026) +HOW MUCH FUEL DOES DOWNES HAVE REMAINING (ST2027) +IS THE MAX SPEED OF THE FANNING GREATER THAN FIFTY KNOTS (ST2028) +REDRAW NEW-ZEALAND WITH LOW RESOLUTION (ST2029) +IS THE MAXIMUM SPEED OF HEPBURN LESS THAN THAT OF JARRETT (ST2030) +WHAT+S THE AVERAGE SPEED OF CARRIERS IN PACIFIC FLEET (ST2031) +ARE ANY SUPPLY PROBLEMS REPORTED BY LOCKWOOD DATED MARCH NINETEEN (ST2032) +IS THE AVERAGE SPEED FOR SHIPS THAT ARE IN THE FORMOSA STRAIT GREATER THAN TICONDEROGA+S ECONOMIC SPEED (ST2033) +ARE MORE THAN THREE SUBMARINES CURRENTLY IN HOME PORT (ST2034) +DOES MCCLUSKY HAVE SIX OPEN CAT-3 CASUALTY REPORTS (ST2035) +WHAT IS THE PRESENT SUPPLIES READINESS FOR RAMSEY (ST2036) +IS THE GROSS DISPLACEMENT OF RATHBURNE MORE THAN FIVE HUNDRED LONG TONS (ST2037) +WHAT IS THE MAXIMUM SUSTAINED SPEED OF THE REASONER (ST2038) +HOW MANY NUCLEAR SURFACE SHIPS ARE WITHIN EIGHTY TWO MILES OF SAMPLE (ST2039) +WHAT SHIPS HAVE REPORTED PERSONNEL PROBLEMS (ST2040) +WHAT ARE AVERAGE DISPLACEMENTS FOR GULF OF CALIFORNIA CONVENTIONAL SURFACE VESSELS (ST2041) +WEREN+T MORE THAN EIGHT C3 SUBS IN PACIFIC FLEET TODAY (ST2042) +IS THERE A PROBLEM WITH PERSONNEL FOR THE VANDERGRIFT (ST2043) +EDIT SACRAMENTO+S ALERTS (ST2044) +WHAT+S THE CURRENT OVERALL READINESS OF WADSWORTH (ST2045) +ARE THERE MORE THAN NINE SPS-48 CAPABLE VESSELS IN PORT TODAY (ST2046) +WHAT SHIPS CHOPPED FROM ATLANTIC TO PACIFIC FLEET IN JULY (ST2047) +REDISPLAY CHART ADDING YANKEE (ST2048) +THE SASSAFRAS+S PERSONNEL READINESS RATING (ST2049) +WHAT SIBERIAN SEA CARRIER WASN+T DOWNGRADED ON EQUIPMENT READINESS DURING OCTOBER (ST2050) +HOW FAST IS WHIPPLE (ST2051) +ARE ANY OF SCHENECTADY+S POSITIONS FROM RADAR SENSOR (ST2052) +TURN CEP SWITCH OFF (ST2053) +WERE ANY OF SHASTA+S PROBLEMS REPORTED BEFORE THE THIRD OF JUNE (ST2054) +SET FOOTER SWITCH TO OFF (ST2055) +WHAT SHIP HAD THE MOST PROBLEMS DURING THE LAST SEVEN MONTHS (ST2056) +ARE ANY OF SHERMAN+S CASREPS DATED SEPTEMBER THIRTIETH (ST2057) +WHAT SPEED IS THE AJAX GOING (ST2058) +REDRAW IT INCREASING LETTER SIZE TO TWO (ST2059) +WHAT CASUALTY REPORTS ON APALACHICOLA ARE THERE FOR ELEVENTH OF JANUARY (ST2060) +SET COLOR FOR THE TRIPOLI+S TRACK TO DIM ORANGE (ST2061) +WHAT SUBMARINE IN KOREAN BAY HAS LEAST REMAINING FUEL (ST2062) +SET CHART PARAMETER TO HIGH (ST2063) +HOW SOON CAN TUSCALOOSA+S MOST RECENT CASUALTY REPORT BE FIXED (ST2064) +WHICH SUB IN THE GULF OF THAILAND HAS THE LARGEST FUEL CAPACITY (ST2065) +WHAT VESSEL IN YELLOW SEA HAS THE SLOWEST AVERAGE CRUISING SPEED (ST2066) +REDRAW CHART DISPLAYING THE THREE EARLIEST POSITS FOR EACH SHIP (ST2067) +TRAINING RATING FOR BRUNSWICK (ST2068) +WHAT FRIGATES THAT WERE IN NORTH PACIFIC OCEAN ON TWENTY FIVE NOVEMBER WILL CHOP TO ATLANTIC FLEET BY TWENTY TWO APRIL (ST2069) +IS THE VANCOUVER+S FUEL CAPACITY LARGER THAN WABASH+S (ST2070) +EDIT CHESHIRE (ST2071) +REDO CHART DELETING THE LATEST POSITION DATA FOR EACH FRIGATE (ST2072) +WHAT IS THE PRESENT MIW MISSION READINESS OF CAMDEN (ST2073) +TURN GREAT CIRCLE ON (ST2074) +WHAT TYPE OF PROPULSION DOES THE CAMPBELL HAVE (ST2075) +HOW SOON WILL CHATTAHOOCHEE BE UPGRADED ON SUPPLIES READINESS (ST2076) +IS THERE A REMARK ON WASP+S LATEST CASUALTY REPORT (ST2077) +DID CITRUS REPORT ANY TRAINING PROBLEM ON TWENTY EIGHT MAY (ST2078) +WHAT IS THE NAME AND THE C-CODE OF THE CRUISER IN THE CORAL SEA (ST2079) +DOES CLEVELAND HAVE ANY CATEGORY TWO OR CATEGORY THREE PROBLEMS (ST2080) +CLEAR OVERLAYS AND DISPLAY THE TRACK OF CONIFER (ST2081) +HOW SOON CAN CONFIDENCE CHOP TO ATLANTIC FLEET (ST2082) +WHAT CASUALTY REPORT DID KENNEDY HAVE ON TWENTY FOUR FEBRUARY (ST2083) +SHOW WICHITA+S TRACK AND CURRENT PERSONNEL READINESS (ST2084) +HOW SOON WILL INDEPENDENCE BE UPGRADED ON ASW MISSION READINESS (ST2085) +HOW SOON CAN EISENHOWER GET TO TOWNSVILLE (ST2086) +HOW SOON DOES THE MISSISSIPPI ARRIVE IN NOME (ST2087) +WHAT ARE THE VARIOUS RATINGS FOR VIRGINIA (ST2088) +DOES BIDDLE HAVE ANY CASUALTY REPORTS OF CATEGORY TWO OR CATEGORY THREE (ST2089) +SHOW POSITION DATA AND VARIOUS MISSION CODES FOR CRUISERS IN THE BISMARK SEA BEFORE TWENTY NINE AUGUST (ST2090) +ARE THERE ANY OPEN CASUALTY REPORTS FOR CONQUEST (ST2091) +CHANGE ALERT FOR ROSS SEA (ST2092) +DEFINE AN ALERT FOR SOLOMON SEA (ST2093) +HOW SOON WILL THE CONSTANT BE IN HOME PORT (ST2094) +DEFINE AREA THREATS FOR ARCTIC OCEAN (ST2095) +DELETE POSITION DATA FOR WILLAMETTE+S TRACK (ST2096) +EDIT WINAMAC+S LOCATION DATA FROM HFDF SENSOR (ST2097) +ARE ANY OF WESTPAC+S CARRIERS RATED M2 ON AAW (ST2098) +HAS THE DENVER BEEN DOWNGRADED YET (ST2099) +HOW MANY OF EASTPAC+S SHIPS WERE IN HOME PORT ON TWENTY SIX DECEMBER (ST2100) +WHAT CARRIER WASN+T DEGRADED IN EQUIPMENT READINESS IN NINETEEN EIGHTY FIVE (ST2101) +WHOSE MAX SPEEDS ARE SIXTEEN KNOTS OR LESS (ST2102) +HOW MANY METRIC TONS IS THE AVERAGE DISPLACEMENT OF SUBMARINES THAT ARE IN PACIFIC FLEET (ST2103) +IS THERE NO EAST BERING SEA SHIP RATED M3 ON ASUW (ST2104) +WAS THERE NO GULF OF ALASKA SUBMARINE THAT WAS RATED M4 ON MOB IN BERING STRAIT TWENTY FOUR MARCH (ST2105) +WHAT ARE THE VARIOUS RESOURCE AREA RATINGS FOR DIXON (ST2106) +WHOSE MAXIMUM SPEEDS ARE LESS THAN FIFTY KNOTS (ST2107) +HOW MANY KILOMETERS IS IT BETWEEN THE DUBUQUE AND ANCHORAGE (ST2108) +HOW MANY SHIPS ARE GAS POWERED (ST2109) +HOW MANY SUBS ARE THERE IN INDIAN OCEAN (ST2110) +ARE THERE ANY VESSELS WITHIN THIRTY SEVEN MILES OF THREE SOUTH ELEVEN WEST (ST2111) +WHICH SUB IS CLOSEST TO NEW-YORK (ST2112) +HOW SOON CAN ESTEEM CHOP FROM PACIFIC FLEET TO ATLANTIC FLEET (ST2113) +HOW MANY KILOMETERS IS BOMBAY FROM DIEGO-GARCIA (ST2114) +ARE THERE ANY SHIPS LONGER THAN A THOUSAND METERS THAT ARE IN BASS STRAIT (ST2115) +WHAT DIESEL SURFACE SHIPS IN PERSIAN SEA ARE HARPOON CAPABLE (ST2116) +TOTAL THE FRIGATES (ST2117) +HOW MANY MILES IS IT FROM GALVESTON TO FIREBUSH (ST2118) +COUNT ALL THE CRUISERS THAT WILL ARRIVE IN HONOLULU BY NEXT MONTH (ST2119) +HOW MANY CARRIERS WILL BE IN PORT ELIZABETH BY SIX HUNDRED HOURS ZULU TOMORROW (ST2120) +RESET PARAMETERS (ST2121) +DO ANY SHIPS THAT ARE IN PACIFIC FLEET HAVE TACAN (ST2122) +ARE ANY SUBMARINES IN ARABIAN SEA BELOW FORTY PERCENT OF THEIR FUEL CAPACITY (ST2123) +HOW MANY SHIPS WERE IN ATLANTIC CITY DURING THE LAST SEVENTY FIVE WEEKS (ST2124) +WHICH SQQ-23 CAPABLE SUBS ARE IN THE MOZAMBIQUE CHANNEL (ST2125) +HOW MANY DAYS WOULD IT TAKE FLINT TO GET TO PORT VICTORIA AT HER CURRENT SPEED (ST2126) +WHAT NTDS CAPABLE VESSELS ARE IN EASTPAC (ST2127) +WHICH LINK-11 CAPABLE SHIPS ARE C4 (ST2128) +HOW MANY FRIGATES WERE IN ASTORIA ON TWENTY TWO JULY (ST2129) +DO ANY CRUISERS THAT ARE CAPABLE OF AN AVERAGE SPEED OF MORE THAN EIGHT KNOTS HAVE TFCC (ST2130) +AREN+T THERE ANY CARRIERS THAT HAVEN+T CASREPED A TRAINING PROBLEM SINCE JULY ONE (ST2131) +HOW MANY SHIPS WERE DEPLOYED SINCE TWENTY NINE OCTOBER (ST2132) +WERE ANY SUBMARINES IN SAN-DIEGO ON JUNE TWENTY SEVEN (ST2133) +HOW MANY SHIPS ARE C5 ON SUPPLIES (ST2134) +WEREN+T ANY SUBS IN DARWIN IN SEPTEMBER (ST2135) +SHOW TRACKS OF THE VESSELS IN WESTPAC (ST2136) +HOW MANY SHIPS THAT WERE IN THE ATLANTIC OCEAN ON THE FOURTH OF JANUARY HAVE CHANGED READINESS (ST2137) +WHICH TASM CAPABLE FRIGATES HAVE AN OVERALL RESOURCE RATING OF MORE THAN C1 (ST2138) +HOW MANY CRUISERS WERE DEPLOYED IN EIGHTY SIX (ST2139) +ARE THERE ANY CARRIERS THAT ARE IN CHINA SEA CAPABLE OF A SPEED OF EIGHTEEN KNOTS (ST2140) +HOW MANY SHIPS ARE IN THE EAST SIBERIAN SEA (ST2141) +DO ANY SUBMARINES THAT ARE IN GULF OF TONKIN HAVE AN M5 MIW M-RATING (ST2142) +HOW MANY SHIPS HAVE OPEN CASUALTY REPORTS (ST2143) +ARE ANY SUBS CAPABLE OF AN ECONOMIC SPEED OF MORE THAN NINETEEN KNOTS (ST2144) +HOW MANY VESSELS HAVE BEEN DEPLOYED SINCE NOVEMBER EIGHTEENTH (ST2145) +ARE THERE ANY SHIPS THAT HAVEN+T REPORTED A PROBLEM WITH PERSONNEL SINCE THE TWENTY THIRD OF APRIL (ST2146) +HOW MANY FRIGATES CHOPPED TO PACIFIC FLEET FROM ATLANTIC FLEET IN NINETEEN EIGHTY ONE (ST2147) +WHAT THREE SEA OF JAPAN CRUISERS WENT TO M1 ON ASW SINCE THIRTY MAY (ST2148) +HOW MANY CARRIERS ARE THERE IN SUBIC BAY (ST2149) +WERE THERE ANY SHIPS IN FORMOSA STRAIT ON TWENTY ONE FEBRUARY (ST2150) +ARE THERE NO SUBMARINES THAT ARE IN GULF OF CALIFORNIA (ST2151) +HOW MANY SHIPS ARE CURRENTLY IN HOME PORT (ST2152) +WERE THERE NO SUBS IN THE PHILIPPINE SEA ON FIVE AUGUST (ST2153) +HOW MANY VESSELS WERE DEPLOYED AS OF TWO DECEMBER (ST2154) +DO ANY SHIPS IN KOREAN BAY HAVE AN M2 AAW MISSION AREA (ST2155) +ARE THERE MORE THAN EIGHT FRIGATES THAT ARE IN GULF OF THAILAND (ST2156) +HOW MANY CRUISERS ARE NOT T-LAM CAPABLE (ST2157) +DISPLAY THE LAST FOUR LATITUDES AND LONGITUDES FOR FREDERICK (ST2158) +HOW MANY CARRIERS WERE IN THE YELLOW SEA ON NINE MARCH (ST2159) +ARE ANY PROBLEMS REPORTED BY FRESNO DATED SIX JULY (ST2160) +DRAW THE LAST FOUR LATS AND LONS FOR TRACKS OF VESSELS THAT ARE SLQ-32 CAPABLE (ST2161) +HOW MANY SHIPS IN PACIFIC OCEAN HAVE ASUW M-RATINGS LOWER THAN M3 (ST2162) +WILL ANY SPS-40 CAPABLE SUBMARINES BE IN EVERETT BY FRIDAY (ST2163) +HOW MANY SHIPS WERE IN NORTH BISMARK SEA ON SEVEN OCTOBER (ST2164) +WERE THERE MORE THAN TWENTY THREE SUBS AT SEA ON SIX JUNE (ST2165) +HOW MANY LAMPS CAPABLE VESSELS ARE IN ROSS SEA (ST2166) +SHOW ME THE LAST FIVE LATITUDES FOR TRACKS OF SUBS WHOSE EQUIPMENT READINESS IS C2 (ST2167) +HOW MANY SHIPS ARE C3 (ST2168) +WERE THERE MORE THAN TWO FRIGATES EMPLOYED IN EIGHTY TWO (ST2169) +HOW MANY SPS-48 CRUISERS HAVE BEEN DEPLOYED SINCE AUGUST ONE (ST2170) +ARE THERE MORE THAN EIGHT CARRIERS THAT ARE IN MIAMI (ST2171) +WERE THERE MORE THAN THIRTEEN PACFLT SHIPS EMPLOYED IN NINETEEN EIGHTY THREE (ST2172) +HOW MANY HARPOON SUBMARINES ARE IN SOLOMON SEA (ST2173) +ARE THERE MORE THAN SIXTY SHIPS AT SEA (ST2174) +CHANGE AREA ALERT BUMP (ST2175) +IS THERE MORE THAN ONE TACAN CAPABLE VESSEL IN THE ARCTIC OCEAN (ST2176) +REDEFINE AREA ALERT ICE-NINE (ST2177) +HOW MANY SQQ-23 SUBS IN NAPLES HAVE REPORTED PROBLEMS WITH TRAINING (ST2178) +IS THERE MORE THAN ONE NTDS CAPABLE SHIP IN PORT (ST2179) +REVIEW THE LAST NINE ALERTS (ST2180) +ARE THERE MORE THAN SEVEN VESSELS THAT ARE IN PORT NOW (ST2181) +HOW MANY LINK-11 CAPABLE SHIPS ARE THERE (ST2182) +WAS THERE MORE THAN ONE FRIGATE IN BERING SEA ON THREE SEPTEMBER (ST2183) +WHICH OF MIDPAC+S FRIGATES ARE M4 OR HIGHER ON MOB (ST2184) +SET TIME WINDOW TO START AT PRESENT TIME AND END AT FIVE HUNDRED HOURS (ST2185) +ARE THERE ANY CATEGORY FOUR PROBLEMS FOR ANY OF THE CRUISERS IN THE GULF OF ALASKA (ST2186) +WHAT+S THE LAST DEPLOYMENT DATE FOR GLACIER (ST2187) +IS THERE A BERING STRAIT CRUISER RATED M5 ON MIW (ST2188) +DRAW TRACK OF HECTOR (ST2189) +WHAT IS THE DESTINATION OF IRONWOOD (ST2190) +WHICH OF WESTPAC+S CARRIERS ARE C4 (ST2191) +SHOW THE TRACK OF JARVIS SINCE JANUARY TWO (ST2192) +WHAT IS THE NAME OF THE CARRIER IN THE INDIAN OCEAN (ST2193) +WHICH SHIPS HAVE A C5 SUPPLIES RESOURCE RATING (ST2194) +DISPLAY A NEW CHART PROJECTION OF BASS STRAIT (ST2195) +WHAT+S THE DESTINATION ARRIVAL HOUR FOR JASON (ST2196) +SET UNIT OF MEASURE SWITCH TO ENGLISH (ST2197) +CAN JUPITER GET TO HIS DESTINATION BY SUNDAY (ST2198) +WHAT IS THE LATITUDE AND LONGITUDE OF KIRK (ST2199) +DRAW THE TRACKS OF SUBMARINES THAT ARE IN WEST PERSIAN SEA (ST2200) +WHAT SHIPS WERE IN ARABIAN SEA ON THE NINTH OF NOVEMBER (ST2201) +ARE WEDNESDAY+S CASREPS WORSE THAN MONDAY+S FOR KISKA (ST2202) +INCREASE LETTER SIZE TO MAX VALUE AND REDRAW (ST2203) +HOW LONG WOULD IT TAKE MANHATTAN TO GET FROM KODIAK TO THE MIDWAY+S CURRENT POSITION (ST2204) +SHOW THE SAME CHART WITH TIME STARTED AT TWENTY ONE HUNDRED (ST2205) +REDISPLAY OVERLAY BOX TURNING ON GRID (ST2206) +RESET CHART SWITCHES TO DEFAULTS (ST2207) +HOW LONG IS IT GOING TO TAKE MARS TO GET TO WHERE SHE+S GOING (ST2208) +DISPLAY A NEW CHART PROJECTION USING STEREOGRAPHIC (ST2209) +WILL MERCURY BE IN PORT BY EIGHT HUNDRED HOURS (ST2210) +WILL THE CONSTELLATION+S C1 EQUIPMENT PROBLEM BE FIXED BY APRIL TWENTY FIFTH (ST2211) +SET PARAMETERS TO THEIR DEFAULTS (ST2212) +HOW LONG WOULD IT TAKE METEOR TO GET TO THIRTY FOUR SOUTH NINE WEST (ST2213) +WHAT IS RANGER+S FUEL LEVEL (ST2214) +SET LETTER SIZE TO THREE (ST2215) +DRAW A CHART OF EASTERN PHILIPPINES USING THE STEREOGRAPHIC PROJECTION (ST2216) +IS PRESENT SPEED OF MIDGETT GREATER THAN TEN KNOTS (ST2217) +SET COLOR OF HOOKED TRACK TO BRIGHT GREEN (ST2218) +HOW MUCH FUEL IS ABOARD THE MISHAWAKA (ST2219) +WILL MONTICELLO CHOP TO ATLANTIC FLEET BY SIX HUNDRED HOURS ZULU TUESDAY (ST2220) +SHOW TRACK OF NASHUA CLEARING OVERLAYS (ST2221) +WHAT REMARKS ARE THERE ON THE ARKANSAS+S MOST RECENT CASUALTY REPORT (ST2222) +HAS PEORIA ARRIVED AT TOKYO YET (ST2223) +DISPLAY A NEW CHART USING MERCATOR PROJECTION (ST2224) +SET SYSTEM SWITCHES TO DEFAULTS (ST2225) +WHEN IS THE ESTIMATED TIME OF ARRIVAL IN HOME PORT FOR PIGEON (ST2226) +DRAW A CHART OF MOZAMBIQUE CHANNEL (ST2227) +HOW LONG WOULD IT TAKE PLUCK TO GET TO PEARL HARBOR AT HER MAXIMUM SUSTAINED SPEED (ST2228) +SHOW A CHART OF NORTH AND SOUTH PANAMA (ST2229) +HOW LONG WOULD IT TAKE YORKTOWN TO GET TO ITS DESTINATION AT EIGHTEEN KNOTS (ST2230) +WHAT+S THE AVERAGE OF ECONOMIC SPEEDS FOR SUBS IN EASTPAC (ST2231) +WHAT VESSELS ARE IN MIDPAC (ST2232) +DISPLAY A CHART OF WESTPAC WITH TIME WINDOW FROM FIFTEEN HUNDRED TO SEVENTEEN HUNDRED HOURS (ST2233) +WHAT SHIPS WERE AT SEA ON TENTH OF MAY (ST2234) +WHAT IS THE LOCATION OF THE SHIP CLOSEST TO FIFTY FOUR NORTH SEVEN EAST (ST2235) diff --git a/samples/RMHTK/lib/wordlist b/samples/RMHTK/lib/wordlist new file mode 100755 index 0000000..1bb55bd --- /dev/null +++ b/samples/RMHTK/lib/wordlist @@ -0,0 +1,991 @@ +A +A42128 +AAW +ABERDEEN +ABOARD +ABOVE +ADD +ADDED +ADDING +AFFECT +AFTER +AGAIN +AJAX +AJAX+S +ALASKA +ALERT +ALERTS +ALEXANDRIA +ALL +AN +ANCHORAGE +AND +ANY +ANYBODY +APALACHICOLA +APALACHICOLA+S +APRIL +ARABIAN +ARCTIC +ARE +AREA +AREAS +AREN+T +ARKANSAS +ARKANSAS+S +AROUND +ARRIVAL +ARRIVE +ARRIVED +ARRIVING +ARROW +AS +ASTORIA +ASUW +ASW +AT +ATLANTIC +AUGUST +AVAILABLE +AVERAGE +BAD +BADGER +BADGER+S +BAINBRIDGE +BAINBRIDGE+S +BANGKOK +BARGE +BASS +BAY +BE +BEAM +BEAMS +BEEN +BEFORE +BELOW +BERING +BETTER +BETWEEN +BIDDLE +BIDDLE+S +BISMARK +BOMBAY +BOTH +BOX +BRIGHT +BRITISH +BROOKE +BROOKE+S +BRUNSWICK +BRUNSWICK+S +BUD-TEST +BUMP +BY +C-CODE +C-CODES +C-RATING +C-RATINGS +C1 +C2 +C3 +C4 +C5 +CALEDONIA +CALIFORNIA +CAMDEN +CAMDEN+S +CAMPBELL +CAMPBELL+S +CAN +CANADA +CAPABILITIES +CAPABILITY +CAPABLE +CAPACITIES +CAPACITY +CARRIER +CARRIER+S +CARRIERS +CARRY +CASREP +CASREPED +CASREPS +CASUALTY +CAT-2 +CAT-3 +CAT-4 +CATEGORIES +CATEGORY +CENTER +CENTERED +CENTERING +CEP +CHANGE +CHANGED +CHANGING +CHANNEL +CHART +CHARTS +CHATTAHOOCHEE +CHATTAHOOCHEE+S +CHESHIRE +CHINA +CHOP +CHOPPED +CHOPPING +CIRCLE +CITRUS +CITRUS+S +CITY +CLEAR +CLEARED +CLEARING +CLEVELAND +CLEVELAND+S +CLOSE +CLOSER +CLOSEST +CODAG +CODE +CODES +COLOR +COMPARED +CONFIDENCE +CONFIDENCE+S +CONIFER +CONIFER+S +CONQUEST +CONQUEST+S +CONSTANT +CONSTANT+S +CONSTELLATION +CONSTELLATION+S +CONVENTIONAL +COOK +COPELAND +COPELAND+S +CORAL +COULD +COULDN+T +COUNT +COUNTED +COUNTING +CROVL +CROVLS +CRUISER +CRUISER+S +CRUISERS +CRUISERS+S +CRUISING +CURRENT +CURRENTLY +DALE +DALE+S +DARWIN +DATA +DATE +DATED +DATES +DAVIDSON +DAVIDSON+S +DAY +DAYS +DDD992 +DECEMBER +DECREASE +DECREASED +DECREASING +DEFAULT +DEFAULTS +DEFINE +DEFINED +DEFINING +DEFINITION +DEFINITIONS +DEGRADATION +DEGRADATIONS +DEGRADE +DEGRADED +DEGRADING +DEGREES +DELETE +DELETED +DELETING +DENVER +DENVER+S +DEPLOYED +DEPLOYMENT +DEPLOYMENTS +DEPTH +DEPTHS +DESTINATION +DESTINATIONS +DID +DIDN+T +DIEGO-GARCIA +DIESEL +DIM +DISPLACEMENT +DISPLACEMENTS +DISPLAY +DISPLAYED +DISPLAYING +DISTANCE +DIXON +DIXON+S +DMDS +DO +DOES +DOESN+T +DON+T +DOWNES +DOWNES+S +DOWNGRADE +DOWNGRADED +DRAFT +DRAFTS +DRAW +DUBUQUE +DUBUQUE+S +DUE +DURING +EACH +EARLIER +EARLIEST +EARLY +EAST +EASTERN +EASTPAC +EASTPAC+S +ECG041 +ECHO +ECONOMIC +EDIT +EDITED +EDITING +EIGHT +EIGHTEEN +EIGHTEENTH +EIGHTH +EIGHTY +EISENHOWER +EISENHOWER+S +ELEVEN +ELEVENTH +ELIZABETH +EMPLOYED +END +ENDING +ENGLAND +ENGLAND+S +ENGLISH +ENOUGH +ENROUTE +ENTERPRISE +ENTERPRISE+S +EQUIPMENT +EQUIPPED +ESTEEM +ESTEEM+S +ESTIMATED +ETA +ETR +EVER +EVERETT +EXPECTED +FANNING +FANNING+S +FAR +FARTHER +FARTHEST +FAST +FASTER +FASTEST +FEBRUARY +FEET +FFF088 +FIFTEEN +FIFTEENTH +FIFTH +FIFTY +FIGURE +FIGURES +FIJI +FIND +FIREBUSH +FIREBUSH+S +FIRST +FIVE +FIXED +FLASHER +FLASHER+S +FLEET +FLEETS +FLINT +FLINT+S +FOOTER +FOR +FORMOSA +FORTY +FOUR +FOURTEEN +FOURTEENTH +FOURTH +FOX +FOX+S +FREDERICK +FREDERICK+S +FRENCH +FRESNO +FRESNO+S +FRIDAY +FRIDAY+S +FRIGATE +FRIGATE+S +FRIGATES +FRIGATES+S +FROM +FUEL +FULL +GALLONS +GALVESTON +GAS +GET +GIVE +GLACIER +GLACIER+S +GNOMONIC +GO +GOING +GONE +GREAT +GREATER +GREATEST +GREEN +GRID +GRIDLEY +GRIDLEY+S +GRILL +GROSS +GROUP +GROUPS +GUARDFISH +GUARDFISH+S +GUITARRO +GUITARRO+S +GULF +HAD +HALF +HARBOR +HARPOON +HAS +HASN+T +HAVE +HAVEN+T +HAWKBILL +HAWKBILL+S +HE +HE+S +HECTOR +HECTOR+S +HEPBURN +HEPBURN+S +HER +HERS +HFDF +HIGH +HIGHER +HIGHEST +HIM +HIS +HOME +HOMER +HONG-KONG +HONOLULU +HOOKED +HORNE +HORNE+S +HOUR +HOURS +HOW +HUNDRED +ICE-NINE +ID +IDENTIFICATION +IDENTIFICATIONS +IF +IN +INCLUDE +INCLUDED +INCLUDING +INCREASE +INCREASED +INCREASING +INDEPENDENCE +INDEPENDENCE+S +INDIAN +INDONESIA +INFORMATION +INSTALLED +INSTEAD +INSUFFICIENT +INVOLVED +INVOLVING +IRONWOOD +IRONWOOD+S +IS +ISLANDS +ISN+T +IT +IT+S +ITS +JANUARY +JAPAN +JARRETT +JARRETT+S +JARVIS +JARVIS+S +JASON +JASON+S +JULY +JUNE +JUPITER +JUPITER+S +KENNEDY +KENNEDY+S +KILOMETER +KILOMETERS +KIRK +KIRK+S +KISKA +KISKA+S +KNOT +KNOTS +KODIAK +KOREA +KOREAN +LAMPS +LANTFLT +LARGE +LARGER +LARGEST +LAST +LAT +LAT-LON +LAT-LONS +LATER +LATEST +LATITUDE +LATITUDES +LATS +LEAST +LEFT +LENGTH +LENGTHS +LENINGRAD +LESS +LETTER +LETTERS +LEVEL +LEVELS +LINK-11 +LIST +LOCATED +LOCATION +LOCATIONS +LOCKWOOD +LOCKWOOD+S +LON +LONG +LONGER +LONGEST +LONGITUDE +LONGITUDES +LONS +LOW +LOWER +LOWEST +M-CODE +M-CODES +M-RATING +M-RATINGS +M1 +M2 +M3 +M4 +M5 +MADAGASCAR +MADE +MAKE +MAKING +MANCHESTER +MANHATTAN +MANHATTAN+S +MANILA +MANY +MARCH +MARS +MARS+S +MAX +MAXIMUM +MAY +MCCLUSKY +MCCLUSKY+S +ME +MEASURE +MERCATOR +MERCURY +MERCURY+S +METEOR +METEOR+S +METERS +METRIC +MEXICO +MIAMI +MIDGETT +MIDGETT+S +MIDPAC +MIDPAC+S +MIDWAY +MIDWAY+S +MILE +MILES +MIND +MINUTES +MISHAWAKA +MISHAWAKA+S +MISSION +MISSIONS +MISSISSIPPI +MISSISSIPPI+S +MIW +MOB +MONDAY +MONDAY+S +MONGOLIA +MONTH +MONTH+S +MONTHS +MONTICELLO +MONTICELLO+S +MORE +MOST +MOZAMBIQUE +MUCH +N92762 +NAME +NAMES +NAPLES +NASHUA +NASHUA+S +NEAR +NEARER +NEAREST +NEVER +NEW +NEW-YORK +NEW-ZEALAND +NEWCASTLE +NEWER +NEWEST +NEXT +NINE +NINETEEN +NINETEENTH +NINETY +NINTH +NO +NOME +NORTH +NORTHERN +NOT +NOVA +NOVEMBER +NOW +NTDS +NUCLEAR +NUMBER +OAKLAND +OCEAN +OCTOBER +OF +OFF +OLD +OLDER +OLDEST +OLYMPIA +ON +ONE +ONLY +OPEN +OR +ORANGE +OSGP +OVERALL +OVERLAY +OVERLAYS +PAC +PACFLT +PACIFIC +PANAMA +PARAMETER +PARAMETERS +PEARL +PEORIA +PEORIA+S +PERCENT +PERSIAN +PERSONNEL +PHILIPPINE +PHILIPPINES +PIGEON +PIGEON+S +PLH003 +PLUCK +PLUCK+S +PLUNGER +PLUNGER+S +POLLACK +POLLACK+S +POLYNESIA +PORT +PORTS +POSIT +POSITION +POSITIONS +POSITS +POUGHKEEPSIE +POUGHKEEPSIE+S +POWERED +PRAIRIE +PRAIRIE+S +PRESENT +PREVIOUS +PROBLEM +PROBLEMS +PROJECTION +PROPELLED +PROPULSION +PUFFER +PUFFER+S +PUGET-1 +QUARTER +QUARTERS +QUEENFISH +QUEENFISH+S +RADAR +RAMSEY +RAMSEY+S +RANGER +RANGER+S +RATED +RATHBURNE +RATHBURNE+S +RATING +RATINGS +READINESS +REASON +REASONER +REASONER+S +REASONS +RECENT +RECLAIMER +RECLAIMER+S +RED +REDEFINE +REDEFINED +REDEFINING +REDISPLAY +REDO +REDRAW +REEVES +REEVES+S +REMAINING +REMARK +REMARKS +REPAIR +REPAIRED +REPAIRING +REPLACED +REPORT +REPORTED +REPORTING +REPORTS +RESET +RESOLUTION +RESOLVED +RESOURCE +RESOURCES +REVIEW +ROSS +SACRAMENTO +SACRAMENTO+S +SAIL +SAME +SAMPLE +SAMPLE+S +SAN-DIEGO +SAN-FRAN +SASSAFRAS +SASSAFRAS+S +SATURDAY +SATURDAY+S +SAVE +SCHENECTADY +SCHENECTADY+S +SCREEN +SCREENS +SEA +SEAWOLF +SEAWOLF+S +SECOND +SECURITY +SENSOR +SENSORS +SEPTEMBER +SET +SETTING +SETTINGS +SEVEN +SEVENTEEN +SEVENTEENTH +SEVENTH +SEVENTY +SHASTA +SHASTA+S +SHE +SHE+S +SHERMAN +SHERMAN+S +SHIP +SHIPS +SHIPS+S +SHOW +SHOWING +SHOWN +SIBERIAN +SIDNEY +SINCE +SINGAPORE +SIX +SIXTEEN +SIXTEENTH +SIXTH +SIXTY +SIZE +SLOW +SLOWER +SLOWEST +SLQ-32 +SMALL +SMALLER +SMALLEST +SOHO +SOLOMON +SONAR +SOON +SOONER +SOUTH +SOUTHERN +SOVIET +SPEED +SPEEDS +SPS-40 +SPS-48 +SQQ-23 +START +STARTED +STARTING +STATES +STATION +STATUS +STEAM +STEREOGRAPHIC +STERETT +STERETT+S +STRAIT +SUB +SUB+S +SUBIC +SUBMARINE +SUBMARINE+S +SUBMARINES +SUBS +SUFFICIENT +SUMMARIZE +SUNDAY +SUNDAY+S +SUPPLIES +SUPPLY +SUPPOSED +SURFACE +SUSTAINED +SWITCH +SWITCHES +SWORDFISH +SWORDFISH+S +SYSTEM +T-LAM +TACAN +TAIWAN +TAKE +TAKEN +TASM +TEN +TENTH +TEST +TEXAS +TEXAS+S +TFCC +THAILAND +THAN +THAT +THE +THEIR +THEM +THERE +THESE +THEY +THIRD +THIRTEEN +THIRTEENTH +THIRTIETH +THIRTY +THIS +THOSE +THOUSAND +THREAT +THREATS +THREE +THURSDAY +THURSDAY+S +TICONDEROGA +TICONDEROGA+S +TIME +TIMES +TO +TODAY +TODAY+S +TOGGLE +TOGGLED +TOGGLING +TOKYO +TOMORROW +TOMORROW+S +TONKIN +TONS +TOTAL +TOWNSVILLE +TRACK +TRACKS +TRAINING +TRIPOLI +TRIPOLI+S +TRUE-VIEW +TUESDAY +TUESDAY+S +TURBINE +TURN +TURNED +TURNING +TUSCALOOSA +TUSCALOOSA+S +TWELFTH +TWELVE +TWENTIETH +TWENTY +TWO +TYPE +TYPES +UNION +UNIT +UNITED +UNTIL +UOM +UPDATE +UPDATED +UPDATES +UPGRADE +UPGRADED +USA +USE +USING +USN +VALUE +VALUES +VANCOUVER +VANCOUVER+S +VANDERGRIFT +VANDERGRIFT+S +VARIOUS +VESSEL +VESSELS +VICTORIA +VIRGINIA +VIRGINIA+S +VISUAL +WABASH +WABASH+S +WADSWORTH +WADSWORTH+S +WAS +WASN+T +WASP +WASP+S +WE +WEDNESDAY +WEDNESDAY+S +WEEK +WEEK+S +WEEKS +WELLINGTON +WENT +WERE +WEREN+T +WEST +WESTERN +WESTPAC +WESTPAC+S +WHAT +WHAT+RE +WHAT+S +WHEN +WHEN+LL +WHEN+S +WHERE +WHERE+S +WHICH +WHIPPLE +WHIPPLE+S +WHO +WHO+S +WHOSE +WHY +WHY+S +WICHITA +WICHITA+S +WILL +WILLAMETTE +WILLAMETTE+S +WINAMAC +WINAMAC+S +WINDOW +WINDOWS +WITH +WITHIN +WITHOUT +WON+T +WORSE +WORST +WOULD +WOULDN+T +YANKEE +YEAR +YEARS +YELLOW +YESTERDAY +YESTERDAY+S +YET +YORKTOWN +YORKTOWN+S +ZULU diff --git a/samples/RMHTK/lib/xwrd.hled b/samples/RMHTK/lib/xwrd.hled new file mode 100755 index 0000000..b6b3d47 --- /dev/null +++ b/samples/RMHTK/lib/xwrd.hled @@ -0,0 +1,5 @@ +NB sp +TC +IT +RE sil sil +RE sp sp diff --git a/samples/RMHTK/perl_scripts/Carp.pm b/samples/RMHTK/perl_scripts/Carp.pm new file mode 100755 index 0000000..aff3c36 --- /dev/null +++ b/samples/RMHTK/perl_scripts/Carp.pm @@ -0,0 +1,72 @@ +package Carp; + +=head1 NAME + +carp - warn of errors (from perspective of caller) + +croak - die of errors (from perspective of caller) + +confess - die of errors with stack backtrace + +=head1 SYNOPSIS + + use Carp; + croak "We're outta here!"; + +=head1 DESCRIPTION + +The Carp routines are useful in your own modules because +they act like die() or warn(), but report where the error +was in the code they were called from. Thus if you have a +routine Foo() that has a carp() in it, then the carp() +will report the error as occurring where Foo() was called, +not where carp() was called. + +=cut + +# This package implements handy routines for modules that wish to throw +# exceptions outside of the current package. + +$CarpLevel = 0; # How many extra package levels to skip on carp. + +require Exporter; +@ISA = Exporter; +@EXPORT = qw(confess croak carp); + +sub longmess { + my $error = shift; + my $mess = ""; + my $i = 1 + $CarpLevel; + my ($pack,$file,$line,$sub); + while (($pack,$file,$line,$sub) = caller($i++)) { + $mess .= "\t$sub " if $error eq "called"; + $mess .= "$error at $file line $line\n"; + $error = "called"; + } + $mess || $error; +} + +sub shortmess { # Short-circuit &longmess if called via multiple packages + my $error = $_[0]; # Instead of "shift" + my ($curpack) = caller(1); + my $extra = $CarpLevel; + my $i = 2; + my ($pack,$file,$line,$sub); + while (($pack,$file,$line,$sub) = caller($i++)) { + if ($pack ne $curpack) { + if ($extra-- > 0) { + $curpack = $pack; + } + else { + return "$error at $file line $line\n"; + } + } + } + goto &longmess; +} + +sub confess { die longmess @_; } +sub croak { die shortmess @_; } +sub carp { warn shortmess @_; } + +1; diff --git a/samples/RMHTK/perl_scripts/Exporter.pm b/samples/RMHTK/perl_scripts/Exporter.pm new file mode 100755 index 0000000..80fb42f --- /dev/null +++ b/samples/RMHTK/perl_scripts/Exporter.pm @@ -0,0 +1,182 @@ +package Exporter; + +=head1 Comments + +If the first entry in an import list begins with !, : or / then the +list is treated as a series of specifications which either add to or +delete from the list of names to import. They are processed left to +right. Specifications are in the form: + + [!]name This name only + [!]:DEFAULT All names in @EXPORT + [!]:tag All names in $EXPORT_TAGS{tag} anonymous list + [!]/pattern/ All names in @EXPORT and @EXPORT_OK which match + +A leading ! indicates that matching names should be deleted from the +list of names to import. If the first specification is a deletion it +is treated as though preceded by :DEFAULT. If you just want to import +extra names in addition to the default set you will still need to +include :DEFAULT explicitly. + +e.g., Module.pm defines: + + @EXPORT = qw(A1 A2 A3 A4 A5); + @EXPORT_OK = qw(B1 B2 B3 B4 B5); + %EXPORT_TAGS = (T1 => [qw(A1 A2 B1 B2)], T2 => [qw(A1 A2 B3 B4)]); + + Note that you cannot use tags in @EXPORT or @EXPORT_OK. + Names in EXPORT_TAGS must also appear in @EXPORT or @EXPORT_OK. + +Application says: + + use Module qw(:DEFAULT :T2 !B3 A3); + use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET); + use POSIX qw(/^S_/ acos asin atan /^E/ !/^EXIT/); + +You can set C<$Exporter::Verbose=1;> to see how the specifications are +being processed and what is actually being imported into modules. + +=head2 Module Version Checking + +The Exporter module will convert an attempt to import a number from a +module into a call to $module_name->require_version($value). This can +be used to validate that the version of the module being used is +greater than or equal to the required version. + +The Exporter module supplies a default require_version method which +checks the value of $VERSION in the exporting module. + +=cut + +require 5.001; + +$ExportLevel = 0; +$Verbose = 0; + +require Carp; + +sub export { + + # First make import warnings look like they're coming from the "use". + local $SIG{__WARN__} = sub { + my $text = shift; + $text =~ s/ at \S*Exporter.pm line \d+.\n//; + local $Carp::CarpLevel = 1; # ignore package calling us too. + Carp::carp($text); + }; + + my $pkg = shift; + my $callpkg = shift; + my @imports = @_; + my($type, $sym); + *exports = \@{"${pkg}::EXPORT"}; + if (@imports) { + my $oops; + *exports = \%{"${pkg}::EXPORT"}; + if (!%exports) { + grep(s/^&//, @exports); + @exports{@exports} = (1) x @exports; + foreach $extra (@{"${pkg}::EXPORT_OK"}) { + $exports{$extra} = 1; + } + } + + if ($imports[0] =~ m#^[/!:]#){ + my(@allexports) = keys %exports; + my $tagsref = \%{"${pkg}::EXPORT_TAGS"}; + my $tagdata; + my %imports; + # negated first item implies starting with default set: + unshift(@imports, ':DEFAULT') if $imports[0] =~ m/^!/; + foreach (@imports){ + my(@names); + my($mode,$spec) = m/^(!)?(.*)/; + $mode = '+' unless defined $mode; + + @names = ($spec); # default, maybe overridden below + + if ($spec =~ m:^/(.*)/$:){ + my $patn = $1; + @names = grep(/$patn/, @allexports); # XXX anchor by default? + } + elsif ($spec =~ m#^:(.*)# and $tagsref){ + if ($1 eq 'DEFAULT'){ + @names = @exports; + } + elsif ($tagsref and $tagdata = $tagsref->{$1}) { + @names = @$tagdata; + } + } + + warn "Import Mode $mode, Spec $spec, Names @names\n" if $Verbose; + if ($mode eq '!') { + map {delete $imports{$_}} @names; # delete @imports{@names} would be handy :-) + } + else { + @imports{@names} = (1) x @names; + } + } + @imports = keys %imports; + } + + foreach $sym (@imports) { + if (!$exports{$sym}) { + if ($sym =~ m/^\d/) { + $pkg->require_version($sym); + # If the version number was the only thing specified + # then we should act as if nothing was specified: + if (@imports == 1) { + @imports = @exports; + last; + } + } elsif ($sym !~ s/^&// || !$exports{$sym}) { + warn qq["$sym" is not exported by the $pkg module ], + "at $callfile line $callline\n"; + $oops++; + next; + } + } + } + Carp::croak("Can't continue with import errors.\n") if $oops; + } + else { + @imports = @exports; + } + warn "Importing from $pkg into $callpkg: ", + join(", ",@imports),"\n" if ($Verbose && @imports); + foreach $sym (@imports) { + $type = '&'; + $type = $1 if $sym =~ s/^(\W)//; + *{"${callpkg}::$sym"} = + $type eq '&' ? \&{"${pkg}::$sym"} : + $type eq '$' ? \${"${pkg}::$sym"} : + $type eq '@' ? \@{"${pkg}::$sym"} : + $type eq '%' ? \%{"${pkg}::$sym"} : + $type eq '*' ? *{"${pkg}::$sym"} : + warn "Can't export symbol: $type$sym\n"; + } +}; + +sub import { + local ($callpkg, $callfile, $callline) = caller($ExportLevel); + my $pkg = shift; + export $pkg, $callpkg, @_; +} + +sub export_tags { + my ($pkg) = caller; + *tags = \%{"${pkg}::EXPORT_TAGS"}; + push(@{"${pkg}::EXPORT"}, + map {$tags{$_} ? @{$tags{$_}} : $_} @_ ? @_ : keys %tags); +} + +sub require_version { + my($self, $wanted) = @_; + my $pkg = ref $self || $self; + my $version = ${"${pkg}::VERSION"} || "(undef)"; + Carp::croak("$pkg $wanted required--this is only version $version") + if $version < $wanted; + $version; +} + +1; diff --git a/samples/RMHTK/perl_scripts/MakeProtoHMMSet.prl b/samples/RMHTK/perl_scripts/MakeProtoHMMSet.prl new file mode 100755 index 0000000..b115f49 --- /dev/null +++ b/samples/RMHTK/perl_scripts/MakeProtoHMMSet.prl @@ -0,0 +1,339 @@ +#!/usr/local/bin/perl + +# +# This script can be used to produce prototype HMMSets for +# PLAINHS, TIEDHS and DISCRETEHS systems +# + +# Global Variables +$nStates=0; # Number of active HMM states +$nStreams=0; # Number of streams +$vecSize=0; # Size of feature vector +$pKind=""; # Parameter kind +$cKind=""; # Covariance kind +$hsKind=""; # System kind +$outDir=""; # Output HMMSet directory +$configParams; # Global store of config parameters + + +#***************************** START MAIN *********************************** +$|=1; #Force buffer flush on STDOUT + +if ($ARGV[0]){ + &ReadPCF(); + &SetVars(); + &TestDirEmpty(); + &WriteHSet(); +}else{ + print "USAGE: MakeProtoHMMSet ConfigFile\n"; +} + +#******************************* END MAIN ********************************* + +#************************ Util Functions ********************************** + +#------------------------------------- +# ReadPCF: Reads the Proto Config File +#------------------------------------- +sub ReadPCF { + +local($validData,$param,$val)=0; + +while(<>){ + if(/\/){ + $validData=0; + } + if($validData){ + ($param,$val)=split(/ *: */, $_); + if (($param =~ /hmmList/)||($param =~ /outDir/)||($param =~ /parmKind/)) { + }elsif ($param =~ /mixes/){ + @mixes=split(/ +/, $_); + }elsif ($param =~ /sWidths/){ + @sWidths=split(/ +/, $_); + }else{ + $val =~ tr/A-Z/a-z/; + } + chop($val); + $configParams{$param}=$val; + write; + } + if(/\/ || /\/){ + $validData=1; + } +} +format STDOUT_TOP = + Proto Config File Read + ====================== +Parameter Value +----------------------- +. +format STDOUT= +@<<<<<<<<<<<<<<<<<<<@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +$param,$val +. +} + +#----------------------------------------- +# SetVars: Set variable from config params +#----------------------------------------- +sub SetVars { + +$nStates = $configParams{"nStates"}; +($nStates >= 1) || die "nStates must be >= 1"; +$nStreams = $configParams{"nStreams"}; +($nStreams =~ /^[1234]/) || die "nStreams must be 1,2,3 or 4"; +$vecSize = $configParams{"vecSize"}; +($vecSize >= 1) || die "vecSize must be >= 1"; +$hsKind = $configParams{"hsKind"}; +($hsKind =~ /^[pPtTdD]/) || die "hsKind must be P, T or D"; +$cKind = $configParams{"covKind"}; +($cKind =~ /^[dDfF]/) || die "covKind must be F or D"; +$pKind = $configParams{"parmKind"}; +if ($hsKind=~/^[dD]/){ + ($pKind=~/[vV]$/) || die "If hsKind is D then parmKind must have _V appended"; +} +if ($hsKind=~/^[pPtT]/){ + if($pKind=~/[vV]$/){ + die "If hsKind is not D then parmKind must not have _V appended"; + } +} +$outDir = $configParams{"outDir"}; +opendir(OUTDIR,$outDir) || die "Can't open $outDir"; +$hmmList = $configParams{"hmmList"}; +(-f $hmmList) || die "Cannot find HMM list file $hmmList"; +} + +#----------------------------------------------------------------- +# TestDirEmpty: Test if outDir is empty and prompt for clearing it +#----------------------------------------------------------------- +sub TestDirEmpty { + @nFiles = grep(!/^\./, readdir(OUTDIR)); #Forget about . files + if($nFiles[0]){ + print "\n$outDir not empty clear it Y/N?:"; + chop($ans = ); + if ($ans =~ /^[yY]/){ + print "\nRemoving files from $outDir\n"; + $nFiles[0] = unlink(<$outDir/*>); + print "Removed $nFiles[0] files\n"; + }else{ + print "\nDirectory $outDir unaltered\n"; + } + } +} + +#************************ HMM Functions ********************************** + +#------------------------------------ +# WriteGlobOpts: Write global options +#------------------------------------ +sub WriteGlobOpts { + local($fleHandle,$hmmName)=@_; + + printf($fleHandle " ~o %d <$pKind> %d ",$vecSize,$nStreams); + for ($i=1; $i<=$nStreams; $i++) { + printf($fleHandle "%d ",$sWidths[$i]); + } + printf($fleHandle "\n"); + (($hsKind=~/^[tT]/)&&($fleHandle=~/MACRO/)) || printf($fleHandle " ~h \"$hmmName\"\n"); +} + +#------------------------------------------------------- +# WriteDiagCMixtures: write a diagonal covariance mixture +#------------------------------------------------------- +sub WriteDiagCMixtures { + local($streamNum)=@_; + local($i,$j,$k,$mixWght)=0; + + $mixWght=1/$mixes[$streamNum]; + + for ($i=1; $i<=$mixes[$streamNum]; $i++){ + printf(PROTO " %d %1.4f\n",$i,$mixWght); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($j=1; $j<=$sWidths[$streamNum]; $j++){ + printf(PROTO "0.0 "); + } + printf(PROTO "\n"); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($k=1; $k<=$sWidths[$streamNum]; $k++){ + printf(PROTO "1.0 "); + } + printf(PROTO "\n"); + } +} + +#------------------------------------------------------- +# WriteFullCMixtures: write the full covariance mixtures +#------------------------------------------------------- +sub WriteFullCMixtures { + local($streamNum)=@_; + local($i,$j,$k,$mixWght,$tmpVecSize)=0; + + $mixWght=1/$mixes[$streamNum]; + $tmpVecSize=$sWidths[$streamNum]; + + for ($i=1; $i<=$mixes[$streamNum]; $i++){ + printf(PROTO " %d %1.4f\n",$i,$mixWght); + printf(PROTO " %d\n",$sWidths[$streamNum]); + printf(PROTO " "); + for ($j=1; $j<=$sWidths[$streamNum]; $j++){ + printf(PROTO "0.0 "); + } + printf(PROTO "\n"); + printf(PROTO " %d\n",$sWidths[$streamNum]); + while ($tmpVecSize>=1){ + for ($k=1; $k<=$tmpVecSize; $k++){ + if ($k==1){ + printf(PROTO "1.0 "); + }else{ + printf(PROTO "0.0 "); + } + } + printf(PROTO "\n"); + $tmpVecSize--; + } + $tmpVecSize=$sWidths[$streamNum]; + } +} + +#----------------------------------------------- +# WriteTiedMixes: Write tied mixes to macro file +#----------------------------------------------- +sub WriteTiedMixes { + local($i,$j,$k)=0; + + if (-r $outDir."/newMacros"){ + unlink(<$outDir/newMacros>); + } + open(MACRO, ">>$outDir/newMacros") || die "Cannot open $outDir/newMacros for writing"; + &WriteGlobOpts(MACRO); + for ($i=1; $i<=$nStreams; $i++){ + for ($j=1; $j<=$mixes[$i]; $j++){ + printf(MACRO "~m \"TM_${i}_${j}\"\n"); + printf(MACRO " %d\n",$sWidths[$i]); + for ($k=1; $k<=$sWidths[$i]; $k++){ + printf(MACRO "0.0 "); + } + printf(MACRO "\n"); + printf(MACRO " %d\n",$sWidths[$i]); + for ($k=1; $k<=$sWidths[$i]; $k++){ + printf(MACRO "1.0 "); + } + printf(MACRO "\n"); + } + } +} + +#---------------------------------------------- +# WriteDProbs: Write the discrete probabilities +#---------------------------------------------- +sub WriteDProbs { + local($s)=@_; + + printf(PROTO " %d*$mixes[$s]\n",-2371.8*log(1/$mixes[$s])); +} + +#----------------------------------------------- +# WriteTiedWghts: Write the tied mixture weights +#----------------------------------------------- +sub WriteTiedWghts { + local($streamNum)=@_; + + printf(PROTO " \"TM_${streamNum}_\"\n"); + printf(PROTO "%e*$mixes[$streamNum]\n",1/$mixes[$streamNum]); +} + +#---------------------------------------------- +# WriteStates: Write the contents of the states +#---------------------------------------------- +sub WriteStates { + local($i,$j)=0; + + for ($i=1; $i<=$nStates; $i++){ + printf(PROTO " %d ",$i+1); + for ($k=1; $k<=$nStreams; $k++){ + printf(PROTO "%d ",$mixes[$k]); + } + printf(PROTO "\n"); + for ($j=1; $j<=$nStreams; $j++){ + printf(PROTO " %d\n",$j); + if ($hsKind =~ /^[Dd]/){ + &WriteDProbs($j); + }elsif ($hsKind =~ /^[pP]/){ + if ($cKind =~ /^[dD]/){ + &WriteDiagCMixtures($j); + }else{ + &WriteFullCMixtures($j); + } + }elsif ($hsKind =~ /^[Tt]/){ + &WriteTiedWghts($j); + } + } + } +} + +#----------------------------------------------------------- +# WriteTransMat: Write the contents of the transition matrix +#----------------------------------------------------------- +sub WriteTransMat { + local($i,$j)=0; + + printf(PROTO " %d\n",$nStates+2); + for ($i=1; $i<=$nStates+2; $i++){ + for ($j=1; $j<=$nStates+2; $j++){ + if (($i==1)&&($j==2)){ + printf (PROTO " 1.000e+0"); + }elsif (($i==$j)&&($i!=1)&&($i!=$nStates+2)){ + printf (PROTO " 6.000e-1"); + }elsif ($i==($j-1)){ + printf (PROTO " 4.000e-1"); + }else{ + printf (PROTO " 0.000e+0"); + } + } + printf (PROTO "\n"); + } +} + +#---------------------------------------- +# WriteHMM: Write the contents of the HMM +#---------------------------------------- +sub WriteHMM { + local($hmmName)=@_; + local($i)=0; + + open(PROTO, ">$outDir/$hmmName") || die "Cannot open $outDir/$hmmName for writing"; + &WriteGlobOpts(PROTO,$hmmName); + printf(PROTO "\n"); + printf(PROTO " %d\n",$nStates+2); + &WriteStates(); + &WriteTransMat(); + printf(PROTO "\n"); + close(PROTO); +} + +#------------------------------------------ +# WriteHSet: Write the contents of the HSet +#------------------------------------------ +sub WriteHSet { + + open(HMMLIST, $hmmList) || die "Cannot open $hmmList for reading"; + + printf "\nWriting HMMSet\n\n"; + if ($hsKind =~ /^[tT]/){ + printf "Writing Tied Mixtures to $outDir/newMacros\n"; + &WriteTiedMixes(); + printf "\n"; + } + while () { + chop($_); + printf "Writing HMMDef to $outDir/$_\n"; + &WriteHMM($_); + } + close(HMMLIST); +} + + + + diff --git a/samples/RMHTK/perl_scripts/coderm.prl b/samples/RMHTK/perl_scripts/coderm.prl new file mode 100755 index 0000000..8b7da98 --- /dev/null +++ b/samples/RMHTK/perl_scripts/coderm.prl @@ -0,0 +1,181 @@ +#!/usr/local/bin/perl + +# This script will encode a given list of files of the RM database +# store the results in a directory tree given the root +# It has options for coding training data and test data for both +# the speaker dependent and speaker independent training sets +# +# usage: coderm.prl ndxdir cdmount dbtype dbportion targetroot config codelist +# +# ndxdir - directory to find the NIST filelists +# cdmount - where CD-ROM with both data files is mounted +# dbtype - ind | dep +# dbportion - train | dev_aug | traina | trainb | evalset | dms0_tst +# targetroot - root directory for coded files +# config - configuration file used to set coding parameters +# codelist - list of coded files +# +# for speaker dependent - dbportion = traina (1st 6 speakers) +# = trainb (2nd 6 speakers) +# for speaker independent - dbportion = train (main 72 speakers) +# - dbportion = dev_aug (augmented 37 speakers) +# In both cases evalset is one of {feb89, oct89, feb91, sep92} +# +# eg coderm.prl $RMLIB/ndx $CDRM1 ind train /home/azure/pcw/rmdata +# +# The script first identifies the appropriate filelist from ndxdir +# and then codes all the files listed transforming the filenames +# so that they are unique e.g bef0_3/st0013.wav -> bef0_3_st0013.mfc +# +# Copyright (c) Phil Woodland + Julian Odell, 1995 +# Last Updated 17/8/95 +# +# convert to perl by TL 7/1998 +# +push @INC, "$ENV{RMSCRIPTS}"; +require "global.pl"; # include global variables + +if ( $#ARGV != 6 ) { + die "usage: coderm.prl ndxdir cdmount dbtype dbportion targetroot config codelist.\n"; +} + +$ndxdir = $ARGV[0]; +if ( ! -d $ndxdir ) { + die "NIST filelist directory $ndxdir not found.\n"; +} + +$rmcd = $ARGV[1]; +if ( ! -d $rmcd ) { + die "RM CD-ROM $rmcd not found.\n"; +} + +$dbtype = $ARGV[2]; +if ( $dbtype != ind && $dbtype != dep ) { + die "dbtype of [ind | dep] expected and not $dbtype.\n"; +} + +$dbportion = $ARGV[3]; +foreach ($dbportion) { + /traina/ and do { + if ($dbtype == dep) { + $ndx = "$ndxdir\\6a_deptr.ndx"; + } + else { + die "Illegal dbportion $dbportion for dbtype $dbtype.\n"; + } + last; + }; + /trainb/ and do { + if ($dbtype == dep) { + $ndx = "$ndxdir\\6b_deptr.ndx"; + } + else { + die "Illegal dbportion $dbportion for dbtype $dbtype.\n"; + } + last; + }; + /train/ and do { + if ($dbtype == ind) { + $ndx = "$ndxdir\\72_indtr.ndx"; + } + else { + die "Illegal dbportion $dbportion for dbtype $dbtype.\n"; + } + last; + }; + /dev_aug/ and do { + if ($dbtype == ind) { + $ndx = "$ndxdir\\37_indtr.ndx"; + } + else { + die "Illegal dbportion $dbportion for dbtype $dbtype.\n"; + } + last; + }; + /feb89/ and do { + $ndx = "$ndxdir\\4_${dbtype}tst.ndx"; + last; + }; + /oct89/ and do { + $ndx = "$ndxdir\\5_${dbtype}tst.ndx"; + last; + }; + /feb91/ and do { + $ndx = "$ndxdir\\6_${dbtype}tst.ndx"; + last; + }; + /sep92/ and do { + $ndx = "$ndxdir\\7_${dbtype}tst.ndx"; + last; + }; + /dms0_tst/ and do { + $ndx = "$ndxdir\\dms0_tst.ndx"; + last; + }; + die "dbtype not one of (train | dev_aug | traina | trainb | feb89 | oct89 | feb91 | sep92 | dms0_tst).\n"; +} + +$tgtroot = $ARGV[4]; +if ( ! -d $tgtroot ) { + die "Target root directory $tgtroot doesnt exist.\n"; +} + +$config = $ARGV[5]; +$codefilelist = $ARGV[6]; + +if ( ! -r $ndx ) { + die "Cant read RM filelist $ndx.\n"; +} + +$codescript = "${codefilelist}.code"; + +unlink $codefilelist; +unlink $codescript; + +print "Making file lists\n"; +$count = 0; +open(NDXFILE,"<$ndx") or die "Can't open file $ndx\n"; +open(CODESCRIPT,">$codescript") or die "Can't open file $codescript\n"; +open(CODEFILELIST,">$codefilelist") or die "Can't open file $codefilelist\n"; +while () { + if (/^;/) { + next; + } + s:^/(.*)/(.*)([/_])(.*)/(.*)/(.*)\.wav:$rmcd\\$1\\$2$3$4\\$5\\$6.wav $tgtroot\\$2_$4\\$5\\$5_$6.mfc:; + printf CODESCRIPT; + printf CODEFILELIST "$tgtroot\\$2_$4\\$5\\$5_$6.mfc\n"; + $dirname = "$tgtroot\\$2_$4\\$5"; + $newdir = 1; + foreach $dirlist (@dirlists) { + if ( $dirlist eq $dirname ) { + $newdir = 0; + last; + } + } + + if ( $newdir == 1 ) { + @dirlists = ( @dirlists, $dirname ); + } + $count++; +} +close(NDXFILE); +close(CODESCRIPT); +close(CODEFILELIST); +@coredirs = ("dep_eval", "dep_trn", "dev_aug", "ind_eval", "ind_trn"); +foreach $coredir (@coredirs) { + if ( ! -d "$RMDATA\\$coredir" ) { + system("mkdir $RMDATA\\$coredir"); + } +} + +foreach $dirlist (@dirlists) { + if ( ! -d $dirlist ) { + system("mkdir $dirlist"); + } +} + +print "Coding data\n"; +system("HCopy -A -T 1 -C $config -S $codescript"); +unlink $codescript; + +print "Coding complete - $count files processed\n"; diff --git a/samples/RMHTK/perl_scripts/discreteMonoSet.prl b/samples/RMHTK/perl_scripts/discreteMonoSet.prl new file mode 100755 index 0000000..b49933b --- /dev/null +++ b/samples/RMHTK/perl_scripts/discreteMonoSet.prl @@ -0,0 +1,37 @@ +#!/usr/local/bin/perl + +push @INC, "$ENV{RMSCRIPTS}"; +require "global.pl"; # include global variables + +$monoset=$ARGV[0]; +$discretehmm=$ARGV[1]; +$discretesp=$ARGV[2]; + +open (FILE, "<$monoset") or die ("Unable to open monophone file"); +@monofile = ; +foreach $mono (@monofile) { + if ($mono ne "sp\n") { + open (FILE_HMM, ">>hmm0\\$mono"); + print FILE_HMM "~o 39 4 12 12 12 3\n"; + print FILE_HMM "~h $mono\n"; + open (FILE_SRC, "<$discretehmm"); + @srcdata = ; + foreach $src (@srcdata) { + print FILE_HMM $src; + } + close(FILE_SRC); + close(FILE_HMM); + } +} +close(monofile); + +open (FILE_HMM, ">>hmm0\\sp"); +print FILE_HMM "~o 39 4 12 12 12 3\n"; +print FILE_HMM "~h sp\n"; +open (FILE_SP, "<$discretesp"); +@spdata = ; +foreach $sp (@spdata) { + print FILE_HMM $sp; +} +close(FILE_SP); +close(FILE_HMM); diff --git a/samples/RMHTK/perl_scripts/env_conv.pm b/samples/RMHTK/perl_scripts/env_conv.pm new file mode 100755 index 0000000..c0090c9 --- /dev/null +++ b/samples/RMHTK/perl_scripts/env_conv.pm @@ -0,0 +1,54 @@ +;# This sub will convert the HTK environment file in "csh" format +;# to "perl" format. +;# +;# Usage: &env_conv::env_convert(HTK_csh_env_file,HTK_perl_env); +;# +;# TL 7/1998 +;# + +package env_conv; +require Exporter; +@ISA = qw(Exporter); +@EXPORT = qw(env_convert); + +sub env_convert { + + local ($env_file,$perl_env) = @_; + open(ENVFILE,"<$env_file") or die "Can't open env $env_file file\n"; + open(PERLENV,">$perl_env") or die "Can't open env $perl_env file\n"; + while() { + (/^#/ || /^\s+$/) && next; # skip an empty line or comment + chop; + ($line, $comment) = split('#',$_); + $line =~ s/=/ /; # replace '=' with ' ' + $line =~s/\s+/ /g; # turn one or more white spaces into a space + $line =~ s/^ | $//; # remove ' ' at the end of the line + ($command, $varname, $value ) = split / / ,"$line", 3; + if ( ($command eq "set") || ($command eq "setenv") ) { + $value =~ s/\(+//; + $value =~ s/\)+//; + $value =~ s/\{+//; + $value =~ s/\}+//; + printf PERLENV '$'."$varname = \"$value\";\n"; + } + elsif ( $command eq "if" ) { + printf PERLENV "$command "; + if ( $varname =~ '$?' ) { + $varname =~ s/\$\?/defined \$/; + } + printf PERLENV "$varname {\n"; + } + elsif ( $command eq "else" ) { + printf PERLENV "}\n$command {\n"; + } + elsif ( $command eq "endif" ) { + printf PERLENV "}\n"; + } + } + + printf PERLENV "1;\n"; + close(ENVFILE); + close(PERLENV); +} + +1; diff --git a/samples/RMHTK/perl_scripts/fixrm.prl b/samples/RMHTK/perl_scripts/fixrm.prl new file mode 100755 index 0000000..ac6c17d --- /dev/null +++ b/samples/RMHTK/perl_scripts/fixrm.prl @@ -0,0 +1,59 @@ +#!/usr/local/bin/perl + +# fix rm files that were corrupted in recording +# chops out a number of samples from the (coded) files +# +# usage: fixrm.prl corruptlist dataroot +# +# where: -corruptlist is a file with each list containing the +# corrupt_file_name corrupt_start corrupt_end +# -dataroot is the root directory for the files in corruptlist +# +# the script moves the original file to the same name with +# .orig added to the name +# +# Copyright (c) Phil Woodland, 1993 +# Last Updated 14/5/93 +# +# convert to perl by TL 7/1998 +# + +if ( $#ARGV != 1 ) { + die "usage: fixrm.prl corruptlist dataroot\n"; +} + +$Corrupt=$ARGV[0]; +if (! -f $Corrupt) { + die "fixrm: corrupt list $Corrupt not found\n"; +} + +$Data_root=$ARGV[1]; +if (! -d $Data_root) { + die "fixrm: Invalid dataroot directory $Data_root\n"; +} + +open(CORRUPTFILE,"<$Corrupt") or die "Can't open corrupt list file $Corrupt\n"; +while () { + /^\s+$/ && next; # skip an empty line + s/\s+/ /g; # turn one or more white spaces into a space + ($name, $first, $last) = split(" ",$_); + $fullname = "$Data_root\\$name"; + $backup = "$fullname".".orig"; + if ( -f $backup ) { + print "$fullname already processed\n"; + } + else { + print "Deleting frames $first to $last of $fullname\n"; + system("copy $fullname $backup"); + $tmpfile1 = "$fullname".".tp1"; + $tmpfile2 = "$fullname".".tp2"; + $startend = ( $first - 1 ) * 100000; + system("HCopy -A -e $startend $fullname $tmpfile1"); + $endstart = ( $last + 1 ) * 100000; + system("HCopy -A -s $endstart $fullname $tmpfile2"); + system("HCopy -A $tmpfile1 + $tmpfile2 $fullname"); + unlink $tmpfile1; + unlink $tmpfile2; + } +} +close(CORRUPTFILE); diff --git a/samples/RMHTK/perl_scripts/full_list.prl b/samples/RMHTK/perl_scripts/full_list.prl new file mode 100755 index 0000000..14d92c1 --- /dev/null +++ b/samples/RMHTK/perl_scripts/full_list.prl @@ -0,0 +1,36 @@ +#!/usr/local/bin/perl + +# This script will generate all possible monophones, biphones +# and triphones for cross-word system from monophones list +# +# TL 7/1997 +# + +if ( $#ARGV != 0 ) { + die "usage: full_list.prl monophones_list.\n"; +} + +$datfile = $ARGV[0]; +if ( ! -f $datfile ) { + die "monophones list file $datfile not found. Aborting!\n"; +} + +open(DATFILE,"<$datfile") or die "Can't open file $datfile\n"; +while () { + ($Fld1) = split(' ', $_); + $ph{++$np} = $Fld1; +} + +printf (("sil\nsp\n")); +$ph{++$np} = 'sil'; +for ($j = 1; $j < $np; $j++) { + printf "%s\n", $ph{$j}; + for ($i = 1; $i <= $np; $i++) { + printf "%s-%s\n%s+%s\n", $ph{$i}, $ph{$j}, $ph{$j}, $ph{$i}; + for ($k = 1; $k <= $np; $k++) { + printf "%s-%s+%s\n", $ph{$i}, $ph{$j}, $ph{$k}; + } + } +} + +close (DATFILE); diff --git a/samples/RMHTK/perl_scripts/get_ndx.prl b/samples/RMHTK/perl_scripts/get_ndx.prl new file mode 100755 index 0000000..e22ee4d --- /dev/null +++ b/samples/RMHTK/perl_scripts/get_ndx.prl @@ -0,0 +1,118 @@ +#!/usr/local/bin/perl + +# +# This script will copy the speaker independent file lists from +# RMCD2 to ndx directory. +# +# TL 7/1998 +# + +push @INC, "$ENV{RMSCRIPTS}"; +require "global.pl"; + +$ndx_dir = "$RMLIB".'\\ndx'; +if (!-d $ndx_dir) { + mkdir $ndx_dir, 0755; +} + +chdir ($ndx_dir); + +@types = ("*_*.ndx"); + +$count=0; +foreach $type (@types) { + $cmdstr = "$RMCD2\\rm1\\doc\\$type"; + system("dir /S /B $cmdstr > junk"); + open(JUNK, ") { + chop; + if ( -f $_ ) { + system("copy $_ $ndx_dir\\."); + $count++; + } + else { + print "not a file $_.\n"; + } + } +} +close (JUNK); +unlink junk; +if ( $count > 0 ) { + print "$count files have been copied\n"; +} +else { + print "Error: No file was found\n"; +} + + +#We need to strip the adaptation data so there is only one speaker (dms0) + +print("\nModifying training data for one speaker (dms0)\n"); +chdir ($ndx_dir); + +system("dir /B *dep* > junk"); + +open(JUNK, ") { + chop; + if ( -f $_ ) { + $outfile = "$_.tmp"; + unless (open (OUTFILE, ">$outfile")) { + die ("cannot open dir $ndx_dir for writing"); + } + open (INFILE, $_); + $filename = $_; + $filename =~ tr/A-Z/a-z/; + $count = 0; + $line = ; + while ( $line ne "" && $count <100){ + if ( $line =~ /dms0/ ) { + print OUTFILE ($line); + #we do not need all 600 sentences for adaptation training. + if ( $filename =~ /6a_deptr/ ) { + $count++; + } + } + $line = ; + } + close(OUTFILE); + } + else { + print "not a file $_.\n"; + } +} +close (JUNK); + +open(JUNK, ") { + chop; + system("copy $_.tmp $_"); +} +close (JUNK); + +open(JUNK, ") { + chop; +chdir ($ndx_dir); + $file = "$_.tmp"; + unlink("$_.tmp"); +} +close (JUNK); + +# put all speaker dep test files into a single file. + +system("dir /B *deptst* > junk"); +open(JUNK, ") { + chop; +print ("$_\n"); + if ( $_ =~ /TST/ ) { + system ("type $_ >> dms0_tst.ndx"); + } +} +close (JUNK); + +unlink junk; + + +print("Adaptation scripts modified\n"); diff --git a/samples/RMHTK/perl_scripts/global.pl b/samples/RMHTK/perl_scripts/global.pl new file mode 100755 index 0000000..180c013 --- /dev/null +++ b/samples/RMHTK/perl_scripts/global.pl @@ -0,0 +1,16 @@ +## +## global.pl: Global variables for RM DEMO +## Need to set enviroment variable RMSCRIPTS (path name for RM scripts) +## for the whole scripts to work. +## +## TL 7/1998 +## + +$RMWORK="Z\:\\htk_test\\samples\\RMHTK\\work"; +$RMLIB="Z\:\\htk_test\\samples\\RMHTK\\lib"; +$RMDATA="Z\:\\htk_test\\samples\\RMHTK\\data"; +$RMCD1="Z\:\\htk_test\\CD_NIST2_3_1"; +$RMCD2="Z\:\\htk_test\\RM1_CD_2_4_2"; +$RMCD3="Z\:\\htk_test\\CD1_NIST2_1_1"; + +1; diff --git a/samples/RMHTK/perl_scripts/hbuild.prl b/samples/RMHTK/perl_scripts/hbuild.prl new file mode 100755 index 0000000..270e432 --- /dev/null +++ b/samples/RMHTK/perl_scripts/hbuild.prl @@ -0,0 +1,39 @@ +#!/usr/local/bin/perl + +# This perl script calls herest repeatedly to build a sequence +# of model sets, each set in the sequence being 1 single embedded +# reestimation of the previous +# +# usage: hbuild.prl fromN toN +# +# Example - hbuild.prl 2 4 is equivalent to the sequence +# herest HTE hmm1 hmm2 +# herest HTE hmm2 hmm3 +# herest HTE hmm3 hmm4 +# Note that this script must be executed in the directory holding +# hmm1, hmm2 etc. +# +# Copyright (c) Steve Young & Phil Woodland, 1992, 1993 +# Last Updated 14/5/93 +# +# convert to perl by TL 7/1998 +# + +if ( $#ARGV != 1 ) { + die "usage: hbuild.prl fromN toN\n"; +} + +open(LOGFILE,">blog") or die "Can't open blog file\n"; +printf LOGFILE "Build started at " . scalar localtime(time) . "\n"; +$i=$ARGV[0]; +while ( $i <= $ARGV[1] ) { + $j = $i - 1; + if ( -d "hmm$i" ) { + die "hbuild: trying to overwrite hmm$i\n"; + } + printf LOGFILE "Building hmm$i from hmm$j\n"; + system("perl $ENV{RMSCRIPTS}\\herest.prl HTE hmm$j hmm$i"); + $i++; +} +printf LOGFILE "Build finished at " . scalar localtime(time) . "\n"; +close (LOGFILE); diff --git a/samples/RMHTK/perl_scripts/hedit.prl b/samples/RMHTK/perl_scripts/hedit.prl new file mode 100755 index 0000000..c4802fe --- /dev/null +++ b/samples/RMHTK/perl_scripts/hedit.prl @@ -0,0 +1,86 @@ +#!/usr/local/bin/perl + +# This shell script invokes HHEd to perform a global edit of a set +# of models. It must be executed from within the directory holding +# the hmm directories. +# +# Usage: hedit.prl env m n +# +# where m is the index of the source directory and n is the index +# of the target directory. hedit assumes the existence of an edit file +# in the current directory +# +# edfilem.n - containing the required edit commands +# +# Example +# +# cd R3; hedit.prl env 14 21 +# +# Edit the models stored in hmm14 and store the new models in +# an MMF in hmm21 using the edit commands stored in edfile14.21 +# +# Copyright (c) Steve Young 1992, 1993 +# Last Updated 19/10/93 +# +# Converted to Perl script by TL 7/1998 +# + +push @INC, "$ENV{RMSCRIPTS}"; # include the perl script path +require "global.pl"; # include global variables +require "env_conv.pm"; # sub to convert env vars + +# Check Number of Args +if ( $#ARGV != 2 ) { + die "Usage: hedit.prl env m n\n"; +} + +# Read the environment file +$Env_file = $ARGV[0]; +if ( ! -f $Env_file ) { + die "htestrm: cannot find environment file $Env_file\n"; +} +# convert environment file to perl format +$Perl_env = "HE_env.pl"; +&env_conv::env_convert($Env_file,$Perl_env); + +# read in variable value from new file in perl format +require "$Perl_env"; + +$from = $ARGV[1]; +$to = $ARGV[2]; +$hmm_from = "hmm$from"; +$hmm_to = "hmm$to"; +if ( -d "$hmm_from" ) { + $src = "-H $hmm_from\\MODELS "; +} +else { + die "No source dir $hmm_from\n"; +} + +$tgt = "-M $hmm_to "; + +if ( ! -d $hmm_to ) { + mkdir $hmm_to, 0755; +} + +if ( ! -f $HMMLIST ) { + die "List of models to edit $HMMLIST does not exist\n"; +} + +$edit_file = "edfile$from.$to"; +if ( ! -f $edit_file ) { + die "Edit command file $edit_file does not exist\n"; +} + +if (defined $HHTRACE) { + $OPT = "-T $HHTRACE "; +} +else { + $OPT = "-T 1 "; +} + +# remove perl environment variable file +unlink $Perl_env; + +system("HHEd -A -C $HECONFIG $OPT $src $tgt $edit_file $HMMLIST"); + diff --git a/samples/RMHTK/perl_scripts/herest.prl b/samples/RMHTK/perl_scripts/herest.prl new file mode 100755 index 0000000..e574d10 --- /dev/null +++ b/samples/RMHTK/perl_scripts/herest.prl @@ -0,0 +1,178 @@ +#!/usr/local/bin/perl + +#---------------------------------------------------------------# +# HTK Perl Script: herest.prl # +# # +# Usage: herest.prl env srcdir tgtdir # +# # +# This script provides a high level interface to HERest, # +# the HTK embedded training tool.The various parameters used to # +# control HERest and the definition of the various data sources # +# are defined in an environment file passed to herest as an arg.# +# # +# Env Vars Used: # +# # +# HMMLIST - list of models to use in training # +# TRAINDATALIST - list of all training data files # +# TRAINMLF - master label file for training data (if used) # +# TRAINLABDIR - dir holding training label files # +# # +# HETRACE - trace level # +# HEPRUNE - pruning threshold (indexed) # +# HEMINVAR - minimum variance threshold # +# HEMINWEIGHT - minimum mixture weight # +# HEMINEG - minimum number of examples # +# HEUPD - update flags u,v,m,t (default all) # +# HETMTHRESH - tied mixture prune threshold # +# HEFORCEMACRO- force a macro file to be loaded # +# HESTATS - output a statistics file # +# # +# NICE - nice level to run at # +# # +#---------------------------------------------------------------# +# +# Copyright (c) Phil Woodland & Steve Young, 1992, 1993 +# Last Updated 14/5/93 +# +# Converted to Perl script by TL 7/1998 +# + +push @INC, "$ENV{RMSCRIPTS}"; # include the perl script path +require "global.pl"; # include global variables +require "env_conv.pm"; # sub to convert env vars + +# Check Number of Args +if ( $#ARGV != 2 && $#ARGV != 3 ) { + die "Usage: herest.prl env srcdir tgtdir [inxformdir]\n"; +} + +# Read the environment file +$Env_file = $ARGV[0]; +if ( ! -f $Env_file ) { + die "herest: cannot find environment file $Env_file\n"; +} + +# convert environment file to perl format +$Perl_env = "HE_env.pl"; +&env_conv::env_convert($Env_file,$Perl_env); + +# read in variable value from new file in perl format +require "$Perl_env"; + +# Check Source Exists +$SRC=$ARGV[1]; +if ( -d $SRC ) { + $srcopt = "-H $SRC/MODELS"; +} +else { + die "herest: source dir $SRC does not exist\n"; +} + +# Create/Clear Target Directory +$TGT=$ARGV[2]; +if (! -d $TGT ) { + mkdir $TGT, 0755; +} + +$tgtopt = "-M $TGT -K $TGT"; +if ( defined($HEOUTXFORMEXT) ) { + $tgtopt = "$tgtopt $HEOUTXFORMEXT"; +} + +if ( $#ARGV == 3 ) { + $INXFDIR = $ARGV[3]; + $srcopt = "$srcopt -a -J $INXFDIR"; + if ( defined($HEINXFORMEXT) ) { + $srcopt = "$srcopt $HEINXFORMEXT"; + } +} + + +# Define the file to log all output/errors to +$LOG = "$TGT/LOG"; + +# Set Script File and Options +$OPT = "$srcopt $tgtopt -T $HETRACE"; + +if ( defined($HVSPKRMASK_WIN) ) { + $OPT = "$OPT -h $HVSPKRMASK_WIN"; +} +if ( defined($HEXFORMCONFIG) ) { + $OPT = "$OPT -C $HEXFORMCONFIG"; +} +if ( defined($HEPAXFORMDIR) ) { + $OPT = "$OPT -E $HEPAXFORMDIR"; + if ( defined($HEPAXFORMEXT) ) { + $OPT = "$OPT $HEPAXFORMEXT"; + } +} +if ( defined($HEFORCEXFORMDIR) ) { + for ($i=0; $i<$#HEFORCEXFORMDIR; $i++) { + $OPT = "$OPT -J $HEFORCEXFORMDIR[$i]"; + } +} +# Always have the source directory as a possible input directory +$OPT = "$OPT -J $SRC"; +if ( defined($HEFORCEMACRO) ) { + for ($i=0; $i<$#HEFORCEMACRO; $i++) { + $OPT = "$OPT -H $HEFORCEMACRO[$i]"; + } +} + +if ( defined ($TRAINMLF) ) { + $OPT = "$OPT -I $TRAINMLF "; +} + +if ( defined ($TRAINLABDIR) ) { + $OPT = "$OPT -L $TRAINLABDIR "; +} + +if ( defined ($HEMINVAR) ) { + $OPT = "$OPT -v $HEMINVAR "; +} +if ( defined ($HEMINWEIGHT) ) { + $OPT = "$OPT -w $HEMINWEIGHT "; +} +if ( defined ($HEPRUNE) ) { + $OPT = "$OPT -t $HEPRUNE "; +} +if ( defined ($HEMINEG) ) { + $OPT = "$OPT -m $HEMINEG "; +} +if ( defined ($HEUPD) ) { + $OPT = "$OPT -u $HEUPD "; +} +if ( defined ($HETMTHRESH) ) { + $OPT = "$OPT -c $HETMTHRESH "; +} +if ( defined ($HEFORCEMACRO) ) { + $OPT = "$OPT -H $SRC/$HEFORCEMACRO "; +} +if ( defined ($HESTATS) ) { + $OPT = "$OPT -s $TGT/$HESTATS "; +} +if ( defined ($NUMLATDIR) ) { + $OPT = "$OPT -q $NUMLATDIR"; +} +if ( defined ($DENLATDIR) ) { + $OPT = "$OPT -r $DENLATDIR"; +} + +# remove perl environment variable file +unlink $Perl_env; + +# -------------- Run HERest -----------------------------------# + +open(LOGFILE,">$LOG") or die "Can't open $LOG file\n"; +printf LOGFILE "HERest started at " . scalar localtime(time) . "\n"; +close (LOGFILE); + +system("$HEBIN -A $OPT -C $HECONFIG -S $TRAINDATALIST $HMMLIST >> $LOG") ; + +open(LOGFILE,">>$LOG") or die "Can't open $LOG file\n"; +printf LOGFILE "HERest finished at " . scalar localtime(time) . "\n"; +close (LOGFILE); + +#---------------------------------------------------------------# +# End of Script: herest # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/perl_scripts/htestrm.prl b/samples/RMHTK/perl_scripts/htestrm.prl new file mode 100755 index 0000000..91ca00d --- /dev/null +++ b/samples/RMHTK/perl_scripts/htestrm.prl @@ -0,0 +1,353 @@ +#!/usr/local/bin/perl + +#---------------------------------------------------------------# +# HTK Perl Script: htestrm.prl # +# # +# Usage: htestrm.prl env type set hmmdir # +# # +# htestrm uses the HTK environment settings to recognise the # +# specified set of test files and then compares them with the # +# reference labels using HResults. # +# type is used to select a type of test of conditions from the # +# env file. set selects the test data independently of type. # +# The test results are stored in a directory called # +# test_type_set.k inside the source hmm directory hmmdir # +# where k is the repetition idx. # +# A copy of the env file containing the test parameters is left # +#in the test directory (typically changed for different indexes)# +# The shell variable TESTSET is set equal to set & is used to # +# specify the test data in the HTE file. # +# Others variables in the HTE file are indexed to reflect # +# values with different type the different type in an order # +# given by the HTE variable TYPELIST # +# # +# TYPELIST - name of possible type values # +# SETLIST - list of possible TESTSET & set values # +# TESTDATALIST- list of test files (TESTSET) # +# TESTMLF - MLF for reference labs (if used) (TESTSET) # +# TESTLABDIR - dir holding reference lab files # +# HMMLIST - list of models to use in testing # +# HVTRACE - trace level # +# HVPRUNE - pruning threshold (indexed) # +# HVWEPRUNE - word-end pruning threshold (indexed) # +# HVMAXACTIVE - max number of phone insts active (indexed) # +# HVGSCALE - grammar scale factor (indexed) # +# HVIMPROB - inter-model log probability addition(indexed) # +# HVNET - network definition file (indexed) # +# WORDLIST- list of vocabulary items # +# HRNIST - run HResults in NIST mode # +# NISTSCORE - run the NIST scoring software # +# NICE - nice level to run at # +#---------------------------------------------------------------# +# +# Copyright (c) Phil Woodland & Steve Young, 1992, 1993 +# Last Updated 19/10/93 +# +# Converted to Perl script by TL 7/1998 +# + +push @INC, "$ENV{RMSCRIPTS}"; # include the perl script path +require "global.pl"; # include global variables +require "env_conv.pm"; # sub to convert env vars + +# Check Number of Args +if ( $#ARGV != 3 && $#ARGV != 4 ) { + die "Usage: htestrm.prl env tsttype tstset hmmdir [inxformdir]\n"; +} + +# Read the environment file +$Env_file = $ARGV[0]; +if ( ! -f $Env_file ) { +die "htestrm: cannot find environment file $Env_file\n"; +} + +$TYPE=$ARGV[1]; +$SET=$ARGV[2]; +$TESTSET=$SET; + +# convert environment file to perl format +$Perl_env = "HE_env.pl"; +&env_conv::env_convert($Env_file,$Perl_env); + +# read in variable value from new file in perl format +require "$Perl_env"; + +# Check the type +if (! defined $TYPELIST) { + die "htestrm: TYPELIST not set\n"; +} + +undef $INDEX; +$count=0; +@typelists = &tidy_up_and_split_list($TYPELIST); +foreach $type (@typelists) { + $count++; + if ($type eq $TYPE) { + $INDEX=$count; + last; + } +} +if (! defined $INDEX) { + die "htestrm: $TYPE not in TYPELIST\n"; +} + +# Check the test set +undef $setfound; +if (! defined $SETLIST) { + die "htestrm: SETLIST not set\n"; +} +@setlists = &tidy_up_and_split_list($SETLIST); +foreach $setlist (@setlists) { + if ($setlist eq $SET) { + $setfound = 1; + last; + } +} +if ( (! defined $setfound) && ( $SET ne "dms0_tst" ) ) { + die "htestrm: $SET not in SETLIST\n"; +} + +# Check hmmsource Exists +$HMMSOURCE=$ARGV[3]; +if ( ! -d $HMMSOURCE ) { + die "htestrm: error - hmm directory $HMMSOURCE does not exist\n"; +} + +# Set test dir +undef $TESTDIRSET; +$TESTEXTN=1; + +while (! defined $TESTDIRSET) { + if ( $SET eq "dms0_tst" ) { + $TESTDIR="$HMMSOURCE\\$SET"; + } + else { + $TESTDIR="$HMMSOURCE\\test_$TYPE"."_"."$SET.$TESTEXTN"; + } + if ( ! -d $TESTDIR ) { + mkdir $TESTDIR, 0755; + $TESTDIRSET = 1; + } + else { + $TESTEXTN++; + } +} + +# Define the file to log all output/errors to +$LOG="$TESTDIR\\LOG"; + +# Copy the test HTE file as a record +system("copy $Env_file $TESTDIR\\HTE"); + +# Check the equates file and load equates +if (defined $HREQSETS) { + @hreqsets = &tidy_up_and_split_list($HREQSETS); + $INDEX--; + $EQFILE="$hreqsets[$INDEX]"; + if ( ! -f $EQFILE ) { + die "Cannot find HResults equates file $EQFILE\n"; + } +} + +# Set HVite Options +$OPT = "-H $HMMSOURCE\\MODELS "; +$SRC = $HMMSOURCE; + +if ( defined($HVXFORMCONFIG ) ) { + $OPT = "$OPT -C $HVXFORMCONFIG"; +} +if ( defined($HVSPKRMASK_WIN) ) { + $OPT = "$OPT -h $HVSPKRMASK_WIN"; +} +if ( $#ARGV == 4 ) { +# printf "%d %d\n", $#ARGV, $ARGV[4]; + $INXFDIR = $ARGV[4]; + $OPT = "$OPT -k -J $INXFDIR"; + if ( defined($HVINXFORMEXT) ) { + $OPT = "$OPT $HVINXFORMEXT"; + } +} +if ( defined($HVPAXFORMDIR) ) { + $OPT = "$OPT -E $HVPAXFORMDIR"; + if ( defined($HVPAXFORMEXT) ) { + $OPT = "$OPT $HVPAXFORMEXT"; + } +} +if ( defined($HVFORCEXFORMDIR) ) { + for ($i=0; $i<$#HVFORCEXFORMDIR; $i++) { + $OPT = "$OPT -J $HVFORCEXFORMDIR[$i]"; + } +} +# Always have the source directory as a possible input directory +$OPT = "$OPT -J $SRC"; +if ( defined($HVFORCEMACRO) ) { + for ($i=0; $i<$#HVFORCEMACRO; $i++) { + $OPT = "$OPT -H $HVFORCEMACRO[$i]"; + } +} + +if ( defined($HVINCADAPT) ) { + $OPT = "$OPT -j $HVINCADAPT -K $TESTDIR"; + if ( defined($HVOUTXFORMEXT) ) { + $OPT = "$OPT $HVOUTXFORMEXT"; + } +} +else { + if ( defined($HVADAPT) ) { + $OPT = "$OPT -K $TESTDIR"; + if ( defined($HVOUTXFORMEXT) ) { + $OPT = "$OPT $HVOUTXFORMEXT"; + } + } +} + +if ( $SET eq "dms0_tst" ) { + $HVOPFILE = "$TESTDIR\\$SET.mlf"; + $TESTDATALIST="$rmlib\\flists\\${TESTSET}.scp"; + $TESTMLF="$rmlib\\wlabs\\dms0_tst.mlf"; +} +else { + $HVOPFILE = "$TESTDIR\\$TYPE"."_"."$SET.mlf"; +} + +$OPT = "$OPT -i $HVOPFILE "; +$OPT = "$OPT -X rec "; + +if (defined $HVTRACE) { + $OPT = "$OPT -T $HVTRACE "; +} + +# add the indexed options + +if (defined $HVTRANSFORM) { + $OPT = "$OPT -J $HVTRANSFORM"; +} +if (defined $HVPRUNE) { + @hvprune = &tidy_up_and_split_list($HVPRUNE); + $OPT = "$OPT -t $hvprune[$INDEX] "; +} +if (defined $HVWEPRUNE) { + @hvweprune = &tidy_up_and_split_list($HVWEPRUNE); + $OPT = "$OPT -v $hvweprune[$INDEX] "; +} +if (defined $HVMAXACTIVE) { + @hvmaxactive = &tidy_up_and_split_list($HVMAXACTIVE); + $OPT = "$OPT -u $hvmaxactive[$INDEX] "; +} +if (defined $HVGSCALE) { + @hvgscale = &tidy_up_and_split_list($HVGSCALE); + $OPT = "$OPT -s $hvgscale[$INDEX] "; +} +if (defined $HVIMPROB) { + @hvimprob = &tidy_up_and_split_list($HVIMPROB); + $OPT = "$OPT -p $hvimprob[$INDEX] "; +} +@hvnet = &tidy_up_and_split_list($HVNET); +$NET=$hvnet[$INDEX]; +$OPT = "$OPT -w $NET"; + +if ( defined($HVALIGN) ) { + $OPT = "$OPT -m -o TPMFW -b \!SENT_START -a -y lab"; + if ( defined($ALIGNMLF) ) { + $OPT = "$OPT -I $ALIGNMLF"; + } + else { + die "Must specify an alignment MLF"; + } +} + +if (defined $HVVOC) { + @hvvoc = &tidy_up_and_split_list($HVVOC); + $VOC=$hvvoc[$INDEX]; +} +else { + die "HVVOC not set\n"; +} + +# remove perl environment variable file +unlink $Perl_env; + +# -------------- Run HVite ----------------- + +open(LOGFILE,">$LOG") or die "Can't open $LOG file\n"; +printf LOGFILE "HVite started at " . scalar localtime(time) . "\n"; +close (LOGFILE); +system("HVite -A -C $HVCONFIG $OPT -S $TESTDATALIST $VOC $HMMLIST >> $LOG"); + +open(LOGFILE,">>$LOG") or die "Can't open $LOG file\n"; +printf LOGFILE "HVite finished at " . scalar localtime(time) . "\n\n"; +close (LOGFILE); + +# ------------------------------------------ +# Now for results analysis +# + +# Set the equates if any +$EQ = ""; +undef $Ind; +open(EQFILENAME,"<$EQFILE") or die "Can't open $EQFILE file\n"; +while () { + chop ; + if (! defined $I) { + $EQ="$EQ -e "; + $Ind = 1; + } + else { + undef $Ind; + } + $EQ="$EQ $_"; +} +close(EQFILENAME); + +$OPT=""; + +if (defined $TESTMLF) { + $OPT="$OPT -I $TESTMLF "; +} + +if (defined $TESTLABDIR) { + $OPT="$OPT -L $TESTLABDIR "; +} + +if (defined $HRNIST) { + $OPT = "$OPT -n "; +} + +open(LOGFILE,">>$LOG") or die "Can't open $LOG file\n"; +printf LOGFILE "Running HResults at " . scalar localtime(time) . "\n"; +close (LOGFILE); + +system("HResults -A -z ::: $OPT $EQ $WORDLIST $HVOPFILE >> $LOG"); + +open(LOGFILE,">>$LOG") or die "Can't open $LOG file\n"; +printf LOGFILE "HResults finished at " . scalar localtime(time) . "\n\n"; +close (LOGFILE); + +# ------------------------------------------ +# Now for NIST scoring if required +# + +if (defined $NISTSCORE) { + print "NIST score scripts can be run under 'sh' Shell at reader's own wish\n"; + print "It is not however supported in Perl Shell\n"; +} + +open(LOGFILE,">>$LOG") or die "Can't open $LOG file\n"; +printf LOGFILE "htestrm.prl finished at " . scalar localtime(time) . "\n\n"; +close (LOGFILE); + +sub tidy_up_and_split_list { + local($listval) = @_; + + $listval =~ s/\s+/ /g; + $listval =~ s/^ //; + $listval =~ s/ $//; + + local(@listvals) = split(" ",$listval); + @listvals; +} + +#---------------------------------------------------------------# +# End of Script: htestrm # +#---------------------------------------------------------------# + diff --git a/samples/RMHTK/perl_scripts/init_discrete.prl b/samples/RMHTK/perl_scripts/init_discrete.prl new file mode 100755 index 0000000..2733dea --- /dev/null +++ b/samples/RMHTK/perl_scripts/init_discrete.prl @@ -0,0 +1,56 @@ +#!/usr/local/bin/perl + +# This script will initialise the discrete hmm models. +# +# usage: init_discrete.prl hmmlist config source_dir target_dir mlf script_file +# +# where: hmmlist - hmm list +# config - configuration file +# source_dir - source hmm directory +# target_dir - target hmm directory +# mlf - master label file +# script_file - script file name +# +# TL 7/1998 +# + +if ( $#ARGV != 5 ) { + die "usage: init_discrete.prl hmmlist config source_dir target_dir mlf script_file\n"; +} + +$hmmlist = $ARGV[0]; +if ( ! -f $hmmlist ) { + die "hmmlist file $hmmlist not found.\n"; +} + +$config_file = $ARGV[1]; +if ( ! -f $config_file ) { + die "config file $config_file not found.\n"; +} + +$src_dir = $ARGV[2]; +if ( ! -d $src_dir ) { + die "source hmm dir $src_dir not found.\n"; +} + +$tgt_dir = $ARGV[3]; +if ( ! -d $tgt_dir ) { + mkdir $tgt_dir, 0755; +} + +$mlf = $ARGV[4]; +if ( ! -f $mlf ) { + die "master label file $mlf not found.\n"; +} + +$script = $ARGV[5]; +if ( ! -f $script ) { + die "script file $script not found.\n"; +} + +open(HMMLIST,"<$hmmlist") or die "Can't open file $hmmlist\n"; +while () { + chop; + system("HInit -T 1 -C $config_file -M $tgt_dir -l $_ -I $mlf -S $script $src_dir\\$_"); +} +close(HMMLIST); diff --git a/samples/RMHTK/perl_scripts/latgen.prl b/samples/RMHTK/perl_scripts/latgen.prl new file mode 100755 index 0000000..fb3277b --- /dev/null +++ b/samples/RMHTK/perl_scripts/latgen.prl @@ -0,0 +1,277 @@ +#!/usr/local/bin/perl + +push @INC, "$ENV{RMSCRIPTS}"; # include the perl script path +require "global.pl"; # include global variables +require "env_conv.pm"; # sub to convert env vars +# require "/home/blue2/xl207/RM/work/R11/work/mswin/perl_scripts/global.pl"; # include global variables +# require "/home/blue2/xl207/RM/work/R11/work/mswin/perl_scripts/env_conv.pm"; # sub to convert env vars + +# Check Number of Args +if ( $#ARGV != 2 ) { + die "Usage: latgen env hmmdir tgtdir\n"; +} + +# Read the environment file +$Env_file = $ARGV[0]; +if ( ! -f $Env_file ) { + die "latgen: cannot find environment file $Env_file\n"; +} + +# convert environment file to perl format +$Perl_env = "HE_env.pl"; +&env_conv::env_convert($Env_file,$Perl_env); + +# read in variable value from new file in perl format +require "$Perl_env"; + +# Check Source Exists +$SRC = $ARGV[1]; +if ( -d $SRC ) { + $srcopt = "-H $SRC\\MODELS"; +} +else { + die "latgen: source dir $SRC does not exist\n"; +} + +# Check settings +if ( ! defined ($RMLIB) ) { +die "RMLIB not set\n"; +} +if ( ! defined ($HLMCONFIG) ) { +die "HLMCONFIG not set\n"; +} +if ( ! defined ($HDCONFIG) ) { +die "HDCONFIG not set"; +} +if ( ! defined ($HDMODCONFIG) ) { +die "HDMODCONFIG not set\n"; +} +if ( ! defined ($HLRCONFIG) ) { +die "HLRCONFIG not set\n"; +} +if ( ! defined ($TRAINDATALIST) ) { +die "TRAINDATALIST not set\n"; +} +if ( ! defined ($TRAINMLF) ) { +die "TRAINMLF not set\n"; +} +if ( ! defined ($HDVOCAB) ) { +die "HDVOCAB not set\n"; +} +if ( ! defined ($HLMORDER) ) { +die "HLMORDER not set\n"; +} +if ( ! defined ($HLMNNEWWORD) ) { +die "HLMNNEWWORD not set\n"; +} +if ( ! defined ($HLMBUFSIZE) ) { +die "HLMBUFSIZE not set\n"; +} +if ( ! defined ($HLMUGFLR) ) { +die "HLMUGFLR not set\n"; +} +if ( ! defined ($HLMNGRAMCUTOFF) ) { +die "HLMNGRAMCUTOFF not set\n"; +} +if ( ! defined ($HLMDISCOUNT) ) { +die "HLMDISCOUNT not set\n"; +} +if ( ! defined ($HDGENBEAM) ) { +die "HDGENBEAM not set"; +} +if ( ! defined ($HDGSCALE) ) { +die "HDGSCALE not set\n"; +} +if ( ! defined ($HDIMPROB) ) { +die "HDIMPROB not set\n"; +} +if ( ! defined ($HDTOKENS) ) { +die "HDTOKENS not set\n"; +} +if ( ! defined ($HLRGSCALE) ) { +die "HLRGSCALE not set\n"; +} +if ( ! defined ($HLRIMPROB) ) { +die "HLRIMPROB not set\n"; +} +if ( ! defined ($HLRMRGDIR) ) { +die "HLRMRGDIR not set\n"; +} +if ( ! defined ($HLRGENBEAM) ) { +die "HLRGENBEAM not set\n"; +} + +# remove perl environment variable file +unlink $Perl_env; + +# Create/Clear Target Directory +$tgt = $ARGV[2]; +if (! -d $tgt ) { + system("mkdir $tgt"); +} + +print "latgen started at " . scalar localtime(time) . "\n"; + +$data = "ind_trn109"; + +# Building LM + +# system("copy $RMLIB/R11.mswin/lib.zip ."); +# system("cd $tgt; cp -rp /home/blue2/xl207/RM/work/R11/work/mswin/lib/R11.linux/lib ./"); + +print "\n"; +print "Building Back-off Bi-gram LM from:\n"; +print "\n"; +print " Text Input: ${data}.dat\n"; +print " Vocabulary: rm.wlist\n"; + +$tmpdir = "$tgt\\lib\\lms"; +printf "%s\n", $tmpdir; + +system("mkdir $tmpdir\\db_2-gram.${data}"); + +$LGPOPTS = "-A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE} -n ${HLMORDER}"; +system("LGPrep ${LGPOPTS} -d $tmpdir\\db_2-gram.${data} $tmpdir\\empty.wmap $tmpdir\\${data}.dat > $tmpdir\\LOG"); + +$LGCOPTS = "-A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE}"; +system("LGCopy ${LGCOPTS} -o -m $tmpdir\\db_2-gram.${data}\\wmap.new -d $tmpdir\\db_2-gram.${data} -w $tmpdir\\rm.wlist $tmpdir\\db_2-gram.${data}\\wmap $tmpdir\\db_2-gram.${data}\\gram.0 >> $tmpdir\\LOG"); + +$LBOPTS = "-A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -u ${HLMUGFLR} -k ${HLMDISCOUNT} -c ${HLMNGRAMCUTOFF} -n ${HLMORDER}"; +system("LBuild ${LBOPTS} $tmpdir\\db_2-gram.${data}\\wmap.new $tmpdir\\bg.${data} $tmpdir\\db_2-gram.${data}\\gram.0 >> $tmpdir\\LOG"); + +print "\n"; +print "Back-off Bi-gram LM built: lib\\lms\\bg.${data} \n"; +print "\n"; + +# Generate lattices + +print "\n"; +print "Starting lattice generation from: \n \n"; +print " Data Setup: ${TRAINDATALIST} \n"; +print " Word Label: ${TRAINMLF} \n"; +print " HMM Set: ${SRC}\\MODELS \n"; +print " HMM List: ${HMMLIST} \n"; +print " Vocabulary: ${HDVOCAB} \n"; +print " N-gram LM: lib\\lms\\bg.${data} \n"; +print "\n \n"; + +@dirs = ("numnets", "dennets", "lattices"); +foreach $d (@dirs) { + system("mkdir $tgt\\$d"); +} + +@dirs = ("num", "den"); +foreach $d (@dirs) { + system("mkdir $tgt\\lattices\\$d"); +} + +$HLROPTS = "-A -D -V -T ${HLRTRACE} -q tvalr -C ${HLRCONFIG} -w -s ${HLRGSCALE} -p ${HLRIMPROB}"; +$HDOPTS = "-A -D -V -T ${HDTRACE} -t ${HDGENBEAM} -s ${HDGSCALE} -p ${HDIMPROB} -n ${HDTOKENS} -C ${HDCONFIG} "; + +open F, "$tgt\\lib\\flists\\spkr.list" or die "Can't open $tgt\\lib\\flists\\spkr.list\n"; +# open F, "/home/blue2/xl207/RM/work/R11/work/mswin/foo.list" or die "Can't open $tgt/lib/flists/spkr.list\n"; +while () { + $i = substr($_, 0, length($_)-1); + print "Processing speaker ${i} : \n"; + print "\n"; + + system("mkdir $tgt\\numnets\\${i}"); + system("HLRescore ${HLROPTS} -n $tgt\\lib\\lms\\bg.${data} -I ${TRAINMLF} -f -i $tgt\\numnets\\${i}\\bg.${i}.mlf -l $tgt\\numnets\\${i} -S $tgt\\lib\\flists\\${i}.labscp ${HDVOCAB} > $tgt\\numnets\\${i}\\LOG"); + + system("mkdir $tgt\\lattices\\num\\${i}"); + system("HDecode.mod ${HDOPTS} -C ${HDMODCONFIG} -i $tgt\\lattices\\num\\${i}\\num.${i}.mlf -H ..\\${SRC}\\MODELS -d ..\\${SRC} -q tvaldm -o M -z lat -w -L $tgt\\numnets\\${i} -l $tgt\\lattices\\num\\${i} -X lat -S $tgt\\lib\\flists\\${i}.scp ${HDVOCAB} ${HMMLIST} > $tgt\\lattices\\num\\${i}\\LOG"); + + print "numerator lattices generated for speaker ${i} : \n"; + print "\n"; + + system("mkdir $tgt\\dennets\\${i}"); + system("mkdir $tgt\\dennets\\${i}\\bg"); + system("HDecode ${HDOPTS} -i $tgt\\dennets\\${i}\\bg.${i}.mlf -H ..\\${SRC}\\MODELS -d ..\\${SRC} -o M -z lat -w $tgt\\lib\\lms\\bg.${data} -l $tgt\\dennets\\${i}\\bg -X lat -S $tgt\\lib\\flists\\${i}.scp ${HDVOCAB} ${HMMLIST} > $tgt\\dennets\\${i}\\LOG"); + + system("HLRescore ${HLROPTS} -t ${HLRGENBEAM} -m ${HLRMRGDIR} -L $tgt\\dennets\\${i}\\bg -l $tgt\\dennets\\${i} -S $tgt\\lib\\flists\\${i}.latscp ${HDVOCAB} > $tgt\\dennets\\${i}\\hlr.LOG"); + + system("mkdir $tgt\\lattices\\den\\${i}"); + system("HDecode.mod ${HDOPTS} -C ${HDMODCONFIG} -i $tgt\\lattices\\den\\${i}\\den.${i}.mlf -H ..\\${SRC}\\MODELS -d ..\\${SRC} -q tvaldm -o M -z lat -w -L $tgt\\dennets\\${i} -l $tgt\\lattices\\den\\${i} -X lat -S $tgt\\lib\\flists\\${i}.scp ${HDVOCAB} ${HMMLIST} > $tgt\\lattices\\den\\${i}\\LOG"); + + print "denominator lattices generated for speaker ${i} : \n"; + print "\n"; +} +close(F); + + +# Preparing new scp file for discriminative training + +open F, "$tgt\\lib\\flists\\spkr.list" or die "Can't open $tgt\\lib\\flists\\spkr.list\n"; +# open F, "/home/blue2/xl207/RM/work/R11/work/mswin/foo.list" or die "Can't open $tgt/lib/flists/spkr.list\n"; +open (OUT, ">$tgt\\failed.scp") or die "Can't open $tgt\\failed.scp\n"; +while () { + $i = substr($_, 0, length($_)-1); + + open L, "$tgt\\lattices\\num\\${i}\\LOG" or die "Can't open $tgt\\lattices\\num\\${i}\\LOG\n"; + while () { + chop; + @l=split; + if($#l==1 && $l[0] eq "File:") { + $cur=$l[1]; + $f=1; + } + if($f==1 && $l[0] eq "WARNING"){ + printf OUT "%s\n", $cur; + $f=0; + } + } + close(L); + + open L, "$tgt\\lattices\\den\\${i}\\LOG" or die "Can't open $tgt\\lattices\\den\\${i}\\LOG\n"; + while () { + chop; + @l=split; + if($#l==1 && $l[0] eq "File:") { + $cur=$l[1]; + $f=1; + } + if($f==1 && $l[0] eq "WARNING"){ + printf OUT "%s\n", $cur; + $f=0; + } + } + close(L); +} +close(OUT); +close(F); + +$nfailed = 0; +@failed = ""; +open F, "$tgt\\failed.scp" or die "Can't open $tgt\\failed.scp\n"; +while () { + $i = substr($_, 0, length($_)-1); + if (!defined $M{$i}) { + $M{$i} = 1; + $N++; + $failed[$N] = $i; + } +} +close(F); + +printf "Removing a total of %d segments that failed in lattice generation :\n\n", $N; +for($i=1; $i<=$N; $i++) { + printf "%s\n", $failed[$i]; +} +print "\n"; + +open F, "$tgt\\lib\\flists\\${data}.scp" or die "Can't open $tgt\\lib\\flists\\${data}.scp\n"; +open OUT, ">$tgt\\lib\\flists\\${data}.lat.scp" or die "Can't open $tgt\\lib\\flists\\${data}.lat.scp\n"; +while () { + $i = substr($_, 0, length($_)-1); + if (!defined $M{$i}) { + printf OUT "%s\n", $i; + } +} +close(OUT); +close(F); + +system("copy $tgt\\lib\\flists\\${data}.lat.scp $rmlib\\flists\\${data}.lat.scp"); +print "New scp file for discriminative training saved to ${rmlib}\\flists\\${data}.lat.scp\n\n"; + +print "latgen finished at " . scalar localtime(time) . "\n"; + diff --git a/samples/RMHTK/perl_scripts/mk_lab.prl b/samples/RMHTK/perl_scripts/mk_lab.prl new file mode 100755 index 0000000..85e1580 --- /dev/null +++ b/samples/RMHTK/perl_scripts/mk_lab.prl @@ -0,0 +1,30 @@ +#!/usr/local/bin/perl + +# +# This script will generate the label file from the encoded data list file. +# +# TL 7/1998 +# + +if ( $#ARGV != 1 ) { + die "usage: mk_lab.prl encoded_data_list extension(of encoded data file).\n"; +} + +$datfile = $ARGV[0]; +if ( ! -f $datfile ) { + die "encoded data list file $datfile not found. Aborting!\n"; +} + +$extn = $ARGV[1]; + +($labfile = $datfile) =~ s/scp/lab/; +printf "generate label file $labfile from file $datfile\n"; + +open(DATFILE,"<$datfile") or die "Can't open file $datfile\n"; +open(LABFILE,">$labfile") or die "Can't open file $labfile\n"; +while () { + s/.$extn/.lab/; + printf LABFILE; +} +close(DATFILE); +close(LABFILE); diff --git a/samples/RMHTK/perl_scripts/mk_mlf.prl b/samples/RMHTK/perl_scripts/mk_mlf.prl new file mode 100755 index 0000000..f06b203 --- /dev/null +++ b/samples/RMHTK/perl_scripts/mk_mlf.prl @@ -0,0 +1,41 @@ +#!/usr/local/bin/perl + +# This script will convert the SNOR word-level transcriptions +# distributed on the CD-ROMs into HTK format. +# +# usage: mk_mlf.prl snr_trascriptions_file mlf_file +# +# TL 7/1998 +# + +if ( $#ARGV != 1 ) { + die "usage: mk_mlf.prl snr_trascriptions_file mlf_file\n"; +} + +$snr_file=$ARGV[0]; +if (! -f $snr_file) { + die "snr trascriptions file $snr_file not found\n"; +} + +$mlf_file=$ARGV[1]; + +open(SNRFILE,"<$snr_file") or die "Can't open snr trascriptions file $snr_file\n"; +open(MLFFILE,">$mlf_file") or die "Can't open mlf file $mlf_file\n"; +printf MLFFILE "#!MLF!#\n"; +while () { + chop; # strip record separator + /^;/ && next; + @Fld = split(' ', $_, 9999); + + $name = substr($Fld[$#Fld], 1, length($Fld[$#Fld]) - 2); + $name =~ tr/A-Z/a-z/; + + printf MLFFILE "%c*%s.lab%c\n",34,$name,34; + + for ($i = 0; $i < $#Fld; $i++) { + printf MLFFILE "%s\n", $Fld[$i]; + } + printf MLFFILE ".\n"; +} +close(SNRFILE); +close(MLFFILE); diff --git a/samples/RMHTK/perl_scripts/mk_sub_list.prl b/samples/RMHTK/perl_scripts/mk_sub_list.prl new file mode 100755 index 0000000..60f34cb --- /dev/null +++ b/samples/RMHTK/perl_scripts/mk_sub_list.prl @@ -0,0 +1,37 @@ +#!/usr/local/bin/perl + +# This script will generate the list of subset data from the full list +# to be used in discrete model. +# +# usage: mk_sub_list.prl modulus remain full_list_file_name sub_list_file_name +# +# where: the line to be selected as +# if ( line_number % modulus == remain ) print that line +# +# +# TL 7/1998 +# + +if ( $#ARGV != 3 ) { + die "usage: mk_sub_list.prl modulus remain full_list_file_name sub_list_file_name\n"; +} + +$modulus = $ARGV[0]; +$remain = $ARGV[1]; + +$full_file=$ARGV[2]; +if (! -f $full_file) { + die "data list file $full_file not found\n"; +} + +$sub_file=$ARGV[3]; + +open(FULLFILE,"<$full_file") or die "Can't open data list file $full_file\n"; +open(SUBFILE,">$sub_file") or die "Can't open subset data file $sub_file\n"; +while () { + if ( ($. % $modulus ) == $remain ) { + printf SUBFILE "$_"; + } +} +close(FULLFILE); +close(SUBFILE); diff --git a/samples/RMHTK/perl_scripts/mkclscript.prl b/samples/RMHTK/perl_scripts/mkclscript.prl new file mode 100755 index 0000000..5ed7ef6 --- /dev/null +++ b/samples/RMHTK/perl_scripts/mkclscript.prl @@ -0,0 +1,50 @@ +#!/usr/local/bin/perl + +# generate an HHEd script file for state-clustering triphones +# +# usage: mkclscript.prl command threshold monophone_list +# +# where monophone_list is a HMM list for the phones (not triphones) +# to be clustered +# +# Script generates a specified command and threhold for a cluster +# corresponding to each states of each phone. +# The script assumes each model has 3 emitting states. +# +# Copyright (c) Phil Woodland, 1993 +# Last Updated 5/9/95 +# +# convert to perl by TL 7/1998 +# + +if ( $#ARGV != 2 ) { + die "usage: mkclscript.prl command threshold monophone_list\n"; +} + +$command = $ARGV[0]; +$threshold = $ARGV[1]; + +$hmmlist=$ARGV[2]; +if (! -f $hmmlist) { + die "mkclscript: monophone HMM list $hmmlist not found\n"; +} + +open(HMMLIST,"<$hmmlist") or die "Can't open file $hmmlist\n"; +while() { + chop; + print "$command $threshold \"ST_$_"."_2_\" {(\"$_\",\"*-$_\+*\",\"$_\+*\",\"*-$_\").state[2]}\n"; +} + +open(HMMLIST,"<$hmmlist") or die "Can't open file $hmmlist\n"; +while() { + chop; + print "$command $threshold \"ST_$_"."_3_\" {(\"$_\",\"*-$_\+*\",\"$_\+*\",\"*-$_\").state[3]}\n"; +} + +open(HMMLIST,"<$hmmlist") or die "Can't open file $hmmlist\n"; +while() { + chop; + print "$command $threshold \"ST_$_"."_4_\" {(\"$_\",\"*-$_\+*\",\"$_\+*\",\"*-$_\").state[4]}\n"; +} + +close (HMMLIST); diff --git a/samples/RMHTK/perl_scripts/ng_net.prl b/samples/RMHTK/perl_scripts/ng_net.prl new file mode 100755 index 0000000..30ff790 --- /dev/null +++ b/samples/RMHTK/perl_scripts/ng_net.prl @@ -0,0 +1,61 @@ +#!/usr/local/bin/perl + +# This script will generate word level networks for the no-grammar test. +# usage: ng_net.prl ng_gram_file nn nl +# +# TL 7/1998 +# + +$[ = 1; # set array base to 1 + +if ( $#ARGV != 4 ) { + die "usage: ng_net.prl no-grammar_word_file output_net_file nn nl\n"; +} + +$ng_file = $ARGV[1]; +if ( ! -f $ng_file ) { + die "no-grammar_word_file output_net_file $ng_file not found.\n"; +} + +$net_file = $ARGV[2]; +$nn = $ARGV[3]; +$nl = $ARGV[4]; + +open(NGFILE,"<$ng_file") or die "Can't open file $ng_file\n"; +open(NETFILE,">$net_file") or die "Can't open file $net_file\n"; + +while () { + chop; # strip record separator + /\*/ && next; # skip comment line + @Fld = split(' ', $_, 9999); + + if ($. == 1) { + printf NETFILE "N=%d L=%d\n", $nn, $nl; + $stwd = '!SENT_START'; + printf NETFILE "I=%-4d W=%s\n", 0, $stwd; + $enwd = '!SENT_START'; + $word = 'SENTENCE-END'; + $num{$word} = 1; + $words{1} = $word; + printf NETFILE "I=%-4d W=%s\n", 1, $enwd; + $nullwd = '!NULL'; + printf NETFILE "I=%-4d W=%s\n", 2, $nullwd; + $ln = 3; + } + if ($#Fld == 1) { + printf NETFILE "I=%-4d W=%s\n", $ln++, $Fld[1]; + } +} + +$like = -log($ln - 2); +printf NETFILE "J=%-5d S=%-4d E=%-4d l=%.4f\n", $la++, 0, 2, 0.0; +printf NETFILE "J=%-5d S=%-4d E=%-4d l=%.4f\n", $la++, 2, 1, $like; +for ($i = 3; $i < $ln; $i++) { + printf NETFILE "J=%-5d S=%-4d E=%-4d l=%.4f\n", $la++, 2, $i, $like; +} +for ($i = 3; $i < $ln; $i++) { + printf NETFILE "J=%-5d S=%-4d E=%-4d l=%.4f\n", $la++, $i, 2, 0.0; +} + +close(NGFILE); +close(NETFILE); diff --git a/samples/RMHTK/perl_scripts/rest_discrete.prl b/samples/RMHTK/perl_scripts/rest_discrete.prl new file mode 100755 index 0000000..4b84b86 --- /dev/null +++ b/samples/RMHTK/perl_scripts/rest_discrete.prl @@ -0,0 +1,56 @@ +#!/usr/local/bin/perl + +# This script will initialise the discrete hmm models. +# +# usage: init_discrete.prl hmmlist config source_dir target_dir mlf script_file +# +# where: hmmlist - hmm list +# config - configuration file +# source_dir - source hmm directory +# target_dir - target hmm directory +# mlf - master label file +# script_file - script file name +# +# TL 7/1998 +# + +if ( $#ARGV != 5 ) { + die "usage: init_discrete.prl hmmlist config source_dir target_dir mlf script_file\n"; +} + +$hmmlist = $ARGV[0]; +if ( ! -f $hmmlist ) { + die "hmmlist file $hmmlist not found.\n"; +} + +$config_file = $ARGV[1]; +if ( ! -f $config_file ) { + die "config file $config_file not found.\n"; +} + +$src_dir = $ARGV[2]; +if ( ! -d $src_dir ) { + die "source hmm dir $src_dir not found.\n"; +} + +$tgt_dir = $ARGV[3]; +if ( ! -d $tgt_dir ) { + mkdir $tgt_dir, 0755; +} + +$mlf = $ARGV[4]; +if ( ! -f $mlf ) { + die "master label file $mlf not found.\n"; +} + +$script = $ARGV[5]; +if ( ! -f $script ) { + die "script file $script not found.\n"; +} + +open(HMMLIST,"<$hmmlist") or die "Can't open file $hmmlist\n"; +while () { + chop; + system("HRest -T 1 -C $config_file -M $tgt_dir -l $_ -I $mlf -S $script $src_dir\\$_"); +} +close(HMMLIST); diff --git a/samples/RMHTK/perl_scripts/wp_net.prl b/samples/RMHTK/perl_scripts/wp_net.prl new file mode 100755 index 0000000..5968aa2 --- /dev/null +++ b/samples/RMHTK/perl_scripts/wp_net.prl @@ -0,0 +1,85 @@ +#!/usr/local/bin/perl + +# This script will generate word level networks for the word-pair test. +# usage: wp_net.prl wp_gram_file nn nl +# +# TL 7/1998 +# + +$[ = 1; # set array base to 1 + +if ( $#ARGV != 4 ) { + die "usage: wp_net.prl word-pair_grammar_file output_net_file nn nl\n"; +} + +$wp_file = $ARGV[1]; +if ( ! -f $wp_file ) { + die "word-pair_grammar_file $wp_file not found.\n"; +} + +$net_file = $ARGV[2]; +$nn = $ARGV[3]; +$nl = $ARGV[4]; + +open(NETFILE,">$net_file") or die "Can't open file $net_file\n"; + +for ( $i=1; $i<=2; $i++ ) { + open(WPFILE,"<$wp_file") or die "Can't open file $wp_file\n"; + while () { + chop; # strip record separator + /\*/ && next; # skip comment line + @Fld = split(' ', $_, 9999); + + if ($#Fld == 0) { + if ($ln > 990) { + $links = 1; + } + elsif (!$ln) { + printf NETFILE "N=%d L=%d\n", $nn, $nl; + $stwd = '!SENT_START'; + printf NETFILE "I=%-4d W=%s\n", 0, $stwd; + $enwd = '!SENT_END'; + $word = 'SENTENCE-END'; + $num{$word} = 1; + $words{1} = $word; + printf NETFILE "I=%-4d W=%s\n", 1, $enwd; + $ln = 2; + } + } + elsif ($links) { + if (substr($Fld[1], 1, 1) eq '>') { + $word = substr($Fld[1], 2, length($Fld[1]) - 1); + } + else { + $like = -log($nfoll{$word}); + if ($word eq 'SENTENCE-END') { + printf NETFILE "J=%-5d S=%-4d E=%-4d l=%.4f\n", $la, 0, $num{$Fld[1]}, $like; + } + else { + printf NETFILE "J=%-5d S=%-4d E=%-4d l=%.4f\n", $la, $num{$word}, $num{$Fld[1]}, $like; + } + $la++; + } + } + elsif ($ln) { + if (substr($Fld[1], 1, 1) eq '>') { + $word = substr($Fld[1], 2, length($Fld[1]) - 1); + $nfoll{$word} = 0; + if ($num{$word}) { + $n = $num{$word}; + } + else { + $n = $ln; + $num{$word} = $ln++; + printf NETFILE "I=%-4d W=%s\n", $n, $word; + } + } + else { + $nfoll{$word}++; + } + } + } +} + +close(WPFILE); +close(NETFILE); diff --git a/samples/RMHTK/python_scripts/CatHTKFeatures.py b/samples/RMHTK/python_scripts/CatHTKFeatures.py new file mode 100644 index 0000000..4f1e3ec --- /dev/null +++ b/samples/RMHTK/python_scripts/CatHTKFeatures.py @@ -0,0 +1,142 @@ +# author - cz277@cam.ac.uk +# script version - 1.0 +# python version - 2.7 + +import os +import sys +import struct +import logging +import argparse + + +parser = argparse.ArgumentParser(description = 'concatenate HTK binary features') +egroup = parser.add_mutually_exclusive_group() +egroup.add_argument('-v', '--verbose', help = 'increase output verbosity', action = 'store_true', default = False) +egroup.add_argument('-q', '--quiet', help = 'enable silent mode', action = 'store_true', default = False) +parser.add_argument('-l', '--little', help = 'use little-endian rather than big-endian', action = 'store_true', default = False) +parser.add_argument('-p', '--parmkind', help = 'the output feature parmKind', type = str, action = 'store', default = 'USER') +parser.add_argument('inLFEA', help = 'input left hand HTK feature file', type = argparse.FileType('rb'), action = 'store') +parser.add_argument('inRFEA', help = 'input right hand HTK feature file', type = argparse.FileType('rb'), action = 'store') +parser.add_argument('outFEA', help = 'output combined HTK feature file', type = argparse.FileType('wb'), action = 'store') + +typelist = ['WAVEFORM', 'LPC', 'LPREFC', 'LPCEPSTRA', 'LPDELCEP', 'IREFC', 'MFCC', 'FBANK', 'MELSPEC', 'USER', 'DISCRETE', 'PLP'] +typedict = {} +for idx in range(0, len(typelist)): + typedict[typelist[idx]] = idx +qualdict = {'_E': 0o000100, '_N': 0o000200, '_D': 0o000400, '_A': 0o001000, '_C': 0o002000, '_Z': 0o004000, '_K': 0o010000, '_0': 0o020000} + +args = parser.parse_args() +logging.basicConfig(level = logging.WARNING) +logger = logging.getLogger(__name__) +if args.quiet: + logger.setLevel(logging.ERROR) +elif args.verbose: + logger.setLevel(logging.INFO) + +def PrintMessage(msgtype, strmsg): + if msgtype == logging.ERROR: + logger.error(strmsg) + os._exit(1) + elif msgtype == logging.WARNING: + logger.warning(strmsg) + else: + logger.info(strmsg) + +def ReadHTKFeature(feafile, order): + # load the feature file head + nSamples = feafile.read(4) + sampPeriod = feafile.read(4) + sampSize = feafile.read(2) + parmKind = feafile.read(2) + # unpack the numbers + nSamples = struct.unpack(order + 'I', nSamples)[0] + sampPeriod = struct.unpack(order + 'I', sampPeriod)[0] + sampSize = struct.unpack(order + 'H', sampSize)[0] + sampleDim = sampSize / 4 + parmKind = struct.unpack(order + 'H', parmKind)[0] + if parmKind & qualdict['_C'] != 0 or parmKind & qualdict['_K'] != 0: + PrintMessage(logging.ERROR, '_C and _K not supported, use HCopy to convert first') + header = [nSamples, sampPeriod, sampSize, parmKind] + # read each value + values = [] + for ridx in range(0, nSamples): + values.append([]) + for cidx in range(0, sampleDim): + curval = feafile.read(4) + curval = struct.unpack(order + 'f', curval)[0] + values[-1].append(curval) + return [header, values] + +def WriteHTKFeature(feafile, order, feature): + # write the header + header = feature[0] + feafile.write(struct.pack(order + 'I', header[0])) + feafile.write(struct.pack(order + 'I', header[1])) + feafile.write(struct.pack(order + 'H', header[2])) + feafile.write(struct.pack(order + 'H', header[3])) + if header[3] & qualdict['_C'] != 0 or header[3] & qualdict['_K'] != 0: + PrintMessage(logging.ERROR, '_C and _K not supported, reset with --parmkind') + # write the values + values = feature[1] + for ridx in range(0, len(values)): + for cidx in range(0, len(values[ridx])): + feafile.write(struct.pack(order + 'f', values[ridx][cidx])) + +def ShowHTKFeaHeader(feature): + header = feature[0] + # nSamples + PrintMessage(logging.INFO, 'nSamples: ' + str(header[0])) + # sampPeriod + PrintMessage(logging.INFO, "sampPeriod: %e" % float(header[1])) + # sampSize + PrintMessage(logging.INFO, 'sampleDim ' + str(header[2] / 4)) + # parmKind + parmkind = typelist[header[3] - int(header[3] / 64) * 64] + for (key, value) in qualdict.items(): + if header[3] & value != 0: + parmkind += key + PrintMessage(logging.INFO, 'parmKind: ' + parmkind) + +def GetParmKindInt(parmkind): + intkind = 0 + items = parmkind.split('_') + intkind = intkind | typedict[items[0]] + for idx in range(1, len(items)): + curqual = '_' + items[idx] + intkind = intkind | qualdict[curqual] + return intkind + + +# big endian by default +order = '<' +if args.little: + order = '>' + +# read left hand HTK feature +lhFea = ReadHTKFeature(args.inLFEA, order) +PrintMessage(logging.INFO, 'Left hand input feature:') +ShowHTKFeaHeader(lhFea) +rhFea = ReadHTKFeature(args.inRFEA, order) +PrintMessage(logging.INFO, 'Right hand input feature:') +ShowHTKFeaHeader(rhFea) + +if lhFea[0][0] != rhFea[0][0]: + PrintMessage(logging.ERROR, 'left and right features have different sample numbers') +if lhFea[0][1] != rhFea[0][1]: + PrintMessage(logging.ERROR, 'left and right features have different sample rates') + +# generate the out feature header +header = [lhFea[0][0], lhFea[0][1], lhFea[0][2] + lhFea[0][2], GetParmKindInt(args.parmkind.upper())] +values = [] +for idx in range(0, len(lhFea[1])): + values.append([]) + values[-1].extend(lhFea[1][idx]) + values[-1].extend(rhFea[1][idx]) +catFea = [header, values] + +# write-out the combined feature +PrintMessage(logging.INFO, 'Concatenated output feature vector:') +ShowHTKFeaHeader(catFea) +WriteHTKFeature(args.outFEA, order, catFea) + + diff --git a/samples/RMHTK/python_scripts/ConvertExtSCP.py b/samples/RMHTK/python_scripts/ConvertExtSCP.py new file mode 100644 index 0000000..223f8d8 --- /dev/null +++ b/samples/RMHTK/python_scripts/ConvertExtSCP.py @@ -0,0 +1,186 @@ +# author - cz277@cam.ac.uk +# script version - 1.0 +# python version - 2.7 + +import os +import sys +import logging +import argparse + +parser = argparse.ArgumentParser(description = 'convert extended SCP file') +egroup = parser.add_mutually_exclusive_group() +egroup.add_argument('-v', '--verbose', help = 'increase output verbosity', action = 'store_true', default = False) +egroup.add_argument('-q', '--quiet', help = 'enable silent mode', action = 'store_true', default = False) +parser.add_argument('-s', '--side', help = 'generate side based SCP', action = 'store_true', default = False) +parser.add_argument('-sm', '--sidemask', help = 'set the mask for data side', type = str, action = 'store', default = '%%%%%%%%%%%%????????????????%%%_*') +parser.add_argument('-r', '--reorder', help = 'sort the output SCP', action = 'store_true', default = False) +parser.add_argument('-c', '--hcopy', help = 'generate HCopy style SCP', action = 'store_true', default = False) +parser.add_argument('-dm', '--dirmask', help = 'set the mask to convert input to output directory', type = str, action = 'store', default = '') +parser.add_argument('-u', '--update', help = 'update the segment boundary fields', action = 'store_true', default = False) +parser.add_argument('-o', '--outbase', help = 'set output base directory', type = str, action = 'store', default = '') +parser.add_argument('-n', '--notext', help = 'generate non-extended SCP file', action = 'store_true', default = False) +parser.add_argument('-x', '--dataext', help = 'set the data extension', type = str, action = 'store', default = '') +parser.add_argument('inSCP', help = 'input SCP file path', type = argparse.FileType('r'), action = 'store') +parser.add_argument('outSCP', help = 'output SCP file path', type = argparse.FileType('w'), action = 'store') + +args = parser.parse_args() +logging.basicConfig(level = logging.WARNING) +logger = logging.getLogger(__name__) +if args.quiet: + logger.setLevel(logging.ERROR) +elif args.verbose: + logger.setLevel(logging.INFO) + +def PrintMessage(msgtype, strmsg): + if msgtype == logging.ERROR: + logger.error(strmsg) + os._exit(1) + elif msgtype == logging.WARNING: + logger.warning(strmsg) + else: + logger.info(strmsg) + + +def CheckDir(inDir): + if inDir == '': + return '' + elif not inDir.endswith(os.sep): + inDir += os.sep + return inDir + + +def MaskStr(inMask, inStr): + outStr = '' + if inMask.startswith('*'): # reverse + if inMask.endswith('*'): + return inStr + for idx in range(0, len(inMask)): + maskIdx = len(inMask) - idx - 1 + strIdx = len(inStr) - idx - 1 + if inMask[maskIdx] == '%': + outStr += inStr[strIdx] + elif inMask[maskIdx] == '?': + outStr += '' + elif inMask[maskIdx] == '*': + break + else: + if inMask[maskIdx] != inStr[strIdx]: + PrintMessage(logging.ERROR, inStr + ' does not match mask ' + inMask) + os._exit(1) + else: # original + for idx in range(0, len(inMask)): + maskIdx = idx + strIdx = idx + if inMask[maskIdx] == '%': + outStr += inStr[strIdx] + elif inMask[maskIdx] == '?': + outStr += '' + elif inMask[maskIdx] == '*': + break + else: + if inMask[maskIdx] != inStr[strIdx]: + PrintMessage(logging.ERROR, inStr + ' does not match mask ' + inMask) + os._exit(1) + return outStr + + +def UpdateRangeField(line): + item = line.split('[')[-1] + if item.count(']') == 0: + return '' + else: + parts = item.split(']')[0].split(',') + start = int(parts[0]) + end = int(parts[1]) + end = end - start + start = 0 + return "[%06d,%06d]" % (start, end) + +def UpdateDataExt(line, dataext, extscp): + logid = '' + if line.count('='): + items = line.split('=') + logid = os.path.splitext(items[0])[0] + '.' + dataext + '=' + line = items[1] + items = line.split(' ') + for idx in range(0, len(items)): + parts = items[idx].split('[') + items[idx] = os.path.splitext(parts[0])[0] + '.' + dataext + if extscp: + if len(parts) > 1: + items[idx] += '[' + parts[1] + if extscp: + return logid + ' '.join(items) + else: + return ' '.join(items) + + +# parse the options +if args.hcopy: + if args.side and args.update: + PrintMessage(logging.WARNING, 'Target side names will be changed in HCopy style scp') + elif (not args.side) and (not args.update): + args.update = True + PrintMessage(logging.WARNING, 'For segment level HCopy, target file names are the segment names') +if args.dataext.startswith('.'): + args.dataext = args.dataext[1: ] + + +# load input scp +inlines = args.inSCP.readlines() + + +# arrange the input lines +outList = [] +outDict = {} +for eachline in inlines: + eachline = eachline.replace(os.linesep, '') + uttId = eachline.split('=')[0].split('[')[0].split(os.sep)[-1] + if args.side: + uttId = MaskStr(args.sidemask, uttId) + if not outDict.has_key(uttId): + outList.append(uttId) + if args.side: + outDict[uttId] = eachline.split('[')[0] + else: + outDict[uttId] = eachline + + +# formatting the output lines +outlines = [] +for eachId in outList: + curline = '' + src = outDict[eachId] + srcDir = CheckDir(os.path.dirname(src.split('=')[-1])) + srcSub = CheckDir(MaskStr(args.dirmask, srcDir)) + if args.outbase == '': + tgt = srcDir + srcSub + else: + tgt = CheckDir(args.outbase) + srcSub + if args.update: + tgt += eachId + else: + tgt += src.split(os.sep)[-1].split('[')[0] + if args.hcopy: + #outlines.append(src + ' ' + tgt + os.linesep) + curline = src + ' ' + tgt + else: + if args.update: + tgt += UpdateRangeField(src) + elif (not args.side) and src.count('['): + tgt += '[' + src.split('[')[-1] + if args.notext: + curline = tgt + else: + curline = eachId + '=' + tgt + if args.dataext != '': + curline = UpdateDataExt(curline, args.dataext, not args.notext) + outlines.append(curline + os.linesep) + +if args.reorder: + outlines.sort() + +for eachline in outlines: + args.outSCP.write(eachline) + + diff --git a/samples/RMHTK/python_scripts/GenInitDNN.py b/samples/RMHTK/python_scripts/GenInitDNN.py new file mode 100644 index 0000000..050d204 --- /dev/null +++ b/samples/RMHTK/python_scripts/GenInitDNN.py @@ -0,0 +1,213 @@ +# author - cz277@cam.ac.uk +# script version - 1.1 +# python verison - 2.7 + +import os +import sys +import types +import logging +import argparse + +cmdparser = argparse.ArgumentParser(description = 'generate initial HTK V3.5 DNN model') +egroup = cmdparser.add_mutually_exclusive_group() +egroup.add_argument('-v', '--verbose', help = 'increase output verbosity', action = 'store_true', default = False) +egroup.add_argument('-q', '--quiet', help = 'enable silent mode', action = 'store_true', default = False) +cmdparser.add_argument('-s', '--structure', help = 'the initial DNN structure', type = str, action = 'store', default = '') +cmdparser.add_argument('inHTE', help = 'input HTE config file path', type = argparse.FileType('r'), action = 'store') +cmdparser.add_argument('outMMF', help = 'output initial DNN file path', type = argparse.FileType('w'), action = 'store') +args = cmdparser.parse_args() + +actdict = {'AFFINE': [1.0, 0.0], 'HERMITE': [0.0] * 10, 'LINEAR': [], 'RELU': [], 'PRELU': [1.0], + 'PARMRELU': [1.0, 0.25], 'SIGMOID': [], 'LHUCSIGMOID': [1.0], 'PSIGMOID': [1.0], + 'PARMSIGMOID': [1.0, 1.0, 0.0], 'SOFTRELU': [], 'SOFTMAX': [], 'TANH': []} +cfglist = ['DNNSTRUCTURE', 'FEATURETYPE', 'FEATUREDIM', 'CONTEXTSHIFT', 'HIDDENACTIVATION', 'OUTPUTACTIVATION'] +cfgdict = {'DNNSTRUCTURE': '720X1000X3000', 'FEATURETYPE': '', 'FEATUREDIM': '80', + 'CONTEXTSHIFT': '-4,-3,-2,-1,0,1,2,3,4', 'HIDDENACTIVATION': 'SIGMOID', 'OUTPUTACTIVATION': 'SOFTMAX'} + +logging.basicConfig(level = logging.INFO) +logger = logging.getLogger('GenInitDNN') +if args.quiet: + logger.setLevel(logging.ERROR) +elif args.verbose: + logger.setLevel(logging.INFO) + +def PrintMessage(msgtype, strmsg): + if msgtype == logging.ERROR: + logger.error(strmsg) + os._exit(1) + elif msgtype == logging.WARNING: + logger.warning(strmsg) + else: + logger.info(strmsg) + +def PackOneWord(left, word, right): + if not word.startswith(left): + word = left + word + if not word.endswith(right): + word += right + return word + +def ParseHTE(lines): + for eachline in lines: + curline = eachline.replace(os.linesep, '').replace('\t', ' ').split('#')[0] + while curline.count(' '): + curline = curline.replace(' ', ' ') + if curline.startswith(' '): + curline = curline[1: ] + elif curline.endswith(' '): + curline = curline[: -1] + if curline == '': + continue + if curline.startswith('set '): + curline = curline[4: ] + curline = curline.replace(' = ', '=') + fields = curline.split('=') + if len(fields) != 2: + PrintMessage(logging.WARNING, 'Ignore illegal config ' + curline) + continue + fields[0] = fields[0].upper() + if not cfgdict.has_key(fields[0]): + cfglist.append(fields[0]) + cfgdict[fields[0]] = fields[1] + cfglist.sort() + +def GenNVecBundle(nlen, value): + return [value] * nlen + +def GenNMatBundle(nrows, ncols, value): + return [[value] * ncols] * nrows + +def Vector2Str(vector): + retstr = '' + for eachval in vector: + if type(eachval) is types.FloatType: + retstr += " %e" % eachval + elif type(eachval) is types.IntType: + retstr += " %d" % eachval + else: + retstr += " " + str(eachval) + return retstr + +def Matrix2Strs(matrix): + retstrs = [] + for eachrow in matrix: + curstr = '' + for eachval in eachrow: + curstr += " %e" % eachval + retstrs.append(curstr) + return retstrs + +def GetLayerID(lidx, lnum): + if lidx == lnum - 1: + return 'out' + elif lidx < 0: + return 'in' + else: + return str(lidx + 2) + +# 1. load input HTE file +ParseHTE(args.inHTE.readlines()) +if args.structure != '': + cfgdict['DNNSTRUCTURE'] = args.structure +cfgdict['FEATURETYPE'] = PackOneWord('<', cfgdict['FEATURETYPE'], '>') +cfgdict['CONTEXTSHIFT'] = cfgdict['CONTEXTSHIFT'].split(',') +cfgdict['HIDDENACTIVATION'] = cfgdict['HIDDENACTIVATION'].upper() +cfgdict['OUTPUTACTIVATION'] = cfgdict['OUTPUTACTIVATION'].upper() +for eachcfg in cfglist: + value = cfgdict[eachcfg] + PrintMessage(logging.INFO, eachcfg + '\t= ' + str(value)) + +# 2. parse the ANN structure +layerdims = cfgdict['DNNSTRUCTURE'].split('X') +layerinfo = [] +for index in range(0, len(layerdims) - 2): + layerinfo.append([]) + layerinfo[-1].append(int(layerdims[index + 1])) + layerinfo[-1].append(int(layerdims[index])) + layerinfo[-1].append(cfgdict['HIDDENACTIVATION']) +layerinfo.append([int(layerdims[-1]), int(layerdims[-2]), cfgdict['OUTPUTACTIVATION']]) +if layerinfo[0][1] != int(cfgdict['FEATUREDIM']) * len(cfgdict['CONTEXTSHIFT']): + layerinfo[0][1] = int(cfgdict['FEATUREDIM']) * len(cfgdict['CONTEXTSHIFT']) + PrintMessage(logging.WARNING, 'Unmatched input dimension, reset to ' + str(layerinfo[0][1])) + +# 3. output the model +outlines = [] + +# generate ~o +outlines.append('~o') +outlines.append(' 1 ' + str(int(cfgdict['FEATUREDIM']))) +outlines.append(' ' + str(int(cfgdict['FEATUREDIM'])) + '' + cfgdict['FEATURETYPE'] + '') + +# generate ~V +for lidx in range(0, len(layerinfo)): + nodenum = layerinfo[lidx][0] + function = layerinfo[lidx][2] + outlines.append('~V ' + PackOneWord('"', "layer%s_bias" % GetLayerID(lidx, len(layerinfo)), '"')) + outlines.append(' ' + str(nodenum)) + outlines.append(Vector2Str(GenNVecBundle(nodenum, 0.0))) + for vidx in range(0, len(actdict[function])): + outlines.append('~V ' + PackOneWord('"', "layer%s_actparam%d" % (GetLayerID(lidx, len(layerinfo)), vidx + 1), '"')) + outlines.append(' ' + str(nodenum)) + outlines.append(Vector2Str(GenNVecBundle(nodenum, actdict[function][vidx]))) + +# generate ~M +for lidx in range(0, len(layerinfo)): + nodenum = layerinfo[lidx][0] + inputdim = layerinfo[lidx][1] + outlines.append('~M ' + PackOneWord('"', "layer%s_weight" % GetLayerID(lidx, len(layerinfo)), '"')) + outlines.append(' ' + str(nodenum) + ' ' + str(inputdim)) + outlines.extend(Matrix2Strs(GenNMatBundle(nodenum, inputdim, 0.0))) + +# generate ~F +for lidx in range(0, len(layerinfo)): + nodenum = layerinfo[lidx][0] + inputdim = layerinfo[lidx][1] + outlines.append('~F ' + PackOneWord('"', "layer%s_feamix" % GetLayerID(lidx - 1, len(layerinfo)), '"')) + outlines.append(' 1 ' + str(inputdim)) + if lidx == 0: + outlines.append(' 1 ' + str(cfgdict['FEATUREDIM'])) + outlines.append('') + outlines.append(cfgdict['FEATURETYPE']) + outlines.append(' ' + str(len(cfgdict['CONTEXTSHIFT']))) + outlines.append(Vector2Str(cfgdict['CONTEXTSHIFT'])) + else: + outlines.append(' 1 ' + str(inputdim)) + outlines.append('') + outlines.append('~L ' + PackOneWord('"', "layer%s" % GetLayerID(lidx - 1, len(layerinfo)), '"')) + outlines.append(' 1') + outlines.append(' 0') + +# generate ~L +for lidx in range(0, len(layerinfo)): + function = layerinfo[lidx][2] + outlines.append('~L "layer' + GetLayerID(lidx, len(layerinfo)) + '"') + outlines.append('') + outlines.append(' ' + PackOneWord('"', "PERCEPTRON", '"')) + outlines.append('') + outlines.append('~F ' + PackOneWord('"', "layer%s_feamix" % GetLayerID(lidx - 1, len(layerinfo)), '"')) + outlines.append('') + outlines.append('~M ' + PackOneWord('"', "layer%s_weight" % GetLayerID(lidx, len(layerinfo)), '"')) + outlines.append('') + outlines.append('~V ' + PackOneWord('"', "layer%s_bias" % GetLayerID(lidx, len(layerinfo)), '"')) + outlines.append(' "' + function + '"') + if len(actdict[function]) > 0: + outlines.append(' ' + str(len(actdict[function]))) + for vidx in range(0, len(actdict[function])): + outlines.append(' ' + str(vidx + 1)) + outlines.append('~V ' + PackOneWord('"', "layer%s_actparam%d" % (GetLayerID(lidx, len(layerinfo)), vidx + 1), '"')) + outlines.append('') + +# generate ~N +outlines.append('~N ' + PackOneWord('"', "DNN1", '"')) +outlines.append('') +outlines.append(' ' + str(len(layerinfo) + 1)) +for lidx in range(0, len(layerinfo)): + outlines.append(' ' + str(lidx + 2)) + outlines.append('~L ' + PackOneWord('"', "layer%s" % GetLayerID(lidx, len(layerinfo)), '"')) +outlines.append('') + +# 4. write out the lines +for eachline in outlines: + args.outMMF.write(eachline + os.linesep) + + diff --git a/samples/RMHTK/python_scripts/SubsetSCP.py b/samples/RMHTK/python_scripts/SubsetSCP.py new file mode 100644 index 0000000..897325b --- /dev/null +++ b/samples/RMHTK/python_scripts/SubsetSCP.py @@ -0,0 +1,127 @@ +# author - cz277@cam.ac.uk +# script version - 1.0 +# python version - 2.7 + +import os +import sys +import random +import logging +import argparse + +parser = argparse.ArgumentParser(description = 'select a subset of the SCP file') +egroup = parser.add_mutually_exclusive_group() +egroup.add_argument('-v', '--verbose', help = 'increase output verbosity', action = 'store_true', default = False) +egroup.add_argument('-q', '--quiet', help = 'enable silent mode', action = 'store_true', default = False) +parser.add_argument('-s', '--speaker', help = 'speaker based selection', action = 'store_true', default = False) +parser.add_argument('-m', '--speakermask', help = 'set the speaker mask', type = str, action = 'store', default = '%%%%%%*') +parser.add_argument('-r', '--rand', help = 'does random selection', action = 'store_true', default = False) +parser.add_argument('-p', '--percent', help = 'selection this percent of data', type = float, action = 'store', default = 0.1) +parser.add_argument('-o', '--order', help = 'sort output file by order', action = 'store_true', default = False) +parser.add_argument('inSCP', help = 'input SCP file path', type = argparse.FileType('r'), action = 'store') +parser.add_argument('outSCP', help = 'output SCP file path', type = argparse.FileType('w'), action = 'store') + +args = parser.parse_args() +logging.basicConfig(level = logging.WARNING) +logger = logging.getLogger(__name__) +if args.quiet: + logger.setLevel(logging.ERROR) +elif args.verbose: + logger.setLevel(logging.INFO) + +def PrintMessage(msgtype, strmsg): + if msgtype == logging.ERROR: + logger.error(strmsg) + os._exit(1) + elif msgtype == logging.WARNING: + logger.warning(strmsg) + else: + logger.info(strmsg) + +def MaskStr(inMask, inStr): + outStr = '' + if inMask.startswith('*'): # reverse + if inMask.endswith('*'): + return inStr + for idx in range(0, len(inMask)): + maskIdx = len(inMask) - idx - 1 + strIdx = len(inStr) - idx - 1 + if inMask[maskIdx] == '%': + outStr += inStr[strIdx] + elif inMask[maskIdx] == '?': + outStr += '' + elif inMask[maskIdx] == '*': + break + else: + if inMask[maskIdx] != inStr[strIdx]: + PrintMessage(logging.ERROR, inStr + ' does not match mask ' + inMask) + os._exit(1) + else: # original + for idx in range(0, len(inMask)): + maskIdx = idx + strIdx = idx + if inMask[maskIdx] == '%': + outStr += inStr[strIdx] + elif inMask[maskIdx] == '?': + outStr += '' + elif inMask[maskIdx] == '*': + break + else: + if inMask[maskIdx] != inStr[strIdx]: + PrintMessage(logging.ERROR, inStr + ' does not match mask ' + inMask) + os._exit(1) + return outStr + + +speakerDict = {} +speakerList = [] + +# check the range of parameters +if args.percent <= 0.0 or args.percent > 1.0: + PrintMessage(logging.ERROR, 'percent should set to between 0.0 to 1.0') + +# load input scp +inlines = args.inSCP.readlines() + +for eachline in inlines: + eachline = eachline.replace(os.linesep, '') + uttername = eachline.split('=')[0].split(os.sep)[-1] + curspeaker = MaskStr(args.speakermask, uttername) + if speakerDict.has_key(curspeaker): + speakerDict[curspeaker].append(eachline) + else: + speakerList.append(curspeaker) + speakerDict[curspeaker] = [eachline] + +outlines = [] +if args.speaker: + indexList = [] + for idx in range(0, len(speakerList)): + indexList.append(idx) + if args.rand: + random.shuffle(indexList) + #nselect = int(len(speakerList) * args.percent + 1) + nselect = int(len(speakerList) * args.percent) + while len(indexList) > nselect: + indexList.pop() + indexList.sort() + for idx in range(0, nselect): + outlines.extend(speakerDict[speakerList[indexList[idx]]]) +else: + for eachspeaker in speakerList: + indexList = [] + for idx in range(0, len(speakerDict[eachspeaker])): + indexList.append(idx) + if args.rand: + random.shuffle(indexList) + #nselect = int(len(speakerDict[eachspeaker]) * args.percent + 1) + nselect = int(len(speakerDict[eachspeaker]) * args.percent) + while len(indexList) > nselect: + indexList.pop() + indexList.sort() + for idx in range(0, nselect): + outlines.append(speakerDict[eachspeaker][indexList[idx]]) + +for eachline in outlines: + args.outSCP.write(eachline + os.linesep) + + diff --git a/samples/RMHTK/scripts/addmlp b/samples/RMHTK/scripts/addmlp new file mode 100755 index 0000000..9c38c8d --- /dev/null +++ b/samples/RMHTK/scripts/addmlp @@ -0,0 +1,60 @@ +#!/bin/tcsh + +#set verbose + +set ALLARGS=($*) +set HCOPY = HCopy +set CHANGED +if ( $#argv > 1 ) then +while ( $?CHANGED ) + unset CHANGED + if ( "$argv[1]" == "-HCOPY" ) then + set CHANGED + shift argv + set HCOPY = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LIB") then + set CHANGED + shift argv + set LIBCMD = $argv[1] + shift argv + endif +end +endif + +if( $#argv != 3 ) then + echo "usage : $0 [-HCOPY path] [-LIB path] mfcSCP mlpDIR tandemDIR" + exit 0 +endif + +set mfcSCP = $argv[1] +set mlpDIR = $argv[2] +set tandemDIR = $argv[3] + +if ($?LIBCMD) then + setenv LD_LIBRARY_PATH ${LIBCMD}:${LD_LIBRARY_PATH} +endif + +if ( ! -d data/work) then + mkdir -p data/work +endif + +foreach mfcpath (`cat $mfcSCP`) + set mfcname = `basename $mfcpath` + set filename = $mfcname:r + set mlppath = $mlpDIR/${filename}.mlp + set tandempath = ${tandemDIR}/${filename}.pma + set tmpmfc = data/work/${filename}.mfc + set tmpmlp = data/work/${filename}.mlp + set tmptandem = data/work/${filename}.pma + $HCOPY -A -D -T 1 -C config.mfc.uncompress $mfcpath $tmpmfc >> data/work/LOG.mfc + $HCOPY -A -D -T 1 -C config.mlp.uncompress $mlppath $tmpmlp >> data/work/LOG.mlp + python CatHTKFeatures.py $tmpmfc $tmpmlp $tmptandem >> data/work/LOG.tandem + $HCOPY -A -D -T 1 -C config.tandem.compress $tmptandem $tandempath >> data/work/LOG.tandem + rm $tmpmfc + rm $tmpmlp + rm $tmptandem +end + + diff --git a/samples/RMHTK/scripts/coderm b/samples/RMHTK/scripts/coderm new file mode 100755 index 0000000..b8fe6b2 --- /dev/null +++ b/samples/RMHTK/scripts/coderm @@ -0,0 +1,156 @@ +#!/bin/csh -f + +# This script will encode a given list of files of the RM database +# store the results in a directory tree given the root +# It has options for coding training data and test data for both +# the speaker dependent and speaker independent training sets +# +# usage: coderm ndxdir cdmount dbtype dbportion targetroot config codelist +# +# ndxdir - directory to find the NIST filelists +# cdmount - where CD-ROM with both data files is mounted +# dbtype - ind | dep +# dbportion - train | dev_aug | traina | trainb | evalset +# targetroot - root directory for coded files +# config - configuration file used to set coding parameters +# codelist - list of coded files +# +# for speaker dependent - dbportion = traina (1st 6 speakers) +# = trainb (2nd 6 speakers) +# for speaker independent - dbportion = train (main 72 speakers) +# - dbportion = dev_aug (augmented 37 speakers) +# In both cases evalset is one of {feb89, oct89, feb91, sep92} +# +# eg coderm $RMLIB/ndx $CDRM1 ind train /home/azure/pcw/rmdata +# +# The script first identifies the appropriate filelist from ndxdir +# and then codes all the files listed transforming the filenames +# so that they are unique e.g bef0_3/st0013.sph -> bef0_3_st0013.mfc +# +# Copyright (c) Phil Woodland + Julian Odell, 1995 +# Last Updated 17/8/95 +# + +if ( $#argv != 7 ) then + echo "usage: coderm ndxdir cdmount dbtype dbportion targetroot config codelist" + exit 1 +endif + +set ndxdir=$1 +if ( ! -d $ndxdir ) then + echo "NIST filelist directory $ndxdir not found" + exit 2 +endif + +set rmcd=$2 +if ( ! -d $rmcd ) then + echo "RM CD-ROM $rmcd not found" + exit 2 +endif + +set dbtype=$3 +if ( $dbtype != ind && $dbtype != dep ) then + echo "dbtype of [ind | dep] expected and not $dbtype" + exit 2 +endif + +set dbportion=$4 +switch ($dbportion) +case train: + if ($dbtype == ind) then + set ndx=$ndxdir/72_indtr.ndx + else + echo "Illegal dbportion $dbportion for dbtype $dbtype" + exit 2 + endif + breaksw +case dev_aug: + if ($dbtype == ind) then + set ndx=$ndxdir/37_indtr.ndx + else + echo "Illegal dbportion $dbportion for dbtype $dbtype" + exit 2 + endif + breaksw +case traina: + if ($dbtype == dep) then + set ndx=$ndxdir/6a_deptr.ndx + else + echo "Illegal dbportion $dbportion for dbtype $dbtype" + exit 2 + endif + breaksw +case trainb: + if ($dbtype == dep) then + set ndx=$ndxdir/6b_deptr.ndx + else + echo "Illegal dbportion $dbportion for dbtype $dbtype" + exit 2 + endif + breaksw +case feb89: + set ndx=$ndxdir/4_${dbtype}tst.ndx + breaksw +case oct89: + set ndx=$ndxdir/5_${dbtype}tst.ndx + breaksw +case feb91: + set ndx=$ndxdir/6_${dbtype}tst.ndx + breaksw +case sep92: + set ndx=$ndxdir/7_${dbtype}tst.ndx + breaksw +case dms0_tst: + set ndx=$ndxdir/dms0_tst.ndx + breaksw +default: + echo "dbtype not one of (train | dev_aug | traina | trainb | feb89 | oct89 | feb91 | sep92 | dms0_tst)" + exit 2 +endsw + +set tgtroot=$5 +if ( ! -d $tgtroot ) then + echo "Target root directory $tgtroot doesnt exist" + exit 2 +endif + +set config=$6 +set codefilelist=$7 + +if ( ! -r $ndx ) then + echo "Cant read RM filelist $ndx" + exit 2 +endif + +set codescript="${codefilelist}.code" + +\rm -f $codefilelist +\rm -f $codescript + +echo "Making file lists" +grep -v "^;" $ndx | sed -e "s:^\(.*\)/\(.*\)\([/_]\)\(.*\)/\(.*\)/\(.*\)\.sph:${rmcd}/\1/\2\3\4/\5/\6.sph ${tgtroot}/\2_\4/\5/\5_\6.mfc:" > $codescript +# ar527 changed from to handle different structure of *.ndx files +# grep -v "^;" $ndx | sed -e "s:^/\(.*\)/\(.*\)\([/_]\)\(.*\)/\(.*\)/\(.*\)\.sph:${rmcd}/\1/\2\3\4/\5/\6.sph ${tgtroot}/\2_\4/\5/\5_\6.mfc:" > $codescript +awk '{ print $2}' $codescript > $codefilelist +set count=`cat $codefilelist | wc -l` + +echo "Making directories" +foreach i (`sed 's:\(.*\)/[a-z0-9_]*\.mfc:\1:' $codefilelist | sort -u`) + if ( ! -d $i ) then + mkdir -p $i + if ( $status != 0 ) then + echo "Cannot Create Directory $i" + exit 1 + endif + endif +end + +echo "Coding data" +HCopy -A -T 1 -C $config -S $codescript +if ( $status != 0 ) then + echo "Bad Status after Coding" + exit 1 +endif +\rm -f $codescript +echo "" +echo "Coding complete - $count files processed" diff --git a/samples/RMHTK/scripts/finetune b/samples/RMHTK/scripts/finetune new file mode 100755 index 0000000..094151c --- /dev/null +++ b/samples/RMHTK/scripts/finetune @@ -0,0 +1,163 @@ +#!/bin/tcsh +#$ -S /bin/tcsh + +#set verbose + +# Layer-by-layer discriminative DNN pre-training +set ALLARGS = ($*) +set HNTRAINSGD = HNTrainSGD +set CHANGED +while ($?CHANGED) + unset CHANGED + if ("$argv[1]" == "-HNTRAINSGD") then + set CHANGED + shift argv + set HNTRAINSGDCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LIB") then + set CHANGED + shift argv + set LIBCMD = $argv[1] + shift argv + endif +end + +if ($#argv != 1) then + echo "Usage: $0 [-HNTRAINSGD path] [-LIB path] DNNenv" + echo "-HNTRAINSGD path: use a specified HNTrainSGD binary" + echo "-LIB path: CUDA/MKL library path for GPU/MKL computing" + exit 1 +endif + + +set DNNENV = $argv[1] +if (! -f $DNNENV) then + echo "ERROR: cannot find environment file $DNNENV" + exit 1 +endif +# Read the environment file +source $DNNENV +if ($?LIBCMD) then + set LIB = $LIBCMD +endif +if ($?LIB) then + setenv LD_LIBRARY_PATH ${LIB}:${LD_LIBRARY_PATH} +endif +if ($?HNTRAINSGDCMD) then + set HNTRAINSGD = $HNTRAINSGDCMD +endif + +# parse DNNSTRUCTURE +if (! $?DNNSTRUCTURE) then + echo "ERROR: environment variable DNNSTRUCTURE is missing" + exit 100 +endif +# get layer sizes +set lsizes = `echo $DNNSTRUCTURE | awk 'BEGIN{FS="X"}{for (i=1; i<=NF; i++) print $i}'` +set lnum = $#lsizes +if ($lnum < 3) then + echo "ERROR: at least need to be 3 layer MLP" +endif + + +# generate config.dnn.ft +echo 'HANNET: TRACE = 1' > config.dnn.ft +echo 'HNCACHE: TRACE = 1' >> config.dnn.ft +echo 'HNCACHE: DATAACCESSKIND = FRAMERAND' >> config.dnn.ft +echo 'HNCACHE: SHUFFLEKIND = QUICKNET' >> config.dnn.ft +echo 'HNTRAINSGD: TRACE = 1' >> config.dnn.ft +echo 'HNTRAINSGD: UPDATEMODE = BATCHLEVEL' >> config.dnn.ft +echo 'HNTRAINSGD: CRITERION = XENT' >> config.dnn.ft +echo 'HNTRAINSGD: UPDATETARGETPEN = TRUE' >> config.dnn.ft +if ($?MINIBATCHSIZE) then + echo "HANNET: MINIBATCHSIZE = $MINIBATCHSIZE" >> config.dnn.ft +endif +if ($?DATACACHESIZE) then + echo "HNCACHE: DATACACHESIZE = $DATACACHESIZE" >> config.dnn.ft +endif +if ($?FTLEARNRATEKIND) then + echo "HNTRAINSGD: LRSCHEDULER = $FTLEARNRATEKIND" >> config.dnn.ft + if ($FTLEARNRATEKIND == NEWBOB) then + if ($?FTNEWBOBCRITERION) then + echo "HNTRAINSGD: NEWBOBCRT = $FTNEWBOBCRITERION" >> config.dnn.ft + endif + if ($?FTNEWBOBRAMPSTART) then + echo "HNTRAINSGD: RAMPSTART = $FTNEWBOBRAMPSTART" >> config.dnn.ft + endif + if ($?FTNEWBOBSTOPDIFF) then + echo "HNTRAINSGD: STOPDIFF = $FTNEWBOBSTOPDIFF" >> config.dnn.ft + endif + else if ($FTLEARNRATEKIND == EXPONENTIAL) then + if ($?FTEXPGAMMA) then + echo "HNTRAINSGD: GAMMA = $FTEXPGAMMA" >> config.dnn.ft + endif + if ($?FTEXPBASE) then + echo "HNTRAINSGD: BASE = $FTEXPBASE" >> config.dnn.ft + endif + else if ($FTLEARNRATEKIND == ADAGRAD) then + if ($?FTADAGRADK) then + echo "HNTRAINSGD: K = $FTADAGRADK" >> config.dnn.ft + endif + endif +endif +if ($?FTLEARNRATEVALS) then + echo "HNTRAINSGD: LEARNRATE = $FTLEARNRATEVALS" >> config.dnn.ft +endif +if ($?FTMINEPOCHNUM) then + echo "HNTRAINSGD: MINEPOCHNUM = $FTMINEPOCHNUM" >> config.dnn.ft +endif +if ($?FTMAXEPOCHNUM) then + echo "HNTRAINSGD: MAXEPOCHNUM = $FTMAXEPOCHNUM" >> config.dnn.ft +endif +if ($?FTMOMENTUM) then + echo "HNTRAINSGD: MOMENTUM = $FTMOMENTUM" >> config.dnn.ft +endif +if ($?FTWEIGHTDECAY) then + echo "HNTRAINSGD: WEIGHTDECAY = $FTWEIGHTDECAY" >> config.dnn.ft +endif +if ($?LOGPRIOROBSV) then + echo "HNTRAINSGD: LOGPRIOROBSV = $LOGPRIOROBSV" >> config.dnn.ft +endif +if ($?FTGRADIENTCLIP) then + echo "HNTRAINSGD: ACTIVATIONUPDATECLIP = $FTGRADIENTCLIP" >> config.dnn.ft + echo "HNTRAINSGD: WEIGHTUPDATECLIP = $FTGRADIENTCLIP" >> config.dnn.ft + echo "HNTRAINSGD: BIASUPDATECLIP = $FTGRADIENTCLIP" >> config.dnn.ft +endif +if ($?SHUFFLEKIND) then + echo "HNCACHE: SHUFFLEKIND = $SHUFFLEKIND" >> config.dnn.ft +endif +if ($?ANNUPDATEFLAG) then + echo "HANNET: ANNUPDATEFLAG = $ANNUPDATEFLAG" >> config.dnn.ft +endif +if ($?LAYERUPDATEFLAG) then + echo "HANNET: LAYERUPDATEFLAG = $LAYERUPDATEFLAG" >> config.dnn.ft +endif +if ($?ACTFUNUPDATEFLAG) then + echo "HANNET: ACTFUNUPDATEFLAG = $ACTFUNUPDATEFLAG" >> config.dnn.ft +endif +echo "\n" >> config.dnn.ft + +if ( -f cv.scp) then + set SCPARGS = "-S train.scp -N cv.scp" +else + set SCPARGS = "-S train.scp" +endif + +# for -J +set OPTJstr = "" +if ($?OPTJXFORM) then + while ($#OPTJXFORM > 0) + set OPTJstr = "$OPTJstr -J $OPTJXFORM[1]" + shift OPTJXFORM + end +endif + +# setup the directory +if (! -d dnn${lnum}.finetune) then + mkdir -p dnn${lnum}.finetune +endif +if (! -f dnn${lnum}.finetune/MODELS) then + $HNTRAINSGD -A -D -V -T 1 -C config.dnnbasic -C config.dnn.ft -H dnn${lnum}/MODELS -M dnn${lnum}.finetune -l LABEL $SCPARGS $OPTJstr -I train.mlf treeg.list > dnn${lnum}.finetune/LOG +endif + diff --git a/samples/RMHTK/scripts/fixrm b/samples/RMHTK/scripts/fixrm new file mode 100755 index 0000000..256e51f --- /dev/null +++ b/samples/RMHTK/scripts/fixrm @@ -0,0 +1,67 @@ +#!/bin/csh -f + +# fix rm files that were corrupted in recording +# chops out a number of samples from the (coded) files +# +# fixrm corruptlist dataroot +# +# where corruptlist is a file with each list containing the +# corrupt_file_name corrupt_start corrupt_end +# dataroot is the root directory for the files in corruptlist +# +# the script moves the original file to the same name with +# .orig added to the name +# +# Copyright (c) Phil Woodland, 1993 +# Last Updated 14/5/93 +# + +if ( $#argv != 2 ) then + echo "usage: fixrm corruptlist dataroot" + exit 1 +endif + +set CORRUPT=$1 +if (! -f $CORRUPT) then + echo "fixrm: corrupt list $CORRUPT not found" + exit 1 +endif + +set DATAROOT=$2 +if (! -d $DATAROOT) then + echo "fixrm: Invalid dataroot directory $DATAROOT" + exit 1 +endif + +set corruptlist=`cat $CORRUPT` +@ ncorrupt = $#corruptlist / 3 +echo "$ncorrupt files read" +set index=1 +@ i = 1 +while ( $i <= $ncorrupt ) + set name = $corruptlist[$index] + @ index++ + set first = $corruptlist[$index] + @ index++ + set last = $corruptlist[$index] + @ index++ + set fullname = $DATAROOT/$name + set backup = "$fullname".orig + if ( -f $backup ) then + echo "$fullname already processed" + else + echo "Deleting frames $first to $last of $fullname" + cp $fullname $backup + set dir = `dirname $fullname` + @ startend = ( $first - 1 ) + @ startend = $startend * 100000 + HCopy -A -e $startend $fullname $dir/tmp.1 + @ endstart = $last + 1 + @ endstart = $endstart * 100000 + HCopy -A -s $endstart $fullname $dir/tmp.2 + HCopy -A $dir/tmp.1 + $dir/tmp.2 $fullname + \rm $dir/tmp.1 $dir/tmp.2 + endif + @ i++ +end + diff --git a/samples/RMHTK/scripts/forward b/samples/RMHTK/scripts/forward new file mode 100755 index 0000000..e8fad04 --- /dev/null +++ b/samples/RMHTK/scripts/forward @@ -0,0 +1,135 @@ +#!/bin/tcsh +#$ -S /bin/tcsh + +#set verbose + +# Layer-by-layer discriminative DNN pre-training +set ALLARGS = ($*) +set HNFORWARD = HNForward +set HHED = HHEd +set CHANGED +while ($?CHANGED) + unset CHANGED + if ("$argv[1]" == "-HNFORWARD") then + set CHANGED + shift argv + set HNFORWARDCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-HHED") then + set CHANGED + shift argv + set HHEDCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LIB") then + set CHANGED + shift argv + set LIBCMD = $argv[1] + shift argv + endif +end + +if ($#argv != 2) then + echo "Usage: $0 [-HNFORWARD path] [-HHED path] [-LIB path] DNNenv TaskID" + echo "-HNFORWARD path: use a specified HNTrainSGD binary" + echo "-HHED path: use a specified HHEd binary" + echo "-LIB path: CUDA/MKL library path for GPU/MKL computing" + exit 1 +endif + + +set DNNENV = $argv[1] +set TASKID = $argv[2] +if (! -f $DNNENV) then + echo "ERROR: cannot find environment file $DNNENV" + exit 1 +endif +# Read the environment file +source $DNNENV +if ($?LIBCMD) then + set LIB = $LIBCMD +endif +if ($?LIB) then + setenv LD_LIBRARY_PATH ${LIB}:${LD_LIBRARY_PATH} +endif +if ($?HNFORWARDCMD) then + set HNFORWARD = $HNFORWARDCMD +endif +if ($?HHEDCMD) then + set HHED = $HHEDCMD +endif + +# parse DNNSTRUCTURE +if (! $?DNNSTRUCTURE) then + echo "ERROR: environment variable DNNSTRUCTURE is missing" + exit 100 +endif +# get layer sizes +set lsizes = `echo $DNNSTRUCTURE | awk 'BEGIN{FS="X"}{for (i=1; i<=NF; i++) print $i}'` +set lnum = $#lsizes +if ($lnum < 3) then + echo "ERROR: at least need to be 3 layer MLP" +endif + +# generate the model for forwarding +if (! -f dnn.forward/NMF) then + if ( ! -d dnn.original) then + mkdir dnn.original + endif + if ( ! -f dnn.original/NMF) then + $HHED -A -D -V -T 1 -H dnn${lnum}.finetune/MODELS -n dnn.original/NMF /dev/null treeg.list > dnn.original/LOG + endif + if (! -d dnn.forward) then + mkdir dnn.forward + endif + if (! -f dnn.original/NMF) then + echo "ERROR: original model must be put at dnn.original/NMF" + endif + # find the bottleneck layer and remove the top layers + set hedfile = "dnn.forward/forward.hed" + @ var = $lnum - 1 + while ($var > 2) + @ next = $var + 1 + @ prev = $var - 1 + if ($next == $lnum) then + echo 'DL ~L "layerout"' > $hedfile + else + echo 'DL ~L "layer'$next'"' >> $hedfile + endif + if ($lsizes[$var] < $lsizes[$prev] && $lsizes[$var] < $lsizes[$next]) then + echo 'CA ~L "layer'$var'" LINEAR' >> $hedfile + break + endif + @ var = $var - 1 + end + $HHED -A -D -V -T 1 -H dnn.original/NMF -M dnn.forward ${hedfile} /dev/null > dnn.forward/LOG +endif + +# generate config.dnn.fwd +echo 'HANNET: TRACE = 1' > config.dnn.fwd +echo 'HNCACHE: TRACE = 1' >> config.dnn.fwd +echo 'HNCACHE: DATAACCESSKIND = ORIGINAL' >> config.dnn.fwd +echo 'HNCACHE: DATACACHESIZE = 200000000' >> config.dnn.fwd +echo 'HANNET: MINIBATCHSIZE = 4000' >> config.dnn.fwd +echo 'HNFORWARD: TRACE = 1' >> config.dnn.fwd + +if (! -f ${TASKID}.scp) then + echo "ERROR: ${TASKID}.scp does not exist" +endif +if (! -f ${TASKID}.mlp.scp) then + echo "ERROR: ${TASKID}.mlp.scp does not exist" +endif + +# for -J +set OPTJstr = "" +if ($?OPTJXFORM) then + while ($#OPTJXFORM > 0) + set OPTJstr = "$OPTJstr -J $OPTJXFORM[1]" + shift OPTJXFORM + end +endif + +$HNFORWARD -A -D -V -T 1 -C config.dnnbasic -C config.dnn.fwd -H dnn.forward/NMF -S ${TASKID}.scp -N ${TASKID}.mlp.scp /dev/null > dnn.forward/LOG.${TASKID} + + diff --git a/samples/RMHTK/scripts/hbuild b/samples/RMHTK/scripts/hbuild new file mode 100755 index 0000000..dc6c594 --- /dev/null +++ b/samples/RMHTK/scripts/hbuild @@ -0,0 +1,37 @@ +#!/bin/csh -f + +# This shell script calls herest repeatedly to build a sequence +# of model sets, each set in the sequence being 1 single embedded +# reestimation of the previous +# +# usage: hbuild fromN toN +# +# Example - hbuild 2 4 is equivalent to the sequence +# herest HTE hmm1 hmm2 +# herest HTE hmm2 hmm3 +# herest HTE hmm3 hmm4 +# Note that this script must be executed in the directory holding +# hmm1, hmm2 etc. +# +# Copyright (c) Steve Young & Phil Woodland, 1992, 1993 +# Last Updated 14/5/93 +# + +if ( $#argv != 2 ) then + echo "usage: hbuild fromN toN" + exit 1 +endif + +echo "Build started at `date`" > blog +set i=$1 +while ( $i <= $2 ) + @ j = $i - 1 + if ( -d hmm$i ) then + echo "hbuild: trying to overwrite hmm$i" >> blog + exit + endif + echo "Building hmm$i from hmm$j" >> blog + herest HTE hmm$j hmm$i + @ i++ +end +echo "Build finished at `date`" >> blog diff --git a/samples/RMHTK/scripts/hedit b/samples/RMHTK/scripts/hedit new file mode 100755 index 0000000..d867360 --- /dev/null +++ b/samples/RMHTK/scripts/hedit @@ -0,0 +1,60 @@ +#!/bin/csh -f + +# This shell script invokes HHEd to perform a global edit of a set +# of models. It must be executed from within the directory holding +# the hmm directories. +# +# Usage: hedit m n +# +# where m is the index of the source directory and n is the index +# of the target directory. hedit assumes the existence of an edit file +# in the current directory +# +# edfilem.n - containing the required edit commands +# +# Example +# +# cd R3; hedit 14 21 +# +# Edit the models stored in hmm14 and store the new models in +# an MMF in hmm21 using the edit commands stored in edfile14.21 +# +# Copyright (c) Steve Young 1992, 1993 +# Last Updated 19/10/93 +# +source HTE + +if ( $#argv != 2 ) then + echo "hedit m n" + exit 0 +endif + +if ( -d hmm$1 ) then + set src = (-H hmm$1/MODELS) +else + echo "No source dir hmm$1" + exit 1 +endif + +set tgt = (-M hmm$2) + +if ( ! -d hmm$2 ) mkdir hmm$2 + +if ( ! -f $HMMLIST ) then + echo "List of models to edit $HMMLIST does not exist" + exit 1 +endif + +if ( ! -f edfile${1}.${2} ) then + echo "Edit command file edfile${1}.${2} does not exist" + exit 1 +endif + +if ($?HHTRACE) then + set OPT = (-T $HHTRACE) +else + set OPT = (-T 1) +endif + +HHEd -A -C $HECONFIG $OPT $src $tgt edfile${1}.${2} $HMMLIST + diff --git a/samples/RMHTK/scripts/herest b/samples/RMHTK/scripts/herest new file mode 100755 index 0000000..b74c299 --- /dev/null +++ b/samples/RMHTK/scripts/herest @@ -0,0 +1,174 @@ +#!/bin/csh -f + +#---------------------------------------------------------------# +# HTK Unix Shell Script: herest # +# # +# Usage: herest env srcdir tgtdir # +# # +# This shell script provides a high level interface to HERest, # +# the HTK embedded training tool.The various parameters used to # +# control HERest and the definition of the various data sources # +# are defined in an environment file passed to herest as an arg.# +# # +# Env Vars Used: # +# # +# HMMLIST - list of models to use in training # +# TRAINDATALIST - list of all training data files # +# TRAINMLF - master label file for training data (if used) # +# TRAINLABDIR - dir holding training label files # +# # +# HETRACE - trace level # +# HEPRUNE - pruning threshold (indexed) # +# HEMINVAR - minimum variance threshold # +# HEMINWEIGHT - minimum mixture weight # +# HEMINEG - minimum number of examples # +# HEUPD - update flags u,v,m,t (default all) # +# HETMTHRESH - tied mixture prune threshold # +# HEFORCEMACRO- force a macro file to be loaded # +# HESTATS - output a statistics file # +# # +# NICE - nice level to run at # +# # +#---------------------------------------------------------------# +# +# Copyright (c) Steve Young & Phil Woodland, 1992, 1993 +# Last Updated 14/5/93 +# + +# Check Number of Args +if (( $#argv != 3 ) && ( $#argv != 4 )) then + echo "Usage: herest env srcdir tgtdir [inxformdir]" + exit 1 +endif + +# Read the environment file +if ( ! -f $1 ) then + echo "herest: cannot find environment file $1" + exit 1 +endif +source $1 + +# Check Source Exists +set SRC=$2 +if ( -d $SRC ) then + set srcopt = (-H $SRC/MODELS ) +else + echo "herest: source dir $SRC does not exist" + exit 1 +endif + +# Create/Clear Target Directory +set TGT=$3 +if (! -d $TGT ) mkdir $TGT + +set tgtopt = (-M $TGT -K $TGT) +if ($?HEOUTXFORMEXT) then + set tgtopt = ($tgtopt $HEOUTXFORMEXT) +endif + +if ( $#argv == 4 ) then + set INXFDIR=$4 + set srcopt = ( $srcopt -a -J $INXFDIR ) + if ($?HEINXFORMEXT) then + set srcopt = ($srcopt $HEINXFORMEXT) + endif +endif + + +# Define the file to log all output/errors to +set LOG=$TGT/LOG + +# Set Script File and Options +set OPT = ($srcopt $tgtopt -T $HETRACE) + +if ($?HEPAXFORMDIR) then + set OPT = ($OPT -E $HEPAXFORMDIR) + if ($?HEPAXFORMEXT) then + set OPT = ($OPT $HEPAXFORMEXT) + endif +endif +if ( $?HEFORCEXFORMDIR ) then + while ( $#HEFORCEXFORMDIR > 0 ) + set OPT = ($OPT -J $HEFORCEXFORMDIR[1]) + shift HEFORCEXFORMDIR + end +endif +# Always have the source directory as a possible input directory +set OPT = ($OPT -J $SRC) +if ($?HEFORCEMACRO) then + while ( $#HEFORCEMACRO > 0 ) + set OPT = ($OPT -H $HEFORCEMACRO[1]) + shift HEFORCEMACRO + end +endif + +if ($?TRAINMLF) then + set OPT = ( $OPT -I $TRAINMLF ) +endif + +if ($?TRAINLABDIR) then + set OPT = ( $OPT -L $TRAINLABDIR ) +endif + +if ($?HEMINVAR) then + set OPT = ($OPT -v $HEMINVAR) +endif +if ($?HEMINWEIGHT) then + set OPT = ($OPT -w $HEMINWEIGHT) +endif +if ($?HEPRUNE) then + set OPT = ($OPT -t $HEPRUNE) +endif +if ($?HEMINEG) then + set OPT = ($OPT -m $HEMINEG) +endif +if ($?HEUPD) then + set OPT = ($OPT -u $HEUPD) +endif +if ($?HETMTHRESH) then + set OPT = ($OPT -c $HETMTHRESH) +endif +if ($?HEFORCEMACRO) then + set OPT = ($OPT -H $SRC/$HEFORCEMACRO) +endif +if ($?HESTATS) then + set OPT = ($OPT -s $TGT/$HESTATS) +endif +if ($?HEXFORMCONFIG) then + set OPT = ($OPT -C $HEXFORMCONFIG ) +endif + +if ($?NUMLATDIR) then + set OPT = ( $OPT -q $NUMLATDIR ) +endif + +if ($?DENLATDIR) then + set OPT = ( $OPT -r $DENLATDIR ) +endif + +if ( ! $?HEBIN ) then + echo "HEBIN not set: using HERest as default"; + set HEBIN = HERest +endif + +# set processor nice levels + set PR=(nice +$NICE) + +# -------------- Run HERest -----------------------------------# + +echo "${HEBIN} started at `date`" > $LOG +if ($?HESPKRMASK) then + $PR ${HEBIN} -h "$HESPKRMASK" -A -D -V $OPT -C $HECONFIG -S $TRAINDATALIST $HMMLIST >>& $LOG +else + $PR ${HEBIN} -A -D -V $OPT -C $HECONFIG -S $TRAINDATALIST $HMMLIST >>& $LOG +endif +if ( $status != 0 ) then + echo "${HEBIN} terminated abnormally at `date`" >> $LOG +else + echo "${HEBIN} finished at `date`" >> $LOG +endif +exit 0 + +#---------------------------------------------------------------# +# End of Script: herest # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/scripts/htestrm b/samples/RMHTK/scripts/htestrm new file mode 100755 index 0000000..85bf4be --- /dev/null +++ b/samples/RMHTK/scripts/htestrm @@ -0,0 +1,364 @@ +#!/bin/csh -f + +#---------------------------------------------------------------# +# HTK Unix Shell Script: htestrm # +# # +# Usage: htestrm env type set hmmdir # +# # +# htestrm uses the HTK environment settings to recognise the # +# specified set of test files and then compares them with the # +# reference labels using HResults. # +# type is used to select a type of test of conditions from the # +# env file. set selects the test data independently of type. # +# The test results are stored in a directory called # +# test_type_set.k inside the source hmm directory hmmdir # +# where k is the repetition idx. # +# A copy of the env file containing the test parameters is left # +#in the test directory (typically changed for different indexes)# +# The shell variable TESTSET is set equal to set & is used to # +# specify the test data in the HTE file. # +# Others variables in the HTE file are indexed to reflect # +# values with different type the different type in an order # +# given by the HTE variable TYPELIST # +# # +# TYPELIST - name of possible type values # +# SETLIST - list of possible TESTSET & set values # +# TESTDATALIST- list of test files (TESTSET) # +# TESTMLF - MLF for reference labs (if used) (TESTSET) # +# TESTLABDIR - dir holding reference lab files # +# HMMLIST - list of models to use in testing # +# HVTRACE - trace level # +# HVPRUNE - pruning threshold (indexed) # +# HVWEPRUNE - word-end pruning threshold (indexed) # +# HVMAXACTIVE - max number of phone insts active (indexed) # +# HVGSCALE - grammar scale factor (indexed) # +# HVIMPROB - inter-model log probability addition(indexed) # +# HVNET - network definition file (indexed) # +# WORDLIST- list of vocabulary items # +# HRNIST - run HResults in NIST mode # +# NISTSCORE - run the NIST scoring software # +# NICE - nice level to run at # +#---------------------------------------------------------------# +# +# Copyright (c) Phil Woodland & Steve Young, 1992, 1993 +# Last Updated 05/09/15 (cz277@cam.ac.uk) +# + +set ALLARGS = ($*) +set HVITE = HVite +set CHANGED +while ($?CHANGED) + unset CHANGED + if ("$argv[1]" == "-HVITE") then + set CHANGED + shift argv + set HVITECMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LIB") then + set CHANGED + shift argv + set LIBCMD = $argv[1] + shift argv + endif +end + +# Check Number of Args +if (( $#argv != 4) && ( $#argv != 5)) then + echo "Usage: htestrm env tsttype tstset hmmdir [inxformdir]" + exit 1 +endif + +# Read the environment file +if ( ! -f $1 ) then + echo "Cannot find environment file $1" + exit 1 +endif + +set TYPE=$2 + +set SET=$3 +set TESTSET=$SET + +# Load in the environment file +source $1 + +if ($?HVITECMD) then + set HVITE = $HVITECMD +endif +if ($?LIBCMD) then + set LIB = $LIBCMD +endif +if ($?LIB) then + setenv LD_LIBRARY_PATH ${LIB}:${LD_LIBRARY_PATH} +endif + +# Check the type +if (! $?TYPELIST) then + echo "htestrm: TYPELIST not set" + exit +endif +unset INDEX +set count=0 +foreach i ($TYPELIST) + @ count++ + if ($i == $TYPE) then + set INDEX=$count + endif +end +if (! $?INDEX) then + echo "htestrm: $TYPE not in TYPELIST" + exit +endif + +# Check the test set +unset setfound +if (! $?SETLIST) then + echo "htestrm: SETLIST not set" + exit +endif +foreach i ($SETLIST) + if ($i == $SET) then + set setfound + endif +end + +if ( (! $?setfound) && ( $SET != dms0_tst ) ) then + echo "htestrm: $SET not in SETLIST\n"; + exit +endif + +# Check hmmsource Exists +set HMMSOURCE=$4 +if ( ! -d $HMMSOURCE ) then + echo "htestrm: error - hmm directory $HMMSOURCE does not exist" + exit 1 +endif + +# Set test dir +unset TESTDIRSET +set TESTEXTN=1 +while (! $?TESTDIRSET) + if ($?HVALIGN) then + set TESTDIR=$HMMSOURCE/align_"$TYPE"_"$SET"."$TESTEXTN" + else + set TESTDIR=$HMMSOURCE/test_"$TYPE"_"$SET"."$TESTEXTN" + endif + if ( ! -d $TESTDIR ) then + mkdir $TESTDIR + set TESTDIRSET + else + @ TESTEXTN++ + endif +end + +# Define the file to log all output/errors to +set LOG=$TESTDIR/LOG + +# Copy the test HTE file as a record +cp $1 $TESTDIR/HTE + +# Check the equates file and load equates +if ($?HREQSETS) then + set EQFILE="$HREQSETS[$INDEX]" + if ( ! -f $EQFILE ) then + echo "Cannot find HResults equates file $EQFILE" + exit 1 + endif + set EQSETS=`cat $EQFILE` +endif + +# Set HVite Options +set OPT = ( -H $HMMSOURCE/MODELS ) + +if ( $#argv == 5 ) then + set INXFDIR=$5 + set OPT = ( $OPT -k -J $INXFDIR ) + if ($?HVINXFORMEXT) then + set OPT = ($OPT $HVINXFORMEXT) + endif +endif + +if ( $?HVFORCEXFORMDIR ) then + while ( $#HVFORCEXFORMDIR > 0 ) + set OPT = ($OPT -J $HVFORCEXFORMDIR[1]) + shift HVFORCEXFORMDIR + end +endif +# Always have the source directory as a possible input directory +set OPT = ($OPT -J $HMMSOURCE) +if ($?HVFORCEMACRO) then + while ( $#HVFORCEMACRO > 0 ) + set OPT = ($OPT -H $HVFORCEMACRO[1]) + shift HVFORCEMACRO + end +endif + +if ($?HVINCADAPT) then + set OPT = ($OPT -j $HVINCADAPT -K $TESTDIR) + if ($?HVOUTXFORMEXT) then + set OPT = ($OPT $HVOUTXFORMEXT) + endif +else if ($?HVADAPT) then + set OPT = ($OPT -K $TESTDIR) + if ($?HVOUTXFORMEXT) then + set OPT = ($OPT $HVOUTXFORMEXT) + endif +endif + +set HVOPFILE=$TESTDIR/"$TYPE"_"$SET".mlf + +set OPT = ( $OPT -i $HVOPFILE ) +if ($?HVSTATEALIGN) then + set OPT = ( $OPT -X lab ) +else + set OPT = ( $OPT -X rec ) +endif + +if ($?HVTRACE) then + set OPT = ($OPT -T $HVTRACE) +endif + +# add the indexed options + +if ($?HVPRUNE) then + set OPT = ($OPT -t $HVPRUNE[$INDEX]) +endif +if ($?HVWEPRUNE) then + set OPT = ($OPT -v $HVWEPRUNE[$INDEX]) +endif +if ($?HVMAXACTIVE) then + set OPT = ($OPT -u $HVMAXACTIVE[$INDEX]) +endif +if ($?HVGSCALE) then + set OPT = ($OPT -s $HVGSCALE[$INDEX]) +endif +if ($?HVIMPROB) then + set OPT = ($OPT -p $HVIMPROB[$INDEX]) +endif +if ($?HVXFORMCONFIG) then + set OPT = ($OPT -C $HVXFORMCONFIG ) +endif +if ($?HVLABFORMAT) then + set OPT = ($OPT -o $HVLABFORMAT ) +endif +if ($?HVALIGN) then + if ($?HVSTATEALIGN) then + set OPT = ($OPT -f -o PF -b \!SENT_START -a -y lab) + else + set OPT = ($OPT -m -o TPMFW -b \!SENT_START -a -y lab) + endif + if ($?ALIGNMLF) then + set OPT = ( $OPT -I $ALIGNMLF ) + else + echo "Must specify an alignment MLF" + exit 1 + endif +else + set OPT = ($OPT -w $HVNET[$INDEX] ) +endif + +set VOC=$HVVOC[$INDEX] + +# set processor nice levels + set PR=(nice +$NICE) + +# -------------- Run HVite ----------------- + +echo "HVite started at `date`" > $LOG +if ($?HVSPKRMASK) then + $PR $HVITE -h "$HVSPKRMASK" -A -D -V -C $HVCONFIG $OPT -S $TESTDATALIST $VOC $HMMLIST >>& $LOG +else + $PR $HVITE -A -D -V -C $HVCONFIG $OPT -S $TESTDATALIST $VOC $HMMLIST >>& $LOG +endif +if ( $status != 0 ) then + echo "HVite terminated abnormally at `date`" >> $LOG + echo "" >> $LOG + exit $status +else + echo "HVite finished at `date`" >> $LOG + echo "" >> $LOG +endif + +# ------------------------------------------ + +# Now for results analysis +# + +# Set the equates if any +set EQ="" +if ($?EQSETS) then + unset I + foreach x ( $EQSETS ) + if (! $?I) then + set EQ="$EQ -e " + set I + else + unset I + endif + set EQ="$EQ $x" + end +endif + +set OPT="" + +if ($?TESTMLF) then + set OPT=($OPT -I $TESTMLF) +endif + +if ($?TESTLABDIR) then + set OPT=($OPT -L $TESTLABDIR) +endif + +if ($?HRNIST) then + set OPT = ($OPT -n) +endif + +if (! ($?HVALIGN && $?HVSTATEALIGN)) then + echo "Running HResults at `date`" >> $LOG + $PR HResults -A -z ':::' $OPT $EQ $WORDLIST $HVOPFILE >>& $LOG + if ( $status != 0 ) then + echo "HResults terminated abnormally at `date`" >> $LOG + else + echo "HResults finished at `date`" >> $LOG + endif + echo "" >> $LOG +endif + +# ------------------------------------------ + +# Now for NIST scoring if required +# + +if ($?NISTSCORE) then + if ($TYPE != wp && $TYPE != ng) then + echo "Cant Run NIST Scoring with type = $TYPE" >> $LOG + exit 1 + endif + echo "Running HLab2Hyp at `date`" >> $LOG + set HYP="$TYPE"_"$SET" + $PR HLab2Hyp $TESTDIR/"$HYP".hyp $HVOPFILE >>& $LOG + if ( $status != 0 ) then + echo "HLab2Hyp terminated abnormally at `date`" >> $LOG + echo "" >> $LOG + exit $status + else + echo "HLab2Hyp finished at `date`" >> $LOG + echo "" >> $LOG + endif + cd $TESTDIR + if ( $TYPE == wp ) then + wgscore "$HYP".hyp >> LOG + else + ngscore "$HYP".hyp >> LOG + endif + cat "$HYP".hyp.scr/"$HYP".sys >> LOG + echo "" >> LOG + cd ../.. +endif + +echo "htestrm finished at `date`" >> $LOG + +#---------------------------------------------------------------# +# End of Script: htestrm # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/scripts/latgen b/samples/RMHTK/scripts/latgen new file mode 100755 index 0000000..980df48 --- /dev/null +++ b/samples/RMHTK/scripts/latgen @@ -0,0 +1,223 @@ +#!/bin/tcsh -f +# set verbose + +# Check Number of Args +if ( $#argv != 3 ) then + echo "Usage: $0 env hmmdir tgtdir"; + exit 1; +endif + +# Read the environment file +if ( ! -f $1 ) then + echo "$0: cannot find environment file $1"; + exit 1; +endif + +source $1; + +if ( ! -d $2 || ! -f $2/MODELS ) then + echo "$0: hmm model $2 does not exist"; + exit 1; +endif + +# Create/Clear Target Directory +set tgt = $3; + +# Check settings +if ( ! $?rmlib ) then +echo rmlib not set; exit 1; +endif +if ( ! $?HLMCONFIG ) then +echo HLMCONFIG not set; exit 1; +endif +if ( ! $?HDCONFIG ) then +echo HDCONFIG not set; exit 1; +endif +if ( ! $?HDMODCONFIG ) then +echo HDMODCONFIG not set; exit 1; +endif +if ( ! $?HLRCONFIG ) then +echo HLRCONFIG not set; exit 1; +endif +if ( ! $?TRAINDATALIST ) then +echo TRAINDATALIST not set; exit 1; +endif +if ( ! $?TRAINMLF ) then +echo TRAINMLF not set; exit 1; +endif +if ( ! $?HDVOCAB ) then +echo HDVOCAB not set; exit 1; +endif +if ( ! $?HLMORDER ) then +echo HLMORDER not set; exit 1; +endif +if ( ! $?HLMNNEWWORD ) then +echo HLMNNEWWORD not set; exit 1; +endif +if ( ! $?HLMBUFSIZE ) then +echo HLMBUFSIZE not set; exit 1; +endif +if ( ! $?HLMUGFLR ) then +echo HLMUGFLR not set; exit 1; +endif +if ( ! $?HLMNGRAMCUTOFF ) then +echo HLMNGRAMCUTOFF not set; exit 1; +endif +if ( ! $?HLMDISCOUNT ) then +echo HLMDISCOUNT not set; exit 1; +endif +if ( ! $?HDGENBEAM ) then +echo HDGENBEAM not set; exit 1; +endif +if ( ! $?HDGSCALE ) then +echo HDGSCALE not set; exit 1; +endif +if ( ! $?HDIMPROB ) then +echo HDIMPROB not set; exit 1; +endif +if ( ! $?HDTOKENS ) then +echo HDTOKENS not set; exit 1; +endif +if ( ! $?HLRGSCALE ) then +echo HLRGSCALE not set; exit 1; +endif +if ( ! $?HLRIMPROB ) then +echo HLRIMPROB not set; exit 1; +endif +if ( ! $?HLRMRGDIR ) then +echo HLRMRGDIR not set; exit 1; +endif +if ( ! $?HLRGENBEAM ) then +echo HLRGENBEAM not set; exit 1; +endif + +set data = ( `basename ${TRAINMLF} | awk -F\. '{print $1}'` ); + +# Building LM +mkdir -p $tgt/lib/lms; +cd $tgt/lib/lms; + +echo ""; +echo "Building Back-off Bi-gram LM from:"; +echo ""; +echo " Text Input: ${TRAINMLF}"; +echo " Vocabulary: ${HDVOCAB}"; +echo ""; + +cat ${HDVOCAB} | awk '{print $1}' | sort -u > rm.wlist; +echo \!\!UNK > rm.wlist+ukn; +cat ${HDVOCAB} | awk '{print $1}' | sort -u >> rm.wlist+ukn; +gzip -f rm.wlist*; + +cat ${TRAINMLF} | egrep -v \# | awk '{if ($0 != "\.") printf("%s ", $0); else print $0;}' | awk '{printf("\!SENT_START "); for(i=2;i<=NF-1;i++){ printf ("%s ", $i);} printf("\!SENT_END\n"); }' > ${data}.dat; +gzip -f ${data}.dat; + +cat > empty.wmap << END +Name = rm +SeqNo = 0 +Entries = 0 +EscMode = RAW +Fields = ID,WFC +\Words\ +END + +gzip -f empty.wmap; + +mkdir -p db_2-gram.${data}; + +set LGPOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE} -n ${HLMORDER} ); +LGPrep ${LGPOPTS} -d db_2-gram.${data} empty.wmap ${data}.dat >& LOG; + +set LGCOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE} ); +LGCopy ${LGCOPTS} -o -m db_2-gram.${data}/wmap.new -d db_2-gram.${data} -w rm.wlist db_2-gram.${data}/wmap db_2-gram.${data}/gram.0.gz >> LOG; + +set LBOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -u ${HLMUGFLR} -k ${HLMDISCOUNT} -c ${HLMNGRAMCUTOFF} -n ${HLMORDER} ); +LBuild ${LBOPTS} db_2-gram.${data}/wmap.new bg.${data} db_2-gram.${data}/gram.0.gz >> LOG; + +echo "Number of N-grams trained:" +echo `gunzip -c bg.${data}.gz | head -10 | egrep ngram`; +echo ""; + +bzip2 -f LOG; +cd ../../; + +# Prepare scp file lists +mkdir -p lib/flists; +cd lib/flists; + +echo "Preparing scp file lists in lib/flists ..."; + +ln -s ${TRAINDATALIST}; +cat ${data}.scp | awk -F\/ '{print $(NF-1)}' | sort -u > spkr.list; + +foreach i ( `cat spkr.list` ) + egrep ${i} ${data}.scp > ${i}.scp; + egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.mfc:.lab:g' > ${i}.labscp; + egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.mfc:.lat:g' > ${i}.latscp; +end + +cd ../../; + +# Generate lattices + +echo ""; +echo "Starting lattice generation from:"; +echo ""; +echo " Data Setup: ${TRAINDATALIST}"; +echo " Word Label: ${TRAINMLF}"; +echo " HMM Set: ${2}/MODELS"; +echo " HMM List: ${HMMLIST}"; +echo " Vocabulary: ${HDVOCAB}"; +echo " N-gram LM: lib/lms/bg.${data}"; +echo ""; + +ln -s ../hmm0 + +mkdir -p numnets dennets; +mkdir -p lattices/num lattices/den; + +set HLROPTS = ( -A -D -V -T ${HLRTRACE} -q tvalr -C ${HLRCONFIG} -w -s ${HLRGSCALE} -p ${HLRIMPROB} ) +set HDOPTS = ( -A -D -V -T ${HDTRACE} -t ${HDGENBEAM} -s ${HDGSCALE} -p ${HDIMPROB} -n ${HDTOKENS} -C ${HDCONFIG} ) + +foreach i ( `cat lib/flists/spkr.list` ) + + echo Processing speaker ${i} with `cat lib/flists/${i}.scp | wc -l | awk '{print $1}'` utterances:; + echo ""; + + mkdir -p numnets/${i}; + HLRescore ${HLROPTS} -n lib/lms/bg.${data} -I ${TRAINMLF} -f -i numnets/${i}/bg.${i}.mlf -l numnets/${i}/ -S lib/flists/${i}.labscp ${HDVOCAB} >& numnets/${i}/LOG; + bzip2 -f numnets/${i}/LOG; + + mkdir -p lattices/num/${i}; + HDecode.mod ${HDOPTS} -C ${HDMODCONFIG} -i lattices/num/${i}/num.${i}.mlf -H ${2}/MODELS -d ${2} -q tvaldm -o M -z lat -w -L numnets/${i}/ -l lattices/num/${i}/ -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& lattices/num/${i}/LOG; + bzip2 -f lattices/num/${i}/LOG; + + echo `ls lattices/num/${i} | egrep lat.gz | wc -l | awk '{print $1}'` numerator lattices generated for speaker ${i} ...; + echo ""; + + mkdir -p dennets/${i}/bg; + HDecode ${HDOPTS} -i dennets/${i}/bg.${i}.mlf -H ${2}/MODELS -d ${2} -o M -z lat -w lib/lms/bg.${data} -l dennets/${i}/bg -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& dennets/${i}/LOG; + bzip2 -f dennets/${i}/LOG; + + HLRescore ${HLROPTS} -t ${HLRGENBEAM} -m ${HLRMRGDIR} -L dennets/${i}/bg -l dennets/${i} -S lib/flists/${i}.latscp ${HDVOCAB} >& dennets/${i}/hlr.LOG; + bzip2 -f dennets/${i}/hlr.LOG; + + mkdir -p lattices/den/${i}; + HDecode.mod ${HDOPTS} -C ${HDMODCONFIG} -i lattices/den/${i}/den.${i}.mlf -H ${2}/MODELS -d ${2} -q tvaldm -o M -z lat -w -L dennets/${i}/ -l lattices/den/${i}/ -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& lattices/den/${i}/LOG; + bzip2 -f lattices/den/${i}/LOG; + + echo `ls lattices/den/${i} | egrep lat.gz | wc -l | awk '{print $1}'` denominator lattices generated for speaker ${i} ..; + echo ""; +end + +find lattices/num/ -name '*.lat.gz' | awk -F\/ '{print $NF}' | sed 's:.lat.gz::g' | sort -u > tmp.num; +find lattices/den/ -name '*.lat.gz' | awk -F\/ '{print $NF}' | sed 's:.lat.gz::g' | sort -u > tmp.den; +join tmp.num tmp.den > tmp.all; +fgrep -f tmp.all ${TRAINDATALIST} | awk -F\/ '{printf("%s=%s\n", $NF, $0);}' > ${rmlib}/flists/${data}.lat.scp; +rm -fr tmp.num tmp.den tmp.all; + +echo ""; +echo Phone lattices generated for `cat ${rmlib}/flists/${data}.lat.scp | wc -l | awk '{print $1}'` out of `cat ${rmlib}/flists/${data}.scp | wc -l | awk '{print $1}'` utterances in $PWD/lattices/ ...; +echo ""; +echo "New scp file for discriminative training saved to ${rmlib}/flists/${data}.lat.scp"; +echo ""; diff --git a/samples/RMHTK/scripts/latgen-align b/samples/RMHTK/scripts/latgen-align new file mode 100755 index 0000000..72f716f --- /dev/null +++ b/samples/RMHTK/scripts/latgen-align @@ -0,0 +1,138 @@ +#!/bin/tcsh -f +# set verbose + +# Check Number of Args +if ( $#argv != 3 ) then + echo "Usage: $0 env hmmdir tgtdir"; + exit 1; +endif + +# Read the environment file +if ( ! -f $1 ) then + echo "$0: cannot find environment file $1"; + exit 1; +endif + +source $1; + +if ( ! -d $2 || ! -f $2/MODELS ) then + echo "$0: hmm model $2 does not exist"; + exit 1; +endif + +# Create/Clear Target Directory +set tgt = $3; + +# Check settings +if ( ! $?rmlib ) then +echo rmlib not set; exit 1; +endif +if ( ! $?HLMCONFIG ) then +echo HLMCONFIG not set; exit 1; +endif +if ( ! $?HDCONFIG ) then +echo HDCONFIG not set; exit 1; +endif +if ( ! $?HDMODCONFIG ) then +echo HDMODCONFIG not set; exit 1; +endif +if ( ! $?HLRCONFIG ) then +echo HLRCONFIG not set; exit 1; +endif +if ( ! $?TRAINDATALIST ) then +echo TRAINDATALIST not set; exit 1; +endif +if ( ! $?TRAINMLF ) then +echo TRAINMLF not set; exit 1; +endif +if ( ! $?HDVOCAB ) then +echo HDVOCAB not set; exit 1; +endif +if ( ! $?HLMORDER ) then +echo HLMORDER not set; exit 1; +endif +if ( ! $?HLMNNEWWORD ) then +echo HLMNNEWWORD not set; exit 1; +endif +if ( ! $?HLMBUFSIZE ) then +echo HLMBUFSIZE not set; exit 1; +endif +if ( ! $?HLMUGFLR ) then +echo HLMUGFLR not set; exit 1; +endif +if ( ! $?HLMNGRAMCUTOFF ) then +echo HLMNGRAMCUTOFF not set; exit 1; +endif +if ( ! $?HLMDISCOUNT ) then +echo HLMDISCOUNT not set; exit 1; +endif +if ( ! $?HDGENBEAM ) then +echo HDGENBEAM not set; exit 1; +endif +if ( ! $?HDGSCALE ) then +echo HDGSCALE not set; exit 1; +endif +if ( ! $?HDIMPROB ) then +echo HDIMPROB not set; exit 1; +endif +if ( ! $?HDTOKENS ) then +echo HDTOKENS not set; exit 1; +endif +if ( ! $?HLRGSCALE ) then +echo HLRGSCALE not set; exit 1; +endif +if ( ! $?HLRIMPROB ) then +echo HLRIMPROB not set; exit 1; +endif +if ( ! $?HLRMRGDIR ) then +echo HLRMRGDIR not set; exit 1; +endif +if ( ! $?HLRGENBEAM ) then +echo HLRGENBEAM not set; exit 1; +endif + +cd $tgt; + +set data = ( `basename ${TRAINMLF} | awk -F\. '{print $1}'` ); + +mkdir -p numnets dennets; +mkdir -p lattices/num lattices/den; + +set HLROPTS = ( -A -D -V -T ${HLRTRACE} -q tvalr -C ${HLRCONFIG} -w -s ${HLRGSCALE} -p ${HLRIMPROB} ) +set HDOPTS = ( -A -D -V -T ${HDTRACE} -t ${HDGENBEAM} -s ${HDGSCALE} -p ${HDIMPROB} -n ${HDTOKENS} -C ${HDCONFIG} ) + +foreach i ( `cat lib/flists/spkr.list` ) + + echo Processing speaker ${i} with `cat lib/flists/${i}.scp | wc -l | awk '{print $1}'` utterances:; + echo ""; + + mkdir -p numnets/${i}; + HLRescore ${HLROPTS} -n lib/lms/bg.${data} -I ${TRAINMLF} -f -i numnets/${i}/bg.${i}.mlf -l numnets/${i}/ -S lib/flists/${i}.labscp ${HDVOCAB} >& numnets/${i}/LOG; + bzip2 -f numnets/${i}/LOG; + + mkdir -p lattices/num/${i}; + HDecode.mod ${HDOPTS} -C ${HDMODCONFIG} -i lattices/num/${i}/num.${i}.mlf -H ${2}/MODELS -d ${2} -q tvaldm -o M -z lat -w -L numnets/${i}/ -l lattices/num/${i}/ -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& lattices/num/${i}/LOG; + bzip2 -f lattices/num/${i}/LOG; + + echo `ls lattices/num/${i} | egrep lat.gz | wc -l | awk '{print $1}'` numerator lattices generated for speaker ${i} ...; + echo ""; + + mkdir -p lattices/den/${i}; + HDecode.mod ${HDOPTS} -C ${HDMODCONFIG} -i lattices/den/${i}/den.${i}.mlf -H ${2}/MODELS -d ${2} -q tvaldm -o M -z lat -w -L dennets/${i}/ -l lattices/den/${i}/ -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& lattices/den/${i}/LOG; + bzip2 -f lattices/den/${i}/LOG; + + echo `ls lattices/den/${i} | egrep lat.gz | wc -l | awk '{print $1}'` denominator lattices generated for speaker ${i} ..; + echo ""; +end + +find lattices/num/ -name '*.lat.gz' | awk -F\/ '{print $NF}' | sed 's:.lat.gz::g' | sort -u > tmp.num; +find lattices/den/ -name '*.lat.gz' | awk -F\/ '{print $NF}' | sed 's:.lat.gz::g' | sort -u > tmp.den; +join tmp.num tmp.den > tmp.all; +fgrep -f tmp.all ${TRAINDATALIST} | awk -F\/ '{printf("%s=%s\n", $NF, $0);}' > ${rmlib}/flists/${data}.lat.scp; +rm -fr tmp.num tmp.den tmp.all; + +echo ""; +echo Phone lattices generated for `cat ${rmlib}/flists/${data}.lat.scp | wc -l | awk '{print $1}'` out of `cat ${rmlib}/flists/${data}.scp | wc -l | awk '{print $1}'` utterances in $PWD/lattices/ ...; +echo ""; +echo "New scp file for discriminative training saved to ${rmlib}/flists/${data}.lat.scp"; +echo ""; diff --git a/samples/RMHTK/scripts/latgen-decode b/samples/RMHTK/scripts/latgen-decode new file mode 100755 index 0000000..b08a153 --- /dev/null +++ b/samples/RMHTK/scripts/latgen-decode @@ -0,0 +1,148 @@ +#!/bin/tcsh -f +# set verbose + +# Check Number of Args +if ( $#argv != 3 ) then + echo "Usage: $0 env hmmdir tgtdir"; + exit 1; +endif + +# Read the environment file +if ( ! -f $1 ) then + echo "$0: cannot find environment file $1"; + exit 1; +endif + +source $1; + +if ( ! -d $2 || ! -f $2/MODELS ) then + echo "$0: hmm model $2 does not exist"; + exit 1; +endif + +# Create/Clear Target Directory +set tgt = $3; + +# Check settings +if ( ! $?rmlib ) then +echo rmlib not set; exit 1; +endif +if ( ! $?HLMCONFIG ) then +echo HLMCONFIG not set; exit 1; +endif +if ( ! $?HDCONFIG ) then +echo HDCONFIG not set; exit 1; +endif +if ( ! $?HDMODCONFIG ) then +echo HDMODCONFIG not set; exit 1; +endif +if ( ! $?HLRCONFIG ) then +echo HLRCONFIG not set; exit 1; +endif +if ( ! $?TRAINDATALIST ) then +echo TRAINDATALIST not set; exit 1; +endif +if ( ! $?TRAINMLF ) then +echo TRAINMLF not set; exit 1; +endif +if ( ! $?HDVOCAB ) then +echo HDVOCAB not set; exit 1; +endif +if ( ! $?HLMORDER ) then +echo HLMORDER not set; exit 1; +endif +if ( ! $?HLMNNEWWORD ) then +echo HLMNNEWWORD not set; exit 1; +endif +if ( ! $?HLMBUFSIZE ) then +echo HLMBUFSIZE not set; exit 1; +endif +if ( ! $?HLMUGFLR ) then +echo HLMUGFLR not set; exit 1; +endif +if ( ! $?HLMNGRAMCUTOFF ) then +echo HLMNGRAMCUTOFF not set; exit 1; +endif +if ( ! $?HLMDISCOUNT ) then +echo HLMDISCOUNT not set; exit 1; +endif +if ( ! $?HDGENBEAM ) then +echo HDGENBEAM not set; exit 1; +endif +if ( ! $?HDGSCALE ) then +echo HDGSCALE not set; exit 1; +endif +if ( ! $?HDIMPROB ) then +echo HDIMPROB not set; exit 1; +endif +if ( ! $?HDTOKENS ) then +echo HDTOKENS not set; exit 1; +endif +if ( ! $?HLRGSCALE ) then +echo HLRGSCALE not set; exit 1; +endif +if ( ! $?HLRIMPROB ) then +echo HLRIMPROB not set; exit 1; +endif +if ( ! $?HLRMRGDIR ) then +echo HLRMRGDIR not set; exit 1; +endif +if ( ! $?HLRGENBEAM ) then +echo HLRGENBEAM not set; exit 1; +endif + +cd $tgt; + +set data = ( `basename ${TRAINMLF} | awk -F\. '{print $1}'` ); + +# Prepare scp file lists +mkdir -p lib/flists; +cd lib/flists; + +echo "Preparing scp file lists in lib/flists ..."; + +ln -s ${TRAINDATALIST}; +cat ${data}.scp | awk -F\/ '{print $(NF-1)}' | sort -u > spkr.list; + +foreach i ( `cat spkr.list` ) + egrep ${i} ${data}.scp > ${i}.scp; + egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.mfc:.lab:g' > ${i}.labscp; + egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.mfc:.lat:g' > ${i}.latscp; +end + +cd ../../; + +# Generate lattices + +echo ""; +echo "Starting lattice generation from:"; +echo ""; +echo " Data Setup: ${TRAINDATALIST}"; +echo " Word Label: ${TRAINMLF}"; +echo " HMM Set: ${2}/MODELS"; +echo " HMM List: ${HMMLIST}"; +echo " Vocabulary: ${HDVOCAB}"; +echo " N-gram LM: lib/lms/bg.${data}"; +echo ""; + +ln -s ../hmm0 + +mkdir -p numnets dennets; +mkdir -p lattices/num lattices/den; + +set HLROPTS = ( -A -D -V -T ${HLRTRACE} -q tvalr -C ${HLRCONFIG} -w -s ${HLRGSCALE} -p ${HLRIMPROB} ) +set HDOPTS = ( -A -D -V -T ${HDTRACE} -t ${HDGENBEAM} -s ${HDGSCALE} -p ${HDIMPROB} -n ${HDTOKENS} -C ${HDCONFIG} ) + +foreach i ( `cat lib/flists/spkr.list` ) + + echo Processing speaker ${i} with `cat lib/flists/${i}.scp | wc -l | awk '{print $1}'` utterances:; + echo ""; + + mkdir -p dennets/${i}/bg; + HDecode ${HDOPTS} -i dennets/${i}/bg.${i}.mlf -H ${2}/MODELS -d ${2} -o M -z lat -w lib/lms/bg.${data} -l dennets/${i}/bg -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& dennets/${i}/LOG; + bzip2 -f dennets/${i}/LOG; + + HLRescore ${HLROPTS} -t ${HLRGENBEAM} -m ${HLRMRGDIR} -L dennets/${i}/bg -l dennets/${i} -S lib/flists/${i}.latscp ${HDVOCAB} >& dennets/${i}/hlr.LOG; + bzip2 -f dennets/${i}/hlr.LOG; + +end diff --git a/samples/RMHTK/scripts/latgen-dnn b/samples/RMHTK/scripts/latgen-dnn new file mode 100755 index 0000000..64acefc --- /dev/null +++ b/samples/RMHTK/scripts/latgen-dnn @@ -0,0 +1,293 @@ +#!/bin/tcsh -f +# set verbose + +set ALLARGS = ($*) +set HDECODE = HDecode +set HDECODEMOD = HDecode.mod +set FEAEXT = 'mfc' +set CHANGED +while ($?CHANGED) + unset CHANGED + if ("$argv[1]" == "-HDECODE") then + set CHANGED + shift argv + set HDECODECMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-HDECODEMOD") then + set CHANGED + shift argv + set HDECODEMODCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LIB") then + set CHANGED + shift argv + set LIBCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-FEAEXT") then + set CHANGED + shift argv + set FEAEXT = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LATSCP") then + set CHANGED + shift argv + set LATSCP = $argv[1] + shift argv + endif +end + +# Check Number of Args +if ( $#argv != 3 ) then + echo "Usage: $0 env hmmdir tgtdir"; + exit 1; +endif + +# Read the environment file +if ( ! -f $1 ) then + echo "$0: cannot find environment file $1"; + exit 1; +endif + +source $1; + +if ($?HDECODECMD) then + set HDECODE = $HDECODECMD +endif +if ($?HDECODEMODCMD) then + set HDECODEMOD = $HDECODEMODCMD +endif +if ($?LIBCMD) then + set LIB = $LIBCMD +endif +if ($?LIB) then + setenv LD_LIBRARY_PATH ${LIB}:${LD_LIBRARY_PATH} +endif + +if ( ! -d $2 || ! -f $2/MODELS ) then + echo "$0: hmm model $2 does not exist"; + exit 1; +endif + +# Create/Clear Target Directory +set tgt = $3; + +# Check settings +if ( ! $?rmlib ) then +echo rmlib not set; exit 1; +endif +if ( ! $?HLMCONFIG ) then +echo HLMCONFIG not set; exit 1; +endif +if ( ! $?HDCONFIG ) then +echo HDCONFIG not set; exit 1; +endif +if ( ! $?HDMODCONFIG ) then +echo HDMODCONFIG not set; exit 1; +endif +if ( ! $?HLRCONFIG ) then +echo HLRCONFIG not set; exit 1; +endif +if ( ! $?TRAINDATALIST ) then +echo TRAINDATALIST not set; exit 1; +endif +if ( ! $?TRAINMLF ) then +echo TRAINMLF not set; exit 1; +endif +if ( ! $?HDVOCAB ) then +echo HDVOCAB not set; exit 1; +endif +if ( ! $?HLMORDER ) then +echo HLMORDER not set; exit 1; +endif +if ( ! $?HLMNNEWWORD ) then +echo HLMNNEWWORD not set; exit 1; +endif +if ( ! $?HLMBUFSIZE ) then +echo HLMBUFSIZE not set; exit 1; +endif +if ( ! $?HLMUGFLR ) then +echo HLMUGFLR not set; exit 1; +endif +if ( ! $?HLMNGRAMCUTOFF ) then +echo HLMNGRAMCUTOFF not set; exit 1; +endif +if ( ! $?HLMDISCOUNT ) then +echo HLMDISCOUNT not set; exit 1; +endif +if ( ! $?HDGENBEAM ) then +echo HDGENBEAM not set; exit 1; +endif +if ( ! $?HDGSCALE ) then +echo HDGSCALE not set; exit 1; +endif +if ( ! $?HDIMPROB ) then +echo HDIMPROB not set; exit 1; +endif +if ( ! $?HDTOKENS ) then +echo HDTOKENS not set; exit 1; +endif +if ( ! $?HLRGSCALE ) then +echo HLRGSCALE not set; exit 1; +endif +if ( ! $?HLRIMPROB ) then +echo HLRIMPROB not set; exit 1; +endif +if ( ! $?HLRMRGDIR ) then +echo HLRMRGDIR not set; exit 1; +endif +if ( ! $?HLRGENBEAM ) then +echo HLRGENBEAM not set; exit 1; +endif + +set data = ( `basename ${TRAINMLF} | awk -F\. '{print $1}'` ); + +# Building LM +mkdir -p $tgt/lib/lms; +cd $tgt/lib/lms; + +echo ""; +echo "Building Back-off Bi-gram LM from:"; +echo ""; +echo " Text Input: ${TRAINMLF}"; +echo " Vocabulary: ${HDVOCAB}"; +echo ""; + +cat ${HDVOCAB} | awk '{print $1}' | sort -u > rm.wlist; +echo \!\!UNK > rm.wlist+ukn; +cat ${HDVOCAB} | awk '{print $1}' | sort -u >> rm.wlist+ukn; +gzip -f rm.wlist*; + +cat ${TRAINMLF} | egrep -v \# | awk '{if ($0 != "\.") printf("%s ", $0); else print $0;}' | awk '{printf("\!SENT_START "); for(i=2;i<=NF-1;i++){ printf ("%s ", $i);} printf("\!SENT_END\n"); }' > ${data}.dat; +gzip -f ${data}.dat; + +cat > empty.wmap << END +Name = rm +SeqNo = 0 +Entries = 0 +EscMode = RAW +Fields = ID,WFC +\Words\ +END + +gzip -f empty.wmap; + +mkdir -p db_2-gram.${data}; + +set LGPOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE} -n ${HLMORDER} ); +LGPrep ${LGPOPTS} -d db_2-gram.${data} empty.wmap ${data}.dat >& LOG; + +set LGCOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE} ); +LGCopy ${LGCOPTS} -o -m db_2-gram.${data}/wmap.new -d db_2-gram.${data} -w rm.wlist db_2-gram.${data}/wmap db_2-gram.${data}/gram.0.gz >> LOG; + +set LBOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -u ${HLMUGFLR} -k ${HLMDISCOUNT} -c ${HLMNGRAMCUTOFF} -n ${HLMORDER} ); +LBuild ${LBOPTS} db_2-gram.${data}/wmap.new bg.${data} db_2-gram.${data}/gram.0.gz >> LOG; + +echo "Number of N-grams trained:" +echo `gunzip -c bg.${data}.gz | head -10 | egrep ngram`; +echo ""; + +bzip2 -f LOG; +cd ../../; + +# Prepare scp file lists +mkdir -p lib/flists; +cd lib/flists; + +echo "Preparing scp file lists in lib/flists ..."; + +ln -s ${TRAINDATALIST}; +#cat ${data}.scp | awk -F\/ '{print $(NF-1)}' | sort -u > spkr.list; +cat ind_trn109.scp | awk -F\/ '{print substr($(NF),0,6)}' | sort -u > spkr.list; + +foreach i ( `cat spkr.list` ) + egrep ${i} ${data}.scp > ${i}.scp; + #egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.mfc:.lab:g' > ${i}.labscp; + egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.${FEAEXT}:.lab:g' > ${i}.labscp; + #egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.mfc:.lat:g' > ${i}.latscp; + egrep ${i} ${data}.scp | awk -F\/ '{printf("*/%s\n", $NF);}' | sed 's:.${FEAEXT}:.lat:g' > ${i}.latscp; +end + +cd ../../; + +# Generate lattices + +echo ""; +echo "Starting lattice generation from:"; +echo ""; +echo " Data Setup: ${TRAINDATALIST}"; +echo " Word Label: ${TRAINMLF}"; +echo " HMM Set: ${2}/MODELS"; +echo " HMM List: ${HMMLIST}"; +echo " Vocabulary: ${HDVOCAB}"; +echo " N-gram LM: lib/lms/bg.${data}"; +echo ""; + +ln -s ../hmm0 + +mkdir -p numnets dennets; +mkdir -p lattices/num lattices/den; + +set HLROPTS = ( -A -D -V -T ${HLRTRACE} -q tvalr -C ${HLRCONFIG} -w -s ${HLRGSCALE} -p ${HLRIMPROB} ) +set HDOPTS = ( -A -D -V -T ${HDTRACE} -t ${HDGENBEAM} -s ${HDGSCALE} -p ${HDIMPROB} -n ${HDTOKENS} -C ${HDCONFIG} ) + +set OPTJStr +if ( $?HVFORCEXFORMDIR ) then + while ( $#HVFORCEXFORMDIR > 0 ) + set OPTJStr = ($OPTJStr -J $HVFORCEXFORMDIR[1]) + shift HVFORCEXFORMDIR + end +endif + +foreach i ( `cat lib/flists/spkr.list` ) + + echo Processing speaker ${i} with `cat lib/flists/${i}.scp | wc -l | awk '{print $1}'` utterances:; + echo ""; + + mkdir -p numnets/${i}; + HLRescore ${HLROPTS} -n lib/lms/bg.${data} -I ${TRAINMLF} -f -i numnets/${i}/bg.${i}.mlf -l numnets/${i}/ -S lib/flists/${i}.labscp ${HDVOCAB} >& numnets/${i}/LOG; + bzip2 -f numnets/${i}/LOG; + + mkdir -p lattices/num/${i}; + $HDECODEMOD ${HDOPTS} -C ${HDMODCONFIG} -i lattices/num/${i}/num.${i}.mlf -H ${2}/MODELS $OPTJStr -d ${2} -q tvaldm -o M -z lat -w -L numnets/${i}/ -l lattices/num/${i}/ -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& lattices/num/${i}/LOG; + bzip2 -f lattices/num/${i}/LOG; + + echo `ls lattices/num/${i} | egrep lat.gz | wc -l | awk '{print $1}'` numerator lattices generated for speaker ${i} ...; + echo ""; + + mkdir -p dennets/${i}/bg; + $HDECODE ${HDOPTS} -i dennets/${i}/bg.${i}.mlf -H ${2}/MODELS $OPTJStr -d ${2} -o M -z lat -w lib/lms/bg.${data} -l dennets/${i}/bg -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& dennets/${i}/LOG; + bzip2 -f dennets/${i}/LOG; + + HLRescore ${HLROPTS} -t ${HLRGENBEAM} -m ${HLRMRGDIR} -L dennets/${i}/bg -l dennets/${i} -S lib/flists/${i}.latscp ${HDVOCAB} >& dennets/${i}/hlr.LOG; + bzip2 -f dennets/${i}/hlr.LOG; + + mkdir -p lattices/den/${i}; + $HDECODEMOD ${HDOPTS} -C ${HDMODCONFIG} -i lattices/den/${i}/den.${i}.mlf -H ${2}/MODELS $OPTJStr -d ${2} -q tvaldm -o M -z lat -w -L dennets/${i}/ -l lattices/den/${i}/ -X lat -S lib/flists/${i}.scp ${HDVOCAB} ${HMMLIST} >& lattices/den/${i}/LOG; + bzip2 -f lattices/den/${i}/LOG; + + echo `ls lattices/den/${i} | egrep lat.gz | wc -l | awk '{print $1}'` denominator lattices generated for speaker ${i} ..; + echo ""; +end + +if (! $?LATSCP) then + set LATSCP = ${rmlib}/flists/${data}.lat.scp; +endif + +find lattices/num/ -name '*.lat.gz' | awk -F\/ '{print $NF}' | sed 's:.lat.gz::g' | sort -u > tmp.num; +find lattices/den/ -name '*.lat.gz' | awk -F\/ '{print $NF}' | sed 's:.lat.gz::g' | sort -u > tmp.den; +join tmp.num tmp.den > tmp.all; +#fgrep -f tmp.all ${TRAINDATALIST} | awk -F\/ '{printf("%s=%s\n", $NF, $0);}' > ${rmlib}/flists/${data}.lat.scp; +fgrep -f tmp.all ${TRAINDATALIST} | awk -F\/ '{printf("%s=%s\n", $NF, $0);}' > $LATSCP +rm -fr tmp.num tmp.den tmp.all; + +echo ""; +#echo Phone lattices generated for `cat ${rmlib}/flists/${data}.lat.scp | wc -l | awk '{print $1}'` out of `cat ${rmlib}/flists/${data}.scp | wc -l | awk '{print $1}'` utterances in $PWD/lattices/ ...; +echo Phone lattices generated for `cat $LATSCP | wc -l | awk '{print $1}'` out of `cat ${rmlib}/flists/${data}.scp | wc -l | awk '{print $1}'` utterances in $PWD/lattices/ ...; +echo ""; +#echo "New scp file for discriminative training saved to ${rmlib}/flists/${data}.lat.scp"; +echo "New scp file for discriminative training saved to ${LATSCP}"; +echo ""; diff --git a/samples/RMHTK/scripts/latgen-makelm b/samples/RMHTK/scripts/latgen-makelm new file mode 100755 index 0000000..bd744b7 --- /dev/null +++ b/samples/RMHTK/scripts/latgen-makelm @@ -0,0 +1,143 @@ +#!/bin/tcsh -f +# set verbose + +# Check Number of Args +if ( $#argv != 3 ) then + echo "Usage: $0 env hmmdir tgtdir"; + exit 1; +endif + +# Read the environment file +if ( ! -f $1 ) then + echo "$0: cannot find environment file $1"; + exit 1; +endif + +source $1; + +if ( ! -d $2 || ! -f $2/MODELS ) then + echo "$0: hmm model $2 does not exist"; + exit 1; +endif + +# Create/Clear Target Directory +set tgt = $3; + +# Check settings +if ( ! $?rmlib ) then +echo rmlib not set; exit 1; +endif +if ( ! $?HLMCONFIG ) then +echo HLMCONFIG not set; exit 1; +endif +if ( ! $?HDCONFIG ) then +echo HDCONFIG not set; exit 1; +endif +if ( ! $?HDMODCONFIG ) then +echo HDMODCONFIG not set; exit 1; +endif +if ( ! $?HLRCONFIG ) then +echo HLRCONFIG not set; exit 1; +endif +if ( ! $?TRAINDATALIST ) then +echo TRAINDATALIST not set; exit 1; +endif +if ( ! $?TRAINMLF ) then +echo TRAINMLF not set; exit 1; +endif +if ( ! $?HDVOCAB ) then +echo HDVOCAB not set; exit 1; +endif +if ( ! $?HLMORDER ) then +echo HLMORDER not set; exit 1; +endif +if ( ! $?HLMNNEWWORD ) then +echo HLMNNEWWORD not set; exit 1; +endif +if ( ! $?HLMBUFSIZE ) then +echo HLMBUFSIZE not set; exit 1; +endif +if ( ! $?HLMUGFLR ) then +echo HLMUGFLR not set; exit 1; +endif +if ( ! $?HLMNGRAMCUTOFF ) then +echo HLMNGRAMCUTOFF not set; exit 1; +endif +if ( ! $?HLMDISCOUNT ) then +echo HLMDISCOUNT not set; exit 1; +endif +if ( ! $?HDGENBEAM ) then +echo HDGENBEAM not set; exit 1; +endif +if ( ! $?HDGSCALE ) then +echo HDGSCALE not set; exit 1; +endif +if ( ! $?HDIMPROB ) then +echo HDIMPROB not set; exit 1; +endif +if ( ! $?HDTOKENS ) then +echo HDTOKENS not set; exit 1; +endif +if ( ! $?HLRGSCALE ) then +echo HLRGSCALE not set; exit 1; +endif +if ( ! $?HLRIMPROB ) then +echo HLRIMPROB not set; exit 1; +endif +if ( ! $?HLRMRGDIR ) then +echo HLRMRGDIR not set; exit 1; +endif +if ( ! $?HLRGENBEAM ) then +echo HLRGENBEAM not set; exit 1; +endif + +set data = ( `basename ${TRAINMLF} | awk -F\. '{print $1}'` ); + +# Building LM +mkdir -p $tgt/lib/lms; +cd $tgt/lib/lms; + +echo ""; +echo "Building Back-off Bi-gram LM from:"; +echo ""; +echo " Text Input: ${TRAINMLF}"; +echo " Vocabulary: ${HDVOCAB}"; +echo ""; + +cat ${HDVOCAB} | awk '{print $1}' | sort -u > rm.wlist; +echo \!\!UNK > rm.wlist+ukn; +cat ${HDVOCAB} | awk '{print $1}' | sort -u >> rm.wlist+ukn; +gzip -f rm.wlist*; + +cat ${TRAINMLF} | egrep -v \# | awk '{if ($0 != "\.") printf("%s ", $0); else print $0;}' | awk '{printf("\!SENT_START "); for(i=2;i<=NF-1;i++){ printf ("%s ", $i);} printf("\!SENT_END\n"); }' > ${data}.dat; +gzip -f ${data}.dat; + +cat > empty.wmap << END +Name = rm +SeqNo = 0 +Entries = 0 +EscMode = RAW +Fields = ID,WFC +\Words\ +END + +gzip -f empty.wmap; + +mkdir -p db_2-gram.${data}; + +set LGPOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE} -n ${HLMORDER} ); +LGPrep ${LGPOPTS} -d db_2-gram.${data} empty.wmap ${data}.dat >& LOG; + +set LGCOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -a ${HLMNNEWWORD} -b ${HLMBUFSIZE} ); +LGCopy ${LGCOPTS} -o -m db_2-gram.${data}/wmap.new -d db_2-gram.${data} -w rm.wlist db_2-gram.${data}/wmap db_2-gram.${data}/gram.0.gz >> LOG; + +set LBOPTS = ( -A -D -V -C ${HLMCONFIG} -T ${HLMTRACE} -u ${HLMUGFLR} -k ${HLMDISCOUNT} -c ${HLMNGRAMCUTOFF} -n ${HLMORDER} ); +LBuild ${LBOPTS} db_2-gram.${data}/wmap.new bg.${data} db_2-gram.${data}/gram.0.gz >> LOG; + +echo "Number of N-grams trained:" +echo `gunzip -c bg.${data}.gz | head -10 | egrep ngram`; +echo ""; + +bzip2 -f LOG; +cd ../../; + diff --git a/samples/RMHTK/scripts/mkclscript b/samples/RMHTK/scripts/mkclscript new file mode 100755 index 0000000..65e75ce --- /dev/null +++ b/samples/RMHTK/scripts/mkclscript @@ -0,0 +1,38 @@ +#!/bin/csh + +# generate an HHEd script file for state-clustering triphones +# +# mkclscript command threshold monophone_list +# +# where monophone_list is a HMM list for the phones (not triphones) +# to be clustered +# +# Script generates a specified command and threhold for a cluster +# corresponding to each states of each phone. +# The script assumes each model has 3 emitting states. +# +# Copyright (c) Phil Woodland, 1993 +# Last Updated 5/9/95 +# + +if ( $#argv != 3 ) then + echo "usage: mkclscript command threshold monophone_list" + exit 1 +endif + +set HMMLIST=$3 +if (! -f $HMMLIST) then + echo "mkclscript: monophone HMM list $HMMLIST not found" + exit 1 +endif + +set monophones=`cat $HMMLIST` +foreach i ($monophones) + echo $1 $2 '"ST_'"$i"_2_'"' '{("'"$i"'","*-'"$i"'+*","'"$i"'+*","*-'"$i"'").state[2]}' +end +foreach i ($monophones) + echo $1 $2 '"ST_'"$i"_3_'"' '{("'"$i"'","*-'"$i"'+*","'"$i"'+*","*-'"$i"'").state[3]}' +end +foreach i ($monophones) + echo $1 $2 '"ST_'"$i"_4_'"' '{("'"$i"'","*-'"$i"'+*","'"$i"'+*","*-'"$i"'").state[4]}' +end diff --git a/samples/RMHTK/scripts/pretrain b/samples/RMHTK/scripts/pretrain new file mode 100755 index 0000000..8f55059 --- /dev/null +++ b/samples/RMHTK/scripts/pretrain @@ -0,0 +1,297 @@ +#!/bin/tcsh +#$ -S /bin/tcsh + +#set verbose + +# Layer-by-layer discriminative DNN pre-training +set ALLARGS = ($*) +set HHED = HHEd +set HNTRAINSGD = HNTrainSGD +set CHANGED +while ($?CHANGED) + unset CHANGED + if ("$argv[1]" == "-SWAP") then + set CHANGED + shift argv + set SWAP + endif + if ("$argv[1]" == "-PRETRAIN") then + set CHANGED + shift argv + set PRETRAINCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-HNTRAINSGD") then + set CHANGED + shift argv + set HNTRAINSGDCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-HHED") then + set CHANGED + shift argv + set HHEDCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LIB") then + set CHANGED + shift argv + set LIBCMD = $argv[1] + shift argv + endif +end + +if ($#argv != 1) then + echo "Usage: $0 [-PRETRAIN 0/1/2] [-SWAP] [-HNTRAINSGD path] [-HHED path] [-LIB path] DNNenv" + echo "-PRETRAIN 0/1/2: use pretraining method 0/1/2" + echo "-SWAP: use DNN output target swap (swap/MMF & swap/hmms.mlist) " + echo "-HNTRAINSGD path: use a specified HNTrainSGD binary" + echo "-HHED path: use a specified HHEd binary" + echo "-LIB path: CUDA/MKL library path for GPU/MKL computing" + exit 1 +endif + +set DNNENV = $argv[1] +if (! -f $DNNENV) then + echo "ERROR: pretrain: cannot find environment file $DNNENV" + exit 1 +endif +# Read the environment file +source $DNNENV +if ($?LIBCMD) then + set LIB = $LIBCMD +endif +if ($?LIB) then + setenv LD_LIBRARY_PATH ${LIB}:${LD_LIBRARY_PATH} +endif +if ($?HNTRAINSGDCMD) then + set HNTRAINSGD = $HNTRAINSGDCMD +endif +if ($?HHEDCMD) then + set HHED = $HHEDCMD +endif +if (! $?HIDDENACTIVATION) then + set HIDDENACTIVATION = SIGMOID +endif +if ($HIDDENACTIVATION == RELU || $HIDDENACTIVATION == PRELU || $HIDDENACTIVATION == PARMRELU || $HIDDENACTIVATION == SOFTRELU) then + set PRETRAIN = 0 +else + set PRETRAIN = 1 +endif +if ($?PRETRAINCMD) then + set PRETRAIN = $PRETRAINCMD +endif +if ($?SWAP) then + set PRETRAIN = 0 +endif + + +# parse DNNSTRUCTURE +if (! $?DNNSTRUCTURE) then + echo "ERROR: environment variable DNNSTRUCTURE is missing" + exit 100 +endif +# get layer sizes +set lsizes = `echo $DNNSTRUCTURE | awk 'BEGIN{FS="X"}{for (i=1; i<=NF; i++) print $i}'` +set lnum = $#lsizes +if ($lnum < 3) then + echo "ERROR: at least need to be 3 layer MLP" +endif + +#i) generate a layer initial model +set diridx = 3 +set lastnum = $lnum +python GenInitDNN.py --quiet --structure "${lsizes[1]}X${lsizes[2]}X${lsizes[$lnum]}" $DNNENV proto/work/NMF +echo 'CH proto/work/NMF /dev/null ~N "DNN1" ' > connect.hed +echo 'SW 1 39' >> connect.hed +echo 'SK MFCC_E_D_A_Z' >> connect.hed +$HHED -A -D -V -T 1 -H proto/work/MODELS -M proto connect.hed treeg.list > proto/LOG + + +# generate config.dnn.pt +echo 'HANNET: TRACE = 1' > config.dnn.pt +echo 'HNCACHE: TRACE = 1' >> config.dnn.pt +echo 'HNCACHE: DATAACCESSKIND = FRAMERAND' >> config.dnn.pt +echo 'HNCACHE: SHUFFLEKIND = QUICKNET' >> config.dnn.pt +echo 'HNTRAINSGD: TRACE = 1' >> config.dnn.pt +echo 'HNTRAINSGD: UPDATEMODE = BATCHLEVEL' >> config.dnn.pt +echo 'HNTRAINSGD: CRITERION = XENT' >> config.dnn.pt +echo 'HNTRAINSGD: UPDATETARGETPEN = TRUE' >> config.dnn.pt +if ($?MINIBATCHSIZE) then + echo "HANNET: MINIBATCHSIZE = $MINIBATCHSIZE" >> config.dnn.pt +endif +if ($?DATACACHESIZE) then + echo "HNCACHE: DATACACHESIZE = $DATACACHESIZE" >> config.dnn.pt +endif +if ($?PTLEARNRATEKIND) then + echo "HNTRAINSGD: LRSCHEDULER = $PTLEARNRATEKIND" >> config.dnn.pt + if ($PTLEARNRATEKIND == NEWBOB) then + if ($?PTNEWBOBCRITERION) then + echo "HNTRAINSGD: NEWBOBCRT = $PTNEWBOBCRITERION" >> config.dnn.pt + endif + if ($?PTNEWBOBRAMPSTART) then + echo "HNTRAINSGD: RAMPSTART = $PTNEWBOBRAMPSTART" >> config.dnn.pt + endif + if ($?PTNEWBOBSTOPDIFF) then + echo "HNTRAINSGD: STOPDIFF = $PTNEWBOBSTOPDIFF" >> config.dnn.pt + endif + else if ($PTLEARNRATEKIND == EXPONENTIAL) then + if ($?PTEXPGAMMA) then + echo "HNTRAINSGD: GAMMA = $PTEXPGAMMA" >> config.dnn.pt + endif + if ($?PTEXPBASE) then + echo "HNTRAINSGD: BASE = $PTEXPBASE" >> config.dnn.pt + endif + else if ($PTLEARNRATEKIND == ADAGRAD) then + if ($?PTADAGRADK) then + echo "HNTRAINSGD: K = $PTADAGRADK" >> config.dnn.pt + endif + endif +endif +if ($?PTLEARNRATEVALS) then + echo "HNTRAINSGD: LEARNRATE = $PTLEARNRATEVALS" >> config.dnn.pt +endif +if ($?PTMINEPOCHNUM) then + echo "HNTRAINSGD: MINEPOCHNUM = $PTMINEPOCHNUM" >> config.dnn.pt +endif +if ($?PTMAXEPOCHNUM) then + echo "HNTRAINSGD: MAXEPOCHNUM = $PTMAXEPOCHNUM" >> config.dnn.pt +endif +if ($?PTMOMENTUM) then + echo "HNTRAINSGD: MOMENTUM = $PTMOMENTUM" >> config.dnn.pt +endif +if ($?PTWEIGHTDECAY) then + echo "HNTRAINSGD: WEIGHTDECAY = $PTWEIGHTDECAY" >> config.dnn.pt +endif +if ($?LOGPRIOROBSV) then + echo "HNTRAINSGD: LOGPRIOROBSV = $LOGPRIOROBSV" >> config.dnn.pt +endif +if ($?PTGRADIENTCLIP) then + echo "HNTRAINSGD: ACTIVATIONUPDATECLIP = $PTGRADIENTCLIP" >> config.dnn.pt + echo "HNTRAINSGD: WEIGHTUPDATECLIP = $PTGRADIENTCLIP" >> config.dnn.pt + echo "HNTRAINSGD: BIASUPDATECLIP = $PTGRADIENTCLIP" >> config.dnn.pt +endif +if ($?SHUFFLEKIND) then + echo "HNCACHE: SHUFFLEKIND = $SHUFFLEKIND" >> config.dnn.pt +endif +if ($?ANNUPDATEFLAG) then + echo "HANNET: ANNUPDATEFLAG = $ANNUPDATEFLAG" >> config.dnn.pt +endif +if ($?LAYERUPDATEFLAG) then + echo "HANNET: LAYERUPDATEFLAG = $LAYERUPDATEFLAG" >> config.dnn.pt +endif +if ($?ACTFUNUPDATEFLAG) then + echo "HANNET: ACTFUNUPDATEFLAG = $ACTFUNUPDATEFLAG" >> config.dnn.pt +endif +echo "\n" >> config.dnn.pt + + +# the first model +if (! -d dnn$diridx/init) then + mkdir -p dnn$diridx/init +endif +if (! -f dnn$diridx/MODELS) then + set hedfile = dnn$diridx/init/eraselayer.hed + echo 'EL ~L "layer2"' > ${hedfile} + echo 'EL ~L "layerout"' >> ${hedfile} + $HHED -A -D -V -T 1 -H proto/MODELS -M dnn$diridx/init ${hedfile} treeg.list > dnn$diridx/init/LOG +endif + +if ( -f cv.scp) then + set SCPARGS = "-S train.scp -N cv.scp" +else + set SCPARGS = "-S train.scp" +endif + +#ii) Perform layerwise pretrain +if ($?SWAP) then + echo 'CP swap/MODELS swap/hmms.list abw ~L "layer2" ~L "layer2"' > copyparameters.hed +endif + +# for -J +set OPTJstr = "" +if ($?OPTJXFORM) then + while ($#OPTJXFORM > 0) + set OPTJstr = "$OPTJstr -J $OPTJXFORM[1]" + shift OPTJXFORM + end +endif + +set var = 3 +while ($var < $lastnum) + if (! -f dnn$diridx/MODELS) then + if ($PRETRAIN >= 1) then + $HNTRAINSGD -A -D -V -T 1 -C config.dnnbasic -C config.dnn.pt -H dnn$diridx/init/MODELS -M dnn$diridx $SCPARGS -l LABEL $OPTJstr -I train.mlf treeg.list > dnn$diridx/LOG + else + ln -s `pwd`/dnn$diridx/init/MODELS dnn$diridx/MODELS + endif + endif + @ prevvar = $var - 1 + # generate next init/MMF + @ diridx++ + if (! -d dnn$diridx/init) then + mkdir -p dnn$diridx/init + endif + if (! -f dnn$diridx/init/MODELS) then + set hedname = dnn$diridx/init/addlayer.hed + # add ~M weight matrix + echo 'AM ~M "layer'$var'_weight" '"$lsizes[$var] $lsizes[$prevvar]" > $hedname + # add ~V bias vector + echo 'AV ~V "layer'$var'_bias" '"$lsizes[$var]" >> $hedname + # insert a new perceptron layer + set ILCMD = 'IL ~N "DNN1" '$var' ~L "layer'$var'" "PERCEPTRON" ~F "layer'$prevvar'_feamix" ~M "layer'$var'_weight" ~V "layer'$var'_bias" "'$HIDDENACTIVATION'"' + # add activation function parameters + if ($HIDDENACTIVATION == PSIGMOID || $HIDDENACTIVATION == PRELU) then + echo 'AV ~V "layer'$var'_actparam1" '$lsizes[$var] >> $hedname + echo 'SV ~V "layer'$var'_actparam1" 1 1.0' >> $hedname + set ILCMD = "$ILCMD"' 1 ~V "layer'$var'_actparam1"' + else if ($HIDDENACTIVATION == PARMSIGMOID) then + echo 'AV ~V "layer'$var'_actparam1" '$lsizes[$var] >> $hedname + echo 'SV ~V "layer'$var'_actparam1" 1 1.0' >> $hedname + set ILCMD = "$ILCMD"' 3 1 ~V "layer'$var'_actparam1"' + echo 'AV ~V "layer'$var'_actparam2" '$lsizes[$var] >> $hedname + echo 'SV ~V "layer'$var'_actparam2" 1 1.0' >> $hedname + set ILCMD = "$ILCMD"' 2 ~V "layer'$var'_actparam2"' + echo 'AV ~V "layer'$var'_actparam3" '$lsizes[$var] >> $hedname + echo 'SV ~V "layer'$var'_actparam3" 1 0.0' >> $hedname + set ILCMD = "$ILCMD"' 3 ~V "layer'$var'_actparam3"' + else if ($HIDDENACTIVATION == PARMRELU) then + echo 'AV ~V "layer'$var'_actparam1" '$lsizes[$var] >> $hedname + echo 'SV ~V "layer'$var'_actparam1" 1 1.0' >> $hedname + set ILCMD = "$ILCMD"' 2 1 ~V "layer'$var'_actparam1"' + echo 'AV ~V "layer'$var'_actparam2" '$lsizes[$var] >> $hedname + echo 'SV ~V "layer'$var'_actparam2" 1 0.25' >> $hedname + set ILCMD = "$ILCMD"' 2 ~V "layer'$var'_actparam2"' + endif + echo "$ILCMD"' ' >> $hedname + # change output layer input feature mixture + echo 'CF ~L "layerout" ~F "layer'$var'_feamix" 1 '$lsizes[$var]' ~L "layer'$var'" 1 0' >> $hedname + # add command for changing layer dimension + if ($lsizes[$prevvar] != $lsizes[$var]) then + echo 'CD ~L "layerout" 0 '"$lsizes[$var]" >> $hedname + endif + echo 'EL ~L "layer'$var'"' >> $hedname + echo 'EL ~L "layerout"' >> $hedname + # generate init/MMF + if (! -f dnn$diridx/init/MODELS) then + $HHED -A -D -V -T 1 -H dnn$var/MODELS -M dnn$diridx/init $hedname treeg.list >> dnn$diridx/init/LOG + endif + endif + if ($?SWAP) then + echo 'CP swap/MODELS swap/hmms.list abw ~L "layer'$var'" ~L "layer'$var'"' >> copyparameters.hed + endif + # update the indexes + @ var++ +end + +if ($PRETRAIN >= 2) then + if (! -f dnn${diridx}/MODELS) then + $HNTRAINSGD -A -D -V -T 1 -C config.dnnbasic -C config.dnn.pt -H dnn${diridx}/init/MODELS -M dnn$diridx -l LABEL $SCPARGS $OPTJstr -I train.mlf treeg.list > dnn$diridx/LOG + endif +else if ($?SWAP) then + $HHED -A -D -V -T 1 -H dnn${diridx}/init/MODELS -M dnn${diridx} copyparameters.hed treeg.list > dnn${diridx}/LOG +else + ln -s $PWD/dnn${diridx}/init/MODELS dnn${diridx}/ +endif + + diff --git a/samples/RMHTK/scripts/sequence b/samples/RMHTK/scripts/sequence new file mode 100755 index 0000000..14f3caf --- /dev/null +++ b/samples/RMHTK/scripts/sequence @@ -0,0 +1,205 @@ +#!/bin/tcsh +#$ -S /bin/tcsh + +#set verbose + +# Layer-by-layer discriminative DNN pre-training +set ALLARGS = ($*) +set HNTRAINSGD = HNTrainSGD +set CHANGED +while ($?CHANGED) + unset CHANGED + if ("$argv[1]" == "-HNTRAINSGD") then + set CHANGED + shift argv + set HNTRAINSGDCMD = $argv[1] + shift argv + endif + if ("$argv[1]" == "-LIB") then + set CHANGED + shift argv + set LIBCMD = $argv[1] + shift argv + endif +end + +if ($#argv != 1) then + echo "Usage: $0 [-HNTRAINSGD path] [-LIB path] DNNenv" + echo "-HNTRAINSGD path: use a specified HNTrainSGD binary" + echo "-LIB path: CUDA/MKL library path for GPU/MKL computing" + exit 1 +endif + + +set ENV = $argv[1] +if (! -f $ENV) then + echo "ERROR: cannot find environment file $ENV" + exit 1 +endif +# Read the environment file +source $ENV +if ($?LIBCMD) then + set LIB = $LIBCMD +endif +if ($?LIB) then + setenv LD_LIBRARY_PATH ${LIB}:${LD_LIBRARY_PATH} +endif +if ($?HNTRAINSGDCMD) then + set HNTRAINSGD = $HNTRAINSGDCMD +endif + +# parse DNNSTRUCTURE +if (! $?LEARNRATEVALS) then + echo "ERROR: environment variable LEARNRATEVALS is missing" + exit 1 +endif +# get layer sizes +set lrvals = `echo $LEARNRATEVALS | awk 'BEGIN{FS=","}{for (i=1; i<=NF; i++) print $i}'` +set niters = $#lrvals + +set lastdir = 'hmm0' +set index = 0 +while ($index <= $niters) + set LABTYPE = 'LATTICE' + #'*/%%%%%%_*.mfc' + set DENLATDIRPATTERN = '%%%%%%_*' + set NUMLATDIRPATTERN = '%%%%%%_*' + set MLFPATH = '' + # generate config.dnn.mpe-iter${index} + echo 'MAXTRYOPEN = 3' > config.dnn.mpe-iter${index} + echo 'HFBLAT: TRACE = 1' >> config.dnn.mpe-iter${index} + echo 'HARC:TRACE = 2' >> config.dnn.mpe-iter${index} + echo 'MIXLEVELD = TRUE' >> config.dnn.mpe-iter${index} + echo 'HNETFILTER = '"'"'gunzip -c < $.gz'"'" >> config.dnn.mpe-iter${index} + echo 'MATCHMPETONE = TRUE' >> config.dnn.mpe-iter${index} + echo 'HANNET: TRACE = 1' >> config.dnn.mpe-iter${index} + echo 'HNCACHE: TRACE = 1' >> config.dnn.mpe-iter${index} + echo 'HNCACHE: DATAACCESSKIND = UTTERANCERAND' >> config.dnn.mpe-iter${index} + echo 'HNCACHE: SHUFFLEKIND = QUICKNET' >> config.dnn.mpe-iter${index} + echo 'HNTRAINSGD: TRACE = 1' >> config.dnn.mpe-iter${index} + echo 'HNTRAINSGD: UPDATETARGETPEN = FALSE' >> config.dnn.mpe-iter${index} + # data cache and batch setup + if ($?MINIBATCHSIZE) then + echo "HANNET: MINIBATCHSIZE = $MINIBATCHSIZE" >> config.dnn.mpe-iter${index} + endif + if ($?DATACACHESIZE) then + echo "HNCACHE: DATACACHESIZE = $DATACACHESIZE" >> config.dnn.mpe-iter${index} + endif + if ($?SHUFFLEKIND) then + echo "HNCACHE: SHUFFLEKIND = $SHUFFLEKIND" >> config.dnn.mpe-iter${index} + endif + echo 'HNTRAINSGD: UPDATEMODE = UTTERANCELEVEL' >> config.dnn.mpe-iter${index} + echo 'HNTRAINSGD: CRITERION = MPE' >> config.dnn.mpe-iter${index} + # f-smoothing setup + if ($?FSMOOTHHVALUE) then + echo "HNTRAINSGD: FSMOOTHHVALUE = $FSMOOTHHVALUE" >> config.dnn.mpe-iter${index} + endif + if ($?FSMOOTHCRITERION) then + echo "HNTRAINSGD: FSMOOTHCRITERION = $FSMOOTHCRITERION" >> config.dnn.mpe-iter${index} + endif + if ($?FSMOOTHHVALUE || $?FSMOOTHCRITERION) then + set LABTYPE = 'LABLAT' + set MLFPATH = '-I train.mlf' + endif + # prob scales and insertion correctness + if ($?PROBSCALE) then + echo "HFBLAT: PROBSCALE = $PROBSCALE" >> config.dnn.mpe-iter${index} + endif + if ($?LATPROBSCALE) then + echo "HFBLAT: LATPROBSCALE = $LATPROBSCALE" >> config.dnn.mpe-iter${index} + endif + if ($?INSCORRECTNESS) then + echo "HFBLAT: INSCORRECTNESS = $INSCORRECTNESS" >> config.dnn.mpe-iter${index} + endif + # learning rates + echo "HNTRAINSGD: LEARNRATE = $lrvals[$index]" >> config.dnn.mpe-iter${index} + if ($?NORMLEARNRATE) then + echo "HNTRAINSGD: NORMLEARNRATE = $NORMLEARNRATE" >> config.dnn.mpe-iter${index} + endif + if ($?LEARNRATEKIND) then + echo "HNTRAINSGD: LRSCHEDULER = $LEARNRATEKIND" >> config.dnn.mpe-iter${index} + if ($LEARNRATEKIND == NEWBOB) then + if ($?NEWBOBCRITERION) then + echo "HNTRAINSGD: NEWBOBCRT = $NEWBOBCRITERION" >> config.dnn.mpe-iter${index} + endif + if ($?NEWBOBRAMPSTART) then + echo "HNTRAINSGD: RAMPSTART = $NEWBOBRAMPSTART" >> config.dnn.mpe-iter${index} + endif + if ($?NEWBOBSTOPDIFF) then + echo "HNTRAINSGD: STOPDIFF = $NEWBOBSTOPDIFF" >> config.dnn.mpe-iter${index} + endif + else if ($LEARNRATEKIND == EXPONENTIAL) then + if ($?EXPGAMMA) then + echo "HNTRAINSGD: GAMMA = $EXPGAMMA" >> config.dnn.mpe-iter${index} + endif + if ($?EXPBASE) then + echo "HNTRAINSGD: BASE = $EXPBASE" >> config.dnn.mpe-iter${index} + endif + else if ($LEARNRATEKIND == ADAGRAD) then + if ($?ADAGRADK) then + echo "HNTRAINSGD: K = $ADAGRADK" >> config.dnn.mpe-iter${index} + endif + endif + endif + if ($?MINEPOCHNUM) then + echo "HNTRAINSGD: MINEPOCHNUM = $MINEPOCHNUM" >> config.dnn.mpe-iter${index} + endif + if ($?MAXEPOCHNUM) then + echo "HNTRAINSGD: MAXEPOCHNUM = $MAXEPOCHNUM" >> config.dnn.mpe-iter${index} + endif + # momentum and weight decay + if ($?MOMENTUM) then + echo "HNTRAINSGD: MOMENTUM = $MOMENTUM" >> config.dnn.mpe-iter${index} + endif + if ($?NORMMOMENTUM) then + echo "HNTRAINSGD: NORMMOMENTUM = $NORMMOMENTUM" >> config.dnn.mpe-iter${index} + endif + if ($?WEIGHTDECAY) then + echo "HNTRAINSGD: WEIGHTDECAY = $WEIGHTDECAY" >> config.dnn.mpe-iter${index} + endif + if ($?NORMWEIGHTDECAY) then + echo "HNTRAINSGD: NORMWEIGHTDECAY = $NORMWEIGHTDECAY" >> config.dnn.mpe-iter${index} + endif + # update flags + if ($?ANNUPDATEFLAG) then + echo "HANNET: ANNUPDATEFLAG = $ANNUPDATEFLAG" >> config.dnn.mpe-iter${index} + endif + if ($?LAYERUPDATEFLAG) then + echo "HANNET: LAYERUPDATEFLAG = $LAYERUPDATEFLAG" >> config.dnn.mpe-iter${index} + endif + if ($?ACTFUNUPDATEFLAG) then + echo "HANNET: ACTFUNUPDATEFLAG = $ACTFUNUPDATEFLAG" >> config.dnn.mpe-iter${index} + endif + echo "\n" >> config.dnn.mpe-iter${index} + # for -S + if ( -f cv.scp) then + set SCPARGS = '-S train.scp -N cv.scp' + else + set SCPARGS = '-S train.scp' + endif + # for -J + set OPTJstr = "" + if ($?OPTJXFORM) then + while ($#OPTJXFORM > 0) + set OPTJstr = "$OPTJstr -J $OPTJXFORM[1]" + shift OPTJXFORM + end + endif + + # setup the directory + if (! -f $lastdir/MODELS) then + echo "ERROR: Missing models generated by the last step $lastdir/MODELS" + exit 1 + endif + if (! -d hmm${index}) then + mkdir hmm${index} + endif + if (! -f hmm${index}/MODELS) then + $HNTRAINSGD -A -D -V -T 1 -C config.dnnbasic -C config.dnn.mpe-iter${index} -H ${lastdir}/MODELS -M hmm${index} -l ${LABTYPE} $SCPARGS $OPTJstr ${MLFPATH} -r lattices/den -q lattices/num -rp "${DENLATDIRPATTERN}" -qp "${NUMLATDIRPATTERN}" treeg.list > hmm${index}/LOG + endif + + set lastdir = hmm${index} + @ index ++ +end + + diff --git a/samples/RMHTK/scripts/w_decode b/samples/RMHTK/scripts/w_decode new file mode 100755 index 0000000..900ff49 Binary files /dev/null and b/samples/RMHTK/scripts/w_decode differ diff --git a/samples/RMHTK/scripts/w_edit b/samples/RMHTK/scripts/w_edit new file mode 100755 index 0000000..11d81df Binary files /dev/null and b/samples/RMHTK/scripts/w_edit differ diff --git a/samples/RMHTK/steps/step-0 b/samples/RMHTK/steps/step-0 new file mode 100755 index 0000000..455a5b0 --- /dev/null +++ b/samples/RMHTK/steps/step-0 @@ -0,0 +1,99 @@ +#!/bin/bash +############################################################ +# Step 0: Setting Up +############################################################ +# set verbose +source environment +mkdir -p $RMWORKBASE $RMWORK $RMDATA $RMLIB + +# 0.0 pre-requisites +cp -r $RMHTK/lib/{configs,corrupt,awks} $RMLIB/ +cp $RMHTK/lib/{eq.ng,eq.wp,wordlist} $RMLIB/ +cp $RMHTK/scripts/{w_edit,w_decode} $RMLIB/ + +# 0.1 copy the NIST file lists from RMCD2 +cd $RMLIB +mkdir ndx +find $RMCD2/rm1/doc -name '*.ndx' -exec cp {} ndx \; +chmod -R +w $RMWORK + +# extract file lists for adaptation +grep 'dms0' ndx/6a_deptr.ndx | head -100 > ndx/step0.ndx +chmod +w ndx/6a_deptr.ndx +/bin/rm -f ndx/6a_deptr.ndx +mv ndx/step0.ndx ndx/6a_deptr.ndx +grep -h 'dms0' ndx/*deptst*.ndx > ndx/dms0_tst.ndx + +# 0.2 Coding the data using the coderm script +# This can code either the speaker independent or speaker dependent +# data and uses the file lists created in Step 0.1. Here just the +# speaker independent data is used. Allow approximately 100MB of disk +# space for this. The file-lists created are stored in $RMLIB/flists. + +mkdir $RMLIB/flists +cd $RMLIB +$RMHTK/scripts/coderm ndx $RMCD1 ind train $RMDATA configs/config.code flists/train.scp +$RMHTK/scripts/coderm ndx $RMCD2 ind dev_aug $RMDATA configs/config.code flists/dev_aug.scp + +# Now make script files for both the mfc data and label files. + +cd $RMLIB/flists +cat train.scp dev_aug.scp > ind_trn109.scp +sed 's:\.mfc:\.lab:' ind_trn109.scp > ind_trn109.lab + +# Also code the four speaker independent test sets and create script +# files for complete test label files. + +cd $RMLIB +$RMHTK/scripts/coderm ndx $RMCD2 ind feb89 $RMDATA configs/config.code flists/ind_feb89.scp +$RMHTK/scripts/coderm ndx $RMCD2 ind oct89 $RMDATA configs/config.code flists/ind_oct89.scp +$RMHTK/scripts/coderm ndx $RMCD2 ind feb91 $RMDATA configs/config.code flists/ind_feb91.scp +$RMHTK/scripts/coderm ndx $RMCD2 ind sep92 $RMDATA configs/config.code flists/ind_sep92.scp +cat flists/ind_???[89][912].scp | sed 's:\.mfc:\.lab:' > flists/ind_tst.lab + + +# 0.3 Fixing the coded data files that are corrupt on the CD-ROM + +# A very few files on the CD-ROM have a long series of identical +# time-domain values. These should be removed since the net effect is +# to cause the differential and second differential components to be +# zero with zero variance. The files which are corrupted were +# identified automatically as having a run of 250 or more identical +# time domain samples. Use the script fixrm and the file list +# $RMLIB/corrupt to delete these frames. Note that $RMLIB/corrupt +# includes the corrupt frame numbers and this assumes that the default +# 10ms frames have been used by coderm. All the corrupt frames are in +# the silence portion of the files. Note that no speaker dependent +# data has been checked for corrupt files. +# Using alternative approach by setting HPARM:ADDDITHER=0.2 in config.code +# fixrm $RMLIB/corrupt $RMDATA + +# 0.4 Create word-level label files (and associated lists) for the +# test sets + +# This uses grep, gawk and sed to convert the SNOR word-level +# transcriptions distributed on the CD-ROMs into HTK format. gawk is +# the public domain GNU version of awk which is specified because of +# its built in tolower command that allows the uppercase file names in +# SNOR format to be converted to lower-case. Many versions of nawk +# also have this functionality, if gawk is not installed but nawk is, +# use nawk, otherwise use perl on this occasion and awk elsewhere. +# First we create generic label files based on the prompts. + +cd $RMLIB +cp $RMCD2/rm1/doc/al_sents.snr sents.snr +mkdir wlabs +grep -v '^;' $RMCD2/rm1/doc/al_sents.snr | \ + gawk 'BEGIN { printf("#\!MLF\!#\n"); } \ + { printf("%c*%s.lab%c\n",34,tolower(substr($NF,2,length($NF)-2)),34); \ + for (i=1;i wlabs/all.mlf + +# Now create specific lables for the actual files. +cd $RMLIB +touch wlabs/null.hled +HLEd -A -D -V -l '*' -i wlabs/ind_trn109.mlf -I wlabs/all.mlf \ + -S flists/ind_trn109.lab wlabs/null.hled +HLEd -A -D -V -l '*' -i wlabs/ind_tst.mlf -I wlabs/all.mlf \ + -S flists/ind_tst.lab wlabs/null.hled + +echo step 0 completed diff --git a/samples/RMHTK/steps/step-1 b/samples/RMHTK/steps/step-1 new file mode 100755 index 0000000..d7eab92 --- /dev/null +++ b/samples/RMHTK/steps/step-1 @@ -0,0 +1,169 @@ +#!/bin/bash +############################################################ +# Step 1: Creating a Base-Line Monophone Set +############################################################ + +source environment +if [ ! -d $RMWORK/R1/ml ] +then + echo creating $RMWORK/R1/ml + mkdir -p $RMWORK/R1/ml + cp -r $RMHTK/work/R1/* $RMWORK/R1/ml +fi + +# 1.1 Basic dictionary and phone list creation + +# Copy the SRI dictionary from the CD-ROM. You should read the header +# of this file to determine the conditions of use. Dictionaries are +# stored in $RMLIB/dicts. Model lists are stored in $RMLIB/mlists. + +if [ ! -d $RMLIB/dicts ] +then + mkdir $RMLIB/dicts +fi + +cp $RMCD2/score/src/rdev/pcdsril.txt $RMLIB/dicts + +# Use the tool HDMan to transform the dictionary. The supplied HDMan +# script mono.ded should be in $RMLIB/dicts. +if [ ! -d $RMLIB/mlists ] +then + mkdir $RMLIB/mlists +fi + +cd $RMLIB/dicts +/bin/rm -f sil.txt +cat< sil.txt +!SENT_END [] sil +!SENT_START [] sil +EOF +HDMan -A -D -V -T 1 -a '*;' -n $RMLIB/mlists/mono.list \ + -g $RMHTK/lib/dicts/mono.ded mono.dct pcdsril.txt sil.txt + + +# 1.2 Training set phone label file creation + +# Create the training set phone label files including optional +# inter-word silence (sp) models (the sp models are tee models) and +# forced silence (sil) at the ends of each utterance. +if [ ! -d $RMLIB/labs ] +then + mkdir $RMLIB/labs +fi +cd $RMLIB +HLEd -A -D -V -l '*' -i labs/mono.mlf -d dicts/mono.dct \ + $RMHTK/lib/labs/mono.hled wlabs/ind_trn109.mlf + + +# 1.3 Initial phone models + +# The supplied initial models should be in the directory +# $RMWORK/R1/ml/hmm0. Note that the MODELS file also contains a varFloor +# vector which was calculated by using HCompV +cd $RMWORK/R1/ml +chmod +w varProto +HCompV -A -D -V -C $RMLIB/configs/config.basic -S $RMLIB/flists/ind_trn109.scp \ + -f 0.01 -m varProto + +# The supplied HTK Environment file HTE should also be in +# $RMWORK/R1/ml. This contains a number of shell variables that are used +# by the various training and testing scripts. Edit the HTE file so +# that it reflects your particular directory setup. + + +# 1.4 Model training + +# Re-estimate the models in hmm0 for four iterations of HERest. + +cd $RMWORK/R1/ml +hbuild 1 4 + +# This should create the directories $RMWORK/R1/ml/hmm[1-4]. Each of +# these directories should contain a LOG file and also $RMWORK/R1/ml will +# contain a file called blog which records the build process. After +# running hbuild the various LOG files should be checked for error +# messages. + +for i in 1 2 3 4 +do + echo hmm$i/LOG + grep -i error hmm$i/LOG +done + + +# 1.5 Building the recognition networks + +# Copy the word-pair grammar from the CD-ROM to $RMLIB. +if [ ! -d $RMLIB/nets ] +then + cd $RMLIB; mkdir nets + cp $RMCD2/rm1/doc/wp_gram.txt $RMLIB/nets + +# Use the supplied gawk scripts to generate word level networks for +# both the word-pair and no-grammar test conditions. Note that the +# language model likelihoods are based solely on the number of +# successors for each word. + + cd $RMLIB/nets + cat wp_gram.txt wp_gram.txt | fgrep -v '*' | \ + gawk -f $RMLIB/awks/wp.net.awk nn=993 nl=57704 > net.wp + gawk -f $RMLIB/awks/ng.net.awk nn=994 nl=1985 $RMLIB/wordlist > net.ng + gzip -f net.wp net.ng +fi + +# 1.6 Testing the Monophone Models + +# Check that all the recognition variables in HTE are set up +# correctly. In particular if you wish to use the NIST scoring +# package distributed on the CD-ROMs, make sure that NISTSCORE is +# set. The recognition tests use the script htestrm. The recognition +# parameters are set in the HTE file as for hbuild. htestrm allows +# the specification of the test set, the recognition mode (ng or wp) +# and automatically creates test directories for a number of runs +# (typically with different recognition parameters and perhaps run +# simultaneously on different machines). Test directories are created +# as sub-directories of the model directories. The first run on a +# particular hmm set with ng on the feb89 test set would be called +# test_ng_feb89.1, the second run test_ng_feb89.2, and tests with wp +# and other test-sets named according to the above convention. + +# A number of parameters can be tuned including the grammar scale +# factor HVGSCALE variable (HVite -s) and inter-word probability +# HVIMPROB (HVite -p). These flags both control the ratio of +# insertion and deletion errors. HVite pruning is controlled by +# variables HVPRUNE (HVite -t) and HVMAXACTIVE (HVite -u). All of +# these values are supplied in an indexed list that correspond to the +# different test types listed in the HTE variable TYPELIST (here +# either ng or wp). The HVPRUNE values should be set at a higher value +# for wp testing than ng testing. + +# After htestrm runs HVite, HResults is executed. The equivalent sets +# (homophone lists) for the different test conditions are listed in +# files specified by the HREQSETS variable. These sets are defined by +# DARPA/NIST and suitable files (eq.wp and eq.ng) are supplied with +# the distribution. If the variable HRNIST is set HResults operates in +# a manner that is compatible with the NIST scoring software and +# results identical to those from the NIST software should be +# obtained. + +# If the NIST scoring software has been compiled, then after HResults +# has been run the output of HVite can be converted to a NIST +# compatible "hypothesis" file using the RM tool HLab2Hyp and then +# running the appropriate NIST scoring script. These steps will be +# performed by htestrm if the HTE variable NISTSCORE is set. Note that +# the NIST scoring tools should be in your path if you set NISTSCORE. +# Although the raw results obtained from the NIST software should be +# identical to the HResults output, the NIST output files can give +# additional information that can be useful for understanding +# recognizer performance. + +# To test the models in $RMWORK/R1/ml/hmm4 with the feb89 test set and +# with a word-pair grammar and the current recognition settings in +# HTE, execute the following +cd $RMWORK/R1/ml +htestrm HTE wp feb89 hmm4 + +# Run other tests under a number of ng/wp conditions on different test +# sets as desired. + +echo step 1 completed diff --git a/samples/RMHTK/steps/step-10 b/samples/RMHTK/steps/step-10 new file mode 100755 index 0000000..157f283 --- /dev/null +++ b/samples/RMHTK/steps/step-10 @@ -0,0 +1,169 @@ +#!/bin/bash + +source environment + +if [ ! -d $RMWORK/R9/ml/hmm54 ] +then + echo ERROR: step 10 depends on completion of step 9 + exit 1 +fi + +# 10. Adaptation + +# 10.1 Incremental MLLR adaptation + +mkdir -p $RMWORK/R10/ml/hmm0 +cd $RMWORK/R10/ml/hmm0 + +# The first step is to generate a regression class tree. +# A regression class tree +# for that model may be generated using (this assumes that a stats +# file has been generated). +cp $RMWORK/R9/ml/hmm54/{MODELS,stats} . +HHEd -A -D -V -T 1 -B -H MODELS -w /dev/null $RMHTK/lib/regtree_c2.hed \ + $RMLIB/mlists/treeg.list > regtree_c2.LOG +cd .. + +# This should have generated two files regtree_2.tree and +# regtree_2.base. These are the regression class tree and associated +# baseclasses respectively . Using these regression class trees it is +# possible to incrementally generate MLLR transforms. Add the +# following lines to the HTE file + +cp $RMWORK/R9/ml/HTE HTE.step9 +htestrm HTE.step9 wp feb89 hmm0 +cat<<__EOF__ >> HTE.step9 +# Specify the form of transform to be generated +setenv HVXFORMCONFIG $RMLIB/configs/config.mllr + +# HVite adaptation options +set HVSPKRMASK = '*/%%%%%%_*.mfc' +set HVFORCEXFORMDIR = ($RMWORK/R10/ml/hmm0) +set HVOUTXFORMEXT = mllr1 +set HVINCADAPT = 1 +__EOF__ + +# HVFORCEXFORMDIR (and the related HEFORCEXFORMDIR) allow directories +# to be specified for the various transformation macros to be found. +# The information associated with precisely which transform is used is +# stored in the LOG file. In the above case the line is required to +# specify where the correct regression class tree (and associated base +# classes) are stored. + + htestrm HTE.step9 wp feb89 hmm0 + +# Run htestrm as usual to perform incremental adaptation. The final +# transform is stored in the test directory (assumed to be +# hmm0/test_wp_feb89.2). When generating transforms extensions to the +# transforms are extensively used. In this case mllr1. This final +# transform can then be used as the input transform. First comment out +# HVINCADAPT in the HTE file and add + +cp HTE.step9 HTE.step10.1 +cat <<__EOF__ | ed HTE.step10.1 +/HVINCADAPT/s/^/# / +a +set HVINXFORMEXT = mllr1 +. +wq +__EOF__ + +# This specifies the extension of the transform for decoding. To decode run + + htestrm HTE.step10.1 wp feb89 hmm0 hmm0/test_wp_feb89.2 + +# 10.2 Speaker Adaptive Training + +# For some tasks it is useful to use adaptive training. Adaptive +# training with constrained MLLR transforms is fully supported in HTK. +# First copy the 6 component models and the regression class trees. + +if [ ! -d $RMWORK/R10/sat ] +then + mkdir -p $RMWORK/R10/sat +fi +cd $RMWORK/R10/sat +mkdir hmm0 +cp $RMWORK/R10/ml/hmm0/MODELS hmm0 +cp $RMWORK/R10/ml/hmm0/regtree_2.* hmm0 + +# Copy the HTE files associated with SAT training. + +cp $RMHTK/lib/htefiles/HTE.sat.model . +cp $RMHTK/lib/htefiles/HTE.sat.xform . +cp $RMHTK/lib/htefiles/HTE.align . +chmod +w HTE* + +# First generate the CMLLR transforms for the adaptive training + + herest HTE.sat.xform hmm0 hmm0/cmllr + +# Then generate the models. This uses the above transforms as the +# input and the parent xforms. It is important that the transform is +# used as a parent transform as well as the input transform, otherwise +# the model will be generated in the original model space. + + herest HTE.sat.model hmm0 hmm1 hmm0/cmllr + herest HTE.sat.model hmm1 hmm2 hmm0/cmllr + +# To use these models for recognition with no supervised data, first +# the standard models are used for recognition. The output from these +# are then used to obtain the phone level transcription. + + mkdir hmm0/wlabs + cp $RMWORK/R10/ml/hmm0/test_wp_feb89.1/wp_feb89.mlf hmm0/wlabs + htestrm HTE.align wp feb89 hmm0 + herest HTE.align hmm0 hmm0/cmllr1 + +# It is useful to use different extensions each time transforms are +# generated. To do this change HEOUTXFORMEXT in HTE.align to +# cmllr2. Comment out HVALIGN from HTE.align so that decoding is +# run. Generate new transforms and then decode. + +cp HTE.align HTE.align.step10.2 +cat <<__EOF__ | ed HTE.align.step10.2 +/HVALIGN/s/^/# / +/HEOUTXFORMEXT/s/cmllr1/cmllr2/ +wq +__EOF__ + + herest HTE.align.step10.2 hmm2 hmm2/cmllr2 hmm0/cmllr1 + htestrm HTE.align.step10.2 wp feb89 hmm2 hmm2/cmllr2 + +# Standard MLLR can then be built on top of this CMLLR transform. This +# is achieved by specifying the cmllr2 transforms as the parent +# transforms for generating the MLLR transform. Add the following +# lines to HTE.align + +cp HTE.align.step10.2 HTE.align2.step10.2 +cat<<__EOF__ >> HTE.align2.step10.2 +set HEPAXFORMDIR = hmm0/cmllr2 +set HEPAXFORMEXT = cmllr2 +__EOF__ + +# and change the xform config file to config.mllr. You will also need to +# alter the transform extensions so that +# set HEOUTXFORMEXT = mllr1 +# set HEINXFORMEXT = cmllr2 +# set HVINXFORMEXT = mllr1 + +cat< edfile.md +HHEd -A -D -V -B -H hmm0/MODELS.orig -w hmm0/MODELS edfile.md $RMLIB/mlists/treeg.list > hmm0/LOG.md + +# Copy the HTE file associated with lattice generation and phone marking + +cp $RMHTK/lib/htefiles/HTE.latgen . + +# Create a monophone dictionary suitable for HDecode (strip the final "sp") + +cd $RMLIB/dicts +sed 's/sp//g' mono.dct > mono.hd.dct +cd $RMWORK/R11/mpe/latgen + +# All 4 steps can then be run using + +latgen HTE.latgen hmm0 lattices + +# 11.2 MPE Model Training + +#Having generated the training lattices dsicriminative training can now be run. +#The default script uses MPE training, though an MMI config file is also supplied. +#Create directories and copy the HTE file +cd $RMWORK/R11/mpe +mkdir hmm0 +cd hmm0 +ln -s $RMWORK/R11/mpe/latgen/hmm0/MODELS . +cd .. +ln -s $RMWORK/R11/mpe/latgen/lattices/lattices . +cp $RMHTK/lib/htefiles/HTE.mpe HTE + +# Now perform 2 iterations of MPE training + +hbuild 1 2 + +# And then test the ML and MPE models + +htestrm HTE wp feb89 hmm0 +htestrm HTE wp feb89 hmm1 +htestrm HTE wp feb89 hmm2 + +echo step 11 completed diff --git a/samples/RMHTK/steps/step-12 b/samples/RMHTK/steps/step-12 new file mode 100755 index 0000000..2794b1c --- /dev/null +++ b/samples/RMHTK/steps/step-12 @@ -0,0 +1,78 @@ +#!/bin/bash +source environment +# dependencies +if [ ! -d $RMWORK/R9/ml/hmm4 ] +then + echo ERROR: step 12 depends on completion of step 9 + exit 1 +fi + +# This section uses two semi-tied transforms (one speech, one silence) to +# reduce the impact of the diagonal coavariance matrix approximation. + +mkdir -p $RMWORK/R12/ml +cd $RMWORK/R12/ml +mkdir hmm0 +cp $RMWORK/R9/ml/hmm4/MODELS hmm0 +cp $RMWORK/R10/ml/hmm0/regtree_2.* hmm0 + +# 12.1 Estimating semi-tied transforms + +# Copy the HTE file associated with semi-tied training. + +cp $RMHTK/lib/htefiles/HTE.semit . + +# Estimate the semi-tied transform + +herest HTE.semit hmm0 hmm1 + +# Then do a further iteration of ML training. This can be simply done +# by commenting out the line associated with "HEUPD=stw". THen run + +cp HTE.semit HTE +cat <<__EOF__ | ed HTE +/HEUPD/s/^/# / +wq +__EOF__ + +herest HTE hmm1 hmm2 +herest HTE hmm2 hmm3 +herest HTE hmm3 hmm4 + +# Finally evaluate the performance + +htestrm HTE wp feb89 hmm4 + +# 12.2 Estimating HLDA transforms + +# Global HLDA transforms are efficiently stored as input transforms. +# Copy the HTE file associated with HLDA training. + +cp $RMHTK/lib/htefiles/HTE.hlda . + +# Create a global base class in hmm0/global containing + +cat <<__EOF__ >hmm0/global + ~b "global" + CUED_WSJ* + MIXBASE + 1 + 1 {*.state[2-4].mix[1-100]} +__EOF__ + +# Estimate the semi-tied transform + +herest HTE.hlda hmm0 hmm1_hlda + +# Then do a further iteration of ML training. + +herest HTE hmm1_hlda hmm2_hlda +herest HTE hmm2_hlda hmm3_hlda +herest HTE hmm3_hlda hmm4_hlda + +# Finally evaluate the performance + +htestrm HTE wp feb89 hmm4_hlda + +echo step 12 completed + diff --git a/samples/RMHTK/steps/step-13 b/samples/RMHTK/steps/step-13 new file mode 100755 index 0000000..2cb8b49 --- /dev/null +++ b/samples/RMHTK/steps/step-13 @@ -0,0 +1,26 @@ +#!/bin/bash +source environment + +# dependencies +if [ ! -d $RMWORK/R9/ml/hmm4 ] +then + echo ERROR: step 13 depends on completion of step 9 + exit 1 +fi + + +# As an example of the flexibility of HTK, tis section describes how multiple +# stream systems can be built (it also is used as a regression test for internal +# HTK development). + +mkdir -p $RMWORK/R13/ml +cd $RMWORK/R13/ml +cp $RMWORK/R9/ml/HTE . +mkdir hmm0 +echo "SS 3" > edfile.ss.hed +HHEd -A -D -V -T 1 -B -H $RMWORK/R9/ml/hmm54/MODELS -w hmm0/MODELS edfile.ss.hed $RMLIB/mlists/treeg.list > hmm0/LOG +hbuild 1 2 +hbuild 3 4 +htestrm HTE wp feb89 hmm4 + +echo step 13 completed diff --git a/samples/RMHTK/steps/step-14 b/samples/RMHTK/steps/step-14 new file mode 100755 index 0000000..43498e6 --- /dev/null +++ b/samples/RMHTK/steps/step-14 @@ -0,0 +1,47 @@ +#!/bin/bash +source environment + +# dependencies +if [ ! -d $RMWORK/R9/ml/hmm54 ] +then + echo ERROR: step 14 depends on completion of step 9 + exit 1 +fi + + +# This section describes how to adjust the number of mixture model +# components to reduce model size. + +mkdir -p $RMWORK/R14/ml +cd $RMWORK/R14/ml +cp $RMWORK/R9/ml/HTE . + +# Prepare edit file + +echo -e "LS $RMWORK/R9/ml/hmm54/stats\nPS 6 0.2 3" > edfile.ps.4.1 + +# Prepare configuration file + +echo "MINMIXUPOCC = 100" > hhed.cfg + +mkdir hmm0 +HHEd -A -B -C hhed.cfg -D -T 1 -H $RMWORK/R9/ml/hmm54/MODELS -M hmm0 edfile.ps.4.1 $RMLIB/mlists/treeg.list > hmm0/LOG + +hbuild 1 4 +htestrm HTE wp feb89 hmm4 + +echo -e 'LS hmm4/stats\nPS 6 0.2 2' > edfile.ps.4.2 +mkdir hmm10 +HHEd -A -B -C hhed.cfg -D -T 1 -H hmm4/MODELS -M hmm10 edfile.ps.4.2 $RMLIB/mlists/treeg.list > hmm10/LOG + +hbuild 11 14 +htestrm HTE wp feb89 hmm14 + +echo -e 'LS hmm14/stats\nPS 6 0.2 1' > edfile.ps.4.3 +mkdir hmm20 +HHEd -A -B -C hhed.cfg -D -T 1 -H hmm14/MODELS -M hmm20 edfile.ps.4.3 $RMLIB/mlists/treeg.list > hmm20/LOG + +hbuild 21 24 +htestrm HTE wp feb89 hmm24 + +echo step 14 completed diff --git a/samples/RMHTK/steps/step-15 b/samples/RMHTK/steps/step-15 new file mode 100755 index 0000000..7562391 --- /dev/null +++ b/samples/RMHTK/steps/step-15 @@ -0,0 +1,163 @@ +#!/bin/bash + +#set verbose + +############################################################ +# Step 15: Bottleneck DNN building and feature generation +############################################################ + +source environment + +# dependencies +if [ ! -d $RMWORK/R9/ml/hmm4 ] +then + echo ERROR: step 15 depends on completion of step 9 + exit 1 +fi + +if [[ ! -d ${RMWORK}/R15/dnntrain ]]; then + mkdir -p ${RMWORK}/R15/dnntrain +fi + +# 15.1 Forced alignment by R11/mpe to produce the training labels + +# link/copy the resources +cd ${RMWORK}/R15/dnntrain + +if [[ ! -d hmm0 ]]; then + mkdir hmm0 +fi + +# link R11/mpe/hmm2 for alignment & bottleneck DNN output target states +if [[ ! -f hmm0/MODELS ]]; then + ln -s ${RMWORK}/R9/ml/hmm4/MODELS hmm0/MODELS +fi + +# copy the (logical triphone state) alignment HTE for DNN training +cp $RMHTK/lib/htefiles/HTE.align.trn . + +# perform forced alignment +htestrm HTE.align.trn ind trn109 hmm0 +ln -s $PWD/hmm0/align_ind_trn109.1/ind_trn109.mlf train.mlf +egrep -w 'lab|rec' train.mlf | awk -f $RMHTK/lib/awks/mlflabs2scp.awk - a=1 $RMLIB/flists/ind_trn109.scp | sort > ind_trn109.scp + +# 15.2 Generate intial DNN-HMM and prepare for DNN training +cp $RMHTK/lib/configs/config.dnncvn . +cp $RMHTK/lib/configs/config.dnnbasic . +cp $RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn . + +# do CMN & CVN +if [[ ! -d cvn/mfc ]]; then + mkdir -p cvn/mfc +fi +HCompV -p '*%%%' -k '*.%%%' -A -D -V -T 1 -C config.dnncvn -q v -c cvn -S $RMLIB/flists/ind_trn109.scp > cvn/LOG + +# split the train and validation sets +python $RMHTK/python_scripts/SubsetSCP.py --percent 0.1 --speakermask '%%%%%%' --speaker ind_trn109.scp cv.scp +comm -3 ind_trn109.scp cv.scp > train.scp + +# generate the initial 3-layer DNN-HMMs +cp $RMHTK/lib/htefiles/HTE.dnn.bn . +source HTE.dnn.bn +cp $RMHTK/lib/replacesil.hed . +cp $RMHTK/python_scripts/GenInitDNN.py . +cp $RMLIB/mlists/treeg.list . +# convert to single silence state model +if [[ ! -f proto/work ]]; then + mkdir -p proto/work +fi +HHEd -A -D -V -T 1 -H hmm0/MODELS -M proto/work replacesil.hed treeg.list > proto/work/LOG + +# 15.3 Do layerwise discriminative pretraining and finetuning +if [[ ! -z $HTKLIB ]]; then + HTKLIB='-LIB '$HTKLIB +else + HTKLIB='' +fi +pretrain $HTKLIB -HNTRAINSGD $HTKBIN/HNTrainSGD -HHED $HTKBIN/HHEd HTE.dnn.bn +finetune $HTKLIB -HNTRAINSGD $HTKBIN/HNTrainSGD HTE.dnn.bn + +# 15.4 Write out the bottleneck features by HNForward +if [[ ! -d ${RMWORK}/R15/dnnfwd ]]; then + mkdir -p ${RMWORK}/R15/dnnfwd +fi + +# link/copy the resources +cd ${RMWORK}/R15/dnnfwd +cp $RMHTK/lib/configs/config.dnnbasic . +cp $RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn . +cp $RMHTK/lib/htefiles/HTE.dnn.bn . +ln -s ${RMWORK}/R15/dnntrain/cvn . +cp $RMLIB/mlists/treeg.list treeg.list +ln -s ${RMWORK}/R15/dnntrain/dnn*.finetune . +cp ${RMHTK}/lib/configs/config.mfc.uncompress . +cp ${RMHTK}/lib/configs/config.mlp.uncompress . +cp ${RMHTK}/lib/configs/config.tandem.compress . +cp ${RMHTK}/python_scripts/CatHTKFeatures.py . + +# Add other test sets (ind_oct89 ind_feb91 ind_sep92) if needed +for taskid in ind_trn109 ind_feb89 +do + cp $RMLIB/flists/${taskid}.scp . + # forward the bottleneck features + mkdir -p data/mlp/${taskid} + python $RMHTK/python_scripts/ConvertExtSCP.py -x mlp -o $PWD/data/mlp/${taskid} -n ${taskid}.scp ${taskid}.mlp.scp + forward $HTKLIB -HNFORWARD $HTKBIN/HNForward -HHED $HTKBIN/HHEd HTE.dnn.bn $taskid + # form the tandem features + mkdir -p data/tandem/${taskid} + python $RMHTK/python_scripts/ConvertExtSCP.py -x pma -o $PWD/data/tandem/${taskid} -n ${taskid}.scp ${taskid}.tandem.scp + addmlp $HTKLIB -HCOPY $HTKBIN/HCopy ${taskid}.scp data/mlp/${taskid} data/tandem/${taskid} + rm -r data/mlp/${taskid} +done + +# 15.5 generate initial 78d tandem GMM-HMMs, hmm0/MODELS +if [[ ! -d ${RMWORK}/R15/dnn.semit ]]; then + mkdir -p ${RMWORK}/R15/dnn.semit +fi +cd $RMWORK/R15/dnn.semit + +if [[ ! -d ${RMWORK}/R9/ml/hmm4 ]]; then + echo "ERROR: ${RMWORK}/R9/ml/hmm4 required as tandem system prototype" +fi + +mkdir -p hmm0/init +ln -s $RMWORK/R9/ml/hmm4/MODELS hmm0/init +cp $RMHTK/lib/maketandem.hed hmm0 +HHEd -A -D -V -B -T 1 -H hmm0/init/MODELS -w hmm0/MODELS hmm0/maketandem.hed $RMLIB/mlists/treeg.list > hmm0/LOG + +# 15.6 estimate a global semi-tied transform to de-correlate the tandem features +cp $RMHTK/lib/htefiles/HTE.tandem.semit . +# Add other test sets (ind_oct89 ind_feb91 ind_sep92) if needed +for taskid in ind_trn109 ind_feb89 +do + cp $RMWORK/R15/dnnfwd/${taskid}.tandem.scp ${taskid}.scp +done + +cat <<__EOF__ >hmm0/global + ~b "global" + * + MIXBASE + 1 + 1 {*.state[2-4].mix[1-100]} +__EOF__ + +herest HTE.tandem.semit hmm0 hmm1 + +# 15.7 refine the tandem system with further iterations of ML training. +#This can be simply done by commenting out the line associated with "HEUPD=stw". +cp HTE.tandem.semit HTE + +cat <<__EOF__ | ed HTE +/HEUPD/s/^/# / +wq +__EOF__ + +herest HTE hmm1 hmm2 +herest HTE hmm2 hmm3 +herest HTE hmm3 hmm4 + +# Finally evaluate the performance +htestrm HTE wp feb89 hmm4 + +echo step 15 completed + diff --git a/samples/RMHTK/steps/step-16 b/samples/RMHTK/steps/step-16 new file mode 100755 index 0000000..2fac56c --- /dev/null +++ b/samples/RMHTK/steps/step-16 @@ -0,0 +1,81 @@ +#!/bin/bash + +#set verbose + +############################################################ +# Step 16: Hybrid DNN-HMM cross-entropy training +############################################################ + +source environment + +if [[ ! -d ${RMWORK}/R16/dnntrain ]]; then + mkdir -p ${RMWORK}/R16/dnntrain +fi + +# 16.1 Forced alignment by R11/mpe to produce the training labels +if [[ ! -d ${RMWORK}/R9/ml/hmm4 ]]; then + echo "ERROR: ${RMWORK}/R9/ml/hmm4 required for alignment" +fi + +# link/copy the resources +cd ${RMWORK}/R16/dnntrain + +if [[ ! -d hmm0 ]]; then + mkdir hmm0 +fi +# link R11/mpe/hmm2 for alignment & bottleneck DNN output target states +if [[ ! -f hmm0/MODELS ]]; then + ln -s ${RMWORK}/R9/ml/hmm4/MODELS hmm0/MODELS +fi + +# copy the (logical triphone state) alignment HTE for DNN training +cp $RMHTK/lib/htefiles/HTE.align.trn . + +# perform forced alignment +htestrm HTE.align.trn ind trn109 hmm0 +ln -s $PWD/hmm0/align_ind_trn109.1/ind_trn109.mlf train.mlf +egrep -w 'lab|rec' train.mlf | awk -f $RMHTK/lib/awks/mlflabs2scp.awk - a=1 $RMLIB/flists/ind_trn109.scp | sort > ind_trn109.scp + +# 16.2 Generate intial DNN-HMM and prepare for DNN training +cp $RMHTK/lib/configs/config.dnncvn . +cp $RMHTK/lib/configs/config.dnnbasic . +cp $RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn . + +# do CMN & CVN +if [[ ! -d cvn/mfc ]]; then + mkdir -p cvn/mfc +fi +HCompV -p '*%%%' -k '*.%%%' -A -D -V -T 1 -C config.dnncvn -q v -c cvn -S ind_trn109.scp > cvn/LOG + +# split the train and validation sets +python $RMHTK/python_scripts/SubsetSCP.py --percent 0.1 --speakermask '%%%%%%' --speaker ind_trn109.scp cv.scp +comm -3 ind_trn109.scp cv.scp > train.scp + +# generate the initial 3-layer DNN-HMMs +cp $RMHTK/lib/htefiles/HTE.dnn.am . +source HTE.dnn.am +cp $RMHTK/python_scripts/GenInitDNN.py . +cp $RMLIB/mlists/treeg.list treeg.list +# convert to single silence state model +if [[ ! -f proto/work ]]; then + mkdir -p proto/work +fi +cp hmm0/MODELS proto/work/ + +# 14.3 Do layerwise discriminative pretraining and finetuning +if [[ ! -z $HTKLIB ]]; then + HTKLIB='-LIB '$HTKLIB +else + HTKLIB='' +fi +pretrain $HTKLIB -HNTRAINSGD $HTKBIN/HNTrainSGD -HHED $HTKBIN/HHEd HTE.dnn.am +finetune $HTKLIB -HNTRAINSGD $HTKBIN/HNTrainSGD HTE.dnn.am + + +# Finally evaluate the performance +cp $RMHTK/lib/htefiles/HTE.dnn.decode . +htestrm $HTKLIB -HVITE $HTKBIN/HVite HTE.dnn.decode wp feb89 dnn7.finetune + +echo step 16 completed + + diff --git a/samples/RMHTK/steps/step-17 b/samples/RMHTK/steps/step-17 new file mode 100755 index 0000000..bad1002 --- /dev/null +++ b/samples/RMHTK/steps/step-17 @@ -0,0 +1,90 @@ +#!/bin/bash + +#set verbose + +############################################################ +# Step 17: Hybrid DNN-HMM MPE training +############################################################ + +source environment + +# dependencies +if [[ ! -d $RMWORK/R16/dnntrain/dnn7.finetune ]]; then + echo ERROR: step 17 depends on completion of step 16 + exit 1 +fi + +# 17.1 Lattice Generation +# The first step is to generate lattices that have the start and end times +# for each phone marked (this is for efficiency in training). This involves +# the following stepes +# i) convert word-pair network into an N-gram language model +# ii) generate word-lattices +# iii) mark the start and end times for each phone in the word-lattices +# iv) generate new training scp file + +# Note to illustrate the effects of discriminative training a single +# component cross-word triphone system is used. + +if [[ ! -d $RMWORK/R17/dnnmpe ]]; then + mkdir -p $RMWORK/R17/dnnmpe +fi +cd $RMWORK/R17/dnnmpe + +# setup the library to run the binaries +if [[ ! -z $HTKLIB ]]; then + HTKLIB='-LIB '$HTKLIB +else + HTKLIB='' +fi + +if [[ ! -d latgen ]]; then + mkdir -p latgen/hmm0 + cd latgen + ln -s $RMWORK/R16/dnntrain/dnn7.finetune/MODELS hmm0/MODELS + + # Copy the HTE file associated with lattice generation and phone marking + if [[ ! -d lattices ]]; then + mkdir lattices + fi + cp $RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn lattices + cp -r $RMWORK/R16/dnntrain/cvn lattices + cp $RMHTK/lib/htefiles/HTE.dnn.latgen . + cp $RMHTK/lib/configs/config.dnn.hd $RMLIB/configs + + # Create a monophone dictionary suitable for HDecode (strip the final "sp") + if [[ ! -f $RMLIB/dicts/mono.hd.dct ]]; then + cd $RMLIB/dicts + sed 's/sp//g' mono.dct > mono.hd.dct + cd $RMWORK/R17/dnnmpe/latgen + fi + + # All 4 steps can then be run using + latgen-dnn $HTKLIB -HDECODE $HTKBIN/HDecode -HDECODEMOD $HTKBIN/HDecode.mod -LATSCP $PWD/lattices/train.lat.scp HTE.dnn.latgen hmm0 lattices + cd .. +fi + +# 17.2 MPE Model Training +#Having generated the training lattices dsicriminative training can now be run. +ln -s $RMWORK/R17/dnnmpe/latgen/lattices/lattices . +ln -s $RMWORK/R17/dnnmpe/latgen/lattices/train.lat.scp train.scp + +#Create directories and copy the HTE file +cp $RMWORK/R16/dnntrain/config.dnnbasic . +cp $RMHTK/lib/info/ident_MFCC_E_D_A_Z_cvn . +cp -r $RMWORK/R16/dnntrain/cvn . +cp $RMWORK/R16/dnntrain/treeg.list . +mkdir hmm0 +ln -s $RMWORK/R16/dnntrain/dnn7.finetune/MODELS hmm0/MODELS +cp $RMHTK/lib/htefiles/HTE.dnn.mpe HTE + +# Now perform 2 iterations of MPE training +sequence $HTKLIB -HNTRAINSGD $HTKBIN/HNTrainSGD HTE + +# And then test the MPE models +cp $RMHTK/lib/htefiles/HTE.dnn.decode . + +htestrm -HVITE $HTKBIN/HVite HTE.dnn.decode wp feb89 hmm1 +htestrm -HVITE $HTKBIN/HVite HTE.dnn.decode wp feb89 hmm2 + +echo step 17 completed diff --git a/samples/RMHTK/steps/step-2 b/samples/RMHTK/steps/step-2 new file mode 100755 index 0000000..58d4a6f --- /dev/null +++ b/samples/RMHTK/steps/step-2 @@ -0,0 +1,75 @@ +#!/bin/bash +############################################################ +# Step 2: Multiple Mixture Monophones +############################################################ + +source environment +# 2.1 Mixture splitting + +# The models created in Step 1 will be converted to multiple mixture +# models by iterative "mixture splitting" and re-training. +# Mixture-splitting is performed by HHEd by taking an output +# distribution with M output components, choosing the components with +# the largest mixture weights and making two mixtures where there was +# one before by perturbing the mean values of the split mixture +# components. This can be done on a state-by-state basis but here all +# states will be mixture split. + +# A script interface to HHEd called hedit takes a script of HHEd +# commands and applies them. First two-mixture models will be created, +# with the initial models in $RMWORK/R2/ml/hmm10 formed by +# mixture-splitting the models in $RMWORK/R1/ml/hmm4. + +# First create the directory to hold the multiple mixture monophones +# and link all the files and directories to the new directory. + +mkdir -p $RMWORK/R2/ml +cd $RMWORK/R2/ml +ln -s $RMWORK/R1/ml/* . + +# Now store the HHEd commands required in a file called edfile4.10 in +# $RMWORK/R2/ml. This file need contain only the line + +cat< $RMWORK/R2/ml/edfile4.10 +MU 2 {*.state[2-4].mix} +EOD + +# This command this will split into 2 mixtures all the states of all +# models in the HMMLIST defined in the HTE file. Now invoke hedit by + +cd $RMWORK/R2/ml +hedit 4 10 + +# This creates 2 mixture initial hmms in $RMWORK/R2/ml/hmm10. + + +# 2.2 Retraining and testing the two-mixture models + +# Run four iterations of HERest to re-train the models + +cd $RMWORK/R2/ml +hbuild 11 14 + +# and then test them with HVite (again recognition settings may need +# adjusting) +cd $RMWORK/R2/ml +htestrm HTE wp feb89 hmm14 + +# and run other tests as required. + + +# 2.3 Iterative mixture-splitting + +# The mixture splitting and re-training can be done repeatedly and it +# is suggested that after the 2 mixture models are trained in order 3 +# mixture, 5 mixture 7 mixture, 10 mixture and 15 mixture models are +# trained. Each cycle requires forming a file containing the +# appropriate HHEd MU command, running hedit, running hbuild and then +# testing the models with htestrm. + +# Note that it is quite possible to go straight from 1 mixture models +# to 5 mixture models. However usually better performance results from +# a given number of mixture components if the model complexity is +# increased in stages. + +echo step 2 completed diff --git a/samples/RMHTK/steps/step-3 b/samples/RMHTK/steps/step-3 new file mode 100755 index 0000000..0a70154 --- /dev/null +++ b/samples/RMHTK/steps/step-3 @@ -0,0 +1,136 @@ +#!/bin/bash +############################################################ +# Step 3: Tied Mixture Monophones +############################################################ +source environment +# 3.1 Tied Mixture Initialisation + +# The models created in step 2 will be converted to a set of +# tied-mixture models using HHEd. This conversion is performed in +# three phases. First the set of Gaussians that represent the models +# are pooled by choosing those with the highest weights. Then the +# models are rebuilt to share these Gaussians and the mixture weights +# recalculated. Finally the representation of the models changed to +# TIEDHS. + +# First create the directory to hold the tied mixture monophones and +# copy over the HTE file. + +if [ ! -d $RMWORK/R3/ml ] +then + mkdir -p $RMWORK/R3/ml +fi + +cd $RMWORK + +# Create an HHEd edit file in $RMWORK/R3/ml called tied.hed containing +# the following commands. + +cat< $RMWORK/R3/ml/tied.hed +JO 128 2.0 +TI MIX_ {*.state[2-4].stream[1].mix} +HK TIEDHS +EOF + +# Create a directory for the initial tied mixture models and run HHEd. + +cd $RMWORK/R3/ml +mkdir hmm0 +HHEd -A -D -V -T 1 -H $RMWORK/R2/ml/hmm4/MODELS -w hmm0/MODELS tied.hed \ + $RMLIB/mlists/mono.list + +# 3.2 Tied Mixture training and testing + +# In the HTE file the line + +cat <<__EOF__ > $RMWORK/R3/ml/HTE +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=\$RMWORK +set rmdata=\$RMDATA +set rmlib=\$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG \$rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG \$rmlib/configs/config.basic # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=\$rmlib/mlists/mono.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=\$rmlib/flists/ind_trn109.scp +set TRAINMLF=\$rmlib/labs/mono.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if (\$?TESTSET) then + set TESTDATALIST=\$rmlib/flists/ind_\${TESTSET}.scp + set TESTMLF=\$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=600.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=(\$rmlib/nets/net.ng \$rmlib/nets/net.wp) +set HVVOC=(\$rmlib/dicts/mono.dct \$rmlib/dicts/mono.dct) +set HVPRUNE=(150.0 100.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(2.0 2.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=\$rmlib/wordlist +set HREQSETS=(\$rmlib/eq.ng \$rmlib/eq.wp) +set HRNIST + +set TMTHRESH=20 + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# +__EOF__ + + +# now controls tied mixture as well as forward pass mixture pruning. +# Finally build the models + +cd $RMWORK/R3/ml +hbuild 1 4 + +# and then test them with HVite (recognition settings will need +# adjusting. Try setting the grammar scale to 2.0 rather than 7.0 and +# speed things up a little by changing the pruning beam width from +# 200.0 to 100.0). + +cd $RMWORK/R3/ml +htestrm HTE wp feb89 hmm4 + +echo step 3 complete diff --git a/samples/RMHTK/steps/step-4 b/samples/RMHTK/steps/step-4 new file mode 100755 index 0000000..c2bc9b4 --- /dev/null +++ b/samples/RMHTK/steps/step-4 @@ -0,0 +1,255 @@ +#!/bin/bash +############################################################ +# Step 4: Discrete Density Monophones +############################################################ +source environment +# 4.1 Vector quantiser creation + +# Since all the observation have to be held in memory for this +# operation (which can be computationally expensive) we will perform +# this on a subset of the data. Please note that this process can take +# a considerable amount of time. + +if [ ! -d $RMWORK/R4/ml ] +then + mkdir -p $RMWORK/R4/ml +fi +if [ ! -d $RMWORK/R4/ml/hmm0 ] +then + mkdir -p $RMWORK/R4/ml/hmm0 +fi + +cd $RMWORK/R4/ml +gawk '{ if ((++i%10)==1) print }' $RMLIB/flists/ind_trn109.scp \ + > ind_trn109.sub.scp +HQuant -A -D -V -T 1 -d -n 1 128 -n 2 128 -n 3 128 -n 4 32 -s 4 -S \ + ind_trn109.sub.scp -C $RMLIB/configs/config.basic vq.table + +# 4.2 Align data and initialise discrete models + +# To create some discrete models we are going to use HInit and HRest +# both of which need data aligned at the phone level. We will use the +# monophones from either R1 or R2 to generate phone labels for the +# subset of the data used for the codebook. + +HVite -A -D -V -T 1 -C $RMLIB/configs/config.basic -H ../../R1/ml/hmm4/MODELS \ + -a -m -o SW -i ind_trn109.sub.mlf -X lab -b '!SENT_START' \ + -l '*' -y lab -I $RMLIB/wlabs/ind_trn109.mlf -t 500.0 -s 0.0 -p 0.0 \ + -S ind_trn109.sub.scp $RMLIB/dicts/mono.dct $RMLIB/mlists/mono.list + +# 4.3 Create a prototype hmm set + +# This can be done using the MakeProtoHMMSet discrete.pcf or by +# creating a file like the one below for each of the models apart from +# sp which should only have three states so that is reproduced in +# full. +for i in `cat $RMLIB/mlists/mono.list` +do +cat< hmm0/$i + ~o 39 4 12 12 12 3 + ~h "${i}" + + 5 + 2 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + + 3 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + + 4 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + + 5 + 0.000e+0 1.000e+0 0.000e+0 0.000e+0 0.000e+0 + 0.000e+0 6.000e-1 4.000e-1 0.000e+0 0.000e+0 + 0.000e+0 0.000e+0 6.000e-1 4.000e-1 0.000e+0 + 0.000e+0 0.000e+0 0.000e+0 6.000e-1 4.000e-1 + 0.000e+0 0.000e+0 0.000e+0 0.000e+0 0.000e+0 + +EOF +done + +cat< hmm0/sp + ~o 39 4 12 12 12 3 + ~h "sp" + + 5 + 2 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + 3 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + 4 128 128 128 32 + 1 + 11508*128 + 2 + 11508*128 + 3 + 11508*128 + 4 + 8220*32 + 5 + 0.000e+0 4.000e-1 2.000e-1 2.000e-1 2.000e-1 + 0.000e+0 4.000e-1 2.000e-1 2.000e-1 2.000e-1 + 0.000e+0 0.000e+0 4.000e-1 3.000e-1 3.000e-1 + 0.000e+0 0.000e+0 0.000e+0 5.000e-1 5.000e-1 + 0.000e+0 0.000e+0 0.000e+0 0.000e+0 0.000e+0 + +EOF + +# MakeProtoHMMSet $RMLIB/discrete.pcf + +# Then initialise the models. Note that the following script commands +# assume that you running csh unix shell. These commands vary for +# different shells. + +mkdir hmm1 +for i in `cat $RMLIB/mlists/mono.list` +do + HInit -T 1 -C $RMLIB/configs/config.discrete -M hmm1 -l $i \ + -I ind_trn109.sub.mlf -S ind_trn109.sub.scp hmm0/$i > hmm1/LOG.$i +done + +# And reestimate them. + +mkdir hmm2 +for i in `cat $RMLIB/mlists/mono.list` +do + HRest -T 1 -C $RMLIB/configs/config.discrete -M hmm2 -l $i \ + -I ind_trn109.sub.mlf -S ind_trn109.sub.scp hmm1/$i > hmm2/LOG.$i +done + +# Create an HHEd script edfile2.3 with the single command +cat< edfile2.3 +AT 1 5 0.8 { sp.transP } +EOF + +# This will add back the tee-transition in sp deleted by HInit and +# HRest and will also produce a single MMF + +mkdir hmm3 +HHEd -A -D -V -T 1 -d hmm2 -w hmm3/MODELS edfile2.3 $RMLIB/mlists/mono.list + +# Copy the standard HTE file from the R1 directory and change the +# configuration file names to use the discrete configuration file. + +cat <<__EOF__ > $RMWORK/R4/ml/HTE +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=\$RMWORK +set rmdata=\$RMDATA +set rmlib=\$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c \$.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG \$rmlib/configs/config.discrete # Basic configuration +setenv HVCONFIG \$rmlib/configs/config.discrete # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=\$rmlib/mlists/mono.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=\$rmlib/flists/ind_trn109.scp +set TRAINMLF=\$rmlib/labs/mono.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if (\$?TESTSET) then + set TESTDATALIST=\$rmlib/flists/ind_\${TESTSET}.scp + set TESTMLF=\$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=600.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=(\$rmlib/nets/net.ng \$rmlib/nets/net.wp) +set HVVOC=(\$rmlib/dicts/mono.dct \$rmlib/dicts/mono.dct) +set HVPRUNE=(150.0 100.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(2.0 2.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=\$rmlib/wordlist +set HREQSETS=(\$rmlib/eq.ng \$rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# +__EOF__ + +# Then train the models + +hbuild 4 7 + +# and then test them with HVite (recognition settings will need +# adjusting. Try setting the grammar scale to 2.0 rather than 7.0 and +# speed things up a little by changing the pruning beam width from +# 200.0 to 100.0). + + +htestrm HTE wp feb89 hmm7 + +echo step 4 complete diff --git a/samples/RMHTK/steps/step-5 b/samples/RMHTK/steps/step-5 new file mode 100755 index 0000000..ef6ef62 --- /dev/null +++ b/samples/RMHTK/steps/step-5 @@ -0,0 +1,155 @@ +#!/bin/bash +############################################################ +# Step 5: Single-Mixture Word-Internal Triphones +############################################################ +source environment +# 5.1 Triphone dictionary and model-list creation + +# First a new dictionary is needed. This can be created using the tool +# HDMan with the supplied script tri.ded. This creates word-internal +# triphones for each word in the dictionary and creates a +# context-dependent model list as a by-product. Create a triphone +# dictionary as follows. + +cd $RMLIB/dicts +HDMan -A -D -V -T 1 -n $RMLIB/mlists/tri.list -g $RMHTK/lib/dicts/tri.ded \ + tri.dct mono.dct + + +# 5.2 Triphone training label files + +# Create the triphone phone-level training label files +# in the file $RMLIB/labs/tri.mlf. + +cd $RMLIB +HLEd -A -D -V -l '*' -i labs/tri.mlf -d dicts/tri.dct $RMHTK/lib/labs/tri.hled wlabs/ind_trn109.mlf + +# 5.3 Initial models + +# Next an initial set of triphone models are created by cloning the +# monophone models using HHEd. First create a directory with a copy of +# R1/HTE. + +cd $RMWORK +mkdir -p R5/ml +cat <<__EOF__ > $RMWORK/R5/ml/HTE +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=\$RMWORK +set rmdata=\$RMDATA +set rmlib=\$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c \$.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG \$rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG \$rmlib/configs/config.basic # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=\$rmlib/mlists/tri.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=\$rmlib/flists/ind_trn109.scp +set TRAINMLF=\$rmlib/labs/tri.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if (\$?TESTSET) then + set TESTDATALIST=\$rmlib/flists/ind_\${TESTSET}.scp + set TESTMLF=\$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=1000.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=(\$rmlib/nets/net.ng \$rmlib/nets/net.wp) +set HVVOC=(\$rmlib/dicts/tri.dct \$rmlib/dicts/tri.dct) +set HVPRUNE=(150.0 200.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=\$rmlib/wordlist +set HREQSETS=(\$rmlib/eq.ng \$rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# +__EOF__ + + +# Edit R5/ml/HTE to change the title, HMMLIST, TRAINMLF and HVVOC +# parameters replacing mono with tri. + +# For convenience, create local copies (links) of both the monophone +# list and the triphone list. + +cd $RMWORK/R5/ml +ln -s $RMLIB/mlists/mono.list mono.list +ln -s $RMLIB/mlists/tri.list tri.list + +# Create an HHEd edit file in $RMWORK/R5/ml called clone.hed containing +# the following commands. + +cat< $RMWORK/R5/ml/clone.hed +MM "trP_" { *.transP } +CL "tri.list" +EOF + +# Create a directory for the initial cloned triphones and run HHEd. + +mkdir hmm0 +HHEd -A -D -V -B -T 1 -H $RMWORK/R1/ml/hmm4/MODELS -w hmm0/MODELS clone.hed mono.list + +# 5.4 Triphone training + +# The HERest pruning threshold should be increased for triphone +# models. In HTE, change the value of HEPRUNE to 1000.0. Then build +# the new set of models using hbuild. + +# Note that for future use (state-clustering) a statistics file for +# the final run should be created. This is achieved by the following +# line in the HTE file. + +export HESTATS=stats +cd $RMWORK/R5/ml +hbuild 1 2 + +# 5.5 Triphone Testing + +# Test the models using htestrm as usual. + +htestrm HTE wp feb89 hmm2 + +# It may be found that it is necessary to adjust some of the +# word-insertion or pruning penalties for triphone models. + +echo step 5 complete diff --git a/samples/RMHTK/steps/step-6 b/samples/RMHTK/steps/step-6 new file mode 100755 index 0000000..3e54ff5 --- /dev/null +++ b/samples/RMHTK/steps/step-6 @@ -0,0 +1,150 @@ +#!/bin/bash +############################################################ +# Step 6: Tied-Mixture Word-Internal Triphones +############################################################ +source environment +# 6.1 Tied Mixture Initialisation + +# The models created in step 2 will be converted to a set of triphones +# in a similar way to that used in step 5. At the same time the single +# stream continuous models will be converted to tied-mixture and +# expanded to use four streams. + +# First create an initial set of models. + +mkdir -p $RMWORK/R6/ml +cd $RMWORK/R6/ml + +ln -s $RMLIB/mlists/mono.list mono.list +ln -s $RMLIB/mlists/tri.list tri.list + +cat <<__EOF__ > $RMWORK/R6/ml/HTE +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=\$RMWORK +set rmdata=\$RMDATA +set rmlib=\$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c \$.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG \$rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG \$rmlib/configs/config.basic # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=\$rmwork/R6/ml/tri.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=\$rmlib/flists/ind_trn109.scp +set TRAINMLF=\$rmlib/labs/tri.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if (\$?TESTSET) then + set TESTDATALIST=\$rmlib/flists/ind_\${TESTSET}.scp + set TESTMLF=\$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=600.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=(\$rmlib/nets/net.ng \$rmlib/nets/net.wp) +set HVVOC=(\$rmlib/dicts/mono.dct \$rmlib/dicts/mono.dct) +set HVPRUNE=(150.0 200.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=\$rmlib/wordlist +set HREQSETS=(\$rmlib/eq.ng \$rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# +__EOF__ + +# Create an HHEd edit file in $RMWORK/R6/ml called clone.hed containing +# the following commands. + +cat< $RMWORK/R6/ml/clone.hed +MM "trP_" { *.transP } +SS 4 +JO 128 2.0 +TI MIX_1_ {*.state[2-4].stream[1].mix} +JO 128 2.0 +TI MIX_2_ {*.state[2-4].stream[2].mix} +JO 128 2.0 +TI MIX_3_ {*.state[2-4].stream[3].mix} +JO 32 2.0 +TI MIX_4_ {*.state[2-4].stream[4].mix} +UT {sp.state[2-4]} +HK TIEDHS +CL "tri.list" +EOF + +# Create a directory for the initial cloned triphones and run HHEd. + +mkdir hmm0 +HHEd -A -D -V -B -T 1 -H $RMWORK/R2/ml/hmm4/MODELS -w hmm0/MODELS clone.hed mono.list + +# Then train the models + +hbuild 1 2 + +# and test them using htestrm as usual. + +htestrm HTE wp feb89 hmm2 + +# As a final stage to training it is possible to use deleted +# interpolation smoothing to provide more robust estimates for the +# mixture weights using HSmooth as the final stage of a parallel mode +# run of HERest + +for i in 1 2 3 4 +do + gawk '{ if ((++i%4)==(n%4)) print }' n=$i $RMLIB/flists/ind_trn109.scp \ + > ind_trn109.$i.scp +done +mkdir hmm3 +for i in 1 2 3 4 +do + HERest -A -D -V -H hmm2/MODELS -M hmm3 -T 1 -I $RMLIB/labs/tri.mlf \ + -t 600.0 -w 2.0 -c 20.0 -C $RMLIB/configs/config.basic \ + -p $i -S ind_trn109.$i.scp $RMLIB/mlists/tri.list > hmm3/LOG$i +done +HSmooth -A -D -V -H hmm2/MODELS -M hmm3 -T 1 -m 1 -w 2.0 -s hmm3/stats \ + -C $RMLIB/configs/config.basic $RMLIB/mlists/tri.list hmm3/HER* + +# Finally test these models as usual + +htestrm HTE wp feb89 hmm3 + +echo step 6 completed diff --git a/samples/RMHTK/steps/step-7 b/samples/RMHTK/steps/step-7 new file mode 100755 index 0000000..fa4b715 --- /dev/null +++ b/samples/RMHTK/steps/step-7 @@ -0,0 +1,167 @@ +#!/bin/bash +############################################################ +# Step 7: Single-Mixture Cross-Word Triphones +############################################################ +source environment +#7.1 Triphone model-list and training label file creation + +# First a set of cross word labels and a model list is needed for +# training. + +# These are generated using HLEd and the monophone label file. + +HLEd -A -D -V -l '*' -n $RMLIB/mlists/xwrd.list -i $RMLIB/labs/xwrd.mlf \ + $RMHTK/lib/labs/xwrd.hled $RMLIB/labs/mono.mlf + +# Note that this model list will not contain many of the triphones +# needed for testing (especially in the ng case). These models will +# have to be synthesised later. + + +# 7.2 Initial models + +# Next an initial set of triphone models are created by cloning the +# monophone models using HHEd. First create a directory with a copy of +# R1/HTE. + +cd $RMWORK +mkdir -p R7/ml + +cat <<__EOF__ > $RMWORK/R7/ml/HTE +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=\$RMWORK +set rmdata=\$RMDATA +set rmlib=\$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c \$.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG \$rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG \$rmlib/configs/config.basic # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=\$rmlib/mlists/xwrd.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=\$rmlib/flists/ind_trn109.scp +set TRAINMLF=\$rmlib/labs/xwrd.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if (\$?TESTSET) then + set TESTDATALIST=\$rmlib/flists/ind_\${TESTSET}.scp + set TESTMLF=\$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=1000.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=(\$rmlib/nets/net.ng \$rmlib/nets/net.wp) +set HVVOC=(\$rmlib/dicts/mono.dct \$rmlib/dicts/mono.dct) +set HVPRUNE=(150.0 200.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=\$rmlib/wordlist +set HREQSETS=(\$rmlib/eq.ng \$rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# +__EOF__ + +# Edit R7/ml/HTE to change the title, HMMLIST and TRAINMLF +# parameters replacing mono with xwrd. + +# For convenience, create local copies (links) of both the monophone +# list and the triphone list. + +cd $RMWORK/R7/ml +ln -s $RMLIB/mlists/mono.list mono.list +ln -s $RMLIB/mlists/xwrd.list xwrd.list + +# Create an HHEd edit file in $RMWORK/R7/ml called clone.hed containing the +# following commands. + +cat< $RMWORK/R7/ml/clone.hed +MM "trP_" { *.transP } +CL "xwrd.list" +EOF + +# Create a directory for the initial cloned triphones and run HHEd. +chmod +w $RMLIB/configs/config.basic +cat <> $RMLIB/configs/config.basic +HMODEL: SAVEBINARY = T +EOF + +mkdir hmm0 +HHEd -A -D -V -B -T 1 -H $RMWORK/R1/ml/hmm4/MODELS -w hmm0/MODELS clone.hed mono.list + +# Seeing this model set can be very large it is best to save it in +# binary format by using the -B flag in the above command and adding +# HMODEL: SAVEBINARY = T +# to the training configuration file $RMLIB/configs/config.basic + +### see above ### +#cat <> $RMLIB/configs/config.basic +#HMODEL: SAVEBINARY = T +#EOF + + +# 7.3 Triphone training + +# The HERest pruning threshold should be increased for triphone +# models. In HTE, change the value of HEPRUNE to 1000.0. Then build +# the new set of models using hbuild. + +# Note that for future use (state-clustering) a statistics file for +# the final run should be created and the models should be updated +# even if they only occur a few times. This is achieved by the +# following lines in HTE. + +#set HESTATS=stats # stats files aren't always needed but are interesting # +#set HEMINEG=0 # Potentially bad choice for unclustered models + +cd $RMWORK/R7/ml +hbuild 1 2 + +# 7.4 Cross-Word Triphone Testing + +# As mentioned above due to lack of coverage of the test condition +# because of missing models it is impractical to test the unclustered +# cross word triphone system. If the model list used for the CL +# command above contained all models needed for recognition testing +# would be possible however many of the models would still be using +# monophone parameters. + +echo step 7 completed diff --git a/samples/RMHTK/steps/step-8 b/samples/RMHTK/steps/step-8 new file mode 100755 index 0000000..42c82f9 --- /dev/null +++ b/samples/RMHTK/steps/step-8 @@ -0,0 +1,200 @@ +#!/bin/bash +############################################################ +# Step 8: State-Clustered Triphones +############################################################ +source environment +# 8.1 State clustering + +# In this section the triphones created in Step 5 will be state +# clustered, so that all states within the same cluster share a common +# output distribution. Corresponding states of different triphones of +# the same phone are candidates to be put in the same cluster. The +# clustering process groups states with similar distributions and also +# ensures (via the HHEd RO command) that any states with too few +# occupations to allow reliable estimates of a multiple mixture +# distribution are discarded. + +# 8.2 Initial models + +# The clustering process is performed by HHEd. To simplify preparing +# the HHEd script, mkclscript does most of the work. Given the +# monophone model list it generates for each model commands to tie all +# the transition matrices of each triphone together and also to +# cluster the states. It is assumed that each model in the list has +# three states. + +# However, the clustering commands should not be applied to the sil +# and sp models. First make a lost copy of mono.list and delete the +# entries for sp and sil, copy the HTE file from R5 and change the +# HMMLIST to use the clustered triphone list trig.list rather than the +# compete list tri.list + +mkdir -p $RMWORK/R8/ml +cd $RMWORK/R8/ml +cat <<__EOF__ > $RMWORK/R8/ml/HTE +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=\$RMWORK +set rmdata=\$RMDATA +set rmlib=\$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c \$.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG \$rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG \$rmlib/configs/config.basic # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=\$rmlib/mlists/trig.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=\$rmlib/flists/ind_trn109.scp +set TRAINMLF=\$rmlib/labs/tri.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if (\$?TESTSET) then + set TESTDATALIST=\$rmlib/flists/ind_\${TESTSET}.scp + set TESTMLF=\$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=600.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=(\$rmlib/nets/net.ng \$rmlib/nets/net.wp) +set HVVOC=(\$rmlib/dicts/tri.dct \$rmlib/dicts/tri.dct) +set HVPRUNE=(150.0 200.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=\$rmlib/wordlist +set HREQSETS=(\$rmlib/eq.ng \$rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# +__EOF__ + +egrep -v 'sil|sp' $RMLIB/mlists/mono.list > mono.list + +# Use the mkclscript to create the HHEd script + +echo 'RO 1000.0 stats' > cluster.hed +mkclscript TC 0.5 mono.list >> cluster.hed +echo 'CO "trig.list"' >> cluster.hed + +# These lines tell HHEd to allow a minimum number of state occupations +# of 100 and to compact the model set so that identical logical models +# share the same physical model list. Also make the final stats stats +# generated in R5 present in the current directory by executing + +ln -s ../../R5/ml/hmm2/stats stats + +# Make a directory for the new state-clustered models and run HHEd + + +cd $RMWORK/R8/ml +mkdir hmm0 +HHEd -A -D -V -T 1 -H $RMWORK/R5/ml/hmm2/MODELS -w hmm0/MODELS cluster.hed \ + $RMLIB/mlists/tri.list > clog + +# and copy the HMM list created to $RMLIB/mlists. + +cp trig.list $RMLIB/mlists + + +# 8.3 Building state-clustered models + +# Copy $RMWORK/R5/ml/HTE to the R8 directory, edit the title, and change +# the HMMLIST variable to $RMLIB/mlists/trig.list. + +# Now build a set of single mixture-state clustered triphones + +hbuild 1 4 + +# and test them as before. + +htestrm HTE wp feb89 hmm4 + + +# 8.4 Multiple mixture state-clustered triphones + +# Multiple mixture models for the state-clustered triphones are built +# exactly as for the monophone multiple mixture models. However in +# this case since there are more output distributions models with a +# smaller number of mixtures/distribution are built. It is suggested +# that 2 mixture, 3 mixture, 4 mixture and then 5 mixture models be +# built, and at each stage 4 iterations of HERest be performed. + +# To obtain the initial 2 mixture state-clustered triphones create the +# file $RMWORK/R8/ml/edfile4.10 containing the line + +cat< $RMWORK/R8/ml/edfile4.10 +MU 2 {*.state[2-4].mix} +EOF + +cat< $RMWORK/R8/ml/edfile14.20 +MU 3 {*.state[2-4].mix} +EOF + +cat< $RMWORK/R8/ml/edfile24.30 +MU 4 {*.state[2-4].mix} +EOF + +cat< $RMWORK/R8/ml/edfile34.40 +MU 5 {*.state[2-4].mix} +EOF + +cat< $RMWORK/R8/ml/edfile44.50 +MU 6 {*.state[2-4].mix} +EOF + +# run hedit to build a new set of models in hmm10 and then hbuild + +hedit 4 10 +hbuild 11 14 +hedit 14 20 +hbuild 21 24 +hedit 24 30 +hbuild 31 34 +hedit 34 40 +hbuild 41 44 +hedit 44 50 +hbuild 51 54 +htestrm HTE wp feb89 hmm54 + +# etc., until the 5 mixture models are built. + +# After each set of models have been build they can be tested using +# htestrm as usual. + +echo step 8 completed diff --git a/samples/RMHTK/steps/step-9 b/samples/RMHTK/steps/step-9 new file mode 100755 index 0000000..a3066f6 --- /dev/null +++ b/samples/RMHTK/steps/step-9 @@ -0,0 +1,230 @@ +#!/bin/bash +############################################################ +# Step 9: Tree-Clustered Tied-State Triphones +############################################################ +source environment +# 9.1 State clustering + +# In this section the triphones created in Step 5 or 7 will be state +# clustered. However rather than using the data-driven method of +# state clustering used in Step 8 a decision tree based one is used. +# This allows the synthesis of unseen triphones and thus makes it +# possible to produce cross-word context dependent systems. The +# clustering is used in a very similar way to that in Step 8 with +# sharing only possible within the same state of the same base phone. +# However the clustering proceeds in a top down manner by initially +# grouping all contexts and then splitting on the basis of questions +# about context. The questions used are chosen to maximise the +# likelihood of the training data whilst ensuring that each tied-state +# has a minimum occupancy (again using the HHEd RO command). + + +# 9.2 Initial models + +# The clustering process is performed by HHEd. To simplify preparing +# the HHEd script, mkclscript does most of the work and an example set +# of questions are supplied with the demo. Given the monophone model +# list it generates for each model commands to tie all the transition +# matrices of each triphone together and also to cluster the +# states. It is assumed that each model in the list has three states. + +# However, the clustering commands should not be applied to the sil +# and sp models. First make a lost copy of mono.list and delete the +# entries for sp and sil. + +mkdir -p $RMWORK/R9/ml +cd $RMWORK/R9/ml +egrep -v 'sil|sp' $RMLIB/mlists/mono.list > mono.list + +# We also need to generate a list of the complete set of models needed +# during recognition. +# If we are still using word internal models (from R5) we just use the +# same triphone list + +export src=R5 +export list=tri.list +cp $RMLIB/mlists/tri.list unseen.list + +# However for a cross-word system there are many contexts that we have +# not seen that can occur in our recognition networks. Rather than +# actually find out which models are needed it is easier to generate +# all possible monophones, biphones and triphones and this would also +# allow us to work with an arbitrary vocabulary. + + +export src=R7 +export list=xwrd.list +awk -f $RMLIB/awks/full.list.awk mono.list > unseen.list + +# Use the mkclscript to create the HHEd script + +echo 'RO 1000.0 stats' > cluster.hed +cat $RMHTK/lib/quests.hed >> cluster.hed +mkclscript TB 1000.0 mono.list >> cluster.hed +echo 'ST "trees"' >> cluster.hed +echo 'AU "unseen.list"' >> cluster.hed +echo 'CO "treeg.list"' >> cluster.hed + +# These lines tell HHEd to allow a minimum number of state occupations +# of 100 and to compact the model set so that identical logical models +# share the same physical model list. Also make the file stats +# generated in R5 or R7 present in the current directory by executing + +ln -s $RMWORK/$src/ml/hmm2/stats stats + +# Make a directory for the new state-clustered models and run HHEd + +cd $RMWORK/R9/ml +mkdir hmm0 +HHEd -A -D -V -T 1 -B -H $RMWORK/$src/ml/hmm2/MODELS -w hmm0/MODELS \ + cluster.hed $RMWORK/$src/ml/$list > clog + +# and copy the HMM list created to $RMLIB/mlists. + +cp treeg.list $RMLIB/mlists + + +# 9.3 Building state-clustered models + +# Copy $RMWORK/$src/HTE to the R9 directory, edit the title, and +# change the HMMLIST variable to $RMLIB/mlists/treeg.list and change +# the recognition configuration to use the cross word file. This sets +# FORCECXTEXP = TRUE to ensure that the cross word triphones are used +# rather than using the models with monophone or biphone context. It +# is also necessary to increase the pruning beam width somewhat as +# well as increase the word insertion penalty +cat <<__EOF__ > $RMWORK/R9/ml/HTE +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=\$RMWORK +set rmdata=\$RMDATA +set rmlib=\$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c \$.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG \$rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG \$rmlib/configs/config.xwrd # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=\$rmlib/mlists/treeg.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=\$rmlib/flists/ind_trn109.scp +set TRAINMLF=\$rmlib/labs/xwrd.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if (\$?TESTSET) then + set TESTDATALIST=\$rmlib/flists/ind_\${TESTSET}.scp + set TESTMLF=\$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=600.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=(\$rmlib/nets/net.ng \$rmlib/nets/net.wp) +set HVVOC=(\$rmlib/dicts/mono.dct \$rmlib/dicts/mono.dct) +set HVPRUNE=(200.0 300.0) +set HVIMPROB=(0.0 0.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) + +# HResults Results Analysis +set WORDLIST=\$rmlib/wordlist +set HREQSETS=(\$rmlib/eq.ng \$rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# +__EOF__ + + +# Now build a set of single mixture-state clustered triphones + +hbuild 1 4 + +# and test them as before. + +htestrm HTE wp feb89 hmm4 + + +# 9.4 Multiple mixture state-clustered triphones + +# Multiple mixture models for the state-clustered cross-word triphones +# are built exactly as for the word-internal triphone models. It is +# suggested that 2 mixture, 3 mixture, 4 mixture, 5 mixture and then 6 +# mixture models be built, and at each stage 4 iterations of HERest be +# performed. + +# To obtain the initial 2 mixture state-clustered triphones create the +# file $RMWORK/R9/edfile4.10 containing the line + + +# run hedit to build a new set of models in hmm10 and then hbuild +echo "MU 2 {*.state[2-4].mix}" > edfile4.10 +echo "MU 3 {*.state[2-4].mix}" > edfile14.20 +echo "MU 4 {*.state[2-4].mix}" > edfile24.30 +echo "MU 5 {*.state[2-4].mix}" > edfile34.40 +echo "MU 6 {*.state[2-4].mix}" > edfile44.50 +hedit 4 10 +hbuild 11 14 +htestrm HTE wp feb89 hmm14 +hedit 14 20 +hbuild 21 24 +htestrm HTE wp feb89 hmm24 +hedit 24 30 +hbuild 31 34 +htestrm HTE wp feb89 hmm34 +hedit 34 40 +hbuild 41 44 +htestrm HTE wp feb89 hmm44 +hedit 44 50 +hbuild 51 54 +htestrm HTE wp feb89 hmm54 + +# etc., until the 6 mixture models are built. + +# After each set of models have been build they can be tested using +# htestrm as usual. + +#NOTE: Due to the 'two' pronunciations for each word, one ending +# in sil and the other in sp, it is possible to get errors +# due to no token reaching the end of the network when sp +# is a significantly better model than sil. These can be +# avoided by raising the beam width (potentially wasteful) +# or by tying the center state of the sil model to the emitting +# state of the sp model and adding a transitions from 2->4, +# 3->2, 4->3 and 4->2 in the sil model. This reduces its +# minimum duration to 2 frames but more importantly allows +# it to circulate between states. See Step 7 of the Tutorial +# in the HTKBook. + +echo step 9 completed diff --git a/samples/RMHTK/work/R1/HTE b/samples/RMHTK/work/R1/HTE new file mode 100755 index 0000000..d67b807 --- /dev/null +++ b/samples/RMHTK/work/R1/HTE @@ -0,0 +1,70 @@ +#---------------------------------------------------------------# +# HTK RM Environment File 08/09/95 # +# # +# This version is for: # +# # +# Baseline - Monophones # +# 39th Order MFCC_E_D_A Data (data in MFCC_E format) # +# 1 Mixture/Diagonal/3 State no Skip + sp model # +# # +#---------------------------------------------------------------# + +# Set priority at which processes are run +set NICE = 5 + +# Define the rmwork and rmdata areas +set rmwork=$RMWORK +set rmdata=$RMDATA +set rmlib=$RMLIB + +# define input filters +setenv HNETFILTER 'gzip -d -c $.gz' # Networks compress well + +# Define input configuration files +setenv HECONFIG $rmlib/configs/config.basic # Basic configuration +setenv HVCONFIG $rmlib/configs/config.basic # Basic configuration + +# Define HMMs - should reflect current models set +set HMMLIST=$rmlib/mlists/mono.list # ****** # + +# Define Training Data and Label files for current models +set TRAINDATALIST=$rmlib/flists/ind_trn109.scp +set TRAINMLF=$rmlib/labs/mono.mlf # ****** # + +# Define Test Data +# Note that TESTSET is defined by htestrm before sourcing HTE +set SETLIST=(feb89 oct89 feb91 sep92) +if ($?TESTSET) then + set TESTDATALIST=$rmlib/flists/ind_${TESTSET}.scp + set TESTMLF=$rmlib/wlabs/ind_tst.mlf +endif + +# HERest Program Options +set HETRACE=1 +set HEMINWEIGHT=2.0 +set HETMTHRESH=20.0 # Only needs to be same order as numerical accuracy +set HEPRUNE=600.0 # 250==VERY TIGHT, 500==TIGHT, 1000==LOOSE # +set HESTATS=stats # stats files aren't always needed but are interesting # +set HEMINEG=0 # Potentially bad choice for unclustered models +#set HEUPD= + +# Define possible test conditions +set TYPELIST=(ng wp) + +# HVite Network Defn & Program Options +set HVTRACE=1 +set HVNET=($rmlib/nets/net.ng $rmlib/nets/net.wp) +set HVVOC=($rmlib/dicts/mono.dct $rmlib/dicts/mono.dct) +set HVPRUNE=(150.0 200.0) +set HVMAXACTIVE=(0 0) +set HVGSCALE=(7.0 7.0) +set HVIMPROB=(0.0 0.0) + +# HResults Results Analysis +set WORDLIST=$rmlib/wordlist +set HREQSETS=($rmlib/eq.ng $rmlib/eq.wp) +set HRNIST + +#---------------------------------------------------------------# +# END OF ENVIRONMENT DEFINITION # +#---------------------------------------------------------------# diff --git a/samples/RMHTK/work/R1/README b/samples/RMHTK/work/R1/README new file mode 100755 index 0000000..abec1b1 --- /dev/null +++ b/samples/RMHTK/work/R1/README @@ -0,0 +1,61 @@ + R1 - RM Speaker Independent Baseline Monophone Set + -------------------------------------------------- + +This directory contains the RM Baseline monophones. Each HMM except +sp is 3 state left-right single mixture. The set in hmm0/MODELS were +derived from the set of timit monophones (CMU 48 phone set) according +to the following mapping (states labelled 1->3). + + RM TIMIT + -- ----- + + iy iy + ih ih + eh eh + ae ae + ax ax + ah ah + uw uw + uh uh + ao ao + aa aa + ey ey + ay ay + oy oy + aw aw + ow ow + er er + l l + el el + r r + y y + w w + en en + m m + n n + ng ng + ch ch + jh jh + dh dh + b vcl b # vcl(2) + vcl(3) + b(2) + d vcl d # vcl(2) + vcl(3) + d(2) + g vcl g # vcl(2) + vcl(3) + g(2) + p cl p # cl(2) + cl(3) + p(2) + t cl t # cl(2) + cl(3) + t(2) + k cl k # cl(2) + cl(3) + k(2) + z z + v v + f f + th th + s s + sh sh + hh hh + dd vcl d # d + skip over d(3) + pd cl p # p + skip over p(3) + td cl t # t + skip over t(3) + kd cl k # k + skip over k(3) + dx dx + ts cl t s # cl(2) + t(2) + s(2) + sil sil + sp sil # sil(2) (1 State tee-Model) + diff --git a/samples/RMHTK/work/R1/hmm0/MODELS b/samples/RMHTK/work/R1/hmm0/MODELS new file mode 100755 index 0000000..d621893 --- /dev/null +++ b/samples/RMHTK/work/R1/hmm0/MODELS @@ -0,0 +1,1376 @@ +~o + 1 39 + 39 +~v varFloor1 + 39 + 9.857469e-03 5.546750e-03 7.227151e-03 7.634672e-03 7.804320e-03 6.913838e-03 7.343364e-03 6.157733e-03 6.080312e-03 4.222516e-03 4.611216e-03 3.340509e-03 1.125261e-03 4.615124e-04 3.291483e-04 3.045427e-04 4.137188e-04 4.288039e-04 3.993323e-04 4.290919e-04 4.150005e-04 3.785724e-04 3.096795e-04 2.945840e-04 2.399993e-04 4.639273e-05 6.651254e-05 6.107638e-05 5.636400e-05 8.277006e-05 8.862553e-05 9.320126e-05 1.011802e-04 1.035967e-04 9.807252e-05 8.817509e-05 8.367682e-05 7.139950e-05 7.005768e-06 +~h "uh" + + 5 + 2 + 39 + -2.030201e+00 -9.665071e+00 -4.850016e+00 -1.500457e+01 -1.153727e+01 -7.872433e+00 -1.326484e+01 -3.792828e+00 -3.982449e+00 1.373869e+00 -1.164011e+00 -2.904042e+00 -1.041829e+00 1.021281e+00 -1.310185e+00 1.511304e-01 -7.848151e-01 -8.387808e-01 -5.316058e-01 -1.090856e+00 5.665955e-01 5.681162e-01 4.180900e-01 -5.416582e-03 -3.161625e-01 3.664384e-01 -8.502450e-01 3.352739e-01 -5.672251e-03 5.236394e-01 5.099936e-01 2.173264e-01 6.659085e-01 1.207541e-01 -3.713307e-03 -1.960127e-01 -6.033723e-02 1.789059e-01 -2.526794e-01 + 39 + 1.163658e+01 2.600163e+01 5.178633e+01 7.321135e+01 4.987086e+01 1.008964e+02 6.382223e+01 6.938992e+01 5.704283e+01 6.208150e+01 7.963033e+01 3.147031e+01 1.024020e+00 2.717298e+00 1.834185e+00 2.578617e+00 4.614402e+00 3.877394e+00 4.272369e+00 4.567668e+00 4.338061e+00 3.744087e+00 3.754827e+00 3.773557e+00 2.402456e+00 1.423054e-01 5.131721e-01 4.482954e-01 4.093170e-01 6.245078e-01 6.995413e-01 9.156046e-01 7.503360e-01 9.321945e-01 8.442732e-01 8.653187e-01 7.990278e-01 4.271652e-01 2.549312e-02 + 1.226515e+02 + 3 + 39 + -2.493008e+00 -1.054106e+01 -4.786512e+00 -1.568067e+01 -1.138510e+01 -8.878133e+00 -1.240299e+01 -1.551957e+00 -2.882305e+00 2.039263e+00 -1.828534e+00 -3.065711e+00 -8.493247e-01 -1.332896e-01 2.385190e-02 2.615749e-01 3.677526e-01 3.898646e-02 -2.341589e-01 1.373563e-01 1.264822e-01 1.031905e-02 -2.369398e-01 -2.268173e-01 7.791431e-02 -1.244640e-01 -2.765147e-01 4.883735e-01 4.482185e-02 4.650115e-01 3.187645e-01 1.592605e-01 2.504025e-01 -2.252735e-01 -2.099437e-01 -2.095086e-01 -9.711853e-02 5.833494e-02 -2.053607e-01 + 39 + 1.157169e+01 2.519056e+01 4.458375e+01 7.413934e+01 5.011262e+01 1.002063e+02 6.879843e+01 6.404859e+01 5.452263e+01 5.373853e+01 8.240313e+01 3.586399e+01 1.093018e+00 3.918743e-01 9.019890e-01 1.544266e+00 1.898300e+00 1.769163e+00 2.359646e+00 2.228713e+00 2.376361e+00 2.345817e+00 2.425642e+00 2.149941e+00 1.550746e+00 6.950536e-02 2.360973e-01 3.472621e-01 2.243571e-01 4.433084e-01 4.952910e-01 5.593957e-01 6.553656e-01 5.492893e-01 4.724049e-01 4.511997e-01 4.550969e-01 3.284724e-01 2.985048e-02 + 1.077668e+02 + 4 + 39 + -3.484642e+00 -8.578824e+00 -2.867287e+00 -1.111205e+01 -1.067224e+01 -9.994902e+00 -1.302486e+01 -2.912186e+00 -4.159908e+00 -2.450437e-01 -2.938213e+00 -2.378921e+00 -2.207490e+00 -1.355959e+00 2.271837e+00 1.705198e-01 2.525676e+00 1.632205e+00 6.324319e-01 1.126436e+00 -6.731064e-01 -2.316017e-01 -9.307619e-01 -6.418827e-01 -3.175236e-02 -1.075944e+00 -6.351551e-01 3.882763e-01 -1.770977e-01 2.296526e-01 4.234417e-01 4.919443e-01 5.228019e-01 -2.879682e-02 6.053823e-02 8.500538e-03 7.515272e-02 -6.262081e-02 -2.229135e-01 + 39 + 1.414221e+01 3.059413e+01 4.915421e+01 7.820808e+01 5.452502e+01 8.124820e+01 6.373906e+01 4.928222e+01 5.538775e+01 5.343611e+01 7.012426e+01 3.884648e+01 2.140853e+00 2.771446e+00 3.080449e+00 2.854023e+00 5.477758e+00 4.555723e+00 5.576109e+00 5.830897e+00 5.015099e+00 4.029101e+00 4.792168e+00 5.255110e+00 3.419893e+00 4.141315e-01 3.974988e-01 6.474802e-01 4.628629e-01 8.618535e-01 7.120451e-01 8.836619e-01 8.602209e-01 8.524762e-01 8.357126e-01 7.400317e-01 8.449144e-01 6.044542e-01 6.266481e-02 + 1.286140e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 2.817979e-01 7.182022e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.734376e-01 3.265624e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.021461e-01 4.978539e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "pd" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.168320e+01 -8.909177e+00 -8.107924e+00 -8.414758e+00 -3.109300e+00 -2.724456e+00 -1.651540e+00 -9.407648e-01 -1.674334e+00 -1.021897e+00 -2.749708e+00 -1.713488e+00 -4.770757e+00 3.198526e+00 3.011178e-01 -3.924979e-01 -1.354502e+00 -1.146576e+00 -6.581329e-01 -1.446408e+00 -5.898952e-01 -1.199556e+00 -8.481846e-01 -6.850266e-01 -5.710939e-01 9.507689e-01 3.502007e-01 1.423562e-01 2.451877e-02 -1.033276e-01 -3.837587e-01 -9.545891e-02 -4.497893e-01 4.599556e-02 -6.832804e-02 2.747240e-02 1.898137e-01 3.861748e-02 3.289079e-02 + 39 + 2.237512e+01 2.742498e+01 4.200616e+01 4.314323e+01 3.733153e+01 4.371882e+01 4.115799e+01 3.669781e+01 3.247055e+01 2.922839e+01 2.605324e+01 1.920450e+01 2.116284e+00 4.208044e+00 3.740133e+00 4.564236e+00 5.199792e+00 4.587859e+00 5.538447e+00 5.579420e+00 4.907856e+00 4.762557e+00 3.438003e+00 3.850636e+00 2.575017e+00 4.661774e-01 4.126602e-01 5.092974e-01 4.870790e-01 6.134127e-01 6.337017e-01 7.089772e-01 7.190645e-01 7.227922e-01 6.894101e-01 6.540084e-01 5.292149e-01 4.244452e-01 9.978860e-02 + 1.221147e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "hh" + + 5 + 2 + 39 + -1.312870e+01 -9.399192e+00 -4.855535e+00 -8.534614e+00 -4.823158e+00 -1.303243e+00 1.095427e+00 2.320851e-01 -2.473269e+00 -2.392883e+00 -3.520384e+00 -5.874194e-01 -5.579978e+00 7.407272e-02 -4.276448e-01 8.010327e-02 -3.239506e-01 3.614377e-02 2.133469e-01 3.484032e-01 -2.190694e-01 -1.407244e-01 -1.294266e-01 -2.309839e-01 -7.813840e-02 2.132159e-01 3.107306e-01 2.958340e-01 3.596455e-02 -1.441497e-02 -2.100106e-01 -2.096315e-01 -3.484204e-01 -1.867337e-01 -1.321280e-01 -2.231825e-03 1.881327e-03 -1.303390e-01 9.613571e-02 + 39 + 2.570283e+01 3.433313e+01 5.408742e+01 4.182399e+01 5.248001e+01 4.608190e+01 4.351048e+01 5.021740e+01 4.196433e+01 3.469236e+01 3.165909e+01 2.386633e+01 4.249607e+00 2.159925e+00 2.232207e+00 2.264099e+00 2.527283e+00 2.887505e+00 2.882027e+00 3.008221e+00 2.762013e+00 2.674005e+00 2.389359e+00 2.216077e+00 1.809939e+00 2.247350e-01 3.652101e-01 3.360291e-01 3.967936e-01 4.858495e-01 5.358655e-01 5.183882e-01 5.961242e-01 5.294582e-01 5.270092e-01 4.752136e-01 4.707851e-01 3.617418e-01 2.774472e-02 + 1.134087e+02 + 3 + 39 + -1.111658e+01 -6.874989e+00 -2.143163e+00 -7.602507e+00 -5.557551e+00 -1.634927e+00 1.117858e+00 -1.373350e+00 -4.374829e+00 -3.128916e+00 -4.855067e+00 -1.692315e+00 -4.511565e+00 2.061247e+00 6.818373e-01 2.304460e-01 -6.216237e-01 -1.295876e+00 -8.345931e-01 -1.305953e+00 -7.078542e-01 -7.944835e-01 -4.128009e-01 -3.080331e-01 -5.940490e-01 6.897904e-01 3.811554e-01 -2.904383e-01 -2.404827e-01 -4.552988e-01 -4.458954e-01 -3.530273e-01 -5.262261e-01 5.697140e-02 -7.771294e-03 4.660752e-02 1.661586e-01 -2.402634e-02 1.822985e-01 + 39 + 2.370477e+01 3.603247e+01 6.636908e+01 4.745422e+01 6.099296e+01 5.427464e+01 5.111937e+01 6.288845e+01 4.817939e+01 4.438970e+01 3.782127e+01 2.782554e+01 2.381030e+00 2.298469e+00 1.843907e+00 3.509145e+00 2.659595e+00 3.069077e+00 3.201918e+00 3.581782e+00 3.128042e+00 3.520880e+00 2.579036e+00 3.194718e+00 1.950385e+00 2.155435e-01 2.212361e-01 2.853073e-01 3.318022e-01 3.232113e-01 4.356569e-01 4.539482e-01 5.335968e-01 4.671990e-01 4.849519e-01 4.796415e-01 4.103143e-01 3.581722e-01 1.665185e-02 + 1.135607e+02 + 4 + 39 + -5.793829e+00 -6.039465e+00 -3.490745e+00 -1.132449e+01 -9.932931e+00 -5.115592e+00 -2.464617e+00 -3.480635e+00 -6.241982e+00 -4.168417e+00 -5.734828e+00 -2.945214e+00 -2.514325e+00 1.879225e+00 -7.965435e-01 -5.201952e-01 -1.372169e+00 -1.547482e+00 -1.036294e+00 -1.474332e+00 -7.535020e-02 -3.020529e-01 3.268573e-03 2.629616e-01 -3.175400e-01 8.093906e-01 -4.019753e-01 -5.497519e-01 -8.668759e-02 -3.752266e-02 1.579617e-01 1.471131e-01 4.412954e-02 3.154320e-01 2.975138e-01 1.761498e-01 2.306065e-01 1.182401e-01 -5.795905e-02 + 39 + 1.806699e+01 3.610131e+01 8.755533e+01 5.787846e+01 6.843794e+01 5.974888e+01 5.929446e+01 7.444825e+01 5.729482e+01 4.650457e+01 5.229534e+01 2.673247e+01 1.303344e+00 1.711402e+00 1.880814e+00 3.512200e+00 2.627310e+00 3.508595e+00 3.535603e+00 3.937696e+00 3.273100e+00 3.531199e+00 3.089423e+00 2.762761e+00 2.188005e+00 1.882051e-01 2.138763e-01 2.258227e-01 3.075623e-01 3.410905e-01 3.926673e-01 3.624218e-01 5.097945e-01 4.586661e-01 4.140955e-01 4.316083e-01 3.755031e-01 2.897057e-01 1.848150e-02 + 1.131575e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 7.424126e-01 2.575874e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.935478e-01 6.064522e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.896184e-01 6.103816e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "en" + + 5 + 2 + 39 + -4.832203e+00 -3.345453e+00 -1.989080e+00 -7.586669e+00 -9.719547e+00 -9.275636e+00 -6.352782e+00 -3.468300e+00 -6.969407e+00 -2.998410e+00 -6.465508e+00 -3.881603e+00 -4.536745e+00 1.804825e+00 2.374679e-01 -5.776630e-01 6.040965e-01 -7.258475e-01 -3.870073e-01 6.284350e-01 -1.700090e+00 -1.450884e+00 8.906950e-01 -6.369912e-01 -5.814766e-01 6.031692e-02 -9.903246e-01 3.051827e-02 2.911192e-02 7.988463e-02 3.058240e-01 3.396246e-01 3.865958e-01 -6.647284e-02 1.819283e-01 2.067684e-01 2.124604e-01 2.248853e-01 -3.292581e-02 + 39 + 1.093994e+01 2.806490e+01 3.127982e+01 5.083617e+01 4.260678e+01 4.589150e+01 4.879269e+01 7.016096e+01 6.359486e+01 5.704579e+01 4.397492e+01 3.962349e+01 1.811799e+00 4.437358e+00 3.343941e+00 3.071352e+00 3.702322e+00 4.736796e+00 4.414643e+00 5.256987e+00 5.482342e+00 4.898521e+00 4.129414e+00 4.114708e+00 3.300171e+00 1.968893e-01 6.390597e-01 5.440817e-01 5.007743e-01 6.194762e-01 7.297515e-01 7.355475e-01 9.392456e-01 1.092101e+00 8.981717e-01 7.596429e-01 6.003325e-01 5.396219e-01 3.242024e-02 + 1.245042e+02 + 3 + 39 + -4.350944e+00 -1.581502e+00 -3.033624e+00 -4.546232e+00 -1.027698e+01 -8.284575e+00 -2.119969e+00 -1.000261e+01 -9.620973e+00 6.433219e-01 -6.984086e+00 -4.372160e+00 -4.814676e+00 -1.784667e-01 3.819209e-01 1.068429e-01 2.526274e-01 2.127459e-01 2.814326e-01 1.905411e-01 -3.044975e-01 -7.263879e-02 8.295118e-04 -6.071570e-02 9.574406e-02 -1.054218e-01 -3.598247e-01 -2.189239e-02 5.363658e-02 -1.131267e-01 2.968800e-01 8.305258e-02 -2.368927e-01 5.176831e-01 3.119616e-01 -3.299526e-01 1.295769e-01 1.211144e-01 -4.143045e-02 + 39 + 7.650828e+00 2.332176e+01 2.597065e+01 4.483254e+01 4.213374e+01 4.572722e+01 4.507194e+01 6.659875e+01 6.159732e+01 5.518346e+01 5.800350e+01 4.987938e+01 2.053966e+00 5.305711e-01 1.472914e+00 1.127827e+00 1.571932e+00 1.763395e+00 1.671497e+00 2.134741e+00 2.993035e+00 2.148666e+00 2.066586e+00 1.604887e+00 1.585010e+00 6.493172e-02 2.946739e-01 3.349203e-01 2.983063e-01 3.786173e-01 5.056615e-01 4.685608e-01 5.377921e-01 7.125904e-01 6.377904e-01 4.858733e-01 5.030775e-01 3.836238e-01 1.229983e-02 + 1.051540e+02 + 4 + 39 + -7.239712e+00 -6.559782e-01 -2.018598e+00 -3.914213e+00 -7.519366e+00 -6.997035e+00 -3.416749e+00 -6.501280e+00 -8.081779e+00 -1.872368e+00 -6.474865e+00 -3.522103e+00 -5.789957e+00 -1.626018e+00 -3.036360e-01 -2.831274e-01 -5.288934e-01 1.305961e+00 5.541717e-01 -4.281869e-01 1.592733e+00 1.099021e+00 -7.160746e-01 6.419243e-01 4.445265e-01 -1.776237e-01 -4.611821e-01 -2.860416e-01 -2.409755e-01 -3.061958e-01 1.021016e-01 8.151451e-02 1.863496e-02 3.767962e-01 3.367321e-01 8.476298e-02 2.210667e-01 9.959732e-02 6.158483e-02 + 39 + 2.016276e+01 3.172025e+01 2.770487e+01 4.726453e+01 4.490495e+01 4.106034e+01 4.997431e+01 6.251005e+01 4.968850e+01 4.399484e+01 4.368538e+01 3.808749e+01 4.497365e+00 3.615335e+00 3.850444e+00 2.958755e+00 4.019504e+00 4.115615e+00 3.944970e+00 4.627666e+00 5.374177e+00 4.518982e+00 3.729189e+00 3.710329e+00 3.012094e+00 2.669932e-01 6.188694e-01 5.825793e-01 4.354329e-01 5.782316e-01 7.167906e-01 6.065075e-01 7.504246e-01 8.612300e-01 7.240128e-01 5.992238e-01 5.421097e-01 4.517569e-01 3.574083e-02 + 1.232776e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.777864e-01 4.222136e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.441303e-01 2.558697e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.577568e-01 4.422432e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "oy" + + 5 + 2 + 39 + 1.841933e+00 -7.075530e+00 -1.105808e+01 -2.396868e+01 -1.502729e+01 3.925693e+00 -3.901043e+00 -3.633328e+00 -5.606941e+00 -1.392435e+00 1.257636e+00 -7.397704e-01 -6.671953e-01 1.493092e-02 -8.570200e-01 -2.675093e-01 1.098843e-01 5.766134e-01 3.259240e-01 -2.977831e-01 -2.924386e-01 6.614514e-02 7.325251e-01 4.995548e-01 -2.360861e-01 1.225135e-01 -2.401045e-01 -1.464183e-01 1.148668e-01 6.141474e-01 3.428825e-01 -4.850335e-01 -2.950656e-01 5.205378e-02 2.749112e-01 1.717139e-01 -1.552937e-01 -2.472879e-01 -7.103492e-02 + 39 + 8.392545e+00 3.218254e+01 3.155612e+01 5.773351e+01 7.365588e+01 5.494451e+01 5.565165e+01 6.327392e+01 5.658115e+01 5.618420e+01 6.249956e+01 3.278644e+01 7.850046e-01 3.299641e-01 1.284879e+00 9.393784e-01 3.257489e+00 2.421255e+00 2.477802e+00 2.982988e+00 1.942742e+00 2.348885e+00 2.624450e+00 2.419501e+00 2.005819e+00 3.266026e-02 1.443325e-01 1.552007e-01 2.176062e-01 2.914046e-01 4.183555e-01 4.472361e-01 4.156194e-01 4.961101e-01 5.151890e-01 4.407977e-01 5.127699e-01 3.568469e-01 1.111953e-02 + 1.029975e+02 + 3 + 39 + -1.600038e-01 -1.446971e+01 -1.035071e+01 -1.526482e+01 -8.816194e+00 -3.679810e+00 -1.162552e+01 -1.157120e+00 -4.949237e-01 4.412141e+00 -4.930805e-01 -6.411987e+00 -4.838287e-01 -7.105474e-01 -7.838018e-01 1.574425e+00 2.112118e+00 -3.411731e-01 -3.160154e+00 -8.581796e-01 2.051690e+00 1.171532e+00 -6.618254e-01 -1.438848e+00 -2.827353e-01 -9.085950e-02 -1.112504e-01 4.235934e-01 4.901954e-01 -2.360831e-01 -6.541290e-01 -6.455722e-02 6.464770e-01 1.794776e-01 -6.070223e-01 -7.097361e-01 5.198818e-02 6.236298e-01 -4.695281e-02 + 39 + 8.991010e+00 2.002674e+01 3.062724e+01 5.018239e+01 5.021795e+01 7.624166e+01 5.963378e+01 6.845250e+01 5.936435e+01 5.692099e+01 9.567125e+01 2.983522e+01 9.639586e-01 2.551969e-01 9.374650e-01 1.591574e+00 1.604986e+00 2.956166e+00 2.507786e+00 4.569071e+00 2.461734e+00 3.310087e+00 4.157674e+00 2.201813e+00 3.939622e+00 1.676825e-02 4.712425e-02 1.194269e-01 2.115444e-01 2.869550e-01 3.294654e-01 7.032355e-01 4.881698e-01 8.179286e-01 6.735649e-01 5.719914e-01 8.322533e-01 3.803343e-01 1.000000e-02 + 1.043715e+02 + 4 + 39 + -4.484591e+00 -1.245571e+01 3.923488e-01 -1.141405e+01 -1.557458e+01 -1.386063e+01 -7.612459e+00 2.895849e+00 -5.255408e+00 -1.741774e+00 -2.261802e+00 -1.660808e+00 -1.406433e+00 -9.901055e-01 1.490011e+00 1.297192e+00 4.915794e-01 -3.585950e-01 -1.304522e-01 1.029162e+00 -8.639904e-01 -1.202413e+00 -5.374537e-01 1.922264e-01 4.102581e-01 -3.582355e-01 -1.756277e-01 3.773362e-01 -5.783219e-01 -9.192544e-02 6.666613e-01 7.119214e-01 3.055437e-02 -4.817744e-01 1.685329e-01 3.296057e-01 4.047700e-02 -2.385023e-01 -6.481002e-02 + 39 + 1.312857e+01 2.478823e+01 4.691063e+01 5.341276e+01 3.767278e+01 4.747866e+01 7.625475e+01 6.066817e+01 7.802879e+01 4.821485e+01 6.092832e+01 3.055892e+01 1.486668e+00 1.496806e+00 2.068458e+00 3.671952e+00 2.360918e+00 5.635621e+00 3.361573e+00 4.109437e+00 4.094855e+00 4.508593e+00 3.307688e+00 2.807915e+00 2.424972e+00 9.579989e-02 3.392590e-01 2.895453e-01 3.777878e-01 4.989397e-01 4.911921e-01 5.409809e-01 7.137697e-01 9.523674e-01 8.503143e-01 5.423185e-01 4.990444e-01 4.031261e-01 1.642637e-02 + 1.165185e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 8.468485e-01 1.531515e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.637777e-01 2.362223e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 7.804162e-01 2.195838e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "dh" + + 5 + 2 + 39 + -1.419096e+01 -1.245104e+00 -5.929512e+00 -3.915089e+00 -3.920554e+00 -4.367973e+00 -4.221216e+00 -3.292188e+00 -2.234885e+00 -1.273636e+00 -2.758583e+00 -2.307390e+00 -7.093804e+00 9.367111e-01 -2.799487e-01 -8.226269e-02 -6.606536e-01 -8.789831e-01 -9.745377e-01 -6.027461e-01 -1.064465e-02 2.742060e-01 -1.862812e-01 -1.224046e-01 3.078093e-02 8.402424e-01 5.569566e-01 -4.055507e-01 1.969164e-01 -4.410355e-01 -5.221390e-01 -3.654979e-01 -3.556079e-01 1.489422e-01 9.467185e-02 1.308898e-01 -2.119466e-02 4.000948e-02 2.568879e-01 + 39 + 4.049582e+01 2.801081e+01 2.495810e+01 2.830104e+01 2.388580e+01 2.894804e+01 3.605684e+01 3.382780e+01 2.655564e+01 2.266723e+01 2.312707e+01 2.254619e+01 6.712969e+00 4.702882e+00 2.821504e+00 3.001525e+00 3.533956e+00 3.568355e+00 3.956483e+00 3.921638e+00 3.575342e+00 3.286869e+00 2.572601e+00 2.450120e+00 2.375380e+00 1.036812e+00 6.144857e-01 6.840567e-01 7.019788e-01 8.007333e-01 6.450318e-01 7.133197e-01 7.993358e-01 7.165810e-01 6.619055e-01 5.457394e-01 5.592503e-01 4.942278e-01 1.122167e-01 + 1.203766e+02 + 3 + 39 + -9.300618e+00 -1.926803e+00 -5.812597e+00 -6.604027e+00 -7.842415e+00 -9.043930e+00 -7.422874e+00 -3.676964e+00 -9.121137e-01 -1.398621e+00 -3.398699e+00 -2.183141e+00 -3.660943e+00 2.539088e+00 -1.385312e+00 8.244962e-01 -1.731105e+00 -2.129448e+00 -1.912602e+00 -1.956495e+00 4.215721e-01 4.438599e-01 2.380921e-01 -2.888298e-01 -8.376861e-02 1.296662e+00 1.063104e-02 -3.640758e-01 3.454939e-01 -9.965797e-02 -2.718117e-02 2.841959e-01 1.491477e-02 1.625772e-01 -2.443787e-01 1.525101e-01 5.044828e-02 -1.473605e-02 -1.593117e-01 + 39 + 2.136500e+01 1.899508e+01 2.389894e+01 2.519122e+01 2.755069e+01 3.032156e+01 3.898267e+01 2.983294e+01 2.886760e+01 2.814007e+01 2.217786e+01 2.367360e+01 2.151802e+00 3.802481e+00 3.015903e+00 4.503654e+00 4.264915e+00 4.377211e+00 5.290391e+00 5.405228e+00 5.590858e+00 5.339664e+00 3.799834e+00 4.169644e+00 3.482772e+00 4.427020e-01 3.979562e-01 3.846399e-01 4.353343e-01 4.775455e-01 4.995298e-01 5.048730e-01 6.115550e-01 5.835876e-01 5.536307e-01 4.635152e-01 4.592597e-01 4.077599e-01 5.678584e-02 + 1.166571e+02 + 4 + 39 + -5.263886e+00 -6.023354e+00 -3.848199e+00 -1.044677e+01 -1.168050e+01 -1.180803e+01 -1.073885e+01 -2.584417e+00 -6.738958e-01 -3.705765e-01 -4.166755e+00 -2.266713e+00 -2.085656e+00 1.821868e+00 -1.829788e+00 1.048292e+00 -1.585928e+00 -1.666218e+00 -1.032071e+00 -1.261527e+00 7.038043e-01 -6.389792e-02 3.431865e-01 -1.563983e-01 -7.676638e-03 8.139468e-01 -6.339317e-01 2.068379e-01 -7.017693e-03 4.644701e-01 5.674864e-01 7.032180e-01 5.950441e-01 -7.485133e-03 -3.644671e-01 -8.723881e-02 1.512558e-01 4.108204e-03 -3.808774e-01 + 39 + 1.148347e+01 2.365096e+01 3.865044e+01 4.467113e+01 4.372245e+01 4.787401e+01 5.029173e+01 4.663396e+01 5.084513e+01 4.190307e+01 3.792031e+01 3.438554e+01 1.655582e+00 2.469126e+00 2.538822e+00 3.683393e+00 3.897196e+00 3.907230e+00 4.750870e+00 5.349444e+00 4.836140e+00 4.584445e+00 3.536314e+00 4.066894e+00 2.932650e+00 2.335433e-01 4.753734e-01 3.702853e-01 4.753614e-01 6.095772e-01 5.989296e-01 6.114110e-01 6.734064e-01 7.097917e-01 6.954713e-01 5.731081e-01 4.971110e-01 5.259283e-01 5.325224e-02 + 1.200548e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.232170e-01 3.767830e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 1.470812e-01 8.529188e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 1.856481e-01 8.143519e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~s "sil_s2" + 39 + -1.592934e+01 -4.926888e+00 -6.942808e+00 -3.966156e+00 -3.081482e+00 -1.883191e+00 -1.143197e+00 6.542572e-01 -1.030977e+00 -1.035180e+00 -1.483763e+00 1.510328e-01 -1.004582e+01 -2.052776e-01 8.494348e-02 -1.540129e-01 2.345404e-01 2.268185e-01 3.475716e-01 1.947735e-01 4.708112e-02 6.437833e-02 1.314420e-01 8.443171e-02 4.079605e-02 -2.790768e-01 -1.678115e-02 8.502448e-02 8.218060e-02 -1.741036e-02 -5.327997e-02 -3.258827e-02 -5.886225e-03 1.744883e-02 -2.812785e-02 -9.849485e-04 1.683418e-02 -1.218580e-02 4.408116e-02 + 39 + 1.560592e+01 2.230227e+01 2.327167e+01 2.634656e+01 2.436180e+01 2.715852e+01 2.655051e+01 2.657528e+01 2.584789e+01 2.536650e+01 2.214675e+01 1.782923e+01 4.567818e+00 2.495269e+00 3.639798e+00 5.024642e+00 6.227787e+00 7.678180e+00 9.237629e+00 1.004534e+01 1.080817e+01 1.131930e+01 1.125018e+01 1.036363e+01 9.392843e+00 2.097580e-01 2.167060e+00 4.204398e+00 6.263759e+00 8.676667e+00 1.141476e+01 1.393426e+01 1.573655e+01 1.701464e+01 1.825018e+01 1.843815e+01 1.714905e+01 1.569741e+01 7.946196e-02 + 1.591930e+02 +~s "sil_s3" + 39 + -1.697092e+01 -4.592577e+00 -7.071846e+00 -3.977880e+00 -2.510936e+00 -2.061278e+00 -1.075958e+00 2.826796e-01 -1.335274e+00 -7.361032e-01 -1.396171e+00 1.606888e-02 -1.030976e+01 -9.024126e-02 1.323704e-01 2.493860e-02 8.629596e-02 3.450169e-02 7.729980e-02 1.339110e-02 -3.635495e-02 -1.057638e-02 5.568388e-02 2.777220e-02 -2.235882e-02 -6.784049e-02 4.079562e-02 4.365967e-04 2.938879e-02 -3.777808e-02 -3.250331e-02 -3.899840e-02 -2.435841e-02 -1.879503e-02 -1.888042e-02 -1.427204e-02 -1.456618e-02 -1.514213e-02 5.184135e-02 + 39 + 1.491583e+01 2.304711e+01 1.890969e+01 2.225437e+01 1.970382e+01 2.472967e+01 2.224887e+01 2.280362e+01 2.181712e+01 2.346081e+01 1.929359e+01 1.528289e+01 3.798464e+00 6.959244e-01 1.029381e+00 1.140594e+00 1.320816e+00 1.391825e+00 1.598569e+00 1.646054e+00 1.699059e+00 1.704155e+00 1.705659e+00 1.494987e+00 1.299754e+00 1.174259e-01 1.540010e-01 2.056236e-01 2.402450e-01 2.961388e-01 3.251153e-01 3.727375e-01 3.978545e-01 4.133951e-01 4.192098e-01 4.177011e-01 3.701907e-01 3.311006e-01 2.556703e-02 + 9.321144e+01 +~s "sil_s4" + 39 + -1.665638e+01 -3.126588e+00 -6.246307e+00 -3.091138e+00 -2.462331e+00 -9.877980e-01 -9.084083e-01 -1.558149e-01 -1.632900e+00 -4.783005e-01 -1.632270e+00 -4.915595e-01 -1.049442e+01 7.741688e-01 -1.121223e-01 2.192961e-01 -6.056105e-01 -4.812136e-01 -3.860384e-01 -3.223703e-01 -2.843964e-01 -3.146173e-01 -1.842902e-01 -2.119107e-01 -2.091778e-01 6.261556e-01 2.679672e-01 -1.400658e-01 -1.762990e-02 -2.561791e-01 -1.815686e-01 -1.634308e-01 -1.664635e-01 -5.202630e-02 -5.024448e-02 -2.720645e-02 -1.206908e-02 -2.024530e-02 2.040422e-01 + 39 + 1.504889e+01 1.747448e+01 2.217169e+01 2.292529e+01 2.285147e+01 2.429033e+01 2.292714e+01 2.513453e+01 2.354554e+01 2.305079e+01 2.100187e+01 1.666126e+01 3.697880e+00 3.880632e+00 4.054469e+00 4.703672e+00 6.962493e+00 7.427171e+00 8.396201e+00 9.252640e+00 9.904207e+00 1.031415e+01 9.830575e+00 9.115677e+00 8.245290e+00 9.108977e-01 1.650743e+00 3.144826e+00 4.720327e+00 7.298070e+00 9.234032e+00 1.142403e+01 1.316411e+01 1.429033e+01 1.533856e+01 1.510701e+01 1.403620e+01 1.281571e+01 1.199520e-01 + 1.569582e+02 +~t "sil_t" + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 3.418343e-01 6.581656e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 9.260303e-01 7.396974e-02 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 4.614447e-01 5.385553e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 +~h "sil" + + 5 + 2 +~s "sil_s2" + 3 +~s "sil_s3" + 4 +~s "sil_s4" +~t "sil_t" + +~h "ax" + + 5 + 2 + 39 + -2.809472e+00 -9.074569e+00 -7.687520e+00 -1.409825e+01 -7.724154e+00 -5.637351e+00 -1.168278e+01 -2.042699e+00 -4.961678e-01 1.309221e+00 -4.143809e+00 -4.668794e+00 -2.229779e+00 1.109292e+00 -2.784290e-01 -6.900729e-02 -4.710387e-01 -1.771049e-01 2.346029e-01 -6.437889e-01 -1.942532e-01 -9.307930e-02 2.565413e-01 5.629064e-02 -3.118124e-01 1.534812e-01 -8.141922e-01 7.251319e-01 1.513759e-01 6.496049e-01 3.197748e-01 1.605874e-01 7.349084e-01 -2.407612e-01 -4.466992e-01 -2.455766e-01 2.044725e-01 2.464125e-01 -2.843746e-01 + 39 + 1.813202e+01 2.887169e+01 4.098297e+01 5.113163e+01 4.024333e+01 6.855866e+01 5.987777e+01 5.653743e+01 4.936219e+01 5.824304e+01 6.148505e+01 3.533528e+01 2.128698e+00 3.505547e+00 2.519416e+00 2.555175e+00 4.353009e+00 3.526282e+00 3.996829e+00 3.910158e+00 4.256388e+00 3.863339e+00 3.204344e+00 3.428854e+00 2.565135e+00 3.066206e-01 6.657011e-01 4.884994e-01 4.788503e-01 7.720897e-01 6.500779e-01 9.075262e-01 9.515043e-01 9.560546e-01 8.519438e-01 7.913027e-01 7.810740e-01 5.675593e-01 5.289890e-02 + 1.247035e+02 + 3 + 39 + -2.138746e+00 -7.676156e+00 -7.196435e+00 -1.356538e+01 -7.658663e+00 -5.140456e+00 -1.183193e+01 -3.833218e+00 -2.001177e+00 1.576836e+00 -2.478866e+00 -4.325570e+00 -2.457185e+00 -6.341326e-01 1.762589e+00 3.942444e-01 1.270228e+00 6.469299e-01 2.975854e-01 1.118203e+00 -8.686690e-01 -1.101614e+00 -5.964373e-01 2.451402e-01 3.314032e-01 -5.578133e-01 -9.674389e-01 6.096969e-01 1.712920e-01 6.328856e-01 3.382653e-01 1.390392e-01 7.440072e-01 -1.364042e-02 -2.548412e-01 -3.363041e-01 -3.433049e-02 2.228002e-01 -2.751777e-01 + 39 + 1.845301e+01 2.755179e+01 4.087515e+01 5.494908e+01 3.933078e+01 7.223440e+01 5.586767e+01 5.455507e+01 5.080037e+01 5.424331e+01 6.065084e+01 3.384731e+01 1.907762e+00 2.608666e+00 2.407259e+00 2.718277e+00 5.461741e+00 3.607414e+00 4.297009e+00 4.088566e+00 4.342354e+00 4.363443e+00 3.818870e+00 3.617051e+00 2.981310e+00 2.655802e-01 6.353132e-01 4.760645e-01 5.245126e-01 7.034564e-01 6.501775e-01 9.655493e-01 8.373334e-01 9.707543e-01 8.222756e-01 7.742493e-01 7.921126e-01 5.687513e-01 5.174686e-02 + 1.247359e+02 + 4 + 39 + -4.539025e+00 -3.613867e+00 -7.030828e+00 -1.035192e+01 -5.728420e+00 -4.668206e+00 -8.268273e+00 -5.095500e+00 -3.446465e+00 -2.103526e-01 -2.458360e+00 -3.422710e+00 -3.790149e+00 -1.757806e+00 1.867844e+00 6.709586e-01 1.674213e+00 8.893245e-01 4.814401e-01 1.595423e+00 -4.899265e-01 -1.081394e+00 -7.942030e-01 1.807480e-02 4.012397e-01 -7.367032e-01 -5.122431e-01 -1.540766e-01 7.268437e-03 -1.279158e-02 1.196030e-02 5.687382e-02 1.584273e-01 2.707641e-01 1.000441e-01 2.765863e-03 -4.808001e-02 6.973120e-02 -2.711225e-02 + 39 + 2.862740e+01 2.918775e+01 3.687833e+01 5.939447e+01 4.186695e+01 6.182310e+01 4.965126e+01 4.953114e+01 4.897219e+01 4.744632e+01 4.619101e+01 3.164937e+01 3.596028e+00 5.086621e+00 3.368270e+00 3.017654e+00 6.262345e+00 4.045671e+00 5.073648e+00 4.828016e+00 5.450083e+00 5.067489e+00 4.310451e+00 3.999914e+00 3.032542e+00 5.422115e-01 5.581888e-01 4.150693e-01 4.186771e-01 5.724482e-01 5.469832e-01 7.235361e-01 6.716618e-01 7.052497e-01 6.558394e-01 6.130915e-01 5.782352e-01 4.739548e-01 4.976477e-02 + 1.253501e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.288085e-01 5.711915e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 2.081185e-01 7.918815e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 2.055883e-01 7.944117e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~t "sp_t" + 5 + 0.000000e+00 2.500000e-01 2.500000e-01 2.500000e-01 2.500000e-01 + 0.000000e+00 2.500000e-01 2.500000e-01 2.500000e-01 2.500000e-01 + 0.000000e+00 0.000000e+00 3.333334e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 +~h "sp" + + 5 + 2 +~s "sil_s2" + 3 +~s "sil_s3" + 4 +~s "sil_s4" +~t "sp_t" + +~h "ey" + + 5 + 2 + 39 + -4.386545e+00 -1.384022e+01 -1.101097e+00 -1.273158e+01 -1.612339e+01 -1.099169e+01 -7.312602e+00 4.676355e+00 -1.294250e+00 -1.954540e+00 -2.925792e+00 -2.360661e+00 -8.693594e-01 -1.447932e-01 -6.927080e-01 1.369717e+00 -6.659206e-01 -1.612685e+00 -4.176982e-01 6.571587e-01 8.638659e-01 -7.021801e-01 -2.526947e-01 6.240697e-01 4.909061e-01 2.441699e-01 -3.627638e-01 5.713085e-01 1.984739e-02 1.924060e-01 3.283212e-01 3.441595e-01 1.546131e-01 -6.064865e-01 -3.372384e-01 1.774700e-01 2.458114e-01 -2.917267e-02 -1.629218e-01 + 39 + 1.204701e+01 2.410221e+01 4.272512e+01 4.970695e+01 4.226387e+01 4.547080e+01 7.076267e+01 5.097555e+01 6.621555e+01 4.360265e+01 5.091909e+01 3.183799e+01 1.228944e+00 1.225302e+00 2.047838e+00 1.927456e+00 2.740474e+00 2.284057e+00 2.891711e+00 3.521383e+00 3.874600e+00 3.026365e+00 3.061551e+00 2.484064e+00 2.019978e+00 1.610959e-01 3.451302e-01 2.409839e-01 2.721306e-01 4.268450e-01 4.236626e-01 4.710108e-01 6.324334e-01 5.634049e-01 6.395090e-01 4.636464e-01 4.887354e-01 4.029654e-01 2.110950e-02 + 1.114431e+02 + 3 + 39 + -6.378433e+00 -1.148695e+01 4.027003e+00 -1.442919e+01 -2.000551e+01 -1.011841e+01 -4.895349e+00 1.558858e+00 -6.100410e+00 -7.465432e-01 -6.507954e-01 -1.864303e+00 -1.062403e+00 -1.684975e-01 5.000008e-01 7.479674e-01 2.785497e-02 -3.417191e-01 1.253805e-01 -1.109983e-01 -6.422179e-01 -6.703809e-01 1.513661e-01 2.682469e-01 -2.535783e-02 -9.767661e-02 4.785765e-02 1.083150e-01 -1.549979e-01 1.889648e-01 2.533966e-01 -8.198484e-03 -1.257617e-01 -6.940106e-02 4.176158e-02 -6.679519e-02 -1.273193e-01 -4.354602e-02 -5.175276e-02 + 39 + 1.146011e+01 2.693671e+01 3.917353e+01 6.870588e+01 3.522256e+01 5.120699e+01 6.158236e+01 6.554553e+01 5.339174e+01 4.573959e+01 6.018265e+01 2.682550e+01 1.177878e+00 2.530713e-01 6.184645e-01 9.942934e-01 8.879133e-01 9.595493e-01 1.118874e+00 1.382455e+00 1.486585e+00 1.670524e+00 1.295902e+00 1.153674e+00 9.305587e-01 2.189738e-02 5.071130e-02 1.153645e-01 1.521778e-01 1.724021e-01 2.081246e-01 2.112590e-01 2.519768e-01 2.649998e-01 2.388721e-01 2.231794e-01 2.078566e-01 1.708764e-01 1.000000e-02 + 8.680614e+01 + 4 + 39 + -6.707418e+00 -7.924452e+00 6.637740e+00 -1.108278e+01 -1.892614e+01 -1.056134e+01 -7.088049e+00 -1.448311e+00 -9.259017e+00 -1.495437e+00 -3.430829e-01 -1.858043e+00 -2.338649e+00 -5.491812e-01 1.448326e+00 -9.341295e-01 1.683728e+00 2.088150e+00 3.468226e-01 2.185691e-01 -6.288459e-01 1.015237e-01 -5.215570e-01 -5.398289e-01 -1.807364e-01 -6.255149e-01 -4.057463e-01 1.528832e-01 -6.082141e-01 1.581039e-01 7.042717e-01 3.207051e-01 2.608754e-01 4.650858e-02 4.330065e-01 5.218244e-02 -1.205472e-01 -1.638990e-02 -1.214761e-01 + 39 + 1.435677e+01 3.620772e+01 4.154713e+01 7.368201e+01 3.914109e+01 5.095744e+01 5.721074e+01 7.158720e+01 5.121185e+01 5.237827e+01 6.111016e+01 3.016271e+01 2.697743e+00 2.829229e+00 2.780298e+00 3.574182e+00 3.681937e+00 4.520779e+00 3.980299e+00 4.548754e+00 4.149375e+00 4.301161e+00 3.482328e+00 3.333320e+00 2.484705e+00 2.648241e-01 4.429627e-01 4.783122e-01 4.546660e-01 6.555516e-01 6.223528e-01 6.537994e-01 6.466511e-01 7.822043e-01 7.066536e-01 6.080204e-01 5.648678e-01 4.325263e-01 4.490574e-02 + 1.225387e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.233611e-01 3.766389e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.434976e-01 1.565024e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.954304e-01 3.045696e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "f" + + 5 + 2 + 39 + -1.759785e+01 -5.058763e+00 -6.123262e+00 -4.720434e+00 -3.049227e+00 -3.068080e+00 -2.078848e+00 -6.524668e-01 -1.867511e+00 -1.375685e+00 -2.581633e+00 -1.107184e+00 -5.993975e+00 -3.723403e+00 -5.620251e-01 -4.464792e-01 5.667741e-01 2.960626e-01 3.658488e-01 5.530121e-01 4.984039e-01 6.239138e-01 3.639570e-01 4.173750e-01 5.449690e-01 -6.153987e-01 5.952326e-01 -4.280207e-01 -2.101470e-01 -5.498657e-01 -4.660869e-01 -2.614566e-01 -3.880635e-01 -7.467610e-02 -1.115182e-01 6.198873e-02 1.548593e-02 -6.867957e-02 2.331850e-01 + 39 + 3.305215e+01 1.595937e+01 1.492560e+01 1.470877e+01 1.495506e+01 1.852248e+01 1.733333e+01 1.732372e+01 1.797531e+01 1.710042e+01 1.429117e+01 1.275218e+01 2.938798e+00 4.996844e+00 2.657474e+00 3.705108e+00 3.999568e+00 3.194940e+00 3.874380e+00 3.782891e+00 3.318656e+00 3.335618e+00 2.994148e+00 2.902864e+00 2.242244e+00 3.636597e-01 7.127098e-01 5.350640e-01 5.266389e-01 5.973202e-01 5.354620e-01 5.301654e-01 6.120284e-01 5.604264e-01 5.451439e-01 4.992965e-01 4.556990e-01 3.939967e-01 3.864582e-02 + 1.094464e+02 + 3 + 39 + -2.284390e+01 -8.223684e+00 -9.044921e+00 -6.232842e+00 -4.809192e+00 -3.948638e+00 -3.011157e+00 -4.868499e-01 -1.170527e+00 -3.230036e-01 -1.722878e+00 -2.855454e-01 -6.054828e+00 2.197833e-01 -1.415741e-01 -1.133631e-01 -1.275523e-01 -5.790954e-02 -6.057488e-02 -8.073499e-02 -6.310405e-02 2.583342e-02 5.719522e-02 2.015206e-02 -1.548168e-02 5.492193e-02 8.279908e-01 1.606133e-01 1.536487e-01 -9.105752e-02 -1.725768e-02 -5.016857e-02 -1.066037e-01 -8.233915e-02 -9.566649e-02 -7.813213e-02 -5.926898e-02 -9.918127e-02 1.101159e-01 + 39 + 9.769442e+00 1.195264e+01 1.003132e+01 1.134658e+01 1.181706e+01 1.284460e+01 1.344778e+01 1.281641e+01 1.268035e+01 1.248050e+01 1.152691e+01 1.021229e+01 2.027142e+00 2.179430e+00 9.605334e-01 1.115566e+00 1.171506e+00 1.268704e+00 1.336038e+00 1.404443e+00 1.445232e+00 1.416770e+00 1.356570e+00 1.282631e+00 1.131582e+00 1.175145e-01 4.664475e-01 2.303639e-01 2.785289e-01 3.283449e-01 3.294951e-01 3.688638e-01 3.922634e-01 3.639173e-01 3.552549e-01 3.241272e-01 3.213677e-01 2.707222e-01 3.221093e-02 + 8.629430e+01 + 4 + 39 + -1.416866e+01 -6.694981e+00 -7.565853e+00 -7.357311e+00 -5.049794e+00 -4.329532e+00 -3.382519e+00 -1.433111e+00 -1.702719e+00 -7.866829e-01 -2.158893e+00 -1.232765e+00 -4.961192e+00 5.014731e+00 5.992582e-02 1.128597e-01 -1.568367e+00 -1.207251e+00 -5.986066e-01 -1.353231e+00 -4.978475e-01 -6.112495e-01 -4.105482e-01 -9.313807e-02 -4.941875e-01 9.607047e-01 2.839886e-01 -3.204309e-01 -1.382800e-01 -3.968579e-01 -3.597704e-01 -6.900717e-02 -3.702270e-01 7.338865e-02 -8.653809e-02 -3.135617e-02 8.235979e-02 -1.480431e-02 1.578805e-01 + 39 + 6.064658e+01 1.824159e+01 2.420279e+01 2.616740e+01 2.253826e+01 2.585142e+01 2.354372e+01 2.198681e+01 2.067149e+01 1.738999e+01 1.641179e+01 1.390277e+01 3.894108e+00 4.344790e+00 3.590432e+00 5.062328e+00 5.304452e+00 4.570936e+00 5.770029e+00 5.432534e+00 4.205407e+00 4.263587e+00 3.352684e+00 3.554658e+00 2.610907e+00 4.308165e-01 1.167963e+00 4.490556e-01 4.631909e-01 6.106169e-01 6.000620e-01 6.462178e-01 7.013301e-01 6.214094e-01 6.079140e-01 5.276370e-01 4.546129e-01 3.781545e-01 6.332000e-02 + 1.175691e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.316136e-01 4.683864e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.296278e-01 1.703722e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.852787e-01 4.147213e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ao" + + 5 + 2 + 39 + 2.251047e-01 -8.882358e+00 -1.268901e+01 -2.013483e+01 -1.036714e+01 9.588653e-01 -5.790014e+00 -2.137604e+00 -4.305434e+00 -7.370718e-01 -3.360290e-01 -3.391965e+00 -1.096665e+00 1.022831e+00 -6.421044e-01 -9.643496e-01 -1.654035e+00 -1.321535e-01 1.359339e+00 4.740186e-01 -2.384107e-04 -2.061177e-01 -2.108304e-01 4.600282e-01 8.587400e-02 4.600236e-01 -6.101429e-01 1.012828e-01 1.876384e-01 5.746738e-01 3.692364e-01 -1.644293e-01 1.279824e-01 1.083018e-02 4.298045e-02 -9.502867e-02 -4.094764e-02 1.614068e-01 -1.591918e-01 + 39 + 1.282484e+01 4.459204e+01 3.643823e+01 5.897594e+01 7.152586e+01 7.171542e+01 7.741298e+01 6.131623e+01 6.807346e+01 6.595596e+01 6.584135e+01 4.179872e+01 1.767122e+00 2.166229e+00 2.245288e+00 2.173704e+00 3.897468e+00 4.415860e+00 4.012799e+00 4.145360e+00 4.036357e+00 3.913381e+00 3.657274e+00 3.151663e+00 2.894179e+00 2.320334e-01 4.670141e-01 3.942608e-01 3.471892e-01 5.932045e-01 6.769339e-01 6.558307e-01 7.983379e-01 7.027162e-01 7.782882e-01 6.684837e-01 6.377956e-01 4.803505e-01 3.186934e-02 + 1.224826e+02 + 3 + 39 + 7.299427e-01 -9.985993e+00 -1.460991e+01 -2.306850e+01 -8.326141e+00 4.742006e+00 -3.305597e+00 -2.961360e+00 -3.349945e+00 -2.744129e+00 -1.575628e-02 -2.544555e+00 -3.246509e-01 2.618873e-02 -1.459794e-01 -2.316590e-01 2.499927e-01 3.466596e-01 -1.345106e-01 -1.697771e-01 3.116462e-02 8.358453e-02 -1.170103e-02 3.784521e-02 1.936660e-02 1.808629e-03 -3.381155e-02 4.710063e-02 6.801276e-02 2.222445e-01 1.530935e-02 -2.384990e-01 -1.612103e-01 2.505452e-02 2.560094e-02 7.935183e-02 -4.958520e-02 -3.810698e-02 -4.411121e-02 + 39 + 1.087736e+01 4.267975e+01 3.551682e+01 6.632526e+01 8.897339e+01 7.183325e+01 7.389085e+01 5.710970e+01 6.099314e+01 5.949631e+01 5.612991e+01 4.568993e+01 1.051114e+00 1.851689e-01 7.976323e-01 7.892061e-01 1.375117e+00 1.418480e+00 1.569854e+00 1.733306e+00 1.358071e+00 1.421046e+00 1.427033e+00 1.346929e+00 1.254188e+00 1.974948e-02 3.496782e-02 1.094947e-01 1.193011e-01 1.714448e-01 2.225801e-01 2.186677e-01 2.457903e-01 2.292117e-01 2.393470e-01 2.351134e-01 2.248505e-01 2.115021e-01 1.000000e-02 + 9.003870e+01 + 4 + 39 + 8.144379e-02 -1.056159e+01 -1.449498e+01 -1.742682e+01 -6.605819e+00 -1.848662e-01 -6.157303e+00 -1.843256e+00 -3.461576e+00 -7.340382e-01 -7.616338e-01 -3.768347e+00 -1.139167e+00 -5.922960e-01 6.457894e-01 6.054738e-01 2.012689e+00 4.337031e-01 -1.691665e+00 -6.947087e-01 2.383232e-01 1.532107e-01 2.406600e-01 -4.152880e-01 1.453999e-01 -4.442858e-01 -3.595566e-01 2.757670e-01 3.255826e-01 2.876866e-01 1.202905e-02 -1.120991e-01 6.100337e-02 -5.516433e-02 1.413110e-02 -1.100751e-01 -1.235648e-01 1.039813e-01 -1.212023e-01 + 39 + 1.468730e+01 3.746792e+01 3.811610e+01 6.210887e+01 5.986114e+01 7.340744e+01 8.168789e+01 6.314745e+01 7.078859e+01 6.950194e+01 7.745866e+01 5.249984e+01 2.029653e+00 1.841284e+00 3.527459e+00 3.148256e+00 3.259136e+00 4.723660e+00 3.386673e+00 5.061622e+00 4.075581e+00 4.227484e+00 3.699700e+00 3.497142e+00 3.329383e+00 2.226587e-01 3.481934e-01 3.225175e-01 3.035452e-01 5.053177e-01 5.346063e-01 5.943911e-01 7.188562e-01 6.887625e-01 6.940285e-01 6.724408e-01 6.783609e-01 5.597414e-01 2.585321e-02 + 1.226175e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.765256e-01 3.234744e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.631761e-01 1.368239e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.391233e-01 3.608767e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "r" + + 5 + 2 + 39 + 3.307885e+00 -9.426666e+00 -1.623261e+01 -7.580681e+00 -3.413558e+00 -8.710031e+00 -1.585460e+01 -1.670485e+00 -1.902601e+00 -2.846957e+00 -1.082909e+00 1.935497e-01 -1.930044e+00 1.131403e+00 -8.364629e-01 -5.484563e-01 1.473657e-01 -1.030062e-01 -8.218606e-01 -1.535839e+00 7.683578e-01 6.698807e-01 -1.004494e-01 -4.919759e-02 5.384237e-02 3.577048e-01 -7.167013e-01 -2.102269e-01 6.579108e-01 5.792000e-02 -4.326015e-01 4.001787e-02 6.477843e-01 2.761619e-01 -7.118780e-02 1.680365e-02 2.557620e-02 -1.144245e-01 -7.596367e-02 + 39 + 1.258299e+01 3.418637e+01 5.630765e+01 4.059099e+01 4.965901e+01 6.682065e+01 7.971671e+01 8.216067e+01 6.907298e+01 3.843977e+01 3.722926e+01 3.265870e+01 2.302869e+00 3.043909e+00 2.434827e+00 3.246005e+00 3.136929e+00 4.141356e+00 4.339998e+00 5.443490e+00 5.210525e+00 4.183674e+00 3.410430e+00 2.806871e+00 2.278859e+00 2.671134e-01 5.806719e-01 3.263848e-01 4.573051e-01 4.087939e-01 5.363148e-01 6.989414e-01 1.010011e+00 7.724742e-01 6.551826e-01 5.422187e-01 4.521458e-01 4.198282e-01 2.565667e-02 + 1.210139e+02 + 3 + 39 + 2.856418e+00 -1.441163e+01 -1.403921e+01 -5.812833e+00 -6.399738e+00 -1.271514e+01 -1.709857e+01 5.139959e+00 2.271978e-01 -3.493441e+00 -1.350222e+00 -4.101153e-01 -1.028001e+00 -5.082949e-01 -7.505645e-01 1.621106e+00 1.776565e-01 -1.506710e+00 -6.123925e-01 9.509394e-01 1.043623e+00 -3.810209e-01 -4.234842e-01 6.692782e-02 -1.688995e-01 5.943233e-02 -5.396949e-01 3.432972e-01 5.762066e-01 -2.542236e-01 -1.734214e-01 4.926319e-01 8.134189e-01 -4.903797e-01 -4.702938e-01 1.074165e-01 8.075276e-02 -1.202726e-01 -1.263765e-01 + 39 + 8.794625e+00 2.230948e+01 5.999266e+01 4.582182e+01 5.898839e+01 7.800253e+01 1.029160e+02 7.732094e+01 8.295757e+01 4.498067e+01 4.215553e+01 3.323536e+01 1.247136e+00 7.381160e-01 1.854519e+00 2.809521e+00 2.570356e+00 3.364102e+00 3.627534e+00 4.416227e+00 4.492038e+00 3.407072e+00 2.992473e+00 2.826477e+00 2.232834e+00 1.243629e-01 3.493357e-01 1.949393e-01 3.064299e-01 3.798393e-01 5.316914e-01 5.592186e-01 8.148417e-01 6.253156e-01 6.139632e-01 4.815374e-01 4.134555e-01 3.734979e-01 1.627260e-02 + 1.139121e+02 + 4 + 39 + 4.931744e-01 -1.429117e+01 -8.974236e+00 -6.337117e+00 -1.010395e+01 -1.323437e+01 -1.195393e+01 4.838129e+00 -3.160360e+00 -3.915706e+00 -1.510433e+00 -1.032130e+00 -1.434811e+00 -1.436763e+00 7.557493e-01 2.410089e+00 -3.251492e-01 -1.070921e+00 8.239064e-01 1.939938e+00 -1.012880e+00 -1.113988e+00 1.407995e-01 -5.117224e-02 -4.783951e-01 -3.117249e-01 -4.310178e-01 5.325980e-01 2.922672e-02 -2.479953e-01 4.118531e-01 6.157683e-01 1.948524e-01 -5.839016e-01 -3.435631e-02 2.245425e-01 -7.073712e-02 -1.219841e-01 -1.309589e-01 + 39 + 1.199125e+01 3.100128e+01 6.672738e+01 5.522567e+01 6.562051e+01 9.056096e+01 9.835684e+01 7.248053e+01 8.975609e+01 5.219272e+01 4.913890e+01 3.543001e+01 2.122239e+00 1.832063e+00 3.611482e+00 3.470930e+00 4.619292e+00 4.899239e+00 4.378382e+00 5.706629e+00 5.725571e+00 4.541598e+00 3.568983e+00 3.524627e+00 2.896764e+00 3.532198e-01 3.869484e-01 3.434613e-01 4.179122e-01 5.845961e-01 6.702951e-01 7.891983e-01 1.012108e+00 8.579475e-01 7.632688e-01 6.392938e-01 6.092157e-01 4.823774e-01 2.911810e-02 + 1.256369e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.289274e-01 4.710726e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 4.946904e-01 5.053096e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.264577e-01 6.735423e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "t" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.849423e+01 -7.241725e+00 -3.852108e+00 -7.774209e+00 -5.596538e+00 -6.714453e+00 -9.832263e-01 9.414796e-01 -1.563661e+00 -1.499532e+00 -2.413518e+00 4.308457e-02 -4.360301e+00 3.205270e+00 -2.987491e-01 4.605551e-01 5.633189e-01 -7.702059e-01 -9.046050e-01 -1.309110e+00 -3.433589e-01 -4.854245e-01 -5.753533e-01 -9.350238e-01 -7.007295e-01 1.608566e-01 7.797504e-01 -1.081257e-01 -1.004669e-01 -1.172639e-01 -1.605169e-01 1.594381e-01 -5.701525e-01 -1.777309e-01 -1.314189e-01 2.648882e-02 9.213286e-02 -1.501423e-01 2.520365e-02 + 39 + 2.586847e+01 2.857648e+01 2.643202e+01 2.715106e+01 2.886203e+01 2.844051e+01 3.366603e+01 2.828145e+01 2.643406e+01 2.176502e+01 1.952646e+01 1.734786e+01 1.966420e+00 4.456964e+00 2.946646e+00 4.160259e+00 3.609068e+00 4.854924e+00 4.671083e+00 4.709596e+00 3.575860e+00 3.738955e+00 3.158588e+00 3.078765e+00 2.338724e+00 3.986704e-01 5.575365e-01 5.253838e-01 5.624387e-01 6.634787e-01 6.663375e-01 7.586389e-01 7.882815e-01 7.040000e-01 6.288448e-01 5.689353e-01 5.550729e-01 4.743002e-01 1.079093e-01 + 1.179635e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "uw" + + 5 + 2 + 39 + -4.089445e+00 -9.668437e+00 3.925746e+00 -7.844073e+00 -1.520436e+01 -1.083072e+01 -1.452013e+01 -9.903376e-01 -9.134157e+00 -4.141346e+00 -5.647581e-01 -2.698728e+00 -1.872703e+00 1.007937e+00 -6.468939e-01 -3.708944e-01 -4.441537e-01 -3.484491e-01 1.882694e-01 -1.297663e+00 1.291630e-01 -4.567895e-02 3.035050e-01 4.227093e-01 -3.066169e-01 2.092607e-01 -6.621019e-01 4.370346e-01 -4.031270e-01 -1.924334e-02 5.862733e-01 4.190643e-01 6.951845e-01 -2.606776e-01 1.984040e-01 2.507419e-01 -9.000196e-02 1.867643e-02 -1.453363e-01 + 39 + 1.409231e+01 2.397873e+01 6.307664e+01 6.780535e+01 4.419759e+01 6.646230e+01 6.020684e+01 6.643138e+01 6.556490e+01 6.142342e+01 6.013081e+01 3.283908e+01 1.080060e+00 1.787298e+00 1.826701e+00 3.387232e+00 2.728112e+00 4.432955e+00 3.714463e+00 4.225864e+00 4.279329e+00 3.628401e+00 3.794723e+00 2.867531e+00 2.415060e+00 8.483582e-02 4.344866e-01 2.896997e-01 4.931350e-01 5.782449e-01 6.093674e-01 6.953346e-01 7.009947e-01 8.471893e-01 8.071272e-01 6.159238e-01 5.679414e-01 4.535808e-01 1.377630e-02 + 1.182529e+02 + 3 + 39 + -3.055546e+00 -8.372910e+00 6.251654e-01 -8.915179e+00 -1.318085e+01 -8.836787e+00 -1.454949e+01 -2.609376e+00 -8.258515e+00 -2.402473e+00 -3.710243e-01 -3.471562e+00 -1.978966e+00 9.313247e-02 2.548211e-01 -3.622762e-01 -1.434568e-02 3.541122e-01 2.705759e-01 6.695826e-02 -3.119532e-01 2.047177e-02 1.816304e-01 -9.456547e-02 -1.079896e-01 -8.276885e-02 -1.350741e-01 1.286683e-01 -5.853129e-03 7.580555e-02 1.102877e-01 9.047364e-03 2.211122e-01 -7.188703e-02 5.161554e-02 -2.596254e-02 -8.679281e-02 3.531554e-02 -5.303317e-02 + 39 + 1.312590e+01 2.693354e+01 6.002624e+01 6.610252e+01 4.434223e+01 8.036263e+01 6.681509e+01 6.880780e+01 6.296121e+01 6.469646e+01 7.160105e+01 3.801289e+01 1.413365e+00 2.880540e-01 6.002377e-01 1.207954e+00 1.278541e+00 1.428996e+00 1.789752e+00 1.728710e+00 1.933720e+00 1.849333e+00 1.733879e+00 1.487424e+00 1.247332e+00 2.370970e-02 1.025496e-01 1.537818e-01 1.733786e-01 2.076203e-01 2.956639e-01 3.148645e-01 4.087391e-01 3.637975e-01 3.571201e-01 3.180236e-01 2.832857e-01 2.371430e-01 1.000000e-02 + 9.664216e+01 + 4 + 39 + -4.125716e+00 -6.077404e+00 -5.350816e-01 -7.647099e+00 -1.103360e+01 -8.534043e+00 -1.281087e+01 -4.707764e+00 -8.428649e+00 -2.254760e+00 -1.781890e+00 -2.983600e+00 -3.005796e+00 -1.072047e+00 1.192634e+00 -7.591659e-01 4.944581e-01 1.334846e+00 4.766040e-01 1.623603e+00 -4.123034e-01 7.411889e-01 4.706568e-02 -4.992494e-01 8.702019e-02 -4.732303e-01 -5.075150e-01 8.836146e-02 -1.744362e-03 7.717600e-02 1.668410e-01 1.405139e-01 3.841894e-01 2.528359e-01 1.085825e-01 -4.751652e-02 -2.833574e-02 4.575609e-02 -7.878914e-02 + 39 + 2.187823e+01 2.896630e+01 7.011171e+01 6.275089e+01 4.930872e+01 7.559881e+01 6.055956e+01 5.845877e+01 5.964304e+01 6.438210e+01 6.853106e+01 3.934272e+01 2.901818e+00 2.612103e+00 3.351963e+00 2.790137e+00 3.907587e+00 4.522754e+00 5.359142e+00 5.155845e+00 5.617016e+00 5.138992e+00 5.045203e+00 4.291455e+00 3.200858e+00 2.643847e-01 3.917344e-01 4.586678e-01 4.478595e-01 4.956002e-01 6.624668e-01 7.861850e-01 7.627246e-01 7.173598e-01 7.714761e-01 7.529341e-01 6.504087e-01 5.220656e-01 4.666304e-02 + 1.266239e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.280276e-01 5.719724e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.003018e-01 1.996982e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.801057e-01 4.198943e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "w" + + 5 + 2 + 39 + -2.378053e-01 -1.109774e-01 -8.506446e+00 -1.453994e+01 -1.091955e+01 -2.616458e+00 -5.683800e+00 -4.864906e+00 -9.326594e+00 -2.713353e+00 -1.656283e+00 -2.080127e+00 -3.825176e+00 1.686243e+00 6.516797e-01 -8.483734e-02 -1.878202e+00 -1.450031e+00 3.362607e-01 1.301119e-02 -2.050979e-01 -7.175109e-01 -4.048690e-01 3.995565e-02 -4.616048e-02 5.570403e-01 -4.548917e-01 -6.177335e-01 4.084471e-02 1.418724e-01 1.453525e-01 -1.393273e-01 -2.036295e-01 3.049075e-01 4.087425e-01 2.741595e-01 1.983237e-02 -5.041340e-03 1.147272e-02 + 39 + 1.800785e+01 3.055625e+01 2.643671e+01 5.079036e+01 4.221148e+01 4.105965e+01 4.492493e+01 3.997179e+01 4.681069e+01 3.884879e+01 4.492467e+01 2.572182e+01 3.713457e+00 3.663174e+00 3.486735e+00 3.047116e+00 4.540174e+00 3.898961e+00 4.639326e+00 6.621083e+00 4.552141e+00 4.761693e+00 4.481720e+00 4.068394e+00 2.849980e+00 7.301731e-01 4.985139e-01 4.733539e-01 4.928364e-01 7.149244e-01 8.498603e-01 7.945268e-01 8.843251e-01 7.790362e-01 8.391967e-01 7.627903e-01 6.664427e-01 5.200801e-01 4.809487e-02 + 1.248906e+02 + 3 + 39 + 2.371805e+00 -8.968273e-01 -8.805236e+00 -2.047367e+01 -1.528434e+01 -9.788148e-02 -4.880797e+00 -2.659530e+00 -8.889580e+00 -3.842099e+00 -5.303314e-01 -1.665236e+00 -2.203731e+00 1.348303e-01 -1.181935e+00 -4.193243e-01 -5.836908e-01 3.791379e-01 6.608529e-01 -5.907875e-01 -2.212175e-01 5.432152e-02 6.451771e-01 7.037480e-01 2.139329e-01 3.338451e-01 -3.338905e-01 -4.437107e-01 -9.785363e-03 5.196973e-01 5.035273e-01 -1.946498e-01 -3.298631e-01 -3.916745e-02 3.139046e-01 3.472944e-01 4.192046e-02 -1.229580e-01 -4.068096e-02 + 39 + 6.583491e+00 2.961354e+01 3.321679e+01 4.965163e+01 5.089474e+01 5.438437e+01 4.867004e+01 4.873531e+01 5.326575e+01 4.511612e+01 4.763435e+01 3.135026e+01 1.567766e+00 4.958878e-01 2.530643e+00 1.707715e+00 2.549433e+00 3.525180e+00 3.413998e+00 3.886882e+00 3.183326e+00 3.018134e+00 3.811808e+00 3.214622e+00 2.372465e+00 1.177083e-01 2.655618e-01 2.445392e-01 3.056711e-01 5.319852e-01 4.705825e-01 7.148523e-01 6.574379e-01 6.464192e-01 7.650217e-01 6.136193e-01 6.112607e-01 5.384944e-01 2.965588e-02 + 1.127532e+02 + 4 + 39 + 8.710419e-01 -9.089808e+00 -1.019561e+01 -1.707331e+01 -8.498037e+00 -1.007398e+00 -1.221477e+01 -5.298457e+00 -6.790123e+00 3.460774e+00 1.695715e+00 -3.345761e+00 -1.240068e+00 -7.591020e-01 -1.852399e+00 7.469120e-01 1.694401e+00 5.825800e-01 -2.108889e+00 -1.604142e+00 1.229970e+00 2.162508e+00 8.168880e-01 -9.617290e-01 -1.070006e+00 1.872826e-01 -3.209210e-01 4.302254e-01 4.643000e-01 3.157178e-01 -4.336763e-01 -5.083842e-01 6.546314e-01 5.931813e-01 1.051688e-01 -7.864856e-01 -5.740520e-01 1.215414e-01 -1.377818e-01 + 39 + 8.562952e+00 2.794992e+01 4.406792e+01 6.636012e+01 4.708761e+01 8.264172e+01 6.919739e+01 5.683970e+01 6.552644e+01 6.925877e+01 8.718914e+01 4.017579e+01 1.437049e+00 4.900264e-01 1.495693e+00 2.657313e+00 2.705834e+00 3.744826e+00 4.371620e+00 4.576042e+00 4.735920e+00 3.260056e+00 5.074342e+00 3.570971e+00 3.013052e+00 5.249143e-02 2.182006e-01 2.840270e-01 3.356774e-01 5.816811e-01 6.465858e-01 8.484333e-01 9.053243e-01 7.370688e-01 1.011893e+00 8.042352e-01 8.178109e-01 6.994671e-01 1.924103e-02 + 1.182573e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.477335e-01 4.522665e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.975146e-01 3.024854e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.473197e-01 4.526803e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ah" + + 5 + 2 + 39 + -2.384203e+00 -1.298434e+01 -9.327827e+00 -1.574190e+01 -8.587043e+00 -3.656979e+00 -1.010273e+01 -2.895270e-02 3.123649e-01 1.706276e-01 -4.227306e+00 -5.666430e+00 -8.953738e-01 1.008065e+00 -1.665291e+00 -6.258246e-01 -1.268629e+00 1.190243e-02 6.721819e-01 -5.870072e-01 6.375433e-01 9.512351e-01 2.733177e-02 -4.686837e-01 -7.502646e-01 5.138501e-01 -6.873826e-01 5.430055e-01 2.065547e-01 5.440814e-01 2.982608e-01 -6.759894e-02 4.379547e-01 -1.969007e-01 -2.986368e-01 -1.147185e-01 1.037838e-01 2.765874e-01 -2.174453e-01 + 39 + 1.180070e+01 2.639503e+01 4.108421e+01 4.457001e+01 4.898495e+01 8.232156e+01 6.335782e+01 5.839138e+01 5.587996e+01 6.002249e+01 7.401813e+01 4.130536e+01 1.532897e+00 2.850214e+00 2.255725e+00 2.568412e+00 3.721409e+00 3.758389e+00 4.697872e+00 4.287052e+00 4.262446e+00 3.936812e+00 3.742255e+00 3.589975e+00 2.948183e+00 2.668449e-01 5.048035e-01 3.760526e-01 4.042455e-01 5.557792e-01 6.022546e-01 8.023492e-01 7.765383e-01 7.677380e-01 6.805099e-01 6.242718e-01 7.285756e-01 5.422150e-01 3.226386e-02 + 1.220250e+02 + 3 + 39 + -2.392046e+00 -1.417937e+01 -1.025648e+01 -1.624990e+01 -6.729639e+00 -2.993178e+00 -9.425033e+00 6.173980e-01 1.086288e+00 -8.816276e-01 -5.447381e+00 -5.854043e+00 -5.731584e-01 -7.990707e-03 3.178644e-01 9.469333e-02 1.560344e-01 9.219205e-02 -2.327672e-01 -3.420415e-02 -1.480396e-01 -8.290054e-02 -2.131944e-02 -6.678024e-02 6.336602e-02 -9.578308e-02 -1.092015e-01 4.869184e-01 2.358468e-01 3.323434e-01 -7.980830e-02 -2.236726e-01 5.305909e-02 -2.536107e-01 -3.335108e-01 2.748397e-02 1.187604e-01 1.724341e-01 -1.422758e-01 + 39 + 1.002368e+01 2.432681e+01 3.382311e+01 4.345953e+01 4.821678e+01 7.687334e+01 6.457238e+01 5.189580e+01 5.872079e+01 6.439259e+01 6.223120e+01 4.383935e+01 1.140385e+00 3.780159e-01 9.457923e-01 1.297549e+00 1.476699e+00 1.721507e+00 2.415527e+00 2.042959e+00 2.162034e+00 1.895218e+00 1.800802e+00 1.927282e+00 1.674584e+00 4.705211e-02 1.199876e-01 2.340738e-01 1.994090e-01 3.065397e-01 3.229315e-01 3.779621e-01 4.517278e-01 4.606757e-01 4.138252e-01 3.763147e-01 3.404127e-01 3.393291e-01 1.426716e-02 + 1.006490e+02 + 4 + 39 + -2.382109e+00 -1.013032e+01 -8.142673e+00 -1.389068e+01 -7.866870e+00 -5.838463e+00 -1.010165e+01 -1.364004e+00 -8.016328e-01 1.510269e-01 -4.162044e+00 -4.612607e+00 -1.737438e+00 -1.177923e+00 2.611525e+00 1.205460e+00 2.202505e+00 4.488875e-01 -4.638529e-01 6.539987e-01 -1.305030e+00 -1.446020e+00 -3.957059e-01 1.715232e-01 6.228715e-01 -8.805453e-01 -6.607659e-01 3.203505e-01 1.545948e-01 4.142892e-01 2.311660e-01 2.776657e-01 4.083714e-01 -1.349422e-01 -1.895593e-01 -1.531065e-01 -2.550566e-02 4.576441e-02 -1.752300e-01 + 39 + 1.268206e+01 3.161074e+01 3.999792e+01 4.907661e+01 4.590785e+01 7.729543e+01 6.227335e+01 5.883860e+01 5.714238e+01 6.549670e+01 6.877774e+01 4.259456e+01 2.091597e+00 2.959626e+00 2.687311e+00 2.709276e+00 3.917742e+00 4.300757e+00 4.823860e+00 5.112659e+00 5.239483e+00 4.843954e+00 4.795657e+00 4.296480e+00 3.486060e+00 2.904137e-01 4.428510e-01 5.471367e-01 4.078152e-01 6.694868e-01 5.757089e-01 7.833517e-01 7.099382e-01 9.327937e-01 6.976520e-01 7.370598e-01 7.338661e-01 5.455841e-01 5.627012e-02 + 1.255712e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.781988e-01 5.218012e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.585764e-01 2.414236e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.706824e-01 4.293176e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "n" + + 5 + 2 + 39 + -4.173611e+00 -3.370436e+00 -2.239525e+00 -5.754709e+00 -1.100467e+01 -8.096184e+00 -3.648773e+00 -8.349697e+00 -9.239568e+00 -7.876282e-01 -6.775628e+00 -3.990673e+00 -4.136813e+00 2.131780e-02 1.264075e+00 2.606204e-01 9.241176e-01 -1.064779e-01 -1.105372e-01 8.433201e-01 -1.945086e+00 -8.872706e-01 6.706058e-01 -4.913497e-01 -6.075297e-02 -2.707001e-01 -1.730303e-01 -2.589595e-01 -4.675633e-02 -3.305193e-01 1.015970e-01 1.562167e-01 -2.587543e-01 6.190946e-01 3.320381e-01 -2.792731e-01 1.837806e-01 7.935039e-02 5.914706e-02 + 39 + 8.326270e+00 2.691922e+01 3.029107e+01 4.900280e+01 4.427206e+01 4.703382e+01 5.038797e+01 7.191138e+01 6.206874e+01 5.499498e+01 5.182435e+01 4.444766e+01 1.945055e+00 8.884823e-01 2.176347e+00 2.483506e+00 2.682933e+00 2.787548e+00 3.095493e+00 3.584273e+00 5.679301e+00 4.143991e+00 3.210437e+00 2.684989e+00 2.206512e+00 1.518709e-01 1.958946e-01 2.893623e-01 3.826152e-01 4.219200e-01 4.932129e-01 4.989847e-01 5.450682e-01 7.955703e-01 6.304689e-01 5.321527e-01 4.622513e-01 4.158604e-01 1.439603e-02 + 1.130650e+02 + 3 + 39 + -3.968008e+00 -1.646686e+00 -2.215637e+00 -4.943655e+00 -1.171806e+01 -8.376256e+00 -2.856408e+00 -1.079985e+01 -1.049488e+01 -1.504948e-01 -7.393038e+00 -4.127079e+00 -4.264421e+00 -5.784777e-01 2.951783e-01 1.649091e-01 -5.419636e-02 5.818164e-01 2.123398e-01 -4.105967e-01 4.612277e-01 2.464691e-01 -5.051419e-01 2.062386e-01 9.061617e-02 -1.308152e-01 -4.885805e-01 -7.174881e-01 -1.079680e-01 -6.038970e-01 3.109166e-01 3.036421e-01 -4.914800e-01 1.324325e+00 7.364231e-01 -4.256114e-01 3.946224e-01 1.414978e-01 9.121803e-02 + 39 + 8.553438e+00 2.930980e+01 2.804076e+01 4.870023e+01 4.416180e+01 4.733860e+01 5.427853e+01 7.114278e+01 6.112367e+01 5.666138e+01 5.884408e+01 4.919191e+01 1.925217e+00 1.561065e+00 3.369333e+00 2.081892e+00 3.045504e+00 3.171586e+00 2.828886e+00 3.585076e+00 5.511392e+00 3.954414e+00 3.047210e+00 2.662725e+00 2.439824e+00 2.302697e-01 4.308361e-01 4.802664e-01 6.600280e-01 6.801986e-01 8.145006e-01 8.069484e-01 9.443831e-01 1.107355e+00 1.068700e+00 8.824259e-01 7.788248e-01 6.609712e-01 3.401092e-02 + 1.218221e+02 + 4 + 39 + -6.697446e+00 -3.234138e+00 -2.008603e+00 -6.405807e+00 -8.916270e+00 -7.114817e+00 -5.538602e+00 -5.301977e+00 -7.361317e+00 -2.924337e+00 -5.900564e+00 -3.616803e+00 -4.624671e+00 -1.289870e+00 -8.941665e-01 -2.698314e-01 -9.463536e-01 8.088672e-01 7.439819e-01 -6.712482e-01 2.176902e+00 1.327724e+00 -6.659224e-01 7.048733e-01 3.105567e-01 3.972982e-02 -2.004641e-01 -3.554881e-01 -2.017921e-01 -2.699706e-01 -6.703168e-02 1.646377e-01 9.745026e-02 3.154702e-01 2.419935e-01 1.405159e-01 1.509853e-01 1.012353e-01 9.757176e-02 + 39 + 2.198848e+01 4.490345e+01 3.313978e+01 5.115663e+01 4.537062e+01 4.147235e+01 4.832558e+01 6.384851e+01 5.879162e+01 4.545790e+01 4.046808e+01 3.633840e+01 4.502237e+00 4.302024e+00 4.135014e+00 3.879684e+00 4.755993e+00 5.127475e+00 4.337250e+00 5.373229e+00 6.866387e+00 5.695043e+00 4.700459e+00 4.232950e+00 3.375184e+00 4.484453e-01 5.056077e-01 6.217130e-01 4.810100e-01 6.278053e-01 6.667209e-01 6.293745e-01 7.423610e-01 1.061627e+00 8.483686e-01 6.779441e-01 6.092845e-01 5.030655e-01 4.554177e-02 + 1.276333e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.967619e-01 4.032381e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.567837e-01 6.432163e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.566752e-01 6.433249e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "td" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.849423e+01 -7.241725e+00 -3.852108e+00 -7.774209e+00 -5.596538e+00 -6.714453e+00 -9.832263e-01 9.414796e-01 -1.563661e+00 -1.499532e+00 -2.413518e+00 4.308457e-02 -4.360301e+00 3.205270e+00 -2.987491e-01 4.605551e-01 5.633189e-01 -7.702059e-01 -9.046050e-01 -1.309110e+00 -3.433589e-01 -4.854245e-01 -5.753533e-01 -9.350238e-01 -7.007295e-01 1.608566e-01 7.797504e-01 -1.081257e-01 -1.004669e-01 -1.172639e-01 -1.605169e-01 1.594381e-01 -5.701525e-01 -1.777309e-01 -1.314189e-01 2.648882e-02 9.213286e-02 -1.501423e-01 2.520365e-02 + 39 + 2.586847e+01 2.857648e+01 2.643202e+01 2.715106e+01 2.886203e+01 2.844051e+01 3.366603e+01 2.828145e+01 2.643406e+01 2.176502e+01 1.952646e+01 1.734786e+01 1.966420e+00 4.456964e+00 2.946646e+00 4.160259e+00 3.609068e+00 4.854924e+00 4.671083e+00 4.709596e+00 3.575860e+00 3.738955e+00 3.158588e+00 3.078765e+00 2.338724e+00 3.986704e-01 5.575365e-01 5.253838e-01 5.624387e-01 6.634787e-01 6.663375e-01 7.586389e-01 7.882815e-01 7.040000e-01 6.288448e-01 5.689353e-01 5.550729e-01 4.743002e-01 1.079093e-01 + 1.179635e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "d" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -1.152951e+01 -5.399796e+00 -6.517791e-01 -9.477132e+00 -9.344363e+00 -1.007641e+01 -7.042903e+00 -1.769197e+00 -3.181676e+00 -2.343513e+00 -2.434306e+00 -3.189108e-01 -3.197309e+00 2.217976e+00 -4.923455e-01 4.969337e-01 -7.743727e-01 -2.096328e+00 -1.672876e+00 -1.672562e+00 5.953589e-01 1.171352e-01 2.334771e-01 -2.291614e-01 8.859739e-02 7.501148e-01 4.363321e-01 2.990309e-01 -8.327494e-02 6.537685e-01 2.598653e-01 5.104223e-01 1.562919e-02 -1.481818e-01 -1.713700e-01 -4.109250e-02 -2.463635e-01 -3.344376e-01 -2.720208e-01 + 39 + 4.017448e+01 3.531164e+01 4.180549e+01 4.297855e+01 4.413027e+01 4.126839e+01 4.578101e+01 3.716766e+01 3.787133e+01 2.461274e+01 2.270850e+01 1.892219e+01 2.757050e+00 5.308168e+00 4.370759e+00 5.453950e+00 5.825969e+00 6.794315e+00 5.493189e+00 6.508540e+00 5.828861e+00 5.591875e+00 4.210355e+00 4.437317e+00 3.253027e+00 4.207090e-01 4.096860e-01 8.217536e-01 5.702770e-01 7.429511e-01 6.725056e-01 6.955692e-01 7.456657e-01 7.409103e-01 7.124133e-01 5.715035e-01 5.341341e-01 4.402450e-01 4.941485e-02 + 1.254565e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "b" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -3.819295e+00 -6.528706e+00 -5.770813e+00 -1.168575e+01 -9.318489e+00 -6.359237e+00 -7.946378e+00 -3.686001e+00 -3.448070e+00 -6.829492e-01 -5.960523e-01 -1.691274e+00 -2.429262e+00 2.646140e+00 -2.225971e+00 -6.096498e-01 -3.535836e+00 -2.553553e+00 -5.970588e-01 -1.443804e+00 4.112320e-01 -3.958701e-02 6.347749e-01 3.746856e-01 -4.996296e-02 1.460733e+00 -2.696480e-01 5.214859e-01 2.808807e-01 5.874565e-01 4.376685e-01 4.965522e-01 1.834408e-01 -5.584493e-02 -2.780818e-01 -2.229132e-01 -2.634228e-01 -2.200621e-01 -3.481527e-01 + 39 + 2.636506e+01 2.655502e+01 6.535246e+01 6.702452e+01 3.607483e+01 5.997146e+01 4.105447e+01 3.601876e+01 3.894215e+01 3.317067e+01 3.330225e+01 2.243501e+01 1.939805e+00 4.262395e+00 5.653009e+00 9.088739e+00 7.294497e+00 6.469121e+00 7.895753e+00 7.793791e+00 7.528284e+00 7.715783e+00 5.431164e+00 5.411783e+00 3.823601e+00 3.547706e-01 4.002149e-01 3.971212e-01 3.799352e-01 5.654340e-01 4.423485e-01 5.589233e-01 5.432251e-01 6.755288e-01 6.322625e-01 5.420268e-01 4.719928e-01 3.990782e-01 4.128263e-02 + 1.254401e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "y" + + 5 + 2 + 39 + -9.993198e+00 -2.697124e+00 1.155856e+01 -1.183422e+01 -1.442782e+01 -6.150234e+00 -9.545994e+00 -4.802236e+00 -1.118147e+01 -4.496890e+00 -3.053552e+00 -2.735646e+00 -3.651329e+00 8.841969e-01 -3.970279e-01 1.658467e+00 -7.007014e-01 -1.526501e+00 -1.429254e-01 -9.180406e-01 1.144140e-01 -9.196979e-01 -3.860103e-01 2.962167e-01 -1.640297e-01 3.975992e-01 -8.539741e-02 -3.868594e-01 -7.545833e-01 2.668845e-01 1.507422e-01 -1.632344e-01 2.577997e-01 3.226092e-01 3.184806e-01 2.052089e-01 1.385121e-01 1.026795e-01 -3.039392e-03 + 39 + 1.795949e+01 3.897855e+01 3.580877e+01 7.740948e+01 4.451903e+01 5.773201e+01 4.107566e+01 5.695743e+01 3.964878e+01 4.822846e+01 4.896882e+01 2.750134e+01 3.253895e+00 4.076579e+00 3.207672e+00 4.262156e+00 3.797954e+00 5.358807e+00 4.964362e+00 4.415706e+00 3.864410e+00 4.080986e+00 4.180301e+00 2.978958e+00 2.259292e+00 3.726760e-01 4.240220e-01 3.264923e-01 4.877972e-01 6.657839e-01 8.040920e-01 7.465873e-01 6.109810e-01 6.528417e-01 5.926858e-01 5.352865e-01 4.541734e-01 3.575664e-01 2.887282e-02 + 1.218937e+02 + 3 + 39 + -8.810253e+00 -5.186257e+00 1.337016e+01 -1.165393e+01 -1.853770e+01 -6.979693e+00 -9.385159e+00 -4.813743e+00 -1.246442e+01 -3.644641e+00 -1.967572e+00 -3.123225e+00 -2.631900e+00 4.725603e-01 -8.082513e-01 -4.930348e-01 6.408682e-01 -6.973953e-01 -9.214833e-01 1.692197e-01 5.688624e-01 -2.573209e-01 1.048504e-01 4.967539e-01 8.740813e-02 1.843331e-01 2.857818e-02 -6.145630e-02 -5.353569e-01 2.101047e-01 3.429663e-01 -2.368303e-01 4.161731e-03 2.205281e-01 2.394727e-01 -3.487356e-02 -1.790517e-02 8.636372e-02 -2.373333e-02 + 39 + 1.026830e+01 3.104517e+01 3.862315e+01 8.113662e+01 3.509373e+01 5.030579e+01 4.418841e+01 5.971267e+01 4.366038e+01 5.905164e+01 5.335320e+01 2.870698e+01 1.591087e+00 7.221052e-01 1.118819e+00 1.523140e+00 1.388651e+00 1.544365e+00 2.459841e+00 2.222335e+00 2.353085e+00 1.799127e+00 1.709734e+00 1.476081e+00 1.124228e+00 6.457179e-02 1.594819e-01 1.625363e-01 3.100880e-01 2.796455e-01 4.922843e-01 3.814919e-01 4.004836e-01 3.442520e-01 4.275779e-01 3.839713e-01 2.876708e-01 2.308119e-01 1.048373e-02 + 1.000857e+02 + 4 + 39 + -5.470385e+00 -1.005392e+01 6.738904e+00 -6.757406e+00 -1.878450e+01 -1.365212e+01 -9.264842e+00 1.825015e+00 -1.119589e+01 -4.951965e+00 9.602569e-01 -1.081591e+00 -1.850759e+00 9.566208e-01 -8.044767e-01 -2.552999e+00 6.741331e-01 1.375785e+00 -1.131745e+00 -1.151983e+00 1.336728e+00 1.608716e+00 -2.693110e-01 -3.100187e-01 2.850730e-01 1.459938e-01 -6.854884e-02 3.320549e-01 -2.783335e-01 -3.351806e-01 6.702982e-01 6.638604e-01 -2.397092e-01 -5.401049e-01 4.305266e-01 2.421445e-01 -3.588368e-01 -2.376648e-01 -7.984772e-02 + 39 + 1.074896e+01 2.493872e+01 4.828393e+01 6.368084e+01 3.649028e+01 5.470821e+01 6.242529e+01 5.682482e+01 6.268538e+01 6.029321e+01 4.503817e+01 2.657187e+01 1.627798e+00 5.767472e-01 1.092799e+00 2.129613e+00 1.966847e+00 2.217908e+00 3.081995e+00 3.341589e+00 3.269991e+00 3.078043e+00 2.865728e+00 2.095332e+00 1.950199e+00 4.487712e-02 1.402963e-01 1.671292e-01 3.648795e-01 3.461221e-01 4.491781e-01 5.503042e-01 6.271612e-01 5.583690e-01 5.557126e-01 5.671193e-01 3.948530e-01 3.224156e-01 1.000000e-02 + 1.065594e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.592138e-01 4.407862e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.171683e-01 2.828318e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.419661e-01 4.580339e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ae" + + 5 + 2 + 39 + -4.760504e+00 -1.482006e+01 -4.214446e+00 -1.343536e+01 -1.413163e+01 -7.847695e+00 -3.238632e+00 4.578210e+00 -2.170470e+00 -2.941341e+00 -5.086074e+00 -4.194782e+00 -9.832021e-01 2.985460e-01 -1.515890e+00 -1.569858e-01 -7.582392e-01 -3.650464e-01 4.696392e-01 6.600512e-01 8.884499e-01 1.778245e-01 -5.287296e-01 -3.462710e-01 -2.212078e-01 4.291781e-01 -4.328249e-01 4.544944e-01 -6.873933e-02 3.458443e-01 4.860729e-01 2.574126e-01 1.423636e-01 -3.648689e-01 -1.087759e-01 1.452681e-02 9.669956e-02 1.229868e-01 -1.863454e-01 + 39 + 1.369238e+01 2.960531e+01 4.794776e+01 4.703376e+01 4.988228e+01 5.169176e+01 6.601340e+01 5.769418e+01 6.981433e+01 4.328954e+01 4.309315e+01 3.259449e+01 1.747713e+00 1.423062e+00 1.989513e+00 2.139397e+00 2.333353e+00 2.881002e+00 2.635206e+00 3.417785e+00 2.970266e+00 2.790669e+00 2.413098e+00 2.180683e+00 2.134803e+00 1.994961e-01 3.470515e-01 3.189557e-01 3.061356e-01 4.006336e-01 4.611997e-01 5.019132e-01 5.788556e-01 5.024021e-01 5.286076e-01 4.627354e-01 4.296885e-01 3.662798e-01 2.878356e-02 + 1.123462e+02 + 3 + 39 + -4.948763e+00 -1.626587e+01 -5.561300e+00 -1.304880e+01 -1.267073e+01 -6.033389e+00 -9.986303e-01 4.153447e+00 -2.389027e+00 -4.805169e+00 -5.657287e+00 -4.100540e+00 -6.099801e-01 6.103691e-02 -2.796368e-02 -2.958711e-01 1.209683e-01 3.086838e-01 4.317705e-02 -4.854421e-02 -3.554750e-02 3.691936e-02 -1.079983e-01 -1.134003e-01 -2.420772e-02 -1.737031e-02 4.570439e-02 2.136319e-01 5.360766e-03 6.662438e-02 2.544462e-02 -1.115171e-01 -1.772221e-01 -1.008363e-01 -1.506258e-02 1.313343e-01 5.317792e-02 -6.995020e-03 -5.149506e-02 + 39 + 1.204754e+01 2.776356e+01 4.994287e+01 4.385696e+01 5.457005e+01 4.970939e+01 5.773195e+01 5.807491e+01 7.624288e+01 3.890083e+01 3.900058e+01 3.703259e+01 1.286784e+00 2.406123e-01 6.195631e-01 9.071499e-01 7.948526e-01 1.198202e+00 1.237155e+00 1.441318e+00 1.333501e+00 1.221534e+00 1.173317e+00 1.073874e+00 9.410237e-01 1.834509e-02 4.097152e-02 1.159960e-01 1.311492e-01 1.435653e-01 1.891482e-01 1.882970e-01 2.199672e-01 2.369592e-01 2.099968e-01 1.921561e-01 1.937166e-01 1.721170e-01 1.000000e-02 + 8.508922e+01 + 4 + 39 + -3.669199e+00 -1.376960e+01 -7.165896e+00 -1.145909e+01 -1.076422e+01 -8.244110e+00 -3.926257e+00 3.775639e+00 -1.787987e+00 -3.078651e+00 -5.623158e+00 -4.439575e+00 -1.382422e+00 -4.259551e-01 2.307781e+00 5.252068e-01 1.229176e+00 6.156303e-01 -3.053592e-01 -5.805377e-01 -1.161610e+00 -6.563492e-01 7.334683e-01 4.950378e-01 1.415139e-01 -6.974384e-01 -5.382434e-01 4.835768e-01 2.355375e-01 3.505446e-01 2.511742e-01 2.711401e-01 1.833350e-01 -3.822440e-01 -2.177129e-01 6.519116e-03 1.203008e-01 1.064291e-01 -2.086004e-01 + 39 + 1.167485e+01 3.178764e+01 4.773876e+01 4.067141e+01 4.962703e+01 5.644986e+01 6.761678e+01 6.224295e+01 7.480271e+01 5.062434e+01 4.981819e+01 3.870213e+01 1.861872e+00 2.485493e+00 2.902735e+00 2.848241e+00 3.165737e+00 3.780024e+00 3.877965e+00 4.258890e+00 4.899519e+00 4.622909e+00 3.315971e+00 3.268384e+00 2.997549e+00 2.804869e-01 4.153253e-01 4.362791e-01 4.124203e-01 4.645594e-01 5.893084e-01 6.572215e-01 6.907871e-01 7.768157e-01 7.916495e-01 6.358581e-01 6.082596e-01 4.692979e-01 3.619447e-02 + 1.213215e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.935643e-01 4.064357e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.675385e-01 1.324615e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.931076e-01 3.068924e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "er" + + 5 + 2 + 39 + 1.523428e+00 -1.295063e+01 -1.097238e+01 -7.501873e+00 -7.281820e+00 -1.276236e+01 -1.588594e+01 2.935303e+00 -1.433884e+00 -2.805436e+00 -1.566318e+00 -7.506057e-01 -1.534697e+00 1.741187e+00 -9.944383e-01 -1.425694e+00 4.900906e-02 5.795573e-01 -8.755084e-01 -2.115909e+00 1.175973e+00 7.697185e-01 -2.501602e-01 2.576428e-02 3.498813e-01 3.468857e-01 -9.301014e-01 3.967958e-01 3.146006e-01 1.070431e-01 1.530434e-01 3.971072e-01 6.565099e-01 -2.456549e-01 -4.537481e-02 6.787876e-02 -4.933469e-02 -3.171835e-02 -1.776727e-01 + 39 + 1.359389e+01 2.622513e+01 7.317751e+01 4.469598e+01 6.433258e+01 7.442430e+01 8.571806e+01 6.620939e+01 7.325871e+01 4.533980e+01 4.313953e+01 3.247112e+01 1.423649e+00 3.115883e+00 2.037663e+00 3.118392e+00 2.733232e+00 3.809691e+00 3.822052e+00 5.557709e+00 4.417267e+00 3.844959e+00 3.259489e+00 2.672282e+00 2.215004e+00 1.582941e-01 5.994259e-01 3.693263e-01 5.578378e-01 4.559529e-01 6.351058e-01 6.737432e-01 9.469485e-01 7.184996e-01 6.190126e-01 5.515814e-01 4.775410e-01 4.218725e-01 2.497458e-02 + 1.203261e+02 + 3 + 39 + 2.706353e+00 -1.325475e+01 -1.421205e+01 -6.302191e+00 -4.820068e+00 -1.373343e+01 -1.796746e+01 5.018622e+00 1.072516e+00 -3.219396e+00 -1.892521e+00 -3.743627e-01 -1.327030e+00 -6.262375e-02 1.610425e-01 1.001854e-01 2.629102e-01 7.097526e-02 -9.040437e-02 -3.662322e-02 -1.956802e-03 4.126721e-02 -1.237561e-01 -1.626695e-01 5.403234e-02 -8.646872e-02 -2.744646e-01 1.949634e-01 3.602131e-01 1.267194e-02 -1.713278e-01 1.868606e-01 4.203460e-01 -2.598716e-01 -2.218264e-01 -4.931376e-03 -7.211520e-03 -4.913775e-02 -8.050095e-02 + 39 + 1.015698e+01 2.624182e+01 5.946754e+01 4.152413e+01 6.299224e+01 7.963697e+01 1.061379e+02 7.793281e+01 8.425896e+01 4.401165e+01 3.864273e+01 3.003412e+01 1.675165e+00 3.653318e-01 7.682283e-01 1.968006e+00 1.180314e+00 2.134276e+00 1.797917e+00 2.405415e+00 2.189484e+00 1.916567e+00 1.658133e+00 1.419492e+00 1.246028e+00 3.194239e-02 1.873786e-01 1.914054e-01 2.120987e-01 2.181013e-01 3.019065e-01 3.405610e-01 5.217606e-01 4.328026e-01 3.418726e-01 2.973998e-01 2.462162e-01 2.271993e-01 1.247014e-02 + 9.954927e+01 + 4 + 39 + -9.664114e-01 -1.029141e+01 -9.040834e+00 -3.973351e+00 -6.372850e+00 -1.287672e+01 -1.323361e+01 2.441041e+00 -1.398924e+00 -4.315456e+00 -3.476614e+00 -1.692228e-01 -3.065957e+00 -2.074215e+00 1.523273e+00 1.672928e+00 3.705677e-01 1.010936e-02 1.332811e+00 2.239979e+00 -1.351234e+00 -8.159371e-01 -3.321401e-02 -2.149021e-01 -2.787068e-01 -6.554799e-01 -6.200215e-01 2.493268e-01 1.223151e-01 -1.860689e-01 1.808112e-01 4.416373e-01 3.248144e-01 -1.410732e-01 -4.354270e-02 1.786005e-01 8.727583e-02 -1.248645e-01 -1.037827e-01 + 39 + 2.446440e+01 2.932269e+01 6.719380e+01 5.146738e+01 6.927998e+01 7.085061e+01 9.449268e+01 6.596964e+01 7.513418e+01 4.786940e+01 3.858930e+01 2.988354e+01 4.116648e+00 3.601652e+00 3.675078e+00 3.746271e+00 3.986257e+00 5.002774e+00 5.038059e+00 6.594635e+00 5.368794e+00 4.585776e+00 3.962108e+00 3.182549e+00 2.600839e+00 3.131225e-01 5.621806e-01 5.353928e-01 6.025804e-01 6.282970e-01 7.712488e-01 8.454192e-01 1.042001e+00 8.169292e-01 6.952790e-01 6.420301e-01 5.496634e-01 4.494595e-01 5.807665e-02 + 1.284120e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.838771e-01 5.161229e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.980293e-01 2.019707e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.500244e-01 3.499756e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "iy" + + 5 + 2 + 39 + -6.596122e+00 -8.749645e+00 7.320929e+00 -1.013925e+01 -1.875037e+01 -1.157494e+01 -9.322081e+00 -6.239320e-01 -1.005441e+01 -3.944612e+00 -4.301548e-01 -1.433143e+00 -1.891609e+00 -2.884299e-01 1.393716e-02 2.315601e+00 -1.136922e+00 -2.033865e+00 7.281389e-01 4.521160e-01 -4.869756e-01 -1.558626e+00 2.439288e-01 5.404574e-01 -2.396505e-01 1.554617e-01 -2.728705e-01 4.128137e-01 -6.241513e-01 4.806290e-02 7.825410e-01 5.123715e-01 1.429203e-01 -3.838038e-01 3.304742e-01 3.014940e-01 -1.846096e-01 -1.545002e-01 -1.336786e-01 + 39 + 1.186845e+01 3.001722e+01 4.630725e+01 6.484319e+01 3.598766e+01 5.644590e+01 5.701727e+01 7.005254e+01 5.755239e+01 5.457765e+01 5.222350e+01 2.988067e+01 1.347598e+00 1.898796e+00 2.011770e+00 2.284907e+00 3.346898e+00 3.193640e+00 3.810411e+00 4.841551e+00 4.421527e+00 3.603067e+00 3.731400e+00 3.098136e+00 2.397549e+00 1.324924e-01 4.191535e-01 2.913438e-01 4.298999e-01 5.735358e-01 4.921677e-01 6.373149e-01 8.239269e-01 8.599596e-01 7.358632e-01 5.805174e-01 5.226563e-01 3.929069e-01 2.004680e-02 + 1.173423e+02 + 3 + 39 + -8.785172e+00 -5.112659e+00 1.089329e+01 -1.372781e+01 -2.014141e+01 -6.780506e+00 -8.277029e+00 -5.556225e+00 -1.122421e+01 -1.895969e+00 -1.871095e+00 -2.933276e+00 -2.124170e+00 -7.228731e-02 2.685601e-01 7.597148e-02 3.004579e-02 5.012905e-02 2.525615e-01 1.771262e-01 -2.339784e-01 -6.971885e-02 1.287838e-01 -1.340630e-01 -1.576218e-01 -7.727809e-02 5.918504e-02 -1.232715e-02 -4.426073e-01 3.381764e-01 3.415202e-01 -2.194361e-01 8.618976e-02 1.648402e-01 1.948752e-01 -8.311652e-02 -3.394385e-02 5.528139e-02 -5.705638e-02 + 39 + 1.094931e+01 3.080907e+01 3.441180e+01 8.176080e+01 3.424856e+01 5.594095e+01 4.764805e+01 6.427496e+01 4.551280e+01 5.886480e+01 6.898461e+01 3.318119e+01 1.473019e+00 3.846151e-01 1.025399e+00 1.171338e+00 1.291342e+00 1.108912e+00 1.818341e+00 1.644632e+00 1.833290e+00 1.557927e+00 1.360981e+00 1.199317e+00 1.056858e+00 4.006262e-02 1.012763e-01 1.679221e-01 2.654910e-01 2.959392e-01 3.655967e-01 3.227871e-01 3.342164e-01 3.294250e-01 3.532966e-01 3.209033e-01 2.826572e-01 2.166441e-01 1.043541e-02 + 9.560758e+01 + 4 + 39 + -8.414595e+00 -4.943367e+00 7.423591e+00 -8.851294e+00 -1.696914e+01 -8.710757e+00 -6.145351e+00 -3.787964e+00 -1.084704e+01 -2.616009e+00 -1.721985e+00 -2.873876e+00 -3.318902e+00 -3.579092e-01 6.435065e-01 -2.242953e+00 1.423370e+00 2.291560e+00 -1.201363e-01 7.180798e-01 3.232536e-01 1.119944e+00 -1.672506e-01 -2.746767e-01 1.140478e-01 -4.992083e-01 -2.598725e-01 5.621018e-02 -5.053222e-01 -1.713883e-02 5.413078e-01 2.915711e-01 -1.046349e-02 2.874069e-02 3.582297e-01 8.096435e-02 -6.642877e-02 5.574432e-02 -7.677292e-02 + 39 + 1.721251e+01 3.446598e+01 4.826331e+01 6.840611e+01 4.468618e+01 6.557906e+01 6.114899e+01 7.231479e+01 5.361425e+01 5.228109e+01 5.942119e+01 3.234881e+01 4.401694e+00 2.771515e+00 3.300223e+00 3.011604e+00 4.381826e+00 4.213120e+00 5.088613e+00 4.648187e+00 4.837875e+00 4.337564e+00 4.183296e+00 3.608879e+00 2.582874e+00 2.999164e-01 3.640044e-01 4.544100e-01 5.619841e-01 6.863405e-01 7.066844e-01 7.996723e-01 6.877364e-01 8.347907e-01 7.106507e-01 6.175264e-01 5.504152e-01 4.209120e-01 4.591395e-02 + 1.251772e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.434117e-01 4.565883e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.992262e-01 2.007738e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.449338e-01 3.550662e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "dd" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -1.152951e+01 -5.399796e+00 -6.517791e-01 -9.477132e+00 -9.344363e+00 -1.007641e+01 -7.042903e+00 -1.769197e+00 -3.181676e+00 -2.343513e+00 -2.434306e+00 -3.189108e-01 -3.197309e+00 2.217976e+00 -4.923455e-01 4.969337e-01 -7.743727e-01 -2.096328e+00 -1.672876e+00 -1.672562e+00 5.953589e-01 1.171352e-01 2.334771e-01 -2.291614e-01 8.859739e-02 7.501148e-01 4.363321e-01 2.990309e-01 -8.327494e-02 6.537685e-01 2.598653e-01 5.104223e-01 1.562919e-02 -1.481818e-01 -1.713700e-01 -4.109250e-02 -2.463635e-01 -3.344376e-01 -2.720208e-01 + 39 + 4.017448e+01 3.531164e+01 4.180549e+01 4.297855e+01 4.413027e+01 4.126839e+01 4.578101e+01 3.716766e+01 3.787133e+01 2.461274e+01 2.270850e+01 1.892219e+01 2.757050e+00 5.308168e+00 4.370759e+00 5.453950e+00 5.825969e+00 6.794315e+00 5.493189e+00 6.508540e+00 5.828861e+00 5.591875e+00 4.210355e+00 4.437317e+00 3.253027e+00 4.207090e-01 4.096860e-01 8.217536e-01 5.702770e-01 7.429511e-01 6.725056e-01 6.955692e-01 7.456657e-01 7.409103e-01 7.124133e-01 5.715035e-01 5.341341e-01 4.402450e-01 4.941485e-02 + 1.254565e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "v" + + 5 + 2 + 39 + -5.845244e+00 -2.841478e+00 -6.669322e+00 -6.336512e+00 -5.139783e+00 -6.160735e+00 -9.416710e+00 -6.498714e+00 -5.002334e+00 -1.724120e+00 -1.724350e+00 -2.935886e+00 -4.663440e+00 -2.268772e+00 1.614919e+00 3.711116e-01 1.250641e+00 1.178020e+00 8.649279e-01 1.092844e+00 -3.249235e-01 -3.495165e-01 -5.785282e-01 -4.383936e-01 1.289112e-01 -7.978710e-01 -7.475541e-02 -6.050541e-01 1.594541e-01 -3.145607e-01 -3.682308e-01 -1.011379e-01 8.668959e-02 5.553643e-01 2.476200e-01 8.306134e-02 -8.899746e-02 1.810162e-04 1.818014e-01 + 39 + 2.551706e+01 1.809273e+01 2.633723e+01 2.522463e+01 1.792433e+01 3.077104e+01 2.700360e+01 2.521944e+01 2.607454e+01 2.505153e+01 2.810616e+01 2.153744e+01 2.715306e+00 3.030107e+00 2.241069e+00 2.826130e+00 3.126404e+00 2.584444e+00 3.371414e+00 3.754780e+00 3.724328e+00 3.055546e+00 2.830493e+00 2.672004e+00 1.972729e+00 2.264373e-01 3.886750e-01 3.714371e-01 4.015397e-01 4.033241e-01 4.365994e-01 4.509182e-01 5.909370e-01 5.579293e-01 5.275629e-01 4.708768e-01 4.295140e-01 3.690416e-01 3.416127e-02 + 1.091633e+02 + 3 + 39 + -1.327139e+01 -2.013950e+00 -4.990180e+00 -3.869619e+00 -3.241270e+00 -3.869032e+00 -5.367150e+00 -4.129334e+00 -4.530923e+00 -2.839386e+00 -3.317783e+00 -2.385416e+00 -6.238900e+00 -8.212737e-01 -4.493727e-01 -1.545893e-01 -1.583530e-01 -7.525081e-02 -4.812538e-02 4.805008e-01 6.037508e-01 4.473872e-01 1.177081e-01 6.184060e-02 1.915129e-01 5.633707e-02 1.100417e+00 -6.241250e-01 -2.323407e-01 -7.095533e-01 -5.952851e-01 -4.547832e-01 -4.618109e-01 1.430579e-01 1.212618e-01 2.426978e-01 1.845614e-01 -7.235488e-03 3.943295e-01 + 39 + 4.453132e+01 2.048189e+01 2.353966e+01 2.393999e+01 1.820858e+01 2.387994e+01 2.704720e+01 2.454204e+01 2.337212e+01 2.067169e+01 2.010818e+01 1.664946e+01 3.226744e+00 5.226992e+00 1.959328e+00 2.045551e+00 2.620944e+00 2.172874e+00 2.612988e+00 2.716805e+00 2.389851e+00 2.182962e+00 1.972746e+00 1.915849e+00 1.545393e+00 3.939951e-01 6.624347e-01 6.216725e-01 6.357582e-01 6.687742e-01 5.694318e-01 6.884288e-01 7.904923e-01 7.822783e-01 6.661128e-01 5.715545e-01 5.155680e-01 4.003935e-01 4.966773e-02 + 1.110870e+02 + 4 + 39 + -9.211680e+00 -4.401794e+00 -7.222131e+00 -7.398927e+00 -6.024594e+00 -6.159185e+00 -6.697021e+00 -3.688032e+00 -3.258189e+00 -1.771444e+00 -2.058941e+00 -2.158501e+00 -4.459593e+00 1.893032e+00 -1.266946e+00 -3.525220e-01 -1.396569e+00 -1.078415e+00 -8.171209e-01 -7.120409e-01 5.820624e-01 2.861344e-01 3.649230e-01 2.643197e-01 3.889980e-02 7.503578e-01 3.499296e-01 -2.433653e-01 1.422188e-01 -1.715656e-01 -1.504391e-01 1.894740e-02 -1.949709e-01 1.478774e-01 -4.714077e-02 2.257664e-02 -2.353346e-02 -5.156142e-02 8.699581e-02 + 39 + 5.704566e+01 2.169247e+01 3.613849e+01 3.318525e+01 2.495079e+01 3.540636e+01 3.717207e+01 2.939563e+01 2.767400e+01 2.334372e+01 2.284137e+01 1.976311e+01 3.814775e+00 6.739159e+00 3.572292e+00 4.060587e+00 5.135482e+00 4.267477e+00 4.932196e+00 5.502515e+00 4.383823e+00 3.948261e+00 3.010800e+00 2.791192e+00 2.345508e+00 6.291221e-01 6.676493e-01 4.686235e-01 4.238567e-01 5.954766e-01 5.184957e-01 5.954455e-01 6.937231e-01 6.292434e-01 5.502688e-01 4.636785e-01 4.244207e-01 3.606612e-01 5.836701e-02 + 1.193028e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.566848e-01 5.433152e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.338739e-01 4.661261e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.838826e-01 6.161174e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "dx" + + 5 + 2 + 39 + -4.539454e+00 -7.857251e+00 -1.596208e+00 -3.513728e+00 -1.106250e+01 -8.503076e+00 -9.176913e+00 -4.163338e+00 -2.115869e+00 -2.518273e+00 -4.653949e+00 -3.442836e+00 -3.513931e+00 -8.521934e-01 7.701062e-01 8.905668e-01 5.465965e-01 6.086594e-01 -2.653829e-02 3.139393e-01 -6.864330e-01 -4.566146e-01 -2.041172e-01 -1.016766e-01 3.387529e-01 -4.136394e-01 2.383240e-01 -5.734212e-01 -8.398443e-02 -1.074163e+00 -5.538532e-01 -4.329426e-02 -2.485044e-01 6.556827e-01 -4.162624e-02 1.812651e-01 3.670956e-01 1.119114e-01 3.309200e-01 + 39 + 2.050211e+01 4.235407e+01 5.207346e+01 5.949771e+01 5.528299e+01 4.303033e+01 4.497871e+01 4.293058e+01 4.981335e+01 4.290592e+01 3.286763e+01 2.975759e+01 3.905186e+00 1.518343e+00 1.867376e+00 3.753524e+00 3.935109e+00 4.543169e+00 4.363874e+00 5.362884e+00 4.182101e+00 4.072016e+00 3.074741e+00 3.397179e+00 2.690289e+00 1.337291e-01 3.185621e-01 5.138955e-01 5.863269e-01 8.830824e-01 1.238412e+00 8.990619e-01 1.239154e+00 1.068199e+00 9.710976e-01 8.975865e-01 9.659125e-01 5.814319e-01 4.609419e-02 + 1.244264e+02 + 3 + 39 + -6.619350e+00 -8.511685e+00 -6.400916e-02 -6.476616e+00 -1.162975e+01 -8.721704e+00 -9.129243e+00 -3.483073e+00 -2.773933e+00 -2.731969e+00 -3.232150e+00 -1.880456e+00 -3.241278e+00 2.424949e-01 -6.662268e-01 6.908700e-01 -1.175940e+00 -1.092583e+00 -2.837664e-01 -6.672603e-01 6.672792e-01 -2.989849e-01 2.498259e-01 5.147517e-01 4.375263e-01 3.147649e-01 5.199053e-01 -4.643151e-01 -2.541952e-01 -6.520699e-01 -5.536358e-01 -3.820450e-02 -2.694355e-01 5.585966e-01 -7.160531e-03 1.982194e-01 1.492570e-01 -7.130536e-02 2.819307e-01 + 39 + 2.641782e+01 3.224921e+01 4.432308e+01 4.881101e+01 4.069403e+01 4.288863e+01 4.314051e+01 3.851825e+01 4.358891e+01 3.631821e+01 2.857745e+01 2.424910e+01 2.462197e+00 1.510775e+00 2.000152e+00 3.177660e+00 4.026753e+00 3.636301e+00 3.508731e+00 3.894909e+00 3.926924e+00 3.923654e+00 3.195524e+00 3.067203e+00 2.332178e+00 1.858004e-01 4.392554e-01 4.294043e-01 6.985435e-01 8.592626e-01 1.181155e+00 9.996576e-01 1.248286e+00 1.007520e+00 8.705572e-01 7.956530e-01 8.656482e-01 6.007328e-01 2.997301e-02 + 1.212240e+02 + 4 + 39 + -3.370832e+00 -1.139519e+01 7.337262e-02 -8.565407e+00 -1.601876e+01 -9.631032e+00 -1.175834e+01 -1.182488e+00 -2.057119e+00 -1.750273e+00 -2.600087e+00 -1.819466e+00 -1.974270e+00 7.650732e-01 -9.157993e-01 2.158293e-01 -1.495382e+00 -1.382320e+00 -1.880667e-01 -7.970414e-01 1.335565e+00 -2.731335e-01 3.971501e-01 5.648137e-01 1.606406e-01 4.941815e-01 5.592692e-02 1.449703e-01 -3.044316e-01 -6.735794e-02 2.480582e-01 9.891073e-02 1.915415e-01 5.332012e-02 -9.768829e-02 1.913372e-02 -4.474381e-02 -1.499972e-01 4.651090e-03 + 39 + 1.561035e+01 3.173673e+01 6.362381e+01 5.676829e+01 4.057005e+01 4.640162e+01 5.112261e+01 5.197219e+01 6.109725e+01 4.288099e+01 4.040857e+01 2.885804e+01 1.407958e+00 1.995196e+00 2.291164e+00 3.957940e+00 4.308882e+00 4.676396e+00 4.374228e+00 5.320150e+00 5.144561e+00 4.868420e+00 4.214548e+00 4.109924e+00 2.900653e+00 1.589538e-01 1.469974e-01 2.161600e-01 2.920359e-01 4.823646e-01 5.619761e-01 5.195016e-01 6.081597e-01 5.692294e-01 5.288883e-01 4.527876e-01 4.363348e-01 3.549037e-01 1.672539e-02 + 1.160324e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 2.134418e-01 7.865582e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 1.803601e-01 8.196399e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 1.621675e-01 8.378325e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ih" + + 5 + 2 + 39 + -5.517930e+00 -1.060499e+01 1.872400e+00 -1.167599e+01 -1.640648e+01 -1.206192e+01 -1.075265e+01 7.460738e-01 -5.172114e+00 -2.348958e+00 -2.502228e+00 -1.407451e+00 -1.393192e+00 8.357227e-01 -1.441141e+00 7.966651e-01 -9.971641e-01 -1.506990e+00 -5.687315e-01 -5.322228e-01 1.114253e+00 -2.439708e-01 -9.636211e-02 2.678525e-01 1.202080e-01 4.750599e-01 -6.416291e-01 5.095553e-01 -4.431766e-01 2.896578e-01 7.259585e-01 4.743271e-01 5.659685e-01 -2.337181e-01 2.042987e-02 7.537926e-02 3.072319e-02 -1.657523e-02 -2.248963e-01 + 39 + 1.335300e+01 2.914432e+01 4.425722e+01 5.857735e+01 4.463210e+01 5.377507e+01 7.041077e+01 5.669269e+01 6.462175e+01 4.861097e+01 4.957269e+01 3.358553e+01 1.720605e+00 2.667645e+00 2.189239e+00 2.626202e+00 3.120718e+00 3.517051e+00 3.747738e+00 5.271354e+00 3.948958e+00 3.850038e+00 3.409507e+00 3.104630e+00 2.369101e+00 2.529572e-01 5.105771e-01 3.999315e-01 4.168432e-01 5.796410e-01 5.910547e-01 6.780840e-01 7.652826e-01 7.714180e-01 7.933509e-01 6.016443e-01 5.407309e-01 4.647194e-01 3.532400e-02 + 1.203534e+02 + 3 + 39 + -5.716178e+00 -1.110367e+01 1.823239e+00 -1.273097e+01 -1.696739e+01 -1.217275e+01 -8.487168e+00 1.950768e+00 -5.549362e+00 -2.361760e+00 -2.305647e+00 -1.252507e+00 -1.154064e+00 5.868066e-02 1.568125e-01 -2.721309e-01 1.774013e-01 3.691339e-01 -2.044183e-02 7.738771e-02 1.834045e-02 3.477807e-03 -7.737853e-02 -1.403836e-01 -5.723754e-02 -7.237583e-02 -1.291684e-01 4.699417e-01 -2.094430e-01 3.396488e-01 4.676066e-01 1.424666e-01 7.546604e-02 -4.078820e-01 -2.916695e-02 2.331472e-02 -1.114734e-01 -7.631361e-02 -1.519924e-01 + 39 + 1.079889e+01 2.608577e+01 4.179491e+01 6.212029e+01 4.289123e+01 5.271107e+01 7.523554e+01 5.812120e+01 6.689279e+01 5.109978e+01 5.153757e+01 3.255039e+01 1.198562e+00 4.728550e-01 9.558448e-01 1.684790e+00 1.451902e+00 1.819502e+00 1.840898e+00 2.127035e+00 2.279228e+00 2.549907e+00 1.886986e+00 1.694175e+00 1.378363e+00 5.660057e-02 2.036490e-01 2.811844e-01 2.599304e-01 3.577557e-01 3.899521e-01 4.271015e-01 5.594053e-01 5.256332e-01 4.439338e-01 4.225403e-01 3.627501e-01 3.057703e-01 1.977279e-02 + 1.034170e+02 + 4 + 39 + -5.477739e+00 -8.672354e+00 3.298998e-01 -1.009461e+01 -1.369314e+01 -1.251156e+01 -1.018870e+01 -3.097379e-02 -5.169324e+00 -2.516245e+00 -3.348362e+00 -1.612314e+00 -1.975203e+00 -1.151446e+00 2.419767e+00 -7.826652e-01 1.618337e+00 2.057073e+00 8.572961e-01 9.408259e-01 -1.439600e+00 -1.694775e-01 -9.264532e-02 -3.279218e-01 -3.524479e-01 -7.719449e-01 -6.434781e-01 3.665673e-01 -2.095452e-01 1.896918e-01 4.174414e-01 5.006156e-01 3.877269e-01 -1.631769e-01 4.545426e-02 8.527806e-02 6.996239e-02 -1.693346e-02 -1.607681e-01 + 39 + 1.375579e+01 3.340576e+01 4.868016e+01 5.179453e+01 5.082232e+01 5.238329e+01 6.608630e+01 6.191746e+01 7.160627e+01 5.356212e+01 5.317785e+01 3.763318e+01 1.738966e+00 3.536909e+00 2.735030e+00 2.878946e+00 4.435742e+00 3.993149e+00 4.692910e+00 5.731395e+00 5.106914e+00 4.817997e+00 4.356071e+00 3.972639e+00 3.217566e+00 3.311481e-01 4.624097e-01 5.098993e-01 4.568058e-01 5.619081e-01 6.616552e-01 6.809348e-01 7.195605e-01 9.113739e-01 8.713245e-01 6.881287e-01 6.320212e-01 5.048901e-01 5.100180e-02 + 1.252073e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 3.806971e-01 6.193029e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.133360e-01 2.866640e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 4.857432e-01 5.142568e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ng" + + 5 + 2 + 39 + -6.076590e+00 -5.064608e+00 2.085494e+00 -1.309309e+01 -1.644099e+01 -3.781538e+00 -2.294930e+00 -5.087627e+00 -1.390442e+01 2.652004e-01 -1.631517e+00 -6.654199e+00 -3.232193e+00 6.502724e-01 1.334410e+00 -1.487268e+00 1.612056e+00 1.019832e+00 -4.223647e-01 5.394279e-01 -2.003681e+00 -5.698919e-01 9.384019e-01 -5.743879e-01 -4.793402e-01 -3.903151e-01 9.458097e-02 -1.542804e-01 -3.761394e-01 3.793406e-01 2.600403e-01 -3.532701e-01 -2.135770e-01 1.872545e-01 5.155113e-01 -3.026537e-01 -2.047058e-01 2.839507e-01 1.211458e-02 + 39 + 1.084927e+01 2.192812e+01 4.521197e+01 8.042786e+01 5.286604e+01 5.987370e+01 5.009918e+01 8.883312e+01 5.433348e+01 5.845647e+01 1.085602e+02 4.087700e+01 1.951120e+00 7.807538e-01 1.508384e+00 3.842732e+00 3.846739e+00 4.399359e+00 5.266242e+00 3.846646e+00 4.897497e+00 4.221453e+00 4.085718e+00 3.598894e+00 2.761823e+00 4.177464e-02 1.481664e-01 2.114740e-01 5.324923e-01 6.031705e-01 6.354687e-01 7.829723e-01 5.399452e-01 7.499334e-01 6.935322e-01 6.237233e-01 6.774401e-01 4.408306e-01 1.000000e-02 + 1.169900e+02 + 3 + 39 + -3.472145e+00 -2.236863e+00 -4.204432e+00 -5.945210e+00 -1.313667e+01 -7.042136e+00 -1.311100e+00 -9.539930e+00 -1.263420e+01 8.364809e-01 -4.206605e+00 -6.055780e+00 -4.130702e+00 3.566206e-02 6.424760e-01 -4.165306e-01 7.416418e-01 5.366297e-01 -1.827499e-01 2.109423e-02 -2.695842e-01 2.109467e-01 -2.851489e-01 -2.574020e-01 2.080234e-01 -2.034681e-01 -3.468632e-01 -2.018315e-01 3.734507e-01 -4.405205e-01 1.086544e-01 2.621273e-01 -2.512579e-01 5.696229e-01 2.200315e-01 -2.456274e-01 1.514553e-01 1.310915e-01 1.923441e-02 + 39 + 7.342351e+00 2.002171e+01 2.844389e+01 5.319100e+01 5.022454e+01 4.857777e+01 5.184954e+01 7.666073e+01 4.752559e+01 5.871140e+01 8.719437e+01 4.188321e+01 2.046334e+00 6.387298e-01 1.243446e+00 2.025726e+00 2.365294e+00 2.758877e+00 2.639706e+00 2.514934e+00 3.264345e+00 2.555428e+00 2.519694e+00 2.475750e+00 1.818351e+00 5.296168e-02 1.863876e-01 2.650710e-01 5.164334e-01 5.095739e-01 7.134311e-01 6.317965e-01 6.328194e-01 7.948370e-01 6.400095e-01 6.206163e-01 5.619965e-01 4.385753e-01 1.202107e-02 + 1.102141e+02 + 4 + 39 + -6.420766e+00 -1.187212e+00 -3.006993e+00 -6.050743e+00 -1.018333e+01 -6.002436e+00 -2.127556e+00 -6.504512e+00 -1.133360e+01 -1.683153e+00 -3.655978e+00 -4.806388e+00 -5.122188e+00 -1.396327e+00 -3.611454e-01 2.017976e-02 -7.878211e-02 1.486291e+00 2.924241e-01 -4.258294e-01 1.482598e+00 1.340449e+00 -6.597437e-01 5.001338e-02 7.287980e-01 -2.843932e-01 -3.317907e-01 -4.883616e-01 -7.125401e-02 -2.533108e-01 1.263131e-02 8.407226e-02 -4.417316e-02 3.535870e-01 3.947979e-01 1.009850e-01 1.039740e-01 1.459325e-01 5.690132e-02 + 39 + 1.860350e+01 2.625016e+01 3.587083e+01 5.937988e+01 6.455702e+01 5.007597e+01 5.392719e+01 7.991616e+01 5.214241e+01 5.245026e+01 6.996259e+01 3.832572e+01 3.956043e+00 2.743831e+00 2.851427e+00 3.688677e+00 4.631578e+00 5.933338e+00 4.529145e+00 5.248396e+00 5.544320e+00 4.538379e+00 4.104671e+00 4.405403e+00 3.162802e+00 3.169595e-01 5.417356e-01 5.005989e-01 5.541148e-01 6.586057e-01 9.341341e-01 7.853209e-01 8.926653e-01 9.314128e-01 7.638379e-01 6.954435e-01 6.433918e-01 4.991446e-01 3.488411e-02 + 1.272006e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.115654e-01 3.884346e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.885800e-01 3.114200e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.458147e-01 4.541853e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "eh" + + 5 + 2 + 39 + -4.237212e+00 -1.328928e+01 -3.121577e+00 -1.314321e+01 -1.433406e+01 -1.022731e+01 -7.808975e+00 3.905833e+00 -1.328122e+00 -1.454019e+00 -4.198952e+00 -2.869351e+00 -1.088925e+00 7.642450e-01 -1.742015e+00 -6.183029e-02 -9.950674e-01 -7.889240e-01 1.075893e-02 1.862008e-02 1.349218e+00 4.620986e-01 -2.527557e-01 -2.687955e-01 -1.629029e-01 5.059958e-01 -5.824353e-01 5.390808e-01 -1.872034e-01 3.474299e-01 5.812062e-01 3.723539e-01 3.571422e-01 -3.482288e-01 -1.606030e-01 -8.804119e-03 1.262999e-01 8.608310e-02 -2.015914e-01 + 39 + 1.374550e+01 2.669461e+01 4.657617e+01 4.891339e+01 4.534674e+01 5.270887e+01 7.835349e+01 5.410843e+01 7.083524e+01 4.648331e+01 4.801573e+01 3.527265e+01 1.687040e+00 2.397215e+00 2.184180e+00 2.496268e+00 2.866382e+00 3.270535e+00 3.348473e+00 4.491552e+00 3.722942e+00 3.528194e+00 2.962518e+00 2.615843e+00 2.242100e+00 2.259501e-01 4.993785e-01 3.286334e-01 3.469347e-01 4.694086e-01 5.057876e-01 6.051270e-01 7.335325e-01 6.507495e-01 7.017475e-01 5.179421e-01 5.088682e-01 4.255639e-01 2.907700e-02 + 1.173385e+02 + 3 + 39 + -3.960234e+00 -1.472258e+01 -4.455665e+00 -1.332240e+01 -1.369164e+01 -9.865106e+00 -5.657537e+00 5.392631e+00 -1.571511e+00 -2.940228e+00 -4.682239e+00 -2.722771e+00 -7.000297e-01 1.311901e-01 1.963456e-02 -3.726048e-01 1.223852e-01 3.417079e-01 4.915129e-02 -9.919937e-02 4.576714e-02 3.510329e-02 -1.079888e-01 -8.366239e-02 -4.830772e-02 -2.449575e-02 4.116321e-03 3.591481e-01 -5.480407e-03 1.832531e-01 1.595862e-01 -2.537607e-02 -1.596204e-01 -3.567124e-01 -1.293295e-01 9.048421e-02 7.072756e-02 2.124955e-02 -9.829126e-02 + 39 + 1.324372e+01 2.557997e+01 4.388061e+01 4.695890e+01 4.885513e+01 5.961873e+01 8.346438e+01 5.661005e+01 7.812656e+01 4.797230e+01 4.820041e+01 3.534173e+01 1.207034e+00 3.823992e-01 7.767881e-01 1.418480e+00 1.155526e+00 1.528696e+00 1.683991e+00 2.060281e+00 1.876459e+00 1.709225e+00 1.483424e+00 1.319251e+00 1.199588e+00 3.325347e-02 7.793851e-02 1.855740e-01 1.875056e-01 2.349284e-01 2.630346e-01 2.717460e-01 3.397771e-01 3.774855e-01 3.328888e-01 2.738548e-01 2.601355e-01 2.344112e-01 1.000000e-02 + 9.514407e+01 + 4 + 39 + -3.278797e+00 -1.234841e+01 -5.271704e+00 -1.146727e+01 -1.187629e+01 -1.044724e+01 -8.255327e+00 3.381471e+00 -1.321271e+00 -1.998501e+00 -4.328094e+00 -2.948432e+00 -1.478564e+00 -6.109499e-01 2.207595e+00 1.241907e-01 1.439685e+00 1.247263e+00 2.665221e-01 -2.890049e-02 -1.777153e+00 -8.015132e-01 8.611621e-02 2.667969e-01 1.615862e-01 -7.125496e-01 -5.704299e-01 4.695288e-01 8.779038e-02 2.630600e-01 3.234545e-01 3.779798e-01 3.473128e-01 -3.346343e-01 -1.689987e-01 -1.067220e-02 6.084546e-02 3.286352e-02 -1.897286e-01 + 39 + 1.583086e+01 3.156191e+01 5.130849e+01 4.759184e+01 5.191396e+01 6.415124e+01 8.273292e+01 6.274131e+01 7.452331e+01 5.302151e+01 5.436950e+01 3.846465e+01 2.153120e+00 2.781091e+00 2.759105e+00 3.176695e+00 3.597233e+00 3.884539e+00 4.019495e+00 5.279968e+00 4.851946e+00 4.525468e+00 3.636402e+00 3.500521e+00 3.071506e+00 2.898432e-01 4.244832e-01 4.480986e-01 4.392578e-01 5.231955e-01 6.430091e-01 6.826190e-01 7.428867e-01 8.586214e-01 7.893965e-01 6.272684e-01 6.113151e-01 4.897043e-01 4.487209e-02 + 1.240379e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.932352e-01 5.067648e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.821131e-01 2.178869e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.750995e-01 4.249005e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "kd" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.608577e+01 -8.394482e+00 -6.772774e+00 -9.060979e+00 -3.055083e+00 -4.620406e+00 -2.282485e+00 -5.664380e-01 -1.873519e+00 1.557708e+00 -2.111033e+00 -2.639092e-01 -4.732923e+00 1.319699e+00 1.109414e+00 1.104524e+00 5.602996e-03 -6.429788e-01 -7.195347e-02 1.680474e-01 -4.353034e-01 -4.313145e-01 -1.052716e+00 -1.172088e-01 -3.877870e-01 1.944653e-01 7.143657e-01 -7.828599e-02 -7.883257e-02 -3.612229e-02 -3.266666e-01 7.120464e-03 -2.969533e-01 -2.894888e-02 -2.908759e-01 -2.181467e-01 2.335926e-03 -1.835051e-01 5.797051e-02 + 39 + 2.424170e+01 2.419962e+01 5.282943e+01 3.741611e+01 4.554988e+01 4.691285e+01 4.220716e+01 3.609247e+01 3.161109e+01 2.833118e+01 2.523423e+01 1.930250e+01 2.130000e+00 4.710004e+00 2.962671e+00 2.859200e+00 3.785818e+00 4.094874e+00 4.138922e+00 4.125403e+00 3.807178e+00 4.229759e+00 3.062815e+00 3.066573e+00 2.501482e+00 3.106908e-01 4.204964e-01 5.693645e-01 5.538650e-01 7.600756e-01 7.030770e-01 8.282077e-01 7.396338e-01 7.313307e-01 7.489930e-01 6.458336e-01 6.285928e-01 4.652647e-01 1.028226e-01 + 1.207300e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "g" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -9.024694e+00 -5.530894e+00 -2.224628e+00 -6.899866e+00 -6.880993e+00 -1.007329e+01 -8.387756e+00 -2.710186e+00 -6.547432e+00 -3.208182e-01 -2.324942e+00 -1.200978e+00 -3.436433e+00 2.179313e+00 8.130409e-01 1.576624e+00 -9.004692e-01 -2.470935e+00 -1.458332e+00 -1.538936e+00 1.854192e-01 -5.728620e-01 -4.965720e-01 7.608045e-01 -1.564189e-01 8.462484e-01 1.704140e-01 9.666836e-02 -8.472072e-02 1.898545e-01 -8.835050e-02 3.326513e-01 9.876414e-02 1.932099e-01 9.354573e-02 -2.051355e-01 7.875360e-02 -1.919904e-01 -1.526652e-01 + 39 + 3.532505e+01 3.065998e+01 7.699981e+01 4.422469e+01 6.588127e+01 5.411566e+01 5.234874e+01 5.420104e+01 4.176642e+01 3.586608e+01 3.594114e+01 2.185101e+01 1.679098e+00 5.184123e+00 4.680713e+00 3.972703e+00 5.999978e+00 5.674264e+00 5.133343e+00 6.200145e+00 5.727601e+00 6.150905e+00 5.631639e+00 5.069069e+00 3.147109e+00 1.767222e-01 3.421053e-01 8.454843e-01 7.169327e-01 5.920107e-01 7.024053e-01 8.418500e-01 8.230353e-01 9.013311e-01 8.173738e-01 7.242402e-01 5.524594e-01 4.630421e-01 4.178049e-02 + 1.273226e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "jh" + + 5 + 2 + 39 + -2.600940e+01 -5.265351e+00 1.360469e+00 -1.156855e+01 -4.230871e+00 3.762887e-01 -4.470370e+00 -9.266980e-01 -7.448180e-01 -2.139987e+00 -4.398139e-01 -3.071568e-01 -3.968676e+00 -2.607428e+00 2.954838e-01 6.762595e-01 -9.463252e-01 -9.025396e-01 -3.181025e-04 6.880499e-01 4.207573e-01 5.885732e-01 4.431049e-01 6.197654e-01 4.367884e-01 8.950159e-01 1.380415e+00 4.882166e-01 2.946036e-01 8.932715e-01 -3.965498e-01 -7.615726e-01 -2.069678e-01 -2.586167e-01 -4.682431e-01 -2.928037e-01 -4.213199e-01 -1.897793e-01 -1.648513e-01 + 39 + 2.983574e+01 3.551392e+01 4.017852e+01 2.961992e+01 3.215001e+01 2.598036e+01 2.070924e+01 2.355514e+01 1.961500e+01 1.657523e+01 1.375987e+01 1.068071e+01 2.121088e+00 3.530598e+00 3.580395e+00 3.259118e+00 3.709590e+00 2.598341e+00 2.882566e+00 2.182652e+00 2.443532e+00 2.051377e+00 1.951327e+00 1.753821e+00 1.361380e+00 3.099273e-01 1.070184e+00 8.497132e-01 7.380515e-01 6.816289e-01 7.210507e-01 6.854942e-01 5.866343e-01 6.276969e-01 5.297220e-01 4.549547e-01 3.925615e-01 3.209046e-01 5.484446e-02 + 1.110877e+02 + 3 + 39 + -2.801630e+01 -4.333756e+00 4.963721e+00 -9.476112e+00 -7.066166e+00 -1.079840e+00 -2.307531e+00 -9.883822e-01 -8.965217e-01 -2.254555e+00 -9.836388e-01 -1.304816e-01 -3.121097e+00 1.895569e+00 -4.971659e-03 3.842819e-01 5.750589e-01 -1.190539e+00 -1.683146e+00 -4.269927e-01 -2.347634e-01 -5.340366e-01 -3.922249e-01 -3.191594e-01 -3.206430e-02 3.527144e-02 1.481759e+00 -2.852026e-01 -2.930416e-01 1.905299e-01 -6.404420e-02 -4.474167e-01 -5.396330e-01 -5.656810e-02 -2.662840e-01 -1.642072e-01 -1.326876e-01 -8.882314e-02 -1.805424e-01 + 39 + 2.164256e+01 2.821122e+01 2.620184e+01 2.925037e+01 3.252490e+01 2.548316e+01 2.503773e+01 2.342555e+01 2.205078e+01 1.806408e+01 1.439591e+01 1.249253e+01 1.538405e+00 5.144796e+00 1.657653e+00 2.535558e+00 2.292391e+00 3.332598e+00 3.539996e+00 2.569855e+00 2.341705e+00 2.185143e+00 1.697113e+00 1.505545e+00 1.257522e+00 1.911016e-01 9.045248e-01 4.838293e-01 4.625931e-01 4.616089e-01 5.892176e-01 6.381469e-01 6.002524e-01 5.101508e-01 4.737740e-01 4.064972e-01 3.717827e-01 3.099299e-01 3.886529e-02 + 1.063100e+02 + 4 + 39 + -1.393988e+01 -5.412217e+00 4.494559e+00 -7.887183e+00 -1.204194e+01 -1.003082e+01 -7.882468e+00 -2.455689e+00 -3.926432e+00 -4.600286e+00 -2.208078e+00 -4.061731e-01 -3.120269e+00 4.519408e+00 -1.546004e+00 -7.787501e-01 2.523233e-03 -1.206190e+00 -1.889297e+00 -1.711863e+00 4.178667e-01 -5.939176e-01 -9.263644e-02 -8.213577e-02 -7.405604e-02 1.337057e-01 -3.470262e-01 -2.789677e-01 -4.605145e-01 -2.992880e-01 5.116236e-01 7.582996e-01 2.093693e-01 2.586200e-01 1.790983e-01 2.995741e-01 9.467052e-02 -7.061450e-02 -1.191126e-02 + 39 + 5.511194e+01 3.163395e+01 3.316778e+01 4.436488e+01 3.487440e+01 3.586886e+01 3.742700e+01 3.012331e+01 3.257079e+01 2.169965e+01 1.874863e+01 1.501805e+01 2.394080e+00 3.857527e+00 3.452635e+00 4.233893e+00 3.511317e+00 5.673689e+00 5.716473e+00 5.398923e+00 4.656716e+00 4.099649e+00 3.607376e+00 3.074387e+00 2.371874e+00 4.150604e-01 9.324716e-01 5.211688e-01 4.157956e-01 4.950067e-01 6.477298e-01 6.688129e-01 7.912480e-01 6.829549e-01 5.593268e-01 4.623029e-01 4.004336e-01 3.715865e-01 2.891319e-02 + 1.189060e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.210748e-01 4.789252e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.271386e-01 3.728615e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.468885e-01 4.531115e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "k" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.608577e+01 -8.394482e+00 -6.772774e+00 -9.060979e+00 -3.055083e+00 -4.620406e+00 -2.282485e+00 -5.664380e-01 -1.873519e+00 1.557708e+00 -2.111033e+00 -2.639092e-01 -4.732923e+00 1.319699e+00 1.109414e+00 1.104524e+00 5.602996e-03 -6.429788e-01 -7.195347e-02 1.680474e-01 -4.353034e-01 -4.313145e-01 -1.052716e+00 -1.172088e-01 -3.877870e-01 1.944653e-01 7.143657e-01 -7.828599e-02 -7.883257e-02 -3.612229e-02 -3.266666e-01 7.120464e-03 -2.969533e-01 -2.894888e-02 -2.908759e-01 -2.181467e-01 2.335926e-03 -1.835051e-01 5.797051e-02 + 39 + 2.424170e+01 2.419962e+01 5.282943e+01 3.741611e+01 4.554988e+01 4.691285e+01 4.220716e+01 3.609247e+01 3.161109e+01 2.833118e+01 2.523423e+01 1.930250e+01 2.130000e+00 4.710004e+00 2.962671e+00 2.859200e+00 3.785818e+00 4.094874e+00 4.138922e+00 4.125403e+00 3.807178e+00 4.229759e+00 3.062815e+00 3.066573e+00 2.501482e+00 3.106908e-01 4.204964e-01 5.693645e-01 5.538650e-01 7.600756e-01 7.030770e-01 8.282077e-01 7.396338e-01 7.313307e-01 7.489930e-01 6.458336e-01 6.285928e-01 4.652647e-01 1.028226e-01 + 1.207300e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "s" + + 5 + 2 + 39 + -2.377530e+01 7.975230e-01 -5.804726e+00 -7.956605e+00 -1.056919e+00 -6.153901e+00 -1.446522e+00 3.708428e-01 -1.807747e+00 -1.441141e+00 -2.266209e+00 -1.560858e-01 -3.590666e+00 -4.043375e+00 7.690086e-01 -1.086368e+00 -3.737127e-02 1.397027e+00 9.390795e-01 1.178330e+00 8.593479e-01 3.619921e-01 3.094131e-01 7.258290e-01 5.033713e-01 2.392415e-01 8.783084e-01 -4.443428e-01 -6.603195e-03 -1.218981e-01 -4.607834e-01 -9.467767e-02 -4.313831e-01 -1.231790e-01 -9.751552e-02 8.153442e-02 -9.951539e-02 -1.201010e-01 8.020719e-02 + 39 + 3.736006e+01 2.289835e+01 3.759547e+01 3.200874e+01 3.488742e+01 3.399289e+01 3.156306e+01 2.907415e+01 2.359594e+01 2.204734e+01 1.810987e+01 1.557708e+01 2.218603e+00 4.508864e+00 2.696607e+00 3.105281e+00 3.905009e+00 3.504660e+00 4.028130e+00 3.861485e+00 3.320580e+00 3.256711e+00 3.055228e+00 2.828476e+00 2.106614e+00 2.274040e-01 7.066505e-01 5.124317e-01 5.909451e-01 6.476483e-01 5.813474e-01 6.981947e-01 6.621723e-01 6.242273e-01 5.211967e-01 5.280138e-01 4.837556e-01 4.116738e-01 4.171188e-02 + 1.150663e+02 + 3 + 39 + -2.884917e+01 1.395904e+00 -9.246708e+00 -7.703082e+00 6.501799e-02 -4.743432e+00 -5.224833e-01 1.212558e+00 -1.386164e+00 -3.343222e-01 -1.263889e+00 4.416064e-01 -2.861437e+00 5.258372e-03 -1.277473e-01 3.407833e-02 -8.596761e-02 1.082556e-02 -1.067193e-02 -9.879550e-02 2.740525e-02 4.925224e-02 2.993988e-02 -9.307322e-03 -2.564136e-02 -1.661815e-02 5.471614e-01 -1.770786e-01 2.283467e-01 -2.129895e-02 -1.450515e-01 -1.124999e-01 -1.621733e-01 -1.009684e-01 -8.055526e-03 -5.217172e-02 -8.511852e-02 -7.806198e-02 -1.045783e-01 + 39 + 7.559516e+00 1.918847e+01 2.818336e+01 3.715066e+01 3.280025e+01 2.886176e+01 2.579437e+01 2.171624e+01 1.705792e+01 1.526432e+01 1.414269e+01 1.153695e+01 2.014229e+00 7.865911e-01 1.065505e+00 1.071755e+00 1.213353e+00 1.326881e+00 1.489849e+00 1.387068e+00 1.410659e+00 1.368564e+00 1.311453e+00 1.165506e+00 1.069934e+00 7.917000e-02 3.238181e-01 2.039217e-01 2.315898e-01 2.859559e-01 2.968329e-01 3.394109e-01 3.268660e-01 3.138497e-01 3.019803e-01 2.927725e-01 2.655672e-01 2.325594e-01 1.812666e-02 + 8.862955e+01 + 4 + 39 + -2.328273e+01 -1.826762e+00 -6.005441e+00 -9.152225e+00 -1.233229e+00 -5.967225e+00 -3.227879e+00 7.787307e-01 -7.729097e-01 -7.351304e-01 -2.211749e+00 -5.666499e-01 -3.853850e+00 3.404469e+00 -1.265030e+00 7.862527e-01 1.215244e-02 -1.069610e+00 -1.666404e-01 -1.266580e+00 -6.234483e-01 1.606548e-02 2.859670e-02 -3.429391e-01 -4.986843e-01 -4.522513e-01 5.044739e-01 -1.772329e-01 -1.142679e-01 7.480311e-02 -2.335533e-01 1.176452e-01 -1.053017e-01 -9.034711e-02 -8.577888e-02 6.783504e-02 1.133780e-02 -5.364425e-02 -2.116878e-02 + 39 + 5.059034e+01 2.650001e+01 3.453255e+01 3.107744e+01 3.934074e+01 3.953945e+01 3.865220e+01 3.107117e+01 2.474193e+01 2.257648e+01 2.045967e+01 1.713017e+01 3.461360e+00 5.052910e+00 2.624722e+00 3.185778e+00 4.636134e+00 4.141500e+00 5.254609e+00 4.763460e+00 3.488468e+00 3.200079e+00 2.774304e+00 3.030637e+00 2.229790e+00 6.710814e-01 8.632587e-01 4.879346e-01 4.815650e-01 6.209325e-01 6.183028e-01 7.458255e-01 8.368746e-01 6.379736e-01 5.524029e-01 4.936884e-01 4.982085e-01 3.866669e-01 1.034365e-01 + 1.198983e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.310626e-01 3.689375e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.311648e-01 1.688352e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.760122e-01 3.239878e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "z" + + 5 + 2 + 39 + -1.920552e+01 4.742836e+00 -3.097454e+00 -7.628447e+00 -1.925977e+00 -9.882034e+00 -6.598585e+00 -3.390033e+00 -3.439389e+00 -2.663056e+00 -3.951113e+00 -1.113331e+00 -3.836599e+00 -4.244811e+00 1.180663e+00 -7.967097e-01 2.894043e-01 2.081825e+00 1.482025e+00 1.697822e+00 1.165414e+00 5.533884e-01 2.092743e-01 5.890569e-01 3.034007e-01 -3.499607e-02 5.320745e-01 -9.196333e-01 -6.573100e-02 -1.512627e-01 -4.822035e-01 2.074629e-01 1.044444e-02 2.573226e-01 1.930683e-02 1.874124e-01 8.425877e-02 -3.185978e-03 1.166208e-01 + 39 + 3.879180e+01 2.390570e+01 4.084089e+01 3.692133e+01 4.441855e+01 4.668978e+01 4.253079e+01 3.377279e+01 2.743521e+01 2.910708e+01 1.957791e+01 1.814707e+01 1.749619e+00 2.970742e+00 4.234505e+00 2.966252e+00 4.257471e+00 3.204205e+00 4.440501e+00 3.566850e+00 3.529952e+00 3.268332e+00 2.964025e+00 2.589355e+00 2.459273e+00 1.791471e-01 8.763121e-01 5.008796e-01 4.883010e-01 6.326819e-01 6.473778e-01 8.287174e-01 7.138012e-01 6.883830e-01 5.247942e-01 5.463191e-01 4.550358e-01 4.374301e-01 1.882332e-02 + 1.163415e+02 + 3 + 39 + -2.778002e+01 1.868637e+00 -7.360114e+00 -8.128797e+00 4.664554e-01 -5.299468e+00 -1.317755e+00 1.140399e+00 -1.405552e+00 -7.471170e-01 -1.708319e+00 7.475137e-02 -3.426823e+00 8.576833e-02 -7.311231e-01 -1.886642e-01 -2.479704e-01 -1.962721e-01 2.142168e-02 4.474723e-02 2.256604e-01 2.031615e-01 1.576033e-01 1.086416e-01 2.498989e-02 -3.515611e-02 1.124929e+00 -2.298075e-01 2.936946e-01 -1.286575e-02 -4.125121e-01 -3.522922e-01 -4.741063e-01 -3.484245e-01 -1.208409e-01 -8.244999e-02 -1.669567e-01 -1.240475e-01 -1.066558e-01 + 39 + 1.271351e+01 2.430815e+01 3.879170e+01 3.788428e+01 3.446713e+01 3.179007e+01 3.497109e+01 2.631591e+01 1.883444e+01 1.758719e+01 1.598282e+01 1.278837e+01 2.006232e+00 2.872401e+00 1.479322e+00 1.813868e+00 1.587352e+00 1.896455e+00 2.580597e+00 2.235838e+00 2.012490e+00 1.844616e+00 1.690920e+00 1.498398e+00 1.289862e+00 1.272179e-01 6.362000e-01 3.549233e-01 3.653492e-01 4.562913e-01 4.869065e-01 6.005061e-01 5.536938e-01 4.793222e-01 4.177274e-01 3.857361e-01 3.586276e-01 3.019927e-01 3.194686e-02 + 1.023495e+02 + 4 + 39 + -1.859128e+01 -1.593344e+00 -4.752942e+00 -8.805215e+00 -2.899871e+00 -7.833704e+00 -5.583202e+00 -1.161534e+00 -1.274287e+00 -8.388831e-01 -2.955744e+00 -1.129112e+00 -4.436525e+00 3.532052e+00 -1.639321e+00 2.423018e-01 -1.945913e-02 -1.410155e+00 -2.735853e-01 -1.075530e+00 -6.285062e-01 -1.336830e-01 1.237163e-01 -2.802307e-01 -3.705930e-01 -2.915923e-01 1.905978e-01 -6.497428e-02 -9.768702e-02 5.121569e-02 -9.815682e-02 2.172520e-01 7.281072e-02 3.462427e-02 -1.366656e-01 4.334936e-03 3.668991e-02 -2.142432e-02 1.927486e-02 + 39 + 5.421535e+01 3.445893e+01 3.954433e+01 3.406635e+01 4.796641e+01 5.415524e+01 4.807024e+01 3.861639e+01 3.186858e+01 3.087710e+01 2.532754e+01 2.091594e+01 4.209635e+00 4.759599e+00 3.686662e+00 3.679382e+00 5.042652e+00 4.885042e+00 5.798614e+00 5.559037e+00 4.278254e+00 3.798548e+00 3.310529e+00 3.196698e+00 2.519837e+00 6.955153e-01 1.027016e+00 5.960351e-01 5.001560e-01 6.517936e-01 7.526888e-01 8.957612e-01 8.674188e-01 7.623376e-01 6.439487e-01 5.749502e-01 5.199094e-01 4.278831e-01 7.304218e-02 + 1.254263e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.526188e-01 3.473812e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.540203e-01 2.459797e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.385711e-01 3.614288e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "l" + + 5 + 2 + 39 + -2.076319e+00 -5.148401e+00 -9.815087e+00 -2.012165e+01 -6.920690e+00 -9.136685e-01 -9.165577e+00 -7.389997e+00 -3.185251e+00 2.911303e-01 -1.296123e+00 -3.810404e+00 -1.568496e+00 8.963729e-01 4.892791e-01 -5.132197e-01 -1.906506e+00 1.684812e-01 1.314207e+00 -3.274781e-01 -9.168497e-01 -5.534130e-01 2.095539e-01 6.551706e-01 1.881262e-01 1.822684e-01 -3.227554e-01 -2.434864e-01 1.677562e-01 4.009047e-01 -9.695600e-02 -2.817089e-01 1.287724e-01 5.189605e-01 9.754813e-02 -1.338235e-01 -6.156527e-02 1.607310e-01 -5.023359e-02 + 39 + 1.280899e+01 5.052003e+01 4.745967e+01 6.591975e+01 5.288762e+01 7.028381e+01 7.220864e+01 6.208580e+01 6.189622e+01 5.602080e+01 5.968229e+01 3.906965e+01 2.569835e+00 1.843630e+00 3.082018e+00 2.344606e+00 3.970300e+00 3.711831e+00 4.791475e+00 4.891627e+00 4.844233e+00 4.433836e+00 3.978803e+00 3.471814e+00 3.240933e+00 2.545458e-01 4.563420e-01 4.726929e-01 3.821809e-01 7.829260e-01 7.323467e-01 7.481542e-01 8.221897e-01 8.774370e-01 1.025424e+00 8.348718e-01 6.839926e-01 6.067432e-01 2.666439e-02 + 1.252828e+02 + 3 + 39 + -5.856282e-01 -3.475569e+00 -1.069768e+01 -2.503847e+01 -7.921915e+00 2.838028e+00 -7.055474e+00 -6.583611e+00 -4.584039e+00 -1.167456e+00 5.224827e-01 -1.654305e+00 -1.350401e+00 -6.847543e-02 -1.528591e-01 -1.523839e-02 1.386125e-01 1.326991e-01 -1.870092e-01 -2.512893e-01 2.138429e-01 2.329177e-01 1.447425e-01 -7.839480e-02 -1.255465e-01 -7.192627e-03 -2.510391e-01 -2.991598e-01 1.002134e-01 6.117168e-01 8.619838e-02 -3.458547e-01 -7.682495e-02 2.175317e-01 3.197875e-01 9.434387e-02 -2.459882e-01 -2.093099e-01 -4.122909e-02 + 39 + 9.135080e+00 3.827733e+01 4.436526e+01 5.843868e+01 5.901371e+01 6.001325e+01 6.938873e+01 5.842020e+01 5.505424e+01 5.323339e+01 4.744427e+01 3.515866e+01 1.705346e+00 5.184282e-01 3.192425e+00 1.364795e+00 2.883903e+00 2.437766e+00 2.561857e+00 2.941425e+00 2.910267e+00 3.689540e+00 3.439773e+00 2.343283e+00 2.603315e+00 1.133697e-01 1.869213e-01 3.102035e-01 2.789322e-01 4.846565e-01 4.678448e-01 5.524579e-01 5.297801e-01 6.406617e-01 5.786700e-01 5.606857e-01 5.050610e-01 4.068475e-01 1.940117e-02 + 1.119030e+02 + 4 + 39 + -2.575279e+00 -7.047771e+00 -9.768353e+00 -1.909601e+01 -6.251339e+00 -2.438496e+00 -1.096461e+01 -4.720616e+00 -4.293829e-01 9.257873e-01 -2.599979e+00 -4.694291e+00 -1.519005e+00 -9.164684e-01 -8.724427e-01 9.915056e-01 2.286520e+00 -3.960328e-01 -1.775155e+00 2.267633e-02 1.610135e+00 8.119814e-01 -5.213370e-01 -1.076872e+00 -4.657926e-02 -1.721693e-01 -2.675121e-01 1.646848e-01 3.755552e-01 2.628132e-01 -2.620411e-01 -7.486879e-02 4.878721e-01 1.570847e-01 -4.761748e-01 -3.810447e-01 1.102369e-01 3.668213e-01 -9.792231e-02 + 39 + 1.149710e+01 3.981714e+01 4.534940e+01 6.169224e+01 4.894395e+01 7.665724e+01 7.369744e+01 5.893503e+01 6.395772e+01 5.905539e+01 5.678957e+01 4.015787e+01 2.693798e+00 1.779133e+00 3.691770e+00 2.853295e+00 5.200035e+00 5.042246e+00 4.577377e+00 4.866356e+00 5.520376e+00 5.773425e+00 4.443839e+00 3.584205e+00 3.761091e+00 3.764453e-01 3.394280e-01 4.138173e-01 3.482941e-01 7.616937e-01 7.073138e-01 6.987734e-01 7.237774e-01 8.426548e-01 1.035952e+00 8.133777e-01 7.032485e-01 5.753817e-01 2.903314e-02 + 1.260803e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.659716e-01 5.340284e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.037638e-01 2.962362e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.204565e-01 4.795435e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ts" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.849423e+01 -7.241725e+00 -3.852108e+00 -7.774209e+00 -5.596538e+00 -6.714453e+00 -9.832263e-01 9.414796e-01 -1.563661e+00 -1.499532e+00 -2.413518e+00 4.308457e-02 -4.360301e+00 3.205270e+00 -2.987491e-01 4.605551e-01 5.633189e-01 -7.702059e-01 -9.046050e-01 -1.309110e+00 -3.433589e-01 -4.854245e-01 -5.753533e-01 -9.350238e-01 -7.007295e-01 1.608566e-01 7.797504e-01 -1.081257e-01 -1.004669e-01 -1.172639e-01 -1.605169e-01 1.594381e-01 -5.701525e-01 -1.777309e-01 -1.314189e-01 2.648882e-02 9.213286e-02 -1.501423e-01 2.520365e-02 + 39 + 2.586847e+01 2.857648e+01 2.643202e+01 2.715106e+01 2.886203e+01 2.844051e+01 3.366603e+01 2.828145e+01 2.643406e+01 2.176502e+01 1.952646e+01 1.734786e+01 1.966420e+00 4.456964e+00 2.946646e+00 4.160259e+00 3.609068e+00 4.854924e+00 4.671083e+00 4.709596e+00 3.575860e+00 3.738955e+00 3.158588e+00 3.078765e+00 2.338724e+00 3.986704e-01 5.575365e-01 5.253838e-01 5.624387e-01 6.634787e-01 6.663375e-01 7.586389e-01 7.882815e-01 7.040000e-01 6.288448e-01 5.689353e-01 5.550729e-01 4.743002e-01 1.079093e-01 + 1.179635e+02 + 4 + 39 + -2.884917e+01 1.395904e+00 -9.246708e+00 -7.703082e+00 6.501799e-02 -4.743432e+00 -5.224833e-01 1.212558e+00 -1.386164e+00 -3.343222e-01 -1.263889e+00 4.416064e-01 -2.861437e+00 5.258372e-03 -1.277473e-01 3.407833e-02 -8.596761e-02 1.082556e-02 -1.067193e-02 -9.879550e-02 2.740525e-02 4.925224e-02 2.993988e-02 -9.307322e-03 -2.564136e-02 -1.661815e-02 5.471614e-01 -1.770786e-01 2.283467e-01 -2.129895e-02 -1.450515e-01 -1.124999e-01 -1.621733e-01 -1.009684e-01 -8.055526e-03 -5.217172e-02 -8.511852e-02 -7.806198e-02 -1.045783e-01 + 39 + 7.559516e+00 1.918847e+01 2.818336e+01 3.715066e+01 3.280025e+01 2.886176e+01 2.579437e+01 2.171624e+01 1.705792e+01 1.526432e+01 1.414269e+01 1.153695e+01 2.014229e+00 7.865911e-01 1.065505e+00 1.071755e+00 1.213353e+00 1.326881e+00 1.489849e+00 1.387068e+00 1.410659e+00 1.368564e+00 1.311453e+00 1.165506e+00 1.069934e+00 7.917000e-02 3.238181e-01 2.039217e-01 2.315898e-01 2.859559e-01 2.968329e-01 3.394109e-01 3.268660e-01 3.138497e-01 3.019803e-01 2.927725e-01 2.655672e-01 2.325594e-01 1.812666e-02 + 8.862955e+01 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "p" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.168320e+01 -8.909177e+00 -8.107924e+00 -8.414758e+00 -3.109300e+00 -2.724456e+00 -1.651540e+00 -9.407648e-01 -1.674334e+00 -1.021897e+00 -2.749708e+00 -1.713488e+00 -4.770757e+00 3.198526e+00 3.011178e-01 -3.924979e-01 -1.354502e+00 -1.146576e+00 -6.581329e-01 -1.446408e+00 -5.898952e-01 -1.199556e+00 -8.481846e-01 -6.850266e-01 -5.710939e-01 9.507689e-01 3.502007e-01 1.423562e-01 2.451877e-02 -1.033276e-01 -3.837587e-01 -9.545891e-02 -4.497893e-01 4.599556e-02 -6.832804e-02 2.747240e-02 1.898137e-01 3.861748e-02 3.289079e-02 + 39 + 2.237512e+01 2.742498e+01 4.200616e+01 4.314323e+01 3.733153e+01 4.371882e+01 4.115799e+01 3.669781e+01 3.247055e+01 2.922839e+01 2.605324e+01 1.920450e+01 2.116284e+00 4.208044e+00 3.740133e+00 4.564236e+00 5.199792e+00 4.587859e+00 5.538447e+00 5.579420e+00 4.907856e+00 4.762557e+00 3.438003e+00 3.850636e+00 2.575017e+00 4.661774e-01 4.126602e-01 5.092974e-01 4.870790e-01 6.134127e-01 6.337017e-01 7.089772e-01 7.190645e-01 7.227922e-01 6.894101e-01 6.540084e-01 5.292149e-01 4.244452e-01 9.978860e-02 + 1.221147e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ch" + + 5 + 2 + 39 + -2.920550e+01 -4.586658e+00 1.242653e+00 -1.186077e+01 -3.395528e+00 1.117888e+00 -3.373459e+00 3.140979e-01 -3.806491e-01 -1.048458e+00 2.645961e-01 -7.978325e-02 -3.196038e+00 -1.663595e+00 5.942247e-01 1.073530e+00 -1.366439e-01 -7.540005e-01 -3.270454e-02 6.510703e-01 8.824855e-02 1.595496e-01 1.961114e-02 1.138154e-01 1.132397e-01 8.148466e-01 8.649031e-01 3.299173e-02 -7.150818e-02 6.204989e-01 -2.101506e-01 -4.241190e-01 5.057563e-02 -1.219942e-01 -2.456791e-01 -6.134541e-02 -2.216914e-01 -9.382916e-02 -2.782448e-01 + 39 + 2.002032e+01 3.055477e+01 3.112127e+01 2.314282e+01 3.285942e+01 2.003349e+01 1.932194e+01 1.896228e+01 1.636218e+01 1.358424e+01 1.149830e+01 9.324533e+00 2.588201e+00 2.917047e+00 2.705101e+00 2.292553e+00 2.503894e+00 2.208836e+00 2.090348e+00 1.903433e+00 1.889282e+00 1.542747e+00 1.517027e+00 1.278606e+00 1.135664e+00 3.468945e-01 5.893496e-01 6.188331e-01 5.762668e-01 5.758261e-01 4.617407e-01 4.169338e-01 4.073762e-01 3.933929e-01 3.461043e-01 3.220103e-01 2.779753e-01 2.448369e-01 5.943806e-02 + 1.015888e+02 + 3 + 39 + -2.861927e+01 -6.613288e+00 2.881314e+00 -9.710835e+00 -8.466413e+00 -1.118801e+00 -7.846658e-01 -6.734903e-01 -6.506518e-01 -1.009885e+00 -4.468108e-01 -6.660277e-02 -2.521544e+00 1.604693e+00 -4.629842e-01 -2.847042e-01 7.027578e-01 -7.310497e-01 -1.186316e+00 9.328957e-02 1.203796e-03 -3.636340e-01 -1.276447e-01 -3.111908e-01 -1.574407e-01 -1.985297e-01 9.927593e-01 -7.050874e-02 -2.236382e-01 9.151442e-02 1.480238e-01 -2.326017e-01 -4.293096e-01 5.071583e-03 -1.336511e-01 -1.544640e-01 -1.026688e-01 -7.395132e-02 -1.732534e-01 + 39 + 1.259437e+01 1.975238e+01 1.944371e+01 2.324729e+01 3.135996e+01 2.125399e+01 2.157771e+01 2.004443e+01 1.809000e+01 1.550663e+01 1.442639e+01 1.260171e+01 1.589998e+00 2.504391e+00 1.152623e+00 1.733302e+00 1.815041e+00 2.276243e+00 2.117136e+00 1.830317e+00 1.975468e+00 1.578970e+00 1.511293e+00 1.450005e+00 1.159186e+00 1.466382e-01 5.115132e-01 2.691430e-01 4.292223e-01 3.232233e-01 4.505345e-01 4.702173e-01 4.778924e-01 4.004009e-01 3.814109e-01 3.573084e-01 3.295531e-01 2.779912e-01 4.480811e-02 + 9.706351e+01 + 4 + 39 + -1.668956e+01 -7.626933e+00 9.557470e-01 -6.855501e+00 -9.900976e+00 -7.006907e+00 -3.623891e+00 -4.983982e-01 -2.681373e+00 -2.842861e+00 -2.206669e+00 -1.223806e+00 -3.597547e+00 4.861076e+00 -6.255245e-01 -5.912592e-01 4.342815e-02 -6.296771e-01 -1.666589e+00 -2.070921e+00 8.093061e-02 -7.851929e-01 -7.090806e-01 -5.062501e-01 -3.857279e-01 2.987862e-02 -5.102169e-02 -1.764486e-01 -1.988600e-01 -5.216499e-01 9.520105e-02 3.557260e-01 -3.275777e-01 9.930916e-02 7.115602e-02 1.651504e-01 1.639212e-01 1.541061e-02 1.522316e-01 + 39 + 6.444881e+01 2.332691e+01 3.106678e+01 3.681667e+01 3.896181e+01 3.538433e+01 3.692475e+01 2.973571e+01 3.118544e+01 2.245101e+01 2.280416e+01 1.613585e+01 2.453973e+00 3.952199e+00 2.779322e+00 4.157029e+00 3.861085e+00 5.607934e+00 5.642585e+00 6.396730e+00 4.444990e+00 4.506649e+00 3.572860e+00 3.665684e+00 2.498502e+00 5.327356e-01 1.016652e+00 3.879644e-01 4.511585e-01 4.689055e-01 6.936331e-01 7.057928e-01 8.771105e-01 6.906686e-01 6.284688e-01 5.601078e-01 5.019803e-01 3.789370e-01 5.427634e-02 + 1.206436e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.578594e-01 3.421406e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.081071e-01 2.918929e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.967636e-01 4.032364e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ow" + + 5 + 2 + 39 + -1.496826e+00 -1.204058e+01 -9.535791e+00 -1.751927e+01 -9.743062e+00 -2.758614e+00 -1.022628e+01 -1.359590e+00 -8.508592e-01 2.031182e+00 -1.981460e+00 -4.735507e+00 -6.978105e-01 6.799035e-01 -3.904143e-01 -7.662106e-01 -1.669844e+00 6.072059e-02 1.563125e+00 9.378329e-03 -4.365463e-01 1.061368e-01 5.572838e-01 5.262003e-01 -1.920495e-01 2.783201e-01 -3.479424e-01 4.639079e-01 2.243199e-01 3.110311e-01 1.094622e-01 -3.226179e-02 3.060828e-01 -2.129594e-01 -3.631093e-01 -2.121579e-01 5.541440e-02 2.778598e-01 -1.530217e-01 + 39 + 1.104821e+01 2.839522e+01 3.827823e+01 6.302195e+01 5.387218e+01 8.515009e+01 6.386321e+01 6.369644e+01 5.838703e+01 6.111734e+01 9.298187e+01 3.819809e+01 1.281946e+00 1.070263e+00 1.989572e+00 2.175701e+00 2.571929e+00 3.467730e+00 3.095176e+00 3.435887e+00 4.116155e+00 3.978162e+00 3.831384e+00 3.251979e+00 2.865503e+00 1.217420e-01 3.347204e-01 2.338707e-01 3.039767e-01 4.753428e-01 5.597842e-01 6.002352e-01 6.657109e-01 8.068437e-01 6.711291e-01 6.534595e-01 6.103963e-01 4.980243e-01 1.976833e-02 + 1.167772e+02 + 3 + 39 + 3.135683e-03 -8.297441e+00 -1.050141e+01 -2.152485e+01 -1.054083e+01 1.515267e+00 -8.037125e+00 -3.990688e+00 -3.488322e+00 4.882907e-01 2.874002e-01 -2.490486e+00 -8.757638e-01 5.095951e-02 5.215340e-01 1.851544e-01 -7.655368e-02 -1.420506e-01 2.539351e-02 -6.345187e-02 -2.390773e-01 -4.076880e-01 -1.963714e-01 4.389362e-02 2.305103e-01 -9.784020e-02 -6.228102e-02 5.870527e-02 7.257561e-02 2.732817e-01 7.019834e-02 -2.125883e-01 -7.294060e-02 -3.446962e-03 -1.691743e-02 -3.581442e-02 -9.071778e-02 -4.195469e-02 -4.955054e-02 + 39 + 9.507417e+00 3.968594e+01 3.217073e+01 6.887312e+01 6.306540e+01 7.702350e+01 6.354832e+01 5.738121e+01 5.835273e+01 6.753706e+01 8.239681e+01 3.869114e+01 1.389060e+00 2.321500e-01 7.028881e-01 7.157544e-01 1.376450e+00 1.182303e+00 1.566877e+00 1.647577e+00 1.569238e+00 1.775150e+00 1.771057e+00 1.529534e+00 1.384091e+00 2.188977e-02 4.469056e-02 1.235238e-01 1.173602e-01 1.961060e-01 2.172146e-01 2.393328e-01 2.513506e-01 2.719899e-01 2.741417e-01 3.026875e-01 2.634724e-01 2.271392e-01 1.000000e-02 + 9.196978e+01 + 4 + 39 + -7.708634e-01 -5.934060e+00 -8.562445e+00 -1.731995e+01 -9.665834e+00 -1.172867e+00 -1.017435e+01 -5.756144e+00 -5.794119e+00 3.775277e-01 -3.061120e-01 -2.501628e+00 -2.053141e+00 -1.257317e+00 1.055318e+00 6.371372e-01 2.220551e+00 9.816808e-01 -1.058446e+00 4.962248e-01 -1.121744e-01 -3.728563e-02 -7.355411e-01 -7.811394e-01 -1.044601e-01 -6.054566e-01 -6.321566e-01 4.663505e-02 9.171162e-02 4.128088e-01 2.686811e-01 -4.121811e-02 3.587120e-01 2.092208e-01 2.074872e-01 -8.207273e-02 -1.232018e-01 4.997055e-03 -1.219291e-01 + 39 + 1.278872e+01 3.752876e+01 3.844095e+01 7.747964e+01 5.433975e+01 8.180002e+01 7.359389e+01 5.396420e+01 6.412735e+01 6.406100e+01 7.991599e+01 3.857301e+01 2.754791e+00 2.739293e+00 3.054638e+00 2.338343e+00 4.255733e+00 4.352776e+00 4.184277e+00 4.682212e+00 4.748186e+00 4.773383e+00 4.733326e+00 4.474306e+00 3.162796e+00 2.443986e-01 3.853427e-01 4.171769e-01 3.536149e-01 7.579654e-01 5.932336e-01 6.683665e-01 7.427458e-01 7.303964e-01 8.429692e-01 7.517952e-01 6.996256e-01 5.383229e-01 3.795955e-02 + 1.253032e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.551764e-01 3.448236e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.578293e-01 1.421707e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.867040e-01 3.132960e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "el" + + 5 + 2 + 39 + -2.995963e-01 -4.562097e+00 -1.039239e+01 -2.392029e+01 -9.308281e+00 1.013067e+00 -7.441321e+00 -6.446606e+00 -5.618795e+00 -2.411174e-01 -3.660920e-01 -1.772814e+00 -1.783025e+00 1.089056e+00 3.819905e-01 -2.791972e-01 -2.788898e+00 -7.802507e-01 1.271889e+00 1.593953e-01 -9.420852e-02 -2.804618e-01 -2.979634e-01 3.667425e-01 4.775748e-01 3.540245e-01 -7.265548e-01 6.229303e-02 1.022548e-01 9.154515e-01 4.131580e-01 -3.001249e-01 1.960233e-01 3.091466e-01 1.541090e-01 -1.212155e-01 -1.541544e-01 3.749209e-02 -2.043369e-01 + 39 + 9.066988e+00 3.481878e+01 3.921243e+01 5.918419e+01 5.565816e+01 5.674573e+01 6.528921e+01 4.628328e+01 4.605715e+01 4.924903e+01 5.764965e+01 3.109270e+01 1.514269e+00 2.276204e+00 2.017812e+00 2.287194e+00 4.156447e+00 4.072791e+00 3.204515e+00 3.598511e+00 3.745907e+00 3.494843e+00 3.189171e+00 3.023957e+00 2.383145e+00 1.628354e-01 4.392800e-01 3.804366e-01 4.453891e-01 8.095587e-01 6.777376e-01 6.220917e-01 7.034473e-01 6.339282e-01 6.937572e-01 6.798955e-01 6.107337e-01 4.941652e-01 2.566024e-02 + 1.183111e+02 + 3 + 39 + 2.149464e-01 -8.098091e-01 -1.053023e+01 -2.797588e+01 -1.049957e+01 2.427797e+00 -5.289586e+00 -4.225442e+00 -5.299278e+00 -3.139179e+00 -6.501931e-01 -3.309941e-01 -1.931112e+00 -1.154483e-01 4.587531e-01 3.968093e-02 1.644517e-01 2.447814e-01 -1.962703e-01 9.039005e-02 1.398655e-01 -1.543499e-01 -2.091463e-01 -7.043429e-02 -8.344340e-02 -1.244427e-01 -2.399617e-01 -7.217364e-02 5.949706e-02 6.853188e-01 2.455647e-01 -2.146825e-01 -2.621926e-02 -8.625649e-02 -5.982816e-04 1.020438e-01 -5.517504e-02 -1.175794e-01 -1.024095e-01 + 39 + 7.974993e+00 3.039329e+01 4.405769e+01 5.035884e+01 6.441090e+01 4.880980e+01 5.992113e+01 5.129838e+01 4.229620e+01 3.838726e+01 4.148305e+01 3.083193e+01 1.638229e+00 3.310896e-01 1.121958e+00 8.652384e-01 2.017097e+00 1.593905e+00 1.459243e+00 1.675832e+00 1.880837e+00 1.777683e+00 1.798626e+00 1.508613e+00 1.353646e+00 4.507455e-02 1.598069e-01 2.062249e-01 2.134134e-01 4.965205e-01 3.869032e-01 3.336527e-01 3.418841e-01 3.847768e-01 3.821378e-01 3.367998e-01 3.128437e-01 2.885646e-01 1.462834e-02 + 9.791908e+01 + 4 + 39 + -3.159436e+00 -4.471557e-01 -9.613906e+00 -2.004633e+01 -6.363063e+00 2.568795e-02 -5.057521e+00 -4.800300e+00 -6.188796e+00 -2.204886e+00 -1.519871e+00 -1.975758e+00 -3.742703e+00 -1.846645e+00 -1.594097e-01 5.937571e-01 3.302192e+00 1.278733e+00 -9.146572e-01 1.192742e-01 1.398099e-01 5.266739e-01 1.339151e-01 -4.712441e-01 -3.727994e-01 -6.334369e-01 -4.616393e-01 -2.070413e-01 1.413717e-01 3.308031e-01 7.304717e-03 -1.009067e-01 6.771749e-02 2.381857e-01 2.394202e-01 7.294831e-03 -3.159553e-02 5.122761e-02 -6.001233e-02 + 39 + 1.951065e+01 2.997614e+01 3.605832e+01 7.054981e+01 5.172981e+01 4.760866e+01 7.398074e+01 5.976078e+01 5.321523e+01 5.191603e+01 4.080398e+01 3.373920e+01 4.423838e+00 3.285980e+00 3.297395e+00 2.715012e+00 6.382698e+00 5.132247e+00 3.900295e+00 4.346548e+00 4.559731e+00 4.577038e+00 4.393978e+00 3.662121e+00 3.157841e+00 3.536147e-01 5.203962e-01 3.874326e-01 3.816757e-01 1.105715e+00 7.801355e-01 5.643169e-01 6.754205e-01 7.301339e-01 8.153346e-01 7.854725e-01 5.911192e-01 5.344828e-01 5.560802e-02 + 1.258810e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.138786e-01 4.861214e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.887700e-01 2.112300e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.989049e-01 3.010952e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "aa" + + 5 + 2 + 39 + -1.144843e+00 -1.485015e+01 -1.344290e+01 -1.606934e+01 -6.466915e+00 -1.011854e-01 -5.610056e+00 -8.120448e-01 -1.188836e+00 -1.357678e+00 -2.987893e+00 -5.727632e+00 -5.412551e-01 7.083132e-01 -1.407382e+00 -1.129492e+00 -8.866760e-01 6.701236e-01 1.344280e+00 1.768631e-01 -1.442405e-01 3.473758e-01 -1.594484e-01 6.980966e-02 -4.179749e-01 4.337962e-01 -5.006601e-01 3.857401e-01 3.081228e-01 4.462925e-01 2.011599e-01 -1.713594e-01 8.792721e-02 -1.398860e-01 -1.134980e-01 -2.092988e-02 4.770097e-02 2.264400e-01 -1.773656e-01 + 39 + 1.243300e+01 3.149581e+01 3.730244e+01 5.120302e+01 5.108672e+01 8.101893e+01 6.855783e+01 6.837144e+01 6.129484e+01 5.178818e+01 6.315172e+01 3.796945e+01 1.300464e+00 1.626332e+00 1.871427e+00 2.267491e+00 3.049185e+00 3.412823e+00 3.479260e+00 3.829788e+00 4.111172e+00 3.279632e+00 2.792800e+00 2.701403e+00 2.554490e+00 1.692288e-01 3.848982e-01 2.946346e-01 3.111199e-01 4.587065e-01 5.115510e-01 5.780110e-01 6.861879e-01 7.629483e-01 5.929223e-01 5.286843e-01 5.373095e-01 4.215081e-01 2.384703e-02 + 1.163677e+02 + 3 + 39 + -4.962398e-01 -1.592324e+01 -1.594822e+01 -1.668393e+01 -3.537115e+00 2.284569e+00 -5.005660e+00 -2.634465e+00 -7.271712e-01 -2.347188e+00 -2.586561e+00 -5.828526e+00 -4.405227e-02 2.880769e-02 2.188191e-03 -1.237440e-01 2.510564e-01 1.390056e-01 -3.125109e-01 -1.847066e-01 1.779717e-01 1.510444e-01 -9.269968e-02 -1.115618e-01 -1.428465e-02 -2.124793e-02 -1.011717e-02 1.875405e-01 1.372402e-01 9.979779e-02 -1.755083e-01 -2.595220e-01 -8.646467e-02 1.103704e-01 -2.465552e-02 3.451945e-02 -2.632660e-02 5.165226e-02 -5.468570e-02 + 39 + 1.210545e+01 3.011921e+01 3.169385e+01 5.325193e+01 5.023425e+01 7.465085e+01 7.063511e+01 6.965192e+01 6.264733e+01 4.899428e+01 5.535222e+01 3.948286e+01 7.982999e-01 2.196178e-01 6.354901e-01 6.868225e-01 1.180286e+00 1.224600e+00 1.668240e+00 1.639369e+00 1.695707e+00 1.295254e+00 1.157708e+00 1.187093e+00 1.088278e+00 1.668157e-02 4.311593e-02 1.100076e-01 1.215299e-01 1.706822e-01 1.882990e-01 2.183244e-01 2.591704e-01 2.553255e-01 2.245899e-01 2.085389e-01 2.032815e-01 1.914035e-01 1.000000e-02 + 8.731029e+01 + 4 + 39 + -1.241425e+00 -1.378690e+01 -1.358319e+01 -1.444376e+01 -5.592252e+00 -2.505048e+00 -6.042815e+00 -4.683537e-01 -2.189924e-01 -1.441034e+00 -4.138910e+00 -5.887527e+00 -1.056715e+00 -6.669389e-01 2.004651e+00 1.363637e+00 1.593488e+00 -4.999109e-01 -1.457963e+00 -4.028556e-01 1.333517e-01 -4.538980e-01 1.846120e-01 1.706744e-02 5.922989e-01 -7.309108e-01 -5.053664e-01 4.294764e-01 3.899128e-01 4.510656e-01 1.984943e-01 1.195888e-01 8.781420e-02 -3.082150e-01 -2.168758e-01 -4.818747e-02 8.431567e-02 1.648338e-01 -2.171477e-01 + 39 + 1.340412e+01 3.611277e+01 4.055252e+01 5.026285e+01 4.822923e+01 8.253130e+01 7.087849e+01 6.507404e+01 6.211519e+01 5.538072e+01 5.826851e+01 4.282847e+01 1.893866e+00 2.201347e+00 3.343766e+00 2.781873e+00 3.982911e+00 3.626006e+00 3.771158e+00 4.498708e+00 4.937158e+00 4.015502e+00 3.556279e+00 3.320827e+00 2.945519e+00 3.665110e-01 3.938202e-01 4.429173e-01 3.671794e-01 5.431991e-01 5.703188e-01 7.606277e-01 7.085045e-01 7.391391e-01 6.059446e-01 6.186298e-01 5.614789e-01 4.921397e-01 4.403629e-02 + 1.226315e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.508414e-01 3.491586e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.582087e-01 1.417913e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.400940e-01 3.599060e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "aw" + + 5 + 2 + 39 + -3.960156e+00 -1.727128e+01 -8.936882e+00 -1.318144e+01 -8.810958e+00 -4.669393e+00 -3.796062e+00 2.724116e+00 -2.170557e+00 -3.896416e+00 -6.949752e+00 -4.350765e+00 -4.890090e-01 2.907942e-01 -1.282039e+00 -8.129766e-01 -2.956532e-01 7.959878e-01 8.924574e-01 -3.879966e-02 6.114336e-02 4.604239e-01 -4.192810e-01 -4.867235e-01 -2.781640e-01 2.946338e-01 -2.478319e-01 4.793258e-01 3.465648e-02 1.795783e-01 2.457436e-01 1.376427e-01 -7.435652e-03 -3.905502e-01 -1.020242e-01 1.121698e-01 1.995116e-01 7.456961e-02 -1.489421e-01 + 39 + 1.355314e+01 2.694604e+01 4.723312e+01 4.409262e+01 5.936282e+01 5.830056e+01 7.018849e+01 6.418954e+01 6.975093e+01 4.813372e+01 3.874616e+01 3.687803e+01 8.940120e-01 8.800422e-01 1.854146e+00 1.792057e+00 2.240252e+00 2.697235e+00 2.528186e+00 3.430625e+00 3.444632e+00 2.534988e+00 2.210880e+00 2.087746e+00 2.064824e+00 1.154191e-01 3.030841e-01 2.436194e-01 2.656377e-01 3.767912e-01 4.575878e-01 4.347641e-01 5.821528e-01 5.906431e-01 5.117069e-01 4.050591e-01 3.831606e-01 3.571455e-01 2.087823e-02 + 1.093257e+02 + 3 + 39 + -1.986416e+00 -1.677090e+01 -1.300717e+01 -1.489040e+01 -4.425050e+00 -1.128403e-02 -4.540924e+00 -1.897334e+00 2.046076e-01 -3.670915e+00 -5.217970e+00 -5.352875e+00 -3.373649e-01 2.442429e-01 4.068123e-01 -3.507800e-01 -4.846530e-01 1.794489e-01 5.261758e-01 -1.828420e-01 -4.419790e-01 -5.459513e-02 2.523034e-01 3.799386e-01 -9.928846e-03 -3.921349e-02 1.367048e-02 1.675351e-01 7.708352e-02 8.359511e-03 -1.671783e-01 -1.178725e-01 -2.005598e-02 3.306644e-02 -7.013027e-02 6.720579e-02 6.217782e-02 5.953635e-02 -3.720531e-02 + 39 + 1.168079e+01 2.847984e+01 3.596948e+01 5.038778e+01 5.032819e+01 7.379780e+01 7.496327e+01 5.934330e+01 5.745896e+01 5.042488e+01 4.937821e+01 3.959920e+01 1.065621e+00 2.288044e-01 6.732049e-01 6.722262e-01 1.164913e+00 1.441996e+00 1.344929e+00 1.475476e+00 1.492511e+00 1.432047e+00 1.289515e+00 1.315005e+00 1.229477e+00 1.556152e-02 3.768962e-02 9.724515e-02 1.099750e-01 1.704605e-01 1.961954e-01 2.136490e-01 2.474482e-01 2.337131e-01 2.256021e-01 1.933938e-01 2.135061e-01 2.018450e-01 1.000000e-02 + 8.699852e+01 + 4 + 39 + -1.173959e+00 -1.039808e+01 -1.330738e+01 -1.768501e+01 -6.758533e+00 5.753952e-01 -5.962058e+00 -3.480625e+00 -1.802986e+00 2.079958e-02 -2.494045e+00 -4.538093e+00 -1.716055e+00 -5.350387e-01 1.473274e+00 9.993830e-01 1.325859e+00 -6.300021e-01 -1.191540e+00 -1.539634e-01 -2.457683e-01 -5.304464e-01 3.093117e-01 9.557987e-02 3.061018e-01 -5.452325e-01 -3.736632e-01 9.649338e-02 3.350433e-01 5.331585e-01 1.284798e-01 -2.063891e-01 7.792021e-02 -3.802629e-02 -9.318070e-02 -1.482839e-01 -1.538798e-01 3.843144e-02 -1.052811e-01 + 39 + 1.584429e+01 4.057111e+01 3.523413e+01 6.726022e+01 6.100343e+01 7.425407e+01 7.874316e+01 5.265452e+01 5.980461e+01 5.980104e+01 6.527282e+01 3.914238e+01 3.560679e+00 2.155641e+00 2.976234e+00 2.691785e+00 5.257015e+00 4.282754e+00 3.729198e+00 4.277801e+00 4.411643e+00 4.033289e+00 3.849657e+00 3.692670e+00 2.954495e+00 2.851202e-01 3.567439e-01 4.062506e-01 3.807256e-01 7.000386e-01 6.739980e-01 6.559559e-01 7.057441e-01 6.717830e-01 6.873667e-01 6.595057e-01 6.324924e-01 5.038021e-01 4.583475e-02 + 1.242204e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.859212e-01 3.140788e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.892255e-01 1.107745e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 7.647251e-01 2.352749e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ay" + + 5 + 2 + 39 + -1.447586e+00 -1.565305e+01 -1.329260e+01 -1.652023e+01 -5.209701e+00 7.325621e-01 -5.290717e+00 -1.955650e+00 -4.393473e-02 -1.234897e+00 -4.212914e+00 -6.382186e+00 -3.924816e-01 3.326200e-01 -1.648915e+00 -3.358878e-01 -2.298180e-01 4.001395e-01 4.647290e-01 -1.305031e-02 2.809399e-01 7.259507e-01 -3.330495e-01 -6.197920e-01 -5.131235e-01 3.784258e-01 -5.148864e-01 4.409830e-01 4.226107e-01 5.386089e-01 -4.485245e-04 -3.893485e-01 1.032187e-01 5.567207e-02 -1.963764e-01 -1.089856e-01 2.881218e-02 3.082922e-01 -1.880017e-01 + 39 + 1.103488e+01 2.948770e+01 3.310658e+01 4.714290e+01 5.186525e+01 7.604211e+01 6.066452e+01 5.914774e+01 5.480719e+01 5.191853e+01 5.977881e+01 3.729281e+01 1.110346e+00 1.706673e+00 1.820461e+00 2.474820e+00 3.383524e+00 3.119823e+00 3.912370e+00 3.145030e+00 3.507479e+00 2.896935e+00 2.489459e+00 2.588364e+00 2.595427e+00 1.995611e-01 4.048474e-01 2.784362e-01 3.213939e-01 5.107624e-01 5.457332e-01 5.707903e-01 5.956306e-01 6.356446e-01 5.363390e-01 5.023952e-01 5.609905e-01 4.389568e-01 2.279931e-02 + 1.148572e+02 + 3 + 39 + -2.366711e+00 -1.760571e+01 -1.188742e+01 -1.339159e+01 -5.470710e+00 -2.345525e+00 -4.425318e+00 2.319017e-01 8.743407e-01 -4.045353e+00 -5.972320e+00 -5.512629e+00 -3.480775e-01 -2.047205e-01 4.132880e-02 6.948075e-01 3.820956e-01 -6.791341e-01 -8.555157e-01 1.702372e-01 6.926709e-01 -9.519449e-02 -2.829728e-01 -6.449383e-02 2.880851e-01 -6.629071e-02 -1.373438e-03 2.063763e-01 1.189871e-01 -3.753938e-02 -1.773916e-01 -9.822309e-02 -1.391197e-02 -1.521705e-02 -1.297930e-01 8.338678e-02 1.401377e-01 6.359246e-02 -3.424096e-02 + 39 + 1.093249e+01 2.683420e+01 3.635485e+01 3.883961e+01 5.338438e+01 6.917117e+01 6.287588e+01 6.368967e+01 6.587718e+01 4.604851e+01 4.282024e+01 4.154753e+01 1.052651e+00 2.186876e-01 6.536937e-01 1.008773e+00 1.059605e+00 1.711594e+00 1.707829e+00 1.705146e+00 1.821258e+00 1.375968e+00 1.244982e+00 1.352272e+00 1.175225e+00 1.431866e-02 3.514024e-02 1.000321e-01 1.149323e-01 1.456273e-01 2.103658e-01 2.029168e-01 2.421470e-01 2.788027e-01 2.365035e-01 2.136636e-01 2.158704e-01 2.038364e-01 1.000000e-02 + 8.745196e+01 + 4 + 39 + -4.741155e+00 -1.299530e+01 -2.409029e+00 -1.250740e+01 -1.457115e+01 -1.003297e+01 -3.732159e+00 3.392591e+00 -3.349700e+00 -2.451597e+00 -4.000313e+00 -2.386573e+00 -1.513282e+00 -5.015872e-01 1.951974e+00 1.167325e+00 8.165357e-01 -3.377964e-01 -5.916122e-01 -3.384678e-01 -1.030595e+00 -9.454089e-01 4.653731e-01 5.658424e-01 2.693560e-01 -4.914277e-01 -2.069635e-01 2.990440e-01 -3.295726e-01 2.688278e-01 6.814488e-01 4.268973e-01 -2.963986e-02 -4.215347e-01 3.375744e-02 -2.084888e-02 -1.073539e-01 -1.254061e-01 -1.186548e-01 + 39 + 1.352628e+01 3.786607e+01 4.924542e+01 5.144763e+01 5.206682e+01 5.419714e+01 7.135242e+01 6.454048e+01 6.941197e+01 4.582660e+01 4.623480e+01 3.217889e+01 2.250196e+00 1.363116e+00 2.296726e+00 2.866476e+00 3.817102e+00 5.294387e+00 3.426701e+00 4.249053e+00 4.152435e+00 3.931388e+00 3.370205e+00 2.919943e+00 2.791194e+00 1.865766e-01 3.288626e-01 3.396663e-01 3.992101e-01 5.454458e-01 5.910533e-01 5.555063e-01 7.347336e-01 7.633671e-01 6.709232e-01 6.047408e-01 5.250652e-01 4.336906e-01 2.924623e-02 + 1.192979e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.502315e-01 3.497685e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.798335e-01 1.201665e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 7.569469e-01 2.430531e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "m" + + 5 + 2 + 39 + -3.287102e+00 -3.945326e+00 -4.745791e+00 -4.451725e+00 -6.610989e+00 -7.157322e+00 -6.946015e+00 -8.339868e+00 -1.076620e+01 -2.205353e+00 -1.758780e+00 -5.884679e+00 -4.110872e+00 -2.522003e-01 1.266988e+00 1.073497e+00 1.660075e+00 3.850085e-01 -8.414143e-01 3.025587e-01 -2.067264e+00 -2.209979e+00 4.330428e-01 1.514793e-01 -6.359710e-01 -2.556094e-01 -1.829222e-01 -3.952556e-01 -2.047407e-02 -4.318749e-01 -1.996511e-01 1.967741e-01 -4.469120e-02 5.623795e-01 5.234818e-01 -4.882849e-02 -1.390390e-01 1.920592e-01 8.448498e-02 + 39 + 1.039185e+01 2.692476e+01 3.339762e+01 4.943718e+01 4.351051e+01 5.796726e+01 5.850578e+01 5.882478e+01 6.447831e+01 5.367405e+01 6.567081e+01 4.397159e+01 2.391816e+00 2.370957e+00 2.603233e+00 3.401154e+00 3.575088e+00 3.724508e+00 3.655169e+00 4.754743e+00 4.482598e+00 5.015878e+00 4.019436e+00 4.141648e+00 3.233873e+00 4.081623e-01 2.949945e-01 3.248021e-01 5.689997e-01 5.552406e-01 5.449124e-01 5.682501e-01 6.718897e-01 6.821942e-01 8.800761e-01 6.226892e-01 6.223439e-01 5.111436e-01 2.787992e-02 + 1.216009e+02 + 3 + 39 + -3.995013e+00 -3.107413e+00 -2.623900e+00 -3.115201e+00 -6.900971e+00 -7.937017e+00 -6.952573e+00 -1.031384e+01 -1.267157e+01 -1.075491e+00 -2.446893e+00 -6.548535e+00 -4.226559e+00 -1.260951e-01 5.081402e-02 8.601987e-02 -5.674727e-02 -1.980224e-02 1.307516e-01 3.510626e-02 6.564218e-02 1.958327e-01 -9.907567e-02 -1.578545e-01 9.871290e-02 6.814840e-03 -1.737027e-02 -3.700118e-01 -3.106031e-01 -5.949227e-01 -1.169877e-01 2.978910e-01 -3.976499e-02 6.878490e-01 7.356446e-01 -1.659579e-01 -6.613301e-02 2.526698e-01 7.594597e-02 + 39 + 7.668652e+00 2.175003e+01 2.926278e+01 4.714013e+01 4.709666e+01 6.789615e+01 6.166028e+01 6.106153e+01 5.731952e+01 5.536409e+01 7.486101e+01 4.912556e+01 1.772031e+00 6.331787e-01 1.500045e+00 1.215152e+00 1.803304e+00 1.515098e+00 1.617690e+00 1.922327e+00 2.222748e+00 2.584546e+00 1.938771e+00 1.972026e+00 1.697768e+00 1.308738e-01 2.009615e-01 2.564460e-01 3.929563e-01 4.560274e-01 4.877720e-01 4.857341e-01 5.768963e-01 6.260394e-01 7.591211e-01 5.721000e-01 5.942431e-01 5.042671e-01 2.019397e-02 + 1.079553e+02 + 4 + 39 + -4.064342e+00 -4.312605e+00 -4.549718e+00 -5.735784e+00 -7.387292e+00 -6.374176e+00 -6.801102e+00 -7.555698e+00 -8.901958e+00 -2.488362e+00 -2.955219e+00 -5.125729e+00 -3.850626e+00 -2.708129e-01 -1.276729e+00 -7.554256e-01 -2.152909e+00 -5.346752e-01 1.035037e+00 -9.126917e-02 2.273144e+00 2.426961e+00 -5.682097e-01 -3.530116e-01 8.552651e-01 2.964743e-01 -2.198179e-01 -2.771950e-01 8.961657e-03 -3.267010e-01 -4.766590e-02 1.552088e-01 5.530989e-02 4.486250e-01 2.068332e-01 3.118096e-02 3.489215e-02 1.097644e-01 3.909226e-02 + 39 + 1.305724e+01 3.013021e+01 3.452475e+01 5.430477e+01 4.361884e+01 5.703175e+01 5.312301e+01 5.502313e+01 6.359568e+01 4.570100e+01 5.783677e+01 3.807249e+01 3.414037e+00 2.665984e+00 3.429026e+00 4.369408e+00 5.056831e+00 5.169377e+00 4.480130e+00 5.063521e+00 4.970031e+00 5.769767e+00 4.654792e+00 5.010942e+00 3.762398e+00 3.880924e-01 3.148899e-01 3.949121e-01 5.092896e-01 6.467531e-01 6.344501e-01 5.808821e-01 6.300768e-01 7.461901e-01 1.035902e+00 6.061112e-01 6.342654e-01 4.780129e-01 2.737744e-02 + 1.246394e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.068159e-01 5.931841e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.851873e-01 3.148127e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 4.549546e-01 5.450454e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "th" + + 5 + 2 + 39 + -1.726358e+01 3.298948e-01 -6.006187e+00 -3.836002e+00 -2.885763e+00 -3.410986e+00 -1.663822e+00 -1.678540e+00 -1.439193e+00 -1.430168e+00 -2.515786e+00 -9.817748e-01 -6.592236e+00 -3.106668e+00 -1.980019e-01 -6.142103e-01 8.251083e-01 6.887457e-01 1.087842e+00 1.214346e+00 9.142545e-01 4.571885e-01 2.694274e-01 7.399287e-01 7.219775e-01 -8.870206e-01 6.159106e-01 -7.716647e-01 -1.518171e-01 -6.668386e-01 -5.443689e-01 -1.990716e-01 -4.824297e-01 -2.218346e-02 -8.789085e-02 1.023742e-01 3.453983e-02 -6.378217e-02 2.798648e-01 + 39 + 2.772192e+01 1.635877e+01 1.930678e+01 2.035424e+01 1.925222e+01 2.142374e+01 2.112696e+01 1.988850e+01 2.213569e+01 2.015151e+01 1.704469e+01 1.480030e+01 6.319054e+00 4.364309e+00 3.634056e+00 3.809175e+00 4.402010e+00 3.800733e+00 4.619198e+00 4.344866e+00 3.422993e+00 3.963166e+00 3.603701e+00 3.547406e+00 2.682854e+00 7.273344e-01 5.803151e-01 5.798394e-01 5.897849e-01 6.667202e-01 5.989665e-01 7.484400e-01 6.750124e-01 6.320010e-01 6.465127e-01 6.035554e-01 5.749938e-01 4.396873e-01 1.118795e-01 + 1.168639e+02 + 3 + 39 + -2.158696e+01 -3.716217e+00 -8.799376e+00 -5.265436e+00 -4.269685e+00 -2.646270e+00 -1.216729e+00 -2.782122e-01 -5.565475e-01 -5.959412e-01 -8.525752e-01 4.596437e-01 -6.932385e+00 1.601857e-01 -4.651441e-01 -1.063632e-01 -3.609919e-01 -2.447428e-01 -2.154713e-01 5.337460e-03 1.408421e-02 1.059183e-01 -2.888900e-02 -3.378268e-02 6.021059e-02 2.202161e-01 7.179493e-01 7.716400e-02 2.623679e-01 -9.476189e-02 -1.259074e-01 -2.832600e-01 -2.306057e-01 -1.450877e-01 -8.120787e-02 -7.252313e-02 -1.933048e-01 -1.692086e-01 1.769871e-01 + 39 + 1.470677e+01 1.703691e+01 1.417114e+01 1.576455e+01 1.588145e+01 1.542275e+01 1.348021e+01 1.340328e+01 1.345931e+01 1.312280e+01 1.243957e+01 1.102719e+01 5.749893e+00 2.309681e+00 1.684566e+00 1.796537e+00 1.819193e+00 1.754378e+00 1.768279e+00 1.642222e+00 1.626994e+00 1.605525e+00 1.594056e+00 1.574253e+00 1.375556e+00 5.061041e-01 4.943859e-01 3.627552e-01 4.449800e-01 4.449748e-01 4.338755e-01 4.717470e-01 4.656462e-01 3.967449e-01 3.901792e-01 3.990869e-01 3.951078e-01 3.448838e-01 9.697364e-02 + 9.804195e+01 + 4 + 39 + -1.500834e+01 -4.586842e+00 -6.419418e+00 -6.837015e+00 -6.090115e+00 -6.174115e+00 -2.748926e+00 -1.488499e+00 -7.075657e-01 -1.238748e+00 -2.743408e+00 -8.537155e-01 -4.798567e+00 3.440178e+00 -7.381257e-01 9.838622e-01 -5.762700e-01 -1.354283e+00 -1.473542e+00 -1.999844e+00 -2.956440e-01 -4.271752e-01 -2.017902e-01 -4.600288e-01 -7.290475e-01 8.018076e-01 2.615962e-01 -2.652946e-01 3.266121e-02 -9.997065e-02 -2.141692e-01 4.007002e-02 -4.353799e-01 1.126452e-01 -1.822345e-01 1.069038e-02 1.273164e-01 -3.016592e-02 -5.180876e-03 + 39 + 4.408112e+01 2.581069e+01 2.888192e+01 2.474429e+01 2.974233e+01 3.080421e+01 3.243723e+01 2.246296e+01 2.471208e+01 2.312885e+01 2.186127e+01 1.953629e+01 4.295982e+00 4.789644e+00 3.344556e+00 4.790464e+00 4.715167e+00 5.043956e+00 5.125396e+00 5.761719e+00 3.746347e+00 4.037101e+00 3.428545e+00 3.660716e+00 2.982122e+00 6.686690e-01 8.866250e-01 5.417407e-01 6.875320e-01 6.876724e-01 6.845782e-01 7.387835e-01 9.485897e-01 6.548117e-01 6.040769e-01 5.814650e-01 5.861438e-01 4.951146e-01 8.312685e-02 + 1.219803e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.457830e-01 4.542170e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.935960e-01 2.064040e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.998824e-01 4.001176e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "sh" + + 5 + 2 + 39 + -2.256145e+01 -5.465943e+00 3.910588e+00 -7.421358e+00 -7.326015e+00 -3.916042e+00 -1.978814e+00 6.698844e-02 -2.088311e+00 -2.486943e+00 -1.110244e+00 -3.056266e-01 -3.537877e+00 -4.554498e+00 -6.634143e-02 6.202693e-02 -3.366139e-01 9.284218e-01 1.663874e+00 1.110929e+00 2.142396e-01 8.655177e-01 5.371627e-01 5.658398e-01 4.158378e-02 2.556594e-01 6.870263e-01 -3.041268e-01 -2.442468e-01 -2.607850e-01 -3.626801e-01 -1.950612e-01 -3.989106e-01 -1.432919e-02 -1.568893e-01 4.064143e-02 -2.340019e-02 -7.061875e-02 1.133392e-01 + 39 + 4.850574e+01 2.481556e+01 2.402700e+01 3.425634e+01 3.000186e+01 3.054784e+01 2.568551e+01 2.467830e+01 2.803613e+01 2.016267e+01 1.690162e+01 1.489813e+01 2.047369e+00 3.664391e+00 2.600353e+00 3.246605e+00 2.656096e+00 4.193954e+00 3.230807e+00 3.685053e+00 3.690877e+00 3.436877e+00 2.653388e+00 2.500978e+00 1.881039e+00 2.462090e-01 8.955095e-01 5.092998e-01 4.269907e-01 5.225868e-01 5.574878e-01 5.990543e-01 6.471056e-01 5.994282e-01 5.483438e-01 5.051528e-01 4.284897e-01 3.649205e-01 3.542106e-02 + 1.125124e+02 + 3 + 39 + -2.970781e+01 -6.065022e+00 3.362512e+00 -9.410249e+00 -7.159114e+00 -1.160324e+00 -9.087293e-01 -2.813614e-01 -8.668762e-01 -1.639052e+00 -1.013481e-01 -3.418507e-01 -2.400634e+00 9.754495e-02 -9.857515e-02 -9.096305e-02 -4.577604e-02 -1.740560e-01 -7.480669e-02 -4.310977e-03 -6.721665e-02 3.692646e-02 -1.769816e-02 -6.653725e-02 -2.462191e-02 -2.271960e-02 7.162591e-01 1.092094e-02 -1.862690e-02 1.027754e-01 -9.304471e-02 -2.736883e-01 -1.569345e-01 -2.019558e-02 -1.119591e-01 -8.742937e-02 -1.112924e-01 -2.334865e-02 -9.847292e-02 + 39 + 9.917742e+00 2.576867e+01 1.957489e+01 2.574489e+01 3.216051e+01 2.254639e+01 2.116896e+01 1.930735e+01 1.807385e+01 1.568325e+01 1.362672e+01 1.126397e+01 1.358703e+00 1.189375e+00 7.644460e-01 9.323215e-01 1.047493e+00 1.262722e+00 1.462441e+00 1.312534e+00 1.306841e+00 1.303159e+00 1.293682e+00 1.178694e+00 1.033154e+00 8.208600e-02 3.284097e-01 1.612449e-01 2.171080e-01 2.113121e-01 2.833426e-01 3.041544e-01 3.025740e-01 3.010241e-01 3.018912e-01 2.891602e-01 2.523024e-01 2.219759e-01 1.052279e-02 + 8.554077e+01 + 4 + 39 + -2.047738e+01 -6.845898e+00 2.474865e+00 -8.076880e+00 -9.278199e+00 -5.021693e+00 -3.400638e+00 -6.983671e-01 -1.733538e+00 -2.780570e+00 -1.845383e+00 -9.238712e-01 -3.627408e+00 4.818402e+00 -2.201519e-01 -2.974140e-01 1.296159e-02 -9.422089e-01 -1.626789e+00 -1.830115e+00 -8.744150e-02 -7.819065e-01 -5.372335e-01 -5.559809e-01 -3.130958e-01 -1.404476e-01 4.662096e-01 -1.972475e-01 -1.479126e-01 -2.200972e-01 -9.483209e-02 -3.049391e-02 -2.794436e-01 6.826441e-02 -1.380307e-01 5.589199e-02 5.317611e-02 -5.706220e-02 1.336110e-01 + 39 + 6.655296e+01 2.466535e+01 2.617061e+01 3.371902e+01 3.374000e+01 3.759269e+01 3.344296e+01 2.542224e+01 2.818880e+01 2.190849e+01 1.847285e+01 1.468426e+01 2.152336e+00 3.957563e+00 2.711012e+00 3.646337e+00 3.172532e+00 4.599924e+00 4.133555e+00 4.753164e+00 3.797990e+00 4.102575e+00 3.147247e+00 2.826619e+00 1.983474e+00 3.157370e-01 1.159757e+00 3.734361e-01 4.302908e-01 4.719675e-01 6.272144e-01 7.224772e-01 8.263358e-01 6.057953e-01 6.068613e-01 5.548654e-01 4.679391e-01 3.614779e-01 4.042931e-02 + 1.163505e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.586184e-01 3.413816e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.510245e-01 1.489755e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.794007e-01 3.205993e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + diff --git a/samples/RMHTK/work/R1/hmm0/MODELS~ b/samples/RMHTK/work/R1/hmm0/MODELS~ new file mode 100755 index 0000000..e418680 --- /dev/null +++ b/samples/RMHTK/work/R1/hmm0/MODELS~ @@ -0,0 +1,1377 @@ +~o + 1 39 + 39 +~v varFloor1 + 39 + 9.857469e-03 5.546750e-03 7.227151e-03 7.634672e-03 7.804320e-03 6.913838e-03 7.343364e-03 6.157733e-03 6.080312e-03 4.222516e-03 4.611216e-03 3.340509e-03 1.125261e-03 4.615124e-04 3.291483e-04 3.045427e-04 4.137188e-04 4.288039e-04 3.993323e-04 4.290919e-04 4.150005e-04 3.785724e-04 3.096795e-04 2.945840e-04 2.399993e-04 4.639273e-05 6.651254e-05 6.107638e-05 5.636400e-05 8.277006e-05 8.862553e-05 9.320126e-05 1.011802e-04 1.035967e-04 9.807252e-05 8.817509e-05 8.367682e-05 7.139950e-05 7.005768e-06 +~h "uh" + + 5 + 2 + 39 + -2.030201e+00 -9.665071e+00 -4.850016e+00 -1.500457e+01 -1.153727e+01 -7.872433e+00 -1.326484e+01 -3.792828e+00 -3.982449e+00 1.373869e+00 -1.164011e+00 -2.904042e+00 -1.041829e+00 1.021281e+00 -1.310185e+00 1.511304e-01 -7.848151e-01 -8.387808e-01 -5.316058e-01 -1.090856e+00 5.665955e-01 5.681162e-01 4.180900e-01 -5.416582e-03 -3.161625e-01 3.664384e-01 -8.502450e-01 3.352739e-01 -5.672251e-03 5.236394e-01 5.099936e-01 2.173264e-01 6.659085e-01 1.207541e-01 -3.713307e-03 -1.960127e-01 -6.033723e-02 1.789059e-01 -2.526794e-01 + 39 + 1.163658e+01 2.600163e+01 5.178633e+01 7.321135e+01 4.987086e+01 1.008964e+02 6.382223e+01 6.938992e+01 5.704283e+01 6.208150e+01 7.963033e+01 3.147031e+01 1.024020e+00 2.717298e+00 1.834185e+00 2.578617e+00 4.614402e+00 3.877394e+00 4.272369e+00 4.567668e+00 4.338061e+00 3.744087e+00 3.754827e+00 3.773557e+00 2.402456e+00 1.423054e-01 5.131721e-01 4.482954e-01 4.093170e-01 6.245078e-01 6.995413e-01 9.156046e-01 7.503360e-01 9.321945e-01 8.442732e-01 8.653187e-01 7.990278e-01 4.271652e-01 2.549312e-02 + 1.226515e+02 + 3 + 39 + -2.493008e+00 -1.054106e+01 -4.786512e+00 -1.568067e+01 -1.138510e+01 -8.878133e+00 -1.240299e+01 -1.551957e+00 -2.882305e+00 2.039263e+00 -1.828534e+00 -3.065711e+00 -8.493247e-01 -1.332896e-01 2.385190e-02 2.615749e-01 3.677526e-01 3.898646e-02 -2.341589e-01 1.373563e-01 1.264822e-01 1.031905e-02 -2.369398e-01 -2.268173e-01 7.791431e-02 -1.244640e-01 -2.765147e-01 4.883735e-01 4.482185e-02 4.650115e-01 3.187645e-01 1.592605e-01 2.504025e-01 -2.252735e-01 -2.099437e-01 -2.095086e-01 -9.711853e-02 5.833494e-02 -2.053607e-01 + 39 + 1.157169e+01 2.519056e+01 4.458375e+01 7.413934e+01 5.011262e+01 1.002063e+02 6.879843e+01 6.404859e+01 5.452263e+01 5.373853e+01 8.240313e+01 3.586399e+01 1.093018e+00 3.918743e-01 9.019890e-01 1.544266e+00 1.898300e+00 1.769163e+00 2.359646e+00 2.228713e+00 2.376361e+00 2.345817e+00 2.425642e+00 2.149941e+00 1.550746e+00 6.950536e-02 2.360973e-01 3.472621e-01 2.243571e-01 4.433084e-01 4.952910e-01 5.593957e-01 6.553656e-01 5.492893e-01 4.724049e-01 4.511997e-01 4.550969e-01 3.284724e-01 2.985048e-02 + 1.077668e+02 + 4 + 39 + -3.484642e+00 -8.578824e+00 -2.867287e+00 -1.111205e+01 -1.067224e+01 -9.994902e+00 -1.302486e+01 -2.912186e+00 -4.159908e+00 -2.450437e-01 -2.938213e+00 -2.378921e+00 -2.207490e+00 -1.355959e+00 2.271837e+00 1.705198e-01 2.525676e+00 1.632205e+00 6.324319e-01 1.126436e+00 -6.731064e-01 -2.316017e-01 -9.307619e-01 -6.418827e-01 -3.175236e-02 -1.075944e+00 -6.351551e-01 3.882763e-01 -1.770977e-01 2.296526e-01 4.234417e-01 4.919443e-01 5.228019e-01 -2.879682e-02 6.053823e-02 8.500538e-03 7.515272e-02 -6.262081e-02 -2.229135e-01 + 39 + 1.414221e+01 3.059413e+01 4.915421e+01 7.820808e+01 5.452502e+01 8.124820e+01 6.373906e+01 4.928222e+01 5.538775e+01 5.343611e+01 7.012426e+01 3.884648e+01 2.140853e+00 2.771446e+00 3.080449e+00 2.854023e+00 5.477758e+00 4.555723e+00 5.576109e+00 5.830897e+00 5.015099e+00 4.029101e+00 4.792168e+00 5.255110e+00 3.419893e+00 4.141315e-01 3.974988e-01 6.474802e-01 4.628629e-01 8.618535e-01 7.120451e-01 8.836619e-01 8.602209e-01 8.524762e-01 8.357126e-01 7.400317e-01 8.449144e-01 6.044542e-01 6.266481e-02 + 1.286140e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 2.817979e-01 7.182022e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.734376e-01 3.265624e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.021461e-01 4.978539e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "pd" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.168320e+01 -8.909177e+00 -8.107924e+00 -8.414758e+00 -3.109300e+00 -2.724456e+00 -1.651540e+00 -9.407648e-01 -1.674334e+00 -1.021897e+00 -2.749708e+00 -1.713488e+00 -4.770757e+00 3.198526e+00 3.011178e-01 -3.924979e-01 -1.354502e+00 -1.146576e+00 -6.581329e-01 -1.446408e+00 -5.898952e-01 -1.199556e+00 -8.481846e-01 -6.850266e-01 -5.710939e-01 9.507689e-01 3.502007e-01 1.423562e-01 2.451877e-02 -1.033276e-01 -3.837587e-01 -9.545891e-02 -4.497893e-01 4.599556e-02 -6.832804e-02 2.747240e-02 1.898137e-01 3.861748e-02 3.289079e-02 + 39 + 2.237512e+01 2.742498e+01 4.200616e+01 4.314323e+01 3.733153e+01 4.371882e+01 4.115799e+01 3.669781e+01 3.247055e+01 2.922839e+01 2.605324e+01 1.920450e+01 2.116284e+00 4.208044e+00 3.740133e+00 4.564236e+00 5.199792e+00 4.587859e+00 5.538447e+00 5.579420e+00 4.907856e+00 4.762557e+00 3.438003e+00 3.850636e+00 2.575017e+00 4.661774e-01 4.126602e-01 5.092974e-01 4.870790e-01 6.134127e-01 6.337017e-01 7.089772e-01 7.190645e-01 7.227922e-01 6.894101e-01 6.540084e-01 5.292149e-01 4.244452e-01 9.978860e-02 + 1.221147e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "hh" + + 5 + 2 + 39 + -1.312870e+01 -9.399192e+00 -4.855535e+00 -8.534614e+00 -4.823158e+00 -1.303243e+00 1.095427e+00 2.320851e-01 -2.473269e+00 -2.392883e+00 -3.520384e+00 -5.874194e-01 -5.579978e+00 7.407272e-02 -4.276448e-01 8.010327e-02 -3.239506e-01 3.614377e-02 2.133469e-01 3.484032e-01 -2.190694e-01 -1.407244e-01 -1.294266e-01 -2.309839e-01 -7.813840e-02 2.132159e-01 3.107306e-01 2.958340e-01 3.596455e-02 -1.441497e-02 -2.100106e-01 -2.096315e-01 -3.484204e-01 -1.867337e-01 -1.321280e-01 -2.231825e-03 1.881327e-03 -1.303390e-01 9.613571e-02 + 39 + 2.570283e+01 3.433313e+01 5.408742e+01 4.182399e+01 5.248001e+01 4.608190e+01 4.351048e+01 5.021740e+01 4.196433e+01 3.469236e+01 3.165909e+01 2.386633e+01 4.249607e+00 2.159925e+00 2.232207e+00 2.264099e+00 2.527283e+00 2.887505e+00 2.882027e+00 3.008221e+00 2.762013e+00 2.674005e+00 2.389359e+00 2.216077e+00 1.809939e+00 2.247350e-01 3.652101e-01 3.360291e-01 3.967936e-01 4.858495e-01 5.358655e-01 5.183882e-01 5.961242e-01 5.294582e-01 5.270092e-01 4.752136e-01 4.707851e-01 3.617418e-01 2.774472e-02 + 1.134087e+02 + 3 + 39 + -1.111658e+01 -6.874989e+00 -2.143163e+00 -7.602507e+00 -5.557551e+00 -1.634927e+00 1.117858e+00 -1.373350e+00 -4.374829e+00 -3.128916e+00 -4.855067e+00 -1.692315e+00 -4.511565e+00 2.061247e+00 6.818373e-01 2.304460e-01 -6.216237e-01 -1.295876e+00 -8.345931e-01 -1.305953e+00 -7.078542e-01 -7.944835e-01 -4.128009e-01 -3.080331e-01 -5.940490e-01 6.897904e-01 3.811554e-01 -2.904383e-01 -2.404827e-01 -4.552988e-01 -4.458954e-01 -3.530273e-01 -5.262261e-01 5.697140e-02 -7.771294e-03 4.660752e-02 1.661586e-01 -2.402634e-02 1.822985e-01 + 39 + 2.370477e+01 3.603247e+01 6.636908e+01 4.745422e+01 6.099296e+01 5.427464e+01 5.111937e+01 6.288845e+01 4.817939e+01 4.438970e+01 3.782127e+01 2.782554e+01 2.381030e+00 2.298469e+00 1.843907e+00 3.509145e+00 2.659595e+00 3.069077e+00 3.201918e+00 3.581782e+00 3.128042e+00 3.520880e+00 2.579036e+00 3.194718e+00 1.950385e+00 2.155435e-01 2.212361e-01 2.853073e-01 3.318022e-01 3.232113e-01 4.356569e-01 4.539482e-01 5.335968e-01 4.671990e-01 4.849519e-01 4.796415e-01 4.103143e-01 3.581722e-01 1.665185e-02 + 1.135607e+02 + 4 + 39 + -5.793829e+00 -6.039465e+00 -3.490745e+00 -1.132449e+01 -9.932931e+00 -5.115592e+00 -2.464617e+00 -3.480635e+00 -6.241982e+00 -4.168417e+00 -5.734828e+00 -2.945214e+00 -2.514325e+00 1.879225e+00 -7.965435e-01 -5.201952e-01 -1.372169e+00 -1.547482e+00 -1.036294e+00 -1.474332e+00 -7.535020e-02 -3.020529e-01 3.268573e-03 2.629616e-01 -3.175400e-01 8.093906e-01 -4.019753e-01 -5.497519e-01 -8.668759e-02 -3.752266e-02 1.579617e-01 1.471131e-01 4.412954e-02 3.154320e-01 2.975138e-01 1.761498e-01 2.306065e-01 1.182401e-01 -5.795905e-02 + 39 + 1.806699e+01 3.610131e+01 8.755533e+01 5.787846e+01 6.843794e+01 5.974888e+01 5.929446e+01 7.444825e+01 5.729482e+01 4.650457e+01 5.229534e+01 2.673247e+01 1.303344e+00 1.711402e+00 1.880814e+00 3.512200e+00 2.627310e+00 3.508595e+00 3.535603e+00 3.937696e+00 3.273100e+00 3.531199e+00 3.089423e+00 2.762761e+00 2.188005e+00 1.882051e-01 2.138763e-01 2.258227e-01 3.075623e-01 3.410905e-01 3.926673e-01 3.624218e-01 5.097945e-01 4.586661e-01 4.140955e-01 4.316083e-01 3.755031e-01 2.897057e-01 1.848150e-02 + 1.131575e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 7.424126e-01 2.575874e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.935478e-01 6.064522e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.896184e-01 6.103816e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "en" + + 5 + 2 + 39 + -4.832203e+00 -3.345453e+00 -1.989080e+00 -7.586669e+00 -9.719547e+00 -9.275636e+00 -6.352782e+00 -3.468300e+00 -6.969407e+00 -2.998410e+00 -6.465508e+00 -3.881603e+00 -4.536745e+00 1.804825e+00 2.374679e-01 -5.776630e-01 6.040965e-01 -7.258475e-01 -3.870073e-01 6.284350e-01 -1.700090e+00 -1.450884e+00 8.906950e-01 -6.369912e-01 -5.814766e-01 6.031692e-02 -9.903246e-01 3.051827e-02 2.911192e-02 7.988463e-02 3.058240e-01 3.396246e-01 3.865958e-01 -6.647284e-02 1.819283e-01 2.067684e-01 2.124604e-01 2.248853e-01 -3.292581e-02 + 39 + 1.093994e+01 2.806490e+01 3.127982e+01 5.083617e+01 4.260678e+01 4.589150e+01 4.879269e+01 7.016096e+01 6.359486e+01 5.704579e+01 4.397492e+01 3.962349e+01 1.811799e+00 4.437358e+00 3.343941e+00 3.071352e+00 3.702322e+00 4.736796e+00 4.414643e+00 5.256987e+00 5.482342e+00 4.898521e+00 4.129414e+00 4.114708e+00 3.300171e+00 1.968893e-01 6.390597e-01 5.440817e-01 5.007743e-01 6.194762e-01 7.297515e-01 7.355475e-01 9.392456e-01 1.092101e+00 8.981717e-01 7.596429e-01 6.003325e-01 5.396219e-01 3.242024e-02 + 1.245042e+02 + 3 + 39 + -4.350944e+00 -1.581502e+00 -3.033624e+00 -4.546232e+00 -1.027698e+01 -8.284575e+00 -2.119969e+00 -1.000261e+01 -9.620973e+00 6.433219e-01 -6.984086e+00 -4.372160e+00 -4.814676e+00 -1.784667e-01 3.819209e-01 1.068429e-01 2.526274e-01 2.127459e-01 2.814326e-01 1.905411e-01 -3.044975e-01 -7.263879e-02 8.295118e-04 -6.071570e-02 9.574406e-02 -1.054218e-01 -3.598247e-01 -2.189239e-02 5.363658e-02 -1.131267e-01 2.968800e-01 8.305258e-02 -2.368927e-01 5.176831e-01 3.119616e-01 -3.299526e-01 1.295769e-01 1.211144e-01 -4.143045e-02 + 39 + 7.650828e+00 2.332176e+01 2.597065e+01 4.483254e+01 4.213374e+01 4.572722e+01 4.507194e+01 6.659875e+01 6.159732e+01 5.518346e+01 5.800350e+01 4.987938e+01 2.053966e+00 5.305711e-01 1.472914e+00 1.127827e+00 1.571932e+00 1.763395e+00 1.671497e+00 2.134741e+00 2.993035e+00 2.148666e+00 2.066586e+00 1.604887e+00 1.585010e+00 6.493172e-02 2.946739e-01 3.349203e-01 2.983063e-01 3.786173e-01 5.056615e-01 4.685608e-01 5.377921e-01 7.125904e-01 6.377904e-01 4.858733e-01 5.030775e-01 3.836238e-01 1.229983e-02 + 1.051540e+02 + 4 + 39 + -7.239712e+00 -6.559782e-01 -2.018598e+00 -3.914213e+00 -7.519366e+00 -6.997035e+00 -3.416749e+00 -6.501280e+00 -8.081779e+00 -1.872368e+00 -6.474865e+00 -3.522103e+00 -5.789957e+00 -1.626018e+00 -3.036360e-01 -2.831274e-01 -5.288934e-01 1.305961e+00 5.541717e-01 -4.281869e-01 1.592733e+00 1.099021e+00 -7.160746e-01 6.419243e-01 4.445265e-01 -1.776237e-01 -4.611821e-01 -2.860416e-01 -2.409755e-01 -3.061958e-01 1.021016e-01 8.151451e-02 1.863496e-02 3.767962e-01 3.367321e-01 8.476298e-02 2.210667e-01 9.959732e-02 6.158483e-02 + 39 + 2.016276e+01 3.172025e+01 2.770487e+01 4.726453e+01 4.490495e+01 4.106034e+01 4.997431e+01 6.251005e+01 4.968850e+01 4.399484e+01 4.368538e+01 3.808749e+01 4.497365e+00 3.615335e+00 3.850444e+00 2.958755e+00 4.019504e+00 4.115615e+00 3.944970e+00 4.627666e+00 5.374177e+00 4.518982e+00 3.729189e+00 3.710329e+00 3.012094e+00 2.669932e-01 6.188694e-01 5.825793e-01 4.354329e-01 5.782316e-01 7.167906e-01 6.065075e-01 7.504246e-01 8.612300e-01 7.240128e-01 5.992238e-01 5.421097e-01 4.517569e-01 3.574083e-02 + 1.232776e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.777864e-01 4.222136e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.441303e-01 2.558697e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.577568e-01 4.422432e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "oy" + + 5 + 2 + 39 + 1.841933e+00 -7.075530e+00 -1.105808e+01 -2.396868e+01 -1.502729e+01 3.925693e+00 -3.901043e+00 -3.633328e+00 -5.606941e+00 -1.392435e+00 1.257636e+00 -7.397704e-01 -6.671953e-01 1.493092e-02 -8.570200e-01 -2.675093e-01 1.098843e-01 5.766134e-01 3.259240e-01 -2.977831e-01 -2.924386e-01 6.614514e-02 7.325251e-01 4.995548e-01 -2.360861e-01 1.225135e-01 -2.401045e-01 -1.464183e-01 1.148668e-01 6.141474e-01 3.428825e-01 -4.850335e-01 -2.950656e-01 5.205378e-02 2.749112e-01 1.717139e-01 -1.552937e-01 -2.472879e-01 -7.103492e-02 + 39 + 8.392545e+00 3.218254e+01 3.155612e+01 5.773351e+01 7.365588e+01 5.494451e+01 5.565165e+01 6.327392e+01 5.658115e+01 5.618420e+01 6.249956e+01 3.278644e+01 7.850046e-01 3.299641e-01 1.284879e+00 9.393784e-01 3.257489e+00 2.421255e+00 2.477802e+00 2.982988e+00 1.942742e+00 2.348885e+00 2.624450e+00 2.419501e+00 2.005819e+00 3.266026e-02 1.443325e-01 1.552007e-01 2.176062e-01 2.914046e-01 4.183555e-01 4.472361e-01 4.156194e-01 4.961101e-01 5.151890e-01 4.407977e-01 5.127699e-01 3.568469e-01 1.111953e-02 + 1.029975e+02 + 3 + 39 + -1.600038e-01 -1.446971e+01 -1.035071e+01 -1.526482e+01 -8.816194e+00 -3.679810e+00 -1.162552e+01 -1.157120e+00 -4.949237e-01 4.412141e+00 -4.930805e-01 -6.411987e+00 -4.838287e-01 -7.105474e-01 -7.838018e-01 1.574425e+00 2.112118e+00 -3.411731e-01 -3.160154e+00 -8.581796e-01 2.051690e+00 1.171532e+00 -6.618254e-01 -1.438848e+00 -2.827353e-01 -9.085950e-02 -1.112504e-01 4.235934e-01 4.901954e-01 -2.360831e-01 -6.541290e-01 -6.455722e-02 6.464770e-01 1.794776e-01 -6.070223e-01 -7.097361e-01 5.198818e-02 6.236298e-01 -4.695281e-02 + 39 + 8.991010e+00 2.002674e+01 3.062724e+01 5.018239e+01 5.021795e+01 7.624166e+01 5.963378e+01 6.845250e+01 5.936435e+01 5.692099e+01 9.567125e+01 2.983522e+01 9.639586e-01 2.551969e-01 9.374650e-01 1.591574e+00 1.604986e+00 2.956166e+00 2.507786e+00 4.569071e+00 2.461734e+00 3.310087e+00 4.157674e+00 2.201813e+00 3.939622e+00 1.676825e-02 4.712425e-02 1.194269e-01 2.115444e-01 2.869550e-01 3.294654e-01 7.032355e-01 4.881698e-01 8.179286e-01 6.735649e-01 5.719914e-01 8.322533e-01 3.803343e-01 1.000000e-02 + 1.043715e+02 + 4 + 39 + -4.484591e+00 -1.245571e+01 3.923488e-01 -1.141405e+01 -1.557458e+01 -1.386063e+01 -7.612459e+00 2.895849e+00 -5.255408e+00 -1.741774e+00 -2.261802e+00 -1.660808e+00 -1.406433e+00 -9.901055e-01 1.490011e+00 1.297192e+00 4.915794e-01 -3.585950e-01 -1.304522e-01 1.029162e+00 -8.639904e-01 -1.202413e+00 -5.374537e-01 1.922264e-01 4.102581e-01 -3.582355e-01 -1.756277e-01 3.773362e-01 -5.783219e-01 -9.192544e-02 6.666613e-01 7.119214e-01 3.055437e-02 -4.817744e-01 1.685329e-01 3.296057e-01 4.047700e-02 -2.385023e-01 -6.481002e-02 + 39 + 1.312857e+01 2.478823e+01 4.691063e+01 5.341276e+01 3.767278e+01 4.747866e+01 7.625475e+01 6.066817e+01 7.802879e+01 4.821485e+01 6.092832e+01 3.055892e+01 1.486668e+00 1.496806e+00 2.068458e+00 3.671952e+00 2.360918e+00 5.635621e+00 3.361573e+00 4.109437e+00 4.094855e+00 4.508593e+00 3.307688e+00 2.807915e+00 2.424972e+00 9.579989e-02 3.392590e-01 2.895453e-01 3.777878e-01 4.989397e-01 4.911921e-01 5.409809e-01 7.137697e-01 9.523674e-01 8.503143e-01 5.423185e-01 4.990444e-01 4.031261e-01 1.642637e-02 + 1.165185e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 8.468485e-01 1.531515e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.637777e-01 2.362223e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 7.804162e-01 2.195838e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "dh" + + 5 + 2 + 39 + -1.419096e+01 -1.245104e+00 -5.929512e+00 -3.915089e+00 -3.920554e+00 -4.367973e+00 -4.221216e+00 -3.292188e+00 -2.234885e+00 -1.273636e+00 -2.758583e+00 -2.307390e+00 -7.093804e+00 9.367111e-01 -2.799487e-01 -8.226269e-02 -6.606536e-01 -8.789831e-01 -9.745377e-01 -6.027461e-01 -1.064465e-02 2.742060e-01 -1.862812e-01 -1.224046e-01 3.078093e-02 8.402424e-01 5.569566e-01 -4.055507e-01 1.969164e-01 -4.410355e-01 -5.221390e-01 -3.654979e-01 -3.556079e-01 1.489422e-01 9.467185e-02 1.308898e-01 -2.119466e-02 4.000948e-02 2.568879e-01 + 39 + 4.049582e+01 2.801081e+01 2.495810e+01 2.830104e+01 2.388580e+01 2.894804e+01 3.605684e+01 3.382780e+01 2.655564e+01 2.266723e+01 2.312707e+01 2.254619e+01 6.712969e+00 4.702882e+00 2.821504e+00 3.001525e+00 3.533956e+00 3.568355e+00 3.956483e+00 3.921638e+00 3.575342e+00 3.286869e+00 2.572601e+00 2.450120e+00 2.375380e+00 1.036812e+00 6.144857e-01 6.840567e-01 7.019788e-01 8.007333e-01 6.450318e-01 7.133197e-01 7.993358e-01 7.165810e-01 6.619055e-01 5.457394e-01 5.592503e-01 4.942278e-01 1.122167e-01 + 1.203766e+02 + 3 + 39 + -9.300618e+00 -1.926803e+00 -5.812597e+00 -6.604027e+00 -7.842415e+00 -9.043930e+00 -7.422874e+00 -3.676964e+00 -9.121137e-01 -1.398621e+00 -3.398699e+00 -2.183141e+00 -3.660943e+00 2.539088e+00 -1.385312e+00 8.244962e-01 -1.731105e+00 -2.129448e+00 -1.912602e+00 -1.956495e+00 4.215721e-01 4.438599e-01 2.380921e-01 -2.888298e-01 -8.376861e-02 1.296662e+00 1.063104e-02 -3.640758e-01 3.454939e-01 -9.965797e-02 -2.718117e-02 2.841959e-01 1.491477e-02 1.625772e-01 -2.443787e-01 1.525101e-01 5.044828e-02 -1.473605e-02 -1.593117e-01 + 39 + 2.136500e+01 1.899508e+01 2.389894e+01 2.519122e+01 2.755069e+01 3.032156e+01 3.898267e+01 2.983294e+01 2.886760e+01 2.814007e+01 2.217786e+01 2.367360e+01 2.151802e+00 3.802481e+00 3.015903e+00 4.503654e+00 4.264915e+00 4.377211e+00 5.290391e+00 5.405228e+00 5.590858e+00 5.339664e+00 3.799834e+00 4.169644e+00 3.482772e+00 4.427020e-01 3.979562e-01 3.846399e-01 4.353343e-01 4.775455e-01 4.995298e-01 5.048730e-01 6.115550e-01 5.835876e-01 5.536307e-01 4.635152e-01 4.592597e-01 4.077599e-01 5.678584e-02 + 1.166571e+02 + 4 + 39 + -5.263886e+00 -6.023354e+00 -3.848199e+00 -1.044677e+01 -1.168050e+01 -1.180803e+01 -1.073885e+01 -2.584417e+00 -6.738958e-01 -3.705765e-01 -4.166755e+00 -2.266713e+00 -2.085656e+00 1.821868e+00 -1.829788e+00 1.048292e+00 -1.585928e+00 -1.666218e+00 -1.032071e+00 -1.261527e+00 7.038043e-01 -6.389792e-02 3.431865e-01 -1.563983e-01 -7.676638e-03 8.139468e-01 -6.339317e-01 2.068379e-01 -7.017693e-03 4.644701e-01 5.674864e-01 7.032180e-01 5.950441e-01 -7.485133e-03 -3.644671e-01 -8.723881e-02 1.512558e-01 4.108204e-03 -3.808774e-01 + 39 + 1.148347e+01 2.365096e+01 3.865044e+01 4.467113e+01 4.372245e+01 4.787401e+01 5.029173e+01 4.663396e+01 5.084513e+01 4.190307e+01 3.792031e+01 3.438554e+01 1.655582e+00 2.469126e+00 2.538822e+00 3.683393e+00 3.897196e+00 3.907230e+00 4.750870e+00 5.349444e+00 4.836140e+00 4.584445e+00 3.536314e+00 4.066894e+00 2.932650e+00 2.335433e-01 4.753734e-01 3.702853e-01 4.753614e-01 6.095772e-01 5.989296e-01 6.114110e-01 6.734064e-01 7.097917e-01 6.954713e-01 5.731081e-01 4.971110e-01 5.259283e-01 5.325224e-02 + 1.200548e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.232170e-01 3.767830e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 1.470812e-01 8.529188e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 1.856481e-01 8.143519e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~s "sil_s2" + 39 + -1.592934e+01 -4.926888e+00 -6.942808e+00 -3.966156e+00 -3.081482e+00 -1.883191e+00 -1.143197e+00 6.542572e-01 -1.030977e+00 -1.035180e+00 -1.483763e+00 1.510328e-01 -1.004582e+01 -2.052776e-01 8.494348e-02 -1.540129e-01 2.345404e-01 2.268185e-01 3.475716e-01 1.947735e-01 4.708112e-02 6.437833e-02 1.314420e-01 8.443171e-02 4.079605e-02 -2.790768e-01 -1.678115e-02 8.502448e-02 8.218060e-02 -1.741036e-02 -5.327997e-02 -3.258827e-02 -5.886225e-03 1.744883e-02 -2.812785e-02 -9.849485e-04 1.683418e-02 -1.218580e-02 4.408116e-02 + 39 + 1.560592e+01 2.230227e+01 2.327167e+01 2.634656e+01 2.436180e+01 2.715852e+01 2.655051e+01 2.657528e+01 2.584789e+01 2.536650e+01 2.214675e+01 1.782923e+01 4.567818e+00 2.495269e+00 3.639798e+00 5.024642e+00 6.227787e+00 7.678180e+00 9.237629e+00 1.004534e+01 1.080817e+01 1.131930e+01 1.125018e+01 1.036363e+01 9.392843e+00 2.097580e-01 2.167060e+00 4.204398e+00 6.263759e+00 8.676667e+00 1.141476e+01 1.393426e+01 1.573655e+01 1.701464e+01 1.825018e+01 1.843815e+01 1.714905e+01 1.569741e+01 7.946196e-02 + 1.591930e+02 +~s "sil_s3" + 39 + -1.697092e+01 -4.592577e+00 -7.071846e+00 -3.977880e+00 -2.510936e+00 -2.061278e+00 -1.075958e+00 2.826796e-01 -1.335274e+00 -7.361032e-01 -1.396171e+00 1.606888e-02 -1.030976e+01 -9.024126e-02 1.323704e-01 2.493860e-02 8.629596e-02 3.450169e-02 7.729980e-02 1.339110e-02 -3.635495e-02 -1.057638e-02 5.568388e-02 2.777220e-02 -2.235882e-02 -6.784049e-02 4.079562e-02 4.365967e-04 2.938879e-02 -3.777808e-02 -3.250331e-02 -3.899840e-02 -2.435841e-02 -1.879503e-02 -1.888042e-02 -1.427204e-02 -1.456618e-02 -1.514213e-02 5.184135e-02 + 39 + 1.491583e+01 2.304711e+01 1.890969e+01 2.225437e+01 1.970382e+01 2.472967e+01 2.224887e+01 2.280362e+01 2.181712e+01 2.346081e+01 1.929359e+01 1.528289e+01 3.798464e+00 6.959244e-01 1.029381e+00 1.140594e+00 1.320816e+00 1.391825e+00 1.598569e+00 1.646054e+00 1.699059e+00 1.704155e+00 1.705659e+00 1.494987e+00 1.299754e+00 1.174259e-01 1.540010e-01 2.056236e-01 2.402450e-01 2.961388e-01 3.251153e-01 3.727375e-01 3.978545e-01 4.133951e-01 4.192098e-01 4.177011e-01 3.701907e-01 3.311006e-01 2.556703e-02 + 9.321144e+01 +~s "sil_s4" + 39 + -1.665638e+01 -3.126588e+00 -6.246307e+00 -3.091138e+00 -2.462331e+00 -9.877980e-01 -9.084083e-01 -1.558149e-01 -1.632900e+00 -4.783005e-01 -1.632270e+00 -4.915595e-01 -1.049442e+01 7.741688e-01 -1.121223e-01 2.192961e-01 -6.056105e-01 -4.812136e-01 -3.860384e-01 -3.223703e-01 -2.843964e-01 -3.146173e-01 -1.842902e-01 -2.119107e-01 -2.091778e-01 6.261556e-01 2.679672e-01 -1.400658e-01 -1.762990e-02 -2.561791e-01 -1.815686e-01 -1.634308e-01 -1.664635e-01 -5.202630e-02 -5.024448e-02 -2.720645e-02 -1.206908e-02 -2.024530e-02 2.040422e-01 + 39 + 1.504889e+01 1.747448e+01 2.217169e+01 2.292529e+01 2.285147e+01 2.429033e+01 2.292714e+01 2.513453e+01 2.354554e+01 2.305079e+01 2.100187e+01 1.666126e+01 3.697880e+00 3.880632e+00 4.054469e+00 4.703672e+00 6.962493e+00 7.427171e+00 8.396201e+00 9.252640e+00 9.904207e+00 1.031415e+01 9.830575e+00 9.115677e+00 8.245290e+00 9.108977e-01 1.650743e+00 3.144826e+00 4.720327e+00 7.298070e+00 9.234032e+00 1.142403e+01 1.316411e+01 1.429033e+01 1.533856e+01 1.510701e+01 1.403620e+01 1.281571e+01 1.199520e-01 + 1.569582e+02 +~t "sil_t" + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 3.418343e-01 6.581656e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 9.260303e-01 7.396974e-02 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 4.614447e-01 5.385553e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 +~h "sil" + + 5 + 2 +~s "sil_s2" + 3 +~s "sil_s3" + 4 +~s "sil_s4" +~t "sil_t" + +~h "ax" + + 5 + 2 + 39 + -2.809472e+00 -9.074569e+00 -7.687520e+00 -1.409825e+01 -7.724154e+00 -5.637351e+00 -1.168278e+01 -2.042699e+00 -4.961678e-01 1.309221e+00 -4.143809e+00 -4.668794e+00 -2.229779e+00 1.109292e+00 -2.784290e-01 -6.900729e-02 -4.710387e-01 -1.771049e-01 2.346029e-01 -6.437889e-01 -1.942532e-01 -9.307930e-02 2.565413e-01 5.629064e-02 -3.118124e-01 1.534812e-01 -8.141922e-01 7.251319e-01 1.513759e-01 6.496049e-01 3.197748e-01 1.605874e-01 7.349084e-01 -2.407612e-01 -4.466992e-01 -2.455766e-01 2.044725e-01 2.464125e-01 -2.843746e-01 + 39 + 1.813202e+01 2.887169e+01 4.098297e+01 5.113163e+01 4.024333e+01 6.855866e+01 5.987777e+01 5.653743e+01 4.936219e+01 5.824304e+01 6.148505e+01 3.533528e+01 2.128698e+00 3.505547e+00 2.519416e+00 2.555175e+00 4.353009e+00 3.526282e+00 3.996829e+00 3.910158e+00 4.256388e+00 3.863339e+00 3.204344e+00 3.428854e+00 2.565135e+00 3.066206e-01 6.657011e-01 4.884994e-01 4.788503e-01 7.720897e-01 6.500779e-01 9.075262e-01 9.515043e-01 9.560546e-01 8.519438e-01 7.913027e-01 7.810740e-01 5.675593e-01 5.289890e-02 + 1.247035e+02 + 3 + 39 + -2.138746e+00 -7.676156e+00 -7.196435e+00 -1.356538e+01 -7.658663e+00 -5.140456e+00 -1.183193e+01 -3.833218e+00 -2.001177e+00 1.576836e+00 -2.478866e+00 -4.325570e+00 -2.457185e+00 -6.341326e-01 1.762589e+00 3.942444e-01 1.270228e+00 6.469299e-01 2.975854e-01 1.118203e+00 -8.686690e-01 -1.101614e+00 -5.964373e-01 2.451402e-01 3.314032e-01 -5.578133e-01 -9.674389e-01 6.096969e-01 1.712920e-01 6.328856e-01 3.382653e-01 1.390392e-01 7.440072e-01 -1.364042e-02 -2.548412e-01 -3.363041e-01 -3.433049e-02 2.228002e-01 -2.751777e-01 + 39 + 1.845301e+01 2.755179e+01 4.087515e+01 5.494908e+01 3.933078e+01 7.223440e+01 5.586767e+01 5.455507e+01 5.080037e+01 5.424331e+01 6.065084e+01 3.384731e+01 1.907762e+00 2.608666e+00 2.407259e+00 2.718277e+00 5.461741e+00 3.607414e+00 4.297009e+00 4.088566e+00 4.342354e+00 4.363443e+00 3.818870e+00 3.617051e+00 2.981310e+00 2.655802e-01 6.353132e-01 4.760645e-01 5.245126e-01 7.034564e-01 6.501775e-01 9.655493e-01 8.373334e-01 9.707543e-01 8.222756e-01 7.742493e-01 7.921126e-01 5.687513e-01 5.174686e-02 + 1.247359e+02 + 4 + 39 + -4.539025e+00 -3.613867e+00 -7.030828e+00 -1.035192e+01 -5.728420e+00 -4.668206e+00 -8.268273e+00 -5.095500e+00 -3.446465e+00 -2.103526e-01 -2.458360e+00 -3.422710e+00 -3.790149e+00 -1.757806e+00 1.867844e+00 6.709586e-01 1.674213e+00 8.893245e-01 4.814401e-01 1.595423e+00 -4.899265e-01 -1.081394e+00 -7.942030e-01 1.807480e-02 4.012397e-01 -7.367032e-01 -5.122431e-01 -1.540766e-01 7.268437e-03 -1.279158e-02 1.196030e-02 5.687382e-02 1.584273e-01 2.707641e-01 1.000441e-01 2.765863e-03 -4.808001e-02 6.973120e-02 -2.711225e-02 + 39 + 2.862740e+01 2.918775e+01 3.687833e+01 5.939447e+01 4.186695e+01 6.182310e+01 4.965126e+01 4.953114e+01 4.897219e+01 4.744632e+01 4.619101e+01 3.164937e+01 3.596028e+00 5.086621e+00 3.368270e+00 3.017654e+00 6.262345e+00 4.045671e+00 5.073648e+00 4.828016e+00 5.450083e+00 5.067489e+00 4.310451e+00 3.999914e+00 3.032542e+00 5.422115e-01 5.581888e-01 4.150693e-01 4.186771e-01 5.724482e-01 5.469832e-01 7.235361e-01 6.716618e-01 7.052497e-01 6.558394e-01 6.130915e-01 5.782352e-01 4.739548e-01 4.976477e-02 + 1.253501e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.288085e-01 5.711915e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 2.081185e-01 7.918815e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 2.055883e-01 7.944117e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~t "sp_t" + 5 + 0.000000e+00 2.500000e-01 2.500000e-01 2.500000e-01 2.500000e-01 + 0.000000e+00 2.500000e-01 2.500000e-01 2.500000e-01 2.500000e-01 + 0.000000e+00 0.000000e+00 3.333334e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "sp" + + 5 + 2 +~s "sil_s2" + 3 +~s "sil_s3" + 4 +~s "sil_s4" +~t "sp_t" + +~h "ey" + + 5 + 2 + 39 + -4.386545e+00 -1.384022e+01 -1.101097e+00 -1.273158e+01 -1.612339e+01 -1.099169e+01 -7.312602e+00 4.676355e+00 -1.294250e+00 -1.954540e+00 -2.925792e+00 -2.360661e+00 -8.693594e-01 -1.447932e-01 -6.927080e-01 1.369717e+00 -6.659206e-01 -1.612685e+00 -4.176982e-01 6.571587e-01 8.638659e-01 -7.021801e-01 -2.526947e-01 6.240697e-01 4.909061e-01 2.441699e-01 -3.627638e-01 5.713085e-01 1.984739e-02 1.924060e-01 3.283212e-01 3.441595e-01 1.546131e-01 -6.064865e-01 -3.372384e-01 1.774700e-01 2.458114e-01 -2.917267e-02 -1.629218e-01 + 39 + 1.204701e+01 2.410221e+01 4.272512e+01 4.970695e+01 4.226387e+01 4.547080e+01 7.076267e+01 5.097555e+01 6.621555e+01 4.360265e+01 5.091909e+01 3.183799e+01 1.228944e+00 1.225302e+00 2.047838e+00 1.927456e+00 2.740474e+00 2.284057e+00 2.891711e+00 3.521383e+00 3.874600e+00 3.026365e+00 3.061551e+00 2.484064e+00 2.019978e+00 1.610959e-01 3.451302e-01 2.409839e-01 2.721306e-01 4.268450e-01 4.236626e-01 4.710108e-01 6.324334e-01 5.634049e-01 6.395090e-01 4.636464e-01 4.887354e-01 4.029654e-01 2.110950e-02 + 1.114431e+02 + 3 + 39 + -6.378433e+00 -1.148695e+01 4.027003e+00 -1.442919e+01 -2.000551e+01 -1.011841e+01 -4.895349e+00 1.558858e+00 -6.100410e+00 -7.465432e-01 -6.507954e-01 -1.864303e+00 -1.062403e+00 -1.684975e-01 5.000008e-01 7.479674e-01 2.785497e-02 -3.417191e-01 1.253805e-01 -1.109983e-01 -6.422179e-01 -6.703809e-01 1.513661e-01 2.682469e-01 -2.535783e-02 -9.767661e-02 4.785765e-02 1.083150e-01 -1.549979e-01 1.889648e-01 2.533966e-01 -8.198484e-03 -1.257617e-01 -6.940106e-02 4.176158e-02 -6.679519e-02 -1.273193e-01 -4.354602e-02 -5.175276e-02 + 39 + 1.146011e+01 2.693671e+01 3.917353e+01 6.870588e+01 3.522256e+01 5.120699e+01 6.158236e+01 6.554553e+01 5.339174e+01 4.573959e+01 6.018265e+01 2.682550e+01 1.177878e+00 2.530713e-01 6.184645e-01 9.942934e-01 8.879133e-01 9.595493e-01 1.118874e+00 1.382455e+00 1.486585e+00 1.670524e+00 1.295902e+00 1.153674e+00 9.305587e-01 2.189738e-02 5.071130e-02 1.153645e-01 1.521778e-01 1.724021e-01 2.081246e-01 2.112590e-01 2.519768e-01 2.649998e-01 2.388721e-01 2.231794e-01 2.078566e-01 1.708764e-01 1.000000e-02 + 8.680614e+01 + 4 + 39 + -6.707418e+00 -7.924452e+00 6.637740e+00 -1.108278e+01 -1.892614e+01 -1.056134e+01 -7.088049e+00 -1.448311e+00 -9.259017e+00 -1.495437e+00 -3.430829e-01 -1.858043e+00 -2.338649e+00 -5.491812e-01 1.448326e+00 -9.341295e-01 1.683728e+00 2.088150e+00 3.468226e-01 2.185691e-01 -6.288459e-01 1.015237e-01 -5.215570e-01 -5.398289e-01 -1.807364e-01 -6.255149e-01 -4.057463e-01 1.528832e-01 -6.082141e-01 1.581039e-01 7.042717e-01 3.207051e-01 2.608754e-01 4.650858e-02 4.330065e-01 5.218244e-02 -1.205472e-01 -1.638990e-02 -1.214761e-01 + 39 + 1.435677e+01 3.620772e+01 4.154713e+01 7.368201e+01 3.914109e+01 5.095744e+01 5.721074e+01 7.158720e+01 5.121185e+01 5.237827e+01 6.111016e+01 3.016271e+01 2.697743e+00 2.829229e+00 2.780298e+00 3.574182e+00 3.681937e+00 4.520779e+00 3.980299e+00 4.548754e+00 4.149375e+00 4.301161e+00 3.482328e+00 3.333320e+00 2.484705e+00 2.648241e-01 4.429627e-01 4.783122e-01 4.546660e-01 6.555516e-01 6.223528e-01 6.537994e-01 6.466511e-01 7.822043e-01 7.066536e-01 6.080204e-01 5.648678e-01 4.325263e-01 4.490574e-02 + 1.225387e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.233611e-01 3.766389e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.434976e-01 1.565024e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.954304e-01 3.045696e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "f" + + 5 + 2 + 39 + -1.759785e+01 -5.058763e+00 -6.123262e+00 -4.720434e+00 -3.049227e+00 -3.068080e+00 -2.078848e+00 -6.524668e-01 -1.867511e+00 -1.375685e+00 -2.581633e+00 -1.107184e+00 -5.993975e+00 -3.723403e+00 -5.620251e-01 -4.464792e-01 5.667741e-01 2.960626e-01 3.658488e-01 5.530121e-01 4.984039e-01 6.239138e-01 3.639570e-01 4.173750e-01 5.449690e-01 -6.153987e-01 5.952326e-01 -4.280207e-01 -2.101470e-01 -5.498657e-01 -4.660869e-01 -2.614566e-01 -3.880635e-01 -7.467610e-02 -1.115182e-01 6.198873e-02 1.548593e-02 -6.867957e-02 2.331850e-01 + 39 + 3.305215e+01 1.595937e+01 1.492560e+01 1.470877e+01 1.495506e+01 1.852248e+01 1.733333e+01 1.732372e+01 1.797531e+01 1.710042e+01 1.429117e+01 1.275218e+01 2.938798e+00 4.996844e+00 2.657474e+00 3.705108e+00 3.999568e+00 3.194940e+00 3.874380e+00 3.782891e+00 3.318656e+00 3.335618e+00 2.994148e+00 2.902864e+00 2.242244e+00 3.636597e-01 7.127098e-01 5.350640e-01 5.266389e-01 5.973202e-01 5.354620e-01 5.301654e-01 6.120284e-01 5.604264e-01 5.451439e-01 4.992965e-01 4.556990e-01 3.939967e-01 3.864582e-02 + 1.094464e+02 + 3 + 39 + -2.284390e+01 -8.223684e+00 -9.044921e+00 -6.232842e+00 -4.809192e+00 -3.948638e+00 -3.011157e+00 -4.868499e-01 -1.170527e+00 -3.230036e-01 -1.722878e+00 -2.855454e-01 -6.054828e+00 2.197833e-01 -1.415741e-01 -1.133631e-01 -1.275523e-01 -5.790954e-02 -6.057488e-02 -8.073499e-02 -6.310405e-02 2.583342e-02 5.719522e-02 2.015206e-02 -1.548168e-02 5.492193e-02 8.279908e-01 1.606133e-01 1.536487e-01 -9.105752e-02 -1.725768e-02 -5.016857e-02 -1.066037e-01 -8.233915e-02 -9.566649e-02 -7.813213e-02 -5.926898e-02 -9.918127e-02 1.101159e-01 + 39 + 9.769442e+00 1.195264e+01 1.003132e+01 1.134658e+01 1.181706e+01 1.284460e+01 1.344778e+01 1.281641e+01 1.268035e+01 1.248050e+01 1.152691e+01 1.021229e+01 2.027142e+00 2.179430e+00 9.605334e-01 1.115566e+00 1.171506e+00 1.268704e+00 1.336038e+00 1.404443e+00 1.445232e+00 1.416770e+00 1.356570e+00 1.282631e+00 1.131582e+00 1.175145e-01 4.664475e-01 2.303639e-01 2.785289e-01 3.283449e-01 3.294951e-01 3.688638e-01 3.922634e-01 3.639173e-01 3.552549e-01 3.241272e-01 3.213677e-01 2.707222e-01 3.221093e-02 + 8.629430e+01 + 4 + 39 + -1.416866e+01 -6.694981e+00 -7.565853e+00 -7.357311e+00 -5.049794e+00 -4.329532e+00 -3.382519e+00 -1.433111e+00 -1.702719e+00 -7.866829e-01 -2.158893e+00 -1.232765e+00 -4.961192e+00 5.014731e+00 5.992582e-02 1.128597e-01 -1.568367e+00 -1.207251e+00 -5.986066e-01 -1.353231e+00 -4.978475e-01 -6.112495e-01 -4.105482e-01 -9.313807e-02 -4.941875e-01 9.607047e-01 2.839886e-01 -3.204309e-01 -1.382800e-01 -3.968579e-01 -3.597704e-01 -6.900717e-02 -3.702270e-01 7.338865e-02 -8.653809e-02 -3.135617e-02 8.235979e-02 -1.480431e-02 1.578805e-01 + 39 + 6.064658e+01 1.824159e+01 2.420279e+01 2.616740e+01 2.253826e+01 2.585142e+01 2.354372e+01 2.198681e+01 2.067149e+01 1.738999e+01 1.641179e+01 1.390277e+01 3.894108e+00 4.344790e+00 3.590432e+00 5.062328e+00 5.304452e+00 4.570936e+00 5.770029e+00 5.432534e+00 4.205407e+00 4.263587e+00 3.352684e+00 3.554658e+00 2.610907e+00 4.308165e-01 1.167963e+00 4.490556e-01 4.631909e-01 6.106169e-01 6.000620e-01 6.462178e-01 7.013301e-01 6.214094e-01 6.079140e-01 5.276370e-01 4.546129e-01 3.781545e-01 6.332000e-02 + 1.175691e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.316136e-01 4.683864e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.296278e-01 1.703722e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.852787e-01 4.147213e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ao" + + 5 + 2 + 39 + 2.251047e-01 -8.882358e+00 -1.268901e+01 -2.013483e+01 -1.036714e+01 9.588653e-01 -5.790014e+00 -2.137604e+00 -4.305434e+00 -7.370718e-01 -3.360290e-01 -3.391965e+00 -1.096665e+00 1.022831e+00 -6.421044e-01 -9.643496e-01 -1.654035e+00 -1.321535e-01 1.359339e+00 4.740186e-01 -2.384107e-04 -2.061177e-01 -2.108304e-01 4.600282e-01 8.587400e-02 4.600236e-01 -6.101429e-01 1.012828e-01 1.876384e-01 5.746738e-01 3.692364e-01 -1.644293e-01 1.279824e-01 1.083018e-02 4.298045e-02 -9.502867e-02 -4.094764e-02 1.614068e-01 -1.591918e-01 + 39 + 1.282484e+01 4.459204e+01 3.643823e+01 5.897594e+01 7.152586e+01 7.171542e+01 7.741298e+01 6.131623e+01 6.807346e+01 6.595596e+01 6.584135e+01 4.179872e+01 1.767122e+00 2.166229e+00 2.245288e+00 2.173704e+00 3.897468e+00 4.415860e+00 4.012799e+00 4.145360e+00 4.036357e+00 3.913381e+00 3.657274e+00 3.151663e+00 2.894179e+00 2.320334e-01 4.670141e-01 3.942608e-01 3.471892e-01 5.932045e-01 6.769339e-01 6.558307e-01 7.983379e-01 7.027162e-01 7.782882e-01 6.684837e-01 6.377956e-01 4.803505e-01 3.186934e-02 + 1.224826e+02 + 3 + 39 + 7.299427e-01 -9.985993e+00 -1.460991e+01 -2.306850e+01 -8.326141e+00 4.742006e+00 -3.305597e+00 -2.961360e+00 -3.349945e+00 -2.744129e+00 -1.575628e-02 -2.544555e+00 -3.246509e-01 2.618873e-02 -1.459794e-01 -2.316590e-01 2.499927e-01 3.466596e-01 -1.345106e-01 -1.697771e-01 3.116462e-02 8.358453e-02 -1.170103e-02 3.784521e-02 1.936660e-02 1.808629e-03 -3.381155e-02 4.710063e-02 6.801276e-02 2.222445e-01 1.530935e-02 -2.384990e-01 -1.612103e-01 2.505452e-02 2.560094e-02 7.935183e-02 -4.958520e-02 -3.810698e-02 -4.411121e-02 + 39 + 1.087736e+01 4.267975e+01 3.551682e+01 6.632526e+01 8.897339e+01 7.183325e+01 7.389085e+01 5.710970e+01 6.099314e+01 5.949631e+01 5.612991e+01 4.568993e+01 1.051114e+00 1.851689e-01 7.976323e-01 7.892061e-01 1.375117e+00 1.418480e+00 1.569854e+00 1.733306e+00 1.358071e+00 1.421046e+00 1.427033e+00 1.346929e+00 1.254188e+00 1.974948e-02 3.496782e-02 1.094947e-01 1.193011e-01 1.714448e-01 2.225801e-01 2.186677e-01 2.457903e-01 2.292117e-01 2.393470e-01 2.351134e-01 2.248505e-01 2.115021e-01 1.000000e-02 + 9.003870e+01 + 4 + 39 + 8.144379e-02 -1.056159e+01 -1.449498e+01 -1.742682e+01 -6.605819e+00 -1.848662e-01 -6.157303e+00 -1.843256e+00 -3.461576e+00 -7.340382e-01 -7.616338e-01 -3.768347e+00 -1.139167e+00 -5.922960e-01 6.457894e-01 6.054738e-01 2.012689e+00 4.337031e-01 -1.691665e+00 -6.947087e-01 2.383232e-01 1.532107e-01 2.406600e-01 -4.152880e-01 1.453999e-01 -4.442858e-01 -3.595566e-01 2.757670e-01 3.255826e-01 2.876866e-01 1.202905e-02 -1.120991e-01 6.100337e-02 -5.516433e-02 1.413110e-02 -1.100751e-01 -1.235648e-01 1.039813e-01 -1.212023e-01 + 39 + 1.468730e+01 3.746792e+01 3.811610e+01 6.210887e+01 5.986114e+01 7.340744e+01 8.168789e+01 6.314745e+01 7.078859e+01 6.950194e+01 7.745866e+01 5.249984e+01 2.029653e+00 1.841284e+00 3.527459e+00 3.148256e+00 3.259136e+00 4.723660e+00 3.386673e+00 5.061622e+00 4.075581e+00 4.227484e+00 3.699700e+00 3.497142e+00 3.329383e+00 2.226587e-01 3.481934e-01 3.225175e-01 3.035452e-01 5.053177e-01 5.346063e-01 5.943911e-01 7.188562e-01 6.887625e-01 6.940285e-01 6.724408e-01 6.783609e-01 5.597414e-01 2.585321e-02 + 1.226175e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.765256e-01 3.234744e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.631761e-01 1.368239e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.391233e-01 3.608767e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "r" + + 5 + 2 + 39 + 3.307885e+00 -9.426666e+00 -1.623261e+01 -7.580681e+00 -3.413558e+00 -8.710031e+00 -1.585460e+01 -1.670485e+00 -1.902601e+00 -2.846957e+00 -1.082909e+00 1.935497e-01 -1.930044e+00 1.131403e+00 -8.364629e-01 -5.484563e-01 1.473657e-01 -1.030062e-01 -8.218606e-01 -1.535839e+00 7.683578e-01 6.698807e-01 -1.004494e-01 -4.919759e-02 5.384237e-02 3.577048e-01 -7.167013e-01 -2.102269e-01 6.579108e-01 5.792000e-02 -4.326015e-01 4.001787e-02 6.477843e-01 2.761619e-01 -7.118780e-02 1.680365e-02 2.557620e-02 -1.144245e-01 -7.596367e-02 + 39 + 1.258299e+01 3.418637e+01 5.630765e+01 4.059099e+01 4.965901e+01 6.682065e+01 7.971671e+01 8.216067e+01 6.907298e+01 3.843977e+01 3.722926e+01 3.265870e+01 2.302869e+00 3.043909e+00 2.434827e+00 3.246005e+00 3.136929e+00 4.141356e+00 4.339998e+00 5.443490e+00 5.210525e+00 4.183674e+00 3.410430e+00 2.806871e+00 2.278859e+00 2.671134e-01 5.806719e-01 3.263848e-01 4.573051e-01 4.087939e-01 5.363148e-01 6.989414e-01 1.010011e+00 7.724742e-01 6.551826e-01 5.422187e-01 4.521458e-01 4.198282e-01 2.565667e-02 + 1.210139e+02 + 3 + 39 + 2.856418e+00 -1.441163e+01 -1.403921e+01 -5.812833e+00 -6.399738e+00 -1.271514e+01 -1.709857e+01 5.139959e+00 2.271978e-01 -3.493441e+00 -1.350222e+00 -4.101153e-01 -1.028001e+00 -5.082949e-01 -7.505645e-01 1.621106e+00 1.776565e-01 -1.506710e+00 -6.123925e-01 9.509394e-01 1.043623e+00 -3.810209e-01 -4.234842e-01 6.692782e-02 -1.688995e-01 5.943233e-02 -5.396949e-01 3.432972e-01 5.762066e-01 -2.542236e-01 -1.734214e-01 4.926319e-01 8.134189e-01 -4.903797e-01 -4.702938e-01 1.074165e-01 8.075276e-02 -1.202726e-01 -1.263765e-01 + 39 + 8.794625e+00 2.230948e+01 5.999266e+01 4.582182e+01 5.898839e+01 7.800253e+01 1.029160e+02 7.732094e+01 8.295757e+01 4.498067e+01 4.215553e+01 3.323536e+01 1.247136e+00 7.381160e-01 1.854519e+00 2.809521e+00 2.570356e+00 3.364102e+00 3.627534e+00 4.416227e+00 4.492038e+00 3.407072e+00 2.992473e+00 2.826477e+00 2.232834e+00 1.243629e-01 3.493357e-01 1.949393e-01 3.064299e-01 3.798393e-01 5.316914e-01 5.592186e-01 8.148417e-01 6.253156e-01 6.139632e-01 4.815374e-01 4.134555e-01 3.734979e-01 1.627260e-02 + 1.139121e+02 + 4 + 39 + 4.931744e-01 -1.429117e+01 -8.974236e+00 -6.337117e+00 -1.010395e+01 -1.323437e+01 -1.195393e+01 4.838129e+00 -3.160360e+00 -3.915706e+00 -1.510433e+00 -1.032130e+00 -1.434811e+00 -1.436763e+00 7.557493e-01 2.410089e+00 -3.251492e-01 -1.070921e+00 8.239064e-01 1.939938e+00 -1.012880e+00 -1.113988e+00 1.407995e-01 -5.117224e-02 -4.783951e-01 -3.117249e-01 -4.310178e-01 5.325980e-01 2.922672e-02 -2.479953e-01 4.118531e-01 6.157683e-01 1.948524e-01 -5.839016e-01 -3.435631e-02 2.245425e-01 -7.073712e-02 -1.219841e-01 -1.309589e-01 + 39 + 1.199125e+01 3.100128e+01 6.672738e+01 5.522567e+01 6.562051e+01 9.056096e+01 9.835684e+01 7.248053e+01 8.975609e+01 5.219272e+01 4.913890e+01 3.543001e+01 2.122239e+00 1.832063e+00 3.611482e+00 3.470930e+00 4.619292e+00 4.899239e+00 4.378382e+00 5.706629e+00 5.725571e+00 4.541598e+00 3.568983e+00 3.524627e+00 2.896764e+00 3.532198e-01 3.869484e-01 3.434613e-01 4.179122e-01 5.845961e-01 6.702951e-01 7.891983e-01 1.012108e+00 8.579475e-01 7.632688e-01 6.392938e-01 6.092157e-01 4.823774e-01 2.911810e-02 + 1.256369e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.289274e-01 4.710726e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 4.946904e-01 5.053096e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.264577e-01 6.735423e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "t" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.849423e+01 -7.241725e+00 -3.852108e+00 -7.774209e+00 -5.596538e+00 -6.714453e+00 -9.832263e-01 9.414796e-01 -1.563661e+00 -1.499532e+00 -2.413518e+00 4.308457e-02 -4.360301e+00 3.205270e+00 -2.987491e-01 4.605551e-01 5.633189e-01 -7.702059e-01 -9.046050e-01 -1.309110e+00 -3.433589e-01 -4.854245e-01 -5.753533e-01 -9.350238e-01 -7.007295e-01 1.608566e-01 7.797504e-01 -1.081257e-01 -1.004669e-01 -1.172639e-01 -1.605169e-01 1.594381e-01 -5.701525e-01 -1.777309e-01 -1.314189e-01 2.648882e-02 9.213286e-02 -1.501423e-01 2.520365e-02 + 39 + 2.586847e+01 2.857648e+01 2.643202e+01 2.715106e+01 2.886203e+01 2.844051e+01 3.366603e+01 2.828145e+01 2.643406e+01 2.176502e+01 1.952646e+01 1.734786e+01 1.966420e+00 4.456964e+00 2.946646e+00 4.160259e+00 3.609068e+00 4.854924e+00 4.671083e+00 4.709596e+00 3.575860e+00 3.738955e+00 3.158588e+00 3.078765e+00 2.338724e+00 3.986704e-01 5.575365e-01 5.253838e-01 5.624387e-01 6.634787e-01 6.663375e-01 7.586389e-01 7.882815e-01 7.040000e-01 6.288448e-01 5.689353e-01 5.550729e-01 4.743002e-01 1.079093e-01 + 1.179635e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "uw" + + 5 + 2 + 39 + -4.089445e+00 -9.668437e+00 3.925746e+00 -7.844073e+00 -1.520436e+01 -1.083072e+01 -1.452013e+01 -9.903376e-01 -9.134157e+00 -4.141346e+00 -5.647581e-01 -2.698728e+00 -1.872703e+00 1.007937e+00 -6.468939e-01 -3.708944e-01 -4.441537e-01 -3.484491e-01 1.882694e-01 -1.297663e+00 1.291630e-01 -4.567895e-02 3.035050e-01 4.227093e-01 -3.066169e-01 2.092607e-01 -6.621019e-01 4.370346e-01 -4.031270e-01 -1.924334e-02 5.862733e-01 4.190643e-01 6.951845e-01 -2.606776e-01 1.984040e-01 2.507419e-01 -9.000196e-02 1.867643e-02 -1.453363e-01 + 39 + 1.409231e+01 2.397873e+01 6.307664e+01 6.780535e+01 4.419759e+01 6.646230e+01 6.020684e+01 6.643138e+01 6.556490e+01 6.142342e+01 6.013081e+01 3.283908e+01 1.080060e+00 1.787298e+00 1.826701e+00 3.387232e+00 2.728112e+00 4.432955e+00 3.714463e+00 4.225864e+00 4.279329e+00 3.628401e+00 3.794723e+00 2.867531e+00 2.415060e+00 8.483582e-02 4.344866e-01 2.896997e-01 4.931350e-01 5.782449e-01 6.093674e-01 6.953346e-01 7.009947e-01 8.471893e-01 8.071272e-01 6.159238e-01 5.679414e-01 4.535808e-01 1.377630e-02 + 1.182529e+02 + 3 + 39 + -3.055546e+00 -8.372910e+00 6.251654e-01 -8.915179e+00 -1.318085e+01 -8.836787e+00 -1.454949e+01 -2.609376e+00 -8.258515e+00 -2.402473e+00 -3.710243e-01 -3.471562e+00 -1.978966e+00 9.313247e-02 2.548211e-01 -3.622762e-01 -1.434568e-02 3.541122e-01 2.705759e-01 6.695826e-02 -3.119532e-01 2.047177e-02 1.816304e-01 -9.456547e-02 -1.079896e-01 -8.276885e-02 -1.350741e-01 1.286683e-01 -5.853129e-03 7.580555e-02 1.102877e-01 9.047364e-03 2.211122e-01 -7.188703e-02 5.161554e-02 -2.596254e-02 -8.679281e-02 3.531554e-02 -5.303317e-02 + 39 + 1.312590e+01 2.693354e+01 6.002624e+01 6.610252e+01 4.434223e+01 8.036263e+01 6.681509e+01 6.880780e+01 6.296121e+01 6.469646e+01 7.160105e+01 3.801289e+01 1.413365e+00 2.880540e-01 6.002377e-01 1.207954e+00 1.278541e+00 1.428996e+00 1.789752e+00 1.728710e+00 1.933720e+00 1.849333e+00 1.733879e+00 1.487424e+00 1.247332e+00 2.370970e-02 1.025496e-01 1.537818e-01 1.733786e-01 2.076203e-01 2.956639e-01 3.148645e-01 4.087391e-01 3.637975e-01 3.571201e-01 3.180236e-01 2.832857e-01 2.371430e-01 1.000000e-02 + 9.664216e+01 + 4 + 39 + -4.125716e+00 -6.077404e+00 -5.350816e-01 -7.647099e+00 -1.103360e+01 -8.534043e+00 -1.281087e+01 -4.707764e+00 -8.428649e+00 -2.254760e+00 -1.781890e+00 -2.983600e+00 -3.005796e+00 -1.072047e+00 1.192634e+00 -7.591659e-01 4.944581e-01 1.334846e+00 4.766040e-01 1.623603e+00 -4.123034e-01 7.411889e-01 4.706568e-02 -4.992494e-01 8.702019e-02 -4.732303e-01 -5.075150e-01 8.836146e-02 -1.744362e-03 7.717600e-02 1.668410e-01 1.405139e-01 3.841894e-01 2.528359e-01 1.085825e-01 -4.751652e-02 -2.833574e-02 4.575609e-02 -7.878914e-02 + 39 + 2.187823e+01 2.896630e+01 7.011171e+01 6.275089e+01 4.930872e+01 7.559881e+01 6.055956e+01 5.845877e+01 5.964304e+01 6.438210e+01 6.853106e+01 3.934272e+01 2.901818e+00 2.612103e+00 3.351963e+00 2.790137e+00 3.907587e+00 4.522754e+00 5.359142e+00 5.155845e+00 5.617016e+00 5.138992e+00 5.045203e+00 4.291455e+00 3.200858e+00 2.643847e-01 3.917344e-01 4.586678e-01 4.478595e-01 4.956002e-01 6.624668e-01 7.861850e-01 7.627246e-01 7.173598e-01 7.714761e-01 7.529341e-01 6.504087e-01 5.220656e-01 4.666304e-02 + 1.266239e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.280276e-01 5.719724e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.003018e-01 1.996982e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.801057e-01 4.198943e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "w" + + 5 + 2 + 39 + -2.378053e-01 -1.109774e-01 -8.506446e+00 -1.453994e+01 -1.091955e+01 -2.616458e+00 -5.683800e+00 -4.864906e+00 -9.326594e+00 -2.713353e+00 -1.656283e+00 -2.080127e+00 -3.825176e+00 1.686243e+00 6.516797e-01 -8.483734e-02 -1.878202e+00 -1.450031e+00 3.362607e-01 1.301119e-02 -2.050979e-01 -7.175109e-01 -4.048690e-01 3.995565e-02 -4.616048e-02 5.570403e-01 -4.548917e-01 -6.177335e-01 4.084471e-02 1.418724e-01 1.453525e-01 -1.393273e-01 -2.036295e-01 3.049075e-01 4.087425e-01 2.741595e-01 1.983237e-02 -5.041340e-03 1.147272e-02 + 39 + 1.800785e+01 3.055625e+01 2.643671e+01 5.079036e+01 4.221148e+01 4.105965e+01 4.492493e+01 3.997179e+01 4.681069e+01 3.884879e+01 4.492467e+01 2.572182e+01 3.713457e+00 3.663174e+00 3.486735e+00 3.047116e+00 4.540174e+00 3.898961e+00 4.639326e+00 6.621083e+00 4.552141e+00 4.761693e+00 4.481720e+00 4.068394e+00 2.849980e+00 7.301731e-01 4.985139e-01 4.733539e-01 4.928364e-01 7.149244e-01 8.498603e-01 7.945268e-01 8.843251e-01 7.790362e-01 8.391967e-01 7.627903e-01 6.664427e-01 5.200801e-01 4.809487e-02 + 1.248906e+02 + 3 + 39 + 2.371805e+00 -8.968273e-01 -8.805236e+00 -2.047367e+01 -1.528434e+01 -9.788148e-02 -4.880797e+00 -2.659530e+00 -8.889580e+00 -3.842099e+00 -5.303314e-01 -1.665236e+00 -2.203731e+00 1.348303e-01 -1.181935e+00 -4.193243e-01 -5.836908e-01 3.791379e-01 6.608529e-01 -5.907875e-01 -2.212175e-01 5.432152e-02 6.451771e-01 7.037480e-01 2.139329e-01 3.338451e-01 -3.338905e-01 -4.437107e-01 -9.785363e-03 5.196973e-01 5.035273e-01 -1.946498e-01 -3.298631e-01 -3.916745e-02 3.139046e-01 3.472944e-01 4.192046e-02 -1.229580e-01 -4.068096e-02 + 39 + 6.583491e+00 2.961354e+01 3.321679e+01 4.965163e+01 5.089474e+01 5.438437e+01 4.867004e+01 4.873531e+01 5.326575e+01 4.511612e+01 4.763435e+01 3.135026e+01 1.567766e+00 4.958878e-01 2.530643e+00 1.707715e+00 2.549433e+00 3.525180e+00 3.413998e+00 3.886882e+00 3.183326e+00 3.018134e+00 3.811808e+00 3.214622e+00 2.372465e+00 1.177083e-01 2.655618e-01 2.445392e-01 3.056711e-01 5.319852e-01 4.705825e-01 7.148523e-01 6.574379e-01 6.464192e-01 7.650217e-01 6.136193e-01 6.112607e-01 5.384944e-01 2.965588e-02 + 1.127532e+02 + 4 + 39 + 8.710419e-01 -9.089808e+00 -1.019561e+01 -1.707331e+01 -8.498037e+00 -1.007398e+00 -1.221477e+01 -5.298457e+00 -6.790123e+00 3.460774e+00 1.695715e+00 -3.345761e+00 -1.240068e+00 -7.591020e-01 -1.852399e+00 7.469120e-01 1.694401e+00 5.825800e-01 -2.108889e+00 -1.604142e+00 1.229970e+00 2.162508e+00 8.168880e-01 -9.617290e-01 -1.070006e+00 1.872826e-01 -3.209210e-01 4.302254e-01 4.643000e-01 3.157178e-01 -4.336763e-01 -5.083842e-01 6.546314e-01 5.931813e-01 1.051688e-01 -7.864856e-01 -5.740520e-01 1.215414e-01 -1.377818e-01 + 39 + 8.562952e+00 2.794992e+01 4.406792e+01 6.636012e+01 4.708761e+01 8.264172e+01 6.919739e+01 5.683970e+01 6.552644e+01 6.925877e+01 8.718914e+01 4.017579e+01 1.437049e+00 4.900264e-01 1.495693e+00 2.657313e+00 2.705834e+00 3.744826e+00 4.371620e+00 4.576042e+00 4.735920e+00 3.260056e+00 5.074342e+00 3.570971e+00 3.013052e+00 5.249143e-02 2.182006e-01 2.840270e-01 3.356774e-01 5.816811e-01 6.465858e-01 8.484333e-01 9.053243e-01 7.370688e-01 1.011893e+00 8.042352e-01 8.178109e-01 6.994671e-01 1.924103e-02 + 1.182573e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.477335e-01 4.522665e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.975146e-01 3.024854e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.473197e-01 4.526803e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ah" + + 5 + 2 + 39 + -2.384203e+00 -1.298434e+01 -9.327827e+00 -1.574190e+01 -8.587043e+00 -3.656979e+00 -1.010273e+01 -2.895270e-02 3.123649e-01 1.706276e-01 -4.227306e+00 -5.666430e+00 -8.953738e-01 1.008065e+00 -1.665291e+00 -6.258246e-01 -1.268629e+00 1.190243e-02 6.721819e-01 -5.870072e-01 6.375433e-01 9.512351e-01 2.733177e-02 -4.686837e-01 -7.502646e-01 5.138501e-01 -6.873826e-01 5.430055e-01 2.065547e-01 5.440814e-01 2.982608e-01 -6.759894e-02 4.379547e-01 -1.969007e-01 -2.986368e-01 -1.147185e-01 1.037838e-01 2.765874e-01 -2.174453e-01 + 39 + 1.180070e+01 2.639503e+01 4.108421e+01 4.457001e+01 4.898495e+01 8.232156e+01 6.335782e+01 5.839138e+01 5.587996e+01 6.002249e+01 7.401813e+01 4.130536e+01 1.532897e+00 2.850214e+00 2.255725e+00 2.568412e+00 3.721409e+00 3.758389e+00 4.697872e+00 4.287052e+00 4.262446e+00 3.936812e+00 3.742255e+00 3.589975e+00 2.948183e+00 2.668449e-01 5.048035e-01 3.760526e-01 4.042455e-01 5.557792e-01 6.022546e-01 8.023492e-01 7.765383e-01 7.677380e-01 6.805099e-01 6.242718e-01 7.285756e-01 5.422150e-01 3.226386e-02 + 1.220250e+02 + 3 + 39 + -2.392046e+00 -1.417937e+01 -1.025648e+01 -1.624990e+01 -6.729639e+00 -2.993178e+00 -9.425033e+00 6.173980e-01 1.086288e+00 -8.816276e-01 -5.447381e+00 -5.854043e+00 -5.731584e-01 -7.990707e-03 3.178644e-01 9.469333e-02 1.560344e-01 9.219205e-02 -2.327672e-01 -3.420415e-02 -1.480396e-01 -8.290054e-02 -2.131944e-02 -6.678024e-02 6.336602e-02 -9.578308e-02 -1.092015e-01 4.869184e-01 2.358468e-01 3.323434e-01 -7.980830e-02 -2.236726e-01 5.305909e-02 -2.536107e-01 -3.335108e-01 2.748397e-02 1.187604e-01 1.724341e-01 -1.422758e-01 + 39 + 1.002368e+01 2.432681e+01 3.382311e+01 4.345953e+01 4.821678e+01 7.687334e+01 6.457238e+01 5.189580e+01 5.872079e+01 6.439259e+01 6.223120e+01 4.383935e+01 1.140385e+00 3.780159e-01 9.457923e-01 1.297549e+00 1.476699e+00 1.721507e+00 2.415527e+00 2.042959e+00 2.162034e+00 1.895218e+00 1.800802e+00 1.927282e+00 1.674584e+00 4.705211e-02 1.199876e-01 2.340738e-01 1.994090e-01 3.065397e-01 3.229315e-01 3.779621e-01 4.517278e-01 4.606757e-01 4.138252e-01 3.763147e-01 3.404127e-01 3.393291e-01 1.426716e-02 + 1.006490e+02 + 4 + 39 + -2.382109e+00 -1.013032e+01 -8.142673e+00 -1.389068e+01 -7.866870e+00 -5.838463e+00 -1.010165e+01 -1.364004e+00 -8.016328e-01 1.510269e-01 -4.162044e+00 -4.612607e+00 -1.737438e+00 -1.177923e+00 2.611525e+00 1.205460e+00 2.202505e+00 4.488875e-01 -4.638529e-01 6.539987e-01 -1.305030e+00 -1.446020e+00 -3.957059e-01 1.715232e-01 6.228715e-01 -8.805453e-01 -6.607659e-01 3.203505e-01 1.545948e-01 4.142892e-01 2.311660e-01 2.776657e-01 4.083714e-01 -1.349422e-01 -1.895593e-01 -1.531065e-01 -2.550566e-02 4.576441e-02 -1.752300e-01 + 39 + 1.268206e+01 3.161074e+01 3.999792e+01 4.907661e+01 4.590785e+01 7.729543e+01 6.227335e+01 5.883860e+01 5.714238e+01 6.549670e+01 6.877774e+01 4.259456e+01 2.091597e+00 2.959626e+00 2.687311e+00 2.709276e+00 3.917742e+00 4.300757e+00 4.823860e+00 5.112659e+00 5.239483e+00 4.843954e+00 4.795657e+00 4.296480e+00 3.486060e+00 2.904137e-01 4.428510e-01 5.471367e-01 4.078152e-01 6.694868e-01 5.757089e-01 7.833517e-01 7.099382e-01 9.327937e-01 6.976520e-01 7.370598e-01 7.338661e-01 5.455841e-01 5.627012e-02 + 1.255712e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.781988e-01 5.218012e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.585764e-01 2.414236e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.706824e-01 4.293176e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "n" + + 5 + 2 + 39 + -4.173611e+00 -3.370436e+00 -2.239525e+00 -5.754709e+00 -1.100467e+01 -8.096184e+00 -3.648773e+00 -8.349697e+00 -9.239568e+00 -7.876282e-01 -6.775628e+00 -3.990673e+00 -4.136813e+00 2.131780e-02 1.264075e+00 2.606204e-01 9.241176e-01 -1.064779e-01 -1.105372e-01 8.433201e-01 -1.945086e+00 -8.872706e-01 6.706058e-01 -4.913497e-01 -6.075297e-02 -2.707001e-01 -1.730303e-01 -2.589595e-01 -4.675633e-02 -3.305193e-01 1.015970e-01 1.562167e-01 -2.587543e-01 6.190946e-01 3.320381e-01 -2.792731e-01 1.837806e-01 7.935039e-02 5.914706e-02 + 39 + 8.326270e+00 2.691922e+01 3.029107e+01 4.900280e+01 4.427206e+01 4.703382e+01 5.038797e+01 7.191138e+01 6.206874e+01 5.499498e+01 5.182435e+01 4.444766e+01 1.945055e+00 8.884823e-01 2.176347e+00 2.483506e+00 2.682933e+00 2.787548e+00 3.095493e+00 3.584273e+00 5.679301e+00 4.143991e+00 3.210437e+00 2.684989e+00 2.206512e+00 1.518709e-01 1.958946e-01 2.893623e-01 3.826152e-01 4.219200e-01 4.932129e-01 4.989847e-01 5.450682e-01 7.955703e-01 6.304689e-01 5.321527e-01 4.622513e-01 4.158604e-01 1.439603e-02 + 1.130650e+02 + 3 + 39 + -3.968008e+00 -1.646686e+00 -2.215637e+00 -4.943655e+00 -1.171806e+01 -8.376256e+00 -2.856408e+00 -1.079985e+01 -1.049488e+01 -1.504948e-01 -7.393038e+00 -4.127079e+00 -4.264421e+00 -5.784777e-01 2.951783e-01 1.649091e-01 -5.419636e-02 5.818164e-01 2.123398e-01 -4.105967e-01 4.612277e-01 2.464691e-01 -5.051419e-01 2.062386e-01 9.061617e-02 -1.308152e-01 -4.885805e-01 -7.174881e-01 -1.079680e-01 -6.038970e-01 3.109166e-01 3.036421e-01 -4.914800e-01 1.324325e+00 7.364231e-01 -4.256114e-01 3.946224e-01 1.414978e-01 9.121803e-02 + 39 + 8.553438e+00 2.930980e+01 2.804076e+01 4.870023e+01 4.416180e+01 4.733860e+01 5.427853e+01 7.114278e+01 6.112367e+01 5.666138e+01 5.884408e+01 4.919191e+01 1.925217e+00 1.561065e+00 3.369333e+00 2.081892e+00 3.045504e+00 3.171586e+00 2.828886e+00 3.585076e+00 5.511392e+00 3.954414e+00 3.047210e+00 2.662725e+00 2.439824e+00 2.302697e-01 4.308361e-01 4.802664e-01 6.600280e-01 6.801986e-01 8.145006e-01 8.069484e-01 9.443831e-01 1.107355e+00 1.068700e+00 8.824259e-01 7.788248e-01 6.609712e-01 3.401092e-02 + 1.218221e+02 + 4 + 39 + -6.697446e+00 -3.234138e+00 -2.008603e+00 -6.405807e+00 -8.916270e+00 -7.114817e+00 -5.538602e+00 -5.301977e+00 -7.361317e+00 -2.924337e+00 -5.900564e+00 -3.616803e+00 -4.624671e+00 -1.289870e+00 -8.941665e-01 -2.698314e-01 -9.463536e-01 8.088672e-01 7.439819e-01 -6.712482e-01 2.176902e+00 1.327724e+00 -6.659224e-01 7.048733e-01 3.105567e-01 3.972982e-02 -2.004641e-01 -3.554881e-01 -2.017921e-01 -2.699706e-01 -6.703168e-02 1.646377e-01 9.745026e-02 3.154702e-01 2.419935e-01 1.405159e-01 1.509853e-01 1.012353e-01 9.757176e-02 + 39 + 2.198848e+01 4.490345e+01 3.313978e+01 5.115663e+01 4.537062e+01 4.147235e+01 4.832558e+01 6.384851e+01 5.879162e+01 4.545790e+01 4.046808e+01 3.633840e+01 4.502237e+00 4.302024e+00 4.135014e+00 3.879684e+00 4.755993e+00 5.127475e+00 4.337250e+00 5.373229e+00 6.866387e+00 5.695043e+00 4.700459e+00 4.232950e+00 3.375184e+00 4.484453e-01 5.056077e-01 6.217130e-01 4.810100e-01 6.278053e-01 6.667209e-01 6.293745e-01 7.423610e-01 1.061627e+00 8.483686e-01 6.779441e-01 6.092845e-01 5.030655e-01 4.554177e-02 + 1.276333e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.967619e-01 4.032381e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.567837e-01 6.432163e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.566752e-01 6.433249e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "td" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.849423e+01 -7.241725e+00 -3.852108e+00 -7.774209e+00 -5.596538e+00 -6.714453e+00 -9.832263e-01 9.414796e-01 -1.563661e+00 -1.499532e+00 -2.413518e+00 4.308457e-02 -4.360301e+00 3.205270e+00 -2.987491e-01 4.605551e-01 5.633189e-01 -7.702059e-01 -9.046050e-01 -1.309110e+00 -3.433589e-01 -4.854245e-01 -5.753533e-01 -9.350238e-01 -7.007295e-01 1.608566e-01 7.797504e-01 -1.081257e-01 -1.004669e-01 -1.172639e-01 -1.605169e-01 1.594381e-01 -5.701525e-01 -1.777309e-01 -1.314189e-01 2.648882e-02 9.213286e-02 -1.501423e-01 2.520365e-02 + 39 + 2.586847e+01 2.857648e+01 2.643202e+01 2.715106e+01 2.886203e+01 2.844051e+01 3.366603e+01 2.828145e+01 2.643406e+01 2.176502e+01 1.952646e+01 1.734786e+01 1.966420e+00 4.456964e+00 2.946646e+00 4.160259e+00 3.609068e+00 4.854924e+00 4.671083e+00 4.709596e+00 3.575860e+00 3.738955e+00 3.158588e+00 3.078765e+00 2.338724e+00 3.986704e-01 5.575365e-01 5.253838e-01 5.624387e-01 6.634787e-01 6.663375e-01 7.586389e-01 7.882815e-01 7.040000e-01 6.288448e-01 5.689353e-01 5.550729e-01 4.743002e-01 1.079093e-01 + 1.179635e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "d" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -1.152951e+01 -5.399796e+00 -6.517791e-01 -9.477132e+00 -9.344363e+00 -1.007641e+01 -7.042903e+00 -1.769197e+00 -3.181676e+00 -2.343513e+00 -2.434306e+00 -3.189108e-01 -3.197309e+00 2.217976e+00 -4.923455e-01 4.969337e-01 -7.743727e-01 -2.096328e+00 -1.672876e+00 -1.672562e+00 5.953589e-01 1.171352e-01 2.334771e-01 -2.291614e-01 8.859739e-02 7.501148e-01 4.363321e-01 2.990309e-01 -8.327494e-02 6.537685e-01 2.598653e-01 5.104223e-01 1.562919e-02 -1.481818e-01 -1.713700e-01 -4.109250e-02 -2.463635e-01 -3.344376e-01 -2.720208e-01 + 39 + 4.017448e+01 3.531164e+01 4.180549e+01 4.297855e+01 4.413027e+01 4.126839e+01 4.578101e+01 3.716766e+01 3.787133e+01 2.461274e+01 2.270850e+01 1.892219e+01 2.757050e+00 5.308168e+00 4.370759e+00 5.453950e+00 5.825969e+00 6.794315e+00 5.493189e+00 6.508540e+00 5.828861e+00 5.591875e+00 4.210355e+00 4.437317e+00 3.253027e+00 4.207090e-01 4.096860e-01 8.217536e-01 5.702770e-01 7.429511e-01 6.725056e-01 6.955692e-01 7.456657e-01 7.409103e-01 7.124133e-01 5.715035e-01 5.341341e-01 4.402450e-01 4.941485e-02 + 1.254565e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "b" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -3.819295e+00 -6.528706e+00 -5.770813e+00 -1.168575e+01 -9.318489e+00 -6.359237e+00 -7.946378e+00 -3.686001e+00 -3.448070e+00 -6.829492e-01 -5.960523e-01 -1.691274e+00 -2.429262e+00 2.646140e+00 -2.225971e+00 -6.096498e-01 -3.535836e+00 -2.553553e+00 -5.970588e-01 -1.443804e+00 4.112320e-01 -3.958701e-02 6.347749e-01 3.746856e-01 -4.996296e-02 1.460733e+00 -2.696480e-01 5.214859e-01 2.808807e-01 5.874565e-01 4.376685e-01 4.965522e-01 1.834408e-01 -5.584493e-02 -2.780818e-01 -2.229132e-01 -2.634228e-01 -2.200621e-01 -3.481527e-01 + 39 + 2.636506e+01 2.655502e+01 6.535246e+01 6.702452e+01 3.607483e+01 5.997146e+01 4.105447e+01 3.601876e+01 3.894215e+01 3.317067e+01 3.330225e+01 2.243501e+01 1.939805e+00 4.262395e+00 5.653009e+00 9.088739e+00 7.294497e+00 6.469121e+00 7.895753e+00 7.793791e+00 7.528284e+00 7.715783e+00 5.431164e+00 5.411783e+00 3.823601e+00 3.547706e-01 4.002149e-01 3.971212e-01 3.799352e-01 5.654340e-01 4.423485e-01 5.589233e-01 5.432251e-01 6.755288e-01 6.322625e-01 5.420268e-01 4.719928e-01 3.990782e-01 4.128263e-02 + 1.254401e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "y" + + 5 + 2 + 39 + -9.993198e+00 -2.697124e+00 1.155856e+01 -1.183422e+01 -1.442782e+01 -6.150234e+00 -9.545994e+00 -4.802236e+00 -1.118147e+01 -4.496890e+00 -3.053552e+00 -2.735646e+00 -3.651329e+00 8.841969e-01 -3.970279e-01 1.658467e+00 -7.007014e-01 -1.526501e+00 -1.429254e-01 -9.180406e-01 1.144140e-01 -9.196979e-01 -3.860103e-01 2.962167e-01 -1.640297e-01 3.975992e-01 -8.539741e-02 -3.868594e-01 -7.545833e-01 2.668845e-01 1.507422e-01 -1.632344e-01 2.577997e-01 3.226092e-01 3.184806e-01 2.052089e-01 1.385121e-01 1.026795e-01 -3.039392e-03 + 39 + 1.795949e+01 3.897855e+01 3.580877e+01 7.740948e+01 4.451903e+01 5.773201e+01 4.107566e+01 5.695743e+01 3.964878e+01 4.822846e+01 4.896882e+01 2.750134e+01 3.253895e+00 4.076579e+00 3.207672e+00 4.262156e+00 3.797954e+00 5.358807e+00 4.964362e+00 4.415706e+00 3.864410e+00 4.080986e+00 4.180301e+00 2.978958e+00 2.259292e+00 3.726760e-01 4.240220e-01 3.264923e-01 4.877972e-01 6.657839e-01 8.040920e-01 7.465873e-01 6.109810e-01 6.528417e-01 5.926858e-01 5.352865e-01 4.541734e-01 3.575664e-01 2.887282e-02 + 1.218937e+02 + 3 + 39 + -8.810253e+00 -5.186257e+00 1.337016e+01 -1.165393e+01 -1.853770e+01 -6.979693e+00 -9.385159e+00 -4.813743e+00 -1.246442e+01 -3.644641e+00 -1.967572e+00 -3.123225e+00 -2.631900e+00 4.725603e-01 -8.082513e-01 -4.930348e-01 6.408682e-01 -6.973953e-01 -9.214833e-01 1.692197e-01 5.688624e-01 -2.573209e-01 1.048504e-01 4.967539e-01 8.740813e-02 1.843331e-01 2.857818e-02 -6.145630e-02 -5.353569e-01 2.101047e-01 3.429663e-01 -2.368303e-01 4.161731e-03 2.205281e-01 2.394727e-01 -3.487356e-02 -1.790517e-02 8.636372e-02 -2.373333e-02 + 39 + 1.026830e+01 3.104517e+01 3.862315e+01 8.113662e+01 3.509373e+01 5.030579e+01 4.418841e+01 5.971267e+01 4.366038e+01 5.905164e+01 5.335320e+01 2.870698e+01 1.591087e+00 7.221052e-01 1.118819e+00 1.523140e+00 1.388651e+00 1.544365e+00 2.459841e+00 2.222335e+00 2.353085e+00 1.799127e+00 1.709734e+00 1.476081e+00 1.124228e+00 6.457179e-02 1.594819e-01 1.625363e-01 3.100880e-01 2.796455e-01 4.922843e-01 3.814919e-01 4.004836e-01 3.442520e-01 4.275779e-01 3.839713e-01 2.876708e-01 2.308119e-01 1.048373e-02 + 1.000857e+02 + 4 + 39 + -5.470385e+00 -1.005392e+01 6.738904e+00 -6.757406e+00 -1.878450e+01 -1.365212e+01 -9.264842e+00 1.825015e+00 -1.119589e+01 -4.951965e+00 9.602569e-01 -1.081591e+00 -1.850759e+00 9.566208e-01 -8.044767e-01 -2.552999e+00 6.741331e-01 1.375785e+00 -1.131745e+00 -1.151983e+00 1.336728e+00 1.608716e+00 -2.693110e-01 -3.100187e-01 2.850730e-01 1.459938e-01 -6.854884e-02 3.320549e-01 -2.783335e-01 -3.351806e-01 6.702982e-01 6.638604e-01 -2.397092e-01 -5.401049e-01 4.305266e-01 2.421445e-01 -3.588368e-01 -2.376648e-01 -7.984772e-02 + 39 + 1.074896e+01 2.493872e+01 4.828393e+01 6.368084e+01 3.649028e+01 5.470821e+01 6.242529e+01 5.682482e+01 6.268538e+01 6.029321e+01 4.503817e+01 2.657187e+01 1.627798e+00 5.767472e-01 1.092799e+00 2.129613e+00 1.966847e+00 2.217908e+00 3.081995e+00 3.341589e+00 3.269991e+00 3.078043e+00 2.865728e+00 2.095332e+00 1.950199e+00 4.487712e-02 1.402963e-01 1.671292e-01 3.648795e-01 3.461221e-01 4.491781e-01 5.503042e-01 6.271612e-01 5.583690e-01 5.557126e-01 5.671193e-01 3.948530e-01 3.224156e-01 1.000000e-02 + 1.065594e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.592138e-01 4.407862e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.171683e-01 2.828318e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.419661e-01 4.580339e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ae" + + 5 + 2 + 39 + -4.760504e+00 -1.482006e+01 -4.214446e+00 -1.343536e+01 -1.413163e+01 -7.847695e+00 -3.238632e+00 4.578210e+00 -2.170470e+00 -2.941341e+00 -5.086074e+00 -4.194782e+00 -9.832021e-01 2.985460e-01 -1.515890e+00 -1.569858e-01 -7.582392e-01 -3.650464e-01 4.696392e-01 6.600512e-01 8.884499e-01 1.778245e-01 -5.287296e-01 -3.462710e-01 -2.212078e-01 4.291781e-01 -4.328249e-01 4.544944e-01 -6.873933e-02 3.458443e-01 4.860729e-01 2.574126e-01 1.423636e-01 -3.648689e-01 -1.087759e-01 1.452681e-02 9.669956e-02 1.229868e-01 -1.863454e-01 + 39 + 1.369238e+01 2.960531e+01 4.794776e+01 4.703376e+01 4.988228e+01 5.169176e+01 6.601340e+01 5.769418e+01 6.981433e+01 4.328954e+01 4.309315e+01 3.259449e+01 1.747713e+00 1.423062e+00 1.989513e+00 2.139397e+00 2.333353e+00 2.881002e+00 2.635206e+00 3.417785e+00 2.970266e+00 2.790669e+00 2.413098e+00 2.180683e+00 2.134803e+00 1.994961e-01 3.470515e-01 3.189557e-01 3.061356e-01 4.006336e-01 4.611997e-01 5.019132e-01 5.788556e-01 5.024021e-01 5.286076e-01 4.627354e-01 4.296885e-01 3.662798e-01 2.878356e-02 + 1.123462e+02 + 3 + 39 + -4.948763e+00 -1.626587e+01 -5.561300e+00 -1.304880e+01 -1.267073e+01 -6.033389e+00 -9.986303e-01 4.153447e+00 -2.389027e+00 -4.805169e+00 -5.657287e+00 -4.100540e+00 -6.099801e-01 6.103691e-02 -2.796368e-02 -2.958711e-01 1.209683e-01 3.086838e-01 4.317705e-02 -4.854421e-02 -3.554750e-02 3.691936e-02 -1.079983e-01 -1.134003e-01 -2.420772e-02 -1.737031e-02 4.570439e-02 2.136319e-01 5.360766e-03 6.662438e-02 2.544462e-02 -1.115171e-01 -1.772221e-01 -1.008363e-01 -1.506258e-02 1.313343e-01 5.317792e-02 -6.995020e-03 -5.149506e-02 + 39 + 1.204754e+01 2.776356e+01 4.994287e+01 4.385696e+01 5.457005e+01 4.970939e+01 5.773195e+01 5.807491e+01 7.624288e+01 3.890083e+01 3.900058e+01 3.703259e+01 1.286784e+00 2.406123e-01 6.195631e-01 9.071499e-01 7.948526e-01 1.198202e+00 1.237155e+00 1.441318e+00 1.333501e+00 1.221534e+00 1.173317e+00 1.073874e+00 9.410237e-01 1.834509e-02 4.097152e-02 1.159960e-01 1.311492e-01 1.435653e-01 1.891482e-01 1.882970e-01 2.199672e-01 2.369592e-01 2.099968e-01 1.921561e-01 1.937166e-01 1.721170e-01 1.000000e-02 + 8.508922e+01 + 4 + 39 + -3.669199e+00 -1.376960e+01 -7.165896e+00 -1.145909e+01 -1.076422e+01 -8.244110e+00 -3.926257e+00 3.775639e+00 -1.787987e+00 -3.078651e+00 -5.623158e+00 -4.439575e+00 -1.382422e+00 -4.259551e-01 2.307781e+00 5.252068e-01 1.229176e+00 6.156303e-01 -3.053592e-01 -5.805377e-01 -1.161610e+00 -6.563492e-01 7.334683e-01 4.950378e-01 1.415139e-01 -6.974384e-01 -5.382434e-01 4.835768e-01 2.355375e-01 3.505446e-01 2.511742e-01 2.711401e-01 1.833350e-01 -3.822440e-01 -2.177129e-01 6.519116e-03 1.203008e-01 1.064291e-01 -2.086004e-01 + 39 + 1.167485e+01 3.178764e+01 4.773876e+01 4.067141e+01 4.962703e+01 5.644986e+01 6.761678e+01 6.224295e+01 7.480271e+01 5.062434e+01 4.981819e+01 3.870213e+01 1.861872e+00 2.485493e+00 2.902735e+00 2.848241e+00 3.165737e+00 3.780024e+00 3.877965e+00 4.258890e+00 4.899519e+00 4.622909e+00 3.315971e+00 3.268384e+00 2.997549e+00 2.804869e-01 4.153253e-01 4.362791e-01 4.124203e-01 4.645594e-01 5.893084e-01 6.572215e-01 6.907871e-01 7.768157e-01 7.916495e-01 6.358581e-01 6.082596e-01 4.692979e-01 3.619447e-02 + 1.213215e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.935643e-01 4.064357e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.675385e-01 1.324615e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.931076e-01 3.068924e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "er" + + 5 + 2 + 39 + 1.523428e+00 -1.295063e+01 -1.097238e+01 -7.501873e+00 -7.281820e+00 -1.276236e+01 -1.588594e+01 2.935303e+00 -1.433884e+00 -2.805436e+00 -1.566318e+00 -7.506057e-01 -1.534697e+00 1.741187e+00 -9.944383e-01 -1.425694e+00 4.900906e-02 5.795573e-01 -8.755084e-01 -2.115909e+00 1.175973e+00 7.697185e-01 -2.501602e-01 2.576428e-02 3.498813e-01 3.468857e-01 -9.301014e-01 3.967958e-01 3.146006e-01 1.070431e-01 1.530434e-01 3.971072e-01 6.565099e-01 -2.456549e-01 -4.537481e-02 6.787876e-02 -4.933469e-02 -3.171835e-02 -1.776727e-01 + 39 + 1.359389e+01 2.622513e+01 7.317751e+01 4.469598e+01 6.433258e+01 7.442430e+01 8.571806e+01 6.620939e+01 7.325871e+01 4.533980e+01 4.313953e+01 3.247112e+01 1.423649e+00 3.115883e+00 2.037663e+00 3.118392e+00 2.733232e+00 3.809691e+00 3.822052e+00 5.557709e+00 4.417267e+00 3.844959e+00 3.259489e+00 2.672282e+00 2.215004e+00 1.582941e-01 5.994259e-01 3.693263e-01 5.578378e-01 4.559529e-01 6.351058e-01 6.737432e-01 9.469485e-01 7.184996e-01 6.190126e-01 5.515814e-01 4.775410e-01 4.218725e-01 2.497458e-02 + 1.203261e+02 + 3 + 39 + 2.706353e+00 -1.325475e+01 -1.421205e+01 -6.302191e+00 -4.820068e+00 -1.373343e+01 -1.796746e+01 5.018622e+00 1.072516e+00 -3.219396e+00 -1.892521e+00 -3.743627e-01 -1.327030e+00 -6.262375e-02 1.610425e-01 1.001854e-01 2.629102e-01 7.097526e-02 -9.040437e-02 -3.662322e-02 -1.956802e-03 4.126721e-02 -1.237561e-01 -1.626695e-01 5.403234e-02 -8.646872e-02 -2.744646e-01 1.949634e-01 3.602131e-01 1.267194e-02 -1.713278e-01 1.868606e-01 4.203460e-01 -2.598716e-01 -2.218264e-01 -4.931376e-03 -7.211520e-03 -4.913775e-02 -8.050095e-02 + 39 + 1.015698e+01 2.624182e+01 5.946754e+01 4.152413e+01 6.299224e+01 7.963697e+01 1.061379e+02 7.793281e+01 8.425896e+01 4.401165e+01 3.864273e+01 3.003412e+01 1.675165e+00 3.653318e-01 7.682283e-01 1.968006e+00 1.180314e+00 2.134276e+00 1.797917e+00 2.405415e+00 2.189484e+00 1.916567e+00 1.658133e+00 1.419492e+00 1.246028e+00 3.194239e-02 1.873786e-01 1.914054e-01 2.120987e-01 2.181013e-01 3.019065e-01 3.405610e-01 5.217606e-01 4.328026e-01 3.418726e-01 2.973998e-01 2.462162e-01 2.271993e-01 1.247014e-02 + 9.954927e+01 + 4 + 39 + -9.664114e-01 -1.029141e+01 -9.040834e+00 -3.973351e+00 -6.372850e+00 -1.287672e+01 -1.323361e+01 2.441041e+00 -1.398924e+00 -4.315456e+00 -3.476614e+00 -1.692228e-01 -3.065957e+00 -2.074215e+00 1.523273e+00 1.672928e+00 3.705677e-01 1.010936e-02 1.332811e+00 2.239979e+00 -1.351234e+00 -8.159371e-01 -3.321401e-02 -2.149021e-01 -2.787068e-01 -6.554799e-01 -6.200215e-01 2.493268e-01 1.223151e-01 -1.860689e-01 1.808112e-01 4.416373e-01 3.248144e-01 -1.410732e-01 -4.354270e-02 1.786005e-01 8.727583e-02 -1.248645e-01 -1.037827e-01 + 39 + 2.446440e+01 2.932269e+01 6.719380e+01 5.146738e+01 6.927998e+01 7.085061e+01 9.449268e+01 6.596964e+01 7.513418e+01 4.786940e+01 3.858930e+01 2.988354e+01 4.116648e+00 3.601652e+00 3.675078e+00 3.746271e+00 3.986257e+00 5.002774e+00 5.038059e+00 6.594635e+00 5.368794e+00 4.585776e+00 3.962108e+00 3.182549e+00 2.600839e+00 3.131225e-01 5.621806e-01 5.353928e-01 6.025804e-01 6.282970e-01 7.712488e-01 8.454192e-01 1.042001e+00 8.169292e-01 6.952790e-01 6.420301e-01 5.496634e-01 4.494595e-01 5.807665e-02 + 1.284120e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.838771e-01 5.161229e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.980293e-01 2.019707e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.500244e-01 3.499756e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "iy" + + 5 + 2 + 39 + -6.596122e+00 -8.749645e+00 7.320929e+00 -1.013925e+01 -1.875037e+01 -1.157494e+01 -9.322081e+00 -6.239320e-01 -1.005441e+01 -3.944612e+00 -4.301548e-01 -1.433143e+00 -1.891609e+00 -2.884299e-01 1.393716e-02 2.315601e+00 -1.136922e+00 -2.033865e+00 7.281389e-01 4.521160e-01 -4.869756e-01 -1.558626e+00 2.439288e-01 5.404574e-01 -2.396505e-01 1.554617e-01 -2.728705e-01 4.128137e-01 -6.241513e-01 4.806290e-02 7.825410e-01 5.123715e-01 1.429203e-01 -3.838038e-01 3.304742e-01 3.014940e-01 -1.846096e-01 -1.545002e-01 -1.336786e-01 + 39 + 1.186845e+01 3.001722e+01 4.630725e+01 6.484319e+01 3.598766e+01 5.644590e+01 5.701727e+01 7.005254e+01 5.755239e+01 5.457765e+01 5.222350e+01 2.988067e+01 1.347598e+00 1.898796e+00 2.011770e+00 2.284907e+00 3.346898e+00 3.193640e+00 3.810411e+00 4.841551e+00 4.421527e+00 3.603067e+00 3.731400e+00 3.098136e+00 2.397549e+00 1.324924e-01 4.191535e-01 2.913438e-01 4.298999e-01 5.735358e-01 4.921677e-01 6.373149e-01 8.239269e-01 8.599596e-01 7.358632e-01 5.805174e-01 5.226563e-01 3.929069e-01 2.004680e-02 + 1.173423e+02 + 3 + 39 + -8.785172e+00 -5.112659e+00 1.089329e+01 -1.372781e+01 -2.014141e+01 -6.780506e+00 -8.277029e+00 -5.556225e+00 -1.122421e+01 -1.895969e+00 -1.871095e+00 -2.933276e+00 -2.124170e+00 -7.228731e-02 2.685601e-01 7.597148e-02 3.004579e-02 5.012905e-02 2.525615e-01 1.771262e-01 -2.339784e-01 -6.971885e-02 1.287838e-01 -1.340630e-01 -1.576218e-01 -7.727809e-02 5.918504e-02 -1.232715e-02 -4.426073e-01 3.381764e-01 3.415202e-01 -2.194361e-01 8.618976e-02 1.648402e-01 1.948752e-01 -8.311652e-02 -3.394385e-02 5.528139e-02 -5.705638e-02 + 39 + 1.094931e+01 3.080907e+01 3.441180e+01 8.176080e+01 3.424856e+01 5.594095e+01 4.764805e+01 6.427496e+01 4.551280e+01 5.886480e+01 6.898461e+01 3.318119e+01 1.473019e+00 3.846151e-01 1.025399e+00 1.171338e+00 1.291342e+00 1.108912e+00 1.818341e+00 1.644632e+00 1.833290e+00 1.557927e+00 1.360981e+00 1.199317e+00 1.056858e+00 4.006262e-02 1.012763e-01 1.679221e-01 2.654910e-01 2.959392e-01 3.655967e-01 3.227871e-01 3.342164e-01 3.294250e-01 3.532966e-01 3.209033e-01 2.826572e-01 2.166441e-01 1.043541e-02 + 9.560758e+01 + 4 + 39 + -8.414595e+00 -4.943367e+00 7.423591e+00 -8.851294e+00 -1.696914e+01 -8.710757e+00 -6.145351e+00 -3.787964e+00 -1.084704e+01 -2.616009e+00 -1.721985e+00 -2.873876e+00 -3.318902e+00 -3.579092e-01 6.435065e-01 -2.242953e+00 1.423370e+00 2.291560e+00 -1.201363e-01 7.180798e-01 3.232536e-01 1.119944e+00 -1.672506e-01 -2.746767e-01 1.140478e-01 -4.992083e-01 -2.598725e-01 5.621018e-02 -5.053222e-01 -1.713883e-02 5.413078e-01 2.915711e-01 -1.046349e-02 2.874069e-02 3.582297e-01 8.096435e-02 -6.642877e-02 5.574432e-02 -7.677292e-02 + 39 + 1.721251e+01 3.446598e+01 4.826331e+01 6.840611e+01 4.468618e+01 6.557906e+01 6.114899e+01 7.231479e+01 5.361425e+01 5.228109e+01 5.942119e+01 3.234881e+01 4.401694e+00 2.771515e+00 3.300223e+00 3.011604e+00 4.381826e+00 4.213120e+00 5.088613e+00 4.648187e+00 4.837875e+00 4.337564e+00 4.183296e+00 3.608879e+00 2.582874e+00 2.999164e-01 3.640044e-01 4.544100e-01 5.619841e-01 6.863405e-01 7.066844e-01 7.996723e-01 6.877364e-01 8.347907e-01 7.106507e-01 6.175264e-01 5.504152e-01 4.209120e-01 4.591395e-02 + 1.251772e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.434117e-01 4.565883e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.992262e-01 2.007738e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.449338e-01 3.550662e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "dd" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -1.152951e+01 -5.399796e+00 -6.517791e-01 -9.477132e+00 -9.344363e+00 -1.007641e+01 -7.042903e+00 -1.769197e+00 -3.181676e+00 -2.343513e+00 -2.434306e+00 -3.189108e-01 -3.197309e+00 2.217976e+00 -4.923455e-01 4.969337e-01 -7.743727e-01 -2.096328e+00 -1.672876e+00 -1.672562e+00 5.953589e-01 1.171352e-01 2.334771e-01 -2.291614e-01 8.859739e-02 7.501148e-01 4.363321e-01 2.990309e-01 -8.327494e-02 6.537685e-01 2.598653e-01 5.104223e-01 1.562919e-02 -1.481818e-01 -1.713700e-01 -4.109250e-02 -2.463635e-01 -3.344376e-01 -2.720208e-01 + 39 + 4.017448e+01 3.531164e+01 4.180549e+01 4.297855e+01 4.413027e+01 4.126839e+01 4.578101e+01 3.716766e+01 3.787133e+01 2.461274e+01 2.270850e+01 1.892219e+01 2.757050e+00 5.308168e+00 4.370759e+00 5.453950e+00 5.825969e+00 6.794315e+00 5.493189e+00 6.508540e+00 5.828861e+00 5.591875e+00 4.210355e+00 4.437317e+00 3.253027e+00 4.207090e-01 4.096860e-01 8.217536e-01 5.702770e-01 7.429511e-01 6.725056e-01 6.955692e-01 7.456657e-01 7.409103e-01 7.124133e-01 5.715035e-01 5.341341e-01 4.402450e-01 4.941485e-02 + 1.254565e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "v" + + 5 + 2 + 39 + -5.845244e+00 -2.841478e+00 -6.669322e+00 -6.336512e+00 -5.139783e+00 -6.160735e+00 -9.416710e+00 -6.498714e+00 -5.002334e+00 -1.724120e+00 -1.724350e+00 -2.935886e+00 -4.663440e+00 -2.268772e+00 1.614919e+00 3.711116e-01 1.250641e+00 1.178020e+00 8.649279e-01 1.092844e+00 -3.249235e-01 -3.495165e-01 -5.785282e-01 -4.383936e-01 1.289112e-01 -7.978710e-01 -7.475541e-02 -6.050541e-01 1.594541e-01 -3.145607e-01 -3.682308e-01 -1.011379e-01 8.668959e-02 5.553643e-01 2.476200e-01 8.306134e-02 -8.899746e-02 1.810162e-04 1.818014e-01 + 39 + 2.551706e+01 1.809273e+01 2.633723e+01 2.522463e+01 1.792433e+01 3.077104e+01 2.700360e+01 2.521944e+01 2.607454e+01 2.505153e+01 2.810616e+01 2.153744e+01 2.715306e+00 3.030107e+00 2.241069e+00 2.826130e+00 3.126404e+00 2.584444e+00 3.371414e+00 3.754780e+00 3.724328e+00 3.055546e+00 2.830493e+00 2.672004e+00 1.972729e+00 2.264373e-01 3.886750e-01 3.714371e-01 4.015397e-01 4.033241e-01 4.365994e-01 4.509182e-01 5.909370e-01 5.579293e-01 5.275629e-01 4.708768e-01 4.295140e-01 3.690416e-01 3.416127e-02 + 1.091633e+02 + 3 + 39 + -1.327139e+01 -2.013950e+00 -4.990180e+00 -3.869619e+00 -3.241270e+00 -3.869032e+00 -5.367150e+00 -4.129334e+00 -4.530923e+00 -2.839386e+00 -3.317783e+00 -2.385416e+00 -6.238900e+00 -8.212737e-01 -4.493727e-01 -1.545893e-01 -1.583530e-01 -7.525081e-02 -4.812538e-02 4.805008e-01 6.037508e-01 4.473872e-01 1.177081e-01 6.184060e-02 1.915129e-01 5.633707e-02 1.100417e+00 -6.241250e-01 -2.323407e-01 -7.095533e-01 -5.952851e-01 -4.547832e-01 -4.618109e-01 1.430579e-01 1.212618e-01 2.426978e-01 1.845614e-01 -7.235488e-03 3.943295e-01 + 39 + 4.453132e+01 2.048189e+01 2.353966e+01 2.393999e+01 1.820858e+01 2.387994e+01 2.704720e+01 2.454204e+01 2.337212e+01 2.067169e+01 2.010818e+01 1.664946e+01 3.226744e+00 5.226992e+00 1.959328e+00 2.045551e+00 2.620944e+00 2.172874e+00 2.612988e+00 2.716805e+00 2.389851e+00 2.182962e+00 1.972746e+00 1.915849e+00 1.545393e+00 3.939951e-01 6.624347e-01 6.216725e-01 6.357582e-01 6.687742e-01 5.694318e-01 6.884288e-01 7.904923e-01 7.822783e-01 6.661128e-01 5.715545e-01 5.155680e-01 4.003935e-01 4.966773e-02 + 1.110870e+02 + 4 + 39 + -9.211680e+00 -4.401794e+00 -7.222131e+00 -7.398927e+00 -6.024594e+00 -6.159185e+00 -6.697021e+00 -3.688032e+00 -3.258189e+00 -1.771444e+00 -2.058941e+00 -2.158501e+00 -4.459593e+00 1.893032e+00 -1.266946e+00 -3.525220e-01 -1.396569e+00 -1.078415e+00 -8.171209e-01 -7.120409e-01 5.820624e-01 2.861344e-01 3.649230e-01 2.643197e-01 3.889980e-02 7.503578e-01 3.499296e-01 -2.433653e-01 1.422188e-01 -1.715656e-01 -1.504391e-01 1.894740e-02 -1.949709e-01 1.478774e-01 -4.714077e-02 2.257664e-02 -2.353346e-02 -5.156142e-02 8.699581e-02 + 39 + 5.704566e+01 2.169247e+01 3.613849e+01 3.318525e+01 2.495079e+01 3.540636e+01 3.717207e+01 2.939563e+01 2.767400e+01 2.334372e+01 2.284137e+01 1.976311e+01 3.814775e+00 6.739159e+00 3.572292e+00 4.060587e+00 5.135482e+00 4.267477e+00 4.932196e+00 5.502515e+00 4.383823e+00 3.948261e+00 3.010800e+00 2.791192e+00 2.345508e+00 6.291221e-01 6.676493e-01 4.686235e-01 4.238567e-01 5.954766e-01 5.184957e-01 5.954455e-01 6.937231e-01 6.292434e-01 5.502688e-01 4.636785e-01 4.244207e-01 3.606612e-01 5.836701e-02 + 1.193028e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.566848e-01 5.433152e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.338739e-01 4.661261e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 3.838826e-01 6.161174e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "dx" + + 5 + 2 + 39 + -4.539454e+00 -7.857251e+00 -1.596208e+00 -3.513728e+00 -1.106250e+01 -8.503076e+00 -9.176913e+00 -4.163338e+00 -2.115869e+00 -2.518273e+00 -4.653949e+00 -3.442836e+00 -3.513931e+00 -8.521934e-01 7.701062e-01 8.905668e-01 5.465965e-01 6.086594e-01 -2.653829e-02 3.139393e-01 -6.864330e-01 -4.566146e-01 -2.041172e-01 -1.016766e-01 3.387529e-01 -4.136394e-01 2.383240e-01 -5.734212e-01 -8.398443e-02 -1.074163e+00 -5.538532e-01 -4.329426e-02 -2.485044e-01 6.556827e-01 -4.162624e-02 1.812651e-01 3.670956e-01 1.119114e-01 3.309200e-01 + 39 + 2.050211e+01 4.235407e+01 5.207346e+01 5.949771e+01 5.528299e+01 4.303033e+01 4.497871e+01 4.293058e+01 4.981335e+01 4.290592e+01 3.286763e+01 2.975759e+01 3.905186e+00 1.518343e+00 1.867376e+00 3.753524e+00 3.935109e+00 4.543169e+00 4.363874e+00 5.362884e+00 4.182101e+00 4.072016e+00 3.074741e+00 3.397179e+00 2.690289e+00 1.337291e-01 3.185621e-01 5.138955e-01 5.863269e-01 8.830824e-01 1.238412e+00 8.990619e-01 1.239154e+00 1.068199e+00 9.710976e-01 8.975865e-01 9.659125e-01 5.814319e-01 4.609419e-02 + 1.244264e+02 + 3 + 39 + -6.619350e+00 -8.511685e+00 -6.400916e-02 -6.476616e+00 -1.162975e+01 -8.721704e+00 -9.129243e+00 -3.483073e+00 -2.773933e+00 -2.731969e+00 -3.232150e+00 -1.880456e+00 -3.241278e+00 2.424949e-01 -6.662268e-01 6.908700e-01 -1.175940e+00 -1.092583e+00 -2.837664e-01 -6.672603e-01 6.672792e-01 -2.989849e-01 2.498259e-01 5.147517e-01 4.375263e-01 3.147649e-01 5.199053e-01 -4.643151e-01 -2.541952e-01 -6.520699e-01 -5.536358e-01 -3.820450e-02 -2.694355e-01 5.585966e-01 -7.160531e-03 1.982194e-01 1.492570e-01 -7.130536e-02 2.819307e-01 + 39 + 2.641782e+01 3.224921e+01 4.432308e+01 4.881101e+01 4.069403e+01 4.288863e+01 4.314051e+01 3.851825e+01 4.358891e+01 3.631821e+01 2.857745e+01 2.424910e+01 2.462197e+00 1.510775e+00 2.000152e+00 3.177660e+00 4.026753e+00 3.636301e+00 3.508731e+00 3.894909e+00 3.926924e+00 3.923654e+00 3.195524e+00 3.067203e+00 2.332178e+00 1.858004e-01 4.392554e-01 4.294043e-01 6.985435e-01 8.592626e-01 1.181155e+00 9.996576e-01 1.248286e+00 1.007520e+00 8.705572e-01 7.956530e-01 8.656482e-01 6.007328e-01 2.997301e-02 + 1.212240e+02 + 4 + 39 + -3.370832e+00 -1.139519e+01 7.337262e-02 -8.565407e+00 -1.601876e+01 -9.631032e+00 -1.175834e+01 -1.182488e+00 -2.057119e+00 -1.750273e+00 -2.600087e+00 -1.819466e+00 -1.974270e+00 7.650732e-01 -9.157993e-01 2.158293e-01 -1.495382e+00 -1.382320e+00 -1.880667e-01 -7.970414e-01 1.335565e+00 -2.731335e-01 3.971501e-01 5.648137e-01 1.606406e-01 4.941815e-01 5.592692e-02 1.449703e-01 -3.044316e-01 -6.735794e-02 2.480582e-01 9.891073e-02 1.915415e-01 5.332012e-02 -9.768829e-02 1.913372e-02 -4.474381e-02 -1.499972e-01 4.651090e-03 + 39 + 1.561035e+01 3.173673e+01 6.362381e+01 5.676829e+01 4.057005e+01 4.640162e+01 5.112261e+01 5.197219e+01 6.109725e+01 4.288099e+01 4.040857e+01 2.885804e+01 1.407958e+00 1.995196e+00 2.291164e+00 3.957940e+00 4.308882e+00 4.676396e+00 4.374228e+00 5.320150e+00 5.144561e+00 4.868420e+00 4.214548e+00 4.109924e+00 2.900653e+00 1.589538e-01 1.469974e-01 2.161600e-01 2.920359e-01 4.823646e-01 5.619761e-01 5.195016e-01 6.081597e-01 5.692294e-01 5.288883e-01 4.527876e-01 4.363348e-01 3.549037e-01 1.672539e-02 + 1.160324e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 2.134418e-01 7.865582e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 1.803601e-01 8.196399e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 1.621675e-01 8.378325e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ih" + + 5 + 2 + 39 + -5.517930e+00 -1.060499e+01 1.872400e+00 -1.167599e+01 -1.640648e+01 -1.206192e+01 -1.075265e+01 7.460738e-01 -5.172114e+00 -2.348958e+00 -2.502228e+00 -1.407451e+00 -1.393192e+00 8.357227e-01 -1.441141e+00 7.966651e-01 -9.971641e-01 -1.506990e+00 -5.687315e-01 -5.322228e-01 1.114253e+00 -2.439708e-01 -9.636211e-02 2.678525e-01 1.202080e-01 4.750599e-01 -6.416291e-01 5.095553e-01 -4.431766e-01 2.896578e-01 7.259585e-01 4.743271e-01 5.659685e-01 -2.337181e-01 2.042987e-02 7.537926e-02 3.072319e-02 -1.657523e-02 -2.248963e-01 + 39 + 1.335300e+01 2.914432e+01 4.425722e+01 5.857735e+01 4.463210e+01 5.377507e+01 7.041077e+01 5.669269e+01 6.462175e+01 4.861097e+01 4.957269e+01 3.358553e+01 1.720605e+00 2.667645e+00 2.189239e+00 2.626202e+00 3.120718e+00 3.517051e+00 3.747738e+00 5.271354e+00 3.948958e+00 3.850038e+00 3.409507e+00 3.104630e+00 2.369101e+00 2.529572e-01 5.105771e-01 3.999315e-01 4.168432e-01 5.796410e-01 5.910547e-01 6.780840e-01 7.652826e-01 7.714180e-01 7.933509e-01 6.016443e-01 5.407309e-01 4.647194e-01 3.532400e-02 + 1.203534e+02 + 3 + 39 + -5.716178e+00 -1.110367e+01 1.823239e+00 -1.273097e+01 -1.696739e+01 -1.217275e+01 -8.487168e+00 1.950768e+00 -5.549362e+00 -2.361760e+00 -2.305647e+00 -1.252507e+00 -1.154064e+00 5.868066e-02 1.568125e-01 -2.721309e-01 1.774013e-01 3.691339e-01 -2.044183e-02 7.738771e-02 1.834045e-02 3.477807e-03 -7.737853e-02 -1.403836e-01 -5.723754e-02 -7.237583e-02 -1.291684e-01 4.699417e-01 -2.094430e-01 3.396488e-01 4.676066e-01 1.424666e-01 7.546604e-02 -4.078820e-01 -2.916695e-02 2.331472e-02 -1.114734e-01 -7.631361e-02 -1.519924e-01 + 39 + 1.079889e+01 2.608577e+01 4.179491e+01 6.212029e+01 4.289123e+01 5.271107e+01 7.523554e+01 5.812120e+01 6.689279e+01 5.109978e+01 5.153757e+01 3.255039e+01 1.198562e+00 4.728550e-01 9.558448e-01 1.684790e+00 1.451902e+00 1.819502e+00 1.840898e+00 2.127035e+00 2.279228e+00 2.549907e+00 1.886986e+00 1.694175e+00 1.378363e+00 5.660057e-02 2.036490e-01 2.811844e-01 2.599304e-01 3.577557e-01 3.899521e-01 4.271015e-01 5.594053e-01 5.256332e-01 4.439338e-01 4.225403e-01 3.627501e-01 3.057703e-01 1.977279e-02 + 1.034170e+02 + 4 + 39 + -5.477739e+00 -8.672354e+00 3.298998e-01 -1.009461e+01 -1.369314e+01 -1.251156e+01 -1.018870e+01 -3.097379e-02 -5.169324e+00 -2.516245e+00 -3.348362e+00 -1.612314e+00 -1.975203e+00 -1.151446e+00 2.419767e+00 -7.826652e-01 1.618337e+00 2.057073e+00 8.572961e-01 9.408259e-01 -1.439600e+00 -1.694775e-01 -9.264532e-02 -3.279218e-01 -3.524479e-01 -7.719449e-01 -6.434781e-01 3.665673e-01 -2.095452e-01 1.896918e-01 4.174414e-01 5.006156e-01 3.877269e-01 -1.631769e-01 4.545426e-02 8.527806e-02 6.996239e-02 -1.693346e-02 -1.607681e-01 + 39 + 1.375579e+01 3.340576e+01 4.868016e+01 5.179453e+01 5.082232e+01 5.238329e+01 6.608630e+01 6.191746e+01 7.160627e+01 5.356212e+01 5.317785e+01 3.763318e+01 1.738966e+00 3.536909e+00 2.735030e+00 2.878946e+00 4.435742e+00 3.993149e+00 4.692910e+00 5.731395e+00 5.106914e+00 4.817997e+00 4.356071e+00 3.972639e+00 3.217566e+00 3.311481e-01 4.624097e-01 5.098993e-01 4.568058e-01 5.619081e-01 6.616552e-01 6.809348e-01 7.195605e-01 9.113739e-01 8.713245e-01 6.881287e-01 6.320212e-01 5.048901e-01 5.100180e-02 + 1.252073e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 3.806971e-01 6.193029e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.133360e-01 2.866640e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 4.857432e-01 5.142568e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ng" + + 5 + 2 + 39 + -6.076590e+00 -5.064608e+00 2.085494e+00 -1.309309e+01 -1.644099e+01 -3.781538e+00 -2.294930e+00 -5.087627e+00 -1.390442e+01 2.652004e-01 -1.631517e+00 -6.654199e+00 -3.232193e+00 6.502724e-01 1.334410e+00 -1.487268e+00 1.612056e+00 1.019832e+00 -4.223647e-01 5.394279e-01 -2.003681e+00 -5.698919e-01 9.384019e-01 -5.743879e-01 -4.793402e-01 -3.903151e-01 9.458097e-02 -1.542804e-01 -3.761394e-01 3.793406e-01 2.600403e-01 -3.532701e-01 -2.135770e-01 1.872545e-01 5.155113e-01 -3.026537e-01 -2.047058e-01 2.839507e-01 1.211458e-02 + 39 + 1.084927e+01 2.192812e+01 4.521197e+01 8.042786e+01 5.286604e+01 5.987370e+01 5.009918e+01 8.883312e+01 5.433348e+01 5.845647e+01 1.085602e+02 4.087700e+01 1.951120e+00 7.807538e-01 1.508384e+00 3.842732e+00 3.846739e+00 4.399359e+00 5.266242e+00 3.846646e+00 4.897497e+00 4.221453e+00 4.085718e+00 3.598894e+00 2.761823e+00 4.177464e-02 1.481664e-01 2.114740e-01 5.324923e-01 6.031705e-01 6.354687e-01 7.829723e-01 5.399452e-01 7.499334e-01 6.935322e-01 6.237233e-01 6.774401e-01 4.408306e-01 1.000000e-02 + 1.169900e+02 + 3 + 39 + -3.472145e+00 -2.236863e+00 -4.204432e+00 -5.945210e+00 -1.313667e+01 -7.042136e+00 -1.311100e+00 -9.539930e+00 -1.263420e+01 8.364809e-01 -4.206605e+00 -6.055780e+00 -4.130702e+00 3.566206e-02 6.424760e-01 -4.165306e-01 7.416418e-01 5.366297e-01 -1.827499e-01 2.109423e-02 -2.695842e-01 2.109467e-01 -2.851489e-01 -2.574020e-01 2.080234e-01 -2.034681e-01 -3.468632e-01 -2.018315e-01 3.734507e-01 -4.405205e-01 1.086544e-01 2.621273e-01 -2.512579e-01 5.696229e-01 2.200315e-01 -2.456274e-01 1.514553e-01 1.310915e-01 1.923441e-02 + 39 + 7.342351e+00 2.002171e+01 2.844389e+01 5.319100e+01 5.022454e+01 4.857777e+01 5.184954e+01 7.666073e+01 4.752559e+01 5.871140e+01 8.719437e+01 4.188321e+01 2.046334e+00 6.387298e-01 1.243446e+00 2.025726e+00 2.365294e+00 2.758877e+00 2.639706e+00 2.514934e+00 3.264345e+00 2.555428e+00 2.519694e+00 2.475750e+00 1.818351e+00 5.296168e-02 1.863876e-01 2.650710e-01 5.164334e-01 5.095739e-01 7.134311e-01 6.317965e-01 6.328194e-01 7.948370e-01 6.400095e-01 6.206163e-01 5.619965e-01 4.385753e-01 1.202107e-02 + 1.102141e+02 + 4 + 39 + -6.420766e+00 -1.187212e+00 -3.006993e+00 -6.050743e+00 -1.018333e+01 -6.002436e+00 -2.127556e+00 -6.504512e+00 -1.133360e+01 -1.683153e+00 -3.655978e+00 -4.806388e+00 -5.122188e+00 -1.396327e+00 -3.611454e-01 2.017976e-02 -7.878211e-02 1.486291e+00 2.924241e-01 -4.258294e-01 1.482598e+00 1.340449e+00 -6.597437e-01 5.001338e-02 7.287980e-01 -2.843932e-01 -3.317907e-01 -4.883616e-01 -7.125401e-02 -2.533108e-01 1.263131e-02 8.407226e-02 -4.417316e-02 3.535870e-01 3.947979e-01 1.009850e-01 1.039740e-01 1.459325e-01 5.690132e-02 + 39 + 1.860350e+01 2.625016e+01 3.587083e+01 5.937988e+01 6.455702e+01 5.007597e+01 5.392719e+01 7.991616e+01 5.214241e+01 5.245026e+01 6.996259e+01 3.832572e+01 3.956043e+00 2.743831e+00 2.851427e+00 3.688677e+00 4.631578e+00 5.933338e+00 4.529145e+00 5.248396e+00 5.544320e+00 4.538379e+00 4.104671e+00 4.405403e+00 3.162802e+00 3.169595e-01 5.417356e-01 5.005989e-01 5.541148e-01 6.586057e-01 9.341341e-01 7.853209e-01 8.926653e-01 9.314128e-01 7.638379e-01 6.954435e-01 6.433918e-01 4.991446e-01 3.488411e-02 + 1.272006e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.115654e-01 3.884346e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.885800e-01 3.114200e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.458147e-01 4.541853e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "eh" + + 5 + 2 + 39 + -4.237212e+00 -1.328928e+01 -3.121577e+00 -1.314321e+01 -1.433406e+01 -1.022731e+01 -7.808975e+00 3.905833e+00 -1.328122e+00 -1.454019e+00 -4.198952e+00 -2.869351e+00 -1.088925e+00 7.642450e-01 -1.742015e+00 -6.183029e-02 -9.950674e-01 -7.889240e-01 1.075893e-02 1.862008e-02 1.349218e+00 4.620986e-01 -2.527557e-01 -2.687955e-01 -1.629029e-01 5.059958e-01 -5.824353e-01 5.390808e-01 -1.872034e-01 3.474299e-01 5.812062e-01 3.723539e-01 3.571422e-01 -3.482288e-01 -1.606030e-01 -8.804119e-03 1.262999e-01 8.608310e-02 -2.015914e-01 + 39 + 1.374550e+01 2.669461e+01 4.657617e+01 4.891339e+01 4.534674e+01 5.270887e+01 7.835349e+01 5.410843e+01 7.083524e+01 4.648331e+01 4.801573e+01 3.527265e+01 1.687040e+00 2.397215e+00 2.184180e+00 2.496268e+00 2.866382e+00 3.270535e+00 3.348473e+00 4.491552e+00 3.722942e+00 3.528194e+00 2.962518e+00 2.615843e+00 2.242100e+00 2.259501e-01 4.993785e-01 3.286334e-01 3.469347e-01 4.694086e-01 5.057876e-01 6.051270e-01 7.335325e-01 6.507495e-01 7.017475e-01 5.179421e-01 5.088682e-01 4.255639e-01 2.907700e-02 + 1.173385e+02 + 3 + 39 + -3.960234e+00 -1.472258e+01 -4.455665e+00 -1.332240e+01 -1.369164e+01 -9.865106e+00 -5.657537e+00 5.392631e+00 -1.571511e+00 -2.940228e+00 -4.682239e+00 -2.722771e+00 -7.000297e-01 1.311901e-01 1.963456e-02 -3.726048e-01 1.223852e-01 3.417079e-01 4.915129e-02 -9.919937e-02 4.576714e-02 3.510329e-02 -1.079888e-01 -8.366239e-02 -4.830772e-02 -2.449575e-02 4.116321e-03 3.591481e-01 -5.480407e-03 1.832531e-01 1.595862e-01 -2.537607e-02 -1.596204e-01 -3.567124e-01 -1.293295e-01 9.048421e-02 7.072756e-02 2.124955e-02 -9.829126e-02 + 39 + 1.324372e+01 2.557997e+01 4.388061e+01 4.695890e+01 4.885513e+01 5.961873e+01 8.346438e+01 5.661005e+01 7.812656e+01 4.797230e+01 4.820041e+01 3.534173e+01 1.207034e+00 3.823992e-01 7.767881e-01 1.418480e+00 1.155526e+00 1.528696e+00 1.683991e+00 2.060281e+00 1.876459e+00 1.709225e+00 1.483424e+00 1.319251e+00 1.199588e+00 3.325347e-02 7.793851e-02 1.855740e-01 1.875056e-01 2.349284e-01 2.630346e-01 2.717460e-01 3.397771e-01 3.774855e-01 3.328888e-01 2.738548e-01 2.601355e-01 2.344112e-01 1.000000e-02 + 9.514407e+01 + 4 + 39 + -3.278797e+00 -1.234841e+01 -5.271704e+00 -1.146727e+01 -1.187629e+01 -1.044724e+01 -8.255327e+00 3.381471e+00 -1.321271e+00 -1.998501e+00 -4.328094e+00 -2.948432e+00 -1.478564e+00 -6.109499e-01 2.207595e+00 1.241907e-01 1.439685e+00 1.247263e+00 2.665221e-01 -2.890049e-02 -1.777153e+00 -8.015132e-01 8.611621e-02 2.667969e-01 1.615862e-01 -7.125496e-01 -5.704299e-01 4.695288e-01 8.779038e-02 2.630600e-01 3.234545e-01 3.779798e-01 3.473128e-01 -3.346343e-01 -1.689987e-01 -1.067220e-02 6.084546e-02 3.286352e-02 -1.897286e-01 + 39 + 1.583086e+01 3.156191e+01 5.130849e+01 4.759184e+01 5.191396e+01 6.415124e+01 8.273292e+01 6.274131e+01 7.452331e+01 5.302151e+01 5.436950e+01 3.846465e+01 2.153120e+00 2.781091e+00 2.759105e+00 3.176695e+00 3.597233e+00 3.884539e+00 4.019495e+00 5.279968e+00 4.851946e+00 4.525468e+00 3.636402e+00 3.500521e+00 3.071506e+00 2.898432e-01 4.244832e-01 4.480986e-01 4.392578e-01 5.231955e-01 6.430091e-01 6.826190e-01 7.428867e-01 8.586214e-01 7.893965e-01 6.272684e-01 6.113151e-01 4.897043e-01 4.487209e-02 + 1.240379e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.932352e-01 5.067648e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.821131e-01 2.178869e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.750995e-01 4.249005e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "kd" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.608577e+01 -8.394482e+00 -6.772774e+00 -9.060979e+00 -3.055083e+00 -4.620406e+00 -2.282485e+00 -5.664380e-01 -1.873519e+00 1.557708e+00 -2.111033e+00 -2.639092e-01 -4.732923e+00 1.319699e+00 1.109414e+00 1.104524e+00 5.602996e-03 -6.429788e-01 -7.195347e-02 1.680474e-01 -4.353034e-01 -4.313145e-01 -1.052716e+00 -1.172088e-01 -3.877870e-01 1.944653e-01 7.143657e-01 -7.828599e-02 -7.883257e-02 -3.612229e-02 -3.266666e-01 7.120464e-03 -2.969533e-01 -2.894888e-02 -2.908759e-01 -2.181467e-01 2.335926e-03 -1.835051e-01 5.797051e-02 + 39 + 2.424170e+01 2.419962e+01 5.282943e+01 3.741611e+01 4.554988e+01 4.691285e+01 4.220716e+01 3.609247e+01 3.161109e+01 2.833118e+01 2.523423e+01 1.930250e+01 2.130000e+00 4.710004e+00 2.962671e+00 2.859200e+00 3.785818e+00 4.094874e+00 4.138922e+00 4.125403e+00 3.807178e+00 4.229759e+00 3.062815e+00 3.066573e+00 2.501482e+00 3.106908e-01 4.204964e-01 5.693645e-01 5.538650e-01 7.600756e-01 7.030770e-01 8.282077e-01 7.396338e-01 7.313307e-01 7.489930e-01 6.458336e-01 6.285928e-01 4.652647e-01 1.028226e-01 + 1.207300e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 3.333333e-01 3.333333e-01 3.333333e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "g" + + 5 + 2 + 39 + -1.187069e+01 1.881705e+00 -5.520328e-01 3.171725e-01 -2.007717e+00 -2.566136e+00 -4.938379e+00 -4.683956e+00 -5.657830e+00 -3.621389e+00 -3.862141e+00 -3.201461e+00 -8.567732e+00 -1.546453e+00 -1.668881e+00 -8.705049e-01 -1.032807e+00 4.341868e-01 5.950124e-01 7.321989e-01 8.434945e-01 9.218905e-01 6.761196e-01 6.208973e-01 5.683907e-01 5.373520e-02 2.777768e-01 -8.778399e-01 -2.490601e-01 -1.064725e+00 -7.699211e-01 -5.563876e-01 -2.583409e-01 2.697971e-01 1.623825e-01 2.560153e-01 2.302396e-01 2.148819e-01 5.819767e-01 + 39 + 3.871142e+01 2.618269e+01 2.733258e+01 2.868161e+01 2.720914e+01 3.064567e+01 3.031709e+01 3.304488e+01 3.293890e+01 2.651493e+01 2.457058e+01 1.926967e+01 5.705230e+00 3.609108e+00 4.356986e+00 3.405393e+00 4.217702e+00 3.833694e+00 3.919183e+00 3.744586e+00 4.153022e+00 3.867249e+00 3.202001e+00 3.004318e+00 2.306687e+00 5.302773e-01 6.056266e-01 8.485448e-01 7.434338e-01 8.557802e-01 7.537763e-01 7.013645e-01 7.338632e-01 7.944290e-01 7.368815e-01 6.634198e-01 5.597920e-01 4.581394e-01 9.305938e-02 + 1.215179e+02 + 3 + 39 + -1.380207e+01 -4.106205e+00 -2.631286e+00 -4.031992e+00 -2.648503e+00 -2.654665e+00 -3.992504e+00 -2.862296e+00 -4.011915e+00 -2.264048e+00 -2.655491e+00 -1.931448e+00 -6.850338e+00 -8.781413e-01 -2.329094e+00 -9.686858e-01 -2.480415e+00 -8.216463e-01 -4.973181e-01 8.122384e-02 9.301051e-01 9.492311e-01 8.373645e-01 8.162870e-01 8.131088e-01 1.025109e+00 7.195183e-01 4.030079e-02 1.595297e-01 -4.182236e-01 -7.700673e-01 -5.567055e-01 -4.459215e-01 -3.647296e-02 -1.752937e-01 -8.794422e-03 -3.424909e-02 -3.473063e-02 3.634976e-01 + 39 + 4.609700e+01 4.610304e+01 3.947778e+01 4.439331e+01 3.548025e+01 3.593275e+01 3.314109e+01 3.267379e+01 3.308242e+01 2.578073e+01 2.241734e+01 1.772599e+01 6.587080e+00 5.593340e+00 4.403532e+00 4.410000e+00 4.750644e+00 4.470994e+00 4.440341e+00 4.582630e+00 4.634848e+00 4.359799e+00 3.516900e+00 3.153291e+00 2.468863e+00 5.467138e-01 7.324588e-01 1.072625e+00 8.508017e-01 1.032150e+00 9.480075e-01 9.165289e-01 8.803497e-01 9.162260e-01 8.607819e-01 7.371264e-01 7.092699e-01 4.892320e-01 8.076132e-02 + 1.272767e+02 + 4 + 39 + -9.024694e+00 -5.530894e+00 -2.224628e+00 -6.899866e+00 -6.880993e+00 -1.007329e+01 -8.387756e+00 -2.710186e+00 -6.547432e+00 -3.208182e-01 -2.324942e+00 -1.200978e+00 -3.436433e+00 2.179313e+00 8.130409e-01 1.576624e+00 -9.004692e-01 -2.470935e+00 -1.458332e+00 -1.538936e+00 1.854192e-01 -5.728620e-01 -4.965720e-01 7.608045e-01 -1.564189e-01 8.462484e-01 1.704140e-01 9.666836e-02 -8.472072e-02 1.898545e-01 -8.835050e-02 3.326513e-01 9.876414e-02 1.932099e-01 9.354573e-02 -2.051355e-01 7.875360e-02 -1.919904e-01 -1.526652e-01 + 39 + 3.532505e+01 3.065998e+01 7.699981e+01 4.422469e+01 6.588127e+01 5.411566e+01 5.234874e+01 5.420104e+01 4.176642e+01 3.586608e+01 3.594114e+01 2.185101e+01 1.679098e+00 5.184123e+00 4.680713e+00 3.972703e+00 5.999978e+00 5.674264e+00 5.133343e+00 6.200145e+00 5.727601e+00 6.150905e+00 5.631639e+00 5.069069e+00 3.147109e+00 1.767222e-01 3.421053e-01 8.454843e-01 7.169327e-01 5.920107e-01 7.024053e-01 8.418500e-01 8.230353e-01 9.013311e-01 8.173738e-01 7.242402e-01 5.524594e-01 4.630421e-01 4.178049e-02 + 1.273226e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "jh" + + 5 + 2 + 39 + -2.600940e+01 -5.265351e+00 1.360469e+00 -1.156855e+01 -4.230871e+00 3.762887e-01 -4.470370e+00 -9.266980e-01 -7.448180e-01 -2.139987e+00 -4.398139e-01 -3.071568e-01 -3.968676e+00 -2.607428e+00 2.954838e-01 6.762595e-01 -9.463252e-01 -9.025396e-01 -3.181025e-04 6.880499e-01 4.207573e-01 5.885732e-01 4.431049e-01 6.197654e-01 4.367884e-01 8.950159e-01 1.380415e+00 4.882166e-01 2.946036e-01 8.932715e-01 -3.965498e-01 -7.615726e-01 -2.069678e-01 -2.586167e-01 -4.682431e-01 -2.928037e-01 -4.213199e-01 -1.897793e-01 -1.648513e-01 + 39 + 2.983574e+01 3.551392e+01 4.017852e+01 2.961992e+01 3.215001e+01 2.598036e+01 2.070924e+01 2.355514e+01 1.961500e+01 1.657523e+01 1.375987e+01 1.068071e+01 2.121088e+00 3.530598e+00 3.580395e+00 3.259118e+00 3.709590e+00 2.598341e+00 2.882566e+00 2.182652e+00 2.443532e+00 2.051377e+00 1.951327e+00 1.753821e+00 1.361380e+00 3.099273e-01 1.070184e+00 8.497132e-01 7.380515e-01 6.816289e-01 7.210507e-01 6.854942e-01 5.866343e-01 6.276969e-01 5.297220e-01 4.549547e-01 3.925615e-01 3.209046e-01 5.484446e-02 + 1.110877e+02 + 3 + 39 + -2.801630e+01 -4.333756e+00 4.963721e+00 -9.476112e+00 -7.066166e+00 -1.079840e+00 -2.307531e+00 -9.883822e-01 -8.965217e-01 -2.254555e+00 -9.836388e-01 -1.304816e-01 -3.121097e+00 1.895569e+00 -4.971659e-03 3.842819e-01 5.750589e-01 -1.190539e+00 -1.683146e+00 -4.269927e-01 -2.347634e-01 -5.340366e-01 -3.922249e-01 -3.191594e-01 -3.206430e-02 3.527144e-02 1.481759e+00 -2.852026e-01 -2.930416e-01 1.905299e-01 -6.404420e-02 -4.474167e-01 -5.396330e-01 -5.656810e-02 -2.662840e-01 -1.642072e-01 -1.326876e-01 -8.882314e-02 -1.805424e-01 + 39 + 2.164256e+01 2.821122e+01 2.620184e+01 2.925037e+01 3.252490e+01 2.548316e+01 2.503773e+01 2.342555e+01 2.205078e+01 1.806408e+01 1.439591e+01 1.249253e+01 1.538405e+00 5.144796e+00 1.657653e+00 2.535558e+00 2.292391e+00 3.332598e+00 3.539996e+00 2.569855e+00 2.341705e+00 2.185143e+00 1.697113e+00 1.505545e+00 1.257522e+00 1.911016e-01 9.045248e-01 4.838293e-01 4.625931e-01 4.616089e-01 5.892176e-01 6.381469e-01 6.002524e-01 5.101508e-01 4.737740e-01 4.064972e-01 3.717827e-01 3.099299e-01 3.886529e-02 + 1.063100e+02 + 4 + 39 + -1.393988e+01 -5.412217e+00 4.494559e+00 -7.887183e+00 -1.204194e+01 -1.003082e+01 -7.882468e+00 -2.455689e+00 -3.926432e+00 -4.600286e+00 -2.208078e+00 -4.061731e-01 -3.120269e+00 4.519408e+00 -1.546004e+00 -7.787501e-01 2.523233e-03 -1.206190e+00 -1.889297e+00 -1.711863e+00 4.178667e-01 -5.939176e-01 -9.263644e-02 -8.213577e-02 -7.405604e-02 1.337057e-01 -3.470262e-01 -2.789677e-01 -4.605145e-01 -2.992880e-01 5.116236e-01 7.582996e-01 2.093693e-01 2.586200e-01 1.790983e-01 2.995741e-01 9.467052e-02 -7.061450e-02 -1.191126e-02 + 39 + 5.511194e+01 3.163395e+01 3.316778e+01 4.436488e+01 3.487440e+01 3.586886e+01 3.742700e+01 3.012331e+01 3.257079e+01 2.169965e+01 1.874863e+01 1.501805e+01 2.394080e+00 3.857527e+00 3.452635e+00 4.233893e+00 3.511317e+00 5.673689e+00 5.716473e+00 5.398923e+00 4.656716e+00 4.099649e+00 3.607376e+00 3.074387e+00 2.371874e+00 4.150604e-01 9.324716e-01 5.211688e-01 4.157956e-01 4.950067e-01 6.477298e-01 6.688129e-01 7.912480e-01 6.829549e-01 5.593268e-01 4.623029e-01 4.004336e-01 3.715865e-01 2.891319e-02 + 1.189060e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.210748e-01 4.789252e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.271386e-01 3.728615e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.468885e-01 4.531115e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "k" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.608577e+01 -8.394482e+00 -6.772774e+00 -9.060979e+00 -3.055083e+00 -4.620406e+00 -2.282485e+00 -5.664380e-01 -1.873519e+00 1.557708e+00 -2.111033e+00 -2.639092e-01 -4.732923e+00 1.319699e+00 1.109414e+00 1.104524e+00 5.602996e-03 -6.429788e-01 -7.195347e-02 1.680474e-01 -4.353034e-01 -4.313145e-01 -1.052716e+00 -1.172088e-01 -3.877870e-01 1.944653e-01 7.143657e-01 -7.828599e-02 -7.883257e-02 -3.612229e-02 -3.266666e-01 7.120464e-03 -2.969533e-01 -2.894888e-02 -2.908759e-01 -2.181467e-01 2.335926e-03 -1.835051e-01 5.797051e-02 + 39 + 2.424170e+01 2.419962e+01 5.282943e+01 3.741611e+01 4.554988e+01 4.691285e+01 4.220716e+01 3.609247e+01 3.161109e+01 2.833118e+01 2.523423e+01 1.930250e+01 2.130000e+00 4.710004e+00 2.962671e+00 2.859200e+00 3.785818e+00 4.094874e+00 4.138922e+00 4.125403e+00 3.807178e+00 4.229759e+00 3.062815e+00 3.066573e+00 2.501482e+00 3.106908e-01 4.204964e-01 5.693645e-01 5.538650e-01 7.600756e-01 7.030770e-01 8.282077e-01 7.396338e-01 7.313307e-01 7.489930e-01 6.458336e-01 6.285928e-01 4.652647e-01 1.028226e-01 + 1.207300e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "s" + + 5 + 2 + 39 + -2.377530e+01 7.975230e-01 -5.804726e+00 -7.956605e+00 -1.056919e+00 -6.153901e+00 -1.446522e+00 3.708428e-01 -1.807747e+00 -1.441141e+00 -2.266209e+00 -1.560858e-01 -3.590666e+00 -4.043375e+00 7.690086e-01 -1.086368e+00 -3.737127e-02 1.397027e+00 9.390795e-01 1.178330e+00 8.593479e-01 3.619921e-01 3.094131e-01 7.258290e-01 5.033713e-01 2.392415e-01 8.783084e-01 -4.443428e-01 -6.603195e-03 -1.218981e-01 -4.607834e-01 -9.467767e-02 -4.313831e-01 -1.231790e-01 -9.751552e-02 8.153442e-02 -9.951539e-02 -1.201010e-01 8.020719e-02 + 39 + 3.736006e+01 2.289835e+01 3.759547e+01 3.200874e+01 3.488742e+01 3.399289e+01 3.156306e+01 2.907415e+01 2.359594e+01 2.204734e+01 1.810987e+01 1.557708e+01 2.218603e+00 4.508864e+00 2.696607e+00 3.105281e+00 3.905009e+00 3.504660e+00 4.028130e+00 3.861485e+00 3.320580e+00 3.256711e+00 3.055228e+00 2.828476e+00 2.106614e+00 2.274040e-01 7.066505e-01 5.124317e-01 5.909451e-01 6.476483e-01 5.813474e-01 6.981947e-01 6.621723e-01 6.242273e-01 5.211967e-01 5.280138e-01 4.837556e-01 4.116738e-01 4.171188e-02 + 1.150663e+02 + 3 + 39 + -2.884917e+01 1.395904e+00 -9.246708e+00 -7.703082e+00 6.501799e-02 -4.743432e+00 -5.224833e-01 1.212558e+00 -1.386164e+00 -3.343222e-01 -1.263889e+00 4.416064e-01 -2.861437e+00 5.258372e-03 -1.277473e-01 3.407833e-02 -8.596761e-02 1.082556e-02 -1.067193e-02 -9.879550e-02 2.740525e-02 4.925224e-02 2.993988e-02 -9.307322e-03 -2.564136e-02 -1.661815e-02 5.471614e-01 -1.770786e-01 2.283467e-01 -2.129895e-02 -1.450515e-01 -1.124999e-01 -1.621733e-01 -1.009684e-01 -8.055526e-03 -5.217172e-02 -8.511852e-02 -7.806198e-02 -1.045783e-01 + 39 + 7.559516e+00 1.918847e+01 2.818336e+01 3.715066e+01 3.280025e+01 2.886176e+01 2.579437e+01 2.171624e+01 1.705792e+01 1.526432e+01 1.414269e+01 1.153695e+01 2.014229e+00 7.865911e-01 1.065505e+00 1.071755e+00 1.213353e+00 1.326881e+00 1.489849e+00 1.387068e+00 1.410659e+00 1.368564e+00 1.311453e+00 1.165506e+00 1.069934e+00 7.917000e-02 3.238181e-01 2.039217e-01 2.315898e-01 2.859559e-01 2.968329e-01 3.394109e-01 3.268660e-01 3.138497e-01 3.019803e-01 2.927725e-01 2.655672e-01 2.325594e-01 1.812666e-02 + 8.862955e+01 + 4 + 39 + -2.328273e+01 -1.826762e+00 -6.005441e+00 -9.152225e+00 -1.233229e+00 -5.967225e+00 -3.227879e+00 7.787307e-01 -7.729097e-01 -7.351304e-01 -2.211749e+00 -5.666499e-01 -3.853850e+00 3.404469e+00 -1.265030e+00 7.862527e-01 1.215244e-02 -1.069610e+00 -1.666404e-01 -1.266580e+00 -6.234483e-01 1.606548e-02 2.859670e-02 -3.429391e-01 -4.986843e-01 -4.522513e-01 5.044739e-01 -1.772329e-01 -1.142679e-01 7.480311e-02 -2.335533e-01 1.176452e-01 -1.053017e-01 -9.034711e-02 -8.577888e-02 6.783504e-02 1.133780e-02 -5.364425e-02 -2.116878e-02 + 39 + 5.059034e+01 2.650001e+01 3.453255e+01 3.107744e+01 3.934074e+01 3.953945e+01 3.865220e+01 3.107117e+01 2.474193e+01 2.257648e+01 2.045967e+01 1.713017e+01 3.461360e+00 5.052910e+00 2.624722e+00 3.185778e+00 4.636134e+00 4.141500e+00 5.254609e+00 4.763460e+00 3.488468e+00 3.200079e+00 2.774304e+00 3.030637e+00 2.229790e+00 6.710814e-01 8.632587e-01 4.879346e-01 4.815650e-01 6.209325e-01 6.183028e-01 7.458255e-01 8.368746e-01 6.379736e-01 5.524029e-01 4.936884e-01 4.982085e-01 3.866669e-01 1.034365e-01 + 1.198983e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.310626e-01 3.689375e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.311648e-01 1.688352e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.760122e-01 3.239878e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "z" + + 5 + 2 + 39 + -1.920552e+01 4.742836e+00 -3.097454e+00 -7.628447e+00 -1.925977e+00 -9.882034e+00 -6.598585e+00 -3.390033e+00 -3.439389e+00 -2.663056e+00 -3.951113e+00 -1.113331e+00 -3.836599e+00 -4.244811e+00 1.180663e+00 -7.967097e-01 2.894043e-01 2.081825e+00 1.482025e+00 1.697822e+00 1.165414e+00 5.533884e-01 2.092743e-01 5.890569e-01 3.034007e-01 -3.499607e-02 5.320745e-01 -9.196333e-01 -6.573100e-02 -1.512627e-01 -4.822035e-01 2.074629e-01 1.044444e-02 2.573226e-01 1.930683e-02 1.874124e-01 8.425877e-02 -3.185978e-03 1.166208e-01 + 39 + 3.879180e+01 2.390570e+01 4.084089e+01 3.692133e+01 4.441855e+01 4.668978e+01 4.253079e+01 3.377279e+01 2.743521e+01 2.910708e+01 1.957791e+01 1.814707e+01 1.749619e+00 2.970742e+00 4.234505e+00 2.966252e+00 4.257471e+00 3.204205e+00 4.440501e+00 3.566850e+00 3.529952e+00 3.268332e+00 2.964025e+00 2.589355e+00 2.459273e+00 1.791471e-01 8.763121e-01 5.008796e-01 4.883010e-01 6.326819e-01 6.473778e-01 8.287174e-01 7.138012e-01 6.883830e-01 5.247942e-01 5.463191e-01 4.550358e-01 4.374301e-01 1.882332e-02 + 1.163415e+02 + 3 + 39 + -2.778002e+01 1.868637e+00 -7.360114e+00 -8.128797e+00 4.664554e-01 -5.299468e+00 -1.317755e+00 1.140399e+00 -1.405552e+00 -7.471170e-01 -1.708319e+00 7.475137e-02 -3.426823e+00 8.576833e-02 -7.311231e-01 -1.886642e-01 -2.479704e-01 -1.962721e-01 2.142168e-02 4.474723e-02 2.256604e-01 2.031615e-01 1.576033e-01 1.086416e-01 2.498989e-02 -3.515611e-02 1.124929e+00 -2.298075e-01 2.936946e-01 -1.286575e-02 -4.125121e-01 -3.522922e-01 -4.741063e-01 -3.484245e-01 -1.208409e-01 -8.244999e-02 -1.669567e-01 -1.240475e-01 -1.066558e-01 + 39 + 1.271351e+01 2.430815e+01 3.879170e+01 3.788428e+01 3.446713e+01 3.179007e+01 3.497109e+01 2.631591e+01 1.883444e+01 1.758719e+01 1.598282e+01 1.278837e+01 2.006232e+00 2.872401e+00 1.479322e+00 1.813868e+00 1.587352e+00 1.896455e+00 2.580597e+00 2.235838e+00 2.012490e+00 1.844616e+00 1.690920e+00 1.498398e+00 1.289862e+00 1.272179e-01 6.362000e-01 3.549233e-01 3.653492e-01 4.562913e-01 4.869065e-01 6.005061e-01 5.536938e-01 4.793222e-01 4.177274e-01 3.857361e-01 3.586276e-01 3.019927e-01 3.194686e-02 + 1.023495e+02 + 4 + 39 + -1.859128e+01 -1.593344e+00 -4.752942e+00 -8.805215e+00 -2.899871e+00 -7.833704e+00 -5.583202e+00 -1.161534e+00 -1.274287e+00 -8.388831e-01 -2.955744e+00 -1.129112e+00 -4.436525e+00 3.532052e+00 -1.639321e+00 2.423018e-01 -1.945913e-02 -1.410155e+00 -2.735853e-01 -1.075530e+00 -6.285062e-01 -1.336830e-01 1.237163e-01 -2.802307e-01 -3.705930e-01 -2.915923e-01 1.905978e-01 -6.497428e-02 -9.768702e-02 5.121569e-02 -9.815682e-02 2.172520e-01 7.281072e-02 3.462427e-02 -1.366656e-01 4.334936e-03 3.668991e-02 -2.142432e-02 1.927486e-02 + 39 + 5.421535e+01 3.445893e+01 3.954433e+01 3.406635e+01 4.796641e+01 5.415524e+01 4.807024e+01 3.861639e+01 3.186858e+01 3.087710e+01 2.532754e+01 2.091594e+01 4.209635e+00 4.759599e+00 3.686662e+00 3.679382e+00 5.042652e+00 4.885042e+00 5.798614e+00 5.559037e+00 4.278254e+00 3.798548e+00 3.310529e+00 3.196698e+00 2.519837e+00 6.955153e-01 1.027016e+00 5.960351e-01 5.001560e-01 6.517936e-01 7.526888e-01 8.957612e-01 8.674188e-01 7.623376e-01 6.439487e-01 5.749502e-01 5.199094e-01 4.278831e-01 7.304218e-02 + 1.254263e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.526188e-01 3.473812e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.540203e-01 2.459797e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.385711e-01 3.614288e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "l" + + 5 + 2 + 39 + -2.076319e+00 -5.148401e+00 -9.815087e+00 -2.012165e+01 -6.920690e+00 -9.136685e-01 -9.165577e+00 -7.389997e+00 -3.185251e+00 2.911303e-01 -1.296123e+00 -3.810404e+00 -1.568496e+00 8.963729e-01 4.892791e-01 -5.132197e-01 -1.906506e+00 1.684812e-01 1.314207e+00 -3.274781e-01 -9.168497e-01 -5.534130e-01 2.095539e-01 6.551706e-01 1.881262e-01 1.822684e-01 -3.227554e-01 -2.434864e-01 1.677562e-01 4.009047e-01 -9.695600e-02 -2.817089e-01 1.287724e-01 5.189605e-01 9.754813e-02 -1.338235e-01 -6.156527e-02 1.607310e-01 -5.023359e-02 + 39 + 1.280899e+01 5.052003e+01 4.745967e+01 6.591975e+01 5.288762e+01 7.028381e+01 7.220864e+01 6.208580e+01 6.189622e+01 5.602080e+01 5.968229e+01 3.906965e+01 2.569835e+00 1.843630e+00 3.082018e+00 2.344606e+00 3.970300e+00 3.711831e+00 4.791475e+00 4.891627e+00 4.844233e+00 4.433836e+00 3.978803e+00 3.471814e+00 3.240933e+00 2.545458e-01 4.563420e-01 4.726929e-01 3.821809e-01 7.829260e-01 7.323467e-01 7.481542e-01 8.221897e-01 8.774370e-01 1.025424e+00 8.348718e-01 6.839926e-01 6.067432e-01 2.666439e-02 + 1.252828e+02 + 3 + 39 + -5.856282e-01 -3.475569e+00 -1.069768e+01 -2.503847e+01 -7.921915e+00 2.838028e+00 -7.055474e+00 -6.583611e+00 -4.584039e+00 -1.167456e+00 5.224827e-01 -1.654305e+00 -1.350401e+00 -6.847543e-02 -1.528591e-01 -1.523839e-02 1.386125e-01 1.326991e-01 -1.870092e-01 -2.512893e-01 2.138429e-01 2.329177e-01 1.447425e-01 -7.839480e-02 -1.255465e-01 -7.192627e-03 -2.510391e-01 -2.991598e-01 1.002134e-01 6.117168e-01 8.619838e-02 -3.458547e-01 -7.682495e-02 2.175317e-01 3.197875e-01 9.434387e-02 -2.459882e-01 -2.093099e-01 -4.122909e-02 + 39 + 9.135080e+00 3.827733e+01 4.436526e+01 5.843868e+01 5.901371e+01 6.001325e+01 6.938873e+01 5.842020e+01 5.505424e+01 5.323339e+01 4.744427e+01 3.515866e+01 1.705346e+00 5.184282e-01 3.192425e+00 1.364795e+00 2.883903e+00 2.437766e+00 2.561857e+00 2.941425e+00 2.910267e+00 3.689540e+00 3.439773e+00 2.343283e+00 2.603315e+00 1.133697e-01 1.869213e-01 3.102035e-01 2.789322e-01 4.846565e-01 4.678448e-01 5.524579e-01 5.297801e-01 6.406617e-01 5.786700e-01 5.606857e-01 5.050610e-01 4.068475e-01 1.940117e-02 + 1.119030e+02 + 4 + 39 + -2.575279e+00 -7.047771e+00 -9.768353e+00 -1.909601e+01 -6.251339e+00 -2.438496e+00 -1.096461e+01 -4.720616e+00 -4.293829e-01 9.257873e-01 -2.599979e+00 -4.694291e+00 -1.519005e+00 -9.164684e-01 -8.724427e-01 9.915056e-01 2.286520e+00 -3.960328e-01 -1.775155e+00 2.267633e-02 1.610135e+00 8.119814e-01 -5.213370e-01 -1.076872e+00 -4.657926e-02 -1.721693e-01 -2.675121e-01 1.646848e-01 3.755552e-01 2.628132e-01 -2.620411e-01 -7.486879e-02 4.878721e-01 1.570847e-01 -4.761748e-01 -3.810447e-01 1.102369e-01 3.668213e-01 -9.792231e-02 + 39 + 1.149710e+01 3.981714e+01 4.534940e+01 6.169224e+01 4.894395e+01 7.665724e+01 7.369744e+01 5.893503e+01 6.395772e+01 5.905539e+01 5.678957e+01 4.015787e+01 2.693798e+00 1.779133e+00 3.691770e+00 2.853295e+00 5.200035e+00 5.042246e+00 4.577377e+00 4.866356e+00 5.520376e+00 5.773425e+00 4.443839e+00 3.584205e+00 3.761091e+00 3.764453e-01 3.394280e-01 4.138173e-01 3.482941e-01 7.616937e-01 7.073138e-01 6.987734e-01 7.237774e-01 8.426548e-01 1.035952e+00 8.133777e-01 7.032485e-01 5.753817e-01 2.903314e-02 + 1.260803e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.659716e-01 5.340284e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.037638e-01 2.962362e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.204565e-01 4.795435e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ts" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.849423e+01 -7.241725e+00 -3.852108e+00 -7.774209e+00 -5.596538e+00 -6.714453e+00 -9.832263e-01 9.414796e-01 -1.563661e+00 -1.499532e+00 -2.413518e+00 4.308457e-02 -4.360301e+00 3.205270e+00 -2.987491e-01 4.605551e-01 5.633189e-01 -7.702059e-01 -9.046050e-01 -1.309110e+00 -3.433589e-01 -4.854245e-01 -5.753533e-01 -9.350238e-01 -7.007295e-01 1.608566e-01 7.797504e-01 -1.081257e-01 -1.004669e-01 -1.172639e-01 -1.605169e-01 1.594381e-01 -5.701525e-01 -1.777309e-01 -1.314189e-01 2.648882e-02 9.213286e-02 -1.501423e-01 2.520365e-02 + 39 + 2.586847e+01 2.857648e+01 2.643202e+01 2.715106e+01 2.886203e+01 2.844051e+01 3.366603e+01 2.828145e+01 2.643406e+01 2.176502e+01 1.952646e+01 1.734786e+01 1.966420e+00 4.456964e+00 2.946646e+00 4.160259e+00 3.609068e+00 4.854924e+00 4.671083e+00 4.709596e+00 3.575860e+00 3.738955e+00 3.158588e+00 3.078765e+00 2.338724e+00 3.986704e-01 5.575365e-01 5.253838e-01 5.624387e-01 6.634787e-01 6.663375e-01 7.586389e-01 7.882815e-01 7.040000e-01 6.288448e-01 5.689353e-01 5.550729e-01 4.743002e-01 1.079093e-01 + 1.179635e+02 + 4 + 39 + -2.884917e+01 1.395904e+00 -9.246708e+00 -7.703082e+00 6.501799e-02 -4.743432e+00 -5.224833e-01 1.212558e+00 -1.386164e+00 -3.343222e-01 -1.263889e+00 4.416064e-01 -2.861437e+00 5.258372e-03 -1.277473e-01 3.407833e-02 -8.596761e-02 1.082556e-02 -1.067193e-02 -9.879550e-02 2.740525e-02 4.925224e-02 2.993988e-02 -9.307322e-03 -2.564136e-02 -1.661815e-02 5.471614e-01 -1.770786e-01 2.283467e-01 -2.129895e-02 -1.450515e-01 -1.124999e-01 -1.621733e-01 -1.009684e-01 -8.055526e-03 -5.217172e-02 -8.511852e-02 -7.806198e-02 -1.045783e-01 + 39 + 7.559516e+00 1.918847e+01 2.818336e+01 3.715066e+01 3.280025e+01 2.886176e+01 2.579437e+01 2.171624e+01 1.705792e+01 1.526432e+01 1.414269e+01 1.153695e+01 2.014229e+00 7.865911e-01 1.065505e+00 1.071755e+00 1.213353e+00 1.326881e+00 1.489849e+00 1.387068e+00 1.410659e+00 1.368564e+00 1.311453e+00 1.165506e+00 1.069934e+00 7.917000e-02 3.238181e-01 2.039217e-01 2.315898e-01 2.859559e-01 2.968329e-01 3.394109e-01 3.268660e-01 3.138497e-01 3.019803e-01 2.927725e-01 2.655672e-01 2.325594e-01 1.812666e-02 + 8.862955e+01 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "p" + + 5 + 2 + 39 + -1.892050e+01 -2.324305e+00 -4.687226e+00 -1.236393e+00 -1.364142e+00 -3.108607e-01 -1.467404e+00 -1.883939e-01 -9.123114e-01 5.447665e-01 -5.069117e-01 -4.867676e-01 -1.090044e+01 -5.377024e-01 -1.314512e+00 -7.361327e-01 -7.966639e-01 -3.720271e-03 3.071414e-01 3.809156e-01 4.339081e-01 5.377191e-01 4.528283e-01 3.232229e-01 3.509492e-01 2.007192e-01 5.874022e-01 -3.666698e-01 -1.861744e-02 -7.457142e-01 -4.884974e-01 -6.968079e-01 -3.475130e-01 -8.790523e-02 -2.870756e-01 -1.281086e-01 -1.577807e-01 -6.537874e-02 7.371305e-01 + 39 + 9.998935e+00 1.095506e+01 1.219473e+01 1.420403e+01 1.411623e+01 1.536188e+01 1.575724e+01 1.755829e+01 1.731833e+01 1.535924e+01 1.332051e+01 1.191985e+01 4.073561e+00 3.747205e+00 3.451794e+00 3.011184e+00 3.845568e+00 3.288964e+00 3.686831e+00 3.143793e+00 3.491493e+00 3.552626e+00 2.660436e+00 2.421912e+00 1.958340e+00 1.338336e+00 6.594021e-01 5.409554e-01 5.880831e-01 6.561851e-01 6.458050e-01 6.566284e-01 6.185053e-01 6.211303e-01 5.868697e-01 4.974193e-01 4.625883e-01 3.610830e-01 1.370513e-01 + 1.097743e+02 + 3 + 39 + -1.771922e+01 -8.212418e+00 -5.873729e+00 -6.438563e+00 -3.105436e+00 -2.617656e+00 -2.477379e+00 -3.292260e-01 -1.700177e+00 3.256311e-01 -9.514264e-01 -2.396417e-01 -6.556636e+00 3.642420e-02 -1.462252e+00 -6.779874e-01 -1.998759e+00 -6.911805e-01 -8.821833e-01 -1.671364e-01 2.631348e-01 1.081922e-01 1.926026e-01 2.153168e-02 2.645392e-01 1.460169e+00 3.919068e-01 5.330234e-01 3.259757e-01 3.389513e-02 -2.639808e-01 -3.850414e-01 -2.096651e-01 -1.069328e-01 -2.277493e-01 -1.775606e-01 -1.712011e-01 -1.453275e-01 1.456554e-01 + 39 + 3.258607e+01 4.455390e+01 4.066683e+01 4.171628e+01 3.928178e+01 3.400835e+01 3.197787e+01 3.097363e+01 2.740824e+01 2.207767e+01 1.873516e+01 1.581164e+01 6.010569e+00 4.858618e+00 3.608649e+00 4.053210e+00 4.311662e+00 3.851391e+00 4.019070e+00 3.711308e+00 3.674342e+00 3.833882e+00 2.957739e+00 2.663640e+00 2.152915e+00 7.740276e-01 7.985062e-01 8.382938e-01 7.242957e-01 8.481244e-01 8.227895e-01 7.786542e-01 7.494605e-01 7.383130e-01 7.202328e-01 5.716694e-01 5.467966e-01 4.202791e-01 1.369206e-01 + 1.231036e+02 + 4 + 39 + -1.168320e+01 -8.909177e+00 -8.107924e+00 -8.414758e+00 -3.109300e+00 -2.724456e+00 -1.651540e+00 -9.407648e-01 -1.674334e+00 -1.021897e+00 -2.749708e+00 -1.713488e+00 -4.770757e+00 3.198526e+00 3.011178e-01 -3.924979e-01 -1.354502e+00 -1.146576e+00 -6.581329e-01 -1.446408e+00 -5.898952e-01 -1.199556e+00 -8.481846e-01 -6.850266e-01 -5.710939e-01 9.507689e-01 3.502007e-01 1.423562e-01 2.451877e-02 -1.033276e-01 -3.837587e-01 -9.545891e-02 -4.497893e-01 4.599556e-02 -6.832804e-02 2.747240e-02 1.898137e-01 3.861748e-02 3.289079e-02 + 39 + 2.237512e+01 2.742498e+01 4.200616e+01 4.314323e+01 3.733153e+01 4.371882e+01 4.115799e+01 3.669781e+01 3.247055e+01 2.922839e+01 2.605324e+01 1.920450e+01 2.116284e+00 4.208044e+00 3.740133e+00 4.564236e+00 5.199792e+00 4.587859e+00 5.538447e+00 5.579420e+00 4.907856e+00 4.762557e+00 3.438003e+00 3.850636e+00 2.575017e+00 4.661774e-01 4.126602e-01 5.092974e-01 4.870790e-01 6.134127e-01 6.337017e-01 7.089772e-01 7.190645e-01 7.227922e-01 6.894101e-01 6.540084e-01 5.292149e-01 4.244452e-01 9.978860e-02 + 1.221147e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ch" + + 5 + 2 + 39 + -2.920550e+01 -4.586658e+00 1.242653e+00 -1.186077e+01 -3.395528e+00 1.117888e+00 -3.373459e+00 3.140979e-01 -3.806491e-01 -1.048458e+00 2.645961e-01 -7.978325e-02 -3.196038e+00 -1.663595e+00 5.942247e-01 1.073530e+00 -1.366439e-01 -7.540005e-01 -3.270454e-02 6.510703e-01 8.824855e-02 1.595496e-01 1.961114e-02 1.138154e-01 1.132397e-01 8.148466e-01 8.649031e-01 3.299173e-02 -7.150818e-02 6.204989e-01 -2.101506e-01 -4.241190e-01 5.057563e-02 -1.219942e-01 -2.456791e-01 -6.134541e-02 -2.216914e-01 -9.382916e-02 -2.782448e-01 + 39 + 2.002032e+01 3.055477e+01 3.112127e+01 2.314282e+01 3.285942e+01 2.003349e+01 1.932194e+01 1.896228e+01 1.636218e+01 1.358424e+01 1.149830e+01 9.324533e+00 2.588201e+00 2.917047e+00 2.705101e+00 2.292553e+00 2.503894e+00 2.208836e+00 2.090348e+00 1.903433e+00 1.889282e+00 1.542747e+00 1.517027e+00 1.278606e+00 1.135664e+00 3.468945e-01 5.893496e-01 6.188331e-01 5.762668e-01 5.758261e-01 4.617407e-01 4.169338e-01 4.073762e-01 3.933929e-01 3.461043e-01 3.220103e-01 2.779753e-01 2.448369e-01 5.943806e-02 + 1.015888e+02 + 3 + 39 + -2.861927e+01 -6.613288e+00 2.881314e+00 -9.710835e+00 -8.466413e+00 -1.118801e+00 -7.846658e-01 -6.734903e-01 -6.506518e-01 -1.009885e+00 -4.468108e-01 -6.660277e-02 -2.521544e+00 1.604693e+00 -4.629842e-01 -2.847042e-01 7.027578e-01 -7.310497e-01 -1.186316e+00 9.328957e-02 1.203796e-03 -3.636340e-01 -1.276447e-01 -3.111908e-01 -1.574407e-01 -1.985297e-01 9.927593e-01 -7.050874e-02 -2.236382e-01 9.151442e-02 1.480238e-01 -2.326017e-01 -4.293096e-01 5.071583e-03 -1.336511e-01 -1.544640e-01 -1.026688e-01 -7.395132e-02 -1.732534e-01 + 39 + 1.259437e+01 1.975238e+01 1.944371e+01 2.324729e+01 3.135996e+01 2.125399e+01 2.157771e+01 2.004443e+01 1.809000e+01 1.550663e+01 1.442639e+01 1.260171e+01 1.589998e+00 2.504391e+00 1.152623e+00 1.733302e+00 1.815041e+00 2.276243e+00 2.117136e+00 1.830317e+00 1.975468e+00 1.578970e+00 1.511293e+00 1.450005e+00 1.159186e+00 1.466382e-01 5.115132e-01 2.691430e-01 4.292223e-01 3.232233e-01 4.505345e-01 4.702173e-01 4.778924e-01 4.004009e-01 3.814109e-01 3.573084e-01 3.295531e-01 2.779912e-01 4.480811e-02 + 9.706351e+01 + 4 + 39 + -1.668956e+01 -7.626933e+00 9.557470e-01 -6.855501e+00 -9.900976e+00 -7.006907e+00 -3.623891e+00 -4.983982e-01 -2.681373e+00 -2.842861e+00 -2.206669e+00 -1.223806e+00 -3.597547e+00 4.861076e+00 -6.255245e-01 -5.912592e-01 4.342815e-02 -6.296771e-01 -1.666589e+00 -2.070921e+00 8.093061e-02 -7.851929e-01 -7.090806e-01 -5.062501e-01 -3.857279e-01 2.987862e-02 -5.102169e-02 -1.764486e-01 -1.988600e-01 -5.216499e-01 9.520105e-02 3.557260e-01 -3.275777e-01 9.930916e-02 7.115602e-02 1.651504e-01 1.639212e-01 1.541061e-02 1.522316e-01 + 39 + 6.444881e+01 2.332691e+01 3.106678e+01 3.681667e+01 3.896181e+01 3.538433e+01 3.692475e+01 2.973571e+01 3.118544e+01 2.245101e+01 2.280416e+01 1.613585e+01 2.453973e+00 3.952199e+00 2.779322e+00 4.157029e+00 3.861085e+00 5.607934e+00 5.642585e+00 6.396730e+00 4.444990e+00 4.506649e+00 3.572860e+00 3.665684e+00 2.498502e+00 5.327356e-01 1.016652e+00 3.879644e-01 4.511585e-01 4.689055e-01 6.936331e-01 7.057928e-01 8.771105e-01 6.906686e-01 6.284688e-01 5.601078e-01 5.019803e-01 3.789370e-01 5.427634e-02 + 1.206436e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.578594e-01 3.421406e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.081071e-01 2.918929e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.967636e-01 4.032364e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ow" + + 5 + 2 + 39 + -1.496826e+00 -1.204058e+01 -9.535791e+00 -1.751927e+01 -9.743062e+00 -2.758614e+00 -1.022628e+01 -1.359590e+00 -8.508592e-01 2.031182e+00 -1.981460e+00 -4.735507e+00 -6.978105e-01 6.799035e-01 -3.904143e-01 -7.662106e-01 -1.669844e+00 6.072059e-02 1.563125e+00 9.378329e-03 -4.365463e-01 1.061368e-01 5.572838e-01 5.262003e-01 -1.920495e-01 2.783201e-01 -3.479424e-01 4.639079e-01 2.243199e-01 3.110311e-01 1.094622e-01 -3.226179e-02 3.060828e-01 -2.129594e-01 -3.631093e-01 -2.121579e-01 5.541440e-02 2.778598e-01 -1.530217e-01 + 39 + 1.104821e+01 2.839522e+01 3.827823e+01 6.302195e+01 5.387218e+01 8.515009e+01 6.386321e+01 6.369644e+01 5.838703e+01 6.111734e+01 9.298187e+01 3.819809e+01 1.281946e+00 1.070263e+00 1.989572e+00 2.175701e+00 2.571929e+00 3.467730e+00 3.095176e+00 3.435887e+00 4.116155e+00 3.978162e+00 3.831384e+00 3.251979e+00 2.865503e+00 1.217420e-01 3.347204e-01 2.338707e-01 3.039767e-01 4.753428e-01 5.597842e-01 6.002352e-01 6.657109e-01 8.068437e-01 6.711291e-01 6.534595e-01 6.103963e-01 4.980243e-01 1.976833e-02 + 1.167772e+02 + 3 + 39 + 3.135683e-03 -8.297441e+00 -1.050141e+01 -2.152485e+01 -1.054083e+01 1.515267e+00 -8.037125e+00 -3.990688e+00 -3.488322e+00 4.882907e-01 2.874002e-01 -2.490486e+00 -8.757638e-01 5.095951e-02 5.215340e-01 1.851544e-01 -7.655368e-02 -1.420506e-01 2.539351e-02 -6.345187e-02 -2.390773e-01 -4.076880e-01 -1.963714e-01 4.389362e-02 2.305103e-01 -9.784020e-02 -6.228102e-02 5.870527e-02 7.257561e-02 2.732817e-01 7.019834e-02 -2.125883e-01 -7.294060e-02 -3.446962e-03 -1.691743e-02 -3.581442e-02 -9.071778e-02 -4.195469e-02 -4.955054e-02 + 39 + 9.507417e+00 3.968594e+01 3.217073e+01 6.887312e+01 6.306540e+01 7.702350e+01 6.354832e+01 5.738121e+01 5.835273e+01 6.753706e+01 8.239681e+01 3.869114e+01 1.389060e+00 2.321500e-01 7.028881e-01 7.157544e-01 1.376450e+00 1.182303e+00 1.566877e+00 1.647577e+00 1.569238e+00 1.775150e+00 1.771057e+00 1.529534e+00 1.384091e+00 2.188977e-02 4.469056e-02 1.235238e-01 1.173602e-01 1.961060e-01 2.172146e-01 2.393328e-01 2.513506e-01 2.719899e-01 2.741417e-01 3.026875e-01 2.634724e-01 2.271392e-01 1.000000e-02 + 9.196978e+01 + 4 + 39 + -7.708634e-01 -5.934060e+00 -8.562445e+00 -1.731995e+01 -9.665834e+00 -1.172867e+00 -1.017435e+01 -5.756144e+00 -5.794119e+00 3.775277e-01 -3.061120e-01 -2.501628e+00 -2.053141e+00 -1.257317e+00 1.055318e+00 6.371372e-01 2.220551e+00 9.816808e-01 -1.058446e+00 4.962248e-01 -1.121744e-01 -3.728563e-02 -7.355411e-01 -7.811394e-01 -1.044601e-01 -6.054566e-01 -6.321566e-01 4.663505e-02 9.171162e-02 4.128088e-01 2.686811e-01 -4.121811e-02 3.587120e-01 2.092208e-01 2.074872e-01 -8.207273e-02 -1.232018e-01 4.997055e-03 -1.219291e-01 + 39 + 1.278872e+01 3.752876e+01 3.844095e+01 7.747964e+01 5.433975e+01 8.180002e+01 7.359389e+01 5.396420e+01 6.412735e+01 6.406100e+01 7.991599e+01 3.857301e+01 2.754791e+00 2.739293e+00 3.054638e+00 2.338343e+00 4.255733e+00 4.352776e+00 4.184277e+00 4.682212e+00 4.748186e+00 4.773383e+00 4.733326e+00 4.474306e+00 3.162796e+00 2.443986e-01 3.853427e-01 4.171769e-01 3.536149e-01 7.579654e-01 5.932336e-01 6.683665e-01 7.427458e-01 7.303964e-01 8.429692e-01 7.517952e-01 6.996256e-01 5.383229e-01 3.795955e-02 + 1.253032e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.551764e-01 3.448236e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.578293e-01 1.421707e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.867040e-01 3.132960e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "el" + + 5 + 2 + 39 + -2.995963e-01 -4.562097e+00 -1.039239e+01 -2.392029e+01 -9.308281e+00 1.013067e+00 -7.441321e+00 -6.446606e+00 -5.618795e+00 -2.411174e-01 -3.660920e-01 -1.772814e+00 -1.783025e+00 1.089056e+00 3.819905e-01 -2.791972e-01 -2.788898e+00 -7.802507e-01 1.271889e+00 1.593953e-01 -9.420852e-02 -2.804618e-01 -2.979634e-01 3.667425e-01 4.775748e-01 3.540245e-01 -7.265548e-01 6.229303e-02 1.022548e-01 9.154515e-01 4.131580e-01 -3.001249e-01 1.960233e-01 3.091466e-01 1.541090e-01 -1.212155e-01 -1.541544e-01 3.749209e-02 -2.043369e-01 + 39 + 9.066988e+00 3.481878e+01 3.921243e+01 5.918419e+01 5.565816e+01 5.674573e+01 6.528921e+01 4.628328e+01 4.605715e+01 4.924903e+01 5.764965e+01 3.109270e+01 1.514269e+00 2.276204e+00 2.017812e+00 2.287194e+00 4.156447e+00 4.072791e+00 3.204515e+00 3.598511e+00 3.745907e+00 3.494843e+00 3.189171e+00 3.023957e+00 2.383145e+00 1.628354e-01 4.392800e-01 3.804366e-01 4.453891e-01 8.095587e-01 6.777376e-01 6.220917e-01 7.034473e-01 6.339282e-01 6.937572e-01 6.798955e-01 6.107337e-01 4.941652e-01 2.566024e-02 + 1.183111e+02 + 3 + 39 + 2.149464e-01 -8.098091e-01 -1.053023e+01 -2.797588e+01 -1.049957e+01 2.427797e+00 -5.289586e+00 -4.225442e+00 -5.299278e+00 -3.139179e+00 -6.501931e-01 -3.309941e-01 -1.931112e+00 -1.154483e-01 4.587531e-01 3.968093e-02 1.644517e-01 2.447814e-01 -1.962703e-01 9.039005e-02 1.398655e-01 -1.543499e-01 -2.091463e-01 -7.043429e-02 -8.344340e-02 -1.244427e-01 -2.399617e-01 -7.217364e-02 5.949706e-02 6.853188e-01 2.455647e-01 -2.146825e-01 -2.621926e-02 -8.625649e-02 -5.982816e-04 1.020438e-01 -5.517504e-02 -1.175794e-01 -1.024095e-01 + 39 + 7.974993e+00 3.039329e+01 4.405769e+01 5.035884e+01 6.441090e+01 4.880980e+01 5.992113e+01 5.129838e+01 4.229620e+01 3.838726e+01 4.148305e+01 3.083193e+01 1.638229e+00 3.310896e-01 1.121958e+00 8.652384e-01 2.017097e+00 1.593905e+00 1.459243e+00 1.675832e+00 1.880837e+00 1.777683e+00 1.798626e+00 1.508613e+00 1.353646e+00 4.507455e-02 1.598069e-01 2.062249e-01 2.134134e-01 4.965205e-01 3.869032e-01 3.336527e-01 3.418841e-01 3.847768e-01 3.821378e-01 3.367998e-01 3.128437e-01 2.885646e-01 1.462834e-02 + 9.791908e+01 + 4 + 39 + -3.159436e+00 -4.471557e-01 -9.613906e+00 -2.004633e+01 -6.363063e+00 2.568795e-02 -5.057521e+00 -4.800300e+00 -6.188796e+00 -2.204886e+00 -1.519871e+00 -1.975758e+00 -3.742703e+00 -1.846645e+00 -1.594097e-01 5.937571e-01 3.302192e+00 1.278733e+00 -9.146572e-01 1.192742e-01 1.398099e-01 5.266739e-01 1.339151e-01 -4.712441e-01 -3.727994e-01 -6.334369e-01 -4.616393e-01 -2.070413e-01 1.413717e-01 3.308031e-01 7.304717e-03 -1.009067e-01 6.771749e-02 2.381857e-01 2.394202e-01 7.294831e-03 -3.159553e-02 5.122761e-02 -6.001233e-02 + 39 + 1.951065e+01 2.997614e+01 3.605832e+01 7.054981e+01 5.172981e+01 4.760866e+01 7.398074e+01 5.976078e+01 5.321523e+01 5.191603e+01 4.080398e+01 3.373920e+01 4.423838e+00 3.285980e+00 3.297395e+00 2.715012e+00 6.382698e+00 5.132247e+00 3.900295e+00 4.346548e+00 4.559731e+00 4.577038e+00 4.393978e+00 3.662121e+00 3.157841e+00 3.536147e-01 5.203962e-01 3.874326e-01 3.816757e-01 1.105715e+00 7.801355e-01 5.643169e-01 6.754205e-01 7.301339e-01 8.153346e-01 7.854725e-01 5.911192e-01 5.344828e-01 5.560802e-02 + 1.258810e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.138786e-01 4.861214e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.887700e-01 2.112300e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.989049e-01 3.010952e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "aa" + + 5 + 2 + 39 + -1.144843e+00 -1.485015e+01 -1.344290e+01 -1.606934e+01 -6.466915e+00 -1.011854e-01 -5.610056e+00 -8.120448e-01 -1.188836e+00 -1.357678e+00 -2.987893e+00 -5.727632e+00 -5.412551e-01 7.083132e-01 -1.407382e+00 -1.129492e+00 -8.866760e-01 6.701236e-01 1.344280e+00 1.768631e-01 -1.442405e-01 3.473758e-01 -1.594484e-01 6.980966e-02 -4.179749e-01 4.337962e-01 -5.006601e-01 3.857401e-01 3.081228e-01 4.462925e-01 2.011599e-01 -1.713594e-01 8.792721e-02 -1.398860e-01 -1.134980e-01 -2.092988e-02 4.770097e-02 2.264400e-01 -1.773656e-01 + 39 + 1.243300e+01 3.149581e+01 3.730244e+01 5.120302e+01 5.108672e+01 8.101893e+01 6.855783e+01 6.837144e+01 6.129484e+01 5.178818e+01 6.315172e+01 3.796945e+01 1.300464e+00 1.626332e+00 1.871427e+00 2.267491e+00 3.049185e+00 3.412823e+00 3.479260e+00 3.829788e+00 4.111172e+00 3.279632e+00 2.792800e+00 2.701403e+00 2.554490e+00 1.692288e-01 3.848982e-01 2.946346e-01 3.111199e-01 4.587065e-01 5.115510e-01 5.780110e-01 6.861879e-01 7.629483e-01 5.929223e-01 5.286843e-01 5.373095e-01 4.215081e-01 2.384703e-02 + 1.163677e+02 + 3 + 39 + -4.962398e-01 -1.592324e+01 -1.594822e+01 -1.668393e+01 -3.537115e+00 2.284569e+00 -5.005660e+00 -2.634465e+00 -7.271712e-01 -2.347188e+00 -2.586561e+00 -5.828526e+00 -4.405227e-02 2.880769e-02 2.188191e-03 -1.237440e-01 2.510564e-01 1.390056e-01 -3.125109e-01 -1.847066e-01 1.779717e-01 1.510444e-01 -9.269968e-02 -1.115618e-01 -1.428465e-02 -2.124793e-02 -1.011717e-02 1.875405e-01 1.372402e-01 9.979779e-02 -1.755083e-01 -2.595220e-01 -8.646467e-02 1.103704e-01 -2.465552e-02 3.451945e-02 -2.632660e-02 5.165226e-02 -5.468570e-02 + 39 + 1.210545e+01 3.011921e+01 3.169385e+01 5.325193e+01 5.023425e+01 7.465085e+01 7.063511e+01 6.965192e+01 6.264733e+01 4.899428e+01 5.535222e+01 3.948286e+01 7.982999e-01 2.196178e-01 6.354901e-01 6.868225e-01 1.180286e+00 1.224600e+00 1.668240e+00 1.639369e+00 1.695707e+00 1.295254e+00 1.157708e+00 1.187093e+00 1.088278e+00 1.668157e-02 4.311593e-02 1.100076e-01 1.215299e-01 1.706822e-01 1.882990e-01 2.183244e-01 2.591704e-01 2.553255e-01 2.245899e-01 2.085389e-01 2.032815e-01 1.914035e-01 1.000000e-02 + 8.731029e+01 + 4 + 39 + -1.241425e+00 -1.378690e+01 -1.358319e+01 -1.444376e+01 -5.592252e+00 -2.505048e+00 -6.042815e+00 -4.683537e-01 -2.189924e-01 -1.441034e+00 -4.138910e+00 -5.887527e+00 -1.056715e+00 -6.669389e-01 2.004651e+00 1.363637e+00 1.593488e+00 -4.999109e-01 -1.457963e+00 -4.028556e-01 1.333517e-01 -4.538980e-01 1.846120e-01 1.706744e-02 5.922989e-01 -7.309108e-01 -5.053664e-01 4.294764e-01 3.899128e-01 4.510656e-01 1.984943e-01 1.195888e-01 8.781420e-02 -3.082150e-01 -2.168758e-01 -4.818747e-02 8.431567e-02 1.648338e-01 -2.171477e-01 + 39 + 1.340412e+01 3.611277e+01 4.055252e+01 5.026285e+01 4.822923e+01 8.253130e+01 7.087849e+01 6.507404e+01 6.211519e+01 5.538072e+01 5.826851e+01 4.282847e+01 1.893866e+00 2.201347e+00 3.343766e+00 2.781873e+00 3.982911e+00 3.626006e+00 3.771158e+00 4.498708e+00 4.937158e+00 4.015502e+00 3.556279e+00 3.320827e+00 2.945519e+00 3.665110e-01 3.938202e-01 4.429173e-01 3.671794e-01 5.431991e-01 5.703188e-01 7.606277e-01 7.085045e-01 7.391391e-01 6.059446e-01 6.186298e-01 5.614789e-01 4.921397e-01 4.403629e-02 + 1.226315e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.508414e-01 3.491586e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.582087e-01 1.417913e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.400940e-01 3.599060e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "aw" + + 5 + 2 + 39 + -3.960156e+00 -1.727128e+01 -8.936882e+00 -1.318144e+01 -8.810958e+00 -4.669393e+00 -3.796062e+00 2.724116e+00 -2.170557e+00 -3.896416e+00 -6.949752e+00 -4.350765e+00 -4.890090e-01 2.907942e-01 -1.282039e+00 -8.129766e-01 -2.956532e-01 7.959878e-01 8.924574e-01 -3.879966e-02 6.114336e-02 4.604239e-01 -4.192810e-01 -4.867235e-01 -2.781640e-01 2.946338e-01 -2.478319e-01 4.793258e-01 3.465648e-02 1.795783e-01 2.457436e-01 1.376427e-01 -7.435652e-03 -3.905502e-01 -1.020242e-01 1.121698e-01 1.995116e-01 7.456961e-02 -1.489421e-01 + 39 + 1.355314e+01 2.694604e+01 4.723312e+01 4.409262e+01 5.936282e+01 5.830056e+01 7.018849e+01 6.418954e+01 6.975093e+01 4.813372e+01 3.874616e+01 3.687803e+01 8.940120e-01 8.800422e-01 1.854146e+00 1.792057e+00 2.240252e+00 2.697235e+00 2.528186e+00 3.430625e+00 3.444632e+00 2.534988e+00 2.210880e+00 2.087746e+00 2.064824e+00 1.154191e-01 3.030841e-01 2.436194e-01 2.656377e-01 3.767912e-01 4.575878e-01 4.347641e-01 5.821528e-01 5.906431e-01 5.117069e-01 4.050591e-01 3.831606e-01 3.571455e-01 2.087823e-02 + 1.093257e+02 + 3 + 39 + -1.986416e+00 -1.677090e+01 -1.300717e+01 -1.489040e+01 -4.425050e+00 -1.128403e-02 -4.540924e+00 -1.897334e+00 2.046076e-01 -3.670915e+00 -5.217970e+00 -5.352875e+00 -3.373649e-01 2.442429e-01 4.068123e-01 -3.507800e-01 -4.846530e-01 1.794489e-01 5.261758e-01 -1.828420e-01 -4.419790e-01 -5.459513e-02 2.523034e-01 3.799386e-01 -9.928846e-03 -3.921349e-02 1.367048e-02 1.675351e-01 7.708352e-02 8.359511e-03 -1.671783e-01 -1.178725e-01 -2.005598e-02 3.306644e-02 -7.013027e-02 6.720579e-02 6.217782e-02 5.953635e-02 -3.720531e-02 + 39 + 1.168079e+01 2.847984e+01 3.596948e+01 5.038778e+01 5.032819e+01 7.379780e+01 7.496327e+01 5.934330e+01 5.745896e+01 5.042488e+01 4.937821e+01 3.959920e+01 1.065621e+00 2.288044e-01 6.732049e-01 6.722262e-01 1.164913e+00 1.441996e+00 1.344929e+00 1.475476e+00 1.492511e+00 1.432047e+00 1.289515e+00 1.315005e+00 1.229477e+00 1.556152e-02 3.768962e-02 9.724515e-02 1.099750e-01 1.704605e-01 1.961954e-01 2.136490e-01 2.474482e-01 2.337131e-01 2.256021e-01 1.933938e-01 2.135061e-01 2.018450e-01 1.000000e-02 + 8.699852e+01 + 4 + 39 + -1.173959e+00 -1.039808e+01 -1.330738e+01 -1.768501e+01 -6.758533e+00 5.753952e-01 -5.962058e+00 -3.480625e+00 -1.802986e+00 2.079958e-02 -2.494045e+00 -4.538093e+00 -1.716055e+00 -5.350387e-01 1.473274e+00 9.993830e-01 1.325859e+00 -6.300021e-01 -1.191540e+00 -1.539634e-01 -2.457683e-01 -5.304464e-01 3.093117e-01 9.557987e-02 3.061018e-01 -5.452325e-01 -3.736632e-01 9.649338e-02 3.350433e-01 5.331585e-01 1.284798e-01 -2.063891e-01 7.792021e-02 -3.802629e-02 -9.318070e-02 -1.482839e-01 -1.538798e-01 3.843144e-02 -1.052811e-01 + 39 + 1.584429e+01 4.057111e+01 3.523413e+01 6.726022e+01 6.100343e+01 7.425407e+01 7.874316e+01 5.265452e+01 5.980461e+01 5.980104e+01 6.527282e+01 3.914238e+01 3.560679e+00 2.155641e+00 2.976234e+00 2.691785e+00 5.257015e+00 4.282754e+00 3.729198e+00 4.277801e+00 4.411643e+00 4.033289e+00 3.849657e+00 3.692670e+00 2.954495e+00 2.851202e-01 3.567439e-01 4.062506e-01 3.807256e-01 7.000386e-01 6.739980e-01 6.559559e-01 7.057441e-01 6.717830e-01 6.873667e-01 6.595057e-01 6.324924e-01 5.038021e-01 4.583475e-02 + 1.242204e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.859212e-01 3.140788e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.892255e-01 1.107745e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 7.647251e-01 2.352749e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "ay" + + 5 + 2 + 39 + -1.447586e+00 -1.565305e+01 -1.329260e+01 -1.652023e+01 -5.209701e+00 7.325621e-01 -5.290717e+00 -1.955650e+00 -4.393473e-02 -1.234897e+00 -4.212914e+00 -6.382186e+00 -3.924816e-01 3.326200e-01 -1.648915e+00 -3.358878e-01 -2.298180e-01 4.001395e-01 4.647290e-01 -1.305031e-02 2.809399e-01 7.259507e-01 -3.330495e-01 -6.197920e-01 -5.131235e-01 3.784258e-01 -5.148864e-01 4.409830e-01 4.226107e-01 5.386089e-01 -4.485245e-04 -3.893485e-01 1.032187e-01 5.567207e-02 -1.963764e-01 -1.089856e-01 2.881218e-02 3.082922e-01 -1.880017e-01 + 39 + 1.103488e+01 2.948770e+01 3.310658e+01 4.714290e+01 5.186525e+01 7.604211e+01 6.066452e+01 5.914774e+01 5.480719e+01 5.191853e+01 5.977881e+01 3.729281e+01 1.110346e+00 1.706673e+00 1.820461e+00 2.474820e+00 3.383524e+00 3.119823e+00 3.912370e+00 3.145030e+00 3.507479e+00 2.896935e+00 2.489459e+00 2.588364e+00 2.595427e+00 1.995611e-01 4.048474e-01 2.784362e-01 3.213939e-01 5.107624e-01 5.457332e-01 5.707903e-01 5.956306e-01 6.356446e-01 5.363390e-01 5.023952e-01 5.609905e-01 4.389568e-01 2.279931e-02 + 1.148572e+02 + 3 + 39 + -2.366711e+00 -1.760571e+01 -1.188742e+01 -1.339159e+01 -5.470710e+00 -2.345525e+00 -4.425318e+00 2.319017e-01 8.743407e-01 -4.045353e+00 -5.972320e+00 -5.512629e+00 -3.480775e-01 -2.047205e-01 4.132880e-02 6.948075e-01 3.820956e-01 -6.791341e-01 -8.555157e-01 1.702372e-01 6.926709e-01 -9.519449e-02 -2.829728e-01 -6.449383e-02 2.880851e-01 -6.629071e-02 -1.373438e-03 2.063763e-01 1.189871e-01 -3.753938e-02 -1.773916e-01 -9.822309e-02 -1.391197e-02 -1.521705e-02 -1.297930e-01 8.338678e-02 1.401377e-01 6.359246e-02 -3.424096e-02 + 39 + 1.093249e+01 2.683420e+01 3.635485e+01 3.883961e+01 5.338438e+01 6.917117e+01 6.287588e+01 6.368967e+01 6.587718e+01 4.604851e+01 4.282024e+01 4.154753e+01 1.052651e+00 2.186876e-01 6.536937e-01 1.008773e+00 1.059605e+00 1.711594e+00 1.707829e+00 1.705146e+00 1.821258e+00 1.375968e+00 1.244982e+00 1.352272e+00 1.175225e+00 1.431866e-02 3.514024e-02 1.000321e-01 1.149323e-01 1.456273e-01 2.103658e-01 2.029168e-01 2.421470e-01 2.788027e-01 2.365035e-01 2.136636e-01 2.158704e-01 2.038364e-01 1.000000e-02 + 8.745196e+01 + 4 + 39 + -4.741155e+00 -1.299530e+01 -2.409029e+00 -1.250740e+01 -1.457115e+01 -1.003297e+01 -3.732159e+00 3.392591e+00 -3.349700e+00 -2.451597e+00 -4.000313e+00 -2.386573e+00 -1.513282e+00 -5.015872e-01 1.951974e+00 1.167325e+00 8.165357e-01 -3.377964e-01 -5.916122e-01 -3.384678e-01 -1.030595e+00 -9.454089e-01 4.653731e-01 5.658424e-01 2.693560e-01 -4.914277e-01 -2.069635e-01 2.990440e-01 -3.295726e-01 2.688278e-01 6.814488e-01 4.268973e-01 -2.963986e-02 -4.215347e-01 3.375744e-02 -2.084888e-02 -1.073539e-01 -1.254061e-01 -1.186548e-01 + 39 + 1.352628e+01 3.786607e+01 4.924542e+01 5.144763e+01 5.206682e+01 5.419714e+01 7.135242e+01 6.454048e+01 6.941197e+01 4.582660e+01 4.623480e+01 3.217889e+01 2.250196e+00 1.363116e+00 2.296726e+00 2.866476e+00 3.817102e+00 5.294387e+00 3.426701e+00 4.249053e+00 4.152435e+00 3.931388e+00 3.370205e+00 2.919943e+00 2.791194e+00 1.865766e-01 3.288626e-01 3.396663e-01 3.992101e-01 5.454458e-01 5.910533e-01 5.555063e-01 7.347336e-01 7.633671e-01 6.709232e-01 6.047408e-01 5.250652e-01 4.336906e-01 2.924623e-02 + 1.192979e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.502315e-01 3.497685e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.798335e-01 1.201665e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 7.569469e-01 2.430531e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "m" + + 5 + 2 + 39 + -3.287102e+00 -3.945326e+00 -4.745791e+00 -4.451725e+00 -6.610989e+00 -7.157322e+00 -6.946015e+00 -8.339868e+00 -1.076620e+01 -2.205353e+00 -1.758780e+00 -5.884679e+00 -4.110872e+00 -2.522003e-01 1.266988e+00 1.073497e+00 1.660075e+00 3.850085e-01 -8.414143e-01 3.025587e-01 -2.067264e+00 -2.209979e+00 4.330428e-01 1.514793e-01 -6.359710e-01 -2.556094e-01 -1.829222e-01 -3.952556e-01 -2.047407e-02 -4.318749e-01 -1.996511e-01 1.967741e-01 -4.469120e-02 5.623795e-01 5.234818e-01 -4.882849e-02 -1.390390e-01 1.920592e-01 8.448498e-02 + 39 + 1.039185e+01 2.692476e+01 3.339762e+01 4.943718e+01 4.351051e+01 5.796726e+01 5.850578e+01 5.882478e+01 6.447831e+01 5.367405e+01 6.567081e+01 4.397159e+01 2.391816e+00 2.370957e+00 2.603233e+00 3.401154e+00 3.575088e+00 3.724508e+00 3.655169e+00 4.754743e+00 4.482598e+00 5.015878e+00 4.019436e+00 4.141648e+00 3.233873e+00 4.081623e-01 2.949945e-01 3.248021e-01 5.689997e-01 5.552406e-01 5.449124e-01 5.682501e-01 6.718897e-01 6.821942e-01 8.800761e-01 6.226892e-01 6.223439e-01 5.111436e-01 2.787992e-02 + 1.216009e+02 + 3 + 39 + -3.995013e+00 -3.107413e+00 -2.623900e+00 -3.115201e+00 -6.900971e+00 -7.937017e+00 -6.952573e+00 -1.031384e+01 -1.267157e+01 -1.075491e+00 -2.446893e+00 -6.548535e+00 -4.226559e+00 -1.260951e-01 5.081402e-02 8.601987e-02 -5.674727e-02 -1.980224e-02 1.307516e-01 3.510626e-02 6.564218e-02 1.958327e-01 -9.907567e-02 -1.578545e-01 9.871290e-02 6.814840e-03 -1.737027e-02 -3.700118e-01 -3.106031e-01 -5.949227e-01 -1.169877e-01 2.978910e-01 -3.976499e-02 6.878490e-01 7.356446e-01 -1.659579e-01 -6.613301e-02 2.526698e-01 7.594597e-02 + 39 + 7.668652e+00 2.175003e+01 2.926278e+01 4.714013e+01 4.709666e+01 6.789615e+01 6.166028e+01 6.106153e+01 5.731952e+01 5.536409e+01 7.486101e+01 4.912556e+01 1.772031e+00 6.331787e-01 1.500045e+00 1.215152e+00 1.803304e+00 1.515098e+00 1.617690e+00 1.922327e+00 2.222748e+00 2.584546e+00 1.938771e+00 1.972026e+00 1.697768e+00 1.308738e-01 2.009615e-01 2.564460e-01 3.929563e-01 4.560274e-01 4.877720e-01 4.857341e-01 5.768963e-01 6.260394e-01 7.591211e-01 5.721000e-01 5.942431e-01 5.042671e-01 2.019397e-02 + 1.079553e+02 + 4 + 39 + -4.064342e+00 -4.312605e+00 -4.549718e+00 -5.735784e+00 -7.387292e+00 -6.374176e+00 -6.801102e+00 -7.555698e+00 -8.901958e+00 -2.488362e+00 -2.955219e+00 -5.125729e+00 -3.850626e+00 -2.708129e-01 -1.276729e+00 -7.554256e-01 -2.152909e+00 -5.346752e-01 1.035037e+00 -9.126917e-02 2.273144e+00 2.426961e+00 -5.682097e-01 -3.530116e-01 8.552651e-01 2.964743e-01 -2.198179e-01 -2.771950e-01 8.961657e-03 -3.267010e-01 -4.766590e-02 1.552088e-01 5.530989e-02 4.486250e-01 2.068332e-01 3.118096e-02 3.489215e-02 1.097644e-01 3.909226e-02 + 39 + 1.305724e+01 3.013021e+01 3.452475e+01 5.430477e+01 4.361884e+01 5.703175e+01 5.312301e+01 5.502313e+01 6.359568e+01 4.570100e+01 5.783677e+01 3.807249e+01 3.414037e+00 2.665984e+00 3.429026e+00 4.369408e+00 5.056831e+00 5.169377e+00 4.480130e+00 5.063521e+00 4.970031e+00 5.769767e+00 4.654792e+00 5.010942e+00 3.762398e+00 3.880924e-01 3.148899e-01 3.949121e-01 5.092896e-01 6.467531e-01 6.344501e-01 5.808821e-01 6.300768e-01 7.461901e-01 1.035902e+00 6.061112e-01 6.342654e-01 4.780129e-01 2.737744e-02 + 1.246394e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 4.068159e-01 5.931841e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 6.851873e-01 3.148127e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 4.549546e-01 5.450454e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "th" + + 5 + 2 + 39 + -1.726358e+01 3.298948e-01 -6.006187e+00 -3.836002e+00 -2.885763e+00 -3.410986e+00 -1.663822e+00 -1.678540e+00 -1.439193e+00 -1.430168e+00 -2.515786e+00 -9.817748e-01 -6.592236e+00 -3.106668e+00 -1.980019e-01 -6.142103e-01 8.251083e-01 6.887457e-01 1.087842e+00 1.214346e+00 9.142545e-01 4.571885e-01 2.694274e-01 7.399287e-01 7.219775e-01 -8.870206e-01 6.159106e-01 -7.716647e-01 -1.518171e-01 -6.668386e-01 -5.443689e-01 -1.990716e-01 -4.824297e-01 -2.218346e-02 -8.789085e-02 1.023742e-01 3.453983e-02 -6.378217e-02 2.798648e-01 + 39 + 2.772192e+01 1.635877e+01 1.930678e+01 2.035424e+01 1.925222e+01 2.142374e+01 2.112696e+01 1.988850e+01 2.213569e+01 2.015151e+01 1.704469e+01 1.480030e+01 6.319054e+00 4.364309e+00 3.634056e+00 3.809175e+00 4.402010e+00 3.800733e+00 4.619198e+00 4.344866e+00 3.422993e+00 3.963166e+00 3.603701e+00 3.547406e+00 2.682854e+00 7.273344e-01 5.803151e-01 5.798394e-01 5.897849e-01 6.667202e-01 5.989665e-01 7.484400e-01 6.750124e-01 6.320010e-01 6.465127e-01 6.035554e-01 5.749938e-01 4.396873e-01 1.118795e-01 + 1.168639e+02 + 3 + 39 + -2.158696e+01 -3.716217e+00 -8.799376e+00 -5.265436e+00 -4.269685e+00 -2.646270e+00 -1.216729e+00 -2.782122e-01 -5.565475e-01 -5.959412e-01 -8.525752e-01 4.596437e-01 -6.932385e+00 1.601857e-01 -4.651441e-01 -1.063632e-01 -3.609919e-01 -2.447428e-01 -2.154713e-01 5.337460e-03 1.408421e-02 1.059183e-01 -2.888900e-02 -3.378268e-02 6.021059e-02 2.202161e-01 7.179493e-01 7.716400e-02 2.623679e-01 -9.476189e-02 -1.259074e-01 -2.832600e-01 -2.306057e-01 -1.450877e-01 -8.120787e-02 -7.252313e-02 -1.933048e-01 -1.692086e-01 1.769871e-01 + 39 + 1.470677e+01 1.703691e+01 1.417114e+01 1.576455e+01 1.588145e+01 1.542275e+01 1.348021e+01 1.340328e+01 1.345931e+01 1.312280e+01 1.243957e+01 1.102719e+01 5.749893e+00 2.309681e+00 1.684566e+00 1.796537e+00 1.819193e+00 1.754378e+00 1.768279e+00 1.642222e+00 1.626994e+00 1.605525e+00 1.594056e+00 1.574253e+00 1.375556e+00 5.061041e-01 4.943859e-01 3.627552e-01 4.449800e-01 4.449748e-01 4.338755e-01 4.717470e-01 4.656462e-01 3.967449e-01 3.901792e-01 3.990869e-01 3.951078e-01 3.448838e-01 9.697364e-02 + 9.804195e+01 + 4 + 39 + -1.500834e+01 -4.586842e+00 -6.419418e+00 -6.837015e+00 -6.090115e+00 -6.174115e+00 -2.748926e+00 -1.488499e+00 -7.075657e-01 -1.238748e+00 -2.743408e+00 -8.537155e-01 -4.798567e+00 3.440178e+00 -7.381257e-01 9.838622e-01 -5.762700e-01 -1.354283e+00 -1.473542e+00 -1.999844e+00 -2.956440e-01 -4.271752e-01 -2.017902e-01 -4.600288e-01 -7.290475e-01 8.018076e-01 2.615962e-01 -2.652946e-01 3.266121e-02 -9.997065e-02 -2.141692e-01 4.007002e-02 -4.353799e-01 1.126452e-01 -1.822345e-01 1.069038e-02 1.273164e-01 -3.016592e-02 -5.180876e-03 + 39 + 4.408112e+01 2.581069e+01 2.888192e+01 2.474429e+01 2.974233e+01 3.080421e+01 3.243723e+01 2.246296e+01 2.471208e+01 2.312885e+01 2.186127e+01 1.953629e+01 4.295982e+00 4.789644e+00 3.344556e+00 4.790464e+00 4.715167e+00 5.043956e+00 5.125396e+00 5.761719e+00 3.746347e+00 4.037101e+00 3.428545e+00 3.660716e+00 2.982122e+00 6.686690e-01 8.866250e-01 5.417407e-01 6.875320e-01 6.876724e-01 6.845782e-01 7.387835e-01 9.485897e-01 6.548117e-01 6.040769e-01 5.814650e-01 5.861438e-01 4.951146e-01 8.312685e-02 + 1.219803e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 5.457830e-01 4.542170e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 7.935960e-01 2.064040e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 5.998824e-01 4.001176e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + +~h "sh" + + 5 + 2 + 39 + -2.256145e+01 -5.465943e+00 3.910588e+00 -7.421358e+00 -7.326015e+00 -3.916042e+00 -1.978814e+00 6.698844e-02 -2.088311e+00 -2.486943e+00 -1.110244e+00 -3.056266e-01 -3.537877e+00 -4.554498e+00 -6.634143e-02 6.202693e-02 -3.366139e-01 9.284218e-01 1.663874e+00 1.110929e+00 2.142396e-01 8.655177e-01 5.371627e-01 5.658398e-01 4.158378e-02 2.556594e-01 6.870263e-01 -3.041268e-01 -2.442468e-01 -2.607850e-01 -3.626801e-01 -1.950612e-01 -3.989106e-01 -1.432919e-02 -1.568893e-01 4.064143e-02 -2.340019e-02 -7.061875e-02 1.133392e-01 + 39 + 4.850574e+01 2.481556e+01 2.402700e+01 3.425634e+01 3.000186e+01 3.054784e+01 2.568551e+01 2.467830e+01 2.803613e+01 2.016267e+01 1.690162e+01 1.489813e+01 2.047369e+00 3.664391e+00 2.600353e+00 3.246605e+00 2.656096e+00 4.193954e+00 3.230807e+00 3.685053e+00 3.690877e+00 3.436877e+00 2.653388e+00 2.500978e+00 1.881039e+00 2.462090e-01 8.955095e-01 5.092998e-01 4.269907e-01 5.225868e-01 5.574878e-01 5.990543e-01 6.471056e-01 5.994282e-01 5.483438e-01 5.051528e-01 4.284897e-01 3.649205e-01 3.542106e-02 + 1.125124e+02 + 3 + 39 + -2.970781e+01 -6.065022e+00 3.362512e+00 -9.410249e+00 -7.159114e+00 -1.160324e+00 -9.087293e-01 -2.813614e-01 -8.668762e-01 -1.639052e+00 -1.013481e-01 -3.418507e-01 -2.400634e+00 9.754495e-02 -9.857515e-02 -9.096305e-02 -4.577604e-02 -1.740560e-01 -7.480669e-02 -4.310977e-03 -6.721665e-02 3.692646e-02 -1.769816e-02 -6.653725e-02 -2.462191e-02 -2.271960e-02 7.162591e-01 1.092094e-02 -1.862690e-02 1.027754e-01 -9.304471e-02 -2.736883e-01 -1.569345e-01 -2.019558e-02 -1.119591e-01 -8.742937e-02 -1.112924e-01 -2.334865e-02 -9.847292e-02 + 39 + 9.917742e+00 2.576867e+01 1.957489e+01 2.574489e+01 3.216051e+01 2.254639e+01 2.116896e+01 1.930735e+01 1.807385e+01 1.568325e+01 1.362672e+01 1.126397e+01 1.358703e+00 1.189375e+00 7.644460e-01 9.323215e-01 1.047493e+00 1.262722e+00 1.462441e+00 1.312534e+00 1.306841e+00 1.303159e+00 1.293682e+00 1.178694e+00 1.033154e+00 8.208600e-02 3.284097e-01 1.612449e-01 2.171080e-01 2.113121e-01 2.833426e-01 3.041544e-01 3.025740e-01 3.010241e-01 3.018912e-01 2.891602e-01 2.523024e-01 2.219759e-01 1.052279e-02 + 8.554077e+01 + 4 + 39 + -2.047738e+01 -6.845898e+00 2.474865e+00 -8.076880e+00 -9.278199e+00 -5.021693e+00 -3.400638e+00 -6.983671e-01 -1.733538e+00 -2.780570e+00 -1.845383e+00 -9.238712e-01 -3.627408e+00 4.818402e+00 -2.201519e-01 -2.974140e-01 1.296159e-02 -9.422089e-01 -1.626789e+00 -1.830115e+00 -8.744150e-02 -7.819065e-01 -5.372335e-01 -5.559809e-01 -3.130958e-01 -1.404476e-01 4.662096e-01 -1.972475e-01 -1.479126e-01 -2.200972e-01 -9.483209e-02 -3.049391e-02 -2.794436e-01 6.826441e-02 -1.380307e-01 5.589199e-02 5.317611e-02 -5.706220e-02 1.336110e-01 + 39 + 6.655296e+01 2.466535e+01 2.617061e+01 3.371902e+01 3.374000e+01 3.759269e+01 3.344296e+01 2.542224e+01 2.818880e+01 2.190849e+01 1.847285e+01 1.468426e+01 2.152336e+00 3.957563e+00 2.711012e+00 3.646337e+00 3.172532e+00 4.599924e+00 4.133555e+00 4.753164e+00 3.797990e+00 4.102575e+00 3.147247e+00 2.826619e+00 1.983474e+00 3.157370e-01 1.159757e+00 3.734361e-01 4.302908e-01 4.719675e-01 6.272144e-01 7.224772e-01 8.263358e-01 6.057953e-01 6.068613e-01 5.548654e-01 4.679391e-01 3.614779e-01 4.042931e-02 + 1.163505e+02 + 5 + 0.000000e+00 1.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + 0.000000e+00 6.586184e-01 3.413816e-01 0.000000e+00 0.000000e+00 + 0.000000e+00 0.000000e+00 8.510245e-01 1.489755e-01 0.000000e+00 + 0.000000e+00 0.000000e+00 0.000000e+00 6.794007e-01 3.205993e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 + diff --git a/samples/RMHTK/work/R1/varProto b/samples/RMHTK/work/R1/varProto new file mode 100755 index 0000000..8b50189 --- /dev/null +++ b/samples/RMHTK/work/R1/varProto @@ -0,0 +1,17 @@ +~o + 1 39 + 39 +~h "varProto" + + 3 + 2 + 39 + -1.077625e+01 -6.303028e+00 -4.707947e+00 -8.779657e+00 -8.093534e+00 -5.286354e+00 -5.808501e+00 -9.144211e-01 -3.448104e+00 -1.485706e+00 -1.777820e+00 -2.036624e+00 -3.849236e+00 1.093946e-03 4.807837e-03 2.638837e-03 2.953000e-03 3.300738e-03 5.090252e-04 2.870750e-04 -3.479431e-03 -3.929222e-03 -2.162745e-04 -3.161750e-03 -2.502067e-03 5.674726e-06 -1.224773e-04 -6.909129e-04 -5.264277e-06 3.113000e-04 -1.814942e-04 -3.614067e-04 -6.236280e-04 -2.419550e-04 2.014711e-04 3.466329e-04 5.119212e-04 -7.993209e-05 -3.960997e-05 + 39 + 9.857470e+01 5.546750e+01 7.227151e+01 7.634673e+01 7.804321e+01 6.913838e+01 7.343364e+01 6.157733e+01 6.080312e+01 4.222516e+01 4.611217e+01 3.340509e+01 1.125261e+01 4.615124e+00 3.291483e+00 3.045427e+00 4.137188e+00 4.288039e+00 3.993323e+00 4.290919e+00 4.150005e+00 3.785724e+00 3.096795e+00 2.945840e+00 2.399993e+00 4.639273e-01 6.651254e-01 6.107638e-01 5.636400e-01 8.277006e-01 8.862553e-01 9.320126e-01 1.011802e+00 1.035967e+00 9.807253e-01 8.817509e-01 8.367682e-01 7.139950e-01 7.005768e-02 + 1.330183e+02 + 3 + 0.000000e+00 1.000000e+00 0.000000e+00 + 0.000000e+00 5.000000e-01 5.000000e-01 + 0.000000e+00 0.000000e+00 0.000000e+00 +